aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ANNOUNCE1412
-rw-r--r--AUTHORS5
-rw-r--r--Ada95/Makefile.in8
-rw-r--r--Ada95/README2
-rw-r--r--Ada95/aclocal.m42157
-rwxr-xr-xAda95/configure9220
-rw-r--r--Ada95/configure.in128
-rw-r--r--Ada95/doc/Makefile.in10
-rw-r--r--Ada95/gen/Makefile.in174
-rw-r--r--Ada95/gen/adacurses-config.in25
-rw-r--r--Ada95/gen/gen.c1822
-rw-r--r--Ada95/gen/html.m46
-rw-r--r--Ada95/gen/terminal_interface-curses-aux.ads.m475
-rw-r--r--Ada95/gen/terminal_interface-curses-forms-field_types.ads.m410
-rw-r--r--Ada95/gen/terminal_interface-curses-forms.ads.m469
-rw-r--r--Ada95/gen/terminal_interface-curses-menus.ads.m454
-rw-r--r--Ada95/gen/terminal_interface-curses-mouse.ads.m449
-rw-r--r--Ada95/gen/terminal_interface-curses-panels.ads.m410
-rw-r--r--Ada95/gen/terminal_interface-curses-trace.ads.m454
-rw-r--r--Ada95/gen/terminal_interface-curses.adb.m4282
-rw-r--r--Ada95/gen/terminal_interface-curses.ads.m4507
-rwxr-xr-xAda95/include/MKncurses_def.sh4
-rw-r--r--Ada95/include/Makefile.in10
-rw-r--r--Ada95/include/ncurses_cfg.hin8
-rwxr-xr-xAda95/make-tar.sh8
-rw-r--r--Ada95/package/AdaCurses-doc.spec33
-rw-r--r--Ada95/package/AdaCurses.spec57
-rw-r--r--Ada95/package/debian/compat2
-rw-r--r--Ada95/package/debian/control4
-rw-r--r--Ada95/package/debian/copyright17
-rwxr-xr-xAda95/package/debian/rules12
-rw-r--r--Ada95/package/debian/watch2
-rw-r--r--Ada95/samples/Makefile.in53
-rw-r--r--Ada95/samples/ncurses2-acs_and_scroll.adb9
-rw-r--r--Ada95/samples/ncurses2-demo_forms.adb11
-rw-r--r--Ada95/samples/ncurses2-demo_pad.adb16
-rw-r--r--Ada95/samples/ncurses2-demo_panels.adb7
-rw-r--r--Ada95/samples/ncurses2-getch_test.adb12
-rw-r--r--Ada95/samples/ncurses2-m.adb11
-rw-r--r--Ada95/samples/ncurses2-overlap_test.adb13
-rw-r--r--Ada95/samples/ncurses2-slk_test.adb8
-rw-r--r--Ada95/samples/ncurses2-trace_set.adb51
-rw-r--r--Ada95/samples/ncurses2-util.adb11
-rw-r--r--Ada95/samples/rain.ads4
-rw-r--r--Ada95/samples/sample-curses_demo-attributes.adb4
-rw-r--r--Ada95/samples/sample-curses_demo-attributes.ads4
-rw-r--r--Ada95/samples/sample-curses_demo-mouse.ads4
-rw-r--r--Ada95/samples/sample-curses_demo.ads4
-rw-r--r--Ada95/samples/sample-explanation.adb_p (renamed from Ada95/samples/sample-explanation.adb)27
-rw-r--r--Ada95/samples/sample-form_demo.ads4
-rw-r--r--Ada95/samples/sample-header_handler.adb13
-rw-r--r--Ada95/samples/sample-header_handler.ads4
-rw-r--r--Ada95/samples/sample-keyboard_handler.ads4
-rw-r--r--Ada95/samples/sample-manifest.ads4
-rw-r--r--Ada95/samples/sample-menu_demo.ads4
-rw-r--r--Ada95/samples/sample-text_io_demo.adb13
-rw-r--r--Ada95/samples/sample-text_io_demo.ads4
-rw-r--r--Ada95/samples/sample.ads4
-rw-r--r--Ada95/samples/status.adb4
-rw-r--r--Ada95/samples/status.ads4
-rw-r--r--Ada95/samples/tour.adb4
-rw-r--r--Ada95/samples/tour.ads4
-rw-r--r--Ada95/src/Makefile.in61
-rw-r--r--Ada95/src/c_threaded_variables.c56
-rw-r--r--Ada95/src/c_threaded_variables.h58
-rw-r--r--Ada95/src/c_varargs_to_ada.c6
-rw-r--r--Ada95/src/c_varargs_to_ada.h12
-rwxr-xr-xAda95/src/library-cfg.sh72
-rw-r--r--Ada95/src/library.gpr.in (renamed from Ada95/src/library.gpr)11
-rw-r--r--Ada95/src/ncurses_compat.c16
-rw-r--r--Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb14
-rw-r--r--Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb14
-rw-r--r--Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads4
-rw-r--r--Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb19
-rw-r--r--Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads8
-rw-r--r--Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb18
-rw-r--r--Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb14
-rw-r--r--Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb18
-rw-r--r--Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb17
-rw-r--r--Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb18
-rw-r--r--Ada95/src/terminal_interface-curses-forms-field_types-user.adb19
-rw-r--r--Ada95/src/terminal_interface-curses-forms-field_types.adb54
-rw-r--r--Ada95/src/terminal_interface-curses-forms-field_user_data.adb13
-rw-r--r--Ada95/src/terminal_interface-curses-forms-form_user_data.adb13
-rw-r--r--Ada95/src/terminal_interface-curses-forms.adb350
-rw-r--r--Ada95/src/terminal_interface-curses-menus-item_user_data.adb14
-rw-r--r--Ada95/src/terminal_interface-curses-menus-menu_user_data.adb14
-rw-r--r--Ada95/src/terminal_interface-curses-menus.adb347
-rw-r--r--Ada95/src/terminal_interface-curses-mouse.adb11
-rw-r--r--Ada95/src/terminal_interface-curses-putwin.adb4
-rw-r--r--Ada95/src/terminal_interface-curses-putwin.ads4
-rw-r--r--Ada95/src/terminal_interface-curses-termcap.ads4
-rw-r--r--Ada95/src/terminal_interface-curses-terminfo.ads4
-rw-r--r--Ada95/src/terminal_interface-curses-text_io.adb8
-rw-r--r--Ada95/src/terminal_interface-curses-trace.adb_p37
-rw-r--r--COPYING4
-rw-r--r--INSTALL493
-rw-r--r--MANIFEST91
-rw-r--r--Makefile.in26
-rw-r--r--NEWS2811
-rw-r--r--README6
-rw-r--r--README.emx8
-rw-r--r--VERSION1
-rw-r--r--aclocal.m44103
-rw-r--r--announce.html.in3080
-rw-r--r--c++/Makefile.in31
-rw-r--r--c++/cursesapp.cc6
-rw-r--r--c++/cursesapp.h6
-rw-r--r--c++/cursesf.cc8
-rw-r--r--c++/cursesf.h26
-rw-r--r--c++/cursesm.cc12
-rw-r--r--c++/cursesm.h26
-rw-r--r--c++/cursesmain.cc6
-rw-r--r--c++/cursesp.cc6
-rw-r--r--c++/cursesp.h17
-rw-r--r--c++/cursesw.cc6
-rw-r--r--c++/cursesw.h24
-rw-r--r--c++/cursslk.cc6
-rw-r--r--c++/cursslk.h6
-rw-r--r--c++/demo.cc18
-rw-r--r--c++/etip.h.in31
-rw-r--r--c++/internal.h8
-rwxr-xr-xconfig.guess957
-rwxr-xr-xconfig.sub2504
-rwxr-xr-xconfigure15132
-rw-r--r--configure.in1042
-rw-r--r--dist.mk29
-rw-r--r--doc/hackguide.doc165
-rw-r--r--doc/html/Ada95.html6
-rw-r--r--doc/html/NCURSES-Programming-HOWTO.html14524
-rw-r--r--doc/html/ada/files/T.htm1
-rw-r--r--doc/html/ada/funcs/A.htm33
-rw-r--r--doc/html/ada/funcs/B.htm24
-rw-r--r--doc/html/ada/funcs/C.htm79
-rw-r--r--doc/html/ada/funcs/D.htm72
-rw-r--r--doc/html/ada/funcs/E.htm20
-rw-r--r--doc/html/ada/funcs/F.htm86
-rw-r--r--doc/html/ada/funcs/G.htm122
-rw-r--r--doc/html/ada/funcs/H.htm24
-rw-r--r--doc/html/ada/funcs/I.htm82
-rw-r--r--doc/html/ada/funcs/K.htm12
-rw-r--r--doc/html/ada/funcs/L.htm19
-rw-r--r--doc/html/ada/funcs/M.htm76
-rw-r--r--doc/html/ada/funcs/N.htm28
-rw-r--r--doc/html/ada/funcs/O.htm8
-rw-r--r--doc/html/ada/funcs/P.htm42
-rw-r--r--doc/html/ada/funcs/R.htm58
-rw-r--r--doc/html/ada/funcs/S.htm304
-rw-r--r--doc/html/ada/funcs/T.htm39
-rw-r--r--doc/html/ada/funcs/U.htm32
-rw-r--r--doc/html/ada/funcs/V.htm6
-rw-r--r--doc/html/ada/funcs/W.htm78
-rw-r--r--doc/html/ada/main.htm1
-rw-r--r--doc/html/ada/table.html40
-rw-r--r--doc/html/ada/terminal_interface-curses-aux__adb.htm70
-rw-r--r--doc/html/ada/terminal_interface-curses-aux__ads.htm127
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm24
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm8
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm24
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm8
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm22
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm14
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm47
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm24
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm30
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm8
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm24
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm8
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm32
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm8
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm29
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm8
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm40
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm22
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm77
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm24
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm202
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm76
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm35
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm22
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm35
-rw-r--r--doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm22
-rw-r--r--doc/html/ada/terminal_interface-curses-forms__adb.htm1056
-rw-r--r--doc/html/ada/terminal_interface-curses-forms__ads.htm895
-rw-r--r--doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm36
-rw-r--r--doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm22
-rw-r--r--doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm36
-rw-r--r--doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm22
-rw-r--r--doc/html/ada/terminal_interface-curses-menus__adb.htm1123
-rw-r--r--doc/html/ada/terminal_interface-curses-menus__ads.htm666
-rw-r--r--doc/html/ada/terminal_interface-curses-mouse__adb.htm221
-rw-r--r--doc/html/ada/terminal_interface-curses-mouse__ads.htm233
-rw-r--r--doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm32
-rw-r--r--doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm18
-rw-r--r--doc/html/ada/terminal_interface-curses-panels__adb.htm128
-rw-r--r--doc/html/ada/terminal_interface-curses-panels__ads.htm107
-rw-r--r--doc/html/ada/terminal_interface-curses-putwin__adb.htm36
-rw-r--r--doc/html/ada/terminal_interface-curses-putwin__ads.htm12
-rw-r--r--doc/html/ada/terminal_interface-curses-termcap__adb.htm34
-rw-r--r--doc/html/ada/terminal_interface-curses-termcap__ads.htm14
-rw-r--r--doc/html/ada/terminal_interface-curses-terminfo__adb.htm38
-rw-r--r--doc/html/ada/terminal_interface-curses-terminfo__ads.htm16
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm24
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm6
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm10
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm6
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm10
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm6
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm10
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm6
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm10
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm6
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm10
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm6
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm10
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm6
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm10
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm6
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io__adb.htm126
-rw-r--r--doc/html/ada/terminal_interface-curses-text_io__ads.htm32
-rw-r--r--doc/html/ada/terminal_interface-curses-trace__adb.htm45
-rw-r--r--doc/html/ada/terminal_interface-curses-trace__ads.htm117
-rw-r--r--doc/html/ada/terminal_interface-curses__adb.htm3090
-rw-r--r--doc/html/ada/terminal_interface-curses__ads.htm2324
-rw-r--r--doc/html/ada/terminal_interface-curses_constants__ads.htm401
-rw-r--r--doc/html/announce.html3152
-rw-r--r--doc/html/hackguide.html1814
-rw-r--r--doc/html/index.html63
-rw-r--r--doc/html/man/adacurses-config.1.html98
-rw-r--r--doc/html/man/adacurses6-config.1.html145
-rw-r--r--doc/html/man/captoinfo.1m.html174
-rw-r--r--doc/html/man/clear.1.html145
-rw-r--r--doc/html/man/curs_add_wch.3x.html394
-rw-r--r--doc/html/man/curs_add_wchstr.3x.html119
-rw-r--r--doc/html/man/curs_addch.3x.html386
-rw-r--r--doc/html/man/curs_addchstr.3x.html107
-rw-r--r--doc/html/man/curs_addstr.3x.html95
-rw-r--r--doc/html/man/curs_addwstr.3x.html102
-rw-r--r--doc/html/man/curs_attr.3x.html649
-rw-r--r--doc/html/man/curs_beep.3x.html82
-rw-r--r--doc/html/man/curs_bkgd.3x.html189
-rw-r--r--doc/html/man/curs_bkgrnd.3x.html135
-rw-r--r--doc/html/man/curs_border.3x.html120
-rw-r--r--doc/html/man/curs_border_set.3x.html116
-rw-r--r--doc/html/man/curs_clear.3x.html134
-rw-r--r--doc/html/man/curs_color.3x.html641
-rw-r--r--doc/html/man/curs_delch.3x.html88
-rw-r--r--doc/html/man/curs_deleteln.3x.html107
-rw-r--r--doc/html/man/curs_extend.3x.html109
-rw-r--r--doc/html/man/curs_get_wch.3x.html175
-rw-r--r--doc/html/man/curs_get_wstr.3x.html185
-rw-r--r--doc/html/man/curs_getcchar.3x.html200
-rw-r--r--doc/html/man/curs_getch.3x.html600
-rw-r--r--doc/html/man/curs_getstr.3x.html197
-rw-r--r--doc/html/man/curs_getyx.3x.html119
-rw-r--r--doc/html/man/curs_in_wch.3x.html83
-rw-r--r--doc/html/man/curs_in_wchstr.3x.html101
-rw-r--r--doc/html/man/curs_inch.3x.html130
-rw-r--r--doc/html/man/curs_inchstr.3x.html122
-rw-r--r--doc/html/man/curs_initscr.3x.html316
-rw-r--r--doc/html/man/curs_inopts.3x.html440
-rw-r--r--doc/html/man/curs_ins_wch.3x.html78
-rw-r--r--doc/html/man/curs_ins_wstr.3x.html115
-rw-r--r--doc/html/man/curs_insch.3x.html95
-rw-r--r--doc/html/man/curs_insstr.3x.html112
-rw-r--r--doc/html/man/curs_instr.3x.html102
-rw-r--r--doc/html/man/curs_inwstr.3x.html111
-rw-r--r--doc/html/man/curs_kernel.3x.html283
-rw-r--r--doc/html/man/curs_legacy.3x.html129
-rw-r--r--doc/html/man/curs_memleaks.3x.html120
-rw-r--r--doc/html/man/curs_mouse.3x.html469
-rw-r--r--doc/html/man/curs_move.3x.html76
-rw-r--r--doc/html/man/curs_opaque.3x.html99
-rw-r--r--doc/html/man/curs_outopts.3x.html341
-rw-r--r--doc/html/man/curs_overlay.3x.html125
-rw-r--r--doc/html/man/curs_pad.3x.html310
-rw-r--r--doc/html/man/curs_print.3x.html97
-rw-r--r--doc/html/man/curs_printw.3x.html130
-rw-r--r--doc/html/man/curs_refresh.3x.html208
-rw-r--r--doc/html/man/curs_scanw.3x.html161
-rw-r--r--doc/html/man/curs_scr_dump.3x.html141
-rw-r--r--doc/html/man/curs_scroll.3x.html108
-rw-r--r--doc/html/man/curs_slk.3x.html361
-rw-r--r--doc/html/man/curs_sp_funcs.3x.html200
-rw-r--r--doc/html/man/curs_termattrs.3x.html187
-rw-r--r--doc/html/man/curs_termcap.3x.html326
-rw-r--r--doc/html/man/curs_terminfo.3x.html754
-rw-r--r--doc/html/man/curs_threads.3x.html1120
-rw-r--r--doc/html/man/curs_touch.3x.html146
-rw-r--r--doc/html/man/curs_trace.3x.html291
-rw-r--r--doc/html/man/curs_util.3x.html556
-rw-r--r--doc/html/man/curs_variables.3x.html249
-rw-r--r--doc/html/man/curs_window.3x.html328
-rw-r--r--doc/html/man/default_colors.3x.html204
-rw-r--r--doc/html/man/define_key.3x.html87
-rw-r--r--doc/html/man/form.3x.html323
-rw-r--r--doc/html/man/form_cursor.3x.html87
-rw-r--r--doc/html/man/form_data.3x.html79
-rw-r--r--doc/html/man/form_driver.3x.html453
-rw-r--r--doc/html/man/form_field.3x.html109
-rw-r--r--doc/html/man/form_field_attributes.3x.html105
-rw-r--r--doc/html/man/form_field_buffer.3x.html163
-rw-r--r--doc/html/man/form_field_info.3x.html110
-rw-r--r--doc/html/man/form_field_just.3x.html94
-rw-r--r--doc/html/man/form_field_new.3x.html118
-rw-r--r--doc/html/man/form_field_opts.3x.html171
-rw-r--r--doc/html/man/form_field_userptr.3x.html87
-rw-r--r--doc/html/man/form_field_validation.3x.html216
-rw-r--r--doc/html/man/form_fieldtype.3x.html164
-rw-r--r--doc/html/man/form_hook.3x.html116
-rw-r--r--doc/html/man/form_new.3x.html92
-rw-r--r--doc/html/man/form_new_page.3x.html91
-rw-r--r--doc/html/man/form_opts.3x.html105
-rw-r--r--doc/html/man/form_page.3x.html108
-rw-r--r--doc/html/man/form_post.3x.html93
-rw-r--r--doc/html/man/form_requestname.3x.html95
-rw-r--r--doc/html/man/form_userptr.3x.html89
-rw-r--r--doc/html/man/form_variables.3x.html97
-rw-r--r--doc/html/man/form_win.3x.html109
-rw-r--r--doc/html/man/index.html25
-rw-r--r--doc/html/man/infocmp.1m.html819
-rw-r--r--doc/html/man/infotocap.1m.html98
-rw-r--r--doc/html/man/key_defined.3x.html74
-rw-r--r--doc/html/man/keybound.3x.html79
-rw-r--r--doc/html/man/keyok.3x.html78
-rw-r--r--doc/html/man/legacy_coding.3x.html96
-rw-r--r--doc/html/man/menu.3x.html161
-rw-r--r--doc/html/man/menu_attributes.3x.html122
-rw-r--r--doc/html/man/menu_cursor.3x.html86
-rw-r--r--doc/html/man/menu_driver.3x.html176
-rw-r--r--doc/html/man/menu_format.3x.html103
-rw-r--r--doc/html/man/menu_hook.3x.html118
-rw-r--r--doc/html/man/menu_items.3x.html107
-rw-r--r--doc/html/man/menu_mark.3x.html109
-rw-r--r--doc/html/man/menu_new.3x.html91
-rw-r--r--doc/html/man/menu_opts.3x.html110
-rw-r--r--doc/html/man/menu_pattern.3x.html108
-rw-r--r--doc/html/man/menu_post.3x.html97
-rw-r--r--doc/html/man/menu_requestname.3x.html95
-rw-r--r--doc/html/man/menu_spacing.3x.html114
-rw-r--r--doc/html/man/menu_userptr.3x.html89
-rw-r--r--doc/html/man/menu_win.3x.html109
-rw-r--r--doc/html/man/mitem_current.3x.html119
-rw-r--r--doc/html/man/mitem_name.3x.html82
-rw-r--r--doc/html/man/mitem_new.3x.html103
-rw-r--r--doc/html/man/mitem_opts.3x.html101
-rw-r--r--doc/html/man/mitem_userptr.3x.html87
-rw-r--r--doc/html/man/mitem_value.3x.html88
-rw-r--r--doc/html/man/mitem_visible.3x.html74
-rw-r--r--doc/html/man/ncurses.3x.html2488
-rw-r--r--doc/html/man/ncurses6-config.1.html (renamed from doc/html/man/ncurses5-config.1.html)65
-rw-r--r--doc/html/man/new_pair.3x.html186
-rw-r--r--doc/html/man/panel.3x.html276
-rw-r--r--doc/html/man/resizeterm.3x.html195
-rw-r--r--doc/html/man/scr_dump.5.html435
-rw-r--r--doc/html/man/tabs.1.html223
-rw-r--r--doc/html/man/term.5.html479
-rw-r--r--doc/html/man/term.7.html291
-rw-r--r--doc/html/man/term_variables.3x.html240
-rw-r--r--doc/html/man/terminfo.5.html4499
-rw-r--r--doc/html/man/tic.1m.html688
-rw-r--r--doc/html/man/toe.1m.html197
-rw-r--r--doc/html/man/tput.1.html662
-rw-r--r--doc/html/man/tset.1.html553
-rw-r--r--doc/html/man/user_caps.5.html400
-rw-r--r--doc/html/man/wresize.3x.html94
-rw-r--r--doc/html/ncurses-intro.html5394
-rw-r--r--doc/ncurses-intro.doc169
-rw-r--r--form/Makefile.in19
-rw-r--r--form/f_trace.c7
-rw-r--r--form/fld_arg.c13
-rw-r--r--form/fld_attr.c6
-rw-r--r--form/fld_current.c32
-rw-r--r--form/fld_def.c16
-rw-r--r--form/fld_ftchoice.c11
-rw-r--r--form/fld_max.c13
-rw-r--r--form/fld_newftyp.c13
-rw-r--r--form/form.h53
-rw-r--r--form/form.priv.h31
-rw-r--r--form/frm_driver.c401
-rw-r--r--form/frm_hook.c7
-rw-r--r--form/frm_post.c14
-rw-r--r--form/frm_req_name.c132
-rw-r--r--form/fty_generic.c40
-rw-r--r--form/fty_num.c8
-rw-r--r--form/fty_regex.c16
-rw-r--r--form/llib-lform87
-rw-r--r--form/llib-lformt87
-rw-r--r--form/llib-lformtw85
-rw-r--r--form/llib-lformw87
-rw-r--r--include/Caps332
-rw-r--r--include/Caps-ncurses451
-rw-r--r--include/Caps.aix4257
-rw-r--r--include/Caps.hpux11363
-rw-r--r--include/Caps.keys331
-rw-r--r--include/Caps.osf1r5332
-rw-r--r--include/Caps.uwin327
-rwxr-xr-xinclude/MKhashsize.sh8
-rwxr-xr-xinclude/MKkey_defs.sh22
-rwxr-xr-xinclude/MKncurses_def.sh4
-rwxr-xr-xinclude/MKparametrized.sh30
-rw-r--r--include/MKterm.h.awk.in708
-rw-r--r--include/Makefile.in34
-rw-r--r--include/curses.h.in268
-rw-r--r--include/curses.tail12
-rw-r--r--include/curses.wide6
-rwxr-xr-xinclude/edit_cfg.sh6
-rw-r--r--include/hashed_db.h10
-rw-r--r--include/nc_alloc.h19
-rw-r--r--include/nc_mingw.h16
-rw-r--r--include/nc_panel.h7
-rw-r--r--include/nc_string.h12
-rw-r--r--include/nc_termios.h152
-rw-r--r--include/nc_tparm.h8
-rw-r--r--include/ncurses_cfg.hin19
-rw-r--r--include/ncurses_defs40
-rw-r--r--include/ncurses_dll.h.in36
-rw-r--r--include/ncurses_mingw.h47
-rw-r--r--include/term_entry.h164
-rw-r--r--include/termcap.h.in13
-rw-r--r--include/tic.h172
-rw-r--r--man/MKada_config.in84
-rwxr-xr-xman/MKterminfo.sh40
-rw-r--r--man/Makefile.in23
-rw-r--r--man/captoinfo.1m20
-rw-r--r--man/clear.1126
-rw-r--r--man/curs_add_wch.3x226
-rw-r--r--man/curs_add_wchstr.3x13
-rw-r--r--man/curs_addch.3x230
-rw-r--r--man/curs_addchstr.3x13
-rw-r--r--man/curs_addstr.3x13
-rw-r--r--man/curs_addwstr.3x13
-rw-r--r--man/curs_attr.3x553
-rw-r--r--man/curs_beep.3x13
-rw-r--r--man/curs_bkgd.3x108
-rw-r--r--man/curs_bkgrnd.3x38
-rw-r--r--man/curs_border.3x25
-rw-r--r--man/curs_border_set.3x10
-rw-r--r--man/curs_clear.3x15
-rw-r--r--man/curs_color.3x470
-rw-r--r--man/curs_delch.3x19
-rw-r--r--man/curs_deleteln.3x25
-rw-r--r--man/curs_extend.3x25
-rw-r--r--man/curs_get_wch.3x39
-rw-r--r--man/curs_get_wstr.3x70
-rw-r--r--man/curs_getcchar.3x77
-rw-r--r--man/curs_getch.3x153
-rw-r--r--man/curs_getstr.3x104
-rw-r--r--man/curs_in_wch.3x18
-rw-r--r--man/curs_in_wchstr.3x15
-rw-r--r--man/curs_inch.3x61
-rw-r--r--man/curs_inchstr.3x36
-rw-r--r--man/curs_initscr.3x194
-rw-r--r--man/curs_inopts.3x169
-rw-r--r--man/curs_ins_wch.3x14
-rw-r--r--man/curs_ins_wstr.3x14
-rw-r--r--man/curs_insch.3x20
-rw-r--r--man/curs_insstr.3x17
-rw-r--r--man/curs_instr.3x27
-rw-r--r--man/curs_inwstr.3x52
-rw-r--r--man/curs_kernel.3x137
-rw-r--r--man/curs_legacy.3x85
-rw-r--r--man/curs_memleaks.3x67
-rw-r--r--man/curs_mouse.3x165
-rw-r--r--man/curs_move.3x12
-rw-r--r--man/curs_opaque.3x20
-rw-r--r--man/curs_outopts.3x39
-rw-r--r--man/curs_overlay.3x16
-rw-r--r--man/curs_pad.3x114
-rw-r--r--man/curs_print.3x17
-rw-r--r--man/curs_printw.3x45
-rw-r--r--man/curs_refresh.3x62
-rw-r--r--man/curs_scanw.3x71
-rw-r--r--man/curs_scr_dump.3x48
-rw-r--r--man/curs_scroll.3x16
-rw-r--r--man/curs_slk.3x151
-rw-r--r--man/curs_sp_funcs.3x67
-rw-r--r--man/curs_termattrs.3x26
-rw-r--r--man/curs_termcap.3x87
-rw-r--r--man/curs_terminfo.3x366
-rw-r--r--man/curs_threads.3x15
-rw-r--r--man/curs_touch.3x40
-rw-r--r--man/curs_trace.3x235
-rw-r--r--man/curs_util.3x212
-rw-r--r--man/curs_variables.3x63
-rw-r--r--man/curs_window.3x140
-rw-r--r--man/default_colors.3x59
-rw-r--r--man/define_key.3x16
-rw-r--r--man/form.3x57
-rw-r--r--man/form_cursor.3x18
-rw-r--r--man/form_data.3x20
-rw-r--r--man/form_driver.3x321
-rw-r--r--man/form_field.3x13
-rw-r--r--man/form_field_attributes.3x29
-rw-r--r--man/form_field_buffer.3x29
-rw-r--r--man/form_field_info.3x28
-rw-r--r--man/form_field_just.3x22
-rw-r--r--man/form_field_new.3x25
-rw-r--r--man/form_field_opts.3x88
-rw-r--r--man/form_field_userptr.3x17
-rw-r--r--man/form_field_validation.3x147
-rw-r--r--man/form_fieldtype.3x20
-rw-r--r--man/form_hook.3x28
-rw-r--r--man/form_new.3x14
-rw-r--r--man/form_new_page.3x25
-rw-r--r--man/form_opts.3x16
-rw-r--r--man/form_page.3x26
-rw-r--r--man/form_post.3x21
-rw-r--r--man/form_requestname.3x20
-rw-r--r--man/form_userptr.3x12
-rw-r--r--man/form_variables.3x5
-rw-r--r--man/form_win.3x22
-rw-r--r--man/infocmp.1m230
-rw-r--r--man/infotocap.1m12
-rw-r--r--man/key_defined.3x13
-rw-r--r--man/keybound.3x10
-rw-r--r--man/keyok.3x16
-rw-r--r--man/legacy_coding.3x10
-rwxr-xr-xman/make_sed.sh6
-rw-r--r--man/man_db.renames18
-rw-r--r--man/manhtml.aliases50
-rw-r--r--man/manhtml.externs46
-rw-r--r--man/menu.3x57
-rw-r--r--man/menu_attributes.3x46
-rw-r--r--man/menu_cursor.3x18
-rw-r--r--man/menu_driver.3x31
-rw-r--r--man/menu_format.3x30
-rw-r--r--man/menu_hook.3x24
-rw-r--r--man/menu_items.3x17
-rw-r--r--man/menu_mark.3x17
-rw-r--r--man/menu_new.3x16
-rw-r--r--man/menu_opts.3x22
-rw-r--r--man/menu_pattern.3x30
-rw-r--r--man/menu_post.3x29
-rw-r--r--man/menu_requestname.3x17
-rw-r--r--man/menu_spacing.3x23
-rw-r--r--man/menu_userptr.3x12
-rw-r--r--man/menu_win.3x22
-rw-r--r--man/mitem_current.3x24
-rw-r--r--man/mitem_name.3x11
-rw-r--r--man/mitem_new.3x28
-rw-r--r--man/mitem_opts.3x21
-rw-r--r--man/mitem_userptr.3x17
-rw-r--r--man/mitem_value.3x16
-rw-r--r--man/mitem_visible.3x11
-rw-r--r--man/ncurses.3x477
-rw-r--r--man/new_pair.3x165
-rw-r--r--man/panel.3x122
-rw-r--r--man/resizeterm.3x71
-rw-r--r--man/scr_dump.5428
-rw-r--r--man/tabs.1140
-rw-r--r--man/term.5163
-rw-r--r--man/term.781
-rw-r--r--man/term_variables.3x98
-rw-r--r--man/terminfo.head164
-rw-r--r--man/terminfo.tail449
-rw-r--r--man/tic.1m233
-rw-r--r--man/toe.1m91
-rw-r--r--man/tput.1400
-rw-r--r--man/tset.1266
-rw-r--r--man/user_caps.5425
-rw-r--r--man/wresize.3x14
-rw-r--r--menu/Makefile.in19
-rw-r--r--menu/llib-lmenu4
-rw-r--r--menu/llib-lmenut4
-rw-r--r--menu/llib-lmenutw6
-rw-r--r--menu/llib-lmenuw6
-rw-r--r--menu/m_driver.c12
-rw-r--r--menu/m_global.c60
-rw-r--r--menu/m_hook.c7
-rw-r--r--menu/m_item_use.c16
-rw-r--r--menu/m_req_name.c42
-rw-r--r--menu/m_trace.c7
-rw-r--r--menu/m_userptr.c16
-rw-r--r--menu/menu.h20
-rw-r--r--menu/menu.priv.h22
-rw-r--r--misc/Makefile.in125
-rw-r--r--misc/emx.src8
-rw-r--r--misc/gen-pkgconfig.in128
-rw-r--r--misc/magic90
-rw-r--r--misc/ncurses-config.in152
-rw-r--r--misc/run_tic.in49
-rwxr-xr-xmisc/shlib4
-rwxr-xr-xmisc/tdlint4
-rw-r--r--misc/terminfo.src9785
-rw-r--r--mk-1st.awk28
-rw-r--r--ncurses/Makefile.in80
-rw-r--r--ncurses/README.IZ6
-rw-r--r--ncurses/SigAction.h4
-rw-r--r--ncurses/base/MKkeyname.awk13
-rwxr-xr-xncurses/base/MKlib_gen.sh63
-rw-r--r--ncurses/base/MKunctrl.awk5
-rw-r--r--ncurses/base/define_key.c6
-rw-r--r--ncurses/base/keyok.c7
-rw-r--r--ncurses/base/lib_addch.c30
-rw-r--r--ncurses/base/lib_addstr.c10
-rw-r--r--ncurses/base/lib_beep.c6
-rw-r--r--ncurses/base/lib_bkgd.c95
-rw-r--r--ncurses/base/lib_box.c14
-rw-r--r--ncurses/base/lib_chgat.c23
-rw-r--r--ncurses/base/lib_color.c517
-rw-r--r--ncurses/base/lib_colorset.c19
-rw-r--r--ncurses/base/lib_dft_fgbg.c35
-rw-r--r--ncurses/base/lib_driver.c36
-rw-r--r--ncurses/base/lib_endwin.c12
-rw-r--r--ncurses/base/lib_erase.c12
-rw-r--r--ncurses/base/lib_flash.c6
-rw-r--r--ncurses/base/lib_freeall.c44
-rw-r--r--ncurses/base/lib_getch.c100
-rw-r--r--ncurses/base/lib_getstr.c10
-rw-r--r--ncurses/base/lib_hline.c20
-rw-r--r--ncurses/base/lib_inchstr.c23
-rw-r--r--ncurses/base/lib_initscr.c29
-rw-r--r--ncurses/base/lib_insch.c13
-rw-r--r--ncurses/base/lib_insnstr.c50
-rw-r--r--ncurses/base/lib_instr.c37
-rw-r--r--ncurses/base/lib_isendwin.c6
-rw-r--r--ncurses/base/lib_mouse.c628
-rw-r--r--ncurses/base/lib_newterm.c39
-rw-r--r--ncurses/base/lib_newwin.c22
-rw-r--r--ncurses/base/lib_overlay.c35
-rw-r--r--ncurses/base/lib_pad.c10
-rw-r--r--ncurses/base/lib_printw.c44
-rw-r--r--ncurses/base/lib_restart.c6
-rw-r--r--ncurses/base/lib_scanw.c47
-rw-r--r--ncurses/base/lib_screen.c847
-rw-r--r--ncurses/base/lib_scroll.c14
-rw-r--r--ncurses/base/lib_set_term.c120
-rw-r--r--ncurses/base/lib_slkatr_set.c23
-rw-r--r--ncurses/base/lib_slkcolor.c50
-rw-r--r--ncurses/base/lib_slkinit.c11
-rw-r--r--ncurses/base/lib_slkrefr.c8
-rw-r--r--ncurses/base/lib_slkset.c8
-rw-r--r--ncurses/base/lib_touch.c20
-rw-r--r--ncurses/base/lib_vline.c23
-rw-r--r--ncurses/base/lib_window.c11
-rw-r--r--ncurses/base/new_pair.c385
-rw-r--r--ncurses/base/resizeterm.c23
-rw-r--r--ncurses/base/safe_sprintf.c18
-rw-r--r--ncurses/base/use_window.c11
-rw-r--r--ncurses/base/wresize.c42
-rw-r--r--ncurses/build.priv.h29
-rw-r--r--ncurses/curses.priv.h695
-rw-r--r--ncurses/fifo_defs.h6
-rw-r--r--ncurses/llib-lncurses312
-rw-r--r--ncurses/llib-lncursest383
-rw-r--r--ncurses/llib-lncursestw568
-rw-r--r--ncurses/llib-lncursesw547
-rw-r--r--ncurses/llib-ltic44
-rw-r--r--ncurses/llib-ltict44
-rw-r--r--ncurses/llib-ltictw44
-rw-r--r--ncurses/llib-lticw44
-rw-r--r--ncurses/llib-ltinfo171
-rw-r--r--ncurses/llib-ltinfot192
-rw-r--r--ncurses/llib-ltinfotw215
-rw-r--r--ncurses/llib-ltinfow194
-rw-r--r--ncurses/modules10
-rw-r--r--ncurses/new_pair.h130
-rw-r--r--ncurses/report_offsets.c228
-rw-r--r--ncurses/tinfo/MKcaptab.sh37
-rw-r--r--ncurses/tinfo/MKcodes.awk6
-rwxr-xr-xncurses/tinfo/MKfallback.sh52
-rwxr-xr-xncurses/tinfo/MKkeys_list.sh16
-rw-r--r--ncurses/tinfo/MKnames.awk6
-rwxr-xr-xncurses/tinfo/MKuserdefs.sh146
-rw-r--r--ncurses/tinfo/access.c12
-rw-r--r--ncurses/tinfo/add_tries.c5
-rw-r--r--ncurses/tinfo/alloc_entry.c46
-rw-r--r--ncurses/tinfo/alloc_ttype.c203
-rw-r--r--ncurses/tinfo/captoinfo.c240
-rw-r--r--ncurses/tinfo/comp_error.c28
-rw-r--r--ncurses/tinfo/comp_expand.c71
-rw-r--r--ncurses/tinfo/comp_hash.c43
-rw-r--r--ncurses/tinfo/comp_parse.c269
-rw-r--r--ncurses/tinfo/comp_scan.c29
-rw-r--r--ncurses/tinfo/db_iterator.c78
-rw-r--r--ncurses/tinfo/entries.c67
-rw-r--r--ncurses/tinfo/free_ttype.c33
-rw-r--r--ncurses/tinfo/getenv_num.c6
-rw-r--r--ncurses/tinfo/hashed_db.c6
-rw-r--r--ncurses/tinfo/home_terminfo.c9
-rw-r--r--ncurses/tinfo/init_keytry.c8
-rw-r--r--ncurses/tinfo/lib_acs.c84
-rw-r--r--ncurses/tinfo/lib_baudrate.c81
-rw-r--r--ncurses/tinfo/lib_cur_term.c36
-rw-r--r--ncurses/tinfo/lib_data.c72
-rw-r--r--ncurses/tinfo/lib_longname.c15
-rw-r--r--ncurses/tinfo/lib_napms.c8
-rw-r--r--ncurses/tinfo/lib_options.c20
-rw-r--r--ncurses/tinfo/lib_print.c6
-rw-r--r--ncurses/tinfo/lib_raw.c30
-rw-r--r--ncurses/tinfo/lib_setup.c321
-rw-r--r--ncurses/tinfo/lib_termcap.c67
-rw-r--r--ncurses/tinfo/lib_tgoto.c15
-rw-r--r--ncurses/tinfo/lib_ti.c28
-rw-r--r--ncurses/tinfo/lib_tparm.c120
-rw-r--r--ncurses/tinfo/lib_tputs.c44
-rw-r--r--ncurses/tinfo/lib_ttyflags.c62
-rw-r--r--ncurses/tinfo/make_hash.c247
-rw-r--r--ncurses/tinfo/make_keys.c26
-rw-r--r--ncurses/tinfo/name_match.c13
-rw-r--r--ncurses/tinfo/obsolete.c149
-rw-r--r--ncurses/tinfo/parse_entry.c361
-rw-r--r--ncurses/tinfo/read_entry.c475
-rw-r--r--ncurses/tinfo/read_termcap.c60
-rw-r--r--ncurses/tinfo/strings.c9
-rw-r--r--ncurses/tinfo/tinfo_driver.c255
-rw-r--r--ncurses/tinfo/trim_sgr0.c10
-rw-r--r--ncurses/tinfo/use_screen.c10
-rw-r--r--ncurses/tinfo/write_entry.c265
-rw-r--r--ncurses/trace/lib_trace.c165
-rw-r--r--ncurses/trace/lib_traceatr.c181
-rw-r--r--ncurses/trace/lib_tracebits.c115
-rw-r--r--ncurses/trace/lib_tracedmp.c8
-rw-r--r--ncurses/trace/lib_tracemse.c16
-rw-r--r--ncurses/trace/trace_xnames.c10
-rw-r--r--ncurses/trace/visbuf.c39
-rwxr-xr-xncurses/tty/MKexpanded.sh8
-rw-r--r--ncurses/tty/hardscroll.c9
-rw-r--r--ncurses/tty/hashmap.c65
-rw-r--r--ncurses/tty/lib_mvcur.c100
-rw-r--r--ncurses/tty/lib_tstp.c12
-rw-r--r--ncurses/tty/lib_twait.c19
-rw-r--r--ncurses/tty/lib_vidattr.c23
-rw-r--r--ncurses/tty/tty_update.c210
-rw-r--r--ncurses/widechar/charable.c8
-rw-r--r--ncurses/widechar/lib_add_wch.c10
-rw-r--r--ncurses/widechar/lib_cchar.c42
-rw-r--r--ncurses/widechar/lib_get_wch.c14
-rw-r--r--ncurses/widechar/lib_get_wstr.c8
-rw-r--r--ncurses/widechar/lib_hline_set.c10
-rw-r--r--ncurses/widechar/lib_in_wch.c8
-rw-r--r--ncurses/widechar/lib_ins_wch.c29
-rw-r--r--ncurses/widechar/lib_inwstr.c22
-rw-r--r--ncurses/widechar/lib_key_name.c15
-rw-r--r--ncurses/widechar/lib_slk_wset.c11
-rw-r--r--ncurses/widechar/lib_unget_wch.c7
-rw-r--r--ncurses/widechar/lib_vid_attr.c75
-rw-r--r--ncurses/widechar/lib_vline_set.c13
-rw-r--r--ncurses/widechar/lib_wacs.c17
-rw-r--r--ncurses/widechar/widechars.c8
-rw-r--r--ncurses/win32con/gettimeofday.c7
-rw-r--r--ncurses/win32con/win_driver.c1817
-rw-r--r--package/debian-mingw/changelog4
-rw-r--r--package/debian-mingw/compat2
-rw-r--r--package/debian-mingw/control2
-rw-r--r--package/debian-mingw/copyright203
-rw-r--r--package/debian-mingw/mingw32-ncurses6.lintian-overrides7
-rwxr-xr-xpackage/debian-mingw/rules53
-rw-r--r--package/debian-mingw/source/format2
-rw-r--r--package/debian-mingw/watch2
-rw-r--r--package/debian-mingw64/changelog4
-rw-r--r--package/debian-mingw64/compat2
-rw-r--r--package/debian-mingw64/control2
-rw-r--r--package/debian-mingw64/copyright203
-rw-r--r--package/debian-mingw64/mingw64-ncurses6.lintian-overrides7
-rwxr-xr-xpackage/debian-mingw64/rules53
-rw-r--r--package/debian-mingw64/source/format2
-rw-r--r--package/debian-mingw64/watch2
-rw-r--r--package/debian/changelog4
-rw-r--r--package/debian/compat2
-rw-r--r--package/debian/control32
-rw-r--r--package/debian/copyright203
-rw-r--r--package/debian/ncurses6.lintian-overrides15
-rw-r--r--package/debian/ncurses6.triggers1
-rw-r--r--package/debian/ncursest6.lintian-overrides15
-rw-r--r--package/debian/ncursest6.triggers1
-rwxr-xr-xpackage/debian/rules227
-rw-r--r--package/debian/source/format2
-rw-r--r--package/debian/watch2
-rw-r--r--package/mingw-ncurses.nsi10
-rw-r--r--package/mingw-ncurses.spec71
-rw-r--r--package/ncurses.map1211
-rw-r--r--package/ncurses.spec173
-rw-r--r--package/ncurses.sym886
-rw-r--r--package/ncursest.map1177
-rw-r--r--package/ncursest.spec180
-rw-r--r--package/ncursest.sym883
-rw-r--r--package/ncursestw.map1297
-rw-r--r--package/ncursestw.sym995
-rw-r--r--package/ncursesw.map1318
-rw-r--r--package/ncursesw.sym992
-rw-r--r--panel/Makefile.in19
-rw-r--r--panel/llib-lpanel10
-rw-r--r--panel/llib-lpanelt10
-rw-r--r--panel/llib-lpaneltw10
-rw-r--r--panel/llib-lpanelw10
-rw-r--r--panel/panel.h9
-rw-r--r--panel/panel.priv.h17
-rwxr-xr-xprogs/MKtermsort.sh24
-rw-r--r--progs/Makefile.in41
-rwxr-xr-xprogs/capconvert12
-rw-r--r--progs/clear.c66
-rw-r--r--progs/clear_cmd.c59
-rw-r--r--progs/clear_cmd.h44
-rw-r--r--progs/dump_entry.c570
-rw-r--r--progs/dump_entry.h24
-rw-r--r--progs/infocmp.c269
-rw-r--r--progs/modules16
-rw-r--r--progs/progs.priv.h37
-rw-r--r--progs/reset_cmd.c634
-rw-r--r--progs/reset_cmd.h65
-rw-r--r--progs/tabs.c83
-rw-r--r--progs/tic.c1363
-rw-r--r--progs/toe.c38
-rw-r--r--progs/tparm_type.c71
-rw-r--r--progs/tparm_type.h52
-rw-r--r--progs/tput.c268
-rw-r--r--progs/tset.c828
-rw-r--r--progs/tty_settings.c104
-rw-r--r--progs/tty_settings.h50
-rw-r--r--test/Makefile.in21
-rw-r--r--test/README533
-rw-r--r--test/aclocal.m41949
-rw-r--r--test/background.c43
-rw-r--r--test/blue.c191
-rw-r--r--test/bs.c158
-rw-r--r--test/bulgarian-utf8-tabs.txt6
-rw-r--r--test/cardfile.c38
-rw-r--r--test/chgat.c51
-rw-r--r--test/clip_printw.c46
-rw-r--r--test/color_content.c331
-rw-r--r--test/color_name.h8
-rw-r--r--test/color_set.c7
-rwxr-xr-xtest/configure11823
-rw-r--r--test/configure.in240
-rw-r--r--test/demo_altkeys.c40
-rw-r--r--test/demo_defkey.c49
-rw-r--r--test/demo_forms.c79
-rw-r--r--test/demo_keyok.c8
-rw-r--r--test/demo_menus.c146
-rw-r--r--test/demo_new_pair.c355
-rw-r--r--test/demo_panels.c71
-rw-r--r--test/demo_tabs.c119
-rw-r--r--test/demo_termcap.c673
-rw-r--r--test/demo_terminfo.c652
-rw-r--r--test/ditto.c28
-rw-r--r--test/dots.c119
-rw-r--r--test/dots_curses.c218
-rw-r--r--test/dots_mvcur.c121
-rw-r--r--test/dots_termcap.c136
-rw-r--r--test/dots_xcurses.c267
-rw-r--r--test/dump_window.c179
-rw-r--r--test/dump_window.h40
-rw-r--r--test/echochar.c40
-rw-r--r--test/edit_field.c158
-rw-r--r--test/edit_field.h11
-rw-r--r--test/escherknot.xbm473
-rw-r--r--test/extended_color.c251
-rw-r--r--test/filter.c329
-rw-r--r--test/firework.c72
-rw-r--r--test/firstlast.c19
-rw-r--r--test/foldkeys.c38
-rw-r--r--test/form_driver_w.c69
-rw-r--r--test/gdc.621
-rw-r--r--test/gdc.c76
-rw-r--r--test/hanoi.c232
-rw-r--r--test/hashtest.c16
-rw-r--r--test/inch_wide.c25
-rw-r--r--test/inchs.c24
-rw-r--r--test/ins_wide.c15
-rw-r--r--test/insdelln.c40
-rw-r--r--test/inserts.c9
-rw-r--r--test/key_names.c7
-rw-r--r--test/knight.c484
-rw-r--r--test/linedata.h14
-rw-r--r--test/list_keys.c511
-rw-r--r--test/lrtest.c11
-rwxr-xr-xtest/make-tar.sh8
-rw-r--r--test/mensetmanus.xbm258
-rw-r--r--test/mini.xterm_48x48.xpm264
-rw-r--r--test/mk-test.awk49
-rw-r--r--test/modules44
-rw-r--r--test/movewindow.c65
-rw-r--r--test/ncurses.c2446
-rw-r--r--test/newdemo.c34
-rw-r--r--test/package/debian-mingw/compat1
-rw-r--r--test/package/debian-mingw/control18
-rw-r--r--test/package/debian-mingw/copyright78
-rw-r--r--test/package/debian-mingw/docs1
-rwxr-xr-xtest/package/debian-mingw/rules101
-rw-r--r--test/package/debian-mingw/source/format1
-rw-r--r--test/package/debian-mingw/watch4
-rw-r--r--test/package/debian-mingw64/compat1
-rw-r--r--test/package/debian-mingw64/control18
-rw-r--r--test/package/debian-mingw64/copyright78
-rw-r--r--test/package/debian-mingw64/docs1
-rwxr-xr-xtest/package/debian-mingw64/rules101
-rw-r--r--test/package/debian-mingw64/source/format1
-rw-r--r--test/package/debian-mingw64/watch4
-rw-r--r--test/package/debian/compat2
-rw-r--r--test/package/debian/control14
-rw-r--r--test/package/debian/copyright17
-rwxr-xr-xtest/package/debian/rules158
-rw-r--r--test/package/debian/watch2
-rw-r--r--test/package/mingw-ncurses-examples.spec42
-rw-r--r--test/package/ncurses-examples.spec97
-rw-r--r--test/padview.c528
-rw-r--r--test/pair_content.c317
-rw-r--r--test/parse_rgb.h98
-rw-r--r--test/picsmap.c1762
-rw-r--r--test/picsmap.h74
-rw-r--r--test/popup_msg.c183
-rw-r--r--test/popup_msg.h42
-rw-r--r--test/programs48
-rw-r--r--test/railroad.c15
-rw-r--r--test/rain.c93
-rw-r--r--test/redraw.c74
-rw-r--r--test/savescreen.c439
-rwxr-xr-xtest/savescreen.sh19
-rw-r--r--test/sp_tinfo.c351
-rw-r--r--test/tclock.c69
-rw-r--r--test/terminal.xbm52
-rw-r--r--test/test.priv.h464
-rw-r--r--test/test_add_wchstr.c42
-rw-r--r--test/test_addchstr.c27
-rw-r--r--test/test_addstr.c20
-rw-r--r--test/test_addwstr.c47
-rw-r--r--test/test_arrays.c152
-rw-r--r--test/test_get_wstr.c42
-rw-r--r--test/test_getstr.c40
-rw-r--r--test/test_instr.c11
-rw-r--r--test/test_inwstr.c10
-rw-r--r--test/test_setupterm.c215
-rw-r--r--test/test_sgr.c383
-rw-r--r--test/test_termattrs.c199
-rw-r--r--test/test_vid_puts.c33
-rw-r--r--test/test_vidputs.c34
-rw-r--r--test/testaddch.c14
-rw-r--r--test/testcurs.c249
-rw-r--r--test/testscanw.c6
-rwxr-xr-xtest/tput-colorcube130
-rwxr-xr-xtest/tput-initc155
-rwxr-xr-xtest/tracemunch659
-rw-r--r--test/view.c671
-rw-r--r--test/widechars-utf8-tabs.txt15
-rw-r--r--test/widechars.h6
-rw-r--r--test/worm.c138
-rw-r--r--test/xmas.c1048
-rw-r--r--test/xterm-16color.dat10
-rw-r--r--test/xterm-256color.dat10
-rw-r--r--test/xterm-88color.dat10
-rw-r--r--test/xterm-color_48x48.xpm61
943 files changed, 141682 insertions, 71467 deletions
diff --git a/ANNOUNCE b/ANNOUNCE
index 11933c5f6d55..8bda60e2f074 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,78 +1,942 @@
- Announcing ncurses 5.9
+ Announcing ncurses 6.1
+
+Overview
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.
+ curses in System V Release 4.0 (SVr4), 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 SVr4-curses
+ enhancements over BSD curses. SVr4 curses became the basis of X/Open
+ Curses.
In mid-June 1995, the maintainer of 4.4BSD curses declared that he
- considered 4.4BSD curses obsolete, and encouraged the keepers of Unix
+ considered 4.4BSD curses obsolete, and encouraged 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 has been in use for
- some time with OpenBSD as the system curses library, and on FreeBSD
- and NetBSD as an external package. It should port easily to any
- ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 Warp!
+ Since 1995, ncurses has been ported to many systems:
+ * It is used in almost every system based on the Linux kernel (aside
+ from some embedded applications).
+ * It is used as the system curses library on OpenBSD, FreeBSD and
+ OSX.
+ * It is used in environments such as Cygwin and MinGW. The first of
+ these was EMX on OS/2 Warp.
+ * It is used (though usually not as the system curses) on all of the
+ vendor unix systems, e.g., AIX, HP-UX, IRIX64, SCO, Solaris,
+ Tru64.
+ * It should work readily on any ANSI/POSIX-conforming unix.
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/gnu/ncurses/ .
- It is also available at [2]ftp://invisible-island.net/ncurses/ .
-
- Release Notes
-
- This release is designed to be upward compatible from ncurses 5.0
- through 5.8; very few applications will require recompilation,
- depending on the platform. These are the highlights from the
- change-log since ncurses 5.8 release.
-
- This is a bug-fix release, correcting a small number of urgent
- problems in the ncurses library from the 5.8 release.
-
- It also improves the Ada95 binding:
- * fixes a longstanding portability problem with its use of the
- [3]set_field_type function. Because that function uses
- variable-length argument lists, its interface with gnat does not
- work with certain platforms.
- * improves configurability and portability, particularly when built
- separately from the main ncurses tree. The 5.8 release introduced
- scripts which can be used to construct separate tarballs for the
- Ada95 and ncurses examples.
- Those were a proof of concept. For the 5.9 release, those scripts
- are augmented with rpm- and dpkg-scripts used in test builds
- against a variety of gnat- and system ncurses versions as old as
- gnat 3.15 and ncurses 5.4 (see snapshots and systems tested
- [4]here.
- * additional improvements were made for portability of the ncurses
- examples, adding rpm- and dpkg-scripts for test-builds. See
- [5]this page for snapshots and other information.
-
- Features of Ncurses
-
- The ncurses package is fully compatible with SVr4 (System V Release 4)
- curses:
- * All 257 of the SVr4 calls have been implemented (and are
- documented).
- * Full support for SVr4 curses features including keyboard mapping,
- color, forms-drawing with ACS characters, and automatic
- recognition of keypad and function keys.
- * An emulation of the SVr4 panels library, supporting a stack of
- windows with backing store, is included.
- * An emulation of the SVr4 menus library, supporting a uniform but
- flexible interface for menu programming, is included.
- * An emulation of the SVr4 form library, supporting data collection
- through on-screen forms, is included.
- * Binary terminfo entries generated by the ncurses tic(1)
- implementation are bit-for-bit-compatible with the entry format
- SVr4 curses uses.
- * The utilities have options to allow you to filter terminfo entries
- for use with less capable curses/terminfo versions such as the
- HP/UX and AIX ports.
+ * [1]captoinfo, a termcap conversion tool
+ * [2]clear, utility for clearing the screen
+ * [3]infocmp, the terminfo decompiler
+ * [4]tabs, set tabs on a terminal
+ * [5]tic, the terminfo compiler
+ * [6]toe, list (table of) terminfo entries
+ * [7]tput, utility for retrieving terminal capabilities in shell
+ scripts
+ * [8]tset, to initialize the terminal
+
+ Full manual pages are provided for the library and tools.
+
+ The ncurses distribution is available at ncurses' [9]homepage:
+
+ [10]ftp://ftp.invisible-island.net/ncurses/ or
+ [11]https://invisible-mirror.net/archives/ncurses/ .
+
+ It is also available via anonymous FTP at the GNU distribution site
+
+ [12]ftp://ftp.gnu.org/gnu/ncurses/ .
+
+Release Notes
+
+ These notes are for ncurses 6.1, released January 27, 2018.
+
+ This release is designed to be source-compatible with ncurses 5.0
+ through 6.0; providing extensions to the application binary interface
+ (ABI). Although the source can still be configured to support the
+ ncurses 5 ABI, the intent of the release is to provide extensions to
+ the ncurses 6 ABI:
+ * improve integration of tput and tset
+ * provide support for extended numeric capabilities.
+
+ There are, of course, numerous other improvements, listed in this
+ announcement.
+
+ The release notes also mention some bug-fixes, but are focused on new
+ features and improvements to existing features since ncurses 6.0
+ release.
+
+ Library improvements
+
+ New features
+
+ The improved integration of tput and tset made only small changes to
+ the libraries. However, supporting extended numeric capabilities
+ required a few changes:
+ * The TERMINAL structure in <term.h> is now opaque. Doing that
+ allowed making the structure larger, to hold the extended numeric
+ data.
+ A few applications required changes during development of
+ ncurses 6.1 because those applications misused the members of that
+ structure, e.g., directly modifying it rather than using
+ [13]def_prog_mode.
+ * Having made TERMINAL opaque (and because none of the library
+ functions use anything except a pointer to TERMINAL), it was
+ possible to increase the size of the structure, adding to the end.
+ Existing applications which were linked to the ncurses 6.0
+ high-level (ncurses, ncursesw) and low-level (tinfo, tinfo)
+ libraries should not require re-linking since the binary interface
+ did not change, nor did the structure offsets with TERMINAL
+ change.
+ A few applications use the inner TERMTYPE structure's offsets to
+ refer to terminfo capabilities within that structure. Again, those
+ do not require modification because their offsets within TERMINAL
+ did not change.
+ * When configured for wide-characters, i.e., "ncursesw" the TERMINAL
+ structure is extended.
+ The new data in TERMINAL holds the same information as TERMTYPE,
+ but with larger numbers ("int" versus "short"). It is named
+ TERMTYPE2.
+ The library uses this structure internally in preference to
+ TERMTYPE, referring to TERMTYPE only to initialize it for
+ applications that use the capabilities defined in <term.h>
+ * When configured for 8-bit (narrow) characters, the TERMTYPE2
+ structure is not used.
+ * The updated application binary interface is 6.1.20171230 (used for
+ new [14]versioned symbols), although the interface changes were
+ developed several months previously.
+
+ The motivation for making this extension came from noticing that
+ [15]termcap applications could (though not [16]realistically) use
+ larger numbers than would fit in 16-bits, and the fact that the number
+ of color pairs for a 256-color xterm could not be expressed in
+ terminfo (i.e., 32767 versus 65536). Also, a few terminals support
+ direct-colors, which could use the extension.
+
+ Generally speaking, applications that use internal details of a
+ library are unsupported. There was exactly one exception for ncurses:
+ the tack program used the internal details of TERMINAL, because it
+ provides an ncurses-specific feature for interactively modifying a
+ terminfo description and writing the updated description to a
+ text-file. It was possible to not only separate tack from these
+ [17]internal details of ncurses, but to generalize it so that the
+ program works with Unix curses (omitting the ncurses-specific
+ feature). That was released as [18]tack 1.08 in July 2017.
+
+ While making changes to tack to eliminate its dependency upon ncurses
+ internals, the publicly-visible details of those internals were
+ reviewed, and some symbols were moved to private header files, while
+ others were marked explicitly as ncurses internals. Future releases of
+ ncurses may eliminate some of those symbols (such as those used by
+ tack 1.07) because they are neither part of the API or the ABI.
+
+ Using the TERMTYPE2 extended numeric capabilities, it is possible to
+ support both color pair values and color values past 32767. Taking
+ compatibility into account, developers readily understand that neither
+ function signatures nor structure offsets change. Also, existing
+ functions have to operate with the extended numbers. Most of that work
+ is internal to the library. For the external interfaces, a hybrid
+ approach was used:
+ * X/Open Curses defined function prototypes such as wattr_set with
+ an unused parameter, for "future" use. After 25 years, the future
+ is here: ncurses uses the parameter to augment color pair values
+ as described in the [19]manual page.
+ * Other functions such as those defining color pairs did not have a
+ corresponding reserved parameter. For those, ncurses defines
+ extended versions such as init_extended_pair (versus init_pair),
+ init_extended_color (versus init_color).
+
+ Additionally, to improve performance other changes (and extensions)
+ are provided in this release:
+ * Several new functions simplify management of large sets of color
+ pairs: reset_color_pairs, alloc_pair, find_pair and free_pair.
+ * New "RGB" extension capability for direct-color support is used to
+ improve performance of color_content.
+ * The internal colorpair_t is now a struct, eliminating an internal
+ 8-bit limit on colors
+ * Allocation for SCREEN's color-pair table starts small, grows on
+ demand up to the limit given in the terminal description.
+ * setcchar and getcchar now treat a negative color-pair as an error.
+
+ Other improvements
+
+ These are new or revised features:
+ * modify c++/etip.h.in to accommodate deprecation of throw and
+ throws in c++17
+ * add new function unfocus_current_field
+ * add option to preserve leading whitespace in form fields
+ * add a macro for is_linetouched and adjust the function's return
+ value to make it possible for most applications to check for an
+ error-return.
+ * add build-time utility report_offsets to help show when the
+ various configurations of tinfo library are compatible or not.
+
+ These were done to limit or ultimately deprecate features:
+ * drop two symbols obsoleted in 2004: _nc_check_termtype, and
+ _nc_resolve_uses
+ * move _nc_tracebits, _tracedump and _tracemouse to curses.priv.h,
+ since they are not part of the suggested ABI6.
+ * mark some structs in form/menu/panel libraries as potentially
+ opaque without modifying API/ABI.
+ * ifdef'd header-file definition of mouse_trafo with
+ NCURSES_NOMACROS
+ * remove initialization-check for calling napms in the term-driver
+ configuration; none is needed.
+ * modify trace to avoid overwriting existing file
+
+ These are improvements to existing features:
+ * modify make_hash to allow building with address-sanitizer,
+ assuming that --disable-leaks is configured.
+ * move SCREEN field for use_tioctl data before the ncursesw fields,
+ and limit that to the sp-funcs configuration to improve termlib
+ compatibility
+ * modify db-iterator:
+ + ignore zero-length files in db-iterator; these are useful for
+ instance to suppress $HOME/.terminfo when not wanted.
+ + modify update_getenv to ensure that environment variables
+ which are not initially set will be checked later if an
+ application happens to set them
+ * modify _nc_outc_wrapper to use the standard output if the screen
+ was not initialized, rather than returning an error.
+ * improve checks for low-level terminfo functions when the terminal
+ has not been initialized.
+ * modify set_curterm to update ttytype[] data used by longname/p>
+ * modify _nc_get_screensize to allow for use_env and use_tioctl
+ state to be per-screen when sp-funcs are configured, better
+ matching the behavior when using the term-driver configuration.
+ * remove an early-return from _nc_do_color, which can interfere with
+ data needed by bkgd when ncurses is configured with extended
+ colors
+ * incorporate A_COLOR mask into COLOR_PAIR, in case user application
+ provides an out-of-range pair number
+ * modify logic for endwin-state to be able to detect the case where
+ the screen was never initialized, using that to trigger a flush of
+ ncurses' buffer for mvcur, e.g., in the sample program dots_mvcur
+ for the term-driver configuration.
+
+ These are corrections to existing features:
+ * fixes for writing extended color pairs in putwin.
+ * modify no-leaks code for lib_cur_term.c to account for the tgetent
+ cache.
+ * amend handling of the repeat_char capability in EmitRange to avoid
+ scope creep: translate the character to the alternate character
+ set when the alternate character set is enabled, and do not use
+ repeat_char for characters past 255.
+ * improve wide-character implementation of myADDNSTR in
+ frm_driver.c, which was inconsistent with the normal
+ implementation.
+ * modify winnstr and winchnstr to return error if the output pointer
+ is null, as well as adding a null pointer check of the window
+ pointer for better compatibility with other implementations.
+ * modify setupterm to save original tty-modes so that erasechar
+ works as expected. Also modify _nc_setupscreen to avoid redundant
+ calls to get original tty-modes.
+ * modify wattr_set and wattr_get to return ERR if win-parameter is
+ null, as documented.
+ * correct order of initialization for traces in use_env and
+ use_tioctl versus first _tracef calls.
+ * correct parameters for copywin call in _nc_Synchronize_Attributes
+ * flush the standard output in _nc_flush for the case where SP is
+ zero, e.g., when called via putp. This fixes a scenario where
+ "tput flash" did not work after changes in 20130112.
+ * amend internal use of tputs to consistently use the number of
+ lines affected, e.g., for insert/delete character operations.
+ While merging terminfo source early in 1995, several descriptions
+ used the "*" proportional delay for these operations, prompting a
+ change in doupdate.
+ * correct return-value of extended putwin.
+ * double-width multibyte characters were not counted properly in
+ winsnstr and wins_nwstr.
+ * amend fix for _nc_ripoffline from 20091031 to make test/ditto.c
+ work in threaded configuration.
+ * modify _nc_viscbuf2 and _tracecchar_t2 to trace wide-characters as
+ a whole rather than their multibyte equivalents.
+ * minor fix in wadd_wchnstr to ensure that each cell has nonzero
+ width.
+ * move PUTC_INIT calls next to wcrtomb calls, to avoid carry-over of
+ error status when processing Unicode values which are not mapped.
+ * add missing assignment in lib_getch.c to make notimeout work
+
+ Program improvements
+
+ While reviewing user feedback, it became apparent that the differences
+ between [20]reset (an alias for tset) and "tput reset" were confusing:
+ * one ([21]tset) updated the terminal modes, but used only part of
+ the terminfo capabilities for initialization, while
+ * the other ([22]tput) used all of the terminal capabilities while
+ neglecting the terminal modes.
+
+ On further investigation, it turned out that the differences were
+ largely an accident due to the way those programs had evolved.
+
+ This release eliminates the unnecessary differences, using the same
+ approach for tput's init (initialization), reset and clear operations
+ as the separate [23]reset and [24]clear programs. Doing this does not
+ change the command-line options; existing scripts are unaffected.
+
+ These are the user-visible changes for the three programs (tput, tset
+ and clear):
+ * add the terminal-mode parts of "reset" (aka tset) to the "tput
+ reset" command, making the two almost the same except for
+ window-size.
+ * improve tput's check for being called as "init" or "reset" to
+ allow for transformed names.
+ * add "clear" as a possible link/alias to tput.
+ * amend changes for tput to reset tty modes to "sane" if the program
+ is run as "reset", like tset. Likewise, ensure that tset sends
+ either reset- or init-strings.
+ * add -x option to clear/tput to make the E3 extension optional
+ * add functionality of "tset -w" to tput, like the "-c" feature this
+ is not optional in tput.
+ * add options -T and -V to clear command for compatibility with
+ tput.
+ * drop long-obsolete "-n" option from tset.
+ * modify tset's assignment to TERM in its output to reflect the name
+ by which the terminal description is found, rather than the
+ primary name. That was an unnecessary part from the initial
+ conversion of tset from termcap to terminfo. The termcap library
+ in 4.3BSD did this to avoid using the short 2-character name
+ * remove a restriction in tput's support for termcap names which
+ omitted capabilities normally not shown in termcap translations
+ * add usage message to clear command
+ * improve usage messages for tset and tput.
+
+ Other user-visible improvements and new features include:
+ * modify tic/infocmp display of numeric values to use hexadecimal
+ when they are "close" to a power of two, making the result more
+ readable.
+ * add "-W" option to tic/infocmp to force long strings to wrap.
+ + This is in addition to the "-w" option which attempts to fit
+ capabilities into a given line-length.
+ + If "-f" option splits line, do not further split it with
+ "-W".
+ + Begin a new line when adding "use=" after a wrapped line.
+ * add "-q" option to infocmp to suppress the "Reconstructed from"
+ comment from the header, and a corresponding option to tic to
+ suppress all comments from the "tic -I" output.
+ * Sorted options in usage message for infocmp, to make it simpler to
+ see unused letters.
+ * Updated usage message for tic, adding "-0" option.
+ * add infocmp/tic "-Q" option, which allows one to dump the compiled
+ form of the terminal entry, in hexadecimal or base64:
+ + A "b64:" prefix in the TERMINFO variable tells the terminfo
+ reader to use base64 according to RFC-3548 as well as
+ RFC-4648 url/filename-safe format.
+ + A "hex:" prefix tells the terminfo reader to accept
+ hexadecimal data as generated by "infocmp -0qQ1".
+
+ Other less-visible improvements and new features include:
+ * modify utility headers such as tic.h to make it clearer which are
+ externals that are used by tack.
+ * add "reset" to list of programs whose names might change in
+ manpages due to program-transformation configure options.
+ * modify "-T" option of clear and tput to call use_tioctl to obtain
+ the operating system's notion of the screensize if possible.
+ * add check in tput for init/reset operands to ensure those use a
+ terminal.
+ * modify programs clear, tabs, tput and tset to pass the actual tty
+ file descriptor to setupterm rather than the standard output or
+ error, making padding work.
+ * change tset's initialization to allow it to get settings from the
+ standard input as well as /dev/tty, to be more effective when
+ output or error are redirected.
+ * amend check in tput, tabs and clear to allow those to use the
+ database-only features in cron if a "-T" option gives a suitable
+ terminal name.
+ * improve error message from tset/reset when both stderr/stdout are
+ redirected to a file or pipe.
+
+ Several of the less apparent features deal with translation of
+ terminfo to termcap (and the reverse), with corresponding checks by
+ tic:
+ * modify check in fmt_entry to handle a cancelled reset string. Make
+ similar fixes in other parts of dump_entry.c and tput.c
+ * correct read of terminfo entry in which all strings are absent or
+ explicitly cancelled. Before this fix, the result was that all
+ were treated as only absent.
+ * modify infocmp to suppress mixture of absent/cancelled
+ capabilities that would only show as "NULL, NULL", unless the "-q"
+ option is used, e.g., to show "-, @" or "@, -".
+ * correct a warning from tic about keys which are the same, to skip
+ over missing/cancelled values.
+ * add check in tic for use of bold, etc., video attributes in the
+ color capabilities, accounting whether the feature is listed in
+ ncv.
+ * add check in tic for unnecessary use of "2" to denote a shifted
+ special key.
+ * improve check in tic for delays by also warning about beep/flash
+ when a delay is not embedded, or if those use the VT100 reverse
+ video escape without using a delay.
+ * improve checks in trim_sgr0, comp_parse.c and parse_entry.c, for
+ cancelled string capabilities.
+ * add check in tic for some syntax errors of delays, as well as use
+ of proportional delays for non-line capabilities.
+ * add check in tic for conflict between ritm, rmso, rmul versus
+ sgr0.
+ * add check in _nc_parse_entry for invalid entry name, setting the
+ name to "invalid" to avoid problems storing entries.
+ * improve _nc_tparm_analyze, using that to extend the checks made by
+ tic for reporting inconsistencies between the expected number of
+ parameters for a capability and the actual.
+ * remove tic warning about "^?" in string capabilities, which was
+ marked as an extension; however all Unix implementations support
+ this and X/Open Curses does not address it. On the other hand,
+ [25]BSD termcap did not support this feature (until the
+ [26]mid-1990s).
+ in _nc_infotocap, added a check to ensure that terminfo "^?" is
+ not written to termcap.
+ * modify sscanf calls in _nc_infotocap for patterns "%{number}%+%c"
+ and "%'char'%+%c" to check that the final character is really "c",
+ avoiding a case in icl6404 which cannot be converted to termcap.
+ * in _nc_tic_expand and _nc_infotocap, improved string-length check
+ when deciding whether to use "^X" or "\xxx" format for control
+ characters, to make the output of tic/infocmp more predictable.
+ * limited termcap "%d" width to 2 digits on input, and use "%2" in
+ preference to "%02" on output.
+ * correct terminfo/termcap conversion of "%02" and "%03" into "%2"
+ and "%3"; the result repeated the last character.
+
+ Examples
+
+ Along with the library and utilities, many improvements were made to
+ the [27]ncurses-examples.
+
+ These changes were made to demonstrate new extensions in ncurses:
+ * add demo_new_pair program, to demonstrate [28]alloc_pair,
+ [29]find_pair and [30]free_pair functions.
+ This program iterates over the possible color combinations,
+ allocating or initializing color pairs. For best results, choose
+ screen-width dividing evenly into the number of colors. e.g.,
+
+ 32x64,32x128 256 colors
+ 24x44,24x88 88 colors
+ 32x64,24x128 16 colors
+
+ * add extended_color program, like the older color_set program, but
+ using the extended color functions, with and without the
+ SP-functions interface.
+ * add picsmap program to fill in some testing issues not met by
+ dots, using this as the third example in a comparison of the
+ [31]ncurses versus slang libraries.
+ The program can directly read X bitmap and pixmap files,
+ displaying a picture. It can read other image files using
+ ImageMagick's convert program to translate the image into text.
+ For 16-, 88- and 256-color terminal descriptions, picsmap can load
+ a palette file which tells it which color palette entries to use.
+ For direct-colors, the terminal descriptions use the RGB extension
+ capability.
+
+ There are other new example programs and a few scripts:
+ * add dots_xcurses program to illustrate a different approach used
+ for extended colors which can be contrasted with dots_curses.
+ * add list_keys program show function keys for one or more terminal
+ descriptions. It uses ncurses's convention of modifiers for
+ special keys, based on xterm.
+ * add padview program, to compare pads with direct updates in the
+ view program.
+ * add sp_tinfo program to exercise the SP-functions extension of the
+ low-level terminfo library.
+ * add test-programs for termattrs and term_attrs functions.
+ * add test_sgr program to exercise all combinations of the sgr
+ capability.
+ * add tput-colorcube demo script, imitating xterm's 88- and
+ 256-color scripts using tput.
+ * add tput-initc script to demonstrate how tput may be used to
+ initialize a color palette from a data file.
+
+ A variety of improvements were made to existing programs, both new
+ features as well as options added to make the set of programs more
+ consistent.
+
+ The ncurses program is the largest; a proportionately large number of
+ changes were made to it:
+ * modify a/A screens to make exiting on an escape character depend
+ on the start of keypad and timeout modes, to allow better testing
+ of function-keys.
+ add "t" toggle for notimeout function.
+ * modify layout of b/B screens to allow for additional annotation on
+ the right margin; some terminals with partial support did not
+ display well.
+ * modify c/C screens to allow for extended color pairs.
+ add z/Z zoom feature to make extended color pairs easier to test.
+ modify test-screens to take advantage of wide screens, reducing
+ the number of lines used for 88- and 256-colors.
+ * modify "d" edit-color screen to optionally read xterm color
+ palette directly from terminal, as well as handling KEY_RESIZE and
+ screen-repainting with control/L and control/R.
+ * add examples to "F" screen for WACS_D_PLUS and WACS_T_PLUS.
+ * improve "g" screen, correcting ifdef which made the legend not
+ reflect changes to keypad- and scroll-modes. Added check for
+ return-value of putwin.
+ * make "s" test easier to understand which subtests are available
+ add a corresponding "S" wide-character overlap test-screen.
+ * add "v" screen to show baudrate and other values.
+
+ These changes were made to the other examples:
+ * modify blue program to use Unicode values for card-glyphs when
+ available, as well as improving the check for CP437 and CP850.
+ * improve demo_menus program, allowing mouse-click on the
+ menu-headers to switch the active menu. This requires a new
+ extension option O_MOUSE_MENU to tell the menu driver to put mouse
+ events which do not apply to the active menu back into the queue
+ so that the application can handle the event.
+ * correct logic in demo_terminfo program for "-f" option
+ * modify ditto program to allow $XTERM_PROG environment variable to
+ override "xterm" as the name of the program to run in the threaded
+ configuration.
+ * add several options to the "dots" test-programs.
+ * modify filter program:
+ + illustrate an alternative to getnstr, that polls for input
+ while updating a clock on the right margin as well as
+ responding to window size-changes.
+ + adapt logic used in [32]dialog [33]"--keep-tite" option for
+ filter program as the "-a" option. When set, filter attempts
+ to suppress the alternate screen.
+ * modify knight program to provide the "slow" solution for small
+ screens using "R", noting that Warnsdorf's method is easily done
+ with "a".
+ * modify the savescreen program to add test patterns that exercise
+ 88-, 256-, etc., colors.
+ * add options to test_arrays, for selecting termcap vs terminfo,
+ etc.
+ * modify the view program:
+ + expand tabs using the ncurses library rather than in the
+ test-program.
+ + eliminate the "-n" option by simply reading the whole file.
+ + implement page up/down commands.
+ + remove the very old SIGWINCH example; just use KEY_RESIZE.
+ * improve animation in xmas program by adding a time-delay in
+ blinkit.
+ * modify several test-programs which call use_default_colors to
+ consistently do this only if the "-d" option is given.
+ * modify the install-rule for ncurses-examples to put the data files
+ in the data directory, e.g., /usr/share/ncurses-examples.
+ * modify several test programs to use new popup_msgs function,
+ adapted from the help-screen used in the edit_field program.
+ * modify test data for xterm palettes to use the newer
+ color4/color12 values.
+ * improve the tracemunch script:
+ + show screenXX pointers and thread identifiers as names.
+ + chang address-parameters of add_wch, color_content and
+ pair_content to dummy parameters.
+
+ Terminal database
+
+ There are several new terminal descriptions:
+
+ dumb-emacs-ansi, dvtm, dvtm-256color, fbterm, iterm2, linux-m1
+ minitel entries, putty-noapp, viewdata, and vt100+4bsd
+ building-block.
+
+ xterm+noalt, xterm+titlestack, xterm+alt1049, xterm+alt+title
+ building blocks and xterm+direct, xterm+indirect, xterm-direct.
+ from [34]xterm patch #331.
+
+ several other "-direct" descriptions to address the differences of
+ other terminal emulators versus xterm-direct.
+
+ There are many changes to existing terminal descriptions. Some were
+ updates to several descriptions:
+ * use xterm+sm+1006 in several terminal descriptions which were
+ validated as supporting the extended mouse feature for their
+ respective terminal emulators.
+ * corrected sgr/sgr0 strings in a few cases reported by tic, making
+ those correspond to the non-sgr settings where they differ, but
+ otherwise use ECMA-48 consistently.
+ * add 0.1sec mandatory delay to flash capabilities using the VT100
+ reverse-video control
+
+ while others affected specific descriptions. These were retested, to
+ take into account new/undocumented changes by their developers:
+
+ iterm, minitel, st, viewdata, nsterm
+
+ while these are specific fixes based on user reports, or warnings from
+ tic:
+
+ [35]ansi building blocks
+
+ + restored rmir/smir in ansi+idc to better match original
+ ansiterm+idc, add alias ansiterm
+
+ [36]icl6402
+
+ + corrected missing comma-separator between string capabilities
+ in icl6402 and m2-nam
+
+ [37]interix
+
+ + updated using tack and SFU with Windows 7 Ultimate.
+ + used ^? for kdch1
+
+ [38]linux
+
+ + made linux3.0 entry the default linux entry
+ + modify linux2.6 entry to improve line-drawing so that the
+ linux3.0 entry can be used in non-UTF-8 mode
+ + omitted selection of ISO-8859-1 for G0 in enacs capability
+ from linux2.6 entry, to avoid conflict with the user-defined
+ mapping. The reset feature uses ISO-8859-1 in any case.
+ + modify flash capability for linux and wyse entries to put the
+ delay between the reverse/normal escapes rather than after
+ + modify linux-16color to not mask dim, standout or reverse
+ with the ncv capability
+
+ [39]pccon entries
+
+ + fixed some inconsistencies in the pccon* entries
+ + add bold to pccon+sgr+acs and pccon-base
+ + add keys f12-f124 to pccon+keys
+
+ [40]tmux
+
+ + corrected sgr string, which used screen's "standout" code
+ rather than the standard code.
+ + add settings corresponding to xterm-keys option to reflect
+ upcoming change to make that option "on" by default
+ + uncanceled Ms
+
+ [41]vt100
+
+ + modify vt100 rs2 string to reset vt52 mode and scrolling
+ regions
+ + corrected rs2 string for vt100-nam
+ + made minor fixes for vt100+4bsd, e.g., delay in sgr for
+ consistency
+
+ [42]vte
+
+ + moved SGR 24 and 27 from vte-2014 to vte-2012
+ + add a few capabilities fixed in recent VTE development
+
+ [43]xterm
+
+ + add rep to xterm-new, available since [44]late 1996.
+ + modify xterm+256color and xterm+256setaf to use correct
+ number of color pairs.
+ + modify rs1 for xterm-16color, xterm-88color and
+ xterm-256color to reset palette using oc string as in linux
+ entry.
+ + add rs1 capability to xterm-256color
+ + add oc capability to xterm+256color, allowing palette reset
+ for xterm
+ + add op to xterm+256setaf
+ + modify xterm-r5, xterm-r6 and xterm-xf86-v32 to use xterm+kbs
+ to match [45]xterm #272, reflecting packager's changes
+ + used ANSI reply for u8 in xterm-new, to reflect vt220-style
+ responses that could be returned.
+ + made xterm-pcolor sgr consistent with other capabilities
+
+ A few entries use extensions (user-defined terminal capabilities):
+ * add rmxx/smxx ECMA-48 strikeout extension to tmux and xterm-basic
+ * used RGB capability in new *-direct entries to denote direct-color
+ feature.
+
+ Documentation
+
+ As usual, this release
+ * improves documentation by describing new features,
+ * attempts to improve the description of features which users have
+ found confusing
+ * fills in overlooked descriptions of features which were described
+ in the [46]NEWS file but treated sketchily in manual pages.
+
+ In particular,
+ * Since the underlying features for [47]tset, [48]tput, and
+ [49]clear have been better integrated, the documentation now
+ includes information on how those tools evolved.
+ In addition to explaining the improved integration of the tools,
+ the manual pages made it easier to see how the tools are similar
+ and how they are different.
+ * The addch manual page has additional information on
+ [50]portability and differences from other implementations.
+ * The discussion of color-pairs in the attributes manual page is
+ improved in its [51]history section.
+ * The documentation of the chtype, cchar_t types and the attribute
+ values which can be stored in those types, in particular the
+ [52]history and [53]portability sections of the attributes manual
+ page, has been improved.
+ * improve discussion of [54]portability in the mouse manual.
+ * The pad manual page has a section on the [55]origin and
+ portability of pads.
+ * Differences between SVr4 and X/Open Curses soft-keys are discussed
+ in a new section on [56]portability.
+ * There are updated/improved notes on portability in the
+ [57]resizeterm and [58]wresize manual pages.
+
+ In addition to providing background information to explain these
+ features and show how they evolved, there are corrections,
+ clarifications, etc.:
+ * add note in the [59]addch manual about line-drawing when it
+ depends upon UTF-8.
+ * improve discussion of line-drawing characters in the [60]add_wch
+ manual.
+ * explain in [61]clear's manual page that it writes to the standard
+ output.
+ * improve description of [62]endwin.
+ * improve discussion of field validation in the [63]form driver
+ manual page.
+ * clarify the use of wint_t vs wchar_t in [64]get_wstr manual page.
+ * clarify in the [65]getch manual that the keypad mode affects an
+ application's ability to read KEY_MOUSE codes, but does not affect
+ KEY_RESIZE.
+ trim some obsolete/incorrect wording about EINTR from the getch
+ manual page
+ improve manual pages for [66]getch and [67]get_wch to point out
+ that they might return user-defined values which have no
+ predefined names in <curses.h>
+ * improve description of the -R option in the [68]infocmp manual
+ page
+ * clarify in the [69]resizeterm manual page how KEY_RESIZE is pushed
+ onto the input stream.
+ * document return value of [70]use_extended_names
+ * document differences in [71]ESCDELAY versus AIX's implementation
+ in the variables manual page.
+ * The _nc_free_tinfo function is now documented in the
+ [72]memory-leaks manual page, because it could be used in tack for
+ memory-leak checking.
+ * add a note to the [73]tic manual page about -W versus -f options.
+ * improve terminfo manual description of [74]terminfo syntax.
+ improve terminfo manual page discussion of [75]control- and
+ graphics- characters.
+ improve [76]color-handling section in terminfo manual page
+ * clarify description in [77]tput manual page regarding support for
+ termcap names
+ update [78]tput manual page to reflect changes to manipulate
+ terminal modes by sharing functions with tset.
+ * clarify in manual pages that the optional verbose option level of
+ [79]tic and [80]infocmp is available only when ncurses is
+ configured for tracing.
+ * improve manual page description of [81]tset/reset versus
+ window-size.
+ * improve description of [82]tgoto parameters
+
+ There are new manual pages:
+ * [83]user_caps documents the terminfo extensions used by ncurses.
+ * [84]scr_dump documents the screen-dump format.
+
+ Some of the improvements are more subtle, relating to the way the
+ information is presented:
+ * Made minor fixes to manpage NAME/SYNOPSIS sections to consistently
+ use rule that either all functions which are prototyped in
+ SYNOPSIS are listed in the NAME section, or the manual-page name
+ is the sole item listed in the NAME section. The latter is used to
+ reduce clutter, e.g., for the top-level library manual pages as
+ well as for certain feature-pages such as [85]SP-funcs and
+ [86]threading.
+ * improve manual pages for utilities with respect to POSIX versus
+ X/Open Curses.
+ * improve organization of the [87]attributes and [88]color manual
+ pages.
+
+ Interesting bug-fixes
+
+ * modify toe to not exit if unable to read a terminal description,
+ e.g., if there is a permission problem.
+ * correct 20100515 change for weak signals versus sigprocmask
+ * work around Ada tool-breakage in Debian 9 and later by invoking
+ gprconfig to specify the C compiler to be used by gnatmake, and
+ conditionally suppressing Library_Options line for static
+ libraries.
+ * There were, as well, several bug-fixes to handle illegal input for
+ tic. Because those did not correspond to useful terminal
+ descriptions, most users are unaffected.
+
+ Configuration changes
+
+ Major changes
+
+ This release provides a new binary format for terminal descriptions
+ that use extended numeric capabilities. Applications built with the
+ wide-character ncursesw library can use these extended numbers.
+ * This includes utilities such as tic and infocmp, because (as noted
+ in [89]New features), the feature relies upon an extension to the
+ low-level tinfo library.
+ * A few software packagers use a configuration option of ncurses
+ which allows the low-level tinfo library to be shared between the
+ high-level ncurses and ncursesw libraries. This new feature was
+ designed to work in that configuration as well.
+
+ Other applications (i.e., using the 8-bit ncurses library) which read
+ the extended terminal descriptions see those numeric capabilities set
+ to the maximum value for a signed 16-bit number.
+
+ Older versions of ncurses' tic accept out-of-range numeric
+ capabilities, storing those as the maximum value for a signed 16-bit
+ number. Other implementations of curses (mentioned in the discussion
+ of [90]picsmap) give zero for these out-of-range capabilities.
+
+ Configuration options
+
+ These changes provide support for tack 1.08, released in [91]July
+ 2017:
+ * add --without-tack configure option to refine --with-progs
+ configure option. Normally tack is built outside the ncurses tree,
+ but a few packagers combine it during the build. If term_entry.h
+ is installed, there is no advantage to in-tree builds.
+ * adjust configure-script to define HAVE_CURSES_DATA_BOOLNAMES
+ symbol needed for tack 1.08 when built in-tree. Rather than
+ relying upon internal "_nc_" functions, tack now uses the boolean,
+ number and string capability name-arrays provided by ncurses and
+ SVr4 Unix curses. It still uses term_entry.h for the definitions
+ of the extended capability arrays.
+ * add dependency upon ncurses_cfg.h to tic's header-files; any
+ program using tic-library will have to supply this file. Legacy
+ tack versions supply this file; ongoing tack development has
+ dropped the dependency upon tic-library and new releases will not
+ be affected.
+
+ Other changes to the configure-script and generated files include
+ * add configure options to disable checks for form, menu and panel
+ libraries so that ncurses-examples can be built with non-SVr4
+ curses implementations.
+ * add configure option --enable-opaque-curses for ncurses library
+ and similar options for the other libraries.
+ * add configure option --disable-wattr-macros for use in cases where
+ one wants to use the same headers for ncurses5/ncurses6
+ development, by suppressing the wattr* macros which differ due to
+ the introduction of extended colors
+ * modify configure macro for shared-library rules to use -Wl,-rpath
+ rather than -rpath to work around a bug in scons
+ * improve ncurses-examples' configure script to define as needed
+ NCURSES_WIDECHAR for platforms where _XOPEN_SOURCE_EXTENDED does
+ not work. Also modified the test program to ensure that if
+ building with ncurses, that the cchar_t type is checked, since
+ that is normally (since [92]20111030) ifdef'd depending on this
+ test.
+ * modify configure script to handle the case where tic-library is
+ renamed, but the --with-debug option is used by itself without
+ normal or shared libraries
+ * modify editing script which generates resulting.map to work with
+ the clang configuration on recent FreeBSD, which gives an error on
+ an empty "local" section.
+ * improve configure check for setting the WILDCARD_SYMS variable; on
+ ppc64 the variable is in the Data section rather than Text.
+ * correct result of configure option --without-fallbacks, which
+ caused FALLBACK_LIST to be set to "no"
+ * modify --with-pkg-config-libdir option to make it possible to
+ install ".pc" files even if pkg-config is not found. Limit this
+ change, to suppress the actual install if it is not overridden to
+ a valid directory at install time.
+ * disallow "no" as a possible value for --with-shlib-version option,
+ overlooked in cleanup-changes for [93]20000708.
+
+ Portability
+
+ Many of the portability changes are implemented via the configure
+ script:
+ * improve configure script's CF_CC_ENV_FLAGS macro to allow for
+ compiler wrappers such as ccache. This change moves only the
+ preprocessor, optimization and warning flags to CPPFLAGS and
+ CFLAGS, leaving the residue in CC. That happens to work for gcc's
+ various "model" options, but may require tuning for other
+ compilers.
+ * modify ncurses-examples' configure script to use pkg-config for
+ the extra form/menu/panel libraries, to be more consistent with
+ the handling of the curses/ncurses library.
+ * add configuration checks to build with [94]NetBSD curses, which
+ for example lacks [95]use_env.
+ * change ncurses-examples to use attr_t vs chtype to follow X/Open
+ documentation more closely since Solaris xpg4-curses uses
+ different values for WA_xxx vs A_xxx that rely on attr_t being an
+ unsigned short. Tru64 aka OSF1, HPUX, AIX did as ncurses does,
+ equating the two sets.
+ * modify several test programs to reflect that ncurses honors
+ existing signal handlers in initscr, while other implementations
+ do not.
+ * add configure check for openpty to ncurses-examples' configure
+ script, for ditto.
+ * improve check for working poll function by using posix_openpt as a
+ fallback in case there is no valid terminal on the standard input
+ * modify ncurses-examples' configure script to check for pthread
+ dependency of ncursest or ncursestw library when building the
+ ncurses examples, e.g., in case weak symbols are used.
+ * add checks in ncurses-examples' configure script for some
+ functions neither in 4.3BSD curses, nor based on X/Open Curses:
+ + modify a loop limit in firework.c to work around absense of
+ limit checks in some libraries.
+ + fill the last row of a window with "?" in firstlast if waddch
+ does not return ERR on the lower-right corner.
+ * build-fixes for the Portland Group (PGI) compilers
+ + accept whitespace in sed expression for generating expanded.c
+ + modify configure check that g++ compiler warnings are not
+ used.
+ + add configure check for -fPIC option needed for shared
+ libraries.
+ * modify configure script for clang as used on FreeBSD, to work
+ around clang's differences in exit codes vs gcc.
+ * fixes for configure/build using clang on OSX
+ + do not redefine "inline" in ncurses_cfg.h; this was
+ originally to solve a problem with gcc/g++, but is aggravated
+ by clang's misuse of symbols to pretend it is gcc.
+ + add braces to configure script to prevent unwanted addition
+ of "-lstdc++" option to the CXXLIBS symbol.
+ + improve/update test-program used for checking existence of
+ stdc++ library.
+ + if $CXXLIBS is set, the linkage test uses that in addition to
+ $LIBS.
+ * fixes for OS/2:
+ + use button instead of kbuf[0] in EMX-specific part of
+ lib_mouse.c
+ + support building with libtool on OS/2
+ + use stdc++ library with OS/2 kLIBC
+ + clear configure script's cf_XOPEN_SOURCE for OS/2, to work
+ with its header files
+ * add "newer" baudrate symbols to the [96]baudrate function in the
+ ncurses library as well as to a corresponding table in tset.
+ * modify ncurses-examples savescreen to work with AIX and HPUX.
+ * define WIN32_LEAN_AND_MEAN for MinGW port, making builds faster.
+ * add a configure check for wcwidth versus the ncurses line-drawing
+ characters, to use in special-casing systems such as Solaris.
+ Solaris, however, requires a special case that maps Unicode
+ line-drawing characters into the acsc string for non-Unicode
+ locales. Solaris also has a misconfigured wcwidth which marks all
+ of the line drawing characters as double-width.
+ * string-hacks (non-standard):
+ + fix configure script to record when strlcat is found on
+ OpenBSD.
+ + add --enable-string-hacks option to ncurses-examples'
+ configure script.
+ + completed string-hacks for sprintf, etc., including the
+ ncurses-examples programs.
+ + make --enable-string-hacks option work with Debian by
+ checking for the "bsd" library and its associated
+ "<bsd/string.h>" header.
+ * workaround for Debian's antique/unmaintained version of mawk:
+ + see Debian #65617, which was fixed in mawk's upstream
+ releases in [97]2009.
+ + related fixes when building link_test.
+ _________________________________________________________________
+
+Features of ncurses
+
+ The ncurses package is fully upward-compatible with SVr4 (System V
+ Release 4) curses:
+ * All of the SVr4 calls have been implemented (and are documented).
+ * ncurses supports all of the for SVr4 curses features including
+ keyboard mapping, color, forms-drawing with ACS characters, and
+ automatic recognition of keypad and function keys.
+ * ncurses provides these SVr4 add-on libraries (not part of X/Open
+ Curses):
+ + the panels library, supporting a stack of windows with
+ backing store.
+ + the menus library, supporting a uniform but flexible
+ interface for menu programming.
+ + the form library, supporting data collection through
+ on-screen forms.
+ * ncurses's terminal database is fully compatible with that used by
+ SVr4 curses.
+ + ncurses supports user-defined capabilities which it can see,
+ but which are hidden from SVr4 curses applications using the
+ same terminal database.
+ + It can be optionally configured to match the format used in
+ related systems such as AIX and Tru64.
+ + Alternatively, ncurses can be configured to use hashed
+ databases rather than the directory of files used by SVr4
+ curses.
+ * The ncurses 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
@@ -96,8 +960,7 @@
use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by
defining more than one control sequence to map to a given key
code.
- * Support for 256-color terminals, such as modern xterm, when
- configured using the --enable-ext-colors option.
+ * Support for 256-color terminals, such as modern xterm.
* Support for 16-color terminals, such as aixterm and modern xterm.
* Better cursor-movement optimization. The package now features a
cursor-local-movement computation more efficient than either BSD's
@@ -119,10 +982,10 @@
types even when no terminfo tree or termcap file is accessible
(this may be useful for support of screen-oriented programs that
must run in single-user mode).
- * The tic(1)/captoinfo utility provided with ncurses has the ability
- to translate many termcaps from the XENIX, IBM and AT&T extension
- sets.
- * A BSD-like tset(1) utility is provided.
+ * The [98]tic/[99]captoinfo utility provided with ncurses has the
+ ability to translate many termcaps from the XENIX, IBM and AT&T
+ extension sets.
+ * A BSD-like [100]tset utility is provided.
* The ncurses library and utilities will automatically read terminfo
entries from $HOME/.terminfo if it exists, and compile to that
directory if it exists and the user has no write access to the
@@ -137,152 +1000,369 @@
other entries in the same source file (as in System V) but also to
compiled entries in either the system terminfo directory or the
user's $HOME/.terminfo directory.
- * A script (capconvert) is provided to help BSD users transition
- from termcap to terminfo. It gathers the information in a TERMCAP
- environment variable and/or a ~/.termcap local entries file and
- converts it to an equivalent local terminfo tree under
- $HOME/.terminfo.
- * Automatic fallback to the /etc/termcap file can be compiled in
- when it is not possible to build a terminfo tree. This feature is
- neither fast nor cheap, you don't want to use it unless you have
- to, but it's there.
- * The table-of-entries utility toe makes it easy for users to see
- exactly what terminal types are available on the system.
+ * The table-of-entries utility [101]toe makes it easy for users to
+ see exactly what terminal types are available on the system.
* The library meets the XSI requirement that every macro entry point
have a corresponding function which may be linked (and will be
prototype-checked) if the macro definition is disabled with
#undef.
- * An HTML "Introduction to Programming with NCURSES" document
- provides a narrative introduction to the curses programming
- interface.
+ * Extensive documentation is provided (see the [102]Additional
+ Reading section of the [103]ncurses FAQ for online documentation).
+
+Applications using ncurses
+
+ The ncurses distribution includes a selection of test programs
+ (including a few games). These are available separately as
+ [104]ncurses-examples
- State of the Package
+ The ncurses library has been tested with a wide variety of
+ applications including:
- 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.
+ aptitude
+ FrontEnd to Apt, the debian package manager
- The ncurses code has been tested with a wide variety of applications
- including (versions starting with those noted):
+ [105]https://wiki.debian.org/Aptitude
cdk
Curses Development Kit
- [6]http://invisible-island.net/cdk/
- [7]http://www.vexus.ca/products/CDK/
+
+ [106]https://invisible-island.net/cdk/
ded
directory-editor
- [8]http://invisible-island.net/ded/
+
+ [107]https://invisible-island.net/ded/
dialog
the underlying application used in Slackware's setup, and the
- basis for similar applications on GNU/Linux.
- [9]http://invisible-island.net/dialog/
+ basis for similar install/configure applications on many
+ systems.
+
+ [108]https://invisible-island.net/dialog/
lynx
- the character-screen WWW browser
- [10]http://lynx.isc.org/release/
+ the text WWW browser
- Midnight Commander
- file manager
- [11]http://www.midnight-commander.org/
+ [109]https://lynx.invisible-island.net/
mutt
mail utility
- [12]http://www.mutt.org/
+
+ [110]http://www.mutt.org/
ncftp
file-transfer utility
- [13]http://www.ncftp.com/
+
+ [111]https://www.ncftp.com/
nvi
- New vi versions 1.50 are able to use ncurses versions 1.9.7 and
- later.
- [14]https://sites.google.com/a/bostic.com/keithbostic/nvi
+ New vi uses ncurses.
+
+ [112]https://sites.google.com/a/bostic.com/keithbostic/vi
+
+ ranger
+ A console file manager with VI key bindings in Python.
- pinfo
- Lynx-like info browser.
- [15]https://alioth.debian.org/projects/pinfo/
+ [113]https://ranger.github.io/
tin
- newsreader, supporting color, MIME [16]http://www.tin.org/
+ newsreader, supporting color, MIME
+
+ [114]http://www.tin.org/
+
+ vifm
+ File manager with vi like keybindings
+
+ [115]https://vifm.info/
as well as some that use ncurses for the terminfo support alone:
minicom
- terminal emulator
- [17]http://alioth.debian.org/projects/minicom/
+ terminal emulator for serial modem connections
+
+ [116]https://alioth.debian.org/projects/minicom/
+
+ mosh
+ a replacement for ssh.
+
+ [117]https://mosh.mit.edu/
+
+ tack
+ terminfo action checker
+
+ [118]https://invisible-island.net/ncurses/tack.html
+
+ tmux
+ terminal multiplexor
+
+ [119]https://github.com/tmux/tmux/wiki
vile
- vi-like-emacs
- [18]http://invisible-island.net/vile/
+ vi-like-emacs may be built to use the terminfo, termcap or
+ curses interfaces.
- The ncurses distribution includes a selection of test programs
- (including a few games).
+ [120]https://invisible-island.net/vile/
+
+ and finally, those which use only the termcap interface:
-Who's Who and What's What
+ emacs
+ text editor
- Zeyd Ben-Halim started it from a previous package pcurses, written by
- Pavel Curtis. Eric S. Raymond continued development. Juergen Pfeifer
- wrote most of the form and menu libraries. Ongoing work is being done
- by [19]Thomas Dickey. Thomas Dickey acts as the maintainer for the
- Free Software Foundation, which holds the copyright on ncurses.
- Contact the current maintainers at [20]bug-ncurses@gnu.org.
+ [121]https://www.gnu.org/software/emacs/
- To join the ncurses mailing list, please write email to
- bug-ncurses-request@gnu.org containing the line:
- subscribe <name>@<host.domain>
+ less
+ The most commonly used pager (a program that displays text
+ files).
+
+ [122]http://www.greenwoodsoftware.com/less/
+
+ screen
+ terminal multiplexor
+
+ [123]https://www.gnu.org/software/screen/
+
+ vim
+ text editor
+
+ [124]https://www.vim.org/
+
+Development activities
+
+ Zeyd Ben-Halim started ncurses from a previous package pcurses,
+ written by Pavel Curtis. Eric S. Raymond continued development.
+ Juergen Pfeifer wrote most of the form and menu libraries. Ongoing
+ development work is done by [125]Thomas Dickey. Thomas Dickey also
+ acts as the maintainer for the Free Software Foundation, which holds
+ the [126]copyright on ncurses.
+
+ Contact the current maintainers at
+
+ [127]bug-ncurses@gnu.org
+
+ To join the ncurses mailing list, please write email to
+
+ [128]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 [21]ftp://invisible-island.net/ncurses/ .
+ available at
+
+ [129]ftp://ftp.invisible-island.net/ncurses/ and
+ [130]https://invisible-mirror.net/archives/ncurses/ .
-Future Plans
+ There is an archive of the mailing list here:
- * Extended-level XPG4 conformance, with internationalization
- support.
- * Ports to more systems, including DOS and Windows.
+ [131]http://lists.gnu.org/archive/html/bug-ncurses (also
+ [132]https)
- We need people to help with these projects. If you are interested in
- working on them, please join the ncurses list.
+Related resources
-Other Related Resources
+ The release notes make scattered references to these pages, which may
+ be interesting by themselves:
+ * [133]ncurses licensing
+ * [134]Symbol versioning in ncurses
+ * [135]Comments on ncurses versus slang (S-Lang)
+ * [136]tack - terminfo action checker
+ * [137]tctest - termcap library checker
+ * [138]Terminal Database
+
+Other resources
The distribution provides a newer version of the terminfo-format
- terminal description file once maintained by [22]Eric Raymond . Unlike
- the older version, the termcap and terminfo data are provided in the
- same file, and provides several user-definable extensions beyond the
- X/Open specification.
+ terminal description file once maintained by [139]Eric Raymond .
+ Unlike the older version, the termcap and terminfo data are provided
+ in the same file, which also provides several user-definable
+ extensions beyond the X/Open specification.
You can find lots of information on terminal-related topics not
- covered in the terminfo file at [23]Richard Shuford's archive .
+ covered in the terminfo file at [140]Richard Shuford's archive .
+
+ * [141]Overview
+ * [142]Release Notes
+ + [143]Library improvements
+ o [144]New features
+ o [145]Other improvements
+ + [146]Program improvements
+ o [147]Utilities
+ o [148]Examples
+ + [149]Terminal database
+ + [150]Documentation
+ + [151]Interesting bug-fixes
+ + [152]Configuration changes
+ o [153]Major changes
+ o [154]Configuration options
+ + [155]Portability
+ * [156]Features of ncurses
+ * [157]Applications using ncurses
+ * [158]Development activities
+ * [159]Related resources
+ * [160]Other resources
References
- 1. ftp://ftp.gnu.org/gnu/ncurses/
- 2. ftp://invisible-island.net/ncurses/
- 3. http://invisible-island.net/ncurses/man/form_fieldtype.3x
- 4. http://invisible-island.net/ncurses/ncurses-Ada95.html
- 5. http://invisible-island.net/ncurses/ncurses-examples.html
- 6. http://invisible-island.net/cdk/
- 7. http://www.vexus.ca/products/CDK/
- 8. http://invisible-island.net/ded/
- 9. http://invisible-island.net/dialog/
- 10. http://lynx.isc.org/release/
- 11. http://www.midnight-commander.org/
- 12. http://www.mutt.org/
- 13. http://www.ncftp.com/
- 14. https://sites.google.com/a/bostic.com/keithbostic/nvi
- 15. https://alioth.debian.org/projects/pinfo/
- 16. http://www.tin.org/
- 17. http://alioth.debian.org/projects/minicom/
- 18. http://invisible-island.net/vile/
- 19. mailto:dickey@invisible-island.net
- 20. mailto:bug-ncurses@gnu.org
- 21. ftp://invisible-island.net/ncurses/
- 22. http://www.catb.org/~esr/terminfo/
- 23. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal
+ 1. https://invisible-island.net/ncurses/man/captoinfo.1m.html
+ 2. https://invisible-island.net/ncurses/man/clear.1.html
+ 3. https://invisible-island.net/ncurses/man/infocmp.1m.html
+ 4. https://invisible-island.net/ncurses/man/tabs.1.html
+ 5. https://invisible-island.net/ncurses/man/tic.1m.html
+ 6. https://invisible-island.net/ncurses/man/toe.1m.html
+ 7. https://invisible-island.net/ncurses/man/tput.1.html
+ 8. https://invisible-island.net/ncurses/man/tset.1.html
+ 9. https://invisible-island.net/ncurses/
+ 10. ftp://ftp.invisible-island.net/ncurses/
+ 11. https://invisible-mirror.net/archives/ncurses/
+ 12. ftp://ftp.gnu.org/gnu/ncurses/
+ 13. https://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-def_prog_mode_-def_shell_mode
+ 14. https://invisible-island.net/ncurses/ncurses-mapsyms.html
+ 15. https://invisible-island.net/ncurses/tctest.html#bsd42-numeric-caps
+ 16. https://invisible-island.net/ncurses/ncurses-slang.html#cause_numbers
+ 17. https://invisible-island.net/ncurses/tack.html#portable
+ 18. https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726
+ 19. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-EXTENSIONS
+ 20. https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization
+ 21. https://invisible-island.net/ncurses/man/tset.1.html
+ 22. https://invisible-island.net/ncurses/man/tput.1.html
+ 23. https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization
+ 24. https://invisible-island.net/ncurses/man/clear.1.html
+ 25. https://invisible-island.net/ncurses/tctest.html#bsd42-ctl-question
+ 26. https://invisible-island.net/ncurses/tctest.html#freebsd-ctl-question
+ 27. https://invisible-island.net/ncurses/ncurses-examples.html
+ 28. https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-alloc_pair
+ 29. https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-find_pair
+ 30. https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-free_pair
+ 31. https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap
+ 32. https://invisible-island.net/dialog/
+ 33. https://invisible-island.net/dialog/manpage/dialog.html#h3-Common-Options
+ 34. https://invisible-island.net/xterm/xterm.log.html#xterm_331
+ 35. https://invisible-island.net/ncurses/terminfo.src.html#toc-_A_N_S_I__S_Y_S__I_S_O_6429__E_C_M_A-48__Capabilities
+ 36. https://invisible-island.net/ncurses/terminfo.src.html#tic-icl6404
+ 37. https://invisible-island.net/ncurses/terminfo.src.html#tic-interix
+ 38. https://invisible-island.net/ncurses/terminfo.src.html#toc-_Linux_consoles
+ 39. https://invisible-island.net/ncurses/terminfo.src.html#toc-_Open_B_S_D_consoles
+ 40. https://invisible-island.net/ncurses/terminfo.src.html#toc-_Tmux
+ 41. https://invisible-island.net/ncurses/terminfo.src.html#toc-_D_E_C__V_T100_and_compatibles
+ 42. https://invisible-island.net/ncurses/terminfo.src.html#toc-_G_N_O_M_E__V_T_E_
+ 43. https://invisible-island.net/ncurses/terminfo.src.html#toc-_X_T_E_R_M
+ 44. https://invisible-island.net/xterm/xterm.log.html#xterm_32
+ 45. https://invisible-island.net/xterm/xterm.log.html#xterm_272
+ 46. https://invisible-island.net/ncurses/NEWS.html
+ 47. https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY
+ 48. https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY
+ 49. https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY
+ 50. https://invisible-island.net/ncurses/man/curs_addch.3x.html#h2-PORTABILITY
+ 51. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY
+ 52. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY
+ 53. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY
+ 54. https://invisible-island.net/ncurses/man/curs_mouse.3x.html#h2-PORTABILITY
+ 55. https://invisible-island.net/ncurses/man/curs_pad.3x.html#h2-PORTABILITY
+ 56. https://invisible-island.net/ncurses/man/curs_slk.3x.html#h2-PORTABILITY
+ 57. https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-PORTABILITY
+ 58. https://invisible-island.net/ncurses/man/wresize.3x.html#h2-PORTABILITY
+ 59. https://invisible-island.net/ncurses/man/curs_addch.3x.html#h3-ACS-Symbols
+ 60. https://invisible-island.net/ncurses/man/curs_add_wch.3x.html
+ 61. https://invisible-island.net/ncurses/man/clear.1.html#h2-DESCRIPTION
+ 62. https://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-endwin
+ 63. https://invisible-island.net/ncurses/man/form_driver.3x.html
+ 64. https://invisible-island.net/ncurses/man/curs_get_wstr.3x.html#h2-RETURN-VALUE
+ 65. https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Predefined-key-codes
+ 66. https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Keypad-Mode
+ 67. https://invisible-island.net/ncurses/man/curs_get_wch.3x.html#h2-DESCRIPTION
+ 68. https://invisible-island.net/ncurses/man/infocmp.1m.html
+ 69. https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-NOTES
+ 70. https://invisible-island.net/ncurses/man/curs_extend.3x#h2-RETURN-VALUE
+ 71. https://invisible-island.net/ncurses/man/curs_variables.3x.html#h2-PORTABILITY
+ 72. https://invisible-island.net/ncurses/man/curs_memleaks.3x.html
+ 73. https://invisible-island.net/ncurses/man/tic.1m.html
+ 74. https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Terminfo-Capabilities-Syntax
+ 75. https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Line-Graphics
+ 76. https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Color-Handling
+ 77. https://invisible-island.net/ncurses/man/tput.1.html#h2-PORTABILITY
+ 78. https://invisible-island.net/ncurses/man/tput.1.html#h3-Aliases
+ 79. https://invisible-island.net/ncurses/man/tic.1m.html#h2-OPTIONS
+ 80. https://invisible-island.net/ncurses/man/infocmp.1m.html#h3-Other-Options
+ 81. https://invisible-island.net/ncurses/man/tset.1.html
+ 82. https://invisible-island.net/ncurses/man/curs_termcap.3x.html#h3-FORMATTING-CAPABILITIES
+ 83. https://invisible-island.net/ncurses/man/user_caps.5.html
+ 84. https://invisible-island.net/ncurses/man/scr_dump.5.html
+ 85. https://invisible-island.net/ncurses/man/curs_sp_funcs.3x.html
+ 86. https://invisible-island.net/ncurses/man/curs_threads.3x.html
+ 87. https://invisible-island.net/ncurses/man/curs_attr.3x.html
+ 88. file:///ncurses/man/curs_color.3x.html
+ 89. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-new-library
+ 90. https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap
+ 91. https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726
+ 92. https://invisible-island.net/ncurses/NEWS.html#t20111030
+ 93. https://invisible-island.net/ncurses/NEWS.html#t20000708
+ 94. https://invisible-island.net/ncurses/ncurses-netbsd.html
+ 95. https://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env
+ 96. https://invisible-island.net/ncurses/man/curs_termattrs.3x.html#h3-baudrate
+ 97. https://invisible-island.net/mawk/CHANGES.html#t20090727
+ 98. https://invisible-island.net/ncurses/man/tic.1m.html
+ 99. https://invisible-island.net/ncurses/man/captoinfo.1m.html
+ 100. https://invisible-island.net/ncurses/man/tset.1.html
+ 101. https://invisible-island.net/ncurses/man/toe.1m.html
+ 102. https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading
+ 103. https://invisible-island.net/ncurses/ncurses.faq.html
+ 104. https://invisible-island.net/ncurses/ncurses-examples.html
+ 105. https://wiki.debian.org/Aptitude
+ 106. https://invisible-island.net/cdk/
+ 107. https://invisible-island.net/ded/
+ 108. https://invisible-island.net/dialog/
+ 109. https://lynx.invisible-island.net/
+ 110. http://www.mutt.org/
+ 111. https://www.ncftp.com/
+ 112. https://sites.google.com/a/bostic.com/keithbostic/vi
+ 113. https://ranger.github.io/
+ 114. http://www.tin.org/
+ 115. https://vifm.info/
+ 116. https://alioth.debian.org/projects/minicom/
+ 117. https://mosh.mit.edu/
+ 118. https://invisible-island.net/ncurses/tack.html
+ 119. https://github.com/tmux/tmux/wiki
+ 120. https://invisible-island.net/vile/
+ 121. https://www.gnu.org/software/emacs/
+ 122. http://www.greenwoodsoftware.com/less/
+ 123. https://www.gnu.org/software/screen/
+ 124. https://www.vim.org/
+ 125. mailto:dickey@invisible-island.net
+ 126. https://invisible-island.net/ncurses/ncurses-license.html
+ 127. mailto:bug-ncurses@gnu.org
+ 128. mailto:bug-ncurses-request@gnu.org
+ 129. ftp://ftp.invisible-island.net/ncurses/
+ 130. https://invisible-mirror.net/archives/ncurses/
+ 131. http://lists.gnu.org/archive/html/bug-ncurses
+ 132. https://lists.gnu.org/archive/html/bug-ncurses
+ 133. https://invisible-island.net/ncurses/ncurses-license.html
+ 134. https://invisible-island.net/ncurses/ncurses-mapsyms.html
+ 135. https://invisible-island.net/ncurses/ncurses-slang.html
+ 136. https://invisible-island.net/ncurses/tack.html
+ 137. https://invisible-island.net/ncurses/tctest.html
+ 138. https://invisible-island.net/ncurses/ncurses.html#download_database
+ 139. http://www.catb.org/~esr/terminfo/
+ 140. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal
+ 141. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-overview
+ 142. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-release-notes
+ 143. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-library
+ 144. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-new-library
+ 145. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-fixes-library
+ 146. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-programs
+ 147. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-utilities
+ 148. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-examples
+ 149. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-database
+ 150. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-documentation
+ 151. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-bug-fixes
+ 152. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-config-config
+ 153. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-config-major
+ 154. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-config-options
+ 155. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-portability
+ 156. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-features
+ 157. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-who-uses
+ 158. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-development
+ 159. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-this-stuff
+ 160. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-other-stuff
diff --git a/AUTHORS b/AUTHORS
index 57904c404537..708e1ef735b2 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
--- Copyright (c) 2006 Free Software Foundation, Inc. --
+-- Copyright (c) 2006,2017 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: AUTHORS,v 1.2 2006/10/28 21:44:52 tom Exp $
+-- $Id: AUTHORS,v 1.3 2017/02/04 15:20:52 tom Exp $
-------------------------------------------------------------------------------
These are the principal authors/contributors of ncurses since 1.9.9e,
in decreasing order of their contribution:
@@ -36,3 +36,4 @@ ESR Eric S Raymond
AVL Alexander V Lukyanov
PB Philippe Blain
SV Sven Verdoolaege
+NB Nicolas Boulenguez
diff --git a/Ada95/Makefile.in b/Ada95/Makefile.in
index f82079330210..4d80fe386c1b 100644
--- a/Ada95/Makefile.in
+++ b/Ada95/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.21 2010/11/27 21:45:27 tom Exp $
+# $Id: Makefile.in,v 1.22 2015/08/05 23:15:41 tom Exp $
##############################################################################
-# Copyright (c) 1998-2003,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2010,2015 Free 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"), #
@@ -30,9 +30,9 @@
# Author: Juergen Pfeifer, 1996
#
# Version Control
-# $Revision: 1.21 $
+# $Revision: 1.22 $
#
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
diff --git a/Ada95/README b/Ada95/README
index be8425969de9..ea9ae80e761d 100644
--- a/Ada95/README
+++ b/Ada95/README
@@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
diff --git a/Ada95/aclocal.m4 b/Ada95/aclocal.m4
index fc9c0a86717b..057abc8c4fa7 100644
--- a/Ada95/aclocal.m4
+++ b/Ada95/aclocal.m4
@@ -1,5 +1,5 @@
dnl***************************************************************************
-dnl Copyright (c) 2010-2013,2014 Free Software Foundation, Inc. *
+dnl Copyright (c) 2010-2019,2020 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,18 +28,20 @@ dnl***************************************************************************
dnl
dnl Author: Thomas E. Dickey
dnl
-dnl $Id: aclocal.m4,v 1.78 2014/02/10 00:41:59 tom Exp $
+dnl $Id: aclocal.m4,v 1.151 2020/01/11 23:42:04 tom Exp $
dnl Macros used in NCURSES Ada95 auto-configuration script.
dnl
dnl These macros are maintained separately from NCURSES. The copyright on
dnl this file applies to the aggregation of macros and does not affect use of
dnl these macros in other applications.
dnl
-dnl See http://invisible-island.net/autoconf/ for additional information.
+dnl See these pages for additional information:
+dnl https://invisible-island.net/autoconf/
+dnl https://invisible-island.net/autoconf/my-autoconf.html
dnl
dnl ---------------------------------------------------------------------------
dnl ---------------------------------------------------------------------------
-dnl CF_ACVERSION_CHECK version: 4 updated: 2013/03/04 19:52:56
+dnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49
dnl ------------------
dnl Conditionally generate script according to whether we're using a given autoconf.
dnl
@@ -48,7 +50,7 @@ dnl $2 = code to use if AC_ACVERSION is at least as high as $1.
dnl $3 = code to use if AC_ACVERSION is older than $1.
define([CF_ACVERSION_CHECK],
[
-ifdef([AC_ACVERSION], ,[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])dnl
+ifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl
ifdef([m4_version_compare],
[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])],
[CF_ACVERSION_COMPARE(
@@ -97,7 +99,7 @@ AC_DEFUN([CF_ADD_ADAFLAGS],[
AC_SUBST(ADAFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ADD_CFLAGS version: 10 updated: 2010/05/26 05:38:42
+dnl CF_ADD_CFLAGS version: 13 updated: 2017/02/25 18:57:40
dnl -------------
dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
dnl The second parameter if given makes this macro verbose.
@@ -115,51 +117,51 @@ cf_new_extra_cppflags=
for cf_add_cflags in $1
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags)
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags)
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+ CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags)
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+ CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[[^"]]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -168,24 +170,24 @@ done
if test -n "$cf_new_cflags" ; then
ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
- CFLAGS="$CFLAGS $cf_new_cflags"
+ CF_APPEND_TEXT(CFLAGS,$cf_new_cflags)
fi
if test -n "$cf_new_cppflags" ; then
ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags)
fi
if test -n "$cf_new_extra_cppflags" ; then
ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)])
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags)
fi
AC_SUBST(EXTRA_CPPFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ADD_INCDIR version: 13 updated: 2010/05/26 16:44:57
+dnl CF_ADD_INCDIR version: 15 updated: 2018/06/20 20:23:13
dnl -------------
dnl Add an include-directory to $CPPFLAGS. Don't add /usr/include, since it's
dnl redundant. We don't normally need to add -I/usr/local/include for gcc,
@@ -216,7 +218,7 @@ if test -n "$1" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+ CF_APPEND_TEXT(CPPFLAGS,-I$cf_add_incdir)
AC_TRY_COMPILE([#include <stdio.h>],
[printf("Hello")],
[],
@@ -236,6 +238,8 @@ if test -n "$1" ; then
else
break
fi
+ else
+ break
fi
done
done
@@ -250,7 +254,7 @@ dnl $1 = library to add, without the "-l"
dnl $2 = variable to update (default $LIBS)
AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ADD_LIBDIR version: 9 updated: 2010/05/26 16:44:57
+dnl CF_ADD_LIBDIR version: 10 updated: 2015/04/18 08:56:57
dnl -------------
dnl Adds to the library-path
dnl
@@ -262,37 +266,55 @@ dnl
AC_DEFUN([CF_ADD_LIBDIR],
[
if test -n "$1" ; then
- for cf_add_libdir in $1
- do
- if test $cf_add_libdir = /usr/lib ; then
- :
- elif test -d $cf_add_libdir
- then
- cf_have_libdir=no
- if test -n "$LDFLAGS$LIBS" ; then
- # a loop is needed to ensure we can add subdirs of existing dirs
- for cf_test_libdir in $LDFLAGS $LIBS ; do
- if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
- cf_have_libdir=yes; break
- fi
- done
- fi
- if test "$cf_have_libdir" = no ; then
- CF_VERBOSE(adding $cf_add_libdir to library-path)
- ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])"
- fi
- fi
- done
+ for cf_add_libdir in $1
+ do
+ if test $cf_add_libdir = /usr/lib ; then
+ :
+ elif test -d $cf_add_libdir
+ then
+ cf_have_libdir=no
+ if test -n "$LDFLAGS$LIBS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_libdir in $LDFLAGS $LIBS ; do
+ if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
+ cf_have_libdir=yes; break
+ fi
+ done
+ fi
+ if test "$cf_have_libdir" = no ; then
+ CF_VERBOSE(adding $cf_add_libdir to library-path)
+ ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])"
+ fi
+ fi
+ done
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ADD_LIBS version: 1 updated: 2010/06/02 05:03:05
+dnl CF_ADD_LIBS version: 3 updated: 2019/11/02 16:47:33
dnl -----------
-dnl Add one or more libraries, used to enforce consistency.
+dnl Add one or more libraries, used to enforce consistency. Libraries are
+dnl prepended to an existing list, since their dependencies are assumed to
+dnl already exist in the list.
dnl
dnl $1 = libraries to add, with the "-l", etc.
dnl $2 = variable to update (default $LIBS)
-AC_DEFUN([CF_ADD_LIBS],[ifelse($2,,LIBS,[$2])="$1 [$]ifelse($2,,LIBS,[$2])"])dnl
+AC_DEFUN([CF_ADD_LIBS],[
+cf_add_libs="[$]ifelse($2,,LIBS,[$2])"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $1; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+ifelse($2,,LIBS,[$2])="$cf_add_libs"
+])dnl
dnl ---------------------------------------------------------------------------
dnl CF_ADD_SUBDIR_PATH version: 4 updated: 2013/10/08 17:47:05
dnl ------------------
@@ -316,13 +338,23 @@ ifelse([$5],NONE,,[(test -z "$5" || test x$5 = xNONE || test "x$4" != "x$5") &&]
}
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55
+dnl --------------
+dnl use this macro for appending text without introducing an extra blank at
+dnl the beginning
+define([CF_APPEND_TEXT],
+[
+ test -n "[$]$1" && $1="[$]$1 "
+ $1="[$]{$1}$2"
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
dnl --------------
dnl Allow user to disable a normally-on option.
AC_DEFUN([CF_ARG_DISABLE],
[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ARG_OPTION version: 4 updated: 2010/05/26 05:38:42
+dnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14
dnl -------------
dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus
dnl values.
@@ -335,25 +367,29 @@ dnl $4 = action if perform if option is default
dnl $5 = default option value (either 'yes' or 'no')
AC_DEFUN([CF_ARG_OPTION],
[AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes)
- if test "$enableval" != "$5" ; then
+ if test "$enableval" != "$5" ; then
ifelse([$3],,[ :]dnl
,[ $3]) ifelse([$4],,,[
- else
- $4])
- fi],[enableval=$5 ifelse([$4],,,[
- $4
+ else
+ $4])
+ fi],[enableval=$5 ifelse([$4],,,[
+ $4
])dnl
- ])])dnl
+])])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_AR_FLAGS version: 5 updated: 2010/05/20 20:24:29
+dnl CF_AR_FLAGS version: 6 updated: 2015/10/10 15:25:05
dnl -----------
dnl Check for suitable "ar" (archiver) options for updating an archive.
+dnl
+dnl In particular, handle some obsolete cases where the "-" might be omitted,
+dnl as well as a workaround for breakage of make's archive rules by the GNU
+dnl binutils "ar" program.
AC_DEFUN([CF_AR_FLAGS],[
AC_REQUIRE([CF_PROG_AR])
AC_CACHE_CHECK(for options to update archives, cf_cv_ar_flags,[
cf_cv_ar_flags=unknown
- for cf_ar_flags in -curv curv -crv crv -cqv cqv -rv rv
+ for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
do
# check if $ARFLAGS already contains this choice
@@ -398,7 +434,7 @@ fi
AC_SUBST(ARFLAGS)
])
dnl ---------------------------------------------------------------------------
-dnl CF_BUILD_CC version: 7 updated: 2012/10/06 15:31:55
+dnl CF_BUILD_CC version: 8 updated: 2018/01/04 20:31:04
dnl -----------
dnl If we're cross-compiling, allow the user to override the tools and their
dnl options. The configure script is oriented toward identifying the host
@@ -423,7 +459,7 @@ if test "$cross_compiling" = yes ; then
AC_ARG_WITH(build-cc,
[ --with-build-cc=XXX the build C compiler ($BUILD_CC)],
[BUILD_CC="$withval"],
- [AC_CHECK_PROGS(BUILD_CC, gcc cc cl)])
+ [AC_CHECK_PROGS(BUILD_CC, [gcc clang c99 c89 cc cl],none)])
AC_MSG_CHECKING(for native build C compiler)
AC_MSG_RESULT($BUILD_CC)
@@ -490,33 +526,71 @@ AC_SUBST(BUILD_EXEEXT)
AC_SUBST(BUILD_OBJEXT)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CC_ENV_FLAGS version: 1 updated: 2012/10/03 05:25:49
+dnl CF_CC_ENV_FLAGS version: 9 updated: 2018/07/29 18:03:26
dnl ---------------
dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
-dnl into CC. This will not help with broken scripts that wrap the compiler with
-dnl options, but eliminates a more common category of user confusion.
+dnl into CC. This will not help with broken scripts that wrap the compiler
+dnl with options, but eliminates a more common category of user confusion.
+dnl
+dnl In particular, it addresses the problem of being able to run the C
+dnl preprocessor in a consistent manner.
+dnl
+dnl Caveat: this also disallows blanks in the pathname for the compiler, but
+dnl the nuisance of having inconsistent settings for compiler and preprocessor
+dnl outweighs that limitation.
AC_DEFUN([CF_CC_ENV_FLAGS],
[
# This should have been defined by AC_PROG_CC
: ${CC:=cc}
+AC_MSG_CHECKING(\$CFLAGS variable)
+case "x$CFLAGS" in
+(*-[[IUD]]*)
+ AC_MSG_RESULT(broken)
+ AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options)
+ cf_flags="$CFLAGS"
+ CFLAGS=
+ for cf_arg in $cf_flags
+ do
+ CF_ADD_CFLAGS($cf_arg)
+ done
+ ;;
+(*)
+ AC_MSG_RESULT(ok)
+ ;;
+esac
+
AC_MSG_CHECKING(\$CC variable)
-case "$CC" in #(vi
-*[[\ \ ]]-[[IUD]]*)
+case "$CC" in
+(*[[\ \ ]]-*)
AC_MSG_RESULT(broken)
- AC_MSG_WARN(your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options)
+ AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
# humor him...
- cf_flags=`echo "$CC" | sed -e 's/^[[^ ]]*[[ ]]//'`
- CC=`echo "$CC" | sed -e 's/[[ ]].*//'`
- CF_ADD_CFLAGS($cf_flags)
+ cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
+ cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'`
+ CC="$cf_prog"
+ for cf_arg in $cf_flags
+ do
+ case "x$cf_arg" in
+ (x-[[IUDfgOW]]*)
+ CF_ADD_CFLAGS($cf_arg)
+ ;;
+ (*)
+ CC="$CC $cf_arg"
+ ;;
+ esac
+ done
+ CF_VERBOSE(resulting CC: '$CC')
+ CF_VERBOSE(resulting CFLAGS: '$CFLAGS')
+ CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS')
;;
-*)
+(*)
AC_MSG_RESULT(ok)
;;
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CFG_DEFAULTS version: 10 updated: 2013/09/07 13:54:05
+dnl CF_CFG_DEFAULTS version: 11 updated: 2015/04/17 21:13:04
dnl ---------------
dnl Determine the default configuration into which we'll install ncurses. This
dnl can be overridden by the user's command-line options. There's two items to
@@ -534,10 +608,10 @@ AC_MSG_CHECKING(for prefix)
if test "x$prefix" = "xNONE" ; then
case "$cf_cv_system_name" in
# non-vendor systems don't have a conflict
- openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*)
+ (openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*)
prefix=/usr
;;
- *) prefix=$ac_default_prefix
+ (*) prefix=$ac_default_prefix
;;
esac
fi
@@ -605,6 +679,22 @@ if test ".$system_name" != ".$cf_cv_system_name" ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_CHECK_GNAT_VERSION version: 2 updated: 2019/12/31 08:53:54
+dnl ---------------------
+AC_DEFUN([CF_CHECK_GNAT_VERSION],
+[
+AC_REQUIRE([CF_GNAT_VERSION])
+case $cf_cv_gnat_version in
+(3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|20[[0-9]][[0-9]])
+ cf_cv_prog_gnat_correct=yes
+ ;;
+(*)
+ AC_MSG_WARN(Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding.)
+ cf_cv_prog_gnat_correct=no
+ ;;
+esac
+])
+dnl ---------------------------------------------------------------------------
dnl CF_CLANG_COMPILER version: 2 updated: 2013/11/19 19:23:35
dnl -----------------
dnl Check if the given compiler is really clang. clang's C driver defines
@@ -638,7 +728,127 @@ cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_CURSES_HEADER version: 3 updated: 2011/05/01 19:47:45
+dnl CF_CONST_X_STRING version: 3 updated: 2020/01/11 18:39:22
+dnl -----------------
+dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
+dnl character-strings.
+dnl
+dnl It is ambiguous because the specification accommodated the pre-ANSI
+dnl compilers bundled by more than one vendor in lieu of providing a standard C
+dnl compiler other than by costly add-ons. Because of this, the specification
+dnl did not take into account the use of const for telling the compiler that
+dnl string literals would be in readonly memory.
+dnl
+dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to
+dnl let the compiler decide how to represent Xt's strings which were #define'd.
+dnl That does not solve the problem of using the block of Xt's strings which
+dnl are compiled into the library (and is less efficient than one might want).
+dnl
+dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both
+dnl when compiling the library and compiling using the library, to tell the
+dnl compiler that String is const.
+AC_DEFUN([CF_CONST_X_STRING],
+[
+AC_REQUIRE([AC_PATH_XTRA])
+
+CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING])
+
+AC_TRY_COMPILE(
+[
+#include <stdlib.h>
+#include <X11/Intrinsic.h>
+],
+[String foo = malloc(1)],[
+
+AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
+ AC_TRY_COMPILE(
+ [
+#define _CONST_X_STRING /* X11R7.8 (perhaps) */
+#undef XTSTRINGDEFINES /* X11R5 and later */
+#include <stdlib.h>
+#include <X11/Intrinsic.h>
+ ],[String foo = malloc(1); *foo = 0],[
+ cf_cv_const_x_string=no
+ ],[
+ cf_cv_const_x_string=yes
+ ])
+])
+
+CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING])
+
+case $cf_cv_const_x_string in
+(no)
+ CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES)
+ ;;
+(*)
+ CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING)
+ ;;
+esac
+
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_CONST_X_STRING version: 3 updated: 2020/01/11 18:39:22
+dnl -----------------
+dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
+dnl character-strings.
+dnl
+dnl It is ambiguous because the specification accommodated the pre-ANSI
+dnl compilers bundled by more than one vendor in lieu of providing a standard C
+dnl compiler other than by costly add-ons. Because of this, the specification
+dnl did not take into account the use of const for telling the compiler that
+dnl string literals would be in readonly memory.
+dnl
+dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to
+dnl let the compiler decide how to represent Xt's strings which were #define'd.
+dnl That does not solve the problem of using the block of Xt's strings which
+dnl are compiled into the library (and is less efficient than one might want).
+dnl
+dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both
+dnl when compiling the library and compiling using the library, to tell the
+dnl compiler that String is const.
+AC_DEFUN([CF_CONST_X_STRING],
+[
+AC_REQUIRE([AC_PATH_XTRA])
+
+CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING])
+
+AC_TRY_COMPILE(
+[
+#include <stdlib.h>
+#include <X11/Intrinsic.h>
+],
+[String foo = malloc(1)],[
+
+AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
+ AC_TRY_COMPILE(
+ [
+#define _CONST_X_STRING /* X11R7.8 (perhaps) */
+#undef XTSTRINGDEFINES /* X11R5 and later */
+#include <stdlib.h>
+#include <X11/Intrinsic.h>
+ ],[String foo = malloc(1); *foo = 0],[
+ cf_cv_const_x_string=no
+ ],[
+ cf_cv_const_x_string=yes
+ ])
+])
+
+CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING])
+
+case $cf_cv_const_x_string in
+(no)
+ CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES)
+ ;;
+(*)
+ CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING)
+ ;;
+esac
+
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_CURSES_HEADER version: 5 updated: 2015/04/23 20:35:30
dnl ----------------
dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common
dnl variations of ncurses' installs.
@@ -647,11 +857,9 @@ dnl $1 = ncurses when looking for ncurses, or is empty
AC_DEFUN([CF_CURSES_HEADER],[
AC_CACHE_CHECK(if we have identified curses headers,cf_cv_ncurses_header,[
cf_cv_ncurses_header=none
-for cf_header in ifelse($1,,,[ \
- $1/ncurses.h \
- $1/curses.h]) \
- ncurses.h \
- curses.h ifelse($1,,[ncurses/ncurses.h ncurses/curses.h])
+for cf_header in \
+ ncurses.h ifelse($1,,,[$1/ncurses.h]) \
+ curses.h ifelse($1,,,[$1/curses.h]) ifelse($1,,[ncurses/ncurses.h ncurses/curses.h])
do
AC_TRY_COMPILE([#include <${cf_header}>],
[initscr(); tgoto("?", 0,0)],
@@ -672,7 +880,7 @@ dnl ----------
dnl "dirname" is not portable, so we fake it with a shell script.
AC_DEFUN([CF_DIRNAME],[$1=`echo $2 | sed -e 's%/[[^/]]*$%%'`])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_DISABLE_ECHO version: 12 updated: 2012/10/06 16:30:28
+dnl CF_DISABLE_ECHO version: 13 updated: 2015/04/18 08:56:57
dnl ---------------
dnl You can always use "make -n" to see the actual options, but it's hard to
dnl pick out/analyze warning messages when the compile-line is long.
@@ -689,17 +897,17 @@ AC_MSG_CHECKING(if you want to see long compiling messages)
CF_ARG_DISABLE(echo,
[ --disable-echo do not display "compiling" commands],
[
- ECHO_LT='--silent'
- ECHO_LD='@echo linking [$]@;'
- RULE_CC='@echo compiling [$]<'
- SHOW_CC='@echo compiling [$]@'
- ECHO_CC='@'
+ ECHO_LT='--silent'
+ ECHO_LD='@echo linking [$]@;'
+ RULE_CC='@echo compiling [$]<'
+ SHOW_CC='@echo compiling [$]@'
+ ECHO_CC='@'
],[
- ECHO_LT=''
- ECHO_LD=''
- RULE_CC=''
- SHOW_CC=''
- ECHO_CC=''
+ ECHO_LT=''
+ ECHO_LD=''
+ RULE_CC=''
+ SHOW_CC=''
+ ECHO_CC=''
])
AC_MSG_RESULT($enableval)
AC_SUBST(ECHO_LT)
@@ -709,28 +917,15 @@ AC_SUBST(SHOW_CC)
AC_SUBST(ECHO_CC)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ENABLE_PC_FILES version: 9 updated: 2012/08/04 13:59:54
-dnl ------------------
-dnl This is the "--enable-pc-files" option, which is available if there is a
-dnl pkg-config configuration on the local machine.
-AC_DEFUN([CF_ENABLE_PC_FILES],[
-AC_REQUIRE([CF_PKG_CONFIG])
-AC_REQUIRE([CF_WITH_PKG_CONFIG_LIBDIR])
-
-if test "$PKG_CONFIG" != none ; then
- AC_MSG_CHECKING(if we should install .pc files for $PKG_CONFIG)
- AC_ARG_ENABLE(pc-files,
- [ --enable-pc-files generate and install .pc files for pkg-config],
- [enable_pc_files=$enableval],
- [enable_pc_files=no])
- AC_MSG_RESULT($enable_pc_files)
- if test "$enable_pc_files" != no
- then
- CF_PATH_SYNTAX(PKG_CONFIG_LIBDIR)
- fi
-else
- enable_pc_files=no
-fi
+dnl CF_DISABLE_GNAT_PROJECTS version: 1 updated: 2014/06/01 11:34:00
+dnl ------------------------
+AC_DEFUN([CF_DISABLE_GNAT_PROJECTS],[
+AC_MSG_CHECKING(if we want to use GNAT projects)
+CF_ARG_DISABLE(gnat-projects,
+ [ --disable-gnat-projects test: disable GNAT projects even if usable],
+ [enable_gnat_projects=no],
+ [enable_gnat_projects=yes])
+AC_MSG_RESULT($enable_gnat_projects)
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_FIND_LIBRARY version: 9 updated: 2008/03/23 14:48:54
@@ -783,7 +978,7 @@ fi
])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_FIND_LINKAGE version: 19 updated: 2010/05/29 16:31:02
+dnl CF_FIND_LINKAGE version: 21 updated: 2018/06/20 20:23:13
dnl ---------------
dnl Find a library (specifically the linkage used in the code fragment),
dnl searching for it if it is not already in the library path.
@@ -831,73 +1026,74 @@ AC_TRY_LINK([$1],[$2],[
cf_cv_find_linkage_$3=no
LIBS="$cf_save_LIBS"
- CF_VERBOSE(find linkage for $3 library)
- CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)])
-
- cf_save_CPPFLAGS="$CPPFLAGS"
- cf_test_CPPFLAGS="$CPPFLAGS"
-
- CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6]))
- for cf_cv_header_path_$3 in $cf_search
- do
- if test -d $cf_cv_header_path_$3 ; then
- CF_VERBOSE(... testing $cf_cv_header_path_$3)
- CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_$3"
- AC_TRY_COMPILE([$1],[$2],[
- CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3)
- cf_cv_find_linkage_$3=maybe
- cf_test_CPPFLAGS="$CPPFLAGS"
- break],[
- CPPFLAGS="$cf_save_CPPFLAGS"
- ])
- fi
- done
-
- if test "$cf_cv_find_linkage_$3" = maybe ; then
-
- CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)])
-
- cf_save_LIBS="$LIBS"
- cf_save_LDFLAGS="$LDFLAGS"
-
- ifelse([$6],,,[
- CPPFLAGS="$cf_test_CPPFLAGS"
- LIBS="-l$3 $7 $cf_save_LIBS"
- AC_TRY_LINK([$1],[$2],[
- CF_VERBOSE(... found $3 library in system)
- cf_cv_find_linkage_$3=yes])
- CPPFLAGS="$cf_save_CPPFLAGS"
- LIBS="$cf_save_LIBS"
- ])
-
- if test "$cf_cv_find_linkage_$3" != yes ; then
- CF_LIBRARY_PATH(cf_search,$3)
- for cf_cv_library_path_$3 in $cf_search
- do
- if test -d $cf_cv_library_path_$3 ; then
- CF_VERBOSE(... testing $cf_cv_library_path_$3)
- CPPFLAGS="$cf_test_CPPFLAGS"
- LIBS="-l$3 $7 $cf_save_LIBS"
- LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3"
- AC_TRY_LINK([$1],[$2],[
- CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3)
- cf_cv_find_linkage_$3=yes
- cf_cv_library_file_$3="-l$3"
- break],[
- CPPFLAGS="$cf_save_CPPFLAGS"
- LIBS="$cf_save_LIBS"
- LDFLAGS="$cf_save_LDFLAGS"
- ])
- fi
- done
- CPPFLAGS="$cf_save_CPPFLAGS"
- LDFLAGS="$cf_save_LDFLAGS"
- fi
-
- else
- cf_cv_find_linkage_$3=no
- fi
- ],$7)
+ CF_VERBOSE(find linkage for $3 library)
+ CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)])
+
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_test_CPPFLAGS="$CPPFLAGS"
+
+ CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6]))
+ for cf_cv_header_path_$3 in $cf_search
+ do
+ if test -d $cf_cv_header_path_$3 ; then
+ CF_VERBOSE(... testing $cf_cv_header_path_$3)
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ CF_APPEND_TEXT(CPPFLAGS,-I$cf_cv_header_path_$3)
+ AC_TRY_COMPILE([$1],[$2],[
+ CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3)
+ cf_cv_find_linkage_$3=maybe
+ cf_test_CPPFLAGS="$CPPFLAGS"
+ break],[
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ ])
+ fi
+ done
+
+ if test "$cf_cv_find_linkage_$3" = maybe ; then
+
+ CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)])
+
+ cf_save_LIBS="$LIBS"
+ cf_save_LDFLAGS="$LDFLAGS"
+
+ ifelse([$6],,,[
+ CPPFLAGS="$cf_test_CPPFLAGS"
+ LIBS="-l$3 $7 $cf_save_LIBS"
+ AC_TRY_LINK([$1],[$2],[
+ CF_VERBOSE(... found $3 library in system)
+ cf_cv_find_linkage_$3=yes])
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ ])
+
+ if test "$cf_cv_find_linkage_$3" != yes ; then
+ CF_LIBRARY_PATH(cf_search,$3)
+ for cf_cv_library_path_$3 in $cf_search
+ do
+ if test -d $cf_cv_library_path_$3 ; then
+ CF_VERBOSE(... testing $cf_cv_library_path_$3)
+ CPPFLAGS="$cf_test_CPPFLAGS"
+ LIBS="-l$3 $7 $cf_save_LIBS"
+ LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3"
+ AC_TRY_LINK([$1],[$2],[
+ CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3)
+ cf_cv_find_linkage_$3=yes
+ cf_cv_library_file_$3="-l$3"
+ break],[
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ LDFLAGS="$cf_save_LDFLAGS"
+ ])
+ fi
+ done
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LDFLAGS="$cf_save_LDFLAGS"
+ fi
+
+ else
+ cf_cv_find_linkage_$3=no
+ fi
+ ],$7)
])
LIBS="$cf_save_LIBS"
@@ -913,18 +1109,18 @@ ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5])
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_FIXUP_ADAFLAGS version: 1 updated: 2012/03/31 18:48:10
+dnl CF_FIXUP_ADAFLAGS version: 2 updated: 2015/04/17 21:13:04
dnl -----------------
dnl make ADAFLAGS consistent with CFLAGS
AC_DEFUN([CF_FIXUP_ADAFLAGS],[
AC_MSG_CHECKING(optimization options for ADAFLAGS)
case "$CFLAGS" in
- *-g*)
+ (*-g*)
CF_ADD_ADAFLAGS(-g)
;;
esac
case "$CFLAGS" in
- *-O*)
+ (*-O*)
cf_O_flag=`echo "$CFLAGS" |sed -e 's/^.*-O/-O/' -e 's/[[ ]].*//'`
CF_ADD_ADAFLAGS($cf_O_flag)
;;
@@ -932,7 +1128,7 @@ AC_DEFUN([CF_FIXUP_ADAFLAGS],[
AC_MSG_RESULT($ADAFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GCC_ATTRIBUTES version: 16 updated: 2012/10/02 20:55:03
+dnl CF_GCC_ATTRIBUTES version: 17 updated: 2015/04/12 15:39:00
dnl -----------------
dnl Test for availability of useful gcc __attribute__ directives to quiet
dnl compiler warnings. Though useful, not all are supported -- and contrary
@@ -986,20 +1182,20 @@ EOF
cf_directive="__attribute__(($cf_attribute))"
echo "checking for $CC $cf_directive" 1>&AC_FD_CC
- case $cf_attribute in #(vi
- printf) #(vi
+ case $cf_attribute in
+ (printf)
cf_printf_attribute=yes
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE 1
EOF
;;
- scanf) #(vi
+ (scanf)
cf_scanf_attribute=yes
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE 1
EOF
;;
- *) #(vi
+ (*)
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE $cf_directive
EOF
@@ -1009,11 +1205,11 @@ EOF
if AC_TRY_EVAL(ac_compile); then
test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
cat conftest.h >>confdefs.h
- case $cf_attribute in #(vi
- noreturn) #(vi
+ case $cf_attribute in
+ (noreturn)
AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc])
;;
- printf) #(vi
+ (printf)
cf_value='/* nothing */'
if test "$cf_printf_attribute" != no ; then
cf_value='__attribute__((format(printf,fmt,var)))'
@@ -1021,7 +1217,7 @@ EOF
fi
AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc])
;;
- scanf) #(vi
+ (scanf)
cf_value='/* nothing */'
if test "$cf_scanf_attribute" != no ; then
cf_value='__attribute__((format(scanf,fmt,var)))'
@@ -1029,7 +1225,7 @@ EOF
fi
AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc])
;;
- unused) #(vi
+ (unused)
AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc])
;;
esac
@@ -1042,9 +1238,10 @@ rm -rf conftest*
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GCC_VERSION version: 7 updated: 2012/10/18 06:46:33
+dnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36
dnl --------------
-dnl Find version of gcc
+dnl Find version of gcc, and (because icc/clang pretend to be gcc without being
+dnl compatible), attempt to determine if icc/clang is actually used.
AC_DEFUN([CF_GCC_VERSION],[
AC_REQUIRE([AC_PROG_CC])
GCC_VERSION=none
@@ -1054,14 +1251,17 @@ if test "$GCC" = yes ; then
test -z "$GCC_VERSION" && GCC_VERSION=unknown
AC_MSG_RESULT($GCC_VERSION)
fi
+CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
+CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GCC_WARNINGS version: 31 updated: 2013/11/19 19:23:35
+dnl CF_GCC_WARNINGS version: 37 updated: 2020/01/05 20:04:12
dnl ---------------
dnl Check if the compiler supports useful warning options. There's a few that
dnl we don't use, simply because they're too noisy:
dnl
dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
+dnl -Winline (usually not worthwhile)
dnl -Wredundant-decls (system headers make this too noisy)
dnl -Wtraditional (combines too many unrelated messages, only a few useful)
dnl -Wwrite-strings (too noisy, but should review occasionally). This
@@ -1078,14 +1278,11 @@ dnl
AC_DEFUN([CF_GCC_WARNINGS],
[
AC_REQUIRE([CF_GCC_VERSION])
-CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
-CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
-
+if test "x$have_x" = xyes; then CF_CONST_X_STRING fi
cat > conftest.$ac_ext <<EOF
#line __oline__ "${as_me:-configure}"
int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
EOF
-
if test "$INTEL_COMPILER" = yes
then
# The "-wdXXX" options suppress warnings:
@@ -1120,8 +1317,7 @@ then
fi
done
CFLAGS="$cf_save_CFLAGS"
-
-elif test "$GCC" = yes
+elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
then
AC_CHECKING([for $CC warning options])
cf_save_CFLAGS="$CFLAGS"
@@ -1143,25 +1339,22 @@ then
Wpointer-arith \
Wshadow \
Wstrict-prototypes \
- Wundef $cf_gcc_warnings $cf_warn_CONST $1
+ Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1
do
CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
if AC_TRY_EVAL(ac_compile); then
test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
- case $cf_opt in #(vi
- Wcast-qual) #(vi
- CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES"
- ;;
- Winline) #(vi
+ case $cf_opt in
+ (Winline)
case $GCC_VERSION in
- [[34]].*)
+ ([[34]].*)
CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
continue;;
esac
;;
- Wpointer-arith) #(vi
+ (Wpointer-arith)
case $GCC_VERSION in
- [[12]].*)
+ ([[12]].*)
CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
continue;;
esac
@@ -1177,18 +1370,29 @@ rm -rf conftest*
AC_SUBST(EXTRA_CFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GNAT_GENERICS version: 2 updated: 2011/03/23 20:24:41
+dnl CF_GNATPREP_OPT_T version: 1 updated: 2014/08/02 18:37:25
+dnl -----------------
+AC_DEFUN([CF_GNATPREP_OPT_T],[
+AC_CACHE_CHECK(if GNATPREP supports -T option,cf_cv_gnatprep_opt_t,[
+cf_cv_gnatprep_opt_t=no
+gnatprep -T 2>/dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes
+])
+test "$cf_cv_gnatprep_opt_t" = yes && GNATPREP_OPTS="-T $GNATPREP_OPTS"
+AC_SUBST(GNATPREP_OPTS)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_GNAT_GENERICS version: 4 updated: 2019/12/31 08:53:54
dnl ----------------
AC_DEFUN([CF_GNAT_GENERICS],
[
AC_REQUIRE([CF_GNAT_VERSION])
AC_MSG_CHECKING(if GNAT supports generics)
-case $cf_gnat_version in #(vi
-3.[[1-9]]*|[[4-9]].*) #(vi
+case $cf_cv_gnat_version in
+(3.[[1-9]]*|[[4-9]].*)
cf_gnat_generics=yes
;;
-*)
+(*)
cf_gnat_generics=no
;;
esac
@@ -1207,59 +1411,34 @@ AC_SUBST(cf_compile_generics)
AC_SUBST(cf_generic_objects)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GNAT_PRAGMA_UNREF version: 1 updated: 2010/06/19 15:22:18
-dnl --------------------
-dnl Check if the gnat pragma "Unreferenced" works.
-AC_DEFUN([CF_GNAT_PRAGMA_UNREF],[
-AC_CACHE_CHECK(if GNAT pragma Unreferenced works,cf_cv_pragma_unreferenced,[
-CF_GNAT_TRY_LINK([procedure conftest;],
-[with Text_IO;
-with GNAT.OS_Lib;
-procedure conftest is
- test : Integer;
- pragma Unreferenced (test);
-begin
- test := 1;
- Text_IO.Put ("Hello World");
- Text_IO.New_Line;
- GNAT.OS_Lib.OS_Exit (0);
-end conftest;],
- [cf_cv_pragma_unreferenced=yes],
- [cf_cv_pragma_unreferenced=no])])
-
-# if the pragma is supported, use it (needed in the Trace code).
-if test $cf_cv_pragma_unreferenced = yes ; then
- PRAGMA_UNREF=TRUE
-else
- PRAGMA_UNREF=FALSE
-fi
-AC_SUBST(PRAGMA_UNREF)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_GNAT_PROJECTS version: 4 updated: 2013/09/07 14:05:46
+dnl CF_GNAT_PROJECTS version: 10 updated: 2019/12/31 08:53:54
dnl ----------------
dnl GNAT projects are configured with ".gpr" project files.
dnl GNAT libraries are a further development, using the project feature.
AC_DEFUN([CF_GNAT_PROJECTS],
[
AC_REQUIRE([CF_GNAT_VERSION])
+AC_REQUIRE([CF_DISABLE_GNAT_PROJECTS])
cf_gnat_libraries=no
cf_gnat_projects=no
+if test "$enable_gnat_projects" != no ; then
AC_MSG_CHECKING(if GNAT supports project files)
-case $cf_gnat_version in #(vi
-3.[[0-9]]*) #(vi
+case $cf_cv_gnat_version in
+(3.[[0-9]]*)
;;
-*)
- case $cf_cv_system_name in #(vi
- cygwin*|msys*) #(vi
+(*)
+ case $cf_cv_system_name in
+ (cygwin*|msys*)
;;
- *)
- mkdir conftest.src conftest.bin conftest.lib
- cd conftest.src
+ (*)
rm -rf conftest* *~conftest*
- cat >>library.gpr <<CF_EOF
+ if mkdir conftest.src conftest.bin conftest.lib
+ then
+ cd conftest.src
+ rm -rf conftest* *~conftest*
+ cat >>library.gpr <<CF_EOF
project Library is
Kind := External ("LIB_KIND");
for Library_Name use "ConfTest";
@@ -1270,22 +1449,14 @@ project Library is
for Library_Dir use External("BUILD_DIR");
Source_Dir := External ("SOURCE_DIR");
for Source_Dirs use (Source_Dir);
- package Compiler is
- for Default_Switches ("Ada") use
- ("-g",
- "-O2",
- "-gnatafno",
- "-gnatVa", -- All validity checks
- "-gnatwa"); -- Activate all optional errors
- end Compiler;
end Library;
CF_EOF
- cat >>confpackage.ads <<CF_EOF
+ cat >>confpackage.ads <<CF_EOF
package ConfPackage is
procedure conftest;
end ConfPackage;
CF_EOF
- cat >>confpackage.adb <<CF_EOF
+ cat >>confpackage.adb <<CF_EOF
with Text_IO;
package body ConfPackage is
procedure conftest is
@@ -1295,16 +1466,17 @@ package body ConfPackage is
end conftest;
end ConfPackage;
CF_EOF
- if ( $cf_ada_make $ADAFLAGS \
- -Plibrary.gpr \
- -XBUILD_DIR=`cd ../conftest.bin;pwd` \
- -XLIBRARY_DIR=`cd ../conftest.lib;pwd` \
- -XSOURCE_DIR=`pwd` \
- -XSONAME=libConfTest.so.1 \
- -XLIB_KIND=static 1>&AC_FD_CC 2>&1 ) ; then
- cf_gnat_projects=yes
+ if ( $cf_ada_make $ADAFLAGS \
+ -Plibrary.gpr \
+ -XBUILD_DIR=`cd ../conftest.bin;pwd` \
+ -XLIBRARY_DIR=`cd ../conftest.lib;pwd` \
+ -XSOURCE_DIR=`pwd` \
+ -XSONAME=libConfTest.so.1 \
+ -XLIB_KIND=static 1>&AC_FD_CC 2>&1 ) ; then
+ cf_gnat_projects=yes
+ fi
+ cd ..
fi
- cd ..
if test -f conftest.lib/confpackage.ali
then
cf_gnat_libraries=yes
@@ -1315,6 +1487,7 @@ CF_EOF
;;
esac
AC_MSG_RESULT($cf_gnat_projects)
+fi # enable_gnat_projects
if test $cf_gnat_projects = yes
then
@@ -1448,29 +1621,23 @@ fi
rm -rf conftest* *~conftest*
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GNAT_VERSION version: 18 updated: 2012/01/21 19:28:10
+dnl CF_GNAT_VERSION version: 22 updated: 2019/12/31 08:53:54
dnl ---------------
-dnl Verify version of GNAT.
+dnl $1 = cache variable to update
+dnl $2 = program name
+dnl Verify version of GNAT or related tool
AC_DEFUN([CF_GNAT_VERSION],
[
-AC_MSG_CHECKING(for gnat version)
-cf_gnat_version=`${cf_ada_make:-gnatmake} -v 2>&1 | \
+AC_CACHE_CHECK(for ifelse($2,,gnat,$2) version, cf_cv_gnat_version,[
+cf_cv_gnat_version=`ifelse($2,,${cf_ada_make:-gnatmake},$2) --version 2>&1 | \
grep '[[0-9]].[[0-9]][[0-9]]*' |\
- sed -e '2,$d' -e 's/[[^0-9 \.]]//g' -e 's/^[[ ]]*//' -e 's/ .*//'`
-AC_MSG_RESULT($cf_gnat_version)
-
-case $cf_gnat_version in #(vi
-3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|20[[0-9]][[0-9]]) #(vi
- cf_cv_prog_gnat_correct=yes
- ;;
-*)
- AC_MSG_WARN(Unsupported GNAT version $cf_gnat_version. We require 3.11 or better. Disabling Ada95 binding.)
- cf_cv_prog_gnat_correct=no
- ;;
-esac
+ sed -e '2,$d' -e 's/[[^0-9 \.]]//g' -e 's/^[[ ]]*//' -e 's/ .*//'`
])
+test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no
+ifelse($1,,,[eval $1=$cf_cv_gnat_version; unset cf_cv_gnat_version])
+])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GNU_SOURCE version: 6 updated: 2005/07/09 13:23:07
+dnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41
dnl -------------
dnl Check if we must define _GNU_SOURCE to get a reasonable value for
dnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect
@@ -1478,29 +1645,110 @@ dnl (or misfeature) of glibc2, which breaks portability of many applications,
dnl since it is interwoven with GNU extensions.
dnl
dnl Well, yes we could work around it...
+dnl
+dnl Parameters:
+dnl $1 is the nominal value for _XOPEN_SOURCE
AC_DEFUN([CF_GNU_SOURCE],
[
-AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
+cf_gnu_xopen_source=ifelse($1,,500,$1)
+
+AC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[
AC_TRY_COMPILE([#include <sys/types.h>],[
-#ifndef _XOPEN_SOURCE
-make an error
-#endif],
- [cf_cv_gnu_source=no],
- [cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
- AC_TRY_COMPILE([#include <sys/types.h>],[
-#ifdef _XOPEN_SOURCE
-make an error
-#endif],
- [cf_cv_gnu_source=no],
- [cf_cv_gnu_source=yes])
- CPPFLAGS="$cf_save"
- ])
+ #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0
+ return 0;
+ #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0
+ return 0;
+ #else
+ # error not GNU C library
+ #endif],
+ [cf_cv_gnu_library=yes],
+ [cf_cv_gnu_library=no])
])
-test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+
+if test x$cf_cv_gnu_library = xyes; then
+
+ # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
+ # was changed to help a little. newlib incorporated the change about 4
+ # years later.
+ AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[
+ cf_save="$CPPFLAGS"
+ CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2)
+ return 0;
+ #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3)
+ return 0;
+ #else
+ # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old
+ #endif],
+ [cf_cv_gnu_library_219=yes],
+ [cf_cv_gnu_library_219=no])
+ CPPFLAGS="$cf_save"
+ ])
+
+ if test "x$cf_cv_gnu_library_219" = xyes; then
+ cf_save="$CPPFLAGS"
+ AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[
+ CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source)
+ AC_TRY_COMPILE([
+ #include <limits.h>
+ #include <sys/types.h>
+ ],[
+ #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1)
+ return 0;
+ #else
+ # error GNU C library is too old
+ #endif],
+ [cf_cv_gnu_dftsrc_219=yes],
+ [cf_cv_gnu_dftsrc_219=no])
+ ])
+ test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
+ else
+ cf_cv_gnu_dftsrc_219=maybe
+ fi
+
+ if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
+
+ AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+ #ifndef _XOPEN_SOURCE
+ #error expected _XOPEN_SOURCE to be defined
+ #endif],
+ [cf_cv_gnu_source=no],
+ [cf_save="$CPPFLAGS"
+ CF_ADD_CFLAGS(-D_GNU_SOURCE)
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+ #ifdef _XOPEN_SOURCE
+ #error expected _XOPEN_SOURCE to be undefined
+ #endif],
+ [cf_cv_gnu_source=no],
+ [cf_cv_gnu_source=yes])
+ CPPFLAGS="$cf_save"
+ ])
+ ])
+
+ if test "$cf_cv_gnu_source" = yes
+ then
+ AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[
+ CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE)
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+ #ifdef _DEFAULT_SOURCE
+ #error expected _DEFAULT_SOURCE to be undefined
+ #endif],
+ [cf_cv_default_source=no],
+ [cf_cv_default_source=yes])
+ ])
+ if test "$cf_cv_default_source" = yes
+ then
+ CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
+ fi
+ fi
+ fi
+
+fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_HEADER_PATH version: 12 updated: 2010/05/05 05:22:40
+dnl CF_HEADER_PATH version: 13 updated: 2015/04/15 19:08:48
dnl --------------
dnl Construct a search-list of directories for a nonstandard header-file
dnl
@@ -1516,8 +1764,8 @@ cf_header_path_list=""
if test -n "${CFLAGS}${CPPFLAGS}" ; then
for cf_header_path in $CPPFLAGS $CFLAGS
do
- case $cf_header_path in #(vi
- -I*)
+ case $cf_header_path in
+ (-I*)
cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE)
cf_header_path_list="$cf_header_path_list [$]$1"
@@ -1546,40 +1794,126 @@ test -d "$oldincludedir" && {
$1="[$]$1 $cf_header_path_list"
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_HELP_MESSAGE version: 3 updated: 1998/01/14 10:56:23
+dnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54
dnl ---------------
dnl Insert text into the help-message, for readability, from AC_ARG_WITH.
AC_DEFUN([CF_HELP_MESSAGE],
-[AC_DIVERT_HELP([$1])dnl
+[CF_ACVERSION_CHECK(2.53,[],[
+AC_DIVERT_HELP($1)])dnl
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_INCLUDE_DIRS version: 8 updated: 2013/10/12 16:45:09
+dnl CF_INCLUDE_DIRS version: 10 updated: 2014/09/19 20:58:42
dnl ---------------
dnl Construct the list of include-options according to whether we're building
-dnl in the source directory or using '--srcdir=DIR' option. If we're building
-dnl with gcc, don't append the includedir if it happens to be /usr/include,
-dnl since that usually breaks gcc's shadow-includes.
+dnl in the source directory or using '--srcdir=DIR' option.
AC_DEFUN([CF_INCLUDE_DIRS],
[
-if test "$GCC" != yes; then
- CPPFLAGS="-I\${includedir} $CPPFLAGS"
-elif test "$includedir" != "/usr/include"; then
- if test "$includedir" = '${prefix}/include' ; then
- if test x$prefix != x/usr ; then
- CPPFLAGS="-I\${includedir} $CPPFLAGS"
- fi
- else
- CPPFLAGS="-I\${includedir} $CPPFLAGS"
- fi
-fi
if test "$srcdir" != "."; then
CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS"
fi
-CPPFLAGS="-I. -I../include $CPPFLAGS"
+CPPFLAGS="-I../include $CPPFLAGS"
+if test "$srcdir" != "."; then
+ CPPFLAGS="-I\${srcdir} $CPPFLAGS"
+fi
+CPPFLAGS="-I. $CPPFLAGS"
AC_SUBST(CPPFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_INTEL_COMPILER version: 5 updated: 2013/02/10 10:41:05
+dnl CF_INSTALL_OPTS version: 2 updated: 2018/08/18 12:19:21
+dnl ---------------
+dnl prompt for/fill-in useful install-program options
+AC_DEFUN([CF_INSTALL_OPTS],
+[
+CF_INSTALL_OPT_S
+CF_INSTALL_OPT_P
+CF_INSTALL_OPT_O
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INSTALL_OPT_O version: 2 updated: 2015/05/15 19:45:35
+dnl ----------------
+dnl Almost all "install" programs default to the current user's ownership.
+dnl Almost - MINIX is an exception.
+AC_DEFUN([CF_INSTALL_OPT_O],
+[
+AC_MSG_CHECKING(if install needs to be told about ownership)
+case `$ac_config_guess` in
+(*minix)
+ with_install_o=yes
+ ;;
+(*)
+ with_install_o=no
+ ;;
+esac
+
+AC_MSG_RESULT($with_install_o)
+if test "x$with_install_o" = xyes
+then
+ INSTALL_OPT_O=`id root|sed -e 's/uid=[[0-9]]*(/ -o /' -e 's/gid=[[0-9]]*(/ -g /' -e 's/ [[^=[:space:]]][[^=[:space:]]]*=.*/ /' -e 's/)//g'`
+else
+ INSTALL_OPT_O=
+fi
+
+AC_SUBST(INSTALL_OPT_O)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INSTALL_OPT_P version: 1 updated: 2018/08/18 12:19:21
+dnl ----------------
+dnl Some install-programs accept a "-p" option to preserve file modification
+dnl timestamps. That can be useful as an install option, as well as a way to
+dnl avoid the need for ranlib after copying a static archive.
+AC_DEFUN([CF_INSTALL_OPT_P],
+[
+: ${INSTALL:=install}
+AC_CACHE_CHECK(if install accepts -p option, cf_cv_install_p,[
+ rm -rf conftest*
+ date >conftest.in
+ mkdir conftest.out
+ sleep 3
+ if $INSTALL -p conftest.in conftest.out 2>/dev/null
+ then
+ if test -f conftest.out/conftest.in
+ then
+ test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \
+ test conftest.out/conftest.in -nt conftest.in 2>conftest.err
+ if test -s conftest.err
+ then
+ cf_cv_install_p=no
+ else
+ cf_cv_install_p=yes
+ fi
+ else
+ cf_cv_install_p=no
+ fi
+ else
+ cf_cv_install_p=no
+ fi
+ rm -rf conftest*
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INSTALL_OPT_S version: 2 updated: 2018/08/18 12:19:21
+dnl ----------------
+dnl By default, we should strip executables which are installed, but leave the
+dnl ability to suppress that for unit-testing.
+AC_DEFUN([CF_INSTALL_OPT_S],
+[
+AC_MSG_CHECKING(if you want to install stripped executables)
+CF_ARG_DISABLE(stripping,
+ [ --disable-stripping do not strip (debug info) installed executables],
+ [with_stripping=no],
+ [with_stripping=yes])
+AC_MSG_RESULT($with_stripping)
+
+if test "$with_stripping" = yes
+then
+ INSTALL_OPT_S="-s"
+else
+ INSTALL_OPT_S=
+fi
+AC_SUBST(INSTALL_OPT_S)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INTEL_COMPILER version: 7 updated: 2015/04/12 15:39:00
dnl -----------------
dnl Check if the given compiler is really the Intel compiler for Linux. It
dnl tries to imitate gcc, but does not return an error when it finds a mismatch
@@ -1598,7 +1932,7 @@ ifelse([$2],,INTEL_COMPILER,[$2])=no
if test "$ifelse([$1],,[$1],GCC)" = yes ; then
case $host_os in
- linux*|gnu*)
+ (linux*|gnu*)
AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler)
cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc"
@@ -1608,7 +1942,7 @@ if test "$ifelse([$1],,[$1],GCC)" = yes ; then
make an error
#endif
],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
-cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
+cf_save_CFLAGS="$cf_save_CFLAGS -we147"
],[])
ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
@@ -1617,13 +1951,13 @@ cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LARGEFILE version: 8 updated: 2012/10/06 08:57:51
+dnl CF_LARGEFILE version: 11 updated: 2018/06/20 20:23:13
dnl ------------
dnl Add checks for large file support.
AC_DEFUN([CF_LARGEFILE],[
ifdef([AC_FUNC_FSEEKO],[
- AC_SYS_LARGEFILE
- if test "$enable_largefile" != no ; then
+ AC_SYS_LARGEFILE
+ if test "$enable_largefile" != no ; then
AC_FUNC_FSEEKO
# Normally we would collect these definitions in the config.h,
@@ -1633,12 +1967,22 @@ ifdef([AC_FUNC_FSEEKO],[
# header files by themselves before looking at the body files it is
# told to compile. For ncurses, those header files do not include
# the config.h
- test "$ac_cv_sys_large_files" != no && CPPFLAGS="$CPPFLAGS -D_LARGE_FILES "
- test "$ac_cv_sys_largefile_source" != no && CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE "
- test "$ac_cv_sys_file_offset_bits" != no && CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits "
+ if test "$ac_cv_sys_large_files" != no
+ then
+ CF_APPEND_TEXT(CPPFLAGS,-D_LARGE_FILES)
+ fi
+ if test "$ac_cv_sys_largefile_source" != no
+ then
+ CF_APPEND_TEXT(CPPFLAGS,-D_LARGEFILE_SOURCE)
+ fi
+ if test "$ac_cv_sys_file_offset_bits" != no
+ then
+ CF_APPEND_TEXT(CPPFLAGS,-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits)
+ fi
AC_CACHE_CHECK(whether to use struct dirent64, cf_cv_struct_dirent64,[
AC_TRY_COMPILE([
+#pragma GCC diagnostic error "-Wincompatible-pointer-types"
#include <sys/types.h>
#include <dirent.h>
],[
@@ -1652,11 +1996,11 @@ ifdef([AC_FUNC_FSEEKO],[
[cf_cv_struct_dirent64=no])
])
test "$cf_cv_struct_dirent64" = yes && AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Define to 1 if we have struct dirent64])
- fi
+ fi
])
])
dnl ---------------------------------------------------------------------------
-dnl CF_LD_RPATH_OPT version: 5 updated: 2011/07/17 14:48:41
+dnl CF_LD_RPATH_OPT version: 8 updated: 2018/08/18 16:36:35
dnl ---------------
dnl For the given system and compiler, find the compiler flags to pass to the
dnl loader to use the "rpath" feature.
@@ -1665,52 +2009,55 @@ AC_DEFUN([CF_LD_RPATH_OPT],
AC_REQUIRE([CF_CHECK_CACHE])
LD_RPATH_OPT=
-AC_MSG_CHECKING(for an rpath option)
-case $cf_cv_system_name in #(vi
-irix*) #(vi
- if test "$GCC" = yes; then
+if test "x$cf_cv_enable_rpath" != xno
+then
+ AC_MSG_CHECKING(for an rpath option)
+ case $cf_cv_system_name in
+ (irix*)
+ if test "$GCC" = yes; then
+ LD_RPATH_OPT="-Wl,-rpath,"
+ else
+ LD_RPATH_OPT="-rpath "
+ fi
+ ;;
+ (linux*|gnu*|k*bsd*-gnu|freebsd*)
LD_RPATH_OPT="-Wl,-rpath,"
- else
+ ;;
+ (openbsd[[2-9]].*|mirbsd*)
+ LD_RPATH_OPT="-Wl,-rpath,"
+ ;;
+ (dragonfly*)
LD_RPATH_OPT="-rpath "
- fi
- ;;
-linux*|gnu*|k*bsd*-gnu) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-openbsd[[2-9]].*|mirbsd*) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-dragonfly*|freebsd*) #(vi
- LD_RPATH_OPT="-rpath "
- ;;
-netbsd*) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-osf*|mls+*) #(vi
- LD_RPATH_OPT="-rpath "
- ;;
-solaris2*) #(vi
- LD_RPATH_OPT="-R"
- ;;
-*)
- ;;
-esac
-AC_MSG_RESULT($LD_RPATH_OPT)
+ ;;
+ (netbsd*)
+ LD_RPATH_OPT="-Wl,-rpath,"
+ ;;
+ (osf*|mls+*)
+ LD_RPATH_OPT="-rpath "
+ ;;
+ (solaris2*)
+ LD_RPATH_OPT="-R"
+ ;;
+ (*)
+ ;;
+ esac
+ AC_MSG_RESULT($LD_RPATH_OPT)
-case "x$LD_RPATH_OPT" in #(vi
-x-R*)
- AC_MSG_CHECKING(if we need a space after rpath option)
- cf_save_LIBS="$LIBS"
- CF_ADD_LIBS(${LD_RPATH_OPT}$libdir)
- AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes)
- LIBS="$cf_save_LIBS"
- AC_MSG_RESULT($cf_rpath_space)
- test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
- ;;
-esac
+ case "x$LD_RPATH_OPT" in
+ (x-R*)
+ AC_MSG_CHECKING(if we need a space after rpath option)
+ cf_save_LIBS="$LIBS"
+ CF_ADD_LIBS(${LD_RPATH_OPT}$libdir)
+ AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes)
+ LIBS="$cf_save_LIBS"
+ AC_MSG_RESULT($cf_rpath_space)
+ test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
+ ;;
+ esac
+fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LIBRARY_PATH version: 9 updated: 2010/03/28 12:52:50
+dnl CF_LIBRARY_PATH version: 10 updated: 2015/04/15 19:08:48
dnl ---------------
dnl Construct a search-list of directories for a nonstandard library-file
dnl
@@ -1724,8 +2071,8 @@ cf_library_path_list=""
if test -n "${LDFLAGS}${LIBS}" ; then
for cf_library_path in $LDFLAGS $LIBS
do
- case $cf_library_path in #(vi
- -L*)
+ case $cf_library_path in
+ (-L*)
cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE)
cf_library_path_list="$cf_library_path_list [$]$1"
@@ -1739,24 +2086,28 @@ CF_SUBDIR_PATH($1,$2,lib)
$1="$cf_library_path_list [$]$1"
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LIB_PREFIX version: 9 updated: 2012/01/21 19:28:10
+dnl CF_LIB_PREFIX version: 12 updated: 2015/10/17 19:03:33
dnl -------------
dnl Compute the library-prefix for the given host system
dnl $1 = variable to set
define([CF_LIB_PREFIX],
[
- case $cf_cv_system_name in #(vi
- OS/2*|os2*) #(vi
- LIB_PREFIX=''
- ;;
- *) LIB_PREFIX='lib'
- ;;
+ case $cf_cv_system_name in
+ (OS/2*|os2*)
+ if test "$DFT_LWR_MODEL" = libtool; then
+ LIB_PREFIX='lib'
+ else
+ LIB_PREFIX=''
+ fi
+ ;;
+ (*) LIB_PREFIX='lib'
+ ;;
esac
ifelse($1,,,[$1=$LIB_PREFIX])
AC_SUBST(LIB_PREFIX)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LIB_SUFFIX version: 22 updated: 2013/09/07 13:54:05
+dnl CF_LIB_SUFFIX version: 25 updated: 2015/04/17 21:13:04
dnl -------------
dnl Compute the library file-suffix from the given model name
dnl $1 = model name
@@ -1765,61 +2116,64 @@ dnl $3 = dependency variable to set (actual filename)
dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
AC_DEFUN([CF_LIB_SUFFIX],
[
- case X$1 in #(vi
- Xlibtool) #(vi
+ case X$1 in
+ (Xlibtool)
$2='.la'
$3=[$]$2
;;
- Xdebug) #(vi
+ (Xdebug)
$2='_g.a'
$3=[$]$2
;;
- Xprofile) #(vi
+ (Xprofile)
$2='_p.a'
$3=[$]$2
;;
- Xshared) #(vi
+ (Xshared)
case $cf_cv_system_name in
- aix[[5-7]]*) #(vi
- $2='.a'
+ (aix[[5-7]]*)
+ $2='.so'
$3=[$]$2
;;
- cygwin*|msys*|mingw*) #(vi
+ (cygwin*|msys*|mingw*)
$2='.dll'
$3='.dll.a'
;;
- darwin*) #(vi
+ (darwin*)
$2='.dylib'
$3=[$]$2
;;
- hpux*) #(vi
+ (hpux*)
case $target in
- ia64*) #(vi
+ (ia64*)
$2='.so'
$3=[$]$2
;;
- *) #(vi
+ (*)
$2='.sl'
$3=[$]$2
;;
esac
;;
- *) #(vi
+ (*)
$2='.so'
$3=[$]$2
;;
esac
;;
- *)
+ (*)
$2='.a'
$3=[$]$2
;;
esac
- test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
- test -n "$LIB_SUFFIX" && $3="${LIB_SUFFIX}[$]{$3}"
+ if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}"
+ then
+ $2="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$2}"
+ $3="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$3}"
+ fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LIB_TYPE version: 4 updated: 2000/10/20 22:57:49
+dnl CF_LIB_TYPE version: 5 updated: 2015/04/17 21:13:04
dnl -----------
dnl Compute the string to append to -library from the given model name
dnl $1 = model name
@@ -1828,16 +2182,16 @@ dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
AC_DEFUN([CF_LIB_TYPE],
[
case $1 in
- libtool) $2='' ;;
- normal) $2='' ;;
- debug) $2='_g' ;;
- profile) $2='_p' ;;
- shared) $2='' ;;
+ (libtool) $2='' ;;
+ (normal) $2='' ;;
+ (debug) $2='_g' ;;
+ (profile) $2='_p' ;;
+ (shared) $2='' ;;
esac
test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LINK_DATAONLY version: 10 updated: 2012/10/06 17:41:51
+dnl CF_LINK_DATAONLY version: 12 updated: 2017/07/23 17:46:07
dnl ----------------
dnl Some systems have a non-ANSI linker that doesn't pull in modules that have
dnl only data (i.e., no functions), for example NeXT. On those systems we'll
@@ -1859,7 +2213,7 @@ EOF
rm -f conftest.$ac_ext data.o
cat >conftest.$ac_ext <<EOF
#line __oline__ "configure"
-int testfunc()
+int testfunc(void)
{
#if defined(NeXT)
${cf_cv_main_return:-return}(1); /* I'm told this linker is broken */
@@ -1880,7 +2234,7 @@ EOF
cf_saveLIBS="$LIBS"
LIBS="conftest.a $LIBS"
AC_TRY_RUN([
- int main()
+ int main(void)
{
extern int testfunc();
${cf_cv_main_return:-return} (!testfunc());
@@ -1900,7 +2254,7 @@ fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MAKEFLAGS version: 14 updated: 2011/03/31 19:29:46
+dnl CF_MAKEFLAGS version: 18 updated: 2018/02/21 21:26:03
dnl ------------
dnl Some 'make' programs support ${MAKEFLAGS}, some ${MFLAGS}, to pass 'make'
dnl options to lower-levels. It's very useful for "make -n" -- if we have it.
@@ -1913,24 +2267,26 @@ AC_CACHE_CHECK(for makeflags variable, cf_cv_makeflags,[
for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
do
cat >cf_makeflags.tmp <<CF_EOF
-SHELL = /bin/sh
+SHELL = $SHELL
all :
@ echo '.$cf_option'
CF_EOF
cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp 2>/dev/null | fgrep -v "ing directory" | sed -e 's,[[ ]]*$,,'`
case "$cf_result" in
- .*k)
+ (.*k|.*kw)
cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`
case "$cf_result" in
- .*CC=*) cf_cv_makeflags=
+ (.*CC=*) cf_cv_makeflags=
;;
- *) cf_cv_makeflags=$cf_option
+ (*) cf_cv_makeflags=$cf_option
;;
esac
break
;;
- .-) ;;
- *) echo "given option \"$cf_option\", no match \"$cf_result\""
+ (.-)
+ ;;
+ (*)
+ CF_MSG_LOG(given option \"$cf_option\", no match \"$cf_result\")
;;
esac
done
@@ -1977,7 +2333,7 @@ AC_SUBST(MAKE_UPPER_TAGS)
AC_SUBST(MAKE_LOWER_TAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MIXEDCASE_FILENAMES version: 6 updated: 2013/10/08 17:47:05
+dnl CF_MIXEDCASE_FILENAMES version: 7 updated: 2015/04/12 15:39:00
dnl ----------------------
dnl Check if the file-system supports mixed-case filenames. If we're able to
dnl create a lowercase name and see it as uppercase, it doesn't support that.
@@ -1985,11 +2341,11 @@ AC_DEFUN([CF_MIXEDCASE_FILENAMES],
[
AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
if test "$cross_compiling" = yes ; then
- case $target_alias in #(vi
- *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*) #(vi
+ case $target_alias in
+ (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*)
cf_cv_mixedcase=no
;;
- *)
+ (*)
cf_cv_mixedcase=yes
;;
esac
@@ -2007,20 +2363,26 @@ fi
test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MKSTEMP version: 9 updated: 2012/10/03 04:34:49
+dnl CF_MKSTEMP version: 10 updated: 2017/01/21 11:12:16
dnl ----------
dnl Check for a working mkstemp. This creates two files, checks that they are
dnl successfully created and distinct (AmigaOS apparently fails on the last).
AC_DEFUN([CF_MKSTEMP],[
+AC_CHECK_HEADERS( \
+unistd.h \
+)
AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[
rm -rf conftest*
AC_TRY_RUN([
#include <sys/types.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
-int main()
+int main(void)
{
char *tmpl = "conftestXXXXXX";
char name[2][80];
@@ -2067,10 +2429,11 @@ AC_DEFUN([CF_MSG_LOG],[
echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_NCURSES_ADDON version: 4 updated: 2011/03/27 17:10:13
+dnl CF_NCURSES_ADDON version: 5 updated: 2015/04/26 18:06:58
dnl ----------------
dnl Configure an ncurses add-on, built outside the ncurses tree.
AC_DEFUN([CF_NCURSES_ADDON],[
+AC_REQUIRE([CF_NCURSES_CONFIG])
AC_PROVIDE([CF_SUBST_NCURSES_VERSION])
@@ -2081,42 +2444,55 @@ AC_ARG_ENABLE(widec,
[with_widec=no])
AC_MSG_RESULT($with_widec)
if test "$with_widec" = yes ; then
- CF_UTF8_LIB
+ CF_UTF8_LIB
CF_NCURSES_CONFIG(ncursesw)
else
CF_NCURSES_CONFIG(ncurses)
fi
-if test "$NCURSES_CONFIG" != none ; then
+if test "$NCURSES_CONFIG_PKG" != none ; then
+ cf_version=`$PKG_CONFIG --modversion $NCURSES_CONFIG_PKG 2>/dev/null`
-cf_version=`$NCURSES_CONFIG --version`
+ NCURSES_MAJOR=`echo "$cf_version" | sed -e 's/\..*//'`
+ NCURSES_MINOR=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.//' -e 's/\..*//'`
+ NCURSES_PATCH=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.//'`
-NCURSES_MAJOR=`echo "$cf_version" | sed -e 's/\..*//'`
-NCURSES_MINOR=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.//' -e 's/\..*//'`
-NCURSES_PATCH=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.//'`
+ cf_cv_abi_version=`$PKG_CONFIG --variable=abi_version $NCURSES_CONFIG_PKG 2>/dev/null`
+ if test -z "$cf_cv_abi_version"
+ then
+ cf_cv_abi_version=`$PKG_CONFIG --variable=major_version $NCURSES_CONFIG_PKG 2>/dev/null`
+ fi
-# ABI version is not available from headers
-cf_cv_abi_version=`$NCURSES_CONFIG --abi-version`
+elif test "$NCURSES_CONFIG" != none ; then
+
+ cf_version=`$NCURSES_CONFIG --version 2>/dev/null`
+
+ NCURSES_MAJOR=`echo "$cf_version" | sed -e 's/\..*//'`
+ NCURSES_MINOR=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.//' -e 's/\..*//'`
+ NCURSES_PATCH=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.//'`
+
+ # ABI version is not available from headers
+ cf_cv_abi_version=`$NCURSES_CONFIG --abi-version 2>/dev/null`
else
-for cf_name in MAJOR MINOR PATCH
-do
-cat >conftest.$ac_ext <<CF_EOF
-#include <${cf_cv_ncurses_header:-curses.h}>
-AUTOCONF_$cf_name NCURSES_VERSION_$cf_name
+ for cf_name in MAJOR MINOR PATCH
+ do
+ cat >conftest.$ac_ext <<CF_EOF
+ #include <${cf_cv_ncurses_header:-curses.h}>
+ AUTOCONF_$cf_name NCURSES_VERSION_$cf_name
CF_EOF
- cf_try="$ac_cpp conftest.$ac_ext 2>&5 | fgrep AUTOCONF_$cf_name >conftest.out"
- AC_TRY_EVAL(cf_try)
- if test -f conftest.out ; then
- cf_result=`cat conftest.out | sed -e "s/^.*AUTOCONF_$cf_name[[ ]][[ ]]*//"`
- eval NCURSES_$cf_name=\"$cf_result\"
- # cat conftest.$ac_ext
- # cat conftest.out
- fi
-done
+ cf_try="$ac_cpp conftest.$ac_ext 2>&5 | fgrep AUTOCONF_$cf_name >conftest.out"
+ AC_TRY_EVAL(cf_try)
+ if test -f conftest.out ; then
+ cf_result=`cat conftest.out | sed -e "s/^.*AUTOCONF_$cf_name[[ ]][[ ]]*//"`
+ eval NCURSES_$cf_name=\"$cf_result\"
+ # cat conftest.$ac_ext
+ # cat conftest.out
+ fi
+ done
-cf_cv_abi_version=${NCURSES_MAJOR}
+ cf_cv_abi_version=${NCURSES_MAJOR}
fi
@@ -2176,46 +2552,97 @@ printf("old\n");
,[$1=no])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_NCURSES_CONFIG version: 10 updated: 2012/10/06 08:57:51
+dnl CF_NCURSES_CONFIG version: 21 updated: 2018/06/20 20:23:13
dnl -----------------
-dnl Tie together the configure-script macros for ncurses.
-dnl Prefer the "-config" script from ncurses 6.x, to simplify analysis.
-dnl Allow that to be overridden using the $NCURSES_CONFIG environment variable.
+dnl Tie together the configure-script macros for ncurses, preferring these in
+dnl order:
+dnl a) ".pc" files for pkg-config, using $NCURSES_CONFIG_PKG
+dnl b) the "-config" script from ncurses, using $NCURSES_CONFIG
+dnl c) just plain libraries
dnl
dnl $1 is the root library name (default: "ncurses")
-AC_DEFUN([CF_NCURSES_CONFIG],
-[
+AC_DEFUN([CF_NCURSES_CONFIG],[
+AC_REQUIRE([CF_PKG_CONFIG])
cf_ncuconfig_root=ifelse($1,,ncurses,$1)
+cf_have_ncuconfig=no
-echo "Looking for ${cf_ncuconfig_root}-config"
+if test "x${PKG_CONFIG:=none}" != xnone; then
+ AC_MSG_CHECKING(pkg-config for $cf_ncuconfig_root)
+ if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
+ AC_MSG_RESULT(yes)
-CF_ACVERSION_CHECK(2.52,
- [AC_CHECK_TOOLS(NCURSES_CONFIG, ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)],
- [AC_PATH_PROGS(NCURSES_CONFIG, ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)])
+ AC_MSG_CHECKING(if the $cf_ncuconfig_root package files work)
+ cf_have_ncuconfig=unknown
-if test "$NCURSES_CONFIG" != none ; then
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_save_LIBS="$LIBS"
+
+ CF_ADD_CFLAGS(`$PKG_CONFIG --cflags $cf_ncuconfig_root`)
+ CF_ADD_LIBS(`$PKG_CONFIG --libs $cf_ncuconfig_root`)
+
+ AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
+ [initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);],
+ [AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}>
+ int main(void)
+ { char *xx = curses_version(); return (xx == 0); }],
+ [cf_have_ncuconfig=yes],
+ [cf_have_ncuconfig=no],
+ [cf_have_ncuconfig=maybe])],
+ [cf_have_ncuconfig=no])
+ AC_MSG_RESULT($cf_have_ncuconfig)
+ test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
+ if test "$cf_have_ncuconfig" != "yes"
+ then
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ NCURSES_CONFIG_PKG=none
+ else
+ AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
+ NCURSES_CONFIG_PKG=$cf_ncuconfig_root
+ CF_TERM_HEADER
+ fi
+
+ else
+ AC_MSG_RESULT(no)
+ NCURSES_CONFIG_PKG=none
+ fi
+else
+ NCURSES_CONFIG_PKG=none
+fi
-CPPFLAGS="$CPPFLAGS `$NCURSES_CONFIG --cflags`"
-CF_ADD_LIBS(`$NCURSES_CONFIG --libs`)
+if test "x$cf_have_ncuconfig" = "xno"; then
+ cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}"
-# even with config script, some packages use no-override for curses.h
-CF_CURSES_HEADER(ifelse($1,,ncurses,$1))
+ CF_ACVERSION_CHECK(2.52,
+ [AC_CHECK_TOOLS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)],
+ [AC_PATH_PROGS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)])
-dnl like CF_NCURSES_CPPFLAGS
-AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
+ if test "$NCURSES_CONFIG" != none ; then
-dnl like CF_NCURSES_LIBS
-CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_ncuconfig_root)
-AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
+ CF_ADD_CFLAGS(`$NCURSES_CONFIG --cflags`)
+ CF_ADD_LIBS(`$NCURSES_CONFIG --libs`)
-dnl like CF_NCURSES_VERSION
-cf_cv_ncurses_version=`$NCURSES_CONFIG --version`
+ # even with config script, some packages use no-override for curses.h
+ CF_CURSES_HEADER(ifelse($1,,ncurses,$1))
-else
+ dnl like CF_NCURSES_CPPFLAGS
+ AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
-CF_NCURSES_CPPFLAGS(ifelse($1,,ncurses,$1))
-CF_NCURSES_LIBS(ifelse($1,,ncurses,$1))
+ dnl like CF_NCURSES_LIBS
+ CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_ncuconfig_root)
+ AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
+ dnl like CF_NCURSES_VERSION
+ cf_cv_ncurses_version=`$NCURSES_CONFIG --version`
+
+ else
+
+ CF_NCURSES_CPPFLAGS(ifelse($1,,ncurses,$1))
+ CF_NCURSES_LIBS(ifelse($1,,ncurses,$1))
+
+ fi
+else
+ NCURSES_CONFIG=none
fi
])dnl
dnl ---------------------------------------------------------------------------
@@ -2270,7 +2697,7 @@ AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
CF_NCURSES_VERSION
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_NCURSES_HEADER version: 3 updated: 2012/10/06 08:57:51
+dnl CF_NCURSES_HEADER version: 4 updated: 2015/04/15 19:08:48
dnl -----------------
dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common
dnl variations of ncurses' installs.
@@ -2319,24 +2746,24 @@ fi
# Set definitions to allow ifdef'ing for ncurses.h
-case $cf_cv_ncurses_header in # (vi
-*ncurses.h)
+case $cf_cv_ncurses_header in
+(*ncurses.h)
AC_DEFINE(HAVE_NCURSES_H,1,[Define to 1 if we have ncurses.h])
;;
esac
-case $cf_cv_ncurses_header in # (vi
-ncurses/curses.h|ncurses/ncurses.h)
+case $cf_cv_ncurses_header in
+(ncurses/curses.h|ncurses/ncurses.h)
AC_DEFINE(HAVE_NCURSES_NCURSES_H,1,[Define to 1 if we have ncurses/ncurses.h])
;;
-ncursesw/curses.h|ncursesw/ncurses.h)
+(ncursesw/curses.h|ncursesw/ncurses.h)
AC_DEFINE(HAVE_NCURSESW_NCURSES_H,1,[Define to 1 if we have ncursesw/ncurses.h])
;;
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_NCURSES_LIBS version: 16 updated: 2010/11/20 17:02:38
+dnl CF_NCURSES_LIBS version: 17 updated: 2015/04/15 19:08:48
dnl ---------------
dnl Look for the ncurses library. This is a little complicated on Linux,
dnl because it may be linked with the gpm (general purpose mouse) library.
@@ -2362,8 +2789,8 @@ AC_CHECK_LIB(gpm,Gpm_Open,
[LIBS="$cf_ncurses_SAVE"],
[cf_ncurses_LIBS="-lgpm"])])
-case $host_os in #(vi
-freebsd*)
+case $host_os in
+(freebsd*)
# This is only necessary if you are linking against an obsolete
# version of ncurses (but it should do no harm, since it's static).
if test "$cf_nculib_root" = ncurses ; then
@@ -2404,7 +2831,7 @@ CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_nculib_root)
AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_NCURSES_VERSION version: 14 updated: 2012/10/06 08:57:51
+dnl CF_NCURSES_VERSION version: 15 updated: 2017/05/09 19:26:10
dnl ------------------
dnl Check for the version of ncurses, to aid in reporting bugs, etc.
dnl Call CF_CURSES_CPPFLAGS first, or CF_NCURSES_CPPFLAGS. We don't use
@@ -2419,7 +2846,7 @@ AC_CACHE_CHECK(for ncurses version, cf_cv_ncurses_version,[
AC_TRY_RUN([
#include <${cf_cv_ncurses_header:-curses.h}>
#include <stdio.h>
-int main()
+int main(void)
{
FILE *fp = fopen("$cf_tempfile", "w");
#ifdef NCURSES_VERSION
@@ -2466,27 +2893,27 @@ EOF
test "$cf_cv_ncurses_version" = no || AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_OBJ_SUBDIR version: 6 updated: 2013/09/07 14:06:10
+dnl CF_OBJ_SUBDIR version: 7 updated: 2015/04/17 21:13:04
dnl -------------
dnl Compute the object-directory name from the given model name
AC_DEFUN([CF_OBJ_SUBDIR],
[
case $1 in
- libtool) $2='obj_lo' ;;
- normal) $2='objects' ;;
- debug) $2='obj_g' ;;
- profile) $2='obj_p' ;;
- shared)
- case $cf_cv_system_name in #(vi
- cygwin|msys) #(vi
+ (libtool) $2='obj_lo' ;;
+ (normal) $2='objects' ;;
+ (debug) $2='obj_g' ;;
+ (profile) $2='obj_p' ;;
+ (shared)
+ case $cf_cv_system_name in
+ (cygwin|msys)
$2='objects' ;;
- *)
+ (*)
$2='obj_s' ;;
esac
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PATHSEP version: 6 updated: 2012/09/29 18:38:12
+dnl CF_PATHSEP version: 7 updated: 2015/04/12 15:39:00
dnl ----------
dnl Provide a value for the $PATH and similar separator (or amend the value
dnl as provided in autoconf 2.5x).
@@ -2494,15 +2921,15 @@ AC_DEFUN([CF_PATHSEP],
[
AC_MSG_CHECKING(for PATH separator)
case $cf_cv_system_name in
- os2*) PATH_SEPARATOR=';' ;;
- *) ${PATH_SEPARATOR:=':'} ;;
+ (os2*) PATH_SEPARATOR=';' ;;
+ (*) ${PATH_SEPARATOR:=':'} ;;
esac
ifelse([$1],,,[$1=$PATH_SEPARATOR])
AC_SUBST(PATH_SEPARATOR)
AC_MSG_RESULT($PATH_SEPARATOR)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PATH_SYNTAX version: 14 updated: 2012/06/19 20:58:54
+dnl CF_PATH_SYNTAX version: 16 updated: 2015/04/18 08:56:57
dnl --------------
dnl Check the argument to see that it looks like a pathname. Rewrite it if it
dnl begins with one of the prefix/exec_prefix variables, and then again if the
@@ -2510,36 +2937,36 @@ dnl result begins with 'NONE'. This is necessary to work around autoconf's
dnl delayed evaluation of those symbols.
AC_DEFUN([CF_PATH_SYNTAX],[
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
-fi
-
-case ".[$]$1" in #(vi
-.\[$]\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[[a-zA-Z]]:[[\\/]]*) #(vi OS/2 EMX
- ;;
-.\[$]{*prefix}*|.\[$]{*dir}*) #(vi
- eval $1="[$]$1"
- case ".[$]$1" in #(vi
- .NONE/*)
- $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
- ;;
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".[$]$1" in
+(.\[$]\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX
+ ;;
+(.\[$]{*prefix}*|.\[$]{*dir}*)
+ eval $1="[$]$1"
+ case ".[$]$1" in
+ (.NONE/*)
+ $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
+ ;;
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PKG_CONFIG version: 7 updated: 2011/04/29 04:53:22
+dnl CF_PKG_CONFIG version: 10 updated: 2015/04/26 18:06:58
dnl -------------
dnl Check for the package-config program, unless disabled by command-line.
AC_DEFUN([CF_PKG_CONFIG],
@@ -2551,16 +2978,16 @@ AC_ARG_WITH(pkg-config,
[cf_pkg_config=yes])
AC_MSG_RESULT($cf_pkg_config)
-case $cf_pkg_config in #(vi
-no) #(vi
+case $cf_pkg_config in
+(no)
PKG_CONFIG=none
;;
-yes) #(vi
+(yes)
CF_ACVERSION_CHECK(2.52,
[AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)],
[AC_PATH_PROG(PKG_CONFIG, pkg-config, none)])
;;
-*)
+(*)
PKG_CONFIG=$withval
;;
esac
@@ -2568,12 +2995,14 @@ esac
test -z "$PKG_CONFIG" && PKG_CONFIG=none
if test "$PKG_CONFIG" != none ; then
CF_PATH_SYNTAX(PKG_CONFIG)
+elif test "x$cf_pkg_config" != xno ; then
+ AC_MSG_WARN(pkg-config is not installed)
fi
AC_SUBST(PKG_CONFIG)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_POSIX_C_SOURCE version: 8 updated: 2010/05/26 05:38:42
+dnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17
dnl -----------------
dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
dnl
@@ -2588,7 +3017,10 @@ dnl
dnl Parameters:
dnl $1 is the nominal value for _POSIX_C_SOURCE
AC_DEFUN([CF_POSIX_C_SOURCE],
-[
+[AC_REQUIRE([CF_POSIX_VISIBLE])dnl
+
+if test "$cf_cv_posix_visible" = no; then
+
cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
cf_save_CFLAGS="$CFLAGS"
@@ -2605,15 +3037,15 @@ make an error
#endif],
[cf_cv_posix_c_source=no],
[cf_want_posix_source=no
- case .$cf_POSIX_C_SOURCE in #(vi
- .[[12]]??*) #(vi
+ case .$cf_POSIX_C_SOURCE in
+ (.[[12]]??*)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
;;
- .2) #(vi
+ (.2)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
cf_want_posix_source=yes
;;
- .*)
+ (.*)
cf_want_posix_source=yes
;;
esac
@@ -2626,7 +3058,8 @@ make an error
fi
CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
CFLAGS="$cf_trim_CFLAGS"
- CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+ CPPFLAGS="$cf_trim_CPPFLAGS"
+ CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source)
CF_MSG_LOG(if the second compile does not leave our definition intact error)
AC_TRY_COMPILE([#include <sys/types.h>],[
#ifndef _POSIX_C_SOURCE
@@ -2644,6 +3077,35 @@ if test "$cf_cv_posix_c_source" != no ; then
CF_ADD_CFLAGS($cf_cv_posix_c_source)
fi
+fi # cf_cv_posix_visible
+
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17
+dnl ----------------
+dnl POSIX documents test-macros which an application may set before any system
+dnl headers are included to make features available.
+dnl
+dnl Some BSD platforms (originally FreeBSD, but copied by a few others)
+dnl diverged from POSIX in 2002 by setting symbols which make all of the most
+dnl recent features visible in the system header files unless the application
+dnl overrides the corresponding test-macros. Doing that introduces portability
+dnl problems.
+dnl
+dnl This macro makes a special check for the symbols used for this, to avoid a
+dnl conflicting definition.
+AC_DEFUN([CF_POSIX_VISIBLE],
+[
+AC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[
+AC_TRY_COMPILE([#include <stdio.h>],[
+#if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
+ && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
+ && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
+ && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
+#error conflicting symbols found
+#endif
+],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes])
+])
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_PROG_AR version: 1 updated: 2009/01/01 20:15:22
@@ -2662,20 +3124,24 @@ AC_PROG_AWK
test -z "$AWK" && AC_MSG_ERROR(No awk program found)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_CC version: 3 updated: 2012/10/06 15:31:55
+dnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54
dnl ----------
dnl standard check for CC, plus followup sanity checks
dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
AC_DEFUN([CF_PROG_CC],[
+CF_ACVERSION_CHECK(2.53,
+ [AC_MSG_WARN(this will incorrectly handle gnatgcc choice)
+ AC_REQUIRE([AC_PROG_CC])],
+ [])
ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
CF_GCC_VERSION
CF_ACVERSION_CHECK(2.52,
[AC_PROG_CC_STDC],
[CF_ANSI_CC_REQD])
-CF_CC_ENV_FLAGS
+CF_CC_ENV_FLAGS
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_CC_C_O version: 3 updated: 2010/08/14 18:25:37
+dnl CF_PROG_CC_C_O version: 5 updated: 2017/01/21 11:06:25
dnl --------------
dnl Analogous to AC_PROG_CC_C_O, but more useful: tests only $CC, ensures that
dnl the output file can be renamed, and allows for a shell variable that can
@@ -2683,21 +3149,23 @@ dnl be used later. The parameter is either CC or CXX. The result is the
dnl cache variable:
dnl $cf_cv_prog_CC_c_o
dnl $cf_cv_prog_CXX_c_o
+dnl
+dnl $1 = compiler
+dnl $2 = compiler options, if any
AC_DEFUN([CF_PROG_CC_C_O],
[AC_REQUIRE([AC_PROG_CC])dnl
AC_MSG_CHECKING([whether [$]$1 understands -c and -o together])
AC_CACHE_VAL(cf_cv_prog_$1_c_o,
[
cat > conftest.$ac_ext <<CF_EOF
-#include <stdio.h>
-int main()
+int main(void)
{
${cf_cv_main_return:-return}(0);
}
CF_EOF
# We do the test twice because some compilers refuse to overwrite an
# existing .o file with -o, though they will create one.
-ac_try='[$]$1 -c conftest.$ac_ext -o conftest2.$ac_objext >&AC_FD_CC'
+ac_try='[$]$1 $2 -c conftest.$ac_ext -o conftest2.$ac_objext >&AC_FD_CC'
if AC_TRY_EVAL(ac_try) &&
test -f conftest2.$ac_objext && AC_TRY_EVAL(ac_try);
then
@@ -2714,36 +3182,36 @@ else
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_EGREP version: 1 updated: 2006/09/16 11:40:59
+dnl CF_PROG_EGREP version: 2 updated: 2015/04/18 08:56:57
dnl -------------
dnl AC_PROG_EGREP was introduced in autoconf 2.53.
dnl This macro adds a check to ensure the script found something.
AC_DEFUN([CF_PROG_EGREP],
[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
- [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
- then ac_cv_prog_egrep='grep -E'
- else ac_cv_prog_egrep='egrep'
- fi])
- EGREP=$ac_cv_prog_egrep
- AC_SUBST([EGREP])
-test -z "$EGREP" && AC_MSG_ERROR(No egrep program found)
+ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+ test -z "$EGREP" && AC_MSG_ERROR(No egrep program found)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_EXT version: 11 updated: 2012/10/06 08:57:51
+dnl CF_PROG_EXT version: 14 updated: 2018/06/20 20:23:13
dnl -----------
dnl Compute $PROG_EXT, used for non-Unix ports, such as OS/2 EMX.
AC_DEFUN([CF_PROG_EXT],
[
AC_REQUIRE([CF_CHECK_CACHE])
case $cf_cv_system_name in
-os2*)
- CFLAGS="$CFLAGS -Zmt"
- CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__"
- CXXFLAGS="$CXXFLAGS -Zmt"
- # autoconf's macro sets -Zexe and suffix both, which conflict:w
- LDFLAGS="$LDFLAGS -Zmt -Zcrtdll"
- ac_cv_exeext=.exe
- ;;
+(os2*)
+ CFLAGS="$CFLAGS -Zmt"
+ CF_APPEND_TEXT(CPPFLAGS,-D__ST_MT_ERRNO__)
+ CXXFLAGS="$CXXFLAGS -Zmt"
+ # autoconf's macro sets -Zexe and suffix both, which conflict:w
+ LDFLAGS="$LDFLAGS -Zmt -Zcrtdll"
+ ac_cv_exeext=.exe
+ ;;
esac
AC_EXEEXT
@@ -2754,25 +3222,88 @@ AC_SUBST(PROG_EXT)
test -n "$PROG_EXT" && AC_DEFINE_UNQUOTED(PROG_EXT,"$PROG_EXT",[Define to the program extension (normally blank)])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_GNAT version: 2 updated: 2011/10/22 14:01:47
+dnl CF_PROG_GNAT version: 10 updated: 2019/12/31 08:53:54
dnl ------------
-dnl Check for gnatmake, ensure that it is complete.
+dnl Check for gnat/gnatmake/etc, ensure that the toolset is complete.
AC_DEFUN([CF_PROG_GNAT],[
-cf_ada_make=gnatmake
-AC_CHECK_PROG(gnat_exists, $cf_ada_make, yes, no)
-if test "$ac_cv_prog_gnat_exists" = no; then
- cf_ada_make=
- cf_cv_prog_gnat_correct=no
+for cf_prog_gnat in gnat gnatmake gprconfig gprbuild
+do
+ CF_UPPER(cf_upper_prog_gnat,${cf_prog_gnat})
+
+ unset ac_cv_path_cf_TEMP_gnat
+ unset cf_TEMP_gnat
+ AC_PATH_PROG(cf_TEMP_gnat,$cf_prog_gnat,no)
+ eval cf_cv_PATH_$cf_upper_prog_gnat=[$]ac_cv_path_cf_TEMP_gnat
+
+ if test "x$cf_TEMP_gnat" != xno; then
+ unset cf_cv_gnat_version
+ unset cf_TEMP_gnat
+ CF_GNAT_VERSION(cf_TEMP_gnat,$cf_prog_gnat)
+ fi
+ eval cf_cv_VERSION_$cf_upper_prog_gnat=[$]cf_TEMP_gnat
+
+ unset cf_TEMP_gnat
+ unset cf_cv_gnat_version
+ unset ac_cv_path_cf_TEMP_gnat
+done
+
+if test "x$cf_cv_VERSION_GNATMAKE" = "xno"; then
+ cf_ada_make=
+ cf_cv_prog_gnat_correct=no
else
- CF_GNAT_VERSION
- AC_CHECK_PROG(M4_exists, m4, yes, no)
- if test "$ac_cv_prog_M4_exists" = no; then
- cf_cv_prog_gnat_correct=no
- echo Ada95 binding required program m4 not found. Ada95 binding disabled.
- fi
- if test "$cf_cv_prog_gnat_correct" = yes; then
- AC_MSG_CHECKING(if GNAT works)
- CF_GNAT_TRY_RUN([procedure conftest;],
+ cf_ada_make=gnatmake
+ if test "x$cf_cv_VERSION_GPRCONFIG" = "xno"; then
+ # gprconfig is newer than gnatmake; we can continue...
+ cf_ada_config="##"
+ else
+ rm -rf conftest* *~conftest*
+ if mkdir conftest.src
+ then
+ cf_ada_config=""
+ cd conftest.src
+ for cf_gprconfig in Ada C
+ do
+ AC_MSG_CHECKING(for gprconfig name for $cf_gprconfig)
+ if test $cf_gprconfig = C
+ then
+ for cf_gprconfig_param in \
+ $cf_gprconfig,,,,GNATGCC \
+ $cf_gprconfig,,,,GCC \
+ $cf_gprconfig
+ do
+ cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AC_FD_CC | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1`
+ test -n "$cf_gprconfig_value" && break
+ done
+ else
+ cf_gprconfig_param=$cf_gprconfig
+ cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AC_FD_CC | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1`
+ fi
+ if test -n "$cf_gprconfig_value"
+ then
+ eval cf_ada_config_[$]cf_gprconfig=[$]cf_gprconfig_value
+ AC_MSG_RESULT($cf_gprconfig_value)
+ else
+ AC_MSG_RESULT(missing)
+ cf_ada_config="#"
+ break
+ fi
+ done
+ cd ..
+ rm -rf conftest* *~conftest*
+ fi
+ fi
+ if test "x$cf_ada_config" != "x#"
+ then
+ CF_GNAT_VERSION
+ CF_CHECK_GNAT_VERSION
+ AC_CHECK_PROG(M4_exists, m4, yes, no)
+ if test "$ac_cv_prog_M4_exists" = no; then
+ cf_cv_prog_gnat_correct=no
+ AC_MSG_WARN(Ada95 binding required program m4 not found. Ada95 binding disabled)
+ fi
+ if test "$cf_cv_prog_gnat_correct" = yes; then
+ AC_MSG_CHECKING(if GNAT works)
+ CF_GNAT_TRY_RUN([procedure conftest;],
[with Text_IO;
with GNAT.OS_Lib;
procedure conftest is
@@ -2780,12 +3311,38 @@ begin
Text_IO.Put ("Hello World");
Text_IO.New_Line;
GNAT.OS_Lib.OS_Exit (0);
-end conftest;],[cf_cv_prog_gnat_correct=yes],[cf_cv_prog_gnat_correct=no])
- AC_MSG_RESULT($cf_cv_prog_gnat_correct)
- fi
+end conftest;],
+[cf_cv_prog_gnat_correct=yes],
+[cf_cv_prog_gnat_correct=no])
+ AC_MSG_RESULT($cf_cv_prog_gnat_correct)
+ fi
+ else
+ cf_cv_prog_gnat_correct=no
+ fi
fi
AC_SUBST(cf_ada_make)
+AC_SUBST(cf_ada_config)
+AC_SUBST(cf_ada_config_Ada)
+AC_SUBST(cf_ada_config_C)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_PROG_INSTALL version: 7 updated: 2015/04/18 08:56:57
+dnl ---------------
+dnl Force $INSTALL to be an absolute-path. Otherwise, edit_man.sh and the
+dnl misc/tabset install won't work properly. Usually this happens only when
+dnl using the fallback mkinstalldirs script
+AC_DEFUN([CF_PROG_INSTALL],
+[AC_PROG_INSTALL
+case $INSTALL in
+(/*)
+ ;;
+(*)
+ CF_DIRNAME(cf_dir,$INSTALL)
+ test -z "$cf_dir" && cf_dir=.
+ INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
+ ;;
+esac
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_PROG_LN_S version: 2 updated: 2010/08/14 18:25:37
@@ -2840,7 +3397,43 @@ define([CF_REMOVE_LIB],
$1=`echo "$2" | sed -e 's/-l$3[[ ]]//g' -e 's/-l$3[$]//'`
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SHARED_OPTS version: 84 updated: 2013/11/03 06:26:10
+dnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45
+dnl ---------------------
+dnl Restore flags saved in CF_SAVE_XTRA_FLAGS
+dnl $1 = name of current macro
+define([CF_RESTORE_XTRA_FLAGS],
+[
+LIBS="$cf_save_LIBS_$1"
+CFLAGS="$cf_save_CFLAGS_$1"
+CPPFLAGS="$cf_save_CPPFLAGS_$1"
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44
+dnl ------------------
+dnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers
+dnl and libraries which do not update those variables.
+dnl
+dnl $1 = name of current macro
+define([CF_SAVE_XTRA_FLAGS],
+[
+cf_save_LIBS_$1="$LIBS"
+cf_save_CFLAGS_$1="$CFLAGS"
+cf_save_CPPFLAGS_$1="$CPPFLAGS"
+LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
+for cf_X_CFLAGS in $X_CFLAGS
+do
+ case "x$cf_X_CFLAGS" in
+ x-[[IUD]]*)
+ CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
+ ;;
+ *)
+ CFLAGS="$CFLAGS $cf_X_CFLAGS"
+ ;;
+ esac
+done
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_SHARED_OPTS version: 93 updated: 2018/08/18 16:36:35
dnl --------------
dnl --------------
dnl Attempt to determine the appropriate CC/LD options for creating a shared
@@ -2868,6 +3461,7 @@ dnl Some loaders leave 'so_locations' lying around. It's nice to clean up.
AC_DEFUN([CF_SHARED_OPTS],
[
AC_REQUIRE([CF_LD_RPATH_OPT])
+
RM_SHARED_OPTS=
LOCAL_LDFLAGS=
LOCAL_LDFLAGS2=
@@ -2889,15 +3483,16 @@ AC_DEFUN([CF_SHARED_OPTS],
AC_ARG_WITH(shlib-version,
[ --with-shlib-version=X Specify rel or abi version for shared libs],
[test -z "$withval" && withval=auto
- case $withval in #(vi
- yes) #(vi
+ case $withval in
+ (yes)
cf_cv_shlib_version=auto
;;
- rel|abi|auto|no) #(vi
+ (rel|abi|auto)
cf_cv_shlib_version=$withval
;;
- *)
- AC_MSG_ERROR([option value must be one of: rel, abi, auto or no])
+ (*)
+ AC_MSG_RESULT($withval)
+ AC_MSG_ERROR([option value must be one of: rel, abi, or auto])
;;
esac
],[cf_cv_shlib_version=auto])
@@ -2908,8 +3503,21 @@ AC_DEFUN([CF_SHARED_OPTS],
# Some less-capable ports of gcc support only -fpic
CC_SHARED_OPTS=
+
+ cf_try_fPIC=no
if test "$GCC" = yes
then
+ cf_try_fPIC=yes
+ else
+ case $cf_cv_system_name in
+ (*linux*) # e.g., PGI compiler
+ cf_try_fPIC=yes
+ ;;
+ esac
+ fi
+
+ if test "$cf_try_fPIC" = yes
+ then
AC_MSG_CHECKING(which $CC option to use)
cf_save_CFLAGS="$CFLAGS"
for CC_SHARED_OPTS in -fPIC -fpic ''
@@ -2923,30 +3531,30 @@ AC_DEFUN([CF_SHARED_OPTS],
cf_cv_shlib_version_infix=no
- case $cf_cv_system_name in #(vi
- aix4.[3-9]*|aix[[5-7]]*) #(vi
+ case $cf_cv_system_name in
+ (aix4.[3-9]*|aix[[5-7]]*)
if test "$GCC" = yes; then
- CC_SHARED_OPTS=
- MK_SHARED_LIB='${CC} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
+ CC_SHARED_OPTS='-Wl,-brtl'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
else
- # CC_SHARED_OPTS='-qpic=large -G'
- # perhaps "-bM:SRE -bnoentry -bexpall"
- MK_SHARED_LIB='${CC} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
+ CC_SHARED_OPTS='-brtl'
+ # as well as '-qpic=large -G' or perhaps "-bM:SRE -bnoentry -bexpall"
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
fi
;;
- beos*) #(vi
- MK_SHARED_LIB='${CC} ${CFLAGS} -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0'
+ (beos*)
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0'
;;
- cygwin*) #(vi
+ (cygwin*)
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cf_cv_shlib_version=cygdll
cf_cv_shlib_version_infix=cygdll
shlibdir=$bindir
MAKE_DLLS=
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\[$]1
IMPORT_LIB=\`echo "\[$]1" | sed -e 's/cyg/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
shift
@@ -2955,20 +3563,20 @@ AC_DEFUN([CF_SHARED_OPTS],
** SHARED_LIB \[$]SHARED_LIB
** IMPORT_LIB \[$]IMPORT_LIB
EOF
- exec \[$]* -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
+ exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
CF_EOF
chmod +x mk_shared_lib.sh
;;
- msys*) #(vi
+ (msys*)
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cf_cv_shlib_version=msysdll
cf_cv_shlib_version_infix=msysdll
shlibdir=$bindir
MAKE_DLLS=
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\[$]1
IMPORT_LIB=\`echo "\[$]1" | sed -e 's/msys-/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
shift
@@ -2977,14 +3585,14 @@ CF_EOF
** SHARED_LIB \[$]SHARED_LIB
** IMPORT_LIB \[$]IMPORT_LIB
EOF
- exec \[$]* -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
+ exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
CF_EOF
chmod +x mk_shared_lib.sh
;;
- darwin*) #(vi
+ (darwin*)
cf_try_cflags="no-cpp-precomp"
CC_SHARED_OPTS="-dynamic"
- MK_SHARED_LIB='${CC} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $[@]` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $[@]` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $[@]'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi
cf_cv_shlib_version_infix=yes
AC_CACHE_CHECK([if ld -search_paths_first works], cf_cv_ldflags_search_paths_first, [
@@ -2996,15 +3604,15 @@ CF_EOF
LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
fi
;;
- hpux[[7-8]]*) #(vi
- # HP-UX 8.07 ld lacks "+b" option used for libdir search-list
+ (hpux[[7-8]]*)
+ # HP-UX 8.07 ld lacks "+b" option used for libdir search-list
if test "$GCC" != yes; then
CC_SHARED_OPTS='+Z'
fi
- MK_SHARED_LIB='${LD} -b -o $[@]'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -b -o $[@]'
INSTALL_LIB="-m 555"
;;
- hpux*) #(vi
+ (hpux*)
# (tested with gcc 2.7.2 -- I don't have c89)
if test "$GCC" = yes; then
LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}'
@@ -3012,36 +3620,36 @@ CF_EOF
CC_SHARED_OPTS='+Z'
LD_SHARED_OPTS='-Wl,+b,${libdir}'
fi
- MK_SHARED_LIB='${LD} +b ${libdir} -b -o $[@]'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} +b ${libdir} -b -o $[@]'
# HP-UX shared libraries must be executable, and should be
# readonly to exploit a quirk in the memory manager.
INSTALL_LIB="-m 555"
;;
- interix*)
+ (interix*)
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
if test "$cf_cv_shlib_version" = rel; then
- cf_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
+ cf_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}'
else
- cf_shared_soname='`basename $@`'
+ cf_shared_soname='`basename $[@]`'
fi
CC_SHARED_OPTS=
- MK_SHARED_LIB='${CC} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $@'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $[@]'
;;
- irix*) #(vi
+ (irix*)
if test "$cf_cv_enable_rpath" = yes ; then
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
# tested with IRIX 5.2 and 'cc'.
if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
- MK_SHARED_LIB='${CC} -shared -rdata_shared -soname `basename $[@]` -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -rdata_shared -soname `basename $[@]` -o $[@]'
else
- MK_SHARED_LIB='${CC} -shared -Wl,-soname,`basename $[@]` -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,`basename $[@]` -o $[@]'
fi
cf_cv_rm_so_locs=yes
;;
- linux*|gnu*|k*bsd*-gnu) #(vi
- if test "$DFT_LWR_MODEL" = "shared" ; then
+ (linux*|gnu*|k*bsd*-gnu)
+ if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
@@ -3049,9 +3657,9 @@ CF_EOF
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CF_SHARED_SONAME
- MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
;;
- mingw*) #(vi
+ (mingw*)
cf_cv_shlib_version=mingw
cf_cv_shlib_version_infix=mingw
shlibdir=$bindir
@@ -3062,10 +3670,10 @@ CF_EOF
EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS"
fi
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\[$]1
IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
shift
@@ -3074,12 +3682,12 @@ CF_EOF
** SHARED_LIB \[$]SHARED_LIB
** IMPORT_LIB \[$]IMPORT_LIB
EOF
- exec \[$]* -shared -Wl,--enable-auto-import,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
+ exec \[$]* ${LDFLAGS} -shared -Wl,--enable-auto-import,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
CF_EOF
chmod +x mk_shared_lib.sh
;;
- openbsd[[2-9]].*|mirbsd*) #(vi
- if test "$DFT_LWR_MODEL" = "shared" ; then
+ (openbsd[[2-9]].*|mirbsd*)
+ if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
@@ -3088,14 +3696,14 @@ CF_EOF
fi
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
CF_SHARED_SONAME
- MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
;;
- nto-qnx*|openbsd*|freebsd[[12]].*) #(vi
+ (nto-qnx*|openbsd*|freebsd[[12]].*)
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
- MK_SHARED_LIB='${LD} -Bshareable -o $[@]'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -Bshareable -o $[@]'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
;;
- dragonfly*|freebsd*) #(vi
+ (dragonfly*|freebsd*)
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
@@ -3103,9 +3711,9 @@ CF_EOF
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CF_SHARED_SONAME
- MK_SHARED_LIB='${LD} -shared -Bshareable -soname=`basename $[@]` -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
;;
- netbsd*) #(vi
+ (netbsd*)
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
@@ -3119,34 +3727,34 @@ CF_EOF
fi
fi
CF_SHARED_SONAME
- MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $[@]'
else
- MK_SHARED_LIB='${CC} -Wl,-shared -Wl,-Bshareable -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -Wl,-shared -Wl,-Bshareable -o $[@]'
fi
;;
- osf*|mls+*) #(vi
+ (osf*|mls+*)
# tested with OSF/1 V3.2 and 'cc'
# tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't
# link with shared libs).
- MK_SHARED_LIB='${LD} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $[@]`'
- case $host_os in #(vi
- osf4*)
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $[@]`'
+ case $host_os in
+ (osf4*)
MK_SHARED_LIB="${MK_SHARED_LIB} -msym"
;;
esac
MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $[@]'
- if test "$DFT_LWR_MODEL" = "shared" ; then
+ if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
cf_cv_rm_so_locs=yes
;;
- sco3.2v5*) # (also uw2* and UW7: hops 13-Apr-98
+ (sco3.2v5*) # also uw2* and UW7: hops 13-Apr-98
# tested with osr5.0.5
if test "$GCC" != yes; then
CC_SHARED_OPTS='-belf -KPIC'
fi
- MK_SHARED_LIB='${LD} -dy -G -h `basename $[@] .${REL_VERSION}`.${ABI_VERSION} -o [$]@'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -dy -G -h `basename $[@] .${REL_VERSION}`.${ABI_VERSION} -o [$]@'
if test "$cf_cv_enable_rpath" = yes ; then
# only way is to set LD_RUN_PATH but no switch for it
RUN_PATH=$libdir
@@ -3155,15 +3763,15 @@ CF_EOF
LINK_PROGS='LD_RUN_PATH=${libdir}'
LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib'
;;
- sunos4*) #(vi
+ (sunos4*)
# tested with SunOS 4.1.1 and gcc 2.7.0
if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='${LD} -assert pure-text -o $[@]'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -assert pure-text -o $[@]'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
;;
- solaris2*) #(vi
+ (solaris2*)
# tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
# tested with SunOS 5.10 (solaris 10) and gcc 3.4.3
if test "$DFT_LWR_MODEL" = "shared" ; then
@@ -3183,32 +3791,32 @@ CF_EOF
done
CFLAGS="$cf_save_CFLAGS"
CC_SHARED_OPTS=$cf_shared_opts
- MK_SHARED_LIB='${CC} -dy -G -h '$cf_cv_shared_soname' -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -h '$cf_cv_shared_soname' -o $[@]'
else
- MK_SHARED_LIB='${CC} -shared -dy -G -h '$cf_cv_shared_soname' -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -h '$cf_cv_shared_soname' -o $[@]'
fi
;;
- sysv5uw7*|unix_sv*) #(vi
+ (sysv5uw7*|unix_sv*)
# tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='${LD} -d y -G -o [$]@'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -d y -G -o [$]@'
;;
- *)
+ (*)
CC_SHARED_OPTS='unknown'
MK_SHARED_LIB='echo unknown'
;;
esac
# This works if the last tokens in $MK_SHARED_LIB are the -o target.
- case "$cf_cv_shlib_version" in #(vi
- rel|abi)
- case "$MK_SHARED_LIB" in #(vi
- *'-o $[@]') #(vi
+ case "$cf_cv_shlib_version" in
+ (rel|abi)
+ case "$MK_SHARED_LIB" in
+ (*'-o $[@]')
test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
;;
- *)
+ (*)
AC_MSG_WARN(ignored --with-shlib-version)
;;
esac
@@ -3292,7 +3900,7 @@ dnl Remove "-g" option from the compiler options
AC_DEFUN([CF_STRIP_G_OPT],
[$1=`echo ${$1} | sed -e 's%-g %%' -e 's%-g$%%'`])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SUBDIR_PATH version: 6 updated: 2010/04/21 06:20:50
+dnl CF_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06
dnl --------------
dnl Construct a search-list for a nonstandard header/lib-file
dnl $1 = the variable to return as result
@@ -3302,25 +3910,32 @@ AC_DEFUN([CF_SUBDIR_PATH],
[
$1=
-CF_ADD_SUBDIR_PATH($1,$2,$3,/usr,$prefix)
CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE)
-CF_ADD_SUBDIR_PATH($1,$2,$3,/usr/local,$prefix)
-CF_ADD_SUBDIR_PATH($1,$2,$3,/opt,$prefix)
-CF_ADD_SUBDIR_PATH($1,$2,$3,[$]HOME,$prefix)
+
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ [$]HOME
+do
+ CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix)
+done
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_TERM_HEADER version: 3 updated: 2012/10/06 08:57:51
+dnl CF_TERM_HEADER version: 4 updated: 2015/04/15 19:08:48
dnl --------------
dnl Look for term.h, which is part of X/Open curses. It defines the interface
dnl to terminfo database. Usually it is in the same include-path as curses.h,
dnl but some packagers change this, breaking various applications.
AC_DEFUN([CF_TERM_HEADER],[
AC_CACHE_CHECK(for terminfo header, cf_cv_term_header,[
-case ${cf_cv_ncurses_header} in #(vi
-*/ncurses.h|*/ncursesw.h) #(vi
+case ${cf_cv_ncurses_header} in
+(*/ncurses.h|*/ncursesw.h)
cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[[^.]]*\.h$%term.h%'`
;;
-*)
+(*)
cf_term_header=term.h
;;
esac
@@ -3340,17 +3955,17 @@ done
# Set definitions to allow ifdef'ing to accommodate subdirectories
-case $cf_cv_term_header in # (vi
-*term.h)
+case $cf_cv_term_header in
+(*term.h)
AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h])
;;
esac
-case $cf_cv_term_header in # (vi
-ncurses/term.h) #(vi
+case $cf_cv_term_header in
+(ncurses/term.h)
AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h])
;;
-ncursesw/term.h)
+(ncursesw/term.h)
AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h])
;;
esac
@@ -3365,7 +3980,7 @@ top_builddir=ifelse($1,,`pwd`,$1)
AC_SUBST(top_builddir)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_TRY_XOPEN_SOURCE version: 1 updated: 2011/10/30 17:09:50
+dnl CF_TRY_XOPEN_SOURCE version: 2 updated: 2018/06/20 20:23:13
dnl -------------------
dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
dnl can define it successfully.
@@ -3381,7 +3996,7 @@ make an error
#endif],
[cf_cv_xopen_source=no],
[cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+ CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE)
AC_TRY_COMPILE([
#include <stdlib.h>
#include <string.h>
@@ -3500,6 +4115,27 @@ AC_SUBST(ADA_INCLUDE)
AC_MSG_RESULT($ADA_INCLUDE)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_WITH_ADA_LIBNAME version: 1 updated: 2019/09/07 18:59:41
+dnl -------------------
+dnl CF_WITH_ADA_LIBNAME
+dnl -------------------
+dnl Command-line option to specify how to name the resulting Ada library.
+dnl $1 = default value
+AC_DEFUN([CF_WITH_ADA_LIBNAME],[
+AC_MSG_CHECKING(for ada-libname)
+AC_ARG_WITH(ada-libname,
+ [ --with-ada-libname=XXX override default Ada library-name],
+ ADA_LIBNAME=[$]withval,
+ ADA_LIBNAME=$1)
+case "x$ADA_LIBNAME" in
+(x|xyes|xno)
+ ADA_LIBNAME=$1
+ ;;
+esac
+AC_SUBST(ADA_LIBNAME)
+AC_MSG_RESULT($ADA_LIBNAME)
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_WITH_ADA_OBJECTS version: 2 updated: 2010/06/26 17:35:58
dnl -------------------
dnl Command-line option to specify where Ada objects will install.
@@ -3514,18 +4150,28 @@ AC_SUBST(ADA_OBJECTS)
AC_MSG_RESULT($ADA_OBJECTS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_ADA_SHAREDLIB version: 2 updated: 2010/06/26 17:35:58
+dnl CF_WITH_ADA_SHAREDLIB version: 5 updated: 2018/07/21 19:10:35
dnl ---------------------
dnl Command-line option to specify if an Ada95 shared-library should be built,
dnl and optionally what its soname should be.
AC_DEFUN([CF_WITH_ADA_SHAREDLIB],[
+AC_REQUIRE([CF_GNAT_PROJECTS])
AC_MSG_CHECKING(if an Ada95 shared-library should be built)
AC_ARG_WITH(ada-sharedlib,
- [ --with-ada-sharedlib=XX build Ada95 shared-library],
+ [ --with-ada-sharedlib=soname build shared-library (requires GNAT projects)],
[with_ada_sharedlib=$withval],
[with_ada_sharedlib=no])
AC_MSG_RESULT($with_ada_sharedlib)
+if test "x$with_ada_sharedlib" != xno
+then
+ if test "x$cf_gnat_projects" != xyes
+ then
+ AC_MSG_WARN(disabling shared-library since GNAT projects are not supported)
+ with_ada_sharedlib=no
+ fi
+fi
+
ADA_SHAREDLIB='lib$(LIB_NAME).so.1'
MAKE_ADA_SHAREDLIB="#"
@@ -3613,64 +4259,102 @@ eval $3="$withval"
AC_SUBST($3)dnl
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PKG_CONFIG_LIBDIR version: 2 updated: 2011/12/10 18:58:47
+dnl CF_WITH_PKG_CONFIG_LIBDIR version: 10 updated: 2015/08/22 17:10:56
dnl -------------------------
dnl Allow the choice of the pkg-config library directory to be overridden.
AC_DEFUN([CF_WITH_PKG_CONFIG_LIBDIR],[
-if test "$PKG_CONFIG" != none ; then
+
+case $PKG_CONFIG in
+(no|none|yes)
+ AC_MSG_CHECKING(for pkg-config library directory)
+ ;;
+(*)
AC_MSG_CHECKING(for $PKG_CONFIG library directory)
- AC_ARG_WITH(pkg-config-libdir,
- [ --with-pkg-config-libdir=XXX use given directory for installing pc-files],
- [PKG_CONFIG_LIBDIR=$withval],
- [PKG_CONFIG_LIBDIR=yes])
+ ;;
+esac
- case x$PKG_CONFIG_LIBDIR in #(vi
- x/*) #(vi
- ;;
- xyes) #(vi
- # look for the library directory using the same prefix as the executable
+PKG_CONFIG_LIBDIR=no
+AC_ARG_WITH(pkg-config-libdir,
+ [ --with-pkg-config-libdir=XXX use given directory for installing pc-files],
+ [PKG_CONFIG_LIBDIR=$withval],
+ [test "x$PKG_CONFIG" != xnone && PKG_CONFIG_LIBDIR=yes])
+
+case x$PKG_CONFIG_LIBDIR in
+(x/*)
+ ;;
+(xyes)
+ # Look for the library directory using the same prefix as the executable
+ if test "x$PKG_CONFIG" = xnone
+ then
+ cf_path=$prefix
+ else
cf_path=`echo "$PKG_CONFIG" | sed -e 's,/[[^/]]*/[[^/]]*$,,'`
- case x`(arch) 2>/dev/null` in #(vi
- *64) #(vi
- for cf_config in $cf_path/share $cf_path/lib64 $cf_path/lib32 $cf_path/lib
- do
- if test -d $cf_config/pkgconfig
- then
- PKG_CONFIG_LIBDIR=$cf_config/pkgconfig
- break
- fi
- done
- ;;
- *)
- PKG_CONFIG_LIBDIR=$cf_path/lib/pkgconfig
- ;;
- esac
+ fi
+
+ # If you don't like using the default architecture, you have to specify the
+ # intended library directory and corresponding compiler/linker options.
+ #
+ # This case allows for Debian's 2014-flavor of multiarch, along with the
+ # most common variations before that point. Some other variants spell the
+ # directory differently, e.g., "pkg-config", and put it in unusual places.
+ # pkg-config has always been poorly standardized, which is ironic...
+ case x`(arch) 2>/dev/null` in
+ (*64)
+ cf_search_path="\
+ $cf_path/lib/*64-linux-gnu \
+ $cf_path/share \
+ $cf_path/lib64 \
+ $cf_path/lib32 \
+ $cf_path/lib"
;;
- *)
+ (*)
+ cf_search_path="\
+ $cf_path/lib/*-linux-gnu \
+ $cf_path/share \
+ $cf_path/lib32 \
+ $cf_path/lib \
+ $cf_path/libdata"
;;
esac
+ CF_VERBOSE(list...)
+ for cf_config in $cf_search_path
+ do
+ CF_VERBOSE(checking $cf_config/pkgconfig)
+ if test -d $cf_config/pkgconfig
+ then
+ PKG_CONFIG_LIBDIR=$cf_config/pkgconfig
+ AC_MSG_CHECKING(done)
+ break
+ fi
+ done
+ ;;
+(*)
+ ;;
+esac
+
+if test "x$PKG_CONFIG_LIBDIR" != xno ; then
AC_MSG_RESULT($PKG_CONFIG_LIBDIR)
fi
AC_SUBST(PKG_CONFIG_LIBDIR)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PTHREAD version: 6 updated: 2012/10/06 17:41:51
+dnl CF_WITH_PTHREAD version: 7 updated: 2015/04/18 08:56:57
dnl ---------------
dnl Check for POSIX thread library.
AC_DEFUN([CF_WITH_PTHREAD],
[
AC_MSG_CHECKING(if you want to link with the pthread library)
AC_ARG_WITH(pthread,
- [ --with-pthread use POSIX thread library],
- [with_pthread=$withval],
- [with_pthread=no])
+ [ --with-pthread use POSIX thread library],
+ [with_pthread=$withval],
+ [with_pthread=no])
AC_MSG_RESULT($with_pthread)
if test "$with_pthread" != no ; then
- AC_CHECK_HEADER(pthread.h,[
- AC_DEFINE(HAVE_PTHREADS_H,1,[Define to 1 if we have pthreads.h header])
+ AC_CHECK_HEADER(pthread.h,[
+ AC_DEFINE(HAVE_PTHREADS_H,1,[Define to 1 if we have pthreads.h header])
for cf_lib_pthread in pthread c_r
do
@@ -3694,7 +4378,7 @@ if test "$with_pthread" != no ; then
else
AC_MSG_ERROR(Cannot link with pthread library)
fi
- ])
+ ])
fi
])
dnl ---------------------------------------------------------------------------
@@ -3718,7 +4402,7 @@ AC_ARG_WITH(system-type,
])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_XOPEN_SOURCE version: 46 updated: 2014/02/09 19:30:15
+dnl CF_XOPEN_SOURCE version: 55 updated: 2018/12/31 20:46:17
dnl ---------------
dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
dnl or adapt to the vendor's definitions to get equivalent functionality,
@@ -3729,26 +4413,29 @@ dnl $1 is the nominal value for _XOPEN_SOURCE
dnl $2 is the nominal value for _POSIX_C_SOURCE
AC_DEFUN([CF_XOPEN_SOURCE],[
AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([CF_POSIX_VISIBLE])
+
+if test "$cf_cv_posix_visible" = no; then
cf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
cf_xopen_source=
-case $host_os in #(vi
-aix[[4-7]]*) #(vi
+case $host_os in
+(aix[[4-7]]*)
cf_xopen_source="-D_ALL_SOURCE"
;;
-cygwin|msys) #(vi
+(msys)
cf_XOPEN_SOURCE=600
;;
-darwin[[0-8]].*) #(vi
+(darwin[[0-8]].*)
cf_xopen_source="-D_APPLE_C_SOURCE"
;;
-darwin*) #(vi
+(darwin*)
cf_xopen_source="-D_DARWIN_C_SOURCE"
cf_XOPEN_SOURCE=
;;
-freebsd*|dragonfly*) #(vi
+(freebsd*|dragonfly*|midnightbsd*)
# 5.x headers associate
# _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
# _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
@@ -3756,56 +4443,63 @@ freebsd*|dragonfly*) #(vi
cf_XOPEN_SOURCE=600
cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
;;
-hpux11*) #(vi
+(hpux11*)
cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
;;
-hpux*) #(vi
+(hpux*)
cf_xopen_source="-D_HPUX_SOURCE"
;;
-irix[[56]].*) #(vi
+(irix[[56]].*)
cf_xopen_source="-D_SGI_SOURCE"
cf_XOPEN_SOURCE=
;;
-linux*|gnu*|mint*|k*bsd*-gnu) #(vi
- CF_GNU_SOURCE
+(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
+ CF_GNU_SOURCE($cf_XOPEN_SOURCE)
;;
-mirbsd*) #(vi
+(minix*)
+ cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
+ ;;
+(mirbsd*)
# setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
cf_XOPEN_SOURCE=
CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
;;
-netbsd*) #(vi
+(netbsd*)
cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
;;
-openbsd[[4-9]]*) #(vi
+(openbsd[[4-9]]*)
# setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
cf_xopen_source="-D_BSD_SOURCE"
cf_XOPEN_SOURCE=600
;;
-openbsd*) #(vi
+(openbsd*)
# setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
;;
-osf[[45]]*) #(vi
+(osf[[45]]*)
cf_xopen_source="-D_OSF_SOURCE"
;;
-nto-qnx*) #(vi
+(nto-qnx*)
cf_xopen_source="-D_QNX_SOURCE"
;;
-sco*) #(vi
+(sco*)
# setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
;;
-solaris2.*) #(vi
+(solaris2.*)
cf_xopen_source="-D__EXTENSIONS__"
cf_cv_xopen_source=broken
;;
-*)
+(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
+ cf_XOPEN_SOURCE=
+ cf_POSIX_C_SOURCE=
+ ;;
+(*)
CF_TRY_XOPEN_SOURCE
CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
;;
esac
if test -n "$cf_xopen_source" ; then
- CF_ADD_CFLAGS($cf_xopen_source)
+ CF_ADD_CFLAGS($cf_xopen_source,true)
fi
dnl In anything but the default case, we may have system-specific setting
@@ -3836,4 +4530,5 @@ make an error
CF_TRY_XOPEN_SOURCE
fi
fi
+fi # cf_cv_posix_visible
])
diff --git a/Ada95/configure b/Ada95/configure
index f9c4b05e7249..8551030a3c81 100755
--- a/Ada95/configure
+++ b/Ada95/configure
@@ -1,7 +1,7 @@
#! /bin/sh
-# From configure.in Revision: 1.49 .
+# From configure.in Revision: 1.74 .
# Guess values for system-dependent variables and create Makefiles.
-# Generated by Autoconf 2.52.20121002.
+# Generated by Autoconf 2.52.20200111.
#
# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc.
@@ -106,6 +106,42 @@ SHELL=${CONFIG_SHELL-/bin/sh}
: ${ac_max_here_lines=38}
ac_unique_file="gen/gen.c"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
# Initialize some variables set by options.
ac_init_help=
@@ -140,6 +176,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
libdir='${exec_prefix}/lib'
includedir='${prefix}/include'
oldincludedir='/usr/include'
@@ -282,6 +319,15 @@ do
| --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
localstatedir=$ac_optarg ;;
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst \
+ | --runs | --run | --ru)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* \
+ | --runs=* | --run=* | --ru=*)
+ runstatedir=$ac_optarg ;;
+
-mandir | --mandir | --mandi | --mand | --man | --ma | --m)
ac_prev=mandir ;;
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
@@ -619,6 +665,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR extra definition of runtime data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -652,10 +699,11 @@ Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+General Options:
--with-system-type=XXX test: override derived host system-type
+ --disable-stripping do not strip (debug info) installed executables
--with-pkg-config{=path} enable/disable use of pkg-config
--with-pkg-config-libdir=XXX use given directory for installing pc-files
- --enable-pc-files generate and install .pc files for pkg-config
--without-tests suppress build with test-programs
--enable-mixed-case tic should assume mixed-case filenames
--with-install-prefix prefixes actual install-location ($DESTDIR)
@@ -668,8 +716,8 @@ Build-Tools Needed to Compile Temporary Applications for Cross-compiling:
--with-build-libs=XXX the build libraries (${BUILD_LIBS})
Options to Specify the Libraries Built/Used:
--with-shared generate shared C-objects (needed for --with-ada-sharedlib)
- --enable-widec compile with wide-char/UTF-8 code
--with-curses-dir=DIR directory in which (n)curses is installed
+ --enable-widec compile with wide-char/UTF-8 code
--with-lib-prefix override library-prefix
--with-shlib-version=X Specify rel or abi version for shared libs
--enable-rpath-link link sample programs with rpath option
@@ -694,11 +742,13 @@ Testing/development Options:
--enable-expanded test: generate functions for certain macros
--disable-macros test: use functions rather than macros
--with-trace test: add trace() function to all models of ncurses
+ --disable-gnat-projects test: disable GNAT projects even if usable
Ada95 Binding Options:
--with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)
--with-ada-include=DIR Ada includes are in DIR (default: PREFIX/share/ada/adainclude)
--with-ada-objects=DIR Ada objects are in DIR (default: PREFIX/lib/ada/adalib)
- --with-ada-sharedlib=XX build Ada95 shared-library
+ --with-ada-sharedlib=soname build shared-library (requires GNAT projects)
+ --with-ada-libname=XXX override default Ada library-name
Some influential environment variables:
CC C compiler command
@@ -768,7 +818,7 @@ This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by $as_me, which was
-generated by GNU Autoconf 2.52.20121002. Invocation command line was
+generated by GNU Autoconf 2.52.20200111. Invocation command line was
$ $0 $@
@@ -892,7 +942,7 @@ if test -z "$CONFIG_SITE"; then
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
- { echo "$as_me:895: loading site script $ac_site_file" >&5
+ { echo "$as_me:945: loading site script $ac_site_file" >&5
echo "$as_me: loading site script $ac_site_file" >&6;}
cat "$ac_site_file" >&5
. "$ac_site_file"
@@ -903,7 +953,7 @@ if test -r "$cache_file"; then
# Some versions of bash will fail to source /dev/null (special
# files actually), so we avoid doing that.
if test -f "$cache_file"; then
- { echo "$as_me:906: loading cache $cache_file" >&5
+ { echo "$as_me:956: loading cache $cache_file" >&5
echo "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . $cache_file;;
@@ -911,7 +961,7 @@ echo "$as_me: loading cache $cache_file" >&6;}
esac
fi
else
- { echo "$as_me:914: creating cache $cache_file" >&5
+ { echo "$as_me:964: creating cache $cache_file" >&5
echo "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
@@ -927,21 +977,21 @@ for ac_var in `(set) 2>&1 |
eval ac_new_val="\$ac_env_${ac_var}_value"
case $ac_old_set,$ac_new_set in
set,)
- { echo "$as_me:930: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+ { echo "$as_me:980: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
ac_cache_corrupted=: ;;
,set)
- { echo "$as_me:934: error: \`$ac_var' was not set in the previous run" >&5
+ { echo "$as_me:984: error: \`$ac_var' was not set in the previous run" >&5
echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_cache_corrupted=: ;;
,);;
*)
if test "x$ac_old_val" != "x$ac_new_val"; then
- { echo "$as_me:940: error: \`$ac_var' has changed since the previous run:" >&5
+ { echo "$as_me:990: error: \`$ac_var' has changed since the previous run:" >&5
echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- { echo "$as_me:942: former value: $ac_old_val" >&5
+ { echo "$as_me:992: former value: $ac_old_val" >&5
echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:944: current value: $ac_new_val" >&5
+ { echo "$as_me:994: current value: $ac_new_val" >&5
echo "$as_me: current value: $ac_new_val" >&2;}
ac_cache_corrupted=:
fi;;
@@ -960,9 +1010,9 @@ echo "$as_me: current value: $ac_new_val" >&2;}
fi
done
if $ac_cache_corrupted; then
- { echo "$as_me:963: error: changes in the environment can compromise the build" >&5
+ { echo "$as_me:1013: error: changes in the environment can compromise the build" >&5
echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { echo "$as_me:965: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+ { { echo "$as_me:1015: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -974,19 +1024,19 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
- *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T=' ' ;;
+case `echo "testing\c" 2>/dev/null; echo 1,2,3`,`echo -n testing 2>/dev/null; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C= # newlines do not sed ;-) only broken shells would use this case anyway
+ ECHO_T=' ' ;;
*c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
*) ECHO_N= ECHO_C='\c' ECHO_T= ;;
esac
echo "#! $SHELL" >conftest.sh
echo "exit 0" >>conftest.sh
chmod +x conftest.sh
-if { (echo "$as_me:986: PATH=\".;.\"; conftest.sh") >&5
+if { (echo "$as_me:1036: PATH=\".;.\"; conftest.sh") >&5
(PATH=".;."; conftest.sh) 2>&5
ac_status=$?
- echo "$as_me:989: \$? = $ac_status" >&5
+ echo "$as_me:1039: \$? = $ac_status" >&5
(exit $ac_status); }; then
ac_path_separator=';'
else
@@ -1016,7 +1066,7 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
fi
done
if test -z "$ac_aux_dir"; then
- { { echo "$as_me:1019: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+ { { echo "$as_me:1069: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -1026,11 +1076,11 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
# Make sure we can run config.sub.
$ac_config_sub sun4 >/dev/null 2>&1 ||
- { { echo "$as_me:1029: error: cannot run $ac_config_sub" >&5
+ { { echo "$as_me:1079: error: cannot run $ac_config_sub" >&5
echo "$as_me: error: cannot run $ac_config_sub" >&2;}
{ (exit 1); exit 1; }; }
-echo "$as_me:1033: checking build system type" >&5
+echo "$as_me:1083: checking build system type" >&5
echo $ECHO_N "checking build system type... $ECHO_C" >&6
if test "${ac_cv_build+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1039,23 +1089,23 @@ else
test -z "$ac_cv_build_alias" &&
ac_cv_build_alias=`$ac_config_guess`
test -z "$ac_cv_build_alias" &&
- { { echo "$as_me:1042: error: cannot guess build type; you must specify one" >&5
+ { { echo "$as_me:1092: error: cannot guess build type; you must specify one" >&5
echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
{ (exit 1); exit 1; }; }
ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
- { { echo "$as_me:1046: error: $ac_config_sub $ac_cv_build_alias failed." >&5
+ { { echo "$as_me:1096: error: $ac_config_sub $ac_cv_build_alias failed." >&5
echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
{ (exit 1); exit 1; }; }
fi
-echo "$as_me:1051: result: $ac_cv_build" >&5
+echo "$as_me:1101: result: $ac_cv_build" >&5
echo "${ECHO_T}$ac_cv_build" >&6
build=$ac_cv_build
build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$as_me:1058: checking host system type" >&5
+echo "$as_me:1108: checking host system type" >&5
echo $ECHO_N "checking host system type... $ECHO_C" >&6
if test "${ac_cv_host+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1064,12 +1114,12 @@ else
test -z "$ac_cv_host_alias" &&
ac_cv_host_alias=$ac_cv_build_alias
ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
- { { echo "$as_me:1067: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+ { { echo "$as_me:1117: error: $ac_config_sub $ac_cv_host_alias failed" >&5
echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
{ (exit 1); exit 1; }; }
fi
-echo "$as_me:1072: result: $ac_cv_host" >&5
+echo "$as_me:1122: result: $ac_cv_host" >&5
echo "${ECHO_T}$ac_cv_host" >&6
host=$ac_cv_host
host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1077,7 +1127,7 @@ host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
- echo "$as_me:1080: checking target system type" >&5
+ echo "$as_me:1130: checking target system type" >&5
echo $ECHO_N "checking target system type... $ECHO_C" >&6
if test "${ac_cv_target+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1086,12 +1136,12 @@ else
test "x$ac_cv_target_alias" = "x" &&
ac_cv_target_alias=$ac_cv_host_alias
ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
- { { echo "$as_me:1089: error: $ac_config_sub $ac_cv_target_alias failed" >&5
+ { { echo "$as_me:1139: error: $ac_config_sub $ac_cv_target_alias failed" >&5
echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
{ (exit 1); exit 1; }; }
fi
-echo "$as_me:1094: result: $ac_cv_target" >&5
+echo "$as_me:1144: result: $ac_cv_target" >&5
echo "${ECHO_T}$ac_cv_target" >&6
target=$ac_cv_target
target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1123,13 +1173,13 @@ else
fi
test -z "$system_name" && system_name="$cf_cv_system_name"
-test -n "$cf_cv_system_name" && echo "$as_me:1126: result: Configuring for $cf_cv_system_name" >&5
+test -n "$cf_cv_system_name" && echo "$as_me:1176: result: Configuring for $cf_cv_system_name" >&5
echo "${ECHO_T}Configuring for $cf_cv_system_name" >&6
if test ".$system_name" != ".$cf_cv_system_name" ; then
- echo "$as_me:1130: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
+ echo "$as_me:1180: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
echo "${ECHO_T}Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&6
- { { echo "$as_me:1132: error: \"Please remove config.cache and try again.\"" >&5
+ { { echo "$as_me:1182: error: \"Please remove config.cache and try again.\"" >&5
echo "$as_me: error: \"Please remove config.cache and try again.\"" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -1137,7 +1187,7 @@ fi
# Check whether --with-system-type or --without-system-type was given.
if test "${with_system_type+set}" = set; then
withval="$with_system_type"
- { echo "$as_me:1140: WARNING: overriding system type to $withval" >&5
+ { echo "$as_me:1190: WARNING: overriding system type to $withval" >&5
echo "$as_me: WARNING: overriding system type to $withval" >&2;}
cf_cv_system_name=$withval
host_os=$withval
@@ -1149,23 +1199,23 @@ cf_user_CFLAGS="$CFLAGS"
### Default install-location
-echo "$as_me:1152: checking for prefix" >&5
+echo "$as_me:1202: checking for prefix" >&5
echo $ECHO_N "checking for prefix... $ECHO_C" >&6
if test "x$prefix" = "xNONE" ; then
case "$cf_cv_system_name" in
# non-vendor systems don't have a conflict
- openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*)
+ (openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*)
prefix=/usr
;;
- *) prefix=$ac_default_prefix
+ (*) prefix=$ac_default_prefix
;;
esac
fi
-echo "$as_me:1164: result: $prefix" >&5
+echo "$as_me:1214: result: $prefix" >&5
echo "${ECHO_T}$prefix" >&6
if test "x$prefix" = "xNONE" ; then
-echo "$as_me:1168: checking for default include-directory" >&5
+echo "$as_me:1218: checking for default include-directory" >&5
echo $ECHO_N "checking for default include-directory... $ECHO_C" >&6
test -n "$verbose" && echo 1>&6
for cf_symbol in \
@@ -1188,7 +1238,7 @@ do
fi
test -n "$verbose" && echo " tested $cf_dir" 1>&6
done
-echo "$as_me:1191: result: $includedir" >&5
+echo "$as_me:1241: result: $includedir" >&5
echo "${ECHO_T}$includedir" >&6
fi
@@ -1205,7 +1255,7 @@ if test -n "$ac_tool_prefix"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:1208: checking for $ac_word" >&5
+echo "$as_me:1258: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_CC+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1220,7 +1270,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-echo "$as_me:1223: found $ac_dir/$ac_word" >&5
+echo "$as_me:1273: found $ac_dir/$ac_word" >&5
break
done
@@ -1228,10 +1278,10 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- echo "$as_me:1231: result: $CC" >&5
+ echo "$as_me:1281: result: $CC" >&5
echo "${ECHO_T}$CC" >&6
else
- echo "$as_me:1234: result: no" >&5
+ echo "$as_me:1284: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -1244,7 +1294,7 @@ if test -z "$CC"; then
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 "$as_me:1247: checking for $ac_word" >&5
+echo "$as_me:1297: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1259,7 +1309,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_CC="$ac_prog"
-echo "$as_me:1262: found $ac_dir/$ac_word" >&5
+echo "$as_me:1312: found $ac_dir/$ac_word" >&5
break
done
@@ -1267,10 +1317,10 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- echo "$as_me:1270: result: $ac_ct_CC" >&5
+ echo "$as_me:1320: result: $ac_ct_CC" >&5
echo "${ECHO_T}$ac_ct_CC" >&6
else
- echo "$as_me:1273: result: no" >&5
+ echo "$as_me:1323: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -1280,36 +1330,36 @@ done
CC=$ac_ct_CC
fi
-test -z "$CC" && { { echo "$as_me:1283: error: no acceptable cc found in \$PATH" >&5
+test -z "$CC" && { { echo "$as_me:1333: error: no acceptable cc found in \$PATH" >&5
echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
{ (exit 1); exit 1; }; }
# Provide some information about the compiler.
-echo "$as_me:1288:" \
+echo "$as_me:1338:" \
"checking for C compiler version" >&5
ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:1291: \"$ac_compiler --version </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1341: \"$ac_compiler --version </dev/null >&5\"") >&5
(eval $ac_compiler --version </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:1294: \$? = $ac_status" >&5
+ echo "$as_me:1344: \$? = $ac_status" >&5
(exit $ac_status); }
-{ (eval echo "$as_me:1296: \"$ac_compiler -v </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1346: \"$ac_compiler -v </dev/null >&5\"") >&5
(eval $ac_compiler -v </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:1299: \$? = $ac_status" >&5
+ echo "$as_me:1349: \$? = $ac_status" >&5
(exit $ac_status); }
-{ (eval echo "$as_me:1301: \"$ac_compiler -V </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1351: \"$ac_compiler -V </dev/null >&5\"") >&5
(eval $ac_compiler -V </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:1304: \$? = $ac_status" >&5
+ echo "$as_me:1354: \$? = $ac_status" >&5
(exit $ac_status); }
cat >conftest.$ac_ext <<_ACEOF
-#line 1308 "configure"
+#line 1358 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
;
@@ -1321,13 +1371,13 @@ ac_clean_files="$ac_clean_files a.out a.exe"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-echo "$as_me:1324: checking for C compiler default output" >&5
+echo "$as_me:1374: checking for C compiler default output" >&5
echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-if { (eval echo "$as_me:1327: \"$ac_link_default\"") >&5
+if { (eval echo "$as_me:1377: \"$ac_link_default\"") >&5
(eval $ac_link_default) 2>&5
ac_status=$?
- echo "$as_me:1330: \$? = $ac_status" >&5
+ echo "$as_me:1380: \$? = $ac_status" >&5
(exit $ac_status); }; then
# Find the output, starting from the most likely. This scheme is
# not robust to junk in `.', hence go to wildcards (a.*) only as a last
@@ -1350,34 +1400,34 @@ done
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-{ { echo "$as_me:1353: error: C compiler cannot create executables" >&5
+{ { echo "$as_me:1403: error: C compiler cannot create executables" >&5
echo "$as_me: error: C compiler cannot create executables" >&2;}
{ (exit 77); exit 77; }; }
fi
ac_exeext=$ac_cv_exeext
-echo "$as_me:1359: result: $ac_file" >&5
+echo "$as_me:1409: result: $ac_file" >&5
echo "${ECHO_T}$ac_file" >&6
# Check the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-echo "$as_me:1364: checking whether the C compiler works" >&5
+echo "$as_me:1414: checking whether the C compiler works" >&5
echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
# If not cross compiling, check that we can run a simple program.
if test "$cross_compiling" != yes; then
if { ac_try='./$ac_file'
- { (eval echo "$as_me:1370: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1420: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1373: \$? = $ac_status" >&5
+ echo "$as_me:1423: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cross_compiling=no
else
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
- { { echo "$as_me:1380: error: cannot run C compiled programs.
+ { { echo "$as_me:1430: error: cannot run C compiled programs.
If you meant to cross compile, use \`--host'." >&5
echo "$as_me: error: cannot run C compiled programs.
If you meant to cross compile, use \`--host'." >&2;}
@@ -1385,24 +1435,24 @@ If you meant to cross compile, use \`--host'." >&2;}
fi
fi
fi
-echo "$as_me:1388: result: yes" >&5
+echo "$as_me:1438: result: yes" >&5
echo "${ECHO_T}yes" >&6
rm -f a.out a.exe conftest$ac_cv_exeext
ac_clean_files=$ac_clean_files_save
# Check the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-echo "$as_me:1395: checking whether we are cross compiling" >&5
+echo "$as_me:1445: checking whether we are cross compiling" >&5
echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-echo "$as_me:1397: result: $cross_compiling" >&5
+echo "$as_me:1447: result: $cross_compiling" >&5
echo "${ECHO_T}$cross_compiling" >&6
-echo "$as_me:1400: checking for executable suffix" >&5
+echo "$as_me:1450: checking for executable suffix" >&5
echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
-if { (eval echo "$as_me:1402: \"$ac_link\"") >&5
+if { (eval echo "$as_me:1452: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:1405: \$? = $ac_status" >&5
+ echo "$as_me:1455: \$? = $ac_status" >&5
(exit $ac_status); }; then
# If both `conftest.exe' and `conftest' are `present' (well, observable)
# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
@@ -1418,29 +1468,29 @@ for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
esac
done
else
- { { echo "$as_me:1421: error: cannot compute EXEEXT: cannot compile and link" >&5
+ { { echo "$as_me:1471: error: cannot compute EXEEXT: cannot compile and link" >&5
echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
{ (exit 1); exit 1; }; }
fi
rm -f conftest$ac_cv_exeext
-echo "$as_me:1427: result: $ac_cv_exeext" >&5
+echo "$as_me:1477: result: $ac_cv_exeext" >&5
echo "${ECHO_T}$ac_cv_exeext" >&6
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
ac_exeext=$EXEEXT
-echo "$as_me:1433: checking for object suffix" >&5
+echo "$as_me:1483: checking for object suffix" >&5
echo $ECHO_N "checking for object suffix... $ECHO_C" >&6
if test "${ac_cv_objext+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 1439 "configure"
+#line 1489 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
;
@@ -1448,10 +1498,10 @@ main ()
}
_ACEOF
rm -f conftest.o conftest.obj
-if { (eval echo "$as_me:1451: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1501: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1454: \$? = $ac_status" >&5
+ echo "$as_me:1504: \$? = $ac_status" >&5
(exit $ac_status); }; then
for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
case $ac_file in
@@ -1463,28 +1513,28 @@ done
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-{ { echo "$as_me:1466: error: cannot compute OBJEXT: cannot compile" >&5
+{ { echo "$as_me:1516: error: cannot compute OBJEXT: cannot compile" >&5
echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
{ (exit 1); exit 1; }; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
-echo "$as_me:1473: result: $ac_cv_objext" >&5
+echo "$as_me:1523: result: $ac_cv_objext" >&5
echo "${ECHO_T}$ac_cv_objext" >&6
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
-echo "$as_me:1477: checking whether we are using the GNU C compiler" >&5
+echo "$as_me:1527: checking whether we are using the GNU C compiler" >&5
echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
if test "${ac_cv_c_compiler_gnu+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 1483 "configure"
+#line 1533 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
#ifndef __GNUC__
choke me
@@ -1495,16 +1545,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1498: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1548: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1501: \$? = $ac_status" >&5
+ echo "$as_me:1551: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1504: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1554: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1507: \$? = $ac_status" >&5
+ echo "$as_me:1557: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_compiler_gnu=yes
else
@@ -1516,23 +1566,23 @@ rm -f conftest.$ac_objext conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
-echo "$as_me:1519: result: $ac_cv_c_compiler_gnu" >&5
+echo "$as_me:1569: result: $ac_cv_c_compiler_gnu" >&5
echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
GCC=`test $ac_compiler_gnu = yes && echo yes`
ac_test_CFLAGS=${CFLAGS+set}
ac_save_CFLAGS=$CFLAGS
CFLAGS="-g"
-echo "$as_me:1525: checking whether $CC accepts -g" >&5
+echo "$as_me:1575: checking whether $CC accepts -g" >&5
echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
if test "${ac_cv_prog_cc_g+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 1531 "configure"
+#line 1581 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
;
@@ -1540,16 +1590,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1543: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1593: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1546: \$? = $ac_status" >&5
+ echo "$as_me:1596: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1549: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1599: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1552: \$? = $ac_status" >&5
+ echo "$as_me:1602: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_prog_cc_g=yes
else
@@ -1559,7 +1609,7 @@ ac_cv_prog_cc_g=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:1562: result: $ac_cv_prog_cc_g" >&5
+echo "$as_me:1612: result: $ac_cv_prog_cc_g" >&5
echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
if test "$ac_test_CFLAGS" = set; then
CFLAGS=$ac_save_CFLAGS
@@ -1586,16 +1636,16 @@ cat >conftest.$ac_ext <<_ACEOF
#endif
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1589: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1639: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1592: \$? = $ac_status" >&5
+ echo "$as_me:1642: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1595: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1645: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1598: \$? = $ac_status" >&5
+ echo "$as_me:1648: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
for ac_declaration in \
''\
@@ -1607,12 +1657,12 @@ if { (eval echo "$as_me:1589: \"$ac_compile\"") >&5
'void exit (int);'
do
cat >conftest.$ac_ext <<_ACEOF
-#line 1610 "configure"
+#line 1660 "configure"
#include "confdefs.h"
#include <stdlib.h>
$ac_declaration
int
-main ()
+main (void)
{
exit (42);
;
@@ -1620,16 +1670,16 @@ exit (42);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1623: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1673: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1626: \$? = $ac_status" >&5
+ echo "$as_me:1676: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1629: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1679: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1632: \$? = $ac_status" >&5
+ echo "$as_me:1682: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -1639,11 +1689,11 @@ continue
fi
rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line 1642 "configure"
+#line 1692 "configure"
#include "confdefs.h"
$ac_declaration
int
-main ()
+main (void)
{
exit (42);
;
@@ -1651,16 +1701,16 @@ exit (42);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1654: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1704: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1657: \$? = $ac_status" >&5
+ echo "$as_me:1707: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1660: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1710: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1663: \$? = $ac_status" >&5
+ echo "$as_me:1713: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -1690,15 +1740,117 @@ ac_main_return=return
GCC_VERSION=none
if test "$GCC" = yes ; then
- echo "$as_me:1693: checking version of $CC" >&5
+ echo "$as_me:1743: checking version of $CC" >&5
echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
test -z "$GCC_VERSION" && GCC_VERSION=unknown
- echo "$as_me:1697: result: $GCC_VERSION" >&5
+ echo "$as_me:1747: result: $GCC_VERSION" >&5
echo "${ECHO_T}$GCC_VERSION" >&6
fi
-echo "$as_me:1701: checking for $CC option to accept ANSI C" >&5
+INTEL_COMPILER=no
+
+if test "$GCC" = yes ; then
+ case $host_os in
+ (linux*|gnu*)
+ echo "$as_me:1756: checking if this is really Intel C compiler" >&5
+echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6
+ cf_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -no-gcc"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 1761 "configure"
+#include "confdefs.h"
+
+int
+main (void)
+{
+
+#ifdef __INTEL_COMPILER
+#else
+make an error
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1778: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:1781: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:1784: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:1787: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ INTEL_COMPILER=yes
+cf_save_CFLAGS="$cf_save_CFLAGS -we147"
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$cf_save_CFLAGS"
+ echo "$as_me:1798: result: $INTEL_COMPILER" >&5
+echo "${ECHO_T}$INTEL_COMPILER" >&6
+ ;;
+ esac
+fi
+
+CLANG_COMPILER=no
+
+if test "$GCC" = yes ; then
+ echo "$as_me:1807: checking if this is really Clang C compiler" >&5
+echo $ECHO_N "checking if this is really Clang C compiler... $ECHO_C" >&6
+ cf_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Qunused-arguments"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 1812 "configure"
+#include "confdefs.h"
+
+int
+main (void)
+{
+
+#ifdef __clang__
+#else
+make an error
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1829: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:1832: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:1835: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:1838: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ CLANG_COMPILER=yes
+cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$cf_save_CFLAGS"
+ echo "$as_me:1849: result: $CLANG_COMPILER" >&5
+echo "${ECHO_T}$CLANG_COMPILER" >&6
+fi
+
+echo "$as_me:1853: checking for $CC option to accept ANSI C" >&5
echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
if test "${ac_cv_prog_cc_stdc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1706,7 +1858,7 @@ else
ac_cv_prog_cc_stdc=no
ac_save_CC=$CC
cat >conftest.$ac_ext <<_ACEOF
-#line 1709 "configure"
+#line 1861 "configure"
#include "confdefs.h"
#include <stdarg.h>
#include <stdio.h>
@@ -1737,7 +1889,7 @@ int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, i
int argc;
char **argv;
int
-main ()
+main (void)
{
return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
;
@@ -1755,16 +1907,16 @@ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIO
do
CC="$ac_save_CC $ac_arg"
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1758: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1910: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1761: \$? = $ac_status" >&5
+ echo "$as_me:1913: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1764: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1916: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1767: \$? = $ac_status" >&5
+ echo "$as_me:1919: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_prog_cc_stdc=$ac_arg
break
@@ -1781,10 +1933,10 @@ fi
case "x$ac_cv_prog_cc_stdc" in
x|xno)
- echo "$as_me:1784: result: none needed" >&5
+ echo "$as_me:1936: result: none needed" >&5
echo "${ECHO_T}none needed" >&6 ;;
*)
- echo "$as_me:1787: result: $ac_cv_prog_cc_stdc" >&5
+ echo "$as_me:1939: result: $ac_cv_prog_cc_stdc" >&5
echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
CC="$CC $ac_cv_prog_cc_stdc" ;;
esac
@@ -1792,52 +1944,182 @@ esac
# This should have been defined by AC_PROG_CC
: ${CC:=cc}
-echo "$as_me:1795: checking \$CC variable" >&5
+echo "$as_me:1947: checking \$CFLAGS variable" >&5
+echo $ECHO_N "checking \$CFLAGS variable... $ECHO_C" >&6
+case "x$CFLAGS" in
+(*-[IUD]*)
+ echo "$as_me:1951: result: broken" >&5
+echo "${ECHO_T}broken" >&6
+ { echo "$as_me:1953: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&5
+echo "$as_me: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&2;}
+ cf_flags="$CFLAGS"
+ CFLAGS=
+ for cf_arg in $cf_flags
+ do
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_arg
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+ done
+ ;;
+(*)
+ echo "$as_me:2061: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+ ;;
+esac
+
+echo "$as_me:2066: checking \$CC variable" >&5
echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6
-case "$CC" in #(vi
-*[\ \ ]-[IUD]*)
- echo "$as_me:1799: result: broken" >&5
+case "$CC" in
+(*[\ \ ]-*)
+ echo "$as_me:2070: result: broken" >&5
echo "${ECHO_T}broken" >&6
- { echo "$as_me:1801: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
-echo "$as_me: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;}
+ { echo "$as_me:2072: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
+echo "$as_me: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;}
# humor him...
- cf_flags=`echo "$CC" | sed -e 's/^[^ ]*[ ]//'`
- CC=`echo "$CC" | sed -e 's/[ ].*//'`
+ cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[ ]* / /g' -e 's/[ ]*[ ]-[^ ].*//'`
+ cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", substr($0,1+length(prog))); }'`
+ CC="$cf_prog"
+ for cf_arg in $cf_flags
+ do
+ case "x$cf_arg" in
+ (x-[IUDfgOW]*)
cf_fix_cppflags=no
cf_new_cflags=
cf_new_cppflags=
cf_new_extra_cppflags=
-for cf_add_cflags in $cf_flags
+for cf_add_cflags in $cf_arg
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -1846,21 +2128,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -1869,22 +2159,46 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
+ ;;
+ (*)
+ CC="$CC $cf_arg"
+ ;;
+ esac
+ done
+ test -n "$verbose" && echo " resulting CC: '$CC'" 1>&6
+
+echo "${as_me:-configure}:2189: testing resulting CC: '$CC' ..." 1>&5
+
+ test -n "$verbose" && echo " resulting CFLAGS: '$CFLAGS'" 1>&6
+
+echo "${as_me:-configure}:2193: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5
+
+ test -n "$verbose" && echo " resulting CPPFLAGS: '$CPPFLAGS'" 1>&6
+
+echo "${as_me:-configure}:2197: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5
+
;;
-*)
- echo "$as_me:1887: result: ok" >&5
+(*)
+ echo "$as_me:2201: result: ok" >&5
echo "${ECHO_T}ok" >&6
;;
esac
@@ -1895,7 +2209,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
-echo "$as_me:1898: checking how to run the C preprocessor" >&5
+echo "$as_me:2212: checking how to run the C preprocessor" >&5
echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
@@ -1916,18 +2230,18 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line 1919 "configure"
+#line 2233 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax error
_ACEOF
-if { (eval echo "$as_me:1924: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2238: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:1930: \$? = $ac_status" >&5
+ echo "$as_me:2244: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -1950,17 +2264,17 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line 1953 "configure"
+#line 2267 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
_ACEOF
-if { (eval echo "$as_me:1957: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2271: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:1963: \$? = $ac_status" >&5
+ echo "$as_me:2277: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -1997,7 +2311,7 @@ fi
else
ac_cv_prog_CPP=$CPP
fi
-echo "$as_me:2000: result: $CPP" >&5
+echo "$as_me:2314: result: $CPP" >&5
echo "${ECHO_T}$CPP" >&6
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
@@ -2007,18 +2321,18 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line 2010 "configure"
+#line 2324 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax error
_ACEOF
-if { (eval echo "$as_me:2015: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2329: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:2021: \$? = $ac_status" >&5
+ echo "$as_me:2335: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2041,17 +2355,17 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line 2044 "configure"
+#line 2358 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
_ACEOF
-if { (eval echo "$as_me:2048: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2362: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:2054: \$? = $ac_status" >&5
+ echo "$as_me:2368: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2079,7 +2393,7 @@ rm -f conftest.err conftest.$ac_ext
if $ac_preproc_ok; then
:
else
- { { echo "$as_me:2082: error: C preprocessor \"$CPP\" fails sanity check" >&5
+ { { echo "$as_me:2396: error: C preprocessor \"$CPP\" fails sanity check" >&5
echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -2092,14 +2406,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
if test $ac_cv_c_compiler_gnu = yes; then
- echo "$as_me:2095: checking whether $CC needs -traditional" >&5
+ echo "$as_me:2409: checking whether $CC needs -traditional" >&5
echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6
if test "${ac_cv_prog_gcc_traditional+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_pattern="Autoconf.*'x'"
cat >conftest.$ac_ext <<_ACEOF
-#line 2102 "configure"
+#line 2416 "configure"
#include "confdefs.h"
#include <sgtty.h>
int Autoconf = TIOCGETP;
@@ -2114,7 +2428,7 @@ rm -rf conftest*
if test $ac_cv_prog_gcc_traditional = no; then
cat >conftest.$ac_ext <<_ACEOF
-#line 2117 "configure"
+#line 2431 "configure"
#include "confdefs.h"
#include <termio.h>
int Autoconf = TCGETA;
@@ -2127,38 +2441,37 @@ rm -rf conftest*
fi
fi
-echo "$as_me:2130: result: $ac_cv_prog_gcc_traditional" >&5
+echo "$as_me:2444: result: $ac_cv_prog_gcc_traditional" >&5
echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6
if test $ac_cv_prog_gcc_traditional = yes; then
CC="$CC -traditional"
fi
fi
-echo "$as_me:2137: checking whether $CC understands -c and -o together" >&5
+echo "$as_me:2451: checking whether $CC understands -c and -o together" >&5
echo $ECHO_N "checking whether $CC understands -c and -o together... $ECHO_C" >&6
if test "${cf_cv_prog_CC_c_o+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat > conftest.$ac_ext <<CF_EOF
-#include <stdio.h>
-int main()
+int main(void)
{
${cf_cv_main_return:-return}(0);
}
CF_EOF
# We do the test twice because some compilers refuse to overwrite an
# existing .o file with -o, though they will create one.
-ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-if { (eval echo "$as_me:2153: \"$ac_try\"") >&5
+ac_try='$CC $CFLAGS $CPPFLAGS -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+if { (eval echo "$as_me:2466: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2156: \$? = $ac_status" >&5
+ echo "$as_me:2469: \$? = $ac_status" >&5
(exit $ac_status); } &&
- test -f conftest2.$ac_objext && { (eval echo "$as_me:2158: \"$ac_try\"") >&5
+ test -f conftest2.$ac_objext && { (eval echo "$as_me:2471: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2161: \$? = $ac_status" >&5
+ echo "$as_me:2474: \$? = $ac_status" >&5
(exit $ac_status); };
then
eval cf_cv_prog_CC_c_o=yes
@@ -2169,10 +2482,10 @@ rm -rf conftest*
fi
if test $cf_cv_prog_CC_c_o = yes; then
- echo "$as_me:2172: result: yes" >&5
+ echo "$as_me:2485: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
- echo "$as_me:2175: result: no" >&5
+ echo "$as_me:2488: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2193,7 +2506,7 @@ for ac_prog in mawk gawk nawk awk
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 "$as_me:2196: checking for $ac_word" >&5
+echo "$as_me:2509: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_AWK+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2208,7 +2521,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_AWK="$ac_prog"
-echo "$as_me:2211: found $ac_dir/$ac_word" >&5
+echo "$as_me:2524: found $ac_dir/$ac_word" >&5
break
done
@@ -2216,35 +2529,35 @@ fi
fi
AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
- echo "$as_me:2219: result: $AWK" >&5
+ echo "$as_me:2532: result: $AWK" >&5
echo "${ECHO_T}$AWK" >&6
else
- echo "$as_me:2222: result: no" >&5
+ echo "$as_me:2535: result: no" >&5
echo "${ECHO_T}no" >&6
fi
test -n "$AWK" && break
done
-test -z "$AWK" && { { echo "$as_me:2229: error: No awk program found" >&5
+test -z "$AWK" && { { echo "$as_me:2542: error: No awk program found" >&5
echo "$as_me: error: No awk program found" >&2;}
{ (exit 1); exit 1; }; }
-echo "$as_me:2233: checking for egrep" >&5
+echo "$as_me:2546: checking for egrep" >&5
echo $ECHO_N "checking for egrep... $ECHO_C" >&6
if test "${ac_cv_prog_egrep+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
if echo a | (grep -E '(a|b)') >/dev/null 2>&1
- then ac_cv_prog_egrep='grep -E'
- else ac_cv_prog_egrep='egrep'
- fi
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi
fi
-echo "$as_me:2243: result: $ac_cv_prog_egrep" >&5
+echo "$as_me:2556: result: $ac_cv_prog_egrep" >&5
echo "${ECHO_T}$ac_cv_prog_egrep" >&6
- EGREP=$ac_cv_prog_egrep
+ EGREP=$ac_cv_prog_egrep
-test -z "$EGREP" && { { echo "$as_me:2247: error: No egrep program found" >&5
+ test -z "$EGREP" && { { echo "$as_me:2560: error: No egrep program found" >&5
echo "$as_me: error: No egrep program found" >&2;}
{ (exit 1); exit 1; }; }
@@ -2260,7 +2573,7 @@ echo "$as_me: error: No egrep program found" >&2;}
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:2263: checking for a BSD compatible install" >&5
+echo "$as_me:2576: checking for a BSD compatible install" >&5
echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
if test -z "$INSTALL"; then
if test "${ac_cv_path_install+set}" = set; then
@@ -2309,7 +2622,7 @@ fi
INSTALL=$ac_install_sh
fi
fi
-echo "$as_me:2312: result: $INSTALL" >&5
+echo "$as_me:2625: result: $INSTALL" >&5
echo "${ECHO_T}$INSTALL" >&6
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
@@ -2320,18 +2633,18 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-echo "$as_me:2323: checking whether ln -s works" >&5
+echo "$as_me:2636: checking whether ln -s works" >&5
echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
LN_S=$as_ln_s
if test "$LN_S" = "ln -s"; then
- echo "$as_me:2327: result: yes" >&5
+ echo "$as_me:2640: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
- echo "$as_me:2330: result: no, using $LN_S" >&5
+ echo "$as_me:2643: result: no, using $LN_S" >&5
echo "${ECHO_T}no, using $LN_S" >&6
fi
-echo "$as_me:2334: checking if $LN_S -f options work" >&5
+echo "$as_me:2647: checking if $LN_S -f options work" >&5
echo $ECHO_N "checking if $LN_S -f options work... $ECHO_C" >&6
rm -f conf$$.src conf$$dst
@@ -2343,12 +2656,176 @@ else
cf_prog_ln_sf=no
fi
rm -f conf$$.dst conf$$src
-echo "$as_me:2346: result: $cf_prog_ln_sf" >&5
+echo "$as_me:2659: result: $cf_prog_ln_sf" >&5
echo "${ECHO_T}$cf_prog_ln_sf" >&6
test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f"
-echo "$as_me:2351: checking for long file names" >&5
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:2676: checking for a BSD compatible install" >&5
+echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ for ac_dir in $PATH; do
+ IFS=$ac_save_IFS
+ # Account for people who put trailing slashes in PATH elements.
+ case $ac_dir/ in
+ / | ./ | .// | /cC/* \
+ | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \
+ | /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ if $as_executable_p "$ac_dir/$ac_prog"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ ac_cv_path_install="$ac_dir/$ac_prog -c"
+ break 2
+ fi
+ fi
+ done
+ ;;
+ esac
+ done
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL=$ac_install_sh
+ fi
+fi
+echo "$as_me:2725: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+case $INSTALL in
+(/*)
+ ;;
+(*)
+ cf_dir=`echo $INSTALL | sed -e 's%/[^/]*$%%'`
+ test -z "$cf_dir" && cf_dir=.
+ INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
+ ;;
+esac
+
+echo "$as_me:2746: checking if you want to install stripped executables" >&5
+echo $ECHO_N "checking if you want to install stripped executables... $ECHO_C" >&6
+
+# Check whether --enable-stripping or --disable-stripping was given.
+if test "${enable_stripping+set}" = set; then
+ enableval="$enable_stripping"
+ test "$enableval" != no && enableval=yes
+ if test "$enableval" != "yes" ; then
+ with_stripping=no
+ else
+ with_stripping=yes
+ fi
+else
+ enableval=yes
+ with_stripping=yes
+
+fi;
+echo "$as_me:2763: result: $with_stripping" >&5
+echo "${ECHO_T}$with_stripping" >&6
+
+if test "$with_stripping" = yes
+then
+ INSTALL_OPT_S="-s"
+else
+ INSTALL_OPT_S=
+fi
+
+: ${INSTALL:=install}
+echo "$as_me:2774: checking if install accepts -p option" >&5
+echo $ECHO_N "checking if install accepts -p option... $ECHO_C" >&6
+if test "${cf_cv_install_p+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ rm -rf conftest*
+ date >conftest.in
+ mkdir conftest.out
+ sleep 3
+ if $INSTALL -p conftest.in conftest.out 2>/dev/null
+ then
+ if test -f conftest.out/conftest.in
+ then
+ test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \
+ test conftest.out/conftest.in -nt conftest.in 2>conftest.err
+ if test -s conftest.err
+ then
+ cf_cv_install_p=no
+ else
+ cf_cv_install_p=yes
+ fi
+ else
+ cf_cv_install_p=no
+ fi
+ else
+ cf_cv_install_p=no
+ fi
+ rm -rf conftest*
+
+fi
+echo "$as_me:2805: result: $cf_cv_install_p" >&5
+echo "${ECHO_T}$cf_cv_install_p" >&6
+
+echo "$as_me:2808: checking if install needs to be told about ownership" >&5
+echo $ECHO_N "checking if install needs to be told about ownership... $ECHO_C" >&6
+case `$ac_config_guess` in
+(*minix)
+ with_install_o=yes
+ ;;
+(*)
+ with_install_o=no
+ ;;
+esac
+
+echo "$as_me:2819: result: $with_install_o" >&5
+echo "${ECHO_T}$with_install_o" >&6
+if test "x$with_install_o" = xyes
+then
+ INSTALL_OPT_O=`id root|sed -e 's/uid=[0-9]*(/ -o /' -e 's/gid=[0-9]*(/ -g /' -e 's/ [^=[:space:]][^=[:space:]]*=.*/ /' -e 's/)//g'`
+else
+ INSTALL_OPT_O=
+fi
+
+echo "$as_me:2828: checking for long file names" >&5
echo $ECHO_N "checking for long file names... $ECHO_C" >&6
if test "${ac_cv_sys_long_file_names+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2387,7 +2864,7 @@ for ac_dir in . $ac_tmpdirs `eval echo $prefix/lib $exec_prefix/lib` ; do
rm -rf $ac_xdir 2>/dev/null
done
fi
-echo "$as_me:2390: result: $ac_cv_sys_long_file_names" >&5
+echo "$as_me:2867: result: $ac_cv_sys_long_file_names" >&5
echo "${ECHO_T}$ac_cv_sys_long_file_names" >&6
if test $ac_cv_sys_long_file_names = yes; then
@@ -2399,7 +2876,7 @@ fi
# if we find pkg-config, check if we should install the ".pc" files.
-echo "$as_me:2402: checking if you want to use pkg-config" >&5
+echo "$as_me:2879: checking if you want to use pkg-config" >&5
echo $ECHO_N "checking if you want to use pkg-config... $ECHO_C" >&6
# Check whether --with-pkg-config or --without-pkg-config was given.
@@ -2409,19 +2886,19 @@ if test "${with_pkg_config+set}" = set; then
else
cf_pkg_config=yes
fi;
-echo "$as_me:2412: result: $cf_pkg_config" >&5
+echo "$as_me:2889: result: $cf_pkg_config" >&5
echo "${ECHO_T}$cf_pkg_config" >&6
-case $cf_pkg_config in #(vi
-no) #(vi
+case $cf_pkg_config in
+(no)
PKG_CONFIG=none
;;
-yes) #(vi
+(yes)
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-echo "$as_me:2424: checking for $ac_word" >&5
+echo "$as_me:2901: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2438,7 +2915,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if $as_executable_p "$ac_dir/$ac_word"; then
ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word"
- echo "$as_me:2441: found $ac_dir/$ac_word" >&5
+ echo "$as_me:2918: found $ac_dir/$ac_word" >&5
break
fi
done
@@ -2449,10 +2926,10 @@ fi
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
if test -n "$PKG_CONFIG"; then
- echo "$as_me:2452: result: $PKG_CONFIG" >&5
+ echo "$as_me:2929: result: $PKG_CONFIG" >&5
echo "${ECHO_T}$PKG_CONFIG" >&6
else
- echo "$as_me:2455: result: no" >&5
+ echo "$as_me:2932: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2461,7 +2938,7 @@ if test -z "$ac_cv_path_PKG_CONFIG"; then
ac_pt_PKG_CONFIG=$PKG_CONFIG
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
-echo "$as_me:2464: checking for $ac_word" >&5
+echo "$as_me:2941: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2478,7 +2955,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if $as_executable_p "$ac_dir/$ac_word"; then
ac_cv_path_ac_pt_PKG_CONFIG="$ac_dir/$ac_word"
- echo "$as_me:2481: found $ac_dir/$ac_word" >&5
+ echo "$as_me:2958: found $ac_dir/$ac_word" >&5
break
fi
done
@@ -2490,10 +2967,10 @@ fi
ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
if test -n "$ac_pt_PKG_CONFIG"; then
- echo "$as_me:2493: result: $ac_pt_PKG_CONFIG" >&5
+ echo "$as_me:2970: result: $ac_pt_PKG_CONFIG" >&5
echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6
else
- echo "$as_me:2496: result: no" >&5
+ echo "$as_me:2973: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2503,7 +2980,7 @@ else
fi
;;
-*)
+(*)
PKG_CONFIG=$withval
;;
esac
@@ -2512,133 +2989,129 @@ test -z "$PKG_CONFIG" && PKG_CONFIG=none
if test "$PKG_CONFIG" != none ; then
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
+ cf_path_syntax="$ac_default_prefix"
fi
-case ".$PKG_CONFIG" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*|.\${*dir}*) #(vi
- eval PKG_CONFIG="$PKG_CONFIG"
- case ".$PKG_CONFIG" in #(vi
- .NONE/*)
- PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- { { echo "$as_me:2539: error: expected a pathname, not \"$PKG_CONFIG\"" >&5
+case ".$PKG_CONFIG" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval PKG_CONFIG="$PKG_CONFIG"
+ case ".$PKG_CONFIG" in
+ (.NONE/*)
+ PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:3016: error: expected a pathname, not \"$PKG_CONFIG\"" >&5
echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG\"" >&2;}
{ (exit 1); exit 1; }; }
- ;;
+ ;;
esac
+elif test "x$cf_pkg_config" != xno ; then
+ { echo "$as_me:3023: WARNING: pkg-config is not installed" >&5
+echo "$as_me: WARNING: pkg-config is not installed" >&2;}
fi
-if test "$PKG_CONFIG" != none ; then
- echo "$as_me:2548: checking for $PKG_CONFIG library directory" >&5
+case $PKG_CONFIG in
+(no|none|yes)
+ echo "$as_me:3029: checking for pkg-config library directory" >&5
+echo $ECHO_N "checking for pkg-config library directory... $ECHO_C" >&6
+ ;;
+(*)
+ echo "$as_me:3033: checking for $PKG_CONFIG library directory" >&5
echo $ECHO_N "checking for $PKG_CONFIG library directory... $ECHO_C" >&6
+ ;;
+esac
+
+PKG_CONFIG_LIBDIR=no
# Check whether --with-pkg-config-libdir or --without-pkg-config-libdir was given.
if test "${with_pkg_config_libdir+set}" = set; then
withval="$with_pkg_config_libdir"
PKG_CONFIG_LIBDIR=$withval
else
- PKG_CONFIG_LIBDIR=yes
+ test "x$PKG_CONFIG" != xnone && PKG_CONFIG_LIBDIR=yes
fi;
- case x$PKG_CONFIG_LIBDIR in #(vi
- x/*) #(vi
- ;;
- xyes) #(vi
- # look for the library directory using the same prefix as the executable
+case x$PKG_CONFIG_LIBDIR in
+(x/*)
+ ;;
+(xyes)
+ # Look for the library directory using the same prefix as the executable
+ if test "x$PKG_CONFIG" = xnone
+ then
+ cf_path=$prefix
+ else
cf_path=`echo "$PKG_CONFIG" | sed -e 's,/[^/]*/[^/]*$,,'`
- case x`(arch) 2>/dev/null` in #(vi
- *64) #(vi
- for cf_config in $cf_path/share $cf_path/lib64 $cf_path/lib32 $cf_path/lib
- do
- if test -d $cf_config/pkgconfig
- then
- PKG_CONFIG_LIBDIR=$cf_config/pkgconfig
- break
- fi
- done
- ;;
- *)
- PKG_CONFIG_LIBDIR=$cf_path/lib/pkgconfig
- ;;
- esac
+ fi
+
+ # If you don't like using the default architecture, you have to specify the
+ # intended library directory and corresponding compiler/linker options.
+ #
+ # This case allows for Debian's 2014-flavor of multiarch, along with the
+ # most common variations before that point. Some other variants spell the
+ # directory differently, e.g., "pkg-config", and put it in unusual places.
+ # pkg-config has always been poorly standardized, which is ironic...
+ case x`(arch) 2>/dev/null` in
+ (*64)
+ cf_search_path="\
+ $cf_path/lib/*64-linux-gnu \
+ $cf_path/share \
+ $cf_path/lib64 \
+ $cf_path/lib32 \
+ $cf_path/lib"
;;
- *)
+ (*)
+ cf_search_path="\
+ $cf_path/lib/*-linux-gnu \
+ $cf_path/share \
+ $cf_path/lib32 \
+ $cf_path/lib \
+ $cf_path/libdata"
;;
esac
- echo "$as_me:2585: result: $PKG_CONFIG_LIBDIR" >&5
-echo "${ECHO_T}$PKG_CONFIG_LIBDIR" >&6
-fi
+ test -n "$verbose" && echo " list..." 1>&6
-if test "$PKG_CONFIG" != none ; then
- echo "$as_me:2590: checking if we should install .pc files for $PKG_CONFIG" >&5
-echo $ECHO_N "checking if we should install .pc files for $PKG_CONFIG... $ECHO_C" >&6
+echo "${as_me:-configure}:3088: testing list... ..." 1>&5
-# Check whether --enable-pc-files or --disable-pc-files was given.
-if test "${enable_pc_files+set}" = set; then
- enableval="$enable_pc_files"
- enable_pc_files=$enableval
-else
- enable_pc_files=no
-fi;
- echo "$as_me:2600: result: $enable_pc_files" >&5
-echo "${ECHO_T}$enable_pc_files" >&6
- if test "$enable_pc_files" != no
- then
+ for cf_config in $cf_search_path
+ do
+ test -n "$verbose" && echo " checking $cf_config/pkgconfig" 1>&6
-if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
-else
- cf_path_syntax="$ac_default_prefix"
-fi
+echo "${as_me:-configure}:3094: testing checking $cf_config/pkgconfig ..." 1>&5
-case ".$PKG_CONFIG_LIBDIR" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*|.\${*dir}*) #(vi
- eval PKG_CONFIG_LIBDIR="$PKG_CONFIG_LIBDIR"
- case ".$PKG_CONFIG_LIBDIR" in #(vi
- .NONE/*)
- PKG_CONFIG_LIBDIR=`echo $PKG_CONFIG_LIBDIR | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- PKG_CONFIG_LIBDIR=`echo $PKG_CONFIG_LIBDIR | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- { { echo "$as_me:2630: error: expected a pathname, not \"$PKG_CONFIG_LIBDIR\"" >&5
-echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG_LIBDIR\"" >&2;}
- { (exit 1); exit 1; }; }
- ;;
+ if test -d $cf_config/pkgconfig
+ then
+ PKG_CONFIG_LIBDIR=$cf_config/pkgconfig
+ echo "$as_me:3099: checking done" >&5
+echo $ECHO_N "checking done... $ECHO_C" >&6
+ break
+ fi
+ done
+ ;;
+(*)
+ ;;
esac
- fi
-else
- enable_pc_files=no
+if test "x$PKG_CONFIG_LIBDIR" != xno ; then
+ echo "$as_me:3110: result: $PKG_CONFIG_LIBDIR" >&5
+echo "${ECHO_T}$PKG_CONFIG_LIBDIR" >&6
fi
-echo "$as_me:2641: checking if you want to build test-programs" >&5
+echo "$as_me:3114: checking if you want to build test-programs" >&5
echo $ECHO_N "checking if you want to build test-programs... $ECHO_C" >&6
# Check whether --with-tests or --without-tests was given.
@@ -2648,10 +3121,10 @@ if test "${with_tests+set}" = set; then
else
cf_with_tests=yes
fi;
-echo "$as_me:2651: result: $cf_with_tests" >&5
+echo "$as_me:3124: result: $cf_with_tests" >&5
echo "${ECHO_T}$cf_with_tests" >&6
-echo "$as_me:2654: checking if we should assume mixed-case filenames" >&5
+echo "$as_me:3127: checking if we should assume mixed-case filenames" >&5
echo $ECHO_N "checking if we should assume mixed-case filenames... $ECHO_C" >&6
# Check whether --enable-mixed-case or --disable-mixed-case was given.
@@ -2661,22 +3134,22 @@ if test "${enable_mixed_case+set}" = set; then
else
enable_mixedcase=auto
fi;
-echo "$as_me:2664: result: $enable_mixedcase" >&5
+echo "$as_me:3137: result: $enable_mixedcase" >&5
echo "${ECHO_T}$enable_mixedcase" >&6
if test "$enable_mixedcase" = "auto" ; then
-echo "$as_me:2668: checking if filesystem supports mixed-case filenames" >&5
+echo "$as_me:3141: checking if filesystem supports mixed-case filenames" >&5
echo $ECHO_N "checking if filesystem supports mixed-case filenames... $ECHO_C" >&6
if test "${cf_cv_mixedcase+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test "$cross_compiling" = yes ; then
- case $target_alias in #(vi
- *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*) #(vi
+ case $target_alias in
+ (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*)
cf_cv_mixedcase=no
;;
- *)
+ (*)
cf_cv_mixedcase=yes
;;
esac
@@ -2692,7 +3165,7 @@ else
fi
fi
-echo "$as_me:2695: result: $cf_cv_mixedcase" >&5
+echo "$as_me:3168: result: $cf_cv_mixedcase" >&5
echo "${ECHO_T}$cf_cv_mixedcase" >&6
test "$cf_cv_mixedcase" = yes &&
cat >>confdefs.h <<\EOF
@@ -2700,17 +3173,17 @@ cat >>confdefs.h <<\EOF
EOF
else
- cf_cv_mixedcase=$enable_mixedcase
- if test "$enable_mixedcase" = "yes" ; then
- cat >>confdefs.h <<\EOF
+ cf_cv_mixedcase=$enable_mixedcase
+ if test "$enable_mixedcase" = "yes" ; then
+ cat >>confdefs.h <<\EOF
#define MIXEDCASE_FILENAMES 1
EOF
- fi
+ fi
fi
# do this after mixed-case option (tags/TAGS is not as important as tic).
-echo "$as_me:2713: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "$as_me:3186: checking whether ${MAKE-make} sets \${MAKE}" >&5
echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
@@ -2730,11 +3203,11 @@ fi
rm -f conftest.make
fi
if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
- echo "$as_me:2733: result: yes" >&5
+ echo "$as_me:3206: result: yes" >&5
echo "${ECHO_T}yes" >&6
SET_MAKE=
else
- echo "$as_me:2737: result: no" >&5
+ echo "$as_me:3210: result: no" >&5
echo "${ECHO_T}no" >&6
SET_MAKE="MAKE=${MAKE-make}"
fi
@@ -2743,7 +3216,7 @@ for ac_prog in exctags ctags
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 "$as_me:2746: checking for $ac_word" >&5
+echo "$as_me:3219: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_CTAGS+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2758,7 +3231,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_CTAGS="$ac_prog"
-echo "$as_me:2761: found $ac_dir/$ac_word" >&5
+echo "$as_me:3234: found $ac_dir/$ac_word" >&5
break
done
@@ -2766,10 +3239,10 @@ fi
fi
CTAGS=$ac_cv_prog_CTAGS
if test -n "$CTAGS"; then
- echo "$as_me:2769: result: $CTAGS" >&5
+ echo "$as_me:3242: result: $CTAGS" >&5
echo "${ECHO_T}$CTAGS" >&6
else
- echo "$as_me:2772: result: no" >&5
+ echo "$as_me:3245: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2780,7 +3253,7 @@ for ac_prog in exetags etags
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 "$as_me:2783: checking for $ac_word" >&5
+echo "$as_me:3256: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ETAGS+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2795,7 +3268,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ETAGS="$ac_prog"
-echo "$as_me:2798: found $ac_dir/$ac_word" >&5
+echo "$as_me:3271: found $ac_dir/$ac_word" >&5
break
done
@@ -2803,10 +3276,10 @@ fi
fi
ETAGS=$ac_cv_prog_ETAGS
if test -n "$ETAGS"; then
- echo "$as_me:2806: result: $ETAGS" >&5
+ echo "$as_me:3279: result: $ETAGS" >&5
echo "${ECHO_T}$ETAGS" >&6
else
- echo "$as_me:2809: result: no" >&5
+ echo "$as_me:3282: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2815,7 +3288,7 @@ done
# Extract the first word of "${CTAGS:-ctags}", so it can be a program name with args.
set dummy ${CTAGS:-ctags}; ac_word=$2
-echo "$as_me:2818: checking for $ac_word" >&5
+echo "$as_me:3291: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_MAKE_LOWER_TAGS+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2830,7 +3303,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_MAKE_LOWER_TAGS="yes"
-echo "$as_me:2833: found $ac_dir/$ac_word" >&5
+echo "$as_me:3306: found $ac_dir/$ac_word" >&5
break
done
@@ -2839,17 +3312,17 @@ fi
fi
MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS
if test -n "$MAKE_LOWER_TAGS"; then
- echo "$as_me:2842: result: $MAKE_LOWER_TAGS" >&5
+ echo "$as_me:3315: result: $MAKE_LOWER_TAGS" >&5
echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6
else
- echo "$as_me:2845: result: no" >&5
+ echo "$as_me:3318: result: no" >&5
echo "${ECHO_T}no" >&6
fi
if test "$cf_cv_mixedcase" = yes ; then
# Extract the first word of "${ETAGS:-etags}", so it can be a program name with args.
set dummy ${ETAGS:-etags}; ac_word=$2
-echo "$as_me:2852: checking for $ac_word" >&5
+echo "$as_me:3325: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_MAKE_UPPER_TAGS+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2864,7 +3337,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_MAKE_UPPER_TAGS="yes"
-echo "$as_me:2867: found $ac_dir/$ac_word" >&5
+echo "$as_me:3340: found $ac_dir/$ac_word" >&5
break
done
@@ -2873,10 +3346,10 @@ fi
fi
MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS
if test -n "$MAKE_UPPER_TAGS"; then
- echo "$as_me:2876: result: $MAKE_UPPER_TAGS" >&5
+ echo "$as_me:3349: result: $MAKE_UPPER_TAGS" >&5
echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6
else
- echo "$as_me:2879: result: no" >&5
+ echo "$as_me:3352: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2896,7 +3369,7 @@ else
MAKE_LOWER_TAGS="#"
fi
-echo "$as_me:2899: checking for makeflags variable" >&5
+echo "$as_me:3372: checking for makeflags variable" >&5
echo $ECHO_N "checking for makeflags variable... $ECHO_C" >&6
if test "${cf_cv_makeflags+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2906,37 +3379,41 @@ else
for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
do
cat >cf_makeflags.tmp <<CF_EOF
-SHELL = /bin/sh
+SHELL = $SHELL
all :
@ echo '.$cf_option'
CF_EOF
cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp 2>/dev/null | fgrep -v "ing directory" | sed -e 's,[ ]*$,,'`
case "$cf_result" in
- .*k)
+ (.*k|.*kw)
cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`
case "$cf_result" in
- .*CC=*) cf_cv_makeflags=
+ (.*CC=*) cf_cv_makeflags=
;;
- *) cf_cv_makeflags=$cf_option
+ (*) cf_cv_makeflags=$cf_option
;;
esac
break
;;
- .-) ;;
- *) echo "given option \"$cf_option\", no match \"$cf_result\""
+ (.-)
+ ;;
+ (*)
+
+echo "${as_me:-configure}:3402: testing given option \"$cf_option\",no match \"$cf_result\" ..." 1>&5
+
;;
esac
done
rm -f cf_makeflags.tmp
fi
-echo "$as_me:2933: result: $cf_cv_makeflags" >&5
+echo "$as_me:3410: result: $cf_cv_makeflags" >&5
echo "${ECHO_T}$cf_cv_makeflags" >&6
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-echo "$as_me:2939: checking for $ac_word" >&5
+echo "$as_me:3416: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_RANLIB+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2951,7 +3428,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-echo "$as_me:2954: found $ac_dir/$ac_word" >&5
+echo "$as_me:3431: found $ac_dir/$ac_word" >&5
break
done
@@ -2959,10 +3436,10 @@ fi
fi
RANLIB=$ac_cv_prog_RANLIB
if test -n "$RANLIB"; then
- echo "$as_me:2962: result: $RANLIB" >&5
+ echo "$as_me:3439: result: $RANLIB" >&5
echo "${ECHO_T}$RANLIB" >&6
else
- echo "$as_me:2965: result: no" >&5
+ echo "$as_me:3442: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2971,7 +3448,7 @@ if test -z "$ac_cv_prog_RANLIB"; then
ac_ct_RANLIB=$RANLIB
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
-echo "$as_me:2974: checking for $ac_word" >&5
+echo "$as_me:3451: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2986,7 +3463,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_RANLIB="ranlib"
-echo "$as_me:2989: found $ac_dir/$ac_word" >&5
+echo "$as_me:3466: found $ac_dir/$ac_word" >&5
break
done
@@ -2995,10 +3472,10 @@ fi
fi
ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
if test -n "$ac_ct_RANLIB"; then
- echo "$as_me:2998: result: $ac_ct_RANLIB" >&5
+ echo "$as_me:3475: result: $ac_ct_RANLIB" >&5
echo "${ECHO_T}$ac_ct_RANLIB" >&6
else
- echo "$as_me:3001: result: no" >&5
+ echo "$as_me:3478: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3010,7 +3487,7 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
set dummy ${ac_tool_prefix}ld; ac_word=$2
-echo "$as_me:3013: checking for $ac_word" >&5
+echo "$as_me:3490: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_LD+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3025,7 +3502,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_LD="${ac_tool_prefix}ld"
-echo "$as_me:3028: found $ac_dir/$ac_word" >&5
+echo "$as_me:3505: found $ac_dir/$ac_word" >&5
break
done
@@ -3033,10 +3510,10 @@ fi
fi
LD=$ac_cv_prog_LD
if test -n "$LD"; then
- echo "$as_me:3036: result: $LD" >&5
+ echo "$as_me:3513: result: $LD" >&5
echo "${ECHO_T}$LD" >&6
else
- echo "$as_me:3039: result: no" >&5
+ echo "$as_me:3516: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3045,7 +3522,7 @@ if test -z "$ac_cv_prog_LD"; then
ac_ct_LD=$LD
# Extract the first word of "ld", so it can be a program name with args.
set dummy ld; ac_word=$2
-echo "$as_me:3048: checking for $ac_word" >&5
+echo "$as_me:3525: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_LD+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3060,7 +3537,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_LD="ld"
-echo "$as_me:3063: found $ac_dir/$ac_word" >&5
+echo "$as_me:3540: found $ac_dir/$ac_word" >&5
break
done
@@ -3069,10 +3546,10 @@ fi
fi
ac_ct_LD=$ac_cv_prog_ac_ct_LD
if test -n "$ac_ct_LD"; then
- echo "$as_me:3072: result: $ac_ct_LD" >&5
+ echo "$as_me:3549: result: $ac_ct_LD" >&5
echo "${ECHO_T}$ac_ct_LD" >&6
else
- echo "$as_me:3075: result: no" >&5
+ echo "$as_me:3552: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3084,7 +3561,7 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2
-echo "$as_me:3087: checking for $ac_word" >&5
+echo "$as_me:3564: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_AR+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3099,7 +3576,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_AR="${ac_tool_prefix}ar"
-echo "$as_me:3102: found $ac_dir/$ac_word" >&5
+echo "$as_me:3579: found $ac_dir/$ac_word" >&5
break
done
@@ -3107,10 +3584,10 @@ fi
fi
AR=$ac_cv_prog_AR
if test -n "$AR"; then
- echo "$as_me:3110: result: $AR" >&5
+ echo "$as_me:3587: result: $AR" >&5
echo "${ECHO_T}$AR" >&6
else
- echo "$as_me:3113: result: no" >&5
+ echo "$as_me:3590: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3119,7 +3596,7 @@ if test -z "$ac_cv_prog_AR"; then
ac_ct_AR=$AR
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
-echo "$as_me:3122: checking for $ac_word" >&5
+echo "$as_me:3599: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3134,7 +3611,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_AR="ar"
-echo "$as_me:3137: found $ac_dir/$ac_word" >&5
+echo "$as_me:3614: found $ac_dir/$ac_word" >&5
break
done
@@ -3143,10 +3620,10 @@ fi
fi
ac_ct_AR=$ac_cv_prog_ac_ct_AR
if test -n "$ac_ct_AR"; then
- echo "$as_me:3146: result: $ac_ct_AR" >&5
+ echo "$as_me:3623: result: $ac_ct_AR" >&5
echo "${ECHO_T}$ac_ct_AR" >&6
else
- echo "$as_me:3149: result: no" >&5
+ echo "$as_me:3626: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3158,7 +3635,7 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2
-echo "$as_me:3161: checking for $ac_word" >&5
+echo "$as_me:3638: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_AR+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3173,7 +3650,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_AR="${ac_tool_prefix}ar"
-echo "$as_me:3176: found $ac_dir/$ac_word" >&5
+echo "$as_me:3653: found $ac_dir/$ac_word" >&5
break
done
@@ -3181,10 +3658,10 @@ fi
fi
AR=$ac_cv_prog_AR
if test -n "$AR"; then
- echo "$as_me:3184: result: $AR" >&5
+ echo "$as_me:3661: result: $AR" >&5
echo "${ECHO_T}$AR" >&6
else
- echo "$as_me:3187: result: no" >&5
+ echo "$as_me:3664: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3193,7 +3670,7 @@ if test -z "$ac_cv_prog_AR"; then
ac_ct_AR=$AR
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
-echo "$as_me:3196: checking for $ac_word" >&5
+echo "$as_me:3673: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3208,7 +3685,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_AR="ar"
-echo "$as_me:3211: found $ac_dir/$ac_word" >&5
+echo "$as_me:3688: found $ac_dir/$ac_word" >&5
break
done
@@ -3217,10 +3694,10 @@ fi
fi
ac_ct_AR=$ac_cv_prog_ac_ct_AR
if test -n "$ac_ct_AR"; then
- echo "$as_me:3220: result: $ac_ct_AR" >&5
+ echo "$as_me:3697: result: $ac_ct_AR" >&5
echo "${ECHO_T}$ac_ct_AR" >&6
else
- echo "$as_me:3223: result: no" >&5
+ echo "$as_me:3700: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3229,14 +3706,14 @@ else
AR="$ac_cv_prog_AR"
fi
-echo "$as_me:3232: checking for options to update archives" >&5
+echo "$as_me:3709: checking for options to update archives" >&5
echo $ECHO_N "checking for options to update archives... $ECHO_C" >&6
if test "${cf_cv_ar_flags+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cf_cv_ar_flags=unknown
- for cf_ar_flags in -curv curv -crv crv -cqv cqv -rv rv
+ for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
do
# check if $ARFLAGS already contains this choice
@@ -3252,13 +3729,13 @@ else
rm -f conftest.a
cat >conftest.$ac_ext <<EOF
-#line 3255 "configure"
+#line 3732 "configure"
int testdata[3] = { 123, 456, 789 };
EOF
- if { (eval echo "$as_me:3258: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:3735: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3261: \$? = $ac_status" >&5
+ echo "$as_me:3738: \$? = $ac_status" >&5
(exit $ac_status); } ; then
echo "$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext" >&5
$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext 2>&5 1>/dev/null
@@ -3269,7 +3746,7 @@ EOF
else
test -n "$verbose" && echo " cannot compile test-program" 1>&6
-echo "${as_me:-configure}:3272: testing cannot compile test-program ..." 1>&5
+echo "${as_me:-configure}:3749: testing cannot compile test-program ..." 1>&5
break
fi
@@ -3277,7 +3754,7 @@ echo "${as_me:-configure}:3272: testing cannot compile test-program ..." 1>&5
rm -f conftest.a conftest.$ac_ext conftest.$ac_cv_objext
fi
-echo "$as_me:3280: result: $cf_cv_ar_flags" >&5
+echo "$as_me:3757: result: $cf_cv_ar_flags" >&5
echo "${ECHO_T}$cf_cv_ar_flags" >&6
if test -n "$ARFLAGS" ; then
@@ -3288,30 +3765,30 @@ else
ARFLAGS=$cf_cv_ar_flags
fi
- echo "$as_me:3291: checking for PATH separator" >&5
+ echo "$as_me:3768: checking for PATH separator" >&5
echo $ECHO_N "checking for PATH separator... $ECHO_C" >&6
case $cf_cv_system_name in
- os2*) PATH_SEPARATOR=';' ;;
- *) ${PATH_SEPARATOR:=':'} ;;
+ (os2*) PATH_SEPARATOR=';' ;;
+ (*) ${PATH_SEPARATOR:=':'} ;;
esac
- echo "$as_me:3298: result: $PATH_SEPARATOR" >&5
+ echo "$as_me:3775: result: $PATH_SEPARATOR" >&5
echo "${ECHO_T}$PATH_SEPARATOR" >&6
-echo "$as_me:3301: checking if you have specified an install-prefix" >&5
+echo "$as_me:3778: checking if you have specified an install-prefix" >&5
echo $ECHO_N "checking if you have specified an install-prefix... $ECHO_C" >&6
# Check whether --with-install-prefix or --without-install-prefix was given.
if test "${with_install_prefix+set}" = set; then
withval="$with_install_prefix"
- case "$withval" in #(vi
- yes|no) #(vi
+ case "$withval" in
+ (yes|no)
;;
- *) DESTDIR="$withval"
+ (*) DESTDIR="$withval"
;;
esac
fi;
-echo "$as_me:3314: result: $DESTDIR" >&5
+echo "$as_me:3791: result: $DESTDIR" >&5
echo "${ECHO_T}$DESTDIR" >&6
###############################################################################
@@ -3335,11 +3812,11 @@ if test "${with_build_cc+set}" = set; then
withval="$with_build_cc"
BUILD_CC="$withval"
else
- for ac_prog in gcc cc cl
+ for ac_prog in gcc clang c99 c89 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 "$as_me:3342: checking for $ac_word" >&5
+echo "$as_me:3819: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_BUILD_CC+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3354,7 +3831,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_BUILD_CC="$ac_prog"
-echo "$as_me:3357: found $ac_dir/$ac_word" >&5
+echo "$as_me:3834: found $ac_dir/$ac_word" >&5
break
done
@@ -3362,23 +3839,24 @@ fi
fi
BUILD_CC=$ac_cv_prog_BUILD_CC
if test -n "$BUILD_CC"; then
- echo "$as_me:3365: result: $BUILD_CC" >&5
+ echo "$as_me:3842: result: $BUILD_CC" >&5
echo "${ECHO_T}$BUILD_CC" >&6
else
- echo "$as_me:3368: result: no" >&5
+ echo "$as_me:3845: result: no" >&5
echo "${ECHO_T}no" >&6
fi
test -n "$BUILD_CC" && break
done
+test -n "$BUILD_CC" || BUILD_CC="none"
fi;
- echo "$as_me:3376: checking for native build C compiler" >&5
+ echo "$as_me:3854: checking for native build C compiler" >&5
echo $ECHO_N "checking for native build C compiler... $ECHO_C" >&6
- echo "$as_me:3378: result: $BUILD_CC" >&5
+ echo "$as_me:3856: result: $BUILD_CC" >&5
echo "${ECHO_T}$BUILD_CC" >&6
- echo "$as_me:3381: checking for native build C preprocessor" >&5
+ echo "$as_me:3859: checking for native build C preprocessor" >&5
echo $ECHO_N "checking for native build C preprocessor... $ECHO_C" >&6
# Check whether --with-build-cpp or --without-build-cpp was given.
@@ -3388,10 +3866,10 @@ if test "${with_build_cpp+set}" = set; then
else
BUILD_CPP='${BUILD_CC} -E'
fi;
- echo "$as_me:3391: result: $BUILD_CPP" >&5
+ echo "$as_me:3869: result: $BUILD_CPP" >&5
echo "${ECHO_T}$BUILD_CPP" >&6
- echo "$as_me:3394: checking for native build C flags" >&5
+ echo "$as_me:3872: checking for native build C flags" >&5
echo $ECHO_N "checking for native build C flags... $ECHO_C" >&6
# Check whether --with-build-cflags or --without-build-cflags was given.
@@ -3399,10 +3877,10 @@ if test "${with_build_cflags+set}" = set; then
withval="$with_build_cflags"
BUILD_CFLAGS="$withval"
fi;
- echo "$as_me:3402: result: $BUILD_CFLAGS" >&5
+ echo "$as_me:3880: result: $BUILD_CFLAGS" >&5
echo "${ECHO_T}$BUILD_CFLAGS" >&6
- echo "$as_me:3405: checking for native build C preprocessor-flags" >&5
+ echo "$as_me:3883: checking for native build C preprocessor-flags" >&5
echo $ECHO_N "checking for native build C preprocessor-flags... $ECHO_C" >&6
# Check whether --with-build-cppflags or --without-build-cppflags was given.
@@ -3410,10 +3888,10 @@ if test "${with_build_cppflags+set}" = set; then
withval="$with_build_cppflags"
BUILD_CPPFLAGS="$withval"
fi;
- echo "$as_me:3413: result: $BUILD_CPPFLAGS" >&5
+ echo "$as_me:3891: result: $BUILD_CPPFLAGS" >&5
echo "${ECHO_T}$BUILD_CPPFLAGS" >&6
- echo "$as_me:3416: checking for native build linker-flags" >&5
+ echo "$as_me:3894: checking for native build linker-flags" >&5
echo $ECHO_N "checking for native build linker-flags... $ECHO_C" >&6
# Check whether --with-build-ldflags or --without-build-ldflags was given.
@@ -3421,10 +3899,10 @@ if test "${with_build_ldflags+set}" = set; then
withval="$with_build_ldflags"
BUILD_LDFLAGS="$withval"
fi;
- echo "$as_me:3424: result: $BUILD_LDFLAGS" >&5
+ echo "$as_me:3902: result: $BUILD_LDFLAGS" >&5
echo "${ECHO_T}$BUILD_LDFLAGS" >&6
- echo "$as_me:3427: checking for native build linker-libraries" >&5
+ echo "$as_me:3905: checking for native build linker-libraries" >&5
echo $ECHO_N "checking for native build linker-libraries... $ECHO_C" >&6
# Check whether --with-build-libs or --without-build-libs was given.
@@ -3432,7 +3910,7 @@ if test "${with_build_libs+set}" = set; then
withval="$with_build_libs"
BUILD_LIBS="$withval"
fi;
- echo "$as_me:3435: result: $BUILD_LIBS" >&5
+ echo "$as_me:3913: result: $BUILD_LIBS" >&5
echo "${ECHO_T}$BUILD_LIBS" >&6
# this assumes we're on Unix.
@@ -3442,7 +3920,7 @@ echo "${ECHO_T}$BUILD_LIBS" >&6
: ${BUILD_CC:='${CC}'}
if ( test "$BUILD_CC" = "$CC" || test "$BUILD_CC" = '${CC}' ) ; then
- { { echo "$as_me:3445: error: Cross-build requires two compilers.
+ { { echo "$as_me:3923: error: Cross-build requires two compilers.
Use --with-build-cc to specify the native compiler." >&5
echo "$as_me: error: Cross-build requires two compilers.
Use --with-build-cc to specify the native compiler." >&2;}
@@ -3467,7 +3945,7 @@ fi
### shared, for example.
cf_list_models=""
-echo "$as_me:3470: checking if you want to build shared C-objects" >&5
+echo "$as_me:3948: checking if you want to build shared C-objects" >&5
echo $ECHO_N "checking if you want to build shared C-objects... $ECHO_C" >&6
# Check whether --with-shared or --without-shared was given.
@@ -3477,27 +3955,27 @@ if test "${with_shared+set}" = set; then
else
with_shared=no
fi;
-echo "$as_me:3480: result: $with_shared" >&5
+echo "$as_me:3958: result: $with_shared" >&5
echo "${ECHO_T}$with_shared" >&6
test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared"
-echo "$as_me:3484: checking for specified models" >&5
+echo "$as_me:3962: checking for specified models" >&5
echo $ECHO_N "checking for specified models... $ECHO_C" >&6
test -z "$cf_list_models" && cf_list_models=normal
-echo "$as_me:3487: result: $cf_list_models" >&5
+echo "$as_me:3965: result: $cf_list_models" >&5
echo "${ECHO_T}$cf_list_models" >&6
### Use the first model as the default, and save its suffix for use in building
### up test-applications.
-echo "$as_me:3492: checking for default model" >&5
+echo "$as_me:3970: checking for default model" >&5
echo $ECHO_N "checking for default model... $ECHO_C" >&6
DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'`
-echo "$as_me:3495: result: $DFT_LWR_MODEL" >&5
+echo "$as_me:3973: result: $DFT_LWR_MODEL" >&5
echo "${ECHO_T}$DFT_LWR_MODEL" >&6
DFT_UPR_MODEL=`echo "$DFT_LWR_MODEL" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-echo "$as_me:3500: checking for specific curses-directory" >&5
+echo "$as_me:3978: checking for specific curses-directory" >&5
echo $ECHO_N "checking for specific curses-directory... $ECHO_C" >&6
# Check whether --with-curses-dir or --without-curses-dir was given.
@@ -3507,41 +3985,41 @@ if test "${with_curses_dir+set}" = set; then
else
cf_cv_curses_dir=no
fi;
-echo "$as_me:3510: result: $cf_cv_curses_dir" >&5
+echo "$as_me:3988: result: $cf_cv_curses_dir" >&5
echo "${ECHO_T}$cf_cv_curses_dir" >&6
if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" )
then
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
+ cf_path_syntax="$ac_default_prefix"
fi
-case ".$withval" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*|.\${*dir}*) #(vi
- eval withval="$withval"
- case ".$withval" in #(vi
- .NONE/*)
- withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- { { echo "$as_me:3541: error: expected a pathname, not \"$withval\"" >&5
+case ".$withval" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval withval="$withval"
+ case ".$withval" in
+ (.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:4019: error: expected a pathname, not \"$withval\"" >&5
echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
{ (exit 1); exit 1; }; }
- ;;
+ ;;
esac
if test -d "$cf_cv_curses_dir"
@@ -3569,13 +4047,16 @@ if test -n "$cf_cv_curses_dir/include" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 3574 "configure"
+#line 4055 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -3583,16 +4064,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3586: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4067: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3589: \$? = $ac_status" >&5
+ echo "$as_me:4070: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3592: \"$ac_try\"") >&5
+ { (eval echo "$as_me:4073: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3595: \$? = $ac_status" >&5
+ echo "$as_me:4076: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -3609,7 +4090,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:3612: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:4093: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -3619,42 +4100,1871 @@ echo "${as_me:-configure}:3612: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
fi
if test -n "$cf_cv_curses_dir/lib" ; then
- for cf_add_libdir in $cf_cv_curses_dir/lib
+ for cf_add_libdir in $cf_cv_curses_dir/lib
+ do
+ if test $cf_add_libdir = /usr/lib ; then
+ :
+ elif test -d $cf_add_libdir
+ then
+ cf_have_libdir=no
+ if test -n "$LDFLAGS$LIBS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_libdir in $LDFLAGS $LIBS ; do
+ if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
+ cf_have_libdir=yes; break
+ fi
+ done
+ fi
+ if test "$cf_have_libdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
+
+echo "${as_me:-configure}:4129: testing adding $cf_add_libdir to library-path ..." 1>&5
+
+ LDFLAGS="-L$cf_add_libdir $LDFLAGS"
+ fi
+ fi
+ done
+fi
+
+ fi
+fi
+
+cf_ncuconfig_root=ncurses
+cf_have_ncuconfig=no
+
+if test "x${PKG_CONFIG:=none}" != xnone; then
+ echo "$as_me:4144: checking pkg-config for $cf_ncuconfig_root" >&5
+echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6
+ if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
+ echo "$as_me:4147: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+ echo "$as_me:4150: checking if the $cf_ncuconfig_root package files work" >&5
+echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6
+ cf_have_ncuconfig=unknown
+
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_save_LIBS="$LIBS"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in `$PKG_CONFIG --cflags $cf_ncuconfig_root`
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in `$PKG_CONFIG --libs $cf_ncuconfig_root`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4272 "configure"
+#include "confdefs.h"
+#include <${cf_cv_ncurses_header:-curses.h}>
+int
+main (void)
+{
+initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4284: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:4287: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:4290: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4293: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ if test "$cross_compiling" = yes; then
+ cf_have_ncuconfig=maybe
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4299 "configure"
+#include "confdefs.h"
+#include <${cf_cv_ncurses_header:-curses.h}>
+ int main(void)
+ { char *xx = curses_version(); return (xx == 0); }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:4306: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:4309: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:4311: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4314: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_have_ncuconfig=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_ncuconfig=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_ncuconfig=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ echo "$as_me:4331: result: $cf_have_ncuconfig" >&5
+echo "${ECHO_T}$cf_have_ncuconfig" >&6
+ test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
+ if test "$cf_have_ncuconfig" != "yes"
+ then
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ NCURSES_CONFIG_PKG=none
+ else
+
+cat >>confdefs.h <<\EOF
+#define NCURSES 1
+EOF
+
+ NCURSES_CONFIG_PKG=$cf_ncuconfig_root
+
+echo "$as_me:4347: checking for terminfo header" >&5
+echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
+if test "${cf_cv_term_header+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+case ${cf_cv_ncurses_header} in
+(*/ncurses.h|*/ncursesw.h)
+ cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'`
+ ;;
+(*)
+ cf_term_header=term.h
+ ;;
+esac
+
+for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
+do
+cat >conftest.$ac_ext <<_ACEOF
+#line 4365 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+#include <${cf_cv_ncurses_header:-curses.h}>
+#include <$cf_test>
+
+int
+main (void)
+{
+int x = auto_left_margin
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4380: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4383: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:4386: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4389: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ cf_cv_term_header="$cf_test"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+ cf_cv_term_header=unknown
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ test "$cf_cv_term_header" != unknown && break
+done
+
+fi
+echo "$as_me:4405: result: $cf_cv_term_header" >&5
+echo "${ECHO_T}$cf_cv_term_header" >&6
+
+# Set definitions to allow ifdef'ing to accommodate subdirectories
+
+case $cf_cv_term_header in
+(*term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_TERM_H 1
+EOF
+
+ ;;
+esac
+
+case $cf_cv_term_header in
+(ncurses/term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSES_TERM_H 1
+EOF
+
+ ;;
+(ncursesw/term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSESW_TERM_H 1
+EOF
+
+ ;;
+esac
+
+ fi
+
+ else
+ echo "$as_me:4440: result: no" >&5
+echo "${ECHO_T}no" >&6
+ NCURSES_CONFIG_PKG=none
+ fi
+else
+ NCURSES_CONFIG_PKG=none
+fi
+
+if test "x$cf_have_ncuconfig" = "xno"; then
+ cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}"
+
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
do
- if test $cf_add_libdir = /usr/lib ; then
- :
- elif test -d $cf_add_libdir
- then
- cf_have_libdir=no
- if test -n "$LDFLAGS$LIBS" ; then
- # a loop is needed to ensure we can add subdirs of existing dirs
- for cf_test_libdir in $LDFLAGS $LIBS ; do
- if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
- cf_have_libdir=yes; break
- fi
- done
- fi
- if test "$cf_have_libdir" = no ; then
- test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:4456: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$NCURSES_CONFIG"; then
+ ac_cv_prog_NCURSES_CONFIG="$NCURSES_CONFIG" # Let the user override the test.
+else
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_NCURSES_CONFIG="$ac_tool_prefix$ac_prog"
+echo "$as_me:4471: found $ac_dir/$ac_word" >&5
+break
+done
-echo "${as_me:-configure}:3646: testing adding $cf_add_libdir to library-path ..." 1>&5
+fi
+fi
+NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG
+if test -n "$NCURSES_CONFIG"; then
+ echo "$as_me:4479: result: $NCURSES_CONFIG" >&5
+echo "${ECHO_T}$NCURSES_CONFIG" >&6
+else
+ echo "$as_me:4482: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
- LDFLAGS="-L$cf_add_libdir $LDFLAGS"
- fi
- fi
+ test -n "$NCURSES_CONFIG" && break
+ done
+fi
+if test -z "$NCURSES_CONFIG"; then
+ ac_ct_NCURSES_CONFIG=$NCURSES_CONFIG
+ for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
+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 "$as_me:4495: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_NCURSES_CONFIG"; then
+ ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_ct_NCURSES_CONFIG" # Let the user override the test.
+else
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_prog"
+echo "$as_me:4510: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG
+if test -n "$ac_ct_NCURSES_CONFIG"; then
+ echo "$as_me:4518: result: $ac_ct_NCURSES_CONFIG" >&5
+echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6
+else
+ echo "$as_me:4521: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_NCURSES_CONFIG" && break
+done
+test -n "$ac_ct_NCURSES_CONFIG" || ac_ct_NCURSES_CONFIG="none"
+
+ NCURSES_CONFIG=$ac_ct_NCURSES_CONFIG
+fi
+
+ if test "$NCURSES_CONFIG" != none ; then
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in `$NCURSES_CONFIG --cflags`
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in `$NCURSES_CONFIG --libs`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ # even with config script, some packages use no-override for curses.h
+
+echo "$as_me:4650: checking if we have identified curses headers" >&5
+echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6
+if test "${cf_cv_ncurses_header+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cf_cv_ncurses_header=none
+for cf_header in \
+ ncurses.h ncurses/ncurses.h \
+ curses.h ncurses/curses.h
+do
+cat >conftest.$ac_ext <<_ACEOF
+#line 4662 "configure"
+#include "confdefs.h"
+#include <${cf_header}>
+int
+main (void)
+{
+initscr(); tgoto("?", 0,0)
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4674: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4677: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:4680: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4683: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_ncurses_header=$cf_header; break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+
+fi
+echo "$as_me:4694: result: $cf_cv_ncurses_header" >&5
+echo "${ECHO_T}$cf_cv_ncurses_header" >&6
+
+if test "$cf_cv_ncurses_header" = none ; then
+ { { echo "$as_me:4698: error: No curses header-files found" >&5
+echo "$as_me: error: No curses header-files found" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+# cheat, to get the right #define's for HAVE_NCURSES_H, etc.
+
+for ac_header in $cf_cv_ncurses_header
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:4708: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4714 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:4718: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:4724: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:4743: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+cat >>confdefs.h <<\EOF
+#define NCURSES 1
+EOF
+
+cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+
+ cat >>confdefs.h <<EOF
+#define $cf_nculib_ROOT 1
+EOF
+
+ cf_cv_ncurses_version=`$NCURSES_CONFIG --version`
+
+ else
+
+cf_ncuhdr_root=ncurses
+
+test -n "$cf_cv_curses_dir" && \
+test "$cf_cv_curses_dir" != "no" && { \
+
+if test -n "$cf_cv_curses_dir/include/$cf_ncuhdr_root" ; then
+ for cf_add_incdir in $cf_cv_curses_dir/include/$cf_ncuhdr_root
+ do
+ while test $cf_add_incdir != /usr/include
+ do
+ if test -d $cf_add_incdir
+ then
+ cf_have_incdir=no
+ if test -n "$CFLAGS$CPPFLAGS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_incdir in $CFLAGS $CPPFLAGS ; do
+ if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then
+ cf_have_incdir=yes; break
+ fi
+ done
+ fi
+
+ if test "$cf_have_incdir" = no ; then
+ if test "$cf_add_incdir" = /usr/local/include ; then
+ if test "$GCC" = yes
+ then
+ cf_save_CPPFLAGS=$CPPFLAGS
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4799 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int
+main (void)
+{
+printf("Hello")
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4811: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4814: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:4817: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4820: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_incdir=yes
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS=$cf_save_CPPFLAGS
+ fi
+ fi
+ fi
+
+ if test "$cf_have_incdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
+
+echo "${as_me:-configure}:4837: testing adding $cf_add_incdir to include-path ..." 1>&5
+
+ CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'`
+ test "$cf_top_incdir" = "$cf_add_incdir" && break
+ cf_add_incdir="$cf_top_incdir"
+ else
+ break
+ fi
+ else
+ break
+ fi
+ done
done
fi
+}
+
+echo "$as_me:4856: checking for $cf_ncuhdr_root header in include-path" >&5
+echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6
+if test "${cf_cv_ncurses_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h"
+ ( test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw ) && cf_header_list="$cf_header_list curses.h ncurses.h"
+ for cf_header in $cf_header_list
+ do
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4868 "configure"
+#include "confdefs.h"
+
+#include <$cf_header>
+int
+main (void)
+{
+
+#ifdef NCURSES_VERSION
+
+printf("%s\n", NCURSES_VERSION);
+#else
+#ifdef __NCURSES_H
+printf("old\n");
+#else
+ make an error
+#endif
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4892: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4895: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:4898: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4901: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_ncurses_h=$cf_header
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_ncurses_h=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+ test "$cf_cv_ncurses_h" != no && break
+ done
+
+fi
+echo "$as_me:4916: result: $cf_cv_ncurses_h" >&5
+echo "${ECHO_T}$cf_cv_ncurses_h" >&6
+
+if test "$cf_cv_ncurses_h" != no ; then
+ cf_cv_ncurses_header=$cf_cv_ncurses_h
+else
+
+echo "$as_me:4923: checking for $cf_ncuhdr_root include-path" >&5
+echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6
+if test "${cf_cv_ncurses_h2+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ test -n "$verbose" && echo
+
+cf_search=
+
+# collect the current set of include-directories from compiler flags
+cf_header_path_list=""
+if test -n "${CFLAGS}${CPPFLAGS}" ; then
+ for cf_header_path in $CPPFLAGS $CFLAGS
+ do
+ case $cf_header_path in
+ (-I*)
+ cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
+
+test "x$cf_header_path" != "xNONE" && \
+test -d "$cf_header_path" && \
+ {
+ test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path"
+ test -d $cf_header_path/include && cf_search="$cf_search $cf_header_path/include"
+ test -d $cf_header_path/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root"
+ test -d $cf_header_path/include/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root/include"
+ test -d $cf_header_path/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include"
+ test -d $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
+}
+
+ cf_header_path_list="$cf_header_path_list $cf_search"
+ ;;
+ esac
+ done
+fi
+
+# add the variations for the package we are looking for
+
+cf_search=
+
+test "x$prefix" != "xNONE" && \
+test -d "$prefix" && \
+ {
+ test -n "$verbose" && echo " ... testing for include-directories under $prefix"
+ test -d $prefix/include && cf_search="$cf_search $prefix/include"
+ test -d $prefix/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root"
+ test -d $prefix/include/$cf_ncuhdr_root/include && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root/include"
+ test -d $prefix/$cf_ncuhdr_root/include && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include"
+ test -d $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
+}
+
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
+
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/include && cf_search="$cf_search $cf_subdir_prefix/include"
+ test -d $cf_subdir_prefix/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root"
+ test -d $cf_subdir_prefix/include/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root/include"
+ test -d $cf_subdir_prefix/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include"
+ test -d $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
+}
+
+done
+
+test "$includedir" != NONE && \
+test "$includedir" != "/usr/include" && \
+test -d "$includedir" && {
+ test -d $includedir && cf_search="$cf_search $includedir"
+ test -d $includedir/$cf_ncuhdr_root && cf_search="$cf_search $includedir/$cf_ncuhdr_root"
+}
+
+test "$oldincludedir" != NONE && \
+test "$oldincludedir" != "/usr/include" && \
+test -d "$oldincludedir" && {
+ test -d $oldincludedir && cf_search="$cf_search $oldincludedir"
+ test -d $oldincludedir/$cf_ncuhdr_root && cf_search="$cf_search $oldincludedir/$cf_ncuhdr_root"
+}
+
+cf_search="$cf_search $cf_header_path_list"
+
+ test -n "$verbose" && echo search path $cf_search
+ cf_save2_CPPFLAGS="$CPPFLAGS"
+ for cf_incdir in $cf_search
+ do
+
+if test -n "$cf_incdir" ; then
+ for cf_add_incdir in $cf_incdir
+ do
+ while test $cf_add_incdir != /usr/include
+ do
+ if test -d $cf_add_incdir
+ then
+ cf_have_incdir=no
+ if test -n "$CFLAGS$CPPFLAGS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_incdir in $CFLAGS $CPPFLAGS ; do
+ if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then
+ cf_have_incdir=yes; break
+ fi
+ done
+ fi
+
+ if test "$cf_have_incdir" = no ; then
+ if test "$cf_add_incdir" = /usr/local/include ; then
+ if test "$GCC" = yes
+ then
+ cf_save_CPPFLAGS=$CPPFLAGS
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5044 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int
+main (void)
+{
+printf("Hello")
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5056: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:5059: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:5062: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5065: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_incdir=yes
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS=$cf_save_CPPFLAGS
+ fi
+ fi
+ fi
+
+ if test "$cf_have_incdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
+
+echo "${as_me:-configure}:5082: testing adding $cf_add_incdir to include-path ..." 1>&5
+
+ CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'`
+ test "$cf_top_incdir" = "$cf_add_incdir" && break
+ cf_add_incdir="$cf_top_incdir"
+ else
+ break
+ fi
+ else
+ break
+ fi
+ done
+ done
+fi
+
+ for cf_header in \
+ ncurses.h \
+ curses.h
+ do
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5105 "configure"
+#include "confdefs.h"
+
+#include <$cf_header>
+int
+main (void)
+{
+
+#ifdef NCURSES_VERSION
+
+printf("%s\n", NCURSES_VERSION);
+#else
+#ifdef __NCURSES_H
+printf("old\n");
+#else
+ make an error
+#endif
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5129: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:5132: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:5135: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5138: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_ncurses_h2=$cf_header
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_ncurses_h2=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+ if test "$cf_cv_ncurses_h2" != no ; then
+ cf_cv_ncurses_h2=$cf_incdir/$cf_header
+ test -n "$verbose" && echo $ac_n " ... found $ac_c" 1>&6
+ break
+ fi
+ test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&6
+ done
+ CPPFLAGS="$cf_save2_CPPFLAGS"
+ test "$cf_cv_ncurses_h2" != no && break
+ done
+ test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:5159: error: not found" >&5
+echo "$as_me: error: not found" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:5164: result: $cf_cv_ncurses_h2" >&5
+echo "${ECHO_T}$cf_cv_ncurses_h2" >&6
+
+ cf_1st_incdir=`echo $cf_cv_ncurses_h2 | sed -e 's%/[^/]*$%%'`
+ cf_cv_ncurses_header=`basename $cf_cv_ncurses_h2`
+ if test `basename $cf_1st_incdir` = $cf_ncuhdr_root ; then
+ cf_cv_ncurses_header=$cf_ncuhdr_root/$cf_cv_ncurses_header
fi
+
+if test -n "$cf_1st_incdir" ; then
+ for cf_add_incdir in $cf_1st_incdir
+ do
+ while test $cf_add_incdir != /usr/include
+ do
+ if test -d $cf_add_incdir
+ then
+ cf_have_incdir=no
+ if test -n "$CFLAGS$CPPFLAGS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_incdir in $CFLAGS $CPPFLAGS ; do
+ if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then
+ cf_have_incdir=yes; break
+ fi
+ done
+ fi
+
+ if test "$cf_have_incdir" = no ; then
+ if test "$cf_add_incdir" = /usr/local/include ; then
+ if test "$GCC" = yes
+ then
+ cf_save_CPPFLAGS=$CPPFLAGS
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5200 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int
+main (void)
+{
+printf("Hello")
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5212: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:5215: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:5218: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5221: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_incdir=yes
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS=$cf_save_CPPFLAGS
+ fi
+ fi
+ fi
+
+ if test "$cf_have_incdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
+
+echo "${as_me:-configure}:5238: testing adding $cf_add_incdir to include-path ..." 1>&5
+
+ CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'`
+ test "$cf_top_incdir" = "$cf_add_incdir" && break
+ cf_add_incdir="$cf_top_incdir"
+ else
+ break
+ fi
+ else
+ break
+ fi
+ done
+ done
fi
-echo "$as_me:3657: checking if you want wide-character code" >&5
+fi
+
+# Set definitions to allow ifdef'ing for ncurses.h
+
+case $cf_cv_ncurses_header in
+(*ncurses.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSES_H 1
+EOF
+
+ ;;
+esac
+
+case $cf_cv_ncurses_header in
+(ncurses/curses.h|ncurses/ncurses.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSES_NCURSES_H 1
+EOF
+
+ ;;
+(ncursesw/curses.h|ncursesw/ncurses.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSESW_NCURSES_H 1
+EOF
+
+ ;;
+esac
+
+echo "$as_me:5286: checking for terminfo header" >&5
+echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
+if test "${cf_cv_term_header+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+case ${cf_cv_ncurses_header} in
+(*/ncurses.h|*/ncursesw.h)
+ cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'`
+ ;;
+(*)
+ cf_term_header=term.h
+ ;;
+esac
+
+for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
+do
+cat >conftest.$ac_ext <<_ACEOF
+#line 5304 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+#include <${cf_cv_ncurses_header:-curses.h}>
+#include <$cf_test>
+
+int
+main (void)
+{
+int x = auto_left_margin
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5319: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:5322: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:5325: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5328: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ cf_cv_term_header="$cf_test"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+ cf_cv_term_header=unknown
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ test "$cf_cv_term_header" != unknown && break
+done
+
+fi
+echo "$as_me:5344: result: $cf_cv_term_header" >&5
+echo "${ECHO_T}$cf_cv_term_header" >&6
+
+# Set definitions to allow ifdef'ing to accommodate subdirectories
+
+case $cf_cv_term_header in
+(*term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_TERM_H 1
+EOF
+
+ ;;
+esac
+
+case $cf_cv_term_header in
+(ncurses/term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSES_TERM_H 1
+EOF
+
+ ;;
+(ncursesw/term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSESW_TERM_H 1
+EOF
+
+ ;;
+esac
+
+# some applications need this, but should check for NCURSES_VERSION
+
+cat >>confdefs.h <<\EOF
+#define NCURSES 1
+EOF
+
+echo "$as_me:5382: checking for ncurses version" >&5
+echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6
+if test "${cf_cv_ncurses_version+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cf_cv_ncurses_version=no
+ cf_tempfile=out$$
+ rm -f $cf_tempfile
+ if test "$cross_compiling" = yes; then
+
+ # This will not work if the preprocessor splits the line after the
+ # Autoconf token. The 'unproto' program does that.
+ cat > conftest.$ac_ext <<EOF
+#include <${cf_cv_ncurses_header:-curses.h}>
+#undef Autoconf
+#ifdef NCURSES_VERSION
+Autoconf NCURSES_VERSION
+#else
+#ifdef __NCURSES_H
+Autoconf "old"
+#endif
+;
+#endif
+EOF
+ cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
+ { (eval echo "$as_me:5408: \"$cf_try\"") >&5
+ (eval $cf_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5411: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ if test -f conftest.out ; then
+ cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'`
+ test -n "$cf_out" && cf_cv_ncurses_version="$cf_out"
+ rm -f conftest.out
+ fi
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5421 "configure"
+#include "confdefs.h"
+
+#include <${cf_cv_ncurses_header:-curses.h}>
+#include <stdio.h>
+int main(void)
+{
+ FILE *fp = fopen("$cf_tempfile", "w");
+#ifdef NCURSES_VERSION
+# ifdef NCURSES_VERSION_PATCH
+ fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH);
+# else
+ fprintf(fp, "%s\n", NCURSES_VERSION);
+# endif
+#else
+# ifdef __NCURSES_H
+ fprintf(fp, "old\n");
+# else
+ make an error
+# endif
+#endif
+ ${cf_cv_main_return:-return}(0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:5446: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5449: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:5451: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5454: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ cf_cv_ncurses_version=`cat $cf_tempfile`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+ rm -f $cf_tempfile
+
+fi
+echo "$as_me:5468: result: $cf_cv_ncurses_version" >&5
+echo "${ECHO_T}$cf_cv_ncurses_version" >&6
+test "$cf_cv_ncurses_version" = no ||
+cat >>confdefs.h <<\EOF
+#define NCURSES 1
+EOF
+
+cf_nculib_root=ncurses
+ # This works, except for the special case where we find gpm, but
+ # ncurses is in a nonstandard location via $LIBS, and we really want
+ # to link gpm.
+cf_ncurses_LIBS=""
+cf_ncurses_SAVE="$LIBS"
+echo "$as_me:5481: checking for Gpm_Open in -lgpm" >&5
+echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6
+if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgpm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 5489 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char Gpm_Open ();
+int
+main (void)
+{
+Gpm_Open ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5508: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5511: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:5514: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5517: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_gpm_Gpm_Open=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_gpm_Gpm_Open=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:5528: result: $ac_cv_lib_gpm_Gpm_Open" >&5
+echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6
+if test $ac_cv_lib_gpm_Gpm_Open = yes; then
+ echo "$as_me:5531: checking for initscr in -lgpm" >&5
+echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6
+if test "${ac_cv_lib_gpm_initscr+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgpm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 5539 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char initscr ();
+int
+main (void)
+{
+initscr ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5558: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5561: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:5564: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5567: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_gpm_initscr=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_gpm_initscr=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:5578: result: $ac_cv_lib_gpm_initscr" >&5
+echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6
+if test $ac_cv_lib_gpm_initscr = yes; then
+ LIBS="$cf_ncurses_SAVE"
+else
+ cf_ncurses_LIBS="-lgpm"
+fi
+
+fi
+
+case $host_os in
+(freebsd*)
+ # This is only necessary if you are linking against an obsolete
+ # version of ncurses (but it should do no harm, since it's static).
+ if test "$cf_nculib_root" = ncurses ; then
+ echo "$as_me:5593: checking for tgoto in -lmytinfo" >&5
+echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6
+if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lmytinfo $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 5601 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char tgoto ();
+int
+main (void)
+{
+tgoto ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5620: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5623: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:5626: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5629: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_mytinfo_tgoto=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_mytinfo_tgoto=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:5640: result: $ac_cv_lib_mytinfo_tgoto" >&5
+echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6
+if test $ac_cv_lib_mytinfo_tgoto = yes; then
+ cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"
+fi
+
+ fi
+ ;;
+esac
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_ncurses_LIBS; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" )
+then
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_nculib_root; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+else
+
+ eval 'cf_cv_have_lib_'$cf_nculib_root'=no'
+ cf_libdir=""
+ echo "$as_me:5689: checking for initscr" >&5
+echo $ECHO_N "checking for initscr... $ECHO_C" >&6
+if test "${ac_cv_func_initscr+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5695 "configure"
+#include "confdefs.h"
+#define initscr autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef initscr
+
+#ifdef __cplusplus
+extern "C"
+#endif
+
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char initscr (void);
+
+int
+main (void)
+{
+
+/* The GNU C library defines stubs for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_initscr) || defined (__stub___initscr)
+#error found stub for initscr
+#endif
+
+ return initscr ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5726: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5729: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:5732: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5735: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_initscr=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_initscr=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:5745: result: $ac_cv_func_initscr" >&5
+echo "${ECHO_T}$ac_cv_func_initscr" >&6
+if test $ac_cv_func_initscr = yes; then
+ eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
+else
+
+ cf_save_LIBS="$LIBS"
+ echo "$as_me:5752: checking for initscr in -l$cf_nculib_root" >&5
+echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6
+ LIBS="-l$cf_nculib_root $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5756 "configure"
+#include "confdefs.h"
+#include <${cf_cv_ncurses_header:-curses.h}>
+int
+main (void)
+{
+initscr()
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5768: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5771: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:5774: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5777: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ echo "$as_me:5779: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+echo "$as_me:5786: result: no" >&5
+echo "${ECHO_T}no" >&6
+
+cf_search=
+cf_library_path_list=""
+if test -n "${LDFLAGS}${LIBS}" ; then
+ for cf_library_path in $LDFLAGS $LIBS
+ do
+ case $cf_library_path in
+ (-L*)
+ cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
+
+test "x$cf_library_path" != "xNONE" && \
+test -d "$cf_library_path" && \
+ {
+ test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path"
+ test -d $cf_library_path/lib && cf_search="$cf_search $cf_library_path/lib"
+ test -d $cf_library_path/lib/$cf_nculib_root && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root"
+ test -d $cf_library_path/lib/$cf_nculib_root/lib && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root/lib"
+ test -d $cf_library_path/$cf_nculib_root/lib && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib"
+ test -d $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root"
+}
+
+ cf_library_path_list="$cf_library_path_list $cf_search"
+ ;;
+ esac
+ done
+fi
+
+cf_search=
+
+test "x$prefix" != "xNONE" && \
+test -d "$prefix" && \
+ {
+ test -n "$verbose" && echo " ... testing for lib-directories under $prefix"
+ test -d $prefix/lib && cf_search="$cf_search $prefix/lib"
+ test -d $prefix/lib/$cf_nculib_root && cf_search="$cf_search $prefix/lib/$cf_nculib_root"
+ test -d $prefix/lib/$cf_nculib_root/lib && cf_search="$cf_search $prefix/lib/$cf_nculib_root/lib"
+ test -d $prefix/$cf_nculib_root/lib && cf_search="$cf_search $prefix/$cf_nculib_root/lib"
+ test -d $prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root"
+}
+
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
+
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/lib && cf_search="$cf_search $cf_subdir_prefix/lib"
+ test -d $cf_subdir_prefix/lib/$cf_nculib_root && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root"
+ test -d $cf_subdir_prefix/lib/$cf_nculib_root/lib && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root/lib"
+ test -d $cf_subdir_prefix/$cf_nculib_root/lib && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib"
+ test -d $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root"
+}
+
+done
+
+cf_search="$cf_library_path_list $cf_search"
+
+ for cf_libdir in $cf_search
+ do
+ echo "$as_me:5854: checking for -l$cf_nculib_root in $cf_libdir" >&5
+echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6
+ LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5858 "configure"
+#include "confdefs.h"
+#include <${cf_cv_ncurses_header:-curses.h}>
+int
+main (void)
+{
+initscr()
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5870: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5873: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:5876: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5879: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ echo "$as_me:5881: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
+ break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+echo "$as_me:5888: result: no" >&5
+echo "${ECHO_T}no" >&6
+ LIBS="$cf_save_LIBS"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ done
+
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+eval 'cf_found_library=$cf_cv_have_lib_'$cf_nculib_root
+
+if test $cf_found_library = no ; then
+ { { echo "$as_me:5903: error: Cannot link $cf_nculib_root library" >&5
+echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+fi
+
+if test -n "$cf_ncurses_LIBS" ; then
+ echo "$as_me:5911: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
+echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6
+ cf_ncurses_SAVE="$LIBS"
+ for p in $cf_ncurses_LIBS ; do
+ q=`echo $LIBS | sed -e "s%$p %%" -e "s%$p$%%"`
+ if test "$q" != "$LIBS" ; then
+ LIBS="$q"
+ fi
+ done
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5921 "configure"
+#include "confdefs.h"
+#include <${cf_cv_ncurses_header:-curses.h}>
+int
+main (void)
+{
+initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5933: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5936: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:5939: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5942: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ echo "$as_me:5944: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+echo "$as_me:5949: result: no" >&5
+echo "${ECHO_T}no" >&6
+ LIBS="$cf_ncurses_SAVE"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+
+cf_nculib_ROOT=`echo "HAVE_LIB$cf_nculib_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+
+cat >>confdefs.h <<EOF
+#define $cf_nculib_ROOT 1
+EOF
+
+ fi
+else
+ NCURSES_CONFIG=none
+fi
+
+echo "$as_me:5967: checking if you want wide-character code" >&5
echo $ECHO_N "checking if you want wide-character code... $ECHO_C" >&6
# Check whether --enable-widec or --disable-widec was given.
@@ -3664,11 +5974,11 @@ if test "${enable_widec+set}" = set; then
else
with_widec=no
fi;
-echo "$as_me:3667: result: $with_widec" >&5
+echo "$as_me:5977: result: $with_widec" >&5
echo "${ECHO_T}$with_widec" >&6
if test "$with_widec" = yes ; then
-echo "$as_me:3671: checking for multibyte character support" >&5
+echo "$as_me:5981: checking for multibyte character support" >&5
echo $ECHO_N "checking for multibyte character support... $ECHO_C" >&6
if test "${cf_cv_utf8_lib+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3676,12 +5986,12 @@ else
cf_save_LIBS="$LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 3679 "configure"
+#line 5989 "configure"
#include "confdefs.h"
#include <stdlib.h>
int
-main ()
+main (void)
{
putwc(0,0);
;
@@ -3689,16 +5999,16 @@ putwc(0,0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3692: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6002: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:3695: \$? = $ac_status" >&5
+ echo "$as_me:6005: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3698: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6008: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3701: \$? = $ac_status" >&5
+ echo "$as_me:6011: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_utf8_lib=yes
else
@@ -3710,17 +6020,17 @@ cat conftest.$ac_ext >&5
cf_cv_header_path_utf8=
cf_cv_library_path_utf8=
-echo "${as_me:-configure}:3713: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:6023: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5
cf_save_LIBS="$LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 3718 "configure"
+#line 6028 "configure"
#include "confdefs.h"
#include <libutf8.h>
int
-main ()
+main (void)
{
putwc(0,0);
;
@@ -3728,16 +6038,16 @@ putwc(0,0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3731: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6041: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:3734: \$? = $ac_status" >&5
+ echo "$as_me:6044: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3737: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6047: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3740: \$? = $ac_status" >&5
+ echo "$as_me:6050: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_find_linkage_utf8=yes
@@ -3751,12 +6061,12 @@ cat conftest.$ac_ext >&5
LIBS="-lutf8 $cf_save_LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 3754 "configure"
+#line 6064 "configure"
#include "confdefs.h"
#include <libutf8.h>
int
-main ()
+main (void)
{
putwc(0,0);
;
@@ -3764,16 +6074,16 @@ putwc(0,0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3767: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6077: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:3770: \$? = $ac_status" >&5
+ echo "$as_me:6080: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:3773: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6083: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3776: \$? = $ac_status" >&5
+ echo "$as_me:6086: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_find_linkage_utf8=yes
@@ -3788,14 +6098,14 @@ cat conftest.$ac_ext >&5
cf_cv_find_linkage_utf8=no
LIBS="$cf_save_LIBS"
- test -n "$verbose" && echo " find linkage for utf8 library" 1>&6
+ test -n "$verbose" && echo " find linkage for utf8 library" 1>&6
-echo "${as_me:-configure}:3793: testing find linkage for utf8 library ..." 1>&5
+echo "${as_me:-configure}:6103: testing find linkage for utf8 library ..." 1>&5
-echo "${as_me:-configure}:3795: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:6105: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5
- cf_save_CPPFLAGS="$CPPFLAGS"
- cf_test_CPPFLAGS="$CPPFLAGS"
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_test_CPPFLAGS="$CPPFLAGS"
cf_search=
@@ -3804,8 +6114,8 @@ cf_header_path_list=""
if test -n "${CFLAGS}${CPPFLAGS}" ; then
for cf_header_path in $CPPFLAGS $CFLAGS
do
- case $cf_header_path in #(vi
- -I*)
+ case $cf_header_path in
+ (-I*)
cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
test "x$cf_header_path" != "xNONE" && \
@@ -3829,17 +6139,6 @@ fi
cf_search=
-test "x/usr" != "x$prefix" && \
-test -d "/usr" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /usr"
- test -d /usr/include && cf_search="$cf_search /usr/include"
- test -d /usr/include/utf8 && cf_search="$cf_search /usr/include/utf8"
- test -d /usr/include/utf8/include && cf_search="$cf_search /usr/include/utf8/include"
- test -d /usr/utf8/include && cf_search="$cf_search /usr/utf8/include"
- test -d /usr/utf8/include/utf8 && cf_search="$cf_search /usr/utf8/include/utf8"
-}
-
test "x$prefix" != "xNONE" && \
test -d "$prefix" && \
{
@@ -3851,38 +6150,27 @@ test -d "$prefix" && \
test -d $prefix/utf8/include/utf8 && cf_search="$cf_search $prefix/utf8/include/utf8"
}
-test "x/usr/local" != "x$prefix" && \
-test -d "/usr/local" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /usr/local"
- test -d /usr/local/include && cf_search="$cf_search /usr/local/include"
- test -d /usr/local/include/utf8 && cf_search="$cf_search /usr/local/include/utf8"
- test -d /usr/local/include/utf8/include && cf_search="$cf_search /usr/local/include/utf8/include"
- test -d /usr/local/utf8/include && cf_search="$cf_search /usr/local/utf8/include"
- test -d /usr/local/utf8/include/utf8 && cf_search="$cf_search /usr/local/utf8/include/utf8"
-}
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
-test "x/opt" != "x$prefix" && \
-test -d "/opt" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /opt"
- test -d /opt/include && cf_search="$cf_search /opt/include"
- test -d /opt/include/utf8 && cf_search="$cf_search /opt/include/utf8"
- test -d /opt/include/utf8/include && cf_search="$cf_search /opt/include/utf8/include"
- test -d /opt/utf8/include && cf_search="$cf_search /opt/utf8/include"
- test -d /opt/utf8/include/utf8 && cf_search="$cf_search /opt/utf8/include/utf8"
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/include && cf_search="$cf_search $cf_subdir_prefix/include"
+ test -d $cf_subdir_prefix/include/utf8 && cf_search="$cf_search $cf_subdir_prefix/include/utf8"
+ test -d $cf_subdir_prefix/include/utf8/include && cf_search="$cf_search $cf_subdir_prefix/include/utf8/include"
+ test -d $cf_subdir_prefix/utf8/include && cf_search="$cf_search $cf_subdir_prefix/utf8/include"
+ test -d $cf_subdir_prefix/utf8/include/utf8 && cf_search="$cf_search $cf_subdir_prefix/utf8/include/utf8"
}
-test "x$HOME" != "x$prefix" && \
-test -d "$HOME" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under $HOME"
- test -d $HOME/include && cf_search="$cf_search $HOME/include"
- test -d $HOME/include/utf8 && cf_search="$cf_search $HOME/include/utf8"
- test -d $HOME/include/utf8/include && cf_search="$cf_search $HOME/include/utf8/include"
- test -d $HOME/utf8/include && cf_search="$cf_search $HOME/utf8/include"
- test -d $HOME/utf8/include/utf8 && cf_search="$cf_search $HOME/utf8/include/utf8"
-}
+done
test "$includedir" != NONE && \
test "$includedir" != "/usr/include" && \
@@ -3900,21 +6188,25 @@ test -d "$oldincludedir" && {
cf_search="$cf_search $cf_header_path_list"
- for cf_cv_header_path_utf8 in $cf_search
- do
- if test -d $cf_cv_header_path_utf8 ; then
- test -n "$verbose" && echo " ... testing $cf_cv_header_path_utf8" 1>&6
+ for cf_cv_header_path_utf8 in $cf_search
+ do
+ if test -d $cf_cv_header_path_utf8 ; then
+ test -n "$verbose" && echo " ... testing $cf_cv_header_path_utf8" 1>&6
+
+echo "${as_me:-configure}:6196: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5
-echo "${as_me:-configure}:3908: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5
+ CPPFLAGS="$cf_save_CPPFLAGS"
- CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_utf8"
- cat >conftest.$ac_ext <<_ACEOF
-#line 3912 "configure"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_cv_header_path_utf8"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6204 "configure"
#include "confdefs.h"
#include <libutf8.h>
int
-main ()
+main (void)
{
putwc(0,0);
;
@@ -3922,52 +6214,52 @@ putwc(0,0);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3925: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:6217: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3928: \$? = $ac_status" >&5
+ echo "$as_me:6220: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3931: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6223: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3934: \$? = $ac_status" >&5
+ echo "$as_me:6226: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- test -n "$verbose" && echo " ... found utf8 headers in $cf_cv_header_path_utf8" 1>&6
+ test -n "$verbose" && echo " ... found utf8 headers in $cf_cv_header_path_utf8" 1>&6
-echo "${as_me:-configure}:3939: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:6231: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5
- cf_cv_find_linkage_utf8=maybe
- cf_test_CPPFLAGS="$CPPFLAGS"
- break
+ cf_cv_find_linkage_utf8=maybe
+ cf_test_CPPFLAGS="$CPPFLAGS"
+ break
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- CPPFLAGS="$cf_save_CPPFLAGS"
+ CPPFLAGS="$cf_save_CPPFLAGS"
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- fi
- done
+ fi
+ done
- if test "$cf_cv_find_linkage_utf8" = maybe ; then
+ if test "$cf_cv_find_linkage_utf8" = maybe ; then
-echo "${as_me:-configure}:3957: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:6249: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5
- cf_save_LIBS="$LIBS"
- cf_save_LDFLAGS="$LDFLAGS"
+ cf_save_LIBS="$LIBS"
+ cf_save_LDFLAGS="$LDFLAGS"
- if test "$cf_cv_find_linkage_utf8" != yes ; then
+ if test "$cf_cv_find_linkage_utf8" != yes ; then
cf_search=
cf_library_path_list=""
if test -n "${LDFLAGS}${LIBS}" ; then
for cf_library_path in $LDFLAGS $LIBS
do
- case $cf_library_path in #(vi
- -L*)
+ case $cf_library_path in
+ (-L*)
cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
test "x$cf_library_path" != "xNONE" && \
@@ -3989,17 +6281,6 @@ fi
cf_search=
-test "x/usr" != "x$prefix" && \
-test -d "/usr" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /usr"
- test -d /usr/lib && cf_search="$cf_search /usr/lib"
- test -d /usr/lib/utf8 && cf_search="$cf_search /usr/lib/utf8"
- test -d /usr/lib/utf8/lib && cf_search="$cf_search /usr/lib/utf8/lib"
- test -d /usr/utf8/lib && cf_search="$cf_search /usr/utf8/lib"
- test -d /usr/utf8/lib/utf8 && cf_search="$cf_search /usr/utf8/lib/utf8"
-}
-
test "x$prefix" != "xNONE" && \
test -d "$prefix" && \
{
@@ -4011,58 +6292,47 @@ test -d "$prefix" && \
test -d $prefix/utf8/lib/utf8 && cf_search="$cf_search $prefix/utf8/lib/utf8"
}
-test "x/usr/local" != "x$prefix" && \
-test -d "/usr/local" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /usr/local"
- test -d /usr/local/lib && cf_search="$cf_search /usr/local/lib"
- test -d /usr/local/lib/utf8 && cf_search="$cf_search /usr/local/lib/utf8"
- test -d /usr/local/lib/utf8/lib && cf_search="$cf_search /usr/local/lib/utf8/lib"
- test -d /usr/local/utf8/lib && cf_search="$cf_search /usr/local/utf8/lib"
- test -d /usr/local/utf8/lib/utf8 && cf_search="$cf_search /usr/local/utf8/lib/utf8"
-}
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
-test "x/opt" != "x$prefix" && \
-test -d "/opt" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /opt"
- test -d /opt/lib && cf_search="$cf_search /opt/lib"
- test -d /opt/lib/utf8 && cf_search="$cf_search /opt/lib/utf8"
- test -d /opt/lib/utf8/lib && cf_search="$cf_search /opt/lib/utf8/lib"
- test -d /opt/utf8/lib && cf_search="$cf_search /opt/utf8/lib"
- test -d /opt/utf8/lib/utf8 && cf_search="$cf_search /opt/utf8/lib/utf8"
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/lib && cf_search="$cf_search $cf_subdir_prefix/lib"
+ test -d $cf_subdir_prefix/lib/utf8 && cf_search="$cf_search $cf_subdir_prefix/lib/utf8"
+ test -d $cf_subdir_prefix/lib/utf8/lib && cf_search="$cf_search $cf_subdir_prefix/lib/utf8/lib"
+ test -d $cf_subdir_prefix/utf8/lib && cf_search="$cf_search $cf_subdir_prefix/utf8/lib"
+ test -d $cf_subdir_prefix/utf8/lib/utf8 && cf_search="$cf_search $cf_subdir_prefix/utf8/lib/utf8"
}
-test "x$HOME" != "x$prefix" && \
-test -d "$HOME" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under $HOME"
- test -d $HOME/lib && cf_search="$cf_search $HOME/lib"
- test -d $HOME/lib/utf8 && cf_search="$cf_search $HOME/lib/utf8"
- test -d $HOME/lib/utf8/lib && cf_search="$cf_search $HOME/lib/utf8/lib"
- test -d $HOME/utf8/lib && cf_search="$cf_search $HOME/utf8/lib"
- test -d $HOME/utf8/lib/utf8 && cf_search="$cf_search $HOME/utf8/lib/utf8"
-}
+done
cf_search="$cf_library_path_list $cf_search"
- for cf_cv_library_path_utf8 in $cf_search
- do
- if test -d $cf_cv_library_path_utf8 ; then
- test -n "$verbose" && echo " ... testing $cf_cv_library_path_utf8" 1>&6
+ for cf_cv_library_path_utf8 in $cf_search
+ do
+ if test -d $cf_cv_library_path_utf8 ; then
+ test -n "$verbose" && echo " ... testing $cf_cv_library_path_utf8" 1>&6
-echo "${as_me:-configure}:4054: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:6324: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5
- CPPFLAGS="$cf_test_CPPFLAGS"
- LIBS="-lutf8 $cf_save_LIBS"
- LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_utf8"
- cat >conftest.$ac_ext <<_ACEOF
-#line 4060 "configure"
+ CPPFLAGS="$cf_test_CPPFLAGS"
+ LIBS="-lutf8 $cf_save_LIBS"
+ LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_utf8"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6330 "configure"
#include "confdefs.h"
#include <libutf8.h>
int
-main ()
+main (void)
{
putwc(0,0);
;
@@ -4070,44 +6340,44 @@ putwc(0,0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4073: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6343: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:4076: \$? = $ac_status" >&5
+ echo "$as_me:6346: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4079: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6349: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4082: \$? = $ac_status" >&5
+ echo "$as_me:6352: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- test -n "$verbose" && echo " ... found utf8 library in $cf_cv_library_path_utf8" 1>&6
+ test -n "$verbose" && echo " ... found utf8 library in $cf_cv_library_path_utf8" 1>&6
-echo "${as_me:-configure}:4087: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:6357: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5
- cf_cv_find_linkage_utf8=yes
- cf_cv_library_file_utf8="-lutf8"
- break
+ cf_cv_find_linkage_utf8=yes
+ cf_cv_library_file_utf8="-lutf8"
+ break
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- CPPFLAGS="$cf_save_CPPFLAGS"
- LIBS="$cf_save_LIBS"
- LDFLAGS="$cf_save_LDFLAGS"
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ LDFLAGS="$cf_save_LDFLAGS"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- fi
- done
- CPPFLAGS="$cf_save_CPPFLAGS"
- LDFLAGS="$cf_save_LDFLAGS"
- fi
+ fi
+ done
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LDFLAGS="$cf_save_LDFLAGS"
+ fi
- else
- cf_cv_find_linkage_utf8=no
- fi
+ else
+ cf_cv_find_linkage_utf8=no
+ fi
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
@@ -4126,7 +6396,7 @@ fi
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:4129: result: $cf_cv_utf8_lib" >&5
+echo "$as_me:6399: result: $cf_cv_utf8_lib" >&5
echo "${ECHO_T}$cf_cv_utf8_lib" >&6
# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
@@ -4159,13 +6429,16 @@ if test -n "$cf_cv_header_path_utf8" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 4164 "configure"
+#line 6437 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -4173,16 +6446,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4176: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:6449: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:4179: \$? = $ac_status" >&5
+ echo "$as_me:6452: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4182: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6455: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4185: \$? = $ac_status" >&5
+ echo "$as_me:6458: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -4199,7 +6472,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:4202: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:6475: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -4209,51 +6482,375 @@ echo "${as_me:-configure}:4202: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
fi
if test -n "$cf_cv_library_path_utf8" ; then
- for cf_add_libdir in $cf_cv_library_path_utf8
- do
- if test $cf_add_libdir = /usr/lib ; then
- :
- elif test -d $cf_add_libdir
- then
- cf_have_libdir=no
- if test -n "$LDFLAGS$LIBS" ; then
- # a loop is needed to ensure we can add subdirs of existing dirs
- for cf_test_libdir in $LDFLAGS $LIBS ; do
- if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
- cf_have_libdir=yes; break
- fi
- done
- fi
- if test "$cf_have_libdir" = no ; then
- test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
+ for cf_add_libdir in $cf_cv_library_path_utf8
+ do
+ if test $cf_add_libdir = /usr/lib ; then
+ :
+ elif test -d $cf_add_libdir
+ then
+ cf_have_libdir=no
+ if test -n "$LDFLAGS$LIBS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_libdir in $LDFLAGS $LIBS ; do
+ if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
+ cf_have_libdir=yes; break
+ fi
+ done
+ fi
+ if test "$cf_have_libdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
-echo "${as_me:-configure}:4236: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:6511: testing adding $cf_add_libdir to library-path ..." 1>&5
- LDFLAGS="-L$cf_add_libdir $LDFLAGS"
- fi
- fi
- done
+ LDFLAGS="-L$cf_add_libdir $LDFLAGS"
+ fi
+ fi
+ done
fi
- LIBS="$cf_cv_library_file_utf8 $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_cv_library_file_utf8; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
fi
cf_ncuconfig_root=ncursesw
+cf_have_ncuconfig=no
+
+if test "x${PKG_CONFIG:=none}" != xnone; then
+ echo "$as_me:6541: checking pkg-config for $cf_ncuconfig_root" >&5
+echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6
+ if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
+ echo "$as_me:6544: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+ echo "$as_me:6547: checking if the $cf_ncuconfig_root package files work" >&5
+echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6
+ cf_have_ncuconfig=unknown
+
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_save_LIBS="$LIBS"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in `$PKG_CONFIG --cflags $cf_ncuconfig_root`
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
-echo "Looking for ${cf_ncuconfig_root}-config"
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in `$PKG_CONFIG --libs $cf_ncuconfig_root`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6669 "configure"
+#include "confdefs.h"
+#include <${cf_cv_ncurses_header:-curses.h}>
+int
+main (void)
+{
+initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:6681: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:6684: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:6687: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6690: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ if test "$cross_compiling" = yes; then
+ cf_have_ncuconfig=maybe
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6696 "configure"
+#include "confdefs.h"
+#include <${cf_cv_ncurses_header:-curses.h}>
+ int main(void)
+ { char *xx = curses_version(); return (xx == 0); }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:6703: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:6706: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:6708: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6711: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_have_ncuconfig=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_ncuconfig=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_ncuconfig=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ echo "$as_me:6728: result: $cf_have_ncuconfig" >&5
+echo "${ECHO_T}$cf_have_ncuconfig" >&6
+ test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
+ if test "$cf_have_ncuconfig" != "yes"
+ then
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ NCURSES_CONFIG_PKG=none
+ else
+
+cat >>confdefs.h <<\EOF
+#define NCURSES 1
+EOF
+
+ NCURSES_CONFIG_PKG=$cf_ncuconfig_root
+
+echo "$as_me:6744: checking for terminfo header" >&5
+echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
+if test "${cf_cv_term_header+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+case ${cf_cv_ncurses_header} in
+(*/ncurses.h|*/ncursesw.h)
+ cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'`
+ ;;
+(*)
+ cf_term_header=term.h
+ ;;
+esac
+
+for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
+do
+cat >conftest.$ac_ext <<_ACEOF
+#line 6762 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+#include <${cf_cv_ncurses_header:-curses.h}>
+#include <$cf_test>
+
+int
+main (void)
+{
+int x = auto_left_margin
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6777: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6780: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6783: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6786: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ cf_cv_term_header="$cf_test"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+ cf_cv_term_header=unknown
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ test "$cf_cv_term_header" != unknown && break
+done
+
+fi
+echo "$as_me:6802: result: $cf_cv_term_header" >&5
+echo "${ECHO_T}$cf_cv_term_header" >&6
+
+# Set definitions to allow ifdef'ing to accommodate subdirectories
+
+case $cf_cv_term_header in
+(*term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_TERM_H 1
+EOF
+
+ ;;
+esac
+
+case $cf_cv_term_header in
+(ncurses/term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSES_TERM_H 1
+EOF
+
+ ;;
+(ncursesw/term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSESW_TERM_H 1
+EOF
+
+ ;;
+esac
+
+ fi
+
+ else
+ echo "$as_me:6837: result: no" >&5
+echo "${ECHO_T}no" >&6
+ NCURSES_CONFIG_PKG=none
+ fi
+else
+ NCURSES_CONFIG_PKG=none
+fi
+
+if test "x$cf_have_ncuconfig" = "xno"; then
+ cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}"
if test -n "$ac_tool_prefix"; then
- for ac_prog in ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
+ for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:4256: checking for $ac_word" >&5
+echo "$as_me:6853: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4268,7 +6865,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_NCURSES_CONFIG="$ac_tool_prefix$ac_prog"
-echo "$as_me:4271: found $ac_dir/$ac_word" >&5
+echo "$as_me:6868: found $ac_dir/$ac_word" >&5
break
done
@@ -4276,10 +6873,10 @@ fi
fi
NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG
if test -n "$NCURSES_CONFIG"; then
- echo "$as_me:4279: result: $NCURSES_CONFIG" >&5
+ echo "$as_me:6876: result: $NCURSES_CONFIG" >&5
echo "${ECHO_T}$NCURSES_CONFIG" >&6
else
- echo "$as_me:4282: result: no" >&5
+ echo "$as_me:6879: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4288,11 +6885,11 @@ fi
fi
if test -z "$NCURSES_CONFIG"; then
ac_ct_NCURSES_CONFIG=$NCURSES_CONFIG
- for ac_prog in ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
+ for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
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 "$as_me:4295: checking for $ac_word" >&5
+echo "$as_me:6892: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4307,7 +6904,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_prog"
-echo "$as_me:4310: found $ac_dir/$ac_word" >&5
+echo "$as_me:6907: found $ac_dir/$ac_word" >&5
break
done
@@ -4315,10 +6912,10 @@ fi
fi
ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG
if test -n "$ac_ct_NCURSES_CONFIG"; then
- echo "$as_me:4318: result: $ac_ct_NCURSES_CONFIG" >&5
+ echo "$as_me:6915: result: $ac_ct_NCURSES_CONFIG" >&5
echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6
else
- echo "$as_me:4321: result: no" >&5
+ echo "$as_me:6918: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4329,32 +6926,141 @@ test -n "$ac_ct_NCURSES_CONFIG" || ac_ct_NCURSES_CONFIG="none"
NCURSES_CONFIG=$ac_ct_NCURSES_CONFIG
fi
-if test "$NCURSES_CONFIG" != none ; then
+ if test "$NCURSES_CONFIG" != none ; then
-CPPFLAGS="$CPPFLAGS `$NCURSES_CONFIG --cflags`"
-LIBS="`$NCURSES_CONFIG --libs` $LIBS"
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in `$NCURSES_CONFIG --cflags`
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
-# even with config script, some packages use no-override for curses.h
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
-echo "$as_me:4339: checking if we have identified curses headers" >&5
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in `$NCURSES_CONFIG --libs`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ # even with config script, some packages use no-override for curses.h
+
+echo "$as_me:7047: checking if we have identified curses headers" >&5
echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6
if test "${cf_cv_ncurses_header+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cf_cv_ncurses_header=none
-for cf_header in \
- ncursesw/ncurses.h \
- ncursesw/curses.h \
- ncurses.h \
- curses.h
+for cf_header in \
+ ncurses.h ncursesw/ncurses.h \
+ curses.h ncursesw/curses.h
do
cat >conftest.$ac_ext <<_ACEOF
-#line 4353 "configure"
+#line 7059 "configure"
#include "confdefs.h"
#include <${cf_header}>
int
-main ()
+main (void)
{
initscr(); tgoto("?", 0,0)
;
@@ -4362,16 +7068,16 @@ initscr(); tgoto("?", 0,0)
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4365: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7071: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:4368: \$? = $ac_status" >&5
+ echo "$as_me:7074: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4371: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7077: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4374: \$? = $ac_status" >&5
+ echo "$as_me:7080: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_header=$cf_header; break
else
@@ -4382,11 +7088,11 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:4385: result: $cf_cv_ncurses_header" >&5
+echo "$as_me:7091: result: $cf_cv_ncurses_header" >&5
echo "${ECHO_T}$cf_cv_ncurses_header" >&6
if test "$cf_cv_ncurses_header" = none ; then
- { { echo "$as_me:4389: error: No curses header-files found" >&5
+ { { echo "$as_me:7095: error: No curses header-files found" >&5
echo "$as_me: error: No curses header-files found" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -4396,23 +7102,23 @@ fi
for ac_header in $cf_cv_ncurses_header
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:4399: checking for $ac_header" >&5
+echo "$as_me:7105: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 4405 "configure"
+#line 7111 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:4409: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:7115: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:4415: \$? = $ac_status" >&5
+ echo "$as_me:7121: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -4431,7 +7137,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:4434: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:7140: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -4447,13 +7153,13 @@ EOF
cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-cat >>confdefs.h <<EOF
+ cat >>confdefs.h <<EOF
#define $cf_nculib_ROOT 1
EOF
-cf_cv_ncurses_version=`$NCURSES_CONFIG --version`
+ cf_cv_ncurses_version=`$NCURSES_CONFIG --version`
-else
+ else
cf_ncuhdr_root=ncursesw
@@ -4482,13 +7188,16 @@ if test -n "$cf_cv_curses_dir/include/$cf_ncuhdr_root" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 4487 "configure"
+#line 7196 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -4496,16 +7205,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4499: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7208: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:4502: \$? = $ac_status" >&5
+ echo "$as_me:7211: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4505: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7214: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4508: \$? = $ac_status" >&5
+ echo "$as_me:7217: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -4522,7 +7231,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:4525: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:7234: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -4532,6 +7241,8 @@ echo "${as_me:-configure}:4525: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
@@ -4539,7 +7250,7 @@ fi
}
-echo "$as_me:4542: checking for $cf_ncuhdr_root header in include-path" >&5
+echo "$as_me:7253: checking for $cf_ncuhdr_root header in include-path" >&5
echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6
if test "${cf_cv_ncurses_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4551,7 +7262,7 @@ else
do
cat >conftest.$ac_ext <<_ACEOF
-#line 4554 "configure"
+#line 7265 "configure"
#include "confdefs.h"
#define _XOPEN_SOURCE_EXTENDED
@@ -4560,7 +7271,7 @@ else
#include <$cf_header>
int
-main ()
+main (void)
{
#ifdef NCURSES_VERSION
@@ -4583,16 +7294,16 @@ printf("old\n");
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4586: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7297: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:4589: \$? = $ac_status" >&5
+ echo "$as_me:7300: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4592: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7303: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4595: \$? = $ac_status" >&5
+ echo "$as_me:7306: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_h=$cf_header
@@ -4607,14 +7318,14 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:4610: result: $cf_cv_ncurses_h" >&5
+echo "$as_me:7321: result: $cf_cv_ncurses_h" >&5
echo "${ECHO_T}$cf_cv_ncurses_h" >&6
if test "$cf_cv_ncurses_h" != no ; then
cf_cv_ncurses_header=$cf_cv_ncurses_h
else
-echo "$as_me:4617: checking for $cf_ncuhdr_root include-path" >&5
+echo "$as_me:7328: checking for $cf_ncuhdr_root include-path" >&5
echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6
if test "${cf_cv_ncurses_h2+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4629,8 +7340,8 @@ cf_header_path_list=""
if test -n "${CFLAGS}${CPPFLAGS}" ; then
for cf_header_path in $CPPFLAGS $CFLAGS
do
- case $cf_header_path in #(vi
- -I*)
+ case $cf_header_path in
+ (-I*)
cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
test "x$cf_header_path" != "xNONE" && \
@@ -4654,17 +7365,6 @@ fi
cf_search=
-test "x/usr" != "x$prefix" && \
-test -d "/usr" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /usr"
- test -d /usr/include && cf_search="$cf_search /usr/include"
- test -d /usr/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/include/$cf_ncuhdr_root"
- test -d /usr/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/include/$cf_ncuhdr_root/include"
- test -d /usr/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/$cf_ncuhdr_root/include"
- test -d /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
-}
-
test "x$prefix" != "xNONE" && \
test -d "$prefix" && \
{
@@ -4676,38 +7376,27 @@ test -d "$prefix" && \
test -d $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
}
-test "x/usr/local" != "x$prefix" && \
-test -d "/usr/local" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /usr/local"
- test -d /usr/local/include && cf_search="$cf_search /usr/local/include"
- test -d /usr/local/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root"
- test -d /usr/local/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root/include"
- test -d /usr/local/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include"
- test -d /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
-}
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
-test "x/opt" != "x$prefix" && \
-test -d "/opt" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /opt"
- test -d /opt/include && cf_search="$cf_search /opt/include"
- test -d /opt/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/include/$cf_ncuhdr_root"
- test -d /opt/include/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/include/$cf_ncuhdr_root/include"
- test -d /opt/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/$cf_ncuhdr_root/include"
- test -d /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/include && cf_search="$cf_search $cf_subdir_prefix/include"
+ test -d $cf_subdir_prefix/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root"
+ test -d $cf_subdir_prefix/include/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root/include"
+ test -d $cf_subdir_prefix/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include"
+ test -d $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
}
-test "x$HOME" != "x$prefix" && \
-test -d "$HOME" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under $HOME"
- test -d $HOME/include && cf_search="$cf_search $HOME/include"
- test -d $HOME/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root"
- test -d $HOME/include/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root/include"
- test -d $HOME/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include"
- test -d $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
-}
+done
test "$includedir" != NONE && \
test "$includedir" != "/usr/include" && \
@@ -4752,13 +7441,16 @@ if test -n "$cf_incdir" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 4757 "configure"
+#line 7449 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -4766,16 +7458,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4769: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7461: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:4772: \$? = $ac_status" >&5
+ echo "$as_me:7464: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4775: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7467: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4778: \$? = $ac_status" >&5
+ echo "$as_me:7470: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -4792,7 +7484,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:4795: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:7487: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -4802,6 +7494,8 @@ echo "${as_me:-configure}:4795: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
@@ -4813,12 +7507,12 @@ fi
do
cat >conftest.$ac_ext <<_ACEOF
-#line 4816 "configure"
+#line 7510 "configure"
#include "confdefs.h"
#include <$cf_header>
int
-main ()
+main (void)
{
#ifdef NCURSES_VERSION
@@ -4837,16 +7531,16 @@ printf("old\n");
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4840: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7534: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:4843: \$? = $ac_status" >&5
+ echo "$as_me:7537: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4846: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7540: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4849: \$? = $ac_status" >&5
+ echo "$as_me:7543: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_h2=$cf_header
@@ -4867,12 +7561,12 @@ rm -f conftest.$ac_objext conftest.$ac_ext
CPPFLAGS="$cf_save2_CPPFLAGS"
test "$cf_cv_ncurses_h2" != no && break
done
- test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:4870: error: not found" >&5
+ test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:7564: error: not found" >&5
echo "$as_me: error: not found" >&2;}
{ (exit 1); exit 1; }; }
fi
-echo "$as_me:4875: result: $cf_cv_ncurses_h2" >&5
+echo "$as_me:7569: result: $cf_cv_ncurses_h2" >&5
echo "${ECHO_T}$cf_cv_ncurses_h2" >&6
cf_1st_incdir=`echo $cf_cv_ncurses_h2 | sed -e 's%/[^/]*$%%'`
@@ -4903,13 +7597,16 @@ if test -n "$cf_1st_incdir" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 4908 "configure"
+#line 7605 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -4917,16 +7614,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4920: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7617: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:4923: \$? = $ac_status" >&5
+ echo "$as_me:7620: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4926: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7623: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4929: \$? = $ac_status" >&5
+ echo "$as_me:7626: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -4943,7 +7640,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:4946: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:7643: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -4953,6 +7650,8 @@ echo "${as_me:-configure}:4946: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
@@ -4962,8 +7661,8 @@ fi
# Set definitions to allow ifdef'ing for ncurses.h
-case $cf_cv_ncurses_header in # (vi
-*ncurses.h)
+case $cf_cv_ncurses_header in
+(*ncurses.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSES_H 1
@@ -4972,15 +7671,15 @@ EOF
;;
esac
-case $cf_cv_ncurses_header in # (vi
-ncurses/curses.h|ncurses/ncurses.h)
+case $cf_cv_ncurses_header in
+(ncurses/curses.h|ncurses/ncurses.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSES_NCURSES_H 1
EOF
;;
-ncursesw/curses.h|ncursesw/ncurses.h)
+(ncursesw/curses.h|ncursesw/ncurses.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSESW_NCURSES_H 1
@@ -4989,17 +7688,17 @@ EOF
;;
esac
-echo "$as_me:4992: checking for terminfo header" >&5
+echo "$as_me:7691: checking for terminfo header" >&5
echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
if test "${cf_cv_term_header+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-case ${cf_cv_ncurses_header} in #(vi
-*/ncurses.h|*/ncursesw.h) #(vi
+case ${cf_cv_ncurses_header} in
+(*/ncurses.h|*/ncursesw.h)
cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'`
;;
-*)
+(*)
cf_term_header=term.h
;;
esac
@@ -5007,14 +7706,14 @@ esac
for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
do
cat >conftest.$ac_ext <<_ACEOF
-#line 5010 "configure"
+#line 7709 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <${cf_cv_ncurses_header:-curses.h}>
#include <$cf_test>
int
-main ()
+main (void)
{
int x = auto_left_margin
;
@@ -5022,16 +7721,16 @@ int x = auto_left_margin
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5025: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7724: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5028: \$? = $ac_status" >&5
+ echo "$as_me:7727: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5031: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7730: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5034: \$? = $ac_status" >&5
+ echo "$as_me:7733: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_term_header="$cf_test"
@@ -5047,13 +7746,13 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:5050: result: $cf_cv_term_header" >&5
+echo "$as_me:7749: result: $cf_cv_term_header" >&5
echo "${ECHO_T}$cf_cv_term_header" >&6
# Set definitions to allow ifdef'ing to accommodate subdirectories
-case $cf_cv_term_header in # (vi
-*term.h)
+case $cf_cv_term_header in
+(*term.h)
cat >>confdefs.h <<\EOF
#define HAVE_TERM_H 1
@@ -5062,15 +7761,15 @@ EOF
;;
esac
-case $cf_cv_term_header in # (vi
-ncurses/term.h) #(vi
+case $cf_cv_term_header in
+(ncurses/term.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSES_TERM_H 1
EOF
;;
-ncursesw/term.h)
+(ncursesw/term.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSESW_TERM_H 1
@@ -5085,7 +7784,7 @@ cat >>confdefs.h <<\EOF
#define NCURSES 1
EOF
-echo "$as_me:5088: checking for ncurses version" >&5
+echo "$as_me:7787: checking for ncurses version" >&5
echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6
if test "${cf_cv_ncurses_version+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5111,10 +7810,10 @@ Autoconf "old"
#endif
EOF
cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
- { (eval echo "$as_me:5114: \"$cf_try\"") >&5
+ { (eval echo "$as_me:7813: \"$cf_try\"") >&5
(eval $cf_try) 2>&5
ac_status=$?
- echo "$as_me:5117: \$? = $ac_status" >&5
+ echo "$as_me:7816: \$? = $ac_status" >&5
(exit $ac_status); }
if test -f conftest.out ; then
cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'`
@@ -5124,12 +7823,12 @@ EOF
else
cat >conftest.$ac_ext <<_ACEOF
-#line 5127 "configure"
+#line 7826 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
#include <stdio.h>
-int main()
+int main(void)
{
FILE *fp = fopen("$cf_tempfile", "w");
#ifdef NCURSES_VERSION
@@ -5149,15 +7848,15 @@ int main()
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:5152: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7851: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5155: \$? = $ac_status" >&5
+ echo "$as_me:7854: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:5157: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7856: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5160: \$? = $ac_status" >&5
+ echo "$as_me:7859: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_version=`cat $cf_tempfile`
@@ -5171,7 +7870,7 @@ fi
rm -f $cf_tempfile
fi
-echo "$as_me:5174: result: $cf_cv_ncurses_version" >&5
+echo "$as_me:7873: result: $cf_cv_ncurses_version" >&5
echo "${ECHO_T}$cf_cv_ncurses_version" >&6
test "$cf_cv_ncurses_version" = no ||
cat >>confdefs.h <<\EOF
@@ -5184,7 +7883,7 @@ cf_nculib_root=ncursesw
# to link gpm.
cf_ncurses_LIBS=""
cf_ncurses_SAVE="$LIBS"
-echo "$as_me:5187: checking for Gpm_Open in -lgpm" >&5
+echo "$as_me:7886: checking for Gpm_Open in -lgpm" >&5
echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6
if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5192,7 +7891,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgpm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 5195 "configure"
+#line 7894 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -5203,7 +7902,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char Gpm_Open ();
int
-main ()
+main (void)
{
Gpm_Open ();
;
@@ -5211,16 +7910,16 @@ Gpm_Open ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5214: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7913: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5217: \$? = $ac_status" >&5
+ echo "$as_me:7916: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5220: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7919: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5223: \$? = $ac_status" >&5
+ echo "$as_me:7922: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_gpm_Gpm_Open=yes
else
@@ -5231,10 +7930,10 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:5234: result: $ac_cv_lib_gpm_Gpm_Open" >&5
+echo "$as_me:7933: result: $ac_cv_lib_gpm_Gpm_Open" >&5
echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6
if test $ac_cv_lib_gpm_Gpm_Open = yes; then
- echo "$as_me:5237: checking for initscr in -lgpm" >&5
+ echo "$as_me:7936: checking for initscr in -lgpm" >&5
echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6
if test "${ac_cv_lib_gpm_initscr+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5242,7 +7941,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgpm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 5245 "configure"
+#line 7944 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -5253,7 +7952,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char initscr ();
int
-main ()
+main (void)
{
initscr ();
;
@@ -5261,16 +7960,16 @@ initscr ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5264: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7963: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5267: \$? = $ac_status" >&5
+ echo "$as_me:7966: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5270: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7969: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5273: \$? = $ac_status" >&5
+ echo "$as_me:7972: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_gpm_initscr=yes
else
@@ -5281,7 +7980,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:5284: result: $ac_cv_lib_gpm_initscr" >&5
+echo "$as_me:7983: result: $ac_cv_lib_gpm_initscr" >&5
echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6
if test $ac_cv_lib_gpm_initscr = yes; then
LIBS="$cf_ncurses_SAVE"
@@ -5291,12 +7990,12 @@ fi
fi
-case $host_os in #(vi
-freebsd*)
+case $host_os in
+(freebsd*)
# This is only necessary if you are linking against an obsolete
# version of ncurses (but it should do no harm, since it's static).
if test "$cf_nculib_root" = ncurses ; then
- echo "$as_me:5299: checking for tgoto in -lmytinfo" >&5
+ echo "$as_me:7998: checking for tgoto in -lmytinfo" >&5
echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6
if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5304,7 +8003,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lmytinfo $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 5307 "configure"
+#line 8006 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -5315,7 +8014,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char tgoto ();
int
-main ()
+main (void)
{
tgoto ();
;
@@ -5323,16 +8022,16 @@ tgoto ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5326: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8025: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5329: \$? = $ac_status" >&5
+ echo "$as_me:8028: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5332: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8031: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5335: \$? = $ac_status" >&5
+ echo "$as_me:8034: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_mytinfo_tgoto=yes
else
@@ -5343,7 +8042,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:5346: result: $ac_cv_lib_mytinfo_tgoto" >&5
+echo "$as_me:8045: result: $ac_cv_lib_mytinfo_tgoto" >&5
echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6
if test $ac_cv_lib_mytinfo_tgoto = yes; then
cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"
@@ -5353,62 +8052,92 @@ fi
;;
esac
-LIBS="$cf_ncurses_LIBS $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_ncurses_LIBS; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" )
then
- LIBS="-l$cf_nculib_root $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_nculib_root; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
else
eval 'cf_cv_have_lib_'$cf_nculib_root'=no'
cf_libdir=""
- echo "$as_me:5365: checking for initscr" >&5
+ echo "$as_me:8094: checking for initscr" >&5
echo $ECHO_N "checking for initscr... $ECHO_C" >&6
if test "${ac_cv_func_initscr+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 5371 "configure"
+#line 8100 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char initscr (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define initscr autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef initscr
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char initscr ();
-char (*f) ();
+char initscr (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_initscr) || defined (__stub___initscr)
-choke me
-#else
-f = initscr; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for initscr
#endif
+ return initscr ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5402: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8131: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5405: \$? = $ac_status" >&5
+ echo "$as_me:8134: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5408: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8137: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5411: \$? = $ac_status" >&5
+ echo "$as_me:8140: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_initscr=yes
else
@@ -5418,22 +8147,22 @@ ac_cv_func_initscr=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:5421: result: $ac_cv_func_initscr" >&5
+echo "$as_me:8150: result: $ac_cv_func_initscr" >&5
echo "${ECHO_T}$ac_cv_func_initscr" >&6
if test $ac_cv_func_initscr = yes; then
eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
else
cf_save_LIBS="$LIBS"
- echo "$as_me:5428: checking for initscr in -l$cf_nculib_root" >&5
+ echo "$as_me:8157: checking for initscr in -l$cf_nculib_root" >&5
echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6
LIBS="-l$cf_nculib_root $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 5432 "configure"
+#line 8161 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
initscr()
;
@@ -5441,25 +8170,25 @@ initscr()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5444: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8173: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5447: \$? = $ac_status" >&5
+ echo "$as_me:8176: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5450: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8179: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5453: \$? = $ac_status" >&5
+ echo "$as_me:8182: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- echo "$as_me:5455: result: yes" >&5
+ echo "$as_me:8184: result: yes" >&5
echo "${ECHO_T}yes" >&6
eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-echo "$as_me:5462: result: no" >&5
+echo "$as_me:8191: result: no" >&5
echo "${ECHO_T}no" >&6
cf_search=
@@ -5467,8 +8196,8 @@ cf_library_path_list=""
if test -n "${LDFLAGS}${LIBS}" ; then
for cf_library_path in $LDFLAGS $LIBS
do
- case $cf_library_path in #(vi
- -L*)
+ case $cf_library_path in
+ (-L*)
cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
test "x$cf_library_path" != "xNONE" && \
@@ -5490,17 +8219,6 @@ fi
cf_search=
-test "x/usr" != "x$prefix" && \
-test -d "/usr" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /usr"
- test -d /usr/lib && cf_search="$cf_search /usr/lib"
- test -d /usr/lib/$cf_nculib_root && cf_search="$cf_search /usr/lib/$cf_nculib_root"
- test -d /usr/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/lib/$cf_nculib_root/lib"
- test -d /usr/$cf_nculib_root/lib && cf_search="$cf_search /usr/$cf_nculib_root/lib"
- test -d /usr/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/$cf_nculib_root/lib/$cf_nculib_root"
-}
-
test "x$prefix" != "xNONE" && \
test -d "$prefix" && \
{
@@ -5512,52 +8230,41 @@ test -d "$prefix" && \
test -d $prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root"
}
-test "x/usr/local" != "x$prefix" && \
-test -d "/usr/local" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /usr/local"
- test -d /usr/local/lib && cf_search="$cf_search /usr/local/lib"
- test -d /usr/local/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/lib/$cf_nculib_root"
- test -d /usr/local/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/lib/$cf_nculib_root/lib"
- test -d /usr/local/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/$cf_nculib_root/lib"
- test -d /usr/local/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/$cf_nculib_root/lib/$cf_nculib_root"
-}
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
-test "x/opt" != "x$prefix" && \
-test -d "/opt" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /opt"
- test -d /opt/lib && cf_search="$cf_search /opt/lib"
- test -d /opt/lib/$cf_nculib_root && cf_search="$cf_search /opt/lib/$cf_nculib_root"
- test -d /opt/lib/$cf_nculib_root/lib && cf_search="$cf_search /opt/lib/$cf_nculib_root/lib"
- test -d /opt/$cf_nculib_root/lib && cf_search="$cf_search /opt/$cf_nculib_root/lib"
- test -d /opt/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /opt/$cf_nculib_root/lib/$cf_nculib_root"
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/lib && cf_search="$cf_search $cf_subdir_prefix/lib"
+ test -d $cf_subdir_prefix/lib/$cf_nculib_root && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root"
+ test -d $cf_subdir_prefix/lib/$cf_nculib_root/lib && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root/lib"
+ test -d $cf_subdir_prefix/$cf_nculib_root/lib && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib"
+ test -d $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root"
}
-test "x$HOME" != "x$prefix" && \
-test -d "$HOME" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under $HOME"
- test -d $HOME/lib && cf_search="$cf_search $HOME/lib"
- test -d $HOME/lib/$cf_nculib_root && cf_search="$cf_search $HOME/lib/$cf_nculib_root"
- test -d $HOME/lib/$cf_nculib_root/lib && cf_search="$cf_search $HOME/lib/$cf_nculib_root/lib"
- test -d $HOME/$cf_nculib_root/lib && cf_search="$cf_search $HOME/$cf_nculib_root/lib"
- test -d $HOME/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $HOME/$cf_nculib_root/lib/$cf_nculib_root"
-}
+done
cf_search="$cf_library_path_list $cf_search"
for cf_libdir in $cf_search
do
- echo "$as_me:5552: checking for -l$cf_nculib_root in $cf_libdir" >&5
+ echo "$as_me:8259: checking for -l$cf_nculib_root in $cf_libdir" >&5
echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6
LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 5556 "configure"
+#line 8263 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
initscr()
;
@@ -5565,25 +8272,25 @@ initscr()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5568: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8275: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5571: \$? = $ac_status" >&5
+ echo "$as_me:8278: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5574: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8281: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5577: \$? = $ac_status" >&5
+ echo "$as_me:8284: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- echo "$as_me:5579: result: yes" >&5
+ echo "$as_me:8286: result: yes" >&5
echo "${ECHO_T}yes" >&6
eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
break
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-echo "$as_me:5586: result: no" >&5
+echo "$as_me:8293: result: no" >&5
echo "${ECHO_T}no" >&6
LIBS="$cf_save_LIBS"
fi
@@ -5598,7 +8305,7 @@ fi
eval 'cf_found_library=$cf_cv_have_lib_'$cf_nculib_root
if test $cf_found_library = no ; then
- { { echo "$as_me:5601: error: Cannot link $cf_nculib_root library" >&5
+ { { echo "$as_me:8308: error: Cannot link $cf_nculib_root library" >&5
echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -5606,7 +8313,7 @@ fi
fi
if test -n "$cf_ncurses_LIBS" ; then
- echo "$as_me:5609: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
+ echo "$as_me:8316: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6
cf_ncurses_SAVE="$LIBS"
for p in $cf_ncurses_LIBS ; do
@@ -5616,11 +8323,11 @@ echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS..
fi
done
cat >conftest.$ac_ext <<_ACEOF
-#line 5619 "configure"
+#line 8326 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
;
@@ -5628,23 +8335,23 @@ initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5631: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8338: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5634: \$? = $ac_status" >&5
+ echo "$as_me:8341: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5637: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8344: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5640: \$? = $ac_status" >&5
+ echo "$as_me:8347: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- echo "$as_me:5642: result: yes" >&5
+ echo "$as_me:8349: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-echo "$as_me:5647: result: no" >&5
+echo "$as_me:8354: result: no" >&5
echo "${ECHO_T}no" >&6
LIBS="$cf_ncurses_SAVE"
fi
@@ -5657,20 +8364,330 @@ cat >>confdefs.h <<EOF
#define $cf_nculib_ROOT 1
EOF
+ fi
+else
+ NCURSES_CONFIG=none
fi
else
cf_ncuconfig_root=ncurses
+cf_have_ncuconfig=no
+
+if test "x${PKG_CONFIG:=none}" != xnone; then
+ echo "$as_me:8378: checking pkg-config for $cf_ncuconfig_root" >&5
+echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6
+ if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
+ echo "$as_me:8381: result: yes" >&5
+echo "${ECHO_T}yes" >&6
-echo "Looking for ${cf_ncuconfig_root}-config"
+ echo "$as_me:8384: checking if the $cf_ncuconfig_root package files work" >&5
+echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6
+ cf_have_ncuconfig=unknown
+
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_save_LIBS="$LIBS"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in `$PKG_CONFIG --cflags $cf_ncuconfig_root`
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in `$PKG_CONFIG --libs $cf_ncuconfig_root`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 8506 "configure"
+#include "confdefs.h"
+#include <${cf_cv_ncurses_header:-curses.h}>
+int
+main (void)
+{
+initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:8518: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:8521: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:8524: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:8527: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ if test "$cross_compiling" = yes; then
+ cf_have_ncuconfig=maybe
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 8533 "configure"
+#include "confdefs.h"
+#include <${cf_cv_ncurses_header:-curses.h}>
+ int main(void)
+ { char *xx = curses_version(); return (xx == 0); }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:8540: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:8543: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:8545: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:8548: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_have_ncuconfig=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_ncuconfig=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_ncuconfig=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ echo "$as_me:8565: result: $cf_have_ncuconfig" >&5
+echo "${ECHO_T}$cf_have_ncuconfig" >&6
+ test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
+ if test "$cf_have_ncuconfig" != "yes"
+ then
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ NCURSES_CONFIG_PKG=none
+ else
+
+cat >>confdefs.h <<\EOF
+#define NCURSES 1
+EOF
+
+ NCURSES_CONFIG_PKG=$cf_ncuconfig_root
+
+echo "$as_me:8581: checking for terminfo header" >&5
+echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
+if test "${cf_cv_term_header+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+case ${cf_cv_ncurses_header} in
+(*/ncurses.h|*/ncursesw.h)
+ cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'`
+ ;;
+(*)
+ cf_term_header=term.h
+ ;;
+esac
+
+for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
+do
+cat >conftest.$ac_ext <<_ACEOF
+#line 8599 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+#include <${cf_cv_ncurses_header:-curses.h}>
+#include <$cf_test>
+
+int
+main (void)
+{
+int x = auto_left_margin
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:8614: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:8617: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:8620: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:8623: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ cf_cv_term_header="$cf_test"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+ cf_cv_term_header=unknown
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ test "$cf_cv_term_header" != unknown && break
+done
+
+fi
+echo "$as_me:8639: result: $cf_cv_term_header" >&5
+echo "${ECHO_T}$cf_cv_term_header" >&6
+
+# Set definitions to allow ifdef'ing to accommodate subdirectories
+
+case $cf_cv_term_header in
+(*term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_TERM_H 1
+EOF
+
+ ;;
+esac
+
+case $cf_cv_term_header in
+(ncurses/term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSES_TERM_H 1
+EOF
+
+ ;;
+(ncursesw/term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSESW_TERM_H 1
+EOF
+
+ ;;
+esac
+
+ fi
+
+ else
+ echo "$as_me:8674: result: no" >&5
+echo "${ECHO_T}no" >&6
+ NCURSES_CONFIG_PKG=none
+ fi
+else
+ NCURSES_CONFIG_PKG=none
+fi
+
+if test "x$cf_have_ncuconfig" = "xno"; then
+ cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}"
if test -n "$ac_tool_prefix"; then
- for ac_prog in ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
+ for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:5673: checking for $ac_word" >&5
+echo "$as_me:8690: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5685,7 +8702,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_NCURSES_CONFIG="$ac_tool_prefix$ac_prog"
-echo "$as_me:5688: found $ac_dir/$ac_word" >&5
+echo "$as_me:8705: found $ac_dir/$ac_word" >&5
break
done
@@ -5693,10 +8710,10 @@ fi
fi
NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG
if test -n "$NCURSES_CONFIG"; then
- echo "$as_me:5696: result: $NCURSES_CONFIG" >&5
+ echo "$as_me:8713: result: $NCURSES_CONFIG" >&5
echo "${ECHO_T}$NCURSES_CONFIG" >&6
else
- echo "$as_me:5699: result: no" >&5
+ echo "$as_me:8716: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -5705,11 +8722,11 @@ fi
fi
if test -z "$NCURSES_CONFIG"; then
ac_ct_NCURSES_CONFIG=$NCURSES_CONFIG
- for ac_prog in ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
+ for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
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 "$as_me:5712: checking for $ac_word" >&5
+echo "$as_me:8729: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5724,7 +8741,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_prog"
-echo "$as_me:5727: found $ac_dir/$ac_word" >&5
+echo "$as_me:8744: found $ac_dir/$ac_word" >&5
break
done
@@ -5732,10 +8749,10 @@ fi
fi
ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG
if test -n "$ac_ct_NCURSES_CONFIG"; then
- echo "$as_me:5735: result: $ac_ct_NCURSES_CONFIG" >&5
+ echo "$as_me:8752: result: $ac_ct_NCURSES_CONFIG" >&5
echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6
else
- echo "$as_me:5738: result: no" >&5
+ echo "$as_me:8755: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -5746,32 +8763,141 @@ test -n "$ac_ct_NCURSES_CONFIG" || ac_ct_NCURSES_CONFIG="none"
NCURSES_CONFIG=$ac_ct_NCURSES_CONFIG
fi
-if test "$NCURSES_CONFIG" != none ; then
+ if test "$NCURSES_CONFIG" != none ; then
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in `$NCURSES_CONFIG --cflags`
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
-CPPFLAGS="$CPPFLAGS `$NCURSES_CONFIG --cflags`"
-LIBS="`$NCURSES_CONFIG --libs` $LIBS"
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
-# even with config script, some packages use no-override for curses.h
+ if test $cf_fix_cppflags = yes ; then
-echo "$as_me:5756: checking if we have identified curses headers" >&5
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in `$NCURSES_CONFIG --libs`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ # even with config script, some packages use no-override for curses.h
+
+echo "$as_me:8884: checking if we have identified curses headers" >&5
echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6
if test "${cf_cv_ncurses_header+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cf_cv_ncurses_header=none
-for cf_header in \
- ncurses/ncurses.h \
- ncurses/curses.h \
- ncurses.h \
- curses.h
+for cf_header in \
+ ncurses.h ncurses/ncurses.h \
+ curses.h ncurses/curses.h
do
cat >conftest.$ac_ext <<_ACEOF
-#line 5770 "configure"
+#line 8896 "configure"
#include "confdefs.h"
#include <${cf_header}>
int
-main ()
+main (void)
{
initscr(); tgoto("?", 0,0)
;
@@ -5779,16 +8905,16 @@ initscr(); tgoto("?", 0,0)
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5782: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8908: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5785: \$? = $ac_status" >&5
+ echo "$as_me:8911: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5788: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8914: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5791: \$? = $ac_status" >&5
+ echo "$as_me:8917: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_header=$cf_header; break
else
@@ -5799,11 +8925,11 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:5802: result: $cf_cv_ncurses_header" >&5
+echo "$as_me:8928: result: $cf_cv_ncurses_header" >&5
echo "${ECHO_T}$cf_cv_ncurses_header" >&6
if test "$cf_cv_ncurses_header" = none ; then
- { { echo "$as_me:5806: error: No curses header-files found" >&5
+ { { echo "$as_me:8932: error: No curses header-files found" >&5
echo "$as_me: error: No curses header-files found" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -5813,23 +8939,23 @@ fi
for ac_header in $cf_cv_ncurses_header
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:5816: checking for $ac_header" >&5
+echo "$as_me:8942: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 5822 "configure"
+#line 8948 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:5826: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:8952: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:5832: \$? = $ac_status" >&5
+ echo "$as_me:8958: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -5848,7 +8974,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:5851: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:8977: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -5864,13 +8990,13 @@ EOF
cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-cat >>confdefs.h <<EOF
+ cat >>confdefs.h <<EOF
#define $cf_nculib_ROOT 1
EOF
-cf_cv_ncurses_version=`$NCURSES_CONFIG --version`
+ cf_cv_ncurses_version=`$NCURSES_CONFIG --version`
-else
+ else
cf_ncuhdr_root=ncurses
@@ -5899,13 +9025,16 @@ if test -n "$cf_cv_curses_dir/include/$cf_ncuhdr_root" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 5904 "configure"
+#line 9033 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -5913,16 +9042,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5916: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9045: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5919: \$? = $ac_status" >&5
+ echo "$as_me:9048: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5922: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9051: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5925: \$? = $ac_status" >&5
+ echo "$as_me:9054: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -5939,7 +9068,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:5942: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:9071: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -5949,6 +9078,8 @@ echo "${as_me:-configure}:5942: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
@@ -5956,7 +9087,7 @@ fi
}
-echo "$as_me:5959: checking for $cf_ncuhdr_root header in include-path" >&5
+echo "$as_me:9090: checking for $cf_ncuhdr_root header in include-path" >&5
echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6
if test "${cf_cv_ncurses_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5968,12 +9099,12 @@ else
do
cat >conftest.$ac_ext <<_ACEOF
-#line 5971 "configure"
+#line 9102 "configure"
#include "confdefs.h"
#include <$cf_header>
int
-main ()
+main (void)
{
#ifdef NCURSES_VERSION
@@ -5992,16 +9123,16 @@ printf("old\n");
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5995: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9126: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5998: \$? = $ac_status" >&5
+ echo "$as_me:9129: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6001: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9132: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6004: \$? = $ac_status" >&5
+ echo "$as_me:9135: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_h=$cf_header
@@ -6016,14 +9147,14 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:6019: result: $cf_cv_ncurses_h" >&5
+echo "$as_me:9150: result: $cf_cv_ncurses_h" >&5
echo "${ECHO_T}$cf_cv_ncurses_h" >&6
if test "$cf_cv_ncurses_h" != no ; then
cf_cv_ncurses_header=$cf_cv_ncurses_h
else
-echo "$as_me:6026: checking for $cf_ncuhdr_root include-path" >&5
+echo "$as_me:9157: checking for $cf_ncuhdr_root include-path" >&5
echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6
if test "${cf_cv_ncurses_h2+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6038,8 +9169,8 @@ cf_header_path_list=""
if test -n "${CFLAGS}${CPPFLAGS}" ; then
for cf_header_path in $CPPFLAGS $CFLAGS
do
- case $cf_header_path in #(vi
- -I*)
+ case $cf_header_path in
+ (-I*)
cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
test "x$cf_header_path" != "xNONE" && \
@@ -6063,17 +9194,6 @@ fi
cf_search=
-test "x/usr" != "x$prefix" && \
-test -d "/usr" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /usr"
- test -d /usr/include && cf_search="$cf_search /usr/include"
- test -d /usr/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/include/$cf_ncuhdr_root"
- test -d /usr/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/include/$cf_ncuhdr_root/include"
- test -d /usr/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/$cf_ncuhdr_root/include"
- test -d /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
-}
-
test "x$prefix" != "xNONE" && \
test -d "$prefix" && \
{
@@ -6085,38 +9205,27 @@ test -d "$prefix" && \
test -d $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
}
-test "x/usr/local" != "x$prefix" && \
-test -d "/usr/local" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /usr/local"
- test -d /usr/local/include && cf_search="$cf_search /usr/local/include"
- test -d /usr/local/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root"
- test -d /usr/local/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root/include"
- test -d /usr/local/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include"
- test -d /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
-}
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
-test "x/opt" != "x$prefix" && \
-test -d "/opt" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /opt"
- test -d /opt/include && cf_search="$cf_search /opt/include"
- test -d /opt/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/include/$cf_ncuhdr_root"
- test -d /opt/include/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/include/$cf_ncuhdr_root/include"
- test -d /opt/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/$cf_ncuhdr_root/include"
- test -d /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/include && cf_search="$cf_search $cf_subdir_prefix/include"
+ test -d $cf_subdir_prefix/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root"
+ test -d $cf_subdir_prefix/include/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root/include"
+ test -d $cf_subdir_prefix/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include"
+ test -d $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
}
-test "x$HOME" != "x$prefix" && \
-test -d "$HOME" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under $HOME"
- test -d $HOME/include && cf_search="$cf_search $HOME/include"
- test -d $HOME/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root"
- test -d $HOME/include/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root/include"
- test -d $HOME/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include"
- test -d $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
-}
+done
test "$includedir" != NONE && \
test "$includedir" != "/usr/include" && \
@@ -6161,13 +9270,16 @@ if test -n "$cf_incdir" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 6166 "configure"
+#line 9278 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -6175,16 +9287,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6178: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9290: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:6181: \$? = $ac_status" >&5
+ echo "$as_me:9293: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6184: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9296: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6187: \$? = $ac_status" >&5
+ echo "$as_me:9299: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -6201,7 +9313,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:6204: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:9316: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -6211,6 +9323,8 @@ echo "${as_me:-configure}:6204: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
@@ -6222,12 +9336,12 @@ fi
do
cat >conftest.$ac_ext <<_ACEOF
-#line 6225 "configure"
+#line 9339 "configure"
#include "confdefs.h"
#include <$cf_header>
int
-main ()
+main (void)
{
#ifdef NCURSES_VERSION
@@ -6246,16 +9360,16 @@ printf("old\n");
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6249: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9363: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:6252: \$? = $ac_status" >&5
+ echo "$as_me:9366: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6255: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9369: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6258: \$? = $ac_status" >&5
+ echo "$as_me:9372: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_h2=$cf_header
@@ -6276,12 +9390,12 @@ rm -f conftest.$ac_objext conftest.$ac_ext
CPPFLAGS="$cf_save2_CPPFLAGS"
test "$cf_cv_ncurses_h2" != no && break
done
- test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:6279: error: not found" >&5
+ test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:9393: error: not found" >&5
echo "$as_me: error: not found" >&2;}
{ (exit 1); exit 1; }; }
fi
-echo "$as_me:6284: result: $cf_cv_ncurses_h2" >&5
+echo "$as_me:9398: result: $cf_cv_ncurses_h2" >&5
echo "${ECHO_T}$cf_cv_ncurses_h2" >&6
cf_1st_incdir=`echo $cf_cv_ncurses_h2 | sed -e 's%/[^/]*$%%'`
@@ -6312,13 +9426,16 @@ if test -n "$cf_1st_incdir" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 6317 "configure"
+#line 9434 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -6326,16 +9443,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6329: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9446: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:6332: \$? = $ac_status" >&5
+ echo "$as_me:9449: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6335: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9452: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6338: \$? = $ac_status" >&5
+ echo "$as_me:9455: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -6352,7 +9469,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:6355: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:9472: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -6362,6 +9479,8 @@ echo "${as_me:-configure}:6355: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
@@ -6371,8 +9490,8 @@ fi
# Set definitions to allow ifdef'ing for ncurses.h
-case $cf_cv_ncurses_header in # (vi
-*ncurses.h)
+case $cf_cv_ncurses_header in
+(*ncurses.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSES_H 1
@@ -6381,15 +9500,15 @@ EOF
;;
esac
-case $cf_cv_ncurses_header in # (vi
-ncurses/curses.h|ncurses/ncurses.h)
+case $cf_cv_ncurses_header in
+(ncurses/curses.h|ncurses/ncurses.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSES_NCURSES_H 1
EOF
;;
-ncursesw/curses.h|ncursesw/ncurses.h)
+(ncursesw/curses.h|ncursesw/ncurses.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSESW_NCURSES_H 1
@@ -6398,17 +9517,17 @@ EOF
;;
esac
-echo "$as_me:6401: checking for terminfo header" >&5
+echo "$as_me:9520: checking for terminfo header" >&5
echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
if test "${cf_cv_term_header+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-case ${cf_cv_ncurses_header} in #(vi
-*/ncurses.h|*/ncursesw.h) #(vi
+case ${cf_cv_ncurses_header} in
+(*/ncurses.h|*/ncursesw.h)
cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'`
;;
-*)
+(*)
cf_term_header=term.h
;;
esac
@@ -6416,14 +9535,14 @@ esac
for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
do
cat >conftest.$ac_ext <<_ACEOF
-#line 6419 "configure"
+#line 9538 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <${cf_cv_ncurses_header:-curses.h}>
#include <$cf_test>
int
-main ()
+main (void)
{
int x = auto_left_margin
;
@@ -6431,16 +9550,16 @@ int x = auto_left_margin
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6434: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9553: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:6437: \$? = $ac_status" >&5
+ echo "$as_me:9556: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6440: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9559: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6443: \$? = $ac_status" >&5
+ echo "$as_me:9562: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_term_header="$cf_test"
@@ -6456,13 +9575,13 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:6459: result: $cf_cv_term_header" >&5
+echo "$as_me:9578: result: $cf_cv_term_header" >&5
echo "${ECHO_T}$cf_cv_term_header" >&6
# Set definitions to allow ifdef'ing to accommodate subdirectories
-case $cf_cv_term_header in # (vi
-*term.h)
+case $cf_cv_term_header in
+(*term.h)
cat >>confdefs.h <<\EOF
#define HAVE_TERM_H 1
@@ -6471,15 +9590,15 @@ EOF
;;
esac
-case $cf_cv_term_header in # (vi
-ncurses/term.h) #(vi
+case $cf_cv_term_header in
+(ncurses/term.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSES_TERM_H 1
EOF
;;
-ncursesw/term.h)
+(ncursesw/term.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSESW_TERM_H 1
@@ -6494,7 +9613,7 @@ cat >>confdefs.h <<\EOF
#define NCURSES 1
EOF
-echo "$as_me:6497: checking for ncurses version" >&5
+echo "$as_me:9616: checking for ncurses version" >&5
echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6
if test "${cf_cv_ncurses_version+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6520,10 +9639,10 @@ Autoconf "old"
#endif
EOF
cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
- { (eval echo "$as_me:6523: \"$cf_try\"") >&5
+ { (eval echo "$as_me:9642: \"$cf_try\"") >&5
(eval $cf_try) 2>&5
ac_status=$?
- echo "$as_me:6526: \$? = $ac_status" >&5
+ echo "$as_me:9645: \$? = $ac_status" >&5
(exit $ac_status); }
if test -f conftest.out ; then
cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'`
@@ -6533,12 +9652,12 @@ EOF
else
cat >conftest.$ac_ext <<_ACEOF
-#line 6536 "configure"
+#line 9655 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
#include <stdio.h>
-int main()
+int main(void)
{
FILE *fp = fopen("$cf_tempfile", "w");
#ifdef NCURSES_VERSION
@@ -6558,15 +9677,15 @@ int main()
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:6561: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9680: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6564: \$? = $ac_status" >&5
+ echo "$as_me:9683: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:6566: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9685: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6569: \$? = $ac_status" >&5
+ echo "$as_me:9688: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_version=`cat $cf_tempfile`
@@ -6580,7 +9699,7 @@ fi
rm -f $cf_tempfile
fi
-echo "$as_me:6583: result: $cf_cv_ncurses_version" >&5
+echo "$as_me:9702: result: $cf_cv_ncurses_version" >&5
echo "${ECHO_T}$cf_cv_ncurses_version" >&6
test "$cf_cv_ncurses_version" = no ||
cat >>confdefs.h <<\EOF
@@ -6593,7 +9712,7 @@ cf_nculib_root=ncurses
# to link gpm.
cf_ncurses_LIBS=""
cf_ncurses_SAVE="$LIBS"
-echo "$as_me:6596: checking for Gpm_Open in -lgpm" >&5
+echo "$as_me:9715: checking for Gpm_Open in -lgpm" >&5
echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6
if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6601,7 +9720,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgpm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 6604 "configure"
+#line 9723 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -6612,7 +9731,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char Gpm_Open ();
int
-main ()
+main (void)
{
Gpm_Open ();
;
@@ -6620,16 +9739,16 @@ Gpm_Open ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6623: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9742: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6626: \$? = $ac_status" >&5
+ echo "$as_me:9745: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6629: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9748: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6632: \$? = $ac_status" >&5
+ echo "$as_me:9751: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_gpm_Gpm_Open=yes
else
@@ -6640,10 +9759,10 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:6643: result: $ac_cv_lib_gpm_Gpm_Open" >&5
+echo "$as_me:9762: result: $ac_cv_lib_gpm_Gpm_Open" >&5
echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6
if test $ac_cv_lib_gpm_Gpm_Open = yes; then
- echo "$as_me:6646: checking for initscr in -lgpm" >&5
+ echo "$as_me:9765: checking for initscr in -lgpm" >&5
echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6
if test "${ac_cv_lib_gpm_initscr+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6651,7 +9770,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgpm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 6654 "configure"
+#line 9773 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -6662,7 +9781,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char initscr ();
int
-main ()
+main (void)
{
initscr ();
;
@@ -6670,16 +9789,16 @@ initscr ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6673: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9792: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6676: \$? = $ac_status" >&5
+ echo "$as_me:9795: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6679: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9798: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6682: \$? = $ac_status" >&5
+ echo "$as_me:9801: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_gpm_initscr=yes
else
@@ -6690,7 +9809,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:6693: result: $ac_cv_lib_gpm_initscr" >&5
+echo "$as_me:9812: result: $ac_cv_lib_gpm_initscr" >&5
echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6
if test $ac_cv_lib_gpm_initscr = yes; then
LIBS="$cf_ncurses_SAVE"
@@ -6700,12 +9819,12 @@ fi
fi
-case $host_os in #(vi
-freebsd*)
+case $host_os in
+(freebsd*)
# This is only necessary if you are linking against an obsolete
# version of ncurses (but it should do no harm, since it's static).
if test "$cf_nculib_root" = ncurses ; then
- echo "$as_me:6708: checking for tgoto in -lmytinfo" >&5
+ echo "$as_me:9827: checking for tgoto in -lmytinfo" >&5
echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6
if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6713,7 +9832,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lmytinfo $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 6716 "configure"
+#line 9835 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -6724,7 +9843,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char tgoto ();
int
-main ()
+main (void)
{
tgoto ();
;
@@ -6732,16 +9851,16 @@ tgoto ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6735: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9854: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6738: \$? = $ac_status" >&5
+ echo "$as_me:9857: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6741: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9860: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6744: \$? = $ac_status" >&5
+ echo "$as_me:9863: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_mytinfo_tgoto=yes
else
@@ -6752,7 +9871,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:6755: result: $ac_cv_lib_mytinfo_tgoto" >&5
+echo "$as_me:9874: result: $ac_cv_lib_mytinfo_tgoto" >&5
echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6
if test $ac_cv_lib_mytinfo_tgoto = yes; then
cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"
@@ -6762,62 +9881,92 @@ fi
;;
esac
-LIBS="$cf_ncurses_LIBS $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_ncurses_LIBS; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" )
then
- LIBS="-l$cf_nculib_root $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_nculib_root; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
else
eval 'cf_cv_have_lib_'$cf_nculib_root'=no'
cf_libdir=""
- echo "$as_me:6774: checking for initscr" >&5
+ echo "$as_me:9923: checking for initscr" >&5
echo $ECHO_N "checking for initscr... $ECHO_C" >&6
if test "${ac_cv_func_initscr+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 6780 "configure"
+#line 9929 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char initscr (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define initscr autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef initscr
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char initscr ();
-char (*f) ();
+char initscr (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_initscr) || defined (__stub___initscr)
-choke me
-#else
-f = initscr; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for initscr
#endif
+ return initscr ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6811: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9960: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6814: \$? = $ac_status" >&5
+ echo "$as_me:9963: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6817: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9966: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6820: \$? = $ac_status" >&5
+ echo "$as_me:9969: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_initscr=yes
else
@@ -6827,22 +9976,22 @@ ac_cv_func_initscr=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:6830: result: $ac_cv_func_initscr" >&5
+echo "$as_me:9979: result: $ac_cv_func_initscr" >&5
echo "${ECHO_T}$ac_cv_func_initscr" >&6
if test $ac_cv_func_initscr = yes; then
eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
else
cf_save_LIBS="$LIBS"
- echo "$as_me:6837: checking for initscr in -l$cf_nculib_root" >&5
+ echo "$as_me:9986: checking for initscr in -l$cf_nculib_root" >&5
echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6
LIBS="-l$cf_nculib_root $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 6841 "configure"
+#line 9990 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
initscr()
;
@@ -6850,25 +9999,25 @@ initscr()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6853: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10002: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6856: \$? = $ac_status" >&5
+ echo "$as_me:10005: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6859: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10008: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6862: \$? = $ac_status" >&5
+ echo "$as_me:10011: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- echo "$as_me:6864: result: yes" >&5
+ echo "$as_me:10013: result: yes" >&5
echo "${ECHO_T}yes" >&6
eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-echo "$as_me:6871: result: no" >&5
+echo "$as_me:10020: result: no" >&5
echo "${ECHO_T}no" >&6
cf_search=
@@ -6876,8 +10025,8 @@ cf_library_path_list=""
if test -n "${LDFLAGS}${LIBS}" ; then
for cf_library_path in $LDFLAGS $LIBS
do
- case $cf_library_path in #(vi
- -L*)
+ case $cf_library_path in
+ (-L*)
cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
test "x$cf_library_path" != "xNONE" && \
@@ -6899,17 +10048,6 @@ fi
cf_search=
-test "x/usr" != "x$prefix" && \
-test -d "/usr" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /usr"
- test -d /usr/lib && cf_search="$cf_search /usr/lib"
- test -d /usr/lib/$cf_nculib_root && cf_search="$cf_search /usr/lib/$cf_nculib_root"
- test -d /usr/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/lib/$cf_nculib_root/lib"
- test -d /usr/$cf_nculib_root/lib && cf_search="$cf_search /usr/$cf_nculib_root/lib"
- test -d /usr/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/$cf_nculib_root/lib/$cf_nculib_root"
-}
-
test "x$prefix" != "xNONE" && \
test -d "$prefix" && \
{
@@ -6921,52 +10059,41 @@ test -d "$prefix" && \
test -d $prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root"
}
-test "x/usr/local" != "x$prefix" && \
-test -d "/usr/local" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /usr/local"
- test -d /usr/local/lib && cf_search="$cf_search /usr/local/lib"
- test -d /usr/local/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/lib/$cf_nculib_root"
- test -d /usr/local/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/lib/$cf_nculib_root/lib"
- test -d /usr/local/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/$cf_nculib_root/lib"
- test -d /usr/local/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/$cf_nculib_root/lib/$cf_nculib_root"
-}
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
-test "x/opt" != "x$prefix" && \
-test -d "/opt" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /opt"
- test -d /opt/lib && cf_search="$cf_search /opt/lib"
- test -d /opt/lib/$cf_nculib_root && cf_search="$cf_search /opt/lib/$cf_nculib_root"
- test -d /opt/lib/$cf_nculib_root/lib && cf_search="$cf_search /opt/lib/$cf_nculib_root/lib"
- test -d /opt/$cf_nculib_root/lib && cf_search="$cf_search /opt/$cf_nculib_root/lib"
- test -d /opt/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /opt/$cf_nculib_root/lib/$cf_nculib_root"
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/lib && cf_search="$cf_search $cf_subdir_prefix/lib"
+ test -d $cf_subdir_prefix/lib/$cf_nculib_root && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root"
+ test -d $cf_subdir_prefix/lib/$cf_nculib_root/lib && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root/lib"
+ test -d $cf_subdir_prefix/$cf_nculib_root/lib && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib"
+ test -d $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root"
}
-test "x$HOME" != "x$prefix" && \
-test -d "$HOME" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under $HOME"
- test -d $HOME/lib && cf_search="$cf_search $HOME/lib"
- test -d $HOME/lib/$cf_nculib_root && cf_search="$cf_search $HOME/lib/$cf_nculib_root"
- test -d $HOME/lib/$cf_nculib_root/lib && cf_search="$cf_search $HOME/lib/$cf_nculib_root/lib"
- test -d $HOME/$cf_nculib_root/lib && cf_search="$cf_search $HOME/$cf_nculib_root/lib"
- test -d $HOME/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $HOME/$cf_nculib_root/lib/$cf_nculib_root"
-}
+done
cf_search="$cf_library_path_list $cf_search"
for cf_libdir in $cf_search
do
- echo "$as_me:6961: checking for -l$cf_nculib_root in $cf_libdir" >&5
+ echo "$as_me:10088: checking for -l$cf_nculib_root in $cf_libdir" >&5
echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6
LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 6965 "configure"
+#line 10092 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
initscr()
;
@@ -6974,25 +10101,25 @@ initscr()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6977: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10104: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6980: \$? = $ac_status" >&5
+ echo "$as_me:10107: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6983: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10110: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6986: \$? = $ac_status" >&5
+ echo "$as_me:10113: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- echo "$as_me:6988: result: yes" >&5
+ echo "$as_me:10115: result: yes" >&5
echo "${ECHO_T}yes" >&6
eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
break
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-echo "$as_me:6995: result: no" >&5
+echo "$as_me:10122: result: no" >&5
echo "${ECHO_T}no" >&6
LIBS="$cf_save_LIBS"
fi
@@ -7007,7 +10134,7 @@ fi
eval 'cf_found_library=$cf_cv_have_lib_'$cf_nculib_root
if test $cf_found_library = no ; then
- { { echo "$as_me:7010: error: Cannot link $cf_nculib_root library" >&5
+ { { echo "$as_me:10137: error: Cannot link $cf_nculib_root library" >&5
echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -7015,7 +10142,7 @@ fi
fi
if test -n "$cf_ncurses_LIBS" ; then
- echo "$as_me:7018: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
+ echo "$as_me:10145: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6
cf_ncurses_SAVE="$LIBS"
for p in $cf_ncurses_LIBS ; do
@@ -7025,11 +10152,11 @@ echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS..
fi
done
cat >conftest.$ac_ext <<_ACEOF
-#line 7028 "configure"
+#line 10155 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
;
@@ -7037,23 +10164,23 @@ initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7040: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10167: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:7043: \$? = $ac_status" >&5
+ echo "$as_me:10170: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7046: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10173: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7049: \$? = $ac_status" >&5
+ echo "$as_me:10176: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- echo "$as_me:7051: result: yes" >&5
+ echo "$as_me:10178: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-echo "$as_me:7056: result: no" >&5
+echo "$as_me:10183: result: no" >&5
echo "${ECHO_T}no" >&6
LIBS="$cf_ncurses_SAVE"
fi
@@ -7066,44 +10193,60 @@ cat >>confdefs.h <<EOF
#define $cf_nculib_ROOT 1
EOF
+ fi
+else
+ NCURSES_CONFIG=none
fi
fi
-if test "$NCURSES_CONFIG" != none ; then
+if test "$NCURSES_CONFIG_PKG" != none ; then
+ cf_version=`$PKG_CONFIG --modversion $NCURSES_CONFIG_PKG 2>/dev/null`
+
+ NCURSES_MAJOR=`echo "$cf_version" | sed -e 's/\..*//'`
+ NCURSES_MINOR=`echo "$cf_version" | sed -e 's/^[0-9][0-9]*\.//' -e 's/\..*//'`
+ NCURSES_PATCH=`echo "$cf_version" | sed -e 's/^[0-9][0-9]*\.[0-9][0-9]*\.//'`
+
+ cf_cv_abi_version=`$PKG_CONFIG --variable=abi_version $NCURSES_CONFIG_PKG 2>/dev/null`
+ if test -z "$cf_cv_abi_version"
+ then
+ cf_cv_abi_version=`$PKG_CONFIG --variable=major_version $NCURSES_CONFIG_PKG 2>/dev/null`
+ fi
-cf_version=`$NCURSES_CONFIG --version`
+elif test "$NCURSES_CONFIG" != none ; then
-NCURSES_MAJOR=`echo "$cf_version" | sed -e 's/\..*//'`
-NCURSES_MINOR=`echo "$cf_version" | sed -e 's/^[0-9][0-9]*\.//' -e 's/\..*//'`
-NCURSES_PATCH=`echo "$cf_version" | sed -e 's/^[0-9][0-9]*\.[0-9][0-9]*\.//'`
+ cf_version=`$NCURSES_CONFIG --version 2>/dev/null`
-# ABI version is not available from headers
-cf_cv_abi_version=`$NCURSES_CONFIG --abi-version`
+ NCURSES_MAJOR=`echo "$cf_version" | sed -e 's/\..*//'`
+ NCURSES_MINOR=`echo "$cf_version" | sed -e 's/^[0-9][0-9]*\.//' -e 's/\..*//'`
+ NCURSES_PATCH=`echo "$cf_version" | sed -e 's/^[0-9][0-9]*\.[0-9][0-9]*\.//'`
+
+ # ABI version is not available from headers
+ cf_cv_abi_version=`$NCURSES_CONFIG --abi-version 2>/dev/null`
else
-for cf_name in MAJOR MINOR PATCH
-do
-cat >conftest.$ac_ext <<CF_EOF
-#include <${cf_cv_ncurses_header:-curses.h}>
-AUTOCONF_$cf_name NCURSES_VERSION_$cf_name
+ for cf_name in MAJOR MINOR PATCH
+ do
+ cat >conftest.$ac_ext <<CF_EOF
+ #include <${cf_cv_ncurses_header:-curses.h}>
+ AUTOCONF_$cf_name NCURSES_VERSION_$cf_name
CF_EOF
- cf_try="$ac_cpp conftest.$ac_ext 2>&5 | fgrep AUTOCONF_$cf_name >conftest.out"
- { (eval echo "$as_me:7093: \"$cf_try\"") >&5
+ cf_try="$ac_cpp conftest.$ac_ext 2>&5 | fgrep AUTOCONF_$cf_name >conftest.out"
+ { (eval echo "$as_me:10236: \"$cf_try\"") >&5
(eval $cf_try) 2>&5
ac_status=$?
- echo "$as_me:7096: \$? = $ac_status" >&5
+ echo "$as_me:10239: \$? = $ac_status" >&5
(exit $ac_status); }
- if test -f conftest.out ; then
- cf_result=`cat conftest.out | sed -e "s/^.*AUTOCONF_$cf_name[ ][ ]*//"`
- eval NCURSES_$cf_name=\"$cf_result\"
- # cat conftest.$ac_ext
- # cat conftest.out
- fi
-done
+ if test -f conftest.out ; then
+ cf_result=`cat conftest.out | sed -e "s/^.*AUTOCONF_$cf_name[ ][ ]*//"`
+ eval NCURSES_$cf_name=\"$cf_result\"
+ # cat conftest.$ac_ext
+ # cat conftest.out
+ fi
+ done
-cf_cv_abi_version=${NCURSES_MAJOR}
+ cf_cv_abi_version=${NCURSES_MAJOR}
fi
@@ -7111,10 +10254,10 @@ cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR}
cf_cv_timestamp=`date`
-echo "$as_me:7114: result: Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&5
+echo "$as_me:10257: result: Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&5
echo "${ECHO_T}Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&6
-echo "$as_me:7117: checking if you want to have a library-prefix" >&5
+echo "$as_me:10260: checking if you want to have a library-prefix" >&5
echo $ECHO_N "checking if you want to have a library-prefix... $ECHO_C" >&6
# Check whether --with-lib-prefix or --without-lib-prefix was given.
@@ -7124,18 +10267,22 @@ if test "${with_lib_prefix+set}" = set; then
else
with_lib_prefix=auto
fi;
-echo "$as_me:7127: result: $with_lib_prefix" >&5
+echo "$as_me:10270: result: $with_lib_prefix" >&5
echo "${ECHO_T}$with_lib_prefix" >&6
if test $with_lib_prefix = auto
then
- case $cf_cv_system_name in #(vi
- OS/2*|os2*) #(vi
- LIB_PREFIX=''
- ;;
- *) LIB_PREFIX='lib'
- ;;
+ case $cf_cv_system_name in
+ (OS/2*|os2*)
+ if test "$DFT_LWR_MODEL" = libtool; then
+ LIB_PREFIX='lib'
+ else
+ LIB_PREFIX=''
+ fi
+ ;;
+ (*) LIB_PREFIX='lib'
+ ;;
esac
cf_prefix=$LIB_PREFIX
@@ -7155,64 +10302,82 @@ if test X"$CC_G_OPT" = X"" ; then
test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT=''
fi
-echo "$as_me:7158: checking for default loader flags" >&5
+echo "$as_me:10305: checking for default loader flags" >&5
echo $ECHO_N "checking for default loader flags... $ECHO_C" >&6
case $DFT_LWR_MODEL in
-normal) LD_MODEL='' ;;
-debug) LD_MODEL=$CC_G_OPT ;;
-profile) LD_MODEL='-pg';;
-shared) LD_MODEL='' ;;
+(normal) LD_MODEL='' ;;
+(debug) LD_MODEL=$CC_G_OPT ;;
+(profile) LD_MODEL='-pg';;
+(shared) LD_MODEL='' ;;
esac
-echo "$as_me:7166: result: $LD_MODEL" >&5
+echo "$as_me:10313: result: $LD_MODEL" >&5
echo "${ECHO_T}$LD_MODEL" >&6
LD_RPATH_OPT=
-echo "$as_me:7170: checking for an rpath option" >&5
+if test "x$cf_cv_enable_rpath" != xno
+then
+ echo "$as_me:10319: checking for an rpath option" >&5
echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6
-case $cf_cv_system_name in #(vi
-irix*) #(vi
- if test "$GCC" = yes; then
+ case $cf_cv_system_name in
+ (irix*)
+ if test "$GCC" = yes; then
+ LD_RPATH_OPT="-Wl,-rpath,"
+ else
+ LD_RPATH_OPT="-rpath "
+ fi
+ ;;
+ (linux*|gnu*|k*bsd*-gnu|freebsd*)
LD_RPATH_OPT="-Wl,-rpath,"
- else
+ ;;
+ (openbsd[2-9].*|mirbsd*)
+ LD_RPATH_OPT="-Wl,-rpath,"
+ ;;
+ (dragonfly*)
LD_RPATH_OPT="-rpath "
- fi
- ;;
-linux*|gnu*|k*bsd*-gnu) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-openbsd[2-9].*|mirbsd*) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-dragonfly*|freebsd*) #(vi
- LD_RPATH_OPT="-rpath "
- ;;
-netbsd*) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-osf*|mls+*) #(vi
- LD_RPATH_OPT="-rpath "
- ;;
-solaris2*) #(vi
- LD_RPATH_OPT="-R"
- ;;
-*)
- ;;
-esac
-echo "$as_me:7201: result: $LD_RPATH_OPT" >&5
+ ;;
+ (netbsd*)
+ LD_RPATH_OPT="-Wl,-rpath,"
+ ;;
+ (osf*|mls+*)
+ LD_RPATH_OPT="-rpath "
+ ;;
+ (solaris2*)
+ LD_RPATH_OPT="-R"
+ ;;
+ (*)
+ ;;
+ esac
+ echo "$as_me:10350: result: $LD_RPATH_OPT" >&5
echo "${ECHO_T}$LD_RPATH_OPT" >&6
-case "x$LD_RPATH_OPT" in #(vi
-x-R*)
- echo "$as_me:7206: checking if we need a space after rpath option" >&5
+ case "x$LD_RPATH_OPT" in
+ (x-R*)
+ echo "$as_me:10355: checking if we need a space after rpath option" >&5
echo $ECHO_N "checking if we need a space after rpath option... $ECHO_C" >&6
- cf_save_LIBS="$LIBS"
- LIBS="${LD_RPATH_OPT}$libdir $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
-#line 7211 "configure"
+ cf_save_LIBS="$LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in ${LD_RPATH_OPT}$libdir; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 10376 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
;
@@ -7220,16 +10385,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7223: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10388: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:7226: \$? = $ac_status" >&5
+ echo "$as_me:10391: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7229: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10394: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7232: \$? = $ac_status" >&5
+ echo "$as_me:10397: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_rpath_space=no
else
@@ -7238,12 +10403,13 @@ cat conftest.$ac_ext >&5
cf_rpath_space=yes
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- LIBS="$cf_save_LIBS"
- echo "$as_me:7242: result: $cf_rpath_space" >&5
+ LIBS="$cf_save_LIBS"
+ echo "$as_me:10407: result: $cf_rpath_space" >&5
echo "${ECHO_T}$cf_rpath_space" >&6
- test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
- ;;
-esac
+ test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
+ ;;
+ esac
+fi
RM_SHARED_OPTS=
LOCAL_LDFLAGS=
@@ -7260,23 +10426,25 @@ esac
cf_ld_rpath_opt=
test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT"
- echo "$as_me:7263: checking if release/abi version should be used for shared libs" >&5
+ echo "$as_me:10429: checking if release/abi version should be used for shared libs" >&5
echo $ECHO_N "checking if release/abi version should be used for shared libs... $ECHO_C" >&6
# Check whether --with-shlib-version or --without-shlib-version was given.
if test "${with_shlib_version+set}" = set; then
withval="$with_shlib_version"
test -z "$withval" && withval=auto
- case $withval in #(vi
- yes) #(vi
+ case $withval in
+ (yes)
cf_cv_shlib_version=auto
;;
- rel|abi|auto|no) #(vi
+ (rel|abi|auto)
cf_cv_shlib_version=$withval
;;
- *)
- { { echo "$as_me:7278: error: option value must be one of: rel, abi, auto or no" >&5
-echo "$as_me: error: option value must be one of: rel, abi, auto or no" >&2;}
+ (*)
+ echo "$as_me:10444: result: $withval" >&5
+echo "${ECHO_T}$withval" >&6
+ { { echo "$as_me:10446: error: option value must be one of: rel, abi, or auto" >&5
+echo "$as_me: error: option value must be one of: rel, abi, or auto" >&2;}
{ (exit 1); exit 1; }; }
;;
esac
@@ -7284,7 +10452,7 @@ echo "$as_me: error: option value must be one of: rel, abi, auto or no" >&2;}
else
cf_cv_shlib_version=auto
fi;
- echo "$as_me:7287: result: $cf_cv_shlib_version" >&5
+ echo "$as_me:10455: result: $cf_cv_shlib_version" >&5
echo "${ECHO_T}$cf_cv_shlib_version" >&6
cf_cv_rm_so_locs=no
@@ -7292,20 +10460,33 @@ echo "${ECHO_T}$cf_cv_shlib_version" >&6
# Some less-capable ports of gcc support only -fpic
CC_SHARED_OPTS=
+
+ cf_try_fPIC=no
if test "$GCC" = yes
then
- echo "$as_me:7297: checking which $CC option to use" >&5
+ cf_try_fPIC=yes
+ else
+ case $cf_cv_system_name in
+ (*linux*) # e.g., PGI compiler
+ cf_try_fPIC=yes
+ ;;
+ esac
+ fi
+
+ if test "$cf_try_fPIC" = yes
+ then
+ echo "$as_me:10478: checking which $CC option to use" >&5
echo $ECHO_N "checking which $CC option to use... $ECHO_C" >&6
cf_save_CFLAGS="$CFLAGS"
for CC_SHARED_OPTS in -fPIC -fpic ''
do
CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
cat >conftest.$ac_ext <<_ACEOF
-#line 7304 "configure"
+#line 10485 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
int x = 1
;
@@ -7313,16 +10494,16 @@ int x = 1
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7316: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10497: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7319: \$? = $ac_status" >&5
+ echo "$as_me:10500: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7322: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10503: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7325: \$? = $ac_status" >&5
+ echo "$as_me:10506: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -7331,37 +10512,37 @@ cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest.$ac_ext
done
- echo "$as_me:7334: result: $CC_SHARED_OPTS" >&5
+ echo "$as_me:10515: result: $CC_SHARED_OPTS" >&5
echo "${ECHO_T}$CC_SHARED_OPTS" >&6
CFLAGS="$cf_save_CFLAGS"
fi
cf_cv_shlib_version_infix=no
- case $cf_cv_system_name in #(vi
- aix4.3-9*|aix[5-7]*) #(vi
+ case $cf_cv_system_name in
+ (aix4.3-9*|aix[5-7]*)
if test "$GCC" = yes; then
- CC_SHARED_OPTS=
- MK_SHARED_LIB='${CC} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@'
+ CC_SHARED_OPTS='-Wl,-brtl'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@'
else
- # CC_SHARED_OPTS='-qpic=large -G'
- # perhaps "-bM:SRE -bnoentry -bexpall"
- MK_SHARED_LIB='${CC} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@'
+ CC_SHARED_OPTS='-brtl'
+ # as well as '-qpic=large -G' or perhaps "-bM:SRE -bnoentry -bexpall"
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@'
fi
;;
- beos*) #(vi
- MK_SHARED_LIB='${CC} ${CFLAGS} -o $@ -Xlinker -soname=`basename $@` -nostart -e 0'
+ (beos*)
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -o $@ -Xlinker -soname=`basename $@` -nostart -e 0'
;;
- cygwin*) #(vi
+ (cygwin*)
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cf_cv_shlib_version=cygdll
cf_cv_shlib_version_infix=cygdll
shlibdir=$bindir
MAKE_DLLS=
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\$1
IMPORT_LIB=\`echo "\$1" | sed -e 's/cyg/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\`
shift
@@ -7370,20 +10551,20 @@ echo "${ECHO_T}$CC_SHARED_OPTS" >&6
** SHARED_LIB \$SHARED_LIB
** IMPORT_LIB \$IMPORT_LIB
EOF
- exec \$* -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB}
+ exec \$* ${LDFLAGS} -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB}
CF_EOF
chmod +x mk_shared_lib.sh
;;
- msys*) #(vi
+ (msys*)
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cf_cv_shlib_version=msysdll
cf_cv_shlib_version_infix=msysdll
shlibdir=$bindir
MAKE_DLLS=
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\$1
IMPORT_LIB=\`echo "\$1" | sed -e 's/msys-/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\`
shift
@@ -7392,17 +10573,17 @@ CF_EOF
** SHARED_LIB \$SHARED_LIB
** IMPORT_LIB \$IMPORT_LIB
EOF
- exec \$* -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB}
+ exec \$* ${LDFLAGS} -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB}
CF_EOF
chmod +x mk_shared_lib.sh
;;
- darwin*) #(vi
+ (darwin*)
cf_try_cflags="no-cpp-precomp"
CC_SHARED_OPTS="-dynamic"
- MK_SHARED_LIB='${CC} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $@` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $@'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $@` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $@'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi
cf_cv_shlib_version_infix=yes
- echo "$as_me:7405: checking if ld -search_paths_first works" >&5
+ echo "$as_me:10586: checking if ld -search_paths_first works" >&5
echo $ECHO_N "checking if ld -search_paths_first works... $ECHO_C" >&6
if test "${cf_cv_ldflags_search_paths_first+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7411,11 +10592,11 @@ else
cf_save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
cat >conftest.$ac_ext <<_ACEOF
-#line 7414 "configure"
+#line 10595 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
int i;
;
@@ -7423,16 +10604,16 @@ int i;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7426: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10607: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:7429: \$? = $ac_status" >&5
+ echo "$as_me:10610: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7432: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10613: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7435: \$? = $ac_status" >&5
+ echo "$as_me:10616: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ldflags_search_paths_first=yes
else
@@ -7443,21 +10624,21 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$cf_save_LDFLAGS
fi
-echo "$as_me:7446: result: $cf_cv_ldflags_search_paths_first" >&5
+echo "$as_me:10627: result: $cf_cv_ldflags_search_paths_first" >&5
echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
if test $cf_cv_ldflags_search_paths_first = yes; then
LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
fi
;;
- hpux[7-8]*) #(vi
+ (hpux[7-8]*)
# HP-UX 8.07 ld lacks "+b" option used for libdir search-list
if test "$GCC" != yes; then
CC_SHARED_OPTS='+Z'
fi
- MK_SHARED_LIB='${LD} -b -o $@'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -b -o $@'
INSTALL_LIB="-m 555"
;;
- hpux*) #(vi
+ (hpux*)
# (tested with gcc 2.7.2 -- I don't have c89)
if test "$GCC" = yes; then
LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}'
@@ -7465,36 +10646,36 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
CC_SHARED_OPTS='+Z'
LD_SHARED_OPTS='-Wl,+b,${libdir}'
fi
- MK_SHARED_LIB='${LD} +b ${libdir} -b -o $@'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} +b ${libdir} -b -o $@'
# HP-UX shared libraries must be executable, and should be
# readonly to exploit a quirk in the memory manager.
INSTALL_LIB="-m 555"
;;
- interix*)
+ (interix*)
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
if test "$cf_cv_shlib_version" = rel; then
- cf_shared_soname='`basename .${REL_VERSION}`.${ABI_VERSION}'
+ cf_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
else
- cf_shared_soname='`basename `'
+ cf_shared_soname='`basename $@`'
fi
CC_SHARED_OPTS=
- MK_SHARED_LIB='${CC} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o '
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $@'
;;
- irix*) #(vi
+ (irix*)
if test "$cf_cv_enable_rpath" = yes ; then
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
# tested with IRIX 5.2 and 'cc'.
if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
- MK_SHARED_LIB='${CC} -shared -rdata_shared -soname `basename $@` -o $@'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -rdata_shared -soname `basename $@` -o $@'
else
- MK_SHARED_LIB='${CC} -shared -Wl,-soname,`basename $@` -o $@'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,`basename $@` -o $@'
fi
cf_cv_rm_so_locs=yes
;;
- linux*|gnu*|k*bsd*-gnu) #(vi
- if test "$DFT_LWR_MODEL" = "shared" ; then
+ (linux*|gnu*|k*bsd*-gnu)
+ if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
@@ -7509,9 +10690,9 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
cf_cv_shared_soname='`basename $@`'
fi
- MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@'
;;
- mingw*) #(vi
+ (mingw*)
cf_cv_shlib_version=mingw
cf_cv_shlib_version_infix=mingw
shlibdir=$bindir
@@ -7522,10 +10703,10 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS"
fi
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\$1
IMPORT_LIB=\`echo "\$1" | sed -e 's/[0-9]*\.dll$/.dll.a/'\`
shift
@@ -7534,12 +10715,12 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
** SHARED_LIB \$SHARED_LIB
** IMPORT_LIB \$IMPORT_LIB
EOF
- exec \$* -shared -Wl,--enable-auto-import,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB}
+ exec \$* ${LDFLAGS} -shared -Wl,--enable-auto-import,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB}
CF_EOF
chmod +x mk_shared_lib.sh
;;
- openbsd[2-9].*|mirbsd*) #(vi
- if test "$DFT_LWR_MODEL" = "shared" ; then
+ (openbsd[2-9].*|mirbsd*)
+ if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
@@ -7555,14 +10736,14 @@ CF_EOF
cf_cv_shared_soname='`basename $@`'
fi
- MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@'
;;
- nto-qnx*|openbsd*|freebsd[12].*) #(vi
+ (nto-qnx*|openbsd*|freebsd[12].*)
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
- MK_SHARED_LIB='${LD} -Bshareable -o $@'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -Bshareable -o $@'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
;;
- dragonfly*|freebsd*) #(vi
+ (dragonfly*|freebsd*)
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
@@ -7577,9 +10758,9 @@ CF_EOF
cf_cv_shared_soname='`basename $@`'
fi
- MK_SHARED_LIB='${LD} -shared -Bshareable -soname=`basename $@` -o $@'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@'
;;
- netbsd*) #(vi
+ (netbsd*)
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
@@ -7600,34 +10781,34 @@ CF_EOF
cf_cv_shared_soname='`basename $@`'
fi
- MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $@'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $@'
else
- MK_SHARED_LIB='${CC} -Wl,-shared -Wl,-Bshareable -o $@'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -Wl,-shared -Wl,-Bshareable -o $@'
fi
;;
- osf*|mls+*) #(vi
+ (osf*|mls+*)
# tested with OSF/1 V3.2 and 'cc'
# tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't
# link with shared libs).
- MK_SHARED_LIB='${LD} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $@`'
- case $host_os in #(vi
- osf4*)
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $@`'
+ case $host_os in
+ (osf4*)
MK_SHARED_LIB="${MK_SHARED_LIB} -msym"
;;
esac
MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $@'
- if test "$DFT_LWR_MODEL" = "shared" ; then
+ if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
cf_cv_rm_so_locs=yes
;;
- sco3.2v5*) # (also uw2* and UW7: hops 13-Apr-98
+ (sco3.2v5*) # also uw2* and UW7: hops 13-Apr-98
# tested with osr5.0.5
if test "$GCC" != yes; then
CC_SHARED_OPTS='-belf -KPIC'
fi
- MK_SHARED_LIB='${LD} -dy -G -h `basename $@ .${REL_VERSION}`.${ABI_VERSION} -o $@'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -dy -G -h `basename $@ .${REL_VERSION}`.${ABI_VERSION} -o $@'
if test "$cf_cv_enable_rpath" = yes ; then
# only way is to set LD_RUN_PATH but no switch for it
RUN_PATH=$libdir
@@ -7636,15 +10817,15 @@ CF_EOF
LINK_PROGS='LD_RUN_PATH=${libdir}'
LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib'
;;
- sunos4*) #(vi
+ (sunos4*)
# tested with SunOS 4.1.1 and gcc 2.7.0
if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='${LD} -assert pure-text -o $@'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -assert pure-text -o $@'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
;;
- solaris2*) #(vi
+ (solaris2*)
# tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
# tested with SunOS 5.10 (solaris 10) and gcc 3.4.3
if test "$DFT_LWR_MODEL" = "shared" ; then
@@ -7668,11 +10849,11 @@ CF_EOF
do
CFLAGS="$cf_shared_opts $cf_save_CFLAGS"
cat >conftest.$ac_ext <<_ACEOF
-#line 7671 "configure"
+#line 10852 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello\n");
;
@@ -7680,16 +10861,16 @@ printf("Hello\n");
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7683: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10864: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7686: \$? = $ac_status" >&5
+ echo "$as_me:10867: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7689: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10870: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7692: \$? = $ac_status" >&5
+ echo "$as_me:10873: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -7700,33 +10881,33 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
CFLAGS="$cf_save_CFLAGS"
CC_SHARED_OPTS=$cf_shared_opts
- MK_SHARED_LIB='${CC} -dy -G -h '$cf_cv_shared_soname' -o $@'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -h '$cf_cv_shared_soname' -o $@'
else
- MK_SHARED_LIB='${CC} -shared -dy -G -h '$cf_cv_shared_soname' -o $@'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -h '$cf_cv_shared_soname' -o $@'
fi
;;
- sysv5uw7*|unix_sv*) #(vi
+ (sysv5uw7*|unix_sv*)
# tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='${LD} -d y -G -o $@'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -d y -G -o $@'
;;
- *)
+ (*)
CC_SHARED_OPTS='unknown'
MK_SHARED_LIB='echo unknown'
;;
esac
# This works if the last tokens in $MK_SHARED_LIB are the -o target.
- case "$cf_cv_shlib_version" in #(vi
- rel|abi)
- case "$MK_SHARED_LIB" in #(vi
- *'-o $@') #(vi
+ case "$cf_cv_shlib_version" in
+ (rel|abi)
+ case "$MK_SHARED_LIB" in
+ (*'-o $@')
test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
;;
- *)
- { echo "$as_me:7729: WARNING: ignored --with-shlib-version" >&5
+ (*)
+ { echo "$as_me:10910: WARNING: ignored --with-shlib-version" >&5
echo "$as_me: WARNING: ignored --with-shlib-version" >&2;}
;;
esac
@@ -7736,7 +10917,7 @@ echo "$as_me: WARNING: ignored --with-shlib-version" >&2;}
if test -n "$cf_try_cflags"
then
cat > conftest.$ac_ext <<EOF
-#line 7739 "${as_me:-configure}"
+#line 10920 "${as_me:-configure}"
#include <stdio.h>
int main(int argc, char *argv[])
{
@@ -7748,18 +10929,18 @@ EOF
for cf_opt in $cf_try_cflags
do
CFLAGS="$cf_save_CFLAGS -$cf_opt"
- echo "$as_me:7751: checking if CFLAGS option -$cf_opt works" >&5
+ echo "$as_me:10932: checking if CFLAGS option -$cf_opt works" >&5
echo $ECHO_N "checking if CFLAGS option -$cf_opt works... $ECHO_C" >&6
- if { (eval echo "$as_me:7753: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:10934: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7756: \$? = $ac_status" >&5
+ echo "$as_me:10937: \$? = $ac_status" >&5
(exit $ac_status); }; then
- echo "$as_me:7758: result: yes" >&5
+ echo "$as_me:10939: result: yes" >&5
echo "${ECHO_T}yes" >&6
cf_save_CFLAGS="$CFLAGS"
else
- echo "$as_me:7762: result: no" >&5
+ echo "$as_me:10943: result: no" >&5
echo "${ECHO_T}no" >&6
fi
done
@@ -7774,17 +10955,17 @@ echo "${ECHO_T}no" >&6
test -n "$verbose" && echo " CC_SHARED_OPTS: $CC_SHARED_OPTS" 1>&6
-echo "${as_me:-configure}:7777: testing CC_SHARED_OPTS: $CC_SHARED_OPTS ..." 1>&5
+echo "${as_me:-configure}:10958: testing CC_SHARED_OPTS: $CC_SHARED_OPTS ..." 1>&5
test -n "$verbose" && echo " MK_SHARED_LIB: $MK_SHARED_LIB" 1>&6
-echo "${as_me:-configure}:7781: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5
+echo "${as_me:-configure}:10962: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5
# The test/sample programs in the original tree link using rpath option.
# Make it optional for packagers.
if test -n "$LOCAL_LDFLAGS"
then
- echo "$as_me:7787: checking if you want to link sample programs with rpath option" >&5
+ echo "$as_me:10968: checking if you want to link sample programs with rpath option" >&5
echo $ECHO_N "checking if you want to link sample programs with rpath option... $ECHO_C" >&6
# Check whether --enable-rpath-link or --disable-rpath-link was given.
@@ -7794,7 +10975,7 @@ if test "${enable_rpath_link+set}" = set; then
else
with_rpath_link=yes
fi;
- echo "$as_me:7797: result: $with_rpath_link" >&5
+ echo "$as_me:10978: result: $with_rpath_link" >&5
echo "${ECHO_T}$with_rpath_link" >&6
if test "$with_rpath_link" = no
then
@@ -7806,7 +10987,7 @@ fi
###############################################################################
### use option --enable-broken-linker to force on use of broken-linker support
-echo "$as_me:7809: checking if you want broken-linker support code" >&5
+echo "$as_me:10990: checking if you want broken-linker support code" >&5
echo $ECHO_N "checking if you want broken-linker support code... $ECHO_C" >&6
# Check whether --enable-broken_linker or --disable-broken_linker was given.
@@ -7816,7 +10997,7 @@ if test "${enable_broken_linker+set}" = set; then
else
with_broken_linker=${BROKEN_LINKER:-no}
fi;
-echo "$as_me:7819: result: $with_broken_linker" >&5
+echo "$as_me:11000: result: $with_broken_linker" >&5
echo "${ECHO_T}$with_broken_linker" >&6
BROKEN_LINKER=0
@@ -7827,8 +11008,8 @@ EOF
BROKEN_LINKER=1
elif test "$DFT_LWR_MODEL" = shared ; then
- case $cf_cv_system_name in #(vi
- cygwin*)
+ case $cf_cv_system_name in
+ (cygwin*)
cat >>confdefs.h <<\EOF
#define BROKEN_LINKER 1
EOF
@@ -7836,7 +11017,7 @@ EOF
BROKEN_LINKER=1
test -n "$verbose" && echo " cygwin linker is broken anyway" 1>&6
-echo "${as_me:-configure}:7839: testing cygwin linker is broken anyway ..." 1>&5
+echo "${as_me:-configure}:11020: testing cygwin linker is broken anyway ..." 1>&5
;;
esac
@@ -7844,25 +11025,76 @@ fi
# Check to define _XOPEN_SOURCE "automatically"
-cf_XOPEN_SOURCE=500
+echo "$as_me:11028: checking if the POSIX test-macros are already defined" >&5
+echo $ECHO_N "checking if the POSIX test-macros are already defined... $ECHO_C" >&6
+if test "${cf_cv_posix_visible+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 11035 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int
+main (void)
+{
+
+#if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
+ && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
+ && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
+ && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
+#error conflicting symbols found
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:11054: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:11057: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:11060: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11063: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_posix_visible=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_posix_visible=yes
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:11074: result: $cf_cv_posix_visible" >&5
+echo "${ECHO_T}$cf_cv_posix_visible" >&6
+
+if test "$cf_cv_posix_visible" = no; then
+
+cf_XOPEN_SOURCE=600
cf_POSIX_C_SOURCE=199506L
cf_xopen_source=
-case $host_os in #(vi
-aix[4-7]*) #(vi
+case $host_os in
+(aix[4-7]*)
cf_xopen_source="-D_ALL_SOURCE"
;;
-cygwin|msys) #(vi
+(msys)
cf_XOPEN_SOURCE=600
;;
-darwin[0-8].*) #(vi
+(darwin[0-8].*)
cf_xopen_source="-D_APPLE_C_SOURCE"
;;
-darwin*) #(vi
+(darwin*)
cf_xopen_source="-D_DARWIN_C_SOURCE"
cf_XOPEN_SOURCE=
;;
-freebsd*|dragonfly*) #(vi
+(freebsd*|dragonfly*|midnightbsd*)
# 5.x headers associate
# _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
# _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
@@ -7870,83 +11102,448 @@ freebsd*|dragonfly*) #(vi
cf_XOPEN_SOURCE=600
cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
;;
-hpux11*) #(vi
+(hpux11*)
cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
;;
-hpux*) #(vi
+(hpux*)
cf_xopen_source="-D_HPUX_SOURCE"
;;
-irix[56].*) #(vi
+(irix[56].*)
cf_xopen_source="-D_SGI_SOURCE"
cf_XOPEN_SOURCE=
;;
-linux*|gnu*|mint*|k*bsd*-gnu) #(vi
+(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
+
+cf_gnu_xopen_source=$cf_XOPEN_SOURCE
+
+echo "$as_me:11119: checking if this is the GNU C library" >&5
+echo $ECHO_N "checking if this is the GNU C library... $ECHO_C" >&6
+if test "${cf_cv_gnu_library+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 11126 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main (void)
+{
+
+ #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0
+ return 0;
+ #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0
+ return 0;
+ #else
+ # error not GNU C library
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:11145: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:11148: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:11151: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11154: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_gnu_library=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_gnu_library=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:11165: result: $cf_cv_gnu_library" >&5
+echo "${ECHO_T}$cf_cv_gnu_library" >&6
+
+if test x$cf_cv_gnu_library = xyes; then
+
+ # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
+ # was changed to help a little. newlib incorporated the change about 4
+ # years later.
+ echo "$as_me:11173: checking if _DEFAULT_SOURCE can be used as a basis" >&5
+echo $ECHO_N "checking if _DEFAULT_SOURCE can be used as a basis... $ECHO_C" >&6
+if test "${cf_cv_gnu_library_219+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cf_save="$CPPFLAGS"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11185 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main (void)
+{
+
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2)
+ return 0;
+ #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3)
+ return 0;
+ #else
+ # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:11204: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:11207: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:11210: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11213: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_gnu_library_219=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_gnu_library_219=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS="$cf_save"
+
+fi
+echo "$as_me:11225: result: $cf_cv_gnu_library_219" >&5
+echo "${ECHO_T}$cf_cv_gnu_library_219" >&6
+
+ if test "x$cf_cv_gnu_library_219" = xyes; then
+ cf_save="$CPPFLAGS"
+ echo "$as_me:11230: checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE" >&5
+echo $ECHO_N "checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_gnu_dftsrc_219+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
-echo "$as_me:7885: checking if we must define _GNU_SOURCE" >&5
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11335 "configure"
+#include "confdefs.h"
+
+ #include <limits.h>
+ #include <sys/types.h>
+
+int
+main (void)
+{
+
+ #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1)
+ return 0;
+ #else
+ # error GNU C library is too old
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:11355: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:11358: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:11361: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11364: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_gnu_dftsrc_219=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_gnu_dftsrc_219=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:11375: result: $cf_cv_gnu_dftsrc_219" >&5
+echo "${ECHO_T}$cf_cv_gnu_dftsrc_219" >&6
+ test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
+ else
+ cf_cv_gnu_dftsrc_219=maybe
+ fi
+
+ if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
+
+ echo "$as_me:11384: checking if we must define _GNU_SOURCE" >&5
echo $ECHO_N "checking if we must define _GNU_SOURCE... $ECHO_C" >&6
if test "${cf_cv_gnu_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-cat >conftest.$ac_ext <<_ACEOF
-#line 7892 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11391 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
-#ifndef _XOPEN_SOURCE
-make an error
-#endif
+ #ifndef _XOPEN_SOURCE
+ #error expected _XOPEN_SOURCE to be defined
+ #endif
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7907: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11406: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7910: \$? = $ac_status" >&5
+ echo "$as_me:11409: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7913: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11412: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7916: \$? = $ac_status" >&5
+ echo "$as_me:11415: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_gnu_source=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
- cat >conftest.$ac_ext <<_ACEOF
-#line 7925 "configure"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in -D_GNU_SOURCE
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11522 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
-#ifdef _XOPEN_SOURCE
-make an error
-#endif
+ #ifdef _XOPEN_SOURCE
+ #error expected _XOPEN_SOURCE to be undefined
+ #endif
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7940: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11537: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7943: \$? = $ac_status" >&5
+ echo "$as_me:11540: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7946: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11543: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7949: \$? = $ac_status" >&5
+ echo "$as_me:11546: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_gnu_source=no
else
@@ -7955,21 +11552,86 @@ cat conftest.$ac_ext >&5
cf_cv_gnu_source=yes
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- CPPFLAGS="$cf_save"
+ CPPFLAGS="$cf_save"
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:7964: result: $cf_cv_gnu_source" >&5
+echo "$as_me:11561: result: $cf_cv_gnu_source" >&5
echo "${ECHO_T}$cf_cv_gnu_source" >&6
-test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+
+ if test "$cf_cv_gnu_source" = yes
+ then
+ echo "$as_me:11566: checking if we should also define _DEFAULT_SOURCE" >&5
+echo $ECHO_N "checking if we should also define _DEFAULT_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_default_source+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_GNU_SOURCE"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11576 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main (void)
+{
+
+ #ifdef _DEFAULT_SOURCE
+ #error expected _DEFAULT_SOURCE to be undefined
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:11591: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:11594: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:11597: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11600: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_default_source=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_default_source=yes
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:11611: result: $cf_cv_default_source" >&5
+echo "${ECHO_T}$cf_cv_default_source" >&6
+ if test "$cf_cv_default_source" = yes
+ then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE"
+
+ fi
+ fi
+ fi
+
+fi
;;
-mirbsd*) #(vi
+(minix*)
+ cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
+ ;;
+(mirbsd*)
# setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
cf_XOPEN_SOURCE=
+if test "$cf_cv_posix_visible" = no; then
+
cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE
cf_save_CFLAGS="$CFLAGS"
@@ -7983,20 +11645,20 @@ cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
-e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'`
-echo "$as_me:7986: checking if we should define _POSIX_C_SOURCE" >&5
+echo "$as_me:11648: checking if we should define _POSIX_C_SOURCE" >&5
echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
if test "${cf_cv_posix_c_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-echo "${as_me:-configure}:7992: testing if the symbol is already defined go no further ..." 1>&5
+echo "${as_me:-configure}:11654: testing if the symbol is already defined go no further ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 7995 "configure"
+#line 11657 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _POSIX_C_SOURCE
@@ -8007,41 +11669,41 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8010: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11672: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8013: \$? = $ac_status" >&5
+ echo "$as_me:11675: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8016: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11678: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8019: \$? = $ac_status" >&5
+ echo "$as_me:11681: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_posix_c_source=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_want_posix_source=no
- case .$cf_POSIX_C_SOURCE in #(vi
- .[12]??*) #(vi
+ case .$cf_POSIX_C_SOURCE in
+ (.[12]??*)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
;;
- .2) #(vi
+ (.2)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
cf_want_posix_source=yes
;;
- .*)
+ (.*)
cf_want_posix_source=yes
;;
esac
if test "$cf_want_posix_source" = yes ; then
cat >conftest.$ac_ext <<_ACEOF
-#line 8040 "configure"
+#line 11702 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifdef _POSIX_SOURCE
@@ -8052,16 +11714,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8055: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11717: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8058: \$? = $ac_status" >&5
+ echo "$as_me:11720: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8061: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11723: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8064: \$? = $ac_status" >&5
+ echo "$as_me:11726: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -8072,19 +11734,22 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "${as_me:-configure}:8075: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+echo "${as_me:-configure}:11737: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
CFLAGS="$cf_trim_CFLAGS"
- CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+ CPPFLAGS="$cf_trim_CPPFLAGS"
-echo "${as_me:-configure}:8080: testing if the second compile does not leave our definition intact error ..." 1>&5
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source"
+
+echo "${as_me:-configure}:11745: testing if the second compile does not leave our definition intact error ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 8083 "configure"
+#line 11748 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _POSIX_C_SOURCE
@@ -8095,16 +11760,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8098: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11763: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8101: \$? = $ac_status" >&5
+ echo "$as_me:11766: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8104: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11769: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8107: \$? = $ac_status" >&5
+ echo "$as_me:11772: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -8120,7 +11785,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:8123: result: $cf_cv_posix_c_source" >&5
+echo "$as_me:11788: result: $cf_cv_posix_c_source" >&5
echo "${ECHO_T}$cf_cv_posix_c_source" >&6
if test "$cf_cv_posix_c_source" != no ; then
@@ -8135,32 +11800,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_cv_posix_c_source
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -8169,21 +11840,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -8192,56 +11871,68 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
fi
+fi # cf_cv_posix_visible
+
;;
-netbsd*) #(vi
+(netbsd*)
cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
;;
-openbsd[4-9]*) #(vi
+(openbsd[4-9]*)
# setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
cf_xopen_source="-D_BSD_SOURCE"
cf_XOPEN_SOURCE=600
;;
-openbsd*) #(vi
+(openbsd*)
# setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
;;
-osf[45]*) #(vi
+(osf[45]*)
cf_xopen_source="-D_OSF_SOURCE"
;;
-nto-qnx*) #(vi
+(nto-qnx*)
cf_xopen_source="-D_QNX_SOURCE"
;;
-sco*) #(vi
+(sco*)
# setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
;;
-solaris2.*) #(vi
+(solaris2.*)
cf_xopen_source="-D__EXTENSIONS__"
cf_cv_xopen_source=broken
;;
-*)
+(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
+ cf_XOPEN_SOURCE=
+ cf_POSIX_C_SOURCE=
+ ;;
+(*)
-echo "$as_me:8237: checking if we should define _XOPEN_SOURCE" >&5
+echo "$as_me:11928: checking if we should define _XOPEN_SOURCE" >&5
echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
if test "${cf_cv_xopen_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 8244 "configure"
+#line 11935 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -8249,7 +11940,7 @@ else
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _XOPEN_SOURCE
@@ -8260,25 +11951,28 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8263: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11954: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8266: \$? = $ac_status" >&5
+ echo "$as_me:11957: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8269: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11960: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8272: \$? = $ac_status" >&5
+ echo "$as_me:11963: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xopen_source=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 8281 "configure"
+#line 11975 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -8286,7 +11980,7 @@ cf_save="$CPPFLAGS"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifdef _XOPEN_SOURCE
@@ -8297,16 +11991,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8300: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11994: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8303: \$? = $ac_status" >&5
+ echo "$as_me:11997: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8306: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12000: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8309: \$? = $ac_status" >&5
+ echo "$as_me:12003: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xopen_source=no
else
@@ -8321,7 +12015,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:8324: result: $cf_cv_xopen_source" >&5
+echo "$as_me:12018: result: $cf_cv_xopen_source" >&5
echo "${ECHO_T}$cf_cv_xopen_source" >&6
if test "$cf_cv_xopen_source" != no ; then
@@ -8344,32 +12038,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_temp_xopen_source
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -8378,21 +12078,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -8401,21 +12109,29 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
fi
+if test "$cf_cv_posix_visible" = no; then
+
cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE
cf_save_CFLAGS="$CFLAGS"
@@ -8429,20 +12145,20 @@ cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
-e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'`
-echo "$as_me:8432: checking if we should define _POSIX_C_SOURCE" >&5
+echo "$as_me:12148: checking if we should define _POSIX_C_SOURCE" >&5
echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
if test "${cf_cv_posix_c_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-echo "${as_me:-configure}:8438: testing if the symbol is already defined go no further ..." 1>&5
+echo "${as_me:-configure}:12154: testing if the symbol is already defined go no further ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 8441 "configure"
+#line 12157 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _POSIX_C_SOURCE
@@ -8453,41 +12169,41 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8456: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12172: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8459: \$? = $ac_status" >&5
+ echo "$as_me:12175: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8462: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12178: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8465: \$? = $ac_status" >&5
+ echo "$as_me:12181: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_posix_c_source=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_want_posix_source=no
- case .$cf_POSIX_C_SOURCE in #(vi
- .[12]??*) #(vi
+ case .$cf_POSIX_C_SOURCE in
+ (.[12]??*)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
;;
- .2) #(vi
+ (.2)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
cf_want_posix_source=yes
;;
- .*)
+ (.*)
cf_want_posix_source=yes
;;
esac
if test "$cf_want_posix_source" = yes ; then
cat >conftest.$ac_ext <<_ACEOF
-#line 8486 "configure"
+#line 12202 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifdef _POSIX_SOURCE
@@ -8498,16 +12214,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8501: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12217: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8504: \$? = $ac_status" >&5
+ echo "$as_me:12220: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8507: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12223: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8510: \$? = $ac_status" >&5
+ echo "$as_me:12226: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -8518,19 +12234,22 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "${as_me:-configure}:8521: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+echo "${as_me:-configure}:12237: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
CFLAGS="$cf_trim_CFLAGS"
- CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+ CPPFLAGS="$cf_trim_CPPFLAGS"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source"
-echo "${as_me:-configure}:8526: testing if the second compile does not leave our definition intact error ..." 1>&5
+echo "${as_me:-configure}:12245: testing if the second compile does not leave our definition intact error ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 8529 "configure"
+#line 12248 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _POSIX_C_SOURCE
@@ -8541,16 +12260,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8544: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12263: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8547: \$? = $ac_status" >&5
+ echo "$as_me:12266: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8550: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12269: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8553: \$? = $ac_status" >&5
+ echo "$as_me:12272: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -8566,7 +12285,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:8569: result: $cf_cv_posix_c_source" >&5
+echo "$as_me:12288: result: $cf_cv_posix_c_source" >&5
echo "${ECHO_T}$cf_cv_posix_c_source" >&6
if test "$cf_cv_posix_c_source" != no ; then
@@ -8581,32 +12300,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_cv_posix_c_source
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -8615,21 +12340,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -8638,21 +12371,29 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
fi
+fi # cf_cv_posix_visible
+
;;
esac
@@ -8666,32 +12407,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_xopen_source
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -8700,21 +12447,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -8722,31 +12477,46 @@ esac
done
if test -n "$cf_new_cflags" ; then
+ test -n "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6
+
+echo "${as_me:-configure}:12482: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
- CFLAGS="$CFLAGS $cf_new_cflags"
fi
if test -n "$cf_new_cppflags" ; then
+ test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6
+
+echo "${as_me:-configure}:12492: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
fi
if test -n "$cf_new_extra_cppflags" ; then
+ test -n "$verbose" && echo " add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags" 1>&6
+
+echo "${as_me:-configure}:12502: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
fi
fi
if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
- echo "$as_me:8742: checking if _XOPEN_SOURCE really is set" >&5
+ echo "$as_me:12512: checking if _XOPEN_SOURCE really is set" >&5
echo $ECHO_N "checking if _XOPEN_SOURCE really is set... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 8745 "configure"
+#line 12515 "configure"
#include "confdefs.h"
#include <stdlib.h>
int
-main ()
+main (void)
{
#ifndef _XOPEN_SOURCE
@@ -8757,16 +12527,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8760: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12530: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8763: \$? = $ac_status" >&5
+ echo "$as_me:12533: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8766: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12536: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8769: \$? = $ac_status" >&5
+ echo "$as_me:12539: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_XOPEN_SOURCE_set=yes
else
@@ -8775,16 +12545,16 @@ cat conftest.$ac_ext >&5
cf_XOPEN_SOURCE_set=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- echo "$as_me:8778: result: $cf_XOPEN_SOURCE_set" >&5
+ echo "$as_me:12548: result: $cf_XOPEN_SOURCE_set" >&5
echo "${ECHO_T}$cf_XOPEN_SOURCE_set" >&6
if test $cf_XOPEN_SOURCE_set = yes
then
cat >conftest.$ac_ext <<_ACEOF
-#line 8783 "configure"
+#line 12553 "configure"
#include "confdefs.h"
#include <stdlib.h>
int
-main ()
+main (void)
{
#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
@@ -8795,16 +12565,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8798: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12568: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8801: \$? = $ac_status" >&5
+ echo "$as_me:12571: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8804: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12574: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8807: \$? = $ac_status" >&5
+ echo "$as_me:12577: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_XOPEN_SOURCE_set_ok=yes
else
@@ -8815,19 +12585,19 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
if test $cf_XOPEN_SOURCE_set_ok = no
then
- { echo "$as_me:8818: WARNING: _XOPEN_SOURCE is lower than requested" >&5
+ { echo "$as_me:12588: WARNING: _XOPEN_SOURCE is lower than requested" >&5
echo "$as_me: WARNING: _XOPEN_SOURCE is lower than requested" >&2;}
fi
else
-echo "$as_me:8823: checking if we should define _XOPEN_SOURCE" >&5
+echo "$as_me:12593: checking if we should define _XOPEN_SOURCE" >&5
echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
if test "${cf_cv_xopen_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 8830 "configure"
+#line 12600 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -8835,7 +12605,7 @@ else
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _XOPEN_SOURCE
@@ -8846,25 +12616,28 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8849: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12619: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8852: \$? = $ac_status" >&5
+ echo "$as_me:12622: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8855: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12625: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8858: \$? = $ac_status" >&5
+ echo "$as_me:12628: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xopen_source=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 8867 "configure"
+#line 12640 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -8872,7 +12645,7 @@ cf_save="$CPPFLAGS"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifdef _XOPEN_SOURCE
@@ -8883,16 +12656,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8886: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12659: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8889: \$? = $ac_status" >&5
+ echo "$as_me:12662: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8892: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12665: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8895: \$? = $ac_status" >&5
+ echo "$as_me:12668: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xopen_source=no
else
@@ -8907,7 +12680,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:8910: result: $cf_cv_xopen_source" >&5
+echo "$as_me:12683: result: $cf_cv_xopen_source" >&5
echo "${ECHO_T}$cf_cv_xopen_source" >&6
if test "$cf_cv_xopen_source" != no ; then
@@ -8930,32 +12703,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_temp_xopen_source
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -8964,21 +12743,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -8987,23 +12774,30 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
fi
fi
fi
+fi # cf_cv_posix_visible
# Check whether --enable-largefile or --disable-largefile was given.
if test "${enable_largefile+set}" = set; then
@@ -9012,7 +12806,7 @@ if test "${enable_largefile+set}" = set; then
fi;
if test "$enable_largefile" != no; then
- echo "$as_me:9015: checking for special C compiler options needed for large files" >&5
+ echo "$as_me:12809: checking for special C compiler options needed for large files" >&5
echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6
if test "${ac_cv_sys_largefile_CC+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9024,7 +12818,7 @@ else
# IRIX 6.2 and later do not support large files by default,
# so use the C compiler's -n32 option if that helps.
cat >conftest.$ac_ext <<_ACEOF
-#line 9027 "configure"
+#line 12821 "configure"
#include "confdefs.h"
#include <sys/types.h>
/* Check that off_t can represent 2**63 - 1 correctly.
@@ -9036,7 +12830,7 @@ else
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
@@ -9044,16 +12838,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9047: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12841: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9050: \$? = $ac_status" >&5
+ echo "$as_me:12844: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9053: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12847: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9056: \$? = $ac_status" >&5
+ echo "$as_me:12850: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -9063,16 +12857,16 @@ fi
rm -f conftest.$ac_objext
CC="$CC -n32"
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9066: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12860: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9069: \$? = $ac_status" >&5
+ echo "$as_me:12863: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9072: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12866: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9075: \$? = $ac_status" >&5
+ echo "$as_me:12869: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_sys_largefile_CC=' -n32'; break
else
@@ -9086,13 +12880,13 @@ rm -f conftest.$ac_objext
rm -f conftest.$ac_ext
fi
fi
-echo "$as_me:9089: result: $ac_cv_sys_largefile_CC" >&5
+echo "$as_me:12883: result: $ac_cv_sys_largefile_CC" >&5
echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6
if test "$ac_cv_sys_largefile_CC" != no; then
CC=$CC$ac_cv_sys_largefile_CC
fi
- echo "$as_me:9095: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+ echo "$as_me:12889: checking for _FILE_OFFSET_BITS value needed for large files" >&5
echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6
if test "${ac_cv_sys_file_offset_bits+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9100,7 +12894,7 @@ else
while :; do
ac_cv_sys_file_offset_bits=no
cat >conftest.$ac_ext <<_ACEOF
-#line 9103 "configure"
+#line 12897 "configure"
#include "confdefs.h"
#include <sys/types.h>
/* Check that off_t can represent 2**63 - 1 correctly.
@@ -9112,7 +12906,7 @@ else
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
@@ -9120,16 +12914,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9123: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12917: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9126: \$? = $ac_status" >&5
+ echo "$as_me:12920: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9129: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12923: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9132: \$? = $ac_status" >&5
+ echo "$as_me:12926: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -9138,7 +12932,7 @@ cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line 9141 "configure"
+#line 12935 "configure"
#include "confdefs.h"
#define _FILE_OFFSET_BITS 64
#include <sys/types.h>
@@ -9151,7 +12945,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
@@ -9159,16 +12953,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9162: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12956: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9165: \$? = $ac_status" >&5
+ echo "$as_me:12959: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9168: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12962: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9171: \$? = $ac_status" >&5
+ echo "$as_me:12965: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_sys_file_offset_bits=64; break
else
@@ -9179,7 +12973,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
break
done
fi
-echo "$as_me:9182: result: $ac_cv_sys_file_offset_bits" >&5
+echo "$as_me:12976: result: $ac_cv_sys_file_offset_bits" >&5
echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6
if test "$ac_cv_sys_file_offset_bits" != no; then
@@ -9189,7 +12983,7 @@ EOF
fi
rm -rf conftest*
- echo "$as_me:9192: checking for _LARGE_FILES value needed for large files" >&5
+ echo "$as_me:12986: checking for _LARGE_FILES value needed for large files" >&5
echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6
if test "${ac_cv_sys_large_files+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9197,7 +12991,7 @@ else
while :; do
ac_cv_sys_large_files=no
cat >conftest.$ac_ext <<_ACEOF
-#line 9200 "configure"
+#line 12994 "configure"
#include "confdefs.h"
#include <sys/types.h>
/* Check that off_t can represent 2**63 - 1 correctly.
@@ -9209,7 +13003,7 @@ else
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
@@ -9217,16 +13011,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9220: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13014: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9223: \$? = $ac_status" >&5
+ echo "$as_me:13017: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9226: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13020: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9229: \$? = $ac_status" >&5
+ echo "$as_me:13023: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -9235,7 +13029,7 @@ cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line 9238 "configure"
+#line 13032 "configure"
#include "confdefs.h"
#define _LARGE_FILES 1
#include <sys/types.h>
@@ -9248,7 +13042,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
@@ -9256,16 +13050,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9259: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13053: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9262: \$? = $ac_status" >&5
+ echo "$as_me:13056: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9265: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13059: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9268: \$? = $ac_status" >&5
+ echo "$as_me:13062: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_sys_large_files=1; break
else
@@ -9276,7 +13070,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
break
done
fi
-echo "$as_me:9279: result: $ac_cv_sys_large_files" >&5
+echo "$as_me:13073: result: $ac_cv_sys_large_files" >&5
echo "${ECHO_T}$ac_cv_sys_large_files" >&6
if test "$ac_cv_sys_large_files" != no; then
@@ -9288,8 +13082,8 @@ fi
rm -rf conftest*
fi
- if test "$enable_largefile" != no ; then
- echo "$as_me:9292: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+ if test "$enable_largefile" != no ; then
+ echo "$as_me:13086: checking for _LARGEFILE_SOURCE value needed for large files" >&5
echo $ECHO_N "checking for _LARGEFILE_SOURCE value needed for large files... $ECHO_C" >&6
if test "${ac_cv_sys_largefile_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9297,11 +13091,11 @@ else
while :; do
ac_cv_sys_largefile_source=no
cat >conftest.$ac_ext <<_ACEOF
-#line 9300 "configure"
+#line 13094 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
return !fseeko;
;
@@ -9309,16 +13103,16 @@ return !fseeko;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9312: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13106: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9315: \$? = $ac_status" >&5
+ echo "$as_me:13109: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9318: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13112: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9321: \$? = $ac_status" >&5
+ echo "$as_me:13115: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -9327,12 +13121,12 @@ cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line 9330 "configure"
+#line 13124 "configure"
#include "confdefs.h"
#define _LARGEFILE_SOURCE 1
#include <stdio.h>
int
-main ()
+main (void)
{
return !fseeko;
;
@@ -9340,16 +13134,16 @@ return !fseeko;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9343: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13137: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9346: \$? = $ac_status" >&5
+ echo "$as_me:13140: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9349: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13143: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9352: \$? = $ac_status" >&5
+ echo "$as_me:13146: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_sys_largefile_source=1; break
else
@@ -9360,7 +13154,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
break
done
fi
-echo "$as_me:9363: result: $ac_cv_sys_largefile_source" >&5
+echo "$as_me:13157: result: $ac_cv_sys_largefile_source" >&5
echo "${ECHO_T}$ac_cv_sys_largefile_source" >&6
if test "$ac_cv_sys_largefile_source" != no; then
@@ -9374,17 +13168,17 @@ rm -rf conftest*
# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
# in glibc 2.1.3, but that breaks too many other things.
# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
-echo "$as_me:9377: checking for fseeko" >&5
+echo "$as_me:13171: checking for fseeko" >&5
echo $ECHO_N "checking for fseeko... $ECHO_C" >&6
if test "${ac_cv_func_fseeko+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 9383 "configure"
+#line 13177 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
return fseeko && fseeko (stdin, 0, 0);
;
@@ -9392,16 +13186,16 @@ return fseeko && fseeko (stdin, 0, 0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9395: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13189: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9398: \$? = $ac_status" >&5
+ echo "$as_me:13192: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9401: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13195: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9404: \$? = $ac_status" >&5
+ echo "$as_me:13198: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_fseeko=yes
else
@@ -9411,7 +13205,7 @@ ac_cv_func_fseeko=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:9414: result: $ac_cv_func_fseeko" >&5
+echo "$as_me:13208: result: $ac_cv_func_fseeko" >&5
echo "${ECHO_T}$ac_cv_func_fseeko" >&6
if test $ac_cv_func_fseeko = yes; then
@@ -9428,25 +13222,44 @@ fi
# header files by themselves before looking at the body files it is
# told to compile. For ncurses, those header files do not include
# the config.h
- test "$ac_cv_sys_large_files" != no && CPPFLAGS="$CPPFLAGS -D_LARGE_FILES "
- test "$ac_cv_sys_largefile_source" != no && CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE "
- test "$ac_cv_sys_file_offset_bits" != no && CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits "
+ if test "$ac_cv_sys_large_files" != no
+ then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_LARGE_FILES"
+
+ fi
+ if test "$ac_cv_sys_largefile_source" != no
+ then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_LARGEFILE_SOURCE"
+
+ fi
+ if test "$ac_cv_sys_file_offset_bits" != no
+ then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
+
+ fi
- echo "$as_me:9435: checking whether to use struct dirent64" >&5
+ echo "$as_me:13247: checking whether to use struct dirent64" >&5
echo $ECHO_N "checking whether to use struct dirent64... $ECHO_C" >&6
if test "${cf_cv_struct_dirent64+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 9442 "configure"
+#line 13254 "configure"
#include "confdefs.h"
+#pragma GCC diagnostic error "-Wincompatible-pointer-types"
#include <sys/types.h>
#include <dirent.h>
int
-main ()
+main (void)
{
/* if transitional largefile support is setup, this is true */
@@ -9460,16 +13273,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9463: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13276: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9466: \$? = $ac_status" >&5
+ echo "$as_me:13279: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9469: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13282: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9472: \$? = $ac_status" >&5
+ echo "$as_me:13285: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_struct_dirent64=yes
else
@@ -9480,17 +13293,17 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:9483: result: $cf_cv_struct_dirent64" >&5
+echo "$as_me:13296: result: $cf_cv_struct_dirent64" >&5
echo "${ECHO_T}$cf_cv_struct_dirent64" >&6
test "$cf_cv_struct_dirent64" = yes &&
cat >>confdefs.h <<\EOF
#define HAVE_STRUCT_DIRENT64 1
EOF
- fi
+ fi
### Enable compiling-in rcs id's
-echo "$as_me:9493: checking if RCS identifiers should be compiled-in" >&5
+echo "$as_me:13306: checking if RCS identifiers should be compiled-in" >&5
echo $ECHO_N "checking if RCS identifiers should be compiled-in... $ECHO_C" >&6
# Check whether --with-rcs-ids or --without-rcs-ids was given.
@@ -9500,7 +13313,7 @@ if test "${with_rcs_ids+set}" = set; then
else
with_rcs_ids=no
fi;
-echo "$as_me:9503: result: $with_rcs_ids" >&5
+echo "$as_me:13316: result: $with_rcs_ids" >&5
echo "${ECHO_T}$with_rcs_ids" >&6
test "$with_rcs_ids" = yes &&
cat >>confdefs.h <<\EOF
@@ -9510,7 +13323,7 @@ EOF
###############################################################################
### Note that some functions (such as const) are normally disabled anyway.
-echo "$as_me:9513: checking if you want to build with function extensions" >&5
+echo "$as_me:13326: checking if you want to build with function extensions" >&5
echo $ECHO_N "checking if you want to build with function extensions... $ECHO_C" >&6
# Check whether --enable-ext-funcs or --disable-ext-funcs was given.
@@ -9520,7 +13333,7 @@ if test "${enable_ext_funcs+set}" = set; then
else
with_ext_funcs=yes
fi;
-echo "$as_me:9523: result: $with_ext_funcs" >&5
+echo "$as_me:13336: result: $with_ext_funcs" >&5
echo "${ECHO_T}$with_ext_funcs" >&6
if test "$with_ext_funcs" = yes ; then
NCURSES_EXT_FUNCS=1
@@ -9538,7 +13351,7 @@ else
fi
### use option --enable-const to turn on use of const beyond that in XSI.
-echo "$as_me:9541: checking for extended use of const keyword" >&5
+echo "$as_me:13354: checking for extended use of const keyword" >&5
echo $ECHO_N "checking for extended use of const keyword... $ECHO_C" >&6
# Check whether --enable-const or --disable-const was given.
@@ -9548,7 +13361,7 @@ if test "${enable_const+set}" = set; then
else
with_ext_const=no
fi;
-echo "$as_me:9551: result: $with_ext_const" >&5
+echo "$as_me:13364: result: $with_ext_const" >&5
echo "${ECHO_T}$with_ext_const" >&6
NCURSES_CONST='/*nothing*/'
if test "$with_ext_const" = yes ; then
@@ -9558,7 +13371,7 @@ fi
###############################################################################
# These options are relatively safe to experiment with.
-echo "$as_me:9561: checking if you want all development code" >&5
+echo "$as_me:13374: checking if you want all development code" >&5
echo $ECHO_N "checking if you want all development code... $ECHO_C" >&6
# Check whether --with-develop or --without-develop was given.
@@ -9568,7 +13381,7 @@ if test "${with_develop+set}" = set; then
else
with_develop=no
fi;
-echo "$as_me:9571: result: $with_develop" >&5
+echo "$as_me:13384: result: $with_develop" >&5
echo "${ECHO_T}$with_develop" >&6
###############################################################################
@@ -9577,7 +13390,7 @@ echo "${ECHO_T}$with_develop" >&6
# This is still experimental (20080329), but should ultimately be moved to
# the script-block --with-normal, etc.
-echo "$as_me:9580: checking if you want to link with the pthread library" >&5
+echo "$as_me:13393: checking if you want to link with the pthread library" >&5
echo $ECHO_N "checking if you want to link with the pthread library... $ECHO_C" >&6
# Check whether --with-pthread or --without-pthread was given.
@@ -9587,27 +13400,27 @@ if test "${with_pthread+set}" = set; then
else
with_pthread=no
fi;
-echo "$as_me:9590: result: $with_pthread" >&5
+echo "$as_me:13403: result: $with_pthread" >&5
echo "${ECHO_T}$with_pthread" >&6
if test "$with_pthread" != no ; then
- echo "$as_me:9594: checking for pthread.h" >&5
+ echo "$as_me:13407: checking for pthread.h" >&5
echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6
if test "${ac_cv_header_pthread_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 9600 "configure"
+#line 13413 "configure"
#include "confdefs.h"
#include <pthread.h>
_ACEOF
-if { (eval echo "$as_me:9604: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:13417: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:9610: \$? = $ac_status" >&5
+ echo "$as_me:13423: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -9626,7 +13439,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:9629: result: $ac_cv_header_pthread_h" >&5
+echo "$as_me:13442: result: $ac_cv_header_pthread_h" >&5
echo "${ECHO_T}$ac_cv_header_pthread_h" >&6
if test $ac_cv_header_pthread_h = yes; then
@@ -9636,18 +13449,34 @@ EOF
for cf_lib_pthread in pthread c_r
do
- echo "$as_me:9639: checking if we can link with the $cf_lib_pthread library" >&5
+ echo "$as_me:13452: checking if we can link with the $cf_lib_pthread library" >&5
echo $ECHO_N "checking if we can link with the $cf_lib_pthread library... $ECHO_C" >&6
cf_save_LIBS="$LIBS"
- LIBS="-l$cf_lib_pthread $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_lib_pthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 9644 "configure"
+#line 13473 "configure"
#include "confdefs.h"
#include <pthread.h>
int
-main ()
+main (void)
{
int rc = pthread_create(0,0,0,0);
@@ -9658,16 +13487,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9661: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13490: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9664: \$? = $ac_status" >&5
+ echo "$as_me:13493: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9667: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13496: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9670: \$? = $ac_status" >&5
+ echo "$as_me:13499: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
with_pthread=yes
else
@@ -9677,20 +13506,35 @@ with_pthread=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS="$cf_save_LIBS"
- echo "$as_me:9680: result: $with_pthread" >&5
+ echo "$as_me:13509: result: $with_pthread" >&5
echo "${ECHO_T}$with_pthread" >&6
test "$with_pthread" = yes && break
done
if test "$with_pthread" = yes ; then
- LIBS="-l$cf_lib_pthread $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_lib_pthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
cat >>confdefs.h <<\EOF
#define HAVE_LIBPTHREADS 1
EOF
else
- { { echo "$as_me:9693: error: Cannot link with pthread library" >&5
+ { { echo "$as_me:13537: error: Cannot link with pthread library" >&5
echo "$as_me: error: Cannot link with pthread library" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -9699,7 +13543,7 @@ fi
fi
-echo "$as_me:9702: checking if you want to use weak-symbols for pthreads" >&5
+echo "$as_me:13546: checking if you want to use weak-symbols for pthreads" >&5
echo $ECHO_N "checking if you want to use weak-symbols for pthreads... $ECHO_C" >&6
# Check whether --enable-weak-symbols or --disable-weak-symbols was given.
@@ -9709,23 +13553,23 @@ if test "${enable_weak_symbols+set}" = set; then
else
use_weak_symbols=no
fi;
-echo "$as_me:9712: result: $use_weak_symbols" >&5
+echo "$as_me:13556: result: $use_weak_symbols" >&5
echo "${ECHO_T}$use_weak_symbols" >&6
if test "$use_weak_symbols" = yes ; then
-echo "$as_me:9716: checking if $CC supports weak symbols" >&5
+echo "$as_me:13560: checking if $CC supports weak symbols" >&5
echo $ECHO_N "checking if $CC supports weak symbols... $ECHO_C" >&6
if test "${cf_cv_weak_symbols+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 9723 "configure"
+#line 13567 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
#if defined(__GNUC__)
@@ -9746,16 +13590,16 @@ weak_symbol(fopen);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9749: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13593: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9752: \$? = $ac_status" >&5
+ echo "$as_me:13596: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9755: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13599: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9758: \$? = $ac_status" >&5
+ echo "$as_me:13602: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_weak_symbols=yes
else
@@ -9766,11 +13610,11 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:9769: result: $cf_cv_weak_symbols" >&5
+echo "$as_me:13613: result: $cf_cv_weak_symbols" >&5
echo "${ECHO_T}$cf_cv_weak_symbols" >&6
else
- cf_cv_weak_symbols=no
+ cf_cv_weak_symbols=no
fi
if test $cf_cv_weak_symbols = yes ; then
@@ -9788,60 +13632,60 @@ cat >>confdefs.h <<\EOF
#define USE_PTHREADS 1
EOF
- enable_reentrant=yes
- if test $cf_cv_weak_symbols = yes ; then
- PTHREAD=-lpthread
- fi
+ enable_reentrant=yes
+ if test $cf_cv_weak_symbols = yes ; then
+ PTHREAD=-lpthread
+ fi
fi
# OpenSUSE is installing ncurses6, using reentrant option.
-echo "$as_me:9798: checking for _nc_TABSIZE" >&5
+echo "$as_me:13642: checking for _nc_TABSIZE" >&5
echo $ECHO_N "checking for _nc_TABSIZE... $ECHO_C" >&6
if test "${ac_cv_func__nc_TABSIZE+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 9804 "configure"
+#line 13648 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char _nc_TABSIZE (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define _nc_TABSIZE autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef _nc_TABSIZE
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char _nc_TABSIZE ();
-char (*f) ();
+char _nc_TABSIZE (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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__nc_TABSIZE) || defined (__stub____nc_TABSIZE)
-choke me
-#else
-f = _nc_TABSIZE; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for _nc_TABSIZE
#endif
+ return _nc_TABSIZE ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9835: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13679: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9838: \$? = $ac_status" >&5
+ echo "$as_me:13682: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9841: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13685: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9844: \$? = $ac_status" >&5
+ echo "$as_me:13688: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func__nc_TABSIZE=yes
else
@@ -9851,7 +13695,7 @@ ac_cv_func__nc_TABSIZE=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:9854: result: $ac_cv_func__nc_TABSIZE" >&5
+echo "$as_me:13698: result: $ac_cv_func__nc_TABSIZE" >&5
echo "${ECHO_T}$ac_cv_func__nc_TABSIZE" >&6
if test $ac_cv_func__nc_TABSIZE = yes; then
assume_reentrant=yes
@@ -9863,7 +13707,7 @@ fi
# opaque outside of that, so there is no --enable-opaque option. We can use
# this option without --with-pthreads, but this will be always set for
# pthreads.
-echo "$as_me:9866: checking if you want experimental reentrant code" >&5
+echo "$as_me:13710: checking if you want experimental reentrant code" >&5
echo $ECHO_N "checking if you want experimental reentrant code... $ECHO_C" >&6
# Check whether --enable-reentrant or --disable-reentrant was given.
@@ -9873,7 +13717,7 @@ if test "${enable_reentrant+set}" = set; then
else
with_reentrant=$assume_reentrant
fi;
-echo "$as_me:9876: result: $with_reentrant" >&5
+echo "$as_me:13720: result: $with_reentrant" >&5
echo "${ECHO_T}$with_reentrant" >&6
if test "$with_reentrant" = yes ; then
cf_cv_enable_reentrant=1
@@ -9896,7 +13740,7 @@ fi
### Allow using a different wrap-prefix
if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then
- echo "$as_me:9899: checking for prefix used to wrap public variables" >&5
+ echo "$as_me:13743: checking for prefix used to wrap public variables" >&5
echo $ECHO_N "checking for prefix used to wrap public variables... $ECHO_C" >&6
# Check whether --with-wrap-prefix or --without-wrap-prefix was given.
@@ -9906,7 +13750,7 @@ if test "${with_wrap_prefix+set}" = set; then
else
NCURSES_WRAP_PREFIX=_nc_
fi;
- echo "$as_me:9909: result: $NCURSES_WRAP_PREFIX" >&5
+ echo "$as_me:13753: result: $NCURSES_WRAP_PREFIX" >&5
echo "${ECHO_T}$NCURSES_WRAP_PREFIX" >&6
else
NCURSES_WRAP_PREFIX=_nc_
@@ -9920,45 +13764,45 @@ EOF
### use option --disable-echo to suppress full display compiling commands
-echo "$as_me:9923: checking if you want to see long compiling messages" >&5
+echo "$as_me:13767: checking if you want to see long compiling messages" >&5
echo $ECHO_N "checking if you want to see long compiling messages... $ECHO_C" >&6
# Check whether --enable-echo or --disable-echo was given.
if test "${enable_echo+set}" = set; then
enableval="$enable_echo"
test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
+ if test "$enableval" != "yes" ; then
- ECHO_LT='--silent'
- ECHO_LD='@echo linking $@;'
- RULE_CC='@echo compiling $<'
- SHOW_CC='@echo compiling $@'
- ECHO_CC='@'
+ ECHO_LT='--silent'
+ ECHO_LD='@echo linking $@;'
+ RULE_CC='@echo compiling $<'
+ SHOW_CC='@echo compiling $@'
+ ECHO_CC='@'
- else
+ else
- ECHO_LT=''
- ECHO_LD=''
- RULE_CC=''
- SHOW_CC=''
- ECHO_CC=''
+ ECHO_LT=''
+ ECHO_LD=''
+ RULE_CC=''
+ SHOW_CC=''
+ ECHO_CC=''
- fi
+ fi
else
enableval=yes
- ECHO_LT=''
- ECHO_LD=''
- RULE_CC=''
- SHOW_CC=''
- ECHO_CC=''
+ ECHO_LT=''
+ ECHO_LD=''
+ RULE_CC=''
+ SHOW_CC=''
+ ECHO_CC=''
fi;
-echo "$as_me:9957: result: $enableval" >&5
+echo "$as_me:13801: result: $enableval" >&5
echo "${ECHO_T}$enableval" >&6
### use option --enable-warnings to turn on all gcc warnings
-echo "$as_me:9961: checking if you want to see compiler warnings" >&5
+echo "$as_me:13805: checking if you want to see compiler warnings" >&5
echo $ECHO_N "checking if you want to see compiler warnings... $ECHO_C" >&6
# Check whether --enable-warnings or --disable-warnings was given.
@@ -9966,120 +13810,139 @@ if test "${enable_warnings+set}" = set; then
enableval="$enable_warnings"
with_warnings=$enableval
fi;
-echo "$as_me:9969: result: $with_warnings" >&5
+echo "$as_me:13813: result: $with_warnings" >&5
echo "${ECHO_T}$with_warnings" >&6
if test "x$with_warnings" = "xyes"; then
ADAFLAGS="$ADAFLAGS -gnatg"
-INTEL_COMPILER=no
+if test "x$have_x" = xyes; then
-if test "$GCC" = yes ; then
- case $host_os in
- linux*|gnu*)
- echo "$as_me:9981: checking if this is really Intel C compiler" >&5
-echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6
- cf_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -no-gcc"
- cat >conftest.$ac_ext <<_ACEOF
-#line 9986 "configure"
+cf_save_LIBS_CF_CONST_X_STRING="$LIBS"
+cf_save_CFLAGS_CF_CONST_X_STRING="$CFLAGS"
+cf_save_CPPFLAGS_CF_CONST_X_STRING="$CPPFLAGS"
+LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
+for cf_X_CFLAGS in $X_CFLAGS
+do
+ case "x$cf_X_CFLAGS" in
+ x-[IUD]*)
+ CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
+ ;;
+ *)
+ CFLAGS="$CFLAGS $cf_X_CFLAGS"
+ ;;
+ esac
+done
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 13839 "configure"
#include "confdefs.h"
+#include <stdlib.h>
+#include <X11/Intrinsic.h>
+
int
-main ()
+main (void)
{
-
-#ifdef __INTEL_COMPILER
-#else
-make an error
-#endif
-
+String foo = malloc(1)
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:10003: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13854: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10006: \$? = $ac_status" >&5
+ echo "$as_me:13857: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:10009: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13860: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10012: \$? = $ac_status" >&5
+ echo "$as_me:13863: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- INTEL_COMPILER=yes
-cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
+echo "$as_me:13866: checking for X11/Xt const-feature" >&5
+echo $ECHO_N "checking for X11/Xt const-feature... $ECHO_C" >&6
+if test "${cf_cv_const_x_string+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$cf_save_CFLAGS"
- echo "$as_me:10023: result: $INTEL_COMPILER" >&5
-echo "${ECHO_T}$INTEL_COMPILER" >&6
- ;;
- esac
-fi
-
-CLANG_COMPILER=no
-if test "$GCC" = yes ; then
- echo "$as_me:10032: checking if this is really Clang C compiler" >&5
-echo $ECHO_N "checking if this is really Clang C compiler... $ECHO_C" >&6
- cf_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -Qunused-arguments"
cat >conftest.$ac_ext <<_ACEOF
-#line 10037 "configure"
+#line 13873 "configure"
#include "confdefs.h"
+#define _CONST_X_STRING /* X11R7.8 (perhaps) */
+#undef XTSTRINGDEFINES /* X11R5 and later */
+#include <stdlib.h>
+#include <X11/Intrinsic.h>
+
int
-main ()
+main (void)
{
-
-#ifdef __clang__
-#else
-make an error
-#endif
-
+String foo = malloc(1); *foo = 0
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:10054: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13890: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10057: \$? = $ac_status" >&5
+ echo "$as_me:13893: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:10060: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13896: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10063: \$? = $ac_status" >&5
+ echo "$as_me:13899: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- CLANG_COMPILER=yes
-cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
+
+ cf_cv_const_x_string=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
+
+ cf_cv_const_x_string=yes
+
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$cf_save_CFLAGS"
- echo "$as_me:10074: result: $CLANG_COMPILER" >&5
-echo "${ECHO_T}$CLANG_COMPILER" >&6
+
fi
+echo "$as_me:13914: result: $cf_cv_const_x_string" >&5
+echo "${ECHO_T}$cf_cv_const_x_string" >&6
+
+LIBS="$cf_save_LIBS_CF_CONST_X_STRING"
+CFLAGS="$cf_save_CFLAGS_CF_CONST_X_STRING"
+CPPFLAGS="$cf_save_CPPFLAGS_CF_CONST_X_STRING"
+
+case $cf_cv_const_x_string in
+(no)
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-DXTSTRINGDEFINES"
+
+ ;;
+(*)
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_CONST_X_STRING"
+
+ ;;
+esac
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ fi
cat > conftest.$ac_ext <<EOF
-#line 10079 "${as_me:-configure}"
+#line 13943 "${as_me:-configure}"
int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
EOF
-
if test "$INTEL_COMPILER" = yes
then
# The "-wdXXX" options suppress warnings:
@@ -10093,7 +13956,7 @@ then
# remark #981: operands are evaluated in unspecified order
# warning #279: controlling expression is constant
- { echo "$as_me:10096: checking for $CC warning options..." >&5
+ { echo "$as_me:13959: checking for $CC warning options..." >&5
echo "$as_me: checking for $CC warning options..." >&6;}
cf_save_CFLAGS="$CFLAGS"
EXTRA_CFLAGS="-Wall"
@@ -10109,21 +13972,20 @@ echo "$as_me: checking for $CC warning options..." >&6;}
wd981
do
CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
- if { (eval echo "$as_me:10112: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:13975: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10115: \$? = $ac_status" >&5
+ echo "$as_me:13978: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:10117: result: ... -$cf_opt" >&5
+ test -n "$verbose" && echo "$as_me:13980: result: ... -$cf_opt" >&5
echo "${ECHO_T}... -$cf_opt" >&6
EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
fi
done
CFLAGS="$cf_save_CFLAGS"
-
-elif test "$GCC" = yes
+elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
then
- { echo "$as_me:10126: checking for $CC warning options..." >&5
+ { echo "$as_me:13988: checking for $CC warning options..." >&5
echo "$as_me: checking for $CC warning options..." >&6;}
cf_save_CFLAGS="$CFLAGS"
EXTRA_CFLAGS=
@@ -10144,36 +14006,33 @@ echo "$as_me: checking for $CC warning options..." >&6;}
Wpointer-arith \
Wshadow \
Wstrict-prototypes \
- Wundef $cf_gcc_warnings $cf_warn_CONST Wno-unknown-pragmas Wswitch-enum
+ Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST Wno-unknown-pragmas Wswitch-enum
do
CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
- if { (eval echo "$as_me:10150: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:14012: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10153: \$? = $ac_status" >&5
+ echo "$as_me:14015: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:10155: result: ... -$cf_opt" >&5
+ test -n "$verbose" && echo "$as_me:14017: result: ... -$cf_opt" >&5
echo "${ECHO_T}... -$cf_opt" >&6
- case $cf_opt in #(vi
- Wcast-qual) #(vi
- CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES"
- ;;
- Winline) #(vi
+ case $cf_opt in
+ (Winline)
case $GCC_VERSION in
- [34].*)
+ ([34].*)
test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6
-echo "${as_me:-configure}:10166: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
+echo "${as_me:-configure}:14025: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
continue;;
esac
;;
- Wpointer-arith) #(vi
+ (Wpointer-arith)
case $GCC_VERSION in
- [12].*)
+ ([12].*)
test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6
-echo "${as_me:-configure}:10176: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
+echo "${as_me:-configure}:14035: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
continue;;
esac
@@ -10206,10 +14065,10 @@ cat > conftest.i <<EOF
EOF
if test "$GCC" = yes
then
- { echo "$as_me:10209: checking for $CC __attribute__ directives..." >&5
+ { echo "$as_me:14068: checking for $CC __attribute__ directives..." >&5
echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
cat > conftest.$ac_ext <<EOF
-#line 10212 "${as_me:-configure}"
+#line 14071 "${as_me:-configure}"
#include "confdefs.h"
#include "conftest.h"
#include "conftest.i"
@@ -10238,43 +14097,43 @@ cf_ATTRIBUTE=`echo "$cf_attribute" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFG
cf_directive="__attribute__(($cf_attribute))"
echo "checking for $CC $cf_directive" 1>&5
- case $cf_attribute in #(vi
- printf) #(vi
+ case $cf_attribute in
+ (printf)
cf_printf_attribute=yes
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE 1
EOF
;;
- scanf) #(vi
+ (scanf)
cf_scanf_attribute=yes
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE 1
EOF
;;
- *) #(vi
+ (*)
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE $cf_directive
EOF
;;
esac
- if { (eval echo "$as_me:10261: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:14120: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10264: \$? = $ac_status" >&5
+ echo "$as_me:14123: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:10266: result: ... $cf_attribute" >&5
+ test -n "$verbose" && echo "$as_me:14125: result: ... $cf_attribute" >&5
echo "${ECHO_T}... $cf_attribute" >&6
cat conftest.h >>confdefs.h
- case $cf_attribute in #(vi
- noreturn) #(vi
+ case $cf_attribute in
+ (noreturn)
cat >>confdefs.h <<EOF
#define GCC_NORETURN $cf_directive
EOF
;;
- printf) #(vi
+ (printf)
cf_value='/* nothing */'
if test "$cf_printf_attribute" != no ; then
cf_value='__attribute__((format(printf,fmt,var)))'
@@ -10290,7 +14149,7 @@ cat >>confdefs.h <<EOF
EOF
;;
- scanf) #(vi
+ (scanf)
cf_value='/* nothing */'
if test "$cf_scanf_attribute" != no ; then
cf_value='__attribute__((format(scanf,fmt,var)))'
@@ -10306,7 +14165,7 @@ cat >>confdefs.h <<EOF
EOF
;;
- unused) #(vi
+ (unused)
cat >>confdefs.h <<EOF
#define GCC_UNUSED $cf_directive
@@ -10323,7 +14182,7 @@ rm -rf conftest*
fi
### use option --enable-assertions to turn on generation of assertion code
-echo "$as_me:10326: checking if you want to enable runtime assertions" >&5
+echo "$as_me:14185: checking if you want to enable runtime assertions" >&5
echo $ECHO_N "checking if you want to enable runtime assertions... $ECHO_C" >&6
# Check whether --enable-assertions or --disable-assertions was given.
@@ -10333,7 +14192,7 @@ if test "${enable_assertions+set}" = set; then
else
with_assertions=no
fi;
-echo "$as_me:10336: result: $with_assertions" >&5
+echo "$as_me:14195: result: $with_assertions" >&5
echo "${ECHO_T}$with_assertions" >&6
if test -n "$GCC"
then
@@ -10381,12 +14240,12 @@ fi;
# extended to all models of the ncurses library:
cf_all_traces=no
case "$CFLAGS $CPPFLAGS" in
-*-DTRACE*)
+(*-DTRACE*)
cf_all_traces=yes
;;
esac
-echo "$as_me:10389: checking whether to add trace feature to all models" >&5
+echo "$as_me:14248: checking whether to add trace feature to all models" >&5
echo $ECHO_N "checking whether to add trace feature to all models... $ECHO_C" >&6
# Check whether --with-trace or --without-trace was given.
@@ -10396,7 +14255,7 @@ if test "${with_trace+set}" = set; then
else
cf_with_trace=$cf_all_traces
fi;
-echo "$as_me:10399: result: $cf_with_trace" >&5
+echo "$as_me:14258: result: $cf_with_trace" >&5
echo "${ECHO_T}$cf_with_trace" >&6
if test "$cf_with_trace" = yes ; then
@@ -10410,32 +14269,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in -DTRACE
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -10444,21 +14309,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -10467,75 +14340,101 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
else
ADA_TRACE=FALSE
fi
+echo "$as_me:14366: checking if we want to use GNAT projects" >&5
+echo $ECHO_N "checking if we want to use GNAT projects... $ECHO_C" >&6
+
+# Check whether --enable-gnat-projects or --disable-gnat-projects was given.
+if test "${enable_gnat_projects+set}" = set; then
+ enableval="$enable_gnat_projects"
+ test "$enableval" != no && enableval=yes
+ if test "$enableval" != "yes" ; then
+ enable_gnat_projects=no
+ else
+ enable_gnat_projects=yes
+ fi
+else
+ enableval=yes
+ enable_gnat_projects=yes
+
+fi;
+echo "$as_me:14383: result: $enable_gnat_projects" >&5
+echo "${ECHO_T}$enable_gnat_projects" >&6
+
### Checks for libraries.
-case $cf_cv_system_name in #(vi
-*mingw32*) #(vi
+case $cf_cv_system_name in
+(*mingw32*)
;;
-*)
-echo "$as_me:10492: checking for gettimeofday" >&5
+(*)
+echo "$as_me:14391: checking for gettimeofday" >&5
echo $ECHO_N "checking for gettimeofday... $ECHO_C" >&6
if test "${ac_cv_func_gettimeofday+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10498 "configure"
+#line 14397 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char gettimeofday (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define gettimeofday autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef gettimeofday
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char gettimeofday ();
-char (*f) ();
+char gettimeofday (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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_gettimeofday) || defined (__stub___gettimeofday)
-choke me
-#else
-f = gettimeofday; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for gettimeofday
#endif
+ return gettimeofday ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10529: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14428: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:10532: \$? = $ac_status" >&5
+ echo "$as_me:14431: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10535: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14434: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10538: \$? = $ac_status" >&5
+ echo "$as_me:14437: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_gettimeofday=yes
else
@@ -10545,7 +14444,7 @@ ac_cv_func_gettimeofday=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:10548: result: $ac_cv_func_gettimeofday" >&5
+echo "$as_me:14447: result: $ac_cv_func_gettimeofday" >&5
echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6
if test $ac_cv_func_gettimeofday = yes; then
cat >>confdefs.h <<\EOF
@@ -10554,7 +14453,7 @@ EOF
else
-echo "$as_me:10557: checking for gettimeofday in -lbsd" >&5
+echo "$as_me:14456: checking for gettimeofday in -lbsd" >&5
echo $ECHO_N "checking for gettimeofday in -lbsd... $ECHO_C" >&6
if test "${ac_cv_lib_bsd_gettimeofday+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10562,7 +14461,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lbsd $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 10565 "configure"
+#line 14464 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -10573,7 +14472,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char gettimeofday ();
int
-main ()
+main (void)
{
gettimeofday ();
;
@@ -10581,16 +14480,16 @@ gettimeofday ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10584: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14483: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:10587: \$? = $ac_status" >&5
+ echo "$as_me:14486: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10590: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14489: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10593: \$? = $ac_status" >&5
+ echo "$as_me:14492: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_bsd_gettimeofday=yes
else
@@ -10601,7 +14500,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:10604: result: $ac_cv_lib_bsd_gettimeofday" >&5
+echo "$as_me:14503: result: $ac_cv_lib_bsd_gettimeofday" >&5
echo "${ECHO_T}$ac_cv_lib_bsd_gettimeofday" >&6
if test $ac_cv_lib_bsd_gettimeofday = yes; then
@@ -10617,13 +14516,13 @@ fi
esac
### Checks for header files.
-echo "$as_me:10620: checking for ANSI C header files" >&5
+echo "$as_me:14519: checking for ANSI C header files" >&5
echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
if test "${ac_cv_header_stdc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10626 "configure"
+#line 14525 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -10631,13 +14530,13 @@ else
#include <float.h>
_ACEOF
-if { (eval echo "$as_me:10634: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:14533: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:10640: \$? = $ac_status" >&5
+ echo "$as_me:14539: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -10659,7 +14558,7 @@ rm -f conftest.err conftest.$ac_ext
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat >conftest.$ac_ext <<_ACEOF
-#line 10662 "configure"
+#line 14561 "configure"
#include "confdefs.h"
#include <string.h>
@@ -10677,7 +14576,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 <<_ACEOF
-#line 10680 "configure"
+#line 14579 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -10698,7 +14597,7 @@ if test $ac_cv_header_stdc = yes; then
:
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10701 "configure"
+#line 14600 "configure"
#include "confdefs.h"
#include <ctype.h>
#if ((' ' & 0x0FF) == 0x020)
@@ -10713,7 +14612,7 @@ else
#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
int
-main ()
+main (void)
{
int i;
for (i = 0; i < 256; i++)
@@ -10724,15 +14623,15 @@ main ()
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:10727: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14626: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:10730: \$? = $ac_status" >&5
+ echo "$as_me:14629: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:10732: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14631: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10735: \$? = $ac_status" >&5
+ echo "$as_me:14634: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -10745,7 +14644,429 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
fi
-echo "$as_me:10748: result: $ac_cv_header_stdc" >&5
+echo "$as_me:14647: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\EOF
+#define STDC_HEADERS 1
+EOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:14663: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14669 "configure"
+#include "confdefs.h"
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:14675: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:14678: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:14681: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:14684: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:14694: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+echo "$as_me:14704: checking for signed char" >&5
+echo $ECHO_N "checking for signed char... $ECHO_C" >&6
+if test "${ac_cv_type_signed_char+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14710 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main (void)
+{
+if ((signed char *) 0)
+ return 0;
+if (sizeof (signed char))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:14725: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:14728: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:14731: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:14734: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_signed_char=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_signed_char=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:14744: result: $ac_cv_type_signed_char" >&5
+echo "${ECHO_T}$ac_cv_type_signed_char" >&6
+
+echo "$as_me:14747: checking size of signed char" >&5
+echo $ECHO_N "checking size of signed char... $ECHO_C" >&6
+if test "${ac_cv_sizeof_signed_char+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_signed_char" = yes; then
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+#line 14756 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main (void)
+{
+int _array_ [1 - 2 * !((sizeof (signed char)) >= 0)]
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:14768: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:14771: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:14774: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:14777: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14782 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main (void)
+{
+int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)]
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:14794: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:14797: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:14800: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:14803: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14819 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main (void)
+{
+int _array_ [1 - 2 * !((sizeof (signed char)) >= $ac_mid)]
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:14831: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:14834: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:14837: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:14840: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ done
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14856 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main (void)
+{
+int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)]
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:14868: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:14871: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:14874: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:14877: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_lo=`expr $ac_mid + 1`
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+ac_cv_sizeof_signed_char=$ac_lo
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:14890: error: cannot run test program while cross compiling" >&5
+echo "$as_me: error: cannot run test program while cross compiling" >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14895 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main (void)
+{
+FILE *f = fopen ("conftest.val", "w");
+if (!f)
+ $ac_main_return (1);
+fprintf (f, "%d", (sizeof (signed char)));
+fclose (f);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:14911: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:14914: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:14916: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:14919: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_signed_char=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_signed_char=0
+fi
+fi
+echo "$as_me:14935: result: $ac_cv_sizeof_signed_char" >&5
+echo "${ECHO_T}$ac_cv_sizeof_signed_char" >&6
+cat >>confdefs.h <<EOF
+#define SIZEOF_SIGNED_CHAR $ac_cv_sizeof_signed_char
+EOF
+
+echo "$as_me:14941: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14947 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+_ACEOF
+if { (eval echo "$as_me:14955: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:14961: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14983 "configure"
+#include "confdefs.h"
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -rf conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+#line 15001 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -rf conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 15022 "configure"
+#include "confdefs.h"
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main (void)
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ $ac_main_return(2);
+ $ac_main_return (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:15048: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:15051: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:15053: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:15056: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_header_stdc=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:15069: result: $ac_cv_header_stdc" >&5
echo "${ECHO_T}$ac_cv_header_stdc" >&6
if test $ac_cv_header_stdc = yes; then
@@ -10758,19 +15079,19 @@ fi
ac_header_dirent=no
for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-echo "$as_me:10761: checking for $ac_hdr that defines DIR" >&5
+echo "$as_me:15082: checking for $ac_hdr that defines DIR" >&5
echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10767 "configure"
+#line 15088 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
int
-main ()
+main (void)
{
if ((DIR *) 0)
return 0;
@@ -10779,16 +15100,16 @@ return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:10782: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15103: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10785: \$? = $ac_status" >&5
+ echo "$as_me:15106: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:10788: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15109: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10791: \$? = $ac_status" >&5
+ echo "$as_me:15112: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_Header=yes"
else
@@ -10798,7 +15119,7 @@ eval "$as_ac_Header=no"
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:10801: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:15122: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -10811,7 +15132,7 @@ fi
done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
- echo "$as_me:10814: checking for opendir in -ldir" >&5
+ echo "$as_me:15135: checking for opendir in -ldir" >&5
echo $ECHO_N "checking for opendir in -ldir... $ECHO_C" >&6
if test "${ac_cv_lib_dir_opendir+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10819,7 +15140,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldir $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 10822 "configure"
+#line 15143 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -10830,7 +15151,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char opendir ();
int
-main ()
+main (void)
{
opendir ();
;
@@ -10838,16 +15159,16 @@ opendir ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10841: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15162: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:10844: \$? = $ac_status" >&5
+ echo "$as_me:15165: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10847: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15168: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10850: \$? = $ac_status" >&5
+ echo "$as_me:15171: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_dir_opendir=yes
else
@@ -10858,14 +15179,14 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:10861: result: $ac_cv_lib_dir_opendir" >&5
+echo "$as_me:15182: result: $ac_cv_lib_dir_opendir" >&5
echo "${ECHO_T}$ac_cv_lib_dir_opendir" >&6
if test $ac_cv_lib_dir_opendir = yes; then
LIBS="$LIBS -ldir"
fi
else
- echo "$as_me:10868: checking for opendir in -lx" >&5
+ echo "$as_me:15189: checking for opendir in -lx" >&5
echo $ECHO_N "checking for opendir in -lx... $ECHO_C" >&6
if test "${ac_cv_lib_x_opendir+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10873,7 +15194,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lx $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 10876 "configure"
+#line 15197 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -10884,7 +15205,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char opendir ();
int
-main ()
+main (void)
{
opendir ();
;
@@ -10892,16 +15213,16 @@ opendir ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10895: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15216: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:10898: \$? = $ac_status" >&5
+ echo "$as_me:15219: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10901: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15222: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10904: \$? = $ac_status" >&5
+ echo "$as_me:15225: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_x_opendir=yes
else
@@ -10912,7 +15233,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:10915: result: $ac_cv_lib_x_opendir" >&5
+echo "$as_me:15236: result: $ac_cv_lib_x_opendir" >&5
echo "${ECHO_T}$ac_cv_lib_x_opendir" >&6
if test $ac_cv_lib_x_opendir = yes; then
LIBS="$LIBS -lx"
@@ -10920,20 +15241,20 @@ fi
fi
-echo "$as_me:10923: checking whether time.h and sys/time.h may both be included" >&5
+echo "$as_me:15244: checking whether time.h and sys/time.h may both be included" >&5
echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
if test "${ac_cv_header_time+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10929 "configure"
+#line 15250 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
#include <time.h>
int
-main ()
+main (void)
{
if ((struct tm *) 0)
return 0;
@@ -10942,16 +15263,16 @@ return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:10945: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15266: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10948: \$? = $ac_status" >&5
+ echo "$as_me:15269: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:10951: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15272: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10954: \$? = $ac_status" >&5
+ echo "$as_me:15275: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_header_time=yes
else
@@ -10961,7 +15282,7 @@ ac_cv_header_time=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:10964: result: $ac_cv_header_time" >&5
+echo "$as_me:15285: result: $ac_cv_header_time" >&5
echo "${ECHO_T}$ac_cv_header_time" >&6
if test $ac_cv_header_time = yes; then
@@ -10979,17 +15300,17 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
-echo "$as_me:10982: checking for an ANSI C-conforming const" >&5
+echo "$as_me:15303: checking for an ANSI C-conforming const" >&5
echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
if test "${ac_cv_c_const+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10988 "configure"
+#line 15309 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
/* FIXME: Include the comments suggested by Paul. */
#ifndef __cplusplus
@@ -11043,16 +15364,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:11046: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15367: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:11049: \$? = $ac_status" >&5
+ echo "$as_me:15370: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:11052: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15373: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11055: \$? = $ac_status" >&5
+ echo "$as_me:15376: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_c_const=yes
else
@@ -11062,7 +15383,7 @@ ac_cv_c_const=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:11065: result: $ac_cv_c_const" >&5
+echo "$as_me:15386: result: $ac_cv_c_const" >&5
echo "${ECHO_T}$ac_cv_c_const" >&6
if test $ac_cv_c_const = no; then
@@ -11074,7 +15395,7 @@ fi
### Checks for external-data
-echo "$as_me:11077: checking if data-only library module links" >&5
+echo "$as_me:15398: checking if data-only library module links" >&5
echo $ECHO_N "checking if data-only library module links... $ECHO_C" >&6
if test "${cf_cv_link_dataonly+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11082,21 +15403,21 @@ else
rm -f conftest.a
cat >conftest.$ac_ext <<EOF
-#line 11085 "configure"
+#line 15406 "configure"
int testdata[3] = { 123, 456, 789 };
EOF
- if { (eval echo "$as_me:11088: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:15409: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:11091: \$? = $ac_status" >&5
+ echo "$as_me:15412: \$? = $ac_status" >&5
(exit $ac_status); } ; then
mv conftest.o data.o && \
( $AR $ARFLAGS conftest.a data.o ) 2>&5 1>/dev/null
fi
rm -f conftest.$ac_ext data.o
cat >conftest.$ac_ext <<EOF
-#line 11098 "configure"
-int testfunc()
+#line 15419 "configure"
+int testfunc(void)
{
#if defined(NeXT)
${cf_cv_main_return:-return}(1); /* I'm told this linker is broken */
@@ -11108,10 +15429,10 @@ int testfunc()
#endif
}
EOF
- if { (eval echo "$as_me:11111: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:15432: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:11114: \$? = $ac_status" >&5
+ echo "$as_me:15435: \$? = $ac_status" >&5
(exit $ac_status); }; then
mv conftest.o func.o && \
( $AR $ARFLAGS conftest.a func.o ) 2>&5 1>/dev/null
@@ -11124,10 +15445,10 @@ EOF
cf_cv_link_dataonly=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 11127 "configure"
+#line 15448 "configure"
#include "confdefs.h"
- int main()
+ int main(void)
{
extern int testfunc();
${cf_cv_main_return:-return} (!testfunc());
@@ -11135,15 +15456,15 @@ else
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:11138: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15459: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11141: \$? = $ac_status" >&5
+ echo "$as_me:15462: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:11143: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15464: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11146: \$? = $ac_status" >&5
+ echo "$as_me:15467: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_link_dataonly=yes
else
@@ -11158,7 +15479,7 @@ fi
fi
-echo "$as_me:11161: result: $cf_cv_link_dataonly" >&5
+echo "$as_me:15482: result: $cf_cv_link_dataonly" >&5
echo "${ECHO_T}$cf_cv_link_dataonly" >&6
if test "$cf_cv_link_dataonly" = no ; then
@@ -11172,7 +15493,57 @@ fi
### Checks for library functions.
-echo "$as_me:11175: checking for working mkstemp" >&5
+for ac_header in \
+unistd.h \
+
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:15501: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 15507 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:15511: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:15517: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:15536: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+echo "$as_me:15546: checking for working mkstemp" >&5
echo $ECHO_N "checking for working mkstemp... $ECHO_C" >&6
if test "${cf_cv_func_mkstemp+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11183,15 +15554,18 @@ if test "$cross_compiling" = yes; then
cf_cv_func_mkstemp=maybe
else
cat >conftest.$ac_ext <<_ACEOF
-#line 11186 "configure"
+#line 15557 "configure"
#include "confdefs.h"
#include <sys/types.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
-int main()
+int main(void)
{
char *tmpl = "conftestXXXXXX";
char name[2][80];
@@ -11221,15 +15595,15 @@ int main()
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:11224: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15598: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11227: \$? = $ac_status" >&5
+ echo "$as_me:15601: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:11229: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15603: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11232: \$? = $ac_status" >&5
+ echo "$as_me:15606: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_func_mkstemp=yes
@@ -11244,56 +15618,56 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
-echo "$as_me:11247: result: $cf_cv_func_mkstemp" >&5
+echo "$as_me:15621: result: $cf_cv_func_mkstemp" >&5
echo "${ECHO_T}$cf_cv_func_mkstemp" >&6
if test "x$cf_cv_func_mkstemp" = xmaybe ; then
- echo "$as_me:11250: checking for mkstemp" >&5
+ echo "$as_me:15624: checking for mkstemp" >&5
echo $ECHO_N "checking for mkstemp... $ECHO_C" >&6
if test "${ac_cv_func_mkstemp+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 11256 "configure"
+#line 15630 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char mkstemp (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define mkstemp autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef mkstemp
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char mkstemp ();
-char (*f) ();
+char mkstemp (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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_mkstemp) || defined (__stub___mkstemp)
-choke me
-#else
-f = mkstemp; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for mkstemp
#endif
+ return mkstemp ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11287: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15661: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11290: \$? = $ac_status" >&5
+ echo "$as_me:15664: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11293: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15667: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11296: \$? = $ac_status" >&5
+ echo "$as_me:15670: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_mkstemp=yes
else
@@ -11303,7 +15677,7 @@ ac_cv_func_mkstemp=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:11306: result: $ac_cv_func_mkstemp" >&5
+echo "$as_me:15680: result: $ac_cv_func_mkstemp" >&5
echo "${ECHO_T}$ac_cv_func_mkstemp" >&6
fi
@@ -11323,67 +15697,161 @@ fi
cf_with_ada=yes
if test "$cf_with_ada" != "no" ; then
-cf_ada_make=gnatmake
-# Extract the first word of "$cf_ada_make", so it can be a program name with args.
-set dummy $cf_ada_make; ac_word=$2
-echo "$as_me:11329: checking for $ac_word" >&5
+for cf_prog_gnat in gnat gnatmake gprconfig gprbuild
+do
+
+cf_upper_prog_gnat=`echo "${cf_prog_gnat}" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+
+ unset ac_cv_path_cf_TEMP_gnat
+ unset cf_TEMP_gnat
+ # Extract the first word of "$cf_prog_gnat", so it can be a program name with args.
+set dummy $cf_prog_gnat; ac_word=$2
+echo "$as_me:15709: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_gnat_exists+set}" = set; then
+if test "${ac_cv_path_cf_TEMP_gnat+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test -n "$gnat_exists"; then
- ac_cv_prog_gnat_exists="$gnat_exists" # Let the user override the test.
-else
+ case $cf_TEMP_gnat in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_cf_TEMP_gnat="$cf_TEMP_gnat" # Let the user override the test with a path.
+ ;;
+ *)
ac_save_IFS=$IFS; IFS=$ac_path_separator
ac_dummy="$PATH"
for ac_dir in $ac_dummy; do
IFS=$ac_save_IFS
test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_gnat_exists="yes"
-echo "$as_me:11344: found $ac_dir/$ac_word" >&5
-break
+ if $as_executable_p "$ac_dir/$ac_word"; then
+ ac_cv_path_cf_TEMP_gnat="$ac_dir/$ac_word"
+ echo "$as_me:15726: found $ac_dir/$ac_word" >&5
+ break
+fi
done
- test -z "$ac_cv_prog_gnat_exists" && ac_cv_prog_gnat_exists="no"
-fi
+ test -z "$ac_cv_path_cf_TEMP_gnat" && ac_cv_path_cf_TEMP_gnat="no"
+ ;;
+esac
fi
-gnat_exists=$ac_cv_prog_gnat_exists
-if test -n "$gnat_exists"; then
- echo "$as_me:11353: result: $gnat_exists" >&5
-echo "${ECHO_T}$gnat_exists" >&6
+cf_TEMP_gnat=$ac_cv_path_cf_TEMP_gnat
+
+if test -n "$cf_TEMP_gnat"; then
+ echo "$as_me:15738: result: $cf_TEMP_gnat" >&5
+echo "${ECHO_T}$cf_TEMP_gnat" >&6
else
- echo "$as_me:11356: result: no" >&5
+ echo "$as_me:15741: result: no" >&5
echo "${ECHO_T}no" >&6
fi
-if test "$ac_cv_prog_gnat_exists" = no; then
- cf_ada_make=
- cf_cv_prog_gnat_correct=no
+ eval cf_cv_PATH_$cf_upper_prog_gnat=$ac_cv_path_cf_TEMP_gnat
+
+ if test "x$cf_TEMP_gnat" != xno; then
+ unset cf_cv_gnat_version
+ unset cf_TEMP_gnat
+
+echo "$as_me:15751: checking for $cf_prog_gnat version" >&5
+echo $ECHO_N "checking for $cf_prog_gnat version... $ECHO_C" >&6
+if test "${cf_cv_gnat_version+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
-echo "$as_me:11365: checking for gnat version" >&5
+cf_cv_gnat_version=`$cf_prog_gnat --version 2>&1 | \
+ grep '[0-9].[0-9][0-9]*' |\
+ sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'`
+
+fi
+echo "$as_me:15762: result: $cf_cv_gnat_version" >&5
+echo "${ECHO_T}$cf_cv_gnat_version" >&6
+test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no
+eval cf_TEMP_gnat=$cf_cv_gnat_version; unset cf_cv_gnat_version
+
+ fi
+ eval cf_cv_VERSION_$cf_upper_prog_gnat=$cf_TEMP_gnat
+
+ unset cf_TEMP_gnat
+ unset cf_cv_gnat_version
+ unset ac_cv_path_cf_TEMP_gnat
+done
+
+if test "x$cf_cv_VERSION_GNATMAKE" = "xno"; then
+ cf_ada_make=
+ cf_cv_prog_gnat_correct=no
+else
+ cf_ada_make=gnatmake
+ if test "x$cf_cv_VERSION_GPRCONFIG" = "xno"; then
+ # gprconfig is newer than gnatmake; we can continue...
+ cf_ada_config="##"
+ else
+ rm -rf conftest* *~conftest*
+ if mkdir conftest.src
+ then
+ cf_ada_config=""
+ cd conftest.src
+ for cf_gprconfig in Ada C
+ do
+ echo "$as_me:15791: checking for gprconfig name for $cf_gprconfig" >&5
+echo $ECHO_N "checking for gprconfig name for $cf_gprconfig... $ECHO_C" >&6
+ if test $cf_gprconfig = C
+ then
+ for cf_gprconfig_param in \
+ $cf_gprconfig,,,,GNATGCC \
+ $cf_gprconfig,,,,GCC \
+ $cf_gprconfig
+ do
+ cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&5 | ${AWK:-awk} '/^\*/{print $3;}' | head -n 1`
+ test -n "$cf_gprconfig_value" && break
+ done
+ else
+ cf_gprconfig_param=$cf_gprconfig
+ cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&5 | ${AWK:-awk} '/^\*/{print $3;}' | head -n 1`
+ fi
+ if test -n "$cf_gprconfig_value"
+ then
+ eval cf_ada_config_$cf_gprconfig=$cf_gprconfig_value
+ echo "$as_me:15810: result: $cf_gprconfig_value" >&5
+echo "${ECHO_T}$cf_gprconfig_value" >&6
+ else
+ echo "$as_me:15813: result: missing" >&5
+echo "${ECHO_T}missing" >&6
+ cf_ada_config="#"
+ break
+ fi
+ done
+ cd ..
+ rm -rf conftest* *~conftest*
+ fi
+ fi
+ if test "x$cf_ada_config" != "x#"
+ then
+
+echo "$as_me:15826: checking for gnat version" >&5
echo $ECHO_N "checking for gnat version... $ECHO_C" >&6
-cf_gnat_version=`${cf_ada_make:-gnatmake} -v 2>&1 | \
+if test "${cf_cv_gnat_version+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cf_cv_gnat_version=`${cf_ada_make:-gnatmake} --version 2>&1 | \
grep '[0-9].[0-9][0-9]*' |\
- sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'`
-echo "$as_me:11370: result: $cf_gnat_version" >&5
-echo "${ECHO_T}$cf_gnat_version" >&6
+ sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'`
+
+fi
+echo "$as_me:15837: result: $cf_cv_gnat_version" >&5
+echo "${ECHO_T}$cf_cv_gnat_version" >&6
+test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no
-case $cf_gnat_version in #(vi
-3.1[1-9]*|3.[2-9]*|[4-9].*|20[0-9][0-9]) #(vi
+case $cf_cv_gnat_version in
+(3.1[1-9]*|3.[2-9]*|[4-9].*|20[0-9][0-9])
cf_cv_prog_gnat_correct=yes
;;
-*)
- { echo "$as_me:11378: WARNING: Unsupported GNAT version $cf_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&5
-echo "$as_me: WARNING: Unsupported GNAT version $cf_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&2;}
+(*)
+ { echo "$as_me:15846: WARNING: Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&5
+echo "$as_me: WARNING: Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&2;}
cf_cv_prog_gnat_correct=no
;;
esac
- # Extract the first word of "m4", so it can be a program name with args.
+ # Extract the first word of "m4", so it can be a program name with args.
set dummy m4; ac_word=$2
-echo "$as_me:11386: checking for $ac_word" >&5
+echo "$as_me:15854: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_M4_exists+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11398,7 +15866,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_M4_exists="yes"
-echo "$as_me:11401: found $ac_dir/$ac_word" >&5
+echo "$as_me:15869: found $ac_dir/$ac_word" >&5
break
done
@@ -11407,19 +15875,20 @@ fi
fi
M4_exists=$ac_cv_prog_M4_exists
if test -n "$M4_exists"; then
- echo "$as_me:11410: result: $M4_exists" >&5
+ echo "$as_me:15878: result: $M4_exists" >&5
echo "${ECHO_T}$M4_exists" >&6
else
- echo "$as_me:11413: result: no" >&5
+ echo "$as_me:15881: result: no" >&5
echo "${ECHO_T}no" >&6
fi
- if test "$ac_cv_prog_M4_exists" = no; then
- cf_cv_prog_gnat_correct=no
- echo Ada95 binding required program m4 not found. Ada95 binding disabled.
- fi
- if test "$cf_cv_prog_gnat_correct" = yes; then
- echo "$as_me:11422: checking if GNAT works" >&5
+ if test "$ac_cv_prog_M4_exists" = no; then
+ cf_cv_prog_gnat_correct=no
+ { echo "$as_me:15887: WARNING: Ada95 binding required program m4 not found. Ada95 binding disabled" >&5
+echo "$as_me: WARNING: Ada95 binding required program m4 not found. Ada95 binding disabled" >&2;}
+ fi
+ if test "$cf_cv_prog_gnat_correct" = yes; then
+ echo "$as_me:15891: checking if GNAT works" >&5
echo $ECHO_N "checking if GNAT works... $ECHO_C" >&6
rm -rf conftest* *~conftest*
@@ -11447,44 +15916,61 @@ else
fi
rm -rf conftest* *~conftest*
- echo "$as_me:11450: result: $cf_cv_prog_gnat_correct" >&5
+ echo "$as_me:15919: result: $cf_cv_prog_gnat_correct" >&5
echo "${ECHO_T}$cf_cv_prog_gnat_correct" >&6
- fi
+ fi
+ else
+ cf_cv_prog_gnat_correct=no
+ fi
fi
if test "$cf_cv_prog_gnat_correct" = yes; then
- echo "$as_me:11457: checking optimization options for ADAFLAGS" >&5
+ echo "$as_me:15929: checking optimization options for ADAFLAGS" >&5
echo $ECHO_N "checking optimization options for ADAFLAGS... $ECHO_C" >&6
case "$CFLAGS" in
- *-g*)
+ (*-g*)
ADAFLAGS="$ADAFLAGS -g"
;;
esac
case "$CFLAGS" in
- *-O*)
+ (*-O*)
cf_O_flag=`echo "$CFLAGS" |sed -e 's/^.*-O/-O/' -e 's/[ ].*//'`
ADAFLAGS="$ADAFLAGS $cf_O_flag"
;;
esac
- echo "$as_me:11474: result: $ADAFLAGS" >&5
+ echo "$as_me:15946: result: $ADAFLAGS" >&5
echo "${ECHO_T}$ADAFLAGS" >&6
-echo "$as_me:11477: checking if GNAT supports generics" >&5
+echo "$as_me:15949: checking if GNATPREP supports -T option" >&5
+echo $ECHO_N "checking if GNATPREP supports -T option... $ECHO_C" >&6
+if test "${cf_cv_gnatprep_opt_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cf_cv_gnatprep_opt_t=no
+gnatprep -T 2>/dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes
+
+fi
+echo "$as_me:15959: result: $cf_cv_gnatprep_opt_t" >&5
+echo "${ECHO_T}$cf_cv_gnatprep_opt_t" >&6
+test "$cf_cv_gnatprep_opt_t" = yes && GNATPREP_OPTS="-T $GNATPREP_OPTS"
+
+echo "$as_me:15963: checking if GNAT supports generics" >&5
echo $ECHO_N "checking if GNAT supports generics... $ECHO_C" >&6
-case $cf_gnat_version in #(vi
-3.[1-9]*|[4-9].*) #(vi
+case $cf_cv_gnat_version in
+(3.[1-9]*|[4-9].*)
cf_gnat_generics=yes
;;
-*)
+(*)
cf_gnat_generics=no
;;
esac
-echo "$as_me:11487: result: $cf_gnat_generics" >&5
+echo "$as_me:15973: result: $cf_gnat_generics" >&5
echo "${ECHO_T}$cf_gnat_generics" >&6
if test "$cf_gnat_generics" = yes
@@ -11496,7 +15982,7 @@ else
cf_generic_objects=
fi
-echo "$as_me:11499: checking if GNAT supports SIGINT" >&5
+echo "$as_me:15985: checking if GNAT supports SIGINT" >&5
echo $ECHO_N "checking if GNAT supports SIGINT... $ECHO_C" >&6
if test "${cf_cv_gnat_sigint+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11544,7 +16030,7 @@ fi
rm -rf conftest* *~conftest*
fi
-echo "$as_me:11547: result: $cf_cv_gnat_sigint" >&5
+echo "$as_me:16033: result: $cf_cv_gnat_sigint" >&5
echo "${ECHO_T}$cf_cv_gnat_sigint" >&6
if test $cf_cv_gnat_sigint = yes ; then
@@ -11553,64 +16039,26 @@ else
USE_GNAT_SIGINT="#"
fi
-echo "$as_me:11556: checking if GNAT pragma Unreferenced works" >&5
-echo $ECHO_N "checking if GNAT pragma Unreferenced works... $ECHO_C" >&6
-if test "${cf_cv_pragma_unreferenced+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-rm -rf conftest* *~conftest*
-cat >>conftest.ads <<CF_EOF
-procedure conftest;
-CF_EOF
-cat >>conftest.adb <<CF_EOF
-with Text_IO;
-with GNAT.OS_Lib;
-procedure conftest is
- test : Integer;
- pragma Unreferenced (test);
-begin
- test := 1;
- Text_IO.Put ("Hello World");
- Text_IO.New_Line;
- GNAT.OS_Lib.OS_Exit (0);
-end conftest;
-CF_EOF
-if ( $cf_ada_make $ADAFLAGS conftest 1>&5 2>&1 ) ; then
- cf_cv_pragma_unreferenced=yes
-else
- cf_cv_pragma_unreferenced=no
-fi
-rm -rf conftest* *~conftest*
-
-fi
-echo "$as_me:11587: result: $cf_cv_pragma_unreferenced" >&5
-echo "${ECHO_T}$cf_cv_pragma_unreferenced" >&6
-
-# if the pragma is supported, use it (needed in the Trace code).
-if test $cf_cv_pragma_unreferenced = yes ; then
- PRAGMA_UNREF=TRUE
-else
- PRAGMA_UNREF=FALSE
-fi
-
cf_gnat_libraries=no
cf_gnat_projects=no
-echo "$as_me:11600: checking if GNAT supports project files" >&5
+if test "$enable_gnat_projects" != no ; then
+echo "$as_me:16046: checking if GNAT supports project files" >&5
echo $ECHO_N "checking if GNAT supports project files... $ECHO_C" >&6
-case $cf_gnat_version in #(vi
-3.[0-9]*) #(vi
+case $cf_cv_gnat_version in
+(3.[0-9]*)
;;
-*)
- case $cf_cv_system_name in #(vi
- cygwin*|msys*) #(vi
+(*)
+ case $cf_cv_system_name in
+ (cygwin*|msys*)
;;
- *)
- mkdir conftest.src conftest.bin conftest.lib
- cd conftest.src
+ (*)
rm -rf conftest* *~conftest*
- cat >>library.gpr <<CF_EOF
+ if mkdir conftest.src conftest.bin conftest.lib
+ then
+ cd conftest.src
+ rm -rf conftest* *~conftest*
+ cat >>library.gpr <<CF_EOF
project Library is
Kind := External ("LIB_KIND");
for Library_Name use "ConfTest";
@@ -11621,22 +16069,14 @@ project Library is
for Library_Dir use External("BUILD_DIR");
Source_Dir := External ("SOURCE_DIR");
for Source_Dirs use (Source_Dir);
- package Compiler is
- for Default_Switches ("Ada") use
- ("-g",
- "-O2",
- "-gnatafno",
- "-gnatVa", -- All validity checks
- "-gnatwa"); -- Activate all optional errors
- end Compiler;
end Library;
CF_EOF
- cat >>confpackage.ads <<CF_EOF
+ cat >>confpackage.ads <<CF_EOF
package ConfPackage is
procedure conftest;
end ConfPackage;
CF_EOF
- cat >>confpackage.adb <<CF_EOF
+ cat >>confpackage.adb <<CF_EOF
with Text_IO;
package body ConfPackage is
procedure conftest is
@@ -11646,16 +16086,17 @@ package body ConfPackage is
end conftest;
end ConfPackage;
CF_EOF
- if ( $cf_ada_make $ADAFLAGS \
- -Plibrary.gpr \
- -XBUILD_DIR=`cd ../conftest.bin;pwd` \
- -XLIBRARY_DIR=`cd ../conftest.lib;pwd` \
- -XSOURCE_DIR=`pwd` \
- -XSONAME=libConfTest.so.1 \
- -XLIB_KIND=static 1>&5 2>&1 ) ; then
- cf_gnat_projects=yes
+ if ( $cf_ada_make $ADAFLAGS \
+ -Plibrary.gpr \
+ -XBUILD_DIR=`cd ../conftest.bin;pwd` \
+ -XLIBRARY_DIR=`cd ../conftest.lib;pwd` \
+ -XSOURCE_DIR=`pwd` \
+ -XSONAME=libConfTest.so.1 \
+ -XLIB_KIND=static 1>&5 2>&1 ) ; then
+ cf_gnat_projects=yes
+ fi
+ cd ..
fi
- cd ..
if test -f conftest.lib/confpackage.ali
then
cf_gnat_libraries=yes
@@ -11665,14 +16106,15 @@ CF_EOF
esac
;;
esac
-echo "$as_me:11668: result: $cf_gnat_projects" >&5
+echo "$as_me:16109: result: $cf_gnat_projects" >&5
echo "${ECHO_T}$cf_gnat_projects" >&6
+fi # enable_gnat_projects
if test $cf_gnat_projects = yes
then
- echo "$as_me:11673: checking if GNAT supports libraries" >&5
+ echo "$as_me:16115: checking if GNAT supports libraries" >&5
echo $ECHO_N "checking if GNAT supports libraries... $ECHO_C" >&6
- echo "$as_me:11675: result: $cf_gnat_libraries" >&5
+ echo "$as_me:16117: result: $cf_gnat_libraries" >&5
echo "${ECHO_T}$cf_gnat_libraries" >&6
fi
@@ -11692,7 +16134,7 @@ else
USE_GNAT_LIBRARIES="#"
fi
-echo "$as_me:11695: checking for ada-compiler" >&5
+echo "$as_me:16137: checking for ada-compiler" >&5
echo $ECHO_N "checking for ada-compiler... $ECHO_C" >&6
# Check whether --with-ada-compiler or --without-ada-compiler was given.
@@ -11703,12 +16145,12 @@ else
cf_ada_compiler=gnatmake
fi;
-echo "$as_me:11706: result: $cf_ada_compiler" >&5
+echo "$as_me:16148: result: $cf_ada_compiler" >&5
echo "${ECHO_T}$cf_ada_compiler" >&6
cf_ada_package=terminal_interface
-echo "$as_me:11711: checking for ada-include" >&5
+echo "$as_me:16153: checking for ada-include" >&5
echo $ECHO_N "checking for ada-include... $ECHO_C" >&6
# Check whether --with-ada-include or --without-ada-include was given.
@@ -11720,43 +16162,43 @@ else
fi; if test -n "$prefix/share/ada/adainclude" ; then
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
+ cf_path_syntax="$ac_default_prefix"
fi
-case ".$withval" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*|.\${*dir}*) #(vi
- eval withval="$withval"
- case ".$withval" in #(vi
- .NONE/*)
- withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- { { echo "$as_me:11747: error: expected a pathname, not \"$withval\"" >&5
+case ".$withval" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval withval="$withval"
+ case ".$withval" in
+ (.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:16189: error: expected a pathname, not \"$withval\"" >&5
echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
{ (exit 1); exit 1; }; }
- ;;
+ ;;
esac
fi
eval ADA_INCLUDE="$withval"
-echo "$as_me:11756: result: $ADA_INCLUDE" >&5
+echo "$as_me:16198: result: $ADA_INCLUDE" >&5
echo "${ECHO_T}$ADA_INCLUDE" >&6
-echo "$as_me:11759: checking for ada-objects" >&5
+echo "$as_me:16201: checking for ada-objects" >&5
echo $ECHO_N "checking for ada-objects... $ECHO_C" >&6
# Check whether --with-ada-objects or --without-ada-objects was given.
@@ -11768,43 +16210,43 @@ else
fi; if test -n "$prefix/lib/ada/adalib" ; then
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
+ cf_path_syntax="$ac_default_prefix"
fi
-case ".$withval" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*|.\${*dir}*) #(vi
- eval withval="$withval"
- case ".$withval" in #(vi
- .NONE/*)
- withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- { { echo "$as_me:11795: error: expected a pathname, not \"$withval\"" >&5
+case ".$withval" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval withval="$withval"
+ case ".$withval" in
+ (.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:16237: error: expected a pathname, not \"$withval\"" >&5
echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
{ (exit 1); exit 1; }; }
- ;;
+ ;;
esac
fi
eval ADA_OBJECTS="$withval"
-echo "$as_me:11804: result: $ADA_OBJECTS" >&5
+echo "$as_me:16246: result: $ADA_OBJECTS" >&5
echo "${ECHO_T}$ADA_OBJECTS" >&6
-echo "$as_me:11807: checking if an Ada95 shared-library should be built" >&5
+echo "$as_me:16249: checking if an Ada95 shared-library should be built" >&5
echo $ECHO_N "checking if an Ada95 shared-library should be built... $ECHO_C" >&6
# Check whether --with-ada-sharedlib or --without-ada-sharedlib was given.
@@ -11814,9 +16256,19 @@ if test "${with_ada_sharedlib+set}" = set; then
else
with_ada_sharedlib=no
fi;
-echo "$as_me:11817: result: $with_ada_sharedlib" >&5
+echo "$as_me:16259: result: $with_ada_sharedlib" >&5
echo "${ECHO_T}$with_ada_sharedlib" >&6
+if test "x$with_ada_sharedlib" != xno
+then
+ if test "x$cf_gnat_projects" != xyes
+ then
+ { echo "$as_me:16266: WARNING: disabling shared-library since GNAT projects are not supported" >&5
+echo "$as_me: WARNING: disabling shared-library since GNAT projects are not supported" >&2;}
+ with_ada_sharedlib=no
+ fi
+fi
+
ADA_SHAREDLIB='lib$(LIB_NAME).so.1'
MAKE_ADA_SHAREDLIB="#"
@@ -11829,13 +16281,34 @@ then
fi
fi
+ # allow the Ada binding to be renamed
+
+echo "$as_me:16286: checking for ada-libname" >&5
+echo $ECHO_N "checking for ada-libname... $ECHO_C" >&6
+
+# Check whether --with-ada-libname or --without-ada-libname was given.
+if test "${with_ada_libname+set}" = set; then
+ withval="$with_ada_libname"
+ ADA_LIBNAME=$withval
+else
+ ADA_LIBNAME=AdaCurses
+fi;
+case "x$ADA_LIBNAME" in
+(x|xyes|xno)
+ ADA_LIBNAME=AdaCurses
+ ;;
+esac
+
+echo "$as_me:16302: result: $ADA_LIBNAME" >&5
+echo "${ECHO_T}$ADA_LIBNAME" >&6
+
else
- { { echo "$as_me:11833: error: No usable Ada compiler found" >&5
+ { { echo "$as_me:16306: error: No usable Ada compiler found" >&5
echo "$as_me: error: No usable Ada compiler found" >&2;}
{ (exit 1); exit 1; }; }
fi
else
- { { echo "$as_me:11838: error: The Ada compiler is needed for this package" >&5
+ { { echo "$as_me:16311: error: The Ada compiler is needed for this package" >&5
echo "$as_me: error: The Ada compiler is needed for this package" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -11849,21 +16322,14 @@ TINFO_LIBS=
### Construct the list of include-directories to be generated
-if test "$GCC" != yes; then
- CPPFLAGS="-I\${includedir} $CPPFLAGS"
-elif test "$includedir" != "/usr/include"; then
- if test "$includedir" = '${prefix}/include' ; then
- if test x$prefix != x/usr ; then
- CPPFLAGS="-I\${includedir} $CPPFLAGS"
- fi
- else
- CPPFLAGS="-I\${includedir} $CPPFLAGS"
- fi
-fi
if test "$srcdir" != "."; then
CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS"
fi
-CPPFLAGS="-I. -I../include $CPPFLAGS"
+CPPFLAGS="-I../include $CPPFLAGS"
+if test "$srcdir" != "."; then
+ CPPFLAGS="-I\${srcdir} $CPPFLAGS"
+fi
+CPPFLAGS="-I. $CPPFLAGS"
ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS"
if test "$srcdir" != "."; then
@@ -11882,114 +16348,123 @@ elif test "$includedir" != "/usr/include"; then
fi
### Build up pieces for makefile rules
-echo "$as_me:11885: checking default library suffix" >&5
+echo "$as_me:16351: checking default library suffix" >&5
echo $ECHO_N "checking default library suffix... $ECHO_C" >&6
case $DFT_LWR_MODEL in
- libtool) DFT_ARG_SUFFIX='' ;;
- normal) DFT_ARG_SUFFIX='' ;;
- debug) DFT_ARG_SUFFIX='_g' ;;
- profile) DFT_ARG_SUFFIX='_p' ;;
- shared) DFT_ARG_SUFFIX='' ;;
+ (libtool) DFT_ARG_SUFFIX='' ;;
+ (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 "$as_me:11896: result: $DFT_ARG_SUFFIX" >&5
+echo "$as_me:16362: result: $DFT_ARG_SUFFIX" >&5
echo "${ECHO_T}$DFT_ARG_SUFFIX" >&6
-echo "$as_me:11899: checking default library-dependency suffix" >&5
+echo "$as_me:16365: checking default library-dependency suffix" >&5
echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6
- case X$DFT_LWR_MODEL in #(vi
- Xlibtool) #(vi
+ case X$DFT_LWR_MODEL in
+ (Xlibtool)
DFT_LIB_SUFFIX='.la'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- Xdebug) #(vi
+ (Xdebug)
DFT_LIB_SUFFIX='_g.a'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- Xprofile) #(vi
+ (Xprofile)
DFT_LIB_SUFFIX='_p.a'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- Xshared) #(vi
+ (Xshared)
case $cf_cv_system_name in
- aix[5-7]*) #(vi
- DFT_LIB_SUFFIX='.a'
+ (aix[5-7]*)
+ DFT_LIB_SUFFIX='.so'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- cygwin*|msys*|mingw*) #(vi
+ (cygwin*|msys*|mingw*)
DFT_LIB_SUFFIX='.dll'
DFT_DEP_SUFFIX='.dll.a'
;;
- darwin*) #(vi
+ (darwin*)
DFT_LIB_SUFFIX='.dylib'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- hpux*) #(vi
+ (hpux*)
case $target in
- ia64*) #(vi
+ (ia64*)
DFT_LIB_SUFFIX='.so'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- *) #(vi
+ (*)
DFT_LIB_SUFFIX='.sl'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
esac
;;
- *) #(vi
+ (*)
DFT_LIB_SUFFIX='.so'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
esac
;;
- *)
+ (*)
DFT_LIB_SUFFIX='.a'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
esac
- test -n "$LIB_SUFFIX" && DFT_LIB_SUFFIX="${LIB_SUFFIX}${DFT_LIB_SUFFIX}"
- test -n "$LIB_SUFFIX" && DFT_DEP_SUFFIX="${LIB_SUFFIX}${DFT_DEP_SUFFIX}"
-echo "$as_me:11954: result: $DFT_DEP_SUFFIX" >&5
+ if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}"
+ then
+ DFT_LIB_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_LIB_SUFFIX}"
+ DFT_DEP_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_DEP_SUFFIX}"
+ fi
+echo "$as_me:16423: result: $DFT_DEP_SUFFIX" >&5
echo "${ECHO_T}$DFT_DEP_SUFFIX" >&6
-echo "$as_me:11957: checking default object directory" >&5
+echo "$as_me:16426: checking default object directory" >&5
echo $ECHO_N "checking default object directory... $ECHO_C" >&6
case $DFT_LWR_MODEL in
- libtool) DFT_OBJ_SUBDIR='obj_lo' ;;
- normal) DFT_OBJ_SUBDIR='objects' ;;
- debug) DFT_OBJ_SUBDIR='obj_g' ;;
- profile) DFT_OBJ_SUBDIR='obj_p' ;;
- shared)
- case $cf_cv_system_name in #(vi
- cygwin|msys) #(vi
+ (libtool) DFT_OBJ_SUBDIR='obj_lo' ;;
+ (normal) DFT_OBJ_SUBDIR='objects' ;;
+ (debug) DFT_OBJ_SUBDIR='obj_g' ;;
+ (profile) DFT_OBJ_SUBDIR='obj_p' ;;
+ (shared)
+ case $cf_cv_system_name in
+ (cygwin|msys)
DFT_OBJ_SUBDIR='objects' ;;
- *)
+ (*)
DFT_OBJ_SUBDIR='obj_s' ;;
esac
esac
-echo "$as_me:11973: result: $DFT_OBJ_SUBDIR" >&5
+echo "$as_me:16442: result: $DFT_OBJ_SUBDIR" >&5
echo "${ECHO_T}$DFT_OBJ_SUBDIR" >&6
### Set up low-level terminfo dependencies for makefiles.
if test "$DFT_LWR_MODEL" = shared ; then
- case $cf_cv_system_name in #(vi
- cygwin*)
+ case $cf_cv_system_name in
+ (cygwin*)
# "lib" files have ".dll.a" suffix, "cyg" files have ".dll"
;;
- msys*)
+ (msys*)
# "lib" files have ".dll.a" suffix, "msys-" files have ".dll"
;;
esac
fi
+USE_ARG_SUFFIX=${DFT_ARG_SUFFIX}
+
+USE_LIB_SUFFIX=${DFT_ARG_SUFFIX}
+
+USE_CFG_SUFFIX=${DFT_ARG_SUFFIX}
+
### Construct the list of subdirectories for which we'll customize makefiles
### with the appropriate compile-rules.
-SUB_MAKEFILES="gen/adacurses${DFT_ARG_SUFFIX}-config:gen/adacurses-config.in"
+SUB_MAKEFILES="gen/adacurses${USE_ARG_SUFFIX}-config:gen/adacurses-config.in"
cat >>confdefs.h <<EOF
#define NCURSES_PATHSEP '$PATH_SEPARATOR'
@@ -12005,32 +16480,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $EXTRA_CFLAGS
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -12039,21 +16520,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -12062,26 +16551,23 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
-fi
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
-################################################################################
-
-if test x"$enable_pc_files" = xyes ; then \
-SUB_MAKEFILES="$SUB_MAKEFILES misc/gen-pkgconfig:misc/gen-pkgconfig.in"
-MAKE_PC_FILES=
-else
-MAKE_PC_FILES="#"
fi
################################################################################
@@ -12108,7 +16594,13 @@ EXTERNAL_TREE=
# match layout used by make-tar.sh
ADAHTML_DIR=../doc/ada
-ac_config_files="$ac_config_files $SUB_MAKEFILES doc/adacurses${DFT_ARG_SUFFIX}-config.1:doc/MKada_config.in Makefile"
+if test "x$cross_compiling" = xyes ; then
+ ADAGEN_LDFLAGS='$(CROSS_LDFLAGS)'
+else
+ ADAGEN_LDFLAGS='$(NATIVE_LDFLAGS)'
+fi
+
+ac_config_files="$ac_config_files $SUB_MAKEFILES src/library.gpr:src/library.gpr.in doc/adacurses${DFT_ARG_SUFFIX}-config.1:doc/MKada_config.in Makefile"
ac_config_commands="$ac_config_commands default"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -12189,7 +16681,7 @@ DEFS=-DHAVE_CONFIG_H
: ${CONFIG_STATUS=./config.status}
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:12192: creating $CONFIG_STATUS" >&5
+{ echo "$as_me:16684: creating $CONFIG_STATUS" >&5
echo "$as_me: creating $CONFIG_STATUS" >&6;}
cat >$CONFIG_STATUS <<_ACEOF
#! $SHELL
@@ -12321,7 +16813,7 @@ EOF
cat >>$CONFIG_STATUS <<EOF
ac_cs_version="\\
config.status
-configured by $0, generated by GNU Autoconf 2.52.20121002,
+configured by $0, generated by GNU Autoconf 2.52.20200111,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
@@ -12365,7 +16857,7 @@ cat >>$CONFIG_STATUS <<\EOF
echo "$ac_cs_version"; exit 0 ;;
--he | --h)
# Conflict between --help and --header
- { { echo "$as_me:12368: error: ambiguous option: $1
+ { { echo "$as_me:16860: error: ambiguous option: $1
Try \`$0 --help' for more information." >&5
echo "$as_me: error: ambiguous option: $1
Try \`$0 --help' for more information." >&2;}
@@ -12384,7 +16876,7 @@ Try \`$0 --help' for more information." >&2;}
ac_need_defaults=false;;
# This is an error.
- -*) { { echo "$as_me:12387: error: unrecognized option: $1
+ -*) { { echo "$as_me:16879: error: unrecognized option: $1
Try \`$0 --help' for more information." >&5
echo "$as_me: error: unrecognized option: $1
Try \`$0 --help' for more information." >&2;}
@@ -12403,7 +16895,7 @@ cat >&5 << _ACEOF
## Running config.status. ##
## ----------------------- ##
-This file was extended by $as_me 2.52.20121002, executed with
+This file was extended by $as_me 2.52.20200111, executed with
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
CONFIG_LINKS = $CONFIG_LINKS
@@ -12451,11 +16943,12 @@ do
case "$ac_config_target" in
# Handling of arguments.
"$SUB_MAKEFILES" ) CONFIG_FILES="$CONFIG_FILES $SUB_MAKEFILES" ;;
+ "src/library.gpr" ) CONFIG_FILES="$CONFIG_FILES src/library.gpr:src/library.gpr.in" ;;
"doc/adacurses${DFT_ARG_SUFFIX}-config.1" ) CONFIG_FILES="$CONFIG_FILES doc/adacurses${DFT_ARG_SUFFIX}-config.1:doc/MKada_config.in" ;;
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
"include/ncurses_cfg.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/ncurses_cfg.h:include/ncurses_cfg.hin" ;;
- *) { { echo "$as_me:12458: error: invalid argument: $ac_config_target" >&5
+ *) { { echo "$as_me:16951: error: invalid argument: $ac_config_target" >&5
echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
{ (exit 1); exit 1; }; };;
esac
@@ -12519,6 +17012,7 @@ s,@datadir@,$datadir,;t t
s,@sysconfdir@,$sysconfdir,;t t
s,@sharedstatedir@,$sharedstatedir,;t t
s,@localstatedir@,$localstatedir,;t t
+s,@runstatedir@,$runstatedir,;t t
s,@libdir@,$libdir,;t t
s,@includedir@,$includedir,;t t
s,@oldincludedir@,$oldincludedir,;t t
@@ -12566,6 +17060,8 @@ s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
s,@INSTALL_DATA@,$INSTALL_DATA,;t t
s,@LN_S@,$LN_S,;t t
+s,@INSTALL_OPT_S@,$INSTALL_OPT_S,;t t
+s,@INSTALL_OPT_O@,$INSTALL_OPT_O,;t t
s,@PKG_CONFIG@,$PKG_CONFIG,;t t
s,@ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t
s,@PKG_CONFIG_LIBDIR@,$PKG_CONFIG_LIBDIR,;t t
@@ -12635,13 +17131,16 @@ s,@ECHO_CC@,$ECHO_CC,;t t
s,@ADAFLAGS@,$ADAFLAGS,;t t
s,@EXTRA_CFLAGS@,$EXTRA_CFLAGS,;t t
s,@ADA_TRACE@,$ADA_TRACE,;t t
-s,@gnat_exists@,$gnat_exists,;t t
+s,@cf_TEMP_gnat@,$cf_TEMP_gnat,;t t
s,@M4_exists@,$M4_exists,;t t
s,@cf_ada_make@,$cf_ada_make,;t t
+s,@cf_ada_config@,$cf_ada_config,;t t
+s,@cf_ada_config_Ada@,$cf_ada_config_Ada,;t t
+s,@cf_ada_config_C@,$cf_ada_config_C,;t t
+s,@GNATPREP_OPTS@,$GNATPREP_OPTS,;t t
s,@cf_compile_generics@,$cf_compile_generics,;t t
s,@cf_generic_objects@,$cf_generic_objects,;t t
s,@USE_GNAT_SIGINT@,$USE_GNAT_SIGINT,;t t
-s,@PRAGMA_UNREF@,$PRAGMA_UNREF,;t t
s,@USE_OLD_MAKERULES@,$USE_OLD_MAKERULES,;t t
s,@USE_GNAT_PROJECTS@,$USE_GNAT_PROJECTS,;t t
s,@USE_GNAT_LIBRARIES@,$USE_GNAT_LIBRARIES,;t t
@@ -12651,14 +17150,16 @@ s,@ADA_INCLUDE@,$ADA_INCLUDE,;t t
s,@ADA_OBJECTS@,$ADA_OBJECTS,;t t
s,@ADA_SHAREDLIB@,$ADA_SHAREDLIB,;t t
s,@MAKE_ADA_SHAREDLIB@,$MAKE_ADA_SHAREDLIB,;t t
+s,@ADA_LIBNAME@,$ADA_LIBNAME,;t t
s,@TINFO_LDFLAGS2@,$TINFO_LDFLAGS2,;t t
s,@TINFO_LIBS@,$TINFO_LIBS,;t t
s,@ACPPFLAGS@,$ACPPFLAGS,;t t
s,@DFT_ARG_SUFFIX@,$DFT_ARG_SUFFIX,;t t
s,@DFT_DEP_SUFFIX@,$DFT_DEP_SUFFIX,;t t
s,@DFT_OBJ_SUBDIR@,$DFT_OBJ_SUBDIR,;t t
-s,@MAKE_PC_FILES@,$MAKE_PC_FILES,;t t
-s,@cross_compiling@,$cross_compiling,;t t
+s,@USE_ARG_SUFFIX@,$USE_ARG_SUFFIX,;t t
+s,@USE_LIB_SUFFIX@,$USE_LIB_SUFFIX,;t t
+s,@USE_CFG_SUFFIX@,$USE_CFG_SUFFIX,;t t
s,@TEST_ARG2@,$TEST_ARG2,;t t
s,@TEST_LIBS2@,$TEST_LIBS2,;t t
s,@NCURSES_SHLIB2@,$NCURSES_SHLIB2,;t t
@@ -12666,6 +17167,7 @@ s,@ADA_SUBDIRS@,$ADA_SUBDIRS,;t t
s,@NCURSES_TREE@,$NCURSES_TREE,;t t
s,@EXTERNAL_TREE@,$EXTERNAL_TREE,;t t
s,@ADAHTML_DIR@,$ADAHTML_DIR,;t t
+s,@ADAGEN_LDFLAGS@,$ADAGEN_LDFLAGS,;t t
CEOF
EOF
@@ -12694,10 +17196,28 @@ EOF
# These are the two extra sed commands mentioned above.
(echo ':t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ # It is possible to make a multiline substitution using escaped newlines.
+ # Ensure that we do not split the substitution between script fragments.
+ ac_BEG=$ac_end
+ ac_END=`expr $ac_end + $ac_max_sed_lines`
+ sed "1,${ac_BEG}d; ${ac_END}p; q" $tmp/subs.sed >$tmp/subs.next
+ if test -s $tmp/subs.next; then
+ grep '^s,@[^@,][^@,]*@,.*\\$' $tmp/subs.next >$tmp/subs.edit
+ if test ! -s $tmp/subs.edit; then
+ grep "^s,@[^@,][^@,]*@,.*,;t t$" $tmp/subs.next >$tmp/subs.edit
+ if test ! -s $tmp/subs.edit; then
+ if test $ac_beg -gt 1; then
+ ac_end=`expr $ac_end - 1`
+ continue
+ fi
+ fi
+ fi
+ fi
+
if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
else
- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
fi
ac_sed_frag=`expr $ac_sed_frag + 1`
ac_beg=$ac_end
@@ -12780,7 +17300,7 @@ done; }
esac
if test x"$ac_file" != x-; then
- { echo "$as_me:12783: creating $ac_file" >&5
+ { echo "$as_me:17303: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
rm -f "$ac_file"
fi
@@ -12798,7 +17318,7 @@ echo "$as_me: creating $ac_file" >&6;}
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:12801: error: cannot find input file: $f" >&5
+ test -f "$f" || { { echo "$as_me:17321: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
@@ -12811,7 +17331,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
echo $srcdir/$f
else
# /dev/null tree
- { { echo "$as_me:12814: error: cannot find input file: $f" >&5
+ { { echo "$as_me:17334: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
@@ -12827,7 +17347,7 @@ cat >>$CONFIG_STATUS <<\EOF
if test -n "$ac_seen"; then
ac_used=`grep '@datarootdir@' $ac_item`
if test -z "$ac_used"; then
- { echo "$as_me:12830: WARNING: datarootdir was used implicitly but not set:
+ { echo "$as_me:17350: WARNING: datarootdir was used implicitly but not set:
$ac_seen" >&5
echo "$as_me: WARNING: datarootdir was used implicitly but not set:
$ac_seen" >&2;}
@@ -12836,7 +17356,7 @@ $ac_seen" >&2;}
fi
ac_seen=`grep '${datarootdir}' $ac_item`
if test -n "$ac_seen"; then
- { echo "$as_me:12839: WARNING: datarootdir was used explicitly but not set:
+ { echo "$as_me:17359: WARNING: datarootdir was used explicitly but not set:
$ac_seen" >&5
echo "$as_me: WARNING: datarootdir was used explicitly but not set:
$ac_seen" >&2;}
@@ -12873,7 +17393,7 @@ s,@INSTALL@,$ac_INSTALL,;t t
ac_init=`egrep '[ ]*'$ac_name'[ ]*=' $ac_file`
if test -z "$ac_init"; then
ac_seen=`echo "$ac_seen" |sed -e 's,^,'$ac_file':,'`
- { echo "$as_me:12876: WARNING: Variable $ac_name is used but was not set:
+ { echo "$as_me:17396: WARNING: Variable $ac_name is used but was not set:
$ac_seen" >&5
echo "$as_me: WARNING: Variable $ac_name is used but was not set:
$ac_seen" >&2;}
@@ -12884,7 +17404,7 @@ $ac_seen" >&2;}
egrep -n '@[A-Z_][A-Z_0-9]+@' $ac_file >>$tmp/out
if test -s $tmp/out; then
ac_seen=`sed -e 's,^,'$ac_file':,' < $tmp/out`
- { echo "$as_me:12887: WARNING: Some variables may not be substituted:
+ { echo "$as_me:17407: WARNING: Some variables may not be substituted:
$ac_seen" >&5
echo "$as_me: WARNING: Some variables may not be substituted:
$ac_seen" >&2;}
@@ -12933,7 +17453,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
* ) ac_file_in=$ac_file.in ;;
esac
- test x"$ac_file" != x- && { echo "$as_me:12936: creating $ac_file" >&5
+ test x"$ac_file" != x- && { echo "$as_me:17456: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
# First look for the input files in the build tree, otherwise in the
@@ -12944,7 +17464,7 @@ echo "$as_me: creating $ac_file" >&6;}
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:12947: error: cannot find input file: $f" >&5
+ test -f "$f" || { { echo "$as_me:17467: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
@@ -12957,7 +17477,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
echo $srcdir/$f
else
# /dev/null tree
- { { echo "$as_me:12960: error: cannot find input file: $f" >&5
+ { { echo "$as_me:17480: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
@@ -13015,7 +17535,7 @@ cat >>$CONFIG_STATUS <<\EOF
rm -f $tmp/in
if test x"$ac_file" != x-; then
if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
- { echo "$as_me:13018: $ac_file is unchanged" >&5
+ { echo "$as_me:17538: $ac_file is unchanged" >&5
echo "$as_me: $ac_file is unchanged" >&6;}
else
ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
diff --git a/Ada95/configure.in b/Ada95/configure.in
index 8d6e101354b4..21624e1521cf 100644
--- a/Ada95/configure.in
+++ b/Ada95/configure.in
@@ -1,5 +1,5 @@
dnl***************************************************************************
-dnl Copyright (c) 2010-2012,2013 Free Software Foundation, Inc. *
+dnl Copyright (c) 2010-2019,2020 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,19 +28,25 @@ dnl***************************************************************************
dnl
dnl Author: Thomas E. Dickey
dnl
-dnl $Id: configure.in,v 1.49 2013/11/16 20:06:37 tom Exp $
+dnl $Id: configure.in,v 1.74 2020/01/11 23:33:38 tom Exp $
dnl Process this file with autoconf to produce a configure script.
dnl
-dnl See http://invisible-island.net/autoconf/ for additional information.
+dnl For additional information, see
+dnl https://invisible-island.net/autoconf/
+dnl https://invisible-island.net/autoconf/my-autoconf.html
dnl
dnl ---------------------------------------------------------------------------
-AC_PREREQ(2.52.20030208)
-AC_REVISION($Revision: 1.49 $)
+AC_PREREQ(2.52.20200111)
+AC_REVISION($Revision: 1.74 $)
AC_INIT(gen/gen.c)
AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
+AC_DEFUN([AC_PATH_XTRA],[])dnl ignore dependencies on this
+
CF_TOP_BUILDDIR
+CF_HELP_MESSAGE(General Options:)
+
CF_WITH_SYSTYPE
### Save the given $CFLAGS to allow user-override.
@@ -53,7 +59,7 @@ CF_CFG_DEFAULTS
CF_PROG_CC(gnatgcc gcc cc)
AC_PROG_CPP
AC_PROG_GCC_TRADITIONAL
-CF_PROG_CC_C_O(CC)
+CF_PROG_CC_C_O(CC,[$CFLAGS $CPPFLAGS])
AC_ARG_PROGRAM
@@ -62,12 +68,14 @@ CF_PROG_EGREP
AC_PROG_INSTALL
CF_PROG_LN_S
+CF_PROG_INSTALL
+CF_INSTALL_OPTS
+
AC_SYS_LONG_FILE_NAMES
# if we find pkg-config, check if we should install the ".pc" files.
CF_PKG_CONFIG
CF_WITH_PKG_CONFIG_LIBDIR
-CF_ENABLE_PC_FILES
AC_MSG_CHECKING(if you want to build test-programs)
AC_ARG_WITH(tests,
@@ -83,12 +91,12 @@ AC_ARG_ENABLE(mixed-case,
[enable_mixedcase=auto])
AC_MSG_RESULT($enable_mixedcase)
if test "$enable_mixedcase" = "auto" ; then
- CF_MIXEDCASE_FILENAMES
+ CF_MIXEDCASE_FILENAMES
else
- cf_cv_mixedcase=$enable_mixedcase
- if test "$enable_mixedcase" = "yes" ; then
- AC_DEFINE(MIXEDCASE_FILENAMES)
- fi
+ cf_cv_mixedcase=$enable_mixedcase
+ if test "$enable_mixedcase" = "yes" ; then
+ AC_DEFINE(MIXEDCASE_FILENAMES)
+ fi
fi
# do this after mixed-case option (tags/TAGS is not as important as tic).
@@ -109,10 +117,10 @@ dnl archive can be built without modifying the host system's configuration.
AC_MSG_CHECKING(if you have specified an install-prefix)
AC_ARG_WITH(install-prefix,
[ --with-install-prefix prefixes actual install-location ($DESTDIR)],
- [case "$withval" in #(vi
- yes|no) #(vi
+ [case "$withval" in
+ (yes|no)
;;
- *) DESTDIR="$withval"
+ (*) DESTDIR="$withval"
;;
esac])
AC_MSG_RESULT($DESTDIR)
@@ -175,10 +183,10 @@ AC_SUBST(CC_G_OPT)
AC_MSG_CHECKING(for default loader flags)
case $DFT_LWR_MODEL in
-normal) LD_MODEL='' ;;
-debug) LD_MODEL=$CC_G_OPT ;;
-profile) LD_MODEL='-pg';;
-shared) LD_MODEL='' ;;
+(normal) LD_MODEL='' ;;
+(debug) LD_MODEL=$CC_G_OPT ;;
+(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)
@@ -218,8 +226,8 @@ if test "$with_broken_linker" = yes ; then
AC_DEFINE(BROKEN_LINKER)
BROKEN_LINKER=1
elif test "$DFT_LWR_MODEL" = shared ; then
- case $cf_cv_system_name in #(vi
- cygwin*)
+ case $cf_cv_system_name in
+ (cygwin*)
AC_DEFINE(BROKEN_LINKER)
BROKEN_LINKER=1
CF_VERBOSE(cygwin linker is broken anyway)
@@ -229,7 +237,7 @@ fi
AC_SUBST(BROKEN_LINKER)
# Check to define _XOPEN_SOURCE "automatically"
-CF_XOPEN_SOURCE
+CF_XOPEN_SOURCE(600)
CF_LARGEFILE
@@ -294,27 +302,27 @@ CF_WITH_PTHREAD
AC_MSG_CHECKING(if you want to use weak-symbols for pthreads)
AC_ARG_ENABLE(weak-symbols,
- [ --enable-weak-symbols enable weak-symbols for pthreads],
- [use_weak_symbols=$withval],
- [use_weak_symbols=no])
+ [ --enable-weak-symbols enable weak-symbols for pthreads],
+ [use_weak_symbols=$withval],
+ [use_weak_symbols=no])
AC_MSG_RESULT($use_weak_symbols)
if test "$use_weak_symbols" = yes ; then
- CF_WEAK_SYMBOLS
+ CF_WEAK_SYMBOLS
else
- cf_cv_weak_symbols=no
+ cf_cv_weak_symbols=no
fi
if test $cf_cv_weak_symbols = yes ; then
- AC_DEFINE(USE_WEAK_SYMBOLS,1,[Define to 1 to enable weak-symbols for pthreads])
+ AC_DEFINE(USE_WEAK_SYMBOLS,1,[Define to 1 to enable weak-symbols for pthreads])
fi
PTHREAD=
if test "$with_pthread" = "yes" ; then
- AC_DEFINE(USE_PTHREADS,1,[Define to 1 to use the pthreads library])
- enable_reentrant=yes
- if test $cf_cv_weak_symbols = yes ; then
- PTHREAD=-lpthread
- fi
+ AC_DEFINE(USE_PTHREADS,1,[Define to 1 to use the pthreads library])
+ enable_reentrant=yes
+ if test $cf_cv_weak_symbols = yes ; then
+ PTHREAD=-lpthread
+ fi
fi
AC_SUBST(PTHREAD)
@@ -411,7 +419,7 @@ AC_ARG_ENABLE(macros,
# extended to all models of the ncurses library:
cf_all_traces=no
case "$CFLAGS $CPPFLAGS" in
-*-DTRACE*)
+(*-DTRACE*)
cf_all_traces=yes
;;
esac
@@ -432,11 +440,13 @@ fi
AC_SUBST(ADA_TRACE)
+CF_DISABLE_GNAT_PROJECTS
+
### Checks for libraries.
-case $cf_cv_system_name in #(vi
-*mingw32*) #(vi
+case $cf_cv_system_name in
+(*mingw32*)
;;
-*)
+(*)
AC_CHECK_FUNC(gettimeofday,
AC_DEFINE(HAVE_GETTIMEOFDAY),[
@@ -447,6 +457,7 @@ AC_CHECK_LIB(bsd, gettimeofday,
esac
### Checks for header files.
+AC_CHECK_SIZEOF([signed char], 0)
AC_STDC_HEADERS
AC_HEADER_DIRENT
AC_HEADER_TIME
@@ -476,9 +487,10 @@ if test "$cf_with_ada" != "no" ; then
if test "$cf_cv_prog_gnat_correct" = yes; then
CF_FIXUP_ADAFLAGS
+ CF_GNATPREP_OPT_T
+
CF_GNAT_GENERICS
CF_GNAT_SIGINT
- CF_GNAT_PRAGMA_UNREF
CF_GNAT_PROJECTS
CF_WITH_ADA_COMPILER
@@ -489,6 +501,9 @@ if test "$cf_with_ada" != "no" ; then
CF_WITH_ADA_INCLUDE
CF_WITH_ADA_OBJECTS
CF_WITH_ADA_SHAREDLIB
+
+ # allow the Ada binding to be renamed
+ CF_WITH_ADA_LIBNAME(AdaCurses)
else
AC_MSG_ERROR(No usable Ada compiler found)
fi
@@ -527,20 +542,29 @@ AC_MSG_RESULT($DFT_OBJ_SUBDIR)
### Set up low-level terminfo dependencies for makefiles.
if test "$DFT_LWR_MODEL" = shared ; then
- case $cf_cv_system_name in #(vi
- cygwin*)
+ case $cf_cv_system_name in
+ (cygwin*)
# "lib" files have ".dll.a" suffix, "cyg" files have ".dll"
;;
- msys*)
+ (msys*)
# "lib" files have ".dll.a" suffix, "msys-" files have ".dll"
;;
esac
fi
+USE_ARG_SUFFIX=${DFT_ARG_SUFFIX}
+AC_SUBST(USE_ARG_SUFFIX)
+
+USE_LIB_SUFFIX=${DFT_ARG_SUFFIX}
+AC_SUBST(USE_LIB_SUFFIX)
+
+USE_CFG_SUFFIX=${DFT_ARG_SUFFIX}
+AC_SUBST(USE_CFG_SUFFIX)
+
### Construct the list of subdirectories for which we'll customize makefiles
### with the appropriate compile-rules.
-SUB_MAKEFILES="gen/adacurses${DFT_ARG_SUFFIX}-config:gen/adacurses-config.in"
+SUB_MAKEFILES="gen/adacurses${USE_ARG_SUFFIX}-config:gen/adacurses-config.in"
AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR',[Define to override ':' as the library path-separator])
@@ -549,17 +573,6 @@ CF_ADD_CFLAGS($EXTRA_CFLAGS)
################################################################################
-if test x"$enable_pc_files" = xyes ; then \
-SUB_MAKEFILES="$SUB_MAKEFILES misc/gen-pkgconfig:misc/gen-pkgconfig.in"
-MAKE_PC_FILES=
-else
-MAKE_PC_FILES="#"
-fi
-AC_SUBST(MAKE_PC_FILES)
-AC_SUBST(cross_compiling)
-
-################################################################################
-
TEST_ARG2=
AC_SUBST(TEST_ARG2)
@@ -590,8 +603,17 @@ AC_SUBST(EXTERNAL_TREE)
ADAHTML_DIR=../doc/ada
AC_SUBST(ADAHTML_DIR)
+if test "x$cross_compiling" = xyes ; then
+ ADAGEN_LDFLAGS='$(CROSS_LDFLAGS)'
+else
+ ADAGEN_LDFLAGS='$(NATIVE_LDFLAGS)'
+fi
+
+AC_SUBST(ADAGEN_LDFLAGS)
+
AC_OUTPUT( \
$SUB_MAKEFILES \
+ src/library.gpr:src/library.gpr.in \
doc/adacurses${DFT_ARG_SUFFIX}-config.1:doc/MKada_config.in \
Makefile,[
if test -z "$USE_OLD_MAKERULES" ; then
diff --git a/Ada95/doc/Makefile.in b/Ada95/doc/Makefile.in
index 9a74489ad6d4..c9d6da6becfb 100644
--- a/Ada95/doc/Makefile.in
+++ b/Ada95/doc/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.3 2012/08/11 21:31:56 tom Exp $
+# $Id: Makefile.in,v 1.6 2019/09/07 20:21:52 tom Exp $
##############################################################################
-# Copyright (c) 2011 Free Software Foundation, Inc. #
+# Copyright (c) 2011-2018,2019 Free 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"), #
@@ -31,7 +31,7 @@
#
# Makefile for AdaCurses manual pages.
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
DESTDIR = @DESTDIR@
@@ -42,12 +42,12 @@ datarootdir = @datarootdir@
datadir = @datadir@
mandir = @mandir@
-INSTALL = @INSTALL@
+INSTALL = @INSTALL@ @INSTALL_OPT_O@
INSTALL_DATA = @INSTALL_DATA@
DFT_ARG_SUFFIX = @DFT_ARG_SUFFIX@
-THIS = AdaCurses
+THIS = @ADA_LIBNAME@
DOCDIR = $(DESTDIR)$(datadir)/doc/$(THIS)
MANDIR = $(DESTDIR)$(mandir)/man1
diff --git a/Ada95/gen/Makefile.in b/Ada95/gen/Makefile.in
index 302ad94f4424..4e649d1c36e0 100644
--- a/Ada95/gen/Makefile.in
+++ b/Ada95/gen/Makefile.in
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2018,2019 Free 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"), #
@@ -28,11 +28,11 @@
#
# Author: Juergen Pfeifer, 1996
#
-# $Id: Makefile.in,v 1.77 2012/10/06 18:58:48 tom Exp $
+# $Id: Makefile.in,v 1.89 2019/08/31 15:44:14 tom Exp $
#
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
@@ -46,8 +46,8 @@ exec_prefix = @exec_prefix@
bindir = @bindir@
includedir = @includedir@
-INSTALL = @INSTALL@
-INSTALL_PROG = @INSTALL_PROGRAM@
+INSTALL = @INSTALL@ @INSTALL_OPT_O@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_DATA = @INSTALL_DATA@
AWK = @AWK@
@@ -55,12 +55,15 @@ LN_S = @LN_S@
CC = @CC@
HOST_CC = @BUILD_CC@
+
CFLAGS = @CFLAGS@
+HOST_CFLAGS = @BUILD_CFLAGS@
-CPPFLAGS = @ACPPFLAGS@ @CPPFLAGS@ \
+CPPFLAGS = @CPPFLAGS@
+HOST_CPPFLAGS = @ACPPFLAGS@ @BUILD_CPPFLAGS@ \
-DHAVE_CONFIG_H -I$(srcdir)
-CCFLAGS = $(CPPFLAGS) $(CFLAGS)
+CCFLAGS = $(HOST_CPPFLAGS) $(HOST_CFLAGS)
CFLAGS_NORMAL = $(CCFLAGS)
CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE
CFLAGS_PROFILE = $(CCFLAGS) -pg
@@ -73,19 +76,29 @@ ABI_VERSION = @cf_cv_abi_version@
LOCAL_LIBDIR = @top_builddir@/lib
LINK = $(HOST_CC)
-LD_FLAGS = @LD_MODEL@ $(LOCAL_LIBS) @TINFO_LDFLAGS2@ @LDFLAGS@ @LIBS@ @LOCAL_LDFLAGS2@ $(LDFLAGS) @TINFO_LIBS@
+LDFLAGS = @LDFLAGS@
+LIBS = @LIBS@
+
+# For the wide-character configuration combined with broken_linker, we need
+# addresses of ACS_xxx constants, which requires linking with the newly built
+# ncurses library. If cross-compiling, the developer has to fill in a workable
+# native library for this purpose.
+NATIVE_LDFLAGS = @LD_MODEL@ $(LOCAL_LIBS) @TINFO_LDFLAGS2@ $(LDFLAGS) @LIBS@ @LOCAL_LDFLAGS2@ $(LDFLAGS) @TINFO_LIBS@
+CROSS_LDFLAGS = @BUILD_LDFLAGS@ @BUILD_LIBS@
+
+ACTUAL_LDFLAGS = @ADAGEN_LDFLAGS@
RANLIB = @RANLIB@
M4 = m4
M4FLAGS = -DNCURSES_EXT_FUNCS=@NCURSES_EXT_FUNCS@
-ADACURSES_CONFIG = adacurses@DFT_ARG_SUFFIX@-config
+ADACURSES_CONFIG = adacurses@USE_CFG_SUFFIX@-config
WRAPPER = @NCURSES_SHLIB2@
PROG_GENERATE = ./generate$x
-GENERATE = $(PROG_GENERATE) '@DFT_ARG_SUFFIX@'
+GENERATE = $(PROG_GENERATE) '@USE_ARG_SUFFIX@'
DEL_ADAMODE = sed -e '/^\-\-\ \ \-\*\-\ ada\ \-\*\-.*/d'
GNATHTML = `type -p gnathtml || type -p gnathtml.pl 2>/dev/null`
@@ -97,39 +110,6 @@ ABASE = $(ALIB)-curses
ADA_SRCDIR = ../src
-GEN_FILES0 = Base_Defs
-
-GEN_FILES1 = ACS_Map \
- AC_Rep \
- Base_Defs \
- Character_Attribute_Set_Rep \
- Color_Defs \
- Key_Definitions \
- Linker_Options \
- Old_Keys \
- Public_Variables \
- Trace_Defs \
- Version_Info \
- Window_Offsets
-
-GEN_FILES2 = Menu_Opt_Rep \
- Menu_Base_Defs \
- Menu_Linker_Options \
- Item_Rep
-
-GEN_FILES3 = Form_Opt_Rep \
- Form_Base_Defs \
- Form_Linker_Options \
- Field_Rep
-
-GEN_FILES4 = Mouse_Base_Defs \
- Mouse_Event_Rep \
- Mouse_Events \
- Panel_Linker_Options
-
-GEN_FILES5 = Chtype_Def \
- Eti_Defs
-
GEN_TARGETS = $(ADA_SRCDIR)/$(ABASE).ads \
$(ADA_SRCDIR)/$(ABASE).adb \
$(ADA_SRCDIR)/$(ABASE)-aux.ads \
@@ -143,7 +123,8 @@ GEN_TARGETS = $(ADA_SRCDIR)/$(ABASE).ads \
$(ADA_SRCDIR)/$(ABASE)-forms-form_user_data.ads \
$(ADA_SRCDIR)/$(ABASE)-forms-field_types.ads \
$(ADA_SRCDIR)/$(ABASE)-forms-field_user_data.ads \
- $(ADA_SRCDIR)/$(ABASE)-panels-user_data.ads
+ $(ADA_SRCDIR)/$(ABASE)-panels-user_data.ads \
+ $(ADA_SRCDIR)/$(ABASE)_constants.ads
GEN_SRC = $(srcdir)/$(ABASE).ads.m4 \
$(srcdir)/$(ABASE).adb.m4 \
@@ -172,140 +153,64 @@ $(DESTDIR)$(bindir) :
install \
install.libs :: $(DESTDIR)$(bindir) $(ADACURSES_CONFIG)
- $(INSTALL_PROG) $(ADACURSES_CONFIG) $(DESTDIR)$(bindir)/$(ADACURSES_CONFIG)
+ $(INSTALL_SCRIPT) $(ADACURSES_CONFIG) $(DESTDIR)$(bindir)/$(ADACURSES_CONFIG)
uninstall \
uninstall.libs ::
-rm -f $(DESTDIR)$(bindir)/$(ADACURSES_CONFIG)
$(PROG_GENERATE): gen.o
- @ECHO_LD@ $(LINK) $(CFLAGS_NORMAL) gen.o $(LD_FLAGS) -o $@
+ @ECHO_LD@ $(LINK) $(CFLAGS_NORMAL) gen.o $(ACTUAL_LDFLAGS) -o $@
gen.o: $(srcdir)/gen.c
$(HOST_CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/gen.c
-################################################################################
-Character_Attribute_Set_Rep: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) B A" >$@
-
-Base_Defs: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) B B" >$@
-
-Color_Defs: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) B C" >$@
-
-Window_Offsets: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) B D" >$@
-
-Key_Definitions: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) B K" >$@
-
-Linker_Options: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) B L" >$@
-
-ACS_Map: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) B M" >$@
-
-Old_Keys: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) B O" >$@
-
-Public_Variables: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) B P" >$@
-
-AC_Rep: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) B R" >$@
-
-Version_Info: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) B V" >$@
-
-Trace_Defs: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) B T" >$@
-################################################################################
-Menu_Opt_Rep: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) M R" >$@
-
-Menu_Base_Defs: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) M B" >$@
-
-Menu_Linker_Options: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) M L" >$@
-
-Item_Rep: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) M I" >$@
-################################################################################
-Form_Opt_Rep: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) F R" >$@
-
-Form_Base_Defs: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) F B" >$@
-
-Form_Linker_Options: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) F L" >$@
-
-Field_Rep: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) F I" >$@
-################################################################################
-Mouse_Base_Defs: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) P B" >$@
-
-Mouse_Event_Rep: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) P M" >$@
-
-Mouse_Events: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) B E" >$@
-
-Panel_Linker_Options: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) P L" >$@
-
-Chtype_Def: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) E C" >$@
-Eti_Defs: $(PROG_GENERATE)
- $(WRAPPER) "$(GENERATE) E E" >$@
+$(ADA_SRCDIR)/$(ABASE)_constants.ads: $(PROG_GENERATE)
+ $(WRAPPER) "$(GENERATE)" >$@
################################################################################
$(ADA_SRCDIR)/$(ABASE).ads: $(srcdir)/$(ABASE).ads.m4 \
- $(GEN_FILES1) $(srcdir)/normal.m4
+ $(srcdir)/normal.m4
$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
$(srcdir)/$(ABASE).ads.m4 |\
$(DEL_ADAMODE) >$@
$(ADA_SRCDIR)/$(ABASE).adb: $(srcdir)/$(ABASE).adb.m4 \
- $(GEN_FILES1) $(srcdir)/normal.m4
+ $(srcdir)/normal.m4
$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
$(srcdir)/$(ABASE).adb.m4 |\
$(DEL_ADAMODE) >$@
$(ADA_SRCDIR)/$(ABASE)-aux.ads: $(srcdir)/$(ABASE)-aux.ads.m4 \
- $(GEN_FILES5) $(srcdir)/normal.m4
+ $(srcdir)/normal.m4
$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
$(srcdir)/$(ABASE)-aux.ads.m4 |\
$(DEL_ADAMODE) >$@
$(ADA_SRCDIR)/$(ABASE)-trace.ads: $(srcdir)/$(ABASE)-trace.ads.m4 \
- $(GEN_FILES5) $(srcdir)/normal.m4
+ $(srcdir)/normal.m4
$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
$(srcdir)/$(ABASE)-trace.ads.m4 |\
$(DEL_ADAMODE) >$@
$(ADA_SRCDIR)/$(ABASE)-menus.ads: $(srcdir)/$(ABASE)-menus.ads.m4 \
- $(GEN_FILES2) $(srcdir)/normal.m4
+ $(srcdir)/normal.m4
$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
$(srcdir)/$(ABASE)-menus.ads.m4 |\
$(DEL_ADAMODE) >$@
$(ADA_SRCDIR)/$(ABASE)-forms.ads: $(srcdir)/$(ABASE)-forms.ads.m4 \
- $(GEN_FILES3) $(srcdir)/normal.m4
+ $(srcdir)/normal.m4
$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
$(srcdir)/$(ABASE)-forms.ads.m4 |\
$(DEL_ADAMODE) >$@
$(ADA_SRCDIR)/$(ABASE)-mouse.ads: $(srcdir)/$(ABASE)-mouse.ads.m4 \
- $(GEN_FILES4) $(srcdir)/normal.m4
+ $(srcdir)/normal.m4
$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
$(srcdir)/$(ABASE)-mouse.ads.m4 |\
$(DEL_ADAMODE) >$@
$(ADA_SRCDIR)/$(ABASE)-panels.ads: $(srcdir)/$(ABASE)-panels.ads.m4 \
- $(GEN_FILES4) \
$(srcdir)/normal.m4
$(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
$(srcdir)/$(ABASE)-panels.ads.m4 |\
@@ -363,11 +268,6 @@ tags:
mostlyclean ::
-rm -f a.out core $(PROG_GENERATE) *.o
- -rm -f $(GEN_FILES1)
- -rm -f $(GEN_FILES2)
- -rm -f $(GEN_FILES3)
- -rm -f $(GEN_FILES4)
- -rm -f $(GEN_FILES5)
clean :: mostlyclean
-rm -f $(GEN_TARGETS) instab.tmp *.ad[bs] *.html *.ali *.tmp
@@ -429,6 +329,8 @@ adahtml:
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%#1A\([[:space:]]*NAME="[^"]*"\)#2%<A\1>%' |\
+ sed -e 's%#1/A#2%</A>%' |\
sed -e 's/3X/3x/g' |\
sed -e 's/$$\([ABCDEFGHIJKLMNOPQRSTUVWXZabcdefghijklmnopqrstuvwxz0123456789_]*:.*\)\$$/@\1@/' |\
sed -e 's%&lt;/A&gt;%</A>%g' > $$a.tmp ;\
diff --git a/Ada95/gen/adacurses-config.in b/Ada95/gen/adacurses-config.in
index ec0b6b68b674..8805b0933f8c 100644
--- a/Ada95/gen/adacurses-config.in
+++ b/Ada95/gen/adacurses-config.in
@@ -1,7 +1,7 @@
#! /bin/sh
-# $Id: adacurses-config.in,v 1.6 2010/03/06 21:05:01 tom Exp $
+# $Id: adacurses-config.in,v 1.13 2019/09/07 20:20:52 tom Exp $
##############################################################################
-# Copyright (c) 2007-2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 2007-2016,2019 Free 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"), #
@@ -40,14 +40,15 @@ ADA_OBJECTS=@ADA_OBJECTS@
VERSION=@NCURSES_MAJOR@.@NCURSES_MINOR@.@NCURSES_PATCH@
-CFLAGS="-I$ADA_INCLUDE -aO$ADA_OBJECTS"
-LIBS="-L$ADA_OBJECTS -lAdaCurses"
+CFLAGS="-aI$ADA_INCLUDE -aO$ADA_OBJECTS"
+LIBS="-L$ADA_OBJECTS -l@ADA_LIBNAME@"
-THIS="adacurses"
+THIS="@ADA_LIBNAME@"
+THIS_CFG="$THIS@DFT_ARG_SUFFIX@-config"
case "x$1" in
x--version)
- echo AdaCurses $VERSION
+ echo @ADA_LIBNAME@ $VERSION
;;
x--cflags)
echo $CFLAGS
@@ -57,23 +58,25 @@ case "x$1" in
;;
x)
# if no parameter is given, give what gnatmake needs
- echo "$CFLAGS -i -largs $LIBS"
+ echo "$CFLAGS -largs $LIBS"
;;
x--help)
cat <<ENDHELP
-Usage: ${THIS}-config [options]
+Usage: ${THIS_CFG} [options]
Options:
- --cflags echos the C compiler flags needed to compile with ${THIS}
- --libs echos the libraries needed to link with ${THIS}
+ --cflags echos the gnat (Ada compiler) flags needed to compile with ${THIS}
+ --libs echos the gnat libraries needed to link with ${THIS}
--version echos the release+patchdate version of ${THIS}
--help prints this message
+
+If no options are given, echos the full set of flags needed by gnatmake.
ENDHELP
;;
*)
- echo 'Usage: adacurses@DFT_ARG_SUFFIX@-config [--version | --cflags | --libs]' >&2
+ echo 'Usage: $THIS_CFG [--version | --cflags | --libs]' >&2
exit 1
;;
esac
diff --git a/Ada95/gen/gen.c b/Ada95/gen/gen.c
index 082315b6ceee..fd759ba45a41 100644
--- a/Ada95/gen/gen.c
+++ b/Ada95/gen/gen.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2014,2016 Free 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,48 +32,69 @@
/*
Version Control
- $Id: gen.c,v 1.64 2014/02/01 19:52:47 tom Exp $
+ $Id: gen.c,v 1.70 2016/02/13 22:00:22 tom Exp $
--------------------------------------------------------------------------*/
/*
- This program generates various record structures and constants from the
- ncurses header file for the Ada95 packages. Essentially it produces
- Ada95 source on stdout, which is then merged using m4 into a template
- to produce the real source.
- */
+ This program prints on its standard output the source for the
+ Terminal_Interface.Curses_Constants Ada package specification. This pure
+ package only exports C constants to the Ada compiler.
+ */
#ifdef HAVE_CONFIG_H
#include <ncurses_cfg.h>
#else
#include <ncurses.h>
-#define HAVE_USE_DEFAULT_COLORS 1
#endif
#include <stdlib.h>
-#include <stddef.h>
#include <string.h>
-#include <assert.h>
-#include <ctype.h>
#include <menu.h>
#include <form.h>
#undef UCHAR
#undef UINT
-#define UChar(c) ((UCHAR)(c))
-#define RES_NAME "Reserved"
typedef unsigned char UCHAR;
typedef unsigned int UINT;
-static const char *model = "";
-static int little_endian = 0;
+/* These global variables will be set by main () */
+static int little_endian;
+static const char *my_program_invocation_name = NULL;
-typedef struct
- {
- const char *name;
- unsigned long attr;
- }
-name_attribute_pair;
+static void
+my_error(const char *message)
+{
+ fprintf(stderr, "%s: %s\n", my_program_invocation_name, message);
+ exit(EXIT_FAILURE);
+}
+
+static void
+print_constant(const char *name,
+ long value)
+{
+ printf(" %-28s : constant := %ld;\n", name, value);
+}
+
+#define PRINT_NAMED_CONSTANT(name) \
+ print_constant (#name, name)
+
+static void
+print_comment(const char *message)
+{
+ printf("\n -- %s\n\n", message);
+}
+
+/*
+ * Make sure that KEY_MIN and KEY_MAX are defined.
+ * main () will protest if KEY_MIN == 256
+ */
+#ifndef KEY_MAX
+# define KEY_MAX 0777
+#endif
+#ifndef KEY_MIN
+# define KEY_MIN 0401
+#endif
static UCHAR
bit_is_set(const UCHAR * const data,
@@ -87,7 +108,7 @@ bit_is_set(const UCHAR * const data,
else /* or */
bit = ~offset; /* 7 - offset */
bit &= 7; /* modulo 8 */
- return byte & (UCHAR) (1 << bit);
+ return (UCHAR) (byte & (1 << bit));
}
/* Find lowest and highest used offset in a byte array. */
@@ -114,1407 +135,400 @@ find_pos(const UCHAR * const data,
return -1;
}
-/*
- * This helper routine generates a representation clause for a
- * record type defined in the binding.
- * We are only dealing with record types which are of 32 or 16
- * bit size, i.e. they fit into an (u)int or a (u)short.
- * Any pair with a 0 attr field will be ignored.
- */
-static void
-gen_reps(
- const name_attribute_pair * nap, /* array of name_attribute_pair records */
- const char *name, /* name of the represented record type */
- const UINT len, /* size of the record in bytes */
- const UINT bias)
-{
- const UINT len_bits = len << 3;
- int i, l;
- UINT low, high;
- int width = strlen(RES_NAME) + 3;
-
- assert(nap != NULL);
-
- for (i = 0; nap[i].name != (char *)0; i++)
- if (nap[i].attr)
- {
- l = (int)strlen(nap[i].name);
- if (l > width)
- width = l;
- }
- assert(width > 0);
-
- printf(" type %s is\n", name);
- printf(" record\n");
- for (i = 0; nap[i].name != (char *)0; i++)
- if (nap[i].attr)
- {
- printf(" %-*s : Boolean;\n", width, nap[i].name);
- }
- printf(" end record;\n");
- printf(" pragma Convention (C, %s);\n\n", name);
-
- printf(" for %s use\n", name);
- printf(" record\n");
-
- for (i = 0; nap[i].name != (char *)0; i++)
- if (nap[i].attr)
- {
- if (find_pos((const UCHAR *)(&(nap[i].attr)) + bias, len, &low, &high))
- printf(" %-*s at 0 range %2d .. %2d;\n", width, nap[i].name,
- low, high);
- }
- printf(" end record;\n");
- printf(" pragma Warnings (Off);");
- printf(" for %s'Size use %d;\n", name, len_bits);
- printf(" pragma Warnings (On);\n");
- printf(" -- Please note: this rep. clause is generated and may be\n");
- printf(" -- different on your system.");
-}
-
-static void
-chtype_rep(const char *name, attr_t mask)
-{
- attr_t x = (attr_t)-1;
- attr_t t = x & mask;
- UINT low, high;
-
- if (find_pos((const UCHAR *)(&t), sizeof(t), &low, &high))
- printf(" %-5s at 0 range %2d .. %2d;\n", name, low, high);
-}
-
-static void
-gen_chtype_rep(const char *name)
-{
- printf(" for %s use\n record\n", name);
- chtype_rep("Ch", A_CHARTEXT);
- chtype_rep("Color", A_COLOR);
- chtype_rep("Attr", (A_ATTRIBUTES & ~A_COLOR));
- printf(" end record;\n for %s'Size use %ld;\n",
- name, (long)(8 * sizeof(chtype)));
-
- printf(" -- Please note: this rep. clause is generated and may be\n");
- printf(" -- different on your system.\n");
-}
-
-static void
-mrep_rep(const char *name, void *rec)
-{
- UINT low, high;
-
- if (find_pos((const UCHAR *)rec, sizeof(MEVENT), &low, &high))
- printf(" %-7s at 0 range %3d .. %3d;\n", name, low, high);
-}
-
-static void
-gen_mrep_rep(const char *name)
-{
- MEVENT x;
-
- printf(" for %s use\n record\n", name);
-
- memset(&x, 0, sizeof(x));
- x.id = -1;
- mrep_rep("Id", &x);
-
- memset(&x, 0, sizeof(x));
- x.x = -1;
- mrep_rep("X", &x);
-
- memset(&x, 0, sizeof(x));
- x.y = -1;
- mrep_rep("Y", &x);
-
- memset(&x, 0, sizeof(x));
- x.z = -1;
- mrep_rep("Z", &x);
-
- memset(&x, 0, sizeof(x));
- x.bstate = (mmask_t) - 1;
- mrep_rep("Bstate", &x);
-
- printf(" end record;\n");
- printf(" -- Please note: this rep. clause is generated and may be\n");
- printf(" -- different on your system.\n");
-}
-
-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 not specified. Originally (in
- * 1999-2000), the ifdef's also were needed since the proposed bit-layout
- * for wide characters allocated 16-bits for A_CHARTEXT, leaving too few
- * bits for a few of the A_xxx symbols.
- * Some preprocessors are not able to test the values because they
- * now (2014) contain an explicit cast to chtype, so we avoid ifdef.
- */
- static const name_attribute_pair nap[] =
- {
- {"Stand_Out", A_STANDOUT},
- {"Under_Line", A_UNDERLINE},
- {"Reverse_Video", A_REVERSE},
- {"Blink", A_BLINK},
- {"Dim_Character", A_DIM},
- {"Bold_Character", A_BOLD},
- {"Alternate_Character_Set", A_ALTCHARSET},
- {"Invisible_Character", A_INVIS},
- {"Protected_Character", A_PROTECT},
- {"Horizontal", A_HORIZONTAL},
- {"Left", A_LEFT},
- {"Low", A_LOW},
- {"Right", A_RIGHT},
- {"Top", A_TOP},
- {"Vertical", A_VERTICAL},
- {(char *)0, 0}
- };
- chtype attr = A_ATTRIBUTES & ~A_COLOR;
- int start = -1;
- int len = 0;
- int i;
- chtype set;
- for (i = 0; i < (int)(8 * sizeof(chtype)); i++)
-
- {
- set = (attr & 1);
- if (set)
- {
- if (start < 0)
- start = i;
- if (start >= 0)
- {
- len++;
- }
- }
- attr = attr >> 1;
- }
- gen_reps(nap, name,
- (UINT) ((len + 7) / 8),
- (UINT) (little_endian ? start >> 3 : 0));
-}
-
-static void
-gen_trace(const char *name)
-{
- static const name_attribute_pair nap[] =
- {
- {"Times", TRACE_TIMES},
- {"Tputs", TRACE_TPUTS},
- {"Update", TRACE_UPDATE},
- {"Cursor_Move", TRACE_MOVE},
- {"Character_Output", TRACE_CHARPUT},
- {"Calls", TRACE_CALLS},
- {"Virtual_Puts", TRACE_VIRTPUT},
- {"Input_Events", TRACE_IEVENT},
- {"TTY_State", TRACE_BITS},
- {"Internal_Calls", TRACE_ICALLS},
- {"Character_Calls", TRACE_CCALLS},
- {"Termcap_TermInfo", TRACE_DATABASE},
- {"Attributes_And_Colors", TRACE_ATTRS},
- {(char *)0, 0}
- };
+#define PRINT_BITMASK(c_type, ada_name, mask_macro) \
+ { \
+ UINT first, last; \
+ c_type mask = (mask_macro); \
+ if (!find_pos ((UCHAR *)&mask, sizeof (mask), &first, &last)) \
+ my_error ("failed to locate " ada_name); \
+ print_constant (ada_name "_First", first); \
+ print_constant (ada_name "_Last", last); \
+ }
- gen_reps(nap, name, sizeof(UINT),
- little_endian ? 0 : sizeof(nap[0].attr) - sizeof(UINT));
-}
+#define PRINT_NAMED_BITMASK(c_type, mask_macro) \
+ PRINT_BITMASK (c_type, #mask_macro, mask_macro)
+
+#define STRUCT_OFFSET(record, field) \
+ { \
+ UINT first, last; \
+ record mask; \
+ memset (&mask, 0, sizeof (mask)); \
+ memset (&mask.field, 0xff, sizeof(mask.field)); \
+ if (!find_pos ((UCHAR *)&mask, sizeof (mask), &first, &last)) \
+ my_error ("failed to locate" #record "_" #field); \
+ print_constant (#record "_" #field "_First", first); \
+ print_constant (#record "_" #field "_Last", last); \
+ }
-static void
-gen_menu_opt_rep(const char *name)
-{
- static const name_attribute_pair nap[] =
- {
-#ifdef O_ONEVALUE
- {"One_Valued", O_ONEVALUE},
-#endif
-#ifdef O_SHOWDESC
- {"Show_Descriptions", O_SHOWDESC},
-#endif
-#ifdef O_ROWMAJOR
- {"Row_Major_Order", O_ROWMAJOR},
-#endif
-#ifdef O_IGNORECASE
- {"Ignore_Case", O_IGNORECASE},
-#endif
-#ifdef O_SHOWMATCH
- {"Show_Matches", O_SHOWMATCH},
-#endif
-#ifdef O_NONCYCLIC
- {"Non_Cyclic", O_NONCYCLIC},
-#endif
- {(char *)0, 0}
- };
+/*--------------------*/
+/* Start of main (). */
+/*--------------------*/
- gen_reps(nap, name, sizeof(Menu_Options),
- little_endian ? 0 : sizeof(nap[0].attr) - sizeof(Menu_Options));
-}
-
-static void
-gen_item_opt_rep(const char *name)
+int
+main(int argc, const char *argv[])
{
- static const name_attribute_pair nap[] =
- {
-#ifdef O_SELECTABLE
- {"Selectable", O_SELECTABLE},
-#endif
- {(char *)0, 0}
- };
-
- gen_reps(nap, name, sizeof(Item_Options),
- little_endian ? 0 : sizeof(nap[0].attr) - sizeof(Item_Options));
-}
+ const int x = 0x12345678;
-static void
-gen_form_opt_rep(const char *name)
-{
- static const name_attribute_pair nap[] =
- {
-#ifdef O_NL_OVERLOAD
- {"NL_Overload", O_NL_OVERLOAD},
-#endif
-#ifdef O_BS_OVERLOAD
- {"BS_Overload", O_BS_OVERLOAD},
-#endif
- {(char *)0, 0}
- };
+ little_endian = (*((const char *)&x) == 0x78);
- gen_reps(nap, name, sizeof(Form_Options),
- little_endian ? 0 : sizeof(nap[0].attr) - sizeof(Form_Options));
-}
+ my_program_invocation_name = argv[0];
-/*
- * Generate the representation clause for the Field_Option_Set record
- */
-static void
-gen_field_opt_rep(const char *name)
-{
- static const name_attribute_pair nap[] =
- {
-#ifdef O_VISIBLE
- {"Visible", O_VISIBLE},
-#endif
-#ifdef O_ACTIVE
- {"Active", O_ACTIVE},
-#endif
-#ifdef O_PUBLIC
- {"Public", O_PUBLIC},
-#endif
-#ifdef O_EDIT
- {"Edit", O_EDIT},
-#endif
-#ifdef O_WRAP
- {"Wrap", O_WRAP},
-#endif
-#ifdef O_BLANK
- {"Blank", O_BLANK},
-#endif
-#ifdef O_AUTOSKIP
- {"Auto_Skip", O_AUTOSKIP},
-#endif
-#ifdef O_NULLOK
- {"Null_Ok", O_NULLOK},
-#endif
-#ifdef O_PASSOK
- {"Pass_Ok", O_PASSOK},
-#endif
-#ifdef O_STATIC
- {"Static", O_STATIC},
-#endif
- {(char *)0, 0}
- };
+ if (KEY_MIN == 256)
+ my_error("unexpected value for KEY_MIN: 256");
- gen_reps(nap, name, sizeof(Field_Options),
- little_endian ? 0 : sizeof(nap[0].attr) - sizeof(Field_Options));
-}
+ if (argc != 2)
+ my_error("Only one argument expected (DFT_ARG_SUFFIX)");
-/*
- * Generate a single key code constant definition.
- */
-static void
-keydef(const char *name, const char *old_name, int value, int mode)
-{
- if (mode == 0) /* Generate the new name */
- printf(" %-30s : constant Special_Key_Code := 8#%3o#;\n", name, value);
- else
- {
- const char *s = old_name;
- const char *t = name;
+ printf("-- Generated by the C program %s (source " __FILE__ ").\n",
+ my_program_invocation_name);
+ printf("-- Do not edit this file directly.\n");
+ printf("-- The values provided here may vary on your system.\n");
+ printf("\n");
+ printf("with System;\n");
+ printf("package Terminal_Interface.Curses_Constants is\n");
+ printf(" pragma Pure;\n");
+ printf("\n");
- /* generate the old name, but only if it doesn't conflict with the old
- * name (Ada95 isn't case sensitive!)
- */
- while (*s && *t && (toupper(UChar(*s++)) == toupper(UChar(*t++))));
- if (*s || *t)
- printf(" %-16s : Special_Key_Code renames %s;\n", old_name, name);
- }
-}
+ printf(" DFT_ARG_SUFFIX : constant String := \"%s\";\n", argv[1]);
+ printf(" Bit_Order : constant System.Bit_Order := System.%s_Order_First;\n",
+ little_endian ? "Low" : "High");
+ print_constant("Sizeof_Bool", 8 * sizeof(bool));
-/*
- * Generate constants for the key codes. When called with mode==0, a
- * complete list with nice constant names in proper casing style will
- * be generated. Otherwise a list of old (i.e. C-style) names will be
- * generated, given that the name wasn't already defined in the "nice"
- * list.
- */
-static void
-gen_keydefs(int mode)
-{
- char buf[16];
- char obuf[16];
- int i;
+ PRINT_NAMED_CONSTANT(OK);
+ PRINT_NAMED_CONSTANT(ERR);
+ printf(" pragma Warnings (Off); -- redefinition of Standard.True and False\n");
+ PRINT_NAMED_CONSTANT(TRUE);
+ PRINT_NAMED_CONSTANT(FALSE);
+ printf(" pragma Warnings (On);\n");
+ print_comment("Version of the ncurses library from extensions(3NCURSES)");
+ PRINT_NAMED_CONSTANT(NCURSES_VERSION_MAJOR);
+ PRINT_NAMED_CONSTANT(NCURSES_VERSION_MINOR);
+ printf(" Version : constant String := \"%d.%d\";\n",
+ NCURSES_VERSION_MAJOR, NCURSES_VERSION_MINOR);
+
+ print_comment("Character non-color attributes from attr(3NCURSES)");
+ printf(" -- attr_t and chtype may be signed in C.\n");
+ printf(" type attr_t is mod 2 ** %lu;\n", (long unsigned)(8 * sizeof(attr_t)));
+ PRINT_NAMED_BITMASK(attr_t, A_CHARTEXT);
+ PRINT_NAMED_BITMASK(attr_t, A_COLOR);
+ PRINT_BITMASK(attr_t, "Attr", A_ATTRIBUTES & ~A_COLOR);
+ PRINT_NAMED_BITMASK(attr_t, A_STANDOUT);
+ PRINT_NAMED_BITMASK(attr_t, A_UNDERLINE);
+ PRINT_NAMED_BITMASK(attr_t, A_REVERSE);
+ PRINT_NAMED_BITMASK(attr_t, A_BLINK);
+ PRINT_NAMED_BITMASK(attr_t, A_DIM);
+ PRINT_NAMED_BITMASK(attr_t, A_BOLD);
+ PRINT_NAMED_BITMASK(attr_t, A_PROTECT);
+ PRINT_NAMED_BITMASK(attr_t, A_INVIS);
+ PRINT_NAMED_BITMASK(attr_t, A_ALTCHARSET);
+ PRINT_NAMED_BITMASK(attr_t, A_HORIZONTAL);
+ PRINT_NAMED_BITMASK(attr_t, A_LEFT);
+ PRINT_NAMED_BITMASK(attr_t, A_LOW);
+ PRINT_NAMED_BITMASK(attr_t, A_RIGHT);
+ PRINT_NAMED_BITMASK(attr_t, A_TOP);
+ PRINT_NAMED_BITMASK(attr_t, A_VERTICAL);
+ print_constant("chtype_Size", 8 * sizeof(chtype));
+
+ print_comment("predefined color numbers from color(3NCURSES)");
+ PRINT_NAMED_CONSTANT(COLOR_BLACK);
+ PRINT_NAMED_CONSTANT(COLOR_RED);
+ PRINT_NAMED_CONSTANT(COLOR_GREEN);
+ PRINT_NAMED_CONSTANT(COLOR_YELLOW);
+ PRINT_NAMED_CONSTANT(COLOR_BLUE);
+ PRINT_NAMED_CONSTANT(COLOR_MAGENTA);
+ PRINT_NAMED_CONSTANT(COLOR_CYAN);
+ PRINT_NAMED_CONSTANT(COLOR_WHITE);
+
+ print_comment("ETI return codes from ncurses.h");
+ PRINT_NAMED_CONSTANT(E_OK);
+ PRINT_NAMED_CONSTANT(E_SYSTEM_ERROR);
+ PRINT_NAMED_CONSTANT(E_BAD_ARGUMENT);
+ PRINT_NAMED_CONSTANT(E_POSTED);
+ PRINT_NAMED_CONSTANT(E_CONNECTED);
+ PRINT_NAMED_CONSTANT(E_BAD_STATE);
+ PRINT_NAMED_CONSTANT(E_NO_ROOM);
+ PRINT_NAMED_CONSTANT(E_NOT_POSTED);
+ PRINT_NAMED_CONSTANT(E_UNKNOWN_COMMAND);
+ PRINT_NAMED_CONSTANT(E_NO_MATCH);
+ PRINT_NAMED_CONSTANT(E_NOT_SELECTABLE);
+ PRINT_NAMED_CONSTANT(E_NOT_CONNECTED);
+ PRINT_NAMED_CONSTANT(E_REQUEST_DENIED);
+ PRINT_NAMED_CONSTANT(E_INVALID_FIELD);
+ PRINT_NAMED_CONSTANT(E_CURRENT);
+
+ print_comment("Input key codes not defined in any ncurses manpage");
+ PRINT_NAMED_CONSTANT(KEY_MIN);
+ PRINT_NAMED_CONSTANT(KEY_MAX);
#ifdef KEY_CODE_YES
- keydef("Key_Code_Yes", "KEY_CODE_YES", KEY_CODE_YES, mode);
-#endif
-#ifdef KEY_MIN
- keydef("Key_Min", "KEY_MIN", KEY_MIN, mode);
-#endif
-#ifdef KEY_BREAK
- keydef("Key_Break", "KEY_BREAK", KEY_BREAK, mode);
-#endif
-#ifdef KEY_DOWN
- keydef("Key_Cursor_Down", "KEY_DOWN", KEY_DOWN, mode);
-#endif
-#ifdef KEY_UP
- keydef("Key_Cursor_Up", "KEY_UP", KEY_UP, mode);
-#endif
-#ifdef KEY_LEFT
- keydef("Key_Cursor_Left", "KEY_LEFT", KEY_LEFT, mode);
-#endif
-#ifdef KEY_RIGHT
- keydef("Key_Cursor_Right", "KEY_RIGHT", KEY_RIGHT, mode);
-#endif
-#ifdef KEY_HOME
- keydef("Key_Home", "KEY_HOME", KEY_HOME, mode);
-#endif
-#ifdef KEY_BACKSPACE
- keydef("Key_Backspace", "KEY_BACKSPACE", KEY_BACKSPACE, mode);
-#endif
-#ifdef KEY_F0
- keydef("Key_F0", "KEY_F0", KEY_F0, mode);
-#endif
-#ifdef KEY_F
- for (i = 1; i <= 24; i++)
- {
- sprintf(buf, "Key_F%d", i);
- sprintf(obuf, "KEY_F%d", i);
- keydef(buf, obuf, KEY_F(i), mode);
- }
-#endif
-#ifdef KEY_DL
- keydef("Key_Delete_Line", "KEY_DL", KEY_DL, mode);
-#endif
-#ifdef KEY_IL
- keydef("Key_Insert_Line", "KEY_IL", KEY_IL, mode);
-#endif
-#ifdef KEY_DC
- keydef("Key_Delete_Char", "KEY_DC", KEY_DC, mode);
-#endif
-#ifdef KEY_IC
- keydef("Key_Insert_Char", "KEY_IC", KEY_IC, mode);
-#endif
-#ifdef KEY_EIC
- keydef("Key_Exit_Insert_Mode", "KEY_EIC", KEY_EIC, mode);
-#endif
-#ifdef KEY_CLEAR
- keydef("Key_Clear_Screen", "KEY_CLEAR", KEY_CLEAR, mode);
-#endif
-#ifdef KEY_EOS
- keydef("Key_Clear_End_Of_Screen", "KEY_EOS", KEY_EOS, mode);
-#endif
-#ifdef KEY_EOL
- keydef("Key_Clear_End_Of_Line", "KEY_EOL", KEY_EOL, mode);
-#endif
-#ifdef KEY_SF
- keydef("Key_Scroll_1_Forward", "KEY_SF", KEY_SF, mode);
-#endif
-#ifdef KEY_SR
- keydef("Key_Scroll_1_Backward", "KEY_SR", KEY_SR, mode);
-#endif
-#ifdef KEY_NPAGE
- keydef("Key_Next_Page", "KEY_NPAGE", KEY_NPAGE, mode);
-#endif
-#ifdef KEY_PPAGE
- keydef("Key_Previous_Page", "KEY_PPAGE", KEY_PPAGE, mode);
-#endif
-#ifdef KEY_STAB
- keydef("Key_Set_Tab", "KEY_STAB", KEY_STAB, mode);
-#endif
-#ifdef KEY_CTAB
- keydef("Key_Clear_Tab", "KEY_CTAB", KEY_CTAB, mode);
-#endif
-#ifdef KEY_CATAB
- keydef("Key_Clear_All_Tabs", "KEY_CATAB", KEY_CATAB, mode);
-#endif
-#ifdef KEY_ENTER
- keydef("Key_Enter_Or_Send", "KEY_ENTER", KEY_ENTER, mode);
-#endif
-#ifdef KEY_SRESET
- keydef("Key_Soft_Reset", "KEY_SRESET", KEY_SRESET, mode);
-#endif
-#ifdef KEY_RESET
- keydef("Key_Reset", "KEY_RESET", KEY_RESET, mode);
-#endif
-#ifdef KEY_PRINT
- keydef("Key_Print", "KEY_PRINT", KEY_PRINT, mode);
-#endif
-#ifdef KEY_LL
- keydef("Key_Bottom", "KEY_LL", KEY_LL, mode);
-#endif
-#ifdef KEY_A1
- keydef("Key_Upper_Left_Of_Keypad", "KEY_A1", KEY_A1, mode);
-#endif
-#ifdef KEY_A3
- keydef("Key_Upper_Right_Of_Keypad", "KEY_A3", KEY_A3, mode);
-#endif
-#ifdef KEY_B2
- keydef("Key_Center_Of_Keypad", "KEY_B2", KEY_B2, mode);
-#endif
-#ifdef KEY_C1
- keydef("Key_Lower_Left_Of_Keypad", "KEY_C1", KEY_C1, mode);
-#endif
-#ifdef KEY_C3
- keydef("Key_Lower_Right_Of_Keypad", "KEY_C3", KEY_C3, mode);
-#endif
-#ifdef KEY_BTAB
- keydef("Key_Back_Tab", "KEY_BTAB", KEY_BTAB, mode);
-#endif
-#ifdef KEY_BEG
- keydef("Key_Beginning", "KEY_BEG", KEY_BEG, mode);
-#endif
-#ifdef KEY_CANCEL
- keydef("Key_Cancel", "KEY_CANCEL", KEY_CANCEL, mode);
-#endif
-#ifdef KEY_CLOSE
- keydef("Key_Close", "KEY_CLOSE", KEY_CLOSE, mode);
-#endif
-#ifdef KEY_COMMAND
- keydef("Key_Command", "KEY_COMMAND", KEY_COMMAND, mode);
-#endif
-#ifdef KEY_COPY
- keydef("Key_Copy", "KEY_COPY", KEY_COPY, mode);
-#endif
-#ifdef KEY_CREATE
- keydef("Key_Create", "KEY_CREATE", KEY_CREATE, mode);
-#endif
-#ifdef KEY_END
- keydef("Key_End", "KEY_END", KEY_END, mode);
-#endif
-#ifdef KEY_EXIT
- keydef("Key_Exit", "KEY_EXIT", KEY_EXIT, mode);
-#endif
-#ifdef KEY_FIND
- keydef("Key_Find", "KEY_FIND", KEY_FIND, mode);
-#endif
-#ifdef KEY_HELP
- keydef("Key_Help", "KEY_HELP", KEY_HELP, mode);
-#endif
-#ifdef KEY_MARK
- keydef("Key_Mark", "KEY_MARK", KEY_MARK, mode);
-#endif
-#ifdef KEY_MESSAGE
- keydef("Key_Message", "KEY_MESSAGE", KEY_MESSAGE, mode);
-#endif
-#ifdef KEY_MOVE
- keydef("Key_Move", "KEY_MOVE", KEY_MOVE, mode);
-#endif
-#ifdef KEY_NEXT
- keydef("Key_Next", "KEY_NEXT", KEY_NEXT, mode);
-#endif
-#ifdef KEY_OPEN
- keydef("Key_Open", "KEY_OPEN", KEY_OPEN, mode);
-#endif
-#ifdef KEY_OPTIONS
- keydef("Key_Options", "KEY_OPTIONS", KEY_OPTIONS, mode);
-#endif
-#ifdef KEY_PREVIOUS
- keydef("Key_Previous", "KEY_PREVIOUS", KEY_PREVIOUS, mode);
-#endif
-#ifdef KEY_REDO
- keydef("Key_Redo", "KEY_REDO", KEY_REDO, mode);
-#endif
-#ifdef KEY_REFERENCE
- keydef("Key_Reference", "KEY_REFERENCE", KEY_REFERENCE, mode);
-#endif
-#ifdef KEY_REFRESH
- keydef("Key_Refresh", "KEY_REFRESH", KEY_REFRESH, mode);
-#endif
-#ifdef KEY_REPLACE
- keydef("Key_Replace", "KEY_REPLACE", KEY_REPLACE, mode);
-#endif
-#ifdef KEY_RESTART
- keydef("Key_Restart", "KEY_RESTART", KEY_RESTART, mode);
-#endif
-#ifdef KEY_RESUME
- keydef("Key_Resume", "KEY_RESUME", KEY_RESUME, mode);
-#endif
-#ifdef KEY_SAVE
- keydef("Key_Save", "KEY_SAVE", KEY_SAVE, mode);
-#endif
-#ifdef KEY_SBEG
- keydef("Key_Shift_Begin", "KEY_SBEG", KEY_SBEG, mode);
-#endif
-#ifdef KEY_SCANCEL
- keydef("Key_Shift_Cancel", "KEY_SCANCEL", KEY_SCANCEL, mode);
-#endif
-#ifdef KEY_SCOMMAND
- keydef("Key_Shift_Command", "KEY_SCOMMAND", KEY_SCOMMAND, mode);
-#endif
-#ifdef KEY_SCOPY
- keydef("Key_Shift_Copy", "KEY_SCOPY", KEY_SCOPY, mode);
-#endif
-#ifdef KEY_SCREATE
- keydef("Key_Shift_Create", "KEY_SCREATE", KEY_SCREATE, mode);
-#endif
-#ifdef KEY_SDC
- keydef("Key_Shift_Delete_Char", "KEY_SDC", KEY_SDC, mode);
-#endif
-#ifdef KEY_SDL
- keydef("Key_Shift_Delete_Line", "KEY_SDL", KEY_SDL, mode);
-#endif
-#ifdef KEY_SELECT
- keydef("Key_Select", "KEY_SELECT", KEY_SELECT, mode);
-#endif
-#ifdef KEY_SEND
- keydef("Key_Shift_End", "KEY_SEND", KEY_SEND, mode);
-#endif
-#ifdef KEY_SEOL
- keydef("Key_Shift_Clear_End_Of_Line", "KEY_SEOL", KEY_SEOL, mode);
-#endif
-#ifdef KEY_SEXIT
- keydef("Key_Shift_Exit", "KEY_SEXIT", KEY_SEXIT, mode);
-#endif
-#ifdef KEY_SFIND
- keydef("Key_Shift_Find", "KEY_SFIND", KEY_SFIND, mode);
-#endif
-#ifdef KEY_SHELP
- keydef("Key_Shift_Help", "KEY_SHELP", KEY_SHELP, mode);
-#endif
-#ifdef KEY_SHOME
- keydef("Key_Shift_Home", "KEY_SHOME", KEY_SHOME, mode);
-#endif
-#ifdef KEY_SIC
- keydef("Key_Shift_Insert_Char", "KEY_SIC", KEY_SIC, mode);
-#endif
-#ifdef KEY_SLEFT
- keydef("Key_Shift_Cursor_Left", "KEY_SLEFT", KEY_SLEFT, mode);
-#endif
-#ifdef KEY_SMESSAGE
- keydef("Key_Shift_Message", "KEY_SMESSAGE", KEY_SMESSAGE, mode);
-#endif
-#ifdef KEY_SMOVE
- keydef("Key_Shift_Move", "KEY_SMOVE", KEY_SMOVE, mode);
-#endif
-#ifdef KEY_SNEXT
- keydef("Key_Shift_Next_Page", "KEY_SNEXT", KEY_SNEXT, mode);
-#endif
-#ifdef KEY_SOPTIONS
- keydef("Key_Shift_Options", "KEY_SOPTIONS", KEY_SOPTIONS, mode);
-#endif
-#ifdef KEY_SPREVIOUS
- keydef("Key_Shift_Previous_Page", "KEY_SPREVIOUS", KEY_SPREVIOUS, mode);
-#endif
-#ifdef KEY_SPRINT
- keydef("Key_Shift_Print", "KEY_SPRINT", KEY_SPRINT, mode);
-#endif
-#ifdef KEY_SREDO
- keydef("Key_Shift_Redo", "KEY_SREDO", KEY_SREDO, mode);
-#endif
-#ifdef KEY_SREPLACE
- keydef("Key_Shift_Replace", "KEY_SREPLACE", KEY_SREPLACE, mode);
-#endif
-#ifdef KEY_SRIGHT
- keydef("Key_Shift_Cursor_Right", "KEY_SRIGHT", KEY_SRIGHT, mode);
-#endif
-#ifdef KEY_SRSUME
- keydef("Key_Shift_Resume", "KEY_SRSUME", KEY_SRSUME, mode);
-#endif
-#ifdef KEY_SSAVE
- keydef("Key_Shift_Save", "KEY_SSAVE", KEY_SSAVE, mode);
-#endif
-#ifdef KEY_SSUSPEND
- keydef("Key_Shift_Suspend", "KEY_SSUSPEND", KEY_SSUSPEND, mode);
-#endif
-#ifdef KEY_SUNDO
- keydef("Key_Shift_Undo", "KEY_SUNDO", KEY_SUNDO, mode);
-#endif
-#ifdef KEY_SUSPEND
- keydef("Key_Suspend", "KEY_SUSPEND", KEY_SUSPEND, mode);
-#endif
-#ifdef KEY_UNDO
- keydef("Key_Undo", "KEY_UNDO", KEY_UNDO, mode);
-#endif
-#ifdef KEY_MOUSE
- keydef("Key_Mouse", "KEY_MOUSE", KEY_MOUSE, mode);
-#endif
-#ifdef KEY_RESIZE
- keydef("Key_Resize", "KEY_RESIZE", KEY_RESIZE, mode);
-#endif
-}
-
-/*
- * Generate a constant with the given name. The second parameter
- * is a reference to the ACS character in the acs_map[] array and
- * will be translated into an index.
- */
-static void
-acs_def(const char *name, chtype *a)
-{
- int c = (int)(a - &acs_map[0]);
-
- printf(" %-24s : constant Character := ", name);
- if (isprint(UChar(c)) && (c != '`'))
- printf("'%c';\n", c);
- else
- printf("Character'Val (%d);\n", c);
-}
-
-/*
- * Generate the constants for the ACS characters
- */
-static void
-gen_acs(void)
-{
- printf(" type C_ACS_Map is array (Character'Val (0) .. Character'Val (127))\n");
- printf(" of Attributed_Character;\n");
-#if USE_REENTRANT || BROKEN_LINKER
- printf(" type C_ACS_Ptr is access C_ACS_Map;\n");
- printf(" function ACS_Map return C_ACS_Ptr;\n");
- printf(" pragma Import (C, ACS_Map, \""
- NCURSES_WRAP_PREFIX
- "acs_map\");\n");
-#else
- printf(" ACS_Map : C_ACS_Map;\n");
- printf(" pragma Import (C, ACS_Map, \"acs_map\");\n");
-#endif
- printf(" --\n");
- printf(" --\n");
- printf(" -- Constants for several characters from the Alternate Character Set\n");
- printf(" -- You must use these constants as indices into the ACS_Map array\n");
- printf(" -- to get the corresponding attributed character at runtime.\n");
- printf(" --\n");
-
-#ifdef ACS_ULCORNER
- acs_def("ACS_Upper_Left_Corner", &ACS_ULCORNER);
-#endif
-#ifdef ACS_LLCORNER
- acs_def("ACS_Lower_Left_Corner", &ACS_LLCORNER);
-#endif
-#ifdef ACS_URCORNER
- acs_def("ACS_Upper_Right_Corner", &ACS_URCORNER);
-#endif
-#ifdef ACS_LRCORNER
- acs_def("ACS_Lower_Right_Corner", &ACS_LRCORNER);
-#endif
-#ifdef ACS_LTEE
- acs_def("ACS_Left_Tee", &ACS_LTEE);
-#endif
-#ifdef ACS_RTEE
- acs_def("ACS_Right_Tee", &ACS_RTEE);
-#endif
-#ifdef ACS_BTEE
- acs_def("ACS_Bottom_Tee", &ACS_BTEE);
-#endif
-#ifdef ACS_TTEE
- acs_def("ACS_Top_Tee", &ACS_TTEE);
-#endif
-#ifdef ACS_HLINE
- acs_def("ACS_Horizontal_Line", &ACS_HLINE);
-#endif
-#ifdef ACS_VLINE
- acs_def("ACS_Vertical_Line", &ACS_VLINE);
-#endif
-#ifdef ACS_PLUS
- acs_def("ACS_Plus_Symbol", &ACS_PLUS);
-#endif
-#ifdef ACS_S1
- acs_def("ACS_Scan_Line_1", &ACS_S1);
-#endif
-#ifdef ACS_S9
- acs_def("ACS_Scan_Line_9", &ACS_S9);
-#endif
-#ifdef ACS_DIAMOND
- acs_def("ACS_Diamond", &ACS_DIAMOND);
-#endif
-#ifdef ACS_CKBOARD
- acs_def("ACS_Checker_Board", &ACS_CKBOARD);
-#endif
-#ifdef ACS_DEGREE
- acs_def("ACS_Degree", &ACS_DEGREE);
-#endif
-#ifdef ACS_PLMINUS
- acs_def("ACS_Plus_Minus", &ACS_PLMINUS);
-#endif
-#ifdef ACS_BULLET
- acs_def("ACS_Bullet", &ACS_BULLET);
-#endif
-#ifdef ACS_LARROW
- acs_def("ACS_Left_Arrow", &ACS_LARROW);
-#endif
-#ifdef ACS_RARROW
- acs_def("ACS_Right_Arrow", &ACS_RARROW);
-#endif
-#ifdef ACS_DARROW
- acs_def("ACS_Down_Arrow", &ACS_DARROW);
-#endif
-#ifdef ACS_UARROW
- acs_def("ACS_Up_Arrow", &ACS_UARROW);
-#endif
-#ifdef ACS_BOARD
- acs_def("ACS_Board_Of_Squares", &ACS_BOARD);
-#endif
-#ifdef ACS_LANTERN
- acs_def("ACS_Lantern", &ACS_LANTERN);
-#endif
-#ifdef ACS_BLOCK
- acs_def("ACS_Solid_Block", &ACS_BLOCK);
-#endif
-#ifdef ACS_S3
- acs_def("ACS_Scan_Line_3", &ACS_S3);
-#endif
-#ifdef ACS_S7
- acs_def("ACS_Scan_Line_7", &ACS_S7);
-#endif
-#ifdef ACS_LEQUAL
- acs_def("ACS_Less_Or_Equal", &ACS_LEQUAL);
-#endif
-#ifdef ACS_GEQUAL
- acs_def("ACS_Greater_Or_Equal", &ACS_GEQUAL);
-#endif
-#ifdef ACS_PI
- acs_def("ACS_PI", &ACS_PI);
-#endif
-#ifdef ACS_NEQUAL
- acs_def("ACS_Not_Equal", &ACS_NEQUAL);
-#endif
-#ifdef ACS_STERLING
- acs_def("ACS_Sterling", &ACS_STERLING);
-#endif
-}
-
-#define GEN_EVENT(name,value) \
- printf(" %-25s : constant Event_Mask := 8#%011lo#;\n", \
- #name, value)
-
-#define GEN_MEVENT(name) \
- printf(" %-25s : constant Event_Mask := 8#%011lo#;\n", \
- #name, name)
-
-static void
-gen_mouse_events(void)
-{
- mmask_t all1 = 0;
- mmask_t all2 = 0;
- mmask_t all3 = 0;
- mmask_t all4 = 0;
-
-#ifdef BUTTON1_RELEASED
- GEN_MEVENT(BUTTON1_RELEASED);
- all1 |= BUTTON1_RELEASED;
-#endif
-#ifdef BUTTON1_PRESSED
- GEN_MEVENT(BUTTON1_PRESSED);
- all1 |= BUTTON1_PRESSED;
-#endif
-#ifdef BUTTON1_CLICKED
- GEN_MEVENT(BUTTON1_CLICKED);
- all1 |= BUTTON1_CLICKED;
-#endif
-#ifdef BUTTON1_DOUBLE_CLICKED
- GEN_MEVENT(BUTTON1_DOUBLE_CLICKED);
- all1 |= BUTTON1_DOUBLE_CLICKED;
-#endif
-#ifdef BUTTON1_TRIPLE_CLICKED
- GEN_MEVENT(BUTTON1_TRIPLE_CLICKED);
- all1 |= BUTTON1_TRIPLE_CLICKED;
-#endif
+ PRINT_NAMED_CONSTANT(KEY_CODE_YES);
+#endif
+
+ print_comment("Input key codes from getch(3NCURSES)");
+ PRINT_NAMED_CONSTANT(KEY_BREAK);
+ PRINT_NAMED_CONSTANT(KEY_DOWN);
+ PRINT_NAMED_CONSTANT(KEY_UP);
+ PRINT_NAMED_CONSTANT(KEY_LEFT);
+ PRINT_NAMED_CONSTANT(KEY_RIGHT);
+ PRINT_NAMED_CONSTANT(KEY_HOME);
+ PRINT_NAMED_CONSTANT(KEY_BACKSPACE);
+ PRINT_NAMED_CONSTANT(KEY_F0);
+ print_constant("KEY_F1", KEY_F(1));
+ print_constant("KEY_F2", KEY_F(2));
+ print_constant("KEY_F3", KEY_F(3));
+ print_constant("KEY_F4", KEY_F(4));
+ print_constant("KEY_F5", KEY_F(5));
+ print_constant("KEY_F6", KEY_F(6));
+ print_constant("KEY_F7", KEY_F(7));
+ print_constant("KEY_F8", KEY_F(8));
+ print_constant("KEY_F9", KEY_F(9));
+ print_constant("KEY_F10", KEY_F(10));
+ print_constant("KEY_F11", KEY_F(11));
+ print_constant("KEY_F12", KEY_F(12));
+ print_constant("KEY_F13", KEY_F(13));
+ print_constant("KEY_F14", KEY_F(14));
+ print_constant("KEY_F15", KEY_F(15));
+ print_constant("KEY_F16", KEY_F(16));
+ print_constant("KEY_F17", KEY_F(17));
+ print_constant("KEY_F18", KEY_F(18));
+ print_constant("KEY_F19", KEY_F(19));
+ print_constant("KEY_F20", KEY_F(20));
+ print_constant("KEY_F21", KEY_F(21));
+ print_constant("KEY_F22", KEY_F(22));
+ print_constant("KEY_F23", KEY_F(23));
+ print_constant("KEY_F24", KEY_F(24));
+ PRINT_NAMED_CONSTANT(KEY_DL);
+ PRINT_NAMED_CONSTANT(KEY_IL);
+ PRINT_NAMED_CONSTANT(KEY_DC);
+ PRINT_NAMED_CONSTANT(KEY_IC);
+ PRINT_NAMED_CONSTANT(KEY_EIC);
+ PRINT_NAMED_CONSTANT(KEY_CLEAR);
+ PRINT_NAMED_CONSTANT(KEY_EOS);
+ PRINT_NAMED_CONSTANT(KEY_EOL);
+ PRINT_NAMED_CONSTANT(KEY_SF);
+ PRINT_NAMED_CONSTANT(KEY_SR);
+ PRINT_NAMED_CONSTANT(KEY_NPAGE);
+ PRINT_NAMED_CONSTANT(KEY_PPAGE);
+ PRINT_NAMED_CONSTANT(KEY_STAB);
+ PRINT_NAMED_CONSTANT(KEY_CTAB);
+ PRINT_NAMED_CONSTANT(KEY_CATAB);
+ PRINT_NAMED_CONSTANT(KEY_ENTER);
+ PRINT_NAMED_CONSTANT(KEY_SRESET);
+ PRINT_NAMED_CONSTANT(KEY_RESET);
+ PRINT_NAMED_CONSTANT(KEY_PRINT);
+ PRINT_NAMED_CONSTANT(KEY_LL);
+ PRINT_NAMED_CONSTANT(KEY_A1);
+ PRINT_NAMED_CONSTANT(KEY_A3);
+ PRINT_NAMED_CONSTANT(KEY_B2);
+ PRINT_NAMED_CONSTANT(KEY_C1);
+ PRINT_NAMED_CONSTANT(KEY_C3);
+ PRINT_NAMED_CONSTANT(KEY_BTAB);
+ PRINT_NAMED_CONSTANT(KEY_BEG);
+ PRINT_NAMED_CONSTANT(KEY_CANCEL);
+ PRINT_NAMED_CONSTANT(KEY_CLOSE);
+ PRINT_NAMED_CONSTANT(KEY_COMMAND);
+ PRINT_NAMED_CONSTANT(KEY_COPY);
+ PRINT_NAMED_CONSTANT(KEY_CREATE);
+ PRINT_NAMED_CONSTANT(KEY_END);
+ PRINT_NAMED_CONSTANT(KEY_EXIT);
+ PRINT_NAMED_CONSTANT(KEY_FIND);
+ PRINT_NAMED_CONSTANT(KEY_HELP);
+ PRINT_NAMED_CONSTANT(KEY_MARK);
+ PRINT_NAMED_CONSTANT(KEY_MESSAGE);
+ PRINT_NAMED_CONSTANT(KEY_MOVE);
+ PRINT_NAMED_CONSTANT(KEY_NEXT);
+ PRINT_NAMED_CONSTANT(KEY_OPEN);
+ PRINT_NAMED_CONSTANT(KEY_OPTIONS);
+ PRINT_NAMED_CONSTANT(KEY_PREVIOUS);
+ PRINT_NAMED_CONSTANT(KEY_REDO);
+ PRINT_NAMED_CONSTANT(KEY_REFERENCE);
+ PRINT_NAMED_CONSTANT(KEY_REFRESH);
+ PRINT_NAMED_CONSTANT(KEY_REPLACE);
+ PRINT_NAMED_CONSTANT(KEY_RESTART);
+ PRINT_NAMED_CONSTANT(KEY_RESUME);
+ PRINT_NAMED_CONSTANT(KEY_SAVE);
+ PRINT_NAMED_CONSTANT(KEY_SBEG);
+ PRINT_NAMED_CONSTANT(KEY_SCANCEL);
+ PRINT_NAMED_CONSTANT(KEY_SCOMMAND);
+ PRINT_NAMED_CONSTANT(KEY_SCOPY);
+ PRINT_NAMED_CONSTANT(KEY_SCREATE);
+ PRINT_NAMED_CONSTANT(KEY_SDC);
+ PRINT_NAMED_CONSTANT(KEY_SDL);
+ PRINT_NAMED_CONSTANT(KEY_SELECT);
+ PRINT_NAMED_CONSTANT(KEY_SEND);
+ PRINT_NAMED_CONSTANT(KEY_SEOL);
+ PRINT_NAMED_CONSTANT(KEY_SEXIT);
+ PRINT_NAMED_CONSTANT(KEY_SFIND);
+ PRINT_NAMED_CONSTANT(KEY_SHELP);
+ PRINT_NAMED_CONSTANT(KEY_SHOME);
+ PRINT_NAMED_CONSTANT(KEY_SIC);
+ PRINT_NAMED_CONSTANT(KEY_SLEFT);
+ PRINT_NAMED_CONSTANT(KEY_SMESSAGE);
+ PRINT_NAMED_CONSTANT(KEY_SMOVE);
+ PRINT_NAMED_CONSTANT(KEY_SNEXT);
+ PRINT_NAMED_CONSTANT(KEY_SOPTIONS);
+ PRINT_NAMED_CONSTANT(KEY_SPREVIOUS);
+ PRINT_NAMED_CONSTANT(KEY_SPRINT);
+ PRINT_NAMED_CONSTANT(KEY_SREDO);
+ PRINT_NAMED_CONSTANT(KEY_SREPLACE);
+ PRINT_NAMED_CONSTANT(KEY_SRIGHT);
+ PRINT_NAMED_CONSTANT(KEY_SRSUME);
+ PRINT_NAMED_CONSTANT(KEY_SSAVE);
+ PRINT_NAMED_CONSTANT(KEY_SSUSPEND);
+ PRINT_NAMED_CONSTANT(KEY_SUNDO);
+ PRINT_NAMED_CONSTANT(KEY_SUSPEND);
+ PRINT_NAMED_CONSTANT(KEY_UNDO);
+ PRINT_NAMED_CONSTANT(KEY_MOUSE);
+ PRINT_NAMED_CONSTANT(KEY_RESIZE);
+
+ print_comment("alternate character codes (ACS) from addch(3NCURSES)");
+#define PRINT_ACS(name) print_constant (#name, &name - &acs_map[0])
+ PRINT_ACS(ACS_ULCORNER);
+ PRINT_ACS(ACS_LLCORNER);
+ PRINT_ACS(ACS_URCORNER);
+ PRINT_ACS(ACS_LRCORNER);
+ PRINT_ACS(ACS_LTEE);
+ PRINT_ACS(ACS_RTEE);
+ PRINT_ACS(ACS_BTEE);
+ PRINT_ACS(ACS_TTEE);
+ PRINT_ACS(ACS_HLINE);
+ PRINT_ACS(ACS_VLINE);
+ PRINT_ACS(ACS_PLUS);
+ PRINT_ACS(ACS_S1);
+ PRINT_ACS(ACS_S9);
+ PRINT_ACS(ACS_DIAMOND);
+ PRINT_ACS(ACS_CKBOARD);
+ PRINT_ACS(ACS_DEGREE);
+ PRINT_ACS(ACS_PLMINUS);
+ PRINT_ACS(ACS_BULLET);
+ PRINT_ACS(ACS_LARROW);
+ PRINT_ACS(ACS_RARROW);
+ PRINT_ACS(ACS_DARROW);
+ PRINT_ACS(ACS_UARROW);
+ PRINT_ACS(ACS_BOARD);
+ PRINT_ACS(ACS_LANTERN);
+ PRINT_ACS(ACS_BLOCK);
+ PRINT_ACS(ACS_S3);
+ PRINT_ACS(ACS_S7);
+ PRINT_ACS(ACS_LEQUAL);
+ PRINT_ACS(ACS_GEQUAL);
+ PRINT_ACS(ACS_PI);
+ PRINT_ACS(ACS_NEQUAL);
+ PRINT_ACS(ACS_STERLING);
+
+ print_comment("Menu_Options from opts(3MENU)");
+ PRINT_NAMED_BITMASK(Menu_Options, O_ONEVALUE);
+ PRINT_NAMED_BITMASK(Menu_Options, O_SHOWDESC);
+ PRINT_NAMED_BITMASK(Menu_Options, O_ROWMAJOR);
+ PRINT_NAMED_BITMASK(Menu_Options, O_IGNORECASE);
+ PRINT_NAMED_BITMASK(Menu_Options, O_SHOWMATCH);
+ PRINT_NAMED_BITMASK(Menu_Options, O_NONCYCLIC);
+ print_constant("Menu_Options_Size", 8 * sizeof(Menu_Options));
+
+ print_comment("Item_Options from menu_opts(3MENU)");
+ PRINT_NAMED_BITMASK(Item_Options, O_SELECTABLE);
+ print_constant("Item_Options_Size", 8 * sizeof(Item_Options));
+
+ print_comment("Field_Options from field_opts(3FORM)");
+ PRINT_NAMED_BITMASK(Field_Options, O_VISIBLE);
+ PRINT_NAMED_BITMASK(Field_Options, O_ACTIVE);
+ PRINT_NAMED_BITMASK(Field_Options, O_PUBLIC);
+ PRINT_NAMED_BITMASK(Field_Options, O_EDIT);
+ PRINT_NAMED_BITMASK(Field_Options, O_WRAP);
+ PRINT_NAMED_BITMASK(Field_Options, O_BLANK);
+ PRINT_NAMED_BITMASK(Field_Options, O_AUTOSKIP);
+ PRINT_NAMED_BITMASK(Field_Options, O_NULLOK);
+ PRINT_NAMED_BITMASK(Field_Options, O_PASSOK);
+ PRINT_NAMED_BITMASK(Field_Options, O_STATIC);
+ print_constant("Field_Options_Size", 8 * sizeof(Field_Options));
+
+ print_comment("Field_Options from opts(3FORM)");
+ PRINT_NAMED_BITMASK(Field_Options, O_NL_OVERLOAD);
+ PRINT_NAMED_BITMASK(Field_Options, O_BS_OVERLOAD);
+ /* Field_Options_Size is defined below */
+
+ print_comment("MEVENT structure from mouse(3NCURSES)");
+ STRUCT_OFFSET(MEVENT, id);
+ STRUCT_OFFSET(MEVENT, x);
+ STRUCT_OFFSET(MEVENT, y);
+ STRUCT_OFFSET(MEVENT, z);
+ STRUCT_OFFSET(MEVENT, bstate);
+ print_constant("MEVENT_Size", 8 * sizeof(MEVENT));
+
+ print_comment("mouse events from mouse(3NCURSES)");
+ {
+ mmask_t all_events;
+
+#define PRINT_MOUSE_EVENT(event) \
+ print_constant (#event, event); \
+ all_events |= event
+
+ all_events = 0;
+ PRINT_MOUSE_EVENT(BUTTON1_RELEASED);
+ PRINT_MOUSE_EVENT(BUTTON1_PRESSED);
+ PRINT_MOUSE_EVENT(BUTTON1_CLICKED);
+ PRINT_MOUSE_EVENT(BUTTON1_DOUBLE_CLICKED);
+ PRINT_MOUSE_EVENT(BUTTON1_TRIPLE_CLICKED);
#ifdef BUTTON1_RESERVED_EVENT
- GEN_MEVENT(BUTTON1_RESERVED_EVENT);
- all1 |= BUTTON1_RESERVED_EVENT;
-#endif
-#ifdef BUTTON2_RELEASED
- GEN_MEVENT(BUTTON2_RELEASED);
- all2 |= BUTTON2_RELEASED;
-#endif
-#ifdef BUTTON2_PRESSED
- GEN_MEVENT(BUTTON2_PRESSED);
- all2 |= BUTTON2_PRESSED;
-#endif
-#ifdef BUTTON2_CLICKED
- GEN_MEVENT(BUTTON2_CLICKED);
- all2 |= BUTTON2_CLICKED;
-#endif
-#ifdef BUTTON2_DOUBLE_CLICKED
- GEN_MEVENT(BUTTON2_DOUBLE_CLICKED);
- all2 |= BUTTON2_DOUBLE_CLICKED;
-#endif
-#ifdef BUTTON2_TRIPLE_CLICKED
- GEN_MEVENT(BUTTON2_TRIPLE_CLICKED);
- all2 |= BUTTON2_TRIPLE_CLICKED;
-#endif
-#ifdef BUTTON2_RESERVED_EVENT
- GEN_MEVENT(BUTTON2_RESERVED_EVENT);
- all2 |= BUTTON2_RESERVED_EVENT;
-#endif
-#ifdef BUTTON3_RELEASED
- GEN_MEVENT(BUTTON3_RELEASED);
- all3 |= BUTTON3_RELEASED;
-#endif
-#ifdef BUTTON3_PRESSED
- GEN_MEVENT(BUTTON3_PRESSED);
- all3 |= BUTTON3_PRESSED;
-#endif
-#ifdef BUTTON3_CLICKED
- GEN_MEVENT(BUTTON3_CLICKED);
- all3 |= BUTTON3_CLICKED;
-#endif
-#ifdef BUTTON3_DOUBLE_CLICKED
- GEN_MEVENT(BUTTON3_DOUBLE_CLICKED);
- all3 |= BUTTON3_DOUBLE_CLICKED;
-#endif
-#ifdef BUTTON3_TRIPLE_CLICKED
- GEN_MEVENT(BUTTON3_TRIPLE_CLICKED);
- all3 |= BUTTON3_TRIPLE_CLICKED;
-#endif
-#ifdef BUTTON3_RESERVED_EVENT
- GEN_MEVENT(BUTTON3_RESERVED_EVENT);
- all3 |= BUTTON3_RESERVED_EVENT;
-#endif
-#ifdef BUTTON4_RELEASED
- GEN_MEVENT(BUTTON4_RELEASED);
- all4 |= BUTTON4_RELEASED;
-#endif
-#ifdef BUTTON4_PRESSED
- GEN_MEVENT(BUTTON4_PRESSED);
- all4 |= BUTTON4_PRESSED;
-#endif
-#ifdef BUTTON4_CLICKED
- GEN_MEVENT(BUTTON4_CLICKED);
- all4 |= BUTTON4_CLICKED;
-#endif
-#ifdef BUTTON4_DOUBLE_CLICKED
- GEN_MEVENT(BUTTON4_DOUBLE_CLICKED);
- all4 |= BUTTON4_DOUBLE_CLICKED;
-#endif
-#ifdef BUTTON4_TRIPLE_CLICKED
- GEN_MEVENT(BUTTON4_TRIPLE_CLICKED);
- all4 |= BUTTON4_TRIPLE_CLICKED;
-#endif
-#ifdef BUTTON4_RESERVED_EVENT
- GEN_MEVENT(BUTTON4_RESERVED_EVENT);
- all4 |= BUTTON4_RESERVED_EVENT;
-#endif
-#ifdef BUTTON_CTRL
- GEN_MEVENT(BUTTON_CTRL);
-#endif
-#ifdef BUTTON_SHIFT
- GEN_MEVENT(BUTTON_SHIFT);
-#endif
-#ifdef BUTTON_ALT
- GEN_MEVENT(BUTTON_ALT);
+ PRINT_MOUSE_EVENT(BUTTON1_RESERVED_EVENT);
#endif
-#ifdef REPORT_MOUSE_POSITION
- GEN_MEVENT(REPORT_MOUSE_POSITION);
-#endif
-#ifdef ALL_MOUSE_EVENTS
- GEN_MEVENT(ALL_MOUSE_EVENTS);
-#endif
-
- GEN_EVENT(BUTTON1_EVENTS, all1);
- GEN_EVENT(BUTTON2_EVENTS, all2);
- GEN_EVENT(BUTTON3_EVENTS, all3);
- GEN_EVENT(BUTTON4_EVENTS, all4);
-}
-
-static void
-wrap_one_var(const char *c_var,
- const char *c_type,
- const char *ada_func,
- const char *ada_type)
-{
-#if USE_REENTRANT
- /* must wrap variables */
- printf("\n");
- printf(" function %s return %s\n", ada_func, ada_type);
- printf(" is\n");
- printf(" function Result return %s;\n", c_type);
- printf(" pragma Import (C, Result, \"" NCURSES_WRAP_PREFIX "%s\");\n", c_var);
- printf(" begin\n");
- if (strcmp(c_type, ada_type))
- printf(" return %s (Result);\n", ada_type);
- else
- printf(" return Result;\n");
- printf(" end %s;\n", ada_func);
-#else
- /* global variables are really global */
- printf("\n");
- printf(" function %s return %s\n", ada_func, ada_type);
- printf(" is\n");
- printf(" Result : %s;\n", c_type);
- printf(" pragma Import (C, Result, \"%s\");\n", c_var);
- printf(" begin\n");
- if (strcmp(c_type, ada_type))
- printf(" return %s (Result);\n", ada_type);
- else
- printf(" return Result;\n");
- printf(" end %s;\n", ada_func);
-#endif
-}
-
-#define GEN_PUBLIC_VAR(c_var, c_type, ada_func, ada_type) \
- wrap_one_var(#c_var, #c_type, #ada_func, #ada_type)
-
-static void
-gen_public_vars(void)
-{
- GEN_PUBLIC_VAR(stdscr, Window, Standard_Window, Window);
- GEN_PUBLIC_VAR(curscr, Window, Current_Window, Window);
- GEN_PUBLIC_VAR(LINES, C_Int, Lines, Line_Count);
- GEN_PUBLIC_VAR(COLS, C_Int, Columns, Column_Count);
- GEN_PUBLIC_VAR(TABSIZE, C_Int, Tab_Size, Natural);
- GEN_PUBLIC_VAR(COLORS, C_Int, Number_Of_Colors, Natural);
- GEN_PUBLIC_VAR(COLOR_PAIRS, C_Int, Number_Of_Color_Pairs, Natural);
-}
-
-/*
- * Output some comment lines indicating that the file is generated.
- * The name parameter is the name of the facility to be used in
- * the comment.
- */
-static void
-prologue(const char *name)
-{
- printf("-- %s binding.\n", name);
- printf("-- This module is generated. Please don't change it manually!\n");
- printf("-- Run the generator instead.\n-- |");
-
- printf("define(`M4_BIT_ORDER',`%s_Order_First')",
- little_endian ? "Low" : "High");
-}
+ print_constant("all_events_button_1", (long)all_events);
-/*
- * Write the prologue for the curses facility and make sure that
- * KEY_MIN and KEY_MAX are defined for the rest of this source.
- */
-static void
-basedefs(void)
-{
- prologue("curses");
-#ifndef KEY_MAX
-# define KEY_MAX 0777
-#endif
- printf("define(`M4_KEY_MAX',`8#%o#')", KEY_MAX);
-#ifndef KEY_MIN
-# define KEY_MIN 0401
+ all_events = 0;
+ PRINT_MOUSE_EVENT(BUTTON2_RELEASED);
+ PRINT_MOUSE_EVENT(BUTTON2_PRESSED);
+ PRINT_MOUSE_EVENT(BUTTON2_CLICKED);
+ PRINT_MOUSE_EVENT(BUTTON2_DOUBLE_CLICKED);
+ PRINT_MOUSE_EVENT(BUTTON2_TRIPLE_CLICKED);
+#ifdef BUTTON2_RESERVED_EVENT
+ PRINT_MOUSE_EVENT(BUTTON2_RESERVED_EVENT);
#endif
- if (KEY_MIN == 256)
- {
- fprintf(stderr, "Unexpected value for KEY_MIN: %d\n", KEY_MIN);
- exit(1);
- }
- printf("define(`M4_SPECIAL_FIRST',`8#%o#')", KEY_MIN - 1);
-}
-
-/*
- * Write out the comment lines for the menu facility
- */
-static void
-menu_basedefs(void)
-{
- prologue("menu");
-}
-
-/*
- * Write out the comment lines for the form facility
- */
-static void
-form_basedefs(void)
-{
- prologue("form");
-}
-
-/*
- * Write out the comment lines for the mouse facility
- */
-static void
-mouse_basedefs(void)
-{
- prologue("mouse");
-}
+ print_constant("all_events_button_2", (long)all_events);
-/*
- * Write the definition of a single color
- */
-static void
-color_def(const char *name, int value)
-{
- printf(" %-16s : constant Color_Number := %d;\n", name, value);
-}
-
-/*
- * Generate all color definitions
- */
-static void
-gen_color(void)
-{
-#if HAVE_USE_DEFAULT_COLORS
- color_def("Default_Color", -1);
-#endif
-#ifdef COLOR_BLACK
- color_def("Black", COLOR_BLACK);
-#endif
-#ifdef COLOR_RED
- color_def("Red", COLOR_RED);
-#endif
-#ifdef COLOR_GREEN
- color_def("Green", COLOR_GREEN);
-#endif
-#ifdef COLOR_YELLOW
- color_def("Yellow", COLOR_YELLOW);
-#endif
-#ifdef COLOR_BLUE
- color_def("Blue", COLOR_BLUE);
-#endif
-#ifdef COLOR_MAGENTA
- color_def("Magenta", COLOR_MAGENTA);
-#endif
-#ifdef COLOR_CYAN
- color_def("Cyan", COLOR_CYAN);
-#endif
-#ifdef COLOR_WHITE
- color_def("White", COLOR_WHITE);
+ all_events = 0;
+ PRINT_MOUSE_EVENT(BUTTON3_RELEASED);
+ PRINT_MOUSE_EVENT(BUTTON3_PRESSED);
+ PRINT_MOUSE_EVENT(BUTTON3_CLICKED);
+ PRINT_MOUSE_EVENT(BUTTON3_DOUBLE_CLICKED);
+ PRINT_MOUSE_EVENT(BUTTON3_TRIPLE_CLICKED);
+#ifdef BUTTON3_RESERVED_EVENT
+ PRINT_MOUSE_EVENT(BUTTON3_RESERVED_EVENT);
#endif
-}
-
-/*
- * Generate the linker options for the base facility
- */
-static void
-gen_linkopts(void)
-{
- printf(" pragma Linker_Options (\"-lncurses%s\");\n", model);
-}
+ print_constant("all_events_button_3", (long)all_events);
-/*
- * Generate the linker options for the menu facility
- */
-static void
-gen_menu_linkopts(void)
-{
- printf(" pragma Linker_Options (\"-lmenu%s\");\n", model);
-}
-
-/*
- * Generate the linker options for the form facility
- */
-static void
-gen_form_linkopts(void)
-{
- printf(" pragma Linker_Options (\"-lform%s\");\n", model);
-}
-
-/*
- * Generate the linker options for the panel facility
- */
-static void
-gen_panel_linkopts(void)
-{
- printf(" pragma Linker_Options (\"-lpanel%s\");\n", model);
-}
-
-static void
-gen_version_info(void)
-{
- static const char *v1 =
- " NC_Major_Version : constant := %d; -- Major version of the library\n";
- static const char *v2 =
- " NC_Minor_Version : constant := %d; -- Minor version of the library\n";
- static const char *v3 =
- " NC_Version : constant String := %c%d.%d%c; -- Version of library\n";
-
- printf(v1, NCURSES_VERSION_MAJOR);
- printf(v2, NCURSES_VERSION_MINOR);
- printf(v3, '"', NCURSES_VERSION_MAJOR, NCURSES_VERSION_MINOR, '"');
-}
-
-static int
-eti_gen(char *buf, int code, const char *name, int *etimin, int *etimax)
-{
- sprintf(buf, " E_%-16s : constant Eti_Error := %d;\n", name, code);
- if (code < *etimin)
- *etimin = code;
- if (code > *etimax)
- *etimax = code;
- return (int)strlen(buf);
-}
-
-static void
-gen_offsets(void)
-{
- const char *s_bool = "";
-
- if (sizeof(bool) == sizeof(char))
- {
- s_bool = "char";
- }
- else if (sizeof(bool) == sizeof(short))
- {
- s_bool = "short";
- }
- else if (sizeof(bool) == sizeof(int))
- {
- s_bool = "int";
- }
- printf(" Sizeof%-*s : constant Natural := %2ld; -- %s\n",
- 12, "_bool", (long)sizeof(bool), "bool");
-
- printf(" type Curses_Bool is mod 2 ** Interfaces.C.%s'Size;\n", s_bool);
-}
-
-/*
- * main() expects two arguments on the commandline, both single characters.
- * The first character denotes the facility for which we generate output.
- * Possible values are
- * B - Base
- * M - Menus
- * F - Forms
- * P - Pointer Device (Mouse)
- * E - ETI base definitions
- *
- * The second character then denotes the specific output that should be
- * generated for the selected facility.
- */
-int
-main(int argc, char *argv[])
-{
- int x = 0x12345678;
- char *s = (char *)&x;
-
- if (*s == 0x78)
- little_endian = 1;
-
- if (argc != 4)
- exit(1);
- model = *++argv;
-
- switch (argv[1][0])
- {
- /* --------------------------------------------------------------- */
- case 'B': /* The Base facility */
- switch (argv[2][0])
- {
- case 'A': /* chtype translation into Ada95 record type */
- gen_attr_set("Character_Attribute_Set");
- break;
- case 'B': /* write some initial comment lines */
- basedefs();
- break;
- case 'C': /* generate color constants */
- gen_color();
- break;
- case 'D': /* generate displacements of fields in WINDOW struct. */
- gen_offsets();
- break;
- case 'E': /* generate Mouse Event codes */
- gen_mouse_events();
- break;
- case 'K': /* translation of keycodes */
- gen_keydefs(0);
- break;
- case 'L': /* generate the Linker_Options pragma */
- gen_linkopts();
- break;
- case 'M': /* generate constants for the ACS characters */
- gen_acs();
- break;
- case 'O': /* generate definitions of the old key code names */
- gen_keydefs(1);
- break;
- case 'P': /* generate definitions of the public variables */
- gen_public_vars();
- break;
- case 'R': /* generate representation clause for Attributed character */
- gen_chtype_rep("Attributed_Character");
- break;
- case 'T': /* generate the Trace info */
- gen_trace("Trace_Attribute_Set");
- break;
- case 'V': /* generate version info */
- gen_version_info();
- break;
- default:
- break;
- }
- break;
- /* --------------------------------------------------------------- */
- case 'M': /* The Menu facility */
- switch (argv[2][0])
- {
- case 'R': /* generate representation clause for Menu_Option_Set */
- gen_menu_opt_rep("Menu_Option_Set");
- break;
- case 'B': /* write some initial comment lines */
- menu_basedefs();
- break;
- case 'L': /* generate the Linker_Options pragma */
- gen_menu_linkopts();
- break;
- case 'I': /* generate representation clause for Item_Option_Set */
- gen_item_opt_rep("Item_Option_Set");
- break;
- default:
- break;
- }
- break;
- /* --------------------------------------------------------------- */
- case 'F': /* The Form facility */
- switch (argv[2][0])
- {
- case 'R': /* generate representation clause for Form_Option_Set */
- gen_form_opt_rep("Form_Option_Set");
- break;
- case 'B': /* write some initial comment lines */
- form_basedefs();
- break;
- case 'L': /* generate the Linker_Options pragma */
- gen_form_linkopts();
- break;
- case 'I': /* generate representation clause for Field_Option_Set */
- gen_field_opt_rep("Field_Option_Set");
- break;
- default:
- break;
- }
- break;
- /* --------------------------------------------------------------- */
- case 'P': /* The Pointer(=Mouse) facility */
- switch (argv[2][0])
- {
- case 'B': /* write some initial comment lines */
- mouse_basedefs();
- break;
- case 'M': /* generate representation clause for Mouse_Event */
- gen_mrep_rep("Mouse_Event");
- break;
- case 'L': /* generate the Linker_Options pragma */
- gen_panel_linkopts();
- break;
- default:
- break;
- }
- break;
- /* --------------------------------------------------------------- */
- case 'E': /* chtype size detection */
- switch (argv[2][0])
- {
- case 'C':
- {
- const char *fmt = " type C_Chtype is new %s;\n";
- const char *afmt = " type C_AttrType is new %s;\n";
-
- if (sizeof(chtype) == sizeof(int))
- {
- if (sizeof(int) == sizeof(long))
- printf(fmt, "C_ULong");
-
- else
- printf(fmt, "C_UInt");
- }
- else if (sizeof(chtype) == sizeof(long))
- {
- printf(fmt, "C_ULong");
- }
- else
- printf("Error\n");
-
- if (sizeof(attr_t) == sizeof(int))
- {
- if (sizeof(int) == sizeof(long))
- printf(afmt, "C_ULong");
-
- else
- printf(afmt, "C_UInt");
- }
- else if (sizeof(attr_t) == sizeof(long))
- {
- printf(afmt, "C_ULong");
- }
- else
- printf("Error\n");
-
- printf("define(`CF_CURSES_OK',`%d')", OK);
- printf("define(`CF_CURSES_ERR',`%d')", ERR);
- printf("define(`CF_CURSES_TRUE',`%d')", TRUE);
- printf("define(`CF_CURSES_FALSE',`%d')", FALSE);
- }
- break;
- case 'E':
- {
- char *buf = (char *)malloc(2048);
- char *p = buf;
- int etimin = E_OK;
- int etimax = E_OK;
-
- if (p)
- {
- p += eti_gen(p, E_OK, "Ok", &etimin, &etimax);
- p += eti_gen(p, E_SYSTEM_ERROR, "System_Error", &etimin, &etimax);
- p += eti_gen(p, E_BAD_ARGUMENT, "Bad_Argument", &etimin, &etimax);
- p += eti_gen(p, E_POSTED, "Posted", &etimin, &etimax);
- p += eti_gen(p, E_CONNECTED, "Connected", &etimin, &etimax);
- p += eti_gen(p, E_BAD_STATE, "Bad_State", &etimin, &etimax);
- p += eti_gen(p, E_NO_ROOM, "No_Room", &etimin, &etimax);
- p += eti_gen(p, E_NOT_POSTED, "Not_Posted", &etimin, &etimax);
- p += eti_gen(p, E_UNKNOWN_COMMAND,
- "Unknown_Command", &etimin, &etimax);
- p += eti_gen(p, E_NO_MATCH, "No_Match", &etimin, &etimax);
- p += eti_gen(p, E_NOT_SELECTABLE,
- "Not_Selectable", &etimin, &etimax);
- p += eti_gen(p, E_NOT_CONNECTED,
- "Not_Connected", &etimin, &etimax);
- p += eti_gen(p, E_REQUEST_DENIED,
- "Request_Denied", &etimin, &etimax);
- p += eti_gen(p, E_INVALID_FIELD,
- "Invalid_Field", &etimin, &etimax);
- p += eti_gen(p, E_CURRENT,
- "Current", &etimin, &etimax);
- }
- printf(" subtype Eti_Error is C_Int range %d .. %d;\n\n",
- etimin, etimax);
- printf("%s", buf);
- }
- break;
- default:
- break;
- }
- break;
- /* --------------------------------------------------------------- */
- case 'V': /* plain version dump */
- {
- switch (argv[2][0])
- {
- case '1': /* major version */
-#ifdef NCURSES_VERSION_MAJOR
- printf("%d", NCURSES_VERSION_MAJOR);
-#endif
- break;
- case '2': /* minor version */
-#ifdef NCURSES_VERSION_MINOR
- printf("%d", NCURSES_VERSION_MINOR);
-#endif
- break;
- case '3': /* patch level */
-#ifdef NCURSES_VERSION_PATCH
- printf("%d", NCURSES_VERSION_PATCH);
+ all_events = 0;
+ PRINT_MOUSE_EVENT(BUTTON4_RELEASED);
+ PRINT_MOUSE_EVENT(BUTTON4_PRESSED);
+ PRINT_MOUSE_EVENT(BUTTON4_CLICKED);
+ PRINT_MOUSE_EVENT(BUTTON4_DOUBLE_CLICKED);
+ PRINT_MOUSE_EVENT(BUTTON4_TRIPLE_CLICKED);
+#ifdef BUTTON4_RESERVED_EVENT
+ PRINT_MOUSE_EVENT(BUTTON4_RESERVED_EVENT);
#endif
- break;
- default:
- break;
- }
- }
- break;
- /* --------------------------------------------------------------- */
- default:
- break;
- }
- return 0;
+ print_constant("all_events_button_4", (long)all_events);
+ }
+ PRINT_NAMED_CONSTANT(BUTTON_CTRL);
+ PRINT_NAMED_CONSTANT(BUTTON_SHIFT);
+ PRINT_NAMED_CONSTANT(BUTTON_ALT);
+ PRINT_NAMED_CONSTANT(REPORT_MOUSE_POSITION);
+ PRINT_NAMED_CONSTANT(ALL_MOUSE_EVENTS);
+
+ print_comment("trace selection from trace(3NCURSES)");
+ PRINT_NAMED_BITMASK(UINT, TRACE_TIMES);
+ PRINT_NAMED_BITMASK(UINT, TRACE_TPUTS);
+ PRINT_NAMED_BITMASK(UINT, TRACE_UPDATE);
+ PRINT_NAMED_BITMASK(UINT, TRACE_MOVE);
+ PRINT_NAMED_BITMASK(UINT, TRACE_CHARPUT);
+ PRINT_NAMED_BITMASK(UINT, TRACE_CALLS);
+ PRINT_NAMED_BITMASK(UINT, TRACE_VIRTPUT);
+ PRINT_NAMED_BITMASK(UINT, TRACE_IEVENT);
+ PRINT_NAMED_BITMASK(UINT, TRACE_BITS);
+ PRINT_NAMED_BITMASK(UINT, TRACE_ICALLS);
+ PRINT_NAMED_BITMASK(UINT, TRACE_CCALLS);
+ PRINT_NAMED_BITMASK(UINT, TRACE_DATABASE);
+ PRINT_NAMED_BITMASK(UINT, TRACE_ATTRS);
+ print_constant("Trace_Size", 8 * sizeof(UINT));
+
+ printf("end Terminal_Interface.Curses_Constants;\n");
+ exit(EXIT_SUCCESS);
}
diff --git a/Ada95/gen/html.m4 b/Ada95/gen/html.m4
index 8df2653c7ecf..76058505b3e9 100644
--- a/Ada95/gen/html.m4
+++ b/Ada95/gen/html.m4
@@ -1,5 +1,5 @@
dnl***************************************************************************
-dnl Copyright (c) 2000-2006,2007 Free Software Foundation, Inc. *
+dnl Copyright (c) 2000-2007,2019 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 *
@@ -26,7 +26,7 @@ dnl sale, use or other dealings in this Software without prior written *
dnl authorization. *
dnl***************************************************************************
dnl
-dnl $Id: html.m4,v 1.3 2007/09/01 23:59:59 tom Exp $
+dnl $Id: html.m4,v 1.4 2019/03/16 21:49:15 tom Exp $
define(`ANCHORIDX',`0')dnl
define(`MANPAGE',`define(`MANPG',$1)dnl
|=====================================================================
@@ -35,6 +35,6 @@ define(`MANPAGE',`define(`MANPG',$1)dnl
define(`ANCHOR',`define(`ANCHORIDX',incr(ANCHORIDX))dnl
`#'1A NAME="AFU`_'ANCHORIDX"`#'2dnl
define(`CFUNAME',`$1')define(`AFUNAME',`$2')dnl
-|')dnl
+|#1/A#2')dnl
define(`AKA',``AKA': <A HREF="../man/MANPG.html">CFUNAME</A>')dnl
define(`ALIAS',``AKA': $1')dnl
diff --git a/Ada95/gen/terminal_interface-curses-aux.ads.m4 b/Ada95/gen/terminal_interface-curses-aux.ads.m4
index 111ec698a493..5e3505020c66 100644
--- a/Ada95/gen/terminal_interface-curses-aux.ads.m4
+++ b/Ada95/gen/terminal_interface-curses-aux.ads.m4
@@ -10,7 +10,7 @@ include(M4MACRO)dnl
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2014,2018 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -38,20 +38,16 @@ include(M4MACRO)dnl
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.18 $
+-- $Revision: 1.24 $
-- Binding Version 01.00
------------------------------------------------------------------------------
-include(`Base_Defs')
with System;
with Interfaces.C;
with Interfaces.C.Strings; use Interfaces.C.Strings;
-with Unchecked_Conversion;
package Terminal_Interface.Curses.Aux is
pragma Preelaborate (Terminal_Interface.Curses.Aux);
- use type Interfaces.C.int;
-
subtype C_Int is Interfaces.C.int;
subtype C_Short is Interfaces.C.short;
subtype C_Long_Int is Interfaces.C.long;
@@ -60,39 +56,39 @@ package Terminal_Interface.Curses.Aux is
subtype C_ULong is Interfaces.C.unsigned_long;
subtype C_Char_Ptr is Interfaces.C.Strings.chars_ptr;
type C_Void_Ptr is new System.Address;
-include(`Chtype_Def')
+
-- This is how those constants are defined in ncurses. I see them also
-- exactly like this in all ETI implementations I ever tested. So it
-- could be that this is quite general, but please check with your curses.
-- This is critical, because curses sometime mixes Boolean returns with
-- returning an error status.
- Curses_Ok : constant C_Int := CF_CURSES_OK;
- Curses_Err : constant C_Int := CF_CURSES_ERR;
+ Curses_Ok : constant C_Int := Curses_Constants.OK;
+ Curses_Err : constant C_Int := Curses_Constants.ERR;
- Curses_True : constant C_Int := CF_CURSES_TRUE;
- Curses_False : constant C_Int := CF_CURSES_FALSE;
+ Curses_True : constant C_Int := Curses_Constants.TRUE;
+ Curses_False : constant C_Int := Curses_Constants.FALSE;
-- Eti_Error: type for error codes returned by the menu and form subsystem
-include(`Eti_Defs')
- procedure Eti_Exception (Code : Eti_Error);
- -- Dispatch the error code and raise the appropriate exception
- --
- --
- -- Some helpers
- function Chtype_To_AttrChar is new
- Unchecked_Conversion (Source => C_Chtype,
- Target => Attributed_Character);
- function AttrChar_To_Chtype is new
- Unchecked_Conversion (Source => Attributed_Character,
- Target => C_Chtype);
+ type Eti_Error is
+ (E_Current,
+ E_Invalid_Field,
+ E_Request_Denied,
+ E_Not_Connected,
+ E_Not_Selectable,
+ E_No_Match,
+ E_Unknown_Command,
+ E_Not_Posted,
+ E_No_Room,
+ E_Bad_State,
+ E_Connected,
+ E_Posted,
+ E_Bad_Argument,
+ E_System_Error,
+ E_Ok);
- function AttrChar_To_AttrType is new
- Unchecked_Conversion (Source => Attributed_Character,
- Target => C_AttrType);
-
- function AttrType_To_AttrChar is new
- Unchecked_Conversion (Source => C_AttrType,
- Target => Attributed_Character);
+ procedure Eti_Exception (Code : Eti_Error);
+ -- Do nothing if Code = E_Ok.
+ -- Else dispatch the error code and raise the appropriate exception.
procedure Fill_String (Cp : chars_ptr;
Str : out String);
@@ -102,4 +98,23 @@ include(`Eti_Defs')
function Fill_String (Cp : chars_ptr) return String;
-- Same but as function.
+private
+ for Eti_Error'Size use C_Int'Size;
+ pragma Convention (C, Eti_Error);
+ for Eti_Error use
+ (E_Current => Curses_Constants.E_CURRENT,
+ E_Invalid_Field => Curses_Constants.E_INVALID_FIELD,
+ E_Request_Denied => Curses_Constants.E_REQUEST_DENIED,
+ E_Not_Connected => Curses_Constants.E_NOT_CONNECTED,
+ E_Not_Selectable => Curses_Constants.E_NOT_SELECTABLE,
+ E_No_Match => Curses_Constants.E_NO_MATCH,
+ E_Unknown_Command => Curses_Constants.E_UNKNOWN_COMMAND,
+ E_Not_Posted => Curses_Constants.E_NOT_POSTED,
+ E_No_Room => Curses_Constants.E_NO_ROOM,
+ E_Bad_State => Curses_Constants.E_BAD_STATE,
+ E_Connected => Curses_Constants.E_CONNECTED,
+ E_Posted => Curses_Constants.E_POSTED,
+ E_Bad_Argument => Curses_Constants.E_BAD_ARGUMENT,
+ E_System_Error => Curses_Constants.E_SYSTEM_ERROR,
+ E_Ok => Curses_Constants.E_OK);
end Terminal_Interface.Curses.Aux;
diff --git a/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4 b/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4
index f9784007f461..4a179869b140 100644
--- a/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4
+++ b/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4
@@ -10,7 +10,7 @@ include(M4MACRO)dnl
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2014,2018 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -38,14 +38,14 @@ include(M4MACRO)dnl
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.17 $
+-- $Revision: 1.20 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Interfaces.C;
+with Terminal_Interface.Curses.Aux;
package Terminal_Interface.Curses.Forms.Field_Types is
pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types);
- use type Interfaces.C.int;
subtype C_Int is Interfaces.C.int;
-- MANPAGE(`form_fieldtype.3x')
@@ -227,12 +227,12 @@ private
Mak : Makearg_Function := Make_Arg'Access;
Cop : Copyarg_Function := Copy_Arg'Access;
Fre : Freearg_Function := Free_Arg'Access)
- return C_Int;
+ return Aux.Eti_Error;
pragma Import (C, Set_Fieldtype_Arg, "set_fieldtype_arg");
function Set_Fieldtype_Choice (Cft : C_Field_Type;
Next, Prev : Choice_Function)
- return C_Int;
+ return Aux.Eti_Error;
pragma Import (C, Set_Fieldtype_Choice, "set_fieldtype_choice");
end Terminal_Interface.Curses.Forms.Field_Types;
diff --git a/Ada95/gen/terminal_interface-curses-forms.ads.m4 b/Ada95/gen/terminal_interface-curses-forms.ads.m4
index a4329ba9f0cf..b269f4c447d7 100644
--- a/Ada95/gen/terminal_interface-curses-forms.ads.m4
+++ b/Ada95/gen/terminal_interface-curses-forms.ads.m4
@@ -10,7 +10,7 @@ include(M4MACRO)dnl
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2009,2014 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -38,18 +38,17 @@ include(M4MACRO)dnl
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.30 $
--- $Date: 2009/12/26 17:31:35 $
+-- $Revision: 1.33 $
+-- $Date: 2014/05/24 21:31:57 $
-- Binding Version 01.00
------------------------------------------------------------------------------
-include(`Form_Base_Defs')
with System;
with Ada.Characters.Latin_1;
package Terminal_Interface.Curses.Forms is
pragma Preelaborate (Terminal_Interface.Curses.Forms);
-include(`Form_Linker_Options')dnl
-include(`Linker_Options')
+ pragma Linker_Options ("-lform" & Curses_Constants.DFT_ARG_SUFFIX);
+
Space : Character renames Ada.Characters.Latin_1.Space;
type Field is private;
@@ -63,18 +62,68 @@ include(`Linker_Options')
Center,
Right);
+ type Field_Option_Set is
+ record
+ Visible : Boolean;
+ Active : Boolean;
+ Public : Boolean;
+ Edit : Boolean;
+ Wrap : Boolean;
+ Blank : Boolean;
+ Auto_Skip : Boolean;
+ Null_Ok : Boolean;
+ Pass_Ok : Boolean;
+ Static : Boolean;
+ end record;
+ pragma Convention (C_Pass_By_Copy, Field_Option_Set);
+
+ for Field_Option_Set use
+ record
+ Visible at 0 range Curses_Constants.O_VISIBLE_First
+ .. Curses_Constants.O_VISIBLE_Last;
+ Active at 0 range Curses_Constants.O_ACTIVE_First
+ .. Curses_Constants.O_ACTIVE_Last;
+ Public at 0 range Curses_Constants.O_PUBLIC_First
+ .. Curses_Constants.O_PUBLIC_Last;
+ Edit at 0 range Curses_Constants.O_EDIT_First
+ .. Curses_Constants.O_EDIT_Last;
+ Wrap at 0 range Curses_Constants.O_WRAP_First
+ .. Curses_Constants.O_WRAP_Last;
+ Blank at 0 range Curses_Constants.O_BLANK_First
+ .. Curses_Constants.O_BLANK_Last;
+ Auto_Skip at 0 range Curses_Constants.O_AUTOSKIP_First
+ .. Curses_Constants.O_AUTOSKIP_Last;
+ Null_Ok at 0 range Curses_Constants.O_NULLOK_First
+ .. Curses_Constants.O_NULLOK_Last;
+ Pass_Ok at 0 range Curses_Constants.O_PASSOK_First
+ .. Curses_Constants.O_PASSOK_Last;
+ Static at 0 range Curses_Constants.O_STATIC_First
+ .. Curses_Constants.O_STATIC_Last;
+ end record;
pragma Warnings (Off);
-include(`Field_Rep')Dnl
-
+ for Field_Option_Set'Size use Curses_Constants.Field_Options_Size;
pragma Warnings (On);
function Default_Field_Options return Field_Option_Set;
-- The initial defaults for the field options.
pragma Inline (Default_Field_Options);
+ type Form_Option_Set is
+ record
+ NL_Overload : Boolean;
+ BS_Overload : Boolean;
+ end record;
+ pragma Convention (C_Pass_By_Copy, Form_Option_Set);
+
+ for Form_Option_Set use
+ record
+ NL_Overload at 0 range Curses_Constants.O_NL_OVERLOAD_First
+ .. Curses_Constants.O_NL_OVERLOAD_Last;
+ BS_Overload at 0 range Curses_Constants.O_BS_OVERLOAD_First
+ .. Curses_Constants.O_BS_OVERLOAD_Last;
+ end record;
pragma Warnings (Off);
-include(`Form_Opt_Rep')Dnl
-
+ for Form_Option_Set'Size use Curses_Constants.Field_Options_Size;
pragma Warnings (On);
function Default_Form_Options return Form_Option_Set;
diff --git a/Ada95/gen/terminal_interface-curses-menus.ads.m4 b/Ada95/gen/terminal_interface-curses-menus.ads.m4
index 6274b6ed8f2d..0ad9c456dbda 100644
--- a/Ada95/gen/terminal_interface-curses-menus.ads.m4
+++ b/Ada95/gen/terminal_interface-curses-menus.ads.m4
@@ -10,7 +10,7 @@ include(M4MACRO)dnl
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2009,2014 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -38,18 +38,17 @@ include(M4MACRO)dnl
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.28 $
--- $Date: 2009/12/26 18:35:22 $
+-- $Revision: 1.31 $
+-- $Date: 2014/05/24 21:31:57 $
-- Binding Version 01.00
------------------------------------------------------------------------------
-include(`Menu_Base_Defs')
with System;
with Ada.Characters.Latin_1;
package Terminal_Interface.Curses.Menus is
pragma Preelaborate (Terminal_Interface.Curses.Menus);
-include(`Menu_Linker_Options')dnl
-include(`Linker_Options')
+ pragma Linker_Options ("-lmenu" & Curses_Constants.DFT_ARG_SUFFIX);
+
Space : Character renames Ada.Characters.Latin_1.Space;
type Item is private;
@@ -116,9 +115,34 @@ include(`Linker_Options')
--
-- Menu options
--
+ type Menu_Option_Set is
+ record
+ One_Valued : Boolean;
+ Show_Descriptions : Boolean;
+ Row_Major_Order : Boolean;
+ Ignore_Case : Boolean;
+ Show_Matches : Boolean;
+ Non_Cyclic : Boolean;
+ end record;
+ pragma Convention (C_Pass_By_Copy, Menu_Option_Set);
+
+ for Menu_Option_Set use
+ record
+ One_Valued at 0 range Curses_Constants.O_ONEVALUE_First
+ .. Curses_Constants.O_ONEVALUE_Last;
+ Show_Descriptions at 0 range Curses_Constants.O_SHOWDESC_First
+ .. Curses_Constants.O_SHOWDESC_Last;
+ Row_Major_Order at 0 range Curses_Constants.O_ROWMAJOR_First
+ .. Curses_Constants.O_ROWMAJOR_Last;
+ Ignore_Case at 0 range Curses_Constants.O_IGNORECASE_First
+ .. Curses_Constants.O_IGNORECASE_Last;
+ Show_Matches at 0 range Curses_Constants.O_SHOWMATCH_First
+ .. Curses_Constants.O_SHOWMATCH_Last;
+ Non_Cyclic at 0 range Curses_Constants.O_NONCYCLIC_First
+ .. Curses_Constants.O_NONCYCLIC_Last;
+ end record;
pragma Warnings (Off);
-include(`Menu_Opt_Rep')dnl
-
+ for Menu_Option_Set'Size use Curses_Constants.Menu_Options_Size;
pragma Warnings (On);
function Default_Menu_Options return Menu_Option_Set;
@@ -127,9 +151,19 @@ include(`Menu_Opt_Rep')dnl
--
-- Item options
--
+ type Item_Option_Set is
+ record
+ Selectable : Boolean;
+ end record;
+ pragma Convention (C_Pass_By_Copy, Item_Option_Set);
+
+ for Item_Option_Set use
+ record
+ Selectable at 0 range Curses_Constants.O_SELECTABLE_First
+ .. Curses_Constants.O_SELECTABLE_Last;
+ end record;
pragma Warnings (Off);
-include(`Item_Rep')dnl
-
+ for Item_Option_Set'Size use Curses_Constants.Item_Options_Size;
pragma Warnings (On);
function Default_Item_Options return Item_Option_Set;
diff --git a/Ada95/gen/terminal_interface-curses-mouse.ads.m4 b/Ada95/gen/terminal_interface-curses-mouse.ads.m4
index a4fb661ef84a..8d3f8edc7922 100644
--- a/Ada95/gen/terminal_interface-curses-mouse.ads.m4
+++ b/Ada95/gen/terminal_interface-curses-mouse.ads.m4
@@ -10,7 +10,7 @@ include(M4MACRO)dnl
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2014,2015 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -38,11 +38,10 @@ include(M4MACRO)dnl
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.29 $
--- $Date: 2011/03/19 12:35:58 $
+-- $Revision: 1.32 $
+-- $Date: 2015/05/30 23:19:19 $
-- Binding Version 01.00
------------------------------------------------------------------------------
-include(`Mouse_Base_Defs')
with System;
package Terminal_Interface.Curses.Mouse is
@@ -155,7 +154,10 @@ package Terminal_Interface.Curses.Mouse is
pragma Inline (Mouse_Interval);
private
- type Event_Mask is new Interfaces.C.unsigned_long;
+ -- This can be as little as 32 bits (unsigned), or as long as the system's
+ -- unsigned long. Declare it as the minimum size to handle all valid
+ -- sizes.
+ type Event_Mask is mod 4294967296;
type Mouse_Event is
record
@@ -167,12 +169,35 @@ private
end record;
pragma Convention (C, Mouse_Event);
-include(`Mouse_Event_Rep')
- Generation_Bit_Order : constant System.Bit_Order := System.M4_BIT_ORDER;
- -- This constant may be different on your system.
-
-include(`Mouse_Events')
- No_Events : constant Event_Mask := 0;
- All_Events : constant Event_Mask := ALL_MOUSE_EVENTS;
+ for Mouse_Event use
+ record
+ Id at 0 range Curses_Constants.MEVENT_id_First
+ .. Curses_Constants.MEVENT_id_Last;
+ X at 0 range Curses_Constants.MEVENT_x_First
+ .. Curses_Constants.MEVENT_x_Last;
+ Y at 0 range Curses_Constants.MEVENT_y_First
+ .. Curses_Constants.MEVENT_y_Last;
+ Z at 0 range Curses_Constants.MEVENT_z_First
+ .. Curses_Constants.MEVENT_z_Last;
+ Bstate at 0 range Curses_Constants.MEVENT_bstate_First
+ .. Curses_Constants.MEVENT_bstate_Last;
+ end record;
+ for Mouse_Event'Size use Curses_Constants.MEVENT_Size;
+ Generation_Bit_Order : System.Bit_Order renames Curses_Constants.Bit_Order;
+
+ BUTTON_CTRL : constant Event_Mask := Curses_Constants.BUTTON_CTRL;
+ BUTTON_SHIFT : constant Event_Mask := Curses_Constants.BUTTON_SHIFT;
+ BUTTON_ALT : constant Event_Mask := Curses_Constants.BUTTON_ALT;
+ BUTTON1_EVENTS : constant Event_Mask
+ := Curses_Constants.all_events_button_1;
+ BUTTON2_EVENTS : constant Event_Mask
+ := Curses_Constants.all_events_button_2;
+ BUTTON3_EVENTS : constant Event_Mask
+ := Curses_Constants.all_events_button_3;
+ BUTTON4_EVENTS : constant Event_Mask
+ := Curses_Constants.all_events_button_4;
+ ALL_MOUSE_EVENTS : constant Event_Mask := Curses_Constants.ALL_MOUSE_EVENTS;
+ No_Events : constant Event_Mask := 0;
+ All_Events : constant Event_Mask := ALL_MOUSE_EVENTS;
end Terminal_Interface.Curses.Mouse;
diff --git a/Ada95/gen/terminal_interface-curses-panels.ads.m4 b/Ada95/gen/terminal_interface-curses-panels.ads.m4
index dc06fa42171c..b0eda4d427d3 100644
--- a/Ada95/gen/terminal_interface-curses-panels.ads.m4
+++ b/Ada95/gen/terminal_interface-curses-panels.ads.m4
@@ -10,7 +10,7 @@ include(M4MACRO)dnl
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2009,2014 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -38,16 +38,16 @@ include(M4MACRO)dnl
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.20 $
--- $Date: 2009/12/26 17:38:58 $
+-- $Revision: 1.22 $
+-- $Date: 2014/05/24 21:31:57 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with System;
package Terminal_Interface.Curses.Panels is
pragma Preelaborate (Terminal_Interface.Curses.Panels);
-include(`Panel_Linker_Options')dnl
-include(`Linker_Options')
+ pragma Linker_Options ("-lpanel" & Curses_Constants.DFT_ARG_SUFFIX);
+
type Panel is private;
---------------------------
diff --git a/Ada95/gen/terminal_interface-curses-trace.ads.m4 b/Ada95/gen/terminal_interface-curses-trace.ads.m4
index 546004fd4938..e22734358a5e 100644
--- a/Ada95/gen/terminal_interface-curses-trace.ads.m4
+++ b/Ada95/gen/terminal_interface-curses-trace.ads.m4
@@ -9,7 +9,7 @@ include(M4MACRO)----------------------------------------------------------------
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000 Free Software Foundation, Inc. --
+-- Copyright (c) 2000,2014 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -37,16 +37,62 @@ include(M4MACRO)----------------------------------------------------------------
------------------------------------------------------------------------------
-- Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
-- Version Control:
--- $Revision: 1.1 $
+-- $Revision: 1.4 $
-- Binding Version 01.00
------------------------------------------------------------------------------
package Terminal_Interface.Curses.Trace is
pragma Preelaborate (Terminal_Interface.Curses.Trace);
- pragma Warnings (Off);
-include(`Trace_Defs')
+ type Trace_Attribute_Set is
+ record
+ Times : Boolean;
+ Tputs : Boolean;
+ Update : Boolean;
+ Cursor_Move : Boolean;
+ Character_Output : Boolean;
+ Calls : Boolean;
+ Virtual_Puts : Boolean;
+ Input_Events : Boolean;
+ TTY_State : Boolean;
+ Internal_Calls : Boolean;
+ Character_Calls : Boolean;
+ Termcap_TermInfo : Boolean;
+ Attribute_Color : Boolean;
+ end record;
+ pragma Convention (C_Pass_By_Copy, Trace_Attribute_Set);
+ for Trace_Attribute_Set use
+ record
+ Times at 0 range Curses_Constants.TRACE_TIMES_First
+ .. Curses_Constants.TRACE_TIMES_Last;
+ Tputs at 0 range Curses_Constants.TRACE_TPUTS_First
+ .. Curses_Constants.TRACE_TPUTS_Last;
+ Update at 0 range Curses_Constants.TRACE_UPDATE_First
+ .. Curses_Constants.TRACE_UPDATE_Last;
+ Cursor_Move at 0 range Curses_Constants.TRACE_MOVE_First
+ .. Curses_Constants.TRACE_MOVE_Last;
+ Character_Output at 0 range Curses_Constants.TRACE_CHARPUT_First
+ .. Curses_Constants.TRACE_CHARPUT_Last;
+ Calls at 0 range Curses_Constants.TRACE_CALLS_First
+ .. Curses_Constants.TRACE_CALLS_Last;
+ Virtual_Puts at 0 range Curses_Constants.TRACE_VIRTPUT_First
+ .. Curses_Constants.TRACE_VIRTPUT_Last;
+ Input_Events at 0 range Curses_Constants.TRACE_IEVENT_First
+ .. Curses_Constants.TRACE_IEVENT_Last;
+ TTY_State at 0 range Curses_Constants.TRACE_BITS_First
+ .. Curses_Constants.TRACE_BITS_Last;
+ Internal_Calls at 0 range Curses_Constants.TRACE_ICALLS_First
+ .. Curses_Constants.TRACE_ICALLS_Last;
+ Character_Calls at 0 range Curses_Constants.TRACE_CCALLS_First
+ .. Curses_Constants.TRACE_CCALLS_Last;
+ Termcap_TermInfo at 0 range Curses_Constants.TRACE_DATABASE_First
+ .. Curses_Constants.TRACE_DATABASE_Last;
+ Attribute_Color at 0 range Curses_Constants.TRACE_ATTRS_First
+ .. Curses_Constants.TRACE_ATTRS_Last;
+ end record;
+ pragma Warnings (Off);
+ for Trace_Attribute_Set'Size use Curses_Constants.Trace_Size;
pragma Warnings (On);
Trace_Disable : constant Trace_Attribute_Set := (others => False);
diff --git a/Ada95/gen/terminal_interface-curses.adb.m4 b/Ada95/gen/terminal_interface-curses.adb.m4
index 1f89a5a35233..1c55ed2589e9 100644
--- a/Ada95/gen/terminal_interface-curses.adb.m4
+++ b/Ada95/gen/terminal_interface-curses.adb.m4
@@ -9,7 +9,7 @@ include(M4MACRO)----------------------------------------------------------------
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2014,2018 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -37,8 +37,8 @@ include(M4MACRO)----------------------------------------------------------------
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.8 $
--- $Date: 2011/03/22 23:02:14 $
+-- $Revision: 1.15 $
+-- $Date: 2018/07/07 23:28:45 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with System;
@@ -52,7 +52,6 @@ with Ada.Strings.Fixed;
package body Terminal_Interface.Curses is
use Aux;
- use type System.Bit_Order;
package ASF renames Ada.Strings.Fixed;
@@ -151,10 +150,10 @@ package body Terminal_Interface.Curses is
Ch : Attributed_Character)
is
function Waddch (W : Window;
- Ch : C_Chtype) return C_Int;
+ Ch : Attributed_Character) return C_Int;
pragma Import (C, Waddch, "waddch");
begin
- if Waddch (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
+ if Waddch (Win, Ch) = Curses_Err then
raise Curses_Exception;
end if;
end Add;
@@ -178,12 +177,13 @@ package body Terminal_Interface.Curses is
function mvwaddch (W : Window;
Y : C_Int;
X : C_Int;
- Ch : C_Chtype) return C_Int;
+ Ch : Attributed_Character) return C_Int;
pragma Import (C, mvwaddch, "mvwaddch");
begin
if mvwaddch (Win, C_Int (Line),
C_Int (Column),
- AttrChar_To_Chtype (Ch)) = Curses_Err then
+ Ch) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Add;
@@ -208,10 +208,10 @@ package body Terminal_Interface.Curses is
Ch : Attributed_Character)
is
function Wechochar (W : Window;
- Ch : C_Chtype) return C_Int;
+ Ch : Attributed_Character) return C_Int;
pragma Import (C, Wechochar, "wechochar");
begin
- if Wechochar (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
+ if Wechochar (Win, Ch) = Curses_Err then
raise Curses_Exception;
end if;
end Add_With_Immediate_Echo;
@@ -419,7 +419,8 @@ package body Terminal_Interface.Curses is
Txt (Str'Length) := Default_Character;
if Waddchnstr (Win,
Txt,
- C_Int (Len)) = Curses_Err then
+ C_Int (Len)) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Add;
@@ -448,26 +449,25 @@ package body Terminal_Interface.Curses is
Lower_Right_Corner_Symbol : Attributed_Character := Default_Character)
is
function Wborder (W : Window;
- LS : C_Chtype;
- RS : C_Chtype;
- TS : C_Chtype;
- BS : C_Chtype;
- ULC : C_Chtype;
- URC : C_Chtype;
- LLC : C_Chtype;
- LRC : C_Chtype) return C_Int;
+ LS : Attributed_Character;
+ RS : Attributed_Character;
+ TS : Attributed_Character;
+ BS : Attributed_Character;
+ ULC : Attributed_Character;
+ URC : Attributed_Character;
+ LLC : Attributed_Character;
+ LRC : Attributed_Character) return C_Int;
pragma Import (C, Wborder, "wborder");
begin
if Wborder (Win,
- AttrChar_To_Chtype (Left_Side_Symbol),
- AttrChar_To_Chtype (Right_Side_Symbol),
- AttrChar_To_Chtype (Top_Side_Symbol),
- AttrChar_To_Chtype (Bottom_Side_Symbol),
- AttrChar_To_Chtype (Upper_Left_Corner_Symbol),
- AttrChar_To_Chtype (Upper_Right_Corner_Symbol),
- AttrChar_To_Chtype (Lower_Left_Corner_Symbol),
- AttrChar_To_Chtype (Lower_Right_Corner_Symbol)
- ) = Curses_Err
+ Left_Side_Symbol,
+ Right_Side_Symbol,
+ Top_Side_Symbol,
+ Bottom_Side_Symbol,
+ Upper_Left_Corner_Symbol,
+ Upper_Right_Corner_Symbol,
+ Lower_Left_Corner_Symbol,
+ Lower_Right_Corner_Symbol) = Curses_Err
then
raise Curses_Exception;
end if;
@@ -490,13 +490,14 @@ package body Terminal_Interface.Curses is
Line_Symbol : Attributed_Character := Default_Character)
is
function Whline (W : Window;
- Ch : C_Chtype;
+ Ch : Attributed_Character;
Len : C_Int) return C_Int;
pragma Import (C, Whline, "whline");
begin
if Whline (Win,
- AttrChar_To_Chtype (Line_Symbol),
- C_Int (Line_Size)) = Curses_Err then
+ Line_Symbol,
+ C_Int (Line_Size)) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Horizontal_Line;
@@ -507,13 +508,14 @@ package body Terminal_Interface.Curses is
Line_Symbol : Attributed_Character := Default_Character)
is
function Wvline (W : Window;
- Ch : C_Chtype;
+ Ch : Attributed_Character;
Len : C_Int) return C_Int;
pragma Import (C, Wvline, "wvline");
begin
if Wvline (Win,
- AttrChar_To_Chtype (Line_Symbol),
- C_Int (Line_Size)) = Curses_Err then
+ Line_Symbol,
+ C_Int (Line_Size)) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Vertical_Line;
@@ -611,10 +613,10 @@ package body Terminal_Interface.Curses is
On : Boolean := True)
is
function Wattron (Win : Window;
- C_Attr : C_AttrType) return C_Int;
+ C_Attr : Attributed_Character) return C_Int;
pragma Import (C, Wattron, "wattr_on");
function Wattroff (Win : Window;
- C_Attr : C_AttrType) return C_Int;
+ C_Attr : Attributed_Character) return C_Int;
pragma Import (C, Wattroff, "wattr_off");
-- In Ada we use the On Boolean to control whether or not we want to
-- switch on or off the attributes in the set.
@@ -624,9 +626,9 @@ package body Terminal_Interface.Curses is
Attr => Attr);
begin
if On then
- Err := Wattron (Win, AttrChar_To_AttrType (AC));
+ Err := Wattron (Win, AC);
else
- Err := Wattroff (Win, AttrChar_To_AttrType (AC));
+ Err := Wattroff (Win, AC);
end if;
if Err = Curses_Err then
raise Curses_Exception;
@@ -639,14 +641,13 @@ package body Terminal_Interface.Curses is
Color : Color_Pair := Color_Pair'First)
is
function Wattrset (Win : Window;
- C_Attr : C_AttrType) return C_Int;
+ C_Attr : Attributed_Character) return C_Int;
pragma Import (C, Wattrset, "wattrset"); -- ??? wattr_set
begin
- if Wattrset (Win,
- AttrChar_To_AttrType (Attributed_Character'
- (Ch => Character'First,
- Color => Color,
- Attr => Attr))) = Curses_Err then
+ if Wattrset (Win, (Ch => Character'First,
+ Color => Color,
+ Attr => Attr)) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Set_Character_Attributes;
@@ -655,20 +656,18 @@ package body Terminal_Interface.Curses is
return Character_Attribute_Set
is
function Wattrget (Win : Window;
- Atr : access C_AttrType;
+ Atr : access Attributed_Character;
Col : access C_Short;
Opt : System.Address) return C_Int;
pragma Import (C, Wattrget, "wattr_get");
- Attr : aliased C_AttrType;
+ Attr : aliased Attributed_Character;
Col : aliased C_Short;
Res : constant C_Int := Wattrget (Win, Attr'Access, Col'Access,
System.Null_Address);
- Ch : Attributed_Character;
begin
if Res = Curses_Ok then
- Ch := AttrType_To_AttrChar (Attr);
- return Ch.Attr;
+ return Attr.Attr;
else
raise Curses_Exception;
end if;
@@ -678,20 +677,18 @@ package body Terminal_Interface.Curses is
return Color_Pair
is
function Wattrget (Win : Window;
- Atr : access C_AttrType;
+ Atr : access Attributed_Character;
Col : access C_Short;
Opt : System.Address) return C_Int;
pragma Import (C, Wattrget, "wattr_get");
- Attr : aliased C_AttrType;
+ Attr : aliased Attributed_Character;
Col : aliased C_Short;
Res : constant C_Int := Wattrget (Win, Attr'Access, Col'Access,
System.Null_Address);
- Ch : Attributed_Character;
begin
if Res = Curses_Ok then
- Ch := AttrType_To_AttrChar (Attr);
- return Ch.Color;
+ return Attr.Color;
else
raise Curses_Exception;
end if;
@@ -707,7 +704,8 @@ package body Terminal_Interface.Curses is
begin
if Wset_Color (Win,
C_Short (Pair),
- C_Void_Ptr (System.Null_Address)) = Curses_Err then
+ C_Void_Ptr (System.Null_Address)) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Set_Color;
@@ -720,17 +718,19 @@ package body Terminal_Interface.Curses is
is
function Wchgat (Win : Window;
Cnt : C_Int;
- Attr : C_AttrType;
+ Attr : Attributed_Character;
Color : C_Short;
Opts : System.Address := System.Null_Address)
return C_Int;
pragma Import (C, Wchgat, "wchgat");
-
- Ch : constant Attributed_Character :=
- (Ch => Character'First, Color => Color_Pair'First, Attr => Attr);
begin
- if Wchgat (Win, C_Int (Count), AttrChar_To_AttrType (Ch),
- C_Short (Color)) = Curses_Err then
+ if Wchgat (Win,
+ C_Int (Count),
+ (Ch => Character'First,
+ Color => Color_Pair'First,
+ Attr => Attr),
+ C_Short (Color)) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Change_Attributes;
@@ -938,7 +938,8 @@ package body Terminal_Interface.Curses is
pragma Import (C, Notimeout, "notimeout");
begin
if Notimeout (Win, Curses_Bool (Boolean'Pos (Timer_Off)))
- = Curses_Err then
+ = Curses_Err
+ then
raise Curses_Exception;
end if;
end Set_Escape_Timer_Mode;
@@ -1051,7 +1052,8 @@ package body Terminal_Interface.Curses is
pragma Import (C, Wsetscrreg, "wsetscrreg");
begin
if Wsetscrreg (Win, C_Int (Top_Line), C_Int (Bottom_Line))
- = Curses_Err then
+ = Curses_Err
+ then
raise Curses_Exception;
end if;
end Set_Scroll_Region;
@@ -1108,7 +1110,8 @@ package body Terminal_Interface.Curses is
begin
if Wredrawln (Win,
C_Int (Begin_Line),
- C_Int (Line_Count)) = Curses_Err then
+ C_Int (Line_Count)) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Redraw;
@@ -1158,20 +1161,21 @@ package body Terminal_Interface.Curses is
(Win : Window := Standard_Window;
Ch : Attributed_Character)
is
- procedure WBackground (W : Window; Ch : C_Chtype);
+ procedure WBackground (W : Window; Ch : Attributed_Character);
pragma Import (C, WBackground, "wbkgdset");
begin
- WBackground (Win, AttrChar_To_Chtype (Ch));
+ WBackground (Win, Ch);
end Set_Background;
procedure Change_Background
(Win : Window := Standard_Window;
Ch : Attributed_Character)
is
- function WChangeBkgd (W : Window; Ch : C_Chtype) return C_Int;
+ function WChangeBkgd (W : Window; Ch : Attributed_Character)
+ return C_Int;
pragma Import (C, WChangeBkgd, "wbkgd");
begin
- if WChangeBkgd (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
+ if WChangeBkgd (Win, Ch) = Curses_Err then
raise Curses_Exception;
end if;
end Change_Background;
@@ -1179,10 +1183,10 @@ package body Terminal_Interface.Curses is
function Get_Background (Win : Window := Standard_Window)
return Attributed_Character
is
- function Wgetbkgd (Win : Window) return C_Chtype;
+ function Wgetbkgd (Win : Window) return Attributed_Character;
pragma Import (C, Wgetbkgd, "getbkgd");
begin
- return Chtype_To_AttrChar (Wgetbkgd (Win));
+ return Wgetbkgd (Win);
end Get_Background;
------------------------------------------------------------------------------
procedure Change_Lines_Status (Win : Window := Standard_Window;
@@ -1197,7 +1201,8 @@ package body Terminal_Interface.Curses is
pragma Import (C, Wtouchln, "wtouchln");
begin
if Wtouchln (Win, C_Int (Start), C_Int (Count),
- C_Int (Boolean'Pos (State))) = Curses_Err then
+ C_Int (Boolean'Pos (State))) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Change_Lines_Status;
@@ -1208,7 +1213,7 @@ package body Terminal_Interface.Curses is
X : Column_Position;
begin
Get_Size (Win, Y, X);
- pragma Unreferenced (X);
+ pragma Warnings (Off, X); -- unreferenced
Change_Lines_Status (Win, 0, Positive (Y), True);
end Touch;
@@ -1218,7 +1223,7 @@ package body Terminal_Interface.Curses is
X : Column_Position;
begin
Get_Size (Win, Y, X);
- pragma Unreferenced (X);
+ pragma Warnings (Off, X); -- unreferenced
Change_Lines_Status (Win, 0, Positive (Y), False);
end Untouch;
@@ -1288,7 +1293,8 @@ package body Terminal_Interface.Curses is
C_Int (Destination_Bottom_Row),
C_Int (Destination_Right_Column),
Boolean'Pos (Non_Destructive_Mode)
- ) = Curses_Err then
+ ) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Copy;
@@ -1491,7 +1497,8 @@ package body Terminal_Interface.Curses is
C_Int (Destination_Top_Row),
C_Int (Destination_Left_Column),
C_Int (Destination_Bottom_Row),
- C_Int (Destination_Right_Column)) = Curses_Err then
+ C_Int (Destination_Right_Column)) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Refresh;
@@ -1521,7 +1528,8 @@ package body Terminal_Interface.Curses is
C_Int (Destination_Top_Row),
C_Int (Destination_Left_Column),
C_Int (Destination_Bottom_Row),
- C_Int (Destination_Right_Column)) = Curses_Err then
+ C_Int (Destination_Right_Column)) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Refresh_Without_Update;
@@ -1530,11 +1538,11 @@ package body Terminal_Interface.Curses is
(Pad : Window;
Ch : Attributed_Character)
is
- function Pechochar (Pad : Window; Ch : C_Chtype)
+ function Pechochar (Pad : Window; Ch : Attributed_Character)
return C_Int;
pragma Import (C, Pechochar, "pechochar");
begin
- if Pechochar (Pad, AttrChar_To_Chtype (Ch)) = Curses_Err then
+ if Pechochar (Pad, Ch) = Curses_Err then
raise Curses_Exception;
end if;
end Add_Character_To_Pad_And_Echo_It;
@@ -1592,10 +1600,10 @@ package body Terminal_Interface.Curses is
function Peek (Win : Window := Standard_Window)
return Attributed_Character
is
- function Winch (Win : Window) return C_Chtype;
+ function Winch (Win : Window) return Attributed_Character;
pragma Import (C, Winch, "winch");
begin
- return Chtype_To_AttrChar (Winch (Win));
+ return Winch (Win);
end Peek;
function Peek
@@ -1605,19 +1613,19 @@ package body Terminal_Interface.Curses is
is
function Mvwinch (Win : Window;
Lin : C_Int;
- Col : C_Int) return C_Chtype;
+ Col : C_Int) return Attributed_Character;
pragma Import (C, Mvwinch, "mvwinch");
begin
- return Chtype_To_AttrChar (Mvwinch (Win, C_Int (Line), C_Int (Column)));
+ return Mvwinch (Win, C_Int (Line), C_Int (Column));
end Peek;
------------------------------------------------------------------------------
procedure Insert (Win : Window := Standard_Window;
Ch : Attributed_Character)
is
- function Winsch (Win : Window; Ch : C_Chtype) return C_Int;
+ function Winsch (Win : Window; Ch : Attributed_Character) return C_Int;
pragma Import (C, Winsch, "winsch");
begin
- if Winsch (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
+ if Winsch (Win, Ch) = Curses_Err then
raise Curses_Exception;
end if;
end Insert;
@@ -1631,13 +1639,14 @@ package body Terminal_Interface.Curses is
function Mvwinsch (Win : Window;
Lin : C_Int;
Col : C_Int;
- Ch : C_Chtype) return C_Int;
+ Ch : Attributed_Character) return C_Int;
pragma Import (C, Mvwinsch, "mvwinsch");
begin
if Mvwinsch (Win,
C_Int (Line),
C_Int (Column),
- AttrChar_To_Chtype (Ch)) = Curses_Err then
+ Ch) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Insert;
@@ -1679,7 +1688,8 @@ package body Terminal_Interface.Curses is
begin
To_C (Str, Txt, Length);
if Mvwinsnstr (Win, C_Int (Line), C_Int (Column), Txt, C_Int (Len))
- = Curses_Err then
+ = Curses_Err
+ then
raise Curses_Exception;
end if;
end Insert;
@@ -1840,7 +1850,8 @@ package body Terminal_Interface.Curses is
begin
To_C (Text, Txt, Len);
if Slk_Set (C_Int (Label), Txt,
- C_Int (Label_Justification'Pos (Fmt))) = Curses_Err then
+ C_Int (Label_Justification'Pos (Fmt))) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Set_Soft_Label_Key;
@@ -1916,9 +1927,9 @@ package body Terminal_Interface.Curses is
(Attr : Character_Attribute_Set;
On : Boolean := True)
is
- function Slk_Attron (Ch : C_Chtype) return C_Int;
+ function Slk_Attron (Ch : Attributed_Character) return C_Int;
pragma Import (C, Slk_Attron, "slk_attron");
- function Slk_Attroff (Ch : C_Chtype) return C_Int;
+ function Slk_Attroff (Ch : Attributed_Character) return C_Int;
pragma Import (C, Slk_Attroff, "slk_attroff");
Err : C_Int;
@@ -1927,9 +1938,9 @@ package body Terminal_Interface.Curses is
Color => Color_Pair'First);
begin
if On then
- Err := Slk_Attron (AttrChar_To_Chtype (Ch));
+ Err := Slk_Attron (Ch);
else
- Err := Slk_Attroff (AttrChar_To_Chtype (Ch));
+ Err := Slk_Attroff (Ch);
end if;
if Err = Curses_Err then
raise Curses_Exception;
@@ -1940,36 +1951,36 @@ package body Terminal_Interface.Curses is
(Attr : Character_Attribute_Set := Normal_Video;
Color : Color_Pair := Color_Pair'First)
is
- function Slk_Attrset (Ch : C_Chtype) return C_Int;
+ function Slk_Attrset (Ch : Attributed_Character) return C_Int;
pragma Import (C, Slk_Attrset, "slk_attrset");
Ch : constant Attributed_Character := (Ch => Character'First,
Attr => Attr,
Color => Color);
begin
- if Slk_Attrset (AttrChar_To_Chtype (Ch)) = Curses_Err then
+ if Slk_Attrset (Ch) = Curses_Err then
raise Curses_Exception;
end if;
end Set_Soft_Label_Key_Attributes;
function Get_Soft_Label_Key_Attributes return Character_Attribute_Set
is
- function Slk_Attr return C_Chtype;
+ function Slk_Attr return Attributed_Character;
pragma Import (C, Slk_Attr, "slk_attr");
- Attr : constant C_Chtype := Slk_Attr;
+ Attr : constant Attributed_Character := Slk_Attr;
begin
- return Chtype_To_AttrChar (Attr).Attr;
+ return Attr.Attr;
end Get_Soft_Label_Key_Attributes;
function Get_Soft_Label_Key_Attributes return Color_Pair
is
- function Slk_Attr return C_Chtype;
+ function Slk_Attr return Attributed_Character;
pragma Import (C, Slk_Attr, "slk_attr");
- Attr : constant C_Chtype := Slk_Attr;
+ Attr : constant Attributed_Character := Slk_Attr;
begin
- return Chtype_To_AttrChar (Attr).Color;
+ return Attr.Color;
end Get_Soft_Label_Key_Attributes;
procedure Set_Soft_Label_Key_Color (Pair : Color_Pair)
@@ -1991,7 +2002,8 @@ package body Terminal_Interface.Curses is
pragma Import (C, Keyok, "keyok");
begin
if Keyok (C_Int (Key), Curses_Bool (Boolean'Pos (Enable)))
- = Curses_Err then
+ = Curses_Err
+ then
raise Curses_Exception;
end if;
end Enable_Key;
@@ -2015,18 +2027,18 @@ package body Terminal_Interface.Curses is
procedure Un_Control (Ch : Attributed_Character;
Str : out String)
is
- function Unctrl (Ch : C_Chtype) return chars_ptr;
+ function Unctrl (Ch : Attributed_Character) return chars_ptr;
pragma Import (C, Unctrl, "unctrl");
begin
- Fill_String (Unctrl (AttrChar_To_Chtype (Ch)), Str);
+ Fill_String (Unctrl (Ch), Str);
end Un_Control;
function Un_Control (Ch : Attributed_Character) return String
is
- function Unctrl (Ch : C_Chtype) return chars_ptr;
+ function Unctrl (Ch : Attributed_Character) return chars_ptr;
pragma Import (C, Unctrl, "unctrl");
begin
- return Fill_String (Unctrl (AttrChar_To_Chtype (Ch)));
+ return Fill_String (Unctrl (Ch));
end Un_Control;
procedure Delay_Output (Msecs : Natural)
@@ -2099,10 +2111,10 @@ package body Terminal_Interface.Curses is
function Supported_Attributes return Character_Attribute_Set
is
- function Termattrs return C_Chtype;
+ function Termattrs return Attributed_Character;
pragma Import (C, Termattrs, "termattrs");
- Ch : constant Attributed_Character := Chtype_To_AttrChar (Termattrs);
+ Ch : constant Attributed_Character := Termattrs;
begin
return Ch.Attr;
end Supported_Attributes;
@@ -2152,11 +2164,13 @@ package body Terminal_Interface.Curses is
raise Constraint_Error;
end if;
if Integer (Fore) >= Number_Of_Colors or else
- Integer (Back) >= Number_Of_Colors then
+ Integer (Back) >= Number_Of_Colors
+ then
raise Constraint_Error;
end if;
if Initpair (C_Short (Pair), C_Short (Fore), C_Short (Back))
- = Curses_Err then
+ = Curses_Err
+ then
raise Curses_Exception;
end if;
end Init_Pair;
@@ -2205,7 +2219,8 @@ package body Terminal_Interface.Curses is
pragma Import (C, Initcolor, "init_color");
begin
if Initcolor (C_Short (Color), C_Short (Red), C_Short (Green),
- C_Short (Blue)) = Curses_Err then
+ C_Short (Blue)) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Init_Color;
@@ -2236,7 +2251,8 @@ package body Terminal_Interface.Curses is
R, G, B : aliased C_Short;
begin
if Colorcontent (C_Short (Color), R'Access, G'Access, B'Access) =
- Curses_Err then
+ Curses_Err
+ then
raise Curses_Exception;
else
Red := RGB_Value (R);
@@ -2337,7 +2353,46 @@ package body Terminal_Interface.Curses is
end if;
end Nap_Milli_Seconds;
------------------------------------------------------------------------------
-include(`Public_Variables')
+ function Lines return Line_Count
+ is
+ function LINES_As_Function return Interfaces.C.int;
+ pragma Import (C, LINES_As_Function, "LINES_as_function");
+ begin
+ return Line_Count (LINES_As_Function);
+ end Lines;
+
+ function Columns return Column_Count
+ is
+ function COLS_As_Function return Interfaces.C.int;
+ pragma Import (C, COLS_As_Function, "COLS_as_function");
+ begin
+ return Column_Count (COLS_As_Function);
+ end Columns;
+
+ function Tab_Size return Natural
+ is
+ function TABSIZE_As_Function return Interfaces.C.int;
+ pragma Import (C, TABSIZE_As_Function, "TABSIZE_as_function");
+
+ begin
+ return Natural (TABSIZE_As_Function);
+ end Tab_Size;
+
+ function Number_Of_Colors return Natural
+ is
+ function COLORS_As_Function return Interfaces.C.int;
+ pragma Import (C, COLORS_As_Function, "COLORS_as_function");
+ begin
+ return Natural (COLORS_As_Function);
+ end Number_Of_Colors;
+
+ function Number_Of_Color_Pairs return Natural
+ is
+ function COLOR_PAIRS_As_Function return Interfaces.C.int;
+ pragma Import (C, COLOR_PAIRS_As_Function, "COLOR_PAIRS_as_function");
+ begin
+ return Natural (COLOR_PAIRS_As_Function);
+ end Number_Of_Color_Pairs;
------------------------------------------------------------------------------
procedure Transform_Coordinates
(W : Window := Standard_Window;
@@ -2493,7 +2548,8 @@ include(`Public_Variables')
begin
if wresize (Win,
C_Int (Number_Of_Lines),
- C_Int (Number_Of_Columns)) = Curses_Err then
+ C_Int (Number_Of_Columns)) = Curses_Err
+ then
raise Curses_Exception;
end if;
end Resize;
diff --git a/Ada95/gen/terminal_interface-curses.ads.m4 b/Ada95/gen/terminal_interface-curses.ads.m4
index 28cc9d198779..25bb5d9b5f4c 100644
--- a/Ada95/gen/terminal_interface-curses.ads.m4
+++ b/Ada95/gen/terminal_interface-curses.ads.m4
@@ -9,7 +9,7 @@ include(M4MACRO)----------------------------------------------------------------
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -37,18 +37,23 @@ include(M4MACRO)----------------------------------------------------------------
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.44 $
--- $Date: 2011/03/19 23:05:56 $
+-- $Revision: 1.47 $
+-- $Date: 2014/05/24 21:31:57 $
-- Binding Version 01.00
------------------------------------------------------------------------------
-include(`Base_Defs')
with System.Storage_Elements;
with Interfaces.C; -- We need this for some assertions.
+with Terminal_Interface.Curses_Constants;
+
package Terminal_Interface.Curses is
pragma Preelaborate (Terminal_Interface.Curses);
-include(`Linker_Options')
-include(`Version_Info')
+ pragma Linker_Options ("-lncurses" & Curses_Constants.DFT_ARG_SUFFIX);
+
+ Major_Version : constant := Curses_Constants.NCURSES_VERSION_MAJOR;
+ Minor_Version : constant := Curses_Constants.NCURSES_VERSION_MINOR;
+ NC_Version : String renames Curses_Constants.Version;
+
type Window is private;
Null_Window : constant Window;
@@ -65,24 +70,315 @@ include(`Version_Info')
-- request codes.
-- FIXME: The "-1" should be Curses_Err
- subtype Real_Key_Code is Key_Code range -1 .. M4_KEY_MAX;
+ subtype Real_Key_Code is Key_Code range -1 .. Curses_Constants.KEY_MAX;
-- This are the codes that potentially represent a real keystroke.
-- Not all codes may be possible on a specific terminal. To check the
-- availability of a special key, the Has_Key function is provided.
subtype Special_Key_Code is Real_Key_Code
- range M4_SPECIAL_FIRST .. Real_Key_Code'Last;
+ range Curses_Constants. KEY_MIN - 1 .. Real_Key_Code'Last;
-- Type for a function- or special key number
subtype Normal_Key_Code is Real_Key_Code range
Character'Pos (Character'First) .. Character'Pos (Character'Last);
-- This are the codes for regular (incl. non-graphical) characters.
+ -- For those who like to use the original key names we produce them were
+ -- they differ from the original.
+
-- Constants for function- and special keys
- --
- Key_None : constant Special_Key_Code := M4_SPECIAL_FIRST;
-include(`Key_Definitions')
- Key_Max : constant Special_Key_Code
+ Key_None : constant Special_Key_Code
+ := Curses_Constants.KEY_MIN - 1;
+ Key_Min : constant Special_Key_Code
+ := Curses_Constants.KEY_MIN;
+ Key_Break : constant Special_Key_Code
+ := Curses_Constants.KEY_BREAK;
+ KEY_DOWN : constant Special_Key_Code
+ := Curses_Constants.KEY_DOWN;
+ Key_Cursor_Down : Special_Key_Code renames KEY_DOWN;
+ KEY_UP : constant Special_Key_Code
+ := Curses_Constants.KEY_UP;
+ Key_Cursor_Up : Special_Key_Code renames KEY_UP;
+ KEY_LEFT : constant Special_Key_Code
+ := Curses_Constants.KEY_LEFT;
+ Key_Cursor_Left : Special_Key_Code renames KEY_LEFT;
+ KEY_RIGHT : constant Special_Key_Code
+ := Curses_Constants.KEY_RIGHT;
+ Key_Cursor_Right : Special_Key_Code renames KEY_RIGHT;
+ Key_Home : constant Special_Key_Code
+ := Curses_Constants.KEY_HOME;
+ Key_Backspace : constant Special_Key_Code
+ := Curses_Constants.KEY_BACKSPACE;
+ Key_F0 : constant Special_Key_Code
+ := Curses_Constants.KEY_F0;
+ Key_F1 : constant Special_Key_Code
+ := Curses_Constants.KEY_F1;
+ Key_F2 : constant Special_Key_Code
+ := Curses_Constants.KEY_F2;
+ Key_F3 : constant Special_Key_Code
+ := Curses_Constants.KEY_F3;
+ Key_F4 : constant Special_Key_Code
+ := Curses_Constants.KEY_F4;
+ Key_F5 : constant Special_Key_Code
+ := Curses_Constants.KEY_F5;
+ Key_F6 : constant Special_Key_Code
+ := Curses_Constants.KEY_F6;
+ Key_F7 : constant Special_Key_Code
+ := Curses_Constants.KEY_F7;
+ Key_F8 : constant Special_Key_Code
+ := Curses_Constants.KEY_F8;
+ Key_F9 : constant Special_Key_Code
+ := Curses_Constants.KEY_F9;
+ Key_F10 : constant Special_Key_Code
+ := Curses_Constants.KEY_F10;
+ Key_F11 : constant Special_Key_Code
+ := Curses_Constants.KEY_F11;
+ Key_F12 : constant Special_Key_Code
+ := Curses_Constants.KEY_F12;
+ Key_F13 : constant Special_Key_Code
+ := Curses_Constants.KEY_F13;
+ Key_F14 : constant Special_Key_Code
+ := Curses_Constants.KEY_F14;
+ Key_F15 : constant Special_Key_Code
+ := Curses_Constants.KEY_F15;
+ Key_F16 : constant Special_Key_Code
+ := Curses_Constants.KEY_F16;
+ Key_F17 : constant Special_Key_Code
+ := Curses_Constants.KEY_F17;
+ Key_F18 : constant Special_Key_Code
+ := Curses_Constants.KEY_F18;
+ Key_F19 : constant Special_Key_Code
+ := Curses_Constants.KEY_F19;
+ Key_F20 : constant Special_Key_Code
+ := Curses_Constants.KEY_F20;
+ Key_F21 : constant Special_Key_Code
+ := Curses_Constants.KEY_F21;
+ Key_F22 : constant Special_Key_Code
+ := Curses_Constants.KEY_F22;
+ Key_F23 : constant Special_Key_Code
+ := Curses_Constants.KEY_F23;
+ Key_F24 : constant Special_Key_Code
+ := Curses_Constants.KEY_F24;
+ KEY_DL : constant Special_Key_Code
+ := Curses_Constants.KEY_DL;
+ Key_Delete_Line : Special_Key_Code renames KEY_DL;
+ KEY_IL : constant Special_Key_Code
+ := Curses_Constants.KEY_IL;
+ Key_Insert_Line : Special_Key_Code renames KEY_IL;
+ KEY_DC : constant Special_Key_Code
+ := Curses_Constants.KEY_DC;
+ Key_Delete_Char : Special_Key_Code renames KEY_DC;
+ KEY_IC : constant Special_Key_Code
+ := Curses_Constants.KEY_IC;
+ Key_Insert_Char : Special_Key_Code renames KEY_IC;
+ KEY_EIC : constant Special_Key_Code
+ := Curses_Constants.KEY_EIC;
+ Key_Exit_Insert_Mode : Special_Key_Code renames KEY_EIC;
+ KEY_CLEAR : constant Special_Key_Code
+ := Curses_Constants.KEY_CLEAR;
+ Key_Clear_Screen : Special_Key_Code renames KEY_CLEAR;
+ KEY_EOS : constant Special_Key_Code
+ := Curses_Constants.KEY_EOS;
+ Key_Clear_End_Of_Screen : Special_Key_Code renames KEY_EOS;
+ KEY_EOL : constant Special_Key_Code
+ := Curses_Constants.KEY_EOL;
+ Key_Clear_End_Of_Line : Special_Key_Code renames KEY_EOL;
+ KEY_SF : constant Special_Key_Code
+ := Curses_Constants.KEY_SF;
+ Key_Scroll_1_Forward : Special_Key_Code renames KEY_SF;
+ KEY_SR : constant Special_Key_Code
+ := Curses_Constants.KEY_SR;
+ Key_Scroll_1_Backward : Special_Key_Code renames KEY_SR;
+ KEY_NPAGE : constant Special_Key_Code
+ := Curses_Constants.KEY_NPAGE;
+ Key_Next_Page : Special_Key_Code renames KEY_NPAGE;
+ KEY_PPAGE : constant Special_Key_Code
+ := Curses_Constants.KEY_PPAGE;
+ Key_Previous_Page : Special_Key_Code renames KEY_PPAGE;
+ KEY_STAB : constant Special_Key_Code
+ := Curses_Constants.KEY_STAB;
+ Key_Set_Tab : Special_Key_Code renames KEY_STAB;
+ KEY_CTAB : constant Special_Key_Code
+ := Curses_Constants.KEY_CTAB;
+ Key_Clear_Tab : Special_Key_Code renames KEY_CTAB;
+ KEY_CATAB : constant Special_Key_Code
+ := Curses_Constants.KEY_CATAB;
+ Key_Clear_All_Tabs : Special_Key_Code renames KEY_CATAB;
+ KEY_ENTER : constant Special_Key_Code
+ := Curses_Constants.KEY_ENTER;
+ Key_Enter_Or_Send : Special_Key_Code renames KEY_ENTER;
+ KEY_SRESET : constant Special_Key_Code
+ := Curses_Constants.KEY_SRESET;
+ Key_Soft_Reset : Special_Key_Code renames KEY_SRESET;
+ Key_Reset : constant Special_Key_Code
+ := Curses_Constants.KEY_RESET;
+ Key_Print : constant Special_Key_Code
+ := Curses_Constants.KEY_PRINT;
+ KEY_LL : constant Special_Key_Code
+ := Curses_Constants.KEY_LL;
+ Key_Bottom : Special_Key_Code renames KEY_LL;
+ KEY_A1 : constant Special_Key_Code
+ := Curses_Constants.KEY_A1;
+ Key_Upper_Left_Of_Keypad : Special_Key_Code renames KEY_A1;
+ KEY_A3 : constant Special_Key_Code
+ := Curses_Constants.KEY_A3;
+ Key_Upper_Right_Of_Keypad : Special_Key_Code renames KEY_A3;
+ KEY_B2 : constant Special_Key_Code
+ := Curses_Constants.KEY_B2;
+ Key_Center_Of_Keypad : Special_Key_Code renames KEY_B2;
+ KEY_C1 : constant Special_Key_Code
+ := Curses_Constants.KEY_C1;
+ Key_Lower_Left_Of_Keypad : Special_Key_Code renames KEY_C1;
+ KEY_C3 : constant Special_Key_Code
+ := Curses_Constants.KEY_C3;
+ Key_Lower_Right_Of_Keypad : Special_Key_Code renames KEY_C3;
+ KEY_BTAB : constant Special_Key_Code
+ := Curses_Constants.KEY_BTAB;
+ Key_Back_Tab : Special_Key_Code renames KEY_BTAB;
+ KEY_BEG : constant Special_Key_Code
+ := Curses_Constants.KEY_BEG;
+ Key_Beginning : Special_Key_Code renames KEY_BEG;
+ Key_Cancel : constant Special_Key_Code
+ := Curses_Constants.KEY_CANCEL;
+ Key_Close : constant Special_Key_Code
+ := Curses_Constants.KEY_CLOSE;
+ Key_Command : constant Special_Key_Code
+ := Curses_Constants.KEY_COMMAND;
+ Key_Copy : constant Special_Key_Code
+ := Curses_Constants.KEY_COPY;
+ Key_Create : constant Special_Key_Code
+ := Curses_Constants.KEY_CREATE;
+ Key_End : constant Special_Key_Code
+ := Curses_Constants.KEY_END;
+ Key_Exit : constant Special_Key_Code
+ := Curses_Constants.KEY_EXIT;
+ Key_Find : constant Special_Key_Code
+ := Curses_Constants.KEY_FIND;
+ Key_Help : constant Special_Key_Code
+ := Curses_Constants.KEY_HELP;
+ Key_Mark : constant Special_Key_Code
+ := Curses_Constants.KEY_MARK;
+ Key_Message : constant Special_Key_Code
+ := Curses_Constants.KEY_MESSAGE;
+ Key_Move : constant Special_Key_Code
+ := Curses_Constants.KEY_MOVE;
+ Key_Next : constant Special_Key_Code
+ := Curses_Constants.KEY_NEXT;
+ Key_Open : constant Special_Key_Code
+ := Curses_Constants.KEY_OPEN;
+ Key_Options : constant Special_Key_Code
+ := Curses_Constants.KEY_OPTIONS;
+ Key_Previous : constant Special_Key_Code
+ := Curses_Constants.KEY_PREVIOUS;
+ Key_Redo : constant Special_Key_Code
+ := Curses_Constants.KEY_REDO;
+ Key_Reference : constant Special_Key_Code
+ := Curses_Constants.KEY_REFERENCE;
+ Key_Refresh : constant Special_Key_Code
+ := Curses_Constants.KEY_REFRESH;
+ Key_Replace : constant Special_Key_Code
+ := Curses_Constants.KEY_REPLACE;
+ Key_Restart : constant Special_Key_Code
+ := Curses_Constants.KEY_RESTART;
+ Key_Resume : constant Special_Key_Code
+ := Curses_Constants.KEY_RESUME;
+ Key_Save : constant Special_Key_Code
+ := Curses_Constants.KEY_SAVE;
+ KEY_SBEG : constant Special_Key_Code
+ := Curses_Constants.KEY_SBEG;
+ Key_Shift_Begin : Special_Key_Code renames KEY_SBEG;
+ KEY_SCANCEL : constant Special_Key_Code
+ := Curses_Constants.KEY_SCANCEL;
+ Key_Shift_Cancel : Special_Key_Code renames KEY_SCANCEL;
+ KEY_SCOMMAND : constant Special_Key_Code
+ := Curses_Constants.KEY_SCOMMAND;
+ Key_Shift_Command : Special_Key_Code renames KEY_SCOMMAND;
+ KEY_SCOPY : constant Special_Key_Code
+ := Curses_Constants.KEY_SCOPY;
+ Key_Shift_Copy : Special_Key_Code renames KEY_SCOPY;
+ KEY_SCREATE : constant Special_Key_Code
+ := Curses_Constants.KEY_SCREATE;
+ Key_Shift_Create : Special_Key_Code renames KEY_SCREATE;
+ KEY_SDC : constant Special_Key_Code
+ := Curses_Constants.KEY_SDC;
+ Key_Shift_Delete_Char : Special_Key_Code renames KEY_SDC;
+ KEY_SDL : constant Special_Key_Code
+ := Curses_Constants.KEY_SDL;
+ Key_Shift_Delete_Line : Special_Key_Code renames KEY_SDL;
+ Key_Select : constant Special_Key_Code
+ := Curses_Constants.KEY_SELECT;
+ KEY_SEND : constant Special_Key_Code
+ := Curses_Constants.KEY_SEND;
+ Key_Shift_End : Special_Key_Code renames KEY_SEND;
+ KEY_SEOL : constant Special_Key_Code
+ := Curses_Constants.KEY_SEOL;
+ Key_Shift_Clear_End_Of_Line : Special_Key_Code renames KEY_SEOL;
+ KEY_SEXIT : constant Special_Key_Code
+ := Curses_Constants.KEY_SEXIT;
+ Key_Shift_Exit : Special_Key_Code renames KEY_SEXIT;
+ KEY_SFIND : constant Special_Key_Code
+ := Curses_Constants.KEY_SFIND;
+ Key_Shift_Find : Special_Key_Code renames KEY_SFIND;
+ KEY_SHELP : constant Special_Key_Code
+ := Curses_Constants.KEY_SHELP;
+ Key_Shift_Help : Special_Key_Code renames KEY_SHELP;
+ KEY_SHOME : constant Special_Key_Code
+ := Curses_Constants.KEY_SHOME;
+ Key_Shift_Home : Special_Key_Code renames KEY_SHOME;
+ KEY_SIC : constant Special_Key_Code
+ := Curses_Constants.KEY_SIC;
+ Key_Shift_Insert_Char : Special_Key_Code renames KEY_SIC;
+ KEY_SLEFT : constant Special_Key_Code
+ := Curses_Constants.KEY_SLEFT;
+ Key_Shift_Cursor_Left : Special_Key_Code renames KEY_SLEFT;
+ KEY_SMESSAGE : constant Special_Key_Code
+ := Curses_Constants.KEY_SMESSAGE;
+ Key_Shift_Message : Special_Key_Code renames KEY_SMESSAGE;
+ KEY_SMOVE : constant Special_Key_Code
+ := Curses_Constants.KEY_SMOVE;
+ Key_Shift_Move : Special_Key_Code renames KEY_SMOVE;
+ KEY_SNEXT : constant Special_Key_Code
+ := Curses_Constants.KEY_SNEXT;
+ Key_Shift_Next_Page : Special_Key_Code renames KEY_SNEXT;
+ KEY_SOPTIONS : constant Special_Key_Code
+ := Curses_Constants.KEY_SOPTIONS;
+ Key_Shift_Options : Special_Key_Code renames KEY_SOPTIONS;
+ KEY_SPREVIOUS : constant Special_Key_Code
+ := Curses_Constants.KEY_SPREVIOUS;
+ Key_Shift_Previous_Page : Special_Key_Code renames KEY_SPREVIOUS;
+ KEY_SPRINT : constant Special_Key_Code
+ := Curses_Constants.KEY_SPRINT;
+ Key_Shift_Print : Special_Key_Code renames KEY_SPRINT;
+ KEY_SREDO : constant Special_Key_Code
+ := Curses_Constants.KEY_SREDO;
+ Key_Shift_Redo : Special_Key_Code renames KEY_SREDO;
+ KEY_SREPLACE : constant Special_Key_Code
+ := Curses_Constants.KEY_SREPLACE;
+ Key_Shift_Replace : Special_Key_Code renames KEY_SREPLACE;
+ KEY_SRIGHT : constant Special_Key_Code
+ := Curses_Constants.KEY_SRIGHT;
+ Key_Shift_Cursor_Right : Special_Key_Code renames KEY_SRIGHT;
+ KEY_SRSUME : constant Special_Key_Code
+ := Curses_Constants.KEY_SRSUME;
+ Key_Shift_Resume : Special_Key_Code renames KEY_SRSUME;
+ KEY_SSAVE : constant Special_Key_Code
+ := Curses_Constants.KEY_SSAVE;
+ Key_Shift_Save : Special_Key_Code renames KEY_SSAVE;
+ KEY_SSUSPEND : constant Special_Key_Code
+ := Curses_Constants.KEY_SSUSPEND;
+ Key_Shift_Suspend : Special_Key_Code renames KEY_SSUSPEND;
+ KEY_SUNDO : constant Special_Key_Code
+ := Curses_Constants.KEY_SUNDO;
+ Key_Shift_Undo : Special_Key_Code renames KEY_SUNDO;
+ Key_Suspend : constant Special_Key_Code
+ := Curses_Constants.KEY_SUSPEND;
+ Key_Undo : constant Special_Key_Code
+ := Curses_Constants.KEY_UNDO;
+ Key_Mouse : constant Special_Key_Code
+ := Curses_Constants.KEY_MOUSE;
+ Key_Resize : constant Special_Key_Code
+ := Curses_Constants.KEY_RESIZE;
+ Key_Max : constant Special_Key_Code
:= Special_Key_Code'Last;
subtype User_Key_Code is Key_Code
@@ -90,12 +386,7 @@ include(`Key_Definitions')
-- This is reserved for user defined key codes. The range between Key_Max
-- and the first user code is reserved for subsystems like menu and forms.
- -- For those who like to use the original key names we produce them were
- -- they differ from the original. Please note that they may differ in
- -- lower/upper case.
-include(`Old_Keys')dnl
-
-------------------------------------------------------------------------------
+ --------------------------------------------------------------------------
type Color_Number is range -1 .. Integer (Interfaces.C.short'Last);
for Color_Number'Size use Interfaces.C.short'Size;
@@ -104,7 +395,15 @@ include(`Old_Keys')dnl
-- (potentially) definable colors. Some of those indices are
-- predefined (see below), although they may not really exist.
-include(`Color_Defs')
+ Black : constant Color_Number := Curses_Constants.COLOR_BLACK;
+ Red : constant Color_Number := Curses_Constants.COLOR_RED;
+ Green : constant Color_Number := Curses_Constants.COLOR_GREEN;
+ Yellow : constant Color_Number := Curses_Constants.COLOR_YELLOW;
+ Blue : constant Color_Number := Curses_Constants.COLOR_BLUE;
+ Magenta : constant Color_Number := Curses_Constants.COLOR_MAGENTA;
+ Cyan : constant Color_Number := Curses_Constants.COLOR_CYAN;
+ White : constant Color_Number := Curses_Constants.COLOR_WHITE;
+
type RGB_Value is range 0 .. Integer (Interfaces.C.short'Last);
for RGB_Value'Size use Interfaces.C.short'Size;
-- Some system may allow to redefine a color by setting RGB values.
@@ -117,8 +416,73 @@ include(`Color_Defs')
-- two colors described by Color_Numbers, one for the foreground and
-- the other for the background
-include(`Character_Attribute_Set_Rep')
- -- (n)curses uses all but the lowest 16 Bits for Attributes.
+ type Character_Attribute_Set is
+ record
+ Stand_Out : Boolean;
+ Under_Line : Boolean;
+ Reverse_Video : Boolean;
+ Blink : Boolean;
+ Dim_Character : Boolean;
+ Bold_Character : Boolean;
+ Protected_Character : Boolean;
+ Invisible_Character : Boolean;
+ Alternate_Character_Set : Boolean;
+ Horizontal : Boolean;
+ Left : Boolean;
+ Low : Boolean;
+ Right : Boolean;
+ Top : Boolean;
+ Vertical : Boolean;
+ end record;
+
+ for Character_Attribute_Set use
+ record
+ Stand_Out at 0 range
+ Curses_Constants.A_STANDOUT_First - Curses_Constants.Attr_First
+ .. Curses_Constants.A_STANDOUT_Last - Curses_Constants.Attr_First;
+ Under_Line at 0 range
+ Curses_Constants.A_UNDERLINE_First - Curses_Constants.Attr_First
+ .. Curses_Constants.A_UNDERLINE_Last - Curses_Constants.Attr_First;
+ Reverse_Video at 0 range
+ Curses_Constants.A_REVERSE_First - Curses_Constants.Attr_First
+ .. Curses_Constants.A_REVERSE_Last - Curses_Constants.Attr_First;
+ Blink at 0 range
+ Curses_Constants.A_BLINK_First - Curses_Constants.Attr_First
+ .. Curses_Constants.A_BLINK_Last - Curses_Constants.Attr_First;
+ Dim_Character at 0 range
+ Curses_Constants.A_DIM_First - Curses_Constants.Attr_First
+ .. Curses_Constants.A_DIM_Last - Curses_Constants.Attr_First;
+ Bold_Character at 0 range
+ Curses_Constants.A_BOLD_First - Curses_Constants.Attr_First
+ .. Curses_Constants.A_BOLD_Last - Curses_Constants.Attr_First;
+ Protected_Character at 0 range
+ Curses_Constants.A_PROTECT_First - Curses_Constants.Attr_First
+ .. Curses_Constants.A_PROTECT_Last - Curses_Constants.Attr_First;
+ Invisible_Character at 0 range
+ Curses_Constants.A_INVIS_First - Curses_Constants.Attr_First
+ .. Curses_Constants.A_INVIS_Last - Curses_Constants.Attr_First;
+ Alternate_Character_Set at 0 range
+ Curses_Constants.A_ALTCHARSET_First - Curses_Constants.Attr_First
+ .. Curses_Constants.A_ALTCHARSET_Last - Curses_Constants.Attr_First;
+ Horizontal at 0 range
+ Curses_Constants.A_HORIZONTAL_First - Curses_Constants.Attr_First
+ .. Curses_Constants.A_HORIZONTAL_Last - Curses_Constants.Attr_First;
+ Left at 0 range
+ Curses_Constants.A_LEFT_First - Curses_Constants.Attr_First
+ .. Curses_Constants.A_LEFT_Last - Curses_Constants.Attr_First;
+ Low at 0 range
+ Curses_Constants.A_LOW_First - Curses_Constants.Attr_First
+ .. Curses_Constants.A_LOW_Last - Curses_Constants.Attr_First;
+ Right at 0 range
+ Curses_Constants.A_RIGHT_First - Curses_Constants.Attr_First
+ .. Curses_Constants.A_RIGHT_Last - Curses_Constants.Attr_First;
+ Top at 0 range
+ Curses_Constants.A_TOP_First - Curses_Constants.Attr_First
+ .. Curses_Constants.A_TOP_Last - Curses_Constants.Attr_First;
+ Vertical at 0 range
+ Curses_Constants.A_VERTICAL_First - Curses_Constants.Attr_First
+ .. Curses_Constants.A_VERTICAL_Last - Curses_Constants.Attr_First;
+ end record;
Normal_Video : constant Character_Attribute_Set := (others => False);
@@ -128,17 +492,29 @@ include(`Character_Attribute_Set_Rep')
Color : Color_Pair;
Ch : Character;
end record;
- pragma Convention (C, Attributed_Character);
+ pragma Convention (C_Pass_By_Copy, Attributed_Character);
-- This is the counterpart for the chtype in C.
-include(`AC_Rep')
+ for Attributed_Character use
+ record
+ Ch at 0 range Curses_Constants.A_CHARTEXT_First
+ .. Curses_Constants.A_CHARTEXT_Last;
+ Color at 0 range Curses_Constants.A_COLOR_First
+ .. Curses_Constants.A_COLOR_Last;
+ pragma Warnings (Off);
+ Attr at 0 range Curses_Constants.Attr_First
+ .. Curses_Constants.Attr_Last;
+ pragma Warnings (On);
+ end record;
+ for Attributed_Character'Size use Curses_Constants.chtype_Size;
+
Default_Character : constant Attributed_Character
:= (Ch => Character'First,
Color => Color_Pair'First,
Attr => (others => False)); -- preelaboratable Normal_Video
type Attributed_String is array (Positive range <>) of Attributed_Character;
- pragma Pack (Attributed_String);
+ pragma Convention (C, Attributed_String);
-- In this binding we allow strings of attributed characters.
------------------
@@ -188,7 +564,78 @@ include(`AC_Rep')
function Number_Of_Color_Pairs return Natural;
pragma Inline (Number_Of_Color_Pairs);
-include(`ACS_Map')dnl
+ subtype ACS_Index is Character range
+ Character'Val (0) .. Character'Val (127);
+ function ACS_Map (Index : ACS_Index) return Attributed_Character;
+ pragma Import (C, ACS_Map, "acs_map_as_function");
+
+ -- Constants for several characters from the Alternate Character Set
+ -- You must use these constants as indices into the ACS_Map function
+ -- to get the corresponding attributed character at runtime
+ ACS_Upper_Left_Corner : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_ULCORNER);
+ ACS_Lower_Left_Corner : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_LLCORNER);
+ ACS_Upper_Right_Corner : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_URCORNER);
+ ACS_Lower_Right_Corner : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_LRCORNER);
+ ACS_Left_Tee : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_LTEE);
+ ACS_Right_Tee : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_RTEE);
+ ACS_Bottom_Tee : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_BTEE);
+ ACS_Top_Tee : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_TTEE);
+ ACS_Horizontal_Line : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_HLINE);
+ ACS_Vertical_Line : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_VLINE);
+ ACS_Plus_Symbol : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_PLUS);
+ ACS_Scan_Line_1 : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_S1);
+ ACS_Scan_Line_9 : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_S9);
+ ACS_Diamond : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_DIAMOND);
+ ACS_Checker_Board : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_CKBOARD);
+ ACS_Degree : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_DEGREE);
+ ACS_Plus_Minus : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_PLMINUS);
+ ACS_Bullet : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_BULLET);
+ ACS_Left_Arrow : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_LARROW);
+ ACS_Right_Arrow : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_RARROW);
+ ACS_Down_Arrow : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_DARROW);
+ ACS_Up_Arrow : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_UARROW);
+ ACS_Board_Of_Squares : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_BOARD);
+ ACS_Lantern : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_LANTERN);
+ ACS_Solid_Block : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_BLOCK);
+ ACS_Scan_Line_3 : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_S3);
+ ACS_Scan_Line_7 : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_S7);
+ ACS_Less_Or_Equal : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_LEQUAL);
+ ACS_Greater_Or_Equal : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_GEQUAL);
+ ACS_PI : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_PI);
+ ACS_Not_Equal : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_NEQUAL);
+ ACS_Sterling : constant ACS_Index
+ := Character'Val (Curses_Constants.ACS_STERLING);
-- MANPAGE(`curs_initscr.3x')
-- | Not implemented: newterm, set_term, delscreen
@@ -196,11 +643,13 @@ include(`ACS_Map')dnl
-- ANCHOR(`stdscr',`Standard_Window')
function Standard_Window return Window;
-- AKA
+ pragma Import (C, Standard_Window, "stdscr_as_function");
pragma Inline (Standard_Window);
-- ANCHOR(`curscr',`Current_Window')
function Current_Window return Window;
-- AKA
+ pragma Import (C, Current_Window, "curscr_as_function");
pragma Inline (Current_Window);
-- ANCHOR(`initscr()',`Init_Screen')
@@ -1476,6 +1925,8 @@ include(`ACS_Map')dnl
-- MANPAGE(`default_colors.3x')
+ Default_Color : constant Color_Number := -1;
+
-- ANCHOR(`use_default_colors()',`Use_Default_Colors')
procedure Use_Default_Colors;
-- AKA
@@ -1553,7 +2004,11 @@ private
-- The next constants are generated and may be different on your
-- architecture.
--
-include(`Window_Offsets')dnl
+
+ Sizeof_Bool : constant := Curses_Constants.Sizeof_Bool;
+
+ type Curses_Bool is mod 2 ** Sizeof_Bool;
+
Curses_Bool_False : constant Curses_Bool := 0;
end Terminal_Interface.Curses;
diff --git a/Ada95/include/MKncurses_def.sh b/Ada95/include/MKncurses_def.sh
index 4aac86554b55..1740bccb8c08 100755
--- a/Ada95/include/MKncurses_def.sh
+++ b/Ada95/include/MKncurses_def.sh
@@ -1,7 +1,7 @@
#! /bin/sh
-# $Id: MKncurses_def.sh,v 1.2 2003/10/25 16:19:46 tom Exp $
+# $Id: MKncurses_def.sh,v 1.3 2003/10/25 16:19:46 tom Exp $
##############################################################################
-# Copyright (c) 2000 Free Software Foundation, Inc. #
+# Copyright (c) 2000,2003 Free 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"), #
diff --git a/Ada95/include/Makefile.in b/Ada95/include/Makefile.in
index 23ab32d6e7b4..d497fb184167 100644
--- a/Ada95/include/Makefile.in
+++ b/Ada95/include/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.3 2011/03/19 23:39:59 tom Exp $
+# $Id: Makefile.in,v 1.5 2018/01/15 22:12:59 tom Exp $
##############################################################################
-# Copyright (c) 2010,2011 Free Software Foundation, Inc. #
+# Copyright (c) 2010-2015,2018 Free 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"), #
@@ -39,7 +39,7 @@
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
@@ -49,7 +49,7 @@ prefix = @prefix@
exec_prefix = @exec_prefix@
includedir = @includedir@
-INSTALL = @INSTALL@
+INSTALL = @INSTALL@ @INSTALL_OPT_O@
INSTALL_DATA = @INSTALL_DATA@
AWK = @AWK@
@@ -68,7 +68,7 @@ install :: $(AUTO_SRC)
uninstall ::
ncurses_def.h: $(srcdir)/ncurses_defs $(srcdir)/MKncurses_def.sh
- AWK=$(AWK) sh $(srcdir)/MKncurses_def.sh $(srcdir)/ncurses_defs >$@
+ AWK=$(AWK) $(SHELL) $(srcdir)/MKncurses_def.sh $(srcdir)/ncurses_defs >$@
tags:
ctags *.[ch]
diff --git a/Ada95/include/ncurses_cfg.hin b/Ada95/include/ncurses_cfg.hin
index 3f8a482a5d84..533a5606218d 100644
--- a/Ada95/include/ncurses_cfg.hin
+++ b/Ada95/include/ncurses_cfg.hin
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2005 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free 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 *
****************************************************************************/
/*
- * $Id: ncurses_cfg.hin,v 1.7 2005/01/02 01:26:58 tom Exp $
+ * $Id: ncurses_cfg.hin,v 1.10 2018/01/01 15:10:43 tom Exp $
*
* This is a template-file used to generate the "ncurses_cfg.h" file.
*
@@ -39,8 +39,8 @@
* 971222) to autoconf 2.12 or 2.13 to do this.
*
* See:
- * http://invisible-island.net/autoconf/
- * ftp://invisible-island.net/autoconf/
+ * https://invisible-island.net/autoconf/
+ * ftp://ftp.invisible-island.net/autoconf/
*/
#ifndef NC_CONFIG_H
#define NC_CONFIG_H
diff --git a/Ada95/make-tar.sh b/Ada95/make-tar.sh
index 7569277d84b7..fbedca72e238 100755
--- a/Ada95/make-tar.sh
+++ b/Ada95/make-tar.sh
@@ -1,7 +1,7 @@
#!/bin/sh
-# $Id: make-tar.sh,v 1.14 2013/10/26 23:10:24 tom Exp $
+# $Id: make-tar.sh,v 1.17 2019/03/02 22:51:42 tom Exp $
##############################################################################
-# Copyright (c) 2010-2011,2013 Free Software Foundation, Inc. #
+# Copyright (c) 2010-2017,2019 Free 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"), #
@@ -66,7 +66,7 @@ edit_specfile() {
make_changelog() {
test -f $1 && chmod u+w $1
cat >$1 <<EOF
-`echo $PKG_NAME|tr '[A-Z]' '[a-z]'` ($NCURSES_MAJOR.$NCURSES_MINOR-$NCURSES_PATCH) unstable; urgency=low
+`echo $PKG_NAME|tr '[A-Z]' '[a-z]'` ($NCURSES_MAJOR.$NCURSES_MINOR+$NCURSES_PATCH) unstable; urgency=low
* snapshot of ncurses subpackage for $PKG_NAME.
@@ -80,7 +80,7 @@ test -d ./Ada95 && cd ./Ada95
SOURCE=`cd ..;pwd`
BUILD=$TMPDIR/make-tar$$
-trap "cd /; rm -rf $BUILD; exit 0" 0 1 2 5 15
+trap "cd /; rm -rf $BUILD; exit 0" EXIT INT QUIT TERM HUP
umask 077
if ! ( mkdir $BUILD )
diff --git a/Ada95/package/AdaCurses-doc.spec b/Ada95/package/AdaCurses-doc.spec
index eb7e6b8fedb0..c5b68dd49b9e 100644
--- a/Ada95/package/AdaCurses-doc.spec
+++ b/Ada95/package/AdaCurses-doc.spec
@@ -3,13 +3,13 @@ Summary: AdaCurses - Ada95 binding documentation for ncurses
%define AppVersion MAJOR.MINOR
%define AppRelease YYYYMMDD
%define AppPackage %{AppProgram}-doc
-# $Id: AdaCurses-doc.spec,v 1.1 2011/03/26 19:22:39 tom Exp $
+# $Id: AdaCurses-doc.spec,v 1.7 2019/11/23 21:15:53 tom Exp $
Name: %{AppPackage}
Version: %{AppVersion}
Release: %{AppRelease}
License: MIT
Group: Applications/Development
-URL: ftp://invisible-island.net/%{AppProgram}
+URL: ftp://ftp.invisible-island.net/%{AppProgram}
Source0: %{AppProgram}-%{AppRelease}.tgz
Packager: Thomas Dickey <dickey@invisible-island.net>
@@ -18,16 +18,18 @@ This is the Ada95 binding documentation from the ncurses MAJOR.MINOR
distribution, for patch-date YYYYMMDD.
%prep
+%define debug_package %{nil}
+
%setup -q -n %{AppProgram}-%{AppRelease}
%build
INSTALL_PROGRAM='${INSTALL}' \
- ./configure \
- --target %{_target_platform} \
- --prefix=%{_prefix} \
- --datadir=%{_datadir} \
- --with-ada-sharedlib
+%configure \
+ --target %{_target_platform} \
+ --prefix=%{_prefix} \
+ --datadir=%{_datadir} \
+ --with-ada-sharedlib
%install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
@@ -35,14 +37,25 @@ INSTALL_PROGRAM='${INSTALL}' \
(cd doc && make install.html DESTDIR=$RPM_BUILD_ROOT )
%clean
-[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
+if rm -rf $RPM_BUILD_ROOT; then
+ echo OK
+else
+ find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1
+fi
+exit 0
%files
%defattr(-,root,root)
-%{_datadir}/doc/AdaCurses
+%{_datadir}/doc/%{AppProgram}
%changelog
# each patch should add its ChangeLog entries here
-* Sat Mar 26 2010 Thomas Dickey
+* Sat Nov 16 2019 Thomas Dickey
+- modify clean-rule to work around Fedora NFS bugs.
+
+* Sat Sep 07 2019 Thomas Dickey
+- use AppProgram to replace "AdaCurses" globally
+
+* Sat Mar 26 2011 Thomas Dickey
- initial version
diff --git a/Ada95/package/AdaCurses.spec b/Ada95/package/AdaCurses.spec
index c98e10470971..9b39110eb842 100644
--- a/Ada95/package/AdaCurses.spec
+++ b/Ada95/package/AdaCurses.spec
@@ -1,14 +1,14 @@
-Summary: AdaCurses - Ada95 binding for ncurses
+Summary: Ada95 binding for ncurses
%define AppProgram AdaCurses
%define AppVersion MAJOR.MINOR
%define AppRelease YYYYMMDD
-# $Id: AdaCurses.spec,v 1.12 2011/04/01 00:08:32 tom Exp $
+# $Id: AdaCurses.spec,v 1.25 2019/11/23 21:15:31 tom Exp $
Name: %{AppProgram}
Version: %{AppVersion}
Release: %{AppRelease}
License: MIT
Group: Applications/Development
-URL: ftp://invisible-island.net/%{AppProgram}
+URL: ftp://ftp.invisible-island.net/%{AppProgram}
Source0: %{AppProgram}-%{AppRelease}.tgz
Packager: Thomas Dickey <dickey@invisible-island.net>
@@ -17,14 +17,25 @@ This is the Ada95 binding from the ncurses MAJOR.MINOR distribution, for
patch-date YYYYMMDD.
In addition to a library, this package installs sample programs in
-"bin/AdaCurses" to avoid conflict with other packages.
+"bin/%{AppProgram}" to avoid conflict with other packages.
%prep
+%define debug_package %{nil}
+
+%define need_filter %(if grep -E -i '(mageia|red hat|fedora)' /etc/issue >/dev/null; then echo 1; elif test -f /etc/fedora-release; then echo 1; else echo 0; fi)
+
+%if %{need_filter} == 1
+# http://fedoraproject.org/wiki/EPEL:Packaging_Autoprovides_and_Requires_Filtering
+%filter_from_requires /lib%{AppProgram}.so.1/d
+%filter_setup
+%endif
+
%setup -q -n %{AppProgram}-%{AppRelease}
%build
%define ada_libdir %{_prefix}/lib/ada/adalib
+%define ada_include %{_prefix}/share/ada/adainclude
INSTALL_PROGRAM='${INSTALL}' \
./configure \
@@ -32,6 +43,8 @@ INSTALL_PROGRAM='${INSTALL}' \
--prefix=%{_prefix} \
--bindir=%{_bindir} \
--libdir=%{_libdir} \
+ --with-ada-include=%{ada_include} \
+ --with-ada-objects=%{ada_libdir} \
--mandir=%{_mandir} \
--datadir=%{_datadir} \
--disable-rpath-link \
@@ -43,36 +56,52 @@ make
%install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
-make install DESTDIR=$RPM_BUILD_ROOT
+make install DESTDIR=$RPM_BUILD_ROOT
( cd samples &&
make install.examples \
- DESTDIR=$RPM_BUILD_ROOT \
- BINDIR=$RPM_BUILD_ROOT%{_bindir}/%{AppProgram}
+ DESTDIR=$RPM_BUILD_ROOT \
+ BINDIR=$RPM_BUILD_ROOT%{_bindir}/%{AppProgram}
)
%clean
-[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
+if rm -rf $RPM_BUILD_ROOT; then
+ echo OK
+else
+ find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1
+fi
+exit 0
%files
%defattr(-,root,root)
%{_bindir}/adacurses*-config
%{_bindir}/%{AppProgram}/*
-%{_libdir}/libAdaCurses.*
-%{ada_libdir}/libAdaCurses.*
-%{ada_libdir}/terminal_interface*
+%{ada_libdir}/
+%if %{need_filter} == 1
+%{_libdir}/lib%{AppProgram}.*
+%endif
%{_mandir}/man1/adacurses*-config.1*
%{_datadir}/%{AppProgram}/*
-%{_datadir}/ada/adainclude/terminal_interface*
+%{ada_include}/
%changelog
# each patch should add its ChangeLog entries here
-* Thu Mar 31 2010 Thomas Dickey
+* Sat Nov 16 2019 Thomas Dickey
+- modify clean-rule to work around Fedora NFS bugs.
+
+* Sat Sep 14 2019 Thomas Dickey
+- build-fixes for Fedora29, OpenSUSE
+
+* Sat Sep 07 2019 Thomas Dickey
+- use AppProgram to replace "AdaCurses" globally
+- amend install-paths to work with Fedora30
+
+* Thu Mar 31 2011 Thomas Dickey
- use --with-shared option for consistency with --with-ada-sharelib
- ensure that MY_DATADIR is set when installing examples
- add ada_libdir symbol to handle special case where libdir is /usr/lib64
- use --disable-rpath-link to link sample programs without rpath
-* Fri Mar 25 2010 Thomas Dickey
+* Fri Mar 25 2011 Thomas Dickey
- initial version
diff --git a/Ada95/package/debian/compat b/Ada95/package/debian/compat
index 7ed6ff82de6b..ec635144f600 100644
--- a/Ada95/package/debian/compat
+++ b/Ada95/package/debian/compat
@@ -1 +1 @@
-5
+9
diff --git a/Ada95/package/debian/control b/Ada95/package/debian/control
index 88af9706d0c0..030adb17a5d2 100644
--- a/Ada95/package/debian/control
+++ b/Ada95/package/debian/control
@@ -4,12 +4,12 @@ Section: misc
Priority: optional
Standards-Version: 3.8.4
Build-Depends: debhelper (>= 5)
-Homepage: http://invisible-island.net/adacurses/
+Homepage: https://invisible-island.net/adacurses/
Package: adacurses
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: AdaCurses - Ada95 binding for ncurses
+Description: Ada95 binding for ncurses
This package installs as "adacurses" to avoid conflict with other packages.
This is the Ada95 binding from the ncurses distribution.
.
diff --git a/Ada95/package/debian/copyright b/Ada95/package/debian/copyright
index e681a6bd58af..d248d73b165e 100644
--- a/Ada95/package/debian/copyright
+++ b/Ada95/package/debian/copyright
@@ -1,9 +1,15 @@
-Upstream source http://invisible-island.net/ncurses/ncurses-examples.html
+Upstream source https://invisible-island.net/ncurses/ncurses-examples.html
Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
-------------------------------------------------------------------------------
- Copyright (c) 1998-2010,2011 Free Software Foundation, Inc.
+Files: *
+Copyright: 1998-2019,2020 Free Software Foundation, Inc.
+Licence: X11
+
+Files: aclocal.m4 package
+Copyright: 2010-2019,2020 by Thomas E. Dickey
+Licence: X11
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
@@ -28,11 +34,12 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
holders shall not be used in advertising or otherwise to promote the
sale, use or other dealings in this Software without prior written
authorization.
--------------------------------------------------------------------------------
+-------------------------------------------------------------------------------
Files: install-sh
Copyright: 1994 X Consortium
-Licence: other-BSD
+Licence: X11
+
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
@@ -67,3 +74,5 @@ Licence: other-BSD
On Debian systems, the complete text of the GNU General
Public License can be found in '/usr/share/common-licenses/GPL-2'
+
+-- vile: txtmode file-encoding=utf-8
diff --git a/Ada95/package/debian/rules b/Ada95/package/debian/rules
index ad1a35101b10..708d3eb2d591 100755
--- a/Ada95/package/debian/rules
+++ b/Ada95/package/debian/rules
@@ -14,7 +14,9 @@ DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
TARGET_DIR = $(CURDIR)/debian/adacurses
SAMPLE_DIR = $(TARGET_DIR)/usr/bin/AdaCurses
-CFLAGS =
+CFLAGS = $(shell dpkg-buildflags --get CFLAGS) $(CC_NORMAL)
+CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS)
+LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS)
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
@@ -30,13 +32,16 @@ configure: configure-stamp
configure-stamp:
dh_testdir
- CFLAGS="$(CFLAGS)" ./configure \
+ CFLAGS="$(CFLAGS)" \
+ CPPFLAGS="$(CPPFLAGS)" \
+ LDFLAGS="$(LDFLAGS)" ./configure \
--host=$(DEB_HOST_GNU_TYPE) \
--build=$(DEB_BUILD_GNU_TYPE) \
--prefix=/usr \
--disable-rpath-link \
--with-shared \
- --with-ada-sharedlib
+ --with-ada-sharedlib \
+ --without-pkg-config
touch configure-stamp
@@ -88,6 +93,7 @@ binary-arch: build install
dh_compress
dh_fixperms
dh_installdeb
+ dh_makeshlibs
dh_shlibdeps
dh_gencontrol
dh_md5sums
diff --git a/Ada95/package/debian/watch b/Ada95/package/debian/watch
index 4794ae385276..1b870ba1946f 100644
--- a/Ada95/package/debian/watch
+++ b/Ada95/package/debian/watch
@@ -1,4 +1,4 @@
version=3
-opts=passive ftp://invisible-island.net/AdaCurses/AdaCurses-([\d.]+)\.tgz \
+opts=passive ftp://ftp.invisible-island.net/AdaCurses/AdaCurses-([\d.]+)\.tgz \
debian uupdate
diff --git a/Ada95/samples/Makefile.in b/Ada95/samples/Makefile.in
index 89498629cb8c..c7323e8b249e 100644
--- a/Ada95/samples/Makefile.in
+++ b/Ada95/samples/Makefile.in
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2018,2019 Free 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"), #
@@ -28,11 +28,11 @@
#
# Author: Juergen Pfeifer, 1996
#
-# $Id: Makefile.in,v 1.48 2012/10/06 19:00:42 tom Exp $
+# $Id: Makefile.in,v 1.57 2019/12/22 01:09:19 tom Exp $
#
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
@@ -47,7 +47,7 @@ datadir = @datadir@
libdir = @libdir@
includedir = @includedir@
-INSTALL = @INSTALL@
+INSTALL = @INSTALL@ @INSTALL_OPT_O@
INSTALL_DATA = @INSTALL_DATA@
AWK = @AWK@
@@ -81,26 +81,32 @@ BINDIR = $(DESTDIR)$(bindir)
DATADIR = $(DESTDIR)$(datadir)
LIBDIR = $(DESTDIR)$(libdir)
-MY_DATADIR = $(DATADIR)/AdaCurses
+MY_DATADIR = $(DATADIR)/@ADA_LIBNAME@
+THIS_DATADIR = $(datadir)/@ADA_LIBNAME@
################################################################################
-ada_srcdir=../src
+ada_srcdir = ../src
-LD_FLAGS = @LD_MODEL@ $(LOCAL_LIBS) @LDFLAGS@ @LIBS@ @LOCAL_LDFLAGS2@ $(LDFLAGS)
+LD_FLAGS = @LD_MODEL@ $(LOCAL_LIBS) @LDFLAGS@ @LIBS@ @LOCAL_LDFLAGS2@ $(LDFLAGS)
-ADA = @cf_ada_compiler@
-ADAFLAGS = @ADAFLAGS@ -I$(srcdir)
+ADA = @cf_ada_compiler@
+ADAPREP = gnatprep
+ADAFLAGS = @ADAFLAGS@ -I$(srcdir)
-ADAMAKE = @cf_ada_make@
-ADAMAKEFLAGS = -a -A$(srcdir) -A$(ada_srcdir) -A$(srcdir)/$(ada_srcdir)
+ADAMAKE = @cf_ada_make@
+ADAMAKEFLAGS = -a \
+ -A$(srcdir) \
+ -A$(ada_srcdir) \
+ -A$(srcdir)/$(ada_srcdir)
-ALIB = @cf_ada_package@
-ABASE = $(ALIB)-curses
+ALIB = @cf_ada_package@
+ABASE = $(ALIB)-curses
+THISLIB = sample
-CARGS =-cargs $(ADAFLAGS)
-LARGS =-largs -L../lib -lAdaCurses @TEST_ARG2@ $(LD_FLAGS) @TEST_LIBS2@
+CARGS = -cargs $(ADAFLAGS)
+LARGS = -largs -L../lib -l@ADA_LIBNAME@ @TEST_ARG2@ $(LD_FLAGS) @TEST_LIBS2@
-PROGS = tour$x ncurses$x @USE_GNAT_SIGINT@ rain$x
+PROGS = tour$x ncurses$x @USE_GNAT_SIGINT@ rain$x
all :: $(PROGS)
@echo made $@
@@ -133,13 +139,15 @@ $(BINDIR) \
$(MY_DATADIR) :
mkdir -p $@
-ncurses$x :
+AUTO_SRC = $(THISLIB)-explanation.adb
+
+ncurses$x : $(AUTO_SRC)
$(ADAMAKE) $(ADAMAKEFLAGS) ncurses $(CARGS) $(LARGS)
-tour$x :
+tour$x : $(AUTO_SRC)
$(ADAMAKE) $(ADAMAKEFLAGS) tour $(CARGS) $(LARGS)
-rain$x :
+rain$x : $(AUTO_SRC)
$(ADAMAKE) $(ADAMAKEFLAGS) rain $(CARGS) $(LARGS)
mostlyclean:
@@ -147,10 +155,15 @@ mostlyclean:
clean :: mostlyclean
rm -f *.o *.ali b_t*.* *.s $(PROGS) a.out core b_*_test.c *.xr[bs] \
- trace screendump b~*.ad[bs]
+ rm -f $(AUTO_SRC)
+ rm -f trace screendump b~*.ad[bs]
distclean :: clean
rm -f Makefile
realclean :: distclean
@echo made $@
+
+$(THISLIB)-explanation.adb : $(srcdir)/$(THISLIB)-explanation.adb_p
+ rm -f $@
+ $(ADAPREP) -DTHIS_DATADIR=\"$(THIS_DATADIR)/\" @GNATPREP_OPTS@ $(srcdir)/$(THISLIB)-explanation.adb_p $@
diff --git a/Ada95/samples/ncurses2-acs_and_scroll.adb b/Ada95/samples/ncurses2-acs_and_scroll.adb
index 00e9afc26078..0d2a26b0449c 100644
--- a/Ada95/samples/ncurses2-acs_and_scroll.adb
+++ b/Ada95/samples/ncurses2-acs_and_scroll.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 2000-2011,2018 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
-- Version Control
--- $Revision: 1.11 $
--- $Date: 2011/03/23 00:33:00 $
+-- $Revision: 1.12 $
+-- $Date: 2018/07/07 23:31:55 $
-- Binding Version 01.00
------------------------------------------------------------------------------
-- Windows and scrolling tester.
@@ -226,14 +226,11 @@ procedure ncurses2.acs_and_scroll is
mypair : pair;
- use Ada.Strings.Fixed;
-
begin
Move_Cursor (Line => Lines - 4, Column => 0);
for n in legend'Range loop
pos := Ada.Strings.Fixed.Index (Source => legend (n).msg.all,
Pattern => "%s");
- -- buf := (others => ' ');
buf := To_Bounded_String (legend (n).msg.all);
case legend (n).code is
when 0 => null;
diff --git a/Ada95/samples/ncurses2-demo_forms.adb b/Ada95/samples/ncurses2-demo_forms.adb
index 1afbb88bf3ff..0eeeb5e3f862 100644
--- a/Ada95/samples/ncurses2-demo_forms.adb
+++ b/Ada95/samples/ncurses2-demo_forms.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000-2006,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 2000-2011,2014 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
-- Version Control
--- $Revision: 1.6 $
--- $Date: 2011/03/23 00:44:12 $
+-- $Revision: 1.7 $
+-- $Date: 2014/09/13 19:10:18 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with ncurses2.util; use ncurses2.util;
@@ -317,8 +317,9 @@ procedure ncurses2.demo_forms is
function my_form_driver (f : Form; c : Key_Code) return Boolean is
flag : constant Driver_Result := Driver (f, F_Validate_Field);
begin
- if c = Form_Request_Code'Last + 1
- and flag = Form_Ok then
+ if c = Form_Request_Code'Last + 1 and
+ flag = Form_Ok
+ then
return True;
else
Beep;
diff --git a/Ada95/samples/ncurses2-demo_pad.adb b/Ada95/samples/ncurses2-demo_pad.adb
index b1b72aec0b60..781e3a003057 100644
--- a/Ada95/samples/ncurses2-demo_pad.adb
+++ b/Ada95/samples/ncurses2-demo_pad.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000-2008,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 2000-2014,2020 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
-- Version Control
--- $Revision: 1.8 $
--- $Date: 2011/03/23 00:44:12 $
+-- $Revision: 1.10 $
+-- $Date: 2020/01/18 17:02:13 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with ncurses2.util; use ncurses2.util;
@@ -437,7 +437,8 @@ procedure ncurses2.demo_pad is
-- pan rightwards
-- if (basex + portx - (pymax > porty) < pxmax)
if basex + portx -
- Column_Position (greater (pymax, porty)) < pxmax then
+ Column_Position (greater (pymax, porty)) < pxmax
+ then
-- if basex + portx < pxmax or
-- (pymax > porty and basex + portx - 1 < pxmax) then
basex := basex + 1;
@@ -457,7 +458,8 @@ procedure ncurses2.demo_pad is
-- pan downwards
-- same as if (basey + porty - (pxmax > portx) < pymax)
if basey + porty -
- Line_Position (greater (pxmax, portx)) < pymax then
+ Line_Position (greater (pxmax, portx)) < pymax
+ then
-- if (basey + porty < pymax) or
-- (pxmax > portx and basey + porty - 1 < pymax) then
basey := basey + 1;
@@ -486,7 +488,7 @@ procedure ncurses2.demo_pad is
-- more writing off the screen.
-- Interestingly, the exception is not handled if
-- we put a block around this.
- -- delcare --begin
+ -- declare --begin
if top_y /= 0 and top_x /= 0 then
Add (Line => top_y - 1, Column => top_x - 1,
Ch => ACS_Map (ACS_Upper_Left_Corner));
@@ -577,7 +579,7 @@ procedure ncurses2.demo_pad is
declare
-- the C version allows the panel to have a zero height
- -- wich raise the exception
+ -- which raise the exception
begin
Refresh_Without_Update
(
diff --git a/Ada95/samples/ncurses2-demo_panels.adb b/Ada95/samples/ncurses2-demo_panels.adb
index 9693e1a13ba3..5e2320adcdff 100644
--- a/Ada95/samples/ncurses2-demo_panels.adb
+++ b/Ada95/samples/ncurses2-demo_panels.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000-2008,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 2000-2011,2018 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
-- Version Control
--- $Revision: 1.7 $
--- $Date: 2011/03/23 00:44:12 $
+-- $Revision: 1.8 $
+-- $Date: 2018/07/07 23:31:02 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with ncurses2.util; use ncurses2.util;
@@ -47,7 +47,6 @@ with Terminal_Interface.Curses.Panels.User_Data;
with ncurses2.genericPuts;
procedure ncurses2.demo_panels (nap_mseci : Integer) is
- use Int_IO;
function mkpanel (color : Color_Number;
rows : Line_Count;
diff --git a/Ada95/samples/ncurses2-getch_test.adb b/Ada95/samples/ncurses2-getch_test.adb
index 2802cfb55017..8f020e7c123b 100644
--- a/Ada95/samples/ncurses2-getch_test.adb
+++ b/Ada95/samples/ncurses2-getch_test.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000-2008,2009 Free Software Foundation, Inc. --
+-- Copyright (c) 2000-2009,2014 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
-- Version Control
--- $Revision: 1.8 $
--- $Date: 2009/12/26 17:38:58 $
+-- $Revision: 1.9 $
+-- $Date: 2014/09/13 19:10:18 $
-- Binding Version 01.00
------------------------------------------------------------------------------
-- Character input test
@@ -210,8 +210,10 @@ begin
end;
elsif c = Character'Pos ('s') then
ShellOut (True);
- elsif c = Character'Pos ('x') or c = Character'Pos ('q') or
- (c = Key_None and blockflag = Blocking) then
+ elsif c = Character'Pos ('x') or
+ c = Character'Pos ('q') or
+ (c = Key_None and blockflag = Blocking)
+ then
exit;
elsif c = Character'Pos ('?') then
Add (Str => "Type any key to see its keypad value. Also:");
diff --git a/Ada95/samples/ncurses2-m.adb b/Ada95/samples/ncurses2-m.adb
index 5b20428c20a1..1e53b3fe04e9 100644
--- a/Ada95/samples/ncurses2-m.adb
+++ b/Ada95/samples/ncurses2-m.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. --
+-- Copyright (c) 2000-2018,2020 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
-- Version Control
--- $Revision: 1.8 $
--- $Date: 2008/07/26 18:47:50 $
+-- $Revision: 1.10 $
+-- $Date: 2020/01/18 17:02:13 $
-- Binding Version 01.00
------------------------------------------------------------------------------
-- TODO use Default_Character where appropriate
@@ -50,7 +50,6 @@ with Terminal_Interface.Curses.Trace; use Terminal_Interface.Curses.Trace;
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Characters.Latin_1;
--- with Ada.Characters.Handling;
with Ada.Command_Line; use Ada.Command_Line;
@@ -76,7 +75,6 @@ with ncurses2.trace_set;
with ncurses2.getopt; use ncurses2.getopt;
package body ncurses2.m is
- use Int_IO;
function To_trace (n : Integer) return Trace_Attribute_Set;
procedure usage;
@@ -188,7 +186,7 @@ package body ncurses2.m is
Erase (Win);
Move_Cursor (Win, 0, 0);
Add (Win, "header:" & Columns'Img & " columns");
- -- 'Img is a GNAT extention
+ -- 'Img is a GNAT extension
Refresh_Without_Update (Win);
return 0; -- Curses_OK;
end rip_header;
@@ -304,7 +302,6 @@ package body ncurses2.m is
tmpi : Integer;
package myio is new Ada.Text_IO.Integer_IO (Integer);
- use myio;
save_trace : Integer := 0;
save_trace_set : Trace_Attribute_Set;
diff --git a/Ada95/samples/ncurses2-overlap_test.adb b/Ada95/samples/ncurses2-overlap_test.adb
index ddf8a9a31f64..948b2b38d623 100644
--- a/Ada95/samples/ncurses2-overlap_test.adb
+++ b/Ada95/samples/ncurses2-overlap_test.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000-2004,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 2000-2014,2015 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
-- Version Control
--- $Revision: 1.5 $
--- $Date: 2011/03/19 12:07:18 $
+-- $Revision: 1.7 $
+-- $Date: 2015/07/25 23:43:19 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with ncurses2.util; use ncurses2.util;
@@ -72,8 +72,9 @@ procedure ncurses2.overlap_test is
Get_Size (win, y1, x1);
for y in 0 .. y1 - 1 loop
for x in 0 .. x1 - 1 loop
- if ((x > (x1 - 1) / 3) and (x <= (2 * (x1 - 1)) / 3))
- or (((y > (y1 - 1) / 3) and (y <= (2 * (y1 - 1)) / 3))) then
+ if ((x > (x1 - 1) / 3) and (x <= (2 * (x1 - 1)) / 3)) or
+ (((y > (y1 - 1) / 3) and (y <= (2 * (y1 - 1)) / 3)))
+ then
Move_Cursor (win, y, x);
Add (win, Ch => ch);
end if;
@@ -93,7 +94,7 @@ begin
Add (Str => "This test shows the behavior of wnoutrefresh() with " &
"respect to");
Add (Ch => newl);
- Add (Str => "the shared region of two overlapping windows A and B. "&
+ Add (Str => "the shared region of two overlapping windows A and B. " &
"The cross");
Add (Ch => newl);
Add (Str => "pattern in each window does not overlap the other.");
diff --git a/Ada95/samples/ncurses2-slk_test.adb b/Ada95/samples/ncurses2-slk_test.adb
index aa368ba5f9ce..755542c31547 100644
--- a/Ada95/samples/ncurses2-slk_test.adb
+++ b/Ada95/samples/ncurses2-slk_test.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 2000-2011,2018 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
-- Version Control
--- $Revision: 1.9 $
--- $Date: 2011/03/19 12:03:08 $
+-- $Revision: 1.10 $
+-- $Date: 2018/07/07 23:30:32 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with ncurses2.util; use ncurses2.util;
@@ -76,8 +76,6 @@ procedure ncurses2.slk_test is
Str := To_Unbounded_String (To_Ada (Txt, True));
end myGet;
- use Int_IO;
-
use Ada.Strings.Unbounded;
c : Key_Code;
diff --git a/Ada95/samples/ncurses2-trace_set.adb b/Ada95/samples/ncurses2-trace_set.adb
index 7537afe407ee..df4468b23812 100644
--- a/Ada95/samples/ncurses2-trace_set.adb
+++ b/Ada95/samples/ncurses2-trace_set.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000-2008,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 2000-2011,2014 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
-- Version Control
--- $Revision: 1.5 $
--- $Date: 2011/03/23 00:40:33 $
+-- $Revision: 1.6 $
+-- $Date: 2014/09/13 19:10:18 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with ncurses2.util; use ncurses2.util;
@@ -141,7 +141,8 @@ procedure ncurses2.trace_set is
(super.Internal_Calls or not sub.Internal_Calls) and
(super.Character_Calls or not sub.Character_Calls) and
(super.Termcap_TermInfo or not sub.Termcap_TermInfo) and
- True then
+ True
+ then
return True;
else
return False;
@@ -250,93 +251,107 @@ procedure ncurses2.trace_set is
else
if subset (tlevel,
- Trace_Attribute_Set'(Times => True, others => False)) then
+ Trace_Attribute_Set'(Times => True, others => False))
+ then
Append (buf, "Times");
Append (buf, ", ");
end if;
if subset (tlevel,
- Trace_Attribute_Set'(Tputs => True, others => False)) then
+ Trace_Attribute_Set'(Tputs => True, others => False))
+ then
Append (buf, "Tputs");
Append (buf, ", ");
end if;
if subset (tlevel,
- Trace_Attribute_Set'(Update => True, others => False)) then
+ Trace_Attribute_Set'(Update => True, others => False))
+ then
Append (buf, "Update");
Append (buf, ", ");
end if;
if subset (tlevel,
Trace_Attribute_Set'(Cursor_Move => True,
- others => False)) then
+ others => False))
+ then
Append (buf, "Cursor_Move");
Append (buf, ", ");
end if;
if subset (tlevel,
Trace_Attribute_Set'(Character_Output => True,
- others => False)) then
+ others => False))
+ then
Append (buf, "Character_Output");
Append (buf, ", ");
end if;
if subset (tlevel,
- Trace_Ordinary) then
+ Trace_Ordinary)
+ then
Append (buf, "Ordinary");
Append (buf, ", ");
end if;
if subset (tlevel,
- Trace_Attribute_Set'(Calls => True, others => False)) then
+ Trace_Attribute_Set'(Calls => True, others => False))
+ then
Append (buf, "Calls");
Append (buf, ", ");
end if;
if subset (tlevel,
Trace_Attribute_Set'(Virtual_Puts => True,
- others => False)) then
+ others => False))
+ then
Append (buf, "Virtual_Puts");
Append (buf, ", ");
end if;
if subset (tlevel,
Trace_Attribute_Set'(Input_Events => True,
- others => False)) then
+ others => False))
+ then
Append (buf, "Input_Events");
Append (buf, ", ");
end if;
if subset (tlevel,
Trace_Attribute_Set'(TTY_State => True,
- others => False)) then
+ others => False))
+ then
Append (buf, "TTY_State");
Append (buf, ", ");
end if;
if subset (tlevel,
Trace_Attribute_Set'(Internal_Calls => True,
- others => False)) then
+ others => False))
+ then
Append (buf, "Internal_Calls");
Append (buf, ", ");
end if;
if subset (tlevel,
Trace_Attribute_Set'(Character_Calls => True,
- others => False)) then
+ others => False))
+ then
Append (buf, "Character_Calls");
Append (buf, ", ");
end if;
if subset (tlevel,
Trace_Attribute_Set'(Termcap_TermInfo => True,
- others => False)) then
+ others => False))
+ then
Append (buf, "Termcap_TermInfo");
Append (buf, ", ");
end if;
if subset (tlevel,
- Trace_Maximum) then
+ Trace_Maximum)
+ then
Append (buf, "Maximium");
Append (buf, ", ");
end if;
diff --git a/Ada95/samples/ncurses2-util.adb b/Ada95/samples/ncurses2-util.adb
index 8ae327242ba4..e0f3d35bbca4 100644
--- a/Ada95/samples/ncurses2-util.adb
+++ b/Ada95/samples/ncurses2-util.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. --
+-- Copyright (c) 2000-2008,2014 Free 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,16 +35,12 @@
------------------------------------------------------------------------------
-- Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
-- Version Control
--- $Revision: 1.7 $
--- $Date: 2008/07/26 18:51:20 $
+-- $Revision: 1.9 $
+-- $Date: 2014/05/24 21:32:18 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Ada.Text_IO; use Ada.Text_IO;
-pragma Warnings (Off);
-with Terminal_Interface.Curses.Aux;
-pragma Warnings (On);
-
with Terminal_Interface.Curses.Trace; use Terminal_Interface.Curses.Trace;
with Interfaces.C;
@@ -115,7 +111,6 @@ package body ncurses2.util is
procedure Cannot (s : String) is
use Interfaces.C;
use Interfaces.C.Strings;
- use Terminal_Interface.Curses.Aux;
function getenv (x : char_array) return chars_ptr;
pragma Import (C, getenv, "getenv");
tmp1 : char_array (0 .. 10);
diff --git a/Ada95/samples/rain.ads b/Ada95/samples/rain.ads
index 3ad1912c5e49..9c7242e9b3a3 100644
--- a/Ada95/samples/rain.ads
+++ b/Ada95/samples/rain.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -36,7 +36,7 @@
-- Author: Laurent Pautet <pautet@gnat.com>
-- Modified by: Juergen Pfeifer, 1997
-- Version Control
--- $Revision: 1.6 $
+-- $Revision: 1.7 $
-- Binding Version 01.00
------------------------------------------------------------------------------
-- --
diff --git a/Ada95/samples/sample-curses_demo-attributes.adb b/Ada95/samples/sample-curses_demo-attributes.adb
index c49f37d60246..b0f60d4a3465 100644
--- a/Ada95/samples/sample-curses_demo-attributes.adb
+++ b/Ada95/samples/sample-curses_demo-attributes.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.12 $
+-- $Revision: 1.13 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Terminal_Interface.Curses; use Terminal_Interface.Curses;
diff --git a/Ada95/samples/sample-curses_demo-attributes.ads b/Ada95/samples/sample-curses_demo-attributes.ads
index 6d9b4e8df80f..d1032d99aed1 100644
--- a/Ada95/samples/sample-curses_demo-attributes.ads
+++ b/Ada95/samples/sample-curses_demo-attributes.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.9 $
+-- $Revision: 1.10 $
-- Binding Version 01.00
------------------------------------------------------------------------------
package Sample.Curses_Demo.Attributes is
diff --git a/Ada95/samples/sample-curses_demo-mouse.ads b/Ada95/samples/sample-curses_demo-mouse.ads
index ad78d0d0a750..e48834dfe75d 100644
--- a/Ada95/samples/sample-curses_demo-mouse.ads
+++ b/Ada95/samples/sample-curses_demo-mouse.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.9 $
+-- $Revision: 1.10 $
-- Binding Version 01.00
------------------------------------------------------------------------------
package Sample.Curses_Demo.Mouse is
diff --git a/Ada95/samples/sample-curses_demo.ads b/Ada95/samples/sample-curses_demo.ads
index ed4ad0f019f8..2ee0d9d24095 100644
--- a/Ada95/samples/sample-curses_demo.ads
+++ b/Ada95/samples/sample-curses_demo.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.9 $
+-- $Revision: 1.10 $
-- Binding Version 01.00
------------------------------------------------------------------------------
package Sample.Curses_Demo is
diff --git a/Ada95/samples/sample-explanation.adb b/Ada95/samples/sample-explanation.adb_p
index 5587099b242a..e1752df137a2 100644
--- a/Ada95/samples/sample-explanation.adb
+++ b/Ada95/samples/sample-explanation.adb_p
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2014,2019 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.26 $
--- $Date: 2011/03/26 22:33:29 $
+-- $Revision: 1.4 $
+-- $Date: 2019/09/08 00:14:54 $
-- Binding Version 01.00
------------------------------------------------------------------------------
-- Poor mans help system. This scans a sequential file for key lines and
@@ -321,8 +321,10 @@ package body Sample.Explanation is
Outer :
loop
exit Outer when not Next_Line;
- if Last = (1 + Key'Length) and then Key = Buffer (2 .. Last)
- and then Buffer (1) = '#' then
+ if Last = (1 + Key'Length)
+ and then Key = Buffer (2 .. Last)
+ and then Buffer (1) = '#'
+ then
loop
exit when not Next_Line;
exit when Buffer (1) = '#';
@@ -417,14 +419,23 @@ package body Sample.Explanation is
end Check_File;
begin
- if Check_File ("/usr/share/AdaCurses/" & File_Name) then
- Open (F, In_File, "/usr/share/AdaCurses/" & File_Name);
+ if Check_File
+ ($THIS_DATADIR
+ & File_Name)
+ then
+ Open (F, In_File,
+ $THIS_DATADIR
+ & File_Name);
elsif Check_File (File_Name) then
Open (F, In_File, File_Name);
else
Put_Line (Standard_Error,
- "The file explain.txt was not found in the current directory."
+ "The file "
+ & File_Name
+ & " was not found in "
+ & $THIS_DATADIR
);
raise Name_Error;
end if;
end Sample.Explanation;
+-- vile:adamode
diff --git a/Ada95/samples/sample-form_demo.ads b/Ada95/samples/sample-form_demo.ads
index bd33f578750d..ebdb0d42bba8 100644
--- a/Ada95/samples/sample-form_demo.ads
+++ b/Ada95/samples/sample-form_demo.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.9 $
+-- $Revision: 1.10 $
-- Binding Version 01.00
------------------------------------------------------------------------------
package Sample.Form_Demo is
diff --git a/Ada95/samples/sample-header_handler.adb b/Ada95/samples/sample-header_handler.adb
index ad60caf4b0cb..f552e20ee5df 100644
--- a/Ada95/samples/sample-header_handler.adb
+++ b/Ada95/samples/sample-header_handler.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2014 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.19 $
--- $Date: 2011/03/22 23:54:38 $
+-- $Revision: 1.20 $
+-- $Date: 2014/09/13 19:10:18 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Ada.Calendar; use Ada.Calendar;
@@ -121,8 +121,11 @@ package body Sample.Header_Handler is
D : constant Day_Number := Day (Now);
begin
if Header_Window /= Null_Window then
- if Minute /= Display_Min or else Hour /= Display_Hour
- or else Display_Day /= D or else Display_Month /= Mon then
+ if Minute /= Display_Min
+ or else Hour /= Display_Hour
+ or else Display_Day /= D
+ or else Display_Month /= Mon
+ then
Move_Cursor (Header_Window, 0, 0);
N_Out (D); Add (Header_Window, '.');
Add (Header_Window, Month_Names (Mon));
diff --git a/Ada95/samples/sample-header_handler.ads b/Ada95/samples/sample-header_handler.ads
index aa0a0c29e9f1..a81379dc8c19 100644
--- a/Ada95/samples/sample-header_handler.ads
+++ b/Ada95/samples/sample-header_handler.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.9 $
+-- $Revision: 1.10 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Terminal_Interface.Curses; use Terminal_Interface.Curses;
diff --git a/Ada95/samples/sample-keyboard_handler.ads b/Ada95/samples/sample-keyboard_handler.ads
index ac5b1399db01..9ad9535fd945 100644
--- a/Ada95/samples/sample-keyboard_handler.ads
+++ b/Ada95/samples/sample-keyboard_handler.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.9 $
+-- $Revision: 1.10 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Terminal_Interface.Curses; use Terminal_Interface.Curses;
diff --git a/Ada95/samples/sample-manifest.ads b/Ada95/samples/sample-manifest.ads
index bb76c4cba78c..331cffc87d30 100644
--- a/Ada95/samples/sample-manifest.ads
+++ b/Ada95/samples/sample-manifest.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.11 $
+-- $Revision: 1.12 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Terminal_Interface.Curses; use Terminal_Interface.Curses;
diff --git a/Ada95/samples/sample-menu_demo.ads b/Ada95/samples/sample-menu_demo.ads
index b071afc8277d..87537aac43ad 100644
--- a/Ada95/samples/sample-menu_demo.ads
+++ b/Ada95/samples/sample-menu_demo.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.9 $
+-- $Revision: 1.10 $
-- Binding Version 01.00
------------------------------------------------------------------------------
package Sample.Menu_Demo is
diff --git a/Ada95/samples/sample-text_io_demo.adb b/Ada95/samples/sample-text_io_demo.adb
index a458a37cdbd9..a8e29a49ef51 100644
--- a/Ada95/samples/sample-text_io_demo.adb
+++ b/Ada95/samples/sample-text_io_demo.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2006,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2018 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.17 $
--- $Date: 2011/03/23 00:44:12 $
+-- $Revision: 1.18 $
+-- $Date: 2018/07/07 23:38:02 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Ada.Numerics.Generic_Elementary_Functions;
@@ -57,7 +57,6 @@ with Terminal_Interface.Curses.Text_IO.Integer_IO;
with Terminal_Interface.Curses.Text_IO.Float_IO;
with Terminal_Interface.Curses.Text_IO.Enumeration_IO;
with Terminal_Interface.Curses.Text_IO.Complex_IO;
-with Terminal_Interface.Curses.Text_IO.Fixed_IO;
with Terminal_Interface.Curses.Text_IO.Decimal_IO;
with Terminal_Interface.Curses.Text_IO.Modular_IO;
@@ -69,7 +68,6 @@ with Sample.Explanation; use Sample.Explanation;
pragma Elaborate_All (Terminal_Interface.Curses.Text_Io.Complex_IO);
pragma Elaborate_All (Terminal_Interface.Curses.Text_Io.Decimal_IO);
pragma Elaborate_All (Terminal_Interface.Curses.Text_Io.Enumeration_IO);
-pragma Elaborate_All (Terminal_Interface.Curses.Text_Io.Fixed_IO);
pragma Elaborate_All (Terminal_Interface.Curses.Text_Io.Float_IO);
pragma Elaborate_All (Terminal_Interface.Curses.Text_Io.Integer_IO);
pragma Elaborate_All (Terminal_Interface.Curses.Text_Io.Modular_IO);
@@ -84,7 +82,6 @@ package body Sample.Text_IO_Demo is
Friday,
Saturday);
- type Fix is delta 0.1 range 0.0 .. 4.0;
type Dec is delta 0.01 digits 5 range 0.0 .. 4.0;
type Md is mod 5;
@@ -107,10 +104,6 @@ package body Sample.Text_IO_Demo is
Terminal_Interface.Curses.Text_IO.Complex_IO (Ada.Numerics.Complex_Types);
use C_IO;
- package F_IO is new
- Terminal_Interface.Curses.Text_IO.Fixed_IO (Fix);
- use F_IO;
-
package D_IO is new
Terminal_Interface.Curses.Text_IO.Decimal_IO (Dec);
use D_IO;
diff --git a/Ada95/samples/sample-text_io_demo.ads b/Ada95/samples/sample-text_io_demo.ads
index d3f5a188baf0..3bbc1b2ce41e 100644
--- a/Ada95/samples/sample-text_io_demo.ads
+++ b/Ada95/samples/sample-text_io_demo.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.9 $
+-- $Revision: 1.10 $
-- Binding Version 01.00
------------------------------------------------------------------------------
package Sample.Text_IO_Demo is
diff --git a/Ada95/samples/sample.ads b/Ada95/samples/sample.ads
index 9d0647dad78d..791c33ae9fb2 100644
--- a/Ada95/samples/sample.ads
+++ b/Ada95/samples/sample.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.9 $
+-- $Revision: 1.10 $
-- Binding Version 01.00
------------------------------------------------------------------------------
package Sample is
diff --git a/Ada95/samples/status.adb b/Ada95/samples/status.adb
index e6581317f401..5da9a92290c8 100644
--- a/Ada95/samples/status.adb
+++ b/Ada95/samples/status.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -36,7 +36,7 @@
-- Author: Laurent Pautet <pautet@gnat.com>
-- Modified by: Juergen Pfeifer, 1997
-- Version Control
--- $Revision: 1.7 $
+-- $Revision: 1.8 $
-- Binding Version 01.00
------------------------------------------------------------------------------
-- This package has been contributed by Laurent Pautet <pautet@gnat.com> --
diff --git a/Ada95/samples/status.ads b/Ada95/samples/status.ads
index e9e3ee8b3501..37ad5f1c1b9d 100644
--- a/Ada95/samples/status.ads
+++ b/Ada95/samples/status.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -36,7 +36,7 @@
-- Author: Laurent Pautet <pautet@gnat.com>
-- Modified by: Juergen Pfeifer, 1997
-- Version Control
--- $Revision: 1.9 $
+-- $Revision: 1.10 $
-- Binding Version 01.00
------------------------------------------------------------------------------
-- This package has been contributed by Laurent Pautet <pautet@gnat.com> --
diff --git a/Ada95/samples/tour.adb b/Ada95/samples/tour.adb
index 1cc91c15d740..e71310bf6fb6 100644
--- a/Ada95/samples/tour.adb
+++ b/Ada95/samples/tour.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.9 $
+-- $Revision: 1.10 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Sample; use Sample;
diff --git a/Ada95/samples/tour.ads b/Ada95/samples/tour.ads
index 8888169160a4..3f9ce30cecf8 100644
--- a/Ada95/samples/tour.ads
+++ b/Ada95/samples/tour.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control
--- $Revision: 1.9 $
+-- $Revision: 1.10 $
-- Binding Version 01.00
------------------------------------------------------------------------------
procedure Tour;
diff --git a/Ada95/src/Makefile.in b/Ada95/src/Makefile.in
index 9962859ba4b1..bdfe0a81e5e7 100644
--- a/Ada95/src/Makefile.in
+++ b/Ada95/src/Makefile.in
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2018,2019 Free 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"), #
@@ -28,14 +28,17 @@
#
# Author: Juergen Pfeifer, 1996
#
-# $Id: Makefile.in,v 1.62 2011/04/30 22:24:45 tom Exp $
+# $Id: Makefile.in,v 1.87 2019/09/07 20:53:06 tom Exp $
#
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
+ADA_MFLAGS = @cf_cv_makeflags@
+@SET_MAKE@
+
MODEL = ../../@DFT_OBJ_SUBDIR@
DESTDIR = @DESTDIR@
@@ -51,7 +54,7 @@ LIBDIR = $(DESTDIR)$(libdir)
ADA_INCLUDE = $(DESTDIR)@ADA_INCLUDE@
ADA_OBJECTS = $(DESTDIR)@ADA_OBJECTS@
-INSTALL = @INSTALL@
+INSTALL = @INSTALL@ @INSTALL_OPT_O@
INSTALL_LIB = @INSTALL@ @INSTALL_LIB@
AR = @AR@
@@ -80,14 +83,14 @@ LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
RANLIB = @RANLIB@
################################################################################
-ADA = @cf_ada_compiler@
+ADA = @cf_ada_compiler@
ADAPREP = gnatprep
-ADAFLAGS = @ADAFLAGS@ -I. -I$(srcdir)
+ADAFLAGS = @ADAFLAGS@ -I. -I$(srcdir)
-LIB_NAME = AdaCurses
+LIB_NAME = @ADA_LIBNAME@
SONAME = @ADA_SHAREDLIB@
-GNAT_PROJECT = $(srcdir)/library.gpr
+GNAT_PROJECT = @ADA_LIBNAME@.gpr
# build/source are the Ada95 tree
BUILD_DIR = ..
@@ -96,8 +99,8 @@ SOURCE_DIR = ..
BUILD_DIR_LIB = $(BUILD_DIR)/lib
SOURCE_DIR_SRC = $(SOURCE_DIR)/src
-ADAMAKE = @cf_ada_make@
-ADAMAKEFLAGS = \
+ADAMAKE = @cf_ada_make@
+ADAMAKEFLAGS = \
-P$(GNAT_PROJECT) \
-XBUILD_DIR=`cd $(BUILD_DIR);pwd` \
-XSOURCE_DIR=`cd $(SOURCE_DIR);pwd` \
@@ -179,7 +182,10 @@ $(LIBDIR) \
$(BUILD_DIR_LIB) :
mkdir -p $@
-sources :
+$(GENERATED_SOURCES) :
+ cd ../gen; $(MAKE) $(ADA_MFLAGS)
+
+sources : $(GENERATED_SOURCES)
@echo made $@
libs \
@@ -207,7 +213,7 @@ clean :: mostlyclean
rm -f $(ABASE)-trace.adb
distclean :: clean
- rm -f Makefile
+ rm -f Makefile library.gpr
realclean :: distclean
@@ -215,27 +221,33 @@ BASEDEPS=$(ABASE).ads $(ABASE)-aux.ads $(ABASE).adb
$(ABASE)-trace.adb : $(srcdir)/$(ABASE)-trace.adb_p
rm -f $@
- $(ADAPREP) -DADA_TRACE=@ADA_TRACE@ -DPRAGMA_UNREF=@PRAGMA_UNREF@ $(srcdir)/$(ABASE)-trace.adb_p $@
+ $(ADAPREP) -DADA_TRACE=@ADA_TRACE@ @GNATPREP_OPTS@ $(srcdir)/$(ABASE)-trace.adb_p $@
###############################################################################
# Use these definitions when building a shared library.
-SHARED_C_OBJS = c_varargs_to_ada.o ncurses_compat.o
+SHARED_C_OBJS = c_varargs_to_ada.o c_threaded_variables.o ncurses_compat.o
SHARED_OBJS = $(SHARED_C_OBJS) @USE_OLD_MAKERULES@$(LIBOBJS) @cf_generic_objects@
c_varargs_to_ada.o : $(srcdir)/c_varargs_to_ada.c
$(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/c_varargs_to_ada.c
+c_threaded_variables.o : $(srcdir)/c_threaded_variables.c
+ $(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/c_threaded_variables.c
+
ncurses_compat.o : $(srcdir)/ncurses_compat.c
$(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/ncurses_compat.c
###############################################################################
# Use these definitions when building a static library.
-STATIC_C_OBJS = static_c_varargs_to_ada.o static_ncurses_compat.o
+STATIC_C_OBJS = static_c_varargs_to_ada.o static_c_threaded_variables.o static_ncurses_compat.o
STATIC_OBJS = $(STATIC_C_OBJS) @USE_OLD_MAKERULES@$(LIBOBJS) @cf_generic_objects@
static_c_varargs_to_ada.o : $(srcdir)/c_varargs_to_ada.c
$(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/c_varargs_to_ada.c
+static_c_threaded_variables.o : $(srcdir)/c_threaded_variables.c
+ $(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/c_threaded_variables.c
+
static_ncurses_compat.o : $(srcdir)/ncurses_compat.c
$(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/ncurses_compat.c
@@ -258,8 +270,14 @@ STATIC_DIRS = \
@USE_GNAT_PROJECTS@ $(ABASE)-trace.adb \
@USE_GNAT_PROJECTS@ $(STATIC_C_OBJS) \
@USE_GNAT_PROJECTS@ $(STATIC_DIRS)
+@USE_GNAT_PROJECTS@ @cf_ada_config@gprconfig --batch --config=Ada --config=C,,,,@cf_ada_config_C@
+@USE_GNAT_PROJECTS@ -rm -f $(GNAT_PROJECT)
+@USE_GNAT_PROJECTS@ $(SHELL) $(srcdir)/library-cfg.sh static $(srcdir)/library.gpr $(CFLAGS_NORMAL) >$(GNAT_PROJECT)
+@USE_GNAT_PROJECTS@ @echo "Using GNAT Project:"
+@USE_GNAT_PROJECTS@ @-$(SHELL) -c "diff -u $(srcdir)/library.gpr $(GNAT_PROJECT); exit 0"
@USE_GNAT_PROJECTS@ $(ADAMAKE) $(ADAMAKEFLAGS) -XLIB_KIND=static
@USE_GNAT_PROJECTS@ $(AR) $(ARFLAGS) $@ $(STATIC_C_OBJS)
+@USE_GNAT_PROJECTS@ -rm -f $(GNAT_PROJECT)
@USE_GNAT_PROJECTS@
@USE_GNAT_LIBRARIES@install \
@USE_GNAT_LIBRARIES@install.libs :: \
@@ -290,7 +308,13 @@ SHARED_DIRS = \
@MAKE_ADA_SHAREDLIB@ $(SHARED_DIRS) \
@MAKE_ADA_SHAREDLIB@ $(SHARED_OBJS)
@MAKE_ADA_SHAREDLIB@ cp $(SHARED_OBJS) $(BUILD_DIR)/dynamic-obj/
+@MAKE_ADA_SHAREDLIB@ @cf_ada_config@gprconfig --batch --config=Ada --config=C,,,,@cf_ada_config_C@
+@MAKE_ADA_SHAREDLIB@ -rm -f $(GNAT_PROJECT)
+@MAKE_ADA_SHAREDLIB@ $(SHELL) $(srcdir)/library-cfg.sh dynamic $(srcdir)/library.gpr $(CFLAGS_SHARED) >$(GNAT_PROJECT)
+@MAKE_ADA_SHAREDLIB@ @echo "Making Ada shared-lib:"
+@MAKE_ADA_SHAREDLIB@ @-$(SHELL) -c "diff -u $(srcdir)/library.gpr $(GNAT_PROJECT); exit 0"
@MAKE_ADA_SHAREDLIB@ $(ADAMAKE) $(ADAMAKEFLAGS) -XLIB_KIND=dynamic
+@MAKE_ADA_SHAREDLIB@ -rm -f $(GNAT_PROJECT)
install \
install.libs :: $(ADA_INCLUDE)
@@ -328,6 +352,7 @@ uninstall.libs ::
@MAKE_ADA_SHAREDLIB@ rm -f $(LIBDIR)/$(SHARED_LIBNAME)
clean ::
- rm -rf $(BUILD_DIR)/*-ali
- rm -rf $(BUILD_DIR)/*-obj
- rm -rf $(BUILD_DIR_LIB)
+ -rm -f default.cgpr
+ -rm -rf $(BUILD_DIR)/*-ali
+ -rm -rf $(BUILD_DIR)/*-obj
+ -rm -rf $(BUILD_DIR_LIB)
diff --git a/Ada95/src/c_threaded_variables.c b/Ada95/src/c_threaded_variables.c
new file mode 100644
index 000000000000..bc58c46abefe
--- /dev/null
+++ b/Ada95/src/c_threaded_variables.c
@@ -0,0 +1,56 @@
+/****************************************************************************
+ * Copyright (c) 2011,2014 Free 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: Nicolas Boulenguez, 2011 *
+ ****************************************************************************/
+
+#include "c_threaded_variables.h"
+
+#define WRAP(type, name) \
+ type \
+ name ## _as_function () \
+ { \
+ return name; \
+ }
+/* *INDENT-OFF* */
+WRAP(WINDOW *, stdscr)
+WRAP(WINDOW *, curscr)
+
+WRAP(int, LINES)
+WRAP(int, COLS)
+WRAP(int, TABSIZE)
+WRAP(int, COLORS)
+WRAP(int, COLOR_PAIRS)
+
+chtype
+acs_map_as_function(char inx)
+{
+ return acs_map[(unsigned char) inx];
+}
+/* *INDENT-ON* */
diff --git a/Ada95/src/c_threaded_variables.h b/Ada95/src/c_threaded_variables.h
new file mode 100644
index 000000000000..5f0f62f16333
--- /dev/null
+++ b/Ada95/src/c_threaded_variables.h
@@ -0,0 +1,58 @@
+/****************************************************************************
+ * Copyright (c) 2011-2014,2015 Free 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: c_threaded_variables.h,v 1.3 2015/08/06 23:09:47 tom Exp $ */
+
+#ifndef __C_THREADED_VARIABLES_H
+#define __C_THREADED_VARIABLES_H
+
+#include <ncurses_cfg.h>
+
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif
+
+#include <curses.h>
+
+extern WINDOW *stdscr_as_function(void);
+extern WINDOW *curscr_as_function(void);
+
+extern int LINES_as_function(void);
+extern int LINES_as_function(void);
+extern int COLS_as_function(void);
+extern int TABSIZE_as_function(void);
+extern int COLORS_as_function(void);
+extern int COLOR_PAIRS_as_function(void);
+
+extern chtype acs_map_as_function(char /* index */ );
+
+#endif /* __C_THREADED_VARIABLES_H */
diff --git a/Ada95/src/c_varargs_to_ada.c b/Ada95/src/c_varargs_to_ada.c
index ed236ddc90da..f0b1bbef01ff 100644
--- a/Ada95/src/c_varargs_to_ada.c
+++ b/Ada95/src/c_varargs_to_ada.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2011,2014 Free 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,12 +32,12 @@
/*
Version Control
- $Id: c_varargs_to_ada.c,v 1.4 2011/03/19 19:07:39 tom Exp $
+ $Id: c_varargs_to_ada.c,v 1.6 2014/05/24 21:32:18 tom Exp $
--------------------------------------------------------------------------*/
/*
*/
-#include <c_varargs_to_ada.h>
+#include "c_varargs_to_ada.h"
int
set_field_type_alnum(FIELD *field,
diff --git a/Ada95/src/c_varargs_to_ada.h b/Ada95/src/c_varargs_to_ada.h
index ee6a7a7c1eb9..f2697058493e 100644
--- a/Ada95/src/c_varargs_to_ada.h
+++ b/Ada95/src/c_varargs_to_ada.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2011,2015 Free 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,11 +26,19 @@
* authorization. *
****************************************************************************/
-/* $Id: c_varargs_to_ada.h,v 1.3 2011/03/19 19:07:41 tom Exp $ */
+/* $Id: c_varargs_to_ada.h,v 1.4 2015/08/06 23:08:47 tom Exp $ */
#ifndef __C_VARARGS_TO_ADA_H
#define __C_VARARGS_TO_ADA_H
+#ifdef HAVE_CONFIG_H
+#include <ncurses_cfg.h>
+#else
+#include <ncurses.h>
+#endif
+
+#include <stdlib.h>
+
#include <form.h>
extern int set_field_type_alnum(FIELD * /* field */ ,
diff --git a/Ada95/src/library-cfg.sh b/Ada95/src/library-cfg.sh
new file mode 100755
index 000000000000..005979f44467
--- /dev/null
+++ b/Ada95/src/library-cfg.sh
@@ -0,0 +1,72 @@
+#!/bin/sh
+##############################################################################
+# Copyright (c) 2016-2018,2019 Free 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: library-cfg.sh,v 1.6 2019/09/07 20:27:26 tom Exp $
+#
+# Work around incompatible behavior introduced with gnat6, which causes
+# gnatmake to attempt to compile all of the C objects which might be part of
+# the project. This can only work if we provide the compiler flags (done here
+# by making a copy of the project file with that information filled in).
+model=$1
+shift 1
+input=$1
+shift 1
+param=
+while test $# != 0
+do
+ case "x$1" in
+ *-[OgDIWf]*)
+ test -n "$param" && param="$param,"
+ param="$param\"$1\""
+ ;;
+ *)
+ echo "${0##*/}: ignored option $1" >&2
+ ;;
+ esac
+ shift 1
+done
+
+SHARE="-- "
+test "x$model" = "xdynamic" && SHARE=
+
+SCRIPT=library-cfg.tmp
+cat >$SCRIPT <<EOF
+/for Library_Options use /{
+ s,-- ,$SHARE,
+}
+/for Default_Switches ("C") use/{
+ s,-- ,,
+ s% use .*% use($param);%
+}
+EOF
+
+sed -f $SCRIPT $input
+rc=$?
+rm -f $SCRIPT
+exit $?
diff --git a/Ada95/src/library.gpr b/Ada95/src/library.gpr.in
index 33e4a3c7d7e2..aeee4e2c8215 100644
--- a/Ada95/src/library.gpr
+++ b/Ada95/src/library.gpr.in
@@ -1,5 +1,5 @@
------------------------------------------------------------------------------
--- Copyright (c) 2010,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 2010-2018,2019 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -25,10 +25,10 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
------------------------------------------------------------------------------
--- $Id: library.gpr,v 1.7 2011/03/18 23:10:28 Nicolas.Boulenguez Exp $
+-- $Id: library.gpr.in,v 1.1 2019/09/07 20:29:02 tom Exp $
-- http://gcc.gnu.org/onlinedocs/gnat_ugn_unw/Library-Projects.html
-- http://www.adaworld.com/debian/debian-ada-policy.html
-project Library is
+project AdaCurses is
Build_Dir := External ("BUILD_DIR");
Source_Dir := External ("SOURCE_DIR");
Source_Dir2 := External ("SOURCE_DIR2");
@@ -43,7 +43,7 @@ project Library is
for Source_Dirs use (Source_Dir & "/src",
Source_Dir2,
Build_Dir & "/src");
- for Library_Options use ("-lncurses", "-lpanel", "-lmenu", "-lform");
+ -- for Library_Options use ("-lncurses@USE_LIB_SUFFIX@", "-lpanel@USE_LIB_SUFFIX@", "-lmenu@USE_LIB_SUFFIX@", "-lform@USE_LIB_SUFFIX@");
package Compiler is
for Default_Switches ("Ada") use
("-g",
@@ -51,6 +51,7 @@ project Library is
"-gnatafno",
"-gnatVa", -- All validity checks
"-gnatwa"); -- Activate all optional errors
+ -- for Default_Switches ("C") use (CFLAGS)
end Compiler;
for Languages use ("C", "Ada");
-end Library;
+end AdaCurses;
diff --git a/Ada95/src/ncurses_compat.c b/Ada95/src/ncurses_compat.c
index b3d0607a5ff2..e44f3d0fe39b 100644
--- a/Ada95/src/ncurses_compat.c
+++ b/Ada95/src/ncurses_compat.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2011,2015 Free 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,12 +32,22 @@
/*
Version Control
- $Id: ncurses_compat.c,v 1.2 2011/03/28 00:29:04 tom Exp $
+ $Id: ncurses_compat.c,v 1.3 2015/08/06 23:09:10 tom Exp $
--------------------------------------------------------------------------*/
/*
* Provide compatibility with older versions of ncurses.
*/
+#include <ncurses_cfg.h>
+
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif
+
#include <curses.h>
#if defined(NCURSES_VERSION_PATCH)
@@ -49,7 +59,7 @@ extern int _nc_has_mouse(void);
bool
has_mouse(void)
{
- return (bool) _nc_has_mouse();
+ return (bool)_nc_has_mouse();
}
#endif
diff --git a/Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb b/Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb
index 943362012394..9c614cacb800 100644
--- a/Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb
+++ b/Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2014 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.11 $
--- $Date: 2011/03/19 00:45:37 $
+-- $Revision: 1.13 $
+-- $Date: 2014/05/24 21:31:05 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
@@ -47,15 +47,11 @@ package body Terminal_Interface.Curses.Forms.Field_Types.Alpha is
Typ : Alpha_Field)
is
function Set_Fld_Type (F : Field := Fld;
- Arg1 : C_Int) return C_Int;
+ Arg1 : C_Int) return Eti_Error;
pragma Import (C, Set_Fld_Type, "set_field_type_alpha");
- Res : Eti_Error;
begin
- Res := Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width));
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width)));
Wrap_Builtin (Fld, Typ);
end Set_Field_Type;
diff --git a/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb b/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb
index 53f66801e917..270906d40120 100644
--- a/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb
+++ b/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2014 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.11 $
--- $Date: 2011/03/19 00:45:37 $
+-- $Revision: 1.13 $
+-- $Date: 2014/05/24 21:31:05 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
@@ -47,15 +47,11 @@ package body Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric is
Typ : AlphaNumeric_Field)
is
function Set_Fld_Type (F : Field := Fld;
- Arg1 : C_Int) return C_Int;
+ Arg1 : C_Int) return Eti_Error;
pragma Import (C, Set_Fld_Type, "set_field_type_alnum");
- Res : Eti_Error;
begin
- Res := Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width));
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width)));
Wrap_Builtin (Fld, Typ);
end Set_Field_Type;
diff --git a/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads b/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads
index 48fad09c2f25..198071cf01c5 100644
--- a/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads
+++ b/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc. --
+-- Copyright (c) 1998,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.10 $
+-- $Revision: 1.11 $
-- Binding Version 01.00
------------------------------------------------------------------------------
generic
diff --git a/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb b/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb
index 12648e5a1dcc..8d4c9cee49b7 100644
--- a/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb
+++ b/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2014 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.10 $
+-- $Revision: 1.12 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Ada.Unchecked_Deallocation;
@@ -94,21 +94,18 @@ package body Terminal_Interface.Curses.Forms.Field_Types.Enumeration is
function Set_Fld_Type (F : Field := Fld;
Arg1 : chars_ptr_array;
Arg2 : C_Int;
- Arg3 : C_Int) return C_Int;
+ Arg3 : C_Int) return Eti_Error;
pragma Import (C, Set_Fld_Type, "set_field_type_enum");
- Res : Eti_Error;
begin
if Typ.Arr = null then
raise Form_Exception;
end if;
- Res := Set_Fld_Type (Arg1 => Typ.Arr.all,
- Arg2 => C_Int (Boolean'Pos (Typ.Case_Sensitive)),
- Arg3 => C_Int (Boolean'Pos
- (Typ.Match_Must_Be_Unique)));
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception
+ (Set_Fld_Type
+ (Arg1 => Typ.Arr.all,
+ Arg2 => C_Int (Boolean'Pos (Typ.Case_Sensitive)),
+ Arg3 => C_Int (Boolean'Pos (Typ.Match_Must_Be_Unique))));
Wrap_Builtin (Fld, Typ, C_Choice_Router);
end Set_Field_Type;
diff --git a/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads b/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads
index e6924f6b19f9..52a35caa07b6 100644
--- a/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads
+++ b/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2018,2020 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.12 $
+-- $Revision: 1.14 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Interfaces.C.Strings;
@@ -54,9 +54,9 @@ package Terminal_Interface.Curses.Forms.Field_Types.Enumeration is
type Enumeration_Info (C : Positive) is
record
- Names : Enum_Array (1 .. C);
Case_Sensitive : Boolean := False;
Match_Must_Be_Unique : Boolean := False;
+ Names : Enum_Array (1 .. C);
end record;
type Enumeration_Field is new Field_Type with private;
@@ -78,7 +78,7 @@ package Terminal_Interface.Curses.Forms.Field_Types.Enumeration is
-- But we may want to release the field to release the memory allocated
-- by it internally. After that the Enumeration field is no longer usable.
- -- The next type defintions are all ncurses extensions. They are typically
+ -- The next type definitions are all ncurses extensions. They are typically
-- not available in other curses implementations.
procedure Set_Field_Type (Fld : Field;
diff --git a/Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb b/Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb
index b6229becefb9..5ec330535994 100644
--- a/Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb
+++ b/Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2014 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.11 $
--- $Date: 2011/03/19 00:45:37 $
+-- $Revision: 1.13 $
+-- $Date: 2014/05/24 21:31:05 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
@@ -49,17 +49,13 @@ package body Terminal_Interface.Curses.Forms.Field_Types.IntField is
function Set_Fld_Type (F : Field := Fld;
Arg1 : C_Int;
Arg2 : C_Long_Int;
- Arg3 : C_Long_Int) return C_Int;
+ Arg3 : C_Long_Int) return Eti_Error;
pragma Import (C, Set_Fld_Type, "set_field_type_integer");
- Res : Eti_Error;
begin
- Res := Set_Fld_Type (Arg1 => C_Int (Typ.Precision),
- Arg2 => C_Long_Int (Typ.Lower_Limit),
- Arg3 => C_Long_Int (Typ.Upper_Limit));
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Fld_Type (Arg1 => C_Int (Typ.Precision),
+ Arg2 => C_Long_Int (Typ.Lower_Limit),
+ Arg3 => C_Long_Int (Typ.Upper_Limit)));
Wrap_Builtin (Fld, Typ);
end Set_Field_Type;
diff --git a/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb b/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb
index 66e052942d37..978a47a1f0c7 100644
--- a/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb
+++ b/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2014 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.11 $
--- $Date: 2011/03/19 00:45:37 $
+-- $Revision: 1.13 $
+-- $Date: 2014/05/24 21:31:05 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
@@ -47,15 +47,11 @@ package body Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address is
Typ : Internet_V4_Address_Field)
is
function Set_Fld_Type (F : Field := Fld)
- return C_Int;
+ return Eti_Error;
pragma Import (C, Set_Fld_Type, "set_field_type_ipv4");
- Res : Eti_Error;
begin
- Res := Set_Fld_Type;
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Fld_Type);
Wrap_Builtin (Fld, Typ);
end Set_Field_Type;
diff --git a/Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb b/Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb
index b31dfa657a59..94e2aa702c41 100644
--- a/Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb
+++ b/Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2014 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.12 $
--- $Date: 2011/03/19 00:45:37 $
+-- $Revision: 1.14 $
+-- $Date: 2014/05/24 21:31:05 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Interfaces.C;
@@ -52,17 +52,13 @@ package body Terminal_Interface.Curses.Forms.Field_Types.Numeric is
function Set_Fld_Type (F : Field := Fld;
Arg1 : C_Int;
Arg2 : Double;
- Arg3 : Double) return C_Int;
+ Arg3 : Double) return Eti_Error;
pragma Import (C, Set_Fld_Type, "set_field_type_numeric");
- Res : Eti_Error;
begin
- Res := Set_Fld_Type (Arg1 => C_Int (Typ.Precision),
- Arg2 => Double (Typ.Lower_Limit),
- Arg3 => Double (Typ.Upper_Limit));
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Fld_Type (Arg1 => C_Int (Typ.Precision),
+ Arg2 => Double (Typ.Lower_Limit),
+ Arg3 => Double (Typ.Upper_Limit)));
Wrap_Builtin (Fld, Typ);
end Set_Field_Type;
diff --git a/Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb b/Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb
index 55f0255071ab..f5ea0db2b11c 100644
--- a/Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb
+++ b/Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2014 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.10 $
+-- $Revision: 1.12 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Interfaces.C; use Interfaces.C;
@@ -46,21 +46,12 @@ package body Terminal_Interface.Curses.Forms.Field_Types.RegExp is
procedure Set_Field_Type (Fld : Field;
Typ : Regular_Expression_Field)
is
- type Char_Ptr is access all Interfaces.C.char;
-
function Set_Ftyp (F : Field := Fld;
- Arg1 : Char_Ptr) return C_Int;
+ Arg1 : char_array) return Eti_Error;
pragma Import (C, Set_Ftyp, "set_field_type_regexp");
- Txt : char_array (0 .. Typ.Regular_Expression.all'Length);
- Len : size_t;
- Res : Eti_Error;
begin
- To_C (Typ.Regular_Expression.all, Txt, Len);
- Res := Set_Ftyp (Arg1 => Txt (Txt'First)'Access);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Ftyp (Arg1 => To_C (Typ.Regular_Expression.all)));
Wrap_Builtin (Fld, Typ);
end Set_Field_Type;
diff --git a/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb b/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb
index 3a7e6b5aeb2e..8414cd0385c7 100644
--- a/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb
+++ b/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2008,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2014 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.17 $
--- $Date: 2011/03/22 10:53:37 $
+-- $Revision: 1.20 $
+-- $Date: 2014/05/24 21:31:05 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with System.Address_To_Access_Conversions;
@@ -53,7 +53,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User.Choice is
Result : Boolean;
Udf : constant User_Defined_Field_Type_With_Choice_Access :=
User_Defined_Field_Type_With_Choice_Access
- (Argument_Access (Argument_Conversions.To_Pointer (Usr)).Typ);
+ (Argument_Access (Argument_Conversions.To_Pointer (Usr)).all.Typ);
begin
Result := Next (Fld, Udf.all);
return Curses_Bool (Boolean'Pos (Result));
@@ -65,7 +65,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User.Choice is
Result : Boolean;
Udf : constant User_Defined_Field_Type_With_Choice_Access :=
User_Defined_Field_Type_With_Choice_Access
- (Argument_Access (Argument_Conversions.To_Pointer (Usr)).Typ);
+ (Argument_Access (Argument_Conversions.To_Pointer (Usr)).all.Typ);
begin
Result := Previous (Fld, Udf.all);
return Curses_Bool (Boolean'Pos (Result));
@@ -88,16 +88,12 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User.Choice is
Make_Arg'Access,
Copy_Arg'Access,
Free_Arg'Access);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Res);
Res := Set_Fieldtype_Choice (T,
Generic_Next'Access,
Generic_Prev'Access);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Res);
end if;
M_Generic_Choice := T;
end if;
diff --git a/Ada95/src/terminal_interface-curses-forms-field_types-user.adb b/Ada95/src/terminal_interface-curses-forms-field_types-user.adb
index 2dd295db7e76..98bcd2442d43 100644
--- a/Ada95/src/terminal_interface-curses-forms-field_types-user.adb
+++ b/Ada95/src/terminal_interface-curses-forms-field_types-user.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2014 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.21 $
--- $Date: 2011/03/23 00:44:58 $
+-- $Revision: 1.23 $
+-- $Date: 2014/05/24 21:31:05 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with System.Address_To_Access_Conversions;
@@ -53,11 +53,9 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User is
function Set_Fld_Type (F : Field := Fld;
Cft : C_Field_Type := C_Generic_Type;
Arg1 : Argument_Access)
- return C_Int;
+ return Eti_Error;
pragma Import (C, Set_Fld_Type, "set_field_type_user");
- Res : Eti_Error;
-
function Allocate_Arg (T : User_Defined_Field_Type'Class)
return Argument_Access
is
@@ -70,10 +68,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User is
end Allocate_Arg;
begin
- Res := Set_Fld_Type (Arg1 => Allocate_Arg (Typ));
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Fld_Type (Arg1 => Allocate_Arg (Typ)));
end Set_Field_Type;
package Argument_Conversions is
@@ -120,9 +115,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User is
Make_Arg'Access,
Copy_Arg'Access,
Free_Arg'Access);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Res);
end if;
M_Generic_Type := T;
end if;
diff --git a/Ada95/src/terminal_interface-curses-forms-field_types.adb b/Ada95/src/terminal_interface-curses-forms-field_types.adb
index 5195a20a499c..bda6e51b088f 100644
--- a/Ada95/src/terminal_interface-curses-forms-field_types.adb
+++ b/Ada95/src/terminal_interface-curses-forms-field_types.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2014 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.25 $
--- $Date: 2011/03/22 23:22:27 $
+-- $Revision: 1.28 $
+-- $Date: 2014/09/13 19:00:47 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
@@ -76,9 +76,10 @@ package body Terminal_Interface.Curses.Forms.Field_Types is
return null;
else
if Low_Level = M_Builtin_Router or else
- Low_Level = M_Generic_Type or else
- Low_Level = M_Choice_Router or else
- Low_Level = M_Generic_Choice then
+ Low_Level = M_Generic_Type or else
+ Low_Level = M_Choice_Router or else
+ Low_Level = M_Generic_Choice
+ then
Arg := Argument_Access
(Argument_Conversions.To_Pointer (Get_Arg (Fld)));
if Arg = null then
@@ -130,10 +131,9 @@ package body Terminal_Interface.Curses.Forms.Field_Types is
Usr_Arg : constant System.Address := Get_Arg (Fld);
Low_Level : constant C_Field_Type := Get_Fieldtype (Fld);
Arg : Argument_Access;
- Res : Eti_Error;
function Set_Fld_Type (F : Field := Fld;
Cf : C_Field_Type := Cft;
- Arg1 : Argument_Access) return C_Int;
+ Arg1 : Argument_Access) return Eti_Error;
pragma Import (C, Set_Fld_Type, "set_field_type_user");
begin
@@ -152,10 +152,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types is
end if;
end if;
- Res := Set_Fld_Type (Arg1 => Arg);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Fld_Type (Arg1 => Arg));
end if;
end Wrap_Builtin;
@@ -223,7 +220,6 @@ package body Terminal_Interface.Curses.Forms.Field_Types is
--
function C_Builtin_Router return C_Field_Type
is
- Res : Eti_Error;
T : C_Field_Type;
begin
if M_Builtin_Router = Null_Field_Type then
@@ -232,13 +228,10 @@ package body Terminal_Interface.Curses.Forms.Field_Types is
if T = Null_Field_Type then
raise Form_Exception;
else
- Res := Set_Fieldtype_Arg (T,
- Make_Arg'Access,
- Copy_Arg'Access,
- Free_Arg'Access);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Fieldtype_Arg (T,
+ Make_Arg'Access,
+ Copy_Arg'Access,
+ Free_Arg'Access));
end if;
M_Builtin_Router := T;
end if;
@@ -250,7 +243,6 @@ package body Terminal_Interface.Curses.Forms.Field_Types is
--
function C_Choice_Router return C_Field_Type
is
- Res : Eti_Error;
T : C_Field_Type;
begin
if M_Choice_Router = Null_Field_Type then
@@ -259,20 +251,14 @@ package body Terminal_Interface.Curses.Forms.Field_Types is
if T = Null_Field_Type then
raise Form_Exception;
else
- Res := Set_Fieldtype_Arg (T,
- Make_Arg'Access,
- Copy_Arg'Access,
- Free_Arg'Access);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Fieldtype_Arg (T,
+ Make_Arg'Access,
+ Copy_Arg'Access,
+ Free_Arg'Access));
- Res := Set_Fieldtype_Choice (T,
- Next_Router'Access,
- Prev_Router'Access);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Fieldtype_Choice (T,
+ Next_Router'Access,
+ Prev_Router'Access));
end if;
M_Choice_Router := T;
end if;
diff --git a/Ada95/src/terminal_interface-curses-forms-field_user_data.adb b/Ada95/src/terminal_interface-curses-forms-field_user_data.adb
index 96178d8a9349..fc710b694646 100644
--- a/Ada95/src/terminal_interface-curses-forms-field_user_data.adb
+++ b/Ada95/src/terminal_interface-curses-forms-field_user_data.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2014,2018 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.13 $
+-- $Revision: 1.16 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
@@ -49,20 +49,15 @@ package body Terminal_Interface.Curses.Forms.Field_User_Data is
-- |
-- |
-- |
- use type Interfaces.C.int;
-
procedure Set_User_Data (Fld : Field;
Data : User_Access)
is
function Set_Field_Userptr (Fld : Field;
- Usr : User_Access) return C_Int;
+ Usr : User_Access) return Eti_Error;
pragma Import (C, Set_Field_Userptr, "set_field_userptr");
- Res : constant Eti_Error := Set_Field_Userptr (Fld, Data);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Field_Userptr (Fld, Data));
end Set_User_Data;
-- |
-- |
diff --git a/Ada95/src/terminal_interface-curses-forms-form_user_data.adb b/Ada95/src/terminal_interface-curses-forms-form_user_data.adb
index 84353eb55700..500ec130086f 100644
--- a/Ada95/src/terminal_interface-curses-forms-form_user_data.adb
+++ b/Ada95/src/terminal_interface-curses-forms-form_user_data.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2014,2018 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.13 $
+-- $Revision: 1.16 $
-- Binding Version 01.00
------------------------------------------------------------------------------
-- |
@@ -47,8 +47,6 @@ with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
package body Terminal_Interface.Curses.Forms.Form_User_Data is
- use type Interfaces.C.int;
-
-- |
-- |
-- |
@@ -56,14 +54,11 @@ package body Terminal_Interface.Curses.Forms.Form_User_Data is
Data : User_Access)
is
function Set_Form_Userptr (Frm : Form;
- Data : User_Access) return C_Int;
+ Data : User_Access) return Eti_Error;
pragma Import (C, Set_Form_Userptr, "set_form_userptr");
- Res : constant Eti_Error := Set_Form_Userptr (Frm, Data);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Form_Userptr (Frm, Data));
end Set_User_Data;
-- |
-- |
diff --git a/Ada95/src/terminal_interface-curses-forms.adb b/Ada95/src/terminal_interface-curses-forms.adb
index 915ed58418e0..3ed053ae1b68 100644
--- a/Ada95/src/terminal_interface-curses-forms.adb
+++ b/Ada95/src/terminal_interface-curses-forms.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2014 Free 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,12 +35,11 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.28 $
--- $Date: 2011/03/22 23:37:32 $
+-- $Revision: 1.32 $
+-- $Date: 2014/05/24 21:31:05 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Ada.Unchecked_Deallocation;
-with Ada.Unchecked_Conversion;
with Interfaces.C; use Interfaces.C;
with Interfaces.C.Strings; use Interfaces.C.Strings;
@@ -62,22 +61,6 @@ package body Terminal_Interface.Curses.Forms is
-- |
-- subtype chars_ptr is Interfaces.C.Strings.chars_ptr;
- function FOS_2_CInt is new
- Ada.Unchecked_Conversion (Field_Option_Set,
- C_Int);
-
- function CInt_2_FOS is new
- Ada.Unchecked_Conversion (C_Int,
- Field_Option_Set);
-
- function FrmOS_2_CInt is new
- Ada.Unchecked_Conversion (Form_Option_Set,
- C_Int);
-
- function CInt_2_FrmOS is new
- Ada.Unchecked_Conversion (C_Int,
- Form_Option_Set);
-
procedure Request_Name (Key : Form_Request_Code;
Name : out String)
is
@@ -130,15 +113,11 @@ package body Terminal_Interface.Curses.Forms is
-- |
procedure Delete (Fld : in out Field)
is
- function Free_Field (Fld : Field) return C_Int;
+ function Free_Field (Fld : Field) return Eti_Error;
pragma Import (C, Free_Field, "free_field");
- Res : Eti_Error;
begin
- Res := Free_Field (Fld);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Free_Field (Fld));
Fld := Null_Field;
end Delete;
-- |
@@ -194,16 +173,12 @@ package body Terminal_Interface.Curses.Forms is
Just : Field_Justification := None)
is
function Set_Field_Just (Fld : Field;
- Just : C_Int) return C_Int;
+ Just : C_Int) return Eti_Error;
pragma Import (C, Set_Field_Just, "set_field_just");
- Res : constant Eti_Error :=
- Set_Field_Just (Fld,
- C_Int (Field_Justification'Pos (Just)));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Field_Just (Fld,
+ C_Int (Field_Justification'Pos (Just))));
end Set_Justification;
-- |
-- |
@@ -227,22 +202,14 @@ package body Terminal_Interface.Curses.Forms is
Buffer : Buffer_Number := Buffer_Number'First;
Str : String)
is
- type Char_Ptr is access all Interfaces.C.char;
function Set_Fld_Buffer (Fld : Field;
Bufnum : C_Int;
- S : Char_Ptr)
- return C_Int;
+ S : char_array)
+ return Eti_Error;
pragma Import (C, Set_Fld_Buffer, "set_field_buffer");
- Txt : char_array (0 .. Str'Length);
- Len : size_t;
- Res : Eti_Error;
begin
- To_C (Str, Txt, Len);
- Res := Set_Fld_Buffer (Fld, C_Int (Buffer), Txt (Txt'First)'Access);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Fld_Buffer (Fld, C_Int (Buffer), To_C (Str)));
end Set_Buffer;
-- |
-- |
@@ -276,12 +243,11 @@ package body Terminal_Interface.Curses.Forms is
Status : Boolean := True)
is
function Set_Fld_Status (Fld : Field;
- St : C_Int) return C_Int;
+ St : C_Int) return Eti_Error;
pragma Import (C, Set_Fld_Status, "set_field_status");
- Res : constant Eti_Error := Set_Fld_Status (Fld, Boolean'Pos (Status));
begin
- if Res /= E_Ok then
+ if Set_Fld_Status (Fld, Boolean'Pos (Status)) /= E_Ok then
raise Form_Exception;
end if;
end Set_Status;
@@ -308,14 +274,11 @@ package body Terminal_Interface.Curses.Forms is
Max : Natural := 0)
is
function Set_Field_Max (Fld : Field;
- M : C_Int) return C_Int;
+ M : C_Int) return Eti_Error;
pragma Import (C, Set_Field_Max, "set_max_field");
- Res : constant Eti_Error := Set_Field_Max (Fld, C_Int (Max));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Field_Max (Fld, C_Int (Max)));
end Set_Maximum_Size;
-- |
-- |=====================================================================
@@ -328,16 +291,11 @@ package body Terminal_Interface.Curses.Forms is
Options : Field_Option_Set)
is
function Set_Field_Opts (Fld : Field;
- Opt : C_Int) return C_Int;
+ Opt : Field_Option_Set) return Eti_Error;
pragma Import (C, Set_Field_Opts, "set_field_opts");
- Opt : constant C_Int := FOS_2_CInt (Options);
- Res : Eti_Error;
begin
- Res := Set_Field_Opts (Fld, Opt);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Field_Opts (Fld, Options));
end Set_Options;
-- |
-- |
@@ -347,22 +305,17 @@ package body Terminal_Interface.Curses.Forms is
On : Boolean := True)
is
function Field_Opts_On (Fld : Field;
- Opt : C_Int) return C_Int;
+ Opt : Field_Option_Set) return Eti_Error;
pragma Import (C, Field_Opts_On, "field_opts_on");
function Field_Opts_Off (Fld : Field;
- Opt : C_Int) return C_Int;
+ Opt : Field_Option_Set) return Eti_Error;
pragma Import (C, Field_Opts_Off, "field_opts_off");
- Err : Eti_Error;
- Opt : constant C_Int := FOS_2_CInt (Options);
begin
if On then
- Err := Field_Opts_On (Fld, Opt);
+ Eti_Exception (Field_Opts_On (Fld, Options));
else
- Err := Field_Opts_Off (Fld, Opt);
- end if;
- if Err /= E_Ok then
- Eti_Exception (Err);
+ Eti_Exception (Field_Opts_Off (Fld, Options));
end if;
end Switch_Options;
-- |
@@ -371,12 +324,11 @@ package body Terminal_Interface.Curses.Forms is
procedure Get_Options (Fld : Field;
Options : out Field_Option_Set)
is
- function Field_Opts (Fld : Field) return C_Int;
+ function Field_Opts (Fld : Field) return Field_Option_Set;
pragma Import (C, Field_Opts, "field_opts");
- Res : constant C_Int := Field_Opts (Fld);
begin
- Options := CInt_2_FOS (Res);
+ Options := Field_Opts (Fld);
end Get_Options;
-- |
-- |
@@ -402,18 +354,13 @@ package body Terminal_Interface.Curses.Forms is
Color : Color_Pair := Color_Pair'First)
is
function Set_Field_Fore (Fld : Field;
- Attr : C_Chtype) return C_Int;
+ Attr : Attributed_Character) return Eti_Error;
pragma Import (C, Set_Field_Fore, "set_field_fore");
- Ch : constant Attributed_Character := (Ch => Character'First,
- Color => Color,
- Attr => Fore);
- Res : constant Eti_Error :=
- Set_Field_Fore (Fld, AttrChar_To_Chtype (Ch));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Field_Fore (Fld, (Ch => Character'First,
+ Color => Color,
+ Attr => Fore)));
end Set_Foreground;
-- |
-- |
@@ -421,21 +368,21 @@ package body Terminal_Interface.Curses.Forms is
procedure Foreground (Fld : Field;
Fore : out Character_Attribute_Set)
is
- function Field_Fore (Fld : Field) return C_Chtype;
+ function Field_Fore (Fld : Field) return Attributed_Character;
pragma Import (C, Field_Fore, "field_fore");
begin
- Fore := Chtype_To_AttrChar (Field_Fore (Fld)).Attr;
+ Fore := Field_Fore (Fld).Attr;
end Foreground;
procedure Foreground (Fld : Field;
Fore : out Character_Attribute_Set;
Color : out Color_Pair)
is
- function Field_Fore (Fld : Field) return C_Chtype;
+ function Field_Fore (Fld : Field) return Attributed_Character;
pragma Import (C, Field_Fore, "field_fore");
begin
- Fore := Chtype_To_AttrChar (Field_Fore (Fld)).Attr;
- Color := Chtype_To_AttrChar (Field_Fore (Fld)).Color;
+ Fore := Field_Fore (Fld).Attr;
+ Color := Field_Fore (Fld).Color;
end Foreground;
-- |
-- |
@@ -446,18 +393,13 @@ package body Terminal_Interface.Curses.Forms is
Color : Color_Pair := Color_Pair'First)
is
function Set_Field_Back (Fld : Field;
- Attr : C_Chtype) return C_Int;
+ Attr : Attributed_Character) return Eti_Error;
pragma Import (C, Set_Field_Back, "set_field_back");
- Ch : constant Attributed_Character := (Ch => Character'First,
- Color => Color,
- Attr => Back);
- Res : constant Eti_Error :=
- Set_Field_Back (Fld, AttrChar_To_Chtype (Ch));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Field_Back (Fld, (Ch => Character'First,
+ Color => Color,
+ Attr => Back)));
end Set_Background;
-- |
-- |
@@ -465,21 +407,21 @@ package body Terminal_Interface.Curses.Forms is
procedure Background (Fld : Field;
Back : out Character_Attribute_Set)
is
- function Field_Back (Fld : Field) return C_Chtype;
+ function Field_Back (Fld : Field) return Attributed_Character;
pragma Import (C, Field_Back, "field_back");
begin
- Back := Chtype_To_AttrChar (Field_Back (Fld)).Attr;
+ Back := Field_Back (Fld).Attr;
end Background;
procedure Background (Fld : Field;
Back : out Character_Attribute_Set;
Color : out Color_Pair)
is
- function Field_Back (Fld : Field) return C_Chtype;
+ function Field_Back (Fld : Field) return Attributed_Character;
pragma Import (C, Field_Back, "field_back");
begin
- Back := Chtype_To_AttrChar (Field_Back (Fld)).Attr;
- Color := Chtype_To_AttrChar (Field_Back (Fld)).Color;
+ Back := Field_Back (Fld).Attr;
+ Color := Field_Back (Fld).Color;
end Background;
-- |
-- |
@@ -488,15 +430,12 @@ package body Terminal_Interface.Curses.Forms is
Pad : Character := Space)
is
function Set_Field_Pad (Fld : Field;
- Ch : C_Int) return C_Int;
+ Ch : C_Int) return Eti_Error;
pragma Import (C, Set_Field_Pad, "set_field_pad");
- Res : constant Eti_Error := Set_Field_Pad (Fld,
- C_Int (Character'Pos (Pad)));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Field_Pad (Fld,
+ C_Int (Character'Pos (Pad))));
end Set_Pad_Character;
-- |
-- |
@@ -527,25 +466,21 @@ package body Terminal_Interface.Curses.Forms is
type C_Int_Access is access all C_Int;
function Fld_Info (Fld : Field;
L, C, Fr, Fc, Os, Ab : C_Int_Access)
- return C_Int;
+ return Eti_Error;
pragma Import (C, Fld_Info, "field_info");
L, C, Fr, Fc, Os, Ab : aliased C_Int;
- Res : constant Eti_Error := Fld_Info (Fld,
- L'Access, C'Access,
- Fr'Access, Fc'Access,
- Os'Access, Ab'Access);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- else
- Lines := Line_Count (L);
- Columns := Column_Count (C);
- First_Row := Line_Position (Fr);
- First_Column := Column_Position (Fc);
- Off_Screen := Natural (Os);
- Additional_Buffers := Buffer_Number (Ab);
- end if;
+ Eti_Exception (Fld_Info (Fld,
+ L'Access, C'Access,
+ Fr'Access, Fc'Access,
+ Os'Access, Ab'Access));
+ Lines := Line_Count (L);
+ Columns := Column_Count (C);
+ First_Row := Line_Position (Fr);
+ First_Column := Column_Position (Fc);
+ Off_Screen := Natural (Os);
+ Additional_Buffers := Buffer_Number (Ab);
end Info;
-- |
-- |
@@ -556,21 +491,17 @@ package body Terminal_Interface.Curses.Forms is
Max : out Natural)
is
type C_Int_Access is access all C_Int;
- function Dyn_Info (Fld : Field; L, C, M : C_Int_Access) return C_Int;
+ function Dyn_Info (Fld : Field; L, C, M : C_Int_Access) return Eti_Error;
pragma Import (C, Dyn_Info, "dynamic_field_info");
L, C, M : aliased C_Int;
- Res : constant Eti_Error := Dyn_Info (Fld,
- L'Access, C'Access,
- M'Access);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- else
- Lines := Line_Count (L);
- Columns := Column_Count (C);
- Max := Natural (M);
- end if;
+ Eti_Exception (Dyn_Info (Fld,
+ L'Access, C'Access,
+ M'Access));
+ Lines := Line_Count (L);
+ Columns := Column_Count (C);
+ Max := Natural (M);
end Dynamic_Info;
-- |
-- |=====================================================================
@@ -583,14 +514,11 @@ package body Terminal_Interface.Curses.Forms is
Win : Window)
is
function Set_Form_Win (Frm : Form;
- Win : Window) return C_Int;
+ Win : Window) return Eti_Error;
pragma Import (C, Set_Form_Win, "set_form_win");
- Res : constant Eti_Error := Set_Form_Win (Frm, Win);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Form_Win (Frm, Win));
end Set_Window;
-- |
-- |
@@ -611,14 +539,11 @@ package body Terminal_Interface.Curses.Forms is
Win : Window)
is
function Set_Form_Sub (Frm : Form;
- Win : Window) return C_Int;
+ Win : Window) return Eti_Error;
pragma Import (C, Set_Form_Sub, "set_form_sub");
- Res : constant Eti_Error := Set_Form_Sub (Frm, Win);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Form_Sub (Frm, Win));
end Set_Sub_Window;
-- |
-- |
@@ -640,16 +565,13 @@ package body Terminal_Interface.Curses.Forms is
Columns : out Column_Count)
is
type C_Int_Access is access all C_Int;
- function M_Scale (Frm : Form; Yp, Xp : C_Int_Access) return C_Int;
+ function M_Scale (Frm : Form; Yp, Xp : C_Int_Access) return Eti_Error;
pragma Import (C, M_Scale, "scale_form");
X, Y : aliased C_Int;
- Res : constant Eti_Error := M_Scale (Frm, Y'Access, X'Access);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
- Lines := Line_Count (Y);
+ Eti_Exception (M_Scale (Frm, Y'Access, X'Access));
+ Lines := Line_Count (Y);
Columns := Column_Count (X);
end Scale;
-- |
@@ -663,14 +585,11 @@ package body Terminal_Interface.Curses.Forms is
Proc : Form_Hook_Function)
is
function Set_Field_Init (Frm : Form;
- Proc : Form_Hook_Function) return C_Int;
+ Proc : Form_Hook_Function) return Eti_Error;
pragma Import (C, Set_Field_Init, "set_field_init");
- Res : constant Eti_Error := Set_Field_Init (Frm, Proc);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Field_Init (Frm, Proc));
end Set_Field_Init_Hook;
-- |
-- |
@@ -679,14 +598,11 @@ package body Terminal_Interface.Curses.Forms is
Proc : Form_Hook_Function)
is
function Set_Field_Term (Frm : Form;
- Proc : Form_Hook_Function) return C_Int;
+ Proc : Form_Hook_Function) return Eti_Error;
pragma Import (C, Set_Field_Term, "set_field_term");
- Res : constant Eti_Error := Set_Field_Term (Frm, Proc);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Field_Term (Frm, Proc));
end Set_Field_Term_Hook;
-- |
-- |
@@ -695,14 +611,11 @@ package body Terminal_Interface.Curses.Forms is
Proc : Form_Hook_Function)
is
function Set_Form_Init (Frm : Form;
- Proc : Form_Hook_Function) return C_Int;
+ Proc : Form_Hook_Function) return Eti_Error;
pragma Import (C, Set_Form_Init, "set_form_init");
- Res : constant Eti_Error := Set_Form_Init (Frm, Proc);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Form_Init (Frm, Proc));
end Set_Form_Init_Hook;
-- |
-- |
@@ -711,14 +624,11 @@ package body Terminal_Interface.Curses.Forms is
Proc : Form_Hook_Function)
is
function Set_Form_Term (Frm : Form;
- Proc : Form_Hook_Function) return C_Int;
+ Proc : Form_Hook_Function) return Eti_Error;
pragma Import (C, Set_Form_Term, "set_form_term");
- Res : constant Eti_Error := Set_Form_Term (Frm, Proc);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Form_Term (Frm, Proc));
end Set_Form_Term_Hook;
-- |
-- |=====================================================================
@@ -731,19 +641,15 @@ package body Terminal_Interface.Curses.Forms is
Flds : Field_Array_Access)
is
function Set_Frm_Fields (Frm : Form;
- Items : System.Address) return C_Int;
+ Items : System.Address) return Eti_Error;
pragma Import (C, Set_Frm_Fields, "set_form_fields");
- Res : Eti_Error;
begin
pragma Assert (Flds.all (Flds'Last) = Null_Field);
if Flds.all (Flds'Last) /= Null_Field then
raise Form_Exception;
else
- Res := Set_Frm_Fields (Frm, Flds.all (Flds'First)'Address);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Frm_Fields (Frm, Flds.all (Flds'First)'Address));
end if;
end Redefine;
-- |
@@ -783,14 +689,11 @@ package body Terminal_Interface.Curses.Forms is
Line : Line_Position;
Column : Column_Position)
is
- function Move (Fld : Field; L, C : C_Int) return C_Int;
+ function Move (Fld : Field; L, C : C_Int) return Eti_Error;
pragma Import (C, Move, "move_field");
- Res : constant Eti_Error := Move (Fld, C_Int (Line), C_Int (Column));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Move (Fld, C_Int (Line), C_Int (Column)));
end Move;
-- |
-- |=====================================================================
@@ -822,14 +725,11 @@ package body Terminal_Interface.Curses.Forms is
-- |
procedure Delete (Frm : in out Form)
is
- function Free (Frm : Form) return C_Int;
+ function Free (Frm : Form) return Eti_Error;
pragma Import (C, Free, "free_form");
- Res : constant Eti_Error := Free (Frm);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Free (Frm));
Frm := Null_Form;
end Delete;
-- |
@@ -843,16 +743,11 @@ package body Terminal_Interface.Curses.Forms is
Options : Form_Option_Set)
is
function Set_Form_Opts (Frm : Form;
- Opt : C_Int) return C_Int;
+ Opt : Form_Option_Set) return Eti_Error;
pragma Import (C, Set_Form_Opts, "set_form_opts");
- Opt : constant C_Int := FrmOS_2_CInt (Options);
- Res : Eti_Error;
begin
- Res := Set_Form_Opts (Frm, Opt);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Form_Opts (Frm, Options));
end Set_Options;
-- |
-- |
@@ -862,22 +757,17 @@ package body Terminal_Interface.Curses.Forms is
On : Boolean := True)
is
function Form_Opts_On (Frm : Form;
- Opt : C_Int) return C_Int;
+ Opt : Form_Option_Set) return Eti_Error;
pragma Import (C, Form_Opts_On, "form_opts_on");
function Form_Opts_Off (Frm : Form;
- Opt : C_Int) return C_Int;
+ Opt : Form_Option_Set) return Eti_Error;
pragma Import (C, Form_Opts_Off, "form_opts_off");
- Err : Eti_Error;
- Opt : constant C_Int := FrmOS_2_CInt (Options);
begin
if On then
- Err := Form_Opts_On (Frm, Opt);
+ Eti_Exception (Form_Opts_On (Frm, Options));
else
- Err := Form_Opts_Off (Frm, Opt);
- end if;
- if Err /= E_Ok then
- Eti_Exception (Err);
+ Eti_Exception (Form_Opts_Off (Frm, Options));
end if;
end Switch_Options;
-- |
@@ -886,12 +776,11 @@ package body Terminal_Interface.Curses.Forms is
procedure Get_Options (Frm : Form;
Options : out Form_Option_Set)
is
- function Form_Opts (Frm : Form) return C_Int;
+ function Form_Opts (Frm : Form) return Form_Option_Set;
pragma Import (C, Form_Opts, "form_opts");
- Res : constant C_Int := Form_Opts (Frm);
begin
- Options := CInt_2_FrmOS (Res);
+ Options := Form_Opts (Frm);
end Get_Options;
-- |
-- |
@@ -913,20 +802,16 @@ package body Terminal_Interface.Curses.Forms is
procedure Post (Frm : Form;
Post : Boolean := True)
is
- function M_Post (Frm : Form) return C_Int;
+ function M_Post (Frm : Form) return Eti_Error;
pragma Import (C, M_Post, "post_form");
- function M_Unpost (Frm : Form) return C_Int;
+ function M_Unpost (Frm : Form) return Eti_Error;
pragma Import (C, M_Unpost, "unpost_form");
- Res : Eti_Error;
begin
if Post then
- Res := M_Post (Frm);
+ Eti_Exception (M_Post (Frm));
else
- Res := M_Unpost (Frm);
- end if;
- if Res /= E_Ok then
- Eti_Exception (Res);
+ Eti_Exception (M_Unpost (Frm));
end if;
end Post;
-- |
@@ -938,14 +823,11 @@ package body Terminal_Interface.Curses.Forms is
-- |
procedure Position_Cursor (Frm : Form)
is
- function Pos_Form_Cursor (Frm : Form) return C_Int;
+ function Pos_Form_Cursor (Frm : Form) return Eti_Error;
pragma Import (C, Pos_Form_Cursor, "pos_form_cursor");
- Res : constant Eti_Error := Pos_Form_Cursor (Frm);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Pos_Form_Cursor (Frm));
end Position_Cursor;
-- |
-- |=====================================================================
@@ -993,25 +875,22 @@ package body Terminal_Interface.Curses.Forms is
function Driver (Frm : Form;
Key : Key_Code) return Driver_Result
is
- function Frm_Driver (Frm : Form; Key : C_Int) return C_Int;
+ function Frm_Driver (Frm : Form; Key : C_Int) return Eti_Error;
pragma Import (C, Frm_Driver, "form_driver");
R : constant Eti_Error := Frm_Driver (Frm, C_Int (Key));
begin
- if R /= E_Ok then
- if R = E_Unknown_Command then
+ case R is
+ when E_Unknown_Command =>
return Unknown_Request;
- elsif R = E_Invalid_Field then
+ when E_Invalid_Field =>
return Invalid_Field;
- elsif R = E_Request_Denied then
+ when E_Request_Denied =>
return Request_Denied;
- else
+ when others =>
Eti_Exception (R);
return Form_Ok;
- end if;
- else
- return Form_Ok;
- end if;
+ end case;
end Driver;
-- |
-- |=====================================================================
@@ -1023,14 +902,11 @@ package body Terminal_Interface.Curses.Forms is
procedure Set_Current (Frm : Form;
Fld : Field)
is
- function Set_Current_Fld (Frm : Form; Fld : Field) return C_Int;
+ function Set_Current_Fld (Frm : Form; Fld : Field) return Eti_Error;
pragma Import (C, Set_Current_Fld, "set_current_field");
- Res : constant Eti_Error := Set_Current_Fld (Frm, Fld);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Current_Fld (Frm, Fld));
end Set_Current;
-- |
-- |
@@ -1053,14 +929,11 @@ package body Terminal_Interface.Curses.Forms is
procedure Set_Page (Frm : Form;
Page : Page_Number := Page_Number'First)
is
- function Set_Frm_Page (Frm : Form; Pg : C_Int) return C_Int;
+ function Set_Frm_Page (Frm : Form; Pg : C_Int) return Eti_Error;
pragma Import (C, Set_Frm_Page, "set_form_page");
- Res : constant Eti_Error := Set_Frm_Page (Frm, C_Int (Page));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Frm_Page (Frm, C_Int (Page)));
end Set_Page;
-- |
-- |
@@ -1102,14 +975,11 @@ package body Terminal_Interface.Curses.Forms is
procedure Set_New_Page (Fld : Field;
New_Page : Boolean := True)
is
- function Set_Page (Fld : Field; Flg : C_Int) return C_Int;
+ function Set_Page (Fld : Field; Flg : C_Int) return Eti_Error;
pragma Import (C, Set_Page, "set_new_page");
- Res : constant Eti_Error := Set_Page (Fld, Boolean'Pos (New_Page));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Page (Fld, Boolean'Pos (New_Page)));
end Set_New_Page;
-- |
-- |
diff --git a/Ada95/src/terminal_interface-curses-menus-item_user_data.adb b/Ada95/src/terminal_interface-curses-menus-item_user_data.adb
index eb06d096dfb2..5135c20d7fce 100644
--- a/Ada95/src/terminal_interface-curses-menus-item_user_data.adb
+++ b/Ada95/src/terminal_interface-curses-menus-item_user_data.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2014,2018 Free 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,28 +35,22 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.12 $
+-- $Revision: 1.15 $
-- Binding Version 01.00
------------------------------------------------------------------------------
-with Interfaces.C;
with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
package body Terminal_Interface.Curses.Menus.Item_User_Data is
- use type Interfaces.C.int;
-
procedure Set_User_Data (Itm : Item;
Data : User_Access)
is
function Set_Item_Userptr (Itm : Item;
- Addr : User_Access) return C_Int;
+ Addr : User_Access) return Eti_Error;
pragma Import (C, Set_Item_Userptr, "set_item_userptr");
- Res : constant Eti_Error := Set_Item_Userptr (Itm, Data);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Item_Userptr (Itm, Data));
end Set_User_Data;
function Get_User_Data (Itm : Item) return User_Access
diff --git a/Ada95/src/terminal_interface-curses-menus-menu_user_data.adb b/Ada95/src/terminal_interface-curses-menus-menu_user_data.adb
index 7d66a8c052ee..e8e297ee915b 100644
--- a/Ada95/src/terminal_interface-curses-menus-menu_user_data.adb
+++ b/Ada95/src/terminal_interface-curses-menus-menu_user_data.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2014,2018 Free 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,27 +35,23 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.13 $
+-- $Revision: 1.16 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
package body Terminal_Interface.Curses.Menus.Menu_User_Data is
- use type Interfaces.C.int;
-
procedure Set_User_Data (Men : Menu;
Data : User_Access)
is
function Set_Menu_Userptr (Men : Menu;
- Data : User_Access) return C_Int;
+ Data : User_Access) return Eti_Error;
pragma Import (C, Set_Menu_Userptr, "set_menu_userptr");
- Res : constant Eti_Error := Set_Menu_Userptr (Men, Data);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Menu_Userptr (Men, Data));
+
end Set_User_Data;
function Get_User_Data (Men : Menu) return User_Access
diff --git a/Ada95/src/terminal_interface-curses-menus.adb b/Ada95/src/terminal_interface-curses-menus.adb
index a7dca07c2876..fc840e2a978f 100644
--- a/Ada95/src/terminal_interface-curses-menus.adb
+++ b/Ada95/src/terminal_interface-curses-menus.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2014,2018 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.28 $
--- $Date: 2011/03/22 23:38:12 $
+-- $Revision: 1.33 $
+-- $Date: 2018/07/07 23:36:44 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Ada.Unchecked_Deallocation;
@@ -46,33 +46,14 @@ with Interfaces.C; use Interfaces.C;
with Interfaces.C.Strings; use Interfaces.C.Strings;
with Interfaces.C.Pointers;
-with Ada.Unchecked_Conversion;
-
package body Terminal_Interface.Curses.Menus is
type C_Item_Array is array (Natural range <>) of aliased Item;
package I_Array is new
Interfaces.C.Pointers (Natural, Item, C_Item_Array, Null_Item);
- use type System.Bit_Order;
subtype chars_ptr is Interfaces.C.Strings.chars_ptr;
- function MOS_2_CInt is new
- Ada.Unchecked_Conversion (Menu_Option_Set,
- C_Int);
-
- function CInt_2_MOS is new
- Ada.Unchecked_Conversion (C_Int,
- Menu_Option_Set);
-
- function IOS_2_CInt is new
- Ada.Unchecked_Conversion (Item_Option_Set,
- C_Int);
-
- function CInt_2_IOS is new
- Ada.Unchecked_Conversion (C_Int,
- Item_Option_Set);
-
------------------------------------------------------------------------------
procedure Request_Name (Key : Menu_Request_Code;
Name : out String)
@@ -128,10 +109,9 @@ package body Terminal_Interface.Curses.Menus is
function Itemname (Itm : Item) return chars_ptr;
pragma Import (C, Itemname, "item_name");
- function Freeitem (Itm : Item) return C_Int;
+ function Freeitem (Itm : Item) return Eti_Error;
pragma Import (C, Freeitem, "free_item");
- Res : Eti_Error;
Ptr : chars_ptr;
begin
Ptr := Descname (Itm);
@@ -142,10 +122,7 @@ package body Terminal_Interface.Curses.Menus is
if Ptr /= Null_Ptr then
Interfaces.C.Strings.Free (Ptr);
end if;
- Res := Freeitem (Itm);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Freeitem (Itm));
Itm := Null_Item;
end Delete;
-------------------------------------------------------------------------------
@@ -153,14 +130,11 @@ package body Terminal_Interface.Curses.Menus is
Value : Boolean := True)
is
function Set_Item_Val (Itm : Item;
- Val : C_Int) return C_Int;
+ Val : C_Int) return Eti_Error;
pragma Import (C, Set_Item_Val, "set_item_value");
- Res : constant Eti_Error := Set_Item_Val (Itm, Boolean'Pos (Value));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Item_Val (Itm, Boolean'Pos (Value)));
end Set_Value;
function Value (Itm : Item) return Boolean
@@ -192,16 +166,11 @@ package body Terminal_Interface.Curses.Menus is
Options : Item_Option_Set)
is
function Set_Item_Opts (Itm : Item;
- Opt : C_Int) return C_Int;
+ Opt : Item_Option_Set) return Eti_Error;
pragma Import (C, Set_Item_Opts, "set_item_opts");
- Opt : constant C_Int := IOS_2_CInt (Options);
- Res : Eti_Error;
begin
- Res := Set_Item_Opts (Itm, Opt);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Item_Opts (Itm, Options));
end Set_Options;
procedure Switch_Options (Itm : Item;
@@ -209,34 +178,28 @@ package body Terminal_Interface.Curses.Menus is
On : Boolean := True)
is
function Item_Opts_On (Itm : Item;
- Opt : C_Int) return C_Int;
+ Opt : Item_Option_Set) return Eti_Error;
pragma Import (C, Item_Opts_On, "item_opts_on");
function Item_Opts_Off (Itm : Item;
- Opt : C_Int) return C_Int;
+ Opt : Item_Option_Set) return Eti_Error;
pragma Import (C, Item_Opts_Off, "item_opts_off");
- Opt : constant C_Int := IOS_2_CInt (Options);
- Err : Eti_Error;
begin
if On then
- Err := Item_Opts_On (Itm, Opt);
+ Eti_Exception (Item_Opts_On (Itm, Options));
else
- Err := Item_Opts_Off (Itm, Opt);
- end if;
- if Err /= E_Ok then
- Eti_Exception (Err);
+ Eti_Exception (Item_Opts_Off (Itm, Options));
end if;
end Switch_Options;
procedure Get_Options (Itm : Item;
Options : out Item_Option_Set)
is
- function Item_Opts (Itm : Item) return C_Int;
+ function Item_Opts (Itm : Item) return Item_Option_Set;
pragma Import (C, Item_Opts, "item_opts");
- Res : constant C_Int := Item_Opts (Itm);
begin
- Options := CInt_2_IOS (Res);
+ Options := Item_Opts (Itm);
end Get_Options;
function Get_Options (Itm : Item := Null_Item) return Item_Option_Set
@@ -285,14 +248,11 @@ package body Terminal_Interface.Curses.Menus is
Itm : Item)
is
function Set_Curr_Item (Men : Menu;
- Itm : Item) return C_Int;
+ Itm : Item) return Eti_Error;
pragma Import (C, Set_Curr_Item, "set_current_item");
- Res : constant Eti_Error := Set_Curr_Item (Men, Itm);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Curr_Item (Men, Itm));
end Set_Current;
function Current (Men : Menu) return Item
@@ -312,14 +272,11 @@ package body Terminal_Interface.Curses.Menus is
Line : Line_Position)
is
function Set_Toprow (Men : Menu;
- Line : C_Int) return C_Int;
+ Line : C_Int) return Eti_Error;
pragma Import (C, Set_Toprow, "set_top_row");
- Res : constant Eti_Error := Set_Toprow (Men, C_Int (Line));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Toprow (Men, C_Int (Line)));
end Set_Top_Row;
function Top_Row (Men : Menu) return Line_Position
@@ -351,20 +308,16 @@ package body Terminal_Interface.Curses.Menus is
procedure Post (Men : Menu;
Post : Boolean := True)
is
- function M_Post (Men : Menu) return C_Int;
+ function M_Post (Men : Menu) return Eti_Error;
pragma Import (C, M_Post, "post_menu");
- function M_Unpost (Men : Menu) return C_Int;
+ function M_Unpost (Men : Menu) return Eti_Error;
pragma Import (C, M_Unpost, "unpost_menu");
- Res : Eti_Error;
begin
if Post then
- Res := M_Post (Men);
+ Eti_Exception (M_Post (Men));
else
- Res := M_Unpost (Men);
- end if;
- if Res /= E_Ok then
- Eti_Exception (Res);
+ Eti_Exception (M_Unpost (Men));
end if;
end Post;
-------------------------------------------------------------------------------
@@ -372,16 +325,11 @@ package body Terminal_Interface.Curses.Menus is
Options : Menu_Option_Set)
is
function Set_Menu_Opts (Men : Menu;
- Opt : C_Int) return C_Int;
+ Opt : Menu_Option_Set) return Eti_Error;
pragma Import (C, Set_Menu_Opts, "set_menu_opts");
- Opt : constant C_Int := MOS_2_CInt (Options);
- Res : Eti_Error;
begin
- Res := Set_Menu_Opts (Men, Opt);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Menu_Opts (Men, Options));
end Set_Options;
procedure Switch_Options (Men : Menu;
@@ -389,34 +337,28 @@ package body Terminal_Interface.Curses.Menus is
On : Boolean := True)
is
function Menu_Opts_On (Men : Menu;
- Opt : C_Int) return C_Int;
+ Opt : Menu_Option_Set) return Eti_Error;
pragma Import (C, Menu_Opts_On, "menu_opts_on");
function Menu_Opts_Off (Men : Menu;
- Opt : C_Int) return C_Int;
+ Opt : Menu_Option_Set) return Eti_Error;
pragma Import (C, Menu_Opts_Off, "menu_opts_off");
- Opt : constant C_Int := MOS_2_CInt (Options);
- Err : Eti_Error;
begin
if On then
- Err := Menu_Opts_On (Men, Opt);
+ Eti_Exception (Menu_Opts_On (Men, Options));
else
- Err := Menu_Opts_Off (Men, Opt);
- end if;
- if Err /= E_Ok then
- Eti_Exception (Err);
+ Eti_Exception (Menu_Opts_Off (Men, Options));
end if;
end Switch_Options;
procedure Get_Options (Men : Menu;
Options : out Menu_Option_Set)
is
- function Menu_Opts (Men : Menu) return C_Int;
+ function Menu_Opts (Men : Menu) return Menu_Option_Set;
pragma Import (C, Menu_Opts, "menu_opts");
- Res : constant C_Int := Menu_Opts (Men);
begin
- Options := CInt_2_MOS (Res);
+ Options := Menu_Opts (Men);
end Get_Options;
function Get_Options (Men : Menu := Null_Menu) return Menu_Option_Set
@@ -431,14 +373,11 @@ package body Terminal_Interface.Curses.Menus is
Win : Window)
is
function Set_Menu_Win (Men : Menu;
- Win : Window) return C_Int;
+ Win : Window) return Eti_Error;
pragma Import (C, Set_Menu_Win, "set_menu_win");
- Res : constant Eti_Error := Set_Menu_Win (Men, Win);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Menu_Win (Men, Win));
end Set_Window;
function Get_Window (Men : Menu) return Window
@@ -455,14 +394,11 @@ package body Terminal_Interface.Curses.Menus is
Win : Window)
is
function Set_Menu_Sub (Men : Menu;
- Win : Window) return C_Int;
+ Win : Window) return Eti_Error;
pragma Import (C, Set_Menu_Sub, "set_menu_sub");
- Res : constant Eti_Error := Set_Menu_Sub (Men, Win);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Menu_Sub (Men, Win));
end Set_Sub_Window;
function Get_Sub_Window (Men : Menu) return Window
@@ -481,29 +417,23 @@ package body Terminal_Interface.Curses.Menus is
is
type C_Int_Access is access all C_Int;
function M_Scale (Men : Menu;
- Yp, Xp : C_Int_Access) return C_Int;
+ Yp, Xp : C_Int_Access) return Eti_Error;
pragma Import (C, M_Scale, "scale_menu");
X, Y : aliased C_Int;
- Res : constant Eti_Error := M_Scale (Men, Y'Access, X'Access);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (M_Scale (Men, Y'Access, X'Access));
Lines := Line_Count (Y);
Columns := Column_Count (X);
end Scale;
-------------------------------------------------------------------------------
procedure Position_Cursor (Men : Menu)
is
- function Pos_Menu_Cursor (Men : Menu) return C_Int;
+ function Pos_Menu_Cursor (Men : Menu) return Eti_Error;
pragma Import (C, Pos_Menu_Cursor, "pos_menu_cursor");
- Res : constant Eti_Error := Pos_Menu_Cursor (Men);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Pos_Menu_Cursor (Men));
end Position_Cursor;
-------------------------------------------------------------------------------
@@ -512,18 +442,14 @@ package body Terminal_Interface.Curses.Menus is
is
type Char_Ptr is access all Interfaces.C.char;
function Set_Mark (Men : Menu;
- Mark : Char_Ptr) return C_Int;
+ Mark : Char_Ptr) return Eti_Error;
pragma Import (C, Set_Mark, "set_menu_mark");
Txt : char_array (0 .. Mark'Length);
Len : size_t;
- Res : Eti_Error;
begin
To_C (Mark, Txt, Len);
- Res := Set_Mark (Men, Txt (Txt'First)'Access);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Mark (Men, Txt (Txt'First)'Access));
end Set_Mark;
procedure Mark (Men : Menu;
@@ -550,37 +476,34 @@ package body Terminal_Interface.Curses.Menus is
Color : Color_Pair := Color_Pair'First)
is
function Set_Menu_Fore (Men : Menu;
- Attr : C_Chtype) return C_Int;
+ Attr : Attributed_Character) return Eti_Error;
pragma Import (C, Set_Menu_Fore, "set_menu_fore");
Ch : constant Attributed_Character := (Ch => Character'First,
Color => Color,
Attr => Fore);
- Res : constant Eti_Error := Set_Menu_Fore (Men, AttrChar_To_Chtype (Ch));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Menu_Fore (Men, Ch));
end Set_Foreground;
procedure Foreground (Men : Menu;
Fore : out Character_Attribute_Set)
is
- function Menu_Fore (Men : Menu) return C_Chtype;
+ function Menu_Fore (Men : Menu) return Attributed_Character;
pragma Import (C, Menu_Fore, "menu_fore");
begin
- Fore := Chtype_To_AttrChar (Menu_Fore (Men)).Attr;
+ Fore := Menu_Fore (Men).Attr;
end Foreground;
procedure Foreground (Men : Menu;
Fore : out Character_Attribute_Set;
Color : out Color_Pair)
is
- function Menu_Fore (Men : Menu) return C_Chtype;
+ function Menu_Fore (Men : Menu) return Attributed_Character;
pragma Import (C, Menu_Fore, "menu_fore");
begin
- Fore := Chtype_To_AttrChar (Menu_Fore (Men)).Attr;
- Color := Chtype_To_AttrChar (Menu_Fore (Men)).Color;
+ Fore := Menu_Fore (Men).Attr;
+ Color := Menu_Fore (Men).Color;
end Foreground;
procedure Set_Background
@@ -589,37 +512,34 @@ package body Terminal_Interface.Curses.Menus is
Color : Color_Pair := Color_Pair'First)
is
function Set_Menu_Back (Men : Menu;
- Attr : C_Chtype) return C_Int;
+ Attr : Attributed_Character) return Eti_Error;
pragma Import (C, Set_Menu_Back, "set_menu_back");
Ch : constant Attributed_Character := (Ch => Character'First,
Color => Color,
Attr => Back);
- Res : constant Eti_Error := Set_Menu_Back (Men, AttrChar_To_Chtype (Ch));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Menu_Back (Men, Ch));
end Set_Background;
procedure Background (Men : Menu;
Back : out Character_Attribute_Set)
is
- function Menu_Back (Men : Menu) return C_Chtype;
+ function Menu_Back (Men : Menu) return Attributed_Character;
pragma Import (C, Menu_Back, "menu_back");
begin
- Back := Chtype_To_AttrChar (Menu_Back (Men)).Attr;
+ Back := Menu_Back (Men).Attr;
end Background;
procedure Background (Men : Menu;
Back : out Character_Attribute_Set;
Color : out Color_Pair)
is
- function Menu_Back (Men : Menu) return C_Chtype;
+ function Menu_Back (Men : Menu) return Attributed_Character;
pragma Import (C, Menu_Back, "menu_back");
begin
- Back := Chtype_To_AttrChar (Menu_Back (Men)).Attr;
- Color := Chtype_To_AttrChar (Menu_Back (Men)).Color;
+ Back := Menu_Back (Men).Attr;
+ Color := Menu_Back (Men).Color;
end Background;
procedure Set_Grey (Men : Menu;
@@ -627,53 +547,46 @@ package body Terminal_Interface.Curses.Menus is
Color : Color_Pair := Color_Pair'First)
is
function Set_Menu_Grey (Men : Menu;
- Attr : C_Chtype) return C_Int;
+ Attr : Attributed_Character) return Eti_Error;
pragma Import (C, Set_Menu_Grey, "set_menu_grey");
Ch : constant Attributed_Character := (Ch => Character'First,
Color => Color,
Attr => Grey);
- Res : constant Eti_Error := Set_Menu_Grey (Men, AttrChar_To_Chtype (Ch));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Menu_Grey (Men, Ch));
end Set_Grey;
procedure Grey (Men : Menu;
Grey : out Character_Attribute_Set)
is
- function Menu_Grey (Men : Menu) return C_Chtype;
+ function Menu_Grey (Men : Menu) return Attributed_Character;
pragma Import (C, Menu_Grey, "menu_grey");
begin
- Grey := Chtype_To_AttrChar (Menu_Grey (Men)).Attr;
+ Grey := Menu_Grey (Men).Attr;
end Grey;
procedure Grey (Men : Menu;
Grey : out Character_Attribute_Set;
Color : out Color_Pair)
is
- function Menu_Grey (Men : Menu) return C_Chtype;
+ function Menu_Grey (Men : Menu) return Attributed_Character;
pragma Import (C, Menu_Grey, "menu_grey");
begin
- Grey := Chtype_To_AttrChar (Menu_Grey (Men)).Attr;
- Color := Chtype_To_AttrChar (Menu_Grey (Men)).Color;
+ Grey := Menu_Grey (Men).Attr;
+ Color := Menu_Grey (Men).Color;
end Grey;
procedure Set_Pad_Character (Men : Menu;
Pad : Character := Space)
is
function Set_Menu_Pad (Men : Menu;
- Ch : C_Int) return C_Int;
+ Ch : C_Int) return Eti_Error;
pragma Import (C, Set_Menu_Pad, "set_menu_pad");
- Res : constant Eti_Error := Set_Menu_Pad (Men,
- C_Int (Character'Pos (Pad)));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Menu_Pad (Men, C_Int (Character'Pos (Pad))));
end Set_Pad_Character;
procedure Pad_Character (Men : Menu;
@@ -691,17 +604,14 @@ package body Terminal_Interface.Curses.Menus is
Col : Column_Position := 0)
is
function Set_Spacing (Men : Menu;
- D, R, C : C_Int) return C_Int;
+ D, R, C : C_Int) return Eti_Error;
pragma Import (C, Set_Spacing, "set_menu_spacing");
- Res : constant Eti_Error := Set_Spacing (Men,
- C_Int (Descr),
- C_Int (Row),
- C_Int (Col));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Spacing (Men,
+ C_Int (Descr),
+ C_Int (Row),
+ C_Int (Col)));
end Set_Spacing;
procedure Spacing (Men : Menu;
@@ -711,22 +621,18 @@ package body Terminal_Interface.Curses.Menus is
is
type C_Int_Access is access all C_Int;
function Get_Spacing (Men : Menu;
- D, R, C : C_Int_Access) return C_Int;
+ D, R, C : C_Int_Access) return Eti_Error;
pragma Import (C, Get_Spacing, "menu_spacing");
D, R, C : aliased C_Int;
- Res : constant Eti_Error := Get_Spacing (Men,
- D'Access,
- R'Access,
- C'Access);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- else
- Descr := Column_Position (D);
- Row := Line_Position (R);
- Col := Column_Position (C);
- end if;
+ Eti_Exception (Get_Spacing (Men,
+ D'Access,
+ R'Access,
+ C'Access));
+ Descr := Column_Position (D);
+ Row := Line_Position (R);
+ Col := Column_Position (C);
end Spacing;
-------------------------------------------------------------------------------
function Set_Pattern (Men : Menu;
@@ -734,7 +640,7 @@ package body Terminal_Interface.Curses.Menus is
is
type Char_Ptr is access all Interfaces.C.char;
function Set_Pattern (Men : Menu;
- Pattern : Char_Ptr) return C_Int;
+ Pattern : Char_Ptr) return Eti_Error;
pragma Import (C, Set_Pattern, "set_menu_pattern");
S : char_array (0 .. Text'Length);
@@ -744,11 +650,11 @@ package body Terminal_Interface.Curses.Menus is
To_C (Text, S, L);
Res := Set_Pattern (Men, S (S'First)'Access);
case Res is
- when E_No_Match => return False;
- when E_Ok => return True;
+ when E_No_Match =>
+ return False;
when others =>
Eti_Exception (Res);
- return False;
+ return True;
end case;
end Set_Pattern;
@@ -767,16 +673,14 @@ package body Terminal_Interface.Curses.Menus is
is
function Set_Menu_Fmt (Men : Menu;
Lin : C_Int;
- Col : C_Int) return C_Int;
+ Col : C_Int) return Eti_Error;
pragma Import (C, Set_Menu_Fmt, "set_menu_format");
- Res : constant Eti_Error := Set_Menu_Fmt (Men,
- C_Int (Lines),
- C_Int (Columns));
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Menu_Fmt (Men,
+ C_Int (Lines),
+ C_Int (Columns)));
+
end Set_Format;
procedure Format (Men : Menu;
@@ -785,74 +689,58 @@ package body Terminal_Interface.Curses.Menus is
is
type C_Int_Access is access all C_Int;
function Menu_Fmt (Men : Menu;
- Y, X : C_Int_Access) return C_Int;
+ Y, X : C_Int_Access) return Eti_Error;
pragma Import (C, Menu_Fmt, "menu_format");
L, C : aliased C_Int;
- Res : constant Eti_Error := Menu_Fmt (Men, L'Access, C'Access);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- else
- Lines := Line_Count (L);
- Columns := Column_Count (C);
- end if;
+ Eti_Exception (Menu_Fmt (Men, L'Access, C'Access));
+ Lines := Line_Count (L);
+ Columns := Column_Count (C);
end Format;
-------------------------------------------------------------------------------
procedure Set_Item_Init_Hook (Men : Menu;
Proc : Menu_Hook_Function)
is
function Set_Item_Init (Men : Menu;
- Proc : Menu_Hook_Function) return C_Int;
+ Proc : Menu_Hook_Function) return Eti_Error;
pragma Import (C, Set_Item_Init, "set_item_init");
- Res : constant Eti_Error := Set_Item_Init (Men, Proc);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Item_Init (Men, Proc));
end Set_Item_Init_Hook;
procedure Set_Item_Term_Hook (Men : Menu;
Proc : Menu_Hook_Function)
is
function Set_Item_Term (Men : Menu;
- Proc : Menu_Hook_Function) return C_Int;
+ Proc : Menu_Hook_Function) return Eti_Error;
pragma Import (C, Set_Item_Term, "set_item_term");
- Res : constant Eti_Error := Set_Item_Term (Men, Proc);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Item_Term (Men, Proc));
end Set_Item_Term_Hook;
procedure Set_Menu_Init_Hook (Men : Menu;
Proc : Menu_Hook_Function)
is
function Set_Menu_Init (Men : Menu;
- Proc : Menu_Hook_Function) return C_Int;
+ Proc : Menu_Hook_Function) return Eti_Error;
pragma Import (C, Set_Menu_Init, "set_menu_init");
- Res : constant Eti_Error := Set_Menu_Init (Men, Proc);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Menu_Init (Men, Proc));
end Set_Menu_Init_Hook;
procedure Set_Menu_Term_Hook (Men : Menu;
Proc : Menu_Hook_Function)
is
function Set_Menu_Term (Men : Menu;
- Proc : Menu_Hook_Function) return C_Int;
+ Proc : Menu_Hook_Function) return Eti_Error;
pragma Import (C, Set_Menu_Term, "set_menu_term");
- Res : constant Eti_Error := Set_Menu_Term (Men, Proc);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Menu_Term (Men, Proc));
end Set_Menu_Term_Hook;
function Get_Item_Init_Hook (Men : Menu) return Menu_Hook_Function
@@ -891,19 +779,15 @@ package body Terminal_Interface.Curses.Menus is
Items : Item_Array_Access)
is
function Set_Items (Men : Menu;
- Items : System.Address) return C_Int;
+ Items : System.Address) return Eti_Error;
pragma Import (C, Set_Items, "set_menu_items");
- Res : Eti_Error;
begin
pragma Assert (Items.all (Items'Last) = Null_Item);
if Items.all (Items'Last) /= Null_Item then
raise Menu_Exception;
else
- Res := Set_Items (Men, Items.all'Address);
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Set_Items (Men, Items.all'Address));
end if;
end Redefine;
@@ -955,14 +839,11 @@ package body Terminal_Interface.Curses.Menus is
procedure Delete (Men : in out Menu)
is
- function Free (Men : Menu) return C_Int;
+ function Free (Men : Menu) return Eti_Error;
pragma Import (C, Free, "free_menu");
- Res : constant Eti_Error := Free (Men);
begin
- if Res /= E_Ok then
- Eti_Exception (Res);
- end if;
+ Eti_Exception (Free (Men));
Men := Null_Menu;
end Delete;
@@ -971,22 +852,22 @@ package body Terminal_Interface.Curses.Menus is
Key : Key_Code) return Driver_Result
is
function Driver (Men : Menu;
- Key : C_Int) return C_Int;
+ Key : C_Int) return Eti_Error;
pragma Import (C, Driver, "menu_driver");
R : constant Eti_Error := Driver (Men, C_Int (Key));
begin
- if R /= E_Ok then
- case R is
- when E_Unknown_Command => return Unknown_Request;
- when E_No_Match => return No_Match;
- when E_Request_Denied |
- E_Not_Selectable => return Request_Denied;
- when others =>
- Eti_Exception (R);
- end case;
- end if;
- return Menu_Ok;
+ case R is
+ when E_Unknown_Command =>
+ return Unknown_Request;
+ when E_No_Match =>
+ return No_Match;
+ when E_Request_Denied | E_Not_Selectable =>
+ return Request_Denied;
+ when others =>
+ Eti_Exception (R);
+ return Menu_Ok;
+ end case;
end Driver;
procedure Free (IA : in out Item_Array_Access;
diff --git a/Ada95/src/terminal_interface-curses-mouse.adb b/Ada95/src/terminal_interface-curses-mouse.adb
index 9b4032639308..49a440e64909 100644
--- a/Ada95/src/terminal_interface-curses-mouse.adb
+++ b/Ada95/src/terminal_interface-curses-mouse.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2014,2018 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.24 $
--- $Date: 2009/12/26 17:38:58 $
+-- $Revision: 1.26 $
+-- $Date: 2018/07/07 23:35:05 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
@@ -45,8 +45,6 @@ use Interfaces;
package body Terminal_Interface.Curses.Mouse is
- use type System.Bit_Order;
-
function Has_Mouse return Boolean
is
function Mouse_Avail return C_Int;
@@ -199,7 +197,8 @@ package body Terminal_Interface.Curses.Mouse is
pragma Import (C, Wenclose, "wenclose");
begin
if Wenclose (Win, C_Int (Event.Y), C_Int (Event.X))
- = Curses_Bool_False then
+ = Curses_Bool_False
+ then
return False;
else
return True;
diff --git a/Ada95/src/terminal_interface-curses-putwin.adb b/Ada95/src/terminal_interface-curses-putwin.adb
index 986cd6b9bd6c..c5724d118705 100644
--- a/Ada95/src/terminal_interface-curses-putwin.adb
+++ b/Ada95/src/terminal_interface-curses-putwin.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000 Free Software Foundation, Inc. --
+-- Copyright (c) 2000,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.3 $
+-- $Revision: 1.4 $
-- Binding Version 01.00
with Ada.Streams.Stream_IO.C_Streams;
diff --git a/Ada95/src/terminal_interface-curses-putwin.ads b/Ada95/src/terminal_interface-curses-putwin.ads
index d302bdcec452..24d05063e1cd 100644
--- a/Ada95/src/terminal_interface-curses-putwin.ads
+++ b/Ada95/src/terminal_interface-curses-putwin.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000 Free Software Foundation, Inc. --
+-- Copyright (c) 2000,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.3 $
+-- $Revision: 1.4 $
-- Binding Version 01.00
with Ada.Streams.Stream_IO;
diff --git a/Ada95/src/terminal_interface-curses-termcap.ads b/Ada95/src/terminal_interface-curses-termcap.ads
index dd01396e8b0b..e5f19f658e5d 100644
--- a/Ada95/src/terminal_interface-curses-termcap.ads
+++ b/Ada95/src/terminal_interface-curses-termcap.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000 Free Software Foundation, Inc. --
+-- Copyright (c) 2000,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.3 $
+-- $Revision: 1.4 $
-- Binding Version 01.00
------------------------------------------------------------------------------
diff --git a/Ada95/src/terminal_interface-curses-terminfo.ads b/Ada95/src/terminal_interface-curses-terminfo.ads
index fb39bf1ed6f1..67f951d08f55 100644
--- a/Ada95/src/terminal_interface-curses-terminfo.ads
+++ b/Ada95/src/terminal_interface-curses-terminfo.ads
@@ -7,7 +7,7 @@
-- S P E C --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000 Free Software Foundation, Inc. --
+-- Copyright (c) 2000,2003 Free 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 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.3 $
+-- $Revision: 1.4 $
-- Binding Version 01.00
------------------------------------------------------------------------------
diff --git a/Ada95/src/terminal_interface-curses-text_io.adb b/Ada95/src/terminal_interface-curses-text_io.adb
index e2ca27f208e7..85a4f44b637a 100644
--- a/Ada95/src/terminal_interface-curses-text_io.adb
+++ b/Ada95/src/terminal_interface-curses-text_io.adb
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2014 Free 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,8 +35,8 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.20 $
--- $Date: 2011/03/22 23:38:49 $
+-- $Revision: 1.22 $
+-- $Date: 2014/05/24 21:32:18 $
-- Binding Version 01.00
------------------------------------------------------------------------------
package body Terminal_Interface.Curses.Text_IO is
@@ -205,7 +205,7 @@ package body Terminal_Interface.Curses.Text_IO is
end if;
Get_Cursor_Position (Win, Y1, X);
- pragma Unreferenced (X);
+ pragma Warnings (Off, X); -- unreferenced
N := Natural (To); N := N - 1;
Y2 := Line_Position (N);
if Y2 < Y1 then
diff --git a/Ada95/src/terminal_interface-curses-trace.adb_p b/Ada95/src/terminal_interface-curses-trace.adb_p
index d2117a4cef17..0dead37675ff 100644
--- a/Ada95/src/terminal_interface-curses-trace.adb_p
+++ b/Ada95/src/terminal_interface-curses-trace.adb_p
@@ -7,7 +7,7 @@
-- B O D Y --
-- --
------------------------------------------------------------------------------
--- Copyright (c) 2000-2004,2009 Free Software Foundation, Inc. --
+-- Copyright (c) 2000-2009,2014 Free 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,60 +35,39 @@
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer, 1996
-- Version Control:
--- $Revision: 1.7 $
+-- $Revision: 1.11 $
-- Binding Version 01.00
------------------------------------------------------------------------------
#if ADA_TRACE then
with Interfaces.C; use Interfaces.C;
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-with Ada.Unchecked_Conversion;
#end if;
package body Terminal_Interface.Curses.Trace is
#if ADA_TRACE then
- type C_TraceType is new C_UInt;
-
- function TraceAda_To_TraceC is new
- Ada.Unchecked_Conversion (Source => Trace_Attribute_Set,
- Target => C_TraceType);
-
procedure Trace_On (x : Trace_Attribute_Set) is
- procedure traceC (y : C_TraceType);
+ procedure traceC (y : Trace_Attribute_Set);
pragma Import (C, traceC, "trace");
begin
- traceC (TraceAda_To_TraceC (x));
+ traceC (x);
end Trace_On;
- -- 75. (12) A C function that takes a variable number of arguments can
- -- correspond to several Ada subprograms, taking various specific
- -- numbers and types of parameters.
-
procedure Trace_Put (str : String) is
procedure tracef (format : char_array; s : char_array);
pragma Import (C, tracef, "_traces");
- Txt : char_array (0 .. str'Length);
- Length : size_t;
- formatstr : constant String := "%s" & ASCII.NUL;
- formattxt : char_array (0 .. formatstr'Length);
+ -- _traces() is defined in c_varargs_to_ada.h
begin
- To_C (formatstr, formattxt, Length);
- To_C (str, Txt, Length);
- tracef (formattxt, Txt);
+ tracef (To_C ("%s"), To_C (str));
end Trace_Put;
#else
procedure Trace_On (x : Trace_Attribute_Set) is
-#if PRAGMA_UNREF
- pragma Unreferenced (x);
-#end if;
+ pragma Warnings (Off, x); -- unreferenced
begin
null;
end Trace_On;
procedure Trace_Put (str : String) is
-#if PRAGMA_UNREF
- pragma Unreferenced (str);
-#end if;
+ pragma Warnings (Off, str); -- unreferenced
begin
null;
end Trace_Put;
diff --git a/COPYING b/COPYING
index 6e3b39483181..8778d7ee71fc 100644
--- a/COPYING
+++ b/COPYING
@@ -1,4 +1,4 @@
-Copyright (c) 1998-2013,2014 Free Software Foundation, Inc.
+Copyright (c) 1998-2019,2020 Free Software Foundation, Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
@@ -25,4 +25,4 @@ sale, use or other dealings in this Software without prior written
authorization.
-- vile:txtmode fc=72
--- $Id: COPYING,v 1.2 2014/01/18 23:59:29 tom Exp $
+-- $Id: COPYING,v 1.8 2020/01/04 14:49:29 tom Exp $
diff --git a/INSTALL b/INSTALL
index 9b0ac23d88b1..98849355695e 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2019,2020 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: INSTALL,v 1.168 2013/08/03 23:15:23 tom Exp $
+-- $Id: INSTALL,v 1.215 2020/01/18 17:02:13 tom Exp $
---------------------------------------------------------------------
How to install Ncurses/Terminfo on your system
---------------------------------------------------------------------
@@ -196,17 +196,16 @@ INSTALLATION PROCEDURE:
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
- databases are SVr4-compatible, but most seem to be. Exceptions include
- DEC's Digital Unix (formerly known as OSF/1).
+ databases are SVr4-compatible, but most seem to be.
+
+ It is possible to configure ncurses to use other terminfo database formats.
+ A few are provided as examples in the include-directory (see --with-caps).
If you run the test programs WITHOUT installing terminfo, ncurses may
read the termcap file and cache that in $HOME/.terminfo, which will
thereafter be used instead of the terminfo database. See the comments
on "--enable-getcap-cache", to see why this is a Bad Thing.
- It is possible to configure ncurses to use other terminfo database formats.
- A few are provided as examples in the include-directory (see --with-caps).
-
The ncurses program is designed specifically to test the ncurses library.
You can use it to verify that the screen highlights work correctly, that
cursor addressing and window scrolling works OK, etc.
@@ -227,8 +226,7 @@ INSTALLATION PROCEDURE:
############################################################################
# CAVEAT EMPTOR: `install.data' run as root will NUKE any existing #
# terminfo database. If you have any custom or unusual entries SAVE them #
- # before you install ncurses. I have a file called terminfo.custom for #
- # this purpose. Don't forget to run tic on the file once you're done. #
+ # before you install ncurses. #
############################################################################
The terminfo(5) manual page must be preprocessed with tbl(1) before
@@ -312,18 +310,27 @@ SUMMARY OF CONFIGURE OPTIONS:
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. Some, but not all of the
- programs are useful in this configuration, e.g., reset and tput versus
+ programs are useful in this configuration, e.g., tset and tput versus
infocmp and tic.
--disable-db-install
Do not install the terminal database. This is used to omit features
for packages, as done with --without-progs.
+ --disable-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).
+
--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-gnat-projects
+ Disable GNAT projects even if usable, for testing old makefile rules.
+
--disable-hashmap
Compile without hashmap scrolling-optimization code. This algorithm is
the default.
@@ -337,6 +344,30 @@ SUMMARY OF CONFIGURE OPTIONS:
--disable-largefile
Disable compiler flags needed to use large-file interfaces.
+ --disable-leaks
+ For testing, compile-in code that frees memory that normally would not
+ be freed, to simplify analysis of memory-leaks.
+
+ Any implementation of curses must not free the memory associated with
+ a screen, since (even after calling endwin()), it must be available
+ for use in the next call to refresh(). There are also chunks of
+ memory held for performance reasons. That makes it hard to analyze
+ curses applications for memory leaks. To work around this, build a
+ debugging version of the ncurses library which frees those chunks
+ which it can, and provides the _nc_free_and_exit() function to free
+ the remainder and then exit. The ncurses utility and test programs
+ use this feature, e.g., via the ExitProgram() macro.
+
+ Because this lies outside of the library's intended usage, it is not
+ normally considered part of the ABI. If there were some (as yet
+ unplanned) extension which frees memory in a manner that would let the
+ library resume and reallocate memory, then that would not use a "_nc_"
+ prefix.
+
+ --disable-lib-suffixes
+ Suppress the "w", "t" or "tw" suffixes which normally would be added
+ to the library names for the --enable-widec and --with-pthread options.
+
--disable-libtool-version
when using --with-libtool, control how the major/minor version numbers
are used for constructing the library name.
@@ -348,19 +379,9 @@ SUMMARY OF CONFIGURE OPTIONS:
Use --disable-libtool-version to use the libtool -version-info feature.
This corresponds to the setting used before patch 20100515.
- --disable-leaks
- For testing, compile-in code that frees memory that normally would not
- be freed, to simplify analysis of memory-leaks.
-
- Any implementation of curses must not free the memory associated with
- a screen, since (even after calling endwin()), it must be available
- for use in the next call to refresh(). There are also chunks of
- memory held for performance reasons. That makes it hard to analyze
- curses applications for memory leaks. To work around this, build
- a debugging version of the ncurses library which frees those chunks
- which it can, and provides the _nc_free_and_exit() function to free
- the remainder on exit. The ncurses utility and test programs use this
- feature, e.g., via the ExitProgram() macro.
+ Starting with patch 20141115, using this option causes the configure
+ script to apply the top-level VERSION file to the ABI version used
+ for libtool.
--disable-lp64
The header files will ignore use of the _LP64 symbol to make chtype
@@ -386,12 +407,51 @@ SUMMARY OF CONFIGURE OPTIONS:
rather than the include directory. This makes it simpler to avoid
compile-time conflicts with other versions of curses.h
+ Putting the header files into a subdirectory assumes that applications
+ will follow the (standard) practice of including the headers with
+ reference to the subdirectory name. For instance, the normal ncurses
+ header would be included using
+
+ #include <ncurses/curses.h>
+ #include <ncurses/term.h>
+
+ while the ncursesw headers would be found this way:
+
+ #include <ncursesw/curses.h>
+ #include <ncursesw/term.h>
+
+ In either case (with or without the --disable-overwrite option),
+ almost all applications are designed to include a related set of
+ curses header files from the same directory.
+
+ Manipulating the --includedir configure option to put header files
+ directly in a subdirectory of the normal include-directory defeats
+ this, and breaks builds of portable applications. Likewise, putting
+ some headers in /usr/include, and others in a subdirectory is a good
+ way to break builds.
+
+ When configured with --disable-overwrite, the installed header files'
+ embedded #include's are adjusted to use the same style of includes
+ noted above. In particular, the unctrl.h header is included from
+ curses.h, which means that a makefile which tells the compiler to
+ include directly from the subdirectory will fail to compile correctly.
+ Without some special effort, it will either fail to compile at all,
+ or the compiler may find a different unctrl.h file.
+
--disable-relink
If --enable-rpath is given, the generated makefiles normally will
- rebuild the libraries during install. Use this option to simply
- copy whatever the linked produced.
+ rebuild shared libraries during install. Use this option to simply
+ copy whatever the linker produced.
- This option is ignored if --enable-rpath is not given.
+ Static libraries cannot simply be copied because tools use timestamps
+ to determine if the library's symbol table is up to date. If your
+ install program supports the "-p" (preserve timestamp) option, that
+ is used when --disable-relink is given, to avoid rebuilding the symbol
+ table.
+
+ Finally, some tools ignore the subsecond timestamps supported by some
+ filesystems. This option adds a 1-second sleep to help those tools
+ avoid unnecessary relinking during the install process.
--disable-root-environ
Compile with environment restriction, so certain environment variables
@@ -409,6 +469,9 @@ SUMMARY OF CONFIGURE OPTIONS:
Compile without scroll-hints code. This option is ignored when
hashmap scrolling is configured, which is the default.
+ --disable-stripping
+ Do not strip installed executables.
+
--disable-tic-depends
When building shared libraries, normally the tic library is linked to
depend upon the ncurses library (or equivalently, on the tinfo-library
@@ -427,6 +490,26 @@ SUMMARY OF CONFIGURE OPTIONS:
list documented in X/Open. ncurses provides varargs support for this
function. Use --disable-tparm-varargs to disable this support.
+ --disable-wattr-macros
+ The 6.0 ABI adds support for extended colors and for extended mouse.
+ The former is a noticeable problem when developers inadvertently
+ compile using the ncurses6 header files and link with an ncurses5
+ library, because the wattr* macros use a new field in the WINDOW
+ structure. These macros are used in several applications.
+
+ Since ncurses provides an actual function for each of these macros,
+ suppressing them from the curses.h header allows the ncurses5 libraries
+ to be used in most applications.
+
+ NOTE: The extended colors also are used in the cchar_t structure, but
+ fewer applications use that.
+
+ NOTE: This workaround does not help with mismatches in the ncurses
+ mouse version. The extended mouse feature uses one less fewer bit for
+ each button, so that only the first button will work as expected with
+ a mismatch between header and library. Again, most applications will
+ work, since most use only the first button.
+
--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.
@@ -473,12 +556,6 @@ SUMMARY OF CONFIGURE OPTIONS:
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.
@@ -501,6 +578,14 @@ SUMMARY OF CONFIGURE OPTIONS:
compatible with libncursesw 5.4. None of the interfaces change, but
applications which have mouse mask mmask_t's must be recompiled.
+ --enable-ext-putwin
+ Modify the file-format written by putwin() to use printable text rather
+ than binary files, allowing getwin() to read screen dumps written by
+ differently-configured ncurses libraries. The extended getwin() can
+ still read binary screen dumps from the "same" configuration of
+ ncurses. This does not change the ABI (the binary interface seen by
+ calling applications).
+
--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
@@ -546,6 +631,14 @@ SUMMARY OF CONFIGURE OPTIONS:
terminfo entries. This is the default, unless you have disabled the
extended functions.
+ --enable-opaque-curses
+ --enable-opaque-form
+ --enable-opaque-menu
+ --enable-opaque-panel
+ Define symbol in curses.h which controls whether some library
+ structures are treated as "opaque". The --enable-opaque-curses option
+ is overridden by the --enable-reentrant option.
+
--enable-pc-files
If pkg-config is found (see --with-pkg-config), generate ".pc" files
for each of the libraries, and install them in pkg-config's library
@@ -556,9 +649,9 @@ SUMMARY OF CONFIGURE OPTIONS:
call can be interrupted for SIGWINCH.
--enable-reentrant
- Compile experimental configuration which improves reentrant use of the
- library by reducing global and static variables. This option is also
- set if --with-pthread is used.
+ Compile configuration which improves reentrant use of the library by
+ reducing global and static variables. This option is also set if
+ --with-pthread is used.
Enabling this option adds a "t" to the library names, except for the
special case when --enable-weak-symbols is also used.
@@ -582,14 +675,8 @@ SUMMARY OF CONFIGURE OPTIONS:
--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.
+ vsnprintf() or vsprintf(). It is slow, however, and is used only on
+ very old systems which lack vsnprintf().
--enable-signed-char
The term.h header declares a Booleans[] array typed "char". But it
@@ -598,6 +685,13 @@ SUMMARY OF CONFIGURE OPTIONS:
is not strictly compatible. This option allows one to implement this
alteration without patching the source code.
+ --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-sp-funcs
Compile-in support for extended functions which accept a SCREEN pointer,
reducing the need for juggling the global SP value with set_term() and
@@ -684,6 +778,9 @@ SUMMARY OF CONFIGURE OPTIONS:
Tell where to install the Ada includes (default:
PREFIX/lib/ada/adainclude)
+ --with-ada-libname=NAME
+ Override the name of the Ada binding (default: "AdaCurses")
+
--with-ada-objects=DIR
Tell where to install the Ada objects (default: PREFIX/lib/ada/adalib)
@@ -700,10 +797,6 @@ SUMMARY OF CONFIGURE OPTIONS:
correspond with that in <stdbool.h>, or defaults to platform-specific
sizes).
- --with-build-cpp=XXX
- This option is provided by the same macro used for $BUILD_CC, etc.,
- but is not directly used by ncurses.
-
--with-build-cc=XXX
If cross-compiling, specify a host C compiler, which is needed to
compile a few utilities which generate source modules for ncurses.
@@ -718,6 +811,10 @@ SUMMARY OF CONFIGURE OPTIONS:
You can also set the environment variable $BUILD_CFLAGS rather than
use this option.
+ --with-build-cpp=XXX
+ This option is provided by the same macro used for $BUILD_CC, etc.,
+ but is not directly used by ncurses.
+
--with-build-cppflags=XXX
If cross-compiling, specify the host C preprocessor-flags. You might
need to do this if the target compiler has unusual flags which confuse
@@ -762,6 +859,10 @@ SUMMARY OF CONFIGURE OPTIONS:
executables, e.g., by setting "--with-chtype=long" (the configure
script supplies "unsigned").
+ --with-config-suffix=XXX
+ Specify a suffix for the ncursesw6-config file, etc., used to work
+ around conflicts with packages.
+
--with-cxx-shared
When --with-shared is set, build libncurses++ as a shared library.
This implicitly relies upon building with gcc/g++, since other
@@ -790,10 +891,23 @@ SUMMARY OF CONFIGURE OPTIONS:
For testing, compile and link with Gray Watson's dmalloc library.
This also sets the --disable-leaks option.
+ --with-export-syms[=XXX]
+ Limit exported symbols using libtool. The configure script
+ automatically chooses an appropriate ".sym" file, which lists the
+ symbols which are part of the ABI.
+
+ --with-extra-suffix[=XXX]
+ Add the given suffix to header- and library-names to simplify
+ installing incompatible ncurses libraries, e.g., those using a
+ different ABI. The renaming affects the name of the
+ include-subdirectory if --disable-overwrite is given.
+
--with-fallbacks=XXX
Specify a list of fallback terminal descriptions which will be
compiled into the ncurses library. See CONFIGURING FALLBACK ENTRIES.
+ See also "--with-tic-path" and "--with-infocmp-path".
+
--with-gpm
use Alessandro Rubini's GPM library to provide mouse support on the
Linux console. Prior to ncurses 5.5, this introduced a dependency on
@@ -833,13 +947,22 @@ SUMMARY OF CONFIGURE OPTIONS:
filesystem-based terminfo entries.
Use the parameter value to give the install-prefix used for the
- datbase, e.g.,
+ database, e.g.,
--with-hashed-db=/usr/local/BigBase
to find the corresponding include- and lib-directories under the
- given directory.
+ given directory. Alternatively, you can specify a directory leaf
+ name, e.g.,
+ --with-hashed-db=db4
+ to make the configure script look for files in a subdirectory such as
+ /usr/include/db4/db.h
+ /usr/lib/db4/libdb.so
See also the --enable-getcap option.
+ --with-infocmp-path[=XXX]
+ Use this option to override the automatic detection of tic in your
+ $PATH when building fallbacks (see "--with-fallbacks").
+
--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"
@@ -878,7 +1001,14 @@ SUMMARY OF CONFIGURE OPTIONS:
macros for libtool, e.g., AC_PROG_LIBTOOL. See the comments in
aclocal.m4 for CF_PROG_LIBTOOL, and ensure that you build configure
using the appropriate patch for autoconf from
- http://invisible-island.net/autoconf/
+ https://invisible-island.net/autoconf/
+
+ --with-libtool-opts=XXX
+ Allow user to pass additional libtool options into the library creation
+ and link steps. The main use for this is to do something like
+ ./configure --with-libtool-opts=-static
+ to get the same behavior as automake-flavored
+ ./configure --enable-static
--with-manpage-aliases
Tell the configure script you wish to create entries in the
@@ -908,7 +1038,7 @@ SUMMARY OF CONFIGURE OPTIONS:
copying the man-page for each alias.
--with-manpage-tbl
- Tell the configure script that you with to preprocess the manpages
+ Tell the configure script that you wish to preprocess the manpages
by running them through tbl to generate tables understandable by
nroff.
@@ -939,6 +1069,20 @@ SUMMARY OF CONFIGURE OPTIONS:
those using termcap, do not use the higher speeds. Your application
(or system, in general) may or may not.
+ --with-pc-suffix=SUFFIX
+ If ".pc" files are installed, optionally add a suffix to the files
+ and corresponding package names to separate unusual configurations.
+ If no option value is given (or if it is "none"), no suffix is added.
+
+ --with-pcre2
+ Add PCRE2 (Perl-compatible regular expressions v2) to the build if it
+ is available and the user requests it. Assume the application will
+ otherwise use the POSIX interface.
+
+ This is useful for MinGW builds because the usual POSIX interface is
+ not supplied by the development environment, while ncurses' form
+ library uses a regular expression feature for one of the field types.
+
--with-pkg-config=[DIR]
Check for pkg-config, optionally specifying its path.
@@ -978,11 +1122,23 @@ SUMMARY OF CONFIGURE OPTIONS:
shared libraries, you may encounter problems with the linker.
For example, it may prevent you from running the build tree's
copy of tic (for installing the terminfo database) because it
- loads the system's copy of the ncurses shared libraries. In that
- case, using the misc/shlib script may be helpful, since it sets
- $LD_LIBRARY_PATH to point to the build tree, e.g.,
+ loads the system's copy of the ncurses shared libraries.
+
+ In that case, using the misc/shlib script may be helpful, since it
+ sets $LD_LIBRARY_PATH to point to the build tree, e.g.,
+
./misc/shlib make install
+ Alternatively, for most platforms, the linker accepts a list of
+ directories which will be searched for libraries at run-time. The
+ configure script allows you to modify this list using the
+ RPATH_LIST environment variable. It is a colon-separated list of
+ directories (default: the "libdir" set via the configure script).
+ If you set that to put "../lib" first in the list, the linker will
+ look first at the build-directory, and avoid conflict with libraries
+ already installed. One drawback to this approach is that libraries
+ can be accidentally searched in any "../lib" directory.
+
NOTE: If you use the --with-ada-sharedlib option, you should also
set this option, to ensure that C-language modules needed for the
Ada binding use appropriate compiler options.
@@ -1006,6 +1162,9 @@ SUMMARY OF CONFIGURE OPTIONS:
Specify a search-list of terminfo directories which will be compiled
into the ncurses library (default: DATADIR/terminfo)
+ This is a colon-separated list, like the TERMINFO_DIRS environment
+ variable.
+
--with-termlib[=XXX]
When building the ncurses library, organize this as two parts: the
curses library (libncurses) and the low-level terminfo library
@@ -1023,6 +1182,10 @@ SUMMARY OF CONFIGURE OPTIONS:
Specify a search-list of termcap files which will be compiled into the
ncurses library (default: /etc/termcap:/usr/share/misc/termcap)
+ --with-tic-path[=XXX]
+ Use this option to override the automatic detection of tic in your
+ $PATH when building fallbacks (see "--with-fallbacks").
+
--with-ticlib[=XXX]
When building the ncurses library, build a separate library for
the modules that are used only by the utility programs. Normally
@@ -1051,18 +1214,41 @@ SUMMARY OF CONFIGURE OPTIONS:
Configure the trace() function as part of the all models of the ncurses
library. Normally it is part of the debug (libncurses_g) library only.
- --with-xterm-kbs=XXX
- Configure xterm's terminfo entries to use either BS (^H, i.e., ASCII
- backspace) or DEL (^?, or 127). XXX can be BS (or bs, 8) or DEL
- (or del, 127).
-
- During installation, the makefile and scripts modifies the "xterm+kbs"
- terminfo entry to use this setting.
-
--with-valgrind
For testing, compile with debug option.
This also sets the --disable-leaks option.
+ --with-versioned-syms[=XXX]
+ The Solaris, GNU and reportedly some other linkers (ld) accept a
+ "--version-script" option which tells the linker to annotate the
+ resulting objects with version identifiers.
+
+ Use "objdump -T" on a library to see the annotations.
+
+ The configure script attempts to automatically apply a suitable ".map"
+ file to provide this information for Linux. Solaris mapfiles differ:
+
+ a) comments are not accepted
+ b) wildcards are not accepted, except for a special case of "_*".
+ c) each symbol listed in the map file must exist in the library
+
+ The Solaris limitations conflict with the development goal of providing
+ a small set of ".map" files as examples, which cover the most common
+ configurations. Because that coverage is done by merging together
+ several builds, some symbols will be listed in the the ".map" files
+ that do not happen to be present in one configuration or another.
+
+ The sample ".map" (and ".sym") files are generated using a set of
+ scripts which build several configurations for each release version,
+ checking to see which of the "_nc_" symbols can be made local. In
+ addition to the ncurses libraries and programs, the symbols used
+ by the "tack" program before version 1.08 are made global.
+
+ These sample ".map" files will not cover all possible combinations.
+ In some cases, e.g., when using the --with-weak-symbols option, you
+ may prefer to use a different ".map" file by setting this option's
+ value.
+
--with-wrap-prefix=XXX
When using the --enable-reentrant option, ncurses redefines variables
that would be global in curses, e.g., LINES, as a macro that calls a
@@ -1074,6 +1260,19 @@ SUMMARY OF CONFIGURE OPTIONS:
which applications should not call even via a macro. This configure
option lets you choose the prefix for these wrapped variables.
+ --with-x11-rgb=FILE
+ Provide a pathname for the X11 rgb file, used by the picsmap program.
+ This overrides a configure check which usually works, but is needed
+ due to the lack of standardization for X11's files.
+
+ --with-xterm-kbs=XXX
+ Configure xterm's terminfo entries to use either BS (^H, i.e., ASCII
+ backspace) or DEL (^?, or 127). XXX can be BS (or bs, 8) or DEL
+ (or del, 127).
+
+ During installation, the makefile and scripts modifies the "xterm+kbs"
+ terminfo entry to use this setting.
+
--without-ada
Suppress the configure script's check for Ada95, do not build the
Ada95 binding and related demo.
@@ -1113,6 +1312,11 @@ SUMMARY OF CONFIGURE OPTIONS:
programs (e.g., tic). The test applications will still be built if you
type "make", though not if you simply do "make install".
+ --without-tack
+ Suppress build/install with tack program, if it happens to be
+ in the same build-tree (tack was moved out of the ncurses source-tree
+ in 20070203).
+
--without-tests
Tell the configure script to suppress the build of ncurses' test
programs.
@@ -1126,18 +1330,147 @@ SUMMARY OF CONFIGURE OPTIONS:
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.
+ Because ncurses implements X/Open Curses, 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 largely correspond to X/Open (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:
+ 6.1 (Jan 27, 2018)
+ Interface changes:
+
+ + X/Open Curses specifies a "reserved" void* parameter in several
+ functions, saying that it must be NULL. In this release, if the
+ parameter is non-NULL, it is interpreted as a point to an integer
+ containing a color pair. In previous releases, a non-NULL parameter
+ caused an error return. Portable applications are unaffected. Here
+ are the functions which have been extended:
+ attr_get
+ attr_off
+ attr_on
+ attr_set
+ chgat
+ color_set
+ mvchgat
+ mvwchgat
+ slk_attr_off
+ slk_attr_on
+ slk_attr_set
+ wattr_get
+ wattr_on
+ wattr_off
+ wattr_set
+ wchgat
+ wcolor_set
+
+ + the TERMINAL structure declared in <term.h> has been made opaque,
+ and its size increased to handle the increased size of color pair
+ and color value, as well as other numeric capabilities.
+
+ A few applications required change, e.g., to use def_prog_mode;
+ only one application (tack) is known to have a valid reason for
+ accessing these internal details, and that was addressed by the
+ release of tack 1.08 in 2017. Internal functions marked as used
+ by tack will be deprecated in future releases.
+
+ Added extensions:
+
+ + Several new functions were added to manipulate extended color pairs
+ and color values. These include:
+ alloc_pair
+ extended_color_content
+ extended_pair_content
+ extended_slk_color
+ find_pair
+ free_pair
+ init_extended_color
+ init_extended_pair
+ reset_color_pairs
+
+ as well as corresponding sp-functions.
+
+ + A new terminfo capability "RGB" tells the ncurses library that the
+ color values are red/green/blue, to eliminate the need for palettes
+ in that special case for the color_content function.
+
+ Added internal functions (other than "_sp" variants):
+ _nc_copy_termtype2
+ _nc_export_termtype2
+ _nc_fallback2
+ _nc_find_prescr
+ _nc_forget_prescr
+ _nc_free_termtype2
+ _nc_read_entry2
+ _nc_write_object
+
+ Removed internal functions:
+ _nc_check_termtype
+ _nc_resolve_uses
+
+ Modified internal functions:
+
+ + symbols are used by tic/infocmp/toe:
+ _nc_align_termtype - change parameters to TERMTYPE2*
+ _nc_check_termtype2 - change parameter to TERMTYPE2*
+ _nc_read_file_entry - change parameter to TERMTYPE2*
+ _nc_read_termtype - change parameter to TERMTYPE2*
+ _nc_trim_sgr0 - change parameter to TERMTYPE2*
+ _nc_write_entry - change parameter to TERMTYPE2*
+
+ + symbols used only within the library:
+ _nc_fallback - change return type to TERMTYPE2*
+ _nc_init_termtype - change parameter to TERMTYPE2*
+
+ 6.0 (Aug 08, 2015)
+ Interface changes:
+
+ + The 6.0 ABI modifies the defaults for these configure options:
+ --enable-const
+ --enable-ext-colors
+ --enable-ext-mouse
+ --enable-ext-putwin
+ --enable-interop
+ --enable-lp64
+ --enable-sp-funcs
+ --with-chtype=uint32_t
+ --with-mmask_t=uint32_t
+ --with-tparm-arg=intptr_t
+
+ + ncurses supports symbol versioning. If you use this feature, about
+ half of the "_nc_" private symbols are changed to local symbols.
+
+ + a few applications may need to explicitly flush the standard output
+ when switching between printf's and (curses) printw.
+
+ Added extensions:
+
+ + use_tioctl is an improvement over use_env
+
+ + added wgetdelay to support the NCURSES_OPAQUE feature.
+
+ Added internal functions (other than "_sp" variants):
+ _nc_init_termtype
+ _nc_mvcur
+ _nc_putchar
+ _nc_setenv_num
+ _nc_trace_mmask_t
+
+ Removed internal functions:
+ none
+
+ Modified internal functions:
+ _nc_do_color - change parameters from short/bool to int
+ _nc_keypad - change parameter from bool to int
+ _nc_setupscreen - change parameter from bool to int
+ _nc_signal_handler - change parameter from bool to int
+
+ 5.9 (Apr 04, 2011)
5.8 (Feb 26, 2011)
Interface changes:
@@ -1688,9 +2021,10 @@ IF YOU ARE A SYSTEM INTEGRATOR:
Configuration and Installation:
On platforms where ncurses is assumed to be installed in /usr/lib,
- the configure script uses "/usr" as a default:
+ the configure script uses "/usr" as a default. These include any
+ that use the Linux kernel, as well as these special cases:
- GNU/Linux, FreeBSD, NetBSD, OpenBSD, Cygwin
+ FreeBSD, NetBSD, OpenBSD, Cygwin, MinGW
For other platforms, the default is "/usr/local". See the discussion
of the "--disable-overwrite" option.
@@ -1799,9 +2133,10 @@ CONFIGURING FALLBACK ENTRIES:
$TERMINFO \
../misc/terminfo.src \
`which tic` \
+ `which infocmp` \
linux vt100 xterm >fallback.c
- The first three parameters of the script are normally supplied by
+ The first four parameters of the script are normally supplied by
the configured makefiles via the "--with-fallbacks" option. They
are
@@ -1809,6 +2144,8 @@ CONFIGURING FALLBACK ENTRIES:
2) the source for the terminfo entries
3) the location of the tic program, used to create a terminfo
database.
+ 4) the location of the infocmp program, used to print a terminfo
+ description.
Then just rebuild and reinstall the library as you would normally.
You can restore the default empty fallback list with
@@ -1817,10 +2154,11 @@ CONFIGURING FALLBACK ENTRIES:
$TERMINFO \
../misc/terminfo.src \
`which tic` \
+ `which infocmp` \
>fallback.c
The overhead for an empty fallback list is one trivial stub function.
- Any non-empty fallback list is const-ed and therefore lives in sharable
+ Any non-empty fallback list is const'd and therefore lives in shareable
text space. You can look at the comment trailing each initializer in
the generated ncurses/fallback.c file to see the core cost of the
fallbacks. A good rule of thumb for modern vt100-like entries is that
@@ -1851,11 +2189,10 @@ installation), there are a couple of details you need to be aware of.
They have to do with the ncurses library, which uses terminfo rather
than termcap for describing terminal characteristics.
-Though the ncurses library is terminfo-based, it will interpret your
+Though the ncurses library is terminfo-based, it can interpret your
TERMCAP variable (if present), any local termcap files you reference
-through it, and the system termcap file. However, in order to avoid
-slowing down your application startup, it will only do this once per
-terminal type!
+through it, and the system termcap file. However, to avoid slowing
+down your application startup, it does this only once per terminal type!
The first time you load a given terminal type from your termcap
database, the library initialization code will automatically write it
@@ -1914,7 +2251,7 @@ USING NCURSES WITH GPM:
but the linker may not cooperate, producing mysterious errors.
See the FAQ, as well as the discussion under the --with-gpm option:
- http://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib
+ https://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib
BUILDING NCURSES WITH A CROSS-COMPILER
Ncurses can be built with a cross-compiler. Some parts must be built
diff --git a/MANIFEST b/MANIFEST
index e35f9854ccc9..f423892453d1 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -94,7 +94,7 @@
./Ada95/samples/sample-curses_demo-mouse.ads
./Ada95/samples/sample-curses_demo.adb
./Ada95/samples/sample-curses_demo.ads
-./Ada95/samples/sample-explanation.adb
+./Ada95/samples/sample-explanation.adb_p
./Ada95/samples/sample-explanation.ads
./Ada95/samples/sample-form_demo-aux.adb
./Ada95/samples/sample-form_demo-aux.ads
@@ -128,9 +128,12 @@
./Ada95/samples/tour.adb
./Ada95/samples/tour.ads
./Ada95/src/Makefile.in
+./Ada95/src/c_threaded_variables.c
+./Ada95/src/c_threaded_variables.h
./Ada95/src/c_varargs_to_ada.c
./Ada95/src/c_varargs_to_ada.h
-./Ada95/src/library.gpr
+./Ada95/src/library-cfg.sh
+./Ada95/src/library.gpr.in
./Ada95/src/modules
./Ada95/src/ncurses_compat.c
./Ada95/src/terminal_interface-curses-aux.adb
@@ -200,6 +203,7 @@
./README.MinGW
./README.emx
./TO-DO
+./VERSION
./aclocal.m4
./announce.html.in
./c++/Makefile.in
@@ -333,11 +337,12 @@
./doc/html/ada/terminal_interface-curses-trace__ads.htm
./doc/html/ada/terminal_interface-curses__adb.htm
./doc/html/ada/terminal_interface-curses__ads.htm
+./doc/html/ada/terminal_interface-curses_constants__ads.htm
./doc/html/ada/terminal_interface__ads.htm
./doc/html/announce.html
./doc/html/hackguide.html
./doc/html/index.html
-./doc/html/man/adacurses-config.1.html
+./doc/html/man/adacurses6-config.1.html
./doc/html/man/captoinfo.1m.html
./doc/html/man/clear.1.html
./doc/html/man/curs_add_wch.3x.html
@@ -458,9 +463,11 @@
./doc/html/man/mitem_value.3x.html
./doc/html/man/mitem_visible.3x.html
./doc/html/man/ncurses.3x.html
-./doc/html/man/ncurses5-config.1.html
+./doc/html/man/ncurses6-config.1.html
+./doc/html/man/new_pair.3x.html
./doc/html/man/panel.3x.html
./doc/html/man/resizeterm.3x.html
+./doc/html/man/scr_dump.5.html
./doc/html/man/tabs.1.html
./doc/html/man/term.5.html
./doc/html/man/term.7.html
@@ -470,6 +477,7 @@
./doc/html/man/toe.1m.html
./doc/html/man/tput.1.html
./doc/html/man/tset.1.html
+./doc/html/man/user_caps.5.html
./doc/html/man/wresize.3x.html
./doc/html/ncurses-intro.html
./doc/ncurses-intro.doc
@@ -525,6 +533,7 @@
./form/llib-lformw
./form/modules
./include/Caps
+./include/Caps-ncurses
./include/Caps.aix4
./include/Caps.hpux11
./include/Caps.keys
@@ -686,8 +695,10 @@
./man/mitem_value.3x
./man/mitem_visible.3x
./man/ncurses.3x
+./man/new_pair.3x
./man/panel.3x
./man/resizeterm.3x
+./man/scr_dump.5
./man/tabs.1
./man/term.5
./man/term.7
@@ -698,6 +709,7 @@
./man/toe.1m
./man/tput.1
./man/tset.1
+./man/user_caps.5
./man/wresize.3x
./menu/Makefile.in
./menu/READ.ME
@@ -748,6 +760,7 @@
./misc/form.ref
./misc/gen-pkgconfig.in
./misc/gen_edit.sh
+./misc/magic
./misc/makedef.cmd
./misc/makellib
./misc/menu.def
@@ -855,6 +868,7 @@
./ncurses/base/lib_winch.c
./ncurses/base/lib_window.c
./ncurses/base/nc_panel.c
+./ncurses/base/new_pair.c
./ncurses/base/resizeterm.c
./ncurses/base/safe_sprintf.c
./ncurses/base/sigaction.c
@@ -879,12 +893,15 @@
./ncurses/llib-ltinfotw
./ncurses/llib-ltinfow
./ncurses/modules
+./ncurses/new_pair.h
+./ncurses/report_offsets.c
./ncurses/tinfo/MKcaptab.awk
./ncurses/tinfo/MKcaptab.sh
./ncurses/tinfo/MKcodes.awk
./ncurses/tinfo/MKfallback.sh
./ncurses/tinfo/MKkeys_list.sh
./ncurses/tinfo/MKnames.awk
+./ncurses/tinfo/MKuserdefs.sh
./ncurses/tinfo/README
./ncurses/tinfo/access.c
./ncurses/tinfo/add_tries.c
@@ -984,6 +1001,7 @@
./package/debian-mingw/compat
./package/debian-mingw/control
./package/debian-mingw/copyright
+./package/debian-mingw/mingw32-ncurses6.lintian-overrides
./package/debian-mingw/rules
./package/debian-mingw/source/format
./package/debian-mingw/watch
@@ -991,6 +1009,7 @@
./package/debian-mingw64/compat
./package/debian-mingw64/control
./package/debian-mingw64/copyright
+./package/debian-mingw64/mingw64-ncurses6.lintian-overrides
./package/debian-mingw64/rules
./package/debian-mingw64/source/format
./package/debian-mingw64/watch
@@ -998,12 +1017,25 @@
./package/debian/compat
./package/debian/control
./package/debian/copyright
+./package/debian/ncurses6.lintian-overrides
+./package/debian/ncurses6.triggers
+./package/debian/ncursest6.lintian-overrides
+./package/debian/ncursest6.triggers
./package/debian/rules
./package/debian/source/format
./package/debian/watch
./package/mingw-ncurses.nsi
./package/mingw-ncurses.spec
+./package/ncurses.map
./package/ncurses.spec
+./package/ncurses.sym
+./package/ncursest.map
+./package/ncursest.spec
+./package/ncursest.sym
+./package/ncursestw.map
+./package/ncursestw.sym
+./package/ncursesw.map
+./package/ncursesw.sym
./panel/Makefile.in
./panel/headers
./panel/llib-lpanel
@@ -1033,17 +1065,25 @@
./progs/capconvert
./progs/clear.c
./progs/clear.sh
+./progs/clear_cmd.c
+./progs/clear_cmd.h
./progs/dump_entry.c
./progs/dump_entry.h
./progs/infocmp.c
./progs/modules
./progs/progs.priv.h
+./progs/reset_cmd.c
+./progs/reset_cmd.h
./progs/tabs.c
./progs/tic.c
./progs/toe.c
+./progs/tparm_type.c
+./progs/tparm_type.h
./progs/tput.c
./progs/transform.c
./progs/tset.c
+./progs/tty_settings.c
+./progs/tty_settings.h
./test/Makefile.in
./test/README
./test/aclocal.m4
@@ -1051,11 +1091,13 @@
./test/blue.c
./test/bs.6
./test/bs.c
+./test/bulgarian-utf8-tabs.txt
./test/bulgarian-utf8.txt
./test/cardfile.c
./test/cardfile.dat
./test/chgat.c
./test/clip_printw.c
+./test/color_content.c
./test/color_name.h
./test/color_set.c
./test/configure
@@ -1066,16 +1108,24 @@
./test/demo_forms.txt
./test/demo_keyok.c
./test/demo_menus.c
+./test/demo_new_pair.c
./test/demo_panels.c
+./test/demo_tabs.c
./test/demo_termcap.c
./test/demo_terminfo.c
./test/ditto.c
./test/dots.c
+./test/dots_curses.c
./test/dots_mvcur.c
./test/dots_termcap.c
+./test/dots_xcurses.c
+./test/dump_window.c
+./test/dump_window.h
./test/echochar.c
./test/edit_field.c
./test/edit_field.h
+./test/escherknot.xbm
+./test/extended_color.c
./test/filter.c
./test/firework.c
./test/firstlast.c
@@ -1095,15 +1145,32 @@
./test/knight.c
./test/linedata.h
./test/linux-color.dat
+./test/list_keys.c
./test/listused.sh
./test/lrtest.c
./test/make-tar.sh
+./test/mensetmanus.xbm
+./test/mini.xterm_48x48.xpm
./test/mk-test.awk
./test/modules
./test/movewindow.c
./test/ncurses.c
./test/ncurses_tst.hin
./test/newdemo.c
+./test/package/debian-mingw/compat
+./test/package/debian-mingw/control
+./test/package/debian-mingw/copyright
+./test/package/debian-mingw/docs
+./test/package/debian-mingw/rules
+./test/package/debian-mingw/source/format
+./test/package/debian-mingw/watch
+./test/package/debian-mingw64/compat
+./test/package/debian-mingw64/control
+./test/package/debian-mingw64/copyright
+./test/package/debian-mingw64/docs
+./test/package/debian-mingw64/rules
+./test/package/debian-mingw64/source/format
+./test/package/debian-mingw64/watch
./test/package/debian/compat
./test/package/debian/control
./test/package/debian/copyright
@@ -1113,13 +1180,22 @@
./test/package/debian/watch
./test/package/mingw-ncurses-examples.spec
./test/package/ncurses-examples.spec
+./test/padview.c
+./test/pair_content.c
+./test/parse_rgb.h
+./test/picsmap.c
+./test/picsmap.h
+./test/popup_msg.c
+./test/popup_msg.h
./test/programs
./test/railroad.c
./test/rain.c
./test/redraw.c
./test/savescreen.c
./test/savescreen.sh
+./test/sp_tinfo.c
./test/tclock.c
+./test/terminal.xbm
./test/test.priv.h
./test/test_add_wchstr.c
./test/test_addchstr.c
@@ -1131,13 +1207,19 @@
./test/test_instr.c
./test/test_inwstr.c
./test/test_opaque.c
+./test/test_setupterm.c
+./test/test_sgr.c
+./test/test_termattrs.c
./test/test_vid_puts.c
./test/test_vidputs.c
./test/testaddch.c
./test/testcurs.c
./test/testscanw.c
+./test/tput-colorcube
+./test/tput-initc
./test/tracemunch
./test/view.c
+./test/widechars-utf8-tabs.txt
./test/widechars-utf8.txt
./test/widechars.h
./test/worm.c
@@ -1145,3 +1227,4 @@
./test/xterm-16color.dat
./test/xterm-256color.dat
./test/xterm-88color.dat
+./test/xterm-color_48x48.xpm
diff --git a/Makefile.in b/Makefile.in
index 803746c2b6a7..4a943c4c3af9 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.38 2014/01/18 20:19:45 tom Exp $
+# $Id: Makefile.in,v 1.42 2019/01/06 00:35:11 tom Exp $
##############################################################################
-# Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2018,2019 Free 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"), #
@@ -31,7 +31,7 @@
#
# Master Makefile for ncurses library.
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
DESTDIR=@DESTDIR@
@@ -57,6 +57,7 @@ includedir = @includedir@
includesubdir = @includesubdir@
libdir = @libdir@
mandir = @mandir@
+pkgdir = @PKG_CONFIG_LIBDIR@
include_dir = ${includedir}${includesubdir}
@@ -74,14 +75,16 @@ preinstall :
@ echo ''
@ echo '** Configuration summary for NCURSES $(NCURSES_MAJOR).$(NCURSES_MINOR) $(NCURSES_PATCH):'
@ echo ''
- @ echo ' extended funcs: '`test @NCURSES_EXT_FUNCS@ != 0 && echo yes || echo no`
- @ echo ' xterm terminfo: '@WHICH_XTERM@
+ @ echo ' extended funcs: '`test @NCURSES_EXT_FUNCS@ != 0 && echo yes || echo no`
+ @ echo ' xterm terminfo: '@WHICH_XTERM@
@ echo ''
- @ echo ' bin directory: '$(bindir)
- @ echo ' lib directory: '$(libdir)
- @ echo ' include directory: '$(include_dir)
- @ echo ' man directory: '$(mandir)
-@MAKE_TERMINFO@ @ echo ' terminfo directory: '$(ticdir)
+ @ echo ' bin directory: '$(bindir)
+ @ echo ' lib directory: '$(libdir)
+ @ echo ' include directory: '$(include_dir)
+ @ echo ' man directory: '$(mandir)
+@MAKE_TERMINFO@ @ echo ' terminfo directory: '$(ticdir)
+@USE_FALLBACKS@ @ echo ' using fallback-list: '@FALLBACK_LIST@
+@MAKE_PC_FILES@ @ echo ' pkg-config directory: '$(pkgdir)
@ echo ''
@ test "$(include_dir)" = "$(prefix)/include" || \
echo '** Include-directory is not in a standard location'
@@ -95,6 +98,9 @@ preinstall :
distclean \
realclean ::
+check:
+ @ echo The test-programs are interactive
+
# Put the common rules here so that we can easily construct the list of
# directories to visit.
diff --git a/NEWS b/NEWS
index e7cbd9bf1c56..6dab01c43996 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2019,2020 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: NEWS,v 1.2172 2014/02/23 01:19:35 tom Exp $
+-- $Id: NEWS,v 1.3431 2020/01/19 02:02:44 tom Exp $
-------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started
@@ -38,13 +38,2735 @@ Contributors include those who have provided patches (even small ones), as well
as those who provide useful information (bug reports, analyses). Changes with
no cited author are the work of Thomas E Dickey (TD).
-A few contributors are given in this file by their initials.
-They each account for one percent or more of the changes since 1.9.9e.
+A few contributors may be cited in this file by their initials.
+Each accounts for half of one percent or more of the changes since 1.9.9e.
See the AUTHORS file for the corresponding full names.
Changes through 1.9.9e did not credit all contributions;
it is not possible to add this information.
+20200118
+ + expanded description of XM in user_caps.5
+ + improve xm example for xterm+x11mouse, xterm+sm+1006 -TD
+ + add history section to curs_slk.3x and curs_terminfo.3x manpages.
+ + update alacritty entries for 0.4.0 (prompted by patch by
+ Christian Durr) -TD
+ + correct spelling errors found with codespell.
+ + fix for test/configure, from xterm #352.
+
+20200111
+ + improve configure macros which check for the X11/Intrinsic.h header,
+ to accommodate recent MacOS changes.
+ + suppress gcc's -Winline warning; it has not been useful for some time
+ + update config.guess, config.sub
+
+20200104
+ + modify a couple of macros in aclocal.m4 to allow autoconf 2.69 to
+ "work", to help illustrate discussion in
+ https://invisible-island.net/autoconf/my-autoconf.html
+ + fix some warnings from autoheader-252
+
+20191228
+ + in gen-pkgconfig.in, move the RPATH_LIST and PRIVATE_LIBS assignments
+ past the various prefix/libdir assignments, to allow for using those
+ symbols, e.g., as done via CF_SHARED_OPTS.
+ + improve ncurses*-config and pc-files by filtering out linker-specs.
+ + modify test-package to more closely match Fedora's configuration
+ for PIE/PIC feature and debug-packages.
+
+20191221
+ + correct pathname used in Ada95 sample programs for explain.txt, to
+ work with test-packages.
+ + improve tracemunch:
+ + keep track of TERMINAL* values
+ + if tracing was first turned on after initialization, attempt to
+ show distinct screen, window and terminal names anyway.
+ + ensure that GCC_NORETURN is defined in term.h, because the prototype
+ for exit_terminfo() uses it (report by Werner Fink).
+
+20191214
+ + add exit_curses() and exit_terminfo() to replace internal symbols for
+ leak-checking.
+
+20191207
+ + fix a few warnings for test-package builds
+ + add curses_trace(), to replace trace().
+
+20191130
+ + add portability section to curs_getcchar manpage (prompted by
+ discussion with Nick Black).
+ + improve portability discussion of ACS characters in curs_addch
+ manpage.
+ + improve typography for double-quotes in manpages.
+
+20191123
+ + fix typo for MinGW rpm test-package.
+ + workaround in rpm specs for NFS problems in Fedora 31.
+
+20191116
+ + modify ncurses/Makefile.in to fix a case where Debian/testing changes
+ to the ld --as-needed configuration broke ncurses-examples test
+ packages.
+ + drop library-dependency on psapi for MinGW port, since win_driver.c
+ defines PSAPI_VERSION to 2, making it use GetProcessImageFileName
+ from kernel32.dll (prompted by patch by Simon Sobish, cf: 20140503).
+
+20191109
+ + add warning-check in tic for terminals with parm_dch vs parm_ich.
+ + drop ich1 from rxvt-basic, Eterm and mlterm to improve compatibility
+ with old non-curses programs -TD
+ + reviewed st 0.8.2, updated some details -TD
+ + use ansi+rep several places -TD
+ + corrected tic's check for ich1 (report by Sebastian J. Bronner,
+ cf: 20020901).
+
+20191102
+ + check parameter of set_escdelay, return ERR if negative.
+ + check parameter of set_tabsize, return ERR if not greater than zero
+ (report/patch by Anthony Sottile).
+ + revise CF_ADD_LIBS macro to prepend rather than append libraries.
+ + add "xterm-mono" to help packagers (report by Sven Joachim) -TD
+
+20191026
+ + add a note in man/curs_add_wch.3x about Unicode terminology for the
+ line-drawing characters (report by Nick Black).
+ + improve comment in lib_tgoto.c regarding the use of \200 where a
+ \0 would be intended by the caller (report by "64 bit", cf: 20000923).
+ + modify linux-16color to accommodate Linux console driver change in
+ early 2018 (report by Dino Petrucci).
+
+20191019
+ + modify make_hash to not require --disable-leaks, to simplify building
+ with address-sanitizer.
+ + modify tic to exit if it cannot remove a conflicting name, because
+ treating that as a partial success can cause an infinite loop in
+ use-resolution (report/testcase by Hongxu Chen, cf: 20111001).
+
+20191015
+ + improve buffer-checks in captoinfo.c, for some cases when the
+ input string is shorter than expected.
+ > fix two errata in tic (report/testcases by Hongxu Chen):
+ + check for missing character after backslash in write_it
+ + check for missing characters after "%>" when converting from termcap
+ syntax (cf: 980530).
+
+20191012
+ + amend recent changes to ncurses*-config and pc-files to filter out
+ Debian linker-flags (report by Sven Joachim, cf: 20150516).
+ + clarify relationship between tic, infocmp and captoinfo in manpage.
+ + check for invalid hashcode in _nc_find_type_entry and
+ _nc_find_name_entry.
+ > fix several errata in tic (reports/testcases by "zjuchenyuan"):
+ + check for invalid hashcode in _nc_find_entry.
+ + check for missing character after backslash in fmt_entry
+ + check for acsc with odd length in dump_entry in check for one-one
+ mapping (cf: 20060415);
+ + check length when converting from old AIX box_chars_1 capability,
+ overlooked in changes to eliminate strcpy (cf: 20001007).
+
+20191005
+ + modify the ncurse*-config and pc-files to more closely match for the
+ -I and -l options.
+
+20190928
+ + amend the ncurses*-config and pc-files to take into account the rpath
+ hack which differed between those files.
+ + improve -L option filtering in ncurses*-config
+ + improve recovery from error when reading command-character in
+ test/ncurses.c, showing the relevant error message and not exiting on
+ EINTR (cf: 20180922)
+
+20190921
+ + add a note in resizeterm manpage about top-level windows which touch
+ the screen's borders.
+ + modify configure-checks for gnat to identify each of the tools path
+ and version.
+
+20190914
+ + build-fixes for Ada95 configure-script and corresponding test package
+
+20190907
+ + add --with-ada-libname option and modify Ada95 configuration to
+ allow renaming the "AdaCurses" library (prompted by proposed changes
+ by Pascal Pignard).
+ + modify configure script to distinguish gcc from icc and clang when
+ the --enable-warnings option is not used, to avoid unnecessary
+ warnings about unrecognized inline options (report by Sven Joachim).
+
+20190831
+ + build-fixes for configuration using --program-suffix with Ada95,
+ noticed with MacOS but applicable to other platforms without
+ libpanelw, etc.
+
+20190824
+ + fix some cppcheck warnings, mostly style, in ncurses test-programs.
+
+20190817
+ + amend 20181208 changes for wbkgd() and wbkgrnd(), fixing a few
+ details where it still differed from SVr4.
+ + fix some cppcheck warnings, mostly style, in ncurses test-programs.
+
+20190810
+ + fix a few more coverity warnings.
+
+20190803
+ + improve loop limits in _nc_scroll_window() to handle a case where
+ the scrolled data is a pad which is taller than the window (patch
+ by Rob King).
+ + amend the change to screen, because tmux relies upon that entry
+ and does not support that feature (Debian #933572) -TD
+ + updated ms-terminal entry & notes -TD
+ + updated kitty entry & notes -TD
+ + updated alacritty+common entry & notes -TD
+ + use xterm+sl-twm for consistency -TD
+
+20190728
+ + fix a few more coverity warnings.
+ + more documentation updates based on tctest.
+
+20190727
+ + fix a few coverity warnings.
+ + documentation updates based on tctest.
+
+20190720
+ + fix a few warnings for gcc 4.x
+ + add some portability/historical details to the tic, toe and infocmp
+ manual pages.
+ + correct fix for broken link from terminfo(5) to tabs(1) manpage
+ (report by Sven Joachim).
+
+20190713
+ + change reset's behavior for margins to simply clear soft-margins if
+ possible, rather than clearing and then setting them according to the
+ terminal's width (suggested by Thomas Wolff).
+ + correct order of one wbkgd versus start_color call in test/padview.c
+
+20190706
+ + add domterm -TD
+ + improve comments for recent changes, add alias xterm.js -TD
+
+20190630
+ + add --with-tic-path and --with-infocmp-path to work around problems
+ building fallback source using pre-6.0 tic/infocmp.
+ + add a check in tic for paired indn/rin
+ + correct a buffer-limit in write_entry.c for systems that use caseless
+ filenames.
+ + add ms-terminal -TD
+ + add vscode, vscode-direct -TD
+
+20190623
+ + improve the tabs.1 manual page to distinguish the PWB/Unix and 7th
+ Edition versions of the tabs utility.
+ + add configure check for getenv() to work around implementation shown
+ in Emscripten #6766, use that to optionally suppress START_TRACE
+ macro, whose call to getenv() may not work properly (report by Ilya
+ Ig Petrov).
+ + modify initialization functions to avoid relying upon persistent
+ data for the result from getenv().
+ + update config.guess, config.sub
+
+20190615
+ + expand the portability section of the man/tabs.1 manual page.
+ + regenerate HTML manpages.
+
+20190609
+ + add mintty, mintty-direct (adapted from patch by Thomas Wolff).
+ Some of the suggested user-defined capabilities are commented-out,
+ to allow builds with ncurses 5.9 and 6.0
+ + add Smol/Rmol for tmux, vte-2018 (patch by Nicholas Marriott).
+ + add rs1 to konsole, mlterm -TD
+ + modify _nc_merge_entry() to make a copy of the data which it merges,
+ to avoid modifying the source-data when aligning extended names.
+
+20190601
+ + modify an internal call to vid_puts to pass extended color pairs
+ e.g., from tty_update.c and lib_mvcur.c (report by Niegodziwy Beru).
+ + improve manual page description of init_tabs capability and TABSIZE
+ variable.
+
+20190525
+ + modify reset_cmd.c to allow for tabstops at intervals other than 8
+ (report by Vincent Huisman).
+
+20190518
+ + update xterm-new to xterm patch #345 -TD
+ + add/use xterm+keypad in xterm-new (report by Alain D D Williams) -TD
+ + update terminator entry -TD
+ + remove hard-tabs from ti703 (report by Robert Clausecker)
+ + mention meml/memu/box1 in user_caps manual page.
+ + mention user_caps.5 in tic and infocmp manual pages.
+
+20190511
+ + fix a spurious blank line seen with "infocmp -1fx xterm+x11mouse"
+ + add checks in repair_subwindows() to keep the current position and
+ scroll-margins inside the resized subwindow.
+ + add a limit check in newline_forces_scroll() for the case where the
+ row is inside scroll-margins, but not at the end (report by Toshio
+ Kuratomi, cf: 20170729).
+ + corrected a warning message in tic for extended capabilities versus
+ number of parameters.
+
+20190504
+ + improve workaround for Solaris wcwidth versus line-drawing characters
+ (report by Pavel Stehule).
+ + add special case in tic to validate RGB string-capability extension.
+ + corrected string/parameter-field for RGB in Caps-ncurses.
+
+20190427
+ + corrected problem in terminfo load/realignment which prevented
+ infocmp from comparing extended capabilities with the same name
+ but different types.
+
+20190420
+ + improve ifdef's for TABSIZE variable, to help with AIX/HPUX ports.
+
+20190413
+ + check for TABSIZE variable in test/configure script.
+ + used test/test_arrays.c to improve Caps.aix1 and Caps.hpux11
+ + corrected filtering of comments in MKparametrized.sh
+ + reduce duplication across Caps* files by moving some parts which do
+ not depend on order into Caps-ncurses.
+
+20190406
+ + modify MKcaptab.sh, MKkey_defs.sh, and MKhashsize.sh to handle
+ split-up Caps-files.
+ + build-fixes if extended-functions are disabled.
+
+20190330
+ + add "screen5", to mention italics (report by Stefan Assmann)
+ + modify description of xterm+x11hilite to eliminate unused p5 -TD
+ + add configure script checks to help with a port to Ultrix 3.1
+ (report by Dennis Grevenstein).
+ + check if "b" binary feature of fopen works
+ + check for missing feature of locale.h
+ + add fallback for strstr() in test-programs
+ + add fallback for STDOUT_FILENO in test-programs
+ + update config.guess, config.sub
+
+20190323
+ + move macro for is_linetouched() inside NCURSES_NOMACROS ifndef.
+ + corrected prototypes in several manpages using script to extract
+ those in compilable form.
+ + use _nc_copy_termtype2() rather than direct assignment in setupterm,
+ in case it is called repeatedly using fallback terminfo descriptions
+ (report/patch by Werner Fink).
+
+20190317
+ + regenerate llib-* files.
+ + modify tic to also use new function for user-defined capability info.
+ + modify _nc_parse_entry() to check if a user-defined capability has
+ an unexpected type; ignore it in that case.
+ + fix a special case of link-anchors in generated Ada html files.
+ + use newer rel=author tag in generated html rather than rev=made,
+ which did not become accepted.
+
+20190309
+ + in-progress changes to add parameter-checking for common user-defined
+ capabilities in tic.
+ + update MKcodes.awk and MKnames.awk to ignore the new "userdef"
+ data in Caps-ncurses (cf: 20190302).
+
+20190302
+ + corrected some of the undocumented terminfo names in Caps.hpux11
+ + add "Caps-ncurses" file to help with checking inconsistencies in some
+ user-defined capabilities.
+ + amend check for repeat_char to handle a case where setlocale() was
+ called after initscr() (report by "Ampera").
+
+20190223
+ + fix typo in adds200 -TD
+ + add tic check for consistent alternate character set capabilities.
+ + improve check in mvcur() to decide whether to use hard-tabs, using
+ xt, tbc and hts as clues.
+ + replace check in reset command for obsolete "pt" capability using
+ tbc and hts capabilities as clues (report by Nicolas Marriott).
+
+20190216
+ + improve manual page description of TABSIZE.
+ + add test/demo_tabs program.
+
+20190209
+ + add check in tic to provide warnings for mismatched number of
+ parameters in the documented user-capability extensions.
+
+20190202
+ + modify rpm test-package ".spec" file to work around naming conflict
+ with Redhat's package for ncurses6.
+ + modify no-leaks code in test/picsmap to avoid non-standard tdestroy.
+ + amend change to configure script which altered the top-level makefile
+ to avoid attempting to install the terminfo database when it was not
+ configured, to allow for installing the ".pc" files which are also
+ in the misc directory (report by Steve Wills).
+
+20190126
+ + change some "%define" statements in test-packages for RPMs to
+ "%global" to work around changes in rpm 4.14 from recent Redhat.
+ + fixes for O_INPUT_FIELD extension (patch by Leon Winter).
+ + eliminate fixed buffer-size when reading $TERMCAP variable.
+ + correct logic in read_entry.c which prevented $TERMCAP variable from
+ being interpreted as a fallback to terminfo entry (prompted by
+ Savannah #54556, cf: 20110924).
+
+20190121
+ + add a check in test/configure to work around non-ncurses termcap.h
+ file in Slackware.
+ + corrected flag for "seq" method of db 1.8.5 interface, needed by toe
+ on some of the BSDs.
+ + updated "string-hacks" feature.
+ + minor improvements to manpage typography.
+ + corrected conditionally-compiled limit on color pairs (report by
+ "Hudd").
+ + add -x option to test/pair_content, test/color_content for testing
+ init_extended_pair, extended_pair_content, init_extended_color,
+ extended_color_content
+ + add -p option to test/pair_content, test/color_content to show the
+ return values from the tested functions.
+ + improve manual page curs_color.3x discussion of error returns and
+ extensions.
+ + add O_INPUT_FIELD extension to form library (patch by Leon Winter).
+ + override/suppress --enable-db-install if --disable-database configure
+ option was given.
+ + change a too-large terminal entry in tic from a fatal error to a
+ warning (prompted by discussion with Gabriele Balducci).
+
+20190112
+ + fix typo in term(5), improve explanation of format (report by Otto
+ Modinos).
+ + add nsterm-direct -TD
+ + use SGR 1006 mouse for konsole-base -TD
+ + use SGR 1006 mouse for putty -TD
+ + add ti703/ti707, ti703-w/ti707-w (Robert Clausecker)
+
+20190105
+ + add dummy "check" rule in top-level and test-Makefile to simply
+ building test-packages for Arch.
+ + modify configure script to avoid conflict with a non-POSIX feature
+ that enables all parts of the system headers by default. Some
+ packagers have come to rely upon this behavior (FreeBSD #234049).
+ + update config.guess, config.sub
+
+20181229
+ + improve man/curs_mouse.3x with regard to xterm
+ + modify tracemunch to accept filename parameters in addition to use
+ as a pipe/filter.
+ + minor optimization to reduce calls to _nc_reserve_pairs (prompted by
+ discussion with Bryan Christ).
+ + add test/pair_content.c and test/color_content.c
+ + modify infocmp to omit filtering of "OTxx" names which are used for
+ obsolete capabilities, when the output is sorted by long-names.
+ Doing this helps when making a table of the short/long capability
+ names.
+
+20181215
+ + several fixes for gcc8 strict compiler warnings.
+ + fix a typo in comments (Aaron Gyes).
+ + add nsterm-build309 to replace nsterm-256color, assigning the latter
+ as an alias of nsterm, to make mouse work with nsterm-256color -TD
+ + base gnome-256color entry on "gnome", not "vte", for consistency -TD
+ + updates for configure macros from work on tin and xterm:
+ + CF_GNU_SOURCE, allow for Cygwin's newlib when checking for the
+ _DEFAULT_SOURCE symbol.
+ + CF_VA_COPY, add fallback check if neither va_copy/__va_copy is
+ supported, to try copying the pointers for va_list, or as an array.
+ Also add another fallback check, for __builtin_va_copy(), which
+ could be used with AIX xlc in c89 mode.
+
+20181208
+ + modify wbkgd() and wbkgrnd() to improve compatibility with SVr4
+ curses, changing the way the window rendition is updated when the
+ background character is modified (report by Valery Ushakov).
+
+20181201
+ + add midnightbsd to CF_XOPEN_SOURCE macro (patch by Urs Jansen).
+ + add "@" command to test/ncurses F-test, to allow rapid jump to
+ different character pages.
+ + update config.guess, config.sub from
+ http://git.savannah.gnu.org/cgit/config.git
+
+20181125
+ + build-fix (reports by Chih-Hsuan Yen, Sven Joachim).
+
+20181124
+ + check --with-fallbacks option to ensure there is a value, and add
+ the fallback information to top-level Makefile summary.
+ + add some traces in initialization to show whether a fallback entry is
+ used.
+ + build-fix for test/movewindow with ncurses-examples on Solaris.
+ + add "-l" option to test/background, to dump screen contents in a form
+ that lets different curses implementations be compared.
+ + modify the initialization checks for mouse so that the xterm+sm+1006
+ block will work with terminal descriptions not mentioning xterm
+ (report by Tomas Janousek).
+
+20181117
+ + ignore the hex/b64 $TERMINFO in toe's listing.
+ + correct a status-check in _nc_read_tic_entry() so that if reading
+ a hex/b64 $TERMINFO, and the $TERM does not match, fall-through to
+ the compiled-in search list.
+
+20181110
+ + several workarounds to ensure proper C compiler used in parts of
+ Ada95 tree.
+ + update config.guess, config.sub from
+ http://git.savannah.gnu.org/cgit/config.git
+
+20181027
+ + add OpenGL clients alacritty and kitty -TD
+ + add Smulx for tmux, vte-2018 -Nicholas Marriott
+
+20181020
+ + ignore $TERMINFO as a default value in configure script if it came
+ from the infocmp -Q option.
+ + allow value for --with-versioned-syms to be a relative pathname
+ + add a couple of broken-linker symbols to the list of versioned
+ symbols to help with link-time optimization versus weak symbols.
+ + apply shift/control/alt logic when decoding xterm's 1006 mode to
+ wheel-mouse events (Redhat #1610681).
+
+20181013
+ + amend change from 20180818, which undid a fix for the $INSTALL value
+ to make it an absolute path.
+
+20181006
+ + improve a configure check to work with newer optimizers (report by
+ Denis Pronin, Gentoo #606142).
+ + fix typo in tput.c (Sven Joachim, cf: 20180825).
+
+20180929
+ + fix typo in tvi955 -TD
+ + corrected acsc for regent60 -TD
+ + add alias n7900 -TD
+ + corrected acsc for tvi950 -TD
+ + remove bogus kf0 from tvi950 -TD
+ + added function-key definitions to agree with Televideo 950 manual -TD
+ + add bel to tvi950 -TD
+ + add shifted function-keys to regent60 -TD
+ + renumber regent40 function-keys to match manual -TD
+ + add cd (clr_eos) to adds200 -TD
+
+20180923
+ + build-fix: remove a _tracef call which was used for debugging (report
+ by Chris Clayton).
+
+20180922
+ + ignore interrupted system-call in test/ncurses's command-line, e.g.,
+ if the terminal were resized.
+ + add shift/control/alt logic for decoding xterm's 1006 mode (Redhat
+ #1610681, cf: 20141011).
+ + modify rpm test-packages to not use --disable-relink with Redhat,
+ since Fedora 28's tools do not work with that feature.
+
+20180908
+ + document --with-pcre2 configure option in INSTALL.
+ + improve workaround for special case in PutAttrChar() where a cell is
+ marked as alternate-character set, to handle a case where the
+ character in the cell does not correspond to any of the ASCII
+ fallbacks (report by Leon Winter, cf: 20180505).
+ + amend change to form library which attempted to avoid unnecessary
+ update of cursor position in non-public fields, to simply disable
+ output in this case (patch by Leon Winter, cf: 20180414).
+ + improve check for LINE_MAX runtime limit, to accommodate broken
+ implementations of sysconf().
+
+20180901
+ + improve manual page for wgetnstr, giving background for the length
+ parameter.
+ + define a limit for wgetnstr, wgetn_wstr when length is negative or
+ "too large".
+ + update configure script to autoconf 2.52.20180819 (Debian #887390).
+
+20180825
+ + add a section to tput manual page clarifying how it determines the
+ terminal size (prompted by discussion with Grant Jenks).
+ + add "--disable-relink" to rpm test-packages, for consistency with the
+ deb test-packages.
+ + split spec-file into ncurses6.spec and ncursest6.spec to work around
+ toolset breakage in Fedora 28.
+ + drop mention of "--disable-touching", which was not in the final
+ 20180818 updates.
+
+20180818
+ + build-fix for PDCurses with ncurses-examples.
+ + improved CF_CC_ENV_FLAGS.
+ + modify configure scripts to reduce relinking/ranlib during library
+ install (Debian #903790):
+ + use "install -p" when available, to avoid need for ranlib of
+ static libraries.
+ + modify scripts which use "--disable-relink" to add a 1-second
+ sleep to work around tools which use whole-second timestamps, e.g.,
+ in utime() rather than the actual file system resolution.
+
+20180804
+ + improve logic for clear with E3 extension, in case the terminal
+ scrolls content onto its saved-lines before actually clearing
+ the display, by clearing the saved-lines after clearing the
+ display (report/patch by Nicholas Marriott).
+
+20180728
+ + improve documentation regarding feature-test macros in curses.h
+ + improve documentation regarding the virtual and physical screens.
+ + formatting fixes for manpages, regenerate man-html documentation.
+
+20180721
+ + build-fixes for gcc8.
+ + corrected acsc for wy50 -TD
+ + add wy50 and wy60 shifted function-keys as kF1 to kF16 -TD
+ + remove ansi+rep mis-added to interix in 2018-02-23 -TD
+
+20180714
+ + add enum, regex examples to test/demo_forms
+ + add configure check for pcre-posix library to help with MinGW port.
+
+20180707
+ + build-fixes for gcc8.
+ + correct order of WINDOW._ttytype versus WINDOW._windowlist in
+ report_offsets.
+ + fix a case where tiparm could return null if the format-string was
+ empty (Debian #902630).
+
+20180630
+ + add acsc string to vi200 (Nibby Nebbulous)
+ add right/down-arrow to vi200's acsc -TD
+ + add "x" to tput's getopt string so that "tput -x clear" works
+ (Nicholas Marriott).
+ + minor fixes prompted by anonymous report on stack overflow:
+ + correct order of checks in _nc_get_locale(), for systems lacking
+ locale support.
+ + add "#error" in a few places to flag unsupported configurations
+
+20180623
+ + use _WIN32/_WIN64 in preference to __MINGW32__/__MINGW64__ symbols
+ to simplify building with MSVC, since the former are defined in both
+ compiler configurations (report by Ali Abdulkadir).
+ + further improvements to configure-checks from work on dialog, i.e.,
+ updated CF_ADD_INCDIR, CF_FIND_LINKAGE, CF_GCC_WARNINGS,
+ CF_GNU_SOURCE, CF_LARGEFILE, CF_POSIX_C_SOURCE, CF_SIZECHANGE, and
+ CF_TRY_XOPEN_SOURCE.
+ + update config.guess, config.sub from
+ http://git.savannah.gnu.org/cgit/config.git
+
+20180616
+ + build-fix for ncurses-examples related to gcc8-fixes (cf: 20180526).
+ + reduce use of _GNU_SOURCE for current glibc where _DEFAULT_SOURCE
+ combines with _XOPEN_SOURCE (Debian #900987).
+ + change target configure level for _XOPEN_SOURCE to 600 to address
+ use of vsscanf and setenv.
+ + improved configure-checks CF_SIZECHANGE and CF_STRUCT_TERMIOS from
+ work on dialog.
+
+20180609
+ + modify generated ncurses*config and ncurses.pc, ncursesw.pc, etc.,
+ to list helper libraries such as gpm for static linking (Debian
+ #900839).
+ + marked vwprintw and vwscanw as deprecated; recommend using vw_printw
+ and vw_scanw, respectively.
+
+20180602
+ + add RPM test-package "ncursest-examples".
+ + modified RPM test-package to work with Mageia6.
+
+20180526
+ + add note in curs_util.3x about unctrl.h
+ + review/improve header files to ensure that those include necessary
+ files except for the previously-documented cases (report by Isaac
+ Pascual Monells).
+ + improved test-package scripts, adapted from byacc 1.9 20180525.
+ + fix some gcc8 warnings seen in Redhat package build, but
+ work around bug in gcc8 compiler warnings in comp_parse.c
+
+20180519
+ + formatting fixes for manpages, regenerate man-html documentation.
+ + trim spurious whitespace from tmux in 2018-02-24 changes;
+ fix some inconsistencies in/between tmux- and iterm2-entries for SGR
+ (report by C Anthony Risinger)
+ + improve iterm2 using some xterm features which it has adapted -TD
+ + add check in pair_content() to handle the case where caller asks
+ for an uninitialized pair (Debian #898658).
+
+20180512
+ + remove trailing ';' from GCC_DEPRECATED definition.
+ + repair a change from 20110730 which left an error-check/warning dead.
+ + fix several minor Coverity warnings.
+
+20180505
+ + add deprecation warnings for internal functions called by older
+ versions of tack.
+ + fix a special case in PutAttrChar() where a cell is marked as
+ alternate-character set, but the terminal does not actually support
+ the given graphic character. This would happen in an older terminal
+ such as vt52, which lacks most line-drawing capability.
+ + use configure --with-config-suffix option to work around filename
+ conflict with Debian packages versus test-packages.
+ + update tracemunch to work with perl 5.26.2, which changed the rules
+ for escaping regular expressions.
+
+20180428
+ + document new form-extension O_EDGE_INSERT_STAY (report by Leon
+ Winter).
+ + correct error-returns listed in manual pages for a few form functions
+ (report by Leon Winter).
+ + add a check in form-library for null-pointer dereference:
+ unfocus_current_field (form);
+ form_driver (form, REQ_VALIDATION);
+ (patch by Leon Winter).
+
+20180414
+ + modify form library to optionally delay cursor movement on a field
+ edge/boundary (patch by Leon Winter).
+ + modify form library to avoid unnecessary update of cursor position in
+ non-public fields (patch by Leon Winter).
+ + remove unused _nc_import_termtype2() function.
+ + also add/improve null-pointer checks in other places
+ + add a null-pointer check in _nc_parse_entry to handle an error when
+ a use-name is invalid syntax (report by Chung-Yi Lin).
+
+20180407
+ + clarify in manual pages that vwprintw and vwscanw are obsolete,
+ not part of X/Open Curses since 2007.
+ + use "const" in some prototypes rather than NCURSES_CONST where X/Open
+ Curses was updated to do this, e.g., wscanw, newterm, the terminfo
+ interface. Also use "const" for consistency in the termcap
+ interface, which was withdrawn by X/Open Curses in Issue 5 (2007).
+ As of Issue 7, X/Open Curses still lacks "const" for certain return
+ values, e.g., keyname().
+
+20180331
+ + improve terminfo write/read by modifying the fourth item of the
+ extended header to denote the number of valid strings in the extended
+ string table (prompted by a comment in unibilium's sources).
+
+20180324
+ + amend Scaled256() macro in test/picsmap.c to cover the full range
+ 0..1000 (report by Roger Pau Monne).
+ + add some checks in tracemunch for undefined variables.
+ + trim some redundant capabilities from st-0.7 -TD
+ + trim unnecessary setf/setb from interix -TD
+
+20180317
+ + fix a check in infotocap which may not have detected a problem when
+ it should have.
+ + add a check in tic for the case where setf/setb are given using
+ different strings, but provide identical results to setaf/setab.
+ + further improve fix for terminfo.5 (patch by Kir Kolyshkin).
+ + reorder loop-limit checks in winsnstr() in case the string has no
+ terminating null and only the number of characters is used (patch
+ by Gyorgy Jeney).
+
+20180303
+ + modify TurnOn/TurnOff macros in lib_vidattr.c and lib_vid_attr.c to
+ avoid expansion of "CUR" in trace.
+ + improve a few lintian warnings in test-packages.
+ + modify lib_setup to avoid calling pthread_self() without first
+ verifying that the address is valid, i.e., for weak symbols
+ (report/patch by Werner Fink).
+ + modify generated terminfo.5 to not use "expand" and related width
+ on the last column of tables, making layout on wide terminals look
+ better (adapted from patch by Kir Kolyshkin).
+ + add a category to report_offsets, e.g., "w" for wide-character, "t"
+ for threads to make the report more readable. Reorganized the
+ structures reported to make the categories more apparent.
+ + simplify some ifdef's for extended-colors.
+ + add NCURSES_GLOBALS and NCURSES_PRESCREEN to report_offsets, to show
+ how similar the different tinfo configurations are.
+
+20180224
+ + modify _nc_resolve_uses2() to detect incompatible types when merging
+ a "use=" clause of extended capabilities. The problem was seen in a
+ defective terminfo integrated from simpleterm sources in 20171111,
+ compounded by repair in 20180121.
+ + correct Ss/Ms interchange in st-0.7 entry (tmux #1264) -TD
+ + fix remaining flash capabilities with trailing mandatory delays -TD
+ + correct cut/paste in NEWS (report by Sven Joachim).
+
+20180217
+ + remove incorrect free() from 20170617 changes (report by David Macek).
+ + correct type for "U8" in user_caps.5; it is a number not boolean.
+ + add a null-pointer check in safe_sprintf.c (report by Steven Noonan).
+ + improve fix for Debian #882620 by reusing limit2 variable (report by
+ Julien Cristau, Sven Joachim).
+
+20180210
+ + modify misc/Makefile.in to install/uninstall explicit list in case
+ the build-directory happens to have no ".pc" files when an uninstall
+ is performed (report by Jeffrey Walton).
+ + deprecate safe-sprintf, since the vsnprintf function, which does what
+ was needed, was standardized long ago.
+ + add several development/experimental options to development packages.
+ + minor reordering of options in configure script to make the threaded
+ and reentrant options distinct from the other extensions which are
+ normally enabled.
+
+20180203
+ + minor fixes to test/*.h to make them idempotent.
+ + add/use test/parse_rgb.h to show how the "RGB" capability works.
+ + add a clarification in user_caps.5 regarding "RGB" capability.
+ + add extended_slk_color{,_sp} symbols to the appropriate
+ package/*.{map,sym} files (report by Sven Joachim, cf: 20170401).
+
+20180129
+ + update "VERSION" file, used in shared-library naming.
+
+20180127 6.1 release for upload to ftp.gnu.org
+
+20180127
+ + updated release notes
+ + amend a warning message from tic which should have flagged misuse
+ of "XT" capability in "screen" terminal description.
+ > terminfo changes:
+ + trim "XT" from screen entry, add comments to explain why it was
+ not suitable -TD
+ + modify iterm to use xterm+sl-twm building block -TD
+ + mark konsole-420pc, konsole-vt100, konsole-xf3x obsolete reflecting
+ konsole's removal in 2008 -TD
+ + expanded the history section of konsole to explain its flawed
+ imitation of xterm's keyboard -TD
+ + use xterm+x11mouse in screen.* entries because screen does not yet
+ support xterm's 1006 mode -TD
+ + add nsterm-build400 for macOS 10.13 -TD
+ + add ansi+idc1, use that in ansi+idc adding dch for consistency -TD
+ + update vte to vte-2017 -TD
+ + add ecma+strikeout to vte-2017 -TD
+ + add iterm2-direct -TD
+ + updated teraterm, added teraterm-256color -TD
+ + add mlterm-direct -TD
+ + add descriptions for ANSI building-blocks -TD
+
+20180121 pre-release
+ > terminfo changes:
+ + add xterm+noalt, xterm+titlestack, xterm+alt1049, xterm+alt+title
+ blocks from xterm #331 -TD
+ + add xterm+direct, xterm+indirect, xterm-direct entries from xterm
+ #331 -TD
+ + modify xterm+256color and xterm+256setaf to use correct number of
+ color pairs, for ncurses 6.1 -TD
+ + add rs1 capability to xterm-256color -TD
+ + modify xterm-r5, xterm-r6 and xterm-xf86-v32 to use xterm+kbs to
+ match xterm #272, reflecting packager's changes -TD
+ + remove "boolean" Se, Ss from st-0.7 -TD
+ + add konsole-direct and st-direct -TD
+ + remove unsupported "Tc" capability from st-0.7; use st-direct if
+ direct-colors are wanted -TD
+ + add vte-direct -TD
+ + add XT, hpa, indn, and vpa to screen, and invis, E3 to tmux (patch by
+ Pierre Carru)
+ + use xterm+sm+1006 in xterm-new, vte-2014 -TD
+ + use xterm+x11mouse in iterm, iterm2, mlterm3 because xterm's 1006
+ mode does not work with those programs. konsole is debatable -TD
+ + add "termite" entry (report by Markus Pfeiffer) -TD
+ > merge branch begun April 2, 2017 which provides these features:
+ + support read/write new binary-format for terminfo which stores
+ numeric capabilities as a signed 32-bit integer. The test programs
+ such as picsmap, ncurses were created or updated during 2017 to use
+ this feature.
+ + the new format is written by the wide-character configuration of
+ tic when it finds a numeric capability larger than 32767.
+ + other applications such as infocmp built with the wide-character
+ ncurses library work as expected.
+ + applications built with the "narrow" (8-bit) configuration will
+ read the new format, but will limit those extended values to 32767.
+ + in either wide/narrow configuration, the structure defined in
+ term.h still uses signed 16-bit values.
+ + because it is incompatible with the legacy (mid-1980s) binary format,
+ a new magic value is provided for the "file" program.
+ + the term.5 manual page is updated to describe this new format.
+ + the limit on file-size for compiled terminfo is increased in the
+ wide-character configuration to 32768.
+
+20180120
+ + build-fix in picsmap.c for stdint.h existence.
+ + add --disable-stripping option to configure scripts.
+ + modify ncurses-examples to install test-scripts in the data directory.
+ + work around tool-breakage in Debian 9 and later by invoking
+ gprconfig to specify the C compiler to be used by gnatmake,
+ and conditionally suppressing Library_Options line for static
+ libraries.
+ + bump the compat level for test-packages to 7, i.e., Debian 5.
+
+20180106
+ + fixes for writing extended color pairs in putwin.
+ + modify test/savescreen.c to add test patterns that exercise 88-,
+ 256-, etc., colors.
+ + modify configure option --with-build-cc, adding clang, c89 and c99
+ as possible default values.
+ + modify ncurses-examples configure script to use pkg-config for the
+ extra form/menu/panel libraries, to be more consistent with the
+ handling of the curses/ncurses library.
+ + modify test-packages for mingw to supply "pc" files.
+ + modify gen-pkgconfig.in to list -lpthread as a private library when
+ configured to access it via weak symbols.
+ + simplify gen-pkgconfig.in, adding -ltinfo without the special linker
+ checks because some versions of the linker simply hard-code the
+ behavior.
+ + update URLs for ncurses website to use https.
+ + modify CF_CURSES_LIBS to fill in $cf_nculib_root in case the
+ ncurses-examples are built with a system ncurses that lacks the
+ standard "curses" symbolic link, as done by SuSE. The symbol is
+ needed to make a followup check for the pthread library work, and
+ would be set properly using the options "--with-screen", etc.
+ + generate misc/*.pc with "all" rule, as done for "sources" rule
+ (report by Jeffrey Walton).
+
+20171230
+ + build-fix for ncurses-examples with Fedora27, adding check for
+ reset_color_pairs() -- not yet in Fedora's package.
+ + consistently add $CFLAGS to $MK_SHARED_LIB symbol in configure
+ script when the latter happens to use the C compiler rather than
+ directly using the loader (report by Jeffrey Walton).
+ + set ABI for upcoming 6.1 release in "*.map" files. While there are
+ some remaining internals to apply, no ABI-related changes are
+ anticipated.
+ + add configure --with-config-suffix option to work around filename
+ conflict with Redhat packages versus test-packages.
+
+20171223
+ + modify ncurses-examples to quiet const-warnings when building with
+ PDCurses.
+ + modify toe to not exit if unable to read a terminal description,
+ e.g., if there is a permission problem.
+ + minor fix for progs/toe.c, using _nc_free_termtype2.
+ + assign 0 to pointer in _nc_tgetent_leak() after freeing it. Also
+ avoid reusing pointer from previous successful call to tgetent
+ if the latest call is unsuccessful (patch by Michael Schroeder,
+ OpenSuSE #1070450).
+ + minor fix for test/tracemunch, initialize $awaiting variable.
+
+20171216
+ + repair template in test/package/ncurses-examples.spec (cf: 20171111).
+ + improve tic's warning about the number of parameters tparm might use
+ for u1-u9 by making a special case for u6.
+ + improve curs_attr.3x discussion of color pairs.
+
+20171209
+ + modify misc/ncurses-config.in to make output with --includedir
+ consistent with --cflags, i.e., when --disable-overwrite option was
+ configured the output should show the subdirectory where headers
+ are.
+ + modify MKlib_gen.sh to suppress macros when calling an "implemented"
+ function in link_test.c
+ + updated ftp-url used in test-packages, etc.
+ + modify order of -pie/-shared options in configure script in case
+ LDFLAGS uses "-pie", working around a defect or limitation in the GNU
+ linker (prompted by patch by Yogesh Prasad, forwarded by Jay Shah).
+ + add entry in man_db.renames for user_caps.5
+
+20171125
+ + modify MKlib_gen.sh to avoid tracing result from getstr/getnstr
+ before initialized.
+ + add "-a" aspect-ratio option to picsmap.
+ + add configure check for default path of rgb.txt, used in picsmap.
+ + modify _nc_write_entry() to truncate too-long filename (report by
+ Hosein Askari, Debian #882620).
+ + build-fix for ncurses-examples with NetBSD curses:
+ + it lacks the use_env() function.
+ + it lacks libpanel; a recent change used the wrong ifdef symbol.
+ + add a macro for is_linetouched() and adjust the function's return
+ value to make it possible for most applications to check for an
+ error-return (report by Midolikawa H).
+ + additional manpage cleanup.
+ + update config.guess, config.sub from
+ http://git.savannah.gnu.org/cgit/config.git
+
+20171118
+ + add a note to curs_addch.3x on portability.
+ + add a note to curs_pad.3x on the origin and portability of pads.
+ + improve manpage description of getattrs (report by Midolikawa H).
+ + improve manpage macros (prompted by discussion in Debian #880551.
+ + reviewed test-programs using KEY_RESIZE, made fixes to test/worm.c
+ + add a "-d" option to picsmap for default-colors.
+ + modify old terminology entry and a few other terminal emulators to
+ account for xon -TD
+ + correct sgr string for tmux, which used screen's "standout" code
+ rather than the standard code (patch by Roman Kagan)
+ + correct sgr/sgr0 strings in a few other cases reported by tic, making
+ those correspond to the non-sgr settings where they differ, but
+ otherwise use ECMA-48 consistently:
+ jaixterm, aixterm, att5420_2, att4424, att500, decansi, d410-7b,
+ dm80, hpterm, emu-220, hp2, iTerm2.app, mterm-ansi, ncrvt100an,
+ st-0.7, vi603, vwmterm -TD
+ + build-fix for diagnostics warning in lib_mouse.c for pre-5.0 versions
+ of gcc which did not recognize the diagnostic "push" pragma (patch by
+ Vassili Courzakis).
+
+20171111
+ + add "op" to xterm+256setaf -TD
+ + reviewed terminology 1.0.0 -TD
+ + reviewed st 0.7 -TD
+ + suppress debug-package for ncurses-examples rpm build.
+
+20171104
+ + check for interrupt in color-pair initialization of dots_curses.c,
+ dots_xcurses.c
+ + add z/Z zoom feature to test/ncurses.c C/c screens.
+ + add '<' and '>' commands to test/ncurses.c S/s screens, to better
+ test off-by-ones in the overlap/copywin functions.
+
+20171028
+ + improve man/curs_inwstr.3x, correct end-logic for lib_inwstr.c
+ (report by Midolikawa H).
+ + fix typo in a few places for "improvements" (patch by Sven Joachim).
+ + clear the other half of a double-width character on which a line
+ drawing character is drawn.
+ + make test/ncurses.c "s" test easier to understand which subtests are
+ available; add a "S" wide-character overlap test-screen.
+ + modify test/ncurses.c C/c tests to allow for extended color pairs.
+ + add endwin() call in error-returns from test/ncurses.c omitted in
+ recent redesign of its menu (cf: 20170923).
+ + improve install of hashed-db by removing the ".db" file as done for
+ directory-tree terminal databases.
+ + repair a few overlooked items in include/ncurses_defs from recent
+ port/refactoring of test-programs (cf: 20170909).
+ + add test/padview.c, to compare pads with direct updates in view.c
+
+20171021
+ + modify test/view.c to expand tabs using the ncurses library rather
+ than in the test-program.
+ + remove very old SIGWINCH example in test/view.c, just use KEY_RESIZE.
+ + add -T, -e, -f -m options to "dots" test-programs.
+ + fix a few typos in usage-messages for test-programs.
+
+20171014
+ + minor cleanup to test/view.c:
+ + eliminate "-n" option by simply reading the whole file.
+ + implement page up/down commands.
+ + add check in tput for init/reset operands to ensure those use a
+ terminal.
+ + improve manual pages which discuss chtype, cchar_t types and the
+ attribute values which can be stored in those types.
+ + correct array-index when parsing "-T" command-line option in tabs
+ program.
+ + modify demo_new_pair.c to pass extended pairs to setcchar().
+ + add test/dots_xcurses.c to illustrate a different approach used for
+ extended colors which can be contrasted with dots_curses.c.
+ + add a check in tic to note when a description uses non-mandatory
+ delays without xon_xoff. This is not an error, but some descriptions
+ for a terminal emulator may use the combination incorrectly.
+
+20171007
+ + modify "-T" option of clear and tput to call use_tioctl() to obtain
+ the operating system's notion of the screensize if possible.
+ + review/repair some exit-codes for tput, making usage-message exit
+ with 2 rather than 1, and a failure to open terminal 4+errno.
+ + amend check in tput, tabs and clear to allow those to use the
+ database-only features in cron if a -T option gives a suitable
+ terminal name (report by Lauri Tirkkonen).
+ + correct an ifdef in test/ncurses.c for systems with soft-keys but
+ not slk_color().
+ + regenerate man-html documentation.
+
+20170930
+ + fix a symbol conflict that made ncurses.c C/c menu not work with
+ Solaris xpg4 curses.
+ + add refresh() call to dots_mvcur.c, needed to use mvcur() with
+ Solaris xpg4 curses after calling newterm().
+ + minor fixes for configure script from work on ncurses-examples and
+ tin.
+ + improve animation in test/xmas.c by adding a time-delay in blinkit().
+ + modify several test programs to reflect that ncurses honors existing
+ signal handlers in initscr(), while other implementations do not.
+ + modify bs.c to make it easier to quit.
+ + change ncurses-examples to use attr_t vs chtype to follow X/Open
+ documentation more closely since Solaris xpg4-curses uses different
+ values for WA_xxx vs A_xxx that rely on attr_t being an unsigned
+ short. Tru64 aka OSF1, HPUX, AIX did as ncurses does, equating the
+ two sets.
+
+20170923
+ + modify menu for test/ncurses.c to fit on 24-line screen.
+ + build-fix for configure --with-caps=uwin
+ + add options to test_arrays.c, for selecting termcap vs terminfo, etc.
+
+20170916
+ + minor fix to test/filter.c to avoid clearing the command in one case.
+ + modify filter() to discard clr_eos if back_color_erase is set.
+
+20170909
+ + improve wide-character implementation of myADDNSTR() in frm_driver.c,
+ which was inconsistent with the normal implementation.
+ + save/restore cursor position in Undo_Justification(), matching
+ behavior of Buffer_To_Window() (report by Leon Winter).
+ + modify test/knight to provide the "slow" solution for small screens
+ using "R", noting that Warnsdorf's method is easily done with "a".
+ + modify several test-programs which call use_default_colors() to
+ consistently do this only if "-d" option is given.
+ + additional changes to test with non-standard variants of curses:
+ + modify a loop limit in firework.c to work around absence of limit
+ checks in some libraries.
+ + fill the last row of a window with "?" in firstlast if waddch does
+ not return ERR on the lower-right corner.
+ + add checks in test/configure for some functions not in 4.3BSD curses.
+ + fix a regression in test/configure (cf: 20170826).
+
+20170902
+ + amend change for endwin-state for better consistency with the older
+ logic (report/patch by Jeb Rosen, cf: 20170722).
+ + modify check in fmt_entry() to handle a cancelled reset string
+ (Debian #873746). Make similar fixes in other parts of dump_entry.c
+ and tput.c
+
+20170827
+ + fix a bug in repeat_char logic (cf: 20170729, report by Chris Clayton).
+
+20170826
+ + fixes for "iterm2" (report by Leonardo Brondani Schenkel) -TD
+ + corrected a warning from tic about keys which are the same, to skip
+ over missing/cancelled values.
+ + add check in tic for unnecessary use of "2" to denote a shifted
+ special key.
+ + improve checks in trim_sgr0, comp_parse.c and parse_entry.c, for
+ cancelled string capabilities.
+ + add check in _nc_parse_entry() for invalid entry name, setting the
+ name to "invalid" to avoid problems storing entries.
+ + add/improve checks in tic's parser to address invalid input
+ + add a check in comp_scan.c to handle the special case where a
+ nontext file ending with a NUL rather than newline is given to tic
+ as input (Redhat #1484274).
+ + allow for cancelled capabilities in _nc_save_str (Redhat #1484276).
+ + add validity checks for "use=" target in _nc_parse_entry (Redhat
+ #1484284).
+ + check for invalid strings in postprocess_termcap (Redhat #1484285)
+ + reset secondary pointers on EOF in next_char() (Redhat #1484287).
+ + guard _nc_safe_strcpy() and _nc_safe_strcat() against calls using
+ cancelled strings (Redhat #1484291).
+ + correct typo in curs_memleaks.3x (Sven Joachim).
+ + improve test/configure checks for some curses variants not based on
+ X/Open Curses.
+ + add options for test/configure to disable checks for form, menu and
+ panel libraries.
+
+20170819
+ + update "iterm" entry -TD
+ + add "iterm2" entry (report by Leonardo Brondani Schenkel) -TD
+ + regenerate llib-* files.
+ + regenerate HTML manpages.
+ + improve picsmap test-program:
+ + reduce memory used for tsearch
+ + add report in log file showing cumulative color coverage.
+ + add -x option to clear/tput to make the E3 extension optional
+ (cf: 20130622).
+ + add options -T and -V to clear command for compatibility with tput.
+ + add usage message to clear command (Debian #371855).
+ + improve usage messages for tset and tput.
+ + minor fixes to "RGB" extension and reset_color_pairs().
+
+20170812
+ + improve description of -R option in infocmp manual page (report by
+ Stephane Chazelas).
+ + add reset_color_pairs() function.
+ + add user_caps.5 manual page to document the terminfo extensions used
+ by ncurses.
+ + improve build scripts, using SIGQUIT vs SIGTRAP; add other configure
+ script fixes from work on xterm, lynx and tack.
+ + modify install-rule for ncurses-examples to put the data files in
+ /usr/share/ncurses-examples
+ + improve tracemunch, by changing address-parameters of add_wch(),
+ color_content() and pair_content() to dummy parameters.
+ + minor optimization to _nc_change_pair, to return quickly when the
+ current screen is marked for clearing.
+ + in-progress changes to improve performance of test/picsmap.c for
+ loading image files.
+ + modify allocation for SCREEN's color-pair table to start small, grow
+ on demand up to the existing limit.
+ + add "RGB" extension capability for direct-color support, use this to
+ improve color_content().
+ + improve picsmap test-program:
+ + if no palette file is needed, attempt to load one based on $TERM,
+ checking first in the current directory, then by adding ".dat"
+ suffix, and finally in the data-directory, e.g.,
+ /usr/share/ncurses-examples
+ + add "-l" option for logging
+ + add "-d" option for debugging
+ + add "-s" option for stepping automatically through list of images,
+ with time delay.
+ + use tsearch to improve time for loading color table for images.
+ + update config.guess, config.sub from
+ http://git.savannah.gnu.org/cgit/config.git
+
+20170729
+ + update interix entry using tack and SFU on Windows 7 Ultimate -TD
+ + use ^? for kdch1 in interix (reported by Jonathan de Boyne Pollard)
+ + add "rep" to xterm-new, available since 1997/01/26 -TD
+ + move SGR 24 and 27 from vte-2014 to vte-2012 (request by Alain
+ Williams) -TD
+ + add a check in newline_forces_scroll() in case a program moves the
+ cursor outside scrolling margins (report by Robert King).
+ + improve _nc_tparm_analyze, using that to extend the checks made by
+ tic for reporting inconsistencies between the expected number of
+ parameters for a capability and the actual.
+ + amend handling of repeat_char capability in EmitRange (adapted from
+ report/patch by Dick Wesseling):
+ + translate the character to the alternate character set when the
+ alternate character set is enabled.
+ + do not use repeat_char for characters past 255.
+ + document "_nc_free_tinfo" in manual page, because it could be used in
+ tack for memory-leak checking.
+ + add "--without-tack" configure option to refine "--with-progs"
+ configure option. Normally tack is no longer built in-tree, but
+ a few packagers combine it during the build. If term_entry.h is
+ installed, there is no advantage to in-tree builds.
+ + adjust configure-script to define HAVE_CURSES_DATA_BOOLNAMES symbol
+ needed for tack 1.08 when built in-tree. Rather than relying upon
+ internal "_nc_" functions, tack now uses the boolean, number and
+ string capability name-arrays provided by ncurses and SVr4 Unix
+ curses. It still uses term_entry.h for the definitions of the
+ extended capability arrays.
+ + add an overlooked null-pointer check in mvcur changes from 20170722
+
+20170722
+ + improve test-packages for ncurses-examples and AdaCurses for lintian
+ + modify logic for endwin-state to be able to detect the case where
+ the screen was never initialized, using that to trigger a flush of
+ ncurses' buffer for mvcur, e.g., in test/dots_mvcur.c for the
+ term-driver configuration.
+ + add dependency upon ncurses_cfg.h to a few other internal header
+ files to allow each to be compiled separately.
+ + add dependency upon ncurses_cfg.h to tic's header-files; any program
+ using tic-library will have to supply this file. Legacy tack
+ versions supply this file; ongoing tack development has dropped the
+ dependency upon tic-library and new releases will not be affected.
+
+20170715
+ + modify command-line parameters for "convert" used in picsmap to work
+ with ImageMagick 6.8 and newer.
+ + fix build-problem with tack and ABI-5 (Debian #868328).
+ + repair termcap-format from tic/infocmp broken in 20170701 fixes
+ (Debian #868266).
+ + reformat terminfo.src with 20170513 updates.
+ + improve test-packages to address lintian warnings.
+
+20170708
+ + add a note to tic manual page about -W versus -f options.
+ + correct a limit-check in fixes from 20170701 (report by Sven Joachim).
+
+20170701
+ + modify update_getenv() in db_iterator.c to ensure that environment
+ variables which are not initially set will be checked later if an
+ application happens to set them (patch by Guillaume Maudoux).
+ + remove initialization-check for calling napms() in the term-driver
+ configuration; none is needed.
+ + add help-screen to test/test_getstr.c and test/test_get_wstr.c
+ + improve compatibility between different configurations of new_prescr,
+ fixing a case with threaded code and term-driver where c++/demo did
+ not work (cf: 20160213).
+ + the fixes for Redhat #1464685 obscured a problem subsequently
+ reported in Redhat #1464687; the given test-case was no longer
+ reproducible. Testing without the fixes for the earlier reports
+ showed a problem with buffer overflow in dump_entry.c, which is
+ addressed by reducing the use of a fixed-size buffer.
+ + add/improve checks in tic's parser to address invalid input
+ (Redhat #1464684, #1464685, #1464686, #1464691).
+ + alloc_entry.c, add a check for a null-pointer.
+ + parse_entry.c, add several checks for valid pointers as well as
+ one check to ensure that a single character on a line is not
+ treated as the 2-character termcap short-name.
+ + fix a memory leak in delscreen() (report by Bai Junq).
+ + improve tracemunch, showing thread identifiers as names.
+ + fix a use-after-free in NCursesMenu::~NCursesMenu()
+ + further amend incorrect calls for memory-leaks from 20170617 changes
+ (report by Allen Hewes).
+
+20170624
+ + modify c++/etip.h.in to accommodate deprecation of throw() and
+ throws() in c++17 (prompted by patch by Romain Geissler).
+ + remove some incorrect calls for memory-leaks from 20170617 changes
+ (report by Allen Hewes).
+ + add test-programs for termattrs and term_attrs.
+ + modify _nc_outc_wrapper to use the standard output if the screen was
+ not initialized, rather than returning an error.
+ + improve checks for low-level terminfo functions when the terminal
+ has not been initialized (Redhat #1345963).
+ + modify make_hash to allow building with address-sanitizer,
+ assuming that --disable-leaks is configured.
+ + amend changes for number_format() in 20170506 to avoid undefined
+ behavior when shifting (patch by Emanuele Giaquinta).
+
+20170617
+ + fill in some places where TERMTYPE2 vs TERMTYPE was not used
+ (report by Allen Hewes).
+ + use ExitTerminfo() internally in error-exits for ncurses' setupterm
+ to help with leak checking.
+ + use ExitProgram() in error-exit from initscr() to help with leak
+ checking.
+ + review test-programs, adding checks for cases where the terminal
+ cannot be initialized.
+
+20170610
+ + add option "-xp" to picsmap.c, to use init_extended_pair().
+ + make simple performance fixes for picsmap.c
+ + improve aspect ratio of images read from "convert" in picsmap.c
+
+20170603
+ + add option to picsmap to use color-palette files, e.g., for mapping
+ to xterm-256color.
+ + move the data in SCREEN used for the alloc_pair() function to the
+ end, to restore compatibility between ncurses/ncursesw libtinfo
+ (report/patch by Miroslav Lichvar).
+ + add build-time utility "report_offsets" to help show when the various
+ configurations of tinfo library are compatible or not.
+
+20170527
+ + improved test/picsmap.c:
+ + lookup named colors for xpm files in rgb.txt
+ + accept blanks in color-keys for xpm files.
+ + if neither xbm/xpm work, try "convert", which may be available.
+
+20170520
+ + modify test/picsmap.c to read xpm files.
+ + modify package/debian/* to create documentation packages, so the
+ related files can be checked with lintian.
+ + fix some typos in manpages (report/patch by Sven Joachim).
+
+20170513
+ + add test/picsmap.c to fill in some testing issues not met by dots.
+ The initial version reads X bitmap (".xbm") files.
+ + repair logic which forces a repaint where a color-pair's content is
+ changed (cf: 20170311).
+ + improve tracemunch, showing screenXX pointers as names.
+
+20170506
+ + modify tic/infocmp display of numeric values to use hexadecimal when
+ they are "close" to a power of two, making the result more readable.
+ + improve discussion of portability in curs_mouse.3x
+ + change line-length for generated html/manpages to 78 columns from 65.
+ + improve discussion of line-drawing characters in curs_add_wch.3x
+ (prompted by discussion with Lorinczy Zsigmond).
+ + cleanup formatting of hackguide.html and ncurses-intro.html
+ + add examples for WACS_D_PLUS and WACS_T_PLUS to test/ncurses.c
+
+20170429
+ + corrected a case where $with_gpm was set to "maybe" after CF_WITH_GPM,
+ overlooked in 20160528 fixes (report by Alexandre Bury).
+ + improve a couple of test-program's help-messages.
+ + corrected loop in rain.c from 20170415 changes.
+ + modify winnstr and winchnstr to return error if the output pointer is
+ null, as well as adding a null pointer check of the window pointer
+ for better compatibility with other implementations.
+ + improve discussion of NetBSD curses in scr_dump.5
+ + modify LIMIT_TYPED macro in new_pair.h to avoid changing sign of the
+ value to be limited (reports by Darby Payne, Rob Boudreau).
+ + update config.guess, config.sub from
+ http://git.savannah.gnu.org/cgit/config.git
+
+20170422
+ + build-fix for termcap-configuration (report by Chi-Hsuan Yen).
+ + improve terminfo manual page discussion of control- and graphics-
+ characters.
+ + remove tic warning about "^?" in string capabilities, which was
+ marked as an extension (cf: 20000610, 20110820); however all Unix
+ implementations support this and X/Open Curses does not address it.
+ On the other hand, termcap never did support this feature.
+ + correct missing comma-separator between string capabilities in
+ icl6402 and m2-nam -TD
+ + restore rmir/smir in ansi+idc to better match original ansiterm+idc,
+ add alias ansiterm (report by Robert King).
+ + amend an old check for ambiguous use of "ma" in terminfo versus
+ a termcap use, if the capability is cancelled to treat it as number.
+ + correct a case in _nc_captoinfo() which read "%%" and emitted "%".
+ + modify sscanf calls in _nc_infotocap() for patterns "%{number}%+%c"
+ and "%'char'%+%c" to check that the final character is really 'c',
+ avoiding a case in icl6404 which cannot be converted to termcap.
+ + in _nc_infotocap(), add a check to ensure that terminfo "^?" is not
+ written to termcap, because the BSDs did not implement that.
+ + in _nc_tic_expand() and _nc_infotocap(), improve string-length check
+ when deciding whether to use "^X" or "\xxx" format for control
+ characters, to make the output of tic/infocmp more predictable.
+ + limit termcap "%d" width to 2 digits on input, and use "%2" in
+ preference to "%02" on output.
+ + correct terminfo/termcap conversion of "%02" and "%03" into "%2" and
+ "%3"; the result repeated the last character.
+ + add man/scr_dump.5 to document screen-dump format.
+
+20170415
+ + modify several test programs to use new popup_msgs, adapted from
+ help-screen used in test/edit_field.c
+ + drop two symbols obsoleted in 2004: _nc_check_termtype, and
+ _nc_resolve_uses
+ + fix some old copyright dates (cf: 20031025).
+ + build-fixes for test/savescreen.c to work with AIX and HPUX.
+ + minor fix to configure script, adding a backslash/continuation.
+ + extend TERMINAL structure for ABI 6 to store numbers internally as
+ integers rather than short, by adding new data for this purpose.
+ + more fixes for minor memory-leaks in test-programs.
+
+20170408
+ + change logic in wins_nwstr() to avoid addressing data past the output
+ of mbstowcs().
+ + correct a call to setcchar() in Data_Entry_w() from 20131207 changes.
+ + fix minor memory-leaks in test-programs.
+ + further improve ifdef in term_entry.h for internal definitions not
+ used by tack.
+
+20170401
+ + minor fixes for vt100+4bsd, e.g., delay in sgr for consistency -TD
+ + add smso for env230, to match sgr -TD
+ + remove p7/protect from sgr in fbterm -TD
+ + drop setf/setb from fbterm; setaf/setab are enough -TD
+ + make xterm-pcolor sgr consistent with other capabilities -TD
+ + add rmxx/smxx ECMA-48 strikeout extension to tmux and xterm-basic
+ (discussion with Nicholas Marriott)
+ + add test-programs sp_tinfo and extended_color
+ + modify no-leaks code for lib_cur_term.c to account for the tgetent()
+ cache.
+ + modify setupterm() to save original tty-modes so that erasechar()
+ works as expected. Also modify _nc_setupscreen() to avoid redundant
+ calls to get original tty-modes.
+ + modify set_curterm() to update ttytype[] data used by longname().
+ + modify wattr_set() and wattr_get() to return ERR if win-parameter is
+ null, as documented.
+ + improve cast used for null-pointer checks in header macros, to
+ reduce compiler warnings.
+ + modify several functions, using the reserved "opts" parameter to pass
+ color- and pair-values larger than 16-bits:
+ + getcchar(), setcchar(), slk_attr_set(), vid_puts(), wattr_get(),
+ wattr_set(), wchgat(), wcolor_set().
+ + Other functions call these with the corresponding altered behavior,
+ including chgat(), mvchgat(), mvwchgat(), slk_color_on(),
+ slk_color_off(), vid_attr().
+ + add new functions for manipulating color- and pair-values larger
+ than 16-bits. These are extended_color_content(),
+ extended_pair_content(), extended_slk_color(), init_extended_color(),
+ init_extended_pair(), and the corresponding sp-funcs.
+
+20170325
+ + fix a memory leak in the window-list when creating multiple screens
+ (reports by Andres Martinelli, Debian #783486).
+ + reviewed calls from link_test.c, added a few more null-pointer
+ checks.
+ + add a null-pointer check in ungetmouse, in case mousemask was not
+ called (report by "Kau").
+ + updated curs_sp_funcs.3x for new functions.
+
+20170318
+ + change TERMINAL structure in term.h to make it opaque. Some
+ applications misuse its members, e.g., directly modifying it
+ rather than using def_prog_mode().
+ + modify utility headers such as tic.h to make it clearer which are
+ externals that are used by tack.
+ + improve curs_slk.3x in particular its discussion of portability.
+ + fix cut/paste in legacy_encoding.3x
+ + add prototype for find_pair() to new_pair.3x (report by Branden
+ Robinson).
+ + fix a couple of broken links in generated man-html documentation.
+ + regenerate man-html documentation.
+
+20170311
+ + modify vt100 rs2 string to reset vt52 mode and scrolling regions
+ (report/analysis by Robert King) -TD
+ + add vt100+4bsd building block, use that for older terminals rather
+ than "vt100" which is now mostly used as a building block for
+ terminal emulators -TD
+ + correct a few spelling errors in terminfo.src comments -TD
+ + add fbterm -TD
+ + fix a typo in ncurses.c test_attr legend (patch by Petr Vanek).
+ + changed internal colorpair_t to a struct, eliminating an internal
+ 8-bit limit on colors
+ + add ncurses/new_pair.h
+ + add ncurses/base/new_pair.c with alloc_pair(), find_pair() and
+ free_pair() functions
+ + add test/demo_new_pair.c
+
+20170304
+ + improve terminfo manual description of terminfo syntax.
+ + clarify the use of wint_t vs wchar_t in curs_get_wstr.3x
+ + improve description of endwin() in manual.
+ + modify setcchar() and getcchar() to treat negative color-pair as an
+ error.
+ + fix a typo in include/hashed_db.h (Andre Sa).
+
+20170225
+ + fixes for CF_CC_ENV_FLAGS (report by Ross Burton).
+
+20170218
+ + fix several formatting issues with manual pages.
+ + correct read of terminfo entry in which all strings are absent or
+ explicitly cancelled. Before this fix, the result was that all were
+ treated as only absent.
+ + modify infocmp to suppress mixture of absent/cancelled capabilities
+ that would only show as "NULL, NULL", unless the -q option is used,
+ e.g., to show "-, @" or "@, -".
+
+20170212
+ + build-fixes for PGI compilers (report by Adam J. Stewart)
+ + accept whitespace in sed expression for generating expanded.c
+ + modify configure check that g++ compiler warnings are not used.
+ + add configure check for -fPIC option needed for shared libraries.
+ + let configure --disable-ext-funcs override the default for the
+ --enable-sp-funcs option.
+ + mark some structs in form/menu/panel libraries as potentially opaque
+ without modifying API/ABI.
+ + add configure option --enable-opaque-curses for ncurses library and
+ similar options for the other libraries.
+
+20170204
+ + trim newlines, tabs and escaped newlines from terminfo "paths" passed
+ to db-iterator.
+ + ignore zero-length files in db-iterator; these are useful for
+ instance to suppress "$HOME/.terminfo" when not wanted.
+ + amended "b64:" encoder to work with the terminfo reader.
+ + modify terminfo reader to accept "b64:" format using RFC-3548 in
+ as well as RFC-4648 url/filename-safe format.
+ + modify terminfo reader to accept "hex:" format as generated by
+ "infocmp -0qQ1" (cf: 20150905).
+ + adjust authors comment to reflect drop below 1% for SV.
+
+20170128
+ + minor comment-fixes to help automate links to bug-urls -TD
+ + add dvtm, dvtm-256color -TD
+ + add settings corresponding to xterm-keys option to tmux entry to
+ reflect upcoming change to make that option "on" by default
+ (patch by Nicholas Marriott).
+ + uncancel Ms in tmux entry (Harry Gindi, Nicholas Marriott).
+ + add dumb-emacs-ansi -TD
+
+20170121
+ + improve discussion of early history of tput program.
+ + incorporate A_COLOR mask into COLOR_PAIR(), in case user application
+ provides an out-of-range pair number (report by Elijah Stone).
+ + clarify description in tput manual page regarding support for
+ termcap names (prompted by FreeBSD #214709).
+ + remove a restriction in tput's support for termcap names which
+ omitted capabilities normally not shown in termcap translations
+ (cf: 990123).
+ + modify configure script for clang as used on FreeBSD, to work around
+ clang's differences in exit codes vs gcc.
+
+20170114
+ + improve discussion of early history of tset/reset programs.
+ + clarify in manual pages that the optional verbose option level is
+ available only when ncurses is configured for tracing.
+ + amend change from 20161231 to avoid writing traces to the standard
+ error after initializing the trace feature using the environment
+ variable.
+
+20170107
+ + amend changes for tput to reset tty modes to "sane" if the program
+ is run as "reset", like tset. Likewise, ensure that tset sends
+ either reset- or init-strings.
+ + improve manual page descriptions of tput init/reset and tset/reset,
+ to make it easier to see how they are similar and different.
+ + move a static result from key_name() to _nc_globals
+ + modify _nc_get_screensize to allow for use_env() and use_tioctl()
+ state to be per-screen when sp-funcs are configured, better matching
+ the behavior when using the term-driver configuration.
+ + improve cross-references in manual pages for often used functions
+ + move SCREEN field for use_tioctl() data before the ncursesw fields,
+ and limit that to the sp-funcs configuration to improve termlib
+ compatibility (cf: 20120714).
+ + correct order of initialization for traces in use_env() and
+ use_tioctl() versus first trace calls.
+
+20161231
+ + fix errata for ncurses-howto (report by Damien Ruscoe).
+ + fix a few places in configure/build scripts where DESTDIR and rpath
+ were combined (report by Thomas Klausner).
+ + merge current st description (report by Harry Gindi) -TD
+ + modify flash capability for linux and wyse entries to put the delay
+ between the reverse/normal escapes rather than after -TD
+ + modify program tabs to pass the actual tty file descriptor to
+ setupterm rather than the standard output, making padding work
+ consistently.
+ + explain in clear's manual page that it writes to stdout.
+ + add special case for verbose debugging traces of command-line
+ utilities which write to stderr (cf: 20161126).
+ + remove a trace with literal escapes from skip_DECSCNM(), added in
+ 20161203.
+ + update config.guess, config.sub from
+ http://git.savannah.gnu.org/cgit/config.git
+
+20161224
+ + correct parameters for copywin call in _nc_Synchronize_Attributes()
+ (patch by Leon Winter).
+ + improve color-handling section in terminfo manual page (prompted by
+ patch by Mihail Konev).
+ + modify programs clear, tput and tset to pass the actual tty file
+ descriptor to setupterm rather than the standard output, making
+ padding work.
+
+20161217
+ + add tput-colorcube demo script.
+ + add -r and -s options to tput-initc demo, to match usage in xterm.
+ + flush the standard output in _nc_flush for the case where SP is zero,
+ e.g., when called via putp. This fixes a scenario where "tput flash"
+ did not work after changes in 20130112.
+
+20161210
+ + add configure script option --disable-wattr-macros for use in cases
+ where one wants to use the same headers for ncurses5/ncurses6
+ development, by suppressing the wattr* macros which differ due to
+ the introduction of extended colors (prompted by comments in
+ Debian #230990, Redhat #1270534).
+ + add test/tput-initc to demonstrate tput used to initialize palette
+ from a data file.
+ + modify test/xterm*.dat to use the newer color4/color12 values.
+
+20161203
+ + improve discussion of field validation in form_driver.3x manual page.
+ + update curs_trace.3x manual page.
+
+20161126
+ + modify linux-16color to not mask dim, standout or reverse with the
+ ncv capability -TD
+ + add 0.1sec mandatory delay to flash capabilities using the VT100
+ reverse-video control -TD
+ + omit selection of ISO-8859-1 for G0 in enacs capability from linux2.6
+ entry, to avoid conflict with the user-defined mapping. The reset
+ feature will use ISO-8859-1 in any case (Mikulas Patocka).
+ + improve check in tic for delays by also warning about beep/flash
+ when a delay is not embedded, or if those use the VT100 reverse
+ video escape without using a delay.
+ + minor fix for syntax-check of delays from 20161119 changes.
+ + modify trace() to avoid overwriting existing file (report by Maor
+ Shwartz).
+
+20161119
+ + add check in tic for some syntax errors of delays, as well as use of
+ proportional delays for non-line capabilities.
+ + document history of the clear program and the E3 extension, prompted
+ by various discussions including
+ http://unix.stackexchange.com/questions/87469/clearing-the-old-scrollback-buffer
+
+20161112
+ + improve -W option in tic/infocmp:
+ + correct order of size-adjustments in wrapped lines
+ + if -f option splits line, do not further split it with -W
+ + begin a new line when adding "use=" after a wrapped line
+
+20161105
+ + fix typo in man/terminfo.tail (Alain Williams).
+ + correct program-name in adacurses6-config.1 manual page.
+
+20161029
+ + add new function "unfocus_current_field" (Leon Winter)
+
+20161022
+ + modify tset -w (and tput reset) to update the program's copy of the
+ screensize if it was already set in the system, to improve tabstop
+ setting which relies upon knowing the actual screensize.
+ + add functionality of tset -w to tput, like the "-c" feature this is
+ not optional in tput.
+ + add "clear" as a possible link/alias to tput.
+ + improve tput's check for being called as "init" or "reset" to allow
+ for transformed names.
+ + split-out the "clear" function from progs/clear.c, share with
+ tput to get the same behavior, e.g., the E3 extension.
+
+20161015
+ + amend internal use of tputs to consistently use the number of lines
+ affected, e.g., for insert/delete character operations. While
+ merging terminfo source early in 1995, several descriptions used the
+ "*" proportional delay for these operations, prompting a change in
+ doupdate.
+ + regenerate llib-* files.
+ + regenerate HTML manpages.
+ + fix several formatting issues with manual pages.
+
+20161008
+ + adjust size in infocmp/tic to work with strlcpy.
+ + fix configure script to record when strlcat is found on OpenBSD.
+ + build-fix for "recent" OpenBSD vs baudrate.
+
+20161001
+ + add -W option to tic/infocmp to force long strings to wrap. This is
+ in addition to the -w option which attempts to fit capabilities into
+ a given line-length.
+ + add linux-m1 minitel entries (patch by Alexandre Montaron).
+ + correct rs2 string for vt100-nam -TD
+
+20160924
+ + modify _nc_tic_expand to escape comma if it immediately follows a
+ percent sign, to work with minitel change.
+ + updated minitel and viewdata descriptions (Alexandre Montaron).
+
+20160917
+ + build-fix for gnat6, which unhelpfully attempts to compile C files.
+ + fix typo in 20160910 changes (Debian #837892, patch by Sven Joachim).
+
+20160910
+ + trim dead code ifdef'd with HIDE_EINTR since 970830 (discussion with
+ Leon Winter).
+ + trim some obsolete/incorrect wording about EINTR from wgetch manual
+ page (patch by Leon Winter).
+ + really correct 20100515 change (patch by Rich Coe).
+ + add "--enable-string-hacks" option to test/configure
+ + completed string-hacks for "sprintf", etc., including test-programs.
+ + make "--enable-string-hacks" work with Debian by checking for the
+ "bsd" library and its associated "<bsd/string.h>" header.
+
+20160903
+ + correct 20100515 change for weak signals versus sigprocmask (report
+ by Rich Coe).
+ + modify misc/Makefile.in to work around OpenBSD "make" which unlike
+ all other versions of "make" does not recognize continuation lines
+ of comments.
+ + amend the last change to CF_C_ENV_FLAGS to move only the
+ preprocessor, optimization and warning flags to CPPFLAGS and CFLAGS,
+ leaving the residue in CC. That happens to work for gcc's various
+ "model" options, but may require tuning for other compilers (report
+ by Sven Joachim).
+
+20160827
+ + add "v" menu entry to test/ncurses.c to show baudrate and other
+ values.
+ + add "newer" baudrate symbols from Linux and FreeBSD to progs/tset.c,
+ lib_baudrate.c
+ + modify CF_XOPEN_SOURCE macro:
+ + add "uclinux" to case for "linux" (patch by Yann E. Morin)
+ + modify _GNU_SOURCE for cygwin headers, tested with cygwin 2.3, 2.5
+ (patch by Corinna Vinschen, from changes to tin).
+ + improve CF_CC_ENV_FLAGS macro to allow for compiler wrappers such
+ as "ccache" (report by Enrico Scholz).
+ + update config.guess, config.sub from
+ http://git.savannah.gnu.org/cgit/config.git
+
+20160820
+ + update tput manual page to reflect changes to manipulate terminal
+ modes by sharing functions with tset.
+ + add the terminal-mode parts of "reset" (aka tset) to the "tput reset"
+ command, making the two almost the same except for window-size.
+ + adapt logic used in dialog "--keep-tite" option for test/filter.c as
+ "-a" option. When set, test/filter attempts to suppress the
+ alternate screen.
+ + correct a typo in interix entry -TD
+
+20160813
+ + add a dependency upon generated-sources in Ada95/src/Makefile.in to
+ handle a case of "configure && make install".
+ + trim trailing blanks from include/Caps*, to work around a problem
+ in sed (Debian #818067).
+
+20160806
+ + improve CF_GNU_SOURCE configure macro to optionally define
+ _DEFAULT_SOURCE work around a nuisance in recent glibc releases.
+ + move the terminfo-specific parts of tput's "reset" function into
+ the shared reset_cmd.c, making the two forms of reset use the same
+ strings.
+ + split-out the terminal initialization functions from tset as
+ progs/reset_cmd.c, as part of changes to merge the reset-feature
+ with tput.
+
+20160730
+ + change tset's initialization to allow it to get settings from the
+ standard input as well as /dev/tty, to be more effective when
+ output or error are redirected.
+ + improve discussion of history and portability for tset/reset/tput
+ manual pages.
+
+20160723
+ + improve error message from tset/reset when both stderr/stdout are
+ redirected to a file or pipe.
+ + improve organization of curs_attr.3x, curs_color.3x
+
+20160709
+ + work around Debian's antique/unmaintained version of mawk when
+ building link_test.
+ + improve test/list_keys.c, showing ncurses's convention of modifiers
+ for special keys, based on xterm.
+
+20160702
+ + improve test/list_keys.c, using $TERM if no parameters are given.
+
+20160625
+ + build-fixes for ncurses "test_progs" rule.
+ + amend change to CF_CC_ENV_FLAGS in 20160521 to make multilib build
+ work (report by Sven Joachim).
+
+20160618
+ + build-fixes for ncurses-examples with NetBSD curses.
+ + improve test/list_keys.c, fixing column-widths and sorting the list
+ to make it more readable.
+
+20160611
+ + revise fix for Debian #805618 (report by Vlado Potisk, cf: 20151128).
+ + modify test/ncurses.c a/A screens to make exiting on an escape
+ character depend on the start of keypad and timeout modes, to allow
+ better testing of function-keys.
+ + modify rs1 for xterm-16color, xterm-88color and xterm-256color to
+ reset palette using "oc" string as in linux -TD
+ + use ANSI reply for u8 in xterm-new, to reflect vt220-style responses
+ that could be returned -TD
+ + added a few capabilities fixed in recent vte -TD
+
+20160604
+ + correct logic for -f option in test/demo_terminfo.c
+ + add test/list_keys.c
+
+20160528
+ + further workaround for PIE/PIC breakage which causes gpm to not link.
+ + fix most cppcheck warnings, mostly style, in ncurses library.
+
+20160521
+ + improved manual page description of tset/reset versus window-size.
+ + fixes to work with a slightly broken compiler configuration which
+ cannot compile "Hello World!" without adding compiler options
+ (report by Ola x Nilsson):
+ + pass appropriate compiler options to the CF_PROG_CC_C_O macro.
+ + when separating compiler and options in CF_CC_ENV_FLAGS, ensure
+ that all options are split-off into CFLAGS or CPPFLAGS
+ + restore some -I options removed in 20140726 because they appeared
+ to be redundant. In fact, they are needed for a compiler that
+ cannot combine -c and -o options.
+
+20160514
+ + regenerate HTML manpages.
+ + improve manual pages for wgetch and wget_wch to point out that they
+ might return values without names in curses.h (Debian #822426).
+ + make linux3.0 entry the default linux entry (Debian #823658) -TD
+ + modify linux2.6 entry to improve line-drawing so that the linux3.0
+ entry can be used in non-UTF-8 mode -TD
+ + document return value of use_extended_names (report by Mike Gran).
+
+20160507
+ + amend change to _nc_do_color to restore the early return for the
+ special case used in _nc_screen_wrap (report by Dick Streefland,
+ cf: 20151017).
+ + modify test/ncurses.c:
+ + check return-value of putwin
+ + correct ifdef which made the 'g' test's legend not reflect changes
+ to keypad- and scroll-modes.
+ + correct return-value of extended putwin (report by Mike Gran).
+
+20160423
+ + modify test/ncurses.c 'd' edit-color menu to optionally read xterm
+ color palette directly from terminal, as well as handling KEY_RESIZE
+ and screen-repainting with control/L and control/R.
+ + add 'oc' capability to xterm+256color, allowing palette reset for
+ xterm -TD
+
+20160416
+ + add workaround in configure script for inept transition to PIE vs
+ PIC builds documented in
+ https://fedoraproject.org/wiki/Changes/Harden_All_Packages
+ + add "reset" to list of programs whose names might change in manpages
+ due to program-transformation configure options.
+ + drop long-obsolete "-n" option from tset.
+
+20160409
+ + modify test/blue.c to use Unicode values for card-glyphs when
+ available, as well as improving the check for CP437 and CP850.
+
+20160402
+ + regenerate HTML manpages.
+ + improve manual pages for utilities with respect to POSIX versus
+ X/Open Curses.
+
+20160326
+ + regenerate HTML manpages.
+ + improve test/demo_menus.c, allowing mouse-click on the menu-headers
+ to switch the active menu. This requires a new extension option
+ O_MOUSE_MENU to tell the menu driver to put mouse events which do not
+ apply to the active menu back into the queue so that the application
+ can handle the event.
+
+20160319
+ + improve description of tgoto parameters (report by Steffen Nurpmeso).
+ + amend workaround for Solaris line-drawing to restore a special case
+ that maps Unicode line-drawing characters into the acsc string for
+ non-Unicode locales (Debian #816888).
+
+20160312
+ + modified test/filter.c to illustrate an alternative to getnstr, that
+ polls for input while updating a clock on the right margin as well
+ as responding to window size-changes.
+
+20160305
+ + omit a redefinition of "inline" when traces are enabled, since this
+ does not work with gcc 5.3.x MinGW cross-compiling (cf: 20150912).
+
+20160220
+ + modify test/configure script to check for pthread dependency of
+ ncursest or ncursestw library when building ncurses examples, e.g.,
+ in case weak symbols are used.
+ + modify configure macro for shared-library rules to use -Wl,-rpath
+ rather than -rpath to work around a bug in scons (FreeBSD #178732,
+ cf: 20061021).
+ + double-width multibyte characters were not counted properly in
+ winsnstr and wins_nwstr (report/example by Eric Pruitt).
+ + update config.guess, config.sub from
+ http://git.savannah.gnu.org/cgit/config.git
+
+20160213
+ + amend fix for _nc_ripoffline from 20091031 to make test/ditto.c work
+ in threaded configuration.
+ + move _nc_tracebits, _tracedump and _tracemouse to curses.priv.h,
+ since they are not part of the suggested ABI6.
+
+20160206
+ + define WIN32_LEAN_AND_MEAN for MinGW port, making builds faster.
+ + modify test/ditto.c to allow $XTERM_PROG environment variable to
+ override "xterm" as the name of the program to run in the threaded
+ configuration.
+
+20160130
+ + improve formatting of man/curs_refresh.3x and man/tset.1 manpages
+ + regenerate HTML manpages using newer man2html to eliminate some
+ unwanted blank lines.
+
+20160123
+ + ifdef'd header-file definition of mouse_trafo() with NCURSES_NOMACROS
+ (report by Corey Minyard).
+ + fix some strict compiler-warnings in traces.
+
+20160116
+ + tidy up comments about hardcoded 256color palette (report by
+ Leonardo Brondani Schenkel) -TD
+ + add putty-noapp entry, and amend putty entry to use application mode
+ for better consistency with xterm (report by Leonardo Brondani
+ Schenkel) -TD
+ + modify _nc_viscbuf2() and _tracecchar_t2() to trace wide-characters
+ as a whole rather than their multibyte equivalents.
+ + minor fix in wadd_wchnstr() to ensure that each cell has nonzero
+ width.
+ + move PUTC_INIT calls next to wcrtomb calls, to avoid carry-over of
+ error status when processing Unicode values which are not mapped.
+
+20160102
+ + modify ncurses c/C color test-screens to take advantage of wide
+ screens, reducing the number of lines used for 88- and 256-colors.
+ + minor refinement to check versus ncv to ignore two parameters of
+ SGR 38 and 48 when those come from color-capabilities.
+
+20151226
+ + add check in tic for use of bold, etc., video attributes in the
+ color capabilities, accounting whether the feature is listed in ncv.
+ + add check in tic for conflict between ritm, rmso, rmul versus sgr0.
+
+20151219
+ + add a paragraph to curs_getch.3x discussing key naming (discussion
+ with James Crippen).
+ + amend workaround for Solaris vs line-drawing to take the configure
+ check into account.
+ + add a configure check for wcwidth() versus the ncurses line-drawing
+ characters, to use in special-casing systems such as Solaris.
+
+20151212
+ + improve CF_XOPEN_CURSES macro used in test/configure, to define as
+ needed NCURSES_WIDECHAR for platforms where _XOPEN_SOURCE_EXTENDED
+ does not work. Also modified the test program to ensure that if
+ building with ncurses, that the cchar_t type is checked, since that
+ normally is since 20111030 ifdef'd depending on this test.
+ + improve 20121222 workaround for broken acs, letting Solaris "work"
+ in spite of its misconfigured wcwidth which marks all of the line
+ drawing characters as double-width.
+
+20151205
+ + update form_cursor.3x, form_post.3x, menu_attributes.3x to list
+ function names in NAME section (patch by Jason McIntyre).
+ + minor fixes to manpage NAME/SYNOPSIS sections to consistently use
+ rule that either all functions which are prototyped in SYNOPSIS are
+ listed in the NAME section, or the manual-page name is the sole item
+ listed in the NAME section. The latter is used to reduce clutter,
+ e.g., for the top-level library manual pages as well as for certain
+ feature-pages such as SP-funcs and threading (prompted by patches by
+ Jason McIntyre).
+
+20151128
+ + add option to preserve leading whitespace in form fields (patch by
+ Leon Winter).
+ + add missing assignment in lib_getch.c to make notimeout() work
+ (Debian #805618).
+ + add 't' toggle for notimeout() function in test/ncurses.c a/A screens
+ + add viewdata terminal description (Alexandre Montaron).
+ + fix a case in tic/infocmp for formatting capabilities where a
+ backslash at the end of a string was mishandled.
+ + fix some typos in curs_inopts.3x (Benno Schulenberg).
+
+20151121
+ + fix some inconsistencies in the pccon* entries -TD
+ + add bold to pccon+sgr+acs and pccon-base (Tati Chevron).
+ + add keys f12-f124 to pccon+keys (Tati Chevron).
+ + add test/test_sgr.c program to exercise all combinations of sgr.
+
+20151107
+ + modify tset's assignment to TERM in its output to reflect the name by
+ which the terminal description is found, rather than the primary
+ name. That was an unnecessary part from the initial conversion of
+ tset from termcap to terminfo. The termcap program in 4.3BSD did
+ this to avoid using the short 2-character name (report by Rich
+ Burridge).
+ + minor fix to configure script to ensure that rules for resulting.map
+ are only generated when needed (cf: 20151101).
+ + modify configure script to handle the case where tic-library is
+ renamed, but the --with-debug option is used by itself without
+ normal or shared libraries (prompted by comment in Debian #803482).
+
+20151101
+ + amend change for pkg-config which allows build of pc-files when no
+ valid pkg-config library directory was configured to suppress the
+ actual install if it is not overridden to a valid directory at
+ install time (cf: 20150822).
+ + modify editing script which generates resulting.map to work with the
+ clang configuration on recent FreeBSD, which gives an error on an
+ empty "local" section.
+ + fix a spurious "(Part)" message in test/ncurses.c b/B tests due
+ to incorrect attribute-masking.
+
+20151024
+ + modify MKexpanded.sh to update the expansion of a temporary filename
+ to "expanded.c", for use in trace statements.
+ + modify layout of b/B tests in test/ncurses.c to allow for additional
+ annotation on the right margin; some terminals with partial support
+ did not display well.
+ + fix typo in curs_attr.3x (patch by Sven Joachim).
+ + fix typo in INSTALL (patch by Tomas Cech).
+ + improve configure check for setting WILDCARD_SYMS variable; on ppc64
+ the variable is in the Data section rather than Text (patch by Michel
+ Normand, Novell #946048).
+ + using configure option "--without-fallbacks" incorrectly caused
+ FALLBACK_LIST to be set to "no" (patch by Tomas Cech).
+ + updated minitel entries to fix kel problem with emacs, and add
+ minitel1b-nb (Alexandre Montaron).
+ + reviewed/updated nsterm entry Terminal.app in OSX -TD
+ + replace some dead URLs in comments with equivalents from the
+ Internet Archive -TD
+ + update config.guess, config.sub from
+ http://git.savannah.gnu.org/cgit/config.git
+
+20151017
+ + modify ncurses/Makefile.in to sort keys.list in POSIX locale
+ (Debian #801864, patch by Esa Peuha).
+ + remove an early-return from _nc_do_color, which can interfere with
+ data needed by bkgd when ncurses is configured with extended colors
+ (patch by Denis Tikhomirov).
+ > fixes for OS/2 (patches by KO Myung-Hun)
+ + use button instead of kbuf[0] in EMX-specific part of lib_mouse.c
+ + support building with libtool on OS/2
+ + use stdc++ on OS/2 kLIBC
+ + clear cf_XOPEN_SOURCE on OS/2
+
+20151010
+ + add configure check for openpty to test/configure script, for ditto.
+ + minor fixes to test/view.c in investigating Debian #790847.
+ + update autoconf patch to 2.52.20150926, incorporates a fix for Cdk.
+ + add workaround for breakage of POSIX makefiles by recent binutils
+ change.
+ + improve check for working poll() by using posix_openpt() as a
+ fallback in case there is no valid terminal on the standard input
+ (prompted by discussion on bug-ncurses mailing list, Debian #676461).
+
+20150926
+ + change makefile rule for removing resulting.map to distclean rather
+ than clean.
+ + add /lib/terminfo to terminfo-dirs in ".deb" test-package.
+ + add note on portability of resizeterm and wresize to manual pages.
+
+20150919
+ + clarify in resizeterm.3x how KEY_RESIZE is pushed onto the input
+ stream.
+ + clarify in curs_getch.3x that the keypad mode affects ability to
+ read KEY_MOUSE codes, but does not affect KEY_RESIZE.
+ + add overlooked build-fix needed with Cygwin for separate Ada95
+ configure script, cf: 20150606 (report by Nicolas Boulenguez)
+
+20150912
+ + fixes for configure/build using clang on OSX (prompted by report by
+ William Gallafent).
+ + do not redefine "inline" in ncurses_cfg.h; this was originally to
+ solve a problem with gcc/g++, but is aggravated by clang's misuse
+ of symbols to pretend it is gcc.
+ + add braces to configure script to prevent unwanted add of
+ "-lstdc++" to the CXXLIBS symbol.
+ + improve/update test-program used for checking existence of stdc++
+ library.
+ + if $CXXLIBS is set, the linkage test uses that in addition to $LIBS
+
+20150905
+ + add note in curs_addch.3x about line-drawing when it depends upon
+ UTF-8.
+ + add tic -q option for consistency with infocmp, use it to suppress
+ all comments from the "tic -I" output.
+ + modify infocmp -q option to suppress the "Reconstructed from"
+ header.
+ + add infocmp/tic -Q option, which allows one to dump the compiled
+ form of the terminal entry, in hexadecimal or base64.
+
+20150822
+ + sort options in usage message for infocmp, to make it simpler to
+ see unused letters.
+ + update usage message for tic, adding "-0" option.
+ + documented differences in ESCDELAY versus AIX's implementation.
+ + fix some compiler warnings from ports.
+ + modify --with-pkg-config-libdir option to make it possible to install
+ ".pc" files even if pkg-config is not found (adapted from patch by
+ Joshua Root).
+
+20150815
+ + disallow "no" as a possible value for "--with-shlib-version" option,
+ overlooked in cleanup-changes for 20000708 (report by Tommy Alex).
+ + update release notes in INSTALL.
+ + regenerate llib-* files to help with review for release notes.
+
+20150810
+ + workaround for Debian #65617, which was fixed in mawk's upstream
+ releases in 2009 (report by Sven Joachim). See
+ https://invisible-island.net/mawk/CHANGES.html#t20090727
+
+20150808 6.0 release for upload to ftp.gnu.org
+
+20150808
+ + build-fix for Ada95 on older platforms without stdint.h
+ + build-fix for Solaris, whose /bin/sh and /usr/bin/sed are non-POSIX.
+ + update release announcement, summarizing more than 800 changes across
+ more than 200 snapshots.
+ + minor fixes to manpages, etc., to simplify linking from announcement
+ page.
+
+20150725
+ + updated llib-* files.
+ + build-fixes for ncurses library "test_progs" rule.
+ + use alternate workaround for gcc 5.x feature (adapted from patch by
+ Mikhail Peselnik).
+ + add status line to tmux via xterm+sl (patch by Nicholas Marriott).
+ + fixes for st 0.5 from testing with tack -TD
+ + review/improve several manual pages to break up wall-of-text:
+ curs_add_wch.3x, curs_attr.3x, curs_bkgd.3x, curs_bkgrnd.3x,
+ curs_getcchar.3x, curs_getch.3x, curs_kernel.3x, curs_mouse.3x,
+ curs_outopts.3x, curs_overlay.3x, curs_pad.3x, curs_termattrs.3x
+ curs_trace.3x, and curs_window.3x
+
+20150719
+ + correct an old logic error for %A and %O in tparm (report by "zreed").
+ + improve documentation for signal handlers by adding section in the
+ curs_initscr.3x page.
+ + modify logic in make_keys.c to not assume anything about the size
+ of strnames and strfnames variables, since those may be functions
+ in the thread- or broken-linker configurations (problem found by
+ Coverity).
+ + modify test/configure script to check for pthreads configuration,
+ e.g., ncursestw library.
+
+20150711
+ + modify scripts to build/use test-packages for the pthreads
+ configuration of ncurses6.
+ + add references to ttytype and termcap symbols in demo_terminfo.c and
+ demo_termcap.c to ensure that when building ncursest.map, etc., that
+ the corresponding names such as _nc_ttytype are added to the list of
+ versioned symbols (report by Werner Fink)
+ + fix regression from 20150704 (report/patch by Werner Fink).
+
+20150704
+ + fix a few problems reported by Coverity.
+ + fix comparison against "/usr/include" in misc/gen-pkgconfig.in
+ (report by Daiki Ueno, Debian #790548, cf: 20141213).
+
+20150627
+ + modify configure script to remove deprecated ABI 5 symbols when
+ building ABI 6.
+ + add symbols _nc_Default_Field, _nc_Default_Form, _nc_has_mouse to
+ map-files, but marked as deprecated so that they can easily be
+ suppressed from ABI 6 builds (Debian #788610).
+ + comment-out "screen.xterm" entry, and inherit screen.xterm-256color
+ from xterm-new (report by Richard Birkett) -TD
+ + modify read_entry.c to set the error-return to -1 if no terminal
+ databases were found, as documented for setupterm.
+ + add test_setupterm.c to demonstrate normal/error returns from the
+ setupterm and restartterm functions.
+ + amend cleanup change from 20110813 which removed redundant definition
+ of ret_error, etc., from tinfo_driver.c, to account for the fact that
+ it should return a bool rather than int (report/analysis by Johannes
+ Schindelin).
+
+20150613
+ + fix overflow warning for OSX with lib_baudrate.c (cf: 20010630).
+ + modify script used to generate map/sym files to mark 5.9.20150530 as
+ the last "5.9" version, and regenerated the files. That makes the
+ files not use ".current" for the post-5.9 symbols. This also
+ corrects the label for _nc_sigprocmask used in when weak symbols are
+ configured for the ncursest/ncursestw libraries (prompted by
+ discussion with Sven Joachim).
+ + fix typo in NEWS (report by Sven Joachim).
+
+20150606 pre-release
+ + make ABI 6 the default by updates to dist.mk and VERSION, with the
+ intention that the existing ABI 5 should build as before using the
+ "--with-abi-version=5" option.
+ + regenerate ada- and man-html documentation.
+ + minor fixes to color- and util-manpages.
+ + fix a regression in Ada95/gen/Makefile.in, to handle special case of
+ Cygwin, which uses the broken-linker feature.
+ + amend fix for CF_NCURSES_CONFIG used in test/configure to assume that
+ ncurses package scripts work when present for cross-compiling, as the
+ lessor of two evils (cf: 20150530).
+ + add check in configure script to disallow conflicting options
+ "--with-termlib" and "--enable-term-driver".
+ + move defaults for "--disable-lp64" and "--with-versioned-syms" into
+ CF_ABI_DEFAULTS macro.
+
+20150530
+ + change private type for Event_Mask in Ada95 binding to work when
+ mmask_t is set to 32-bits.
+ + remove spurious "%;" from st entry (report by Daniel Pitts) -TD
+ + add vte-2014, update vte to use that -TD
+ + modify tic and infocmp to "move" a diagnostic for tparm strings that
+ have a syntax error to tic's "-c" option (report by Daniel Pitts).
+ + fix two problems with configure script macros (Debian #786436,
+ cf: 20150425, cf: 20100529).
+
+20150523
+ + add 'P' menu item to test/ncurses.c, to show pad in color.
+ + improve discussion in curs_color.3x about color rendering (prompted
+ by comment on Stack Overflow forum):
+ + remove screen-bce.mlterm, since mlterm does not do "bce" -TD
+ + add several screen.XXX entries to support the respective variations
+ for 256 colors -TD
+ + add putty+fnkeys* building-block entries -TD
+ + add smkx/rmkx to capabilities analyzed with infocmp "-i" option.
+
+20150516
+ + amend change to ".pc" files to only use the extra loader flags which
+ may have rpath options (report by Sven Joachim, cf: 20150502).
+ + change versioning for dpkg's in test-packages for Ada95 and
+ ncurses-examples for consistency with Debian, to work with package
+ updates.
+ + regenerate html manpages.
+ + clarify handling of carriage return in waddch manual page; it was
+ discussed only in the portability section (prompted by comment on
+ Stack Overflow forum):
+
+20150509
+ + add test-packages for cross-compiling ncurses-examples using the
+ MinGW test-packages. These are only the Debian packages; RPM later.
+ + cleanup format of debian/copyright files
+ + add pc-files to the MinGW cross-compiling test-packages.
+ + correct a couple of places in gen-pkgconfig.in to handle renaming of
+ the tinfo library.
+
+20150502
+ + modify the configure script to allow different default values
+ for ABI 5 versus ABI 6.
+ + add wgetch-events to test-packages.
+ + add a note on how to build ncurses-examples to test/README.
+ + fix a memory leak in delscreen (report by Daniel Kahn Gillmor,
+ Debian #783486) -TD
+ + remove unnecessary ';' from E3 capabilities -TD
+ + add tmux entry, derived from screen (patch by Nicholas Marriott).
+ + split-out recent change to nsterm-bce as nsterm-build326, and add
+ nsterm-build342 to reflect changes with successive releases of OSX
+ (discussion with Leonardo B Schenkel)
+ + add xon, ich1, il1 to ibm3161 (patch by Stephen Powell, Debian
+ #783806)
+ + add sample "magic" file, to document ext-putwin.
+ + modify gen-pkgconfig.in to add explicit -ltinfo, etc., to the
+ generated ".pc" file when ld option "--as-needed" is used, or when
+ ncurses and tinfo are installed without using rpath (prompted by
+ discussion with Sylvain Bertrand).
+ + modify test-package for ncurses6 to omit rpath feature when installed
+ in /usr.
+ + add OSX's "*.dSYM" to clean-rules in makefiles.
+ + make extra-suffix work for OSX configuration, e.g., for shared
+ libraries.
+ + modify Ada95/configure script to work with pkg-config
+ + move test-package for ncurses6 to /usr, since filename-conflicts have
+ been eliminated.
+ + corrected build rules for Ada95/gen/generate; it does not depend on
+ the ncurses library aside from headers.
+ + reviewed man pages, fixed a few other spelling errors.
+ + fix a typo in curs_util.3x (Sven Joachim).
+ + use extra-suffix in some overlooked shared library dependencies
+ found by 20150425 changes for test-packages.
+ + update config.guess, config.sub from
+ http://git.savannah.gnu.org/cgit/config.git
+
+20150425
+ + expanded description of tgetstr's area pointer in manual page
+ (report by Todd M Lewis).
+ + in-progress changes to modify test-packages to use ncursesw6 rather
+ than ncursesw, with updated configure scripts.
+ + modify CF_NCURSES_CONFIG in Ada95- and test-configure scripts to
+ check for ".pc" files via pkg-config, but add a linkage check since
+ frequently pkg-config configurations are broken.
+ + modify misc/gen-pkgconfig.in to include EXTRA_LDFLAGS, e.g., for the
+ rpath option.
+ + add 'dim' capability to screen entry (report by Leonardo B Schenkel)
+ + add several key definitions to nsterm-bce to match preconfigured
+ keys, e.g., with OSX 10.9 and 10.10 (report by Leonardo B Schenkel)
+ + fix repeated "extra-suffix" in ncurses-config.in (cf: 20150418).
+ + improve term_variables manual page, adding section on the terminfo
+ long-name symbols which are defined in the term.h header.
+ + fix bug in lib_tracebits.c introduced in const-fixes (cf: 20150404).
+
+20150418
+ + avoid a blank line in output from tabs program by ending it with
+ a carriage return as done in FreeBSD (patch by James Clarke).
+ + build-fix for the "--enable-ext-putwin" feature when not using
+ wide characters (report by Werner Fink).
+ + modify autoconf macros to use scripting improvement from xterm.
+ + add -brtl option to compiler options on AIX 5-7, needed to link
+ with the shared libraries.
+ + add --with-extra-suffix option to help with installing nonconflicting
+ ncurses6 packages, e.g., avoiding header- and library-conflicts.
+ NOTE: as a side-effect, this renames
+ adacurses-config to adacurses5-config and
+ adacursesw-config to adacursesw5-config
+ + modify debian/rules test package to suffix programs with "6".
+ + clarify in curs_inopts.3x that window-specific settings do not
+ inherit into new windows.
+
+20150404
+ + improve description of start_color() in the manual.
+ + modify several files in ncurses- and progs-directories to allow
+ const data used in internal tables to be put by the linker into the
+ readonly text segment.
+
+20150329
+ + correct cut/paste error for "--enable-ext-putwin" that made it the
+ same as "--enable-ext-colors" (report by Roumen Petrov)
+
+20150328
+ + add "-f" option to test/savescreen.c to help with testing/debugging
+ the extended putwin/getwin.
+ + add logic for writing/reading combining characters in the extended
+ putwin/getwin.
+ + add "--enable-ext-putwin" configure option to turn on the extended
+ putwin/getwin.
+
+20150321
+ + in-progress changes to provide an extended version of putwin and
+ getwin which will be capable of reading screen-dumps between the
+ wide/normal ncurses configurations. These are text files, except
+ for a magic code at the beginning:
+ 0 string \210\210 Screen-dump (ncurses)
+
+20150307
+ + document limitations of getwin in manual page (prompted by discussion
+ with John S Urban).
+ + extend test/savescreen.c to demonstrate that color pair values
+ and graphic characters can be restored using getwin.
+
+20150228
+ + modify win_driver.c to eliminate the constructor, to make it more
+ usable in an application which may/may not need the console window
+ (report by Grady Martin).
+
+20150221
+ + capture define's related to -D_XOPEN_SOURCE from the configure check
+ and add those to the *-config and *.pc files, to simplify use for
+ the wide-character libraries.
+ + modify ncurses.spec to accommodate Fedora21's location of pkg-config
+ directory.
+ + correct sense of "--disable-lib-suffixes" configure option (report
+ by Nicolas Boos, cf: 20140426).
+
+20150214
+ + regenerate html manpages using improved man2html from work on xterm.
+ + regenerated ".map" and ".sym" files using improved script, accounting
+ for the "--enable-weak-symbols" configure option (report by Werner
+ Fink).
+
+20150131
+ + regenerated ".map" and ".sym" files using improved script, showing
+ the combinations of configure options used at each stage.
+
+20150124
+ + add configure check to determine if "local: _*;" can be used in the
+ ".map" files to selectively omit symbols beginning with "_". On at
+ least recent FreeBSD, the wildcard applies to all "_" symbols.
+ + remove obsolete/conflicting rule for ncurses.map from
+ ncurses/Makefile.in (cf: 20130706).
+
+20150117
+ + improve description in INSTALL of the --with-versioned-syms option.
+ + add combination of --with-hashed-db and --with-ticlib to
+ configurations for ".map" files (report by Werner Fink).
+
+20150110
+ + add a step to generating ".map" files, to declare any remaining
+ symbols beginning with "_" as local, at the last version node.
+ + improve configure checks for pkg-config, addressing a variant found
+ with FreeBSD ports.
+ + modify win_driver.c to provide characters for special keys, like
+ ansi.sys, when keypad mode is off, rather than returning nothing at
+ all (discussion with Eli Zaretskii).
+ + add "broken_linker" and "hashed-db" configure options to combinations
+ use for generating the ".map" and ".sym" files.
+ + avoid using "ld" directly when creating shared library, to simplify
+ cross-compiles. Also drop "-Bsharable" option from shared-library
+ rules for FreeBSD and DragonFly (FreeBSD #196592).
+ + fix a memory leak in form library Free_RegularExpression_Type()
+ (report by Pavel Balaev).
+
+20150103
+ + modify_nc_flush() to retry if interrupted (patch by Stian Skjelstad).
+ + change map files to make _nc_freeall a global, since it may be used
+ via the Ada95 binding when checking for memory leaks.
+ + improve sed script used in 20141220 to account for wide-, threaded-
+ variations in ABI 6.
+
+20141227
+ + regenerate ".map" files, using step overlooked in 20141213 to use
+ the same patch-dates across each file to match ncurses.map (report by
+ Sven Joachim).
+
+20141221
+ + fix an incorrect variable assignment in 20141220 changes (report by
+ Sven Joachim).
+
+20141220
+ + updated Ada95/configure with macro changes from 20141213
+ + tie configure options --with-abi-version and --with-versioned-syms
+ together, so that ABI 6 libraries have distinct symbol versions from
+ the ABI 5 libraries.
+ + replace obsolete/nonworking link to man2html with current one,
+ regenerate html-manpages.
+
+20141213
+ + modify misc/gen-pkgconfig.in to add -I option for include-directory
+ when using both --prefix and --disable-overwrite (report by Misty
+ De Meo).
+ + add configure option --with-pc-suffix to allow minor renaming of
+ ".pc" files and the corresponding library. Use this in the test
+ package for ncurses6.
+ + modify configure script so that if pkg-config is not installed, it
+ is still possible to install ".pc" files (report by Misty De Meo).
+ + updated ".sym" files, removing symbols which are marked as "local"
+ in the corresponding ".map" files.
+ + updated ".map" files to reflect move of comp_captab and comp_hash
+ from tic-library to tinfo-library in 20090711 (report by Sven
+ Joachim).
+
+20141206
+ + updated ".map" files so that each symbol that may be shared across
+ the different library configurations has the same label. Some
+ review is needed to ensure these are really compatible.
+ + modify MKlib_gen.sh to work around change in development version of
+ gcc introduced here:
+ https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html
+ https://gcc.gnu.org/ml/gcc-patches/2014-07/msg00236.html
+ (reports by Marcus Shawcroft, Maohui Lei).
+ + improved configure macro CF_SUBDIR_PATH, from lynx changes.
+
+20141129
+ + improved ".map" files by generating them with a script that builds
+ ncurses with several related configurations and merges the results.
+ A further refinement is planned, to make the tic- and tinfo-library
+ symbols use the same versions across each of the four configurations
+ which are represented (reports by Sven Joachim, Werner Fink).
+
+20141115
+ + improve description of limits for color values and color pairs in
+ curs_color.3x (prompted by patch by Tim van der Molen).
+ + add VERSION file, using first field in that to record the ABI version
+ used for configure --with-libtool --disable-libtool-version
+ + add configure options for applying the ".map" and ".sym" files to
+ the ncurses, form, menu and panel libraries.
+ + add ".map" and ".sym" files to show exported symbols, e.g., for
+ symbol-versioning.
+
+20141101
+ + improve strict compiler-warnings by adding a cast in TRACE_RETURN
+ and making a new TRACE_RETURN1 macro for cases where the cast does
+ not apply.
+
+20141025
+ + in-progress changes to integrate the win32 console driver with the
+ msys2 configuration.
+
+20141018
+ + reviewed terminology 0.6.1, add function key definitions. None of
+ the vt100-compatibility issues were improved -TD
+ + improve infocmp conversion of extended capabilities to termcap by
+ correcting the limit check against parametrized[], as well as filling
+ in a check if the string happens to have parameters, e.g., "xm"
+ in recent changes.
+ + add check for zero/negative dimensions for resizeterm and resize_term
+ (report by Mike Gran).
+
+20141011
+ + add experimental support for xterm's 1005 mouse mode, to use in a
+ demonstration of its limitations.
+ + add experimental support for "%u" format to terminfo.
+ + modify test/ncurses.c to also show position reports in 'a' test.
+ + minor formatting fixes to _nc_trace_mmask_t, make this function
+ exported to help with debugging mouse changes.
+ + improve behavior of wheel-mice for xterm protocol, noting that there
+ are only button-presses for buttons "4" and "5", so there is no need
+ to wait to combine events into double-clicks (report/analysis by
+ Greg Field).
+ + provide examples xterm-1005 and xterm-1006 terminfo entries -TD
+ + implement decoder for xterm SGR 1006 mouse mode.
+
+20140927
+ + implement curs_set in win_driver.c
+ + implement flash in win_driver.c
+ + fix an infinite loop in win_driver.c if the command-window loses
+ focus.
+ + improve the non-buffered mode, i.e., NCURSES_CONSOLE2, of
+ win_driver.c by temporarily changing the buffer-size to match the
+ window-size to eliminate the scrollback. Also enforce a minimum
+ screen-size of 24x80 in the non-buffered mode.
+ + modify generated misc/Makefile to suppress install.data from the
+ dependencies if the --disable-db-install option is used, compensating
+ for the top-level makefile changes used to add ncurses*-config in the
+ 20140920 changes (report by Steven Honeyman).
+
+20140920
+ + add ncurses*-config to bin-directory of sample package-scripts.
+ + add check to ensure that getopt is available; this is a problem in
+ some older cross-compiler environments.
+ + expanded on the description of --disable-overwrite in INSTALL
+ (prompted by reports by Joakim Tjernlund, Thomas Klausner).
+ See Gentoo #522586 and NetBSD #49200 for examples.
+ which relates to the clarified guidelines.
+ + remove special logic from CF_INCLUDE_DIRS which adds the directory
+ for the --includedir from the build (report by Joakim Tjernlund).
+ + add case for Unixware to CF_XOPEN_SOURCE, from lynx changes.
+ + update config.sub from
+ http://git.savannah.gnu.org/cgit/config.git
+
+20140913
+ + add a configure check to ignore some of the plethora of non-working
+ C++ cross-compilers.
+ + build-fixes for Ada95 with gnat 4.9
+
+20140906
+ + build-fix and other improvements for port of ncurses-examples to
+ NetBSD.
+ + minor compiler-warning fixes.
+
+20140831
+ + modify test/demo_termcap.c and test/demo_terminfo.c to make their
+ options more directly comparable, and add "-i" option to specify
+ a terminal description filename to parse for names to lookup.
+
+20140823
+ + fix special case where double-width character overwrites a single-
+ width character in the first column (report by Egmont Koblinger,
+ cf: 20050813).
+
+20140816
+ + fix colors in ncurses 'b' test which did not work after changing
+ it to put the test-strings in subwindows (cf: 20140705).
+ + merge redundant SEE-ALSO sections in form and menu manpages.
+
+20140809
+ + modify declarations for user-data pointers in C++ binding to use
+ reinterpret_cast to facilitate converting typed pointers to void*
+ in user's application (patch by Adam Jiang).
+ + regenerated html manpages.
+ + add note regarding cause and effect for TERM in ncurses manpage,
+ having noted clueless verbiage in Terminal.app's "help" file
+ which reverses cause/effect.
+ + remove special fallback definition for NCURSES_ATTR_T, since macros
+ have resolved type-mismatches using casts (cf: 970412).
+ + fixes for win_driver.c:
+ + handle repainting on endwin/refresh combination.
+ + implement beep().
+ + minor cleanup.
+
+20140802
+ + minor portability fixes for MinGW:
+ + ensure WINVER is defined in makefiles rather than using headers
+ + add check for gnatprep "-T" option
+ + work around bug introduced by gcc 4.8.1 in MinGW which breaks
+ "trace" feature:
+ http://stackoverflow.com/questions/20877689/gcc-4-8-1-minggw-d-option-does-not-work-as-usual
+ + fix most compiler warnings for Cygwin ncurses-examples.
+ + restore "redundant" -I options in test/Makefile.in, since they are
+ typically needed when building the derived ncurses-examples package
+ (cf: 20140726).
+
+20140726
+ + eliminate some redundant -I options used for building libraries, and
+ ensure that ${srcdir} is added to the include-options (prompted by
+ discussion with Paul Gilmartin).
+ + modify configure script to work with Minix3.2
+ + add form library extension O_DYNAMIC_JUSTIFY option which can be
+ used to override the different treatment of justification for static
+ versus dynamic fields (adapted from patch by Leon Winter).
+ + add a null pointer check in test/edit_field.c (report/analysis by
+ Leon Winter, cf: 20130608).
+
+20140719
+ + make workarounds for compiling test-programs with NetBSD curses.
+ + improve configure macro CF_ADD_LIBS, to eliminate repeated -l/-L
+ options, from xterm changes.
+
+20140712
+ + correct Charable() macro check for A_ALTCHARSET in wide-characters.
+ + build-fix for position-debug code in tty_update.c, to work with or
+ without sp-funcs.
+
+20140705
+ + add w/W toggle to ncurses.c 'B' test, to demonstrate permutation of
+ video-attributes and colors with double-width character strings.
+
+20140629
+ + correct check in win_driver.c for saving screen contents, e.g., when
+ NCURSES_CONSOLE2 is set (cf: 20140503).
+ + reorganize b/B menu items in ncurses.c, putting the test-strings into
+ subwindows. This is needed for a planned change to use Unicode
+ fullwidth characters in the test-screens.
+ + correct update to form status for _NEWTOP, broken by fixes for
+ compiler warnings (patch by Leon Winter, cf: 20120616).
+
+20140621
+ + change shared-library suffix for AIX 5 and 6 to ".so", avoiding
+ conflict with the static library (report by Ben Lentz).
+ + document RPATH_LIST in INSTALLATION file, as part of workarounds for
+ upgrading an ncurses library using the "--with-shared" option.
+ + modify test/ncurses.c c/C tests to cycle through subsets of the
+ total number of colors, to better illustrate 8/16/88/256-colors by
+ providing directly comparable screens.
+ + add test/dots_curses.c, for comparison with the low-level examples.
+
+20140614
+ + fix dereference before null check found by Coverity in tic.c
+ (cf: 20140524).
+ + fix sign-extension bug in read_entry.c which prevented "toe" from
+ reading empty "screen+italics" entry.
+ + modify sgr for screen.xterm-new to support dim capability -TD
+ + add dim capability to nsterm+7 -TD
+ + cancel dim capability for iterm -TD
+ + add dim, invis capabilities to vte-2012 -TD
+ + add sitm/ritm to konsole-base and mlterm3 -TD
+
+20140609
+ > fix regression in screen terminfo entries (reports by Christian
+ Ebert, Gabriele Balducci) -TD
+ + revert the change to screen; see notes for why this did not work -TD
+ + cancel sitm/ritm for entries which extend "screen", to work around
+ screen's hardcoded behavior for SGR 3 -TD
+
+20140607
+ + separate masking for sgr in vidputs from sitm/ritm, which do not
+ overlap with sgr functionality.
+ + remove unneeded -i option from adacurses-config; put -a in the -I
+ option for consistency (patch by Pascal Pignard).
+ + update xterm-new terminfo entry to xterm patch #305 -TD
+ + change format of test-scripts for Debian Ada95 and ncurses-examples
+ packages to quilted to work around Debian #700177 (cf: 20130907).
+ + build fix for form_driver_w.c as part of ncurses-examples package for
+ older ncurses than 20131207.
+ + add Hello World example to adacurses-config manpage.
+ + remove unused --enable-pc-files option from Ada95/configure.
+ + add --disable-gnat-projects option for testing.
+ + revert changes to Ada95 project-files configuration (cf: 20140524).
+ + corrected usage message in adacurses-config.
+
+20140524
+ + fix typo in ncurses manpage for the NCURSES_NO_MAGIC_COOKIE
+ environment variable.
+ + improve discussion of input-echoing in curs_getch.3x
+ + clarify discussion in curs_addch.3x of wrapping.
+ + modify parametrized.h to make fln non-padded.
+ + correct several entries which had termcap-style padding used in
+ terminfo: adm21, aj510, alto-h19, att605-pc, x820 -TD
+ + correct syntax for padding in some entries: dg211, h19 -TD
+ + correct ti924-8 which had confused padding versus octal escapes -TD
+ + correct padding in sbi entry -TD
+ + fix an old bug in the termcap emulation; "%i" was ignored in tparm()
+ because the parameters to be incremented were already on the internal
+ stack (report by Corinna Vinschen).
+ + modify tic's "-c" option to take into account the "-C" option to
+ activate additional checks which compare the results from running
+ tparm() on the terminfo expressions versus the translated termcap
+ expressions.
+ + modify tic to allow it to read from FIFOs (report by Matthieu Fronton,
+ cf: 20120324).
+ > patches by Nicolas Boulenguez:
+ + explicit dereferences to suppress some style warnings.
+ + when c_varargs_to_ada.c includes its header, use double quotes
+ instead of <>.
+ + samples/ncurses2-util.adb: removed unused with clause. The warning
+ was removed by an obsolete pragma.
+ + replaced Unreferenced pragmas with Warnings (Off). The latter,
+ available with older GNATs, needs no configure test. This also
+ replaces 3 untested Unreferenced pragmas.
+ + simplified To_C usage in trace handling. Using two parameters allows
+ some basic formatting, and avoids a warning about security with some
+ compiler flags.
+ + for generated Ada sources, replace many snippets with one pure
+ package.
+ + removed C_Chtype and its conversions.
+ + removed C_AttrType and its conversions.
+ + removed conversions between int, Item_Option_Set, Menu_Option_Set.
+ + removed int, Field_Option_Set, Item_Option_Set conversions.
+ + removed C_TraceType, Attribute_Option_Set conversions.
+ + replaced C.int with direct use of Eti_Error, now enumerated. As it
+ was used in a case statement, values were tested by the Ada compiler
+ to be consecutive anyway.
+ + src/Makefile.in: remove duplicate stanza
+ + only consider using a project for shared libraries.
+ + style. Silent gnat-4.9 warning about misplaced "then".
+ + generate shared library project to honor ADAFLAGS, LDFLAGS.
+
+20140510
+ + cleanup recently introduced compiler warnings for MingW port.
+ + workaround for ${MAKEFLAGS} configure check versus GNU make 4.0,
+ which introduces more than one gratuitous incompatibility.
+
+20140503
+ + add vt520ansi terminfo entry (patch by Mike Gran)
+ + further improve MinGW support for the scenario where there is an
+ ANSI-escapes handler such as ansicon running in the console window
+ (patch by Juergen Pfeifer).
+
+20140426
+ + add --disable-lib-suffixes option (adapted from patch by Juergen
+ Pfeifer).
+ + merge some changes from Juergen Pfeifer's work with MSYS2, to
+ simplify later merging:
+ + use NC_ISATTY() macro for isatty() in library
+ + add _nc_mingw_isatty() and related functions to windows-driver
+ + rename terminal driver entrypoints to simplify grep's
+ + remove a check in the sp-funcs flavor of newterm() which allowed only
+ the first call to newterm() to succeed (report by Thomas Beierlein,
+ cf: 20090927).
+
+20140419
+ + update config.guess, config.sub from
+ http://git.savannah.gnu.org/cgit/config.git
+
+20140412
+ + modify configure script:
+ + drop the -no-gcc option from Intel compiler, from lynx changes.
+ + extend the --with-hashed-db configure option to simplify building
+ with different versions of Berkeley database using FreeBSD ports.
+ + improve initialization for MinGW port (Juergen Pfeifer):
+ + enforce Windows-style path-separator if cross-compiling,
+ + add a driver-name method to each of the drivers,
+ + allow the Windows driver name to match "unknown", ignoring case,
+ + lengthen the built-in name for the Windows console driver to
+ "#win32console", and
+ + move the comparison of driver-names allowing abbreviation, e.g.,
+ to "#win32con" into the Windows console driver.
+
+20140329
+ + add check in tic for mismatch between ccc and initp/initc
+ + cancel ccc in putty-256color and konsole-256color for consistency
+ with the cancelled initc capability (patch by Sven Zuhlsdorf).
+ + add xterm+256setaf building block for various terminals which only
+ get the 256-color feature half-implemented -TD
+ + updated "st" entry (leaving the 0.1.1 version as "simpleterm") to
+ 0.4.1 -TD
+
+20140323
+ + fix typo in "mlterm" entry (report by Gabriele Balducci) -TD
+
+20140322
+ + use types from <stdint.h> in sample build-scripts for chtype, etc.
+ + modify configure script and curses.h.in to allow the types specified
+ using --with-chtype and related options to be defined in <stdint.h>
+ + add terminology entry -TD
+ + add mlterm3 entry, use that as "mlterm" -TD
+ + inherit mlterm-256color from mlterm -TD
+
+20140315
+ + modify _nc_New_TopRow_and_CurrentItem() to ensure that the menu's
+ top-row is adjusted as needed to ensure that the current item is
+ on the screen (patch by Johann Klammer).
+ + add wgetdelay() to retrieve _delay member of WINDOW if it happens to
+ be opaque, e.g., in the pthread configuration (prompted by patch by
+ Soren Brinkmann).
+
+20140308
+ + modify ifdef in read_entry.c to handle the case where
+ NCURSES_USE_DATABASE is not defined (patch by Xin Li).
+ + add cast in form_driver_w() to fix ARM build (patch by Xin Li).
+ + add logic to win_driver.c to save/restore screen contents when not
+ allocating a console-buffer (cf: 20140215).
+
+20140301
+ + clarify error-returns from newwin (report by Ruslan Nabioullin).
+
20140222
+ fix some compiler warnings in win_driver.c
+ updated notes for wsvt25 based on tack and vttest -TD
@@ -89,7 +2811,7 @@ it is not possible to add this information.
20131221
+ further improved man2html, used this to fix broken links in html
manpages. See
- ftp://invisible-island.net/ncurses/patches/man2html
+ ftp://ftp.invisible-island.net/ncurses/patches/man2html
20131214
+ modify configure-script/ifdef's to allow OLD_TTY feature to be
@@ -112,7 +2834,7 @@ it is not possible to add this information.
recognized by clang.
20131116
- + add special case to configure script to move _XOPEN_SOURCE_EXTENDED
+ + add special case to configure script to move _XOPEN_SOURCE_EXTENDED
definition from CPPFLAGS to CFLAGS if it happens to be needed for
Solaris, because g++ errors with that definition (report by
Jean-Pierre Flori, Sage #15268).
@@ -121,8 +2843,6 @@ it is not possible to add this information.
together initialization- or reset-strings. The problem dates to
1.9.7a, but was overlooked until changes in -Wlogical-op warnings for
gcc 4.8 (report by David Binderman).
- + updated CF_GCC_WARNINGS to documented options for gcc 4.9.0, adding
- checks for -Wextra, -Wignored-qualifiers and -Wlogical-op
+ updated CF_GCC_WARNINGS to documented options for gcc 4.9.0, moving
checks for -Wextra and -Wdeclaration-after-statement into the macro,
and adding checks for -Wignored-qualifiers, -Wlogical-op and
@@ -276,7 +2996,7 @@ it is not possible to add this information.
20130615
+ minor changes to some configure macros to make them more reusable.
- + fixes for tabs program (prompted by report by Nick Andrik):
+ + fixes for tabs program (prompted by report by Nick Andrik).
+ corrected logic in command-line parsing of -a and -c predefined
tab-lists options.
+ allow "-0" and "-8" options to be combined with others, e.g.,"-0d".
@@ -480,7 +3200,7 @@ it is not possible to add this information.
+ updated termcap manpage to document legacy termcap behavior for
matching capability names.
+ modify name-comparison for tgetstr, etc., to accommodate legacy
- applications as well as to improve compatbility with BSD 4.2
+ applications as well as to improve compatibility with BSD 4.2
termcap implementations (Debian #698299) (cf: 980725).
20130112
@@ -505,7 +3225,7 @@ it is not possible to add this information.
Waterlander regarding screen flicker).
20121229
- + fix coverity warnings regarding copying into fixed-size buffers.
+ + fix Coverity warnings regarding copying into fixed-size buffers.
+ add throw-declarations in the c++ binding per Coverity warning.
+ minor changes to new-items for consistent reference to bug-report
numbers.
@@ -525,7 +3245,7 @@ it is not possible to add this information.
a null-pointer check in _nc_mvcur_resume.
+ correct display of double-width characters with MinGW port (report
by Erwin Waterlander).
- + replace MinGW's wcrtomb(), fixing a problem with _nc_viscbuf
+ + replace MinGW's wcrtomb(), fixing a problem with _nc_viscbuf
> fixes based on Coverity report:
+ correct coloring in test/bs.c
+ correct check for 8-bit value in _nc_insert_ch().
@@ -614,7 +3334,7 @@ it is not possible to add this information.
first corrects pattern used for Mac OS X's customization of gcc.
20121017
- + fix change to _nc_scroll_optimize(), which incorrectly freed memory
+ + fix change to _nc_scroll_optimize(), which incorrectly freed memory
(Redhat #866989).
20121013
@@ -967,7 +3687,7 @@ it is not possible to add this information.
+ make sgr for aaa-unk, aaa-rv agree with other caps -TD
+ make sgr for avt-ns agree with other caps -TD
+ amend fix intended to separate fixups for acsc to allow "tic -cv" to
- give verbose warnings (cf: 20110730).
+ give verbose warnings (cf: 20110730).
+ modify misc/gen-edit.sh to make the location of the tabset directory
consistent with misc/Makefile.in, i.e., using ${datadir}/tabset
(Debian #653435, patch by Sven Joachim).
@@ -980,7 +3700,7 @@ it is not possible to add this information.
+ modify check_existence() in db_iterator.c to simply check if the
path is a directory or file, according to the need. Checking for
directory size also gives no usable result with OS/2 (cf: 20120107).
- + support OS/2 kLIBC (patch by KO Myung-Han).
+ + support OS/2 kLIBC (patch by KO Myung-Hun).
20120114
+ several improvements to test/movewindow.c (prompted by discussion on
@@ -994,12 +3714,12 @@ it is not possible to add this information.
+ regenerated html manpages.
20120107
- + various improvments for MinGW (Juergen Pfeifer):
+ + various improvements for MinGW (Juergen Pfeifer):
+ modify stat() calls to ignore the st_size member
+ drop mk-dlls.sh script.
+ change recommended regular expression library.
- + modify rain.c to allow for threaded configuraton.
- + modify tset.c to allow for case when size-change logic is not used.
+ + modify rain.c to allow for threaded configuration.
+ + modify tset.c to allow for case when size-change logic is not used.
20111231
+ modify toe's report when -a and -s options are combined, to add
@@ -1371,7 +4091,7 @@ it is not possible to add this information.
+ Ada95 build-fix for big-endian architectures such as sparc. This
undoes one of the fixes from 20110319, which added an "Unused" member
to representation clauses, replacing that with pragmas to suppress
- warnings about unused bits (patch by Nicolas Boulenguez):
+ warnings about unused bits (patch by Nicolas Boulenguez).
20110423
+ add check in test/configure for use_window, use_screen.
@@ -1618,7 +4338,7 @@ it is not possible to add this information.
when weak-symbols are used, allowing the pthread configuration to
more closely match the non-thread naming (report by Werner Fink).
+ modify configure check for tic program, used for fallbacks, to a
- warning if not found. This makes it simpler to use additonal
+ warning if not found. This makes it simpler to use additional
scripts to bootstrap the fallbacks code using tic from the build
tree (report by Werner Fink).
+ fix several places in configure script using ${variable-value} form.
@@ -2026,7 +4746,6 @@ it is not possible to add this information.
+ improved configure macros CF_GCC_ATTRIBUTES, CF_PROG_LINT.
20091114
-
+ updated man/curs_trace.3x
+ limit hashing for termcap-names to 2-characters (Ubuntu #481740).
+ change a variable name in lib_newwin.c to make it clearer which
@@ -2058,7 +4777,7 @@ it is not possible to add this information.
+ quiet some pedantic gcc warnings.
+ modify _nc_wgetch() to check for a -1 in the fifo, e.g., after a
SIGWINCH, and discard that value, to avoid confusing application
- (patch by Eygene Ryabinkin, FreeBSD bin/136223).
+ (patch by Eygene Ryabinkin, FreeBSD #136223).
20091017
+ modify handling of $PKG_CONFIG_LIBDIR to use only the first item in
@@ -2138,7 +4857,7 @@ it is not possible to add this information.
20090815
+ correct use of terminfo capabilities for initializing soft-keys,
- broken in 20090509 merging.
+ broken in 20090510 merging.
+ modify wgetch() to ensure it checks SIGWINCH when it gets an error
in non-blocking mode (patch by Clemens Ladisch).
+ use PATH_SEPARATOR symbol when substituting into run_tic.sh, to
@@ -2177,7 +4896,7 @@ it is not possible to add this information.
20090718
+ fix a null-pointer check in _nc_format_slks() in lib_slk.c, from
- 20070704 changes.
+ 20090704 changes.
+ modify _nc_find_type_entry() to use hashing.
+ make CCHARW_MAX value configurable, noting that changing this would
change the size of cchar_t, and would be ABI-incompatible.
@@ -2283,7 +5002,7 @@ it is not possible to add this information.
intermediate variable LT_UNDEF in the configure script, and then
using that in the libtool link-commands.
+ fix an missing use of NCURSES_PUBLIC_VAR() in tinfo/MKcodes.awk
- from 2009031 changes.
+ from 20090321 changes.
+ improve mk-1st.awk script by writing separate cases for the
LIBTOOL_LINK command, depending on which library (ncurses, ticlib,
termlib) is to be linked.
@@ -2786,7 +5505,7 @@ it is not possible to add this information.
20080209
+ update test programs to build/work with various UNIX curses for
- comparisons. This was to reinvestigate statement in X/Open curses
+ comparisons. This was to reinvestigate statement in X/Open Curses
that insnstr and winsnstr perform wrapping. None of the Unix-branded
implementations do this, as noted in manpage (cf: 20040228).
@@ -3445,7 +6164,7 @@ it is not possible to add this information.
+ fix ifdef in c++/internal.h for QNX 6.1
+ test-compiled with (old) egcs-1.1.2, modified configure script to
not unset the $CXX and related variables which would prevent this.
- + fix a few terminfo.src typos exposed by improvments to "-f" option.
+ + fix a few terminfo.src typos exposed by improvements to "-f" option.
+ improve infocmp/tic "-f" option formatting.
20060923
@@ -4049,7 +6768,7 @@ it is not possible to add this information.
+ document error conditions for ncurses library functions (report by
Stanislav Ievlev).
+ regenerated html documentation for ada binding.
- see ftp://invisible-island.net/ncurses/patches/gnathtml
+ see ftp://ftp.invisible-island.net/ncurses/patches/gnathtml
20050507
+ regenerated html documentation for manpages.
@@ -4396,7 +7115,7 @@ it is not possible to add this information.
However that did find a coding error in Assume_Default_Colors().
+ modify several terminfo entries to ensure xterm mouse and cursor
visibility are reset in rs2 string: hurd, putty, gnome,
- konsole-base, mlterm, Eterm, screen (Debian #265784, Debian #55637).
+ konsole-base, mlterm, Eterm, screen (Debian #265784, Debian #55637).
The xterm entries are left alone - old ones for compatibility, and
the new ones do not require this change. -TD
@@ -6995,7 +9714,7 @@ it is not possible to add this information.
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.
+ $COLORFGBG 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
@@ -7351,7 +10070,7 @@ it is not possible to add this information.
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
+ + document a special case of incompatibility between ncurses 4.2 and
5.0, add a section for this in INSTALL.
+ add TRACE_DATABASE flag for trace().
@@ -7925,7 +10644,7 @@ it is not possible to add this information.
+ resolve ambiguity of kend/kll/kslt and khome/kfnd/kich1 strings in
xterm and ncsa terminfo entries by removing the unneeded ones. Note
that some entries will return kend & khome versus kslt and kfnd, for
- PC-style keyboards versus strict vt220 compatiblity - TD
+ PC-style keyboards versus strict vt220 compatibility - TD
+ add function keybound(), which returns the definition associated with
a given keycode.
+ modify define_key() to undefine the given string when no keycode is
@@ -8012,7 +10731,7 @@ it is not possible to add this information.
+ add configure --with-shlib-version option to allow installing shared
libraries named according to release or ABI versions. This
parameterizes some existing logic in the configure script, and is
- intended for compatiblity upgrades on Digital Unix, which used
+ intended for compatibility upgrades on Digital Unix, which used
versioned libraries in ncurses 4.2, but no longer does (cf: 980425).
+ resync configure script against autoconf 2.13 + patches
+ minor improvements for teraterm terminfo entry based on the program's
@@ -8493,7 +11212,7 @@ it is not possible to add this information.
980523
+ correct maxx/maxy expression for num_columns/num_lines in derwin
(patch by Alexander V Lukyanov).
- + add /usr/share/lib/terminfo and /usr/lib/terminfo as compatibilty
+ + add /usr/share/lib/terminfo and /usr/lib/terminfo as compatibility
fallbacks to _nc_read_entry(), along with --with-terminfo-dirs
configure option (suggested by Mike Hopkirk).
+ modify config.guess to recognize Unixware 2.1 and 7 (patch by Mike
@@ -8579,7 +11298,7 @@ it is not possible to add this information.
+ remove spurious trailing blanks in glibc addon-scripts (patch by
H.J.Lu).
+ insert a few braces at locations where gcc-2.8.x asks to use them to
- avoid ambigous else's, use -fpic rather than -fPIC for Linux (patch
+ avoid ambiguous else's, use -fpic rather than -fPIC for Linux (patch
by Juergen Pfeifer).
980404
@@ -8993,7 +11712,7 @@ it is not possible to add this information.
+ remove _nc_err_abort() calls when write_entry.c finds a directory but
cannot write to it, e.g., when translating part/all of /etc/termcap
(reported by Andreas Jaeger <aj@arthur.rhein-neckar.de>).
- (this dates back to 951102, in 1.9.7a).
+ (this dates back to 951102 in 1.9.7a).
+ minor ifdef fixes to compile with atac and glibc 2.0.5c
+ add check for -lgen when configuring regexpr.h
+ modify Solaris shared-library option "-d y" to "-dy" to workaround
@@ -9029,7 +11748,7 @@ it is not possible to add this information.
> patch by Juergen Pfeifer:
+ factor lib_menu and lib_form into smaller modules
+ clean up the interface between panel and SCREEN
- + minor changes to the Ada95 mouse support implemenation
+ + minor changes to the Ada95 mouse support implementation
+ minor bugfix in C++ binding to ripoff windows
+ fix a few Ada95 html documentation pages
@@ -9240,7 +11959,7 @@ it is not possible to add this information.
+ Enhance form/frm_driver.c: Allow growth of dynamic fields also on
navigation requests.
+ Fixed a bug in form/fty_enum.c: wrong position of postincrement in
- case-insensitiva comparision routine.
+ case-insensitiva comparison routine.
+ Enhanced form/lib_adabind.c with function _nc_get_field() to get a
forms field by index.
+ Enhanced menu/m_adabind.c with function _nc_get_item() to get a menus
@@ -9351,7 +12070,7 @@ it is not possible to add this information.
4. correctly handle input errors (i.e., EINTR) without loss of raw
keys
5. recognize ESC KEY_LEFT and similar
- 6. correctly handle the case of receiption of KEY_MOUSE from gpm
+ 6. correctly handle the case of reception of KEY_MOUSE from gpm
+ correct off-by-one indexing error in _nc_mouse_parse(), that caused
single mouse events (press/release) to be ignored in favor of
composed events (click). Improves on a fix from integrating gpm
@@ -9462,7 +12181,7 @@ it is not possible to add this information.
+ modify tset to look in /etc/ttys or /etc/ttytype if the configuration
does not have getttynam().
+ extend baudrate table in tset.c to match baudrate() function.
- + add table entries for 230400 and 460800 bd to baudrate() function.
+ + add table entries for B230400 and B460800 to baudrate() function.
+ improve breakout logic by allowing it before the first line updated,
which is what SVr4 curses does (patch by Alexander V. Lukyanov).
+ correct initialization of vcost in relative_move(), for cursor-down
@@ -9592,7 +12311,7 @@ it is not possible to add this information.
than total lines (patch by Alexander V. Lukyanov).
+ correct loop limits for table-lookup of enumerated value in form
(patch by Juergen Pfeifer).
- + improve threshhold computation for determining when to call ClrToEOL
+ + improve threshold computation for determining when to call ClrToEOL
(patch by Alexander V. Lukyanov).
970531
@@ -9988,7 +12707,7 @@ it is not possible to add this information.
(SVr4) curses, which doesn't use 'const' in its prototypes.
+ modify ifdef's in test/hashtest.c and test/view.c to compile with
Solaris curses.
- + modify _tracedump() to pad pad colors & attrs lines to match change
+ + modify _tracedump() to pad colors & attrs lines to match change
in 970101 showing first/last changes.
+ corrected location of terminating null on dynamically allocated forms
fields (patch by Per Foreby).
@@ -10827,7 +13546,7 @@ it is not possible to add this information.
* tset(1) added
* mouse support for xterm.
* most data tables are now const and accordingly live in shareable text space.
-* Obey the XPG4/SVr4 practice that echo() is initally off.
+* Obey the XPG4/SVr4 practice that echo() is initially off.
* tic is much better at translating XENIX and AIX termcap entries now.
* tic can interpret ko capabilities now.
* integrated Juergen Pfeifer's forms library.
@@ -10843,7 +13562,7 @@ it is not possible to add this information.
* Fixed a ^Z-handling bug that was tanking lynx(1).
* HJ Lu's patches for ELF shared libraries under Linux
* terminfo.src 9.8.2
-* tweaks for compiling in seperate directories.
+* tweaks for compiling in separate directories.
* Thomas Dickey's patches to support NeXT's brain-dead linker
* Eric Raymond's patches to fix problems with long termcap entries.
* more support for shared libraries under SunOS and IRIX.
@@ -10924,7 +13643,7 @@ it is not possible to add this information.
* tic can understand termcap now, especially if it is called captoinfo.
* The Linux Standard Console terminfo entry is called linux insead of console.
It also uses the kernel's new method of changing charsets.
-* initscr() will EXIT upon error (as the docs say) This wil mostly happen if
+* initscr() will EXIT upon error (as the docs say) This will mostly happen if
you try to run on an undefined terminal.
* I can get things running on AIX but tic can't compile terminfo. I have to
compile entries on another machine. Volunteers to hunt this bug are welcome.
@@ -11163,7 +13882,7 @@ Other changes and notes from 1.8.2 include:
* cleaned up vidputs()
* general cleanup of the code
* more attention to portability to other systems
-* added terminfos for hp70092 (wont work until changes to lib_update.c are
+* added terminfos for hp70092 (won't work until changes to lib_update.c are
made) and 386BSD pcvt drivers.
Thanks to Hellmuth Michaelis for his help.
diff --git a/README b/README
index c509352b785e..136c6001fdc9 100644
--- a/README
+++ b/README
@@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2012,2018 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: README,v 1.25 2012/08/11 20:11:26 tom Exp $
+-- $Id: README,v 1.27 2018/01/01 15:09:04 tom Exp $
-------------------------------------------------------------------------------
README file for the ncurses package
@@ -161,7 +161,7 @@ Thomas Dickey (maintainer for 1.9.9g through 4.1, resuming with FSF's 5.0):
bug fixes -- more than half of those enumerated in NEWS beginning with
the internal release 1.8.9, see
- http://invisible-island.net/personal/changelogs.html
+ https://invisible-island.net/personal/changelogs.html
Florian La Roche (official maintainer for FSF's ncurses 4.2)
Beginning with release 4.2, ncurses is distributed under an MIT-style
diff --git a/README.emx b/README.emx
index 4c04816bbf8d..ff7dc320074a 100644
--- a/README.emx
+++ b/README.emx
@@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2006,2018 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: README.emx,v 1.8 2006/04/22 22:19:37 tom Exp $
+-- $Id: README.emx,v 1.10 2018/01/01 15:09:55 tom Exp $
-- Author: Thomas Dickey
-------------------------------------------------------------------------------
@@ -43,8 +43,8 @@ the EMX development tools, of course. Get these programs to start:
Apply the autoconf patches from
- http://invisible-island.net/autoconf
- ftp://invisible-island.net/autoconf
+ https://invisible-island.net/autoconf
+ ftp://ftp.invisible-island.net/autoconf
These are ordered by date:
diff --git a/VERSION b/VERSION
new file mode 100644
index 000000000000..006d9c087577
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+5:0:10 6.1 20200118
diff --git a/aclocal.m4 b/aclocal.m4
index e73959ecc239..338a35ec9f21 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,5 +1,5 @@
dnl***************************************************************************
-dnl Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+dnl Copyright (c) 1998-2019,2020 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,18 +28,20 @@ dnl***************************************************************************
dnl
dnl Author: Thomas E. Dickey 1995-on
dnl
-dnl $Id: aclocal.m4,v 1.686 2014/02/10 00:37:02 tom Exp $
+dnl $Id: aclocal.m4,v 1.893 2020/01/18 17:30:44 tom Exp $
dnl Macros used in NCURSES auto-configuration script.
dnl
dnl These macros are maintained separately from NCURSES. The copyright on
dnl this file applies to the aggregation of macros and does not affect use of
dnl these macros in other applications.
dnl
-dnl See http://invisible-island.net/autoconf/ for additional information.
+dnl See these pages for additional information:
+dnl https://invisible-island.net/autoconf/
+dnl https://invisible-island.net/autoconf/my-autoconf.html
dnl
dnl ---------------------------------------------------------------------------
dnl ---------------------------------------------------------------------------
-dnl AM_LANGINFO_CODESET version: 3 updated: 2002/10/27 23:21:42
+dnl AM_LANGINFO_CODESET version: 4 updated: 2015/04/18 08:56:57
dnl -------------------
dnl Inserted as requested by gettext 0.10.40
dnl File from /usr/share/aclocal
@@ -50,19 +52,54 @@ dnl
dnl From Bruno Haible.
AC_DEFUN([AM_LANGINFO_CODESET],
[
- AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
- [AC_TRY_LINK([#include <langinfo.h>],
- [char* cs = nl_langinfo(CODESET);],
- am_cv_langinfo_codeset=yes,
- am_cv_langinfo_codeset=no)
- ])
- if test $am_cv_langinfo_codeset = yes; then
- AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
- [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
- fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_ACVERSION_CHECK version: 4 updated: 2013/03/04 19:52:56
+AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
+ [AC_TRY_LINK([#include <langinfo.h>],
+ [char* cs = nl_langinfo(CODESET);],
+ am_cv_langinfo_codeset=yes,
+ am_cv_langinfo_codeset=no)
+ ])
+ if test $am_cv_langinfo_codeset = yes; then
+ AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
+ [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
+ fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_ABI_DEFAULTS version: 2 updated: 2015/06/06 13:49:58
+dnl ---------------
+dnl Provide configure-script defaults for different ncurses ABIs.
+AC_DEFUN([CF_ABI_DEFAULTS],[
+AC_REQUIRE([CF_NCURSES_WITH_ABI_VERSION])
+case x$cf_cv_abi_version in
+(x[[6789]])
+ cf_dft_ext_colors=yes
+ cf_dft_ext_const=yes
+ cf_dft_ext_mouse=yes
+ cf_dft_ext_putwin=yes
+ cf_dft_ext_spfuncs=yes
+ cf_dft_filter_syms=yes
+ cf_dft_chtype=uint32_t
+ cf_dft_mmask_t=uint32_t
+ cf_dft_interop=yes
+ cf_dft_tparm_arg=intptr_t
+ cf_dft_with_lp64=yes
+ ;;
+(*)
+ cf_dft_ext_colors=no
+ cf_dft_ext_const=no
+ cf_dft_ext_mouse=no
+ cf_dft_ext_putwin=no
+ cf_dft_ext_spfuncs=no
+ cf_dft_filter_syms=no
+ cf_dft_chtype=auto
+ cf_dft_mmask_t=auto
+ cf_dft_interop=no
+ cf_dft_tparm_arg=long
+ cf_dft_with_lp64=no
+ ;;
+esac
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49
dnl ------------------
dnl Conditionally generate script according to whether we're using a given autoconf.
dnl
@@ -71,7 +108,7 @@ dnl $2 = code to use if AC_ACVERSION is at least as high as $1.
dnl $3 = code to use if AC_ACVERSION is older than $1.
define([CF_ACVERSION_CHECK],
[
-ifdef([AC_ACVERSION], ,[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])dnl
+ifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl
ifdef([m4_version_compare],
[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])],
[CF_ACVERSION_COMPARE(
@@ -120,7 +157,7 @@ AC_DEFUN([CF_ADD_ADAFLAGS],[
AC_SUBST(ADAFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ADD_CFLAGS version: 10 updated: 2010/05/26 05:38:42
+dnl CF_ADD_CFLAGS version: 13 updated: 2017/02/25 18:57:40
dnl -------------
dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
dnl The second parameter if given makes this macro verbose.
@@ -138,51 +175,51 @@ cf_new_extra_cppflags=
for cf_add_cflags in $1
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags)
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags)
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+ CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags)
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+ CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[[^"]]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -191,24 +228,24 @@ done
if test -n "$cf_new_cflags" ; then
ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
- CFLAGS="$CFLAGS $cf_new_cflags"
+ CF_APPEND_TEXT(CFLAGS,$cf_new_cflags)
fi
if test -n "$cf_new_cppflags" ; then
ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags)
fi
if test -n "$cf_new_extra_cppflags" ; then
ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)])
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags)
fi
AC_SUBST(EXTRA_CPPFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ADD_INCDIR version: 13 updated: 2010/05/26 16:44:57
+dnl CF_ADD_INCDIR version: 15 updated: 2018/06/20 20:23:13
dnl -------------
dnl Add an include-directory to $CPPFLAGS. Don't add /usr/include, since it's
dnl redundant. We don't normally need to add -I/usr/local/include for gcc,
@@ -239,7 +276,7 @@ if test -n "$1" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+ CF_APPEND_TEXT(CPPFLAGS,-I$cf_add_incdir)
AC_TRY_COMPILE([#include <stdio.h>],
[printf("Hello")],
[],
@@ -259,6 +296,8 @@ if test -n "$1" ; then
else
break
fi
+ else
+ break
fi
done
done
@@ -273,7 +312,7 @@ dnl $1 = library to add, without the "-l"
dnl $2 = variable to update (default $LIBS)
AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ADD_LIBDIR version: 9 updated: 2010/05/26 16:44:57
+dnl CF_ADD_LIBDIR version: 10 updated: 2015/04/18 08:56:57
dnl -------------
dnl Adds to the library-path
dnl
@@ -285,37 +324,55 @@ dnl
AC_DEFUN([CF_ADD_LIBDIR],
[
if test -n "$1" ; then
- for cf_add_libdir in $1
- do
- if test $cf_add_libdir = /usr/lib ; then
- :
- elif test -d $cf_add_libdir
- then
- cf_have_libdir=no
- if test -n "$LDFLAGS$LIBS" ; then
- # a loop is needed to ensure we can add subdirs of existing dirs
- for cf_test_libdir in $LDFLAGS $LIBS ; do
- if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
- cf_have_libdir=yes; break
- fi
- done
- fi
- if test "$cf_have_libdir" = no ; then
- CF_VERBOSE(adding $cf_add_libdir to library-path)
- ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])"
- fi
- fi
- done
+ for cf_add_libdir in $1
+ do
+ if test $cf_add_libdir = /usr/lib ; then
+ :
+ elif test -d $cf_add_libdir
+ then
+ cf_have_libdir=no
+ if test -n "$LDFLAGS$LIBS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_libdir in $LDFLAGS $LIBS ; do
+ if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
+ cf_have_libdir=yes; break
+ fi
+ done
+ fi
+ if test "$cf_have_libdir" = no ; then
+ CF_VERBOSE(adding $cf_add_libdir to library-path)
+ ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])"
+ fi
+ fi
+ done
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ADD_LIBS version: 1 updated: 2010/06/02 05:03:05
+dnl CF_ADD_LIBS version: 3 updated: 2019/11/02 16:47:33
dnl -----------
-dnl Add one or more libraries, used to enforce consistency.
+dnl Add one or more libraries, used to enforce consistency. Libraries are
+dnl prepended to an existing list, since their dependencies are assumed to
+dnl already exist in the list.
dnl
dnl $1 = libraries to add, with the "-l", etc.
dnl $2 = variable to update (default $LIBS)
-AC_DEFUN([CF_ADD_LIBS],[ifelse($2,,LIBS,[$2])="$1 [$]ifelse($2,,LIBS,[$2])"])dnl
+AC_DEFUN([CF_ADD_LIBS],[
+cf_add_libs="[$]ifelse($2,,LIBS,[$2])"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $1; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+ifelse($2,,LIBS,[$2])="$cf_add_libs"
+])dnl
dnl ---------------------------------------------------------------------------
dnl CF_ADD_SUBDIR_PATH version: 4 updated: 2013/10/08 17:47:05
dnl ------------------
@@ -339,13 +396,29 @@ ifelse([$5],NONE,,[(test -z "$5" || test x$5 = xNONE || test "x$4" != "x$5") &&]
}
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55
+dnl --------------
+dnl use this macro for appending text without introducing an extra blank at
+dnl the beginning
+define([CF_APPEND_TEXT],
+[
+ test -n "[$]$1" && $1="[$]$1 "
+ $1="[$]{$1}$2"
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
dnl --------------
dnl Allow user to disable a normally-on option.
AC_DEFUN([CF_ARG_DISABLE],
[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ARG_OPTION version: 4 updated: 2010/05/26 05:38:42
+dnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31
+dnl -------------
+dnl Allow user to enable a normally-off option.
+AC_DEFUN([CF_ARG_ENABLE],
+[CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14
dnl -------------
dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus
dnl values.
@@ -358,25 +431,29 @@ dnl $4 = action if perform if option is default
dnl $5 = default option value (either 'yes' or 'no')
AC_DEFUN([CF_ARG_OPTION],
[AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes)
- if test "$enableval" != "$5" ; then
+ if test "$enableval" != "$5" ; then
ifelse([$3],,[ :]dnl
,[ $3]) ifelse([$4],,,[
- else
- $4])
- fi],[enableval=$5 ifelse([$4],,,[
- $4
+ else
+ $4])
+ fi],[enableval=$5 ifelse([$4],,,[
+ $4
])dnl
- ])])dnl
+])])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_AR_FLAGS version: 5 updated: 2010/05/20 20:24:29
+dnl CF_AR_FLAGS version: 6 updated: 2015/10/10 15:25:05
dnl -----------
dnl Check for suitable "ar" (archiver) options for updating an archive.
+dnl
+dnl In particular, handle some obsolete cases where the "-" might be omitted,
+dnl as well as a workaround for breakage of make's archive rules by the GNU
+dnl binutils "ar" program.
AC_DEFUN([CF_AR_FLAGS],[
AC_REQUIRE([CF_PROG_AR])
AC_CACHE_CHECK(for options to update archives, cf_cv_ar_flags,[
cf_cv_ar_flags=unknown
- for cf_ar_flags in -curv curv -crv crv -cqv cqv -rv rv
+ for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
do
# check if $ARFLAGS already contains this choice
@@ -421,7 +498,7 @@ fi
AC_SUBST(ARFLAGS)
])
dnl ---------------------------------------------------------------------------
-dnl CF_AWK_BIG_PRINTF version: 4 updated: 2011/10/30 17:09:50
+dnl CF_AWK_BIG_PRINTF version: 5 updated: 2015/04/17 21:13:04
dnl -----------------
dnl Check if awk can handle big strings using printf. Some older versions of
dnl awk choke on large strings passed via "%s".
@@ -430,11 +507,11 @@ dnl $1 = desired string size
dnl $2 = variable to set with result
AC_DEFUN([CF_AWK_BIG_PRINTF],
[
- case x$AWK in #(vi
- x)
+ case x$AWK in
+ (x)
eval $2=no
;;
- *) #(vi
+ (*)
if ( ${AWK} 'BEGIN { xx = "x"; while (length(xx) < $1) { xx = xx "x"; }; printf("%s\n", xx); }' 2>/dev/null \
| $AWK '{ printf "%d\n", length([$]0); }' 2>/dev/null | $AWK 'BEGIN { eqls=0; recs=0; } { recs++; if ([$]0 == 12000) eqls++; } END { if (recs != 1 || eqls != 1) exit 1; }' 2>/dev/null >/dev/null ) ; then
eval $2=yes
@@ -492,7 +569,7 @@ else AC_MSG_RESULT(no)
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_BOOL_SIZE version: 13 updated: 2013/04/13 18:03:21
+dnl CF_BOOL_SIZE version: 15 updated: 2017/01/21 11:06:25
dnl ------------
dnl Test for the size of 'bool' in the configured C++ compiler (e.g., a type).
dnl Don't bother looking for bool.h, since it's been deprecated.
@@ -526,7 +603,7 @@ AC_CACHE_VAL(cf_cv_type_of_bool,[
#endif
-int main()
+int main(void)
{
FILE *fp = fopen("cf_test.out", "w");
if (fp != 0) {
@@ -552,15 +629,15 @@ int main()
rm -f cf_test.out
AC_MSG_RESULT($cf_cv_type_of_bool)
if test "$cf_cv_type_of_bool" = unknown ; then
- case .$NCURSES_BOOL in #(vi
- .auto|.) NCURSES_BOOL=unsigned;;
+ case .$NCURSES_BOOL in
+ (.auto|.) NCURSES_BOOL=unsigned;;
esac
AC_MSG_WARN(Assuming $NCURSES_BOOL for type of bool)
cf_cv_type_of_bool=$NCURSES_BOOL
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_BUILD_CC version: 7 updated: 2012/10/06 15:31:55
+dnl CF_BUILD_CC version: 8 updated: 2018/01/04 20:31:04
dnl -----------
dnl If we're cross-compiling, allow the user to override the tools and their
dnl options. The configure script is oriented toward identifying the host
@@ -585,7 +662,7 @@ if test "$cross_compiling" = yes ; then
AC_ARG_WITH(build-cc,
[ --with-build-cc=XXX the build C compiler ($BUILD_CC)],
[BUILD_CC="$withval"],
- [AC_CHECK_PROGS(BUILD_CC, gcc cc cl)])
+ [AC_CHECK_PROGS(BUILD_CC, [gcc clang c99 c89 cc cl],none)])
AC_MSG_CHECKING(for native build C compiler)
AC_MSG_RESULT($BUILD_CC)
@@ -652,33 +729,71 @@ AC_SUBST(BUILD_EXEEXT)
AC_SUBST(BUILD_OBJEXT)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CC_ENV_FLAGS version: 1 updated: 2012/10/03 05:25:49
+dnl CF_CC_ENV_FLAGS version: 9 updated: 2018/07/29 18:03:26
dnl ---------------
dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
-dnl into CC. This will not help with broken scripts that wrap the compiler with
-dnl options, but eliminates a more common category of user confusion.
+dnl into CC. This will not help with broken scripts that wrap the compiler
+dnl with options, but eliminates a more common category of user confusion.
+dnl
+dnl In particular, it addresses the problem of being able to run the C
+dnl preprocessor in a consistent manner.
+dnl
+dnl Caveat: this also disallows blanks in the pathname for the compiler, but
+dnl the nuisance of having inconsistent settings for compiler and preprocessor
+dnl outweighs that limitation.
AC_DEFUN([CF_CC_ENV_FLAGS],
[
# This should have been defined by AC_PROG_CC
: ${CC:=cc}
+AC_MSG_CHECKING(\$CFLAGS variable)
+case "x$CFLAGS" in
+(*-[[IUD]]*)
+ AC_MSG_RESULT(broken)
+ AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options)
+ cf_flags="$CFLAGS"
+ CFLAGS=
+ for cf_arg in $cf_flags
+ do
+ CF_ADD_CFLAGS($cf_arg)
+ done
+ ;;
+(*)
+ AC_MSG_RESULT(ok)
+ ;;
+esac
+
AC_MSG_CHECKING(\$CC variable)
-case "$CC" in #(vi
-*[[\ \ ]]-[[IUD]]*)
+case "$CC" in
+(*[[\ \ ]]-*)
AC_MSG_RESULT(broken)
- AC_MSG_WARN(your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options)
+ AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
# humor him...
- cf_flags=`echo "$CC" | sed -e 's/^[[^ ]]*[[ ]]//'`
- CC=`echo "$CC" | sed -e 's/[[ ]].*//'`
- CF_ADD_CFLAGS($cf_flags)
+ cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
+ cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'`
+ CC="$cf_prog"
+ for cf_arg in $cf_flags
+ do
+ case "x$cf_arg" in
+ (x-[[IUDfgOW]]*)
+ CF_ADD_CFLAGS($cf_arg)
+ ;;
+ (*)
+ CC="$CC $cf_arg"
+ ;;
+ esac
+ done
+ CF_VERBOSE(resulting CC: '$CC')
+ CF_VERBOSE(resulting CFLAGS: '$CFLAGS')
+ CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS')
;;
-*)
+(*)
AC_MSG_RESULT(ok)
;;
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CFG_DEFAULTS version: 10 updated: 2013/09/07 13:54:05
+dnl CF_CFG_DEFAULTS version: 11 updated: 2015/04/17 21:13:04
dnl ---------------
dnl Determine the default configuration into which we'll install ncurses. This
dnl can be overridden by the user's command-line options. There's two items to
@@ -696,10 +811,10 @@ AC_MSG_CHECKING(for prefix)
if test "x$prefix" = "xNONE" ; then
case "$cf_cv_system_name" in
# non-vendor systems don't have a conflict
- openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*)
+ (openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*)
prefix=/usr
;;
- *) prefix=$ac_default_prefix
+ (*) prefix=$ac_default_prefix
;;
esac
fi
@@ -732,7 +847,7 @@ AC_MSG_RESULT($includedir)
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CGETENT version: 5 updated: 2012/10/06 17:56:13
+dnl CF_CGETENT version: 6 updated: 2017/01/21 11:06:25
dnl ----------
dnl Check if the terminal-capability database functions are available. If not,
dnl ncurses has a much-reduced version.
@@ -756,6 +871,7 @@ then
AC_DEFINE(HAVE_BSD_CGETENT,1,[Define to 1 if we have BSD cgetent])
AC_CACHE_CHECK(if cgetent uses const parameter,cf_cv_cgetent_const,[
AC_TRY_LINK([
+#pragma GCC diagnostic error "-Wincompatible-pointer-types-discards-qualifiers"
#include <stdlib.h>],[
char temp[128];
char *buf = temp;
@@ -811,7 +927,36 @@ if test ".$system_name" != ".$cf_cv_system_name" ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_ERRNO version: 11 updated: 2010/05/26 05:38:42
+dnl CF_CHECK_ENVIRON version: 3 updated: 2010/05/26 16:44:57
+dnl ----------------
+dnl Check for data that is usually declared in <unistd.h>, e.g., the 'environ'
+dnl variable. Define a DECL_xxx symbol if we must declare it ourselves.
+dnl
+dnl $1 = the name to check
+dnl $2 = the assumed type
+AC_DEFUN([CF_CHECK_ENVIRON],
+[
+AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[
+ AC_TRY_COMPILE([
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#include <unistd.h> ],
+ ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1,
+ [cf_cv_dcl_$1=yes],
+ [cf_cv_dcl_$1=no])
+])
+
+if test "$cf_cv_dcl_$1" = no ; then
+ CF_UPPER(cf_result,decl_$1)
+ AC_DEFINE_UNQUOTED($cf_result)
+fi
+
+# It's possible (for near-UNIX clones) that the data doesn't exist
+CF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2]))
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_CHECK_ERRNO version: 12 updated: 2015/04/18 08:56:57
dnl --------------
dnl Check for data that is usually declared in <stdio.h> or <errno.h>, e.g.,
dnl the 'errno' variable. Define a DECL_xxx symbol if we must declare it
@@ -822,28 +967,28 @@ dnl $2 = the assumed type
AC_DEFUN([CF_CHECK_ERRNO],
[
AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[
- AC_TRY_COMPILE([
+ AC_TRY_COMPILE([
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#include <stdio.h>
#include <sys/types.h>
#include <errno.h> ],
- ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1,
- [cf_cv_dcl_$1=yes],
- [cf_cv_dcl_$1=no])
+ ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1,
+ [cf_cv_dcl_$1=yes],
+ [cf_cv_dcl_$1=no])
])
if test "$cf_cv_dcl_$1" = no ; then
- CF_UPPER(cf_result,decl_$1)
- AC_DEFINE_UNQUOTED($cf_result)
+ CF_UPPER(cf_result,decl_$1)
+ AC_DEFINE_UNQUOTED($cf_result)
fi
# It's possible (for near-UNIX clones) that the data doesn't exist
CF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2]))
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_EXTERN_DATA version: 3 updated: 2001/12/30 18:03:23
+dnl CF_CHECK_EXTERN_DATA version: 4 updated: 2015/04/18 08:56:57
dnl --------------------
dnl Check for existence of external data in the current set of libraries. If
dnl we can modify it, it's real enough.
@@ -852,23 +997,165 @@ dnl $2 = its type
AC_DEFUN([CF_CHECK_EXTERN_DATA],
[
AC_CACHE_CHECK(if external $1 exists, cf_cv_have_$1,[
- AC_TRY_LINK([
+ AC_TRY_LINK([
#undef $1
extern $2 $1;
],
- [$1 = 2],
- [cf_cv_have_$1=yes],
- [cf_cv_have_$1=no])
+ [$1 = 2],
+ [cf_cv_have_$1=yes],
+ [cf_cv_have_$1=no])
])
if test "$cf_cv_have_$1" = yes ; then
- CF_UPPER(cf_result,have_$1)
- AC_DEFINE_UNQUOTED($cf_result)
+ CF_UPPER(cf_result,have_$1)
+ AC_DEFINE_UNQUOTED($cf_result)
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_GPM_WGETCH version: 2 updated: 2010/08/14 18:25:37
+dnl CF_CHECK_GETENV version: 1 updated: 2019/06/23 15:28:15
+dnl ---------------
+dnl Check if repeated getenv calls return the same pointer, e.g., it does not
+dnl discard the previous pointer when returning a new one.
+AC_DEFUN([CF_CHECK_GETENV],
+[
+AC_REQUIRE([CF_CHECK_ENVIRON])
+AC_CHECK_FUNC( getenv, ,, AC_MSG_ERROR(getenv not found) )
+AC_CHECK_FUNCS( putenv setenv strdup )
+AC_CACHE_CHECK(if getenv returns consistent values,cf_cv_consistent_getenv,[
+AC_TRY_RUN([
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+
+#if defined(HAVE_ENVIRON) && defined(DECL_ENVIRON) && !defined(environ)
+extern char **environ; /* POSIX, but some systems are not... */
+#endif
+
+#if defined(HAVE_STRDUP)
+#define str_alloc(s) strdup(s)
+#else
+#define str_alloc(s) strcpy(malloc(strlen(s) + 1, s))
+#endif
+
+static void set_value(const char *name, const char *value)
+{
+#if defined(HAVE_SETENV)
+ setenv(name, value, 1);
+#elif defined(HAVE_PUTENV)
+ char buffer[1024];
+ sprintf(buffer, "%s=%s", name, value);
+ putenv(str_alloc(buffer));
+#else
+#error neither putenv/setenv found
+#endif
+}
+int main(void)
+{
+ int pass;
+ size_t numenv, limit, j;
+ char **mynames;
+ char **myvalues;
+ char **mypointer;
+ char *equals;
+ for (numenv = 0; environ[numenv]; ++numenv) ;
+ limit = numenv + 10;
+ mynames = (char **) calloc(limit + 1, sizeof(char *));
+ myvalues = (char **) calloc(limit + 1, sizeof(char *));
+ mypointer = (char **) calloc(limit + 1, sizeof(char *));
+#if defined(HAVE_ENVIRON)
+ for (j = 0; environ[j]; ++j) {
+ mynames[j] = str_alloc(environ[j]);
+ equals = strchr(mynames[j], '=');
+ if (equals != 0) {
+ *equals++ = '\0';
+ myvalues[j] = str_alloc(equals);
+ } else {
+ myvalues[j] = str_alloc("");
+ }
+ }
+#endif
+ for (j = numenv; j < limit; ++j) {
+ char name[80];
+ char value[80];
+ size_t found;
+ size_t k = 0;
+ do {
+ size_t jk;
+ found = 0;
+ sprintf(name, "TERM%lu", (unsigned long) k);
+ for (jk = 0; jk < j; ++jk) {
+ if (!strcmp(name, mynames[jk])) {
+ found = 1;
+ ++k;
+ break;
+ }
+ }
+ } while (found);
+ sprintf(value, "%lu:%p", (unsigned long) k, &mynames[j]);
+ set_value(name, value);
+ mynames[j] = str_alloc(name);
+ myvalues[j] = str_alloc(value);
+ }
+ for (pass = 0; pass < 3; ++pass) {
+ for (j = 0; j < limit; ++j) {
+ char *value = getenv(mynames[j]);
+ if (pass) {
+ if (value == 0) {
+ fprintf(stderr, "getenv returned null for %s\n", mynames[j]);
+ ${cf_cv_main_return:-return}(1);
+ } else if (value != mypointer[j]) {
+ fprintf(stderr, "getenv returned different pointer for %s\n", mynames[j]);
+ ${cf_cv_main_return:-return}(1);
+ } else if (strcmp(value, myvalues[j])) {
+ fprintf(stderr, "getenv returned different value for %s\n", mynames[j]);
+ ${cf_cv_main_return:-return}(1);
+ }
+ } else {
+ size_t k;
+ mypointer[j] = value;
+ for (k = 0; k < j; ++k) {
+ if (mypointer[j] == mypointer[k]) {
+ fprintf(stderr, "getenv returned same pointer for %s and %s\n", mynames[j], mynames[k]);
+ ${cf_cv_main_return:-return}(1);
+ }
+ }
+ }
+ }
+ }
+ ${cf_cv_main_return:-return}(0);
+}
+],
+[cf_cv_consistent_getenv=yes],
+[cf_cv_consistent_getenv=no],
+[cf_cv_consistent_getenv=unknown])
+])
+
+if test "x$cf_cv_consistent_getenv" = xno
+then
+ AC_DEFINE(HAVE_CONSISTENT_GETENV,1,[Define to 1 if getenv repeatably returns the same value for a given name])
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_CHECK_GNAT_VERSION version: 2 updated: 2019/12/31 08:53:54
+dnl ---------------------
+AC_DEFUN([CF_CHECK_GNAT_VERSION],
+[
+AC_REQUIRE([CF_GNAT_VERSION])
+case $cf_cv_gnat_version in
+(3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|20[[0-9]][[0-9]])
+ cf_cv_prog_gnat_correct=yes
+ ;;
+(*)
+ AC_MSG_WARN(Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding.)
+ cf_cv_prog_gnat_correct=no
+ ;;
+esac
+])
+dnl ---------------------------------------------------------------------------
+dnl CF_CHECK_GPM_WGETCH version: 3 updated: 2017/01/21 11:06:25
dnl -------------------
dnl Check if GPM is already linked with curses. If so - and if the linkage
dnl is not "weak" - warn about this because it can create problems linking
@@ -882,7 +1169,7 @@ if test "$cross_compiling" != yes ; then
cat >conftest.$ac_ext <<CF_EOF
#include <gpm.h>
-int main()
+int main(void)
{
Gpm_Wgetch();
${cf_cv_main_return:-return}(0);
@@ -933,15 +1220,24 @@ else
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_WCHAR_H version: 1 updated: 2011/10/29 15:01:05
+dnl CF_CHECK_WCHAR_H version: 2 updated: 2017/01/21 11:06:25
dnl ----------------
dnl Check if wchar.h can be used, i.e., without defining _XOPEN_SOURCE_EXTENDED
AC_DEFUN([CF_CHECK_WCHAR_H],[
+AC_CHECK_HEADERS( \
+wchar.h \
+wctype.h \
+)
AC_CACHE_CHECK(if wchar.h can be used as is,cf_cv_wchar_h_okay,[
AC_TRY_COMPILE(
[
#include <stdlib.h>
+#ifdef HAVE_WCHAR_H
#include <wchar.h>
+#endif
+#ifdef HAVE_WCTYPE_H
+#include <wctype.h>
+#endif
],[
wint_t foo = 0;
int bar = iswpunct(foo)],
@@ -954,6 +1250,149 @@ then
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_CHECK_WCWIDTH_GRAPHICS version: 1 updated: 2015/12/19 17:47:56
+dnl -------------------------
+dnl Most "modern" terminal emulators are based to some degree on VT100, and
+dnl should support line-drawing. Even with Unicode. There is a problem.
+dnl
+dnl While most of the VT100 graphics characters were incorporated into Unicode,
+dnl all of those were combined into a page of useful graphics characters.
+dnl
+dnl So far, so good.
+dnl
+dnl However, while they are useful, there are other considerations. CJK
+dnl is (because of poor device resolution) often rendered as double-width
+dnl characters. So... for these generally-useful characters, what should
+dnl be the width (to make them consistent with adjacent characters)?
+dnl
+dnl The obvious choice would have been to make this locale-dependent, and use
+dnl wcwidth() to tell applications what the actual width is. That was too
+dnl obvious. Instead, we have a slew of "ambiguous-width" characters.
+dnl See for example
+dnl http://www.unicode.org/reports/tr11/tr11-29.html
+dnl http://www.cl.cam.ac.uk/~mgk25/ucs/scw-proposal.html
+dnl
+dnl The EastAsianWidth-6.2.0.txt file from the Unicode organization lists
+dnl more than 22,000 characters, with 1281 of those as ambiguous-width. For
+dnl instance, it lists half (44/96) of the Latin-1 characters as
+dnl ambiguous-width. Also, all of the box-characters at 0x2500 are ambiguous.
+dnl
+dnl What this means for the implementor is that on some systems wcwidth() can
+dnl give bad advice. On Solaris, some of the ambiguous widths are returned as
+dnl 1 (the Latin-1 characters), while others are returned as 2 (line-drawing
+dnl characters). These do not necessarily match the behavior of the terminal
+dnl emulator. xterm, for instance, does an optional startup check to find if
+dnl this problem (or similar) exists with the system's locale tables, rejecting
+dnl them if they are too unreliable.
+AC_DEFUN([CF_CHECK_WCWIDTH_GRAPHICS],[
+AC_CACHE_CHECK(if wcwidth agrees graphics are single-width, cf_cv_wcwidth_graphics,[
+cat >conftest.in <<CF_EOF
+- VT100 symbols
+0x250c upper left corner
+0x2514 lower left corner
+0x2510 upper right corner
+0x2518 lower right corner
+0x251c tee pointing left
+0x2524 tee pointing right
+0x2534 tee pointing up
+0x252c tee pointing down
+0x2500 horizontal line
+0x2502 vertical line
+0x253c large plus or crossover
+0x23ba scan line 1
+0x23bd scan line 9
+0x25c6 diamond
+0x2592 checker board (stipple)
+0x00b0 degree symbol
+0x00b1 plus/minus
+0x00b7 bullet
+- Teletype 5410v1 symbols
+0x2190 arrow pointing left
+0x2192 arrow pointing right
+0x2193 arrow pointing down
+0x2191 arrow pointing up
+0x2592 board of squares
+0x2603 lantern symbol
+0x25ae solid square block
+- these defaults were invented for ncurses
+0x23bb scan line 3
+0x23bc scan line 7
+0x2264 less-than-or-equal-to
+0x2265 greater-than-or-equal-to
+0x03c0 greek pi
+0x2260 not-equal
+0x00a3 pound-sterling symbol
+- thick-line-drawing
+0x250f upper left corner
+0x2517 lower left corner
+0x2513 upper right corner
+0x251b lower right corner
+0x2523 tee pointing left
+0x252b tee pointing right
+0x253b tee pointing up
+0x2533 tee pointing down
+0x2501 horizontal line
+0x2503 vertical line
+0x254b large plus or crossover
+- double-line-drawing
+0x2554 upper left corner
+0x255a lower left corner
+0x2557 upper right corner
+0x255d lower right corner
+0x2563 tee pointing left
+0x2560 tee pointing right
+0x2569 tee pointing up
+0x2566 tee pointing down
+0x2550 horizontal line
+0x2551 vertical line
+0x256c large plus or crossover
+CF_EOF
+AC_TRY_RUN([
+#include <locale.h>
+#include <stdio.h>
+#include <wchar.h>
+
+#define MY_LEN 80
+
+int
+main(void)
+{
+ FILE *fp;
+ int value;
+ char buffer[MY_LEN + 1];
+ char notes[MY_LEN + 1];
+ int totals = 0;
+ int passed = 0;
+
+ if (setlocale(LC_ALL, "en_US.UTF8") ||
+ setlocale(LC_ALL, "en_US.UTF-8") ||
+ setlocale(LC_ALL, "en_US.utf8") ||
+ setlocale(LC_ALL, "en_US.utf-8")) {
+ if ((fp = fopen("conftest.in", "r")) != 0) {
+ while (fgets(buffer, MY_LEN, fp) != 0) {
+ if (*buffer == '-') {
+ fprintf(stderr, "\t%s", buffer);
+ } else if (sscanf(buffer, "%x %s", &value, notes) == 2) {
+ ++totals;
+ if (wcwidth(value) == 1)
+ ++passed;
+ fprintf(stderr, "%d\t%s", wcwidth(value), buffer);
+ } else {
+ fprintf(stderr, "?\t%s", buffer);
+ }
+ }
+ }
+ }
+ fprintf(stderr, "%d/%d passed wcwidth/graphics check\n", passed, totals);
+ return (totals == passed) ? 0 : 1;
+}
+],
+[cf_cv_wcwidth_graphics=yes],
+[cf_cv_wcwidth_graphics=no],
+[cf_cv_wcwidth_graphics=unknown])
+])
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_CLANG_COMPILER version: 2 updated: 2013/11/19 19:23:35
dnl -----------------
dnl Check if the given compiler is really clang. clang's C driver defines
@@ -987,7 +1426,67 @@ cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_CPP_PARAM_INIT version: 6 updated: 2012/10/06 17:56:13
+dnl CF_CONST_X_STRING version: 3 updated: 2020/01/11 18:39:22
+dnl -----------------
+dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
+dnl character-strings.
+dnl
+dnl It is ambiguous because the specification accommodated the pre-ANSI
+dnl compilers bundled by more than one vendor in lieu of providing a standard C
+dnl compiler other than by costly add-ons. Because of this, the specification
+dnl did not take into account the use of const for telling the compiler that
+dnl string literals would be in readonly memory.
+dnl
+dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to
+dnl let the compiler decide how to represent Xt's strings which were #define'd.
+dnl That does not solve the problem of using the block of Xt's strings which
+dnl are compiled into the library (and is less efficient than one might want).
+dnl
+dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both
+dnl when compiling the library and compiling using the library, to tell the
+dnl compiler that String is const.
+AC_DEFUN([CF_CONST_X_STRING],
+[
+AC_REQUIRE([AC_PATH_XTRA])
+
+CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING])
+
+AC_TRY_COMPILE(
+[
+#include <stdlib.h>
+#include <X11/Intrinsic.h>
+],
+[String foo = malloc(1)],[
+
+AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
+ AC_TRY_COMPILE(
+ [
+#define _CONST_X_STRING /* X11R7.8 (perhaps) */
+#undef XTSTRINGDEFINES /* X11R5 and later */
+#include <stdlib.h>
+#include <X11/Intrinsic.h>
+ ],[String foo = malloc(1); *foo = 0],[
+ cf_cv_const_x_string=no
+ ],[
+ cf_cv_const_x_string=yes
+ ])
+])
+
+CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING])
+
+case $cf_cv_const_x_string in
+(no)
+ CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES)
+ ;;
+(*)
+ CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING)
+ ;;
+esac
+
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_CPP_PARAM_INIT version: 7 updated: 2017/01/21 11:06:25
dnl -----------------
dnl Check if the C++ compiler accepts duplicate parameter initialization. This
dnl is a late feature for the standard and is not in some recent compilers
@@ -1011,7 +1510,7 @@ TEST::TEST(int x = 1) // some compilers do not like second initializer
{
value = x;
}
-int main() { }
+int main(void) { }
],
[cf_cv_cpp_param_init=yes],
[cf_cv_cpp_param_init=no],
@@ -1078,23 +1577,23 @@ fi
test "$cf_cv_cpp_static_cast" = yes && AC_DEFINE(CPP_HAS_STATIC_CAST,1,[Define to 1 if C++ has static_cast])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CXX_AR_FLAGS version: 1 updated: 2011/10/29 08:35:34
+dnl CF_CXX_AR_FLAGS version: 2 updated: 2015/04/17 21:13:04
dnl ---------------
dnl Setup special archiver flags for given compilers.
AC_DEFUN([CF_CXX_AR_FLAGS],[
CXX_AR='$(AR)'
CXX_ARFLAGS='$(ARFLAGS)'
- case $cf_cv_system_name in #(vi
- irix*) #(vi
+ case $cf_cv_system_name in
+ (irix*)
if test "$GXX" != yes ; then
CXX_AR='$(CXX)'
CXX_ARFLAGS='-ar -o'
fi
;;
- sco3.2v5*) #(vi
+ (sco3.2v5*)
CXXLDFLAGS="-u main"
;;
- solaris2*)
+ (solaris2*)
if test "$GXX" != yes ; then
CXX_AR='$(CXX)'
CXX_ARFLAGS='-xar -o'
@@ -1126,37 +1625,38 @@ cerr << "testing" << endl;
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_C_INLINE version: 4 updated: 2012/06/16 14:55:39
+dnl CF_C_INLINE version: 6 updated: 2019/09/07 13:38:36
dnl -----------
dnl Check if the C compiler supports "inline".
dnl $1 is the name of a shell variable to set if inline is supported
dnl $2 is the threshold for gcc 4.x's option controlling maximum inline size
AC_DEFUN([CF_C_INLINE],[
+AC_REQUIRE([CF_GCC_VERSION])
AC_C_INLINE
$1=
if test "$ac_cv_c_inline" != no ; then
- $1=inline
- if test "$INTEL_COMPILER" = yes
- then
- :
- elif test "$CLANG_COMPILER" = yes
- then
- :
- elif test "$GCC" = yes
- then
- AC_CACHE_CHECK(if $CC supports options to tune inlining,cf_cv_gcc_inline,[
- cf_save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS --param max-inline-insns-single=$2"
- AC_TRY_COMPILE([inline int foo(void) { return 1; }],
- [${cf_cv_main_return:-return} foo()],
- [cf_cv_gcc_inline=yes],
- [cf_cv_gcc_inline=no])
- CFLAGS=$cf_save_CFLAGS
- ])
- if test "$cf_cv_gcc_inline" = yes ; then
- CF_ADD_CFLAGS([--param max-inline-insns-single=$2])
- fi
- fi
+ $1=inline
+ if test "$INTEL_COMPILER" = yes
+ then
+ :
+ elif test "$CLANG_COMPILER" = yes
+ then
+ :
+ elif test "$GCC" = yes
+ then
+ AC_CACHE_CHECK(if $CC supports options to tune inlining,cf_cv_gcc_inline,[
+ cf_save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS --param max-inline-insns-single=$2"
+ AC_TRY_COMPILE([inline int foo(void) { return 1; }],
+ [${cf_cv_main_return:-return} foo()],
+ [cf_cv_gcc_inline=yes],
+ [cf_cv_gcc_inline=no])
+ CFLAGS=$cf_save_CFLAGS
+ ])
+ if test "$cf_cv_gcc_inline" = yes ; then
+ CF_ADD_CFLAGS([--param max-inline-insns-single=$2])
+ fi
+ fi
fi
AC_SUBST($1)
])dnl
@@ -1187,7 +1687,7 @@ done
AC_SUBST(DIRS_TO_MAKE)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_DISABLE_ECHO version: 12 updated: 2012/10/06 16:30:28
+dnl CF_DISABLE_ECHO version: 13 updated: 2015/04/18 08:56:57
dnl ---------------
dnl You can always use "make -n" to see the actual options, but it's hard to
dnl pick out/analyze warning messages when the compile-line is long.
@@ -1204,17 +1704,17 @@ AC_MSG_CHECKING(if you want to see long compiling messages)
CF_ARG_DISABLE(echo,
[ --disable-echo do not display "compiling" commands],
[
- ECHO_LT='--silent'
- ECHO_LD='@echo linking [$]@;'
- RULE_CC='@echo compiling [$]<'
- SHOW_CC='@echo compiling [$]@'
- ECHO_CC='@'
+ ECHO_LT='--silent'
+ ECHO_LD='@echo linking [$]@;'
+ RULE_CC='@echo compiling [$]<'
+ SHOW_CC='@echo compiling [$]@'
+ ECHO_CC='@'
],[
- ECHO_LT=''
- ECHO_LD=''
- RULE_CC=''
- SHOW_CC=''
- ECHO_CC=''
+ ECHO_LT=''
+ ECHO_LD=''
+ RULE_CC=''
+ SHOW_CC=''
+ ECHO_CC=''
])
AC_MSG_RESULT($enableval)
AC_SUBST(ECHO_LT)
@@ -1224,6 +1724,17 @@ AC_SUBST(SHOW_CC)
AC_SUBST(ECHO_CC)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_DISABLE_GNAT_PROJECTS version: 1 updated: 2014/06/01 11:34:00
+dnl ------------------------
+AC_DEFUN([CF_DISABLE_GNAT_PROJECTS],[
+AC_MSG_CHECKING(if we want to use GNAT projects)
+CF_ARG_DISABLE(gnat-projects,
+ [ --disable-gnat-projects test: disable GNAT projects even if usable],
+ [enable_gnat_projects=no],
+ [enable_gnat_projects=yes])
+AC_MSG_RESULT($enable_gnat_projects)
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_DISABLE_LEAKS version: 7 updated: 2012/10/02 20:55:03
dnl ----------------
dnl Combine no-leak checks with the libraries or tools that are used for the
@@ -1247,7 +1758,7 @@ if test "$with_no_leaks" = yes ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_DISABLE_LIBTOOL_VERSION version: 1 updated: 2010/05/15 15:45:59
+dnl CF_DISABLE_LIBTOOL_VERSION version: 3 updated: 2015/04/17 21:13:04
dnl --------------------------
dnl Check if we should use the libtool 1.5 feature "-version-number" instead of
dnl the older "-version-info" feature. The newer feature allows us to use
@@ -1266,8 +1777,25 @@ if test "$cf_libtool_version" = yes ; then
LIBTOOL_VERSION="-version-number"
else
LIBTOOL_VERSION="-version-info"
+ case "x$VERSION" in
+ (x)
+ AC_MSG_WARN(VERSION was not set)
+ ;;
+ (x*.*.*)
+ ABI_VERSION="$VERSION"
+ CF_VERBOSE(ABI_VERSION: $ABI_VERSION)
+ ;;
+ (x*:*:*)
+ ABI_VERSION=`echo "$VERSION" | sed -e 's/:/./g'`
+ CF_VERBOSE(ABI_VERSION: $ABI_VERSION)
+ ;;
+ (*)
+ AC_MSG_WARN(unexpected VERSION value: $VERSION)
+ ;;
+ esac
fi
+AC_SUBST(ABI_VERSION)
AC_SUBST(LIBTOOL_VERSION)
])dnl
dnl ---------------------------------------------------------------------------
@@ -1290,7 +1818,7 @@ if test "$cf_disable_rpath_hack" = no ; then
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_ENABLE_PC_FILES version: 9 updated: 2012/08/04 13:59:54
+dnl CF_ENABLE_PC_FILES version: 13 updated: 2015/11/01 05:27:39
dnl ------------------
dnl This is the "--enable-pc-files" option, which is available if there is a
dnl pkg-config configuration on the local machine.
@@ -1298,20 +1826,34 @@ AC_DEFUN([CF_ENABLE_PC_FILES],[
AC_REQUIRE([CF_PKG_CONFIG])
AC_REQUIRE([CF_WITH_PKG_CONFIG_LIBDIR])
-if test "$PKG_CONFIG" != none ; then
+if test "x$PKG_CONFIG" != xnone
+then
AC_MSG_CHECKING(if we should install .pc files for $PKG_CONFIG)
- AC_ARG_ENABLE(pc-files,
- [ --enable-pc-files generate and install .pc files for pkg-config],
- [enable_pc_files=$enableval],
- [enable_pc_files=no])
- AC_MSG_RESULT($enable_pc_files)
- if test "$enable_pc_files" != no
- then
+else
+ AC_MSG_CHECKING(if we should install .pc files)
+fi
+
+AC_ARG_ENABLE(pc-files,
+ [ --enable-pc-files generate and install .pc files for pkg-config],
+ [enable_pc_files=$enableval],
+ [enable_pc_files=no])
+AC_MSG_RESULT($enable_pc_files)
+
+if test "x$enable_pc_files" != xno
+then
+ MAKE_PC_FILES=
+ case "x$PKG_CONFIG_LIBDIR" in
+ (xno|xyes)
+ AC_MSG_WARN(no PKG_CONFIG_LIBDIR was found)
+ ;;
+ (*)
CF_PATH_SYNTAX(PKG_CONFIG_LIBDIR)
- fi
+ ;;
+ esac
else
- enable_pc_files=no
+ MAKE_PC_FILES="#"
fi
+AC_SUBST(MAKE_PC_FILES)
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_ENABLE_RPATH version: 2 updated: 2010/03/27 18:39:42
@@ -1328,7 +1870,7 @@ AC_ARG_ENABLE(rpath,
AC_MSG_RESULT($cf_cv_enable_rpath)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ENABLE_STRING_HACKS version: 3 updated: 2013/01/26 16:26:12
+dnl CF_ENABLE_STRING_HACKS version: 5 updated: 2016/10/08 17:34:11
dnl ----------------------
dnl On a few platforms, the compiler and/or loader nags with untruthful
dnl comments stating that "most" uses of strcat/strcpy/sprintf are incorrect,
@@ -1355,7 +1897,16 @@ AC_MSG_RESULT($with_string_hacks)
if test "x$with_string_hacks" = "xyes"; then
AC_DEFINE(USE_STRING_HACKS,1,[Define to 1 to work around bogus compiler/loader warnings])
AC_MSG_WARN(enabling string-hacks to work around bogus compiler/loader warnings)
- AC_CHECK_FUNCS( strlcat strlcpy snprintf )
+ AC_CHECK_FUNC(strlcat,[
+ AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
+ ],[
+ AC_CHECK_LIB(bsd,strlcat,[
+ CF_ADD_LIB(bsd)
+ AC_CHECK_HEADERS(bsd/string.h)
+ AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
+ ])
+ ])
+ AC_CHECK_FUNCS( strlcpy snprintf )
fi
])dnl
dnl ---------------------------------------------------------------------------
@@ -1403,7 +1954,7 @@ AC_MSG_RESULT($cf_result)
CXXFLAGS="$cf_save_CXXFLAGS"
])
dnl ---------------------------------------------------------------------------
-dnl CF_FIND_LINKAGE version: 19 updated: 2010/05/29 16:31:02
+dnl CF_FIND_LINKAGE version: 21 updated: 2018/06/20 20:23:13
dnl ---------------
dnl Find a library (specifically the linkage used in the code fragment),
dnl searching for it if it is not already in the library path.
@@ -1451,73 +2002,74 @@ AC_TRY_LINK([$1],[$2],[
cf_cv_find_linkage_$3=no
LIBS="$cf_save_LIBS"
- CF_VERBOSE(find linkage for $3 library)
- CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)])
-
- cf_save_CPPFLAGS="$CPPFLAGS"
- cf_test_CPPFLAGS="$CPPFLAGS"
-
- CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6]))
- for cf_cv_header_path_$3 in $cf_search
- do
- if test -d $cf_cv_header_path_$3 ; then
- CF_VERBOSE(... testing $cf_cv_header_path_$3)
- CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_$3"
- AC_TRY_COMPILE([$1],[$2],[
- CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3)
- cf_cv_find_linkage_$3=maybe
- cf_test_CPPFLAGS="$CPPFLAGS"
- break],[
- CPPFLAGS="$cf_save_CPPFLAGS"
- ])
- fi
- done
-
- if test "$cf_cv_find_linkage_$3" = maybe ; then
-
- CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)])
-
- cf_save_LIBS="$LIBS"
- cf_save_LDFLAGS="$LDFLAGS"
-
- ifelse([$6],,,[
- CPPFLAGS="$cf_test_CPPFLAGS"
- LIBS="-l$3 $7 $cf_save_LIBS"
- AC_TRY_LINK([$1],[$2],[
- CF_VERBOSE(... found $3 library in system)
- cf_cv_find_linkage_$3=yes])
- CPPFLAGS="$cf_save_CPPFLAGS"
- LIBS="$cf_save_LIBS"
- ])
-
- if test "$cf_cv_find_linkage_$3" != yes ; then
- CF_LIBRARY_PATH(cf_search,$3)
- for cf_cv_library_path_$3 in $cf_search
- do
- if test -d $cf_cv_library_path_$3 ; then
- CF_VERBOSE(... testing $cf_cv_library_path_$3)
- CPPFLAGS="$cf_test_CPPFLAGS"
- LIBS="-l$3 $7 $cf_save_LIBS"
- LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3"
- AC_TRY_LINK([$1],[$2],[
- CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3)
- cf_cv_find_linkage_$3=yes
- cf_cv_library_file_$3="-l$3"
- break],[
- CPPFLAGS="$cf_save_CPPFLAGS"
- LIBS="$cf_save_LIBS"
- LDFLAGS="$cf_save_LDFLAGS"
- ])
- fi
- done
- CPPFLAGS="$cf_save_CPPFLAGS"
- LDFLAGS="$cf_save_LDFLAGS"
- fi
-
- else
- cf_cv_find_linkage_$3=no
- fi
- ],$7)
+ CF_VERBOSE(find linkage for $3 library)
+ CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)])
+
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_test_CPPFLAGS="$CPPFLAGS"
+
+ CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6]))
+ for cf_cv_header_path_$3 in $cf_search
+ do
+ if test -d $cf_cv_header_path_$3 ; then
+ CF_VERBOSE(... testing $cf_cv_header_path_$3)
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ CF_APPEND_TEXT(CPPFLAGS,-I$cf_cv_header_path_$3)
+ AC_TRY_COMPILE([$1],[$2],[
+ CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3)
+ cf_cv_find_linkage_$3=maybe
+ cf_test_CPPFLAGS="$CPPFLAGS"
+ break],[
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ ])
+ fi
+ done
+
+ if test "$cf_cv_find_linkage_$3" = maybe ; then
+
+ CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)])
+
+ cf_save_LIBS="$LIBS"
+ cf_save_LDFLAGS="$LDFLAGS"
+
+ ifelse([$6],,,[
+ CPPFLAGS="$cf_test_CPPFLAGS"
+ LIBS="-l$3 $7 $cf_save_LIBS"
+ AC_TRY_LINK([$1],[$2],[
+ CF_VERBOSE(... found $3 library in system)
+ cf_cv_find_linkage_$3=yes])
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ ])
+
+ if test "$cf_cv_find_linkage_$3" != yes ; then
+ CF_LIBRARY_PATH(cf_search,$3)
+ for cf_cv_library_path_$3 in $cf_search
+ do
+ if test -d $cf_cv_library_path_$3 ; then
+ CF_VERBOSE(... testing $cf_cv_library_path_$3)
+ CPPFLAGS="$cf_test_CPPFLAGS"
+ LIBS="-l$3 $7 $cf_save_LIBS"
+ LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3"
+ AC_TRY_LINK([$1],[$2],[
+ CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3)
+ cf_cv_find_linkage_$3=yes
+ cf_cv_library_file_$3="-l$3"
+ break],[
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ LDFLAGS="$cf_save_LDFLAGS"
+ ])
+ fi
+ done
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LDFLAGS="$cf_save_LDFLAGS"
+ fi
+
+ else
+ cf_cv_find_linkage_$3=no
+ fi
+ ],$7)
])
LIBS="$cf_save_LIBS"
@@ -1533,18 +2085,52 @@ ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5])
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_FIXUP_ADAFLAGS version: 1 updated: 2012/03/31 18:48:10
+dnl CF_FIND_SUB_INCDIR version: 2 updated: 2015/04/17 21:13:04
+dnl ------------------
+dnl Find an include-directory with the given leaf-name. This is useful for
+dnl example with FreeBSD ports, which use this convention to distinguish
+dnl different versions of the same port.
+AC_DEFUN([CF_FIND_SUB_INCDIR],[
+ CF_SUBDIR_PATH(cf_search,$1,include)
+ for cf_item in $cf_search
+ do
+ case $cf_item in
+ (*/$1)
+ CF_ADD_INCDIR($cf_item)
+ ;;
+ esac
+ done
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_FIND_SUB_LIBDIR version: 2 updated: 2015/04/17 21:13:04
+dnl ------------------
+dnl Find a library-directory with the given leaf-name. This is useful for
+dnl example with FreeBSD ports, which use this convention to distinguish
+dnl different versions of the same port.
+AC_DEFUN([CF_FIND_SUB_LIBDIR],[
+ CF_SUBDIR_PATH(cf_search,$1,lib)
+ for cf_item in $cf_search
+ do
+ case $cf_item in
+ (*/$1)
+ CF_ADD_LIBDIR($cf_item)
+ ;;
+ esac
+ done
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_FIXUP_ADAFLAGS version: 2 updated: 2015/04/17 21:13:04
dnl -----------------
dnl make ADAFLAGS consistent with CFLAGS
AC_DEFUN([CF_FIXUP_ADAFLAGS],[
AC_MSG_CHECKING(optimization options for ADAFLAGS)
case "$CFLAGS" in
- *-g*)
+ (*-g*)
CF_ADD_ADAFLAGS(-g)
;;
esac
case "$CFLAGS" in
- *-O*)
+ (*-O*)
cf_O_flag=`echo "$CFLAGS" |sed -e 's/^.*-O/-O/' -e 's/[[ ]].*//'`
CF_ADD_ADAFLAGS($cf_O_flag)
;;
@@ -1552,6 +2138,49 @@ AC_DEFUN([CF_FIXUP_ADAFLAGS],[
AC_MSG_RESULT($ADAFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_FOPEN_BIN_R version: 2 updated: 2019/12/31 08:53:54
+dnl --------------
+dnl Check if fopen works when the "b" (binary) flag is added to the mode
+dnl parameter. POSIX ignores the "b", which c89 specified. Some very old
+dnl systems do not accept it.
+AC_DEFUN([CF_FOPEN_BIN_R],[
+AC_CACHE_CHECK(if fopen accepts explicit binary mode,cf_cv_fopen_bin_r,[
+ AC_TRY_RUN([
+#include <stdio.h>
+int main(void) {
+ FILE *fp = fopen("conftest.tmp", "wb");
+ int rc = 0;
+ if (fp != 0) {
+ int p, q;
+ for (p = 0; p < 256; ++p) {
+ fputc(p, fp);
+ }
+ fclose(fp);
+ fp = fopen("conftest.tmp", "rb");
+ if (fp != 0) {
+ for (p = 0; p < 256; ++p) {
+ q = fgetc(fp);
+ if (q != p) {
+ rc = 1;
+ break;
+ }
+ }
+ } else {
+ rc = 1;
+ }
+ } else {
+ rc = 1;
+ }
+ ${cf_cv_main_return:-return} (rc);
+}
+],
+ [cf_cv_fopen_bin_r=yes],
+ [cf_cv_fopen_bin_r=no],
+ [cf_cv_fopen_bin_r=unknown])
+])
+test "x$cf_cv_fopen_bin_r" != xno && AC_DEFINE(USE_FOPEN_BIN_R,1,[Define to 1 if fopen accepts explicit binary mode])
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_FORGET_TOOL version: 1 updated: 2013/04/06 18:03:09
dnl --------------
dnl Forget that we saw the given tool.
@@ -1561,7 +2190,7 @@ unset ac_ct_$1
unset $1
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_DLSYM version: 3 updated: 2012/10/06 11:17:15
+dnl CF_FUNC_DLSYM version: 4 updated: 2015/09/12 14:46:44
dnl -------------
dnl Test for dlsym() and related functions, as well as libdl.
dnl
@@ -1578,7 +2207,7 @@ AC_CHECK_LIB(dl,dlsym,[
cf_have_libdl=yes])])
if test "$cf_have_dlsym" = yes ; then
- test "$cf_have_libdl" = yes && CF_ADD_LIB(dl)
+ test "$cf_have_libdl" = yes && { CF_ADD_LIB(dl) }
AC_MSG_CHECKING(whether able to link to dl*() functions)
AC_TRY_LINK([#include <dlfcn.h>],[
@@ -1596,7 +2225,7 @@ else
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_MEMMOVE version: 8 updated: 2012/10/04 20:12:20
+dnl CF_FUNC_MEMMOVE version: 9 updated: 2017/01/21 11:06:25
dnl ---------------
dnl Check for memmove, or a bcopy that can handle overlapping copy. If neither
dnl is found, add our own version of memmove to the list of objects.
@@ -1606,7 +2235,7 @@ AC_CHECK_FUNC(memmove,,[
AC_CHECK_FUNC(bcopy,[
AC_CACHE_CHECK(if bcopy does overlapping moves,cf_cv_good_bcopy,[
AC_TRY_RUN([
-int main() {
+int main(void) {
static char data[] = "abcdefghijklmnopqrstuwwxyz";
char temp[40];
bcopy(data, temp, sizeof(data));
@@ -1627,7 +2256,7 @@ int main() {
fi
])])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_NANOSLEEP version: 4 updated: 2012/10/06 17:56:13
+dnl CF_FUNC_NANOSLEEP version: 5 updated: 2017/01/21 11:06:25
dnl -----------------
dnl Check for existence of workable nanosleep() function. Some systems, e.g.,
dnl AIX 4.x, provide a non-working version.
@@ -1642,7 +2271,7 @@ AC_TRY_RUN([
#include <sys/time.h>
#endif
-int main() {
+int main(void) {
struct timespec ts1, ts2;
int code;
ts1.tv_sec = 0;
@@ -1661,7 +2290,7 @@ int main() {
test "$cf_cv_func_nanosleep" = "yes" && AC_DEFINE(HAVE_NANOSLEEP,1,[Define to 1 if we have nanosleep()])
])
dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_OPENPTY version: 3 updated: 2010/05/29 16:31:02
+dnl CF_FUNC_OPENPTY version: 5 updated: 2015/09/12 14:46:50
dnl ---------------
dnl Check for openpty() function, along with <pty.h> header. It may need the
dnl "util" library as well.
@@ -1669,31 +2298,32 @@ AC_DEFUN([CF_FUNC_OPENPTY],
[
AC_CHECK_LIB(util,openpty,cf_cv_lib_util=yes,cf_cv_lib_util=no)
AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[
- cf_save_LIBS="$LIBS"
- test $cf_cv_lib_util = yes && CF_ADD_LIB(util)
- for cf_header in pty.h libutil.h util.h
- do
- AC_TRY_LINK([
+ cf_save_LIBS="$LIBS"
+ test $cf_cv_lib_util = yes && { CF_ADD_LIB(util) }
+ for cf_header in pty.h libutil.h util.h
+ do
+ AC_TRY_LINK([
#include <$cf_header>
],[
- int x = openpty((int *)0, (int *)0, (char *)0,
- (struct termios *)0, (struct winsize *)0);
+ int x = openpty((int *)0, (int *)0, (char *)0,
+ (struct termios *)0, (struct winsize *)0);
],[
- cf_cv_func_openpty=$cf_header
- break
+ cf_cv_func_openpty=$cf_header
+ break
],[
- cf_cv_func_openpty=no
+ cf_cv_func_openpty=no
])
- done
- LIBS="$cf_save_LIBS"
+ done
+ LIBS="$cf_save_LIBS"
])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_POLL version: 8 updated: 2012/10/04 05:24:07
+dnl CF_FUNC_POLL version: 9 updated: 2015/10/10 13:27:32
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],[
+tty 2>&1 >/dev/null || { AC_CHECK_FUNCS(posix_openpt) }
AC_CACHE_CHECK(if poll really works,cf_cv_working_poll,[
AC_TRY_RUN([
#include <stdlib.h>
@@ -1705,7 +2335,7 @@ AC_TRY_RUN([
#else
#include <sys/poll.h>
#endif
-int main() {
+int main(void) {
struct pollfd myfds;
int ret;
@@ -1725,6 +2355,11 @@ int main() {
if (!isatty(fd)) {
fd = open("/dev/tty", 2); /* O_RDWR */
}
+#ifdef HAVE_POSIX_OPENPT
+ if (fd < 0) {
+ fd = posix_openpt(O_RDWR);
+ }
+#endif
if (fd >= 0) {
/* also check with standard input */
@@ -1773,7 +2408,7 @@ tcgetattr(1, &foo);],
test "$cf_cv_have_tcgetattr" = yes && AC_DEFINE(HAVE_TCGETATTR,1,[Define to 1 if we have tcgetattr])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_VSSCANF version: 4 updated: 2012/10/06 17:56:13
+dnl CF_FUNC_VSSCANF version: 6 updated: 2015/04/18 08:56:57
dnl ---------------
dnl Check for vsscanf() function, which is in c9x but generally not in earlier
dnl versions of C. It is in the GNU C library, and can often be simulated by
@@ -1789,36 +2424,36 @@ AC_TRY_LINK([
AC_TRY_LINK([
#include <stdarg.h>
#include <stdio.h>],[
- FILE strbuf;
- char *str = "from";
-
- strbuf._flag = _IOREAD;
- strbuf._ptr = strbuf._base = (unsigned char *) str;
- strbuf._cnt = strlen(str);
- strbuf._file = _NFILE;
- return (vfscanf(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=vfscanf],[
+ FILE strbuf;
+ char *str = "from";
+
+ strbuf._flag = _IOREAD;
+ strbuf._ptr = strbuf._base = (unsigned char *) str;
+ strbuf._cnt = strlen(str);
+ strbuf._file = _NFILE;
+ return (vfscanf(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=vfscanf],[
AC_TRY_LINK([
#include <stdarg.h>
#include <stdio.h>],[
- FILE strbuf;
- char *str = "from";
-
- strbuf._flag = _IOREAD;
- strbuf._ptr = strbuf._base = (unsigned char *) str;
- strbuf._cnt = strlen(str);
- strbuf._file = _NFILE;
- return (_doscan(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=_doscan],[
+ FILE strbuf;
+ char *str = "from";
+
+ strbuf._flag = _IOREAD;
+ strbuf._ptr = strbuf._base = (unsigned char *) str;
+ strbuf._cnt = strlen(str);
+ strbuf._file = _NFILE;
+ return (_doscan(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=_doscan],[
cf_cv_func_vsscanf=no])])])])
-case $cf_cv_func_vsscanf in #(vi
-vsscanf) AC_DEFINE(HAVE_VSSCANF,1,[Define to 1 if we have vsscanf]);; #(vi
-vfscanf) AC_DEFINE(HAVE_VFSCANF,1,[Define to 1 if we have vfscanf]);; #(vi
-_doscan) AC_DEFINE(HAVE__DOSCAN,1,[Define to 1 if we have _doscan]);;
+case $cf_cv_func_vsscanf in
+(vsscanf) AC_DEFINE(HAVE_VSSCANF,1,[Define to 1 if we have vsscanf]);;
+(vfscanf) AC_DEFINE(HAVE_VFSCANF,1,[Define to 1 if we have vfscanf]);;
+(_doscan) AC_DEFINE(HAVE__DOSCAN,1,[Define to 1 if we have _doscan]);;
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GCC_ATTRIBUTES version: 16 updated: 2012/10/02 20:55:03
+dnl CF_GCC_ATTRIBUTES version: 17 updated: 2015/04/12 15:39:00
dnl -----------------
dnl Test for availability of useful gcc __attribute__ directives to quiet
dnl compiler warnings. Though useful, not all are supported -- and contrary
@@ -1872,20 +2507,20 @@ EOF
cf_directive="__attribute__(($cf_attribute))"
echo "checking for $CC $cf_directive" 1>&AC_FD_CC
- case $cf_attribute in #(vi
- printf) #(vi
+ case $cf_attribute in
+ (printf)
cf_printf_attribute=yes
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE 1
EOF
;;
- scanf) #(vi
+ (scanf)
cf_scanf_attribute=yes
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE 1
EOF
;;
- *) #(vi
+ (*)
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE $cf_directive
EOF
@@ -1895,11 +2530,11 @@ EOF
if AC_TRY_EVAL(ac_compile); then
test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
cat conftest.h >>confdefs.h
- case $cf_attribute in #(vi
- noreturn) #(vi
+ case $cf_attribute in
+ (noreturn)
AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc])
;;
- printf) #(vi
+ (printf)
cf_value='/* nothing */'
if test "$cf_printf_attribute" != no ; then
cf_value='__attribute__((format(printf,fmt,var)))'
@@ -1907,7 +2542,7 @@ EOF
fi
AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc])
;;
- scanf) #(vi
+ (scanf)
cf_value='/* nothing */'
if test "$cf_scanf_attribute" != no ; then
cf_value='__attribute__((format(scanf,fmt,var)))'
@@ -1915,7 +2550,7 @@ EOF
fi
AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc])
;;
- unused) #(vi
+ (unused)
AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc])
;;
esac
@@ -1928,9 +2563,10 @@ rm -rf conftest*
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GCC_VERSION version: 7 updated: 2012/10/18 06:46:33
+dnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36
dnl --------------
-dnl Find version of gcc
+dnl Find version of gcc, and (because icc/clang pretend to be gcc without being
+dnl compatible), attempt to determine if icc/clang is actually used.
AC_DEFUN([CF_GCC_VERSION],[
AC_REQUIRE([AC_PROG_CC])
GCC_VERSION=none
@@ -1940,14 +2576,17 @@ if test "$GCC" = yes ; then
test -z "$GCC_VERSION" && GCC_VERSION=unknown
AC_MSG_RESULT($GCC_VERSION)
fi
+CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
+CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GCC_WARNINGS version: 31 updated: 2013/11/19 19:23:35
+dnl CF_GCC_WARNINGS version: 37 updated: 2020/01/05 20:04:12
dnl ---------------
dnl Check if the compiler supports useful warning options. There's a few that
dnl we don't use, simply because they're too noisy:
dnl
dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
+dnl -Winline (usually not worthwhile)
dnl -Wredundant-decls (system headers make this too noisy)
dnl -Wtraditional (combines too many unrelated messages, only a few useful)
dnl -Wwrite-strings (too noisy, but should review occasionally). This
@@ -1964,14 +2603,11 @@ dnl
AC_DEFUN([CF_GCC_WARNINGS],
[
AC_REQUIRE([CF_GCC_VERSION])
-CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
-CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
-
+if test "x$have_x" = xyes; then CF_CONST_X_STRING fi
cat > conftest.$ac_ext <<EOF
#line __oline__ "${as_me:-configure}"
int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
EOF
-
if test "$INTEL_COMPILER" = yes
then
# The "-wdXXX" options suppress warnings:
@@ -2006,8 +2642,7 @@ then
fi
done
CFLAGS="$cf_save_CFLAGS"
-
-elif test "$GCC" = yes
+elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
then
AC_CHECKING([for $CC warning options])
cf_save_CFLAGS="$CFLAGS"
@@ -2029,25 +2664,22 @@ then
Wpointer-arith \
Wshadow \
Wstrict-prototypes \
- Wundef $cf_gcc_warnings $cf_warn_CONST $1
+ Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1
do
CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
if AC_TRY_EVAL(ac_compile); then
test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
- case $cf_opt in #(vi
- Wcast-qual) #(vi
- CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES"
- ;;
- Winline) #(vi
+ case $cf_opt in
+ (Winline)
case $GCC_VERSION in
- [[34]].*)
+ ([[34]].*)
CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
continue;;
esac
;;
- Wpointer-arith) #(vi
+ (Wpointer-arith)
case $GCC_VERSION in
- [[12]].*)
+ ([[12]].*)
CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
continue;;
esac
@@ -2063,7 +2695,7 @@ rm -rf conftest*
AC_SUBST(EXTRA_CFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GETOPT_HEADER version: 5 updated: 2012/10/06 16:39:58
+dnl CF_GETOPT_HEADER version: 6 updated: 2014/07/22 14:45:54
dnl ----------------
dnl Check for getopt's variables which are commonly defined in stdlib.h,
dnl unistd.h or (nonstandard) in getopt.h
@@ -2082,22 +2714,36 @@ AC_TRY_COMPILE([
done
])
if test $cf_cv_getopt_header != none ; then
- AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if we need to include getopt.h])
+ AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if getopt variables are declared in header])
+fi
+if test $cf_cv_getopt_header = getopt.h ; then
+ AC_DEFINE(NEED_GETOPT_H,1,[Define to 1 if we must include getopt.h])
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GNAT_GENERICS version: 2 updated: 2011/03/23 20:24:41
+dnl CF_GNATPREP_OPT_T version: 1 updated: 2014/08/02 18:37:25
+dnl -----------------
+AC_DEFUN([CF_GNATPREP_OPT_T],[
+AC_CACHE_CHECK(if GNATPREP supports -T option,cf_cv_gnatprep_opt_t,[
+cf_cv_gnatprep_opt_t=no
+gnatprep -T 2>/dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes
+])
+test "$cf_cv_gnatprep_opt_t" = yes && GNATPREP_OPTS="-T $GNATPREP_OPTS"
+AC_SUBST(GNATPREP_OPTS)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_GNAT_GENERICS version: 4 updated: 2019/12/31 08:53:54
dnl ----------------
AC_DEFUN([CF_GNAT_GENERICS],
[
AC_REQUIRE([CF_GNAT_VERSION])
AC_MSG_CHECKING(if GNAT supports generics)
-case $cf_gnat_version in #(vi
-3.[[1-9]]*|[[4-9]].*) #(vi
+case $cf_cv_gnat_version in
+(3.[[1-9]]*|[[4-9]].*)
cf_gnat_generics=yes
;;
-*)
+(*)
cf_gnat_generics=no
;;
esac
@@ -2116,59 +2762,34 @@ AC_SUBST(cf_compile_generics)
AC_SUBST(cf_generic_objects)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GNAT_PRAGMA_UNREF version: 1 updated: 2010/06/19 15:22:18
-dnl --------------------
-dnl Check if the gnat pragma "Unreferenced" works.
-AC_DEFUN([CF_GNAT_PRAGMA_UNREF],[
-AC_CACHE_CHECK(if GNAT pragma Unreferenced works,cf_cv_pragma_unreferenced,[
-CF_GNAT_TRY_LINK([procedure conftest;],
-[with Text_IO;
-with GNAT.OS_Lib;
-procedure conftest is
- test : Integer;
- pragma Unreferenced (test);
-begin
- test := 1;
- Text_IO.Put ("Hello World");
- Text_IO.New_Line;
- GNAT.OS_Lib.OS_Exit (0);
-end conftest;],
- [cf_cv_pragma_unreferenced=yes],
- [cf_cv_pragma_unreferenced=no])])
-
-# if the pragma is supported, use it (needed in the Trace code).
-if test $cf_cv_pragma_unreferenced = yes ; then
- PRAGMA_UNREF=TRUE
-else
- PRAGMA_UNREF=FALSE
-fi
-AC_SUBST(PRAGMA_UNREF)
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_GNAT_PROJECTS version: 4 updated: 2013/09/07 14:05:46
+dnl CF_GNAT_PROJECTS version: 10 updated: 2019/12/31 08:53:54
dnl ----------------
dnl GNAT projects are configured with ".gpr" project files.
dnl GNAT libraries are a further development, using the project feature.
AC_DEFUN([CF_GNAT_PROJECTS],
[
AC_REQUIRE([CF_GNAT_VERSION])
+AC_REQUIRE([CF_DISABLE_GNAT_PROJECTS])
cf_gnat_libraries=no
cf_gnat_projects=no
+if test "$enable_gnat_projects" != no ; then
AC_MSG_CHECKING(if GNAT supports project files)
-case $cf_gnat_version in #(vi
-3.[[0-9]]*) #(vi
+case $cf_cv_gnat_version in
+(3.[[0-9]]*)
;;
-*)
- case $cf_cv_system_name in #(vi
- cygwin*|msys*) #(vi
+(*)
+ case $cf_cv_system_name in
+ (cygwin*|msys*)
;;
- *)
- mkdir conftest.src conftest.bin conftest.lib
- cd conftest.src
+ (*)
rm -rf conftest* *~conftest*
- cat >>library.gpr <<CF_EOF
+ if mkdir conftest.src conftest.bin conftest.lib
+ then
+ cd conftest.src
+ rm -rf conftest* *~conftest*
+ cat >>library.gpr <<CF_EOF
project Library is
Kind := External ("LIB_KIND");
for Library_Name use "ConfTest";
@@ -2179,22 +2800,14 @@ project Library is
for Library_Dir use External("BUILD_DIR");
Source_Dir := External ("SOURCE_DIR");
for Source_Dirs use (Source_Dir);
- package Compiler is
- for Default_Switches ("Ada") use
- ("-g",
- "-O2",
- "-gnatafno",
- "-gnatVa", -- All validity checks
- "-gnatwa"); -- Activate all optional errors
- end Compiler;
end Library;
CF_EOF
- cat >>confpackage.ads <<CF_EOF
+ cat >>confpackage.ads <<CF_EOF
package ConfPackage is
procedure conftest;
end ConfPackage;
CF_EOF
- cat >>confpackage.adb <<CF_EOF
+ cat >>confpackage.adb <<CF_EOF
with Text_IO;
package body ConfPackage is
procedure conftest is
@@ -2204,16 +2817,17 @@ package body ConfPackage is
end conftest;
end ConfPackage;
CF_EOF
- if ( $cf_ada_make $ADAFLAGS \
- -Plibrary.gpr \
- -XBUILD_DIR=`cd ../conftest.bin;pwd` \
- -XLIBRARY_DIR=`cd ../conftest.lib;pwd` \
- -XSOURCE_DIR=`pwd` \
- -XSONAME=libConfTest.so.1 \
- -XLIB_KIND=static 1>&AC_FD_CC 2>&1 ) ; then
- cf_gnat_projects=yes
+ if ( $cf_ada_make $ADAFLAGS \
+ -Plibrary.gpr \
+ -XBUILD_DIR=`cd ../conftest.bin;pwd` \
+ -XLIBRARY_DIR=`cd ../conftest.lib;pwd` \
+ -XSOURCE_DIR=`pwd` \
+ -XSONAME=libConfTest.so.1 \
+ -XLIB_KIND=static 1>&AC_FD_CC 2>&1 ) ; then
+ cf_gnat_projects=yes
+ fi
+ cd ..
fi
- cd ..
if test -f conftest.lib/confpackage.ali
then
cf_gnat_libraries=yes
@@ -2224,6 +2838,7 @@ CF_EOF
;;
esac
AC_MSG_RESULT($cf_gnat_projects)
+fi # enable_gnat_projects
if test $cf_gnat_projects = yes
then
@@ -2357,29 +2972,23 @@ fi
rm -rf conftest* *~conftest*
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GNAT_VERSION version: 18 updated: 2012/01/21 19:28:10
+dnl CF_GNAT_VERSION version: 22 updated: 2019/12/31 08:53:54
dnl ---------------
-dnl Verify version of GNAT.
+dnl $1 = cache variable to update
+dnl $2 = program name
+dnl Verify version of GNAT or related tool
AC_DEFUN([CF_GNAT_VERSION],
[
-AC_MSG_CHECKING(for gnat version)
-cf_gnat_version=`${cf_ada_make:-gnatmake} -v 2>&1 | \
+AC_CACHE_CHECK(for ifelse($2,,gnat,$2) version, cf_cv_gnat_version,[
+cf_cv_gnat_version=`ifelse($2,,${cf_ada_make:-gnatmake},$2) --version 2>&1 | \
grep '[[0-9]].[[0-9]][[0-9]]*' |\
- sed -e '2,$d' -e 's/[[^0-9 \.]]//g' -e 's/^[[ ]]*//' -e 's/ .*//'`
-AC_MSG_RESULT($cf_gnat_version)
-
-case $cf_gnat_version in #(vi
-3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|20[[0-9]][[0-9]]) #(vi
- cf_cv_prog_gnat_correct=yes
- ;;
-*)
- AC_MSG_WARN(Unsupported GNAT version $cf_gnat_version. We require 3.11 or better. Disabling Ada95 binding.)
- cf_cv_prog_gnat_correct=no
- ;;
-esac
+ sed -e '2,$d' -e 's/[[^0-9 \.]]//g' -e 's/^[[ ]]*//' -e 's/ .*//'`
])
+test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no
+ifelse($1,,,[eval $1=$cf_cv_gnat_version; unset cf_cv_gnat_version])
+])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GNU_SOURCE version: 6 updated: 2005/07/09 13:23:07
+dnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41
dnl -------------
dnl Check if we must define _GNU_SOURCE to get a reasonable value for
dnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect
@@ -2387,29 +2996,110 @@ dnl (or misfeature) of glibc2, which breaks portability of many applications,
dnl since it is interwoven with GNU extensions.
dnl
dnl Well, yes we could work around it...
+dnl
+dnl Parameters:
+dnl $1 is the nominal value for _XOPEN_SOURCE
AC_DEFUN([CF_GNU_SOURCE],
[
-AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
+cf_gnu_xopen_source=ifelse($1,,500,$1)
+
+AC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[
AC_TRY_COMPILE([#include <sys/types.h>],[
-#ifndef _XOPEN_SOURCE
-make an error
-#endif],
- [cf_cv_gnu_source=no],
- [cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
- AC_TRY_COMPILE([#include <sys/types.h>],[
-#ifdef _XOPEN_SOURCE
-make an error
-#endif],
- [cf_cv_gnu_source=no],
- [cf_cv_gnu_source=yes])
- CPPFLAGS="$cf_save"
- ])
+ #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0
+ return 0;
+ #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0
+ return 0;
+ #else
+ # error not GNU C library
+ #endif],
+ [cf_cv_gnu_library=yes],
+ [cf_cv_gnu_library=no])
])
-test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+
+if test x$cf_cv_gnu_library = xyes; then
+
+ # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
+ # was changed to help a little. newlib incorporated the change about 4
+ # years later.
+ AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[
+ cf_save="$CPPFLAGS"
+ CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2)
+ return 0;
+ #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3)
+ return 0;
+ #else
+ # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old
+ #endif],
+ [cf_cv_gnu_library_219=yes],
+ [cf_cv_gnu_library_219=no])
+ CPPFLAGS="$cf_save"
+ ])
+
+ if test "x$cf_cv_gnu_library_219" = xyes; then
+ cf_save="$CPPFLAGS"
+ AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[
+ CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source)
+ AC_TRY_COMPILE([
+ #include <limits.h>
+ #include <sys/types.h>
+ ],[
+ #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1)
+ return 0;
+ #else
+ # error GNU C library is too old
+ #endif],
+ [cf_cv_gnu_dftsrc_219=yes],
+ [cf_cv_gnu_dftsrc_219=no])
+ ])
+ test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
+ else
+ cf_cv_gnu_dftsrc_219=maybe
+ fi
+
+ if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
+
+ AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+ #ifndef _XOPEN_SOURCE
+ #error expected _XOPEN_SOURCE to be defined
+ #endif],
+ [cf_cv_gnu_source=no],
+ [cf_save="$CPPFLAGS"
+ CF_ADD_CFLAGS(-D_GNU_SOURCE)
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+ #ifdef _XOPEN_SOURCE
+ #error expected _XOPEN_SOURCE to be undefined
+ #endif],
+ [cf_cv_gnu_source=no],
+ [cf_cv_gnu_source=yes])
+ CPPFLAGS="$cf_save"
+ ])
+ ])
+
+ if test "$cf_cv_gnu_source" = yes
+ then
+ AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[
+ CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE)
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+ #ifdef _DEFAULT_SOURCE
+ #error expected _DEFAULT_SOURCE to be undefined
+ #endif],
+ [cf_cv_default_source=no],
+ [cf_cv_default_source=yes])
+ ])
+ if test "$cf_cv_default_source" = yes
+ then
+ CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
+ fi
+ fi
+ fi
+
+fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GPP_LIBRARY version: 11 updated: 2012/10/06 17:56:13
+dnl CF_GPP_LIBRARY version: 12 updated: 2015/04/17 21:13:04
dnl --------------
dnl If we're trying to use g++, test if libg++ is installed (a rather common
dnl problem :-). If we have the compiler but no library, we'll be able to
@@ -2417,11 +3107,11 @@ dnl configure, but won't be able to build the c++ demo program.
AC_DEFUN([CF_GPP_LIBRARY],
[
cf_cxx_library=unknown
-case $cf_cv_system_name in #(vi
-os2*) #(vi
+case $cf_cv_system_name in
+(os2*)
cf_gpp_libname=gpp
;;
-*)
+(*)
cf_gpp_libname=g++
;;
esac
@@ -2453,7 +3143,7 @@ if test "$GXX" = yes; then
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GXX_VERSION version: 7 updated: 2012/06/16 14:55:39
+dnl CF_GXX_VERSION version: 8 updated: 2017/02/11 14:48:57
dnl --------------
dnl Check for version of g++
AC_DEFUN([CF_GXX_VERSION],[
@@ -2462,12 +3152,16 @@ GXX_VERSION=none
if test "$GXX" = yes; then
AC_MSG_CHECKING(version of ${CXX:-g++})
GXX_VERSION="`${CXX:-g++} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
- test -z "$GXX_VERSION" && GXX_VERSION=unknown
+ if test -z "$GXX_VERSION"
+ then
+ GXX_VERSION=unknown
+ GXX=no
+ fi
AC_MSG_RESULT($GXX_VERSION)
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GXX_WARNINGS version: 8 updated: 2013/11/16 14:27:53
+dnl CF_GXX_WARNINGS version: 9 updated: 2015/04/17 21:13:04
dnl ---------------
dnl Check if the compiler supports useful warning options.
dnl
@@ -2547,9 +3241,9 @@ then
cf_gxx_extra_warnings=""
test "$with_ext_const" = yes && cf_gxx_extra_warnings="Wwrite-strings"
case "$GCC_VERSION" in
- [[1-2]].*)
+ ([[1-2]].*)
;;
- *)
+ (*)
cf_gxx_extra_warnings="$cf_gxx_extra_warnings Weffc++"
;;
esac
@@ -2585,7 +3279,7 @@ AC_LANG_RESTORE
AC_SUBST(EXTRA_CXXFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_HASHED_DB version: 4 updated: 2010/05/29 16:31:02
+dnl CF_HASHED_DB version: 7 updated: 2015/04/18 08:56:57
dnl ------------
dnl Look for an instance of the Berkeley hashed database.
dnl
@@ -2593,14 +3287,24 @@ dnl $1 = optional parameter, to specify install-prefix for the database.
AC_DEFUN([CF_HASHED_DB],
[
ifelse([$1],,,[
-case $1 in #(vi
-yes|*able*) #(vi
- ;;
-*)
- if test -d "$1" ; then
- CF_ADD_INCDIR($1/include)
- CF_ADD_LIBDIR($1/lib)
- fi
+case $1 in
+(yes|*able*)
+ ;;
+(*)
+ if test -d "$1" ; then
+ CF_ADD_INCDIR($1/include)
+ CF_ADD_LIBDIR($1/lib)
+ else
+ case "$1" in
+ (./*|../*|/*)
+ AC_MSG_WARN(no such directory $1)
+ ;;
+ (*)
+ CF_FIND_SUB_INCDIR($1)
+ CF_FIND_SUB_LIBDIR($1)
+ ;;
+ esac
+ fi
esac
])
AC_CHECK_HEADER(db.h,[
@@ -2692,7 +3396,7 @@ done
])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_HASHED_DB_VERSION version: 3 updated: 2007/12/01 15:01:37
+dnl CF_HASHED_DB_VERSION version: 4 updated: 2014/04/12 16:47:01
dnl --------------------
dnl Given that we have the header file for hashed database, find the version
dnl information.
@@ -2701,7 +3405,7 @@ AC_DEFUN([CF_HASHED_DB_VERSION],
AC_CACHE_CHECK(for version of db, cf_cv_hashed_db_version,[
cf_cv_hashed_db_version=unknown
-for cf_db_version in 1 2 3 4 5
+for cf_db_version in 1 2 3 4 5 6
do
CF_MSG_LOG(checking for db version $cf_db_version)
AC_TRY_COMPILE([
@@ -2730,7 +3434,7 @@ done
])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_HEADER_PATH version: 12 updated: 2010/05/05 05:22:40
+dnl CF_HEADER_PATH version: 13 updated: 2015/04/15 19:08:48
dnl --------------
dnl Construct a search-list of directories for a nonstandard header-file
dnl
@@ -2746,8 +3450,8 @@ cf_header_path_list=""
if test -n "${CFLAGS}${CPPFLAGS}" ; then
for cf_header_path in $CPPFLAGS $CFLAGS
do
- case $cf_header_path in #(vi
- -I*)
+ case $cf_header_path in
+ (-I*)
cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE)
cf_header_path_list="$cf_header_path_list [$]$1"
@@ -2776,40 +3480,126 @@ test -d "$oldincludedir" && {
$1="[$]$1 $cf_header_path_list"
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_HELP_MESSAGE version: 3 updated: 1998/01/14 10:56:23
+dnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54
dnl ---------------
dnl Insert text into the help-message, for readability, from AC_ARG_WITH.
AC_DEFUN([CF_HELP_MESSAGE],
-[AC_DIVERT_HELP([$1])dnl
+[CF_ACVERSION_CHECK(2.53,[],[
+AC_DIVERT_HELP($1)])dnl
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_INCLUDE_DIRS version: 8 updated: 2013/10/12 16:45:09
+dnl CF_INCLUDE_DIRS version: 10 updated: 2014/09/19 20:58:42
dnl ---------------
dnl Construct the list of include-options according to whether we're building
-dnl in the source directory or using '--srcdir=DIR' option. If we're building
-dnl with gcc, don't append the includedir if it happens to be /usr/include,
-dnl since that usually breaks gcc's shadow-includes.
+dnl in the source directory or using '--srcdir=DIR' option.
AC_DEFUN([CF_INCLUDE_DIRS],
[
-if test "$GCC" != yes; then
- CPPFLAGS="-I\${includedir} $CPPFLAGS"
-elif test "$includedir" != "/usr/include"; then
- if test "$includedir" = '${prefix}/include' ; then
- if test x$prefix != x/usr ; then
- CPPFLAGS="-I\${includedir} $CPPFLAGS"
- fi
- else
- CPPFLAGS="-I\${includedir} $CPPFLAGS"
- fi
-fi
if test "$srcdir" != "."; then
CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS"
fi
-CPPFLAGS="-I. -I../include $CPPFLAGS"
+CPPFLAGS="-I../include $CPPFLAGS"
+if test "$srcdir" != "."; then
+ CPPFLAGS="-I\${srcdir} $CPPFLAGS"
+fi
+CPPFLAGS="-I. $CPPFLAGS"
AC_SUBST(CPPFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_INTEL_COMPILER version: 5 updated: 2013/02/10 10:41:05
+dnl CF_INSTALL_OPTS version: 2 updated: 2018/08/18 12:19:21
+dnl ---------------
+dnl prompt for/fill-in useful install-program options
+AC_DEFUN([CF_INSTALL_OPTS],
+[
+CF_INSTALL_OPT_S
+CF_INSTALL_OPT_P
+CF_INSTALL_OPT_O
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INSTALL_OPT_O version: 2 updated: 2015/05/15 19:45:35
+dnl ----------------
+dnl Almost all "install" programs default to the current user's ownership.
+dnl Almost - MINIX is an exception.
+AC_DEFUN([CF_INSTALL_OPT_O],
+[
+AC_MSG_CHECKING(if install needs to be told about ownership)
+case `$ac_config_guess` in
+(*minix)
+ with_install_o=yes
+ ;;
+(*)
+ with_install_o=no
+ ;;
+esac
+
+AC_MSG_RESULT($with_install_o)
+if test "x$with_install_o" = xyes
+then
+ INSTALL_OPT_O=`id root|sed -e 's/uid=[[0-9]]*(/ -o /' -e 's/gid=[[0-9]]*(/ -g /' -e 's/ [[^=[:space:]]][[^=[:space:]]]*=.*/ /' -e 's/)//g'`
+else
+ INSTALL_OPT_O=
+fi
+
+AC_SUBST(INSTALL_OPT_O)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INSTALL_OPT_P version: 1 updated: 2018/08/18 12:19:21
+dnl ----------------
+dnl Some install-programs accept a "-p" option to preserve file modification
+dnl timestamps. That can be useful as an install option, as well as a way to
+dnl avoid the need for ranlib after copying a static archive.
+AC_DEFUN([CF_INSTALL_OPT_P],
+[
+: ${INSTALL:=install}
+AC_CACHE_CHECK(if install accepts -p option, cf_cv_install_p,[
+ rm -rf conftest*
+ date >conftest.in
+ mkdir conftest.out
+ sleep 3
+ if $INSTALL -p conftest.in conftest.out 2>/dev/null
+ then
+ if test -f conftest.out/conftest.in
+ then
+ test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \
+ test conftest.out/conftest.in -nt conftest.in 2>conftest.err
+ if test -s conftest.err
+ then
+ cf_cv_install_p=no
+ else
+ cf_cv_install_p=yes
+ fi
+ else
+ cf_cv_install_p=no
+ fi
+ else
+ cf_cv_install_p=no
+ fi
+ rm -rf conftest*
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INSTALL_OPT_S version: 2 updated: 2018/08/18 12:19:21
+dnl ----------------
+dnl By default, we should strip executables which are installed, but leave the
+dnl ability to suppress that for unit-testing.
+AC_DEFUN([CF_INSTALL_OPT_S],
+[
+AC_MSG_CHECKING(if you want to install stripped executables)
+CF_ARG_DISABLE(stripping,
+ [ --disable-stripping do not strip (debug info) installed executables],
+ [with_stripping=no],
+ [with_stripping=yes])
+AC_MSG_RESULT($with_stripping)
+
+if test "$with_stripping" = yes
+then
+ INSTALL_OPT_S="-s"
+else
+ INSTALL_OPT_S=
+fi
+AC_SUBST(INSTALL_OPT_S)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INTEL_COMPILER version: 7 updated: 2015/04/12 15:39:00
dnl -----------------
dnl Check if the given compiler is really the Intel compiler for Linux. It
dnl tries to imitate gcc, but does not return an error when it finds a mismatch
@@ -2828,7 +3618,7 @@ ifelse([$2],,INTEL_COMPILER,[$2])=no
if test "$ifelse([$1],,[$1],GCC)" = yes ; then
case $host_os in
- linux*|gnu*)
+ (linux*|gnu*)
AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler)
cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc"
@@ -2838,7 +3628,7 @@ if test "$ifelse([$1],,[$1],GCC)" = yes ; then
make an error
#endif
],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
-cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
+cf_save_CFLAGS="$cf_save_CFLAGS -we147"
],[])
ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
@@ -2862,13 +3652,13 @@ AC_MSG_RESULT($cf_cv_have_isascii)
test "$cf_cv_have_isascii" = yes && AC_DEFINE(HAVE_ISASCII,1,[Define to 1 if we have isascii()])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LARGEFILE version: 8 updated: 2012/10/06 08:57:51
+dnl CF_LARGEFILE version: 11 updated: 2018/06/20 20:23:13
dnl ------------
dnl Add checks for large file support.
AC_DEFUN([CF_LARGEFILE],[
ifdef([AC_FUNC_FSEEKO],[
- AC_SYS_LARGEFILE
- if test "$enable_largefile" != no ; then
+ AC_SYS_LARGEFILE
+ if test "$enable_largefile" != no ; then
AC_FUNC_FSEEKO
# Normally we would collect these definitions in the config.h,
@@ -2878,12 +3668,22 @@ ifdef([AC_FUNC_FSEEKO],[
# header files by themselves before looking at the body files it is
# told to compile. For ncurses, those header files do not include
# the config.h
- test "$ac_cv_sys_large_files" != no && CPPFLAGS="$CPPFLAGS -D_LARGE_FILES "
- test "$ac_cv_sys_largefile_source" != no && CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE "
- test "$ac_cv_sys_file_offset_bits" != no && CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits "
+ if test "$ac_cv_sys_large_files" != no
+ then
+ CF_APPEND_TEXT(CPPFLAGS,-D_LARGE_FILES)
+ fi
+ if test "$ac_cv_sys_largefile_source" != no
+ then
+ CF_APPEND_TEXT(CPPFLAGS,-D_LARGEFILE_SOURCE)
+ fi
+ if test "$ac_cv_sys_file_offset_bits" != no
+ then
+ CF_APPEND_TEXT(CPPFLAGS,-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits)
+ fi
AC_CACHE_CHECK(whether to use struct dirent64, cf_cv_struct_dirent64,[
AC_TRY_COMPILE([
+#pragma GCC diagnostic error "-Wincompatible-pointer-types"
#include <sys/types.h>
#include <dirent.h>
],[
@@ -2897,11 +3697,11 @@ ifdef([AC_FUNC_FSEEKO],[
[cf_cv_struct_dirent64=no])
])
test "$cf_cv_struct_dirent64" = yes && AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Define to 1 if we have struct dirent64])
- fi
+ fi
])
])
dnl ---------------------------------------------------------------------------
-dnl CF_LDFLAGS_STATIC version: 10 updated: 2011/09/24 12:51:48
+dnl CF_LDFLAGS_STATIC version: 12 updated: 2015/04/18 08:56:57
dnl -----------------
dnl Check for compiler/linker flags used to temporarily force usage of static
dnl libraries. This depends on the compiler and platform. Use this to help
@@ -2910,37 +3710,37 @@ dnl the list of linker options and libraries.
AC_DEFUN([CF_LDFLAGS_STATIC],[
if test "$GCC" = yes ; then
- case $cf_cv_system_name in #(
- OS/2*|os2*|aix[[4]]*|solaris2.1[[0-9]]|darwin*) #( vi
+ case $cf_cv_system_name in
+ (OS/2*|os2*|aix[[4]]*|solaris2.1[[0-9]]|darwin*)
LDFLAGS_STATIC=
LDFLAGS_SHARED=
;;
- *) #( normally, except when broken
- LDFLAGS_STATIC=-static
- LDFLAGS_SHARED=-dynamic
- ;;
- esac
+ (*) # normally, except when broken
+ LDFLAGS_STATIC=-static
+ LDFLAGS_SHARED=-dynamic
+ ;;
+ esac
else
- case $cf_cv_system_name in #(
- aix[[4-7]]*) #( from ld manpage
+ case $cf_cv_system_name in
+ (aix[[4-7]]*) # from ld manpage
LDFLAGS_STATIC=-bstatic
LDFLAGS_SHARED=-bdynamic
;;
- hpux*) #( from ld manpage for hpux10.20, hpux11.11
+ (hpux*) # from ld manpage for hpux10.20, hpux11.11
# We could also use just "archive" and "shared".
LDFLAGS_STATIC=-Wl,-a,archive_shared
LDFLAGS_SHARED=-Wl,-a,shared_archive
;;
- irix*) #( from ld manpage IRIX64
+ (irix*) # from ld manpage IRIX64
LDFLAGS_STATIC=-Bstatic
LDFLAGS_SHARED=-Bdynamic
;;
- osf[[45]]*) #( from ld manpage osf4.0d, osf5.1
+ (osf[[45]]*) # from ld manpage osf4.0d, osf5.1
# alternative "-oldstyle_liblookup" (not in cc manpage)
LDFLAGS_STATIC=-noso
LDFLAGS_SHARED=-so_archive
;;
- solaris2*)
+ (solaris2*)
LDFLAGS_STATIC=-Bstatic
LDFLAGS_SHARED=-Bdynamic
;;
@@ -2974,11 +3774,11 @@ int cf_ldflags_static(FILE *fp);
return cf_ldflags_static(stdin);
],[
# some linkers simply ignore the -dynamic
- case x`file conftest$ac_exeext 2>/dev/null` in #(vi
- *static*) # (vi
+ case x`file conftest$ac_exeext 2>/dev/null` in
+ (*static*)
cf_ldflags_static=no
;;
- *)
+ (*)
cf_ldflags_static=yes
;;
esac
@@ -3003,7 +3803,7 @@ AC_SUBST(LDFLAGS_STATIC)
AC_SUBST(LDFLAGS_SHARED)
])
dnl ---------------------------------------------------------------------------
-dnl CF_LD_RPATH_OPT version: 5 updated: 2011/07/17 14:48:41
+dnl CF_LD_RPATH_OPT version: 8 updated: 2018/08/18 16:36:35
dnl ---------------
dnl For the given system and compiler, find the compiler flags to pass to the
dnl loader to use the "rpath" feature.
@@ -3012,52 +3812,125 @@ AC_DEFUN([CF_LD_RPATH_OPT],
AC_REQUIRE([CF_CHECK_CACHE])
LD_RPATH_OPT=
-AC_MSG_CHECKING(for an rpath option)
-case $cf_cv_system_name in #(vi
-irix*) #(vi
- if test "$GCC" = yes; then
+if test "x$cf_cv_enable_rpath" != xno
+then
+ AC_MSG_CHECKING(for an rpath option)
+ case $cf_cv_system_name in
+ (irix*)
+ if test "$GCC" = yes; then
+ LD_RPATH_OPT="-Wl,-rpath,"
+ else
+ LD_RPATH_OPT="-rpath "
+ fi
+ ;;
+ (linux*|gnu*|k*bsd*-gnu|freebsd*)
LD_RPATH_OPT="-Wl,-rpath,"
- else
+ ;;
+ (openbsd[[2-9]].*|mirbsd*)
+ LD_RPATH_OPT="-Wl,-rpath,"
+ ;;
+ (dragonfly*)
+ LD_RPATH_OPT="-rpath "
+ ;;
+ (netbsd*)
+ LD_RPATH_OPT="-Wl,-rpath,"
+ ;;
+ (osf*|mls+*)
LD_RPATH_OPT="-rpath "
+ ;;
+ (solaris2*)
+ LD_RPATH_OPT="-R"
+ ;;
+ (*)
+ ;;
+ esac
+ AC_MSG_RESULT($LD_RPATH_OPT)
+
+ case "x$LD_RPATH_OPT" in
+ (x-R*)
+ AC_MSG_CHECKING(if we need a space after rpath option)
+ cf_save_LIBS="$LIBS"
+ CF_ADD_LIBS(${LD_RPATH_OPT}$libdir)
+ AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes)
+ LIBS="$cf_save_LIBS"
+ AC_MSG_RESULT($cf_rpath_space)
+ test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
+ ;;
+ esac
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_LD_SEARCHPATH version: 2 updated: 2019/09/26 20:34:14
+dnl ----------------
+dnl Try to obtain the linker's search-path, for use in scripts.
+dnl
+dnl Ignore LD_LIBRARY_PATH, etc.
+AC_DEFUN([CF_LD_SEARCHPATH],[
+AC_CACHE_CHECK(for linker search path,cf_cv_ld_searchpath,[
+
+if test "$cross_compiling" != yes ; then
+
+# GNU binutils' ld does not involve permissions which may stop ldconfig.
+cf_pathlist=`ld --verbose 2>/dev/null | grep SEARCH_DIR | sed -e 's,SEARCH_DIR[[("=]][[("=]]*,,g' -e 's/"[[)]];//gp' | sort -u`
+
+# The -NX options tell newer versions of Linux ldconfig to not attempt to
+# update the cache, which makes it run faster.
+test -z "$cf_pathlist" && \
+ cf_pathlist=`ldconfig -NX -v 2>/dev/null | sed -e '/^[[ ]]/d' -e 's/:$//' | sort -u`
+
+test -z "$cf_pathlist" &&
+ cf_pathlist=`ldconfig -v 2>/dev/null | sed -n -e '/^[[ ]]/d' -e 's/:$//p' | sort -u`
+
+# This works with OpenBSD 6.5, which lists only filenames
+test -z "$cf_pathlist" &&
+ cf_pathlist=`ldconfig -v 2>/dev/null | sed -n -e 's,^Adding \(.*\)/.*[$],\1,p' | sort -u`
+
+if test -z "$cf_pathlist"
+then
+ # dyld default path with MacOS
+ if test -f /usr/bin/otool && test "x`uname -s`" = xDarwin
+ then
+ # do this to bypass check
+ cf_cv_ld_searchpath='$HOME/lib'
+ cf_pathlist="/usr/local/lib /lib /usr/lib"
fi
- ;;
-linux*|gnu*|k*bsd*-gnu) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-openbsd[[2-9]].*|mirbsd*) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-dragonfly*|freebsd*) #(vi
- LD_RPATH_OPT="-rpath "
- ;;
-netbsd*) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-osf*|mls+*) #(vi
- LD_RPATH_OPT="-rpath "
- ;;
-solaris2*) #(vi
- LD_RPATH_OPT="-R"
- ;;
-*)
- ;;
-esac
-AC_MSG_RESULT($LD_RPATH_OPT)
+fi
-case "x$LD_RPATH_OPT" in #(vi
-x-R*)
- AC_MSG_CHECKING(if we need a space after rpath option)
- cf_save_LIBS="$LIBS"
- CF_ADD_LIBS(${LD_RPATH_OPT}$libdir)
- AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes)
- LIBS="$cf_save_LIBS"
- AC_MSG_RESULT($cf_rpath_space)
- test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
- ;;
-esac
+if test -z "$cf_pathlist"
+then
+ # Solaris is hardcoded
+ if test -d /opt/SUNWspro/lib
+ then
+ cf_pathlist="/opt/SUNWspro/lib /usr/ccs/lib /usr/lib"
+ elif test -d /usr/ccs/lib
+ then
+ cf_pathlist="/usr/ccs/lib /usr/lib"
+ fi
+fi
+
+fi
+
+# If nothing else, assume it is conventional
+test -z "$cf_pathlist" && cf_pathlist="/usr/lib /lib"
+
+# Finally, check that this is only directories
+for cf_path in [$]0 $cf_pathlist
+do
+ if test -d "$cf_path"; then
+ test -n "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath="${cf_cv_ld_searchpath} "
+ cf_cv_ld_searchpath="${cf_cv_ld_searchpath}${cf_path}"
+ fi
+done
+
+# Ensure that it is nonempty
+test -z "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath=/usr/lib
+])
+
+LD_SEARCHPATH=`echo "$cf_cv_ld_searchpath"|sed -e 's/ /|/g'`
+AC_SUBST(LD_SEARCHPATH)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LIBRARY_PATH version: 9 updated: 2010/03/28 12:52:50
+dnl CF_LIBRARY_PATH version: 10 updated: 2015/04/15 19:08:48
dnl ---------------
dnl Construct a search-list of directories for a nonstandard library-file
dnl
@@ -3071,8 +3944,8 @@ cf_library_path_list=""
if test -n "${LDFLAGS}${LIBS}" ; then
for cf_library_path in $LDFLAGS $LIBS
do
- case $cf_library_path in #(vi
- -L*)
+ case $cf_library_path in
+ (-L*)
cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE)
cf_library_path_list="$cf_library_path_list [$]$1"
@@ -3098,24 +3971,28 @@ fi
test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LIB_PREFIX version: 9 updated: 2012/01/21 19:28:10
+dnl CF_LIB_PREFIX version: 12 updated: 2015/10/17 19:03:33
dnl -------------
dnl Compute the library-prefix for the given host system
dnl $1 = variable to set
define([CF_LIB_PREFIX],
[
- case $cf_cv_system_name in #(vi
- OS/2*|os2*) #(vi
- LIB_PREFIX=''
- ;;
- *) LIB_PREFIX='lib'
- ;;
+ case $cf_cv_system_name in
+ (OS/2*|os2*)
+ if test "$DFT_LWR_MODEL" = libtool; then
+ LIB_PREFIX='lib'
+ else
+ LIB_PREFIX=''
+ fi
+ ;;
+ (*) LIB_PREFIX='lib'
+ ;;
esac
ifelse($1,,,[$1=$LIB_PREFIX])
AC_SUBST(LIB_PREFIX)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LIB_RULES version: 74 updated: 2013/09/07 13:54:05
+dnl CF_LIB_RULES version: 88 updated: 2018/08/18 12:19:21
dnl ------------
dnl Append definitions and rules for the given models to the subdirectory
dnl Makefiles, and the recursion rule for the top-level Makefile. If the
@@ -3135,8 +4012,8 @@ AC_DEFUN([CF_LIB_RULES],
cf_prefix=$LIB_PREFIX
AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
-case $cf_cv_shlib_version in #(vi
-cygdll|msysdll|mingw)
+case $cf_cv_shlib_version in
+(cygdll|msysdll|mingw)
TINFO_NAME=$TINFO_ARG_SUFFIX
TINFO_SUFFIX=.dll
;;
@@ -3144,17 +4021,17 @@ esac
if test -n "$TINFO_SUFFIX" ; then
case $TINFO_SUFFIX in
- tw*)
- TINFO_NAME="${TINFO_NAME}tw"
- TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^tw//'`
+ (tw*)
+ TINFO_NAME="${TINFO_NAME}tw${EXTRA_SUFFIX}"
+ TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^tw'$EXTRA_SUFFIX'//'`
;;
- t*)
- TINFO_NAME="${TINFO_NAME}t"
- TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^t//'`
+ (t*)
+ TINFO_NAME="${TINFO_NAME}t${EXTRA_SUFFIX}"
+ TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^t'$EXTRA_SUFFIX'//'`
;;
- w*)
- TINFO_NAME="${TINFO_NAME}w"
- TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^w//'`
+ (w*)
+ TINFO_NAME="${TINFO_NAME}w${EXTRA_SUFFIX}"
+ TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^w'$EXTRA_SUFFIX'//'`
;;
esac
fi
@@ -3167,6 +4044,39 @@ do
SHARED_LIB=
Libs_To_Make=
+ cf_awk_program=
+ if test -n "${cf_cv_abi_version}" && test "x${cf_cv_abi_version}" != "x5"
+ then
+ cf_awk_program="$cf_awk_program\
+/deprecated in ABI${cf_cv_abi_version}/ { next; }\
+{ sub(\"NCURSES([[WT]]+)?\", \"&${cf_cv_abi_version}\"); }\
+"
+ fi
+
+ if test "x$WILDCARD_SYMS" = xno
+ then
+ cf_awk_program="$cf_awk_program\
+/[[ ]]_\\*;/ { skip=1; next; }\
+"
+ fi
+
+ if test "x$cf_awk_program" != "x"
+ then
+ cat >>$cf_dir/Makefile <<CF_EOF
+
+# Generated by CF_LIB_RULES
+resulting.map: $UNALTERED_SYMS
+ $AWK 'BEGIN { skip = 1; last=""; } \
+$cf_awk_program \
+{ if ( last != "" && ( skip == 0 || \[$]\[$]0 !~ /}/ ) ) { print last; }\
+ skip = 0; last = \[$]\[$]0; } \
+END { print last; }' < $UNALTERED_SYMS >\[$]@
+
+distclean::
+ rm -f resulting.map
+CF_EOF
+ fi
+
for cf_item in $cf_LIST_MODELS
do
CF_LIB_SUFFIX($cf_item,cf_suffix,cf_depsuf)
@@ -3175,37 +4085,37 @@ do
if test $cf_item = shared ; then
if test -n "${LIB_SUFFIX}"
then
- cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${LIB_SUFFIX}"'//'`
+ cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'`
else
cf_shared_suffix="$cf_suffix"
fi
if test "$cf_cv_do_symlinks" = yes ; then
cf_version_name=
- case "$cf_cv_shlib_version" in #(vi
- rel) #(vi
+ case "$cf_cv_shlib_version" in
+ (rel)
cf_version_name=REL_VERSION
;;
- abi)
+ (abi)
cf_version_name=ABI_VERSION
;;
esac
if test -n "$cf_version_name"
then
- case "$cf_cv_system_name" in #(vi
- darwin*)
+ case "$cf_cv_system_name" in
+ (darwin*)
# "w", etc?
- cf_suffix="${LIB_SUFFIX}"'.${'$cf_version_name'}'"$cf_shared_suffix"
- ;; #(vi
- *)
+ cf_suffix="${USE_LIB_SUFFIX}"'.${'$cf_version_name'}'"$cf_shared_suffix"
+ ;;
+ (*)
cf_suffix="$cf_suffix"'.${'$cf_version_name'}'
;;
esac
fi
- if test -n "${LIB_SUFFIX}"
+ if test -n "${USE_LIB_SUFFIX}"
then
- cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${LIB_SUFFIX}"'//'`
+ cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'`
else
cf_shared_suffix="$cf_suffix"
fi
@@ -3213,25 +4123,31 @@ do
# cygwin needs import library, and has unique naming convention
# use autodetected ${cf_prefix} for import lib and static lib, but
# use 'cyg' prefix for shared lib.
- case $cf_cv_shlib_version in #(vi
- cygdll) #(vi
+ case $cf_cv_shlib_version in
+ (cygdll)
cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
- Libs_To_Make="$Libs_To_Make ../lib/cyg${cf_libname}${cf_cygsuf}"
- continue
+ cf_add_lib="../lib/cyg${cf_libname}${cf_cygsuf}"
;;
- msysdll) #(vi
+ (msysdll)
cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
- Libs_To_Make="$Libs_To_Make ../lib/msys-${cf_libname}${cf_cygsuf}"
- continue
+ cf_add_lib="../lib/msys-${cf_libname}${cf_cygsuf}"
;;
- mingw)
+ (mingw)
cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
- Libs_To_Make="$Libs_To_Make ../lib/lib${cf_libname}${cf_cygsuf}"
- continue
+ cf_add_lib="../lib/lib${cf_libname}${cf_cygsuf}"
+ ;;
+ (*)
+ cf_add_lib=
;;
esac
+ if test -n "$cf_add_lib"
+ then
+ Libs_To_Make="$Libs_To_Make $cf_add_lib"
+ continue
+ fi
fi
- Libs_To_Make="$Libs_To_Make ../lib/${cf_prefix}${cf_libname}${cf_suffix}"
+ cf_add_lib="../lib/${cf_prefix}${cf_libname}${cf_suffix}"
+ Libs_To_Make="$Libs_To_Make $cf_add_lib"
done
if test $cf_dir = ncurses ; then
@@ -3244,20 +4160,20 @@ do
cf_l_parts=`echo "$cf_r_parts" |sed -e 's/ .*$//'`
cf_r_parts=`echo "$cf_r_parts" |sed -e 's/^[[^ ]]* //'`
if test "$cf_l_parts" != "$cf_r_parts" ; then
- cf_item=
- case $cf_l_parts in #(vi
- *termlib*) #(vi
- cf_item=`echo $cf_liblist |sed -e s%${LIB_NAME}${LIB_SUFFIX}%${TINFO_LIB_SUFFIX}%g`
+ cf_add_lib=
+ case $cf_l_parts in
+ (*termlib*)
+ cf_add_lib=`echo $cf_liblist |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TINFO_LIB_SUFFIX}%g`
;;
- *ticlib*)
- cf_item=`echo $cf_liblist |sed -e s%${LIB_NAME}${LIB_SUFFIX}%${TICS_LIB_SUFFIX}%g`
+ (*ticlib*)
+ cf_add_lib=`echo $cf_liblist |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TICS_LIB_SUFFIX}%g`
;;
- *)
+ (*)
break
;;
esac
- if test -n "$cf_item"; then
- Libs_To_Make="$cf_item $Libs_To_Make"
+ if test -n "$cf_add_lib"; then
+ Libs_To_Make="$cf_add_lib $Libs_To_Make"
fi
else
break
@@ -3273,9 +4189,9 @@ do
for cf_item in $Libs_To_Make
do
case $cf_item in
- *.a)
+ (*.a)
;;
- *)
+ (*)
cf_item=`echo "$cf_item" | sed -e "s,"$cf_shared_suffix",.a,"`
;;
esac
@@ -3314,12 +4230,12 @@ do
CXX_MODEL=$cf_ITEM
if test "$CXX_MODEL" = SHARED; then
- case $cf_cv_shlib_version in #(vi
- cygdll|msysdll|mingw) #(vi
+ case $cf_cv_shlib_version in
+ (cygdll|msysdll|mingw)
test "x$with_shared_cxx" = xno && CF_VERBOSE(overriding CXX_MODEL to SHARED)
with_shared_cxx=yes
;;
- *)
+ (*)
test "x$with_shared_cxx" = xno && CXX_MODEL=NORMAL
;;
esac
@@ -3332,24 +4248,24 @@ do
cf_libname=$cf_dir
if test $cf_dir = ncurses ; then
case $cf_subset in
- *base*)
- cf_libname=${cf_libname}$LIB_SUFFIX
+ (*base*)
+ cf_libname=${cf_libname}$USE_LIB_SUFFIX
;;
- *termlib*)
+ (*termlib*)
cf_libname=$TINFO_LIB_SUFFIX
;;
- ticlib*)
+ (ticlib*)
cf_libname=$TICS_LIB_SUFFIX
;;
esac
elif test $cf_dir = c++ ; then
- cf_libname=ncurses++$LIB_SUFFIX
+ cf_libname=ncurses++$USE_LIB_SUFFIX
else
- cf_libname=${cf_libname}$LIB_SUFFIX
+ cf_libname=${cf_libname}$USE_LIB_SUFFIX
fi
- if test -n "${DFT_ARG_SUFFIX}" ; then
- # undo $LIB_SUFFIX add-on in CF_LIB_SUFFIX
- cf_suffix=`echo $cf_suffix |sed -e "s%^${LIB_SUFFIX}%%"`
+ if test -n "${USE_ARG_SUFFIX}" ; then
+ # undo $USE_LIB_SUFFIX add-on in CF_LIB_SUFFIX
+ cf_suffix=`echo $cf_suffix |sed -e "s%^${USE_LIB_SUFFIX}%%"`
fi
# These dependencies really are for development, not
@@ -3370,22 +4286,27 @@ do
cf_dir_suffix=
old_cf_suffix="$cf_suffix"
if test "$cf_cv_shlib_version_infix" = yes ; then
- if test -n "$LIB_SUFFIX" ; then
- case $LIB_SUFFIX in
- tw*)
- cf_libname=`echo $cf_libname | sed 's/tw$//'`
- cf_suffix=`echo $cf_suffix | sed 's/^tw//'`
- cf_dir_suffix=tw
+ if test -n "$USE_LIB_SUFFIX" ; then
+ case $USE_LIB_SUFFIX in
+ (tw*)
+ cf_libname=`echo $cf_libname | sed 's/tw'$EXTRA_SUFFIX'$//'`
+ cf_suffix=`echo $cf_suffix | sed 's/^tw'$EXTRA_SUFFIX'//'`
+ cf_dir_suffix=tw$EXTRA_SUFFIX
+ ;;
+ (t*)
+ cf_libname=`echo $cf_libname | sed 's/t'$EXTRA_SUFFIX'$//'`
+ cf_suffix=`echo $cf_suffix | sed 's/^t'$EXTRA_SUFFIX'//'`
+ cf_dir_suffix=t$EXTRA_SUFFIX
;;
- t*)
- cf_libname=`echo $cf_libname | sed 's/t$//'`
- cf_suffix=`echo $cf_suffix | sed 's/^t//'`
- cf_dir_suffix=t
+ (w*)
+ cf_libname=`echo $cf_libname | sed 's/w'$EXTRA_SUFFIX'$//'`
+ cf_suffix=`echo $cf_suffix | sed 's/^w'$EXTRA_SUFFIX'//'`
+ cf_dir_suffix=w$EXTRA_SUFFIX
;;
- w*)
- cf_libname=`echo $cf_libname | sed 's/w$//'`
- cf_suffix=`echo $cf_suffix | sed 's/^w//'`
- cf_dir_suffix=w
+ (*)
+ cf_libname=`echo $cf_libname | sed 's/'$EXTRA_SUFFIX'$//'`
+ cf_suffix=`echo $cf_suffix | sed 's/^'$EXTRA_SUFFIX'//'`
+ cf_dir_suffix=$EXTRA_SUFFIX
;;
esac
fi
@@ -3407,6 +4328,7 @@ do
ShlibVer=$cf_cv_shlib_version \
ShlibVerInfix=$cf_cv_shlib_version_infix \
ReLink=${cf_cv_do_relink:-no} \
+ ReRanlib=${cf_cv_do_reranlib:-yes} \
DoLinks=$cf_cv_do_symlinks \
rmSoLocs=$cf_cv_rm_so_locs \
ldconfig="$LDCONFIG" \
@@ -3450,7 +4372,7 @@ do
if test -f $cf_dir/Makefile ; then
case "$cf_dir" in
- Ada95) #(vi
+ (Ada95)
echo 'libs \' >> Makefile
echo 'install.libs \' >> Makefile
echo 'uninstall.libs ::' >> Makefile
@@ -3499,6 +4421,12 @@ install.libs uninstall.libs \\
install.data uninstall.data ::
$MAKE_TERMINFO cd misc && \${MAKE} \${TOP_MFLAGS} \[$]@
CF_EOF
+else
+cat >> Makefile <<CF_EOF
+
+install.libs uninstall.libs ::
+ cd misc && \${MAKE} \${TOP_MFLAGS} \[$]@
+CF_EOF
fi
if test "x$cf_with_manpages" = xyes; then
@@ -3521,8 +4449,7 @@ CF_EOF
# Special case: tack's manpage lives in its own directory.
if test "x$cf_with_manpages" = xyes; then
-if test -d tack ; then
-if test -f $srcdir/$tack.h; then
+if test "x$cf_with_tack" = "xyes"; then
cat >> Makefile <<CF_EOF
install.man \\
@@ -3531,7 +4458,6 @@ uninstall.man ::
CF_EOF
fi
fi
-fi
dnl If we're installing into a subdirectory of /usr/include, etc., we should
dnl prepend the subdirectory's name to the "#include" paths. It won't hurt
@@ -3544,7 +4470,7 @@ rm -f headers.sed headers.sh
dnl ( generating this script makes the makefiles a little tidier :-)
echo creating headers.sh
cat >headers.sh <<CF_EOF
-#! /bin/sh
+#! $SHELL
# This shell script is generated by the 'configure' script. It is invoked in a
# subdirectory of the build tree. It generates a sed-script in the parent
# directory that is used to adjust includes for header files that reside in a
@@ -3565,7 +4491,7 @@ CF_EOF
if test $WITH_CURSES_H = yes; then
cat >>headers.sh <<CF_EOF
case \$DST in
-/*/include/*)
+(/*/include/*)
END=\`basename \$DST\`
for i in \`cat \$REF/../*/headers |fgrep -v "#"\`
do
@@ -3573,7 +4499,7 @@ case \$DST in
echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
done
;;
-*)
+(*)
echo "" >> \$TMPSED
;;
esac
@@ -3582,7 +4508,7 @@ CF_EOF
else
cat >>headers.sh <<CF_EOF
case \$DST in
-/*/include/*)
+(/*/include/*)
END=\`basename \$DST\`
for i in \`cat \$REF/../*/headers |fgrep -v "#"\`
do
@@ -3595,7 +4521,7 @@ case \$DST in
echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
done
;;
-*)
+(*)
echo "s/<curses.h>/<ncurses.h>/" >> \$TMPSED
;;
esac
@@ -3648,7 +4574,7 @@ done
AC_SUBST(Libs_To_Make)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LIB_SONAME version: 5 updated: 2010/08/14 18:25:37
+dnl CF_LIB_SONAME version: 6 updated: 2017/01/21 11:06:25
dnl -------------
dnl Find the and soname for the given shared library. Set the cache variable
dnl cf_cv_$3_soname to this, unless it is not found. Then set the cache
@@ -3665,7 +4591,7 @@ cf_cv_$3_soname=unknown
if test "$cross_compiling" != yes ; then
cat >conftest.$ac_ext <<CF_EOF
$1
-int main()
+int main(void)
{
$2
${cf_cv_main_return:-return}(0);
@@ -3685,7 +4611,7 @@ fi
])
])
dnl ---------------------------------------------------------------------------
-dnl CF_LIB_SUFFIX version: 22 updated: 2013/09/07 13:54:05
+dnl CF_LIB_SUFFIX version: 25 updated: 2015/04/17 21:13:04
dnl -------------
dnl Compute the library file-suffix from the given model name
dnl $1 = model name
@@ -3694,61 +4620,64 @@ dnl $3 = dependency variable to set (actual filename)
dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
AC_DEFUN([CF_LIB_SUFFIX],
[
- case X$1 in #(vi
- Xlibtool) #(vi
+ case X$1 in
+ (Xlibtool)
$2='.la'
$3=[$]$2
;;
- Xdebug) #(vi
+ (Xdebug)
$2='_g.a'
$3=[$]$2
;;
- Xprofile) #(vi
+ (Xprofile)
$2='_p.a'
$3=[$]$2
;;
- Xshared) #(vi
+ (Xshared)
case $cf_cv_system_name in
- aix[[5-7]]*) #(vi
- $2='.a'
+ (aix[[5-7]]*)
+ $2='.so'
$3=[$]$2
;;
- cygwin*|msys*|mingw*) #(vi
+ (cygwin*|msys*|mingw*)
$2='.dll'
$3='.dll.a'
;;
- darwin*) #(vi
+ (darwin*)
$2='.dylib'
$3=[$]$2
;;
- hpux*) #(vi
+ (hpux*)
case $target in
- ia64*) #(vi
+ (ia64*)
$2='.so'
$3=[$]$2
;;
- *) #(vi
+ (*)
$2='.sl'
$3=[$]$2
;;
esac
;;
- *) #(vi
+ (*)
$2='.so'
$3=[$]$2
;;
esac
;;
- *)
+ (*)
$2='.a'
$3=[$]$2
;;
esac
- test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
- test -n "$LIB_SUFFIX" && $3="${LIB_SUFFIX}[$]{$3}"
+ if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}"
+ then
+ $2="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$2}"
+ $3="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$3}"
+ fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LIB_TYPE version: 4 updated: 2000/10/20 22:57:49
+dnl CF_LIB_TYPE version: 5 updated: 2015/04/17 21:13:04
dnl -----------
dnl Compute the string to append to -library from the given model name
dnl $1 = model name
@@ -3757,16 +4686,16 @@ dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
AC_DEFUN([CF_LIB_TYPE],
[
case $1 in
- libtool) $2='' ;;
- normal) $2='' ;;
- debug) $2='_g' ;;
- profile) $2='_p' ;;
- shared) $2='' ;;
+ (libtool) $2='' ;;
+ (normal) $2='' ;;
+ (debug) $2='_g' ;;
+ (profile) $2='_p' ;;
+ (shared) $2='' ;;
esac
test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LINK_DATAONLY version: 10 updated: 2012/10/06 17:41:51
+dnl CF_LINK_DATAONLY version: 12 updated: 2017/07/23 17:46:07
dnl ----------------
dnl Some systems have a non-ANSI linker that doesn't pull in modules that have
dnl only data (i.e., no functions), for example NeXT. On those systems we'll
@@ -3788,7 +4717,7 @@ EOF
rm -f conftest.$ac_ext data.o
cat >conftest.$ac_ext <<EOF
#line __oline__ "configure"
-int testfunc()
+int testfunc(void)
{
#if defined(NeXT)
${cf_cv_main_return:-return}(1); /* I'm told this linker is broken */
@@ -3809,7 +4738,7 @@ EOF
cf_saveLIBS="$LIBS"
LIBS="conftest.a $LIBS"
AC_TRY_RUN([
- int main()
+ int main(void)
{
extern int testfunc();
${cf_cv_main_return:-return} (!testfunc());
@@ -3829,13 +4758,16 @@ fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LINK_FUNCS version: 8 updated: 2012/10/06 17:56:13
+dnl CF_LINK_FUNCS version: 9 updated: 2017/01/21 11:11:02
dnl -------------
dnl Most Unix systems have both link and symlink, a few don't have symlink.
dnl A few non-Unix systems implement symlink, but not link.
dnl A few non-systems implement neither (or have nonfunctional versions).
AC_DEFUN([CF_LINK_FUNCS],
[
+AC_CHECK_HEADERS( \
+unistd.h \
+)
AC_CHECK_FUNCS( \
remove \
unlink )
@@ -3854,7 +4786,7 @@ else
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
-int main()
+int main(void)
{
int fail = 0;
char *src = "config.log";
@@ -3886,7 +4818,7 @@ int main()
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MAKEFLAGS version: 14 updated: 2011/03/31 19:29:46
+dnl CF_MAKEFLAGS version: 18 updated: 2018/02/21 21:26:03
dnl ------------
dnl Some 'make' programs support ${MAKEFLAGS}, some ${MFLAGS}, to pass 'make'
dnl options to lower-levels. It's very useful for "make -n" -- if we have it.
@@ -3899,24 +4831,26 @@ AC_CACHE_CHECK(for makeflags variable, cf_cv_makeflags,[
for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
do
cat >cf_makeflags.tmp <<CF_EOF
-SHELL = /bin/sh
+SHELL = $SHELL
all :
@ echo '.$cf_option'
CF_EOF
cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp 2>/dev/null | fgrep -v "ing directory" | sed -e 's,[[ ]]*$,,'`
case "$cf_result" in
- .*k)
+ (.*k|.*kw)
cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`
case "$cf_result" in
- .*CC=*) cf_cv_makeflags=
+ (.*CC=*) cf_cv_makeflags=
;;
- *) cf_cv_makeflags=$cf_option
+ (*) cf_cv_makeflags=$cf_option
;;
esac
break
;;
- .-) ;;
- *) echo "given option \"$cf_option\", no match \"$cf_result\""
+ (.-)
+ ;;
+ (*)
+ CF_MSG_LOG(given option \"$cf_option\", no match \"$cf_result\")
;;
esac
done
@@ -3963,7 +4897,7 @@ AC_SUBST(MAKE_UPPER_TAGS)
AC_SUBST(MAKE_LOWER_TAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MANPAGE_FORMAT version: 9 updated: 2010/10/23 16:10:30
+dnl CF_MANPAGE_FORMAT version: 11 updated: 2015/04/18 08:56:57
dnl -----------------
dnl Option to allow user to override automatic configuration of manpage format.
dnl There are several special cases:
@@ -3994,85 +4928,85 @@ MANPAGE_FORMAT=`echo "$MANPAGE_FORMAT" | sed -e 's/,/ /g'`
cf_unknown=
case $MANPAGE_FORMAT in
-unknown)
- if test -z "$MANPATH" ; then
- MANPATH="/usr/man:/usr/share/man"
- fi
-
- # look for the 'date' man-page (it's most likely to be installed!)
- MANPAGE_FORMAT=
- cf_preform=no
- cf_catonly=yes
- cf_example=date
-
- IFS="${IFS:- }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for cf_dir in $MANPATH; do
- test -z "$cf_dir" && cf_dir=/usr/man
- for cf_name in $cf_dir/man*/$cf_example.[[01]]* $cf_dir/cat*/$cf_example.[[01]]* $cf_dir/man*/$cf_example $cf_dir/cat*/$cf_example
- do
- cf_test=`echo $cf_name | sed -e 's/*//'`
- if test "x$cf_test" = "x$cf_name" ; then
-
- case "$cf_name" in
- *.gz) MANPAGE_FORMAT="$MANPAGE_FORMAT gzip";;
- *.Z) MANPAGE_FORMAT="$MANPAGE_FORMAT compress";;
- *.0) MANPAGE_FORMAT="$MANPAGE_FORMAT BSDI";;
- *) MANPAGE_FORMAT="$MANPAGE_FORMAT normal";;
- esac
+(unknown)
+ if test -z "$MANPATH" ; then
+ MANPATH="/usr/man:/usr/share/man"
+ fi
- case "$cf_name" in
- $cf_dir/man*)
- cf_catonly=no
- ;;
- $cf_dir/cat*)
- cf_preform=yes
- ;;
- esac
- break
- fi
-
- # if we found a match in either man* or cat*, stop looking
- if test -n "$MANPAGE_FORMAT" ; then
- cf_found=no
- test "$cf_preform" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT formatted"
- test "$cf_catonly" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT catonly"
- case "$cf_name" in
- $cf_dir/cat*)
- cf_found=yes
- ;;
+ # look for the 'date' man-page (it's most likely to be installed!)
+ MANPAGE_FORMAT=
+ cf_preform=no
+ cf_catonly=yes
+ cf_example=date
+
+ IFS="${IFS:- }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+ for cf_dir in $MANPATH; do
+ test -z "$cf_dir" && cf_dir=/usr/man
+ for cf_name in $cf_dir/man*/$cf_example.[[01]]* $cf_dir/cat*/$cf_example.[[01]]* $cf_dir/man*/$cf_example $cf_dir/cat*/$cf_example
+ do
+ cf_test=`echo $cf_name | sed -e 's/*//'`
+ if test "x$cf_test" = "x$cf_name" ; then
+
+ case "$cf_name" in
+ (*.gz) MANPAGE_FORMAT="$MANPAGE_FORMAT gzip";;
+ (*.Z) MANPAGE_FORMAT="$MANPAGE_FORMAT compress";;
+ (*.0) MANPAGE_FORMAT="$MANPAGE_FORMAT BSDI";;
+ (*) MANPAGE_FORMAT="$MANPAGE_FORMAT normal";;
+ esac
+
+ case "$cf_name" in
+ ($cf_dir/man*)
+ cf_catonly=no
+ ;;
+ ($cf_dir/cat*)
+ cf_preform=yes
+ ;;
+ esac
+ break
+ fi
+
+ # if we found a match in either man* or cat*, stop looking
+ if test -n "$MANPAGE_FORMAT" ; then
+ cf_found=no
+ test "$cf_preform" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT formatted"
+ test "$cf_catonly" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT catonly"
+ case "$cf_name" in
+ ($cf_dir/cat*)
+ cf_found=yes
+ ;;
+ esac
+ test $cf_found=yes && break
+ fi
+ done
+ # only check the first directory in $MANPATH where we find manpages
+ if test -n "$MANPAGE_FORMAT" ; then
+ break
+ fi
+ done
+ # if we did not find the example, just assume it is normal
+ test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=normal
+ IFS="$ac_save_ifs"
+ ;;
+(*)
+ for cf_option in $MANPAGE_FORMAT; do
+ case $cf_option in
+ (gzip|compress|BSDI|normal|formatted|catonly)
+ ;;
+ (*)
+ cf_unknown="$cf_unknown $cf_option"
+ ;;
esac
- test $cf_found=yes && break
- fi
- done
- # only check the first directory in $MANPATH where we find manpages
- if test -n "$MANPAGE_FORMAT" ; then
- break
- fi
- done
- # if we did not find the example, just assume it is normal
- test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=normal
- IFS="$ac_save_ifs"
- ;;
-*)
- for cf_option in $MANPAGE_FORMAT; do
- case $cf_option in #(vi
- gzip|compress|BSDI|normal|formatted|catonly)
- ;;
- *)
- cf_unknown="$cf_unknown $cf_option"
- ;;
- esac
- done
- ;;
+ done
+ ;;
esac
AC_MSG_RESULT($MANPAGE_FORMAT)
if test -n "$cf_unknown" ; then
- AC_MSG_WARN(Unexpected manpage-format $cf_unknown)
+ AC_MSG_WARN(Unexpected manpage-format $cf_unknown)
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MANPAGE_RENAMES version: 7 updated: 2005/06/18 18:51:57
+dnl CF_MANPAGE_RENAMES version: 10 updated: 2015/08/05 20:44:28
dnl ------------------
dnl The Debian people have their own naming convention for manpages. This
dnl option lets us override the name of the file containing renaming, or
@@ -4086,40 +5020,40 @@ AC_ARG_WITH(manpage-renames,
[MANPAGE_RENAMES=$withval],
[MANPAGE_RENAMES=yes])
-case ".$MANPAGE_RENAMES" in #(vi
-.no) #(vi
- ;;
-.|.yes)
- # Debian 'man' program?
- if test -f /etc/debian_version ; then
- MANPAGE_RENAMES=`cd $srcdir && pwd`/man/man_db.renames
- else
- MANPAGE_RENAMES=no
- fi
- ;;
+case ".$MANPAGE_RENAMES" in
+(.no)
+ ;;
+(.|.yes)
+ # Debian 'man' program?
+ if test -f /etc/debian_version ; then
+ MANPAGE_RENAMES=`cd $srcdir && pwd`/man/man_db.renames
+ else
+ MANPAGE_RENAMES=no
+ fi
+ ;;
esac
if test "$MANPAGE_RENAMES" != no ; then
- if test -f $srcdir/man/$MANPAGE_RENAMES ; then
- MANPAGE_RENAMES=`cd $srcdir/man && pwd`/$MANPAGE_RENAMES
- elif test ! -f $MANPAGE_RENAMES ; then
- AC_MSG_ERROR(not a filename: $MANPAGE_RENAMES)
- fi
+ if test -f $srcdir/man/$MANPAGE_RENAMES ; then
+ MANPAGE_RENAMES=`cd $srcdir/man && pwd`/$MANPAGE_RENAMES
+ elif test ! -f $MANPAGE_RENAMES ; then
+ AC_MSG_ERROR(not a filename: $MANPAGE_RENAMES)
+ fi
- test ! -d man && mkdir man
+ test ! -d man && mkdir man
- # Construct a sed-script to perform renaming within man-pages
- if test -n "$MANPAGE_RENAMES" ; then
- test ! -d man && mkdir man
- sh $srcdir/man/make_sed.sh $MANPAGE_RENAMES >./edit_man.sed
- fi
+ # Construct a sed-script to perform renaming within man-pages
+ if test -n "$MANPAGE_RENAMES" ; then
+ test ! -d man && mkdir man
+ $SHELL $srcdir/man/make_sed.sh $MANPAGE_RENAMES >./edit_man.sed
+ fi
fi
AC_MSG_RESULT($MANPAGE_RENAMES)
AC_SUBST(MANPAGE_RENAMES)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MANPAGE_SYMLINKS version: 5 updated: 2010/07/24 17:12:40
+dnl CF_MANPAGE_SYMLINKS version: 6 updated: 2015/04/17 21:13:04
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
@@ -4135,11 +5069,11 @@ AC_ARG_WITH(manpage-aliases,
AC_MSG_RESULT($MANPAGE_ALIASES)
-case "x$LN_S" in #(vi
-xln*) #(vi
+case "x$LN_S" in
+(xln*)
cf_use_symlinks=yes
;;
-*)
+(*)
cf_use_symlinks=no
;;
esac
@@ -4181,7 +5115,7 @@ AC_ARG_WITH(manpage-tbl,
AC_MSG_RESULT($MANPAGE_TBL)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MAN_PAGES version: 43 updated: 2013/02/09 12:53:45
+dnl CF_MAN_PAGES version: 47 updated: 2017/08/12 07:58:51
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
@@ -4194,47 +5128,47 @@ CF_MANPAGE_RENAMES
CF_MANPAGE_SYMLINKS
CF_MANPAGE_TBL
- if test "$prefix" = "NONE" ; then
- cf_prefix="$ac_default_prefix"
- else
- cf_prefix="$prefix"
- fi
-
- case "$MANPAGE_FORMAT" in # (vi
- *catonly*) # (vi
- cf_format=yes
- cf_inboth=no
- ;;
- *formatted*) # (vi
- cf_format=yes
- cf_inboth=yes
- ;;
- *)
- cf_format=no
- cf_inboth=no
- ;;
- esac
+if test "$prefix" = "NONE" ; then
+ cf_prefix="$ac_default_prefix"
+else
+ cf_prefix="$prefix"
+fi
+
+case "$MANPAGE_FORMAT" in
+(*catonly*)
+ cf_format=yes
+ cf_inboth=no
+ ;;
+(*formatted*)
+ cf_format=yes
+ cf_inboth=yes
+ ;;
+(*)
+ cf_format=no
+ cf_inboth=no
+ ;;
+esac
test ! -d man && mkdir man
cf_so_strip=
cf_compress=
-case "$MANPAGE_FORMAT" in #(vi
-*compress*) #(vi
+case "$MANPAGE_FORMAT" in
+(*compress*)
cf_so_strip="Z"
cf_compress=compress
- ;;
-*gzip*)
+ ;;
+(*gzip*)
cf_so_strip="gz"
cf_compress=gzip
- ;;
+ ;;
esac
cf_edit_man=./edit_man.sh
cf_man_alias=`pwd`/man_alias.sed
cat >$cf_edit_man <<CF_EOF
-#! /bin/sh
+#! $SHELL
# this script is generated by the configure-script CF_MAN_PAGES macro.
prefix="$cf_prefix"
@@ -4254,7 +5188,7 @@ INSTALL_DATA="$INSTALL_DATA"
transform="$program_transform_name"
TMP=\${TMPDIR:=/tmp}/man\$\$
-trap "rm -f \$TMP" 0 1 2 5 15
+trap "rm -f \$TMP" 0 1 2 3 15
form=\[$]1
shift || exit 1
@@ -4272,7 +5206,7 @@ shift || exit 1
if test "\$form" = normal ; then
if test "$cf_format" = yes ; then
if test "$cf_inboth" = no ; then
- sh \[$]0 format \$verb \$mandir \$srcdir \[$]*
+ $SHELL \[$]0 format \$verb \$mandir \$srcdir \[$]*
exit $?
fi
fi
@@ -4285,9 +5219,9 @@ fi
# process the list of source-files
for i in \[$]* ; do
-case \$i in #(vi
-*.orig|*.rej) ;; #(vi
-*.[[0-9]]*)
+case \$i in
+(*.orig|*.rej) ;;
+(*.[[0-9]]*)
section=\`expr "\$i" : '.*\\.\\([[0-9]]\\)[[xm]]*'\`;
if test \$verb = installing ; then
if test ! -d \$cf_subdir\${section} ; then
@@ -4414,8 +5348,8 @@ cat >>$cf_edit_man <<CF_EOF
CF_EOF
fi
-case "$MANPAGE_FORMAT" in #(vi
-*BSDI*)
+case "$MANPAGE_FORMAT" in
+(*BSDI*)
cat >>$cf_edit_man <<CF_EOF
if test \$form = format ; then
# BSDI installs only .0 suffixes in the cat directories
@@ -4451,13 +5385,13 @@ cat >>$cf_edit_man <<CF_EOF
fi
echo .. \$verb alias \$cf_alias\${suffix}
CF_EOF
-case "x$LN_S" in #(vi
-*-f) #(vi
+case "x$LN_S" in
+(*-f)
cat >>$cf_edit_man <<CF_EOF
$LN_S \$cf_target \$cf_alias\${suffix}
CF_EOF
;;
-*)
+(*)
cat >>$cf_edit_man <<CF_EOF
rm -f \$cf_alias\${suffix}
$LN_S \$cf_target \$cf_alias\${suffix}
@@ -4513,7 +5447,7 @@ done
if test $cf_inboth = yes ; then
if test \$form != format ; then
- sh \[$]0 format \$verb \$mandir \$srcdir \[$]*
+ $SHELL \[$]0 format \$verb \$mandir \$srcdir \[$]*
fi
fi
@@ -4523,7 +5457,7 @@ chmod 755 $cf_edit_man
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MATH_LIB version: 8 updated: 2010/05/29 16:31:02
+dnl CF_MATH_LIB version: 9 updated: 2017/01/21 11:06:25
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
@@ -4534,6 +5468,7 @@ AC_CACHE_CHECK(if -lm needed for math functions,
cf_cv_need_libm,[
AC_TRY_LINK([
#include <stdio.h>
+ #include <stdlib.h>
#include <math.h>
],
[double x = rand(); printf("result = %g\n", ]ifelse([$2],,sin(x),$2)[)],
@@ -4547,7 +5482,7 @@ ifelse($1,,[
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_MIXEDCASE_FILENAMES version: 6 updated: 2013/10/08 17:47:05
+dnl CF_MIXEDCASE_FILENAMES version: 7 updated: 2015/04/12 15:39:00
dnl ----------------------
dnl Check if the file-system supports mixed-case filenames. If we're able to
dnl create a lowercase name and see it as uppercase, it doesn't support that.
@@ -4555,11 +5490,11 @@ AC_DEFUN([CF_MIXEDCASE_FILENAMES],
[
AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
if test "$cross_compiling" = yes ; then
- case $target_alias in #(vi
- *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*) #(vi
+ case $target_alias in
+ (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*)
cf_cv_mixedcase=no
;;
- *)
+ (*)
cf_cv_mixedcase=yes
;;
esac
@@ -4577,20 +5512,26 @@ fi
test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MKSTEMP version: 9 updated: 2012/10/03 04:34:49
+dnl CF_MKSTEMP version: 10 updated: 2017/01/21 11:12:16
dnl ----------
dnl Check for a working mkstemp. This creates two files, checks that they are
dnl successfully created and distinct (AmigaOS apparently fails on the last).
AC_DEFUN([CF_MKSTEMP],[
+AC_CHECK_HEADERS( \
+unistd.h \
+)
AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[
rm -rf conftest*
AC_TRY_RUN([
#include <sys/types.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
-int main()
+int main(void)
{
char *tmpl = "conftestXXXXXX";
char name[2][80];
@@ -4637,23 +5578,43 @@ AC_DEFUN([CF_MSG_LOG],[
echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_NCURSES_ABI_6 version: 1 updated: 2005/09/17 18:42:49
+dnl CF_NCURSES_ABI_6 version: 3 updated: 2015/06/06 16:10:11
dnl ----------------
dnl Set ncurses' ABI to 6 unless overridden by explicit configure option, and
dnl warn about this.
AC_DEFUN([CF_NCURSES_ABI_6],[
if test "${with_abi_version+set}" != set; then
case $cf_cv_rel_version in
- 5.*)
+ (5.*)
cf_cv_rel_version=6.0
cf_cv_abi_version=6
- AC_MSG_WARN(Overriding ABI version to $cf_cv_abi_version)
+ AC_MSG_WARN(overriding ABI version to $cf_cv_abi_version)
;;
esac
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_NO_LEAKS_OPTION version: 5 updated: 2012/10/02 20:55:03
+dnl CF_NCURSES_WITH_ABI_VERSION version: 2 updated: 2015/12/19 17:51:52
+dnl ---------------------------
+dnl Allow ncurses's ABI to be overridden. Generally this happens when a
+dnl packager has incremented the ABI past that used in the original package,
+dnl and wishes to keep doing this.
+dnl
+dnl $1 is the package name, if any, to derive a corresponding {package}_ABI
+dnl symbol.
+AC_DEFUN([CF_NCURSES_WITH_ABI_VERSION],[
+CF_WITH_ABI_VERSION($1)
+if test "x$cf_cv_abi_version" != "x$with_abi_version"
+then
+ case $cf_cv_rel_version in
+ (5.*)
+ cf_cv_rel_version=$with_abi_version.0
+ ;;
+ esac
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_NO_LEAKS_OPTION version: 6 updated: 2015/04/12 15:39:00
dnl ------------------
dnl see CF_WITH_NO_LEAKS
AC_DEFUN([CF_NO_LEAKS_OPTION],[
@@ -4669,12 +5630,12 @@ AC_ARG_WITH($1,
[with_$1=])
AC_MSG_RESULT(${with_$1:-no})
-case .$with_cflags in #(vi
-.*-g*)
- case .$CFLAGS in #(vi
- .*-g*) #(vi
+case .$with_cflags in
+(.*-g*)
+ case .$CFLAGS in
+ (.*-g*)
;;
- *)
+ (*)
CF_ADD_CFLAGS([-g])
;;
esac
@@ -4682,17 +5643,17 @@ case .$with_cflags in #(vi
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_NUMBER_SYNTAX version: 1 updated: 2003/09/20 18:12:49
+dnl CF_NUMBER_SYNTAX version: 2 updated: 2015/04/17 21:13:04
dnl ----------------
dnl Check if the given variable is a number. If not, report an error.
dnl $1 is the variable
dnl $2 is the message
AC_DEFUN([CF_NUMBER_SYNTAX],[
if test -n "$1" ; then
- case $1 in #(vi
- [[0-9]]*) #(vi
+ case $1 in
+ ([[0-9]]*)
;;
- *)
+ (*)
AC_MSG_ERROR($2 is not a number: $1)
;;
esac
@@ -4701,27 +5662,27 @@ else
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_OBJ_SUBDIR version: 6 updated: 2013/09/07 14:06:10
+dnl CF_OBJ_SUBDIR version: 7 updated: 2015/04/17 21:13:04
dnl -------------
dnl Compute the object-directory name from the given model name
AC_DEFUN([CF_OBJ_SUBDIR],
[
case $1 in
- libtool) $2='obj_lo' ;;
- normal) $2='objects' ;;
- debug) $2='obj_g' ;;
- profile) $2='obj_p' ;;
- shared)
- case $cf_cv_system_name in #(vi
- cygwin|msys) #(vi
+ (libtool) $2='obj_lo' ;;
+ (normal) $2='objects' ;;
+ (debug) $2='obj_g' ;;
+ (profile) $2='obj_p' ;;
+ (shared)
+ case $cf_cv_system_name in
+ (cygwin|msys)
$2='objects' ;;
- *)
+ (*)
$2='obj_s' ;;
esac
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PATHSEP version: 6 updated: 2012/09/29 18:38:12
+dnl CF_PATHSEP version: 7 updated: 2015/04/12 15:39:00
dnl ----------
dnl Provide a value for the $PATH and similar separator (or amend the value
dnl as provided in autoconf 2.5x).
@@ -4729,15 +5690,60 @@ AC_DEFUN([CF_PATHSEP],
[
AC_MSG_CHECKING(for PATH separator)
case $cf_cv_system_name in
- os2*) PATH_SEPARATOR=';' ;;
- *) ${PATH_SEPARATOR:=':'} ;;
+ (os2*) PATH_SEPARATOR=';' ;;
+ (*) ${PATH_SEPARATOR:=':'} ;;
esac
ifelse([$1],,,[$1=$PATH_SEPARATOR])
AC_SUBST(PATH_SEPARATOR)
AC_MSG_RESULT($PATH_SEPARATOR)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PATH_SYNTAX version: 14 updated: 2012/06/19 20:58:54
+dnl CF_PATH_PROG version: 10 updated: 2019/06/30 19:44:43
+dnl ------------
+dnl Check for a given program, defining corresponding symbol.
+dnl $1 = environment variable, which is suffixed by "_PATH" in the #define.
+dnl $2 = program name to find.
+dnl $3 = optional list of additional program names to test.
+dnl $4 = $PATH
+dnl
+dnl If there is more than one token in the result, #define the remaining tokens
+dnl to $1_ARGS. We need this for 'install' in particular.
+dnl
+dnl FIXME: we should allow this to be overridden by environment variables
+dnl
+AC_DEFUN([CF_PATH_PROG],[
+AC_REQUIRE([CF_PATHSEP])
+test -z "[$]$1" && $1=$2
+AC_PATH_PROGS($1,[$]$1 $2 ifelse($3,,,$3),[$]$1, ifelse($4,,,$4))
+
+cf_path_prog=""
+cf_path_args=""
+IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
+for cf_temp in $ac_cv_path_$1
+do
+ if test -z "$cf_path_prog" ; then
+ if test "$with_full_paths" = yes ; then
+ CF_PATH_SYNTAX(cf_temp,break)
+ cf_path_prog="$cf_temp"
+ else
+ cf_path_prog="`basename $cf_temp`"
+ fi
+ elif test -z "$cf_path_args" ; then
+ cf_path_args="$cf_temp"
+ else
+ cf_path_args="$cf_path_args $cf_temp"
+ fi
+done
+IFS="$cf_save_ifs"
+
+if test -n "$cf_path_prog" ; then
+ CF_MSG_LOG(defining path for ${cf_path_prog})
+ AC_DEFINE_UNQUOTED($1_PATH,"$cf_path_prog",Define to pathname $1)
+ test -n "$cf_path_args" && AC_DEFINE_UNQUOTED($1_ARGS,"$cf_path_args",Define to provide args for $1)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_PATH_SYNTAX version: 16 updated: 2015/04/18 08:56:57
dnl --------------
dnl Check the argument to see that it looks like a pathname. Rewrite it if it
dnl begins with one of the prefix/exec_prefix variables, and then again if the
@@ -4745,36 +5751,36 @@ dnl result begins with 'NONE'. This is necessary to work around autoconf's
dnl delayed evaluation of those symbols.
AC_DEFUN([CF_PATH_SYNTAX],[
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
+ cf_path_syntax="$ac_default_prefix"
fi
-case ".[$]$1" in #(vi
-.\[$]\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[[a-zA-Z]]:[[\\/]]*) #(vi OS/2 EMX
- ;;
-.\[$]{*prefix}*|.\[$]{*dir}*) #(vi
- eval $1="[$]$1"
- case ".[$]$1" in #(vi
- .NONE/*)
- $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
- ;;
+case ".[$]$1" in
+(.\[$]\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX
+ ;;
+(.\[$]{*prefix}*|.\[$]{*dir}*)
+ eval $1="[$]$1"
+ case ".[$]$1" in
+ (.NONE/*)
+ $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
+ ;;
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PKG_CONFIG version: 7 updated: 2011/04/29 04:53:22
+dnl CF_PKG_CONFIG version: 10 updated: 2015/04/26 18:06:58
dnl -------------
dnl Check for the package-config program, unless disabled by command-line.
AC_DEFUN([CF_PKG_CONFIG],
@@ -4786,16 +5792,16 @@ AC_ARG_WITH(pkg-config,
[cf_pkg_config=yes])
AC_MSG_RESULT($cf_pkg_config)
-case $cf_pkg_config in #(vi
-no) #(vi
+case $cf_pkg_config in
+(no)
PKG_CONFIG=none
;;
-yes) #(vi
+(yes)
CF_ACVERSION_CHECK(2.52,
[AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)],
[AC_PATH_PROG(PKG_CONFIG, pkg-config, none)])
;;
-*)
+(*)
PKG_CONFIG=$withval
;;
esac
@@ -4803,12 +5809,14 @@ esac
test -z "$PKG_CONFIG" && PKG_CONFIG=none
if test "$PKG_CONFIG" != none ; then
CF_PATH_SYNTAX(PKG_CONFIG)
+elif test "x$cf_pkg_config" != xno ; then
+ AC_MSG_WARN(pkg-config is not installed)
fi
AC_SUBST(PKG_CONFIG)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_POSIX_C_SOURCE version: 8 updated: 2010/05/26 05:38:42
+dnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17
dnl -----------------
dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
dnl
@@ -4823,7 +5831,10 @@ dnl
dnl Parameters:
dnl $1 is the nominal value for _POSIX_C_SOURCE
AC_DEFUN([CF_POSIX_C_SOURCE],
-[
+[AC_REQUIRE([CF_POSIX_VISIBLE])dnl
+
+if test "$cf_cv_posix_visible" = no; then
+
cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
cf_save_CFLAGS="$CFLAGS"
@@ -4840,15 +5851,15 @@ make an error
#endif],
[cf_cv_posix_c_source=no],
[cf_want_posix_source=no
- case .$cf_POSIX_C_SOURCE in #(vi
- .[[12]]??*) #(vi
+ case .$cf_POSIX_C_SOURCE in
+ (.[[12]]??*)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
;;
- .2) #(vi
+ (.2)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
cf_want_posix_source=yes
;;
- .*)
+ (.*)
cf_want_posix_source=yes
;;
esac
@@ -4861,7 +5872,8 @@ make an error
fi
CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
CFLAGS="$cf_trim_CFLAGS"
- CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+ CPPFLAGS="$cf_trim_CPPFLAGS"
+ CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source)
CF_MSG_LOG(if the second compile does not leave our definition intact error)
AC_TRY_COMPILE([#include <sys/types.h>],[
#ifndef _POSIX_C_SOURCE
@@ -4879,6 +5891,35 @@ if test "$cf_cv_posix_c_source" != no ; then
CF_ADD_CFLAGS($cf_cv_posix_c_source)
fi
+fi # cf_cv_posix_visible
+
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17
+dnl ----------------
+dnl POSIX documents test-macros which an application may set before any system
+dnl headers are included to make features available.
+dnl
+dnl Some BSD platforms (originally FreeBSD, but copied by a few others)
+dnl diverged from POSIX in 2002 by setting symbols which make all of the most
+dnl recent features visible in the system header files unless the application
+dnl overrides the corresponding test-macros. Doing that introduces portability
+dnl problems.
+dnl
+dnl This macro makes a special check for the symbols used for this, to avoid a
+dnl conflicting definition.
+AC_DEFUN([CF_POSIX_VISIBLE],
+[
+AC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[
+AC_TRY_COMPILE([#include <stdio.h>],[
+#if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
+ && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
+ && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
+ && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
+#error conflicting symbols found
+#endif
+],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes])
+])
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_PREDEFINE version: 2 updated: 2010/05/26 16:44:57
@@ -4954,20 +5995,24 @@ AC_PROG_AWK
test -z "$AWK" && AC_MSG_ERROR(No awk program found)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_CC version: 3 updated: 2012/10/06 15:31:55
+dnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54
dnl ----------
dnl standard check for CC, plus followup sanity checks
dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
AC_DEFUN([CF_PROG_CC],[
+CF_ACVERSION_CHECK(2.53,
+ [AC_MSG_WARN(this will incorrectly handle gnatgcc choice)
+ AC_REQUIRE([AC_PROG_CC])],
+ [])
ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
CF_GCC_VERSION
CF_ACVERSION_CHECK(2.52,
[AC_PROG_CC_STDC],
[CF_ANSI_CC_REQD])
-CF_CC_ENV_FLAGS
+CF_CC_ENV_FLAGS
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_CC_C_O version: 3 updated: 2010/08/14 18:25:37
+dnl CF_PROG_CC_C_O version: 5 updated: 2017/01/21 11:06:25
dnl --------------
dnl Analogous to AC_PROG_CC_C_O, but more useful: tests only $CC, ensures that
dnl the output file can be renamed, and allows for a shell variable that can
@@ -4975,21 +6020,23 @@ dnl be used later. The parameter is either CC or CXX. The result is the
dnl cache variable:
dnl $cf_cv_prog_CC_c_o
dnl $cf_cv_prog_CXX_c_o
+dnl
+dnl $1 = compiler
+dnl $2 = compiler options, if any
AC_DEFUN([CF_PROG_CC_C_O],
[AC_REQUIRE([AC_PROG_CC])dnl
AC_MSG_CHECKING([whether [$]$1 understands -c and -o together])
AC_CACHE_VAL(cf_cv_prog_$1_c_o,
[
cat > conftest.$ac_ext <<CF_EOF
-#include <stdio.h>
-int main()
+int main(void)
{
${cf_cv_main_return:-return}(0);
}
CF_EOF
# We do the test twice because some compilers refuse to overwrite an
# existing .o file with -o, though they will create one.
-ac_try='[$]$1 -c conftest.$ac_ext -o conftest2.$ac_objext >&AC_FD_CC'
+ac_try='[$]$1 $2 -c conftest.$ac_ext -o conftest2.$ac_objext >&AC_FD_CC'
if AC_TRY_EVAL(ac_try) &&
test -f conftest2.$ac_objext && AC_TRY_EVAL(ac_try);
then
@@ -5006,40 +6053,103 @@ else
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_EGREP version: 1 updated: 2006/09/16 11:40:59
+dnl CF_PROG_EGREP version: 2 updated: 2015/04/18 08:56:57
dnl -------------
dnl AC_PROG_EGREP was introduced in autoconf 2.53.
dnl This macro adds a check to ensure the script found something.
AC_DEFUN([CF_PROG_EGREP],
[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
- [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
- then ac_cv_prog_egrep='grep -E'
- else ac_cv_prog_egrep='egrep'
- fi])
- EGREP=$ac_cv_prog_egrep
- AC_SUBST([EGREP])
-test -z "$EGREP" && AC_MSG_ERROR(No egrep program found)
+ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+ test -z "$EGREP" && AC_MSG_ERROR(No egrep program found)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_GNAT version: 2 updated: 2011/10/22 14:01:47
+dnl CF_PROG_GNAT version: 10 updated: 2019/12/31 08:53:54
dnl ------------
-dnl Check for gnatmake, ensure that it is complete.
+dnl Check for gnat/gnatmake/etc, ensure that the toolset is complete.
AC_DEFUN([CF_PROG_GNAT],[
-cf_ada_make=gnatmake
-AC_CHECK_PROG(gnat_exists, $cf_ada_make, yes, no)
-if test "$ac_cv_prog_gnat_exists" = no; then
- cf_ada_make=
- cf_cv_prog_gnat_correct=no
+for cf_prog_gnat in gnat gnatmake gprconfig gprbuild
+do
+ CF_UPPER(cf_upper_prog_gnat,${cf_prog_gnat})
+
+ unset ac_cv_path_cf_TEMP_gnat
+ unset cf_TEMP_gnat
+ AC_PATH_PROG(cf_TEMP_gnat,$cf_prog_gnat,no)
+ eval cf_cv_PATH_$cf_upper_prog_gnat=[$]ac_cv_path_cf_TEMP_gnat
+
+ if test "x$cf_TEMP_gnat" != xno; then
+ unset cf_cv_gnat_version
+ unset cf_TEMP_gnat
+ CF_GNAT_VERSION(cf_TEMP_gnat,$cf_prog_gnat)
+ fi
+ eval cf_cv_VERSION_$cf_upper_prog_gnat=[$]cf_TEMP_gnat
+
+ unset cf_TEMP_gnat
+ unset cf_cv_gnat_version
+ unset ac_cv_path_cf_TEMP_gnat
+done
+
+if test "x$cf_cv_VERSION_GNATMAKE" = "xno"; then
+ cf_ada_make=
+ cf_cv_prog_gnat_correct=no
else
- CF_GNAT_VERSION
- AC_CHECK_PROG(M4_exists, m4, yes, no)
- if test "$ac_cv_prog_M4_exists" = no; then
- cf_cv_prog_gnat_correct=no
- echo Ada95 binding required program m4 not found. Ada95 binding disabled.
- fi
- if test "$cf_cv_prog_gnat_correct" = yes; then
- AC_MSG_CHECKING(if GNAT works)
- CF_GNAT_TRY_RUN([procedure conftest;],
+ cf_ada_make=gnatmake
+ if test "x$cf_cv_VERSION_GPRCONFIG" = "xno"; then
+ # gprconfig is newer than gnatmake; we can continue...
+ cf_ada_config="##"
+ else
+ rm -rf conftest* *~conftest*
+ if mkdir conftest.src
+ then
+ cf_ada_config=""
+ cd conftest.src
+ for cf_gprconfig in Ada C
+ do
+ AC_MSG_CHECKING(for gprconfig name for $cf_gprconfig)
+ if test $cf_gprconfig = C
+ then
+ for cf_gprconfig_param in \
+ $cf_gprconfig,,,,GNATGCC \
+ $cf_gprconfig,,,,GCC \
+ $cf_gprconfig
+ do
+ cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AC_FD_CC | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1`
+ test -n "$cf_gprconfig_value" && break
+ done
+ else
+ cf_gprconfig_param=$cf_gprconfig
+ cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AC_FD_CC | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1`
+ fi
+ if test -n "$cf_gprconfig_value"
+ then
+ eval cf_ada_config_[$]cf_gprconfig=[$]cf_gprconfig_value
+ AC_MSG_RESULT($cf_gprconfig_value)
+ else
+ AC_MSG_RESULT(missing)
+ cf_ada_config="#"
+ break
+ fi
+ done
+ cd ..
+ rm -rf conftest* *~conftest*
+ fi
+ fi
+ if test "x$cf_ada_config" != "x#"
+ then
+ CF_GNAT_VERSION
+ CF_CHECK_GNAT_VERSION
+ AC_CHECK_PROG(M4_exists, m4, yes, no)
+ if test "$ac_cv_prog_M4_exists" = no; then
+ cf_cv_prog_gnat_correct=no
+ AC_MSG_WARN(Ada95 binding required program m4 not found. Ada95 binding disabled)
+ fi
+ if test "$cf_cv_prog_gnat_correct" = yes; then
+ AC_MSG_CHECKING(if GNAT works)
+ CF_GNAT_TRY_RUN([procedure conftest;],
[with Text_IO;
with GNAT.OS_Lib;
procedure conftest is
@@ -5047,15 +6157,23 @@ begin
Text_IO.Put ("Hello World");
Text_IO.New_Line;
GNAT.OS_Lib.OS_Exit (0);
-end conftest;],[cf_cv_prog_gnat_correct=yes],[cf_cv_prog_gnat_correct=no])
- AC_MSG_RESULT($cf_cv_prog_gnat_correct)
- fi
+end conftest;],
+[cf_cv_prog_gnat_correct=yes],
+[cf_cv_prog_gnat_correct=no])
+ AC_MSG_RESULT($cf_cv_prog_gnat_correct)
+ fi
+ else
+ cf_cv_prog_gnat_correct=no
+ fi
fi
AC_SUBST(cf_ada_make)
+AC_SUBST(cf_ada_config)
+AC_SUBST(cf_ada_config_Ada)
+AC_SUBST(cf_ada_config_C)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_INSTALL version: 5 updated: 2002/12/21 22:46:07
+dnl CF_PROG_INSTALL version: 7 updated: 2015/04/18 08:56:57
dnl ---------------
dnl Force $INSTALL to be an absolute-path. Otherwise, edit_man.sh and the
dnl misc/tabset install won't work properly. Usually this happens only when
@@ -5063,41 +6181,46 @@ dnl using the fallback mkinstalldirs script
AC_DEFUN([CF_PROG_INSTALL],
[AC_PROG_INSTALL
case $INSTALL in
-/*)
- ;;
-*)
- CF_DIRNAME(cf_dir,$INSTALL)
- test -z "$cf_dir" && cf_dir=.
- INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
- ;;
+(/*)
+ ;;
+(*)
+ CF_DIRNAME(cf_dir,$INSTALL)
+ test -z "$cf_dir" && cf_dir=.
+ INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
+ ;;
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_LDCONFIG version: 3 updated: 2011/06/04 20:09:13
+dnl CF_PROG_LDCONFIG version: 5 updated: 2015/04/18 08:56:57
dnl ----------------
dnl Check for ldconfig, needed to fixup shared libraries that would be built
dnl and then used in the install.
AC_DEFUN([CF_PROG_LDCONFIG],[
if test "$cross_compiling" = yes ; then
- LDCONFIG=:
+ LDCONFIG=:
else
-case "$cf_cv_system_name" in #(vi
-dragonfly*|mirbsd*|freebsd*) #(vi
- test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
- ;;
-*) LDPATH=$PATH:/sbin:/usr/sbin
- AC_PATH_PROG(LDCONFIG,ldconfig,,$LDPATH)
- ;;
-esac
+ case "$cf_cv_system_name" in
+ (dragonfly*|mirbsd*|freebsd*)
+ test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
+ ;;
+ (*) LDPATH=$PATH:/sbin:/usr/sbin
+ AC_PATH_PROG(LDCONFIG,ldconfig,,$LDPATH)
+ ;;
+ esac
fi
AC_SUBST(LDCONFIG)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_LINT version: 2 updated: 2009/08/12 04:43:14
+dnl CF_PROG_LINT version: 4 updated: 2019/11/20 18:55:37
dnl ------------
AC_DEFUN([CF_PROG_LINT],
[
-AC_CHECK_PROGS(LINT, tdlint lint alint splint lclint)
+AC_CHECK_PROGS(LINT, lint cppcheck splint)
+case "x$LINT" in
+(xcppcheck|x*/cppcheck)
+ test -z "$LINT_OPTS" && LINT_OPTS="--enable=all"
+ ;;
+esac
AC_SUBST(LINT_OPTS)
])dnl
dnl ---------------------------------------------------------------------------
@@ -5123,7 +6246,7 @@ AC_MSG_RESULT($cf_prog_ln_sf)
test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f"
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_REGEX version: 10 updated: 2012/10/04 20:12:20
+dnl CF_REGEX version: 12 updated: 2015/04/18 08:56:57
dnl --------
dnl Attempt to determine if we've got one of the flavors of regular-expression
dnl code that we can support.
@@ -5133,8 +6256,8 @@ AC_DEFUN([CF_REGEX],
cf_regex_func=no
cf_regex_libs="regex re"
-case $host_os in #(vi
-mingw*)
+case $host_os in
+(mingw*)
cf_regex_libs="gnurx $cf_regex_libs"
;;
esac
@@ -5163,8 +6286,8 @@ fi
AC_CACHE_CHECK(for regular-expression headers,cf_cv_regex_hdrs,[
cf_cv_regex_hdrs=no
-case $cf_regex_func in #(vi
-compile) #(vi
+case $cf_regex_func in
+(compile)
for cf_regex_hdr in regexp.h regexpr.h
do
AC_TRY_LINK([#include <$cf_regex_hdr>],[
@@ -5176,7 +6299,7 @@ compile) #(vi
])
done
;;
-*)
+(*)
for cf_regex_hdr in regex.h
do
AC_TRY_LINK([#include <sys/types.h>
@@ -5195,11 +6318,11 @@ esac
])
-case $cf_cv_regex_hdrs in #(vi
- no) AC_MSG_WARN(no regular expression header found) ;; #(vi
- regex.h) AC_DEFINE(HAVE_REGEX_H_FUNCS,1,[Define to 1 to include regex.h for regular expressions]) ;; #(vi
- regexp.h) AC_DEFINE(HAVE_REGEXP_H_FUNCS,1,[Define to 1 to include regexp.h for regular expressions]) ;; #(vi
- regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS,1,[Define to 1 to include regexpr.h for regular expressions]) ;;
+case $cf_cv_regex_hdrs in
+ (no) AC_MSG_WARN(no regular expression header found) ;;
+ (regex.h) AC_DEFINE(HAVE_REGEX_H_FUNCS,1,[Define to 1 to include regex.h for regular expressions]) ;;
+ (regexp.h) AC_DEFINE(HAVE_REGEXP_H_FUNCS,1,[Define to 1 to include regexp.h for regular expressions]) ;;
+ (regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS,1,[Define to 1 to include regexpr.h for regular expressions]) ;;
esac
])dnl
dnl ---------------------------------------------------------------------------
@@ -5233,6 +6356,17 @@ define([CF_REMOVE_LIB],
$1=`echo "$2" | sed -e 's/-l$3[[ ]]//g' -e 's/-l$3[$]//'`
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45
+dnl ---------------------
+dnl Restore flags saved in CF_SAVE_XTRA_FLAGS
+dnl $1 = name of current macro
+define([CF_RESTORE_XTRA_FLAGS],
+[
+LIBS="$cf_save_LIBS_$1"
+CFLAGS="$cf_save_CFLAGS_$1"
+CPPFLAGS="$cf_save_CPPFLAGS_$1"
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_RPATH_HACK version: 11 updated: 2013/09/01 13:02:00
dnl -------------
AC_DEFUN([CF_RPATH_HACK],
@@ -5290,7 +6424,7 @@ fi
AC_SUBST(EXTRA_LDFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_RPATH_HACK_2 version: 6 updated: 2010/04/17 16:31:24
+dnl CF_RPATH_HACK_2 version: 7 updated: 2015/04/12 15:39:00
dnl ---------------
dnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to
dnl EXTRA_LDFLAGS for each -L option found.
@@ -5306,8 +6440,8 @@ CF_VERBOSE(...checking $1 [$]$1)
cf_rpath_dst=
for cf_rpath_src in [$]$1
do
- case $cf_rpath_src in #(vi
- -L*) #(vi
+ case $cf_rpath_src in
+ (-L*)
# check if this refers to a directory which we will ignore
cf_rpath_skip=no
@@ -5350,7 +6484,32 @@ CF_VERBOSE(...checked $1 [$]$1)
AC_SUBST(EXTRA_LDFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SHARED_OPTS version: 84 updated: 2013/11/03 06:26:10
+dnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44
+dnl ------------------
+dnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers
+dnl and libraries which do not update those variables.
+dnl
+dnl $1 = name of current macro
+define([CF_SAVE_XTRA_FLAGS],
+[
+cf_save_LIBS_$1="$LIBS"
+cf_save_CFLAGS_$1="$CFLAGS"
+cf_save_CPPFLAGS_$1="$CPPFLAGS"
+LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
+for cf_X_CFLAGS in $X_CFLAGS
+do
+ case "x$cf_X_CFLAGS" in
+ x-[[IUD]]*)
+ CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
+ ;;
+ *)
+ CFLAGS="$CFLAGS $cf_X_CFLAGS"
+ ;;
+ esac
+done
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_SHARED_OPTS version: 93 updated: 2018/08/18 16:36:35
dnl --------------
dnl --------------
dnl Attempt to determine the appropriate CC/LD options for creating a shared
@@ -5378,6 +6537,7 @@ dnl Some loaders leave 'so_locations' lying around. It's nice to clean up.
AC_DEFUN([CF_SHARED_OPTS],
[
AC_REQUIRE([CF_LD_RPATH_OPT])
+
RM_SHARED_OPTS=
LOCAL_LDFLAGS=
LOCAL_LDFLAGS2=
@@ -5399,15 +6559,16 @@ AC_DEFUN([CF_SHARED_OPTS],
AC_ARG_WITH(shlib-version,
[ --with-shlib-version=X Specify rel or abi version for shared libs],
[test -z "$withval" && withval=auto
- case $withval in #(vi
- yes) #(vi
+ case $withval in
+ (yes)
cf_cv_shlib_version=auto
;;
- rel|abi|auto|no) #(vi
+ (rel|abi|auto)
cf_cv_shlib_version=$withval
;;
- *)
- AC_MSG_ERROR([option value must be one of: rel, abi, auto or no])
+ (*)
+ AC_MSG_RESULT($withval)
+ AC_MSG_ERROR([option value must be one of: rel, abi, or auto])
;;
esac
],[cf_cv_shlib_version=auto])
@@ -5418,8 +6579,21 @@ AC_DEFUN([CF_SHARED_OPTS],
# Some less-capable ports of gcc support only -fpic
CC_SHARED_OPTS=
+
+ cf_try_fPIC=no
if test "$GCC" = yes
then
+ cf_try_fPIC=yes
+ else
+ case $cf_cv_system_name in
+ (*linux*) # e.g., PGI compiler
+ cf_try_fPIC=yes
+ ;;
+ esac
+ fi
+
+ if test "$cf_try_fPIC" = yes
+ then
AC_MSG_CHECKING(which $CC option to use)
cf_save_CFLAGS="$CFLAGS"
for CC_SHARED_OPTS in -fPIC -fpic ''
@@ -5433,30 +6607,30 @@ AC_DEFUN([CF_SHARED_OPTS],
cf_cv_shlib_version_infix=no
- case $cf_cv_system_name in #(vi
- aix4.[3-9]*|aix[[5-7]]*) #(vi
+ case $cf_cv_system_name in
+ (aix4.[3-9]*|aix[[5-7]]*)
if test "$GCC" = yes; then
- CC_SHARED_OPTS=
- MK_SHARED_LIB='${CC} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
+ CC_SHARED_OPTS='-Wl,-brtl'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
else
- # CC_SHARED_OPTS='-qpic=large -G'
- # perhaps "-bM:SRE -bnoentry -bexpall"
- MK_SHARED_LIB='${CC} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
+ CC_SHARED_OPTS='-brtl'
+ # as well as '-qpic=large -G' or perhaps "-bM:SRE -bnoentry -bexpall"
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
fi
;;
- beos*) #(vi
- MK_SHARED_LIB='${CC} ${CFLAGS} -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0'
+ (beos*)
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0'
;;
- cygwin*) #(vi
+ (cygwin*)
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cf_cv_shlib_version=cygdll
cf_cv_shlib_version_infix=cygdll
shlibdir=$bindir
MAKE_DLLS=
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\[$]1
IMPORT_LIB=\`echo "\[$]1" | sed -e 's/cyg/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
shift
@@ -5465,20 +6639,20 @@ AC_DEFUN([CF_SHARED_OPTS],
** SHARED_LIB \[$]SHARED_LIB
** IMPORT_LIB \[$]IMPORT_LIB
EOF
- exec \[$]* -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
+ exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
CF_EOF
chmod +x mk_shared_lib.sh
;;
- msys*) #(vi
+ (msys*)
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cf_cv_shlib_version=msysdll
cf_cv_shlib_version_infix=msysdll
shlibdir=$bindir
MAKE_DLLS=
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\[$]1
IMPORT_LIB=\`echo "\[$]1" | sed -e 's/msys-/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
shift
@@ -5487,14 +6661,14 @@ CF_EOF
** SHARED_LIB \[$]SHARED_LIB
** IMPORT_LIB \[$]IMPORT_LIB
EOF
- exec \[$]* -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
+ exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
CF_EOF
chmod +x mk_shared_lib.sh
;;
- darwin*) #(vi
+ (darwin*)
cf_try_cflags="no-cpp-precomp"
CC_SHARED_OPTS="-dynamic"
- MK_SHARED_LIB='${CC} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $[@]` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $[@]` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $[@]'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi
cf_cv_shlib_version_infix=yes
AC_CACHE_CHECK([if ld -search_paths_first works], cf_cv_ldflags_search_paths_first, [
@@ -5506,15 +6680,15 @@ CF_EOF
LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
fi
;;
- hpux[[7-8]]*) #(vi
- # HP-UX 8.07 ld lacks "+b" option used for libdir search-list
+ (hpux[[7-8]]*)
+ # HP-UX 8.07 ld lacks "+b" option used for libdir search-list
if test "$GCC" != yes; then
CC_SHARED_OPTS='+Z'
fi
- MK_SHARED_LIB='${LD} -b -o $[@]'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -b -o $[@]'
INSTALL_LIB="-m 555"
;;
- hpux*) #(vi
+ (hpux*)
# (tested with gcc 2.7.2 -- I don't have c89)
if test "$GCC" = yes; then
LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}'
@@ -5522,36 +6696,36 @@ CF_EOF
CC_SHARED_OPTS='+Z'
LD_SHARED_OPTS='-Wl,+b,${libdir}'
fi
- MK_SHARED_LIB='${LD} +b ${libdir} -b -o $[@]'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} +b ${libdir} -b -o $[@]'
# HP-UX shared libraries must be executable, and should be
# readonly to exploit a quirk in the memory manager.
INSTALL_LIB="-m 555"
;;
- interix*)
+ (interix*)
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
if test "$cf_cv_shlib_version" = rel; then
- cf_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
+ cf_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}'
else
- cf_shared_soname='`basename $@`'
+ cf_shared_soname='`basename $[@]`'
fi
CC_SHARED_OPTS=
- MK_SHARED_LIB='${CC} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $@'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $[@]'
;;
- irix*) #(vi
+ (irix*)
if test "$cf_cv_enable_rpath" = yes ; then
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
# tested with IRIX 5.2 and 'cc'.
if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
- MK_SHARED_LIB='${CC} -shared -rdata_shared -soname `basename $[@]` -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -rdata_shared -soname `basename $[@]` -o $[@]'
else
- MK_SHARED_LIB='${CC} -shared -Wl,-soname,`basename $[@]` -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,`basename $[@]` -o $[@]'
fi
cf_cv_rm_so_locs=yes
;;
- linux*|gnu*|k*bsd*-gnu) #(vi
- if test "$DFT_LWR_MODEL" = "shared" ; then
+ (linux*|gnu*|k*bsd*-gnu)
+ if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
@@ -5559,9 +6733,9 @@ CF_EOF
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CF_SHARED_SONAME
- MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
;;
- mingw*) #(vi
+ (mingw*)
cf_cv_shlib_version=mingw
cf_cv_shlib_version_infix=mingw
shlibdir=$bindir
@@ -5572,10 +6746,10 @@ CF_EOF
EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS"
fi
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
+ #!$SHELL
SHARED_LIB=\[$]1
IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
shift
@@ -5584,12 +6758,12 @@ CF_EOF
** SHARED_LIB \[$]SHARED_LIB
** IMPORT_LIB \[$]IMPORT_LIB
EOF
- exec \[$]* -shared -Wl,--enable-auto-import,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
+ exec \[$]* ${LDFLAGS} -shared -Wl,--enable-auto-import,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
CF_EOF
chmod +x mk_shared_lib.sh
;;
- openbsd[[2-9]].*|mirbsd*) #(vi
- if test "$DFT_LWR_MODEL" = "shared" ; then
+ (openbsd[[2-9]].*|mirbsd*)
+ if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
@@ -5598,14 +6772,14 @@ CF_EOF
fi
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
CF_SHARED_SONAME
- MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
;;
- nto-qnx*|openbsd*|freebsd[[12]].*) #(vi
+ (nto-qnx*|openbsd*|freebsd[[12]].*)
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
- MK_SHARED_LIB='${LD} -Bshareable -o $[@]'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -Bshareable -o $[@]'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
;;
- dragonfly*|freebsd*) #(vi
+ (dragonfly*|freebsd*)
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
@@ -5613,9 +6787,9 @@ CF_EOF
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CF_SHARED_SONAME
- MK_SHARED_LIB='${LD} -shared -Bshareable -soname=`basename $[@]` -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
;;
- netbsd*) #(vi
+ (netbsd*)
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
@@ -5629,34 +6803,34 @@ CF_EOF
fi
fi
CF_SHARED_SONAME
- MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $[@]'
else
- MK_SHARED_LIB='${CC} -Wl,-shared -Wl,-Bshareable -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -Wl,-shared -Wl,-Bshareable -o $[@]'
fi
;;
- osf*|mls+*) #(vi
+ (osf*|mls+*)
# tested with OSF/1 V3.2 and 'cc'
# tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't
# link with shared libs).
- MK_SHARED_LIB='${LD} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $[@]`'
- case $host_os in #(vi
- osf4*)
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $[@]`'
+ case $host_os in
+ (osf4*)
MK_SHARED_LIB="${MK_SHARED_LIB} -msym"
;;
esac
MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $[@]'
- if test "$DFT_LWR_MODEL" = "shared" ; then
+ if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
cf_cv_rm_so_locs=yes
;;
- sco3.2v5*) # (also uw2* and UW7: hops 13-Apr-98
+ (sco3.2v5*) # also uw2* and UW7: hops 13-Apr-98
# tested with osr5.0.5
if test "$GCC" != yes; then
CC_SHARED_OPTS='-belf -KPIC'
fi
- MK_SHARED_LIB='${LD} -dy -G -h `basename $[@] .${REL_VERSION}`.${ABI_VERSION} -o [$]@'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -dy -G -h `basename $[@] .${REL_VERSION}`.${ABI_VERSION} -o [$]@'
if test "$cf_cv_enable_rpath" = yes ; then
# only way is to set LD_RUN_PATH but no switch for it
RUN_PATH=$libdir
@@ -5665,15 +6839,15 @@ CF_EOF
LINK_PROGS='LD_RUN_PATH=${libdir}'
LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib'
;;
- sunos4*) #(vi
+ (sunos4*)
# tested with SunOS 4.1.1 and gcc 2.7.0
if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='${LD} -assert pure-text -o $[@]'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -assert pure-text -o $[@]'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
;;
- solaris2*) #(vi
+ (solaris2*)
# tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
# tested with SunOS 5.10 (solaris 10) and gcc 3.4.3
if test "$DFT_LWR_MODEL" = "shared" ; then
@@ -5693,32 +6867,32 @@ CF_EOF
done
CFLAGS="$cf_save_CFLAGS"
CC_SHARED_OPTS=$cf_shared_opts
- MK_SHARED_LIB='${CC} -dy -G -h '$cf_cv_shared_soname' -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -h '$cf_cv_shared_soname' -o $[@]'
else
- MK_SHARED_LIB='${CC} -shared -dy -G -h '$cf_cv_shared_soname' -o $[@]'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -h '$cf_cv_shared_soname' -o $[@]'
fi
;;
- sysv5uw7*|unix_sv*) #(vi
+ (sysv5uw7*|unix_sv*)
# tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='${LD} -d y -G -o [$]@'
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -d y -G -o [$]@'
;;
- *)
+ (*)
CC_SHARED_OPTS='unknown'
MK_SHARED_LIB='echo unknown'
;;
esac
# This works if the last tokens in $MK_SHARED_LIB are the -o target.
- case "$cf_cv_shlib_version" in #(vi
- rel|abi)
- case "$MK_SHARED_LIB" in #(vi
- *'-o $[@]') #(vi
+ case "$cf_cv_shlib_version" in
+ (rel|abi)
+ case "$MK_SHARED_LIB" in
+ (*'-o $[@]')
test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
;;
- *)
+ (*)
AC_MSG_WARN(ignored --with-shlib-version)
;;
esac
@@ -5796,12 +6970,12 @@ define([CF_SHARED_SONAME],
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_SIGWINCH version: 1 updated: 2006/04/02 16:41:09
+dnl CF_SIGWINCH version: 2 updated: 2019/03/23 19:54:44
dnl -----------
dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all
dnl programs need this test).
dnl
-dnl This is really a MacOS X 10.4.3 workaround. Defining _POSIX_C_SOURCE
+dnl This is really a Mac OS X 10.4.3 workaround. Defining _POSIX_C_SOURCE
dnl forces SIGWINCH to be undefined (breaks xterm, ncurses). Oddly, the struct
dnl winsize declaration is left alone - we may revisit this if Apple choose to
dnl break that part of the interface as well.
@@ -5855,9 +7029,9 @@ done
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SIG_ATOMIC_T version: 3 updated: 2012/10/04 20:12:20
+dnl CF_SIG_ATOMIC_T version: 4 updated: 2020/01/18 12:30:44
dnl ---------------
-dnl signal handler, but there are some gcc depedencies in that recommendation.
+dnl signal handler, but there are some gcc dependencies in that recommendation.
dnl Try anyway.
AC_DEFUN([CF_SIG_ATOMIC_T],
[
@@ -5890,23 +7064,27 @@ AC_MSG_RESULT($cf_cv_sig_atomic_t)
test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SIZECHANGE version: 9 updated: 2012/10/06 11:17:15
+dnl CF_SIZECHANGE version: 14 updated: 2018/06/20 20:23:13
dnl -------------
dnl Check for definitions & structures needed for window size-changing
-dnl FIXME: check that this works with "snake" (HP-UX 10.x)
+dnl
+dnl https://stackoverflow.com/questions/18878141/difference-between-structures-ttysize-and-winsize/50769952#50769952
AC_DEFUN([CF_SIZECHANGE],
[
AC_REQUIRE([CF_STRUCT_TERMIOS])
AC_CACHE_CHECK(declaration of size-change, cf_cv_sizechange,[
- cf_cv_sizechange=unknown
- cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_cv_sizechange=unknown
+ cf_save_CPPFLAGS="$CPPFLAGS"
for cf_opts in "" "NEED_PTEM_H"
do
- CPPFLAGS="$cf_save_CPPFLAGS"
- test -n "$cf_opts" && CPPFLAGS="$CPPFLAGS -D$cf_opts"
- AC_TRY_COMPILE([#include <sys/types.h>
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ if test -n "$cf_opts"
+ then
+ CF_APPEND_TEXT(CPPFLAGS,-D$cf_opts)
+ fi
+ AC_TRY_COMPILE([#include <sys/types.h>
#ifdef HAVE_TERMIOS_H
#include <termios.h>
#else
@@ -5914,24 +7092,26 @@ do
#include <termio.h>
#endif
#endif
+
#ifdef NEED_PTEM_H
/* This is a workaround for SCO: they neglected to define struct winsize in
* termios.h -- it's only in termio.h and ptem.h
*/
-#include <sys/stream.h>
-#include <sys/ptem.h>
+#include <sys/stream.h>
+#include <sys/ptem.h>
#endif
-#if !defined(sun) || !defined(HAVE_TERMIOS_H)
+
+#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#endif
],[
#ifdef TIOCGSIZE
- struct ttysize win; /* FIXME: what system is this? */
+ struct ttysize win; /* SunOS 3.0... */
int y = win.ts_lines;
int x = win.ts_cols;
#else
#ifdef TIOCGWINSZ
- struct winsize win;
+ struct winsize win; /* everything else */
int y = win.ws_row;
int x = win.ws_col;
#else
@@ -5951,16 +7131,16 @@ do
done
])
if test "$cf_cv_sizechange" != no ; then
- AC_DEFINE(HAVE_SIZECHANGE,1,[Define to 1 if sizechar declarations are provided])
- case $cf_cv_sizechange in #(vi
- NEED*)
+ AC_DEFINE(HAVE_SIZECHANGE,1,[Define to 1 if sizechange declarations are provided])
+ case $cf_cv_sizechange in
+ (NEED*)
AC_DEFINE_UNQUOTED($cf_cv_sizechange )
;;
esac
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SRC_MODULES version: 27 updated: 2013/08/03 18:18:08
+dnl CF_SRC_MODULES version: 31 updated: 2019/09/21 18:08:42
dnl --------------
dnl For each parameter, test if the source-directory exists, and if it contains
dnl a 'modules' file. If so, add to the list $cf_cv_src_modules which we'll
@@ -5970,6 +7150,7 @@ dnl This uses the configured value to make the lists SRC_SUBDIRS and
dnl SUB_MAKEFILES which are used in the makefile-generation scheme.
AC_DEFUN([CF_SRC_MODULES],
[
+AC_REQUIRE([CF_CHECK_GNAT_VERSION])
AC_MSG_CHECKING(for src modules)
# dependencies and linker-arguments for test-programs
@@ -5979,11 +7160,11 @@ if test "$DFT_LWR_MODEL" = "libtool"; then
TEST_ARGS="${TEST_DEPS}"
TEST_ARG2="${TEST_DEP2}"
else
- TEST_ARGS="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARGS"
- TEST_ARG2="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARG2"
+ TEST_ARGS="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARGS"
+ TEST_ARG2="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARG2"
fi
-PC_MODULES_TO_MAKE="ncurses${DFT_ARG_SUFFIX}"
+PC_MODULES_TO_MAKE="ncurses${USE_ARG_SUFFIX}"
cf_cv_src_modules=
for cf_dir in $1
do
@@ -5992,7 +7173,7 @@ do
# We may/may not have tack in the distribution, though the
# makefile is.
if test $cf_dir = tack ; then
- if test ! -f $srcdir/${cf_dir}/${cf_dir}.h; then
+ if test "x$cf_with_tack" != "xyes"; then
continue
fi
fi
@@ -6019,10 +7200,10 @@ do
TEST_ARGS="${TEST_DEPS}"
TEST_ARG2="${TEST_DEP2}"
else
- TEST_ARGS="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARGS"
- TEST_ARG2="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARG2"
+ TEST_ARGS="-l${cf_dir}${USE_ARG_SUFFIX} $TEST_ARGS"
+ TEST_ARG2="-l${cf_dir}${USE_ARG_SUFFIX} $TEST_ARG2"
fi
- PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ${cf_dir}${DFT_ARG_SUFFIX}"
+ PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ${cf_dir}${USE_ARG_SUFFIX}"
fi
fi
done
@@ -6049,11 +7230,10 @@ done
if test "x$cf_with_tests" != "xno" ; then
SRC_SUBDIRS="$SRC_SUBDIRS test"
fi
-if test "x$cf_with_db_install" = xyes; then
- test -z "$MAKE_TERMINFO" && SRC_SUBDIRS="$SRC_SUBDIRS misc"
-fi
+# always make this, to install the ncurses-config script
+SRC_SUBDIRS="$SRC_SUBDIRS misc"
if test "$cf_with_cxx_binding" != no; then
- PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ncurses++${DFT_ARG_SUFFIX}"
+ PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ncurses++${USE_ARG_SUFFIX}"
SRC_SUBDIRS="$SRC_SUBDIRS c++"
fi
@@ -6086,33 +7266,55 @@ if test -n "$ADA_SUBDIRS"; then
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_STDCPP_LIBRARY version: 7 updated: 2010/05/29 16:31:02
+dnl CF_STDCPP_LIBRARY version: 11 updated: 2015/10/17 19:03:33
dnl -----------------
dnl Check for -lstdc++, which is GNU's standard C++ library.
+dnl If $CXXLIBS is set, add that to the libraries used for test-linking.
+dnl If -lstdc++ was not already added to $LIBS or $CXXLIBS, and is needed,
+dnl add it to $CXXLIBS.
AC_DEFUN([CF_STDCPP_LIBRARY],
[
if test -n "$GXX" ; then
-case $cf_cv_system_name in #(vi
-os2*) #(vi
- cf_stdcpp_libname=stdcpp
- ;;
-*)
- cf_stdcpp_libname=stdc++
- ;;
-esac
-AC_CACHE_CHECK(for library $cf_stdcpp_libname,cf_cv_libstdcpp,[
+
cf_save="$LIBS"
- CF_ADD_LIB($cf_stdcpp_libname)
-AC_TRY_LINK([
-#include <strstream.h>],[
-char buf[80];
-strstreambuf foo(buf, sizeof(buf))
-],
- [cf_cv_libstdcpp=yes],
- [cf_cv_libstdcpp=no])
+ LIBS="$LIBS $CXXLIBS"
+ AC_MSG_CHECKING(if we already have C++ library)
+ AC_TRY_LINK([
+ #include <iostream>],[
+ std::cout << "Hello World!" << std::endl;],
+ [cf_have_libstdcpp=yes],
+ [cf_have_libstdcpp=no])
+ AC_MSG_RESULT($cf_have_libstdcpp)
LIBS="$cf_save"
-])
-test "$cf_cv_libstdcpp" = yes && CF_ADD_LIB($cf_stdcpp_libname,CXXLIBS)
+
+ if test $cf_have_libstdcpp != yes
+ then
+ case $cf_cv_system_name in
+ (os2*)
+ if test -z "`g++ -dM -E - < /dev/null | grep __KLIBC__`"; then
+ cf_stdcpp_libname=stdcpp
+ else
+ cf_stdcpp_libname=stdc++
+ fi
+ ;;
+ (*)
+ cf_stdcpp_libname=stdc++
+ ;;
+ esac
+
+ AC_CACHE_CHECK(for library $cf_stdcpp_libname,cf_cv_libstdcpp,[
+ cf_save="$LIBS"
+ LIBS="$LIBS $CXXLIBS"
+ CF_ADD_LIB($cf_stdcpp_libname)
+ AC_TRY_LINK([
+ #include <iostream>],[
+ std::cout << "Hello World!" << std::endl;],
+ [cf_cv_libstdcpp=yes],
+ [cf_cv_libstdcpp=no])
+ LIBS="$cf_save"
+ ])
+ test "$cf_cv_libstdcpp" = yes && { CF_ADD_LIB($cf_stdcpp_libname,CXXLIBS) }
+ fi
fi
])dnl
dnl ---------------------------------------------------------------------------
@@ -6149,7 +7351,7 @@ AC_MSG_RESULT($sigact_bad)
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_STRUCT_TERMIOS version: 7 updated: 2012/10/06 17:56:13
+dnl CF_STRUCT_TERMIOS version: 9 updated: 2018/06/08 21:57:23
dnl -----------------
dnl Some machines require _POSIX_SOURCE to completely define struct termios.
AC_DEFUN([CF_STRUCT_TERMIOS],[
@@ -6159,16 +7361,15 @@ AC_CHECK_HEADERS( \
termio.h \
termios.h \
unistd.h \
+sys/ioctl.h \
+sys/termio.h \
)
-if test "$ISC" = yes ; then
- AC_CHECK_HEADERS( sys/termio.h )
-fi
if test "$ac_cv_header_termios_h" = yes ; then
case "$CFLAGS $CPPFLAGS" in
- *-D_POSIX_SOURCE*)
+ (*-D_POSIX_SOURCE*)
termios_bad=dunno ;;
- *) termios_bad=maybe ;;
+ (*) termios_bad=maybe ;;
esac
if test "$termios_bad" = maybe ; then
AC_MSG_CHECKING(whether termios.h needs _POSIX_SOURCE)
@@ -6187,7 +7388,7 @@ if test "$ac_cv_header_termios_h" = yes ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SUBDIR_PATH version: 6 updated: 2010/04/21 06:20:50
+dnl CF_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06
dnl --------------
dnl Construct a search-list for a nonstandard header/lib-file
dnl $1 = the variable to return as result
@@ -6197,11 +7398,18 @@ AC_DEFUN([CF_SUBDIR_PATH],
[
$1=
-CF_ADD_SUBDIR_PATH($1,$2,$3,/usr,$prefix)
CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE)
-CF_ADD_SUBDIR_PATH($1,$2,$3,/usr/local,$prefix)
-CF_ADD_SUBDIR_PATH($1,$2,$3,/opt,$prefix)
-CF_ADD_SUBDIR_PATH($1,$2,$3,[$]HOME,$prefix)
+
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ [$]HOME
+do
+ CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix)
+done
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_SUBST_IF version: 2 updated: 2006/06/17 12:33:03
@@ -6249,7 +7457,7 @@ AC_SUBST(cf_cv_header_stdbool_h)
AC_SUBST(cf_cv_type_of_bool)dnl
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SYS_TIME_SELECT version: 5 updated: 2012/10/04 05:24:07
+dnl CF_SYS_TIME_SELECT version: 6 updated: 2015/04/18 08:56:57
dnl ------------------
dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on
dnl older SCO configurations.
@@ -6266,8 +7474,8 @@ AC_TRY_COMPILE([
#include <sys/select.h>
#endif
],[],[cf_cv_sys_time_select=yes],
- [cf_cv_sys_time_select=no])
- ])
+ [cf_cv_sys_time_select=no])
+ ])
AC_MSG_RESULT($cf_cv_sys_time_select)
test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT,1,[Define to 1 if we can include <sys/time.h> with <sys/select.h>])
])dnl
@@ -6281,7 +7489,34 @@ top_builddir=ifelse($1,,`pwd`,$1)
AC_SUBST(top_builddir)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_TRY_XOPEN_SOURCE version: 1 updated: 2011/10/30 17:09:50
+dnl CF_TRY_PKG_CONFIG version: 5 updated: 2013/07/06 21:27:06
+dnl -----------------
+dnl This is a simple wrapper to use for pkg-config, for libraries which may be
+dnl available in that form.
+dnl
+dnl $1 = package name
+dnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS
+dnl $3 = logic to use if pkg-config does not have the package
+AC_DEFUN([CF_TRY_PKG_CONFIG],[
+AC_REQUIRE([CF_PKG_CONFIG])
+
+if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists $1; then
+ CF_VERBOSE(found package $1)
+ cf_pkgconfig_incs="`$PKG_CONFIG --cflags $1 2>/dev/null`"
+ cf_pkgconfig_libs="`$PKG_CONFIG --libs $1 2>/dev/null`"
+ CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs)
+ CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs)
+ CF_ADD_CFLAGS($cf_pkgconfig_incs)
+ CF_ADD_LIBS($cf_pkgconfig_libs)
+ ifelse([$2],,:,[$2])
+else
+ cf_pkgconfig_incs=
+ cf_pkgconfig_libs=
+ ifelse([$3],,:,[$3])
+fi
+])
+dnl ---------------------------------------------------------------------------
+dnl CF_TRY_XOPEN_SOURCE version: 2 updated: 2018/06/20 20:23:13
dnl -------------------
dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
dnl can define it successfully.
@@ -6297,7 +7532,7 @@ make an error
#endif],
[cf_cv_xopen_source=no],
[cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+ CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE)
AC_TRY_COMPILE([
#include <stdlib.h>
#include <string.h>
@@ -6320,7 +7555,7 @@ if test "$cf_cv_xopen_source" != no ; then
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_TYPEOF_CHTYPE version: 9 updated: 2012/10/06 17:56:13
+dnl CF_TYPEOF_CHTYPE version: 10 updated: 2017/01/21 11:06:25
dnl ----------------
dnl Determine the type we should use for chtype (and attr_t, which is treated
dnl as the same thing). We want around 32 bits, so on most machines want a
@@ -6333,7 +7568,7 @@ AC_CACHE_VAL(cf_cv_typeof_chtype,[
AC_TRY_RUN([
#define WANT_BITS 31
#include <stdio.h>
-int main()
+int main(void)
{
FILE *fp = fopen("cf_test.out", "w");
if (fp != 0) {
@@ -6438,10 +7673,11 @@ if test "$cf_cv_utf8_lib" = "add-on" ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_VA_COPY version: 3 updated: 2012/10/06 11:17:15
+dnl CF_VA_COPY version: 6 updated: 2018/12/04 18:14:25
dnl ----------
-dnl check for va_copy, part of stdarg.h
+dnl check for va_copy, part of stdarg.h starting with ISO C 1999.
dnl Also, workaround for glibc's __va_copy, by checking for both.
+dnl Finally, try to accommodate pre-ISO C 1999 headers.
AC_DEFUN([CF_VA_COPY],[
AC_CACHE_CHECK(for va_copy, cf_cv_have_va_copy,[
AC_TRY_LINK([
@@ -6453,7 +7689,10 @@ AC_TRY_LINK([
cf_cv_have_va_copy=yes,
cf_cv_have_va_copy=no)])
-test "$cf_cv_have_va_copy" = yes && AC_DEFINE(HAVE_VA_COPY,1,[Define to 1 if we have va_copy])
+if test "$cf_cv_have_va_copy" = yes;
+then
+ AC_DEFINE(HAVE_VA_COPY,1,[Define to 1 if we have va_copy])
+else # !cf_cv_have_va_copy
AC_CACHE_CHECK(for __va_copy, cf_cv_have___va_copy,[
AC_TRY_LINK([
@@ -6465,7 +7704,58 @@ AC_TRY_LINK([
cf_cv_have___va_copy=yes,
cf_cv_have___va_copy=no)])
-test "$cf_cv_have___va_copy" = yes && AC_DEFINE(HAVE___VA_COPY,1,[Define to 1 if we have __va_copy])
+if test "$cf_cv_have___va_copy" = yes
+then
+ AC_DEFINE(HAVE___VA_COPY,1,[Define to 1 if we have __va_copy])
+else # !cf_cv_have___va_copy
+
+AC_CACHE_CHECK(for __builtin_va_copy, cf_cv_have___builtin_va_copy,[
+AC_TRY_LINK([
+#include <stdarg.h>
+],[
+ static va_list dst;
+ static va_list src;
+ __builtin_va_copy(dst, src)],
+ cf_cv_have___builtin_va_copy=yes,
+ cf_cv_have___builtin_va_copy=no)])
+
+test "$cf_cv_have___builtin_va_copy" = yes &&
+ AC_DEFINE(HAVE___BUILTIN_VA_COPY,1,[Define to 1 if we have __builtin_va_copy])
+
+fi # cf_cv_have___va_copy
+
+fi # cf_cv_have_va_copy
+
+case "${cf_cv_have_va_copy}${cf_cv_have___va_copy}${cf_cv_have___builtin_va_copy}" in
+(*yes*)
+ ;;
+
+(*)
+ AC_CACHE_CHECK(if we can simply copy va_list, cf_cv_pointer_va_list,[
+AC_TRY_LINK([
+#include <stdarg.h>
+],[
+ va_list dst;
+ va_list src;
+ dst = src],
+ cf_cv_pointer_va_list=yes,
+ cf_cv_pointer_va_list=no)])
+
+ if test "$cf_cv_pointer_va_list" = no
+ then
+ AC_CACHE_CHECK(if we can copy va_list indirectly, cf_cv_array_va_list,[
+AC_TRY_LINK([
+#include <stdarg.h>
+],[
+ va_list dst;
+ va_list src;
+ *dst = *src],
+ cf_cv_array_va_list=yes,
+ cf_cv_array_va_list=no)])
+ test "$cf_cv_array_va_list" = yes && AC_DEFINE(ARRAY_VA_LIST,1,[Define to 1 if we can copy va_list indirectly])
+ fi
+ ;;
+esac
])
dnl ---------------------------------------------------------------------------
dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
@@ -6476,6 +7766,94 @@ AC_DEFUN([CF_VERBOSE],
CF_MSG_LOG([$1])
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_VERSION_INFO version: 7 updated: 2015/04/17 21:13:04
+dnl ---------------
+dnl Define several useful symbols derived from the VERSION file. A separate
+dnl file is preferred to embedding the version numbers in various scripts.
+dnl (automake is a textbook-example of why the latter is a bad idea, but there
+dnl are others).
+dnl
+dnl The file contents are:
+dnl libtool-version release-version patch-version
+dnl or
+dnl release-version
+dnl where
+dnl libtool-version (see ?) consists of 3 integers separated by '.'
+dnl release-version consists of a major version and minor version
+dnl separated by '.', optionally followed by a patch-version
+dnl separated by '-'. The minor version need not be an
+dnl integer (but it is preferred).
+dnl patch-version is an integer in the form yyyymmdd, so ifdef's and
+dnl scripts can easily compare versions.
+dnl
+dnl If libtool is used, the first form is required, since CF_WITH_LIBTOOL
+dnl simply extracts the first field using 'cut -f1'.
+dnl
+dnl Optional parameters:
+dnl $1 = internal name for package
+dnl $2 = external name for package
+AC_DEFUN([CF_VERSION_INFO],
+[
+if test -f $srcdir/VERSION ; then
+ AC_MSG_CHECKING(for package version)
+
+ # if there are not enough fields, cut returns the last one...
+ cf_field1=`sed -e '2,$d' $srcdir/VERSION|cut -f1`
+ cf_field2=`sed -e '2,$d' $srcdir/VERSION|cut -f2`
+ cf_field3=`sed -e '2,$d' $srcdir/VERSION|cut -f3`
+
+ # this is how CF_BUNDLED_INTL uses $VERSION:
+ VERSION="$cf_field1"
+
+ VERSION_MAJOR=`echo "$cf_field2" | sed -e 's/\..*//'`
+ test -z "$VERSION_MAJOR" && AC_MSG_ERROR(missing major-version)
+
+ VERSION_MINOR=`echo "$cf_field2" | sed -e 's/^[[^.]]*\.//' -e 's/-.*//'`
+ test -z "$VERSION_MINOR" && AC_MSG_ERROR(missing minor-version)
+
+ AC_MSG_RESULT(${VERSION_MAJOR}.${VERSION_MINOR})
+
+ AC_MSG_CHECKING(for package patch date)
+ VERSION_PATCH=`echo "$cf_field3" | sed -e 's/^[[^-]]*-//'`
+ case .$VERSION_PATCH in
+ (.)
+ AC_MSG_ERROR(missing patch-date $VERSION_PATCH)
+ ;;
+ (.[[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]])
+ ;;
+ (*)
+ AC_MSG_ERROR(illegal patch-date $VERSION_PATCH)
+ ;;
+ esac
+ AC_MSG_RESULT($VERSION_PATCH)
+else
+ AC_MSG_ERROR(did not find $srcdir/VERSION)
+fi
+
+# show the actual data that we have for versions:
+CF_VERBOSE(ABI VERSION $VERSION)
+CF_VERBOSE(VERSION_MAJOR $VERSION_MAJOR)
+CF_VERBOSE(VERSION_MINOR $VERSION_MINOR)
+CF_VERBOSE(VERSION_PATCH $VERSION_PATCH)
+
+AC_SUBST(VERSION)
+AC_SUBST(VERSION_MAJOR)
+AC_SUBST(VERSION_MINOR)
+AC_SUBST(VERSION_PATCH)
+
+dnl if a package name is given, define its corresponding version info. We
+dnl need the package name to ensure that the defined symbols are unique.
+ifelse($1,,,[
+ cf_PACKAGE=$1
+ PACKAGE=ifelse($2,,$1,$2)
+ AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE",[Define to the package-name])
+ AC_SUBST(PACKAGE)
+ CF_UPPER(cf_PACKAGE,$cf_PACKAGE)
+ AC_DEFINE_UNQUOTED(${cf_PACKAGE}_VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}")
+ AC_DEFINE_UNQUOTED(${cf_PACKAGE}_PATCHDATE,${VERSION_PATCH})
+])
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_WCHAR_TYPE version: 4 updated: 2012/10/06 16:39:58
dnl -------------
dnl Check if type wide-character type $1 is declared, and if so, which header
@@ -6552,7 +7930,7 @@ weak_symbol(fopen);
])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_ABI_VERSION version: 1 updated: 2003/09/20 18:12:49
+dnl CF_WITH_ABI_VERSION version: 3 updated: 2015/06/06 16:10:11
dnl -------------------
dnl Allow library's ABI to be overridden. Generally this happens when a
dnl packager has incremented the ABI past that used in the original package,
@@ -6563,10 +7941,21 @@ dnl symbol.
AC_DEFUN([CF_WITH_ABI_VERSION],[
test -z "$cf_cv_abi_version" && cf_cv_abi_version=0
AC_ARG_WITH(abi-version,
-[ --with-abi-version=XXX override derived ABI version],
-[AC_MSG_WARN(overriding ABI version $cf_cv_abi_version to $withval)
- cf_cv_abi_version=$withval])
- CF_NUMBER_SYNTAX($cf_cv_abi_version,ABI version)
+[ --with-abi-version=XXX override derived ABI version],[
+ if test "x$cf_cv_abi_version" != "x$withval"
+ then
+ AC_MSG_WARN(overriding ABI version $cf_cv_abi_version to $withval)
+ case $cf_cv_rel_version in
+ (5.*)
+ cf_cv_rel_version=$withval.0
+ ;;
+ (6.*)
+ cf_cv_rel_version=$withval.9 # FIXME: should be 10 as of 6.0 release
+ ;;
+ esac
+ fi
+ cf_cv_abi_version=$withval])
+ CF_NUMBER_SYNTAX($cf_cv_abi_version,ABI version)
ifelse($1,,,[
$1_ABI=$cf_cv_abi_version
])
@@ -6599,6 +7988,27 @@ AC_SUBST(ADA_INCLUDE)
AC_MSG_RESULT($ADA_INCLUDE)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_WITH_ADA_LIBNAME version: 1 updated: 2019/09/07 18:59:41
+dnl -------------------
+dnl CF_WITH_ADA_LIBNAME
+dnl -------------------
+dnl Command-line option to specify how to name the resulting Ada library.
+dnl $1 = default value
+AC_DEFUN([CF_WITH_ADA_LIBNAME],[
+AC_MSG_CHECKING(for ada-libname)
+AC_ARG_WITH(ada-libname,
+ [ --with-ada-libname=XXX override default Ada library-name],
+ ADA_LIBNAME=[$]withval,
+ ADA_LIBNAME=$1)
+case "x$ADA_LIBNAME" in
+(x|xyes|xno)
+ ADA_LIBNAME=$1
+ ;;
+esac
+AC_SUBST(ADA_LIBNAME)
+AC_MSG_RESULT($ADA_LIBNAME)
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_WITH_ADA_OBJECTS version: 2 updated: 2010/06/26 17:35:58
dnl -------------------
dnl Command-line option to specify where Ada objects will install.
@@ -6613,18 +8023,28 @@ AC_SUBST(ADA_OBJECTS)
AC_MSG_RESULT($ADA_OBJECTS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_ADA_SHAREDLIB version: 2 updated: 2010/06/26 17:35:58
+dnl CF_WITH_ADA_SHAREDLIB version: 5 updated: 2018/07/21 19:10:35
dnl ---------------------
dnl Command-line option to specify if an Ada95 shared-library should be built,
dnl and optionally what its soname should be.
AC_DEFUN([CF_WITH_ADA_SHAREDLIB],[
+AC_REQUIRE([CF_GNAT_PROJECTS])
AC_MSG_CHECKING(if an Ada95 shared-library should be built)
AC_ARG_WITH(ada-sharedlib,
- [ --with-ada-sharedlib=XX build Ada95 shared-library],
+ [ --with-ada-sharedlib=soname build shared-library (requires GNAT projects)],
[with_ada_sharedlib=$withval],
[with_ada_sharedlib=no])
AC_MSG_RESULT($with_ada_sharedlib)
+if test "x$with_ada_sharedlib" != xno
+then
+ if test "x$cf_gnat_projects" != xyes
+ then
+ AC_MSG_WARN(disabling shared-library since GNAT projects are not supported)
+ with_ada_sharedlib=no
+ fi
+fi
+
ADA_SHAREDLIB='lib$(LIB_NAME).so.1'
MAKE_ADA_SHAREDLIB="#"
@@ -6671,7 +8091,33 @@ if test "$with_dmalloc" = yes ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_GPM version: 8 updated: 2012/10/06 17:56:13
+dnl CF_WITH_EXPORT_SYMS version: 3 updated: 2014/12/20 19:16:08
+dnl -------------------
+dnl Use this with libtool to specify the list of symbols that may be exported.
+dnl The input file contains one symbol per line; comments work with "#".
+dnl
+dnl $1 = basename of the ".sym" file (default $PACKAGE)
+AC_DEFUN([CF_WITH_EXPORT_SYMS],
+[
+AC_MSG_CHECKING(if exported-symbols file should be used)
+AC_ARG_WITH(export-syms,
+ [ --with-export-syms=XXX limit exported symbols using libtool],
+ [with_export_syms=$withval],
+ [with_export_syms=no])
+if test "x$with_export_syms" = xyes
+then
+ with_export_syms='${top_srcdir}/package/ifelse($1,,${PACKAGE},[$1]).sym'
+ AC_SUBST(PACKAGE)
+fi
+AC_MSG_RESULT($with_export_syms)
+if test "x$with_export_syms" != xno
+then
+ EXPORT_SYMS="-export-symbols $with_export_syms"
+ AC_SUBST(EXPORT_SYMS)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_GPM version: 10 updated: 2017/04/29 18:32:18
dnl -----------
dnl
dnl The option parameter (if neither yes/no) is assumed to be the name of
@@ -6691,12 +8137,17 @@ if test "$with_gpm" != no ; then
if test "$with_gpm" != yes && test "$with_gpm" != maybe ; then
CF_VERBOSE(assuming we really have GPM library)
AC_DEFINE(HAVE_LIBGPM,1,[Define to 1 if we have the gpm library])
+ with_gpm=yes
else
- AC_CHECK_LIB(gpm,Gpm_Open,[:],[
- AC_MSG_ERROR(Cannot link with GPM library)
+ AC_CHECK_LIB(gpm,Gpm_Open,[with_gpm=yes],[
+ if test "$with_gpm" = maybe; then
+ AC_MSG_WARN(Cannot link with GPM library)
+ with_gpm=no
+ else
+ AC_MSG_ERROR(Cannot link with GPM library)
+ fi
+ ])
fi
- with_gpm=yes
- ])
],[
test "$with_gpm" != maybe && AC_MSG_WARN(Cannot find GPM header)
with_gpm=no
@@ -6704,7 +8155,7 @@ if test "$with_gpm" != no ; then
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_LIBTOOL version: 30 updated: 2013/09/07 13:54:05
+dnl CF_WITH_LIBTOOL version: 35 updated: 2017/08/12 07:58:51
dnl ---------------
dnl Provide a configure option to incorporate libtool. Define several useful
dnl symbols for the makefile rules.
@@ -6728,7 +8179,7 @@ dnl
dnl LOCAL=aclocal.m4
dnl ORIG=aclocal.m4.orig
dnl
-dnl trap "mv $ORIG $LOCAL" 0 1 2 5 15
+dnl trap "mv $ORIG $LOCAL" 0 1 2 3 15
dnl rm -f $ORIG
dnl mv $LOCAL $ORIG
dnl
@@ -6787,7 +8238,7 @@ ifdef([AC_PROG_LIBTOOL],[
AC_MSG_ERROR(Cannot find libtool)
fi
])dnl
- LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${DESTDIR}${libdir} ${LIBTOOL_VERSION} `cut -f1 ${srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} $(LIBS) -o'
+ LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${libdir} ${LIBTOOL_VERSION} `cut -f1 ${top_srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} $(LIBS) -o'
LIB_OBJECT='${OBJECTS:.o=.lo}'
LIB_SUFFIX=.la
LIB_CLEAN='${LIBTOOL} --mode=clean'
@@ -6801,20 +8252,20 @@ ifdef([AC_PROG_LIBTOOL],[
# special hack to add -no-undefined (which libtool should do for itself)
LT_UNDEF=
- case "$cf_cv_system_name" in #(vi
- cygwin*|msys*|mingw32*|uwin*|aix[[4-7]]) #(vi
+ case "$cf_cv_system_name" in
+ (cygwin*|msys*|mingw32*|os2*|uwin*|aix[[4-7]])
LT_UNDEF=-no-undefined
;;
esac
AC_SUBST([LT_UNDEF])
# special hack to add --tag option for C++ compiler
- case $cf_cv_libtool_version in #(vi
- 1.[[5-9]]*|[[2-9]].[[0-9.a-z]]*) #(vi
+ case $cf_cv_libtool_version in
+ (1.[[5-9]]*|[[2-9]].[[0-9.a-z]]*)
LIBTOOL_CXX="$LIBTOOL --tag=CXX"
LIBTOOL="$LIBTOOL --tag=CC"
;;
- *)
+ (*)
LIBTOOL_CXX="$LIBTOOL"
;;
esac
@@ -6842,6 +8293,32 @@ AC_SUBST(LIB_UNINSTALL)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_WITH_LIBTOOL_OPTS version: 4 updated: 2015/04/17 21:13:04
+dnl --------------------
+dnl Allow user to pass additional libtool options into the library creation
+dnl and link steps. The main use for this is to do something like
+dnl ./configure --with-libtool-opts=-static
+dnl to get the same behavior as automake-flavored
+dnl ./configure --enable-static
+AC_DEFUN([CF_WITH_LIBTOOL_OPTS],[
+AC_MSG_CHECKING(for additional libtool options)
+AC_ARG_WITH(libtool-opts,
+ [ --with-libtool-opts=XXX specify additional libtool options],
+ [with_libtool_opts=$withval],
+ [with_libtool_opts=no])
+AC_MSG_RESULT($with_libtool_opts)
+
+case .$with_libtool_opts in
+(.yes|.no|.)
+ ;;
+(*)
+ LIBTOOL_OPTS="$LIBTOOL_OPTS $with_libtool_opts"
+ ;;
+esac
+
+AC_SUBST(LIBTOOL_OPTS)
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_WITH_LIB_PREFIX version: 1 updated: 2012/01/21 19:28:10
dnl ------------------
dnl Allow the library-prefix to be overridden. OS/2 EMX originally had no
@@ -6889,7 +8366,7 @@ eval $3="$withval"
AC_SUBST($3)dnl
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PATHLIST version: 9 updated: 2012/10/18 05:05:24
+dnl CF_WITH_PATHLIST version: 10 updated: 2015/04/17 21:13:04
dnl ----------------
dnl Process an option specifying a list of colon-separated paths.
dnl
@@ -6918,8 +8395,8 @@ IFS="$ac_save_ifs"
ifelse($6,define,[
# Strip single quotes from the value, e.g., when it was supplied as a literal
# for $4 or $5.
-case $cf_dst_path in #(vi
-\'*)
+case $cf_dst_path in
+(\'*)
cf_dst_path=`echo $cf_dst_path |sed -e s/\'// -e s/\'\$//`
;;
esac
@@ -6929,11 +8406,11 @@ cf_dst_path=`echo "$cf_dst_path" | sed -e 's/\\\\/\\\\\\\\/g'`
# This may use the prefix/exec_prefix symbols which will only yield "NONE"
# so we have to check/work around. We do prefer the result of "eval"...
eval cf_dst_eval="$cf_dst_path"
-case "x$cf_dst_eval" in #(vi
-xNONE*) #(vi
+case "x$cf_dst_eval" in
+(xNONE*)
$3=$cf_dst_path
;;
-*)
+(*)
$3="$cf_dst_eval"
;;
esac
@@ -6941,64 +8418,170 @@ AC_SUBST($3)dnl
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PKG_CONFIG_LIBDIR version: 2 updated: 2011/12/10 18:58:47
+dnl CF_WITH_PATH_PROG version: 1 updated: 2019/06/30 19:44:43
+dnl -----------------
+dnl Check for a given program, like CF_PATH_PROG, but allow override using a
+dnl "--with-xxx" option.
+dnl
+dnl Parameters:
+dnl $1 = environment variable to set/update
+dnl $2 = program name
+dnl $3 = help-text
+dnl $4 = $PATH
+AC_DEFUN([CF_WITH_PATH_PROG],[
+AC_ARG_WITH($2-path,
+ [ --with-$2-path=XXX specify path of $2 ifelse($3,,,$3)],
+ [AC_MSG_CHECKING(for $2 program ifelse($3,,,$3))
+ $1=$withval
+ AC_MSG_RESULT([$]$1)
+ CF_PATH_SYNTAX($1)
+ ],
+ [CF_PATH_PROG($1,$2,,ifelse($4,,,$4))
+ if test -z "[$]$1"
+ then
+ AC_MSG_WARN(no $2 program found ifelse($3,,,$3))
+ fi
+ ])
+])
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_PCRE2 version: 2 updated: 2018/07/14 16:47:56
+dnl -------------
+dnl Add PCRE2 (Perl-compatible regular expressions v2) to the build if it is
+dnl available and the user requests it. Assume the application will otherwise
+dnl use the POSIX interface.
+dnl
+dnl TODO allow $withval to specify package location
+AC_DEFUN([CF_WITH_PCRE2],
+[
+AC_REQUIRE([CF_PKG_CONFIG])
+
+AC_MSG_CHECKING(if you want to use PCRE2 for regular-expressions)
+AC_ARG_WITH(pcre2,
+ [ --with-pcre2 use PCRE2 for regular-expressions])
+test -z "$with_pcre2" && with_pcre2=no
+AC_MSG_RESULT($with_pcre2)
+
+if test "x$with_pcre2" != xno ; then
+ CF_TRY_PKG_CONFIG(libpcre2,,[
+ CF_TRY_PKG_CONFIG(libpcre,,[
+ AC_MSG_ERROR(Cannot find PCRE2 library)])])
+
+ AC_DEFINE(HAVE_LIB_PCRE2,1,[Define to 1 if we can/should compile with the PCRE2 library])
+
+ # if pkgconfig gave no results, look for the libraries directly
+ case $LIBS in
+ (*pcre2-posix*|*pcreposix*)
+ ;;
+ (*)
+ AC_CHECK_LIB(pcre2-posix,regcomp,[
+ CF_ADD_LIB(pcre2-posix)],
+ [AC_CHECK_LIB(pcreposix,regcomp,[
+ CF_ADD_LIB(pcreposix)
+ ],[AC_MSG_ERROR(Cannot find PCRE2 POSIX library)])])
+ ;;
+ esac
+
+ # either way, check for the library header files
+ AC_CHECK_HEADERS(pcre2-posix.h pcreposix.h)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_PKG_CONFIG_LIBDIR version: 10 updated: 2015/08/22 17:10:56
dnl -------------------------
dnl Allow the choice of the pkg-config library directory to be overridden.
AC_DEFUN([CF_WITH_PKG_CONFIG_LIBDIR],[
-if test "$PKG_CONFIG" != none ; then
+
+case $PKG_CONFIG in
+(no|none|yes)
+ AC_MSG_CHECKING(for pkg-config library directory)
+ ;;
+(*)
AC_MSG_CHECKING(for $PKG_CONFIG library directory)
- AC_ARG_WITH(pkg-config-libdir,
- [ --with-pkg-config-libdir=XXX use given directory for installing pc-files],
- [PKG_CONFIG_LIBDIR=$withval],
- [PKG_CONFIG_LIBDIR=yes])
+ ;;
+esac
- case x$PKG_CONFIG_LIBDIR in #(vi
- x/*) #(vi
- ;;
- xyes) #(vi
- # look for the library directory using the same prefix as the executable
+PKG_CONFIG_LIBDIR=no
+AC_ARG_WITH(pkg-config-libdir,
+ [ --with-pkg-config-libdir=XXX use given directory for installing pc-files],
+ [PKG_CONFIG_LIBDIR=$withval],
+ [test "x$PKG_CONFIG" != xnone && PKG_CONFIG_LIBDIR=yes])
+
+case x$PKG_CONFIG_LIBDIR in
+(x/*)
+ ;;
+(xyes)
+ # Look for the library directory using the same prefix as the executable
+ if test "x$PKG_CONFIG" = xnone
+ then
+ cf_path=$prefix
+ else
cf_path=`echo "$PKG_CONFIG" | sed -e 's,/[[^/]]*/[[^/]]*$,,'`
- case x`(arch) 2>/dev/null` in #(vi
- *64) #(vi
- for cf_config in $cf_path/share $cf_path/lib64 $cf_path/lib32 $cf_path/lib
- do
- if test -d $cf_config/pkgconfig
- then
- PKG_CONFIG_LIBDIR=$cf_config/pkgconfig
- break
- fi
- done
- ;;
- *)
- PKG_CONFIG_LIBDIR=$cf_path/lib/pkgconfig
- ;;
- esac
+ fi
+
+ # If you don't like using the default architecture, you have to specify the
+ # intended library directory and corresponding compiler/linker options.
+ #
+ # This case allows for Debian's 2014-flavor of multiarch, along with the
+ # most common variations before that point. Some other variants spell the
+ # directory differently, e.g., "pkg-config", and put it in unusual places.
+ # pkg-config has always been poorly standardized, which is ironic...
+ case x`(arch) 2>/dev/null` in
+ (*64)
+ cf_search_path="\
+ $cf_path/lib/*64-linux-gnu \
+ $cf_path/share \
+ $cf_path/lib64 \
+ $cf_path/lib32 \
+ $cf_path/lib"
;;
- *)
+ (*)
+ cf_search_path="\
+ $cf_path/lib/*-linux-gnu \
+ $cf_path/share \
+ $cf_path/lib32 \
+ $cf_path/lib \
+ $cf_path/libdata"
;;
esac
+ CF_VERBOSE(list...)
+ for cf_config in $cf_search_path
+ do
+ CF_VERBOSE(checking $cf_config/pkgconfig)
+ if test -d $cf_config/pkgconfig
+ then
+ PKG_CONFIG_LIBDIR=$cf_config/pkgconfig
+ AC_MSG_CHECKING(done)
+ break
+ fi
+ done
+ ;;
+(*)
+ ;;
+esac
+
+if test "x$PKG_CONFIG_LIBDIR" != xno ; then
AC_MSG_RESULT($PKG_CONFIG_LIBDIR)
fi
AC_SUBST(PKG_CONFIG_LIBDIR)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PTHREAD version: 6 updated: 2012/10/06 17:41:51
+dnl CF_WITH_PTHREAD version: 7 updated: 2015/04/18 08:56:57
dnl ---------------
dnl Check for POSIX thread library.
AC_DEFUN([CF_WITH_PTHREAD],
[
AC_MSG_CHECKING(if you want to link with the pthread library)
AC_ARG_WITH(pthread,
- [ --with-pthread use POSIX thread library],
- [with_pthread=$withval],
- [with_pthread=no])
+ [ --with-pthread use POSIX thread library],
+ [with_pthread=$withval],
+ [with_pthread=no])
AC_MSG_RESULT($with_pthread)
if test "$with_pthread" != no ; then
- AC_CHECK_HEADER(pthread.h,[
- AC_DEFINE(HAVE_PTHREADS_H,1,[Define to 1 if we have pthreads.h header])
+ AC_CHECK_HEADER(pthread.h,[
+ AC_DEFINE(HAVE_PTHREADS_H,1,[Define to 1 if we have pthreads.h header])
for cf_lib_pthread in pthread c_r
do
@@ -7022,7 +8605,7 @@ if test "$with_pthread" != no ; then
else
AC_MSG_ERROR(Cannot link with pthread library)
fi
- ])
+ ])
fi
])
dnl ---------------------------------------------------------------------------
@@ -7109,7 +8692,230 @@ CF_NO_LEAKS_OPTION(valgrind,
[USE_VALGRIND])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_XOPEN_SOURCE version: 46 updated: 2014/02/09 19:30:15
+dnl CF_WITH_VERSIONED_SYMS version: 8 updated: 2018/10/20 20:24:34
+dnl ----------------------
+dnl Use this when building shared library with ELF, to markup symbols with the
+dnl version identifier from the given input file. Generally that identifier is
+dnl the same as the SONAME at which the symbol was first introduced.
+dnl
+dnl $1 = basename of the ".map" file (default $PACKAGE)
+AC_DEFUN([CF_WITH_VERSIONED_SYMS],
+[
+AC_MSG_CHECKING(if versioned-symbols file should be used)
+AC_ARG_WITH(versioned-syms,
+ [ --with-versioned-syms=X markup versioned symbols using ld],
+ [with_versioned_syms=$withval],
+ [with_versioned_syms=no])
+case "x$with_versioned_syms" in
+(xyes)
+ with_versioned_syms='${top_srcdir}/package/ifelse($1,,${PACKAGE},[$1]).map'
+ AC_SUBST(PACKAGE)
+ ;;
+(xno)
+ ;;
+(x/*)
+ test -f "$with_versioned_syms" || AC_MSG_ERROR(expected a filename: $with_versioned_syms)
+ ;;
+(*)
+ test -f "$with_versioned_syms" || AC_MSG_ERROR(expected a filename: $with_versioned_syms)
+ with_versioned_syms=`pwd`/"$with_versioned_syms"
+ ;;
+esac
+AC_MSG_RESULT($with_versioned_syms)
+
+RESULTING_SYMS=
+VERSIONED_SYMS=
+WILDCARD_SYMS=
+
+if test "x$with_versioned_syms" != xno
+then
+ RESULTING_SYMS=$with_versioned_syms
+ case "x$MK_SHARED_LIB" in
+ (*-Wl,*)
+ VERSIONED_SYMS="-Wl,--version-script,\${RESULTING_SYMS}"
+ MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-Wl,%\\[$]{VERSIONED_SYMS} -Wl,%"`
+ CF_VERBOSE(MK_SHARED_LIB: $MK_SHARED_LIB)
+ ;;
+ (*-dy\ *)
+ VERSIONED_SYMS="-Wl,-M,\${RESULTING_SYMS}"
+ MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-dy%\\[$]{VERSIONED_SYMS} -dy%"`
+ CF_VERBOSE(MK_SHARED_LIB: $MK_SHARED_LIB)
+ ;;
+ (*)
+ AC_MSG_WARN(this system does not support versioned-symbols)
+ ;;
+ esac
+
+ # Linux ld can selectively override scope, e.g., of symbols beginning with
+ # "_" by first declaring some as global, and then using a wildcard to
+ # declare the others as local. Some other loaders cannot do this. Check
+ # by constructing a (very) simple shared library and inspecting its
+ # symbols.
+ if test "x$VERSIONED_SYMS" != "x"
+ then
+ AC_MSG_CHECKING(if wildcards can be used to selectively omit symbols)
+ WILDCARD_SYMS=no
+
+ # make sources
+ rm -f conftest.*
+
+ cat >conftest.ver <<EOF
+module_1.0 {
+global:
+ globalf1;
+local:
+ localf1;
+};
+module_2.0 {
+global:
+ globalf2;
+local:
+ localf2;
+ _*;
+} module_1.0;
+submodule_1.0 {
+global:
+ subglobalf1;
+ _ismissing;
+local:
+ sublocalf1;
+};
+submodule_2.0 {
+global:
+ subglobalf2;
+local:
+ sublocalf2;
+ _*;
+} submodule_1.0;
+EOF
+ cat >conftest.$ac_ext <<EOF
+#line __oline__ "configure"
+int _ismissing(void) { return 1; }
+int _localf1(void) { return 1; }
+int _localf2(void) { return 2; }
+int globalf1(void) { return 1; }
+int globalf2(void) { return 2; }
+int _sublocalf1(void) { return 1; }
+int _sublocalf2(void) { return 2; }
+int subglobalf1(void) { return 1; }
+int subglobalf2(void) { return 2; }
+EOF
+ cat >conftest.mk <<EOF
+CC=${CC}
+CFLAGS=${CFLAGS}
+CPPFLAGS=${CPPFLAGS}
+LDFLAGS=${LDFLAGS}
+LIBS=${LIBS}
+VERSIONED_SYMS=${VERSIONED_SYMS}
+RESULTING_SYMS=conftest.ver
+MK_SHARED_LIB=${MK_SHARED_LIB}
+conftest.so: conftest.$ac_cv_objext
+ \$(MK_SHARED_LIB) conftest.$ac_cv_objext
+EOF
+
+ # compile source, make library
+ if make -f conftest.mk 2>&AC_FD_CC >/dev/null
+ then
+ # test for missing symbol in either Data or Text section
+ cf_missing=`nm -P conftest.so 2>&AC_FD_CC |fgrep _ismissing | egrep '[[ ]][[DT]][[ ]]'`
+ test -n "$cf_missing" && WILDCARD_SYMS=yes
+ fi
+ AC_MSG_RESULT($WILDCARD_SYMS)
+ rm -f conftest.*
+ fi
+fi
+AC_SUBST(RESULTING_SYMS)
+AC_SUBST(VERSIONED_SYMS)
+AC_SUBST(WILDCARD_SYMS)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_X11_RGB version: 2 updated: 2019/12/31 08:53:54
+dnl ---------------
+dnl Handle configure option "--with-x11-rgb", setting these shell
+dnl variables:
+dnl
+dnl $RGB_PATH is the option value, used for finding the X11 rgb file.
+dnl $no_x11_rgb is a "#" (comment) if "--without-x11-rgb" is given.
+dnl
+dnl Most Linux's use this:
+dnl /usr/share/X11/rgb.txt
+dnl Debian uses this:
+dnl /etc/X11/rgb.txt
+dnl DragonFlyBSD ports uses this:
+dnl /usr/pkg/lib/X11/rgb.txt
+dnl FreeBSD ports use these:
+dnl /usr/local/lib/X11/rgb.txt
+dnl /usr/local/share/X11/rgb.txt
+dnl Mandriva has these:
+dnl /usr/lib/X11/rgb.txt
+dnl /usr/lib64/X11/rgb.txt
+dnl NetBSD has these
+dnl /usr/X11R7/lib/X11/rgb.txt
+dnl OpenSolaris uses
+dnl 32-bit:
+dnl /usr/X11/etc/X11/rgb.txt
+dnl /usr/X11/share/X11/rgb.txt
+dnl /usr/X11/lib/X11/rgb.txt
+dnl OSX uses
+dnl /opt/local/share/X11/rgb.txt (MacPorts)
+dnl /opt/X11/share/X11/rgb.txt (non-ports)
+dnl 64-bit:
+dnl /usr/X11/etc/X11/rgb.txt
+dnl /usr/X11/share/X11/rgb.txt (perhaps)
+dnl /usr/X11/lib/amd64/X11/rgb.txt
+dnl Solaris10 uses (in this order):
+dnl /usr/openwin/lib/X11/rgb.txt
+dnl /usr/X11/lib/X11/rgb.txt
+AC_DEFUN([CF_WITH_X11_RGB],[
+AC_MSG_CHECKING(for X11 rgb file)
+AC_ARG_WITH(x11-rgb,
+ [ --with-x11-rgb=FILE file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)],
+ [RGB_PATH=$withval],
+ [RGB_PATH=auto])
+
+if test "x[$]RGB_PATH" = xauto
+then
+ RGB_PATH='${exec_prefix}/lib/X11/rgb.txt'
+ for cf_path in \
+ /opt/local/share/X11/rgb.txt \
+ /opt/X11/share/X11/rgb.txt \
+ /usr/share/X11/rgb.txt \
+ /usr/X11/share/X11/rgb.txt \
+ /usr/X11/lib/X11/rgb.txt \
+ /usr/lib/X11/rgb.txt \
+ /etc/X11/rgb.txt \
+ /usr/pkg/lib/X11/rgb.txt \
+ /usr/X11R7/lib/X11/rgb.txt \
+ /usr/X11R6/lib/X11/rgb.txt \
+ /usr/X11R5/lib/X11/rgb.txt \
+ /usr/X11R4/lib/X11/rgb.txt \
+ /usr/local/lib/X11/rgb.txt \
+ /usr/local/share/X11/rgb.txt \
+ /usr/lib64/X11/rgb.txt
+ do
+ if test -f "$cf_path" ; then
+ RGB_PATH="$cf_path"
+ break
+ fi
+ done
+else
+ cf_path=$RGB_PATH
+ CF_PATH_SYNTAX(cf_path)
+fi
+
+AC_MSG_RESULT($RGB_PATH)
+AC_SUBST(RGB_PATH)
+AC_DEFINE_UNQUOTED(RGB_PATH,"$cf_path",[Define to the full pathname of rgb.txt])
+
+no_x11_rgb=
+if test "$RGB_PATH" = no
+then
+ no_x11_rgb="#"
+fi
+AC_SUBST(no_x11_rgb)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_XOPEN_SOURCE version: 55 updated: 2018/12/31 20:46:17
dnl ---------------
dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
dnl or adapt to the vendor's definitions to get equivalent functionality,
@@ -7120,26 +8926,29 @@ dnl $1 is the nominal value for _XOPEN_SOURCE
dnl $2 is the nominal value for _POSIX_C_SOURCE
AC_DEFUN([CF_XOPEN_SOURCE],[
AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([CF_POSIX_VISIBLE])
+
+if test "$cf_cv_posix_visible" = no; then
cf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
cf_xopen_source=
-case $host_os in #(vi
-aix[[4-7]]*) #(vi
+case $host_os in
+(aix[[4-7]]*)
cf_xopen_source="-D_ALL_SOURCE"
;;
-cygwin|msys) #(vi
+(msys)
cf_XOPEN_SOURCE=600
;;
-darwin[[0-8]].*) #(vi
+(darwin[[0-8]].*)
cf_xopen_source="-D_APPLE_C_SOURCE"
;;
-darwin*) #(vi
+(darwin*)
cf_xopen_source="-D_DARWIN_C_SOURCE"
cf_XOPEN_SOURCE=
;;
-freebsd*|dragonfly*) #(vi
+(freebsd*|dragonfly*|midnightbsd*)
# 5.x headers associate
# _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
# _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
@@ -7147,56 +8956,63 @@ freebsd*|dragonfly*) #(vi
cf_XOPEN_SOURCE=600
cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
;;
-hpux11*) #(vi
+(hpux11*)
cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
;;
-hpux*) #(vi
+(hpux*)
cf_xopen_source="-D_HPUX_SOURCE"
;;
-irix[[56]].*) #(vi
+(irix[[56]].*)
cf_xopen_source="-D_SGI_SOURCE"
cf_XOPEN_SOURCE=
;;
-linux*|gnu*|mint*|k*bsd*-gnu) #(vi
- CF_GNU_SOURCE
+(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
+ CF_GNU_SOURCE($cf_XOPEN_SOURCE)
;;
-mirbsd*) #(vi
+(minix*)
+ cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
+ ;;
+(mirbsd*)
# setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
cf_XOPEN_SOURCE=
CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
;;
-netbsd*) #(vi
+(netbsd*)
cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
;;
-openbsd[[4-9]]*) #(vi
+(openbsd[[4-9]]*)
# setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
cf_xopen_source="-D_BSD_SOURCE"
cf_XOPEN_SOURCE=600
;;
-openbsd*) #(vi
+(openbsd*)
# setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
;;
-osf[[45]]*) #(vi
+(osf[[45]]*)
cf_xopen_source="-D_OSF_SOURCE"
;;
-nto-qnx*) #(vi
+(nto-qnx*)
cf_xopen_source="-D_QNX_SOURCE"
;;
-sco*) #(vi
+(sco*)
# setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
;;
-solaris2.*) #(vi
+(solaris2.*)
cf_xopen_source="-D__EXTENSIONS__"
cf_cv_xopen_source=broken
;;
-*)
+(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
+ cf_XOPEN_SOURCE=
+ cf_POSIX_C_SOURCE=
+ ;;
+(*)
CF_TRY_XOPEN_SOURCE
CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
;;
esac
if test -n "$cf_xopen_source" ; then
- CF_ADD_CFLAGS($cf_xopen_source)
+ CF_ADD_CFLAGS($cf_xopen_source,true)
fi
dnl In anything but the default case, we may have system-specific setting
@@ -7227,4 +9043,5 @@ make an error
CF_TRY_XOPEN_SOURCE
fi
fi
+fi # cf_cv_posix_visible
])
diff --git a/announce.html.in b/announce.html.in
index a07dc0573325..378f6f80b012 100644
--- a/announce.html.in
+++ b/announce.html.in
@@ -1,7 +1,7 @@
<!--
- $Id: announce.html.in,v 1.89 2013/05/18 10:12:25 tom Exp $
+ $Id: announce.html.in,v 1.92 2018/01/27 02:09:18 tom Exp $
****************************************************************************
- * Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2018 Free 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,383 +39,2921 @@
<link rev="made" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content=
"text/html; charset=us-ascii">
+ <style type="text/css">
+p,li { max-width:700px; }
+ dd { max-width:630px; }
+ *.main-name {
+ font-style: italic;
+ font-variant: small-caps;
+ }
+ *.part-name {
+ font-family: "Andale Mono", "Monotype.com", monospace;
+ font-size: 12pt;
+ font-weight: bold;
+ }
+ </style>
</head>
<body>
- <h1>Announcing ncurses @VERSION@</h1>
+ <h1 class="no-header">Announcing ncurses @VERSION@</h1>
- <p>The ncurses (new curses) library is a free software emulation
- of curses in System V Release 4.0, and more. It uses terminfo
- format, supports pads and color and multiple highlights and forms
- characters and function-key mapping, and has all the other
- SYSV-curses enhancements over BSD curses.</p>
+ <h2><a name="h2-overview" id="h2-overview">Overview</a></h2>
+
+ <p>The <span class="main-name">ncurses</span> (new curses)
+ library is a free software emulation of curses in System V
+ Release 4.0 (SVr4), 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 SVr4-curses
+ enhancements over BSD curses. SVr4 curses became the basis of
+ X/Open Curses.</p>
<p>In mid-June 1995, the maintainer of 4.4BSD curses declared
that he considered 4.4BSD curses obsolete, and encouraged the
- keepers of Unix releases such as BSD/OS, FreeBSD and NetBSD to
- switch over to ncurses.</p>
+ keepers of <span class="main-name">unix</span> releases such as
+ BSD/OS, FreeBSD and NetBSD to switch over to <span class=
+ "main-name">ncurses</span>.</p>
+
+ <p>Since 1995, <span class="main-name">ncurses</span> has been
+ ported to many systems:</p>
+
+ <ul>
+ <li>It is used in almost every system based on the Linux kernel
+ (aside from some embedded applications).</li>
+
+ <li>It is used as the system curses library on OpenBSD, FreeBSD
+ and OSX.</li>
+
+ <li>It is used in environments such as Cygwin and MinGW. The
+ first of these was EMX on OS/2 Warp.</li>
- <p>The ncurses code was developed under GNU/Linux. It has been in
- use for some time with OpenBSD as the system curses library, and
- on FreeBSD and NetBSD as an external package. It should port
- easily to any ANSI/POSIX-conforming UNIX. It has even been ported
- to OS/2 Warp!</p>
+ <li>It is used (though usually not as the <em>system</em>
+ curses) on all of the vendor <span class=
+ "main-name">unix</span> systems, e.g., AIX, HP-UX, IRIX64, SCO,
+ Solaris, Tru64.</li>
+
+ <li>It should work readily on any ANSI/POSIX-conforming
+ <span class="main-name">unix</span>.</li>
+ </ul>
<p>The distribution includes the library and support utilities,
- including a terminfo compiler tic(1), a decompiler infocmp(1),
- clear(1), tput(1), tset(1), and a termcap conversion tool
- captoinfo(1). Full manual pages are provided for the library and
- tools.</p>
+ including</p>
+
+ <ul>
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/captoinfo.1m.html"><span class="part-name">
+ captoinfo</span></a>, a termcap conversion tool</li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html"><span class="part-name">
+ clear</span></a>, utility for clearing the screen</li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/infocmp.1m.html"><span class="part-name">
+ infocmp</span></a>, the terminfo decompiler</li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/tabs.1.html"><span class="part-name">
+ tabs</span></a>, set tabs on a terminal</li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name">
+ tic</span></a>, the terminfo compiler</li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/toe.1m.html"><span class="part-name">
+ toe</span></a>, list (table of) terminfo entries</li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/tput.1.html"><span class="part-name">
+ tput</span></a>, utility for retrieving terminal capabilities
+ in shell scripts</li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/tset.1.html"><span class="part-name">
+ tset</span></a>, to initialize the terminal</li>
+ </ul>
+
+ <p>Full manual pages are provided for the library and tools.</p>
+
+ <p>The <span class="main-name">ncurses</span> distribution is
+ available at <span class="main-name">ncurses</span>' <a href=
+ "https://invisible-island.net/ncurses/">homepage</a>:</p>
+
+ <blockquote>
+ <p><a href=
+ "ftp://ftp.invisible-island.net/ncurses/">ftp://ftp.invisible-island.net/ncurses/</a>
+ or<br>
+ <a href=
+ "https://invisible-mirror.net/archives/ncurses/">https://invisible-mirror.net/archives/ncurses/</a>&nbsp;.</p>
+ </blockquote>
+
+ <p>It is also available via anonymous FTP at the GNU distribution
+ site</p>
+
+ <blockquote>
+ <p><a href=
+ "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a>&nbsp;.</p>
+ </blockquote>
+
+ <h2><a name="h2-release-notes" id="h2-release-notes">Release
+ Notes</a></h2>
+
+ <p>These notes are for <span class="main-name">ncurses</span>
+ @VERSION@, released <strong>January 27, 2018</strong>.</p>
+
+ <p>This release is designed to be source-compatible with
+ <span class="main-name">ncurses</span> 5.0 through 6.0; providing
+ extensions to the application binary interface (ABI). Although
+ the source can still be configured to support the <span class=
+ "main-name">ncurses</span> 5 ABI, the intent of the release is to
+ provide extensions to the <span class="main-name">ncurses</span>
+ <strong>6</strong> ABI:</p>
+
+ <ul>
+ <li>
+ <p>improve integration of <span class="part-name">tput</span>
+ and <span class="part-name">tset</span></p>
+ </li>
- <p>The ncurses distribution is available via anonymous FTP at the
- GNU distribution site <a href=
- "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a>&nbsp;.<br>
+ <li>
+ <p>provide support for extended numeric capabilities.</p>
+ </li>
+ </ul>
- It is also available at <a href=
- "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a>&nbsp;.</p>
+ <p>There are, of course, numerous other improvements, listed in
+ this announcement.</p>
- <h1>Release Notes</h1>
+ <p>The release notes also mention some bug-fixes, but are focused
+ on new features and improvements to existing features since
+ <span class="main-name">ncurses</span> 6.0 release.</p>
- <p>This release is designed to be upward compatible from ncurses
- 5.0 through 5.8; very few applications will require
- recompilation, depending on the platform. These are the
- highlights from the change-log since ncurses 5.8 release.</p>
+ <h3><a name="h3-library" id="h3-library">Library
+ improvements</a></h3>
- <p>This is a bug-fix release, correcting a small number of urgent
- problems in the ncurses library from the 5.8 release.</p>
+ <h4><a name="h4-new-library" id="h4-new-library">New
+ features</a></h4>
- <p>It also improves the Ada95 binding:</p>
+ <p>The improved integration of <span class=
+ "part-name">tput</span> and <span class="part-name">tset</span>
+ made only small changes to the libraries. However, supporting
+ extended numeric capabilities required a few changes:</p>
<ul>
- <li>fixes a longstanding portability problem with its use of
- the <a href=
- "http://invisible-island.net/ncurses/man/form_fieldtype.3x">set_field_type</a>
- function. Because that function uses variable-length argument
- lists, its interface with gnat does not work with certain
- platforms.</li>
+ <li>
+ <p>The <code>TERMINAL</code> structure in
+ <code>&lt;term.h&gt;</code> is now opaque. Doing that allowed
+ making the structure larger, to hold the extended numeric
+ data.</p>
+
+ <p>A few applications required changes during development of
+ <span class="main-name">ncurses&nbsp;6.1</span> because those
+ applications misused the members of that structure, e.g.,
+ directly modifying it rather than using <a href=
+ "https://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-def_prog_mode_-def_shell_mode">
+ def_prog_mode</a>.</p>
+ </li>
+
+ <li>
+ <p>Having made <code>TERMINAL</code> opaque (and because none
+ of the library functions use anything except a pointer to
+ <code>TERMINAL</code>), it was possible to increase the size
+ of the structure, adding to the end.</p>
+
+ <p>Existing applications which were linked to the
+ <span class="part-name">ncurses&nbsp;6.0</span> high-level
+ (<em>ncurses</em>, <em>ncursesw</em>) and low-level
+ (<em>tinfo</em>, <em>tinfo</em>) libraries should not require
+ re-linking since the binary interface did not change, nor did
+ the structure offsets with <code>TERMINAL</code> change.</p>
+
+ <p>A few applications use the inner <code>TERMTYPE</code>
+ structure's offsets to refer to terminfo capabilities within
+ that structure. Again, those do not require modification
+ because their offsets within <code>TERMINAL</code> did not
+ change.</p>
+ </li>
- <li>improves configurability and portability, particularly when
- built separately from the main ncurses tree. The 5.8 release
- introduced scripts which can be used to construct separate
- tarballs for the Ada95 and ncurses examples.
+ <li>
+ <p>When configured for wide-characters, i.e.,
+ &ldquo;ncursesw&rdquo; the <code>TERMINAL</code> structure is
+ extended.</p>
- <p>Those were a proof of concept. For the 5.9 release, those
- scripts are augmented with rpm- and dpkg-scripts used in test
- builds against a variety of gnat- and system ncurses versions
- as old as gnat 3.15 and ncurses 5.4 (see snapshots and
- systems tested <a href=
- "http://invisible-island.net/ncurses/ncurses-Ada95.html">here</a>.</p>
+ <p>The new data in <code>TERMINAL</code> holds the same
+ information as <code>TERMTYPE</code>, but with larger numbers
+ (&ldquo;int&rdquo; versus &ldquo;short&rdquo;). It is named
+ <code>TERMTYPE2</code>.</p>
+
+ <p>The library uses this structure internally in preference
+ to <code>TERMTYPE</code>, referring to <code>TERMTYPE</code>
+ only to initialize it for applications that use the
+ capabilities defined in <code>&lt;term.h&gt;</code></p>
+ </li>
+
+ <li>
+ <p>When configured for 8-bit (narrow) characters, the
+ <code>TERMTYPE2</code> structure is not used.</p>
</li>
- <li>additional improvements were made for portability of the
- ncurses examples, adding rpm- and dpkg-scripts for test-builds.
- See <a href=
- "http://invisible-island.net/ncurses/ncurses-examples.html">this
- page</a> for snapshots and other information.</li>
+ <li>The updated application binary interface is 6.1.20171230
+ (used for new <a href=
+ "https://invisible-island.net/ncurses/ncurses-mapsyms.html">versioned
+ symbols</a>), although the interface changes were developed
+ several months previously.</li>
</ul>
- <h1>Features of Ncurses</h1>
+ <p>The motivation for making this extension came from noticing
+ that <a href=
+ "https://invisible-island.net/ncurses/tctest.html#bsd42-numeric-caps">
+ termcap applications</a> could (though not <a href=
+ "https://invisible-island.net/ncurses/ncurses-slang.html#cause_numbers">
+ realistically</a>) use larger numbers than would fit in 16-bits,
+ and the fact that the number of color pairs for a 256-color xterm
+ could not be expressed in terminfo (i.e., 32767 versus 65536).
+ Also, a few terminals support direct-colors, which could use the
+ extension.</p>
+
+ <p>Generally speaking, applications that use internal details of
+ a library are unsupported. There was exactly one exception for
+ <span class="main-name">ncurses</span>: the <span class=
+ "main-name">tack</span> program <em>used</em> the internal
+ details of <code>TERMINAL</code>, because it provides an
+ ncurses-specific feature for interactively modifying a terminfo
+ description and writing the updated description to a text-file.
+ It was possible to not only separate <span class=
+ "main-name">tack</span> from these <a href=
+ "https://invisible-island.net/ncurses/tack.html#portable">internal
+ details of <span class="main-name">ncurses</span></a>, but to
+ generalize it so that the program works with Unix curses
+ (omitting the ncurses-specific feature). That was released as
+ <a href=
+ "https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726">
+ <span class="main-name">tack</span>&nbsp;1.08</a> in July
+ 2017.</p>
+
+ <p>While making changes to <span class="main-name">tack</span> to
+ eliminate its dependency upon <span class=
+ "main-name">ncurses</span> internals, the publicly-visible
+ details of those internals were reviewed, and some symbols were
+ moved to private header files, while others were marked
+ explicitly as <span class="main-name">ncurses</span> internals.
+ Future releases of <span class="main-name">ncurses</span> may
+ eliminate some of those symbols (such as those used by
+ <span class="main-name">tack</span>&nbsp;1.07) because they are
+ neither part of the API or the ABI.</p>
+
+ <p>Using the <code>TERMTYPE2</code> extended numeric
+ capabilities, it is possible to support both color pair values
+ and color values past 32767. Taking compatibility into account,
+ developers readily understand that neither function signatures
+ nor structure offsets change. Also, existing functions have to
+ operate with the extended numbers. Most of that work is internal
+ to the library. For the external interfaces, a hybrid approach
+ was used:</p>
+
+ <ul>
+ <li>
+ <p>X/Open Curses defined function prototypes such as
+ <code>wattr_set</code> with an unused parameter, for
+ &ldquo;future&rdquo; use. After 25 years, the future is here:
+ <span class="main-name">ncurses</span> uses the parameter to
+ augment color pair values as described in the <a href=
+ "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-EXTENSIONS">
+ manual page</a>.</p>
+ </li>
+
+ <li>
+ <p>Other functions such as those defining color pairs did not
+ have a corresponding <em>reserved</em> parameter. For those,
+ <span class="main-name">ncurses</span> defines extended
+ versions such as <code>init_extended_pair</code> (versus
+ <code>init_pair</code>), <code>init_extended_color</code>
+ (versus <code>init_color</code>).</p>
+ </li>
+ </ul>
- <p>The ncurses package is fully compatible with SVr4 (System V
- Release 4) curses:</p>
+ <p>Additionally, to improve performance other changes (and
+ extensions) are provided in this release:</p>
<ul>
- <li>All 257 of the SVr4 calls have been implemented (and are
- documented).</li>
+ <li>
+ <p>Several new functions simplify management of large sets of
+ color pairs: <code>reset_color_pairs</code>,
+ <code>alloc_pair</code>, <code>find_pair</code> and
+ <code>free_pair</code>.</p>
+ </li>
- <li>Full support for SVr4 curses features including keyboard
- mapping, color, forms-drawing with ACS characters, and
- automatic recognition of keypad and function keys.</li>
+ <li>
+ <p>New "RGB" extension capability for direct-color support is
+ used to improve performance of
+ <code>color_content</code>.</p>
+ </li>
- <li>An emulation of the SVr4 panels library, supporting a stack
- of windows with backing store, is included.</li>
+ <li>
+ <p>The internal <code>colorpair_t</code> is now a struct,
+ eliminating an internal 8-bit limit on colors</p>
+ </li>
+
+ <li>
+ <p>Allocation for <code>SCREEN</code>'s color-pair table
+ starts small, grows on demand up to the limit given in the
+ terminal description.</p>
+ </li>
- <li>An emulation of the SVr4 menus library, supporting a
- uniform but flexible interface for menu programming, is
- included.</li>
+ <li>
+ <p><code>setcchar</code> and <code>getcchar</code> now treat
+ a negative color-pair as an error.</p>
+ </li>
+ </ul>
- <li>An emulation of the SVr4 form library, supporting data
- collection through on-screen forms, is included.</li>
+ <h4><a name="h4-fixes-library" id="h4-fixes-library">Other
+ improvements</a></h4>
- <li>Binary terminfo entries generated by the ncurses tic(1)
- implementation are bit-for-bit-compatible with the entry format
- SVr4 curses uses.</li>
+ <p>These are new or revised features:</p>
- <li>The utilities have options to allow you to filter terminfo
- entries for use with less capable
- <strong>curses</strong>/<strong>terminfo</strong> versions such
- as the HP/UX and AIX ports.</li>
+ <ul>
+ <li>
+ <p>modify <code>c++/etip.h.in</code> to accommodate
+ deprecation of throw and throws in c++17</p>
+ </li>
+
+ <li>
+ <p>add new function <code>unfocus_current_field</code></p>
+ </li>
+
+ <li>
+ <p>add option to preserve leading whitespace in form
+ fields</p>
+ </li>
+
+ <li>
+ <p>add a macro for <code>is_linetouched</code> and adjust the
+ function's return value to make it possible for most
+ applications to check for an error-return.</p>
+ </li>
+
+ <li>
+ <p>add build-time utility <code>report_offsets</code> to help
+ show when the various configurations of tinfo library are
+ compatible or not.</p>
+ </li>
</ul>
- <p>The ncurses package also has many useful extensions over
- SVr4:</p>
+ <p>These were done to limit or ultimately deprecate features:</p>
<ul>
- <li>The API is 8-bit clean and base-level conformant with the
- X/OPEN curses specification, XSI curses (that is, it implements
- all BASE level features, and most EXTENDED features). It
- includes many function calls not supported under SVr4 curses
- (but portability of all calls is documented so you can use the
- SVr4 subset only).</li>
+ <li>
+ <p>drop two symbols obsoleted in 2004:
+ <code>_nc_check_termtype</code>, and
+ <code>_nc_resolve_uses</code></p>
+ </li>
- <li>Unlike SVr3 curses, ncurses can write to the
- rightmost-bottommost corner of the screen if your terminal has
- an insert-character capability.</li>
+ <li>
+ <p>move <code>_nc_tracebits</code>, <code>_tracedump</code>
+ and <code>_tracemouse</code> to <code>curses.priv.h</code>,
+ since they are not part of the suggested ABI6.</p>
+ </li>
- <li>Ada95 and C++ bindings.</li>
+ <li>
+ <p>mark some structs in form/menu/panel libraries as
+ potentially opaque without modifying API/ABI.</p>
+ </li>
- <li>Support for mouse event reporting with X Window xterm and
- FreeBSD and OS/2 console windows.</li>
+ <li>
+ <p>ifdef'd header-file definition of <code>mouse_trafo</code>
+ with <code>NCURSES_NOMACROS</code></p>
+ </li>
- <li>Extended mouse support via Alessandro Rubini's gpm
- package.</li>
+ <li>
+ <p>remove initialization-check for calling <code>napms</code>
+ in the term-driver configuration; none is needed.</p>
+ </li>
- <li>The function <code>wresize</code> allows you to resize
- windows, preserving their data.</li>
+ <li>
+ <p>modify <code>trace</code> to avoid overwriting existing
+ file</p>
+ </li>
+ </ul>
- <li>The function <code>use_default_colors</code> allows you to
- use the terminal's default colors for the default color pair,
- achieving the effect of transparent colors.</li>
+ <p>These are improvements to existing features:</p>
- <li>The functions <code>keyok</code> and
- <code>define_key</code> allow you to better control the use of
- function keys, e.g., disabling the ncurses KEY_MOUSE, or by
- defining more than one control sequence to map to a given key
- code.</li>
+ <ul>
+ <li>
+ <p>modify <code>make_hash</code> to allow building with
+ address-sanitizer, assuming that <code>--disable-leaks</code>
+ is configured.</p>
+ </li>
- <li>Support for 256-color terminals, such as modern xterm, when
- configured using the <code>--enable-ext-colors</code>
- option.</li>
+ <li>
+ <p>move <code>SCREEN</code> field for <code>use_tioctl</code>
+ data before the ncursesw fields, and limit that to the
+ sp-funcs configuration to improve termlib compatibility</p>
+ </li>
- <li>Support for 16-color terminals, such as <em>aixterm</em>
- and <em>modern xterm</em>.</li>
+ <li>
+ <p>modify db-iterator:</p>
+
+ <ul>
+ <li>
+ <p>ignore zero-length files in db-iterator; these are
+ useful for instance to suppress
+ <code>$HOME/.terminfo</code> when not wanted.</p>
+ </li>
+
+ <li>
+ <p>modify <code>update_getenv</code> to ensure that
+ environment variables which are not initially set will be
+ checked later if an application happens to set them</p>
+ </li>
+ </ul>
+ </li>
- <li>Better cursor-movement optimization. The package now
- features a cursor-local-movement computation more efficient
- than either BSD's or System V's.</li>
+ <li>
+ <p>modify <code>_nc_outc_wrapper</code> to use the standard
+ output if the screen was not initialized, rather than
+ returning an error.</p>
+ </li>
- <li>Super hardware scrolling support. The screen-update code
- incorporates a novel, simple, and cheap algorithm that enables
- it to make optimal use of hardware scrolling, line-insertion,
- and line-deletion for screen-line movements. This algorithm is
- more powerful than the 4.4BSD curses <code>quickch</code>
- routine.</li>
+ <li>
+ <p>improve checks for low-level terminfo functions when the
+ terminal has not been initialized.</p>
+ </li>
- <li>Real support for terminals with the magic-cookie glitch.
- The screen-update code will refrain from drawing a highlight if
- the magic- cookie unattributed spaces required just before the
- beginning and after the end would step on a non-space
- character. It will automatically shift highlight boundaries
- when doing so would make it possible to draw the highlight
- without changing the visual appearance of the screen.</li>
+ <li>
+ <p>modify <code>set_curterm</code> to update
+ <code>ttytype[]</code> data used by longname/p&gt;</p>
+ </li>
- <li>It is possible to generate the library with a list of
- pre-loaded fallback entries linked to it so that it can serve
- those terminal types even when no terminfo tree or termcap file
- is accessible (this may be useful for support of
- screen-oriented programs that must run in single-user
- mode).</li>
+ <li>
+ <p>modify <code>_nc_get_screensize</code> to allow for
+ <code>use_env</code> and <code>use_tioctl</code> state to be
+ per-screen when sp-funcs are configured, better matching the
+ behavior when using the term-driver configuration.</p>
+ </li>
- <li>The tic(1)/captoinfo utility provided with ncurses has the
- ability to translate many termcaps from the XENIX, IBM and
- AT&amp;T extension sets.</li>
+ <li>
+ <p>remove an early-return from <code>_nc_do_color,</code>
+ which can interfere with data needed by <code>bkgd</code>
+ when <span class="main-name">ncurses</span> is configured
+ with extended colors</p>
+ </li>
- <li>A BSD-like tset(1) utility is provided.</li>
+ <li>
+ <p>incorporate <code>A_COLOR</code> mask into
+ <code>COLOR_PAIR</code>, in case user application provides an
+ out-of-range pair number</p>
+ </li>
- <li>The ncurses library and utilities will automatically read
- terminfo entries from $HOME/.terminfo if it exists, and compile
- to that directory if it exists and the user has no write access
- to the system directory. This feature makes it easier for users
- to have personal terminfo entries without giving up access to
- the system terminfo directory.</li>
-
- <li>You may specify a path of directories to search for
- compiled descriptions with the environment variable
- TERMINFO_DIRS (this generalizes the feature provided by
- TERMINFO under stock System V.)</li>
+ <li>
+ <p>modify logic for <code>endwin</code>-state to be able to
+ detect the case where the screen was never initialized, using
+ that to trigger a flush of <span class=
+ "main-name">ncurses'</span> buffer for <code>mvcur</code>,
+ e.g., in the sample program <span class=
+ "part-name">dots_mvcur</span> for the term-driver
+ configuration.</p>
+ </li>
+ </ul>
- <li>In terminfo source files, use capabilities may refer not
- just to other entries in the same source file (as in System V)
- but also to compiled entries in either the system terminfo
- directory or the user's $HOME/.terminfo directory.</li>
-
- <li>A script (<strong>capconvert</strong>) is provided to help
- BSD users transition from termcap to terminfo. It gathers the
- information in a TERMCAP environment variable and/or a
- ~/.termcap local entries file and converts it to an equivalent
- local terminfo tree under $HOME/.terminfo.</li>
-
- <li>Automatic fallback to the /etc/termcap file can be compiled
- in when it is not possible to build a terminfo tree. This
- feature is neither fast nor cheap, you don't want to use it
- unless you have to, but it's there.</li>
-
- <li>The table-of-entries utility <strong>toe</strong> makes it
- easy for users to see exactly what terminal types are available
- on the system.</li>
-
- <li>The library meets the XSI requirement that every macro
- entry point have a corresponding function which may be linked
- (and will be prototype-checked) if the macro definition is
- disabled with <code>#undef</code>.</li>
-
- <li>An HTML "Introduction to Programming with NCURSES" document
- provides a narrative introduction to the curses programming
- interface.</li>
- </ul>
-
- <h1>State of the Package</h1>
-
- <p>Numerous bugs present in earlier versions have been fixed; the
- library is far more reliable than it used to be. Bounds checking
- in many `dangerous' entry points has been improved. The code is
- now type-safe according to gcc -Wall. The library has been
- checked for malloc leaks and arena corruption by the Purify
- memory-allocation tester.</p>
-
- <p>The ncurses code has been tested with a wide variety of
- applications including (versions starting with those noted):</p>
+ <p>These are corrections to existing features:</p>
- <dl>
- <dt>cdk</dt>
+ <ul>
+ <li>
+ <p>fixes for writing extended color pairs in
+ <code>putwin</code>.</p>
+ </li>
- <dd>Curses Development Kit<br>
- <a href=
- "http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</a><br>
+ <li>
+ <p>modify no-leaks code for <code>lib_cur_term.c</code> to
+ account for the <code>tgetent</code> cache.</p>
+ </li>
- <a href=
- "http://www.vexus.ca/products/CDK/">http://www.vexus.ca/products/CDK/</a></dd>
+ <li>
+ <p>amend handling of the <code>repeat_char</code> capability
+ in <code>EmitRange</code> to avoid scope creep: translate the
+ character to the alternate character set when the alternate
+ character set is enabled, and do not use
+ <code>repeat_char</code> for characters past 255.</p>
+ </li>
- <dt>ded</dt>
+ <li>
+ <p>improve wide-character implementation of
+ <code>myADDNSTR</code> in <code>frm_driver.c</code>, which
+ was inconsistent with the normal implementation.</p>
+ </li>
- <dd>directory-editor<br>
- <a href=
- "http://invisible-island.net/ded/">http://invisible-island.net/ded/</a></dd>
+ <li>
+ <p>modify <code>winnstr</code> and <code>winchnstr</code> to
+ return error if the output pointer is null, as well as adding
+ a null pointer check of the window pointer for better
+ compatibility with other implementations.</p>
+ </li>
- <dt>dialog</dt>
+ <li>
+ <p>modify <code>setupterm</code> to save original tty-modes
+ so that <code>erasechar</code> works as expected. Also modify
+ <code>_nc_setupscreen</code> to avoid redundant calls to get
+ original tty-modes.</p>
+ </li>
- <dd>the underlying application used in Slackware's setup, and
- the basis for similar applications on GNU/Linux.<br>
- <a href=
- "http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</a></dd>
+ <li>
+ <p>modify <code>wattr_set</code> and <code>wattr_get</code>
+ to return <code>ERR</code> if <em>win</em>-parameter is null,
+ as documented.</p>
+ </li>
+
+ <li>
+ <p>correct order of initialization for traces in
+ <code>use_env</code> and <code>use_tioctl</code> versus first
+ <code>_tracef</code> calls.</p>
+ </li>
- <dt>lynx</dt>
+ <li>
+ <p>correct parameters for <code>copywin</code> call in
+ <code>_nc_Synchronize_Attributes</code></p>
+ </li>
- <dd>the character-screen WWW browser<br>
- <a href=
- "http://lynx.isc.org/release/">http://lynx.isc.org/release/</a></dd>
+ <li>
+ <p>flush the standard output in <code>_nc_flush</code> for
+ the case where <code>SP</code> is zero, e.g., when called via
+ <code>putp</code>. This fixes a scenario where
+ &ldquo;tput&nbsp;flash&rdquo; did not work after changes in
+ 20130112.</p>
+ </li>
- <dt>Midnight Commander</dt>
+ <li>
+ <p>amend internal use of <code>tputs</code> to consistently
+ use the number of lines affected, e.g., for insert/delete
+ character operations. While merging terminfo source early in
+ 1995, several descriptions used the
+ &ldquo;<code>*</code>&rdquo; proportional delay for these
+ operations, prompting a change in <code>doupdate</code>.</p>
+ </li>
- <dd>file manager<br>
- <a href=
- "http://www.midnight-commander.org/">http://www.midnight-commander.org/</a></dd>
+ <li>
+ <p>correct return-value of extended <code>putwin</code>.</p>
+ </li>
+
+ <li>
+ <p>double-width multibyte characters were not counted
+ properly in <code>winsnstr</code> and
+ <code>wins_nwstr</code>.</p>
+ </li>
+
+ <li>
+ <p>amend fix for <code>_nc_ripoffline</code> from 20091031 to
+ make <code>test/ditto.c</code> work in threaded
+ configuration.</p>
+ </li>
+
+ <li>
+ <p>modify <code>_nc_viscbuf2</code> and
+ <code>_tracecchar_t2</code> to trace wide-characters as a
+ whole rather than their multibyte equivalents.</p>
+ </li>
+
+ <li>
+ <p>minor fix in <code>wadd_wchnstr</code> to ensure that each
+ cell has nonzero width.</p>
+ </li>
+
+ <li>
+ <p>move <code>PUTC_INIT</code> calls next to
+ <code>wcrtomb</code> calls, to avoid carry-over of error
+ status when processing Unicode values which are not
+ mapped.</p>
+ </li>
+
+ <li>
+ <p>add missing assignment in <code>lib_getch.c</code> to make
+ <code>notimeout</code> work</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-programs" id="h3-programs">Program
+ improvements</a></h3>
+
+ <p>While reviewing user feedback, it became apparent that the
+ differences between <a href=
+ "https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization">
+ <span class="part-name">reset</span></a> (an alias for
+ <span class="part-name">tset</span>) and &ldquo;<span class=
+ "part-name">tput reset</span>&rdquo; were confusing:</p>
+
+ <ul>
+ <li>one (<a href=
+ "https://invisible-island.net/ncurses/man/tset.1.html">tset</a>)
+ updated the terminal modes, but used only part of the terminfo
+ capabilities for initialization, while</li>
+
+ <li>the other (<a href=
+ "https://invisible-island.net/ncurses/man/tput.1.html"><span class="part-name">tput</span></a>)
+ used all of the terminal capabilities while neglecting the
+ terminal modes.</li>
+ </ul>
+
+ <p>On further investigation, it turned out that the differences
+ were largely an accident due to the way those programs had
+ evolved.</p>
+
+ <p>This release eliminates the unnecessary differences, using the
+ same approach for <span class="part-name">tput</span>'s
+ <em>init</em> (initialization), <em>reset</em> and <em>clear</em>
+ operations as the separate <a href=
+ "https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization">
+ reset</a> and <a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html"><span class="part-name">
+ clear</span></a> programs. Doing this does not change the
+ command-line options; existing scripts are unaffected.</p>
+
+ <p>These are the user-visible changes for the three programs
+ (<span class="part-name">tput</span>, <span class=
+ "part-name">tset</span> and <span class=
+ "part-name">clear</span>):</p>
+
+ <ul>
+ <li>
+ <p>add the terminal-mode parts of &ldquo;<span class=
+ "part-name">reset</span>&rdquo; (aka <span class=
+ "part-name">tset</span>) to the &ldquo;<code>tput
+ reset</code>&rdquo; command, making the two almost the same
+ except for window-size.</p>
+ </li>
+
+ <li>
+ <p>improve <span class="part-name">tput</span>'s check for
+ being called as &ldquo;init&rdquo; or &ldquo;reset&rdquo; to
+ allow for transformed names.</p>
+ </li>
+
+ <li>
+ <p>add &ldquo;clear&rdquo; as a possible link/alias to
+ <span class="part-name">tput</span>.</p>
+ </li>
+
+ <li>
+ <p>amend changes for <span class="part-name">tput</span> to
+ reset tty modes to &ldquo;sane&rdquo; if the program is run
+ as &ldquo;reset&rdquo;, like <span class=
+ "part-name">tset</span>. Likewise, ensure that <span class=
+ "part-name">tset</span> sends either reset- or
+ init-strings.</p>
+ </li>
+
+ <li>
+ <p>add <code>-x</code> option to <span class=
+ "part-name">clear</span>/<span class="part-name">tput</span>
+ to make the <code>E3</code> extension optional</p>
+ </li>
+
+ <li>
+ <p>add functionality of
+ &ldquo;<code>tset&nbsp;-w</code>&rdquo; to <span class=
+ "part-name">tput</span>, like the
+ &ldquo;<code>-c</code>&rdquo; feature this is not optional in
+ <span class="part-name">tput</span>.</p>
+ </li>
+
+ <li>
+ <p>add options <code>-T</code> and <code>-V</code> to
+ <span class="part-name">clear</span> command for
+ compatibility with <span class="part-name">tput</span>.</p>
+ </li>
+
+ <li>
+ <p>drop long-obsolete &ldquo;<code>-n</code>&rdquo; option
+ from <span class="part-name">tset</span>.</p>
+ </li>
+
+ <li>
+ <p>modify <span class="part-name">tset</span>'s assignment to
+ <code>TERM</code> in its output to reflect the name by which
+ the terminal description is found, rather than the primary
+ name. That was an unnecessary part from the initial
+ conversion of <span class="part-name">tset</span> from
+ termcap to terminfo. The termcap library in 4.3BSD did this
+ to avoid using the short 2-character name</p>
+ </li>
+
+ <li>
+ <p>remove a restriction in <span class=
+ "part-name">tput</span>'s support for termcap names which
+ omitted capabilities normally not shown in termcap
+ translations</p>
+ </li>
+
+ <li>
+ <p>add usage message to <span class="part-name">clear</span>
+ command</p>
+ </li>
+
+ <li>
+ <p>improve usage messages for <span class=
+ "part-name">tset</span> and <span class=
+ "part-name">tput</span>.</p>
+ </li>
+ </ul>
+
+ <p>Other user-visible improvements and new features include:</p>
+
+ <ul>
+ <li>
+ <p>modify <span class="part-name">tic</span>/<span class=
+ "part-name">infocmp</span> display of numeric values to use
+ hexadecimal when they are "close" to a power of two, making
+ the result more readable.</p>
+ </li>
+
+ <li>
+ <p>add &ldquo;<code>-W</code>&rdquo; option to <span class=
+ "part-name">tic</span>/<span class="part-name">infocmp</span>
+ to force long strings to wrap.</p>
+
+ <ul>
+ <li>
+ <p>This is in addition to the
+ &ldquo;<code>-w</code>&rdquo; option which attempts to
+ fit capabilities into a given line-length.</p>
+ </li>
+
+ <li>
+ <p>If &ldquo;<code>-f</code>&rdquo; option splits line,
+ do not further split it with
+ &ldquo;<code>-W</code>&rdquo;.</p>
+ </li>
+
+ <li>
+ <p>Begin a new line when adding
+ &ldquo;<code>use=</code>&rdquo; after a wrapped line.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>add &ldquo;<code>-q</code>&rdquo; option to <span class=
+ "part-name">infocmp</span> to suppress the
+ &ldquo;<code>Reconstructed from</code>&rdquo; comment from
+ the header, and a corresponding option to <span class=
+ "part-name">tic</span> to suppress all comments from the
+ &ldquo;<code>tic -I</code>&rdquo; output.</p>
+ </li>
+
+ <li>
+ <p>Sorted options in usage message for <span class=
+ "part-name">infocmp</span>, to make it simpler to see unused
+ letters.</p>
+ </li>
+
+ <li>
+ <p>Updated usage message for <span class=
+ "part-name">tic</span>, adding &ldquo;<code>-0</code>&rdquo;
+ option.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">infocmp</span>/<span class=
+ "part-name">tic</span> &ldquo;<code>-Q</code>&rdquo; option,
+ which allows one to dump the compiled form of the terminal
+ entry, in hexadecimal or base64:</p>
+
+ <ul>
+ <li>A &ldquo;<code>b64:</code>&rdquo; prefix in the
+ <code>TERMINFO</code> variable tells the terminfo reader to
+ use base64 according to RFC-3548 as well as RFC-4648
+ url/filename-safe format.</li>
+
+ <li>A &ldquo;<code>hex:</code>&rdquo; prefix tells the
+ terminfo reader to accept hexadecimal data as generated by
+ &ldquo;<code>infocmp -0qQ1</code>&rdquo;.</li>
+ </ul>
+ </li>
+ </ul>
+
+ <p>Other less-visible improvements and new features include:</p>
+
+ <ul>
+ <li>
+ <p>modify utility headers such as <code>tic.h</code> to make
+ it clearer which are externals that are used by <span class=
+ "main-name">tack</span>.</p>
+ </li>
+
+ <li>
+ <p>add &ldquo;<code>reset</code>&rdquo; to list of programs
+ whose names might change in manpages due to
+ program-transformation configure options.</p>
+ </li>
+
+ <li>
+ <p>modify &ldquo;<code>-T</code>&rdquo; option of
+ <span class="part-name">clear</span> and <span class=
+ "part-name">tput</span> to call <code>use_tioctl</code> to
+ obtain the operating system's notion of the screensize if
+ possible.</p>
+ </li>
+
+ <li>
+ <p>add check in <span class="part-name">tput</span> for
+ init/reset operands to ensure those use a terminal.</p>
+ </li>
+
+ <li>
+ <p>modify programs <span class="part-name">clear</span>,
+ <span class="part-name">tabs</span>, <span class=
+ "part-name">tput</span> and <span class=
+ "part-name">tset</span> to pass the actual tty file
+ descriptor to setupterm rather than the standard output or
+ error, making padding work.</p>
+ </li>
+
+ <li>
+ <p>change <span class="part-name">tset</span>'s
+ initialization to allow it to get settings from the standard
+ input as well as <code>/dev/tty</code>, to be more effective
+ when output or error are redirected.</p>
+ </li>
+
+ <li>
+ <p>amend check in <span class="part-name">tput</span>,
+ <span class="part-name">tabs</span> and <span class=
+ "part-name">clear</span> to allow those to use the
+ database-only features in <span class="part-name">cron</span>
+ if a &ldquo;<code>-T</code>&rdquo; option gives a suitable
+ terminal name.</p>
+ </li>
+
+ <li>
+ <p>improve error message from <span class=
+ "part-name">tset</span>/<span class="part-name">reset</span>
+ when both stderr/stdout are redirected to a file or pipe.</p>
+ </li>
+ </ul>
+
+ <p>Several of the less apparent features deal with translation of
+ terminfo to termcap (and the reverse), with corresponding checks
+ by <span class="part-name">tic</span>:</p>
- <dt>mutt</dt>
+ <ul>
+ <li>
+ <p>modify check in <code>fmt_entry</code> to handle a
+ cancelled reset string. Make similar fixes in other parts of
+ <code>dump_entry.c</code> and <code>tput.c</code></p>
+ </li>
+
+ <li>
+ <p>correct read of terminfo entry in which all strings are
+ absent or explicitly cancelled. Before this fix, the result
+ was that all were treated as only absent.</p>
+ </li>
+
+ <li>
+ <p>modify <span class="part-name">infocmp</span> to suppress
+ mixture of absent/cancelled capabilities that would only show
+ as &ldquo;<code>NULL, NULL</code>&rdquo;, unless the
+ &ldquo;<code>-q</code>&rdquo; option is used, e.g., to show
+ &ldquo;<code>-, @</code>&rdquo; or &ldquo;<code>@,
+ -</code>&rdquo;.</p>
+ </li>
+
+ <li>
+ <p>correct a warning from <span class="part-name">tic</span>
+ about keys which are the same, to skip over missing/cancelled
+ values.</p>
+ </li>
+
+ <li>
+ <p>add check in <span class="part-name">tic</span> for use of
+ bold, etc., video attributes in the color capabilities,
+ accounting whether the feature is listed in
+ <code>ncv</code>.</p>
+ </li>
+
+ <li>
+ <p>add check in <span class="part-name">tic</span> for
+ unnecessary use of &ldquo;<code>2</code>&rdquo; to denote a
+ shifted special key.</p>
+ </li>
+
+ <li>
+ <p>improve check in <span class="part-name">tic</span> for
+ delays by also warning about beep/flash when a delay is not
+ embedded, or if those use the VT100 reverse video escape
+ without using a delay.</p>
+ </li>
+
+ <li>
+ <p>improve checks in <code>trim_sgr0</code>, comp_parse.c and
+ parse_entry.c, for cancelled string capabilities.</p>
+ </li>
+
+ <li>
+ <p>add check in <span class="part-name">tic</span> for some
+ syntax errors of delays, as well as use of proportional
+ delays for non-line capabilities.</p>
+ </li>
+
+ <li>
+ <p>add check in <span class="part-name">tic</span> for
+ conflict between <code>ritm</code>, <code>rmso</code>,
+ <code>rmul</code> versus <code>sgr0</code>.</p>
+ </li>
+
+ <li>
+ <p>add check in <code>_nc_parse_entry</code> for invalid
+ entry name, setting the name to
+ &ldquo;<code>invalid</code>&rdquo; to avoid problems storing
+ entries.</p>
+ </li>
+
+ <li>
+ <p>improve <code>_nc_tparm_analyze</code>, using that to
+ extend the checks made by <span class="part-name">tic</span>
+ for reporting inconsistencies between the expected number of
+ parameters for a capability and the actual.</p>
+ </li>
+
+ <li>
+ <p>remove <span class="part-name">tic</span> warning about
+ &ldquo;<code>^?</code>&rdquo; in string capabilities, which
+ was marked as an extension; however all Unix implementations
+ support this and X/Open Curses does not address it. On the
+ other hand, <a href=
+ "https://invisible-island.net/ncurses/tctest.html#bsd42-ctl-question">
+ BSD termcap</a> did not support this feature (until the
+ <a href=
+ "https://invisible-island.net/ncurses/tctest.html#freebsd-ctl-question">
+ mid-1990s</a>).</p>
+
+ <p>in <code>_nc_infotocap</code>, added a check to ensure
+ that terminfo &ldquo;<code>^?</code>&rdquo; is not written to
+ termcap.</p>
+ </li>
+
+ <li>
+ <p>modify <code>sscanf</code> calls in
+ <code>_nc_infotocap</code> for patterns
+ &ldquo;<code>%{number}%+%c</code>&rdquo; and
+ &ldquo;<code>%'char'%+%c</code>&rdquo; to check that the
+ final character is really &ldquo;<code>c</code>&rdquo;,
+ avoiding a case in icl6404 which cannot be converted to
+ termcap.</p>
+ </li>
+
+ <li>
+ <p>in <code>_nc_tic_expand</code> and
+ <code>_nc_infotocap</code>, improved string-length check when
+ deciding whether to use &ldquo;<code>^X</code>&rdquo; or
+ &ldquo;<code>\xxx</code>&rdquo; format for control
+ characters, to make the output of <span class=
+ "part-name">tic</span>/<span class="part-name">infocmp</span>
+ more predictable.</p>
+ </li>
+
+ <li>
+ <p>limited termcap &ldquo;<code>%d</code>&rdquo; width to 2
+ digits on input, and use &ldquo;<code>%2</code>&rdquo; in
+ preference to &ldquo;<code>%02</code>&rdquo; on output.</p>
+ </li>
+
+ <li>
+ <p>correct terminfo/termcap conversion of
+ &ldquo;<code>%02</code>&rdquo; and
+ &ldquo;<code>%03</code>&rdquo; into
+ &ldquo;<code>%2</code>&rdquo; and
+ &ldquo;<code>%3</code>&rdquo;; the result repeated the last
+ character.</p>
+ </li>
+ </ul>
+
+ <h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
+
+ <p>Along with the library and utilities, many improvements were
+ made to the <a href=
+ "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>.</p>
+
+ <p>These changes were made to demonstrate new extensions in
+ <span class="main-name">ncurses</span>:</p>
+
+ <ul>
+ <li>
+ <p>add <span class="part-name">demo_new_pair</span> program,
+ to demonstrate <a href=
+ "https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-alloc_pair">
+ <code>alloc_pair</code></a>, <a href=
+ "https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-find_pair">
+ <code>find_pair</code></a> and <a href=
+ "https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-free_pair">
+ <code>free_pair</code></a> functions.</p>
+
+ <p>This program iterates over the possible color
+ combinations, allocating or initializing color pairs. For
+ best results, choose screen-width dividing evenly into the
+ number of colors. e.g.,</p>
+
+ <blockquote>
+ <table summary="sample layouts for demo_new_pair">
+ <tr>
+ <td><code>32x64,32x128</code>&nbsp;&nbsp;</td>
+
+ <td>256 colors</td>
+ </tr>
+
+ <tr>
+ <td><code>24x44,24x88</code></td>
+
+ <td>88 colors</td>
+ </tr>
+
+ <tr>
+ <td><code>32x64,24x128</code></td>
+
+ <td>16 colors</td>
+ </tr>
+ </table>
+ </blockquote>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">extended_color</span> program,
+ like the older <span class="part-name">color_set</span>
+ program, but using the extended color functions, with and
+ without the SP-functions interface.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">picsmap</span> program to fill
+ in some testing issues not met by <span class=
+ "part-name">dots</span>, using this as the third example in a
+ comparison of the <a href=
+ "https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap">
+ ncurses versus slang</a> libraries.</p>
+
+ <p>The program can directly read X bitmap and pixmap files,
+ displaying a picture. It can read other image files using
+ <span class="part-name">ImageMagick</span>'s <span class=
+ "part-name">convert</span> program to translate the image
+ into text.</p>
+
+ <p>For 16-, 88- and 256-color terminal descriptions,
+ <span class="part-name">picsmap</span> can load a palette
+ file which tells it which color palette entries to use. For
+ direct-colors, the terminal descriptions use the
+ <code>RGB</code> extension capability.</p>
+ </li>
+ </ul>
+
+ <p>There are other new example programs and a few scripts:</p>
+
+ <ul>
+ <li>
+ <p>add <span class="part-name">dots_xcurses</span> program to
+ illustrate a different approach used for extended colors
+ which can be contrasted with <span class=
+ "part-name">dots_curses</span>.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">list_keys</span> program show
+ function keys for one or more terminal descriptions. It uses
+ <span class="main-name">ncurses'</span>s convention of
+ modifiers for special keys, based on xterm.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">padview</span> program, to
+ compare pads with direct updates in the <span class=
+ "part-name">view</span> program.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">sp_tinfo</span> program to
+ exercise the SP-functions extension of the low-level terminfo
+ library.</p>
+ </li>
+
+ <li>
+ <p>add test-programs for <code>termattrs</code> and
+ <code>term_attrs</code> functions.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">test_sgr</span> program to
+ exercise all combinations of the sgr capability.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">tput-colorcube</span> demo
+ script, imitating xterm's 88- and 256-color scripts using
+ <span class="part-name">tput</span>.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">tput-initc</span> script to
+ demonstrate how <span class="part-name">tput</span> may be
+ used to initialize a color palette from a data file.</p>
+ </li>
+ </ul>
+
+ <p>A variety of improvements were made to existing programs, both
+ new features as well as options added to make the set of programs
+ more consistent.</p>
+
+ <p>The <span class="part-name">ncurses</span> program is the
+ largest; a proportionately large number of changes were made to
+ it:</p>
+
+ <ul>
+ <li>
+ <p>modify a/A screens to make exiting on an escape character
+ depend on the start of keypad and timeout modes, to allow
+ better testing of function-keys.</p>
+
+ <p>add &ldquo;<code>t</code>&rdquo; toggle for
+ <code>notimeout</code> function.</p>
+ </li>
+
+ <li>
+ <p>modify layout of b/B screens to allow for additional
+ annotation on the right margin; some terminals with partial
+ support did not display well.</p>
+ </li>
+
+ <li>
+ <p>modify c/C screens to allow for extended color pairs.</p>
+
+ <p>add z/Z <em>zoom</em> feature to make extended color pairs
+ easier to test.</p>
+
+ <p>modify test-screens to take advantage of wide screens,
+ reducing the number of lines used for 88- and 256-colors.</p>
+ </li>
+
+ <li>
+ <p>modify &ldquo;<code>d</code>&rdquo; edit-color screen to
+ optionally read xterm color palette directly from terminal,
+ as well as handling <code>KEY_RESIZE</code> and
+ screen-repainting with control/L and control/R.</p>
+ </li>
+
+ <li>
+ <p>add examples to &ldquo;<code>F</code>&rdquo; screen for
+ <code>WACS_D_PLUS</code> and <code>WACS_T_PLUS</code>.</p>
+ </li>
+
+ <li>
+ <p>improve &ldquo;<code>g</code>&rdquo; screen, correcting
+ ifdef which made the legend not reflect changes to keypad-
+ and scroll-modes. Added check for return-value of
+ <code>putwin</code>.</p>
+ </li>
+
+ <li>
+ <p>make &ldquo;<code>s</code>&rdquo; test easier to
+ understand which subtests are available</p>
+
+ <p>add a corresponding &ldquo;<code>S</code>&rdquo;
+ wide-character overlap test-screen.</p>
+ </li>
+
+ <li>
+ <p>add &ldquo;<code>v</code>&rdquo; screen to show
+ <code>baudrate</code> and other values.</p>
+ </li>
+ </ul>
+
+ <p>These changes were made to the other examples:</p>
+
+ <ul>
+ <li>
+ <p>modify <span class="part-name">blue</span> program to use
+ Unicode values for card-glyphs when available, as well as
+ improving the check for CP437 and CP850.</p>
+ </li>
+
+ <li>
+ <p>improve <span class="part-name">demo_menus</span> program,
+ allowing mouse-click on the menu-headers to switch the active
+ menu. This requires a new extension option
+ <code>O_MOUSE_MENU</code> to tell the menu driver to put
+ mouse events which do not apply to the active menu back into
+ the queue so that the application can handle the event.</p>
+ </li>
+
+ <li>
+ <p>correct logic in <span class=
+ "part-name">demo_terminfo</span> program for
+ &ldquo;<code>-f</code>&rdquo; option</p>
+ </li>
+
+ <li>
+ <p>modify <span class="part-name">ditto</span> program to
+ allow <code>$XTERM_PROG</code> environment variable to
+ override "xterm" as the name of the program to run in the
+ threaded configuration.</p>
+ </li>
+
+ <li>
+ <p>add several options to the &ldquo;<em>dots</em>&rdquo;
+ test-programs.</p>
+ </li>
+
+ <li>
+ <p>modify <span class="part-name">filter</span> program:</p>
+
+ <ul>
+ <li>illustrate an alternative to <code>getnstr</code>, that
+ polls for input while updating a clock on the right margin
+ as well as responding to window size-changes.</li>
+
+ <li>adapt logic used in <a href=
+ "https://invisible-island.net/dialog/"><span class=
+ "main-name">dialog</span></a> <a href=
+ "https://invisible-island.net/dialog/manpage/dialog.html#h3-Common-Options">
+ &ldquo;<code>--keep-tite</code>&rdquo; option</a> for
+ <span class="part-name">filter</span> program as the "-a"
+ option. When set, <span class="part-name">filter</span>
+ attempts to suppress the alternate screen.</li>
+ </ul>
+ </li>
+
+ <li>
+ <p>modify <span class="part-name">knight</span> program to
+ provide the "slow" solution for small screens using
+ &ldquo;<code>R</code>&rdquo;, noting that Warnsdorf's method
+ is easily done with &ldquo;<code>a</code>&rdquo;.</p>
+ </li>
+
+ <li>
+ <p>modify the <span class="part-name">savescreen</span>
+ program to add test patterns that exercise 88-, 256-, etc.,
+ colors.</p>
+ </li>
+
+ <li>
+ <p>add options to <span class="part-name">test_arrays</span>,
+ for selecting termcap vs terminfo, etc.</p>
+ </li>
- <dd>mail utility<br>
- <a href="http://www.mutt.org/">http://www.mutt.org/</a></dd>
+ <li>
+ <p>modify the <span class="part-name">view</span>
+ program:</p>
- <dt>ncftp</dt>
+ <ul>
+ <li>expand tabs using the ncurses library rather than in
+ the test-program.</li>
- <dd>file-transfer utility<br>
- <a href="http://www.ncftp.com/">http://www.ncftp.com/</a></dd>
+ <li>eliminate the &ldquo;<code>-n</code>&rdquo; option by
+ simply reading the whole file.</li>
- <dt>nvi</dt>
+ <li>implement page up/down commands.</li>
- <dd>New vi versions 1.50 are able to use ncurses versions 1.9.7
- and later.<br>
+ <li>remove the very old <code>SIGWINCH</code> example; just
+ use <code>KEY_RESIZE</code>.</li>
+ </ul>
+ </li>
+
+ <li>
+ <p>improve animation in <span class="part-name">xmas</span>
+ program by adding a time-delay in <code>blinkit</code>.</p>
+ </li>
+
+ <li>
+ <p>modify several test-programs which call
+ <code>use_default_colors</code> to consistently do this only
+ if the &ldquo;<code>-d</code>&rdquo; option is given.</p>
+ </li>
+
+ <li>
+ <p>modify the install-rule for ncurses-examples to put the
+ data files in the data directory, e.g.,
+ <code>/usr/share/ncurses-examples</code>.</p>
+ </li>
+
+ <li>
+ <p>modify several test programs to use new
+ <code>popup_msgs</code> function, adapted from the
+ help-screen used in the <code>edit_field</code> program.</p>
+ </li>
+
+ <li>
+ <p>modify test data for xterm palettes to use the newer
+ color4/color12 values.</p>
+ </li>
+
+ <li>
+ <p>improve the <span class="part-name">tracemunch</span>
+ script:</p>
+
+ <ul>
+ <li>show screenXX pointers and thread identifiers as
+ names.</li>
+
+ <li>chang address-parameters of <code>add_wch</code>,
+ <code>color_content</code> and <code>pair_content</code> to
+ dummy parameters.</li>
+ </ul>
+ </li>
+ </ul>
+
+ <h3><a name="h3-database" id="h3-database">Terminal
+ database</a></h3>
+
+ <p>There are several new terminal descriptions:</p>
+
+ <blockquote>
+ <p><code>dumb-emacs-ansi</code>, <code>dvtm</code>,
+ <code>dvtm-256color</code>, <code>fbterm</code>,
+ <code>iterm2</code>, <code>linux-m1</code> <em>minitel
+ entries</em>, <code>putty-noapp</code>, <code>viewdata</code>,
+ and <code>vt100+4bsd</code> <em>building-block</em>.</p>
+
+ <p><code>xterm+noalt</code>, <code>xterm+titlestack</code>,
+ <code>xterm+alt1049</code>, <code>xterm+alt+title</code>
+ <em>building blocks</em> and <code>xterm+direct</code>,
+ <code>xterm+indirect</code>, <code>xterm-direct</code>. from
<a href=
- "https://sites.google.com/a/bostic.com/keithbostic/nvi">https://sites.google.com/a/bostic.com/keithbostic/nvi</a><br>
- </dd>
+ "https://invisible-island.net/xterm/xterm.log.html#xterm_331">xterm
+ patch #331</a>.</p>
- <dt>pinfo</dt>
+ <p>several other &ldquo;<code>-direct</code>&rdquo;
+ descriptions to address the differences of other terminal
+ emulators versus <code>xterm-direct</code>.</p>
+ </blockquote>
- <dd>Lynx-like info browser. <a href=
- "https://alioth.debian.org/projects/pinfo/">https://alioth.debian.org/projects/pinfo/</a></dd>
+ <p>There are many changes to existing terminal descriptions. Some
+ were updates to several descriptions:</p>
- <dt>tin</dt>
+ <ul>
+ <li>use <code>xterm+sm+1006</code> in several terminal
+ descriptions which were validated as supporting the extended
+ mouse feature for their respective terminal emulators.</li>
- <dd>newsreader, supporting color, MIME <a href=
- "http://www.tin.org/">http://www.tin.org/</a></dd>
- </dl>
+ <li>corrected <em>sgr</em>/<em>sgr0</em> strings in a few cases
+ reported by <span class="part-name">tic</span>, making those
+ correspond to the non-<em>sgr</em> settings where they differ,
+ but otherwise use ECMA-48 consistently.</li>
+
+ <li>add 0.1sec mandatory delay to <em>flash</em> capabilities
+ using the VT100 reverse-video control</li>
+ </ul>
- <p>as well as some that use ncurses for the terminfo support
- alone:</p>
+ <p>while others affected specific descriptions. These were
+ retested, to take into account new/undocumented changes by their
+ developers:</p>
+
+ <blockquote>
+ <p><code>iterm</code>, <code>minitel</code>, <code>st</code>,
+ <code>viewdata</code>, <code>nsterm</code></p>
+ </blockquote>
+
+ <p>while these are specific fixes based on user reports, or
+ warnings from <span class="part-name">tic</span>:</p>
<dl>
- <dt>minicom</dt>
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#toc-_A_N_S_I__S_Y_S__I_S_O_6429__E_C_M_A-48__Capabilities">
+ <code>ansi</code> <em>building blocks</em></a></dt>
+
+ <dd>
+ <ul>
+ <li>restored <em>rmir</em>/<em>smir</em> in
+ <code>ansi+idc</code> to better match original
+ <code>ansiterm+idc</code>, add alias
+ <code>ansiterm</code></li>
+ </ul>
+ </dd>
- <dd>terminal emulator<br>
- <a href=
- "http://alioth.debian.org/projects/minicom/">http://alioth.debian.org/projects/minicom/</a></dd>
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#tic-icl6404">
+ <code>icl6402</code></a></dt>
- <dt>vile</dt>
+ <dd>
+ <ul>
+ <li>corrected missing comma-separator between string
+ capabilities in <code>icl6402</code> and
+ <code>m2-nam</code></li>
+ </ul>
+ </dd>
- <dd>vi-like-emacs<br>
- <a href=
- "http://invisible-island.net/vile/">http://invisible-island.net/vile/</a></dd>
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#tic-interix">
+ <code>interix</code></a></dt>
+
+ <dd>
+ <ul>
+ <li>updated using <span class="main-name">tack</span> and
+ SFU with Windows 7 Ultimate.</li>
+
+ <li>used <code>^?</code> for <em>kdch1</em></li>
+ </ul>
+ </dd>
+
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#toc-_Linux_consoles">
+ <code>linux</code></a></dt>
+
+ <dd>
+ <ul>
+ <li>made <code>linux3.0</code> entry the default
+ <strong><code>linux</code></strong> entry</li>
+
+ <li>modify <code>linux2.6</code> entry to improve
+ line-drawing so that the <code>linux3.0</code> entry can be
+ used in non-UTF-8 mode</li>
+
+ <li>omitted selection of ISO-8859-1 for G0 in enacs
+ capability from linux2.6 entry, to avoid conflict with the
+ user-defined mapping. The reset feature uses ISO-8859-1 in
+ any case.</li>
+
+ <li>modify <em>flash</em> capability for <code>linux</code>
+ and <code>wyse</code> entries to put the delay between the
+ reverse/normal escapes rather than after</li>
+
+ <li>modify <code>linux-16color</code> to not mask dim,
+ standout or reverse with the <em>ncv</em> capability</li>
+ </ul>
+ </dd>
+
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#toc-_Open_B_S_D_consoles">
+ <code>pccon</code> <em>entries</em></a></dt>
+
+ <dd>
+ <ul>
+ <li>fixed some inconsistencies in the
+ <code><em>pccon*</em></code> entries</li>
+
+ <li>add bold to <code>pccon+sgr+acs</code> and
+ <code>pccon-base</code></li>
+
+ <li>add keys f12-f124 to <code>pccon+keys</code></li>
+ </ul>
+ </dd>
+
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#toc-_Tmux">
+ <code>tmux</code></a></dt>
+
+ <dd>
+ <ul>
+ <li>corrected <em>sgr</em> string, which used
+ <code>screen</code>'s "standout" code rather than the
+ standard code.</li>
+
+ <li>add settings corresponding to <code>xterm-keys</code>
+ option to reflect upcoming change to make that option
+ <em>"on"</em> by default</li>
+
+ <li>uncanceled <em>Ms</em></li>
+ </ul>
+ </dd>
+
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#toc-_D_E_C__V_T100_and_compatibles">
+ <code>vt100</code></a></dt>
+
+ <dd>
+ <ul>
+ <li>modify <code>vt100</code> <em>rs2</em> string to reset
+ vt52 mode and scrolling regions</li>
+
+ <li>corrected <em>rs2</em> string for
+ <code>vt100-nam</code></li>
+
+ <li>made minor fixes for <code>vt100+4bsd</code>, e.g.,
+ delay in <em>sgr</em> for consistency</li>
+ </ul>
+ </dd>
+
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#toc-_G_N_O_M_E__V_T_E_">
+ <code>vte</code></a></dt>
+
+ <dd>
+ <ul>
+ <li>moved SGR 24 and 27 from <code>vte-2014</code> to
+ <code>vte-2012</code></li>
+
+ <li>add a few capabilities fixed in recent <em>VTE</em>
+ development</li>
+ </ul>
+ </dd>
+
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#toc-_X_T_E_R_M">
+ <code>xterm</code></a></dt>
+
+ <dd>
+ <ul>
+ <li>add <em>rep</em> to <code>xterm-new</code>, available
+ since <a href=
+ "https://invisible-island.net/xterm/xterm.log.html#xterm_32">
+ late 1996</a>.</li>
+
+ <li>modify <code>xterm+256color</code> and
+ <code>xterm+256setaf</code> to use correct number of color
+ pairs.</li>
+
+ <li>modify <em>rs1</em> for <code>xterm-16color</code>,
+ <code>xterm-88color</code> and <code>xterm-256color</code>
+ to reset palette using <em>oc</em> string as in
+ <code>linux</code> entry.</li>
+
+ <li>add <em>rs1</em> capability to
+ <code>xterm-256color</code></li>
+
+ <li>add <em>oc</em> capability to
+ <code>xterm+256color</code>, allowing palette reset for
+ <span class="main-name">xterm</span></li>
+
+ <li>add <em>op</em> to <code>xterm+256setaf</code></li>
+
+ <li>modify <code>xterm-r5</code>, <code>xterm-r6</code> and
+ <code>xterm-xf86-v32</code> to use <code>xterm+kbs</code>
+ to match <a href=
+ "https://invisible-island.net/xterm/xterm.log.html#xterm_272">
+ xterm #272</a>, reflecting packager's changes</li>
+
+ <li>used ANSI reply for <em>u8</em> in
+ <code>xterm-new</code>, to reflect vt220-style responses
+ that could be returned.</li>
+
+ <li>made <code>xterm-pcolor</code> <em>sgr</em> consistent
+ with other capabilities</li>
+ </ul>
+ </dd>
</dl>
- <p>The ncurses distribution includes a selection of test programs
- (including a few games).</p>
+ <p>A few entries use extensions (user-defined terminal
+ capabilities):</p>
+
+ <ul>
+ <li>add <em>rmxx</em>/<em>smxx</em> ECMA-48 strikeout extension
+ to <code>tmux</code> and <code>xterm-basic</code></li>
+
+ <li>used <em>RGB</em> capability in new <em>*-direct</em>
+ entries to denote direct-color feature.</li>
+ </ul>
+
+ <h3><a name="h3-documentation" id=
+ "h3-documentation">Documentation</a></h3>
+
+ <p>As usual, this release</p>
+
+ <ul>
+ <li>
+ <p>improves documentation by describing new features,</p>
+ </li>
+
+ <li>
+ <p>attempts to improve the description of features which
+ users have found confusing</p>
+ </li>
+
+ <li>
+ <p>fills in overlooked descriptions of features which were
+ described in the <a href=
+ "https://invisible-island.net/ncurses/NEWS.html">NEWS</a>
+ file but treated sketchily in manual pages.</p>
+ </li>
+ </ul>
+
+ <p>In particular,</p>
+
+ <ul>
+ <li>
+ <p>Since the underlying features for <a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY">
+ <span class="part-name">tset</span></a>, <a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY">
+ <span class="part-name">tput</span></a>, and <a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY">
+ <span class="part-name">clear</span></a> have been better
+ integrated, the documentation now includes information on how
+ those tools evolved.</p>
+
+ <p>In addition to explaining the improved integration of the
+ tools, the manual pages made it easier to see how the tools
+ are similar and how they are different.</p>
+ </li>
+
+ <li>
+ <p>The <code>addch</code> manual page has additional
+ information on <a href=
+ "https://invisible-island.net/ncurses/man/curs_addch.3x.html#h2-PORTABILITY">
+ portability</a> and differences from other
+ implementations.</p>
+ </li>
+
+ <li>
+ <p>The discussion of color-pairs in the <em>attributes</em>
+ manual page is improved in its <a href=
+ "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY">
+ history section</a>.</p>
+ </li>
+
+ <li>
+ <p>The documentation of the <code>chtype</code>,
+ <code>cchar_t</code> types and the attribute values which can
+ be stored in those types, in particular the <a href=
+ "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY">
+ history</a> and <a href=
+ "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY">
+ portability</a> sections of the <em>attributes</em> manual
+ page, has been improved.</p>
+ </li>
+
+ <li>
+ <p>improve discussion of <a href=
+ "https://invisible-island.net/ncurses/man/curs_mouse.3x.html#h2-PORTABILITY">
+ portability</a> in the <em>mouse</em> manual.</p>
+ </li>
+
+ <li>
+ <p>The <em>pad</em> manual page has a section on the <a href=
+ "https://invisible-island.net/ncurses/man/curs_pad.3x.html#h2-PORTABILITY">
+ origin and portability</a> of pads.</p>
+ </li>
+
+ <li>
+ <p>Differences between SVr4 and X/Open Curses soft-keys are
+ discussed in a new section on <a href=
+ "https://invisible-island.net/ncurses/man/curs_slk.3x.html#h2-PORTABILITY">
+ portability</a>.</p>
+ </li>
+
+ <li>
+ <p>There are updated/improved notes on portability in the
+ <a href=
+ "https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-PORTABILITY">
+ resizeterm</a> and <a href=
+ "https://invisible-island.net/ncurses/man/wresize.3x.html#h2-PORTABILITY">
+ wresize</a> manual pages.</p>
+ </li>
+ </ul>
+
+ <p>In addition to providing background information to explain
+ these features and show how they evolved, there are corrections,
+ clarifications, etc.:</p>
+
+ <ul>
+ <li>
+ <p>add note in the <a href=
+ "https://invisible-island.net/ncurses/man/curs_addch.3x.html#h3-ACS-Symbols">
+ <em>addch</em></a> manual about line-drawing when it depends
+ upon UTF-8.</p>
+ </li>
+
+ <li>
+ <p>improve discussion of line-drawing characters in the
+ <a href=
+ "https://invisible-island.net/ncurses/man/curs_add_wch.3x.html">
+ <em>add_wch</em></a> manual.</p>
+ </li>
+
+ <li>
+ <p>explain in <a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html#h2-DESCRIPTION">
+ <span class="part-name">clear</span></a>'s manual page that
+ it writes to the standard output.</p>
+ </li>
+
+ <li>
+ <p>improve description of <a href=
+ "https://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-endwin">
+ <em>endwin</em></a>.</p>
+ </li>
+
+ <li>
+ <p>improve discussion of field validation in the <a href=
+ "https://invisible-island.net/ncurses/man/form_driver.3x.html">
+ <em>form driver</em></a> manual page.</p>
+ </li>
+
+ <li>
+ <p>clarify the use of <code>wint_t</code> vs
+ <code>wchar_t</code> in <a href=
+ "https://invisible-island.net/ncurses/man/curs_get_wstr.3x.html#h2-RETURN-VALUE">
+ <em>get_wstr</em></a> manual page.</p>
+ </li>
+
+ <li>
+ <p>clarify in the <a href=
+ "https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Predefined-key-codes">
+ <em>getch</em></a> manual that the keypad mode affects an
+ application's ability to read <code>KEY_MOUSE</code> codes,
+ but does not affect <code>KEY_RESIZE</code>.</p>
+
+ <p>trim some obsolete/incorrect wording about
+ <code>EINTR</code> from the <em>getch</em> manual page</p>
+
+ <p>improve manual pages for <a href=
+ "https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Keypad-Mode">
+ <em>getch</em></a> and <a href=
+ "https://invisible-island.net/ncurses/man/curs_get_wch.3x.html#h2-DESCRIPTION">
+ <em>get_wch</em></a> to point out that they might return
+ user-defined values which have no predefined names in
+ <code>&lt;curses.h&gt;</code></p>
+ </li>
+
+ <li>
+ <p>improve description of the <code>-R</code> option in the
+ <a href=
+ "https://invisible-island.net/ncurses/man/infocmp.1m.html"><span class="part-name">
+ infocmp</span></a> manual page</p>
+ </li>
+
+ <li>
+ <p>clarify in the <a href=
+ "https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-NOTES">
+ <em>resizeterm</em></a> manual page how
+ <code>KEY_RESIZE</code> is pushed onto the input stream.</p>
+ </li>
+
+ <li>
+ <p>document return value of <a href=
+ "https://invisible-island.net/ncurses/man/curs_extend.3x#h2-RETURN-VALUE">
+ <code>use_extended_names</code></a></p>
+ </li>
+
+ <li>
+ <p>document differences in <a href=
+ "https://invisible-island.net/ncurses/man/curs_variables.3x.html#h2-PORTABILITY">
+ <code>ESCDELAY</code></a> versus AIX's implementation in the
+ <em>variables</em> manual page.</p>
+ </li>
+
+ <li>
+ <p>The <code>_nc_free_tinfo</code> function is now documented
+ in the <a href=
+ "https://invisible-island.net/ncurses/man/curs_memleaks.3x.html">
+ <em>memory-leaks</em></a> manual page, because it could be
+ used in <span class="main-name">tack</span> for memory-leak
+ checking.</p>
+ </li>
+
+ <li>
+ <p>add a note to the <a href=
+ "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name">
+ tic</span></a> manual page about -W versus -f options.</p>
+ </li>
+
+ <li>
+ <p>improve <em>terminfo manual</em> description of <a href=
+ "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Terminfo-Capabilities-Syntax">
+ terminfo syntax</a>.</p>
+
+ <p>improve terminfo manual page discussion of <a href=
+ "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Line-Graphics">
+ control- and graphics- characters</a>.</p>
+
+ <p>improve <a href=
+ "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Color-Handling">
+ color-handling</a> section in terminfo manual page</p>
+ </li>
+
+ <li>
+ <p>clarify description in <a href=
+ "https://invisible-island.net/ncurses/man/tput.1.html#h2-PORTABILITY">
+ <span class="part-name">tput</span></a> manual page regarding
+ support for termcap names</p>
+
+ <p>update <a href=
+ "https://invisible-island.net/ncurses/man/tput.1.html#h3-Aliases">
+ <span class="part-name">tput</span></a> manual page to
+ reflect changes to manipulate terminal modes by sharing
+ functions with <span class="part-name">tset</span>.</p>
+ </li>
+
+ <li>
+ <p>clarify in manual pages that the optional verbose option
+ level of <a href=
+ "https://invisible-island.net/ncurses/man/tic.1m.html#h2-OPTIONS">
+ <span class="part-name">tic</span></a> and <a href=
+ "https://invisible-island.net/ncurses/man/infocmp.1m.html#h3-Other-Options">
+ <span class="part-name">infocmp</span></a> is available only
+ when <span class="main-name">ncurses</span> is configured for
+ tracing.</p>
+ </li>
+
+ <li>
+ <p>improve manual page description of <a href=
+ "https://invisible-island.net/ncurses/man/tset.1.html"><em>tset/reset</em></a>
+ versus window-size.</p>
+ </li>
+
+ <li>
+ <p>improve description of <a href=
+ "https://invisible-island.net/ncurses/man/curs_termcap.3x.html#h3-FORMATTING-CAPABILITIES">
+ <em>tgoto</em></a> parameters</p>
+ </li>
+ </ul>
+
+ <p>There are new manual pages:</p>
+
+ <ul>
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/user_caps.5.html"><em>
+ user_caps</em></a> documents the terminfo extensions used by
+ <span class="main-name">ncurses</span>.</li>
+
+ <li>
+ <p><a href=
+ "https://invisible-island.net/ncurses/man/scr_dump.5.html"><em>
+ scr_dump</em></a> documents the screen-dump format.</p>
+ </li>
+ </ul>
+
+ <p>Some of the improvements are more subtle, relating to the way
+ the information is presented:</p>
+
+ <ul>
+ <li>
+ <p>Made minor fixes to manpage <em>NAME/SYNOPSIS</em>
+ sections to consistently use rule that either all functions
+ which are prototyped in <em>SYNOPSIS</em> are listed in the
+ <em>NAME</em> section, or the manual-page name is the sole
+ item listed in the <em>NAME</em> section. The latter is used
+ to reduce clutter, e.g., for the top-level library manual
+ pages as well as for certain feature-pages such as <a href=
+ "https://invisible-island.net/ncurses/man/curs_sp_funcs.3x.html">
+ <em>SP-funcs</em></a> and <a href=
+ "https://invisible-island.net/ncurses/man/curs_threads.3x.html">
+ <em>threading</em></a>.</p>
+ </li>
+
+ <li>
+ <p>improve manual pages for utilities with respect to POSIX
+ versus X/Open Curses.</p>
+ </li>
+
+ <li>
+ <p>improve organization of the <a href=
+ "https://invisible-island.net/ncurses/man/curs_attr.3x.html"><em>
+ attributes</em></a> and <a href=
+ "/ncurses/man/curs_color.3x.html"><em>color</em></a> manual
+ pages.</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
+ bug-fixes</a></h3>
+
+ <ul>
+ <li>
+ <p>modify <span class="part-name">toe</span> to not exit if
+ unable to read a terminal description, e.g., if there is a
+ permission problem.</p>
+ </li>
+
+ <li>
+ <p>correct 20100515 change for weak signals versus
+ sigprocmask</p>
+ </li>
+
+ <li>work around Ada tool-breakage in Debian 9 and later by
+ invoking <code>gprconfig</code> to specify the C compiler to be
+ used by <code>gnatmake</code>, and conditionally suppressing
+ <code>Library_Options</code> line for static libraries.</li>
+
+ <li>
+ <p>There were, as well, several bug-fixes to handle illegal
+ input for <span class="part-name">tic</span>. Because those
+ did not correspond to useful terminal descriptions, most
+ users are unaffected.</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-config-config" id=
+ "h3-config-config">Configuration changes</a></h3>
+
+ <h4><a name="h4-config-major" id="h4-config-major">Major
+ changes</a></h4>
+
+ <p>This release provides a new binary format for terminal
+ descriptions that use extended numeric capabilities. Applications
+ built with the wide-character <em>ncursesw</em> library can use
+ these extended numbers.</p>
+
+ <ul>
+ <li>
+ <p>This includes utilities such as <span class=
+ "part-name">tic</span> and <span class=
+ "part-name">infocmp</span>, because (as noted in <a href=
+ "#h4-new-library"><em>New features</em></a>), the feature
+ relies upon an extension to the low-level <em>tinfo</em>
+ library.</p>
+ </li>
+
+ <li>
+ <p>A few software packagers use a configuration option of
+ <span class="main-name">ncurses</span> which allows the
+ low-level <em>tinfo</em> library to be shared between the
+ high-level <em>ncurses</em> and <em>ncursesw</em> libraries.
+ This new feature was designed to work in that configuration
+ as well.</p>
+ </li>
+ </ul>
+
+ <p>Other applications (i.e., using the 8-bit <em>ncurses</em>
+ library) which read the extended terminal descriptions see those
+ numeric capabilities set to the maximum value for a signed 16-bit
+ number.</p>
+
+ <p>Older versions of <span class="main-name">ncurses</span>'
+ <span class="part-name">tic</span> accept out-of-range numeric
+ capabilities, storing those as the maximum value for a signed
+ 16-bit number. Other implementations of curses (mentioned in the
+ discussion of <a href=
+ "https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap">
+ <span class="part-name">picsmap</span></a>) give zero for these
+ out-of-range capabilities.</p>
+
+ <h4><a name="h4-config-options" id=
+ "h4-config-options">Configuration options</a></h4>
+
+ <p>These changes provide support for <span class=
+ "main-name">tack</span> 1.08, released in <a href=
+ "https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726">
+ July 2017</a>:</p>
+
+ <ul>
+ <li>
+ <p>add <code>--without-tack</code> configure option to refine
+ <code>--with-progs</code> configure option. Normally
+ <span class="main-name">tack</span> is built outside the
+ <span class="main-name">ncurses</span> tree, but a few
+ packagers combine it during the build. If
+ <code>term_entry.h</code> is installed, there is no advantage
+ to in-tree builds.</p>
+ </li>
+
+ <li>
+ <p>adjust configure-script to define
+ <code>HAVE_CURSES_DATA_BOOLNAMES</code> symbol needed for
+ <span class="main-name">tack</span> 1.08 when built in-tree.
+ Rather than relying upon internal "_nc_" functions,
+ <span class="main-name">tack</span> now uses the boolean,
+ number and string capability name-arrays provided by
+ <span class="main-name">ncurses</span> and SVr4 Unix curses.
+ It still uses <code>term_entry.h</code> for the definitions
+ of the extended capability arrays.</p>
+ </li>
+
+ <li>
+ <p>add dependency upon ncurses_cfg.h to <span class=
+ "part-name">tic</span>'s header-files; any program using
+ <span class="part-name">tic</span>-library will have to
+ supply this file. Legacy <span class="main-name">tack</span>
+ versions supply this file; ongoing <span class=
+ "main-name">tack</span> development has dropped the
+ dependency upon <span class="part-name">tic</span>-library
+ and new releases will not be affected.</p>
+ </li>
+ </ul>
+
+ <p>Other changes to the configure-script and generated files
+ include</p>
+
+ <ul>
+ <li>
+ <p>add configure options to disable checks for form, menu and
+ panel libraries so that ncurses-examples can be built with
+ non-SVr4 curses implementations.</p>
+ </li>
+
+ <li>
+ <p>add configure option <code>--enable-opaque-curses</code>
+ for <em>ncurses</em> library and similar options for the
+ other libraries.</p>
+ </li>
+
+ <li>
+ <p>add configure option <code>--disable-wattr-macros</code>
+ for use in cases where one wants to use the same headers for
+ ncurses5/ncurses6 development, by suppressing the
+ <em>wattr*</em> macros which differ due to the introduction
+ of extended colors</p>
+ </li>
+
+ <li>
+ <p>modify configure macro for shared-library rules to use
+ <code>-Wl,-rpath</code> rather than <code>-rpath</code> to
+ work around a bug in <span class="part-name">scons</span></p>
+ </li>
+
+ <li>
+ <p>improve ncurses-examples' configure script to define as
+ needed <code>NCURSES_WIDECHAR</code> for platforms where
+ <code>_XOPEN_SOURCE_EXTENDED</code> does not work. Also
+ modified the test program to ensure that if building with
+ <span class="main-name">ncurses</span>, that the
+ <code>cchar_t</code> type is checked, since that is normally
+ (since <a href=
+ "https://invisible-island.net/ncurses/NEWS.html#t20111030">20111030</a>)
+ ifdef'd depending on this test.</p>
+ </li>
+
+ <li>
+ <p>modify configure script to handle the case where
+ <span class="part-name">tic</span>-library is renamed, but
+ the <code>--with-debug</code> option is used by itself
+ without normal or shared libraries</p>
+ </li>
+
+ <li>
+ <p>modify editing script which generates resulting.map to
+ work with the clang configuration on recent FreeBSD, which
+ gives an error on an empty "local" section.</p>
+ </li>
+
+ <li>
+ <p>improve configure check for setting the
+ <code>WILDCARD_SYMS</code> variable; on ppc64 the variable is
+ in the <strong><em>Data</em></strong> section rather than
+ <strong><em>Text</em></strong>.</p>
+ </li>
+
+ <li>
+ <p>correct result of configure option
+ <code>--without-fallbacks</code>, which caused FALLBACK_LIST
+ to be set to "no"</p>
+ </li>
+
+ <li>
+ <p>modify <code>--with-pkg-config-libdir</code> option to
+ make it possible to install &ldquo;.pc&rdquo; files even if
+ <span class="part-name">pkg-config</span> is not found. Limit
+ this change, to suppress the actual install if it is not
+ overridden to a valid directory at install time.</p>
+ </li>
+
+ <li>
+ <p>disallow &ldquo;no&rdquo; as a possible value for
+ <code>--with-shlib-version</code> option, overlooked in
+ cleanup-changes for <a href=
+ "https://invisible-island.net/ncurses/NEWS.html#t20000708">20000708</a>.</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-portability" id=
+ "h3-portability">Portability</a></h3>
+
+ <p>Many of the portability changes are implemented via the
+ configure script:</p>
+
+ <ul>
+ <li>
+ <p>improve configure script's <code>CF_CC_ENV_FLAGS</code>
+ macro to allow for compiler wrappers such as <span class=
+ "part-name">ccache</span>. This change moves only the
+ preprocessor, optimization and warning flags to
+ <code>CPPFLAGS</code> and <code>CFLAGS</code>, leaving the
+ residue in <code>CC</code>. That happens to work for
+ <span class="part-name">gcc</span>'s various
+ &ldquo;model&rdquo; options, but may require tuning for other
+ compilers.</p>
+ </li>
+
+ <li>
+ <p>modify ncurses-examples' configure script to use
+ <span class="part-name">pkg-config</span> for the extra
+ form/menu/panel libraries, to be more consistent with the
+ handling of the curses/ncurses library.</p>
+ </li>
+
+ <li>
+ <p>add configuration checks to build with <a href=
+ "https://invisible-island.net/ncurses/ncurses-netbsd.html">NetBSD
+ curses</a>, which for example lacks <a href=
+ "https://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env">
+ <code>use_env</code></a>.</p>
+ </li>
+
+ <li>
+ <p>change ncurses-examples to use <code>attr_t</code> vs
+ <code>chtype</code> to follow X/Open documentation more
+ closely since Solaris xpg4-curses uses different values for
+ <code>WA_<em>xxx</em></code> vs <code>A_<em>xxx</em></code>
+ that rely on attr_t being an unsigned short. Tru64 aka OSF1,
+ HPUX, AIX did as <span class="main-name">ncurses</span> does,
+ equating the two sets.</p>
+ </li>
+
+ <li>
+ <p>modify several test programs to reflect that <span class=
+ "main-name">ncurses</span> honors existing signal handlers in
+ initscr, while other implementations do not.</p>
+ </li>
+
+ <li>
+ <p>add configure check for <code>openpty</code> to
+ ncurses-examples' configure script, for <span class=
+ "part-name">ditto</span>.</p>
+ </li>
+
+ <li>
+ <p>improve check for working <code>poll</code> function by
+ using <code>posix_openpt</code> as a fallback in case there
+ is no valid terminal on the standard input</p>
+ </li>
+
+ <li>
+ <p>modify ncurses-examples' configure script to check for
+ <span class="part-name">pthread</span> dependency of
+ <em>ncursest</em> or <em>ncursestw</em> library when building
+ the <span class="main-name">ncurses</span> examples, e.g., in
+ case weak symbols are used.</p>
+ </li>
+
+ <li>
+ <p>add checks in ncurses-examples' configure script for some
+ functions neither in 4.3BSD curses, nor based on X/Open
+ Curses:</p>
+
+ <ul>
+ <li>
+ <p>modify a loop limit in firework.c to work around
+ absense of limit checks in some libraries.</p>
+ </li>
+
+ <li>
+ <p>fill the last row of a window with
+ &ldquo;<code>?</code>&rdquo; in firstlast if waddch does
+ not return <code>ERR</code> on the lower-right
+ corner.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>build-fixes for the Portland Group (PGI) compilers</p>
+
+ <ul>
+ <li>
+ <p>accept whitespace in <span class=
+ "part-name">sed</span> expression for generating
+ expanded.c</p>
+ </li>
+
+ <li>
+ <p>modify configure check that g++ compiler warnings are
+ not used.</p>
+ </li>
+
+ <li>
+ <p>add configure check for -fPIC option needed for shared
+ libraries.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>modify configure script for clang as used on FreeBSD, to
+ work around clang's differences in exit codes vs gcc.</p>
+ </li>
+
+ <li>
+ <p>fixes for configure/build using clang on OSX</p>
+
+ <ul>
+ <li>
+ <p>do not redefine &ldquo;inline&rdquo; in
+ <code>ncurses_cfg.h</code>; this was originally to solve
+ a problem with gcc/g++, but is aggravated by clang's
+ misuse of symbols to pretend it is gcc.</p>
+ </li>
+
+ <li>
+ <p>add braces to configure script to prevent unwanted
+ addition of &ldquo;<code>-lstdc++</code>&rdquo; option to
+ the <code>CXXLIBS</code> symbol.</p>
+ </li>
+
+ <li>
+ <p>improve/update test-program used for checking
+ existence of stdc++ library.</p>
+ </li>
+
+ <li>
+ <p>if <code>$CXXLIBS</code> is set, the linkage test uses
+ that in addition to <code>$LIBS</code>.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>fixes for OS/2:</p>
+
+ <ul>
+ <li>
+ <p>use button instead of <code>kbuf[0]</code> in
+ EMX-specific part of <code>lib_mouse.c</code></p>
+ </li>
+
+ <li>
+ <p>support building with <span class=
+ "part-name">libtool</span> on OS/2</p>
+ </li>
+
+ <li>
+ <p>use stdc++ library with OS/2 kLIBC</p>
+ </li>
+
+ <li>
+ <p>clear configure script's <code>cf_XOPEN_SOURCE</code>
+ for OS/2, to work with its header files</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>add &ldquo;newer&rdquo; baudrate symbols to the <a href=
+ "https://invisible-island.net/ncurses/man/curs_termattrs.3x.html#h3-baudrate">
+ <code>baudrate</code></a> function in the ncurses library as
+ well as to a corresponding table in <span class=
+ "part-name">tset</span>.</p>
+ </li>
+
+ <li>
+ <p>modify ncurses-examples <span class=
+ "part-name">savescreen</span> to work with AIX and HPUX.</p>
+ </li>
+
+ <li>
+ <p>define <code>WIN32_LEAN_AND_MEAN</code> for MinGW port,
+ making builds faster.</p>
+ </li>
+
+ <li>
+ <p>add a configure check for <em>wcwidth</em> versus the
+ <span class="main-name">ncurses</span> line-drawing
+ characters, to use in special-casing systems such as Solaris.
+ Solaris, however, requires a special case that maps Unicode
+ line-drawing characters into the acsc string for non-Unicode
+ locales. Solaris also has a misconfigured wcwidth which marks
+ all of the line drawing characters as double-width.</p>
+ </li>
+
+ <li>
+ <p>string-hacks (non-standard):</p>
+
+ <ul>
+ <li>
+ <p>fix configure script to record when
+ <code>strlcat</code> is found on OpenBSD.</p>
+ </li>
+
+ <li>
+ <p>add <code>--enable-string-hacks</code> option to
+ ncurses-examples' configure script.</p>
+ </li>
+
+ <li>
+ <p>completed string-hacks for <em>sprintf</em>, etc.,
+ including the ncurses-examples programs.</p>
+ </li>
+
+ <li>
+ <p>make <code>--enable-string-hacks</code> option work
+ with Debian by checking for the "bsd" library and its
+ associated "&lt;bsd/string.h&gt;" header.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>workaround for Debian's antique/unmaintained version of
+ mawk:</p>
+
+ <ul>
+ <li>
+ <p>see Debian #65617, which was fixed in <span class=
+ "main-name">mawk</span>'s upstream releases in <a href=
+ "https://invisible-island.net/mawk/CHANGES.html#t20090727">
+ 2009</a>.</p>
+ </li>
+
+ <li>
+ <p>related fixes when building link_test.</p>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <hr>
+
+ <h2><a name="h2-features" id="h2-features">Features of
+ <span class="main-name">ncurses</span></a></h2>
+
+ <p>The <span class="main-name">ncurses</span> package is fully
+ upward-compatible with SVr4 (System V Release 4) curses:</p>
+
+ <ul>
+ <li>
+ <p>All of the SVr4 calls have been implemented (and are
+ documented).</p>
+ </li>
+
+ <li>
+ <p><span class="main-name">ncurses</span> supports all of the
+ for SVr4 curses features including keyboard mapping, color,
+ forms-drawing with ACS characters, and automatic recognition
+ of keypad and function keys.</p>
+ </li>
+
+ <li>
+ <p><span class="main-name">ncurses</span> provides these SVr4
+ add-on libraries (not part of X/Open Curses):</p>
+
+ <ul>
+ <li>
+ <p>the panels library, supporting a stack of windows with
+ backing store.</p>
+ </li>
+
+ <li>
+ <p>the menus library, supporting a uniform but flexible
+ interface for menu programming.</p>
+ </li>
+
+ <li>
+ <p>the form library, supporting data collection through
+ on-screen forms.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p><span class="main-name">ncurses</span>'s terminal database
+ is fully compatible with that used by SVr4 curses.</p>
+
+ <ul>
+ <li>
+ <p><span class="main-name">ncurses</span> supports
+ user-defined capabilities which it can see, but which are
+ hidden from SVr4 curses applications using the
+ <em>same</em> terminal database.</p>
+ </li>
+
+ <li>
+ <p>It can be optionally configured to match the format
+ used in related systems such as AIX and Tru64.</p>
+ </li>
+
+ <li>
+ <p>Alternatively, <span class="main-name">ncurses</span>
+ can be configured to use hashed databases rather than the
+ directory of files used by SVr4 curses.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>The <span class="main-name">ncurses</span> utilities have
+ options to allow you to filter terminfo entries for use with
+ less capable <em>curses</em>/<em>terminfo</em> versions such
+ as the HP/UX and AIX ports.</p>
+ </li>
+ </ul>
+
+ <p>The <span class="main-name">ncurses</span> package also has
+ many useful extensions over SVr4:</p>
+
+ <ul>
+ <li>
+ <p>The API is 8-bit clean and base-level conformant with the
+ X/OPEN curses specification, XSI curses (that is, it
+ implements all BASE level features, and most EXTENDED
+ features). It includes many function calls not supported
+ under SVr4 curses (but portability of all calls is documented
+ so you can use the SVr4 subset only).</p>
+ </li>
+
+ <li>
+ <p>Unlike SVr3 curses, <span class="main-name">ncurses</span>
+ can write to the rightmost-bottommost corner of the screen if
+ your terminal has an insert-character capability.</p>
+ </li>
+
+ <li>
+ <p>Ada95 and C++ bindings.</p>
+ </li>
+
+ <li>
+ <p>Support for mouse event reporting with X Window xterm and
+ FreeBSD and OS/2 console windows.</p>
+ </li>
+
+ <li>
+ <p>Extended mouse support via Alessandro Rubini's gpm
+ package.</p>
+ </li>
+
+ <li>
+ <p>The function <code>wresize</code> allows you to resize
+ windows, preserving their data.</p>
+ </li>
+
+ <li>
+ <p>The function <code>use_default_colors</code> allows you to
+ use the terminal's default colors for the default color pair,
+ achieving the effect of transparent colors.</p>
+ </li>
+
+ <li>
+ <p>The functions <code>keyok</code> and
+ <code>define_key</code> allow you to better control the use
+ of function keys, e.g., disabling the <span class=
+ "main-name">ncurses</span> KEY_MOUSE, or by defining more
+ than one control sequence to map to a given key code.</p>
+ </li>
+
+ <li>
+ <p>Support for 256-color terminals, such as modern xterm.</p>
+ </li>
+
+ <li>
+ <p>Support for 16-color terminals, such as <em>aixterm</em>
+ and <em>modern xterm</em>.</p>
+ </li>
+
+ <li>
+ <p>Better cursor-movement optimization. The package now
+ features a cursor-local-movement computation more efficient
+ than either BSD's or System V's.</p>
+ </li>
+
+ <li>
+ <p>Super hardware scrolling support. The screen-update code
+ incorporates a novel, simple, and cheap algorithm that
+ enables it to make optimal use of hardware scrolling,
+ line-insertion, and line-deletion for screen-line movements.
+ This algorithm is more powerful than the 4.4BSD curses
+ <code>quickch</code> routine.</p>
+ </li>
+
+ <li>
+ <p>Real support for terminals with the magic-cookie glitch.
+ The screen-update code will refrain from drawing a highlight
+ if the magic- cookie unattributed spaces required just before
+ the beginning and after the end would step on a non-space
+ character. It will automatically shift highlight boundaries
+ when doing so would make it possible to draw the highlight
+ without changing the visual appearance of the screen.</p>
+ </li>
+
+ <li>
+ <p>It is possible to generate the library with a list of
+ pre-loaded fallback entries linked to it so that it can serve
+ those terminal types even when no terminfo tree or termcap
+ file is accessible (this may be useful for support of
+ screen-oriented programs that must run in single-user
+ mode).</p>
+ </li>
+
+ <li>
+ <p>The <a href=
+ "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name">
+ tic</span></a>/<a href=
+ "https://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a>
+ utility provided with <span class="main-name">ncurses</span>
+ has the ability to translate many termcaps from the XENIX,
+ IBM and AT&amp;T extension sets.</p>
+ </li>
+
+ <li>
+ <p>A BSD-like <a href=
+ "https://invisible-island.net/ncurses/man/tset.1.html"><span class="part-name">
+ tset</span></a> utility is provided.</p>
+ </li>
+
+ <li>
+ <p>The <span class="main-name">ncurses</span> library and
+ utilities will automatically read terminfo entries from
+ $HOME/.terminfo if it exists, and compile to that directory
+ if it exists and the user has no write access to the system
+ directory. This feature makes it easier for users to have
+ personal terminfo entries without giving up access to the
+ system terminfo directory.</p>
+ </li>
+
+ <li>
+ <p>You may specify a path of directories to search for
+ compiled descriptions with the environment variable
+ TERMINFO_DIRS (this generalizes the feature provided by
+ TERMINFO under stock System V.)</p>
+ </li>
+
+ <li>
+ <p>In terminfo source files, use capabilities may refer not
+ just to other entries in the same source file (as in System
+ V) but also to compiled entries in either the system terminfo
+ directory or the user's $HOME/.terminfo directory.</p>
+ </li>
+
+ <li>
+ <p>The table-of-entries utility <a href=
+ "https://invisible-island.net/ncurses/man/toe.1m.html"><span class="part-name">
+ toe</span></a> makes it easy for users to see exactly what
+ terminal types are available on the system.</p>
+ </li>
+
+ <li>
+ <p>The library meets the XSI requirement that every macro
+ entry point have a corresponding function which may be linked
+ (and will be prototype-checked) if the macro definition is
+ disabled with <code>#undef</code>.</p>
+ </li>
+
+ <li>
+ <p>Extensive documentation is provided (see the <em><a href=
+ "https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading">
+ Additional Reading</a></em> section of the <em><a href=
+ "https://invisible-island.net/ncurses/ncurses.faq.html"><span class="main-name">
+ ncurses</span> FAQ</a></em> for online documentation).</p>
+ </li>
+ </ul>
+
+ <h2><a name="h2-who-uses" id="h2-who-uses">Applications using
+ <span class="main-name">ncurses</span></a></h2>
+
+ <p>The <span class="main-name">ncurses</span> distribution
+ includes a selection of test programs (including a few games).
+ These are available separately as <a href=
+ "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a></p>
+
+ <p>The ncurses library has been tested with a wide variety of
+ applications including:</p>
+
+ <blockquote>
+ <dl>
+ <dt><span class="part-name">aptitude</span></dt>
+
+ <dd>
+ <p>FrontEnd to Apt, the debian package manager</p>
+
+ <p><a href=
+ "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p>
+ </dd>
+
+ <dt><span class="part-name">cdk</span></dt>
+
+ <dd>
+ <p>Curses Development Kit</p>
- <h2>Who's Who and What's What</h2>
+ <p><a href=
+ "https://invisible-island.net/cdk/">https://invisible-island.net/cdk/</a><br>
+ </p>
+ </dd>
- <p>Zeyd Ben-Halim started it from a previous package pcurses,
- written by Pavel Curtis. Eric S. Raymond continued development.
- J&uuml;rgen Pfeifer wrote most of the form and menu libraries.
- Ongoing work is being done by <a href=
- "mailto:dickey@invisible-island.net">Thomas Dickey</a>. Thomas
- Dickey acts as the maintainer for the Free Software Foundation,
- which holds the copyright on ncurses. Contact the current
- maintainers at <a href=
- "mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>.</p>
+ <dt><span class="part-name">ded</span></dt>
- <p>To join the ncurses mailing list, please write email to
- <code>bug-ncurses-request@gnu.org</code> containing the line:</p>
- <pre>
- subscribe &lt;name&gt;@&lt;host.domain&gt;
-</pre>
+ <dd>
+ <p>directory-editor</p>
+
+ <p><a href=
+ "https://invisible-island.net/ded/">https://invisible-island.net/ded/</a></p>
+ </dd>
+
+ <dt><span class="part-name">dialog</span></dt>
+
+ <dd>
+ <p>the underlying application used in Slackware's setup,
+ and the basis for similar install/configure applications on
+ many systems.</p>
+
+ <p><a href=
+ "https://invisible-island.net/dialog/">https://invisible-island.net/dialog/</a></p>
+ </dd>
+
+ <dt><span class="part-name">lynx</span></dt>
+
+ <dd>
+ <p>the text WWW browser</p>
+
+ <p><a href=
+ "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p>
+ </dd>
+
+ <dt><span class="part-name">mutt</span></dt>
+
+ <dd>
+ <p>mail utility</p>
+
+ <p><a href=
+ "http://www.mutt.org/">http://www.mutt.org/</a></p>
+ </dd>
+
+ <dt><span class="part-name">ncftp</span></dt>
+
+ <dd>
+ <p>file-transfer utility</p>
+
+ <p><a href=
+ "https://www.ncftp.com/">https://www.ncftp.com/</a></p>
+ </dd>
+
+ <dt><span class="part-name">nvi</span></dt>
+
+ <dd>
+ <p>New vi uses ncurses.</p>
+
+ <p><a href=
+ "https://sites.google.com/a/bostic.com/keithbostic/vi">https://sites.google.com/a/bostic.com/keithbostic/vi</a><br>
+ </p>
+ </dd>
+
+ <dt><span class="part-name">ranger</span></dt>
+
+ <dd>
+ <p>A console file manager with VI key bindings in
+ <em>Python</em>.</p>
+
+ <p><a href=
+ "https://ranger.github.io/">https://ranger.github.io/</a></p>
+ </dd>
+
+ <dt><span class="part-name">tin</span></dt>
+
+ <dd>
+ <p>newsreader, supporting color, MIME</p>
+
+ <p><a href=
+ "http://www.tin.org/">http://www.tin.org/</a></p>
+ </dd>
+
+ <dt><span class="part-name">vifm</span></dt>
+
+ <dd>
+ <p>File manager with vi like keybindings</p>
+
+ <p><a href="https://vifm.info/">https://vifm.info/</a></p>
+ </dd>
+ </dl>
+ </blockquote>
+
+ <p>as well as some that use <span class=
+ "main-name">ncurses</span> for the terminfo support alone:</p>
+
+ <blockquote>
+ <dl>
+ <dt><span class="part-name">minicom</span></dt>
+
+ <dd>
+ <p>terminal emulator for serial modem connections</p>
+
+ <p><a href=
+ "https://alioth.debian.org/projects/minicom/">https://alioth.debian.org/projects/minicom/</a></p>
+ </dd>
+
+ <dt><span class="part-name">mosh</span></dt>
+
+ <dd>
+ <p>a replacement for <code>ssh</code>.</p>
+
+ <p><a href=
+ "https://mosh.mit.edu/">https://mosh.mit.edu/</a></p>
+ </dd>
+
+ <dt><span class="part-name">tack</span></dt>
+
+ <dd>
+ <p>terminfo action checker</p>
+
+ <p><a href=
+ "https://invisible-island.net/ncurses/tack.html">https://invisible-island.net/ncurses/tack.html</a></p>
+ </dd>
+
+ <dt><span class="part-name">tmux</span></dt>
+
+ <dd>
+ <p>terminal multiplexor</p>
+
+ <p><a href=
+ "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p>
+ </dd>
+
+ <dt><span class="part-name">vile</span></dt>
+
+ <dd>
+ <p>vi-like-emacs may be built to use the terminfo, termcap
+ or curses interfaces.</p>
+
+ <p><a href=
+ "https://invisible-island.net/vile/">https://invisible-island.net/vile/</a></p>
+ </dd>
+ </dl>
+ </blockquote>
+
+ <p>and finally, those which use only the termcap interface:</p>
+
+ <blockquote>
+ <dl>
+ <dt><span class="part-name">emacs</span></dt>
+
+ <dd>
+ <p>text editor</p>
+
+ <p><a href=
+ "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/</a></p>
+ </dd>
+
+ <dt><span class="part-name">less</span></dt>
+
+ <dd>
+ <p>The most commonly used <em>pager</em> (a program that
+ displays text files).</p>
+
+ <p><a href=
+ "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a></p>
+ </dd>
+
+ <dt><span class="part-name">screen</span></dt>
+
+ <dd>
+ <p>terminal multiplexor</p>
+
+ <p><a href=
+ "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/</a></p>
+ </dd>
+
+ <dt><span class="part-name">vim</span></dt>
+
+ <dd>
+ <p>text editor</p>
+
+ <p><a href=
+ "https://www.vim.org/">https://www.vim.org/</a></p>
+ </dd>
+ </dl>
+ </blockquote>
+
+ <h2><a name="h2-development" id="h2-development">Development
+ activities</a></h2>
+
+ <p>Zeyd Ben-Halim started <span class="main-name">ncurses</span>
+ from a previous package pcurses, written by Pavel Curtis. Eric S.
+ Raymond continued development. J&uuml;rgen Pfeifer wrote most of
+ the form and menu libraries. Ongoing development work is done by
+ <a href="mailto:dickey@invisible-island.net">Thomas Dickey</a>.
+ Thomas Dickey also acts as the maintainer for the Free Software
+ Foundation, which holds the <a href=
+ "https://invisible-island.net/ncurses/ncurses-license.html">copyright
+ on ncurses</a>.</p>
+
+ <p>Contact the current maintainers at</p>
+
+ <blockquote>
+ <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>
+ </blockquote>
+
+ <p>To join the ncurses mailing list, please write email to</p>
+
+ <blockquote>
+ <a href=
+ "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a>
+ </blockquote>containing the line:
+
+ <blockquote>
+ <p><code>subscribe</code>
+ <em>&lt;name&gt;@&lt;host.domain&gt;</em></p>
+ </blockquote>
<p>This list is open to anyone interested in helping with the
development and testing of this package.</p>
- <p>Beta versions of ncurses and patches to the current release
- are made available at <a href=
- "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a>&nbsp;.</p>
+ <p>Beta versions of <span class="main-name">ncurses</span> and
+ patches to the current release are made available at</p>
+
+ <blockquote>
+ <p><a href=
+ "ftp://ftp.invisible-island.net/ncurses/">ftp://ftp.invisible-island.net/ncurses/</a>
+ and<br>
+ <a href=
+ "https://invisible-mirror.net/archives/ncurses/">https://invisible-mirror.net/archives/ncurses/</a>&nbsp;.</p>
+ </blockquote>
<p>There is an archive of the mailing list here:</p>
- <p><a href=
- "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a>
- (also <a href=
- "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p>
+ <blockquote>
+ <p><a href=
+ "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a>
+ (also <a href=
+ "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p>
+ </blockquote>
- <h2>Future Plans</h2>
+ <h2><a name="h2-this-stuff" id="h2-this-stuff">Related
+ resources</a></h2>
- <ul>
- <li>Extended-level XPG4 conformance, with internationalization
- support.</li>
+ <p>The release notes make scattered references to these pages,
+ which may be interesting by themselves:</p>
- <li>Ports to more systems, including DOS and Windows.</li>
+ <ul>
+ <li><a href=
+ "https://invisible-island.net/ncurses/ncurses-license.html"><span class="main-name">
+ ncurses</span> licensing</a></li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
+ versioning in <span class="main-name">ncurses</span></a></li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/ncurses-slang.html">Comments
+ on <span class="main-name">ncurses</span> versus <span class=
+ "main-name">slang</span> (S-Lang)</a></li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/tack.html">tack &ndash;
+ terminfo action checker</a></li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/tctest.html">tctest
+ &ndash; termcap library checker</a></li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/ncurses.html#download_database">
+ Terminal Database</a></li>
</ul>
- <p>We need people to help with these projects. If you are
- interested in working on them, please join the ncurses list.</p>
-
- <h2>Other Related Resources</h2>
+ <h2><a name="h2-other-stuff" id="h2-other-stuff">Other
+ resources</a></h2>
<p>The distribution provides a newer version of the
terminfo-format terminal description file once maintained by
<a href="http://www.catb.org/~esr/terminfo/">Eric
Raymond</a>&nbsp;. Unlike the older version, the termcap and
- terminfo data are provided in the same file, and provides several
- user-definable extensions beyond the X/Open specification.</p>
+ terminfo data are provided in the same file, which also provides
+ several user-definable extensions beyond the X/Open
+ specification.</p>
<p>You can find lots of information on terminal-related topics
not covered in the terminfo file at <a href=
"http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">
Richard Shuford's archive</a>&nbsp;.</p>
+
+ <div class="nav">
+ <ul>
+ <li><a href="#h2-overview">Overview</a></li>
+
+ <li>
+ <a href="#h2-release-notes">Release Notes</a>
+
+ <ul>
+ <li>
+ <a href="#h3-library">Library improvements</a>
+
+ <ul>
+ <li><a href="#h4-new-library">New features</a></li>
+
+ <li><a href="#h4-fixes-library">Other
+ improvements</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <a href="#h3-programs">Program improvements</a>
+
+ <ul>
+ <li><a href="#h4-utilities">Utilities</a></li>
+
+ <li><a href="#h4-examples">Examples</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#h3-database">Terminal database</a></li>
+
+ <li><a href="#h3-documentation">Documentation</a></li>
+
+ <li><a href="#h3-bug-fixes">Interesting
+ bug-fixes</a></li>
+
+ <li>
+ <a href="#h3-config-config">Configuration changes</a>
+
+ <ul>
+ <li><a href="#h4-config-major">Major changes</a></li>
+
+ <li><a href="#h4-config-options">Configuration
+ options</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#h3-portability">Portability</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#h2-features">Features of <span class=
+ "main-name">ncurses</span></a></li>
+
+ <li><a href="#h2-who-uses">Applications using <span class=
+ "main-name">ncurses</span></a></li>
+
+ <li><a href="#h2-development">Development activities</a></li>
+
+ <li><a href="#h2-this-stuff">Related resources</a></li>
+
+ <li><a href="#h2-other-stuff">Other resources</a></li>
+ </ul>
+ </div>
</body>
</html>
diff --git a/c++/Makefile.in b/c++/Makefile.in
index 72ad0eb00615..c791283ea41c 100644
--- a/c++/Makefile.in
+++ b/c++/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.106 2013/08/04 20:20:45 tom Exp $
+# $Id: Makefile.in,v 1.118 2018/08/12 00:06:34 tom Exp $
##############################################################################
-# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2017,2018 Free 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"), #
@@ -34,7 +34,7 @@
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
CF_MFLAGS = @cf_cv_makeflags@
@@ -44,6 +44,7 @@ o = .@OBJEXT@
MODEL = ../@DFT_OBJ_SUBDIR@
DESTDIR = @DESTDIR@
+top_srcdir = @top_srcdir@
srcdir = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
@@ -54,7 +55,10 @@ includesubdir = @includesubdir@
INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
+PACKAGE = @PACKAGE@
+
LIBTOOL = @LIBTOOL_CXX@
+LIBTOOL_OPTS = @LIBTOOL_OPTS@ @LIBTOOL_OPTS_CXX@
LIBTOOL_CLEAN = @LIB_CLEAN@
LIBTOOL_COMPILE = @LIB_COMPILE@
LIBTOOL_LINK = @LIB_LINK@
@@ -63,9 +67,10 @@ LIBTOOL_UNINSTALL = @LIB_UNINSTALL@
LIBTOOL_VERSION = @LIBTOOL_VERSION@
LT_UNDEF = @LT_UNDEF@
-INSTALL = @INSTALL@
-INSTALL_LIB = @INSTALL@ @INSTALL_LIB@
+INSTALL = @INSTALL@
+INSTALL_LIB = $(INSTALL) @INSTALL_LIB@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_OPT_P = @INSTALL_OPT_P@
AR = @AR@
ARFLAGS = @ARFLAGS@
@@ -83,7 +88,7 @@ CXXFLAGS = @CXXFLAGS@ @EXTRA_CXXFLAGS@
CXXLIBS = @CXXLIBS@
INCDIR = ../include
-CPPFLAGS = -I../c++ -I$(INCDIR) -I$(srcdir) -DHAVE_CONFIG_H @CPPFLAGS@
+CPPFLAGS = -DHAVE_CONFIG_H -I../c++ @CPPFLAGS@
CTAGS = @CTAGS@
ETAGS = @ETAGS@
@@ -108,17 +113,17 @@ LOCAL_LIBDIR = @top_builddir@/lib
LINK = @LINK_PROGS@ $(LIBTOOL_LINK) @CXXLDFLAGS@
SHLIB_DIRS = -L../lib
-SHLIB_LIST = $(SHLIB_DIRS) -lform@LIB_SUFFIX@ -lmenu@LIB_SUFFIX@ -lpanel@LIB_SUFFIX@ -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
+SHLIB_LIST = $(SHLIB_DIRS) -lform@USE_LIB_SUFFIX@ -lmenu@USE_LIB_SUFFIX@ -lpanel@USE_LIB_SUFFIX@ -lncurses@USE_LIB_SUFFIX@ @SHLIB_LIST@
LIBROOT = ncurses++
-LIBNAME_LIBTOOL = @LIB_PREFIX@$(LIBROOT)@LIB_SUFFIX@.la
-LIBNAME_NORMAL = @LIB_PREFIX@$(LIBROOT)@LIB_SUFFIX@.a
+LIBNAME_LIBTOOL = @LIB_PREFIX@$(LIBROOT)@USE_LIB_SUFFIX@.la
+LIBNAME_NORMAL = @LIB_PREFIX@$(LIBROOT)@USE_LIB_SUFFIX@.a
LIBNAME = @LIB_PREFIX@$(LIBROOT)@CXX_LIB_SUFFIX@
LIBRARIES = @Libs_To_Make@
-LINK_FLAGS = @EXTRA_LDFLAGS@ -L../lib -l$(LIBROOT)@LIB_SUFFIX@
+LINK_FLAGS = @EXTRA_LDFLAGS@ -L../lib -l$(LIBROOT)@USE_LIB_SUFFIX@
RPATH_LIST = @RPATH_LIST@
MK_SHARED_LIB = @MK_SHARED_LIB@
@@ -168,10 +173,10 @@ mostlyclean ::
-rm -f core tags TAGS *~ *.bak *.i *.ii *.ln *.atac trace
clean :: mostlyclean
- -sh -c "if test -n '$x' ; then $(MAKE) clean x=''; fi"
+ -$(SHELL) -c "if test -n '$x' ; then $(MAKE) clean x=''; fi"
-rm -rf $(MODEL)/SunWS_cache
-$(LIBTOOL_CLEAN) rm -f demo$x $(AUTO_SRC) $(LIBRARIES) $(OBJS_DEMO)
- -rm -rf .libs
+ -rm -rf .libs *.dSYM
distclean :: clean
-rm -f Makefile
@@ -238,7 +243,7 @@ demo$x: $(OBJS_DEMO) \
etip.h: $(srcdir)/etip.h.in $(srcdir)/edit_cfg.sh
cp $(srcdir)/etip.h.in $@
- sh $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@
+ $(SHELL) $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@
###############################################################################
# The remainder of this file is automatically generated during configuration
diff --git a/c++/cursesapp.cc b/c++/cursesapp.cc
index ddab6fdf9b9d..e1ffa7a47efe 100644
--- a/c++/cursesapp.cc
+++ b/c++/cursesapp.cc
@@ -1,6 +1,6 @@
// * this is for making emacs happy: -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2008,2019 Free 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 "internal.h"
#include "cursesapp.h"
-MODULE_ID("$Id: cursesapp.cc,v 1.15 2008/08/16 17:15:35 tom Exp $")
+MODULE_ID("$Id: cursesapp.cc,v 1.16 2019/07/28 19:55:27 tom Exp $")
void
NCursesApplication::init(bool bColors)
@@ -68,7 +68,7 @@ NCursesApplication* NCursesApplication::theApp = 0;
NCursesWindow* NCursesApplication::titleWindow = 0;
NCursesApplication::SLK_Link* NCursesApplication::slk_stack = 0;
-NCursesApplication::~NCursesApplication()
+NCursesApplication::~NCursesApplication() THROWS(NCursesException)
{
Soft_Label_Key_Set* S;
diff --git a/c++/cursesapp.h b/c++/cursesapp.h
index e3cbc04cc674..a3d0aaf3c360 100644
--- a/c++/cursesapp.h
+++ b/c++/cursesapp.h
@@ -1,6 +1,6 @@
// * This makes emacs happy -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998-2005,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2019 Free 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, 1997 *
****************************************************************************/
-// $Id: cursesapp.h,v 1.12 2011/09/17 22:12:10 tom Exp $
+// $Id: cursesapp.h,v 1.13 2019/07/28 19:55:27 tom Exp $
#ifndef NCURSES_CURSESAPP_H_incl
#define NCURSES_CURSESAPP_H_incl
@@ -106,7 +106,7 @@ protected:
}
public:
- virtual ~NCursesApplication();
+ virtual ~NCursesApplication() THROWS(NCursesException);
// Get a pointer to the current application object
static NCursesApplication* getApplication() {
diff --git a/c++/cursesf.cc b/c++/cursesf.cc
index 7956054769f4..4a7ad838c367 100644
--- a/c++/cursesf.cc
+++ b/c++/cursesf.cc
@@ -1,6 +1,6 @@
// * this is for making emacs happy: -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998-2005,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2019 Free 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,9 +35,9 @@
#include "cursesf.h"
#include "cursesapp.h"
-MODULE_ID("$Id: cursesf.cc,v 1.22 2011/09/17 22:12:10 tom Exp $")
+MODULE_ID("$Id: cursesf.cc,v 1.23 2019/07/28 19:55:27 tom Exp $")
-NCursesFormField::~NCursesFormField ()
+NCursesFormField::~NCursesFormField () THROWS(NCursesException)
{
if (field)
OnError(::free_field (field));
@@ -149,7 +149,7 @@ NCursesForm::InitForm(NCursesFormField* nfields[],
setDefaultAttributes();
}
-NCursesForm::~NCursesForm()
+NCursesForm::~NCursesForm() THROWS(NCursesException)
{
UserHook* hook = reinterpret_cast<UserHook*>(::form_userptr(form));
delete hook;
diff --git a/c++/cursesf.h b/c++/cursesf.h
index ef7054137205..19bdc8eba46d 100644
--- a/c++/cursesf.h
+++ b/c++/cursesf.h
@@ -1,6 +1,6 @@
// * This makes emacs happy -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2019,2020 Free 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, 1997 *
****************************************************************************/
-// $Id: cursesf.h,v 1.31 2012/12/29 21:49:58 tom Exp $
+// $Id: cursesf.h,v 1.34 2020/01/18 17:02:13 tom Exp $
#ifndef NCURSES_CURSESF_H_incl
#define NCURSES_CURSESF_H_incl 1
@@ -47,7 +47,7 @@ extern "C" {
}
//
// -------------------------------------------------------------------------
-// The abstract base class for buitin and user defined Fieldtypes.
+// The abstract base class for builtin and user defined Fieldtypes.
// -------------------------------------------------------------------------
//
class NCURSES_IMPEXP NCursesFormField; // forward declaration
@@ -151,7 +151,7 @@ public:
{
}
- virtual ~NCursesFormField ();
+ virtual ~NCursesFormField () THROWS(NCursesException);
// Duplicate the field at a new position
inline NCursesFormField* dup(int first_row, int first_col)
@@ -470,7 +470,7 @@ public:
{
}
- virtual ~NCursesForm();
+ virtual ~NCursesForm() THROWS(NCursesException);
// Set the default attributes for the form
virtual void setDefaultAttributes();
@@ -645,7 +645,7 @@ public:
OnError(::set_field_userptr(field, STATIC_CAST(void *)(p_UserData)));
}
- virtual ~NCursesUserField() {};
+ virtual ~NCursesUserField() THROWS(NCursesException) {};
inline const T* UserData (void) const {
return reinterpret_cast<const T*>(::field_userptr (field));
@@ -673,7 +673,8 @@ protected:
const T* p_UserData = STATIC_CAST(T*)(0))
: NCursesForm(nlines,ncols,begin_y,begin_x) {
if (form)
- set_user (const_cast<void *>(p_UserData));
+ set_user (const_cast<void *>(reinterpret_cast<const void*>
+ (p_UserData)));
}
public:
@@ -683,7 +684,7 @@ public:
bool autoDelete_Fields=FALSE)
: NCursesForm (Fields, with_frame, autoDelete_Fields) {
if (form)
- set_user (const_cast<void *>(p_UserData));
+ set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
};
NCursesUserForm (NCursesFormField* Fields[],
@@ -697,19 +698,20 @@ public:
: NCursesForm (Fields, nlines, ncols, begin_y, begin_x,
with_frame, autoDelete_Fields) {
if (form)
- set_user (const_cast<void *>(p_UserData));
+ set_user (const_cast<void *>(reinterpret_cast<const void*>
+ (p_UserData)));
};
- virtual ~NCursesUserForm() {
+ virtual ~NCursesUserForm() THROWS(NCursesException) {
};
- inline T* UserData (void) const {
+ inline T* UserData (void) {
return reinterpret_cast<T*>(get_user ());
};
inline virtual void setUserData (const T* p_UserData) {
if (form)
- set_user (const_cast<void *>(p_UserData));
+ set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
}
};
diff --git a/c++/cursesm.cc b/c++/cursesm.cc
index 222de46cd22e..64a38ffcea0b 100644
--- a/c++/cursesm.cc
+++ b/c++/cursesm.cc
@@ -1,6 +1,6 @@
// * this is for making emacs happy: -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998-2005,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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,9 +35,9 @@
#include "cursesm.h"
#include "cursesapp.h"
-MODULE_ID("$Id: cursesm.cc,v 1.23 2011/09/17 22:11:32 tom Exp $")
+MODULE_ID("$Id: cursesm.cc,v 1.25 2019/07/28 19:55:27 tom Exp $")
-NCursesMenuItem::~NCursesMenuItem()
+NCursesMenuItem::~NCursesMenuItem() THROWS(NCursesException)
{
if (item)
OnError(::free_item(item));
@@ -49,7 +49,7 @@ NCursesMenuItem::action()
return FALSE;
}
-NCursesMenuCallbackItem::~NCursesMenuCallbackItem()
+NCursesMenuCallbackItem::~NCursesMenuCallbackItem() THROWS(NCursesException)
{
}
@@ -175,13 +175,13 @@ NCursesMenu::setDefaultAttributes()
}
}
-NCursesMenu::~NCursesMenu()
+NCursesMenu::~NCursesMenu() THROWS(NCursesException)
{
UserHook* hook = reinterpret_cast<UserHook*>(::menu_userptr(menu));
delete hook;
if (b_sub_owner) {
- delete sub;
::set_menu_sub(menu, static_cast<WINDOW *>(0));
+ delete sub;
}
if (menu) {
ITEM** itms = ::menu_items(menu);
diff --git a/c++/cursesm.h b/c++/cursesm.h
index 259d107fb447..e207ceb1eb96 100644
--- a/c++/cursesm.h
+++ b/c++/cursesm.h
@@ -1,6 +1,6 @@
// * This makes emacs happy -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2019,2020 Free 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, 1997 *
****************************************************************************/
-// $Id: cursesm.h,v 1.29 2012/12/29 21:48:33 tom Exp $
+// $Id: cursesm.h,v 1.32 2020/01/18 17:02:13 tom Exp $
#ifndef NCURSES_CURSESM_H_incl
#define NCURSES_CURSESM_H_incl 1
@@ -85,7 +85,7 @@ public:
(void) rhs;
}
- virtual ~NCursesMenuItem ();
+ virtual ~NCursesMenuItem () THROWS(NCursesException);
// Release the items memory
inline const char* name () const {
@@ -179,7 +179,7 @@ public:
{
}
- virtual ~NCursesMenuCallbackItem();
+ virtual ~NCursesMenuCallbackItem() THROWS(NCursesException);
bool action();
};
@@ -332,7 +332,7 @@ public:
{
}
- virtual ~NCursesMenu ();
+ virtual ~NCursesMenu () THROWS(NCursesException);
// Retrieve the menus subwindow
inline NCursesWindow& subWindow() const {
@@ -358,7 +358,7 @@ public:
flag ? OnError (::post_menu(menu)) : OnError (::unpost_menu (menu));
}
- // Get the numer of rows and columns for this menu
+ // Get the number of rows and columns for this menu
inline void scale (int& mrows, int& mcols) const {
OnError (::scale_menu (menu, &mrows, &mcols));
}
@@ -606,7 +606,7 @@ public:
OnError (::set_item_userptr (item, const_cast<void *>(reinterpret_cast<const void*>(p_UserData))));
}
- virtual ~NCursesUserItem() {}
+ virtual ~NCursesUserItem() THROWS(NCursesException) {}
inline const T* UserData (void) const {
return reinterpret_cast<const T*>(::item_userptr (item));
@@ -632,7 +632,7 @@ protected:
const T* p_UserData = STATIC_CAST(T*)(0))
: NCursesMenu(nlines,ncols,begin_y,begin_x) {
if (menu)
- set_user (const_cast<void *>(p_UserData));
+ set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
}
public:
@@ -642,7 +642,7 @@ public:
bool autoDelete_Items=FALSE)
: NCursesMenu (Items, with_frame, autoDelete_Items) {
if (menu)
- set_user (const_cast<void *>(p_UserData));
+ set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
};
NCursesUserMenu (NCursesMenuItem* Items[],
@@ -654,19 +654,19 @@ public:
bool with_frame=FALSE)
: NCursesMenu (Items, nlines, ncols, begin_y, begin_x, with_frame) {
if (menu)
- set_user (const_cast<void *>(p_UserData));
+ set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
};
- virtual ~NCursesUserMenu() {
+ virtual ~NCursesUserMenu() THROWS(NCursesException) {
};
- inline T* UserData (void) const {
+ inline T* UserData (void) {
return reinterpret_cast<T*>(get_user ());
};
inline virtual void setUserData (const T* p_UserData) {
if (menu)
- set_user (const_cast<void *>(p_UserData));
+ set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
}
};
diff --git a/c++/cursesmain.cc b/c++/cursesmain.cc
index e87099504bdd..a376e5452528 100644
--- a/c++/cursesmain.cc
+++ b/c++/cursesmain.cc
@@ -1,6 +1,6 @@
// * this is for making emacs happy: -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998-2007,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,7 +43,7 @@
#define CPP_HAS_TRY_CATCH 0
#endif
-MODULE_ID("$Id: cursesmain.cc,v 1.15 2013/09/28 20:56:47 tom Exp $")
+MODULE_ID("$Id: cursesmain.cc,v 1.16 2019/12/14 22:48:23 tom Exp $")
#if HAVE_LOCALE_H
#include <locale.h>
@@ -87,7 +87,7 @@ int main(int argc, char* argv[])
#endif
#if NO_LEAKS
delete A;
- _nc_free_and_exit(res);
+ exit_curses(res);
#else
return(res);
#endif
diff --git a/c++/cursesp.cc b/c++/cursesp.cc
index 9c4eab6954ec..83b7cc906f91 100644
--- a/c++/cursesp.cc
+++ b/c++/cursesp.cc
@@ -1,6 +1,6 @@
// * this is for making emacs happy: -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2019 Free 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 "internal.h"
#include "cursesp.h"
-MODULE_ID("$Id: cursesp.cc,v 1.25 2005/08/06 22:12:36 tom Exp $")
+MODULE_ID("$Id: cursesp.cc,v 1.26 2019/07/28 19:55:27 tom Exp $")
NCursesPanel* NCursesPanel::dummy = static_cast<NCursesPanel*>(0);
@@ -51,7 +51,7 @@ void NCursesPanel::init()
::set_panel_userptr(p, reinterpret_cast<void *>(hook));
}
-NCursesPanel::~NCursesPanel()
+NCursesPanel::~NCursesPanel() THROWS(NCursesException)
{
UserHook* hook = UserPointer();
assert(hook != 0 && hook->m_back==this && hook->m_owner==p);
diff --git a/c++/cursesp.h b/c++/cursesp.h
index 699ec284fcfd..82b373bf793c 100644
--- a/c++/cursesp.h
+++ b/c++/cursesp.h
@@ -1,6 +1,6 @@
// * This makes emacs happy -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998-2008,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2014,2019 Free 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 @@
#ifndef NCURSES_CURSESP_H_incl
#define NCURSES_CURSESP_H_incl 1
-// $Id: cursesp.h,v 1.30 2012/12/29 21:50:55 tom Exp $
+// $Id: cursesp.h,v 1.32 2019/07/28 19:55:27 tom Exp $
#include <cursesw.h>
@@ -131,7 +131,7 @@ public:
{
}
- virtual ~NCursesPanel();
+ virtual ~NCursesPanel() THROWS(NCursesException);
// basic manipulation
inline void hide()
@@ -236,7 +236,8 @@ public:
: NCursesPanel (nlines, ncols, begin_y, begin_x)
{
if (p)
- set_user (const_cast<void *>(p_UserData));
+ set_user (const_cast<void *>(reinterpret_cast<const void*>
+ (p_UserData)));
};
// This creates an user panel of the requested size with associated
// user data pointed to by p_UserData.
@@ -244,14 +245,14 @@ public:
NCursesUserPanel(const T* p_UserData = STATIC_CAST(T*)(0)) : NCursesPanel()
{
if (p)
- set_user(const_cast<void *>(p_UserData));
+ set_user(const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
};
// This creates an user panel associated with the ::stdscr and user data
// pointed to by p_UserData.
- virtual ~NCursesUserPanel() {};
+ virtual ~NCursesUserPanel() THROWS(NCursesException) {};
- T* UserData (void) const
+ T* UserData (void)
{
return reinterpret_cast<T*>(get_user ());
};
@@ -260,7 +261,7 @@ public:
virtual void setUserData (const T* p_UserData)
{
if (p)
- set_user (const_cast<void *>(p_UserData));
+ set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
}
// Associate the user panel with the user data pointed to by p_UserData.
};
diff --git a/c++/cursesw.cc b/c++/cursesw.cc
index 16438770d47a..42e5bda98b54 100644
--- a/c++/cursesw.cc
+++ b/c++/cursesw.cc
@@ -1,6 +1,6 @@
// * this is for making emacs happy: -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 2007-2012,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2014,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include "internal.h"
#include "cursesw.h"
-MODULE_ID("$Id: cursesw.cc,v 1.54 2014/02/01 22:10:42 tom Exp $")
+MODULE_ID("$Id: cursesw.cc,v 1.55 2019/07/28 19:55:27 tom Exp $")
#define COLORS_NEED_INITIALIZATION -1
#define COLORS_NOT_INITIALIZED 0
@@ -344,7 +344,7 @@ NCursesWindow::kill_subwindows()
}
-NCursesWindow::~NCursesWindow()
+NCursesWindow::~NCursesWindow() THROWS(NCursesException)
{
kill_subwindows();
diff --git a/c++/cursesw.h b/c++/cursesw.h
index ca07b04237f5..a2ffe68cba6d 100644
--- a/c++/cursesw.h
+++ b/c++/cursesw.h
@@ -1,7 +1,7 @@
// * This makes emacs happy -*-Mode: C++;-*-
// vile:cppmode
/****************************************************************************
- * Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2019,2020 Free 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,14 +31,14 @@
#ifndef NCURSES_CURSESW_H_incl
#define NCURSES_CURSESW_H_incl 1
-// $Id: cursesw.h,v 1.50 2014/02/01 22:17:37 tom Exp $
-
-#include <etip.h>
+// $Id: cursesw.h,v 1.55 2020/01/18 17:02:13 tom Exp $
extern "C" {
# include <curses.h>
}
+#include <etip.h>
+
/* SCO 3.2v4 curses.h includes term.h, which defines lines as a macro.
Undefine it here, because NCursesWindow uses lines as a method. */
#undef lines
@@ -324,6 +324,12 @@ inline void UNDEF(intrflush)(WINDOW *win, bool bf) { intrflush(); }
#define intrflush UNDEF(intrflush)
#endif
+#ifdef is_linetouched
+inline int UNDEF(is_linetouched)(WINDOW *w, int l) { return is_linetouched(w,l); }
+#undef is_linetouched
+#define is_linetouched UNDEF(is_linetouched)
+#endif
+
#ifdef leaveok
inline int UNDEF(leaveok)(WINDOW* win, bool bf) { return leaveok(win, bf); }
#undef leaveok
@@ -831,7 +837,7 @@ public:
{
}
- virtual ~NCursesWindow();
+ virtual ~NCursesWindow() THROWS(NCursesException);
NCursesWindow Clone();
// Make an exact copy of the window.
@@ -1241,7 +1247,7 @@ public:
// on the value of the changed flag.
bool is_linetouched(int line) const {
- return (::is_linetouched(w, line) ? TRUE:FALSE); }
+ return (::is_linetouched(w, line) == TRUE ? TRUE:FALSE); }
// Return TRUE if line is marked as changed, FALSE otherwise
bool is_wintouched() const {
@@ -1249,7 +1255,7 @@ public:
// Return TRUE if window is marked as changed, FALSE otherwise
int leaveok(bool bf) { return ::leaveok(w, bf); }
- // If bf is TRUE, curses will leave the cursor after an update whereever
+ // If bf is TRUE, curses will leave the cursor after an update wherever
// it is after the update.
int redrawln(int from, int n) { return ::wredrawln(w, from, n); }
@@ -1479,7 +1485,7 @@ public:
{
}
- virtual ~NCursesPad() {}
+ virtual ~NCursesPad() THROWS(NCursesException) {}
int echochar(const chtype ch) { return ::pechochar(w, ch); }
// Put the attributed character onto the pad and immediately do a
@@ -1540,7 +1546,7 @@ public:
}
// Construct the FramedPad with the given Window win as viewport.
- virtual ~NCursesFramedPad() {
+ virtual ~NCursesFramedPad() THROWS(NCursesException) {
delete getSubWindow();
}
diff --git a/c++/cursslk.cc b/c++/cursslk.cc
index 23785dfca828..ef393632de4e 100644
--- a/c++/cursslk.cc
+++ b/c++/cursslk.cc
@@ -1,6 +1,6 @@
// * this is for making emacs happy: -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998-2005,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2019 Free 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 "cursslk.h"
#include "cursesapp.h"
-MODULE_ID("$Id: cursslk.cc,v 1.16 2012/02/23 10:41:56 tom Exp $")
+MODULE_ID("$Id: cursslk.cc,v 1.17 2019/07/28 19:55:27 tom Exp $")
Soft_Label_Key_Set::Soft_Label_Key&
Soft_Label_Key_Set::Soft_Label_Key::operator=(char *text)
@@ -88,7 +88,7 @@ Soft_Label_Key_Set::Soft_Label_Key_Set(Soft_Label_Key_Set::Label_Layout fmt)
init();
}
-Soft_Label_Key_Set::~Soft_Label_Key_Set() {
+Soft_Label_Key_Set::~Soft_Label_Key_Set() THROWS(NCursesException) {
if (!::isendwin())
clear();
delete[] slk_array;
diff --git a/c++/cursslk.h b/c++/cursslk.h
index 091695eef27a..c110a61cab4e 100644
--- a/c++/cursslk.h
+++ b/c++/cursslk.h
@@ -1,6 +1,6 @@
// * this is for making emacs happy: -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2019 Free 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, 1997 *
****************************************************************************/
-// $Id: cursslk.h,v 1.13 2005/05/28 21:58:18 tom Exp $
+// $Id: cursslk.h,v 1.14 2019/07/28 19:55:27 tom Exp $
#ifndef NCURSES_CURSSLK_H_incl
#define NCURSES_CURSSLK_H_incl
@@ -161,7 +161,7 @@ public:
init(); // allocate a new slk_array[]
}
- virtual ~Soft_Label_Key_Set();
+ virtual ~Soft_Label_Key_Set() THROWS(NCursesException);
// Get Label# i. Label counting starts with 1!
NCURSES_IMPEXP Soft_Label_Key& operator[](int i);
diff --git a/c++/demo.cc b/c++/demo.cc
index 8bcfb146420e..37e50c761fb7 100644
--- a/c++/demo.cc
+++ b/c++/demo.cc
@@ -1,6 +1,6 @@
// * This makes emacs happy -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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 @@
* Demo code for NCursesMenu and NCursesForm written by
* Juergen Pfeifer
*
- * $Id: demo.cc,v 1.41 2012/02/23 10:41:56 tom Exp $
+ * $Id: demo.cc,v 1.44 2019/07/28 19:55:27 tom Exp $
*/
#include "internal.h"
@@ -43,11 +43,11 @@
#include "cursesm.h"
#include "cursesf.h"
-#ifdef __MINGW32__
+#ifdef _WIN32
#undef KEY_EVENT
#endif
-#ifndef __MINGW32__
+#ifndef _WIN32
extern "C" unsigned int sleep(unsigned int);
#endif
@@ -176,7 +176,7 @@ public:
: NCursesUserItem<T>(p_name, static_cast<const char*>(0), p_UserData)
{}
- virtual ~MyAction() {}
+ virtual ~MyAction() THROWS(NCursesException) {}
bool action() {
SillyDemo a;
@@ -295,7 +295,7 @@ public:
{
}
- ~TestForm() {
+ ~TestForm() THROWS(NCursesException) {
delete mft;
delete ift;
delete eft;
@@ -320,7 +320,7 @@ public:
for(int i=1; i <= S->labels(); i++) {
char buf[8];
assert(i < 100);
- ::_nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) "Frm%02d", i);
+ ::_nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) "Frm%02d", i % 100);
(*S)[i] = buf; // Text
(*S)[i] = Soft_Label_Key_Set::Soft_Label_Key::Left; // Justification
}
@@ -473,7 +473,7 @@ public:
{
}
- ~MyMenu()
+ ~MyMenu() THROWS(NCursesException)
{
P->hide();
delete P;
@@ -540,7 +540,7 @@ void TestApplication::init_labels(Soft_Label_Key_Set& S) const
for(int i=1; i <= S.labels(); i++) {
char buf[8];
assert(i < 100);
- ::_nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) "Key%02d", i);
+ ::_nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) "Key%02d", i % 100);
S[i] = buf; // Text
S[i] = Soft_Label_Key_Set::Soft_Label_Key::Left; // Justification
}
diff --git a/c++/etip.h.in b/c++/etip.h.in
index 9f642ee6d000..222d0666698c 100644
--- a/c++/etip.h.in
+++ b/c++/etip.h.in
@@ -1,6 +1,6 @@
// * This makes emacs happy -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free 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, 1997 *
****************************************************************************/
-// $Id: etip.h.in,v 1.39 2012/12/29 21:50:44 tom Exp $
+// $Id: etip.h.in,v 1.42 2018/05/26 14:47:47 tom Exp $
#ifndef NCURSES_ETIP_H_incl
#define NCURSES_ETIP_H_incl 1
@@ -113,7 +113,7 @@
# include <generic.h>
#endif
-#include <ncurses_dll.h>
+#include <curses.h>
extern "C" {
#if HAVE_VALUES_H
@@ -330,7 +330,7 @@ public:
}
};
-#if !((defined(__GNUG__) && defined(__EXCEPTIONS)) || defined(__SUNPRO_CC))
+#if !((defined(__GNUG__) && defined(__EXCEPTIONS) && (__GNUG__ < 7)) || defined(__SUNPRO_CC))
# if HAVE_IOSTREAM
# include <iostream>
# if IOSTREAM_NAMESPACE
@@ -347,15 +347,20 @@ inline void THROW(const NCursesException *e) {
#if defined(__GNUG__) && defined(__EXCEPTIONS)
# if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8))
(*lib_error_handler)(e ? e->classname() : "", e ? e->message : "");
-#else
-#define CPP_HAS_TRY_CATCH 1
-#endif
+# elif (__GNUG__ >= 7)
+ // g++ 7.0 warns about deprecation, but lacks the predefined symbols
+ ::endwin();
+ std::cerr << "Found a problem - goodbye" << std::endl;
+ exit(EXIT_FAILURE);
+# else
+# define CPP_HAS_TRY_CATCH 1
+# endif
#elif defined(__SUNPRO_CC)
# if !defined(__SUNPRO_CC_COMPAT) || (__SUNPRO_CC_COMPAT < 5)
genericerror(1, ((e != 0) ? (char *)(e->message) : ""));
-#else
-#define CPP_HAS_TRY_CATCH 1
-#endif
+# else
+# define CPP_HAS_TRY_CATCH 1
+# endif
#else
if (e)
cerr << e->message << endl;
@@ -372,9 +377,15 @@ inline void THROW(const NCursesException *e) {
throw *e;
#define NCURSES_CPP_TRY try
#define NCURSES_CPP_CATCH(e) catch(e)
+#if defined(__cpp_noexcept_function_type) && (__cpp_noexcept_function_type >= 201510)
+// C++17 deprecates the usage of throw().
+#define THROWS(s) /* nothing */
+#define THROW2(s,t) /* nothing */
+#else
#define THROWS(s) throw(s)
#define THROW2(s,t) throw(s,t)
#endif
+#endif
}
#endif /* NCURSES_ETIP_H_incl */
diff --git a/c++/internal.h b/c++/internal.h
index 1f6b4a676e52..70744a516376 100644
--- a/c++/internal.h
+++ b/c++/internal.h
@@ -1,6 +1,6 @@
// * This makes emacs happy -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998-2008,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2018 Free 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, 1997 *
****************************************************************************/
-// $Id: internal.h,v 1.18 2012/02/23 10:41:56 tom Exp $
+// $Id: internal.h,v 1.19 2018/06/24 00:10:14 tom Exp $
#ifndef NCURSES_CPLUS_INTERNAL_H
#define NCURSES_CPLUS_INTERNAL_H 1
@@ -41,10 +41,10 @@
#if USE_RCS_IDS
#define MODULE_ID(id) static const char Ident[] = id;
#else
-#define MODULE_ID(id) /*nothing*/
+#define MODULE_ID(id) /*nothing */
#endif
-#ifdef __MINGW32__
+#ifdef _WIN32
#include <nc_mingw.h>
#undef KEY_EVENT
#endif
diff --git a/config.guess b/config.guess
index b79252d6b103..95b16c7747a1 100755
--- a/config.guess
+++ b/config.guess
@@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2013 Free Software Foundation, Inc.
+# Copyright 1992-2019 Free Software Foundation, Inc.
-timestamp='2013-06-10'
+timestamp='2019-12-21'
# 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
@@ -15,7 +15,7 @@ timestamp='2013-06-10'
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -24,12 +24,12 @@ timestamp='2013-06-10'
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
#
-# Originally written by Per Bothner.
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
#
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to <config-patches@gnu.org>.
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -39,7 +39,7 @@ Usage: $0 [OPTION]
Output the configuration name of the system \`$me' is run on.
-Operation modes:
+Options:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
@@ -50,7 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -84,8 +84,6 @@ if test $# != 0; then
exit 1
fi
-trap 'exit 1' 1 2 15
-
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
# temporary files to be created and, as you can see below, it is a
@@ -96,34 +94,40 @@ trap 'exit 1' 1 2 15
# Portable tmp directory creation inspired by the Autoconf team.
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
+tmp=
+# shellcheck disable=SC2172
+trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
+
+set_cc_for_build() {
+ # prevent multiple calls if $tmp is already set
+ test "$tmp" && return 0
+ : "${TMPDIR=/tmp}"
+ # shellcheck disable=SC2039
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
+ dummy=$tmp/dummy
+ case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
+ ,,) echo "int x;" > "$dummy.c"
+ for driver in cc gcc c89 c99 ; do
+ if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$driver"
+ break
+ fi
+ done
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+ esac
+}
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+if test -f /.attbin/uname ; then
PATH=$PATH:/.attbin ; export PATH
fi
@@ -132,14 +136,14 @@ 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
-case "${UNAME_SYSTEM}" in
+case "$UNAME_SYSTEM" in
Linux|GNU|GNU/*)
# If the system lacks a compiler, then just pick glibc.
# We could probably try harder.
LIBC=gnu
- eval $set_cc_for_build
- cat <<-EOF > $dummy.c
+ set_cc_for_build
+ cat <<-EOF > "$dummy.c"
#include <features.h>
#if defined(__UCLIBC__)
LIBC=uclibc
@@ -149,13 +153,20 @@ Linux|GNU|GNU/*)
LIBC=gnu
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+
+ # If ldd exists, use it to detect musl libc.
+ if command -v ldd >/dev/null && \
+ ldd --version 2>&1 | grep -q ^musl
+ then
+ LIBC=musl
+ fi
;;
esac
# Note: order is significant - the case branches are not exclusive.
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -168,21 +179,31 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
+ UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+ "/sbin/$sysctl" 2>/dev/null || \
+ "/usr/sbin/$sysctl" 2>/dev/null || \
+ echo unknown)`
+ case "$UNAME_MACHINE_ARCH" in
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ earmv*)
+ arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+ endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+ machine="${arch}${endian}"-unknown
+ ;;
+ *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
esac
# The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
- case "${UNAME_MACHINE_ARCH}" in
+ # to ELF recently (or will in the future) and ABI.
+ case "$UNAME_MACHINE_ARCH" in
+ earm*)
+ os=netbsdelf
+ ;;
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
+ set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
then
@@ -197,43 +218,72 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
os=netbsd
;;
esac
+ # Determine ABI tags.
+ case "$UNAME_MACHINE_ARCH" in
+ earm*)
+ expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+ abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
+ ;;
+ esac
# The OS release
# Debian GNU/NetBSD machines have a different userland, and
# thus, need a distinct triplet. However, they do not need
# kernel version information, so it can be replaced with a
# suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
+ case "$UNAME_VERSION" in
Debian*)
release='-gnu'
;;
*)
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
;;
esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
+ echo "$machine-${os}${release}${abi-}"
exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
+ exit ;;
+ *:LibertyBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+ echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
+ exit ;;
+ *:MidnightBSD:*:*)
+ echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
exit ;;
*:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
exit ;;
*:SolidBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
+ exit ;;
+ *:OS108:*:*)
+ echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
exit ;;
macppc:MirBSD:*:*)
- echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
exit ;;
*:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
+ exit ;;
+ *:Sortix:*:*)
+ echo "$UNAME_MACHINE"-unknown-sortix
+ exit ;;
+ *:Twizzler:*:*)
+ echo "$UNAME_MACHINE"-unknown-twizzler
+ exit ;;
+ *:Redox:*:*)
+ echo "$UNAME_MACHINE"-unknown-redox
+ exit ;;
+ mips:OSF1:*.*)
+ echo mips-dec-osf1
exit ;;
alpha:OSF1:*:*)
case $UNAME_RELEASE in
@@ -251,63 +301,54 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
case "$ALPHA_CPU_TYPE" in
"EV4 (21064)")
- UNAME_MACHINE="alpha" ;;
+ UNAME_MACHINE=alpha ;;
"EV4.5 (21064)")
- UNAME_MACHINE="alpha" ;;
+ UNAME_MACHINE=alpha ;;
"LCA4 (21066/21068)")
- UNAME_MACHINE="alpha" ;;
+ UNAME_MACHINE=alpha ;;
"EV5 (21164)")
- UNAME_MACHINE="alphaev5" ;;
+ UNAME_MACHINE=alphaev5 ;;
"EV5.6 (21164A)")
- UNAME_MACHINE="alphaev56" ;;
+ UNAME_MACHINE=alphaev56 ;;
"EV5.6 (21164PC)")
- UNAME_MACHINE="alphapca56" ;;
+ UNAME_MACHINE=alphapca56 ;;
"EV5.7 (21164PC)")
- UNAME_MACHINE="alphapca57" ;;
+ UNAME_MACHINE=alphapca57 ;;
"EV6 (21264)")
- UNAME_MACHINE="alphaev6" ;;
+ UNAME_MACHINE=alphaev6 ;;
"EV6.7 (21264A)")
- UNAME_MACHINE="alphaev67" ;;
+ UNAME_MACHINE=alphaev67 ;;
"EV6.8CB (21264C)")
- UNAME_MACHINE="alphaev68" ;;
+ UNAME_MACHINE=alphaev68 ;;
"EV6.8AL (21264B)")
- UNAME_MACHINE="alphaev68" ;;
+ UNAME_MACHINE=alphaev68 ;;
"EV6.8CX (21264D)")
- UNAME_MACHINE="alphaev68" ;;
+ UNAME_MACHINE=alphaev68 ;;
"EV6.9A (21264/EV69A)")
- UNAME_MACHINE="alphaev69" ;;
+ UNAME_MACHINE=alphaev69 ;;
"EV7 (21364)")
- UNAME_MACHINE="alphaev7" ;;
+ UNAME_MACHINE=alphaev7 ;;
"EV7.9 (21364A)")
- UNAME_MACHINE="alphaev79" ;;
+ UNAME_MACHINE=alphaev79 ;;
esac
# A Pn.n version is a patched version.
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
exitcode=$?
trap '' 0
exit $exitcode ;;
- 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 ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit ;;
Amiga*:UNIX_System_V:4.0:*)
echo m68k-unknown-sysv4
exit ;;
*:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
+ echo "$UNAME_MACHINE"-unknown-amigaos
exit ;;
*:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
+ echo "$UNAME_MACHINE"-unknown-morphos
exit ;;
*:OS/390:*:*)
echo i370-ibm-openedition
@@ -319,7 +360,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
+ echo arm-acorn-riscix"$UNAME_RELEASE"
exit ;;
arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
@@ -346,38 +387,38 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
sparc) echo sparc-icl-nx7; exit ;;
esac ;;
s390x:SunOS:*:*)
- echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
exit ;;
sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
exit ;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
- echo i386-pc-auroraux${UNAME_RELEASE}
+ echo i386-pc-auroraux"$UNAME_RELEASE"
exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- eval $set_cc_for_build
- SUN_ARCH="i386"
+ set_cc_for_build
+ SUN_ARCH=i386
# If there is a compiler, see if it is configured for 64-bit objects.
# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
# This test works for both compilers.
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
- SUN_ARCH="x86_64"
+ SUN_ARCH=x86_64
fi
fi
- echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
@@ -386,25 +427,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
exit ;;
sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
+ echo m68k-sun-sunos"$UNAME_RELEASE"
exit ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
case "`/bin/arch`" in
sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
+ echo m68k-sun-sunos"$UNAME_RELEASE"
;;
sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
+ echo sparc-sun-sunos"$UNAME_RELEASE"
;;
esac
exit ;;
aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
+ echo sparc-auspex-sunos"$UNAME_RELEASE"
exit ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
@@ -415,44 +456,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# 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}
+ echo m68k-atari-mint"$UNAME_RELEASE"
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint"$UNAME_RELEASE"
exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint"$UNAME_RELEASE"
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
+ echo m68k-milan-mint"$UNAME_RELEASE"
exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
+ echo m68k-hades-mint"$UNAME_RELEASE"
exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
+ echo m68k-unknown-mint"$UNAME_RELEASE"
exit ;;
m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
+ echo m68k-apple-machten"$UNAME_RELEASE"
exit ;;
powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
+ echo powerpc-apple-machten"$UNAME_RELEASE"
exit ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
exit ;;
RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
+ echo mips-dec-ultrix"$UNAME_RELEASE"
exit ;;
VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
+ echo vax-dec-ultrix"$UNAME_RELEASE"
exit ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
+ echo clipper-intergraph-clix"$UNAME_RELEASE"
exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
#ifdef __cplusplus
#include <stdio.h> /* for printf() prototype */
int main (int argc, char *argv[]) {
@@ -461,23 +502,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
#endif
#if defined (host_mips) && defined (MIPSEB)
#if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
#endif
#endif
exit (-1);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c &&
- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`$dummy $dummyarg` &&
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
+ dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
{ echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos${UNAME_RELEASE}
+ echo mips-mips-riscos"$UNAME_RELEASE"
exit ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
@@ -503,17 +544,17 @@ EOF
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
+ if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
+ [ "$TARGET_BINARY_INTERFACE"x = x ]
then
- echo m88k-dg-dgux${UNAME_RELEASE}
+ echo m88k-dg-dgux"$UNAME_RELEASE"
else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ echo m88k-dg-dguxbcs"$UNAME_RELEASE"
fi
else
- echo i586-dg-dgux${UNAME_RELEASE}
+ echo i586-dg-dgux"$UNAME_RELEASE"
fi
exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
@@ -530,7 +571,7 @@ EOF
echo m68k-tektronix-bsd
exit ;;
*:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
exit ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
@@ -542,14 +583,14 @@ EOF
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
#include <sys/systemcfg.h>
main()
@@ -560,7 +601,7 @@ EOF
exit(0);
}
EOF
- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
then
echo "$SYSTEM_NAME"
else
@@ -574,26 +615,27 @@ EOF
exit ;;
*:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
+ if [ -x /usr/bin/lslpp ] ; then
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
exit ;;
*:AIX:*:*)
echo rs6000-ibm-aix
exit ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
echo romp-ibm-bsd4.4
exit ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to
exit ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
@@ -608,28 +650,28 @@ EOF
echo m68k-hp-bsd4.4
exit ;;
9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
+ HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+ case "$UNAME_MACHINE" in
+ 9000/31?) HP_ARCH=m68000 ;;
+ 9000/[34]??) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ case "$sc_cpu_version" in
+ 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ case "$sc_kernel_bits" in
+ 32) HP_ARCH=hppa2.0n ;;
+ 64) HP_ARCH=hppa2.0w ;;
+ '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
esac ;;
esac
fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ if [ "$HP_ARCH" = "" ]; then
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
#define _HPUX_SOURCE
#include <stdlib.h>
@@ -662,13 +704,13 @@ EOF
exit (0);
}
EOF
- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
- if [ ${HP_ARCH} = "hppa2.0w" ]
+ if [ "$HP_ARCH" = hppa2.0w ]
then
- eval $set_cc_for_build
+ set_cc_for_build
# hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
# 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
@@ -679,23 +721,23 @@ EOF
# $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
# => hppa64-hp-hpux11.23
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
grep -q __LP64__
then
- HP_ARCH="hppa2.0w"
+ HP_ARCH=hppa2.0w
else
- HP_ARCH="hppa64"
+ HP_ARCH=hppa64
fi
fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
exit ;;
ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
+ HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux"$HPUX_REV"
exit ;;
3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
#include <unistd.h>
int
main ()
@@ -720,11 +762,11 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
{ echo "$SYSTEM_NAME"; exit; }
echo unknown-hitachi-hiuxwe2
exit ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
echo hppa1.1-hp-bsd
exit ;;
9000/8??:4.3bsd:*:*)
@@ -733,7 +775,7 @@ EOF
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
echo hppa1.0-hp-mpeix
exit ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
echo hppa1.1-hp-osf
exit ;;
hp8??:OSF1:*:*)
@@ -741,9 +783,9 @@ EOF
exit ;;
i*86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
+ echo "$UNAME_MACHINE"-unknown-osf1mk
else
- echo ${UNAME_MACHINE}-unknown-osf1
+ echo "$UNAME_MACHINE"-unknown-osf1
fi
exit ;;
parisc*:Lites*:*:*)
@@ -768,130 +810,123 @@ EOF
echo c4-convex-bsd
exit ;;
CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-e 's/\.[^.]*$/.X/'
exit ;;
CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
*:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
exit ;;
sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
+ echo sparc-unknown-bsdi"$UNAME_RELEASE"
exit ;;
*:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
+ exit ;;
+ arm:FreeBSD:*:*)
+ UNAME_PROCESSOR=`uname -p`
+ set_cc_for_build
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
+ else
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
+ fi
exit ;;
*:FreeBSD:*:*)
UNAME_PROCESSOR=`/usr/bin/uname -p`
- case ${UNAME_PROCESSOR} in
+ case "$UNAME_PROCESSOR" in
amd64)
- echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- *)
- echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ UNAME_PROCESSOR=x86_64 ;;
+ i386)
+ UNAME_PROCESSOR=i586 ;;
esac
+ echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
exit ;;
i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
+ echo "$UNAME_MACHINE"-pc-cygwin
exit ;;
*:MINGW64*:*)
- echo ${UNAME_MACHINE}-pc-mingw64
+ echo "$UNAME_MACHINE"-pc-mingw64
exit ;;
*:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
+ echo "$UNAME_MACHINE"-pc-mingw32
exit ;;
- i*:MSYS*:*)
- echo ${UNAME_MACHINE}-pc-msys
- exit ;;
- i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
+ *:MSYS*:*)
+ echo "$UNAME_MACHINE"-pc-msys
exit ;;
i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
+ echo "$UNAME_MACHINE"-pc-pw32
exit ;;
*:Interix*:*)
- case ${UNAME_MACHINE} in
+ case "$UNAME_MACHINE" in
x86)
- echo i586-pc-interix${UNAME_RELEASE}
+ echo i586-pc-interix"$UNAME_RELEASE"
exit ;;
authenticamd | genuineintel | EM64T)
- echo x86_64-unknown-interix${UNAME_RELEASE}
+ echo x86_64-unknown-interix"$UNAME_RELEASE"
exit ;;
IA64)
- echo ia64-unknown-interix${UNAME_RELEASE}
+ echo ia64-unknown-interix"$UNAME_RELEASE"
exit ;;
esac ;;
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- echo i${UNAME_MACHINE}-pc-mks
- exit ;;
- 8664:Windows_NT:*)
- echo x86_64-pc-mks
- exit ;;
- 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 i586-pc-interix
- exit ;;
i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
+ echo "$UNAME_MACHINE"-pc-uwin
exit ;;
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-unknown-cygwin
- exit ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
+ echo x86_64-pc-cygwin
exit ;;
prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
*:GNU:*:*)
# the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+ echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
exit ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
+ *:Minix:*:*)
+ echo "$UNAME_MACHINE"-unknown-minix
exit ;;
aarch64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
EV5) UNAME_MACHINE=alphaev5 ;;
EV56) UNAME_MACHINE=alphaev56 ;;
PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -901,129 +936,169 @@ EOF
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
arc:Linux:*:* | arceb:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
arm*:Linux:*:*)
- eval $set_cc_for_build
+ set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
else
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
cris:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
exit ;;
crisv32:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
+ exit ;;
+ e2k:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
frv:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
hexagon:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
i*86:Linux:*:*)
- echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
exit ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ k1om:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ set_cc_for_build
+ IS_GLIBC=0
+ test x"${LIBC}" = xgnu && IS_GLIBC=1
+ sed 's/^ //' << EOF > "$dummy.c"
#undef CPU
- #undef ${UNAME_MACHINE}
- #undef ${UNAME_MACHINE}el
+ #undef mips
+ #undef mipsel
+ #undef mips64
+ #undef mips64el
+ #if ${IS_GLIBC} && defined(_ABI64)
+ LIBCABI=gnuabi64
+ #else
+ #if ${IS_GLIBC} && defined(_ABIN32)
+ LIBCABI=gnuabin32
+ #else
+ LIBCABI=${LIBC}
+ #endif
+ #endif
+
+ #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa64r6
+ #else
+ #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa32r6
+ #else
+ #if defined(__mips64)
+ CPU=mips64
+ #else
+ CPU=mips
+ #endif
+ #endif
+ #endif
+
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=${UNAME_MACHINE}el
+ MIPS_ENDIAN=el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=${UNAME_MACHINE}
+ MIPS_ENDIAN=
#else
- CPU=
+ MIPS_ENDIAN=
#endif
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+ eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
+ test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
;;
- or1k:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ mips64el:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
- or32:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ openrisc*:Linux:*:*)
+ echo or1k-unknown-linux-"$LIBC"
+ exit ;;
+ or32:Linux:*:* | or1k*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-${LIBC}
+ echo sparc-unknown-linux-"$LIBC"
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-${LIBC}
+ echo hppa64-unknown-linux-"$LIBC"
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
- PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
- *) echo hppa-unknown-linux-${LIBC} ;;
+ PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
+ PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
+ *) echo hppa-unknown-linux-"$LIBC" ;;
esac
exit ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-${LIBC}
+ echo powerpc64-unknown-linux-"$LIBC"
exit ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-${LIBC}
+ echo powerpc-unknown-linux-"$LIBC"
exit ;;
ppc64le:Linux:*:*)
- echo powerpc64le-unknown-linux-${LIBC}
+ echo powerpc64le-unknown-linux-"$LIBC"
exit ;;
ppcle:Linux:*:*)
- echo powerpcle-unknown-linux-${LIBC}
+ echo powerpcle-unknown-linux-"$LIBC"
+ exit ;;
+ riscv32:Linux:*:* | riscv64:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+ echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
tile*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+ echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
exit ;;
x86_64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1037,34 +1112,34 @@ EOF
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
exit ;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
+ echo "$UNAME_MACHINE"-pc-os2-emx
exit ;;
i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
+ echo "$UNAME_MACHINE"-unknown-stop
exit ;;
i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
+ echo "$UNAME_MACHINE"-unknown-atheos
exit ;;
i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
+ echo "$UNAME_MACHINE"-pc-syllable
exit ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
+ echo i386-unknown-lynxos"$UNAME_RELEASE"
exit ;;
i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ echo "$UNAME_MACHINE"-pc-msdosdjgpp
exit ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ i*86:*: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}
+ echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
fi
exit ;;
i*86:*:5:[678]*)
@@ -1074,12 +1149,12 @@ EOF
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
elif /bin/uname -X 2>/dev/null >/dev/null ; then
UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
@@ -1089,9 +1164,9 @@ EOF
&& UNAME_MACHINE=i686
(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
else
- echo ${UNAME_MACHINE}-pc-sysv32
+ echo "$UNAME_MACHINE"-pc-sysv32
fi
exit ;;
pc:*:*:*)
@@ -1099,7 +1174,7 @@ EOF
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i586.
# Note: whatever this is, it MUST be the same as what config.sub
- # prints for the "djgpp" host, or else GDB configury will decide that
+ # prints for the "djgpp" host, or else GDB configure will decide that
# this is a cross-build.
echo i586-pc-msdosdjgpp
exit ;;
@@ -1111,9 +1186,9 @@ EOF
exit ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4
fi
exit ;;
mini*:CTIX:SYS*5:*)
@@ -1133,9 +1208,9 @@ EOF
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4; exit; } ;;
@@ -1144,28 +1219,28 @@ EOF
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
+ echo m68k-unknown-lynxos"$UNAME_RELEASE"
exit ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit ;;
TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
+ echo sparc-unknown-lynxos"$UNAME_RELEASE"
exit ;;
rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ echo rs6000-unknown-lynxos"$UNAME_RELEASE"
exit ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ echo powerpc-unknown-lynxos"$UNAME_RELEASE"
exit ;;
SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
+ echo mips-dde-sysv"$UNAME_RELEASE"
exit ;;
RM*:ReliantUNIX-*:*:*)
echo mips-sni-sysv4
@@ -1176,7 +1251,7 @@ EOF
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
+ echo "$UNAME_MACHINE"-sni-sysv4
else
echo ns32k-sni-sysv
fi
@@ -1196,23 +1271,23 @@ EOF
exit ;;
i*86:VOS:*:*)
# From Paul.Green@stratus.com.
- echo ${UNAME_MACHINE}-stratus-vos
+ echo "$UNAME_MACHINE"-stratus-vos
exit ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
echo hppa1.1-stratus-vos
exit ;;
mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
+ echo m68k-apple-aux"$UNAME_RELEASE"
exit ;;
news*:NEWS-OS:6*:*)
echo mips-sony-newsos6
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
+ echo mips-nec-sysv"$UNAME_RELEASE"
else
- echo mips-unknown-sysv${UNAME_RELEASE}
+ echo mips-unknown-sysv"$UNAME_RELEASE"
fi
exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
@@ -1231,67 +1306,94 @@ EOF
echo x86_64-unknown-haiku
exit ;;
SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
+ echo sx4-nec-superux"$UNAME_RELEASE"
exit ;;
SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
+ echo sx5-nec-superux"$UNAME_RELEASE"
exit ;;
SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux${UNAME_RELEASE}
+ echo sx6-nec-superux"$UNAME_RELEASE"
exit ;;
SX-7:SUPER-UX:*:*)
- echo sx7-nec-superux${UNAME_RELEASE}
+ echo sx7-nec-superux"$UNAME_RELEASE"
exit ;;
SX-8:SUPER-UX:*:*)
- echo sx8-nec-superux${UNAME_RELEASE}
+ echo sx8-nec-superux"$UNAME_RELEASE"
exit ;;
SX-8R:SUPER-UX:*:*)
- echo sx8r-nec-superux${UNAME_RELEASE}
+ echo sx8r-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ SX-ACE:SUPER-UX:*:*)
+ echo sxace-nec-superux"$UNAME_RELEASE"
exit ;;
Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ echo powerpc-apple-rhapsody"$UNAME_RELEASE"
exit ;;
*:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
exit ;;
*:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- eval $set_cc_for_build
- if test "$UNAME_PROCESSOR" = unknown ; then
- UNAME_PROCESSOR=powerpc
+ UNAME_PROCESSOR=`uname -p`
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ if command -v xcode-select > /dev/null 2> /dev/null && \
+ ! xcode-select --print-path > /dev/null 2> /dev/null ; then
+ # Avoid executing cc if there is no toolchain installed as
+ # cc will be a stub that puts up a graphical alert
+ # prompting the user to install developer tools.
+ CC_FOR_BUILD=no_compiler_found
+ else
+ set_cc_for_build
fi
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
then
case $UNAME_PROCESSOR in
i386) UNAME_PROCESSOR=x86_64 ;;
powerpc) UNAME_PROCESSOR=powerpc64 ;;
esac
fi
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
+ fi
+ elif test "$UNAME_PROCESSOR" = i386 ; then
+ # uname -m returns i386 or x86_64
+ UNAME_PROCESSOR=$UNAME_MACHINE
fi
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = "x86"; then
+ if test "$UNAME_PROCESSOR" = x86; then
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
exit ;;
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
- NEO-?:NONSTOP_KERNEL:*:*)
- echo neo-tandem-nsk${UNAME_RELEASE}
+ NEO-*:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk"$UNAME_RELEASE"
exit ;;
NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
+ echo nse-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSR-*:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk"$UNAME_RELEASE"
exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
+ NSV-*:NONSTOP_KERNEL:*:*)
+ echo nsv-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSX-*:NONSTOP_KERNEL:*:*)
+ echo nsx-tandem-nsk"$UNAME_RELEASE"
exit ;;
*:NonStop-UX:*:*)
echo mips-compaq-nonstopux
@@ -1300,18 +1402,19 @@ EOF
echo bs2000-siemens-sysv
exit ;;
DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
exit ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
- if test "$cputype" = "386"; then
+ # shellcheck disable=SC2154
+ if test "$cputype" = 386; then
UNAME_MACHINE=i386
else
UNAME_MACHINE="$cputype"
fi
- echo ${UNAME_MACHINE}-unknown-plan9
+ echo "$UNAME_MACHINE"-unknown-plan9
exit ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
@@ -1332,14 +1435,14 @@ EOF
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
+ echo mips-sei-seiux"$UNAME_RELEASE"
exit ;;
*:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
exit ;;
*:*VMS:*:*)
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
+ case "$UNAME_MACHINE" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
V*) echo vax-dec-vms ; exit ;;
@@ -1348,24 +1451,39 @@ EOF
echo i386-pc-xenix
exit ;;
i*86:skyos:*:*)
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
exit ;;
i*86:rdos:*:*)
- echo ${UNAME_MACHINE}-pc-rdos
+ echo "$UNAME_MACHINE"-pc-rdos
exit ;;
i*86:AROS:*:*)
- echo ${UNAME_MACHINE}-pc-aros
+ echo "$UNAME_MACHINE"-pc-aros
exit ;;
x86_64:VMkernel:*:*)
- echo ${UNAME_MACHINE}-unknown-esx
+ echo "$UNAME_MACHINE"-unknown-esx
+ exit ;;
+ amd64:Isilon\ OneFS:*:*)
+ echo x86_64-unknown-onefs
+ exit ;;
+ *:Unleashed:*:*)
+ echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
exit ;;
esac
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
+# No uname command or uname output not recognized.
+set_cc_for_build
+cat > "$dummy.c" <<EOF
#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
+#include <sys/types.h>
+#include <sys/utsname.h>
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#include <signal.h>
+#if defined(_SIZE_T_) || defined(SIGLOST)
+#include <sys/utsname.h>
+#endif
+#endif
#endif
main ()
{
@@ -1378,22 +1496,14 @@ main ()
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
- "4"
+ "4"
#else
- ""
+ ""
#endif
- ); exit (0);
+ ); exit (0);
#endif
#endif
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
#if defined (NeXT)
#if !defined (__ARCHITECTURE__)
#define __ARCHITECTURE__ "m68k"
@@ -1433,39 +1543,54 @@ main ()
#endif
#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
+ struct utsname un;
+ uname(&un);
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
#endif
#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# if defined (BSD)
-# if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-# else
-# if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# endif
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# else
- printf ("vax-dec-ultrix\n"); exit (0);
-# endif
+#if !defined (ultrix)
+#include <sys/param.h>
+#if defined (BSD)
+#if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+#else
+#if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#endif
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#else
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname un;
+ uname (&un);
+ printf ("vax-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname *un;
+ uname (&un);
+ printf ("mips-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("mips-dec-ultrix\n"); exit (0);
+#endif
+#endif
#endif
#if defined (alliant) && defined (i860)
@@ -1476,54 +1601,38 @@ main ()
}
EOF
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&
{ echo "$SYSTEM_NAME"; exit; }
# Apollos put the system type in the environment.
+test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+echo "$0: unable to guess system type" >&2
-# Convex versions that predate uname can use getsysinfo(1)
+case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+ mips:Linux | mips64:Linux)
+ # If we got here on MIPS GNU/Linux, output extra information.
+ cat >&2 <<EOF
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- c34*)
- echo c34-convex-bsd
- exit ;;
- c38*)
- echo c38-convex-bsd
- exit ;;
- c4*)
- echo c4-convex-bsd
- exit ;;
- esac
-fi
+NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
+the system type. Please install a C compiler and try again.
+EOF
+ ;;
+esac
cat >&2 <<EOF
-$0: unable to guess system type
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
+This script (version $timestamp), has failed to recognize the
+operating system you are using. If your script is old, overwrite *all*
+copies of config.guess and config.sub with the latest versions from:
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+ https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
and
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+ https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-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.
+If $0 has already been updated, send the following data and any
+information you think might be pertinent to config-patches@gnu.org to
+provide the necessary information to handle your system.
config.guess timestamp = $timestamp
@@ -1542,16 +1651,16 @@ hostinfo = `(hostinfo) 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}
+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)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
diff --git a/config.sub b/config.sub
index 61cb4bc22db8..0f2234c174d4 100755
--- a/config.sub
+++ b/config.sub
@@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2013 Free Software Foundation, Inc.
+# Copyright 1992-2019 Free Software Foundation, Inc.
-timestamp='2013-10-01'
+timestamp='2019-06-30'
# 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
@@ -15,7 +15,7 @@ timestamp='2013-10-01'
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -25,7 +25,7 @@ timestamp='2013-10-01'
# of the GNU General Public License, version 3 ("GPLv3").
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# 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.
@@ -33,7 +33,7 @@ timestamp='2013-10-01'
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
@@ -53,12 +53,11 @@ timestamp='2013-10-01'
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
- $0 [OPTION] ALIAS
+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
Canonicalize a configuration name.
-Operation modes:
+Options:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
@@ -68,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -90,12 +89,12 @@ while test $# -gt 0 ; do
- ) # Use stdin as input.
break ;;
-* )
- echo "$me: invalid option $1$help"
+ echo "$me: invalid option $1$help" >&2
exit 1 ;;
*local*)
# First pass through any local machine types.
- echo $1
+ echo "$1"
exit ;;
* )
@@ -111,1211 +110,1164 @@ case $# in
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
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | \
- kopensolaris*-gnu* | \
- storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- android-linux)
- os=-linux-android
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
+# Split fields of configuration type
+# shellcheck disable=SC2162
+IFS="-" read field1 field2 field3 field4 <<EOF
+$1
+EOF
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze*)
- os=
- basic_machine=$1
- ;;
- -bluegene*)
- os=-cnk
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco6)
- os=-sco5v6
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- 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/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*178)
- os=-lynxos178
- ;;
- -lynx*5)
- os=-lynxos5
- ;;
- -lynx*)
- os=-lynxos
+# Separate into logical components for further validation
+case $1 in
+ *-*-*-*-*)
+ echo Invalid configuration \`"$1"\': more than four components >&2
+ exit 1
;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ *-*-*-*)
+ basic_machine=$field1-$field2
+ os=$field3-$field4
;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ *-*-*)
+ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
+ # parts
+ maybe_os=$field2-$field3
+ case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
+ | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
+ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
+ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
+ | storm-chaos* | os2-emx* | rtmk-nova*)
+ basic_machine=$field1
+ os=$maybe_os
+ ;;
+ android-linux)
+ basic_machine=$field1-unknown
+ os=linux-android
+ ;;
+ *)
+ basic_machine=$field1-$field2
+ os=$field3
+ ;;
+ esac
;;
- -psos*)
- os=-psos
+ *-*)
+ # A lone config we happen to match not fitting any pattern
+ case $field1-$field2 in
+ decstation-3100)
+ basic_machine=mips-dec
+ os=
+ ;;
+ *-*)
+ # Second component is usually, but not always the OS
+ case $field2 in
+ # Prevent following clause from handling this valid os
+ sun*os*)
+ basic_machine=$field1
+ os=$field2
+ ;;
+ # Manufacturers
+ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
+ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
+ | unicom* | ibm* | next | hp | isi* | apollo | altos* \
+ | convergent* | ncr* | news | 32* | 3600* | 3100* \
+ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
+ | ultra | tti* | harris | dolphin | highlevel | gould \
+ | cbm | ns | masscomp | apple | axis | knuth | cray \
+ | microblaze* | sim | cisco \
+ | oki | wec | wrs | winbond)
+ basic_machine=$field1-$field2
+ os=
+ ;;
+ *)
+ basic_machine=$field1
+ os=$field2
+ ;;
+ esac
+ ;;
+ esac
;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
+ *)
+ # Convert single-component short-hands not valid as part of
+ # multi-component configurations.
+ case $field1 in
+ 386bsd)
+ basic_machine=i386-pc
+ os=bsd
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=udi
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=scout
+ ;;
+ alliant)
+ basic_machine=fx80-alliant
+ os=
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ os=
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=bsd
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=sysv
+ ;;
+ amiga)
+ basic_machine=m68k-unknown
+ os=
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ os=aros
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=linux
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=bsd
+ ;;
+ cray)
+ basic_machine=j90-cray
+ os=unicos
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ os=
+ ;;
+ da30)
+ basic_machine=m68k-da30
+ os=
+ ;;
+ decstation | pmax | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ os=
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ os=dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=msdosdjgpp
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=ebmon
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=ose
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=go32
+ ;;
+ h8300hms)
+ 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
+ ;;
+ hp300 | hp300hpux)
+ basic_machine=m68k-hp
+ os=hpux
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=bsd
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=proelf
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=mach
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=sysv
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=linux
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=sysv
+ ;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=mingw64
+ ;;
+ mingw32)
+ basic_machine=i686-pc
+ os=mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=mingw32ce
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=morphos
+ ;;
+ moxiebox)
+ basic_machine=moxie-unknown
+ os=moxiebox
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=msdos
+ ;;
+ msys)
+ basic_machine=i686-pc
+ os=msys
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=mvs
+ ;;
+ nacl)
+ basic_machine=le32-unknown
+ os=nacl
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-pc
+ os=netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=sysv
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=nonstopux
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=os68k
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=linux
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=pw32
+ ;;
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=rdos
+ ;;
+ rdos32)
+ basic_machine=i386-pc
+ os=rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=coff
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=udi
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ os=
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=sysv2
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ os=
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ os=
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=sunos4
+ ;;
+ sun3)
+ basic_machine=m68k-sun
+ os=
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=sunos4
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ os=
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=solaris2
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ os=
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=unicos
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=tops20
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=vms
+ ;;
+ vsta)
+ basic_machine=i386-pc
+ os=vsta
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=vxworks
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=mingw32
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=unicos
+ ;;
+ *)
+ basic_machine=$1
+ os=
+ ;;
+ esac
;;
esac
-# Decode aliases for certain CPU-COMPANY combinations.
+# Decode 1-component or ad-hoc basic machines
case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | aarch64 | aarch64_be \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arceb \
- | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
- | avr | avr32 \
- | be32 | be64 \
- | bfin \
- | c4x | c8051 | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | epiphany \
- | fido | fr30 | frv \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | hexagon \
- | i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
- | k1om \
- | le32 | le64 \
- | lm32 \
- | m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64octeon | mips64octeonel \
- | mips64orion | mips64orionel \
- | mips64r5900 | mips64r5900el \
- | mips64vr | mips64vrel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mips64vr5900 | mips64vr5900el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipsr5900 | mipsr5900el \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | moxie \
- | mt \
- | msp430 \
- | nds32 | nds32le | nds32be \
- | nios | nios2 | nios2eb | nios2el \
- | ns16k | ns32k \
- | open8 \
- | or1k | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle \
- | pyramid \
- | rl78 | rx \
- | score \
- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu \
- | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
- | ubicom32 \
- | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
- | we32k \
- | x86 | xc16x | xstormy16 | xtensa \
- | z8k | z80)
- basic_machine=$basic_machine-unknown
- ;;
- c54x)
- basic_machine=tic54x-unknown
- ;;
- c55x)
- basic_machine=tic55x-unknown
- ;;
- c6x)
- basic_machine=tic6x-unknown
- ;;
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
- ms1)
- basic_machine=mt-unknown
+ # 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)
+ cpu=hppa1.1
+ vendor=winbond
;;
-
- strongarm | thumb | xscale)
- basic_machine=arm-unknown
+ op50n)
+ cpu=hppa1.1
+ vendor=oki
;;
- xgate)
- basic_machine=$basic_machine-unknown
- os=-none
+ op60c)
+ cpu=hppa1.1
+ vendor=oki
;;
- xscaleeb)
- basic_machine=armeb-unknown
+ ibm*)
+ cpu=i370
+ vendor=ibm
;;
-
- xscaleel)
- basic_machine=armel-unknown
+ orion105)
+ cpu=clipper
+ vendor=highlevel
;;
-
- # 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*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
+ mac | mpw | mac-mpw)
+ cpu=m68k
+ vendor=apple
;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | aarch64-* | aarch64_be-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* | avr32-* \
- | be32-* | be64-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* \
- | c8051-* | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | elxsi-* \
- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | hexagon-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
- | k1om-* \
- | le32-* | le64-* \
- | lm32-* \
- | m32c-* | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
- | microblaze-* | microblazeel-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
- | mips64octeon-* | mips64octeonel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64r5900-* | mips64r5900el-* \
- | mips64vr-* | mips64vrel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mips64vr5900-* | mips64vr5900el-* \
- | mipsisa32-* | mipsisa32el-* \
- | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipsr5900-* | mipsr5900el-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | mt-* \
- | msp430-* \
- | nds32-* | nds32le-* | nds32be-* \
- | nios-* | nios2-* | nios2eb-* | nios2el-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | open8-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
- | pyramid-* \
- | rl78-* | romp-* | rs6000-* | rx-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
- | sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
- | tahoe-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tile*-* \
- | tron-* \
- | ubicom32-* \
- | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
- | vax-* \
- | we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* \
- | xstormy16-* | xtensa*-* \
- | ymp-* \
- | z8k-* | z80-*)
- ;;
- # Recognize the basic CPU types without company name, with glob match.
- xtensa*)
- basic_machine=$basic_machine-unknown
+ pmac | pmac-mpw)
+ cpu=powerpc
+ vendor=apple
;;
+
# 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
+ cpu=m68000
+ vendor=att
;;
3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- abacus)
- basic_machine=abacus-unknown
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amd64)
- basic_machine=x86_64-pc
- ;;
- amd64-*)
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aros)
- basic_machine=i386-pc
- os=-aros
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- blackfin)
- basic_machine=bfin-unknown
- os=-linux
- ;;
- blackfin-*)
- basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
+ cpu=we32k
+ vendor=att
;;
bluegene*)
- basic_machine=powerpc-ibm
- os=-cnk
- ;;
- c54x-*)
- basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- c55x-*)
- basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- c6x-*)
- basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- cegcc)
- basic_machine=arm-unknown
- os=-cegcc
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- craynv)
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
- cr16 | cr16-*)
- basic_machine=cr16-unknown
- os=-elf
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- crisv32 | crisv32-* | etraxfs*)
- basic_machine=crisv32-axis
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- crx)
- basic_machine=crx-unknown
- os=-elf
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
+ cpu=powerpc
+ vendor=ibm
+ os=cnk
;;
decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
+ cpu=pdp10
+ vendor=dec
+ os=tops10
;;
decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
+ cpu=pdp10
+ vendor=dec
+ os=tops20
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- dicos)
- basic_machine=i686-pc
- os=-dicos
+ cpu=m68k
+ vendor=motorola
;;
- djgpp)
- basic_machine=i586-pc
- os=-msdosdjgpp
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
+ dpx2*)
+ cpu=m68k
+ vendor=bull
+ os=sysv3
;;
encore | umax | mmax)
- basic_machine=ns32k-encore
+ cpu=ns32k
+ vendor=encore
;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
+ elxsi)
+ cpu=elxsi
+ vendor=elxsi
+ os=${os:-bsd}
;;
fx2800)
- basic_machine=i860-alliant
+ cpu=i860
+ vendor=alliant
;;
genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
+ cpu=ns32k
+ vendor=ns
;;
h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- 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
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
+ cpu=hppa1.1
+ vendor=hitachi
+ os=hiuxwe2
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
+ cpu=hppa1.0
+ vendor=hp
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
+ cpu=m68000
+ vendor=hp
;;
hp9k3[2-9][0-9])
- basic_machine=m68k-hp
+ cpu=m68k
+ vendor=hp
;;
hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
+ cpu=hppa1.0
+ vendor=hp
;;
hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k78[0-9] | hp78[0-9])
# FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=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
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- 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
+ cpu=hppa1.0
+ vendor=hp
;;
i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=sysv32
;;
i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=sysv4
;;
i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=sysv
;;
i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=solaris2
;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
+ j90 | j90-cray)
+ cpu=j90
+ vendor=cray
+ os=${os:-unicos}
;;
iris | iris4d)
- basic_machine=mips-sgi
+ cpu=mips
+ vendor=sgi
case $os in
- -irix*)
+ irix*)
;;
*)
- os=-irix4
+ os=irix4
;;
esac
;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- m68knommu)
- basic_machine=m68k-unknown
- os=-linux
- ;;
- m68knommu-*)
- basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- microblaze*)
- basic_machine=microblaze-xilinx
- ;;
- mingw64)
- basic_machine=x86_64-pc
- os=-mingw64
- ;;
- mingw32)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- mingw32ce)
- basic_machine=arm-unknown
- os=-mingw32ce
- ;;
miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- ms1-*)
- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
- ;;
- msys)
- basic_machine=i686-pc
- os=-msys
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- nacl)
- basic_machine=le32-unknown
- os=-nacl
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
+ cpu=m68000
+ vendor=convergent
;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
+ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ cpu=m68k
+ vendor=atari
+ os=mint
;;
news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
+ cpu=mips
+ vendor=sony
+ os=newsos
;;
- next | m*-next )
- basic_machine=m68k-next
+ next | m*-next)
+ cpu=m68k
+ vendor=next
case $os in
- -nextstep* )
+ openstep*)
+ ;;
+ nextstep*)
;;
- -ns2*)
- os=-nextstep2
+ ns2*)
+ os=nextstep2
;;
*)
- os=-nextstep3
+ os=nextstep3
;;
esac
;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
np1)
- basic_machine=np1-gould
- ;;
- neo-tandem)
- basic_machine=neo-tandem
- ;;
- nse-tandem)
- basic_machine=nse-tandem
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
+ cpu=np1
+ vendor=gould
;;
op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- openrisc | openrisc-*)
- basic_machine=or32-unknown
- ;;
- os400)
- basic_machine=powerpc-ibm
- os=-os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
+ cpu=hppa1.1
+ vendor=oki
+ os=proelf
;;
pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- parisc)
- basic_machine=hppa-unknown
- os=-linux
- ;;
- parisc-*)
- basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
+ cpu=hppa1.1
+ vendor=hitachi
+ os=hiuxwe2
;;
pbd)
- basic_machine=sparc-tti
+ cpu=sparc
+ vendor=tti
;;
pbb)
- basic_machine=m68k-tti
+ cpu=m68k
+ vendor=tti
;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pc98)
- basic_machine=i386-pc
- ;;
- pc98-*)
- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2 | pentiumiii | pentium3)
- basic_machine=i686-pc
- ;;
- pentium4)
- basic_machine=i786-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium4-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ pc532)
+ cpu=ns32k
+ vendor=pc532
;;
pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
+ cpu=pn
+ vendor=gould
;;
- ppc | ppcbe) basic_machine=powerpc-unknown
- ;;
- ppc-* | ppcbe-*)
- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
- ;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64le | powerpc64little | ppc64-le | powerpc64-little)
- basic_machine=powerpc64le-unknown
- ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ power)
+ cpu=power
+ vendor=ibm
;;
ps2)
- basic_machine=i386-ibm
- ;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
- ;;
- rdos | rdos64)
- basic_machine=x86_64-pc
- os=-rdos
- ;;
- rdos32)
- basic_machine=i386-pc
- os=-rdos
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
+ cpu=i386
+ vendor=ibm
;;
rm[46]00)
- basic_machine=mips-siemens
+ cpu=mips
+ vendor=siemens
;;
rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- s390 | s390-*)
- basic_machine=s390-ibm
- ;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
+ cpu=romp
+ vendor=ibm
;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
+ sde)
+ cpu=mipsisa32
+ vendor=sde
+ os=${os:-elf}
;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
+ simso-wrs)
+ cpu=sparclite
+ vendor=wrs
+ os=vxworks
;;
- sde)
- basic_machine=mipsisa32-sde
- os=-elf
+ tower | tower-32)
+ cpu=m68k
+ vendor=ncr
;;
- sei)
- basic_machine=mips-sei
- os=-seiux
+ vpp*|vx|vx-*)
+ cpu=f301
+ vendor=fujitsu
;;
- sequent)
- basic_machine=i386-sequent
+ w65)
+ cpu=w65
+ vendor=wdc
;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
+ w89k-*)
+ cpu=hppa1.1
+ vendor=winbond
+ os=proelf
;;
- sh5el)
- basic_machine=sh5le-unknown
+ none)
+ cpu=none
+ vendor=none
;;
- sh64)
- basic_machine=sh64-unknown
+ leon|leon[3-9])
+ cpu=sparc
+ vendor=$basic_machine
;;
- sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
+ leon-*|leon[3-9]-*)
+ cpu=sparc
+ vendor=`echo "$basic_machine" | sed 's/-.*//'`
;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
+
+ *-*)
+ # shellcheck disable=SC2162
+ IFS="-" read cpu vendor <<EOF
+$basic_machine
+EOF
;;
- spur)
- basic_machine=spur-unknown
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ cpu=$basic_machine
+ vendor=pc
;;
- st2000)
- basic_machine=m68k-tandem
+ # These rules are duplicated from below for sake of the special case above;
+ # i.e. things that normalized to x86 arches should also default to "pc"
+ pc98)
+ cpu=i386
+ vendor=pc
;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
+ x64 | amd64)
+ cpu=x86_64
+ vendor=pc
;;
- strongarm-* | thumb-*)
- basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ # Recognize the basic CPU types without company name.
+ *)
+ cpu=$basic_machine
+ vendor=unknown
;;
- sun2)
- basic_machine=m68000-sun
+esac
+
+unset -v basic_machine
+
+# Decode basic machines in the full and proper CPU-Company form.
+case $cpu-$vendor in
+ # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
+ # some cases the only manufacturer, in others, it is the most popular.
+ craynv-unknown)
+ vendor=cray
+ os=${os:-unicosmp}
;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
+ c90-unknown | c90-cray)
+ vendor=cray
+ os=${os:-unicos}
;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
+ fx80-unknown)
+ vendor=alliant
;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
+ romp-unknown)
+ vendor=ibm
;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
+ mmix-unknown)
+ vendor=knuth
;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
+ microblaze-unknown | microblazeel-unknown)
+ vendor=xilinx
;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
+ rs6000-unknown)
+ vendor=ibm
;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
+ vax-unknown)
+ vendor=dec
;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
+ pdp11-unknown)
+ vendor=dec
;;
- sun4)
- basic_machine=sparc-sun
+ we32k-unknown)
+ vendor=att
;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
+ cydra-unknown)
+ vendor=cydrome
;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
+ i370-ibm*)
+ vendor=ibm
;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
+ orion-unknown)
+ vendor=highlevel
;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
+ xps-unknown | xps100-unknown)
+ cpu=xps100
+ vendor=honeywell
;;
- t90)
- basic_machine=t90-cray
- os=-unicos
+
+ # Here we normalize CPU types with a missing or matching vendor
+ dpx20-unknown | dpx20-bull)
+ cpu=rs6000
+ vendor=bull
+ os=${os:-bosx}
;;
- tile*)
- basic_machine=$basic_machine-unknown
- os=-linux-gnu
+
+ # Here we normalize CPU types irrespective of the vendor
+ amd64-*)
+ cpu=x86_64
;;
- tx39)
- basic_machine=mipstx39-unknown
+ blackfin-*)
+ cpu=bfin
+ os=linux
;;
- tx39el)
- basic_machine=mipstx39el-unknown
+ c54x-*)
+ cpu=tic54x
;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
+ c55x-*)
+ cpu=tic55x
;;
- tower | tower-32)
- basic_machine=m68k-ncr
+ c6x-*)
+ cpu=tic6x
;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
+ e500v[12]-*)
+ cpu=powerpc
+ os=$os"spe"
;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
+ mips3*-*)
+ cpu=mips64
;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
+ ms1-*)
+ cpu=mt
;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
+ m68knommu-*)
+ cpu=m68k
+ os=linux
;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
+ m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
+ cpu=s12z
;;
- vms)
- basic_machine=vax-dec
- os=-vms
+ openrisc-*)
+ cpu=or32
;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
+ parisc-*)
+ cpu=hppa
+ os=linux
;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ cpu=i586
;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
+ pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+ cpu=i686
;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ cpu=i686
;;
- w65*)
- basic_machine=w65-wdc
- os=-none
+ pentium4-*)
+ cpu=i786
;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
+ pc98-*)
+ cpu=i386
;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
+ ppc-* | ppcbe-*)
+ cpu=powerpc
;;
- xps | xps100)
- basic_machine=xps100-honeywell
+ ppcle-* | powerpclittle-*)
+ cpu=powerpcle
;;
- xscale-* | xscalee[bl]-*)
- basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ppc64-*)
+ cpu=powerpc64
;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
+ ppc64le-* | powerpc64little-*)
+ cpu=powerpc64le
;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
+ sb1-*)
+ cpu=mipsisa64sb1
;;
- z80-*-coff)
- basic_machine=z80-unknown
- os=-sim
+ sb1el-*)
+ cpu=mipsisa64sb1el
;;
- none)
- basic_machine=none-none
- os=-none
+ sh5e[lb]-*)
+ cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
;;
-
-# 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
+ spur-*)
+ cpu=spur
;;
- op50n)
- basic_machine=hppa1.1-oki
+ strongarm-* | thumb-*)
+ cpu=arm
;;
- op60c)
- basic_machine=hppa1.1-oki
+ tx39-*)
+ cpu=mipstx39
;;
- romp)
- basic_machine=romp-ibm
+ tx39el-*)
+ cpu=mipstx39el
;;
- mmix)
- basic_machine=mmix-knuth
+ x64-*)
+ cpu=x86_64
;;
- rs6000)
- basic_machine=rs6000-ibm
+ xscale-* | xscalee[bl]-*)
+ cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
;;
- vax)
- basic_machine=vax-dec
+
+ # Recognize the canonical CPU Types that limit and/or modify the
+ # company names they are paired with.
+ cr16-*)
+ os=${os:-elf}
;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
+ crisv32-* | etraxfs*-*)
+ cpu=crisv32
+ vendor=axis
;;
- pdp11)
- basic_machine=pdp11-dec
+ cris-* | etrax*-*)
+ cpu=cris
+ vendor=axis
;;
- we32k)
- basic_machine=we32k-att
+ crx-*)
+ os=${os:-elf}
;;
- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
+ neo-tandem)
+ cpu=neo
+ vendor=tandem
;;
- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
- basic_machine=sparc-sun
+ nse-tandem)
+ cpu=nse
+ vendor=tandem
;;
- cydra)
- basic_machine=cydra-cydrome
+ nsr-tandem)
+ cpu=nsr
+ vendor=tandem
;;
- orion)
- basic_machine=orion-highlevel
+ nsv-tandem)
+ cpu=nsv
+ vendor=tandem
;;
- orion105)
- basic_machine=clipper-highlevel
+ nsx-tandem)
+ cpu=nsx
+ vendor=tandem
;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
+ s390-*)
+ cpu=s390
+ vendor=ibm
;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
+ s390x-*)
+ cpu=s390x
+ vendor=ibm
;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
+ tile*-*)
+ os=${os:-linux-gnu}
;;
+
*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
+ # Recognize the canonical CPU types that are allowed with any
+ # company name.
+ case $cpu in
+ 1750a | 580 \
+ | a29k \
+ | aarch64 | aarch64_be \
+ | abacus \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
+ | alphapca5[67] | alpha64pca5[67] \
+ | am33_2.0 \
+ | amdgcn \
+ | arc | arceb \
+ | arm | arm[lb]e | arme[lb] | armv* \
+ | avr | avr32 \
+ | asmjs \
+ | ba \
+ | be32 | be64 \
+ | bfin | bpf | bs2000 \
+ | c[123]* | c30 | [cjt]90 | c4x \
+ | c8051 | clipper | craynv | csky | cydra \
+ | d10v | d30v | dlx | dsp16xx \
+ | e2k | elxsi | epiphany \
+ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+ | h8300 | h8500 \
+ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
+ | i370 | i*86 | i860 | i960 | ia16 | ia64 \
+ | ip2k | iq2000 \
+ | k1om \
+ | le32 | le64 \
+ | lm32 \
+ | m32c | m32r | m32rle \
+ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64eb | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r6 | mipsisa32r6el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r6 | mipsisa64r6el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
+ | mipstx39 | mipstx39el \
+ | mmix \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nds32 | nds32le | nds32be \
+ | nfp \
+ | nios | nios2 | nios2eb | nios2el \
+ | none | np1 | ns16k | ns32k | nvptx \
+ | open8 \
+ | or1k* \
+ | or32 \
+ | orion \
+ | picochip \
+ | pdp10 | pdp11 | pj | pjl | pn | power \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
+ | pru \
+ | pyramid \
+ | riscv | riscv32 | riscv64 \
+ | rl78 | romp | rs6000 | rx \
+ | score \
+ | sh | shl \
+ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
+ | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
+ | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
+ | spu \
+ | tahoe \
+ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
+ | tron \
+ | ubicom32 \
+ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+ | vax \
+ | visium \
+ | w65 \
+ | wasm32 | wasm64 \
+ | we32k \
+ | x86 | x86_64 | xc16x | xgate | xps100 \
+ | xstormy16 | xtensa* \
+ | ymp \
+ | z8k | z80)
+ ;;
+
+ *)
+ echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+ exit 1
+ ;;
+ esac
;;
esac
# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+case $vendor in
+ digital*)
+ vendor=dec
;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ commodore*)
+ vendor=cbm
;;
*)
;;
@@ -1323,197 +1275,244 @@ esac
# Decode manufacturer-specific aliases for certain operating systems.
-if [ x"$os" != x"" ]
+if [ x$os != x ]
then
case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -auroraux)
- os=-auroraux
+ # First match some system type aliases that might get confused
+ # with valid system types.
+ # solaris* is a basic system type, with this one exception.
+ auroraux)
+ os=auroraux
;;
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ bluegene*)
+ os=cnk
;;
- -solaris)
- os=-solaris2
+ solaris1 | solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
- -svr4*)
- os=-sysv4
+ solaris)
+ os=solaris2
;;
- -unixware*)
- os=-sysv4.2uw
+ unixware*)
+ os=sysv4.2uw
;;
- -gnu/linux*)
+ gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
;;
- # First accept the basic system types.
+ # es1800 is here to avoid being matched by es* (a different OS)
+ es1800*)
+ os=ose
+ ;;
+ # Some version numbers need modification
+ chorusos*)
+ os=chorusos
+ ;;
+ isc)
+ os=isc2.2
+ ;;
+ sco6)
+ os=sco5v6
+ ;;
+ sco5)
+ os=sco3.2v5
+ ;;
+ sco4)
+ os=sco3.2v4
+ ;;
+ sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ ;;
+ sco3.2v[4-9]* | sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ ;;
+ scout)
+ # Don't match below
+ ;;
+ sco*)
+ os=sco3.2v2
+ ;;
+ psos*)
+ os=psos
+ ;;
+ # Now accept the basic system types.
# The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* | -plan9* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* | -aros* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -bitrig* | -openbsd* | -solidbsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* | -cegcc* \
- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-musl* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+ # Each alternative MUST end in a * to match a version number.
+ # sysv* is not here because it comes later, after sysvr4.
+ gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+ | sym* | kopensolaris* | plan9* \
+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+ | aos* | aros* | cloudabi* | sortix* | twizzler* \
+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+ | knetbsd* | mirbsd* | netbsd* \
+ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
+ | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+ | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
+ | chorusrdb* | cegcc* | glidix* \
+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+ | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
+ | linux-newlib* | linux-musl* | linux-uclibc* \
+ | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+ | interix* | uwin* | mks* | rhapsody* | darwin* \
+ | openstep* | oskit* | conix* | pw32* | nonstopux* \
+ | storm-chaos* | tops10* | tenex* | tops20* | its* \
+ | os2* | vos* | palmos* | uclinux* | nucleus* \
+ | morphos* | superux* | rtmk* | windiss* \
+ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+ | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
+ | nsk* | powerunix)
# Remember, each alternative MUST END IN *, to match a version number.
;;
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
+ qnx*)
+ case $cpu in
+ x86 | i*86)
;;
*)
- os=-nto$os
+ os=nto-$os
;;
esac
;;
- -nto-qnx*)
+ hiux*)
+ os=hiuxwe2
;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ nto-qnx*)
;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
+ sim | xray | os68k* | v88r* \
+ | windows* | osx | abug | netware* | os9* \
+ | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
;;
- -linux-dietlibc)
- os=-linux-dietlibc
+ linux-dietlibc)
+ os=linux-dietlibc
;;
- -linux*)
+ linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ lynx*178)
+ os=lynxos178
;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ lynx*5)
+ os=lynxos5
;;
- -opened*)
- os=-openedition
+ lynx*)
+ os=lynxos
;;
- -os400*)
- os=-os400
+ mac*)
+ os=`echo "$os" | sed -e 's|mac|macos|'`
;;
- -wince*)
- os=-wince
+ opened*)
+ os=openedition
;;
- -osfrose*)
- os=-osfrose
+ os400*)
+ os=os400
;;
- -osf*)
- os=-osf
+ sunos5*)
+ os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
;;
- -utek*)
- os=-bsd
+ sunos6*)
+ os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
;;
- -dynix*)
- os=-bsd
+ wince*)
+ os=wince
;;
- -acis*)
- os=-aos
+ utek*)
+ os=bsd
;;
- -atheos*)
- os=-atheos
+ dynix*)
+ os=bsd
;;
- -syllable*)
- os=-syllable
+ acis*)
+ os=aos
;;
- -386bsd)
- os=-bsd
+ atheos*)
+ os=atheos
;;
- -ctix* | -uts*)
- os=-sysv
+ syllable*)
+ os=syllable
;;
- -nova*)
- os=-rtmk-nova
+ 386bsd)
+ os=bsd
+ ;;
+ ctix* | uts*)
+ os=sysv
;;
- -ns2 )
- os=-nextstep2
+ nova*)
+ os=rtmk-nova
;;
- -nsk*)
- os=-nsk
+ ns2)
+ os=nextstep2
;;
# Preserve the version number of sinix5.
- -sinix5.*)
+ sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'`
;;
- -sinix*)
- os=-sysv4
+ sinix*)
+ os=sysv4
;;
- -tpf*)
- os=-tpf
+ tpf*)
+ os=tpf
;;
- -triton*)
- os=-sysv3
+ triton*)
+ os=sysv3
;;
- -oss*)
- os=-sysv3
+ oss*)
+ os=sysv3
;;
- -svr4)
- os=-sysv4
+ svr4*)
+ os=sysv4
;;
- -svr3)
- os=-sysv3
+ svr3)
+ os=sysv3
;;
- -sysvr4)
- os=-sysv4
+ sysvr4)
+ os=sysv4
;;
- # This must come after -sysvr4.
- -sysv*)
+ # This must come after sysvr4.
+ sysv*)
;;
- -ose*)
- os=-ose
+ ose*)
+ os=ose
;;
- -es1800*)
- os=-ose
+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+ os=mint
;;
- -xenix)
- os=-xenix
+ zvmoe)
+ os=zvmoe
;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
+ dicos*)
+ os=dicos
;;
- -aros*)
- os=-aros
+ pikeos*)
+ # Until real need of OS specific support for
+ # particular features comes up, bare metal
+ # configurations are quite functional.
+ case $cpu in
+ arm*)
+ os=eabi
+ ;;
+ *)
+ os=elf
+ ;;
+ esac
;;
- -zvmoe)
- os=-zvmoe
+ nacl*)
;;
- -dicos*)
- os=-dicos
+ ios)
;;
- -nacl*)
+ none)
;;
- -none)
+ *-eabi)
;;
*)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
exit 1
;;
esac
@@ -1529,264 +1528,265 @@ else
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
-case $basic_machine in
+case $cpu-$vendor in
score-*)
- os=-elf
+ os=elf
;;
spu-*)
- os=-elf
+ os=elf
;;
*-acorn)
- os=-riscix1.2
+ os=riscix1.2
;;
arm*-rebel)
- os=-linux
+ os=linux
;;
arm*-semi)
- os=-aout
+ os=aout
;;
c4x-* | tic4x-*)
- os=-coff
+ os=coff
;;
c8051-*)
- os=-elf
+ os=elf
+ ;;
+ clipper-intergraph)
+ os=clix
;;
hexagon-*)
- os=-elf
+ os=elf
;;
tic54x-*)
- os=-coff
+ os=coff
;;
tic55x-*)
- os=-coff
+ os=coff
;;
tic6x-*)
- os=-coff
+ os=coff
;;
# This must come before the *-dec entry.
pdp10-*)
- os=-tops20
+ os=tops20
;;
pdp11-*)
- os=-none
+ os=none
;;
*-dec | vax-*)
- os=-ultrix4.2
+ os=ultrix4.2
;;
m68*-apollo)
- os=-domain
+ os=domain
;;
i386-sun)
- os=-sunos4.0.2
+ os=sunos4.0.2
;;
m68000-sun)
- os=-sunos3
+ os=sunos3
;;
m68*-cisco)
- os=-aout
+ os=aout
;;
mep-*)
- os=-elf
+ os=elf
;;
mips*-cisco)
- os=-elf
+ os=elf
;;
mips*-*)
- os=-elf
- ;;
- or1k-*)
- os=-elf
+ os=elf
;;
or32-*)
- os=-coff
+ os=coff
;;
*-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
+ os=sysv3
;;
sparc-* | *-sun)
- os=-sunos4.1.1
+ os=sunos4.1.1
;;
- *-be)
- os=-beos
+ pru-*)
+ os=elf
;;
- *-haiku)
- os=-haiku
+ *-be)
+ os=beos
;;
*-ibm)
- os=-aix
+ os=aix
;;
*-knuth)
- os=-mmixware
+ os=mmixware
;;
*-wec)
- os=-proelf
+ os=proelf
;;
*-winbond)
- os=-proelf
+ os=proelf
;;
*-oki)
- os=-proelf
+ os=proelf
;;
*-hp)
- os=-hpux
+ os=hpux
;;
*-hitachi)
- os=-hiux
+ os=hiux
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
+ os=sysv
;;
*-cbm)
- os=-amigaos
+ os=amigaos
;;
*-dg)
- os=-dgux
+ os=dgux
;;
*-dolphin)
- os=-sysv3
+ os=sysv3
;;
m68k-ccur)
- os=-rtu
+ os=rtu
;;
m88k-omron*)
- os=-luna
+ os=luna
;;
- *-next )
- os=-nextstep
+ *-next)
+ os=nextstep
;;
*-sequent)
- os=-ptx
+ os=ptx
;;
*-crds)
- os=-unos
+ os=unos
;;
*-ns)
- os=-genix
+ os=genix
;;
i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
+ os=mvs
;;
*-gould)
- os=-sysv
+ os=sysv
;;
*-highlevel)
- os=-bsd
+ os=bsd
;;
*-encore)
- os=-bsd
+ os=bsd
;;
*-sgi)
- os=-irix
+ os=irix
;;
*-siemens)
- os=-sysv4
+ os=sysv4
;;
*-masscomp)
- os=-rtu
+ os=rtu
;;
f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
+ os=uxpv
;;
*-rom68k)
- os=-coff
+ os=coff
;;
*-*bug)
- os=-coff
+ os=coff
;;
*-apple)
- os=-macos
+ os=macos
;;
*-atari*)
- os=-mint
+ os=mint
+ ;;
+ *-wrs)
+ os=vxworks
;;
*)
- os=-none
+ os=none
;;
esac
fi
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
+case $vendor in
+ unknown)
case $os in
- -riscix*)
+ riscix*)
vendor=acorn
;;
- -sunos*)
+ sunos*)
vendor=sun
;;
- -cnk*|-aix*)
+ cnk*|-aix*)
vendor=ibm
;;
- -beos*)
+ beos*)
vendor=be
;;
- -hpux*)
+ hpux*)
vendor=hp
;;
- -mpeix*)
+ mpeix*)
vendor=hp
;;
- -hiux*)
+ hiux*)
vendor=hitachi
;;
- -unos*)
+ unos*)
vendor=crds
;;
- -dgux*)
+ dgux*)
vendor=dg
;;
- -luna*)
+ luna*)
vendor=omron
;;
- -genix*)
+ genix*)
vendor=ns
;;
- -mvs* | -opened*)
+ clix*)
+ vendor=intergraph
+ ;;
+ mvs* | opened*)
vendor=ibm
;;
- -os400*)
+ os400*)
vendor=ibm
;;
- -ptx*)
+ ptx*)
vendor=sequent
;;
- -tpf*)
+ tpf*)
vendor=ibm
;;
- -vxsim* | -vxworks* | -windiss*)
+ vxsim* | vxworks* | windiss*)
vendor=wrs
;;
- -aux*)
+ aux*)
vendor=apple
;;
- -hms*)
+ hms*)
vendor=hitachi
;;
- -mpw* | -macos*)
+ mpw* | macos*)
vendor=apple
;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
vendor=atari
;;
- -vos*)
+ vos*)
vendor=stratus
;;
esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
;;
esac
-echo $basic_machine$os
+echo "$cpu-$vendor-$os"
exit
# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
diff --git a/configure b/configure
index c8368523b9ab..62e6565f9730 100755
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
#! /bin/sh
-# From configure.in Revision: 1.577 .
+# From configure.in Revision: 1.693 .
# Guess values for system-dependent variables and create Makefiles.
-# Generated by Autoconf 2.52.20121002.
+# Generated by Autoconf 2.52.20200111.
#
# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc.
@@ -176,6 +176,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
libdir='${exec_prefix}/lib'
includedir='${prefix}/include'
oldincludedir='/usr/include'
@@ -318,6 +319,15 @@ do
| --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
localstatedir=$ac_optarg ;;
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst \
+ | --runs | --run | --ru)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* \
+ | --runs=* | --run=* | --ru=*)
+ runstatedir=$ac_optarg ;;
+
-mandir | --mandir | --mandi | --mand | --man | --ma | --m)
ac_prev=mandir ;;
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
@@ -667,6 +677,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR extra definition of runtime data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -703,17 +714,20 @@ Optional Features:
--with-rel-version=XXX override derived release version
--with-abi-version=XXX override derived ABI version
--with-system-type=XXX test: override derived host system-type
- --without-ada suppress check for Ada95, don't build demo
+ --without-ada suppress check for Ada compiler, don't build demo
--without-cxx do not adjust ncurses bool to match C++
--without-cxx-binding do not build C++ binding and demo
--disable-db-install suppress install of terminal database
--without-manpages suppress install of manpages
--without-progs suppress build/install with programs (e.g., tic)
+ --without-tack suppress build/install with tack program
--without-tests suppress build/install with test-programs
--without-curses-h install curses.h as ncurses.h only
+ --with-config-suffix=X suffixes ncursesXX-config file
--with-pkg-config{=path} enable/disable use of pkg-config
--with-pkg-config-libdir=XXX use given directory for installing pc-files
--enable-pc-files generate and install .pc files for pkg-config
+ --with-pc-suffix suffixes pc-files
--enable-mixed-case tic should assume mixed-case filenames
--with-install-prefix prefixes actual install-location ($DESTDIR)
Build-Tools Needed to Compile Temporary Applications for Cross-compiling:
@@ -734,19 +748,27 @@ Options to Specify the Libraries Built/Used:
--with-lib-prefix override library-prefix
--with-termlib generate separate terminfo library
--with-ticlib generate separate tic library
- --with-gpm use Alessandro Rubini's GPM library
- --without-dlsym do not use dlsym() to load GPM dynamically
- --with-sysmouse use sysmouse (FreeBSD console)
--enable-rpath use rpath option when generating shared libraries
--disable-relink relink shared libraries during install
--with-shlib-version=X Specify rel or abi version for shared libs
+ --with-libtool-opts=XXX specify additional libtool options
+ --with-export-syms=XXX limit exported symbols using libtool
+ --with-versioned-syms=X markup versioned symbols using ld
+ --with-gpm use Alessandro Rubini's GPM library
+ --without-dlsym do not use dlsym() to load GPM dynamically
+ --with-pcre2 use PCRE2 for regular-expressions
+ --with-sysmouse use sysmouse (FreeBSD console)
+ --disable-lib-suffixes disable library suffixes
--disable-rpath-hack don't add rpath options for additional libraries
Fine-Tuning Your Configuration:
- --disable-overwrite leave out the link to -lcurses
+ --with-extra-suffix=X append extra suffix to header/library paths
+ --disable-overwrite put headers in subdir, omit link to -lcurses
--disable-database do not use terminfo, only fallbacks/termcap
--with-database=XXX specify terminfo source to install
--with-hashed-db specify hashed-database library
--with-fallbacks=XXX specify list of fallback terminal descriptions
+ --with-tic-path=XXX specify path of tic for fallbacks
+ --with-infocmp-path=XXX specify path of infocmp for fallbacks
--without-xterm-new specify if xterm terminfo should be old version
--with-xterm-kbs=XXX specify if xterm backspace sends BS or DEL
--with-terminfo-dirs=XXX specify list of terminfo directories (default: DATADIR/terminfo)
@@ -767,12 +789,15 @@ Fine-Tuning Your Configuration:
--disable-largefile omit support for large files
--disable-tparm-varargs compile tparm() without varargs interface
--disable-tic-depends link tic library without explicit dependency on ncurses library
+ --disable-wattr-macros suppress wattr* macros to help with ncurses5/ncurses6 transition
+ --with-x11-rgb=FILE file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)
--with-bool=TYPE override fallback type of bool variable
--with-caps=alt compile with alternate Caps file
--with-chtype=TYPE override type of chtype
--with-ospeed=TYPE override type of ospeed variable
--with-mmask-t=TYPE override type of mmask_t
--with-ccharw-max=XXX override size CCHARW_MAX
+ --enable-signed-char compile using signed Boolean's in term.h
--with-tparm-arg=TYPE override parameter type of tparm
--with-rcs-ids compile-in RCS identifiers
Options to Specify How Manpages are Installed:
@@ -784,15 +809,25 @@ Options to Specify How Manpages are Installed:
--with-manpage-tbl specify manpage processing with tbl
Extensions:
--disable-ext-funcs disable function-extensions
- --enable-sp-funcs enable experimental SCREEN-extensions
- --enable-term-driver enable experimental terminal-driver
+ --enable-sp-funcs enable SCREEN-extensions
+ --enable-term-driver enable terminal-driver
--enable-const compile with extra/non-standard const
--enable-ext-colors compile for 256-color support
--enable-ext-mouse compile for extended mouse-encoding
+ --enable-ext-putwin compile with extended putwin/screendump
--enable-no-padding compile with $NCURSES_NO_PADDING code
- --enable-signed-char compile using signed Boolean's in term.h
--enable-sigwinch compile with SIGWINCH handler
--enable-tcap-names compile with user-definable terminal capabilities
+Reentrant Code:
+ --with-pthread use POSIX thread library
+ --enable-pthreads-eintr enable EINTR in wgetch with pthreads
+ --enable-weak-symbols enable weak-symbols for pthreads
+ --enable-reentrant compile with reentrant code
+ --enable-opaque-curses make curses WINDOW, etc., "opaque"
+ --enable-opaque-form make form-library structures "opaque"
+ --enable-opaque-menu make menu-library structures "opaque"
+ --enable-opaque-panel make panel-library structures "opaque"
+ --with-wrap-prefix=XXX override prefix used for public variables
Development Code:
--without-develop disable development options
--enable-hard-tabs compile with hard-tabs code
@@ -801,17 +836,13 @@ Experimental Code:
--disable-assumed-color do not assume anything about default-colors
--disable-hashmap compile without hashmap scrolling-optimization
--enable-colorfgbg compile-in experimental $COLORFGBG code
- --enable-interop compile-in experimental interop bindings
- --with-pthread use POSIX thread library
- --enable-pthreads-eintr enable EINTR in wgetch with pthreads
- --enable-weak-symbols enable weak-symbols for pthreads
- --enable-reentrant compile with experimental reentrant code
- --with-wrap-prefix=XXX override prefix used for public variables
+ --enable-interop compile-in interop bindings
--enable-safe-sprintf compile with experimental safe-sprintf code
--disable-scroll-hints compile without scroll-hints code
- --enable-wgetch-events compile with experimental wgetch-events code
+ --enable-wgetch-events compile with wgetch-events code
Testing/development Options:
--disable-echo do not display "compiling" commands
+ --disable-stripping do not strip (debug info) installed executables
--enable-warnings build: turn on GCC compiler warnings
--enable-string-hacks work around bogus compiler/loader warnings
--enable-assertions test: turn on generation of assertion code
@@ -822,11 +853,13 @@ Testing/development Options:
--enable-expanded test: generate functions for certain macros
--disable-macros test: use functions rather than macros
--with-trace test: add trace() function to all models of ncurses
-Ada95 Binding Options:
+ --disable-gnat-projects test: disable GNAT projects even if usable
+Ada Binding Options:
--with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)
--with-ada-include=DIR Ada includes are in DIR (default: PREFIX/share/ada/adainclude)
--with-ada-objects=DIR Ada objects are in DIR (default: PREFIX/lib/ada/adalib)
- --with-ada-sharedlib=XX build Ada95 shared-library
+ --with-ada-sharedlib=soname build shared-library (requires GNAT projects)
+ --with-ada-libname=XXX override default Ada library-name
Some influential environment variables:
CC C compiler command
@@ -899,7 +932,7 @@ This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by $as_me, which was
-generated by GNU Autoconf 2.52.20121002. Invocation command line was
+generated by GNU Autoconf 2.52.20200111. Invocation command line was
$ $0 $@
@@ -1023,7 +1056,7 @@ if test -z "$CONFIG_SITE"; then
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
- { echo "$as_me:1026: loading site script $ac_site_file" >&5
+ { echo "$as_me:1059: loading site script $ac_site_file" >&5
echo "$as_me: loading site script $ac_site_file" >&6;}
cat "$ac_site_file" >&5
. "$ac_site_file"
@@ -1034,7 +1067,7 @@ if test -r "$cache_file"; then
# Some versions of bash will fail to source /dev/null (special
# files actually), so we avoid doing that.
if test -f "$cache_file"; then
- { echo "$as_me:1037: loading cache $cache_file" >&5
+ { echo "$as_me:1070: loading cache $cache_file" >&5
echo "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . $cache_file;;
@@ -1042,7 +1075,7 @@ echo "$as_me: loading cache $cache_file" >&6;}
esac
fi
else
- { echo "$as_me:1045: creating cache $cache_file" >&5
+ { echo "$as_me:1078: creating cache $cache_file" >&5
echo "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
@@ -1058,21 +1091,21 @@ for ac_var in `(set) 2>&1 |
eval ac_new_val="\$ac_env_${ac_var}_value"
case $ac_old_set,$ac_new_set in
set,)
- { echo "$as_me:1061: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+ { echo "$as_me:1094: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
ac_cache_corrupted=: ;;
,set)
- { echo "$as_me:1065: error: \`$ac_var' was not set in the previous run" >&5
+ { echo "$as_me:1098: error: \`$ac_var' was not set in the previous run" >&5
echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_cache_corrupted=: ;;
,);;
*)
if test "x$ac_old_val" != "x$ac_new_val"; then
- { echo "$as_me:1071: error: \`$ac_var' has changed since the previous run:" >&5
+ { echo "$as_me:1104: error: \`$ac_var' has changed since the previous run:" >&5
echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- { echo "$as_me:1073: former value: $ac_old_val" >&5
+ { echo "$as_me:1106: former value: $ac_old_val" >&5
echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:1075: current value: $ac_new_val" >&5
+ { echo "$as_me:1108: current value: $ac_new_val" >&5
echo "$as_me: current value: $ac_new_val" >&2;}
ac_cache_corrupted=:
fi;;
@@ -1091,9 +1124,9 @@ echo "$as_me: current value: $ac_new_val" >&2;}
fi
done
if $ac_cache_corrupted; then
- { echo "$as_me:1094: error: changes in the environment can compromise the build" >&5
+ { echo "$as_me:1127: error: changes in the environment can compromise the build" >&5
echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { echo "$as_me:1096: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+ { { echo "$as_me:1129: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -1105,19 +1138,19 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
- *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T=' ' ;;
+case `echo "testing\c" 2>/dev/null; echo 1,2,3`,`echo -n testing 2>/dev/null; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C= # newlines do not sed ;-) only broken shells would use this case anyway
+ ECHO_T=' ' ;;
*c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
*) ECHO_N= ECHO_C='\c' ECHO_T= ;;
esac
echo "#! $SHELL" >conftest.sh
echo "exit 0" >>conftest.sh
chmod +x conftest.sh
-if { (echo "$as_me:1117: PATH=\".;.\"; conftest.sh") >&5
+if { (echo "$as_me:1150: PATH=\".;.\"; conftest.sh") >&5
(PATH=".;."; conftest.sh) 2>&5
ac_status=$?
- echo "$as_me:1120: \$? = $ac_status" >&5
+ echo "$as_me:1153: \$? = $ac_status" >&5
(exit $ac_status); }; then
ac_path_separator=';'
else
@@ -1130,21 +1163,21 @@ ac_config_headers="$ac_config_headers include/ncurses_cfg.h:include/ncurses_cfg.
top_builddir=`pwd`
-echo "$as_me:1133: checking for egrep" >&5
+echo "$as_me:1166: checking for egrep" >&5
echo $ECHO_N "checking for egrep... $ECHO_C" >&6
if test "${ac_cv_prog_egrep+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
if echo a | (grep -E '(a|b)') >/dev/null 2>&1
- then ac_cv_prog_egrep='grep -E'
- else ac_cv_prog_egrep='egrep'
- fi
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi
fi
-echo "$as_me:1143: result: $ac_cv_prog_egrep" >&5
+echo "$as_me:1176: result: $ac_cv_prog_egrep" >&5
echo "${ECHO_T}$ac_cv_prog_egrep" >&6
- EGREP=$ac_cv_prog_egrep
+ EGREP=$ac_cv_prog_egrep
-test -z "$EGREP" && { { echo "$as_me:1147: error: No egrep program found" >&5
+ test -z "$EGREP" && { { echo "$as_me:1180: error: No egrep program found" >&5
echo "$as_me: error: No egrep program found" >&2;}
{ (exit 1); exit 1; }; }
@@ -1154,15 +1187,99 @@ NCURSES_PATCH="`$ac_cv_prog_egrep '^NCURSES_PATCH[ ]*=' $srcdir/dist.mk | sed -
cf_cv_abi_version=${NCURSES_MAJOR}
cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR}
cf_cv_timestamp=`date`
-echo "$as_me:1157: result: Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&5
+echo "$as_me:1190: result: Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&5
echo "${ECHO_T}Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&6
+if test -f $srcdir/VERSION ; then
+ echo "$as_me:1194: checking for package version" >&5
+echo $ECHO_N "checking for package version... $ECHO_C" >&6
+
+ # if there are not enough fields, cut returns the last one...
+ cf_field1=`sed -e '2,$d' $srcdir/VERSION|cut -f1`
+ cf_field2=`sed -e '2,$d' $srcdir/VERSION|cut -f2`
+ cf_field3=`sed -e '2,$d' $srcdir/VERSION|cut -f3`
+
+ # this is how CF_BUNDLED_INTL uses $VERSION:
+ VERSION="$cf_field1"
+
+ VERSION_MAJOR=`echo "$cf_field2" | sed -e 's/\..*//'`
+ test -z "$VERSION_MAJOR" && { { echo "$as_me:1206: error: missing major-version" >&5
+echo "$as_me: error: missing major-version" >&2;}
+ { (exit 1); exit 1; }; }
+
+ VERSION_MINOR=`echo "$cf_field2" | sed -e 's/^[^.]*\.//' -e 's/-.*//'`
+ test -z "$VERSION_MINOR" && { { echo "$as_me:1211: error: missing minor-version" >&5
+echo "$as_me: error: missing minor-version" >&2;}
+ { (exit 1); exit 1; }; }
+
+ echo "$as_me:1215: result: ${VERSION_MAJOR}.${VERSION_MINOR}" >&5
+echo "${ECHO_T}${VERSION_MAJOR}.${VERSION_MINOR}" >&6
+
+ echo "$as_me:1218: checking for package patch date" >&5
+echo $ECHO_N "checking for package patch date... $ECHO_C" >&6
+ VERSION_PATCH=`echo "$cf_field3" | sed -e 's/^[^-]*-//'`
+ case .$VERSION_PATCH in
+ (.)
+ { { echo "$as_me:1223: error: missing patch-date $VERSION_PATCH" >&5
+echo "$as_me: error: missing patch-date $VERSION_PATCH" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ (.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])
+ ;;
+ (*)
+ { { echo "$as_me:1230: error: illegal patch-date $VERSION_PATCH" >&5
+echo "$as_me: error: illegal patch-date $VERSION_PATCH" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+ echo "$as_me:1235: result: $VERSION_PATCH" >&5
+echo "${ECHO_T}$VERSION_PATCH" >&6
+else
+ { { echo "$as_me:1238: error: did not find $srcdir/VERSION" >&5
+echo "$as_me: error: did not find $srcdir/VERSION" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+# show the actual data that we have for versions:
+test -n "$verbose" && echo " ABI VERSION $VERSION" 1>&6
+
+echo "${as_me:-configure}:1246: testing ABI VERSION $VERSION ..." 1>&5
+
+test -n "$verbose" && echo " VERSION_MAJOR $VERSION_MAJOR" 1>&6
+
+echo "${as_me:-configure}:1250: testing VERSION_MAJOR $VERSION_MAJOR ..." 1>&5
+
+test -n "$verbose" && echo " VERSION_MINOR $VERSION_MINOR" 1>&6
+
+echo "${as_me:-configure}:1254: testing VERSION_MINOR $VERSION_MINOR ..." 1>&5
+
+test -n "$verbose" && echo " VERSION_PATCH $VERSION_PATCH" 1>&6
+
+echo "${as_me:-configure}:1258: testing VERSION_PATCH $VERSION_PATCH ..." 1>&5
+
+ cf_PACKAGE=NCURSES
+ PACKAGE=ncurses
+
+cat >>confdefs.h <<EOF
+#define PACKAGE "$PACKAGE"
+EOF
+
+cf_PACKAGE=`echo "$cf_PACKAGE" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+
+ cat >>confdefs.h <<EOF
+#define ${cf_PACKAGE}_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}"
+EOF
+
+ cat >>confdefs.h <<EOF
+#define ${cf_PACKAGE}_PATCHDATE ${VERSION_PATCH}
+EOF
+
test -z "$cf_cv_rel_version" && cf_cv_rel_version=0.0
# Check whether --with-rel-version or --without-rel-version was given.
if test "${with_rel_version+set}" = set; then
withval="$with_rel_version"
- { echo "$as_me:1165: WARNING: overriding release version $cf_cv_rel_version to $withval" >&5
+ { echo "$as_me:1282: WARNING: overriding release version $cf_cv_rel_version to $withval" >&5
echo "$as_me: WARNING: overriding release version $cf_cv_rel_version to $withval" >&2;}
cf_cv_rel_version=$withval
fi;
@@ -1171,33 +1288,33 @@ fi;
NCURSES_MINOR=`echo "$cf_cv_rel_version" | sed -e 's/^[^.]*//' -e 's/^\.//' -e 's/\..*//'`
if test -n "$NCURSES_MAJOR" ; then
- case $NCURSES_MAJOR in #(vi
- [0-9]*) #(vi
+ case $NCURSES_MAJOR in
+ ([0-9]*)
;;
- *)
- { { echo "$as_me:1178: error: Release major-version is not a number: $NCURSES_MAJOR" >&5
+ (*)
+ { { echo "$as_me:1295: error: Release major-version is not a number: $NCURSES_MAJOR" >&5
echo "$as_me: error: Release major-version is not a number: $NCURSES_MAJOR" >&2;}
{ (exit 1); exit 1; }; }
;;
esac
else
- { { echo "$as_me:1184: error: Release major-version value is empty" >&5
+ { { echo "$as_me:1301: error: Release major-version value is empty" >&5
echo "$as_me: error: Release major-version value is empty" >&2;}
{ (exit 1); exit 1; }; }
fi
if test -n "$NCURSES_MINOR" ; then
- case $NCURSES_MINOR in #(vi
- [0-9]*) #(vi
+ case $NCURSES_MINOR in
+ ([0-9]*)
;;
- *)
- { { echo "$as_me:1194: error: Release minor-version is not a number: $NCURSES_MINOR" >&5
+ (*)
+ { { echo "$as_me:1311: error: Release minor-version is not a number: $NCURSES_MINOR" >&5
echo "$as_me: error: Release minor-version is not a number: $NCURSES_MINOR" >&2;}
{ (exit 1); exit 1; }; }
;;
esac
else
- { { echo "$as_me:1200: error: Release minor-version value is empty" >&5
+ { { echo "$as_me:1317: error: Release minor-version value is empty" >&5
echo "$as_me: error: Release minor-version value is empty" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -1207,27 +1324,48 @@ test -z "$cf_cv_abi_version" && cf_cv_abi_version=0
# Check whether --with-abi-version or --without-abi-version was given.
if test "${with_abi_version+set}" = set; then
withval="$with_abi_version"
- { echo "$as_me:1210: WARNING: overriding ABI version $cf_cv_abi_version to $withval" >&5
+
+ if test "x$cf_cv_abi_version" != "x$withval"
+ then
+ { echo "$as_me:1330: WARNING: overriding ABI version $cf_cv_abi_version to $withval" >&5
echo "$as_me: WARNING: overriding ABI version $cf_cv_abi_version to $withval" >&2;}
- cf_cv_abi_version=$withval
+ case $cf_cv_rel_version in
+ (5.*)
+ cf_cv_rel_version=$withval.0
+ ;;
+ (6.*)
+ cf_cv_rel_version=$withval.9 # FIXME: should be 10 as of 6.0 release
+ ;;
+ esac
+ fi
+ cf_cv_abi_version=$withval
fi;
if test -n "$cf_cv_abi_version" ; then
- case $cf_cv_abi_version in #(vi
- [0-9]*) #(vi
+ case $cf_cv_abi_version in
+ ([0-9]*)
;;
- *)
- { { echo "$as_me:1220: error: ABI version is not a number: $cf_cv_abi_version" >&5
+ (*)
+ { { echo "$as_me:1349: error: ABI version is not a number: $cf_cv_abi_version" >&5
echo "$as_me: error: ABI version is not a number: $cf_cv_abi_version" >&2;}
{ (exit 1); exit 1; }; }
;;
esac
else
- { { echo "$as_me:1226: error: ABI version value is empty" >&5
+ { { echo "$as_me:1355: error: ABI version value is empty" >&5
echo "$as_me: error: ABI version value is empty" >&2;}
{ (exit 1); exit 1; }; }
fi
+if test "x$cf_cv_abi_version" != "x$with_abi_version"
+then
+ case $cf_cv_rel_version in
+ (5.*)
+ cf_cv_rel_version=$with_abi_version.0
+ ;;
+ esac
+fi
+
ac_aux_dir=
for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
if test -f $ac_dir/install-sh; then
@@ -1245,7 +1383,7 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
fi
done
if test -z "$ac_aux_dir"; then
- { { echo "$as_me:1248: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+ { { echo "$as_me:1386: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -1255,11 +1393,11 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
# Make sure we can run config.sub.
$ac_config_sub sun4 >/dev/null 2>&1 ||
- { { echo "$as_me:1258: error: cannot run $ac_config_sub" >&5
+ { { echo "$as_me:1396: error: cannot run $ac_config_sub" >&5
echo "$as_me: error: cannot run $ac_config_sub" >&2;}
{ (exit 1); exit 1; }; }
-echo "$as_me:1262: checking build system type" >&5
+echo "$as_me:1400: checking build system type" >&5
echo $ECHO_N "checking build system type... $ECHO_C" >&6
if test "${ac_cv_build+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1268,23 +1406,23 @@ else
test -z "$ac_cv_build_alias" &&
ac_cv_build_alias=`$ac_config_guess`
test -z "$ac_cv_build_alias" &&
- { { echo "$as_me:1271: error: cannot guess build type; you must specify one" >&5
+ { { echo "$as_me:1409: error: cannot guess build type; you must specify one" >&5
echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
{ (exit 1); exit 1; }; }
ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
- { { echo "$as_me:1275: error: $ac_config_sub $ac_cv_build_alias failed." >&5
+ { { echo "$as_me:1413: error: $ac_config_sub $ac_cv_build_alias failed." >&5
echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
{ (exit 1); exit 1; }; }
fi
-echo "$as_me:1280: result: $ac_cv_build" >&5
+echo "$as_me:1418: result: $ac_cv_build" >&5
echo "${ECHO_T}$ac_cv_build" >&6
build=$ac_cv_build
build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$as_me:1287: checking host system type" >&5
+echo "$as_me:1425: checking host system type" >&5
echo $ECHO_N "checking host system type... $ECHO_C" >&6
if test "${ac_cv_host+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1293,12 +1431,12 @@ else
test -z "$ac_cv_host_alias" &&
ac_cv_host_alias=$ac_cv_build_alias
ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
- { { echo "$as_me:1296: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+ { { echo "$as_me:1434: error: $ac_config_sub $ac_cv_host_alias failed" >&5
echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
{ (exit 1); exit 1; }; }
fi
-echo "$as_me:1301: result: $ac_cv_host" >&5
+echo "$as_me:1439: result: $ac_cv_host" >&5
echo "${ECHO_T}$ac_cv_host" >&6
host=$ac_cv_host
host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1306,7 +1444,7 @@ host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
- echo "$as_me:1309: checking target system type" >&5
+ echo "$as_me:1447: checking target system type" >&5
echo $ECHO_N "checking target system type... $ECHO_C" >&6
if test "${ac_cv_target+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1315,12 +1453,12 @@ else
test "x$ac_cv_target_alias" = "x" &&
ac_cv_target_alias=$ac_cv_host_alias
ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
- { { echo "$as_me:1318: error: $ac_config_sub $ac_cv_target_alias failed" >&5
+ { { echo "$as_me:1456: error: $ac_config_sub $ac_cv_target_alias failed" >&5
echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
{ (exit 1); exit 1; }; }
fi
-echo "$as_me:1323: result: $ac_cv_target" >&5
+echo "$as_me:1461: result: $ac_cv_target" >&5
echo "${ECHO_T}$ac_cv_target" >&6
target=$ac_cv_target
target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1352,13 +1490,13 @@ else
fi
test -z "$system_name" && system_name="$cf_cv_system_name"
-test -n "$cf_cv_system_name" && echo "$as_me:1355: result: Configuring for $cf_cv_system_name" >&5
+test -n "$cf_cv_system_name" && echo "$as_me:1493: result: Configuring for $cf_cv_system_name" >&5
echo "${ECHO_T}Configuring for $cf_cv_system_name" >&6
if test ".$system_name" != ".$cf_cv_system_name" ; then
- echo "$as_me:1359: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
+ echo "$as_me:1497: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
echo "${ECHO_T}Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&6
- { { echo "$as_me:1361: error: \"Please remove config.cache and try again.\"" >&5
+ { { echo "$as_me:1499: error: \"Please remove config.cache and try again.\"" >&5
echo "$as_me: error: \"Please remove config.cache and try again.\"" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -1366,7 +1504,7 @@ fi
# Check whether --with-system-type or --without-system-type was given.
if test "${with_system_type+set}" = set; then
withval="$with_system_type"
- { echo "$as_me:1369: WARNING: overriding system type to $withval" >&5
+ { echo "$as_me:1507: WARNING: overriding system type to $withval" >&5
echo "$as_me: WARNING: overriding system type to $withval" >&2;}
cf_cv_system_name=$withval
host_os=$withval
@@ -1378,23 +1516,23 @@ cf_user_CFLAGS="$CFLAGS"
### Default install-location
-echo "$as_me:1381: checking for prefix" >&5
+echo "$as_me:1519: checking for prefix" >&5
echo $ECHO_N "checking for prefix... $ECHO_C" >&6
if test "x$prefix" = "xNONE" ; then
case "$cf_cv_system_name" in
# non-vendor systems don't have a conflict
- openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*)
+ (openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*)
prefix=/usr
;;
- *) prefix=$ac_default_prefix
+ (*) prefix=$ac_default_prefix
;;
esac
fi
-echo "$as_me:1393: result: $prefix" >&5
+echo "$as_me:1531: result: $prefix" >&5
echo "${ECHO_T}$prefix" >&6
if test "x$prefix" = "xNONE" ; then
-echo "$as_me:1397: checking for default include-directory" >&5
+echo "$as_me:1535: checking for default include-directory" >&5
echo $ECHO_N "checking for default include-directory... $ECHO_C" >&6
test -n "$verbose" && echo 1>&6
for cf_symbol in \
@@ -1417,10 +1555,41 @@ do
fi
test -n "$verbose" && echo " tested $cf_dir" 1>&6
done
-echo "$as_me:1420: result: $includedir" >&5
+echo "$as_me:1558: result: $includedir" >&5
echo "${ECHO_T}$includedir" >&6
fi
+### Defaults for ncurses ABI
+
+case x$cf_cv_abi_version in
+(x[6789])
+ cf_dft_ext_colors=yes
+ cf_dft_ext_const=yes
+ cf_dft_ext_mouse=yes
+ cf_dft_ext_putwin=yes
+ cf_dft_ext_spfuncs=yes
+ cf_dft_filter_syms=yes
+ cf_dft_chtype=uint32_t
+ cf_dft_mmask_t=uint32_t
+ cf_dft_interop=yes
+ cf_dft_tparm_arg=intptr_t
+ cf_dft_with_lp64=yes
+ ;;
+(*)
+ cf_dft_ext_colors=no
+ cf_dft_ext_const=no
+ cf_dft_ext_mouse=no
+ cf_dft_ext_putwin=no
+ cf_dft_ext_spfuncs=no
+ cf_dft_filter_syms=no
+ cf_dft_chtype=auto
+ cf_dft_mmask_t=auto
+ cf_dft_interop=no
+ cf_dft_tparm_arg=long
+ cf_dft_with_lp64=no
+ ;;
+esac
+
### Checks for programs.
# Check whether --with-ada or --without-ada was given.
@@ -1430,11 +1599,12 @@ if test "${with_ada+set}" = set; then
else
cf_with_ada=yes
fi;
+
if test "x$cf_with_ada" = xyes
then
- cf_PROG_CC="gnatgcc gcc cc"
+ cf_prog_cc="gnatgcc gcc cc"
else
- cf_PROG_CC="gcc cc"
+ cf_prog_cc="gcc cc"
fi
ac_ext=c
@@ -1444,11 +1614,11 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
if test -n "$ac_tool_prefix"; then
- for ac_prog in $cf_PROG_CC
+ for ac_prog in $cf_prog_cc
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:1451: checking for $ac_word" >&5
+echo "$as_me:1621: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_CC+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1463,7 +1633,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-echo "$as_me:1466: found $ac_dir/$ac_word" >&5
+echo "$as_me:1636: found $ac_dir/$ac_word" >&5
break
done
@@ -1471,10 +1641,10 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- echo "$as_me:1474: result: $CC" >&5
+ echo "$as_me:1644: result: $CC" >&5
echo "${ECHO_T}$CC" >&6
else
- echo "$as_me:1477: result: no" >&5
+ echo "$as_me:1647: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -1483,11 +1653,11 @@ fi
fi
if test -z "$CC"; then
ac_ct_CC=$CC
- for ac_prog in $cf_PROG_CC
+ for ac_prog in $cf_prog_cc
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-echo "$as_me:1490: checking for $ac_word" >&5
+echo "$as_me:1660: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1502,7 +1672,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_CC="$ac_prog"
-echo "$as_me:1505: found $ac_dir/$ac_word" >&5
+echo "$as_me:1675: found $ac_dir/$ac_word" >&5
break
done
@@ -1510,10 +1680,10 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- echo "$as_me:1513: result: $ac_ct_CC" >&5
+ echo "$as_me:1683: result: $ac_ct_CC" >&5
echo "${ECHO_T}$ac_ct_CC" >&6
else
- echo "$as_me:1516: result: no" >&5
+ echo "$as_me:1686: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -1523,36 +1693,36 @@ done
CC=$ac_ct_CC
fi
-test -z "$CC" && { { echo "$as_me:1526: error: no acceptable cc found in \$PATH" >&5
+test -z "$CC" && { { echo "$as_me:1696: error: no acceptable cc found in \$PATH" >&5
echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
{ (exit 1); exit 1; }; }
# Provide some information about the compiler.
-echo "$as_me:1531:" \
+echo "$as_me:1701:" \
"checking for C compiler version" >&5
ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:1534: \"$ac_compiler --version </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1704: \"$ac_compiler --version </dev/null >&5\"") >&5
(eval $ac_compiler --version </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:1537: \$? = $ac_status" >&5
+ echo "$as_me:1707: \$? = $ac_status" >&5
(exit $ac_status); }
-{ (eval echo "$as_me:1539: \"$ac_compiler -v </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1709: \"$ac_compiler -v </dev/null >&5\"") >&5
(eval $ac_compiler -v </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:1542: \$? = $ac_status" >&5
+ echo "$as_me:1712: \$? = $ac_status" >&5
(exit $ac_status); }
-{ (eval echo "$as_me:1544: \"$ac_compiler -V </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1714: \"$ac_compiler -V </dev/null >&5\"") >&5
(eval $ac_compiler -V </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:1547: \$? = $ac_status" >&5
+ echo "$as_me:1717: \$? = $ac_status" >&5
(exit $ac_status); }
cat >conftest.$ac_ext <<_ACEOF
-#line 1551 "configure"
+#line 1721 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
;
@@ -1564,13 +1734,13 @@ ac_clean_files="$ac_clean_files a.out a.exe"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-echo "$as_me:1567: checking for C compiler default output" >&5
+echo "$as_me:1737: checking for C compiler default output" >&5
echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-if { (eval echo "$as_me:1570: \"$ac_link_default\"") >&5
+if { (eval echo "$as_me:1740: \"$ac_link_default\"") >&5
(eval $ac_link_default) 2>&5
ac_status=$?
- echo "$as_me:1573: \$? = $ac_status" >&5
+ echo "$as_me:1743: \$? = $ac_status" >&5
(exit $ac_status); }; then
# Find the output, starting from the most likely. This scheme is
# not robust to junk in `.', hence go to wildcards (a.*) only as a last
@@ -1593,34 +1763,34 @@ done
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-{ { echo "$as_me:1596: error: C compiler cannot create executables" >&5
+{ { echo "$as_me:1766: error: C compiler cannot create executables" >&5
echo "$as_me: error: C compiler cannot create executables" >&2;}
{ (exit 77); exit 77; }; }
fi
ac_exeext=$ac_cv_exeext
-echo "$as_me:1602: result: $ac_file" >&5
+echo "$as_me:1772: result: $ac_file" >&5
echo "${ECHO_T}$ac_file" >&6
# Check the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-echo "$as_me:1607: checking whether the C compiler works" >&5
+echo "$as_me:1777: checking whether the C compiler works" >&5
echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
# If not cross compiling, check that we can run a simple program.
if test "$cross_compiling" != yes; then
if { ac_try='./$ac_file'
- { (eval echo "$as_me:1613: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1783: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1616: \$? = $ac_status" >&5
+ echo "$as_me:1786: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cross_compiling=no
else
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
- { { echo "$as_me:1623: error: cannot run C compiled programs.
+ { { echo "$as_me:1793: error: cannot run C compiled programs.
If you meant to cross compile, use \`--host'." >&5
echo "$as_me: error: cannot run C compiled programs.
If you meant to cross compile, use \`--host'." >&2;}
@@ -1628,24 +1798,24 @@ If you meant to cross compile, use \`--host'." >&2;}
fi
fi
fi
-echo "$as_me:1631: result: yes" >&5
+echo "$as_me:1801: result: yes" >&5
echo "${ECHO_T}yes" >&6
rm -f a.out a.exe conftest$ac_cv_exeext
ac_clean_files=$ac_clean_files_save
# Check the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-echo "$as_me:1638: checking whether we are cross compiling" >&5
+echo "$as_me:1808: checking whether we are cross compiling" >&5
echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-echo "$as_me:1640: result: $cross_compiling" >&5
+echo "$as_me:1810: result: $cross_compiling" >&5
echo "${ECHO_T}$cross_compiling" >&6
-echo "$as_me:1643: checking for executable suffix" >&5
+echo "$as_me:1813: checking for executable suffix" >&5
echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
-if { (eval echo "$as_me:1645: \"$ac_link\"") >&5
+if { (eval echo "$as_me:1815: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:1648: \$? = $ac_status" >&5
+ echo "$as_me:1818: \$? = $ac_status" >&5
(exit $ac_status); }; then
# If both `conftest.exe' and `conftest' are `present' (well, observable)
# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
@@ -1661,29 +1831,29 @@ for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
esac
done
else
- { { echo "$as_me:1664: error: cannot compute EXEEXT: cannot compile and link" >&5
+ { { echo "$as_me:1834: error: cannot compute EXEEXT: cannot compile and link" >&5
echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
{ (exit 1); exit 1; }; }
fi
rm -f conftest$ac_cv_exeext
-echo "$as_me:1670: result: $ac_cv_exeext" >&5
+echo "$as_me:1840: result: $ac_cv_exeext" >&5
echo "${ECHO_T}$ac_cv_exeext" >&6
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
ac_exeext=$EXEEXT
-echo "$as_me:1676: checking for object suffix" >&5
+echo "$as_me:1846: checking for object suffix" >&5
echo $ECHO_N "checking for object suffix... $ECHO_C" >&6
if test "${ac_cv_objext+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 1682 "configure"
+#line 1852 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
;
@@ -1691,10 +1861,10 @@ main ()
}
_ACEOF
rm -f conftest.o conftest.obj
-if { (eval echo "$as_me:1694: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1864: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1697: \$? = $ac_status" >&5
+ echo "$as_me:1867: \$? = $ac_status" >&5
(exit $ac_status); }; then
for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
case $ac_file in
@@ -1706,28 +1876,28 @@ done
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-{ { echo "$as_me:1709: error: cannot compute OBJEXT: cannot compile" >&5
+{ { echo "$as_me:1879: error: cannot compute OBJEXT: cannot compile" >&5
echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
{ (exit 1); exit 1; }; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
-echo "$as_me:1716: result: $ac_cv_objext" >&5
+echo "$as_me:1886: result: $ac_cv_objext" >&5
echo "${ECHO_T}$ac_cv_objext" >&6
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
-echo "$as_me:1720: checking whether we are using the GNU C compiler" >&5
+echo "$as_me:1890: checking whether we are using the GNU C compiler" >&5
echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
if test "${ac_cv_c_compiler_gnu+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 1726 "configure"
+#line 1896 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
#ifndef __GNUC__
choke me
@@ -1738,16 +1908,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1741: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1911: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1744: \$? = $ac_status" >&5
+ echo "$as_me:1914: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1747: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1917: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1750: \$? = $ac_status" >&5
+ echo "$as_me:1920: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_compiler_gnu=yes
else
@@ -1759,23 +1929,23 @@ rm -f conftest.$ac_objext conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
-echo "$as_me:1762: result: $ac_cv_c_compiler_gnu" >&5
+echo "$as_me:1932: result: $ac_cv_c_compiler_gnu" >&5
echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
GCC=`test $ac_compiler_gnu = yes && echo yes`
ac_test_CFLAGS=${CFLAGS+set}
ac_save_CFLAGS=$CFLAGS
CFLAGS="-g"
-echo "$as_me:1768: checking whether $CC accepts -g" >&5
+echo "$as_me:1938: checking whether $CC accepts -g" >&5
echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
if test "${ac_cv_prog_cc_g+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 1774 "configure"
+#line 1944 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
;
@@ -1783,16 +1953,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1786: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1956: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1789: \$? = $ac_status" >&5
+ echo "$as_me:1959: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1792: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1962: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1795: \$? = $ac_status" >&5
+ echo "$as_me:1965: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_prog_cc_g=yes
else
@@ -1802,7 +1972,7 @@ ac_cv_prog_cc_g=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:1805: result: $ac_cv_prog_cc_g" >&5
+echo "$as_me:1975: result: $ac_cv_prog_cc_g" >&5
echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
if test "$ac_test_CFLAGS" = set; then
CFLAGS=$ac_save_CFLAGS
@@ -1829,16 +1999,16 @@ cat >conftest.$ac_ext <<_ACEOF
#endif
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1832: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2002: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1835: \$? = $ac_status" >&5
+ echo "$as_me:2005: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1838: \"$ac_try\"") >&5
+ { (eval echo "$as_me:2008: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1841: \$? = $ac_status" >&5
+ echo "$as_me:2011: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
for ac_declaration in \
''\
@@ -1850,12 +2020,12 @@ if { (eval echo "$as_me:1832: \"$ac_compile\"") >&5
'void exit (int);'
do
cat >conftest.$ac_ext <<_ACEOF
-#line 1853 "configure"
+#line 2023 "configure"
#include "confdefs.h"
#include <stdlib.h>
$ac_declaration
int
-main ()
+main (void)
{
exit (42);
;
@@ -1863,16 +2033,16 @@ exit (42);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1866: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2036: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1869: \$? = $ac_status" >&5
+ echo "$as_me:2039: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1872: \"$ac_try\"") >&5
+ { (eval echo "$as_me:2042: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1875: \$? = $ac_status" >&5
+ echo "$as_me:2045: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -1882,11 +2052,11 @@ continue
fi
rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line 1885 "configure"
+#line 2055 "configure"
#include "confdefs.h"
$ac_declaration
int
-main ()
+main (void)
{
exit (42);
;
@@ -1894,16 +2064,16 @@ exit (42);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1897: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2067: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1900: \$? = $ac_status" >&5
+ echo "$as_me:2070: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1903: \"$ac_try\"") >&5
+ { (eval echo "$as_me:2073: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1906: \$? = $ac_status" >&5
+ echo "$as_me:2076: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -1933,15 +2103,117 @@ ac_main_return=return
GCC_VERSION=none
if test "$GCC" = yes ; then
- echo "$as_me:1936: checking version of $CC" >&5
+ echo "$as_me:2106: checking version of $CC" >&5
echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
test -z "$GCC_VERSION" && GCC_VERSION=unknown
- echo "$as_me:1940: result: $GCC_VERSION" >&5
+ echo "$as_me:2110: result: $GCC_VERSION" >&5
echo "${ECHO_T}$GCC_VERSION" >&6
fi
-echo "$as_me:1944: checking for $CC option to accept ANSI C" >&5
+INTEL_COMPILER=no
+
+if test "$GCC" = yes ; then
+ case $host_os in
+ (linux*|gnu*)
+ echo "$as_me:2119: checking if this is really Intel C compiler" >&5
+echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6
+ cf_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -no-gcc"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 2124 "configure"
+#include "confdefs.h"
+
+int
+main (void)
+{
+
+#ifdef __INTEL_COMPILER
+#else
+make an error
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2141: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:2144: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:2147: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:2150: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ INTEL_COMPILER=yes
+cf_save_CFLAGS="$cf_save_CFLAGS -we147"
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$cf_save_CFLAGS"
+ echo "$as_me:2161: result: $INTEL_COMPILER" >&5
+echo "${ECHO_T}$INTEL_COMPILER" >&6
+ ;;
+ esac
+fi
+
+CLANG_COMPILER=no
+
+if test "$GCC" = yes ; then
+ echo "$as_me:2170: checking if this is really Clang C compiler" >&5
+echo $ECHO_N "checking if this is really Clang C compiler... $ECHO_C" >&6
+ cf_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Qunused-arguments"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 2175 "configure"
+#include "confdefs.h"
+
+int
+main (void)
+{
+
+#ifdef __clang__
+#else
+make an error
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2192: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:2195: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:2198: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:2201: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ CLANG_COMPILER=yes
+cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$cf_save_CFLAGS"
+ echo "$as_me:2212: result: $CLANG_COMPILER" >&5
+echo "${ECHO_T}$CLANG_COMPILER" >&6
+fi
+
+echo "$as_me:2216: checking for $CC option to accept ANSI C" >&5
echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
if test "${ac_cv_prog_cc_stdc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1949,7 +2221,7 @@ else
ac_cv_prog_cc_stdc=no
ac_save_CC=$CC
cat >conftest.$ac_ext <<_ACEOF
-#line 1952 "configure"
+#line 2224 "configure"
#include "confdefs.h"
#include <stdarg.h>
#include <stdio.h>
@@ -1980,7 +2252,7 @@ int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, i
int argc;
char **argv;
int
-main ()
+main (void)
{
return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
;
@@ -1998,16 +2270,16 @@ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIO
do
CC="$ac_save_CC $ac_arg"
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2001: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2273: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:2004: \$? = $ac_status" >&5
+ echo "$as_me:2276: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2007: \"$ac_try\"") >&5
+ { (eval echo "$as_me:2279: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2010: \$? = $ac_status" >&5
+ echo "$as_me:2282: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_prog_cc_stdc=$ac_arg
break
@@ -2024,10 +2296,10 @@ fi
case "x$ac_cv_prog_cc_stdc" in
x|xno)
- echo "$as_me:2027: result: none needed" >&5
+ echo "$as_me:2299: result: none needed" >&5
echo "${ECHO_T}none needed" >&6 ;;
*)
- echo "$as_me:2030: result: $ac_cv_prog_cc_stdc" >&5
+ echo "$as_me:2302: result: $ac_cv_prog_cc_stdc" >&5
echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
CC="$CC $ac_cv_prog_cc_stdc" ;;
esac
@@ -2035,52 +2307,182 @@ esac
# This should have been defined by AC_PROG_CC
: ${CC:=cc}
-echo "$as_me:2038: checking \$CC variable" >&5
+echo "$as_me:2310: checking \$CFLAGS variable" >&5
+echo $ECHO_N "checking \$CFLAGS variable... $ECHO_C" >&6
+case "x$CFLAGS" in
+(*-[IUD]*)
+ echo "$as_me:2314: result: broken" >&5
+echo "${ECHO_T}broken" >&6
+ { echo "$as_me:2316: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&5
+echo "$as_me: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&2;}
+ cf_flags="$CFLAGS"
+ CFLAGS=
+ for cf_arg in $cf_flags
+ do
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_arg
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+ done
+ ;;
+(*)
+ echo "$as_me:2424: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+ ;;
+esac
+
+echo "$as_me:2429: checking \$CC variable" >&5
echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6
-case "$CC" in #(vi
-*[\ \ ]-[IUD]*)
- echo "$as_me:2042: result: broken" >&5
+case "$CC" in
+(*[\ \ ]-*)
+ echo "$as_me:2433: result: broken" >&5
echo "${ECHO_T}broken" >&6
- { echo "$as_me:2044: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
-echo "$as_me: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;}
+ { echo "$as_me:2435: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
+echo "$as_me: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;}
# humor him...
- cf_flags=`echo "$CC" | sed -e 's/^[^ ]*[ ]//'`
- CC=`echo "$CC" | sed -e 's/[ ].*//'`
+ cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[ ]* / /g' -e 's/[ ]*[ ]-[^ ].*//'`
+ cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", substr($0,1+length(prog))); }'`
+ CC="$cf_prog"
+ for cf_arg in $cf_flags
+ do
+ case "x$cf_arg" in
+ (x-[IUDfgOW]*)
cf_fix_cppflags=no
cf_new_cflags=
cf_new_cppflags=
cf_new_extra_cppflags=
-for cf_add_cflags in $cf_flags
+for cf_add_cflags in $cf_arg
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -2089,21 +2491,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -2112,22 +2522,46 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
+ ;;
+ (*)
+ CC="$CC $cf_arg"
+ ;;
+ esac
+ done
+ test -n "$verbose" && echo " resulting CC: '$CC'" 1>&6
+
+echo "${as_me:-configure}:2552: testing resulting CC: '$CC' ..." 1>&5
+
+ test -n "$verbose" && echo " resulting CFLAGS: '$CFLAGS'" 1>&6
+
+echo "${as_me:-configure}:2556: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5
+
+ test -n "$verbose" && echo " resulting CPPFLAGS: '$CPPFLAGS'" 1>&6
+
+echo "${as_me:-configure}:2560: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5
+
;;
-*)
- echo "$as_me:2130: result: ok" >&5
+(*)
+ echo "$as_me:2564: result: ok" >&5
echo "${ECHO_T}ok" >&6
;;
esac
@@ -2138,7 +2572,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
-echo "$as_me:2141: checking how to run the C preprocessor" >&5
+echo "$as_me:2575: checking how to run the C preprocessor" >&5
echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
@@ -2159,18 +2593,18 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line 2162 "configure"
+#line 2596 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax error
_ACEOF
-if { (eval echo "$as_me:2167: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2601: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:2173: \$? = $ac_status" >&5
+ echo "$as_me:2607: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2193,17 +2627,17 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line 2196 "configure"
+#line 2630 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
_ACEOF
-if { (eval echo "$as_me:2200: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2634: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:2206: \$? = $ac_status" >&5
+ echo "$as_me:2640: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2240,7 +2674,7 @@ fi
else
ac_cv_prog_CPP=$CPP
fi
-echo "$as_me:2243: result: $CPP" >&5
+echo "$as_me:2677: result: $CPP" >&5
echo "${ECHO_T}$CPP" >&6
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
@@ -2250,18 +2684,18 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line 2253 "configure"
+#line 2687 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax error
_ACEOF
-if { (eval echo "$as_me:2258: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2692: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:2264: \$? = $ac_status" >&5
+ echo "$as_me:2698: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2284,17 +2718,17 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line 2287 "configure"
+#line 2721 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
_ACEOF
-if { (eval echo "$as_me:2291: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2725: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:2297: \$? = $ac_status" >&5
+ echo "$as_me:2731: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2322,7 +2756,7 @@ rm -f conftest.err conftest.$ac_ext
if $ac_preproc_ok; then
:
else
- { { echo "$as_me:2325: error: C preprocessor \"$CPP\" fails sanity check" >&5
+ { { echo "$as_me:2759: error: C preprocessor \"$CPP\" fails sanity check" >&5
echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -2335,14 +2769,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
if test $ac_cv_c_compiler_gnu = yes; then
- echo "$as_me:2338: checking whether $CC needs -traditional" >&5
+ echo "$as_me:2772: checking whether $CC needs -traditional" >&5
echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6
if test "${ac_cv_prog_gcc_traditional+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_pattern="Autoconf.*'x'"
cat >conftest.$ac_ext <<_ACEOF
-#line 2345 "configure"
+#line 2779 "configure"
#include "confdefs.h"
#include <sgtty.h>
int Autoconf = TIOCGETP;
@@ -2357,7 +2791,7 @@ rm -rf conftest*
if test $ac_cv_prog_gcc_traditional = no; then
cat >conftest.$ac_ext <<_ACEOF
-#line 2360 "configure"
+#line 2794 "configure"
#include "confdefs.h"
#include <termio.h>
int Autoconf = TCGETA;
@@ -2370,38 +2804,37 @@ rm -rf conftest*
fi
fi
-echo "$as_me:2373: result: $ac_cv_prog_gcc_traditional" >&5
+echo "$as_me:2807: result: $ac_cv_prog_gcc_traditional" >&5
echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6
if test $ac_cv_prog_gcc_traditional = yes; then
CC="$CC -traditional"
fi
fi
-echo "$as_me:2380: checking whether $CC understands -c and -o together" >&5
+echo "$as_me:2814: checking whether $CC understands -c and -o together" >&5
echo $ECHO_N "checking whether $CC understands -c and -o together... $ECHO_C" >&6
if test "${cf_cv_prog_CC_c_o+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat > conftest.$ac_ext <<CF_EOF
-#include <stdio.h>
-int main()
+int main(void)
{
${cf_cv_main_return:-return}(0);
}
CF_EOF
# We do the test twice because some compilers refuse to overwrite an
# existing .o file with -o, though they will create one.
-ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-if { (eval echo "$as_me:2396: \"$ac_try\"") >&5
+ac_try='$CC $CFLAGS $CPPFLAGS -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+if { (eval echo "$as_me:2829: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2399: \$? = $ac_status" >&5
+ echo "$as_me:2832: \$? = $ac_status" >&5
(exit $ac_status); } &&
- test -f conftest2.$ac_objext && { (eval echo "$as_me:2401: \"$ac_try\"") >&5
+ test -f conftest2.$ac_objext && { (eval echo "$as_me:2834: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2404: \$? = $ac_status" >&5
+ echo "$as_me:2837: \$? = $ac_status" >&5
(exit $ac_status); };
then
eval cf_cv_prog_CC_c_o=yes
@@ -2412,24 +2845,24 @@ rm -rf conftest*
fi
if test $cf_cv_prog_CC_c_o = yes; then
- echo "$as_me:2415: result: yes" >&5
+ echo "$as_me:2848: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
- echo "$as_me:2418: result: no" >&5
+ echo "$as_me:2851: result: no" >&5
echo "${ECHO_T}no" >&6
fi
if test "$cross_compiling" = yes ; then
- LDCONFIG=:
+ LDCONFIG=:
else
-case "$cf_cv_system_name" in #(vi
-dragonfly*|mirbsd*|freebsd*) #(vi
- test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
- ;;
-*) LDPATH=$PATH:/sbin:/usr/sbin
- # Extract the first word of "ldconfig", so it can be a program name with args.
+ case "$cf_cv_system_name" in
+ (dragonfly*|mirbsd*|freebsd*)
+ test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
+ ;;
+ (*) LDPATH=$PATH:/sbin:/usr/sbin
+ # Extract the first word of "ldconfig", so it can be a program name with args.
set dummy ldconfig; ac_word=$2
-echo "$as_me:2432: checking for $ac_word" >&5
+echo "$as_me:2865: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_LDCONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2446,7 +2879,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if $as_executable_p "$ac_dir/$ac_word"; then
ac_cv_path_LDCONFIG="$ac_dir/$ac_word"
- echo "$as_me:2449: found $ac_dir/$ac_word" >&5
+ echo "$as_me:2882: found $ac_dir/$ac_word" >&5
break
fi
done
@@ -2457,18 +2890,18 @@ fi
LDCONFIG=$ac_cv_path_LDCONFIG
if test -n "$LDCONFIG"; then
- echo "$as_me:2460: result: $LDCONFIG" >&5
+ echo "$as_me:2893: result: $LDCONFIG" >&5
echo "${ECHO_T}$LDCONFIG" >&6
else
- echo "$as_me:2463: result: no" >&5
+ echo "$as_me:2896: result: no" >&5
echo "${ECHO_T}no" >&6
fi
- ;;
-esac
+ ;;
+ esac
fi
-echo "$as_me:2471: checking if you want to ensure bool is consistent with C++" >&5
+echo "$as_me:2904: checking if you want to ensure bool is consistent with C++" >&5
echo $ECHO_N "checking if you want to ensure bool is consistent with C++... $ECHO_C" >&6
# Check whether --with-cxx or --without-cxx was given.
@@ -2478,7 +2911,7 @@ if test "${with_cxx+set}" = set; then
else
cf_with_cxx=yes
fi;
-echo "$as_me:2481: result: $cf_with_cxx" >&5
+echo "$as_me:2914: result: $cf_with_cxx" >&5
echo "${ECHO_T}$cf_with_cxx" >&6
if test "X$cf_with_cxx" = Xno ; then
CXX=""
@@ -2496,7 +2929,7 @@ if test -n "$ac_tool_prefix"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:2499: checking for $ac_word" >&5
+echo "$as_me:2932: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_CXX+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2511,7 +2944,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-echo "$as_me:2514: found $ac_dir/$ac_word" >&5
+echo "$as_me:2947: found $ac_dir/$ac_word" >&5
break
done
@@ -2519,10 +2952,10 @@ fi
fi
CXX=$ac_cv_prog_CXX
if test -n "$CXX"; then
- echo "$as_me:2522: result: $CXX" >&5
+ echo "$as_me:2955: result: $CXX" >&5
echo "${ECHO_T}$CXX" >&6
else
- echo "$as_me:2525: result: no" >&5
+ echo "$as_me:2958: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2535,7 +2968,7 @@ if test -z "$CXX"; then
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 "$as_me:2538: checking for $ac_word" >&5
+echo "$as_me:2971: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2550,7 +2983,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_CXX="$ac_prog"
-echo "$as_me:2553: found $ac_dir/$ac_word" >&5
+echo "$as_me:2986: found $ac_dir/$ac_word" >&5
break
done
@@ -2558,10 +2991,10 @@ fi
fi
ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
if test -n "$ac_ct_CXX"; then
- echo "$as_me:2561: result: $ac_ct_CXX" >&5
+ echo "$as_me:2994: result: $ac_ct_CXX" >&5
echo "${ECHO_T}$ac_ct_CXX" >&6
else
- echo "$as_me:2564: result: no" >&5
+ echo "$as_me:2997: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2573,36 +3006,36 @@ test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
fi
# Provide some information about the compiler.
-echo "$as_me:2576:" \
+echo "$as_me:3009:" \
"checking for C++ compiler version" >&5
ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:2579: \"$ac_compiler --version </dev/null >&5\"") >&5
+{ (eval echo "$as_me:3012: \"$ac_compiler --version </dev/null >&5\"") >&5
(eval $ac_compiler --version </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:2582: \$? = $ac_status" >&5
+ echo "$as_me:3015: \$? = $ac_status" >&5
(exit $ac_status); }
-{ (eval echo "$as_me:2584: \"$ac_compiler -v </dev/null >&5\"") >&5
+{ (eval echo "$as_me:3017: \"$ac_compiler -v </dev/null >&5\"") >&5
(eval $ac_compiler -v </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:2587: \$? = $ac_status" >&5
+ echo "$as_me:3020: \$? = $ac_status" >&5
(exit $ac_status); }
-{ (eval echo "$as_me:2589: \"$ac_compiler -V </dev/null >&5\"") >&5
+{ (eval echo "$as_me:3022: \"$ac_compiler -V </dev/null >&5\"") >&5
(eval $ac_compiler -V </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:2592: \$? = $ac_status" >&5
+ echo "$as_me:3025: \$? = $ac_status" >&5
(exit $ac_status); }
-echo "$as_me:2595: checking whether we are using the GNU C++ compiler" >&5
+echo "$as_me:3028: checking whether we are using the GNU C++ compiler" >&5
echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 2601 "configure"
+#line 3034 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
#ifndef __GNUC__
choke me
@@ -2613,16 +3046,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2616: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:3049: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:2619: \$? = $ac_status" >&5
+ echo "$as_me:3052: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2622: \"$ac_try\"") >&5
+ { (eval echo "$as_me:3055: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2625: \$? = $ac_status" >&5
+ echo "$as_me:3058: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_compiler_gnu=yes
else
@@ -2634,23 +3067,23 @@ rm -f conftest.$ac_objext conftest.$ac_ext
ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
fi
-echo "$as_me:2637: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "$as_me:3070: result: $ac_cv_cxx_compiler_gnu" >&5
echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
GXX=`test $ac_compiler_gnu = yes && echo yes`
ac_test_CXXFLAGS=${CXXFLAGS+set}
ac_save_CXXFLAGS=$CXXFLAGS
CXXFLAGS="-g"
-echo "$as_me:2643: checking whether $CXX accepts -g" >&5
+echo "$as_me:3076: checking whether $CXX accepts -g" >&5
echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
if test "${ac_cv_prog_cxx_g+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 2649 "configure"
+#line 3082 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
;
@@ -2658,16 +3091,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2661: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:3094: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:2664: \$? = $ac_status" >&5
+ echo "$as_me:3097: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2667: \"$ac_try\"") >&5
+ { (eval echo "$as_me:3100: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2670: \$? = $ac_status" >&5
+ echo "$as_me:3103: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_prog_cxx_g=yes
else
@@ -2677,7 +3110,7 @@ ac_cv_prog_cxx_g=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:2680: result: $ac_cv_prog_cxx_g" >&5
+echo "$as_me:3113: result: $ac_cv_prog_cxx_g" >&5
echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
if test "$ac_test_CXXFLAGS" = set; then
CXXFLAGS=$ac_save_CXXFLAGS
@@ -2704,12 +3137,12 @@ for ac_declaration in \
'void exit (int);'
do
cat >conftest.$ac_ext <<_ACEOF
-#line 2707 "configure"
+#line 3140 "configure"
#include "confdefs.h"
#include <stdlib.h>
$ac_declaration
int
-main ()
+main (void)
{
exit (42);
;
@@ -2717,16 +3150,16 @@ exit (42);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2720: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:3153: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:2723: \$? = $ac_status" >&5
+ echo "$as_me:3156: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2726: \"$ac_try\"") >&5
+ { (eval echo "$as_me:3159: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2729: \$? = $ac_status" >&5
+ echo "$as_me:3162: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -2736,11 +3169,11 @@ continue
fi
rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line 2739 "configure"
+#line 3172 "configure"
#include "confdefs.h"
$ac_declaration
int
-main ()
+main (void)
{
exit (42);
;
@@ -2748,16 +3181,16 @@ exit (42);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2751: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:3184: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:2754: \$? = $ac_status" >&5
+ echo "$as_me:3187: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2757: \"$ac_try\"") >&5
+ { (eval echo "$as_me:3190: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2760: \$? = $ac_status" >&5
+ echo "$as_me:3193: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -2780,11 +3213,83 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
- # autoconf 2.5x removed the error (hardcoding it to g++, or just blank)
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+ac_main_return=return
+
+ if test "x$cf_with_cxx" != xno
+ then
+ # Several of the C++ configurations do not work, particularly when
+ # cross-compiling (20140913 -TD)
+ echo "$as_me:3227: checking if $CXX works" >&5
+echo $ECHO_N "checking if $CXX works... $ECHO_C" >&6
+
+ save_CPPFLAGS="$CPPFLAGS"
+ eval cf_includedir=${includedir}
+ CPPFLAGS="$CPPFLAGS -I${cf_includedir}"
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 3235 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+
+int
+main (void)
+{
+
+ printf("Hello world!\n")
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3252: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:3255: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:3258: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:3261: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cxx_works=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cxx_works=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS="$save_CPPFLAGS"
+
+ echo "$as_me:3272: result: $cf_cxx_works" >&5
+echo "${ECHO_T}$cf_cxx_works" >&6
+ if test "x$cf_cxx_works" = xno
+ then
+ { echo "$as_me:3276: WARNING: Ignore $CXX, since it cannot compile hello-world." >&5
+echo "$as_me: WARNING: Ignore $CXX, since it cannot compile hello-world." >&2;}
+ cf_with_cxx=no; CXX=""; GXX="";
+ fi
+ fi
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ac_main_return=return
+
+ # autoconf 2.5x removed the error (hardcoding it to g++, or just blank)
if test "$CXX" = "g++" ; then
# Extract the first word of "g++", so it can be a program name with args.
set dummy g++; ac_word=$2
-echo "$as_me:2787: checking for $ac_word" >&5
+echo "$as_me:3292: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_CXX+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2801,7 +3306,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if $as_executable_p "$ac_dir/$ac_word"; then
ac_cv_path_CXX="$ac_dir/$ac_word"
- echo "$as_me:2804: found $ac_dir/$ac_word" >&5
+ echo "$as_me:3309: found $ac_dir/$ac_word" >&5
break
fi
done
@@ -2812,17 +3317,17 @@ fi
CXX=$ac_cv_path_CXX
if test -n "$CXX"; then
- echo "$as_me:2815: result: $CXX" >&5
+ echo "$as_me:3320: result: $CXX" >&5
echo "${ECHO_T}$CXX" >&6
else
- echo "$as_me:2818: result: no" >&5
+ echo "$as_me:3323: result: no" >&5
echo "${ECHO_T}no" >&6
fi
fi
- case "x$CXX" in #(vi
- x|xg++)
- { echo "$as_me:2825: WARNING: You don't have any C++ compiler, too bad" >&5
+ case "x$CXX" in
+ (x|xg++)
+ { echo "$as_me:3330: WARNING: You don't have any C++ compiler, too bad" >&5
echo "$as_me: WARNING: You don't have any C++ compiler, too bad" >&2;}
cf_with_cxx=no; CXX=""; GXX="";
;;
@@ -2831,24 +3336,28 @@ fi
GXX_VERSION=none
if test "$GXX" = yes; then
- echo "$as_me:2834: checking version of ${CXX:-g++}" >&5
+ echo "$as_me:3339: checking version of ${CXX:-g++}" >&5
echo $ECHO_N "checking version of ${CXX:-g++}... $ECHO_C" >&6
GXX_VERSION="`${CXX:-g++} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
- test -z "$GXX_VERSION" && GXX_VERSION=unknown
- echo "$as_me:2838: result: $GXX_VERSION" >&5
+ if test -z "$GXX_VERSION"
+ then
+ GXX_VERSION=unknown
+ GXX=no
+ fi
+ echo "$as_me:3347: result: $GXX_VERSION" >&5
echo "${ECHO_T}$GXX_VERSION" >&6
fi
case $GXX_VERSION in
-1*|2.[0-6]*)
+(1*|2.[0-6]*)
# GXX=""; CXX=""; ac_cv_prog_gxx=no
# cf_cxx_library=no
- { echo "$as_me:2846: WARNING: templates do not work" >&5
+ { echo "$as_me:3355: WARNING: templates do not work" >&5
echo "$as_me: WARNING: templates do not work" >&2;}
;;
esac
-echo "$as_me:2851: checking if you want to build C++ binding and demo" >&5
+echo "$as_me:3360: checking if you want to build C++ binding and demo" >&5
echo $ECHO_N "checking if you want to build C++ binding and demo... $ECHO_C" >&6
# Check whether --with-cxx-binding or --without-cxx-binding was given.
@@ -2858,15 +3367,15 @@ if test "${with_cxx_binding+set}" = set; then
else
cf_with_cxx_binding=$cf_with_cxx
fi;
-echo "$as_me:2861: result: $cf_with_cxx_binding" >&5
+echo "$as_me:3370: result: $cf_with_cxx_binding" >&5
echo "${ECHO_T}$cf_with_cxx_binding" >&6
-echo "$as_me:2864: checking if you want to build with Ada95" >&5
-echo $ECHO_N "checking if you want to build with Ada95... $ECHO_C" >&6
-echo "$as_me:2866: result: $cf_with_ada" >&5
+echo "$as_me:3373: checking if you want to build with Ada" >&5
+echo $ECHO_N "checking if you want to build with Ada... $ECHO_C" >&6
+echo "$as_me:3375: result: $cf_with_ada" >&5
echo "${ECHO_T}$cf_with_ada" >&6
-echo "$as_me:2869: checking if you want to install terminal database" >&5
+echo "$as_me:3378: checking if you want to install terminal database" >&5
echo $ECHO_N "checking if you want to install terminal database... $ECHO_C" >&6
# Check whether --enable-db-install or --disable-db-install was given.
@@ -2876,10 +3385,10 @@ if test "${enable_db_install+set}" = set; then
else
cf_with_db_install=yes
fi;
-echo "$as_me:2879: result: $cf_with_db_install" >&5
+echo "$as_me:3388: result: $cf_with_db_install" >&5
echo "${ECHO_T}$cf_with_db_install" >&6
-echo "$as_me:2882: checking if you want to install manpages" >&5
+echo "$as_me:3391: checking if you want to install manpages" >&5
echo $ECHO_N "checking if you want to install manpages... $ECHO_C" >&6
# Check whether --with-manpages or --without-manpages was given.
@@ -2889,10 +3398,10 @@ if test "${with_manpages+set}" = set; then
else
cf_with_manpages=yes
fi;
-echo "$as_me:2892: result: $cf_with_manpages" >&5
+echo "$as_me:3401: result: $cf_with_manpages" >&5
echo "${ECHO_T}$cf_with_manpages" >&6
-echo "$as_me:2895: checking if you want to build programs such as tic" >&5
+echo "$as_me:3404: checking if you want to build programs such as tic" >&5
echo $ECHO_N "checking if you want to build programs such as tic... $ECHO_C" >&6
# Check whether --with-progs or --without-progs was given.
@@ -2902,10 +3411,35 @@ if test "${with_progs+set}" = set; then
else
cf_with_progs=yes
fi;
-echo "$as_me:2905: result: $cf_with_progs" >&5
+echo "$as_me:3414: result: $cf_with_progs" >&5
echo "${ECHO_T}$cf_with_progs" >&6
-echo "$as_me:2908: checking if you want to build test-programs" >&5
+if test -f $srcdir/tack/tack.h; then
+ if test "x$cross_compiling" = xyes ; then
+ test -n "$verbose" && echo " ignoring tack because we are cross-compiling" 1>&6
+
+echo "${as_me:-configure}:3421: testing ignoring tack because we are cross-compiling ..." 1>&5
+
+ cf_with_tack=no
+ else
+ echo "$as_me:3425: checking if you want to build the tack program" >&5
+echo $ECHO_N "checking if you want to build the tack program... $ECHO_C" >&6
+
+# Check whether --with-tack or --without-tack was given.
+if test "${with_tack+set}" = set; then
+ withval="$with_tack"
+ cf_with_tack=$withval
+else
+ cf_with_tack=$cf_with_progs
+fi;
+ echo "$as_me:3435: result: $cf_with_tack" >&5
+echo "${ECHO_T}$cf_with_tack" >&6
+ fi
+else
+ cf_with_tack=no
+fi
+
+echo "$as_me:3442: checking if you want to build test-programs" >&5
echo $ECHO_N "checking if you want to build test-programs... $ECHO_C" >&6
# Check whether --with-tests or --without-tests was given.
@@ -2915,10 +3449,10 @@ if test "${with_tests+set}" = set; then
else
cf_with_tests=yes
fi;
-echo "$as_me:2918: result: $cf_with_tests" >&5
+echo "$as_me:3452: result: $cf_with_tests" >&5
echo "${ECHO_T}$cf_with_tests" >&6
-echo "$as_me:2921: checking if you wish to install curses.h" >&5
+echo "$as_me:3455: checking if you wish to install curses.h" >&5
echo $ECHO_N "checking if you wish to install curses.h... $ECHO_C" >&6
# Check whether --with-curses-h or --without-curses-h was given.
@@ -2928,13 +3462,12 @@ if test "${with_curses_h+set}" = set; then
else
with_curses_h=yes
fi;
-echo "$as_me:2931: result: $with_curses_h" >&5
+echo "$as_me:3465: result: $with_curses_h" >&5
echo "${ECHO_T}$with_curses_h" >&6
modules_to_build="ncurses"
-if test "X$cf_with_progs" != Xno ; then
-modules_to_build="$modules_to_build progs tack"
-fi
+test "X$cf_with_progs" != Xno && modules_to_build="$modules_to_build progs"
+test "X$cf_with_tack" != Xno && modules_to_build="$modules_to_build tack"
modules_to_build="$modules_to_build panel menu form"
test "$program_prefix" != NONE &&
@@ -2954,7 +3487,7 @@ for ac_prog in mawk gawk nawk awk
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 "$as_me:2957: checking for $ac_word" >&5
+echo "$as_me:3490: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_AWK+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2969,7 +3502,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_AWK="$ac_prog"
-echo "$as_me:2972: found $ac_dir/$ac_word" >&5
+echo "$as_me:3505: found $ac_dir/$ac_word" >&5
break
done
@@ -2977,35 +3510,35 @@ fi
fi
AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
- echo "$as_me:2980: result: $AWK" >&5
+ echo "$as_me:3513: result: $AWK" >&5
echo "${ECHO_T}$AWK" >&6
else
- echo "$as_me:2983: result: no" >&5
+ echo "$as_me:3516: result: no" >&5
echo "${ECHO_T}no" >&6
fi
test -n "$AWK" && break
done
-test -z "$AWK" && { { echo "$as_me:2990: error: No awk program found" >&5
+test -z "$AWK" && { { echo "$as_me:3523: error: No awk program found" >&5
echo "$as_me: error: No awk program found" >&2;}
{ (exit 1); exit 1; }; }
-echo "$as_me:2994: checking for egrep" >&5
+echo "$as_me:3527: checking for egrep" >&5
echo $ECHO_N "checking for egrep... $ECHO_C" >&6
if test "${ac_cv_prog_egrep+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
if echo a | (grep -E '(a|b)') >/dev/null 2>&1
- then ac_cv_prog_egrep='grep -E'
- else ac_cv_prog_egrep='egrep'
- fi
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi
fi
-echo "$as_me:3004: result: $ac_cv_prog_egrep" >&5
+echo "$as_me:3537: result: $ac_cv_prog_egrep" >&5
echo "${ECHO_T}$ac_cv_prog_egrep" >&6
- EGREP=$ac_cv_prog_egrep
+ EGREP=$ac_cv_prog_egrep
-test -z "$EGREP" && { { echo "$as_me:3008: error: No egrep program found" >&5
+ test -z "$EGREP" && { { echo "$as_me:3541: error: No egrep program found" >&5
echo "$as_me: error: No egrep program found" >&2;}
{ (exit 1); exit 1; }; }
@@ -3021,7 +3554,7 @@ echo "$as_me: error: No egrep program found" >&2;}
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:3024: checking for a BSD compatible install" >&5
+echo "$as_me:3557: checking for a BSD compatible install" >&5
echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
if test -z "$INSTALL"; then
if test "${ac_cv_path_install+set}" = set; then
@@ -3070,7 +3603,7 @@ fi
INSTALL=$ac_install_sh
fi
fi
-echo "$as_me:3073: result: $INSTALL" >&5
+echo "$as_me:3606: result: $INSTALL" >&5
echo "${ECHO_T}$INSTALL" >&6
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
@@ -3082,20 +3615,20 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
case $INSTALL in
-/*)
- ;;
-*)
- cf_dir=`echo $INSTALL | sed -e 's%/[^/]*$%%'`
- test -z "$cf_dir" && cf_dir=.
- INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
- ;;
+(/*)
+ ;;
+(*)
+ cf_dir=`echo $INSTALL | sed -e 's%/[^/]*$%%'`
+ test -z "$cf_dir" && cf_dir=.
+ INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
+ ;;
esac
-for ac_prog in tdlint lint alint splint lclint
+for ac_prog in lint cppcheck splint
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 "$as_me:3098: checking for $ac_word" >&5
+echo "$as_me:3631: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_LINT+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3110,7 +3643,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_LINT="$ac_prog"
-echo "$as_me:3113: found $ac_dir/$ac_word" >&5
+echo "$as_me:3646: found $ac_dir/$ac_word" >&5
break
done
@@ -3118,28 +3651,34 @@ fi
fi
LINT=$ac_cv_prog_LINT
if test -n "$LINT"; then
- echo "$as_me:3121: result: $LINT" >&5
+ echo "$as_me:3654: result: $LINT" >&5
echo "${ECHO_T}$LINT" >&6
else
- echo "$as_me:3124: result: no" >&5
+ echo "$as_me:3657: result: no" >&5
echo "${ECHO_T}no" >&6
fi
test -n "$LINT" && break
done
-echo "$as_me:3131: checking whether ln -s works" >&5
+case "x$LINT" in
+(xcppcheck|x*/cppcheck)
+ test -z "$LINT_OPTS" && LINT_OPTS="--enable=all"
+ ;;
+esac
+
+echo "$as_me:3670: checking whether ln -s works" >&5
echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
LN_S=$as_ln_s
if test "$LN_S" = "ln -s"; then
- echo "$as_me:3135: result: yes" >&5
+ echo "$as_me:3674: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
- echo "$as_me:3138: result: no, using $LN_S" >&5
+ echo "$as_me:3677: result: no, using $LN_S" >&5
echo "${ECHO_T}no, using $LN_S" >&6
fi
-echo "$as_me:3142: checking if $LN_S -f options work" >&5
+echo "$as_me:3681: checking if $LN_S -f options work" >&5
echo $ECHO_N "checking if $LN_S -f options work... $ECHO_C" >&6
rm -f conf$$.src conf$$dst
@@ -3151,12 +3690,12 @@ else
cf_prog_ln_sf=no
fi
rm -f conf$$.dst conf$$src
-echo "$as_me:3154: result: $cf_prog_ln_sf" >&5
+echo "$as_me:3693: result: $cf_prog_ln_sf" >&5
echo "${ECHO_T}$cf_prog_ln_sf" >&6
test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f"
-echo "$as_me:3159: checking for long file names" >&5
+echo "$as_me:3698: checking for long file names" >&5
echo $ECHO_N "checking for long file names... $ECHO_C" >&6
if test "${ac_cv_sys_long_file_names+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3195,7 +3734,7 @@ for ac_dir in . $ac_tmpdirs `eval echo $prefix/lib $exec_prefix/lib` ; do
rm -rf $ac_xdir 2>/dev/null
done
fi
-echo "$as_me:3198: result: $ac_cv_sys_long_file_names" >&5
+echo "$as_me:3737: result: $ac_cv_sys_long_file_names" >&5
echo "${ECHO_T}$ac_cv_sys_long_file_names" >&6
if test $ac_cv_sys_long_file_names = yes; then
@@ -3205,9 +3744,26 @@ EOF
fi
-# if we find pkg-config, check if we should install the ".pc" files.
+# Provide for renaming "ncurses5-config" to "ncurses5X-config", etc., in case
+# of package conflict.
+cf_config_suffix=
-echo "$as_me:3210: checking if you want to use pkg-config" >&5
+# Check whether --with-config-suffix or --without-config-suffix was given.
+if test "${with_config_suffix+set}" = set; then
+ withval="$with_config_suffix"
+ case "x$withval" in
+ (xyes|xno)
+ { echo "$as_me:3756: WARNING: expected a value for config-suffix option" >&5
+echo "$as_me: WARNING: expected a value for config-suffix option" >&2;}
+ ;;
+ (*) cf_config_suffix="$withval"
+ ;;
+ esac
+fi;
+
+# If we find pkg-config, check if we should install the ".pc" files.
+
+echo "$as_me:3766: checking if you want to use pkg-config" >&5
echo $ECHO_N "checking if you want to use pkg-config... $ECHO_C" >&6
# Check whether --with-pkg-config or --without-pkg-config was given.
@@ -3217,19 +3773,19 @@ if test "${with_pkg_config+set}" = set; then
else
cf_pkg_config=yes
fi;
-echo "$as_me:3220: result: $cf_pkg_config" >&5
+echo "$as_me:3776: result: $cf_pkg_config" >&5
echo "${ECHO_T}$cf_pkg_config" >&6
-case $cf_pkg_config in #(vi
-no) #(vi
+case $cf_pkg_config in
+(no)
PKG_CONFIG=none
;;
-yes) #(vi
+(yes)
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-echo "$as_me:3232: checking for $ac_word" >&5
+echo "$as_me:3788: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3246,7 +3802,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if $as_executable_p "$ac_dir/$ac_word"; then
ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word"
- echo "$as_me:3249: found $ac_dir/$ac_word" >&5
+ echo "$as_me:3805: found $ac_dir/$ac_word" >&5
break
fi
done
@@ -3257,10 +3813,10 @@ fi
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
if test -n "$PKG_CONFIG"; then
- echo "$as_me:3260: result: $PKG_CONFIG" >&5
+ echo "$as_me:3816: result: $PKG_CONFIG" >&5
echo "${ECHO_T}$PKG_CONFIG" >&6
else
- echo "$as_me:3263: result: no" >&5
+ echo "$as_me:3819: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3269,7 +3825,7 @@ if test -z "$ac_cv_path_PKG_CONFIG"; then
ac_pt_PKG_CONFIG=$PKG_CONFIG
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
-echo "$as_me:3272: checking for $ac_word" >&5
+echo "$as_me:3828: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3286,7 +3842,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if $as_executable_p "$ac_dir/$ac_word"; then
ac_cv_path_ac_pt_PKG_CONFIG="$ac_dir/$ac_word"
- echo "$as_me:3289: found $ac_dir/$ac_word" >&5
+ echo "$as_me:3845: found $ac_dir/$ac_word" >&5
break
fi
done
@@ -3298,10 +3854,10 @@ fi
ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
if test -n "$ac_pt_PKG_CONFIG"; then
- echo "$as_me:3301: result: $ac_pt_PKG_CONFIG" >&5
+ echo "$as_me:3857: result: $ac_pt_PKG_CONFIG" >&5
echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6
else
- echo "$as_me:3304: result: no" >&5
+ echo "$as_me:3860: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3311,7 +3867,7 @@ else
fi
;;
-*)
+(*)
PKG_CONFIG=$withval
;;
esac
@@ -3320,83 +3876,136 @@ test -z "$PKG_CONFIG" && PKG_CONFIG=none
if test "$PKG_CONFIG" != none ; then
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
+ cf_path_syntax="$ac_default_prefix"
fi
-case ".$PKG_CONFIG" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*|.\${*dir}*) #(vi
- eval PKG_CONFIG="$PKG_CONFIG"
- case ".$PKG_CONFIG" in #(vi
- .NONE/*)
- PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- { { echo "$as_me:3347: error: expected a pathname, not \"$PKG_CONFIG\"" >&5
+case ".$PKG_CONFIG" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval PKG_CONFIG="$PKG_CONFIG"
+ case ".$PKG_CONFIG" in
+ (.NONE/*)
+ PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:3903: error: expected a pathname, not \"$PKG_CONFIG\"" >&5
echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG\"" >&2;}
{ (exit 1); exit 1; }; }
- ;;
+ ;;
esac
+elif test "x$cf_pkg_config" != xno ; then
+ { echo "$as_me:3910: WARNING: pkg-config is not installed" >&5
+echo "$as_me: WARNING: pkg-config is not installed" >&2;}
fi
-if test "$PKG_CONFIG" != none ; then
- echo "$as_me:3356: checking for $PKG_CONFIG library directory" >&5
+case $PKG_CONFIG in
+(no|none|yes)
+ echo "$as_me:3916: checking for pkg-config library directory" >&5
+echo $ECHO_N "checking for pkg-config library directory... $ECHO_C" >&6
+ ;;
+(*)
+ echo "$as_me:3920: checking for $PKG_CONFIG library directory" >&5
echo $ECHO_N "checking for $PKG_CONFIG library directory... $ECHO_C" >&6
+ ;;
+esac
+
+PKG_CONFIG_LIBDIR=no
# Check whether --with-pkg-config-libdir or --without-pkg-config-libdir was given.
if test "${with_pkg_config_libdir+set}" = set; then
withval="$with_pkg_config_libdir"
PKG_CONFIG_LIBDIR=$withval
else
- PKG_CONFIG_LIBDIR=yes
+ test "x$PKG_CONFIG" != xnone && PKG_CONFIG_LIBDIR=yes
fi;
- case x$PKG_CONFIG_LIBDIR in #(vi
- x/*) #(vi
- ;;
- xyes) #(vi
- # look for the library directory using the same prefix as the executable
+case x$PKG_CONFIG_LIBDIR in
+(x/*)
+ ;;
+(xyes)
+ # Look for the library directory using the same prefix as the executable
+ if test "x$PKG_CONFIG" = xnone
+ then
+ cf_path=$prefix
+ else
cf_path=`echo "$PKG_CONFIG" | sed -e 's,/[^/]*/[^/]*$,,'`
- case x`(arch) 2>/dev/null` in #(vi
- *64) #(vi
- for cf_config in $cf_path/share $cf_path/lib64 $cf_path/lib32 $cf_path/lib
- do
- if test -d $cf_config/pkgconfig
- then
- PKG_CONFIG_LIBDIR=$cf_config/pkgconfig
- break
- fi
- done
- ;;
- *)
- PKG_CONFIG_LIBDIR=$cf_path/lib/pkgconfig
- ;;
- esac
+ fi
+
+ # If you don't like using the default architecture, you have to specify the
+ # intended library directory and corresponding compiler/linker options.
+ #
+ # This case allows for Debian's 2014-flavor of multiarch, along with the
+ # most common variations before that point. Some other variants spell the
+ # directory differently, e.g., "pkg-config", and put it in unusual places.
+ # pkg-config has always been poorly standardized, which is ironic...
+ case x`(arch) 2>/dev/null` in
+ (*64)
+ cf_search_path="\
+ $cf_path/lib/*64-linux-gnu \
+ $cf_path/share \
+ $cf_path/lib64 \
+ $cf_path/lib32 \
+ $cf_path/lib"
;;
- *)
+ (*)
+ cf_search_path="\
+ $cf_path/lib/*-linux-gnu \
+ $cf_path/share \
+ $cf_path/lib32 \
+ $cf_path/lib \
+ $cf_path/libdata"
;;
esac
- echo "$as_me:3393: result: $PKG_CONFIG_LIBDIR" >&5
+ test -n "$verbose" && echo " list..." 1>&6
+
+echo "${as_me:-configure}:3975: testing list... ..." 1>&5
+
+ for cf_config in $cf_search_path
+ do
+ test -n "$verbose" && echo " checking $cf_config/pkgconfig" 1>&6
+
+echo "${as_me:-configure}:3981: testing checking $cf_config/pkgconfig ..." 1>&5
+
+ if test -d $cf_config/pkgconfig
+ then
+ PKG_CONFIG_LIBDIR=$cf_config/pkgconfig
+ echo "$as_me:3986: checking done" >&5
+echo $ECHO_N "checking done... $ECHO_C" >&6
+ break
+ fi
+ done
+ ;;
+(*)
+ ;;
+esac
+
+if test "x$PKG_CONFIG_LIBDIR" != xno ; then
+ echo "$as_me:3997: result: $PKG_CONFIG_LIBDIR" >&5
echo "${ECHO_T}$PKG_CONFIG_LIBDIR" >&6
fi
-if test "$PKG_CONFIG" != none ; then
- echo "$as_me:3398: checking if we should install .pc files for $PKG_CONFIG" >&5
+if test "x$PKG_CONFIG" != xnone
+then
+ echo "$as_me:4003: checking if we should install .pc files for $PKG_CONFIG" >&5
echo $ECHO_N "checking if we should install .pc files for $PKG_CONFIG... $ECHO_C" >&6
+else
+ echo "$as_me:4006: checking if we should install .pc files" >&5
+echo $ECHO_N "checking if we should install .pc files... $ECHO_C" >&6
+fi
# Check whether --enable-pc-files or --disable-pc-files was given.
if test "${enable_pc_files+set}" = set; then
@@ -3405,48 +4014,80 @@ if test "${enable_pc_files+set}" = set; then
else
enable_pc_files=no
fi;
- echo "$as_me:3408: result: $enable_pc_files" >&5
+echo "$as_me:4017: result: $enable_pc_files" >&5
echo "${ECHO_T}$enable_pc_files" >&6
- if test "$enable_pc_files" != no
- then
+
+if test "x$enable_pc_files" != xno
+then
+ MAKE_PC_FILES=
+ case "x$PKG_CONFIG_LIBDIR" in
+ (xno|xyes)
+ { echo "$as_me:4025: WARNING: no PKG_CONFIG_LIBDIR was found" >&5
+echo "$as_me: WARNING: no PKG_CONFIG_LIBDIR was found" >&2;}
+ ;;
+ (*)
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
+ cf_path_syntax="$ac_default_prefix"
fi
-case ".$PKG_CONFIG_LIBDIR" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*|.\${*dir}*) #(vi
- eval PKG_CONFIG_LIBDIR="$PKG_CONFIG_LIBDIR"
- case ".$PKG_CONFIG_LIBDIR" in #(vi
- .NONE/*)
- PKG_CONFIG_LIBDIR=`echo $PKG_CONFIG_LIBDIR | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- PKG_CONFIG_LIBDIR=`echo $PKG_CONFIG_LIBDIR | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- { { echo "$as_me:3438: error: expected a pathname, not \"$PKG_CONFIG_LIBDIR\"" >&5
+case ".$PKG_CONFIG_LIBDIR" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval PKG_CONFIG_LIBDIR="$PKG_CONFIG_LIBDIR"
+ case ".$PKG_CONFIG_LIBDIR" in
+ (.NONE/*)
+ PKG_CONFIG_LIBDIR=`echo $PKG_CONFIG_LIBDIR | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ PKG_CONFIG_LIBDIR=`echo $PKG_CONFIG_LIBDIR | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:4055: error: expected a pathname, not \"$PKG_CONFIG_LIBDIR\"" >&5
echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG_LIBDIR\"" >&2;}
{ (exit 1); exit 1; }; }
- ;;
+ ;;
esac
- fi
+ ;;
+ esac
else
- enable_pc_files=no
+ MAKE_PC_FILES="#"
fi
-echo "$as_me:3449: checking if we should assume mixed-case filenames" >&5
+if test -z "$MAKE_PC_FILES"
+then
+ echo "$as_me:4069: checking for suffix to add to pc-files" >&5
+echo $ECHO_N "checking for suffix to add to pc-files... $ECHO_C" >&6
+
+# Check whether --with-pc-suffix or --without-pc-suffix was given.
+if test "${with_pc_suffix+set}" = set; then
+ withval="$with_pc_suffix"
+ case "x$withval" in
+ (xyes|xno)
+ PC_MODULE_SUFFIX=
+ ;;
+ (*) PC_MODULE_SUFFIX="$withval"
+ ;;
+ esac
+fi;
+ test -z "$PC_MODULE_SUFFIX" && PC_MODULE_SUFFIX=none
+ echo "$as_me:4084: result: $PC_MODULE_SUFFIX" >&5
+echo "${ECHO_T}$PC_MODULE_SUFFIX" >&6
+ test "$PC_MODULE_SUFFIX" = none && PC_MODULE_SUFFIX=
+
+fi
+
+echo "$as_me:4090: checking if we should assume mixed-case filenames" >&5
echo $ECHO_N "checking if we should assume mixed-case filenames... $ECHO_C" >&6
# Check whether --enable-mixed-case or --disable-mixed-case was given.
@@ -3456,22 +4097,22 @@ if test "${enable_mixed_case+set}" = set; then
else
enable_mixedcase=auto
fi;
-echo "$as_me:3459: result: $enable_mixedcase" >&5
+echo "$as_me:4100: result: $enable_mixedcase" >&5
echo "${ECHO_T}$enable_mixedcase" >&6
if test "$enable_mixedcase" = "auto" ; then
-echo "$as_me:3463: checking if filesystem supports mixed-case filenames" >&5
+echo "$as_me:4104: checking if filesystem supports mixed-case filenames" >&5
echo $ECHO_N "checking if filesystem supports mixed-case filenames... $ECHO_C" >&6
if test "${cf_cv_mixedcase+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test "$cross_compiling" = yes ; then
- case $target_alias in #(vi
- *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*) #(vi
+ case $target_alias in
+ (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*)
cf_cv_mixedcase=no
;;
- *)
+ (*)
cf_cv_mixedcase=yes
;;
esac
@@ -3487,7 +4128,7 @@ else
fi
fi
-echo "$as_me:3490: result: $cf_cv_mixedcase" >&5
+echo "$as_me:4131: result: $cf_cv_mixedcase" >&5
echo "${ECHO_T}$cf_cv_mixedcase" >&6
test "$cf_cv_mixedcase" = yes &&
cat >>confdefs.h <<\EOF
@@ -3495,18 +4136,18 @@ cat >>confdefs.h <<\EOF
EOF
else
- cf_cv_mixedcase=$enable_mixedcase
- if test "x$enable_mixedcase" = "xyes" ; then
+ cf_cv_mixedcase=$enable_mixedcase
+ if test "x$enable_mixedcase" = "xyes" ; then
cat >>confdefs.h <<\EOF
#define MIXEDCASE_FILENAMES 1
EOF
- fi
+ fi
fi
# do this after mixed-case option (tags/TAGS is not as important as tic).
-echo "$as_me:3509: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "$as_me:4150: checking whether ${MAKE-make} sets \${MAKE}" >&5
echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
@@ -3526,11 +4167,11 @@ fi
rm -f conftest.make
fi
if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
- echo "$as_me:3529: result: yes" >&5
+ echo "$as_me:4170: result: yes" >&5
echo "${ECHO_T}yes" >&6
SET_MAKE=
else
- echo "$as_me:3533: result: no" >&5
+ echo "$as_me:4174: result: no" >&5
echo "${ECHO_T}no" >&6
SET_MAKE="MAKE=${MAKE-make}"
fi
@@ -3539,7 +4180,7 @@ for ac_prog in exctags ctags
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 "$as_me:3542: checking for $ac_word" >&5
+echo "$as_me:4183: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_CTAGS+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3554,7 +4195,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_CTAGS="$ac_prog"
-echo "$as_me:3557: found $ac_dir/$ac_word" >&5
+echo "$as_me:4198: found $ac_dir/$ac_word" >&5
break
done
@@ -3562,10 +4203,10 @@ fi
fi
CTAGS=$ac_cv_prog_CTAGS
if test -n "$CTAGS"; then
- echo "$as_me:3565: result: $CTAGS" >&5
+ echo "$as_me:4206: result: $CTAGS" >&5
echo "${ECHO_T}$CTAGS" >&6
else
- echo "$as_me:3568: result: no" >&5
+ echo "$as_me:4209: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3576,7 +4217,7 @@ for ac_prog in exetags etags
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 "$as_me:3579: checking for $ac_word" >&5
+echo "$as_me:4220: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ETAGS+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3591,7 +4232,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ETAGS="$ac_prog"
-echo "$as_me:3594: found $ac_dir/$ac_word" >&5
+echo "$as_me:4235: found $ac_dir/$ac_word" >&5
break
done
@@ -3599,10 +4240,10 @@ fi
fi
ETAGS=$ac_cv_prog_ETAGS
if test -n "$ETAGS"; then
- echo "$as_me:3602: result: $ETAGS" >&5
+ echo "$as_me:4243: result: $ETAGS" >&5
echo "${ECHO_T}$ETAGS" >&6
else
- echo "$as_me:3605: result: no" >&5
+ echo "$as_me:4246: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3611,7 +4252,7 @@ done
# Extract the first word of "${CTAGS:-ctags}", so it can be a program name with args.
set dummy ${CTAGS:-ctags}; ac_word=$2
-echo "$as_me:3614: checking for $ac_word" >&5
+echo "$as_me:4255: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_MAKE_LOWER_TAGS+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3626,7 +4267,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_MAKE_LOWER_TAGS="yes"
-echo "$as_me:3629: found $ac_dir/$ac_word" >&5
+echo "$as_me:4270: found $ac_dir/$ac_word" >&5
break
done
@@ -3635,17 +4276,17 @@ fi
fi
MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS
if test -n "$MAKE_LOWER_TAGS"; then
- echo "$as_me:3638: result: $MAKE_LOWER_TAGS" >&5
+ echo "$as_me:4279: result: $MAKE_LOWER_TAGS" >&5
echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6
else
- echo "$as_me:3641: result: no" >&5
+ echo "$as_me:4282: result: no" >&5
echo "${ECHO_T}no" >&6
fi
if test "$cf_cv_mixedcase" = yes ; then
# Extract the first word of "${ETAGS:-etags}", so it can be a program name with args.
set dummy ${ETAGS:-etags}; ac_word=$2
-echo "$as_me:3648: checking for $ac_word" >&5
+echo "$as_me:4289: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_MAKE_UPPER_TAGS+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3660,7 +4301,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_MAKE_UPPER_TAGS="yes"
-echo "$as_me:3663: found $ac_dir/$ac_word" >&5
+echo "$as_me:4304: found $ac_dir/$ac_word" >&5
break
done
@@ -3669,10 +4310,10 @@ fi
fi
MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS
if test -n "$MAKE_UPPER_TAGS"; then
- echo "$as_me:3672: result: $MAKE_UPPER_TAGS" >&5
+ echo "$as_me:4313: result: $MAKE_UPPER_TAGS" >&5
echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6
else
- echo "$as_me:3675: result: no" >&5
+ echo "$as_me:4316: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3692,7 +4333,7 @@ else
MAKE_LOWER_TAGS="#"
fi
-echo "$as_me:3695: checking for makeflags variable" >&5
+echo "$as_me:4336: checking for makeflags variable" >&5
echo $ECHO_N "checking for makeflags variable... $ECHO_C" >&6
if test "${cf_cv_makeflags+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3702,37 +4343,41 @@ else
for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
do
cat >cf_makeflags.tmp <<CF_EOF
-SHELL = /bin/sh
+SHELL = $SHELL
all :
@ echo '.$cf_option'
CF_EOF
cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp 2>/dev/null | fgrep -v "ing directory" | sed -e 's,[ ]*$,,'`
case "$cf_result" in
- .*k)
+ (.*k|.*kw)
cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`
case "$cf_result" in
- .*CC=*) cf_cv_makeflags=
+ (.*CC=*) cf_cv_makeflags=
;;
- *) cf_cv_makeflags=$cf_option
+ (*) cf_cv_makeflags=$cf_option
;;
esac
break
;;
- .-) ;;
- *) echo "given option \"$cf_option\", no match \"$cf_result\""
+ (.-)
+ ;;
+ (*)
+
+echo "${as_me:-configure}:4366: testing given option \"$cf_option\",no match \"$cf_result\" ..." 1>&5
+
;;
esac
done
rm -f cf_makeflags.tmp
fi
-echo "$as_me:3729: result: $cf_cv_makeflags" >&5
+echo "$as_me:4374: result: $cf_cv_makeflags" >&5
echo "${ECHO_T}$cf_cv_makeflags" >&6
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-echo "$as_me:3735: checking for $ac_word" >&5
+echo "$as_me:4380: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_RANLIB+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3747,7 +4392,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-echo "$as_me:3750: found $ac_dir/$ac_word" >&5
+echo "$as_me:4395: found $ac_dir/$ac_word" >&5
break
done
@@ -3755,10 +4400,10 @@ fi
fi
RANLIB=$ac_cv_prog_RANLIB
if test -n "$RANLIB"; then
- echo "$as_me:3758: result: $RANLIB" >&5
+ echo "$as_me:4403: result: $RANLIB" >&5
echo "${ECHO_T}$RANLIB" >&6
else
- echo "$as_me:3761: result: no" >&5
+ echo "$as_me:4406: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3767,7 +4412,7 @@ if test -z "$ac_cv_prog_RANLIB"; then
ac_ct_RANLIB=$RANLIB
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
-echo "$as_me:3770: checking for $ac_word" >&5
+echo "$as_me:4415: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3782,7 +4427,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_RANLIB="ranlib"
-echo "$as_me:3785: found $ac_dir/$ac_word" >&5
+echo "$as_me:4430: found $ac_dir/$ac_word" >&5
break
done
@@ -3791,10 +4436,10 @@ fi
fi
ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
if test -n "$ac_ct_RANLIB"; then
- echo "$as_me:3794: result: $ac_ct_RANLIB" >&5
+ echo "$as_me:4439: result: $ac_ct_RANLIB" >&5
echo "${ECHO_T}$ac_ct_RANLIB" >&6
else
- echo "$as_me:3797: result: no" >&5
+ echo "$as_me:4442: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3806,7 +4451,7 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
set dummy ${ac_tool_prefix}ld; ac_word=$2
-echo "$as_me:3809: checking for $ac_word" >&5
+echo "$as_me:4454: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_LD+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3821,7 +4466,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_LD="${ac_tool_prefix}ld"
-echo "$as_me:3824: found $ac_dir/$ac_word" >&5
+echo "$as_me:4469: found $ac_dir/$ac_word" >&5
break
done
@@ -3829,10 +4474,10 @@ fi
fi
LD=$ac_cv_prog_LD
if test -n "$LD"; then
- echo "$as_me:3832: result: $LD" >&5
+ echo "$as_me:4477: result: $LD" >&5
echo "${ECHO_T}$LD" >&6
else
- echo "$as_me:3835: result: no" >&5
+ echo "$as_me:4480: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3841,7 +4486,7 @@ if test -z "$ac_cv_prog_LD"; then
ac_ct_LD=$LD
# Extract the first word of "ld", so it can be a program name with args.
set dummy ld; ac_word=$2
-echo "$as_me:3844: checking for $ac_word" >&5
+echo "$as_me:4489: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_LD+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3856,7 +4501,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_LD="ld"
-echo "$as_me:3859: found $ac_dir/$ac_word" >&5
+echo "$as_me:4504: found $ac_dir/$ac_word" >&5
break
done
@@ -3865,10 +4510,10 @@ fi
fi
ac_ct_LD=$ac_cv_prog_ac_ct_LD
if test -n "$ac_ct_LD"; then
- echo "$as_me:3868: result: $ac_ct_LD" >&5
+ echo "$as_me:4513: result: $ac_ct_LD" >&5
echo "${ECHO_T}$ac_ct_LD" >&6
else
- echo "$as_me:3871: result: no" >&5
+ echo "$as_me:4516: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3880,7 +4525,7 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2
-echo "$as_me:3883: checking for $ac_word" >&5
+echo "$as_me:4528: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_AR+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3895,7 +4540,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_AR="${ac_tool_prefix}ar"
-echo "$as_me:3898: found $ac_dir/$ac_word" >&5
+echo "$as_me:4543: found $ac_dir/$ac_word" >&5
break
done
@@ -3903,10 +4548,10 @@ fi
fi
AR=$ac_cv_prog_AR
if test -n "$AR"; then
- echo "$as_me:3906: result: $AR" >&5
+ echo "$as_me:4551: result: $AR" >&5
echo "${ECHO_T}$AR" >&6
else
- echo "$as_me:3909: result: no" >&5
+ echo "$as_me:4554: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3915,7 +4560,7 @@ if test -z "$ac_cv_prog_AR"; then
ac_ct_AR=$AR
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
-echo "$as_me:3918: checking for $ac_word" >&5
+echo "$as_me:4563: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3930,7 +4575,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_AR="ar"
-echo "$as_me:3933: found $ac_dir/$ac_word" >&5
+echo "$as_me:4578: found $ac_dir/$ac_word" >&5
break
done
@@ -3939,10 +4584,10 @@ fi
fi
ac_ct_AR=$ac_cv_prog_ac_ct_AR
if test -n "$ac_ct_AR"; then
- echo "$as_me:3942: result: $ac_ct_AR" >&5
+ echo "$as_me:4587: result: $ac_ct_AR" >&5
echo "${ECHO_T}$ac_ct_AR" >&6
else
- echo "$as_me:3945: result: no" >&5
+ echo "$as_me:4590: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3954,7 +4599,7 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args.
set dummy ${ac_tool_prefix}nm; ac_word=$2
-echo "$as_me:3957: checking for $ac_word" >&5
+echo "$as_me:4602: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_NM+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3969,7 +4614,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_NM="${ac_tool_prefix}nm"
-echo "$as_me:3972: found $ac_dir/$ac_word" >&5
+echo "$as_me:4617: found $ac_dir/$ac_word" >&5
break
done
@@ -3977,10 +4622,10 @@ fi
fi
NM=$ac_cv_prog_NM
if test -n "$NM"; then
- echo "$as_me:3980: result: $NM" >&5
+ echo "$as_me:4625: result: $NM" >&5
echo "${ECHO_T}$NM" >&6
else
- echo "$as_me:3983: result: no" >&5
+ echo "$as_me:4628: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3989,7 +4634,7 @@ if test -z "$ac_cv_prog_NM"; then
ac_ct_NM=$NM
# Extract the first word of "nm", so it can be a program name with args.
set dummy nm; ac_word=$2
-echo "$as_me:3992: checking for $ac_word" >&5
+echo "$as_me:4637: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_NM+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4004,7 +4649,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_NM="nm"
-echo "$as_me:4007: found $ac_dir/$ac_word" >&5
+echo "$as_me:4652: found $ac_dir/$ac_word" >&5
break
done
@@ -4013,10 +4658,10 @@ fi
fi
ac_ct_NM=$ac_cv_prog_ac_ct_NM
if test -n "$ac_ct_NM"; then
- echo "$as_me:4016: result: $ac_ct_NM" >&5
+ echo "$as_me:4661: result: $ac_ct_NM" >&5
echo "${ECHO_T}$ac_ct_NM" >&6
else
- echo "$as_me:4019: result: no" >&5
+ echo "$as_me:4664: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4028,7 +4673,7 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2
-echo "$as_me:4031: checking for $ac_word" >&5
+echo "$as_me:4676: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_AR+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4043,7 +4688,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_AR="${ac_tool_prefix}ar"
-echo "$as_me:4046: found $ac_dir/$ac_word" >&5
+echo "$as_me:4691: found $ac_dir/$ac_word" >&5
break
done
@@ -4051,10 +4696,10 @@ fi
fi
AR=$ac_cv_prog_AR
if test -n "$AR"; then
- echo "$as_me:4054: result: $AR" >&5
+ echo "$as_me:4699: result: $AR" >&5
echo "${ECHO_T}$AR" >&6
else
- echo "$as_me:4057: result: no" >&5
+ echo "$as_me:4702: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4063,7 +4708,7 @@ if test -z "$ac_cv_prog_AR"; then
ac_ct_AR=$AR
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
-echo "$as_me:4066: checking for $ac_word" >&5
+echo "$as_me:4711: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4078,7 +4723,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_AR="ar"
-echo "$as_me:4081: found $ac_dir/$ac_word" >&5
+echo "$as_me:4726: found $ac_dir/$ac_word" >&5
break
done
@@ -4087,10 +4732,10 @@ fi
fi
ac_ct_AR=$ac_cv_prog_ac_ct_AR
if test -n "$ac_ct_AR"; then
- echo "$as_me:4090: result: $ac_ct_AR" >&5
+ echo "$as_me:4735: result: $ac_ct_AR" >&5
echo "${ECHO_T}$ac_ct_AR" >&6
else
- echo "$as_me:4093: result: no" >&5
+ echo "$as_me:4738: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4099,14 +4744,14 @@ else
AR="$ac_cv_prog_AR"
fi
-echo "$as_me:4102: checking for options to update archives" >&5
+echo "$as_me:4747: checking for options to update archives" >&5
echo $ECHO_N "checking for options to update archives... $ECHO_C" >&6
if test "${cf_cv_ar_flags+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cf_cv_ar_flags=unknown
- for cf_ar_flags in -curv curv -crv crv -cqv cqv -rv rv
+ for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
do
# check if $ARFLAGS already contains this choice
@@ -4122,13 +4767,13 @@ else
rm -f conftest.a
cat >conftest.$ac_ext <<EOF
-#line 4125 "configure"
+#line 4770 "configure"
int testdata[3] = { 123, 456, 789 };
EOF
- if { (eval echo "$as_me:4128: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:4773: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:4131: \$? = $ac_status" >&5
+ echo "$as_me:4776: \$? = $ac_status" >&5
(exit $ac_status); } ; then
echo "$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext" >&5
$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext 2>&5 1>/dev/null
@@ -4139,7 +4784,7 @@ EOF
else
test -n "$verbose" && echo " cannot compile test-program" 1>&6
-echo "${as_me:-configure}:4142: testing cannot compile test-program ..." 1>&5
+echo "${as_me:-configure}:4787: testing cannot compile test-program ..." 1>&5
break
fi
@@ -4147,7 +4792,7 @@ echo "${as_me:-configure}:4142: testing cannot compile test-program ..." 1>&5
rm -f conftest.a conftest.$ac_ext conftest.$ac_cv_objext
fi
-echo "$as_me:4150: result: $cf_cv_ar_flags" >&5
+echo "$as_me:4795: result: $cf_cv_ar_flags" >&5
echo "${ECHO_T}$cf_cv_ar_flags" >&6
if test -n "$ARFLAGS" ; then
@@ -4158,20 +4803,20 @@ else
ARFLAGS=$cf_cv_ar_flags
fi
-echo "$as_me:4161: checking if you have specified an install-prefix" >&5
+echo "$as_me:4806: checking if you have specified an install-prefix" >&5
echo $ECHO_N "checking if you have specified an install-prefix... $ECHO_C" >&6
# Check whether --with-install-prefix or --without-install-prefix was given.
if test "${with_install_prefix+set}" = set; then
withval="$with_install_prefix"
- case "x$withval" in #(vi
- xyes|xno) #(vi
+ case "x$withval" in
+ (xyes|xno)
;;
- *) DESTDIR="$withval"
+ (*) DESTDIR="$withval"
;;
esac
fi;
-echo "$as_me:4174: result: $DESTDIR" >&5
+echo "$as_me:4819: result: $DESTDIR" >&5
echo "${ECHO_T}$DESTDIR" >&6
###############################################################################
@@ -4195,11 +4840,11 @@ if test "${with_build_cc+set}" = set; then
withval="$with_build_cc"
BUILD_CC="$withval"
else
- for ac_prog in gcc cc cl
+ for ac_prog in gcc clang c99 c89 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 "$as_me:4202: checking for $ac_word" >&5
+echo "$as_me:4847: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_BUILD_CC+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4214,7 +4859,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_BUILD_CC="$ac_prog"
-echo "$as_me:4217: found $ac_dir/$ac_word" >&5
+echo "$as_me:4862: found $ac_dir/$ac_word" >&5
break
done
@@ -4222,23 +4867,24 @@ fi
fi
BUILD_CC=$ac_cv_prog_BUILD_CC
if test -n "$BUILD_CC"; then
- echo "$as_me:4225: result: $BUILD_CC" >&5
+ echo "$as_me:4870: result: $BUILD_CC" >&5
echo "${ECHO_T}$BUILD_CC" >&6
else
- echo "$as_me:4228: result: no" >&5
+ echo "$as_me:4873: result: no" >&5
echo "${ECHO_T}no" >&6
fi
test -n "$BUILD_CC" && break
done
+test -n "$BUILD_CC" || BUILD_CC="none"
fi;
- echo "$as_me:4236: checking for native build C compiler" >&5
+ echo "$as_me:4882: checking for native build C compiler" >&5
echo $ECHO_N "checking for native build C compiler... $ECHO_C" >&6
- echo "$as_me:4238: result: $BUILD_CC" >&5
+ echo "$as_me:4884: result: $BUILD_CC" >&5
echo "${ECHO_T}$BUILD_CC" >&6
- echo "$as_me:4241: checking for native build C preprocessor" >&5
+ echo "$as_me:4887: checking for native build C preprocessor" >&5
echo $ECHO_N "checking for native build C preprocessor... $ECHO_C" >&6
# Check whether --with-build-cpp or --without-build-cpp was given.
@@ -4248,10 +4894,10 @@ if test "${with_build_cpp+set}" = set; then
else
BUILD_CPP='${BUILD_CC} -E'
fi;
- echo "$as_me:4251: result: $BUILD_CPP" >&5
+ echo "$as_me:4897: result: $BUILD_CPP" >&5
echo "${ECHO_T}$BUILD_CPP" >&6
- echo "$as_me:4254: checking for native build C flags" >&5
+ echo "$as_me:4900: checking for native build C flags" >&5
echo $ECHO_N "checking for native build C flags... $ECHO_C" >&6
# Check whether --with-build-cflags or --without-build-cflags was given.
@@ -4259,10 +4905,10 @@ if test "${with_build_cflags+set}" = set; then
withval="$with_build_cflags"
BUILD_CFLAGS="$withval"
fi;
- echo "$as_me:4262: result: $BUILD_CFLAGS" >&5
+ echo "$as_me:4908: result: $BUILD_CFLAGS" >&5
echo "${ECHO_T}$BUILD_CFLAGS" >&6
- echo "$as_me:4265: checking for native build C preprocessor-flags" >&5
+ echo "$as_me:4911: checking for native build C preprocessor-flags" >&5
echo $ECHO_N "checking for native build C preprocessor-flags... $ECHO_C" >&6
# Check whether --with-build-cppflags or --without-build-cppflags was given.
@@ -4270,10 +4916,10 @@ if test "${with_build_cppflags+set}" = set; then
withval="$with_build_cppflags"
BUILD_CPPFLAGS="$withval"
fi;
- echo "$as_me:4273: result: $BUILD_CPPFLAGS" >&5
+ echo "$as_me:4919: result: $BUILD_CPPFLAGS" >&5
echo "${ECHO_T}$BUILD_CPPFLAGS" >&6
- echo "$as_me:4276: checking for native build linker-flags" >&5
+ echo "$as_me:4922: checking for native build linker-flags" >&5
echo $ECHO_N "checking for native build linker-flags... $ECHO_C" >&6
# Check whether --with-build-ldflags or --without-build-ldflags was given.
@@ -4281,10 +4927,10 @@ if test "${with_build_ldflags+set}" = set; then
withval="$with_build_ldflags"
BUILD_LDFLAGS="$withval"
fi;
- echo "$as_me:4284: result: $BUILD_LDFLAGS" >&5
+ echo "$as_me:4930: result: $BUILD_LDFLAGS" >&5
echo "${ECHO_T}$BUILD_LDFLAGS" >&6
- echo "$as_me:4287: checking for native build linker-libraries" >&5
+ echo "$as_me:4933: checking for native build linker-libraries" >&5
echo $ECHO_N "checking for native build linker-libraries... $ECHO_C" >&6
# Check whether --with-build-libs or --without-build-libs was given.
@@ -4292,7 +4938,7 @@ if test "${with_build_libs+set}" = set; then
withval="$with_build_libs"
BUILD_LIBS="$withval"
fi;
- echo "$as_me:4295: result: $BUILD_LIBS" >&5
+ echo "$as_me:4941: result: $BUILD_LIBS" >&5
echo "${ECHO_T}$BUILD_LIBS" >&6
# this assumes we're on Unix.
@@ -4302,7 +4948,7 @@ echo "${ECHO_T}$BUILD_LIBS" >&6
: ${BUILD_CC:='${CC}'}
if ( test "$BUILD_CC" = "$CC" || test "$BUILD_CC" = '${CC}' ) ; then
- { { echo "$as_me:4305: error: Cross-build requires two compilers.
+ { { echo "$as_me:4951: error: Cross-build requires two compilers.
Use --with-build-cc to specify the native compiler." >&5
echo "$as_me: error: Cross-build requires two compilers.
Use --with-build-cc to specify the native compiler." >&2;}
@@ -4327,30 +4973,54 @@ fi
### shared, for example.
cf_list_models=""
-echo "$as_me:4330: checking if libtool -version-number should be used" >&5
+echo "$as_me:4976: checking if libtool -version-number should be used" >&5
echo $ECHO_N "checking if libtool -version-number should be used... $ECHO_C" >&6
# Check whether --enable-libtool-version or --disable-libtool-version was given.
if test "${enable_libtool_version+set}" = set; then
enableval="$enable_libtool_version"
test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
+ if test "$enableval" != "yes" ; then
cf_libtool_version=no
- else
- cf_libtool_version=yes
- fi
+ else
+ cf_libtool_version=yes
+ fi
else
enableval=yes
- cf_libtool_version=yes
+ cf_libtool_version=yes
fi;
-echo "$as_me:4347: result: $cf_libtool_version" >&5
+echo "$as_me:4993: result: $cf_libtool_version" >&5
echo "${ECHO_T}$cf_libtool_version" >&6
if test "$cf_libtool_version" = yes ; then
LIBTOOL_VERSION="-version-number"
else
LIBTOOL_VERSION="-version-info"
+ case "x$VERSION" in
+ (x)
+ { echo "$as_me:5002: WARNING: VERSION was not set" >&5
+echo "$as_me: WARNING: VERSION was not set" >&2;}
+ ;;
+ (x*.*.*)
+ ABI_VERSION="$VERSION"
+ test -n "$verbose" && echo " ABI_VERSION: $ABI_VERSION" 1>&6
+
+echo "${as_me:-configure}:5009: testing ABI_VERSION: $ABI_VERSION ..." 1>&5
+
+ ;;
+ (x*:*:*)
+ ABI_VERSION=`echo "$VERSION" | sed -e 's/:/./g'`
+ test -n "$verbose" && echo " ABI_VERSION: $ABI_VERSION" 1>&6
+
+echo "${as_me:-configure}:5016: testing ABI_VERSION: $ABI_VERSION ..." 1>&5
+
+ ;;
+ (*)
+ { echo "$as_me:5020: WARNING: unexpected VERSION value: $VERSION" >&5
+echo "$as_me: WARNING: unexpected VERSION value: $VERSION" >&2;}
+ ;;
+ esac
fi
LIBTOOL=
@@ -4369,7 +5039,7 @@ LIB_LINK='${CC}'
LIB_INSTALL=
LIB_UNINSTALL=
-echo "$as_me:4372: checking if you want to build libraries with libtool" >&5
+echo "$as_me:5042: checking if you want to build libraries with libtool" >&5
echo $ECHO_N "checking if you want to build libraries with libtool... $ECHO_C" >&6
# Check whether --with-libtool or --without-libtool was given.
@@ -4379,41 +5049,41 @@ if test "${with_libtool+set}" = set; then
else
with_libtool=no
fi;
-echo "$as_me:4382: result: $with_libtool" >&5
+echo "$as_me:5052: result: $with_libtool" >&5
echo "${ECHO_T}$with_libtool" >&6
if test "$with_libtool" != "no"; then
if test "$with_libtool" != "yes" ; then
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
+ cf_path_syntax="$ac_default_prefix"
fi
-case ".$with_libtool" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*|.\${*dir}*) #(vi
- eval with_libtool="$with_libtool"
- case ".$with_libtool" in #(vi
- .NONE/*)
- with_libtool=`echo $with_libtool | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- with_libtool=`echo $with_libtool | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- { { echo "$as_me:4413: error: expected a pathname, not \"$with_libtool\"" >&5
+case ".$with_libtool" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval with_libtool="$with_libtool"
+ case ".$with_libtool" in
+ (.NONE/*)
+ with_libtool=`echo $with_libtool | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ with_libtool=`echo $with_libtool | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:5083: error: expected a pathname, not \"$with_libtool\"" >&5
echo "$as_me: error: expected a pathname, not \"$with_libtool\"" >&2;}
{ (exit 1); exit 1; }; }
- ;;
+ ;;
esac
LIBTOOL=$with_libtool
@@ -4423,7 +5093,7 @@ esac
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:4426: checking for $ac_word" >&5
+echo "$as_me:5096: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_LIBTOOL+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4438,7 +5108,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_LIBTOOL="$ac_tool_prefix$ac_prog"
-echo "$as_me:4441: found $ac_dir/$ac_word" >&5
+echo "$as_me:5111: found $ac_dir/$ac_word" >&5
break
done
@@ -4446,10 +5116,10 @@ fi
fi
LIBTOOL=$ac_cv_prog_LIBTOOL
if test -n "$LIBTOOL"; then
- echo "$as_me:4449: result: $LIBTOOL" >&5
+ echo "$as_me:5119: result: $LIBTOOL" >&5
echo "${ECHO_T}$LIBTOOL" >&6
else
- echo "$as_me:4452: result: no" >&5
+ echo "$as_me:5122: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4462,7 +5132,7 @@ if test -z "$LIBTOOL"; then
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 "$as_me:4465: checking for $ac_word" >&5
+echo "$as_me:5135: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_LIBTOOL+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4477,7 +5147,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_LIBTOOL="$ac_prog"
-echo "$as_me:4480: found $ac_dir/$ac_word" >&5
+echo "$as_me:5150: found $ac_dir/$ac_word" >&5
break
done
@@ -4485,10 +5155,10 @@ fi
fi
ac_ct_LIBTOOL=$ac_cv_prog_ac_ct_LIBTOOL
if test -n "$ac_ct_LIBTOOL"; then
- echo "$as_me:4488: result: $ac_ct_LIBTOOL" >&5
+ echo "$as_me:5158: result: $ac_ct_LIBTOOL" >&5
echo "${ECHO_T}$ac_ct_LIBTOOL" >&6
else
- echo "$as_me:4491: result: no" >&5
+ echo "$as_me:5161: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4519,7 +5189,7 @@ unset LIBTOOL
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:4522: checking for $ac_word" >&5
+echo "$as_me:5192: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_LIBTOOL+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4534,7 +5204,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_LIBTOOL="$ac_tool_prefix$ac_prog"
-echo "$as_me:4537: found $ac_dir/$ac_word" >&5
+echo "$as_me:5207: found $ac_dir/$ac_word" >&5
break
done
@@ -4542,10 +5212,10 @@ fi
fi
LIBTOOL=$ac_cv_prog_LIBTOOL
if test -n "$LIBTOOL"; then
- echo "$as_me:4545: result: $LIBTOOL" >&5
+ echo "$as_me:5215: result: $LIBTOOL" >&5
echo "${ECHO_T}$LIBTOOL" >&6
else
- echo "$as_me:4548: result: no" >&5
+ echo "$as_me:5218: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4558,7 +5228,7 @@ if test -z "$LIBTOOL"; then
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 "$as_me:4561: checking for $ac_word" >&5
+echo "$as_me:5231: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_LIBTOOL+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4573,7 +5243,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_LIBTOOL="$ac_prog"
-echo "$as_me:4576: found $ac_dir/$ac_word" >&5
+echo "$as_me:5246: found $ac_dir/$ac_word" >&5
break
done
@@ -4581,10 +5251,10 @@ fi
fi
ac_ct_LIBTOOL=$ac_cv_prog_ac_ct_LIBTOOL
if test -n "$ac_ct_LIBTOOL"; then
- echo "$as_me:4584: result: $ac_ct_LIBTOOL" >&5
+ echo "$as_me:5254: result: $ac_ct_LIBTOOL" >&5
echo "${ECHO_T}$ac_ct_LIBTOOL" >&6
else
- echo "$as_me:4587: result: no" >&5
+ echo "$as_me:5257: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4606,11 +5276,11 @@ test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version
fi
fi
if test -z "$LIBTOOL" ; then
- { { echo "$as_me:4609: error: Cannot find libtool" >&5
+ { { echo "$as_me:5279: error: Cannot find libtool" >&5
echo "$as_me: error: Cannot find libtool" >&2;}
{ (exit 1); exit 1; }; }
fi
- LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${DESTDIR}${libdir} ${LIBTOOL_VERSION} `cut -f1 ${srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} $(LIBS) -o'
+ LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${libdir} ${LIBTOOL_VERSION} `cut -f1 ${top_srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} $(LIBS) -o'
LIB_OBJECT='${OBJECTS:.o=.lo}'
LIB_SUFFIX=.la
LIB_CLEAN='${LIBTOOL} --mode=clean'
@@ -4622,7 +5292,7 @@ echo "$as_me: error: Cannot find libtool" >&2;}
if test -n "$LIBTOOL" && test "$LIBTOOL" != none
then
- echo "$as_me:4625: checking version of $LIBTOOL" >&5
+ echo "$as_me:5295: checking version of $LIBTOOL" >&5
echo $ECHO_N "checking version of $LIBTOOL... $ECHO_C" >&6
if test -n "$LIBTOOL" && test "$LIBTOOL" != none
@@ -4633,34 +5303,34 @@ else
fi
test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version
- echo "$as_me:4636: result: $cf_cv_libtool_version" >&5
+ echo "$as_me:5306: result: $cf_cv_libtool_version" >&5
echo "${ECHO_T}$cf_cv_libtool_version" >&6
if test -z "$cf_cv_libtool_version" ; then
- { { echo "$as_me:4639: error: This is not GNU libtool" >&5
+ { { echo "$as_me:5309: error: This is not GNU libtool" >&5
echo "$as_me: error: This is not GNU libtool" >&2;}
{ (exit 1); exit 1; }; }
fi
else
- { { echo "$as_me:4644: error: GNU libtool has not been found" >&5
+ { { echo "$as_me:5314: error: GNU libtool has not been found" >&5
echo "$as_me: error: GNU libtool has not been found" >&2;}
{ (exit 1); exit 1; }; }
fi
# special hack to add -no-undefined (which libtool should do for itself)
LT_UNDEF=
- case "$cf_cv_system_name" in #(vi
- cygwin*|msys*|mingw32*|uwin*|aix[4-7]) #(vi
+ case "$cf_cv_system_name" in
+ (cygwin*|msys*|mingw32*|os2*|uwin*|aix[4-7])
LT_UNDEF=-no-undefined
;;
esac
# special hack to add --tag option for C++ compiler
- case $cf_cv_libtool_version in #(vi
- 1.[5-9]*|[2-9].[0-9.a-z]*) #(vi
+ case $cf_cv_libtool_version in
+ (1.[5-9]*|[2-9].[0-9.a-z]*)
LIBTOOL_CXX="$LIBTOOL --tag=CXX"
LIBTOOL="$LIBTOOL --tag=CC"
;;
- *)
+ (*)
LIBTOOL_CXX="$LIBTOOL"
;;
esac
@@ -4677,7 +5347,7 @@ cf_list_models="$cf_list_models libtool"
else
-echo "$as_me:4680: checking if you want to build shared libraries" >&5
+echo "$as_me:5350: checking if you want to build shared libraries" >&5
echo $ECHO_N "checking if you want to build shared libraries... $ECHO_C" >&6
# Check whether --with-shared or --without-shared was given.
@@ -4687,11 +5357,11 @@ if test "${with_shared+set}" = set; then
else
with_shared=no
fi;
-echo "$as_me:4690: result: $with_shared" >&5
+echo "$as_me:5360: result: $with_shared" >&5
echo "${ECHO_T}$with_shared" >&6
test "x$with_shared" = "xyes" && cf_list_models="$cf_list_models shared"
-echo "$as_me:4694: checking if you want to build static libraries" >&5
+echo "$as_me:5364: checking if you want to build static libraries" >&5
echo $ECHO_N "checking if you want to build static libraries... $ECHO_C" >&6
# Check whether --with-normal or --without-normal was given.
@@ -4701,11 +5371,11 @@ if test "${with_normal+set}" = set; then
else
with_normal=yes
fi;
-echo "$as_me:4704: result: $with_normal" >&5
+echo "$as_me:5374: result: $with_normal" >&5
echo "${ECHO_T}$with_normal" >&6
test "x$with_normal" = "xyes" && cf_list_models="$cf_list_models normal"
-echo "$as_me:4708: checking if you want to build debug libraries" >&5
+echo "$as_me:5378: checking if you want to build debug libraries" >&5
echo $ECHO_N "checking if you want to build debug libraries... $ECHO_C" >&6
# Check whether --with-debug or --without-debug was given.
@@ -4715,11 +5385,11 @@ if test "${with_debug+set}" = set; then
else
with_debug=yes
fi;
-echo "$as_me:4718: result: $with_debug" >&5
+echo "$as_me:5388: result: $with_debug" >&5
echo "${ECHO_T}$with_debug" >&6
test "x$with_debug" = "xyes" && cf_list_models="$cf_list_models debug"
-echo "$as_me:4722: checking if you want to build profiling libraries" >&5
+echo "$as_me:5392: checking if you want to build profiling libraries" >&5
echo $ECHO_N "checking if you want to build profiling libraries... $ECHO_C" >&6
# Check whether --with-profile or --without-profile was given.
@@ -4729,7 +5399,7 @@ if test "${with_profile+set}" = set; then
else
with_profile=no
fi;
-echo "$as_me:4732: result: $with_profile" >&5
+echo "$as_me:5402: result: $with_profile" >&5
echo "${ECHO_T}$with_profile" >&6
test "x$with_profile" = "xyes" && cf_list_models="$cf_list_models profile"
@@ -4737,7 +5407,7 @@ fi
if test "X$cf_with_cxx_binding" != Xno; then
if test "x$with_shared" = "xyes"; then
-echo "$as_me:4740: checking if you want to build C++ shared libraries" >&5
+echo "$as_me:5410: checking if you want to build C++ shared libraries" >&5
echo $ECHO_N "checking if you want to build C++ shared libraries... $ECHO_C" >&6
# Check whether --with-cxx-shared or --without-cxx-shared was given.
@@ -4747,26 +5417,26 @@ if test "${with_cxx_shared+set}" = set; then
else
with_shared_cxx=no
fi;
-echo "$as_me:4750: result: $with_shared_cxx" >&5
+echo "$as_me:5420: result: $with_shared_cxx" >&5
echo "${ECHO_T}$with_shared_cxx" >&6
fi
fi
###############################################################################
-echo "$as_me:4757: checking for specified models" >&5
+echo "$as_me:5427: checking for specified models" >&5
echo $ECHO_N "checking for specified models... $ECHO_C" >&6
test -z "$cf_list_models" && cf_list_models=normal
test "$with_libtool" != "no" && cf_list_models=libtool
-echo "$as_me:4761: result: $cf_list_models" >&5
+echo "$as_me:5431: result: $cf_list_models" >&5
echo "${ECHO_T}$cf_list_models" >&6
### Use the first model as the default, and save its suffix for use in building
### up test-applications.
-echo "$as_me:4766: checking for default model" >&5
+echo "$as_me:5436: checking for default model" >&5
echo $ECHO_N "checking for default model... $ECHO_C" >&6
DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'`
-echo "$as_me:4769: result: $DFT_LWR_MODEL" >&5
+echo "$as_me:5439: result: $DFT_LWR_MODEL" >&5
echo "${ECHO_T}$DFT_LWR_MODEL" >&6
DFT_UPR_MODEL=`echo "$DFT_LWR_MODEL" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
@@ -4780,7 +5450,7 @@ LIB_NAME=ncurses
LIB_DIR=../lib
LIB_2ND=../../lib
-echo "$as_me:4783: checking if you want to have a library-prefix" >&5
+echo "$as_me:5453: checking if you want to have a library-prefix" >&5
echo $ECHO_N "checking if you want to have a library-prefix... $ECHO_C" >&6
# Check whether --with-lib-prefix or --without-lib-prefix was given.
@@ -4790,18 +5460,22 @@ if test "${with_lib_prefix+set}" = set; then
else
with_lib_prefix=auto
fi;
-echo "$as_me:4793: result: $with_lib_prefix" >&5
+echo "$as_me:5463: result: $with_lib_prefix" >&5
echo "${ECHO_T}$with_lib_prefix" >&6
if test $with_lib_prefix = auto
then
- case $cf_cv_system_name in #(vi
- OS/2*|os2*) #(vi
- LIB_PREFIX=''
- ;;
- *) LIB_PREFIX='lib'
- ;;
+ case $cf_cv_system_name in
+ (OS/2*|os2*)
+ if test "$DFT_LWR_MODEL" = libtool; then
+ LIB_PREFIX='lib'
+ else
+ LIB_PREFIX=''
+ fi
+ ;;
+ (*) LIB_PREFIX='lib'
+ ;;
esac
cf_prefix=$LIB_PREFIX
@@ -4814,19 +5488,19 @@ fi
LIB_SUFFIX=
- echo "$as_me:4817: checking for PATH separator" >&5
+ echo "$as_me:5491: checking for PATH separator" >&5
echo $ECHO_N "checking for PATH separator... $ECHO_C" >&6
case $cf_cv_system_name in
- os2*) PATH_SEPARATOR=';' ;;
- *) ${PATH_SEPARATOR:=':'} ;;
+ (os2*) PATH_SEPARATOR=';' ;;
+ (*) ${PATH_SEPARATOR:=':'} ;;
esac
- echo "$as_me:4824: result: $PATH_SEPARATOR" >&5
+ echo "$as_me:5498: result: $PATH_SEPARATOR" >&5
echo "${ECHO_T}$PATH_SEPARATOR" >&6
###############################################################################
-echo "$as_me:4829: checking if you want to build a separate terminfo library" >&5
+echo "$as_me:5503: checking if you want to build a separate terminfo library" >&5
echo $ECHO_N "checking if you want to build a separate terminfo library... $ECHO_C" >&6
# Check whether --with-termlib or --without-termlib was given.
@@ -4836,10 +5510,10 @@ if test "${with_termlib+set}" = set; then
else
with_termlib=no
fi;
-echo "$as_me:4839: result: $with_termlib" >&5
+echo "$as_me:5513: result: $with_termlib" >&5
echo "${ECHO_T}$with_termlib" >&6
-echo "$as_me:4842: checking if you want to build a separate tic library" >&5
+echo "$as_me:5516: checking if you want to build a separate tic library" >&5
echo $ECHO_N "checking if you want to build a separate tic library... $ECHO_C" >&6
# Check whether --with-ticlib or --without-ticlib was given.
@@ -4849,13 +5523,964 @@ if test "${with_ticlib+set}" = set; then
else
with_ticlib=no
fi;
-echo "$as_me:4852: result: $with_ticlib" >&5
+echo "$as_me:5526: result: $with_ticlib" >&5
echo "${ECHO_T}$with_ticlib" >&6
+if test X"$CC_G_OPT" = X"" ; then
+ CC_G_OPT='-g'
+ test -n "$GCC" && test "x${ac_cv_prog_cc_g}" != xyes && CC_G_OPT=''
+fi
+
+if test X"$CXX_G_OPT" = X"" ; then
+ CXX_G_OPT='-g'
+ test -n "$GXX" && test "x${ac_cv_prog_cxx_g}" != xyes && CXX_G_OPT=''
+fi
+
+echo "$as_me:5539: checking for default loader flags" >&5
+echo $ECHO_N "checking for default loader flags... $ECHO_C" >&6
+case $DFT_LWR_MODEL in
+(libtool) LD_MODEL='' ;;
+(normal) LD_MODEL='' ;;
+(debug) LD_MODEL=$CC_G_OPT ;;
+(profile) LD_MODEL='-pg';;
+(shared) LD_MODEL='' ;;
+esac
+echo "$as_me:5548: result: $LD_MODEL" >&5
+echo "${ECHO_T}$LD_MODEL" >&6
+
+case $DFT_LWR_MODEL in
+(shared)
+
+echo "$as_me:5554: checking if rpath option should be used" >&5
+echo $ECHO_N "checking if rpath option should be used... $ECHO_C" >&6
+
+# Check whether --enable-rpath or --disable-rpath was given.
+if test "${enable_rpath+set}" = set; then
+ enableval="$enable_rpath"
+ cf_cv_enable_rpath=$enableval
+else
+ cf_cv_enable_rpath=no
+fi;
+echo "$as_me:5564: result: $cf_cv_enable_rpath" >&5
+echo "${ECHO_T}$cf_cv_enable_rpath" >&6
+
+echo "$as_me:5567: checking if shared libraries should be relinked during install" >&5
+echo $ECHO_N "checking if shared libraries should be relinked during install... $ECHO_C" >&6
+
+# Check whether --enable-relink or --disable-relink was given.
+if test "${enable_relink+set}" = set; then
+ enableval="$enable_relink"
+ cf_cv_do_relink=$enableval
+else
+ cf_cv_do_relink=yes
+fi;
+echo "$as_me:5577: result: $cf_cv_do_relink" >&5
+echo "${ECHO_T}$cf_cv_do_relink" >&6
+ ;;
+esac
+
+# we will build libraries one-level down.
+rel_builddir=..
+
+LD_RPATH_OPT=
+if test "x$cf_cv_enable_rpath" != xno
+then
+ echo "$as_me:5588: checking for an rpath option" >&5
+echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6
+ case $cf_cv_system_name in
+ (irix*)
+ if test "$GCC" = yes; then
+ LD_RPATH_OPT="-Wl,-rpath,"
+ else
+ LD_RPATH_OPT="-rpath "
+ fi
+ ;;
+ (linux*|gnu*|k*bsd*-gnu|freebsd*)
+ LD_RPATH_OPT="-Wl,-rpath,"
+ ;;
+ (openbsd[2-9].*|mirbsd*)
+ LD_RPATH_OPT="-Wl,-rpath,"
+ ;;
+ (dragonfly*)
+ LD_RPATH_OPT="-rpath "
+ ;;
+ (netbsd*)
+ LD_RPATH_OPT="-Wl,-rpath,"
+ ;;
+ (osf*|mls+*)
+ LD_RPATH_OPT="-rpath "
+ ;;
+ (solaris2*)
+ LD_RPATH_OPT="-R"
+ ;;
+ (*)
+ ;;
+ esac
+ echo "$as_me:5619: result: $LD_RPATH_OPT" >&5
+echo "${ECHO_T}$LD_RPATH_OPT" >&6
+
+ case "x$LD_RPATH_OPT" in
+ (x-R*)
+ echo "$as_me:5624: checking if we need a space after rpath option" >&5
+echo $ECHO_N "checking if we need a space after rpath option... $ECHO_C" >&6
+ cf_save_LIBS="$LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in ${LD_RPATH_OPT}$libdir; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5645 "configure"
+#include "confdefs.h"
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5657: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5660: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:5663: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5666: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_rpath_space=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_rpath_space=yes
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ LIBS="$cf_save_LIBS"
+ echo "$as_me:5676: result: $cf_rpath_space" >&5
+echo "${ECHO_T}$cf_rpath_space" >&6
+ test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
+ ;;
+ esac
+fi
+
+ RM_SHARED_OPTS=
+ LOCAL_LDFLAGS=
+ LOCAL_LDFLAGS2=
+ LD_SHARED_OPTS=
+ INSTALL_LIB="-m 644"
+ : ${rel_builddir:=.}
+
+ shlibdir=$libdir
+
+ MAKE_DLLS="#"
+
+ cf_cv_do_symlinks=no
+ cf_ld_rpath_opt=
+ test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT"
+
+ echo "$as_me:5698: checking if release/abi version should be used for shared libs" >&5
+echo $ECHO_N "checking if release/abi version should be used for shared libs... $ECHO_C" >&6
+
+# Check whether --with-shlib-version or --without-shlib-version was given.
+if test "${with_shlib_version+set}" = set; then
+ withval="$with_shlib_version"
+ test -z "$withval" && withval=auto
+ case $withval in
+ (yes)
+ cf_cv_shlib_version=auto
+ ;;
+ (rel|abi|auto)
+ cf_cv_shlib_version=$withval
+ ;;
+ (*)
+ echo "$as_me:5713: result: $withval" >&5
+echo "${ECHO_T}$withval" >&6
+ { { echo "$as_me:5715: error: option value must be one of: rel, abi, or auto" >&5
+echo "$as_me: error: option value must be one of: rel, abi, or auto" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+else
+ cf_cv_shlib_version=auto
+fi;
+ echo "$as_me:5724: result: $cf_cv_shlib_version" >&5
+echo "${ECHO_T}$cf_cv_shlib_version" >&6
+
+ cf_cv_rm_so_locs=no
+ cf_try_cflags=
+
+ # Some less-capable ports of gcc support only -fpic
+ CC_SHARED_OPTS=
+
+ cf_try_fPIC=no
+ if test "$GCC" = yes
+ then
+ cf_try_fPIC=yes
+ else
+ case $cf_cv_system_name in
+ (*linux*) # e.g., PGI compiler
+ cf_try_fPIC=yes
+ ;;
+ esac
+ fi
+
+ if test "$cf_try_fPIC" = yes
+ then
+ echo "$as_me:5747: checking which $CC option to use" >&5
+echo $ECHO_N "checking which $CC option to use... $ECHO_C" >&6
+ cf_save_CFLAGS="$CFLAGS"
+ for CC_SHARED_OPTS in -fPIC -fpic ''
+ do
+ CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5754 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int
+main (void)
+{
+int x = 1
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5766: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:5769: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:5772: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5775: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ done
+ echo "$as_me:5784: result: $CC_SHARED_OPTS" >&5
+echo "${ECHO_T}$CC_SHARED_OPTS" >&6
+ CFLAGS="$cf_save_CFLAGS"
+ fi
+
+ cf_cv_shlib_version_infix=no
+
+ case $cf_cv_system_name in
+ (aix4.3-9*|aix[5-7]*)
+ if test "$GCC" = yes; then
+ CC_SHARED_OPTS='-Wl,-brtl'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@'
+ else
+ CC_SHARED_OPTS='-brtl'
+ # as well as '-qpic=large -G' or perhaps "-bM:SRE -bnoentry -bexpall"
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@'
+ fi
+ ;;
+ (beos*)
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -o $@ -Xlinker -soname=`basename $@` -nostart -e 0'
+ ;;
+ (cygwin*)
+ CC_SHARED_OPTS=
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
+ RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
+ cf_cv_shlib_version=cygdll
+ cf_cv_shlib_version_infix=cygdll
+ shlibdir=$bindir
+ MAKE_DLLS=
+ cat >mk_shared_lib.sh <<-CF_EOF
+ #!$SHELL
+ SHARED_LIB=\$1
+ IMPORT_LIB=\`echo "\$1" | sed -e 's/cyg/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\`
+ shift
+ cat <<-EOF
+ Linking shared library
+ ** SHARED_LIB \$SHARED_LIB
+ ** IMPORT_LIB \$IMPORT_LIB
+EOF
+ exec \$* ${LDFLAGS} -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB}
+CF_EOF
+ chmod +x mk_shared_lib.sh
+ ;;
+ (msys*)
+ CC_SHARED_OPTS=
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
+ RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
+ cf_cv_shlib_version=msysdll
+ cf_cv_shlib_version_infix=msysdll
+ shlibdir=$bindir
+ MAKE_DLLS=
+ cat >mk_shared_lib.sh <<-CF_EOF
+ #!$SHELL
+ SHARED_LIB=\$1
+ IMPORT_LIB=\`echo "\$1" | sed -e 's/msys-/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\`
+ shift
+ cat <<-EOF
+ Linking shared library
+ ** SHARED_LIB \$SHARED_LIB
+ ** IMPORT_LIB \$IMPORT_LIB
+EOF
+ exec \$* ${LDFLAGS} -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB}
+CF_EOF
+ chmod +x mk_shared_lib.sh
+ ;;
+ (darwin*)
+ cf_try_cflags="no-cpp-precomp"
+ CC_SHARED_OPTS="-dynamic"
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $@` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $@'
+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi
+ cf_cv_shlib_version_infix=yes
+ echo "$as_me:5855: checking if ld -search_paths_first works" >&5
+echo $ECHO_N "checking if ld -search_paths_first works... $ECHO_C" >&6
+if test "${cf_cv_ldflags_search_paths_first+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cf_save_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5864 "configure"
+#include "confdefs.h"
+
+int
+main (void)
+{
+int i;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5876: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5879: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:5882: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5885: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_ldflags_search_paths_first=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_ldflags_search_paths_first=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$cf_save_LDFLAGS
+fi
+echo "$as_me:5896: result: $cf_cv_ldflags_search_paths_first" >&5
+echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
+ if test $cf_cv_ldflags_search_paths_first = yes; then
+ LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+ fi
+ ;;
+ (hpux[7-8]*)
+ # HP-UX 8.07 ld lacks "+b" option used for libdir search-list
+ if test "$GCC" != yes; then
+ CC_SHARED_OPTS='+Z'
+ fi
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -b -o $@'
+ INSTALL_LIB="-m 555"
+ ;;
+ (hpux*)
+ # (tested with gcc 2.7.2 -- I don't have c89)
+ if test "$GCC" = yes; then
+ LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}'
+ else
+ CC_SHARED_OPTS='+Z'
+ LD_SHARED_OPTS='-Wl,+b,${libdir}'
+ fi
+ MK_SHARED_LIB='${LD} ${LDFLAGS} +b ${libdir} -b -o $@'
+ # HP-UX shared libraries must be executable, and should be
+ # readonly to exploit a quirk in the memory manager.
+ INSTALL_LIB="-m 555"
+ ;;
+ (interix*)
+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
+ if test "$cf_cv_shlib_version" = rel; then
+ cf_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
+ else
+ cf_shared_soname='`basename $@`'
+ fi
+ CC_SHARED_OPTS=
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $@'
+ ;;
+ (irix*)
+ if test "$cf_cv_enable_rpath" = yes ; then
+ EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
+ fi
+ # tested with IRIX 5.2 and 'cc'.
+ if test "$GCC" != yes; then
+ CC_SHARED_OPTS='-KPIC'
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -rdata_shared -soname `basename $@` -o $@'
+ else
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,`basename $@` -o $@'
+ fi
+ cf_cv_rm_so_locs=yes
+ ;;
+ (linux*|gnu*|k*bsd*-gnu)
+ if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
+ LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
+ LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
+ fi
+ if test "$cf_cv_enable_rpath" = yes ; then
+ EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
+ fi
+
+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
+ if test "$cf_cv_shlib_version" = rel; then
+ cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
+ else
+ cf_cv_shared_soname='`basename $@`'
+ fi
+
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@'
+ ;;
+ (mingw*)
+ cf_cv_shlib_version=mingw
+ cf_cv_shlib_version_infix=mingw
+ shlibdir=$bindir
+ MAKE_DLLS=
+ if test "$DFT_LWR_MODEL" = "shared" ; then
+ LOCAL_LDFLAGS="-Wl,--enable-auto-import"
+ LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
+ EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS"
+ fi
+ CC_SHARED_OPTS=
+ MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
+ RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
+ cat >mk_shared_lib.sh <<-CF_EOF
+ #!$SHELL
+ SHARED_LIB=\$1
+ IMPORT_LIB=\`echo "\$1" | sed -e 's/[0-9]*\.dll$/.dll.a/'\`
+ shift
+ cat <<-EOF
+ Linking shared library
+ ** SHARED_LIB \$SHARED_LIB
+ ** IMPORT_LIB \$IMPORT_LIB
+EOF
+ exec \$* ${LDFLAGS} -shared -Wl,--enable-auto-import,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB}
+CF_EOF
+ chmod +x mk_shared_lib.sh
+ ;;
+ (openbsd[2-9].*|mirbsd*)
+ if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
+ LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
+ LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
+ fi
+ if test "$cf_cv_enable_rpath" = yes ; then
+ EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
+ fi
+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
+
+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
+ if test "$cf_cv_shlib_version" = rel; then
+ cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
+ else
+ cf_cv_shared_soname='`basename $@`'
+ fi
+
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@'
+ ;;
+ (nto-qnx*|openbsd*|freebsd[12].*)
+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -Bshareable -o $@'
+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
+ ;;
+ (dragonfly*|freebsd*)
+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
+ if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
+ LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
+ LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS"
+ EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
+ fi
+
+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
+ if test "$cf_cv_shlib_version" = rel; then
+ cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
+ else
+ cf_cv_shared_soname='`basename $@`'
+ fi
+
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@'
+ ;;
+ (netbsd*)
+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
+ if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
+ LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
+ LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
+ EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
+ if test "$cf_cv_shlib_version" = auto; then
+ if test -f /usr/libexec/ld.elf_so; then
+ cf_cv_shlib_version=abi
+ else
+ cf_cv_shlib_version=rel
+ fi
+ fi
+
+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
+ if test "$cf_cv_shlib_version" = rel; then
+ cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
+ else
+ cf_cv_shared_soname='`basename $@`'
+ fi
+
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $@'
+ else
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -Wl,-shared -Wl,-Bshareable -o $@'
+ fi
+ ;;
+ (osf*|mls+*)
+ # tested with OSF/1 V3.2 and 'cc'
+ # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't
+ # link with shared libs).
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $@`'
+ case $host_os in
+ (osf4*)
+ MK_SHARED_LIB="${MK_SHARED_LIB} -msym"
+ ;;
+ esac
+ MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $@'
+ if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
+ LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
+ LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
+ fi
+ cf_cv_rm_so_locs=yes
+ ;;
+ (sco3.2v5*) # also uw2* and UW7: hops 13-Apr-98
+ # tested with osr5.0.5
+ if test "$GCC" != yes; then
+ CC_SHARED_OPTS='-belf -KPIC'
+ fi
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -dy -G -h `basename $@ .${REL_VERSION}`.${ABI_VERSION} -o $@'
+ if test "$cf_cv_enable_rpath" = yes ; then
+ # only way is to set LD_RUN_PATH but no switch for it
+ RUN_PATH=$libdir
+ fi
+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
+ LINK_PROGS='LD_RUN_PATH=${libdir}'
+ LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib'
+ ;;
+ (sunos4*)
+ # tested with SunOS 4.1.1 and gcc 2.7.0
+ if test "$GCC" != yes; then
+ CC_SHARED_OPTS='-KPIC'
+ fi
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -assert pure-text -o $@'
+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
+ ;;
+ (solaris2*)
+ # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
+ # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3
+ if test "$DFT_LWR_MODEL" = "shared" ; then
+ LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}"
+ LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
+ fi
+ if test "$cf_cv_enable_rpath" = yes ; then
+ EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS"
+ fi
+
+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
+ if test "$cf_cv_shlib_version" = rel; then
+ cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
+ else
+ cf_cv_shared_soname='`basename $@`'
+ fi
+
+ if test "$GCC" != yes; then
+ cf_save_CFLAGS="$CFLAGS"
+ for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O
+ do
+ CFLAGS="$cf_shared_opts $cf_save_CFLAGS"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6121 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int
+main (void)
+{
+printf("Hello\n");
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6133: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6136: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6139: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6142: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ done
+ CFLAGS="$cf_save_CFLAGS"
+ CC_SHARED_OPTS=$cf_shared_opts
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -h '$cf_cv_shared_soname' -o $@'
+ else
+ MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -h '$cf_cv_shared_soname' -o $@'
+ fi
+ ;;
+ (sysv5uw7*|unix_sv*)
+ # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
+ if test "$GCC" != yes; then
+ CC_SHARED_OPTS='-KPIC'
+ fi
+ MK_SHARED_LIB='${LD} ${LDFLAGS} -d y -G -o $@'
+ ;;
+ (*)
+ CC_SHARED_OPTS='unknown'
+ MK_SHARED_LIB='echo unknown'
+ ;;
+ esac
+
+ # This works if the last tokens in $MK_SHARED_LIB are the -o target.
+ case "$cf_cv_shlib_version" in
+ (rel|abi)
+ case "$MK_SHARED_LIB" in
+ (*'-o $@')
+ test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
+ ;;
+ (*)
+ { echo "$as_me:6179: WARNING: ignored --with-shlib-version" >&5
+echo "$as_me: WARNING: ignored --with-shlib-version" >&2;}
+ ;;
+ esac
+ ;;
+ esac
+
+ if test -n "$cf_try_cflags"
+ then
+cat > conftest.$ac_ext <<EOF
+#line 6189 "${as_me:-configure}"
+#include <stdio.h>
+int main(int argc, char *argv[])
+{
+ printf("hello\n");
+ return (argv[argc-1] == 0) ;
+}
+EOF
+ cf_save_CFLAGS="$CFLAGS"
+ for cf_opt in $cf_try_cflags
+ do
+ CFLAGS="$cf_save_CFLAGS -$cf_opt"
+ echo "$as_me:6201: checking if CFLAGS option -$cf_opt works" >&5
+echo $ECHO_N "checking if CFLAGS option -$cf_opt works... $ECHO_C" >&6
+ if { (eval echo "$as_me:6203: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6206: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ echo "$as_me:6208: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ cf_save_CFLAGS="$CFLAGS"
+ else
+ echo "$as_me:6212: result: no" >&5
+echo "${ECHO_T}no" >&6
+ fi
+ done
+ CFLAGS="$cf_save_CFLAGS"
+ fi
+
+ # RPATH_LIST is a colon-separated list of directories
+ test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}"
+ test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}"
+
+ test $cf_cv_rm_so_locs = yes && RM_SHARED_OPTS="$RM_SHARED_OPTS so_locations"
+
+ test -n "$verbose" && echo " CC_SHARED_OPTS: $CC_SHARED_OPTS" 1>&6
+
+echo "${as_me:-configure}:6227: testing CC_SHARED_OPTS: $CC_SHARED_OPTS ..." 1>&5
+
+ test -n "$verbose" && echo " MK_SHARED_LIB: $MK_SHARED_LIB" 1>&6
+
+echo "${as_me:-configure}:6231: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5
+
+for model in $cf_list_models; do
+ case $model in
+ (libtool)
+
+echo "$as_me:6237: checking for additional libtool options" >&5
+echo $ECHO_N "checking for additional libtool options... $ECHO_C" >&6
+
+# Check whether --with-libtool-opts or --without-libtool-opts was given.
+if test "${with_libtool_opts+set}" = set; then
+ withval="$with_libtool_opts"
+ with_libtool_opts=$withval
+else
+ with_libtool_opts=no
+fi;
+echo "$as_me:6247: result: $with_libtool_opts" >&5
+echo "${ECHO_T}$with_libtool_opts" >&6
+
+case .$with_libtool_opts in
+(.yes|.no|.)
+ ;;
+(*)
+ LIBTOOL_OPTS="$LIBTOOL_OPTS $with_libtool_opts"
+ ;;
+esac
+
+echo "$as_me:6258: checking if exported-symbols file should be used" >&5
+echo $ECHO_N "checking if exported-symbols file should be used... $ECHO_C" >&6
+
+# Check whether --with-export-syms or --without-export-syms was given.
+if test "${with_export_syms+set}" = set; then
+ withval="$with_export_syms"
+ with_export_syms=$withval
+else
+ with_export_syms=no
+fi;
+if test "x$with_export_syms" = xyes
+then
+ with_export_syms='${top_srcdir}/package/${PACKAGE}.sym'
+
+fi
+echo "$as_me:6273: result: $with_export_syms" >&5
+echo "${ECHO_T}$with_export_syms" >&6
+if test "x$with_export_syms" != xno
+then
+ EXPORT_SYMS="-export-symbols $with_export_syms"
+
+fi
+
+ ;;
+ (shared)
+ if test "$CC_SHARED_OPTS" = "unknown"; then
+ { { echo "$as_me:6284: error: Shared libraries are not supported in this version" >&5
+echo "$as_me: error: Shared libraries are not supported in this version" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ # workaround for inept transition to PIE vs PIC...
+ echo "$as_me:6289: checking if current CFLAGS link properly" >&5
+echo $ECHO_N "checking if current CFLAGS link properly... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6292 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int
+main (void)
+{
+printf("Hello work\n");
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:6304: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:6307: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:6310: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6313: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cflags_work=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cflags_work=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ echo "$as_me:6322: result: $cf_cflags_work" >&5
+echo "${ECHO_T}$cf_cflags_work" >&6
+ if test "$cf_cflags_work" = no
+ then
+ test -n "$verbose" && echo " try to work around by appending shared-options" 1>&6
+
+echo "${as_me:-configure}:6328: testing try to work around by appending shared-options ..." 1>&5
+
+ CFLAGS="$CFLAGS $CC_SHARED_OPTS"
+ fi
+
+echo "$as_me:6333: checking if versioned-symbols file should be used" >&5
+echo $ECHO_N "checking if versioned-symbols file should be used... $ECHO_C" >&6
+
+# Check whether --with-versioned-syms or --without-versioned-syms was given.
+if test "${with_versioned_syms+set}" = set; then
+ withval="$with_versioned_syms"
+ with_versioned_syms=$withval
+else
+ with_versioned_syms=no
+fi;
+case "x$with_versioned_syms" in
+(xyes)
+ with_versioned_syms='${top_srcdir}/package/${PACKAGE}.map'
+
+ ;;
+(xno)
+ ;;
+(x/*)
+ test -f "$with_versioned_syms" || { { echo "$as_me:6351: error: expected a filename: $with_versioned_syms" >&5
+echo "$as_me: error: expected a filename: $with_versioned_syms" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+(*)
+ test -f "$with_versioned_syms" || { { echo "$as_me:6356: error: expected a filename: $with_versioned_syms" >&5
+echo "$as_me: error: expected a filename: $with_versioned_syms" >&2;}
+ { (exit 1); exit 1; }; }
+ with_versioned_syms=`pwd`/"$with_versioned_syms"
+ ;;
+esac
+echo "$as_me:6362: result: $with_versioned_syms" >&5
+echo "${ECHO_T}$with_versioned_syms" >&6
+
+RESULTING_SYMS=
+VERSIONED_SYMS=
+WILDCARD_SYMS=
+
+if test "x$with_versioned_syms" != xno
+then
+ RESULTING_SYMS=$with_versioned_syms
+ case "x$MK_SHARED_LIB" in
+ (*-Wl,*)
+ VERSIONED_SYMS="-Wl,--version-script,\${RESULTING_SYMS}"
+ MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-Wl,%\\${VERSIONED_SYMS} -Wl,%"`
+ test -n "$verbose" && echo " MK_SHARED_LIB: $MK_SHARED_LIB" 1>&6
+
+echo "${as_me:-configure}:6378: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5
+
+ ;;
+ (*-dy\ *)
+ VERSIONED_SYMS="-Wl,-M,\${RESULTING_SYMS}"
+ MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-dy%\\${VERSIONED_SYMS} -dy%"`
+ test -n "$verbose" && echo " MK_SHARED_LIB: $MK_SHARED_LIB" 1>&6
+
+echo "${as_me:-configure}:6386: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5
+
+ ;;
+ (*)
+ { echo "$as_me:6390: WARNING: this system does not support versioned-symbols" >&5
+echo "$as_me: WARNING: this system does not support versioned-symbols" >&2;}
+ ;;
+ esac
+
+ # Linux ld can selectively override scope, e.g., of symbols beginning with
+ # "_" by first declaring some as global, and then using a wildcard to
+ # declare the others as local. Some other loaders cannot do this. Check
+ # by constructing a (very) simple shared library and inspecting its
+ # symbols.
+ if test "x$VERSIONED_SYMS" != "x"
+ then
+ echo "$as_me:6402: checking if wildcards can be used to selectively omit symbols" >&5
+echo $ECHO_N "checking if wildcards can be used to selectively omit symbols... $ECHO_C" >&6
+ WILDCARD_SYMS=no
+
+ # make sources
+ rm -f conftest.*
+
+ cat >conftest.ver <<EOF
+module_1.0 {
+global:
+ globalf1;
+local:
+ localf1;
+};
+module_2.0 {
+global:
+ globalf2;
+local:
+ localf2;
+ _*;
+} module_1.0;
+submodule_1.0 {
+global:
+ subglobalf1;
+ _ismissing;
+local:
+ sublocalf1;
+};
+submodule_2.0 {
+global:
+ subglobalf2;
+local:
+ sublocalf2;
+ _*;
+} submodule_1.0;
+EOF
+ cat >conftest.$ac_ext <<EOF
+#line 6439 "configure"
+int _ismissing(void) { return 1; }
+int _localf1(void) { return 1; }
+int _localf2(void) { return 2; }
+int globalf1(void) { return 1; }
+int globalf2(void) { return 2; }
+int _sublocalf1(void) { return 1; }
+int _sublocalf2(void) { return 2; }
+int subglobalf1(void) { return 1; }
+int subglobalf2(void) { return 2; }
+EOF
+ cat >conftest.mk <<EOF
+CC=${CC}
+CFLAGS=${CFLAGS}
+CPPFLAGS=${CPPFLAGS}
+LDFLAGS=${LDFLAGS}
+LIBS=${LIBS}
+VERSIONED_SYMS=${VERSIONED_SYMS}
+RESULTING_SYMS=conftest.ver
+MK_SHARED_LIB=${MK_SHARED_LIB}
+conftest.so: conftest.$ac_cv_objext
+ \$(MK_SHARED_LIB) conftest.$ac_cv_objext
+EOF
+
+ # compile source, make library
+ if make -f conftest.mk 2>&5 >/dev/null
+ then
+ # test for missing symbol in either Data or Text section
+ cf_missing=`nm -P conftest.so 2>&5 |fgrep _ismissing | egrep '[ ][DT][ ]'`
+ test -n "$cf_missing" && WILDCARD_SYMS=yes
+ fi
+ echo "$as_me:6470: result: $WILDCARD_SYMS" >&5
+echo "${ECHO_T}$WILDCARD_SYMS" >&6
+ rm -f conftest.*
+ fi
+fi
+
+ ;;
+ esac
+done
+
### Checks for special libraries, must be done up-front.
SHLIB_LIST=""
-echo "$as_me:4858: checking if you want to link with the GPM mouse library" >&5
+echo "$as_me:6483: checking if you want to link with the GPM mouse library" >&5
echo $ECHO_N "checking if you want to link with the GPM mouse library... $ECHO_C" >&6
# Check whether --with-gpm or --without-gpm was given.
@@ -4865,27 +6490,27 @@ if test "${with_gpm+set}" = set; then
else
with_gpm=maybe
fi;
-echo "$as_me:4868: result: $with_gpm" >&5
+echo "$as_me:6493: result: $with_gpm" >&5
echo "${ECHO_T}$with_gpm" >&6
if test "$with_gpm" != no ; then
- echo "$as_me:4872: checking for gpm.h" >&5
+ echo "$as_me:6497: checking for gpm.h" >&5
echo $ECHO_N "checking for gpm.h... $ECHO_C" >&6
if test "${ac_cv_header_gpm_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 4878 "configure"
+#line 6503 "configure"
#include "confdefs.h"
#include <gpm.h>
_ACEOF
-if { (eval echo "$as_me:4882: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:6507: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:4888: \$? = $ac_status" >&5
+ echo "$as_me:6513: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -4904,7 +6529,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:4907: result: $ac_cv_header_gpm_h" >&5
+echo "$as_me:6532: result: $ac_cv_header_gpm_h" >&5
echo "${ECHO_T}$ac_cv_header_gpm_h" >&6
if test $ac_cv_header_gpm_h = yes; then
@@ -4915,14 +6540,15 @@ EOF
if test "$with_gpm" != yes && test "$with_gpm" != maybe ; then
test -n "$verbose" && echo " assuming we really have GPM library" 1>&6
-echo "${as_me:-configure}:4918: testing assuming we really have GPM library ..." 1>&5
+echo "${as_me:-configure}:6543: testing assuming we really have GPM library ..." 1>&5
cat >>confdefs.h <<\EOF
#define HAVE_LIBGPM 1
EOF
+ with_gpm=yes
else
- echo "$as_me:4925: checking for Gpm_Open in -lgpm" >&5
+ echo "$as_me:6551: checking for Gpm_Open in -lgpm" >&5
echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6
if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4930,7 +6556,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgpm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 4933 "configure"
+#line 6559 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -4941,7 +6567,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char Gpm_Open ();
int
-main ()
+main (void)
{
Gpm_Open ();
;
@@ -4949,16 +6575,16 @@ Gpm_Open ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4952: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6578: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:4955: \$? = $ac_status" >&5
+ echo "$as_me:6581: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4958: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6584: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4961: \$? = $ac_status" >&5
+ echo "$as_me:6587: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_gpm_Gpm_Open=yes
else
@@ -4969,23 +6595,29 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:4972: result: $ac_cv_lib_gpm_Gpm_Open" >&5
+echo "$as_me:6598: result: $ac_cv_lib_gpm_Gpm_Open" >&5
echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6
if test $ac_cv_lib_gpm_Gpm_Open = yes; then
- :
+ with_gpm=yes
else
- { { echo "$as_me:4978: error: Cannot link with GPM library" >&5
+ if test "$with_gpm" = maybe; then
+ { echo "$as_me:6605: WARNING: Cannot link with GPM library" >&5
+echo "$as_me: WARNING: Cannot link with GPM library" >&2;}
+ with_gpm=no
+ else
+ { { echo "$as_me:6609: error: Cannot link with GPM library" >&5
echo "$as_me: error: Cannot link with GPM library" >&2;}
{ (exit 1); exit 1; }; }
- fi
- with_gpm=yes
+ fi
fi
+ fi
+
else
- test "$with_gpm" != maybe && { echo "$as_me:4988: WARNING: Cannot find GPM header" >&5
+ test "$with_gpm" != maybe && { echo "$as_me:6620: WARNING: Cannot find GPM header" >&5
echo "$as_me: WARNING: Cannot find GPM header" >&2;}
with_gpm=no
@@ -4994,7 +6626,7 @@ fi
fi
if test "$with_gpm" != no ; then
- echo "$as_me:4997: checking if you want to load GPM dynamically" >&5
+ echo "$as_me:6629: checking if you want to load GPM dynamically" >&5
echo $ECHO_N "checking if you want to load GPM dynamically... $ECHO_C" >&6
# Check whether --with-dlsym or --without-dlsym was given.
@@ -5004,58 +6636,58 @@ if test "${with_dlsym+set}" = set; then
else
with_dlsym=yes
fi;
- echo "$as_me:5007: result: $with_dlsym" >&5
+ echo "$as_me:6639: result: $with_dlsym" >&5
echo "${ECHO_T}$with_dlsym" >&6
if test "x$with_dlsym" = xyes ; then
cf_have_dlsym=no
-echo "$as_me:5012: checking for dlsym" >&5
+echo "$as_me:6644: checking for dlsym" >&5
echo $ECHO_N "checking for dlsym... $ECHO_C" >&6
if test "${ac_cv_func_dlsym+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 5018 "configure"
+#line 6650 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlsym (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define dlsym autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef dlsym
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char dlsym ();
-char (*f) ();
+char dlsym (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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_dlsym) || defined (__stub___dlsym)
-choke me
-#else
-f = dlsym; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for dlsym
#endif
+ return dlsym ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5049: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6681: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5052: \$? = $ac_status" >&5
+ echo "$as_me:6684: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5055: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6687: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5058: \$? = $ac_status" >&5
+ echo "$as_me:6690: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_dlsym=yes
else
@@ -5065,14 +6697,14 @@ ac_cv_func_dlsym=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:5068: result: $ac_cv_func_dlsym" >&5
+echo "$as_me:6700: result: $ac_cv_func_dlsym" >&5
echo "${ECHO_T}$ac_cv_func_dlsym" >&6
if test $ac_cv_func_dlsym = yes; then
cf_have_dlsym=yes
else
cf_have_libdl=no
-echo "$as_me:5075: checking for dlsym in -ldl" >&5
+echo "$as_me:6707: checking for dlsym in -ldl" >&5
echo $ECHO_N "checking for dlsym in -ldl... $ECHO_C" >&6
if test "${ac_cv_lib_dl_dlsym+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5080,7 +6712,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldl $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 5083 "configure"
+#line 6715 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -5091,7 +6723,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char dlsym ();
int
-main ()
+main (void)
{
dlsym ();
;
@@ -5099,16 +6731,16 @@ dlsym ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5102: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6734: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5105: \$? = $ac_status" >&5
+ echo "$as_me:6737: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5108: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6740: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5111: \$? = $ac_status" >&5
+ echo "$as_me:6743: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_dl_dlsym=yes
else
@@ -5119,7 +6751,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:5122: result: $ac_cv_lib_dl_dlsym" >&5
+echo "$as_me:6754: result: $ac_cv_lib_dl_dlsym" >&5
echo "${ECHO_T}$ac_cv_lib_dl_dlsym" >&6
if test $ac_cv_lib_dl_dlsym = yes; then
@@ -5130,16 +6762,32 @@ fi
fi
if test "$cf_have_dlsym" = yes ; then
- test "$cf_have_libdl" = yes && LIBS="-ldl $LIBS"
+ test "$cf_have_libdl" = yes && {
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -ldl; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+ }
- echo "$as_me:5135: checking whether able to link to dl*() functions" >&5
+ echo "$as_me:6783: checking whether able to link to dl*() functions" >&5
echo $ECHO_N "checking whether able to link to dl*() functions... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 5138 "configure"
+#line 6786 "configure"
#include "confdefs.h"
#include <dlfcn.h>
int
-main ()
+main (void)
{
void *obj;
@@ -5153,16 +6801,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5156: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6804: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5159: \$? = $ac_status" >&5
+ echo "$as_me:6807: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5162: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6810: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5165: \$? = $ac_status" >&5
+ echo "$as_me:6813: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cat >>confdefs.h <<\EOF
@@ -5173,15 +6821,15 @@ else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- { { echo "$as_me:5176: error: Cannot link test program for libdl" >&5
+ { { echo "$as_me:6824: error: Cannot link test program for libdl" >&5
echo "$as_me: error: Cannot link test program for libdl" >&2;}
{ (exit 1); exit 1; }; }
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- echo "$as_me:5181: result: ok" >&5
+ echo "$as_me:6829: result: ok" >&5
echo "${ECHO_T}ok" >&6
else
- { { echo "$as_me:5184: error: Cannot find dlsym function" >&5
+ { { echo "$as_me:6832: error: Cannot find dlsym function" >&5
echo "$as_me: error: Cannot find dlsym function" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -5189,12 +6837,12 @@ fi
if test "x$with_gpm" != xyes ; then
test -n "$verbose" && echo " assuming soname for gpm is $with_gpm" 1>&6
-echo "${as_me:-configure}:5192: testing assuming soname for gpm is $with_gpm ..." 1>&5
+echo "${as_me:-configure}:6840: testing assuming soname for gpm is $with_gpm ..." 1>&5
cf_cv_gpm_soname="$with_gpm"
else
-echo "$as_me:5197: checking for soname of gpm library" >&5
+echo "$as_me:6845: checking for soname of gpm library" >&5
echo $ECHO_N "checking for soname of gpm library... $ECHO_C" >&6
if test "${cf_cv_gpm_soname+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5204,23 +6852,39 @@ cf_cv_gpm_soname=unknown
if test "$cross_compiling" != yes ; then
cat >conftest.$ac_ext <<CF_EOF
#include <gpm.h>
-int main()
+int main(void)
{
if (Gpm_Open(0,0)) Gpm_Close();
${cf_cv_main_return:-return}(0);
}
CF_EOF
cf_save_LIBS="$LIBS"
- LIBS="-lgpm $LIBS"
- if { (eval echo "$as_me:5215: \"$ac_compile\"") >&5
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lgpm; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ if { (eval echo "$as_me:6879: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5218: \$? = $ac_status" >&5
+ echo "$as_me:6882: \$? = $ac_status" >&5
(exit $ac_status); } ; then
- if { (eval echo "$as_me:5220: \"$ac_link\"") >&5
+ if { (eval echo "$as_me:6884: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5223: \$? = $ac_status" >&5
+ echo "$as_me:6887: \$? = $ac_status" >&5
(exit $ac_status); } ; then
cf_cv_gpm_soname=`ldd conftest$ac_exeext 2>/dev/null | sed -e 's,^.*/,,' -e 's, .*$,,' | fgrep libgpm.`
test -z "$cf_cv_gpm_soname" && cf_cv_gpm_soname=unknown
@@ -5231,7 +6895,7 @@ LIBS="$cf_save_LIBS"
fi
fi
-echo "$as_me:5234: result: $cf_cv_gpm_soname" >&5
+echo "$as_me:6898: result: $cf_cv_gpm_soname" >&5
echo "${ECHO_T}$cf_cv_gpm_soname" >&6
fi
@@ -5241,16 +6905,65 @@ cat >>confdefs.h <<EOF
EOF
SHLIB_LIST="-ldl $SHLIB_LIST"
+
+cf_add_libs="$PRIVATE_LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -ldl; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+PRIVATE_LIBS="$cf_add_libs"
+
else
SHLIB_LIST="-lgpm $SHLIB_LIST"
- TEST_LIBS="-lgpm $TEST_LIBS"
+
+cf_add_libs="$TEST_LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lgpm; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+TEST_LIBS="$cf_add_libs"
+
+cf_add_libs="$PRIVATE_LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lgpm; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+PRIVATE_LIBS="$cf_add_libs"
+
fi
cat >>confdefs.h <<\EOF
#define HAVE_LIBGPM 1
EOF
-echo "$as_me:5253: checking for Gpm_Wgetch in -lgpm" >&5
+echo "$as_me:6966: checking for Gpm_Wgetch in -lgpm" >&5
echo $ECHO_N "checking for Gpm_Wgetch in -lgpm... $ECHO_C" >&6
if test "${ac_cv_lib_gpm_Gpm_Wgetch+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5258,7 +6971,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgpm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 5261 "configure"
+#line 6974 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -5269,7 +6982,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char Gpm_Wgetch ();
int
-main ()
+main (void)
{
Gpm_Wgetch ();
;
@@ -5277,16 +6990,16 @@ Gpm_Wgetch ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5280: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6993: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5283: \$? = $ac_status" >&5
+ echo "$as_me:6996: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5286: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6999: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5289: \$? = $ac_status" >&5
+ echo "$as_me:7002: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_gpm_Gpm_Wgetch=yes
else
@@ -5297,11 +7010,11 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:5300: result: $ac_cv_lib_gpm_Gpm_Wgetch" >&5
+echo "$as_me:7013: result: $ac_cv_lib_gpm_Gpm_Wgetch" >&5
echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Wgetch" >&6
if test $ac_cv_lib_gpm_Gpm_Wgetch = yes; then
-echo "$as_me:5304: checking if GPM is weakly bound to curses library" >&5
+echo "$as_me:7017: checking if GPM is weakly bound to curses library" >&5
echo $ECHO_N "checking if GPM is weakly bound to curses library... $ECHO_C" >&6
if test "${cf_cv_check_gpm_wgetch+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5312,7 +7025,7 @@ if test "$cross_compiling" != yes ; then
cat >conftest.$ac_ext <<CF_EOF
#include <gpm.h>
-int main()
+int main(void)
{
Gpm_Wgetch();
${cf_cv_main_return:-return}(0);
@@ -5325,15 +7038,15 @@ CF_EOF
# to rely on the static library, noting that some packagers may not
# include it.
LIBS="-static -lgpm -dynamic $LIBS"
- if { (eval echo "$as_me:5328: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:7041: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5331: \$? = $ac_status" >&5
+ echo "$as_me:7044: \$? = $ac_status" >&5
(exit $ac_status); } ; then
- if { (eval echo "$as_me:5333: \"$ac_link\"") >&5
+ if { (eval echo "$as_me:7046: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5336: \$? = $ac_status" >&5
+ echo "$as_me:7049: \$? = $ac_status" >&5
(exit $ac_status); } ; then
cf_cv_check_gpm_wgetch=`nm conftest$ac_exeext | egrep '\<wgetch\>' | egrep '\<[vVwW]\>'`
test -n "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=yes
@@ -5345,11 +7058,11 @@ CF_EOF
fi
fi
-echo "$as_me:5348: result: $cf_cv_check_gpm_wgetch" >&5
+echo "$as_me:7061: result: $cf_cv_check_gpm_wgetch" >&5
echo "${ECHO_T}$cf_cv_check_gpm_wgetch" >&6
if test "$cf_cv_check_gpm_wgetch" != yes ; then
- { echo "$as_me:5352: WARNING: GPM library is already linked with curses - read the FAQ" >&5
+ { echo "$as_me:7065: WARNING: GPM library is already linked with curses - read the FAQ" >&5
echo "$as_me: WARNING: GPM library is already linked with curses - read the FAQ" >&2;}
fi
@@ -5357,786 +7070,623 @@ fi
fi
-# not everyone has "test -c"
-if test -c /dev/sysmouse 2>/dev/null ; then
-echo "$as_me:5362: checking if you want to use sysmouse" >&5
-echo $ECHO_N "checking if you want to use sysmouse... $ECHO_C" >&6
+echo "$as_me:7073: checking if you want to use PCRE2 for regular-expressions" >&5
+echo $ECHO_N "checking if you want to use PCRE2 for regular-expressions... $ECHO_C" >&6
+
+# Check whether --with-pcre2 or --without-pcre2 was given.
+if test "${with_pcre2+set}" = set; then
+ withval="$with_pcre2"
-# Check whether --with-sysmouse or --without-sysmouse was given.
-if test "${with_sysmouse+set}" = set; then
- withval="$with_sysmouse"
- cf_with_sysmouse=$withval
-else
- cf_with_sysmouse=maybe
fi;
- if test "$cf_with_sysmouse" != no ; then
- cat >conftest.$ac_ext <<_ACEOF
-#line 5374 "configure"
-#include "confdefs.h"
+test -z "$with_pcre2" && with_pcre2=no
+echo "$as_me:7082: result: $with_pcre2" >&5
+echo "${ECHO_T}$with_pcre2" >&6
-#include <osreldate.h>
-#if (__FreeBSD_version >= 400017)
-#include <sys/consio.h>
-#include <sys/fbio.h>
-#else
-#include <machine/console.h>
-#endif
+if test "x$with_pcre2" != xno ; then
-int
-main ()
-{
+if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists libpcre2; then
+ test -n "$verbose" && echo " found package libpcre2" 1>&6
- struct mouse_info the_mouse;
- ioctl(0, CONS_MOUSECTL, &the_mouse);
+echo "${as_me:-configure}:7090: testing found package libpcre2 ..." 1>&5
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5397: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:5400: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5403: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5406: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_with_sysmouse=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_with_sysmouse=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- fi
-echo "$as_me:5416: result: $cf_with_sysmouse" >&5
-echo "${ECHO_T}$cf_with_sysmouse" >&6
-test "$cf_with_sysmouse" = yes &&
-cat >>confdefs.h <<\EOF
-#define USE_SYSMOUSE 1
-EOF
+ cf_pkgconfig_incs="`$PKG_CONFIG --cflags libpcre2 2>/dev/null`"
+ cf_pkgconfig_libs="`$PKG_CONFIG --libs libpcre2 2>/dev/null`"
+ test -n "$verbose" && echo " package libpcre2 CFLAGS: $cf_pkgconfig_incs" 1>&6
-fi
+echo "${as_me:-configure}:7096: testing package libpcre2 CFLAGS: $cf_pkgconfig_incs ..." 1>&5
-if test X"$CC_G_OPT" = X"" ; then
- CC_G_OPT='-g'
- test -n "$GCC" && test "x${ac_cv_prog_cc_g}" != xyes && CC_G_OPT=''
-fi
+ test -n "$verbose" && echo " package libpcre2 LIBS: $cf_pkgconfig_libs" 1>&6
-if test X"$CXX_G_OPT" = X"" ; then
- CXX_G_OPT='-g'
- test -n "$GXX" && test "x${ac_cv_prog_cxx_g}" != xyes && CXX_G_OPT=''
-fi
+echo "${as_me:-configure}:7100: testing package libpcre2 LIBS: $cf_pkgconfig_libs ..." 1>&5
-echo "$as_me:5435: checking for default loader flags" >&5
-echo $ECHO_N "checking for default loader flags... $ECHO_C" >&6
-case $DFT_LWR_MODEL in
-libtool) LD_MODEL='' ;;
-normal) LD_MODEL='' ;;
-debug) LD_MODEL=$CC_G_OPT ;;
-profile) LD_MODEL='-pg';;
-shared) LD_MODEL='' ;;
-esac
-echo "$as_me:5444: result: $LD_MODEL" >&5
-echo "${ECHO_T}$LD_MODEL" >&6
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
-case $DFT_LWR_MODEL in
-shared)
+for cf_add_cflags in $cf_pkgconfig_incs
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
-echo "$as_me:5450: checking if rpath option should be used" >&5
-echo $ECHO_N "checking if rpath option should be used... $ECHO_C" >&6
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
-# Check whether --enable-rpath or --disable-rpath was given.
-if test "${enable_rpath+set}" = set; then
- enableval="$enable_rpath"
- cf_cv_enable_rpath=$enableval
-else
- cf_cv_enable_rpath=no
-fi;
-echo "$as_me:5460: result: $cf_cv_enable_rpath" >&5
-echo "${ECHO_T}$cf_cv_enable_rpath" >&6
+ if test $cf_fix_cppflags = yes ; then
-echo "$as_me:5463: checking if shared libraries should be relinked during install" >&5
-echo $ECHO_N "checking if shared libraries should be relinked during install... $ECHO_C" >&6
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
-# Check whether --enable-relink or --disable-relink was given.
-if test "${enable_relink+set}" = set; then
- enableval="$enable_relink"
- cf_cv_do_relink=$enableval
-else
- cf_cv_do_relink=yes
-fi;
-echo "$as_me:5473: result: $cf_cv_do_relink" >&5
-echo "${ECHO_T}$cf_cv_do_relink" >&6
- ;;
-esac
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
-# we will build libraries one-level down.
-rel_builddir=..
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
-LD_RPATH_OPT=
-echo "$as_me:5482: checking for an rpath option" >&5
-echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6
-case $cf_cv_system_name in #(vi
-irix*) #(vi
- if test "$GCC" = yes; then
- LD_RPATH_OPT="-Wl,-rpath,"
- else
- LD_RPATH_OPT="-rpath "
- fi
- ;;
-linux*|gnu*|k*bsd*-gnu) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-openbsd[2-9].*|mirbsd*) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-dragonfly*|freebsd*) #(vi
- LD_RPATH_OPT="-rpath "
- ;;
-netbsd*) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-osf*|mls+*) #(vi
- LD_RPATH_OPT="-rpath "
- ;;
-solaris2*) #(vi
- LD_RPATH_OPT="-R"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
;;
-*)
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
;;
esac
-echo "$as_me:5513: result: $LD_RPATH_OPT" >&5
-echo "${ECHO_T}$LD_RPATH_OPT" >&6
+done
-case "x$LD_RPATH_OPT" in #(vi
-x-R*)
- echo "$as_me:5518: checking if we need a space after rpath option" >&5
-echo $ECHO_N "checking if we need a space after rpath option... $ECHO_C" >&6
- cf_save_LIBS="$LIBS"
- LIBS="${LD_RPATH_OPT}$libdir $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
-#line 5523 "configure"
-#include "confdefs.h"
+if test -n "$cf_new_cflags" ; then
-int
-main ()
-{
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5535: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:5538: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5541: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:5544: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_rpath_space=no
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_rpath_space=yes
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- LIBS="$cf_save_LIBS"
- echo "$as_me:5554: result: $cf_rpath_space" >&5
-echo "${ECHO_T}$cf_rpath_space" >&6
- test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
- ;;
-esac
- RM_SHARED_OPTS=
- LOCAL_LDFLAGS=
- LOCAL_LDFLAGS2=
- LD_SHARED_OPTS=
- INSTALL_LIB="-m 644"
- : ${rel_builddir:=.}
+if test -n "$cf_new_cppflags" ; then
- shlibdir=$libdir
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
- MAKE_DLLS="#"
+fi
- cf_cv_do_symlinks=no
- cf_ld_rpath_opt=
- test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT"
+if test -n "$cf_new_extra_cppflags" ; then
- echo "$as_me:5575: checking if release/abi version should be used for shared libs" >&5
-echo $ECHO_N "checking if release/abi version should be used for shared libs... $ECHO_C" >&6
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
-# Check whether --with-shlib-version or --without-shlib-version was given.
-if test "${with_shlib_version+set}" = set; then
- withval="$with_shlib_version"
- test -z "$withval" && withval=auto
- case $withval in #(vi
- yes) #(vi
- cf_cv_shlib_version=auto
- ;;
- rel|abi|auto|no) #(vi
- cf_cv_shlib_version=$withval
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ :
+else
+ cf_pkgconfig_incs=
+ cf_pkgconfig_libs=
+
+if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists libpcre; then
+ test -n "$verbose" && echo " found package libpcre" 1>&6
+
+echo "${as_me:-configure}:7224: testing found package libpcre ..." 1>&5
+
+ cf_pkgconfig_incs="`$PKG_CONFIG --cflags libpcre 2>/dev/null`"
+ cf_pkgconfig_libs="`$PKG_CONFIG --libs libpcre 2>/dev/null`"
+ test -n "$verbose" && echo " package libpcre CFLAGS: $cf_pkgconfig_incs" 1>&6
+
+echo "${as_me:-configure}:7230: testing package libpcre CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+
+ test -n "$verbose" && echo " package libpcre LIBS: $cf_pkgconfig_libs" 1>&6
+
+echo "${as_me:-configure}:7234: testing package libpcre LIBS: $cf_pkgconfig_libs ..." 1>&5
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_pkgconfig_incs
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
;;
- *)
- { { echo "$as_me:5590: error: option value must be one of: rel, abi, auto or no" >&5
-echo "$as_me: error: option value must be one of: rel, abi, auto or no" >&2;}
- { (exit 1); exit 1; }; }
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ :
else
- cf_cv_shlib_version=auto
-fi;
- echo "$as_me:5599: result: $cf_cv_shlib_version" >&5
-echo "${ECHO_T}$cf_cv_shlib_version" >&6
+ cf_pkgconfig_incs=
+ cf_pkgconfig_libs=
- cf_cv_rm_so_locs=no
- cf_try_cflags=
+ { { echo "$as_me:7355: error: Cannot find PCRE2 library" >&5
+echo "$as_me: error: Cannot find PCRE2 library" >&2;}
+ { (exit 1); exit 1; }; }
+fi
- # Some less-capable ports of gcc support only -fpic
- CC_SHARED_OPTS=
- if test "$GCC" = yes
- then
- echo "$as_me:5609: checking which $CC option to use" >&5
-echo $ECHO_N "checking which $CC option to use... $ECHO_C" >&6
- cf_save_CFLAGS="$CFLAGS"
- for CC_SHARED_OPTS in -fPIC -fpic ''
- do
- CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
- cat >conftest.$ac_ext <<_ACEOF
-#line 5616 "configure"
+fi
+
+cat >>confdefs.h <<\EOF
+#define HAVE_LIB_PCRE2 1
+EOF
+
+ # if pkgconfig gave no results, look for the libraries directly
+ case $LIBS in
+ (*pcre2-posix*|*pcreposix*)
+ ;;
+ (*)
+ echo "$as_me:7371: checking for regcomp in -lpcre2-posix" >&5
+echo $ECHO_N "checking for regcomp in -lpcre2-posix... $ECHO_C" >&6
+if test "${ac_cv_lib_pcre2_posix_regcomp+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpcre2-posix $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 7379 "configure"
#include "confdefs.h"
-#include <stdio.h>
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char regcomp ();
int
-main ()
+main (void)
{
-int x = 1
+regcomp ();
;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5628: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:7398: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5631: \$? = $ac_status" >&5
+ echo "$as_me:7401: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5634: \"$ac_try\"") >&5
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:7404: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5637: \$? = $ac_status" >&5
+ echo "$as_me:7407: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- break
+ ac_cv_lib_pcre2_posix_regcomp=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
+ac_cv_lib_pcre2_posix_regcomp=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- done
- echo "$as_me:5646: result: $CC_SHARED_OPTS" >&5
-echo "${ECHO_T}$CC_SHARED_OPTS" >&6
- CFLAGS="$cf_save_CFLAGS"
- fi
-
- cf_cv_shlib_version_infix=no
-
- case $cf_cv_system_name in #(vi
- aix4.3-9*|aix[5-7]*) #(vi
- if test "$GCC" = yes; then
- CC_SHARED_OPTS=
- MK_SHARED_LIB='${CC} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@'
- else
- # CC_SHARED_OPTS='-qpic=large -G'
- # perhaps "-bM:SRE -bnoentry -bexpall"
- MK_SHARED_LIB='${CC} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@'
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:7418: result: $ac_cv_lib_pcre2_posix_regcomp" >&5
+echo "${ECHO_T}$ac_cv_lib_pcre2_posix_regcomp" >&6
+if test $ac_cv_lib_pcre2_posix_regcomp = yes; then
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lpcre2-posix; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
fi
- ;;
- beos*) #(vi
- MK_SHARED_LIB='${CC} ${CFLAGS} -o $@ -Xlinker -soname=`basename $@` -nostart -e 0'
- ;;
- cygwin*) #(vi
- CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
- RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
- cf_cv_shlib_version=cygdll
- cf_cv_shlib_version_infix=cygdll
- shlibdir=$bindir
- MAKE_DLLS=
- cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
- SHARED_LIB=\$1
- IMPORT_LIB=\`echo "\$1" | sed -e 's/cyg/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\`
- shift
- cat <<-EOF
- Linking shared library
- ** SHARED_LIB \$SHARED_LIB
- ** IMPORT_LIB \$IMPORT_LIB
-EOF
- exec \$* -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB}
-CF_EOF
- chmod +x mk_shared_lib.sh
- ;;
- msys*) #(vi
- CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
- RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
- cf_cv_shlib_version=msysdll
- cf_cv_shlib_version_infix=msysdll
- shlibdir=$bindir
- MAKE_DLLS=
- cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
- SHARED_LIB=\$1
- IMPORT_LIB=\`echo "\$1" | sed -e 's/msys-/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\`
- shift
- cat <<-EOF
- Linking shared library
- ** SHARED_LIB \$SHARED_LIB
- ** IMPORT_LIB \$IMPORT_LIB
-EOF
- exec \$* -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB}
-CF_EOF
- chmod +x mk_shared_lib.sh
- ;;
- darwin*) #(vi
- cf_try_cflags="no-cpp-precomp"
- CC_SHARED_OPTS="-dynamic"
- MK_SHARED_LIB='${CC} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $@` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $@'
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi
- cf_cv_shlib_version_infix=yes
- echo "$as_me:5717: checking if ld -search_paths_first works" >&5
-echo $ECHO_N "checking if ld -search_paths_first works... $ECHO_C" >&6
-if test "${cf_cv_ldflags_search_paths_first+set}" = set; then
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+else
+ echo "$as_me:7439: checking for regcomp in -lpcreposix" >&5
+echo $ECHO_N "checking for regcomp in -lpcreposix... $ECHO_C" >&6
+if test "${ac_cv_lib_pcreposix_regcomp+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-
- cf_save_LDFLAGS=$LDFLAGS
- LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
- cat >conftest.$ac_ext <<_ACEOF
-#line 5726 "configure"
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpcreposix $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 7447 "configure"
#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char regcomp ();
int
-main ()
+main (void)
{
-int i;
+regcomp ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5738: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7466: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5741: \$? = $ac_status" >&5
+ echo "$as_me:7469: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5744: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7472: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5747: \$? = $ac_status" >&5
+ echo "$as_me:7475: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- cf_cv_ldflags_search_paths_first=yes
+ ac_cv_lib_pcreposix_regcomp=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-cf_cv_ldflags_search_paths_first=no
+ac_cv_lib_pcreposix_regcomp=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- LDFLAGS=$cf_save_LDFLAGS
+LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:5758: result: $cf_cv_ldflags_search_paths_first" >&5
-echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
- if test $cf_cv_ldflags_search_paths_first = yes; then
- LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
- fi
- ;;
- hpux[7-8]*) #(vi
- # HP-UX 8.07 ld lacks "+b" option used for libdir search-list
- if test "$GCC" != yes; then
- CC_SHARED_OPTS='+Z'
- fi
- MK_SHARED_LIB='${LD} -b -o $@'
- INSTALL_LIB="-m 555"
- ;;
- hpux*) #(vi
- # (tested with gcc 2.7.2 -- I don't have c89)
- if test "$GCC" = yes; then
- LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}'
- else
- CC_SHARED_OPTS='+Z'
- LD_SHARED_OPTS='-Wl,+b,${libdir}'
- fi
- MK_SHARED_LIB='${LD} +b ${libdir} -b -o $@'
- # HP-UX shared libraries must be executable, and should be
- # readonly to exploit a quirk in the memory manager.
- INSTALL_LIB="-m 555"
- ;;
- interix*)
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
- if test "$cf_cv_shlib_version" = rel; then
- cf_shared_soname='`basename .${REL_VERSION}`.${ABI_VERSION}'
- else
- cf_shared_soname='`basename `'
- fi
- CC_SHARED_OPTS=
- MK_SHARED_LIB='${CC} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o '
- ;;
- irix*) #(vi
- if test "$cf_cv_enable_rpath" = yes ; then
- EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
- fi
- # tested with IRIX 5.2 and 'cc'.
- if test "$GCC" != yes; then
- CC_SHARED_OPTS='-KPIC'
- MK_SHARED_LIB='${CC} -shared -rdata_shared -soname `basename $@` -o $@'
- else
- MK_SHARED_LIB='${CC} -shared -Wl,-soname,`basename $@` -o $@'
- fi
- cf_cv_rm_so_locs=yes
- ;;
- linux*|gnu*|k*bsd*-gnu) #(vi
- if test "$DFT_LWR_MODEL" = "shared" ; then
- LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
- LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
- fi
- if test "$cf_cv_enable_rpath" = yes ; then
- EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
+echo "$as_me:7486: result: $ac_cv_lib_pcreposix_regcomp" >&5
+echo "${ECHO_T}$ac_cv_lib_pcreposix_regcomp" >&6
+if test $ac_cv_lib_pcreposix_regcomp = yes; then
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lpcreposix; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
- if test "$cf_cv_shlib_version" = rel; then
- cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
- else
- cf_cv_shared_soname='`basename $@`'
- fi
-
- MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@'
- ;;
- mingw*) #(vi
- cf_cv_shlib_version=mingw
- cf_cv_shlib_version_infix=mingw
- shlibdir=$bindir
- MAKE_DLLS=
- if test "$DFT_LWR_MODEL" = "shared" ; then
- LOCAL_LDFLAGS="-Wl,--enable-auto-import"
- LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
- EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS"
- fi
- CC_SHARED_OPTS=
- MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
- RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
- cat >mk_shared_lib.sh <<-CF_EOF
- #!/bin/sh
- SHARED_LIB=\$1
- IMPORT_LIB=\`echo "\$1" | sed -e 's/[0-9]*\.dll$/.dll.a/'\`
- shift
- cat <<-EOF
- Linking shared library
- ** SHARED_LIB \$SHARED_LIB
- ** IMPORT_LIB \$IMPORT_LIB
-EOF
- exec \$* -shared -Wl,--enable-auto-import,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB}
-CF_EOF
- chmod +x mk_shared_lib.sh
- ;;
- openbsd[2-9].*|mirbsd*) #(vi
- if test "$DFT_LWR_MODEL" = "shared" ; then
- LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
- LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
- fi
- if test "$cf_cv_enable_rpath" = yes ; then
- EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
- fi
- CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
+else
+ { { echo "$as_me:7507: error: Cannot find PCRE2 POSIX library" >&5
+echo "$as_me: error: Cannot find PCRE2 POSIX library" >&2;}
+ { (exit 1); exit 1; }; }
+fi
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
- if test "$cf_cv_shlib_version" = rel; then
- cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
- else
- cf_cv_shared_soname='`basename $@`'
- fi
+fi
- MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@'
- ;;
- nto-qnx*|openbsd*|freebsd[12].*) #(vi
- CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
- MK_SHARED_LIB='${LD} -Bshareable -o $@'
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
;;
- dragonfly*|freebsd*) #(vi
- CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
- if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
- LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
- LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS"
- EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
- fi
+ esac
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
- if test "$cf_cv_shlib_version" = rel; then
- cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
- else
- cf_cv_shared_soname='`basename $@`'
- fi
+ # either way, check for the library header files
- MK_SHARED_LIB='${LD} -shared -Bshareable -soname=`basename $@` -o $@'
- ;;
- netbsd*) #(vi
- CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
- if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
- LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
- LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
- EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
- if test "$cf_cv_shlib_version" = auto; then
- if test -f /usr/libexec/ld.elf_so; then
- cf_cv_shlib_version=abi
- else
- cf_cv_shlib_version=rel
- fi
- fi
+for ac_header in pcre2-posix.h pcreposix.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:7522: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 7528 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:7532: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:7538: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:7557: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
- if test "$cf_cv_shlib_version" = rel; then
- cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
- else
- cf_cv_shared_soname='`basename $@`'
- fi
+fi
+done
- MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $@'
- else
- MK_SHARED_LIB='${CC} -Wl,-shared -Wl,-Bshareable -o $@'
- fi
- ;;
- osf*|mls+*) #(vi
- # 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).
- MK_SHARED_LIB='${LD} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $@`'
- case $host_os in #(vi
- osf4*)
- MK_SHARED_LIB="${MK_SHARED_LIB} -msym"
- ;;
- esac
- MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $@'
- if test "$DFT_LWR_MODEL" = "shared" ; then
- LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
- LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
- fi
- cf_cv_rm_so_locs=yes
- ;;
- sco3.2v5*) # (also uw2* and UW7: hops 13-Apr-98
- # tested with osr5.0.5
- if test "$GCC" != yes; then
- CC_SHARED_OPTS='-belf -KPIC'
- fi
- MK_SHARED_LIB='${LD} -dy -G -h `basename $@ .${REL_VERSION}`.${ABI_VERSION} -o $@'
- if test "$cf_cv_enable_rpath" = yes ; then
- # only way is to set LD_RUN_PATH but no switch for it
- RUN_PATH=$libdir
- fi
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
- LINK_PROGS='LD_RUN_PATH=${libdir}'
- LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib'
- ;;
- sunos4*) #(vi
- # tested with SunOS 4.1.1 and gcc 2.7.0
- if test "$GCC" != yes; then
- CC_SHARED_OPTS='-KPIC'
- fi
- MK_SHARED_LIB='${LD} -assert pure-text -o $@'
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
- ;;
- solaris2*) #(vi
- # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
- # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3
- if test "$DFT_LWR_MODEL" = "shared" ; then
- LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}"
- LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
- fi
- if test "$cf_cv_enable_rpath" = yes ; then
- EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS"
- fi
+fi
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
- if test "$cf_cv_shlib_version" = rel; then
- cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
- else
- cf_cv_shared_soname='`basename $@`'
- fi
+# not everyone has "test -c"
+if test -c /dev/sysmouse 2>/dev/null ; then
+echo "$as_me:7571: checking if you want to use sysmouse" >&5
+echo $ECHO_N "checking if you want to use sysmouse... $ECHO_C" >&6
- if test "$GCC" != yes; then
- cf_save_CFLAGS="$CFLAGS"
- for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O
- do
- CFLAGS="$cf_shared_opts $cf_save_CFLAGS"
- cat >conftest.$ac_ext <<_ACEOF
-#line 5983 "configure"
+# Check whether --with-sysmouse or --without-sysmouse was given.
+if test "${with_sysmouse+set}" = set; then
+ withval="$with_sysmouse"
+ cf_with_sysmouse=$withval
+else
+ cf_with_sysmouse=maybe
+fi;
+ if test "$cf_with_sysmouse" != no ; then
+ cat >conftest.$ac_ext <<_ACEOF
+#line 7583 "configure"
#include "confdefs.h"
-#include <stdio.h>
+
+#include <osreldate.h>
+#if (__FreeBSD_version >= 400017)
+#include <sys/consio.h>
+#include <sys/fbio.h>
+#else
+#include <machine/console.h>
+#endif
+
int
-main ()
+main (void)
{
-printf("Hello\n");
+
+ struct mouse_info the_mouse;
+ ioctl(0, CONS_MOUSECTL, &the_mouse);
+
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5995: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7606: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5998: \$? = $ac_status" >&5
+ echo "$as_me:7609: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6001: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7612: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6004: \$? = $ac_status" >&5
+ echo "$as_me:7615: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- break
+ cf_with_sysmouse=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
+cf_with_sysmouse=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- done
- CFLAGS="$cf_save_CFLAGS"
- CC_SHARED_OPTS=$cf_shared_opts
- MK_SHARED_LIB='${CC} -dy -G -h '$cf_cv_shared_soname' -o $@'
- else
- MK_SHARED_LIB='${CC} -shared -dy -G -h '$cf_cv_shared_soname' -o $@'
- fi
- ;;
- sysv5uw7*|unix_sv*) #(vi
- # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
- if test "$GCC" != yes; then
- CC_SHARED_OPTS='-KPIC'
- fi
- MK_SHARED_LIB='${LD} -d y -G -o $@'
- ;;
- *)
- CC_SHARED_OPTS='unknown'
- MK_SHARED_LIB='echo unknown'
- ;;
- esac
-
- # This works if the last tokens in $MK_SHARED_LIB are the -o target.
- case "$cf_cv_shlib_version" in #(vi
- rel|abi)
- case "$MK_SHARED_LIB" in #(vi
- *'-o $@') #(vi
- test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
- ;;
- *)
- { echo "$as_me:6041: WARNING: ignored --with-shlib-version" >&5
-echo "$as_me: WARNING: ignored --with-shlib-version" >&2;}
- ;;
- esac
- ;;
- esac
-
- if test -n "$cf_try_cflags"
- then
-cat > conftest.$ac_ext <<EOF
-#line 6051 "${as_me:-configure}"
-#include <stdio.h>
-int main(int argc, char *argv[])
-{
- printf("hello\n");
- return (argv[argc-1] == 0) ;
-}
-EOF
- cf_save_CFLAGS="$CFLAGS"
- for cf_opt in $cf_try_cflags
- do
- CFLAGS="$cf_save_CFLAGS -$cf_opt"
- echo "$as_me:6063: checking if CFLAGS option -$cf_opt works" >&5
-echo $ECHO_N "checking if CFLAGS option -$cf_opt works... $ECHO_C" >&6
- if { (eval echo "$as_me:6065: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:6068: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- echo "$as_me:6070: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cf_save_CFLAGS="$CFLAGS"
- else
- echo "$as_me:6074: result: no" >&5
-echo "${ECHO_T}no" >&6
- fi
- done
- CFLAGS="$cf_save_CFLAGS"
fi
+echo "$as_me:7625: result: $cf_with_sysmouse" >&5
+echo "${ECHO_T}$cf_with_sysmouse" >&6
+test "$cf_with_sysmouse" = yes &&
+cat >>confdefs.h <<\EOF
+#define USE_SYSMOUSE 1
+EOF
- # RPATH_LIST is a colon-separated list of directories
- test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}"
- test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}"
-
- test $cf_cv_rm_so_locs = yes && RM_SHARED_OPTS="$RM_SHARED_OPTS so_locations"
-
- test -n "$verbose" && echo " CC_SHARED_OPTS: $CC_SHARED_OPTS" 1>&6
-
-echo "${as_me:-configure}:6089: testing CC_SHARED_OPTS: $CC_SHARED_OPTS ..." 1>&5
+fi
- test -n "$verbose" && echo " MK_SHARED_LIB: $MK_SHARED_LIB" 1>&6
+# pretend that ncurses==ncursesw==ncursest
+echo "$as_me:7635: checking if you want to disable library suffixes" >&5
+echo $ECHO_N "checking if you want to disable library suffixes... $ECHO_C" >&6
-echo "${as_me:-configure}:6093: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5
+# Check whether --enable-lib-suffixes or --disable-lib-suffixes was given.
+if test "${enable_lib_suffixes+set}" = set; then
+ enableval="$enable_lib_suffixes"
+ test "$enableval" != no && enableval=yes
+ if test "$enableval" != "yes" ; then
+ disable_lib_suffixes=yes
+ else
+ disable_lib_suffixes=no
+ fi
+else
+ enableval=yes
+ disable_lib_suffixes=no
-if test "$CC_SHARED_OPTS" = "unknown"; then
- for model in $cf_list_models; do
- if test "$model" = "shared"; then
- { { echo "$as_me:6098: error: Shared libraries are not supported in this version" >&5
-echo "$as_me: error: Shared libraries are not supported in this version" >&2;}
- { (exit 1); exit 1; }; }
- fi
- done
-fi
+fi;
+echo "$as_me:7652: result: $disable_lib_suffixes" >&5
+echo "${ECHO_T}$disable_lib_suffixes" >&6
### If we're building with rpath, try to link non-standard libs that way too.
-if test "$DFT_LWR_MODEL" = "shared"; then
+if test "$DFT_LWR_MODEL" = "shared" && test "x$cf_cv_enable_rpath" != xno; then
-echo "$as_me:6108: checking if rpath-hack should be disabled" >&5
+echo "$as_me:7658: checking if rpath-hack should be disabled" >&5
echo $ECHO_N "checking if rpath-hack should be disabled... $ECHO_C" >&6
# Check whether --enable-rpath-hack or --disable-rpath-hack was given.
if test "${enable_rpath_hack+set}" = set; then
enableval="$enable_rpath_hack"
test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
+ if test "$enableval" != "yes" ; then
cf_disable_rpath_hack=yes
- else
- cf_disable_rpath_hack=no
- fi
+ else
+ cf_disable_rpath_hack=no
+ fi
else
enableval=yes
- cf_disable_rpath_hack=no
+ cf_disable_rpath_hack=no
fi;
-echo "$as_me:6125: result: $cf_disable_rpath_hack" >&5
+echo "$as_me:7675: result: $cf_disable_rpath_hack" >&5
echo "${ECHO_T}$cf_disable_rpath_hack" >&6
if test "$cf_disable_rpath_hack" = no ; then
-echo "$as_me:6129: checking for updated LDFLAGS" >&5
+echo "$as_me:7679: checking for updated LDFLAGS" >&5
echo $ECHO_N "checking for updated LDFLAGS... $ECHO_C" >&6
if test -n "$LD_RPATH_OPT" ; then
- echo "$as_me:6132: result: maybe" >&5
+ echo "$as_me:7682: result: maybe" >&5
echo "${ECHO_T}maybe" >&6
for ac_prog in ldd
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 "$as_me:6139: checking for $ac_word" >&5
+echo "$as_me:7689: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_cf_ldd_prog+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6151,7 +7701,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_cf_ldd_prog="$ac_prog"
-echo "$as_me:6154: found $ac_dir/$ac_word" >&5
+echo "$as_me:7704: found $ac_dir/$ac_word" >&5
break
done
@@ -6159,10 +7709,10 @@ fi
fi
cf_ldd_prog=$ac_cv_prog_cf_ldd_prog
if test -n "$cf_ldd_prog"; then
- echo "$as_me:6162: result: $cf_ldd_prog" >&5
+ echo "$as_me:7712: result: $cf_ldd_prog" >&5
echo "${ECHO_T}$cf_ldd_prog" >&6
else
- echo "$as_me:6165: result: no" >&5
+ echo "$as_me:7715: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -6176,11 +7726,11 @@ test -n "$cf_ldd_prog" || cf_ldd_prog="no"
cf_rpath_oops=
cat >conftest.$ac_ext <<_ACEOF
-#line 6179 "configure"
+#line 7729 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello");
;
@@ -6188,16 +7738,16 @@ printf("Hello");
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6191: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7741: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6194: \$? = $ac_status" >&5
+ echo "$as_me:7744: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6197: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7747: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6200: \$? = $ac_status" >&5
+ echo "$as_me:7750: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_rpath_oops=`$cf_ldd_prog conftest$ac_exeext | fgrep ' not found' | sed -e 's% =>.*$%%' |sort | uniq`
cf_rpath_list=`$cf_ldd_prog conftest$ac_exeext | fgrep / | sed -e 's%^.*[ ]/%/%' -e 's%/[^/][^/]*$%%' |sort | uniq`
@@ -6225,7 +7775,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
then
test -n "$verbose" && echo " ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src" 1>&6
-echo "${as_me:-configure}:6228: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5
+echo "${as_me:-configure}:7778: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5
LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib"
break
@@ -6237,17 +7787,17 @@ echo "${as_me:-configure}:6228: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS
test -n "$verbose" && echo " ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6
-echo "${as_me:-configure}:6240: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:7790: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
test -n "$verbose" && echo " ...checking LDFLAGS $LDFLAGS" 1>&6
-echo "${as_me:-configure}:6244: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:7794: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5
cf_rpath_dst=
for cf_rpath_src in $LDFLAGS
do
- case $cf_rpath_src in #(vi
- -L*) #(vi
+ case $cf_rpath_src in
+ (-L*)
# check if this refers to a directory which we will ignore
cf_rpath_skip=no
@@ -6278,7 +7828,7 @@ do
then
test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6
-echo "${as_me:-configure}:6281: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
+echo "${as_me:-configure}:7831: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
fi
@@ -6291,17 +7841,17 @@ LDFLAGS=$cf_rpath_dst
test -n "$verbose" && echo " ...checked LDFLAGS $LDFLAGS" 1>&6
-echo "${as_me:-configure}:6294: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:7844: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5
test -n "$verbose" && echo " ...checking LIBS $LIBS" 1>&6
-echo "${as_me:-configure}:6298: testing ...checking LIBS $LIBS ..." 1>&5
+echo "${as_me:-configure}:7848: testing ...checking LIBS $LIBS ..." 1>&5
cf_rpath_dst=
for cf_rpath_src in $LIBS
do
- case $cf_rpath_src in #(vi
- -L*) #(vi
+ case $cf_rpath_src in
+ (-L*)
# check if this refers to a directory which we will ignore
cf_rpath_skip=no
@@ -6332,7 +7882,7 @@ do
then
test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6
-echo "${as_me:-configure}:6335: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
+echo "${as_me:-configure}:7885: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
fi
@@ -6345,14 +7895,14 @@ LIBS=$cf_rpath_dst
test -n "$verbose" && echo " ...checked LIBS $LIBS" 1>&6
-echo "${as_me:-configure}:6348: testing ...checked LIBS $LIBS ..." 1>&5
+echo "${as_me:-configure}:7898: testing ...checked LIBS $LIBS ..." 1>&5
test -n "$verbose" && echo " ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6
-echo "${as_me:-configure}:6352: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:7902: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
else
- echo "$as_me:6355: result: no" >&5
+ echo "$as_me:7905: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -6362,8 +7912,31 @@ fi
###############################################################################
+### use option --with-extra-suffix to append suffix to headers and libraries
+echo "$as_me:7916: checking if you wish to append extra suffix to header/library paths" >&5
+echo $ECHO_N "checking if you wish to append extra suffix to header/library paths... $ECHO_C" >&6
+EXTRA_SUFFIX=
+
+# Check whether --with-extra-suffix or --without-extra-suffix was given.
+if test "${with_extra_suffix+set}" = set; then
+ withval="$with_extra_suffix"
+ case x$withval in
+ (no)
+ ;;
+ (xyes|x)
+ EXTRA_SUFFIX=$cf_cv_abi_version
+ ;;
+ (*)
+ EXTRA_SUFFIX=$withval
+ ;;
+ esac
+
+fi;
+echo "$as_me:7935: result: $EXTRA_SUFFIX" >&5
+echo "${ECHO_T}$EXTRA_SUFFIX" >&6
+
### use option --disable-overwrite to leave out the link to -lcurses
-echo "$as_me:6366: checking if you wish to install ncurses overwriting curses" >&5
+echo "$as_me:7939: checking if you wish to install ncurses overwriting curses" >&5
echo $ECHO_N "checking if you wish to install ncurses overwriting curses... $ECHO_C" >&6
# Check whether --enable-overwrite or --disable-overwrite was given.
@@ -6373,10 +7946,10 @@ if test "${enable_overwrite+set}" = set; then
else
if test "$prefix" = "/usr" ; then with_overwrite=yes; else with_overwrite=no; fi
fi;
-echo "$as_me:6376: result: $with_overwrite" >&5
+echo "$as_me:7949: result: $with_overwrite" >&5
echo "${ECHO_T}$with_overwrite" >&6
-echo "$as_me:6379: checking if external terminfo-database is used" >&5
+echo "$as_me:7952: checking if external terminfo-database is used" >&5
echo $ECHO_N "checking if external terminfo-database is used... $ECHO_C" >&6
# Check whether --enable-database or --disable-database was given.
@@ -6386,14 +7959,14 @@ if test "${enable_database+set}" = set; then
else
use_database=yes
fi;
-echo "$as_me:6389: result: $use_database" >&5
+echo "$as_me:7962: result: $use_database" >&5
echo "${ECHO_T}$use_database" >&6
-case $host_os in #(vi
-os2*) #(vi
+case $host_os in
+(os2*)
TERMINFO_SRC='${top_srcdir}/misc/emx.src'
;;
-*) #(vi
+(*)
TERMINFO_SRC='${top_srcdir}/misc/terminfo.src'
;;
esac
@@ -6402,7 +7975,7 @@ NCURSES_USE_DATABASE=0
if test "$use_database" != no ; then
NCURSES_USE_DATABASE=1
- echo "$as_me:6405: checking which terminfo source-file will be installed" >&5
+ echo "$as_me:7978: checking which terminfo source-file will be installed" >&5
echo $ECHO_N "checking which terminfo source-file will be installed... $ECHO_C" >&6
# Check whether --with-database or --without-database was given.
@@ -6410,10 +7983,10 @@ if test "${with_database+set}" = set; then
withval="$with_database"
TERMINFO_SRC=$withval
fi;
- echo "$as_me:6413: result: $TERMINFO_SRC" >&5
+ echo "$as_me:7986: result: $TERMINFO_SRC" >&5
echo "${ECHO_T}$TERMINFO_SRC" >&6
- echo "$as_me:6416: checking whether to use hashed database instead of directory/tree" >&5
+ echo "$as_me:7989: checking whether to use hashed database instead of directory/tree" >&5
echo $ECHO_N "checking whether to use hashed database instead of directory/tree... $ECHO_C" >&6
# Check whether --with-hashed-db or --without-hashed-db was given.
@@ -6423,13 +7996,13 @@ if test "${with_hashed_db+set}" = set; then
else
with_hashed_db=no
fi;
- echo "$as_me:6426: result: $with_hashed_db" >&5
+ echo "$as_me:7999: result: $with_hashed_db" >&5
echo "${ECHO_T}$with_hashed_db" >&6
else
with_hashed_db=no
fi
-echo "$as_me:6432: checking for list of fallback descriptions" >&5
+echo "$as_me:8005: checking for list of fallback descriptions" >&5
echo $ECHO_N "checking for list of fallback descriptions... $ECHO_C" >&6
# Check whether --with-fallbacks or --without-fallbacks was given.
@@ -6439,11 +8012,355 @@ if test "${with_fallbacks+set}" = set; then
else
with_fallback=
fi;
-echo "$as_me:6442: result: $with_fallback" >&5
+echo "$as_me:8015: result: $with_fallback" >&5
echo "${ECHO_T}$with_fallback" >&6
-FALLBACK_LIST=`echo "$with_fallback" | sed -e 's/,/ /g'`
-echo "$as_me:6446: checking if you want modern xterm or antique" >&5
+case ".$with_fallback" in
+(.|.no)
+ FALLBACK_LIST=
+ ;;
+(.yes)
+ { echo "$as_me:8023: WARNING: expected a list of terminal descriptions" >&5
+echo "$as_me: WARNING: expected a list of terminal descriptions" >&2;}
+ ;;
+(*)
+ FALLBACK_LIST=`echo "$with_fallback" | sed -e 's/,/ /g'`
+ ;;
+esac
+
+USE_FALLBACKS=
+test -z "$FALLBACK_LIST" && USE_FALLBACKS="#"
+
+# The fallback feature in ncurses relies upon tic/infocmp outside the build
+# tree for generating the terminal descriptions that will be compiled into the
+# library. If your toolchain is old, it may not handle current terminal
+# databases. Use configure-options to point to the tools which will be used,
+# rather than the first ones found on the $PATH.
+if test -n "$FALLBACK_LIST"
+then
+
+# Check whether --with-tic-path or --without-tic-path was given.
+if test "${with_tic_path+set}" = set; then
+ withval="$with_tic_path"
+ echo "$as_me:8045: checking for tic program for fallbacks" >&5
+echo $ECHO_N "checking for tic program for fallbacks... $ECHO_C" >&6
+ TIC=$withval
+ echo "$as_me:8048: result: $TIC" >&5
+echo "${ECHO_T}$TIC" >&6
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$TIC" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval TIC="$TIC"
+ case ".$TIC" in
+ (.NONE/*)
+ TIC=`echo $TIC | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ TIC=`echo $TIC | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:8076: error: expected a pathname, not \"$TIC\"" >&5
+echo "$as_me: error: expected a pathname, not \"$TIC\"" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+esac
+
+else
+
+test -z "$TIC" && TIC=tic
+for ac_prog in $TIC tic
+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 "$as_me:8089: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_TIC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $TIC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TIC="$TIC" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH:/usr/local/ncurses/bin"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ if $as_executable_p "$ac_dir/$ac_word"; then
+ ac_cv_path_TIC="$ac_dir/$ac_word"
+ echo "$as_me:8106: found $ac_dir/$ac_word" >&5
+ break
+fi
+done
+
+ ;;
+esac
+fi
+TIC=$ac_cv_path_TIC
+
+if test -n "$TIC"; then
+ echo "$as_me:8117: result: $TIC" >&5
+echo "${ECHO_T}$TIC" >&6
+else
+ echo "$as_me:8120: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$TIC" && break
+done
+test -n "$TIC" || TIC="$TIC"
+
+cf_path_prog=""
+cf_path_args=""
+IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
+for cf_temp in $ac_cv_path_TIC
+do
+ if test -z "$cf_path_prog" ; then
+ if test "$with_full_paths" = yes ; then
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$cf_temp" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval cf_temp="$cf_temp"
+ case ".$cf_temp" in
+ (.NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ break
+ ;;
+esac
+
+ cf_path_prog="$cf_temp"
+ else
+ cf_path_prog="`basename $cf_temp`"
+ fi
+ elif test -z "$cf_path_args" ; then
+ cf_path_args="$cf_temp"
+ else
+ cf_path_args="$cf_path_args $cf_temp"
+ fi
+done
+IFS="$cf_save_ifs"
+
+if test -n "$cf_path_prog" ; then
+
+echo "${as_me:-configure}:8179: testing defining path for ${cf_path_prog} ..." 1>&5
+
+cat >>confdefs.h <<EOF
+#define TIC_PATH "$cf_path_prog"
+EOF
+
+ test -n "$cf_path_args" &&
+cat >>confdefs.h <<EOF
+#define TIC_ARGS "$cf_path_args"
+EOF
+
+fi
+
+ if test -z "$TIC"
+ then
+ { echo "$as_me:8194: WARNING: no tic program found for fallbacks" >&5
+echo "$as_me: WARNING: no tic program found for fallbacks" >&2;}
+ fi
+
+fi;
+
+# Check whether --with-infocmp-path or --without-infocmp-path was given.
+if test "${with_infocmp_path+set}" = set; then
+ withval="$with_infocmp_path"
+ echo "$as_me:8203: checking for infocmp program for fallbacks" >&5
+echo $ECHO_N "checking for infocmp program for fallbacks... $ECHO_C" >&6
+ INFOCMP=$withval
+ echo "$as_me:8206: result: $INFOCMP" >&5
+echo "${ECHO_T}$INFOCMP" >&6
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$INFOCMP" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval INFOCMP="$INFOCMP"
+ case ".$INFOCMP" in
+ (.NONE/*)
+ INFOCMP=`echo $INFOCMP | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ INFOCMP=`echo $INFOCMP | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:8234: error: expected a pathname, not \"$INFOCMP\"" >&5
+echo "$as_me: error: expected a pathname, not \"$INFOCMP\"" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+esac
+
+else
+
+test -z "$INFOCMP" && INFOCMP=infocmp
+for ac_prog in $INFOCMP infocmp
+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 "$as_me:8247: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INFOCMP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $INFOCMP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_INFOCMP="$INFOCMP" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH:/usr/local/ncurses/bin"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ if $as_executable_p "$ac_dir/$ac_word"; then
+ ac_cv_path_INFOCMP="$ac_dir/$ac_word"
+ echo "$as_me:8264: found $ac_dir/$ac_word" >&5
+ break
+fi
+done
+
+ ;;
+esac
+fi
+INFOCMP=$ac_cv_path_INFOCMP
+
+if test -n "$INFOCMP"; then
+ echo "$as_me:8275: result: $INFOCMP" >&5
+echo "${ECHO_T}$INFOCMP" >&6
+else
+ echo "$as_me:8278: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$INFOCMP" && break
+done
+test -n "$INFOCMP" || INFOCMP="$INFOCMP"
+
+cf_path_prog=""
+cf_path_args=""
+IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
+for cf_temp in $ac_cv_path_INFOCMP
+do
+ if test -z "$cf_path_prog" ; then
+ if test "$with_full_paths" = yes ; then
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$cf_temp" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval cf_temp="$cf_temp"
+ case ".$cf_temp" in
+ (.NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ break
+ ;;
+esac
+
+ cf_path_prog="$cf_temp"
+ else
+ cf_path_prog="`basename $cf_temp`"
+ fi
+ elif test -z "$cf_path_args" ; then
+ cf_path_args="$cf_temp"
+ else
+ cf_path_args="$cf_path_args $cf_temp"
+ fi
+done
+IFS="$cf_save_ifs"
+
+if test -n "$cf_path_prog" ; then
+
+echo "${as_me:-configure}:8337: testing defining path for ${cf_path_prog} ..." 1>&5
+
+cat >>confdefs.h <<EOF
+#define INFOCMP_PATH "$cf_path_prog"
+EOF
+
+ test -n "$cf_path_args" &&
+cat >>confdefs.h <<EOF
+#define INFOCMP_ARGS "$cf_path_args"
+EOF
+
+fi
+
+ if test -z "$INFOCMP"
+ then
+ { echo "$as_me:8352: WARNING: no infocmp program found for fallbacks" >&5
+echo "$as_me: WARNING: no infocmp program found for fallbacks" >&2;}
+ fi
+
+fi;
+
+else
+ : ${TIC:=tic}
+ : ${INFOCMP:=infocmp}
+fi
+
+echo "$as_me:8363: checking if you want modern xterm or antique" >&5
echo $ECHO_N "checking if you want modern xterm or antique... $ECHO_C" >&6
# Check whether --with-xterm-new or --without-xterm-new was given.
@@ -6454,14 +8371,14 @@ else
with_xterm_new=yes
fi;
case $with_xterm_new in
-no) with_xterm_new=xterm-old;;
-*) with_xterm_new=xterm-new;;
+(no) with_xterm_new=xterm-old;;
+(*) with_xterm_new=xterm-new;;
esac
-echo "$as_me:6460: result: $with_xterm_new" >&5
+echo "$as_me:8377: result: $with_xterm_new" >&5
echo "${ECHO_T}$with_xterm_new" >&6
WHICH_XTERM=$with_xterm_new
-echo "$as_me:6464: checking if xterm backspace sends BS or DEL" >&5
+echo "$as_me:8381: checking if xterm backspace sends BS or DEL" >&5
echo $ECHO_N "checking if xterm backspace sends BS or DEL... $ECHO_C" >&6
# Check whether --with-xterm-kbs or --without-xterm-kbs was given.
@@ -6472,17 +8389,17 @@ else
with_xterm_kbs=BS
fi;
case x$with_xterm_kbs in
-xyes|xno|xBS|xbs|x8)
+(xyes|xno|xBS|xbs|x8)
with_xterm_kbs=BS
;;
-xDEL|xdel|x127)
+(xDEL|xdel|x127)
with_xterm_kbs=DEL
;;
-*)
+(*)
with_xterm_kbs=$withval
;;
esac
-echo "$as_me:6485: result: $with_xterm_kbs" >&5
+echo "$as_me:8402: result: $with_xterm_kbs" >&5
echo "${ECHO_T}$with_xterm_kbs" >&6
XTERM_KBS=$with_xterm_kbs
@@ -6492,7 +8409,7 @@ if test "$use_database" = no ; then
MAKE_TERMINFO="#"
else
-echo "$as_me:6495: checking for list of terminfo directories" >&5
+echo "$as_me:8412: checking for list of terminfo directories" >&5
echo $ECHO_N "checking for list of terminfo directories... $ECHO_C" >&6
# Check whether --with-terminfo-dirs or --without-terminfo-dirs was given.
@@ -6508,34 +8425,34 @@ for cf_src_path in $withval
do
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
+ cf_path_syntax="$ac_default_prefix"
fi
-case ".$cf_src_path" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*|.\${*dir}*) #(vi
- eval cf_src_path="$cf_src_path"
- case ".$cf_src_path" in #(vi
- .NONE/*)
- cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- { { echo "$as_me:6535: error: expected a pathname, not \"$cf_src_path\"" >&5
+case ".$cf_src_path" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval cf_src_path="$cf_src_path"
+ case ".$cf_src_path" in
+ (.NONE/*)
+ cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:8452: error: expected a pathname, not \"$cf_src_path\"" >&5
echo "$as_me: error: expected a pathname, not \"$cf_src_path\"" >&2;}
{ (exit 1); exit 1; }; }
- ;;
+ ;;
esac
test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}$PATH_SEPARATOR"
@@ -6546,23 +8463,31 @@ IFS="$ac_save_ifs"
# This may use the prefix/exec_prefix symbols which will only yield "NONE"
# so we have to check/work around. We do prefer the result of "eval"...
eval cf_dst_eval="$cf_dst_path"
-case "x$cf_dst_eval" in #(vi
-xNONE*) #(vi
+case "x$cf_dst_eval" in
+(xNONE*)
TERMINFO_DIRS=$cf_dst_path
;;
-*)
+(*)
TERMINFO_DIRS="$cf_dst_eval"
;;
esac
-echo "$as_me:6558: result: $TERMINFO_DIRS" >&5
+echo "$as_me:8475: result: $TERMINFO_DIRS" >&5
echo "${ECHO_T}$TERMINFO_DIRS" >&6
test -n "$TERMINFO_DIRS" &&
cat >>confdefs.h <<EOF
#define TERMINFO_DIRS "$TERMINFO_DIRS"
EOF
-echo "$as_me:6565: checking for default terminfo directory" >&5
+case "x$TERMINFO" in
+x???:*)
+ { echo "$as_me:8484: WARNING: ignoring non-directory/file TERMINFO value" >&5
+echo "$as_me: WARNING: ignoring non-directory/file TERMINFO value" >&2;}
+ unset TERMINFO
+ ;;
+esac
+
+echo "$as_me:8490: checking for default terminfo directory" >&5
echo $ECHO_N "checking for default terminfo directory... $ECHO_C" >&6
# Check whether --with-default-terminfo-dir or --without-default-terminfo-dir was given.
@@ -6574,40 +8499,40 @@ else
fi; if test -n "${datadir}/terminfo" ; then
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
+ cf_path_syntax="$ac_default_prefix"
fi
-case ".$withval" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*|.\${*dir}*) #(vi
- eval withval="$withval"
- case ".$withval" in #(vi
- .NONE/*)
- withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- { { echo "$as_me:6601: error: expected a pathname, not \"$withval\"" >&5
+case ".$withval" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval withval="$withval"
+ case ".$withval" in
+ (.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:8526: error: expected a pathname, not \"$withval\"" >&5
echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
{ (exit 1); exit 1; }; }
- ;;
+ ;;
esac
fi
eval TERMINFO="$withval"
-echo "$as_me:6610: result: $TERMINFO" >&5
+echo "$as_me:8535: result: $TERMINFO" >&5
echo "${ECHO_T}$TERMINFO" >&6
cat >>confdefs.h <<EOF
@@ -6618,7 +8543,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 "$as_me:6621: checking if big-core option selected" >&5
+echo "$as_me:8546: checking if big-core option selected" >&5
echo $ECHO_N "checking if big-core option selected... $ECHO_C" >&6
# Check whether --enable-big-core or --disable-big-core was given.
@@ -6630,7 +8555,7 @@ else
with_big_core=no
else
cat >conftest.$ac_ext <<_ACEOF
-#line 6633 "configure"
+#line 8558 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -6644,15 +8569,15 @@ int main() {
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:6647: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8572: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6650: \$? = $ac_status" >&5
+ echo "$as_me:8575: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:6652: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8577: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6655: \$? = $ac_status" >&5
+ echo "$as_me:8580: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
with_big_core=yes
else
@@ -6664,7 +8589,7 @@ fi
rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi;
-echo "$as_me:6667: result: $with_big_core" >&5
+echo "$as_me:8592: result: $with_big_core" >&5
echo "${ECHO_T}$with_big_core" >&6
test "x$with_big_core" = "xyes" &&
cat >>confdefs.h <<\EOF
@@ -6674,7 +8599,7 @@ EOF
### ISO C only guarantees 512-char strings, we have tables which load faster
### when constructed using "big" strings. More than the C compiler, the awk
### program is a limit on most vendor UNIX systems. Check that we can build.
-echo "$as_me:6677: checking if big-strings option selected" >&5
+echo "$as_me:8602: checking if big-strings option selected" >&5
echo $ECHO_N "checking if big-strings option selected... $ECHO_C" >&6
# Check whether --enable-big-strings or --disable-big-strings was given.
@@ -6683,11 +8608,11 @@ if test "${enable_big_strings+set}" = set; then
with_big_strings=$enableval
else
- case x$AWK in #(vi
- x)
+ case x$AWK in
+ (x)
eval with_big_strings=no
;;
- *) #(vi
+ (*)
if ( ${AWK} 'BEGIN { xx = "x"; while (length(xx) < 12000) { xx = xx "x"; }; printf("%s\n", xx); }' 2>/dev/null \
| $AWK '{ printf "%d\n", length($0); }' 2>/dev/null | $AWK 'BEGIN { eqls=0; recs=0; } { recs++; if ($0 == 12000) eqls++; } END { if (recs != 1 || eqls != 1) exit 1; }' 2>/dev/null >/dev/null ) ; then
eval with_big_strings=yes
@@ -6698,14 +8623,14 @@ else
esac
fi;
-echo "$as_me:6701: result: $with_big_strings" >&5
+echo "$as_me:8626: result: $with_big_strings" >&5
echo "${ECHO_T}$with_big_strings" >&6
USE_BIG_STRINGS=0
test "x$with_big_strings" = "xyes" && USE_BIG_STRINGS=1
### use option --enable-termcap to compile in the termcap fallback support
-echo "$as_me:6708: checking if you want termcap-fallback support" >&5
+echo "$as_me:8633: checking if you want termcap-fallback support" >&5
echo $ECHO_N "checking if you want termcap-fallback support... $ECHO_C" >&6
# Check whether --enable-termcap or --disable-termcap was given.
@@ -6715,14 +8640,14 @@ if test "${enable_termcap+set}" = set; then
else
with_termcap=no
fi;
-echo "$as_me:6718: result: $with_termcap" >&5
+echo "$as_me:8643: result: $with_termcap" >&5
echo "${ECHO_T}$with_termcap" >&6
NCURSES_USE_TERMCAP=0
if test "x$with_termcap" != "xyes" ; then
if test "$use_database" = no ; then
if test -z "$with_fallback" ; then
- { { echo "$as_me:6725: error: You have disabled the database w/o specifying fallbacks" >&5
+ { { echo "$as_me:8650: error: You have disabled the database w/o specifying fallbacks" >&5
echo "$as_me: error: You have disabled the database w/o specifying fallbacks" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -6735,13 +8660,13 @@ EOF
else
if test "$with_ticlib" != no ; then
- { { echo "$as_me:6738: error: Options --with-ticlib and --enable-termcap cannot be combined" >&5
+ { { echo "$as_me:8663: error: Options --with-ticlib and --enable-termcap cannot be combined" >&5
echo "$as_me: error: Options --with-ticlib and --enable-termcap cannot be combined" >&2;}
{ (exit 1); exit 1; }; }
fi
NCURSES_USE_TERMCAP=1
- echo "$as_me:6744: checking for list of termcap files" >&5
+ echo "$as_me:8669: checking for list of termcap files" >&5
echo $ECHO_N "checking for list of termcap files... $ECHO_C" >&6
# Check whether --with-termpath or --without-termpath was given.
@@ -6757,34 +8682,34 @@ for cf_src_path in $withval
do
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
+ cf_path_syntax="$ac_default_prefix"
fi
-case ".$cf_src_path" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*|.\${*dir}*) #(vi
- eval cf_src_path="$cf_src_path"
- case ".$cf_src_path" in #(vi
- .NONE/*)
- cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- { { echo "$as_me:6784: error: expected a pathname, not \"$cf_src_path\"" >&5
+case ".$cf_src_path" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval cf_src_path="$cf_src_path"
+ case ".$cf_src_path" in
+ (.NONE/*)
+ cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:8709: error: expected a pathname, not \"$cf_src_path\"" >&5
echo "$as_me: error: expected a pathname, not \"$cf_src_path\"" >&2;}
{ (exit 1); exit 1; }; }
- ;;
+ ;;
esac
test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}$PATH_SEPARATOR"
@@ -6795,16 +8720,16 @@ IFS="$ac_save_ifs"
# This may use the prefix/exec_prefix symbols which will only yield "NONE"
# so we have to check/work around. We do prefer the result of "eval"...
eval cf_dst_eval="$cf_dst_path"
-case "x$cf_dst_eval" in #(vi
-xNONE*) #(vi
+case "x$cf_dst_eval" in
+(xNONE*)
TERMPATH=$cf_dst_path
;;
-*)
+(*)
TERMPATH="$cf_dst_eval"
;;
esac
- echo "$as_me:6807: result: $TERMPATH" >&5
+ echo "$as_me:8732: result: $TERMPATH" >&5
echo "${ECHO_T}$TERMPATH" >&6
test -n "$TERMPATH" &&
cat >>confdefs.h <<EOF
@@ -6812,7 +8737,7 @@ cat >>confdefs.h <<EOF
EOF
### use option --enable-getcap to use a hacked getcap for reading termcaps
- echo "$as_me:6815: checking if fast termcap-loader is needed" >&5
+ echo "$as_me:8740: checking if fast termcap-loader is needed" >&5
echo $ECHO_N "checking if fast termcap-loader is needed... $ECHO_C" >&6
# Check whether --enable-getcap or --disable-getcap was given.
@@ -6822,14 +8747,14 @@ if test "${enable_getcap+set}" = set; then
else
with_getcap=no
fi;
- echo "$as_me:6825: result: $with_getcap" >&5
+ echo "$as_me:8750: result: $with_getcap" >&5
echo "${ECHO_T}$with_getcap" >&6
test "x$with_getcap" = "xyes" &&
cat >>confdefs.h <<\EOF
#define USE_GETCAP 1
EOF
- echo "$as_me:6832: checking if translated termcaps will be cached in ~/.terminfo" >&5
+ echo "$as_me:8757: checking if translated termcaps will be cached in ~/.terminfo" >&5
echo $ECHO_N "checking if translated termcaps will be cached in ~/.terminfo... $ECHO_C" >&6
# Check whether --enable-getcap-cache or --disable-getcap-cache was given.
@@ -6839,7 +8764,7 @@ if test "${enable_getcap_cache+set}" = set; then
else
with_getcap_cache=no
fi;
- echo "$as_me:6842: result: $with_getcap_cache" >&5
+ echo "$as_me:8767: result: $with_getcap_cache" >&5
echo "${ECHO_T}$with_getcap_cache" >&6
test "x$with_getcap_cache" = "xyes" &&
cat >>confdefs.h <<\EOF
@@ -6849,7 +8774,7 @@ EOF
fi
### Use option --disable-home-terminfo to completely remove ~/.terminfo
-echo "$as_me:6852: checking if ~/.terminfo is wanted" >&5
+echo "$as_me:8777: checking if ~/.terminfo is wanted" >&5
echo $ECHO_N "checking if ~/.terminfo is wanted... $ECHO_C" >&6
# Check whether --enable-home-terminfo or --disable-home-terminfo was given.
@@ -6859,14 +8784,14 @@ if test "${enable_home_terminfo+set}" = set; then
else
with_home_terminfo=yes
fi;
-echo "$as_me:6862: result: $with_home_terminfo" >&5
+echo "$as_me:8787: result: $with_home_terminfo" >&5
echo "${ECHO_T}$with_home_terminfo" >&6
test "x$with_home_terminfo" = "xyes" &&
cat >>confdefs.h <<\EOF
#define USE_HOME_TERMINFO 1
EOF
-echo "$as_me:6869: checking if you want to use restricted environment when running as root" >&5
+echo "$as_me:8794: checking if you want to use restricted environment when running as root" >&5
echo $ECHO_N "checking if you want to use restricted environment when running as root... $ECHO_C" >&6
# Check whether --enable-root-environ or --disable-root-environ was given.
@@ -6876,7 +8801,7 @@ if test "${enable_root_environ+set}" = set; then
else
with_root_environ=yes
fi;
-echo "$as_me:6879: result: $with_root_environ" >&5
+echo "$as_me:8804: result: $with_root_environ" >&5
echo "${ECHO_T}$with_root_environ" >&6
test "x$with_root_environ" = xyes &&
cat >>confdefs.h <<\EOF
@@ -6886,58 +8811,108 @@ EOF
### Use option --enable-symlinks to make tic use symlinks, not hard links
### to reduce storage requirements for the terminfo database.
+for ac_header in \
+unistd.h \
+
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:8819: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 8825 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:8829: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:8835: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:8854: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
for ac_func in \
remove \
unlink
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:6894: checking for $ac_func" >&5
+echo "$as_me:8869: checking for $ac_func" >&5
echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 6900 "configure"
+#line 8875 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define $ac_func autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef $ac_func
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+char $ac_func (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for $ac_func
#endif
+ return $ac_func ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6931: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8906: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6934: \$? = $ac_status" >&5
+ echo "$as_me:8909: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6937: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8912: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6940: \$? = $ac_status" >&5
+ echo "$as_me:8915: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_var=yes"
else
@@ -6947,7 +8922,7 @@ eval "$as_ac_var=no"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:6950: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "$as_me:8925: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
if test `eval echo '${'$as_ac_var'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -6964,53 +8939,53 @@ for ac_func in \
symlink
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:6967: checking for $ac_func" >&5
+echo "$as_me:8942: checking for $ac_func" >&5
echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 6973 "configure"
+#line 8948 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define $ac_func autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef $ac_func
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+char $ac_func (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for $ac_func
#endif
+ return $ac_func ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7004: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8979: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:7007: \$? = $ac_status" >&5
+ echo "$as_me:8982: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7010: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8985: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7013: \$? = $ac_status" >&5
+ echo "$as_me:8988: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_var=yes"
else
@@ -7020,7 +8995,7 @@ eval "$as_ac_var=no"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:7023: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "$as_me:8998: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
if test `eval echo '${'$as_ac_var'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -7031,7 +9006,7 @@ fi
done
else
- echo "$as_me:7034: checking if link/symlink functions work" >&5
+ echo "$as_me:9009: checking if link/symlink functions work" >&5
echo $ECHO_N "checking if link/symlink functions work... $ECHO_C" >&6
if test "${cf_cv_link_funcs+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7044,7 +9019,7 @@ else
eval 'ac_cv_func_'$cf_func'=error'
else
cat >conftest.$ac_ext <<_ACEOF
-#line 7047 "configure"
+#line 9022 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -7052,7 +9027,7 @@ else
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
-int main()
+int main(void)
{
int fail = 0;
char *src = "config.log";
@@ -7074,15 +9049,15 @@ int main()
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:7077: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9052: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:7080: \$? = $ac_status" >&5
+ echo "$as_me:9055: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:7082: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9057: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7085: \$? = $ac_status" >&5
+ echo "$as_me:9060: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_link_funcs="$cf_cv_link_funcs $cf_func"
@@ -7100,7 +9075,7 @@ fi
test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no
fi
-echo "$as_me:7103: result: $cf_cv_link_funcs" >&5
+echo "$as_me:9078: result: $cf_cv_link_funcs" >&5
echo "${ECHO_T}$cf_cv_link_funcs" >&6
test "$ac_cv_func_link" = yes &&
cat >>confdefs.h <<\EOF
@@ -7120,7 +9095,7 @@ with_symlinks=no
# soft links (symbolic links) are useful for some systems where hard links do
# not work, or to make it simpler to copy terminfo trees around.
if test "x$ac_cv_func_symlink" = xyes ; then
- echo "$as_me:7123: checking if tic should use symbolic links" >&5
+ echo "$as_me:9098: checking if tic should use symbolic links" >&5
echo $ECHO_N "checking if tic should use symbolic links... $ECHO_C" >&6
# Check whether --enable-symlinks or --disable-symlinks was given.
@@ -7130,21 +9105,21 @@ if test "${enable_symlinks+set}" = set; then
else
with_symlinks=no
fi;
- echo "$as_me:7133: result: $with_symlinks" >&5
+ echo "$as_me:9108: result: $with_symlinks" >&5
echo "${ECHO_T}$with_symlinks" >&6
fi
# If we have hard links and did not choose to use soft links instead, there is
# no reason to make this choice optional - use the hard links.
if test "$with_symlinks" = no ; then
- echo "$as_me:7140: checking if tic should use hard links" >&5
+ echo "$as_me:9115: checking if tic should use hard links" >&5
echo $ECHO_N "checking if tic should use hard links... $ECHO_C" >&6
- if test "x$ac_cv_func_link" = xyes ; then
- with_links=yes
- else
- with_links=no
- fi
- echo "$as_me:7147: result: $with_links" >&5
+ if test "x$ac_cv_func_link" = xyes ; then
+ with_links=yes
+ else
+ with_links=no
+ fi
+ echo "$as_me:9122: result: $with_links" >&5
echo "${ECHO_T}$with_links" >&6
fi
@@ -7159,7 +9134,7 @@ cat >>confdefs.h <<\EOF
EOF
### use option --enable-broken-linker to force on use of broken-linker support
-echo "$as_me:7162: checking if you want broken-linker support code" >&5
+echo "$as_me:9137: checking if you want broken-linker support code" >&5
echo $ECHO_N "checking if you want broken-linker support code... $ECHO_C" >&6
# Check whether --enable-broken_linker or --disable-broken_linker was given.
@@ -7169,7 +9144,7 @@ if test "${enable_broken_linker+set}" = set; then
else
with_broken_linker=${BROKEN_LINKER:-no}
fi;
-echo "$as_me:7172: result: $with_broken_linker" >&5
+echo "$as_me:9147: result: $with_broken_linker" >&5
echo "${ECHO_T}$with_broken_linker" >&6
BROKEN_LINKER=0
@@ -7181,8 +9156,8 @@ EOF
BROKEN_LINKER=1
elif test "$DFT_LWR_MODEL" = shared ; then
- case $cf_cv_system_name in #(vi
- cygwin*)
+ case $cf_cv_system_name in
+ (cygwin*)
cat >>confdefs.h <<\EOF
#define BROKEN_LINKER 1
@@ -7191,14 +9166,14 @@ EOF
BROKEN_LINKER=1
test -n "$verbose" && echo " cygwin linker is broken anyway" 1>&6
-echo "${as_me:-configure}:7194: testing cygwin linker is broken anyway ..." 1>&5
+echo "${as_me:-configure}:9169: testing cygwin linker is broken anyway ..." 1>&5
;;
esac
fi
### use option --enable-bsdpad to have tputs process BSD-style prefix padding
-echo "$as_me:7201: checking if tputs should process BSD-style prefix padding" >&5
+echo "$as_me:9176: checking if tputs should process BSD-style prefix padding" >&5
echo $ECHO_N "checking if tputs should process BSD-style prefix padding... $ECHO_C" >&6
# Check whether --enable-bsdpad or --disable-bsdpad was given.
@@ -7208,7 +9183,7 @@ if test "${enable_bsdpad+set}" = set; then
else
with_bsdpad=no
fi;
-echo "$as_me:7211: result: $with_bsdpad" >&5
+echo "$as_me:9186: result: $with_bsdpad" >&5
echo "${ECHO_T}$with_bsdpad" >&6
test "x$with_bsdpad" = xyes &&
cat >>confdefs.h <<\EOF
@@ -7225,26 +9200,78 @@ NCURSES_WCHAR_T=0
NCURSES_WINT_T=0
# Check to define _XOPEN_SOURCE "automatically"
+CPPFLAGS_before_XOPEN="$CPPFLAGS"
-cf_XOPEN_SOURCE=500
+echo "$as_me:9205: checking if the POSIX test-macros are already defined" >&5
+echo $ECHO_N "checking if the POSIX test-macros are already defined... $ECHO_C" >&6
+if test "${cf_cv_posix_visible+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 9212 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int
+main (void)
+{
+
+#if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
+ && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
+ && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
+ && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
+#error conflicting symbols found
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:9231: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:9234: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:9237: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:9240: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_posix_visible=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_posix_visible=yes
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:9251: result: $cf_cv_posix_visible" >&5
+echo "${ECHO_T}$cf_cv_posix_visible" >&6
+
+if test "$cf_cv_posix_visible" = no; then
+
+cf_XOPEN_SOURCE=600
cf_POSIX_C_SOURCE=199506L
cf_xopen_source=
-case $host_os in #(vi
-aix[4-7]*) #(vi
+case $host_os in
+(aix[4-7]*)
cf_xopen_source="-D_ALL_SOURCE"
;;
-cygwin|msys) #(vi
+(msys)
cf_XOPEN_SOURCE=600
;;
-darwin[0-8].*) #(vi
+(darwin[0-8].*)
cf_xopen_source="-D_APPLE_C_SOURCE"
;;
-darwin*) #(vi
+(darwin*)
cf_xopen_source="-D_DARWIN_C_SOURCE"
cf_XOPEN_SOURCE=
;;
-freebsd*|dragonfly*) #(vi
+(freebsd*|dragonfly*|midnightbsd*)
# 5.x headers associate
# _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
# _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
@@ -7252,83 +9279,448 @@ freebsd*|dragonfly*) #(vi
cf_XOPEN_SOURCE=600
cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
;;
-hpux11*) #(vi
+(hpux11*)
cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
;;
-hpux*) #(vi
+(hpux*)
cf_xopen_source="-D_HPUX_SOURCE"
;;
-irix[56].*) #(vi
+(irix[56].*)
cf_xopen_source="-D_SGI_SOURCE"
cf_XOPEN_SOURCE=
;;
-linux*|gnu*|mint*|k*bsd*-gnu) #(vi
+(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
+
+cf_gnu_xopen_source=$cf_XOPEN_SOURCE
+
+echo "$as_me:9296: checking if this is the GNU C library" >&5
+echo $ECHO_N "checking if this is the GNU C library... $ECHO_C" >&6
+if test "${cf_cv_gnu_library+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 9303 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main (void)
+{
+
+ #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0
+ return 0;
+ #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0
+ return 0;
+ #else
+ # error not GNU C library
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:9322: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:9325: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:9328: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:9331: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_gnu_library=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_gnu_library=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:9342: result: $cf_cv_gnu_library" >&5
+echo "${ECHO_T}$cf_cv_gnu_library" >&6
+
+if test x$cf_cv_gnu_library = xyes; then
+
+ # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
+ # was changed to help a little. newlib incorporated the change about 4
+ # years later.
+ echo "$as_me:9350: checking if _DEFAULT_SOURCE can be used as a basis" >&5
+echo $ECHO_N "checking if _DEFAULT_SOURCE can be used as a basis... $ECHO_C" >&6
+if test "${cf_cv_gnu_library_219+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cf_save="$CPPFLAGS"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 9362 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main (void)
+{
+
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2)
+ return 0;
+ #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3)
+ return 0;
+ #else
+ # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:9381: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:9384: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:9387: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:9390: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_gnu_library_219=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_gnu_library_219=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS="$cf_save"
+
+fi
+echo "$as_me:9402: result: $cf_cv_gnu_library_219" >&5
+echo "${ECHO_T}$cf_cv_gnu_library_219" >&6
+
+ if test "x$cf_cv_gnu_library_219" = xyes; then
+ cf_save="$CPPFLAGS"
+ echo "$as_me:9407: checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE" >&5
+echo $ECHO_N "checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_gnu_dftsrc_219+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 9512 "configure"
+#include "confdefs.h"
+
+ #include <limits.h>
+ #include <sys/types.h>
+
+int
+main (void)
+{
-echo "$as_me:7267: checking if we must define _GNU_SOURCE" >&5
+ #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1)
+ return 0;
+ #else
+ # error GNU C library is too old
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:9532: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:9535: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:9538: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:9541: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_gnu_dftsrc_219=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_gnu_dftsrc_219=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:9552: result: $cf_cv_gnu_dftsrc_219" >&5
+echo "${ECHO_T}$cf_cv_gnu_dftsrc_219" >&6
+ test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
+ else
+ cf_cv_gnu_dftsrc_219=maybe
+ fi
+
+ if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
+
+ echo "$as_me:9561: checking if we must define _GNU_SOURCE" >&5
echo $ECHO_N "checking if we must define _GNU_SOURCE... $ECHO_C" >&6
if test "${cf_cv_gnu_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-cat >conftest.$ac_ext <<_ACEOF
-#line 7274 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 9568 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
-#ifndef _XOPEN_SOURCE
-make an error
-#endif
+ #ifndef _XOPEN_SOURCE
+ #error expected _XOPEN_SOURCE to be defined
+ #endif
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7289: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9583: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7292: \$? = $ac_status" >&5
+ echo "$as_me:9586: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7295: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9589: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7298: \$? = $ac_status" >&5
+ echo "$as_me:9592: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_gnu_source=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
- cat >conftest.$ac_ext <<_ACEOF
-#line 7307 "configure"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in -D_GNU_SOURCE
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 9699 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
-#ifdef _XOPEN_SOURCE
-make an error
-#endif
+ #ifdef _XOPEN_SOURCE
+ #error expected _XOPEN_SOURCE to be undefined
+ #endif
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7322: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9714: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7325: \$? = $ac_status" >&5
+ echo "$as_me:9717: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7328: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9720: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7331: \$? = $ac_status" >&5
+ echo "$as_me:9723: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_gnu_source=no
else
@@ -7337,21 +9729,86 @@ cat conftest.$ac_ext >&5
cf_cv_gnu_source=yes
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- CPPFLAGS="$cf_save"
+ CPPFLAGS="$cf_save"
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:7346: result: $cf_cv_gnu_source" >&5
+echo "$as_me:9738: result: $cf_cv_gnu_source" >&5
echo "${ECHO_T}$cf_cv_gnu_source" >&6
-test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+ if test "$cf_cv_gnu_source" = yes
+ then
+ echo "$as_me:9743: checking if we should also define _DEFAULT_SOURCE" >&5
+echo $ECHO_N "checking if we should also define _DEFAULT_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_default_source+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_GNU_SOURCE"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 9753 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main (void)
+{
+
+ #ifdef _DEFAULT_SOURCE
+ #error expected _DEFAULT_SOURCE to be undefined
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:9768: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:9771: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:9774: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:9777: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_default_source=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_default_source=yes
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:9788: result: $cf_cv_default_source" >&5
+echo "${ECHO_T}$cf_cv_default_source" >&6
+ if test "$cf_cv_default_source" = yes
+ then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE"
+
+ fi
+ fi
+ fi
+
+fi
+
+ ;;
+(minix*)
+ cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
;;
-mirbsd*) #(vi
+(mirbsd*)
# setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
cf_XOPEN_SOURCE=
+if test "$cf_cv_posix_visible" = no; then
+
cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE
cf_save_CFLAGS="$CFLAGS"
@@ -7365,20 +9822,20 @@ cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
-e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'`
-echo "$as_me:7368: checking if we should define _POSIX_C_SOURCE" >&5
+echo "$as_me:9825: checking if we should define _POSIX_C_SOURCE" >&5
echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
if test "${cf_cv_posix_c_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-echo "${as_me:-configure}:7374: testing if the symbol is already defined go no further ..." 1>&5
+echo "${as_me:-configure}:9831: testing if the symbol is already defined go no further ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 7377 "configure"
+#line 9834 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _POSIX_C_SOURCE
@@ -7389,41 +9846,41 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7392: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9849: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7395: \$? = $ac_status" >&5
+ echo "$as_me:9852: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7398: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9855: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7401: \$? = $ac_status" >&5
+ echo "$as_me:9858: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_posix_c_source=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_want_posix_source=no
- case .$cf_POSIX_C_SOURCE in #(vi
- .[12]??*) #(vi
+ case .$cf_POSIX_C_SOURCE in
+ (.[12]??*)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
;;
- .2) #(vi
+ (.2)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
cf_want_posix_source=yes
;;
- .*)
+ (.*)
cf_want_posix_source=yes
;;
esac
if test "$cf_want_posix_source" = yes ; then
cat >conftest.$ac_ext <<_ACEOF
-#line 7422 "configure"
+#line 9879 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifdef _POSIX_SOURCE
@@ -7434,16 +9891,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7437: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9894: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7440: \$? = $ac_status" >&5
+ echo "$as_me:9897: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7443: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9900: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7446: \$? = $ac_status" >&5
+ echo "$as_me:9903: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -7454,19 +9911,22 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "${as_me:-configure}:7457: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+echo "${as_me:-configure}:9914: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
CFLAGS="$cf_trim_CFLAGS"
- CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+ CPPFLAGS="$cf_trim_CPPFLAGS"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source"
-echo "${as_me:-configure}:7462: testing if the second compile does not leave our definition intact error ..." 1>&5
+echo "${as_me:-configure}:9922: testing if the second compile does not leave our definition intact error ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 7465 "configure"
+#line 9925 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _POSIX_C_SOURCE
@@ -7477,16 +9937,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7480: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9940: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7483: \$? = $ac_status" >&5
+ echo "$as_me:9943: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7486: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9946: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7489: \$? = $ac_status" >&5
+ echo "$as_me:9949: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -7502,7 +9962,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:7505: result: $cf_cv_posix_c_source" >&5
+echo "$as_me:9965: result: $cf_cv_posix_c_source" >&5
echo "${ECHO_T}$cf_cv_posix_c_source" >&6
if test "$cf_cv_posix_c_source" != no ; then
@@ -7517,32 +9977,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_cv_posix_c_source
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -7551,21 +10017,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -7574,56 +10048,68 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
fi
+fi # cf_cv_posix_visible
+
;;
-netbsd*) #(vi
+(netbsd*)
cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
;;
-openbsd[4-9]*) #(vi
+(openbsd[4-9]*)
# setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
cf_xopen_source="-D_BSD_SOURCE"
cf_XOPEN_SOURCE=600
;;
-openbsd*) #(vi
+(openbsd*)
# setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
;;
-osf[45]*) #(vi
+(osf[45]*)
cf_xopen_source="-D_OSF_SOURCE"
;;
-nto-qnx*) #(vi
+(nto-qnx*)
cf_xopen_source="-D_QNX_SOURCE"
;;
-sco*) #(vi
+(sco*)
# setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
;;
-solaris2.*) #(vi
+(solaris2.*)
cf_xopen_source="-D__EXTENSIONS__"
cf_cv_xopen_source=broken
;;
-*)
+(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
+ cf_XOPEN_SOURCE=
+ cf_POSIX_C_SOURCE=
+ ;;
+(*)
-echo "$as_me:7619: checking if we should define _XOPEN_SOURCE" >&5
+echo "$as_me:10105: checking if we should define _XOPEN_SOURCE" >&5
echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
if test "${cf_cv_xopen_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 7626 "configure"
+#line 10112 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -7631,7 +10117,7 @@ else
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _XOPEN_SOURCE
@@ -7642,25 +10128,28 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7645: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10131: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7648: \$? = $ac_status" >&5
+ echo "$as_me:10134: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7651: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10137: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7654: \$? = $ac_status" >&5
+ echo "$as_me:10140: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xopen_source=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 7663 "configure"
+#line 10152 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -7668,7 +10157,7 @@ cf_save="$CPPFLAGS"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifdef _XOPEN_SOURCE
@@ -7679,16 +10168,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7682: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10171: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7685: \$? = $ac_status" >&5
+ echo "$as_me:10174: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7688: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10177: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7691: \$? = $ac_status" >&5
+ echo "$as_me:10180: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xopen_source=no
else
@@ -7703,7 +10192,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:7706: result: $cf_cv_xopen_source" >&5
+echo "$as_me:10195: result: $cf_cv_xopen_source" >&5
echo "${ECHO_T}$cf_cv_xopen_source" >&6
if test "$cf_cv_xopen_source" != no ; then
@@ -7726,32 +10215,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_temp_xopen_source
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -7760,21 +10255,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -7783,21 +10286,29 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
fi
+if test "$cf_cv_posix_visible" = no; then
+
cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE
cf_save_CFLAGS="$CFLAGS"
@@ -7811,20 +10322,20 @@ cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
-e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'`
-echo "$as_me:7814: checking if we should define _POSIX_C_SOURCE" >&5
+echo "$as_me:10325: checking if we should define _POSIX_C_SOURCE" >&5
echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
if test "${cf_cv_posix_c_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-echo "${as_me:-configure}:7820: testing if the symbol is already defined go no further ..." 1>&5
+echo "${as_me:-configure}:10331: testing if the symbol is already defined go no further ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 7823 "configure"
+#line 10334 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _POSIX_C_SOURCE
@@ -7835,41 +10346,41 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7838: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10349: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7841: \$? = $ac_status" >&5
+ echo "$as_me:10352: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7844: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10355: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7847: \$? = $ac_status" >&5
+ echo "$as_me:10358: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_posix_c_source=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_want_posix_source=no
- case .$cf_POSIX_C_SOURCE in #(vi
- .[12]??*) #(vi
+ case .$cf_POSIX_C_SOURCE in
+ (.[12]??*)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
;;
- .2) #(vi
+ (.2)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
cf_want_posix_source=yes
;;
- .*)
+ (.*)
cf_want_posix_source=yes
;;
esac
if test "$cf_want_posix_source" = yes ; then
cat >conftest.$ac_ext <<_ACEOF
-#line 7868 "configure"
+#line 10379 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifdef _POSIX_SOURCE
@@ -7880,16 +10391,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7883: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10394: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7886: \$? = $ac_status" >&5
+ echo "$as_me:10397: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7889: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10400: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7892: \$? = $ac_status" >&5
+ echo "$as_me:10403: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -7900,19 +10411,22 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "${as_me:-configure}:7903: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+echo "${as_me:-configure}:10414: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
CFLAGS="$cf_trim_CFLAGS"
- CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+ CPPFLAGS="$cf_trim_CPPFLAGS"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source"
-echo "${as_me:-configure}:7908: testing if the second compile does not leave our definition intact error ..." 1>&5
+echo "${as_me:-configure}:10422: testing if the second compile does not leave our definition intact error ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 7911 "configure"
+#line 10425 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _POSIX_C_SOURCE
@@ -7923,16 +10437,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7926: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10440: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7929: \$? = $ac_status" >&5
+ echo "$as_me:10443: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7932: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10446: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7935: \$? = $ac_status" >&5
+ echo "$as_me:10449: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -7948,7 +10462,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:7951: result: $cf_cv_posix_c_source" >&5
+echo "$as_me:10465: result: $cf_cv_posix_c_source" >&5
echo "${ECHO_T}$cf_cv_posix_c_source" >&6
if test "$cf_cv_posix_c_source" != no ; then
@@ -7963,32 +10477,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_cv_posix_c_source
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -7997,21 +10517,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -8020,21 +10548,29 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
fi
+fi # cf_cv_posix_visible
+
;;
esac
@@ -8048,32 +10584,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_xopen_source
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -8082,21 +10624,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -8104,31 +10654,46 @@ esac
done
if test -n "$cf_new_cflags" ; then
+ test -n "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6
+
+echo "${as_me:-configure}:10659: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
- CFLAGS="$CFLAGS $cf_new_cflags"
fi
if test -n "$cf_new_cppflags" ; then
+ test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6
+
+echo "${as_me:-configure}:10669: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
fi
if test -n "$cf_new_extra_cppflags" ; then
+ test -n "$verbose" && echo " add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags" 1>&6
+
+echo "${as_me:-configure}:10679: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
fi
fi
if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
- echo "$as_me:8124: checking if _XOPEN_SOURCE really is set" >&5
+ echo "$as_me:10689: checking if _XOPEN_SOURCE really is set" >&5
echo $ECHO_N "checking if _XOPEN_SOURCE really is set... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 8127 "configure"
+#line 10692 "configure"
#include "confdefs.h"
#include <stdlib.h>
int
-main ()
+main (void)
{
#ifndef _XOPEN_SOURCE
@@ -8139,16 +10704,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8142: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10707: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8145: \$? = $ac_status" >&5
+ echo "$as_me:10710: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8148: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10713: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8151: \$? = $ac_status" >&5
+ echo "$as_me:10716: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_XOPEN_SOURCE_set=yes
else
@@ -8157,16 +10722,16 @@ cat conftest.$ac_ext >&5
cf_XOPEN_SOURCE_set=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- echo "$as_me:8160: result: $cf_XOPEN_SOURCE_set" >&5
+ echo "$as_me:10725: result: $cf_XOPEN_SOURCE_set" >&5
echo "${ECHO_T}$cf_XOPEN_SOURCE_set" >&6
if test $cf_XOPEN_SOURCE_set = yes
then
cat >conftest.$ac_ext <<_ACEOF
-#line 8165 "configure"
+#line 10730 "configure"
#include "confdefs.h"
#include <stdlib.h>
int
-main ()
+main (void)
{
#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
@@ -8177,16 +10742,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8180: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10745: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8183: \$? = $ac_status" >&5
+ echo "$as_me:10748: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8186: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10751: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8189: \$? = $ac_status" >&5
+ echo "$as_me:10754: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_XOPEN_SOURCE_set_ok=yes
else
@@ -8197,19 +10762,19 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
if test $cf_XOPEN_SOURCE_set_ok = no
then
- { echo "$as_me:8200: WARNING: _XOPEN_SOURCE is lower than requested" >&5
+ { echo "$as_me:10765: WARNING: _XOPEN_SOURCE is lower than requested" >&5
echo "$as_me: WARNING: _XOPEN_SOURCE is lower than requested" >&2;}
fi
else
-echo "$as_me:8205: checking if we should define _XOPEN_SOURCE" >&5
+echo "$as_me:10770: checking if we should define _XOPEN_SOURCE" >&5
echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
if test "${cf_cv_xopen_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 8212 "configure"
+#line 10777 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -8217,7 +10782,7 @@ else
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _XOPEN_SOURCE
@@ -8228,25 +10793,28 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8231: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10796: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8234: \$? = $ac_status" >&5
+ echo "$as_me:10799: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8237: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10802: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8240: \$? = $ac_status" >&5
+ echo "$as_me:10805: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xopen_source=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 8249 "configure"
+#line 10817 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -8254,7 +10822,7 @@ cf_save="$CPPFLAGS"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifdef _XOPEN_SOURCE
@@ -8265,16 +10833,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8268: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10836: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8271: \$? = $ac_status" >&5
+ echo "$as_me:10839: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8274: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10842: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8277: \$? = $ac_status" >&5
+ echo "$as_me:10845: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xopen_source=no
else
@@ -8289,7 +10857,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:8292: result: $cf_cv_xopen_source" >&5
+echo "$as_me:10860: result: $cf_cv_xopen_source" >&5
echo "${ECHO_T}$cf_cv_xopen_source" >&6
if test "$cf_cv_xopen_source" != no ; then
@@ -8312,32 +10880,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_temp_xopen_source
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -8346,21 +10920,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -8369,41 +10951,50 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
fi
fi
fi
+fi # cf_cv_posix_visible
+
+CPPFLAGS_after_XOPEN="$CPPFLAGS"
# Work around breakage on OS X
-echo "$as_me:8392: checking if SIGWINCH is defined" >&5
+echo "$as_me:10983: checking if SIGWINCH is defined" >&5
echo $ECHO_N "checking if SIGWINCH is defined... $ECHO_C" >&6
if test "${cf_cv_define_sigwinch+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 8399 "configure"
+#line 10990 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/signal.h>
int
-main ()
+main (void)
{
int x = SIGWINCH
;
@@ -8411,23 +11002,23 @@ int x = SIGWINCH
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8414: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11005: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8417: \$? = $ac_status" >&5
+ echo "$as_me:11008: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8420: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11011: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8423: \$? = $ac_status" >&5
+ echo "$as_me:11014: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_define_sigwinch=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 8430 "configure"
+#line 11021 "configure"
#include "confdefs.h"
#undef _XOPEN_SOURCE
@@ -8437,7 +11028,7 @@ cat >conftest.$ac_ext <<_ACEOF
#include <sys/signal.h>
int
-main ()
+main (void)
{
int x = SIGWINCH
;
@@ -8445,16 +11036,16 @@ int x = SIGWINCH
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8448: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11039: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8451: \$? = $ac_status" >&5
+ echo "$as_me:11042: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8454: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11045: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8457: \$? = $ac_status" >&5
+ echo "$as_me:11048: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_define_sigwinch=maybe
else
@@ -8468,11 +11059,11 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:8471: result: $cf_cv_define_sigwinch" >&5
+echo "$as_me:11062: result: $cf_cv_define_sigwinch" >&5
echo "${ECHO_T}$cf_cv_define_sigwinch" >&6
if test "$cf_cv_define_sigwinch" = maybe ; then
-echo "$as_me:8475: checking for actual SIGWINCH definition" >&5
+echo "$as_me:11066: checking for actual SIGWINCH definition" >&5
echo $ECHO_N "checking for actual SIGWINCH definition... $ECHO_C" >&6
if test "${cf_cv_fixup_sigwinch+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8483,7 +11074,7 @@ cf_sigwinch=32
while test $cf_sigwinch != 1
do
cat >conftest.$ac_ext <<_ACEOF
-#line 8486 "configure"
+#line 11077 "configure"
#include "confdefs.h"
#undef _XOPEN_SOURCE
@@ -8493,7 +11084,7 @@ do
#include <sys/signal.h>
int
-main ()
+main (void)
{
#if SIGWINCH != $cf_sigwinch
@@ -8505,16 +11096,16 @@ int x = SIGWINCH
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8508: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11099: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8511: \$? = $ac_status" >&5
+ echo "$as_me:11102: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8514: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11105: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8517: \$? = $ac_status" >&5
+ echo "$as_me:11108: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_fixup_sigwinch=$cf_sigwinch
break
@@ -8528,7 +11119,7 @@ cf_sigwinch=`expr $cf_sigwinch - 1`
done
fi
-echo "$as_me:8531: result: $cf_cv_fixup_sigwinch" >&5
+echo "$as_me:11122: result: $cf_cv_fixup_sigwinch" >&5
echo "${ECHO_T}$cf_cv_fixup_sigwinch" >&6
if test "$cf_cv_fixup_sigwinch" != unknown ; then
@@ -8538,17 +11129,17 @@ fi
# Checks for CODESET support.
- echo "$as_me:8541: checking for nl_langinfo and CODESET" >&5
+echo "$as_me:11132: checking for nl_langinfo and CODESET" >&5
echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6
if test "${am_cv_langinfo_codeset+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 8547 "configure"
+#line 11138 "configure"
#include "confdefs.h"
#include <langinfo.h>
int
-main ()
+main (void)
{
char* cs = nl_langinfo(CODESET);
;
@@ -8556,16 +11147,16 @@ char* cs = nl_langinfo(CODESET);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8559: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11150: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8562: \$? = $ac_status" >&5
+ echo "$as_me:11153: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8565: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11156: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8568: \$? = $ac_status" >&5
+ echo "$as_me:11159: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
am_cv_langinfo_codeset=yes
else
@@ -8576,21 +11167,21 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:8579: result: $am_cv_langinfo_codeset" >&5
+echo "$as_me:11170: result: $am_cv_langinfo_codeset" >&5
echo "${ECHO_T}$am_cv_langinfo_codeset" >&6
- if test $am_cv_langinfo_codeset = yes; then
+ if test $am_cv_langinfo_codeset = yes; then
cat >>confdefs.h <<\EOF
#define HAVE_LANGINFO_CODESET 1
EOF
- fi
+ fi
# use these variables to work around a defect in gcc's fixincludes.
NCURSES_OK_WCHAR_T=
NCURSES_OK_WINT_T=
-echo "$as_me:8593: checking if you want wide-character code" >&5
+echo "$as_me:11184: checking if you want wide-character code" >&5
echo $ECHO_N "checking if you want wide-character code... $ECHO_C" >&6
# Check whether --enable-widec or --disable-widec was given.
@@ -8600,10 +11191,15 @@ if test "${enable_widec+set}" = set; then
else
with_widec=no
fi;
-echo "$as_me:8603: result: $with_widec" >&5
+echo "$as_me:11194: result: $with_widec" >&5
echo "${ECHO_T}$with_widec" >&6
+
+NCURSES_WCWIDTH_GRAPHICS=1
+
if test "x$with_widec" = xyes ; then
- LIB_SUFFIX="w${LIB_SUFFIX}"
+ if test "x$disable_lib_suffixes" = xno ; then
+ LIB_SUFFIX="w${LIB_SUFFIX}"
+ fi
cat >>confdefs.h <<\EOF
#define USE_WIDEC_SUPPORT 1
@@ -8613,21 +11209,77 @@ cat >>confdefs.h <<\EOF
#define NCURSES_WIDECHAR 1
EOF
-echo "$as_me:8616: checking if wchar.h can be used as is" >&5
+for ac_header in \
+wchar.h \
+wctype.h \
+
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:11218: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11224 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:11228: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:11234: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:11253: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+echo "$as_me:11263: checking if wchar.h can be used as is" >&5
echo $ECHO_N "checking if wchar.h can be used as is... $ECHO_C" >&6
if test "${cf_cv_wchar_h_okay+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 8623 "configure"
+#line 11270 "configure"
#include "confdefs.h"
#include <stdlib.h>
+#ifdef HAVE_WCHAR_H
#include <wchar.h>
+#endif
+#ifdef HAVE_WCTYPE_H
+#include <wctype.h>
+#endif
int
-main ()
+main (void)
{
wint_t foo = 0;
@@ -8637,16 +11289,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8640: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11292: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8643: \$? = $ac_status" >&5
+ echo "$as_me:11295: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8646: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11298: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8649: \$? = $ac_status" >&5
+ echo "$as_me:11301: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_wchar_h_okay=yes
else
@@ -8656,21 +11308,21 @@ cf_cv_wchar_h_okay=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:8659: result: $cf_cv_wchar_h_okay" >&5
+echo "$as_me:11311: result: $cf_cv_wchar_h_okay" >&5
echo "${ECHO_T}$cf_cv_wchar_h_okay" >&6
if test $cf_cv_wchar_h_okay = no
then
-echo "$as_me:8665: checking if we must define _XOPEN_SOURCE_EXTENDED" >&5
+echo "$as_me:11317: checking if we must define _XOPEN_SOURCE_EXTENDED" >&5
echo $ECHO_N "checking if we must define _XOPEN_SOURCE_EXTENDED... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 8668 "configure"
+#line 11320 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _XOPEN_SOURCE_EXTENDED
@@ -8681,16 +11333,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8684: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11336: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8687: \$? = $ac_status" >&5
+ echo "$as_me:11339: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8690: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11342: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8693: \$? = $ac_status" >&5
+ echo "$as_me:11345: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=no
else
@@ -8699,21 +11351,21 @@ cat conftest.$ac_ext >&5
cf_result=yes
fi
rm -f conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:8702: result: $cf_result" >&5
+echo "$as_me:11354: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
if test "$cf_result" = yes ; then
CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
elif test "x" != "x" ; then
- echo "$as_me:8708: checking checking for compatible value versus " >&5
+ echo "$as_me:11360: checking checking for compatible value versus " >&5
echo $ECHO_N "checking checking for compatible value versus ... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 8711 "configure"
+#line 11363 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#if _XOPEN_SOURCE_EXTENDED- < 0
@@ -8724,16 +11376,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8727: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11379: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8730: \$? = $ac_status" >&5
+ echo "$as_me:11382: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8733: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11385: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8736: \$? = $ac_status" >&5
+ echo "$as_me:11388: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=yes
else
@@ -8742,7 +11394,7 @@ cat conftest.$ac_ext >&5
cf_result=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- echo "$as_me:8745: result: $cf_result" >&5
+ echo "$as_me:11397: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
if test "$cf_result" = no ; then
# perhaps we can override it - try...
@@ -8752,59 +11404,200 @@ fi
fi
+echo "$as_me:11407: checking if wcwidth agrees graphics are single-width" >&5
+echo $ECHO_N "checking if wcwidth agrees graphics are single-width... $ECHO_C" >&6
+if test "${cf_cv_wcwidth_graphics+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.in <<CF_EOF
+- VT100 symbols
+0x250c upper left corner
+0x2514 lower left corner
+0x2510 upper right corner
+0x2518 lower right corner
+0x251c tee pointing left
+0x2524 tee pointing right
+0x2534 tee pointing up
+0x252c tee pointing down
+0x2500 horizontal line
+0x2502 vertical line
+0x253c large plus or crossover
+0x23ba scan line 1
+0x23bd scan line 9
+0x25c6 diamond
+0x2592 checker board (stipple)
+0x00b0 degree symbol
+0x00b1 plus/minus
+0x00b7 bullet
+- Teletype 5410v1 symbols
+0x2190 arrow pointing left
+0x2192 arrow pointing right
+0x2193 arrow pointing down
+0x2191 arrow pointing up
+0x2592 board of squares
+0x2603 lantern symbol
+0x25ae solid square block
+- these defaults were invented for ncurses
+0x23bb scan line 3
+0x23bc scan line 7
+0x2264 less-than-or-equal-to
+0x2265 greater-than-or-equal-to
+0x03c0 greek pi
+0x2260 not-equal
+0x00a3 pound-sterling symbol
+- thick-line-drawing
+0x250f upper left corner
+0x2517 lower left corner
+0x2513 upper right corner
+0x251b lower right corner
+0x2523 tee pointing left
+0x252b tee pointing right
+0x253b tee pointing up
+0x2533 tee pointing down
+0x2501 horizontal line
+0x2503 vertical line
+0x254b large plus or crossover
+- double-line-drawing
+0x2554 upper left corner
+0x255a lower left corner
+0x2557 upper right corner
+0x255d lower right corner
+0x2563 tee pointing left
+0x2560 tee pointing right
+0x2569 tee pointing up
+0x2566 tee pointing down
+0x2550 horizontal line
+0x2551 vertical line
+0x256c large plus or crossover
+CF_EOF
+if test "$cross_compiling" = yes; then
+ cf_cv_wcwidth_graphics=unknown
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11478 "configure"
+#include "confdefs.h"
+
+#include <locale.h>
+#include <stdio.h>
+#include <wchar.h>
+
+#define MY_LEN 80
+
+int
+main(void)
+{
+ FILE *fp;
+ int value;
+ char buffer[MY_LEN + 1];
+ char notes[MY_LEN + 1];
+ int totals = 0;
+ int passed = 0;
+
+ if (setlocale(LC_ALL, "en_US.UTF8") ||
+ setlocale(LC_ALL, "en_US.UTF-8") ||
+ setlocale(LC_ALL, "en_US.utf8") ||
+ setlocale(LC_ALL, "en_US.utf-8")) {
+ if ((fp = fopen("conftest.in", "r")) != 0) {
+ while (fgets(buffer, MY_LEN, fp) != 0) {
+ if (*buffer == '-') {
+ fprintf(stderr, "\t%s", buffer);
+ } else if (sscanf(buffer, "%x %s", &value, notes) == 2) {
+ ++totals;
+ if (wcwidth(value) == 1)
+ ++passed;
+ fprintf(stderr, "%d\t%s", wcwidth(value), buffer);
+ } else {
+ fprintf(stderr, "?\t%s", buffer);
+ }
+ }
+ }
+ }
+ fprintf(stderr, "%d/%d passed wcwidth/graphics check\n", passed, totals);
+ return (totals == passed) ? 0 : 1;
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:11522: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:11525: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:11527: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11530: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_wcwidth_graphics=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_wcwidth_graphics=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+fi
+echo "$as_me:11543: result: $cf_cv_wcwidth_graphics" >&5
+echo "${ECHO_T}$cf_cv_wcwidth_graphics" >&6
+
+ test "$cf_cv_wcwidth_graphics" = no && NCURSES_WCWIDTH_GRAPHICS=0
+
# with_overwrite=no
NCURSES_CH_T=cchar_t
for ac_func in putwc btowc wctob mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8761: checking for $ac_func" >&5
+echo "$as_me:11554: checking for $ac_func" >&5
echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 8767 "configure"
+#line 11560 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define $ac_func autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef $ac_func
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+char $ac_func (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for $ac_func
#endif
+ return $ac_func ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8798: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11591: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8801: \$? = $ac_status" >&5
+ echo "$as_me:11594: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8804: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11597: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8807: \$? = $ac_status" >&5
+ echo "$as_me:11600: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_var=yes"
else
@@ -8814,7 +11607,7 @@ eval "$as_ac_var=no"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:8817: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "$as_me:11610: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
if test `eval echo '${'$as_ac_var'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -8826,7 +11619,7 @@ done
if test "x$ac_cv_func_putwc" != xyes ; then
-echo "$as_me:8829: checking for multibyte character support" >&5
+echo "$as_me:11622: checking for multibyte character support" >&5
echo $ECHO_N "checking for multibyte character support... $ECHO_C" >&6
if test "${cf_cv_utf8_lib+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8834,12 +11627,12 @@ else
cf_save_LIBS="$LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 8837 "configure"
+#line 11630 "configure"
#include "confdefs.h"
#include <stdlib.h>
int
-main ()
+main (void)
{
putwc(0,0);
;
@@ -8847,16 +11640,16 @@ putwc(0,0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8850: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11643: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8853: \$? = $ac_status" >&5
+ echo "$as_me:11646: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8856: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11649: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8859: \$? = $ac_status" >&5
+ echo "$as_me:11652: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_utf8_lib=yes
else
@@ -8868,17 +11661,17 @@ cat conftest.$ac_ext >&5
cf_cv_header_path_utf8=
cf_cv_library_path_utf8=
-echo "${as_me:-configure}:8871: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:11664: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5
cf_save_LIBS="$LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 8876 "configure"
+#line 11669 "configure"
#include "confdefs.h"
#include <libutf8.h>
int
-main ()
+main (void)
{
putwc(0,0);
;
@@ -8886,16 +11679,16 @@ putwc(0,0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8889: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11682: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8892: \$? = $ac_status" >&5
+ echo "$as_me:11685: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8895: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11688: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8898: \$? = $ac_status" >&5
+ echo "$as_me:11691: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_find_linkage_utf8=yes
@@ -8909,12 +11702,12 @@ cat conftest.$ac_ext >&5
LIBS="-lutf8 $cf_save_LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 8912 "configure"
+#line 11705 "configure"
#include "confdefs.h"
#include <libutf8.h>
int
-main ()
+main (void)
{
putwc(0,0);
;
@@ -8922,16 +11715,16 @@ putwc(0,0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8925: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11718: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8928: \$? = $ac_status" >&5
+ echo "$as_me:11721: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8931: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11724: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8934: \$? = $ac_status" >&5
+ echo "$as_me:11727: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_find_linkage_utf8=yes
@@ -8946,14 +11739,14 @@ cat conftest.$ac_ext >&5
cf_cv_find_linkage_utf8=no
LIBS="$cf_save_LIBS"
- test -n "$verbose" && echo " find linkage for utf8 library" 1>&6
+ test -n "$verbose" && echo " find linkage for utf8 library" 1>&6
-echo "${as_me:-configure}:8951: testing find linkage for utf8 library ..." 1>&5
+echo "${as_me:-configure}:11744: testing find linkage for utf8 library ..." 1>&5
-echo "${as_me:-configure}:8953: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:11746: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5
- cf_save_CPPFLAGS="$CPPFLAGS"
- cf_test_CPPFLAGS="$CPPFLAGS"
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_test_CPPFLAGS="$CPPFLAGS"
cf_search=
@@ -8962,8 +11755,8 @@ cf_header_path_list=""
if test -n "${CFLAGS}${CPPFLAGS}" ; then
for cf_header_path in $CPPFLAGS $CFLAGS
do
- case $cf_header_path in #(vi
- -I*)
+ case $cf_header_path in
+ (-I*)
cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
test "x$cf_header_path" != "xNONE" && \
@@ -8987,17 +11780,6 @@ fi
cf_search=
-test "x/usr" != "x$prefix" && \
-test -d "/usr" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /usr"
- test -d /usr/include && cf_search="$cf_search /usr/include"
- test -d /usr/include/utf8 && cf_search="$cf_search /usr/include/utf8"
- test -d /usr/include/utf8/include && cf_search="$cf_search /usr/include/utf8/include"
- test -d /usr/utf8/include && cf_search="$cf_search /usr/utf8/include"
- test -d /usr/utf8/include/utf8 && cf_search="$cf_search /usr/utf8/include/utf8"
-}
-
test "x$prefix" != "xNONE" && \
test -d "$prefix" && \
{
@@ -9009,38 +11791,27 @@ test -d "$prefix" && \
test -d $prefix/utf8/include/utf8 && cf_search="$cf_search $prefix/utf8/include/utf8"
}
-test "x/usr/local" != "x$prefix" && \
-test -d "/usr/local" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /usr/local"
- test -d /usr/local/include && cf_search="$cf_search /usr/local/include"
- test -d /usr/local/include/utf8 && cf_search="$cf_search /usr/local/include/utf8"
- test -d /usr/local/include/utf8/include && cf_search="$cf_search /usr/local/include/utf8/include"
- test -d /usr/local/utf8/include && cf_search="$cf_search /usr/local/utf8/include"
- test -d /usr/local/utf8/include/utf8 && cf_search="$cf_search /usr/local/utf8/include/utf8"
-}
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
-test "x/opt" != "x$prefix" && \
-test -d "/opt" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /opt"
- test -d /opt/include && cf_search="$cf_search /opt/include"
- test -d /opt/include/utf8 && cf_search="$cf_search /opt/include/utf8"
- test -d /opt/include/utf8/include && cf_search="$cf_search /opt/include/utf8/include"
- test -d /opt/utf8/include && cf_search="$cf_search /opt/utf8/include"
- test -d /opt/utf8/include/utf8 && cf_search="$cf_search /opt/utf8/include/utf8"
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/include && cf_search="$cf_search $cf_subdir_prefix/include"
+ test -d $cf_subdir_prefix/include/utf8 && cf_search="$cf_search $cf_subdir_prefix/include/utf8"
+ test -d $cf_subdir_prefix/include/utf8/include && cf_search="$cf_search $cf_subdir_prefix/include/utf8/include"
+ test -d $cf_subdir_prefix/utf8/include && cf_search="$cf_search $cf_subdir_prefix/utf8/include"
+ test -d $cf_subdir_prefix/utf8/include/utf8 && cf_search="$cf_search $cf_subdir_prefix/utf8/include/utf8"
}
-test "x$HOME" != "x$prefix" && \
-test -d "$HOME" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under $HOME"
- test -d $HOME/include && cf_search="$cf_search $HOME/include"
- test -d $HOME/include/utf8 && cf_search="$cf_search $HOME/include/utf8"
- test -d $HOME/include/utf8/include && cf_search="$cf_search $HOME/include/utf8/include"
- test -d $HOME/utf8/include && cf_search="$cf_search $HOME/utf8/include"
- test -d $HOME/utf8/include/utf8 && cf_search="$cf_search $HOME/utf8/include/utf8"
-}
+done
test "$includedir" != NONE && \
test "$includedir" != "/usr/include" && \
@@ -9058,21 +11829,25 @@ test -d "$oldincludedir" && {
cf_search="$cf_search $cf_header_path_list"
- for cf_cv_header_path_utf8 in $cf_search
- do
- if test -d $cf_cv_header_path_utf8 ; then
- test -n "$verbose" && echo " ... testing $cf_cv_header_path_utf8" 1>&6
+ for cf_cv_header_path_utf8 in $cf_search
+ do
+ if test -d $cf_cv_header_path_utf8 ; then
+ test -n "$verbose" && echo " ... testing $cf_cv_header_path_utf8" 1>&6
+
+echo "${as_me:-configure}:11837: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5
+
+ CPPFLAGS="$cf_save_CPPFLAGS"
-echo "${as_me:-configure}:9066: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_cv_header_path_utf8"
- CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_utf8"
- cat >conftest.$ac_ext <<_ACEOF
-#line 9070 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11845 "configure"
#include "confdefs.h"
#include <libutf8.h>
int
-main ()
+main (void)
{
putwc(0,0);
;
@@ -9080,52 +11855,52 @@ putwc(0,0);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9083: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11858: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9086: \$? = $ac_status" >&5
+ echo "$as_me:11861: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9089: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11864: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9092: \$? = $ac_status" >&5
+ echo "$as_me:11867: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- test -n "$verbose" && echo " ... found utf8 headers in $cf_cv_header_path_utf8" 1>&6
+ test -n "$verbose" && echo " ... found utf8 headers in $cf_cv_header_path_utf8" 1>&6
-echo "${as_me:-configure}:9097: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:11872: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5
- cf_cv_find_linkage_utf8=maybe
- cf_test_CPPFLAGS="$CPPFLAGS"
- break
+ cf_cv_find_linkage_utf8=maybe
+ cf_test_CPPFLAGS="$CPPFLAGS"
+ break
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- CPPFLAGS="$cf_save_CPPFLAGS"
+ CPPFLAGS="$cf_save_CPPFLAGS"
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- fi
- done
+ fi
+ done
- if test "$cf_cv_find_linkage_utf8" = maybe ; then
+ if test "$cf_cv_find_linkage_utf8" = maybe ; then
-echo "${as_me:-configure}:9115: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:11890: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5
- cf_save_LIBS="$LIBS"
- cf_save_LDFLAGS="$LDFLAGS"
+ cf_save_LIBS="$LIBS"
+ cf_save_LDFLAGS="$LDFLAGS"
- if test "$cf_cv_find_linkage_utf8" != yes ; then
+ if test "$cf_cv_find_linkage_utf8" != yes ; then
cf_search=
cf_library_path_list=""
if test -n "${LDFLAGS}${LIBS}" ; then
for cf_library_path in $LDFLAGS $LIBS
do
- case $cf_library_path in #(vi
- -L*)
+ case $cf_library_path in
+ (-L*)
cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
test "x$cf_library_path" != "xNONE" && \
@@ -9147,17 +11922,6 @@ fi
cf_search=
-test "x/usr" != "x$prefix" && \
-test -d "/usr" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /usr"
- test -d /usr/lib && cf_search="$cf_search /usr/lib"
- test -d /usr/lib/utf8 && cf_search="$cf_search /usr/lib/utf8"
- test -d /usr/lib/utf8/lib && cf_search="$cf_search /usr/lib/utf8/lib"
- test -d /usr/utf8/lib && cf_search="$cf_search /usr/utf8/lib"
- test -d /usr/utf8/lib/utf8 && cf_search="$cf_search /usr/utf8/lib/utf8"
-}
-
test "x$prefix" != "xNONE" && \
test -d "$prefix" && \
{
@@ -9169,58 +11933,47 @@ test -d "$prefix" && \
test -d $prefix/utf8/lib/utf8 && cf_search="$cf_search $prefix/utf8/lib/utf8"
}
-test "x/usr/local" != "x$prefix" && \
-test -d "/usr/local" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /usr/local"
- test -d /usr/local/lib && cf_search="$cf_search /usr/local/lib"
- test -d /usr/local/lib/utf8 && cf_search="$cf_search /usr/local/lib/utf8"
- test -d /usr/local/lib/utf8/lib && cf_search="$cf_search /usr/local/lib/utf8/lib"
- test -d /usr/local/utf8/lib && cf_search="$cf_search /usr/local/utf8/lib"
- test -d /usr/local/utf8/lib/utf8 && cf_search="$cf_search /usr/local/utf8/lib/utf8"
-}
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
-test "x/opt" != "x$prefix" && \
-test -d "/opt" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /opt"
- test -d /opt/lib && cf_search="$cf_search /opt/lib"
- test -d /opt/lib/utf8 && cf_search="$cf_search /opt/lib/utf8"
- test -d /opt/lib/utf8/lib && cf_search="$cf_search /opt/lib/utf8/lib"
- test -d /opt/utf8/lib && cf_search="$cf_search /opt/utf8/lib"
- test -d /opt/utf8/lib/utf8 && cf_search="$cf_search /opt/utf8/lib/utf8"
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/lib && cf_search="$cf_search $cf_subdir_prefix/lib"
+ test -d $cf_subdir_prefix/lib/utf8 && cf_search="$cf_search $cf_subdir_prefix/lib/utf8"
+ test -d $cf_subdir_prefix/lib/utf8/lib && cf_search="$cf_search $cf_subdir_prefix/lib/utf8/lib"
+ test -d $cf_subdir_prefix/utf8/lib && cf_search="$cf_search $cf_subdir_prefix/utf8/lib"
+ test -d $cf_subdir_prefix/utf8/lib/utf8 && cf_search="$cf_search $cf_subdir_prefix/utf8/lib/utf8"
}
-test "x$HOME" != "x$prefix" && \
-test -d "$HOME" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under $HOME"
- test -d $HOME/lib && cf_search="$cf_search $HOME/lib"
- test -d $HOME/lib/utf8 && cf_search="$cf_search $HOME/lib/utf8"
- test -d $HOME/lib/utf8/lib && cf_search="$cf_search $HOME/lib/utf8/lib"
- test -d $HOME/utf8/lib && cf_search="$cf_search $HOME/utf8/lib"
- test -d $HOME/utf8/lib/utf8 && cf_search="$cf_search $HOME/utf8/lib/utf8"
-}
+done
cf_search="$cf_library_path_list $cf_search"
- for cf_cv_library_path_utf8 in $cf_search
- do
- if test -d $cf_cv_library_path_utf8 ; then
- test -n "$verbose" && echo " ... testing $cf_cv_library_path_utf8" 1>&6
+ for cf_cv_library_path_utf8 in $cf_search
+ do
+ if test -d $cf_cv_library_path_utf8 ; then
+ test -n "$verbose" && echo " ... testing $cf_cv_library_path_utf8" 1>&6
-echo "${as_me:-configure}:9212: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:11965: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5
- CPPFLAGS="$cf_test_CPPFLAGS"
- LIBS="-lutf8 $cf_save_LIBS"
- LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_utf8"
- cat >conftest.$ac_ext <<_ACEOF
-#line 9218 "configure"
+ CPPFLAGS="$cf_test_CPPFLAGS"
+ LIBS="-lutf8 $cf_save_LIBS"
+ LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_utf8"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11971 "configure"
#include "confdefs.h"
#include <libutf8.h>
int
-main ()
+main (void)
{
putwc(0,0);
;
@@ -9228,44 +11981,44 @@ putwc(0,0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9231: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11984: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9234: \$? = $ac_status" >&5
+ echo "$as_me:11987: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9237: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11990: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9240: \$? = $ac_status" >&5
+ echo "$as_me:11993: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- test -n "$verbose" && echo " ... found utf8 library in $cf_cv_library_path_utf8" 1>&6
+ test -n "$verbose" && echo " ... found utf8 library in $cf_cv_library_path_utf8" 1>&6
-echo "${as_me:-configure}:9245: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:11998: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5
- cf_cv_find_linkage_utf8=yes
- cf_cv_library_file_utf8="-lutf8"
- break
+ cf_cv_find_linkage_utf8=yes
+ cf_cv_library_file_utf8="-lutf8"
+ break
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- CPPFLAGS="$cf_save_CPPFLAGS"
- LIBS="$cf_save_LIBS"
- LDFLAGS="$cf_save_LDFLAGS"
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ LDFLAGS="$cf_save_LDFLAGS"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- fi
- done
- CPPFLAGS="$cf_save_CPPFLAGS"
- LDFLAGS="$cf_save_LDFLAGS"
- fi
+ fi
+ done
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LDFLAGS="$cf_save_LDFLAGS"
+ fi
- else
- cf_cv_find_linkage_utf8=no
- fi
+ else
+ cf_cv_find_linkage_utf8=no
+ fi
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
@@ -9284,7 +12037,7 @@ fi
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:9287: result: $cf_cv_utf8_lib" >&5
+echo "$as_me:12040: result: $cf_cv_utf8_lib" >&5
echo "${ECHO_T}$cf_cv_utf8_lib" >&6
# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
@@ -9317,13 +12070,16 @@ if test -n "$cf_cv_header_path_utf8" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 9322 "configure"
+#line 12078 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -9331,16 +12087,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9334: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12090: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9337: \$? = $ac_status" >&5
+ echo "$as_me:12093: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9340: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12096: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9343: \$? = $ac_status" >&5
+ echo "$as_me:12099: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -9357,7 +12113,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:9360: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:12116: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -9367,39 +12123,56 @@ echo "${as_me:-configure}:9360: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
fi
if test -n "$cf_cv_library_path_utf8" ; then
- for cf_add_libdir in $cf_cv_library_path_utf8
- do
- if test $cf_add_libdir = /usr/lib ; then
- :
- elif test -d $cf_add_libdir
- then
- cf_have_libdir=no
- if test -n "$LDFLAGS$LIBS" ; then
- # a loop is needed to ensure we can add subdirs of existing dirs
- for cf_test_libdir in $LDFLAGS $LIBS ; do
- if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
- cf_have_libdir=yes; break
- fi
- done
- fi
- if test "$cf_have_libdir" = no ; then
- test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
+ for cf_add_libdir in $cf_cv_library_path_utf8
+ do
+ if test $cf_add_libdir = /usr/lib ; then
+ :
+ elif test -d $cf_add_libdir
+ then
+ cf_have_libdir=no
+ if test -n "$LDFLAGS$LIBS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_libdir in $LDFLAGS $LIBS ; do
+ if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
+ cf_have_libdir=yes; break
+ fi
+ done
+ fi
+ if test "$cf_have_libdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
-echo "${as_me:-configure}:9394: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:12152: testing adding $cf_add_libdir to library-path ..." 1>&5
- LDFLAGS="-L$cf_add_libdir $LDFLAGS"
- fi
- fi
- done
+ LDFLAGS="-L$cf_add_libdir $LDFLAGS"
+ fi
+ fi
+ done
fi
- LIBS="$cf_cv_library_file_utf8 $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_cv_library_file_utf8; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
fi
if test "$cf_cv_utf8_lib" != no ; then
@@ -9408,14 +12181,14 @@ fi
fi
# This is needed on Tru64 5.0 to declare mbstate_t
-echo "$as_me:9411: checking if we must include wchar.h to declare mbstate_t" >&5
+echo "$as_me:12184: checking if we must include wchar.h to declare mbstate_t" >&5
echo $ECHO_N "checking if we must include wchar.h to declare mbstate_t... $ECHO_C" >&6
if test "${cf_cv_mbstate_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 9418 "configure"
+#line 12191 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -9425,7 +12198,7 @@ cat >conftest.$ac_ext <<_ACEOF
#include <libutf8.h>
#endif
int
-main ()
+main (void)
{
mbstate_t state
;
@@ -9433,23 +12206,23 @@ mbstate_t state
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9436: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12209: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9439: \$? = $ac_status" >&5
+ echo "$as_me:12212: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9442: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12215: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9445: \$? = $ac_status" >&5
+ echo "$as_me:12218: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_mbstate_t=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 9452 "configure"
+#line 12225 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -9460,7 +12233,7 @@ cat >conftest.$ac_ext <<_ACEOF
#include <libutf8.h>
#endif
int
-main ()
+main (void)
{
mbstate_t value
;
@@ -9468,16 +12241,16 @@ mbstate_t value
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9471: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12244: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9474: \$? = $ac_status" >&5
+ echo "$as_me:12247: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9477: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12250: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9480: \$? = $ac_status" >&5
+ echo "$as_me:12253: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_mbstate_t=yes
else
@@ -9489,7 +12262,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:9492: result: $cf_cv_mbstate_t" >&5
+echo "$as_me:12265: result: $cf_cv_mbstate_t" >&5
echo "${ECHO_T}$cf_cv_mbstate_t" >&6
if test "$cf_cv_mbstate_t" = yes ; then
@@ -9507,14 +12280,14 @@ if test "$cf_cv_mbstate_t" = unknown ; then
fi
# This is needed on Tru64 5.0 to declare wchar_t
-echo "$as_me:9510: checking if we must include wchar.h to declare wchar_t" >&5
+echo "$as_me:12283: checking if we must include wchar.h to declare wchar_t" >&5
echo $ECHO_N "checking if we must include wchar.h to declare wchar_t... $ECHO_C" >&6
if test "${cf_cv_wchar_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 9517 "configure"
+#line 12290 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -9524,7 +12297,7 @@ cat >conftest.$ac_ext <<_ACEOF
#include <libutf8.h>
#endif
int
-main ()
+main (void)
{
wchar_t state
;
@@ -9532,23 +12305,23 @@ wchar_t state
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9535: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12308: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9538: \$? = $ac_status" >&5
+ echo "$as_me:12311: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9541: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12314: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9544: \$? = $ac_status" >&5
+ echo "$as_me:12317: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_wchar_t=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 9551 "configure"
+#line 12324 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -9559,7 +12332,7 @@ cat >conftest.$ac_ext <<_ACEOF
#include <libutf8.h>
#endif
int
-main ()
+main (void)
{
wchar_t value
;
@@ -9567,16 +12340,16 @@ wchar_t value
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9570: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12343: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9573: \$? = $ac_status" >&5
+ echo "$as_me:12346: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9576: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12349: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9579: \$? = $ac_status" >&5
+ echo "$as_me:12352: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_wchar_t=yes
else
@@ -9588,7 +12361,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:9591: result: $cf_cv_wchar_t" >&5
+echo "$as_me:12364: result: $cf_cv_wchar_t" >&5
echo "${ECHO_T}$cf_cv_wchar_t" >&6
if test "$cf_cv_wchar_t" = yes ; then
@@ -9611,14 +12384,14 @@ if test "$cf_cv_wchar_t" != unknown ; then
fi
# This is needed on Tru64 5.0 to declare wint_t
-echo "$as_me:9614: checking if we must include wchar.h to declare wint_t" >&5
+echo "$as_me:12387: checking if we must include wchar.h to declare wint_t" >&5
echo $ECHO_N "checking if we must include wchar.h to declare wint_t... $ECHO_C" >&6
if test "${cf_cv_wint_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 9621 "configure"
+#line 12394 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -9628,7 +12401,7 @@ cat >conftest.$ac_ext <<_ACEOF
#include <libutf8.h>
#endif
int
-main ()
+main (void)
{
wint_t state
;
@@ -9636,23 +12409,23 @@ wint_t state
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9639: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12412: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9642: \$? = $ac_status" >&5
+ echo "$as_me:12415: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9645: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12418: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9648: \$? = $ac_status" >&5
+ echo "$as_me:12421: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_wint_t=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 9655 "configure"
+#line 12428 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -9663,7 +12436,7 @@ cat >conftest.$ac_ext <<_ACEOF
#include <libutf8.h>
#endif
int
-main ()
+main (void)
{
wint_t value
;
@@ -9671,16 +12444,16 @@ wint_t value
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9674: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12447: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9677: \$? = $ac_status" >&5
+ echo "$as_me:12450: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9680: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12453: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9683: \$? = $ac_status" >&5
+ echo "$as_me:12456: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_wint_t=yes
else
@@ -9692,7 +12465,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:9695: result: $cf_cv_wint_t" >&5
+echo "$as_me:12468: result: $cf_cv_wint_t" >&5
echo "${ECHO_T}$cf_cv_wint_t" >&6
if test "$cf_cv_wint_t" = yes ; then
@@ -9724,16 +12497,7 @@ EOF
fi
### use option --disable-lp64 to allow long chtype
-case $cf_cv_abi_version in
-[345]*)
- default_with_lp64=no
- ;;
-*)
- default_with_lp64=yes
- ;;
-esac
-
-echo "$as_me:9736: checking whether to enable _LP64 definition in curses.h" >&5
+echo "$as_me:12500: checking whether to enable _LP64 definition in curses.h" >&5
echo $ECHO_N "checking whether to enable _LP64 definition in curses.h... $ECHO_C" >&6
# Check whether --enable-lp64 or --disable-lp64 was given.
@@ -9741,9 +12505,9 @@ if test "${enable_lp64+set}" = set; then
enableval="$enable_lp64"
with_lp64=$enableval
else
- with_lp64=$default_with_lp64
+ with_lp64=$cf_dft_with_lp64
fi;
-echo "$as_me:9746: result: $with_lp64" >&5
+echo "$as_me:12510: result: $with_lp64" >&5
echo "${ECHO_T}$with_lp64" >&6
if test "x$with_lp64" = xyes ; then
@@ -9759,7 +12523,7 @@ if test "${enable_largefile+set}" = set; then
fi;
if test "$enable_largefile" != no; then
- echo "$as_me:9762: checking for special C compiler options needed for large files" >&5
+ echo "$as_me:12526: checking for special C compiler options needed for large files" >&5
echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6
if test "${ac_cv_sys_largefile_CC+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9771,7 +12535,7 @@ else
# IRIX 6.2 and later do not support large files by default,
# so use the C compiler's -n32 option if that helps.
cat >conftest.$ac_ext <<_ACEOF
-#line 9774 "configure"
+#line 12538 "configure"
#include "confdefs.h"
#include <sys/types.h>
/* Check that off_t can represent 2**63 - 1 correctly.
@@ -9783,7 +12547,7 @@ else
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
@@ -9791,16 +12555,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9794: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12558: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9797: \$? = $ac_status" >&5
+ echo "$as_me:12561: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9800: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12564: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9803: \$? = $ac_status" >&5
+ echo "$as_me:12567: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -9810,16 +12574,16 @@ fi
rm -f conftest.$ac_objext
CC="$CC -n32"
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9813: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12577: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9816: \$? = $ac_status" >&5
+ echo "$as_me:12580: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9819: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12583: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9822: \$? = $ac_status" >&5
+ echo "$as_me:12586: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_sys_largefile_CC=' -n32'; break
else
@@ -9833,13 +12597,13 @@ rm -f conftest.$ac_objext
rm -f conftest.$ac_ext
fi
fi
-echo "$as_me:9836: result: $ac_cv_sys_largefile_CC" >&5
+echo "$as_me:12600: result: $ac_cv_sys_largefile_CC" >&5
echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6
if test "$ac_cv_sys_largefile_CC" != no; then
CC=$CC$ac_cv_sys_largefile_CC
fi
- echo "$as_me:9842: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+ echo "$as_me:12606: checking for _FILE_OFFSET_BITS value needed for large files" >&5
echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6
if test "${ac_cv_sys_file_offset_bits+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9847,7 +12611,7 @@ else
while :; do
ac_cv_sys_file_offset_bits=no
cat >conftest.$ac_ext <<_ACEOF
-#line 9850 "configure"
+#line 12614 "configure"
#include "confdefs.h"
#include <sys/types.h>
/* Check that off_t can represent 2**63 - 1 correctly.
@@ -9859,7 +12623,7 @@ else
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
@@ -9867,16 +12631,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9870: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12634: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9873: \$? = $ac_status" >&5
+ echo "$as_me:12637: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9876: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12640: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9879: \$? = $ac_status" >&5
+ echo "$as_me:12643: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -9885,7 +12649,7 @@ cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line 9888 "configure"
+#line 12652 "configure"
#include "confdefs.h"
#define _FILE_OFFSET_BITS 64
#include <sys/types.h>
@@ -9898,7 +12662,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
@@ -9906,16 +12670,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9909: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12673: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9912: \$? = $ac_status" >&5
+ echo "$as_me:12676: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9915: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12679: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9918: \$? = $ac_status" >&5
+ echo "$as_me:12682: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_sys_file_offset_bits=64; break
else
@@ -9926,7 +12690,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
break
done
fi
-echo "$as_me:9929: result: $ac_cv_sys_file_offset_bits" >&5
+echo "$as_me:12693: result: $ac_cv_sys_file_offset_bits" >&5
echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6
if test "$ac_cv_sys_file_offset_bits" != no; then
@@ -9936,7 +12700,7 @@ EOF
fi
rm -rf conftest*
- echo "$as_me:9939: checking for _LARGE_FILES value needed for large files" >&5
+ echo "$as_me:12703: checking for _LARGE_FILES value needed for large files" >&5
echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6
if test "${ac_cv_sys_large_files+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9944,7 +12708,7 @@ else
while :; do
ac_cv_sys_large_files=no
cat >conftest.$ac_ext <<_ACEOF
-#line 9947 "configure"
+#line 12711 "configure"
#include "confdefs.h"
#include <sys/types.h>
/* Check that off_t can represent 2**63 - 1 correctly.
@@ -9956,7 +12720,7 @@ else
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
@@ -9964,16 +12728,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9967: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12731: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9970: \$? = $ac_status" >&5
+ echo "$as_me:12734: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9973: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12737: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9976: \$? = $ac_status" >&5
+ echo "$as_me:12740: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -9982,7 +12746,7 @@ cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line 9985 "configure"
+#line 12749 "configure"
#include "confdefs.h"
#define _LARGE_FILES 1
#include <sys/types.h>
@@ -9995,7 +12759,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
@@ -10003,16 +12767,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:10006: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12770: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10009: \$? = $ac_status" >&5
+ echo "$as_me:12773: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:10012: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12776: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10015: \$? = $ac_status" >&5
+ echo "$as_me:12779: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_sys_large_files=1; break
else
@@ -10023,7 +12787,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
break
done
fi
-echo "$as_me:10026: result: $ac_cv_sys_large_files" >&5
+echo "$as_me:12790: result: $ac_cv_sys_large_files" >&5
echo "${ECHO_T}$ac_cv_sys_large_files" >&6
if test "$ac_cv_sys_large_files" != no; then
@@ -10035,8 +12799,8 @@ fi
rm -rf conftest*
fi
- if test "$enable_largefile" != no ; then
- echo "$as_me:10039: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+ if test "$enable_largefile" != no ; then
+ echo "$as_me:12803: checking for _LARGEFILE_SOURCE value needed for large files" >&5
echo $ECHO_N "checking for _LARGEFILE_SOURCE value needed for large files... $ECHO_C" >&6
if test "${ac_cv_sys_largefile_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10044,11 +12808,11 @@ else
while :; do
ac_cv_sys_largefile_source=no
cat >conftest.$ac_ext <<_ACEOF
-#line 10047 "configure"
+#line 12811 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
return !fseeko;
;
@@ -10056,16 +12820,16 @@ return !fseeko;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:10059: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12823: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10062: \$? = $ac_status" >&5
+ echo "$as_me:12826: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:10065: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12829: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10068: \$? = $ac_status" >&5
+ echo "$as_me:12832: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -10074,12 +12838,12 @@ cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line 10077 "configure"
+#line 12841 "configure"
#include "confdefs.h"
#define _LARGEFILE_SOURCE 1
#include <stdio.h>
int
-main ()
+main (void)
{
return !fseeko;
;
@@ -10087,16 +12851,16 @@ return !fseeko;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:10090: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12854: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10093: \$? = $ac_status" >&5
+ echo "$as_me:12857: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:10096: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12860: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10099: \$? = $ac_status" >&5
+ echo "$as_me:12863: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_sys_largefile_source=1; break
else
@@ -10107,7 +12871,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
break
done
fi
-echo "$as_me:10110: result: $ac_cv_sys_largefile_source" >&5
+echo "$as_me:12874: result: $ac_cv_sys_largefile_source" >&5
echo "${ECHO_T}$ac_cv_sys_largefile_source" >&6
if test "$ac_cv_sys_largefile_source" != no; then
@@ -10121,17 +12885,17 @@ rm -rf conftest*
# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
# in glibc 2.1.3, but that breaks too many other things.
# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
-echo "$as_me:10124: checking for fseeko" >&5
+echo "$as_me:12888: checking for fseeko" >&5
echo $ECHO_N "checking for fseeko... $ECHO_C" >&6
if test "${ac_cv_func_fseeko+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10130 "configure"
+#line 12894 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
return fseeko && fseeko (stdin, 0, 0);
;
@@ -10139,16 +12903,16 @@ return fseeko && fseeko (stdin, 0, 0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10142: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12906: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:10145: \$? = $ac_status" >&5
+ echo "$as_me:12909: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10148: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12912: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10151: \$? = $ac_status" >&5
+ echo "$as_me:12915: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_fseeko=yes
else
@@ -10158,7 +12922,7 @@ ac_cv_func_fseeko=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:10161: result: $ac_cv_func_fseeko" >&5
+echo "$as_me:12925: result: $ac_cv_func_fseeko" >&5
echo "${ECHO_T}$ac_cv_func_fseeko" >&6
if test $ac_cv_func_fseeko = yes; then
@@ -10175,25 +12939,44 @@ fi
# header files by themselves before looking at the body files it is
# told to compile. For ncurses, those header files do not include
# the config.h
- test "$ac_cv_sys_large_files" != no && CPPFLAGS="$CPPFLAGS -D_LARGE_FILES "
- test "$ac_cv_sys_largefile_source" != no && CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE "
- test "$ac_cv_sys_file_offset_bits" != no && CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits "
+ if test "$ac_cv_sys_large_files" != no
+ then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_LARGE_FILES"
- echo "$as_me:10182: checking whether to use struct dirent64" >&5
+ fi
+ if test "$ac_cv_sys_largefile_source" != no
+ then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_LARGEFILE_SOURCE"
+
+ fi
+ if test "$ac_cv_sys_file_offset_bits" != no
+ then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
+
+ fi
+
+ echo "$as_me:12964: checking whether to use struct dirent64" >&5
echo $ECHO_N "checking whether to use struct dirent64... $ECHO_C" >&6
if test "${cf_cv_struct_dirent64+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10189 "configure"
+#line 12971 "configure"
#include "confdefs.h"
+#pragma GCC diagnostic error "-Wincompatible-pointer-types"
#include <sys/types.h>
#include <dirent.h>
int
-main ()
+main (void)
{
/* if transitional largefile support is setup, this is true */
@@ -10207,16 +12990,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:10210: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12993: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10213: \$? = $ac_status" >&5
+ echo "$as_me:12996: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:10216: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12999: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10219: \$? = $ac_status" >&5
+ echo "$as_me:13002: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_struct_dirent64=yes
else
@@ -10227,17 +13010,17 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:10230: result: $cf_cv_struct_dirent64" >&5
+echo "$as_me:13013: result: $cf_cv_struct_dirent64" >&5
echo "${ECHO_T}$cf_cv_struct_dirent64" >&6
test "$cf_cv_struct_dirent64" = yes &&
cat >>confdefs.h <<\EOF
#define HAVE_STRUCT_DIRENT64 1
EOF
- fi
+ fi
### use option --disable-tparm-varargs to make tparm() conform to X/Open
-echo "$as_me:10240: checking if you want tparm not to use X/Open fixed-parameter list" >&5
+echo "$as_me:13023: checking if you want tparm not to use X/Open fixed-parameter list" >&5
echo $ECHO_N "checking if you want tparm not to use X/Open fixed-parameter list... $ECHO_C" >&6
# Check whether --enable-tparm-varargs or --disable-tparm-varargs was given.
@@ -10247,14 +13030,14 @@ if test "${enable_tparm_varargs+set}" = set; then
else
with_tparm_varargs=yes
fi;
-echo "$as_me:10250: result: $with_tparm_varargs" >&5
+echo "$as_me:13033: result: $with_tparm_varargs" >&5
echo "${ECHO_T}$with_tparm_varargs" >&6
NCURSES_TPARM_VARARGS=0
test "x$with_tparm_varargs" = xyes && NCURSES_TPARM_VARARGS=1
### use option --disable-tic-depends to make libtic not explicitly depend on ncurses/ncursesw
if test "$with_ticlib" != no ; then
-echo "$as_me:10257: checking if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library" >&5
+echo "$as_me:13040: checking if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library" >&5
echo $ECHO_N "checking if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library... $ECHO_C" >&6
# Check whether --enable-tic-depends or --disable-tic-depends was given.
@@ -10264,14 +13047,120 @@ if test "${enable_tic_depends+set}" = set; then
else
with_tic_depends=yes
fi;
-echo "$as_me:10267: result: $with_tic_depends" >&5
+echo "$as_me:13050: result: $with_tic_depends" >&5
echo "${ECHO_T}$with_tic_depends" >&6
else
with_tic_depends=no
fi
+### use option --disable-wattr-macros to suppress wattr* macros from curses.h
+echo "$as_me:13057: checking if you want to suppress wattr* macros to help with ncurses5/ncurses6 transition" >&5
+echo $ECHO_N "checking if you want to suppress wattr* macros to help with ncurses5/ncurses6 transition... $ECHO_C" >&6
+
+# Check whether --enable-wattr-macros or --disable-wattr-macros was given.
+if test "${enable_wattr_macros+set}" = set; then
+ enableval="$enable_wattr_macros"
+ with_wattr_macros=$enableval
+else
+ with_wattr_macros=yes
+fi;
+if [ "x$with_wattr_macros" != xyes ]; then
+ NCURSES_WATTR_MACROS=0
+ echo "$as_me:13069: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ NCURSES_WATTR_MACROS=1
+ echo "$as_me:13073: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+echo "$as_me:13077: checking for X11 rgb file" >&5
+echo $ECHO_N "checking for X11 rgb file... $ECHO_C" >&6
+
+# Check whether --with-x11-rgb or --without-x11-rgb was given.
+if test "${with_x11_rgb+set}" = set; then
+ withval="$with_x11_rgb"
+ RGB_PATH=$withval
+else
+ RGB_PATH=auto
+fi;
+
+if test "x$RGB_PATH" = xauto
+then
+ RGB_PATH='${exec_prefix}/lib/X11/rgb.txt'
+ for cf_path in \
+ /opt/local/share/X11/rgb.txt \
+ /opt/X11/share/X11/rgb.txt \
+ /usr/share/X11/rgb.txt \
+ /usr/X11/share/X11/rgb.txt \
+ /usr/X11/lib/X11/rgb.txt \
+ /usr/lib/X11/rgb.txt \
+ /etc/X11/rgb.txt \
+ /usr/pkg/lib/X11/rgb.txt \
+ /usr/X11R7/lib/X11/rgb.txt \
+ /usr/X11R6/lib/X11/rgb.txt \
+ /usr/X11R5/lib/X11/rgb.txt \
+ /usr/X11R4/lib/X11/rgb.txt \
+ /usr/local/lib/X11/rgb.txt \
+ /usr/local/share/X11/rgb.txt \
+ /usr/lib64/X11/rgb.txt
+ do
+ if test -f "$cf_path" ; then
+ RGB_PATH="$cf_path"
+ break
+ fi
+ done
+else
+ cf_path=$RGB_PATH
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$cf_path" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval cf_path="$cf_path"
+ case ".$cf_path" in
+ (.NONE/*)
+ cf_path=`echo $cf_path | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ cf_path=`echo $cf_path | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:13141: error: expected a pathname, not \"$cf_path\"" >&5
+echo "$as_me: error: expected a pathname, not \"$cf_path\"" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+esac
+
+fi
+
+echo "$as_me:13149: result: $RGB_PATH" >&5
+echo "${ECHO_T}$RGB_PATH" >&6
+
+cat >>confdefs.h <<EOF
+#define RGB_PATH "$cf_path"
+EOF
+
+no_x11_rgb=
+if test "$RGB_PATH" = no
+then
+ no_x11_rgb="#"
+fi
+
### use option --with-bool to override bool's type
-echo "$as_me:10274: checking for type of bool" >&5
+echo "$as_me:13163: checking for type of bool" >&5
echo $ECHO_N "checking for type of bool... $ECHO_C" >&6
# Check whether --with-bool or --without-bool was given.
@@ -10281,10 +13170,10 @@ if test "${with_bool+set}" = set; then
else
NCURSES_BOOL=auto
fi;
-echo "$as_me:10284: result: $NCURSES_BOOL" >&5
+echo "$as_me:13173: result: $NCURSES_BOOL" >&5
echo "${ECHO_T}$NCURSES_BOOL" >&6
-echo "$as_me:10287: checking for alternate terminal capabilities file" >&5
+echo "$as_me:13176: checking for alternate terminal capabilities file" >&5
echo $ECHO_N "checking for alternate terminal capabilities file... $ECHO_C" >&6
# Check whether --with-caps or --without-caps was given.
@@ -10295,11 +13184,11 @@ else
TERMINFO_CAPS=Caps
fi;
test -f "${srcdir}/include/${TERMINFO_CAPS}" || TERMINFO_CAPS=Caps
-echo "$as_me:10298: result: $TERMINFO_CAPS" >&5
+echo "$as_me:13187: result: $TERMINFO_CAPS" >&5
echo "${ECHO_T}$TERMINFO_CAPS" >&6
### use option --with-chtype to override chtype's type
-echo "$as_me:10302: checking for type of chtype" >&5
+echo "$as_me:13191: checking for type of chtype" >&5
echo $ECHO_N "checking for type of chtype... $ECHO_C" >&6
# Check whether --with-chtype or --without-chtype was given.
@@ -10307,13 +13196,13 @@ if test "${with_chtype+set}" = set; then
withval="$with_chtype"
NCURSES_CHTYPE="$withval"
else
- NCURSES_CHTYPE=auto
+ NCURSES_CHTYPE=$cf_dft_chtype
fi;
-echo "$as_me:10312: result: $NCURSES_CHTYPE" >&5
+echo "$as_me:13201: result: $NCURSES_CHTYPE" >&5
echo "${ECHO_T}$NCURSES_CHTYPE" >&6
### use option --with-ospeed to override ospeed's type
-echo "$as_me:10316: checking for type of ospeed" >&5
+echo "$as_me:13205: checking for type of ospeed" >&5
echo $ECHO_N "checking for type of ospeed... $ECHO_C" >&6
# Check whether --with-ospeed or --without-ospeed was given.
@@ -10323,11 +13212,11 @@ if test "${with_ospeed+set}" = set; then
else
NCURSES_OSPEED=short
fi;
-echo "$as_me:10326: result: $NCURSES_OSPEED" >&5
+echo "$as_me:13215: result: $NCURSES_OSPEED" >&5
echo "${ECHO_T}$NCURSES_OSPEED" >&6
### use option --with-mmask-t to override mmask_t's type
-echo "$as_me:10330: checking for type of mmask_t" >&5
+echo "$as_me:13219: checking for type of mmask_t" >&5
echo $ECHO_N "checking for type of mmask_t... $ECHO_C" >&6
# Check whether --with-mmask-t or --without-mmask-t was given.
@@ -10335,13 +13224,13 @@ if test "${with_mmask_t+set}" = set; then
withval="$with_mmask_t"
NCURSES_MMASK_T="$withval"
else
- NCURSES_MMASK_T=auto
+ NCURSES_MMASK_T=$cf_dft_mmask_t
fi;
-echo "$as_me:10340: result: $NCURSES_MMASK_T" >&5
+echo "$as_me:13229: result: $NCURSES_MMASK_T" >&5
echo "${ECHO_T}$NCURSES_MMASK_T" >&6
### use option --with-ccharw-max to override CCHARW_MAX size
-echo "$as_me:10344: checking for size CCHARW_MAX" >&5
+echo "$as_me:13233: checking for size CCHARW_MAX" >&5
echo $ECHO_N "checking for size CCHARW_MAX... $ECHO_C" >&6
# Check whether --with-ccharw-max or --without-ccharw-max was given.
@@ -10351,11 +13240,452 @@ if test "${with_ccharw_max+set}" = set; then
else
NCURSES_CCHARW_MAX=5
fi;
-echo "$as_me:10354: result: $NCURSES_CCHARW_MAX" >&5
+echo "$as_me:13243: result: $NCURSES_CCHARW_MAX" >&5
echo "${ECHO_T}$NCURSES_CCHARW_MAX" >&6
+echo "$as_me:13246: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13252 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+_ACEOF
+if { (eval echo "$as_me:13260: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:13266: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13288 "configure"
+#include "confdefs.h"
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -rf conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13306 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -rf conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13327 "configure"
+#include "confdefs.h"
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main (void)
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ $ac_main_return(2);
+ $ac_main_return (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:13353: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:13356: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:13358: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13361: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_header_stdc=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:13374: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\EOF
+#define STDC_HEADERS 1
+EOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:13390: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13396 "configure"
+#include "confdefs.h"
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:13402: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:13405: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:13408: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13411: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:13421: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+echo "$as_me:13431: checking for signed char" >&5
+echo $ECHO_N "checking for signed char... $ECHO_C" >&6
+if test "${ac_cv_type_signed_char+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13437 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main (void)
+{
+if ((signed char *) 0)
+ return 0;
+if (sizeof (signed char))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:13452: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:13455: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:13458: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13461: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_signed_char=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_signed_char=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:13471: result: $ac_cv_type_signed_char" >&5
+echo "${ECHO_T}$ac_cv_type_signed_char" >&6
+
+echo "$as_me:13474: checking size of signed char" >&5
+echo $ECHO_N "checking size of signed char... $ECHO_C" >&6
+if test "${ac_cv_sizeof_signed_char+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_signed_char" = yes; then
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+#line 13483 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main (void)
+{
+int _array_ [1 - 2 * !((sizeof (signed char)) >= 0)]
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:13495: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:13498: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:13501: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13504: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13509 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main (void)
+{
+int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)]
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:13521: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:13524: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:13527: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13530: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13546 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main (void)
+{
+int _array_ [1 - 2 * !((sizeof (signed char)) >= $ac_mid)]
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:13558: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:13561: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:13564: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13567: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ done
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13583 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main (void)
+{
+int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)]
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:13595: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:13598: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:13601: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13604: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_lo=`expr $ac_mid + 1`
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+ac_cv_sizeof_signed_char=$ac_lo
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:13617: error: cannot run test program while cross compiling" >&5
+echo "$as_me: error: cannot run test program while cross compiling" >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13622 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main (void)
+{
+FILE *f = fopen ("conftest.val", "w");
+if (!f)
+ $ac_main_return (1);
+fprintf (f, "%d", (sizeof (signed char)));
+fclose (f);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:13638: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:13641: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:13643: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13646: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_signed_char=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_signed_char=0
+fi
+fi
+echo "$as_me:13662: result: $ac_cv_sizeof_signed_char" >&5
+echo "${ECHO_T}$ac_cv_sizeof_signed_char" >&6
+cat >>confdefs.h <<EOF
+#define SIZEOF_SIGNED_CHAR $ac_cv_sizeof_signed_char
+EOF
+
+if test "$ac_cv_sizeof_signed_char" = 1 ; then
+ NCURSES_SBOOL="signed char"
+else
+ NCURSES_SBOOL="char"
+fi
+echo "$as_me:13673: checking if you want to use signed Boolean array in term.h" >&5
+echo $ECHO_N "checking if you want to use signed Boolean array in term.h... $ECHO_C" >&6
+
+# Check whether --enable-signed-char or --disable-signed-char was given.
+if test "${enable_signed_char+set}" = set; then
+ enableval="$enable_signed_char"
+ with_signed_char=$enableval
+else
+ with_signed_char=no
+fi;
+echo "$as_me:13683: result: $with_signed_char" >&5
+echo "${ECHO_T}$with_signed_char" >&6
+test "x$with_signed_char" != xyes && NCURSES_SBOOL="char"
+
### use option --with-tparm-arg to override tparm's argument type
-echo "$as_me:10358: checking for type of tparm args" >&5
+echo "$as_me:13688: checking for type of tparm args" >&5
echo $ECHO_N "checking for type of tparm args... $ECHO_C" >&6
# Check whether --with-tparm-arg or --without-tparm-arg was given.
@@ -10363,13 +13693,13 @@ if test "${with_tparm_arg+set}" = set; then
withval="$with_tparm_arg"
NCURSES_TPARM_ARG="$withval"
else
- NCURSES_TPARM_ARG=long
+ NCURSES_TPARM_ARG=$cf_dft_tparm_arg
fi;
-echo "$as_me:10368: result: $NCURSES_TPARM_ARG" >&5
+echo "$as_me:13698: result: $NCURSES_TPARM_ARG" >&5
echo "${ECHO_T}$NCURSES_TPARM_ARG" >&6
### Enable compiling-in rcs id's
-echo "$as_me:10372: checking if RCS identifiers should be compiled-in" >&5
+echo "$as_me:13702: checking if RCS identifiers should be compiled-in" >&5
echo $ECHO_N "checking if RCS identifiers should be compiled-in... $ECHO_C" >&6
# Check whether --with-rcs-ids or --without-rcs-ids was given.
@@ -10379,7 +13709,7 @@ if test "${with_rcs_ids+set}" = set; then
else
with_rcs_ids=no
fi;
-echo "$as_me:10382: result: $with_rcs_ids" >&5
+echo "$as_me:13712: result: $with_rcs_ids" >&5
echo "${ECHO_T}$with_rcs_ids" >&6
test "x$with_rcs_ids" = xyes &&
cat >>confdefs.h <<\EOF
@@ -10388,7 +13718,7 @@ EOF
###############################################################################
-echo "$as_me:10391: checking format of man-pages" >&5
+echo "$as_me:13721: checking format of man-pages" >&5
echo $ECHO_N "checking format of man-pages... $ECHO_C" >&6
# Check whether --with-manpage-format or --without-manpage-format was given.
@@ -10405,86 +13735,86 @@ MANPAGE_FORMAT=`echo "$MANPAGE_FORMAT" | sed -e 's/,/ /g'`
cf_unknown=
case $MANPAGE_FORMAT in
-unknown)
- if test -z "$MANPATH" ; then
- MANPATH="/usr/man:/usr/share/man"
- fi
+(unknown)
+ if test -z "$MANPATH" ; then
+ MANPATH="/usr/man:/usr/share/man"
+ fi
- # look for the 'date' man-page (it's most likely to be installed!)
- MANPAGE_FORMAT=
- cf_preform=no
- cf_catonly=yes
- cf_example=date
+ # look for the 'date' man-page (it's most likely to be installed!)
+ MANPAGE_FORMAT=
+ cf_preform=no
+ cf_catonly=yes
+ cf_example=date
- IFS="${IFS:- }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for cf_dir in $MANPATH; do
- test -z "$cf_dir" && cf_dir=/usr/man
- for cf_name in $cf_dir/man*/$cf_example.[01]* $cf_dir/cat*/$cf_example.[01]* $cf_dir/man*/$cf_example $cf_dir/cat*/$cf_example
- do
- cf_test=`echo $cf_name | sed -e 's/*//'`
- if test "x$cf_test" = "x$cf_name" ; then
-
- case "$cf_name" in
- *.gz) MANPAGE_FORMAT="$MANPAGE_FORMAT gzip";;
- *.Z) MANPAGE_FORMAT="$MANPAGE_FORMAT compress";;
- *.0) MANPAGE_FORMAT="$MANPAGE_FORMAT BSDI";;
- *) MANPAGE_FORMAT="$MANPAGE_FORMAT normal";;
- esac
+ IFS="${IFS:- }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+ for cf_dir in $MANPATH; do
+ test -z "$cf_dir" && cf_dir=/usr/man
+ for cf_name in $cf_dir/man*/$cf_example.[01]* $cf_dir/cat*/$cf_example.[01]* $cf_dir/man*/$cf_example $cf_dir/cat*/$cf_example
+ do
+ cf_test=`echo $cf_name | sed -e 's/*//'`
+ if test "x$cf_test" = "x$cf_name" ; then
+
+ case "$cf_name" in
+ (*.gz) MANPAGE_FORMAT="$MANPAGE_FORMAT gzip";;
+ (*.Z) MANPAGE_FORMAT="$MANPAGE_FORMAT compress";;
+ (*.0) MANPAGE_FORMAT="$MANPAGE_FORMAT BSDI";;
+ (*) MANPAGE_FORMAT="$MANPAGE_FORMAT normal";;
+ esac
- case "$cf_name" in
- $cf_dir/man*)
- cf_catonly=no
- ;;
- $cf_dir/cat*)
- cf_preform=yes
- ;;
- esac
- break
- fi
+ case "$cf_name" in
+ ($cf_dir/man*)
+ cf_catonly=no
+ ;;
+ ($cf_dir/cat*)
+ cf_preform=yes
+ ;;
+ esac
+ break
+ fi
- # if we found a match in either man* or cat*, stop looking
- if test -n "$MANPAGE_FORMAT" ; then
- cf_found=no
- test "$cf_preform" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT formatted"
- test "$cf_catonly" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT catonly"
- case "$cf_name" in
- $cf_dir/cat*)
- cf_found=yes
- ;;
+ # if we found a match in either man* or cat*, stop looking
+ if test -n "$MANPAGE_FORMAT" ; then
+ cf_found=no
+ test "$cf_preform" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT formatted"
+ test "$cf_catonly" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT catonly"
+ case "$cf_name" in
+ ($cf_dir/cat*)
+ cf_found=yes
+ ;;
+ esac
+ test $cf_found=yes && break
+ fi
+ done
+ # only check the first directory in $MANPATH where we find manpages
+ if test -n "$MANPAGE_FORMAT" ; then
+ break
+ fi
+ done
+ # if we did not find the example, just assume it is normal
+ test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=normal
+ IFS="$ac_save_ifs"
+ ;;
+(*)
+ for cf_option in $MANPAGE_FORMAT; do
+ case $cf_option in
+ (gzip|compress|BSDI|normal|formatted|catonly)
+ ;;
+ (*)
+ cf_unknown="$cf_unknown $cf_option"
+ ;;
esac
- test $cf_found=yes && break
- fi
- done
- # only check the first directory in $MANPATH where we find manpages
- if test -n "$MANPAGE_FORMAT" ; then
- break
- fi
- done
- # if we did not find the example, just assume it is normal
- test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=normal
- IFS="$ac_save_ifs"
- ;;
-*)
- for cf_option in $MANPAGE_FORMAT; do
- case $cf_option in #(vi
- gzip|compress|BSDI|normal|formatted|catonly)
- ;;
- *)
- cf_unknown="$cf_unknown $cf_option"
- ;;
- esac
- done
- ;;
+ done
+ ;;
esac
-echo "$as_me:10480: result: $MANPAGE_FORMAT" >&5
+echo "$as_me:13810: result: $MANPAGE_FORMAT" >&5
echo "${ECHO_T}$MANPAGE_FORMAT" >&6
if test -n "$cf_unknown" ; then
- { echo "$as_me:10483: WARNING: Unexpected manpage-format $cf_unknown" >&5
+ { echo "$as_me:13813: WARNING: Unexpected manpage-format $cf_unknown" >&5
echo "$as_me: WARNING: Unexpected manpage-format $cf_unknown" >&2;}
fi
-echo "$as_me:10487: checking for manpage renaming" >&5
+echo "$as_me:13817: checking for manpage renaming" >&5
echo $ECHO_N "checking for manpage renaming... $ECHO_C" >&6
# Check whether --with-manpage-renames or --without-manpage-renames was given.
@@ -10495,41 +13825,41 @@ else
MANPAGE_RENAMES=yes
fi;
-case ".$MANPAGE_RENAMES" in #(vi
-.no) #(vi
- ;;
-.|.yes)
- # Debian 'man' program?
- if test -f /etc/debian_version ; then
- MANPAGE_RENAMES=`cd $srcdir && pwd`/man/man_db.renames
- else
- MANPAGE_RENAMES=no
- fi
- ;;
+case ".$MANPAGE_RENAMES" in
+(.no)
+ ;;
+(.|.yes)
+ # Debian 'man' program?
+ if test -f /etc/debian_version ; then
+ MANPAGE_RENAMES=`cd $srcdir && pwd`/man/man_db.renames
+ else
+ MANPAGE_RENAMES=no
+ fi
+ ;;
esac
if test "$MANPAGE_RENAMES" != no ; then
- if test -f $srcdir/man/$MANPAGE_RENAMES ; then
- MANPAGE_RENAMES=`cd $srcdir/man && pwd`/$MANPAGE_RENAMES
- elif test ! -f $MANPAGE_RENAMES ; then
- { { echo "$as_me:10515: error: not a filename: $MANPAGE_RENAMES" >&5
+ if test -f $srcdir/man/$MANPAGE_RENAMES ; then
+ MANPAGE_RENAMES=`cd $srcdir/man && pwd`/$MANPAGE_RENAMES
+ elif test ! -f $MANPAGE_RENAMES ; then
+ { { echo "$as_me:13845: error: not a filename: $MANPAGE_RENAMES" >&5
echo "$as_me: error: not a filename: $MANPAGE_RENAMES" >&2;}
{ (exit 1); exit 1; }; }
- fi
+ fi
- test ! -d man && mkdir man
+ test ! -d man && mkdir man
- # Construct a sed-script to perform renaming within man-pages
- if test -n "$MANPAGE_RENAMES" ; then
- test ! -d man && mkdir man
- sh $srcdir/man/make_sed.sh $MANPAGE_RENAMES >./edit_man.sed
- fi
+ # Construct a sed-script to perform renaming within man-pages
+ if test -n "$MANPAGE_RENAMES" ; then
+ test ! -d man && mkdir man
+ $SHELL $srcdir/man/make_sed.sh $MANPAGE_RENAMES >./edit_man.sed
+ fi
fi
-echo "$as_me:10529: result: $MANPAGE_RENAMES" >&5
+echo "$as_me:13859: result: $MANPAGE_RENAMES" >&5
echo "${ECHO_T}$MANPAGE_RENAMES" >&6
-echo "$as_me:10532: checking if manpage aliases will be installed" >&5
+echo "$as_me:13862: checking if manpage aliases will be installed" >&5
echo $ECHO_N "checking if manpage aliases will be installed... $ECHO_C" >&6
# Check whether --with-manpage-aliases or --without-manpage-aliases was given.
@@ -10540,21 +13870,21 @@ else
MANPAGE_ALIASES=yes
fi;
-echo "$as_me:10543: result: $MANPAGE_ALIASES" >&5
+echo "$as_me:13873: result: $MANPAGE_ALIASES" >&5
echo "${ECHO_T}$MANPAGE_ALIASES" >&6
-case "x$LN_S" in #(vi
-xln*) #(vi
+case "x$LN_S" in
+(xln*)
cf_use_symlinks=yes
;;
-*)
+(*)
cf_use_symlinks=no
;;
esac
MANPAGE_SYMLINKS=no
if test "$MANPAGE_ALIASES" = yes ; then
-echo "$as_me:10557: checking if manpage symlinks should be used" >&5
+echo "$as_me:13887: checking if manpage symlinks should be used" >&5
echo $ECHO_N "checking if manpage symlinks should be used... $ECHO_C" >&6
# Check whether --with-manpage-symlinks or --without-manpage-symlinks was given.
@@ -10567,17 +13897,17 @@ fi;
if test "$$cf_use_symlinks" = no; then
if test "$MANPAGE_SYMLINKS" = yes ; then
- { echo "$as_me:10570: WARNING: cannot make symlinks" >&5
+ { echo "$as_me:13900: WARNING: cannot make symlinks" >&5
echo "$as_me: WARNING: cannot make symlinks" >&2;}
MANPAGE_SYMLINKS=no
fi
fi
-echo "$as_me:10576: result: $MANPAGE_SYMLINKS" >&5
+echo "$as_me:13906: result: $MANPAGE_SYMLINKS" >&5
echo "${ECHO_T}$MANPAGE_SYMLINKS" >&6
fi
-echo "$as_me:10580: checking for manpage tbl" >&5
+echo "$as_me:13910: checking for manpage tbl" >&5
echo $ECHO_N "checking for manpage tbl... $ECHO_C" >&6
# Check whether --with-manpage-tbl or --without-manpage-tbl was given.
@@ -10588,50 +13918,50 @@ else
MANPAGE_TBL=no
fi;
-echo "$as_me:10591: result: $MANPAGE_TBL" >&5
+echo "$as_me:13921: result: $MANPAGE_TBL" >&5
echo "${ECHO_T}$MANPAGE_TBL" >&6
- if test "$prefix" = "NONE" ; then
- cf_prefix="$ac_default_prefix"
- else
- cf_prefix="$prefix"
- fi
+if test "$prefix" = "NONE" ; then
+ cf_prefix="$ac_default_prefix"
+else
+ cf_prefix="$prefix"
+fi
- case "$MANPAGE_FORMAT" in # (vi
- *catonly*) # (vi
- cf_format=yes
- cf_inboth=no
- ;;
- *formatted*) # (vi
- cf_format=yes
- cf_inboth=yes
- ;;
- *)
- cf_format=no
- cf_inboth=no
- ;;
- esac
+case "$MANPAGE_FORMAT" in
+(*catonly*)
+ cf_format=yes
+ cf_inboth=no
+ ;;
+(*formatted*)
+ cf_format=yes
+ cf_inboth=yes
+ ;;
+(*)
+ cf_format=no
+ cf_inboth=no
+ ;;
+esac
test ! -d man && mkdir man
cf_so_strip=
cf_compress=
-case "$MANPAGE_FORMAT" in #(vi
-*compress*) #(vi
+case "$MANPAGE_FORMAT" in
+(*compress*)
cf_so_strip="Z"
cf_compress=compress
- ;;
-*gzip*)
+ ;;
+(*gzip*)
cf_so_strip="gz"
cf_compress=gzip
- ;;
+ ;;
esac
cf_edit_man=./edit_man.sh
cf_man_alias=`pwd`/man_alias.sed
cat >$cf_edit_man <<CF_EOF
-#! /bin/sh
+#! $SHELL
# this script is generated by the configure-script CF_MAN_PAGES macro.
prefix="$cf_prefix"
@@ -10651,7 +13981,7 @@ INSTALL_DATA="$INSTALL_DATA"
transform="$program_transform_name"
TMP=\${TMPDIR:=/tmp}/man\$\$
-trap "rm -f \$TMP" 0 1 2 5 15
+trap "rm -f \$TMP" 0 1 2 3 15
form=\$1
shift || exit 1
@@ -10669,7 +13999,7 @@ shift || exit 1
if test "\$form" = normal ; then
if test "$cf_format" = yes ; then
if test "$cf_inboth" = no ; then
- sh \$0 format \$verb \$mandir \$srcdir \$*
+ $SHELL \$0 format \$verb \$mandir \$srcdir \$*
exit $?
fi
fi
@@ -10682,9 +14012,9 @@ fi
# process the list of source-files
for i in \$* ; do
-case \$i in #(vi
-*.orig|*.rej) ;; #(vi
-*.[0-9]*)
+case \$i in
+(*.orig|*.rej) ;;
+(*.[0-9]*)
section=\`expr "\$i" : '.*\\.\\([0-9]\\)[xm]*'\`;
if test \$verb = installing ; then
if test ! -d \$cf_subdir\${section} ; then
@@ -10704,7 +14034,7 @@ cat >>$cf_man_alias <<-CF_EOF2
s,@NCURSES_OSPEED@,\${NCURSES_OSPEED:="no default value"},g
CF_EOF
- for cf_name in captoinfo clear infocmp infotocap tabs tic toe tput tset
+ for cf_name in captoinfo clear infocmp infotocap reset tabs tic toe tput tset
do
cf_NAME=`echo "$cf_name" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
cf_name=`echo $cf_name|sed "$program_transform_name"`
@@ -10811,8 +14141,8 @@ cat >>$cf_edit_man <<CF_EOF
CF_EOF
fi
-case "$MANPAGE_FORMAT" in #(vi
-*BSDI*)
+case "$MANPAGE_FORMAT" in
+(*BSDI*)
cat >>$cf_edit_man <<CF_EOF
if test \$form = format ; then
# BSDI installs only .0 suffixes in the cat directories
@@ -10848,13 +14178,13 @@ cat >>$cf_edit_man <<CF_EOF
fi
echo .. \$verb alias \$cf_alias\${suffix}
CF_EOF
-case "x$LN_S" in #(vi
-*-f) #(vi
+case "x$LN_S" in
+(*-f)
cat >>$cf_edit_man <<CF_EOF
$LN_S \$cf_target \$cf_alias\${suffix}
CF_EOF
;;
-*)
+(*)
cat >>$cf_edit_man <<CF_EOF
rm -f \$cf_alias\${suffix}
$LN_S \$cf_target \$cf_alias\${suffix}
@@ -10910,7 +14240,7 @@ done
if test $cf_inboth = yes ; then
if test \$form != format ; then
- sh \$0 format \$verb \$mandir \$srcdir \$*
+ $SHELL \$0 format \$verb \$mandir \$srcdir \$*
fi
fi
@@ -10921,7 +14251,7 @@ chmod 755 $cf_edit_man
###############################################################################
### Note that some functions (such as const) are normally disabled anyway.
-echo "$as_me:10924: checking if you want to build with function extensions" >&5
+echo "$as_me:14254: checking if you want to build with function extensions" >&5
echo $ECHO_N "checking if you want to build with function extensions... $ECHO_C" >&6
# Check whether --enable-ext-funcs or --disable-ext-funcs was given.
@@ -10931,12 +14261,16 @@ if test "${enable_ext_funcs+set}" = set; then
else
with_ext_funcs=yes
fi;
-echo "$as_me:10934: result: $with_ext_funcs" >&5
+echo "$as_me:14264: result: $with_ext_funcs" >&5
echo "${ECHO_T}$with_ext_funcs" >&6
if test "x$with_ext_funcs" = xyes ; then
NCURSES_EXT_FUNCS=1
cat >>confdefs.h <<\EOF
+#define NCURSES_EXT_FUNCS 1
+EOF
+
+cat >>confdefs.h <<\EOF
#define HAVE_ASSUME_DEFAULT_COLORS 1
EOF
@@ -10965,38 +14299,39 @@ cat >>confdefs.h <<\EOF
EOF
cat >>confdefs.h <<\EOF
-#define HAVE_USE_SCREEN 1
+#define HAVE_USE_EXTENDED_NAMES 1
EOF
cat >>confdefs.h <<\EOF
-#define HAVE_USE_WINDOW 1
+#define HAVE_USE_SCREEN 1
EOF
cat >>confdefs.h <<\EOF
-#define HAVE_WRESIZE 1
+#define HAVE_USE_WINDOW 1
EOF
cat >>confdefs.h <<\EOF
-#define NCURSES_EXT_FUNCS 1
+#define HAVE_WRESIZE 1
EOF
GENERATED_EXT_FUNCS=generated
+ test "x$with_ext_funcs" = xyes || cf_dft_ext_spfuncs=no
else
NCURSES_EXT_FUNCS=0
GENERATED_EXT_FUNCS=
fi
-echo "$as_me:10989: checking if you want to build with experimental SCREEN extensions" >&5
-echo $ECHO_N "checking if you want to build with experimental SCREEN extensions... $ECHO_C" >&6
+echo "$as_me:14324: checking if you want to build with SCREEN extensions" >&5
+echo $ECHO_N "checking if you want to build with SCREEN extensions... $ECHO_C" >&6
# Check whether --enable-sp-funcs or --disable-sp-funcs was given.
if test "${enable_sp_funcs+set}" = set; then
enableval="$enable_sp_funcs"
with_sp_funcs=$enableval
else
- with_sp_funcs=no
+ with_sp_funcs=$cf_dft_ext_spfuncs
fi;
-echo "$as_me:10999: result: $with_sp_funcs" >&5
+echo "$as_me:14334: result: $with_sp_funcs" >&5
echo "${ECHO_T}$with_sp_funcs" >&6
if test "x$with_sp_funcs" = xyes ; then
NCURSES_SP_FUNCS=1
@@ -11005,14 +14340,18 @@ cat >>confdefs.h <<\EOF
#define NCURSES_SP_FUNCS 1
EOF
+cat >>confdefs.h <<\EOF
+#define HAVE_TPUTS_SP 1
+EOF
+
GENERATED_SP_FUNCS=generated
else
NCURSES_SP_FUNCS=0
GENERATED_SP_FUNCS=
fi
-echo "$as_me:11014: checking if you want to build with experimental terminal-driver" >&5
-echo $ECHO_N "checking if you want to build with experimental terminal-driver... $ECHO_C" >&6
+echo "$as_me:14353: checking if you want to build with terminal-driver" >&5
+echo $ECHO_N "checking if you want to build with terminal-driver... $ECHO_C" >&6
# Check whether --enable-term-driver or --disable-term-driver was given.
if test "${enable_term_driver+set}" = set; then
@@ -11021,7 +14360,7 @@ if test "${enable_term_driver+set}" = set; then
else
with_term_driver=no
fi;
-echo "$as_me:11024: result: $with_term_driver" >&5
+echo "$as_me:14363: result: $with_term_driver" >&5
echo "${ECHO_T}$with_term_driver" >&6
if test "x$with_term_driver" = xyes ; then
@@ -11029,15 +14368,20 @@ cat >>confdefs.h <<\EOF
#define USE_TERM_DRIVER 1
EOF
+ if test "x$with_termlib" != xno ; then
+ { { echo "$as_me:14372: error: The term-driver option conflicts with the termlib option" >&5
+echo "$as_me: error: The term-driver option conflicts with the termlib option" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
if test "x$with_sp_funcs" != xyes ; then
- { { echo "$as_me:11033: error: The term-driver option relies upon sp-funcs" >&5
+ { { echo "$as_me:14377: error: The term-driver option relies upon sp-funcs" >&5
echo "$as_me: error: The term-driver option relies upon sp-funcs" >&2;}
{ (exit 1); exit 1; }; }
fi
fi
### use option --enable-const to turn on use of const beyond that in XSI.
-echo "$as_me:11040: checking for extended use of const keyword" >&5
+echo "$as_me:14384: checking for extended use of const keyword" >&5
echo $ECHO_N "checking for extended use of const keyword... $ECHO_C" >&6
# Check whether --enable-const or --disable-const was given.
@@ -11045,9 +14389,9 @@ if test "${enable_const+set}" = set; then
enableval="$enable_const"
with_ext_const=$enableval
else
- with_ext_const=no
+ with_ext_const=$cf_dft_ext_const
fi;
-echo "$as_me:11050: result: $with_ext_const" >&5
+echo "$as_me:14394: result: $with_ext_const" >&5
echo "${ECHO_T}$with_ext_const" >&6
NCURSES_CONST='/*nothing*/'
if test "x$with_ext_const" = xyes ; then
@@ -11055,7 +14399,7 @@ if test "x$with_ext_const" = xyes ; then
fi
### use option --enable-ext-colors to turn on use of colors beyond 16.
-echo "$as_me:11058: checking if you want to use extended colors" >&5
+echo "$as_me:14402: checking if you want to use extended colors" >&5
echo $ECHO_N "checking if you want to use extended colors... $ECHO_C" >&6
# Check whether --enable-ext-colors or --disable-ext-colors was given.
@@ -11063,41 +14407,52 @@ if test "${enable_ext_colors+set}" = set; then
enableval="$enable_ext_colors"
with_ext_colors=$enableval
else
- with_ext_colors=no
+ with_ext_colors=$cf_dft_ext_colors
fi;
-echo "$as_me:11068: result: $with_ext_colors" >&5
+echo "$as_me:14412: result: $with_ext_colors" >&5
echo "${ECHO_T}$with_ext_colors" >&6
NCURSES_EXT_COLORS=0
if test "x$with_ext_colors" = xyes ; then
if test "x$with_widec" != xyes ; then
- { { echo "$as_me:11073: error: This option applies only to wide-character library" >&5
-echo "$as_me: error: This option applies only to wide-character library" >&2;}
- { (exit 1); exit 1; }; }
+ { echo "$as_me:14417: WARNING: This option applies only to wide-character library" >&5
+echo "$as_me: WARNING: This option applies only to wide-character library" >&2;}
else
# cannot be ABI 5 since it changes sizeof(cchar_t)
if test "${with_abi_version+set}" != set; then
case $cf_cv_rel_version in
- 5.*)
+ (5.*)
cf_cv_rel_version=6.0
cf_cv_abi_version=6
- { echo "$as_me:11084: WARNING: Overriding ABI version to $cf_cv_abi_version" >&5
-echo "$as_me: WARNING: Overriding ABI version to $cf_cv_abi_version" >&2;}
+ { echo "$as_me:14427: WARNING: overriding ABI version to $cf_cv_abi_version" >&5
+echo "$as_me: WARNING: overriding ABI version to $cf_cv_abi_version" >&2;}
;;
esac
fi
- fi
- NCURSES_EXT_COLORS=1
+ NCURSES_EXT_COLORS=1
cat >>confdefs.h <<\EOF
#define NCURSES_EXT_COLORS 1
EOF
+cat >>confdefs.h <<\EOF
+#define HAVE_ALLOC_PAIR 1
+EOF
+
+cat >>confdefs.h <<\EOF
+#define HAVE_INIT_EXTENDED_COLOR 1
+EOF
+
+cat >>confdefs.h <<\EOF
+#define HAVE_RESET_COLOR_PAIRS 1
+EOF
+
+ fi
fi
### use option --enable-ext-mouse to modify coding to support 5-button mice
-echo "$as_me:11100: checking if you want to use extended mouse encoding" >&5
+echo "$as_me:14455: checking if you want to use extended mouse encoding" >&5
echo $ECHO_N "checking if you want to use extended mouse encoding... $ECHO_C" >&6
# Check whether --enable-ext-mouse or --disable-ext-mouse was given.
@@ -11105,9 +14460,9 @@ if test "${enable_ext_mouse+set}" = set; then
enableval="$enable_ext_mouse"
with_ext_mouse=$enableval
else
- with_ext_mouse=no
+ with_ext_mouse=$cf_dft_ext_mouse
fi;
-echo "$as_me:11110: result: $with_ext_mouse" >&5
+echo "$as_me:14465: result: $with_ext_mouse" >&5
echo "${ECHO_T}$with_ext_mouse" >&6
NCURSES_MOUSE_VERSION=1
if test "x$with_ext_mouse" = xyes ; then
@@ -11115,18 +14470,39 @@ if test "x$with_ext_mouse" = xyes ; then
if test "${with_abi_version+set}" != set; then
case $cf_cv_rel_version in
- 5.*)
+ (5.*)
cf_cv_rel_version=6.0
cf_cv_abi_version=6
- { echo "$as_me:11121: WARNING: Overriding ABI version to $cf_cv_abi_version" >&5
-echo "$as_me: WARNING: Overriding ABI version to $cf_cv_abi_version" >&2;}
+ { echo "$as_me:14476: WARNING: overriding ABI version to $cf_cv_abi_version" >&5
+echo "$as_me: WARNING: overriding ABI version to $cf_cv_abi_version" >&2;}
;;
esac
fi
fi
-echo "$as_me:11129: checking if you want \$NCURSES_NO_PADDING code" >&5
+### use option --enable-ext-putwin to turn on extended screendumps
+echo "$as_me:14485: checking if you want to use extended putwin/screendump" >&5
+echo $ECHO_N "checking if you want to use extended putwin/screendump... $ECHO_C" >&6
+
+# Check whether --enable-ext-putwin or --disable-ext-putwin was given.
+if test "${enable_ext_putwin+set}" = set; then
+ enableval="$enable_ext_putwin"
+ with_ext_putwin=$enableval
+else
+ with_ext_putwin=$cf_dft_ext_putwin
+fi;
+echo "$as_me:14495: result: $with_ext_putwin" >&5
+echo "${ECHO_T}$with_ext_putwin" >&6
+if test "x$with_ext_putwin" = xyes ; then
+
+cat >>confdefs.h <<\EOF
+#define NCURSES_EXT_PUTWIN 1
+EOF
+
+fi
+
+echo "$as_me:14505: checking if you want \$NCURSES_NO_PADDING code" >&5
echo $ECHO_N "checking if you want \$NCURSES_NO_PADDING code... $ECHO_C" >&6
# Check whether --enable-no-padding or --disable-no-padding was given.
@@ -11136,456 +14512,15 @@ if test "${enable_no_padding+set}" = set; then
else
with_no_padding=$with_ext_funcs
fi;
-echo "$as_me:11139: result: $with_no_padding" >&5
+echo "$as_me:14515: result: $with_no_padding" >&5
echo "${ECHO_T}$with_no_padding" >&6
test "x$with_no_padding" = xyes &&
cat >>confdefs.h <<\EOF
#define NCURSES_NO_PADDING 1
EOF
-echo "$as_me:11146: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 11152 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-_ACEOF
-if { (eval echo "$as_me:11160: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:11166: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_cv_header_stdc=yes
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_header_stdc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-#line 11188 "configure"
-#include "confdefs.h"
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "memchr" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -rf conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-#line 11206 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "free" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -rf conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then
- :
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 11227 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- $ac_main_return(2);
- $ac_main_return (0);
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:11253: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11256: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:11258: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11261: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_header_stdc=no
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-fi
-echo "$as_me:11274: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:11290: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 11296 "configure"
-#include "confdefs.h"
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:11302: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:11305: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:11308: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11311: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:11321: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-echo "$as_me:11331: checking for signed char" >&5
-echo $ECHO_N "checking for signed char... $ECHO_C" >&6
-if test "${ac_cv_type_signed_char+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 11337 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-if ((signed char *) 0)
- return 0;
-if (sizeof (signed char))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:11352: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:11355: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:11358: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11361: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_type_signed_char=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_type_signed_char=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:11371: result: $ac_cv_type_signed_char" >&5
-echo "${ECHO_T}$ac_cv_type_signed_char" >&6
-
-echo "$as_me:11374: checking size of signed char" >&5
-echo $ECHO_N "checking size of signed char... $ECHO_C" >&6
-if test "${ac_cv_sizeof_signed_char+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test "$ac_cv_type_signed_char" = yes; then
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-#line 11383 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (signed char)) >= 0)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:11395: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:11398: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:11401: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11404: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=0 ac_mid=0
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-#line 11409 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:11421: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:11424: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:11427: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11430: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1`
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- done
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_hi=-1 ac_mid=-1
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-#line 11446 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (signed char)) >= $ac_mid)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:11458: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:11461: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:11464: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11467: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_lo=$ac_mid; break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid`
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- done
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
- cat >conftest.$ac_ext <<_ACEOF
-#line 11483 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)]
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:11495: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:11498: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:11501: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11504: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_hi=$ac_mid
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_lo=`expr $ac_mid + 1`
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-done
-ac_cv_sizeof_signed_char=$ac_lo
-else
- if test "$cross_compiling" = yes; then
- { { echo "$as_me:11517: error: cannot run test program while cross compiling" >&5
-echo "$as_me: error: cannot run test program while cross compiling" >&2;}
- { (exit 1); exit 1; }; }
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 11522 "configure"
-#include "confdefs.h"
-$ac_includes_default
-int
-main ()
-{
-FILE *f = fopen ("conftest.val", "w");
-if (!f)
- $ac_main_return (1);
-fprintf (f, "%d", (sizeof (signed char)));
-fclose (f);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:11538: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:11541: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:11543: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:11546: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_sizeof_signed_char=`cat conftest.val`
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
- ac_cv_sizeof_signed_char=0
-fi
-fi
-echo "$as_me:11562: result: $ac_cv_sizeof_signed_char" >&5
-echo "${ECHO_T}$ac_cv_sizeof_signed_char" >&6
-cat >>confdefs.h <<EOF
-#define SIZEOF_SIGNED_CHAR $ac_cv_sizeof_signed_char
-EOF
-
-if test "$ac_cv_sizeof_signed_char" = 1 ; then
- NCURSES_SBOOL="signed char"
-else
- NCURSES_SBOOL="char"
-fi
-echo "$as_me:11573: checking if you want to use signed Boolean array in term.h" >&5
-echo $ECHO_N "checking if you want to use signed Boolean array in term.h... $ECHO_C" >&6
-
-# Check whether --enable-signed-char or --disable-signed-char was given.
-if test "${enable_signed_char+set}" = set; then
- enableval="$enable_signed_char"
- with_signed_char=$enableval
-else
- with_signed_char=no
-fi;
-echo "$as_me:11583: result: $with_signed_char" >&5
-echo "${ECHO_T}$with_signed_char" >&6
-test "x$with_signed_char" != xyes && NCURSES_SBOOL="char"
-
### use option --enable-sigwinch to turn on use of SIGWINCH logic
-echo "$as_me:11588: checking if you want SIGWINCH handler" >&5
+echo "$as_me:14523: checking if you want SIGWINCH handler" >&5
echo $ECHO_N "checking if you want SIGWINCH handler... $ECHO_C" >&6
# Check whether --enable-sigwinch or --disable-sigwinch was given.
@@ -11595,7 +14530,7 @@ if test "${enable_sigwinch+set}" = set; then
else
with_sigwinch=$with_ext_funcs
fi;
-echo "$as_me:11598: result: $with_sigwinch" >&5
+echo "$as_me:14533: result: $with_sigwinch" >&5
echo "${ECHO_T}$with_sigwinch" >&6
test "x$with_sigwinch" = xyes &&
cat >>confdefs.h <<\EOF
@@ -11603,7 +14538,7 @@ cat >>confdefs.h <<\EOF
EOF
### use option --enable-tcap-names to allow user to define new capabilities
-echo "$as_me:11606: checking if you want user-definable terminal capabilities like termcap" >&5
+echo "$as_me:14541: checking if you want user-definable terminal capabilities like termcap" >&5
echo $ECHO_N "checking if you want user-definable terminal capabilities like termcap... $ECHO_C" >&6
# Check whether --enable-tcap-names or --disable-tcap-names was given.
@@ -11613,140 +14548,14 @@ if test "${enable_tcap_names+set}" = set; then
else
with_tcap_names=$with_ext_funcs
fi;
-echo "$as_me:11616: result: $with_tcap_names" >&5
+echo "$as_me:14551: result: $with_tcap_names" >&5
echo "${ECHO_T}$with_tcap_names" >&6
NCURSES_XNAMES=0
test "x$with_tcap_names" = xyes && NCURSES_XNAMES=1
-###############################################################################
-# These options are relatively safe to experiment with.
-
-echo "$as_me:11624: checking if you want all development code" >&5
-echo $ECHO_N "checking if you want all development code... $ECHO_C" >&6
-
-# Check whether --with-develop or --without-develop was given.
-if test "${with_develop+set}" = set; then
- withval="$with_develop"
- with_develop=$withval
-else
- with_develop=no
-fi;
-echo "$as_me:11634: result: $with_develop" >&5
-echo "${ECHO_T}$with_develop" >&6
-
-### use option --enable-hard-tabs to turn on use of hard-tabs optimize
-echo "$as_me:11638: checking if you want hard-tabs code" >&5
-echo $ECHO_N "checking if you want hard-tabs code... $ECHO_C" >&6
-
-# Check whether --enable-hard-tabs or --disable-hard-tabs was given.
-if test "${enable_hard_tabs+set}" = set; then
- enableval="$enable_hard_tabs"
-
-else
- enable_hard_tabs=$with_develop
-fi;
-echo "$as_me:11648: result: $enable_hard_tabs" >&5
-echo "${ECHO_T}$enable_hard_tabs" >&6
-test "x$enable_hard_tabs" = xyes &&
-cat >>confdefs.h <<\EOF
-#define USE_HARD_TABS 1
-EOF
-
-### use option --enable-xmc-glitch to turn on use of magic-cookie optimize
-echo "$as_me:11656: checking if you want limited support for xmc" >&5
-echo $ECHO_N "checking if you want limited support for xmc... $ECHO_C" >&6
-
-# Check whether --enable-xmc-glitch or --disable-xmc-glitch was given.
-if test "${enable_xmc_glitch+set}" = set; then
- enableval="$enable_xmc_glitch"
-
-else
- enable_xmc_glitch=$with_develop
-fi;
-echo "$as_me:11666: result: $enable_xmc_glitch" >&5
-echo "${ECHO_T}$enable_xmc_glitch" >&6
-test "x$enable_xmc_glitch" = xyes &&
-cat >>confdefs.h <<\EOF
-#define USE_XMC_SUPPORT 1
-EOF
-
-###############################################################################
-# These are just experimental, probably should not be in a package:
-
-echo "$as_me:11676: checking if you do not want to assume colors are white-on-black" >&5
-echo $ECHO_N "checking if you do not want to assume colors are white-on-black... $ECHO_C" >&6
-
-# Check whether --enable-assumed-color or --disable-assumed-color was given.
-if test "${enable_assumed_color+set}" = set; then
- enableval="$enable_assumed_color"
- with_assumed_color=$enableval
-else
- with_assumed_color=yes
-fi;
-echo "$as_me:11686: result: $with_assumed_color" >&5
-echo "${ECHO_T}$with_assumed_color" >&6
-test "x$with_assumed_color" = xyes &&
-cat >>confdefs.h <<\EOF
-#define USE_ASSUMED_COLOR 1
-EOF
-
-### use option --enable-hashmap to turn on use of hashmap scrolling logic
-echo "$as_me:11694: checking if you want hashmap scrolling-optimization code" >&5
-echo $ECHO_N "checking if you want hashmap scrolling-optimization code... $ECHO_C" >&6
-
-# 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 "$as_me:11704: result: $with_hashmap" >&5
-echo "${ECHO_T}$with_hashmap" >&6
-test "x$with_hashmap" = xyes &&
-cat >>confdefs.h <<\EOF
-#define USE_HASHMAP 1
-EOF
-
-### use option --enable-colorfgbg to turn on use of $COLORFGBG environment
-echo "$as_me:11712: checking if you want colorfgbg code" >&5
-echo $ECHO_N "checking if you want colorfgbg code... $ECHO_C" >&6
-
-# Check whether --enable-colorfgbg or --disable-colorfgbg was given.
-if test "${enable_colorfgbg+set}" = set; then
- enableval="$enable_colorfgbg"
- with_colorfgbg=$enableval
-else
- with_colorfgbg=no
-fi;
-echo "$as_me:11722: result: $with_colorfgbg" >&5
-echo "${ECHO_T}$with_colorfgbg" >&6
-test "x$with_colorfgbg" = xyes &&
-cat >>confdefs.h <<\EOF
-#define USE_COLORFGBG 1
-EOF
-
-### use option --enable-interop to turn on use of bindings used for interop
-echo "$as_me:11730: checking if you want interop bindings" >&5
-echo $ECHO_N "checking if you want interop bindings... $ECHO_C" >&6
+##############################################################################
-# Check whether --enable-interop or --disable-interop was given.
-if test "${enable_interop+set}" = set; then
- enableval="$enable_interop"
- with_exp_interop=$enableval
-else
- with_exp_interop=no
-fi;
-echo "$as_me:11740: result: $with_exp_interop" >&5
-echo "${ECHO_T}$with_exp_interop" >&6
-
-NCURSES_INTEROP_FUNCS=0
-test "x$with_exp_interop" = xyes && NCURSES_INTEROP_FUNCS=1
-
-# This is still experimental (20080329), but should ultimately be moved to
-# the script-block --with-normal, etc.
-
-echo "$as_me:11749: checking if you want to link with the pthread library" >&5
+echo "$as_me:14558: checking if you want to link with the pthread library" >&5
echo $ECHO_N "checking if you want to link with the pthread library... $ECHO_C" >&6
# Check whether --with-pthread or --without-pthread was given.
@@ -11756,27 +14565,27 @@ if test "${with_pthread+set}" = set; then
else
with_pthread=no
fi;
-echo "$as_me:11759: result: $with_pthread" >&5
+echo "$as_me:14568: result: $with_pthread" >&5
echo "${ECHO_T}$with_pthread" >&6
if test "$with_pthread" != no ; then
- echo "$as_me:11763: checking for pthread.h" >&5
+ echo "$as_me:14572: checking for pthread.h" >&5
echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6
if test "${ac_cv_header_pthread_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 11769 "configure"
+#line 14578 "configure"
#include "confdefs.h"
#include <pthread.h>
_ACEOF
-if { (eval echo "$as_me:11773: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:14582: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:11779: \$? = $ac_status" >&5
+ echo "$as_me:14588: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -11795,7 +14604,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:11798: result: $ac_cv_header_pthread_h" >&5
+echo "$as_me:14607: result: $ac_cv_header_pthread_h" >&5
echo "${ECHO_T}$ac_cv_header_pthread_h" >&6
if test $ac_cv_header_pthread_h = yes; then
@@ -11805,18 +14614,34 @@ EOF
for cf_lib_pthread in pthread c_r
do
- echo "$as_me:11808: checking if we can link with the $cf_lib_pthread library" >&5
+ echo "$as_me:14617: checking if we can link with the $cf_lib_pthread library" >&5
echo $ECHO_N "checking if we can link with the $cf_lib_pthread library... $ECHO_C" >&6
cf_save_LIBS="$LIBS"
- LIBS="-l$cf_lib_pthread $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_lib_pthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 11813 "configure"
+#line 14638 "configure"
#include "confdefs.h"
#include <pthread.h>
int
-main ()
+main (void)
{
int rc = pthread_create(0,0,0,0);
@@ -11827,16 +14652,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11830: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14655: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11833: \$? = $ac_status" >&5
+ echo "$as_me:14658: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11836: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14661: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11839: \$? = $ac_status" >&5
+ echo "$as_me:14664: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
with_pthread=yes
else
@@ -11846,20 +14671,35 @@ with_pthread=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS="$cf_save_LIBS"
- echo "$as_me:11849: result: $with_pthread" >&5
+ echo "$as_me:14674: result: $with_pthread" >&5
echo "${ECHO_T}$with_pthread" >&6
test "$with_pthread" = yes && break
done
if test "$with_pthread" = yes ; then
- LIBS="-l$cf_lib_pthread $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_lib_pthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
cat >>confdefs.h <<\EOF
#define HAVE_LIBPTHREADS 1
EOF
else
- { { echo "$as_me:11862: error: Cannot link with pthread library" >&5
+ { { echo "$as_me:14702: error: Cannot link with pthread library" >&5
echo "$as_me: error: Cannot link with pthread library" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -11869,53 +14709,53 @@ fi
fi
if test "x$with_pthread" != xno; then
- echo "$as_me:11872: checking for pthread_kill" >&5
+ echo "$as_me:14712: checking for pthread_kill" >&5
echo $ECHO_N "checking for pthread_kill... $ECHO_C" >&6
if test "${ac_cv_func_pthread_kill+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 11878 "configure"
+#line 14718 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char pthread_kill (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define pthread_kill autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef pthread_kill
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char pthread_kill ();
-char (*f) ();
+char pthread_kill (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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_pthread_kill) || defined (__stub___pthread_kill)
-choke me
-#else
-f = pthread_kill; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for pthread_kill
#endif
+ return pthread_kill ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11909: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14749: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11912: \$? = $ac_status" >&5
+ echo "$as_me:14752: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11915: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14755: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11918: \$? = $ac_status" >&5
+ echo "$as_me:14758: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_pthread_kill=yes
else
@@ -11925,11 +14765,11 @@ ac_cv_func_pthread_kill=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:11928: result: $ac_cv_func_pthread_kill" >&5
+echo "$as_me:14768: result: $ac_cv_func_pthread_kill" >&5
echo "${ECHO_T}$ac_cv_func_pthread_kill" >&6
if test $ac_cv_func_pthread_kill = yes; then
- echo "$as_me:11932: checking if you want to allow EINTR in wgetch with pthreads" >&5
+ echo "$as_me:14772: checking if you want to allow EINTR in wgetch with pthreads" >&5
echo $ECHO_N "checking if you want to allow EINTR in wgetch with pthreads... $ECHO_C" >&6
# Check whether --enable-pthreads-eintr or --disable-pthreads-eintr was given.
@@ -11939,7 +14779,7 @@ if test "${enable_pthreads_eintr+set}" = set; then
else
use_pthreads_eintr=no
fi;
- echo "$as_me:11942: result: $use_pthreads_eintr" >&5
+ echo "$as_me:14782: result: $use_pthreads_eintr" >&5
echo "${ECHO_T}$use_pthreads_eintr" >&6
if test "x$use_pthreads_eintr" = xyes ; then
@@ -11950,7 +14790,7 @@ EOF
fi
fi
- echo "$as_me:11953: checking if you want to use weak-symbols for pthreads" >&5
+ echo "$as_me:14793: checking if you want to use weak-symbols for pthreads" >&5
echo $ECHO_N "checking if you want to use weak-symbols for pthreads... $ECHO_C" >&6
# Check whether --enable-weak-symbols or --disable-weak-symbols was given.
@@ -11960,23 +14800,23 @@ if test "${enable_weak_symbols+set}" = set; then
else
use_weak_symbols=no
fi;
- echo "$as_me:11963: result: $use_weak_symbols" >&5
+ echo "$as_me:14803: result: $use_weak_symbols" >&5
echo "${ECHO_T}$use_weak_symbols" >&6
if test "x$use_weak_symbols" = xyes ; then
-echo "$as_me:11967: checking if $CC supports weak symbols" >&5
+echo "$as_me:14807: checking if $CC supports weak symbols" >&5
echo $ECHO_N "checking if $CC supports weak symbols... $ECHO_C" >&6
if test "${cf_cv_weak_symbols+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 11974 "configure"
+#line 14814 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
#if defined(__GNUC__)
@@ -11997,16 +14837,16 @@ weak_symbol(fopen);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:12000: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14840: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12003: \$? = $ac_status" >&5
+ echo "$as_me:14843: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:12006: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14846: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12009: \$? = $ac_status" >&5
+ echo "$as_me:14849: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_weak_symbols=yes
else
@@ -12017,7 +14857,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:12020: result: $cf_cv_weak_symbols" >&5
+echo "$as_me:14860: result: $cf_cv_weak_symbols" >&5
echo "${ECHO_T}$cf_cv_weak_symbols" >&6
else
@@ -12040,18 +14880,35 @@ cat >>confdefs.h <<\EOF
#define USE_PTHREADS 1
EOF
- enable_reentrant=yes
- if test "x$cf_cv_weak_symbols" = xyes ; then
- PTHREAD=-lpthread
- fi
+ enable_reentrant=yes
+ if test "x$cf_cv_weak_symbols" = xyes ; then
+ PTHREAD=-lpthread
+
+cf_add_libs="$PRIVATE_LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lpthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+PRIVATE_LIBS="$cf_add_libs"
+
+ fi
fi
# Reentrant code has to be opaque; there's little advantage to making ncurses
# opaque outside of that, so there is no --enable-opaque option. We can use
# this option without --with-pthreads, but this will be always set for
# pthreads.
-echo "$as_me:12053: checking if you want experimental reentrant code" >&5
-echo $ECHO_N "checking if you want experimental reentrant code... $ECHO_C" >&6
+echo "$as_me:14910: checking if you want reentrant code" >&5
+echo $ECHO_N "checking if you want reentrant code... $ECHO_C" >&6
# Check whether --enable-reentrant or --disable-reentrant was given.
if test "${enable_reentrant+set}" = set; then
@@ -12060,31 +14917,82 @@ if test "${enable_reentrant+set}" = set; then
else
with_reentrant=no
fi;
-echo "$as_me:12063: result: $with_reentrant" >&5
+echo "$as_me:14920: result: $with_reentrant" >&5
echo "${ECHO_T}$with_reentrant" >&6
if test "x$with_reentrant" = xyes ; then
cf_cv_enable_reentrant=1
cf_cv_enable_opaque="NCURSES_INTERNALS"
- NCURSES_OPAQUE=1
NCURSES_SIZE_T=int
if test "x$cf_cv_weak_symbols" = xyes ; then
# remove pthread library from $LIBS
LIBS=`echo "$LIBS" | sed -e 's/-lpthread[ ]//g' -e 's/-lpthread$//'`
- TEST_LIBS="-lpthread $TEST_LIBS"
- TEST_LIBS2="-lpthread $TEST_LIBS2"
+cf_add_libs="$TEST_LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lpthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+TEST_LIBS="$cf_add_libs"
+
+cf_add_libs="$TEST_LIBS2"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lpthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+TEST_LIBS2="$cf_add_libs"
+
+cf_add_libs="$PRIVATE_LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lpthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+PRIVATE_LIBS="$cf_add_libs"
+
else
# when not using weak symbols but with_reentrant,
# add 't' to the library suffix on all platforms
# except cygwin, where we only do that if ALSO
# compiling with full thread support.
case "$host" in
- *cygwin* | *msys*)
+ (*cygwin* | *msys*)
if test "$with_pthread" = "yes" ; then
- LIB_SUFFIX="t${LIB_SUFFIX}"
+ if test "x$disable_lib_suffixes" = "xno" ; then
+ LIB_SUFFIX="t${LIB_SUFFIX}"
+ fi
fi ;;
- * ) LIB_SUFFIX="t${LIB_SUFFIX}" ;;
+ (*)
+ if test "x$disable_lib_suffixes" = "xno" ; then
+ LIB_SUFFIX="t${LIB_SUFFIX}"
+ fi
+ ;;
esac
fi
@@ -12094,11 +15002,11 @@ EOF
if test "${with_abi_version+set}" != set; then
case $cf_cv_rel_version in
- 5.*)
+ (5.*)
cf_cv_rel_version=6.0
cf_cv_abi_version=6
- { echo "$as_me:12100: WARNING: Overriding ABI version to $cf_cv_abi_version" >&5
-echo "$as_me: WARNING: Overriding ABI version to $cf_cv_abi_version" >&2;}
+ { echo "$as_me:15008: WARNING: overriding ABI version to $cf_cv_abi_version" >&5
+echo "$as_me: WARNING: overriding ABI version to $cf_cv_abi_version" >&2;}
;;
esac
fi
@@ -12106,13 +15014,87 @@ fi
else
cf_cv_enable_reentrant=0
cf_cv_enable_opaque="NCURSES_OPAQUE"
- NCURSES_OPAQUE=0
NCURSES_SIZE_T=short
fi
+echo "$as_me:15020: checking if you want opaque curses-library structures" >&5
+echo $ECHO_N "checking if you want opaque curses-library structures... $ECHO_C" >&6
+
+# Check whether --enable-opaque-curses or --disable-opaque-curses was given.
+if test "${enable_opaque_curses+set}" = set; then
+ enableval="$enable_opaque_curses"
+ test "$enableval" != yes && enableval=no
+ if test "$enableval" != "no" ; then
+ enable_opaque_curses=yes
+ else
+
+ test "$cf_cv_enable_reentrant" = 1 && enable_opaque_curses=yes
+ test "$cf_cv_enable_reentrant" = 1 || enable_opaque_curses=no
+
+ fi
+else
+ enableval=no
+
+ test "$cf_cv_enable_reentrant" = 1 && enable_opaque_curses=yes
+ test "$cf_cv_enable_reentrant" = 1 || enable_opaque_curses=no
+
+fi;
+echo "$as_me:15042: result: $enable_opaque_curses" >&5
+echo "${ECHO_T}$enable_opaque_curses" >&6
+
+test "$cf_cv_enable_reentrant" = 1 && \
+test "$enable_opaque_curses" = no && \
+{ { echo "$as_me:15047: error: reentrant configuration requires opaque library" >&5
+echo "$as_me: error: reentrant configuration requires opaque library" >&2;}
+ { (exit 1); exit 1; }; }
+
+echo "$as_me:15051: checking if you want opaque form-library structures" >&5
+echo $ECHO_N "checking if you want opaque form-library structures... $ECHO_C" >&6
+
+# Check whether --enable-opaque-form or --disable-opaque-form was given.
+if test "${enable_opaque_form+set}" = set; then
+ enableval="$enable_opaque_form"
+ enable_opaque_form=yes
+else
+ enable_opaque_form=no
+fi;
+echo "$as_me:15061: result: $enable_opaque_form" >&5
+echo "${ECHO_T}$enable_opaque_form" >&6
+
+echo "$as_me:15064: checking if you want opaque menu-library structures" >&5
+echo $ECHO_N "checking if you want opaque menu-library structures... $ECHO_C" >&6
+
+# Check whether --enable-opaque-menu or --disable-opaque-menu was given.
+if test "${enable_opaque_menu+set}" = set; then
+ enableval="$enable_opaque_menu"
+ enable_opaque_menu=yes
+else
+ enable_opaque_menu=no
+fi;
+echo "$as_me:15074: result: $enable_opaque_menu" >&5
+echo "${ECHO_T}$enable_opaque_menu" >&6
+
+echo "$as_me:15077: checking if you want opaque panel-library structures" >&5
+echo $ECHO_N "checking if you want opaque panel-library structures... $ECHO_C" >&6
+
+# Check whether --enable-opaque-panel or --disable-opaque-panel was given.
+if test "${enable_opaque_panel+set}" = set; then
+ enableval="$enable_opaque_panel"
+ enable_opaque_panel=yes
+else
+ enable_opaque_panel=no
+fi;
+echo "$as_me:15087: result: $enable_opaque_panel" >&5
+echo "${ECHO_T}$enable_opaque_panel" >&6
+
+NCURSES_OPAQUE=0; test "$enable_opaque_curses" = yes && NCURSES_OPAQUE=1
+NCURSES_OPAQUE_FORM=0; test "$enable_opaque_form" = yes && NCURSES_OPAQUE_FORM=1
+NCURSES_OPAQUE_MENU=0; test "$enable_opaque_menu" = yes && NCURSES_OPAQUE_MENU=1
+NCURSES_OPAQUE_PANEL=0; test "$enable_opaque_panel" = yes && NCURSES_OPAQUE_PANEL=1
+
### Allow using a different wrap-prefix
if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then
- echo "$as_me:12115: checking for prefix used to wrap public variables" >&5
+ echo "$as_me:15097: checking for prefix used to wrap public variables" >&5
echo $ECHO_N "checking for prefix used to wrap public variables... $ECHO_C" >&6
# Check whether --with-wrap-prefix or --without-wrap-prefix was given.
@@ -12122,7 +15104,7 @@ if test "${with_wrap_prefix+set}" = set; then
else
NCURSES_WRAP_PREFIX=_nc_
fi;
- echo "$as_me:12125: result: $NCURSES_WRAP_PREFIX" >&5
+ echo "$as_me:15107: result: $NCURSES_WRAP_PREFIX" >&5
echo "${ECHO_T}$NCURSES_WRAP_PREFIX" >&6
else
NCURSES_WRAP_PREFIX=_nc_
@@ -12132,7 +15114,132 @@ cat >>confdefs.h <<EOF
#define NCURSES_WRAP_PREFIX "$NCURSES_WRAP_PREFIX"
EOF
-echo "$as_me:12135: checking if you want experimental safe-sprintf code" >&5
+###############################################################################
+# These options are relatively safe to experiment with.
+
+echo "$as_me:15120: checking if you want all development code" >&5
+echo $ECHO_N "checking if you want all development code... $ECHO_C" >&6
+
+# Check whether --with-develop or --without-develop was given.
+if test "${with_develop+set}" = set; then
+ withval="$with_develop"
+ with_develop=$withval
+else
+ with_develop=no
+fi;
+echo "$as_me:15130: result: $with_develop" >&5
+echo "${ECHO_T}$with_develop" >&6
+
+### use option --enable-hard-tabs to turn on use of hard-tabs optimize
+echo "$as_me:15134: checking if you want hard-tabs code" >&5
+echo $ECHO_N "checking if you want hard-tabs code... $ECHO_C" >&6
+
+# Check whether --enable-hard-tabs or --disable-hard-tabs was given.
+if test "${enable_hard_tabs+set}" = set; then
+ enableval="$enable_hard_tabs"
+
+else
+ enable_hard_tabs=$with_develop
+fi;
+echo "$as_me:15144: result: $enable_hard_tabs" >&5
+echo "${ECHO_T}$enable_hard_tabs" >&6
+test "x$enable_hard_tabs" = xyes &&
+cat >>confdefs.h <<\EOF
+#define USE_HARD_TABS 1
+EOF
+
+### use option --enable-xmc-glitch to turn on use of magic-cookie optimize
+echo "$as_me:15152: checking if you want limited support for xmc" >&5
+echo $ECHO_N "checking if you want limited support for xmc... $ECHO_C" >&6
+
+# Check whether --enable-xmc-glitch or --disable-xmc-glitch was given.
+if test "${enable_xmc_glitch+set}" = set; then
+ enableval="$enable_xmc_glitch"
+
+else
+ enable_xmc_glitch=$with_develop
+fi;
+echo "$as_me:15162: result: $enable_xmc_glitch" >&5
+echo "${ECHO_T}$enable_xmc_glitch" >&6
+test "x$enable_xmc_glitch" = xyes &&
+cat >>confdefs.h <<\EOF
+#define USE_XMC_SUPPORT 1
+EOF
+
+###############################################################################
+# These are just experimental, probably should not be in a package:
+
+echo "$as_me:15172: checking if you do not want to assume colors are white-on-black" >&5
+echo $ECHO_N "checking if you do not want to assume colors are white-on-black... $ECHO_C" >&6
+
+# Check whether --enable-assumed-color or --disable-assumed-color was given.
+if test "${enable_assumed_color+set}" = set; then
+ enableval="$enable_assumed_color"
+ with_assumed_color=$enableval
+else
+ with_assumed_color=yes
+fi;
+echo "$as_me:15182: result: $with_assumed_color" >&5
+echo "${ECHO_T}$with_assumed_color" >&6
+test "x$with_assumed_color" = xyes &&
+cat >>confdefs.h <<\EOF
+#define USE_ASSUMED_COLOR 1
+EOF
+
+### use option --enable-hashmap to turn on use of hashmap scrolling logic
+echo "$as_me:15190: checking if you want hashmap scrolling-optimization code" >&5
+echo $ECHO_N "checking if you want hashmap scrolling-optimization code... $ECHO_C" >&6
+
+# 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 "$as_me:15200: result: $with_hashmap" >&5
+echo "${ECHO_T}$with_hashmap" >&6
+test "x$with_hashmap" = xyes &&
+cat >>confdefs.h <<\EOF
+#define USE_HASHMAP 1
+EOF
+
+### use option --enable-colorfgbg to turn on use of $COLORFGBG environment
+echo "$as_me:15208: checking if you want colorfgbg code" >&5
+echo $ECHO_N "checking if you want colorfgbg code... $ECHO_C" >&6
+
+# Check whether --enable-colorfgbg or --disable-colorfgbg was given.
+if test "${enable_colorfgbg+set}" = set; then
+ enableval="$enable_colorfgbg"
+ with_colorfgbg=$enableval
+else
+ with_colorfgbg=no
+fi;
+echo "$as_me:15218: result: $with_colorfgbg" >&5
+echo "${ECHO_T}$with_colorfgbg" >&6
+test "x$with_colorfgbg" = xyes &&
+cat >>confdefs.h <<\EOF
+#define USE_COLORFGBG 1
+EOF
+
+### use option --enable-interop to turn on use of bindings used for interop
+echo "$as_me:15226: checking if you want interop bindings" >&5
+echo $ECHO_N "checking if you want interop bindings... $ECHO_C" >&6
+
+# Check whether --enable-interop or --disable-interop was given.
+if test "${enable_interop+set}" = set; then
+ enableval="$enable_interop"
+ with_exp_interop=$enableval
+else
+ with_exp_interop=$cf_dft_interop
+fi;
+echo "$as_me:15236: result: $with_exp_interop" >&5
+echo "${ECHO_T}$with_exp_interop" >&6
+
+NCURSES_INTEROP_FUNCS=0
+test "x$with_exp_interop" = xyes && NCURSES_INTEROP_FUNCS=1
+
+echo "$as_me:15242: checking if you want experimental safe-sprintf code" >&5
echo $ECHO_N "checking if you want experimental safe-sprintf code... $ECHO_C" >&6
# Check whether --enable-safe-sprintf or --disable-safe-sprintf was given.
@@ -12142,17 +15249,13 @@ if test "${enable_safe_sprintf+set}" = set; then
else
with_safe_sprintf=no
fi;
-echo "$as_me:12145: result: $with_safe_sprintf" >&5
+echo "$as_me:15252: result: $with_safe_sprintf" >&5
echo "${ECHO_T}$with_safe_sprintf" >&6
-test "x$with_safe_sprintf" = xyes &&
-cat >>confdefs.h <<\EOF
-#define USE_SAFE_SPRINTF 1
-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 "$as_me:12155: checking if you want to experiment without scrolling-hints code" >&5
+echo "$as_me:15258: checking if you want to experiment without scrolling-hints code" >&5
echo $ECHO_N "checking if you want to experiment without scrolling-hints code... $ECHO_C" >&6
# Check whether --enable-scroll-hints or --disable-scroll-hints was given.
@@ -12162,7 +15265,7 @@ if test "${enable_scroll_hints+set}" = set; then
else
with_scroll_hints=yes
fi;
-echo "$as_me:12165: result: $with_scroll_hints" >&5
+echo "$as_me:15268: result: $with_scroll_hints" >&5
echo "${ECHO_T}$with_scroll_hints" >&6
test "x$with_scroll_hints" = xyes &&
cat >>confdefs.h <<\EOF
@@ -12171,8 +15274,8 @@ EOF
fi
-echo "$as_me:12174: checking if you want experimental wgetch-events code" >&5
-echo $ECHO_N "checking if you want experimental wgetch-events code... $ECHO_C" >&6
+echo "$as_me:15277: checking if you want wgetch-events code" >&5
+echo $ECHO_N "checking if you want wgetch-events code... $ECHO_C" >&6
# Check whether --enable-wgetch-events or --disable-wgetch-events was given.
if test "${enable_wgetch_events+set}" = set; then
@@ -12181,7 +15284,7 @@ if test "${enable_wgetch_events+set}" = set; then
else
with_wgetch_events=no
fi;
-echo "$as_me:12184: result: $with_wgetch_events" >&5
+echo "$as_me:15287: result: $with_wgetch_events" >&5
echo "${ECHO_T}$with_wgetch_events" >&6
test "x$with_wgetch_events" = xyes &&
cat >>confdefs.h <<\EOF
@@ -12192,41 +15295,41 @@ EOF
### use option --disable-echo to suppress full display compiling commands
-echo "$as_me:12195: checking if you want to see long compiling messages" >&5
+echo "$as_me:15298: checking if you want to see long compiling messages" >&5
echo $ECHO_N "checking if you want to see long compiling messages... $ECHO_C" >&6
# Check whether --enable-echo or --disable-echo was given.
if test "${enable_echo+set}" = set; then
enableval="$enable_echo"
test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
+ if test "$enableval" != "yes" ; then
- ECHO_LT='--silent'
- ECHO_LD='@echo linking $@;'
- RULE_CC='@echo compiling $<'
- SHOW_CC='@echo compiling $@'
- ECHO_CC='@'
+ ECHO_LT='--silent'
+ ECHO_LD='@echo linking $@;'
+ RULE_CC='@echo compiling $<'
+ SHOW_CC='@echo compiling $@'
+ ECHO_CC='@'
- else
+ else
- ECHO_LT=''
- ECHO_LD=''
- RULE_CC=''
- SHOW_CC=''
- ECHO_CC=''
+ ECHO_LT=''
+ ECHO_LD=''
+ RULE_CC=''
+ SHOW_CC=''
+ ECHO_CC=''
- fi
+ fi
else
enableval=yes
- ECHO_LT=''
- ECHO_LD=''
- RULE_CC=''
- SHOW_CC=''
- ECHO_CC=''
+ ECHO_LT=''
+ ECHO_LD=''
+ RULE_CC=''
+ SHOW_CC=''
+ ECHO_CC=''
fi;
-echo "$as_me:12229: result: $enableval" >&5
+echo "$as_me:15332: result: $enableval" >&5
echo "${ECHO_T}$enableval" >&6
if test "x$enable_echo" = xyes; then
@@ -12237,8 +15340,106 @@ else
test -n "$LIBTOOL_CXX" && LIBTOOL_CXX="$LIBTOOL_CXX --silent"
fi
+# --disable-stripping is used for debugging
+
+echo "$as_me:15345: checking if you want to install stripped executables" >&5
+echo $ECHO_N "checking if you want to install stripped executables... $ECHO_C" >&6
+
+# Check whether --enable-stripping or --disable-stripping was given.
+if test "${enable_stripping+set}" = set; then
+ enableval="$enable_stripping"
+ test "$enableval" != no && enableval=yes
+ if test "$enableval" != "yes" ; then
+ with_stripping=no
+ else
+ with_stripping=yes
+ fi
+else
+ enableval=yes
+ with_stripping=yes
+
+fi;
+echo "$as_me:15362: result: $with_stripping" >&5
+echo "${ECHO_T}$with_stripping" >&6
+
+if test "$with_stripping" = yes
+then
+ INSTALL_OPT_S="-s"
+else
+ INSTALL_OPT_S=
+fi
+
+: ${INSTALL:=install}
+echo "$as_me:15373: checking if install accepts -p option" >&5
+echo $ECHO_N "checking if install accepts -p option... $ECHO_C" >&6
+if test "${cf_cv_install_p+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ rm -rf conftest*
+ date >conftest.in
+ mkdir conftest.out
+ sleep 3
+ if $INSTALL -p conftest.in conftest.out 2>/dev/null
+ then
+ if test -f conftest.out/conftest.in
+ then
+ test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \
+ test conftest.out/conftest.in -nt conftest.in 2>conftest.err
+ if test -s conftest.err
+ then
+ cf_cv_install_p=no
+ else
+ cf_cv_install_p=yes
+ fi
+ else
+ cf_cv_install_p=no
+ fi
+ else
+ cf_cv_install_p=no
+ fi
+ rm -rf conftest*
+
+fi
+echo "$as_me:15404: result: $cf_cv_install_p" >&5
+echo "${ECHO_T}$cf_cv_install_p" >&6
+
+echo "$as_me:15407: checking if install needs to be told about ownership" >&5
+echo $ECHO_N "checking if install needs to be told about ownership... $ECHO_C" >&6
+case `$ac_config_guess` in
+(*minix)
+ with_install_o=yes
+ ;;
+(*)
+ with_install_o=no
+ ;;
+esac
+
+echo "$as_me:15418: result: $with_install_o" >&5
+echo "${ECHO_T}$with_install_o" >&6
+if test "x$with_install_o" = xyes
+then
+ INSTALL_OPT_O=`id root|sed -e 's/uid=[0-9]*(/ -o /' -e 's/gid=[0-9]*(/ -g /' -e 's/ [^=[:space:]][^=[:space:]]*=.*/ /' -e 's/)//g'`
+else
+ INSTALL_OPT_O=
+fi
+
+# If we're avoiding relinking of shared libraries during install, that is to
+# avoid modifying the build-tree. For the same reason, avoid doing ranlib if
+# the install program has "-p" (for preserving timestamps).
+cf_cv_do_reranlib=yes
+if test "x$cf_cv_install_p" = xyes
+then
+ if test "x$cf_cv_do_relink" != xyes
+ then
+ cf_cv_do_reranlib=no
+ INSTALL_OPT_P="-p"
+ INSTALL_LIB="$INSTALL_LIB $INSTALL_OPT_P"
+ fi
+fi
+
### use option --enable-warnings to turn on all gcc warnings
-echo "$as_me:12241: checking if you want to see compiler warnings" >&5
+echo "$as_me:15442: checking if you want to see compiler warnings" >&5
echo $ECHO_N "checking if you want to see compiler warnings... $ECHO_C" >&6
# Check whether --enable-warnings or --disable-warnings was given.
@@ -12246,120 +15447,139 @@ if test "${enable_warnings+set}" = set; then
enableval="$enable_warnings"
with_warnings=$enableval
fi;
-echo "$as_me:12249: result: $with_warnings" >&5
+echo "$as_me:15450: result: $with_warnings" >&5
echo "${ECHO_T}$with_warnings" >&6
if test "x$with_warnings" = "xyes"; then
ADAFLAGS="$ADAFLAGS -gnatg"
-INTEL_COMPILER=no
+if test "x$have_x" = xyes; then
-if test "$GCC" = yes ; then
- case $host_os in
- linux*|gnu*)
- echo "$as_me:12261: checking if this is really Intel C compiler" >&5
-echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6
- cf_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -no-gcc"
- cat >conftest.$ac_ext <<_ACEOF
-#line 12266 "configure"
+cf_save_LIBS_CF_CONST_X_STRING="$LIBS"
+cf_save_CFLAGS_CF_CONST_X_STRING="$CFLAGS"
+cf_save_CPPFLAGS_CF_CONST_X_STRING="$CPPFLAGS"
+LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
+for cf_X_CFLAGS in $X_CFLAGS
+do
+ case "x$cf_X_CFLAGS" in
+ x-[IUD]*)
+ CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
+ ;;
+ *)
+ CFLAGS="$CFLAGS $cf_X_CFLAGS"
+ ;;
+ esac
+done
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 15476 "configure"
#include "confdefs.h"
+#include <stdlib.h>
+#include <X11/Intrinsic.h>
+
int
-main ()
+main (void)
{
-
-#ifdef __INTEL_COMPILER
-#else
-make an error
-#endif
-
+String foo = malloc(1)
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:12283: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15491: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12286: \$? = $ac_status" >&5
+ echo "$as_me:15494: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:12289: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15497: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12292: \$? = $ac_status" >&5
+ echo "$as_me:15500: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- INTEL_COMPILER=yes
-cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
+echo "$as_me:15503: checking for X11/Xt const-feature" >&5
+echo $ECHO_N "checking for X11/Xt const-feature... $ECHO_C" >&6
+if test "${cf_cv_const_x_string+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$cf_save_CFLAGS"
- echo "$as_me:12303: result: $INTEL_COMPILER" >&5
-echo "${ECHO_T}$INTEL_COMPILER" >&6
- ;;
- esac
-fi
-CLANG_COMPILER=no
-
-if test "$GCC" = yes ; then
- echo "$as_me:12312: checking if this is really Clang C compiler" >&5
-echo $ECHO_N "checking if this is really Clang C compiler... $ECHO_C" >&6
- cf_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -Qunused-arguments"
cat >conftest.$ac_ext <<_ACEOF
-#line 12317 "configure"
+#line 15510 "configure"
#include "confdefs.h"
+#define _CONST_X_STRING /* X11R7.8 (perhaps) */
+#undef XTSTRINGDEFINES /* X11R5 and later */
+#include <stdlib.h>
+#include <X11/Intrinsic.h>
+
int
-main ()
+main (void)
{
-
-#ifdef __clang__
-#else
-make an error
-#endif
-
+String foo = malloc(1); *foo = 0
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:12334: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15527: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12337: \$? = $ac_status" >&5
+ echo "$as_me:15530: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:12340: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15533: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12343: \$? = $ac_status" >&5
+ echo "$as_me:15536: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- CLANG_COMPILER=yes
-cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
+
+ cf_cv_const_x_string=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
+
+ cf_cv_const_x_string=yes
+
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$cf_save_CFLAGS"
- echo "$as_me:12354: result: $CLANG_COMPILER" >&5
-echo "${ECHO_T}$CLANG_COMPILER" >&6
+
fi
+echo "$as_me:15551: result: $cf_cv_const_x_string" >&5
+echo "${ECHO_T}$cf_cv_const_x_string" >&6
+
+LIBS="$cf_save_LIBS_CF_CONST_X_STRING"
+CFLAGS="$cf_save_CFLAGS_CF_CONST_X_STRING"
+CPPFLAGS="$cf_save_CPPFLAGS_CF_CONST_X_STRING"
+
+case $cf_cv_const_x_string in
+(no)
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-DXTSTRINGDEFINES"
+ ;;
+(*)
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_CONST_X_STRING"
+
+ ;;
+esac
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ fi
cat > conftest.$ac_ext <<EOF
-#line 12359 "${as_me:-configure}"
+#line 15580 "${as_me:-configure}"
int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
EOF
-
if test "$INTEL_COMPILER" = yes
then
# The "-wdXXX" options suppress warnings:
@@ -12373,7 +15593,7 @@ then
# remark #981: operands are evaluated in unspecified order
# warning #279: controlling expression is constant
- { echo "$as_me:12376: checking for $CC warning options..." >&5
+ { echo "$as_me:15596: checking for $CC warning options..." >&5
echo "$as_me: checking for $CC warning options..." >&6;}
cf_save_CFLAGS="$CFLAGS"
EXTRA_CFLAGS="-Wall"
@@ -12389,21 +15609,20 @@ echo "$as_me: checking for $CC warning options..." >&6;}
wd981
do
CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
- if { (eval echo "$as_me:12392: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:15612: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12395: \$? = $ac_status" >&5
+ echo "$as_me:15615: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:12397: result: ... -$cf_opt" >&5
+ test -n "$verbose" && echo "$as_me:15617: result: ... -$cf_opt" >&5
echo "${ECHO_T}... -$cf_opt" >&6
EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
fi
done
CFLAGS="$cf_save_CFLAGS"
-
-elif test "$GCC" = yes
+elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
then
- { echo "$as_me:12406: checking for $CC warning options..." >&5
+ { echo "$as_me:15625: checking for $CC warning options..." >&5
echo "$as_me: checking for $CC warning options..." >&6;}
cf_save_CFLAGS="$CFLAGS"
EXTRA_CFLAGS=
@@ -12424,36 +15643,33 @@ echo "$as_me: checking for $CC warning options..." >&6;}
Wpointer-arith \
Wshadow \
Wstrict-prototypes \
- Wundef $cf_gcc_warnings $cf_warn_CONST Wno-unknown-pragmas Wswitch-enum
+ Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST Wno-unknown-pragmas Wswitch-enum
do
CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
- if { (eval echo "$as_me:12430: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:15649: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12433: \$? = $ac_status" >&5
+ echo "$as_me:15652: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:12435: result: ... -$cf_opt" >&5
+ test -n "$verbose" && echo "$as_me:15654: result: ... -$cf_opt" >&5
echo "${ECHO_T}... -$cf_opt" >&6
- case $cf_opt in #(vi
- Wcast-qual) #(vi
- CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES"
- ;;
- Winline) #(vi
+ case $cf_opt in
+ (Winline)
case $GCC_VERSION in
- [34].*)
+ ([34].*)
test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6
-echo "${as_me:-configure}:12446: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
+echo "${as_me:-configure}:15662: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
continue;;
esac
;;
- Wpointer-arith) #(vi
+ (Wpointer-arith)
case $GCC_VERSION in
- [12].*)
+ ([12].*)
test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6
-echo "${as_me:-configure}:12456: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
+echo "${as_me:-configure}:15672: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
continue;;
esac
@@ -12472,17 +15688,17 @@ INTEL_CPLUSPLUS=no
if test "$GCC" = yes ; then
case $host_os in
- linux*|gnu*)
- echo "$as_me:12476: checking if this is really Intel C++ compiler" >&5
+ (linux*|gnu*)
+ echo "$as_me:15692: checking if this is really Intel C++ compiler" >&5
echo $ECHO_N "checking if this is really Intel C++ compiler... $ECHO_C" >&6
cf_save_CFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -no-gcc"
cat >conftest.$ac_ext <<_ACEOF
-#line 12481 "configure"
+#line 15697 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
#ifdef __INTEL_COMPILER
@@ -12495,19 +15711,19 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:12498: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15714: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12501: \$? = $ac_status" >&5
+ echo "$as_me:15717: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:12504: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15720: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12507: \$? = $ac_status" >&5
+ echo "$as_me:15723: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
INTEL_CPLUSPLUS=yes
-cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
+cf_save_CFLAGS="$cf_save_CFLAGS -we147"
else
echo "$as_me: failed program was:" >&5
@@ -12515,7 +15731,7 @@ cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest.$ac_ext
CXXFLAGS="$cf_save_CFLAGS"
- echo "$as_me:12518: result: $INTEL_CPLUSPLUS" >&5
+ echo "$as_me:15734: result: $INTEL_CPLUSPLUS" >&5
echo "${ECHO_T}$INTEL_CPLUSPLUS" >&6
;;
esac
@@ -12524,16 +15740,16 @@ fi
CLANG_CPLUSPLUS=no
if test "$GCC" = yes ; then
- echo "$as_me:12527: checking if this is really Clang C++ compiler" >&5
+ echo "$as_me:15743: checking if this is really Clang C++ compiler" >&5
echo $ECHO_N "checking if this is really Clang C++ compiler... $ECHO_C" >&6
cf_save_CFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -Qunused-arguments"
cat >conftest.$ac_ext <<_ACEOF
-#line 12532 "configure"
+#line 15748 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
#ifdef __clang__
@@ -12546,16 +15762,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:12549: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15765: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12552: \$? = $ac_status" >&5
+ echo "$as_me:15768: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:12555: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15771: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12558: \$? = $ac_status" >&5
+ echo "$as_me:15774: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
CLANG_CPLUSPLUS=yes
cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
@@ -12566,7 +15782,7 @@ cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest.$ac_ext
CXXFLAGS="$cf_save_CFLAGS"
- echo "$as_me:12569: result: $CLANG_CPLUSPLUS" >&5
+ echo "$as_me:15785: result: $CLANG_CPLUSPLUS" >&5
echo "${ECHO_T}$CLANG_CPLUSPLUS" >&6
fi
@@ -12578,7 +15794,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
ac_main_return=return
cat > conftest.$ac_ext <<EOF
-#line 12581 "configure"
+#line 15797 "configure"
int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
EOF
@@ -12596,7 +15812,7 @@ then
# remark #981: operands are evaluated in unspecified order
# warning #269: invalid format string conversion
- { echo "$as_me:12599: checking for $CC warning options..." >&5
+ { echo "$as_me:15815: checking for $CC warning options..." >&5
echo "$as_me: checking for $CC warning options..." >&6;}
cf_save_CXXFLAGS="$CXXFLAGS"
EXTRA_CXXFLAGS="-Wall"
@@ -12613,12 +15829,12 @@ echo "$as_me: checking for $CC warning options..." >&6;}
wd981
do
CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -$cf_opt"
- if { (eval echo "$as_me:12616: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:15832: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12619: \$? = $ac_status" >&5
+ echo "$as_me:15835: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:12621: result: ... -$cf_opt" >&5
+ test -n "$verbose" && echo "$as_me:15837: result: ... -$cf_opt" >&5
echo "${ECHO_T}... -$cf_opt" >&6
EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
fi
@@ -12627,16 +15843,16 @@ echo "${ECHO_T}... -$cf_opt" >&6
elif test "$GXX" = yes
then
- { echo "$as_me:12630: checking for $CXX warning options..." >&5
+ { echo "$as_me:15846: checking for $CXX warning options..." >&5
echo "$as_me: checking for $CXX warning options..." >&6;}
cf_save_CXXFLAGS="$CXXFLAGS"
EXTRA_CXXFLAGS="-W -Wall"
cf_gxx_extra_warnings=""
test "$with_ext_const" = yes && cf_gxx_extra_warnings="Wwrite-strings"
case "$GCC_VERSION" in
- [1-2].*)
+ ([1-2].*)
;;
- *)
+ (*)
cf_gxx_extra_warnings="$cf_gxx_extra_warnings Weffc++"
;;
esac
@@ -12657,16 +15873,16 @@ echo "$as_me: checking for $CXX warning options..." >&6;}
Wundef $cf_gxx_extra_warnings Wno-unused
do
CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -Werror -$cf_opt"
- if { (eval echo "$as_me:12660: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:15876: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12663: \$? = $ac_status" >&5
+ echo "$as_me:15879: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:12665: result: ... -$cf_opt" >&5
+ test -n "$verbose" && echo "$as_me:15881: result: ... -$cf_opt" >&5
echo "${ECHO_T}... -$cf_opt" >&6
EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
else
- test -n "$verbose" && echo "$as_me:12669: result: ... no -$cf_opt" >&5
+ test -n "$verbose" && echo "$as_me:15885: result: ... no -$cf_opt" >&5
echo "${ECHO_T}... no -$cf_opt" >&6
fi
done
@@ -12702,10 +15918,10 @@ cat > conftest.i <<EOF
EOF
if test "$GCC" = yes
then
- { echo "$as_me:12705: checking for $CC __attribute__ directives..." >&5
+ { echo "$as_me:15921: checking for $CC __attribute__ directives..." >&5
echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
cat > conftest.$ac_ext <<EOF
-#line 12708 "${as_me:-configure}"
+#line 15924 "${as_me:-configure}"
#include "confdefs.h"
#include "conftest.h"
#include "conftest.i"
@@ -12734,43 +15950,43 @@ cf_ATTRIBUTE=`echo "$cf_attribute" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFG
cf_directive="__attribute__(($cf_attribute))"
echo "checking for $CC $cf_directive" 1>&5
- case $cf_attribute in #(vi
- printf) #(vi
+ case $cf_attribute in
+ (printf)
cf_printf_attribute=yes
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE 1
EOF
;;
- scanf) #(vi
+ (scanf)
cf_scanf_attribute=yes
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE 1
EOF
;;
- *) #(vi
+ (*)
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE $cf_directive
EOF
;;
esac
- if { (eval echo "$as_me:12757: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:15973: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12760: \$? = $ac_status" >&5
+ echo "$as_me:15976: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:12762: result: ... $cf_attribute" >&5
+ test -n "$verbose" && echo "$as_me:15978: result: ... $cf_attribute" >&5
echo "${ECHO_T}... $cf_attribute" >&6
cat conftest.h >>confdefs.h
- case $cf_attribute in #(vi
- noreturn) #(vi
+ case $cf_attribute in
+ (noreturn)
cat >>confdefs.h <<EOF
#define GCC_NORETURN $cf_directive
EOF
;;
- printf) #(vi
+ (printf)
cf_value='/* nothing */'
if test "$cf_printf_attribute" != no ; then
cf_value='__attribute__((format(printf,fmt,var)))'
@@ -12786,7 +16002,7 @@ cat >>confdefs.h <<EOF
EOF
;;
- scanf) #(vi
+ (scanf)
cf_value='/* nothing */'
if test "$cf_scanf_attribute" != no ; then
cf_value='__attribute__((format(scanf,fmt,var)))'
@@ -12802,7 +16018,7 @@ cat >>confdefs.h <<EOF
EOF
;;
- unused) #(vi
+ (unused)
cat >>confdefs.h <<EOF
#define GCC_UNUSED $cf_directive
@@ -12818,7 +16034,7 @@ fi
rm -rf conftest*
fi
-echo "$as_me:12821: checking if you want to work around bogus compiler/loader warnings" >&5
+echo "$as_me:16037: checking if you want to work around bogus compiler/loader warnings" >&5
echo $ECHO_N "checking if you want to work around bogus compiler/loader warnings... $ECHO_C" >&6
# Check whether --enable-string-hacks or --disable-string-hacks was given.
@@ -12828,7 +16044,7 @@ if test "${enable_string_hacks+set}" = set; then
else
with_string_hacks=no
fi;
-echo "$as_me:12831: result: $with_string_hacks" >&5
+echo "$as_me:16047: result: $with_string_hacks" >&5
echo "${ECHO_T}$with_string_hacks" >&6
if test "x$with_string_hacks" = "xyes"; then
@@ -12837,59 +16053,247 @@ cat >>confdefs.h <<\EOF
#define USE_STRING_HACKS 1
EOF
- { echo "$as_me:12840: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&5
+ { echo "$as_me:16056: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&5
echo "$as_me: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&2;}
+ echo "$as_me:16058: checking for strlcat" >&5
+echo $ECHO_N "checking for strlcat... $ECHO_C" >&6
+if test "${ac_cv_func_strlcat+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 16064 "configure"
+#include "confdefs.h"
+#define strlcat autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef strlcat
+
+#ifdef __cplusplus
+extern "C"
+#endif
+
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char strlcat (void);
+
+int
+main (void)
+{
+
+/* The GNU C library defines stubs 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_strlcat) || defined (__stub___strlcat)
+#error found stub for strlcat
+#endif
+
+ return strlcat ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:16095: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:16098: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:16101: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:16104: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_strlcat=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_strlcat=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:16114: result: $ac_cv_func_strlcat" >&5
+echo "${ECHO_T}$ac_cv_func_strlcat" >&6
+if test $ac_cv_func_strlcat = yes; then
-for ac_func in strlcat strlcpy snprintf
+cat >>confdefs.h <<\EOF
+#define HAVE_STRLCAT 1
+EOF
+
+else
+
+ echo "$as_me:16124: checking for strlcat in -lbsd" >&5
+echo $ECHO_N "checking for strlcat in -lbsd... $ECHO_C" >&6
+if test "${ac_cv_lib_bsd_strlcat+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 16132 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char strlcat ();
+int
+main (void)
+{
+strlcat ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:16151: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:16154: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:16157: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:16160: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_bsd_strlcat=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_bsd_strlcat=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:16171: result: $ac_cv_lib_bsd_strlcat" >&5
+echo "${ECHO_T}$ac_cv_lib_bsd_strlcat" >&6
+if test $ac_cv_lib_bsd_strlcat = yes; then
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lbsd; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+for ac_header in bsd/string.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:16194: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 16200 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:16204: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:16210: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:16229: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+cat >>confdefs.h <<\EOF
+#define HAVE_STRLCAT 1
+EOF
+
+fi
+
+fi
+
+for ac_func in strlcpy snprintf
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:12846: checking for $ac_func" >&5
+echo "$as_me:16250: checking for $ac_func" >&5
echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 12852 "configure"
+#line 16256 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define $ac_func autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef $ac_func
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+char $ac_func (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for $ac_func
#endif
+ return $ac_func ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12883: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16287: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12886: \$? = $ac_status" >&5
+ echo "$as_me:16290: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12889: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16293: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12892: \$? = $ac_status" >&5
+ echo "$as_me:16296: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_var=yes"
else
@@ -12899,7 +16303,7 @@ eval "$as_ac_var=no"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:12902: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "$as_me:16306: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
if test `eval echo '${'$as_ac_var'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -12912,7 +16316,7 @@ done
fi
### use option --enable-assertions to turn on generation of assertion code
-echo "$as_me:12915: checking if you want to enable runtime assertions" >&5
+echo "$as_me:16319: checking if you want to enable runtime assertions" >&5
echo $ECHO_N "checking if you want to enable runtime assertions... $ECHO_C" >&6
# Check whether --enable-assertions or --disable-assertions was given.
@@ -12922,7 +16326,7 @@ if test "${enable_assertions+set}" = set; then
else
with_assertions=no
fi;
-echo "$as_me:12925: result: $with_assertions" >&5
+echo "$as_me:16329: result: $with_assertions" >&5
echo "${ECHO_T}$with_assertions" >&6
if test -n "$GCC"
then
@@ -12938,7 +16342,7 @@ fi
### use option --disable-leaks to suppress "permanent" leaks, for testing
-echo "$as_me:12941: checking if you want to use dmalloc for testing" >&5
+echo "$as_me:16345: checking if you want to use dmalloc for testing" >&5
echo $ECHO_N "checking if you want to use dmalloc for testing... $ECHO_C" >&6
# Check whether --with-dmalloc or --without-dmalloc was given.
@@ -12955,15 +16359,15 @@ EOF
else
with_dmalloc=
fi;
-echo "$as_me:12958: result: ${with_dmalloc:-no}" >&5
+echo "$as_me:16362: result: ${with_dmalloc:-no}" >&5
echo "${ECHO_T}${with_dmalloc:-no}" >&6
-case .$with_cflags in #(vi
-.*-g*)
- case .$CFLAGS in #(vi
- .*-g*) #(vi
+case .$with_cflags in
+(.*-g*)
+ case .$CFLAGS in
+ (.*-g*)
;;
- *)
+ (*)
cf_fix_cppflags=no
cf_new_cflags=
@@ -12973,32 +16377,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in -g
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -13007,21 +16417,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -13030,17 +16448,23 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
;;
@@ -13049,23 +16473,23 @@ fi
esac
if test "$with_dmalloc" = yes ; then
- echo "$as_me:13052: checking for dmalloc.h" >&5
+ echo "$as_me:16476: checking for dmalloc.h" >&5
echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6
if test "${ac_cv_header_dmalloc_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13058 "configure"
+#line 16482 "configure"
#include "confdefs.h"
#include <dmalloc.h>
_ACEOF
-if { (eval echo "$as_me:13062: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:16486: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:13068: \$? = $ac_status" >&5
+ echo "$as_me:16492: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -13084,11 +16508,11 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:13087: result: $ac_cv_header_dmalloc_h" >&5
+echo "$as_me:16511: result: $ac_cv_header_dmalloc_h" >&5
echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6
if test $ac_cv_header_dmalloc_h = yes; then
-echo "$as_me:13091: checking for dmalloc_debug in -ldmalloc" >&5
+echo "$as_me:16515: checking for dmalloc_debug in -ldmalloc" >&5
echo $ECHO_N "checking for dmalloc_debug in -ldmalloc... $ECHO_C" >&6
if test "${ac_cv_lib_dmalloc_dmalloc_debug+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13096,7 +16520,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldmalloc $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 13099 "configure"
+#line 16523 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -13107,7 +16531,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char dmalloc_debug ();
int
-main ()
+main (void)
{
dmalloc_debug ();
;
@@ -13115,16 +16539,16 @@ dmalloc_debug ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13118: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16542: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13121: \$? = $ac_status" >&5
+ echo "$as_me:16545: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13124: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16548: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13127: \$? = $ac_status" >&5
+ echo "$as_me:16551: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_dmalloc_dmalloc_debug=yes
else
@@ -13135,7 +16559,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:13138: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5
+echo "$as_me:16562: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5
echo "${ECHO_T}$ac_cv_lib_dmalloc_dmalloc_debug" >&6
if test $ac_cv_lib_dmalloc_dmalloc_debug = yes; then
cat >>confdefs.h <<EOF
@@ -13150,7 +16574,7 @@ fi
fi
-echo "$as_me:13153: checking if you want to use dbmalloc for testing" >&5
+echo "$as_me:16577: checking if you want to use dbmalloc for testing" >&5
echo $ECHO_N "checking if you want to use dbmalloc for testing... $ECHO_C" >&6
# Check whether --with-dbmalloc or --without-dbmalloc was given.
@@ -13167,15 +16591,15 @@ EOF
else
with_dbmalloc=
fi;
-echo "$as_me:13170: result: ${with_dbmalloc:-no}" >&5
+echo "$as_me:16594: result: ${with_dbmalloc:-no}" >&5
echo "${ECHO_T}${with_dbmalloc:-no}" >&6
-case .$with_cflags in #(vi
-.*-g*)
- case .$CFLAGS in #(vi
- .*-g*) #(vi
+case .$with_cflags in
+(.*-g*)
+ case .$CFLAGS in
+ (.*-g*)
;;
- *)
+ (*)
cf_fix_cppflags=no
cf_new_cflags=
@@ -13185,32 +16609,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in -g
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -13219,21 +16649,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -13242,17 +16680,23 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
;;
@@ -13261,23 +16705,23 @@ fi
esac
if test "$with_dbmalloc" = yes ; then
- echo "$as_me:13264: checking for dbmalloc.h" >&5
+ echo "$as_me:16708: checking for dbmalloc.h" >&5
echo $ECHO_N "checking for dbmalloc.h... $ECHO_C" >&6
if test "${ac_cv_header_dbmalloc_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13270 "configure"
+#line 16714 "configure"
#include "confdefs.h"
#include <dbmalloc.h>
_ACEOF
-if { (eval echo "$as_me:13274: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:16718: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:13280: \$? = $ac_status" >&5
+ echo "$as_me:16724: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -13296,11 +16740,11 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:13299: result: $ac_cv_header_dbmalloc_h" >&5
+echo "$as_me:16743: result: $ac_cv_header_dbmalloc_h" >&5
echo "${ECHO_T}$ac_cv_header_dbmalloc_h" >&6
if test $ac_cv_header_dbmalloc_h = yes; then
-echo "$as_me:13303: checking for debug_malloc in -ldbmalloc" >&5
+echo "$as_me:16747: checking for debug_malloc in -ldbmalloc" >&5
echo $ECHO_N "checking for debug_malloc in -ldbmalloc... $ECHO_C" >&6
if test "${ac_cv_lib_dbmalloc_debug_malloc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13308,7 +16752,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldbmalloc $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 13311 "configure"
+#line 16755 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -13319,7 +16763,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char debug_malloc ();
int
-main ()
+main (void)
{
debug_malloc ();
;
@@ -13327,16 +16771,16 @@ debug_malloc ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13330: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16774: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13333: \$? = $ac_status" >&5
+ echo "$as_me:16777: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13336: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16780: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13339: \$? = $ac_status" >&5
+ echo "$as_me:16783: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_dbmalloc_debug_malloc=yes
else
@@ -13347,7 +16791,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:13350: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5
+echo "$as_me:16794: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5
echo "${ECHO_T}$ac_cv_lib_dbmalloc_debug_malloc" >&6
if test $ac_cv_lib_dbmalloc_debug_malloc = yes; then
cat >>confdefs.h <<EOF
@@ -13362,7 +16806,7 @@ fi
fi
-echo "$as_me:13365: checking if you want to use valgrind for testing" >&5
+echo "$as_me:16809: checking if you want to use valgrind for testing" >&5
echo $ECHO_N "checking if you want to use valgrind for testing... $ECHO_C" >&6
# Check whether --with-valgrind or --without-valgrind was given.
@@ -13379,15 +16823,15 @@ EOF
else
with_valgrind=
fi;
-echo "$as_me:13382: result: ${with_valgrind:-no}" >&5
+echo "$as_me:16826: result: ${with_valgrind:-no}" >&5
echo "${ECHO_T}${with_valgrind:-no}" >&6
-case .$with_cflags in #(vi
-.*-g*)
- case .$CFLAGS in #(vi
- .*-g*) #(vi
+case .$with_cflags in
+(.*-g*)
+ case .$CFLAGS in
+ (.*-g*)
;;
- *)
+ (*)
cf_fix_cppflags=no
cf_new_cflags=
@@ -13397,32 +16841,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in -g
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -13431,21 +16881,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -13454,17 +16912,23 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
;;
@@ -13472,7 +16936,7 @@ fi
;;
esac
-echo "$as_me:13475: checking if you want to perform memory-leak testing" >&5
+echo "$as_me:16939: checking if you want to perform memory-leak testing" >&5
echo $ECHO_N "checking if you want to perform memory-leak testing... $ECHO_C" >&6
# Check whether --enable-leaks or --disable-leaks was given.
@@ -13482,7 +16946,7 @@ if test "${enable_leaks+set}" = set; then
else
: ${with_no_leaks:=no}
fi;
-echo "$as_me:13485: result: $with_no_leaks" >&5
+echo "$as_me:16949: result: $with_no_leaks" >&5
echo "${ECHO_T}$with_no_leaks" >&6
if test "$with_no_leaks" = yes ; then
@@ -13529,12 +16993,12 @@ fi;
# extended to all models of the ncurses library:
cf_all_traces=no
case "$CFLAGS $CPPFLAGS" in
-*-DTRACE*)
+(*-DTRACE*)
cf_all_traces=yes
;;
esac
-echo "$as_me:13537: checking whether to add trace feature to all models" >&5
+echo "$as_me:17001: checking whether to add trace feature to all models" >&5
echo $ECHO_N "checking whether to add trace feature to all models... $ECHO_C" >&6
# Check whether --with-trace or --without-trace was given.
@@ -13544,7 +17008,7 @@ if test "${with_trace+set}" = set; then
else
cf_with_trace=$cf_all_traces
fi;
-echo "$as_me:13547: result: $cf_with_trace" >&5
+echo "$as_me:17011: result: $cf_with_trace" >&5
echo "${ECHO_T}$cf_with_trace" >&6
if test "x$cf_with_trace" = xyes ; then
@@ -13559,32 +17023,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in -DTRACE
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -13593,21 +17063,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -13616,76 +17094,108 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
+cat >>confdefs.h <<\EOF
+#define HAVE__TRACEF 1
+EOF
+
else
LIB_TRACING=DEBUG
ADA_TRACE=FALSE
fi
+echo "$as_me:17125: checking if we want to use GNAT projects" >&5
+echo $ECHO_N "checking if we want to use GNAT projects... $ECHO_C" >&6
+
+# Check whether --enable-gnat-projects or --disable-gnat-projects was given.
+if test "${enable_gnat_projects+set}" = set; then
+ enableval="$enable_gnat_projects"
+ test "$enableval" != no && enableval=yes
+ if test "$enableval" != "yes" ; then
+ enable_gnat_projects=no
+ else
+ enable_gnat_projects=yes
+ fi
+else
+ enableval=yes
+ enable_gnat_projects=yes
+
+fi;
+echo "$as_me:17142: result: $enable_gnat_projects" >&5
+echo "${ECHO_T}$enable_gnat_projects" >&6
+
### Checks for libraries.
-case $cf_cv_system_name in #(vi
-*mingw32*) #(vi
+case $cf_cv_system_name in
+(*mingw32*|*mingw64*)
+ CPPFLAGS="$CPPFLAGS -DWINVER=0x0501 -DWIN32_LEAN_AND_MEAN"
+ # Note: WINVER may be a problem with Windows 10
;;
-*)
-echo "$as_me:13642: checking for gettimeofday" >&5
+(*)
+echo "$as_me:17152: checking for gettimeofday" >&5
echo $ECHO_N "checking for gettimeofday... $ECHO_C" >&6
if test "${ac_cv_func_gettimeofday+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13648 "configure"
+#line 17158 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char gettimeofday (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define gettimeofday autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef gettimeofday
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char gettimeofday ();
-char (*f) ();
+char gettimeofday (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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_gettimeofday) || defined (__stub___gettimeofday)
-choke me
-#else
-f = gettimeofday; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for gettimeofday
#endif
+ return gettimeofday ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13679: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17189: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13682: \$? = $ac_status" >&5
+ echo "$as_me:17192: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13685: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17195: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13688: \$? = $ac_status" >&5
+ echo "$as_me:17198: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_gettimeofday=yes
else
@@ -13695,7 +17205,7 @@ ac_cv_func_gettimeofday=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:13698: result: $ac_cv_func_gettimeofday" >&5
+echo "$as_me:17208: result: $ac_cv_func_gettimeofday" >&5
echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6
if test $ac_cv_func_gettimeofday = yes; then
@@ -13705,7 +17215,7 @@ EOF
else
-echo "$as_me:13708: checking for gettimeofday in -lbsd" >&5
+echo "$as_me:17218: checking for gettimeofday in -lbsd" >&5
echo $ECHO_N "checking for gettimeofday in -lbsd... $ECHO_C" >&6
if test "${ac_cv_lib_bsd_gettimeofday+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13713,7 +17223,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lbsd $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 13716 "configure"
+#line 17226 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -13724,7 +17234,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char gettimeofday ();
int
-main ()
+main (void)
{
gettimeofday ();
;
@@ -13732,16 +17242,16 @@ gettimeofday ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13735: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17245: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13738: \$? = $ac_status" >&5
+ echo "$as_me:17248: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13741: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17251: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13744: \$? = $ac_status" >&5
+ echo "$as_me:17254: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_bsd_gettimeofday=yes
else
@@ -13752,7 +17262,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:13755: result: $ac_cv_lib_bsd_gettimeofday" >&5
+echo "$as_me:17265: result: $ac_cv_lib_bsd_gettimeofday" >&5
echo "${ECHO_T}$ac_cv_lib_bsd_gettimeofday" >&6
if test $ac_cv_lib_bsd_gettimeofday = yes; then
@@ -13760,28 +17270,44 @@ cat >>confdefs.h <<\EOF
#define HAVE_GETTIMEOFDAY 1
EOF
- LIBS="-lbsd $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lbsd; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
fi
fi
;;
esac
-echo "$as_me:13770: checking if -lm needed for math functions" >&5
+echo "$as_me:17295: checking if -lm needed for math functions" >&5
echo $ECHO_N "checking if -lm needed for math functions... $ECHO_C" >&6
if test "${cf_cv_need_libm+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13777 "configure"
+#line 17302 "configure"
#include "confdefs.h"
#include <stdio.h>
+ #include <stdlib.h>
#include <math.h>
int
-main ()
+main (void)
{
double x = rand(); printf("result = %g\n", pow(sin(x),x))
;
@@ -13789,16 +17315,16 @@ double x = rand(); printf("result = %g\n", pow(sin(x),x))
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13792: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17318: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13795: \$? = $ac_status" >&5
+ echo "$as_me:17321: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13798: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17324: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13801: \$? = $ac_status" >&5
+ echo "$as_me:17327: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_need_libm=no
else
@@ -13808,7 +17334,7 @@ cf_cv_need_libm=yes
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:13811: result: $cf_cv_need_libm" >&5
+echo "$as_me:17337: result: $cf_cv_need_libm" >&5
echo "${ECHO_T}$cf_cv_need_libm" >&6
if test "$cf_cv_need_libm" = yes
then
@@ -13816,13 +17342,13 @@ MATH_LIB=-lm
fi
### Checks for header files.
-echo "$as_me:13819: checking for ANSI C header files" >&5
+echo "$as_me:17345: checking for ANSI C header files" >&5
echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
if test "${ac_cv_header_stdc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13825 "configure"
+#line 17351 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -13830,13 +17356,13 @@ else
#include <float.h>
_ACEOF
-if { (eval echo "$as_me:13833: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:17359: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:13839: \$? = $ac_status" >&5
+ echo "$as_me:17365: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -13858,7 +17384,7 @@ rm -f conftest.err conftest.$ac_ext
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat >conftest.$ac_ext <<_ACEOF
-#line 13861 "configure"
+#line 17387 "configure"
#include "confdefs.h"
#include <string.h>
@@ -13876,7 +17402,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 <<_ACEOF
-#line 13879 "configure"
+#line 17405 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -13897,7 +17423,7 @@ if test $ac_cv_header_stdc = yes; then
:
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13900 "configure"
+#line 17426 "configure"
#include "confdefs.h"
#include <ctype.h>
#if ((' ' & 0x0FF) == 0x020)
@@ -13912,7 +17438,7 @@ else
#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
int
-main ()
+main (void)
{
int i;
for (i = 0; i < 256; i++)
@@ -13923,15 +17449,15 @@ main ()
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:13926: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17452: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13929: \$? = $ac_status" >&5
+ echo "$as_me:17455: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:13931: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17457: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13934: \$? = $ac_status" >&5
+ echo "$as_me:17460: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -13944,7 +17470,7 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
fi
-echo "$as_me:13947: result: $ac_cv_header_stdc" >&5
+echo "$as_me:17473: result: $ac_cv_header_stdc" >&5
echo "${ECHO_T}$ac_cv_header_stdc" >&6
if test $ac_cv_header_stdc = yes; then
@@ -13957,19 +17483,19 @@ fi
ac_header_dirent=no
for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-echo "$as_me:13960: checking for $ac_hdr that defines DIR" >&5
+echo "$as_me:17486: checking for $ac_hdr that defines DIR" >&5
echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13966 "configure"
+#line 17492 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
int
-main ()
+main (void)
{
if ((DIR *) 0)
return 0;
@@ -13978,16 +17504,16 @@ return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13981: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17507: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:13984: \$? = $ac_status" >&5
+ echo "$as_me:17510: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13987: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17513: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13990: \$? = $ac_status" >&5
+ echo "$as_me:17516: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_Header=yes"
else
@@ -13997,7 +17523,7 @@ eval "$as_ac_Header=no"
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:14000: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:17526: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -14010,7 +17536,7 @@ fi
done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
- echo "$as_me:14013: checking for opendir in -ldir" >&5
+ echo "$as_me:17539: checking for opendir in -ldir" >&5
echo $ECHO_N "checking for opendir in -ldir... $ECHO_C" >&6
if test "${ac_cv_lib_dir_opendir+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -14018,7 +17544,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldir $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 14021 "configure"
+#line 17547 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -14029,7 +17555,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char opendir ();
int
-main ()
+main (void)
{
opendir ();
;
@@ -14037,16 +17563,16 @@ opendir ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14040: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17566: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14043: \$? = $ac_status" >&5
+ echo "$as_me:17569: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14046: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17572: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14049: \$? = $ac_status" >&5
+ echo "$as_me:17575: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_dir_opendir=yes
else
@@ -14057,14 +17583,14 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:14060: result: $ac_cv_lib_dir_opendir" >&5
+echo "$as_me:17586: result: $ac_cv_lib_dir_opendir" >&5
echo "${ECHO_T}$ac_cv_lib_dir_opendir" >&6
if test $ac_cv_lib_dir_opendir = yes; then
LIBS="$LIBS -ldir"
fi
else
- echo "$as_me:14067: checking for opendir in -lx" >&5
+ echo "$as_me:17593: checking for opendir in -lx" >&5
echo $ECHO_N "checking for opendir in -lx... $ECHO_C" >&6
if test "${ac_cv_lib_x_opendir+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -14072,7 +17598,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lx $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 14075 "configure"
+#line 17601 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -14083,7 +17609,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char opendir ();
int
-main ()
+main (void)
{
opendir ();
;
@@ -14091,16 +17617,16 @@ opendir ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14094: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17620: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14097: \$? = $ac_status" >&5
+ echo "$as_me:17623: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14100: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17626: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14103: \$? = $ac_status" >&5
+ echo "$as_me:17629: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_x_opendir=yes
else
@@ -14111,7 +17637,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:14114: result: $ac_cv_lib_x_opendir" >&5
+echo "$as_me:17640: result: $ac_cv_lib_x_opendir" >&5
echo "${ECHO_T}$ac_cv_lib_x_opendir" >&6
if test $ac_cv_lib_x_opendir = yes; then
LIBS="$LIBS -lx"
@@ -14119,20 +17645,20 @@ fi
fi
-echo "$as_me:14122: checking whether time.h and sys/time.h may both be included" >&5
+echo "$as_me:17648: checking whether time.h and sys/time.h may both be included" >&5
echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
if test "${ac_cv_header_time+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14128 "configure"
+#line 17654 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
#include <time.h>
int
-main ()
+main (void)
{
if ((struct tm *) 0)
return 0;
@@ -14141,16 +17667,16 @@ return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14144: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17670: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14147: \$? = $ac_status" >&5
+ echo "$as_me:17673: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14150: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17676: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14153: \$? = $ac_status" >&5
+ echo "$as_me:17679: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_header_time=yes
else
@@ -14160,7 +17686,7 @@ ac_cv_header_time=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:14163: result: $ac_cv_header_time" >&5
+echo "$as_me:17689: result: $ac_cv_header_time" >&5
echo "${ECHO_T}$ac_cv_header_time" >&6
if test $ac_cv_header_time = yes; then
@@ -14173,59 +17699,59 @@ fi
cf_regex_func=no
cf_regex_libs="regex re"
-case $host_os in #(vi
-mingw*)
+case $host_os in
+(mingw*)
cf_regex_libs="gnurx $cf_regex_libs"
;;
esac
-echo "$as_me:14182: checking for regcomp" >&5
+echo "$as_me:17708: checking for regcomp" >&5
echo $ECHO_N "checking for regcomp... $ECHO_C" >&6
if test "${ac_cv_func_regcomp+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14188 "configure"
+#line 17714 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char regcomp (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define regcomp autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef regcomp
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char regcomp ();
-char (*f) ();
+char regcomp (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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_regcomp) || defined (__stub___regcomp)
-choke me
-#else
-f = regcomp; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for regcomp
#endif
+ return regcomp ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14219: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17745: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14222: \$? = $ac_status" >&5
+ echo "$as_me:17748: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14225: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17751: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14228: \$? = $ac_status" >&5
+ echo "$as_me:17754: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_regcomp=yes
else
@@ -14235,7 +17761,7 @@ ac_cv_func_regcomp=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:14238: result: $ac_cv_func_regcomp" >&5
+echo "$as_me:17764: result: $ac_cv_func_regcomp" >&5
echo "${ECHO_T}$ac_cv_func_regcomp" >&6
if test $ac_cv_func_regcomp = yes; then
cf_regex_func=regcomp
@@ -14244,7 +17770,7 @@ else
for cf_regex_lib in $cf_regex_libs
do
as_ac_Lib=`echo "ac_cv_lib_$cf_regex_lib''_regcomp" | $as_tr_sh`
-echo "$as_me:14247: checking for regcomp in -l$cf_regex_lib" >&5
+echo "$as_me:17773: checking for regcomp in -l$cf_regex_lib" >&5
echo $ECHO_N "checking for regcomp in -l$cf_regex_lib... $ECHO_C" >&6
if eval "test \"\${$as_ac_Lib+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -14252,7 +17778,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-l$cf_regex_lib $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 14255 "configure"
+#line 17781 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -14263,7 +17789,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char regcomp ();
int
-main ()
+main (void)
{
regcomp ();
;
@@ -14271,16 +17797,16 @@ regcomp ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14274: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17800: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14277: \$? = $ac_status" >&5
+ echo "$as_me:17803: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14280: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17806: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14283: \$? = $ac_status" >&5
+ echo "$as_me:17809: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_Lib=yes"
else
@@ -14291,11 +17817,26 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:14294: result: `eval echo '${'$as_ac_Lib'}'`" >&5
+echo "$as_me:17820: result: `eval echo '${'$as_ac_Lib'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
if test `eval echo '${'$as_ac_Lib'}'` = yes; then
- LIBS="-l$cf_regex_lib $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_regex_lib; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
cf_regex_func=regcomp
break
fi
@@ -14305,53 +17846,53 @@ fi
fi
if test "$cf_regex_func" = no ; then
- echo "$as_me:14308: checking for compile" >&5
+ echo "$as_me:17849: checking for compile" >&5
echo $ECHO_N "checking for compile... $ECHO_C" >&6
if test "${ac_cv_func_compile+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14314 "configure"
+#line 17855 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char compile (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define compile autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef compile
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char compile ();
-char (*f) ();
+char compile (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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_compile) || defined (__stub___compile)
-choke me
-#else
-f = compile; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for compile
#endif
+ return compile ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14345: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17886: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14348: \$? = $ac_status" >&5
+ echo "$as_me:17889: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14351: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17892: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14354: \$? = $ac_status" >&5
+ echo "$as_me:17895: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_compile=yes
else
@@ -14361,13 +17902,13 @@ ac_cv_func_compile=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:14364: result: $ac_cv_func_compile" >&5
+echo "$as_me:17905: result: $ac_cv_func_compile" >&5
echo "${ECHO_T}$ac_cv_func_compile" >&6
if test $ac_cv_func_compile = yes; then
cf_regex_func=compile
else
- echo "$as_me:14370: checking for compile in -lgen" >&5
+ echo "$as_me:17911: checking for compile in -lgen" >&5
echo $ECHO_N "checking for compile in -lgen... $ECHO_C" >&6
if test "${ac_cv_lib_gen_compile+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -14375,7 +17916,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgen $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 14378 "configure"
+#line 17919 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -14386,7 +17927,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char compile ();
int
-main ()
+main (void)
{
compile ();
;
@@ -14394,16 +17935,16 @@ compile ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14397: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17938: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14400: \$? = $ac_status" >&5
+ echo "$as_me:17941: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14403: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17944: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14406: \$? = $ac_status" >&5
+ echo "$as_me:17947: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_gen_compile=yes
else
@@ -14414,11 +17955,26 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:14417: result: $ac_cv_lib_gen_compile" >&5
+echo "$as_me:17958: result: $ac_cv_lib_gen_compile" >&5
echo "${ECHO_T}$ac_cv_lib_gen_compile" >&6
if test $ac_cv_lib_gen_compile = yes; then
- LIBS="-lgen $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lgen; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
cf_regex_func=compile
fi
@@ -14427,27 +17983,27 @@ fi
fi
if test "$cf_regex_func" = no ; then
- { echo "$as_me:14430: WARNING: cannot find regular expression library" >&5
+ { echo "$as_me:17986: WARNING: cannot find regular expression library" >&5
echo "$as_me: WARNING: cannot find regular expression library" >&2;}
fi
-echo "$as_me:14434: checking for regular-expression headers" >&5
+echo "$as_me:17990: checking for regular-expression headers" >&5
echo $ECHO_N "checking for regular-expression headers... $ECHO_C" >&6
if test "${cf_cv_regex_hdrs+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cf_cv_regex_hdrs=no
-case $cf_regex_func in #(vi
-compile) #(vi
+case $cf_regex_func in
+(compile)
for cf_regex_hdr in regexp.h regexpr.h
do
cat >conftest.$ac_ext <<_ACEOF
-#line 14446 "configure"
+#line 18002 "configure"
#include "confdefs.h"
#include <$cf_regex_hdr>
int
-main ()
+main (void)
{
char *p = compile("", "", "", 0);
@@ -14458,16 +18014,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14461: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18017: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14464: \$? = $ac_status" >&5
+ echo "$as_me:18020: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14467: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18023: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14470: \$? = $ac_status" >&5
+ echo "$as_me:18026: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_regex_hdrs=$cf_regex_hdr
@@ -14480,16 +18036,16 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
done
;;
-*)
+(*)
for cf_regex_hdr in regex.h
do
cat >conftest.$ac_ext <<_ACEOF
-#line 14487 "configure"
+#line 18043 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$cf_regex_hdr>
int
-main ()
+main (void)
{
regex_t *p;
@@ -14502,16 +18058,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14505: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18061: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14508: \$? = $ac_status" >&5
+ echo "$as_me:18064: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14511: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18067: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14514: \$? = $ac_status" >&5
+ echo "$as_me:18070: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_regex_hdrs=$cf_regex_hdr
@@ -14527,23 +18083,23 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
esac
fi
-echo "$as_me:14530: result: $cf_cv_regex_hdrs" >&5
+echo "$as_me:18086: result: $cf_cv_regex_hdrs" >&5
echo "${ECHO_T}$cf_cv_regex_hdrs" >&6
-case $cf_cv_regex_hdrs in #(vi
- no) { echo "$as_me:14534: WARNING: no regular expression header found" >&5
-echo "$as_me: WARNING: no regular expression header found" >&2;} ;; #(vi
- regex.h)
+case $cf_cv_regex_hdrs in
+ (no) { echo "$as_me:18090: WARNING: no regular expression header found" >&5
+echo "$as_me: WARNING: no regular expression header found" >&2;} ;;
+ (regex.h)
cat >>confdefs.h <<\EOF
#define HAVE_REGEX_H_FUNCS 1
EOF
- ;; #(vi
- regexp.h)
+ ;;
+ (regexp.h)
cat >>confdefs.h <<\EOF
#define HAVE_REGEXP_H_FUNCS 1
EOF
- ;; #(vi
- regexpr.h)
+ ;;
+ (regexpr.h)
cat >>confdefs.h <<\EOF
#define HAVE_REGEXPR_H_FUNCS 1
EOF
@@ -14570,23 +18126,23 @@ wctype.h \
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:14573: checking for $ac_header" >&5
+echo "$as_me:18129: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14579 "configure"
+#line 18135 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:14583: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:18139: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:14589: \$? = $ac_status" >&5
+ echo "$as_me:18145: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -14605,7 +18161,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:14608: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:18164: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -14618,23 +18174,23 @@ done
for ac_header in unistd.h getopt.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:14621: checking for $ac_header" >&5
+echo "$as_me:18177: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14627 "configure"
+#line 18183 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:14631: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:18187: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:14637: \$? = $ac_status" >&5
+ echo "$as_me:18193: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -14653,7 +18209,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:14656: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:18212: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -14663,7 +18219,7 @@ EOF
fi
done
-echo "$as_me:14666: checking for header declaring getopt variables" >&5
+echo "$as_me:18222: checking for header declaring getopt variables" >&5
echo $ECHO_N "checking for header declaring getopt variables... $ECHO_C" >&6
if test "${cf_cv_getopt_header+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -14673,12 +18229,12 @@ cf_cv_getopt_header=none
for cf_header in stdio.h stdlib.h unistd.h getopt.h
do
cat >conftest.$ac_ext <<_ACEOF
-#line 14676 "configure"
+#line 18232 "configure"
#include "confdefs.h"
#include <$cf_header>
int
-main ()
+main (void)
{
int x = optind; char *y = optarg
;
@@ -14686,16 +18242,16 @@ int x = optind; char *y = optarg
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14689: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18245: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14692: \$? = $ac_status" >&5
+ echo "$as_me:18248: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14695: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18251: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14698: \$? = $ac_status" >&5
+ echo "$as_me:18254: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_getopt_header=$cf_header
break
@@ -14707,7 +18263,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:14710: result: $cf_cv_getopt_header" >&5
+echo "$as_me:18266: result: $cf_cv_getopt_header" >&5
echo "${ECHO_T}$cf_cv_getopt_header" >&6
if test $cf_cv_getopt_header != none ; then
@@ -14716,12 +18272,419 @@ cat >>confdefs.h <<\EOF
EOF
fi
+if test $cf_cv_getopt_header = getopt.h ; then
+
+cat >>confdefs.h <<\EOF
+#define NEED_GETOPT_H 1
+EOF
+
+fi
+
+echo "$as_me:18283: checking if external environ is declared" >&5
+echo $ECHO_N "checking if external environ is declared... $ECHO_C" >&6
+if test "${cf_cv_dcl_environ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 18290 "configure"
+#include "confdefs.h"
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#include <unistd.h>
+int
+main (void)
+{
+int x = (int) environ
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:18306: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:18309: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:18312: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:18315: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_dcl_environ=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_dcl_environ=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:18326: result: $cf_cv_dcl_environ" >&5
+echo "${ECHO_T}$cf_cv_dcl_environ" >&6
+
+if test "$cf_cv_dcl_environ" = no ; then
+
+cf_result=`echo "decl_environ" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+
+ cat >>confdefs.h <<EOF
+#define $cf_result 1
+EOF
+
+fi
+
+# It's possible (for near-UNIX clones) that the data doesn't exist
+
+echo "$as_me:18341: checking if external environ exists" >&5
+echo $ECHO_N "checking if external environ exists... $ECHO_C" >&6
+if test "${cf_cv_have_environ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 18348 "configure"
+#include "confdefs.h"
+
+#undef environ
+extern int environ;
+
+int
+main (void)
+{
+environ = 2
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:18363: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:18366: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:18369: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:18372: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_have_environ=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_have_environ=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+
+fi
+echo "$as_me:18383: result: $cf_cv_have_environ" >&5
+echo "${ECHO_T}$cf_cv_have_environ" >&6
+
+if test "$cf_cv_have_environ" = yes ; then
+
+cf_result=`echo "have_environ" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+
+ cat >>confdefs.h <<EOF
+#define $cf_result 1
+EOF
+
+fi
+
+echo "$as_me:18396: checking for getenv" >&5
+echo $ECHO_N "checking for getenv... $ECHO_C" >&6
+if test "${ac_cv_func_getenv+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 18402 "configure"
+#include "confdefs.h"
+#define getenv autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef getenv
+
+#ifdef __cplusplus
+extern "C"
+#endif
+
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char getenv (void);
+
+int
+main (void)
+{
+
+/* The GNU C library defines stubs 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_getenv) || defined (__stub___getenv)
+#error found stub for getenv
+#endif
+
+ return getenv ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:18433: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:18436: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:18439: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:18442: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_getenv=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_getenv=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:18452: result: $ac_cv_func_getenv" >&5
+echo "${ECHO_T}$ac_cv_func_getenv" >&6
+
+for ac_func in putenv setenv strdup
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:18458: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 18464 "configure"
+#include "confdefs.h"
+#define $ac_func autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef $ac_func
+
+#ifdef __cplusplus
+extern "C"
+#endif
+
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func (void);
+
+int
+main (void)
+{
+
+/* The GNU C library defines stubs for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+#error found stub for $ac_func
+#endif
+
+ return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:18495: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:18498: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:18501: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:18504: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:18514: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+echo "$as_me:18524: checking if getenv returns consistent values" >&5
+echo $ECHO_N "checking if getenv returns consistent values... $ECHO_C" >&6
+if test "${cf_cv_consistent_getenv+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+if test "$cross_compiling" = yes; then
+ cf_cv_consistent_getenv=unknown
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 18534 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+
+#if defined(HAVE_ENVIRON) && defined(DECL_ENVIRON) && !defined(environ)
+extern char **environ; /* POSIX, but some systems are not... */
+#endif
+
+#if defined(HAVE_STRDUP)
+#define str_alloc(s) strdup(s)
+#else
+#define str_alloc(s) strcpy(malloc(strlen(s) + 1, s))
+#endif
+
+static void set_value(const char *name, const char *value)
+{
+#if defined(HAVE_SETENV)
+ setenv(name, value, 1);
+#elif defined(HAVE_PUTENV)
+ char buffer[1024];
+ sprintf(buffer, "%s=%s", name, value);
+ putenv(str_alloc(buffer));
+#else
+#error neither putenv/setenv found
+#endif
+}
+int main(void)
+{
+ int pass;
+ size_t numenv, limit, j;
+ char **mynames;
+ char **myvalues;
+ char **mypointer;
+ char *equals;
+ for (numenv = 0; environ[numenv]; ++numenv) ;
+ limit = numenv + 10;
+ mynames = (char **) calloc(limit + 1, sizeof(char *));
+ myvalues = (char **) calloc(limit + 1, sizeof(char *));
+ mypointer = (char **) calloc(limit + 1, sizeof(char *));
+#if defined(HAVE_ENVIRON)
+ for (j = 0; environ[j]; ++j) {
+ mynames[j] = str_alloc(environ[j]);
+ equals = strchr(mynames[j], '=');
+ if (equals != 0) {
+ *equals++ = '\0';
+ myvalues[j] = str_alloc(equals);
+ } else {
+ myvalues[j] = str_alloc("");
+ }
+ }
+#endif
+ for (j = numenv; j < limit; ++j) {
+ char name[80];
+ char value[80];
+ size_t found;
+ size_t k = 0;
+ do {
+ size_t jk;
+ found = 0;
+ sprintf(name, "TERM%lu", (unsigned long) k);
+ for (jk = 0; jk < j; ++jk) {
+ if (!strcmp(name, mynames[jk])) {
+ found = 1;
+ ++k;
+ break;
+ }
+ }
+ } while (found);
+ sprintf(value, "%lu:%p", (unsigned long) k, &mynames[j]);
+ set_value(name, value);
+ mynames[j] = str_alloc(name);
+ myvalues[j] = str_alloc(value);
+ }
+ for (pass = 0; pass < 3; ++pass) {
+ for (j = 0; j < limit; ++j) {
+ char *value = getenv(mynames[j]);
+ if (pass) {
+ if (value == 0) {
+ fprintf(stderr, "getenv returned null for %s\n", mynames[j]);
+ ${cf_cv_main_return:-return}(1);
+ } else if (value != mypointer[j]) {
+ fprintf(stderr, "getenv returned different pointer for %s\n", mynames[j]);
+ ${cf_cv_main_return:-return}(1);
+ } else if (strcmp(value, myvalues[j])) {
+ fprintf(stderr, "getenv returned different value for %s\n", mynames[j]);
+ ${cf_cv_main_return:-return}(1);
+ }
+ } else {
+ size_t k;
+ mypointer[j] = value;
+ for (k = 0; k < j; ++k) {
+ if (mypointer[j] == mypointer[k]) {
+ fprintf(stderr, "getenv returned same pointer for %s and %s\n", mynames[j], mynames[k]);
+ ${cf_cv_main_return:-return}(1);
+ }
+ }
+ }
+ }
+ }
+ ${cf_cv_main_return:-return}(0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:18643: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:18646: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:18648: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:18651: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_consistent_getenv=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_consistent_getenv=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+fi
+echo "$as_me:18664: result: $cf_cv_consistent_getenv" >&5
+echo "${ECHO_T}$cf_cv_consistent_getenv" >&6
+
+if test "x$cf_cv_consistent_getenv" = xno
+then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_CONSISTENT_GETENV 1
+EOF
+
+fi
+
+if test "x$cf_cv_consistent_getenv" = xno && \
+ test "x$cf_with_trace" = xyes
+then
+ { echo "$as_me:18679: WARNING: The NCURSES_TRACE environment variable is not supported with this configuration" >&5
+echo "$as_me: WARNING: The NCURSES_TRACE environment variable is not supported with this configuration" >&2;}
+fi
# check for ISC (this may also define _POSIX_SOURCE)
# Note: even non-Posix ISC needs <sys/bsdtypes.h> to declare fd_set
if test "x$ISC" = xyes ; then
-echo "$as_me:14724: checking for main in -lcposix" >&5
+echo "$as_me:18687: checking for main in -lcposix" >&5
echo $ECHO_N "checking for main in -lcposix... $ECHO_C" >&6
if test "${ac_cv_lib_cposix_main+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -14729,11 +18692,11 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lcposix $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 14732 "configure"
+#line 18695 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
main ();
;
@@ -14741,16 +18704,16 @@ main ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14744: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18707: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14747: \$? = $ac_status" >&5
+ echo "$as_me:18710: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14750: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18713: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14753: \$? = $ac_status" >&5
+ echo "$as_me:18716: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_cposix_main=yes
else
@@ -14761,7 +18724,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:14764: result: $ac_cv_lib_cposix_main" >&5
+echo "$as_me:18727: result: $ac_cv_lib_cposix_main" >&5
echo "${ECHO_T}$ac_cv_lib_cposix_main" >&6
if test $ac_cv_lib_cposix_main = yes; then
cat >>confdefs.h <<EOF
@@ -14772,7 +18735,7 @@ EOF
fi
- echo "$as_me:14775: checking for bzero in -linet" >&5
+ echo "$as_me:18738: checking for bzero in -linet" >&5
echo $ECHO_N "checking for bzero in -linet... $ECHO_C" >&6
if test "${ac_cv_lib_inet_bzero+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -14780,7 +18743,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-linet $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 14783 "configure"
+#line 18746 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -14791,7 +18754,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char bzero ();
int
-main ()
+main (void)
{
bzero ();
;
@@ -14799,16 +18762,16 @@ bzero ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14802: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18765: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14805: \$? = $ac_status" >&5
+ echo "$as_me:18768: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14808: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18771: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14811: \$? = $ac_status" >&5
+ echo "$as_me:18774: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_inet_bzero=yes
else
@@ -14819,21 +18782,37 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:14822: result: $ac_cv_lib_inet_bzero" >&5
+echo "$as_me:18785: result: $ac_cv_lib_inet_bzero" >&5
echo "${ECHO_T}$ac_cv_lib_inet_bzero" >&6
if test $ac_cv_lib_inet_bzero = yes; then
- LIBS="-linet $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -linet; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
fi
fi
-echo "$as_me:14829: checking if sys/time.h works with sys/select.h" >&5
+echo "$as_me:18808: checking if sys/time.h works with sys/select.h" >&5
echo $ECHO_N "checking if sys/time.h works with sys/select.h... $ECHO_C" >&6
if test "${cf_cv_sys_time_select+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14836 "configure"
+#line 18815 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -14845,7 +18824,7 @@ cat >conftest.$ac_ext <<_ACEOF
#endif
int
-main ()
+main (void)
{
;
@@ -14853,16 +18832,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14856: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18835: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14859: \$? = $ac_status" >&5
+ echo "$as_me:18838: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14862: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18841: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14865: \$? = $ac_status" >&5
+ echo "$as_me:18844: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_sys_time_select=yes
else
@@ -14874,7 +18853,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:14877: result: $cf_cv_sys_time_select" >&5
+echo "$as_me:18856: result: $cf_cv_sys_time_select" >&5
echo "${ECHO_T}$cf_cv_sys_time_select" >&6
test "$cf_cv_sys_time_select" = yes &&
cat >>confdefs.h <<\EOF
@@ -14889,17 +18868,17 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
-echo "$as_me:14892: checking for an ANSI C-conforming const" >&5
+echo "$as_me:18871: checking for an ANSI C-conforming const" >&5
echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
if test "${ac_cv_c_const+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14898 "configure"
+#line 18877 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
/* FIXME: Include the comments suggested by Paul. */
#ifndef __cplusplus
@@ -14953,16 +18932,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14956: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18935: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14959: \$? = $ac_status" >&5
+ echo "$as_me:18938: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14962: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18941: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14965: \$? = $ac_status" >&5
+ echo "$as_me:18944: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_c_const=yes
else
@@ -14972,7 +18951,7 @@ ac_cv_c_const=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:14975: result: $ac_cv_c_const" >&5
+echo "$as_me:18954: result: $ac_cv_c_const" >&5
echo "${ECHO_T}$ac_cv_c_const" >&6
if test $ac_cv_c_const = no; then
@@ -14982,7 +18961,7 @@ EOF
fi
-echo "$as_me:14985: checking for inline" >&5
+echo "$as_me:18964: checking for inline" >&5
echo $ECHO_N "checking for inline... $ECHO_C" >&6
if test "${ac_cv_c_inline+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -14990,7 +18969,7 @@ else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat >conftest.$ac_ext <<_ACEOF
-#line 14993 "configure"
+#line 18972 "configure"
#include "confdefs.h"
#ifndef __cplusplus
static $ac_kw int static_foo () {return 0; }
@@ -14999,16 +18978,16 @@ $ac_kw int foo () {return 0; }
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15002: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18981: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15005: \$? = $ac_status" >&5
+ echo "$as_me:18984: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15008: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18987: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15011: \$? = $ac_status" >&5
+ echo "$as_me:18990: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_c_inline=$ac_kw; break
else
@@ -15019,7 +18998,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:15022: result: $ac_cv_c_inline" >&5
+echo "$as_me:19001: result: $ac_cv_c_inline" >&5
echo "${ECHO_T}$ac_cv_c_inline" >&6
case $ac_cv_c_inline in
inline | yes) ;;
@@ -15036,29 +19015,29 @@ esac
NCURSES_INLINE=
if test "$ac_cv_c_inline" != no ; then
- NCURSES_INLINE=inline
- if test "$INTEL_COMPILER" = yes
- then
- :
- elif test "$CLANG_COMPILER" = yes
- then
- :
- elif test "$GCC" = yes
- then
- echo "$as_me:15048: checking if $CC supports options to tune inlining" >&5
+ NCURSES_INLINE=inline
+ if test "$INTEL_COMPILER" = yes
+ then
+ :
+ elif test "$CLANG_COMPILER" = yes
+ then
+ :
+ elif test "$GCC" = yes
+ then
+ echo "$as_me:19027: checking if $CC supports options to tune inlining" >&5
echo $ECHO_N "checking if $CC supports options to tune inlining... $ECHO_C" >&6
if test "${cf_cv_gcc_inline+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- cf_save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS --param max-inline-insns-single=1200"
- cat >conftest.$ac_ext <<_ACEOF
-#line 15057 "configure"
+ cf_save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS --param max-inline-insns-single=1200"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 19036 "configure"
#include "confdefs.h"
inline int foo(void) { return 1; }
int
-main ()
+main (void)
{
${cf_cv_main_return:-return} foo()
;
@@ -15066,16 +19045,16 @@ ${cf_cv_main_return:-return} foo()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15069: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19048: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15072: \$? = $ac_status" >&5
+ echo "$as_me:19051: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15075: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19054: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15078: \$? = $ac_status" >&5
+ echo "$as_me:19057: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_gcc_inline=yes
else
@@ -15084,12 +19063,12 @@ cat conftest.$ac_ext >&5
cf_cv_gcc_inline=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$cf_save_CFLAGS
+ CFLAGS=$cf_save_CFLAGS
fi
-echo "$as_me:15090: result: $cf_cv_gcc_inline" >&5
+echo "$as_me:19069: result: $cf_cv_gcc_inline" >&5
echo "${ECHO_T}$cf_cv_gcc_inline" >&6
- if test "$cf_cv_gcc_inline" = yes ; then
+ if test "$cf_cv_gcc_inline" = yes ; then
cf_fix_cppflags=no
cf_new_cflags=
@@ -15099,32 +19078,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in --param max-inline-insns-single=1200
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -15133,21 +19118,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -15156,24 +19149,30 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
- fi
- fi
+ fi
+ fi
fi
-echo "$as_me:15176: checking for signal global datatype" >&5
+echo "$as_me:19175: checking for signal global datatype" >&5
echo $ECHO_N "checking for signal global datatype... $ECHO_C" >&6
if test "${cf_cv_sig_atomic_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -15185,7 +19184,7 @@ else
"int"
do
cat >conftest.$ac_ext <<_ACEOF
-#line 15188 "configure"
+#line 19187 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -15199,7 +19198,7 @@ static void handler(int sig)
x = 5;
}
int
-main ()
+main (void)
{
signal(SIGINT, handler);
x = 1
@@ -15208,16 +19207,16 @@ signal(SIGINT, handler);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15211: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19210: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15214: \$? = $ac_status" >&5
+ echo "$as_me:19213: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15217: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19216: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15220: \$? = $ac_status" >&5
+ echo "$as_me:19219: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_sig_atomic_t=$cf_type
else
@@ -15231,7 +19230,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:15234: result: $cf_cv_sig_atomic_t" >&5
+echo "$as_me:19233: result: $cf_cv_sig_atomic_t" >&5
echo "${ECHO_T}$cf_cv_sig_atomic_t" >&6
test "$cf_cv_sig_atomic_t" != no &&
cat >>confdefs.h <<EOF
@@ -15240,7 +19239,7 @@ EOF
if test $NCURSES_CHTYPE = auto ; then
-echo "$as_me:15243: checking for type of chtype" >&5
+echo "$as_me:19242: checking for type of chtype" >&5
echo $ECHO_N "checking for type of chtype... $ECHO_C" >&6
if test "${cf_cv_typeof_chtype+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -15250,12 +19249,12 @@ else
cf_cv_typeof_chtype=long
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15253 "configure"
+#line 19252 "configure"
#include "confdefs.h"
#define WANT_BITS 31
#include <stdio.h>
-int main()
+int main(void)
{
FILE *fp = fopen("cf_test.out", "w");
if (fp != 0) {
@@ -15285,15 +19284,15 @@ int main()
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15288: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19287: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15291: \$? = $ac_status" >&5
+ echo "$as_me:19290: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15293: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19292: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15296: \$? = $ac_status" >&5
+ echo "$as_me:19295: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_typeof_chtype=`cat cf_test.out`
else
@@ -15308,7 +19307,7 @@ fi
fi
-echo "$as_me:15311: result: $cf_cv_typeof_chtype" >&5
+echo "$as_me:19310: result: $cf_cv_typeof_chtype" >&5
echo "${ECHO_T}$cf_cv_typeof_chtype" >&6
cat >>confdefs.h <<EOF
@@ -15320,18 +19319,18 @@ else
fi
test "$cf_cv_typeof_chtype" = unsigned && cf_cv_typeof_chtype=""
-echo "$as_me:15323: checking if unsigned literals are legal" >&5
+echo "$as_me:19322: checking if unsigned literals are legal" >&5
echo $ECHO_N "checking if unsigned literals are legal... $ECHO_C" >&6
if test "${cf_cv_unsigned_literals+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15330 "configure"
+#line 19329 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
long x = 1L + 1UL + 1U + 1
;
@@ -15339,16 +19338,16 @@ long x = 1L + 1UL + 1U + 1
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15342: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19341: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15345: \$? = $ac_status" >&5
+ echo "$as_me:19344: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15348: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19347: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15351: \$? = $ac_status" >&5
+ echo "$as_me:19350: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_unsigned_literals=yes
else
@@ -15360,7 +19359,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:15363: result: $cf_cv_unsigned_literals" >&5
+echo "$as_me:19362: result: $cf_cv_unsigned_literals" >&5
echo "${ECHO_T}$cf_cv_unsigned_literals" >&6
cf_cv_1UL="1"
@@ -15376,14 +19375,14 @@ test "$cf_cv_typeof_mmask_t" = unsigned && cf_cv_typeof_mmask_t=""
### Checks for external-data
-echo "$as_me:15379: checking if external errno is declared" >&5
+echo "$as_me:19378: checking if external errno is declared" >&5
echo $ECHO_N "checking if external errno is declared... $ECHO_C" >&6
if test "${cf_cv_dcl_errno+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15386 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 19385 "configure"
#include "confdefs.h"
#ifdef HAVE_STDLIB_H
@@ -15393,7 +19392,7 @@ else
#include <sys/types.h>
#include <errno.h>
int
-main ()
+main (void)
{
int x = (int) errno
;
@@ -15401,16 +19400,16 @@ int x = (int) errno
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15404: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19403: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15407: \$? = $ac_status" >&5
+ echo "$as_me:19406: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15410: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19409: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15413: \$? = $ac_status" >&5
+ echo "$as_me:19412: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_dcl_errno=yes
else
@@ -15421,14 +19420,14 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:15424: result: $cf_cv_dcl_errno" >&5
+echo "$as_me:19423: result: $cf_cv_dcl_errno" >&5
echo "${ECHO_T}$cf_cv_dcl_errno" >&6
if test "$cf_cv_dcl_errno" = no ; then
cf_result=`echo "decl_errno" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
- cat >>confdefs.h <<EOF
+ cat >>confdefs.h <<EOF
#define $cf_result 1
EOF
@@ -15436,21 +19435,21 @@ fi
# It's possible (for near-UNIX clones) that the data doesn't exist
-echo "$as_me:15439: checking if external errno exists" >&5
+echo "$as_me:19438: checking if external errno exists" >&5
echo $ECHO_N "checking if external errno exists... $ECHO_C" >&6
if test "${cf_cv_have_errno+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15446 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 19445 "configure"
#include "confdefs.h"
#undef errno
extern int errno;
int
-main ()
+main (void)
{
errno = 2
;
@@ -15458,16 +19457,16 @@ errno = 2
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15461: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19460: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15464: \$? = $ac_status" >&5
+ echo "$as_me:19463: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15467: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19466: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15470: \$? = $ac_status" >&5
+ echo "$as_me:19469: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_have_errno=yes
else
@@ -15478,20 +19477,20 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:15481: result: $cf_cv_have_errno" >&5
+echo "$as_me:19480: result: $cf_cv_have_errno" >&5
echo "${ECHO_T}$cf_cv_have_errno" >&6
if test "$cf_cv_have_errno" = yes ; then
cf_result=`echo "have_errno" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
- cat >>confdefs.h <<EOF
+ cat >>confdefs.h <<EOF
#define $cf_result 1
EOF
fi
-echo "$as_me:15494: checking if data-only library module links" >&5
+echo "$as_me:19493: checking if data-only library module links" >&5
echo $ECHO_N "checking if data-only library module links... $ECHO_C" >&6
if test "${cf_cv_link_dataonly+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -15499,21 +19498,21 @@ else
rm -f conftest.a
cat >conftest.$ac_ext <<EOF
-#line 15502 "configure"
+#line 19501 "configure"
int testdata[3] = { 123, 456, 789 };
EOF
- if { (eval echo "$as_me:15505: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:19504: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15508: \$? = $ac_status" >&5
+ echo "$as_me:19507: \$? = $ac_status" >&5
(exit $ac_status); } ; then
mv conftest.o data.o && \
( $AR $ARFLAGS conftest.a data.o ) 2>&5 1>/dev/null
fi
rm -f conftest.$ac_ext data.o
cat >conftest.$ac_ext <<EOF
-#line 15515 "configure"
-int testfunc()
+#line 19514 "configure"
+int testfunc(void)
{
#if defined(NeXT)
${cf_cv_main_return:-return}(1); /* I'm told this linker is broken */
@@ -15525,10 +19524,10 @@ int testfunc()
#endif
}
EOF
- if { (eval echo "$as_me:15528: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:19527: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15531: \$? = $ac_status" >&5
+ echo "$as_me:19530: \$? = $ac_status" >&5
(exit $ac_status); }; then
mv conftest.o func.o && \
( $AR $ARFLAGS conftest.a func.o ) 2>&5 1>/dev/null
@@ -15541,10 +19540,10 @@ EOF
cf_cv_link_dataonly=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15544 "configure"
+#line 19543 "configure"
#include "confdefs.h"
- int main()
+ int main(void)
{
extern int testfunc();
${cf_cv_main_return:-return} (!testfunc());
@@ -15552,15 +19551,15 @@ else
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15555: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19554: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15558: \$? = $ac_status" >&5
+ echo "$as_me:19557: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15560: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19559: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15563: \$? = $ac_status" >&5
+ echo "$as_me:19562: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_link_dataonly=yes
else
@@ -15575,7 +19574,7 @@ fi
fi
-echo "$as_me:15578: result: $cf_cv_link_dataonly" >&5
+echo "$as_me:19577: result: $cf_cv_link_dataonly" >&5
echo "${ECHO_T}$cf_cv_link_dataonly" >&6
if test "$cf_cv_link_dataonly" = no ; then
@@ -15593,8 +19592,10 @@ for ac_func in \
getcwd \
getegid \
geteuid \
+getopt \
getttynam \
issetugid \
+localeconv \
poll \
putenv \
remove \
@@ -15607,59 +19608,61 @@ sigaction \
sigvec \
strdup \
strstr \
+sysconf \
tcgetpgrp \
times \
+tsearch \
vsnprintf \
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:15616: checking for $ac_func" >&5
+echo "$as_me:19619: checking for $ac_func" >&5
echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15622 "configure"
+#line 19625 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define $ac_func autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef $ac_func
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+char $ac_func (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for $ac_func
#endif
+ return $ac_func ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15653: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19656: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15656: \$? = $ac_status" >&5
+ echo "$as_me:19659: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15659: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19662: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15662: \$? = $ac_status" >&5
+ echo "$as_me:19665: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_var=yes"
else
@@ -15669,7 +19672,7 @@ eval "$as_ac_var=no"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:15672: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "$as_me:19675: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
if test `eval echo '${'$as_ac_var'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -15679,21 +19682,43 @@ EOF
fi
done
+if test "x$ac_cv_func_getopt" = xno && \
+ test "x$cf_with_progs$cf_with_tests" != xnono; then
+ { { echo "$as_me:19687: error: getopt is required for building programs" >&5
+echo "$as_me: error: getopt is required for building programs" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+if test "x$with_safe_sprintf" = xyes
+then
+ if test "x$ac_cv_func_vsnprintf" = xyes
+ then
+ { echo "$as_me:19696: WARNING: will use vsnprintf instead of safe-sprintf option" >&5
+echo "$as_me: WARNING: will use vsnprintf instead of safe-sprintf option" >&2;}
+ else
+
+cat >>confdefs.h <<\EOF
+#define USE_SAFE_SPRINTF 1
+EOF
+
+ fi
+fi
+
if test "x$with_getcap" = "xyes" ; then
-echo "$as_me:15684: checking for terminal-capability database functions" >&5
+echo "$as_me:19709: checking for terminal-capability database functions" >&5
echo $ECHO_N "checking for terminal-capability database functions... $ECHO_C" >&6
if test "${cf_cv_cgetent+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15691 "configure"
+#line 19716 "configure"
#include "confdefs.h"
#include <stdlib.h>
int
-main ()
+main (void)
{
char temp[128];
@@ -15708,16 +19733,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15711: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19736: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15714: \$? = $ac_status" >&5
+ echo "$as_me:19739: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15717: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19742: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15720: \$? = $ac_status" >&5
+ echo "$as_me:19745: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_cgetent=yes
else
@@ -15728,7 +19753,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:15731: result: $cf_cv_cgetent" >&5
+echo "$as_me:19756: result: $cf_cv_cgetent" >&5
echo "${ECHO_T}$cf_cv_cgetent" >&6
if test "$cf_cv_cgetent" = yes
@@ -15738,19 +19763,20 @@ cat >>confdefs.h <<\EOF
#define HAVE_BSD_CGETENT 1
EOF
-echo "$as_me:15741: checking if cgetent uses const parameter" >&5
+echo "$as_me:19766: checking if cgetent uses const parameter" >&5
echo $ECHO_N "checking if cgetent uses const parameter... $ECHO_C" >&6
if test "${cf_cv_cgetent_const+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15748 "configure"
+#line 19773 "configure"
#include "confdefs.h"
+#pragma GCC diagnostic error "-Wincompatible-pointer-types-discards-qualifiers"
#include <stdlib.h>
int
-main ()
+main (void)
{
char temp[128];
@@ -15767,16 +19793,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15770: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19796: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15773: \$? = $ac_status" >&5
+ echo "$as_me:19799: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15776: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19802: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15779: \$? = $ac_status" >&5
+ echo "$as_me:19805: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_cgetent_const=yes
else
@@ -15787,7 +19813,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:15790: result: $cf_cv_cgetent_const" >&5
+echo "$as_me:19816: result: $cf_cv_cgetent_const" >&5
echo "${ECHO_T}$cf_cv_cgetent_const" >&6
if test "$cf_cv_cgetent_const" = yes
then
@@ -15801,18 +19827,18 @@ fi
fi
-echo "$as_me:15804: checking for isascii" >&5
+echo "$as_me:19830: checking for isascii" >&5
echo $ECHO_N "checking for isascii... $ECHO_C" >&6
if test "${cf_cv_have_isascii+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15811 "configure"
+#line 19837 "configure"
#include "confdefs.h"
#include <ctype.h>
int
-main ()
+main (void)
{
int x = isascii(' ')
;
@@ -15820,16 +19846,16 @@ int x = isascii(' ')
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15823: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19849: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15826: \$? = $ac_status" >&5
+ echo "$as_me:19852: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15829: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19855: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15832: \$? = $ac_status" >&5
+ echo "$as_me:19858: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_have_isascii=yes
else
@@ -15840,7 +19866,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:15843: result: $cf_cv_have_isascii" >&5
+echo "$as_me:19869: result: $cf_cv_have_isascii" >&5
echo "${ECHO_T}$cf_cv_have_isascii" >&6
test "$cf_cv_have_isascii" = yes &&
cat >>confdefs.h <<\EOF
@@ -15848,16 +19874,16 @@ cat >>confdefs.h <<\EOF
EOF
if test "$ac_cv_func_sigaction" = yes; then
-echo "$as_me:15851: checking whether sigaction needs _POSIX_SOURCE" >&5
+echo "$as_me:19877: checking whether sigaction needs _POSIX_SOURCE" >&5
echo $ECHO_N "checking whether sigaction needs _POSIX_SOURCE... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 15854 "configure"
+#line 19880 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
int
-main ()
+main (void)
{
struct sigaction act
;
@@ -15865,16 +19891,16 @@ struct sigaction act
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15868: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19894: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15871: \$? = $ac_status" >&5
+ echo "$as_me:19897: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15874: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19900: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15877: \$? = $ac_status" >&5
+ echo "$as_me:19903: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
sigact_bad=no
else
@@ -15882,14 +19908,14 @@ else
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 15885 "configure"
+#line 19911 "configure"
#include "confdefs.h"
#define _POSIX_SOURCE
#include <sys/types.h>
#include <signal.h>
int
-main ()
+main (void)
{
struct sigaction act
;
@@ -15897,16 +19923,16 @@ struct sigaction act
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15900: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19926: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15903: \$? = $ac_status" >&5
+ echo "$as_me:19929: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15906: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19932: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15909: \$? = $ac_status" >&5
+ echo "$as_me:19935: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
sigact_bad=yes
@@ -15922,11 +19948,11 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:15925: result: $sigact_bad" >&5
+echo "$as_me:19951: result: $sigact_bad" >&5
echo "${ECHO_T}$sigact_bad" >&6
fi
-echo "$as_me:15929: checking if nanosleep really works" >&5
+echo "$as_me:19955: checking if nanosleep really works" >&5
echo $ECHO_N "checking if nanosleep really works... $ECHO_C" >&6
if test "${cf_cv_func_nanosleep+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -15936,7 +19962,7 @@ if test "$cross_compiling" = yes; then
cf_cv_func_nanosleep=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15939 "configure"
+#line 19965 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -15947,7 +19973,7 @@ else
#include <sys/time.h>
#endif
-int main() {
+int main(void) {
struct timespec ts1, ts2;
int code;
ts1.tv_sec = 0;
@@ -15961,15 +19987,15 @@ int main() {
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15964: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19990: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15967: \$? = $ac_status" >&5
+ echo "$as_me:19993: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15969: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19995: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15972: \$? = $ac_status" >&5
+ echo "$as_me:19998: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_func_nanosleep=yes
else
@@ -15981,7 +20007,7 @@ fi
rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
-echo "$as_me:15984: result: $cf_cv_func_nanosleep" >&5
+echo "$as_me:20010: result: $cf_cv_func_nanosleep" >&5
echo "${ECHO_T}$cf_cv_func_nanosleep" >&6
test "$cf_cv_func_nanosleep" = "yes" &&
@@ -15993,76 +20019,28 @@ for ac_header in \
termio.h \
termios.h \
unistd.h \
+sys/ioctl.h \
+sys/termio.h \
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:15999: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 16005 "configure"
-#include "confdefs.h"
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:16009: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:16015: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- eval "$as_ac_Header=yes"
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-echo "$as_me:16034: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
-
-fi
-done
-
-if test "$ISC" = yes ; then
-
-for ac_header in sys/termio.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:16049: checking for $ac_header" >&5
+echo "$as_me:20027: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 16055 "configure"
+#line 20033 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:16059: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:20037: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:16065: \$? = $ac_status" >&5
+ echo "$as_me:20043: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -16081,7 +20059,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:16084: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:20062: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -16091,22 +20069,21 @@ EOF
fi
done
-fi
if test "$ac_cv_header_termios_h" = yes ; then
case "$CFLAGS $CPPFLAGS" in
- *-D_POSIX_SOURCE*)
+ (*-D_POSIX_SOURCE*)
termios_bad=dunno ;;
- *) termios_bad=maybe ;;
+ (*) termios_bad=maybe ;;
esac
if test "$termios_bad" = maybe ; then
- echo "$as_me:16102: checking whether termios.h needs _POSIX_SOURCE" >&5
+ echo "$as_me:20079: checking whether termios.h needs _POSIX_SOURCE" >&5
echo $ECHO_N "checking whether termios.h needs _POSIX_SOURCE... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 16105 "configure"
+#line 20082 "configure"
#include "confdefs.h"
#include <termios.h>
int
-main ()
+main (void)
{
struct termios foo; int x = foo.c_iflag
;
@@ -16114,16 +20091,16 @@ struct termios foo; int x = foo.c_iflag
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:16117: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20094: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:16120: \$? = $ac_status" >&5
+ echo "$as_me:20097: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:16123: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20100: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16126: \$? = $ac_status" >&5
+ echo "$as_me:20103: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
termios_bad=no
else
@@ -16131,13 +20108,13 @@ else
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 16134 "configure"
+#line 20111 "configure"
#include "confdefs.h"
#define _POSIX_SOURCE
#include <termios.h>
int
-main ()
+main (void)
{
struct termios foo; int x = foo.c_iflag
;
@@ -16145,16 +20122,16 @@ struct termios foo; int x = foo.c_iflag
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:16148: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20125: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:16151: \$? = $ac_status" >&5
+ echo "$as_me:20128: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:16154: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20131: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16157: \$? = $ac_status" >&5
+ echo "$as_me:20134: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
termios_bad=unknown
else
@@ -16170,19 +20147,19 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- echo "$as_me:16173: result: $termios_bad" >&5
+ echo "$as_me:20150: result: $termios_bad" >&5
echo "${ECHO_T}$termios_bad" >&6
fi
fi
-echo "$as_me:16178: checking for tcgetattr" >&5
+echo "$as_me:20155: checking for tcgetattr" >&5
echo $ECHO_N "checking for tcgetattr... $ECHO_C" >&6
if test "${cf_cv_have_tcgetattr+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 16185 "configure"
+#line 20162 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -16200,7 +20177,7 @@ cat >conftest.$ac_ext <<_ACEOF
#endif
int
-main ()
+main (void)
{
TTY foo;
@@ -16210,16 +20187,16 @@ tcgetattr(1, &foo);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16213: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20190: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16216: \$? = $ac_status" >&5
+ echo "$as_me:20193: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16219: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20196: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16222: \$? = $ac_status" >&5
+ echo "$as_me:20199: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_have_tcgetattr=yes
else
@@ -16229,27 +20206,27 @@ cf_cv_have_tcgetattr=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:16232: result: $cf_cv_have_tcgetattr" >&5
+echo "$as_me:20209: result: $cf_cv_have_tcgetattr" >&5
echo "${ECHO_T}$cf_cv_have_tcgetattr" >&6
test "$cf_cv_have_tcgetattr" = yes &&
cat >>confdefs.h <<\EOF
#define HAVE_TCGETATTR 1
EOF
-echo "$as_me:16239: checking for vsscanf function or workaround" >&5
+echo "$as_me:20216: checking for vsscanf function or workaround" >&5
echo $ECHO_N "checking for vsscanf function or workaround... $ECHO_C" >&6
if test "${cf_cv_func_vsscanf+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 16246 "configure"
+#line 20223 "configure"
#include "confdefs.h"
#include <stdarg.h>
#include <stdio.h>
int
-main ()
+main (void)
{
va_list ap;
@@ -16259,16 +20236,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16262: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20239: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16265: \$? = $ac_status" >&5
+ echo "$as_me:20242: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16268: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20245: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16271: \$? = $ac_status" >&5
+ echo "$as_me:20248: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_func_vsscanf=vsscanf
else
@@ -16276,38 +20253,38 @@ else
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 16279 "configure"
+#line 20256 "configure"
#include "confdefs.h"
#include <stdarg.h>
#include <stdio.h>
int
-main ()
+main (void)
{
- FILE strbuf;
- char *str = "from";
+ FILE strbuf;
+ char *str = "from";
- strbuf._flag = _IOREAD;
- strbuf._ptr = strbuf._base = (unsigned char *) str;
- strbuf._cnt = strlen(str);
- strbuf._file = _NFILE;
- return (vfscanf(&strbuf, "%d", ap))
+ strbuf._flag = _IOREAD;
+ strbuf._ptr = strbuf._base = (unsigned char *) str;
+ strbuf._cnt = strlen(str);
+ strbuf._file = _NFILE;
+ return (vfscanf(&strbuf, "%d", ap))
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16301: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20278: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16304: \$? = $ac_status" >&5
+ echo "$as_me:20281: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16307: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20284: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16310: \$? = $ac_status" >&5
+ echo "$as_me:20287: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_func_vsscanf=vfscanf
else
@@ -16315,38 +20292,38 @@ else
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 16318 "configure"
+#line 20295 "configure"
#include "confdefs.h"
#include <stdarg.h>
#include <stdio.h>
int
-main ()
+main (void)
{
- FILE strbuf;
- char *str = "from";
+ FILE strbuf;
+ char *str = "from";
- strbuf._flag = _IOREAD;
- strbuf._ptr = strbuf._base = (unsigned char *) str;
- strbuf._cnt = strlen(str);
- strbuf._file = _NFILE;
- return (_doscan(&strbuf, "%d", ap))
+ strbuf._flag = _IOREAD;
+ strbuf._ptr = strbuf._base = (unsigned char *) str;
+ strbuf._cnt = strlen(str);
+ strbuf._file = _NFILE;
+ return (_doscan(&strbuf, "%d", ap))
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16340: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20317: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16343: \$? = $ac_status" >&5
+ echo "$as_me:20320: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16346: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20323: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16349: \$? = $ac_status" >&5
+ echo "$as_me:20326: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_func_vsscanf=_doscan
else
@@ -16361,28 +20338,78 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:16364: result: $cf_cv_func_vsscanf" >&5
+echo "$as_me:20341: result: $cf_cv_func_vsscanf" >&5
echo "${ECHO_T}$cf_cv_func_vsscanf" >&6
-case $cf_cv_func_vsscanf in #(vi
-vsscanf)
+case $cf_cv_func_vsscanf in
+(vsscanf)
cat >>confdefs.h <<\EOF
#define HAVE_VSSCANF 1
EOF
-;; #(vi
-vfscanf)
+;;
+(vfscanf)
cat >>confdefs.h <<\EOF
#define HAVE_VFSCANF 1
EOF
-;; #(vi
-_doscan)
+;;
+(_doscan)
cat >>confdefs.h <<\EOF
#define HAVE__DOSCAN 1
EOF
;;
esac
-echo "$as_me:16385: checking for working mkstemp" >&5
+for ac_header in \
+unistd.h \
+
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:20367: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 20373 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:20377: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:20383: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:20402: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+echo "$as_me:20412: checking for working mkstemp" >&5
echo $ECHO_N "checking for working mkstemp... $ECHO_C" >&6
if test "${cf_cv_func_mkstemp+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16393,15 +20420,18 @@ if test "$cross_compiling" = yes; then
cf_cv_func_mkstemp=maybe
else
cat >conftest.$ac_ext <<_ACEOF
-#line 16396 "configure"
+#line 20423 "configure"
#include "confdefs.h"
#include <sys/types.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
-int main()
+int main(void)
{
char *tmpl = "conftestXXXXXX";
char name[2][80];
@@ -16431,15 +20461,15 @@ int main()
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:16434: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20464: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16437: \$? = $ac_status" >&5
+ echo "$as_me:20467: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:16439: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20469: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16442: \$? = $ac_status" >&5
+ echo "$as_me:20472: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_func_mkstemp=yes
@@ -16454,56 +20484,56 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
-echo "$as_me:16457: result: $cf_cv_func_mkstemp" >&5
+echo "$as_me:20487: result: $cf_cv_func_mkstemp" >&5
echo "${ECHO_T}$cf_cv_func_mkstemp" >&6
if test "x$cf_cv_func_mkstemp" = xmaybe ; then
- echo "$as_me:16460: checking for mkstemp" >&5
+ echo "$as_me:20490: checking for mkstemp" >&5
echo $ECHO_N "checking for mkstemp... $ECHO_C" >&6
if test "${ac_cv_func_mkstemp+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 16466 "configure"
+#line 20496 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char mkstemp (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define mkstemp autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef mkstemp
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char mkstemp ();
-char (*f) ();
+char mkstemp (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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_mkstemp) || defined (__stub___mkstemp)
-choke me
-#else
-f = mkstemp; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for mkstemp
#endif
+ return mkstemp ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16497: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20527: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16500: \$? = $ac_status" >&5
+ echo "$as_me:20530: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16503: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20533: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16506: \$? = $ac_status" >&5
+ echo "$as_me:20536: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_mkstemp=yes
else
@@ -16513,7 +20543,7 @@ ac_cv_func_mkstemp=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:16516: result: $ac_cv_func_mkstemp" >&5
+echo "$as_me:20546: result: $ac_cv_func_mkstemp" >&5
echo "${ECHO_T}$ac_cv_func_mkstemp" >&6
fi
@@ -16534,26 +20564,26 @@ else
fi
if test "x$cross_compiling" = xyes ; then
- { echo "$as_me:16537: WARNING: cross compiling: assume setvbuf params not reversed" >&5
+ { echo "$as_me:20567: WARNING: cross compiling: assume setvbuf params not reversed" >&5
echo "$as_me: WARNING: cross compiling: assume setvbuf params not reversed" >&2;}
else
- echo "$as_me:16540: checking whether setvbuf arguments are reversed" >&5
+ echo "$as_me:20570: checking whether setvbuf arguments are reversed" >&5
echo $ECHO_N "checking whether setvbuf arguments are reversed... $ECHO_C" >&6
if test "${ac_cv_func_setvbuf_reversed+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test "$cross_compiling" = yes; then
- { { echo "$as_me:16546: error: cannot run test program while cross compiling" >&5
+ { { echo "$as_me:20576: error: cannot run test program while cross compiling" >&5
echo "$as_me: error: cannot run test program while cross compiling" >&2;}
{ (exit 1); exit 1; }; }
else
cat >conftest.$ac_ext <<_ACEOF
-#line 16551 "configure"
+#line 20581 "configure"
#include "confdefs.h"
#include <stdio.h>
/* If setvbuf has the reversed format, exit 0. */
int
-main ()
+main (void)
{
/* This call has the arguments reversed.
A reversed system may check and see that the address of main
@@ -16565,15 +20595,15 @@ main ()
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:16568: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20598: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16571: \$? = $ac_status" >&5
+ echo "$as_me:20601: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:16573: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20603: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16576: \$? = $ac_status" >&5
+ echo "$as_me:20606: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_setvbuf_reversed=yes
else
@@ -16586,7 +20616,7 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
rm -f core core.* *.core
fi
-echo "$as_me:16589: result: $ac_cv_func_setvbuf_reversed" >&5
+echo "$as_me:20619: result: $ac_cv_func_setvbuf_reversed" >&5
echo "${ECHO_T}$ac_cv_func_setvbuf_reversed" >&6
if test $ac_cv_func_setvbuf_reversed = yes; then
@@ -16597,17 +20627,17 @@ EOF
fi
fi
-echo "$as_me:16600: checking for intptr_t" >&5
+echo "$as_me:20630: checking for intptr_t" >&5
echo $ECHO_N "checking for intptr_t... $ECHO_C" >&6
if test "${ac_cv_type_intptr_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 16606 "configure"
+#line 20636 "configure"
#include "confdefs.h"
$ac_includes_default
int
-main ()
+main (void)
{
if ((intptr_t *) 0)
return 0;
@@ -16618,16 +20648,16 @@ if (sizeof (intptr_t))
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:16621: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20651: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:16624: \$? = $ac_status" >&5
+ echo "$as_me:20654: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:16627: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20657: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16630: \$? = $ac_status" >&5
+ echo "$as_me:20660: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_type_intptr_t=yes
else
@@ -16637,7 +20667,7 @@ ac_cv_type_intptr_t=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:16640: result: $ac_cv_type_intptr_t" >&5
+echo "$as_me:20670: result: $ac_cv_type_intptr_t" >&5
echo "${ECHO_T}$ac_cv_type_intptr_t" >&6
if test $ac_cv_type_intptr_t = yes; then
:
@@ -16649,19 +20679,71 @@ EOF
fi
-echo "$as_me:16652: checking for type sigaction_t" >&5
+echo "$as_me:20682: checking for ssize_t" >&5
+echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6
+if test "${ac_cv_type_ssize_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 20688 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main (void)
+{
+if ((ssize_t *) 0)
+ return 0;
+if (sizeof (ssize_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:20703: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:20706: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:20709: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:20712: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_ssize_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_ssize_t=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:20722: result: $ac_cv_type_ssize_t" >&5
+echo "${ECHO_T}$ac_cv_type_ssize_t" >&6
+if test $ac_cv_type_ssize_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<EOF
+#define ssize_t int
+EOF
+
+fi
+
+echo "$as_me:20734: checking for type sigaction_t" >&5
echo $ECHO_N "checking for type sigaction_t... $ECHO_C" >&6
if test "${cf_cv_type_sigaction+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 16659 "configure"
+#line 20741 "configure"
#include "confdefs.h"
#include <signal.h>
int
-main ()
+main (void)
{
sigaction_t x
;
@@ -16669,16 +20751,16 @@ sigaction_t x
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:16672: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20754: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:16675: \$? = $ac_status" >&5
+ echo "$as_me:20757: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:16678: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20760: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16681: \$? = $ac_status" >&5
+ echo "$as_me:20763: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_type_sigaction=yes
else
@@ -16689,29 +20771,35 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:16692: result: $cf_cv_type_sigaction" >&5
+echo "$as_me:20774: result: $cf_cv_type_sigaction" >&5
echo "${ECHO_T}$cf_cv_type_sigaction" >&6
test "$cf_cv_type_sigaction" = yes &&
cat >>confdefs.h <<\EOF
#define HAVE_TYPE_SIGACTION 1
EOF
-echo "$as_me:16699: checking declaration of size-change" >&5
+echo "$as_me:20781: checking declaration of size-change" >&5
echo $ECHO_N "checking declaration of size-change... $ECHO_C" >&6
if test "${cf_cv_sizechange+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- cf_cv_sizechange=unknown
- cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_cv_sizechange=unknown
+ cf_save_CPPFLAGS="$CPPFLAGS"
for cf_opts in "" "NEED_PTEM_H"
do
- CPPFLAGS="$cf_save_CPPFLAGS"
- test -n "$cf_opts" && CPPFLAGS="$CPPFLAGS -D$cf_opts"
- cat >conftest.$ac_ext <<_ACEOF
-#line 16714 "configure"
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ if test -n "$cf_opts"
+ then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D$cf_opts"
+
+ fi
+ cat >conftest.$ac_ext <<_ACEOF
+#line 20802 "configure"
#include "confdefs.h"
#include <sys/types.h>
#ifdef HAVE_TERMIOS_H
@@ -16721,28 +20809,30 @@ do
#include <termio.h>
#endif
#endif
+
#ifdef NEED_PTEM_H
/* This is a workaround for SCO: they neglected to define struct winsize in
* termios.h -- it's only in termio.h and ptem.h
*/
-#include <sys/stream.h>
-#include <sys/ptem.h>
+#include <sys/stream.h>
+#include <sys/ptem.h>
#endif
-#if !defined(sun) || !defined(HAVE_TERMIOS_H)
+
+#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#endif
int
-main ()
+main (void)
{
#ifdef TIOCGSIZE
- struct ttysize win; /* FIXME: what system is this? */
+ struct ttysize win; /* SunOS 3.0... */
int y = win.ts_lines;
int x = win.ts_cols;
#else
#ifdef TIOCGWINSZ
- struct winsize win;
+ struct winsize win; /* everything else */
int y = win.ws_row;
int x = win.ws_col;
#else
@@ -16755,16 +20845,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:16758: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20848: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:16761: \$? = $ac_status" >&5
+ echo "$as_me:20851: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:16764: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20854: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16767: \$? = $ac_status" >&5
+ echo "$as_me:20857: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_sizechange=yes
else
@@ -16783,7 +20873,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:16786: result: $cf_cv_sizechange" >&5
+echo "$as_me:20876: result: $cf_cv_sizechange" >&5
echo "${ECHO_T}$cf_cv_sizechange" >&6
if test "$cf_cv_sizechange" != no ; then
@@ -16791,8 +20881,8 @@ cat >>confdefs.h <<\EOF
#define HAVE_SIZECHANGE 1
EOF
- case $cf_cv_sizechange in #(vi
- NEED*)
+ case $cf_cv_sizechange in
+ (NEED*)
cat >>confdefs.h <<EOF
#define $cf_cv_sizechange 1
EOF
@@ -16801,53 +20891,53 @@ EOF
esac
fi
-echo "$as_me:16804: checking for memmove" >&5
+echo "$as_me:20894: checking for memmove" >&5
echo $ECHO_N "checking for memmove... $ECHO_C" >&6
if test "${ac_cv_func_memmove+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 16810 "configure"
+#line 20900 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char memmove (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define memmove autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef memmove
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char memmove ();
-char (*f) ();
+char memmove (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_memmove) || defined (__stub___memmove)
-choke me
-#else
-f = memmove; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for memmove
#endif
+ return memmove ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16841: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20931: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16844: \$? = $ac_status" >&5
+ echo "$as_me:20934: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16847: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20937: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16850: \$? = $ac_status" >&5
+ echo "$as_me:20940: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_memmove=yes
else
@@ -16857,59 +20947,59 @@ ac_cv_func_memmove=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:16860: result: $ac_cv_func_memmove" >&5
+echo "$as_me:20950: result: $ac_cv_func_memmove" >&5
echo "${ECHO_T}$ac_cv_func_memmove" >&6
if test $ac_cv_func_memmove = yes; then
:
else
-echo "$as_me:16866: checking for bcopy" >&5
+echo "$as_me:20956: checking for bcopy" >&5
echo $ECHO_N "checking for bcopy... $ECHO_C" >&6
if test "${ac_cv_func_bcopy+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 16872 "configure"
+#line 20962 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char bcopy (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define bcopy autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef bcopy
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char bcopy ();
-char (*f) ();
+char bcopy (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_bcopy) || defined (__stub___bcopy)
-choke me
-#else
-f = bcopy; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for bcopy
#endif
+ return bcopy ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16903: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20993: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16906: \$? = $ac_status" >&5
+ echo "$as_me:20996: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16909: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20999: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16912: \$? = $ac_status" >&5
+ echo "$as_me:21002: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_bcopy=yes
else
@@ -16919,11 +21009,11 @@ ac_cv_func_bcopy=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:16922: result: $ac_cv_func_bcopy" >&5
+echo "$as_me:21012: result: $ac_cv_func_bcopy" >&5
echo "${ECHO_T}$ac_cv_func_bcopy" >&6
if test $ac_cv_func_bcopy = yes; then
- echo "$as_me:16926: checking if bcopy does overlapping moves" >&5
+ echo "$as_me:21016: checking if bcopy does overlapping moves" >&5
echo $ECHO_N "checking if bcopy does overlapping moves... $ECHO_C" >&6
if test "${cf_cv_good_bcopy+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16933,10 +21023,10 @@ else
cf_cv_good_bcopy=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 16936 "configure"
+#line 21026 "configure"
#include "confdefs.h"
-int main() {
+int main(void) {
static char data[] = "abcdefghijklmnopqrstuwwxyz";
char temp[40];
bcopy(data, temp, sizeof(data));
@@ -16947,15 +21037,15 @@ int main() {
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:16950: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21040: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16953: \$? = $ac_status" >&5
+ echo "$as_me:21043: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:16955: \"$ac_try\"") >&5
+ { (eval echo "$as_me:21045: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16958: \$? = $ac_status" >&5
+ echo "$as_me:21048: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_good_bcopy=yes
else
@@ -16968,7 +21058,7 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
-echo "$as_me:16971: result: $cf_cv_good_bcopy" >&5
+echo "$as_me:21061: result: $cf_cv_good_bcopy" >&5
echo "${ECHO_T}$cf_cv_good_bcopy" >&6
else
@@ -16991,7 +21081,77 @@ EOF
fi
-echo "$as_me:16994: checking if poll really works" >&5
+tty 2>&1 >/dev/null || {
+for ac_func in posix_openpt
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:21088: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 21094 "configure"
+#include "confdefs.h"
+#define $ac_func autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef $ac_func
+
+#ifdef __cplusplus
+extern "C"
+#endif
+
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func (void);
+
+int
+main (void)
+{
+
+/* The GNU C library defines stubs for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+#error found stub for $ac_func
+#endif
+
+ return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:21125: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:21128: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:21131: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:21134: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:21144: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+ }
+echo "$as_me:21154: checking if poll really works" >&5
echo $ECHO_N "checking if poll really works... $ECHO_C" >&6
if test "${cf_cv_working_poll+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17001,7 +21161,7 @@ if test "$cross_compiling" = yes; then
cf_cv_working_poll=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 17004 "configure"
+#line 21164 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -17013,7 +21173,7 @@ else
#else
#include <sys/poll.h>
#endif
-int main() {
+int main(void) {
struct pollfd myfds;
int ret;
@@ -17033,6 +21193,11 @@ int main() {
if (!isatty(fd)) {
fd = open("/dev/tty", 2); /* O_RDWR */
}
+#ifdef HAVE_POSIX_OPENPT
+ if (fd < 0) {
+ fd = posix_openpt(O_RDWR);
+ }
+#endif
if (fd >= 0) {
/* also check with standard input */
@@ -17048,15 +21213,15 @@ int main() {
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:17051: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21216: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:17054: \$? = $ac_status" >&5
+ echo "$as_me:21219: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:17056: \"$ac_try\"") >&5
+ { (eval echo "$as_me:21221: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17059: \$? = $ac_status" >&5
+ echo "$as_me:21224: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_working_poll=yes
else
@@ -17068,27 +21233,27 @@ fi
rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
-echo "$as_me:17071: result: $cf_cv_working_poll" >&5
+echo "$as_me:21236: result: $cf_cv_working_poll" >&5
echo "${ECHO_T}$cf_cv_working_poll" >&6
test "$cf_cv_working_poll" = "yes" &&
cat >>confdefs.h <<\EOF
#define HAVE_WORKING_POLL 1
EOF
-echo "$as_me:17078: checking for va_copy" >&5
+echo "$as_me:21243: checking for va_copy" >&5
echo $ECHO_N "checking for va_copy... $ECHO_C" >&6
if test "${cf_cv_have_va_copy+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 17085 "configure"
+#line 21250 "configure"
#include "confdefs.h"
#include <stdarg.h>
int
-main ()
+main (void)
{
static va_list dst;
@@ -17099,16 +21264,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:17102: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21267: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:17105: \$? = $ac_status" >&5
+ echo "$as_me:21270: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:17108: \"$ac_try\"") >&5
+ { (eval echo "$as_me:21273: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17111: \$? = $ac_status" >&5
+ echo "$as_me:21276: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_have_va_copy=yes
else
@@ -17118,28 +21283,32 @@ cf_cv_have_va_copy=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:17121: result: $cf_cv_have_va_copy" >&5
+echo "$as_me:21286: result: $cf_cv_have_va_copy" >&5
echo "${ECHO_T}$cf_cv_have_va_copy" >&6
-test "$cf_cv_have_va_copy" = yes &&
+if test "$cf_cv_have_va_copy" = yes;
+then
+
cat >>confdefs.h <<\EOF
#define HAVE_VA_COPY 1
EOF
-echo "$as_me:17129: checking for __va_copy" >&5
+else # !cf_cv_have_va_copy
+
+echo "$as_me:21298: checking for __va_copy" >&5
echo $ECHO_N "checking for __va_copy... $ECHO_C" >&6
if test "${cf_cv_have___va_copy+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 17136 "configure"
+#line 21305 "configure"
#include "confdefs.h"
#include <stdarg.h>
int
-main ()
+main (void)
{
static va_list dst;
@@ -17150,16 +21319,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:17153: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21322: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:17156: \$? = $ac_status" >&5
+ echo "$as_me:21325: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:17159: \"$ac_try\"") >&5
+ { (eval echo "$as_me:21328: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17162: \$? = $ac_status" >&5
+ echo "$as_me:21331: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_have___va_copy=yes
else
@@ -17169,25 +21338,192 @@ cf_cv_have___va_copy=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:17172: result: $cf_cv_have___va_copy" >&5
+echo "$as_me:21341: result: $cf_cv_have___va_copy" >&5
echo "${ECHO_T}$cf_cv_have___va_copy" >&6
-test "$cf_cv_have___va_copy" = yes &&
+if test "$cf_cv_have___va_copy" = yes
+then
+
cat >>confdefs.h <<\EOF
#define HAVE___VA_COPY 1
EOF
-echo "$as_me:17180: checking for pid_t" >&5
+else # !cf_cv_have___va_copy
+
+echo "$as_me:21353: checking for __builtin_va_copy" >&5
+echo $ECHO_N "checking for __builtin_va_copy... $ECHO_C" >&6
+if test "${cf_cv_have___builtin_va_copy+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 21360 "configure"
+#include "confdefs.h"
+
+#include <stdarg.h>
+
+int
+main (void)
+{
+
+ static va_list dst;
+ static va_list src;
+ __builtin_va_copy(dst, src)
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:21377: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:21380: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:21383: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:21386: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_have___builtin_va_copy=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_have___builtin_va_copy=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:21396: result: $cf_cv_have___builtin_va_copy" >&5
+echo "${ECHO_T}$cf_cv_have___builtin_va_copy" >&6
+
+test "$cf_cv_have___builtin_va_copy" = yes &&
+
+cat >>confdefs.h <<\EOF
+#define HAVE___BUILTIN_VA_COPY 1
+EOF
+
+fi # cf_cv_have___va_copy
+
+fi # cf_cv_have_va_copy
+
+case "${cf_cv_have_va_copy}${cf_cv_have___va_copy}${cf_cv_have___builtin_va_copy}" in
+(*yes*)
+ ;;
+
+(*)
+ echo "$as_me:21414: checking if we can simply copy va_list" >&5
+echo $ECHO_N "checking if we can simply copy va_list... $ECHO_C" >&6
+if test "${cf_cv_pointer_va_list+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 21421 "configure"
+#include "confdefs.h"
+
+#include <stdarg.h>
+
+int
+main (void)
+{
+
+ va_list dst;
+ va_list src;
+ dst = src
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:21438: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:21441: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:21444: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:21447: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_pointer_va_list=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_pointer_va_list=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:21457: result: $cf_cv_pointer_va_list" >&5
+echo "${ECHO_T}$cf_cv_pointer_va_list" >&6
+
+ if test "$cf_cv_pointer_va_list" = no
+ then
+ echo "$as_me:21462: checking if we can copy va_list indirectly" >&5
+echo $ECHO_N "checking if we can copy va_list indirectly... $ECHO_C" >&6
+if test "${cf_cv_array_va_list+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 21469 "configure"
+#include "confdefs.h"
+
+#include <stdarg.h>
+
+int
+main (void)
+{
+
+ va_list dst;
+ va_list src;
+ *dst = *src
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:21486: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:21489: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:21492: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:21495: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_array_va_list=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_array_va_list=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:21505: result: $cf_cv_array_va_list" >&5
+echo "${ECHO_T}$cf_cv_array_va_list" >&6
+ test "$cf_cv_array_va_list" = yes &&
+cat >>confdefs.h <<\EOF
+#define ARRAY_VA_LIST 1
+EOF
+
+ fi
+ ;;
+esac
+
+echo "$as_me:21516: checking for pid_t" >&5
echo $ECHO_N "checking for pid_t... $ECHO_C" >&6
if test "${ac_cv_type_pid_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 17186 "configure"
+#line 21522 "configure"
#include "confdefs.h"
$ac_includes_default
int
-main ()
+main (void)
{
if ((pid_t *) 0)
return 0;
@@ -17198,16 +21534,16 @@ if (sizeof (pid_t))
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:17201: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:21537: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:17204: \$? = $ac_status" >&5
+ echo "$as_me:21540: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:17207: \"$ac_try\"") >&5
+ { (eval echo "$as_me:21543: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17210: \$? = $ac_status" >&5
+ echo "$as_me:21546: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_type_pid_t=yes
else
@@ -17217,7 +21553,7 @@ ac_cv_type_pid_t=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:17220: result: $ac_cv_type_pid_t" >&5
+echo "$as_me:21556: result: $ac_cv_type_pid_t" >&5
echo "${ECHO_T}$ac_cv_type_pid_t" >&6
if test $ac_cv_type_pid_t = yes; then
:
@@ -17232,23 +21568,23 @@ fi
for ac_header in unistd.h vfork.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:17235: checking for $ac_header" >&5
+echo "$as_me:21571: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 17241 "configure"
+#line 21577 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:17245: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:21581: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:17251: \$? = $ac_status" >&5
+ echo "$as_me:21587: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -17267,7 +21603,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:17270: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:21606: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -17280,53 +21616,53 @@ done
for ac_func in fork vfork
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:17283: checking for $ac_func" >&5
+echo "$as_me:21619: checking for $ac_func" >&5
echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 17289 "configure"
+#line 21625 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define $ac_func autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef $ac_func
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+char $ac_func (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for $ac_func
#endif
+ return $ac_func ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:17320: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21656: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:17323: \$? = $ac_status" >&5
+ echo "$as_me:21659: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:17326: \"$ac_try\"") >&5
+ { (eval echo "$as_me:21662: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17329: \$? = $ac_status" >&5
+ echo "$as_me:21665: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_var=yes"
else
@@ -17336,7 +21672,7 @@ eval "$as_ac_var=no"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:17339: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "$as_me:21675: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
if test `eval echo '${'$as_ac_var'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -17348,7 +21684,7 @@ done
ac_cv_func_fork_works=$ac_cv_func_fork
if test "x$ac_cv_func_fork" = xyes; then
- echo "$as_me:17351: checking for working fork" >&5
+ echo "$as_me:21687: checking for working fork" >&5
echo $ECHO_N "checking for working fork... $ECHO_C" >&6
if test "${ac_cv_func_fork_works+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17363,7 +21699,7 @@ else
# include <unistd.h>
#endif
/* Some systems only have a dummy stub for fork() */
- int main ()
+ int main (void)
{
if (fork() < 0)
$ac_main_return (1);
@@ -17371,15 +21707,15 @@ else
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:17374: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21710: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:17377: \$? = $ac_status" >&5
+ echo "$as_me:21713: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:17379: \"$ac_try\"") >&5
+ { (eval echo "$as_me:21715: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17382: \$? = $ac_status" >&5
+ echo "$as_me:21718: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_fork_works=yes
else
@@ -17391,7 +21727,7 @@ fi
rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
-echo "$as_me:17394: result: $ac_cv_func_fork_works" >&5
+echo "$as_me:21730: result: $ac_cv_func_fork_works" >&5
echo "${ECHO_T}$ac_cv_func_fork_works" >&6
fi
@@ -17405,12 +21741,12 @@ if test "x$ac_cv_func_fork_works" = xcross; then
ac_cv_func_fork_works=yes
;;
esac
- { echo "$as_me:17408: WARNING: CROSS: Result $ac_cv_func_fork_works guessed due to cross-compiling." >&5
+ { echo "$as_me:21744: WARNING: CROSS: Result $ac_cv_func_fork_works guessed due to cross-compiling." >&5
echo "$as_me: WARNING: CROSS: Result $ac_cv_func_fork_works guessed due to cross-compiling." >&2;}
fi
ac_cv_func_vfork_works=$ac_cv_func_vfork
if test "x$ac_cv_func_vfork" = xyes; then
- echo "$as_me:17413: checking for working vfork" >&5
+ echo "$as_me:21749: checking for working vfork" >&5
echo $ECHO_N "checking for working vfork... $ECHO_C" >&6
if test "${ac_cv_func_vfork_works+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17419,7 +21755,7 @@ else
ac_cv_func_vfork_works=cross
else
cat >conftest.$ac_ext <<_ACEOF
-#line 17422 "configure"
+#line 21758 "configure"
#include "confdefs.h"
/* Thanks to Paul Eggert for this test. */
#include <stdio.h>
@@ -17460,7 +21796,7 @@ sparc_address_test (arg) int arg;
}
int
-main ()
+main (void)
{
pid_t parent = getpid ();
pid_t child;
@@ -17516,15 +21852,15 @@ main ()
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:17519: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21855: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:17522: \$? = $ac_status" >&5
+ echo "$as_me:21858: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:17524: \"$ac_try\"") >&5
+ { (eval echo "$as_me:21860: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17527: \$? = $ac_status" >&5
+ echo "$as_me:21863: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_vfork_works=yes
else
@@ -17536,13 +21872,13 @@ fi
rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
-echo "$as_me:17539: result: $ac_cv_func_vfork_works" >&5
+echo "$as_me:21875: result: $ac_cv_func_vfork_works" >&5
echo "${ECHO_T}$ac_cv_func_vfork_works" >&6
fi;
if test "x$ac_cv_func_fork_works" = xcross; then
ac_cv_func_vfork_works=ac_cv_func_vfork
- { echo "$as_me:17545: WARNING: CROSS: Result $ac_cv_func_vfork_works guessed due to cross-compiling." >&5
+ { echo "$as_me:21881: WARNING: CROSS: Result $ac_cv_func_vfork_works guessed due to cross-compiling." >&5
echo "$as_me: WARNING: CROSS: Result $ac_cv_func_vfork_works guessed due to cross-compiling." >&2;}
fi
@@ -17567,9 +21903,80 @@ EOF
fi
+echo "$as_me:21906: checking if fopen accepts explicit binary mode" >&5
+echo $ECHO_N "checking if fopen accepts explicit binary mode... $ECHO_C" >&6
+if test "${cf_cv_fopen_bin_r+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ cf_cv_fopen_bin_r=unknown
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 21916 "configure"
+#include "confdefs.h"
+
+#include <stdio.h>
+int main(void) {
+ FILE *fp = fopen("conftest.tmp", "wb");
+ int rc = 0;
+ if (fp != 0) {
+ int p, q;
+ for (p = 0; p < 256; ++p) {
+ fputc(p, fp);
+ }
+ fclose(fp);
+ fp = fopen("conftest.tmp", "rb");
+ if (fp != 0) {
+ for (p = 0; p < 256; ++p) {
+ q = fgetc(fp);
+ if (q != p) {
+ rc = 1;
+ break;
+ }
+ }
+ } else {
+ rc = 1;
+ }
+ } else {
+ rc = 1;
+ }
+ ${cf_cv_main_return:-return} (rc);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:21949: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:21952: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:21954: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:21957: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_fopen_bin_r=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_fopen_bin_r=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+fi
+echo "$as_me:21970: result: $cf_cv_fopen_bin_r" >&5
+echo "${ECHO_T}$cf_cv_fopen_bin_r" >&6
+test "x$cf_cv_fopen_bin_r" != xno &&
+cat >>confdefs.h <<\EOF
+#define USE_FOPEN_BIN_R 1
+EOF
+
# special check for test/ditto.c
-echo "$as_me:17572: checking for openpty in -lutil" >&5
+echo "$as_me:21979: checking for openpty in -lutil" >&5
echo $ECHO_N "checking for openpty in -lutil... $ECHO_C" >&6
if test "${ac_cv_lib_util_openpty+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17577,7 +21984,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lutil $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 17580 "configure"
+#line 21987 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -17588,7 +21995,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char openpty ();
int
-main ()
+main (void)
{
openpty ();
;
@@ -17596,16 +22003,16 @@ openpty ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:17599: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22006: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:17602: \$? = $ac_status" >&5
+ echo "$as_me:22009: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:17605: \"$ac_try\"") >&5
+ { (eval echo "$as_me:22012: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17608: \$? = $ac_status" >&5
+ echo "$as_me:22015: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_util_openpty=yes
else
@@ -17616,7 +22023,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:17619: result: $ac_cv_lib_util_openpty" >&5
+echo "$as_me:22026: result: $ac_cv_lib_util_openpty" >&5
echo "${ECHO_T}$ac_cv_lib_util_openpty" >&6
if test $ac_cv_lib_util_openpty = yes; then
cf_cv_lib_util=yes
@@ -17624,62 +22031,78 @@ else
cf_cv_lib_util=no
fi
-echo "$as_me:17627: checking for openpty header" >&5
+echo "$as_me:22034: checking for openpty header" >&5
echo $ECHO_N "checking for openpty header... $ECHO_C" >&6
if test "${cf_cv_func_openpty+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- cf_save_LIBS="$LIBS"
- test $cf_cv_lib_util = yes && LIBS="-lutil $LIBS"
- for cf_header in pty.h libutil.h util.h
- do
- cat >conftest.$ac_ext <<_ACEOF
-#line 17638 "configure"
+ cf_save_LIBS="$LIBS"
+ test $cf_cv_lib_util = yes && {
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lutil; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+ }
+ for cf_header in pty.h libutil.h util.h
+ do
+ cat >conftest.$ac_ext <<_ACEOF
+#line 22061 "configure"
#include "confdefs.h"
#include <$cf_header>
int
-main ()
+main (void)
{
- int x = openpty((int *)0, (int *)0, (char *)0,
- (struct termios *)0, (struct winsize *)0);
+ int x = openpty((int *)0, (int *)0, (char *)0,
+ (struct termios *)0, (struct winsize *)0);
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:17655: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22078: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:17658: \$? = $ac_status" >&5
+ echo "$as_me:22081: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:17661: \"$ac_try\"") >&5
+ { (eval echo "$as_me:22084: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17664: \$? = $ac_status" >&5
+ echo "$as_me:22087: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- cf_cv_func_openpty=$cf_header
- break
+ cf_cv_func_openpty=$cf_header
+ break
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- cf_cv_func_openpty=no
+ cf_cv_func_openpty=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- done
- LIBS="$cf_save_LIBS"
+ done
+ LIBS="$cf_save_LIBS"
fi
-echo "$as_me:17682: result: $cf_cv_func_openpty" >&5
+echo "$as_me:22105: result: $cf_cv_func_openpty" >&5
echo "${ECHO_T}$cf_cv_func_openpty" >&6
if test "$cf_cv_func_openpty" != no ; then
@@ -17692,9 +22115,25 @@ cat >>confdefs.h <<\EOF
#define USE_XTERM_PTY 1
EOF
- if test "x$cf_cv_lib_util" = xyes ; then
- TEST_LIBS="-lutil $TEST_LIBS"
- fi
+ if test "x$cf_cv_lib_util" = xyes ; then
+
+cf_add_libs="$TEST_LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lutil; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+TEST_LIBS="$cf_add_libs"
+
+ fi
fi
if test "$with_hashed_db" != no ; then
@@ -17703,11 +22142,11 @@ cat >>confdefs.h <<\EOF
#define USE_HASHED_DB 1
EOF
-case $with_hashed_db in #(vi
-yes|*able*) #(vi
- ;;
-*)
- if test -d "$with_hashed_db" ; then
+case $with_hashed_db in
+(yes|*able*)
+ ;;
+(*)
+ if test -d "$with_hashed_db" ; then
if test -n "$with_hashed_db/include" ; then
for cf_add_incdir in $with_hashed_db/include
@@ -17731,13 +22170,16 @@ if test -n "$with_hashed_db/include" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 17736 "configure"
+#line 22178 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -17745,16 +22187,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:17748: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:22190: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:17751: \$? = $ac_status" >&5
+ echo "$as_me:22193: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:17754: \"$ac_try\"") >&5
+ { (eval echo "$as_me:22196: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17757: \$? = $ac_status" >&5
+ echo "$as_me:22199: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -17771,7 +22213,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:17774: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:22216: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -17781,58 +22223,267 @@ echo "${as_me:-configure}:17774: testing adding $cf_add_incdir to include-path .
else
break
fi
+ else
+ break
fi
done
done
fi
if test -n "$with_hashed_db/lib" ; then
- for cf_add_libdir in $with_hashed_db/lib
+ for cf_add_libdir in $with_hashed_db/lib
+ do
+ if test $cf_add_libdir = /usr/lib ; then
+ :
+ elif test -d $cf_add_libdir
+ then
+ cf_have_libdir=no
+ if test -n "$LDFLAGS$LIBS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_libdir in $LDFLAGS $LIBS ; do
+ if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
+ cf_have_libdir=yes; break
+ fi
+ done
+ fi
+ if test "$cf_have_libdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
+
+echo "${as_me:-configure}:22252: testing adding $cf_add_libdir to library-path ..." 1>&5
+
+ LDFLAGS="-L$cf_add_libdir $LDFLAGS"
+ fi
+ fi
+ done
+fi
+
+ else
+ case "$with_hashed_db" in
+ (./*|../*|/*)
+ { echo "$as_me:22263: WARNING: no such directory $with_hashed_db" >&5
+echo "$as_me: WARNING: no such directory $with_hashed_db" >&2;}
+ ;;
+ (*)
+
+cf_search=
+
+test "x$prefix" != "xNONE" && \
+test -d "$prefix" && \
+ {
+ test -n "$verbose" && echo " ... testing for include-directories under $prefix"
+ test -d $prefix/include && cf_search="$cf_search $prefix/include"
+ test -d $prefix/include/$with_hashed_db && cf_search="$cf_search $prefix/include/$with_hashed_db"
+ test -d $prefix/include/$with_hashed_db/include && cf_search="$cf_search $prefix/include/$with_hashed_db/include"
+ test -d $prefix/$with_hashed_db/include && cf_search="$cf_search $prefix/$with_hashed_db/include"
+ test -d $prefix/$with_hashed_db/include/$with_hashed_db && cf_search="$cf_search $prefix/$with_hashed_db/include/$with_hashed_db"
+}
+
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
+
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/include && cf_search="$cf_search $cf_subdir_prefix/include"
+ test -d $cf_subdir_prefix/include/$with_hashed_db && cf_search="$cf_search $cf_subdir_prefix/include/$with_hashed_db"
+ test -d $cf_subdir_prefix/include/$with_hashed_db/include && cf_search="$cf_search $cf_subdir_prefix/include/$with_hashed_db/include"
+ test -d $cf_subdir_prefix/$with_hashed_db/include && cf_search="$cf_search $cf_subdir_prefix/$with_hashed_db/include"
+ test -d $cf_subdir_prefix/$with_hashed_db/include/$with_hashed_db && cf_search="$cf_search $cf_subdir_prefix/$with_hashed_db/include/$with_hashed_db"
+}
+
+done
+
+ for cf_item in $cf_search
+ do
+ case $cf_item in
+ (*/$with_hashed_db)
+
+if test -n "$cf_item" ; then
+ for cf_add_incdir in $cf_item
do
- if test $cf_add_libdir = /usr/lib ; then
- :
- elif test -d $cf_add_libdir
- then
- cf_have_libdir=no
- if test -n "$LDFLAGS$LIBS" ; then
- # a loop is needed to ensure we can add subdirs of existing dirs
- for cf_test_libdir in $LDFLAGS $LIBS ; do
- if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
- cf_have_libdir=yes; break
- fi
- done
- fi
- if test "$cf_have_libdir" = no ; then
- test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
+ while test $cf_add_incdir != /usr/include
+ do
+ if test -d $cf_add_incdir
+ then
+ cf_have_incdir=no
+ if test -n "$CFLAGS$CPPFLAGS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_incdir in $CFLAGS $CPPFLAGS ; do
+ if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then
+ cf_have_incdir=yes; break
+ fi
+ done
+ fi
-echo "${as_me:-configure}:17808: testing adding $cf_add_libdir to library-path ..." 1>&5
+ if test "$cf_have_incdir" = no ; then
+ if test "$cf_add_incdir" = /usr/local/include ; then
+ if test "$GCC" = yes
+ then
+ cf_save_CPPFLAGS=$CPPFLAGS
- LDFLAGS="-L$cf_add_libdir $LDFLAGS"
- fi
- fi
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 22335 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int
+main (void)
+{
+printf("Hello")
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:22347: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:22350: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:22353: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:22356: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_incdir=yes
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS=$cf_save_CPPFLAGS
+ fi
+ fi
+ fi
+
+ if test "$cf_have_incdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
+
+echo "${as_me:-configure}:22373: testing adding $cf_add_incdir to include-path ..." 1>&5
+
+ CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'`
+ test "$cf_top_incdir" = "$cf_add_incdir" && break
+ cf_add_incdir="$cf_top_incdir"
+ else
+ break
+ fi
+ else
+ break
+ fi
+ done
done
fi
- fi
+ ;;
+ esac
+ done
+
+cf_search=
+
+test "x$prefix" != "xNONE" && \
+test -d "$prefix" && \
+ {
+ test -n "$verbose" && echo " ... testing for lib-directories under $prefix"
+ test -d $prefix/lib && cf_search="$cf_search $prefix/lib"
+ test -d $prefix/lib/$with_hashed_db && cf_search="$cf_search $prefix/lib/$with_hashed_db"
+ test -d $prefix/lib/$with_hashed_db/lib && cf_search="$cf_search $prefix/lib/$with_hashed_db/lib"
+ test -d $prefix/$with_hashed_db/lib && cf_search="$cf_search $prefix/$with_hashed_db/lib"
+ test -d $prefix/$with_hashed_db/lib/$with_hashed_db && cf_search="$cf_search $prefix/$with_hashed_db/lib/$with_hashed_db"
+}
+
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
+
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/lib && cf_search="$cf_search $cf_subdir_prefix/lib"
+ test -d $cf_subdir_prefix/lib/$with_hashed_db && cf_search="$cf_search $cf_subdir_prefix/lib/$with_hashed_db"
+ test -d $cf_subdir_prefix/lib/$with_hashed_db/lib && cf_search="$cf_search $cf_subdir_prefix/lib/$with_hashed_db/lib"
+ test -d $cf_subdir_prefix/$with_hashed_db/lib && cf_search="$cf_search $cf_subdir_prefix/$with_hashed_db/lib"
+ test -d $cf_subdir_prefix/$with_hashed_db/lib/$with_hashed_db && cf_search="$cf_search $cf_subdir_prefix/$with_hashed_db/lib/$with_hashed_db"
+}
+
+done
+
+ for cf_item in $cf_search
+ do
+ case $cf_item in
+ (*/$with_hashed_db)
+
+if test -n "$cf_item" ; then
+ for cf_add_libdir in $cf_item
+ do
+ if test $cf_add_libdir = /usr/lib ; then
+ :
+ elif test -d $cf_add_libdir
+ then
+ cf_have_libdir=no
+ if test -n "$LDFLAGS$LIBS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_libdir in $LDFLAGS $LIBS ; do
+ if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
+ cf_have_libdir=yes; break
+ fi
+ done
+ fi
+ if test "$cf_have_libdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
+
+echo "${as_me:-configure}:22453: testing adding $cf_add_libdir to library-path ..." 1>&5
+
+ LDFLAGS="-L$cf_add_libdir $LDFLAGS"
+ fi
+ fi
+ done
+fi
+
+ ;;
+ esac
+ done
+
+ ;;
+ esac
+ fi
esac
-echo "$as_me:17819: checking for db.h" >&5
+echo "$as_me:22470: checking for db.h" >&5
echo $ECHO_N "checking for db.h... $ECHO_C" >&6
if test "${ac_cv_header_db_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 17825 "configure"
+#line 22476 "configure"
#include "confdefs.h"
#include <db.h>
_ACEOF
-if { (eval echo "$as_me:17829: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:22480: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:17835: \$? = $ac_status" >&5
+ echo "$as_me:22486: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -17851,11 +22502,11 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:17854: result: $ac_cv_header_db_h" >&5
+echo "$as_me:22505: result: $ac_cv_header_db_h" >&5
echo "${ECHO_T}$ac_cv_header_db_h" >&6
if test $ac_cv_header_db_h = yes; then
-echo "$as_me:17858: checking for version of db" >&5
+echo "$as_me:22509: checking for version of db" >&5
echo $ECHO_N "checking for version of db... $ECHO_C" >&6
if test "${cf_cv_hashed_db_version+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17863,13 +22514,13 @@ else
cf_cv_hashed_db_version=unknown
-for cf_db_version in 1 2 3 4 5
+for cf_db_version in 1 2 3 4 5 6
do
-echo "${as_me:-configure}:17869: testing checking for db version $cf_db_version ..." 1>&5
+echo "${as_me:-configure}:22520: testing checking for db version $cf_db_version ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 17872 "configure"
+#line 22523 "configure"
#include "confdefs.h"
$ac_includes_default
@@ -17891,7 +22542,7 @@ $ac_includes_default
#endif
int
-main ()
+main (void)
{
DBT *foo = 0
;
@@ -17899,16 +22550,16 @@ DBT *foo = 0
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:17902: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:22553: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:17905: \$? = $ac_status" >&5
+ echo "$as_me:22556: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:17908: \"$ac_try\"") >&5
+ { (eval echo "$as_me:22559: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17911: \$? = $ac_status" >&5
+ echo "$as_me:22562: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_hashed_db_version=$cf_db_version
@@ -17922,16 +22573,16 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:17925: result: $cf_cv_hashed_db_version" >&5
+echo "$as_me:22576: result: $cf_cv_hashed_db_version" >&5
echo "${ECHO_T}$cf_cv_hashed_db_version" >&6
if test "$cf_cv_hashed_db_version" = unknown ; then
- { { echo "$as_me:17929: error: Cannot determine version of db" >&5
+ { { echo "$as_me:22580: error: Cannot determine version of db" >&5
echo "$as_me: error: Cannot determine version of db" >&2;}
{ (exit 1); exit 1; }; }
else
-echo "$as_me:17934: checking for db libraries" >&5
+echo "$as_me:22585: checking for db libraries" >&5
echo $ECHO_N "checking for db libraries... $ECHO_C" >&6
if test "${cf_cv_hashed_db_libs+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17942,20 +22593,36 @@ for cf_db_libs in "" db$cf_cv_hashed_db_version db-$cf_cv_hashed_db_version db '
do
cf_save_libs="$LIBS"
if test -n "$cf_db_libs"; then
- LIBS="-l$cf_db_libs $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_db_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
fi
-echo "${as_me:-configure}:17948: testing checking for library "$cf_db_libs" ..." 1>&5
+echo "${as_me:-configure}:22615: testing checking for library "$cf_db_libs" ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 17951 "configure"
+#line 22618 "configure"
#include "confdefs.h"
$ac_includes_default
#include <db.h>
int
-main ()
+main (void)
{
char *path = "/tmp/foo";
@@ -18003,16 +22670,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:18006: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22673: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:18009: \$? = $ac_status" >&5
+ echo "$as_me:22676: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:18012: \"$ac_try\"") >&5
+ { (eval echo "$as_me:22679: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:18015: \$? = $ac_status" >&5
+ echo "$as_me:22682: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
if test -n "$cf_db_libs" ; then
@@ -18032,21 +22699,37 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
done
fi
-echo "$as_me:18035: result: $cf_cv_hashed_db_libs" >&5
+echo "$as_me:22702: result: $cf_cv_hashed_db_libs" >&5
echo "${ECHO_T}$cf_cv_hashed_db_libs" >&6
if test "$cf_cv_hashed_db_libs" = unknown ; then
- { { echo "$as_me:18039: error: Cannot determine library for db" >&5
+ { { echo "$as_me:22706: error: Cannot determine library for db" >&5
echo "$as_me: error: Cannot determine library for db" >&2;}
{ (exit 1); exit 1; }; }
elif test "$cf_cv_hashed_db_libs" != default ; then
- LIBS="-l$cf_cv_hashed_db_libs $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_cv_hashed_db_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
fi
fi
else
- { { echo "$as_me:18049: error: Cannot find db.h" >&5
+ { { echo "$as_me:22732: error: Cannot find db.h" >&5
echo "$as_me: error: Cannot find db.h" >&2;}
{ (exit 1); exit 1; }; }
@@ -18061,7 +22744,7 @@ fi
# Just in case, check if the C compiler has a bool type.
-echo "$as_me:18064: checking if we should include stdbool.h" >&5
+echo "$as_me:22747: checking if we should include stdbool.h" >&5
echo $ECHO_N "checking if we should include stdbool.h... $ECHO_C" >&6
if test "${cf_cv_header_stdbool_h+set}" = set; then
@@ -18069,11 +22752,11 @@ if test "${cf_cv_header_stdbool_h+set}" = set; then
else
cat >conftest.$ac_ext <<_ACEOF
-#line 18072 "configure"
+#line 22755 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
bool foo = false
;
@@ -18081,23 +22764,23 @@ bool foo = false
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:18084: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:22767: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:18087: \$? = $ac_status" >&5
+ echo "$as_me:22770: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:18090: \"$ac_try\"") >&5
+ { (eval echo "$as_me:22773: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:18093: \$? = $ac_status" >&5
+ echo "$as_me:22776: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_header_stdbool_h=0
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 18100 "configure"
+#line 22783 "configure"
#include "confdefs.h"
#ifndef __BEOS__
@@ -18105,7 +22788,7 @@ cat >conftest.$ac_ext <<_ACEOF
#endif
int
-main ()
+main (void)
{
bool foo = false
;
@@ -18113,16 +22796,16 @@ bool foo = false
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:18116: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:22799: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:18119: \$? = $ac_status" >&5
+ echo "$as_me:22802: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:18122: \"$ac_try\"") >&5
+ { (eval echo "$as_me:22805: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:18125: \$? = $ac_status" >&5
+ echo "$as_me:22808: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_header_stdbool_h=1
else
@@ -18136,13 +22819,13 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
if test "$cf_cv_header_stdbool_h" = 1
-then echo "$as_me:18139: result: yes" >&5
+then echo "$as_me:22822: result: yes" >&5
echo "${ECHO_T}yes" >&6
-else echo "$as_me:18141: result: no" >&5
+else echo "$as_me:22824: result: no" >&5
echo "${ECHO_T}no" >&6
fi
-echo "$as_me:18145: checking for builtin bool type" >&5
+echo "$as_me:22828: checking for builtin bool type" >&5
echo $ECHO_N "checking for builtin bool type... $ECHO_C" >&6
if test "${cf_cv_cc_bool_type+set}" = set; then
@@ -18150,14 +22833,14 @@ if test "${cf_cv_cc_bool_type+set}" = set; then
else
cat >conftest.$ac_ext <<_ACEOF
-#line 18153 "configure"
+#line 22836 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/types.h>
int
-main ()
+main (void)
{
bool x = false
;
@@ -18165,16 +22848,16 @@ bool x = false
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:18168: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:22851: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:18171: \$? = $ac_status" >&5
+ echo "$as_me:22854: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:18174: \"$ac_try\"") >&5
+ { (eval echo "$as_me:22857: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:18177: \$? = $ac_status" >&5
+ echo "$as_me:22860: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_cc_bool_type=1
else
@@ -18187,9 +22870,9 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
if test "$cf_cv_cc_bool_type" = 1
-then echo "$as_me:18190: result: yes" >&5
+then echo "$as_me:22873: result: yes" >&5
echo "${ECHO_T}yes" >&6
-else echo "$as_me:18192: result: no" >&5
+else echo "$as_me:22875: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -18203,49 +22886,113 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
ac_main_return=return
if test -n "$GXX" ; then
-case $cf_cv_system_name in #(vi
-os2*) #(vi
- cf_stdcpp_libname=stdcpp
- ;;
-*)
- cf_stdcpp_libname=stdc++
- ;;
-esac
-echo "$as_me:18214: checking for library $cf_stdcpp_libname" >&5
+
+ cf_save="$LIBS"
+ LIBS="$LIBS $CXXLIBS"
+ echo "$as_me:22892: checking if we already have C++ library" >&5
+echo $ECHO_N "checking if we already have C++ library... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+#line 22895 "configure"
+#include "confdefs.h"
+
+ #include <iostream>
+int
+main (void)
+{
+
+ std::cout << "Hello World!" << std::endl;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:22909: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:22912: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:22915: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:22918: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_have_libstdcpp=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_libstdcpp=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ echo "$as_me:22927: result: $cf_have_libstdcpp" >&5
+echo "${ECHO_T}$cf_have_libstdcpp" >&6
+ LIBS="$cf_save"
+
+ if test $cf_have_libstdcpp != yes
+ then
+ case $cf_cv_system_name in
+ (os2*)
+ if test -z "`g++ -dM -E - < /dev/null | grep __KLIBC__`"; then
+ cf_stdcpp_libname=stdcpp
+ else
+ cf_stdcpp_libname=stdc++
+ fi
+ ;;
+ (*)
+ cf_stdcpp_libname=stdc++
+ ;;
+ esac
+
+ echo "$as_me:22946: checking for library $cf_stdcpp_libname" >&5
echo $ECHO_N "checking for library $cf_stdcpp_libname... $ECHO_C" >&6
if test "${cf_cv_libstdcpp+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- cf_save="$LIBS"
- LIBS="-l$cf_stdcpp_libname $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 18223 "configure"
+ cf_save="$LIBS"
+ LIBS="$LIBS $CXXLIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_stdcpp_libname; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 22972 "configure"
#include "confdefs.h"
-#include <strstream.h>
+ #include <iostream>
int
-main ()
+main (void)
{
-char buf[80];
-strstreambuf foo(buf, sizeof(buf))
-
+ std::cout << "Hello World!" << std::endl;
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:18239: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22986: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:18242: \$? = $ac_status" >&5
+ echo "$as_me:22989: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:18245: \"$ac_try\"") >&5
+ { (eval echo "$as_me:22992: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:18248: \$? = $ac_status" >&5
+ echo "$as_me:22995: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_libstdcpp=yes
else
@@ -18254,39 +23001,55 @@ cat conftest.$ac_ext >&5
cf_cv_libstdcpp=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- LIBS="$cf_save"
+ LIBS="$cf_save"
fi
-echo "$as_me:18260: result: $cf_cv_libstdcpp" >&5
+echo "$as_me:23007: result: $cf_cv_libstdcpp" >&5
echo "${ECHO_T}$cf_cv_libstdcpp" >&6
-test "$cf_cv_libstdcpp" = yes && CXXLIBS="-l$cf_stdcpp_libname $CXXLIBS"
+ test "$cf_cv_libstdcpp" = yes && {
+cf_add_libs="$CXXLIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_stdcpp_libname; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+CXXLIBS="$cf_add_libs"
+ }
+ fi
fi
- echo "$as_me:18265: checking whether $CXX understands -c and -o together" >&5
+ echo "$as_me:23029: checking whether $CXX understands -c and -o together" >&5
echo $ECHO_N "checking whether $CXX understands -c and -o together... $ECHO_C" >&6
if test "${cf_cv_prog_CXX_c_o+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat > conftest.$ac_ext <<CF_EOF
-#include <stdio.h>
-int main()
+int main(void)
{
${cf_cv_main_return:-return}(0);
}
CF_EOF
# We do the test twice because some compilers refuse to overwrite an
# existing .o file with -o, though they will create one.
-ac_try='$CXX -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-if { (eval echo "$as_me:18281: \"$ac_try\"") >&5
+ac_try='$CXX $CXXFLAGS $CPPFLAGS -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+if { (eval echo "$as_me:23044: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:18284: \$? = $ac_status" >&5
+ echo "$as_me:23047: \$? = $ac_status" >&5
(exit $ac_status); } &&
- test -f conftest2.$ac_objext && { (eval echo "$as_me:18286: \"$ac_try\"") >&5
+ test -f conftest2.$ac_objext && { (eval echo "$as_me:23049: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:18289: \$? = $ac_status" >&5
+ echo "$as_me:23052: \$? = $ac_status" >&5
(exit $ac_status); };
then
eval cf_cv_prog_CXX_c_o=yes
@@ -18297,41 +23060,57 @@ rm -rf conftest*
fi
if test $cf_cv_prog_CXX_c_o = yes; then
- echo "$as_me:18300: result: yes" >&5
+ echo "$as_me:23063: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
- echo "$as_me:18303: result: no" >&5
+ echo "$as_me:23066: result: no" >&5
echo "${ECHO_T}no" >&6
fi
case $GXX_VERSION in
- 1*|2.0-6*)
+ (1*|2.0-6*)
cf_cxx_library=yes
;;
- *-2.7*|2.7*)
+ (*-2.7*|2.7*)
cf_cxx_library=unknown
-case $cf_cv_system_name in #(vi
-os2*) #(vi
+case $cf_cv_system_name in
+(os2*)
cf_gpp_libname=gpp
;;
-*)
+(*)
cf_gpp_libname=g++
;;
esac
if test "$GXX" = yes; then
- echo "$as_me:18323: checking for lib$cf_gpp_libname" >&5
+ echo "$as_me:23086: checking for lib$cf_gpp_libname" >&5
echo $ECHO_N "checking for lib$cf_gpp_libname... $ECHO_C" >&6
cf_save="$LIBS"
- LIBS="-l$cf_gpp_libname $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_gpp_libname; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 18328 "configure"
+#line 23107 "configure"
#include "confdefs.h"
#include <$cf_gpp_libname/builtin.h>
int
-main ()
+main (void)
{
two_arg_error_handler_t foo2 = lib_error_handler
;
@@ -18339,19 +23118,35 @@ two_arg_error_handler_t foo2 = lib_error_handler
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:18342: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23121: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:18345: \$? = $ac_status" >&5
+ echo "$as_me:23124: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:18348: \"$ac_try\"") >&5
+ { (eval echo "$as_me:23127: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:18351: \$? = $ac_status" >&5
+ echo "$as_me:23130: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cxx_library=yes
- CXXLIBS="-l$cf_gpp_libname $CXXLIBS"
+
+cf_add_libs="$CXXLIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_gpp_libname; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+CXXLIBS="$cf_add_libs"
+
if test "$cf_gpp_libname" = cpp ; then
cat >>confdefs.h <<\EOF
@@ -18369,13 +23164,13 @@ else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 18372 "configure"
+#line 23167 "configure"
#include "confdefs.h"
#include <builtin.h>
int
-main ()
+main (void)
{
two_arg_error_handler_t foo2 = lib_error_handler
;
@@ -18383,19 +23178,34 @@ two_arg_error_handler_t foo2 = lib_error_handler
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:18386: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23181: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:18389: \$? = $ac_status" >&5
+ echo "$as_me:23184: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:18392: \"$ac_try\"") >&5
+ { (eval echo "$as_me:23187: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:18395: \$? = $ac_status" >&5
+ echo "$as_me:23190: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cxx_library=yes
- CXXLIBS="-l$cf_gpp_libname $CXXLIBS"
+
+cf_add_libs="$CXXLIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_gpp_libname; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+CXXLIBS="$cf_add_libs"
cat >>confdefs.h <<\EOF
#define HAVE_BUILTIN_H 1
@@ -18410,12 +23220,12 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS="$cf_save"
- echo "$as_me:18413: result: $cf_cxx_library" >&5
+ echo "$as_me:23223: result: $cf_cxx_library" >&5
echo "${ECHO_T}$cf_cxx_library" >&6
fi
;;
- *)
+ (*)
cf_cxx_library=no
;;
esac
@@ -18426,7 +23236,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
ac_main_return=return
-echo "$as_me:18429: checking how to run the C++ preprocessor" >&5
+echo "$as_me:23239: checking how to run the C++ preprocessor" >&5
echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
if test -z "$CXXCPP"; then
if test "${ac_cv_prog_CXXCPP+set}" = set; then
@@ -18443,18 +23253,18 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line 18446 "configure"
+#line 23256 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax error
_ACEOF
-if { (eval echo "$as_me:18451: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:23261: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:18457: \$? = $ac_status" >&5
+ echo "$as_me:23267: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -18477,17 +23287,17 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line 18480 "configure"
+#line 23290 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
_ACEOF
-if { (eval echo "$as_me:18484: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:23294: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:18490: \$? = $ac_status" >&5
+ echo "$as_me:23300: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -18524,7 +23334,7 @@ fi
else
ac_cv_prog_CXXCPP=$CXXCPP
fi
-echo "$as_me:18527: result: $CXXCPP" >&5
+echo "$as_me:23337: result: $CXXCPP" >&5
echo "${ECHO_T}$CXXCPP" >&6
ac_preproc_ok=false
for ac_cxx_preproc_warn_flag in '' yes
@@ -18534,18 +23344,18 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line 18537 "configure"
+#line 23347 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax error
_ACEOF
-if { (eval echo "$as_me:18542: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:23352: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:18548: \$? = $ac_status" >&5
+ echo "$as_me:23358: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -18568,17 +23378,17 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line 18571 "configure"
+#line 23381 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
_ACEOF
-if { (eval echo "$as_me:18575: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:23385: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:18581: \$? = $ac_status" >&5
+ echo "$as_me:23391: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -18606,7 +23416,7 @@ rm -f conftest.err conftest.$ac_ext
if $ac_preproc_ok; then
:
else
- { { echo "$as_me:18609: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&5
+ { { echo "$as_me:23419: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&5
echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -18621,23 +23431,23 @@ ac_main_return=return
for ac_header in typeinfo
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:18624: checking for $ac_header" >&5
+echo "$as_me:23434: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 18630 "configure"
+#line 23440 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:18634: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:23444: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:18640: \$? = $ac_status" >&5
+ echo "$as_me:23450: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -18656,7 +23466,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:18659: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:23469: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -18669,23 +23479,23 @@ done
for ac_header in iostream
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:18672: checking for $ac_header" >&5
+echo "$as_me:23482: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 18678 "configure"
+#line 23488 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:18682: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:23492: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:18688: \$? = $ac_status" >&5
+ echo "$as_me:23498: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -18704,7 +23514,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:18707: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:23517: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -18715,17 +23525,17 @@ fi
done
if test x"$ac_cv_header_iostream" = xyes ; then
- echo "$as_me:18718: checking if iostream uses std-namespace" >&5
+ echo "$as_me:23528: checking if iostream uses std-namespace" >&5
echo $ECHO_N "checking if iostream uses std-namespace... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 18721 "configure"
+#line 23531 "configure"
#include "confdefs.h"
#include <iostream>
using std::endl;
using std::cerr;
int
-main ()
+main (void)
{
cerr << "testing" << endl;
@@ -18735,16 +23545,16 @@ cerr << "testing" << endl;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:18738: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:23548: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:18741: \$? = $ac_status" >&5
+ echo "$as_me:23551: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:18744: \"$ac_try\"") >&5
+ { (eval echo "$as_me:23554: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:18747: \$? = $ac_status" >&5
+ echo "$as_me:23557: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_iostream_namespace=yes
else
@@ -18753,7 +23563,7 @@ cat conftest.$ac_ext >&5
cf_iostream_namespace=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- echo "$as_me:18756: result: $cf_iostream_namespace" >&5
+ echo "$as_me:23566: result: $cf_iostream_namespace" >&5
echo "${ECHO_T}$cf_iostream_namespace" >&6
if test "$cf_iostream_namespace" = yes ; then
@@ -18764,7 +23574,7 @@ EOF
fi
fi
-echo "$as_me:18767: checking if we should include stdbool.h" >&5
+echo "$as_me:23577: checking if we should include stdbool.h" >&5
echo $ECHO_N "checking if we should include stdbool.h... $ECHO_C" >&6
if test "${cf_cv_header_stdbool_h+set}" = set; then
@@ -18772,11 +23582,11 @@ if test "${cf_cv_header_stdbool_h+set}" = set; then
else
cat >conftest.$ac_ext <<_ACEOF
-#line 18775 "configure"
+#line 23585 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
bool foo = false
;
@@ -18784,23 +23594,23 @@ bool foo = false
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:18787: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:23597: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:18790: \$? = $ac_status" >&5
+ echo "$as_me:23600: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:18793: \"$ac_try\"") >&5
+ { (eval echo "$as_me:23603: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:18796: \$? = $ac_status" >&5
+ echo "$as_me:23606: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_header_stdbool_h=0
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 18803 "configure"
+#line 23613 "configure"
#include "confdefs.h"
#ifndef __BEOS__
@@ -18808,7 +23618,7 @@ cat >conftest.$ac_ext <<_ACEOF
#endif
int
-main ()
+main (void)
{
bool foo = false
;
@@ -18816,16 +23626,16 @@ bool foo = false
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:18819: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:23629: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:18822: \$? = $ac_status" >&5
+ echo "$as_me:23632: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:18825: \"$ac_try\"") >&5
+ { (eval echo "$as_me:23635: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:18828: \$? = $ac_status" >&5
+ echo "$as_me:23638: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_header_stdbool_h=1
else
@@ -18839,13 +23649,13 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
if test "$cf_cv_header_stdbool_h" = 1
-then echo "$as_me:18842: result: yes" >&5
+then echo "$as_me:23652: result: yes" >&5
echo "${ECHO_T}yes" >&6
-else echo "$as_me:18844: result: no" >&5
+else echo "$as_me:23654: result: no" >&5
echo "${ECHO_T}no" >&6
fi
-echo "$as_me:18848: checking for builtin bool type" >&5
+echo "$as_me:23658: checking for builtin bool type" >&5
echo $ECHO_N "checking for builtin bool type... $ECHO_C" >&6
if test "${cf_cv_builtin_bool+set}" = set; then
@@ -18853,14 +23663,14 @@ if test "${cf_cv_builtin_bool+set}" = set; then
else
cat >conftest.$ac_ext <<_ACEOF
-#line 18856 "configure"
+#line 23666 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/types.h>
int
-main ()
+main (void)
{
bool x = false
;
@@ -18868,16 +23678,16 @@ bool x = false
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:18871: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:23681: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:18874: \$? = $ac_status" >&5
+ echo "$as_me:23684: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:18877: \"$ac_try\"") >&5
+ { (eval echo "$as_me:23687: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:18880: \$? = $ac_status" >&5
+ echo "$as_me:23690: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_builtin_bool=1
else
@@ -18890,13 +23700,13 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
if test "$cf_cv_builtin_bool" = 1
-then echo "$as_me:18893: result: yes" >&5
+then echo "$as_me:23703: result: yes" >&5
echo "${ECHO_T}yes" >&6
-else echo "$as_me:18895: result: no" >&5
+else echo "$as_me:23705: result: no" >&5
echo "${ECHO_T}no" >&6
fi
-echo "$as_me:18899: checking for size of bool" >&5
+echo "$as_me:23709: checking for size of bool" >&5
echo $ECHO_N "checking for size of bool... $ECHO_C" >&6
if test "${cf_cv_type_of_bool+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -18907,7 +23717,7 @@ else
cf_cv_type_of_bool=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 18910 "configure"
+#line 23720 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -18931,7 +23741,7 @@ else
#endif
-int main()
+int main(void)
{
FILE *fp = fopen("cf_test.out", "w");
if (fp != 0) {
@@ -18949,15 +23759,15 @@ int main()
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:18952: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23762: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:18955: \$? = $ac_status" >&5
+ echo "$as_me:23765: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:18957: \"$ac_try\"") >&5
+ { (eval echo "$as_me:23767: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:18960: \$? = $ac_status" >&5
+ echo "$as_me:23770: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_type_of_bool=`cat cf_test.out`
if test -z "$cf_cv_type_of_bool"; then
@@ -18975,18 +23785,18 @@ fi
fi
rm -f cf_test.out
-echo "$as_me:18978: result: $cf_cv_type_of_bool" >&5
+echo "$as_me:23788: result: $cf_cv_type_of_bool" >&5
echo "${ECHO_T}$cf_cv_type_of_bool" >&6
if test "$cf_cv_type_of_bool" = unknown ; then
- case .$NCURSES_BOOL in #(vi
- .auto|.) NCURSES_BOOL=unsigned;;
+ case .$NCURSES_BOOL in
+ (.auto|.) NCURSES_BOOL=unsigned;;
esac
- { echo "$as_me:18984: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5
+ { echo "$as_me:23794: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5
echo "$as_me: WARNING: Assuming $NCURSES_BOOL for type of bool" >&2;}
cf_cv_type_of_bool=$NCURSES_BOOL
fi
-echo "$as_me:18989: checking for special defines needed for etip.h" >&5
+echo "$as_me:23799: checking for special defines needed for etip.h" >&5
echo $ECHO_N "checking for special defines needed for etip.h... $ECHO_C" >&6
cf_save_CXXFLAGS="$CXXFLAGS"
cf_result="none"
@@ -19004,13 +23814,13 @@ 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 <<_ACEOF
-#line 19007 "configure"
+#line 23817 "configure"
#include "confdefs.h"
#include <etip.h.in>
int
-main ()
+main (void)
{
;
@@ -19018,16 +23828,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:19021: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:23831: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:19024: \$? = $ac_status" >&5
+ echo "$as_me:23834: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:19027: \"$ac_try\"") >&5
+ { (eval echo "$as_me:23837: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:19030: \$? = $ac_status" >&5
+ echo "$as_me:23840: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
test -n "$cf_math" && cat >>confdefs.h <<EOF
@@ -19048,12 +23858,12 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
done
done
-echo "$as_me:19051: result: $cf_result" >&5
+echo "$as_me:23861: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
CXXFLAGS="$cf_save_CXXFLAGS"
if test -n "$CXX"; then
-echo "$as_me:19056: checking if $CXX accepts parameter initialization" >&5
+echo "$as_me:23866: checking if $CXX accepts parameter initialization" >&5
echo $ECHO_N "checking if $CXX accepts parameter initialization... $ECHO_C" >&6
if test "${cf_cv_cpp_param_init+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19070,7 +23880,7 @@ ac_main_return=return
cf_cv_cpp_param_init=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 19073 "configure"
+#line 23883 "configure"
#include "confdefs.h"
class TEST {
@@ -19085,19 +23895,19 @@ TEST::TEST(int x = 1) // some compilers do not like second initializer
{
value = x;
}
-int main() { }
+int main(void) { }
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:19092: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23902: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:19095: \$? = $ac_status" >&5
+ echo "$as_me:23905: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:19097: \"$ac_try\"") >&5
+ { (eval echo "$as_me:23907: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:19100: \$? = $ac_status" >&5
+ echo "$as_me:23910: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_cpp_param_init=yes
else
@@ -19116,7 +23926,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
ac_main_return=return
fi
-echo "$as_me:19119: result: $cf_cv_cpp_param_init" >&5
+echo "$as_me:23929: result: $cf_cv_cpp_param_init" >&5
echo "${ECHO_T}$cf_cv_cpp_param_init" >&6
fi
test "$cf_cv_cpp_param_init" = yes &&
@@ -19126,7 +23936,7 @@ EOF
if test -n "$CXX"; then
-echo "$as_me:19129: checking if $CXX accepts static_cast" >&5
+echo "$as_me:23939: checking if $CXX accepts static_cast" >&5
echo $ECHO_N "checking if $CXX accepts static_cast... $ECHO_C" >&6
if test "${cf_cv_cpp_static_cast+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19140,7 +23950,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
ac_main_return=return
cat >conftest.$ac_ext <<_ACEOF
-#line 19143 "configure"
+#line 23953 "configure"
#include "confdefs.h"
class NCursesPanel
@@ -19175,7 +23985,7 @@ public:
};
int
-main ()
+main (void)
{
const char* p_UserData = static_cast<char*>(0)
@@ -19184,16 +23994,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:19187: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:23997: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:19190: \$? = $ac_status" >&5
+ echo "$as_me:24000: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:19193: \"$ac_try\"") >&5
+ { (eval echo "$as_me:24003: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:19196: \$? = $ac_status" >&5
+ echo "$as_me:24006: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_cpp_static_cast=yes
else
@@ -19211,7 +24021,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
ac_main_return=return
fi
-echo "$as_me:19214: result: $cf_cv_cpp_static_cast" >&5
+echo "$as_me:24024: result: $cf_cv_cpp_static_cast" >&5
echo "${ECHO_T}$cf_cv_cpp_static_cast" >&6
fi
@@ -19223,17 +24033,17 @@ EOF
CXX_AR='$(AR)'
CXX_ARFLAGS='$(ARFLAGS)'
- case $cf_cv_system_name in #(vi
- irix*) #(vi
+ case $cf_cv_system_name in
+ (irix*)
if test "$GXX" != yes ; then
CXX_AR='$(CXX)'
CXX_ARFLAGS='-ar -o'
fi
;;
- sco3.2v5*) #(vi
+ (sco3.2v5*)
CXXLDFLAGS="-u main"
;;
- solaris2*)
+ (solaris2*)
if test "$GXX" != yes ; then
CXX_AR='$(CXX)'
CXX_ARFLAGS='-xar -o'
@@ -19260,7 +24070,7 @@ else
else
if test "$cf_cv_header_stdbool_h" = 1 ; then
-echo "$as_me:19263: checking for size of bool" >&5
+echo "$as_me:24073: checking for size of bool" >&5
echo $ECHO_N "checking for size of bool... $ECHO_C" >&6
if test "${cf_cv_type_of_bool+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19271,7 +24081,7 @@ else
cf_cv_type_of_bool=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 19274 "configure"
+#line 24084 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -19295,7 +24105,7 @@ else
#endif
-int main()
+int main(void)
{
FILE *fp = fopen("cf_test.out", "w");
if (fp != 0) {
@@ -19313,15 +24123,15 @@ int main()
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:19316: \"$ac_link\"") >&5
+if { (eval echo "$as_me:24126: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:19319: \$? = $ac_status" >&5
+ echo "$as_me:24129: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:19321: \"$ac_try\"") >&5
+ { (eval echo "$as_me:24131: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:19324: \$? = $ac_status" >&5
+ echo "$as_me:24134: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_type_of_bool=`cat cf_test.out`
if test -z "$cf_cv_type_of_bool"; then
@@ -19339,25 +24149,25 @@ fi
fi
rm -f cf_test.out
-echo "$as_me:19342: result: $cf_cv_type_of_bool" >&5
+echo "$as_me:24152: result: $cf_cv_type_of_bool" >&5
echo "${ECHO_T}$cf_cv_type_of_bool" >&6
if test "$cf_cv_type_of_bool" = unknown ; then
- case .$NCURSES_BOOL in #(vi
- .auto|.) NCURSES_BOOL=unsigned;;
+ case .$NCURSES_BOOL in
+ (.auto|.) NCURSES_BOOL=unsigned;;
esac
- { echo "$as_me:19348: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5
+ { echo "$as_me:24158: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5
echo "$as_me: WARNING: Assuming $NCURSES_BOOL for type of bool" >&2;}
cf_cv_type_of_bool=$NCURSES_BOOL
fi
else
- echo "$as_me:19354: checking for fallback type of bool" >&5
+ echo "$as_me:24164: checking for fallback type of bool" >&5
echo $ECHO_N "checking for fallback type of bool... $ECHO_C" >&6
- case "$host_cpu" in #(vi
- i?86) cf_cv_type_of_bool=char ;; #(vi
- *) cf_cv_type_of_bool=int ;;
+ case "$host_cpu" in
+ (i?86) cf_cv_type_of_bool=char ;;
+ (*) cf_cv_type_of_bool=int ;;
esac
- echo "$as_me:19360: result: $cf_cv_type_of_bool" >&5
+ echo "$as_me:24170: result: $cf_cv_type_of_bool" >&5
echo "${ECHO_T}$cf_cv_type_of_bool" >&6
fi
fi
@@ -19386,7 +24196,7 @@ if test -f "${srcdir}/Ada95/Makefile.in" ; then
if test "$cf_with_ada" != "no" ; then
if test "$with_libtool" != "no"; then
- { echo "$as_me:19389: WARNING: libtool does not support Ada - disabling feature" >&5
+ { echo "$as_me:24199: WARNING: libtool does not support Ada - disabling feature" >&5
echo "$as_me: WARNING: libtool does not support Ada - disabling feature" >&2;}
cf_with_ada=no
fi
@@ -19394,67 +24204,161 @@ echo "$as_me: WARNING: libtool does not support Ada - disabling feature" >&2;}
if test "$cf_with_ada" != "no" ; then
-cf_ada_make=gnatmake
-# Extract the first word of "$cf_ada_make", so it can be a program name with args.
-set dummy $cf_ada_make; ac_word=$2
-echo "$as_me:19400: checking for $ac_word" >&5
+for cf_prog_gnat in gnat gnatmake gprconfig gprbuild
+do
+
+cf_upper_prog_gnat=`echo "${cf_prog_gnat}" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+
+ unset ac_cv_path_cf_TEMP_gnat
+ unset cf_TEMP_gnat
+ # Extract the first word of "$cf_prog_gnat", so it can be a program name with args.
+set dummy $cf_prog_gnat; ac_word=$2
+echo "$as_me:24216: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_gnat_exists+set}" = set; then
+if test "${ac_cv_path_cf_TEMP_gnat+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test -n "$gnat_exists"; then
- ac_cv_prog_gnat_exists="$gnat_exists" # Let the user override the test.
-else
+ case $cf_TEMP_gnat in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_cf_TEMP_gnat="$cf_TEMP_gnat" # Let the user override the test with a path.
+ ;;
+ *)
ac_save_IFS=$IFS; IFS=$ac_path_separator
ac_dummy="$PATH"
for ac_dir in $ac_dummy; do
IFS=$ac_save_IFS
test -z "$ac_dir" && ac_dir=.
- $as_executable_p "$ac_dir/$ac_word" || continue
-ac_cv_prog_gnat_exists="yes"
-echo "$as_me:19415: found $ac_dir/$ac_word" >&5
-break
+ if $as_executable_p "$ac_dir/$ac_word"; then
+ ac_cv_path_cf_TEMP_gnat="$ac_dir/$ac_word"
+ echo "$as_me:24233: found $ac_dir/$ac_word" >&5
+ break
+fi
done
- test -z "$ac_cv_prog_gnat_exists" && ac_cv_prog_gnat_exists="no"
-fi
+ test -z "$ac_cv_path_cf_TEMP_gnat" && ac_cv_path_cf_TEMP_gnat="no"
+ ;;
+esac
fi
-gnat_exists=$ac_cv_prog_gnat_exists
-if test -n "$gnat_exists"; then
- echo "$as_me:19424: result: $gnat_exists" >&5
-echo "${ECHO_T}$gnat_exists" >&6
+cf_TEMP_gnat=$ac_cv_path_cf_TEMP_gnat
+
+if test -n "$cf_TEMP_gnat"; then
+ echo "$as_me:24245: result: $cf_TEMP_gnat" >&5
+echo "${ECHO_T}$cf_TEMP_gnat" >&6
else
- echo "$as_me:19427: result: no" >&5
+ echo "$as_me:24248: result: no" >&5
echo "${ECHO_T}no" >&6
fi
-if test "$ac_cv_prog_gnat_exists" = no; then
- cf_ada_make=
- cf_cv_prog_gnat_correct=no
+ eval cf_cv_PATH_$cf_upper_prog_gnat=$ac_cv_path_cf_TEMP_gnat
+
+ if test "x$cf_TEMP_gnat" != xno; then
+ unset cf_cv_gnat_version
+ unset cf_TEMP_gnat
+
+echo "$as_me:24258: checking for $cf_prog_gnat version" >&5
+echo $ECHO_N "checking for $cf_prog_gnat version... $ECHO_C" >&6
+if test "${cf_cv_gnat_version+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cf_cv_gnat_version=`$cf_prog_gnat --version 2>&1 | \
+ grep '[0-9].[0-9][0-9]*' |\
+ sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'`
+
+fi
+echo "$as_me:24269: result: $cf_cv_gnat_version" >&5
+echo "${ECHO_T}$cf_cv_gnat_version" >&6
+test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no
+eval cf_TEMP_gnat=$cf_cv_gnat_version; unset cf_cv_gnat_version
+
+ fi
+ eval cf_cv_VERSION_$cf_upper_prog_gnat=$cf_TEMP_gnat
+
+ unset cf_TEMP_gnat
+ unset cf_cv_gnat_version
+ unset ac_cv_path_cf_TEMP_gnat
+done
+
+if test "x$cf_cv_VERSION_GNATMAKE" = "xno"; then
+ cf_ada_make=
+ cf_cv_prog_gnat_correct=no
else
+ cf_ada_make=gnatmake
+ if test "x$cf_cv_VERSION_GPRCONFIG" = "xno"; then
+ # gprconfig is newer than gnatmake; we can continue...
+ cf_ada_config="##"
+ else
+ rm -rf conftest* *~conftest*
+ if mkdir conftest.src
+ then
+ cf_ada_config=""
+ cd conftest.src
+ for cf_gprconfig in Ada C
+ do
+ echo "$as_me:24298: checking for gprconfig name for $cf_gprconfig" >&5
+echo $ECHO_N "checking for gprconfig name for $cf_gprconfig... $ECHO_C" >&6
+ if test $cf_gprconfig = C
+ then
+ for cf_gprconfig_param in \
+ $cf_gprconfig,,,,GNATGCC \
+ $cf_gprconfig,,,,GCC \
+ $cf_gprconfig
+ do
+ cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&5 | ${AWK:-awk} '/^\*/{print $3;}' | head -n 1`
+ test -n "$cf_gprconfig_value" && break
+ done
+ else
+ cf_gprconfig_param=$cf_gprconfig
+ cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&5 | ${AWK:-awk} '/^\*/{print $3;}' | head -n 1`
+ fi
+ if test -n "$cf_gprconfig_value"
+ then
+ eval cf_ada_config_$cf_gprconfig=$cf_gprconfig_value
+ echo "$as_me:24317: result: $cf_gprconfig_value" >&5
+echo "${ECHO_T}$cf_gprconfig_value" >&6
+ else
+ echo "$as_me:24320: result: missing" >&5
+echo "${ECHO_T}missing" >&6
+ cf_ada_config="#"
+ break
+ fi
+ done
+ cd ..
+ rm -rf conftest* *~conftest*
+ fi
+ fi
+ if test "x$cf_ada_config" != "x#"
+ then
-echo "$as_me:19436: checking for gnat version" >&5
+echo "$as_me:24333: checking for gnat version" >&5
echo $ECHO_N "checking for gnat version... $ECHO_C" >&6
-cf_gnat_version=`${cf_ada_make:-gnatmake} -v 2>&1 | \
+if test "${cf_cv_gnat_version+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cf_cv_gnat_version=`${cf_ada_make:-gnatmake} --version 2>&1 | \
grep '[0-9].[0-9][0-9]*' |\
- sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'`
-echo "$as_me:19441: result: $cf_gnat_version" >&5
-echo "${ECHO_T}$cf_gnat_version" >&6
+ sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'`
-case $cf_gnat_version in #(vi
-3.1[1-9]*|3.[2-9]*|[4-9].*|20[0-9][0-9]) #(vi
+fi
+echo "$as_me:24344: result: $cf_cv_gnat_version" >&5
+echo "${ECHO_T}$cf_cv_gnat_version" >&6
+test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no
+
+case $cf_cv_gnat_version in
+(3.1[1-9]*|3.[2-9]*|[4-9].*|20[0-9][0-9])
cf_cv_prog_gnat_correct=yes
;;
-*)
- { echo "$as_me:19449: WARNING: Unsupported GNAT version $cf_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&5
-echo "$as_me: WARNING: Unsupported GNAT version $cf_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&2;}
+(*)
+ { echo "$as_me:24353: WARNING: Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&5
+echo "$as_me: WARNING: Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&2;}
cf_cv_prog_gnat_correct=no
;;
esac
- # Extract the first word of "m4", so it can be a program name with args.
+ # Extract the first word of "m4", so it can be a program name with args.
set dummy m4; ac_word=$2
-echo "$as_me:19457: checking for $ac_word" >&5
+echo "$as_me:24361: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_M4_exists+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19469,7 +24373,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_M4_exists="yes"
-echo "$as_me:19472: found $ac_dir/$ac_word" >&5
+echo "$as_me:24376: found $ac_dir/$ac_word" >&5
break
done
@@ -19478,19 +24382,20 @@ fi
fi
M4_exists=$ac_cv_prog_M4_exists
if test -n "$M4_exists"; then
- echo "$as_me:19481: result: $M4_exists" >&5
+ echo "$as_me:24385: result: $M4_exists" >&5
echo "${ECHO_T}$M4_exists" >&6
else
- echo "$as_me:19484: result: no" >&5
+ echo "$as_me:24388: result: no" >&5
echo "${ECHO_T}no" >&6
fi
- if test "$ac_cv_prog_M4_exists" = no; then
- cf_cv_prog_gnat_correct=no
- echo Ada95 binding required program m4 not found. Ada95 binding disabled.
- fi
- if test "$cf_cv_prog_gnat_correct" = yes; then
- echo "$as_me:19493: checking if GNAT works" >&5
+ if test "$ac_cv_prog_M4_exists" = no; then
+ cf_cv_prog_gnat_correct=no
+ { echo "$as_me:24394: WARNING: Ada95 binding required program m4 not found. Ada95 binding disabled" >&5
+echo "$as_me: WARNING: Ada95 binding required program m4 not found. Ada95 binding disabled" >&2;}
+ fi
+ if test "$cf_cv_prog_gnat_correct" = yes; then
+ echo "$as_me:24398: checking if GNAT works" >&5
echo $ECHO_N "checking if GNAT works... $ECHO_C" >&6
rm -rf conftest* *~conftest*
@@ -19518,46 +24423,63 @@ else
fi
rm -rf conftest* *~conftest*
- echo "$as_me:19521: result: $cf_cv_prog_gnat_correct" >&5
+ echo "$as_me:24426: result: $cf_cv_prog_gnat_correct" >&5
echo "${ECHO_T}$cf_cv_prog_gnat_correct" >&6
- fi
+ fi
+ else
+ cf_cv_prog_gnat_correct=no
+ fi
fi
if test "x$cf_cv_prog_gnat_correct" = xyes; then
ADAFLAGS="$ADAFLAGS -gnatpn"
- echo "$as_me:19530: checking optimization options for ADAFLAGS" >&5
+ echo "$as_me:24438: checking optimization options for ADAFLAGS" >&5
echo $ECHO_N "checking optimization options for ADAFLAGS... $ECHO_C" >&6
case "$CFLAGS" in
- *-g*)
+ (*-g*)
ADAFLAGS="$ADAFLAGS -g"
;;
esac
case "$CFLAGS" in
- *-O*)
+ (*-O*)
cf_O_flag=`echo "$CFLAGS" |sed -e 's/^.*-O/-O/' -e 's/[ ].*//'`
ADAFLAGS="$ADAFLAGS $cf_O_flag"
;;
esac
- echo "$as_me:19547: result: $ADAFLAGS" >&5
+ echo "$as_me:24455: result: $ADAFLAGS" >&5
echo "${ECHO_T}$ADAFLAGS" >&6
-echo "$as_me:19550: checking if GNAT supports generics" >&5
+echo "$as_me:24458: checking if GNATPREP supports -T option" >&5
+echo $ECHO_N "checking if GNATPREP supports -T option... $ECHO_C" >&6
+if test "${cf_cv_gnatprep_opt_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cf_cv_gnatprep_opt_t=no
+gnatprep -T 2>/dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes
+
+fi
+echo "$as_me:24468: result: $cf_cv_gnatprep_opt_t" >&5
+echo "${ECHO_T}$cf_cv_gnatprep_opt_t" >&6
+test "$cf_cv_gnatprep_opt_t" = yes && GNATPREP_OPTS="-T $GNATPREP_OPTS"
+
+echo "$as_me:24472: checking if GNAT supports generics" >&5
echo $ECHO_N "checking if GNAT supports generics... $ECHO_C" >&6
-case $cf_gnat_version in #(vi
-3.[1-9]*|[4-9].*) #(vi
+case $cf_cv_gnat_version in
+(3.[1-9]*|[4-9].*)
cf_gnat_generics=yes
;;
-*)
+(*)
cf_gnat_generics=no
;;
esac
-echo "$as_me:19560: result: $cf_gnat_generics" >&5
+echo "$as_me:24482: result: $cf_gnat_generics" >&5
echo "${ECHO_T}$cf_gnat_generics" >&6
if test "$cf_gnat_generics" = yes
@@ -19569,7 +24491,7 @@ else
cf_generic_objects=
fi
-echo "$as_me:19572: checking if GNAT supports SIGINT" >&5
+echo "$as_me:24494: checking if GNAT supports SIGINT" >&5
echo $ECHO_N "checking if GNAT supports SIGINT... $ECHO_C" >&6
if test "${cf_cv_gnat_sigint+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19617,7 +24539,7 @@ fi
rm -rf conftest* *~conftest*
fi
-echo "$as_me:19620: result: $cf_cv_gnat_sigint" >&5
+echo "$as_me:24542: result: $cf_cv_gnat_sigint" >&5
echo "${ECHO_T}$cf_cv_gnat_sigint" >&6
if test $cf_cv_gnat_sigint = yes ; then
@@ -19626,64 +24548,26 @@ else
USE_GNAT_SIGINT="#"
fi
-echo "$as_me:19629: checking if GNAT pragma Unreferenced works" >&5
-echo $ECHO_N "checking if GNAT pragma Unreferenced works... $ECHO_C" >&6
-if test "${cf_cv_pragma_unreferenced+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-rm -rf conftest* *~conftest*
-cat >>conftest.ads <<CF_EOF
-procedure conftest;
-CF_EOF
-cat >>conftest.adb <<CF_EOF
-with Text_IO;
-with GNAT.OS_Lib;
-procedure conftest is
- test : Integer;
- pragma Unreferenced (test);
-begin
- test := 1;
- Text_IO.Put ("Hello World");
- Text_IO.New_Line;
- GNAT.OS_Lib.OS_Exit (0);
-end conftest;
-CF_EOF
-if ( $cf_ada_make $ADAFLAGS conftest 1>&5 2>&1 ) ; then
- cf_cv_pragma_unreferenced=yes
-else
- cf_cv_pragma_unreferenced=no
-fi
-rm -rf conftest* *~conftest*
-
-fi
-echo "$as_me:19660: result: $cf_cv_pragma_unreferenced" >&5
-echo "${ECHO_T}$cf_cv_pragma_unreferenced" >&6
-
-# if the pragma is supported, use it (needed in the Trace code).
-if test $cf_cv_pragma_unreferenced = yes ; then
- PRAGMA_UNREF=TRUE
-else
- PRAGMA_UNREF=FALSE
-fi
-
cf_gnat_libraries=no
cf_gnat_projects=no
-echo "$as_me:19673: checking if GNAT supports project files" >&5
+if test "$enable_gnat_projects" != no ; then
+echo "$as_me:24555: checking if GNAT supports project files" >&5
echo $ECHO_N "checking if GNAT supports project files... $ECHO_C" >&6
-case $cf_gnat_version in #(vi
-3.[0-9]*) #(vi
+case $cf_cv_gnat_version in
+(3.[0-9]*)
;;
-*)
- case $cf_cv_system_name in #(vi
- cygwin*|msys*) #(vi
+(*)
+ case $cf_cv_system_name in
+ (cygwin*|msys*)
;;
- *)
- mkdir conftest.src conftest.bin conftest.lib
- cd conftest.src
+ (*)
rm -rf conftest* *~conftest*
- cat >>library.gpr <<CF_EOF
+ if mkdir conftest.src conftest.bin conftest.lib
+ then
+ cd conftest.src
+ rm -rf conftest* *~conftest*
+ cat >>library.gpr <<CF_EOF
project Library is
Kind := External ("LIB_KIND");
for Library_Name use "ConfTest";
@@ -19694,22 +24578,14 @@ project Library is
for Library_Dir use External("BUILD_DIR");
Source_Dir := External ("SOURCE_DIR");
for Source_Dirs use (Source_Dir);
- package Compiler is
- for Default_Switches ("Ada") use
- ("-g",
- "-O2",
- "-gnatafno",
- "-gnatVa", -- All validity checks
- "-gnatwa"); -- Activate all optional errors
- end Compiler;
end Library;
CF_EOF
- cat >>confpackage.ads <<CF_EOF
+ cat >>confpackage.ads <<CF_EOF
package ConfPackage is
procedure conftest;
end ConfPackage;
CF_EOF
- cat >>confpackage.adb <<CF_EOF
+ cat >>confpackage.adb <<CF_EOF
with Text_IO;
package body ConfPackage is
procedure conftest is
@@ -19719,16 +24595,17 @@ package body ConfPackage is
end conftest;
end ConfPackage;
CF_EOF
- if ( $cf_ada_make $ADAFLAGS \
- -Plibrary.gpr \
- -XBUILD_DIR=`cd ../conftest.bin;pwd` \
- -XLIBRARY_DIR=`cd ../conftest.lib;pwd` \
- -XSOURCE_DIR=`pwd` \
- -XSONAME=libConfTest.so.1 \
- -XLIB_KIND=static 1>&5 2>&1 ) ; then
- cf_gnat_projects=yes
+ if ( $cf_ada_make $ADAFLAGS \
+ -Plibrary.gpr \
+ -XBUILD_DIR=`cd ../conftest.bin;pwd` \
+ -XLIBRARY_DIR=`cd ../conftest.lib;pwd` \
+ -XSOURCE_DIR=`pwd` \
+ -XSONAME=libConfTest.so.1 \
+ -XLIB_KIND=static 1>&5 2>&1 ) ; then
+ cf_gnat_projects=yes
+ fi
+ cd ..
fi
- cd ..
if test -f conftest.lib/confpackage.ali
then
cf_gnat_libraries=yes
@@ -19738,14 +24615,15 @@ CF_EOF
esac
;;
esac
-echo "$as_me:19741: result: $cf_gnat_projects" >&5
+echo "$as_me:24618: result: $cf_gnat_projects" >&5
echo "${ECHO_T}$cf_gnat_projects" >&6
+fi # enable_gnat_projects
if test $cf_gnat_projects = yes
then
- echo "$as_me:19746: checking if GNAT supports libraries" >&5
+ echo "$as_me:24624: checking if GNAT supports libraries" >&5
echo $ECHO_N "checking if GNAT supports libraries... $ECHO_C" >&6
- echo "$as_me:19748: result: $cf_gnat_libraries" >&5
+ echo "$as_me:24626: result: $cf_gnat_libraries" >&5
echo "${ECHO_T}$cf_gnat_libraries" >&6
fi
@@ -19765,7 +24643,7 @@ else
USE_GNAT_LIBRARIES="#"
fi
-echo "$as_me:19768: checking for ada-compiler" >&5
+echo "$as_me:24646: checking for ada-compiler" >&5
echo $ECHO_N "checking for ada-compiler... $ECHO_C" >&6
# Check whether --with-ada-compiler or --without-ada-compiler was given.
@@ -19776,12 +24654,12 @@ else
cf_ada_compiler=gnatmake
fi;
-echo "$as_me:19779: result: $cf_ada_compiler" >&5
+echo "$as_me:24657: result: $cf_ada_compiler" >&5
echo "${ECHO_T}$cf_ada_compiler" >&6
cf_ada_package=terminal_interface
-echo "$as_me:19784: checking for ada-include" >&5
+echo "$as_me:24662: checking for ada-include" >&5
echo $ECHO_N "checking for ada-include... $ECHO_C" >&6
# Check whether --with-ada-include or --without-ada-include was given.
@@ -19793,43 +24671,43 @@ else
fi; if test -n "$prefix/share/ada/adainclude" ; then
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
+ cf_path_syntax="$ac_default_prefix"
fi
-case ".$withval" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*|.\${*dir}*) #(vi
- eval withval="$withval"
- case ".$withval" in #(vi
- .NONE/*)
- withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- { { echo "$as_me:19820: error: expected a pathname, not \"$withval\"" >&5
+case ".$withval" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval withval="$withval"
+ case ".$withval" in
+ (.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:24698: error: expected a pathname, not \"$withval\"" >&5
echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
{ (exit 1); exit 1; }; }
- ;;
+ ;;
esac
fi
eval ADA_INCLUDE="$withval"
-echo "$as_me:19829: result: $ADA_INCLUDE" >&5
+echo "$as_me:24707: result: $ADA_INCLUDE" >&5
echo "${ECHO_T}$ADA_INCLUDE" >&6
-echo "$as_me:19832: checking for ada-objects" >&5
+echo "$as_me:24710: checking for ada-objects" >&5
echo $ECHO_N "checking for ada-objects... $ECHO_C" >&6
# Check whether --with-ada-objects or --without-ada-objects was given.
@@ -19841,43 +24719,43 @@ else
fi; if test -n "$prefix/lib/ada/adalib" ; then
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
+ cf_path_syntax="$ac_default_prefix"
fi
-case ".$withval" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*|.\${*dir}*) #(vi
- eval withval="$withval"
- case ".$withval" in #(vi
- .NONE/*)
- withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- { { echo "$as_me:19868: error: expected a pathname, not \"$withval\"" >&5
+case ".$withval" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval withval="$withval"
+ case ".$withval" in
+ (.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:24746: error: expected a pathname, not \"$withval\"" >&5
echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
{ (exit 1); exit 1; }; }
- ;;
+ ;;
esac
fi
eval ADA_OBJECTS="$withval"
-echo "$as_me:19877: result: $ADA_OBJECTS" >&5
+echo "$as_me:24755: result: $ADA_OBJECTS" >&5
echo "${ECHO_T}$ADA_OBJECTS" >&6
-echo "$as_me:19880: checking if an Ada95 shared-library should be built" >&5
+echo "$as_me:24758: checking if an Ada95 shared-library should be built" >&5
echo $ECHO_N "checking if an Ada95 shared-library should be built... $ECHO_C" >&6
# Check whether --with-ada-sharedlib or --without-ada-sharedlib was given.
@@ -19887,9 +24765,19 @@ if test "${with_ada_sharedlib+set}" = set; then
else
with_ada_sharedlib=no
fi;
-echo "$as_me:19890: result: $with_ada_sharedlib" >&5
+echo "$as_me:24768: result: $with_ada_sharedlib" >&5
echo "${ECHO_T}$with_ada_sharedlib" >&6
+if test "x$with_ada_sharedlib" != xno
+then
+ if test "x$cf_gnat_projects" != xyes
+ then
+ { echo "$as_me:24775: WARNING: disabling shared-library since GNAT projects are not supported" >&5
+echo "$as_me: WARNING: disabling shared-library since GNAT projects are not supported" >&2;}
+ with_ada_sharedlib=no
+ fi
+fi
+
ADA_SHAREDLIB='lib$(LIB_NAME).so.1'
MAKE_ADA_SHAREDLIB="#"
@@ -19902,6 +24790,27 @@ then
fi
fi
+ # allow the Ada binding to be renamed
+
+echo "$as_me:24795: checking for ada-libname" >&5
+echo $ECHO_N "checking for ada-libname... $ECHO_C" >&6
+
+# Check whether --with-ada-libname or --without-ada-libname was given.
+if test "${with_ada_libname+set}" = set; then
+ withval="$with_ada_libname"
+ ADA_LIBNAME=$withval
+else
+ ADA_LIBNAME=AdaCurses
+fi;
+case "x$ADA_LIBNAME" in
+(x|xyes|xno)
+ ADA_LIBNAME=AdaCurses
+ ;;
+esac
+
+echo "$as_me:24811: result: $ADA_LIBNAME" >&5
+echo "${ECHO_T}$ADA_LIBNAME" >&6
+
fi
fi
else
@@ -19910,17 +24819,17 @@ fi
# do this "late" to avoid conflict with header-checks
if test "x$with_widec" = xyes ; then
- echo "$as_me:19913: checking for wchar_t" >&5
+ echo "$as_me:24822: checking for wchar_t" >&5
echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6
if test "${ac_cv_type_wchar_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 19919 "configure"
+#line 24828 "configure"
#include "confdefs.h"
$ac_includes_default
int
-main ()
+main (void)
{
if ((wchar_t *) 0)
return 0;
@@ -19931,16 +24840,16 @@ if (sizeof (wchar_t))
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:19934: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:24843: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:19937: \$? = $ac_status" >&5
+ echo "$as_me:24846: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:19940: \"$ac_try\"") >&5
+ { (eval echo "$as_me:24849: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:19943: \$? = $ac_status" >&5
+ echo "$as_me:24852: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_type_wchar_t=yes
else
@@ -19950,10 +24859,10 @@ ac_cv_type_wchar_t=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:19953: result: $ac_cv_type_wchar_t" >&5
+echo "$as_me:24862: result: $ac_cv_type_wchar_t" >&5
echo "${ECHO_T}$ac_cv_type_wchar_t" >&6
-echo "$as_me:19956: checking size of wchar_t" >&5
+echo "$as_me:24865: checking size of wchar_t" >&5
echo $ECHO_N "checking size of wchar_t... $ECHO_C" >&6
if test "${ac_cv_sizeof_wchar_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19962,11 +24871,11 @@ else
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
-#line 19965 "configure"
+#line 24874 "configure"
#include "confdefs.h"
$ac_includes_default
int
-main ()
+main (void)
{
int _array_ [1 - 2 * !((sizeof (wchar_t)) >= 0)]
;
@@ -19974,25 +24883,25 @@ int _array_ [1 - 2 * !((sizeof (wchar_t)) >= 0)]
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:19977: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:24886: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:19980: \$? = $ac_status" >&5
+ echo "$as_me:24889: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:19983: \"$ac_try\"") >&5
+ { (eval echo "$as_me:24892: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:19986: \$? = $ac_status" >&5
+ echo "$as_me:24895: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
-#line 19991 "configure"
+#line 24900 "configure"
#include "confdefs.h"
$ac_includes_default
int
-main ()
+main (void)
{
int _array_ [1 - 2 * !((sizeof (wchar_t)) <= $ac_mid)]
;
@@ -20000,16 +24909,16 @@ int _array_ [1 - 2 * !((sizeof (wchar_t)) <= $ac_mid)]
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:20003: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:24912: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:20006: \$? = $ac_status" >&5
+ echo "$as_me:24915: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:20009: \"$ac_try\"") >&5
+ { (eval echo "$as_me:24918: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:20012: \$? = $ac_status" >&5
+ echo "$as_me:24921: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_hi=$ac_mid; break
else
@@ -20025,11 +24934,11 @@ cat conftest.$ac_ext >&5
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
-#line 20028 "configure"
+#line 24937 "configure"
#include "confdefs.h"
$ac_includes_default
int
-main ()
+main (void)
{
int _array_ [1 - 2 * !((sizeof (wchar_t)) >= $ac_mid)]
;
@@ -20037,16 +24946,16 @@ int _array_ [1 - 2 * !((sizeof (wchar_t)) >= $ac_mid)]
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:20040: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:24949: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:20043: \$? = $ac_status" >&5
+ echo "$as_me:24952: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:20046: \"$ac_try\"") >&5
+ { (eval echo "$as_me:24955: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:20049: \$? = $ac_status" >&5
+ echo "$as_me:24958: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_lo=$ac_mid; break
else
@@ -20062,11 +24971,11 @@ rm -f conftest.$ac_objext conftest.$ac_ext
while test "x$ac_lo" != "x$ac_hi"; do
ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
cat >conftest.$ac_ext <<_ACEOF
-#line 20065 "configure"
+#line 24974 "configure"
#include "confdefs.h"
$ac_includes_default
int
-main ()
+main (void)
{
int _array_ [1 - 2 * !((sizeof (wchar_t)) <= $ac_mid)]
;
@@ -20074,16 +24983,16 @@ int _array_ [1 - 2 * !((sizeof (wchar_t)) <= $ac_mid)]
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:20077: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:24986: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:20080: \$? = $ac_status" >&5
+ echo "$as_me:24989: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:20083: \"$ac_try\"") >&5
+ { (eval echo "$as_me:24992: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:20086: \$? = $ac_status" >&5
+ echo "$as_me:24995: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_hi=$ac_mid
else
@@ -20096,16 +25005,16 @@ done
ac_cv_sizeof_wchar_t=$ac_lo
else
if test "$cross_compiling" = yes; then
- { { echo "$as_me:20099: error: cannot run test program while cross compiling" >&5
+ { { echo "$as_me:25008: error: cannot run test program while cross compiling" >&5
echo "$as_me: error: cannot run test program while cross compiling" >&2;}
{ (exit 1); exit 1; }; }
else
cat >conftest.$ac_ext <<_ACEOF
-#line 20104 "configure"
+#line 25013 "configure"
#include "confdefs.h"
$ac_includes_default
int
-main ()
+main (void)
{
FILE *f = fopen ("conftest.val", "w");
if (!f)
@@ -20117,15 +25026,15 @@ fclose (f);
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:20120: \"$ac_link\"") >&5
+if { (eval echo "$as_me:25029: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:20123: \$? = $ac_status" >&5
+ echo "$as_me:25032: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:20125: \"$ac_try\"") >&5
+ { (eval echo "$as_me:25034: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:20128: \$? = $ac_status" >&5
+ echo "$as_me:25037: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_sizeof_wchar_t=`cat conftest.val`
else
@@ -20141,7 +25050,7 @@ else
ac_cv_sizeof_wchar_t=0
fi
fi
-echo "$as_me:20144: result: $ac_cv_sizeof_wchar_t" >&5
+echo "$as_me:25053: result: $ac_cv_sizeof_wchar_t" >&5
echo "${ECHO_T}$ac_cv_sizeof_wchar_t" >&6
cat >>confdefs.h <<EOF
#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t
@@ -20159,7 +25068,7 @@ fi
### chooses to split module lists into libraries.
###
### (see CF_LIB_RULES).
-echo "$as_me:20162: checking for library subsets" >&5
+echo "$as_me:25071: checking for library subsets" >&5
echo $ECHO_N "checking for library subsets... $ECHO_C" >&6
LIB_SUBSETS=
@@ -20187,11 +25096,12 @@ LIB_SUBSETS="${LIB_SUBSETS}base"
# base library (so it resides in base).
if test "$with_term_driver" != no ; then
LIB_SUBSETS="${LIB_SUBSETS}+port_drivers"
- case $cf_cv_system_name in #(vi
- *mingw32*) #(vi
+ case $cf_cv_system_name in
+ (*mingw32*|*mingw64*)
LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32con"
+ CPPFLAGS="$CPPFLAGS -DUSE_WIN32CON_DRIVER"
;;
- *) #(vi
+ (*)
LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo"
;;
esac
@@ -20200,26 +25110,19 @@ fi
test "x$with_widec" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+widechar"
test "x$with_ext_funcs" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs"
-echo "$as_me:20203: result: $LIB_SUBSETS" >&5
+echo "$as_me:25113: result: $LIB_SUBSETS" >&5
echo "${ECHO_T}$LIB_SUBSETS" >&6
### Construct the list of include-directories to be generated
-if test "$GCC" != yes; then
- CPPFLAGS="-I\${includedir} $CPPFLAGS"
-elif test "$includedir" != "/usr/include"; then
- if test "$includedir" = '${prefix}/include' ; then
- if test x$prefix != x/usr ; then
- CPPFLAGS="-I\${includedir} $CPPFLAGS"
- fi
- else
- CPPFLAGS="-I\${includedir} $CPPFLAGS"
- fi
-fi
if test "$srcdir" != "."; then
CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS"
fi
-CPPFLAGS="-I. -I../include $CPPFLAGS"
+CPPFLAGS="-I../include $CPPFLAGS"
+if test "$srcdir" != "."; then
+ CPPFLAGS="-I\${srcdir} $CPPFLAGS"
+fi
+CPPFLAGS="-I. $CPPFLAGS"
ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS"
if test "$srcdir" != "."; then
@@ -20238,99 +25141,102 @@ elif test "$includedir" != "/usr/include"; then
fi
### Build up pieces for makefile rules
-echo "$as_me:20241: checking default library suffix" >&5
+echo "$as_me:25144: checking default library suffix" >&5
echo $ECHO_N "checking default library suffix... $ECHO_C" >&6
case $DFT_LWR_MODEL in
- libtool) DFT_ARG_SUFFIX='' ;;
- normal) DFT_ARG_SUFFIX='' ;;
- debug) DFT_ARG_SUFFIX='_g' ;;
- profile) DFT_ARG_SUFFIX='_p' ;;
- shared) DFT_ARG_SUFFIX='' ;;
+ (libtool) DFT_ARG_SUFFIX='' ;;
+ (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 "$as_me:20252: result: $DFT_ARG_SUFFIX" >&5
+echo "$as_me:25155: result: $DFT_ARG_SUFFIX" >&5
echo "${ECHO_T}$DFT_ARG_SUFFIX" >&6
-echo "$as_me:20255: checking default library-dependency suffix" >&5
+echo "$as_me:25158: checking default library-dependency suffix" >&5
echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6
- case X$DFT_LWR_MODEL in #(vi
- Xlibtool) #(vi
+ case X$DFT_LWR_MODEL in
+ (Xlibtool)
DFT_LIB_SUFFIX='.la'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- Xdebug) #(vi
+ (Xdebug)
DFT_LIB_SUFFIX='_g.a'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- Xprofile) #(vi
+ (Xprofile)
DFT_LIB_SUFFIX='_p.a'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- Xshared) #(vi
+ (Xshared)
case $cf_cv_system_name in
- aix[5-7]*) #(vi
- DFT_LIB_SUFFIX='.a'
+ (aix[5-7]*)
+ DFT_LIB_SUFFIX='.so'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- cygwin*|msys*|mingw*) #(vi
+ (cygwin*|msys*|mingw*)
DFT_LIB_SUFFIX='.dll'
DFT_DEP_SUFFIX='.dll.a'
;;
- darwin*) #(vi
+ (darwin*)
DFT_LIB_SUFFIX='.dylib'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- hpux*) #(vi
+ (hpux*)
case $target in
- ia64*) #(vi
+ (ia64*)
DFT_LIB_SUFFIX='.so'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- *) #(vi
+ (*)
DFT_LIB_SUFFIX='.sl'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
esac
;;
- *) #(vi
+ (*)
DFT_LIB_SUFFIX='.so'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
esac
;;
- *)
+ (*)
DFT_LIB_SUFFIX='.a'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
esac
- test -n "$LIB_SUFFIX" && DFT_LIB_SUFFIX="${LIB_SUFFIX}${DFT_LIB_SUFFIX}"
- test -n "$LIB_SUFFIX" && DFT_DEP_SUFFIX="${LIB_SUFFIX}${DFT_DEP_SUFFIX}"
-echo "$as_me:20310: result: $DFT_DEP_SUFFIX" >&5
+ if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}"
+ then
+ DFT_LIB_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_LIB_SUFFIX}"
+ DFT_DEP_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_DEP_SUFFIX}"
+ fi
+echo "$as_me:25216: result: $DFT_DEP_SUFFIX" >&5
echo "${ECHO_T}$DFT_DEP_SUFFIX" >&6
-echo "$as_me:20313: checking default object directory" >&5
+echo "$as_me:25219: checking default object directory" >&5
echo $ECHO_N "checking default object directory... $ECHO_C" >&6
case $DFT_LWR_MODEL in
- libtool) DFT_OBJ_SUBDIR='obj_lo' ;;
- normal) DFT_OBJ_SUBDIR='objects' ;;
- debug) DFT_OBJ_SUBDIR='obj_g' ;;
- profile) DFT_OBJ_SUBDIR='obj_p' ;;
- shared)
- case $cf_cv_system_name in #(vi
- cygwin|msys) #(vi
+ (libtool) DFT_OBJ_SUBDIR='obj_lo' ;;
+ (normal) DFT_OBJ_SUBDIR='objects' ;;
+ (debug) DFT_OBJ_SUBDIR='obj_g' ;;
+ (profile) DFT_OBJ_SUBDIR='obj_p' ;;
+ (shared)
+ case $cf_cv_system_name in
+ (cygwin|msys)
DFT_OBJ_SUBDIR='objects' ;;
- *)
+ (*)
DFT_OBJ_SUBDIR='obj_s' ;;
esac
esac
-echo "$as_me:20329: result: $DFT_OBJ_SUBDIR" >&5
+echo "$as_me:25235: result: $DFT_OBJ_SUBDIR" >&5
echo "${ECHO_T}$DFT_OBJ_SUBDIR" >&6
if test "x$cf_with_cxx" = xyes ; then
-echo "$as_me:20333: checking c++ library-dependency suffix" >&5
+echo "$as_me:25239: checking c++ library-dependency suffix" >&5
echo $ECHO_N "checking c++ library-dependency suffix... $ECHO_C" >&6
if test "$with_libtool" != "no"; then
# libtool thinks it can make c++ shared libraries (perhaps only g++)
@@ -20341,61 +25247,64 @@ elif test "$with_shared_cxx" != "no"; then
else
# we normally make a static library because C/C++ library rules differ
- case Xnormal in #(vi
- Xlibtool) #(vi
+ case Xnormal in
+ (Xlibtool)
CXX_LIB_SUFFIX='.la'
CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
;;
- Xdebug) #(vi
+ (Xdebug)
CXX_LIB_SUFFIX='_g.a'
CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
;;
- Xprofile) #(vi
+ (Xprofile)
CXX_LIB_SUFFIX='_p.a'
CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
;;
- Xshared) #(vi
+ (Xshared)
case $cf_cv_system_name in
- aix[5-7]*) #(vi
- CXX_LIB_SUFFIX='.a'
+ (aix[5-7]*)
+ CXX_LIB_SUFFIX='.so'
CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
;;
- cygwin*|msys*|mingw*) #(vi
+ (cygwin*|msys*|mingw*)
CXX_LIB_SUFFIX='.dll'
CXX_DEP_SUFFIX='.dll.a'
;;
- darwin*) #(vi
+ (darwin*)
CXX_LIB_SUFFIX='.dylib'
CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
;;
- hpux*) #(vi
+ (hpux*)
case $target in
- ia64*) #(vi
+ (ia64*)
CXX_LIB_SUFFIX='.so'
CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
;;
- *) #(vi
+ (*)
CXX_LIB_SUFFIX='.sl'
CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
;;
esac
;;
- *) #(vi
+ (*)
CXX_LIB_SUFFIX='.so'
CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
;;
esac
;;
- *)
+ (*)
CXX_LIB_SUFFIX='.a'
CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
;;
esac
- test -n "$LIB_SUFFIX" && CXX_LIB_SUFFIX="${LIB_SUFFIX}${CXX_LIB_SUFFIX}"
- test -n "$LIB_SUFFIX" && CXX_DEP_SUFFIX="${LIB_SUFFIX}${CXX_DEP_SUFFIX}"
+ if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}"
+ then
+ CXX_LIB_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${CXX_LIB_SUFFIX}"
+ CXX_DEP_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${CXX_DEP_SUFFIX}"
+ fi
fi
-echo "$as_me:20398: result: $CXX_LIB_SUFFIX" >&5
+echo "$as_me:25307: result: $CXX_LIB_SUFFIX" >&5
echo "${ECHO_T}$CXX_LIB_SUFFIX" >&6
fi
@@ -20422,38 +25331,49 @@ TINFO_LIST=`echo "$SHLIB_LIST" | sed -e 's/-ldl[ ]//g' -e 's/-ldl$//'`
fi
+USE_ARG_SUFFIX="${DFT_ARG_SUFFIX}${EXTRA_SUFFIX}"
+USE_LIB_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}"
+USE_CFG_SUFFIX=${DFT_ARG_SUFFIX}${cf_cv_abi_version}
+if test -n "$EXTRA_SUFFIX" && test "x$EXTRA_SUFFIX" != "x${cf_cv_abi_version}"
+then
+ USE_CFG_SUFFIX="${USE_CFG_SUFFIX}${EXTRA_SUFFIX}"
+fi
+
if test "$with_ticlib" != no ; then
if test "x$with_ticlib" != xyes ; then
TICS_NAME=$with_ticlib
- TICS_ARG_SUFFIX="${with_ticlib}`echo ${DFT_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
+ TICS_SUFFIX="`echo ${DFT_LIB_SUFFIX}|sed -e "s/^${USE_LIB_SUFFIX}//"`"
+ TICS_ARG_SUFFIX="${with_ticlib}`echo ${USE_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
TICS_DEP_SUFFIX="${with_ticlib}`echo ${DFT_DEP_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
TICS_LIB_SUFFIX="${with_ticlib}"
else
- TICS_ARG_SUFFIX="${TICS_NAME}${DFT_ARG_SUFFIX}"
+ TICS_SUFFIX=${DFT_LIB_SUFFIX}
+ TICS_ARG_SUFFIX="${TICS_NAME}${USE_ARG_SUFFIX}"
TICS_DEP_SUFFIX="${TICS_NAME}${DFT_DEP_SUFFIX}"
- TICS_LIB_SUFFIX="${TICS_NAME}${LIB_SUFFIX}"
+ TICS_LIB_SUFFIX="${TICS_NAME}${USE_LIB_SUFFIX}"
fi
TICS_LDFLAGS="-L${LIB_DIR}"
- TICS_LIBS="-l${TICS_LIB_SUFFIX}"
+ TICS_LIBS="-l${TICS_ARG_SUFFIX}"
else
+ TICS_SUFFIX=${DFT_LIB_SUFFIX}
TICS_LDFLAGS="-L${LIB_DIR}"
- TICS_LIBS="-l${LIB_NAME}${DFT_ARG_SUFFIX}"
+ TICS_LIBS="-l${LIB_NAME}${USE_ARG_SUFFIX}"
fi
if test "$with_termlib" != no ; then
if test "x$with_termlib" != xyes ; then
TINFO_NAME=$with_termlib
- TINFO_SUFFIX="`echo ${DFT_LIB_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
- TINFO_ARG_SUFFIX="${with_termlib}`echo ${DFT_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
+ TINFO_SUFFIX="`echo ${DFT_LIB_SUFFIX}|sed -e "s/^${USE_LIB_SUFFIX}//"`"
+ TINFO_ARG_SUFFIX="${with_termlib}`echo ${USE_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
TINFO_DEP_SUFFIX="${with_termlib}`echo ${DFT_DEP_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
TINFO_LIB_SUFFIX="${with_termlib}"
else
TINFO_SUFFIX=${DFT_LIB_SUFFIX}
- TINFO_ARG_SUFFIX="${TINFO_NAME}${DFT_ARG_SUFFIX}"
+ TINFO_ARG_SUFFIX="${TINFO_NAME}${USE_ARG_SUFFIX}"
TINFO_DEP_SUFFIX="${TINFO_NAME}${DFT_DEP_SUFFIX}"
- TINFO_LIB_SUFFIX="${TINFO_NAME}${LIB_SUFFIX}"
+ TINFO_LIB_SUFFIX="${TINFO_NAME}${USE_LIB_SUFFIX}"
fi
TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}"
@@ -20469,9 +25389,9 @@ if test "$with_termlib" != no ; then
TEST_ARGS="-l${TINFO_ARG_SUFFIX}"
TEST_ARG2="-l${TINFO_ARG_SUFFIX}"
if test "x$with_term_driver" != xno ; then
- TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${DFT_ARG_SUFFIX}"
- TICS_LIBS="$TICS_LIBS -l${LIB_NAME}${DFT_ARG_SUFFIX}"
- TINFO_LIBS="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARGS"
+ TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${USE_ARG_SUFFIX}"
+ TICS_LIBS="$TICS_LIBS -l${LIB_NAME}${USE_ARG_SUFFIX}"
+ TINFO_LIBS="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARGS"
else
TICS_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}"
TINFO_LIBS="$TEST_ARGS"
@@ -20483,20 +25403,20 @@ else
# the next lines are needed for linking libtic over libncurses
TINFO_NAME=${LIB_NAME}
TINFO_SUFFIX=${DFT_LIB_SUFFIX}
- TINFO_ARG_SUFFIX=${LIB_NAME}${DFT_ARG_SUFFIX}
+ TINFO_ARG_SUFFIX=${LIB_NAME}${USE_ARG_SUFFIX}
if test "x$with_tic_depends" = xyes ; then
- TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${DFT_ARG_SUFFIX}"
+ TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${USE_ARG_SUFFIX}"
else
TICS_LIST="$SHLIB_LIST"
fi
TINFO_LDFLAGS="-L${LIB_DIR}"
- TINFO_LIBS="-l${LIB_NAME}${DFT_ARG_SUFFIX}"
+ TINFO_LIBS="-l${LIB_NAME}${USE_ARG_SUFFIX}"
fi
if test "$DFT_LWR_MODEL" = shared ; then
- case $cf_cv_system_name in #(vi
- cygwin*|msys*)
+ case $cf_cv_system_name in
+ (cygwin*|msys*)
# "lib" files have ".dll.a" suffix, "cyg"or "msys-" files have ".dll"
TINFO_SUFFIX=.dll
;;
@@ -20511,47 +25431,47 @@ TICS_LIST=`echo "$TICS_LIST" | sed -e 's/-ldl[ ]//g' -e 's/-ldl$//'`
fi
if test "$DFT_LWR_MODEL" = "libtool"; then
- OBJEXT=lo
+ OBJEXT=lo
fi
# needed for Ada95
TINFO_LDFLAGS2=`echo "$TINFO_LDFLAGS" | sed -e 's,-L\.\./,-L../../,'`
case $DFT_LWR_MODEL in
-normal|debug|profile)
+(normal|debug|profile)
if test "$GCC" = yes ; then
- case $cf_cv_system_name in #(
- OS/2*|os2*|aix[4]*|solaris2.1[0-9]|darwin*) #( vi
+ case $cf_cv_system_name in
+ (OS/2*|os2*|aix[4]*|solaris2.1[0-9]|darwin*)
LDFLAGS_STATIC=
LDFLAGS_SHARED=
;;
- *) #( normally, except when broken
- LDFLAGS_STATIC=-static
- LDFLAGS_SHARED=-dynamic
- ;;
- esac
+ (*) # normally, except when broken
+ LDFLAGS_STATIC=-static
+ LDFLAGS_SHARED=-dynamic
+ ;;
+ esac
else
- case $cf_cv_system_name in #(
- aix[4-7]*) #( from ld manpage
+ case $cf_cv_system_name in
+ (aix[4-7]*) # from ld manpage
LDFLAGS_STATIC=-bstatic
LDFLAGS_SHARED=-bdynamic
;;
- hpux*) #( from ld manpage for hpux10.20, hpux11.11
+ (hpux*) # from ld manpage for hpux10.20, hpux11.11
# We could also use just "archive" and "shared".
LDFLAGS_STATIC=-Wl,-a,archive_shared
LDFLAGS_SHARED=-Wl,-a,shared_archive
;;
- irix*) #( from ld manpage IRIX64
+ (irix*) # from ld manpage IRIX64
LDFLAGS_STATIC=-Bstatic
LDFLAGS_SHARED=-Bdynamic
;;
- osf[45]*) #( from ld manpage osf4.0d, osf5.1
+ (osf[45]*) # from ld manpage osf4.0d, osf5.1
# alternative "-oldstyle_liblookup" (not in cc manpage)
LDFLAGS_STATIC=-noso
LDFLAGS_SHARED=-so_archive
;;
- solaris2*)
+ (solaris2*)
LDFLAGS_STATIC=-Bstatic
LDFLAGS_SHARED=-Bdynamic
;;
@@ -20560,19 +25480,19 @@ fi
if test -n "$LDFLAGS_STATIC" && test -n "$LDFLAGS_SHARED"
then
- echo "$as_me:20563: checking if linker supports switching between static/dynamic" >&5
+ echo "$as_me:25483: checking if linker supports switching between static/dynamic" >&5
echo $ECHO_N "checking if linker supports switching between static/dynamic... $ECHO_C" >&6
rm -f libconftest.a
cat >conftest.$ac_ext <<EOF
-#line 20568 "configure"
+#line 25488 "configure"
#include <stdio.h>
int cf_ldflags_static(FILE *fp) { return fflush(fp); }
EOF
- if { (eval echo "$as_me:20572: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:25492: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:20575: \$? = $ac_status" >&5
+ echo "$as_me:25495: \$? = $ac_status" >&5
(exit $ac_status); } ; then
( $AR $ARFLAGS libconftest.a conftest.o ) 2>&5 1>/dev/null
( eval $RANLIB libconftest.a ) 2>&5 >/dev/null
@@ -20583,15 +25503,15 @@ EOF
LIBS="$LDFLAGS_STATIC -L`pwd` -lconftest $LDFLAGS_DYNAMIC $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 20586 "configure"
+#line 25506 "configure"
#include "confdefs.h"
-#line 20589 "configure"
+#line 25509 "configure"
#include <stdio.h>
int cf_ldflags_static(FILE *fp);
int
-main ()
+main (void)
{
return cf_ldflags_static(stdin);
@@ -20601,24 +25521,24 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:20604: \"$ac_link\"") >&5
+if { (eval echo "$as_me:25524: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:20607: \$? = $ac_status" >&5
+ echo "$as_me:25527: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:20610: \"$ac_try\"") >&5
+ { (eval echo "$as_me:25530: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:20613: \$? = $ac_status" >&5
+ echo "$as_me:25533: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
# some linkers simply ignore the -dynamic
- case x`file conftest$ac_exeext 2>/dev/null` in #(vi
- *static*) # (vi
+ case x`file conftest$ac_exeext 2>/dev/null` in
+ (*static*)
cf_ldflags_static=no
;;
- *)
+ (*)
cf_ldflags_static=yes
;;
esac
@@ -20633,7 +25553,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
rm -f libconftest.*
LIBS="$cf_save_LIBS"
- echo "$as_me:20636: result: $cf_ldflags_static" >&5
+ echo "$as_me:25556: result: $cf_ldflags_static" >&5
echo "${ECHO_T}$cf_ldflags_static" >&6
if test $cf_ldflags_static != yes
@@ -20649,7 +25569,7 @@ fi
;;
esac
-echo "$as_me:20652: checking where we will install curses.h" >&5
+echo "$as_me:25572: checking where we will install curses.h" >&5
echo $ECHO_N "checking where we will install curses.h... $ECHO_C" >&6
includesubdir=
@@ -20657,9 +25577,9 @@ if test "$with_overwrite" = no && \
( test "x$includedir" = 'x${prefix}/include' || \
test "x$includedir" = "x${prefix}/include" )
then
- includesubdir="/ncurses${LIB_SUFFIX}"
+ includesubdir="/ncurses${USE_LIB_SUFFIX}"
fi
-echo "$as_me:20662: result: ${includedir}${includesubdir}" >&5
+echo "$as_me:25582: result: ${includedir}${includesubdir}" >&5
echo "${ECHO_T}${includedir}${includesubdir}" >&6
### Resolve a conflict between normal and wide-curses by forcing applications
@@ -20667,7 +25587,7 @@ echo "${ECHO_T}${includedir}${includesubdir}" >&6
if test "$with_overwrite" != no ; then
if test "$NCURSES_LIBUTF8" = 1 ; then
NCURSES_LIBUTF8='defined(HAVE_LIBUTF8_H)'
- { echo "$as_me:20670: WARNING: Wide-character applications must define HAVE_LIBUTF8_H to include curses.h" >&5
+ { echo "$as_me:25590: WARNING: Wide-character applications must define HAVE_LIBUTF8_H to include curses.h" >&5
echo "$as_me: WARNING: Wide-character applications must define HAVE_LIBUTF8_H to include curses.h" >&2;}
fi
fi
@@ -20685,7 +25605,7 @@ EOF
### Construct the list of subdirectories for which we'll customize makefiles
### with the appropriate compile-rules.
-echo "$as_me:20688: checking for src modules" >&5
+echo "$as_me:25608: checking for src modules" >&5
echo $ECHO_N "checking for src modules... $ECHO_C" >&6
# dependencies and linker-arguments for test-programs
@@ -20695,11 +25615,11 @@ if test "$DFT_LWR_MODEL" = "libtool"; then
TEST_ARGS="${TEST_DEPS}"
TEST_ARG2="${TEST_DEP2}"
else
- TEST_ARGS="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARGS"
- TEST_ARG2="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARG2"
+ TEST_ARGS="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARGS"
+ TEST_ARG2="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARG2"
fi
-PC_MODULES_TO_MAKE="ncurses${DFT_ARG_SUFFIX}"
+PC_MODULES_TO_MAKE="ncurses${USE_ARG_SUFFIX}"
cf_cv_src_modules=
for cf_dir in $modules_to_build
do
@@ -20708,7 +25628,7 @@ do
# We may/may not have tack in the distribution, though the
# makefile is.
if test $cf_dir = tack ; then
- if test ! -f $srcdir/${cf_dir}/${cf_dir}.h; then
+ if test "x$cf_with_tack" != "xyes"; then
continue
fi
fi
@@ -20743,14 +25663,14 @@ EOF
TEST_ARGS="${TEST_DEPS}"
TEST_ARG2="${TEST_DEP2}"
else
- TEST_ARGS="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARGS"
- TEST_ARG2="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARG2"
+ TEST_ARGS="-l${cf_dir}${USE_ARG_SUFFIX} $TEST_ARGS"
+ TEST_ARG2="-l${cf_dir}${USE_ARG_SUFFIX} $TEST_ARG2"
fi
- PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ${cf_dir}${DFT_ARG_SUFFIX}"
+ PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ${cf_dir}${USE_ARG_SUFFIX}"
fi
fi
done
-echo "$as_me:20753: result: $cf_cv_src_modules" >&5
+echo "$as_me:25673: result: $cf_cv_src_modules" >&5
echo "${ECHO_T}$cf_cv_src_modules" >&6
TEST_ARGS="-L${LIB_DIR} $TEST_ARGS"
@@ -20768,11 +25688,10 @@ done
if test "x$cf_with_tests" != "xno" ; then
SRC_SUBDIRS="$SRC_SUBDIRS test"
fi
-if test "x$cf_with_db_install" = xyes; then
- test -z "$MAKE_TERMINFO" && SRC_SUBDIRS="$SRC_SUBDIRS misc"
-fi
+# always make this, to install the ncurses-config script
+SRC_SUBDIRS="$SRC_SUBDIRS misc"
if test "$cf_with_cxx_binding" != no; then
- PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ncurses++${DFT_ARG_SUFFIX}"
+ PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ncurses++${USE_ARG_SUFFIX}"
SRC_SUBDIRS="$SRC_SUBDIRS c++"
fi
@@ -20803,8 +25722,9 @@ if test -n "$ADA_SUBDIRS"; then
fi
if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = "xyes"; then
- SUB_MAKEFILES="$SUB_MAKEFILES Ada95/gen/adacurses${DFT_ARG_SUFFIX}-config:Ada95/gen/adacurses-config.in"
- SUB_MAKEFILES="$SUB_MAKEFILES man/adacurses${DFT_ARG_SUFFIX}-config.1:man/MKada_config.in"
+ SUB_MAKEFILES="$SUB_MAKEFILES Ada95/src/library.gpr:Ada95/src/library.gpr.in"
+ SUB_MAKEFILES="$SUB_MAKEFILES Ada95/gen/adacurses${USE_CFG_SUFFIX}-config:Ada95/gen/adacurses-config.in"
+ SUB_MAKEFILES="$SUB_MAKEFILES man/adacurses${USE_CFG_SUFFIX}-config.1:man/MKada_config.in"
fi
DIRS_TO_MAKE="lib"
@@ -20812,15 +25732,15 @@ for cf_item in $cf_list_models
do
case $cf_item in
- libtool) cf_subdir='obj_lo' ;;
- normal) cf_subdir='objects' ;;
- debug) cf_subdir='obj_g' ;;
- profile) cf_subdir='obj_p' ;;
- shared)
- case $cf_cv_system_name in #(vi
- cygwin|msys) #(vi
+ (libtool) cf_subdir='obj_lo' ;;
+ (normal) cf_subdir='objects' ;;
+ (debug) cf_subdir='obj_g' ;;
+ (profile) cf_subdir='obj_p' ;;
+ (shared)
+ case $cf_cv_system_name in
+ (cygwin|msys)
cf_subdir='objects' ;;
- *)
+ (*)
cf_subdir='obj_s' ;;
esac
esac
@@ -20837,7 +25757,7 @@ do
done
# symbols that differ when compiling Ada95 by itself.
-NCURSES_SHLIB2='sh $(top_srcdir)/misc/shlib'
+NCURSES_SHLIB2=$SHELL' $(top_srcdir)/misc/shlib'
# values to use as strings
@@ -20859,32 +25779,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $EXTRA_CFLAGS
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -20893,21 +25819,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -20916,17 +25850,23 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
### Define substitutions for header files to avoid name-pollution
@@ -20937,6 +25877,12 @@ else
HAVE_TCGETATTR=0
fi
+if test "x$ac_cv_header_stdint_h" = xyes ; then
+ HAVE_STDINT_H=1
+else
+ HAVE_STDINT_H=0
+fi
+
if test "x$ac_cv_header_termio_h" = xyes ; then
HAVE_TERMIO_H=1
else
@@ -20954,60 +25900,10 @@ test "x$use_database" = xyes && \
SUB_MAKEFILES="$SUB_MAKEFILES misc/run_tic.sh:misc/run_tic.in"
SUB_MAKEFILES="$SUB_MAKEFILES misc/ncurses-config:misc/ncurses-config.in"
-SUB_MAKEFILES="$SUB_MAKEFILES man/ncurses${DFT_ARG_SUFFIX}${cf_cv_abi_version}-config.1:man/MKncu_config.in"
+SUB_MAKEFILES="$SUB_MAKEFILES man/ncurses${USE_CFG_SUFFIX}-config.1:man/MKncu_config.in"
-if test "x$enable_pc_files" = xyes ; then \
+if test "x$enable_pc_files" = xyes && test -z "$MAKE_PC_FILES" ; then
SUB_MAKEFILES="$SUB_MAKEFILES misc/gen-pkgconfig:misc/gen-pkgconfig.in"
-MAKE_PC_FILES=
-else
-MAKE_PC_FILES="#"
-fi
-
-# Extract the first word of "tic", so it can be a program name with args.
-set dummy tic; ac_word=$2
-echo "$as_me:20968: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_TIC_PATH+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $TIC_PATH in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_TIC_PATH="$TIC_PATH" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS=$IFS; IFS=$ac_path_separator
-ac_dummy="$PATH:/usr/local/ncurses/bin"
-for ac_dir in $ac_dummy; do
- IFS=$ac_save_IFS
- test -z "$ac_dir" && ac_dir=.
- if $as_executable_p "$ac_dir/$ac_word"; then
- ac_cv_path_TIC_PATH="$ac_dir/$ac_word"
- echo "$as_me:20985: found $ac_dir/$ac_word" >&5
- break
-fi
-done
-
- test -z "$ac_cv_path_TIC_PATH" && ac_cv_path_TIC_PATH="unknown"
- ;;
-esac
-fi
-TIC_PATH=$ac_cv_path_TIC_PATH
-
-if test -n "$TIC_PATH"; then
- echo "$as_me:20997: result: $TIC_PATH" >&5
-echo "${ECHO_T}$TIC_PATH" >&6
-else
- echo "$as_me:21000: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-if test -n "$FALLBACK_LIST"
-then
- if test "$TIC_PATH" = unknown
- then
- { echo "$as_me:21008: WARNING: no tic program found for fallbacks" >&5
-echo "$as_me: WARNING: no tic program found for fallbacks" >&2;}
- fi
fi
if test "x$cf_with_tests" != xno ; then
@@ -21024,14 +25920,24 @@ MENU_NAME=menu
FORM_NAME=form
CXX_NAME=ncurses++
+# workaround for OS/2 (20151017)
+case $cf_cv_system_name in
+(os2*)
+ LIBTOOL_OPTS_CXX="-os2dllname ncurs++"
+ ;;
+(*)
+ LIBTOOL_OPTS_CXX=
+ ;;
+esac
+
# workaround for g++ versus Solaris (20131116)
-case $cf_cv_system_name in #(vi
-solaris2*) #(vi
- case "x$CPPFLAGS" in #(vi
- *-D_XOPEN_SOURCE_EXTENDED*)
+case $cf_cv_system_name in
+(solaris2*)
+ case "x$CPPFLAGS" in
+ (*-D_XOPEN_SOURCE_EXTENDED*)
test -n "$verbose" && echo " moving _XOPEN_SOURCE_EXTENDED to work around g++ problem" 1>&6
-echo "${as_me:-configure}:21034: testing moving _XOPEN_SOURCE_EXTENDED to work around g++ problem ..." 1>&5
+echo "${as_me:-configure}:25940: testing moving _XOPEN_SOURCE_EXTENDED to work around g++ problem ..." 1>&5
CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
CPPFLAGS=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/-D_XOPEN_SOURCE_EXTENDED//'`
@@ -21040,12 +25946,33 @@ echo "${as_me:-configure}:21034: testing moving _XOPEN_SOURCE_EXTENDED to work a
;;
esac
+# Help to automatically enable the extended curses features when using either
+# the *-config or the ".pc" files by adding defines.
+echo "$as_me:25951: checking for defines to add to ncurses${USE_CFG_SUFFIX}-config script" >&5
+echo $ECHO_N "checking for defines to add to ncurses${USE_CFG_SUFFIX}-config script... $ECHO_C" >&6
+PKG_CFLAGS=
+for cf_loop1 in $CPPFLAGS_after_XOPEN
+do
+ cf_found=no
+ for cf_loop2 in $CPPFLAGS_before_XOPEN
+ do
+ if test "x$cf_loop1" = "x$cf_loop2"
+ then
+ cf_found=yes
+ break
+ fi
+ done
+ test "$cf_found" = no && PKG_CFLAGS="$PKG_CFLAGS $cf_loop1"
+done
+echo "$as_me:25967: result: $PKG_CFLAGS" >&5
+echo "${ECHO_T}$PKG_CFLAGS" >&6
+
# AC_CHECK_SIZEOF demands a literal parameter, no variables. So we do this.
-case "x$NCURSES_OSPEED" in #(vi
-*short*) #(vi
+case "x$NCURSES_OSPEED" in
+(*short*)
cf_compatible=1
;;
-*)
+(*)
cf_compatible=0
;;
esac
@@ -21054,9 +25981,151 @@ cat >>confdefs.h <<EOF
#define NCURSES_OSPEED_COMPAT $cf_compatible
EOF
-SUB_SCRIPTS=
+case "x$cf_cv_typeof_chtype" in
+(xshort|xint|xlong)
+ cf_cv_typeof_chtype="unsigned $cf_cv_typeof_chtype"
+ ;;
+esac
+
+case "x$cf_cv_typeof_mmask_t" in
+(xshort|xint|xlong)
+ cf_cv_typeof_mmask_t="unsigned $cf_cv_typeof_mmask_t"
+ ;;
+esac
+
+# substitute into misc/Makefile to suppress
+# (un)install.data from the
+# (un)install rules.
+if test "x$cf_with_db_install" = "xno"; then
+ MISC_INSTALL_DATA=
+ MISC_UNINSTALL_DATA=
+else
+ MISC_INSTALL_DATA=install.data
+ MISC_UNINSTALL_DATA=uninstall.data
+fi
+
+if test "x$cf_with_db_install" = "xno" || test "x$TERMINFO_SRC" = "xno"; then
+ MAKE_DATABASE="#"
+else
+ MAKE_DATABASE="$MAKE_TERMINFO"
+fi
+
+if test -n "$PACKAGE"
+then
+ PACKAGE="${PACKAGE}${DFT_ARG_SUFFIX}"
+ export PACKAGE
+ echo "package: $PACKAGE"
+fi
+
+UNALTERED_SYMS=
+cf_filter_syms=no
+
+if test -n "$RESULTING_SYMS"
+then
+ cf_filter_syms=$cf_dft_filter_syms
+ test -n "$verbose" && echo " will map symbols to ABI=$cf_cv_abi_version" 1>&6
+
+echo "${as_me:-configure}:26028: testing will map symbols to ABI=$cf_cv_abi_version ..." 1>&5
-ac_config_files="$ac_config_files include/MKterm.h.awk include/curses.head:include/curses.h.in include/ncurses_dll.h include/termcap.h include/unctrl.h $SUB_SCRIPTS $SUB_MAKEFILES Makefile"
+fi
+
+if test "x$WILDCARD_SYMS" = xno
+then
+ cf_filter_syms=yes
+fi
+
+test "x$cf_with_trace" = xyes && NCURSES_INLINE=
+
+UNALTERED_SYMS=`echo "$RESULTING_SYMS" | sed -e 's/\\$/\\\\$/g'`
+if test $cf_filter_syms = yes
+then
+ RESULTING_SYMS=resulting.map
+fi
+
+if test "x$cross_compiling" = xyes ; then
+ ADAGEN_LDFLAGS='$(CROSS_LDFLAGS)'
+ CHECK_BUILD="#"
+else
+ ADAGEN_LDFLAGS='$(NATIVE_LDFLAGS)'
+ CHECK_BUILD=
+fi
+
+# This is used for the *-config script and *.pc data files.
+
+echo "$as_me:26055: checking for linker search path" >&5
+echo $ECHO_N "checking for linker search path... $ECHO_C" >&6
+if test "${cf_cv_ld_searchpath+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+if test "$cross_compiling" != yes ; then
+
+# GNU binutils' ld does not involve permissions which may stop ldconfig.
+cf_pathlist=`ld --verbose 2>/dev/null | grep SEARCH_DIR | sed -e 's,SEARCH_DIR[("=][("=]*,,g' -e 's/"[)];//gp' | sort -u`
+
+# The -NX options tell newer versions of Linux ldconfig to not attempt to
+# update the cache, which makes it run faster.
+test -z "$cf_pathlist" && \
+ cf_pathlist=`ldconfig -NX -v 2>/dev/null | sed -e '/^[ ]/d' -e 's/:$//' | sort -u`
+
+test -z "$cf_pathlist" &&
+ cf_pathlist=`ldconfig -v 2>/dev/null | sed -n -e '/^[ ]/d' -e 's/:$//p' | sort -u`
+
+# This works with OpenBSD 6.5, which lists only filenames
+test -z "$cf_pathlist" &&
+ cf_pathlist=`ldconfig -v 2>/dev/null | sed -n -e 's,^Adding \(.*\)/.*$,\1,p' | sort -u`
+
+if test -z "$cf_pathlist"
+then
+ # dyld default path with MacOS
+ if test -f /usr/bin/otool && test "x`uname -s`" = xDarwin
+ then
+ # do this to bypass check
+ cf_cv_ld_searchpath='$HOME/lib'
+ cf_pathlist="/usr/local/lib /lib /usr/lib"
+ fi
+fi
+
+if test -z "$cf_pathlist"
+then
+ # Solaris is hardcoded
+ if test -d /opt/SUNWspro/lib
+ then
+ cf_pathlist="/opt/SUNWspro/lib /usr/ccs/lib /usr/lib"
+ elif test -d /usr/ccs/lib
+ then
+ cf_pathlist="/usr/ccs/lib /usr/lib"
+ fi
+fi
+
+fi
+
+# If nothing else, assume it is conventional
+test -z "$cf_pathlist" && cf_pathlist="/usr/lib /lib"
+
+# Finally, check that this is only directories
+for cf_path in $0 $cf_pathlist
+do
+ if test -d "$cf_path"; then
+ test -n "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath="${cf_cv_ld_searchpath} "
+ cf_cv_ld_searchpath="${cf_cv_ld_searchpath}${cf_path}"
+ fi
+done
+
+# Ensure that it is nonempty
+test -z "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath=/usr/lib
+
+fi
+echo "$as_me:26119: result: $cf_cv_ld_searchpath" >&5
+echo "${ECHO_T}$cf_cv_ld_searchpath" >&6
+
+LD_SEARCHPATH=`echo "$cf_cv_ld_searchpath"|sed -e 's/ /|/g'`
+
+cat >>confdefs.h <<\EOF
+#define HAVE_CURSES_DATA_BOOLNAMES 1
+EOF
+
+ac_config_files="$ac_config_files include/MKterm.h.awk include/curses.head:include/curses.h.in include/ncurses_dll.h include/termcap.h include/unctrl.h $SUB_MAKEFILES Makefile"
ac_config_commands="$ac_config_commands default"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -21137,7 +26206,7 @@ DEFS=-DHAVE_CONFIG_H
: ${CONFIG_STATUS=./config.status}
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:21140: creating $CONFIG_STATUS" >&5
+{ echo "$as_me:26209: creating $CONFIG_STATUS" >&5
echo "$as_me: creating $CONFIG_STATUS" >&6;}
cat >$CONFIG_STATUS <<_ACEOF
#! $SHELL
@@ -21269,7 +26338,7 @@ EOF
cat >>$CONFIG_STATUS <<EOF
ac_cs_version="\\
config.status
-configured by $0, generated by GNU Autoconf 2.52.20121002,
+configured by $0, generated by GNU Autoconf 2.52.20200111,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
@@ -21313,7 +26382,7 @@ cat >>$CONFIG_STATUS <<\EOF
echo "$ac_cs_version"; exit 0 ;;
--he | --h)
# Conflict between --help and --header
- { { echo "$as_me:21316: error: ambiguous option: $1
+ { { echo "$as_me:26385: error: ambiguous option: $1
Try \`$0 --help' for more information." >&5
echo "$as_me: error: ambiguous option: $1
Try \`$0 --help' for more information." >&2;}
@@ -21332,7 +26401,7 @@ Try \`$0 --help' for more information." >&2;}
ac_need_defaults=false;;
# This is an error.
- -*) { { echo "$as_me:21335: error: unrecognized option: $1
+ -*) { { echo "$as_me:26404: error: unrecognized option: $1
Try \`$0 --help' for more information." >&5
echo "$as_me: error: unrecognized option: $1
Try \`$0 --help' for more information." >&2;}
@@ -21351,7 +26420,7 @@ cat >&5 << _ACEOF
## Running config.status. ##
## ----------------------- ##
-This file was extended by $as_me 2.52.20121002, executed with
+This file was extended by $as_me 2.52.20200111, executed with
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
CONFIG_LINKS = $CONFIG_LINKS
@@ -21371,9 +26440,11 @@ cat >>$CONFIG_STATUS <<EOF
### configuration-run into config.status
AWK="$AWK"
+ALTERNATE_SYMS="$ALTERNATE_SYMS"
DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX"
DFT_LWR_MODEL="$DFT_LWR_MODEL"
ECHO_LD="$ECHO_LD"
+EXTRA_SUFFIX="$EXTRA_SUFFIX"
LDCONFIG="$LDCONFIG"
LIBTOOL_VERSION="$LIBTOOL_VERSION"
LIB_NAME="$LIB_NAME"
@@ -21392,18 +26463,25 @@ TERMINFO="$TERMINFO"
TICS_ARG_SUFFIX="$TICS_ARG_SUFFIX"
TICS_LIB_SUFFIX="$TICS_LIB_SUFFIX"
TICS_NAME="$TICS_NAME"
+TICS_SUFFIX="$TICS_SUFFIX"
TIC_PATH="$TIC_PATH"
TINFO_ARG_SUFFIX="$TINFO_ARG_SUFFIX"
TINFO_LIB_SUFFIX="$TINFO_LIB_SUFFIX"
TINFO_NAME="$TINFO_NAME"
TINFO_SUFFIX="$TINFO_SUFFIX"
+UNALTERED_SYMS="$UNALTERED_SYMS"
+USE_ARG_SUFFIX="$USE_ARG_SUFFIX"
+USE_CFG_SUFFIX="$USE_CFG_SUFFIX"
+USE_LIB_SUFFIX="$USE_LIB_SUFFIX"
USE_OLD_MAKERULES="$USE_OLD_MAKERULES"
+WILDCARD_SYMS="$WILDCARD_SYMS"
WITH_CURSES_H="$with_curses_h"
WITH_ECHO="${enable_echo:=yes}"
WITH_OVERWRITE="$with_overwrite"
cf_LIST_MODELS="$cf_list_models"
cf_cv_abi_version="$cf_cv_abi_version"
cf_cv_do_relink="$cf_cv_do_relink"
+cf_cv_do_reranlib="$cf_cv_do_reranlib"
cf_cv_do_symlinks="$cf_cv_do_symlinks"
cf_cv_enable_lp64="$cf_cv_enable_lp64"
cf_cv_enable_opaque="$cf_cv_enable_opaque"
@@ -21422,9 +26500,9 @@ cf_with_cxx_binding="$cf_with_cxx_binding"
cf_with_db_install="$cf_with_db_install"
cf_with_manpages="$cf_with_manpages"
cf_with_tests="$cf_with_tests"
-with_shared_cxx="$with_shared_cxx"
host="$host"
target="$target"
+with_shared_cxx="$with_shared_cxx"
EOF
@@ -21438,12 +26516,11 @@ do
"include/ncurses_dll.h" ) CONFIG_FILES="$CONFIG_FILES include/ncurses_dll.h" ;;
"include/termcap.h" ) CONFIG_FILES="$CONFIG_FILES include/termcap.h" ;;
"include/unctrl.h" ) CONFIG_FILES="$CONFIG_FILES include/unctrl.h" ;;
- "$SUB_SCRIPTS" ) CONFIG_FILES="$CONFIG_FILES $SUB_SCRIPTS" ;;
"$SUB_MAKEFILES" ) CONFIG_FILES="$CONFIG_FILES $SUB_MAKEFILES" ;;
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
"include/ncurses_cfg.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/ncurses_cfg.h:include/ncurses_cfg.hin" ;;
- *) { { echo "$as_me:21446: error: invalid argument: $ac_config_target" >&5
+ *) { { echo "$as_me:26523: error: invalid argument: $ac_config_target" >&5
echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
{ (exit 1); exit 1; }; };;
esac
@@ -21507,6 +26584,7 @@ s,@datadir@,$datadir,;t t
s,@sysconfdir@,$sysconfdir,;t t
s,@sharedstatedir@,$sharedstatedir,;t t
s,@localstatedir@,$localstatedir,;t t
+s,@runstatedir@,$runstatedir,;t t
s,@libdir@,$libdir,;t t
s,@includedir@,$includedir,;t t
s,@oldincludedir@,$oldincludedir,;t t
@@ -21536,6 +26614,11 @@ s,@cf_cv_abi_version@,$cf_cv_abi_version,;t t
s,@cf_cv_builtin_bool@,$cf_cv_builtin_bool,;t t
s,@cf_cv_header_stdbool_h@,$cf_cv_header_stdbool_h,;t t
s,@cf_cv_type_of_bool@,$cf_cv_type_of_bool,;t t
+s,@VERSION@,$VERSION,;t t
+s,@VERSION_MAJOR@,$VERSION_MAJOR,;t t
+s,@VERSION_MINOR@,$VERSION_MINOR,;t t
+s,@VERSION_PATCH@,$VERSION_PATCH,;t t
+s,@PACKAGE@,$PACKAGE,;t t
s,@build@,$build,;t t
s,@build_cpu@,$build_cpu,;t t
s,@build_vendor@,$build_vendor,;t t
@@ -21568,9 +26651,12 @@ s,@INSTALL_DATA@,$INSTALL_DATA,;t t
s,@LINT@,$LINT,;t t
s,@LINT_OPTS@,$LINT_OPTS,;t t
s,@LN_S@,$LN_S,;t t
+s,@cf_config_suffix@,$cf_config_suffix,;t t
s,@PKG_CONFIG@,$PKG_CONFIG,;t t
s,@ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t
s,@PKG_CONFIG_LIBDIR@,$PKG_CONFIG_LIBDIR,;t t
+s,@MAKE_PC_FILES@,$MAKE_PC_FILES,;t t
+s,@PC_MODULE_SUFFIX@,$PC_MODULE_SUFFIX,;t t
s,@SET_MAKE@,$SET_MAKE,;t t
s,@CTAGS@,$CTAGS,;t t
s,@ETAGS@,$ETAGS,;t t
@@ -21596,6 +26682,7 @@ s,@BUILD_LIBS@,$BUILD_LIBS,;t t
s,@BUILD_EXEEXT@,$BUILD_EXEEXT,;t t
s,@BUILD_OBJEXT@,$BUILD_OBJEXT,;t t
s,@cf_list_models@,$cf_list_models,;t t
+s,@ABI_VERSION@,$ABI_VERSION,;t t
s,@LIBTOOL_VERSION@,$LIBTOOL_VERSION,;t t
s,@LIBTOOL@,$LIBTOOL,;t t
s,@ac_ct_LIBTOOL@,$ac_ct_LIBTOOL,;t t
@@ -21634,10 +26721,18 @@ s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t
s,@LOCAL_LDFLAGS2@,$LOCAL_LDFLAGS2,;t t
s,@INSTALL_LIB@,$INSTALL_LIB,;t t
s,@RPATH_LIST@,$RPATH_LIST,;t t
+s,@EXPORT_SYMS@,$EXPORT_SYMS,;t t
+s,@RESULTING_SYMS@,$RESULTING_SYMS,;t t
+s,@VERSIONED_SYMS@,$VERSIONED_SYMS,;t t
+s,@WILDCARD_SYMS@,$WILDCARD_SYMS,;t t
s,@cf_ldd_prog@,$cf_ldd_prog,;t t
+s,@EXTRA_SUFFIX@,$EXTRA_SUFFIX,;t t
s,@TERMINFO_SRC@,$TERMINFO_SRC,;t t
s,@NCURSES_USE_DATABASE@,$NCURSES_USE_DATABASE,;t t
s,@FALLBACK_LIST@,$FALLBACK_LIST,;t t
+s,@USE_FALLBACKS@,$USE_FALLBACKS,;t t
+s,@TIC@,$TIC,;t t
+s,@INFOCMP@,$INFOCMP,;t t
s,@WHICH_XTERM@,$WHICH_XTERM,;t t
s,@XTERM_KBS@,$XTERM_KBS,;t t
s,@TERMINFO_DIRS@,$TERMINFO_DIRS,;t t
@@ -21647,6 +26742,7 @@ s,@USE_BIG_STRINGS@,$USE_BIG_STRINGS,;t t
s,@TERMPATH@,$TERMPATH,;t t
s,@NCURSES_USE_TERMCAP@,$NCURSES_USE_TERMCAP,;t t
s,@BROKEN_LINKER@,$BROKEN_LINKER,;t t
+s,@NCURSES_WCWIDTH_GRAPHICS@,$NCURSES_WCWIDTH_GRAPHICS,;t t
s,@NCURSES_CH_T@,$NCURSES_CH_T,;t t
s,@NCURSES_LIBUTF8@,$NCURSES_LIBUTF8,;t t
s,@NEED_WCHAR_H@,$NEED_WCHAR_H,;t t
@@ -21657,10 +26753,14 @@ s,@NCURSES_OK_WCHAR_T@,$NCURSES_OK_WCHAR_T,;t t
s,@NCURSES_OK_WINT_T@,$NCURSES_OK_WINT_T,;t t
s,@cf_cv_enable_lp64@,$cf_cv_enable_lp64,;t t
s,@NCURSES_TPARM_VARARGS@,$NCURSES_TPARM_VARARGS,;t t
+s,@NCURSES_WATTR_MACROS@,$NCURSES_WATTR_MACROS,;t t
+s,@RGB_PATH@,$RGB_PATH,;t t
+s,@no_x11_rgb@,$no_x11_rgb,;t t
s,@NCURSES_BOOL@,$NCURSES_BOOL,;t t
s,@TERMINFO_CAPS@,$TERMINFO_CAPS,;t t
s,@NCURSES_OSPEED@,$NCURSES_OSPEED,;t t
s,@NCURSES_CCHARW_MAX@,$NCURSES_CCHARW_MAX,;t t
+s,@NCURSES_SBOOL@,$NCURSES_SBOOL,;t t
s,@NCURSES_TPARM_ARG@,$NCURSES_TPARM_ARG,;t t
s,@MANPAGE_RENAMES@,$MANPAGE_RENAMES,;t t
s,@NCURSES_EXT_FUNCS@,$NCURSES_EXT_FUNCS,;t t
@@ -21670,21 +26770,26 @@ s,@GENERATED_SP_FUNCS@,$GENERATED_SP_FUNCS,;t t
s,@NCURSES_CONST@,$NCURSES_CONST,;t t
s,@NCURSES_EXT_COLORS@,$NCURSES_EXT_COLORS,;t t
s,@NCURSES_MOUSE_VERSION@,$NCURSES_MOUSE_VERSION,;t t
-s,@NCURSES_SBOOL@,$NCURSES_SBOOL,;t t
s,@NCURSES_XNAMES@,$NCURSES_XNAMES,;t t
-s,@NCURSES_INTEROP_FUNCS@,$NCURSES_INTEROP_FUNCS,;t t
s,@PTHREAD@,$PTHREAD,;t t
s,@cf_cv_enable_reentrant@,$cf_cv_enable_reentrant,;t t
s,@cf_cv_enable_opaque@,$cf_cv_enable_opaque,;t t
-s,@NCURSES_OPAQUE@,$NCURSES_OPAQUE,;t t
s,@NCURSES_SIZE_T@,$NCURSES_SIZE_T,;t t
+s,@NCURSES_OPAQUE@,$NCURSES_OPAQUE,;t t
+s,@NCURSES_OPAQUE_FORM@,$NCURSES_OPAQUE_FORM,;t t
+s,@NCURSES_OPAQUE_MENU@,$NCURSES_OPAQUE_MENU,;t t
+s,@NCURSES_OPAQUE_PANEL@,$NCURSES_OPAQUE_PANEL,;t t
s,@NCURSES_WRAP_PREFIX@,$NCURSES_WRAP_PREFIX,;t t
+s,@NCURSES_INTEROP_FUNCS@,$NCURSES_INTEROP_FUNCS,;t t
s,@ECHO_LT@,$ECHO_LT,;t t
s,@ECHO_LD@,$ECHO_LD,;t t
s,@RULE_CC@,$RULE_CC,;t t
s,@SHOW_CC@,$SHOW_CC,;t t
s,@ECHO_CC@,$ECHO_CC,;t t
s,@ECHO_LINK@,$ECHO_LINK,;t t
+s,@INSTALL_OPT_S@,$INSTALL_OPT_S,;t t
+s,@INSTALL_OPT_O@,$INSTALL_OPT_O,;t t
+s,@INSTALL_OPT_P@,$INSTALL_OPT_P,;t t
s,@ADAFLAGS@,$ADAFLAGS,;t t
s,@EXTRA_CFLAGS@,$EXTRA_CFLAGS,;t t
s,@EXTRA_CXXFLAGS@,$EXTRA_CXXFLAGS,;t t
@@ -21703,13 +26808,16 @@ s,@CXX_AR@,$CXX_AR,;t t
s,@CXX_ARFLAGS@,$CXX_ARFLAGS,;t t
s,@CXXLIBS@,$CXXLIBS,;t t
s,@USE_CXX_BOOL@,$USE_CXX_BOOL,;t t
-s,@gnat_exists@,$gnat_exists,;t t
+s,@cf_TEMP_gnat@,$cf_TEMP_gnat,;t t
s,@M4_exists@,$M4_exists,;t t
s,@cf_ada_make@,$cf_ada_make,;t t
+s,@cf_ada_config@,$cf_ada_config,;t t
+s,@cf_ada_config_Ada@,$cf_ada_config_Ada,;t t
+s,@cf_ada_config_C@,$cf_ada_config_C,;t t
+s,@GNATPREP_OPTS@,$GNATPREP_OPTS,;t t
s,@cf_compile_generics@,$cf_compile_generics,;t t
s,@cf_generic_objects@,$cf_generic_objects,;t t
s,@USE_GNAT_SIGINT@,$USE_GNAT_SIGINT,;t t
-s,@PRAGMA_UNREF@,$PRAGMA_UNREF,;t t
s,@USE_OLD_MAKERULES@,$USE_OLD_MAKERULES,;t t
s,@USE_GNAT_PROJECTS@,$USE_GNAT_PROJECTS,;t t
s,@USE_GNAT_LIBRARIES@,$USE_GNAT_LIBRARIES,;t t
@@ -21719,11 +26827,15 @@ s,@ADA_INCLUDE@,$ADA_INCLUDE,;t t
s,@ADA_OBJECTS@,$ADA_OBJECTS,;t t
s,@ADA_SHAREDLIB@,$ADA_SHAREDLIB,;t t
s,@MAKE_ADA_SHAREDLIB@,$MAKE_ADA_SHAREDLIB,;t t
+s,@ADA_LIBNAME@,$ADA_LIBNAME,;t t
s,@ACPPFLAGS@,$ACPPFLAGS,;t t
s,@DFT_ARG_SUFFIX@,$DFT_ARG_SUFFIX,;t t
s,@DFT_DEP_SUFFIX@,$DFT_DEP_SUFFIX,;t t
s,@DFT_OBJ_SUBDIR@,$DFT_OBJ_SUBDIR,;t t
s,@CXX_LIB_SUFFIX@,$CXX_LIB_SUFFIX,;t t
+s,@USE_ARG_SUFFIX@,$USE_ARG_SUFFIX,;t t
+s,@USE_CFG_SUFFIX@,$USE_CFG_SUFFIX,;t t
+s,@USE_LIB_SUFFIX@,$USE_LIB_SUFFIX,;t t
s,@TICS_ARG_SUFFIX@,$TICS_ARG_SUFFIX,;t t
s,@TICS_DEP_SUFFIX@,$TICS_DEP_SUFFIX,;t t
s,@TICS_LIB_SUFFIX@,$TICS_LIB_SUFFIX,;t t
@@ -21752,17 +26864,26 @@ s,@ADA_SUBDIRS@,$ADA_SUBDIRS,;t t
s,@DIRS_TO_MAKE@,$DIRS_TO_MAKE,;t t
s,@NCURSES_SHLIB2@,$NCURSES_SHLIB2,;t t
s,@HAVE_TCGETATTR@,$HAVE_TCGETATTR,;t t
+s,@HAVE_STDINT_H@,$HAVE_STDINT_H,;t t
s,@HAVE_TERMIO_H@,$HAVE_TERMIO_H,;t t
s,@HAVE_TERMIOS_H@,$HAVE_TERMIOS_H,;t t
-s,@MAKE_PC_FILES@,$MAKE_PC_FILES,;t t
s,@cross_compiling@,$cross_compiling,;t t
-s,@TIC_PATH@,$TIC_PATH,;t t
s,@MAKE_TESTS@,$MAKE_TESTS,;t t
s,@ADAHTML_DIR@,$ADAHTML_DIR,;t t
s,@PANEL_NAME@,$PANEL_NAME,;t t
s,@MENU_NAME@,$MENU_NAME,;t t
s,@FORM_NAME@,$FORM_NAME,;t t
s,@CXX_NAME@,$CXX_NAME,;t t
+s,@LIBTOOL_OPTS_CXX@,$LIBTOOL_OPTS_CXX,;t t
+s,@PKG_CFLAGS@,$PKG_CFLAGS,;t t
+s,@MISC_INSTALL_DATA@,$MISC_INSTALL_DATA,;t t
+s,@MISC_UNINSTALL_DATA@,$MISC_UNINSTALL_DATA,;t t
+s,@MAKE_DATABASE@,$MAKE_DATABASE,;t t
+s,@UNALTERED_SYMS@,$UNALTERED_SYMS,;t t
+s,@ADAGEN_LDFLAGS@,$ADAGEN_LDFLAGS,;t t
+s,@CHECK_BUILD@,$CHECK_BUILD,;t t
+s,@PRIVATE_LIBS@,$PRIVATE_LIBS,;t t
+s,@LD_SEARCHPATH@,$LD_SEARCHPATH,;t t
CEOF
EOF
@@ -21791,10 +26912,28 @@ EOF
# These are the two extra sed commands mentioned above.
(echo ':t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ # It is possible to make a multiline substitution using escaped newlines.
+ # Ensure that we do not split the substitution between script fragments.
+ ac_BEG=$ac_end
+ ac_END=`expr $ac_end + $ac_max_sed_lines`
+ sed "1,${ac_BEG}d; ${ac_END}p; q" $tmp/subs.sed >$tmp/subs.next
+ if test -s $tmp/subs.next; then
+ grep '^s,@[^@,][^@,]*@,.*\\$' $tmp/subs.next >$tmp/subs.edit
+ if test ! -s $tmp/subs.edit; then
+ grep "^s,@[^@,][^@,]*@,.*,;t t$" $tmp/subs.next >$tmp/subs.edit
+ if test ! -s $tmp/subs.edit; then
+ if test $ac_beg -gt 1; then
+ ac_end=`expr $ac_end - 1`
+ continue
+ fi
+ fi
+ fi
+ fi
+
if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
else
- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
fi
ac_sed_frag=`expr $ac_sed_frag + 1`
ac_beg=$ac_end
@@ -21877,7 +27016,7 @@ done; }
esac
if test x"$ac_file" != x-; then
- { echo "$as_me:21880: creating $ac_file" >&5
+ { echo "$as_me:27019: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
rm -f "$ac_file"
fi
@@ -21895,7 +27034,7 @@ echo "$as_me: creating $ac_file" >&6;}
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:21898: error: cannot find input file: $f" >&5
+ test -f "$f" || { { echo "$as_me:27037: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
@@ -21908,7 +27047,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
echo $srcdir/$f
else
# /dev/null tree
- { { echo "$as_me:21911: error: cannot find input file: $f" >&5
+ { { echo "$as_me:27050: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
@@ -21924,7 +27063,7 @@ cat >>$CONFIG_STATUS <<\EOF
if test -n "$ac_seen"; then
ac_used=`grep '@datarootdir@' $ac_item`
if test -z "$ac_used"; then
- { echo "$as_me:21927: WARNING: datarootdir was used implicitly but not set:
+ { echo "$as_me:27066: WARNING: datarootdir was used implicitly but not set:
$ac_seen" >&5
echo "$as_me: WARNING: datarootdir was used implicitly but not set:
$ac_seen" >&2;}
@@ -21933,7 +27072,7 @@ $ac_seen" >&2;}
fi
ac_seen=`grep '${datarootdir}' $ac_item`
if test -n "$ac_seen"; then
- { echo "$as_me:21936: WARNING: datarootdir was used explicitly but not set:
+ { echo "$as_me:27075: WARNING: datarootdir was used explicitly but not set:
$ac_seen" >&5
echo "$as_me: WARNING: datarootdir was used explicitly but not set:
$ac_seen" >&2;}
@@ -21970,7 +27109,7 @@ s,@INSTALL@,$ac_INSTALL,;t t
ac_init=`egrep '[ ]*'$ac_name'[ ]*=' $ac_file`
if test -z "$ac_init"; then
ac_seen=`echo "$ac_seen" |sed -e 's,^,'$ac_file':,'`
- { echo "$as_me:21973: WARNING: Variable $ac_name is used but was not set:
+ { echo "$as_me:27112: WARNING: Variable $ac_name is used but was not set:
$ac_seen" >&5
echo "$as_me: WARNING: Variable $ac_name is used but was not set:
$ac_seen" >&2;}
@@ -21981,7 +27120,7 @@ $ac_seen" >&2;}
egrep -n '@[A-Z_][A-Z_0-9]+@' $ac_file >>$tmp/out
if test -s $tmp/out; then
ac_seen=`sed -e 's,^,'$ac_file':,' < $tmp/out`
- { echo "$as_me:21984: WARNING: Some variables may not be substituted:
+ { echo "$as_me:27123: WARNING: Some variables may not be substituted:
$ac_seen" >&5
echo "$as_me: WARNING: Some variables may not be substituted:
$ac_seen" >&2;}
@@ -22030,7 +27169,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
* ) ac_file_in=$ac_file.in ;;
esac
- test x"$ac_file" != x- && { echo "$as_me:22033: creating $ac_file" >&5
+ test x"$ac_file" != x- && { echo "$as_me:27172: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
# First look for the input files in the build tree, otherwise in the
@@ -22041,7 +27180,7 @@ echo "$as_me: creating $ac_file" >&6;}
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:22044: error: cannot find input file: $f" >&5
+ test -f "$f" || { { echo "$as_me:27183: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
@@ -22054,7 +27193,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
echo $srcdir/$f
else
# /dev/null tree
- { { echo "$as_me:22057: error: cannot find input file: $f" >&5
+ { { echo "$as_me:27196: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
@@ -22112,7 +27251,7 @@ cat >>$CONFIG_STATUS <<\EOF
rm -f $tmp/in
if test x"$ac_file" != x-; then
if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
- { echo "$as_me:22115: $ac_file is unchanged" >&5
+ { echo "$as_me:27254: $ac_file is unchanged" >&5
echo "$as_me: $ac_file is unchanged" >&6;}
else
ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
@@ -22178,8 +27317,8 @@ fi
cf_prefix=$LIB_PREFIX
-case $cf_cv_shlib_version in #(vi
-cygdll|msysdll|mingw)
+case $cf_cv_shlib_version in
+(cygdll|msysdll|mingw)
TINFO_NAME=$TINFO_ARG_SUFFIX
TINFO_SUFFIX=.dll
;;
@@ -22187,17 +27326,17 @@ esac
if test -n "$TINFO_SUFFIX" ; then
case $TINFO_SUFFIX in
- tw*)
- TINFO_NAME="${TINFO_NAME}tw"
- TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^tw//'`
+ (tw*)
+ TINFO_NAME="${TINFO_NAME}tw${EXTRA_SUFFIX}"
+ TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^tw'$EXTRA_SUFFIX'//'`
;;
- t*)
- TINFO_NAME="${TINFO_NAME}t"
- TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^t//'`
+ (t*)
+ TINFO_NAME="${TINFO_NAME}t${EXTRA_SUFFIX}"
+ TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^t'$EXTRA_SUFFIX'//'`
;;
- w*)
- TINFO_NAME="${TINFO_NAME}w"
- TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^w//'`
+ (w*)
+ TINFO_NAME="${TINFO_NAME}w${EXTRA_SUFFIX}"
+ TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^w'$EXTRA_SUFFIX'//'`
;;
esac
fi
@@ -22210,98 +27349,134 @@ do
SHARED_LIB=
Libs_To_Make=
+ cf_awk_program=
+ if test -n "${cf_cv_abi_version}" && test "x${cf_cv_abi_version}" != "x5"
+ then
+ cf_awk_program="$cf_awk_program\
+/deprecated in ABI${cf_cv_abi_version}/ { next; }\
+{ sub(\"NCURSES([WT]+)?\", \"&${cf_cv_abi_version}\"); }\
+"
+ fi
+
+ if test "x$WILDCARD_SYMS" = xno
+ then
+ cf_awk_program="$cf_awk_program\
+/[ ]_\\*;/ { skip=1; next; }\
+"
+ fi
+
+ if test "x$cf_awk_program" != "x"
+ then
+ cat >>$cf_dir/Makefile <<CF_EOF
+
+# Generated by CF_LIB_RULES
+resulting.map: $UNALTERED_SYMS
+ $AWK 'BEGIN { skip = 1; last=""; } \
+$cf_awk_program \
+{ if ( last != "" && ( skip == 0 || \$\$0 !~ /}/ ) ) { print last; }\
+ skip = 0; last = \$\$0; } \
+END { print last; }' < $UNALTERED_SYMS >\$@
+
+distclean::
+ rm -f resulting.map
+CF_EOF
+ fi
+
for cf_item in $cf_LIST_MODELS
do
- case X$cf_item in #(vi
- Xlibtool) #(vi
+ case X$cf_item in
+ (Xlibtool)
cf_suffix='.la'
cf_depsuf=$cf_suffix
;;
- Xdebug) #(vi
+ (Xdebug)
cf_suffix='_g.a'
cf_depsuf=$cf_suffix
;;
- Xprofile) #(vi
+ (Xprofile)
cf_suffix='_p.a'
cf_depsuf=$cf_suffix
;;
- Xshared) #(vi
+ (Xshared)
case $cf_cv_system_name in
- aix[5-7]*) #(vi
- cf_suffix='.a'
+ (aix[5-7]*)
+ cf_suffix='.so'
cf_depsuf=$cf_suffix
;;
- cygwin*|msys*|mingw*) #(vi
+ (cygwin*|msys*|mingw*)
cf_suffix='.dll'
cf_depsuf='.dll.a'
;;
- darwin*) #(vi
+ (darwin*)
cf_suffix='.dylib'
cf_depsuf=$cf_suffix
;;
- hpux*) #(vi
+ (hpux*)
case $target in
- ia64*) #(vi
+ (ia64*)
cf_suffix='.so'
cf_depsuf=$cf_suffix
;;
- *) #(vi
+ (*)
cf_suffix='.sl'
cf_depsuf=$cf_suffix
;;
esac
;;
- *) #(vi
+ (*)
cf_suffix='.so'
cf_depsuf=$cf_suffix
;;
esac
;;
- *)
+ (*)
cf_suffix='.a'
cf_depsuf=$cf_suffix
;;
esac
- test -n "$LIB_SUFFIX" && cf_suffix="${LIB_SUFFIX}${cf_suffix}"
- test -n "$LIB_SUFFIX" && cf_depsuf="${LIB_SUFFIX}${cf_depsuf}"
+ if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}"
+ then
+ cf_suffix="${LIB_SUFFIX}${EXTRA_SUFFIX}${cf_suffix}"
+ cf_depsuf="${LIB_SUFFIX}${EXTRA_SUFFIX}${cf_depsuf}"
+ fi
cf_libname=$cf_dir
test "$cf_dir" = c++ && cf_libname=ncurses++
if test $cf_item = shared ; then
if test -n "${LIB_SUFFIX}"
then
- cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${LIB_SUFFIX}"'//'`
+ cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'`
else
cf_shared_suffix="$cf_suffix"
fi
if test "$cf_cv_do_symlinks" = yes ; then
cf_version_name=
- case "$cf_cv_shlib_version" in #(vi
- rel) #(vi
+ case "$cf_cv_shlib_version" in
+ (rel)
cf_version_name=REL_VERSION
;;
- abi)
+ (abi)
cf_version_name=ABI_VERSION
;;
esac
if test -n "$cf_version_name"
then
- case "$cf_cv_system_name" in #(vi
- darwin*)
+ case "$cf_cv_system_name" in
+ (darwin*)
# "w", etc?
- cf_suffix="${LIB_SUFFIX}"'.${'$cf_version_name'}'"$cf_shared_suffix"
- ;; #(vi
- *)
+ cf_suffix="${USE_LIB_SUFFIX}"'.${'$cf_version_name'}'"$cf_shared_suffix"
+ ;;
+ (*)
cf_suffix="$cf_suffix"'.${'$cf_version_name'}'
;;
esac
fi
- if test -n "${LIB_SUFFIX}"
+ if test -n "${USE_LIB_SUFFIX}"
then
- cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${LIB_SUFFIX}"'//'`
+ cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'`
else
cf_shared_suffix="$cf_suffix"
fi
@@ -22309,25 +27484,31 @@ do
# cygwin needs import library, and has unique naming convention
# use autodetected ${cf_prefix} for import lib and static lib, but
# use 'cyg' prefix for shared lib.
- case $cf_cv_shlib_version in #(vi
- cygdll) #(vi
+ case $cf_cv_shlib_version in
+ (cygdll)
cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
- Libs_To_Make="$Libs_To_Make ../lib/cyg${cf_libname}${cf_cygsuf}"
- continue
+ cf_add_lib="../lib/cyg${cf_libname}${cf_cygsuf}"
;;
- msysdll) #(vi
+ (msysdll)
cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
- Libs_To_Make="$Libs_To_Make ../lib/msys-${cf_libname}${cf_cygsuf}"
- continue
+ cf_add_lib="../lib/msys-${cf_libname}${cf_cygsuf}"
;;
- mingw)
+ (mingw)
cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
- Libs_To_Make="$Libs_To_Make ../lib/lib${cf_libname}${cf_cygsuf}"
- continue
+ cf_add_lib="../lib/lib${cf_libname}${cf_cygsuf}"
+ ;;
+ (*)
+ cf_add_lib=
;;
esac
+ if test -n "$cf_add_lib"
+ then
+ Libs_To_Make="$Libs_To_Make $cf_add_lib"
+ continue
+ fi
fi
- Libs_To_Make="$Libs_To_Make ../lib/${cf_prefix}${cf_libname}${cf_suffix}"
+ cf_add_lib="../lib/${cf_prefix}${cf_libname}${cf_suffix}"
+ Libs_To_Make="$Libs_To_Make $cf_add_lib"
done
if test $cf_dir = ncurses ; then
@@ -22340,20 +27521,20 @@ do
cf_l_parts=`echo "$cf_r_parts" |sed -e 's/ .*$//'`
cf_r_parts=`echo "$cf_r_parts" |sed -e 's/^[^ ]* //'`
if test "$cf_l_parts" != "$cf_r_parts" ; then
- cf_item=
- case $cf_l_parts in #(vi
- *termlib*) #(vi
- cf_item=`echo $cf_liblist |sed -e s%${LIB_NAME}${LIB_SUFFIX}%${TINFO_LIB_SUFFIX}%g`
+ cf_add_lib=
+ case $cf_l_parts in
+ (*termlib*)
+ cf_add_lib=`echo $cf_liblist |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TINFO_LIB_SUFFIX}%g`
;;
- *ticlib*)
- cf_item=`echo $cf_liblist |sed -e s%${LIB_NAME}${LIB_SUFFIX}%${TICS_LIB_SUFFIX}%g`
+ (*ticlib*)
+ cf_add_lib=`echo $cf_liblist |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TICS_LIB_SUFFIX}%g`
;;
- *)
+ (*)
break
;;
esac
- if test -n "$cf_item"; then
- Libs_To_Make="$cf_item $Libs_To_Make"
+ if test -n "$cf_add_lib"; then
+ Libs_To_Make="$cf_add_lib $Libs_To_Make"
fi
else
break
@@ -22369,9 +27550,9 @@ do
for cf_item in $Libs_To_Make
do
case $cf_item in
- *.a)
+ (*.a)
;;
- *)
+ (*)
cf_item=`echo "$cf_item" | sed -e "s,"$cf_shared_suffix",.a,"`
;;
esac
@@ -22411,83 +27592,86 @@ cf_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQ
CXX_MODEL=$cf_ITEM
if test "$CXX_MODEL" = SHARED; then
- case $cf_cv_shlib_version in #(vi
- cygdll|msysdll|mingw) #(vi
+ case $cf_cv_shlib_version in
+ (cygdll|msysdll|mingw)
test "x$with_shared_cxx" = xno && test -n "$verbose" && echo " overriding CXX_MODEL to SHARED" 1>&6
-echo "${as_me:-configure}:22418: testing overriding CXX_MODEL to SHARED ..." 1>&5
+echo "${as_me:-configure}:27599: testing overriding CXX_MODEL to SHARED ..." 1>&5
with_shared_cxx=yes
;;
- *)
+ (*)
test "x$with_shared_cxx" = xno && CXX_MODEL=NORMAL
;;
esac
fi
- case X$cf_item in #(vi
- Xlibtool) #(vi
+ case X$cf_item in
+ (Xlibtool)
cf_suffix='.la'
cf_depsuf=$cf_suffix
;;
- Xdebug) #(vi
+ (Xdebug)
cf_suffix='_g.a'
cf_depsuf=$cf_suffix
;;
- Xprofile) #(vi
+ (Xprofile)
cf_suffix='_p.a'
cf_depsuf=$cf_suffix
;;
- Xshared) #(vi
+ (Xshared)
case $cf_cv_system_name in
- aix[5-7]*) #(vi
- cf_suffix='.a'
+ (aix[5-7]*)
+ cf_suffix='.so'
cf_depsuf=$cf_suffix
;;
- cygwin*|msys*|mingw*) #(vi
+ (cygwin*|msys*|mingw*)
cf_suffix='.dll'
cf_depsuf='.dll.a'
;;
- darwin*) #(vi
+ (darwin*)
cf_suffix='.dylib'
cf_depsuf=$cf_suffix
;;
- hpux*) #(vi
+ (hpux*)
case $target in
- ia64*) #(vi
+ (ia64*)
cf_suffix='.so'
cf_depsuf=$cf_suffix
;;
- *) #(vi
+ (*)
cf_suffix='.sl'
cf_depsuf=$cf_suffix
;;
esac
;;
- *) #(vi
+ (*)
cf_suffix='.so'
cf_depsuf=$cf_suffix
;;
esac
;;
- *)
+ (*)
cf_suffix='.a'
cf_depsuf=$cf_suffix
;;
esac
- test -n "$LIB_SUFFIX" && cf_suffix="${LIB_SUFFIX}${cf_suffix}"
- test -n "$LIB_SUFFIX" && cf_depsuf="${LIB_SUFFIX}${cf_depsuf}"
+ if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}"
+ then
+ cf_suffix="${LIB_SUFFIX}${EXTRA_SUFFIX}${cf_suffix}"
+ cf_depsuf="${LIB_SUFFIX}${EXTRA_SUFFIX}${cf_depsuf}"
+ fi
case $cf_item in
- libtool) cf_subdir='obj_lo' ;;
- normal) cf_subdir='objects' ;;
- debug) cf_subdir='obj_g' ;;
- profile) cf_subdir='obj_p' ;;
- shared)
- case $cf_cv_system_name in #(vi
- cygwin|msys) #(vi
+ (libtool) cf_subdir='obj_lo' ;;
+ (normal) cf_subdir='objects' ;;
+ (debug) cf_subdir='obj_g' ;;
+ (profile) cf_subdir='obj_p' ;;
+ (shared)
+ case $cf_cv_system_name in
+ (cygwin|msys)
cf_subdir='objects' ;;
- *)
+ (*)
cf_subdir='obj_s' ;;
esac
esac
@@ -22496,24 +27680,24 @@ echo "${as_me:-configure}:22418: testing overriding CXX_MODEL to SHARED ..." 1>&
cf_libname=$cf_dir
if test $cf_dir = ncurses ; then
case $cf_subset in
- *base*)
- cf_libname=${cf_libname}$LIB_SUFFIX
+ (*base*)
+ cf_libname=${cf_libname}$USE_LIB_SUFFIX
;;
- *termlib*)
+ (*termlib*)
cf_libname=$TINFO_LIB_SUFFIX
;;
- ticlib*)
+ (ticlib*)
cf_libname=$TICS_LIB_SUFFIX
;;
esac
elif test $cf_dir = c++ ; then
- cf_libname=ncurses++$LIB_SUFFIX
+ cf_libname=ncurses++$USE_LIB_SUFFIX
else
- cf_libname=${cf_libname}$LIB_SUFFIX
+ cf_libname=${cf_libname}$USE_LIB_SUFFIX
fi
- if test -n "${DFT_ARG_SUFFIX}" ; then
- # undo $LIB_SUFFIX add-on in CF_LIB_SUFFIX
- cf_suffix=`echo $cf_suffix |sed -e "s%^${LIB_SUFFIX}%%"`
+ if test -n "${USE_ARG_SUFFIX}" ; then
+ # undo $USE_LIB_SUFFIX add-on in CF_LIB_SUFFIX
+ cf_suffix=`echo $cf_suffix |sed -e "s%^${USE_LIB_SUFFIX}%%"`
fi
# These dependencies really are for development, not
@@ -22534,22 +27718,27 @@ echo "${as_me:-configure}:22418: testing overriding CXX_MODEL to SHARED ..." 1>&
cf_dir_suffix=
old_cf_suffix="$cf_suffix"
if test "$cf_cv_shlib_version_infix" = yes ; then
- if test -n "$LIB_SUFFIX" ; then
- case $LIB_SUFFIX in
- tw*)
- cf_libname=`echo $cf_libname | sed 's/tw$//'`
- cf_suffix=`echo $cf_suffix | sed 's/^tw//'`
- cf_dir_suffix=tw
+ if test -n "$USE_LIB_SUFFIX" ; then
+ case $USE_LIB_SUFFIX in
+ (tw*)
+ cf_libname=`echo $cf_libname | sed 's/tw'$EXTRA_SUFFIX'$//'`
+ cf_suffix=`echo $cf_suffix | sed 's/^tw'$EXTRA_SUFFIX'//'`
+ cf_dir_suffix=tw$EXTRA_SUFFIX
+ ;;
+ (t*)
+ cf_libname=`echo $cf_libname | sed 's/t'$EXTRA_SUFFIX'$//'`
+ cf_suffix=`echo $cf_suffix | sed 's/^t'$EXTRA_SUFFIX'//'`
+ cf_dir_suffix=t$EXTRA_SUFFIX
;;
- t*)
- cf_libname=`echo $cf_libname | sed 's/t$//'`
- cf_suffix=`echo $cf_suffix | sed 's/^t//'`
- cf_dir_suffix=t
+ (w*)
+ cf_libname=`echo $cf_libname | sed 's/w'$EXTRA_SUFFIX'$//'`
+ cf_suffix=`echo $cf_suffix | sed 's/^w'$EXTRA_SUFFIX'//'`
+ cf_dir_suffix=w$EXTRA_SUFFIX
;;
- w*)
- cf_libname=`echo $cf_libname | sed 's/w$//'`
- cf_suffix=`echo $cf_suffix | sed 's/^w//'`
- cf_dir_suffix=w
+ (*)
+ cf_libname=`echo $cf_libname | sed 's/'$EXTRA_SUFFIX'$//'`
+ cf_suffix=`echo $cf_suffix | sed 's/^'$EXTRA_SUFFIX'//'`
+ cf_dir_suffix=$EXTRA_SUFFIX
;;
esac
fi
@@ -22571,6 +27760,7 @@ echo "${as_me:-configure}:22418: testing overriding CXX_MODEL to SHARED ..." 1>&
ShlibVer=$cf_cv_shlib_version \
ShlibVerInfix=$cf_cv_shlib_version_infix \
ReLink=${cf_cv_do_relink:-no} \
+ ReRanlib=${cf_cv_do_reranlib:-yes} \
DoLinks=$cf_cv_do_symlinks \
rmSoLocs=$cf_cv_rm_so_locs \
ldconfig="$LDCONFIG" \
@@ -22614,7 +27804,7 @@ do
if test -f $cf_dir/Makefile ; then
case "$cf_dir" in
- Ada95) #(vi
+ (Ada95)
echo 'libs \' >> Makefile
echo 'install.libs \' >> Makefile
echo 'uninstall.libs ::' >> Makefile
@@ -22663,6 +27853,12 @@ install.libs uninstall.libs \\
install.data uninstall.data ::
$MAKE_TERMINFO cd misc && \${MAKE} \${TOP_MFLAGS} \$@
CF_EOF
+else
+cat >> Makefile <<CF_EOF
+
+install.libs uninstall.libs ::
+ cd misc && \${MAKE} \${TOP_MFLAGS} \$@
+CF_EOF
fi
if test "x$cf_with_manpages" = xyes; then
@@ -22685,8 +27881,7 @@ CF_EOF
# Special case: tack's manpage lives in its own directory.
if test "x$cf_with_manpages" = xyes; then
-if test -d tack ; then
-if test -f $srcdir/$tack.h; then
+if test "x$cf_with_tack" = "xyes"; then
cat >> Makefile <<CF_EOF
install.man \\
@@ -22695,13 +27890,12 @@ uninstall.man ::
CF_EOF
fi
fi
-fi
rm -f headers.sed headers.sh
echo creating headers.sh
cat >headers.sh <<CF_EOF
-#! /bin/sh
+#! $SHELL
# This shell script is generated by the 'configure' script. It is invoked in a
# subdirectory of the build tree. It generates a sed-script in the parent
# directory that is used to adjust includes for header files that reside in a
@@ -22722,7 +27916,7 @@ CF_EOF
if test $WITH_CURSES_H = yes; then
cat >>headers.sh <<CF_EOF
case \$DST in
-/*/include/*)
+(/*/include/*)
END=\`basename \$DST\`
for i in \`cat \$REF/../*/headers |fgrep -v "#"\`
do
@@ -22730,7 +27924,7 @@ case \$DST in
echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
done
;;
-*)
+(*)
echo "" >> \$TMPSED
;;
esac
@@ -22739,7 +27933,7 @@ CF_EOF
else
cat >>headers.sh <<CF_EOF
case \$DST in
-/*/include/*)
+(/*/include/*)
END=\`basename \$DST\`
for i in \`cat \$REF/../*/headers |fgrep -v "#"\`
do
@@ -22752,7 +27946,7 @@ case \$DST in
echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
done
;;
-*)
+(*)
echo "s/<curses.h>/<ncurses.h>/" >> \$TMPSED
;;
esac
diff --git a/configure.in b/configure.in
index c14ebe791441..37ac992697c4 100644
--- a/configure.in
+++ b/configure.in
@@ -1,5 +1,5 @@
dnl***************************************************************************
-dnl Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+dnl Copyright (c) 1998-2019,2020 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,22 +28,27 @@ dnl***************************************************************************
dnl
dnl Author: Thomas E. Dickey 1995-on
dnl
-dnl $Id: configure.in,v 1.577 2013/12/15 00:03:02 tom Exp $
+dnl $Id: configure.in,v 1.693 2020/01/11 23:27:16 tom Exp $
dnl Process this file with autoconf to produce a configure script.
dnl
-dnl See http://invisible-island.net/autoconf/ for additional information.
+dnl For additional information, see
+dnl https://invisible-island.net/autoconf/
+dnl https://invisible-island.net/autoconf/my-autoconf.html
dnl
dnl ---------------------------------------------------------------------------
-AC_PREREQ(2.52.20030208)
-AC_REVISION($Revision: 1.577 $)
+AC_PREREQ(2.52.20200111)
+AC_REVISION($Revision: 1.693 $)
AC_INIT(ncurses/base/lib_initscr.c)
AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
+AC_DEFUN([AC_PATH_XTRA],[])dnl ignore dependencies on this
+
CF_TOP_BUILDDIR
CF_SUBST_NCURSES_VERSION
+CF_VERSION_INFO(NCURSES,ncurses)
CF_WITH_REL_VERSION(NCURSES)
-CF_WITH_ABI_VERSION
+CF_NCURSES_WITH_ABI_VERSION
CF_WITH_SYSTYPE
@@ -52,24 +57,26 @@ cf_user_CFLAGS="$CFLAGS"
### Default install-location
CF_CFG_DEFAULTS
+### Defaults for ncurses ABI
+CF_ABI_DEFAULTS
### Checks for programs.
AC_ARG_WITH(ada,
- [ --without-ada suppress check for Ada95, don't build demo],
+ [ --without-ada suppress check for Ada compiler, don't build demo],
[cf_with_ada=$withval],
[cf_with_ada=yes])
+
if test "x$cf_with_ada" = xyes
then
- cf_PROG_CC="gnatgcc gcc cc"
+ cf_prog_cc="gnatgcc gcc cc"
else
- cf_PROG_CC="gcc cc"
+ cf_prog_cc="gcc cc"
fi
-
-CF_PROG_CC($cf_PROG_CC)
+CF_PROG_CC($cf_prog_cc)
AC_PROG_CPP
AC_PROG_GCC_TRADITIONAL
-CF_PROG_CC_C_O(CC)
+CF_PROG_CC_C_O(CC,[$CFLAGS $CPPFLAGS])
CF_PROG_LDCONFIG
dnl DEFECT in autoconf 2.12: an attempt to set policy, this breaks the
@@ -92,12 +99,43 @@ else
cf_with_cxx=no; CXX=""; GXX="";])dnl
AC_PROG_CXX
popdef([AC_MSG_ERROR])dnl
+
+ AC_LANG_PUSH(C++)
+ if test "x$cf_with_cxx" != xno
+ then
+ # Several of the C++ configurations do not work, particularly when
+ # cross-compiling (20140913 -TD)
+ AC_MSG_CHECKING(if $CXX works)
+
+ save_CPPFLAGS="$CPPFLAGS"
+ eval cf_includedir=${includedir}
+ CPPFLAGS="$CPPFLAGS -I${cf_includedir}"
+ AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <stdio.h>
+],
+ [
+ printf("Hello world!\n")
+ ],
+ [cf_cxx_works=yes],
+ [cf_cxx_works=no])
+ CPPFLAGS="$save_CPPFLAGS"
+
+ AC_MSG_RESULT($cf_cxx_works)
+ if test "x$cf_cxx_works" = xno
+ then
+ AC_MSG_WARN([Ignore $CXX, since it cannot compile hello-world.])
+ cf_with_cxx=no; CXX=""; GXX="";
+ fi
+ fi
+ AC_LANG_POP
+
# autoconf 2.5x removed the error (hardcoding it to g++, or just blank)
if test "$CXX" = "g++" ; then
AC_PATH_PROG(CXX,g++)
fi
- case "x$CXX" in #(vi
- x|xg++)
+ case "x$CXX" in
+ (x|xg++)
AC_MSG_WARN([You don't have any C++ compiler, too bad])
cf_with_cxx=no; CXX=""; GXX="";
;;
@@ -106,7 +144,7 @@ fi
CF_GXX_VERSION
case $GXX_VERSION in
-1*|2.[[0-6]]*)
+(1*|2.[[0-6]]*)
# GXX=""; CXX=""; ac_cv_prog_gxx=no
# cf_cxx_library=no
AC_MSG_WARN(templates do not work)
@@ -120,7 +158,7 @@ AC_ARG_WITH(cxx-binding,
[cf_with_cxx_binding=$cf_with_cxx])
AC_MSG_RESULT($cf_with_cxx_binding)
-AC_MSG_CHECKING(if you want to build with Ada95)
+AC_MSG_CHECKING(if you want to build with Ada)
AC_MSG_RESULT($cf_with_ada)
AC_MSG_CHECKING(if you want to install terminal database)
@@ -144,6 +182,22 @@ AC_ARG_WITH(progs,
[cf_with_progs=yes])
AC_MSG_RESULT($cf_with_progs)
+if test -f $srcdir/tack/tack.h; then
+ if test "x$cross_compiling" = xyes ; then
+ CF_VERBOSE(ignoring tack because we are cross-compiling)
+ cf_with_tack=no
+ else
+ AC_MSG_CHECKING(if you want to build the tack program)
+ AC_ARG_WITH(tack,
+ [ --without-tack suppress build/install with tack program],
+ [cf_with_tack=$withval],
+ [cf_with_tack=$cf_with_progs])
+ AC_MSG_RESULT($cf_with_tack)
+ fi
+else
+ cf_with_tack=no
+fi
+
AC_MSG_CHECKING(if you want to build test-programs)
AC_ARG_WITH(tests,
[ --without-tests suppress build/install with test-programs],
@@ -159,9 +213,8 @@ AC_ARG_WITH(curses-h,
AC_MSG_RESULT($with_curses_h)
modules_to_build="ncurses"
-if test "X$cf_with_progs" != Xno ; then
-modules_to_build="$modules_to_build progs tack"
-fi
+test "X$cf_with_progs" != Xno && modules_to_build="$modules_to_build progs"
+test "X$cf_with_tack" != Xno && modules_to_build="$modules_to_build tack"
modules_to_build="$modules_to_build panel menu form"
AC_ARG_PROGRAM
@@ -174,10 +227,41 @@ CF_PROG_LN_S
AC_SYS_LONG_FILE_NAMES
-# if we find pkg-config, check if we should install the ".pc" files.
+# Provide for renaming "ncurses5-config" to "ncurses5X-config", etc., in case
+# of package conflict.
+cf_config_suffix=
+AC_ARG_WITH(config-suffix,
+ [ --with-config-suffix=X suffixes ncursesXX-config file],
+ [case "x$withval" in
+ (xyes|xno)
+ AC_MSG_WARN(expected a value for config-suffix option)
+ ;;
+ (*) cf_config_suffix="$withval"
+ ;;
+ esac])
+AC_SUBST(cf_config_suffix)
+
+# If we find pkg-config, check if we should install the ".pc" files.
CF_PKG_CONFIG
CF_WITH_PKG_CONFIG_LIBDIR
CF_ENABLE_PC_FILES
+if test -z "$MAKE_PC_FILES"
+then
+ AC_MSG_CHECKING(for suffix to add to pc-files)
+AC_ARG_WITH(pc-suffix,
+ [ --with-pc-suffix suffixes pc-files],
+ [case "x$withval" in
+ (xyes|xno)
+ PC_MODULE_SUFFIX=
+ ;;
+ (*) PC_MODULE_SUFFIX="$withval"
+ ;;
+ esac])
+ test -z "$PC_MODULE_SUFFIX" && PC_MODULE_SUFFIX=none
+ AC_MSG_RESULT($PC_MODULE_SUFFIX)
+ test "$PC_MODULE_SUFFIX" = none && PC_MODULE_SUFFIX=
+ AC_SUBST(PC_MODULE_SUFFIX)
+fi
AC_MSG_CHECKING(if we should assume mixed-case filenames)
AC_ARG_ENABLE(mixed-case,
@@ -186,12 +270,12 @@ AC_ARG_ENABLE(mixed-case,
[enable_mixedcase=auto])
AC_MSG_RESULT($enable_mixedcase)
if test "$enable_mixedcase" = "auto" ; then
- CF_MIXEDCASE_FILENAMES
+ CF_MIXEDCASE_FILENAMES
else
- cf_cv_mixedcase=$enable_mixedcase
- if test "x$enable_mixedcase" = "xyes" ; then
- AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if tic should assume mixed-case filenames])
- fi
+ cf_cv_mixedcase=$enable_mixedcase
+ if test "x$enable_mixedcase" = "xyes" ; then
+ AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if tic should assume mixed-case filenames])
+ fi
fi
# do this after mixed-case option (tags/TAGS is not as important as tic).
@@ -212,10 +296,10 @@ dnl archive can be built without modifying the host system's configuration.
AC_MSG_CHECKING(if you have specified an install-prefix)
AC_ARG_WITH(install-prefix,
[ --with-install-prefix prefixes actual install-location ($DESTDIR)],
- [case "x$withval" in #(vi
- xyes|xno) #(vi
+ [case "x$withval" in
+ (xyes|xno)
;;
- *) DESTDIR="$withval"
+ (*) DESTDIR="$withval"
;;
esac])
AC_MSG_RESULT($DESTDIR)
@@ -343,36 +427,6 @@ AC_ARG_WITH(ticlib,
[with_ticlib=no])
AC_MSG_RESULT($with_ticlib)
-### Checks for special libraries, must be done up-front.
-SHLIB_LIST=""
-CF_WITH_GPM
-if test "$with_gpm" != no ; then
- AC_MSG_CHECKING(if you want to load GPM dynamically)
- AC_ARG_WITH(dlsym,
- [ --without-dlsym do not use dlsym() to load GPM dynamically],
- [with_dlsym=$withval],
- [with_dlsym=yes])
- AC_MSG_RESULT($with_dlsym)
- if test "x$with_dlsym" = xyes ; then
- CF_FUNC_DLSYM
- if test "x$with_gpm" != xyes ; then
- CF_VERBOSE(assuming soname for gpm is $with_gpm)
- cf_cv_gpm_soname="$with_gpm"
- else
- CF_LIB_SONAME([#include <gpm.h>],[if (Gpm_Open(0,0)) Gpm_Close();],gpm)
- fi
- test "$cf_cv_gpm_soname" != "unknown" && AC_DEFINE_UNQUOTED(LIBGPM_SONAME,"$cf_cv_gpm_soname",[Define as needed to set the gpm share library soname])
- SHLIB_LIST="-ldl $SHLIB_LIST"
- else
- SHLIB_LIST="-lgpm $SHLIB_LIST"
- CF_ADD_LIB(gpm,TEST_LIBS)
- fi
- AC_DEFINE(HAVE_LIBGPM,1,[Define to 1 if we have the gpm library])
- CF_CHECK_GPM_WGETCH
-fi
-
-CF_WITH_SYSMOUSE
-
dnl Not all ports of gcc support the -g option
if test X"$CC_G_OPT" = X"" ; then
@@ -389,17 +443,17 @@ AC_SUBST(CXX_G_OPT)
AC_MSG_CHECKING(for default loader flags)
case $DFT_LWR_MODEL in
-libtool) LD_MODEL='' ;;
-normal) LD_MODEL='' ;;
-debug) LD_MODEL=$CC_G_OPT ;;
-profile) LD_MODEL='-pg';;
-shared) LD_MODEL='' ;;
+(libtool) LD_MODEL='' ;;
+(normal) LD_MODEL='' ;;
+(debug) LD_MODEL=$CC_G_OPT ;;
+(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)
case $DFT_LWR_MODEL in
-shared)
+(shared)
CF_ENABLE_RPATH
AC_MSG_CHECKING(if shared libraries should be relinked during install)
AC_ARG_ENABLE(relink,
@@ -413,26 +467,107 @@ esac
# we will build libraries one-level down.
rel_builddir=..
CF_SHARED_OPTS
-if test "$CC_SHARED_OPTS" = "unknown"; then
- for model in $cf_list_models; do
- if test "$model" = "shared"; then
+for model in $cf_list_models; do
+ case $model in
+ (libtool)
+ CF_WITH_LIBTOOL_OPTS
+ CF_WITH_EXPORT_SYMS
+ ;;
+ (shared)
+ if test "$CC_SHARED_OPTS" = "unknown"; then
AC_ERROR(Shared libraries are not supported in this version)
fi
- done
+ # workaround for inept transition to PIE vs PIC...
+ AC_MSG_CHECKING(if current CFLAGS link properly)
+ AC_TRY_LINK(
+ [#include <stdio.h>],
+ [printf("Hello work\n");],
+ [cf_cflags_work=yes],
+ [cf_cflags_work=no])
+ AC_MSG_RESULT($cf_cflags_work)
+ if test "$cf_cflags_work" = no
+ then
+ CF_VERBOSE(try to work around by appending shared-options)
+ CFLAGS="$CFLAGS $CC_SHARED_OPTS"
+ fi
+ CF_WITH_VERSIONED_SYMS
+ ;;
+ esac
+done
+
+### Checks for special libraries, must be done up-front.
+SHLIB_LIST=""
+CF_WITH_GPM
+if test "$with_gpm" != no ; then
+ AC_MSG_CHECKING(if you want to load GPM dynamically)
+ AC_ARG_WITH(dlsym,
+ [ --without-dlsym do not use dlsym() to load GPM dynamically],
+ [with_dlsym=$withval],
+ [with_dlsym=yes])
+ AC_MSG_RESULT($with_dlsym)
+ if test "x$with_dlsym" = xyes ; then
+ CF_FUNC_DLSYM
+ if test "x$with_gpm" != xyes ; then
+ CF_VERBOSE(assuming soname for gpm is $with_gpm)
+ cf_cv_gpm_soname="$with_gpm"
+ else
+ CF_LIB_SONAME([#include <gpm.h>],[if (Gpm_Open(0,0)) Gpm_Close();],gpm)
+ fi
+ test "$cf_cv_gpm_soname" != "unknown" && AC_DEFINE_UNQUOTED(LIBGPM_SONAME,"$cf_cv_gpm_soname",[Define as needed to set the gpm share library soname])
+ SHLIB_LIST="-ldl $SHLIB_LIST"
+ CF_ADD_LIB(dl,PRIVATE_LIBS)
+ else
+ SHLIB_LIST="-lgpm $SHLIB_LIST"
+ CF_ADD_LIB(gpm,TEST_LIBS)
+ CF_ADD_LIB(gpm,PRIVATE_LIBS)
+ fi
+ AC_DEFINE(HAVE_LIBGPM,1,[Define to 1 if we have the gpm library])
+ CF_CHECK_GPM_WGETCH
fi
+CF_WITH_PCRE2
+CF_WITH_SYSMOUSE
+
+# pretend that ncurses==ncursesw==ncursest
+AC_MSG_CHECKING(if you want to disable library suffixes)
+CF_ARG_DISABLE(lib-suffixes,
+ [ --disable-lib-suffixes disable library suffixes],
+ [disable_lib_suffixes=yes],
+ [disable_lib_suffixes=no],
+ no)
+AC_MSG_RESULT($disable_lib_suffixes)
+
### If we're building with rpath, try to link non-standard libs that way too.
-if test "$DFT_LWR_MODEL" = "shared"; then
+if test "$DFT_LWR_MODEL" = "shared" && test "x$cf_cv_enable_rpath" != xno; then
CF_DISABLE_RPATH_HACK
fi
###############################################################################
CF_HELP_MESSAGE(Fine-Tuning Your Configuration:)
+### use option --with-extra-suffix to append suffix to headers and libraries
+AC_MSG_CHECKING(if you wish to append extra suffix to header/library paths)
+EXTRA_SUFFIX=
+AC_ARG_WITH(extra-suffix,
+ [ --with-extra-suffix=X append extra suffix to header/library paths],
+ [case x$withval in
+ (no)
+ ;;
+ (xyes|x)
+ EXTRA_SUFFIX=$cf_cv_abi_version
+ ;;
+ (*)
+ EXTRA_SUFFIX=$withval
+ ;;
+ esac
+ ])
+AC_MSG_RESULT($EXTRA_SUFFIX)
+AC_SUBST(EXTRA_SUFFIX)
+
### use option --disable-overwrite to leave out the link to -lcurses
AC_MSG_CHECKING(if you wish to install ncurses overwriting curses)
AC_ARG_ENABLE(overwrite,
- [ --disable-overwrite leave out the link to -lcurses],
+ [ --disable-overwrite put headers in subdir, omit link to -lcurses],
[with_overwrite=$enableval],
[if test "$prefix" = "/usr" ; then with_overwrite=yes; else with_overwrite=no; fi])
AC_MSG_RESULT($with_overwrite)
@@ -444,11 +579,11 @@ AC_ARG_ENABLE(database,
[use_database=yes])
AC_MSG_RESULT($use_database)
-case $host_os in #(vi
-os2*) #(vi
+case $host_os in
+(os2*)
TERMINFO_SRC='${top_srcdir}/misc/emx.src'
;;
-*) #(vi
+(*)
TERMINFO_SRC='${top_srcdir}/misc/terminfo.src'
;;
esac
@@ -480,8 +615,39 @@ AC_ARG_WITH(fallbacks,
[with_fallback=$withval],
[with_fallback=])
AC_MSG_RESULT($with_fallback)
-FALLBACK_LIST=`echo "$with_fallback" | sed -e 's/,/ /g'`
+
+case ".$with_fallback" in
+(.|.no)
+ FALLBACK_LIST=
+ ;;
+(.yes)
+ AC_MSG_WARN(expected a list of terminal descriptions)
+ ;;
+(*)
+ FALLBACK_LIST=`echo "$with_fallback" | sed -e 's/,/ /g'`
+ ;;
+esac
+
+USE_FALLBACKS=
+test -z "$FALLBACK_LIST" && USE_FALLBACKS="#"
AC_SUBST(FALLBACK_LIST)
+AC_SUBST(USE_FALLBACKS)
+
+# The fallback feature in ncurses relies upon tic/infocmp outside the build
+# tree for generating the terminal descriptions that will be compiled into the
+# library. If your toolchain is old, it may not handle current terminal
+# databases. Use configure-options to point to the tools which will be used,
+# rather than the first ones found on the $PATH.
+if test -n "$FALLBACK_LIST"
+then
+ CF_WITH_PATH_PROG(TIC, tic, [for fallbacks], $PATH:/usr/local/ncurses/bin)
+ CF_WITH_PATH_PROG(INFOCMP, infocmp, [for fallbacks], $PATH:/usr/local/ncurses/bin)
+else
+ : ${TIC:=tic}
+ : ${INFOCMP:=infocmp}
+fi
+AC_SUBST(TIC)
+AC_SUBST(INFOCMP)
AC_MSG_CHECKING(if you want modern xterm or antique)
AC_ARG_WITH(xterm-new,
@@ -489,8 +655,8 @@ AC_ARG_WITH(xterm-new,
[with_xterm_new=$withval],
[with_xterm_new=yes])
case $with_xterm_new in
-no) with_xterm_new=xterm-old;;
-*) with_xterm_new=xterm-new;;
+(no) with_xterm_new=xterm-old;;
+(*) with_xterm_new=xterm-new;;
esac
AC_MSG_RESULT($with_xterm_new)
WHICH_XTERM=$with_xterm_new
@@ -502,13 +668,13 @@ AC_ARG_WITH(xterm-kbs,
[with_xterm_kbs=$withval],
[with_xterm_kbs=BS])
case x$with_xterm_kbs in
-xyes|xno|xBS|xbs|x8)
+(xyes|xno|xBS|xbs|x8)
with_xterm_kbs=BS
;;
-xDEL|xdel|x127)
+(xDEL|xdel|x127)
with_xterm_kbs=DEL
;;
-*)
+(*)
with_xterm_kbs=$withval
;;
esac
@@ -531,6 +697,13 @@ CF_WITH_PATHLIST(terminfo-dirs,
AC_MSG_RESULT($TERMINFO_DIRS)
test -n "$TERMINFO_DIRS" && AC_DEFINE_UNQUOTED(TERMINFO_DIRS,"$TERMINFO_DIRS",[Define as needed to predefine the TERMINFO_DIR searchlist])
+case "x$TERMINFO" in
+x???:*)
+ AC_MSG_WARN(ignoring non-directory/file TERMINFO value)
+ unset TERMINFO
+ ;;
+esac
+
AC_MSG_CHECKING(for default terminfo directory)
CF_WITH_PATH(default-terminfo-dir,
[ --with-default-terminfo-dir=DIR default terminfo directory],
@@ -659,24 +832,24 @@ with_symlinks=no
# soft links (symbolic links) are useful for some systems where hard links do
# not work, or to make it simpler to copy terminfo trees around.
if test "x$ac_cv_func_symlink" = xyes ; then
- AC_MSG_CHECKING(if tic should use symbolic links)
- AC_ARG_ENABLE(symlinks,
+ AC_MSG_CHECKING(if tic should use symbolic links)
+ AC_ARG_ENABLE(symlinks,
[ --enable-symlinks make tic use symbolic links not hard links],
[with_symlinks=$enableval],
[with_symlinks=no])
- AC_MSG_RESULT($with_symlinks)
+ AC_MSG_RESULT($with_symlinks)
fi
# If we have hard links and did not choose to use soft links instead, there is
# no reason to make this choice optional - use the hard links.
if test "$with_symlinks" = no ; then
- AC_MSG_CHECKING(if tic should use hard links)
- if test "x$ac_cv_func_link" = xyes ; then
- with_links=yes
- else
- with_links=no
- fi
- AC_MSG_RESULT($with_links)
+ AC_MSG_CHECKING(if tic should use hard links)
+ if test "x$ac_cv_func_link" = xyes ; then
+ with_links=yes
+ else
+ with_links=no
+ fi
+ AC_MSG_RESULT($with_links)
fi
test "x$with_links" = xyes && AC_DEFINE(USE_LINKS,1,[Define to 1 if hardlinks should be used in terminfo database])
@@ -695,8 +868,8 @@ if test "x$with_broken_linker" = xyes ; then
AC_DEFINE(BROKEN_LINKER,1,[Define to 1 to work around linkers which cannot link data-only modules])
BROKEN_LINKER=1
elif test "$DFT_LWR_MODEL" = shared ; then
- case $cf_cv_system_name in #(vi
- cygwin*)
+ case $cf_cv_system_name in
+ (cygwin*)
AC_DEFINE(BROKEN_LINKER,1,[Define to 1 to work around linkers which cannot link data-only modules])
BROKEN_LINKER=1
CF_VERBOSE(cygwin linker is broken anyway)
@@ -724,7 +897,9 @@ NCURSES_WCHAR_T=0
NCURSES_WINT_T=0
# Check to define _XOPEN_SOURCE "automatically"
-CF_XOPEN_SOURCE(500)
+CPPFLAGS_before_XOPEN="$CPPFLAGS"
+CF_XOPEN_SOURCE(600)
+CPPFLAGS_after_XOPEN="$CPPFLAGS"
# Work around breakage on OS X
CF_SIGWINCH
@@ -742,12 +917,20 @@ AC_ARG_ENABLE(widec,
[with_widec=$enableval],
[with_widec=no])
AC_MSG_RESULT($with_widec)
+
+NCURSES_WCWIDTH_GRAPHICS=1
+AC_SUBST(NCURSES_WCWIDTH_GRAPHICS)
+
if test "x$with_widec" = xyes ; then
- LIB_SUFFIX="w${LIB_SUFFIX}"
+ if test "x$disable_lib_suffixes" = xno ; then
+ LIB_SUFFIX="w${LIB_SUFFIX}"
+ fi
AC_DEFINE(USE_WIDEC_SUPPORT,1,[Define to 1 to compile with wide-char/UTF-8 code])
AC_DEFINE(NCURSES_WIDECHAR,1,[Define to 1 to compile with wide-char/UTF-8 code])
CF_CHECK_WCHAR_H
+ CF_CHECK_WCWIDTH_GRAPHICS
+ test "$cf_cv_wcwidth_graphics" = no && NCURSES_WCWIDTH_GRAPHICS=0
# with_overwrite=no
NCURSES_CH_T=cchar_t
@@ -778,20 +961,11 @@ AC_SUBST(NCURSES_OK_WCHAR_T)
AC_SUBST(NCURSES_OK_WINT_T)
### use option --disable-lp64 to allow long chtype
-case $cf_cv_abi_version in
-[[345]]*)
- default_with_lp64=no
- ;;
-*)
- default_with_lp64=yes
- ;;
-esac
-
AC_MSG_CHECKING(whether to enable _LP64 definition in curses.h)
AC_ARG_ENABLE(lp64,
[ --disable-lp64 allow chtype to be long (ignore _LP64)],
[with_lp64=$enableval],
- [with_lp64=$default_with_lp64])
+ [with_lp64=$cf_dft_with_lp64])
AC_MSG_RESULT($with_lp64)
if test "x$with_lp64" = xyes ; then
@@ -826,6 +1000,23 @@ else
with_tic_depends=no
fi
+### use option --disable-wattr-macros to suppress wattr* macros from curses.h
+AC_MSG_CHECKING(if you want to suppress wattr* macros to help with ncurses5/ncurses6 transition)
+AC_ARG_ENABLE(wattr-macros,
+ [ --disable-wattr-macros suppress wattr* macros to help with ncurses5/ncurses6 transition],
+ [with_wattr_macros=$enableval],
+ [with_wattr_macros=yes])
+if [[ "x$with_wattr_macros" != xyes ]]; then
+ NCURSES_WATTR_MACROS=0
+ AC_MSG_RESULT(yes)
+else
+ NCURSES_WATTR_MACROS=1
+ AC_MSG_RESULT(no)
+fi
+AC_SUBST(NCURSES_WATTR_MACROS)
+
+CF_WITH_X11_RGB
+
### use option --with-bool to override bool's type
AC_MSG_CHECKING(for type of bool)
AC_ARG_WITH(bool,
@@ -849,7 +1040,7 @@ AC_MSG_CHECKING(for type of chtype)
AC_ARG_WITH(chtype,
[ --with-chtype=TYPE override type of chtype],
[NCURSES_CHTYPE="$withval"],
- [NCURSES_CHTYPE=auto])
+ [NCURSES_CHTYPE=$cf_dft_chtype])
AC_MSG_RESULT($NCURSES_CHTYPE)
### use option --with-ospeed to override ospeed's type
@@ -866,7 +1057,7 @@ AC_MSG_CHECKING(for type of mmask_t)
AC_ARG_WITH(mmask-t,
[ --with-mmask-t=TYPE override type of mmask_t],
[NCURSES_MMASK_T="$withval"],
- [NCURSES_MMASK_T=auto])
+ [NCURSES_MMASK_T=$cf_dft_mmask_t])
AC_MSG_RESULT($NCURSES_MMASK_T)
### use option --with-ccharw-max to override CCHARW_MAX size
@@ -878,12 +1069,27 @@ AC_ARG_WITH(ccharw-max,
AC_MSG_RESULT($NCURSES_CCHARW_MAX)
AC_SUBST(NCURSES_CCHARW_MAX)
+AC_CHECK_SIZEOF([signed char], 0)
+if test "$ac_cv_sizeof_signed_char" = 1 ; then
+ NCURSES_SBOOL="signed char"
+else
+ NCURSES_SBOOL="char"
+fi
+AC_MSG_CHECKING(if you want to use signed Boolean array in term.h)
+AC_ARG_ENABLE(signed-char,
+ [ --enable-signed-char compile using signed Boolean's in term.h],
+ [with_signed_char=$enableval],
+ [with_signed_char=no])
+AC_MSG_RESULT($with_signed_char)
+test "x$with_signed_char" != xyes && NCURSES_SBOOL="char"
+AC_SUBST(NCURSES_SBOOL)
+
### use option --with-tparm-arg to override tparm's argument type
AC_MSG_CHECKING(for type of tparm args)
AC_ARG_WITH(tparm-arg,
[ --with-tparm-arg=TYPE override parameter type of tparm],
[NCURSES_TPARM_ARG="$withval"],
- [NCURSES_TPARM_ARG=long])
+ [NCURSES_TPARM_ARG=$cf_dft_tparm_arg])
AC_MSG_RESULT($NCURSES_TPARM_ARG)
AC_SUBST(NCURSES_TPARM_ARG)
@@ -897,7 +1103,7 @@ AC_MSG_RESULT($with_rcs_ids)
test "x$with_rcs_ids" = xyes && AC_DEFINE(USE_RCS_IDS,1,[Define to 1 to compile-in RCS identifiers])
###############################################################################
-CF_MAN_PAGES([ captoinfo clear infocmp infotocap tabs tic toe tput tset ])
+CF_MAN_PAGES([ captoinfo clear infocmp infotocap reset tabs tic toe tput tset ])
###############################################################################
CF_HELP_MESSAGE(Extensions:)
@@ -911,18 +1117,20 @@ AC_ARG_ENABLE(ext-funcs,
AC_MSG_RESULT($with_ext_funcs)
if test "x$with_ext_funcs" = xyes ; then
NCURSES_EXT_FUNCS=1
- AC_DEFINE(HAVE_ASSUME_DEFAULT_COLORS,1,[Define to 1 to enable assume_default_colors() function])
- AC_DEFINE(HAVE_CURSES_VERSION,1,[Define to 1 to enable curses_version() function])
- AC_DEFINE(HAVE_HAS_KEY,1,[Define to 1 to enable has_key() function])
- AC_DEFINE(HAVE_RESIZETERM,1,[Define to 1 to enable resizeterm() function])
- AC_DEFINE(HAVE_RESIZE_TERM,1,[Define to 1 to enable resize_term() function])
- AC_DEFINE(HAVE_TERM_ENTRY_H,1,[Define to 1 to enable term_entry() function])
- AC_DEFINE(HAVE_USE_DEFAULT_COLORS,1,[Define to 1 to enable use_default_colors() function])
- AC_DEFINE(HAVE_USE_SCREEN,1,[Define to 1 to enable use_screen() function])
- AC_DEFINE(HAVE_USE_WINDOW,1,[Define to 1 to enable use_window() function])
- AC_DEFINE(HAVE_WRESIZE,1,[Define to 1 to enable wresize() function])
AC_DEFINE(NCURSES_EXT_FUNCS,1,[Define to 1 to enable ncurses extended functions])
+ AC_DEFINE(HAVE_ASSUME_DEFAULT_COLORS,1,[Define to 1 to enable assume_default_colors() function in test-programs])
+ AC_DEFINE(HAVE_CURSES_VERSION,1,[Define to 1 to enable curses_version() function in test-programs])
+ AC_DEFINE(HAVE_HAS_KEY,1,[Define to 1 to enable has_key() function in test-programs])
+ AC_DEFINE(HAVE_RESIZETERM,1,[Define to 1 to enable resizeterm() function in test-programs])
+ AC_DEFINE(HAVE_RESIZE_TERM,1,[Define to 1 to enable resize_term() function in test-programs])
+ AC_DEFINE(HAVE_TERM_ENTRY_H,1,[Define to 1 to enable term_entry() function in test-programs])
+ AC_DEFINE(HAVE_USE_DEFAULT_COLORS,1,[Define to 1 to enable use_default_colors() function in test-programs])
+ AC_DEFINE(HAVE_USE_EXTENDED_NAMES,1,[Define to 1 to enable use_extended_names() function in test-programs])
+ AC_DEFINE(HAVE_USE_SCREEN,1,[Define to 1 to enable use_screen() function in test-programs])
+ AC_DEFINE(HAVE_USE_WINDOW,1,[Define to 1 to enable use_window() function in test-programs])
+ AC_DEFINE(HAVE_WRESIZE,1,[Define to 1 to enable wresize() function in test-programs])
GENERATED_EXT_FUNCS=generated
+ test "x$with_ext_funcs" = xyes || cf_dft_ext_spfuncs=no
else
NCURSES_EXT_FUNCS=0
GENERATED_EXT_FUNCS=
@@ -930,15 +1138,16 @@ fi
AC_SUBST(NCURSES_EXT_FUNCS)
AC_SUBST(GENERATED_EXT_FUNCS)
-AC_MSG_CHECKING(if you want to build with experimental SCREEN extensions)
+AC_MSG_CHECKING(if you want to build with SCREEN extensions)
AC_ARG_ENABLE(sp-funcs,
- [ --enable-sp-funcs enable experimental SCREEN-extensions],
+ [ --enable-sp-funcs enable SCREEN-extensions],
[with_sp_funcs=$enableval],
- [with_sp_funcs=no])
+ [with_sp_funcs=$cf_dft_ext_spfuncs])
AC_MSG_RESULT($with_sp_funcs)
if test "x$with_sp_funcs" = xyes ; then
NCURSES_SP_FUNCS=1
- AC_DEFINE(NCURSES_SP_FUNCS,1,[Define to 1 to enable experimental SCREEN-extensions])
+ AC_DEFINE(NCURSES_SP_FUNCS,1,[Define to 1 to enable SCREEN-extensions])
+ AC_DEFINE(HAVE_TPUTS_SP,1,[Define to 1 to enable tputs_sp() function in test-programs])
GENERATED_SP_FUNCS=generated
else
NCURSES_SP_FUNCS=0
@@ -947,14 +1156,17 @@ fi
AC_SUBST(NCURSES_SP_FUNCS)
AC_SUBST(GENERATED_SP_FUNCS)
-AC_MSG_CHECKING(if you want to build with experimental terminal-driver)
+AC_MSG_CHECKING(if you want to build with terminal-driver)
AC_ARG_ENABLE(term-driver,
- [ --enable-term-driver enable experimental terminal-driver],
+ [ --enable-term-driver enable terminal-driver],
[with_term_driver=$enableval],
[with_term_driver=no])
AC_MSG_RESULT($with_term_driver)
if test "x$with_term_driver" = xyes ; then
- AC_DEFINE(USE_TERM_DRIVER,1,[Define to 1 to enable experimental terminal-driver])
+ AC_DEFINE(USE_TERM_DRIVER,1,[Define to 1 to enable terminal-driver])
+ if test "x$with_termlib" != xno ; then
+ AC_MSG_ERROR(The term-driver option conflicts with the termlib option)
+ fi
if test "x$with_sp_funcs" != xyes ; then
AC_MSG_ERROR(The term-driver option relies upon sp-funcs)
fi
@@ -965,7 +1177,7 @@ AC_MSG_CHECKING(for extended use of const keyword)
AC_ARG_ENABLE(const,
[ --enable-const compile with extra/non-standard const],
[with_ext_const=$enableval],
- [with_ext_const=no])
+ [with_ext_const=$cf_dft_ext_const])
AC_MSG_RESULT($with_ext_const)
NCURSES_CONST='/*nothing*/'
if test "x$with_ext_const" = xyes ; then
@@ -978,18 +1190,21 @@ AC_MSG_CHECKING(if you want to use extended colors)
AC_ARG_ENABLE(ext-colors,
[ --enable-ext-colors compile for 256-color support],
[with_ext_colors=$enableval],
- [with_ext_colors=no])
+ [with_ext_colors=$cf_dft_ext_colors])
AC_MSG_RESULT($with_ext_colors)
NCURSES_EXT_COLORS=0
if test "x$with_ext_colors" = xyes ; then
if test "x$with_widec" != xyes ; then
- AC_MSG_ERROR(This option applies only to wide-character library)
+ AC_MSG_WARN(This option applies only to wide-character library)
else
# cannot be ABI 5 since it changes sizeof(cchar_t)
CF_NCURSES_ABI_6
+ NCURSES_EXT_COLORS=1
+ AC_DEFINE(NCURSES_EXT_COLORS,1,[Define to 1 to compile for 256-color support])
+ AC_DEFINE(HAVE_ALLOC_PAIR,1,[Define to 1 to enable alloc_pair() function])
+ AC_DEFINE(HAVE_INIT_EXTENDED_COLOR,1,[Define to 1 to enable init_extended_color() function in test-programs])
+ AC_DEFINE(HAVE_RESET_COLOR_PAIRS,1,[Define to 1 to enable reset_color_pairs() function in test-programs])
fi
- NCURSES_EXT_COLORS=1
- AC_DEFINE(NCURSES_EXT_COLORS,1,[Define to 1 to compile for 256-color support])
fi
AC_SUBST(NCURSES_EXT_COLORS)
@@ -998,7 +1213,7 @@ AC_MSG_CHECKING(if you want to use extended mouse encoding)
AC_ARG_ENABLE(ext-mouse,
[ --enable-ext-mouse compile for extended mouse-encoding],
[with_ext_mouse=$enableval],
- [with_ext_mouse=no])
+ [with_ext_mouse=$cf_dft_ext_mouse])
AC_MSG_RESULT($with_ext_mouse)
NCURSES_MOUSE_VERSION=1
if test "x$with_ext_mouse" = xyes ; then
@@ -1007,6 +1222,17 @@ if test "x$with_ext_mouse" = xyes ; then
fi
AC_SUBST(NCURSES_MOUSE_VERSION)
+### use option --enable-ext-putwin to turn on extended screendumps
+AC_MSG_CHECKING(if you want to use extended putwin/screendump)
+AC_ARG_ENABLE(ext-putwin,
+ [ --enable-ext-putwin compile with extended putwin/screendump],
+ [with_ext_putwin=$enableval],
+ [with_ext_putwin=$cf_dft_ext_putwin])
+AC_MSG_RESULT($with_ext_putwin)
+if test "x$with_ext_putwin" = xyes ; then
+ AC_DEFINE(NCURSES_EXT_PUTWIN,1,[Define to 1 to compile with extended putwin/screendump])
+fi
+
AC_MSG_CHECKING(if you want \$NCURSES_NO_PADDING code)
AC_ARG_ENABLE(no-padding,
[ --enable-no-padding compile with $NCURSES_NO_PADDING code],
@@ -1015,21 +1241,6 @@ AC_ARG_ENABLE(no-padding,
AC_MSG_RESULT($with_no_padding)
test "x$with_no_padding" = xyes && AC_DEFINE(NCURSES_NO_PADDING,1,[Define to 1 to compile with $NCURSES_NO_PADDING code])
-AC_CHECK_SIZEOF([signed char], 0)
-if test "$ac_cv_sizeof_signed_char" = 1 ; then
- NCURSES_SBOOL="signed char"
-else
- NCURSES_SBOOL="char"
-fi
-AC_MSG_CHECKING(if you want to use signed Boolean array in term.h)
-AC_ARG_ENABLE(signed-char,
- [ --enable-signed-char compile using signed Boolean's in term.h],
- [with_signed_char=$enableval],
- [with_signed_char=no])
-AC_MSG_RESULT($with_signed_char)
-test "x$with_signed_char" != xyes && NCURSES_SBOOL="char"
-AC_SUBST(NCURSES_SBOOL)
-
### use option --enable-sigwinch to turn on use of SIGWINCH logic
AC_MSG_CHECKING(if you want SIGWINCH handler)
AC_ARG_ENABLE(sigwinch,
@@ -1050,76 +1261,8 @@ NCURSES_XNAMES=0
test "x$with_tcap_names" = xyes && NCURSES_XNAMES=1
AC_SUBST(NCURSES_XNAMES)
-###############################################################################
-# These options are relatively safe to experiment with.
-CF_HELP_MESSAGE(Development Code:)
-AC_MSG_CHECKING(if you want all development code)
-AC_ARG_WITH(develop,
- [ --without-develop disable development options],
- [with_develop=$withval],
- [with_develop=no])
-AC_MSG_RESULT($with_develop)
-
-### use option --enable-hard-tabs to turn on use of hard-tabs optimize
-AC_MSG_CHECKING(if you want hard-tabs code)
-AC_ARG_ENABLE(hard-tabs,
- [ --enable-hard-tabs compile with hard-tabs code],,
- [enable_hard_tabs=$with_develop])
-AC_MSG_RESULT($enable_hard_tabs)
-test "x$enable_hard_tabs" = xyes && AC_DEFINE(USE_HARD_TABS,1,[Define to 1 to compile with hard-tabs code])
-
-### use option --enable-xmc-glitch to turn on use of magic-cookie optimize
-AC_MSG_CHECKING(if you want limited support for xmc)
-AC_ARG_ENABLE(xmc-glitch,
- [ --enable-xmc-glitch compile with support for xmc (magic-cookie)],,
- [enable_xmc_glitch=$with_develop])
-AC_MSG_RESULT($enable_xmc_glitch)
-test "x$enable_xmc_glitch" = xyes && AC_DEFINE(USE_XMC_SUPPORT,1,[Define to 1 to compile with support for xmc (magic-cookie)])
-
-###############################################################################
-# These are just experimental, probably should not be in a package:
-CF_HELP_MESSAGE(Experimental Code:)
-
-AC_MSG_CHECKING(if you do not want to assume colors are white-on-black)
-AC_ARG_ENABLE(assumed-color,
- [ --disable-assumed-color do not assume anything about default-colors],
- [with_assumed_color=$enableval],
- [with_assumed_color=yes])
-AC_MSG_RESULT($with_assumed_color)
-test "x$with_assumed_color" = xyes && AC_DEFINE(USE_ASSUMED_COLOR,1,[Define to 1 to assume things about default-colors])
-
-### 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,
- [ --disable-hashmap compile without hashmap scrolling-optimization],
- [with_hashmap=$enableval],
- [with_hashmap=yes])
-AC_MSG_RESULT($with_hashmap)
-test "x$with_hashmap" = xyes && AC_DEFINE(USE_HASHMAP,1,[Define to 1 to compile with hashmap scrolling-optimization])
-
-### use option --enable-colorfgbg to turn on use of $COLORFGBG environment
-AC_MSG_CHECKING(if you want colorfgbg code)
-AC_ARG_ENABLE(colorfgbg,
- [ --enable-colorfgbg compile-in experimental $COLORFGBG code],
- [with_colorfgbg=$enableval],
- [with_colorfgbg=no])
-AC_MSG_RESULT($with_colorfgbg)
-test "x$with_colorfgbg" = xyes && AC_DEFINE(USE_COLORFGBG,1,[Define to 1 to compile-in experimental $COLORFGBG code])
-
-### use option --enable-interop to turn on use of bindings used for interop
-AC_MSG_CHECKING(if you want interop bindings)
-AC_ARG_ENABLE(interop,
- [ --enable-interop compile-in experimental interop bindings],
- [with_exp_interop=$enableval],
- [with_exp_interop=no])
-AC_MSG_RESULT($with_exp_interop)
-
-NCURSES_INTEROP_FUNCS=0
-test "x$with_exp_interop" = xyes && NCURSES_INTEROP_FUNCS=1
-AC_SUBST(NCURSES_INTEROP_FUNCS)
-
-# This is still experimental (20080329), but should ultimately be moved to
-# the script-block --with-normal, etc.
+##############################################################################
+CF_HELP_MESSAGE(Reentrant Code:)
CF_WITH_PTHREAD
if test "x$with_pthread" != xno; then
@@ -1153,11 +1296,12 @@ fi
PTHREAD=
if test "x$with_pthread" = "xyes" ; then
- AC_DEFINE(USE_PTHREADS,1,[Define to 1 to use pthreads feature])
- enable_reentrant=yes
- if test "x$cf_cv_weak_symbols" = xyes ; then
- PTHREAD=-lpthread
- fi
+ AC_DEFINE(USE_PTHREADS,1,[Define to 1 to use pthreads feature])
+ enable_reentrant=yes
+ if test "x$cf_cv_weak_symbols" = xyes ; then
+ PTHREAD=-lpthread
+ CF_ADD_LIB(pthread,PRIVATE_LIBS)
+ fi
fi
AC_SUBST(PTHREAD)
@@ -1165,47 +1309,93 @@ AC_SUBST(PTHREAD)
# opaque outside of that, so there is no --enable-opaque option. We can use
# this option without --with-pthreads, but this will be always set for
# pthreads.
-AC_MSG_CHECKING(if you want experimental reentrant code)
+AC_MSG_CHECKING(if you want reentrant code)
AC_ARG_ENABLE(reentrant,
- [ --enable-reentrant compile with experimental reentrant code],
+ [ --enable-reentrant compile with reentrant code],
[with_reentrant=$enableval],
[with_reentrant=no])
AC_MSG_RESULT($with_reentrant)
if test "x$with_reentrant" = xyes ; then
cf_cv_enable_reentrant=1
cf_cv_enable_opaque="NCURSES_INTERNALS"
- NCURSES_OPAQUE=1
NCURSES_SIZE_T=int
if test "x$cf_cv_weak_symbols" = xyes ; then
CF_REMOVE_LIB(LIBS,$LIBS,pthread)
CF_ADD_LIB(pthread,TEST_LIBS)
CF_ADD_LIB(pthread,TEST_LIBS2)
+ CF_ADD_LIB(pthread,PRIVATE_LIBS)
else
# when not using weak symbols but with_reentrant,
# add 't' to the library suffix on all platforms
# except cygwin, where we only do that if ALSO
# compiling with full thread support.
case "$host" in
- *cygwin* | *msys*)
+ (*cygwin* | *msys*)
if test "$with_pthread" = "yes" ; then
- LIB_SUFFIX="t${LIB_SUFFIX}"
+ if test "x$disable_lib_suffixes" = "xno" ; then
+ LIB_SUFFIX="t${LIB_SUFFIX}"
+ fi
fi ;;
- * ) LIB_SUFFIX="t${LIB_SUFFIX}" ;;
+ (*)
+ if test "x$disable_lib_suffixes" = "xno" ; then
+ LIB_SUFFIX="t${LIB_SUFFIX}"
+ fi
+ ;;
esac
fi
- AC_DEFINE(USE_REENTRANT,1,[Define to 1 to use experimental reentrant feature])
+ AC_DEFINE(USE_REENTRANT,1,[Define to 1 to use reentrant feature])
CF_NCURSES_ABI_6
else
cf_cv_enable_reentrant=0
cf_cv_enable_opaque="NCURSES_OPAQUE"
- NCURSES_OPAQUE=0
NCURSES_SIZE_T=short
fi
AC_SUBST(cf_cv_enable_reentrant)
AC_SUBST(cf_cv_enable_opaque)
-AC_SUBST(NCURSES_OPAQUE)
+
AC_SUBST(NCURSES_SIZE_T)
+AC_MSG_CHECKING(if you want opaque curses-library structures)
+CF_ARG_ENABLE(opaque-curses,
+ [ --enable-opaque-curses make curses WINDOW, etc., "opaque"],
+ [enable_opaque_curses=yes],[
+ test "$cf_cv_enable_reentrant" = 1 && enable_opaque_curses=yes
+ test "$cf_cv_enable_reentrant" = 1 || enable_opaque_curses=no
+ ])
+AC_MSG_RESULT($enable_opaque_curses)
+
+test "$cf_cv_enable_reentrant" = 1 && \
+test "$enable_opaque_curses" = no && \
+AC_MSG_ERROR(reentrant configuration requires opaque library)
+
+AC_MSG_CHECKING(if you want opaque form-library structures)
+AC_ARG_ENABLE(opaque-form,
+ [ --enable-opaque-form make form-library structures "opaque"],
+ [enable_opaque_form=yes],[enable_opaque_form=no])
+AC_MSG_RESULT($enable_opaque_form)
+
+AC_MSG_CHECKING(if you want opaque menu-library structures)
+AC_ARG_ENABLE(opaque-menu,
+ [ --enable-opaque-menu make menu-library structures "opaque"],
+ [enable_opaque_menu=yes],[enable_opaque_menu=no])
+AC_MSG_RESULT($enable_opaque_menu)
+
+AC_MSG_CHECKING(if you want opaque panel-library structures)
+AC_ARG_ENABLE(opaque-panel,
+ [ --enable-opaque-panel make panel-library structures "opaque"],
+ [enable_opaque_panel=yes],[enable_opaque_panel=no])
+AC_MSG_RESULT($enable_opaque_panel)
+
+NCURSES_OPAQUE=0; test "$enable_opaque_curses" = yes && NCURSES_OPAQUE=1
+NCURSES_OPAQUE_FORM=0; test "$enable_opaque_form" = yes && NCURSES_OPAQUE_FORM=1
+NCURSES_OPAQUE_MENU=0; test "$enable_opaque_menu" = yes && NCURSES_OPAQUE_MENU=1
+NCURSES_OPAQUE_PANEL=0; test "$enable_opaque_panel" = yes && NCURSES_OPAQUE_PANEL=1
+
+AC_SUBST(NCURSES_OPAQUE)
+AC_SUBST(NCURSES_OPAQUE_FORM)
+AC_SUBST(NCURSES_OPAQUE_MENU)
+AC_SUBST(NCURSES_OPAQUE_PANEL)
+
### Allow using a different wrap-prefix
if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then
AC_MSG_CHECKING(for prefix used to wrap public variables)
@@ -1220,13 +1410,81 @@ fi
AC_SUBST(NCURSES_WRAP_PREFIX)
AC_DEFINE_UNQUOTED(NCURSES_WRAP_PREFIX,"$NCURSES_WRAP_PREFIX",[Define to override _nc_ prefix])
+###############################################################################
+# These options are relatively safe to experiment with.
+CF_HELP_MESSAGE(Development Code:)
+AC_MSG_CHECKING(if you want all development code)
+AC_ARG_WITH(develop,
+ [ --without-develop disable development options],
+ [with_develop=$withval],
+ [with_develop=no])
+AC_MSG_RESULT($with_develop)
+
+### use option --enable-hard-tabs to turn on use of hard-tabs optimize
+AC_MSG_CHECKING(if you want hard-tabs code)
+AC_ARG_ENABLE(hard-tabs,
+ [ --enable-hard-tabs compile with hard-tabs code],,
+ [enable_hard_tabs=$with_develop])
+AC_MSG_RESULT($enable_hard_tabs)
+test "x$enable_hard_tabs" = xyes && AC_DEFINE(USE_HARD_TABS,1,[Define to 1 to compile with hard-tabs code])
+
+### use option --enable-xmc-glitch to turn on use of magic-cookie optimize
+AC_MSG_CHECKING(if you want limited support for xmc)
+AC_ARG_ENABLE(xmc-glitch,
+ [ --enable-xmc-glitch compile with support for xmc (magic-cookie)],,
+ [enable_xmc_glitch=$with_develop])
+AC_MSG_RESULT($enable_xmc_glitch)
+test "x$enable_xmc_glitch" = xyes && AC_DEFINE(USE_XMC_SUPPORT,1,[Define to 1 to compile with support for xmc (magic-cookie)])
+
+###############################################################################
+# These are just experimental, probably should not be in a package:
+CF_HELP_MESSAGE(Experimental Code:)
+
+AC_MSG_CHECKING(if you do not want to assume colors are white-on-black)
+AC_ARG_ENABLE(assumed-color,
+ [ --disable-assumed-color do not assume anything about default-colors],
+ [with_assumed_color=$enableval],
+ [with_assumed_color=yes])
+AC_MSG_RESULT($with_assumed_color)
+test "x$with_assumed_color" = xyes && AC_DEFINE(USE_ASSUMED_COLOR,1,[Define to 1 to assume things about default-colors])
+
+### 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,
+ [ --disable-hashmap compile without hashmap scrolling-optimization],
+ [with_hashmap=$enableval],
+ [with_hashmap=yes])
+AC_MSG_RESULT($with_hashmap)
+test "x$with_hashmap" = xyes && AC_DEFINE(USE_HASHMAP,1,[Define to 1 to compile with hashmap scrolling-optimization])
+
+### use option --enable-colorfgbg to turn on use of $COLORFGBG environment
+AC_MSG_CHECKING(if you want colorfgbg code)
+AC_ARG_ENABLE(colorfgbg,
+ [ --enable-colorfgbg compile-in experimental $COLORFGBG code],
+ [with_colorfgbg=$enableval],
+ [with_colorfgbg=no])
+AC_MSG_RESULT($with_colorfgbg)
+test "x$with_colorfgbg" = xyes && AC_DEFINE(USE_COLORFGBG,1,[Define to 1 to compile-in experimental $COLORFGBG code])
+
+### use option --enable-interop to turn on use of bindings used for interop
+AC_MSG_CHECKING(if you want interop bindings)
+AC_ARG_ENABLE(interop,
+ [ --enable-interop compile-in interop bindings],
+ [with_exp_interop=$enableval],
+ [with_exp_interop=$cf_dft_interop])
+AC_MSG_RESULT($with_exp_interop)
+
+NCURSES_INTEROP_FUNCS=0
+test "x$with_exp_interop" = xyes && NCURSES_INTEROP_FUNCS=1
+AC_SUBST(NCURSES_INTEROP_FUNCS)
+
+
AC_MSG_CHECKING(if you want experimental safe-sprintf code)
AC_ARG_ENABLE(safe-sprintf,
[ --enable-safe-sprintf compile with experimental safe-sprintf code],
[with_safe_sprintf=$enableval],
[with_safe_sprintf=no])
AC_MSG_RESULT($with_safe_sprintf)
-test "x$with_safe_sprintf" = xyes && AC_DEFINE(USE_SAFE_SPRINTF,1,[Define to 1 to compile with experimental safe-sprintf code])
### use option --disable-scroll-hints to turn off use of scroll-hints scrolling logic
# when hashmap is used scroll hints are useless
@@ -1240,13 +1498,13 @@ AC_MSG_RESULT($with_scroll_hints)
test "x$with_scroll_hints" = xyes && AC_DEFINE(USE_SCROLL_HINTS,1,[Define to 1 to compile without scroll-hints code])
fi
-AC_MSG_CHECKING(if you want experimental wgetch-events code)
+AC_MSG_CHECKING(if you want wgetch-events code)
AC_ARG_ENABLE(wgetch-events,
- [ --enable-wgetch-events compile with experimental wgetch-events code],
+ [ --enable-wgetch-events compile with wgetch-events code],
[with_wgetch_events=$enableval],
[with_wgetch_events=no])
AC_MSG_RESULT($with_wgetch_events)
-test "x$with_wgetch_events" = xyes && AC_DEFINE(NCURSES_WGETCH_EVENTS,1,[Define to 1 to compile with experimental wgetch-events code])
+test "x$with_wgetch_events" = xyes && AC_DEFINE(NCURSES_WGETCH_EVENTS,1,[Define to 1 to compile with wgetch-events code])
###############################################################################
CF_HELP_MESSAGE(Testing/development Options:)
@@ -1262,6 +1520,24 @@ else
fi
AC_SUBST(ECHO_LINK)
+# --disable-stripping is used for debugging
+CF_INSTALL_OPTS
+
+# If we're avoiding relinking of shared libraries during install, that is to
+# avoid modifying the build-tree. For the same reason, avoid doing ranlib if
+# the install program has "-p" (for preserving timestamps).
+cf_cv_do_reranlib=yes
+if test "x$cf_cv_install_p" = xyes
+then
+ if test "x$cf_cv_do_relink" != xyes
+ then
+ cf_cv_do_reranlib=no
+ INSTALL_OPT_P="-p"
+ INSTALL_LIB="$INSTALL_LIB $INSTALL_OPT_P"
+ fi
+fi
+AC_SUBST(INSTALL_OPT_P)
+
### use option --enable-warnings to turn on all gcc warnings
AC_MSG_CHECKING(if you want to see compiler warnings)
AC_ARG_ENABLE(warnings,
@@ -1314,7 +1590,7 @@ AC_ARG_ENABLE(macros,
# extended to all models of the ncurses library:
cf_all_traces=no
case "$CFLAGS $CPPFLAGS" in
-*-DTRACE*)
+(*-DTRACE*)
cf_all_traces=yes
;;
esac
@@ -1330,6 +1606,7 @@ if test "x$cf_with_trace" = xyes ; then
LIB_TRACING=all
ADA_TRACE=TRUE
CF_ADD_CFLAGS(-DTRACE)
+ AC_DEFINE(HAVE__TRACEF,1,[Define to 1 if we have _tracef function])
else
LIB_TRACING=DEBUG
ADA_TRACE=FALSE
@@ -1337,11 +1614,15 @@ fi
AC_SUBST(ADA_TRACE)
+CF_DISABLE_GNAT_PROJECTS
+
### Checks for libraries.
-case $cf_cv_system_name in #(vi
-*mingw32*) #(vi
+case $cf_cv_system_name in
+(*mingw32*|*mingw64*)
+ CPPFLAGS="$CPPFLAGS -DWINVER=0x0501 -DWIN32_LEAN_AND_MEAN"
+ # Note: WINVER may be a problem with Windows 10
;;
-*)
+(*)
AC_CHECK_FUNC(gettimeofday,
AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]),[
@@ -1382,6 +1663,14 @@ wctype.h \
CF_GETOPT_HEADER
+CF_CHECK_ENVIRON(environ)
+CF_CHECK_GETENV
+if test "x$cf_cv_consistent_getenv" = xno && \
+ test "x$cf_with_trace" = xyes
+then
+ AC_MSG_WARN(The NCURSES_TRACE environment variable is not supported with this configuration)
+fi
+
# check for ISC (this may also define _POSIX_SOURCE)
# Note: even non-Posix ISC needs <sys/bsdtypes.h> to declare fd_set
if test "x$ISC" = xyes ; then
@@ -1428,8 +1717,10 @@ AC_CHECK_FUNCS( \
getcwd \
getegid \
geteuid \
+getopt \
getttynam \
issetugid \
+localeconv \
poll \
putenv \
remove \
@@ -1442,10 +1733,28 @@ sigaction \
sigvec \
strdup \
strstr \
+sysconf \
tcgetpgrp \
times \
+tsearch \
vsnprintf \
)
+
+if test "x$ac_cv_func_getopt" = xno && \
+ test "x$cf_with_progs$cf_with_tests" != xnono; then
+ AC_MSG_ERROR(getopt is required for building programs)
+fi
+
+if test "x$with_safe_sprintf" = xyes
+then
+ if test "x$ac_cv_func_vsnprintf" = xyes
+ then
+ AC_MSG_WARN(will use vsnprintf instead of safe-sprintf option)
+ else
+ AC_DEFINE(USE_SAFE_SPRINTF,1,[Define to 1 to compile with experimental safe-sprintf code])
+ fi
+fi
+
if test "x$with_getcap" = "xyes" ; then
CF_CGETENT
fi
@@ -1467,21 +1776,23 @@ else
AC_FUNC_SETVBUF_REVERSED
fi
AC_CHECK_TYPE(intptr_t, long)
+AC_CHECK_TYPE(ssize_t, int)
CF_TYPE_SIGACTION
CF_SIZECHANGE
CF_FUNC_MEMMOVE
CF_FUNC_POLL
CF_VA_COPY
AC_FUNC_VFORK
+CF_FOPEN_BIN_R
# special check for test/ditto.c
CF_FUNC_OPENPTY
if test "$cf_cv_func_openpty" != no ; then
- AC_DEFINE_UNQUOTED(USE_OPENPTY_HEADER,<$cf_cv_func_openpty>,[Define to actual header for openpty function])
- AC_DEFINE(USE_XTERM_PTY,1,[Define to 1 if we should assume xterm pseudoterminal interface])
- if test "x$cf_cv_lib_util" = xyes ; then
- CF_ADD_LIB(util,TEST_LIBS)
- fi
+ AC_DEFINE_UNQUOTED(USE_OPENPTY_HEADER,<$cf_cv_func_openpty>,[Define to actual header for openpty function])
+ AC_DEFINE(USE_XTERM_PTY,1,[Define to 1 if we should assume xterm pseudoterminal interface])
+ if test "x$cf_cv_lib_util" = xyes ; then
+ CF_ADD_LIB(util,TEST_LIBS)
+ fi
fi
AC_SUBST(TEST_LIBS)
AC_SUBST(TEST_LIBS2)
@@ -1504,16 +1815,16 @@ CF_BOOL_DECL(cf_cv_cc_bool_type)
if test -n "$CXX" ; then
AC_LANG_CPLUSPLUS
CF_STDCPP_LIBRARY
- CF_PROG_CC_C_O(CXX)
+ CF_PROG_CC_C_O(CXX,[$CXXFLAGS $CPPFLAGS])
case $GXX_VERSION in
- 1*|2.[0-6]*)
+ (1*|2.[0-6]*)
cf_cxx_library=yes
;;
- *-2.7*|2.7*)
+ (*-2.7*|2.7*)
CF_GPP_LIBRARY
;;
- *)
+ (*)
cf_cxx_library=no
;;
esac
@@ -1547,9 +1858,9 @@ else
CF_BOOL_SIZE
else
AC_MSG_CHECKING(for fallback type of bool)
- case "$host_cpu" in #(vi
- i?86) cf_cv_type_of_bool=char ;; #(vi
- *) cf_cv_type_of_bool=int ;;
+ case "$host_cpu" in
+ (i?86) cf_cv_type_of_bool=char ;;
+ (*) cf_cv_type_of_bool=int ;;
esac
AC_MSG_RESULT($cf_cv_type_of_bool)
fi
@@ -1577,7 +1888,7 @@ else
fi
AC_SUBST(USE_CXX_BOOL)
-CF_HELP_MESSAGE(Ada95 Binding Options:)
+CF_HELP_MESSAGE(Ada Binding Options:)
dnl If the Ada95 source-tree is present, add that to the build unless it will
dnl not work, or was not requested.
@@ -1594,16 +1905,17 @@ dnl libtool -TD 20070714
fi
dnl Check for availability of GNU Ada Translator (GNAT).
-dnl At the moment we support no other Ada95 compiler.
+dnl At the moment we support no other Ada compiler.
if test "$cf_with_ada" != "no" ; then
CF_PROG_GNAT
if test "x$cf_cv_prog_gnat_correct" = xyes; then
CF_ADD_ADAFLAGS(-gnatpn)
CF_FIXUP_ADAFLAGS
+ CF_GNATPREP_OPT_T
+
CF_GNAT_GENERICS
CF_GNAT_SIGINT
- CF_GNAT_PRAGMA_UNREF
CF_GNAT_PROJECTS
CF_WITH_ADA_COMPILER
@@ -1614,6 +1926,9 @@ dnl At the moment we support no other Ada95 compiler.
CF_WITH_ADA_INCLUDE
CF_WITH_ADA_OBJECTS
CF_WITH_ADA_SHAREDLIB
+
+ # allow the Ada binding to be renamed
+ CF_WITH_ADA_LIBNAME(AdaCurses)
fi
fi
else
@@ -1662,11 +1977,12 @@ LIB_SUBSETS="${LIB_SUBSETS}base"
# base library (so it resides in base).
if test "$with_term_driver" != no ; then
LIB_SUBSETS="${LIB_SUBSETS}+port_drivers"
- case $cf_cv_system_name in #(vi
- *mingw32*) #(vi
+ case $cf_cv_system_name in
+ (*mingw32*|*mingw64*)
LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32con"
+ CPPFLAGS="$CPPFLAGS -DUSE_WIN32CON_DRIVER"
;;
- *) #(vi
+ (*)
LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo"
;;
esac
@@ -1729,23 +2045,37 @@ if test "x$with_dlsym" = xyes ; then
CF_REMOVE_LIB(TINFO_LIST,$SHLIB_LIST,dl)
fi
+USE_ARG_SUFFIX="${DFT_ARG_SUFFIX}${EXTRA_SUFFIX}"
+USE_LIB_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}"
+USE_CFG_SUFFIX=${DFT_ARG_SUFFIX}${cf_cv_abi_version}
+if test -n "$EXTRA_SUFFIX" && test "x$EXTRA_SUFFIX" != "x${cf_cv_abi_version}"
+then
+ USE_CFG_SUFFIX="${USE_CFG_SUFFIX}${EXTRA_SUFFIX}"
+fi
+AC_SUBST(USE_ARG_SUFFIX)
+AC_SUBST(USE_CFG_SUFFIX)
+AC_SUBST(USE_LIB_SUFFIX)
+
if test "$with_ticlib" != no ; then
if test "x$with_ticlib" != xyes ; then
TICS_NAME=$with_ticlib
- TICS_ARG_SUFFIX="${with_ticlib}`echo ${DFT_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
+ TICS_SUFFIX="`echo ${DFT_LIB_SUFFIX}|sed -e "s/^${USE_LIB_SUFFIX}//"`"
+ TICS_ARG_SUFFIX="${with_ticlib}`echo ${USE_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
TICS_DEP_SUFFIX="${with_ticlib}`echo ${DFT_DEP_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
TICS_LIB_SUFFIX="${with_ticlib}"
else
- TICS_ARG_SUFFIX="${TICS_NAME}${DFT_ARG_SUFFIX}"
+ TICS_SUFFIX=${DFT_LIB_SUFFIX}
+ TICS_ARG_SUFFIX="${TICS_NAME}${USE_ARG_SUFFIX}"
TICS_DEP_SUFFIX="${TICS_NAME}${DFT_DEP_SUFFIX}"
- TICS_LIB_SUFFIX="${TICS_NAME}${LIB_SUFFIX}"
+ TICS_LIB_SUFFIX="${TICS_NAME}${USE_LIB_SUFFIX}"
fi
TICS_LDFLAGS="-L${LIB_DIR}"
- TICS_LIBS="-l${TICS_LIB_SUFFIX}"
+ TICS_LIBS="-l${TICS_ARG_SUFFIX}"
else
+ TICS_SUFFIX=${DFT_LIB_SUFFIX}
TICS_LDFLAGS="-L${LIB_DIR}"
- TICS_LIBS="-l${LIB_NAME}${DFT_ARG_SUFFIX}"
+ TICS_LIBS="-l${LIB_NAME}${USE_ARG_SUFFIX}"
fi
AC_SUBST(TICS_ARG_SUFFIX)
AC_SUBST(TICS_DEP_SUFFIX)
@@ -1757,15 +2087,15 @@ if test "$with_termlib" != no ; then
if test "x$with_termlib" != xyes ; then
TINFO_NAME=$with_termlib
- TINFO_SUFFIX="`echo ${DFT_LIB_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
- TINFO_ARG_SUFFIX="${with_termlib}`echo ${DFT_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
+ TINFO_SUFFIX="`echo ${DFT_LIB_SUFFIX}|sed -e "s/^${USE_LIB_SUFFIX}//"`"
+ TINFO_ARG_SUFFIX="${with_termlib}`echo ${USE_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
TINFO_DEP_SUFFIX="${with_termlib}`echo ${DFT_DEP_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
TINFO_LIB_SUFFIX="${with_termlib}"
else
TINFO_SUFFIX=${DFT_LIB_SUFFIX}
- TINFO_ARG_SUFFIX="${TINFO_NAME}${DFT_ARG_SUFFIX}"
+ TINFO_ARG_SUFFIX="${TINFO_NAME}${USE_ARG_SUFFIX}"
TINFO_DEP_SUFFIX="${TINFO_NAME}${DFT_DEP_SUFFIX}"
- TINFO_LIB_SUFFIX="${TINFO_NAME}${LIB_SUFFIX}"
+ TINFO_LIB_SUFFIX="${TINFO_NAME}${USE_LIB_SUFFIX}"
fi
TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}"
@@ -1781,9 +2111,9 @@ if test "$with_termlib" != no ; then
TEST_ARGS="-l${TINFO_ARG_SUFFIX}"
TEST_ARG2="-l${TINFO_ARG_SUFFIX}"
if test "x$with_term_driver" != xno ; then
- TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${DFT_ARG_SUFFIX}"
- TICS_LIBS="$TICS_LIBS -l${LIB_NAME}${DFT_ARG_SUFFIX}"
- TINFO_LIBS="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARGS"
+ TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${USE_ARG_SUFFIX}"
+ TICS_LIBS="$TICS_LIBS -l${LIB_NAME}${USE_ARG_SUFFIX}"
+ TINFO_LIBS="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARGS"
else
TICS_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}"
TINFO_LIBS="$TEST_ARGS"
@@ -1795,20 +2125,20 @@ else
# the next lines are needed for linking libtic over libncurses
TINFO_NAME=${LIB_NAME}
TINFO_SUFFIX=${DFT_LIB_SUFFIX}
- TINFO_ARG_SUFFIX=${LIB_NAME}${DFT_ARG_SUFFIX}
+ TINFO_ARG_SUFFIX=${LIB_NAME}${USE_ARG_SUFFIX}
if test "x$with_tic_depends" = xyes ; then
- TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${DFT_ARG_SUFFIX}"
+ TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${USE_ARG_SUFFIX}"
else
TICS_LIST="$SHLIB_LIST"
fi
TINFO_LDFLAGS="-L${LIB_DIR}"
- TINFO_LIBS="-l${LIB_NAME}${DFT_ARG_SUFFIX}"
+ TINFO_LIBS="-l${LIB_NAME}${USE_ARG_SUFFIX}"
fi
if test "$DFT_LWR_MODEL" = shared ; then
- case $cf_cv_system_name in #(vi
- cygwin*|msys*)
+ case $cf_cv_system_name in
+ (cygwin*|msys*)
# "lib" files have ".dll.a" suffix, "cyg"or "msys-" files have ".dll"
TINFO_SUFFIX=.dll
;;
@@ -1826,7 +2156,7 @@ if test "x$with_dlsym" = xyes ; then
fi
if test "$DFT_LWR_MODEL" = "libtool"; then
- OBJEXT=lo
+ OBJEXT=lo
fi
# needed for Ada95
@@ -1834,7 +2164,7 @@ TINFO_LDFLAGS2=`echo "$TINFO_LDFLAGS" | sed -e 's,-L\.\./,-L../../,'`
AC_SUBST(TINFO_LDFLAGS2)
case $DFT_LWR_MODEL in
-normal|debug|profile)
+(normal|debug|profile)
CF_LDFLAGS_STATIC
;;
esac
@@ -1846,7 +2176,7 @@ if test "$with_overwrite" = no && \
( test "x$includedir" = 'x${prefix}/include' || \
test "x$includedir" = "x${prefix}/include" )
then
- includesubdir="/ncurses${LIB_SUFFIX}"
+ includesubdir="/ncurses${USE_LIB_SUFFIX}"
fi
AC_MSG_RESULT(${includedir}${includesubdir})
@@ -1878,14 +2208,15 @@ AC_DEFINE(HAVE_SLK_COLOR,1,[Define to 1 if we have slk_color for test-programs])
CF_SRC_MODULES($modules_to_build)
if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = "xyes"; then
- SUB_MAKEFILES="$SUB_MAKEFILES Ada95/gen/adacurses${DFT_ARG_SUFFIX}-config:Ada95/gen/adacurses-config.in"
- SUB_MAKEFILES="$SUB_MAKEFILES man/adacurses${DFT_ARG_SUFFIX}-config.1:man/MKada_config.in"
+ SUB_MAKEFILES="$SUB_MAKEFILES Ada95/src/library.gpr:Ada95/src/library.gpr.in"
+ SUB_MAKEFILES="$SUB_MAKEFILES Ada95/gen/adacurses${USE_CFG_SUFFIX}-config:Ada95/gen/adacurses-config.in"
+ SUB_MAKEFILES="$SUB_MAKEFILES man/adacurses${USE_CFG_SUFFIX}-config.1:man/MKada_config.in"
fi
CF_DIRS_TO_MAKE
# symbols that differ when compiling Ada95 by itself.
-NCURSES_SHLIB2='sh $(top_srcdir)/misc/shlib'
+NCURSES_SHLIB2=$SHELL' $(top_srcdir)/misc/shlib'
AC_SUBST(NCURSES_SHLIB2)
# values to use as strings
@@ -1898,6 +2229,7 @@ CF_ADD_CFLAGS($EXTRA_CFLAGS)
### Define substitutions for header files to avoid name-pollution
CF_SUBST_IF(["x$cf_cv_have_tcgetattr" = xyes], HAVE_TCGETATTR, 1, 0)
+CF_SUBST_IF(["x$ac_cv_header_stdint_h" = xyes], HAVE_STDINT_H, 1, 0)
CF_SUBST_IF(["x$ac_cv_header_termio_h" = xyes], HAVE_TERMIO_H, 1, 0)
CF_SUBST_IF(["x$ac_cv_header_termios_h" = xyes], HAVE_TERMIOS_H, 1, 0)
@@ -1906,27 +2238,13 @@ test "x$use_database" = xyes && \
SUB_MAKEFILES="$SUB_MAKEFILES misc/run_tic.sh:misc/run_tic.in"
SUB_MAKEFILES="$SUB_MAKEFILES misc/ncurses-config:misc/ncurses-config.in"
-SUB_MAKEFILES="$SUB_MAKEFILES man/ncurses${DFT_ARG_SUFFIX}${cf_cv_abi_version}-config.1:man/MKncu_config.in"
+SUB_MAKEFILES="$SUB_MAKEFILES man/ncurses${USE_CFG_SUFFIX}-config.1:man/MKncu_config.in"
-if test "x$enable_pc_files" = xyes ; then \
+if test "x$enable_pc_files" = xyes && test -z "$MAKE_PC_FILES" ; then
SUB_MAKEFILES="$SUB_MAKEFILES misc/gen-pkgconfig:misc/gen-pkgconfig.in"
-MAKE_PC_FILES=
-else
-MAKE_PC_FILES="#"
fi
-AC_SUBST(MAKE_PC_FILES)
AC_SUBST(cross_compiling)
-AC_PATH_PROG(TIC_PATH,tic,unknown,$PATH:/usr/local/ncurses/bin)
-if test -n "$FALLBACK_LIST"
-then
- if test "$TIC_PATH" = unknown
- then
- AC_MSG_WARN(no tic program found for fallbacks)
- fi
-fi
-AC_SUBST(TIC_PATH)
-
if test "x$cf_with_tests" != xno ; then
MAKE_TESTS=
else
@@ -1948,11 +2266,22 @@ AC_SUBST(MENU_NAME)
AC_SUBST(FORM_NAME)
AC_SUBST(CXX_NAME)
+# workaround for OS/2 (20151017)
+case $cf_cv_system_name in
+(os2*)
+ LIBTOOL_OPTS_CXX="-os2dllname ncurs++"
+ ;;
+(*)
+ LIBTOOL_OPTS_CXX=
+ ;;
+esac
+AC_SUBST(LIBTOOL_OPTS_CXX)
+
# workaround for g++ versus Solaris (20131116)
-case $cf_cv_system_name in #(vi
-solaris2*) #(vi
- case "x$CPPFLAGS" in #(vi
- *-D_XOPEN_SOURCE_EXTENDED*)
+case $cf_cv_system_name in
+(solaris2*)
+ case "x$CPPFLAGS" in
+ (*-D_XOPEN_SOURCE_EXTENDED*)
CF_VERBOSE(moving _XOPEN_SOURCE_EXTENDED to work around g++ problem)
CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
CPPFLAGS=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/-D_XOPEN_SOURCE_EXTENDED//'`
@@ -1961,18 +2290,115 @@ solaris2*) #(vi
;;
esac
+# Help to automatically enable the extended curses features when using either
+# the *-config or the ".pc" files by adding defines.
+AC_MSG_CHECKING(for defines to add to ncurses${USE_CFG_SUFFIX}-config script)
+PKG_CFLAGS=
+for cf_loop1 in $CPPFLAGS_after_XOPEN
+do
+ cf_found=no
+ for cf_loop2 in $CPPFLAGS_before_XOPEN
+ do
+ if test "x$cf_loop1" = "x$cf_loop2"
+ then
+ cf_found=yes
+ break
+ fi
+ done
+ test "$cf_found" = no && PKG_CFLAGS="$PKG_CFLAGS $cf_loop1"
+done
+AC_MSG_RESULT($PKG_CFLAGS)
+AC_SUBST(PKG_CFLAGS)
+
# AC_CHECK_SIZEOF demands a literal parameter, no variables. So we do this.
-case "x$NCURSES_OSPEED" in #(vi
-*short*) #(vi
+case "x$NCURSES_OSPEED" in
+(*short*)
cf_compatible=1
;;
-*)
+(*)
cf_compatible=0
;;
esac
AC_DEFINE_UNQUOTED(NCURSES_OSPEED_COMPAT,$cf_compatible,[Define to 1 if termcap variable ospeed is short])
-SUB_SCRIPTS=
+case "x$cf_cv_typeof_chtype" in
+(xshort|xint|xlong)
+ cf_cv_typeof_chtype="unsigned $cf_cv_typeof_chtype"
+ ;;
+esac
+
+case "x$cf_cv_typeof_mmask_t" in
+(xshort|xint|xlong)
+ cf_cv_typeof_mmask_t="unsigned $cf_cv_typeof_mmask_t"
+ ;;
+esac
+
+# substitute into misc/Makefile to suppress
+# (un)install.data from the
+# (un)install rules.
+if test "x$cf_with_db_install" = "xno"; then
+ MISC_INSTALL_DATA=
+ MISC_UNINSTALL_DATA=
+else
+ MISC_INSTALL_DATA=install.data
+ MISC_UNINSTALL_DATA=uninstall.data
+fi
+AC_SUBST(MISC_INSTALL_DATA)
+AC_SUBST(MISC_UNINSTALL_DATA)
+
+if test "x$cf_with_db_install" = "xno" || test "x$TERMINFO_SRC" = "xno"; then
+ MAKE_DATABASE="#"
+else
+ MAKE_DATABASE="$MAKE_TERMINFO"
+fi
+AC_SUBST(MAKE_DATABASE)
+
+dnl Override the package used for exported symbols
+if test -n "$PACKAGE"
+then
+ PACKAGE="${PACKAGE}${DFT_ARG_SUFFIX}"
+ export PACKAGE
+ echo "package: $PACKAGE"
+fi
+
+UNALTERED_SYMS=
+cf_filter_syms=no
+
+if test -n "$RESULTING_SYMS"
+then
+ cf_filter_syms=$cf_dft_filter_syms
+ CF_VERBOSE(will map symbols to ABI=$cf_cv_abi_version)
+fi
+
+if test "x$WILDCARD_SYMS" = xno
+then
+ cf_filter_syms=yes
+fi
+
+test "x$cf_with_trace" = xyes && NCURSES_INLINE=
+
+UNALTERED_SYMS=`echo "$RESULTING_SYMS" | sed -e 's/\\$/\\\\$/g'`
+if test $cf_filter_syms = yes
+then
+ RESULTING_SYMS=resulting.map
+fi
+AC_SUBST(UNALTERED_SYMS)
+
+if test "x$cross_compiling" = xyes ; then
+ ADAGEN_LDFLAGS='$(CROSS_LDFLAGS)'
+ CHECK_BUILD="#"
+else
+ ADAGEN_LDFLAGS='$(NATIVE_LDFLAGS)'
+ CHECK_BUILD=
+fi
+AC_SUBST(ADAGEN_LDFLAGS)
+AC_SUBST(CHECK_BUILD)
+AC_SUBST(PRIVATE_LIBS)
+
+# This is used for the *-config script and *.pc data files.
+CF_LD_SEARCHPATH
+
+AC_DEFINE(HAVE_CURSES_DATA_BOOLNAMES,1,[definition needed for in-tree build of tack])
AC_OUTPUT( \
include/MKterm.h.awk \
@@ -1980,7 +2406,6 @@ AC_OUTPUT( \
include/ncurses_dll.h \
include/termcap.h \
include/unctrl.h \
- $SUB_SCRIPTS \
$SUB_MAKEFILES \
Makefile,[
if test "x$cf_with_tests" != xno ; then
@@ -1998,9 +2423,11 @@ fi
### configuration-run into config.status
AWK="$AWK"
+ALTERNATE_SYMS="$ALTERNATE_SYMS"
DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX"
DFT_LWR_MODEL="$DFT_LWR_MODEL"
ECHO_LD="$ECHO_LD"
+EXTRA_SUFFIX="$EXTRA_SUFFIX"
LDCONFIG="$LDCONFIG"
LIBTOOL_VERSION="$LIBTOOL_VERSION"
LIB_NAME="$LIB_NAME"
@@ -2019,18 +2446,25 @@ TERMINFO="$TERMINFO"
TICS_ARG_SUFFIX="$TICS_ARG_SUFFIX"
TICS_LIB_SUFFIX="$TICS_LIB_SUFFIX"
TICS_NAME="$TICS_NAME"
+TICS_SUFFIX="$TICS_SUFFIX"
TIC_PATH="$TIC_PATH"
TINFO_ARG_SUFFIX="$TINFO_ARG_SUFFIX"
TINFO_LIB_SUFFIX="$TINFO_LIB_SUFFIX"
TINFO_NAME="$TINFO_NAME"
TINFO_SUFFIX="$TINFO_SUFFIX"
+UNALTERED_SYMS="$UNALTERED_SYMS"
+USE_ARG_SUFFIX="$USE_ARG_SUFFIX"
+USE_CFG_SUFFIX="$USE_CFG_SUFFIX"
+USE_LIB_SUFFIX="$USE_LIB_SUFFIX"
USE_OLD_MAKERULES="$USE_OLD_MAKERULES"
+WILDCARD_SYMS="$WILDCARD_SYMS"
WITH_CURSES_H="$with_curses_h"
WITH_ECHO="${enable_echo:=yes}"
WITH_OVERWRITE="$with_overwrite"
cf_LIST_MODELS="$cf_list_models"
cf_cv_abi_version="$cf_cv_abi_version"
cf_cv_do_relink="$cf_cv_do_relink"
+cf_cv_do_reranlib="$cf_cv_do_reranlib"
cf_cv_do_symlinks="$cf_cv_do_symlinks"
cf_cv_enable_lp64="$cf_cv_enable_lp64"
cf_cv_enable_opaque="$cf_cv_enable_opaque"
@@ -2049,9 +2483,9 @@ cf_with_cxx_binding="$cf_with_cxx_binding"
cf_with_db_install="$cf_with_db_install"
cf_with_manpages="$cf_with_manpages"
cf_with_tests="$cf_with_tests"
-with_shared_cxx="$with_shared_cxx"
host="$host"
target="$target"
+with_shared_cxx="$with_shared_cxx"
],cat)dnl
${MAKE:-make} preinstall
diff --git a/dist.mk b/dist.mk
index 11db597de4c9..6b015317b44a 100644
--- a/dist.mk
+++ b/dist.mk
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2019,2020 Free 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"), #
@@ -25,7 +25,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: dist.mk,v 1.973 2014/02/22 16:55:12 tom Exp $
+# $Id: dist.mk,v 1.1325 2020/01/18 10:27:03 tom Exp $
# Makefile for creating ncurses distributions.
#
# This only needs to be used directly as a makefile by developers, but
@@ -35,9 +35,9 @@
SHELL = /bin/sh
# These define the major/minor/patch versions of ncurses.
-NCURSES_MAJOR = 5
-NCURSES_MINOR = 9
-NCURSES_PATCH = 20140222
+NCURSES_MAJOR = 6
+NCURSES_MINOR = 1
+NCURSES_PATCH = 20200118
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
@@ -47,19 +47,19 @@ VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
# --without-manpage-renames
# on Debian/testing. The -scrollbar and -width options are used to make lynx
# use 79 columns as it did in 2.8.5 and before.
-DUMP = lynx -dump -scrollbar=0 -width=79
+DUMP = lynx -dump -scrollbar=0 -width=79 -display_charset=US-ASCII
DUMP2 = $(DUMP) -nolist
# gcc's file is "gnathtml.pl"
GNATHTML= gnathtml
-# man2html 3.0.1 is a Perl script which assumes that pages are fixed size.
+# man2html 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). Newer
# versions of 'man' leave no margin (and make it harder to sync with pages).
-MAN2HTML= man2html -botm=0 -topm=0 -cgiurl '$$title.$$section$$subsection.html'
+MAN2HTML= man2html -botm=0 -topm=0 -cgiurl '$$title.$$section$$subsection.html' -index
ALL = ANNOUNCE doc/html/announce.html doc/ncurses-intro.doc doc/hackguide.doc manhtml adahtml
@@ -83,12 +83,6 @@ doc/ncurses-intro.doc: doc/html/ncurses-intro.html
doc/hackguide.doc: doc/html/hackguide.html
$(DUMP2) doc/html/hackguide.html > $@
-# This is the original command:
-# MANPROG = tbl | nroff -man
-#
-# This happens to work for groff 1.18.1 on Debian. At some point groff's
-# maintainer changed the line-length (we do not want/need that here).
-#
# The distributed html files are formatted using
# configure --without-manpage-renames
#
@@ -96,7 +90,7 @@ doc/hackguide.doc: doc/html/hackguide.html
# If that conflicts with the --without-manpage-renames, you can install those
# in a different location using the --with-install-prefix option of the
# configure script.
-MANPROG = tbl | nroff -mandoc -rLL=65n -rLT=71n -Tascii
+MANPROG = tbl | nroff -mandoc -rLL=78n -rLT=78n -Tascii
manhtml:
@for f in doc/html/man/*.html; do \
@@ -124,7 +118,7 @@ manhtml:
@echo 's/<\/I>/<\/EM>/g' >> subst.tmp
@misc/csort < subst.tmp | uniq > subst.sed
@echo '/<\/TITLE>/a\' >> subst.sed
- @echo '<link rev=made href="mailto:bug-ncurses@gnu.org">\' >> subst.sed
+ @echo '<link rel="author" href="mailto:bug-ncurses@gnu.org">\' >> subst.sed
@echo '<meta http-equiv="Content-Type" content="text\/html; charset=iso-8859-1">' >> subst.sed
@rm -f subst.tmp
@for f in man/*.[0-9]* ; do \
@@ -133,8 +127,7 @@ manhtml:
g=$${m}.html ;\
if [ -f doc/html/$$g ]; then chmod +w doc/html/$$g; fi;\
echo "Converting $$m to HTML" ;\
- echo '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">' > doc/html/man/$$g ;\
- echo '<!-- ' >> doc/html/man/$$g ;\
+ echo '<!-- ' > doc/html/man/$$g ;\
egrep '^.\\"[^#]' $$f | \
sed -e 's/\$$/@/g' \
-e 's/^.../ */' \
diff --git a/doc/hackguide.doc b/doc/hackguide.doc
index 8e0ba5c0f85b..1bafad2ad10b 100644
--- a/doc/hackguide.doc
+++ b/doc/hackguide.doc
@@ -111,7 +111,7 @@ How to Design Extensions
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
+ for them more(1) or an editor window; there is no point in
elaborate mark-up.
2. Mark up manual pages in the man macros. These have to be viewable
through traditional man(1) programs.
@@ -120,10 +120,10 @@ How to Design Extensions
When in doubt, HTMLize a master and use lynx(1) to generate plain
ASCII (as we do for the announcement document).
- The reason for choosing HTML is that it's (a) well-adapted for on-line
- browsing through viewers that are everywhere; (b) more easily readable
- as plain text than most other mark-ups, if you don't have a viewer;
- and (c) carries enough information that you can generate a
+ The reason for choosing HTML is that it is (a) well-adapted for
+ on-line browsing through viewers that are everywhere; (b) more easily
+ readable as plain text than most other mark-ups, if you do not 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.
@@ -135,16 +135,16 @@ How to Design Extensions
subscribe <name>@<host.domain>
The ncurses code is maintained by a small group of volunteers. While
- we try our best to fix bugs promptly, we simply don't have a lot of
+ we try our best to fix bugs promptly, we simply do not have a lot of
hours to spend on elementary hand-holding. We rely on intelligent
cooperation from our users. If you think you have found a bug in
ncurses, there are some steps you can take before contacting us that
will help get the bug fixed quickly.
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.
+ show us they have taken these steps at the head of our queue. This
+ means that if you do not, you will 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
@@ -155,17 +155,17 @@ How to Design Extensions
2. Try to reproduce the bug on a different terminal type.
In our experience, most of the behaviors people report as library
bugs are actually due to subtle problems in terminal descriptions.
- This is especially likely to be true if you're using a traditional
- asynchronous terminal or PC-based terminal emulator, rather than
- xterm or a UNIX console entry.
- It's therefore extremely helpful if you can tell us whether or not
- your problem reproduces on other terminal types. Usually you'll
- have both a console type and xterm available; please tell us
+ This is especially likely to be true if you are using a
+ traditional asynchronous terminal or PC-based terminal emulator,
+ rather than xterm or a UNIX console entry.
+ It is therefore extremely helpful if you can tell us whether or
+ not your problem reproduces on other terminal types. Usually you
+ will have both a console type and xterm available; please tell us
whether or not your bug reproduces on both.
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.
+ of the bugs we have seen are either triggered or masked by these.
3. Generate and examine a trace file for the broken behavior.
Recompile your program with the debugging versions of the
libraries. Insert a trace() call with the argument set to
@@ -178,35 +178,35 @@ How to Design Extensions
tell you immediately if this is happening, and save you from the
possible embarrassment of being told that the bug is in your code
and is your problem rather than ours.
- If the virtual-screen dumps look correct but the bug persists,
- it's possible to crank up the trace level to give more and more
+ If the virtual-screen dumps look correct but the bug persists, it
+ is possible to crank up the trace level to give more and more
information about the library's update actions and the control
sequences it issues to perform them. The test directory of the
distribution contains a tool for digesting these logs to make them
less tedious to wade through.
- 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.
+ Often you will find terminfo problems at this stage by noticing
+ that the escape sequences put out for various capabilities are
+ wrong. If not, you are likely to learn enough to be able to
+ characterize any bug in the screen-update logic quite exactly.
4. Report details and symptoms, not just interpretations.
- If you do the preceding two steps, it is very likely that you'll
+ If you do the preceding two steps, it is very likely that you will
discover the nature of the problem yourself and be able to send us
a fix. This will create happy feelings all around and earn you
- good karma for the first time you run into a bug you really can't
+ good karma for the first time you run into a bug you really cannot
characterize and fix yourself.
- If you're still stuck, at least you'll know what to tell us.
+ If you are still stuck, at least you will know what to tell us.
Remember, we need details. If you guess about what is safe to
leave out, you are too likely to be wrong.
If your bug produces a bad update, include a trace file. Try to
make the trace at the least voluminous level that pins down the
- bug. Logs that have been through tracemunch are OK, it doesn't
- throw away any information (actually they're better than
- un-munched ones because they're easier to read).
+ bug. Logs that have been through tracemunch are OK, it does not
+ throw away any information (actually they are better than
+ un-munched ones because they are easier to read).
If your bug produces a core-dump, please include a symbolic stack
trace generated by gdb(1) or your local equivalent.
- Tell us about every terminal on which you've reproduced the bug --
- and every terminal on which you can't. Ideally, sent us terminfo
- sources for all of these (yours might differ from ours).
+ Tell us about every terminal on which you have reproduced the bug
+ -- and every terminal on which you cannot. Ideally, send us
+ terminfo sources for all of these (yours might differ from ours).
Include your ncurses version and your OS/machine type, of course!
You can find your ncurses version in the curses.h file.
@@ -219,8 +219,8 @@ How to Design Extensions
The most important of these is mvcur, a test frame for the
cursor-movement optimization code. With this program, you can see
directly what control sequences will be emitted for any given cursor
- movement or scroll/insert/delete operations. If you think you've got a
- bad capability identified, you can disable it and test again. The
+ movement or scroll/insert/delete operations. If you think you have got
+ a bad capability identified, you can disable it and test again. The
program is command-driven and has on-line help.
If you think the vertical-scroll optimization is broken, or just want
@@ -290,8 +290,9 @@ Library Overview
lib_mouse.c lib_mvcur.c lib_refresh.c lib_setup.c lib_vidattr.c
Most of the algorithmic complexity in the library lives in these
- files. If there is a real bug in ncurses itself, it's probably here.
- We'll tour some of these files in detail below (see The Engine Room).
+ files. If there is a real bug in ncurses itself, it is probably here.
+ We will tour some of these files in detail below (see The Engine
+ Room).
Finally, there is a group of files that is actually most of the
terminfo compiler. The reason this code lives in the ncurses library
@@ -300,7 +301,7 @@ Library Overview
alloc_entry.c captoinfo.c comp_captab.c comp_error.c comp_hash.c
comp_parse.c comp_scan.c parse_entry.c read_termcap.c write_entry.c
- We'll discuss these in the compiler tour.
+ We will discuss these in the compiler tour.
The Engine Room
@@ -323,8 +324,9 @@ The Engine Room
Hackers bruised by previous encounters with variant select(2) calls
may find the code in lib_twait.c interesting. It deals with the
- problem that some BSD selects don't return a reliable time-left value.
- The function timed_wait() effectively simulates a System V select.
+ problem that some BSD selects do not return a reliable time-left
+ value. The function timed_wait() effectively simulates a System V
+ select.
Mouse Events
@@ -341,19 +343,19 @@ The Engine Room
to imply having the prefix somewhere in the function-key capabilities
at terminal-type initialization.
- This kluge only works because kmous isn't actually used by any
+ This kluge only works because kmous is not actually used by any
historic terminal type or curses implementation we know of. Best guess
- is it's a relic of some forgotten experiment in-house at Bell Labs
- that didn't leave any traces in the publicly-distributed System V
+ is it is a relic of some forgotten experiment in-house at Bell Labs
+ that did not leave any traces in the publicly-distributed System V
terminfo files. If System V or XPG4 ever gets serious about using it
again, this kluge may have to change.
Here are some more details about mouse event handling:
- The lib_mouse()code is logically split into a lower level that accepts
- event reports in a device-dependent format and an upper level that
- parses mouse gestures and filters events. The mediating data structure
- is a circular queue of event structures.
+ The lib_mouse() code is logically split into a lower level that
+ accepts event reports in a device-dependent format and an upper level
+ that parses mouse gestures and filters events. The mediating data
+ structure is a circular queue of event structures.
Functionally, the lower level's job is to pick up primitive events and
put them on the circular queue. This can happen in one of two ways:
@@ -380,24 +382,23 @@ The Engine Room
The brains of this operation are the modules hashmap.c, hardscroll.c
and lib_doupdate.c; the latter two use lib_mvcur.c. Essentially, what
happens looks like this:
-
- The hashmap.c module tries to detect vertical motion changes between
- the real and virtual screens. This information is represented by the
- oldindex members in the newscr structure. These are modified by
- vertical-motion and clear operations, and both are re-initialized
- after each update. To this change-journalling information, the hashmap
- code adds deductions made using a modified Heckel algorithm on hash
- values generated from the line contents.
-
- The hardscroll.c module computes an optimum set of scroll, insertion,
- and deletion operations to make the indices match. It calls
- _nc_mvcur_scrolln() in lib_mvcur.c to do those motions.
-
- Then lib_doupdate.c goes to work. Its job is to do line-by-line
- transformations of curscr lines to newscr lines. Its main tool is the
- routine mvcur() in lib_mvcur.c. This routine does cursor-movement
- optimization, attempting to get from given screen location A to given
- location B in the fewest output characters possible.
+ * The hashmap.c module tries to detect vertical motion changes
+ between the real and virtual screens. This information is
+ represented by the oldindex members in the newscr structure. These
+ are modified by vertical-motion and clear operations, and both are
+ re-initialized after each update. To this change-journalling
+ information, the hashmap code adds deductions made using a
+ modified Heckel algorithm on hash values generated from the line
+ contents.
+ * The hardscroll.c module computes an optimum set of scroll,
+ insertion, and deletion operations to make the indices match. It
+ calls _nc_mvcur_scrolln() in lib_mvcur.c to do those motions.
+ * Then lib_doupdate.c goes to work. Its job is to do line-by-line
+ transformations of curscr lines to newscr lines. Its main tool is
+ the routine mvcur() in lib_mvcur.c. This routine does
+ cursor-movement optimization, attempting to get from given screen
+ location A to given location B in the fewest output characters
+ possible.
If you want to work on screen optimizations, you should use the fact
that (in the trace-enabled version of the library) enabling the
@@ -419,7 +420,7 @@ The Engine Room
TYPE_REGEXP will recognize.
The configuration code prefers the POSIX regex facility, modeled on
- System V's, but will settle for BSD regexps if the former isn't
+ System V's, but will settle for BSD regexps if the former is not
available.
Historical note: the panels code was written primarily to assist in
@@ -437,7 +438,7 @@ The Engine Room
The implementation therefore starts with a table-driven, dual-mode
lexical analyzer (in comp_scan.c). The lexer chooses its mode (termcap
- or terminfo) based on the first `,' or `:' it finds in each entry. The
+ 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".
@@ -460,23 +461,23 @@ Translation of Non-use Capabilities
shareable text space).
Thus, adding a new capability is usually pretty trivial, just a matter
- of adding one line to the include/Caps file. We'll have more to say
+ of adding one line to the include/Caps file. We will have more to say
about this in the section on Source-Form Translation.
Use Capability Resolution
- The background problem that makes tic tricky isn't the capability
- translation itself, it's the resolution of use capabilities. Older
+ The background problem that makes tic tricky is not the capability
+ translation itself, it is the resolution of use capabilities. Older
versions would not handle forward use references for this reason (that
is, a using terminal always had to follow its use target in the source
file). By doing this, they got away with a simple implementation
tactic; compile everything as it blows by, then resolve uses from
compiled entries.
- This won't do for ncurses. The problem is that that the whole
+ This will not do for ncurses. The problem is that that the whole
compilation process has to be embeddable in the ncurses library so
that it can be called by the startup code to translate termcap entries
- on the fly. The embedded version can't go promiscuously writing
+ on the fly. The embedded version cannot go promiscuously writing
everything it translates out to disk -- for one thing, it will
typically be running with non-root permissions.
@@ -485,7 +486,7 @@ Use Capability Resolution
use resolution in-memory before writing everything out. This design
has other advantages: it makes forward and back use-references equally
easy (so we get the latter for free), and it makes checking for name
- collisions before they're written out easy to do.
+ collisions before they are written out easy to do.
And this is exactly how the embedded version works. But the
stand-alone user-accessible version of tic partly reverts to the
@@ -502,8 +503,8 @@ Use Capability Resolution
writes out the referenced entry if it has no use capabilities. The
compiler main loop refrains from adding the entry to the in-core list
when this hook fires. If some other entry later needs to reference an
- entry that got written immediately, that's OK; the resolution code
- will fetch it off disk when it can't find it in core.
+ entry that got written immediately, that is OK; the resolution code
+ will fetch it off disk when it cannot find it in core.
Name collisions will still be detected, just not as cleanly. The
write_entry() code complains before overwriting an entry that
@@ -525,9 +526,9 @@ Source-Form Translation
The include/Caps file has a header comment describing ways you can
specify source translations for nonstandard capabilities just by
- altering the master table. It's possible to set up capability aliasing
- or tell the compiler to plain ignore a given capability without
- writing any C code at all.
+ altering the master table. It is possible to set up capability
+ aliasing or tell the compiler to plain ignore a given capability
+ without writing any C code at all.
For circumstances where you need to do algorithmic translation, there
are functions in parse_entry.c called after the parse of each entry
@@ -563,14 +564,14 @@ Source-Form Translation
Look for the string FIXME in source files to tag minor bugs and
potential problems that could use fixing.
- Don't try to auto-detect OS features in the main body of the C code.
- That's the job of the configuration system.
+ Do not try to auto-detect OS features in the main body of the C code.
+ That is the job of the configuration system.
To hold down complexity, do make your code data-driven. Especially, if
you can drive logic from a table filtered out of include/Caps, do it.
If you find you need to augment the 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.
+ generate the proper table, that is still preferable to ad-hoc code --
+ that is why the fifth field (flags) is there.
Have fun!
@@ -579,7 +580,7 @@ Source-Form Translation
The following notes are intended to be a first step towards DOS and
Macintosh ports of the ncurses libraries.
- The following library modules are `pure curses'; they operate only on
+ The following library modules are "pure curses"; they operate only on
the curses internal structures, do all output through other curses
calls (not including tputs() and putp()) and do not call any other
UNIX routines such as signal(2) or the stdio library. Thus, they
@@ -626,7 +627,7 @@ Source-Form Translation
Modules that would have to be modified for a port start here:
- The following modules are `pure curses' but contain assumptions
+ The following modules are "pure curses" but contain assumptions
inappropriate for a memory-mapped port.
lib_longname.c
diff --git a/doc/html/Ada95.html b/doc/html/Ada95.html
index 77557e774b30..8d38806bf37a 100644
--- a/doc/html/Ada95.html
+++ b/doc/html/Ada95.html
@@ -1,7 +1,7 @@
<!--
- $Id: Ada95.html,v 1.14 2013/05/18 21:34:34 tom Exp $
+ $Id: Ada95.html,v 1.15 2019/03/16 19:39:05 tom Exp $
****************************************************************************
- * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -36,7 +36,7 @@
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
<title>Ada95 Binding for ncurses</title>
- <link rev="made" href="mailto:bug-ncurses@gnu.org">
+ <link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content=
"text/html; charset=us-ascii">
</head>
diff --git a/doc/html/NCURSES-Programming-HOWTO.html b/doc/html/NCURSES-Programming-HOWTO.html
index b1e40a2809a3..d3eeb95dbccc 100644
--- a/doc/html/NCURSES-Programming-HOWTO.html
+++ b/doc/html/NCURSES-Programming-HOWTO.html
@@ -1,1282 +1,844 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
-<HTML
-><HEAD
-><TITLE
-> NCURSES Programming HOWTO </TITLE
-><META
-NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.79"></HEAD
-><BODY
-CLASS="ARTICLE"
-BGCOLOR="#FFFFFF"
-TEXT="#000000"
-LINK="#0000FF"
-VLINK="#840084"
-ALINK="#0000FF"
-><DIV
-CLASS="ARTICLE"
-><DIV
-CLASS="TITLEPAGE"
-><H1
-CLASS="TITLE"
-><A
-NAME="AEN2"
->NCURSES Programming HOWTO</A
-></H1
-><H3
-CLASS="AUTHOR"
-><A
-NAME="AEN4"
-> Pradeep Padala </A
-></H3
-><DIV
-CLASS="AFFILIATION"
-><DIV
-CLASS="ADDRESS"
-><P
-CLASS="ADDRESS"
-><CODE
-CLASS="EMAIL"
->&#60;<A
-HREF="mailto:ppadala@gmail.com"
->ppadala@gmail.com</A
->&#62;</CODE
-></P
-></DIV
-></DIV
-><P
-CLASS="PUBDATE"
->v1.9, 2005-06-20<BR></P
-><DIV
-CLASS="REVHISTORY"
-><TABLE
-WIDTH="100%"
-BORDER="0"
-><TR
-><TH
-ALIGN="LEFT"
-VALIGN="TOP"
-COLSPAN="3"
-><B
->Revision History</B
-></TH
-></TR
-><TR
-><TD
-ALIGN="LEFT"
->Revision 1.9</TD
-><TD
-ALIGN="LEFT"
->2005-06-20</TD
-><TD
-ALIGN="LEFT"
->Revised by: ppadala</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
-COLSPAN="3"
->The license has been changed to the MIT-style license used
- by NCURSES. Note that the programs are also re-licensed under this.</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
->Revision 1.8</TD
-><TD
-ALIGN="LEFT"
->2005-06-17</TD
-><TD
-ALIGN="LEFT"
->Revised by: ppadala</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
-COLSPAN="3"
->Lots of updates. Added references and perl examples.
- Changes to examples. Many grammatical and stylistic changes to the
- content. Changes to NCURSES history.</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
->Revision 1.7.1</TD
-><TD
-ALIGN="LEFT"
->2002-06-25</TD
-><TD
-ALIGN="LEFT"
->Revised by: ppadala</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
-COLSPAN="3"
->Added a README file for building and instructions
- for building from source.</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
->Revision 1.7</TD
-><TD
-ALIGN="LEFT"
->2002-06-25</TD
-><TD
-ALIGN="LEFT"
->Revised by: ppadala</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
-COLSPAN="3"
->Added "Other formats" section and made a lot of fancy
- changes to the programs. Inlining of programs is gone.</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
->Revision 1.6.1</TD
-><TD
-ALIGN="LEFT"
->2002-02-24</TD
-><TD
-ALIGN="LEFT"
->Revised by: ppadala</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
-COLSPAN="3"
->Removed the old Changelog section, cleaned the makefiles</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
->Revision 1.6</TD
-><TD
-ALIGN="LEFT"
->2002-02-16</TD
-><TD
-ALIGN="LEFT"
->Revised by: ppadala</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
-COLSPAN="3"
->Corrected a lot of spelling mistakes, added ACS variables
- section</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
->Revision 1.5</TD
-><TD
-ALIGN="LEFT"
->2002-01-05</TD
-><TD
-ALIGN="LEFT"
->Revised by: ppadala</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
-COLSPAN="3"
->Changed structure to present proper TOC</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
->Revision 1.3.1</TD
-><TD
-ALIGN="LEFT"
->2001-07-26</TD
-><TD
-ALIGN="LEFT"
->Revised by: ppadala</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
-COLSPAN="3"
->Corrected maintainers paragraph, Corrected stable release number</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
->Revision 1.3</TD
-><TD
-ALIGN="LEFT"
->2001-07-24</TD
-><TD
-ALIGN="LEFT"
->Revised by: ppadala</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
-COLSPAN="3"
->Added copyright notices to main document (LDP license)
- and programs (GPL), Corrected
- printw_example.</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
->Revision 1.2</TD
-><TD
-ALIGN="LEFT"
->2001-06-05</TD
-><TD
-ALIGN="LEFT"
->Revised by: ppadala</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
-COLSPAN="3"
->Incorporated ravi's changes. Mainly to introduction, menu,
- form, justforfun sections</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
->Revision 1.1</TD
-><TD
-ALIGN="LEFT"
->2001-05-22</TD
-><TD
-ALIGN="LEFT"
->Revised by: ppadala</TD
-></TR
-><TR
-><TD
-ALIGN="LEFT"
-COLSPAN="3"
->Added "a word about window" section, Added scanw_example.</TD
-></TR
-></TABLE
-></DIV
-><DIV
-><DIV
-CLASS="ABSTRACT"
-><P
-></P
-><A
-NAME="AEN67"
-></A
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->This document is intended to be an "All in One" guide for programming with
-ncurses and its sister libraries. We graduate from a simple "Hello World"
-program to more complex form manipulation. No prior experience in ncurses is
-assumed. Send comments to <A
-HREF="mailto:ppadala@gmail.com"
-TARGET="_top"
->this address</A
->
- </I
-></SPAN
->
- </P
-><P
-></P
-></DIV
-></DIV
-><HR></DIV
-><DIV
-CLASS="TOC"
-><DL
-><DT
-><B
->Table of Contents</B
-></DT
-><DT
->1. <A
-HREF="#INTRO"
->Introduction</A
-></DT
-><DD
-><DL
-><DT
->1.1. <A
-HREF="#WHATIS"
->What is NCURSES?</A
-></DT
-><DT
->1.2. <A
-HREF="#WHATCANWEDO"
->What we can do with NCURSES</A
-></DT
-><DT
->1.3. <A
-HREF="#WHERETOGETIT"
->Where to get it</A
-></DT
-><DT
->1.4. <A
-HREF="#PURPOSE"
->Purpose/Scope of the document</A
-></DT
-><DT
->1.5. <A
-HREF="#ABOUTPROGRAMS"
->About the Programs</A
-></DT
-><DT
->1.6. <A
-HREF="#OTHERFORMATS"
->Other Formats of the document</A
-></DT
-><DD
-><DL
-><DT
->1.6.1. <A
-HREF="#LISTFORMATS"
->Readily available formats from tldp.org</A
-></DT
-><DT
->1.6.2. <A
-HREF="#BUILDSOURCE"
->Building from source</A
-></DT
-></DL
-></DD
-><DT
->1.7. <A
-HREF="#CREDITS"
->Credits</A
-></DT
-><DT
->1.8. <A
-HREF="#WISHLIST"
->Wish List</A
-></DT
-><DT
->1.9. <A
-HREF="#COPYRIGHT"
->Copyright</A
-></DT
-></DL
-></DD
-><DT
->2. <A
-HREF="#HELLOWORLD"
->Hello World !!!</A
-></DT
-><DD
-><DL
-><DT
->2.1. <A
-HREF="#COMPILECURSES"
->Compiling With the NCURSES Library</A
-></DT
-><DT
->2.2. <A
-HREF="#DISSECTION"
->Dissection</A
-></DT
-><DD
-><DL
-><DT
->2.2.1. <A
-HREF="#ABOUT-INITSCR"
->About initscr()</A
-></DT
-><DT
->2.2.2. <A
-HREF="#MYST-REFRESH"
->The mysterious refresh()</A
-></DT
-><DT
->2.2.3. <A
-HREF="#ABOUT-ENDWIN"
->About endwin()</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->3. <A
-HREF="#GORY"
->The Gory Details</A
-></DT
-><DT
->4. <A
-HREF="#INIT"
->Initialization</A
-></DT
-><DD
-><DL
-><DT
->4.1. <A
-HREF="#ABOUTINIT"
->Initialization functions</A
-></DT
-><DT
->4.2. <A
-HREF="#RAWCBREAK"
->raw() and cbreak()</A
-></DT
-><DT
->4.3. <A
-HREF="#ECHONOECHO"
->echo() and noecho()</A
-></DT
-><DT
->4.4. <A
-HREF="#KEYPAD"
->keypad()</A
-></DT
-><DT
->4.5. <A
-HREF="#HALFDELAY"
->halfdelay()</A
-></DT
-><DT
->4.6. <A
-HREF="#MISCINIT"
->Miscellaneous Initialization functions</A
-></DT
-><DT
->4.7. <A
-HREF="#INITEX"
->An Example</A
-></DT
-></DL
-></DD
-><DT
->5. <A
-HREF="#AWORDWINDOWS"
->A Word about Windows</A
-></DT
-><DT
->6. <A
-HREF="#PRINTW"
->Output functions</A
-></DT
-><DD
-><DL
-><DT
->6.1. <A
-HREF="#ADDCHCLASS"
->addch() class of functions</A
-></DT
-><DT
->6.2. <A
-HREF="#AEN298"
->mvaddch(), waddch() and mvwaddch()</A
-></DT
-><DT
->6.3. <A
-HREF="#PRINTWCLASS"
->printw() class of functions</A
-></DT
-><DD
-><DL
-><DT
->6.3.1. <A
-HREF="#PRINTWMVPRINTW"
->printw() and mvprintw</A
-></DT
-><DT
->6.3.2. <A
-HREF="#WPRINTWMVWPRINTW"
->wprintw() and mvwprintw</A
-></DT
-><DT
->6.3.3. <A
-HREF="#VWPRINTW"
->vwprintw()</A
-></DT
-><DT
->6.3.4. <A
-HREF="#SIMPLEPRINTWEX"
->A Simple printw example</A
-></DT
-></DL
-></DD
-><DT
->6.4. <A
-HREF="#ADDSTRCLASS"
->addstr() class of functions</A
-></DT
-><DT
->6.5. <A
-HREF="#ACAUTION"
->A word of caution</A
-></DT
-></DL
-></DD
-><DT
->7. <A
-HREF="#SCANW"
->Input functions</A
-></DT
-><DD
-><DL
-><DT
->7.1. <A
-HREF="#GETCHCLASS"
->getch() class of functions</A
-></DT
-><DT
->7.2. <A
-HREF="#SCANWCLASS"
->scanw() class of functions</A
-></DT
-><DD
-><DL
-><DT
->7.2.1. <A
-HREF="#SCANWMVSCANW"
->scanw() and mvscanw</A
-></DT
-><DT
->7.2.2. <A
-HREF="#WSCANWMVWSCANW"
->wscanw() and mvwscanw()</A
-></DT
-><DT
->7.2.3. <A
-HREF="#VWSCANW"
->vwscanw()</A
-></DT
-></DL
-></DD
-><DT
->7.3. <A
-HREF="#GETSTRCLASS"
->getstr() class of functions</A
-></DT
-><DT
->7.4. <A
-HREF="#GETSTREX"
->Some examples</A
-></DT
-></DL
-></DD
-><DT
->8. <A
-HREF="#ATTRIB"
->Attributes</A
-></DT
-><DD
-><DL
-><DT
->8.1. <A
-HREF="#ATTRIBDETAILS"
->The details</A
-></DT
-><DT
->8.2. <A
-HREF="#ATTRONVSATTRSET"
->attron() vs attrset()</A
-></DT
-><DT
->8.3. <A
-HREF="#ATTR_GET"
->attr_get()</A
-></DT
-><DT
->8.4. <A
-HREF="#ATTR_FUNCS"
->attr_ functions</A
-></DT
-><DT
->8.5. <A
-HREF="#WATTRFUNCS"
->wattr functions</A
-></DT
-><DT
->8.6. <A
-HREF="#CHGAT"
->chgat() functions</A
-></DT
-></DL
-></DD
-><DT
->9. <A
-HREF="#WINDOWS"
->Windows</A
-></DT
-><DD
-><DL
-><DT
->9.1. <A
-HREF="#WINDOWBASICS"
->The basics</A
-></DT
-><DT
->9.2. <A
-HREF="#LETBEWINDOW"
->Let there be a Window !!!</A
-></DT
-><DT
->9.3. <A
-HREF="#BORDEREXEXPL"
->Explanation</A
-></DT
-><DT
->9.4. <A
-HREF="#OTHERSTUFF"
->The other stuff in the example</A
-></DT
-><DT
->9.5. <A
-HREF="#OTHERBORDERFUNCS"
->Other Border functions</A
-></DT
-></DL
-></DD
-><DT
->10. <A
-HREF="#COLOR"
->Colors</A
-></DT
-><DD
-><DL
-><DT
->10.1. <A
-HREF="#COLORBASICS"
->The basics</A
-></DT
-><DT
->10.2. <A
-HREF="#CHANGECOLORDEFS"
->Changing Color Definitions</A
-></DT
-><DT
->10.3. <A
-HREF="#COLORCONTENT"
->Color Content</A
-></DT
-></DL
-></DD
-><DT
->11. <A
-HREF="#KEYS"
->Interfacing with the key board</A
-></DT
-><DD
-><DL
-><DT
->11.1. <A
-HREF="#KEYSBASICS"
->The Basics</A
-></DT
-><DT
->11.2. <A
-HREF="#SIMPLEKEYEX"
->A Simple Key Usage example</A
-></DT
-></DL
-></DD
-><DT
->12. <A
-HREF="#MOUSE"
->Interfacing with the mouse</A
-></DT
-><DD
-><DL
-><DT
->12.1. <A
-HREF="#MOUSEBASICS"
->The Basics</A
-></DT
-><DT
->12.2. <A
-HREF="#GETTINGEVENTS"
->Getting the events</A
-></DT
-><DT
->12.3. <A
-HREF="#MOUSETOGETHER"
->Putting it all Together</A
-></DT
-><DT
->12.4. <A
-HREF="#MISCMOUSEFUNCS"
->Miscellaneous Functions</A
-></DT
-></DL
-></DD
-><DT
->13. <A
-HREF="#SCREEN"
->Screen Manipulation</A
-></DT
-><DD
-><DL
-><DT
->13.1. <A
-HREF="#GETYX"
->getyx() functions</A
-></DT
-><DT
->13.2. <A
-HREF="#SCREENDUMP"
->Screen Dumping</A
-></DT
-><DT
->13.3. <A
-HREF="#WINDOWDUMP"
->Window Dumping</A
-></DT
-></DL
-></DD
-><DT
->14. <A
-HREF="#MISC"
->Miscellaneous features</A
-></DT
-><DD
-><DL
-><DT
->14.1. <A
-HREF="#CURSSET"
->curs_set()</A
-></DT
-><DT
->14.2. <A
-HREF="#TEMPLEAVE"
->Temporarily Leaving Curses mode</A
-></DT
-><DT
->14.3. <A
-HREF="#ACSVARS"
->ACS_ variables</A
-></DT
-></DL
-></DD
-><DT
->15. <A
-HREF="#OTHERLIB"
->Other libraries</A
-></DT
-><DT
->16. <A
-HREF="#PANELS"
->Panel Library</A
-></DT
-><DD
-><DL
-><DT
->16.1. <A
-HREF="#PANELBASICS"
->The Basics</A
-></DT
-><DT
->16.2. <A
-HREF="#COMPILEPANELS"
->Compiling With the Panels Library</A
-></DT
-><DT
->16.3. <A
-HREF="#PANELBROWSING"
->Panel Window Browsing</A
-></DT
-><DT
->16.4. <A
-HREF="#USERPTRUSING"
->Using User Pointers</A
-></DT
-><DT
->16.5. <A
-HREF="#PANELMOVERESIZE"
->Moving and Resizing Panels</A
-></DT
-><DT
->16.6. <A
-HREF="#PANELSHOWHIDE"
->Hiding and Showing Panels</A
-></DT
-><DT
->16.7. <A
-HREF="#PANELABOVE"
->panel_above() and panel_below() Functions</A
-></DT
-></DL
-></DD
-><DT
->17. <A
-HREF="#MENUS"
->Menus Library</A
-></DT
-><DD
-><DL
-><DT
->17.1. <A
-HREF="#MENUBASICS"
->The Basics</A
-></DT
-><DT
->17.2. <A
-HREF="#COMPILEMENUS"
->Compiling With the Menu Library</A
-></DT
-><DT
->17.3. <A
-HREF="#MENUDRIVER"
->Menu Driver: The work horse of the menu system</A
-></DT
-><DT
->17.4. <A
-HREF="#MENUWINDOWS"
->Menu Windows</A
-></DT
-><DT
->17.5. <A
-HREF="#SCROLLMENUS"
->Scrolling Menus</A
-></DT
-><DT
->17.6. <A
-HREF="#MULTICOLUMN"
->Multi Columnar Menus</A
-></DT
-><DT
->17.7. <A
-HREF="#MULTIVALUEMENUS"
->Multi Valued Menus</A
-></DT
-><DT
->17.8. <A
-HREF="#MENUOPT"
->Menu Options</A
-></DT
-><DT
->17.9. <A
-HREF="#MENUUSERPTR"
->The useful User Pointer</A
-></DT
-></DL
-></DD
-><DT
->18. <A
-HREF="#FORMS"
->Forms Library</A
-></DT
-><DD
-><DL
-><DT
->18.1. <A
-HREF="#FORMBASICS"
->The Basics</A
-></DT
-><DT
->18.2. <A
-HREF="#COMPILEFORMS"
->Compiling With the Forms Library</A
-></DT
-><DT
->18.3. <A
-HREF="#PLAYFIELDS"
->Playing with Fields</A
-></DT
-><DD
-><DL
-><DT
->18.3.1. <A
-HREF="#FETCHINFO"
->Fetching Size and Location of Field</A
-></DT
-><DT
->18.3.2. <A
-HREF="#MOVEFIELD"
->Moving the field</A
-></DT
-><DT
->18.3.3. <A
-HREF="#JUSTIFYFIELD"
->Field Justification</A
-></DT
-><DT
->18.3.4. <A
-HREF="#FIELDDISPATTRIB"
->Field Display Attributes</A
-></DT
-><DT
->18.3.5. <A
-HREF="#FIELDOPTIONBITS"
->Field Option Bits</A
-></DT
-><DT
->18.3.6. <A
-HREF="#FIELDSTATUS"
->Field Status</A
-></DT
-><DT
->18.3.7. <A
-HREF="#FIELDUSERPTR"
->Field User Pointer</A
-></DT
-><DT
->18.3.8. <A
-HREF="#VARIABLESIZEFIELDS"
->Variable-Sized Fields</A
-></DT
-></DL
-></DD
-><DT
->18.4. <A
-HREF="#FORMWINDOWS"
->Form Windows</A
-></DT
-><DT
->18.5. <A
-HREF="#FILEDVALIDATE"
->Field Validation</A
-></DT
-><DT
->18.6. <A
-HREF="#FORMDRIVER"
->Form Driver: The work horse of the forms system</A
-></DT
-><DD
-><DL
-><DT
->18.6.1. <A
-HREF="#PAGENAVREQ"
->Page Navigation Requests</A
-></DT
-><DT
->18.6.2. <A
-HREF="#INTERFIELDNAVREQ"
->Inter-Field Navigation Requests</A
-></DT
-><DT
->18.6.3. <A
-HREF="#INTRAFIELDNAVREQ"
->Intra-Field Navigation Requests</A
-></DT
-><DT
->18.6.4. <A
-HREF="#SCROLLREQ"
->Scrolling Requests</A
-></DT
-><DT
->18.6.5. <A
-HREF="#EDITREQ"
->Editing Requests</A
-></DT
-><DT
->18.6.6. <A
-HREF="#ORDERREQ"
->Order Requests</A
-></DT
-><DT
->18.6.7. <A
-HREF="#APPLICCOMMANDS"
->Application Commands</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->19. <A
-HREF="#TOOLS"
->Tools and Widget Libraries</A
-></DT
-><DD
-><DL
-><DT
->19.1. <A
-HREF="#CDK"
->CDK (Curses Development Kit)</A
-></DT
-><DD
-><DL
-><DT
->19.1.1. <A
-HREF="#WIDGETLIST"
->Widget List</A
-></DT
-><DT
->19.1.2. <A
-HREF="#CDKATTRACT"
->Some Attractive Features</A
-></DT
-><DT
->19.1.3. <A
-HREF="#CDKCONCLUSION"
->Conclusion</A
-></DT
-></DL
-></DD
-><DT
->19.2. <A
-HREF="#DIALOG"
->The dialog</A
-></DT
-><DT
->19.3. <A
-HREF="#PERLCURSES"
->Perl Curses Modules CURSES::FORM and CURSES::WIDGETS</A
-></DT
-></DL
-></DD
-><DT
->20. <A
-HREF="#JUSTFORFUN"
->Just For Fun !!!</A
-></DT
-><DD
-><DL
-><DT
->20.1. <A
-HREF="#GAMEOFLIFE"
->The Game of Life</A
-></DT
-><DT
->20.2. <A
-HREF="#MAGIC"
->Magic Square</A
-></DT
-><DT
->20.3. <A
-HREF="#HANOI"
->Towers of Hanoi</A
-></DT
-><DT
->20.4. <A
-HREF="#QUEENS"
->Queens Puzzle</A
-></DT
-><DT
->20.5. <A
-HREF="#SHUFFLE"
->Shuffle</A
-></DT
-><DT
->20.6. <A
-HREF="#TT"
->Typing Tutor</A
-></DT
-></DL
-></DD
-><DT
->21. <A
-HREF="#REF"
->References</A
-></DT
-></DL
-></DIV
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="INTRO"
->1. Introduction</A
-></H2
-><P
->In the olden days of teletype terminals, terminals were away from computers and
-were connected to them through serial cables. The terminals could be configured
-by sending a series of bytes. All the capabilities (such as
-moving the cursor to a new location, erasing part of the screen, scrolling the
-screen, changing modes etc.) of terminals could be accessed through these
-series of bytes. These control seeuqnces are usually called escape sequences,
-because they start
-with an escape(0x1B) character. Even today, with proper emulation, we can send
-escape sequences to the emulator and achieve the same effect on a terminal
-window.</P
-><P
->Suppose you wanted to print a line in color. Try typing this on your console.</P
-><PRE
-CLASS="PROGRAMLISTING"
->echo "^[[0;31;40mIn Color"</PRE
-><P
->The first character is an escape character, which looks like two characters ^
-and [. To be able to print it, you have to press CTRL+V and then the ESC key.
-All the others are normal printable characters. You should be able to see the
-string "In Color" in red. It stays that way and to revert back to the original
-mode type this.</P
-><PRE
-CLASS="PROGRAMLISTING"
->echo "^[[0;37;40m"</PRE
-><P
->Now, what do these magic characters mean? Difficult to comprehend? They might
-even be different for different terminals. So the designers of UNIX invented a
-mechanism named <TT
-CLASS="LITERAL"
->termcap</TT
->. It is a file that
-lists all the capabilities of a particular terminal, along with the escape
-sequences needed to achieve a particular effect. In the later years, this was
-replaced by <TT
-CLASS="LITERAL"
->terminfo</TT
->. Without delving too
-much into details, this mechanism allows application
-programs to query the terminfo database and obtain the control characters to be
-sent to a terminal or terminal emulator.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="WHATIS"
->1.1. What is NCURSES?</A
-></H3
-><P
->
-You might be wondering, what the import of all this technical gibberish is. In
-the above scenario, every application program is supposed to query the terminfo
-and perform the necessary stuff (sending control characters etc.). It soon became
-difficult to manage this complexity and this gave birth to 'CURSES'. Curses is
-a pun on the name "cursor optimization". The Curses library forms a wrapper
-over working with raw terminal codes, and provides highly flexible and
-efficient API (Application Programming Interface). It provides functions to
-move the cursor, create windows, produce colors, play with mouse etc. The
-application programs need not worry about the underlying terminal capabilities.</P
-><P
->So what is NCURSES? NCURSES is a clone of the original System V Release 4.0
-(SVr4) curses. It is a freely distributable library, fully compatible with
-older version of curses. In short, it is a library of functions that manages
-an application's display on character-cell terminals. In the remainder of the
-document, the terms curses and ncurses are used interchangeably. </P
-><P
->A detailed history of NCURSES can be found in the NEWS file from the source
-distribution. The current package is maintained by
-<A
-HREF="mailto:dickey@his.com"
-TARGET="_top"
->Thomas Dickey</A
->.
-You can contact the maintainers at <A
-HREF="mailto:bug-ncurses@gnu.org"
-TARGET="_top"
->bug-ncurses@gnu.org</A
->.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="WHATCANWEDO"
->1.2. What we can do with NCURSES</A
-></H3
-><P
->NCURSES not only creates a wrapper over terminal capabilities, but also gives a
-robust framework to create nice looking UI (User Interface)s in text mode. It
-provides functions to create windows etc. Its sister libraries panel, menu and
-form provide an extension to the basic curses library. These libraries usually
-come along with curses. One can create applications that contain multiple
-windows, menus, panels and forms. Windows can be managed independently, can
-provide 'scrollability' and even can be hidden.</P
-><P
->
-Menus provide the user with an easy command selection option. Forms allow the
-creation of easy-to-use data entry and display windows. Panels extend the
-capabilities of ncurses to deal with overlapping and stacked windows.</P
-><P
->These are just some of the basic things we can do with ncurses. As we move
-along, We will see all the capabilities of these libraries. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="WHERETOGETIT"
->1.3. Where to get it</A
-></H3
-><P
->All right, now that you know what you can do with ncurses, you must be rearing
-to get started. NCURSES is usually shipped with your installation. In case
-you don't have the library or want to compile it on your own, read on.</P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Compiling the package</I
-></SPAN
-> </P
-><P
->NCURSES can be obtained from <A
-HREF="ftp://ftp.gnu.org/pub/gnu/ncurses/ncurses.tar.gz"
-TARGET="_top"
->ftp://ftp.gnu.org/pub/gnu/ncurses/ncurses.tar.gz</A
-> or any of the ftp
-sites mentioned in <A
-HREF="http://www.gnu.org/order/ftp.html"
-TARGET="_top"
->http://www.gnu.org/order/ftp.html</A
->. </P
-><P
->Read the README and INSTALL files for details on to how to install it. It
-usually involves the following operations.</P
-><PRE
-CLASS="PROGRAMLISTING"
-> tar zxvf ncurses&lt;version&gt;.tar.gz # unzip and untar the archive
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+
+<html>
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
+
+ <title>NCURSES Programming HOWTO</title>
+ <meta name="GENERATOR" content=
+ "Modular DocBook HTML Stylesheet Version 1.79">
+</head>
+
+<body class="ARTICLE" bgcolor="#FFFFFF" text="#000000" link=
+"#0000FF" vlink="#840084" alink="#0000FF">
+ <div class="ARTICLE">
+ <div class="TITLEPAGE">
+ <h1 class="TITLE"><a name="AEN2" id="AEN2">NCURSES
+ Programming HOWTO</a></h1>
+
+ <h3 class="AUTHOR"><a name="AEN4" id="AEN4">Pradeep
+ Padala</a></h3>
+
+ <div class="AFFILIATION">
+ <div class="ADDRESS">
+ <p class="ADDRESS"><code class="EMAIL">&lt;<a href=
+ "mailto:ppadala@gmail.com">ppadala@gmail.com</a>&gt;</code></p>
+ </div>
+ </div>
+
+ <p class="PUBDATE">v1.9, 2005-06-20<br></p>
+
+ <div class="REVHISTORY">
+ <table width="100%" border="0" summary="revisions">
+ <tr>
+ <th align="left" valign="top" colspan="3"><b>Revision
+ History</b></th>
+ </tr>
+
+ <tr>
+ <td align="left">Revision 1.9</td>
+
+ <td align="left">2005-06-20</td>
+
+ <td align="left">Revised by: ppadala</td>
+ </tr>
+
+ <tr>
+ <td align="left" colspan="3">The license has been
+ changed to the MIT-style license used by NCURSES. Note
+ that the programs are also re-licensed under this.</td>
+ </tr>
+
+ <tr>
+ <td align="left">Revision 1.8</td>
+
+ <td align="left">2005-06-17</td>
+
+ <td align="left">Revised by: ppadala</td>
+ </tr>
+
+ <tr>
+ <td align="left" colspan="3">Lots of updates. Added
+ references and perl examples. Changes to examples. Many
+ grammatical and stylistic changes to the content.
+ Changes to NCURSES history.</td>
+ </tr>
+
+ <tr>
+ <td align="left">Revision 1.7.1</td>
+
+ <td align="left">2002-06-25</td>
+
+ <td align="left">Revised by: ppadala</td>
+ </tr>
+
+ <tr>
+ <td align="left" colspan="3">Added a README file for
+ building and instructions for building from
+ source.</td>
+ </tr>
+
+ <tr>
+ <td align="left">Revision 1.7</td>
+
+ <td align="left">2002-06-25</td>
+
+ <td align="left">Revised by: ppadala</td>
+ </tr>
+
+ <tr>
+ <td align="left" colspan="3">Added "Other formats"
+ section and made a lot of fancy changes to the
+ programs. Inlining of programs is gone.</td>
+ </tr>
+
+ <tr>
+ <td align="left">Revision 1.6.1</td>
+
+ <td align="left">2002-02-24</td>
+
+ <td align="left">Revised by: ppadala</td>
+ </tr>
+
+ <tr>
+ <td align="left" colspan="3">Removed the old Changelog
+ section, cleaned the makefiles</td>
+ </tr>
+
+ <tr>
+ <td align="left">Revision 1.6</td>
+
+ <td align="left">2002-02-16</td>
+
+ <td align="left">Revised by: ppadala</td>
+ </tr>
+
+ <tr>
+ <td align="left" colspan="3">Corrected a lot of
+ spelling mistakes, added ACS variables section</td>
+ </tr>
+
+ <tr>
+ <td align="left">Revision 1.5</td>
+
+ <td align="left">2002-01-05</td>
+
+ <td align="left">Revised by: ppadala</td>
+ </tr>
+
+ <tr>
+ <td align="left" colspan="3">Changed structure to
+ present proper TOC</td>
+ </tr>
+
+ <tr>
+ <td align="left">Revision 1.3.1</td>
+
+ <td align="left">2001-07-26</td>
+
+ <td align="left">Revised by: ppadala</td>
+ </tr>
+
+ <tr>
+ <td align="left" colspan="3">Corrected maintainers
+ paragraph, Corrected stable release number</td>
+ </tr>
+
+ <tr>
+ <td align="left">Revision 1.3</td>
+
+ <td align="left">2001-07-24</td>
+
+ <td align="left">Revised by: ppadala</td>
+ </tr>
+
+ <tr>
+ <td align="left" colspan="3">Added copyright notices to
+ main document (LDP license) and programs (GPL),
+ Corrected printw_example.</td>
+ </tr>
+
+ <tr>
+ <td align="left">Revision 1.2</td>
+
+ <td align="left">2001-06-05</td>
+
+ <td align="left">Revised by: ppadala</td>
+ </tr>
+
+ <tr>
+ <td align="left" colspan="3">Incorporated ravi's
+ changes. Mainly to introduction, menu, form, justforfun
+ sections</td>
+ </tr>
+
+ <tr>
+ <td align="left">Revision 1.1</td>
+
+ <td align="left">2001-05-22</td>
+
+ <td align="left">Revised by: ppadala</td>
+ </tr>
+
+ <tr>
+ <td align="left" colspan="3">Added "a word about
+ window" section, Added scanw_example.</td>
+ </tr>
+ </table>
+ </div>
+
+ <div>
+ <div class="ABSTRACT">
+ <a name="AEN67" id="AEN67"></a>
+
+ <p><span class="emphasis"><i class="EMPHASIS">This
+ document is intended to be an "All in One" guide for
+ programming with ncurses and its sister libraries. We
+ graduate from a simple "Hello World" program to more
+ complex form manipulation. No prior experience in ncurses
+ is assumed. Send comments to <a href=
+ "mailto:ppadala@gmail.com" target="_top">this
+ address</a></i></span></p>
+ </div>
+ </div>
+ <hr>
+ </div>
+
+ <div class="TOC">
+ <dl>
+ <dt><b>Table of Contents</b></dt>
+
+ <dt>1. <a href="#INTRO">Introduction</a></dt>
+
+ <dd>
+ <dl>
+ <dt>1.1. <a href="#WHATIS">What is NCURSES?</a></dt>
+
+ <dt>1.2. <a href="#WHATCANWEDO">What we can do with
+ NCURSES</a></dt>
+
+ <dt>1.3. <a href="#WHERETOGETIT">Where to get
+ it</a></dt>
+
+ <dt>1.4. <a href="#PURPOSE">Purpose/Scope of the
+ document</a></dt>
+
+ <dt>1.5. <a href="#ABOUTPROGRAMS">About the
+ Programs</a></dt>
+
+ <dt>1.6. <a href="#OTHERFORMATS">Other Formats of the
+ document</a></dt>
+
+ <dd>
+ <dl>
+ <dt>1.6.1. <a href="#LISTFORMATS">Readily available
+ formats from tldp.org</a></dt>
+
+ <dt>1.6.2. <a href="#BUILDSOURCE">Building from
+ source</a></dt>
+ </dl>
+ </dd>
+
+ <dt>1.7. <a href="#CREDITS">Credits</a></dt>
+
+ <dt>1.8. <a href="#WISHLIST">Wish List</a></dt>
+
+ <dt>1.9. <a href="#COPYRIGHT">Copyright</a></dt>
+ </dl>
+ </dd>
+
+ <dt>2. <a href="#HELLOWORLD">Hello World !!!</a></dt>
+
+ <dd>
+ <dl>
+ <dt>2.1. <a href="#COMPILECURSES">Compiling With the
+ NCURSES Library</a></dt>
+
+ <dt>2.2. <a href="#DISSECTION">Dissection</a></dt>
+
+ <dd>
+ <dl>
+ <dt>2.2.1. <a href="#ABOUT-INITSCR">About
+ initscr()</a></dt>
+
+ <dt>2.2.2. <a href="#MYST-REFRESH">The mysterious
+ refresh()</a></dt>
+
+ <dt>2.2.3. <a href="#ABOUT-ENDWIN">About
+ endwin()</a></dt>
+ </dl>
+ </dd>
+ </dl>
+ </dd>
+
+ <dt>3. <a href="#GORY">The Gory Details</a></dt>
+
+ <dt>4. <a href="#INIT">Initialization</a></dt>
+
+ <dd>
+ <dl>
+ <dt>4.1. <a href="#ABOUTINIT">Initialization
+ functions</a></dt>
+
+ <dt>4.2. <a href="#RAWCBREAK">raw() and
+ cbreak()</a></dt>
+
+ <dt>4.3. <a href="#ECHONOECHO">echo() and
+ noecho()</a></dt>
+
+ <dt>4.4. <a href="#KEYPAD">keypad()</a></dt>
+
+ <dt>4.5. <a href="#HALFDELAY">halfdelay()</a></dt>
+
+ <dt>4.6. <a href="#MISCINIT">Miscellaneous
+ Initialization functions</a></dt>
+
+ <dt>4.7. <a href="#INITEX">An Example</a></dt>
+ </dl>
+ </dd>
+
+ <dt>5. <a href="#AWORDWINDOWS">A Word about
+ Windows</a></dt>
+
+ <dt>6. <a href="#PRINTW">Output functions</a></dt>
+
+ <dd>
+ <dl>
+ <dt>6.1. <a href="#ADDCHCLASS">addch() class of
+ functions</a></dt>
+
+ <dt>6.2. <a href="#AEN298">mvaddch(), waddch() and
+ mvwaddch()</a></dt>
+
+ <dt>6.3. <a href="#PRINTWCLASS">printw() class of
+ functions</a></dt>
+
+ <dd>
+ <dl>
+ <dt>6.3.1. <a href="#PRINTWMVPRINTW">printw() and
+ mvprintw</a></dt>
+
+ <dt>6.3.2. <a href="#WPRINTWMVWPRINTW">wprintw()
+ and mvwprintw</a></dt>
+
+ <dt>6.3.3. <a href="#VWPRINTW">vw_printw()</a></dt>
+
+ <dt>6.3.4. <a href="#SIMPLEPRINTWEX">A Simple
+ printw example</a></dt>
+ </dl>
+ </dd>
+
+ <dt>6.4. <a href="#ADDSTRCLASS">addstr() class of
+ functions</a></dt>
+
+ <dt>6.5. <a href="#ACAUTION">A word of caution</a></dt>
+ </dl>
+ </dd>
+
+ <dt>7. <a href="#SCANW">Input functions</a></dt>
+
+ <dd>
+ <dl>
+ <dt>7.1. <a href="#GETCHCLASS">getch() class of
+ functions</a></dt>
+
+ <dt>7.2. <a href="#SCANWCLASS">scanw() class of
+ functions</a></dt>
+
+ <dd>
+ <dl>
+ <dt>7.2.1. <a href="#SCANWMVSCANW">scanw() and
+ mvscanw</a></dt>
+
+ <dt>7.2.2. <a href="#WSCANWMVWSCANW">wscanw() and
+ mvwscanw()</a></dt>
+
+ <dt>7.2.3. <a href="#VWSCANW">vw_scanw()</a></dt>
+ </dl>
+ </dd>
+
+ <dt>7.3. <a href="#GETSTRCLASS">getstr() class of
+ functions</a></dt>
+
+ <dt>7.4. <a href="#GETSTREX">Some examples</a></dt>
+ </dl>
+ </dd>
+
+ <dt>8. <a href="#ATTRIB">Attributes</a></dt>
+
+ <dd>
+ <dl>
+ <dt>8.1. <a href="#ATTRIBDETAILS">The details</a></dt>
+
+ <dt>8.2. <a href="#ATTRONVSATTRSET">attron() vs
+ attrset()</a></dt>
+
+ <dt>8.3. <a href="#ATTRGET">attr_get()</a></dt>
+
+ <dt>8.4. <a href="#ATTRFUNCS">attr_ functions</a></dt>
+
+ <dt>8.5. <a href="#WATTRFUNCS">wattr functions</a></dt>
+
+ <dt>8.6. <a href="#CHGAT">chgat() functions</a></dt>
+ </dl>
+ </dd>
+
+ <dt>9. <a href="#WINDOWS">Windows</a></dt>
+
+ <dd>
+ <dl>
+ <dt>9.1. <a href="#WINDOWBASICS">The basics</a></dt>
+
+ <dt>9.2. <a href="#LETBEWINDOW">Let there be a Window
+ !!!</a></dt>
+
+ <dt>9.3. <a href="#BORDEREXEXPL">Explanation</a></dt>
+
+ <dt>9.4. <a href="#OTHERSTUFF">The other stuff in the
+ example</a></dt>
+
+ <dt>9.5. <a href="#OTHERBORDERFUNCS">Other Border
+ functions</a></dt>
+ </dl>
+ </dd>
+
+ <dt>10. <a href="#COLOR">Colors</a></dt>
+
+ <dd>
+ <dl>
+ <dt>10.1. <a href="#COLORBASICS">The basics</a></dt>
+
+ <dt>10.2. <a href="#CHANGECOLORDEFS">Changing Color
+ Definitions</a></dt>
+
+ <dt>10.3. <a href="#COLORCONTENT">Color
+ Content</a></dt>
+ </dl>
+ </dd>
+
+ <dt>11. <a href="#KEYS">Interfacing with the key
+ board</a></dt>
+
+ <dd>
+ <dl>
+ <dt>11.1. <a href="#KEYSBASICS">The Basics</a></dt>
+
+ <dt>11.2. <a href="#SIMPLEKEYEX">A Simple Key Usage
+ example</a></dt>
+ </dl>
+ </dd>
+
+ <dt>12. <a href="#MOUSE">Interfacing with the
+ mouse</a></dt>
+
+ <dd>
+ <dl>
+ <dt>12.1. <a href="#MOUSEBASICS">The Basics</a></dt>
+
+ <dt>12.2. <a href="#GETTINGEVENTS">Getting the
+ events</a></dt>
+
+ <dt>12.3. <a href="#MOUSETOGETHER">Putting it all
+ Together</a></dt>
+
+ <dt>12.4. <a href="#MISCMOUSEFUNCS">Miscellaneous
+ Functions</a></dt>
+ </dl>
+ </dd>
+
+ <dt>13. <a href="#SCREEN">Screen Manipulation</a></dt>
+
+ <dd>
+ <dl>
+ <dt>13.1. <a href="#GETYX">getyx() functions</a></dt>
+
+ <dt>13.2. <a href="#SCREENDUMP">Screen Dumping</a></dt>
+
+ <dt>13.3. <a href="#WINDOWDUMP">Window Dumping</a></dt>
+ </dl>
+ </dd>
+
+ <dt>14. <a href="#MISC">Miscellaneous features</a></dt>
+
+ <dd>
+ <dl>
+ <dt>14.1. <a href="#CURSSET">curs_set()</a></dt>
+
+ <dt>14.2. <a href="#TEMPLEAVE">Temporarily Leaving
+ Curses mode</a></dt>
+
+ <dt>14.3. <a href="#ACSVARS">ACS_ variables</a></dt>
+ </dl>
+ </dd>
+
+ <dt>15. <a href="#OTHERLIB">Other libraries</a></dt>
+
+ <dt>16. <a href="#PANELS">Panel Library</a></dt>
+
+ <dd>
+ <dl>
+ <dt>16.1. <a href="#PANELBASICS">The Basics</a></dt>
+
+ <dt>16.2. <a href="#COMPILEPANELS">Compiling With the
+ Panels Library</a></dt>
+
+ <dt>16.3. <a href="#PANELBROWSING">Panel Window
+ Browsing</a></dt>
+
+ <dt>16.4. <a href="#USERPTRUSING">Using User
+ Pointers</a></dt>
+
+ <dt>16.5. <a href="#PANELMOVERESIZE">Moving and
+ Resizing Panels</a></dt>
+
+ <dt>16.6. <a href="#PANELSHOWHIDE">Hiding and Showing
+ Panels</a></dt>
+
+ <dt>16.7. <a href="#PANELABOVE">panel_above() and
+ panel_below() Functions</a></dt>
+ </dl>
+ </dd>
+
+ <dt>17. <a href="#MENUS">Menus Library</a></dt>
+
+ <dd>
+ <dl>
+ <dt>17.1. <a href="#MENUBASICS">The Basics</a></dt>
+
+ <dt>17.2. <a href="#COMPILEMENUS">Compiling With the
+ Menu Library</a></dt>
+
+ <dt>17.3. <a href="#MENUDRIVER">Menu Driver: The work
+ horse of the menu system</a></dt>
+
+ <dt>17.4. <a href="#MENUWINDOWS">Menu Windows</a></dt>
+
+ <dt>17.5. <a href="#SCROLLMENUS">Scrolling
+ Menus</a></dt>
+
+ <dt>17.6. <a href="#MULTICOLUMN">Multi Columnar
+ Menus</a></dt>
+
+ <dt>17.7. <a href="#MULTIVALUEMENUS">Multi Valued
+ Menus</a></dt>
+
+ <dt>17.8. <a href="#MENUOPT">Menu Options</a></dt>
+
+ <dt>17.9. <a href="#MENUUSERPTR">The useful User
+ Pointer</a></dt>
+ </dl>
+ </dd>
+
+ <dt>18. <a href="#FORMS">Forms Library</a></dt>
+
+ <dd>
+ <dl>
+ <dt>18.1. <a href="#FORMBASICS">The Basics</a></dt>
+
+ <dt>18.2. <a href="#COMPILEFORMS">Compiling With the
+ Forms Library</a></dt>
+
+ <dt>18.3. <a href="#PLAYFIELDS">Playing with
+ Fields</a></dt>
+
+ <dd>
+ <dl>
+ <dt>18.3.1. <a href="#FETCHINFO">Fetching Size and
+ Location of Field</a></dt>
+
+ <dt>18.3.2. <a href="#MOVEFIELD">Moving the
+ field</a></dt>
+
+ <dt>18.3.3. <a href="#JUSTIFYFIELD">Field
+ Justification</a></dt>
+
+ <dt>18.3.4. <a href="#FIELDDISPATTRIB">Field
+ Display Attributes</a></dt>
+
+ <dt>18.3.5. <a href="#FIELDOPTIONBITS">Field Option
+ Bits</a></dt>
+
+ <dt>18.3.6. <a href="#FIELDSTATUS">Field
+ Status</a></dt>
+
+ <dt>18.3.7. <a href="#FIELDUSERPTR">Field User
+ Pointer</a></dt>
+
+ <dt>18.3.8. <a href=
+ "#VARIABLESIZEFIELDS">Variable-Sized
+ Fields</a></dt>
+ </dl>
+ </dd>
+
+ <dt>18.4. <a href="#FORMWINDOWS">Form Windows</a></dt>
+
+ <dt>18.5. <a href="#FILEDVALIDATE">Field
+ Validation</a></dt>
+
+ <dt>18.6. <a href="#FORMDRIVER">Form Driver: The work
+ horse of the forms system</a></dt>
+
+ <dd>
+ <dl>
+ <dt>18.6.1. <a href="#PAGENAVREQ">Page Navigation
+ Requests</a></dt>
+
+ <dt>18.6.2. <a href="#INTERFIELDNAVREQ">Inter-Field
+ Navigation Requests</a></dt>
+
+ <dt>18.6.3. <a href="#INTRAFIELDNAVREQ">Intra-Field
+ Navigation Requests</a></dt>
+
+ <dt>18.6.4. <a href="#SCROLLREQ">Scrolling
+ Requests</a></dt>
+
+ <dt>18.6.5. <a href="#EDITREQ">Editing
+ Requests</a></dt>
+
+ <dt>18.6.6. <a href="#ORDERREQ">Order
+ Requests</a></dt>
+
+ <dt>18.6.7. <a href="#APPLICCOMMANDS">Application
+ Commands</a></dt>
+ </dl>
+ </dd>
+ </dl>
+ </dd>
+
+ <dt>19. <a href="#TOOLS">Tools and Widget
+ Libraries</a></dt>
+
+ <dd>
+ <dl>
+ <dt>19.1. <a href="#CDK">CDK (Curses Development
+ Kit)</a></dt>
+
+ <dd>
+ <dl>
+ <dt>19.1.1. <a href="#WIDGETLIST">Widget
+ List</a></dt>
+
+ <dt>19.1.2. <a href="#CDKATTRACT">Some Attractive
+ Features</a></dt>
+
+ <dt>19.1.3. <a href=
+ "#CDKCONCLUSION">Conclusion</a></dt>
+ </dl>
+ </dd>
+
+ <dt>19.2. <a href="#DIALOG">The dialog</a></dt>
+
+ <dt>19.3. <a href="#PERLCURSES">Perl Curses Modules
+ CURSES::FORM and CURSES::WIDGETS</a></dt>
+ </dl>
+ </dd>
+
+ <dt>20. <a href="#JUSTFORFUN">Just For Fun !!!</a></dt>
+
+ <dd>
+ <dl>
+ <dt>20.1. <a href="#GAMEOFLIFE">The Game of
+ Life</a></dt>
+
+ <dt>20.2. <a href="#MAGIC">Magic Square</a></dt>
+
+ <dt>20.3. <a href="#HANOI">Towers of Hanoi</a></dt>
+
+ <dt>20.4. <a href="#QUEENS">Queens Puzzle</a></dt>
+
+ <dt>20.5. <a href="#SHUFFLE">Shuffle</a></dt>
+
+ <dt>20.6. <a href="#TT">Typing Tutor</a></dt>
+ </dl>
+ </dd>
+
+ <dt>21. <a href="#REF">References</a></dt>
+ </dl>
+ </div>
+
+ <div class="SECT1">
+ <h2 class="SECT1"><a name="INTRO" id="INTRO">1.
+ Introduction</a></h2>
+
+ <p>In the olden days of teletype terminals, terminals were
+ away from computers and were connected to them through serial
+ cables. The terminals could be configured by sending a series
+ of bytes. All the capabilities (such as moving the cursor to
+ a new location, erasing part of the screen, scrolling the
+ screen, changing modes etc.) of terminals could be accessed
+ through these series of bytes. These control seeuqnces are
+ usually called escape sequences, because they start with an
+ escape(0x1B) character. Even today, with proper emulation, we
+ can send escape sequences to the emulator and achieve the
+ same effect on a terminal window.</p>
+
+ <p>Suppose you wanted to print a line in color. Try typing
+ this on your console.</p>
+ <pre class="PROGRAMLISTING">
+echo "^[[0;31;40mIn Color"
+</pre>
+
+ <p>The first character is an escape character, which looks
+ like two characters ^ and [. To be able to print it, you have
+ to press CTRL+V and then the ESC key. All the others are
+ normal printable characters. You should be able to see the
+ string "In Color" in red. It stays that way and to revert
+ back to the original mode type this.</p>
+ <pre class="PROGRAMLISTING">
+echo "^[[0;37;40m"
+</pre>
+
+ <p>Now, what do these magic characters mean? Difficult to
+ comprehend? They might even be different for different
+ terminals. So the designers of UNIX invented a mechanism
+ named <tt class="LITERAL">termcap</tt>. It is a file that
+ lists all the capabilities of a particular terminal, along
+ with the escape sequences needed to achieve a particular
+ effect. In the later years, this was replaced by <tt class=
+ "LITERAL">terminfo</tt>. Without delving too much into
+ details, this mechanism allows application programs to query
+ the terminfo database and obtain the control characters to be
+ sent to a terminal or terminal emulator.</p>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="WHATIS" id="WHATIS">1.1. What is
+ NCURSES?</a></h3>
+
+ <p>You might be wondering, what the import of all this
+ technical gibberish is. In the above scenario, every
+ application program is supposed to query the terminfo and
+ perform the necessary stuff (sending control characters
+ etc.). It soon became difficult to manage this complexity
+ and this gave birth to 'CURSES'. Curses is a pun on the
+ name "cursor optimization". The Curses library forms a
+ wrapper over working with raw terminal codes, and provides
+ highly flexible and efficient API (Application Programming
+ Interface). It provides functions to move the cursor,
+ create windows, produce colors, play with mouse etc. The
+ application programs need not worry about the underlying
+ terminal capabilities.</p>
+
+ <p>So what is NCURSES? NCURSES is a clone of the original
+ System V Release 4.0 (SVr4) curses. It is a freely
+ distributable library, fully compatible with older version
+ of curses. In short, it is a library of functions that
+ manages an application's display on character-cell
+ terminals. In the remainder of the document, the terms
+ curses and ncurses are used interchangeably.</p>
+
+ <p>A detailed history of NCURSES can be found in the NEWS
+ file from the source distribution. The current package is
+ maintained by <a href="mailto:dickey@his.com" target=
+ "_top">Thomas Dickey</a>. You can contact the maintainers
+ at <a href="mailto:bug-ncurses@gnu.org" target=
+ "_top">bug-ncurses@gnu.org</a>.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="WHATCANWEDO" id=
+ "WHATCANWEDO">1.2. What we can do with NCURSES</a></h3>
+
+ <p>NCURSES not only creates a wrapper over terminal
+ capabilities, but also gives a robust framework to create
+ nice looking UI (User Interface)s in text mode. It provides
+ functions to create windows etc. Its sister libraries
+ panel, menu and form provide an extension to the basic
+ curses library. These libraries usually come along with
+ curses. One can create applications that contain multiple
+ windows, menus, panels and forms. Windows can be managed
+ independently, can provide 'scrollability' and even can be
+ hidden.</p>
+
+ <p>Menus provide the user with an easy command selection
+ option. Forms allow the creation of easy-to-use data entry
+ and display windows. Panels extend the capabilities of
+ ncurses to deal with overlapping and stacked windows.</p>
+
+ <p>These are just some of the basic things we can do with
+ ncurses. As we move along, We will see all the capabilities
+ of these libraries.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="WHERETOGETIT" id=
+ "WHERETOGETIT">1.3. Where to get it</a></h3>
+
+ <p>All right, now that you know what you can do with
+ ncurses, you must be rearing to get started. NCURSES is
+ usually shipped with your installation. In case you don't
+ have the library or want to compile it on your own, read
+ on.</p>
+
+ <p><span class="emphasis"><i class="EMPHASIS">Compiling the
+ package</i></span></p>
+
+ <p>NCURSES can be obtained from <a href=
+ "ftp://ftp.gnu.org/pub/gnu/ncurses/ncurses.tar.gz" target=
+ "_top">ftp://ftp.gnu.org/pub/gnu/ncurses/ncurses.tar.gz</a>
+ or any of the ftp sites mentioned in <a href=
+ "http://www.gnu.org/order/ftp.html" target=
+ "_top">http://www.gnu.org/order/ftp.html</a>.</p>
+
+ <p>Read the README and INSTALL files for details on to how
+ to install it. It usually involves the following
+ operations.</p>
+ <pre class="PROGRAMLISTING">
+ tar zxvf ncurses&lt;version&gt;.tar.gz # unzip and untar the archive
cd ncurses&lt;version&gt; # cd to the directory
./configure # configure the build according to your
# environment
make # make it
su root # become root
- make install # install it</PRE
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Using the RPM </I
-></SPAN
-></P
-><P
->NCURSES RPM can be found and downloaded from <A
-HREF="http://rpmfind.net"
-TARGET="_top"
->http://rpmfind.net </A
->. The RPM can be installed with the following
-command after becoming root.</P
-><PRE
-CLASS="PROGRAMLISTING"
-> rpm -i &lt;downloaded rpm&gt;</PRE
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="PURPOSE"
->1.4. Purpose/Scope of the document</A
-></H3
-><P
->This document is intended to be a "All in One" guide for programming with
-ncurses and its sister libraries. We graduate from a simple "Hello World"
-program to more complex form manipulation. No prior experience in ncurses is
-assumed. The writing is informal, but a lot of detail is provided for
-each of the examples.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="ABOUTPROGRAMS"
->1.5. About the Programs</A
-></H3
-><P
->All the programs in the document are available in zipped form
-<A
-HREF="http://www.tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs.tar.gz"
-TARGET="_top"
->here</A
->. Unzip and untar it. The directory structure looks like this.</P
-><PRE
-CLASS="PROGRAMLISTING"
->ncurses
+ make install # install it
+</pre>
+
+ <p><span class="emphasis"><i class="EMPHASIS">Using the
+ RPM</i></span></p>
+
+ <p>NCURSES RPM can be found and downloaded from <a href=
+ "http://rpmfind.net" target="_top">http://rpmfind.net</a> .
+ The RPM can be installed with the following command after
+ becoming root.</p>
+ <pre class="PROGRAMLISTING">
+ rpm -i &lt;downloaded rpm&gt;
+</pre>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="PURPOSE" id="PURPOSE">1.4.
+ Purpose/Scope of the document</a></h3>
+
+ <p>This document is intended to be a "All in One" guide for
+ programming with ncurses and its sister libraries. We
+ graduate from a simple "Hello World" program to more
+ complex form manipulation. No prior experience in ncurses
+ is assumed. The writing is informal, but a lot of detail is
+ provided for each of the examples.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="ABOUTPROGRAMS" id=
+ "ABOUTPROGRAMS">1.5. About the Programs</a></h3>
+
+ <p>All the programs in the document are available in zipped
+ form <a href=
+ "http://www.tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs.tar.gz"
+ target="_top">here</a>. Unzip and untar it. The directory
+ structure looks like this.</p>
+ <pre class="PROGRAMLISTING">
+ncurses
|
|----&gt; JustForFun -- just for fun programs
|----&gt; basics -- basic programs
@@ -1290,12 +852,13 @@ CLASS="PROGRAMLISTING"
| by Anuradha Ratnaweera)
|----&gt; Makefile -- the top level Makefile
|----&gt; README -- the top level README file. contains instructions
- |----&gt; COPYING -- copyright notice</PRE
-><P
->The individual directories contain the following files.</P
-><PRE
-CLASS="PROGRAMLISTING"
->Description of files in each directory
+ |----&gt; COPYING -- copyright notice
+</pre>
+
+ <p>The individual directories contain the following
+ files.</p>
+ <pre class="PROGRAMLISTING">
+Description of files in each directory
--------------------------------------
JustForFun
|
@@ -1354,96 +917,86 @@ JustForFun
|----&gt; panel_simple.c -- A simple panel example
perl
- |----&gt; 01-10.pl -- Perl equivalents of first ten example programs</PRE
-><P
->There is a top level Makefile included in the main directory. It builds all the
-files and puts the ready-to-use exes in demo/exe directory. You can also
-do selective make by going into the corresponding directory. Each directory
-contains a README file explaining the purpose of each c file in the directory.</P
-><P
->For every example, I have included path name for the file relative to the
-examples directory. </P
-><P
-> If you prefer browsing individual programs, point your browser to
-<A
-HREF="http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs/"
-TARGET="_top"
->http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs/</A
-></P
-><P
->All the programs are released under the same license that is used by ncurses
-(MIT-style). This gives you the ability to do pretty much anything other than
-claiming them as yours. Feel free to use them in your programs as appropriate.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="OTHERFORMATS"
->1.6. Other Formats of the document</A
-></H3
-><P
->This howto is also availabe in various other formats on the tldp.org site.
-Here are the links to other formats of this document.</P
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="LISTFORMATS"
->1.6.1. Readily available formats from tldp.org</A
-></H4
-><P
-></P
-><UL
-><LI
-><P
-><A
-HREF="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/pdf/NCURSES-Programming-HOWTO.pdf"
-TARGET="_top"
->Acrobat PDF Format</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/ps/NCURSES-Programming-HOWTO.ps.gz"
-TARGET="_top"
->PostScript Format</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html/NCURSES-Programming-HOWTO-html.tar.gz"
-TARGET="_top"
->In Multiple HTML pages</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/NCURSES-Programming-HOWTO.html"
-TARGET="_top"
->In One big HTML format</A
-></P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="BUILDSOURCE"
->1.6.2. Building from source</A
-></H4
-><P
->If above links are broken or if you want to experiment with sgml read on.
-<PRE
-CLASS="PROGRAMLISTING"
->&#13; Get both the source and the tar,gzipped programs, available at
+ |----&gt; 01-10.pl -- Perl equivalents of first ten example programs
+</pre>
+
+ <p>There is a top level Makefile included in the main
+ directory. It builds all the files and puts the
+ ready-to-use exes in demo/exe directory. You can also do
+ selective make by going into the corresponding directory.
+ Each directory contains a README file explaining the
+ purpose of each c file in the directory.</p>
+
+ <p>For every example, I have included path name for the
+ file relative to the examples directory.</p>
+
+ <p>If you prefer browsing individual programs, point your
+ browser to <a href=
+ "http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs/"
+ target=
+ "_top">http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs/</a></p>
+
+ <p>All the programs are released under the same license
+ that is used by ncurses (MIT-style). This gives you the
+ ability to do pretty much anything other than claiming them
+ as yours. Feel free to use them in your programs as
+ appropriate.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="OTHERFORMATS" id=
+ "OTHERFORMATS">1.6. Other Formats of the document</a></h3>
+
+ <p>This howto is also availabe in various other formats on
+ the tldp.org site. Here are the links to other formats of
+ this document.</p>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="LISTFORMATS" id=
+ "LISTFORMATS">1.6.1. Readily available formats from
+ tldp.org</a></h4>
+
+ <ul>
+ <li>
+ <p><a href=
+ "http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/pdf/NCURSES-Programming-HOWTO.pdf"
+ target="_top">Acrobat PDF Format</a></p>
+ </li>
+
+ <li>
+ <p><a href=
+ "http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/ps/NCURSES-Programming-HOWTO.ps.gz"
+ target="_top">PostScript Format</a></p>
+ </li>
+
+ <li>
+ <p><a href=
+ "http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html/NCURSES-Programming-HOWTO-html.tar.gz"
+ target="_top">In Multiple HTML pages</a></p>
+ </li>
+
+ <li>
+ <p><a href=
+ "http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/NCURSES-Programming-HOWTO.html"
+ target="_top">In One big HTML format</a></p>
+ </li>
+ </ul>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="BUILDSOURCE" id=
+ "BUILDSOURCE">1.6.2. Building from source</a></h4>
+
+ <p>If above links are broken or if you want to experiment
+ with sgml read on.</p>
+ <pre class="PROGRAMLISTING">
+&#13; Get both the source and the tar,gzipped programs, available at
http://cvsview.tldp.org/index.cgi/LDP/howto/docbook/
NCURSES-HOWTO/NCURSES-Programming-HOWTO.sgml
http://cvsview.tldp.org/index.cgi/LDP/howto/docbook/
@@ -1464,862 +1017,699 @@ CLASS="PROGRAMLISTING"
NCURSES-ONE-BIG-FILE.html
for ps, you would use
htmldoc --size universal -t ps --firstpage p1 -f &lt;output file name.ps&gt;
- NCURSES-ONE-BIG-FILE.html</PRE
-></P
-><P
->See <A
-HREF="http://www.tldp.org/LDP/LDP-Author-Guide/"
-TARGET="_top"
->LDP Author guide</A
-> for more details. If all else failes, mail me at
-<A
-HREF="ppadala@gmail.com"
-TARGET="_top"
->ppadala@gmail.com</A
-></P
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="CREDITS"
->1.7. Credits</A
-></H3
-><P
->I thank <A
-HREF="mailto:sharath_1@usa.net"
-TARGET="_top"
->Sharath</A
-> and Emre Akbas for
-helping me with few sections. The introduction was initially written by sharath.
-I rewrote it with few excerpts taken from his initial work. Emre helped in
-writing printw and scanw sections.</P
-><P
->Perl equivalents of the example programs are contributed by <A
-HREF="mailto:Aratnaweera@virtusa.com"
-TARGET="_top"
->Anuradha Ratnaweera</A
->. </P
-><P
->Then comes <A
-HREF="mailto:parimi@ece.arizona.edu"
-TARGET="_top"
->Ravi Parimi</A
->, my
-dearest friend, who has been on this project before even one line was written.
-He constantly bombarded me with suggestions and patiently reviewed the whole
-text. He also checked each program on Linux and Solaris. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="WISHLIST"
->1.8. Wish List</A
-></H3
-><P
->This is the wish list, in the order of priority. If you have a wish or you want
-to work on completing the wish, mail <A
-HREF="mailto:ppadala@gmail.com"
-TARGET="_top"
->me</A
->. </P
-><P
-></P
-><UL
-><LI
-><P
->Add examples to last parts of forms section.</P
-></LI
-><LI
-><P
->Prepare a Demo showing all the programs and allow the user to browse through
-description of each program. Let the user compile and see the program in action.
-A dialog based interface is preferred.</P
-></LI
-><LI
-><P
->Add debug info. _tracef, _tracemouse stuff.</P
-></LI
-><LI
-><P
->Accessing termcap, terminfo using functions provided by ncurses
-package.</P
-></LI
-><LI
-><P
->Working on two terminals simultaneously.</P
-></LI
-><LI
-><P
->Add more stuff to miscellaneous section.</P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="COPYRIGHT"
->1.9. Copyright</A
-></H3
-><P
->Copyright &copy; 2001 by Pradeep Padala. </P
-><P
->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:</P
-><P
->The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.</P
-><P
->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.</P
-><P
->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. </P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="HELLOWORLD"
->2. Hello World !!!</A
-></H2
-><P
->Welcome to the world of curses. Before we plunge into the library and look into
-its various features, let's write a simple program and say
-hello to the world. </P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="COMPILECURSES"
->2.1. Compiling With the NCURSES Library</A
-></H3
-><P
->To use ncurses library functions, you have to include ncurses.h in your
-programs. To link the
-program with ncurses the flag -lncurses should be added.</P
-><PRE
-CLASS="PROGRAMLISTING"
-> #include &lt;ncurses.h&gt;
+ NCURSES-ONE-BIG-FILE.html
+</pre>
+
+ <p>See <a href=
+ "http://www.tldp.org/LDP/LDP-Author-Guide/" target=
+ "_top">LDP Author guide</a> for more details. If all else
+ failes, mail me at <a href="ppadala@gmail.com" target=
+ "_top">ppadala@gmail.com</a></p>
+ </div>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="CREDITS" id="CREDITS">1.7.
+ Credits</a></h3>
+
+ <p>I thank <a href="mailto:sharath_1@usa.net" target=
+ "_top">Sharath</a> and Emre Akbas for helping me with few
+ sections. The introduction was initially written by
+ sharath. I rewrote it with few excerpts taken from his
+ initial work. Emre helped in writing printw and scanw
+ sections.</p>
+
+ <p>Perl equivalents of the example programs are contributed
+ by <a href="mailto:Aratnaweera@virtusa.com" target=
+ "_top">Anuradha Ratnaweera</a>.</p>
+
+ <p>Then comes <a href="mailto:parimi@ece.arizona.edu"
+ target="_top">Ravi Parimi</a>, my dearest friend, who has
+ been on this project before even one line was written. He
+ constantly bombarded me with suggestions and patiently
+ reviewed the whole text. He also checked each program on
+ Linux and Solaris.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="WISHLIST" id="WISHLIST">1.8.
+ Wish List</a></h3>
+
+ <p>This is the wish list, in the order of priority. If you
+ have a wish or you want to work on completing the wish,
+ mail <a href="mailto:ppadala@gmail.com" target=
+ "_top">me</a>.</p>
+
+ <ul>
+ <li>
+ <p>Add examples to last parts of forms section.</p>
+ </li>
+
+ <li>
+ <p>Prepare a Demo showing all the programs and allow
+ the user to browse through description of each program.
+ Let the user compile and see the program in action. A
+ dialog based interface is preferred.</p>
+ </li>
+
+ <li>
+ <p>Add debug info. _tracef, _tracemouse stuff.</p>
+ </li>
+
+ <li>
+ <p>Accessing termcap, terminfo using functions provided
+ by ncurses package.</p>
+ </li>
+
+ <li>
+ <p>Working on two terminals simultaneously.</p>
+ </li>
+
+ <li>
+ <p>Add more stuff to miscellaneous section.</p>
+ </li>
+ </ul>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="COPYRIGHT" id="COPYRIGHT">1.9.
+ Copyright</a></h3>
+
+ <p>Copyright &copy; 2001 by Pradeep Padala.</p>
+
+ <p>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:</p>
+
+ <p>The above copyright notice and this permission notice
+ shall be included in all copies or substantial portions of
+ the Software.</p>
+
+ <p>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.</p>
+
+ <p>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.</p>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="HELLOWORLD" id="HELLOWORLD">2.
+ Hello World !!!</a></h2>
+
+ <p>Welcome to the world of curses. Before we plunge into the
+ library and look into its various features, let's write a
+ simple program and say hello to the world.</p>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="COMPILECURSES" id=
+ "COMPILECURSES">2.1. Compiling With the NCURSES
+ Library</a></h3>
+
+ <p>To use ncurses library functions, you have to include
+ ncurses.h in your programs. To link the program with
+ ncurses the flag -lncurses should be added.</p>
+ <pre class="PROGRAMLISTING">
+ #include &lt;ncurses.h&gt;
.
.
.
- compile and link: gcc &lt;program file&gt; -lncurses</PRE
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="BHW"
-></A
-><P
-><B
->Example 1. The Hello World !!! Program </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;ncurses.h&#62;
+ compile and link: gcc &lt;program file&gt; -lncurses
+</pre>
+
+ <div class="EXAMPLE">
+ <a name="BHW" id="BHW"></a>
+
+ <p><b>Example 1. The Hello World !!! Program</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;ncurses.h&gt;
int main()
-{
- initscr(); /* Start curses mode */
- printw("Hello World !!!"); /* Print Hello World */
- refresh(); /* Print it on to the real screen */
- getch(); /* Wait for user input */
- endwin(); /* End curses mode */
-
- return 0;
-}</SPAN
-></PRE
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="DISSECTION"
->2.2. Dissection</A
-></H3
-><P
->
-The above program prints "Hello World !!!" to the screen and exits. This
-program shows how to initialize curses and do screen manipulation and
-end curses mode. Let's dissect it line by line. </P
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="ABOUT-INITSCR"
->2.2.1. About initscr()</A
-></H4
-><P
->The function initscr() initializes the terminal in curses mode. In some
-implementations, it clears the screen and presents a blank screen. To do any
-screen manipulation using curses package this has to be called first. This
-function initializes the curses system and allocates memory for our present
-window (called <TT
-CLASS="LITERAL"
->stdscr</TT
->) and some other data-structures. Under extreme
-cases this function might fail due to insufficient memory to allocate memory
-for curses library's data structures. </P
-><P
->
-After this is done, we can do a variety of initializations to customize
-our curses settings. These details will be explained <A
-HREF="#INIT"
->later </A
->.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="MYST-REFRESH"
->2.2.2. The mysterious refresh()</A
-></H4
-><P
->The next line printw prints the string "Hello World !!!" on to the screen. This
-function is analogous to normal printf in all respects except that it prints
-the data on a window called stdscr at the current (y,x) co-ordinates. Since our
-present co-ordinates are at 0,0 the string is printed at the left hand corner
-of the window.</P
-><P
->This brings us to that mysterious refresh(). Well, when we called printw
-the data is actually written to an imaginary window, which is not updated
-on the screen yet. The job of printw is to update a few flags
-and data structures and write the data to a buffer corresponding to stdscr.
-In order to show it on the screen, we need to call refresh() and tell the
-curses system to dump the contents on the screen.</P
-><P
->The philosophy behind all this is to allow the programmer to do multiple updates
-on the imaginary screen or windows and do a refresh once all his screen update
-is done. refresh() checks the window and updates only the portion which has been
-changed. This improves performance and offers greater flexibility too. But, it is
-sometimes frustrating to beginners. A common mistake committed by beginners is
-to forget to call refresh() after they did some update through printw() class of
-functions. I still forget to add it sometimes :-) </P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="ABOUT-ENDWIN"
->2.2.3. About endwin()</A
-></H4
-><P
->And finally don't forget to end the curses mode. Otherwise your terminal might
-behave strangely after the program quits. endwin() frees the memory taken by
-curses sub-system and its data structures and puts the terminal in normal
-mode. This function must be called after you are done with the curses mode. </P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="GORY"
->3. The Gory Details</A
-></H2
-><P
->Now that we have seen how to write a simple curses program let's get into the
-details. There are many functions that help customize what you see on screen and
-many features which can be put to full use. </P
-><P
->Here we go...</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="INIT"
->4. Initialization</A
-></H2
-><P
->We now know that to initialize curses system the function initscr() has to be
-called. There are functions which can be called after this initialization to
-customize our curses session. We may ask the curses system to set the terminal
-in raw mode or initialize color or initialize the mouse etc.. Let's discuss some
-of the functions that are normally called immediately after initscr();</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="ABOUTINIT"
->4.1. Initialization functions</A
-></H3
-><P
-> </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="RAWCBREAK"
->4.2. raw() and cbreak()</A
-></H3
-><P
->Normally the terminal driver buffers the characters a user types until a new
-line or carriage return is encountered. But most programs require that the
-characters be available as soon as the user types them. The above two functions
-are used to disable line buffering. The difference between these two functions
-is in the way control characters like suspend (CTRL-Z), interrupt and quit
-(CTRL-C) are passed to the program. In the raw() mode these characters are
-directly passed to the program without generating a signal. In the
-<TT
-CLASS="LITERAL"
->cbreak()</TT
-> mode these control characters are
-interpreted as any other character by the terminal driver. I personally prefer
-to use raw() as I can exercise greater control over what the user does.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="ECHONOECHO"
->4.3. echo() and noecho()</A
-></H3
-><P
->
-These functions control the echoing of characters typed by the user to the
-terminal. <TT
-CLASS="LITERAL"
->noecho()</TT
-> switches off echoing. The
-reason you might want to do this is to gain more control over echoing or to
-suppress unnecessary echoing while taking input from the user through the
-getch() etc. functions. Most of the interactive programs call
-<TT
-CLASS="LITERAL"
->noecho()</TT
-> at initialization and do the echoing
-of characters in a controlled manner. It gives the programmer the flexibility
-of echoing characters at any place in the window without updating current (y,x)
-co-ordinates. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="KEYPAD"
->4.4. keypad()</A
-></H3
-><P
->This is my favorite initialization function. It enables the reading of function
-keys like F1, F2, arrow keys etc. Almost every interactive program enables this,
-as arrow keys are a major part of any User Interface. Do
-<TT
-CLASS="LITERAL"
->keypad(stdscr, TRUE) </TT
-> to enable this feature
-for the regular screen (stdscr). You will learn more about key management in
-later sections of this document.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="HALFDELAY"
->4.5. halfdelay()</A
-></H3
-><P
->This function, though not used very often, is a useful one at times.
-halfdelay()is called to enable the half-delay mode, which is similar to the
-cbreak() mode in that characters typed are immediately available to program.
-However, it waits for 'X' tenths of a second for input and then returns ERR, if
-no input is available. 'X' is the timeout value passed to the function
-halfdelay(). This function is useful when you want to ask the user for input,
-and if he doesn't respond with in certain time, we can do some thing else. One
-possible example is a timeout at the password prompt. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="MISCINIT"
->4.6. Miscellaneous Initialization functions</A
-></H3
-><P
->There are few more functions which are called at initialization to
-customize curses behavior. They are not used as extensively as those mentioned
-above. Some of them are explained where appropriate.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="INITEX"
->4.7. An Example</A
-></H3
-><P
->Let's write a program which will clarify the usage of these functions.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="BINFU"
-></A
-><P
-><B
->Example 2. Initialization Function Usage example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;ncurses.h&#62;
+{
+ initscr(); /* Start curses mode */
+ printw("Hello World !!!"); /* Print Hello World */
+ refresh(); /* Print it on to the real screen */
+ getch(); /* Wait for user input */
+ endwin(); /* End curses mode */
+
+ return 0;
+}</span>
+</pre>
+ </div>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="DISSECTION" id="DISSECTION">2.2.
+ Dissection</a></h3>
+
+ <p>The above program prints "Hello World !!!" to the screen
+ and exits. This program shows how to initialize curses and
+ do screen manipulation and end curses mode. Let's dissect
+ it line by line.</p>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="ABOUT-INITSCR" id=
+ "ABOUT-INITSCR">2.2.1. About initscr()</a></h4>
+
+ <p>The function initscr() initializes the terminal in
+ curses mode. In some implementations, it clears the
+ screen and presents a blank screen. To do any screen
+ manipulation using curses package this has to be called
+ first. This function initializes the curses system and
+ allocates memory for our present window (called
+ <tt class="LITERAL">stdscr</tt>) and some other
+ data-structures. Under extreme cases this function might
+ fail due to insufficient memory to allocate memory for
+ curses library's data structures.</p>
+
+ <p>After this is done, we can do a variety of
+ initializations to customize our curses settings. These
+ details will be explained <a href="#INIT">later</a> .</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="MYST-REFRESH" id=
+ "MYST-REFRESH">2.2.2. The mysterious refresh()</a></h4>
+
+ <p>The next line printw prints the string "Hello World
+ !!!" on to the screen. This function is analogous to
+ normal printf in all respects except that it prints the
+ data on a window called stdscr at the current (y,x)
+ co-ordinates. Since our present co-ordinates are at 0,0
+ the string is printed at the left hand corner of the
+ window.</p>
+
+ <p>This brings us to that mysterious refresh(). Well,
+ when we called printw the data is actually written to an
+ imaginary window, which is not updated on the screen yet.
+ The job of printw is to update a few flags and data
+ structures and write the data to a buffer corresponding
+ to stdscr. In order to show it on the screen, we need to
+ call refresh() and tell the curses system to dump the
+ contents on the screen.</p>
+
+ <p>The philosophy behind all this is to allow the
+ programmer to do multiple updates on the imaginary screen
+ or windows and do a refresh once all his screen update is
+ done. refresh() checks the window and updates only the
+ portion which has been changed. This improves performance
+ and offers greater flexibility too. But, it is sometimes
+ frustrating to beginners. A common mistake committed by
+ beginners is to forget to call refresh() after they did
+ some update through printw() class of functions. I still
+ forget to add it sometimes :-)</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="ABOUT-ENDWIN" id=
+ "ABOUT-ENDWIN">2.2.3. About endwin()</a></h4>
+
+ <p>And finally don't forget to end the curses mode.
+ Otherwise your terminal might behave strangely after the
+ program quits. endwin() frees the memory taken by curses
+ sub-system and its data structures and puts the terminal
+ in normal mode. This function must be called after you
+ are done with the curses mode.</p>
+ </div>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="GORY" id="GORY">3. The Gory
+ Details</a></h2>
+
+ <p>Now that we have seen how to write a simple curses program
+ let's get into the details. There are many functions that
+ help customize what you see on screen and many features which
+ can be put to full use.</p>
+
+ <p>Here we go...</p>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="INIT" id="INIT">4.
+ Initialization</a></h2>
+
+ <p>We now know that to initialize curses system the function
+ initscr() has to be called. There are functions which can be
+ called after this initialization to customize our curses
+ session. We may ask the curses system to set the terminal in
+ raw mode or initialize color or initialize the mouse etc..
+ Let's discuss some of the functions that are normally called
+ immediately after initscr();</p>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="ABOUTINIT" id="ABOUTINIT">4.1.
+ Initialization functions</a></h3>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="RAWCBREAK" id="RAWCBREAK">4.2.
+ raw() and cbreak()</a></h3>
+
+ <p>Normally the terminal driver buffers the characters a
+ user types until a new line or carriage return is
+ encountered. But most programs require that the characters
+ be available as soon as the user types them. The above two
+ functions are used to disable line buffering. The
+ difference between these two functions is in the way
+ control characters like suspend (CTRL-Z), interrupt and
+ quit (CTRL-C) are passed to the program. In the raw() mode
+ these characters are directly passed to the program without
+ generating a signal. In the <tt class=
+ "LITERAL">cbreak()</tt> mode these control characters are
+ interpreted as any other character by the terminal driver.
+ I personally prefer to use raw() as I can exercise greater
+ control over what the user does.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="ECHONOECHO" id="ECHONOECHO">4.3.
+ echo() and noecho()</a></h3>
+
+ <p>These functions control the echoing of characters typed
+ by the user to the terminal. <tt class=
+ "LITERAL">noecho()</tt> switches off echoing. The reason
+ you might want to do this is to gain more control over
+ echoing or to suppress unnecessary echoing while taking
+ input from the user through the getch() etc. functions.
+ Most of the interactive programs call <tt class=
+ "LITERAL">noecho()</tt> at initialization and do the
+ echoing of characters in a controlled manner. It gives the
+ programmer the flexibility of echoing characters at any
+ place in the window without updating current (y,x)
+ co-ordinates.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="KEYPAD" id="KEYPAD">4.4.
+ keypad()</a></h3>
+
+ <p>This is my favorite initialization function. It enables
+ the reading of function keys like F1, F2, arrow keys etc.
+ Almost every interactive program enables this, as arrow
+ keys are a major part of any User Interface. Do <tt class=
+ "LITERAL">keypad(stdscr, TRUE)</tt> to enable this feature
+ for the regular screen (stdscr). You will learn more about
+ key management in later sections of this document.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="HALFDELAY" id="HALFDELAY">4.5.
+ halfdelay()</a></h3>
+
+ <p>This function, though not used very often, is a useful
+ one at times. halfdelay()is called to enable the half-delay
+ mode, which is similar to the cbreak() mode in that
+ characters typed are immediately available to program.
+ However, it waits for 'X' tenths of a second for input and
+ then returns ERR, if no input is available. 'X' is the
+ timeout value passed to the function halfdelay(). This
+ function is useful when you want to ask the user for input,
+ and if he doesn't respond with in certain time, we can do
+ some thing else. One possible example is a timeout at the
+ password prompt.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="MISCINIT" id="MISCINIT">4.6.
+ Miscellaneous Initialization functions</a></h3>
+
+ <p>There are few more functions which are called at
+ initialization to customize curses behavior. They are not
+ used as extensively as those mentioned above. Some of them
+ are explained where appropriate.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="INITEX" id="INITEX">4.7. An
+ Example</a></h3>
+
+ <p>Let's write a program which will clarify the usage of
+ these functions.</p>
+
+ <div class="EXAMPLE">
+ <a name="BINFU" id="BINFU"></a>
+
+ <p><b>Example 2. Initialization Function Usage
+ example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;ncurses.h&gt;
int main()
-{ int ch;
-
- initscr(); /* Start curses mode */
- raw(); /* Line buffering disabled */
- keypad(stdscr, TRUE); /* We get F1, F2 etc.. */
- noecho(); /* Don't echo() while we do getch */
-
- printw("Type any character to see it in bold\n");
- ch = getch(); /* If raw() hadn't been called
- * we have to press enter before it
- * gets to the program */
- if(ch == KEY_F(1)) /* Without keypad enabled this will */
- printw("F1 Key pressed");/* not get to us either */
- /* Without noecho() some ugly escape
- * charachters might have been printed
- * on screen */
- else
- { printw("The pressed key is ");
- attron(A_BOLD);
- printw("%c", ch);
- attroff(A_BOLD);
- }
- refresh(); /* Print it on to the real screen */
- getch(); /* Wait for user input */
- endwin(); /* End curses mode */
-
- return 0;
-}</SPAN
-></PRE
-></DIV
-><P
->This program is self-explanatory. But I used functions which aren't explained
-yet. The function <TT
-CLASS="LITERAL"
->getch()</TT
-> is used to get a
-character from user. It is equivalent to normal
-<TT
-CLASS="LITERAL"
->getchar()</TT
-> except that we can disable the line
-buffering to avoid &lt;enter&gt; after input. Look for more about
-<TT
-CLASS="LITERAL"
->getch()</TT
->and reading keys in the <A
-HREF="#KEYS"
-> key management section </A
->. The functions attron and attroff
-are used to switch some attributes on and off respectively. In the example I
-used them to print the character in bold. These functions are explained in detail
-later.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AWORDWINDOWS"
->5. A Word about Windows</A
-></H2
-><P
->
-Before we plunge into the myriad ncurses functions, let me clear few things
-about windows. Windows are explained in detail in following <A
-HREF="#WINDOWS"
-> sections </A
-></P
-><P
->A Window is an imaginary screen defined by curses system. A window does not mean
-a bordered window which you usually see on Win9X platforms. When curses is
-initialized, it creates a default window named
-<TT
-CLASS="LITERAL"
->stdscr</TT
-> which represents your 80x25 (or the size
-of window in which you are running) screen. If you are doing simple tasks like
-printing few strings, reading input etc., you can safely use this single window
-for all of your purposes. You can also create windows and call functions which
-explicitly work on the specified window.</P
-><P
->For example, if you call</P
-><PRE
-CLASS="PROGRAMLISTING"
-> printw("Hi There !!!");
- refresh();</PRE
-><P
->It prints the string on stdscr at the present cursor position. Similarly the
-call to refresh(), works on stdscr only. </P
-><P
->Say you have created <A
-HREF="#WINDOWS"
->windows</A
-> then you have to
-call a function with a 'w' added to the usual function.</P
-><PRE
-CLASS="PROGRAMLISTING"
-> wprintw(win, "Hi There !!!");
- wrefresh(win);</PRE
-><P
->As you will see in the rest of the document, naming of functions follow the
-same convention. For each function there usually are three more functions.</P
-><PRE
-CLASS="PROGRAMLISTING"
-> printw(string); /* Print on stdscr at present cursor position */
+{ int ch;
+
+ initscr(); /* Start curses mode */
+ raw(); /* Line buffering disabled */
+ keypad(stdscr, TRUE); /* We get F1, F2 etc.. */
+ noecho(); /* Don't echo() while we do getch */
+
+ printw("Type any character to see it in bold\n");
+ ch = getch(); /* If raw() hadn't been called
+ * we have to press enter before it
+ * gets to the program */
+ if(ch == KEY_F(1)) /* Without keypad enabled this will */
+ printw("F1 Key pressed");/* not get to us either */
+ /* Without noecho() some ugly escape
+ * charachters might have been printed
+ * on screen */
+ else
+ { printw("The pressed key is ");
+ attron(A_BOLD);
+ printw("%c", ch);
+ attroff(A_BOLD);
+ }
+ refresh(); /* Print it on to the real screen */
+ getch(); /* Wait for user input */
+ endwin(); /* End curses mode */
+
+ return 0;
+}</span>
+</pre>
+ </div>
+
+ <p>This program is self-explanatory. But I used functions
+ which aren't explained yet. The function <tt class=
+ "LITERAL">getch()</tt> is used to get a character from
+ user. It is equivalent to normal <tt class=
+ "LITERAL">getchar()</tt> except that we can disable the
+ line buffering to avoid &lt;enter&gt; after input. Look for
+ more about <tt class="LITERAL">getch()</tt>and reading keys
+ in the <a href="#KEYS">key management section</a> . The
+ functions attron and attroff are used to switch some
+ attributes on and off respectively. In the example I used
+ them to print the character in bold. These functions are
+ explained in detail later.</p>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="AWORDWINDOWS" id="AWORDWINDOWS">5.
+ A Word about Windows</a></h2>
+
+ <p>Before we plunge into the myriad ncurses functions, let me
+ clear few things about windows. Windows are explained in
+ detail in following <a href="#WINDOWS">sections</a></p>
+
+ <p>A Window is an imaginary screen defined by curses system.
+ A window does not mean a bordered window which you usually
+ see on Win9X platforms. When curses is initialized, it
+ creates a default window named <tt class=
+ "LITERAL">stdscr</tt> which represents your 80x25 (or the
+ size of window in which you are running) screen. If you are
+ doing simple tasks like printing few strings, reading input
+ etc., you can safely use this single window for all of your
+ purposes. You can also create windows and call functions
+ which explicitly work on the specified window.</p>
+
+ <p>For example, if you call</p>
+ <pre class="PROGRAMLISTING">
+ printw("Hi There !!!");
+ refresh();
+</pre>
+
+ <p>It prints the string on stdscr at the present cursor
+ position. Similarly the call to refresh(), works on stdscr
+ only.</p>
+
+ <p>Say you have created <a href="#WINDOWS">windows</a> then
+ you have to call a function with a 'w' added to the usual
+ function.</p>
+ <pre class="PROGRAMLISTING">
+ wprintw(win, "Hi There !!!");
+ wrefresh(win);
+</pre>
+
+ <p>As you will see in the rest of the document, naming of
+ functions follow the same convention. For each function there
+ usually are three more functions.</p>
+ <pre class="PROGRAMLISTING">
+ printw(string); /* Print on stdscr at present cursor position */
mvprintw(y, x, string);/* Move to (y, x) then print string */
wprintw(win, string); /* Print on window win at present cursor position */
/* in the window */
mvwprintw(win, y, x, string); /* Move to (y, x) relative to window */
- /* co-ordinates and then print */</PRE
-><P
->Usually the w-less functions are macros which expand to corresponding w-function
-with stdscr as the window parameter.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="PRINTW"
->6. Output functions</A
-></H2
-><P
->I guess you can't wait any more to see some action. Back to our odyssey of
-curses functions. Now that curses is initialized, let's interact with
-world.</P
-><P
->There are three classes of functions which you can use to do output on screen.
-<P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->addch() class: Print single character with attributes </P
-></LI
-><LI
-><P
->printw() class: Print formatted output similar to printf()</P
-></LI
-><LI
-><P
->addstr() class: Print strings</P
-></LI
-></OL
-></P
-><P
->These functions can be used interchangeably and it's a matter of style as to
-which class is used. Let's see each one in detail.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="ADDCHCLASS"
->6.1. addch() class of functions</A
-></H3
-><P
->These functions put a single character into the current cursor location and
-advance the position of the cursor. You can give the character to be printed but
-they usually are used to print a character with some attributes. Attributes are
-explained in detail in later <A
-HREF="#ATTRIB"
-> sections </A
-> of the
-document. If a character is associated with an attribute(bold, reverse video
-etc.), when curses prints the character, it is printed in that attribute.</P
-><P
->In order to combine a character with some attributes, you have two options:</P
-><P
-></P
-><UL
-><LI
-><P
->By OR'ing a single character with the desired attribute macros. These attribute
-macros could be found in the header file
-<TT
-CLASS="LITERAL"
->ncurses.h</TT
->. For example, you want to print a
-character ch(of type char) bold and underlined, you would call addch() as below.
-<PRE
-CLASS="PROGRAMLISTING"
-> addch(ch | A_BOLD | A_UNDERLINE);</PRE
-></P
-></LI
-><LI
-><P
->By using functions like <TT
-CLASS="LITERAL"
->attrset(),attron(),attroff()</TT
->. These functions are explained in the <A
-HREF="#ATTRIB"
->Attributes</A
-> section. Briefly, they manipulate the current attributes of
-the given window. Once set, the character printed in the window are associated
-with the attributes until it is turned off.</P
-></LI
-></UL
-><P
->Additionally, <TT
-CLASS="LITERAL"
->curses</TT
-> provides some special
-characters for character-based graphics. You can draw tables, horizontal or
-vertical lines, etc. You can find all avaliable characters in the header file
-<TT
-CLASS="LITERAL"
->ncurses.h</TT
->. Try looking for macros beginning
-with <TT
-CLASS="LITERAL"
->ACS_</TT
-> in this file. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN298"
->6.2. mvaddch(), waddch() and mvwaddch()</A
-></H3
-><P
-><TT
-CLASS="LITERAL"
->mvaddch()</TT
-> is used to move the cursor to a
-given point, and then print. Thus, the calls:
-<PRE
-CLASS="PROGRAMLISTING"
-> move(row,col); /* moves the cursor to row<SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->th</I
-></SPAN
-> row and col<SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->th</I
-></SPAN
-> column */
- addch(ch);</PRE
->
-can be replaced by
-<PRE
-CLASS="PROGRAMLISTING"
-> mvaddch(row,col,ch);</PRE
-></P
-><P
-><TT
-CLASS="LITERAL"
->waddch()</TT
-> is similar to
-<TT
-CLASS="LITERAL"
->addch()</TT
->, except that it adds a character into
-the given window. (Note that <TT
-CLASS="LITERAL"
->addch()</TT
-> adds a
-character into the window <TT
-CLASS="LITERAL"
->stdscr</TT
->.)</P
-><P
->In a similar fashion <TT
-CLASS="LITERAL"
->mvwaddch()</TT
-> function is
-used to add a character into the given window at the given coordinates.</P
-><P
->Now, we are familiar with the basic output function
-<TT
-CLASS="LITERAL"
->addch()</TT
->. But, if we want to print a string, it
-would be very annoying to print it character by character. Fortunately,
-<TT
-CLASS="LITERAL"
->ncurses</TT
-> provides <TT
-CLASS="LITERAL"
->printf</TT
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->-like</I
-></SPAN
-> or
-<TT
-CLASS="LITERAL"
->puts</TT
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->-like</I
-></SPAN
-> functions.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="PRINTWCLASS"
->6.3. printw() class of functions</A
-></H3
-><P
->These functions are similar to <TT
-CLASS="LITERAL"
->printf()</TT
-> with
-the added capability of printing at any position on the screen. </P
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="PRINTWMVPRINTW"
->6.3.1. printw() and mvprintw</A
-></H4
-><P
->These two functions work much like <TT
-CLASS="LITERAL"
->printf()</TT
->.
-<TT
-CLASS="LITERAL"
->mvprintw()</TT
-> can be used to move the cursor to a
-position and then print. If you want to move the cursor first and then print
-using <TT
-CLASS="LITERAL"
->printw()</TT
-> function, use
-<TT
-CLASS="LITERAL"
->move() </TT
-> first and then use
-<TT
-CLASS="LITERAL"
->printw()</TT
-> though I see no point why one should
-avoid using <TT
-CLASS="LITERAL"
->mvprintw()</TT
->, you have the
-flexibility to manipulate. </P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="WPRINTWMVWPRINTW"
->6.3.2. wprintw() and mvwprintw</A
-></H4
-><P
->These two functions are similar to above two except that they print in the
-corresponding window given as argument. </P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="VWPRINTW"
->6.3.3. vwprintw()</A
-></H4
-><P
->This function is similar to <TT
-CLASS="LITERAL"
->vprintf()</TT
->. This can
-be used when variable number of arguments are to be printed.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="SIMPLEPRINTWEX"
->6.3.4. A Simple printw example</A
-></H4
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="BPREX"
-></A
-><P
-><B
->Example 3. A Simple printw example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;ncurses.h&#62; /* ncurses.h includes stdio.h */
-#include &#60;string.h&#62;
+ /* co-ordinates and then print */
+</pre>
+
+ <p>Usually the w-less functions are macros which expand to
+ corresponding w-function with stdscr as the window
+ parameter.</p>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="PRINTW" id="PRINTW">6. Output
+ functions</a></h2>
+
+ <p>I guess you can't wait any more to see some action. Back
+ to our odyssey of curses functions. Now that curses is
+ initialized, let's interact with world.</p>
+
+ <p>There are three classes of functions which you can use to
+ do output on screen.</p>
+
+ <ol type="1">
+ <li>
+ <p>addch() class: Print single character with
+ attributes</p>
+ </li>
+
+ <li>
+ <p>printw() class: Print formatted output similar to
+ printf()</p>
+ </li>
+
+ <li>
+ <p>addstr() class: Print strings</p>
+ </li>
+ </ol>
+
+ <p>These functions can be used interchangeably and it's a
+ matter of style as to which class is used. Let's see each one
+ in detail.</p>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="ADDCHCLASS" id="ADDCHCLASS">6.1.
+ addch() class of functions</a></h3>
+
+ <p>These functions put a single character into the current
+ cursor location and advance the position of the cursor. You
+ can give the character to be printed but they usually are
+ used to print a character with some attributes. Attributes
+ are explained in detail in later <a href=
+ "#ATTRIB">sections</a> of the document. If a character is
+ associated with an attribute(bold, reverse video etc.),
+ when curses prints the character, it is printed in that
+ attribute.</p>
+
+ <p>In order to combine a character with some attributes,
+ you have two options:</p>
+
+ <ul>
+ <li>
+ <p>By OR'ing a single character with the desired
+ attribute macros. These attribute macros could be found
+ in the header file <tt class="LITERAL">ncurses.h</tt>.
+ For example, you want to print a character ch(of type
+ char) bold and underlined, you would call addch() as
+ below.</p>
+ <pre class="PROGRAMLISTING">
+ addch(ch | A_BOLD | A_UNDERLINE);
+</pre>
+ </li>
+
+ <li>
+ <p>By using functions like <tt class=
+ "LITERAL">attrset(),attron(),attroff()</tt>. These
+ functions are explained in the <a href=
+ "#ATTRIB">Attributes</a> section. Briefly, they
+ manipulate the current attributes of the given window.
+ Once set, the character printed in the window are
+ associated with the attributes until it is turned
+ off.</p>
+ </li>
+ </ul>
+
+ <p>Additionally, <tt class="LITERAL">curses</tt> provides
+ some special characters for character-based graphics. You
+ can draw tables, horizontal or vertical lines, etc. You can
+ find all avaliable characters in the header file <tt class=
+ "LITERAL">ncurses.h</tt>. Try looking for macros beginning
+ with <tt class="LITERAL">ACS_</tt> in this file.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="AEN298" id="AEN298">6.2.
+ mvaddch(), waddch() and mvwaddch()</a></h3>
+
+ <p><tt class="LITERAL">mvaddch()</tt> is used to move the
+ cursor to a given point, and then print. Thus, the
+ calls:</p>
+ <pre class="PROGRAMLISTING">
+ move(row,col); /* moves the cursor to row<span class=
+"emphasis"><i class=
+"EMPHASIS">th</i></span> row and col<span class="emphasis"><i class="EMPHASIS">th</i></span> column */
+ addch(ch);
+</pre>can be replaced by
+ <pre class="PROGRAMLISTING">
+ mvaddch(row,col,ch);
+</pre>
+
+ <p><tt class="LITERAL">waddch()</tt> is similar to
+ <tt class="LITERAL">addch()</tt>, except that it adds a
+ character into the given window. (Note that <tt class=
+ "LITERAL">addch()</tt> adds a character into the window
+ <tt class="LITERAL">stdscr</tt>.)</p>
+
+ <p>In a similar fashion <tt class="LITERAL">mvwaddch()</tt>
+ function is used to add a character into the given window
+ at the given coordinates.</p>
+
+ <p>Now, we are familiar with the basic output function
+ <tt class="LITERAL">addch()</tt>. But, if we want to print
+ a string, it would be very annoying to print it character
+ by character. Fortunately, <tt class="LITERAL">ncurses</tt>
+ provides <tt class="LITERAL">printf</tt><span class=
+ "emphasis"><i class="EMPHASIS">-like</i></span> or
+ <tt class="LITERAL">puts</tt><span class=
+ "emphasis"><i class="EMPHASIS">-like</i></span>
+ functions.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="PRINTWCLASS" id=
+ "PRINTWCLASS">6.3. printw() class of functions</a></h3>
+
+ <p>These functions are similar to <tt class=
+ "LITERAL">printf()</tt> with the added capability of
+ printing at any position on the screen.</p>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="PRINTWMVPRINTW" id=
+ "PRINTWMVPRINTW">6.3.1. printw() and mvprintw</a></h4>
+
+ <p>These two functions work much like <tt class=
+ "LITERAL">printf()</tt>. <tt class=
+ "LITERAL">mvprintw()</tt> can be used to move the cursor
+ to a position and then print. If you want to move the
+ cursor first and then print using <tt class=
+ "LITERAL">printw()</tt> function, use <tt class=
+ "LITERAL">move()</tt> first and then use <tt class=
+ "LITERAL">printw()</tt> though I see no point why one
+ should avoid using <tt class="LITERAL">mvprintw()</tt>,
+ you have the flexibility to manipulate.</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="WPRINTWMVWPRINTW" id=
+ "WPRINTWMVWPRINTW">6.3.2. wprintw() and
+ mvwprintw</a></h4>
+
+ <p>These two functions are similar to above two except
+ that they print in the corresponding window given as
+ argument.</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="VWPRINTW" id="VWPRINTW">6.3.3.
+ vw_printw()</a></h4>
+
+ <p>This function is similar to <tt class=
+ "LITERAL">vprintf()</tt>. This can be used when variable
+ number of arguments are to be printed.</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="SIMPLEPRINTWEX" id=
+ "SIMPLEPRINTWEX">6.3.4. A Simple printw example</a></h4>
+
+ <div class="EXAMPLE">
+ <a name="BPREX" id="BPREX"></a>
+
+ <p><b>Example 3. A Simple printw example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class=
+"INLINEMEDIAOBJECT">#include &lt;ncurses.h&gt; /* ncurses.h includes stdio.h */
+#include &lt;string.h&gt;
int main()
{
- char mesg[]="Just a string"; /* message to be appeared on the screen */
- int row,col; /* to store the number of rows and *
- * the number of colums of the screen */
- initscr(); /* start the curses mode */
- getmaxyx(stdscr,row,col); /* get the number of rows and columns */
+ char mesg[]="Just a string"; /* message to be appeared on the screen */
+ int row,col; /* to store the number of rows and *
+ * the number of colums of the screen */
+ initscr(); /* start the curses mode */
+ getmaxyx(stdscr,row,col); /* get the number of rows and columns */
mvprintw(row/2,(col-strlen(mesg))/2,"%s",mesg);
- /* print the message at the center of the screen */
+ /* print the message at the center of the screen */
mvprintw(row-2,0,"This screen has %d rows and %d columns\n",row,col);
printw("Try resizing your window(if possible) and then run this program again");
refresh();
@@ -2327,302 +1717,231 @@ int main()
endwin();
return 0;
-}</SPAN
-></PRE
-></DIV
-><P
->Above program demonstrates how easy it is to use <TT
-CLASS="LITERAL"
->printw</TT
->. You just feed the coordinates and the message to be appeared
-on the screen, then it does what you want.</P
-><P
->The above program introduces us to a new function
-<TT
-CLASS="LITERAL"
->getmaxyx()</TT
->, a macro defined in
-<TT
-CLASS="LITERAL"
->ncurses.h</TT
->. It gives the number of columns and
-the number of rows in a given window.
-<TT
-CLASS="LITERAL"
->getmaxyx()</TT
-> does this by updating the variables
-given to it. Since <TT
-CLASS="LITERAL"
->getmaxyx()</TT
-> is not a function
-we don't pass pointers to it, we just give two integer variables. </P
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="ADDSTRCLASS"
->6.4. addstr() class of functions</A
-></H3
-><P
-><TT
-CLASS="LITERAL"
->addstr()</TT
-> is used to put a character string into
-a given window. This function is similar to calling
-<TT
-CLASS="LITERAL"
->addch()</TT
-> once for each character in a given
-string. This is true for all output functions. There are other functions from
-this family such as <TT
-CLASS="LITERAL"
->mvaddstr(),mvwaddstr()</TT
-> and
-<TT
-CLASS="LITERAL"
->waddstr()</TT
->, which obey the naming convention of
-curses.(e.g. mvaddstr() is similar to the respective calls move() and then
-addstr().) Another function of this family is addnstr(), which takes an integer
-parameter(say n) additionally. This function puts at most n characters into the
-screen. If n is negative, then the entire string will be added. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="ACAUTION"
->6.5. A word of caution</A
-></H3
-><P
->All these functions take y co-ordinate first and then x in their arguments.
-A common mistake by beginners is to pass x,y in that order. If you are
-doing too many manipulations of (y,x) co-ordinates, think of dividing the
-screen into windows and manipulate each one separately. Windows are explained
-in the <A
-HREF="#WINDOWS"
-> windows </A
-> section.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="SCANW"
->7. Input functions</A
-></H2
-><P
->Well, printing without taking input, is boring. Let's see functions which
-allow us to get input from user. These functions also can be divided into
-three categories.</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->getch() class: Get a character</P
-></LI
-><LI
-><P
->scanw() class: Get formatted input</P
-></LI
-><LI
-><P
->getstr() class: Get strings</P
-></LI
-></OL
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="GETCHCLASS"
->7.1. getch() class of functions</A
-></H3
-><P
->These functions read a single character from the terminal. But there are several
-subtle facts to consider. For example if you don't use the function cbreak(),
-curses will not read your input characters contiguously but will begin read them
-only after a new line or an EOF is encountered. In order to avoid this, the
-cbreak() function must used so that characters are immediately available to your
-program. Another widely used function is noecho(). As the name suggests, when
-this function is set (used), the characters that are keyed in by the user will
-not show up on the screen. The two functions cbreak() and noecho() are typical
-examples of key management. Functions of this genre are explained in the
-<A
-HREF="#KEYS"
->key management section </A
->.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="SCANWCLASS"
->7.2. scanw() class of functions</A
-></H3
-><P
->These functions are similar to <TT
-CLASS="LITERAL"
->scanf()</TT
-> with the
-added capability of getting the input from any location on the screen.</P
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="SCANWMVSCANW"
->7.2.1. scanw() and mvscanw</A
-></H4
-><P
->The usage of these functions is similar to that of
-<TT
-CLASS="LITERAL"
->sscanf()</TT
->, where the line to be scanned is
-provided by <TT
-CLASS="LITERAL"
->wgetstr()</TT
-> function. That is, these
-functions call to <TT
-CLASS="LITERAL"
->wgetstr()</TT
-> function(explained
-below) and uses the resulting line for a scan. </P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="WSCANWMVWSCANW"
->7.2.2. wscanw() and mvwscanw()</A
-></H4
-><P
->These are similar to above two functions except that they read from a window,
-which is supplied as one of the arguments to these functions. </P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="VWSCANW"
->7.2.3. vwscanw()</A
-></H4
-><P
->This function is similar to <TT
-CLASS="LITERAL"
->vscanf()</TT
->. This can
-be used when a variable number of arguments are to be scanned.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="GETSTRCLASS"
->7.3. getstr() class of functions</A
-></H3
-><P
->These functions are used to get strings from the terminal. In essence, this
-function performs the same task as would be achieved by a series of calls to
-<TT
-CLASS="LITERAL"
->getch()</TT
-> until a newline, carriage return, or
-end-of-file is received. The resulting string of characters are pointed to by
-<TT
-CLASS="LITERAL"
->str</TT
->, which is a character pointer provided by
-the user.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="GETSTREX"
->7.4. Some examples</A
-></H3
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="BSCEX"
-></A
-><P
-><B
->Example 4. A Simple scanw example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;ncurses.h&#62; /* ncurses.h includes stdio.h */
-#include &#60;string.h&#62;
+}</span>
+</pre>
+ </div>
+
+ <p>Above program demonstrates how easy it is to use
+ <tt class="LITERAL">printw</tt>. You just feed the
+ coordinates and the message to be appeared on the screen,
+ then it does what you want.</p>
+
+ <p>The above program introduces us to a new function
+ <tt class="LITERAL">getmaxyx()</tt>, a macro defined in
+ <tt class="LITERAL">ncurses.h</tt>. It gives the number
+ of columns and the number of rows in a given window.
+ <tt class="LITERAL">getmaxyx()</tt> does this by updating
+ the variables given to it. Since <tt class=
+ "LITERAL">getmaxyx()</tt> is not a function we don't pass
+ pointers to it, we just give two integer variables.</p>
+ </div>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="ADDSTRCLASS" id=
+ "ADDSTRCLASS">6.4. addstr() class of functions</a></h3>
+
+ <p><tt class="LITERAL">addstr()</tt> is used to put a
+ character string into a given window. This function is
+ similar to calling <tt class="LITERAL">addch()</tt> once
+ for each character in a given string. This is true for all
+ output functions. There are other functions from this
+ family such as <tt class=
+ "LITERAL">mvaddstr(),mvwaddstr()</tt> and <tt class=
+ "LITERAL">waddstr()</tt>, which obey the naming convention
+ of curses.(e.g. mvaddstr() is similar to the respective
+ calls move() and then addstr().) Another function of this
+ family is addnstr(), which takes an integer parameter(say
+ n) additionally. This function puts at most n characters
+ into the screen. If n is negative, then the entire string
+ will be added.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="ACAUTION" id="ACAUTION">6.5. A
+ word of caution</a></h3>
+
+ <p>All these functions take y co-ordinate first and then x
+ in their arguments. A common mistake by beginners is to
+ pass x,y in that order. If you are doing too many
+ manipulations of (y,x) co-ordinates, think of dividing the
+ screen into windows and manipulate each one separately.
+ Windows are explained in the <a href="#WINDOWS">windows</a>
+ section.</p>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="SCANW" id="SCANW">7. Input
+ functions</a></h2>
+
+ <p>Well, printing without taking input, is boring. Let's see
+ functions which allow us to get input from user. These
+ functions also can be divided into three categories.</p>
+
+ <ol type="1">
+ <li>
+ <p>getch() class: Get a character</p>
+ </li>
+
+ <li>
+ <p>scanw() class: Get formatted input</p>
+ </li>
+
+ <li>
+ <p>getstr() class: Get strings</p>
+ </li>
+ </ol>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="GETCHCLASS" id="GETCHCLASS">7.1.
+ getch() class of functions</a></h3>
+
+ <p>These functions read a single character from the
+ terminal. But there are several subtle facts to consider.
+ For example if you don't use the function cbreak(), curses
+ will not read your input characters contiguously but will
+ begin read them only after a new line or an EOF is
+ encountered. In order to avoid this, the cbreak() function
+ must used so that characters are immediately available to
+ your program. Another widely used function is noecho(). As
+ the name suggests, when this function is set (used), the
+ characters that are keyed in by the user will not show up
+ on the screen. The two functions cbreak() and noecho() are
+ typical examples of key management. Functions of this genre
+ are explained in the <a href="#KEYS">key management
+ section</a> .</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="SCANWCLASS" id="SCANWCLASS">7.2.
+ scanw() class of functions</a></h3>
+
+ <p>These functions are similar to <tt class=
+ "LITERAL">scanf()</tt> with the added capability of getting
+ the input from any location on the screen.</p>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="SCANWMVSCANW" id=
+ "SCANWMVSCANW">7.2.1. scanw() and mvscanw</a></h4>
+
+ <p>The usage of these functions is similar to that of
+ <tt class="LITERAL">sscanf()</tt>, where the line to be
+ scanned is provided by <tt class="LITERAL">wgetstr()</tt>
+ function. That is, these functions call to <tt class=
+ "LITERAL">wgetstr()</tt> function(explained below) and
+ uses the resulting line for a scan.</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="WSCANWMVWSCANW" id=
+ "WSCANWMVWSCANW">7.2.2. wscanw() and mvwscanw()</a></h4>
+
+ <p>These are similar to above two functions except that
+ they read from a window, which is supplied as one of the
+ arguments to these functions.</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="VWSCANW" id="VWSCANW">7.2.3.
+ vw_scanw()</a></h4>
+
+ <p>This function is similar to <tt class=
+ "LITERAL">vscanf()</tt>. This can be used when a variable
+ number of arguments are to be scanned.</p>
+ </div>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="GETSTRCLASS" id=
+ "GETSTRCLASS">7.3. getstr() class of functions</a></h3>
+
+ <p>These functions are used to get strings from the
+ terminal. In essence, this function performs the same task
+ as would be achieved by a series of calls to <tt class=
+ "LITERAL">getch()</tt> until a newline, carriage return, or
+ end-of-file is received. The resulting string of characters
+ are pointed to by <tt class="LITERAL">str</tt>, which is a
+ character pointer provided by the user.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="GETSTREX" id="GETSTREX">7.4.
+ Some examples</a></h3>
+
+ <div class="EXAMPLE">
+ <a name="BSCEX" id="BSCEX"></a>
+
+ <p><b>Example 4. A Simple scanw example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class=
+"INLINEMEDIAOBJECT">#include &lt;ncurses.h&gt; /* ncurses.h includes stdio.h */
+#include &lt;string.h&gt;
int main()
{
- char mesg[]="Enter a string: "; /* message to be appeared on the screen */
+ char mesg[]="Enter a string: "; /* message to be appeared on the screen */
char str[80];
- int row,col; /* to store the number of rows and *
- * the number of colums of the screen */
- initscr(); /* start the curses mode */
- getmaxyx(stdscr,row,col); /* get the number of rows and columns */
+ int row,col; /* to store the number of rows and *
+ * the number of colums of the screen */
+ initscr(); /* start the curses mode */
+ getmaxyx(stdscr,row,col); /* get the number of rows and columns */
mvprintw(row/2,(col-strlen(mesg))/2,"%s",mesg);
- /* print the message at the center of the screen */
+ /* print the message at the center of the screen */
getstr(str);
mvprintw(LINES - 2, 0, "You Entered: %s", str);
getch();
endwin();
return 0;
-}</SPAN
-></PRE
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="ATTRIB"
->8. Attributes</A
-></H2
-><P
->We have seen an example of how attributes can be used to print characters with
-some special effects. Attributes, when set prudently, can present information in
-an easy, understandable manner. The following program takes a C file as input
-and prints the file with comments in bold. Scan through the code. </P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="BSIAT"
-></A
-><P
-><B
->Example 5. A Simple Attributes example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->/* pager functionality by Joseph Spainhour" &#60;spainhou@bellsouth.net&#62; */
-#include &#60;ncurses.h&#62;
-#include &#60;stdlib.h&#62;
+}</span>
+</pre>
+ </div>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="ATTRIB" id="ATTRIB">8.
+ Attributes</a></h2>
+
+ <p>We have seen an example of how attributes can be used to
+ print characters with some special effects. Attributes, when
+ set prudently, can present information in an easy,
+ understandable manner. The following program takes a C file
+ as input and prints the file with comments in bold. Scan
+ through the code.</p>
+
+ <div class="EXAMPLE">
+ <a name="BSIAT" id="BSIAT"></a>
+
+ <p><b>Example 5. A Simple Attributes example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class=
+"INLINEMEDIAOBJECT">/* pager functionality by Joseph Spainhour" &lt;spainhou@bellsouth.net&gt; */
+#include &lt;ncurses.h&gt;
+#include &lt;stdlib.h&gt;
int main(int argc, char *argv[])
{
@@ -2633,7 +1952,7 @@ int main(int argc, char *argv[])
if(argc != 2)
{
- printf("Usage: %s &#60;a c file name&#62;\n", argv[0]);
+ printf("Usage: %s &lt;a c file name&gt;\n", argv[0]);
exit(1);
}
fp = fopen(argv[1], "r");
@@ -2642,101 +1961,81 @@ int main(int argc, char *argv[])
perror("Cannot open input file");
exit(1);
}
- initscr(); /* Start curses mode */
- getmaxyx(stdscr, row, col); /* find the boundaries of the screeen */
- while((ch = fgetc(fp)) != EOF) /* read the file till we reach the end */
+ initscr(); /* Start curses mode */
+ getmaxyx(stdscr, row, col); /* find the boundaries of the screeen */
+ while((ch = fgetc(fp)) != EOF) /* read the file till we reach the end */
{
- getyx(stdscr, y, x); /* get the current curser position */
- if(y == (row - 1)) /* are we are at the end of the screen */
+ getyx(stdscr, y, x); /* get the current curser position */
+ if(y == (row - 1)) /* are we are at the end of the screen */
{
- printw("&#60;-Press Any Key-&#62;"); /* tell the user to press a key */
+ printw("&lt;-Press Any Key-&gt;"); /* tell the user to press a key */
getch();
- clear(); /* clear the screen */
- move(0, 0); /* start at the beginning of the screen */
+ clear(); /* clear the screen */
+ move(0, 0); /* start at the beginning of the screen */
}
- if(prev == '/' &#38;&#38; ch == '*') /* If it is / and * then only
- * switch bold on */
+ if(prev == '/' &amp;&amp; ch == '*') /* If it is / and * then only
+ * switch bold on */
{
- attron(A_BOLD); /* cut bold on */
- getyx(stdscr, y, x); /* get the current curser position */
- move(y, x - 1); /* back up one space */
- printw("%c%c", '/', ch); /* The actual printing is done here */
+ attron(A_BOLD); /* cut bold on */
+ getyx(stdscr, y, x); /* get the current curser position */
+ move(y, x - 1); /* back up one space */
+ printw("%c%c", '/', ch); /* The actual printing is done here */
}
else
printw("%c", ch);
refresh();
- if(prev == '*' &#38;&#38; ch == '/')
- attroff(A_BOLD); /* Switch it off once we got *
- * and then / */
+ if(prev == '*' &amp;&amp; ch == '/')
+ attroff(A_BOLD); /* Switch it off once we got *
+ * and then / */
prev = ch;
}
- endwin(); /* End curses mode */
+ endwin(); /* End curses mode */
fclose(fp);
return 0;
-}</SPAN
-></PRE
-></DIV
-><P
->
-Don't worry about all those initialization and other crap. Concentrate on
-the while loop. It reads each character in the file and searches for the
-pattern /*. Once it spots the pattern, it switches the BOLD attribute on with
-<TT
-CLASS="LITERAL"
-> attron()</TT
-> . When we get the pattern */ it is
-switched off by <TT
-CLASS="LITERAL"
-> attroff()</TT
-> .</P
-><P
->
-The above program also introduces us to two useful functions
-<TT
-CLASS="LITERAL"
->getyx() </TT
-> and
-<TT
-CLASS="LITERAL"
->move()</TT
->. The first function gets the
-co-ordinates of the present cursor into the variables y, x. Since getyx() is a
-macro we don't have to pass pointers to variables. The function
-<TT
-CLASS="LITERAL"
->move()</TT
-> moves the cursor to the co-ordinates
-given to it. </P
-><P
->
-The above program is really a simple one which doesn't do much. On these lines
-one could write a more useful program which reads a C file, parses it and prints
-it in different colors. One could even extend it to other languages as well.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="ATTRIBDETAILS"
->8.1. The details</A
-></H3
-><P
->Let's get into more details of attributes. The functions <TT
-CLASS="LITERAL"
->attron(), attroff(), attrset() </TT
->, and their sister functions
-<TT
-CLASS="LITERAL"
-> attr_get()</TT
-> etc.. can be used to switch
-attributes on/off , get attributes and produce a colorful display.</P
-><P
->The functions attron and attroff take a bit-mask of attributes and switch them
-on or off, respectively. The following video attributes, which are defined in
-&lt;curses.h&gt; can be passed to these functions. </P
-><PRE
-CLASS="PROGRAMLISTING"
->
+}</span>
+</pre>
+ </div>
+
+ <p>Don't worry about all those initialization and other crap.
+ Concentrate on the while loop. It reads each character in the
+ file and searches for the pattern /*. Once it spots the
+ pattern, it switches the BOLD attribute on with <tt class=
+ "LITERAL">attron()</tt> . When we get the pattern */ it is
+ switched off by <tt class="LITERAL">attroff()</tt> .</p>
+
+ <p>The above program also introduces us to two useful
+ functions <tt class="LITERAL">getyx()</tt> and <tt class=
+ "LITERAL">move()</tt>. The first function gets the
+ co-ordinates of the present cursor into the variables y, x.
+ Since getyx() is a macro we don't have to pass pointers to
+ variables. The function <tt class="LITERAL">move()</tt> moves
+ the cursor to the co-ordinates given to it.</p>
+
+ <p>The above program is really a simple one which doesn't do
+ much. On these lines one could write a more useful program
+ which reads a C file, parses it and prints it in different
+ colors. One could even extend it to other languages as
+ well.</p>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="ATTRIBDETAILS" id=
+ "ATTRIBDETAILS">8.1. The details</a></h3>
+
+ <p>Let's get into more details of attributes. The functions
+ <tt class="LITERAL">attron(), attroff(), attrset()</tt> ,
+ and their sister functions <tt class=
+ "LITERAL">attr_get()</tt> etc.. can be used to switch
+ attributes on/off , get attributes and produce a colorful
+ display.</p>
+
+ <p>The functions attron and attroff take a bit-mask of
+ attributes and switch them on or off, respectively. The
+ following video attributes, which are defined in
+ &lt;curses.h&gt; can be passed to these functions.</p>
+ <pre class="PROGRAMLISTING">
+
A_NORMAL Normal display (no highlight)
A_STANDOUT Best highlighting mode of the terminal.
A_UNDERLINE Underlining
@@ -2749,445 +2048,396 @@ CLASS="PROGRAMLISTING"
A_ALTCHARSET Alternate character set
A_CHARTEXT Bit-mask to extract a character
COLOR_PAIR(n) Color-pair number n
- </PRE
-><P
->
-The last one is the most colorful one :-) Colors are explained in the
-<A
-HREF="#color"
-TARGET="_top"
->next sections</A
->.</P
-><P
->We can OR(|) any number of above attributes to get a combined effect. If you
-wanted reverse video with blinking characters you can use</P
-><PRE
-CLASS="PROGRAMLISTING"
-> attron(A_REVERSE | A_BLINK);</PRE
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="ATTRONVSATTRSET"
->8.2. attron() vs attrset()</A
-></H3
-><P
->Then what is the difference between attron() and attrset()? attrset sets the
-attributes of window whereas attron just switches on the attribute given to it.
-So attrset() fully overrides whatever attributes the window previously had and
-sets it to the new attribute(s). Similarly attroff() just switches off the
-attribute(s) given to it as an argument. This gives us the flexibility of
-managing attributes easily.But if you use them carelessly you may loose track of
-what attributes the window has and garble the display. This is especially true
-while managing menus with colors and highlighting. So decide on a consistent
-policy and stick to it. You can always use <TT
-CLASS="LITERAL"
-> standend()</TT
-> which is equivalent to <TT
-CLASS="LITERAL"
-> attrset(A_NORMAL)</TT
-> which turns off all attributes and brings you to normal mode.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="ATTR_GET"
->8.3. attr_get()</A
-></H3
-><P
->&#13;The function attr_get() gets the current attributes and color pair of the
-window. Though we might not use this as often as the above functions, this is
-useful in scanning areas of screen. Say we wanted to do some complex update on
-screen and we are not sure what attribute each character is associated with.
-Then this function can be used with either attrset or attron to produce the
-desired effect.&#13;</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="ATTR_FUNCS"
->8.4. attr_ functions</A
-></H3
-><P
->There are series of functions like attr_set(), attr_on etc.. These are similar
-to above functions except that they take parameters of type
-<TT
-CLASS="LITERAL"
->attr_t</TT
->.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="WATTRFUNCS"
->8.5. wattr functions</A
-></H3
-><P
->For each of the above functions we have a corresponding function with 'w' which
-operates on a particular window. The above functions operate on stdscr. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="CHGAT"
->8.6. chgat() functions</A
-></H3
-><P
->The function chgat() is listed in the end of the man page curs_attr. It actually
-is a useful one. This function can be used to set attributes for a group of
-characters without moving. I mean it !!! without moving the cursor :-) It
-changes the attributes of a given number of characters starting at the current
-cursor location.</P
-><P
->We can give -1 as the character count to update till end of line. If you want to
-change attributes of characters from current position to end of line, just use
-this.</P
-><PRE
-CLASS="PROGRAMLISTING"
-> chgat(-1, A_REVERSE, 0, NULL);</PRE
-><P
->
-This function is useful when changing attributes for characters that are
-already on the screen. Move to the character from which you want to change and
-change the attribute. </P
-><P
->Other functions wchgat(), mvchgat(), wchgat() behave similarly except that the w
-functions operate on the particular window. The mv functions first move the
-cursor then perform the work given to them. Actually chgat is a macro which is
-replaced by a wchgat() with stdscr as the window. Most of the "w-less" functions
-are macros.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="BWICH"
-></A
-><P
-><B
->Example 6. Chgat() Usage example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;ncurses.h&#62;
+
+</pre>
+
+ <p>The last one is the most colorful one :-) Colors are
+ explained in the <a href="#color" target="_top">next
+ sections</a>.</p>
+
+ <p>We can OR(|) any number of above attributes to get a
+ combined effect. If you wanted reverse video with blinking
+ characters you can use</p>
+ <pre class="PROGRAMLISTING">
+ attron(A_REVERSE | A_BLINK);
+</pre>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="ATTRONVSATTRSET" id=
+ "ATTRONVSATTRSET">8.2. attron() vs attrset()</a></h3>
+
+ <p>Then what is the difference between attron() and
+ attrset()? attrset sets the attributes of window whereas
+ attron just switches on the attribute given to it. So
+ attrset() fully overrides whatever attributes the window
+ previously had and sets it to the new attribute(s).
+ Similarly attroff() just switches off the attribute(s)
+ given to it as an argument. This gives us the flexibility
+ of managing attributes easily.But if you use them
+ carelessly you may loose track of what attributes the
+ window has and garble the display. This is especially true
+ while managing menus with colors and highlighting. So
+ decide on a consistent policy and stick to it. You can
+ always use <tt class="LITERAL">standend()</tt> which is
+ equivalent to <tt class="LITERAL">attrset(A_NORMAL)</tt>
+ which turns off all attributes and brings you to normal
+ mode.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="ATTRGET" id="ATTRGET">8.3.
+ attr_get()</a></h3>
+
+ <p>The function attr_get() gets the current attributes and
+ color pair of the window. Though we might not use this as
+ often as the above functions, this is useful in scanning
+ areas of screen. Say we wanted to do some complex update on
+ screen and we are not sure what attribute each character is
+ associated with. Then this function can be used with either
+ attrset or attron to produce the desired effect.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="ATTRFUNCS" id="ATTRFUNCS">8.4.
+ attr_ functions</a></h3>
+
+ <p>There are series of functions like attr_set(), attr_on
+ etc.. These are similar to above functions except that they
+ take parameters of type <tt class=
+ "LITERAL">attr_t</tt>.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="WATTRFUNCS" id="WATTRFUNCS">8.5.
+ wattr functions</a></h3>
+
+ <p>For each of the above functions we have a corresponding
+ function with 'w' which operates on a particular window.
+ The above functions operate on stdscr.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="CHGAT" id="CHGAT">8.6. chgat()
+ functions</a></h3>
+
+ <p>The function chgat() is listed in the end of the man
+ page curs_attr. It actually is a useful one. This function
+ can be used to set attributes for a group of characters
+ without moving. I mean it !!! without moving the cursor :-)
+ It changes the attributes of a given number of characters
+ starting at the current cursor location.</p>
+
+ <p>We can give -1 as the character count to update till end
+ of line. If you want to change attributes of characters
+ from current position to end of line, just use this.</p>
+ <pre class="PROGRAMLISTING">
+ chgat(-1, A_REVERSE, 0, NULL);
+</pre>
+
+ <p>This function is useful when changing attributes for
+ characters that are already on the screen. Move to the
+ character from which you want to change and change the
+ attribute.</p>
+
+ <p>Other functions wchgat(), mvchgat(), wchgat() behave
+ similarly except that the w functions operate on the
+ particular window. The mv functions first move the cursor
+ then perform the work given to them. Actually chgat is a
+ macro which is replaced by a wchgat() with stdscr as the
+ window. Most of the "w-less" functions are macros.</p>
+
+ <div class="EXAMPLE">
+ <a name="BWICH" id="BWICH"></a>
+
+ <p><b>Example 6. Chgat() Usage example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;ncurses.h&gt;
int main(int argc, char *argv[])
-{ initscr(); /* Start curses mode */
- start_color(); /* Start color functionality */
-
- init_pair(1, COLOR_CYAN, COLOR_BLACK);
- printw("A Big string which i didn't care to type fully ");
- mvchgat(0, 0, -1, A_BLINK, 1, NULL);
- /*
- * First two parameters specify the position at which to start
- * Third parameter number of characters to update. -1 means till
- * end of line
- * Forth parameter is the normal attribute you wanted to give
- * to the charcter
- * Fifth is the color index. It is the index given during init_pair()
- * use 0 if you didn't want color
- * Sixth one is always NULL
- */
- refresh();
- getch();
- endwin(); /* End curses mode */
- return 0;
-}</SPAN
-></PRE
-></DIV
-><P
->This example also introduces us to the color world of curses. Colors will be
-explained in detail later. Use 0 for no color.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="WINDOWS"
->9. Windows</A
-></H2
-><P
->Windows form the most important concept in curses. You have seen the standard
-window stdscr above where all the functions implicitly operated on this window.
-Now to make design even a simplest GUI, you need to resort to windows. The main
-reason you may want to use windows is to manipulate parts of the screen
-separately, for better efficiency, by updating only the windows that need to be
-changed and for a better design. I would say the last reason is the most
-important in going for windows. You should always strive for a better and
-easy-to-manage design in your programs. If you are writing big, complex GUIs
-this is of pivotal importance before you start doing anything.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="WINDOWBASICS"
->9.1. The basics</A
-></H3
-><P
->A Window can be created by calling the function
-<TT
-CLASS="LITERAL"
->newwin()</TT
->. It doesn't create any thing on the
-screen actually. It allocates memory for a structure to manipulate the window
-and updates the structure with data regarding the window like it's size, beginy,
-beginx etc.. Hence in curses, a window is just an abstraction of an imaginary
-window, which can be manipulated independent of other parts of screen. The
-function newwin() returns a pointer to structure WINDOW, which can be passed to
-window related functions like wprintw() etc.. Finally the window can be
-destroyed with delwin(). It will deallocate the memory associated with the
-window structure.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="LETBEWINDOW"
->9.2. Let there be a Window !!!</A
-></H3
-><P
->What fun is it, if a window is created and we can't see it. So the fun part
-begins by displaying the window. The function
-<TT
-CLASS="LITERAL"
->box()</TT
-> can be used to draw a border around the
-window. Let's explore these functions in more detail in this example.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="BWIBO"
-></A
-><P
-><B
->Example 7. Window Border example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;ncurses.h&#62;
+{ initscr(); /* Start curses mode */
+ start_color(); /* Start color functionality */
+
+ init_pair(1, COLOR_CYAN, COLOR_BLACK);
+ printw("A Big string which i didn't care to type fully ");
+ mvchgat(0, 0, -1, A_BLINK, 1, NULL);
+ /*
+ * First two parameters specify the position at which to start
+ * Third parameter number of characters to update. -1 means till
+ * end of line
+ * Forth parameter is the normal attribute you wanted to give
+ * to the charcter
+ * Fifth is the color index. It is the index given during init_pair()
+ * use 0 if you didn't want color
+ * Sixth one is always NULL
+ */
+ refresh();
+ getch();
+ endwin(); /* End curses mode */
+ return 0;
+}</span>
+</pre>
+ </div>
+
+ <p>This example also introduces us to the color world of
+ curses. Colors will be explained in detail later. Use 0 for
+ no color.</p>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="WINDOWS" id="WINDOWS">9.
+ Windows</a></h2>
+
+ <p>Windows form the most important concept in curses. You
+ have seen the standard window stdscr above where all the
+ functions implicitly operated on this window. Now to make
+ design even a simplest GUI, you need to resort to windows.
+ The main reason you may want to use windows is to manipulate
+ parts of the screen separately, for better efficiency, by
+ updating only the windows that need to be changed and for a
+ better design. I would say the last reason is the most
+ important in going for windows. You should always strive for
+ a better and easy-to-manage design in your programs. If you
+ are writing big, complex GUIs this is of pivotal importance
+ before you start doing anything.</p>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="WINDOWBASICS" id=
+ "WINDOWBASICS">9.1. The basics</a></h3>
+
+ <p>A Window can be created by calling the function
+ <tt class="LITERAL">newwin()</tt>. It doesn't create any
+ thing on the screen actually. It allocates memory for a
+ structure to manipulate the window and updates the
+ structure with data regarding the window like it's size,
+ beginy, beginx etc.. Hence in curses, a window is just an
+ abstraction of an imaginary window, which can be
+ manipulated independent of other parts of screen. The
+ function newwin() returns a pointer to structure WINDOW,
+ which can be passed to window related functions like
+ wprintw() etc.. Finally the window can be destroyed with
+ delwin(). It will deallocate the memory associated with the
+ window structure.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="LETBEWINDOW" id=
+ "LETBEWINDOW">9.2. Let there be a Window !!!</a></h3>
+
+ <p>What fun is it, if a window is created and we can't see
+ it. So the fun part begins by displaying the window. The
+ function <tt class="LITERAL">box()</tt> can be used to draw
+ a border around the window. Let's explore these functions
+ in more detail in this example.</p>
+
+ <div class="EXAMPLE">
+ <a name="BWIBO" id="BWIBO"></a>
+
+ <p><b>Example 7. Window Border example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;ncurses.h&gt;
WINDOW *create_newwin(int height, int width, int starty, int startx);
void destroy_win(WINDOW *local_win);
int main(int argc, char *argv[])
-{ WINDOW *my_win;
- int startx, starty, width, height;
- int ch;
-
- initscr(); /* Start curses mode */
- cbreak(); /* Line buffering disabled, Pass on
- * everty thing to me */
- keypad(stdscr, TRUE); /* I need that nifty F1 */
-
- height = 3;
- width = 10;
- starty = (LINES - height) / 2; /* Calculating for a center placement */
- startx = (COLS - width) / 2; /* of the window */
- printw("Press F1 to exit");
- refresh();
- my_win = create_newwin(height, width, starty, startx);
-
- while((ch = getch()) != KEY_F(1))
- { switch(ch)
- { case KEY_LEFT:
- destroy_win(my_win);
- my_win = create_newwin(height, width, starty,--startx);
- break;
- case KEY_RIGHT:
- destroy_win(my_win);
- my_win = create_newwin(height, width, starty,++startx);
- break;
- case KEY_UP:
- destroy_win(my_win);
- my_win = create_newwin(height, width, --starty,startx);
- break;
- case KEY_DOWN:
- destroy_win(my_win);
- my_win = create_newwin(height, width, ++starty,startx);
- break;
- }
- }
-
- endwin(); /* End curses mode */
- return 0;
+{ WINDOW *my_win;
+ int startx, starty, width, height;
+ int ch;
+
+ initscr(); /* Start curses mode */
+ cbreak(); /* Line buffering disabled, Pass on
+ * everty thing to me */
+ keypad(stdscr, TRUE); /* I need that nifty F1 */
+
+ height = 3;
+ width = 10;
+ starty = (LINES - height) / 2; /* Calculating for a center placement */
+ startx = (COLS - width) / 2; /* of the window */
+ printw("Press F1 to exit");
+ refresh();
+ my_win = create_newwin(height, width, starty, startx);
+
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case KEY_LEFT:
+ destroy_win(my_win);
+ my_win = create_newwin(height, width, starty,--startx);
+ break;
+ case KEY_RIGHT:
+ destroy_win(my_win);
+ my_win = create_newwin(height, width, starty,++startx);
+ break;
+ case KEY_UP:
+ destroy_win(my_win);
+ my_win = create_newwin(height, width, --starty,startx);
+ break;
+ case KEY_DOWN:
+ destroy_win(my_win);
+ my_win = create_newwin(height, width, ++starty,startx);
+ break;
+ }
+ }
+
+ endwin(); /* End curses mode */
+ return 0;
}
WINDOW *create_newwin(int height, int width, int starty, int startx)
-{ WINDOW *local_win;
+{ WINDOW *local_win;
- local_win = newwin(height, width, starty, startx);
- box(local_win, 0 , 0); /* 0, 0 gives default characters
- * for the vertical and horizontal
- * lines */
- wrefresh(local_win); /* Show that box */
+ local_win = newwin(height, width, starty, startx);
+ box(local_win, 0 , 0); /* 0, 0 gives default characters
+ * for the vertical and horizontal
+ * lines */
+ wrefresh(local_win); /* Show that box */
- return local_win;
+ return local_win;
}
void destroy_win(WINDOW *local_win)
-{
- /* box(local_win, ' ', ' '); : This won't produce the desired
- * result of erasing the window. It will leave it's four corners
- * and so an ugly remnant of window.
- */
- wborder(local_win, ' ', ' ', ' ',' ',' ',' ',' ',' ');
- /* The parameters taken are
- * 1. win: the window on which to operate
- * 2. ls: character to be used for the left side of the window
- * 3. rs: character to be used for the right side of the window
- * 4. ts: character to be used for the top side of the window
- * 5. bs: character to be used for the bottom side of the window
- * 6. tl: character to be used for the top left corner of the window
- * 7. tr: character to be used for the top right corner of the window
- * 8. bl: character to be used for the bottom left corner of the window
- * 9. br: character to be used for the bottom right corner of the window
- */
- wrefresh(local_win);
- delwin(local_win);
-}</SPAN
-></PRE
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="BORDEREXEXPL"
->9.3. Explanation</A
-></H3
-><P
->Don't scream. I know it's a big example. But I have to explain some important
-things here :-). This program creates a rectangular window that can be moved
-with left, right, up, down arrow keys. It repeatedly creates and destroys
-windows as user press a key. Don't go beyond the screen limits. Checking for
-those limits is left as an exercise for the reader. Let's dissect it by line by line.</P
-><P
->The <TT
-CLASS="LITERAL"
->create_newwin()</TT
-> function creates a window
-with <TT
-CLASS="LITERAL"
->newwin() </TT
-> and displays a border around it
-with box. The function <TT
-CLASS="LITERAL"
-> destroy_win()</TT
-> first
-erases the window from screen by painting a border with ' ' character and then
-calling <TT
-CLASS="LITERAL"
->delwin()</TT
-> to deallocate memory related
-to it. Depending on the key the user presses, starty or startx is changed and a
-new window is created.</P
-><P
->In the destroy_win, as you can see, I used wborder instead of box. The reason is
-written in the comments (You missed it. I know. Read the code :-)). wborder
-draws a border around the window with the characters given to it as the 4 corner
-points and the 4 lines. To put it clearly, if you have called wborder as below:
-<PRE
-CLASS="PROGRAMLISTING"
-> wborder(win, '|', '|', '-', '-', '+', '+', '+', '+');</PRE
-></P
-><P
->it produces some thing like </P
-><PRE
-CLASS="PROGRAMLISTING"
-> +------------+
+{
+ /* box(local_win, ' ', ' '); : This won't produce the desired
+ * result of erasing the window. It will leave it's four corners
+ * and so an ugly remnant of window.
+ */
+ wborder(local_win, ' ', ' ', ' ',' ',' ',' ',' ',' ');
+ /* The parameters taken are
+ * 1. win: the window on which to operate
+ * 2. ls: character to be used for the left side of the window
+ * 3. rs: character to be used for the right side of the window
+ * 4. ts: character to be used for the top side of the window
+ * 5. bs: character to be used for the bottom side of the window
+ * 6. tl: character to be used for the top left corner of the window
+ * 7. tr: character to be used for the top right corner of the window
+ * 8. bl: character to be used for the bottom left corner of the window
+ * 9. br: character to be used for the bottom right corner of the window
+ */
+ wrefresh(local_win);
+ delwin(local_win);
+}</span>
+</pre>
+ </div>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="BORDEREXEXPL" id=
+ "BORDEREXEXPL">9.3. Explanation</a></h3>
+
+ <p>Don't scream. I know it's a big example. But I have to
+ explain some important things here :-). This program
+ creates a rectangular window that can be moved with left,
+ right, up, down arrow keys. It repeatedly creates and
+ destroys windows as user press a key. Don't go beyond the
+ screen limits. Checking for those limits is left as an
+ exercise for the reader. Let's dissect it by line by
+ line.</p>
+
+ <p>The <tt class="LITERAL">create_newwin()</tt> function
+ creates a window with <tt class="LITERAL">newwin()</tt> and
+ displays a border around it with box. The function
+ <tt class="LITERAL">destroy_win()</tt> first erases the
+ window from screen by painting a border with ' ' character
+ and then calling <tt class="LITERAL">delwin()</tt> to
+ deallocate memory related to it. Depending on the key the
+ user presses, starty or startx is changed and a new window
+ is created.</p>
+
+ <p>In the destroy_win, as you can see, I used wborder
+ instead of box. The reason is written in the comments (You
+ missed it. I know. Read the code :-)). wborder draws a
+ border around the window with the characters given to it as
+ the 4 corner points and the 4 lines. To put it clearly, if
+ you have called wborder as below:</p>
+ <pre class="PROGRAMLISTING">
+ wborder(win, '|', '|', '-', '-', '+', '+', '+', '+');
+</pre>
+
+ <p>it produces some thing like</p>
+ <pre class="PROGRAMLISTING">
+ +------------+
| |
| |
| |
| |
| |
| |
- +------------+</PRE
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="OTHERSTUFF"
->9.4. The other stuff in the example</A
-></H3
-><P
->You can also see in the above examples, that I have used the variables COLS,
-LINES which are initialized to the screen sizes after initscr(). They can be
-useful in finding screen dimensions and finding the center co-ordinate of the
-screen as above. The function <TT
-CLASS="LITERAL"
->getch()</TT
-> as usual
-gets the key from keyboard and according to the key it does the corresponding
-work. This type of switch- case is very common in any GUI based programs.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="OTHERBORDERFUNCS"
->9.5. Other Border functions</A
-></H3
-><P
->Above program is grossly inefficient in that with each press of a key, a window
-is destroyed and another is created. So let's write a more efficient program
-which uses other border related functions.</P
-><P
->The following program uses <TT
-CLASS="LITERAL"
->mvhline()</TT
-> and
-<TT
-CLASS="LITERAL"
->mvvline()</TT
-> to achieve similar effect. These two
-functions are simple. They create a horizontal or vertical line of the specified
-length at the specified position.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="BOTBO"
-></A
-><P
-><B
->Example 8. More border functions</B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;ncurses.h&#62;
+ +------------+
+</pre>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="OTHERSTUFF" id="OTHERSTUFF">9.4.
+ The other stuff in the example</a></h3>
+
+ <p>You can also see in the above examples, that I have used
+ the variables COLS, LINES which are initialized to the
+ screen sizes after initscr(). They can be useful in finding
+ screen dimensions and finding the center co-ordinate of the
+ screen as above. The function <tt class=
+ "LITERAL">getch()</tt> as usual gets the key from keyboard
+ and according to the key it does the corresponding work.
+ This type of switch- case is very common in any GUI based
+ programs.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="OTHERBORDERFUNCS" id=
+ "OTHERBORDERFUNCS">9.5. Other Border functions</a></h3>
+
+ <p>Above program is grossly inefficient in that with each
+ press of a key, a window is destroyed and another is
+ created. So let's write a more efficient program which uses
+ other border related functions.</p>
+
+ <p>The following program uses <tt class=
+ "LITERAL">mvhline()</tt> and <tt class=
+ "LITERAL">mvvline()</tt> to achieve similar effect. These
+ two functions are simple. They create a horizontal or
+ vertical line of the specified length at the specified
+ position.</p>
+
+ <div class="EXAMPLE">
+ <a name="BOTBO" id="BOTBO"></a>
+
+ <p><b>Example 8. More border functions</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;ncurses.h&gt;
typedef struct _win_border_struct {
- chtype ls, rs, ts, bs,
- tl, tr, bl, br;
+ chtype ls, rs, ts, bs,
+ tl, tr, bl, br;
}WIN_BORDER;
typedef struct _WIN_struct {
- int startx, starty;
- int height, width;
- WIN_BORDER border;
+ int startx, starty;
+ int height, width;
+ WIN_BORDER border;
}WIN;
void init_win_params(WIN *p_win);
@@ -3195,380 +2445,327 @@ void print_win_params(WIN *p_win);
void create_box(WIN *win, bool flag);
int main(int argc, char *argv[])
-{ WIN win;
- int ch;
-
- initscr(); /* Start curses mode */
- start_color(); /* Start the color functionality */
- cbreak(); /* Line buffering disabled, Pass on
- * everty thing to me */
- keypad(stdscr, TRUE); /* I need that nifty F1 */
- noecho();
- init_pair(1, COLOR_CYAN, COLOR_BLACK);
-
- /* Initialize the window parameters */
- init_win_params(&#38;win);
- print_win_params(&#38;win);
-
- attron(COLOR_PAIR(1));
- printw("Press F1 to exit");
- refresh();
- attroff(COLOR_PAIR(1));
-
- create_box(&#38;win, TRUE);
- while((ch = getch()) != KEY_F(1))
- { switch(ch)
- { case KEY_LEFT:
- create_box(&#38;win, FALSE);
- --win.startx;
- create_box(&#38;win, TRUE);
- break;
- case KEY_RIGHT:
- create_box(&#38;win, FALSE);
- ++win.startx;
- create_box(&#38;win, TRUE);
- break;
- case KEY_UP:
- create_box(&#38;win, FALSE);
- --win.starty;
- create_box(&#38;win, TRUE);
- break;
- case KEY_DOWN:
- create_box(&#38;win, FALSE);
- ++win.starty;
- create_box(&#38;win, TRUE);
- break;
- }
- }
- endwin(); /* End curses mode */
- return 0;
+{ WIN win;
+ int ch;
+
+ initscr(); /* Start curses mode */
+ start_color(); /* Start the color functionality */
+ cbreak(); /* Line buffering disabled, Pass on
+ * everty thing to me */
+ keypad(stdscr, TRUE); /* I need that nifty F1 */
+ noecho();
+ init_pair(1, COLOR_CYAN, COLOR_BLACK);
+
+ /* Initialize the window parameters */
+ init_win_params(&amp;win);
+ print_win_params(&amp;win);
+
+ attron(COLOR_PAIR(1));
+ printw("Press F1 to exit");
+ refresh();
+ attroff(COLOR_PAIR(1));
+
+ create_box(&amp;win, TRUE);
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case KEY_LEFT:
+ create_box(&amp;win, FALSE);
+ --win.startx;
+ create_box(&amp;win, TRUE);
+ break;
+ case KEY_RIGHT:
+ create_box(&amp;win, FALSE);
+ ++win.startx;
+ create_box(&amp;win, TRUE);
+ break;
+ case KEY_UP:
+ create_box(&amp;win, FALSE);
+ --win.starty;
+ create_box(&amp;win, TRUE);
+ break;
+ case KEY_DOWN:
+ create_box(&amp;win, FALSE);
+ ++win.starty;
+ create_box(&amp;win, TRUE);
+ break;
+ }
+ }
+ endwin(); /* End curses mode */
+ return 0;
}
void init_win_params(WIN *p_win)
{
- p_win-&#62;height = 3;
- p_win-&#62;width = 10;
- p_win-&#62;starty = (LINES - p_win-&#62;height)/2;
- p_win-&#62;startx = (COLS - p_win-&#62;width)/2;
-
- p_win-&#62;border.ls = '|';
- p_win-&#62;border.rs = '|';
- p_win-&#62;border.ts = '-';
- p_win-&#62;border.bs = '-';
- p_win-&#62;border.tl = '+';
- p_win-&#62;border.tr = '+';
- p_win-&#62;border.bl = '+';
- p_win-&#62;border.br = '+';
+ p_win-&gt;height = 3;
+ p_win-&gt;width = 10;
+ p_win-&gt;starty = (LINES - p_win-&gt;height)/2;
+ p_win-&gt;startx = (COLS - p_win-&gt;width)/2;
+
+ p_win-&gt;border.ls = '|';
+ p_win-&gt;border.rs = '|';
+ p_win-&gt;border.ts = '-';
+ p_win-&gt;border.bs = '-';
+ p_win-&gt;border.tl = '+';
+ p_win-&gt;border.tr = '+';
+ p_win-&gt;border.bl = '+';
+ p_win-&gt;border.br = '+';
}
void print_win_params(WIN *p_win)
{
#ifdef _DEBUG
- mvprintw(25, 0, "%d %d %d %d", p_win-&#62;startx, p_win-&#62;starty,
- p_win-&#62;width, p_win-&#62;height);
- refresh();
+ mvprintw(25, 0, "%d %d %d %d", p_win-&gt;startx, p_win-&gt;starty,
+ p_win-&gt;width, p_win-&gt;height);
+ refresh();
#endif
}
void create_box(WIN *p_win, bool flag)
-{ int i, j;
- int x, y, w, h;
-
- x = p_win-&#62;startx;
- y = p_win-&#62;starty;
- w = p_win-&#62;width;
- h = p_win-&#62;height;
-
- if(flag == TRUE)
- { mvaddch(y, x, p_win-&#62;border.tl);
- mvaddch(y, x + w, p_win-&#62;border.tr);
- mvaddch(y + h, x, p_win-&#62;border.bl);
- mvaddch(y + h, x + w, p_win-&#62;border.br);
- mvhline(y, x + 1, p_win-&#62;border.ts, w - 1);
- mvhline(y + h, x + 1, p_win-&#62;border.bs, w - 1);
- mvvline(y + 1, x, p_win-&#62;border.ls, h - 1);
- mvvline(y + 1, x + w, p_win-&#62;border.rs, h - 1);
-
- }
- else
- for(j = y; j &#60;= y + h; ++j)
- for(i = x; i &#60;= x + w; ++i)
- mvaddch(j, i, ' ');
-
- refresh();
-
-}</SPAN
-></PRE
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="COLOR"
->10. Colors</A
-></H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="COLORBASICS"
->10.1. The basics</A
-></H3
-><P
->Life seems dull with no colors. Curses has a nice mechanism to handle colors.
-Let's get into the thick of the things with a small program.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="BSICO"
-></A
-><P
-><B
->Example 9. A Simple Color example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;ncurses.h&#62;
+{ int i, j;
+ int x, y, w, h;
+
+ x = p_win-&gt;startx;
+ y = p_win-&gt;starty;
+ w = p_win-&gt;width;
+ h = p_win-&gt;height;
+
+ if(flag == TRUE)
+ { mvaddch(y, x, p_win-&gt;border.tl);
+ mvaddch(y, x + w, p_win-&gt;border.tr);
+ mvaddch(y + h, x, p_win-&gt;border.bl);
+ mvaddch(y + h, x + w, p_win-&gt;border.br);
+ mvhline(y, x + 1, p_win-&gt;border.ts, w - 1);
+ mvhline(y + h, x + 1, p_win-&gt;border.bs, w - 1);
+ mvvline(y + 1, x, p_win-&gt;border.ls, h - 1);
+ mvvline(y + 1, x + w, p_win-&gt;border.rs, h - 1);
+
+ }
+ else
+ for(j = y; j &lt;= y + h; ++j)
+ for(i = x; i &lt;= x + w; ++i)
+ mvaddch(j, i, ' ');
+
+ refresh();
+
+}</span>
+</pre>
+ </div>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="COLOR" id="COLOR">10.
+ Colors</a></h2>
+
+ <div class="SECT2">
+ <h3 class="SECT2"><a name="COLORBASICS" id=
+ "COLORBASICS">10.1. The basics</a></h3>
+
+ <p>Life seems dull with no colors. Curses has a nice
+ mechanism to handle colors. Let's get into the thick of the
+ things with a small program.</p>
+
+ <div class="EXAMPLE">
+ <a name="BSICO" id="BSICO"></a>
+
+ <p><b>Example 9. A Simple Color example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;ncurses.h&gt;
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string);
int main(int argc, char *argv[])
-{ initscr(); /* Start curses mode */
- if(has_colors() == FALSE)
- { endwin();
- printf("Your terminal does not support color\n");
- exit(1);
- }
- start_color(); /* Start color */
- init_pair(1, COLOR_RED, COLOR_BLACK);
-
- attron(COLOR_PAIR(1));
- print_in_middle(stdscr, LINES / 2, 0, 0, "Viola !!! In color ...");
- attroff(COLOR_PAIR(1));
- getch();
- endwin();
+{ initscr(); /* Start curses mode */
+ if(has_colors() == FALSE)
+ { endwin();
+ printf("Your terminal does not support color\n");
+ exit(1);
+ }
+ start_color(); /* Start color */
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+
+ attron(COLOR_PAIR(1));
+ print_in_middle(stdscr, LINES / 2, 0, 0, "Viola !!! In color ...");
+ attroff(COLOR_PAIR(1));
+ getch();
+ endwin();
}
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string)
-{ int length, x, y;
- float temp;
-
- if(win == NULL)
- win = stdscr;
- getyx(win, y, x);
- if(startx != 0)
- x = startx;
- if(starty != 0)
- y = starty;
- if(width == 0)
- width = 80;
-
- length = strlen(string);
- temp = (width - length)/ 2;
- x = startx + (int)temp;
- mvwprintw(win, y, x, "%s", string);
- refresh();
+{ int length, x, y;
+ float temp;
+
+ if(win == NULL)
+ win = stdscr;
+ getyx(win, y, x);
+ if(startx != 0)
+ x = startx;
+ if(starty != 0)
+ y = starty;
+ if(width == 0)
+ width = 80;
+
+ length = strlen(string);
+ temp = (width - length)/ 2;
+ x = startx + (int)temp;
+ mvwprintw(win, y, x, "%s", string);
+ refresh();
}
-</SPAN
-></PRE
-></DIV
-><P
->As you can see, to start using color, you should first call the function
-<TT
-CLASS="LITERAL"
-> start_color()</TT
->. After that, you can use color
-capabilities of your terminals using various functions. To find out whether a
-terminal has color capabilities or not, you can use
-<TT
-CLASS="LITERAL"
->has_colors()</TT
-> function, which returns FALSE if
-the terminal does not support color. </P
-><P
->Curses initializes all the colors supported by terminal when start_color() is
-called. These can be accessed by the define constants like
-<TT
-CLASS="LITERAL"
->COLOR_BLACK </TT
-> etc. Now to actually start using
-colors, you have to define pairs. Colors are always used in pairs. That means
-you have to use the function <TT
-CLASS="LITERAL"
->init_pair() </TT
-> to
-define the foreground and background for the pair number you give. After that
-that pair number can be used as a normal attribute with <TT
-CLASS="LITERAL"
->COLOR_PAIR()</TT
->function. This may seem to be cumbersome at first.
-But this elegant solution allows us to manage color pairs very easily. To
-appreciate it, you have to look into the the source code of "dialog", a utility
-for displaying dialog boxes from shell scripts. The developers have defined
-foreground and background combinations for all the colors they might need and
-initialized at the beginning. This makes it very easy to set attributes just by
-accessing a pair which we already have defined as a constant.</P
-><P
->The following colors are defined in <TT
-CLASS="LITERAL"
->curses.h</TT
->.
-You can use these as parameters for various color functions.
-<PRE
-CLASS="PROGRAMLISTING"
-> COLOR_BLACK 0
+</span>
+</pre>
+ </div>
+
+ <p>As you can see, to start using color, you should first
+ call the function <tt class="LITERAL">start_color()</tt>.
+ After that, you can use color capabilities of your
+ terminals using various functions. To find out whether a
+ terminal has color capabilities or not, you can use
+ <tt class="LITERAL">has_colors()</tt> function, which
+ returns FALSE if the terminal does not support color.</p>
+
+ <p>Curses initializes all the colors supported by terminal
+ when start_color() is called. These can be accessed by the
+ define constants like <tt class="LITERAL">COLOR_BLACK</tt>
+ etc. Now to actually start using colors, you have to define
+ pairs. Colors are always used in pairs. That means you have
+ to use the function <tt class="LITERAL">init_pair()</tt> to
+ define the foreground and background for the pair number
+ you give. After that that pair number can be used as a
+ normal attribute with <tt class=
+ "LITERAL">COLOR_PAIR()</tt>function. This may seem to be
+ cumbersome at first. But this elegant solution allows us to
+ manage color pairs very easily. To appreciate it, you have
+ to look into the the source code of "dialog", a utility for
+ displaying dialog boxes from shell scripts. The developers
+ have defined foreground and background combinations for all
+ the colors they might need and initialized at the
+ beginning. This makes it very easy to set attributes just
+ by accessing a pair which we already have defined as a
+ constant.</p>
+
+ <p>The following colors are defined in <tt class=
+ "LITERAL">curses.h</tt>. You can use these as parameters
+ for various color functions.</p>
+ <pre class="PROGRAMLISTING">
+ COLOR_BLACK 0
COLOR_RED 1
COLOR_GREEN 2
COLOR_YELLOW 3
COLOR_BLUE 4
COLOR_MAGENTA 5
COLOR_CYAN 6
- COLOR_WHITE 7</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="CHANGECOLORDEFS"
->10.2. Changing Color Definitions</A
-></H3
-><P
->The function <TT
-CLASS="LITERAL"
->init_color()</TT
->can be used to change
-the rgb values for the colors defined by curses initially. Say you wanted to
-lighten the intensity of red color by a minuscule. Then you can use this
-function as</P
-><PRE
-CLASS="PROGRAMLISTING"
-> init_color(COLOR_RED, 700, 0, 0);
+ COLOR_WHITE 7
+</pre>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="CHANGECOLORDEFS" id=
+ "CHANGECOLORDEFS">10.2. Changing Color Definitions</a></h3>
+
+ <p>The function <tt class="LITERAL">init_color()</tt>can be
+ used to change the rgb values for the colors defined by
+ curses initially. Say you wanted to lighten the intensity
+ of red color by a minuscule. Then you can use this function
+ as</p>
+ <pre class="PROGRAMLISTING">
+ init_color(COLOR_RED, 700, 0, 0);
/* param 1 : color name
- * param 2, 3, 4 : rgb content min = 0, max = 1000 */</PRE
-><P
->If your terminal cannot change the color definitions, the function returns ERR.
-The function <TT
-CLASS="LITERAL"
->can_change_color()</TT
-> can be used to
-find out whether the terminal has the capability of changing color content or
-not. The rgb content is scaled from 0 to 1000. Initially RED color is defined
-with content 1000(r), 0(g), 0(b). </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="COLORCONTENT"
->10.3. Color Content</A
-></H3
-><P
->The functions <TT
-CLASS="LITERAL"
->color_content()</TT
-> and
-<TT
-CLASS="LITERAL"
->pair_content()</TT
-> can be used to find the color
-content and foreground, background combination for the pair. </P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="KEYS"
->11. Interfacing with the key board</A
-></H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="KEYSBASICS"
->11.1. The Basics</A
-></H3
-><P
->No GUI is complete without a strong user interface and to interact with the
-user, a curses program should be sensitive to key presses or the mouse actions
-done by the user. Let's deal with the keys first.</P
-><P
->As you have seen in almost all of the above examples, it's very easy to get key
-input from the user. A simple way of getting key presses is to use
-<TT
-CLASS="LITERAL"
->getch()</TT
-> function. The cbreak mode should be
-enabled to read keys when you are interested in reading individual key hits
-rather than complete lines of text (which usually end with a carriage return).
-keypad should be enabled to get the Functions keys, arrow keys etc. See the
-initialization section for details.</P
-><P
-><TT
-CLASS="LITERAL"
->getch()</TT
-> returns an integer corresponding to the
-key pressed. If it is a normal character, the integer value will be equivalent
-to the character. Otherwise it returns a number which can be matched with the
-constants defined in <TT
-CLASS="LITERAL"
->curses.h</TT
->. For example if
-the user presses F1, the integer returned is 265. This can be checked using the
-macro KEY_F() defined in curses.h. This makes reading keys portable and easy to
-manage.</P
-><P
->For example, if you call getch() like this</P
-><PRE
-CLASS="PROGRAMLISTING"
-> int ch;
-
- ch = getch();</PRE
-><P
->getch() will wait for the user to press a key, (unless you specified a timeout)
-and when user presses a key, the corresponding integer is returned. Then you can
-check the value returned with the constants defined in curses.h to match against
-the keys you want.</P
-><P
->The following code piece will do that job.</P
-><PRE
-CLASS="PROGRAMLISTING"
-> if(ch == KEY_LEFT)
- printw("Left arrow is pressed\n");</PRE
-><P
->Let's write a small program which creates a menu which can be navigated by up
-and down arrows.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="SIMPLEKEYEX"
->11.2. A Simple Key Usage example</A
-></H3
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="BSIKE"
-></A
-><P
-><B
->Example 10. A Simple Key Usage example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;stdio.h&#62;
-#include &#60;ncurses.h&#62;
+ * param 2, 3, 4 : rgb content min = 0, max = 1000 */
+</pre>
+
+ <p>If your terminal cannot change the color definitions,
+ the function returns ERR. The function <tt class=
+ "LITERAL">can_change_color()</tt> can be used to find out
+ whether the terminal has the capability of changing color
+ content or not. The rgb content is scaled from 0 to 1000.
+ Initially RED color is defined with content 1000(r), 0(g),
+ 0(b).</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="COLORCONTENT" id=
+ "COLORCONTENT">10.3. Color Content</a></h3>
+
+ <p>The functions <tt class="LITERAL">color_content()</tt>
+ and <tt class="LITERAL">pair_content()</tt> can be used to
+ find the color content and foreground, background
+ combination for the pair.</p>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="KEYS" id="KEYS">11. Interfacing
+ with the key board</a></h2>
+
+ <div class="SECT2">
+ <h3 class="SECT2"><a name="KEYSBASICS" id=
+ "KEYSBASICS">11.1. The Basics</a></h3>
+
+ <p>No GUI is complete without a strong user interface and
+ to interact with the user, a curses program should be
+ sensitive to key presses or the mouse actions done by the
+ user. Let's deal with the keys first.</p>
+
+ <p>As you have seen in almost all of the above examples,
+ it's very easy to get key input from the user. A simple way
+ of getting key presses is to use <tt class=
+ "LITERAL">getch()</tt> function. The cbreak mode should be
+ enabled to read keys when you are interested in reading
+ individual key hits rather than complete lines of text
+ (which usually end with a carriage return). keypad should
+ be enabled to get the Functions keys, arrow keys etc. See
+ the initialization section for details.</p>
+
+ <p><tt class="LITERAL">getch()</tt> returns an integer
+ corresponding to the key pressed. If it is a normal
+ character, the integer value will be equivalent to the
+ character. Otherwise it returns a number which can be
+ matched with the constants defined in <tt class=
+ "LITERAL">curses.h</tt>. For example if the user presses
+ F1, the integer returned is 265. This can be checked using
+ the macro KEY_F() defined in curses.h. This makes reading
+ keys portable and easy to manage.</p>
+
+ <p>For example, if you call getch() like this</p>
+ <pre class="PROGRAMLISTING">
+ int ch;
+
+ ch = getch();
+</pre>
+
+ <p>getch() will wait for the user to press a key, (unless
+ you specified a timeout) and when user presses a key, the
+ corresponding integer is returned. Then you can check the
+ value returned with the constants defined in curses.h to
+ match against the keys you want.</p>
+
+ <p>The following code piece will do that job.</p>
+ <pre class="PROGRAMLISTING">
+ if(ch == KEY_LEFT)
+ printw("Left arrow is pressed\n");
+</pre>
+
+ <p>Let's write a small program which creates a menu which
+ can be navigated by up and down arrows.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="SIMPLEKEYEX" id=
+ "SIMPLEKEYEX">11.2. A Simple Key Usage example</a></h3>
+
+ <div class="EXAMPLE">
+ <a name="BSIKE" id="BSIKE"></a>
+
+ <p><b>Example 10. A Simple Key Usage example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;stdio.h&gt;
+#include &lt;ncurses.h&gt;
#define WIDTH 30
#define HEIGHT 10
@@ -3577,132 +2774,126 @@ int startx = 0;
int starty = 0;
char *choices[] = {
- "Choice 1",
- "Choice 2",
- "Choice 3",
- "Choice 4",
- "Exit",
- };
+ "Choice 1",
+ "Choice 2",
+ "Choice 3",
+ "Choice 4",
+ "Exit",
+ };
int n_choices = sizeof(choices) / sizeof(char *);
void print_menu(WINDOW *menu_win, int highlight);
int main()
-{ WINDOW *menu_win;
- int highlight = 1;
- int choice = 0;
- int c;
-
- initscr();
- clear();
- noecho();
- cbreak(); /* Line buffering disabled. pass on everything */
- startx = (80 - WIDTH) / 2;
- starty = (24 - HEIGHT) / 2;
-
- menu_win = newwin(HEIGHT, WIDTH, starty, startx);
- keypad(menu_win, TRUE);
- mvprintw(0, 0, "Use arrow keys to go up and down, Press enter to select a choice");
- refresh();
- print_menu(menu_win, highlight);
- while(1)
- { c = wgetch(menu_win);
- switch(c)
- { case KEY_UP:
- if(highlight == 1)
- highlight = n_choices;
- else
- --highlight;
- break;
- case KEY_DOWN:
- if(highlight == n_choices)
- highlight = 1;
- else
- ++highlight;
- break;
- case 10:
- choice = highlight;
- break;
- default:
- mvprintw(24, 0, "Charcter pressed is = %3d Hopefully it can be printed as '%c'", c, c);
- refresh();
- break;
- }
- print_menu(menu_win, highlight);
- if(choice != 0) /* User did a choice come out of the infinite loop */
- break;
- }
- mvprintw(23, 0, "You chose choice %d with choice string %s\n", choice, choices[choice - 1]);
- clrtoeol();
- refresh();
- endwin();
- return 0;
+{ WINDOW *menu_win;
+ int highlight = 1;
+ int choice = 0;
+ int c;
+
+ initscr();
+ clear();
+ noecho();
+ cbreak(); /* Line buffering disabled. pass on everything */
+ startx = (80 - WIDTH) / 2;
+ starty = (24 - HEIGHT) / 2;
+
+ menu_win = newwin(HEIGHT, WIDTH, starty, startx);
+ keypad(menu_win, TRUE);
+ mvprintw(0, 0, "Use arrow keys to go up and down, Press enter to select a choice");
+ refresh();
+ print_menu(menu_win, highlight);
+ while(1)
+ { c = wgetch(menu_win);
+ switch(c)
+ { case KEY_UP:
+ if(highlight == 1)
+ highlight = n_choices;
+ else
+ --highlight;
+ break;
+ case KEY_DOWN:
+ if(highlight == n_choices)
+ highlight = 1;
+ else
+ ++highlight;
+ break;
+ case 10:
+ choice = highlight;
+ break;
+ default:
+ mvprintw(24, 0, "Charcter pressed is = %3d Hopefully it can be printed as '%c'", c, c);
+ refresh();
+ break;
+ }
+ print_menu(menu_win, highlight);
+ if(choice != 0) /* User did a choice come out of the infinite loop */
+ break;
+ }
+ mvprintw(23, 0, "You chose choice %d with choice string %s\n", choice, choices[choice - 1]);
+ clrtoeol();
+ refresh();
+ endwin();
+ return 0;
}
void print_menu(WINDOW *menu_win, int highlight)
{
- int x, y, i;
-
- x = 2;
- y = 2;
- box(menu_win, 0, 0);
- for(i = 0; i &#60; n_choices; ++i)
- { if(highlight == i + 1) /* High light the present choice */
- { wattron(menu_win, A_REVERSE);
- mvwprintw(menu_win, y, x, "%s", choices[i]);
- wattroff(menu_win, A_REVERSE);
- }
- else
- mvwprintw(menu_win, y, x, "%s", choices[i]);
- ++y;
- }
- wrefresh(menu_win);
+ int x, y, i;
+
+ x = 2;
+ y = 2;
+ box(menu_win, 0, 0);
+ for(i = 0; i &lt; n_choices; ++i)
+ { if(highlight == i + 1) /* High light the present choice */
+ { wattron(menu_win, A_REVERSE);
+ mvwprintw(menu_win, y, x, "%s", choices[i]);
+ wattroff(menu_win, A_REVERSE);
+ }
+ else
+ mvwprintw(menu_win, y, x, "%s", choices[i]);
+ ++y;
+ }
+ wrefresh(menu_win);
}
-</SPAN
-></PRE
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="MOUSE"
->12. Interfacing with the mouse</A
-></H2
-><P
->Now that you have seen how to get keys, lets do the same thing from mouse.
-Usually each UI allows the user to interact with both keyboard and mouse. </P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="MOUSEBASICS"
->12.1. The Basics</A
-></H3
-><P
->Before you do any thing else, the events you want to receive have to be enabled
-with <TT
-CLASS="LITERAL"
->mousemask()</TT
->.</P
-><PRE
-CLASS="PROGRAMLISTING"
-> mousemask( mmask_t newmask, /* The events you want to listen to */
- mmask_t *oldmask) /* The old events mask */</PRE
-><P
->The first parameter to above function is a bit mask of events you would like to
-listen. By default, all the events are turned off. The bit mask <TT
-CLASS="LITERAL"
-> ALL_MOUSE_EVENTS</TT
-> can be used to get all the events.</P
-><P
->The following are all the event masks:</P
-><PRE
-CLASS="PROGRAMLISTING"
-> Name Description
+</span>
+</pre>
+ </div>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="MOUSE" id="MOUSE">12. Interfacing
+ with the mouse</a></h2>
+
+ <p>Now that you have seen how to get keys, lets do the same
+ thing from mouse. Usually each UI allows the user to interact
+ with both keyboard and mouse.</p>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="MOUSEBASICS" id=
+ "MOUSEBASICS">12.1. The Basics</a></h3>
+
+ <p>Before you do any thing else, the events you want to
+ receive have to be enabled with <tt class=
+ "LITERAL">mousemask()</tt>.</p>
+ <pre class="PROGRAMLISTING">
+ mousemask( mmask_t newmask, /* The events you want to listen to */
+ mmask_t *oldmask) /* The old events mask */
+</pre>
+
+ <p>The first parameter to above function is a bit mask of
+ events you would like to listen. By default, all the events
+ are turned off. The bit mask <tt class=
+ "LITERAL">ALL_MOUSE_EVENTS</tt> can be used to get all the
+ events.</p>
+
+ <p>The following are all the event masks:</p>
+ <pre class="PROGRAMLISTING">
+ Name Description
---------------------------------------------------------------------
BUTTON1_PRESSED mouse button 1 down
BUTTON1_RELEASED mouse button 1 up
@@ -3728,85 +2919,72 @@ CLASS="PROGRAMLISTING"
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</PRE
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="GETTINGEVENTS"
->12.2. Getting the events</A
-></H3
-><P
->Once a class of mouse events have been enabled, getch() class of functions
-return KEY_MOUSE every time some mouse event happens. Then the mouse event can
-be retrieved with <TT
-CLASS="LITERAL"
->getmouse()</TT
->.</P
-><P
->The code approximately looks like this:</P
-><PRE
-CLASS="PROGRAMLISTING"
-> MEVENT event;
+ REPORT_MOUSE_POSITION report mouse movement
+</pre>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="GETTINGEVENTS" id=
+ "GETTINGEVENTS">12.2. Getting the events</a></h3>
+
+ <p>Once a class of mouse events have been enabled, getch()
+ class of functions return KEY_MOUSE every time some mouse
+ event happens. Then the mouse event can be retrieved with
+ <tt class="LITERAL">getmouse()</tt>.</p>
+
+ <p>The code approximately looks like this:</p>
+ <pre class="PROGRAMLISTING">
+ MEVENT event;
ch = getch();
if(ch == KEY_MOUSE)
if(getmouse(&amp;event) == OK)
. /* Do some thing with the event */
.
- .</PRE
-><P
->
-getmouse() returns the event into the pointer given to it. It's a structure
-which contains</P
-><PRE
-CLASS="PROGRAMLISTING"
-> typedef struct
+ .
+</pre>
+
+ <p>getmouse() returns the event into the pointer given to
+ it. It's a structure which contains</p>
+ <pre class="PROGRAMLISTING">
+ typedef struct
{
short id; /* ID to distinguish multiple devices */
int x, y, z; /* event coordinates */
mmask_t bstate; /* button state bits */
- } </PRE
-><P
->The <TT
-CLASS="LITERAL"
->bstate</TT
-> is the main variable we are
-interested in. It tells the button state of the mouse.</P
-><P
->Then with a code snippet like the following, we can find out what happened.</P
-><PRE
-CLASS="PROGRAMLISTING"
-> if(event.bstate &amp; BUTTON1_PRESSED)
- printw("Left Button Pressed");</PRE
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="MOUSETOGETHER"
->12.3. Putting it all Together</A
-></H3
-><P
->That's pretty much interfacing with mouse. Let's create the same menu and enable
-mouse interaction. To make things simpler, key handling is removed.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="BMOME"
-></A
-><P
-><B
->Example 11. Access the menu with mouse !!! </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;ncurses.h&#62;
+ }
+</pre>
+
+ <p>The <tt class="LITERAL">bstate</tt> is the main variable
+ we are interested in. It tells the button state of the
+ mouse.</p>
+
+ <p>Then with a code snippet like the following, we can find
+ out what happened.</p>
+ <pre class="PROGRAMLISTING">
+ if(event.bstate &amp; BUTTON1_PRESSED)
+ printw("Left Button Pressed");
+</pre>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="MOUSETOGETHER" id=
+ "MOUSETOGETHER">12.3. Putting it all Together</a></h3>
+
+ <p>That's pretty much interfacing with mouse. Let's create
+ the same menu and enable mouse interaction. To make things
+ simpler, key handling is removed.</p>
+
+ <div class="EXAMPLE">
+ <a name="BMOME" id="BMOME"></a>
+
+ <p><b>Example 11. Access the menu with mouse !!!</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;ncurses.h&gt;
#define WIDTH 30
#define HEIGHT 10
@@ -3814,12 +2992,12 @@ CLASS="INLINEMEDIAOBJECT"
int startx = 0;
int starty = 0;
-char *choices[] = { "Choice 1",
- "Choice 2",
- "Choice 3",
- "Choice 4",
- "Exit",
- };
+char *choices[] = { "Choice 1",
+ "Choice 2",
+ "Choice 3",
+ "Choice 4",
+ "Exit",
+ };
int n_choices = sizeof(choices) / sizeof(char *);
@@ -3827,338 +3005,291 @@ void print_menu(WINDOW *menu_win, int highlight);
void report_choice(int mouse_x, int mouse_y, int *p_choice);
int main()
-{ int c, choice = 0;
- WINDOW *menu_win;
- MEVENT event;
-
- /* Initialize curses */
- initscr();
- clear();
- noecho();
- cbreak(); //Line buffering disabled. pass on everything
-
- /* Try to put the window in the middle of screen */
- startx = (80 - WIDTH) / 2;
- starty = (24 - HEIGHT) / 2;
-
- attron(A_REVERSE);
- mvprintw(23, 1, "Click on Exit to quit (Works best in a virtual console)");
- refresh();
- attroff(A_REVERSE);
-
- /* Print the menu for the first time */
- menu_win = newwin(HEIGHT, WIDTH, starty, startx);
- print_menu(menu_win, 1);
- /* Get all the mouse events */
- mousemask(ALL_MOUSE_EVENTS, NULL);
-
- while(1)
- { c = wgetch(menu_win);
- switch(c)
- { case KEY_MOUSE:
- if(getmouse(&#38;event) == OK)
- { /* When the user clicks left mouse button */
- if(event.bstate &#38; BUTTON1_PRESSED)
- { report_choice(event.x + 1, event.y + 1, &#38;choice);
- if(choice == -1) //Exit chosen
- goto end;
- mvprintw(22, 1, "Choice made is : %d String Chosen is \"%10s\"", choice, choices[choice - 1]);
- refresh();
- }
- }
- print_menu(menu_win, choice);
- break;
- }
- }
+{ int c, choice = 0;
+ WINDOW *menu_win;
+ MEVENT event;
+
+ /* Initialize curses */
+ initscr();
+ clear();
+ noecho();
+ cbreak(); //Line buffering disabled. pass on everything
+
+ /* Try to put the window in the middle of screen */
+ startx = (80 - WIDTH) / 2;
+ starty = (24 - HEIGHT) / 2;
+
+ attron(A_REVERSE);
+ mvprintw(23, 1, "Click on Exit to quit (Works best in a virtual console)");
+ refresh();
+ attroff(A_REVERSE);
+
+ /* Print the menu for the first time */
+ menu_win = newwin(HEIGHT, WIDTH, starty, startx);
+ print_menu(menu_win, 1);
+ /* Get all the mouse events */
+ mousemask(ALL_MOUSE_EVENTS, NULL);
+
+ while(1)
+ { c = wgetch(menu_win);
+ switch(c)
+ { case KEY_MOUSE:
+ if(getmouse(&amp;event) == OK)
+ { /* When the user clicks left mouse button */
+ if(event.bstate &amp; BUTTON1_PRESSED)
+ { report_choice(event.x + 1, event.y + 1, &amp;choice);
+ if(choice == -1) //Exit chosen
+ goto end;
+ mvprintw(22, 1, "Choice made is : %d String Chosen is \"%10s\"", choice, choices[choice - 1]);
+ refresh();
+ }
+ }
+ print_menu(menu_win, choice);
+ break;
+ }
+ }
end:
- endwin();
- return 0;
+ endwin();
+ return 0;
}
void print_menu(WINDOW *menu_win, int highlight)
{
- int x, y, i;
-
- x = 2;
- y = 2;
- box(menu_win, 0, 0);
- for(i = 0; i &#60; n_choices; ++i)
- { if(highlight == i + 1)
- { wattron(menu_win, A_REVERSE);
- mvwprintw(menu_win, y, x, "%s", choices[i]);
- wattroff(menu_win, A_REVERSE);
- }
- else
- mvwprintw(menu_win, y, x, "%s", choices[i]);
- ++y;
- }
- wrefresh(menu_win);
+ int x, y, i;
+
+ x = 2;
+ y = 2;
+ box(menu_win, 0, 0);
+ for(i = 0; i &lt; n_choices; ++i)
+ { if(highlight == i + 1)
+ { wattron(menu_win, A_REVERSE);
+ mvwprintw(menu_win, y, x, "%s", choices[i]);
+ wattroff(menu_win, A_REVERSE);
+ }
+ else
+ mvwprintw(menu_win, y, x, "%s", choices[i]);
+ ++y;
+ }
+ wrefresh(menu_win);
}
/* Report the choice according to mouse position */
void report_choice(int mouse_x, int mouse_y, int *p_choice)
-{ int i,j, choice;
-
- i = startx + 2;
- j = starty + 3;
-
- for(choice = 0; choice &#60; n_choices; ++choice)
- if(mouse_y == j + choice &#38;&#38; mouse_x &#62;= i &#38;&#38; mouse_x &#60;= i + strlen(choices[choice]))
- { if(choice == n_choices - 1)
- *p_choice = -1;
- else
- *p_choice = choice + 1;
- break;
- }
-}</SPAN
-></PRE
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="MISCMOUSEFUNCS"
->12.4. Miscellaneous Functions</A
-></H3
-><P
->The functions mouse_trafo() and wmouse_trafo() can be used to convert to mouse
-co-ordinates to screen relative co-ordinates. See curs_mouse(3X) man page for details.</P
-><P
->The mouseinterval function sets the maximum time (in thousands of a
-second) that can elapse between press and release events in order for
-them to be recognized as a click. This function returns the previous
-interval value. The default is one fifth of a second.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="SCREEN"
->13. Screen Manipulation</A
-></H2
-><P
->In this section, we will look into some functions, which allow us to manage the
-screen efficiently and to write some fancy programs. This is especially
-important in writing games. </P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="GETYX"
->13.1. getyx() functions</A
-></H3
-><P
->&#13;The function <TT
-CLASS="LITERAL"
->getyx()</TT
-> can be used to find out
-the present cursor co-ordinates. It will fill the values of x and y co-ordinates
-in the arguments given to it. Since getyx() is a macro you don't have to pass
-the address of the variables. It can be called as</P
-><PRE
-CLASS="PROGRAMLISTING"
-> getyx(win, y, x);
+{ int i,j, choice;
+
+ i = startx + 2;
+ j = starty + 3;
+
+ for(choice = 0; choice &lt; n_choices; ++choice)
+ if(mouse_y == j + choice &amp;&amp; mouse_x &gt;= i &amp;&amp; mouse_x &lt;= i + strlen(choices[choice]))
+ { if(choice == n_choices - 1)
+ *p_choice = -1;
+ else
+ *p_choice = choice + 1;
+ break;
+ }
+}</span>
+</pre>
+ </div>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="MISCMOUSEFUNCS" id=
+ "MISCMOUSEFUNCS">12.4. Miscellaneous Functions</a></h3>
+
+ <p>The functions mouse_trafo() and wmouse_trafo() can be
+ used to convert to mouse co-ordinates to screen relative
+ co-ordinates. See curs_mouse(3X) man page for details.</p>
+
+ <p>The mouseinterval function sets the maximum time (in
+ thousands of a second) that can elapse between press and
+ release events in order for them to be recognized as a
+ click. This function returns the previous interval value.
+ The default is one fifth of a second.</p>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="SCREEN" id="SCREEN">13. Screen
+ Manipulation</a></h2>
+
+ <p>In this section, we will look into some functions, which
+ allow us to manage the screen efficiently and to write some
+ fancy programs. This is especially important in writing
+ games.</p>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="GETYX" id="GETYX">13.1. getyx()
+ functions</a></h3>
+
+ <p>The function <tt class="LITERAL">getyx()</tt> can be
+ used to find out the present cursor co-ordinates. It will
+ fill the values of x and y co-ordinates in the arguments
+ given to it. Since getyx() is a macro you don't have to
+ pass the address of the variables. It can be called as</p>
+ <pre class="PROGRAMLISTING">
+ getyx(win, y, x);
/* win: window pointer
* y, x: y, x co-ordinates will be put into this variables
- */</PRE
-><P
->The function getparyx() gets the beginning co-ordinates of the sub window
-relative to the main window. This is some times useful to update a sub window.
-When designing fancy stuff like writing multiple menus, it becomes difficult to
-store the menu positions, their first option co-ordinates etc. A simple solution
-to this problem, is to create menus in sub windows and later find the starting
-co-ordinates of the menus by using getparyx().</P
-><P
->The functions getbegyx() and getmaxyx() store current window's beginning and
-maximum co-ordinates. These functions are useful in the same way as above in
-managing the windows and sub windows effectively.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="SCREENDUMP"
->13.2. Screen Dumping</A
-></H3
-><P
->While writing games, some times it becomes necessary to store the state of the
-screen and restore it back to the same state. The function scr_dump() can be
-used to dump the screen contents to a file given as an argument. Later it can be
-restored by scr_restore function. These two simple functions can be used
-effectively to maintain a fast moving game with changing scenarios. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="WINDOWDUMP"
->13.3. Window Dumping</A
-></H3
-><P
->To store and restore windows, the functions
-<TT
-CLASS="LITERAL"
->putwin()</TT
-> and <TT
-CLASS="LITERAL"
->getwin()</TT
-> can be used. <TT
-CLASS="LITERAL"
->putwin()</TT
-> puts
-the present window state into a file, which can be later restored by
-<TT
-CLASS="LITERAL"
->getwin()</TT
->.</P
-><P
->
-The function <TT
-CLASS="LITERAL"
->copywin()</TT
-> can be used to copy a
-window completely onto another window. It takes the source and destination
-windows as parameters and according to the rectangle specified, it copies the
-rectangular region from source to destination window. It's last parameter
-specifies whether to overwrite or just overlay the contents on to the
-destination window. If this argument is true, then the copying is
-non-destructive.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="MISC"
->14. Miscellaneous features</A
-></H2
-><P
->Now you know enough features to write a good curses program, with all bells and
-whistles. There are some miscellaneous functions which are useful in various
-cases. Let's go headlong into some of those.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="CURSSET"
->14.1. curs_set()</A
-></H3
-><P
->This function can be used to make the cursor invisible. The parameter to this
-function should be </P
-><PRE
-CLASS="PROGRAMLISTING"
-> 0 : invisible or
+ */
+</pre>
+
+ <p>The function getparyx() gets the beginning co-ordinates
+ of the sub window relative to the main window. This is some
+ times useful to update a sub window. When designing fancy
+ stuff like writing multiple menus, it becomes difficult to
+ store the menu positions, their first option co-ordinates
+ etc. A simple solution to this problem, is to create menus
+ in sub windows and later find the starting co-ordinates of
+ the menus by using getparyx().</p>
+
+ <p>The functions getbegyx() and getmaxyx() store current
+ window's beginning and maximum co-ordinates. These
+ functions are useful in the same way as above in managing
+ the windows and sub windows effectively.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="SCREENDUMP" id=
+ "SCREENDUMP">13.2. Screen Dumping</a></h3>
+
+ <p>While writing games, some times it becomes necessary to
+ store the state of the screen and restore it back to the
+ same state. The function scr_dump() can be used to dump the
+ screen contents to a file given as an argument. Later it
+ can be restored by scr_restore function. These two simple
+ functions can be used effectively to maintain a fast moving
+ game with changing scenarios.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="WINDOWDUMP" id=
+ "WINDOWDUMP">13.3. Window Dumping</a></h3>
+
+ <p>To store and restore windows, the functions <tt class=
+ "LITERAL">putwin()</tt> and <tt class=
+ "LITERAL">getwin()</tt> can be used. <tt class=
+ "LITERAL">putwin()</tt> puts the present window state into
+ a file, which can be later restored by <tt class=
+ "LITERAL">getwin()</tt>.</p>
+
+ <p>The function <tt class="LITERAL">copywin()</tt> can be
+ used to copy a window completely onto another window. It
+ takes the source and destination windows as parameters and
+ according to the rectangle specified, it copies the
+ rectangular region from source to destination window. It's
+ last parameter specifies whether to overwrite or just
+ overlay the contents on to the destination window. If this
+ argument is true, then the copying is non-destructive.</p>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="MISC" id="MISC">14. Miscellaneous
+ features</a></h2>
+
+ <p>Now you know enough features to write a good curses
+ program, with all bells and whistles. There are some
+ miscellaneous functions which are useful in various cases.
+ Let's go headlong into some of those.</p>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="CURSSET" id="CURSSET">14.1.
+ curs_set()</a></h3>
+
+ <p>This function can be used to make the cursor invisible.
+ The parameter to this function should be</p>
+ <pre class="PROGRAMLISTING">
+ 0 : invisible or
1 : normal or
- 2 : very visible.</PRE
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="TEMPLEAVE"
->14.2. Temporarily Leaving Curses mode</A
-></H3
-><P
->Some times you may want to get back to cooked mode (normal line buffering mode)
-temporarily. In such a case you will first need to save the tty modes with a
-call to <TT
-CLASS="LITERAL"
->def_prog_mode()</TT
-> and then call
-<TT
-CLASS="LITERAL"
->endwin()</TT
-> to end the curses mode. This will
-leave you in the original tty mode. To get back to curses once you are done,
-call <TT
-CLASS="LITERAL"
->reset_prog_mode() </TT
->. This function returns
-the tty to the state stored by <TT
-CLASS="LITERAL"
->def_prog_mode()</TT
->. Then do refresh(), and you are back to the curses mode. Here
-is an example showing the sequence of things to be done.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="BTELE"
-></A
-><P
-><B
->Example 12. Temporarily Leaving Curses Mode </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;ncurses.h&#62;
+ 2 : very visible.
+</pre>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="TEMPLEAVE" id="TEMPLEAVE">14.2.
+ Temporarily Leaving Curses mode</a></h3>
+
+ <p>Some times you may want to get back to cooked mode
+ (normal line buffering mode) temporarily. In such a case
+ you will first need to save the tty modes with a call to
+ <tt class="LITERAL">def_prog_mode()</tt> and then call
+ <tt class="LITERAL">endwin()</tt> to end the curses mode.
+ This will leave you in the original tty mode. To get back
+ to curses once you are done, call <tt class=
+ "LITERAL">reset_prog_mode()</tt> . This function returns
+ the tty to the state stored by <tt class=
+ "LITERAL">def_prog_mode()</tt>. Then do refresh(), and you
+ are back to the curses mode. Here is an example showing the
+ sequence of things to be done.</p>
+
+ <div class="EXAMPLE">
+ <a name="BTELE" id="BTELE"></a>
+
+ <p><b>Example 12. Temporarily Leaving Curses Mode</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;ncurses.h&gt;
int main()
-{
- initscr(); /* Start curses mode */
- printw("Hello World !!!\n"); /* Print Hello World */
- refresh(); /* Print it on to the real screen */
- def_prog_mode(); /* Save the tty modes */
- endwin(); /* End curses mode temporarily */
- system("/bin/sh"); /* Do whatever you like in cooked mode */
- reset_prog_mode(); /* Return to the previous tty mode*/
- /* stored by def_prog_mode() */
- refresh(); /* Do refresh() to restore the */
- /* Screen contents */
- printw("Another String\n"); /* Back to curses use the full */
- refresh(); /* capabilities of curses */
- endwin(); /* End curses mode */
-
- return 0;
-}</SPAN
-></PRE
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="ACSVARS"
->14.3. ACS_ variables</A
-></H3
-><P
->If you have ever programmed in DOS, you know about those nifty characters in
-extended character set. They are printable only on some terminals. NCURSES
-functions like <TT
-CLASS="LITERAL"
->box()</TT
-> use these characters. All
-these variables start with ACS meaning alternative character set. You might have
-noticed me using these characters in some of the programs above. Here's an example
-showing all the characters.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="BACSVARS"
-></A
-><P
-><B
->Example 13. ACS Variables Example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;ncurses.h&#62;
+{
+ initscr(); /* Start curses mode */
+ printw("Hello World !!!\n"); /* Print Hello World */
+ refresh(); /* Print it on to the real screen */
+ def_prog_mode(); /* Save the tty modes */
+ endwin(); /* End curses mode temporarily */
+ system("/bin/sh"); /* Do whatever you like in cooked mode */
+ reset_prog_mode(); /* Return to the previous tty mode*/
+ /* stored by def_prog_mode() */
+ refresh(); /* Do refresh() to restore the */
+ /* Screen contents */
+ printw("Another String\n"); /* Back to curses use the full */
+ refresh(); /* capabilities of curses */
+ endwin(); /* End curses mode */
+
+ return 0;
+}</span>
+</pre>
+ </div>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="ACSVARS" id="ACSVARS">14.3. ACS_
+ variables</a></h3>
+
+ <p>If you have ever programmed in DOS, you know about those
+ nifty characters in extended character set. They are
+ printable only on some terminals. NCURSES functions like
+ <tt class="LITERAL">box()</tt> use these characters. All
+ these variables start with ACS meaning alternative
+ character set. You might have noticed me using these
+ characters in some of the programs above. Here's an example
+ showing all the characters.</p>
+
+ <div class="EXAMPLE">
+ <a name="BACSVARS" id="BACSVARS"></a>
+
+ <p><b>Example 13. ACS Variables Example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;ncurses.h&gt;
int main()
{
@@ -4200,218 +3331,207 @@ int main()
getch();
endwin();
- return 0;
-}</SPAN
-></PRE
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="OTHERLIB"
->15. Other libraries</A
-></H2
-><P
->Apart from the curses library, there are few text mode libraries, which provide
-more functionality and a lot of features. The following sections explain three
-standard libraries which are usually distributed along with curses. </P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="PANELS"
->16. Panel Library</A
-></H2
-><P
->Now that you are proficient in curses, you wanted to do some thing big. You
-created a lot of overlapping windows to give a professional windows-type look.
-Unfortunately, it soon becomes difficult to manage these. The multiple
-refreshes, updates plunge you into a nightmare. The overlapping windows create
-blotches, whenever you forget to refresh the windows in the proper order. </P
-><P
->Don't despair. There's an elegant solution provided in panels library. In the
-words of developers of ncurses </P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->When your interface design is such that windows may dive deeper into the
-visibility stack or pop to the top at runtime, the resulting book-keeping can be
-tedious and difficult to get right. Hence the panels library.</I
-></SPAN
-></P
-><P
->If you have lot of overlapping windows, then panels library is the way to go. It
-obviates the need of doing series of wnoutrefresh(), doupdate() and relieves the
-burden of doing it correctly(bottom up). The library maintains information about
-the order of windows, their overlapping and update the screen properly. So why
-wait? Let's take a close peek into panels.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="PANELBASICS"
->16.1. The Basics</A
-></H3
-><P
->Panel object is a window that is implicitly treated as part of a deck including
-all other panel objects. The deck is treated as a stack with the top panel being
-completely visible and the other panels may or may not be obscured according to
-their positions. So the basic idea is to create a stack of overlapping panels
-and use panels library to display them correctly. There is a function similar to
-refresh() which, when called , displays panels in the correct order. Functions
-are provided to hide or show panels, move panels, change its size etc.. The
-overlapping problem is managed by the panels library during all the calls to
-these functions. </P
-><P
->The general flow of a panel program goes like this:
-
-<P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->Create the windows (with newwin()) to be attached to the panels.</P
-></LI
-><LI
-><P
->Create panels with the chosen visibility order. Stack them up according to the
-desired visibility. The function new_panel() is used to created panels.</P
-></LI
-><LI
-><P
->Call update_panels() to write the panels to the virtual screen in correct
-visibility order. Do a doupdate() to show it on the screen. </P
-></LI
-><LI
-><P
->Mainpulate the panels with show_panel(), hide_panel(), move_panel() etc. Make
-use of helper functions like panel_hidden() and panel_window(). Make use of user
-pointer to store custom data for a panel. Use the functions set_panel_userptr()
-and panel_userptr() to set and get the user pointer for a panel.</P
-></LI
-><LI
-><P
->When you are done with the panel use del_panel() to delete the panel.</P
-></LI
-></OL
-></P
-><P
->Let's make the concepts clear, with some programs. The following is a simple
-program which creates 3 overlapping panels and shows them on the screen. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="COMPILEPANELS"
->16.2. Compiling With the Panels Library</A
-></H3
-><P
->To use panels library functions, you have to include panel.h and to link the
-program with panels library the flag -lpanel should be added along with
--lncurses in that order.</P
-><PRE
-CLASS="PROGRAMLISTING"
-> #include &lt;panel.h&gt;
+ return 0;
+}</span>
+</pre>
+ </div>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="OTHERLIB" id="OTHERLIB">15. Other
+ libraries</a></h2>
+
+ <p>Apart from the curses library, there are few text mode
+ libraries, which provide more functionality and a lot of
+ features. The following sections explain three standard
+ libraries which are usually distributed along with
+ curses.</p>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="PANELS" id="PANELS">16. Panel
+ Library</a></h2>
+
+ <p>Now that you are proficient in curses, you wanted to do
+ some thing big. You created a lot of overlapping windows to
+ give a professional windows-type look. Unfortunately, it soon
+ becomes difficult to manage these. The multiple refreshes,
+ updates plunge you into a nightmare. The overlapping windows
+ create blotches, whenever you forget to refresh the windows
+ in the proper order.</p>
+
+ <p>Don't despair. There's an elegant solution provided in
+ panels library. In the words of developers of ncurses</p>
+
+ <p><span class="emphasis"><i class="EMPHASIS">When your
+ interface design is such that windows may dive deeper into
+ the visibility stack or pop to the top at runtime, the
+ resulting book-keeping can be tedious and difficult to get
+ right. Hence the panels library.</i></span></p>
+
+ <p>If you have lot of overlapping windows, then panels
+ library is the way to go. It obviates the need of doing
+ series of wnoutrefresh(), doupdate() and relieves the burden
+ of doing it correctly(bottom up). The library maintains
+ information about the order of windows, their overlapping and
+ update the screen properly. So why wait? Let's take a close
+ peek into panels.</p>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="PANELBASICS" id=
+ "PANELBASICS">16.1. The Basics</a></h3>
+
+ <p>Panel object is a window that is implicitly treated as
+ part of a deck including all other panel objects. The deck
+ is treated as a stack with the top panel being completely
+ visible and the other panels may or may not be obscured
+ according to their positions. So the basic idea is to
+ create a stack of overlapping panels and use panels library
+ to display them correctly. There is a function similar to
+ refresh() which, when called , displays panels in the
+ correct order. Functions are provided to hide or show
+ panels, move panels, change its size etc.. The overlapping
+ problem is managed by the panels library during all the
+ calls to these functions.</p>
+
+ <p>The general flow of a panel program goes like this:</p>
+
+ <ol type="1">
+ <li>
+ <p>Create the windows (with newwin()) to be attached to
+ the panels.</p>
+ </li>
+
+ <li>
+ <p>Create panels with the chosen visibility order.
+ Stack them up according to the desired visibility. The
+ function new_panel() is used to created panels.</p>
+ </li>
+
+ <li>
+ <p>Call update_panels() to write the panels to the
+ virtual screen in correct visibility order. Do a
+ doupdate() to show it on the screen.</p>
+ </li>
+
+ <li>
+ <p>Mainpulate the panels with show_panel(),
+ hide_panel(), move_panel() etc. Make use of helper
+ functions like panel_hidden() and panel_window(). Make
+ use of user pointer to store custom data for a panel.
+ Use the functions set_panel_userptr() and
+ panel_userptr() to set and get the user pointer for a
+ panel.</p>
+ </li>
+
+ <li>
+ <p>When you are done with the panel use del_panel() to
+ delete the panel.</p>
+ </li>
+ </ol>
+
+ <p>Let's make the concepts clear, with some programs. The
+ following is a simple program which creates 3 overlapping
+ panels and shows them on the screen.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="COMPILEPANELS" id=
+ "COMPILEPANELS">16.2. Compiling With the Panels
+ Library</a></h3>
+
+ <p>To use panels library functions, you have to include
+ panel.h and to link the program with panels library the
+ flag -lpanel should be added along with -lncurses in that
+ order.</p>
+ <pre class="PROGRAMLISTING">
+ #include &lt;panel.h&gt;
.
.
.
- compile and link: gcc &lt;program file&gt; -lpanel -lncurses</PRE
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="PPASI"
-></A
-><P
-><B
->Example 14. Panel basics</B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;panel.h&#62;
+ compile and link: gcc &lt;program file&gt; -lpanel -lncurses
+</pre>
+
+ <div class="EXAMPLE">
+ <a name="PPASI" id="PPASI"></a>
+
+ <p><b>Example 14. Panel basics</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;panel.h&gt;
int main()
-{ WINDOW *my_wins[3];
- PANEL *my_panels[3];
- int lines = 10, cols = 40, y = 2, x = 4, i;
-
- initscr();
- cbreak();
- noecho();
-
- /* Create windows for the panels */
- my_wins[0] = newwin(lines, cols, y, x);
- my_wins[1] = newwin(lines, cols, y + 1, x + 5);
- my_wins[2] = newwin(lines, cols, y + 2, x + 10);
-
- /*
- * Create borders around the windows so that you can see the effect
- * of panels
- */
- for(i = 0; i &#60; 3; ++i)
- box(my_wins[i], 0, 0);
-
- /* Attach a panel to each window */ /* Order is bottom up */
- my_panels[0] = new_panel(my_wins[0]); /* Push 0, order: stdscr-0 */
- my_panels[1] = new_panel(my_wins[1]); /* Push 1, order: stdscr-0-1 */
- my_panels[2] = new_panel(my_wins[2]); /* Push 2, order: stdscr-0-1-2 */
-
- /* Update the stacking order. 2nd panel will be on top */
- update_panels();
-
- /* Show it on the screen */
- doupdate();
-
- getch();
- endwin();
+{ WINDOW *my_wins[3];
+ PANEL *my_panels[3];
+ int lines = 10, cols = 40, y = 2, x = 4, i;
+
+ initscr();
+ cbreak();
+ noecho();
+
+ /* Create windows for the panels */
+ my_wins[0] = newwin(lines, cols, y, x);
+ my_wins[1] = newwin(lines, cols, y + 1, x + 5);
+ my_wins[2] = newwin(lines, cols, y + 2, x + 10);
+
+ /*
+ * Create borders around the windows so that you can see the effect
+ * of panels
+ */
+ for(i = 0; i &lt; 3; ++i)
+ box(my_wins[i], 0, 0);
+
+ /* Attach a panel to each window */ /* Order is bottom up */
+ my_panels[0] = new_panel(my_wins[0]); /* Push 0, order: stdscr-0 */
+ my_panels[1] = new_panel(my_wins[1]); /* Push 1, order: stdscr-0-1 */
+ my_panels[2] = new_panel(my_wins[2]); /* Push 2, order: stdscr-0-1-2 */
+
+ /* Update the stacking order. 2nd panel will be on top */
+ update_panels();
+
+ /* Show it on the screen */
+ doupdate();
+
+ getch();
+ endwin();
}
-</SPAN
-></PRE
-></DIV
-><P
->As you can see, above program follows a simple flow as explained. The windows
-are created with newwin() and then they are attached to panels with new_panel().
-As we attach one panel after another, the stack of panels gets updated. To put
-them on screen update_panels() and doupdate() are called.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="PANELBROWSING"
->16.3. Panel Window Browsing</A
-></H3
-><P
->A slightly complicated example is given below. This program creates 3
-windows which can be cycled through using tab. Have a look at the code.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="PPABR"
-></A
-><P
-><B
->Example 15. Panel Window Browsing Example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;panel.h&#62;
+</span>
+</pre>
+ </div>
+
+ <p>As you can see, above program follows a simple flow as
+ explained. The windows are created with newwin() and then
+ they are attached to panels with new_panel(). As we attach
+ one panel after another, the stack of panels gets updated.
+ To put them on screen update_panels() and doupdate() are
+ called.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="PANELBROWSING" id=
+ "PANELBROWSING">16.3. Panel Window Browsing</a></h3>
+
+ <p>A slightly complicated example is given below. This
+ program creates 3 windows which can be cycled through using
+ tab. Have a look at the code.</p>
+
+ <div class="EXAMPLE">
+ <a name="PPABR" id="PPABR"></a>
+
+ <p><b>Example 15. Panel Window Browsing Example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;panel.h&gt;
#define NLINES 10
#define NCOLS 40
@@ -4421,191 +3541,181 @@ void win_show(WINDOW *win, char *label, int label_color);
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
int main()
-{ WINDOW *my_wins[3];
- PANEL *my_panels[3];
- PANEL *top;
- int ch;
-
- /* Initialize curses */
- initscr();
- start_color();
- cbreak();
- noecho();
- keypad(stdscr, TRUE);
-
- /* Initialize all the colors */
- init_pair(1, COLOR_RED, COLOR_BLACK);
- init_pair(2, COLOR_GREEN, COLOR_BLACK);
- init_pair(3, COLOR_BLUE, COLOR_BLACK);
- init_pair(4, COLOR_CYAN, COLOR_BLACK);
-
- init_wins(my_wins, 3);
-
- /* Attach a panel to each window */ /* Order is bottom up */
- my_panels[0] = new_panel(my_wins[0]); /* Push 0, order: stdscr-0 */
- my_panels[1] = new_panel(my_wins[1]); /* Push 1, order: stdscr-0-1 */
- my_panels[2] = new_panel(my_wins[2]); /* Push 2, order: stdscr-0-1-2 */
-
- /* Set up the user pointers to the next panel */
- set_panel_userptr(my_panels[0], my_panels[1]);
- set_panel_userptr(my_panels[1], my_panels[2]);
- set_panel_userptr(my_panels[2], my_panels[0]);
-
- /* Update the stacking order. 2nd panel will be on top */
- update_panels();
-
- /* Show it on the screen */
- attron(COLOR_PAIR(4));
- mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
- attroff(COLOR_PAIR(4));
- doupdate();
-
- top = my_panels[2];
- while((ch = getch()) != KEY_F(1))
- { switch(ch)
- { case 9:
- top = (PANEL *)panel_userptr(top);
- top_panel(top);
- break;
- }
- update_panels();
- doupdate();
- }
- endwin();
- return 0;
+{ WINDOW *my_wins[3];
+ PANEL *my_panels[3];
+ PANEL *top;
+ int ch;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ /* Initialize all the colors */
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_GREEN, COLOR_BLACK);
+ init_pair(3, COLOR_BLUE, COLOR_BLACK);
+ init_pair(4, COLOR_CYAN, COLOR_BLACK);
+
+ init_wins(my_wins, 3);
+
+ /* Attach a panel to each window */ /* Order is bottom up */
+ my_panels[0] = new_panel(my_wins[0]); /* Push 0, order: stdscr-0 */
+ my_panels[1] = new_panel(my_wins[1]); /* Push 1, order: stdscr-0-1 */
+ my_panels[2] = new_panel(my_wins[2]); /* Push 2, order: stdscr-0-1-2 */
+
+ /* Set up the user pointers to the next panel */
+ set_panel_userptr(my_panels[0], my_panels[1]);
+ set_panel_userptr(my_panels[1], my_panels[2]);
+ set_panel_userptr(my_panels[2], my_panels[0]);
+
+ /* Update the stacking order. 2nd panel will be on top */
+ update_panels();
+
+ /* Show it on the screen */
+ attron(COLOR_PAIR(4));
+ mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
+ attroff(COLOR_PAIR(4));
+ doupdate();
+
+ top = my_panels[2];
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case 9:
+ top = (PANEL *)panel_userptr(top);
+ top_panel(top);
+ break;
+ }
+ update_panels();
+ doupdate();
+ }
+ endwin();
+ return 0;
}
/* Put all the windows */
void init_wins(WINDOW **wins, int n)
-{ int x, y, i;
- char label[80];
-
- y = 2;
- x = 10;
- for(i = 0; i &#60; n; ++i)
- { wins[i] = newwin(NLINES, NCOLS, y, x);
- sprintf(label, "Window Number %d", i + 1);
- win_show(wins[i], label, i + 1);
- y += 3;
- x += 7;
- }
+{ int x, y, i;
+ char label[80];
+
+ y = 2;
+ x = 10;
+ for(i = 0; i &lt; n; ++i)
+ { wins[i] = newwin(NLINES, NCOLS, y, x);
+ sprintf(label, "Window Number %d", i + 1);
+ win_show(wins[i], label, i + 1);
+ y += 3;
+ x += 7;
+ }
}
/* Show the window with a border and a label */
void win_show(WINDOW *win, char *label, int label_color)
-{ int startx, starty, height, width;
+{ int startx, starty, height, width;
- getbegyx(win, starty, startx);
- getmaxyx(win, height, width);
+ getbegyx(win, starty, startx);
+ getmaxyx(win, height, width);
- box(win, 0, 0);
- mvwaddch(win, 2, 0, ACS_LTEE);
- mvwhline(win, 2, 1, ACS_HLINE, width - 2);
- mvwaddch(win, 2, width - 1, ACS_RTEE);
-
- print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
+ box(win, 0, 0);
+ mvwaddch(win, 2, 0, ACS_LTEE);
+ mvwhline(win, 2, 1, ACS_HLINE, width - 2);
+ mvwaddch(win, 2, width - 1, ACS_RTEE);
+
+ print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
}
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{ int length, x, y;
- float temp;
-
- if(win == NULL)
- win = stdscr;
- getyx(win, y, x);
- if(startx != 0)
- x = startx;
- if(starty != 0)
- y = starty;
- if(width == 0)
- width = 80;
-
- length = strlen(string);
- temp = (width - length)/ 2;
- x = startx + (int)temp;
- wattron(win, color);
- mvwprintw(win, y, x, "%s", string);
- wattroff(win, color);
- refresh();
-}</SPAN
-></PRE
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="USERPTRUSING"
->16.4. Using User Pointers</A
-></H3
-><P
->In the above example I used user pointers to find out the next window in the
-cycle. We can attach custom information to the panel by specifying a user
-pointer, which can point to any information you want to store. In this case I
-stored the pointer to the next panel in the cycle. User pointer for a panel can
-be set with the function <TT
-CLASS="LITERAL"
-> set_panel_userptr()</TT
->.
-It can be accessed using the function <TT
-CLASS="LITERAL"
->panel_userptr()</TT
-> which will return the user pointer for the panel given as
-argument. After finding the next panel in the cycle It's brought to the top by
-the function top_panel(). This function brings the panel given as argument to
-the top of the panel stack. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="PANELMOVERESIZE"
->16.5. Moving and Resizing Panels</A
-></H3
-><P
->The function <TT
-CLASS="LITERAL"
->move_panel()</TT
-> can be used to move a
-panel to the desired location. It does not change the position of the panel in
-the stack. Make sure that you use move_panel() instead mvwin() on the window
-associated with the panel.</P
-><P
->Resizing a panel is slightly complex. There is no straight forward function
-just to resize the window associated with a panel. A solution to resize a panel
-is to create a new window with the desired sizes, change the window associated
-with the panel using replace_panel(). Don't forget to delete the old window. The
-window associated with a panel can be found by using the function
-panel_window().</P
-><P
->The following program shows these concepts, in supposedly simple program. You
-can cycle through the window with &lt;TAB&gt; as usual. To resize or move the
-active panel press 'r' for resize 'm' for moving. Then use arrow keys to resize
-or move it to the desired way and press enter to end your resizing or moving.
-This example makes use of user data to get the required data to do the
-operations. </P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="PPARE"
-></A
-><P
-><B
->Example 16. Panel Moving and Resizing example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;panel.h&#62;
+{ int length, x, y;
+ float temp;
+
+ if(win == NULL)
+ win = stdscr;
+ getyx(win, y, x);
+ if(startx != 0)
+ x = startx;
+ if(starty != 0)
+ y = starty;
+ if(width == 0)
+ width = 80;
+
+ length = strlen(string);
+ temp = (width - length)/ 2;
+ x = startx + (int)temp;
+ wattron(win, color);
+ mvwprintw(win, y, x, "%s", string);
+ wattroff(win, color);
+ refresh();
+}</span>
+</pre>
+ </div>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="USERPTRUSING" id=
+ "USERPTRUSING">16.4. Using User Pointers</a></h3>
+
+ <p>In the above example I used user pointers to find out
+ the next window in the cycle. We can attach custom
+ information to the panel by specifying a user pointer,
+ which can point to any information you want to store. In
+ this case I stored the pointer to the next panel in the
+ cycle. User pointer for a panel can be set with the
+ function <tt class="LITERAL">set_panel_userptr()</tt>. It
+ can be accessed using the function <tt class=
+ "LITERAL">panel_userptr()</tt> which will return the user
+ pointer for the panel given as argument. After finding the
+ next panel in the cycle It's brought to the top by the
+ function top_panel(). This function brings the panel given
+ as argument to the top of the panel stack.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="PANELMOVERESIZE" id=
+ "PANELMOVERESIZE">16.5. Moving and Resizing Panels</a></h3>
+
+ <p>The function <tt class="LITERAL">move_panel()</tt> can
+ be used to move a panel to the desired location. It does
+ not change the position of the panel in the stack. Make
+ sure that you use move_panel() instead mvwin() on the
+ window associated with the panel.</p>
+
+ <p>Resizing a panel is slightly complex. There is no
+ straight forward function just to resize the window
+ associated with a panel. A solution to resize a panel is to
+ create a new window with the desired sizes, change the
+ window associated with the panel using replace_panel().
+ Don't forget to delete the old window. The window
+ associated with a panel can be found by using the function
+ panel_window().</p>
+
+ <p>The following program shows these concepts, in
+ supposedly simple program. You can cycle through the window
+ with &lt;TAB&gt; as usual. To resize or move the active
+ panel press 'r' for resize 'm' for moving. Then use arrow
+ keys to resize or move it to the desired way and press
+ enter to end your resizing or moving. This example makes
+ use of user data to get the required data to do the
+ operations.</p>
+
+ <div class="EXAMPLE">
+ <a name="PPARE" id="PPARE"></a>
+
+ <p><b>Example 16. Panel Moving and Resizing
+ example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;panel.h&gt;
typedef struct _PANEL_DATA {
- int x, y, w, h;
- char label[80];
- int label_color;
- PANEL *next;
+ int x, y, w, h;
+ char label[80];
+ int label_color;
+ PANEL *next;
}PANEL_DATA;
#define NLINES 10
@@ -4617,289 +3727,284 @@ void print_in_middle(WINDOW *win, int starty, int startx, int width, char *strin
void set_user_ptrs(PANEL **panels, int n);
int main()
-{ WINDOW *my_wins[3];
- PANEL *my_panels[3];
- PANEL_DATA *top;
- PANEL *stack_top;
- WINDOW *temp_win, *old_win;
- int ch;
- int newx, newy, neww, newh;
- int size = FALSE, move = FALSE;
-
- /* Initialize curses */
- initscr();
- start_color();
- cbreak();
- noecho();
- keypad(stdscr, TRUE);
-
- /* Initialize all the colors */
- init_pair(1, COLOR_RED, COLOR_BLACK);
- init_pair(2, COLOR_GREEN, COLOR_BLACK);
- init_pair(3, COLOR_BLUE, COLOR_BLACK);
- init_pair(4, COLOR_CYAN, COLOR_BLACK);
-
- init_wins(my_wins, 3);
-
- /* Attach a panel to each window */ /* Order is bottom up */
- my_panels[0] = new_panel(my_wins[0]); /* Push 0, order: stdscr-0 */
- my_panels[1] = new_panel(my_wins[1]); /* Push 1, order: stdscr-0-1 */
- my_panels[2] = new_panel(my_wins[2]); /* Push 2, order: stdscr-0-1-2 */
-
- set_user_ptrs(my_panels, 3);
- /* Update the stacking order. 2nd panel will be on top */
- update_panels();
-
- /* Show it on the screen */
- attron(COLOR_PAIR(4));
- mvprintw(LINES - 3, 0, "Use 'm' for moving, 'r' for resizing");
- mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
- attroff(COLOR_PAIR(4));
- doupdate();
-
- stack_top = my_panels[2];
- top = (PANEL_DATA *)panel_userptr(stack_top);
- newx = top-&#62;x;
- newy = top-&#62;y;
- neww = top-&#62;w;
- newh = top-&#62;h;
- while((ch = getch()) != KEY_F(1))
- { switch(ch)
- { case 9: /* Tab */
- top = (PANEL_DATA *)panel_userptr(stack_top);
- top_panel(top-&#62;next);
- stack_top = top-&#62;next;
- top = (PANEL_DATA *)panel_userptr(stack_top);
- newx = top-&#62;x;
- newy = top-&#62;y;
- neww = top-&#62;w;
- newh = top-&#62;h;
- break;
- case 'r': /* Re-Size*/
- size = TRUE;
- attron(COLOR_PAIR(4));
- mvprintw(LINES - 4, 0, "Entered Resizing :Use Arrow Keys to resize and press &#60;ENTER&#62; to end resizing");
- refresh();
- attroff(COLOR_PAIR(4));
- break;
- case 'm': /* Move */
- attron(COLOR_PAIR(4));
- mvprintw(LINES - 4, 0, "Entered Moving: Use Arrow Keys to Move and press &#60;ENTER&#62; to end moving");
- refresh();
- attroff(COLOR_PAIR(4));
- move = TRUE;
- break;
- case KEY_LEFT:
- if(size == TRUE)
- { --newx;
- ++neww;
- }
- if(move == TRUE)
- --newx;
- break;
- case KEY_RIGHT:
- if(size == TRUE)
- { ++newx;
- --neww;
- }
- if(move == TRUE)
- ++newx;
- break;
- case KEY_UP:
- if(size == TRUE)
- { --newy;
- ++newh;
- }
- if(move == TRUE)
- --newy;
- break;
- case KEY_DOWN:
- if(size == TRUE)
- { ++newy;
- --newh;
- }
- if(move == TRUE)
- ++newy;
- break;
- case 10: /* Enter */
- move(LINES - 4, 0);
- clrtoeol();
- refresh();
- if(size == TRUE)
- { old_win = panel_window(stack_top);
- temp_win = newwin(newh, neww, newy, newx);
- replace_panel(stack_top, temp_win);
- win_show(temp_win, top-&#62;label, top-&#62;label_color);
- delwin(old_win);
- size = FALSE;
- }
- if(move == TRUE)
- { move_panel(stack_top, newy, newx);
- move = FALSE;
- }
- break;
-
- }
- attron(COLOR_PAIR(4));
- mvprintw(LINES - 3, 0, "Use 'm' for moving, 'r' for resizing");
- mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
- attroff(COLOR_PAIR(4));
- refresh();
- update_panels();
- doupdate();
- }
- endwin();
- return 0;
+{ WINDOW *my_wins[3];
+ PANEL *my_panels[3];
+ PANEL_DATA *top;
+ PANEL *stack_top;
+ WINDOW *temp_win, *old_win;
+ int ch;
+ int newx, newy, neww, newh;
+ int size = FALSE, move = FALSE;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ /* Initialize all the colors */
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_GREEN, COLOR_BLACK);
+ init_pair(3, COLOR_BLUE, COLOR_BLACK);
+ init_pair(4, COLOR_CYAN, COLOR_BLACK);
+
+ init_wins(my_wins, 3);
+
+ /* Attach a panel to each window */ /* Order is bottom up */
+ my_panels[0] = new_panel(my_wins[0]); /* Push 0, order: stdscr-0 */
+ my_panels[1] = new_panel(my_wins[1]); /* Push 1, order: stdscr-0-1 */
+ my_panels[2] = new_panel(my_wins[2]); /* Push 2, order: stdscr-0-1-2 */
+
+ set_user_ptrs(my_panels, 3);
+ /* Update the stacking order. 2nd panel will be on top */
+ update_panels();
+
+ /* Show it on the screen */
+ attron(COLOR_PAIR(4));
+ mvprintw(LINES - 3, 0, "Use 'm' for moving, 'r' for resizing");
+ mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
+ attroff(COLOR_PAIR(4));
+ doupdate();
+
+ stack_top = my_panels[2];
+ top = (PANEL_DATA *)panel_userptr(stack_top);
+ newx = top-&gt;x;
+ newy = top-&gt;y;
+ neww = top-&gt;w;
+ newh = top-&gt;h;
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case 9: /* Tab */
+ top = (PANEL_DATA *)panel_userptr(stack_top);
+ top_panel(top-&gt;next);
+ stack_top = top-&gt;next;
+ top = (PANEL_DATA *)panel_userptr(stack_top);
+ newx = top-&gt;x;
+ newy = top-&gt;y;
+ neww = top-&gt;w;
+ newh = top-&gt;h;
+ break;
+ case 'r': /* Re-Size*/
+ size = TRUE;
+ attron(COLOR_PAIR(4));
+ mvprintw(LINES - 4, 0, "Entered Resizing :Use Arrow Keys to resize and press &lt;ENTER&gt; to end resizing");
+ refresh();
+ attroff(COLOR_PAIR(4));
+ break;
+ case 'm': /* Move */
+ attron(COLOR_PAIR(4));
+ mvprintw(LINES - 4, 0, "Entered Moving: Use Arrow Keys to Move and press &lt;ENTER&gt; to end moving");
+ refresh();
+ attroff(COLOR_PAIR(4));
+ move = TRUE;
+ break;
+ case KEY_LEFT:
+ if(size == TRUE)
+ { --newx;
+ ++neww;
+ }
+ if(move == TRUE)
+ --newx;
+ break;
+ case KEY_RIGHT:
+ if(size == TRUE)
+ { ++newx;
+ --neww;
+ }
+ if(move == TRUE)
+ ++newx;
+ break;
+ case KEY_UP:
+ if(size == TRUE)
+ { --newy;
+ ++newh;
+ }
+ if(move == TRUE)
+ --newy;
+ break;
+ case KEY_DOWN:
+ if(size == TRUE)
+ { ++newy;
+ --newh;
+ }
+ if(move == TRUE)
+ ++newy;
+ break;
+ case 10: /* Enter */
+ move(LINES - 4, 0);
+ clrtoeol();
+ refresh();
+ if(size == TRUE)
+ { old_win = panel_window(stack_top);
+ temp_win = newwin(newh, neww, newy, newx);
+ replace_panel(stack_top, temp_win);
+ win_show(temp_win, top-&gt;label, top-&gt;label_color);
+ delwin(old_win);
+ size = FALSE;
+ }
+ if(move == TRUE)
+ { move_panel(stack_top, newy, newx);
+ move = FALSE;
+ }
+ break;
+
+ }
+ attron(COLOR_PAIR(4));
+ mvprintw(LINES - 3, 0, "Use 'm' for moving, 'r' for resizing");
+ mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
+ attroff(COLOR_PAIR(4));
+ refresh();
+ update_panels();
+ doupdate();
+ }
+ endwin();
+ return 0;
}
/* Put all the windows */
void init_wins(WINDOW **wins, int n)
-{ int x, y, i;
- char label[80];
-
- y = 2;
- x = 10;
- for(i = 0; i &#60; n; ++i)
- { wins[i] = newwin(NLINES, NCOLS, y, x);
- sprintf(label, "Window Number %d", i + 1);
- win_show(wins[i], label, i + 1);
- y += 3;
- x += 7;
- }
+{ int x, y, i;
+ char label[80];
+
+ y = 2;
+ x = 10;
+ for(i = 0; i &lt; n; ++i)
+ { wins[i] = newwin(NLINES, NCOLS, y, x);
+ sprintf(label, "Window Number %d", i + 1);
+ win_show(wins[i], label, i + 1);
+ y += 3;
+ x += 7;
+ }
}
/* Set the PANEL_DATA structures for individual panels */
void set_user_ptrs(PANEL **panels, int n)
-{ PANEL_DATA *ptrs;
- WINDOW *win;
- int x, y, w, h, i;
- char temp[80];
-
- ptrs = (PANEL_DATA *)calloc(n, sizeof(PANEL_DATA));
-
- for(i = 0;i &#60; n; ++i)
- { win = panel_window(panels[i]);
- getbegyx(win, y, x);
- getmaxyx(win, h, w);
- ptrs[i].x = x;
- ptrs[i].y = y;
- ptrs[i].w = w;
- ptrs[i].h = h;
- sprintf(temp, "Window Number %d", i + 1);
- strcpy(ptrs[i].label, temp);
- ptrs[i].label_color = i + 1;
- if(i + 1 == n)
- ptrs[i].next = panels[0];
- else
- ptrs[i].next = panels[i + 1];
- set_panel_userptr(panels[i], &#38;ptrs[i]);
- }
+{ PANEL_DATA *ptrs;
+ WINDOW *win;
+ int x, y, w, h, i;
+ char temp[80];
+
+ ptrs = (PANEL_DATA *)calloc(n, sizeof(PANEL_DATA));
+
+ for(i = 0;i &lt; n; ++i)
+ { win = panel_window(panels[i]);
+ getbegyx(win, y, x);
+ getmaxyx(win, h, w);
+ ptrs[i].x = x;
+ ptrs[i].y = y;
+ ptrs[i].w = w;
+ ptrs[i].h = h;
+ sprintf(temp, "Window Number %d", i + 1);
+ strcpy(ptrs[i].label, temp);
+ ptrs[i].label_color = i + 1;
+ if(i + 1 == n)
+ ptrs[i].next = panels[0];
+ else
+ ptrs[i].next = panels[i + 1];
+ set_panel_userptr(panels[i], &amp;ptrs[i]);
+ }
}
/* Show the window with a border and a label */
void win_show(WINDOW *win, char *label, int label_color)
-{ int startx, starty, height, width;
+{ int startx, starty, height, width;
- getbegyx(win, starty, startx);
- getmaxyx(win, height, width);
+ getbegyx(win, starty, startx);
+ getmaxyx(win, height, width);
- box(win, 0, 0);
- mvwaddch(win, 2, 0, ACS_LTEE);
- mvwhline(win, 2, 1, ACS_HLINE, width - 2);
- mvwaddch(win, 2, width - 1, ACS_RTEE);
-
- print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
+ box(win, 0, 0);
+ mvwaddch(win, 2, 0, ACS_LTEE);
+ mvwhline(win, 2, 1, ACS_HLINE, width - 2);
+ mvwaddch(win, 2, width - 1, ACS_RTEE);
+
+ print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
}
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{ int length, x, y;
- float temp;
-
- if(win == NULL)
- win = stdscr;
- getyx(win, y, x);
- if(startx != 0)
- x = startx;
- if(starty != 0)
- y = starty;
- if(width == 0)
- width = 80;
-
- length = strlen(string);
- temp = (width - length)/ 2;
- x = startx + (int)temp;
- wattron(win, color);
- mvwprintw(win, y, x, "%s", string);
- wattroff(win, color);
- refresh();
-}</SPAN
-></PRE
-></DIV
-><P
->Concentrate on the main while loop. Once it finds out the type of key pressed,
-it takes appropriate action. If 'r' is pressed resizing mode is started. After
-this the new sizes are updated as the user presses the arrow keys. When the user
-presses &lt;ENTER&gt; present selection ends and panel is resized by using the
-concept explained. While in resizing mode the program doesn't show how the
-window is getting resized. It's left as an exercise to the reader to print a
-dotted border while it gets resized to a new position. </P
-><P
->When the user presses 'm' the move mode starts. This is a bit simpler than
-resizing. As the arrow keys are pressed the new position is updated and
-pressing of &lt;ENTER&gt; causes the panel to be moved by calling the function
-move_panel().</P
-><P
->In this program the user data which is represented as PANEL_DATA, plays very
-important role in finding the associated information with a panel. As written in
-the comments, the PANEL_DATA stores the panel sizes, label, label color and a
-pointer to the next panel in the cycle.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="PANELSHOWHIDE"
->16.6. Hiding and Showing Panels</A
-></H3
-><P
->A Panel can be hidden by using the function hide_panel(). This function merely
-removes it form the stack of panels, thus hiding it on the screen once you do
-update_panels() and doupdate(). It doesn't destroy the PANEL structure
-associated with the hidden panel. It can be shown again by using the
-show_panel() function.</P
-><P
->The following program shows the hiding of panels. Press 'a' or 'b' or 'c' to
-show or hide first, second and third windows respectively. It uses a user data
-with a small variable hide, which keeps track of whether the window is hidden or
-not. For some reason the function
-<TT
-CLASS="LITERAL"
->panel_hidden()</TT
-> which tells whether a panel is
-hidden or not is not working. A bug report was also presented by Michael Andres
-<A
-HREF="http://www.geocrawler.com/archives/3/344/1999/9/0/2643549/"
-TARGET="_top"
-> here</A
-></P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="PPAHI"
-></A
-><P
-><B
->Example 17. Panel Hiding and Showing example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;panel.h&#62;
+{ int length, x, y;
+ float temp;
+
+ if(win == NULL)
+ win = stdscr;
+ getyx(win, y, x);
+ if(startx != 0)
+ x = startx;
+ if(starty != 0)
+ y = starty;
+ if(width == 0)
+ width = 80;
+
+ length = strlen(string);
+ temp = (width - length)/ 2;
+ x = startx + (int)temp;
+ wattron(win, color);
+ mvwprintw(win, y, x, "%s", string);
+ wattroff(win, color);
+ refresh();
+}</span>
+</pre>
+ </div>
+
+ <p>Concentrate on the main while loop. Once it finds out
+ the type of key pressed, it takes appropriate action. If
+ 'r' is pressed resizing mode is started. After this the new
+ sizes are updated as the user presses the arrow keys. When
+ the user presses &lt;ENTER&gt; present selection ends and
+ panel is resized by using the concept explained. While in
+ resizing mode the program doesn't show how the window is
+ getting resized. It's left as an exercise to the reader to
+ print a dotted border while it gets resized to a new
+ position.</p>
+
+ <p>When the user presses 'm' the move mode starts. This is
+ a bit simpler than resizing. As the arrow keys are pressed
+ the new position is updated and pressing of &lt;ENTER&gt;
+ causes the panel to be moved by calling the function
+ move_panel().</p>
+
+ <p>In this program the user data which is represented as
+ PANEL_DATA, plays very important role in finding the
+ associated information with a panel. As written in the
+ comments, the PANEL_DATA stores the panel sizes, label,
+ label color and a pointer to the next panel in the
+ cycle.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="PANELSHOWHIDE" id=
+ "PANELSHOWHIDE">16.6. Hiding and Showing Panels</a></h3>
+
+ <p>A Panel can be hidden by using the function
+ hide_panel(). This function merely removes it form the
+ stack of panels, thus hiding it on the screen once you do
+ update_panels() and doupdate(). It doesn't destroy the
+ PANEL structure associated with the hidden panel. It can be
+ shown again by using the show_panel() function.</p>
+
+ <p>The following program shows the hiding of panels. Press
+ 'a' or 'b' or 'c' to show or hide first, second and third
+ windows respectively. It uses a user data with a small
+ variable hide, which keeps track of whether the window is
+ hidden or not. For some reason the function <tt class=
+ "LITERAL">panel_hidden()</tt> which tells whether a panel
+ is hidden or not is not working. A bug report was also
+ presented by Michael Andres <a href=
+ "http://www.geocrawler.com/archives/3/344/1999/9/0/2643549/"
+ target="_top">here</a></p>
+
+ <div class="EXAMPLE">
+ <a name="PPAHI" id="PPAHI"></a>
+
+ <p><b>Example 17. Panel Hiding and Showing
+ example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;panel.h&gt;
typedef struct _PANEL_DATA {
- int hide; /* TRUE if panel is hidden */
+ int hide; /* TRUE if panel is hidden */
}PANEL_DATA;
#define NLINES 10
@@ -4910,292 +4015,279 @@ void win_show(WINDOW *win, char *label, int label_color);
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
int main()
-{ WINDOW *my_wins[3];
- PANEL *my_panels[3];
- PANEL_DATA panel_datas[3];
- PANEL_DATA *temp;
- int ch;
-
- /* Initialize curses */
- initscr();
- start_color();
- cbreak();
- noecho();
- keypad(stdscr, TRUE);
-
- /* Initialize all the colors */
- init_pair(1, COLOR_RED, COLOR_BLACK);
- init_pair(2, COLOR_GREEN, COLOR_BLACK);
- init_pair(3, COLOR_BLUE, COLOR_BLACK);
- init_pair(4, COLOR_CYAN, COLOR_BLACK);
-
- init_wins(my_wins, 3);
-
- /* Attach a panel to each window */ /* Order is bottom up */
- my_panels[0] = new_panel(my_wins[0]); /* Push 0, order: stdscr-0 */
- my_panels[1] = new_panel(my_wins[1]); /* Push 1, order: stdscr-0-1 */
- my_panels[2] = new_panel(my_wins[2]); /* Push 2, order: stdscr-0-1-2 */
-
- /* Initialize panel datas saying that nothing is hidden */
- panel_datas[0].hide = FALSE;
- panel_datas[1].hide = FALSE;
- panel_datas[2].hide = FALSE;
-
- set_panel_userptr(my_panels[0], &#38;panel_datas[0]);
- set_panel_userptr(my_panels[1], &#38;panel_datas[1]);
- set_panel_userptr(my_panels[2], &#38;panel_datas[2]);
-
- /* Update the stacking order. 2nd panel will be on top */
- update_panels();
-
- /* Show it on the screen */
- attron(COLOR_PAIR(4));
- mvprintw(LINES - 3, 0, "Show or Hide a window with 'a'(first window) 'b'(Second Window) 'c'(Third Window)");
- mvprintw(LINES - 2, 0, "F1 to Exit");
-
- attroff(COLOR_PAIR(4));
- doupdate();
-
- while((ch = getch()) != KEY_F(1))
- { switch(ch)
- { case 'a':
- temp = (PANEL_DATA *)panel_userptr(my_panels[0]);
- if(temp-&#62;hide == FALSE)
- { hide_panel(my_panels[0]);
- temp-&#62;hide = TRUE;
- }
- else
- { show_panel(my_panels[0]);
- temp-&#62;hide = FALSE;
- }
- break;
- case 'b':
- temp = (PANEL_DATA *)panel_userptr(my_panels[1]);
- if(temp-&#62;hide == FALSE)
- { hide_panel(my_panels[1]);
- temp-&#62;hide = TRUE;
- }
- else
- { show_panel(my_panels[1]);
- temp-&#62;hide = FALSE;
- }
- break;
- case 'c':
- temp = (PANEL_DATA *)panel_userptr(my_panels[2]);
- if(temp-&#62;hide == FALSE)
- { hide_panel(my_panels[2]);
- temp-&#62;hide = TRUE;
- }
- else
- { show_panel(my_panels[2]);
- temp-&#62;hide = FALSE;
- }
- break;
- }
- update_panels();
- doupdate();
- }
- endwin();
- return 0;
+{ WINDOW *my_wins[3];
+ PANEL *my_panels[3];
+ PANEL_DATA panel_datas[3];
+ PANEL_DATA *temp;
+ int ch;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ /* Initialize all the colors */
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_GREEN, COLOR_BLACK);
+ init_pair(3, COLOR_BLUE, COLOR_BLACK);
+ init_pair(4, COLOR_CYAN, COLOR_BLACK);
+
+ init_wins(my_wins, 3);
+
+ /* Attach a panel to each window */ /* Order is bottom up */
+ my_panels[0] = new_panel(my_wins[0]); /* Push 0, order: stdscr-0 */
+ my_panels[1] = new_panel(my_wins[1]); /* Push 1, order: stdscr-0-1 */
+ my_panels[2] = new_panel(my_wins[2]); /* Push 2, order: stdscr-0-1-2 */
+
+ /* Initialize panel datas saying that nothing is hidden */
+ panel_datas[0].hide = FALSE;
+ panel_datas[1].hide = FALSE;
+ panel_datas[2].hide = FALSE;
+
+ set_panel_userptr(my_panels[0], &amp;panel_datas[0]);
+ set_panel_userptr(my_panels[1], &amp;panel_datas[1]);
+ set_panel_userptr(my_panels[2], &amp;panel_datas[2]);
+
+ /* Update the stacking order. 2nd panel will be on top */
+ update_panels();
+
+ /* Show it on the screen */
+ attron(COLOR_PAIR(4));
+ mvprintw(LINES - 3, 0, "Show or Hide a window with 'a'(first window) 'b'(Second Window) 'c'(Third Window)");
+ mvprintw(LINES - 2, 0, "F1 to Exit");
+
+ attroff(COLOR_PAIR(4));
+ doupdate();
+
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case 'a':
+ temp = (PANEL_DATA *)panel_userptr(my_panels[0]);
+ if(temp-&gt;hide == FALSE)
+ { hide_panel(my_panels[0]);
+ temp-&gt;hide = TRUE;
+ }
+ else
+ { show_panel(my_panels[0]);
+ temp-&gt;hide = FALSE;
+ }
+ break;
+ case 'b':
+ temp = (PANEL_DATA *)panel_userptr(my_panels[1]);
+ if(temp-&gt;hide == FALSE)
+ { hide_panel(my_panels[1]);
+ temp-&gt;hide = TRUE;
+ }
+ else
+ { show_panel(my_panels[1]);
+ temp-&gt;hide = FALSE;
+ }
+ break;
+ case 'c':
+ temp = (PANEL_DATA *)panel_userptr(my_panels[2]);
+ if(temp-&gt;hide == FALSE)
+ { hide_panel(my_panels[2]);
+ temp-&gt;hide = TRUE;
+ }
+ else
+ { show_panel(my_panels[2]);
+ temp-&gt;hide = FALSE;
+ }
+ break;
+ }
+ update_panels();
+ doupdate();
+ }
+ endwin();
+ return 0;
}
/* Put all the windows */
void init_wins(WINDOW **wins, int n)
-{ int x, y, i;
- char label[80];
-
- y = 2;
- x = 10;
- for(i = 0; i &#60; n; ++i)
- { wins[i] = newwin(NLINES, NCOLS, y, x);
- sprintf(label, "Window Number %d", i + 1);
- win_show(wins[i], label, i + 1);
- y += 3;
- x += 7;
- }
+{ int x, y, i;
+ char label[80];
+
+ y = 2;
+ x = 10;
+ for(i = 0; i &lt; n; ++i)
+ { wins[i] = newwin(NLINES, NCOLS, y, x);
+ sprintf(label, "Window Number %d", i + 1);
+ win_show(wins[i], label, i + 1);
+ y += 3;
+ x += 7;
+ }
}
/* Show the window with a border and a label */
void win_show(WINDOW *win, char *label, int label_color)
-{ int startx, starty, height, width;
+{ int startx, starty, height, width;
- getbegyx(win, starty, startx);
- getmaxyx(win, height, width);
+ getbegyx(win, starty, startx);
+ getmaxyx(win, height, width);
- box(win, 0, 0);
- mvwaddch(win, 2, 0, ACS_LTEE);
- mvwhline(win, 2, 1, ACS_HLINE, width - 2);
- mvwaddch(win, 2, width - 1, ACS_RTEE);
-
- print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
+ box(win, 0, 0);
+ mvwaddch(win, 2, 0, ACS_LTEE);
+ mvwhline(win, 2, 1, ACS_HLINE, width - 2);
+ mvwaddch(win, 2, width - 1, ACS_RTEE);
+
+ print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
}
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{ int length, x, y;
- float temp;
-
- if(win == NULL)
- win = stdscr;
- getyx(win, y, x);
- if(startx != 0)
- x = startx;
- if(starty != 0)
- y = starty;
- if(width == 0)
- width = 80;
-
- length = strlen(string);
- temp = (width - length)/ 2;
- x = startx + (int)temp;
- wattron(win, color);
- mvwprintw(win, y, x, "%s", string);
- wattroff(win, color);
- refresh();
-}</SPAN
-></PRE
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="PANELABOVE"
->16.7. panel_above() and panel_below() Functions</A
-></H3
-><P
->The functions <TT
-CLASS="LITERAL"
->panel_above()</TT
-> and
-<TT
-CLASS="LITERAL"
->panel_below()</TT
-> can be used to find out the panel
-above and below a panel. If the argument to these functions is NULL, then they
-return a pointer to bottom panel and top panel respectively.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="MENUS"
->17. Menus Library</A
-></H2
-><P
->The menus library provides a nice extension to basic curses, through which you
-can create menus. It provides a set of functions to create menus. But they have
-to be customized to give a nicer look, with colors etc. Let's get into the
-details.</P
-><P
->A menu is a screen display that assists the user to choose some subset of a
-given set of items. To put it simple, a menu is a collection of items from which
-one or more items can be chosen. Some readers might not be aware of multiple
-item selection capability. Menu library provides functionality to write menus
-from which the user can chose more than one item as the preferred choice. This
-is dealt with in a later section. Now it is time for some rudiments.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="MENUBASICS"
->17.1. The Basics</A
-></H3
-><P
->To create menus, you first create items, and then post the menu to the display.
-After that, all the processing of user responses is done in an elegant function
-menu_driver() which is the work horse of any menu program. </P
-><P
->The general flow of control of a menu program looks like this.
-<P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->Initialize curses</P
-></LI
-><LI
-><P
->Create items using new_item(). You can specify a name and description for the
-items.</P
-></LI
-><LI
-><P
->Create the menu with new_menu() by specifying the items to be attached with.</P
-></LI
-><LI
-><P
->Post the menu with menu_post() and refresh the screen.</P
-></LI
-><LI
-><P
->Process the user requests with a loop and do necessary updates to menu with
-menu_driver.</P
-></LI
-><LI
-><P
->Unpost the menu with menu_unpost()</P
-></LI
-><LI
-><P
->Free the memory allocated to menu by free_menu()</P
-></LI
-><LI
-><P
->Free the memory allocated to the items with free_item() </P
-></LI
-><LI
-><P
->End curses </P
-></LI
-></OL
-></P
-><P
->Let's see a program which prints a simple menu and updates the current selection
-with up, down arrows. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="COMPILEMENUS"
->17.2. Compiling With the Menu Library</A
-></H3
-><P
->To use menu library functions, you have to include menu.h and to link the
-program with menu library the flag -lmenu should be added along with -lncurses
-in that order.</P
-><PRE
-CLASS="PROGRAMLISTING"
-> #include &lt;menu.h&gt;
+{ int length, x, y;
+ float temp;
+
+ if(win == NULL)
+ win = stdscr;
+ getyx(win, y, x);
+ if(startx != 0)
+ x = startx;
+ if(starty != 0)
+ y = starty;
+ if(width == 0)
+ width = 80;
+
+ length = strlen(string);
+ temp = (width - length)/ 2;
+ x = startx + (int)temp;
+ wattron(win, color);
+ mvwprintw(win, y, x, "%s", string);
+ wattroff(win, color);
+ refresh();
+}</span>
+</pre>
+ </div>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="PANELABOVE" id=
+ "PANELABOVE">16.7. panel_above() and panel_below()
+ Functions</a></h3>
+
+ <p>The functions <tt class="LITERAL">panel_above()</tt> and
+ <tt class="LITERAL">panel_below()</tt> can be used to find
+ out the panel above and below a panel. If the argument to
+ these functions is NULL, then they return a pointer to
+ bottom panel and top panel respectively.</p>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="MENUS" id="MENUS">17. Menus
+ Library</a></h2>
+
+ <p>The menus library provides a nice extension to basic
+ curses, through which you can create menus. It provides a set
+ of functions to create menus. But they have to be customized
+ to give a nicer look, with colors etc. Let's get into the
+ details.</p>
+
+ <p>A menu is a screen display that assists the user to choose
+ some subset of a given set of items. To put it simple, a menu
+ is a collection of items from which one or more items can be
+ chosen. Some readers might not be aware of multiple item
+ selection capability. Menu library provides functionality to
+ write menus from which the user can chose more than one item
+ as the preferred choice. This is dealt with in a later
+ section. Now it is time for some rudiments.</p>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="MENUBASICS" id=
+ "MENUBASICS">17.1. The Basics</a></h3>
+
+ <p>To create menus, you first create items, and then post
+ the menu to the display. After that, all the processing of
+ user responses is done in an elegant function menu_driver()
+ which is the work horse of any menu program.</p>
+
+ <p>The general flow of control of a menu program looks like
+ this.</p>
+
+ <ol type="1">
+ <li>
+ <p>Initialize curses</p>
+ </li>
+
+ <li>
+ <p>Create items using new_item(). You can specify a
+ name and description for the items.</p>
+ </li>
+
+ <li>
+ <p>Create the menu with new_menu() by specifying the
+ items to be attached with.</p>
+ </li>
+
+ <li>
+ <p>Post the menu with menu_post() and refresh the
+ screen.</p>
+ </li>
+
+ <li>
+ <p>Process the user requests with a loop and do
+ necessary updates to menu with menu_driver.</p>
+ </li>
+
+ <li>
+ <p>Unpost the menu with menu_unpost()</p>
+ </li>
+
+ <li>
+ <p>Free the memory allocated to menu by free_menu()</p>
+ </li>
+
+ <li>
+ <p>Free the memory allocated to the items with
+ free_item()</p>
+ </li>
+
+ <li>
+ <p>End curses</p>
+ </li>
+ </ol>
+
+ <p>Let's see a program which prints a simple menu and
+ updates the current selection with up, down arrows.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="COMPILEMENUS" id=
+ "COMPILEMENUS">17.2. Compiling With the Menu
+ Library</a></h3>
+
+ <p>To use menu library functions, you have to include
+ menu.h and to link the program with menu library the flag
+ -lmenu should be added along with -lncurses in that
+ order.</p>
+ <pre class="PROGRAMLISTING">
+ #include &lt;menu.h&gt;
.
.
.
- compile and link: gcc &lt;program file&gt; -lmenu -lncurses</PRE
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="MMESI"
-></A
-><P
-><B
->Example 18. Menu Basics </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;curses.h&#62;
-#include &#60;menu.h&#62;
+ compile and link: gcc &lt;program file&gt; -lmenu -lncurses
+</pre>
+
+ <div class="EXAMPLE">
+ <a name="MMESI" id="MMESI"></a>
+
+ <p><b>Example 18. Menu Basics</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;curses.h&gt;
+#include &lt;menu.h&gt;
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD 4
+#define CTRLD 4
char *choices[] = {
"Choice 1",
@@ -5206,64 +4298,67 @@ char *choices[] = {
};
int main()
-{ ITEM **my_items;
- int c;
- MENU *my_menu;
- int n_choices, i;
- ITEM *cur_item;
-
-
- initscr();
- cbreak();
- noecho();
- keypad(stdscr, TRUE);
-
- n_choices = ARRAY_SIZE(choices);
- my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
-
- for(i = 0; i &#60; n_choices; ++i)
- my_items[i] = new_item(choices[i], choices[i]);
- my_items[n_choices] = (ITEM *)NULL;
-
- my_menu = new_menu((ITEM **)my_items);
- mvprintw(LINES - 2, 0, "F1 to Exit");
- post_menu(my_menu);
- refresh();
-
- while((c = getch()) != KEY_F(1))
- { switch(c)
- { case KEY_DOWN:
- menu_driver(my_menu, REQ_DOWN_ITEM);
- break;
- case KEY_UP:
- menu_driver(my_menu, REQ_UP_ITEM);
- break;
- }
- }
-
- free_item(my_items[0]);
- free_item(my_items[1]);
- free_menu(my_menu);
- endwin();
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
+ int n_choices, i;
+ ITEM *cur_item;
+
+
+ initscr();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ n_choices = ARRAY_SIZE(choices);
+ my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
+
+ for(i = 0; i &lt; n_choices; ++i)
+ my_items[i] = new_item(choices[i], choices[i]);
+ my_items[n_choices] = (ITEM *)NULL;
+
+ my_menu = new_menu((ITEM **)my_items);
+ mvprintw(LINES - 2, 0, "F1 to Exit");
+ post_menu(my_menu);
+ refresh();
+
+ while((c = getch()) != KEY_F(1))
+ { switch(c)
+ { case KEY_DOWN:
+ menu_driver(my_menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(my_menu, REQ_UP_ITEM);
+ break;
+ }
+ }
+
+ free_item(my_items[0]);
+ free_item(my_items[1]);
+ free_menu(my_menu);
+ endwin();
}
- </SPAN
-></PRE
-></DIV
-><P
->This program demonstrates the basic concepts involved in creating a menu using
-menus library. First we create the items using new_item() and then attach them
-to the menu with new_menu() function. After posting the menu and refreshing the
-screen, the main processing loop starts. It reads user input and takes
-corresponding action. The function menu_driver() is the main work horse of the
-menu system. The second parameter to this function tells what's to be done with
-the menu. According to the parameter, menu_driver() does the corresponding task.
-The value can be either a menu navigational request, an ascii character, or a
-KEY_MOUSE special key associated with a mouse event.</P
-><P
->The menu_driver accepts following navigational requests.
-<PRE
-CLASS="PROGRAMLISTING"
->&#13; REQ_LEFT_ITEM Move left to an item.
+ </span>
+</pre>
+ </div>
+
+ <p>This program demonstrates the basic concepts involved in
+ creating a menu using menus library. First we create the
+ items using new_item() and then attach them to the menu
+ with new_menu() function. After posting the menu and
+ refreshing the screen, the main processing loop starts. It
+ reads user input and takes corresponding action. The
+ function menu_driver() is the main work horse of the menu
+ system. The second parameter to this function tells what's
+ to be done with the menu. According to the parameter,
+ menu_driver() does the corresponding task. The value can be
+ either a menu navigational request, an ascii character, or
+ a KEY_MOUSE special key associated with a mouse event.</p>
+
+ <p>The menu_driver accepts following navigational
+ requests.</p>
+ <pre class="PROGRAMLISTING">
+&#13; REQ_LEFT_ITEM Move left to an item.
REQ_RIGHT_ITEM Move right to an item.
REQ_UP_ITEM Move up to an item.
REQ_DOWN_ITEM Move down to an item.
@@ -5279,144 +4374,116 @@ CLASS="PROGRAMLISTING"
REQ_CLEAR_PATTERN Clear the menu pattern buffer.
REQ_BACK_PATTERN Delete the previous character from the pattern buffer.
REQ_NEXT_MATCH Move to the next item matching the pattern match.
- REQ_PREV_MATCH Move to the previous item matching the pattern match.&#13;</PRE
-></P
-><P
->Don't get overwhelmed by the number of options. We will see them slowly one
-after another. The options of interest in this example are REQ_UP_ITEM and
-REQ_DOWN_ITEM. These two options when passed to menu_driver, menu driver
-updates the current item to one item up or down respectively.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="MENUDRIVER"
->17.3. Menu Driver: The work horse of the menu system</A
-></H3
-><P
->As you have seen in the above example, menu_driver plays an important role in
-updating the menu. It is very important to understand various options it takes
-and what they do. As explained above, the second parameter to menu_driver() can
-be either a navigational request, a printable character or a KEY_MOUSE key.
-Let's dissect the different navigational requests.</P
-><P
-></P
-><UL
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_LEFT_ITEM and REQ_RIGHT_ITEM</I
-></SPAN
-></P
-><P
->A Menu can be displayed with multiple columns for more than one item. This can
-be done by using the <TT
-CLASS="LITERAL"
->menu_format()</TT
->function.
-When a multi columnar menu is displayed these requests cause the menu driver to
-move the current selection to left or right.</P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_UP_ITEM and REQ_DOWN_ITEM </I
-></SPAN
-> </P
-><P
->These two options you have seen in the above example. These options when given,
-makes the menu_driver to move the current selection to an item up or down.</P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SCR_* options</I
-></SPAN
-> </P
-><P
->The four options REQ_SCR_ULINE, REQ_SCR_DLINE, REQ_SCR_DPAGE, REQ_SCR_UPAGE are
-related to scrolling. If all the items in the menu cannot be displayed in the
-menu sub window, then the menu is scrollable. These requests can be given to the
-menu_driver to do the scrolling either one line up, down or one page down or up
-respectively. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_FIRST_ITEM, REQ_LAST_ITEM, REQ_NEXT_ITEM and
-REQ_PREV_ITEM </I
-></SPAN
-> </P
-><P
->These requests are self explanatory.</P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_TOGGLE_ITEM</I
-></SPAN
-> </P
-><P
->This request when given, toggles the present selection. This option is to be
-used only in a multi valued menu. So to use this request the option O_ONEVALUE
-must be off. This option can be made off or on with set_menu_opts().</P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Pattern Requests </I
-></SPAN
-></P
-><P
->Every menu has an associated pattern buffer, which is used to find the nearest
-match to the ascii characters entered by the user. Whenever ascii characters are
-given to menu_driver, it puts in to the pattern buffer. It also tries to find
-the nearest match to the pattern in the items list and moves current selection
-to that item. The request REQ_CLEAR_PATTERN clears the pattern buffer. The
-request REQ_BACK_PATTERN deletes the previous character in the pattern buffer.
-In case the pattern matches more than one item then the matched items can be
-cycled through REQ_NEXT_MATCH and REQ_PREV_MATCH which move the current
-selection to the next and previous matches respectively.</P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Mouse Requests</I
-></SPAN
-></P
-><P
->In case of KEY_MOUSE requests, according to the mouse position an action is
-taken accordingly. The action to be taken is explained in the man page as, </P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
-> If the second argument is the KEY_MOUSE special key, the
+ REQ_PREV_MATCH Move to the previous item matching the pattern match.&#13;
+</pre>
+
+ <p>Don't get overwhelmed by the number of options. We will
+ see them slowly one after another. The options of interest
+ in this example are REQ_UP_ITEM and REQ_DOWN_ITEM. These
+ two options when passed to menu_driver, menu driver updates
+ the current item to one item up or down respectively.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="MENUDRIVER" id=
+ "MENUDRIVER">17.3. Menu Driver: The work horse of the menu
+ system</a></h3>
+
+ <p>As you have seen in the above example, menu_driver plays
+ an important role in updating the menu. It is very
+ important to understand various options it takes and what
+ they do. As explained above, the second parameter to
+ menu_driver() can be either a navigational request, a
+ printable character or a KEY_MOUSE key. Let's dissect the
+ different navigational requests.</p>
+
+ <ul>
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_LEFT_ITEM and
+ REQ_RIGHT_ITEM</i></span></p>
+
+ <p>A Menu can be displayed with multiple columns for
+ more than one item. This can be done by using the
+ <tt class="LITERAL">menu_format()</tt>function. When a
+ multi columnar menu is displayed these requests cause
+ the menu driver to move the current selection to left
+ or right.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_UP_ITEM and REQ_DOWN_ITEM</i></span></p>
+
+ <p>These two options you have seen in the above
+ example. These options when given, makes the
+ menu_driver to move the current selection to an item up
+ or down.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class="EMPHASIS">REQ_SCR_*
+ options</i></span></p>
+
+ <p>The four options REQ_SCR_ULINE, REQ_SCR_DLINE,
+ REQ_SCR_DPAGE, REQ_SCR_UPAGE are related to scrolling.
+ If all the items in the menu cannot be displayed in the
+ menu sub window, then the menu is scrollable. These
+ requests can be given to the menu_driver to do the
+ scrolling either one line up, down or one page down or
+ up respectively.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_FIRST_ITEM, REQ_LAST_ITEM, REQ_NEXT_ITEM
+ and REQ_PREV_ITEM</i></span></p>
+
+ <p>These requests are self explanatory.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_TOGGLE_ITEM</i></span></p>
+
+ <p>This request when given, toggles the present
+ selection. This option is to be used only in a multi
+ valued menu. So to use this request the option
+ O_ONEVALUE must be off. This option can be made off or
+ on with set_menu_opts().</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class="EMPHASIS">Pattern
+ Requests</i></span></p>
+
+ <p>Every menu has an associated pattern buffer, which
+ is used to find the nearest match to the ascii
+ characters entered by the user. Whenever ascii
+ characters are given to menu_driver, it puts in to the
+ pattern buffer. It also tries to find the nearest match
+ to the pattern in the items list and moves current
+ selection to that item. The request REQ_CLEAR_PATTERN
+ clears the pattern buffer. The request REQ_BACK_PATTERN
+ deletes the previous character in the pattern buffer.
+ In case the pattern matches more than one item then the
+ matched items can be cycled through REQ_NEXT_MATCH and
+ REQ_PREV_MATCH which move the current selection to the
+ next and previous matches respectively.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class="EMPHASIS">Mouse
+ Requests</i></span></p>
+
+ <p>In case of KEY_MOUSE requests, according to the
+ mouse position an action is taken accordingly. The
+ action to be taken is explained in the man page as,</p>
+ <pre class="PROGRAMLISTING">
+<span class="emphasis"><i class=
+"EMPHASIS"> If the second argument is the KEY_MOUSE special key, the
associated mouse event is translated into one of the above
pre-defined requests. Currently only clicks in the user
window (e.g. inside the menu display area or the decora&shy;
@@ -5428,49 +4495,42 @@ CLASS="EMPHASIS"
generated, if you doubleclick a REQ_SCR_DPAGE is generated
and if you tripleclick a REQ_LAST_ITEM is generated. If
you click at an item inside the display area of the menu,
- the menu cursor is positioned to that item.</I
-></SPAN
-></PRE
-></LI
-></UL
-><P
->Each of the above requests will be explained in the following lines with several
-examples whenever appropriate.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="MENUWINDOWS"
->17.4. Menu Windows</A
-></H3
-><P
->Every menu created is associated with a window and a sub window. The menu window
-displays any title or border associated with the menu. The menu sub window
-displays the menu items currently available for selection. But we didn't specify
-any window or sub window in the simple example. When a window is not specified,
-stdscr is taken as the main window, and then menu system calculates the sub
-window size required for the display of items. Then items are displayed in the
-calculated sub window. So let's play with these windows and display a menu with
-a border and a title.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="MMEWI"
-></A
-><P
-><B
->Example 19. Menu Windows Usage example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;menu.h&#62;
+ the menu cursor is positioned to that item.</i></span>
+</pre>
+ </li>
+ </ul>
+
+ <p>Each of the above requests will be explained in the
+ following lines with several examples whenever
+ appropriate.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="MENUWINDOWS" id=
+ "MENUWINDOWS">17.4. Menu Windows</a></h3>
+
+ <p>Every menu created is associated with a window and a sub
+ window. The menu window displays any title or border
+ associated with the menu. The menu sub window displays the
+ menu items currently available for selection. But we didn't
+ specify any window or sub window in the simple example.
+ When a window is not specified, stdscr is taken as the main
+ window, and then menu system calculates the sub window size
+ required for the display of items. Then items are displayed
+ in the calculated sub window. So let's play with these
+ windows and display a menu with a border and a title.</p>
+
+ <div class="EXAMPLE">
+ <a name="MMEWI" id="MMEWI"></a>
+
+ <p><b>Example 19. Menu Windows Usage example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;menu.h&gt;
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD 4
+#define CTRLD 4
char *choices[] = {
"Choice 1",
@@ -5483,403 +4543,395 @@ char *choices[] = {
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
int main()
-{ ITEM **my_items;
- int c;
- MENU *my_menu;
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
WINDOW *my_menu_win;
int n_choices, i;
-
- /* Initialize curses */
- initscr();
- start_color();
+
+ /* Initialize curses */
+ initscr();
+ start_color();
cbreak();
noecho();
- keypad(stdscr, TRUE);
- init_pair(1, COLOR_RED, COLOR_BLACK);
+ keypad(stdscr, TRUE);
+ init_pair(1, COLOR_RED, COLOR_BLACK);
- /* Create items */
+ /* Create items */
n_choices = ARRAY_SIZE(choices);
my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
- for(i = 0; i &#60; n_choices; ++i)
+ for(i = 0; i &lt; n_choices; ++i)
my_items[i] = new_item(choices[i], choices[i]);
- /* Crate menu */
- my_menu = new_menu((ITEM **)my_items);
+ /* Crate menu */
+ my_menu = new_menu((ITEM **)my_items);
- /* Create the window to be associated with the menu */
+ /* Create the window to be associated with the menu */
my_menu_win = newwin(10, 40, 4, 4);
keypad(my_menu_win, TRUE);
- /* Set main window and sub window */
+ /* Set main window and sub window */
set_menu_win(my_menu, my_menu_win);
set_menu_sub(my_menu, derwin(my_menu_win, 6, 38, 3, 1));
- /* Set menu mark to the string " * " */
+ /* Set menu mark to the string " * " */
set_menu_mark(my_menu, " * ");
- /* Print a border around the main window and print a title */
+ /* Print a border around the main window and print a title */
box(my_menu_win, 0, 0);
- print_in_middle(my_menu_win, 1, 0, 40, "My Menu", COLOR_PAIR(1));
- mvwaddch(my_menu_win, 2, 0, ACS_LTEE);
- mvwhline(my_menu_win, 2, 1, ACS_HLINE, 38);
- mvwaddch(my_menu_win, 2, 39, ACS_RTEE);
- mvprintw(LINES - 2, 0, "F1 to exit");
- refresh();
+ print_in_middle(my_menu_win, 1, 0, 40, "My Menu", COLOR_PAIR(1));
+ mvwaddch(my_menu_win, 2, 0, ACS_LTEE);
+ mvwhline(my_menu_win, 2, 1, ACS_HLINE, 38);
+ mvwaddch(my_menu_win, 2, 39, ACS_RTEE);
+ mvprintw(LINES - 2, 0, "F1 to exit");
+ refresh();
- /* Post the menu */
- post_menu(my_menu);
- wrefresh(my_menu_win);
-
- while((c = wgetch(my_menu_win)) != KEY_F(1))
- { switch(c)
- { case KEY_DOWN:
- menu_driver(my_menu, REQ_DOWN_ITEM);
- break;
- case KEY_UP:
- menu_driver(my_menu, REQ_UP_ITEM);
- break;
- }
+ /* Post the menu */
+ post_menu(my_menu);
+ wrefresh(my_menu_win);
+
+ while((c = wgetch(my_menu_win)) != KEY_F(1))
+ { switch(c)
+ { case KEY_DOWN:
+ menu_driver(my_menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(my_menu, REQ_UP_ITEM);
+ break;
+ }
wrefresh(my_menu_win);
- }
+ }
- /* Unpost and free all the memory taken up */
+ /* Unpost and free all the memory taken up */
unpost_menu(my_menu);
free_menu(my_menu);
- for(i = 0; i &#60; n_choices; ++i)
+ for(i = 0; i &lt; n_choices; ++i)
free_item(my_items[i]);
- endwin();
+ endwin();
}
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{ int length, x, y;
- float temp;
-
- if(win == NULL)
- win = stdscr;
- getyx(win, y, x);
- if(startx != 0)
- x = startx;
- if(starty != 0)
- y = starty;
- if(width == 0)
- width = 80;
-
- length = strlen(string);
- temp = (width - length)/ 2;
- x = startx + (int)temp;
- wattron(win, color);
- mvwprintw(win, y, x, "%s", string);
- wattroff(win, color);
- refresh();
-}</SPAN
-></PRE
-></DIV
-><P
->This example creates a menu with a title, border, a fancy line separating title
-and the items. As you can see, in order to attach a window to a menu the
-function set_menu_win() has to be used. Then we attach the sub window also. This
-displays the items in the sub window. You can also set the mark string which
-gets displayed to the left of the selected item with set_menu_mark().</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="SCROLLMENUS"
->17.5. Scrolling Menus</A
-></H3
-><P
->If the sub window given for a window is not big enough to show all the items,
-then the menu will be scrollable. When you are on the last item in the present
-list, if you send REQ_DOWN_ITEM, it gets translated into REQ_SCR_DLINE and the
-menu scrolls by one item. You can manually give REQ_SCR_ operations to do
-scrolling. Let's see how it can be done.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="MMESC"
-></A
-><P
-><B
->Example 20. Scrolling Menus example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;curses.h&#62;
-#include &#60;menu.h&#62;
+{ int length, x, y;
+ float temp;
+
+ if(win == NULL)
+ win = stdscr;
+ getyx(win, y, x);
+ if(startx != 0)
+ x = startx;
+ if(starty != 0)
+ y = starty;
+ if(width == 0)
+ width = 80;
+
+ length = strlen(string);
+ temp = (width - length)/ 2;
+ x = startx + (int)temp;
+ wattron(win, color);
+ mvwprintw(win, y, x, "%s", string);
+ wattroff(win, color);
+ refresh();
+}</span>
+</pre>
+ </div>
+
+ <p>This example creates a menu with a title, border, a
+ fancy line separating title and the items. As you can see,
+ in order to attach a window to a menu the function
+ set_menu_win() has to be used. Then we attach the sub
+ window also. This displays the items in the sub window. You
+ can also set the mark string which gets displayed to the
+ left of the selected item with set_menu_mark().</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="SCROLLMENUS" id=
+ "SCROLLMENUS">17.5. Scrolling Menus</a></h3>
+
+ <p>If the sub window given for a window is not big enough
+ to show all the items, then the menu will be scrollable.
+ When you are on the last item in the present list, if you
+ send REQ_DOWN_ITEM, it gets translated into REQ_SCR_DLINE
+ and the menu scrolls by one item. You can manually give
+ REQ_SCR_ operations to do scrolling. Let's see how it can
+ be done.</p>
+
+ <div class="EXAMPLE">
+ <a name="MMESC" id="MMESC"></a>
+
+ <p><b>Example 20. Scrolling Menus example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;curses.h&gt;
+#include &lt;menu.h&gt;
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD 4
+#define CTRLD 4
char *choices[] = {
"Choice 1",
"Choice 2",
"Choice 3",
"Choice 4",
- "Choice 5",
- "Choice 6",
- "Choice 7",
- "Choice 8",
- "Choice 9",
- "Choice 10",
+ "Choice 5",
+ "Choice 6",
+ "Choice 7",
+ "Choice 8",
+ "Choice 9",
+ "Choice 10",
"Exit",
(char *)NULL,
};
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
int main()
-{ ITEM **my_items;
- int c;
- MENU *my_menu;
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
WINDOW *my_menu_win;
int n_choices, i;
-
- /* Initialize curses */
- initscr();
- start_color();
+
+ /* Initialize curses */
+ initscr();
+ start_color();
cbreak();
noecho();
- keypad(stdscr, TRUE);
- init_pair(1, COLOR_RED, COLOR_BLACK);
- init_pair(2, COLOR_CYAN, COLOR_BLACK);
+ keypad(stdscr, TRUE);
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_CYAN, COLOR_BLACK);
- /* Create items */
+ /* Create items */
n_choices = ARRAY_SIZE(choices);
my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
- for(i = 0; i &#60; n_choices; ++i)
+ for(i = 0; i &lt; n_choices; ++i)
my_items[i] = new_item(choices[i], choices[i]);
- /* Crate menu */
- my_menu = new_menu((ITEM **)my_items);
+ /* Crate menu */
+ my_menu = new_menu((ITEM **)my_items);
- /* Create the window to be associated with the menu */
+ /* Create the window to be associated with the menu */
my_menu_win = newwin(10, 40, 4, 4);
keypad(my_menu_win, TRUE);
- /* Set main window and sub window */
+ /* Set main window and sub window */
set_menu_win(my_menu, my_menu_win);
set_menu_sub(my_menu, derwin(my_menu_win, 6, 38, 3, 1));
- set_menu_format(my_menu, 5, 1);
-
- /* Set menu mark to the string " * " */
+ set_menu_format(my_menu, 5, 1);
+
+ /* Set menu mark to the string " * " */
set_menu_mark(my_menu, " * ");
- /* Print a border around the main window and print a title */
+ /* Print a border around the main window and print a title */
box(my_menu_win, 0, 0);
- print_in_middle(my_menu_win, 1, 0, 40, "My Menu", COLOR_PAIR(1));
- mvwaddch(my_menu_win, 2, 0, ACS_LTEE);
- mvwhline(my_menu_win, 2, 1, ACS_HLINE, 38);
- mvwaddch(my_menu_win, 2, 39, ACS_RTEE);
+ print_in_middle(my_menu_win, 1, 0, 40, "My Menu", COLOR_PAIR(1));
+ mvwaddch(my_menu_win, 2, 0, ACS_LTEE);
+ mvwhline(my_menu_win, 2, 1, ACS_HLINE, 38);
+ mvwaddch(my_menu_win, 2, 39, ACS_RTEE);
+
+ /* Post the menu */
+ post_menu(my_menu);
+ wrefresh(my_menu_win);
- /* Post the menu */
- post_menu(my_menu);
- wrefresh(my_menu_win);
-
- attron(COLOR_PAIR(2));
- mvprintw(LINES - 2, 0, "Use PageUp and PageDown to scoll down or up a page of items");
- mvprintw(LINES - 1, 0, "Arrow Keys to navigate (F1 to Exit)");
- attroff(COLOR_PAIR(2));
- refresh();
-
- while((c = wgetch(my_menu_win)) != KEY_F(1))
- { switch(c)
- { case KEY_DOWN:
- menu_driver(my_menu, REQ_DOWN_ITEM);
- break;
- case KEY_UP:
- menu_driver(my_menu, REQ_UP_ITEM);
- break;
- case KEY_NPAGE:
- menu_driver(my_menu, REQ_SCR_DPAGE);
- break;
- case KEY_PPAGE:
- menu_driver(my_menu, REQ_SCR_UPAGE);
- break;
- }
+ attron(COLOR_PAIR(2));
+ mvprintw(LINES - 2, 0, "Use PageUp and PageDown to scoll down or up a page of items");
+ mvprintw(LINES - 1, 0, "Arrow Keys to navigate (F1 to Exit)");
+ attroff(COLOR_PAIR(2));
+ refresh();
+
+ while((c = wgetch(my_menu_win)) != KEY_F(1))
+ { switch(c)
+ { case KEY_DOWN:
+ menu_driver(my_menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(my_menu, REQ_UP_ITEM);
+ break;
+ case KEY_NPAGE:
+ menu_driver(my_menu, REQ_SCR_DPAGE);
+ break;
+ case KEY_PPAGE:
+ menu_driver(my_menu, REQ_SCR_UPAGE);
+ break;
+ }
wrefresh(my_menu_win);
- }
+ }
- /* Unpost and free all the memory taken up */
+ /* Unpost and free all the memory taken up */
unpost_menu(my_menu);
free_menu(my_menu);
- for(i = 0; i &#60; n_choices; ++i)
+ for(i = 0; i &lt; n_choices; ++i)
free_item(my_items[i]);
- endwin();
+ endwin();
}
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{ int length, x, y;
- float temp;
-
- if(win == NULL)
- win = stdscr;
- getyx(win, y, x);
- if(startx != 0)
- x = startx;
- if(starty != 0)
- y = starty;
- if(width == 0)
- width = 80;
-
- length = strlen(string);
- temp = (width - length)/ 2;
- x = startx + (int)temp;
- wattron(win, color);
- mvwprintw(win, y, x, "%s", string);
- wattroff(win, color);
- refresh();
-}</SPAN
-></PRE
-></DIV
-><P
->This program is self-explanatory. In this example the number of choices has been
-increased to ten, which is larger than our sub window size which can hold 6
-items. This message has to be explicitly conveyed to the menu system with the
-function set_menu_format(). In here we specify the number of rows and columns we
-want to be displayed for a single page. We can specify any number of items to be
-shown, in the rows variables, if it is less than the height of the sub window.
-If the key pressed by the user is a PAGE UP or PAGE DOWN, the menu is scrolled a
-page due to the requests (REQ_SCR_DPAGE and REQ_SCR_UPAGE) given to
-menu_driver().</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="MULTICOLUMN"
->17.6. Multi Columnar Menus</A
-></H3
-><P
->In the above example you have seen how to use the function set_menu_format(). I
-didn't mention what the cols variable (third parameter) does. Well, If your sub
-window is wide enough, you can opt to display more than one item per row. This
-can be specified in the cols variable. To make things simpler, the following
-example doesn't show descriptions for the items.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="MMEMUCO"
-></A
-><P
-><B
->Example 21. Milt Columnar Menus Example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;curses.h&#62;
-#include &#60;menu.h&#62;
+{ int length, x, y;
+ float temp;
+
+ if(win == NULL)
+ win = stdscr;
+ getyx(win, y, x);
+ if(startx != 0)
+ x = startx;
+ if(starty != 0)
+ y = starty;
+ if(width == 0)
+ width = 80;
+
+ length = strlen(string);
+ temp = (width - length)/ 2;
+ x = startx + (int)temp;
+ wattron(win, color);
+ mvwprintw(win, y, x, "%s", string);
+ wattroff(win, color);
+ refresh();
+}</span>
+</pre>
+ </div>
+
+ <p>This program is self-explanatory. In this example the
+ number of choices has been increased to ten, which is
+ larger than our sub window size which can hold 6 items.
+ This message has to be explicitly conveyed to the menu
+ system with the function set_menu_format(). In here we
+ specify the number of rows and columns we want to be
+ displayed for a single page. We can specify any number of
+ items to be shown, in the rows variables, if it is less
+ than the height of the sub window. If the key pressed by
+ the user is a PAGE UP or PAGE DOWN, the menu is scrolled a
+ page due to the requests (REQ_SCR_DPAGE and REQ_SCR_UPAGE)
+ given to menu_driver().</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="MULTICOLUMN" id=
+ "MULTICOLUMN">17.6. Multi Columnar Menus</a></h3>
+
+ <p>In the above example you have seen how to use the
+ function set_menu_format(). I didn't mention what the cols
+ variable (third parameter) does. Well, If your sub window
+ is wide enough, you can opt to display more than one item
+ per row. This can be specified in the cols variable. To
+ make things simpler, the following example doesn't show
+ descriptions for the items.</p>
+
+ <div class="EXAMPLE">
+ <a name="MMEMUCO" id="MMEMUCO"></a>
+
+ <p><b>Example 21. Milt Columnar Menus Example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;curses.h&gt;
+#include &lt;menu.h&gt;
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD 4
+#define CTRLD 4
char *choices[] = {
"Choice 1", "Choice 2", "Choice 3", "Choice 4", "Choice 5",
- "Choice 6", "Choice 7", "Choice 8", "Choice 9", "Choice 10",
- "Choice 11", "Choice 12", "Choice 13", "Choice 14", "Choice 15",
- "Choice 16", "Choice 17", "Choice 18", "Choice 19", "Choice 20",
+ "Choice 6", "Choice 7", "Choice 8", "Choice 9", "Choice 10",
+ "Choice 11", "Choice 12", "Choice 13", "Choice 14", "Choice 15",
+ "Choice 16", "Choice 17", "Choice 18", "Choice 19", "Choice 20",
"Exit",
(char *)NULL,
};
int main()
-{ ITEM **my_items;
- int c;
- MENU *my_menu;
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
WINDOW *my_menu_win;
int n_choices, i;
-
- /* Initialize curses */
- initscr();
- start_color();
+
+ /* Initialize curses */
+ initscr();
+ start_color();
cbreak();
noecho();
- keypad(stdscr, TRUE);
- init_pair(1, COLOR_RED, COLOR_BLACK);
- init_pair(2, COLOR_CYAN, COLOR_BLACK);
+ keypad(stdscr, TRUE);
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_CYAN, COLOR_BLACK);
- /* Create items */
+ /* Create items */
n_choices = ARRAY_SIZE(choices);
my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
- for(i = 0; i &#60; n_choices; ++i)
+ for(i = 0; i &lt; n_choices; ++i)
my_items[i] = new_item(choices[i], choices[i]);
- /* Crate menu */
- my_menu = new_menu((ITEM **)my_items);
+ /* Crate menu */
+ my_menu = new_menu((ITEM **)my_items);
- /* Set menu option not to show the description */
- menu_opts_off(my_menu, O_SHOWDESC);
+ /* Set menu option not to show the description */
+ menu_opts_off(my_menu, O_SHOWDESC);
- /* Create the window to be associated with the menu */
+ /* Create the window to be associated with the menu */
my_menu_win = newwin(10, 70, 4, 4);
keypad(my_menu_win, TRUE);
- /* Set main window and sub window */
+ /* Set main window and sub window */
set_menu_win(my_menu, my_menu_win);
set_menu_sub(my_menu, derwin(my_menu_win, 6, 68, 3, 1));
- set_menu_format(my_menu, 5, 3);
- set_menu_mark(my_menu, " * ");
+ set_menu_format(my_menu, 5, 3);
+ set_menu_mark(my_menu, " * ");
- /* Print a border around the main window and print a title */
+ /* Print a border around the main window and print a title */
box(my_menu_win, 0, 0);
-
- attron(COLOR_PAIR(2));
- mvprintw(LINES - 3, 0, "Use PageUp and PageDown to scroll");
- mvprintw(LINES - 2, 0, "Use Arrow Keys to navigate (F1 to Exit)");
- attroff(COLOR_PAIR(2));
- refresh();
-
- /* Post the menu */
- post_menu(my_menu);
- wrefresh(my_menu_win);
-
- while((c = wgetch(my_menu_win)) != KEY_F(1))
- { switch(c)
- { case KEY_DOWN:
- menu_driver(my_menu, REQ_DOWN_ITEM);
- break;
- case KEY_UP:
- menu_driver(my_menu, REQ_UP_ITEM);
- break;
- case KEY_LEFT:
- menu_driver(my_menu, REQ_LEFT_ITEM);
- break;
- case KEY_RIGHT:
- menu_driver(my_menu, REQ_RIGHT_ITEM);
- break;
- case KEY_NPAGE:
- menu_driver(my_menu, REQ_SCR_DPAGE);
- break;
- case KEY_PPAGE:
- menu_driver(my_menu, REQ_SCR_UPAGE);
- break;
- }
+
+ attron(COLOR_PAIR(2));
+ mvprintw(LINES - 3, 0, "Use PageUp and PageDown to scroll");
+ mvprintw(LINES - 2, 0, "Use Arrow Keys to navigate (F1 to Exit)");
+ attroff(COLOR_PAIR(2));
+ refresh();
+
+ /* Post the menu */
+ post_menu(my_menu);
+ wrefresh(my_menu_win);
+
+ while((c = wgetch(my_menu_win)) != KEY_F(1))
+ { switch(c)
+ { case KEY_DOWN:
+ menu_driver(my_menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(my_menu, REQ_UP_ITEM);
+ break;
+ case KEY_LEFT:
+ menu_driver(my_menu, REQ_LEFT_ITEM);
+ break;
+ case KEY_RIGHT:
+ menu_driver(my_menu, REQ_RIGHT_ITEM);
+ break;
+ case KEY_NPAGE:
+ menu_driver(my_menu, REQ_SCR_DPAGE);
+ break;
+ case KEY_PPAGE:
+ menu_driver(my_menu, REQ_SCR_UPAGE);
+ break;
+ }
wrefresh(my_menu_win);
- }
+ }
- /* Unpost and free all the memory taken up */
+ /* Unpost and free all the memory taken up */
unpost_menu(my_menu);
free_menu(my_menu);
- for(i = 0; i &#60; n_choices; ++i)
+ for(i = 0; i &lt; n_choices; ++i)
free_item(my_items[i]);
- endwin();
-}</SPAN
-></PRE
-></DIV
-><P
->Watch the function call to set_menu_format(). It specifies the number of columns
-to be 3, thus displaying 3 items per row. We have also switched off the showing
-descriptions with the function menu_opts_off(). There are couple of functions
-set_menu_opts(), menu_opts_on() and menu_opts() which can be used to manipulate
-menu options. The following menu options can be specified.</P
-><PRE
-CLASS="PROGRAMLISTING"
-> O_ONEVALUE
+ endwin();
+}</span>
+</pre>
+ </div>
+
+ <p>Watch the function call to set_menu_format(). It
+ specifies the number of columns to be 3, thus displaying 3
+ items per row. We have also switched off the showing
+ descriptions with the function menu_opts_off(). There are
+ couple of functions set_menu_opts(), menu_opts_on() and
+ menu_opts() which can be used to manipulate menu options.
+ The following menu options can be specified.</p>
+ <pre class="PROGRAMLISTING">
+ O_ONEVALUE
Only one item can be selected for this menu.
O_SHOWDESC
@@ -5898,684 +4950,666 @@ CLASS="PROGRAMLISTING"
O_NONCYCLIC
Don't wrap around next-item and previous-item,
- requests to the other end of the menu.</PRE
-><P
->All options are on by default. You can switch specific attributes on or off with
-menu_opts_on() and menu_opts_off() functions. You can also use set_menu_opts()
-to directly specify the options. The argument to this function should be a OR ed
-value of some of those above constants. The function menu_opts() can be used to
-find out a menu's present options. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="MULTIVALUEMENUS"
->17.7. Multi Valued Menus</A
-></H3
-><P
->You might be wondering what if you switch off the option O_ONEVALUE. Then the
-menu becomes multi-valued. That means you can select more than one item. This
-brings us to the request REQ_TOGGLE_ITEM. Let's see it in action.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="MMETO"
-></A
-><P
-><B
->Example 22. Multi Valued Menus example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;curses.h&#62;
-#include &#60;menu.h&#62;
+ requests to the other end of the menu.
+</pre>
+
+ <p>All options are on by default. You can switch specific
+ attributes on or off with menu_opts_on() and
+ menu_opts_off() functions. You can also use set_menu_opts()
+ to directly specify the options. The argument to this
+ function should be a OR ed value of some of those above
+ constants. The function menu_opts() can be used to find out
+ a menu's present options.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="MULTIVALUEMENUS" id=
+ "MULTIVALUEMENUS">17.7. Multi Valued Menus</a></h3>
+
+ <p>You might be wondering what if you switch off the option
+ O_ONEVALUE. Then the menu becomes multi-valued. That means
+ you can select more than one item. This brings us to the
+ request REQ_TOGGLE_ITEM. Let's see it in action.</p>
+
+ <div class="EXAMPLE">
+ <a name="MMETO" id="MMETO"></a>
+
+ <p><b>Example 22. Multi Valued Menus example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;curses.h&gt;
+#include &lt;menu.h&gt;
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD 4
+#define CTRLD 4
char *choices[] = {
"Choice 1",
"Choice 2",
"Choice 3",
"Choice 4",
- "Choice 5",
- "Choice 6",
- "Choice 7",
+ "Choice 5",
+ "Choice 6",
+ "Choice 7",
"Exit",
};
int main()
-{ ITEM **my_items;
- int c;
- MENU *my_menu;
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
int n_choices, i;
- ITEM *cur_item;
-
- /* Initialize curses */
- initscr();
+ ITEM *cur_item;
+
+ /* Initialize curses */
+ initscr();
cbreak();
noecho();
- keypad(stdscr, TRUE);
+ keypad(stdscr, TRUE);
- /* Initialize items */
+ /* Initialize items */
n_choices = ARRAY_SIZE(choices);
my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
- for(i = 0; i &#60; n_choices; ++i)
+ for(i = 0; i &lt; n_choices; ++i)
my_items[i] = new_item(choices[i], choices[i]);
- my_items[n_choices] = (ITEM *)NULL;
-
- my_menu = new_menu((ITEM **)my_items);
-
- /* Make the menu multi valued */
- menu_opts_off(my_menu, O_ONEVALUE);
-
- mvprintw(LINES - 3, 0, "Use &#60;SPACE&#62; to select or unselect an item.");
- mvprintw(LINES - 2, 0, "&#60;ENTER&#62; to see presently selected items(F1 to Exit)");
- post_menu(my_menu);
- refresh();
-
- while((c = getch()) != KEY_F(1))
- { switch(c)
- { case KEY_DOWN:
- menu_driver(my_menu, REQ_DOWN_ITEM);
- break;
- case KEY_UP:
- menu_driver(my_menu, REQ_UP_ITEM);
- break;
- case ' ':
- menu_driver(my_menu, REQ_TOGGLE_ITEM);
- break;
- case 10: /* Enter */
- { char temp[200];
- ITEM **items;
-
- items = menu_items(my_menu);
- temp[0] = '\0';
- for(i = 0; i &#60; item_count(my_menu); ++i)
- if(item_value(items[i]) == TRUE)
- { strcat(temp, item_name(items[i]));
- strcat(temp, " ");
- }
- move(20, 0);
- clrtoeol();
- mvprintw(20, 0, temp);
- refresh();
- }
- break;
- }
- }
-
- free_item(my_items[0]);
+ my_items[n_choices] = (ITEM *)NULL;
+
+ my_menu = new_menu((ITEM **)my_items);
+
+ /* Make the menu multi valued */
+ menu_opts_off(my_menu, O_ONEVALUE);
+
+ mvprintw(LINES - 3, 0, "Use &lt;SPACE&gt; to select or unselect an item.");
+ mvprintw(LINES - 2, 0, "&lt;ENTER&gt; to see presently selected items(F1 to Exit)");
+ post_menu(my_menu);
+ refresh();
+
+ while((c = getch()) != KEY_F(1))
+ { switch(c)
+ { case KEY_DOWN:
+ menu_driver(my_menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(my_menu, REQ_UP_ITEM);
+ break;
+ case ' ':
+ menu_driver(my_menu, REQ_TOGGLE_ITEM);
+ break;
+ case 10: /* Enter */
+ { char temp[200];
+ ITEM **items;
+
+ items = menu_items(my_menu);
+ temp[0] = '\0';
+ for(i = 0; i &lt; item_count(my_menu); ++i)
+ if(item_value(items[i]) == TRUE)
+ { strcat(temp, item_name(items[i]));
+ strcat(temp, " ");
+ }
+ move(20, 0);
+ clrtoeol();
+ mvprintw(20, 0, temp);
+ refresh();
+ }
+ break;
+ }
+ }
+
+ free_item(my_items[0]);
free_item(my_items[1]);
- free_menu(my_menu);
- endwin();
+ free_menu(my_menu);
+ endwin();
}
- </SPAN
-></PRE
-></DIV
-><P
->Whew, A lot of new functions. Let's take them one after another. Firstly, the
-REQ_TOGGLE_ITEM. In a multi-valued menu, the user should be allowed to select
-or un select more than one item. The request REQ_TOGGLE_ITEM toggles the present
-selection. In this case when space is pressed REQ_TOGGLE_ITEM request is sent to
-menu_driver to achieve the result.</P
-><P
->Now when the user presses &lt;ENTER&gt; we show the items he presently selected.
-First we find out the items associated with the menu using the function
-menu_items(). Then we loop through the items to find out if the item is selected
-or not. The function item_value() returns TRUE if an item is selected. The
-function item_count() returns the number of items in the menu. The item name can
-be found with item_name(). You can also find the description associated with an
-item using item_description().</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="MENUOPT"
->17.8. Menu Options</A
-></H3
-><P
->Well, by this time you must be itching for some difference in your menu, with
-lots of functionality. I know. You want Colors !!!. You want to create nice
-menus similar to those text mode <A
-HREF="http://www.jersey.net/~debinjoe/games/"
-TARGET="_top"
->dos games</A
->. The functions
-set_menu_fore() and set_menu_back() can be used to change the attribute of the
-selected item and unselected item. The names are misleading. They don't change
-menu's foreground or background which would have been useless. </P
-><P
->The function set_menu_grey() can be used to set the display attribute for the
-non-selectable items in the menu. This brings us to the interesting option for
-an item the one and only O_SELECTABLE. We can turn it off by the function
-item_opts_off() and after that that item is not selectable. It's like a grayed
-item in those fancy windows menus. Let's put these concepts in practice with
-this example</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="MMEAT"
-></A
-><P
-><B
->Example 23. Menu Options example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;menu.h&#62;
+ </span>
+</pre>
+ </div>
+
+ <p>Whew, A lot of new functions. Let's take them one after
+ another. Firstly, the REQ_TOGGLE_ITEM. In a multi-valued
+ menu, the user should be allowed to select or un select
+ more than one item. The request REQ_TOGGLE_ITEM toggles the
+ present selection. In this case when space is pressed
+ REQ_TOGGLE_ITEM request is sent to menu_driver to achieve
+ the result.</p>
+
+ <p>Now when the user presses &lt;ENTER&gt; we show the
+ items he presently selected. First we find out the items
+ associated with the menu using the function menu_items().
+ Then we loop through the items to find out if the item is
+ selected or not. The function item_value() returns TRUE if
+ an item is selected. The function item_count() returns the
+ number of items in the menu. The item name can be found
+ with item_name(). You can also find the description
+ associated with an item using item_description().</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="MENUOPT" id="MENUOPT">17.8. Menu
+ Options</a></h3>
+
+ <p>Well, by this time you must be itching for some
+ difference in your menu, with lots of functionality. I
+ know. You want Colors !!!. You want to create nice menus
+ similar to those text mode <a href=
+ "http://www.jersey.net/~debinjoe/games/" target="_top">dos
+ games</a>. The functions set_menu_fore() and
+ set_menu_back() can be used to change the attribute of the
+ selected item and unselected item. The names are
+ misleading. They don't change menu's foreground or
+ background which would have been useless.</p>
+
+ <p>The function set_menu_grey() can be used to set the
+ display attribute for the non-selectable items in the menu.
+ This brings us to the interesting option for an item the
+ one and only O_SELECTABLE. We can turn it off by the
+ function item_opts_off() and after that that item is not
+ selectable. It's like a grayed item in those fancy windows
+ menus. Let's put these concepts in practice with this
+ example</p>
+
+ <div class="EXAMPLE">
+ <a name="MMEAT" id="MMEAT"></a>
+
+ <p><b>Example 23. Menu Options example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;menu.h&gt;
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD 4
+#define CTRLD 4
char *choices[] = {
"Choice 1",
"Choice 2",
"Choice 3",
"Choice 4",
- "Choice 5",
- "Choice 6",
- "Choice 7",
+ "Choice 5",
+ "Choice 6",
+ "Choice 7",
"Exit",
};
int main()
-{ ITEM **my_items;
- int c;
- MENU *my_menu;
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
int n_choices, i;
- ITEM *cur_item;
-
- /* Initialize curses */
- initscr();
- start_color();
+ ITEM *cur_item;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
cbreak();
noecho();
- keypad(stdscr, TRUE);
- init_pair(1, COLOR_RED, COLOR_BLACK);
- init_pair(2, COLOR_GREEN, COLOR_BLACK);
- init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
+ keypad(stdscr, TRUE);
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_GREEN, COLOR_BLACK);
+ init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
- /* Initialize items */
+ /* Initialize items */
n_choices = ARRAY_SIZE(choices);
my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
- for(i = 0; i &#60; n_choices; ++i)
+ for(i = 0; i &lt; n_choices; ++i)
my_items[i] = new_item(choices[i], choices[i]);
- my_items[n_choices] = (ITEM *)NULL;
- item_opts_off(my_items[3], O_SELECTABLE);
- item_opts_off(my_items[6], O_SELECTABLE);
-
- /* Create menu */
- my_menu = new_menu((ITEM **)my_items);
-
- /* Set fore ground and back ground of the menu */
- set_menu_fore(my_menu, COLOR_PAIR(1) | A_REVERSE);
- set_menu_back(my_menu, COLOR_PAIR(2));
- set_menu_grey(my_menu, COLOR_PAIR(3));
-
- /* Post the menu */
- mvprintw(LINES - 3, 0, "Press &#60;ENTER&#62; to see the option selected");
- mvprintw(LINES - 2, 0, "Up and Down arrow keys to naviage (F1 to Exit)");
- post_menu(my_menu);
- refresh();
-
- while((c = getch()) != KEY_F(1))
- { switch(c)
- { case KEY_DOWN:
- menu_driver(my_menu, REQ_DOWN_ITEM);
- break;
- case KEY_UP:
- menu_driver(my_menu, REQ_UP_ITEM);
- break;
- case 10: /* Enter */
- move(20, 0);
- clrtoeol();
- mvprintw(20, 0, "Item selected is : %s",
- item_name(current_item(my_menu)));
- pos_menu_cursor(my_menu);
- break;
- }
- }
- unpost_menu(my_menu);
- for(i = 0; i &#60; n_choices; ++i)
- free_item(my_items[i]);
- free_menu(my_menu);
- endwin();
+ my_items[n_choices] = (ITEM *)NULL;
+ item_opts_off(my_items[3], O_SELECTABLE);
+ item_opts_off(my_items[6], O_SELECTABLE);
+
+ /* Create menu */
+ my_menu = new_menu((ITEM **)my_items);
+
+ /* Set fore ground and back ground of the menu */
+ set_menu_fore(my_menu, COLOR_PAIR(1) | A_REVERSE);
+ set_menu_back(my_menu, COLOR_PAIR(2));
+ set_menu_grey(my_menu, COLOR_PAIR(3));
+
+ /* Post the menu */
+ mvprintw(LINES - 3, 0, "Press &lt;ENTER&gt; to see the option selected");
+ mvprintw(LINES - 2, 0, "Up and Down arrow keys to naviage (F1 to Exit)");
+ post_menu(my_menu);
+ refresh();
+
+ while((c = getch()) != KEY_F(1))
+ { switch(c)
+ { case KEY_DOWN:
+ menu_driver(my_menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(my_menu, REQ_UP_ITEM);
+ break;
+ case 10: /* Enter */
+ move(20, 0);
+ clrtoeol();
+ mvprintw(20, 0, "Item selected is : %s",
+ item_name(current_item(my_menu)));
+ pos_menu_cursor(my_menu);
+ break;
+ }
+ }
+ unpost_menu(my_menu);
+ for(i = 0; i &lt; n_choices; ++i)
+ free_item(my_items[i]);
+ free_menu(my_menu);
+ endwin();
}
- </SPAN
-></PRE
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="MENUUSERPTR"
->17.9. The useful User Pointer</A
-></H3
-><P
->We can associate a user pointer with each item in the menu. It works the same
-way as user pointer in panels. It's not touched by menu system. You can store
-any thing you like in that. I usually use it to store the function to be
-executed when the menu option is chosen (It's selected and may be the user
-pressed &lt;ENTER&gt;);</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="MMEUS"
-></A
-><P
-><B
->Example 24. Menu User Pointer Usage </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;curses.h&#62;
-#include &#60;menu.h&#62;
+ </span>
+</pre>
+ </div>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="MENUUSERPTR" id=
+ "MENUUSERPTR">17.9. The useful User Pointer</a></h3>
+
+ <p>We can associate a user pointer with each item in the
+ menu. It works the same way as user pointer in panels. It's
+ not touched by menu system. You can store any thing you
+ like in that. I usually use it to store the function to be
+ executed when the menu option is chosen (It's selected and
+ may be the user pressed &lt;ENTER&gt;);</p>
+
+ <div class="EXAMPLE">
+ <a name="MMEUS" id="MMEUS"></a>
+
+ <p><b>Example 24. Menu User Pointer Usage</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;curses.h&gt;
+#include &lt;menu.h&gt;
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD 4
+#define CTRLD 4
char *choices[] = {
"Choice 1",
"Choice 2",
"Choice 3",
"Choice 4",
- "Choice 5",
- "Choice 6",
- "Choice 7",
+ "Choice 5",
+ "Choice 6",
+ "Choice 7",
"Exit",
};
void func(char *name);
int main()
-{ ITEM **my_items;
- int c;
- MENU *my_menu;
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
int n_choices, i;
- ITEM *cur_item;
-
- /* Initialize curses */
- initscr();
- start_color();
+ ITEM *cur_item;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
cbreak();
noecho();
- keypad(stdscr, TRUE);
- init_pair(1, COLOR_RED, COLOR_BLACK);
- init_pair(2, COLOR_GREEN, COLOR_BLACK);
- init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
+ keypad(stdscr, TRUE);
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_GREEN, COLOR_BLACK);
+ init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
- /* Initialize items */
+ /* Initialize items */
n_choices = ARRAY_SIZE(choices);
my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
- for(i = 0; i &#60; n_choices; ++i)
- { my_items[i] = new_item(choices[i], choices[i]);
- /* Set the user pointer */
- set_item_userptr(my_items[i], func);
- }
- my_items[n_choices] = (ITEM *)NULL;
-
- /* Create menu */
- my_menu = new_menu((ITEM **)my_items);
-
- /* Post the menu */
- mvprintw(LINES - 3, 0, "Press &#60;ENTER&#62; to see the option selected");
- mvprintw(LINES - 2, 0, "Up and Down arrow keys to naviage (F1 to Exit)");
- post_menu(my_menu);
- refresh();
-
- while((c = getch()) != KEY_F(1))
- { switch(c)
- { case KEY_DOWN:
- menu_driver(my_menu, REQ_DOWN_ITEM);
- break;
- case KEY_UP:
- menu_driver(my_menu, REQ_UP_ITEM);
- break;
- case 10: /* Enter */
- { ITEM *cur;
- void (*p)(char *);
-
- cur = current_item(my_menu);
- p = item_userptr(cur);
- p((char *)item_name(cur));
- pos_menu_cursor(my_menu);
- break;
- }
- break;
- }
- }
- unpost_menu(my_menu);
- for(i = 0; i &#60; n_choices; ++i)
- free_item(my_items[i]);
- free_menu(my_menu);
- endwin();
+ for(i = 0; i &lt; n_choices; ++i)
+ { my_items[i] = new_item(choices[i], choices[i]);
+ /* Set the user pointer */
+ set_item_userptr(my_items[i], func);
+ }
+ my_items[n_choices] = (ITEM *)NULL;
+
+ /* Create menu */
+ my_menu = new_menu((ITEM **)my_items);
+
+ /* Post the menu */
+ mvprintw(LINES - 3, 0, "Press &lt;ENTER&gt; to see the option selected");
+ mvprintw(LINES - 2, 0, "Up and Down arrow keys to naviage (F1 to Exit)");
+ post_menu(my_menu);
+ refresh();
+
+ while((c = getch()) != KEY_F(1))
+ { switch(c)
+ { case KEY_DOWN:
+ menu_driver(my_menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(my_menu, REQ_UP_ITEM);
+ break;
+ case 10: /* Enter */
+ { ITEM *cur;
+ void (*p)(char *);
+
+ cur = current_item(my_menu);
+ p = item_userptr(cur);
+ p((char *)item_name(cur));
+ pos_menu_cursor(my_menu);
+ break;
+ }
+ break;
+ }
+ }
+ unpost_menu(my_menu);
+ for(i = 0; i &lt; n_choices; ++i)
+ free_item(my_items[i]);
+ free_menu(my_menu);
+ endwin();
}
void func(char *name)
-{ move(20, 0);
- clrtoeol();
- mvprintw(20, 0, "Item selected is : %s", name);
-} </SPAN
-></PRE
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="FORMS"
->18. Forms Library</A
-></H2
-><P
->Well. If you have seen those forms on web pages which take input from users and
-do various kinds of things, you might be wondering how would any one create such
-forms in text mode display. It's quite difficult to write those nifty forms in
-plain ncurses. Forms library tries to provide a basic frame work to build and
-maintain forms with ease. It has lot of features(functions) which manage
-validation, dynamic expansion of fields etc.. Let's see it in full flow.</P
-><P
->A form is a collection of fields; each field can be either a label(static text)
-or a data-entry location. The forms also library provides functions to divide
-forms into multiple pages. </P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="FORMBASICS"
->18.1. The Basics</A
-></H3
-><P
->Forms are created in much the same way as menus. First the fields related to the
-form are created with new_field(). You can set options for the fields, so that
-they can be displayed with some fancy attributes, validated before the field
-looses focus etc.. Then the fields are attached to form. After this, the form
-can be posted to display and is ready to receive inputs. On the similar lines to
-menu_driver(), the form is manipulated with form_driver(). We can send requests
-to form_driver to move focus to a certain field, move cursor to end of the field
-etc.. After the user enters values in the fields and validation done, form can
-be unposted and memory allocated can be freed.</P
-><P
->The general flow of control of a forms program looks like this.
-
-<P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->Initialize curses</P
-></LI
-><LI
-><P
->Create fields using new_field(). You can specify the height and
-width of the field, and its position on the form.</P
-></LI
-><LI
-><P
->Create the forms with new_form() by specifying the fields to be
-attached with.</P
-></LI
-><LI
-><P
->Post the form with form_post() and refresh the screen.</P
-></LI
-><LI
-><P
->Process the user requests with a loop and do necessary updates
-to form with form_driver.</P
-></LI
-><LI
-><P
->Unpost the menu with form_unpost()</P
-></LI
-><LI
-><P
->Free the memory allocated to menu by free_form()</P
-></LI
-><LI
-><P
->Free the memory allocated to the items with free_field()</P
-></LI
-><LI
-><P
->End curses</P
-></LI
-></OL
-></P
-><P
->As you can see, working with forms library is much similar to handling menu
-library. The following examples will explore various aspects of form
-processing. Let's start the journey with a simple example. first.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="COMPILEFORMS"
->18.2. Compiling With the Forms Library</A
-></H3
-><P
->To use forms library functions, you have to include form.h and to link the
-program with forms library the flag -lform should be added along with -lncurses
-in that order.</P
-><PRE
-CLASS="PROGRAMLISTING"
-> #include &lt;form.h&gt;
+{ move(20, 0);
+ clrtoeol();
+ mvprintw(20, 0, "Item selected is : %s", name);
+} </span>
+</pre>
+ </div>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="FORMS" id="FORMS">18. Forms
+ Library</a></h2>
+
+ <p>Well. If you have seen those forms on web pages which take
+ input from users and do various kinds of things, you might be
+ wondering how would any one create such forms in text mode
+ display. It's quite difficult to write those nifty forms in
+ plain ncurses. Forms library tries to provide a basic frame
+ work to build and maintain forms with ease. It has lot of
+ features(functions) which manage validation, dynamic
+ expansion of fields etc.. Let's see it in full flow.</p>
+
+ <p>A form is a collection of fields; each field can be either
+ a label(static text) or a data-entry location. The forms also
+ library provides functions to divide forms into multiple
+ pages.</p>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="FORMBASICS" id=
+ "FORMBASICS">18.1. The Basics</a></h3>
+
+ <p>Forms are created in much the same way as menus. First
+ the fields related to the form are created with
+ new_field(). You can set options for the fields, so that
+ they can be displayed with some fancy attributes, validated
+ before the field looses focus etc.. Then the fields are
+ attached to form. After this, the form can be posted to
+ display and is ready to receive inputs. On the similar
+ lines to menu_driver(), the form is manipulated with
+ form_driver(). We can send requests to form_driver to move
+ focus to a certain field, move cursor to end of the field
+ etc.. After the user enters values in the fields and
+ validation done, form can be unposted and memory allocated
+ can be freed.</p>
+
+ <p>The general flow of control of a forms program looks
+ like this.</p>
+
+ <ol type="1">
+ <li>
+ <p>Initialize curses</p>
+ </li>
+
+ <li>
+ <p>Create fields using new_field(). You can specify the
+ height and width of the field, and its position on the
+ form.</p>
+ </li>
+
+ <li>
+ <p>Create the forms with new_form() by specifying the
+ fields to be attached with.</p>
+ </li>
+
+ <li>
+ <p>Post the form with form_post() and refresh the
+ screen.</p>
+ </li>
+
+ <li>
+ <p>Process the user requests with a loop and do
+ necessary updates to form with form_driver.</p>
+ </li>
+
+ <li>
+ <p>Unpost the menu with form_unpost()</p>
+ </li>
+
+ <li>
+ <p>Free the memory allocated to menu by free_form()</p>
+ </li>
+
+ <li>
+ <p>Free the memory allocated to the items with
+ free_field()</p>
+ </li>
+
+ <li>
+ <p>End curses</p>
+ </li>
+ </ol>
+
+ <p>As you can see, working with forms library is much
+ similar to handling menu library. The following examples
+ will explore various aspects of form processing. Let's
+ start the journey with a simple example. first.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="COMPILEFORMS" id=
+ "COMPILEFORMS">18.2. Compiling With the Forms
+ Library</a></h3>
+
+ <p>To use forms library functions, you have to include
+ form.h and to link the program with forms library the flag
+ -lform should be added along with -lncurses in that
+ order.</p>
+ <pre class="PROGRAMLISTING">
+ #include &lt;form.h&gt;
.
.
.
- compile and link: gcc &lt;program file&gt; -lform -lncurses</PRE
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="FFOSI"
-></A
-><P
-><B
->Example 25. Forms Basics </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;form.h&#62;
+ compile and link: gcc &lt;program file&gt; -lform -lncurses
+</pre>
+
+ <div class="EXAMPLE">
+ <a name="FFOSI" id="FFOSI"></a>
+
+ <p><b>Example 25. Forms Basics</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;form.h&gt;
int main()
-{ FIELD *field[3];
- FORM *my_form;
- int ch;
-
- /* Initialize curses */
- initscr();
- cbreak();
- noecho();
- keypad(stdscr, TRUE);
-
- /* Initialize the fields */
- field[0] = new_field(1, 10, 4, 18, 0, 0);
- field[1] = new_field(1, 10, 6, 18, 0, 0);
- field[2] = NULL;
-
- /* Set field options */
- set_field_back(field[0], A_UNDERLINE); /* Print a line for the option */
- field_opts_off(field[0], O_AUTOSKIP); /* Don't go to next field when this */
- /* Field is filled up */
- set_field_back(field[1], A_UNDERLINE);
- field_opts_off(field[1], O_AUTOSKIP);
-
- /* Create the form and post it */
- my_form = new_form(field);
- post_form(my_form);
- refresh();
-
- mvprintw(4, 10, "Value 1:");
- mvprintw(6, 10, "Value 2:");
- refresh();
-
- /* Loop through to get user requests */
- while((ch = getch()) != KEY_F(1))
- { switch(ch)
- { case KEY_DOWN:
- /* Go to next field */
- form_driver(my_form, REQ_NEXT_FIELD);
- /* Go to the end of the present buffer */
- /* Leaves nicely at the last character */
- form_driver(my_form, REQ_END_LINE);
- break;
- case KEY_UP:
- /* Go to previous field */
- form_driver(my_form, REQ_PREV_FIELD);
- form_driver(my_form, REQ_END_LINE);
- break;
- default:
- /* If this is a normal character, it gets */
- /* Printed */
- form_driver(my_form, ch);
- break;
- }
- }
-
- /* Un post form and free the memory */
- unpost_form(my_form);
- free_form(my_form);
- free_field(field[0]);
- free_field(field[1]);
-
- endwin();
- return 0;
-}</SPAN
-></PRE
-></DIV
-><P
->Above example is pretty straight forward. It creates two fields with
-<TT
-CLASS="LITERAL"
->new_field()</TT
->. new_field() takes height, width,
-starty, startx, number of offscreen rows and number of additional working
-buffers. The fifth argument number of offscreen rows specifies how much of the
-field to be shown. If it is zero, the entire field is always displayed otherwise
-the form will be scrollable when the user accesses not displayed parts of the
-field. The forms library allocates one buffer per field to store the data user
-enters. Using the last parameter to new_field() we can specify it to allocate
-some additional buffers. These can be used for any purpose you like.</P
-><P
->After creating the fields, back ground attribute of both of them is set to an
-underscore with set_field_back(). The AUTOSKIP option is turned off using
-field_opts_off(). If this option is turned on, focus will move to the next
-field in the form once the active field is filled up completely.</P
-><P
->After attaching the fields to the form, it is posted. Here on, user inputs are
-processed in the while loop, by making corresponding requests to form_driver.
-The details of all the requests to the form_driver() are explained later.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="PLAYFIELDS"
->18.3. Playing with Fields</A
-></H3
-><P
->Each form field is associated with a lot of attributes. They can be manipulated
-to get the required effect and to have fun !!!. So why wait? </P
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="FETCHINFO"
->18.3.1. Fetching Size and Location of Field</A
-></H4
-><P
->The parameters we have given at the time of creation of a field can be retrieved
-with field_info(). It returns height, width, starty, startx, number of offscreen
-rows, and number of additional buffers into the parameters given to it. It is a
-sort of inverse of new_field().</P
-><PRE
-CLASS="PROGRAMLISTING"
->int field_info( FIELD *field, /* field from which to fetch */
+{ FIELD *field[3];
+ FORM *my_form;
+ int ch;
+
+ /* Initialize curses */
+ initscr();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ /* Initialize the fields */
+ field[0] = new_field(1, 10, 4, 18, 0, 0);
+ field[1] = new_field(1, 10, 6, 18, 0, 0);
+ field[2] = NULL;
+
+ /* Set field options */
+ set_field_back(field[0], A_UNDERLINE); /* Print a line for the option */
+ field_opts_off(field[0], O_AUTOSKIP); /* Don't go to next field when this */
+ /* Field is filled up */
+ set_field_back(field[1], A_UNDERLINE);
+ field_opts_off(field[1], O_AUTOSKIP);
+
+ /* Create the form and post it */
+ my_form = new_form(field);
+ post_form(my_form);
+ refresh();
+
+ mvprintw(4, 10, "Value 1:");
+ mvprintw(6, 10, "Value 2:");
+ refresh();
+
+ /* Loop through to get user requests */
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case KEY_DOWN:
+ /* Go to next field */
+ form_driver(my_form, REQ_NEXT_FIELD);
+ /* Go to the end of the present buffer */
+ /* Leaves nicely at the last character */
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ case KEY_UP:
+ /* Go to previous field */
+ form_driver(my_form, REQ_PREV_FIELD);
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ default:
+ /* If this is a normal character, it gets */
+ /* Printed */
+ form_driver(my_form, ch);
+ break;
+ }
+ }
+
+ /* Un post form and free the memory */
+ unpost_form(my_form);
+ free_form(my_form);
+ free_field(field[0]);
+ free_field(field[1]);
+
+ endwin();
+ return 0;
+}</span>
+</pre>
+ </div>
+
+ <p>Above example is pretty straight forward. It creates two
+ fields with <tt class="LITERAL">new_field()</tt>.
+ new_field() takes height, width, starty, startx, number of
+ offscreen rows and number of additional working buffers.
+ The fifth argument number of offscreen rows specifies how
+ much of the field to be shown. If it is zero, the entire
+ field is always displayed otherwise the form will be
+ scrollable when the user accesses not displayed parts of
+ the field. The forms library allocates one buffer per field
+ to store the data user enters. Using the last parameter to
+ new_field() we can specify it to allocate some additional
+ buffers. These can be used for any purpose you like.</p>
+
+ <p>After creating the fields, back ground attribute of both
+ of them is set to an underscore with set_field_back(). The
+ AUTOSKIP option is turned off using field_opts_off(). If
+ this option is turned on, focus will move to the next field
+ in the form once the active field is filled up
+ completely.</p>
+
+ <p>After attaching the fields to the form, it is posted.
+ Here on, user inputs are processed in the while loop, by
+ making corresponding requests to form_driver. The details
+ of all the requests to the form_driver() are explained
+ later.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="PLAYFIELDS" id=
+ "PLAYFIELDS">18.3. Playing with Fields</a></h3>
+
+ <p>Each form field is associated with a lot of attributes.
+ They can be manipulated to get the required effect and to
+ have fun !!!. So why wait?</p>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="FETCHINFO" id=
+ "FETCHINFO">18.3.1. Fetching Size and Location of
+ Field</a></h4>
+
+ <p>The parameters we have given at the time of creation
+ of a field can be retrieved with field_info(). It returns
+ height, width, starty, startx, number of offscreen rows,
+ and number of additional buffers into the parameters
+ given to it. It is a sort of inverse of new_field().</p>
+ <pre class="PROGRAMLISTING">
+int field_info( FIELD *field, /* field from which to fetch */
int *height, *int width, /* field size */
int *top, int *left, /* upper left corner */
int *offscreen, /* number of offscreen rows */
- int *nbuf); /* number of working buffers */</PRE
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="MOVEFIELD"
->18.3.2. Moving the field</A
-></H4
-><P
->The location of the field can be moved to a different position with
-move_field().</P
-><PRE
-CLASS="PROGRAMLISTING"
->int move_field( FIELD *field, /* field to alter */
- int top, int left); /* new upper-left corner */</PRE
-><P
->As usual, the changed position can be queried with field_infor().</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="JUSTIFYFIELD"
->18.3.3. Field Justification</A
-></H4
-><P
->The justification to be done for the field can be fixed using the function
-set_field_just().</P
-><PRE
-CLASS="PROGRAMLISTING"
-> int set_field_just(FIELD *field, /* field to alter */
+ int *nbuf); /* number of working buffers */
+</pre>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="MOVEFIELD" id=
+ "MOVEFIELD">18.3.2. Moving the field</a></h4>
+
+ <p>The location of the field can be moved to a different
+ position with move_field().</p>
+ <pre class="PROGRAMLISTING">
+int move_field( FIELD *field, /* field to alter */
+ int top, int left); /* new upper-left corner */
+</pre>
+
+ <p>As usual, the changed position can be queried with
+ field_infor().</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="JUSTIFYFIELD" id=
+ "JUSTIFYFIELD">18.3.3. Field Justification</a></h4>
+
+ <p>The justification to be done for the field can be
+ fixed using the function set_field_just().</p>
+ <pre class="PROGRAMLISTING">
+ int set_field_just(FIELD *field, /* field to alter */
int justmode); /* mode to set */
- int field_just(FIELD *field); /* fetch justify mode of field */</PRE
-><P
->The justification mode valued accepted and returned by these functions are
-NO_JUSTIFICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="FIELDDISPATTRIB"
->18.3.4. Field Display Attributes</A
-></H4
-><P
->As you have seen, in the above example, display attribute for the fields can be
-set with set_field_fore() and setfield_back(). These functions set foreground
-and background attribute of the fields. You can also specify a pad character
-which will be filled in the unfilled portion of the field. The pad character is
-set with a call to set_field_pad(). Default pad value is a space. The functions
-field_fore(), field_back, field_pad() can be used to query the present
-foreground, background attributes and pad character for the field. The following
-list gives the usage of functions.</P
-><PRE
-CLASS="PROGRAMLISTING"
->&#13;int set_field_fore(FIELD *field, /* field to alter */
+ int field_just(FIELD *field); /* fetch justify mode of field */
+</pre>
+
+ <p>The justification mode valued accepted and returned by
+ these functions are NO_JUSTIFICATION, JUSTIFY_RIGHT,
+ JUSTIFY_LEFT, or JUSTIFY_CENTER.</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="FIELDDISPATTRIB" id=
+ "FIELDDISPATTRIB">18.3.4. Field Display
+ Attributes</a></h4>
+
+ <p>As you have seen, in the above example, display
+ attribute for the fields can be set with set_field_fore()
+ and setfield_back(). These functions set foreground and
+ background attribute of the fields. You can also specify
+ a pad character which will be filled in the unfilled
+ portion of the field. The pad character is set with a
+ call to set_field_pad(). Default pad value is a space.
+ The functions field_fore(), field_back, field_pad() can
+ be used to query the present foreground, background
+ attributes and pad character for the field. The following
+ list gives the usage of functions.</p>
+ <pre class="PROGRAMLISTING">
+&#13;int set_field_fore(FIELD *field, /* field to alter */
chtype attr); /* attribute to set */
chtype field_fore(FIELD *field); /* field to query */
@@ -6591,127 +5625,124 @@ int set_field_pad(FIELD *field, /* field to alter */
int pad); /* pad character to set */
chtype field_pad(FIELD *field); /* field to query */
- /* returns present pad character */&#13;</PRE
-><P
->Though above functions seem quite simple, using colors with set_field_fore() may
-be frustrating in the beginning. Let me first explain about foreground and
-background attributes of a field. The foreground attribute is associated with
-the character. That means a character in the field is printed with the attribute
-you have set with set_field_fore(). Background attribute is the attribute used
-to fill background of field, whether any character is there or not. So what
-about colors? Since colors are always defined in pairs, what is the right way to
-display colored fields? Here's an example clarifying color attributes.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="FFOAT"
-></A
-><P
-><B
->Example 26. Form Attributes example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;form.h&#62;
+ /* returns present pad character */&#13;
+</pre>
+
+ <p>Though above functions seem quite simple, using colors
+ with set_field_fore() may be frustrating in the
+ beginning. Let me first explain about foreground and
+ background attributes of a field. The foreground
+ attribute is associated with the character. That means a
+ character in the field is printed with the attribute you
+ have set with set_field_fore(). Background attribute is
+ the attribute used to fill background of field, whether
+ any character is there or not. So what about colors?
+ Since colors are always defined in pairs, what is the
+ right way to display colored fields? Here's an example
+ clarifying color attributes.</p>
+
+ <div class="EXAMPLE">
+ <a name="FFOAT" id="FFOAT"></a>
+
+ <p><b>Example 26. Form Attributes example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;form.h&gt;
int main()
-{ FIELD *field[3];
- FORM *my_form;
- int ch;
-
- /* Initialize curses */
- initscr();
- start_color();
- cbreak();
- noecho();
- keypad(stdscr, TRUE);
-
- /* Initialize few color pairs */
- init_pair(1, COLOR_WHITE, COLOR_BLUE);
- init_pair(2, COLOR_WHITE, COLOR_BLUE);
-
- /* Initialize the fields */
- field[0] = new_field(1, 10, 4, 18, 0, 0);
- field[1] = new_field(1, 10, 6, 18, 0, 0);
- field[2] = NULL;
-
- /* Set field options */
- set_field_fore(field[0], COLOR_PAIR(1));/* Put the field with blue background */
- set_field_back(field[0], COLOR_PAIR(2));/* and white foreground (characters */
- /* are printed in white */
- field_opts_off(field[0], O_AUTOSKIP); /* Don't go to next field when this */
- /* Field is filled up */
- set_field_back(field[1], A_UNDERLINE);
- field_opts_off(field[1], O_AUTOSKIP);
-
- /* Create the form and post it */
- my_form = new_form(field);
- post_form(my_form);
- refresh();
-
- set_current_field(my_form, field[0]); /* Set focus to the colored field */
- mvprintw(4, 10, "Value 1:");
- mvprintw(6, 10, "Value 2:");
- mvprintw(LINES - 2, 0, "Use UP, DOWN arrow keys to switch between fields");
- refresh();
-
- /* Loop through to get user requests */
- while((ch = getch()) != KEY_F(1))
- { switch(ch)
- { case KEY_DOWN:
- /* Go to next field */
- form_driver(my_form, REQ_NEXT_FIELD);
- /* Go to the end of the present buffer */
- /* Leaves nicely at the last character */
- form_driver(my_form, REQ_END_LINE);
- break;
- case KEY_UP:
- /* Go to previous field */
- form_driver(my_form, REQ_PREV_FIELD);
- form_driver(my_form, REQ_END_LINE);
- break;
- default:
- /* If this is a normal character, it gets */
- /* Printed */
- form_driver(my_form, ch);
- break;
- }
- }
-
- /* Un post form and free the memory */
- unpost_form(my_form);
- free_form(my_form);
- free_field(field[0]);
- free_field(field[1]);
-
- endwin();
- return 0;
-}</SPAN
-></PRE
-></DIV
-><P
->Play with the color pairs and try to understand the foreground and background
-attributes. In my programs using color attributes, I usually set only the
-background with set_field_back(). Curses simply doesn't allow defining
-individual color attributes. </P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="FIELDOPTIONBITS"
->18.3.5. Field Option Bits</A
-></H4
-><P
->There is also a large collection of field option bits you can set to control
-various aspects of forms processing. You can manipulate them with these
-functions:</P
-><PRE
-CLASS="PROGRAMLISTING"
->int set_field_opts(FIELD *field, /* field to alter */
+{ FIELD *field[3];
+ FORM *my_form;
+ int ch;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ /* Initialize few color pairs */
+ init_pair(1, COLOR_WHITE, COLOR_BLUE);
+ init_pair(2, COLOR_WHITE, COLOR_BLUE);
+
+ /* Initialize the fields */
+ field[0] = new_field(1, 10, 4, 18, 0, 0);
+ field[1] = new_field(1, 10, 6, 18, 0, 0);
+ field[2] = NULL;
+
+ /* Set field options */
+ set_field_fore(field[0], COLOR_PAIR(1));/* Put the field with blue background */
+ set_field_back(field[0], COLOR_PAIR(2));/* and white foreground (characters */
+ /* are printed in white */
+ field_opts_off(field[0], O_AUTOSKIP); /* Don't go to next field when this */
+ /* Field is filled up */
+ set_field_back(field[1], A_UNDERLINE);
+ field_opts_off(field[1], O_AUTOSKIP);
+
+ /* Create the form and post it */
+ my_form = new_form(field);
+ post_form(my_form);
+ refresh();
+
+ set_current_field(my_form, field[0]); /* Set focus to the colored field */
+ mvprintw(4, 10, "Value 1:");
+ mvprintw(6, 10, "Value 2:");
+ mvprintw(LINES - 2, 0, "Use UP, DOWN arrow keys to switch between fields");
+ refresh();
+
+ /* Loop through to get user requests */
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case KEY_DOWN:
+ /* Go to next field */
+ form_driver(my_form, REQ_NEXT_FIELD);
+ /* Go to the end of the present buffer */
+ /* Leaves nicely at the last character */
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ case KEY_UP:
+ /* Go to previous field */
+ form_driver(my_form, REQ_PREV_FIELD);
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ default:
+ /* If this is a normal character, it gets */
+ /* Printed */
+ form_driver(my_form, ch);
+ break;
+ }
+ }
+
+ /* Un post form and free the memory */
+ unpost_form(my_form);
+ free_form(my_form);
+ free_field(field[0]);
+ free_field(field[1]);
+
+ endwin();
+ return 0;
+}</span>
+</pre>
+ </div>
+
+ <p>Play with the color pairs and try to understand the
+ foreground and background attributes. In my programs
+ using color attributes, I usually set only the background
+ with set_field_back(). Curses simply doesn't allow
+ defining individual color attributes.</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="FIELDOPTIONBITS" id=
+ "FIELDOPTIONBITS">18.3.5. Field Option Bits</a></h4>
+
+ <p>There is also a large collection of field option bits
+ you can set to control various aspects of forms
+ processing. You can manipulate them with these
+ functions:</p>
+ <pre class="PROGRAMLISTING">
+int set_field_opts(FIELD *field, /* field to alter */
int attr); /* attribute to set */
int field_opts_on(FIELD *field, /* field to alter */
@@ -6720,134 +5751,140 @@ int field_opts_on(FIELD *field, /* field to alter */
int field_opts_off(FIELD *field, /* field to alter */
int attr); /* attributes to turn off */
-int field_opts(FIELD *field); /* field to query */ </PRE
-><P
->The function set_field_opts() can be used to directly set attributes of a field
-or you can choose to switch a few attributes on and off with field_opts_on() and
-field_opts_off() selectively. Anytime you can query the attributes of a field
-with field_opts(). The following is the list of available options. By default,
-all options are on.</P
-><P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->O_VISIBLE</DT
-><DD
-><P
->Controls whether the field is visible on the screen. Can be used
-during form processing to hide or pop up fields depending on the value
-of parent fields.</P
-></DD
-><DT
->O_ACTIVE</DT
-><DD
-><P
->Controls whether the field is active during forms processing (i.e.
-visited by form navigation keys). Can be used to make labels or derived
-fields with buffer values alterable by the forms application, not the user.</P
-></DD
-><DT
->O_PUBLIC</DT
-><DD
-><P
->Controls whether data is displayed during field entry. If this option is
-turned off on a field, the library will accept and edit data in that field,
-but it will not be displayed and the visible field cursor will not move.
-You can turn off the O_PUBLIC bit to define password fields.</P
-></DD
-><DT
->O_EDIT</DT
-><DD
-><P
->Controls whether the field's data can be modified. When this option is
-off, all editing requests except <TT
-CLASS="LITERAL"
->REQ_PREV_CHOICE</TT
-> and <TT
-CLASS="LITERAL"
->REQ_NEXT_CHOICE</TT
->will
-fail. Such read-only fields may be useful for help messages.</P
-></DD
-><DT
->O_WRAP</DT
-><DD
-><P
->Controls word-wrapping in multi-line fields. Normally, when any
-character of a (blank-separated) word reaches the end of the current line, the
-entire word is wrapped to the next line (assuming there is one). When this
-option is off, the word will be split across the line break.</P
-></DD
-><DT
->O_BLANK</DT
-><DD
-><P
->Controls field blanking. When this option is on, entering a character at
-the first field position erases the entire field (except for the just-entered
-character).</P
-></DD
-><DT
->O_AUTOSKIP</DT
-><DD
-><P
->Controls automatic skip to next field when this one fills. Normally,
-when the forms user tries to type more data into a field than will fit,
-the editing location jumps to next field. When this option is off, the
-user's cursor will hang at the end of the field. This option is ignored
-in dynamic fields that have not reached their size limit.</P
-></DD
-><DT
->O_NULLOK</DT
-><DD
-><P
->Controls whether validation is applied to
-blank fields. Normally, it is not; the user can leave a field blank
-without invoking the usual validation check on exit. If this option is
-off on a field, exit from it will invoke a validation check.</P
-></DD
-><DT
->O_PASSOK</DT
-><DD
-><P
->Controls whether validation occurs on every exit, or only after
-the field is modified. Normally the latter is true. Setting O_PASSOK
-may be useful if your field's validation function may change during
-forms processing.</P
-></DD
-><DT
->O_STATIC</DT
-><DD
-><P
->Controls whether the field is fixed to its initial dimensions. If you
-turn this off, the field becomes dynamic and will
-stretch to fit entered data.</P
-></DD
-></DL
-></DIV
-><P
->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
-><P
->The option values are bit-masks and can be composed with logical-or in
-the obvious way. You have seen the usage of switching off O_AUTOSKIP option.
-The following example clarifies usage of some more options. Other options
-are explained where appropriate.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="FFOOP"
-></A
-><P
-><B
->Example 27. Field Options Usage example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;form.h&#62;
+int field_opts(FIELD *field); /* field to query */
+</pre>
+
+ <p>The function set_field_opts() can be used to directly
+ set attributes of a field or you can choose to switch a
+ few attributes on and off with field_opts_on() and
+ field_opts_off() selectively. Anytime you can query the
+ attributes of a field with field_opts(). The following is
+ the list of available options. By default, all options
+ are on.</p>
+
+ <div class="VARIABLELIST">
+ <dl>
+ <dt>O_VISIBLE</dt>
+
+ <dd>
+ <p>Controls whether the field is visible on the
+ screen. Can be used during form processing to hide
+ or pop up fields depending on the value of parent
+ fields.</p>
+ </dd>
+
+ <dt>O_ACTIVE</dt>
+
+ <dd>
+ <p>Controls whether the field is active during
+ forms processing (i.e. visited by form navigation
+ keys). Can be used to make labels or derived fields
+ with buffer values alterable by the forms
+ application, not the user.</p>
+ </dd>
+
+ <dt>O_PUBLIC</dt>
+
+ <dd>
+ <p>Controls whether data is displayed during field
+ entry. If this option is turned off on a field, the
+ library will accept and edit data in that field,
+ but it will not be displayed and the visible field
+ cursor will not move. You can turn off the O_PUBLIC
+ bit to define password fields.</p>
+ </dd>
+
+ <dt>O_EDIT</dt>
+
+ <dd>
+ <p>Controls whether the field's data can be
+ modified. When this option is off, all editing
+ requests except <tt class=
+ "LITERAL">REQ_PREV_CHOICE</tt> and <tt class=
+ "LITERAL">REQ_NEXT_CHOICE</tt>will fail. Such
+ read-only fields may be useful for help
+ messages.</p>
+ </dd>
+
+ <dt>O_WRAP</dt>
+
+ <dd>
+ <p>Controls word-wrapping in multi-line fields.
+ Normally, when any character of a (blank-separated)
+ word reaches the end of the current line, the
+ entire word is wrapped to the next line (assuming
+ there is one). When this option is off, the word
+ will be split across the line break.</p>
+ </dd>
+
+ <dt>O_BLANK</dt>
+
+ <dd>
+ <p>Controls field blanking. When this option is on,
+ entering a character at the first field position
+ erases the entire field (except for the
+ just-entered character).</p>
+ </dd>
+
+ <dt>O_AUTOSKIP</dt>
+
+ <dd>
+ <p>Controls automatic skip to next field when this
+ one fills. Normally, when the forms user tries to
+ type more data into a field than will fit, the
+ editing location jumps to next field. When this
+ option is off, the user's cursor will hang at the
+ end of the field. This option is ignored in dynamic
+ fields that have not reached their size limit.</p>
+ </dd>
+
+ <dt>O_NULLOK</dt>
+
+ <dd>
+ <p>Controls whether validation is applied to blank
+ fields. Normally, it is not; the user can leave a
+ field blank without invoking the usual validation
+ check on exit. If this option is off on a field,
+ exit from it will invoke a validation check.</p>
+ </dd>
+
+ <dt>O_PASSOK</dt>
+
+ <dd>
+ <p>Controls whether validation occurs on every
+ exit, or only after the field is modified. Normally
+ the latter is true. Setting O_PASSOK may be useful
+ if your field's validation function may change
+ during forms processing.</p>
+ </dd>
+
+ <dt>O_STATIC</dt>
+
+ <dd>
+ <p>Controls whether the field is fixed to its
+ initial dimensions. If you turn this off, the field
+ becomes dynamic and will stretch to fit entered
+ data.</p>
+ </dd>
+ </dl>
+ </div>
+
+ <p>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>
+
+ <p>The option values are bit-masks and can be composed
+ with logical-or in the obvious way. You have seen the
+ usage of switching off O_AUTOSKIP option. The following
+ example clarifies usage of some more options. Other
+ options are explained where appropriate.</p>
+
+ <div class="EXAMPLE">
+ <a name="FFOOP" id="FFOOP"></a>
+
+ <p><b>Example 27. Field Options Usage example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;form.h&gt;
#define STARTX 15
#define STARTY 4
@@ -6856,1476 +5893,1204 @@ CLASS="INLINEMEDIAOBJECT"
#define N_FIELDS 3
int main()
-{ FIELD *field[N_FIELDS];
- FORM *my_form;
- int ch, i;
-
- /* Initialize curses */
- initscr();
- cbreak();
- noecho();
- keypad(stdscr, TRUE);
-
- /* Initialize the fields */
- for(i = 0; i &#60; N_FIELDS - 1; ++i)
- field[i] = new_field(1, WIDTH, STARTY + i * 2, STARTX, 0, 0);
- field[N_FIELDS - 1] = NULL;
-
- /* Set field options */
- set_field_back(field[1], A_UNDERLINE); /* Print a line for the option */
-
- field_opts_off(field[0], O_ACTIVE); /* This field is a static label */
- field_opts_off(field[1], O_PUBLIC); /* This filed is like a password field*/
- field_opts_off(field[1], O_AUTOSKIP); /* To avoid entering the same field */
- /* after last character is entered */
-
- /* Create the form and post it */
- my_form = new_form(field);
- post_form(my_form);
- refresh();
-
- set_field_just(field[0], JUSTIFY_CENTER); /* Center Justification */
- set_field_buffer(field[0], 0, "This is a static Field");
- /* Initialize the field */
- mvprintw(STARTY, STARTX - 10, "Field 1:");
- mvprintw(STARTY + 2, STARTX - 10, "Field 2:");
- refresh();
-
- /* Loop through to get user requests */
- while((ch = getch()) != KEY_F(1))
- { switch(ch)
- { case KEY_DOWN:
- /* Go to next field */
- form_driver(my_form, REQ_NEXT_FIELD);
- /* Go to the end of the present buffer */
- /* Leaves nicely at the last character */
- form_driver(my_form, REQ_END_LINE);
- break;
- case KEY_UP:
- /* Go to previous field */
- form_driver(my_form, REQ_PREV_FIELD);
- form_driver(my_form, REQ_END_LINE);
- break;
- default:
- /* If this is a normal character, it gets */
- /* Printed */
- form_driver(my_form, ch);
- break;
- }
- }
-
- /* Un post form and free the memory */
- unpost_form(my_form);
- free_form(my_form);
- free_field(field[0]);
- free_field(field[1]);
-
- endwin();
- return 0;
-}</SPAN
-></PRE
-></DIV
-><P
->This example, though useless, shows the usage of options. If used properly, they
-can present information very effectively in a form. The second field being not
-O_PUBLIC, does not show the characters you are typing.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="FIELDSTATUS"
->18.3.6. Field Status</A
-></H4
-><P
->The field status specifies whether the field has got edited or not. It is
-initially set to FALSE and when user enters something and the data buffer gets
-modified it becomes TRUE. So a field's status can be queried to find out whether
-it has been modified or not. The following functions can assist in those
-operations.</P
-><PRE
-CLASS="PROGRAMLISTING"
->int set_field_status(FIELD *field, /* field to alter */
+{ FIELD *field[N_FIELDS];
+ FORM *my_form;
+ int ch, i;
+
+ /* Initialize curses */
+ initscr();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ /* Initialize the fields */
+ for(i = 0; i &lt; N_FIELDS - 1; ++i)
+ field[i] = new_field(1, WIDTH, STARTY + i * 2, STARTX, 0, 0);
+ field[N_FIELDS - 1] = NULL;
+
+ /* Set field options */
+ set_field_back(field[1], A_UNDERLINE); /* Print a line for the option */
+
+ field_opts_off(field[0], O_ACTIVE); /* This field is a static label */
+ field_opts_off(field[1], O_PUBLIC); /* This filed is like a password field*/
+ field_opts_off(field[1], O_AUTOSKIP); /* To avoid entering the same field */
+ /* after last character is entered */
+
+ /* Create the form and post it */
+ my_form = new_form(field);
+ post_form(my_form);
+ refresh();
+
+ set_field_just(field[0], JUSTIFY_CENTER); /* Center Justification */
+ set_field_buffer(field[0], 0, "This is a static Field");
+ /* Initialize the field */
+ mvprintw(STARTY, STARTX - 10, "Field 1:");
+ mvprintw(STARTY + 2, STARTX - 10, "Field 2:");
+ refresh();
+
+ /* Loop through to get user requests */
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case KEY_DOWN:
+ /* Go to next field */
+ form_driver(my_form, REQ_NEXT_FIELD);
+ /* Go to the end of the present buffer */
+ /* Leaves nicely at the last character */
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ case KEY_UP:
+ /* Go to previous field */
+ form_driver(my_form, REQ_PREV_FIELD);
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ default:
+ /* If this is a normal character, it gets */
+ /* Printed */
+ form_driver(my_form, ch);
+ break;
+ }
+ }
+
+ /* Un post form and free the memory */
+ unpost_form(my_form);
+ free_form(my_form);
+ free_field(field[0]);
+ free_field(field[1]);
+
+ endwin();
+ return 0;
+}</span>
+</pre>
+ </div>
+
+ <p>This example, though useless, shows the usage of
+ options. If used properly, they can present information
+ very effectively in a form. The second field being not
+ O_PUBLIC, does not show the characters you are
+ typing.</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="FIELDSTATUS" id=
+ "FIELDSTATUS">18.3.6. Field Status</a></h4>
+
+ <p>The field status specifies whether the field has got
+ edited or not. It is initially set to FALSE and when user
+ enters something and the data buffer gets modified it
+ becomes TRUE. So a field's status can be queried to find
+ out whether it has been modified or not. The following
+ functions can assist in those operations.</p>
+ <pre class="PROGRAMLISTING">
+int set_field_status(FIELD *field, /* field to alter */
int status); /* status to set */
-int field_status(FIELD *field); /* fetch status of field */</PRE
-><P
->It's better to check the field's status only after after leaving the field, as
-data buffer might not have been updated yet as the validation is still due. To
-guarantee that right status is returned, call field_status() 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 REQ_VALIDATION request
-has been processed by the forms driver</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="FIELDUSERPTR"
->18.3.7. Field User Pointer</A
-></H4
-><P
->Every field structure contains one pointer that can be used by the user for
-various purposes. It is not touched by forms library and can be used for any
-purpose by the user. The following functions set and fetch user pointer.</P
-><PRE
-CLASS="PROGRAMLISTING"
->int set_field_userptr(FIELD *field,
+int field_status(FIELD *field); /* fetch status of field */
+</pre>
+
+ <p>It's better to check the field's status only after
+ after leaving the field, as data buffer might not have
+ been updated yet as the validation is still due. To
+ guarantee that right status is returned, call
+ field_status() 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
+ REQ_VALIDATION request has been processed by the forms
+ driver</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="FIELDUSERPTR" id=
+ "FIELDUSERPTR">18.3.7. Field User Pointer</a></h4>
+
+ <p>Every field structure contains one pointer that can be
+ used by the user for various purposes. It is not touched
+ by forms library and can be used for any purpose by the
+ user. The following functions set and fetch user
+ pointer.</p>
+ <pre class="PROGRAMLISTING">
+int set_field_userptr(FIELD *field,
char *userptr); /* the user pointer you wish to associate */
/* with the field */
-char *field_userptr(FIELD *field); /* fetch user pointer of the field */</PRE
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="VARIABLESIZEFIELDS"
->18.3.8. Variable-Sized Fields</A
-></H4
-><P
->If you want a dynamically changing field with variable width, this is the
-feature you want to put to full use. This will allow the user to enter more data
-than the original size of the field and let the field grow. According to the
-field orientation it will scroll horizontally or vertically to incorporate the
-new data.</P
-><P
->To make a field dynamically growable, the option O_STATIC should be turned off.
-This can be done with a
-<PRE
-CLASS="PROGRAMLISTING"
-> field_opts_off(field_pointer, O_STATIC);</PRE
-></P
-><P
->But it's usually not advisable to allow a field to grow infinitely. You can set
-a maximum limit to the growth of the field with
-<PRE
-CLASS="PROGRAMLISTING"
->int set_max_field(FIELD *field, /* Field on which to operate */
- int max_growth); /* maximum growth allowed for the field */</PRE
-></P
-><P
->The field info for a dynamically growable field can be retrieved by
-<PRE
-CLASS="PROGRAMLISTING"
->int dynamic_field_info( FIELD *field, /* Field on which to operate */
+char *field_userptr(FIELD *field); /* fetch user pointer of the field */
+</pre>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="VARIABLESIZEFIELDS" id=
+ "VARIABLESIZEFIELDS">18.3.8. Variable-Sized
+ Fields</a></h4>
+
+ <p>If you want a dynamically changing field with variable
+ width, this is the feature you want to put to full use.
+ This will allow the user to enter more data than the
+ original size of the field and let the field grow.
+ According to the field orientation it will scroll
+ horizontally or vertically to incorporate the new
+ data.</p>
+
+ <p>To make a field dynamically growable, the option
+ O_STATIC should be turned off. This can be done with
+ a</p>
+ <pre class="PROGRAMLISTING">
+ field_opts_off(field_pointer, O_STATIC);
+</pre>
+
+ <p>But it's usually not advisable to allow a field to
+ grow infinitely. You can set a maximum limit to the
+ growth of the field with</p>
+ <pre class="PROGRAMLISTING">
+int set_max_field(FIELD *field, /* Field on which to operate */
+ int max_growth); /* maximum growth allowed for the field */
+</pre>
+
+ <p>The field info for a dynamically growable field can be
+ retrieved by</p>
+ <pre class="PROGRAMLISTING">
+int dynamic_field_info( FIELD *field, /* Field on which to operate */
int *prows, /* number of rows will be filled in this */
int *pcols, /* number of columns will be filled in this*/
int *pmax) /* maximum allowable growth will be filled */
- /* in this */</PRE
->
-Though field_info work as usual, it is advisable to use this function to get the
-proper attributes of a dynamically growable field.</P
-><P
->Recall the library routine new_field; a new field created with height set to one
-will be defined to be a one line field. A new field created with height greater
-than one will be defined to be a multi line field. </P
-><P
->A one line field with O_STATIC turned off (dynamically growable field) will
-contain a single fixed row, but the number of columns can increase if the user
-enters more data than the initial field will hold. The number of columns
-displayed will remain fixed and the additional data will scroll horizontally. </P
-><P
->A multi line field with O_STATIC turned off (dynamically growable field) will
-contain a fixed number of columns, but the number of rows can increase if the
-user enters more data than the initial field will hold. The number of rows
-displayed will remain fixed and the additional data will scroll vertically.</P
-><P
->The above two paragraphs pretty much describe a dynamically growable field's
-behavior. The way other parts of forms library behaves is described below:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->The field option O_AUTOSKIP will be ignored if the option O_STATIC is off and
-there is no maximum growth specified for the field. Currently, O_AUTOSKIP
-generates an automatic REQ_NEXT_FIELD form driver request when the user types in
-the last character position of a field. On a growable field with no maximum
-growth specified, there is no last character position. If a maximum growth is
-specified, the O_AUTOSKIP option will work as normal if the field has grown to
-its maximum size. </P
-></LI
-><LI
-><P
->The field justification will be ignored if the option O_STATIC is off.
-Currently, set_field_just can be used to JUSTIFY_LEFT, JUSTIFY_RIGHT,
-JUSTIFY_CENTER the contents of a one line field. A growable one line field will,
-by definition, grow and scroll horizontally and may contain more data than can
-be justified. The return from field_just will be unchanged. </P
-></LI
-><LI
-><P
->The overloaded form driver request REQ_NEW_LINE will operate the same way
-regardless of the O_NL_OVERLOAD form option if the field option O_STATIC is off
-and there is no maximum growth specified for the field. Currently, if the form
-option O_NL_OVERLOAD is on, REQ_NEW_LINE implicitly generates a REQ_NEXT_FIELD
-if called from the last line of a field. If a field can grow without bound,
-there is no last line, so REQ_NEW_LINE will never implicitly generate a
-REQ_NEXT_FIELD. If a maximum growth limit is specified and the O_NL_OVERLOAD
-form option is on, REQ_NEW_LINE will only implicitly generate REQ_NEXT_FIELD if
-the field has grown to its maximum size and the user is on the last line. </P
-></LI
-><LI
-><P
->The library call dup_field will work as usual; it will duplicate the field,
-including the current buffer size and contents of the field being duplicated.
-Any specified maximum growth will also be duplicated. </P
-></LI
-><LI
-><P
->The library call link_field will work as usual; it will duplicate all field
-attributes and share buffers with the field being linked. If the O_STATIC field
-option is subsequently changed by a field sharing buffers, how the system reacts
-to an attempt to enter more data into the field than the buffer will currently
-hold will depend on the setting of the option in the current field. </P
-></LI
-><LI
-><P
->The library call field_info will work as usual; the variable nrow will contain
-the value of the original call to new_field. The user should use
-dynamic_field_info, described above, to query the current size of the buffer.</P
-></LI
-></OL
-><P
->Some of the above points make sense only after explaining form driver. We will
-be looking into that in next few sections.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="FORMWINDOWS"
->18.4. Form Windows</A
-></H3
-><P
->The form windows concept is pretty much similar to menu windows. Every form is
-associated with a main window and a sub window. The form main window displays
-any title or border associated or whatever the user wishes. Then the sub window
-contains all the fields and displays them according to their position. This
-gives the flexibility of manipulating fancy form displaying very easily. </P
-><P
->Since this is pretty much similar to menu windows, I am providing an example
-with out much explanation. The functions are similar and they work the same way.</P
-><DIV
-CLASS="EXAMPLE"
-><A
-NAME="FFOWI"
-></A
-><P
-><B
->Example 28. Form Windows Example </B
-></P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="INLINEMEDIAOBJECT"
->#include &#60;form.h&#62;
+ /* in this */
+</pre>Though field_info work as usual, it is advisable to use this
+function to get the proper attributes of a dynamically growable
+field.
+
+ <p>Recall the library routine new_field; a new field
+ created with height set to one will be defined to be a
+ one line field. A new field created with height greater
+ than one will be defined to be a multi line field.</p>
+
+ <p>A one line field with O_STATIC turned off (dynamically
+ growable field) will contain a single fixed row, but the
+ number of columns can increase if the user enters more
+ data than the initial field will hold. The number of
+ columns displayed will remain fixed and the additional
+ data will scroll horizontally.</p>
+
+ <p>A multi line field with O_STATIC turned off
+ (dynamically growable field) will contain a fixed number
+ of columns, but the number of rows can increase if the
+ user enters more data than the initial field will hold.
+ The number of rows displayed will remain fixed and the
+ additional data will scroll vertically.</p>
+
+ <p>The above two paragraphs pretty much describe a
+ dynamically growable field's behavior. The way other
+ parts of forms library behaves is described below:</p>
+
+ <ol type="1">
+ <li>
+ <p>The field option O_AUTOSKIP will be ignored if the
+ option O_STATIC is off and there is no maximum growth
+ specified for the field. Currently, O_AUTOSKIP
+ generates an automatic REQ_NEXT_FIELD form driver
+ request when the user types in the last character
+ position of a field. On a growable field with no
+ maximum growth specified, there is no last character
+ position. If a maximum growth is specified, the
+ O_AUTOSKIP option will work as normal if the field
+ has grown to its maximum size.</p>
+ </li>
+
+ <li>
+ <p>The field justification will be ignored if the
+ option O_STATIC is off. Currently, set_field_just can
+ be used to JUSTIFY_LEFT, JUSTIFY_RIGHT,
+ JUSTIFY_CENTER the contents of a one line field. A
+ growable one line field will, by definition, grow and
+ scroll horizontally and may contain more data than
+ can be justified. The return from field_just will be
+ unchanged.</p>
+ </li>
+
+ <li>
+ <p>The overloaded form driver request REQ_NEW_LINE
+ will operate the same way regardless of the
+ O_NL_OVERLOAD form option if the field option
+ O_STATIC is off and there is no maximum growth
+ specified for the field. Currently, if the form
+ option O_NL_OVERLOAD is on, REQ_NEW_LINE implicitly
+ generates a REQ_NEXT_FIELD if called from the last
+ line of a field. If a field can grow without bound,
+ there is no last line, so REQ_NEW_LINE will never
+ implicitly generate a REQ_NEXT_FIELD. If a maximum
+ growth limit is specified and the O_NL_OVERLOAD form
+ option is on, REQ_NEW_LINE will only implicitly
+ generate REQ_NEXT_FIELD if the field has grown to its
+ maximum size and the user is on the last line.</p>
+ </li>
+
+ <li>
+ <p>The library call dup_field will work as usual; it
+ will duplicate the field, including the current
+ buffer size and contents of the field being
+ duplicated. Any specified maximum growth will also be
+ duplicated.</p>
+ </li>
+
+ <li>
+ <p>The library call link_field will work as usual; it
+ will duplicate all field attributes and share buffers
+ with the field being linked. If the O_STATIC field
+ option is subsequently changed by a field sharing
+ buffers, how the system reacts to an attempt to enter
+ more data into the field than the buffer will
+ currently hold will depend on the setting of the
+ option in the current field.</p>
+ </li>
+
+ <li>
+ <p>The library call field_info will work as usual;
+ the variable nrow will contain the value of the
+ original call to new_field. The user should use
+ dynamic_field_info, described above, to query the
+ current size of the buffer.</p>
+ </li>
+ </ol>
+
+ <p>Some of the above points make sense only after
+ explaining form driver. We will be looking into that in
+ next few sections.</p>
+ </div>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="FORMWINDOWS" id=
+ "FORMWINDOWS">18.4. Form Windows</a></h3>
+
+ <p>The form windows concept is pretty much similar to menu
+ windows. Every form is associated with a main window and a
+ sub window. The form main window displays any title or
+ border associated or whatever the user wishes. Then the sub
+ window contains all the fields and displays them according
+ to their position. This gives the flexibility of
+ manipulating fancy form displaying very easily.</p>
+
+ <p>Since this is pretty much similar to menu windows, I am
+ providing an example with out much explanation. The
+ functions are similar and they work the same way.</p>
+
+ <div class="EXAMPLE">
+ <a name="FFOWI" id="FFOWI"></a>
+
+ <p><b>Example 28. Form Windows Example</b></p>
+ <pre class="PROGRAMLISTING">
+<span class="INLINEMEDIAOBJECT">#include &lt;form.h&gt;
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
int main()
{
- FIELD *field[3];
- FORM *my_form;
- WINDOW *my_form_win;
- int ch, rows, cols;
-
- /* Initialize curses */
- initscr();
- start_color();
- cbreak();
- noecho();
- keypad(stdscr, TRUE);
-
- /* Initialize few color pairs */
- init_pair(1, COLOR_RED, COLOR_BLACK);
-
- /* Initialize the fields */
- field[0] = new_field(1, 10, 6, 1, 0, 0);
- field[1] = new_field(1, 10, 8, 1, 0, 0);
- field[2] = NULL;
-
- /* Set field options */
- set_field_back(field[0], A_UNDERLINE);
- field_opts_off(field[0], O_AUTOSKIP); /* Don't go to next field when this */
- /* Field is filled up */
- set_field_back(field[1], A_UNDERLINE);
- field_opts_off(field[1], O_AUTOSKIP);
-
- /* Create the form and post it */
- my_form = new_form(field);
-
- /* Calculate the area required for the form */
- scale_form(my_form, &#38;rows, &#38;cols);
-
- /* Create the window to be associated with the form */
+ FIELD *field[3];
+ FORM *my_form;
+ WINDOW *my_form_win;
+ int ch, rows, cols;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ /* Initialize few color pairs */
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+
+ /* Initialize the fields */
+ field[0] = new_field(1, 10, 6, 1, 0, 0);
+ field[1] = new_field(1, 10, 8, 1, 0, 0);
+ field[2] = NULL;
+
+ /* Set field options */
+ set_field_back(field[0], A_UNDERLINE);
+ field_opts_off(field[0], O_AUTOSKIP); /* Don't go to next field when this */
+ /* Field is filled up */
+ set_field_back(field[1], A_UNDERLINE);
+ field_opts_off(field[1], O_AUTOSKIP);
+
+ /* Create the form and post it */
+ my_form = new_form(field);
+
+ /* Calculate the area required for the form */
+ scale_form(my_form, &amp;rows, &amp;cols);
+
+ /* Create the window to be associated with the form */
my_form_win = newwin(rows + 4, cols + 4, 4, 4);
keypad(my_form_win, TRUE);
- /* Set main window and sub window */
+ /* Set main window and sub window */
set_form_win(my_form, my_form_win);
set_form_sub(my_form, derwin(my_form_win, rows, cols, 2, 2));
- /* Print a border around the main window and print a title */
+ /* Print a border around the main window and print a title */
box(my_form_win, 0, 0);
- print_in_middle(my_form_win, 1, 0, cols + 4, "My Form", COLOR_PAIR(1));
-
- post_form(my_form);
- wrefresh(my_form_win);
-
- mvprintw(LINES - 2, 0, "Use UP, DOWN arrow keys to switch between fields");
- refresh();
-
- /* Loop through to get user requests */
- while((ch = wgetch(my_form_win)) != KEY_F(1))
- { switch(ch)
- { case KEY_DOWN:
- /* Go to next field */
- form_driver(my_form, REQ_NEXT_FIELD);
- /* Go to the end of the present buffer */
- /* Leaves nicely at the last character */
- form_driver(my_form, REQ_END_LINE);
- break;
- case KEY_UP:
- /* Go to previous field */
- form_driver(my_form, REQ_PREV_FIELD);
- form_driver(my_form, REQ_END_LINE);
- break;
- default:
- /* If this is a normal character, it gets */
- /* Printed */
- form_driver(my_form, ch);
- break;
- }
- }
-
- /* Un post form and free the memory */
- unpost_form(my_form);
- free_form(my_form);
- free_field(field[0]);
- free_field(field[1]);
-
- endwin();
- return 0;
+ print_in_middle(my_form_win, 1, 0, cols + 4, "My Form", COLOR_PAIR(1));
+
+ post_form(my_form);
+ wrefresh(my_form_win);
+
+ mvprintw(LINES - 2, 0, "Use UP, DOWN arrow keys to switch between fields");
+ refresh();
+
+ /* Loop through to get user requests */
+ while((ch = wgetch(my_form_win)) != KEY_F(1))
+ { switch(ch)
+ { case KEY_DOWN:
+ /* Go to next field */
+ form_driver(my_form, REQ_NEXT_FIELD);
+ /* Go to the end of the present buffer */
+ /* Leaves nicely at the last character */
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ case KEY_UP:
+ /* Go to previous field */
+ form_driver(my_form, REQ_PREV_FIELD);
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ default:
+ /* If this is a normal character, it gets */
+ /* Printed */
+ form_driver(my_form, ch);
+ break;
+ }
+ }
+
+ /* Un post form and free the memory */
+ unpost_form(my_form);
+ free_form(my_form);
+ free_field(field[0]);
+ free_field(field[1]);
+
+ endwin();
+ return 0;
}
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{ int length, x, y;
- float temp;
-
- if(win == NULL)
- win = stdscr;
- getyx(win, y, x);
- if(startx != 0)
- x = startx;
- if(starty != 0)
- y = starty;
- if(width == 0)
- width = 80;
-
- length = strlen(string);
- temp = (width - length)/ 2;
- x = startx + (int)temp;
- wattron(win, color);
- mvwprintw(win, y, x, "%s", string);
- wattroff(win, color);
- refresh();
-}</SPAN
-></PRE
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="FILEDVALIDATE"
->18.5. Field Validation</A
-></H3
-><P
->By default, a field will accept any data input by the user. It is possible to
-attach validation to the field. Then any attempt by the user to leave the field,
-while it contains data that doesn't match the validation type will fail. Some
-validation types also have a character-validity check for each time a character
-is entered in the field.</P
-><P
->Validation can be attached to a field with the following function.
-<PRE
-CLASS="PROGRAMLISTING"
->int set_field_type(FIELD *field, /* field to alter */
+{ int length, x, y;
+ float temp;
+
+ if(win == NULL)
+ win = stdscr;
+ getyx(win, y, x);
+ if(startx != 0)
+ x = startx;
+ if(starty != 0)
+ y = starty;
+ if(width == 0)
+ width = 80;
+
+ length = strlen(string);
+ temp = (width - length)/ 2;
+ x = startx + (int)temp;
+ wattron(win, color);
+ mvwprintw(win, y, x, "%s", string);
+ wattroff(win, color);
+ refresh();
+}</span>
+</pre>
+ </div>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="FILEDVALIDATE" id=
+ "FILEDVALIDATE">18.5. Field Validation</a></h3>
+
+ <p>By default, a field will accept any data input by the
+ user. It is possible to attach validation to the field.
+ Then any attempt by the user to leave the field, while it
+ contains data that doesn't match the validation type will
+ fail. Some validation types also have a character-validity
+ check for each time a character is entered in the
+ field.</p>
+
+ <p>Validation can be attached to a field with the following
+ function.</p>
+ <pre class="PROGRAMLISTING">
+int set_field_type(FIELD *field, /* field to alter */
FIELDTYPE *ftype, /* type to associate */
- ...); /* additional arguments*/</PRE
->
-Once set, the validation type for a field can be queried with
-<PRE
-CLASS="PROGRAMLISTING"
->FIELDTYPE *field_type(FIELD *field); /* field to query */</PRE
-></P
-><P
->The form driver validates the data in a field only when data is entered by the
-end-user. Validation does not occur when </P
-><P
-></P
-><UL
-><LI
-><P
->the application program changes the field value by calling set_field_buffer. </P
-></LI
-><LI
-><P
->linked field values are changed indirectly -- by changing the field to which
-they are linked</P
-></LI
-></UL
-><P
->The following are the pre-defined validation types. You can also specify custom
-validation, though it's a bit tricky and cumbersome.</P
-><H1
-CLASS="BRIDGEHEAD"
-><A
-NAME="AEN1069"
-></A
->TYPE_ALPHA</H1
-><P
->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
-><PRE
-CLASS="PROGRAMLISTING"
->int set_field_type(FIELD *field, /* field to alter */
+ ...); /* additional arguments*/
+</pre>Once set, the validation type for a field can be queried with
+ <pre class="PROGRAMLISTING">
+FIELDTYPE *field_type(FIELD *field); /* field to query */
+</pre>
+
+ <p>The form driver validates the data in a field only when
+ data is entered by the end-user. Validation does not occur
+ when</p>
+
+ <ul>
+ <li>
+ <p>the application program changes the field value by
+ calling set_field_buffer.</p>
+ </li>
+
+ <li>
+ <p>linked field values are changed indirectly -- by
+ changing the field to which they are linked</p>
+ </li>
+ </ul>
+
+ <p>The following are the pre-defined validation types. You
+ can also specify custom validation, though it's a bit
+ tricky and cumbersome.</p>
+
+ <h1 class="BRIDGEHEAD"><a name="AEN1069" id=
+ "AEN1069"></a>TYPE_ALPHA</h1>
+
+ <p>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>
+ <pre class="PROGRAMLISTING">
+int set_field_type(FIELD *field, /* field to alter */
TYPE_ALPHA, /* type to associate */
- int width); /* maximum width of field */</PRE
-><P
->The width argument sets a minimum width of data. The user has to enter at-least
-width number of characters before he can leave the field. 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
-><H1
-CLASS="BRIDGEHEAD"
-><A
-NAME="AEN1073"
-></A
->TYPE_ALNUM</H1
-><P
->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
-><PRE
-CLASS="PROGRAMLISTING"
->int set_field_type(FIELD *field, /* field to alter */
+ int width); /* minimum width of field */
+</pre>
+
+ <p>The width argument sets a minimum width of data. The
+ user has to enter at-least width number of characters
+ before he can leave the field. 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>
+
+ <h1 class="BRIDGEHEAD"><a name="AEN1073" id=
+ "AEN1073"></a>TYPE_ALNUM</h1>
+
+ <p>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>
+ <pre class="PROGRAMLISTING">
+int set_field_type(FIELD *field, /* field to alter */
TYPE_ALNUM, /* type to associate */
- int width); /* maximum width of field */</PRE
-><P
->The width 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
-><H1
-CLASS="BRIDGEHEAD"
-><A
-NAME="AEN1077"
-></A
->TYPE_ENUM</H1
-><P
->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
-><PRE
-CLASS="PROGRAMLISTING"
->int set_field_type(FIELD *field, /* field to alter */
+ int width); /* minimum width of field */
+</pre>
+
+ <p>The width 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>
+
+ <h1 class="BRIDGEHEAD"><a name="AEN1077" id=
+ "AEN1077"></a>TYPE_ENUM</h1>
+
+ <p>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>
+ <pre class="PROGRAMLISTING">
+int set_field_type(FIELD *field, /* field to alter */
TYPE_ENUM, /* type to associate */
char **valuelist; /* list of possible values */
int checkcase; /* case-sensitive? */
- int checkunique); /* must specify uniquely? */</PRE
-><P
->The valuelist parameter must point at a NULL-terminated list of
-valid strings. The checkcase argument, if true, makes comparison
-with the string case-sensitive. </P
-><P
->When the user exits a TYPE_ENUM field, the validation procedure tries to
-complete the data in the buffer to a valid entry. If a complete choice string
-has been entered, it is of course valid. But it is also possible to enter a
-prefix of a valid string and have it completed for you. </P
-><P
->By default, if you enter such a prefix and it matches more than one value
-in the string list, the prefix will be completed to the first matching
-value. But the checkunique argument, if true, requires prefix
-matches to be unique in order to be valid. </P
-><P
->The REQ_NEXT_CHOICE and REQ_PREV_CHOICE input requests can be particularly
-useful with these fields. </P
-><H1
-CLASS="BRIDGEHEAD"
-><A
-NAME="AEN1084"
-></A
->TYPE_INTEGER</H1
-><P
->This field type accepts an integer. It is set up as follows: </P
-><PRE
-CLASS="PROGRAMLISTING"
->int set_field_type(FIELD *field, /* field to alter */
+ int checkunique); /* must specify uniquely? */
+</pre>
+
+ <p>The valuelist parameter must point at a NULL-terminated
+ list of valid strings. The checkcase argument, if true,
+ makes comparison with the string case-sensitive.</p>
+
+ <p>When the user exits a TYPE_ENUM field, the validation
+ procedure tries to complete the data in the buffer to a
+ valid entry. If a complete choice string has been entered,
+ it is of course valid. But it is also possible to enter a
+ prefix of a valid string and have it completed for you.</p>
+
+ <p>By default, if you enter such a prefix and it matches
+ more than one value in the string list, the prefix will be
+ completed to the first matching value. But the checkunique
+ argument, if true, requires prefix matches to be unique in
+ order to be valid.</p>
+
+ <p>The REQ_NEXT_CHOICE and REQ_PREV_CHOICE input requests
+ can be particularly useful with these fields.</p>
+
+ <h1 class="BRIDGEHEAD"><a name="AEN1084" id=
+ "AEN1084"></a>TYPE_INTEGER</h1>
+
+ <p>This field type accepts an integer. It is set up as
+ follows:</p>
+ <pre class="PROGRAMLISTING">
+int set_field_type(FIELD *field, /* field to alter */
TYPE_INTEGER, /* type to associate */
int padding, /* # places to zero-pad to */
- int vmin, int vmax); /* valid range */</PRE
-><P
->Valid characters consist of an optional leading minus and digits.
-The range check is performed on exit. If the range maximum is less
-than or equal to the minimum, the range is ignored. </P
-><P
->If the value passes its range check, it is padded with as many leading
-zero digits as necessary to meet the padding argument. </P
-><P
->A TYPE_INTEGER value buffer can conveniently be interpreted with the C library
-function atoi(3).</P
-><H1
-CLASS="BRIDGEHEAD"
-><A
-NAME="AEN1090"
-></A
->TYPE_NUMERIC</H1
-><P
->This field type accepts a decimal number. It is set up as follows: </P
-><PRE
-CLASS="PROGRAMLISTING"
->int set_field_type(FIELD *field, /* field to alter */
+ int vmin, int vmax); /* valid range */
+</pre>
+
+ <p>Valid characters consist of an optional leading minus
+ and digits. The range check is performed on exit. If the
+ range maximum is less than or equal to the minimum, the
+ range is ignored.</p>
+
+ <p>If the value passes its range check, it is padded with
+ as many leading zero digits as necessary to meet the
+ padding argument.</p>
+
+ <p>A TYPE_INTEGER value buffer can conveniently be
+ interpreted with the C library function atoi(3).</p>
+
+ <h1 class="BRIDGEHEAD"><a name="AEN1090" id=
+ "AEN1090"></a>TYPE_NUMERIC</h1>
+
+ <p>This field type accepts a decimal number. It is set up
+ as follows:</p>
+ <pre class="PROGRAMLISTING">
+int set_field_type(FIELD *field, /* field to alter */
TYPE_NUMERIC, /* type to associate */
int padding, /* # places of precision */
- int vmin, int vmax); /* valid range */</PRE
-><P
->Valid characters consist of an optional leading minus and digits. possibly
-including a decimal point. The range check is performed on exit. If the
-range maximum is less than or equal to the minimum, the range is
-ignored. </P
-><P
->If the value passes its range check, it is padded with as many trailing
-zero digits as necessary to meet the padding argument. </P
-><P
->A TYPE_NUMERIC value buffer can conveniently be interpreted with the C library
-function atof(3).</P
-><H1
-CLASS="BRIDGEHEAD"
-><A
-NAME="AEN1096"
-></A
->TYPE_REGEXP</H1
-><P
->This field type accepts data matching a regular expression. It is set up
-as follows: </P
-><PRE
-CLASS="PROGRAMLISTING"
->int set_field_type(FIELD *field, /* field to alter */
+ int vmin, int vmax); /* valid range */
+</pre>
+
+ <p>Valid characters consist of an optional leading minus
+ and digits. possibly including a decimal point. The range
+ check is performed on exit. If the range maximum is less
+ than or equal to the minimum, the range is ignored.</p>
+
+ <p>If the value passes its range check, it is padded with
+ as many trailing zero digits as necessary to meet the
+ padding argument.</p>
+
+ <p>A TYPE_NUMERIC value buffer can conveniently be
+ interpreted with the C library function atof(3).</p>
+
+ <h1 class="BRIDGEHEAD"><a name="AEN1096" id=
+ "AEN1096"></a>TYPE_REGEXP</h1>
+
+ <p>This field type accepts data matching a regular
+ expression. It is set up as follows:</p>
+ <pre class="PROGRAMLISTING">
+int set_field_type(FIELD *field, /* field to alter */
TYPE_REGEXP, /* type to associate */
- char *regexp); /* expression to match */</PRE
-><P
->The syntax for regular expressions is that of regcomp(3).
-The check for regular-expression match is performed on exit.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="FORMDRIVER"
->18.6. Form Driver: The work horse of the forms system</A
-></H3
-><P
->As in the menu system, form_driver() plays a very important role in forms
-system. All types of requests to forms system should be funneled through
-form_driver().</P
-><PRE
-CLASS="PROGRAMLISTING"
->int form_driver(FORM *form, /* form on which to operate */
- int request) /* form request code */</PRE
-><P
->As you have seen some of the examples above, you have to be in a loop looking
-for user input and then decide whether it's a field data or a form request. The
-form requests are then passed to form_driver() to do the work.</P
-><P
->The requests roughly can be divided into following categories. Different
-requests and their usage is explained below:</P
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="PAGENAVREQ"
->18.6.1. Page Navigation Requests</A
-></H4
-><P
->These requests cause page-level moves through the form, triggering display of a
-new form screen. A form can be made of multiple pages. If you have a big form
-with lot of fields and logical sections, then you can divide the form into
-pages. The function set_new_page() to set a new page at the field specified.</P
-><PRE
-CLASS="PROGRAMLISTING"
->int set_new_page(FIELD *field,/* Field at which page break to be set or unset */
- bool new_page_flag); /* should be TRUE to put a break */</PRE
-><P
->The following requests allow you to move to different pages</P
-><P
-></P
-><UL
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_NEXT_PAGE</I
-></SPAN
-> Move to the next form page.</P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_PREV_PAGE</I
-></SPAN
-> Move to the previous
-form page.</P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_FIRST_PAGE</I
-></SPAN
-> Move to the first form page.</P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_LAST_PAGE</I
-></SPAN
-> Move to the last form page. </P
-></LI
-></UL
-><P
->These requests treat the list as cyclic; that is, REQ_NEXT_PAGE from the
-last page goes to the first, and REQ_PREV_PAGE from the first page goes to
-the last.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="INTERFIELDNAVREQ"
->18.6.2. Inter-Field Navigation Requests</A
-></H4
-><P
->These requests handle navigation between fields on the same page.</P
-><P
-></P
-><UL
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_NEXT_FIELD</I
-></SPAN
->
- Move to next field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_PREV_FIELD</I
-></SPAN
->
- Move to previous field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_FIRST_FIELD</I
-></SPAN
->
- Move to the first field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_LAST_FIELD</I
-></SPAN
->
- Move to the last field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SNEXT_FIELD</I
-></SPAN
->
- Move to sorted next field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SPREV_FIELD</I
-></SPAN
->
- Move to sorted previous field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SFIRST_FIELD</I
-></SPAN
->
- Move to the sorted first field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SLAST_FIELD</I
-></SPAN
->
- Move to the sorted last field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_LEFT_FIELD</I
-></SPAN
->
- Move left to field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_RIGHT_FIELD</I
-></SPAN
->
- Move right to field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_UP_FIELD</I
-></SPAN
->
- Move up to field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_DOWN_FIELD</I
-></SPAN
->
- Move down to field. </P
-></LI
-></UL
-><P
->These requests treat the list of fields on a page as cyclic; that is,
-REQ_NEXT_FIELD from the last field goes to the first, and REQ_PREV_FIELD
-from the first field goes to the last. The order of the fields for these
-(and the REQ_FIRST_FIELD and REQ_LAST_FIELD requests) is simply the order of
-the field pointers in the form array (as set up by new_form() or
-set_form_fields()</P
-><P
->It is also possible to traverse the fields as if they had been sorted in
-screen-position order, so the sequence goes left-to-right and top-to-bottom.
-To do this, use the second group of four sorted-movement requests.</P
-><P
->Finally, it is possible to move between fields using visual directions up,
-down, right, and left. To accomplish this, use the third group of four
-requests. Note, however, that the position of a form for purposes of these
-requests is its upper-left corner.</P
-><P
->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 REQ_MOVE_RIGHT from A will go to B only if A, B, and C all
-share the same first line; otherwise it will skip over B to C.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="INTRAFIELDNAVREQ"
->18.6.3. Intra-Field Navigation Requests</A
-></H4
-><P
->These requests drive movement of the edit cursor within the currently
-selected field.</P
-><P
-></P
-><UL
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_NEXT_CHAR</I
-></SPAN
->
- Move to next character. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_PREV_CHAR</I
-></SPAN
->
- Move to previous character. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_NEXT_LINE</I
-></SPAN
->
- Move to next line. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_PREV_LINE</I
-></SPAN
->
- Move to previous line. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_NEXT_WORD</I
-></SPAN
->
- Move to next word. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_PREV_WORD</I
-></SPAN
->
- Move to previous word. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_BEG_FIELD</I
-></SPAN
->
- Move to beginning of field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_END_FIELD</I
-></SPAN
->
- Move to end of field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_BEG_LINE</I
-></SPAN
->
- Move to beginning of line. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_END_LINE</I
-></SPAN
->
- Move to end of line. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_LEFT_CHAR</I
-></SPAN
->
- Move left in field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_RIGHT_CHAR</I
-></SPAN
->
- Move right in field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_UP_CHAR</I
-></SPAN
->
- Move up in field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_DOWN_CHAR</I
-></SPAN
->
- Move down in field. </P
-></LI
-></UL
-><P
->Each word 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
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="SCROLLREQ"
->18.6.4. Scrolling Requests</A
-></H4
-><P
->Fields that are dynamic and have grown and fields explicitly created with
-offscreen rows are scrollable. One-line fields scroll horizontally;
-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
-><P
-></P
-><UL
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SCR_FLINE</I
-></SPAN
->
- Scroll vertically forward a line. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SCR_BLINE</I
-></SPAN
->
- Scroll vertically backward a line. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SCR_FPAGE</I
-></SPAN
->
- Scroll vertically forward a page. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SCR_BPAGE</I
-></SPAN
->
- Scroll vertically backward a page. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SCR_FHPAGE</I
-></SPAN
->
- Scroll vertically forward half a page. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SCR_BHPAGE</I
-></SPAN
->
- Scroll vertically backward half a page. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SCR_FCHAR</I
-></SPAN
->
- Scroll horizontally forward a character. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SCR_BCHAR</I
-></SPAN
->
- Scroll horizontally backward a character. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SCR_HFLINE</I
-></SPAN
->
- Scroll horizontally one field width forward. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SCR_HBLINE</I
-></SPAN
->
- Scroll horizontally one field width backward. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SCR_HFHALF</I
-></SPAN
->
- Scroll horizontally one half field width forward. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_SCR_HBHALF</I
-></SPAN
->
- Scroll horizontally one half field width backward. </P
-></LI
-></UL
-><P
->For scrolling purposes, a page of a field is the height of its visible part.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="EDITREQ"
->18.6.5. Editing Requests</A
-></H4
-><P
->When you pass the forms driver an ASCII character, it is treated as a
-request to add the character to the field's data buffer. Whether this is an
-insertion or a replacement depends on the field's edit mode (insertion is
-the default.</P
-><P
->The following requests support editing the field and changing the edit mode:</P
-><P
-></P
-><UL
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_INS_MODE</I
-></SPAN
->
- Set insertion mode. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_OVL_MODE</I
-></SPAN
->
- Set overlay mode. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_NEW_LINE</I
-></SPAN
->
- New line request (see below for explanation). </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_INS_CHAR</I
-></SPAN
->
- Insert space at character location. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_INS_LINE</I
-></SPAN
->
- Insert blank line at character location. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_DEL_CHAR</I
-></SPAN
->
- Delete character at cursor. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_DEL_PREV</I
-></SPAN
->
- Delete previous word at cursor. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_DEL_LINE</I
-></SPAN
->
- Delete line at cursor. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_DEL_WORD</I
-></SPAN
->
- Delete word at cursor. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_CLR_EOL</I
-></SPAN
->
- Clear to end of line. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_CLR_EOF</I
-></SPAN
->
- Clear to end of field. </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_CLR_FIELD</I
-></SPAN
->
- Clear entire field. </P
-></LI
-></UL
-><P
->The behavior of the REQ_NEW_LINE and REQ_DEL_PREV requests is complicated
-and partly controlled by a pair of forms options. The special cases are
-triggered when the cursor is at the beginning of a field, or on the last
-line of the field.</P
-><P
->First, we consider REQ_NEW_LINE:</P
-><P
->The normal behavior of REQ_NEW_LINE in insert mode is to break the current
-line at the position of the edit cursor, inserting the portion of the
-current line after the cursor as a new line following the current and moving
-the cursor to the beginning of that new line (you may think of this as
-inserting a newline in the field buffer).</P
-><P
->The normal behavior of REQ_NEW_LINE in overlay mode is to clear the current
-line from the position of the edit cursor to end of line. The cursor is then
-moved to the beginning of the next line.</P
-><P
->However, REQ_NEW_LINE at the beginning of a field, or on the last line of a
-field, instead does a REQ_NEXT_FIELD. O_NL_OVERLOAD option is off, this
-special action is disabled.</P
-><P
->Now, let us consider REQ_DEL_PREV:</P
-><P
->The normal behavior of REQ_DEL_PREV is to delete the previous character. If
-insert mode is on, and the cursor is at the start of a line, and the text on
-that line will fit on the previous one, it instead appends the contents of
-the current line to the previous one and deletes the current line (you may
-think of this as deleting a newline from the field buffer).</P
-><P
->However, REQ_DEL_PREV at the beginning of a field is instead treated as a
-REQ_PREV_FIELD.</P
-><P
->If the O_BS_OVERLOAD option is off, this special action is disabled and the
-forms driver just returns E_REQUEST_DENIED.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="ORDERREQ"
->18.6.6. Order Requests</A
-></H4
-><P
->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
-><P
-></P
-><UL
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_NEXT_CHOICE</I
-></SPAN
->
- Place the successor value of the current value in the buffer.
- </P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->REQ_PREV_CHOICE</I
-></SPAN
->
- Place the predecessor value of the current value in the buffer.
- </P
-></LI
-></UL
-><P
->Of the built-in field types, only TYPE_ENUM has built-in successor and
-predecessor functions. When you define a field type of your own (see Custom
-Validation Types), you can associate our own ordering functions.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="APPLICCOMMANDS"
->18.6.7. Application Commands</A
-></H4
-><P
->Form requests are represented as integers above the curses value greater than
-KEY_MAX and less than or equal to the constant MAX_COMMAND. A value within this
-range gets ignored by form_driver(). So this can be used for any purpose by the
-application. It can be treated as an application specific action and take
-corresponding action.</P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="TOOLS"
->19. Tools and Widget Libraries</A
-></H2
-><P
->
-Now that you have seen the capabilities of ncurses and its sister libraries, you
-are rolling your sleeves up and gearing for a project that heavily manipulates
-screen. But wait.. It can be pretty difficult to write and maintain complex GUI
-widgets in plain ncurses or even with the additional libraries. There are some
-ready-to-use tools and widget libraries that can be used instead of writing your
-own widgets. You can use some of them, get ideas from the code, or even extend
-them.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="CDK"
->19.1. CDK (Curses Development Kit)</A
-></H3
-><P
->In the author's words </P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->
-CDK stands for 'Curses Development Kit' and it currently contains 21 ready
-to use widgets which facilitate the speedy development of full screen
-curses programs. </I
-></SPAN
-></P
-><P
->The kit provides some useful widgets, which can be used in your programs
-directly. It's pretty well written and the documentation is very good. The
-examples in the examples directory can be a good place to start for beginners.
-The CDK can be downloaded from <A
-HREF="http://invisible-island.net/cdk/"
-TARGET="_top"
->http://invisible-island.net/cdk/</A
->
-. Follow the instructions in
-README file to install it.</P
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="WIDGETLIST"
->19.1.1. Widget List</A
-></H4
-><P
->The following is the list of widgets provided with cdk and their description.</P
-><PRE
-CLASS="PROGRAMLISTING"
->Widget Type Quick Description
+ char *regexp); /* expression to match */
+</pre>
+
+ <p>The syntax for regular expressions is that of
+ regcomp(3). The check for regular-expression match is
+ performed on exit.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="FORMDRIVER" id=
+ "FORMDRIVER">18.6. Form Driver: The work horse of the forms
+ system</a></h3>
+
+ <p>As in the menu system, form_driver() plays a very
+ important role in forms system. All types of requests to
+ forms system should be funneled through form_driver().</p>
+ <pre class="PROGRAMLISTING">
+int form_driver(FORM *form, /* form on which to operate */
+ int request) /* form request code */
+</pre>
+
+ <p>As you have seen some of the examples above, you have to
+ be in a loop looking for user input and then decide whether
+ it's a field data or a form request. The form requests are
+ then passed to form_driver() to do the work.</p>
+
+ <p>The requests roughly can be divided into following
+ categories. Different requests and their usage is explained
+ below:</p>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="PAGENAVREQ" id=
+ "PAGENAVREQ">18.6.1. Page Navigation Requests</a></h4>
+
+ <p>These requests cause page-level moves through the
+ form, triggering display of a new form screen. A form can
+ be made of multiple pages. If you have a big form with
+ lot of fields and logical sections, then you can divide
+ the form into pages. The function set_new_page() to set a
+ new page at the field specified.</p>
+ <pre class="PROGRAMLISTING">
+int set_new_page(FIELD *field,/* Field at which page break to be set or unset */
+ bool new_page_flag); /* should be TRUE to put a break */
+</pre>
+
+ <p>The following requests allow you to move to different
+ pages</p>
+
+ <ul>
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_NEXT_PAGE</i></span> Move to the next
+ form page.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_PREV_PAGE</i></span> Move to the
+ previous form page.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_FIRST_PAGE</i></span> Move to the
+ first form page.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_LAST_PAGE</i></span> Move to the last
+ form page.</p>
+ </li>
+ </ul>
+
+ <p>These requests treat the list as cyclic; that is,
+ REQ_NEXT_PAGE from the last page goes to the first, and
+ REQ_PREV_PAGE from the first page goes to the last.</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="INTERFIELDNAVREQ" id=
+ "INTERFIELDNAVREQ">18.6.2. Inter-Field Navigation
+ Requests</a></h4>
+
+ <p>These requests handle navigation between fields on the
+ same page.</p>
+
+ <ul>
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_NEXT_FIELD</i></span> Move to next
+ field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_PREV_FIELD</i></span> Move to previous
+ field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_FIRST_FIELD</i></span> Move to the
+ first field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_LAST_FIELD</i></span> Move to the last
+ field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SNEXT_FIELD</i></span> Move to sorted
+ next field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SPREV_FIELD</i></span> Move to sorted
+ previous field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SFIRST_FIELD</i></span> Move to the
+ sorted first field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SLAST_FIELD</i></span> Move to the
+ sorted last field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_LEFT_FIELD</i></span> Move left to
+ field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_RIGHT_FIELD</i></span> Move right to
+ field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_UP_FIELD</i></span> Move up to
+ field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_DOWN_FIELD</i></span> Move down to
+ field.</p>
+ </li>
+ </ul>
+
+ <p>These requests treat the list of fields on a page as
+ cyclic; that is, REQ_NEXT_FIELD from the last field goes
+ to the first, and REQ_PREV_FIELD from the first field
+ goes to the last. The order of the fields for these (and
+ the REQ_FIRST_FIELD and REQ_LAST_FIELD requests) is
+ simply the order of the field pointers in the form array
+ (as set up by new_form() or set_form_fields()</p>
+
+ <p>It is also possible to traverse the fields as if they
+ had been sorted in screen-position order, so the sequence
+ goes left-to-right and top-to-bottom. To do this, use the
+ second group of four sorted-movement requests.</p>
+
+ <p>Finally, it is possible to move between fields using
+ visual directions up, down, right, and left. To
+ accomplish this, use the third group of four requests.
+ Note, however, that the position of a form for purposes
+ of these requests is its upper-left corner.</p>
+
+ <p>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
+ REQ_MOVE_RIGHT from A will go to B only if A, B, and C
+ all share the same first line; otherwise it will skip
+ over B to C.</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="INTRAFIELDNAVREQ" id=
+ "INTRAFIELDNAVREQ">18.6.3. Intra-Field Navigation
+ Requests</a></h4>
+
+ <p>These requests drive movement of the edit cursor
+ within the currently selected field.</p>
+
+ <ul>
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_NEXT_CHAR</i></span> Move to next
+ character.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_PREV_CHAR</i></span> Move to previous
+ character.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_NEXT_LINE</i></span> Move to next
+ line.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_PREV_LINE</i></span> Move to previous
+ line.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_NEXT_WORD</i></span> Move to next
+ word.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_PREV_WORD</i></span> Move to previous
+ word.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_BEG_FIELD</i></span> Move to beginning
+ of field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_END_FIELD</i></span> Move to end of
+ field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_BEG_LINE</i></span> Move to beginning
+ of line.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_END_LINE</i></span> Move to end of
+ line.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_LEFT_CHAR</i></span> Move left in
+ field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_RIGHT_CHAR</i></span> Move right in
+ field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_UP_CHAR</i></span> Move up in
+ field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_DOWN_CHAR</i></span> Move down in
+ field.</p>
+ </li>
+ </ul>
+
+ <p>Each word 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>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="SCROLLREQ" id=
+ "SCROLLREQ">18.6.4. Scrolling Requests</a></h4>
+
+ <p>Fields that are dynamic and have grown and fields
+ explicitly created with offscreen rows are scrollable.
+ One-line fields scroll horizontally; 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>
+
+ <ul>
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SCR_FLINE</i></span> Scroll vertically
+ forward a line.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SCR_BLINE</i></span> Scroll vertically
+ backward a line.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SCR_FPAGE</i></span> Scroll vertically
+ forward a page.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SCR_BPAGE</i></span> Scroll vertically
+ backward a page.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SCR_FHPAGE</i></span> Scroll
+ vertically forward half a page.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SCR_BHPAGE</i></span> Scroll
+ vertically backward half a page.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SCR_FCHAR</i></span> Scroll
+ horizontally forward a character.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SCR_BCHAR</i></span> Scroll
+ horizontally backward a character.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SCR_HFLINE</i></span> Scroll
+ horizontally one field width forward.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SCR_HBLINE</i></span> Scroll
+ horizontally one field width backward.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SCR_HFHALF</i></span> Scroll
+ horizontally one half field width forward.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_SCR_HBHALF</i></span> Scroll
+ horizontally one half field width backward.</p>
+ </li>
+ </ul>
+
+ <p>For scrolling purposes, a page of a field is the
+ height of its visible part.</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="EDITREQ" id="EDITREQ">18.6.5.
+ Editing Requests</a></h4>
+
+ <p>When you pass the forms driver an ASCII character, it
+ is treated as a request to add the character to the
+ field's data buffer. Whether this is an insertion or a
+ replacement depends on the field's edit mode (insertion
+ is the default.</p>
+
+ <p>The following requests support editing the field and
+ changing the edit mode:</p>
+
+ <ul>
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_INS_MODE</i></span> Set insertion
+ mode.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_OVL_MODE</i></span> Set overlay
+ mode.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_NEW_LINE</i></span> New line request
+ (see below for explanation).</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_INS_CHAR</i></span> Insert space at
+ character location.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_INS_LINE</i></span> Insert blank line
+ at character location.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_DEL_CHAR</i></span> Delete character
+ at cursor.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_DEL_PREV</i></span> Delete previous
+ word at cursor.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_DEL_LINE</i></span> Delete line at
+ cursor.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_DEL_WORD</i></span> Delete word at
+ cursor.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_CLR_EOL</i></span> Clear to end of
+ line.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_CLR_EOF</i></span> Clear to end of
+ field.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_CLR_FIELD</i></span> Clear entire
+ field.</p>
+ </li>
+ </ul>
+
+ <p>The behavior of the REQ_NEW_LINE and REQ_DEL_PREV
+ requests is complicated and partly controlled by a pair
+ of forms options. The special cases are triggered when
+ the cursor is at the beginning of a field, or on the last
+ line of the field.</p>
+
+ <p>First, we consider REQ_NEW_LINE:</p>
+
+ <p>The normal behavior of REQ_NEW_LINE in insert mode is
+ to break the current line at the position of the edit
+ cursor, inserting the portion of the current line after
+ the cursor as a new line following the current and moving
+ the cursor to the beginning of that new line (you may
+ think of this as inserting a newline in the field
+ buffer).</p>
+
+ <p>The normal behavior of REQ_NEW_LINE in overlay mode is
+ to clear the current line from the position of the edit
+ cursor to end of line. The cursor is then moved to the
+ beginning of the next line.</p>
+
+ <p>However, REQ_NEW_LINE at the beginning of a field, or
+ on the last line of a field, instead does a
+ REQ_NEXT_FIELD. O_NL_OVERLOAD option is off, this special
+ action is disabled.</p>
+
+ <p>Now, let us consider REQ_DEL_PREV:</p>
+
+ <p>The normal behavior of REQ_DEL_PREV is to delete the
+ previous character. If insert mode is on, and the cursor
+ is at the start of a line, and the text on that line will
+ fit on the previous one, it instead appends the contents
+ of the current line to the previous one and deletes the
+ current line (you may think of this as deleting a newline
+ from the field buffer).</p>
+
+ <p>However, REQ_DEL_PREV at the beginning of a field is
+ instead treated as a REQ_PREV_FIELD.</p>
+
+ <p>If the O_BS_OVERLOAD option is off, this special
+ action is disabled and the forms driver just returns
+ E_REQUEST_DENIED.</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="ORDERREQ" id=
+ "ORDERREQ">18.6.6. Order Requests</a></h4>
+
+ <p>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>
+
+ <ul>
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_NEXT_CHOICE</i></span> Place the
+ successor value of the current value in the
+ buffer.</p>
+ </li>
+
+ <li>
+ <p><span class="emphasis"><i class=
+ "EMPHASIS">REQ_PREV_CHOICE</i></span> Place the
+ predecessor value of the current value in the
+ buffer.</p>
+ </li>
+ </ul>
+
+ <p>Of the built-in field types, only TYPE_ENUM has
+ built-in successor and predecessor functions. When you
+ define a field type of your own (see Custom Validation
+ Types), you can associate our own ordering functions.</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="APPLICCOMMANDS" id=
+ "APPLICCOMMANDS">18.6.7. Application Commands</a></h4>
+
+ <p>Form requests are represented as integers above the
+ curses value greater than KEY_MAX and less than or equal
+ to the constant MAX_COMMAND. A value within this range
+ gets ignored by form_driver(). So this can be used for
+ any purpose by the application. It can be treated as an
+ application specific action and take corresponding
+ action.</p>
+ </div>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="TOOLS" id="TOOLS">19. Tools and
+ Widget Libraries</a></h2>
+
+ <p>Now that you have seen the capabilities of ncurses and its
+ sister libraries, you are rolling your sleeves up and gearing
+ for a project that heavily manipulates screen. But wait.. It
+ can be pretty difficult to write and maintain complex GUI
+ widgets in plain ncurses or even with the additional
+ libraries. There are some ready-to-use tools and widget
+ libraries that can be used instead of writing your own
+ widgets. You can use some of them, get ideas from the code,
+ or even extend them.</p>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="CDK" id="CDK">19.1. CDK (Curses
+ Development Kit)</a></h3>
+
+ <p>In the author's words</p>
+
+ <p><span class="emphasis"><i class="EMPHASIS">CDK stands
+ for 'Curses Development Kit' and it currently contains 21
+ ready to use widgets which facilitate the speedy
+ development of full screen curses programs.</i></span></p>
+
+ <p>The kit provides some useful widgets, which can be used
+ in your programs directly. It's pretty well written and the
+ documentation is very good. The examples in the examples
+ directory can be a good place to start for beginners. The
+ CDK can be downloaded from <a href=
+ "https://invisible-island.net/cdk/" target=
+ "_top">https://invisible-island.net/cdk/</a> . Follow the
+ instructions in README file to install it.</p>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="WIDGETLIST" id=
+ "WIDGETLIST">19.1.1. Widget List</a></h4>
+
+ <p>The following is the list of widgets provided with cdk
+ and their description.</p>
+ <pre class="PROGRAMLISTING">
+Widget Type Quick Description
===========================================================================
Alphalist Allows a user to select from a list of words, with
the ability to narrow the search list by typing in a
@@ -8368,346 +7133,283 @@ Template Creates a entry field with character sensitive
dates and phone numbers.
Viewer This is a file/information viewer. Very useful
when you need to display loads of information.
-===========================================================================</PRE
-><P
->A few of the widgets are modified by Thomas Dickey in recent versions.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="CDKATTRACT"
->19.1.2. Some Attractive Features</A
-></H4
-><P
->Apart from making our life easier with readily usable widgets, cdk solves one
-frustrating problem with printing multi colored strings, justified strings
-elegantly. Special formatting tags can be embedded in the strings which are
-passed to CDK functions. For Example</P
-><P
->If the string</P
-><PRE
-CLASS="PROGRAMLISTING"
->"&lt;/B/1&gt;This line should have a yellow foreground and a blue
-background.&lt;!1&gt;"</PRE
-><P
->given as a parameter to newCDKLabel(), it prints the line with yellow foreground
-and blue background. There are other tags available for justifying string,
-embedding special drawing characters etc.. Please refer to the man page
-cdk_display(3X) for details. The man page explains the usage with nice examples.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="CDKCONCLUSION"
->19.1.3. Conclusion</A
-></H4
-><P
->All in all, CDK is a well-written package of widgets, which if used properly can
-form a strong frame work for developing complex GUI.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="DIALOG"
->19.2. The dialog</A
-></H3
-><P
->Long long ago, in September 1994, when few people knew linux, Jeff Tranter wrote
-an <A
-HREF="http://www2.linuxjournal.com/lj-issues/issue5/2807.html"
-TARGET="_top"
->article</A
-> on dialog in Linux Journal. He starts the article with these words..</P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Linux is based on the Unix operating system, but also features a number of
-unique and useful kernel features and application programs that often go beyond
-what is available under Unix. One little-known gem is "dialog", a utility for
-creating professional-looking dialog boxes from within shell scripts. This
-article presents a tutorial introduction to the dialog utility, and shows
-examples of how and where it can be used</I
-></SPAN
-></P
-><P
->
-As he explains, dialog is a real gem in making professional-looking dialog boxes
-with ease. It creates a variety of dialog boxes, menus, check lists etc.. It is
-usually installed by default. If not, you can download it from <A
-HREF="http://invisible-island.net/dialog/"
-TARGET="_top"
->Thomas Dickey</A
->'s site. </P
-><P
->The above-mentioned article gives a very good overview of its uses and
-capabilites. The man page has more details. It can be used in variety of
-situations. One good example is building of linux kernel in text mode. Linux
-kernel uses a modified version of dialog tailored for its needs. </P
-><P
->dialog was initially designed to be used with shell scripts. If you want to use
-its functionality in a c program, then you can use libdialog. The documentation
-regarding this is sparse. Definitive reference is the dialog.h header file which
-comes with the library. You may need to hack here and there to get the required
-output. The source is easily customizable. I have used it on a number of
-occasions by modifying the code.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="PERLCURSES"
->19.3. Perl Curses Modules CURSES::FORM and CURSES::WIDGETS</A
-></H3
-><P
->The perl module Curses, Curses::Form and Curses::Widgets give access to curses
-from perl. If you have curses and basic perl is installed, you can get these
-modules from <A
-HREF="http://www.cpan.org/modules/01modules.index.html"
-TARGET="_top"
-> CPAN
-All Modules page</A
->. Get the three zipped modules in the Curses category.
-Once installed you can use these modules from perl scripts like any other
-module. For more information on perl modules see perlmod man page. The above
-modules come with good documentation and they have some demo scripts to test the
-functionality. Though the widgets provided are very rudimentary, these modules
-provide good access to curses library from perl.</P
-><P
->Some of my code examples are converted to perl by Anuradha Ratnaweera and they
-are available in the <TT
-CLASS="LITERAL"
->perl</TT
-> directory.</P
-><P
->
-For more information see man pages Curses(3) , Curses::Form(3) and
-Curses::Widgets(3). These pages are installed only when the above modules are
-acquired and installed.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="JUSTFORFUN"
->20. Just For Fun !!!</A
-></H2
-><P
->This section contains few programs written by me just for fun. They don't
-signify a better programming practice or the best way of using ncurses. They are
-provided here so as to allow beginners to get ideas and add more programs to
-this section. If you have written a couple of nice, simple programs in curses
-and want them to included here, contact <A
-HREF="mailto:ppadala@gmail.com"
-TARGET="_top"
->me</A
->.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="GAMEOFLIFE"
->20.1. The Game of Life</A
-></H3
-><P
->Game of life is a wonder of math. In
-<A
-HREF="http://www.math.com/students/wonders/life/life.html"
-TARGET="_top"
->Paul Callahan</A
->'s words</P
-><PRE
-CLASS="PROGRAMLISTING"
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->The Game of Life (or simply Life) is not a game in the conventional sense. There
+===========================================================================
+</pre>
+
+ <p>A few of the widgets are modified by Thomas Dickey in
+ recent versions.</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="CDKATTRACT" id=
+ "CDKATTRACT">19.1.2. Some Attractive Features</a></h4>
+
+ <p>Apart from making our life easier with readily usable
+ widgets, cdk solves one frustrating problem with printing
+ multi colored strings, justified strings elegantly.
+ Special formatting tags can be embedded in the strings
+ which are passed to CDK functions. For Example</p>
+
+ <p>If the string</p>
+ <pre class="PROGRAMLISTING">
+"&lt;/B/1&gt;This line should have a yellow foreground and a blue
+background.&lt;!1&gt;"
+</pre>
+
+ <p>given as a parameter to newCDKLabel(), it prints the
+ line with yellow foreground and blue background. There
+ are other tags available for justifying string, embedding
+ special drawing characters etc.. Please refer to the man
+ page cdk_display(3X) for details. The man page explains
+ the usage with nice examples.</p>
+ </div>
+
+ <div class="SECT3">
+ <hr>
+
+ <h4 class="SECT3"><a name="CDKCONCLUSION" id=
+ "CDKCONCLUSION">19.1.3. Conclusion</a></h4>
+
+ <p>All in all, CDK is a well-written package of widgets,
+ which if used properly can form a strong frame work for
+ developing complex GUI.</p>
+ </div>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="DIALOG" id="DIALOG">19.2. The
+ dialog</a></h3>
+
+ <p>Long long ago, in September 1994, when few people knew
+ linux, Jeff Tranter wrote an <a href=
+ "http://www2.linuxjournal.com/lj-issues/issue5/2807.html"
+ target="_top">article</a> on dialog in Linux Journal. He
+ starts the article with these words..</p>
+
+ <p><span class="emphasis"><i class="EMPHASIS">Linux is
+ based on the Unix operating system, but also features a
+ number of unique and useful kernel features and application
+ programs that often go beyond what is available under Unix.
+ One little-known gem is "dialog", a utility for creating
+ professional-looking dialog boxes from within shell
+ scripts. This article presents a tutorial introduction to
+ the dialog utility, and shows examples of how and where it
+ can be used</i></span></p>
+
+ <p>As he explains, dialog is a real gem in making
+ professional-looking dialog boxes with ease. It creates a
+ variety of dialog boxes, menus, check lists etc.. It is
+ usually installed by default. If not, you can download it
+ from <a href="https://invisible-island.net/dialog/" target=
+ "_top">Thomas Dickey</a>'s site.</p>
+
+ <p>The above-mentioned article gives a very good overview
+ of its uses and capabilites. The man page has more details.
+ It can be used in variety of situations. One good example
+ is building of linux kernel in text mode. Linux kernel uses
+ a modified version of dialog tailored for its needs.</p>
+
+ <p>dialog was initially designed to be used with shell
+ scripts. If you want to use its functionality in a c
+ program, then you can use libdialog. The documentation
+ regarding this is sparse. Definitive reference is the
+ dialog.h header file which comes with the library. You may
+ need to hack here and there to get the required output. The
+ source is easily customizable. I have used it on a number
+ of occasions by modifying the code.</p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="PERLCURSES" id=
+ "PERLCURSES">19.3. Perl Curses Modules CURSES::FORM and
+ CURSES::WIDGETS</a></h3>
+
+ <p>The perl module Curses, Curses::Form and Curses::Widgets
+ give access to curses from perl. If you have curses and
+ basic perl is installed, you can get these modules from
+ <a href="http://www.cpan.org/modules/01modules.index.html"
+ target="_top">CPAN All Modules page</a>. Get the three
+ zipped modules in the Curses category. Once installed you
+ can use these modules from perl scripts like any other
+ module. For more information on perl modules see perlmod
+ man page. The above modules come with good documentation
+ and they have some demo scripts to test the functionality.
+ Though the widgets provided are very rudimentary, these
+ modules provide good access to curses library from
+ perl.</p>
+
+ <p>Some of my code examples are converted to perl by
+ Anuradha Ratnaweera and they are available in the
+ <tt class="LITERAL">perl</tt> directory.</p>
+
+ <p>For more information see man pages Curses(3) ,
+ Curses::Form(3) and Curses::Widgets(3). These pages are
+ installed only when the above modules are acquired and
+ installed.</p>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="JUSTFORFUN" id="JUSTFORFUN">20.
+ Just For Fun !!!</a></h2>
+
+ <p>This section contains few programs written by me just for
+ fun. They don't signify a better programming practice or the
+ best way of using ncurses. They are provided here so as to
+ allow beginners to get ideas and add more programs to this
+ section. If you have written a couple of nice, simple
+ programs in curses and want them to included here, contact
+ <a href="mailto:ppadala@gmail.com" target="_top">me</a>.</p>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="GAMEOFLIFE" id=
+ "GAMEOFLIFE">20.1. The Game of Life</a></h3>
+
+ <p>Game of life is a wonder of math. In <a href=
+ "http://www.math.com/students/wonders/life/life.html"
+ target="_top">Paul Callahan</a>'s words</p>
+ <pre class="PROGRAMLISTING">
+<span class="emphasis"><i class=
+"EMPHASIS">The Game of Life (or simply Life) is not a game in the conventional sense. There
are no players, and no winning or losing. Once the "pieces" are placed in the
starting position, the rules determine everything that happens later.
Nevertheless, Life is full of surprises! In most cases, it is impossible to look
at a starting position (or pattern) and see what will happen in the future. The
-only way to find out is to follow the rules of the game.</I
-></SPAN
-></PRE
-><P
->This program starts with a simple inverted U pattern and shows how wonderful
-life works. There is a lot of room for improvement in the program. You can let
-the user enter pattern of his choice or even take input from a file. You can
-also change rules and play with a lot of variations. Search on <A
-HREF="http://www.google.com"
-TARGET="_top"
->google</A
-> for interesting information on game
-of life.</P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->File Path: JustForFun/life.c</I
-></SPAN
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="MAGIC"
->20.2. Magic Square</A
-></H3
-><P
->Magic Square, another wonder of math, is very simple to understand but very
-difficult to make. In a magic square sum of the numbers in each row, each column
-is equal. Even diagnol sum can be equal. There are many variations which have
-special properties.</P
-><P
->This program creates a simple magic square of odd order.</P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->File Path: JustForFun/magic.c</I
-></SPAN
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="HANOI"
->20.3. Towers of Hanoi</A
-></H3
-><P
->The famous towers of hanoi solver. The aim of the game is to move the disks on
-the first peg to last peg, using middle peg as a temporary stay. The catch is
-not to place a larger disk over a small disk at any time.</P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->File Path: JustForFun/hanoi.c</I
-></SPAN
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="QUEENS"
->20.4. Queens Puzzle</A
-></H3
-><P
->The objective of the famous N-Queen puzzle is to put N queens on a N X N chess
-board without attacking each other. </P
-><P
->This program solves it with a simple backtracking technique.</P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->File Path: JustForFun/queens.c</I
-></SPAN
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="SHUFFLE"
->20.5. Shuffle</A
-></H3
-><P
->A fun game, if you have time to kill. </P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->File Path: JustForFun/shuffle.c</I
-></SPAN
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="TT"
->20.6. Typing Tutor</A
-></H3
-><P
->A simple typing tutor, I created more out of need than for ease of use. If you
-know how to put your fingers correctly on the keyboard, but lack practice, this
-can be helpful. </P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->File Path: JustForFun/tt.c</I
-></SPAN
-></P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="REF"
->21. References</A
-></H2
-><P
-></P
-><UL
-><LI
-><P
->NCURSES man pages </P
-></LI
-><LI
-><P
->NCURSES FAQ at <A
-HREF="http://invisible-island.net/ncurses/ncurses.faq.html"
-TARGET="_top"
->http://invisible-island.net/ncurses/ncurses.faq.html</A
->
- </P
-></LI
-><LI
-><P
->Writing programs with NCURSES by Eric Raymond and Zeyd M.
-Ben-Halim at
-<A
-HREF="http://invisible-island.net/ncurses/ncurses-intro.html"
-TARGET="_top"
->http://invisible-island.net/ncurses/ncurses-intro.html</A
-> - somewhat
-obsolete. I was inspired by this document and the structure of this HOWTO
-follows from the original document</P
-></LI
-></UL
-></DIV
-></DIV
-></BODY
-></HTML
-> \ No newline at end of file
+only way to find out is to follow the rules of the game.</i></span>
+</pre>
+
+ <p>This program starts with a simple inverted U pattern and
+ shows how wonderful life works. There is a lot of room for
+ improvement in the program. You can let the user enter
+ pattern of his choice or even take input from a file. You
+ can also change rules and play with a lot of variations.
+ Search on <a href="http://www.google.com" target=
+ "_top">google</a> for interesting information on game of
+ life.</p>
+
+ <p><span class="emphasis"><i class="EMPHASIS">File Path:
+ JustForFun/life.c</i></span></p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="MAGIC" id="MAGIC">20.2. Magic
+ Square</a></h3>
+
+ <p>Magic Square, another wonder of math, is very simple to
+ understand but very difficult to make. In a magic square
+ sum of the numbers in each row, each column is equal. Even
+ diagnol sum can be equal. There are many variations which
+ have special properties.</p>
+
+ <p>This program creates a simple magic square of odd
+ order.</p>
+
+ <p><span class="emphasis"><i class="EMPHASIS">File Path:
+ JustForFun/magic.c</i></span></p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="HANOI" id="HANOI">20.3. Towers
+ of Hanoi</a></h3>
+
+ <p>The famous towers of hanoi solver. The aim of the game
+ is to move the disks on the first peg to last peg, using
+ middle peg as a temporary stay. The catch is not to place a
+ larger disk over a small disk at any time.</p>
+
+ <p><span class="emphasis"><i class="EMPHASIS">File Path:
+ JustForFun/hanoi.c</i></span></p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="QUEENS" id="QUEENS">20.4. Queens
+ Puzzle</a></h3>
+
+ <p>The objective of the famous N-Queen puzzle is to put N
+ queens on a N X N chess board without attacking each
+ other.</p>
+
+ <p>This program solves it with a simple backtracking
+ technique.</p>
+
+ <p><span class="emphasis"><i class="EMPHASIS">File Path:
+ JustForFun/queens.c</i></span></p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="SHUFFLE" id="SHUFFLE">20.5.
+ Shuffle</a></h3>
+
+ <p>A fun game, if you have time to kill.</p>
+
+ <p><span class="emphasis"><i class="EMPHASIS">File Path:
+ JustForFun/shuffle.c</i></span></p>
+ </div>
+
+ <div class="SECT2">
+ <hr>
+
+ <h3 class="SECT2"><a name="TT" id="TT">20.6. Typing
+ Tutor</a></h3>
+
+ <p>A simple typing tutor, I created more out of need than
+ for ease of use. If you know how to put your fingers
+ correctly on the keyboard, but lack practice, this can be
+ helpful.</p>
+
+ <p><span class="emphasis"><i class="EMPHASIS">File Path:
+ JustForFun/tt.c</i></span></p>
+ </div>
+ </div>
+
+ <div class="SECT1">
+ <hr>
+
+ <h2 class="SECT1"><a name="REF" id="REF">21.
+ References</a></h2>
+
+ <ul>
+ <li>
+ <p>NCURSES man pages</p>
+ </li>
+
+ <li>
+ <p>NCURSES FAQ at <a href=
+ "https://invisible-island.net/ncurses/ncurses.faq.html"
+ target=
+ "_top">https://invisible-island.net/ncurses/ncurses.faq.html</a></p>
+ </li>
+
+ <li>
+ <p>Writing programs with NCURSES by Eric Raymond and Zeyd
+ M. Ben-Halim at <a href=
+ "https://invisible-island.net/ncurses/ncurses-intro.html"
+ target=
+ "_top">https://invisible-island.net/ncurses/ncurses-intro.html</a>
+ - somewhat obsolete. I was inspired by this document and
+ the structure of this HOWTO follows from the original
+ document</p>
+ </li>
+ </ul>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/doc/html/ada/files/T.htm b/doc/html/ada/files/T.htm
index dcb0cd42bc03..b54027bb1bea 100644
--- a/doc/html/ada/files/T.htm
+++ b/doc/html/ada/files/T.htm
@@ -78,5 +78,6 @@
<LI><A HREF="../terminal_interface-curses-trace__ads.htm" TARGET="main">terminal_interface-curses-trace.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-curses_constants__ads.htm" TARGET="main">terminal_interface-curses_constants.ads</A>
<LI><A HREF="../terminal_interface__ads.htm" TARGET="main">terminal_interface.ads</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/A.htm b/doc/html/ada/funcs/A.htm
index 73f0dd41be23..e784abdbe7c7 100644
--- a/doc/html/ada/funcs/A.htm
+++ b/doc/html/ada/funcs/A.htm
@@ -8,21 +8,22 @@
<H2>Functions - A</H2>
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
-<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_129_13" TARGET="main">Above</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_524_14" TARGET="main">Add - terminal_interface-curses.ads:524</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_529_14" TARGET="main">Add - terminal_interface-curses.ads:529</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_535_14" TARGET="main">Add - terminal_interface-curses.ads:535</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_543_14" TARGET="main">Add - terminal_interface-curses.ads:543</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_654_14" TARGET="main">Add - terminal_interface-curses.ads:654</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_663_14" TARGET="main">Add - terminal_interface-curses.ads:663</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_678_14" TARGET="main">Add - terminal_interface-curses.ads:678</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_687_14" TARGET="main">Add - terminal_interface-curses.ads:687</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1308_14" TARGET="main">Add_Character_To_Pad_And_Echo_It - terminal_interface-curses.ads:1308</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1313_14" TARGET="main">Add_Character_To_Pad_And_Echo_It - terminal_interface-curses.ads:1313</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_552_14" TARGET="main">Add_With_Immediate_Echo - terminal_interface-curses.ads:552</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_558_14" TARGET="main">Add_With_Immediate_Echo - terminal_interface-curses.ads:558</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_959_16" TARGET="main">Ahead</A>
+<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_128_13" TARGET="main">Above</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_567_13" TARGET="main">ACS_Map</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_693_14" TARGET="main">Add - terminal_interface-curses.ads:693</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_698_14" TARGET="main">Add - terminal_interface-curses.ads:698</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_704_14" TARGET="main">Add - terminal_interface-curses.ads:704</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_712_14" TARGET="main">Add - terminal_interface-curses.ads:712</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_823_14" TARGET="main">Add - terminal_interface-curses.ads:823</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_832_14" TARGET="main">Add - terminal_interface-curses.ads:832</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_847_14" TARGET="main">Add - terminal_interface-curses.ads:847</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_856_14" TARGET="main">Add - terminal_interface-curses.ads:856</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1477_14" TARGET="main">Add_Character_To_Pad_And_Echo_It - terminal_interface-curses.ads:1477</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1482_14" TARGET="main">Add_Character_To_Pad_And_Echo_It - terminal_interface-curses.ads:1482</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_721_14" TARGET="main">Add_With_Immediate_Echo - terminal_interface-curses.ads:721</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_727_14" TARGET="main">Add_With_Immediate_Echo - terminal_interface-curses.ads:727</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_841_16" TARGET="main">Ahead</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types-user__adb.htm#ref_50_16" TARGET="main">Allocate_Arg</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1017_14" TARGET="main">Allow_Scrolling</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1837_14" TARGET="main">Assume_Default_Colors</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1186_14" TARGET="main">Allow_Scrolling</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_2008_14" TARGET="main">Assume_Default_Colors</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/B.htm b/doc/html/ada/funcs/B.htm
index 511e6d0bb6d1..7fb03a010e6b 100644
--- a/doc/html/ada/funcs/B.htm
+++ b/doc/html/ada/funcs/B.htm
@@ -8,18 +8,18 @@
<H2>Functions - B</H2>
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_456_14" TARGET="main">Background - terminal_interface-curses-forms.ads:456</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_461_14" TARGET="main">Background - terminal_interface-curses-forms.ads:461</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_453_14" TARGET="main">Background - terminal_interface-curses-menus.ads:453</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_458_14" TARGET="main">Background - terminal_interface-curses-menus.ads:458</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2052_16" TARGET="main">Baud</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1648_13" TARGET="main">Baudrate</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_871_14" TARGET="main">Beep</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_455_14" TARGET="main">Background - terminal_interface-curses-forms.ads:455</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_460_14" TARGET="main">Background - terminal_interface-curses-forms.ads:460</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_449_14" TARGET="main">Background - terminal_interface-curses-menus.ads:449</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_454_14" TARGET="main">Background - terminal_interface-curses-menus.ads:454</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2064_16" TARGET="main">Baud</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1817_13" TARGET="main">Baudrate</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1040_14" TARGET="main">Beep</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_751_16" TARGET="main">Beeper</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_975_16" TARGET="main">Behind</A>
-<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_134_13" TARGET="main">Below</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_705_14" TARGET="main">Border</A>
-<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_77_14" TARGET="main">Bottom</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_857_16" TARGET="main">Behind</A>
+<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_133_13" TARGET="main">Below</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_874_14" TARGET="main">Border</A>
+<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_76_14" TARGET="main">Bottom</A>
<LI><A HREF="../terminal_interface-curses-panels__adb.htm#ref_65_16" TARGET="main">Bottompanel</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_721_14" TARGET="main">Box</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_890_14" TARGET="main">Box</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/C.htm b/doc/html/ada/funcs/C.htm
index 12c97fb5102b..d1e5312e2ec5 100644
--- a/doc/html/ada/funcs/C.htm
+++ b/doc/html/ada/funcs/C.htm
@@ -8,53 +8,56 @@
<H2>Functions - C</H2>
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2213_16" TARGET="main">Canchangecolor</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1740_13" TARGET="main">Can_Change_Color</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2228_16" TARGET="main">Canchangecolor</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1909_13" TARGET="main">Can_Change_Color</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_771_16" TARGET="main">Cbreak</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_384_13" TARGET="main">Changed</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_846_14" TARGET="main">Change_Attributes - terminal_interface-curses.ads:846</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_855_14" TARGET="main">Change_Attributes - terminal_interface-curses.ads:855</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1117_14" TARGET="main">Change_Background</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1153_14" TARGET="main">Change_Lines_Status</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_383_13" TARGET="main">Changed</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1015_14" TARGET="main">Change_Attributes - terminal_interface-curses.ads:1015</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1024_14" TARGET="main">Change_Attributes - terminal_interface-curses.ads:1024</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1286_14" TARGET="main">Change_Background</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1322_14" TARGET="main">Change_Lines_Status</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm#ref_185_13" TARGET="main">Char_Check_Router</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1081_14" TARGET="main">Clear</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_968_16" TARGET="main">Clear_Ok</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_982_14" TARGET="main">Clear_On_Next_Update</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1534_14" TARGET="main">Clear_Soft_Label_Keys</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1095_14" TARGET="main">Clear_To_End_Of_Line</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1088_14" TARGET="main">Clear_To_End_Of_Screen</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1250_14" TARGET="main">Clear</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_969_16" TARGET="main">Clear_Ok</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1151_14" TARGET="main">Clear_On_Next_Update</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1703_14" TARGET="main">Clear_Soft_Label_Keys</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1264_14" TARGET="main">Clear_To_End_Of_Line</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1257_14" TARGET="main">Clear_To_End_Of_Screen</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_98_13" TARGET="main">Col - terminal_interface-curses-text_io.ads:98</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_99_13" TARGET="main">Col - terminal_interface-curses-text_io.ads:99</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2230_16" TARGET="main">Colorcontent</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1745_14" TARGET="main">Color_Content</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_416_13" TARGET="main">Columns</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1175_14" TARGET="main">Copy</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1269_16" TARGET="main">Copywin</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2245_16" TARGET="main">Colorcontent</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2381_16" TARGET="main">COLORS_As_Function</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1914_14" TARGET="main">Color_Content</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2389_16" TARGET="main">COLOR_PAIRS_As_Function</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2364_16" TARGET="main">COLS_As_Function</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_553_13" TARGET="main">Columns</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1344_14" TARGET="main">Copy</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1274_16" TARGET="main">Copywin</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm#ref_167_13" TARGET="main">Copy_Arg</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_774_16" TARGET="main">Count - terminal_interface-curses-forms.adb:774</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_912_16" TARGET="main">Count - terminal_interface-curses-menus.adb:912</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_680_16" TARGET="main">Count - terminal_interface-curses-forms.adb:680</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_796_16" TARGET="main">Count - terminal_interface-curses-menus.adb:796</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_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#ref_64_13" TARGET="main">Create - terminal_interface-curses-forms-field_types-enumeration.ads:64</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_295_13" TARGET="main">Create - terminal_interface-curses-forms.ads:295</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_625_13" TARGET="main">Create - terminal_interface-curses-forms.ads:625</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_193_13" TARGET="main">Create - terminal_interface-curses-menus.ads:193</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_640_13" TARGET="main">Create - terminal_interface-curses-menus.ads:640</A>
-<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_67_13" TARGET="main">Create - terminal_interface-curses-panels.ads:67</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_570_13" TARGET="main">Create - terminal_interface-curses.ads:570</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_731_13" TARGET="main">Current - terminal_interface-curses-forms.ads:731</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_296_13" TARGET="main">Current - terminal_interface-curses-menus.ads:296</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_1040_16" TARGET="main">Current_Fld</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_482_13" TARGET="main">Current_Window</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_300_16" TARGET="main">Curr_Item</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2460_17" TARGET="main">curses_freeall</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1860_14" TARGET="main">Curses_Free_All</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1847_13" TARGET="main">Curses_Version</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2452_16" TARGET="main">curses_versionC</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2317_16" TARGET="main">Curs_Set</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2438_16" TARGET="main">C_Assume_Default_Colors</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_294_13" TARGET="main">Create - terminal_interface-curses-forms.ads:294</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_624_13" TARGET="main">Create - terminal_interface-curses-forms.ads:624</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_189_13" TARGET="main">Create - terminal_interface-curses-menus.ads:189</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_636_13" TARGET="main">Create - terminal_interface-curses-menus.ads:636</A>
+<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_66_13" TARGET="main">Create - terminal_interface-curses-panels.ads:66</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_739_13" TARGET="main">Create - terminal_interface-curses.ads:739</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_730_13" TARGET="main">Current - terminal_interface-curses-forms.ads:730</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_292_13" TARGET="main">Current - terminal_interface-curses-menus.ads:292</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_916_16" TARGET="main">Current_Fld</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_650_13" TARGET="main">Current_Window</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_260_16" TARGET="main">Curr_Item</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2459_17" TARGET="main">curses_freeall</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_2031_14" TARGET="main">Curses_Free_All</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_2018_13" TARGET="main">Curses_Version</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2451_16" TARGET="main">curses_versionC</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2333_16" TARGET="main">Curs_Set</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2437_16" TARGET="main">C_Assume_Default_Colors</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm#ref_148_13" TARGET="main">C_Builtin_Router</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm#ref_149_13" TARGET="main">C_Choice_Router</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_78_13" TARGET="main">C_Generic_Choice</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types-user__ads.htm#ref_79_13" TARGET="main">C_Generic_Type</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2426_16" TARGET="main">C_Use_Default_Colors</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2425_16" TARGET="main">C_Use_Default_Colors</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/D.htm b/doc/html/ada/funcs/D.htm
index 4f0759d3afd3..58db88366525 100644
--- a/doc/html/ada/funcs/D.htm
+++ b/doc/html/ada/funcs/D.htm
@@ -8,44 +8,44 @@
<H2>Functions - D</H2>
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_694_13" TARGET="main">Data_Ahead</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_699_13" TARGET="main">Data_Behind</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_103_13" TARGET="main">Default_Field_Options</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_127_13" TARGET="main">Default_Form_Options</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_170_13" TARGET="main">Default_Item_Options</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_147_13" TARGET="main">Default_Menu_Options</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1597_14" TARGET="main">Define_Key</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2000_16" TARGET="main">Defkey</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2249_16" TARGET="main">Def_Prog_Mode</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2251_16" TARGET="main">Def_Shell_Mode</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2032_16" TARGET="main">Delayoutput</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1634_14" TARGET="main">Delay_Output</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_317_14" TARGET="main">Delete - terminal_interface-curses-forms.ads:317</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_636_14" TARGET="main">Delete - terminal_interface-curses-forms.ads:636</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_205_14" TARGET="main">Delete - terminal_interface-curses-menus.ads:205</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_647_14" TARGET="main">Delete - terminal_interface-curses-menus.ads:647</A>
-<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_139_14" TARGET="main">Delete - terminal_interface-curses-panels.ads:139</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_589_14" TARGET="main">Delete - terminal_interface-curses.ads:589</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1335_14" TARGET="main">Delete_Character - terminal_interface-curses.ads:1335</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1340_14" TARGET="main">Delete_Character - terminal_interface-curses.ads:1340</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1213_14" TARGET="main">Delete_Line</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_693_13" TARGET="main">Data_Ahead</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_698_13" TARGET="main">Data_Behind</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_104_13" TARGET="main">Default_Field_Options</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_126_13" TARGET="main">Default_Form_Options</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_166_13" TARGET="main">Default_Item_Options</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_145_13" TARGET="main">Default_Menu_Options</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1766_14" TARGET="main">Define_Key</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2012_16" TARGET="main">Defkey</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2265_16" TARGET="main">Def_Prog_Mode</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2267_16" TARGET="main">Def_Shell_Mode</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2044_16" TARGET="main">Delayoutput</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1803_14" TARGET="main">Delay_Output</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_316_14" TARGET="main">Delete - terminal_interface-curses-forms.ads:316</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_635_14" TARGET="main">Delete - terminal_interface-curses-forms.ads:635</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_201_14" TARGET="main">Delete - terminal_interface-curses-menus.ads:201</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_643_14" TARGET="main">Delete - terminal_interface-curses-menus.ads:643</A>
+<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_138_14" TARGET="main">Delete - terminal_interface-curses-panels.ads:138</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_758_14" TARGET="main">Delete - terminal_interface-curses.ads:758</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1504_14" TARGET="main">Delete_Character - terminal_interface-curses.ads:1504</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1509_14" TARGET="main">Delete_Character - terminal_interface-curses.ads:1509</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1382_14" TARGET="main">Delete_Line</A>
<LI><A HREF="../terminal_interface-curses-panels__adb.htm#ref_156_16" TARGET="main">Del_Panel</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_605_13" TARGET="main">Derived_Window</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_774_13" TARGET="main">Derived_Window</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_298_16" TARGET="main">Derwin</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_126_16" TARGET="main">Descname - terminal_interface-curses-menus.adb:126</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_270_16" TARGET="main">Descname - terminal_interface-curses-menus.adb:270</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_278_16" TARGET="main">Descname - terminal_interface-curses-menus.adb:278</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_107_16" TARGET="main">Descname - terminal_interface-curses-menus.adb:107</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_233_16" TARGET="main">Descname - terminal_interface-curses-menus.adb:233</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_241_16" TARGET="main">Descname - terminal_interface-curses-menus.adb:241</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_272_14" TARGET="main">Description - terminal_interface-curses-menus.ads:272</A>
<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_276_14" TARGET="main">Description - terminal_interface-curses-menus.ads:276</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_280_14" TARGET="main">Description - terminal_interface-curses-menus.ads:280</A>
-<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#ref_131_14" TARGET="main">Dispatch_Event</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1059_16" TARGET="main">Do_Update</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_713_13" TARGET="main">Driver - terminal_interface-curses-forms.ads:713</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_662_13" TARGET="main">Driver - terminal_interface-curses-menus.ads:662</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_973_16" TARGET="main">Driver - terminal_interface-curses-menus.adb:973</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_323_13" TARGET="main">Duplicate - terminal_interface-curses-forms.ads:323</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_615_13" TARGET="main">Duplicate - terminal_interface-curses.ads:615</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#ref_129_14" TARGET="main">Dispatch_Event</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1061_16" TARGET="main">Do_Update</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_712_13" TARGET="main">Driver - terminal_interface-curses-forms.ads:712</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_658_13" TARGET="main">Driver - terminal_interface-curses-menus.ads:658</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_854_16" TARGET="main">Driver - terminal_interface-curses-menus.adb:854</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_322_13" TARGET="main">Duplicate - terminal_interface-curses-forms.ads:322</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_784_13" TARGET="main">Duplicate - terminal_interface-curses.ads:784</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_321_16" TARGET="main">Dupwin</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_151_16" TARGET="main">Dup_Field</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_495_14" TARGET="main">Dynamic_Info</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_559_16" TARGET="main">Dyn_Info</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_130_16" TARGET="main">Dup_Field</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_494_14" TARGET="main">Dynamic_Info</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_494_16" TARGET="main">Dyn_Info</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/E.htm b/doc/html/ada/funcs/E.htm
index b1afc3ed28b6..c39c728c879d 100644
--- a/doc/html/ada/funcs/E.htm
+++ b/doc/html/ada/funcs/E.htm
@@ -9,14 +9,14 @@
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_809_16" TARGET="main">Echo</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1587_14" TARGET="main">Enable_Key</A>
-<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_150_13" TARGET="main">Enclosed_In_Window</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_113_16" TARGET="main">Endwin</A>
-<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_124_14" TARGET="main">End_Mouse</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_498_14" TARGET="main">End_Screen</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_496_14" TARGET="main">End_Windows</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1075_14" TARGET="main">Erase</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2060_16" TARGET="main">Erasechar</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1653_13" TARGET="main">Erase_Character</A>
-<LI><A HREF="../terminal_interface-curses-aux__ads.htm#ref_96_14" TARGET="main">Eti_Exception</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1756_14" TARGET="main">Enable_Key</A>
+<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_146_13" TARGET="main">Enclosed_In_Window</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_112_16" TARGET="main">Endwin</A>
+<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_120_14" TARGET="main">End_Mouse</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_667_14" TARGET="main">End_Screen</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_665_14" TARGET="main">End_Windows</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1244_14" TARGET="main">Erase</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2072_16" TARGET="main">Erasechar</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1822_13" TARGET="main">Erase_Character</A>
+<LI><A HREF="../terminal_interface-curses-aux__ads.htm#ref_86_14" TARGET="main">Eti_Exception</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/F.htm b/doc/html/ada/funcs/F.htm
index 9d2ca6ca0aa1..36a913a84f2c 100644
--- a/doc/html/ada/funcs/F.htm
+++ b/doc/html/ada/funcs/F.htm
@@ -8,52 +8,52 @@
<H2>Functions - F</H2>
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_603_13" TARGET="main">Fields</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_468_16" TARGET="main">Field_Back - terminal_interface-curses-forms.adb:468</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_478_16" TARGET="main">Field_Back - terminal_interface-curses-forms.adb:478</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_255_16" TARGET="main">Field_Buffer - terminal_interface-curses-forms.adb:255</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_266_16" TARGET="main">Field_Buffer - terminal_interface-curses-forms.adb:266</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_602_13" TARGET="main">Fields</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_410_16" TARGET="main">Field_Back - terminal_interface-curses-forms.adb:410</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_420_16" TARGET="main">Field_Back - terminal_interface-curses-forms.adb:420</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_222_16" TARGET="main">Field_Buffer - terminal_interface-curses-forms.adb:222</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_233_16" TARGET="main">Field_Buffer - terminal_interface-curses-forms.adb:233</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm#ref_177_13" TARGET="main">Field_Check_Router</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_609_13" TARGET="main">Field_Count</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_424_16" TARGET="main">Field_Fore - terminal_interface-curses-forms.adb:424</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_434_16" TARGET="main">Field_Fore - terminal_interface-curses-forms.adb:434</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_213_16" TARGET="main">Field_Just</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_374_16" TARGET="main">Field_Opts</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_352_16" TARGET="main">Field_Opts_Off</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_349_16" TARGET="main">Field_Opts_On</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_507_16" TARGET="main">Field_Pad</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_293_16" TARGET="main">Field_Status</A>
-<LI><A HREF="../terminal_interface-curses-forms-field_user_data__adb.htm#ref_72_16" TARGET="main">Field_Userptr</A>
-<LI><A HREF="../terminal_interface-curses-aux__ads.htm#ref_116_14" TARGET="main">Fill_String - terminal_interface-curses-aux.ads:116</A>
-<LI><A HREF="../terminal_interface-curses-aux__ads.htm#ref_121_13" TARGET="main">Fill_String - terminal_interface-curses-aux.ads:121</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_608_13" TARGET="main">Field_Count</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_371_16" TARGET="main">Field_Fore - terminal_interface-curses-forms.adb:371</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_381_16" TARGET="main">Field_Fore - terminal_interface-curses-forms.adb:381</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_188_16" TARGET="main">Field_Just</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_327_16" TARGET="main">Field_Opts</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_310_16" TARGET="main">Field_Opts_Off</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_307_16" TARGET="main">Field_Opts_On</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_446_16" TARGET="main">Field_Pad</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_259_16" TARGET="main">Field_Status</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_user_data__adb.htm#ref_67_16" TARGET="main">Field_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-aux__ads.htm#ref_90_14" TARGET="main">Fill_String - terminal_interface-curses-aux.ads:90</A>
+<LI><A HREF="../terminal_interface-curses-aux__ads.htm#ref_95_13" TARGET="main">Fill_String - terminal_interface-curses-aux.ads:95</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_761_16" TARGET="main">Flash</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_876_14" TARGET="main">Flash_Screen</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_528_16" TARGET="main">Fld_Info</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1045_14" TARGET="main">Flash_Screen</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_467_16" TARGET="main">Fld_Info</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_65_14" TARGET="main">Flush - terminal_interface-curses-text_io.ads:65</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_66_14" TARGET="main">Flush - terminal_interface-curses-text_io.ads:66</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2042_16" TARGET="main">Flushinp</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1639_14" TARGET="main">Flush_Input</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_436_14" TARGET="main">Foreground - terminal_interface-curses-forms.ads:436</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_441_14" TARGET="main">Foreground - terminal_interface-curses-forms.ads:441</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_433_14" TARGET="main">Foreground - terminal_interface-curses-menus.ads:433</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_438_14" TARGET="main">Foreground - terminal_interface-curses-menus.ads:438</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_553_14" TARGET="main">Format</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_889_16" TARGET="main">Form_Opts</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_867_16" TARGET="main">Form_Opts_Off</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_864_16" TARGET="main">Form_Opts_On</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_84_16" TARGET="main">Form_Request_Name - terminal_interface-curses-forms.adb:84</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_92_16" TARGET="main">Form_Request_Name - terminal_interface-curses-forms.adb:92</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_628_16" TARGET="main">Form_Sub</A>
-<LI><A HREF="../terminal_interface-curses-forms-form_user_data__adb.htm#ref_73_16" TARGET="main">Form_Userptr</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_600_16" TARGET="main">Form_Win</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_138_14" TARGET="main">Free - terminal_interface-curses-forms.ads:138</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_182_14" TARGET="main">Free - terminal_interface-curses-menus.ads:182</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_825_16" TARGET="main">Free - terminal_interface-curses-forms.adb:825</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_958_16" TARGET="main">Free - terminal_interface-curses-menus.adb:958</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_131_16" TARGET="main">Freeitem</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2054_16" TARGET="main">Flushinp</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1808_14" TARGET="main">Flush_Input</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_435_14" TARGET="main">Foreground - terminal_interface-curses-forms.ads:435</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_440_14" TARGET="main">Foreground - terminal_interface-curses-forms.ads:440</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_429_14" TARGET="main">Foreground - terminal_interface-curses-menus.ads:429</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_434_14" TARGET="main">Foreground - terminal_interface-curses-menus.ads:434</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_549_14" TARGET="main">Format</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_779_16" TARGET="main">Form_Opts</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_762_16" TARGET="main">Form_Opts_Off</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_759_16" TARGET="main">Form_Opts_On</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_67_16" TARGET="main">Form_Request_Name - terminal_interface-curses-forms.adb:67</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_75_16" TARGET="main">Form_Request_Name - terminal_interface-curses-forms.adb:75</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_553_16" TARGET="main">Form_Sub</A>
+<LI><A HREF="../terminal_interface-curses-forms-form_user_data__adb.htm#ref_68_16" TARGET="main">Form_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_528_16" TARGET="main">Form_Win</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_137_14" TARGET="main">Free - terminal_interface-curses-forms.ads:137</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_178_14" TARGET="main">Free - terminal_interface-curses-menus.ads:178</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_728_16" TARGET="main">Free - terminal_interface-curses-forms.adb:728</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_842_16" TARGET="main">Free - terminal_interface-curses-menus.adb:842</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_112_16" TARGET="main">Freeitem</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm#ref_172_14" TARGET="main">Free_Arg</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_133_16" TARGET="main">Free_Field</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_996_16" TARGET="main">Frm_Driver</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_782_13" TARGET="main">Function_Key</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_787_13" TARGET="main">Function_Key_Code</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_116_16" TARGET="main">Free_Field</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_878_16" TARGET="main">Frm_Driver</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_951_13" TARGET="main">Function_Key</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_956_13" TARGET="main">Function_Key_Code</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/G.htm b/doc/html/ada/funcs/G.htm
index 56131949d4ea..05da12d02da4 100644
--- a/doc/html/ada/funcs/G.htm
+++ b/doc/html/ada/funcs/G.htm
@@ -12,72 +12,72 @@
<LI><A HREF="../terminal_interface-curses-forms-field_types-user__ads.htm#ref_81_13" TARGET="main">Generic_Field_Check</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_80_13" TARGET="main">Generic_Next</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_87_13" TARGET="main">Generic_Prev</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1464_14" TARGET="main">Get - terminal_interface-curses.ads:1464</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1475_14" TARGET="main">Get - terminal_interface-curses.ads:1475</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1370_16" TARGET="main">GetBegX</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1367_16" TARGET="main">GetBegY</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1388_16" TARGET="main">GetCurX</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1385_16" TARGET="main">GetCurY</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1352_16" TARGET="main">GetMaxX</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1349_16" TARGET="main">GetMaxY</A>
-<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#ref_66_16" TARGET="main">Getmouse</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1407_16" TARGET="main">GetParX</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1404_16" TARGET="main">GetParY</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1633_14" TARGET="main">Get - terminal_interface-curses.ads:1633</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1644_14" TARGET="main">Get - terminal_interface-curses.ads:1644</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1376_16" TARGET="main">GetBegX</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1373_16" TARGET="main">GetBegY</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1394_16" TARGET="main">GetCurX</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1391_16" TARGET="main">GetCurY</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1358_16" TARGET="main">GetMaxX</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1355_16" TARGET="main">GetMaxY</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#ref_64_16" TARGET="main">Getmouse</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1413_16" TARGET="main">GetParX</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1410_16" TARGET="main">GetParY</A>
<LI><A HREF="../terminal_interface-curses-putwin__adb.htm#ref_65_16" TARGET="main">getwin</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#ref_61_13" TARGET="main">Get_Arg</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1126_13" TARGET="main">Get_Background</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_364_14" TARGET="main">Get_Buffer - terminal_interface-curses-forms.ads:364</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_370_13" TARGET="main">Get_Buffer - terminal_interface-curses-forms.ads:370</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_827_13" TARGET="main">Get_Character_Attribute - terminal_interface-curses.ads:827</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_833_13" TARGET="main">Get_Character_Attribute - terminal_interface-curses.ads:833</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1245_14" TARGET="main">Get_Cursor_Position</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1295_13" TARGET="main">Get_Background</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_363_14" TARGET="main">Get_Buffer - terminal_interface-curses-forms.ads:363</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_369_13" TARGET="main">Get_Buffer - terminal_interface-curses-forms.ads:369</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_996_13" TARGET="main">Get_Character_Attribute - terminal_interface-curses.ads:996</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1002_13" TARGET="main">Get_Character_Attribute - terminal_interface-curses.ads:1002</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1414_14" TARGET="main">Get_Cursor_Position</A>
<LI><A HREF="../terminal_interface-curses-termcap__ads.htm#ref_59_13" TARGET="main">Get_Entry</A>
-<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_133_14" TARGET="main">Get_Event</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_1084_16" TARGET="main">Get_Fieldindex</A>
+<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_129_14" TARGET="main">Get_Event</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_957_16" TARGET="main">Get_Fieldindex</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#ref_58_13" TARGET="main">Get_Fieldtype</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_567_13" TARGET="main">Get_Field_Init_Hook</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_572_13" TARGET="main">Get_Field_Term_Hook</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_566_13" TARGET="main">Get_Field_Init_Hook</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_571_13" TARGET="main">Get_Field_Term_Hook</A>
<LI><A HREF="../terminal_interface-curses-termcap__ads.htm#ref_63_13" TARGET="main">Get_Flag - terminal_interface-curses-termcap.ads:63</A>
<LI><A HREF="../terminal_interface-curses-terminfo__ads.htm#ref_64_13" TARGET="main">Get_Flag - terminal_interface-curses-terminfo.ads:64</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_577_13" TARGET="main">Get_Form_Init_Hook</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_582_13" TARGET="main">Get_Form_Term_Hook</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_747_13" TARGET="main">Get_Index - terminal_interface-curses-forms.ads:747</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_312_13" TARGET="main">Get_Index - terminal_interface-curses-menus.ads:312</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_340_16" TARGET="main">Get_Itemindex</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_591_13" TARGET="main">Get_Item_Init_Hook</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_596_13" TARGET="main">Get_Item_Term_Hook</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_347_13" TARGET="main">Get_Justification</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_916_13" TARGET="main">Get_KeyPad_Mode</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_752_13" TARGET="main">Get_Keystroke</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_601_13" TARGET="main">Get_Menu_Init_Hook</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_532_16" TARGET="main">Get_Menu_Mark - terminal_interface-curses-menus.adb:532</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_540_16" TARGET="main">Get_Menu_Mark - terminal_interface-curses-menus.adb:540</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_606_13" TARGET="main">Get_Menu_Term_Hook</A>
-<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_129_13" TARGET="main">Get_Mouse</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_576_13" TARGET="main">Get_Form_Init_Hook</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_581_13" TARGET="main">Get_Form_Term_Hook</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_746_13" TARGET="main">Get_Index - terminal_interface-curses-forms.ads:746</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_308_13" TARGET="main">Get_Index - terminal_interface-curses-menus.ads:308</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_297_16" TARGET="main">Get_Itemindex</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_587_13" TARGET="main">Get_Item_Init_Hook</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_592_13" TARGET="main">Get_Item_Term_Hook</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_346_13" TARGET="main">Get_Justification</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1085_13" TARGET="main">Get_KeyPad_Mode</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_921_13" TARGET="main">Get_Keystroke</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_597_13" TARGET="main">Get_Menu_Init_Hook</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_458_16" TARGET="main">Get_Menu_Mark - terminal_interface-curses-menus.adb:458</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_466_16" TARGET="main">Get_Menu_Mark - terminal_interface-curses-menus.adb:466</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_602_13" TARGET="main">Get_Menu_Term_Hook</A>
+<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_125_13" TARGET="main">Get_Mouse</A>
<LI><A HREF="../terminal_interface-curses-termcap__ads.htm#ref_67_14" TARGET="main">Get_Number - terminal_interface-curses-termcap.ads:67</A>
<LI><A HREF="../terminal_interface-curses-terminfo__ads.htm#ref_68_13" TARGET="main">Get_Number - terminal_interface-curses-terminfo.ads:68</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_413_14" TARGET="main">Get_Options - terminal_interface-curses-forms.ads:413</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_418_13" TARGET="main">Get_Options - terminal_interface-curses-forms.ads:418</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_660_14" TARGET="main">Get_Options - terminal_interface-curses-forms.ads:660</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_665_13" TARGET="main">Get_Options - terminal_interface-curses-forms.ads:665</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_253_14" TARGET="main">Get_Options - terminal_interface-curses-menus.ads:253</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_258_13" TARGET="main">Get_Options - terminal_interface-curses-menus.ads:258</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_349_14" TARGET="main">Get_Options - terminal_interface-curses-menus.ads:349</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_354_13" TARGET="main">Get_Options - terminal_interface-curses-menus.ads:354</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1253_14" TARGET="main">Get_Origin_Relative_To_Parent</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_1070_16" TARGET="main">Get_Page</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_758_16" TARGET="main">Get_Pattern</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1229_14" TARGET="main">Get_Size</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1523_14" TARGET="main">Get_Soft_Label_Key - terminal_interface-curses.ads:1523</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1528_13" TARGET="main">Get_Soft_Label_Key - terminal_interface-curses.ads:1528</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1564_13" TARGET="main">Get_Soft_Label_Key_Attributes - terminal_interface-curses.ads:1564</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1568_13" TARGET="main">Get_Soft_Label_Key_Attributes - terminal_interface-curses.ads:1568</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_713_16" TARGET="main">Get_Spacing</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_412_14" TARGET="main">Get_Options - terminal_interface-curses-forms.ads:412</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_417_13" TARGET="main">Get_Options - terminal_interface-curses-forms.ads:417</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_659_14" TARGET="main">Get_Options - terminal_interface-curses-forms.ads:659</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_664_13" TARGET="main">Get_Options - terminal_interface-curses-forms.ads:664</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_249_14" TARGET="main">Get_Options - terminal_interface-curses-menus.ads:249</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_254_13" TARGET="main">Get_Options - terminal_interface-curses-menus.ads:254</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_345_14" TARGET="main">Get_Options - terminal_interface-curses-menus.ads:345</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_350_13" TARGET="main">Get_Options - terminal_interface-curses-menus.ads:350</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1422_14" TARGET="main">Get_Origin_Relative_To_Parent</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_943_16" TARGET="main">Get_Page</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_664_16" TARGET="main">Get_Pattern</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1398_14" TARGET="main">Get_Size</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1692_14" TARGET="main">Get_Soft_Label_Key - terminal_interface-curses.ads:1692</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1697_13" TARGET="main">Get_Soft_Label_Key - terminal_interface-curses.ads:1697</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1733_13" TARGET="main">Get_Soft_Label_Key_Attributes - terminal_interface-curses.ads:1733</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1737_13" TARGET="main">Get_Soft_Label_Key_Attributes - terminal_interface-curses.ads:1737</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_623_16" TARGET="main">Get_Spacing</A>
<LI><A HREF="../terminal_interface-curses-termcap__ads.htm#ref_73_14" TARGET="main">Get_String - terminal_interface-curses-termcap.ads:73</A>
<LI><A HREF="../terminal_interface-curses-termcap__ads.htm#ref_76_13" TARGET="main">Get_String - terminal_interface-curses-termcap.ads:76</A>
<LI><A HREF="../terminal_interface-curses-terminfo__ads.htm#ref_57_14" TARGET="main">Get_String - terminal_interface-curses-terminfo.ads:57</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_524_13" TARGET="main">Get_Sub_Window - terminal_interface-curses-forms.ads:524</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_380_13" TARGET="main">Get_Sub_Window - terminal_interface-curses-menus.ads:380</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_523_13" TARGET="main">Get_Sub_Window - terminal_interface-curses-forms.ads:523</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_376_13" TARGET="main">Get_Sub_Window - terminal_interface-curses-menus.ads:376</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm#ref_79_13" TARGET="main">Get_Type</A>
<LI><A HREF="../terminal_interface-curses-forms-field_user_data__ads.htm#ref_59_14" TARGET="main">Get_User_Data - terminal_interface-curses-forms-field_user_data.ads:59</A>
<LI><A HREF="../terminal_interface-curses-forms-field_user_data__ads.htm#ref_64_13" TARGET="main">Get_User_Data - terminal_interface-curses-forms-field_user_data.ads:64</A>
@@ -89,12 +89,12 @@
<LI><A HREF="../terminal_interface-curses-menus-menu_user_data__ads.htm#ref_64_13" TARGET="main">Get_User_Data - terminal_interface-curses-menus-menu_user_data.ads:64</A>
<LI><A HREF="../terminal_interface-curses-panels-user_data__ads.htm#ref_59_14" TARGET="main">Get_User_Data - terminal_interface-curses-panels-user_data.ads:59</A>
<LI><A HREF="../terminal_interface-curses-panels-user_data__ads.htm#ref_64_13" TARGET="main">Get_User_Data - terminal_interface-curses-panels-user_data.ads:64</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_513_13" TARGET="main">Get_Window - terminal_interface-curses-forms.ads:513</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_369_13" TARGET="main">Get_Window - terminal_interface-curses-menus.ads:369</A>
-<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_102_13" TARGET="main">Get_Window - terminal_interface-curses-panels.ads:102</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_512_13" TARGET="main">Get_Window - terminal_interface-curses-forms.ads:512</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_365_13" TARGET="main">Get_Window - terminal_interface-curses-menus.ads:365</A>
+<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_101_13" TARGET="main">Get_Window - terminal_interface-curses-panels.ads:101</A>
<LI><A HREF="../terminal_interface-curses-putwin__ads.htm#ref_48_13" TARGET="main">Get_Window - terminal_interface-curses-putwin.ads:48</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_62_13" TARGET="main">Get_Window - terminal_interface-curses-text_io.ads:62</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1237_14" TARGET="main">Get_Window_Position</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_473_14" TARGET="main">Grey - terminal_interface-curses-menus.ads:473</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_478_14" TARGET="main">Grey - terminal_interface-curses-menus.ads:478</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1406_14" TARGET="main">Get_Window_Position</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_469_14" TARGET="main">Grey - terminal_interface-curses-menus.ads:469</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_474_14" TARGET="main">Grey - terminal_interface-curses-menus.ads:474</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/H.htm b/doc/html/ada/funcs/H.htm
index db9b50dd4239..28686dadc351 100644
--- a/doc/html/ada/funcs/H.htm
+++ b/doc/html/ada/funcs/H.htm
@@ -9,18 +9,18 @@
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_859_16" TARGET="main">Halfdelay</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_924_14" TARGET="main">Half_Delay</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2184_16" TARGET="main">Hascolors</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_547_16" TARGET="main">Haskey</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1727_13" TARGET="main">Has_Colors</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2076_16" TARGET="main">Has_Ic</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2088_16" TARGET="main">Has_Il</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1663_13" TARGET="main">Has_Insert_Character</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1668_13" TARGET="main">Has_Insert_Line</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_768_13" TARGET="main">Has_Key</A>
-<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_94_13" TARGET="main">Has_Mouse</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1093_14" TARGET="main">Half_Delay</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2198_16" TARGET="main">Hascolors</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_549_16" TARGET="main">Haskey</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1896_13" TARGET="main">Has_Colors</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2088_16" TARGET="main">Has_Ic</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2100_16" TARGET="main">Has_Il</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1832_13" TARGET="main">Has_Insert_Character</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1837_13" TARGET="main">Has_Insert_Line</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_937_13" TARGET="main">Has_Key</A>
+<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_90_13" TARGET="main">Has_Mouse</A>
<LI><A HREF="../terminal_interface-curses-terminfo__ads.htm#ref_60_13" TARGET="main">Has_String</A>
-<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_97_14" TARGET="main">Hide</A>
+<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_96_14" TARGET="main">Hide</A>
<LI><A HREF="../terminal_interface-curses-panels__adb.htm#ref_95_16" TARGET="main">Hidepanel</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_729_14" TARGET="main">Horizontal_Line</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_898_14" TARGET="main">Horizontal_Line</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/I.htm b/doc/html/ada/funcs/I.htm
index 22ed03921985..c1f130bc5b4f 100644
--- a/doc/html/ada/funcs/I.htm
+++ b/doc/html/ada/funcs/I.htm
@@ -8,48 +8,48 @@
<H2>Functions - I</H2>
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_992_17" TARGET="main">IDC_Ok</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_980_16" TARGET="main">IDL_Ok</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1010_14" TARGET="main">Immediate_Update_Mode</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1014_17" TARGET="main">Immedok</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_484_14" TARGET="main">Info</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2199_16" TARGET="main">Initcolor</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2144_16" TARGET="main">Initpair</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_100_16" TARGET="main">Initscr</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1732_14" TARGET="main">Init_Color</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1713_14" TARGET="main">Init_Pair</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_487_14" TARGET="main">Init_Screen</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1500_14" TARGET="main">Init_Soft_Label_Keys</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_490_14" TARGET="main">Init_Windows</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1372_14" TARGET="main">Insert - terminal_interface-curses.ads:1372</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1378_14" TARGET="main">Insert - terminal_interface-curses.ads:1378</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1390_14" TARGET="main">Insert - terminal_interface-curses.ads:1390</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1399_14" TARGET="main">Insert - terminal_interface-curses.ads:1399</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1205_14" TARGET="main">Insert_Delete_Lines</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1219_14" TARGET="main">Insert_Line</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_993_17" TARGET="main">IDC_Ok</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_981_16" TARGET="main">IDL_Ok</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1179_14" TARGET="main">Immediate_Update_Mode</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1015_17" TARGET="main">Immedok</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_483_14" TARGET="main">Info</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2213_16" TARGET="main">Initcolor</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2156_16" TARGET="main">Initpair</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_99_16" TARGET="main">Initscr</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1901_14" TARGET="main">Init_Color</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1882_14" TARGET="main">Init_Pair</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_656_14" TARGET="main">Init_Screen</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1669_14" TARGET="main">Init_Soft_Label_Keys</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_659_14" TARGET="main">Init_Windows</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1541_14" TARGET="main">Insert - terminal_interface-curses.ads:1541</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1547_14" TARGET="main">Insert - terminal_interface-curses.ads:1547</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1559_14" TARGET="main">Insert - terminal_interface-curses.ads:1559</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1568_14" TARGET="main">Insert - terminal_interface-curses.ads:1568</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1374_14" TARGET="main">Insert_Delete_Lines</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1388_14" TARGET="main">Insert_Line</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_871_16" TARGET="main">Intrflush</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_123_16" TARGET="main">Isendwin</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_503_13" TARGET="main">Is_End_Window</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_775_13" TARGET="main">Is_Function_Key</A>
-<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_124_13" TARGET="main">Is_Hidden</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_122_16" TARGET="main">Isendwin</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_672_13" TARGET="main">Is_End_Window</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_944_13" TARGET="main">Is_Function_Key</A>
+<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_123_13" TARGET="main">Is_Hidden</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_851_16" TARGET="main">Is_Keypad</A>
<LI><A HREF="../terminal_interface-curses-terminfo__adb.htm#ref_50_13" TARGET="main">Is_MinusOne_Pointer</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_1119_16" TARGET="main">Is_New</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_765_13" TARGET="main">Is_New_Page</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1035_16" TARGET="main">Is_Scroll_Ok</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1161_13" TARGET="main">Is_Touched - terminal_interface-curses.ads:1161</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1166_13" TARGET="main">Is_Touched - terminal_interface-curses.ads:1166</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_128_16" TARGET="main">Itemname - terminal_interface-curses-menus.adb:128</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_253_16" TARGET="main">Itemname - terminal_interface-curses-menus.adb:253</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_261_16" TARGET="main">Itemname - terminal_interface-curses-menus.adb:261</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_625_13" TARGET="main">Items</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_631_13" TARGET="main">Item_Count</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_860_16" TARGET="main">Item_Init</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_234_16" TARGET="main">Item_Opts</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_214_16" TARGET="main">Item_Opts_Off</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_211_16" TARGET="main">Item_Opts_On</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_868_16" TARGET="main">Item_Term</A>
-<LI><A HREF="../terminal_interface-curses-menus-item_user_data__adb.htm#ref_64_16" TARGET="main">Item_Userptr</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_168_16" TARGET="main">Item_Val</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_181_16" TARGET="main">Item_Vis</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_989_16" TARGET="main">Is_New</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_764_13" TARGET="main">Is_New_Page</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1036_16" TARGET="main">Is_Scroll_Ok</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1330_13" TARGET="main">Is_Touched - terminal_interface-curses.ads:1330</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1335_13" TARGET="main">Is_Touched - terminal_interface-curses.ads:1335</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_109_16" TARGET="main">Itemname - terminal_interface-curses-menus.adb:109</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_216_16" TARGET="main">Itemname - terminal_interface-curses-menus.adb:216</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_224_16" TARGET="main">Itemname - terminal_interface-curses-menus.adb:224</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_621_13" TARGET="main">Items</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_627_13" TARGET="main">Item_Count</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_748_16" TARGET="main">Item_Init</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_198_16" TARGET="main">Item_Opts</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_183_16" TARGET="main">Item_Opts_Off</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_180_16" TARGET="main">Item_Opts_On</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_756_16" TARGET="main">Item_Term</A>
+<LI><A HREF="../terminal_interface-curses-menus-item_user_data__adb.htm#ref_58_16" TARGET="main">Item_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_142_16" TARGET="main">Item_Val</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_155_16" TARGET="main">Item_Vis</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/K.htm b/doc/html/ada/funcs/K.htm
index f1f5316e642a..017899941078 100644
--- a/doc/html/ada/funcs/K.htm
+++ b/doc/html/ada/funcs/K.htm
@@ -8,11 +8,11 @@
<H2>Functions - K</H2>
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_64_16" TARGET="main">Keyname</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1987_16" TARGET="main">Keyok</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_63_16" TARGET="main">Keyname</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1998_16" TARGET="main">Keyok</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_840_16" TARGET="main">Keypad</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1611_14" TARGET="main">Key_Name - terminal_interface-curses.ads:1611</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1617_13" TARGET="main">Key_Name - terminal_interface-curses.ads:1617</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2068_16" TARGET="main">Killchar</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1658_13" TARGET="main">Kill_Character</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1780_14" TARGET="main">Key_Name - terminal_interface-curses.ads:1780</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1786_13" TARGET="main">Key_Name - terminal_interface-curses.ads:1786</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2080_16" TARGET="main">Killchar</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1827_13" TARGET="main">Kill_Character</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/L.htm b/doc/html/ada/funcs/L.htm
index 3f0e3acbddb3..fb4d6d76f174 100644
--- a/doc/html/ada/funcs/L.htm
+++ b/doc/html/ada/funcs/L.htm
@@ -8,17 +8,18 @@
<H2>Functions - L</H2>
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1003_14" TARGET="main">Leave_Cursor_After_Update</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1002_16" TARGET="main">Leave_Ok</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1172_14" TARGET="main">Leave_Cursor_After_Update</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1003_16" TARGET="main">Leave_Ok</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_101_13" TARGET="main">Line - terminal_interface-curses-text_io.ads:101</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_102_13" TARGET="main">Line - terminal_interface-curses-text_io.ads:102</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_413_13" TARGET="main">Lines</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_550_13" TARGET="main">Lines</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2356_16" TARGET="main">LINES_As_Function</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_77_13" TARGET="main">Line_Length - terminal_interface-curses-text_io.ads:77</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_78_13" TARGET="main">Line_Length - terminal_interface-curses-text_io.ads:78</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_330_13" TARGET="main">Link</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_172_16" TARGET="main">Lnk_Field</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2110_16" TARGET="main">Longname - terminal_interface-curses.adb:2110</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2118_16" TARGET="main">Longname - terminal_interface-curses.adb:2118</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1678_14" TARGET="main">Long_Name - terminal_interface-curses.ads:1678</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1682_13" TARGET="main">Long_Name - terminal_interface-curses.ads:1682</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_329_13" TARGET="main">Link</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_151_16" TARGET="main">Lnk_Field</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2122_16" TARGET="main">Longname - terminal_interface-curses.adb:2122</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2130_16" TARGET="main">Longname - terminal_interface-curses.adb:2130</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1847_14" TARGET="main">Long_Name - terminal_interface-curses.ads:1847</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1851_13" TARGET="main">Long_Name - terminal_interface-curses.ads:1851</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/M.htm b/doc/html/ada/funcs/M.htm
index 0bf76abc3603..e926ed641121 100644
--- a/doc/html/ada/funcs/M.htm
+++ b/doc/html/ada/funcs/M.htm
@@ -9,47 +9,47 @@
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm#ref_162_13" TARGET="main">Make_Arg</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_407_14" TARGET="main">Mark - terminal_interface-curses-menus.ads:407</A>
<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_411_14" TARGET="main">Mark - terminal_interface-curses-menus.ads:411</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_415_14" TARGET="main">Mark - terminal_interface-curses-menus.ads:415</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_608_16" TARGET="main">Menu_Back - terminal_interface-curses-menus.adb:608</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_618_16" TARGET="main">Menu_Back - terminal_interface-curses-menus.adb:618</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_787_16" TARGET="main">Menu_Fmt</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_569_16" TARGET="main">Menu_Fore - terminal_interface-curses-menus.adb:569</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_579_16" TARGET="main">Menu_Fore - terminal_interface-curses-menus.adb:579</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_647_16" TARGET="main">Menu_Grey - terminal_interface-curses-menus.adb:647</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_657_16" TARGET="main">Menu_Grey - terminal_interface-curses-menus.adb:657</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_876_16" TARGET="main">Menu_Init</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_414_16" TARGET="main">Menu_Opts</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_394_16" TARGET="main">Menu_Opts_Off</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_391_16" TARGET="main">Menu_Opts_On</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_682_16" TARGET="main">Menu_Pad</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_470_16" TARGET="main">Menu_Sub</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_884_16" TARGET="main">Menu_Term</A>
-<LI><A HREF="../terminal_interface-curses-menus-menu_user_data__adb.htm#ref_63_16" TARGET="main">Menu_Userptr</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_446_16" TARGET="main">Menu_Win</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_528_16" TARGET="main">Menu_Back - terminal_interface-curses-menus.adb:528</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_538_16" TARGET="main">Menu_Back - terminal_interface-curses-menus.adb:538</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_691_16" TARGET="main">Menu_Fmt</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_492_16" TARGET="main">Menu_Fore - terminal_interface-curses-menus.adb:492</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_502_16" TARGET="main">Menu_Fore - terminal_interface-curses-menus.adb:502</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_564_16" TARGET="main">Menu_Grey - terminal_interface-curses-menus.adb:564</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_574_16" TARGET="main">Menu_Grey - terminal_interface-curses-menus.adb:574</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_764_16" TARGET="main">Menu_Init</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_357_16" TARGET="main">Menu_Opts</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_342_16" TARGET="main">Menu_Opts_Off</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_339_16" TARGET="main">Menu_Opts_On</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_595_16" TARGET="main">Menu_Pad</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_406_16" TARGET="main">Menu_Sub</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_772_16" TARGET="main">Menu_Term</A>
+<LI><A HREF="../terminal_interface-curses-menus-menu_user_data__adb.htm#ref_59_16" TARGET="main">Menu_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_385_16" TARGET="main">Menu_Win</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_829_16" TARGET="main">Meta</A>
-<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#ref_110_16" TARGET="main">MMask</A>
-<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#ref_211_16" TARGET="main">Mouseinterval</A>
-<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#ref_52_16" TARGET="main">Mouse_Avail</A>
-<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_157_13" TARGET="main">Mouse_Interval</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_614_14" TARGET="main">Move - terminal_interface-curses-forms.ads:614</A>
-<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_117_14" TARGET="main">Move - terminal_interface-curses-panels.ads:117</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_786_16" TARGET="main">Move - terminal_interface-curses-forms.adb:786</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#ref_108_16" TARGET="main">MMask</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#ref_210_16" TARGET="main">Mouseinterval</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#ref_50_16" TARGET="main">Mouse_Avail</A>
+<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_153_13" TARGET="main">Mouse_Interval</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_613_14" TARGET="main">Move - terminal_interface-curses-forms.ads:613</A>
+<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_116_14" TARGET="main">Move - terminal_interface-curses-panels.ads:116</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_692_16" TARGET="main">Move - terminal_interface-curses-forms.adb:692</A>
<LI><A HREF="../terminal_interface-curses-panels__adb.htm#ref_132_16" TARGET="main">Move - terminal_interface-curses-panels.adb:132</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_512_14" TARGET="main">Move_Cursor</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_627_14" TARGET="main">Move_Derived_Window</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_620_14" TARGET="main">Move_Window</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_681_14" TARGET="main">Move_Cursor</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_796_14" TARGET="main">Move_Derived_Window</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_789_14" TARGET="main">Move_Window</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_350_16" TARGET="main">Mvderwin</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_176_16" TARGET="main">mvwaddch</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1580_16" TARGET="main">Mvwdelch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_175_16" TARGET="main">mvwaddch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1588_16" TARGET="main">Mvwdelch</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_336_16" TARGET="main">Mvwin</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1604_16" TARGET="main">Mvwinch</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1629_16" TARGET="main">Mvwinsch</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1668_16" TARGET="main">Mvwinsnstr</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_916_16" TARGET="main">M_Post - terminal_interface-curses-forms.adb:916</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_354_16" TARGET="main">M_Post - terminal_interface-curses-menus.adb:354</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_643_16" TARGET="main">M_Scale - terminal_interface-curses-forms.adb:643</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_483_16" TARGET="main">M_Scale - terminal_interface-curses-menus.adb:483</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_918_16" TARGET="main">M_Unpost - terminal_interface-curses-forms.adb:918</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_356_16" TARGET="main">M_Unpost - terminal_interface-curses-menus.adb:356</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1612_16" TARGET="main">Mvwinch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1637_16" TARGET="main">Mvwinsch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1677_16" TARGET="main">Mvwinsnstr</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_805_16" TARGET="main">M_Post - terminal_interface-curses-forms.adb:805</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_311_16" TARGET="main">M_Post - terminal_interface-curses-menus.adb:311</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_568_16" TARGET="main">M_Scale - terminal_interface-curses-forms.adb:568</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_419_16" TARGET="main">M_Scale - terminal_interface-curses-menus.adb:419</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_807_16" TARGET="main">M_Unpost - terminal_interface-curses-forms.adb:807</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_313_16" TARGET="main">M_Unpost - terminal_interface-curses-menus.adb:313</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/N.htm b/doc/html/ada/funcs/N.htm
index 50fa1a2c1a44..abb8563683eb 100644
--- a/doc/html/ada/funcs/N.htm
+++ b/doc/html/ada/funcs/N.htm
@@ -8,32 +8,32 @@
<H2>Functions - N</H2>
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_267_14" TARGET="main">Name - terminal_interface-curses-menus.ads:267</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_270_14" TARGET="main">Name - terminal_interface-curses-menus.ads:270</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2330_16" TARGET="main">Napms</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1807_14" TARGET="main">Nap_Milli_Seconds</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_116_16" TARGET="main">Newfield</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_804_16" TARGET="main">NewForm</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_98_16" TARGET="main">Newitem</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_939_16" TARGET="main">Newmenu</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1427_16" TARGET="main">Newpad</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_263_14" TARGET="main">Name - terminal_interface-curses-menus.ads:263</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_266_14" TARGET="main">Name - terminal_interface-curses-menus.ads:266</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2346_16" TARGET="main">Napms</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1976_14" TARGET="main">Nap_Milli_Seconds</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_99_16" TARGET="main">Newfield</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_707_16" TARGET="main">NewForm</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_79_16" TARGET="main">Newitem</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_823_16" TARGET="main">Newmenu</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1433_16" TARGET="main">Newpad</A>
<LI><A HREF="../terminal_interface-curses-panels__adb.htm#ref_51_16" TARGET="main">Newpanel</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_234_16" TARGET="main">Newwin</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm#ref_222_13" TARGET="main">New_Fieldtype</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_86_14" TARGET="main">New_Line - terminal_interface-curses-text_io.ads:86</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_87_14" TARGET="main">New_Line - terminal_interface-curses-text_io.ads:87</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1268_13" TARGET="main">New_Pad</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1437_13" TARGET="main">New_Pad</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_89_14" TARGET="main">New_Page - terminal_interface-curses-text_io.ads:89</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_90_14" TARGET="main">New_Page - terminal_interface-curses-text_io.ads:90</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm#ref_193_13" TARGET="main">Next_Router</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_947_16" TARGET="main">NL</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_948_16" TARGET="main">NL</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_773_16" TARGET="main">NoCbreak</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_902_16" TARGET="main">Nodelay</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_811_16" TARGET="main">NoEcho</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_949_16" TARGET="main">NoNL</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_950_16" TARGET="main">NoNL</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_792_16" TARGET="main">NoRaw</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_935_16" TARGET="main">Notimeout</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_885_17" TARGET="main">No_Qiflush</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_422_13" TARGET="main">Number_Of_Colors</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_425_13" TARGET="main">Number_Of_Color_Pairs</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_559_13" TARGET="main">Number_Of_Colors</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_562_13" TARGET="main">Number_Of_Color_Pairs</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/O.htm b/doc/html/ada/funcs/O.htm
index 0c9189a6f3b7..ad03d366adc3 100644
--- a/doc/html/ada/funcs/O.htm
+++ b/doc/html/ada/funcs/O.htm
@@ -9,8 +9,8 @@
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
<LI><A HREF="../terminal_interface-curses-text_io-aux__adb.htm#ref_59_17" TARGET="main">Output</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1195_14" TARGET="main">Overlay - terminal_interface-curses.ads:1195</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1310_16" TARGET="main">Overlay - terminal_interface-curses.adb:1310</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1189_14" TARGET="main">Overwrite - terminal_interface-curses.ads:1189</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1298_16" TARGET="main">Overwrite - terminal_interface-curses.adb:1298</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1364_14" TARGET="main">Overlay - terminal_interface-curses.ads:1364</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1316_16" TARGET="main">Overlay - terminal_interface-curses.adb:1316</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1358_14" TARGET="main">Overwrite - terminal_interface-curses.ads:1358</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1304_16" TARGET="main">Overwrite - terminal_interface-curses.adb:1304</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/P.htm b/doc/html/ada/funcs/P.htm
index 06133d48abda..b0edebd8269a 100644
--- a/doc/html/ada/funcs/P.htm
+++ b/doc/html/ada/funcs/P.htm
@@ -8,32 +8,32 @@
<H2>Functions - P</H2>
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_474_14" TARGET="main">Pad_Character - terminal_interface-curses-forms.ads:474</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_492_14" TARGET="main">Pad_Character - terminal_interface-curses-menus.ads:492</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_742_13" TARGET="main">Page</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_473_14" TARGET="main">Pad_Character - terminal_interface-curses-forms.ads:473</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_488_14" TARGET="main">Pad_Character - terminal_interface-curses-menus.ads:488</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_741_13" TARGET="main">Page</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_80_13" TARGET="main">Page_Length - terminal_interface-curses-text_io.ads:80</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_81_13" TARGET="main">Page_Length - terminal_interface-curses-text_io.ads:81</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2167_16" TARGET="main">Paircontent</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1720_14" TARGET="main">Pair_Content</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2181_16" TARGET="main">Paircontent</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1889_14" TARGET="main">Pair_Content</A>
<LI><A HREF="../terminal_interface-curses-panels__adb.htm#ref_144_16" TARGET="main">Panel_Hidden</A>
<LI><A HREF="../terminal_interface-curses-panels-user_data__adb.htm#ref_65_16" TARGET="main">Panel_Userptr</A>
<LI><A HREF="../terminal_interface-curses-panels__adb.htm#ref_105_16" TARGET="main">Panel_Win</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_529_14" TARGET="main">Pattern</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1531_16" TARGET="main">Pechochar</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1353_13" TARGET="main">Peek - terminal_interface-curses.ads:1353</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1359_13" TARGET="main">Peek - terminal_interface-curses.ads:1359</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1415_14" TARGET="main">Peek - terminal_interface-curses.ads:1415</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1424_14" TARGET="main">Peek - terminal_interface-curses.ads:1424</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1439_14" TARGET="main">Peek - terminal_interface-curses.ads:1439</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1448_14" TARGET="main">Peek - terminal_interface-curses.ads:1448</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1506_16" TARGET="main">Pnoutrefresh</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_685_14" TARGET="main">Position_Cursor - terminal_interface-curses-forms.ads:685</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_396_14" TARGET="main">Position_Cursor - terminal_interface-curses-menus.ads:396</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_674_14" TARGET="main">Post - terminal_interface-curses-forms.ads:674</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_324_14" TARGET="main">Post - terminal_interface-curses-menus.ads:324</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_941_16" TARGET="main">Pos_Form_Cursor</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_499_16" TARGET="main">Pos_Menu_Cursor</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1476_16" TARGET="main">Prefresh</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_525_14" TARGET="main">Pattern</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1539_16" TARGET="main">Pechochar</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1522_13" TARGET="main">Peek - terminal_interface-curses.ads:1522</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1528_13" TARGET="main">Peek - terminal_interface-curses.ads:1528</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1584_14" TARGET="main">Peek - terminal_interface-curses.ads:1584</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1593_14" TARGET="main">Peek - terminal_interface-curses.ads:1593</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1608_14" TARGET="main">Peek - terminal_interface-curses.ads:1608</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1617_14" TARGET="main">Peek - terminal_interface-curses.ads:1617</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1513_16" TARGET="main">Pnoutrefresh</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_684_14" TARGET="main">Position_Cursor - terminal_interface-curses-forms.ads:684</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_392_14" TARGET="main">Position_Cursor - terminal_interface-curses-menus.ads:392</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_673_14" TARGET="main">Post - terminal_interface-curses-forms.ads:673</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_320_14" TARGET="main">Post - terminal_interface-curses-menus.ads:320</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_826_16" TARGET="main">Pos_Form_Cursor</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_432_16" TARGET="main">Pos_Menu_Cursor</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1482_16" TARGET="main">Prefresh</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm#ref_201_13" TARGET="main">Prev_Router</A>
<LI><A HREF="../terminal_interface-curses-text_io-complex_io__ads.htm#ref_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#ref_61_14" TARGET="main">Put - terminal_interface-curses-text_io-complex_io.ads:61</A>
diff --git a/doc/html/ada/funcs/R.htm b/doc/html/ada/funcs/R.htm
index da9d7e1f77f9..cc63f0f7d336 100644
--- a/doc/html/ada/funcs/R.htm
+++ b/doc/html/ada/funcs/R.htm
@@ -9,35 +9,35 @@
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_790_16" TARGET="main">Raw</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_591_14" TARGET="main">Redefine - terminal_interface-curses-forms.ads:591</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_615_14" TARGET="main">Redefine - terminal_interface-curses-menus.ads:615</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1060_14" TARGET="main">Redraw - terminal_interface-curses.ads:1060</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1064_14" TARGET="main">Redraw - terminal_interface-curses.ads:1064</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1090_16" TARGET="main">Redrawwin</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1046_14" TARGET="main">Refresh - terminal_interface-curses.ads:1046</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1284_14" TARGET="main">Refresh - terminal_interface-curses.ads:1284</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1513_14" TARGET="main">Refresh_Soft_Label_Keys</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1518_14" TARGET="main">Refresh_Soft_Label_Keys_Without_Update</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1053_14" TARGET="main">Refresh_Without_Update - terminal_interface-curses.ads:1053</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1296_14" TARGET="main">Refresh_Without_Update - terminal_interface-curses.ads:1296</A>
-<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_97_14" TARGET="main">Register_Reportable_Event</A>
-<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_106_14" TARGET="main">Register_Reportable_Events</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_590_14" TARGET="main">Redefine - terminal_interface-curses-forms.ads:590</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_611_14" TARGET="main">Redefine - terminal_interface-curses-menus.ads:611</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1229_14" TARGET="main">Redraw - terminal_interface-curses.ads:1229</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1233_14" TARGET="main">Redraw - terminal_interface-curses.ads:1233</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1092_16" TARGET="main">Redrawwin</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1215_14" TARGET="main">Refresh - terminal_interface-curses.ads:1215</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1453_14" TARGET="main">Refresh - terminal_interface-curses.ads:1453</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1682_14" TARGET="main">Refresh_Soft_Label_Keys</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1687_14" TARGET="main">Refresh_Soft_Label_Keys_Without_Update</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1222_14" TARGET="main">Refresh_Without_Update - terminal_interface-curses.ads:1222</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1465_14" TARGET="main">Refresh_Without_Update - terminal_interface-curses.ads:1465</A>
+<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_93_14" TARGET="main">Register_Reportable_Event</A>
+<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_102_14" TARGET="main">Register_Reportable_Events</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_77_14" TARGET="main">Release</A>
-<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_111_14" TARGET="main">Replace</A>
+<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_110_14" TARGET="main">Replace</A>
<LI><A HREF="../terminal_interface-curses-panels__adb.htm#ref_119_16" TARGET="main">Replace_Pan</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_278_14" TARGET="main">Request_Name - terminal_interface-curses-forms.ads:278</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_281_14" TARGET="main">Request_Name - terminal_interface-curses-forms.ads:281</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_106_14" TARGET="main">Request_Name - terminal_interface-curses-menus.ads:106</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_109_14" TARGET="main">Request_Name - terminal_interface-curses-menus.ads:109</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_80_16" TARGET="main">Request_Name - terminal_interface-curses-menus.adb:80</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_88_16" TARGET="main">Request_Name - terminal_interface-curses-menus.adb:88</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2295_16" TARGET="main">Resetty</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1766_14" TARGET="main">Reset_Curses_Mode</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2267_16" TARGET="main">Reset_Prog_Mode</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2269_16" TARGET="main">Reset_Shell_Mode</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1777_14" TARGET="main">Reset_Terminal_State</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1912_14" TARGET="main">Resize</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1539_14" TARGET="main">Restore_Soft_Label_Keys</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2306_16" TARGET="main">Ripoffline</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1790_14" TARGET="main">Rip_Off_Lines</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_277_14" TARGET="main">Request_Name - terminal_interface-curses-forms.ads:277</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_280_14" TARGET="main">Request_Name - terminal_interface-curses-forms.ads:280</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_101_14" TARGET="main">Request_Name - terminal_interface-curses-menus.ads:101</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_104_14" TARGET="main">Request_Name - terminal_interface-curses-menus.ads:104</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_61_16" TARGET="main">Request_Name - terminal_interface-curses-menus.adb:61</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_69_16" TARGET="main">Request_Name - terminal_interface-curses-menus.adb:69</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2311_16" TARGET="main">Resetty</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1935_14" TARGET="main">Reset_Curses_Mode</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2283_16" TARGET="main">Reset_Prog_Mode</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2285_16" TARGET="main">Reset_Shell_Mode</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1946_14" TARGET="main">Reset_Terminal_State</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_2083_14" TARGET="main">Resize</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1708_14" TARGET="main">Restore_Soft_Label_Keys</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2322_16" TARGET="main">Ripoffline</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1959_14" TARGET="main">Rip_Off_Lines</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/S.htm b/doc/html/ada/funcs/S.htm
index 92ba5ee2e088..43001004fd9a 100644
--- a/doc/html/ada/funcs/S.htm
+++ b/doc/html/ada/funcs/S.htm
@@ -8,51 +8,51 @@
<H2>Functions - S</H2>
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2285_16" TARGET="main">Savetty</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1760_14" TARGET="main">Save_Curses_Mode</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1772_14" TARGET="main">Save_Terminal_State</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_529_14" TARGET="main">Scale - terminal_interface-curses-forms.ads:529</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_385_14" TARGET="main">Scale - terminal_interface-curses-menus.ads:385</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1868_14" TARGET="main">Screen_Dump_To_File</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1876_14" TARGET="main">Screen_Init_From_File</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1872_14" TARGET="main">Screen_Restore_From_File</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1880_14" TARGET="main">Screen_Set_File</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1323_14" TARGET="main">Scroll</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1023_13" TARGET="main">Scrolling_Allowed</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1024_16" TARGET="main">Scrollok</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2490_16" TARGET="main">scr_dump</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2516_16" TARGET="main">scr_init</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2503_16" TARGET="main">scr_restore</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2529_16" TARGET="main">scr_set</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_448_14" TARGET="main">Set_Background - terminal_interface-curses-forms.ads:448</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_445_14" TARGET="main">Set_Background - terminal_interface-curses-menus.ads:445</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1109_14" TARGET="main">Set_Background - terminal_interface-curses.ads:1109</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_356_14" TARGET="main">Set_Buffer</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_887_14" TARGET="main">Set_Cbreak_Mode</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_818_14" TARGET="main">Set_Character_Attributes</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2301_16" TARGET="main">Savetty</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1929_14" TARGET="main">Save_Curses_Mode</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1941_14" TARGET="main">Save_Terminal_State</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_528_14" TARGET="main">Scale - terminal_interface-curses-forms.ads:528</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_381_14" TARGET="main">Scale - terminal_interface-curses-menus.ads:381</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_2039_14" TARGET="main">Screen_Dump_To_File</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_2047_14" TARGET="main">Screen_Init_From_File</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_2043_14" TARGET="main">Screen_Restore_From_File</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_2051_14" TARGET="main">Screen_Set_File</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1492_14" TARGET="main">Scroll</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1192_13" TARGET="main">Scrolling_Allowed</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1025_16" TARGET="main">Scrollok</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2489_16" TARGET="main">scr_dump</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2515_16" TARGET="main">scr_init</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2502_16" TARGET="main">scr_restore</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2528_16" TARGET="main">scr_set</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_447_14" TARGET="main">Set_Background - terminal_interface-curses-forms.ads:447</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_441_14" TARGET="main">Set_Background - terminal_interface-curses-menus.ads:441</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1278_14" TARGET="main">Set_Background - terminal_interface-curses.ads:1278</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_355_14" TARGET="main">Set_Buffer</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1056_14" TARGET="main">Set_Cbreak_Mode</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_987_14" TARGET="main">Set_Character_Attributes</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_92_14" TARGET="main">Set_Col - terminal_interface-curses-text_io.ads:92</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_93_14" TARGET="main">Set_Col - terminal_interface-curses-text_io.ads:93</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_839_14" TARGET="main">Set_Color</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_725_14" TARGET="main">Set_Current - terminal_interface-curses-forms.ads:725</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_290_14" TARGET="main">Set_Current - terminal_interface-curses-menus.ads:290</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_1026_16" TARGET="main">Set_Current_Fld</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_287_16" TARGET="main">Set_Curr_Item</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1802_14" TARGET="main">Set_Cursor_Visibility</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_899_14" TARGET="main">Set_Echo_Mode</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_965_14" TARGET="main">Set_Escape_Timer_Mode</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_597_14" TARGET="main">Set_Fields</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1008_14" TARGET="main">Set_Color</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_724_14" TARGET="main">Set_Current - terminal_interface-curses-forms.ads:724</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_286_14" TARGET="main">Set_Current - terminal_interface-curses-menus.ads:286</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_905_16" TARGET="main">Set_Current_Fld</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_250_16" TARGET="main">Set_Curr_Item</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1971_14" TARGET="main">Set_Cursor_Visibility</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1068_14" TARGET="main">Set_Echo_Mode</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1134_14" TARGET="main">Set_Escape_Timer_Mode</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_596_14" TARGET="main">Set_Fields</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm#ref_227_13" TARGET="main">Set_Fieldtype_Arg</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm#ref_234_13" TARGET="main">Set_Fieldtype_Choice</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_448_16" TARGET="main">Set_Field_Back</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_404_16" TARGET="main">Set_Field_Fore</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_665_16" TARGET="main">Set_Field_Init</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_543_14" TARGET="main">Set_Field_Init_Hook</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_196_16" TARGET="main">Set_Field_Just</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_310_16" TARGET="main">Set_Field_Max</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_330_16" TARGET="main">Set_Field_Opts</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_490_16" TARGET="main">Set_Field_Pad</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_681_16" TARGET="main">Set_Field_Term</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_549_14" TARGET="main">Set_Field_Term_Hook</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_395_16" TARGET="main">Set_Field_Back</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_356_16" TARGET="main">Set_Field_Fore</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_587_16" TARGET="main">Set_Field_Init</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_542_14" TARGET="main">Set_Field_Init_Hook</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_175_16" TARGET="main">Set_Field_Just</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_276_16" TARGET="main">Set_Field_Max</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_293_16" TARGET="main">Set_Field_Opts</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_432_16" TARGET="main">Set_Field_Pad</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_600_16" TARGET="main">Set_Field_Term</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_548_14" TARGET="main">Set_Field_Term_Hook</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_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#ref_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#ref_84_14" TARGET="main">Set_Field_Type - terminal_interface-curses-forms-field_types-enumeration.ads:84</A>
@@ -61,9 +61,9 @@
<LI><A HREF="../terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_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#ref_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#ref_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#ref_57_16" TARGET="main">Set_Field_Userptr</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_231_16" TARGET="main">Set_Fld_Buffer</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_278_16" TARGET="main">Set_Fld_Status</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_user_data__adb.htm#ref_55_16" TARGET="main">Set_Field_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_205_16" TARGET="main">Set_Fld_Buffer</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_245_16" TARGET="main">Set_Fld_Status</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_49_16" TARGET="main">Set_Fld_Type - terminal_interface-curses-forms-field_types-alpha.adb:49</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_49_16" TARGET="main">Set_Fld_Type - terminal_interface-curses-forms-field_types-alphanumeric.adb:49</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_94_16" TARGET="main">Set_Fld_Type - terminal_interface-curses-forms-field_types-enumeration.adb:94</A>
@@ -72,124 +72,124 @@
<LI><A HREF="../terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_52_16" TARGET="main">Set_Fld_Type - terminal_interface-curses-forms-field_types-numeric.adb:52</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types-user__adb.htm#ref_53_16" TARGET="main">Set_Fld_Type - terminal_interface-curses-forms-field_types-user.adb:53</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#ref_134_16" TARGET="main">Set_Fld_Type - terminal_interface-curses-forms-field_types.adb:134</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_929_14" TARGET="main">Set_Flush_On_Interrupt_Mode</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_428_14" TARGET="main">Set_Foreground - terminal_interface-curses-forms.ads:428</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_425_14" TARGET="main">Set_Foreground - terminal_interface-curses-menus.ads:425</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_539_14" TARGET="main">Set_Format</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_697_16" TARGET="main">Set_Form_Init</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_555_14" TARGET="main">Set_Form_Init_Hook</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_845_16" TARGET="main">Set_Form_Opts</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_613_16" TARGET="main">Set_Form_Sub</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_713_16" TARGET="main">Set_Form_Term</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_561_14" TARGET="main">Set_Form_Term_Hook</A>
-<LI><A HREF="../terminal_interface-curses-forms-form_user_data__adb.htm#ref_58_16" TARGET="main">Set_Form_Userptr</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_585_16" TARGET="main">Set_Form_Win</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_733_16" TARGET="main">Set_Frm_Fields</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_1056_16" TARGET="main">Set_Frm_Page</A>
-<LI><A HREF="../terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_51_16" TARGET="main">Set_Ftyp</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_465_14" TARGET="main">Set_Grey</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_620_14" TARGET="main">Set_Items - terminal_interface-curses-menus.ads:620</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_893_16" TARGET="main">Set_Items - terminal_interface-curses-menus.adb:893</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_805_16" TARGET="main">Set_Item_Init</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_567_14" TARGET="main">Set_Item_Init_Hook</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_194_16" TARGET="main">Set_Item_Opts</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_819_16" TARGET="main">Set_Item_Term</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_573_14" TARGET="main">Set_Item_Term_Hook</A>
-<LI><A HREF="../terminal_interface-curses-menus-item_user_data__adb.htm#ref_51_16" TARGET="main">Set_Item_Userptr</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_155_16" TARGET="main">Set_Item_Val</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_341_14" TARGET="main">Set_Justification</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_911_14" TARGET="main">Set_KeyPad_Mode</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1098_14" TARGET="main">Set_Flush_On_Interrupt_Mode</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_427_14" TARGET="main">Set_Foreground - terminal_interface-curses-forms.ads:427</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_421_14" TARGET="main">Set_Foreground - terminal_interface-curses-menus.ads:421</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_535_14" TARGET="main">Set_Format</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_613_16" TARGET="main">Set_Form_Init</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_554_14" TARGET="main">Set_Form_Init_Hook</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_745_16" TARGET="main">Set_Form_Opts</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_541_16" TARGET="main">Set_Form_Sub</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_626_16" TARGET="main">Set_Form_Term</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_560_14" TARGET="main">Set_Form_Term_Hook</A>
+<LI><A HREF="../terminal_interface-curses-forms-form_user_data__adb.htm#ref_56_16" TARGET="main">Set_Form_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_516_16" TARGET="main">Set_Form_Win</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_643_16" TARGET="main">Set_Frm_Fields</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_932_16" TARGET="main">Set_Frm_Page</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_49_16" TARGET="main">Set_Ftyp</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_461_14" TARGET="main">Set_Grey</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_616_14" TARGET="main">Set_Items - terminal_interface-curses-menus.ads:616</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_781_16" TARGET="main">Set_Items - terminal_interface-curses-menus.adb:781</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_705_16" TARGET="main">Set_Item_Init</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_563_14" TARGET="main">Set_Item_Init_Hook</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_168_16" TARGET="main">Set_Item_Opts</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_716_16" TARGET="main">Set_Item_Term</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_569_14" TARGET="main">Set_Item_Term_Hook</A>
+<LI><A HREF="../terminal_interface-curses-menus-item_user_data__adb.htm#ref_48_16" TARGET="main">Set_Item_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_132_16" TARGET="main">Set_Item_Val</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_340_14" TARGET="main">Set_Justification</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1080_14" TARGET="main">Set_KeyPad_Mode</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_95_14" TARGET="main">Set_Line - terminal_interface-curses-text_io.ads:95</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_96_14" TARGET="main">Set_Line - terminal_interface-curses-text_io.ads:96</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_405_14" TARGET="main">Set_Mark - terminal_interface-curses-menus.ads:405</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_514_16" TARGET="main">Set_Mark - terminal_interface-curses-menus.adb:514</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_389_14" TARGET="main">Set_Maximum_Size</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_591_16" TARGET="main">Set_Menu_Back</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_768_16" TARGET="main">Set_Menu_Fmt</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_552_16" TARGET="main">Set_Menu_Fore</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_629_16" TARGET="main">Set_Menu_Grey</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_833_16" TARGET="main">Set_Menu_Init</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_579_14" TARGET="main">Set_Menu_Init_Hook</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_374_16" TARGET="main">Set_Menu_Opts</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_667_16" TARGET="main">Set_Menu_Pad</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_457_16" TARGET="main">Set_Menu_Sub</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_847_16" TARGET="main">Set_Menu_Term</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_585_14" TARGET="main">Set_Menu_Term_Hook</A>
-<LI><A HREF="../terminal_interface-curses-menus-menu_user_data__adb.htm#ref_50_16" TARGET="main">Set_Menu_Userptr</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_433_16" TARGET="main">Set_Menu_Win</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_905_14" TARGET="main">Set_Meta_Mode</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_759_14" TARGET="main">Set_New_Page</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_976_14" TARGET="main">Set_NL_Mode</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_944_14" TARGET="main">Set_NoDelay_Mode</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_399_14" TARGET="main">Set_Options - terminal_interface-curses-forms.ads:399</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_646_14" TARGET="main">Set_Options - terminal_interface-curses-forms.ads:646</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_238_14" TARGET="main">Set_Options - terminal_interface-curses-menus.ads:238</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_335_14" TARGET="main">Set_Options - terminal_interface-curses-menus.ads:335</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_468_14" TARGET="main">Set_Pad_Character - terminal_interface-curses-forms.ads:468</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_486_14" TARGET="main">Set_Pad_Character - terminal_interface-curses-menus.ads:486</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_736_14" TARGET="main">Set_Page - terminal_interface-curses-forms.ads:736</A>
-<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_1105_16" TARGET="main">Set_Page - terminal_interface-curses-forms.adb:1105</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_401_14" TARGET="main">Set_Mark - terminal_interface-curses-menus.ads:401</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_444_16" TARGET="main">Set_Mark - terminal_interface-curses-menus.adb:444</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_388_14" TARGET="main">Set_Maximum_Size</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_514_16" TARGET="main">Set_Menu_Back</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_674_16" TARGET="main">Set_Menu_Fmt</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_478_16" TARGET="main">Set_Menu_Fore</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_549_16" TARGET="main">Set_Menu_Grey</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_727_16" TARGET="main">Set_Menu_Init</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_575_14" TARGET="main">Set_Menu_Init_Hook</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_327_16" TARGET="main">Set_Menu_Opts</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_584_16" TARGET="main">Set_Menu_Pad</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_396_16" TARGET="main">Set_Menu_Sub</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_738_16" TARGET="main">Set_Menu_Term</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_581_14" TARGET="main">Set_Menu_Term_Hook</A>
+<LI><A HREF="../terminal_interface-curses-menus-menu_user_data__adb.htm#ref_48_16" TARGET="main">Set_Menu_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_375_16" TARGET="main">Set_Menu_Win</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1074_14" TARGET="main">Set_Meta_Mode</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_758_14" TARGET="main">Set_New_Page</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1145_14" TARGET="main">Set_NL_Mode</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1113_14" TARGET="main">Set_NoDelay_Mode</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_398_14" TARGET="main">Set_Options - terminal_interface-curses-forms.ads:398</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_645_14" TARGET="main">Set_Options - terminal_interface-curses-forms.ads:645</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_234_14" TARGET="main">Set_Options - terminal_interface-curses-menus.ads:234</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_331_14" TARGET="main">Set_Options - terminal_interface-curses-menus.ads:331</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_467_14" TARGET="main">Set_Pad_Character - terminal_interface-curses-forms.ads:467</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_482_14" TARGET="main">Set_Pad_Character - terminal_interface-curses-menus.ads:482</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_735_14" TARGET="main">Set_Page - terminal_interface-curses-forms.ads:735</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#ref_978_16" TARGET="main">Set_Page - terminal_interface-curses-forms.adb:978</A>
<LI><A HREF="../terminal_interface-curses-panels-user_data__adb.htm#ref_54_16" TARGET="main">Set_Panel_Userptr</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_522_13" TARGET="main">Set_Pattern - terminal_interface-curses-menus.ads:522</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_736_16" TARGET="main">Set_Pattern - terminal_interface-curses-menus.adb:736</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_936_14" TARGET="main">Set_Queue_Interrupt_Mode</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_893_14" TARGET="main">Set_Raw_Mode</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1028_14" TARGET="main">Set_Scroll_Region</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1506_14" TARGET="main">Set_Soft_Label_Key</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1557_14" TARGET="main">Set_Soft_Label_Key_Attributes</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1573_14" TARGET="main">Set_Soft_Label_Key_Color</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_502_14" TARGET="main">Set_Spacing - terminal_interface-curses-menus.ads:502</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_693_16" TARGET="main">Set_Spacing - terminal_interface-curses-menus.adb:693</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_378_14" TARGET="main">Set_Status</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_518_14" TARGET="main">Set_Sub_Window - terminal_interface-curses-forms.ads:518</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_374_14" TARGET="main">Set_Sub_Window - terminal_interface-curses-menus.ads:374</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_644_14" TARGET="main">Set_Synch_Mode</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_953_14" TARGET="main">Set_Timeout_Mode</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_314_16" TARGET="main">Set_Toprow</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_301_14" TARGET="main">Set_Top_Row</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_518_13" TARGET="main">Set_Pattern - terminal_interface-curses-menus.ads:518</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_642_16" TARGET="main">Set_Pattern - terminal_interface-curses-menus.adb:642</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1105_14" TARGET="main">Set_Queue_Interrupt_Mode</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1062_14" TARGET="main">Set_Raw_Mode</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1197_14" TARGET="main">Set_Scroll_Region</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1675_14" TARGET="main">Set_Soft_Label_Key</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1726_14" TARGET="main">Set_Soft_Label_Key_Attributes</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1742_14" TARGET="main">Set_Soft_Label_Key_Color</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_498_14" TARGET="main">Set_Spacing - terminal_interface-curses-menus.ads:498</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_606_16" TARGET="main">Set_Spacing - terminal_interface-curses-menus.adb:606</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_377_14" TARGET="main">Set_Status</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_517_14" TARGET="main">Set_Sub_Window - terminal_interface-curses-forms.ads:517</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_370_14" TARGET="main">Set_Sub_Window - terminal_interface-curses-menus.ads:370</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_813_14" TARGET="main">Set_Synch_Mode</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1122_14" TARGET="main">Set_Timeout_Mode</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_274_16" TARGET="main">Set_Toprow</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_297_14" TARGET="main">Set_Top_Row</A>
<LI><A HREF="../terminal_interface-curses-forms-field_user_data__ads.htm#ref_53_14" TARGET="main">Set_User_Data - terminal_interface-curses-forms-field_user_data.ads:53</A>
<LI><A HREF="../terminal_interface-curses-forms-form_user_data__ads.htm#ref_53_14" TARGET="main">Set_User_Data - terminal_interface-curses-forms-form_user_data.ads:53</A>
<LI><A HREF="../terminal_interface-curses-menus-item_user_data__ads.htm#ref_58_14" TARGET="main">Set_User_Data - terminal_interface-curses-menus-item_user_data.ads:58</A>
<LI><A HREF="../terminal_interface-curses-menus-menu_user_data__ads.htm#ref_53_14" TARGET="main">Set_User_Data - terminal_interface-curses-menus-menu_user_data.ads:53</A>
<LI><A HREF="../terminal_interface-curses-panels-user_data__ads.htm#ref_53_14" TARGET="main">Set_User_Data - terminal_interface-curses-panels-user_data.ads:53</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_214_14" TARGET="main">Set_Value</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_507_14" TARGET="main">Set_Window - terminal_interface-curses-forms.ads:507</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_363_14" TARGET="main">Set_Window - terminal_interface-curses-menus.ads:363</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_210_14" TARGET="main">Set_Value</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_506_14" TARGET="main">Set_Window - terminal_interface-curses-forms.ads:506</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_359_14" TARGET="main">Set_Window - terminal_interface-curses-menus.ads:359</A>
<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#ref_59_14" TARGET="main">Set_Window - terminal_interface-curses-text_io.ads:59</A>
-<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_87_14" TARGET="main">Show</A>
+<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_86_14" TARGET="main">Show</A>
<LI><A HREF="../terminal_interface-curses-panels__adb.htm#ref_85_16" TARGET="main">Showpanel</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1955_16" TARGET="main">Slk_Attr - terminal_interface-curses.adb:1955</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1965_16" TARGET="main">Slk_Attr - terminal_interface-curses.adb:1965</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1919_16" TARGET="main">Slk_Attroff</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1917_16" TARGET="main">Slk_Attron</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1941_16" TARGET="main">Slk_Attrset</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1885_16" TARGET="main">Slk_Clear</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1975_16" TARGET="main">Slk_Color</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1819_16" TARGET="main">Slk_Init</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1869_16" TARGET="main">Slk_Label - terminal_interface-curses.adb:1869</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1877_16" TARGET="main">Slk_Label - terminal_interface-curses.adb:1877</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1858_16" TARGET="main">Slk_Noutrefresh</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1848_16" TARGET="main">Slk_Refresh</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1895_16" TARGET="main">Slk_Restore</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1831_16" TARGET="main">Slk_Set</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1905_16" TARGET="main">Slk_Touch</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_510_14" TARGET="main">Spacing</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_477_13" TARGET="main">Standard_Window</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_801_14" TARGET="main">Standout</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1708_14" TARGET="main">Start_Color</A>
-<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_119_13" TARGET="main">Start_Mouse</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1446_16" TARGET="main">Subpad</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1966_16" TARGET="main">Slk_Attr - terminal_interface-curses.adb:1966</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1976_16" TARGET="main">Slk_Attr - terminal_interface-curses.adb:1976</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1930_16" TARGET="main">Slk_Attroff</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1928_16" TARGET="main">Slk_Attron</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1952_16" TARGET="main">Slk_Attrset</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1896_16" TARGET="main">Slk_Clear</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1986_16" TARGET="main">Slk_Color</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1829_16" TARGET="main">Slk_Init</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1880_16" TARGET="main">Slk_Label - terminal_interface-curses.adb:1880</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1888_16" TARGET="main">Slk_Label - terminal_interface-curses.adb:1888</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1869_16" TARGET="main">Slk_Noutrefresh</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1859_16" TARGET="main">Slk_Refresh</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1906_16" TARGET="main">Slk_Restore</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1841_16" TARGET="main">Slk_Set</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1916_16" TARGET="main">Slk_Touch</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_506_14" TARGET="main">Spacing</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_644_13" TARGET="main">Standard_Window</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_970_14" TARGET="main">Standout</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1877_14" TARGET="main">Start_Color</A>
+<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_115_13" TARGET="main">Start_Mouse</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1452_16" TARGET="main">Subpad</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_270_16" TARGET="main">Subwin</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1274_13" TARGET="main">Sub_Pad</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_595_13" TARGET="main">Sub_Window</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1673_13" TARGET="main">Supported_Attributes</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_807_14" TARGET="main">Switch_Character_Attribute</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_405_14" TARGET="main">Switch_Options - terminal_interface-curses-forms.ads:405</A>
-<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_652_14" TARGET="main">Switch_Options - terminal_interface-curses-forms.ads:652</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_244_14" TARGET="main">Switch_Options - terminal_interface-curses-menus.ads:244</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_341_14" TARGET="main">Switch_Options - terminal_interface-curses-menus.ads:341</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1549_14" TARGET="main">Switch_Soft_Label_Key_Attributes</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_639_14" TARGET="main">Synchronize_Downwards</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_634_14" TARGET="main">Synchronize_Upwards</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1443_13" TARGET="main">Sub_Pad</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_764_13" TARGET="main">Sub_Window</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1842_13" TARGET="main">Supported_Attributes</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_976_14" TARGET="main">Switch_Character_Attribute</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_404_14" TARGET="main">Switch_Options - terminal_interface-curses-forms.ads:404</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm#ref_651_14" TARGET="main">Switch_Options - terminal_interface-curses-forms.ads:651</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_240_14" TARGET="main">Switch_Options - terminal_interface-curses-menus.ads:240</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_337_14" TARGET="main">Switch_Options - terminal_interface-curses-menus.ads:337</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1718_14" TARGET="main">Switch_Soft_Label_Key_Attributes</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_808_14" TARGET="main">Synchronize_Downwards</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_803_14" TARGET="main">Synchronize_Upwards</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_363_16" TARGET="main">Syncok</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/T.htm b/doc/html/ada/funcs/T.htm
index 3f33e43b5f1f..098d0da7e912 100644
--- a/doc/html/ada/funcs/T.htm
+++ b/doc/html/ada/funcs/T.htm
@@ -8,35 +8,36 @@
<H2>Functions - T</H2>
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_419_13" TARGET="main">Tab_Size</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2100_16" TARGET="main">Termattrs</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1688_14" TARGET="main">Terminal_Name - terminal_interface-curses.ads:1688</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1692_13" TARGET="main">Terminal_Name - terminal_interface-curses.ads:1692</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2126_16" TARGET="main">Termname - terminal_interface-curses.adb:2126</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2134_16" TARGET="main">Termname - terminal_interface-curses.adb:2134</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2372_16" TARGET="main">TABSIZE_As_Function</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_556_13" TARGET="main">Tab_Size</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2112_16" TARGET="main">Termattrs</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1857_14" TARGET="main">Terminal_Name - terminal_interface-curses.ads:1857</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1861_13" TARGET="main">Terminal_Name - terminal_interface-curses.ads:1861</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2138_16" TARGET="main">Termname - terminal_interface-curses.adb:2138</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2146_16" TARGET="main">Termname - terminal_interface-curses.adb:2146</A>
<LI><A HREF="../terminal_interface-curses-termcap__adb.htm#ref_51_16" TARGET="main">tgetent</A>
<LI><A HREF="../terminal_interface-curses-termcap__adb.htm#ref_71_16" TARGET="main">tgetflag</A>
<LI><A HREF="../terminal_interface-curses-termcap__adb.htm#ref_89_16" TARGET="main">tgetnum</A>
<LI><A HREF="../terminal_interface-curses-termcap__adb.htm#ref_108_16" TARGET="main">tgetstr - terminal_interface-curses-termcap.adb:108</A>
<LI><A HREF="../terminal_interface-curses-termcap__adb.htm#ref_129_16" TARGET="main">tgetstr - terminal_interface-curses-termcap.adb:129</A>
-<LI><A HREF="../terminal_interface-curses-termcap__adb.htm#ref_151_16" TARGET="main">tgoto</A>
<LI><A HREF="../terminal_interface-curses-termcap__ads.htm#ref_53_13" TARGET="main">TGoto</A>
+<LI><A HREF="../terminal_interface-curses-termcap__adb.htm#ref_151_16" TARGET="main">tgoto</A>
<LI><A HREF="../terminal_interface-curses-terminfo__adb.htm#ref_69_16" TARGET="main">tigetflag</A>
<LI><A HREF="../terminal_interface-curses-terminfo__adb.htm#ref_87_16" TARGET="main">tigetstr - terminal_interface-curses-terminfo.adb:87</A>
<LI><A HREF="../terminal_interface-curses-terminfo__adb.htm#ref_108_16" TARGET="main">tigetstr - terminal_interface-curses-terminfo.adb:108</A>
<LI><A HREF="../terminal_interface-curses-terminfo__adb.htm#ref_127_16" TARGET="main">tigetstr - terminal_interface-curses-terminfo.adb:127</A>
-<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_82_14" TARGET="main">Top</A>
+<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_81_14" TARGET="main">Top</A>
<LI><A HREF="../terminal_interface-curses-panels__adb.htm#ref_75_16" TARGET="main">Toppanel</A>
-<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_327_16" TARGET="main">Toprow</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_307_13" TARGET="main">Top_Row</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1142_14" TARGET="main">Touch - terminal_interface-curses.ads:1142</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1146_14" TARGET="main">Touch - terminal_interface-curses.ads:1146</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1544_14" TARGET="main">Touch_Soft_Label_Keys</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#ref_284_16" TARGET="main">Toprow</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_303_13" TARGET="main">Top_Row</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1311_14" TARGET="main">Touch - terminal_interface-curses.ads:1311</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1315_14" TARGET="main">Touch - terminal_interface-curses.ads:1315</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1713_14" TARGET="main">Touch_Soft_Label_Keys</A>
<LI><A HREF="../terminal_interface-curses-terminfo__adb.htm#ref_140_16" TARGET="main">tputs</A>
-<LI><A HREF="../terminal_interface-curses-trace__adb.htm#ref_54_17" TARGET="main">traceC</A>
-<LI><A HREF="../terminal_interface-curses-trace__adb.htm#ref_65_17" TARGET="main">tracef</A>
-<LI><A HREF="../terminal_interface-curses-trace__ads.htm#ref_105_14" TARGET="main">Trace_On</A>
-<LI><A HREF="../terminal_interface-curses-trace__ads.htm#ref_109_14" TARGET="main">Trace_Put</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2403_16" TARGET="main">Transform</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1815_14" TARGET="main">Transform_Coordinates</A>
+<LI><A HREF="../terminal_interface-curses-trace__adb.htm#ref_46_17" TARGET="main">traceC</A>
+<LI><A HREF="../terminal_interface-curses-trace__adb.htm#ref_53_17" TARGET="main">tracef</A>
+<LI><A HREF="../terminal_interface-curses-trace__ads.htm#ref_114_14" TARGET="main">Trace_On</A>
+<LI><A HREF="../terminal_interface-curses-trace__ads.htm#ref_118_14" TARGET="main">Trace_Put</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2402_16" TARGET="main">Transform</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1984_14" TARGET="main">Transform_Coordinates</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/U.htm b/doc/html/ada/funcs/U.htm
index f99d72d891ba..81acd1b6311f 100644
--- a/doc/html/ada/funcs/U.htm
+++ b/doc/html/ada/funcs/U.htm
@@ -8,20 +8,20 @@
<H2>Functions - U</H2>
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2016_16" TARGET="main">Unctrl - terminal_interface-curses.adb:2016</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2024_16" TARGET="main">Unctrl - terminal_interface-curses.adb:2024</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_763_14" TARGET="main">Undo_Keystroke</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_537_16" TARGET="main">Ungetch</A>
-<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#ref_186_16" TARGET="main">Ungetmouse</A>
-<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_145_14" TARGET="main">Unget_Mouse</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1137_14" TARGET="main">Untouch</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1623_14" TARGET="main">Un_Control - terminal_interface-curses.ads:1623</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1628_13" TARGET="main">Un_Control - terminal_interface-curses.ads:1628</A>
-<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_92_14" TARGET="main">Update_Panels</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1041_14" TARGET="main">Update_Screen</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1832_14" TARGET="main">Use_Default_Colors</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1852_13" TARGET="main">Use_Extended_Names</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2475_16" TARGET="main">use_extended_namesC</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_996_14" TARGET="main">Use_Insert_Delete_Character</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_989_14" TARGET="main">Use_Insert_Delete_Line</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2028_16" TARGET="main">Unctrl - terminal_interface-curses.adb:2028</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2036_16" TARGET="main">Unctrl - terminal_interface-curses.adb:2036</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_932_14" TARGET="main">Undo_Keystroke</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_539_16" TARGET="main">Ungetch</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#ref_184_16" TARGET="main">Ungetmouse</A>
+<LI><A HREF="../terminal_interface-curses-mouse__ads.htm#ref_141_14" TARGET="main">Unget_Mouse</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1306_14" TARGET="main">Untouch</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1792_14" TARGET="main">Un_Control - terminal_interface-curses.ads:1792</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1797_13" TARGET="main">Un_Control - terminal_interface-curses.ads:1797</A>
+<LI><A HREF="../terminal_interface-curses-panels__ads.htm#ref_91_14" TARGET="main">Update_Panels</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1210_14" TARGET="main">Update_Screen</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_2003_14" TARGET="main">Use_Default_Colors</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_2023_13" TARGET="main">Use_Extended_Names</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2474_16" TARGET="main">use_extended_namesC</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1165_14" TARGET="main">Use_Insert_Delete_Character</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_1158_14" TARGET="main">Use_Insert_Delete_Line</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/V.htm b/doc/html/ada/funcs/V.htm
index c797960998fa..bd1cc37abd5f 100644
--- a/doc/html/ada/funcs/V.htm
+++ b/doc/html/ada/funcs/V.htm
@@ -9,7 +9,7 @@
<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#ref_53_13" TARGET="main">Value - terminal_interface-curses-forms-field_types-enumeration-ada.ads:53</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_220_13" TARGET="main">Value - terminal_interface-curses-menus.ads:220</A>
-<LI><A HREF="../terminal_interface-curses__ads.htm#ref_738_14" TARGET="main">Vertical_Line</A>
-<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_229_13" TARGET="main">Visible</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_216_13" TARGET="main">Value - terminal_interface-curses-menus.ads:216</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm#ref_907_14" TARGET="main">Vertical_Line</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm#ref_225_13" TARGET="main">Visible</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/funcs/W.htm b/doc/html/ada/funcs/W.htm
index f8c5754c7fe6..3f44080f93b9 100644
--- a/doc/html/ada/funcs/W.htm
+++ b/doc/html/ada/funcs/W.htm
@@ -8,50 +8,50 @@
<H2>Functions - W</H2>
<A HREF="../funcs.htm" TARGET="_self">[index]</A>
<UL COMPACT TYPE=DISC>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_151_16" TARGET="main">Waddch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_150_16" TARGET="main">Waddch</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_407_16" TARGET="main">Waddchnstr</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_376_16" TARGET="main">Waddnstr</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_655_16" TARGET="main">Wattrget - terminal_interface-curses.adb:655</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_678_16" TARGET="main">Wattrget - terminal_interface-curses.adb:678</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_614_16" TARGET="main">Wattroff</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_611_16" TARGET="main">Wattron</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_639_16" TARGET="main">Wattrset</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1159_17" TARGET="main">WBackground</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_448_16" TARGET="main">Wborder</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1169_16" TARGET="main">WChangeBkgd</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_719_16" TARGET="main">Wchgat</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1127_16" TARGET="main">Wclear</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1137_16" TARGET="main">Wclearbot</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1147_16" TARGET="main">Wcleareol</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1567_16" TARGET="main">Wdelch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_656_16" TARGET="main">Wattrget - terminal_interface-curses.adb:656</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_677_16" TARGET="main">Wattrget - terminal_interface-curses.adb:677</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_616_16" TARGET="main">Wattroff</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_613_16" TARGET="main">Wattron</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_641_16" TARGET="main">Wattrset</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1162_17" TARGET="main">WBackground</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_449_16" TARGET="main">Wborder</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1172_16" TARGET="main">WChangeBkgd</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_717_16" TARGET="main">Wchgat</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1130_16" TARGET="main">Wclear</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1140_16" TARGET="main">Wclearbot</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1150_16" TARGET="main">Wcleareol</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1575_16" TARGET="main">Wdelch</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_254_16" TARGET="main">Wdelwin</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_208_16" TARGET="main">Wechochar</A>
-<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#ref_197_16" TARGET="main">Wenclose</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1117_16" TARGET="main">Werase</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1180_16" TARGET="main">Wgetbkgd</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_523_16" TARGET="main">Wgetch</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1779_16" TARGET="main">Wgetnstr</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#ref_195_16" TARGET="main">Wenclose</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1120_16" TARGET="main">Werase</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1184_16" TARGET="main">Wgetbkgd</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_525_16" TARGET="main">Wgetch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1789_16" TARGET="main">Wgetnstr</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_490_16" TARGET="main">Whline</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1593_16" TARGET="main">Winch</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1731_16" TARGET="main">Winchnstr</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1689_16" TARGET="main">Winnstr</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1615_16" TARGET="main">Winsch</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1323_16" TARGET="main">Winsdelln</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1647_16" TARGET="main">Winsnstr</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1235_16" TARGET="main">WLineTouched</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_137_16" TARGET="main">Wmove</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1080_16" TARGET="main">Wnoutrefresh</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1601_16" TARGET="main">Winch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1741_16" TARGET="main">Winchnstr</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1699_16" TARGET="main">Winnstr</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1623_16" TARGET="main">Winsch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1329_16" TARGET="main">Winsdelln</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1656_16" TARGET="main">Winsnstr</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1240_16" TARGET="main">WLineTouched</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_136_16" TARGET="main">Wmove</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1082_16" TARGET="main">Wnoutrefresh</A>
<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm#ref_151_14" TARGET="main">Wrap_Builtin</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1103_16" TARGET="main">Wredrawln</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1069_16" TARGET="main">Wrefresh</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2543_16" TARGET="main">wresize</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1555_16" TARGET="main">Wscrl</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1046_16" TARGET="main">Wsetscrreg</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_701_16" TARGET="main">Wset_Color</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_591_16" TARGET="main">wstandend</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_589_16" TARGET="main">wstandout</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1105_16" TARGET="main">Wredrawln</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1071_16" TARGET="main">Wrefresh</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_2542_16" TARGET="main">wresize</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1563_16" TARGET="main">Wscrl</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1047_16" TARGET="main">Wsetscrreg</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_698_16" TARGET="main">Wset_Color</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_593_16" TARGET="main">wstandend</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_591_16" TARGET="main">wstandout</A>
<LI><A HREF="../terminal_interface-curses__adb.htm#ref_914_17" TARGET="main">Wtimeout</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1191_16" TARGET="main">Wtouchln</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_507_16" TARGET="main">Wvline</A>
-<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1248_16" TARGET="main">WWinTouched</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1195_16" TARGET="main">Wtouchln</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_508_16" TARGET="main">Wvline</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#ref_1253_16" TARGET="main">WWinTouched</A>
</UL></BODY></HTML>
diff --git a/doc/html/ada/main.htm b/doc/html/ada/main.htm
index 6a1b0ba983d7..e4475a566848 100644
--- a/doc/html/ada/main.htm
+++ b/doc/html/ada/main.htm
@@ -76,6 +76,7 @@ You should start your browsing with one of these files:
<LI><A HREF="terminal_interface-curses-text_io__ads.htm">terminal_interface-curses-text_io.ads</A>
<LI><A HREF="terminal_interface-curses-trace__ads.htm">terminal_interface-curses-trace.ads</A>
<LI><A HREF="terminal_interface-curses__ads.htm">terminal_interface-curses.ads</A>
+<LI><A HREF="terminal_interface-curses_constants__ads.htm">terminal_interface-curses_constants.ads</A>
<LI><A HREF="terminal_interface__ads.htm">terminal_interface.ads</A>
</UL>
</BODY></HTML>
diff --git a/doc/html/ada/table.html b/doc/html/ada/table.html
index ce8d91f4eb61..ff6d0bd404b1 100644
--- a/doc/html/ada/table.html
+++ b/doc/html/ada/table.html
@@ -10,8 +10,6 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN">
<TABLE ALIGN=CENTER BORDER>
<TR ALIGN=LEFT>
<TH>C name</TH><TH>Ada name</TH><TH>man page</TH></TR>
-<TR><TD>_nc_freeall()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_159">Curses_Free_All</A></TD><TD><A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></TD></TR>
-<TR><TD>_tracef()</TD><TD><A HREF="terminal_interface-curses-trace__ads.htm#AFU_2">Trace_Put</A></TD><TD><A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></TD></TR>
<TR><TD>assume_default_colors()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_156">Assume_Default_Colors</A></TD><TD><A HREF="../man/default_colors.3x.html">default_colors.3x</A></TD></TR>
<TR><TD>baudrate()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_131">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_40">Beep</A></TD><TD><A HREF="../man/curs_beep.3x.html">curs_beep.3x</A></TD></TR>
@@ -24,15 +22,15 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN">
<TR><TD>copywin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_79">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_153">Set_Cursor_Visibility</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
<TR><TD>curscr</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_2">Current_Window</A></TD><TD><A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
<TR><TD>curses_version()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_157">Curses_Version</A></TD><TD><A HREF="../man/curs_extend.3x.html">curs_extend.3x</A></TD></TR>
+<TR><TD>curs_set()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_153">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_148">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_124">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>def_prog_mode()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_148">Save_Curses_Mode</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
<TR><TD>delay_output()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_129">Delay_Output</A></TD><TD><A HREF="../man/curs_util.3x.html">curs_util.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>delwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_12">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_14">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_61">Update_Screen</A></TD><TD><A HREF="../man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
@@ -52,9 +50,9 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN">
<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_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_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>
@@ -66,9 +64,9 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN">
<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_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_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>
@@ -98,17 +96,17 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN">
<TR><TD>initscr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_3">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_4">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_48">Set_Flush_On_Interrupt_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>isendwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_6">Is_End_Window</A></TD><TD><A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
<TR><TD>is_linetouched()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_77">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_78">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_6">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_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_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>
@@ -134,9 +132,9 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN">
<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_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_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_attributes.3x.html">menu_attributes.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_requestname.3x</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_62"></A></TD><TD><A HREF="../man/menu_driver.3x.html">menu_driver.3x</A></TD></TR>
@@ -152,19 +150,20 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN">
<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_17">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_9">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_24">Add</A></TD><TD><A HREF="../man/curs_addchstr.3x.html">curs_addchstr.3x</A></TD></TR>
+<TR><TD>mvwaddch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_9">Add</A></TD><TD><A HREF="../man/curs_addch.3x.html">curs_addch.3x</A></TD></TR>
<TR><TD>mvwaddnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_22">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_39">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_96">Delete_Character</A></TD><TD><A HREF="../man/curs_delch.3x.html">curs_delch.3x</A></TD></TR>
<TR><TD>mvwgetnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_108">Get</A></TD><TD><A HREF="../man/curs_getstr.3x.html">curs_getstr.3x</A></TD></TR>
-<TR><TD>mvwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_16">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_98">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_106">Peek</A></TD><TD><A HREF="../man/curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR>
+<TR><TD>mvwinch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_98">Peek</A></TD><TD><A HREF="../man/curs_inch.3x.html">curs_inch.3x</A></TD></TR>
<TR><TD>mvwinnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_104">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_100">Insert</A></TD><TD><A HREF="../man/curs_insch.3x.html">curs_insch.3x</A></TD></TR>
<TR><TD>mvwinsnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_102">Insert</A></TD><TD><A HREF="../man/curs_insstr.3x.html">curs_insstr.3x</A></TD></TR>
+<TR><TD>mvwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_16">Move_Window</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR>
<TR><TD>napms()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_154">Nap_Milli_Seconds</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
+<TR><TD>_nc_freeall()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_159">Curses_Free_All</A></TD><TD><A HREF="../man/curs_trace.3x.html">curs_trace.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>
@@ -172,10 +171,10 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN">
<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>newpad()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_89">New_Pad</A></TD><TD><A HREF="../man/curs_pad.3x.html">curs_pad.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_89">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_11">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_53">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_50">Set_NoDelay_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
@@ -209,9 +208,9 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN">
<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>scr_dump()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_160">Screen_Dump_To_File</A></TD><TD><A HREF="../man/curs_scr_dump.3x.html">curs_scr_dump.3x</A></TD></TR>
<TR><TD>scr_init()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_162">Screen_Init_From_File</A></TD><TD><A HREF="../man/curs_scr_dump.3x.html">curs_scr_dump.3x</A></TD></TR>
+<TR><TD>scrollok()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_59">Allow_Scrolling</A></TD><TD><A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
<TR><TD>scr_restore()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_161">Screen_Restore_From_File</A></TD><TD><A HREF="../man/curs_scr_dump.3x.html">curs_scr_dump.3x</A></TD></TR>
<TR><TD>scr_set()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_163">Screen_Set_File</A></TD><TD><A HREF="../man/curs_scr_dump.3x.html">curs_scr_dump.3x</A></TD></TR>
-<TR><TD>scrollok()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_59">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>
@@ -259,10 +258,10 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN">
<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_120">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_121">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_118">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_119">Set_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_120">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_121">Get_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_115">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_122">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_109">Init_Soft_Label_Keys</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
@@ -286,6 +285,7 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN">
<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_75">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_74">Touch</A></TD><TD><A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
+<TR><TD>_tracef()</TD><TD><A HREF="terminal_interface-curses-trace__ads.htm#AFU_2">Trace_Put</A></TD><TD><A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></TD></TR>
<TR><TD>trace()</TD><TD><A HREF="terminal_interface-curses-trace__ads.htm#AFU_1">Trace_on</A></TD><TD><A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></TD></TR>
<TR><TD>unctrl()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_127">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_128">Un_Control</A></TD><TD><A HREF="../man/curs_util.3x.html">curs_util.3x</A></TD></TR>
@@ -295,16 +295,16 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN">
<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>use_default_colors()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_155">Use_Default_Colors</A></TD><TD><A HREF="../man/default_colors.3x.html">default_colors.3x</A></TD></TR>
<TR><TD>use_extended_names()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_158">Use_Extended_Names</A></TD><TD><A HREF="../man/curs_extend.3x.html">curs_extend.3x</A></TD></TR>
-<TR><TD>waddch()</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>waddchnstr()</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>waddch()</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>waddnstr()</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>wattr_get()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_35">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_36">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_33">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_34">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_71">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_72">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_70">Set_Background</A></TD><TD><A HREF="../man/curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR>
+<TR><TD>wbkgd()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_71">Change_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_25">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_38">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_67">Clear</A></TD><TD><A HREF="../man/curs_clear.3x.html">curs_clear.3x</A></TD></TR>
@@ -319,8 +319,8 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN">
<TR><TD>wgetch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_29">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_107">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_27">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_97">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_105">Peek</A></TD><TD><A HREF="../man/curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR>
+<TR><TD>winch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_97">Peek</A></TD><TD><A HREF="../man/curs_inch.3x.html">curs_inch.3x</A></TD></TR>
<TR><TD>winnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_103">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_99">Insert</A></TD><TD><A HREF="../man/curs_insch.3x.html">curs_insch.3x</A></TD></TR>
<TR><TD>winsdelln()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_82">Insert_Delete_Lines</A></TD><TD><A HREF="../man/curs_deleteln.3x.html">curs_deleteln.3x</A></TD></TR>
diff --git a/doc/html/ada/terminal_interface-curses-aux__adb.htm b/doc/html/ada/terminal_interface-curses-aux__adb.htm
index d817b690bd5e..bd288f38b436 100644
--- a/doc/html/ada/terminal_interface-curses-aux__adb.htm
+++ b/doc/html/ada/terminal_interface-curses-aux__adb.htm
@@ -55,80 +55,80 @@
<span class="comment"><EM>-- @Revision: 1.11 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_41_40" HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_41_40" HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A></span> <b>is</b>
<span class="comment"><EM>--</EM></span>
<span class="comment"><EM>-- Some helpers</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_44_14" HREF="terminal_interface-curses-aux__ads.htm#ref_116_14">Fill_String</A></span> (<span class="symbol"><A NAME="ref_44_27" HREF="terminal_interface-curses-aux__ads.htm#ref_116_27">Cp</A></span> : chars_ptr;
- <span class="symbol"><A NAME="ref_45_27" HREF="terminal_interface-curses-aux__ads.htm#ref_117_27">Str</A></span> : <b>out</b> String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_44_14" HREF="terminal_interface-curses-aux__ads.htm#ref_90_14">Fill_String</A></span> (<span class="symbol"><A NAME="ref_44_27" HREF="terminal_interface-curses-aux__ads.htm#ref_90_27">Cp</A></span> : chars_ptr;
+ <span class="symbol"><A NAME="ref_45_27" HREF="terminal_interface-curses-aux__ads.htm#ref_91_27">Str</A></span> : <b>out</b> String)
<b>is</b>
<span class="comment"><EM>-- Fill the string with the characters referenced by the</EM></span>
<span class="comment"><EM>-- chars_ptr.</EM></span>
<span class="comment"><EM>--</EM></span>
<span class="symbol"><A NAME="ref_50_7">Len</A></span> : Natural;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_116_27">Cp</A> /= Null_Ptr <b>then</b>
- <A HREF="terminal_interface-curses-aux__adb.htm#ref_50_7">Len</A> := Natural (Strlen (<A HREF="terminal_interface-curses-aux__ads.htm#ref_116_27">Cp</A>));
- <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_117_27">Str</A>'Length &lt; <A HREF="terminal_interface-curses-aux__adb.htm#ref_50_7">Len</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_27">Cp</A> /= Null_Ptr <b>then</b>
+ <A HREF="terminal_interface-curses-aux__adb.htm#ref_50_7">Len</A> := Natural (Strlen (<A HREF="terminal_interface-curses-aux__ads.htm#ref_90_27">Cp</A>));
+ <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_27">Str</A>'Length &lt; <A HREF="terminal_interface-curses-aux__adb.htm#ref_50_7">Len</A> <b>then</b>
<b>raise</b> Constraint_Error;
<b>end</b> <b>if</b>;
<b>declare</b>
<span class="symbol"><A NAME="ref_58_13">S</A></span> : String (1 .. <A HREF="terminal_interface-curses-aux__adb.htm#ref_50_7">Len</A>);
<b>begin</b>
- <A HREF="terminal_interface-curses-aux__adb.htm#ref_58_13">S</A> := Value (<A HREF="terminal_interface-curses-aux__ads.htm#ref_116_27">Cp</A>);
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_117_27">Str</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_117_27">Str</A>'First .. (<A HREF="terminal_interface-curses-aux__ads.htm#ref_117_27">Str</A>'First + <A HREF="terminal_interface-curses-aux__adb.htm#ref_50_7">Len</A> - 1)) := <A HREF="terminal_interface-curses-aux__adb.htm#ref_58_13">S</A> (<A HREF="terminal_interface-curses-aux__adb.htm#ref_58_13">S</A>'<b>Range</b>);
+ <A HREF="terminal_interface-curses-aux__adb.htm#ref_58_13">S</A> := Value (<A HREF="terminal_interface-curses-aux__ads.htm#ref_90_27">Cp</A>);
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_27">Str</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_91_27">Str</A>'First .. (<A HREF="terminal_interface-curses-aux__ads.htm#ref_91_27">Str</A>'First + <A HREF="terminal_interface-curses-aux__adb.htm#ref_50_7">Len</A> - 1)) := <A HREF="terminal_interface-curses-aux__adb.htm#ref_58_13">S</A> (<A HREF="terminal_interface-curses-aux__adb.htm#ref_58_13">S</A>'<b>Range</b>);
<b>end</b>;
<b>else</b>
<A HREF="terminal_interface-curses-aux__adb.htm#ref_50_7">Len</A> := 0;
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses-aux__adb.htm#ref_50_7">Len</A> &lt; <A HREF="terminal_interface-curses-aux__ads.htm#ref_117_27">Str</A>'Length <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_117_27">Str</A> ((<A HREF="terminal_interface-curses-aux__ads.htm#ref_117_27">Str</A>'First + <A HREF="terminal_interface-curses-aux__adb.htm#ref_50_7">Len</A>) .. <A HREF="terminal_interface-curses-aux__ads.htm#ref_117_27">Str</A>'Last) := (<b>others</b> =&gt; ' ');
+ <b>if</b> <A HREF="terminal_interface-curses-aux__adb.htm#ref_50_7">Len</A> &lt; <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_27">Str</A>'Length <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_27">Str</A> ((<A HREF="terminal_interface-curses-aux__ads.htm#ref_91_27">Str</A>'First + <A HREF="terminal_interface-curses-aux__adb.htm#ref_50_7">Len</A>) .. <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_27">Str</A>'Last) := (<b>others</b> =&gt; ' ');
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_116_14">Fill_String</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_14">Fill_String</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_73_13" HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A></span> (<span class="symbol"><A NAME="ref_73_26" HREF="terminal_interface-curses-aux__ads.htm#ref_121_26">Cp</A></span> : chars_ptr) <b>return</b> String
+ <b>function</b> <span class="symbol"><A NAME="ref_73_13" HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A></span> (<span class="symbol"><A NAME="ref_73_26" HREF="terminal_interface-curses-aux__ads.htm#ref_95_26">Cp</A></span> : chars_ptr) <b>return</b> String
<b>is</b>
<span class="symbol"><A NAME="ref_75_7">Len</A></span> : Natural;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_121_26">Cp</A> /= Null_Ptr <b>then</b>
- <A HREF="terminal_interface-curses-aux__adb.htm#ref_75_7">Len</A> := Natural (Strlen (<A HREF="terminal_interface-curses-aux__ads.htm#ref_121_26">Cp</A>));
+ <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_95_26">Cp</A> /= Null_Ptr <b>then</b>
+ <A HREF="terminal_interface-curses-aux__adb.htm#ref_75_7">Len</A> := Natural (Strlen (<A HREF="terminal_interface-curses-aux__ads.htm#ref_95_26">Cp</A>));
<b>if</b> <A HREF="terminal_interface-curses-aux__adb.htm#ref_75_7">Len</A> = 0 <b>then</b>
<b>return</b> "";
<b>else</b>
<b>declare</b>
<span class="symbol"><A NAME="ref_83_16">S</A></span> : String (1 .. <A HREF="terminal_interface-curses-aux__adb.htm#ref_75_7">Len</A>);
<b>begin</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_116_14">Fill_String</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_121_26">Cp</A>, <A HREF="terminal_interface-curses-aux__adb.htm#ref_83_16">S</A>);
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_14">Fill_String</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_95_26">Cp</A>, <A HREF="terminal_interface-curses-aux__adb.htm#ref_83_16">S</A>);
<b>return</b> <A HREF="terminal_interface-curses-aux__adb.htm#ref_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> <A HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_94_14" HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A></span> (<span class="symbol"><A NAME="ref_94_29" HREF="terminal_interface-curses-aux__ads.htm#ref_96_29">Code</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_94_14" HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A></span> (<span class="symbol"><A NAME="ref_94_29" HREF="terminal_interface-curses-aux__ads.htm#ref_86_29">Code</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>)
<b>is</b>
<b>begin</b>
- <b>case</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_29">Code</A> <b>is</b>
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> =&gt; <b>null</b>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_81_4">E_System_Error</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_4">Eti_System_Error</A>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_82_4">E_Bad_Argument</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_391_4">Eti_Bad_Argument</A>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_83_4">E_Posted</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_392_4">Eti_Posted</A>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_84_4">E_Connected</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_393_4">Eti_Connected</A>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_85_4">E_Bad_State</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_394_4">Eti_Bad_State</A>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_4">E_No_Room</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_395_4">Eti_No_Room</A>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_4">E_Not_Posted</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_396_4">Eti_Not_Posted</A>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_88_4">E_Unknown_Command</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_397_4">Eti_Unknown_Command</A>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_89_4">E_No_Match</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_398_4">Eti_No_Match</A>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_4">E_Not_Selectable</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_399_4">Eti_Not_Selectable</A>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_4">E_Not_Connected</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_400_4">Eti_Not_Connected</A>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_92_4">E_Request_Denied</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_401_4">Eti_Request_Denied</A>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_93_4">E_Invalid_Field</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_402_4">Eti_Invalid_Field</A>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_94_4">E_Current</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_403_4">Eti_Current</A>;
+ <b>case</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_29">Code</A> <b>is</b>
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_84_7">E_Ok</A> =&gt; <b>null</b>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_83_7">E_System_Error</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_527_4">Eti_System_Error</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_82_7">E_Bad_Argument</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_528_4">Eti_Bad_Argument</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_81_7">E_Posted</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_529_4">Eti_Posted</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_7">E_Connected</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_530_4">Eti_Connected</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_79_7">E_Bad_State</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_531_4">Eti_Bad_State</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_7">E_No_Room</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_532_4">Eti_No_Room</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_77_7">E_Not_Posted</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_533_4">Eti_Not_Posted</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_76_7">E_Unknown_Command</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_534_4">Eti_Unknown_Command</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_7">E_No_Match</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_535_4">Eti_No_Match</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_74_7">E_Not_Selectable</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_536_4">Eti_Not_Selectable</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_73_7">E_Not_Connected</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_537_4">Eti_Not_Connected</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_7">E_Request_Denied</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_538_4">Eti_Request_Denied</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_71_7">E_Invalid_Field</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_539_4">Eti_Invalid_Field</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_7">E_Current</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_540_4">Eti_Current</A>;
<b>end</b> <b>case</b>;
- <b>end</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-aux__ads.htm b/doc/html/ada/terminal_interface-curses-aux__ads.htm
index 932ebf147068..301dd28dc016 100644
--- a/doc/html/ada/terminal_interface-curses-aux__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-aux__ads.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- S P E C --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2014,2018 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,91 +52,84 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.18 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.24 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- curses binding.</EM></span>
-<span class="comment"><EM>-- This module is generated. Please don't change it manually!</EM></span>
-<span class="comment"><EM>-- Run the generator instead.</EM></span>
-<span class="comment"><EM>-- |</EM></span>
<b>with</b> System;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings;
-<b>with</b> <A HREF="unchconv__ads.htm#ref_20_10">Unchecked_Conversion</A>;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_50_35" HREF="terminal_interface-curses-aux__adb.htm#ref_41_40">Aux</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>);
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_45_35" HREF="terminal_interface-curses-aux__adb.htm#ref_41_40">Aux</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>);
- <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int;
-
- <b>subtype</b> <span class="symbol"><A NAME="ref_55_12">C_Int</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int;
- <b>subtype</b> <span class="symbol"><A NAME="ref_56_12">C_Short</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.short;
- <b>subtype</b> <span class="symbol"><A NAME="ref_57_12">C_Long_Int</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.long;
- <b>subtype</b> <span class="symbol"><A NAME="ref_58_12">C_Size_T</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.size_t;
- <b>subtype</b> <span class="symbol"><A NAME="ref_59_12">C_UInt</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.unsigned;
- <b>subtype</b> <span class="symbol"><A NAME="ref_60_12">C_ULong</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.unsigned_long;
- <b>subtype</b> <span class="symbol"><A NAME="ref_61_12">C_Char_Ptr</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings.chars_ptr;
- <b>type</b> <span class="symbol"><A NAME="ref_62_12">C_Void_Ptr</A></span> <b>is</b> <b>new</b> System.Address;
- <b>type</b> <span class="symbol"><A NAME="ref_63_12">C_Chtype</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_59_12">C_UInt</A>;
- <b>type</b> <span class="symbol"><A NAME="ref_64_12">C_AttrType</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_59_12">C_UInt</A>;
+ <b>subtype</b> <span class="symbol"><A NAME="ref_48_12">C_Int</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int;
+ <b>subtype</b> <span class="symbol"><A NAME="ref_49_12">C_Short</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.short;
+ <b>subtype</b> <span class="symbol"><A NAME="ref_50_12">C_Long_Int</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.long;
+ <b>subtype</b> <span class="symbol"><A NAME="ref_51_12">C_Size_T</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.size_t;
+ <b>subtype</b> <span class="symbol"><A NAME="ref_52_12">C_UInt</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.unsigned;
+ <b>subtype</b> <span class="symbol"><A NAME="ref_53_12">C_ULong</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.unsigned_long;
+ <b>subtype</b> <span class="symbol"><A NAME="ref_54_12">C_Char_Ptr</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings.chars_ptr;
+ <b>type</b> <span class="symbol"><A NAME="ref_55_12">C_Void_Ptr</A></span> <b>is</b> <b>new</b> System.Address;
<span class="comment"><EM>-- This is how those constants are defined in ncurses. I see them also</EM></span>
<span class="comment"><EM>-- exactly like this in all ETI implementations I ever tested. So it</EM></span>
<span class="comment"><EM>-- could be that this is quite general, but please check with your curses.</EM></span>
<span class="comment"><EM>-- This is critical, because curses sometime mixes Boolean returns with</EM></span>
<span class="comment"><EM>-- returning an error status.</EM></span>
- <span class="symbol"><A NAME="ref_71_4">Curses_Ok</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := 0;
- <span class="symbol"><A NAME="ref_72_4">Curses_Err</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := -1;
+ <span class="symbol"><A NAME="ref_62_4">Curses_Ok</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_12_4">OK</A>;
+ <span class="symbol"><A NAME="ref_63_4">Curses_Err</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_13_4">ERR</A>;
- <span class="symbol"><A NAME="ref_74_4">Curses_True</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := 1;
- <span class="symbol"><A NAME="ref_75_4">Curses_False</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := 0;
+ <span class="symbol"><A NAME="ref_65_4">Curses_True</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_15_4">TRUE</A>;
+ <span class="symbol"><A NAME="ref_66_4">Curses_False</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_16_4">FALSE</A>;
<span class="comment"><EM>-- Eti_Error: type for error codes returned by the menu and form subsystem</EM></span>
- <b>subtype</b> <span class="symbol"><A NAME="ref_78_12">Eti_Error</A></span> <b>is</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> <b>range</b> -14 .. 0;
-
- <span class="symbol"><A NAME="ref_80_4">E_Ok</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := 0;
- <span class="symbol"><A NAME="ref_81_4">E_System_Error</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := -1;
- <span class="symbol"><A NAME="ref_82_4">E_Bad_Argument</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := -2;
- <span class="symbol"><A NAME="ref_83_4">E_Posted</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := -3;
- <span class="symbol"><A NAME="ref_84_4">E_Connected</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := -4;
- <span class="symbol"><A NAME="ref_85_4">E_Bad_State</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := -5;
- <span class="symbol"><A NAME="ref_86_4">E_No_Room</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := -6;
- <span class="symbol"><A NAME="ref_87_4">E_Not_Posted</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := -7;
- <span class="symbol"><A NAME="ref_88_4">E_Unknown_Command</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := -8;
- <span class="symbol"><A NAME="ref_89_4">E_No_Match</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := -9;
- <span class="symbol"><A NAME="ref_90_4">E_Not_Selectable</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := -10;
- <span class="symbol"><A NAME="ref_91_4">E_Not_Connected</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := -11;
- <span class="symbol"><A NAME="ref_92_4">E_Request_Denied</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := -12;
- <span class="symbol"><A NAME="ref_93_4">E_Invalid_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := -13;
- <span class="symbol"><A NAME="ref_94_4">E_Current</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := -14;
-
- <b>procedure</b> <span class="symbol"><A NAME="ref_96_14" HREF="terminal_interface-curses-aux__adb.htm#ref_94_14">Eti_Exception</A></span> (<span class="symbol"><A NAME="ref_96_29" HREF="terminal_interface-curses-aux__adb.htm#ref_94_29">Code</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>);
- <span class="comment"><EM>-- Dispatch the error code and raise the appropriate exception</EM></span>
- <span class="comment"><EM>--</EM></span>
- <span class="comment"><EM>--</EM></span>
- <span class="comment"><EM>-- Some helpers</EM></span>
- <b>function</b> Chtype_To_AttrChar <b>is</b> <b>new</b>
- <A HREF="unchconv__ads.htm#ref_20_10">Unchecked_Conversion</A> (<A HREF="unchconv__ads.htm#ref_17_9">Source</A> =&gt; <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>,
- <A HREF="unchconv__ads.htm#ref_18_9">Target</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>);
- <b>function</b> AttrChar_To_Chtype <b>is</b> <b>new</b>
- <A HREF="unchconv__ads.htm#ref_20_10">Unchecked_Conversion</A> (<A HREF="unchconv__ads.htm#ref_17_9">Source</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>,
- <A HREF="unchconv__ads.htm#ref_18_9">Target</A> =&gt; <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>);
-
- <b>function</b> AttrChar_To_AttrType <b>is</b> <b>new</b>
- <A HREF="unchconv__ads.htm#ref_20_10">Unchecked_Conversion</A> (<A HREF="unchconv__ads.htm#ref_17_9">Source</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>,
- <A HREF="unchconv__ads.htm#ref_18_9">Target</A> =&gt; <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_12">C_AttrType</A>);
+ <b>type</b> <span class="symbol"><A NAME="ref_69_9" HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Eti_Error</A></span> <b>is</b>
+ (<span class="symbol"><A NAME="ref_70_7">E_Current</A></span>,
+ <span class="symbol"><A NAME="ref_71_7">E_Invalid_Field</A></span>,
+ <span class="symbol"><A NAME="ref_72_7">E_Request_Denied</A></span>,
+ <span class="symbol"><A NAME="ref_73_7">E_Not_Connected</A></span>,
+ <span class="symbol"><A NAME="ref_74_7">E_Not_Selectable</A></span>,
+ <span class="symbol"><A NAME="ref_75_7">E_No_Match</A></span>,
+ <span class="symbol"><A NAME="ref_76_7">E_Unknown_Command</A></span>,
+ <span class="symbol"><A NAME="ref_77_7">E_Not_Posted</A></span>,
+ <span class="symbol"><A NAME="ref_78_7">E_No_Room</A></span>,
+ <span class="symbol"><A NAME="ref_79_7">E_Bad_State</A></span>,
+ <span class="symbol"><A NAME="ref_80_7">E_Connected</A></span>,
+ <span class="symbol"><A NAME="ref_81_7">E_Posted</A></span>,
+ <span class="symbol"><A NAME="ref_82_7">E_Bad_Argument</A></span>,
+ <span class="symbol"><A NAME="ref_83_7">E_System_Error</A></span>,
+ <span class="symbol"><A NAME="ref_84_7">E_Ok</A></span>);
- <b>function</b> AttrType_To_AttrChar <b>is</b> <b>new</b>
- <A HREF="unchconv__ads.htm#ref_20_10">Unchecked_Conversion</A> (<A HREF="unchconv__ads.htm#ref_17_9">Source</A> =&gt; <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_12">C_AttrType</A>,
- <A HREF="unchconv__ads.htm#ref_18_9">Target</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_86_14" HREF="terminal_interface-curses-aux__adb.htm#ref_94_14">Eti_Exception</A></span> (<span class="symbol"><A NAME="ref_86_29" HREF="terminal_interface-curses-aux__adb.htm#ref_94_29">Code</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>);
+ <span class="comment"><EM>-- Do nothing if Code = E_Ok.</EM></span>
+ <span class="comment"><EM>-- Else dispatch the error code and raise the appropriate exception.</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_116_14" HREF="terminal_interface-curses-aux__adb.htm#ref_44_14">Fill_String</A></span> (<span class="symbol"><A NAME="ref_116_27" HREF="terminal_interface-curses-aux__adb.htm#ref_44_27">Cp</A></span> : chars_ptr;
- <span class="symbol"><A NAME="ref_117_27" HREF="terminal_interface-curses-aux__adb.htm#ref_45_27">Str</A></span> : <b>out</b> String);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_90_14" HREF="terminal_interface-curses-aux__adb.htm#ref_44_14">Fill_String</A></span> (<span class="symbol"><A NAME="ref_90_27" HREF="terminal_interface-curses-aux__adb.htm#ref_44_27">Cp</A></span> : chars_ptr;
+ <span class="symbol"><A NAME="ref_91_27" HREF="terminal_interface-curses-aux__adb.htm#ref_45_27">Str</A></span> : <b>out</b> String);
<span class="comment"><EM>-- Fill the Str parameter with the string denoted by the chars_ptr</EM></span>
<span class="comment"><EM>-- C-Style string.</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_121_13" HREF="terminal_interface-curses-aux__adb.htm#ref_73_13">Fill_String</A></span> (<span class="symbol"><A NAME="ref_121_26" HREF="terminal_interface-curses-aux__adb.htm#ref_73_26">Cp</A></span> : chars_ptr) <b>return</b> String;
+ <b>function</b> <span class="symbol"><A NAME="ref_95_13" HREF="terminal_interface-curses-aux__adb.htm#ref_73_13">Fill_String</A></span> (<span class="symbol"><A NAME="ref_95_26" HREF="terminal_interface-curses-aux__adb.htm#ref_73_26">Cp</A></span> : chars_ptr) <b>return</b> String;
<span class="comment"><EM>-- Same but as function.</EM></span>
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>private</b>
+ <b>for</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>'Size <b>use</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>'Size;
+ <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>);
+ <b>for</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A> <b>use</b>
+ (<A HREF="terminal_interface-curses-aux__ads.htm#ref_70_7">E_Current</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_94_4">E_CURRENT</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_71_7">E_Invalid_Field</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_93_4">E_INVALID_FIELD</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_7">E_Request_Denied</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_92_4">E_REQUEST_DENIED</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_73_7">E_Not_Connected</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_91_4">E_NOT_CONNECTED</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_74_7">E_Not_Selectable</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_90_4">E_NOT_SELECTABLE</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_7">E_No_Match</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_89_4">E_NO_MATCH</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_76_7">E_Unknown_Command</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_88_4">E_UNKNOWN_COMMAND</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_77_7">E_Not_Posted</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_87_4">E_NOT_POSTED</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_7">E_No_Room</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_86_4">E_NO_ROOM</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_79_7">E_Bad_State</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_85_4">E_BAD_STATE</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_7">E_Connected</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_84_4">E_CONNECTED</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_81_7">E_Posted</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_83_4">E_POSTED</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_82_7">E_Bad_Argument</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_82_4">E_BAD_ARGUMENT</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_83_7">E_System_Error</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_81_4">E_SYSTEM_ERROR</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_84_7">E_Ok</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_80_4">E_OK</A>);
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
</PRE></BODY></HTML>
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
index a11bb3521962..5aae165a1e7d 100644
--- 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
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,29 +52,25 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.11 @</EM></span>
-<span class="comment"><EM>-- @Date: 2011/03/19 00:45:37 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.13 @</EM></span>
+<span class="comment"><EM>-- @Date: 2014/05/24 21:31:05 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_44_58" HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_41_53">Alpha</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_44_58" HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_41_53">Alpha</A></span> <b>is</b>
- <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_49_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_46_30" HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_49_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_49_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_46_30" HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_49_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_50_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_44_9">Alpha_Field</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_49_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_49_30" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_49_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_49_30">Fld</A>;
- <span class="symbol"><A NAME="ref_50_30" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_49_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_49_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_49_30" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_49_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_49_30">Fld</A>;
+ <span class="symbol"><A NAME="ref_50_30" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_49_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_alpha");
- <span class="symbol"><A NAME="ref_53_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_53_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_49_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_50_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_50_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_46_9">Minimum_Field_Width</A>));
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_53_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_53_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_49_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_50_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_50_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_46_9">Minimum_Field_Width</A>)));
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_49_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_50_30">Typ</A>);
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_49_14">Set_Field_Type</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_41_53">Alpha</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_41_53">Alpha</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm
index 1c7e1a2e40c2..2539530fe943 100644
--- a/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm
@@ -55,17 +55,17 @@
<span class="comment"><EM>-- @Revision: 1.12 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_41_53" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_44_58">Alpha</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_41_53">Alpha</A>);
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_41_53" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_44_58">Alpha</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_41_53">Alpha</A>);
<b>type</b> <span class="symbol"><A NAME="ref_44_9">Alpha_Field</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A>
<b>with</b> <b>record</b>
<span class="symbol"><A NAME="ref_46_9">Minimum_Field_Width</A></span> : Natural := 0;
<b>end</b> <b>record</b>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_49_14" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_46_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_49_30" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_46_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_49_14" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_46_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_49_30" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_46_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_50_30" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_47_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_44_9">Alpha_Field</A>);
<b>pragma</b> Inline (Set_Field_Type);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_41_53">Alpha</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_41_53">Alpha</A>;
</PRE></BODY></HTML>
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
index 25a6c1289820..9690043892ce 100644
--- 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
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,29 +52,25 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.11 @</EM></span>
-<span class="comment"><EM>-- @Date: 2011/03/19 00:45:37 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.13 @</EM></span>
+<span class="comment"><EM>-- @Date: 2014/05/24 21:31:05 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_44_58" HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_41_53">AlphaNumeric</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_44_58" HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_41_53">AlphaNumeric</A></span> <b>is</b>
- <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_50_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_46_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_50_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_50_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_46_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_50_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_51_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_45_9">AlphaNumeric_Field</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_49_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_49_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_49_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_50_30">Fld</A>;
- <span class="symbol"><A NAME="ref_50_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_49_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_49_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_49_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_49_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_50_30">Fld</A>;
+ <span class="symbol"><A NAME="ref_50_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_49_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_alnum");
- <span class="symbol"><A NAME="ref_53_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_53_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_49_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_50_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_51_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_47_9">Minimum_Field_Width</A>));
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_53_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_53_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_49_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_50_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_51_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_47_9">Minimum_Field_Width</A>)));
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_50_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_51_30">Typ</A>);
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_50_14">Set_Field_Type</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_41_53">AlphaNumeric</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_41_53">AlphaNumeric</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm
index 7580482a595b..d2b0f80881a3 100644
--- a/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm
@@ -55,18 +55,18 @@
<span class="comment"><EM>-- @Revision: 1.12 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_41_53" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_44_58">AlphaNumeric</A></span> <b>is</b>
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_41_53" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_44_58">AlphaNumeric</A></span> <b>is</b>
<b>pragma</b> Preelaborate
- (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_41_53">AlphaNumeric</A>);
+ (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_41_53">AlphaNumeric</A>);
<b>type</b> <span class="symbol"><A NAME="ref_45_9">AlphaNumeric_Field</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A>
<b>with</b> <b>record</b>
<span class="symbol"><A NAME="ref_47_9">Minimum_Field_Width</A></span> : Natural := 0;
<b>end</b> <b>record</b>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_50_14" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_46_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_50_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_46_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_50_14" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_46_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_50_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_46_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_51_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_47_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_45_9">AlphaNumeric_Field</A>);
<b>pragma</b> Inline (Set_Field_Type);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_41_53">AlphaNumeric</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_41_53">AlphaNumeric</A>;
</PRE></BODY></HTML>
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
index 8258cd5466ba..94dfa8af5818 100644
--- 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
@@ -58,7 +58,7 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>with</b> Ada.Characters.Handling; <b>use</b> Ada.Characters.Handling;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>.<span class="symbol"><A NAME="ref_44_70" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_44_65">Ada</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>.<span class="symbol"><A NAME="ref_44_70" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_44_65">Ada</A></span> <b>is</b>
<b>function</b> <span class="symbol"><A NAME="ref_46_13" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_48_13">Create</A></span> (<span class="symbol"><A NAME="ref_46_21" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_48_21">Set</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_50_9">Type_Set</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_50_46">Mixed_Case</A>;
<span class="symbol"><A NAME="ref_47_21" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_49_21">Case_Sensitive</A></span> : Boolean := False;
@@ -68,18 +68,18 @@
<span class="symbol"><A NAME="ref_51_7">I</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_55_9">Enumeration_Info</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_42_9">T</A>'Pos (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_42_9">T</A>'Last) - <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_42_9">T</A>'Pos (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_42_9">T</A>'First) + 1);
<span class="symbol"><A NAME="ref_52_7">J</A></span> : Positive := 1;
<b>begin</b>
- <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_58_10">Case_Sensitive</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_49_21">Case_Sensitive</A>;
- <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_59_10">Match_Must_Be_Unique</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_50_21">Must_Be_Unique</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_57_10">Case_Sensitive</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_49_21">Case_Sensitive</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_58_10">Match_Must_Be_Unique</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_50_21">Must_Be_Unique</A>;
<b>for</b> <span class="symbol"><A NAME="ref_57_11">E</A></span> <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_42_9">T</A>'<b>Range</b> <b>loop</b>
- <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">J</A>) := <b>new</b> String'(<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_42_9">T</A>'Image (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_57_11">E</A>));
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_59_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">J</A>) := <b>new</b> String'(<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_42_9">T</A>'Image (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_57_11">E</A>));
<span class="comment"><EM>-- The Image attribute defaults to upper case, so we have to handle</EM></span>
<span class="comment"><EM>-- only the other ones...</EM></span>
<b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_48_21">Set</A> /= <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_50_34">Upper_Case</A> <b>then</b>
- <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">J</A>).<b>all</b> := To_Lower (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">J</A>).<b>all</b>);
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_59_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">J</A>).<b>all</b> := To_Lower (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_59_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">J</A>).<b>all</b>);
<b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_48_21">Set</A> = <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_50_46">Mixed_Case</A> <b>then</b>
- <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">J</A>).<b>all</b> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">J</A>).<b>all</b>'First) :=
- To_Upper (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">J</A>).<b>all</b> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">J</A>).<b>all</b>'First));
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_59_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">J</A>).<b>all</b> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_59_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">J</A>).<b>all</b>'First) :=
+ To_Upper (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_59_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">J</A>).<b>all</b> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_59_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_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#ref_52_7">J</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">J</A> + 1;
@@ -88,12 +88,12 @@
<b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_64_13">Create</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_51_7">I</A>, True);
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_48_13">Create</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_74_13" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_53_13">Value</A></span> (<span class="symbol"><A NAME="ref_74_20" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_53_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_75_20" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_54_20">Buf</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_42_9">T</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_74_13" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_53_13">Value</A></span> (<span class="symbol"><A NAME="ref_74_20" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_53_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_75_20" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_54_20">Buf</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A>'First) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_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#ref_42_9">T</A>'Value (<A HREF="terminal_interface-curses-forms__ads.htm#ref_370_13">Get_Buffer</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_53_20">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_54_20">Buf</A>));
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_42_9">T</A>'Value (<A HREF="terminal_interface-curses-forms__ads.htm#ref_369_13">Get_Buffer</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_53_20">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_54_20">Buf</A>));
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_53_13">Value</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_44_65">Ada</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_44_65">Ada</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm
index 37305f626c32..ba8a51e32686 100644
--- a/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- S P E C --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998,2003 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,26 +52,26 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.10 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.11 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>generic</b>
<b>type</b> <span class="symbol"><A NAME="ref_42_9" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_44_65">T</A></span> <b>is</b> (&lt;&gt;);
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>.<span class="symbol"><A NAME="ref_44_65" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_44_70">Ada</A></span> <b>is</b>
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>.<span class="symbol"><A NAME="ref_44_65" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_44_70">Ada</A></span> <b>is</b>
<b>pragma</b> Preelaborate
- (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_44_65">Ada</A>);
+ (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_44_65">Ada</A>);
<b>function</b> <span class="symbol"><A NAME="ref_48_13" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_46_13">Create</A></span> (<span class="symbol"><A NAME="ref_48_21" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_46_21">Set</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_50_9">Type_Set</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_50_46">Mixed_Case</A>;
<span class="symbol"><A NAME="ref_49_21" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_47_21">Case_Sensitive</A></span> : Boolean := False;
<span class="symbol"><A NAME="ref_50_21" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_48_21">Must_Be_Unique</A></span> : Boolean := False)
<b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_62_9">Enumeration_Field</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_53_13" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_74_13">Value</A></span> (<span class="symbol"><A NAME="ref_53_20" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_74_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_54_20" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_75_20">Buf</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_42_9">T</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_53_13" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_74_13">Value</A></span> (<span class="symbol"><A NAME="ref_53_20" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_74_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_54_20" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_75_20">Buf</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A>'First) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_42_9">T</A>;
<span class="comment"><EM>-- Translate the content of the fields buffer - indicated by the</EM></span>
<span class="comment"><EM>-- buffer number - into an enumeration value. If the buffer is empty</EM></span>
<span class="comment"><EM>-- or the content is invalid, a Constraint_Error is raises.</EM></span>
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_44_65">Ada</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_44_65">Ada</A>;
</PRE></BODY></HTML>
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
index a5c44bb47b7f..3c49fe4cc46b 100644
--- 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
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,15 +52,15 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.10 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.12 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>with</b> Ada.Unchecked_Deallocation;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_46_58" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_46_58" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A></span> <b>is</b>
<b>function</b> <span class="symbol"><A NAME="ref_48_13" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_64_13">Create</A></span> (<span class="symbol"><A NAME="ref_48_21" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_64_21">Info</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_55_9">Enumeration_Info</A>;
<span class="symbol"><A NAME="ref_49_21" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_65_21">Auto_Release_Names</A></span> : Boolean := False)
@@ -73,16 +73,16 @@
<span class="symbol"><A NAME="ref_56_7">L</A></span> : <b>constant</b> size_t := 1 + size_t (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_55_27">C</A>);
<span class="symbol"><A NAME="ref_57_7">S</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_47_9">String_Access</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_93_10">Case_Sensitive</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_58_10">Case_Sensitive</A>;
- <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_94_10">Match_Must_Be_Unique</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_59_10">Match_Must_Be_Unique</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_93_10">Case_Sensitive</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_57_10">Case_Sensitive</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_94_10">Match_Must_Be_Unique</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_58_10">Match_Must_Be_Unique</A>;
<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_95_10">Arr</A> := <b>new</b> chars_ptr_array (size_t (1) .. <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_56_7">L</A>);
<b>for</b> <span class="symbol"><A NAME="ref_62_11">I</A></span> <b>in</b> 1 .. Positive (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_56_7">L</A> - 1) <b>loop</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_62_11">I</A>) = <b>null</b> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_59_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_62_11">I</A>) = <b>null</b> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_95_10">Arr</A>.<b>all</b> (size_t (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_62_11">I</A>)) := New_String (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_62_11">I</A>).<b>all</b>);
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_95_10">Arr</A>.<b>all</b> (size_t (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_62_11">I</A>)) := New_String (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_59_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_62_11">I</A>).<b>all</b>);
<b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_65_21">Auto_Release_Names</A> <b>then</b>
- <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_57_7">S</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_62_11">I</A>);
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_57_7">S</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_59_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_62_11">I</A>);
Release_String (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_57_7">S</A>);
<b>end</b> <b>if</b>;
<b>end</b> <b>loop</b>;
@@ -105,29 +105,26 @@
<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_77_23">Enum</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_95_10">Arr</A> := <b>null</b>;
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_77_14">Release</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_91_14" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_84_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_91_30" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_84_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_91_14" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_84_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_91_30" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_84_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_92_30" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_85_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_62_9">Enumeration_Field</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_94_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_94_30" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_94_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_84_30">Fld</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_94_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_94_30" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_94_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_84_30">Fld</A>;
<span class="symbol"><A NAME="ref_95_30" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_94_16">Arg1</A></span> : chars_ptr_array;
<span class="symbol"><A NAME="ref_96_30" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_94_16">Arg2</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_97_30" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_94_16">Arg3</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_97_30" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_94_16">Arg3</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_enum");
- <span class="symbol"><A NAME="ref_100_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
<b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_85_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_95_10">Arr</A> = <b>null</b> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
- <b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_100_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_94_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_95_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_85_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_95_10">Arr</A>.<b>all</b>,
- <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_96_30">Arg2</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_85_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_93_10">Case_Sensitive</A>)),
- <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_97_30">Arg3</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A> (Boolean'Pos
- (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_85_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_94_10">Match_Must_Be_Unique</A>)));
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_100_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_100_7">Res</A>);
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A>
+ (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_94_16">Set_Fld_Type</A>
+ (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_95_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_85_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_95_10">Arr</A>.<b>all</b>,
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_96_30">Arg2</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_85_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_93_10">Case_Sensitive</A>)),
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_97_30">Arg3</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_85_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_94_10">Match_Must_Be_Unique</A>))));
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_84_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_85_30">Typ</A>, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_149_13">C_Choice_Router</A>);
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_84_14">Set_Field_Type</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm
index a5ae694168ca..90e86ad1ed5c 100644
--- a/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- S P E C --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2018,2020 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,14 +52,14 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.12 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.14 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_43_53" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_46_58">Enumeration</A></span> <b>is</b>
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_43_53" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_46_58">Enumeration</A></span> <b>is</b>
<b>pragma</b> Preelaborate
- (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>);
+ (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>);
<b>type</b> <span class="symbol"><A NAME="ref_47_9">String_Access</A></span> <b>is</b> <b>access</b> String;
@@ -71,9 +71,9 @@
<b>type</b> <span class="symbol"><A NAME="ref_55_9">Enumeration_Info</A></span> (<span class="symbol"><A NAME="ref_55_27" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_55_9">C</A></span> : Positive) <b>is</b>
<b>record</b>
- <span class="symbol"><A NAME="ref_57_10">Names</A></span> : Enum_Array (1 .. <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_55_27">C</A>);
- <span class="symbol"><A NAME="ref_58_10">Case_Sensitive</A></span> : Boolean := False;
- <span class="symbol"><A NAME="ref_59_10">Match_Must_Be_Unique</A></span> : Boolean := False;
+ <span class="symbol"><A NAME="ref_57_10">Case_Sensitive</A></span> : Boolean := False;
+ <span class="symbol"><A NAME="ref_58_10">Match_Must_Be_Unique</A></span> : Boolean := False;
+ <span class="symbol"><A NAME="ref_59_10">Names</A></span> : Enum_Array (1 .. <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_55_27">C</A>);
<b>end</b> <b>record</b>;
<b>type</b> <span class="symbol"><A NAME="ref_62_9">Enumeration_Field</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A> <b>with</b> <b>private</b>;
@@ -95,15 +95,15 @@
<span class="comment"><EM>-- But we may want to release the field to release the memory allocated</EM></span>
<span class="comment"><EM>-- by it internally. After that the Enumeration field is no longer usable.</EM></span>
- <span class="comment"><EM>-- The next type defintions are all ncurses extensions. They are typically</EM></span>
+ <span class="comment"><EM>-- The next type definitions are all ncurses extensions. They are typically</EM></span>
<span class="comment"><EM>-- not available in other curses implementations.</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_84_14" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_91_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_84_30" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_91_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_84_14" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_91_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_84_30" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_91_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_85_30" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_92_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_62_9">Enumeration_Field</A>);
<b>pragma</b> Inline (Set_Field_Type);
<b>private</b>
- <b>type</b> <span class="symbol"><A NAME="ref_89_9">CPA_Access</A></span> <b>is</b> <b>access</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings.chars_ptr_array;
+ <b>type</b> <span class="symbol"><A NAME="ref_89_9" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">CPA_Access</A></span> <b>is</b> <b>access</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings.chars_ptr_array;
<b>type</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_62_9">Enumeration_Field</A> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A> <b>with</b>
<b>record</b>
@@ -112,5 +112,5 @@
<span class="symbol"><A NAME="ref_95_10">Arr</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_89_9">CPA_Access</A> := <b>null</b>;
<b>end</b> <b>record</b>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_43_53">Enumeration</A>;
</PRE></BODY></HTML>
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
index 9fd50ea6f755..030e87ddd26f 100644
--- 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
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,33 +52,29 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.11 @</EM></span>
-<span class="comment"><EM>-- @Date: 2011/03/19 00:45:37 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.13 @</EM></span>
+<span class="comment"><EM>-- @Date: 2014/05/24 21:31:05 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_44_58" HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_41_53">IntField</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_44_58" HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_41_53">IntField</A></span> <b>is</b>
- <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_51_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_46_30" HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_51_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_51_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_46_30" HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_51_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_52_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_44_9">Integer_Field</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_49_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_49_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_49_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_51_30">Fld</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_49_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_49_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_49_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_51_30">Fld</A>;
<span class="symbol"><A NAME="ref_50_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_49_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_51_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_49_16">Arg2</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_57_12">C_Long_Int</A>;
- <span class="symbol"><A NAME="ref_52_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_49_16">Arg3</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_57_12">C_Long_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_51_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_49_16">Arg2</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Long_Int</A>;
+ <span class="symbol"><A NAME="ref_52_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_49_16">Arg3</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Long_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_integer");
- <span class="symbol"><A NAME="ref_55_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_55_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_49_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_50_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_46_10">Precision</A>),
- <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_51_30">Arg2</A> =&gt; <A HREF="terminal_interface-curses-aux__ads.htm#ref_57_12">C_Long_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_47_10">Lower_Limit</A>),
- <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_52_30">Arg3</A> =&gt; <A HREF="terminal_interface-curses-aux__ads.htm#ref_57_12">C_Long_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_48_10">Upper_Limit</A>));
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_55_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_55_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_49_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_50_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_46_10">Precision</A>),
+ <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_51_30">Arg2</A> =&gt; <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Long_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_47_10">Lower_Limit</A>),
+ <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_52_30">Arg3</A> =&gt; <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Long_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_48_10">Upper_Limit</A>)));
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_51_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_52_30">Typ</A>);
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_51_14">Set_Field_Type</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_41_53">IntField</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_41_53">IntField</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm
index b46963a5eb86..f16b58690ece 100644
--- a/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm
@@ -55,8 +55,8 @@
<span class="comment"><EM>-- @Revision: 1.12 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_41_53" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_44_58">IntField</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_41_53">IntField</A>);
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_41_53" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_44_58">IntField</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_41_53">IntField</A>);
<b>type</b> <span class="symbol"><A NAME="ref_44_9">Integer_Field</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A> <b>with</b>
<b>record</b>
@@ -65,9 +65,9 @@
<span class="symbol"><A NAME="ref_48_10">Upper_Limit</A></span> : Integer;
<b>end</b> <b>record</b>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_51_14" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_46_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_51_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_46_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_51_14" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_46_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_51_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_46_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_52_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_47_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_44_9">Integer_Field</A>);
<b>pragma</b> Inline (Set_Field_Type);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_41_53">IntField</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_41_53">IntField</A>;
</PRE></BODY></HTML>
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
index 2c13916503d3..310b27f38e59 100644
--- 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
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,29 +52,25 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.11 @</EM></span>
-<span class="comment"><EM>-- @Date: 2011/03/19 00:45:37 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.13 @</EM></span>
+<span class="comment"><EM>-- @Date: 2014/05/24 21:31:05 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_44_58" HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_41_53">IPV4_Address</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_44_58" HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_41_53">IPV4_Address</A></span> <b>is</b>
- <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_47_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_46_30" HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_47_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_47_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_46_30" HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_47_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_48_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_45_9">Internet_V4_Address_Field</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_49_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_49_30" HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_49_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_47_30">Fld</A>)
- <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_49_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_49_30" HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_49_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_47_30">Fld</A>)
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_ipv4");
- <span class="symbol"><A NAME="ref_53_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_53_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_49_16">Set_Fld_Type</A>;
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_53_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_53_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_49_16">Set_Fld_Type</A>);
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_47_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_48_30">Typ</A>);
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_47_14">Set_Field_Type</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_41_53">IPV4_Address</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_41_53">IPV4_Address</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm
index 41942c1658ab..9b339f977d51 100644
--- a/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm
@@ -55,15 +55,15 @@
<span class="comment"><EM>-- @Revision: 1.12 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_41_53" HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_44_58">IPV4_Address</A></span> <b>is</b>
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_41_53" HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_44_58">IPV4_Address</A></span> <b>is</b>
<b>pragma</b> Preelaborate
- (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_41_53">IPV4_Address</A>);
+ (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_41_53">IPV4_Address</A>);
<b>type</b> <span class="symbol"><A NAME="ref_45_9">Internet_V4_Address_Field</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A> <b>with</b> <b>null</b> <b>record</b>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_47_14" HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_46_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_46_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_47_14" HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_46_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_46_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_48_30" HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_47_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_45_9">Internet_V4_Address_Field</A>);
<b>pragma</b> Inline (Set_Field_Type);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_41_53">IPV4_Address</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_41_53">IPV4_Address</A>;
</PRE></BODY></HTML>
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
index 5986b6565f4b..05c829e96ece 100644
--- 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
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,36 +52,32 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.12 @</EM></span>
-<span class="comment"><EM>-- @Date: 2011/03/19 00:45:37 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.14 @</EM></span>
+<span class="comment"><EM>-- @Date: 2014/05/24 21:31:05 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_45_58" HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_41_53">Numeric</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_45_58" HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_41_53">Numeric</A></span> <b>is</b>
- <b>procedure</b> <span class="symbol"><A NAME="ref_47_14" HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_51_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_51_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_47_14" HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_51_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_51_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_48_30" HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_52_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_44_9">Numeric_Field</A>)
<b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_50_12">Double</A></span> <b>is</b> <b>new</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.double;
+ <b>type</b> <span class="symbol"><A NAME="ref_50_12">Double</A></span> <b>is</b> <b>new</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.double;
- <b>function</b> <span class="symbol"><A NAME="ref_52_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_52_30" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_52_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_51_30">Fld</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_52_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_52_30" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_52_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_51_30">Fld</A>;
<span class="symbol"><A NAME="ref_53_30" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_52_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
<span class="symbol"><A NAME="ref_54_30" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_52_16">Arg2</A></span> : <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_50_12">Double</A>;
- <span class="symbol"><A NAME="ref_55_30" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_52_16">Arg3</A></span> : <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_50_12">Double</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_55_30" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_52_16">Arg3</A></span> : <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_50_12">Double</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_numeric");
- <span class="symbol"><A NAME="ref_58_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_58_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_52_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_53_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_46_10">Precision</A>),
- <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_54_30">Arg2</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_50_12">Double</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_47_10">Lower_Limit</A>),
- <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_55_30">Arg3</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_50_12">Double</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_48_10">Upper_Limit</A>));
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_58_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_58_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_52_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_53_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_46_10">Precision</A>),
+ <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_54_30">Arg2</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_50_12">Double</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_47_10">Lower_Limit</A>),
+ <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_55_30">Arg3</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_50_12">Double</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_48_10">Upper_Limit</A>)));
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_51_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_52_30">Typ</A>);
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_51_14">Set_Field_Type</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_41_53">Numeric</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_41_53">Numeric</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm
index 14121bc2968d..94882246fd04 100644
--- a/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm
@@ -55,8 +55,8 @@
<span class="comment"><EM>-- @Revision: 1.12 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_41_53" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_45_58">Numeric</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_41_53">Numeric</A>);
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_41_53" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_45_58">Numeric</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_41_53">Numeric</A>);
<b>type</b> <span class="symbol"><A NAME="ref_44_9">Numeric_Field</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A> <b>with</b>
<b>record</b>
@@ -65,9 +65,9 @@
<span class="symbol"><A NAME="ref_48_10">Upper_Limit</A></span> : Float;
<b>end</b> <b>record</b>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_51_14" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_47_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_51_30" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_47_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_51_14" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_47_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_51_30" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_47_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_52_30" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_48_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_44_9">Numeric_Field</A>);
<b>pragma</b> Inline (Set_Field_Type);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_41_53">Numeric</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_41_53">Numeric</A>;
</PRE></BODY></HTML>
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
index b5ed92283092..80e0e48759df 100644
--- 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
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,34 +52,25 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.10 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.12 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_44_58" HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_41_53">RegExp</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_44_58" HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_41_53">RegExp</A></span> <b>is</b>
- <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_51_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_46_30" HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_51_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_51_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_46_30" HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_51_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_52_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_46_9">Regular_Expression_Field</A>)
<b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_49_12">Char_Ptr</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.char;
-
- <b>function</b> <span class="symbol"><A NAME="ref_51_16">Set_Ftyp</A></span> (<span class="symbol"><A NAME="ref_51_26" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_51_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_51_30">Fld</A>;
- <span class="symbol"><A NAME="ref_52_26" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_51_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_49_12">Char_Ptr</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_49_16">Set_Ftyp</A></span> (<span class="symbol"><A NAME="ref_49_26" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_49_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_51_30">Fld</A>;
+ <span class="symbol"><A NAME="ref_50_26" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_49_16">Arg1</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Ftyp, "set_field_type_regexp");
- <span class="symbol"><A NAME="ref_55_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_48_10">Regular_Expression</A>.<b>all</b>'Length);
- <span class="symbol"><A NAME="ref_56_7">Len</A></span> : size_t;
- <span class="symbol"><A NAME="ref_57_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- To_C (<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_48_10">Regular_Expression</A>.<b>all</b>, <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_55_7">Txt</A>, <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_56_7">Len</A>);
- <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_57_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_51_16">Set_Ftyp</A> (<A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_52_26">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_55_7">Txt</A> (<A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_55_7">Txt</A>'First)'<b>Access</b>);
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_57_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_57_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_49_16">Set_Ftyp</A> (<A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_50_26">Arg1</A> =&gt; To_C (<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_48_10">Regular_Expression</A>.<b>all</b>)));
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_51_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_52_30">Typ</A>);
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_51_14">Set_Field_Type</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_41_53">RegExp</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_41_53">RegExp</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm
index e15f18247e93..c5f871288ce9 100644
--- a/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm
@@ -55,8 +55,8 @@
<span class="comment"><EM>-- @Revision: 1.12 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_41_53" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_44_58">RegExp</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_41_53">RegExp</A>);
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_41_53" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_44_58">RegExp</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_41_53">RegExp</A>);
<b>type</b> <span class="symbol"><A NAME="ref_44_9">String_Access</A></span> <b>is</b> <b>access</b> String;
@@ -65,9 +65,9 @@
<span class="symbol"><A NAME="ref_48_10">Regular_Expression</A></span> : <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_44_9">String_Access</A>;
<b>end</b> <b>record</b>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_51_14" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_46_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_51_30" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_46_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_51_14" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_46_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_51_30" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_46_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_52_30" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_47_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_46_9">Regular_Expression_Field</A>);
<b>pragma</b> Inline (Set_Field_Type);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_41_53">RegExp</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_41_53">RegExp</A>;
</PRE></BODY></HTML>
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
index 0761a198eeac..2abd20d10bf7 100644
--- 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
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2008,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,69 +52,65 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.17 @</EM></span>
-<span class="comment"><EM>-- @Date: 2011/03/22 10:53:37 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.20 @</EM></span>
+<span class="comment"><EM>-- @Date: 2014/05/24 21:31:05 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>with</b> System.Address_To_Access_Conversions;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>.<span class="symbol"><A NAME="ref_45_63" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_44_58">Choice</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>.<span class="symbol"><A NAME="ref_45_63" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_44_58">Choice</A></span> <b>is</b>
<b>package</b> Argument_Conversions <b>is</b>
<b>new</b> System.Address_To_Access_Conversions (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_211_9">Argument</A>);
- <b>function</b> <span class="symbol"><A NAME="ref_50_13" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_80_13">Generic_Next</A></span> (<span class="symbol"><A NAME="ref_50_27" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_80_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_51_27" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_81_27">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_50_13" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_80_13">Generic_Next</A></span> (<span class="symbol"><A NAME="ref_50_27" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_80_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_51_27" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_81_27">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>
<b>is</b>
<span class="symbol"><A NAME="ref_53_7">Result</A></span> : Boolean;
<span class="symbol"><A NAME="ref_54_7">Udf</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_57_9">User_Defined_Field_Type_With_Choice_Access</A> :=
<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_57_9">User_Defined_Field_Type_With_Choice_Access</A>
- (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_81_27">Usr</A>)).<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A>);
+ (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_81_27">Usr</A>)).<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A>);
<b>begin</b>
<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_53_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_60_13">Next</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_80_27">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_54_7">Udf</A>.<b>all</b>);
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_53_7">Result</A>));
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_53_7">Result</A>));
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_80_13">Generic_Next</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_62_13" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_87_13">Generic_Prev</A></span> (<span class="symbol"><A NAME="ref_62_27" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_87_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_63_27" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_88_27">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_62_13" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_87_13">Generic_Prev</A></span> (<span class="symbol"><A NAME="ref_62_27" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_87_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_63_27" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_88_27">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>
<b>is</b>
<span class="symbol"><A NAME="ref_65_7">Result</A></span> : Boolean;
<span class="symbol"><A NAME="ref_66_7">Udf</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_57_9">User_Defined_Field_Type_With_Choice_Access</A> :=
<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_57_9">User_Defined_Field_Type_With_Choice_Access</A>
- (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_88_27">Usr</A>)).<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A>);
+ (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_88_27">Usr</A>)).<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A>);
<b>begin</b>
<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_65_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_67_13">Previous</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_87_27">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_66_7">Udf</A>.<b>all</b>);
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_65_7">Result</A>));
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_65_7">Result</A>));
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_87_13">Generic_Prev</A>;
<span class="comment"><EM>-- -----------------------------------------------------------------------</EM></span>
<span class="comment"><EM>--</EM></span>
<b>function</b> <span class="symbol"><A NAME="ref_76_13" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_78_13">C_Generic_Choice</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_78_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
+ <span class="symbol"><A NAME="ref_78_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<span class="symbol"><A NAME="ref_79_7">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
<b>begin</b>
<b>if</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_142_4">M_Generic_Choice</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A> <b>then</b>
<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_79_7">T</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_222_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_81_13">Generic_Field_Check</A>'<b>Access</b>,
<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_88_13">Generic_Char_Check</A>'<b>Access</b>);
<b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_79_7">T</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>else</b>
<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_78_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_227_13">Set_Fieldtype_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_79_7">T</A>,
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_162_13">Make_Arg</A>'<b>Access</b>,
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_167_13">Copy_Arg</A>'<b>Access</b>,
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_172_14">Free_Arg</A>'<b>Access</b>);
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_78_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_78_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_78_7">Res</A>);
<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_78_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_234_13">Set_Fieldtype_Choice</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_79_7">T</A>,
<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_80_13">Generic_Next</A>'<b>Access</b>,
<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_87_13">Generic_Prev</A>'<b>Access</b>);
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_78_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_78_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_78_7">Res</A>);
<b>end</b> <b>if</b>;
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_142_4">M_Generic_Choice</A> := <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_79_7">T</A>;
<b>end</b> <b>if</b>;
@@ -122,5 +118,5 @@
<b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_142_4">M_Generic_Choice</A>;
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_78_13">C_Generic_Choice</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>.<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_44_58">Choice</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>.<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_44_58">Choice</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm
index 9785cd6c383b..6f730ef6d5ec 100644
--- a/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm
@@ -56,13 +56,13 @@
<span class="comment"><EM>-- @Date: 2011/03/19 12:27:47 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>.<span class="symbol"><A NAME="ref_44_58" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_45_63">Choice</A></span> <b>is</b>
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>.<span class="symbol"><A NAME="ref_44_58" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_45_63">Choice</A></span> <b>is</b>
<b>pragma</b> Preelaborate
- (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>.<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_44_58">Choice</A>);
+ (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>.<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_44_58">Choice</A>);
- <b>subtype</b> <span class="symbol"><A NAME="ref_48_12">C_Int</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int;
+ <b>subtype</b> <span class="symbol"><A NAME="ref_48_12">C_Int</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int;
<b>type</b> <span class="symbol"><A NAME="ref_50_9">User_Defined_Field_Type_With_Choice</A></span> <b>is</b> <b>abstract</b> <b>new</b>
<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_48_9">User_Defined_Field_Type</A> <b>with</b> <b>null</b> <b>record</b>;
@@ -75,14 +75,14 @@
<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_50_9">User_Defined_Field_Type_With_Choice</A>'Class;
<b>function</b> <span class="symbol"><A NAME="ref_60_13">Next</A></span>
- (<span class="symbol"><A NAME="ref_61_7" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_60_13">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ (<span class="symbol"><A NAME="ref_61_7" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_60_13">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_62_7" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_60_13">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_50_9">User_Defined_Field_Type_With_Choice</A>) <b>return</b> Boolean
<b>is</b> <b>abstract</b>;
<span class="comment"><EM>-- If True is returned, the function successfully generated a next</EM></span>
<span class="comment"><EM>-- value into the fields buffer.</EM></span>
<b>function</b> <span class="symbol"><A NAME="ref_67_13">Previous</A></span>
- (<span class="symbol"><A NAME="ref_68_7" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_67_13">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ (<span class="symbol"><A NAME="ref_68_7" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_67_13">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_69_7" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_67_13">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_50_9">User_Defined_Field_Type_With_Choice</A>) <b>return</b> Boolean
<b>is</b> <b>abstract</b>;
<span class="comment"><EM>-- If True is returned, the function successfully generated a previous</EM></span>
@@ -94,19 +94,19 @@
<b>private</b>
<b>function</b> <span class="symbol"><A NAME="ref_78_13" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_76_13">C_Generic_Choice</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_80_13" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_50_13">Generic_Next</A></span> (<span class="symbol"><A NAME="ref_80_27" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_50_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_81_27" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_51_27">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_80_13" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_50_13">Generic_Next</A></span> (<span class="symbol"><A NAME="ref_80_27" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_50_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_81_27" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_51_27">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_80_13">Generic_Next</A>);
<span class="comment"><EM>-- This is the generic next Choice_Function for the low-level fieldtype</EM></span>
<span class="comment"><EM>-- representing all the User_Defined_Field_Type derivatives. It routes</EM></span>
<span class="comment"><EM>-- the call to the Next implementation for the type.</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_87_13" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_62_13">Generic_Prev</A></span> (<span class="symbol"><A NAME="ref_87_27" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_62_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_88_27" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_63_27">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_87_13" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_62_13">Generic_Prev</A></span> (<span class="symbol"><A NAME="ref_87_27" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_62_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_88_27" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_63_27">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_87_13">Generic_Prev</A>);
<span class="comment"><EM>-- This is the generic prev Choice_Function for the low-level fieldtype</EM></span>
<span class="comment"><EM>-- representing all the User_Defined_Field_Type derivatives. It routes</EM></span>
<span class="comment"><EM>-- the call to the Previous implementation for the type.</EM></span>
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>.<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_44_58">Choice</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>.<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_44_58">Choice</A>;
</PRE></BODY></HTML>
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
index 94ed879fb637..0792f4163f7e 100644
--- 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
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,100 +52,93 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.21 @</EM></span>
-<span class="comment"><EM>-- @Date: 2011/03/23 00:44:58 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.23 @</EM></span>
+<span class="comment"><EM>-- @Date: 2014/05/24 21:31:05 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>with</b> System.Address_To_Access_Conversions;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_45_58" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_45_58" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A></span> <b>is</b>
- <b>procedure</b> <span class="symbol"><A NAME="ref_47_14" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_70_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_70_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_47_14" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_70_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_70_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_48_30" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_71_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_48_9">User_Defined_Field_Type</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_50_16" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_61_16">Allocate_Arg</A></span> (<span class="symbol"><A NAME="ref_50_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_61_30">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_48_9">User_Defined_Field_Type</A>'Class)
+ <b>function</b> <span class="symbol"><A NAME="ref_50_16" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_59_16">Allocate_Arg</A></span> (<span class="symbol"><A NAME="ref_50_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_59_30">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_48_9">User_Defined_Field_Type</A>'Class)
<b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_53_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_53_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_53_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_70_30">Fld</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_53_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_53_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_53_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_70_30">Fld</A>;
<span class="symbol"><A NAME="ref_54_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_53_16">Cft</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_79_13">C_Generic_Type</A>;
<span class="symbol"><A NAME="ref_55_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_53_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>)
- <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_46_12">C_Int</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_user");
- <span class="symbol"><A NAME="ref_59_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
-
- <b>function</b> <span class="symbol"><A NAME="ref_61_16" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_50_16">Allocate_Arg</A></span> (<span class="symbol"><A NAME="ref_61_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_50_30">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_48_9">User_Defined_Field_Type</A>'Class)
+ <b>function</b> <span class="symbol"><A NAME="ref_59_16" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_50_16">Allocate_Arg</A></span> (<span class="symbol"><A NAME="ref_59_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_50_30">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_48_9">User_Defined_Field_Type</A>'Class)
<b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_64_10">Ptr</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_63_9">Field_Type_Access</A>
+ <span class="symbol"><A NAME="ref_62_10">Ptr</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_63_9">Field_Type_Access</A>
:= <b>new</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_48_9">User_Defined_Field_Type</A>'Class'(<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_50_30">T</A>);
<b>begin</b>
<b>return</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_211_9">Argument</A>'(<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A> =&gt; System.Null_Address,
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_64_10">Ptr</A>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_62_10">Ptr</A>,
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A>);
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_50_16">Allocate_Arg</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_59_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_53_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_55_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_50_16">Allocate_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_71_30">Typ</A>));
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_59_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_59_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_53_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_55_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_50_16">Allocate_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_71_30">Typ</A>)));
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_70_14">Set_Field_Type</A>;
<b>package</b> Argument_Conversions <b>is</b>
<b>new</b> System.Address_To_Access_Conversions (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_211_9">Argument</A>);
- <b>function</b> <span class="symbol"><A NAME="ref_82_13" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_81_13">Generic_Field_Check</A></span> (<span class="symbol"><A NAME="ref_82_34" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_81_34">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_83_34" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_82_34">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_77_13" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_81_13">Generic_Field_Check</A></span> (<span class="symbol"><A NAME="ref_77_34" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_81_34">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_78_34" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_82_34">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_85_7">Result</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_86_7">Udf</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_53_9">User_Defined_Field_Type_Access</A> :=
+ <span class="symbol"><A NAME="ref_80_7">Result</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_81_7">Udf</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_53_9">User_Defined_Field_Type_Access</A> :=
<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_53_9">User_Defined_Field_Type_Access</A>
(<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_82_34">Usr</A>)).<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A>);
<b>begin</b>
- <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_85_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_56_13">Field_Check</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_81_34">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_86_7">Udf</A>.<b>all</b>);
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_85_7">Result</A>));
+ <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_80_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_56_13">Field_Check</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_81_34">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_81_7">Udf</A>.<b>all</b>);
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_80_7">Result</A>));
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_81_13">Generic_Field_Check</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_94_13" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_88_13">Generic_Char_Check</A></span> (<span class="symbol"><A NAME="ref_94_33" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_88_33">Ch</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_46_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_95_33" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_89_33">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_89_13" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_88_13">Generic_Char_Check</A></span> (<span class="symbol"><A NAME="ref_89_33" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_88_33">Ch</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_46_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_90_33" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_89_33">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_97_7">Result</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_98_7">Udf</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_53_9">User_Defined_Field_Type_Access</A> :=
+ <span class="symbol"><A NAME="ref_92_7">Result</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_93_7">Udf</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_53_9">User_Defined_Field_Type_Access</A> :=
<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_53_9">User_Defined_Field_Type_Access</A>
(<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_89_33">Usr</A>)).<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A>);
<b>begin</b>
- <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_97_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_63_13">Character_Check</A> (Character'Val (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_88_33">Ch</A>), <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_98_7">Udf</A>.<b>all</b>);
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_97_7">Result</A>));
+ <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_92_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_63_13">Character_Check</A> (Character'Val (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_88_33">Ch</A>), <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_93_7">Udf</A>.<b>all</b>);
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_92_7">Result</A>));
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_88_13">Generic_Char_Check</A>;
<span class="comment"><EM>-- -----------------------------------------------------------------------</EM></span>
<span class="comment"><EM>--</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_108_13" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_79_13">C_Generic_Type</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_103_13" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_79_13">C_Generic_Type</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_110_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
- <span class="symbol"><A NAME="ref_111_7">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
+ <span class="symbol"><A NAME="ref_105_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
+ <span class="symbol"><A NAME="ref_106_7">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
<b>begin</b>
<b>if</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_141_4">M_Generic_Type</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A> <b>then</b>
- <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_111_7">T</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_222_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_81_13">Generic_Field_Check</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_106_7">T</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_222_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_81_13">Generic_Field_Check</A>'<b>Access</b>,
<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_88_13">Generic_Char_Check</A>'<b>Access</b>);
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_111_7">T</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_106_7">T</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>else</b>
- <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_110_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_227_13">Set_Fieldtype_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_111_7">T</A>,
+ <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_105_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_227_13">Set_Fieldtype_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_106_7">T</A>,
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_162_13">Make_Arg</A>'<b>Access</b>,
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_167_13">Copy_Arg</A>'<b>Access</b>,
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_172_14">Free_Arg</A>'<b>Access</b>);
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_110_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_110_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_105_7">Res</A>);
<b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_141_4">M_Generic_Type</A> := <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_111_7">T</A>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_141_4">M_Generic_Type</A> := <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_106_7">T</A>;
<b>end</b> <b>if</b>;
<b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_141_4">M_Generic_Type</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A>);
<b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_141_4">M_Generic_Type</A>;
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_79_13">C_Generic_Type</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm b/doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm
index 2b579166b5df..d11be5d7cfd3 100644
--- a/doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm
@@ -56,11 +56,11 @@
<span class="comment"><EM>-- @Date: 2011/03/19 12:27:21 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<span class="symbol"><A NAME="ref_44_53" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_45_58">User</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>);
- <b>subtype</b> <span class="symbol"><A NAME="ref_46_12">C_Int</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int;
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<span class="symbol"><A NAME="ref_44_53" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_45_58">User</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>);
+ <b>subtype</b> <span class="symbol"><A NAME="ref_46_12">C_Int</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int;
<b>type</b> <span class="symbol"><A NAME="ref_48_9">User_Defined_Field_Type</A></span> <b>is</b> <b>abstract</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A> <b>with</b> <b>null</b> <b>record</b>;
<span class="comment"><EM>-- This is the root of the mechanism we use to create field types in</EM></span>
@@ -71,7 +71,7 @@
<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_48_9">User_Defined_Field_Type</A>'Class;
<b>function</b> <span class="symbol"><A NAME="ref_56_13">Field_Check</A></span>
- (<span class="symbol"><A NAME="ref_57_7" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_56_13">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ (<span class="symbol"><A NAME="ref_57_7" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_56_13">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_58_7" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_56_13">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_48_9">User_Defined_Field_Type</A>) <b>return</b> Boolean
<b>is</b> <b>abstract</b>;
<span class="comment"><EM>-- If True is returned, the field is considered valid, otherwise it is</EM></span>
@@ -84,7 +84,7 @@
<span class="comment"><EM>-- If True is returned, the character is considered as valid for the</EM></span>
<span class="comment"><EM>-- field, otherwise as invalid.</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_70_14" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_47_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_70_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_47_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_70_14" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_47_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_70_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_47_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_71_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_48_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_48_9">User_Defined_Field_Type</A>);
<span class="comment"><EM>-- This should work for all types derived from User_Defined_Field_Type.</EM></span>
<span class="comment"><EM>-- No need to reimplement it for your derived type.</EM></span>
@@ -93,21 +93,21 @@
<span class="comment"><EM>-- | Private Part.</EM></span>
<span class="comment"><EM>-- | Used by the Choice child package.</EM></span>
<b>private</b>
- <b>function</b> <span class="symbol"><A NAME="ref_79_13" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_108_13">C_Generic_Type</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_79_13" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_103_13">C_Generic_Type</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_81_13" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_82_13">Generic_Field_Check</A></span> (<span class="symbol"><A NAME="ref_81_34" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_82_34">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_82_34" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_83_34">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_81_13" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_77_13">Generic_Field_Check</A></span> (<span class="symbol"><A NAME="ref_81_34" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_77_34">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_82_34" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_78_34">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_81_13">Generic_Field_Check</A>);
<span class="comment"><EM>-- This is the generic Field_Check_Function for the low-level fieldtype</EM></span>
<span class="comment"><EM>-- representing all the User_Defined_Field_Type derivatives. It routes</EM></span>
<span class="comment"><EM>-- the call to the Field_Check implementation for the type.</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_88_13" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_94_13">Generic_Char_Check</A></span> (<span class="symbol"><A NAME="ref_88_33" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_94_33">Ch</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_46_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_89_33" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_95_33">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_88_13" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_89_13">Generic_Char_Check</A></span> (<span class="symbol"><A NAME="ref_88_33" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_89_33">Ch</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_46_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_89_33" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_90_33">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_88_13">Generic_Char_Check</A>);
<span class="comment"><EM>-- This is the generic Char_Check_Function for the low-level fieldtype</EM></span>
<span class="comment"><EM>-- representing all the User_Defined_Field_Type derivatives. It routes</EM></span>
<span class="comment"><EM>-- the call to the Character_Check implementation for the type.</EM></span>
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_44_53">User</A>;
</PRE></BODY></HTML>
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
index e12eab6b3d7c..51f90d803068 100644
--- a/doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm
+++ b/doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,11 +52,11 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.25 @</EM></span>
-<span class="comment"><EM>-- @Date: 2011/03/22 23:22:27 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.28 @</EM></span>
+<span class="comment"><EM>-- @Date: 2014/09/13 19:00:47 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
<b>with</b> Ada.Unchecked_Deallocation;
<b>with</b> System.Address_To_Access_Conversions;
@@ -65,17 +65,17 @@
<span class="comment"><EM>-- | man page form_fieldtype.3x</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- |</EM></span>
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<span class="symbol"><A NAME="ref_51_46" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<span class="symbol"><A NAME="ref_51_46" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A></span> <b>is</b>
<b>use</b> <b>type</b> System.Address;
<b>package</b> Argument_Conversions <b>is</b>
<b>new</b> System.Address_To_Access_Conversions (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_211_9">Argument</A>);
- <b>function</b> <span class="symbol"><A NAME="ref_58_13">Get_Fieldtype</A></span> (<span class="symbol"><A NAME="ref_58_28" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_58_13">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_58_13">Get_Fieldtype</A></span> (<span class="symbol"><A NAME="ref_58_28" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_58_13">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
<b>pragma</b> Import (C, Get_Fieldtype, "field_type");
- <b>function</b> <span class="symbol"><A NAME="ref_61_13">Get_Arg</A></span> (<span class="symbol"><A NAME="ref_61_22" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_61_13">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> System.Address;
+ <b>function</b> <span class="symbol"><A NAME="ref_61_13">Get_Arg</A></span> (<span class="symbol"><A NAME="ref_61_22" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_61_13">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> System.Address;
<b>pragma</b> Import (C, Get_Arg, "field_arg");
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
@@ -84,7 +84,7 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_70_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_79_13">Get_Type</A></span> (<span class="symbol"><A NAME="ref_70_23" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_79_23">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_63_9">Field_Type_Access</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_70_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_79_13">Get_Type</A></span> (<span class="symbol"><A NAME="ref_70_23" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_79_23">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_63_9">Field_Type_Access</A>
<b>is</b>
<span class="symbol"><A NAME="ref_72_7">Low_Level</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_58_13">Get_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_79_23">Fld</A>);
<span class="symbol"><A NAME="ref_73_7">Arg</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>;
@@ -93,144 +93,141 @@
<b>return</b> <b>null</b>;
<b>else</b>
<b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_72_7">Low_Level</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_143_4">M_Builtin_Router</A> <b>or</b> <b>else</b>
- <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_72_7">Low_Level</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_141_4">M_Generic_Type</A> <b>or</b> <b>else</b>
- <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_72_7">Low_Level</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_144_4">M_Choice_Router</A> <b>or</b> <b>else</b>
- <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_72_7">Low_Level</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_142_4">M_Generic_Choice</A> <b>then</b>
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_72_7">Low_Level</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_141_4">M_Generic_Type</A> <b>or</b> <b>else</b>
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_72_7">Low_Level</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_144_4">M_Choice_Router</A> <b>or</b> <b>else</b>
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_72_7">Low_Level</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_142_4">M_Generic_Choice</A>
+ <b>then</b>
<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_73_7">Arg</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>
(Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_61_13">Get_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_79_23">Fld</A>)));
<b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_73_7">Arg</A> = <b>null</b> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>else</b>
<b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_73_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A>;
<b>end</b> <b>if</b>;
<b>else</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>end</b> <b>if</b>;
<b>end</b> <b>if</b>;
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_79_13">Get_Type</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_95_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_167_13">Copy_Arg</A></span> (<span class="symbol"><A NAME="ref_95_23" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_167_23">Usr</A></span> : System.Address) <b>return</b> System.Address
+ <b>function</b> <span class="symbol"><A NAME="ref_96_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_167_13">Copy_Arg</A></span> (<span class="symbol"><A NAME="ref_96_23" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_167_23">Usr</A></span> : 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#ref_167_23">Usr</A>;
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_167_13">Copy_Arg</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_101_14" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_172_14">Free_Arg</A></span> (<span class="symbol"><A NAME="ref_101_24" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_172_24">Usr</A></span> : System.Address)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_102_14" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_172_14">Free_Arg</A></span> (<span class="symbol"><A NAME="ref_102_24" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_172_24">Usr</A></span> : System.Address)
<b>is</b>
<b>procedure</b> Free_Type <b>is</b> <b>new</b> Ada.Unchecked_Deallocation
(<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A>'Class, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_63_9">Field_Type_Access</A>);
<b>procedure</b> Freeargs <b>is</b> <b>new</b> Ada.Unchecked_Deallocation
(<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_211_9">Argument</A>, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>);
- <span class="symbol"><A NAME="ref_108_7">To_Be_Free</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>
+ <span class="symbol"><A NAME="ref_109_7">To_Be_Free</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>
:= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_172_24">Usr</A>));
- <span class="symbol"><A NAME="ref_110_7">Low_Level</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
+ <span class="symbol"><A NAME="ref_111_7">Low_Level</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_108_7">To_Be_Free</A> /= <b>null</b> <b>then</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_108_7">To_Be_Free</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A> /= System.Null_Address <b>then</b>
- <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_110_7">Low_Level</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_108_7">To_Be_Free</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>;
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_110_7">Low_Level</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_126_10">Freearg</A> /= <b>null</b> <b>then</b>
- <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_110_7">Low_Level</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_126_10">Freearg</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_108_7">To_Be_Free</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_109_7">To_Be_Free</A> /= <b>null</b> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_109_7">To_Be_Free</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A> /= System.Null_Address <b>then</b>
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_111_7">Low_Level</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_109_7">To_Be_Free</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_111_7">Low_Level</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_126_10">Freearg</A> /= <b>null</b> <b>then</b>
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_111_7">Low_Level</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_126_10">Freearg</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_109_7">To_Be_Free</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A>);
<b>end</b> <b>if</b>;
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_108_7">To_Be_Free</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A> /= <b>null</b> <b>then</b>
- Free_Type (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_108_7">To_Be_Free</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_109_7">To_Be_Free</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A> /= <b>null</b> <b>then</b>
+ Free_Type (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_109_7">To_Be_Free</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A>);
<b>end</b> <b>if</b>;
- Freeargs (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_108_7">To_Be_Free</A>);
+ Freeargs (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_109_7">To_Be_Free</A>);
<b>end</b> <b>if</b>;
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_172_14">Free_Arg</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_126_14" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_14">Wrap_Builtin</A></span> (<span class="symbol"><A NAME="ref_126_28" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_127_28" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_28">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A>'Class;
- <span class="symbol"><A NAME="ref_128_28" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_153_28">Cft</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_148_13">C_Builtin_Router</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_127_14" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_14">Wrap_Builtin</A></span> (<span class="symbol"><A NAME="ref_127_28" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_128_28" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_28">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A>'Class;
+ <span class="symbol"><A NAME="ref_129_28" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_153_28">Cft</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_148_13">C_Builtin_Router</A>)
<b>is</b>
- <span class="symbol"><A NAME="ref_130_7">Usr_Arg</A></span> : <b>constant</b> System.Address := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_61_13">Get_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_28">Fld</A>);
- <span class="symbol"><A NAME="ref_131_7">Low_Level</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_58_13">Get_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_28">Fld</A>);
- <span class="symbol"><A NAME="ref_132_7">Arg</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>;
- <span class="symbol"><A NAME="ref_133_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_134_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_134_30" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_134_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_28">Fld</A>;
+ <span class="symbol"><A NAME="ref_131_7">Usr_Arg</A></span> : <b>constant</b> System.Address := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_61_13">Get_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_28">Fld</A>);
+ <span class="symbol"><A NAME="ref_132_7">Low_Level</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_58_13">Get_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_28">Fld</A>);
+ <span class="symbol"><A NAME="ref_133_7">Arg</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_134_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_134_30" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_134_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_28">Fld</A>;
<span class="symbol"><A NAME="ref_135_30" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_134_16">Cf</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_153_28">Cft</A>;
- <span class="symbol"><A NAME="ref_136_30" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_134_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_136_30" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_134_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_user");
<b>begin</b>
- <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_131_7">Low_Level</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A>);
+ <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_132_7">Low_Level</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A>);
<b>if</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_153_28">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_148_13">C_Builtin_Router</A> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_153_28">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_149_13">C_Choice_Router</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>else</b>
- <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_132_7">Arg</A> := <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_211_9">Argument</A>'(<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A> =&gt; System.Null_Address,
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_133_7">Arg</A> := <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_211_9">Argument</A>'(<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A> =&gt; System.Null_Address,
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A> =&gt; <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A>'Class'(<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_28">Typ</A>),
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_58_13">Get_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_28">Fld</A>));
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_130_7">Usr_Arg</A> /= System.Null_Address <b>then</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_131_7">Low_Level</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_125_10">Copyarg</A> /= <b>null</b> <b>then</b>
- <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_132_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_131_7">Low_Level</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_125_10">Copyarg</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_130_7">Usr_Arg</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_131_7">Usr_Arg</A> /= System.Null_Address <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_132_7">Low_Level</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_125_10">Copyarg</A> /= <b>null</b> <b>then</b>
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_133_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_132_7">Low_Level</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_125_10">Copyarg</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_131_7">Usr_Arg</A>);
<b>else</b>
- <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_132_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_130_7">Usr_Arg</A>;
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_133_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_131_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#ref_133_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_134_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_136_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_132_7">Arg</A>);
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_133_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_133_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_134_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_136_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_133_7">Arg</A>));
<b>end</b> <b>if</b>;
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_151_14">Wrap_Builtin</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_162_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_177_13">Field_Check_Router</A></span> (<span class="symbol"><A NAME="ref_162_33" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_177_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_163_33" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_178_33">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_159_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_177_13">Field_Check_Router</A></span> (<span class="symbol"><A NAME="ref_159_33" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_177_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_160_33" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_178_33">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_165_7">Arg</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>
+ <span class="symbol"><A NAME="ref_162_7">Arg</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>
:= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_178_33">Usr</A>));
<b>begin</b>
- <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_165_7">Arg</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_165_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A>
- <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_165_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A> /= <b>null</b>);
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_165_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_127_10">Fcheck</A> /= <b>null</b> <b>then</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_165_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_127_10">Fcheck</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_177_33">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_165_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A>);
+ <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_162_7">Arg</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_162_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A>
+ <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_162_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A> /= <b>null</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_162_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_127_10">Fcheck</A> /= <b>null</b> <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_162_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_127_10">Fcheck</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_177_33">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_162_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A>);
<b>else</b>
<b>return</b> 1;
<b>end</b> <b>if</b>;
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_177_13">Field_Check_Router</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_177_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_185_13">Char_Check_Router</A></span> (<span class="symbol"><A NAME="ref_177_32" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_185_32">Ch</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_178_32" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_186_32">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_174_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_185_13">Char_Check_Router</A></span> (<span class="symbol"><A NAME="ref_174_32" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_185_32">Ch</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_175_32" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_186_32">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_180_7">Arg</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>
+ <span class="symbol"><A NAME="ref_177_7">Arg</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>
:= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_186_32">Usr</A>));
<b>begin</b>
- <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_180_7">Arg</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_180_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A>
- <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_180_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A> /= <b>null</b>);
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_180_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_128_10">Ccheck</A> /= <b>null</b> <b>then</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_180_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_128_10">Ccheck</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_185_32">Ch</A>, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_180_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A>);
+ <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_177_7">Arg</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_177_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A>
+ <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_177_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A> /= <b>null</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_177_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_128_10">Ccheck</A> /= <b>null</b> <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_177_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_128_10">Ccheck</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_185_32">Ch</A>, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_177_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A>);
<b>else</b>
<b>return</b> 1;
<b>end</b> <b>if</b>;
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_185_13">Char_Check_Router</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_192_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_193_13">Next_Router</A></span> (<span class="symbol"><A NAME="ref_192_26" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_193_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_193_26" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_194_26">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_189_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_193_13">Next_Router</A></span> (<span class="symbol"><A NAME="ref_189_26" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_193_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_190_26" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_194_26">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_195_7">Arg</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>
+ <span class="symbol"><A NAME="ref_192_7">Arg</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A>
:= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_194_26">Usr</A>));
<b>begin</b>
- <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_195_7">Arg</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_195_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A>
- <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_195_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A> /= <b>null</b>);
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_195_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_129_10">Next</A> /= <b>null</b> <b>then</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_195_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_129_10">Next</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_193_26">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_195_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A>);
+ <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_192_7">Arg</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_192_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A>
+ <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_192_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A> /= <b>null</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_192_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_129_10">Next</A> /= <b>null</b> <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_192_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_129_10">Next</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_193_26">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_192_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A>);
<b>else</b>
<b>return</b> 1;
<b>end</b> <b>if</b>;
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_193_13">Next_Router</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_207_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_201_13">Prev_Router</A></span> (<span class="symbol"><A NAME="ref_207_26" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_201_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_208_26" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_202_26">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_204_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_201_13">Prev_Router</A></span> (<span class="symbol"><A NAME="ref_204_26" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_201_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_205_26" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_202_26">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_210_7">Arg</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A> :=
+ <span class="symbol"><A NAME="ref_207_7">Arg</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A> :=
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_216_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_202_26">Usr</A>));
<b>begin</b>
- <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_210_7">Arg</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_210_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A>
- <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_210_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A> /= <b>null</b>);
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_210_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_129_16">Prev</A> /= <b>null</b> <b>then</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_210_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_129_16">Prev</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_201_26">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_210_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A>);
+ <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_207_7">Arg</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_207_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A>
+ <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_207_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_7">Typ</A> /= <b>null</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_207_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_129_16">Prev</A> /= <b>null</b> <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_207_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_129_16">Prev</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_201_26">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_207_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Usr</A>);
<b>else</b>
<b>return</b> 1;
<b>end</b> <b>if</b>;
@@ -238,26 +235,22 @@
<span class="comment"><EM>-- -----------------------------------------------------------------------</EM></span>
<span class="comment"><EM>--</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_224_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_148_13">C_Builtin_Router</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_221_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_148_13">C_Builtin_Router</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_226_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
- <span class="symbol"><A NAME="ref_227_7">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
+ <span class="symbol"><A NAME="ref_223_7">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
<b>begin</b>
<b>if</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_143_4">M_Builtin_Router</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A> <b>then</b>
- <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_227_7">T</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_222_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_177_13">Field_Check_Router</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_223_7">T</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_222_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_177_13">Field_Check_Router</A>'<b>Access</b>,
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_185_13">Char_Check_Router</A>'<b>Access</b>);
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_227_7">T</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_223_7">T</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>else</b>
- <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_226_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_227_13">Set_Fieldtype_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_227_7">T</A>,
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_162_13">Make_Arg</A>'<b>Access</b>,
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_167_13">Copy_Arg</A>'<b>Access</b>,
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_172_14">Free_Arg</A>'<b>Access</b>);
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_226_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_226_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_227_13">Set_Fieldtype_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_223_7">T</A>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_162_13">Make_Arg</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_167_13">Copy_Arg</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_172_14">Free_Arg</A>'<b>Access</b>));
<b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_143_4">M_Builtin_Router</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_227_7">T</A>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_143_4">M_Builtin_Router</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_223_7">T</A>;
<b>end</b> <b>if</b>;
<b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_143_4">M_Builtin_Router</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A>);
<b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_143_4">M_Builtin_Router</A>;
@@ -265,37 +258,30 @@
<span class="comment"><EM>-- -----------------------------------------------------------------------</EM></span>
<span class="comment"><EM>--</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_251_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_149_13">C_Choice_Router</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_244_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_149_13">C_Choice_Router</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_253_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
- <span class="symbol"><A NAME="ref_254_7">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
+ <span class="symbol"><A NAME="ref_246_7">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
<b>begin</b>
<b>if</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_144_4">M_Choice_Router</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A> <b>then</b>
- <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_254_7">T</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_222_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_177_13">Field_Check_Router</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_246_7">T</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_222_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_177_13">Field_Check_Router</A>'<b>Access</b>,
<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_185_13">Char_Check_Router</A>'<b>Access</b>);
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_254_7">T</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_246_7">T</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>else</b>
- <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_253_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_227_13">Set_Fieldtype_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_254_7">T</A>,
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_162_13">Make_Arg</A>'<b>Access</b>,
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_167_13">Copy_Arg</A>'<b>Access</b>,
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_172_14">Free_Arg</A>'<b>Access</b>);
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_253_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_253_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_227_13">Set_Fieldtype_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_246_7">T</A>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_162_13">Make_Arg</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_167_13">Copy_Arg</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_172_14">Free_Arg</A>'<b>Access</b>));
- <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_253_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_234_13">Set_Fieldtype_Choice</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_254_7">T</A>,
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_193_13">Next_Router</A>'<b>Access</b>,
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_201_13">Prev_Router</A>'<b>Access</b>);
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_253_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_253_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_234_13">Set_Fieldtype_Choice</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_246_7">T</A>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_193_13">Next_Router</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_201_13">Prev_Router</A>'<b>Access</b>));
<b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_144_4">M_Choice_Router</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_254_7">T</A>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_144_4">M_Choice_Router</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_246_7">T</A>;
<b>end</b> <b>if</b>;
<b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_144_4">M_Choice_Router</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_134_4">Null_Field_Type</A>);
<b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_144_4">M_Choice_Router</A>;
<b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_149_13">C_Choice_Router</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>;
</PRE></BODY></HTML>
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
index 00c5798e047d..c4b4525ffb30 100644
--- a/doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- S P E C --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2014,2018 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,15 +52,15 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.17 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.20 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<span class="symbol"><A NAME="ref_43_41" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_51_46">Field_Types</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>);
- <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int;
- <b>subtype</b> <span class="symbol"><A NAME="ref_46_12">C_Int</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int;
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<span class="symbol"><A NAME="ref_44_41" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_51_46">Field_Types</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>);
+ <b>subtype</b> <span class="symbol"><A NAME="ref_46_12">C_Int</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int;
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_fieldtype.3x.html">form_fieldtype.3x</A></EM></span>
@@ -79,8 +79,8 @@
<b>type</b> <span class="symbol"><A NAME="ref_63_9">Field_Type_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A>'Class;
- <span class="comment"><EM>-- #1A NAME="AFU_1"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_66_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_66_30" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_66_14">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_66_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_66_30" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_66_14">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="symbol"><A NAME="ref_67_30" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_66_14">Fld_Type</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A>) <b>is</b> <b>abstract</b>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_fieldtype.3x.html">set_field_type()</A></EM></span>
<span class="comment"><EM>-- But: we hide the vararg mechanism of the C interface. You always</EM></span>
@@ -92,8 +92,8 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/form_field_validation.3x.html">form_field_validation.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_2"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_79_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_70_13">Get_Type</A></span> (<span class="symbol"><A NAME="ref_79_23" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_70_23">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_63_9">Field_Type_Access</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_79_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_70_13">Get_Type</A></span> (<span class="symbol"><A NAME="ref_79_23" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_70_23">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_63_9">Field_Type_Access</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_validation.3x.html">field_type()</A></EM></span>
<span class="comment"><EM>-- AKA: field_arg()</EM></span>
<span class="comment"><EM>-- In Ada95 we can combine these. If you try to retrieve the field type</EM></span>
@@ -106,28 +106,28 @@
<span class="comment"><EM>-- | Most of this is used by the implementations of the child packages.</EM></span>
<span class="comment"><EM>-- |</EM></span>
<b>private</b>
- <b>type</b> <span class="symbol"><A NAME="ref_92_9">Makearg_Function</A></span> <b>is</b> <b>access</b>
- <b>function</b> (<span class="symbol"><A NAME="ref_93_16">Args</A></span> : System.Address) <b>return</b> System.Address;
+ <b>type</b> <span class="symbol"><A NAME="ref_92_9" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Makearg_Function</A></span> <b>is</b> <b>access</b>
+ <b>function</b> (<span class="symbol"><A NAME="ref_93_16" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_92_9">Args</A></span> : System.Address) <b>return</b> System.Address;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_92_9">Makearg_Function</A>);
<b>type</b> <span class="symbol"><A NAME="ref_96_9">Copyarg_Function</A></span> <b>is</b> <b>access</b>
- <b>function</b> (<span class="symbol"><A NAME="ref_97_16">Usr</A></span> : System.Address) <b>return</b> System.Address;
+ <b>function</b> (<span class="symbol"><A NAME="ref_97_16" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_96_9">Usr</A></span> : System.Address) <b>return</b> System.Address;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_96_9">Copyarg_Function</A>);
<b>type</b> <span class="symbol"><A NAME="ref_100_9">Freearg_Function</A></span> <b>is</b> <b>access</b>
- <b>procedure</b> (<span class="symbol"><A NAME="ref_101_17">Usr</A></span> : System.Address);
+ <b>procedure</b> (<span class="symbol"><A NAME="ref_101_17" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_100_9">Usr</A></span> : System.Address);
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_100_9">Freearg_Function</A>);
<b>type</b> <span class="symbol"><A NAME="ref_104_9">Field_Check_Function</A></span> <b>is</b> <b>access</b>
- <b>function</b> (<span class="symbol"><A NAME="ref_105_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>; <span class="symbol"><A NAME="ref_105_29">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> (<span class="symbol"><A NAME="ref_105_16" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_104_9">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>; <span class="symbol"><A NAME="ref_105_29" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_104_9">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_104_9">Field_Check_Function</A>);
<b>type</b> <span class="symbol"><A NAME="ref_108_9">Char_Check_Function</A></span> <b>is</b> <b>access</b>
- <b>function</b> (<span class="symbol"><A NAME="ref_109_16">Ch</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>; <span class="symbol"><A NAME="ref_109_28">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> (<span class="symbol"><A NAME="ref_109_16" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_108_9">Ch</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>; <span class="symbol"><A NAME="ref_109_28" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_108_9">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_108_9">Char_Check_Function</A>);
<b>type</b> <span class="symbol"><A NAME="ref_112_9">Choice_Function</A></span> <b>is</b> <b>access</b>
- <b>function</b> (<span class="symbol"><A NAME="ref_113_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>; <span class="symbol"><A NAME="ref_113_29">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> (<span class="symbol"><A NAME="ref_113_16" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_112_9">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>; <span class="symbol"><A NAME="ref_113_29" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_112_9">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_112_9">Choice_Function</A>);
<span class="comment"><EM>-- +----------------------------------------------------------------------</EM></span>
@@ -135,8 +135,8 @@
<span class="comment"><EM>-- |</EM></span>
<b>type</b> <span class="symbol"><A NAME="ref_119_9">Low_Level_Field_Type</A></span> <b>is</b>
<b>record</b>
- <span class="symbol"><A NAME="ref_121_10">Status</A></span> : <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.unsigned_short;
- <span class="symbol"><A NAME="ref_122_10">Ref_Count</A></span> : <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.long;
+ <span class="symbol"><A NAME="ref_121_10">Status</A></span> : <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.unsigned_short;
+ <span class="symbol"><A NAME="ref_122_10">Ref_Count</A></span> : <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.long;
<span class="symbol"><A NAME="ref_123_10">Left</A></span>, <span class="symbol"><A NAME="ref_123_16">Right</A></span> : System.Address;
<span class="symbol"><A NAME="ref_124_10">Makearg</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_92_9">Makearg_Function</A>;
<span class="symbol"><A NAME="ref_125_10">Copyarg</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_96_9">Copyarg_Function</A>;
@@ -162,12 +162,12 @@
<span class="comment"><EM>-- Two wrapper functions to access those low-level fieldtypes defined</EM></span>
<span class="comment"><EM>-- in this package.</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_148_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_224_13">C_Builtin_Router</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_149_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_251_13">C_Choice_Router</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_148_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_221_13">C_Builtin_Router</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_149_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_244_13">C_Choice_Router</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_151_14" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_126_14">Wrap_Builtin</A></span> (<span class="symbol"><A NAME="ref_151_28" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_126_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_152_28" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_127_28">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A>'Class;
- <span class="symbol"><A NAME="ref_153_28" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_128_28">Cft</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_148_13">C_Builtin_Router</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_151_14" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_127_14">Wrap_Builtin</A></span> (<span class="symbol"><A NAME="ref_151_28" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_127_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_152_28" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_128_28">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_52_9">Field_Type</A>'Class;
+ <span class="symbol"><A NAME="ref_153_28" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_129_28">Cft</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_148_13">C_Builtin_Router</A>);
<span class="comment"><EM>-- This procedure has to be called by the Set_Field_Type implementation</EM></span>
<span class="comment"><EM>-- for builtin low-level fieldtypes to replace it by an Ada95</EM></span>
<span class="comment"><EM>-- conformant Field_Type object.</EM></span>
@@ -181,42 +181,42 @@
<span class="comment"><EM>-- This is the Makearg_Function for the internal low-level types</EM></span>
<span class="comment"><EM>-- introduced by this binding.</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_167_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_95_13">Copy_Arg</A></span> (<span class="symbol"><A NAME="ref_167_23" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_95_23">Usr</A></span> : System.Address) <b>return</b> System.Address;
+ <b>function</b> <span class="symbol"><A NAME="ref_167_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_96_13">Copy_Arg</A></span> (<span class="symbol"><A NAME="ref_167_23" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_96_23">Usr</A></span> : System.Address) <b>return</b> System.Address;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_167_13">Copy_Arg</A>);
<span class="comment"><EM>-- This is the Copyarg_Function for the internal low-level types</EM></span>
<span class="comment"><EM>-- introduced by this binding.</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_172_14" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_101_14">Free_Arg</A></span> (<span class="symbol"><A NAME="ref_172_24" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_101_24">Usr</A></span> : System.Address);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_172_14" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_102_14">Free_Arg</A></span> (<span class="symbol"><A NAME="ref_172_24" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_102_24">Usr</A></span> : System.Address);
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_172_14">Free_Arg</A>);
<span class="comment"><EM>-- This is the Freearg_Function for the internal low-level types</EM></span>
<span class="comment"><EM>-- introduced by this binding.</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_177_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_162_13">Field_Check_Router</A></span> (<span class="symbol"><A NAME="ref_177_33" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_162_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_178_33" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_163_33">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_177_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_159_13">Field_Check_Router</A></span> (<span class="symbol"><A NAME="ref_177_33" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_159_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_178_33" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_160_33">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_177_13">Field_Check_Router</A>);
<span class="comment"><EM>-- This is the Field_Check_Function for the internal low-level types</EM></span>
<span class="comment"><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></span>
<span class="comment"><EM>-- type. It routes the call to the corresponding low-level validation</EM></span>
<span class="comment"><EM>-- function.</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_185_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_177_13">Char_Check_Router</A></span> (<span class="symbol"><A NAME="ref_185_32" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_177_32">Ch</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_186_32" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_178_32">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_185_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_174_13">Char_Check_Router</A></span> (<span class="symbol"><A NAME="ref_185_32" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_174_32">Ch</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_186_32" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_175_32">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_185_13">Char_Check_Router</A>);
<span class="comment"><EM>-- This is the Char_Check_Function for the internal low-level types</EM></span>
<span class="comment"><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></span>
<span class="comment"><EM>-- type. It routes the call to the corresponding low-level validation</EM></span>
<span class="comment"><EM>-- function.</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_193_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_192_13">Next_Router</A></span> (<span class="symbol"><A NAME="ref_193_26" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_192_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_194_26" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_193_26">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_193_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_189_13">Next_Router</A></span> (<span class="symbol"><A NAME="ref_193_26" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_189_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_194_26" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_190_26">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_193_13">Next_Router</A>);
<span class="comment"><EM>-- This is the Choice_Function for the internal low-level types</EM></span>
<span class="comment"><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></span>
<span class="comment"><EM>-- type. It routes the call to the corresponding low-level next_choice</EM></span>
<span class="comment"><EM>-- function.</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_201_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_207_13">Prev_Router</A></span> (<span class="symbol"><A NAME="ref_201_26" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_207_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_202_26" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_208_26">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_201_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_204_13">Prev_Router</A></span> (<span class="symbol"><A NAME="ref_201_26" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_204_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_202_26" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_205_26">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_201_13">Prev_Router</A>);
<span class="comment"><EM>-- This is the Choice_Function for the internal low-level types</EM></span>
<span class="comment"><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></span>
@@ -245,13 +245,13 @@
<span class="symbol"><A NAME="ref_228_32" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_227_13">Mak</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_92_9">Makearg_Function</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_162_13">Make_Arg</A>'<b>Access</b>;
<span class="symbol"><A NAME="ref_229_32" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_227_13">Cop</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_96_9">Copyarg_Function</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_167_13">Copy_Arg</A>'<b>Access</b>;
<span class="symbol"><A NAME="ref_230_32" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_227_13">Fre</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_100_9">Freearg_Function</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_172_14">Free_Arg</A>'<b>Access</b>)
- <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Fieldtype_Arg, "set_fieldtype_arg");
<b>function</b> <span class="symbol"><A NAME="ref_234_13">Set_Fieldtype_Choice</A></span> (<span class="symbol"><A NAME="ref_234_35" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_234_13">Cft</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_132_9">C_Field_Type</A>;
<span class="symbol"><A NAME="ref_235_35" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_234_13">Next</A></span>, <span class="symbol"><A NAME="ref_235_41" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_234_13">Prev</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_112_9">Choice_Function</A>)
- <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_46_12">C_Int</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Fieldtype_Choice, "set_fieldtype_choice");
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_43_41">Field_Types</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_44_41">Field_Types</A>;
</PRE></BODY></HTML>
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
index 677ec93f6e62..5dcf2c805fd2 100644
--- 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
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2014,2018 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,52 +52,47 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.13 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.16 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page form_field_userptr.3x</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- |</EM></span>
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<span class="symbol"><A NAME="ref_48_46" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_41">Field_User_Data</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<span class="symbol"><A NAME="ref_48_46" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_41">Field_User_Data</A></span> <b>is</b>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int;
-
- <b>procedure</b> <span class="symbol"><A NAME="ref_54_14" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_53_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_54_29" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_53_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_55_29" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_54_29">Data</A></span> : <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_52_14" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_53_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_52_29" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_53_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_53_29" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_54_29">Data</A></span> : <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_57_16">Set_Field_Userptr</A></span> (<span class="symbol"><A NAME="ref_57_35" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_57_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_58_35" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_57_16">Usr</A></span> : <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_55_16">Set_Field_Userptr</A></span> (<span class="symbol"><A NAME="ref_55_35" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_55_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_56_35" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_55_16">Usr</A></span> : <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Field_Userptr, "set_field_userptr");
- <span class="symbol"><A NAME="ref_61_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_57_16">Set_Field_Userptr</A> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_53_29">Fld</A>, <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_54_29">Data</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_61_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_61_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_55_16">Set_Field_Userptr</A> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_53_29">Fld</A>, <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_54_29">Data</A>));
<b>end</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_53_14">Set_User_Data</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_70_13" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_64_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_70_28" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_64_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_65_13" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_64_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_65_28" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_64_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_72_16">Field_Userptr</A></span> (<span class="symbol"><A NAME="ref_72_31" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_72_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_67_16">Field_Userptr</A></span> (<span class="symbol"><A NAME="ref_67_31" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_67_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>;
<b>pragma</b> Import (C, Field_Userptr, "field_userptr");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_72_16">Field_Userptr</A> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_64_28">Fld</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_67_16">Field_Userptr</A> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_64_28">Fld</A>);
<b>end</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_64_13">Get_User_Data</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_78_14" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_59_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_78_29" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_59_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_79_29" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_60_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_73_14" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_59_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_73_29" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_59_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_74_29" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_60_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>)
<b>is</b>
<b>begin</b>
<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_60_29">Data</A> := <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_64_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_59_29">Fld</A>);
<b>end</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_59_14">Get_User_Data</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_41">Field_User_Data</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_41">Field_User_Data</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm b/doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm
index 86f55965f2e1..5e5799463fe1 100644
--- a/doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm
@@ -59,29 +59,29 @@
<b>generic</b>
<b>type</b> <span class="symbol"><A NAME="ref_43_9" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_41">User</A></span> <b>is</b> <b>limited</b> <b>private</b>;
<b>type</b> <span class="symbol"><A NAME="ref_44_9" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_41">User_Access</A></span> <b>is</b> <b>access</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_43_9">User</A>;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<span class="symbol"><A NAME="ref_45_41" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_48_46">Field_User_Data</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_41">Field_User_Data</A>);
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<span class="symbol"><A NAME="ref_45_41" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_48_46">Field_User_Data</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_41">Field_User_Data</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_field_userptr.3x.html">form_field_userptr.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_1"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_53_14" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_54_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_53_29" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_54_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_54_29" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_55_29">Data</A></span> : <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_53_14" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_52_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_53_29" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_52_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_54_29" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_53_29">Data</A></span> : <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_userptr.3x.html">set_field_userptr</A></EM></span>
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_53_14">Set_User_Data</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_2"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_59_14" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_78_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_59_29" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_78_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_60_29" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_79_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_59_14" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_73_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_59_29" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_73_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_60_29" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_74_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_userptr.3x.html">field_userptr</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_3"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_64_13" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_70_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_64_28" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_70_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_64_13" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_65_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_64_28" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_65_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User_Access</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_userptr.3x.html">field_userptr</A></EM></span>
<span class="comment"><EM>-- Sama as function</EM></span>
<b>pragma</b> Inline (Get_User_Data);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_41">Field_User_Data</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_41">Field_User_Data</A>;
</PRE></BODY></HTML>
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
index 5a48dd913b66..a0ba2f5abf2f 100644
--- 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
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2014,2018 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,7 +52,7 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.13 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.16 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- |</EM></span>
@@ -60,45 +60,40 @@
<span class="comment"><EM>-- | man page form__userptr.3x</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- |</EM></span>
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<span class="symbol"><A NAME="ref_48_46" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_41">Form_User_Data</A></span> <b>is</b>
-
- <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int;
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<span class="symbol"><A NAME="ref_48_46" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_41">Form_User_Data</A></span> <b>is</b>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_55_14" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_53_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_55_29" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_53_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_56_29" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_54_29">Data</A></span> : <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_53_14" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_53_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_53_29" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_53_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_54_29" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_54_29">Data</A></span> : <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_58_16">Set_Form_Userptr</A></span> (<span class="symbol"><A NAME="ref_58_34" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_58_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_59_34" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_58_16">Data</A></span> : <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_56_16">Set_Form_Userptr</A></span> (<span class="symbol"><A NAME="ref_56_34" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_56_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_57_34" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_56_16">Data</A></span> : <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Form_Userptr, "set_form_userptr");
- <span class="symbol"><A NAME="ref_62_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_58_16">Set_Form_Userptr</A> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_53_29">Frm</A>, <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_54_29">Data</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_62_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_62_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_56_16">Set_Form_Userptr</A> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_53_29">Frm</A>, <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_54_29">Data</A>));
<b>end</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_53_14">Set_User_Data</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_71_13" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_64_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_71_28" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_64_28">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_66_13" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_64_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_66_28" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_64_28">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_73_16">Form_Userptr</A></span> (<span class="symbol"><A NAME="ref_73_30" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_73_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_68_16">Form_Userptr</A></span> (<span class="symbol"><A NAME="ref_68_30" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_68_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>;
<b>pragma</b> Import (C, Form_Userptr, "form_userptr");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_73_16">Form_Userptr</A> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_64_28">Frm</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_68_16">Form_Userptr</A> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_64_28">Frm</A>);
<b>end</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_64_13">Get_User_Data</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_79_14" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_59_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_79_29" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_59_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_80_29" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_60_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_74_14" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_59_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_74_29" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_59_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_75_29" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_60_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>)
<b>is</b>
<b>begin</b>
<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_60_29">Data</A> := <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_64_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_59_29">Frm</A>);
<b>end</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_59_14">Get_User_Data</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_41">Form_User_Data</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_41">Form_User_Data</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm b/doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm
index 5817e189acd4..20b19d0b50a9 100644
--- a/doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm
@@ -59,29 +59,29 @@
<b>generic</b>
<b>type</b> <span class="symbol"><A NAME="ref_43_9" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_41">User</A></span> <b>is</b> <b>limited</b> <b>private</b>;
<b>type</b> <span class="symbol"><A NAME="ref_44_9" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_41">User_Access</A></span> <b>is</b> <b>access</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_43_9">User</A>;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<span class="symbol"><A NAME="ref_45_41" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_48_46">Form_User_Data</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_41">Form_User_Data</A>);
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<span class="symbol"><A NAME="ref_45_41" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_48_46">Form_User_Data</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_41">Form_User_Data</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_userptr.3x.html">form_userptr.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_1"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_53_14" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_55_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_53_29" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_55_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_54_29" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_56_29">Data</A></span> : <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_53_14" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_53_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_53_29" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_53_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_54_29" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_54_29">Data</A></span> : <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_userptr.3x.html">set_form_userptr</A></EM></span>
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_53_14">Set_User_Data</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_2"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_59_14" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_79_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_59_29" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_79_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_60_29" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_80_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_59_14" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_74_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_59_29" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_74_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_60_29" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_75_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_userptr.3x.html">form_userptr</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_3"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_64_13" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_71_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_64_28" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_71_28">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_64_13" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_66_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_64_28" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_66_28">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User_Access</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_userptr.3x.html">form_userptr</A></EM></span>
<span class="comment"><EM>-- Same as function</EM></span>
<b>pragma</b> Inline (Get_User_Data);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_41">Form_User_Data</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>.<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_41">Form_User_Data</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-forms__adb.htm b/doc/html/ada/terminal_interface-curses-forms__adb.htm
index 305ba1765315..8909b3e6b2ee 100644
--- a/doc/html/ada/terminal_interface-curses-forms__adb.htm
+++ b/doc/html/ada/terminal_interface-curses-forms__adb.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,26 +52,25 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.28 @</EM></span>
-<span class="comment"><EM>-- @Date: 2011/03/22 23:37:32 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.32 @</EM></span>
+<span class="comment"><EM>-- @Date: 2014/05/24 21:31:05 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>with</b> Ada.Unchecked_Deallocation;
-<b>with</b> Ada.Unchecked_Conversion;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Pointers;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Pointers;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_51_40" HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_50_40" HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A></span> <b>is</b>
- <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+ <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
- <b>type</b> C_Field_Array <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#ref_56_9">Field</A>;
+ <b>type</b> C_Field_Array <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#ref_51_9">Field</A>;
<b>package</b> F_Array <b>is</b> <b>new</b>
- <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Pointers (Natural, <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>, C_Field_Array, <A HREF="terminal_interface-curses-forms__ads.htm#ref_59_4">Null_Field</A>);
+ <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Pointers (Natural, <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>, C_Field_Array, <A HREF="terminal_interface-curses-forms__ads.htm#ref_54_4">Null_Field</A>);
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- |</EM></span>
@@ -79,38 +78,22 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- subtype chars_ptr is Interfaces.C.Strings.chars_ptr;</EM></span>
- <b>function</b> FOS_2_CInt <b>is</b> <b>new</b>
- Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>);
-
- <b>function</b> CInt_2_FOS <b>is</b> <b>new</b>
- Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>,
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A>);
-
- <b>function</b> FrmOS_2_CInt <b>is</b> <b>new</b>
- Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>);
-
- <b>function</b> CInt_2_FrmOS <b>is</b> <b>new</b>
- Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>,
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>);
-
- <b>procedure</b> <span class="symbol"><A NAME="ref_81_14" HREF="terminal_interface-curses-forms__ads.htm#ref_278_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_81_28" HREF="terminal_interface-curses-forms__ads.htm#ref_278_28">Key</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A>;
- <span class="symbol"><A NAME="ref_82_33" HREF="terminal_interface-curses-forms__ads.htm#ref_279_28">Name</A></span> : <b>out</b> String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_64_14" HREF="terminal_interface-curses-forms__ads.htm#ref_277_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_64_28" HREF="terminal_interface-curses-forms__ads.htm#ref_277_28">Key</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A>;
+ <span class="symbol"><A NAME="ref_65_33" HREF="terminal_interface-curses-forms__ads.htm#ref_278_28">Name</A></span> : <b>out</b> String)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_84_16">Form_Request_Name</A></span> (<span class="symbol"><A NAME="ref_84_35" HREF="terminal_interface-curses-forms__adb.htm#ref_84_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> chars_ptr;
+ <b>function</b> <span class="symbol"><A NAME="ref_67_16">Form_Request_Name</A></span> (<span class="symbol"><A NAME="ref_67_35" HREF="terminal_interface-curses-forms__adb.htm#ref_67_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> chars_ptr;
<b>pragma</b> Import (C, Form_Request_Name, "form_request_name");
<b>begin</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_116_14">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_84_16">Form_Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_278_28">Key</A>)), <A HREF="terminal_interface-curses-forms__ads.htm#ref_279_28">Name</A>);
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_278_14">Request_Name</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_14">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_67_16">Form_Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_277_28">Key</A>)), <A HREF="terminal_interface-curses-forms__ads.htm#ref_278_28">Name</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_277_14">Request_Name</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_90_13" HREF="terminal_interface-curses-forms__ads.htm#ref_281_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_90_27" HREF="terminal_interface-curses-forms__ads.htm#ref_281_28">Key</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A>) <b>return</b> String
+ <b>function</b> <span class="symbol"><A NAME="ref_73_13" HREF="terminal_interface-curses-forms__ads.htm#ref_280_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_73_27" HREF="terminal_interface-curses-forms__ads.htm#ref_280_28">Key</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A>) <b>return</b> String
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_92_16">Form_Request_Name</A></span> (<span class="symbol"><A NAME="ref_92_35" HREF="terminal_interface-curses-forms__adb.htm#ref_92_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> chars_ptr;
+ <b>function</b> <span class="symbol"><A NAME="ref_75_16">Form_Request_Name</A></span> (<span class="symbol"><A NAME="ref_75_35" HREF="terminal_interface-curses-forms__adb.htm#ref_75_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> chars_ptr;
<b>pragma</b> Import (C, Form_Request_Name, "form_request_name");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_92_16">Form_Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_281_28">Key</A>)));
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_281_14">Request_Name</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_75_16">Form_Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_280_28">Key</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_280_14">Request_Name</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
@@ -122,84 +105,80 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_108_13" HREF="terminal_interface-curses-forms__ads.htm#ref_295_13">Create</A></span> (<span class="symbol"><A NAME="ref_108_21" HREF="terminal_interface-curses-forms__ads.htm#ref_295_21">Height</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_109_21" HREF="terminal_interface-curses-forms__ads.htm#ref_296_21">Width</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_110_21" HREF="terminal_interface-curses-forms__ads.htm#ref_297_21">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_111_21" HREF="terminal_interface-curses-forms__ads.htm#ref_298_21">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_112_21" HREF="terminal_interface-curses-forms__ads.htm#ref_299_21">Off_Screen</A></span> : Natural := 0;
- <span class="symbol"><A NAME="ref_113_21" HREF="terminal_interface-curses-forms__ads.htm#ref_300_21">More_Buffers</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First)
- <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_91_13" HREF="terminal_interface-curses-forms__ads.htm#ref_294_13">Create</A></span> (<span class="symbol"><A NAME="ref_91_21" HREF="terminal_interface-curses-forms__ads.htm#ref_294_21">Height</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_92_21" HREF="terminal_interface-curses-forms__ads.htm#ref_295_21">Width</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_93_21" HREF="terminal_interface-curses-forms__ads.htm#ref_296_21">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_94_21" HREF="terminal_interface-curses-forms__ads.htm#ref_297_21">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_95_21" HREF="terminal_interface-curses-forms__ads.htm#ref_298_21">Off_Screen</A></span> : Natural := 0;
+ <span class="symbol"><A NAME="ref_96_21" HREF="terminal_interface-curses-forms__ads.htm#ref_299_21">More_Buffers</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A>'First)
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_116_16">Newfield</A></span> (<span class="symbol"><A NAME="ref_116_26" HREF="terminal_interface-curses-forms__adb.htm#ref_116_16">H</A></span>, <span class="symbol"><A NAME="ref_116_29" HREF="terminal_interface-curses-forms__adb.htm#ref_116_16">W</A></span>, <span class="symbol"><A NAME="ref_116_32" HREF="terminal_interface-curses-forms__adb.htm#ref_116_16">T</A></span>, <span class="symbol"><A NAME="ref_116_35" HREF="terminal_interface-curses-forms__adb.htm#ref_116_16">L</A></span>, <span class="symbol"><A NAME="ref_116_38" HREF="terminal_interface-curses-forms__adb.htm#ref_116_16">O</A></span>, <span class="symbol"><A NAME="ref_116_41" HREF="terminal_interface-curses-forms__adb.htm#ref_116_16">M</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_99_16">Newfield</A></span> (<span class="symbol"><A NAME="ref_99_26" HREF="terminal_interface-curses-forms__adb.htm#ref_99_16">H</A></span>, <span class="symbol"><A NAME="ref_99_29" HREF="terminal_interface-curses-forms__adb.htm#ref_99_16">W</A></span>, <span class="symbol"><A NAME="ref_99_32" HREF="terminal_interface-curses-forms__adb.htm#ref_99_16">T</A></span>, <span class="symbol"><A NAME="ref_99_35" HREF="terminal_interface-curses-forms__adb.htm#ref_99_16">L</A></span>, <span class="symbol"><A NAME="ref_99_38" HREF="terminal_interface-curses-forms__adb.htm#ref_99_16">O</A></span>, <span class="symbol"><A NAME="ref_99_41" HREF="terminal_interface-curses-forms__adb.htm#ref_99_16">M</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<b>pragma</b> Import (C, Newfield, "new_field");
- <span class="symbol"><A NAME="ref_118_7">Fld</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_116_16">Newfield</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_295_21">Height</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_296_21">Width</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_297_21">Top</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_298_21">Left</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_299_21">Off_Screen</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_300_21">More_Buffers</A>));
+ <span class="symbol"><A NAME="ref_101_7">Fld</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_99_16">Newfield</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_294_21">Height</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_295_21">Width</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_296_21">Top</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_297_21">Left</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_298_21">Off_Screen</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_299_21">More_Buffers</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_118_7">Fld</A> = <A HREF="terminal_interface-curses-forms__ads.htm#ref_59_4">Null_Field</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_101_7">Fld</A> = <A HREF="terminal_interface-curses-forms__ads.htm#ref_54_4">Null_Field</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>end</b> <b>if</b>;
- <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_118_7">Fld</A>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_295_13">Create</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_101_7">Fld</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_294_13">Create</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_131_14" HREF="terminal_interface-curses-forms__ads.htm#ref_317_14">Delete</A></span> (<span class="symbol"><A NAME="ref_131_22" HREF="terminal_interface-curses-forms__ads.htm#ref_317_22">Fld</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_114_14" HREF="terminal_interface-curses-forms__ads.htm#ref_316_14">Delete</A></span> (<span class="symbol"><A NAME="ref_114_22" HREF="terminal_interface-curses-forms__ads.htm#ref_316_22">Fld</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_133_16">Free_Field</A></span> (<span class="symbol"><A NAME="ref_133_28" HREF="terminal_interface-curses-forms__adb.htm#ref_133_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_116_16">Free_Field</A></span> (<span class="symbol"><A NAME="ref_116_28" HREF="terminal_interface-curses-forms__adb.htm#ref_116_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Free_Field, "free_field");
- <span class="symbol"><A NAME="ref_136_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_136_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_133_16">Free_Field</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_317_22">Fld</A>);
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_136_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_136_7">Res</A>);
- <b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_317_22">Fld</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_59_4">Null_Field</A>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_317_14">Delete</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_116_16">Free_Field</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_316_22">Fld</A>));
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_316_22">Fld</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_54_4">Null_Field</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_316_14">Delete</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_147_13" HREF="terminal_interface-curses-forms__ads.htm#ref_323_13">Duplicate</A></span> (<span class="symbol"><A NAME="ref_147_24" HREF="terminal_interface-curses-forms__ads.htm#ref_323_24">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_148_24" HREF="terminal_interface-curses-forms__ads.htm#ref_324_24">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_149_24" HREF="terminal_interface-curses-forms__ads.htm#ref_325_24">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_126_13" HREF="terminal_interface-curses-forms__ads.htm#ref_322_13">Duplicate</A></span> (<span class="symbol"><A NAME="ref_126_24" HREF="terminal_interface-curses-forms__ads.htm#ref_322_24">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_127_24" HREF="terminal_interface-curses-forms__ads.htm#ref_323_24">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_128_24" HREF="terminal_interface-curses-forms__ads.htm#ref_324_24">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_151_16">Dup_Field</A></span> (<span class="symbol"><A NAME="ref_151_27" HREF="terminal_interface-curses-forms__adb.htm#ref_151_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_152_27" HREF="terminal_interface-curses-forms__adb.htm#ref_151_16">Top</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_153_27" HREF="terminal_interface-curses-forms__adb.htm#ref_151_16">Left</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_130_16">Dup_Field</A></span> (<span class="symbol"><A NAME="ref_130_27" HREF="terminal_interface-curses-forms__adb.htm#ref_130_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_131_27" HREF="terminal_interface-curses-forms__adb.htm#ref_130_16">Top</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_132_27" HREF="terminal_interface-curses-forms__adb.htm#ref_130_16">Left</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<b>pragma</b> Import (C, Dup_Field, "dup_field");
- <span class="symbol"><A NAME="ref_156_7">F</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_151_16">Dup_Field</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_323_24">Fld</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_324_24">Top</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_325_24">Left</A>));
+ <span class="symbol"><A NAME="ref_135_7">F</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_130_16">Dup_Field</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_322_24">Fld</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_323_24">Top</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_324_24">Left</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_156_7">F</A> = <A HREF="terminal_interface-curses-forms__ads.htm#ref_59_4">Null_Field</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_135_7">F</A> = <A HREF="terminal_interface-curses-forms__ads.htm#ref_54_4">Null_Field</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>end</b> <b>if</b>;
- <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_156_7">F</A>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_323_13">Duplicate</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_135_7">F</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_322_13">Duplicate</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_168_13" HREF="terminal_interface-curses-forms__ads.htm#ref_330_13">Link</A></span> (<span class="symbol"><A NAME="ref_168_19" HREF="terminal_interface-curses-forms__ads.htm#ref_330_19">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_169_19" HREF="terminal_interface-curses-forms__ads.htm#ref_331_19">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_170_19" HREF="terminal_interface-curses-forms__ads.htm#ref_332_19">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_147_13" HREF="terminal_interface-curses-forms__ads.htm#ref_329_13">Link</A></span> (<span class="symbol"><A NAME="ref_147_19" HREF="terminal_interface-curses-forms__ads.htm#ref_329_19">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_148_19" HREF="terminal_interface-curses-forms__ads.htm#ref_330_19">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_149_19" HREF="terminal_interface-curses-forms__ads.htm#ref_331_19">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_172_16">Lnk_Field</A></span> (<span class="symbol"><A NAME="ref_172_27" HREF="terminal_interface-curses-forms__adb.htm#ref_172_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_173_27" HREF="terminal_interface-curses-forms__adb.htm#ref_172_16">Top</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_174_27" HREF="terminal_interface-curses-forms__adb.htm#ref_172_16">Left</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_151_16">Lnk_Field</A></span> (<span class="symbol"><A NAME="ref_151_27" HREF="terminal_interface-curses-forms__adb.htm#ref_151_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_152_27" HREF="terminal_interface-curses-forms__adb.htm#ref_151_16">Top</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_153_27" HREF="terminal_interface-curses-forms__adb.htm#ref_151_16">Left</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<b>pragma</b> Import (C, Lnk_Field, "link_field");
- <span class="symbol"><A NAME="ref_177_7">F</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_172_16">Lnk_Field</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_330_19">Fld</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_331_19">Top</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_332_19">Left</A>));
+ <span class="symbol"><A NAME="ref_156_7">F</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_151_16">Lnk_Field</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_329_19">Fld</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_330_19">Top</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_331_19">Left</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_177_7">F</A> = <A HREF="terminal_interface-curses-forms__ads.htm#ref_59_4">Null_Field</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_156_7">F</A> = <A HREF="terminal_interface-curses-forms__ads.htm#ref_54_4">Null_Field</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>end</b> <b>if</b>;
- <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_177_7">F</A>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_330_13">Link</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_156_7">F</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_329_13">Link</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page form_field_just.3x</EM></span>
@@ -207,31 +186,27 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_193_14" HREF="terminal_interface-curses-forms__ads.htm#ref_341_14">Set_Justification</A></span> (<span class="symbol"><A NAME="ref_193_33" HREF="terminal_interface-curses-forms__ads.htm#ref_341_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_194_33" HREF="terminal_interface-curses-forms__ads.htm#ref_342_33">Just</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Justification</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_33">None</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_172_14" HREF="terminal_interface-curses-forms__ads.htm#ref_340_14">Set_Justification</A></span> (<span class="symbol"><A NAME="ref_172_33" HREF="terminal_interface-curses-forms__ads.htm#ref_340_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_173_33" HREF="terminal_interface-curses-forms__ads.htm#ref_341_33">Just</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Field_Justification</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_33">None</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_196_16">Set_Field_Just</A></span> (<span class="symbol"><A NAME="ref_196_32" HREF="terminal_interface-curses-forms__adb.htm#ref_196_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_197_32" HREF="terminal_interface-curses-forms__adb.htm#ref_196_16">Just</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_175_16">Set_Field_Just</A></span> (<span class="symbol"><A NAME="ref_175_32" HREF="terminal_interface-curses-forms__adb.htm#ref_175_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_176_32" HREF="terminal_interface-curses-forms__adb.htm#ref_175_16">Just</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Field_Just, "set_field_just");
- <span class="symbol"><A NAME="ref_200_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> :=
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_196_16">Set_Field_Just</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_341_33">Fld</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Justification</A>'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#ref_342_33">Just</A>)));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_200_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_200_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_341_14">Set_Justification</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_175_16">Set_Field_Just</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_340_33">Fld</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Field_Justification</A>'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#ref_341_33">Just</A>))));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_340_14">Set_Justification</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_211_13" HREF="terminal_interface-curses-forms__ads.htm#ref_347_13">Get_Justification</A></span> (<span class="symbol"><A NAME="ref_211_32" HREF="terminal_interface-curses-forms__ads.htm#ref_347_32">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Justification</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_186_13" HREF="terminal_interface-curses-forms__ads.htm#ref_346_13">Get_Justification</A></span> (<span class="symbol"><A NAME="ref_186_32" HREF="terminal_interface-curses-forms__ads.htm#ref_346_32">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Field_Justification</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_213_16">Field_Just</A></span> (<span class="symbol"><A NAME="ref_213_28" HREF="terminal_interface-curses-forms__adb.htm#ref_213_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_188_16">Field_Just</A></span> (<span class="symbol"><A NAME="ref_188_28" HREF="terminal_interface-curses-forms__adb.htm#ref_188_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Field_Just, "field_just");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Justification</A>'Val (<A HREF="terminal_interface-curses-forms__adb.htm#ref_213_16">Field_Just</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_347_32">Fld</A>));
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_347_13">Get_Justification</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Field_Justification</A>'Val (<A HREF="terminal_interface-curses-forms__adb.htm#ref_188_16">Field_Just</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_346_32">Fld</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_346_13">Get_Justification</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page form_field_buffer.3x</EM></span>
@@ -239,101 +214,89 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_225_14" HREF="terminal_interface-curses-forms__ads.htm#ref_356_14">Set_Buffer</A></span>
- (<span class="symbol"><A NAME="ref_226_7" HREF="terminal_interface-curses-forms__ads.htm#ref_357_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_227_7" HREF="terminal_interface-curses-forms__ads.htm#ref_358_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First;
- <span class="symbol"><A NAME="ref_228_7" HREF="terminal_interface-curses-forms__ads.htm#ref_359_7">Str</A></span> : String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_200_14" HREF="terminal_interface-curses-forms__ads.htm#ref_355_14">Set_Buffer</A></span>
+ (<span class="symbol"><A NAME="ref_201_7" HREF="terminal_interface-curses-forms__ads.htm#ref_356_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_202_7" HREF="terminal_interface-curses-forms__ads.htm#ref_357_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A>'First;
+ <span class="symbol"><A NAME="ref_203_7" HREF="terminal_interface-curses-forms__ads.htm#ref_358_7">Str</A></span> : String)
<b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_230_12">Char_Ptr</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.char;
- <b>function</b> <span class="symbol"><A NAME="ref_231_16">Set_Fld_Buffer</A></span> (<span class="symbol"><A NAME="ref_231_32" HREF="terminal_interface-curses-forms__adb.htm#ref_231_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_232_34" HREF="terminal_interface-curses-forms__adb.htm#ref_231_16">Bufnum</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_233_34" HREF="terminal_interface-curses-forms__adb.htm#ref_231_16">S</A></span> : <A HREF="terminal_interface-curses-forms__adb.htm#ref_230_12">Char_Ptr</A>)
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_205_16">Set_Fld_Buffer</A></span> (<span class="symbol"><A NAME="ref_205_32" HREF="terminal_interface-curses-forms__adb.htm#ref_205_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_206_34" HREF="terminal_interface-curses-forms__adb.htm#ref_205_16">Bufnum</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_207_34" HREF="terminal_interface-curses-forms__adb.htm#ref_205_16">S</A></span> : char_array)
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Fld_Buffer, "set_field_buffer");
- <span class="symbol"><A NAME="ref_237_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-forms__ads.htm#ref_359_7">Str</A>'Length);
- <span class="symbol"><A NAME="ref_238_7">Len</A></span> : size_t;
- <span class="symbol"><A NAME="ref_239_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- To_C (<A HREF="terminal_interface-curses-forms__ads.htm#ref_359_7">Str</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_237_7">Txt</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_238_7">Len</A>);
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_239_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_231_16">Set_Fld_Buffer</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_357_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_358_7">Buffer</A>), <A HREF="terminal_interface-curses-forms__adb.htm#ref_237_7">Txt</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_237_7">Txt</A>'First)'<b>Access</b>);
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_239_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_239_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_356_14">Set_Buffer</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_205_16">Set_Fld_Buffer</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_356_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_357_7">Buffer</A>), To_C (<A HREF="terminal_interface-curses-forms__ads.htm#ref_358_7">Str</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_355_14">Set_Buffer</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_250_14" HREF="terminal_interface-curses-forms__ads.htm#ref_364_14">Get_Buffer</A></span>
- (<span class="symbol"><A NAME="ref_251_7" HREF="terminal_interface-curses-forms__ads.htm#ref_365_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_252_7" HREF="terminal_interface-curses-forms__ads.htm#ref_366_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First;
- <span class="symbol"><A NAME="ref_253_7" HREF="terminal_interface-curses-forms__ads.htm#ref_367_7">Str</A></span> : <b>out</b> String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_217_14" HREF="terminal_interface-curses-forms__ads.htm#ref_363_14">Get_Buffer</A></span>
+ (<span class="symbol"><A NAME="ref_218_7" HREF="terminal_interface-curses-forms__ads.htm#ref_364_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_219_7" HREF="terminal_interface-curses-forms__ads.htm#ref_365_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A>'First;
+ <span class="symbol"><A NAME="ref_220_7" HREF="terminal_interface-curses-forms__ads.htm#ref_366_7">Str</A></span> : <b>out</b> String)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_255_16">Field_Buffer</A></span> (<span class="symbol"><A NAME="ref_255_30" HREF="terminal_interface-curses-forms__adb.htm#ref_255_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_256_30" HREF="terminal_interface-curses-forms__adb.htm#ref_255_16">B</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> chars_ptr;
+ <b>function</b> <span class="symbol"><A NAME="ref_222_16">Field_Buffer</A></span> (<span class="symbol"><A NAME="ref_222_30" HREF="terminal_interface-curses-forms__adb.htm#ref_222_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_223_30" HREF="terminal_interface-curses-forms__adb.htm#ref_222_16">B</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> chars_ptr;
<b>pragma</b> Import (C, Field_Buffer, "field_buffer");
<b>begin</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_116_14">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_255_16">Field_Buffer</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_365_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_366_7">Buffer</A>)), <A HREF="terminal_interface-curses-forms__ads.htm#ref_367_7">Str</A>);
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_364_14">Get_Buffer</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_14">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_222_16">Field_Buffer</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_364_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_365_7">Buffer</A>)), <A HREF="terminal_interface-curses-forms__ads.htm#ref_366_7">Str</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_363_14">Get_Buffer</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_262_13" HREF="terminal_interface-curses-forms__ads.htm#ref_370_13">Get_Buffer</A></span>
- (<span class="symbol"><A NAME="ref_263_7" HREF="terminal_interface-curses-forms__ads.htm#ref_371_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_264_7" HREF="terminal_interface-curses-forms__ads.htm#ref_372_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First) <b>return</b> String
+ <b>function</b> <span class="symbol"><A NAME="ref_229_13" HREF="terminal_interface-curses-forms__ads.htm#ref_369_13">Get_Buffer</A></span>
+ (<span class="symbol"><A NAME="ref_230_7" HREF="terminal_interface-curses-forms__ads.htm#ref_370_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_231_7" HREF="terminal_interface-curses-forms__ads.htm#ref_371_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A>'First) <b>return</b> String
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_266_16">Field_Buffer</A></span> (<span class="symbol"><A NAME="ref_266_30" HREF="terminal_interface-curses-forms__adb.htm#ref_266_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_267_30" HREF="terminal_interface-curses-forms__adb.htm#ref_266_16">B</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> chars_ptr;
+ <b>function</b> <span class="symbol"><A NAME="ref_233_16">Field_Buffer</A></span> (<span class="symbol"><A NAME="ref_233_30" HREF="terminal_interface-curses-forms__adb.htm#ref_233_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_234_30" HREF="terminal_interface-curses-forms__adb.htm#ref_233_16">B</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> chars_ptr;
<b>pragma</b> Import (C, Field_Buffer, "field_buffer");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_266_16">Field_Buffer</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_371_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_372_7">Buffer</A>)));
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_370_13">Get_Buffer</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_233_16">Field_Buffer</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_370_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_371_7">Buffer</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_369_13">Get_Buffer</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_275_14" HREF="terminal_interface-curses-forms__ads.htm#ref_378_14">Set_Status</A></span> (<span class="symbol"><A NAME="ref_275_26" HREF="terminal_interface-curses-forms__ads.htm#ref_378_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_276_26" HREF="terminal_interface-curses-forms__ads.htm#ref_379_26">Status</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_242_14" HREF="terminal_interface-curses-forms__ads.htm#ref_377_14">Set_Status</A></span> (<span class="symbol"><A NAME="ref_242_26" HREF="terminal_interface-curses-forms__ads.htm#ref_377_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_243_26" HREF="terminal_interface-curses-forms__ads.htm#ref_378_26">Status</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_278_16">Set_Fld_Status</A></span> (<span class="symbol"><A NAME="ref_278_32" HREF="terminal_interface-curses-forms__adb.htm#ref_278_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_279_32" HREF="terminal_interface-curses-forms__adb.htm#ref_278_16">St</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_245_16">Set_Fld_Status</A></span> (<span class="symbol"><A NAME="ref_245_32" HREF="terminal_interface-curses-forms__adb.htm#ref_245_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_246_32" HREF="terminal_interface-curses-forms__adb.htm#ref_245_16">St</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Fld_Status, "set_field_status");
- <span class="symbol"><A NAME="ref_282_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_278_16">Set_Fld_Status</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_378_26">Fld</A>, Boolean'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#ref_379_26">Status</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_282_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_245_16">Set_Fld_Status</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_377_26">Fld</A>, Boolean'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#ref_378_26">Status</A>)) /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_84_7">E_Ok</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_378_14">Set_Status</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_377_14">Set_Status</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_291_13" HREF="terminal_interface-curses-forms__ads.htm#ref_384_13">Changed</A></span> (<span class="symbol"><A NAME="ref_291_22" HREF="terminal_interface-curses-forms__ads.htm#ref_384_22">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_257_13" HREF="terminal_interface-curses-forms__ads.htm#ref_383_13">Changed</A></span> (<span class="symbol"><A NAME="ref_257_22" HREF="terminal_interface-curses-forms__ads.htm#ref_383_22">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_293_16">Field_Status</A></span> (<span class="symbol"><A NAME="ref_293_30" HREF="terminal_interface-curses-forms__adb.htm#ref_293_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_259_16">Field_Status</A></span> (<span class="symbol"><A NAME="ref_259_30" HREF="terminal_interface-curses-forms__adb.htm#ref_259_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Field_Status, "field_status");
- <span class="symbol"><A NAME="ref_296_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_293_16">Field_Status</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_384_22">Fld</A>);
+ <span class="symbol"><A NAME="ref_262_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_259_16">Field_Status</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_383_22">Fld</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_296_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">Curses_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_262_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_66_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> <A HREF="terminal_interface-curses-forms__ads.htm#ref_384_13">Changed</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_383_13">Changed</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_307_14" HREF="terminal_interface-curses-forms__ads.htm#ref_389_14">Set_Maximum_Size</A></span> (<span class="symbol"><A NAME="ref_307_32" HREF="terminal_interface-curses-forms__ads.htm#ref_389_32">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_308_32" HREF="terminal_interface-curses-forms__ads.htm#ref_390_32">Max</A></span> : Natural := 0)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_273_14" HREF="terminal_interface-curses-forms__ads.htm#ref_388_14">Set_Maximum_Size</A></span> (<span class="symbol"><A NAME="ref_273_32" HREF="terminal_interface-curses-forms__ads.htm#ref_388_32">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_274_32" HREF="terminal_interface-curses-forms__ads.htm#ref_389_32">Max</A></span> : Natural := 0)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_310_16">Set_Field_Max</A></span> (<span class="symbol"><A NAME="ref_310_31" HREF="terminal_interface-curses-forms__adb.htm#ref_310_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_311_31" HREF="terminal_interface-curses-forms__adb.htm#ref_310_16">M</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_276_16">Set_Field_Max</A></span> (<span class="symbol"><A NAME="ref_276_31" HREF="terminal_interface-curses-forms__adb.htm#ref_276_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_277_31" HREF="terminal_interface-curses-forms__adb.htm#ref_276_16">M</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Field_Max, "set_max_field");
- <span class="symbol"><A NAME="ref_314_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_310_16">Set_Field_Max</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_389_32">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_390_32">Max</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_314_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_314_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_389_14">Set_Maximum_Size</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_276_16">Set_Field_Max</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_388_32">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_389_32">Max</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_388_14">Set_Maximum_Size</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page form_field_opts.3x</EM></span>
@@ -341,71 +304,60 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_327_14" HREF="terminal_interface-curses-forms__ads.htm#ref_399_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_327_27" HREF="terminal_interface-curses-forms__ads.htm#ref_399_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_328_27" HREF="terminal_interface-curses-forms__ads.htm#ref_400_27">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_290_14" HREF="terminal_interface-curses-forms__ads.htm#ref_398_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_290_27" HREF="terminal_interface-curses-forms__ads.htm#ref_398_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_291_27" HREF="terminal_interface-curses-forms__ads.htm#ref_399_27">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_330_16">Set_Field_Opts</A></span> (<span class="symbol"><A NAME="ref_330_32" HREF="terminal_interface-curses-forms__adb.htm#ref_330_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_331_32" HREF="terminal_interface-curses-forms__adb.htm#ref_330_16">Opt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_293_16">Set_Field_Opts</A></span> (<span class="symbol"><A NAME="ref_293_32" HREF="terminal_interface-curses-forms__adb.htm#ref_293_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_294_32" HREF="terminal_interface-curses-forms__adb.htm#ref_293_16">Opt</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Field_Opts, "set_field_opts");
- <span class="symbol"><A NAME="ref_334_7">Opt</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := FOS_2_CInt (<A HREF="terminal_interface-curses-forms__ads.htm#ref_400_27">Options</A>);
- <span class="symbol"><A NAME="ref_335_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_335_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_330_16">Set_Field_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_399_27">Fld</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_334_7">Opt</A>);
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_335_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_335_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_399_14">Set_Options</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_293_16">Set_Field_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_398_27">Fld</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_399_27">Options</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_398_14">Set_Options</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_345_14" HREF="terminal_interface-curses-forms__ads.htm#ref_405_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_345_30" HREF="terminal_interface-curses-forms__ads.htm#ref_405_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_346_30" HREF="terminal_interface-curses-forms__ads.htm#ref_406_30">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A>;
- <span class="symbol"><A NAME="ref_347_30" HREF="terminal_interface-curses-forms__ads.htm#ref_407_30">On</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_303_14" HREF="terminal_interface-curses-forms__ads.htm#ref_404_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_303_30" HREF="terminal_interface-curses-forms__ads.htm#ref_404_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_304_30" HREF="terminal_interface-curses-forms__ads.htm#ref_405_30">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>;
+ <span class="symbol"><A NAME="ref_305_30" HREF="terminal_interface-curses-forms__ads.htm#ref_406_30">On</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_349_16">Field_Opts_On</A></span> (<span class="symbol"><A NAME="ref_349_31" HREF="terminal_interface-curses-forms__adb.htm#ref_349_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_350_31" HREF="terminal_interface-curses-forms__adb.htm#ref_349_16">Opt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_307_16">Field_Opts_On</A></span> (<span class="symbol"><A NAME="ref_307_31" HREF="terminal_interface-curses-forms__adb.htm#ref_307_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_308_31" HREF="terminal_interface-curses-forms__adb.htm#ref_307_16">Opt</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Field_Opts_On, "field_opts_on");
- <b>function</b> <span class="symbol"><A NAME="ref_352_16">Field_Opts_Off</A></span> (<span class="symbol"><A NAME="ref_352_32" HREF="terminal_interface-curses-forms__adb.htm#ref_352_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_353_32" HREF="terminal_interface-curses-forms__adb.htm#ref_352_16">Opt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_310_16">Field_Opts_Off</A></span> (<span class="symbol"><A NAME="ref_310_32" HREF="terminal_interface-curses-forms__adb.htm#ref_310_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_311_32" HREF="terminal_interface-curses-forms__adb.htm#ref_310_16">Opt</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Field_Opts_Off, "field_opts_off");
- <span class="symbol"><A NAME="ref_356_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
- <span class="symbol"><A NAME="ref_357_7">Opt</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := FOS_2_CInt (<A HREF="terminal_interface-curses-forms__ads.htm#ref_406_30">Options</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_407_30">On</A> <b>then</b>
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_356_7">Err</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_349_16">Field_Opts_On</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_405_30">Fld</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_357_7">Opt</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_406_30">On</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_307_16">Field_Opts_On</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_404_30">Fld</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_405_30">Options</A>));
<b>else</b>
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_356_7">Err</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_352_16">Field_Opts_Off</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_405_30">Fld</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_357_7">Opt</A>);
- <b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_356_7">Err</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_356_7">Err</A>);
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_310_16">Field_Opts_Off</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_404_30">Fld</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_405_30">Options</A>));
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_405_14">Switch_Options</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_404_14">Switch_Options</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_371_14" HREF="terminal_interface-curses-forms__ads.htm#ref_413_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_371_27" HREF="terminal_interface-curses-forms__ads.htm#ref_413_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_372_27" HREF="terminal_interface-curses-forms__ads.htm#ref_414_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_324_14" HREF="terminal_interface-curses-forms__ads.htm#ref_412_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_324_27" HREF="terminal_interface-curses-forms__ads.htm#ref_412_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_325_27" HREF="terminal_interface-curses-forms__ads.htm#ref_413_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_374_16">Field_Opts</A></span> (<span class="symbol"><A NAME="ref_374_28" HREF="terminal_interface-curses-forms__adb.htm#ref_374_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_327_16">Field_Opts</A></span> (<span class="symbol"><A NAME="ref_327_28" HREF="terminal_interface-curses-forms__adb.htm#ref_327_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>;
<b>pragma</b> Import (C, Field_Opts, "field_opts");
- <span class="symbol"><A NAME="ref_377_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_374_16">Field_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_413_27">Fld</A>);
<b>begin</b>
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_414_27">Options</A> := CInt_2_FOS (<A HREF="terminal_interface-curses-forms__adb.htm#ref_377_7">Res</A>);
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_413_14">Get_Options</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_413_27">Options</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_327_16">Field_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_412_27">Fld</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_412_14">Get_Options</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_384_13" HREF="terminal_interface-curses-forms__ads.htm#ref_418_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_384_26" HREF="terminal_interface-curses-forms__ads.htm#ref_418_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_59_4">Null_Field</A>)
- <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_336_13" HREF="terminal_interface-curses-forms__ads.htm#ref_417_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_336_26" HREF="terminal_interface-curses-forms__ads.htm#ref_417_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_54_4">Null_Field</A>)
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_387_7">Fos</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A>;
+ <span class="symbol"><A NAME="ref_339_7">Fos</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_413_14">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_418_26">Fld</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_387_7">Fos</A>);
- <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_387_7">Fos</A>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_418_13">Get_Options</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_412_14">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_417_26">Fld</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_339_7">Fos</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_339_7">Fos</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_417_13">Get_Options</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page form_field_attributes.3x</EM></span>
@@ -413,119 +365,106 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_399_14" HREF="terminal_interface-curses-forms__ads.htm#ref_428_14">Set_Foreground</A></span>
- (<span class="symbol"><A NAME="ref_400_7" HREF="terminal_interface-curses-forms__ads.htm#ref_429_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_401_7" HREF="terminal_interface-curses-forms__ads.htm#ref_430_7">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_402_7" HREF="terminal_interface-curses-forms__ads.htm#ref_431_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_351_14" HREF="terminal_interface-curses-forms__ads.htm#ref_427_14">Set_Foreground</A></span>
+ (<span class="symbol"><A NAME="ref_352_7" HREF="terminal_interface-curses-forms__ads.htm#ref_428_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_353_7" HREF="terminal_interface-curses-forms__ads.htm#ref_429_7">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_354_7" HREF="terminal_interface-curses-forms__ads.htm#ref_430_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_404_16">Set_Field_Fore</A></span> (<span class="symbol"><A NAME="ref_404_32" HREF="terminal_interface-curses-forms__adb.htm#ref_404_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_405_32" HREF="terminal_interface-curses-forms__adb.htm#ref_404_16">Attr</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_356_16">Set_Field_Fore</A></span> (<span class="symbol"><A NAME="ref_356_32" HREF="terminal_interface-curses-forms__adb.htm#ref_356_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_357_32" HREF="terminal_interface-curses-forms__adb.htm#ref_356_16">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Field_Fore, "set_field_fore");
- <span class="symbol"><A NAME="ref_408_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; Character'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#ref_431_7">Color</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#ref_430_7">Fore</A>);
- <span class="symbol"><A NAME="ref_411_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> :=
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_404_16">Set_Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_429_7">Fld</A>, AttrChar_To_Chtype (<A HREF="terminal_interface-curses-forms__adb.htm#ref_408_7">Ch</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_411_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_411_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_428_14">Set_Foreground</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_356_16">Set_Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_428_7">Fld</A>, (<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; Character'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#ref_430_7">Color</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#ref_429_7">Fore</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_427_14">Set_Foreground</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_421_14" HREF="terminal_interface-curses-forms__ads.htm#ref_436_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_421_26" HREF="terminal_interface-curses-forms__ads.htm#ref_436_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_422_26" HREF="terminal_interface-curses-forms__ads.htm#ref_437_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_368_14" HREF="terminal_interface-curses-forms__ads.htm#ref_435_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_368_26" HREF="terminal_interface-curses-forms__ads.htm#ref_435_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_369_26" HREF="terminal_interface-curses-forms__ads.htm#ref_436_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_424_16">Field_Fore</A></span> (<span class="symbol"><A NAME="ref_424_28" HREF="terminal_interface-curses-forms__adb.htm#ref_424_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_371_16">Field_Fore</A></span> (<span class="symbol"><A NAME="ref_371_28" HREF="terminal_interface-curses-forms__adb.htm#ref_371_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Field_Fore, "field_fore");
<b>begin</b>
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_437_26">Fore</A> := Chtype_To_AttrChar (<A HREF="terminal_interface-curses-forms__adb.htm#ref_424_16">Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_436_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_436_14">Foreground</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_436_26">Fore</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_371_16">Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_435_26">Fld</A>).<A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_435_14">Foreground</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_430_14" HREF="terminal_interface-curses-forms__ads.htm#ref_441_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_430_26" HREF="terminal_interface-curses-forms__ads.htm#ref_441_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_431_26" HREF="terminal_interface-curses-forms__ads.htm#ref_442_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
- <span class="symbol"><A NAME="ref_432_26" HREF="terminal_interface-curses-forms__ads.htm#ref_443_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_377_14" HREF="terminal_interface-curses-forms__ads.htm#ref_440_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_377_26" HREF="terminal_interface-curses-forms__ads.htm#ref_440_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_378_26" HREF="terminal_interface-curses-forms__ads.htm#ref_441_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
+ <span class="symbol"><A NAME="ref_379_26" HREF="terminal_interface-curses-forms__ads.htm#ref_442_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_434_16">Field_Fore</A></span> (<span class="symbol"><A NAME="ref_434_28" HREF="terminal_interface-curses-forms__adb.htm#ref_434_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_381_16">Field_Fore</A></span> (<span class="symbol"><A NAME="ref_381_28" HREF="terminal_interface-curses-forms__adb.htm#ref_381_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Field_Fore, "field_fore");
<b>begin</b>
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_442_26">Fore</A> := Chtype_To_AttrChar (<A HREF="terminal_interface-curses-forms__adb.htm#ref_434_16">Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_441_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A>;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_443_26">Color</A> := Chtype_To_AttrChar (<A HREF="terminal_interface-curses-forms__adb.htm#ref_434_16">Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_441_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_441_14">Foreground</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_441_26">Fore</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_381_16">Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_440_26">Fld</A>).<A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_442_26">Color</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_381_16">Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_440_26">Fld</A>).<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_440_14">Foreground</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_443_14" HREF="terminal_interface-curses-forms__ads.htm#ref_448_14">Set_Background</A></span>
- (<span class="symbol"><A NAME="ref_444_7" HREF="terminal_interface-curses-forms__ads.htm#ref_449_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_445_7" HREF="terminal_interface-curses-forms__ads.htm#ref_450_7">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_446_7" HREF="terminal_interface-curses-forms__ads.htm#ref_451_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_390_14" HREF="terminal_interface-curses-forms__ads.htm#ref_447_14">Set_Background</A></span>
+ (<span class="symbol"><A NAME="ref_391_7" HREF="terminal_interface-curses-forms__ads.htm#ref_448_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_392_7" HREF="terminal_interface-curses-forms__ads.htm#ref_449_7">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_393_7" HREF="terminal_interface-curses-forms__ads.htm#ref_450_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_448_16">Set_Field_Back</A></span> (<span class="symbol"><A NAME="ref_448_32" HREF="terminal_interface-curses-forms__adb.htm#ref_448_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_449_32" HREF="terminal_interface-curses-forms__adb.htm#ref_448_16">Attr</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_395_16">Set_Field_Back</A></span> (<span class="symbol"><A NAME="ref_395_32" HREF="terminal_interface-curses-forms__adb.htm#ref_395_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_396_32" HREF="terminal_interface-curses-forms__adb.htm#ref_395_16">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Field_Back, "set_field_back");
- <span class="symbol"><A NAME="ref_452_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; Character'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#ref_451_7">Color</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#ref_450_7">Back</A>);
- <span class="symbol"><A NAME="ref_455_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> :=
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_448_16">Set_Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_449_7">Fld</A>, AttrChar_To_Chtype (<A HREF="terminal_interface-curses-forms__adb.htm#ref_452_7">Ch</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_455_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_455_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_448_14">Set_Background</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_395_16">Set_Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_448_7">Fld</A>, (<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; Character'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#ref_450_7">Color</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#ref_449_7">Back</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_447_14">Set_Background</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_465_14" HREF="terminal_interface-curses-forms__ads.htm#ref_456_14">Background</A></span> (<span class="symbol"><A NAME="ref_465_26" HREF="terminal_interface-curses-forms__ads.htm#ref_456_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_466_26" HREF="terminal_interface-curses-forms__ads.htm#ref_457_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_407_14" HREF="terminal_interface-curses-forms__ads.htm#ref_455_14">Background</A></span> (<span class="symbol"><A NAME="ref_407_26" HREF="terminal_interface-curses-forms__ads.htm#ref_455_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_408_26" HREF="terminal_interface-curses-forms__ads.htm#ref_456_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_468_16">Field_Back</A></span> (<span class="symbol"><A NAME="ref_468_28" HREF="terminal_interface-curses-forms__adb.htm#ref_468_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_410_16">Field_Back</A></span> (<span class="symbol"><A NAME="ref_410_28" HREF="terminal_interface-curses-forms__adb.htm#ref_410_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Field_Back, "field_back");
<b>begin</b>
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_457_26">Back</A> := Chtype_To_AttrChar (<A HREF="terminal_interface-curses-forms__adb.htm#ref_468_16">Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_456_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_456_14">Background</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_456_26">Back</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_410_16">Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_455_26">Fld</A>).<A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_455_14">Background</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_474_14" HREF="terminal_interface-curses-forms__ads.htm#ref_461_14">Background</A></span> (<span class="symbol"><A NAME="ref_474_26" HREF="terminal_interface-curses-forms__ads.htm#ref_461_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_475_26" HREF="terminal_interface-curses-forms__ads.htm#ref_462_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
- <span class="symbol"><A NAME="ref_476_26" HREF="terminal_interface-curses-forms__ads.htm#ref_463_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_416_14" HREF="terminal_interface-curses-forms__ads.htm#ref_460_14">Background</A></span> (<span class="symbol"><A NAME="ref_416_26" HREF="terminal_interface-curses-forms__ads.htm#ref_460_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_417_26" HREF="terminal_interface-curses-forms__ads.htm#ref_461_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
+ <span class="symbol"><A NAME="ref_418_26" HREF="terminal_interface-curses-forms__ads.htm#ref_462_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_478_16">Field_Back</A></span> (<span class="symbol"><A NAME="ref_478_28" HREF="terminal_interface-curses-forms__adb.htm#ref_478_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_420_16">Field_Back</A></span> (<span class="symbol"><A NAME="ref_420_28" HREF="terminal_interface-curses-forms__adb.htm#ref_420_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Field_Back, "field_back");
<b>begin</b>
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_462_26">Back</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_478_16">Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_461_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A>;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_463_26">Color</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_478_16">Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_461_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_461_14">Background</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_461_26">Back</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_420_16">Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_460_26">Fld</A>).<A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_462_26">Color</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_420_16">Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_460_26">Fld</A>).<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_460_14">Background</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_487_14" HREF="terminal_interface-curses-forms__ads.htm#ref_468_14">Set_Pad_Character</A></span> (<span class="symbol"><A NAME="ref_487_33" HREF="terminal_interface-curses-forms__ads.htm#ref_468_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_488_33" HREF="terminal_interface-curses-forms__ads.htm#ref_469_33">Pad</A></span> : Character := Space)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_429_14" HREF="terminal_interface-curses-forms__ads.htm#ref_467_14">Set_Pad_Character</A></span> (<span class="symbol"><A NAME="ref_429_33" HREF="terminal_interface-curses-forms__ads.htm#ref_467_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_430_33" HREF="terminal_interface-curses-forms__ads.htm#ref_468_33">Pad</A></span> : Character := Space)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_490_16">Set_Field_Pad</A></span> (<span class="symbol"><A NAME="ref_490_31" HREF="terminal_interface-curses-forms__adb.htm#ref_490_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_491_31" HREF="terminal_interface-curses-forms__adb.htm#ref_490_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_432_16">Set_Field_Pad</A></span> (<span class="symbol"><A NAME="ref_432_31" HREF="terminal_interface-curses-forms__adb.htm#ref_432_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_433_31" HREF="terminal_interface-curses-forms__adb.htm#ref_432_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Field_Pad, "set_field_pad");
- <span class="symbol"><A NAME="ref_494_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_490_16">Set_Field_Pad</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_468_33">Fld</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (Character'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#ref_469_33">Pad</A>)));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_494_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_494_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_468_14">Set_Pad_Character</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_432_16">Set_Field_Pad</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_467_33">Fld</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (Character'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#ref_468_33">Pad</A>))));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_467_14">Set_Pad_Character</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_504_14" HREF="terminal_interface-curses-forms__ads.htm#ref_474_14">Pad_Character</A></span> (<span class="symbol"><A NAME="ref_504_29" HREF="terminal_interface-curses-forms__ads.htm#ref_474_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_505_29" HREF="terminal_interface-curses-forms__ads.htm#ref_475_29">Pad</A></span> : <b>out</b> Character)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_443_14" HREF="terminal_interface-curses-forms__ads.htm#ref_473_14">Pad_Character</A></span> (<span class="symbol"><A NAME="ref_443_29" HREF="terminal_interface-curses-forms__ads.htm#ref_473_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_444_29" HREF="terminal_interface-curses-forms__ads.htm#ref_474_29">Pad</A></span> : <b>out</b> Character)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_507_16">Field_Pad</A></span> (<span class="symbol"><A NAME="ref_507_27" HREF="terminal_interface-curses-forms__adb.htm#ref_507_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_446_16">Field_Pad</A></span> (<span class="symbol"><A NAME="ref_446_27" HREF="terminal_interface-curses-forms__adb.htm#ref_446_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Field_Pad, "field_pad");
<b>begin</b>
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_475_29">Pad</A> := Character'Val (<A HREF="terminal_interface-curses-forms__adb.htm#ref_507_16">Field_Pad</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_474_29">Fld</A>));
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_474_14">Pad_Character</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_474_29">Pad</A> := Character'Val (<A HREF="terminal_interface-curses-forms__adb.htm#ref_446_16">Field_Pad</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_473_29">Fld</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_473_14">Pad_Character</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page form_field_info.3x</EM></span>
@@ -533,62 +472,54 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_519_14" HREF="terminal_interface-curses-forms__ads.htm#ref_484_14">Info</A></span> (<span class="symbol"><A NAME="ref_519_20" HREF="terminal_interface-curses-forms__ads.htm#ref_484_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_520_20" HREF="terminal_interface-curses-forms__ads.htm#ref_485_20">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_521_20" HREF="terminal_interface-curses-forms__ads.htm#ref_486_20">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_522_20" HREF="terminal_interface-curses-forms__ads.htm#ref_487_20">First_Row</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_523_20" HREF="terminal_interface-curses-forms__ads.htm#ref_488_20">First_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_524_20" HREF="terminal_interface-curses-forms__ads.htm#ref_489_20">Off_Screen</A></span> : <b>out</b> Natural;
- <span class="symbol"><A NAME="ref_525_20" HREF="terminal_interface-curses-forms__ads.htm#ref_490_20">Additional_Buffers</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_458_14" HREF="terminal_interface-curses-forms__ads.htm#ref_483_14">Info</A></span> (<span class="symbol"><A NAME="ref_458_20" HREF="terminal_interface-curses-forms__ads.htm#ref_483_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_459_20" HREF="terminal_interface-curses-forms__ads.htm#ref_484_20">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_460_20" HREF="terminal_interface-curses-forms__ads.htm#ref_485_20">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_461_20" HREF="terminal_interface-curses-forms__ads.htm#ref_486_20">First_Row</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_462_20" HREF="terminal_interface-curses-forms__ads.htm#ref_487_20">First_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_463_20" HREF="terminal_interface-curses-forms__ads.htm#ref_488_20">Off_Screen</A></span> : <b>out</b> Natural;
+ <span class="symbol"><A NAME="ref_464_20" HREF="terminal_interface-curses-forms__ads.htm#ref_489_20">Additional_Buffers</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A>)
<b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_527_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_528_16">Fld_Info</A></span> (<span class="symbol"><A NAME="ref_528_26" HREF="terminal_interface-curses-forms__adb.htm#ref_528_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_529_26" HREF="terminal_interface-curses-forms__adb.htm#ref_528_16">L</A></span>, <span class="symbol"><A NAME="ref_529_29" HREF="terminal_interface-curses-forms__adb.htm#ref_528_16">C</A></span>, <span class="symbol"><A NAME="ref_529_32" HREF="terminal_interface-curses-forms__adb.htm#ref_528_16">Fr</A></span>, <span class="symbol"><A NAME="ref_529_36" HREF="terminal_interface-curses-forms__adb.htm#ref_528_16">Fc</A></span>, <span class="symbol"><A NAME="ref_529_40" HREF="terminal_interface-curses-forms__adb.htm#ref_528_16">Os</A></span>, <span class="symbol"><A NAME="ref_529_44" HREF="terminal_interface-curses-forms__adb.htm#ref_528_16">Ab</A></span> : <A HREF="terminal_interface-curses-forms__adb.htm#ref_527_12">C_Int_Access</A>)
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>type</b> <span class="symbol"><A NAME="ref_466_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_467_16">Fld_Info</A></span> (<span class="symbol"><A NAME="ref_467_26" HREF="terminal_interface-curses-forms__adb.htm#ref_467_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_468_26" HREF="terminal_interface-curses-forms__adb.htm#ref_467_16">L</A></span>, <span class="symbol"><A NAME="ref_468_29" HREF="terminal_interface-curses-forms__adb.htm#ref_467_16">C</A></span>, <span class="symbol"><A NAME="ref_468_32" HREF="terminal_interface-curses-forms__adb.htm#ref_467_16">Fr</A></span>, <span class="symbol"><A NAME="ref_468_36" HREF="terminal_interface-curses-forms__adb.htm#ref_467_16">Fc</A></span>, <span class="symbol"><A NAME="ref_468_40" HREF="terminal_interface-curses-forms__adb.htm#ref_467_16">Os</A></span>, <span class="symbol"><A NAME="ref_468_44" HREF="terminal_interface-curses-forms__adb.htm#ref_467_16">Ab</A></span> : <A HREF="terminal_interface-curses-forms__adb.htm#ref_466_12">C_Int_Access</A>)
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Fld_Info, "field_info");
- <span class="symbol"><A NAME="ref_533_7">L</A></span>, <span class="symbol"><A NAME="ref_533_10">C</A></span>, <span class="symbol"><A NAME="ref_533_13">Fr</A></span>, <span class="symbol"><A NAME="ref_533_17">Fc</A></span>, <span class="symbol"><A NAME="ref_533_21">Os</A></span>, <span class="symbol"><A NAME="ref_533_25">Ab</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_534_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_528_16">Fld_Info</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_484_20">Fld</A>,
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_533_7">L</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_533_10">C</A>'<b>Access</b>,
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_533_13">Fr</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_533_17">Fc</A>'<b>Access</b>,
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_533_21">Os</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_533_25">Ab</A>'<b>Access</b>);
+ <span class="symbol"><A NAME="ref_472_7">L</A></span>, <span class="symbol"><A NAME="ref_472_10">C</A></span>, <span class="symbol"><A NAME="ref_472_13">Fr</A></span>, <span class="symbol"><A NAME="ref_472_17">Fc</A></span>, <span class="symbol"><A NAME="ref_472_21">Os</A></span>, <span class="symbol"><A NAME="ref_472_25">Ab</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_534_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_534_7">Res</A>);
- <b>else</b>
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_485_20">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_533_7">L</A>);
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_486_20">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_533_10">C</A>);
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_487_20">First_Row</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_533_13">Fr</A>);
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_488_20">First_Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_533_17">Fc</A>);
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_489_20">Off_Screen</A> := Natural (<A HREF="terminal_interface-curses-forms__adb.htm#ref_533_21">Os</A>);
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_490_20">Additional_Buffers</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_533_25">Ab</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_484_14">Info</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_467_16">Fld_Info</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_483_20">Fld</A>,
+ <A HREF="terminal_interface-curses-forms__adb.htm#ref_472_7">L</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_472_10">C</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms__adb.htm#ref_472_13">Fr</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_472_17">Fc</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms__adb.htm#ref_472_21">Os</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_472_25">Ab</A>'<b>Access</b>));
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_484_20">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_472_7">L</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_485_20">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_472_10">C</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_486_20">First_Row</A> := <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_472_13">Fr</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_487_20">First_Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_472_17">Fc</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_488_20">Off_Screen</A> := Natural (<A HREF="terminal_interface-curses-forms__adb.htm#ref_472_21">Os</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_489_20">Additional_Buffers</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_472_25">Ab</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_483_14">Info</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_553_14" HREF="terminal_interface-curses-forms__ads.htm#ref_495_14">Dynamic_Info</A></span> (<span class="symbol"><A NAME="ref_553_28" HREF="terminal_interface-curses-forms__ads.htm#ref_495_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_554_28" HREF="terminal_interface-curses-forms__ads.htm#ref_496_28">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_555_28" HREF="terminal_interface-curses-forms__ads.htm#ref_497_28">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_556_28" HREF="terminal_interface-curses-forms__ads.htm#ref_498_28">Max</A></span> : <b>out</b> Natural)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_488_14" HREF="terminal_interface-curses-forms__ads.htm#ref_494_14">Dynamic_Info</A></span> (<span class="symbol"><A NAME="ref_488_28" HREF="terminal_interface-curses-forms__ads.htm#ref_494_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_489_28" HREF="terminal_interface-curses-forms__ads.htm#ref_495_28">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_490_28" HREF="terminal_interface-curses-forms__ads.htm#ref_496_28">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_491_28" HREF="terminal_interface-curses-forms__ads.htm#ref_497_28">Max</A></span> : <b>out</b> Natural)
<b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_558_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_559_16">Dyn_Info</A></span> (<span class="symbol"><A NAME="ref_559_26" HREF="terminal_interface-curses-forms__adb.htm#ref_559_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>; <span class="symbol"><A NAME="ref_559_39" HREF="terminal_interface-curses-forms__adb.htm#ref_559_16">L</A></span>, <span class="symbol"><A NAME="ref_559_42" HREF="terminal_interface-curses-forms__adb.htm#ref_559_16">C</A></span>, <span class="symbol"><A NAME="ref_559_45" HREF="terminal_interface-curses-forms__adb.htm#ref_559_16">M</A></span> : <A HREF="terminal_interface-curses-forms__adb.htm#ref_558_12">C_Int_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>type</b> <span class="symbol"><A NAME="ref_493_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_494_16">Dyn_Info</A></span> (<span class="symbol"><A NAME="ref_494_26" HREF="terminal_interface-curses-forms__adb.htm#ref_494_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>; <span class="symbol"><A NAME="ref_494_39" HREF="terminal_interface-curses-forms__adb.htm#ref_494_16">L</A></span>, <span class="symbol"><A NAME="ref_494_42" HREF="terminal_interface-curses-forms__adb.htm#ref_494_16">C</A></span>, <span class="symbol"><A NAME="ref_494_45" HREF="terminal_interface-curses-forms__adb.htm#ref_494_16">M</A></span> : <A HREF="terminal_interface-curses-forms__adb.htm#ref_493_12">C_Int_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Dyn_Info, "dynamic_field_info");
- <span class="symbol"><A NAME="ref_562_7">L</A></span>, <span class="symbol"><A NAME="ref_562_10">C</A></span>, <span class="symbol"><A NAME="ref_562_13">M</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_563_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_559_16">Dyn_Info</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_495_28">Fld</A>,
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_562_7">L</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_562_10">C</A>'<b>Access</b>,
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_562_13">M</A>'<b>Access</b>);
+ <span class="symbol"><A NAME="ref_497_7">L</A></span>, <span class="symbol"><A NAME="ref_497_10">C</A></span>, <span class="symbol"><A NAME="ref_497_13">M</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_563_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_563_7">Res</A>);
- <b>else</b>
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_496_28">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_562_7">L</A>);
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_497_28">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_562_10">C</A>);
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_498_28">Max</A> := Natural (<A HREF="terminal_interface-curses-forms__adb.htm#ref_562_13">M</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_495_14">Dynamic_Info</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_494_16">Dyn_Info</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_494_28">Fld</A>,
+ <A HREF="terminal_interface-curses-forms__adb.htm#ref_497_7">L</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_497_10">C</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms__adb.htm#ref_497_13">M</A>'<b>Access</b>));
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_495_28">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_497_7">L</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_496_28">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_497_10">C</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_497_28">Max</A> := Natural (<A HREF="terminal_interface-curses-forms__adb.htm#ref_497_13">M</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_494_14">Dynamic_Info</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page form_win.3x</EM></span>
@@ -596,79 +527,70 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_582_14" HREF="terminal_interface-curses-forms__ads.htm#ref_507_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_582_26" HREF="terminal_interface-curses-forms__ads.htm#ref_507_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_583_26" HREF="terminal_interface-curses-forms__ads.htm#ref_508_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_513_14" HREF="terminal_interface-curses-forms__ads.htm#ref_506_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_513_26" HREF="terminal_interface-curses-forms__ads.htm#ref_506_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_514_26" HREF="terminal_interface-curses-forms__ads.htm#ref_507_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_585_16">Set_Form_Win</A></span> (<span class="symbol"><A NAME="ref_585_30" HREF="terminal_interface-curses-forms__adb.htm#ref_585_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_586_30" HREF="terminal_interface-curses-forms__adb.htm#ref_585_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_516_16">Set_Form_Win</A></span> (<span class="symbol"><A NAME="ref_516_30" HREF="terminal_interface-curses-forms__adb.htm#ref_516_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_517_30" HREF="terminal_interface-curses-forms__adb.htm#ref_516_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Form_Win, "set_form_win");
- <span class="symbol"><A NAME="ref_589_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_585_16">Set_Form_Win</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_507_26">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_508_26">Win</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_589_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_589_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_507_14">Set_Window</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_516_16">Set_Form_Win</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_506_26">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_507_26">Win</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_506_14">Set_Window</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_598_13" HREF="terminal_interface-curses-forms__ads.htm#ref_513_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_598_25" HREF="terminal_interface-curses-forms__ads.htm#ref_513_25">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_526_13" HREF="terminal_interface-curses-forms__ads.htm#ref_512_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_526_25" HREF="terminal_interface-curses-forms__ads.htm#ref_512_25">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_600_16">Form_Win</A></span> (<span class="symbol"><A NAME="ref_600_26" HREF="terminal_interface-curses-forms__adb.htm#ref_600_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_528_16">Form_Win</A></span> (<span class="symbol"><A NAME="ref_528_26" HREF="terminal_interface-curses-forms__adb.htm#ref_528_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>pragma</b> Import (C, Form_Win, "form_win");
- <span class="symbol"><A NAME="ref_603_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_600_16">Form_Win</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_513_25">Frm</A>);
+ <span class="symbol"><A NAME="ref_531_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_528_16">Form_Win</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_512_25">Frm</A>);
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_603_7">W</A>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_513_13">Get_Window</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_531_7">W</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_512_13">Get_Window</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_610_14" HREF="terminal_interface-curses-forms__ads.htm#ref_518_14">Set_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_610_30" HREF="terminal_interface-curses-forms__ads.htm#ref_518_30">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_611_30" HREF="terminal_interface-curses-forms__ads.htm#ref_519_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_538_14" HREF="terminal_interface-curses-forms__ads.htm#ref_517_14">Set_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_538_30" HREF="terminal_interface-curses-forms__ads.htm#ref_517_30">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_539_30" HREF="terminal_interface-curses-forms__ads.htm#ref_518_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_613_16">Set_Form_Sub</A></span> (<span class="symbol"><A NAME="ref_613_30" HREF="terminal_interface-curses-forms__adb.htm#ref_613_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_614_30" HREF="terminal_interface-curses-forms__adb.htm#ref_613_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_541_16">Set_Form_Sub</A></span> (<span class="symbol"><A NAME="ref_541_30" HREF="terminal_interface-curses-forms__adb.htm#ref_541_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_542_30" HREF="terminal_interface-curses-forms__adb.htm#ref_541_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Form_Sub, "set_form_sub");
- <span class="symbol"><A NAME="ref_617_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_613_16">Set_Form_Sub</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_518_30">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_519_30">Win</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_617_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_617_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_518_14">Set_Sub_Window</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_541_16">Set_Form_Sub</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_517_30">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_518_30">Win</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_517_14">Set_Sub_Window</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_626_13" HREF="terminal_interface-curses-forms__ads.htm#ref_524_13">Get_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_626_29" HREF="terminal_interface-curses-forms__ads.htm#ref_524_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_551_13" HREF="terminal_interface-curses-forms__ads.htm#ref_523_13">Get_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_551_29" HREF="terminal_interface-curses-forms__ads.htm#ref_523_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_628_16">Form_Sub</A></span> (<span class="symbol"><A NAME="ref_628_26" HREF="terminal_interface-curses-forms__adb.htm#ref_628_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_553_16">Form_Sub</A></span> (<span class="symbol"><A NAME="ref_553_26" HREF="terminal_interface-curses-forms__adb.htm#ref_553_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>pragma</b> Import (C, Form_Sub, "form_sub");
- <span class="symbol"><A NAME="ref_631_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_628_16">Form_Sub</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_524_29">Frm</A>);
+ <span class="symbol"><A NAME="ref_556_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_553_16">Form_Sub</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_523_29">Frm</A>);
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_631_7">W</A>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_524_13">Get_Sub_Window</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_556_7">W</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_523_13">Get_Sub_Window</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_638_14" HREF="terminal_interface-curses-forms__ads.htm#ref_529_14">Scale</A></span> (<span class="symbol"><A NAME="ref_638_21" HREF="terminal_interface-curses-forms__ads.htm#ref_529_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_639_21" HREF="terminal_interface-curses-forms__ads.htm#ref_530_21">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_640_21" HREF="terminal_interface-curses-forms__ads.htm#ref_531_21">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_563_14" HREF="terminal_interface-curses-forms__ads.htm#ref_528_14">Scale</A></span> (<span class="symbol"><A NAME="ref_563_21" HREF="terminal_interface-curses-forms__ads.htm#ref_528_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_564_21" HREF="terminal_interface-curses-forms__ads.htm#ref_529_21">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_565_21" HREF="terminal_interface-curses-forms__ads.htm#ref_530_21">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>)
<b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_642_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_643_16">M_Scale</A></span> (<span class="symbol"><A NAME="ref_643_25" HREF="terminal_interface-curses-forms__adb.htm#ref_643_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>; <span class="symbol"><A NAME="ref_643_37" HREF="terminal_interface-curses-forms__adb.htm#ref_643_16">Yp</A></span>, <span class="symbol"><A NAME="ref_643_41" HREF="terminal_interface-curses-forms__adb.htm#ref_643_16">Xp</A></span> : <A HREF="terminal_interface-curses-forms__adb.htm#ref_642_12">C_Int_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>type</b> <span class="symbol"><A NAME="ref_567_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_568_16">M_Scale</A></span> (<span class="symbol"><A NAME="ref_568_25" HREF="terminal_interface-curses-forms__adb.htm#ref_568_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>; <span class="symbol"><A NAME="ref_568_37" HREF="terminal_interface-curses-forms__adb.htm#ref_568_16">Yp</A></span>, <span class="symbol"><A NAME="ref_568_41" HREF="terminal_interface-curses-forms__adb.htm#ref_568_16">Xp</A></span> : <A HREF="terminal_interface-curses-forms__adb.htm#ref_567_12">C_Int_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, M_Scale, "scale_form");
- <span class="symbol"><A NAME="ref_646_7">X</A></span>, <span class="symbol"><A NAME="ref_646_10">Y</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_647_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_643_16">M_Scale</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_529_21">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_646_10">Y</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_646_7">X</A>'<b>Access</b>);
+ <span class="symbol"><A NAME="ref_571_7">X</A></span>, <span class="symbol"><A NAME="ref_571_10">Y</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_647_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_647_7">Res</A>);
- <b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_530_21">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_646_10">Y</A>);
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_531_21">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_646_7">X</A>);
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_529_14">Scale</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_568_16">M_Scale</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_528_21">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_571_10">Y</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_571_7">X</A>'<b>Access</b>));
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_529_21">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_571_10">Y</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_530_21">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_571_7">X</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_528_14">Scale</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page menu_hook.3x</EM></span>
@@ -676,67 +598,55 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_662_14" HREF="terminal_interface-curses-forms__ads.htm#ref_543_14">Set_Field_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_662_35" HREF="terminal_interface-curses-forms__ads.htm#ref_543_35">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_663_35" HREF="terminal_interface-curses-forms__ads.htm#ref_544_35">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_584_14" HREF="terminal_interface-curses-forms__ads.htm#ref_542_14">Set_Field_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_584_35" HREF="terminal_interface-curses-forms__ads.htm#ref_542_35">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_585_35" HREF="terminal_interface-curses-forms__ads.htm#ref_543_35">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_665_16">Set_Field_Init</A></span> (<span class="symbol"><A NAME="ref_665_32" HREF="terminal_interface-curses-forms__adb.htm#ref_665_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_666_32" HREF="terminal_interface-curses-forms__adb.htm#ref_665_16">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_587_16">Set_Field_Init</A></span> (<span class="symbol"><A NAME="ref_587_32" HREF="terminal_interface-curses-forms__adb.htm#ref_587_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_588_32" HREF="terminal_interface-curses-forms__adb.htm#ref_587_16">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Field_Init, "set_field_init");
- <span class="symbol"><A NAME="ref_669_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_665_16">Set_Field_Init</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_543_35">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_544_35">Proc</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_669_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_669_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_543_14">Set_Field_Init_Hook</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_587_16">Set_Field_Init</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_542_35">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_543_35">Proc</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_542_14">Set_Field_Init_Hook</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_678_14" HREF="terminal_interface-curses-forms__ads.htm#ref_549_14">Set_Field_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_678_35" HREF="terminal_interface-curses-forms__ads.htm#ref_549_35">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_679_35" HREF="terminal_interface-curses-forms__ads.htm#ref_550_35">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_597_14" HREF="terminal_interface-curses-forms__ads.htm#ref_548_14">Set_Field_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_597_35" HREF="terminal_interface-curses-forms__ads.htm#ref_548_35">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_598_35" HREF="terminal_interface-curses-forms__ads.htm#ref_549_35">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_681_16">Set_Field_Term</A></span> (<span class="symbol"><A NAME="ref_681_32" HREF="terminal_interface-curses-forms__adb.htm#ref_681_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_682_32" HREF="terminal_interface-curses-forms__adb.htm#ref_681_16">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_600_16">Set_Field_Term</A></span> (<span class="symbol"><A NAME="ref_600_32" HREF="terminal_interface-curses-forms__adb.htm#ref_600_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_601_32" HREF="terminal_interface-curses-forms__adb.htm#ref_600_16">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Field_Term, "set_field_term");
- <span class="symbol"><A NAME="ref_685_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_681_16">Set_Field_Term</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_549_35">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_550_35">Proc</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_685_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_685_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_549_14">Set_Field_Term_Hook</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_600_16">Set_Field_Term</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_548_35">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_549_35">Proc</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_548_14">Set_Field_Term_Hook</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_694_14" HREF="terminal_interface-curses-forms__ads.htm#ref_555_14">Set_Form_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_694_34" HREF="terminal_interface-curses-forms__ads.htm#ref_555_34">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_695_34" HREF="terminal_interface-curses-forms__ads.htm#ref_556_34">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_610_14" HREF="terminal_interface-curses-forms__ads.htm#ref_554_14">Set_Form_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_610_34" HREF="terminal_interface-curses-forms__ads.htm#ref_554_34">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_611_34" HREF="terminal_interface-curses-forms__ads.htm#ref_555_34">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_697_16">Set_Form_Init</A></span> (<span class="symbol"><A NAME="ref_697_31" HREF="terminal_interface-curses-forms__adb.htm#ref_697_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_698_31" HREF="terminal_interface-curses-forms__adb.htm#ref_697_16">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_613_16">Set_Form_Init</A></span> (<span class="symbol"><A NAME="ref_613_31" HREF="terminal_interface-curses-forms__adb.htm#ref_613_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_614_31" HREF="terminal_interface-curses-forms__adb.htm#ref_613_16">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Form_Init, "set_form_init");
- <span class="symbol"><A NAME="ref_701_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_697_16">Set_Form_Init</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_555_34">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_556_34">Proc</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_701_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_701_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_555_14">Set_Form_Init_Hook</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_613_16">Set_Form_Init</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_554_34">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_555_34">Proc</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_554_14">Set_Form_Init_Hook</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_710_14" HREF="terminal_interface-curses-forms__ads.htm#ref_561_14">Set_Form_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_710_34" HREF="terminal_interface-curses-forms__ads.htm#ref_561_34">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_711_34" HREF="terminal_interface-curses-forms__ads.htm#ref_562_34">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_623_14" HREF="terminal_interface-curses-forms__ads.htm#ref_560_14">Set_Form_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_623_34" HREF="terminal_interface-curses-forms__ads.htm#ref_560_34">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_624_34" HREF="terminal_interface-curses-forms__ads.htm#ref_561_34">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_713_16">Set_Form_Term</A></span> (<span class="symbol"><A NAME="ref_713_31" HREF="terminal_interface-curses-forms__adb.htm#ref_713_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_714_31" HREF="terminal_interface-curses-forms__adb.htm#ref_713_16">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_626_16">Set_Form_Term</A></span> (<span class="symbol"><A NAME="ref_626_31" HREF="terminal_interface-curses-forms__adb.htm#ref_626_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_627_31" HREF="terminal_interface-curses-forms__adb.htm#ref_626_16">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Form_Term, "set_form_term");
- <span class="symbol"><A NAME="ref_717_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_713_16">Set_Form_Term</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_561_34">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_562_34">Proc</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_717_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_717_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_561_14">Set_Form_Term_Hook</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_626_16">Set_Form_Term</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_560_34">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_561_34">Proc</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_560_14">Set_Form_Term_Hook</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page form_fields.3x</EM></span>
@@ -744,71 +654,64 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_730_14" HREF="terminal_interface-curses-forms__ads.htm#ref_591_14">Redefine</A></span> (<span class="symbol"><A NAME="ref_730_24" HREF="terminal_interface-curses-forms__ads.htm#ref_591_24">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_731_24" HREF="terminal_interface-curses-forms__ads.htm#ref_592_24">Flds</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_640_14" HREF="terminal_interface-curses-forms__ads.htm#ref_590_14">Redefine</A></span> (<span class="symbol"><A NAME="ref_640_24" HREF="terminal_interface-curses-forms__ads.htm#ref_590_24">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_641_24" HREF="terminal_interface-curses-forms__ads.htm#ref_591_24">Flds</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_135_9">Field_Array_Access</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_733_16">Set_Frm_Fields</A></span> (<span class="symbol"><A NAME="ref_733_32" HREF="terminal_interface-curses-forms__adb.htm#ref_733_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_734_32" HREF="terminal_interface-curses-forms__adb.htm#ref_733_16">Items</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_643_16">Set_Frm_Fields</A></span> (<span class="symbol"><A NAME="ref_643_32" HREF="terminal_interface-curses-forms__adb.htm#ref_643_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_644_32" HREF="terminal_interface-curses-forms__adb.htm#ref_643_16">Items</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Frm_Fields, "set_form_fields");
- <span class="symbol"><A NAME="ref_737_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms__ads.htm#ref_592_24">Flds</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_592_24">Flds</A>'Last) = <A HREF="terminal_interface-curses-forms__ads.htm#ref_59_4">Null_Field</A>);
- <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_592_24">Flds</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_592_24">Flds</A>'Last) /= <A HREF="terminal_interface-curses-forms__ads.htm#ref_59_4">Null_Field</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms__ads.htm#ref_591_24">Flds</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_591_24">Flds</A>'Last) = <A HREF="terminal_interface-curses-forms__ads.htm#ref_54_4">Null_Field</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_591_24">Flds</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_591_24">Flds</A>'Last) /= <A HREF="terminal_interface-curses-forms__ads.htm#ref_54_4">Null_Field</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>else</b>
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_737_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_733_16">Set_Frm_Fields</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_591_24">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_592_24">Flds</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_592_24">Flds</A>'First)'Address);
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_737_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_737_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_643_16">Set_Frm_Fields</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_590_24">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_591_24">Flds</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_591_24">Flds</A>'First)'Address));
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_591_14">Redefine</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_590_14">Redefine</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_752_13" HREF="terminal_interface-curses-forms__ads.htm#ref_603_13">Fields</A></span> (<span class="symbol"><A NAME="ref_752_21" HREF="terminal_interface-curses-forms__ads.htm#ref_603_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_753_21" HREF="terminal_interface-curses-forms__ads.htm#ref_604_21">Index</A></span> : Positive) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_658_13" HREF="terminal_interface-curses-forms__ads.htm#ref_602_13">Fields</A></span> (<span class="symbol"><A NAME="ref_658_21" HREF="terminal_interface-curses-forms__ads.htm#ref_602_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_659_21" HREF="terminal_interface-curses-forms__ads.htm#ref_603_21">Index</A></span> : Positive) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>
<b>is</b>
<b>use</b> F_Array;
- <b>function</b> C_Fields (<span class="symbol"><A NAME="ref_757_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> Pointer;
+ <b>function</b> C_Fields (<span class="symbol"><A NAME="ref_663_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> Pointer;
<b>pragma</b> Import (C, C_Fields, "form_fields");
- P : Pointer := C_Fields (<A HREF="terminal_interface-curses-forms__ads.htm#ref_603_21">Frm</A>);
+ P : Pointer := C_Fields (<A HREF="terminal_interface-curses-forms__ads.htm#ref_602_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#ref_604_21">Index</A> &gt; <A HREF="terminal_interface-curses-forms__ads.htm#ref_609_13">Field_Count</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_603_21">Frm</A>) <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>if</b> P = <b>null</b> <b>or</b> <b>else</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_603_21">Index</A> &gt; <A HREF="terminal_interface-curses-forms__ads.htm#ref_608_13">Field_Count</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_602_21">Frm</A>) <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>else</b>
- P := P + ptrdiff_t (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_604_21">Index</A>) - 1);
+ P := P + ptrdiff_t (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_603_21">Index</A>) - 1);
<b>return</b> P.<b>all</b>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_603_13">Fields</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_602_13">Fields</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_772_13" HREF="terminal_interface-curses-forms__ads.htm#ref_609_13">Field_Count</A></span> (<span class="symbol"><A NAME="ref_772_26" HREF="terminal_interface-curses-forms__ads.htm#ref_609_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> Natural
+ <b>function</b> <span class="symbol"><A NAME="ref_678_13" HREF="terminal_interface-curses-forms__ads.htm#ref_608_13">Field_Count</A></span> (<span class="symbol"><A NAME="ref_678_26" HREF="terminal_interface-curses-forms__ads.htm#ref_608_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> Natural
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_774_16">Count</A></span> (<span class="symbol"><A NAME="ref_774_23" HREF="terminal_interface-curses-forms__adb.htm#ref_774_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_680_16">Count</A></span> (<span class="symbol"><A NAME="ref_680_23" HREF="terminal_interface-curses-forms__adb.htm#ref_680_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Count, "field_count");
<b>begin</b>
- <b>return</b> Natural (<A HREF="terminal_interface-curses-forms__adb.htm#ref_774_16">Count</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_609_26">Frm</A>));
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_609_13">Field_Count</A>;
+ <b>return</b> Natural (<A HREF="terminal_interface-curses-forms__adb.htm#ref_680_16">Count</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_608_26">Frm</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_608_13">Field_Count</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_782_14" HREF="terminal_interface-curses-forms__ads.htm#ref_614_14">Move</A></span> (<span class="symbol"><A NAME="ref_782_20" HREF="terminal_interface-curses-forms__ads.htm#ref_614_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_783_20" HREF="terminal_interface-curses-forms__ads.htm#ref_615_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_784_20" HREF="terminal_interface-curses-forms__ads.htm#ref_616_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_688_14" HREF="terminal_interface-curses-forms__ads.htm#ref_613_14">Move</A></span> (<span class="symbol"><A NAME="ref_688_20" HREF="terminal_interface-curses-forms__ads.htm#ref_613_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_689_20" HREF="terminal_interface-curses-forms__ads.htm#ref_614_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_690_20" HREF="terminal_interface-curses-forms__ads.htm#ref_615_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_786_16">Move</A></span> (<span class="symbol"><A NAME="ref_786_22" HREF="terminal_interface-curses-forms__adb.htm#ref_786_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>; <span class="symbol"><A NAME="ref_786_35" HREF="terminal_interface-curses-forms__adb.htm#ref_786_16">L</A></span>, <span class="symbol"><A NAME="ref_786_38" HREF="terminal_interface-curses-forms__adb.htm#ref_786_16">C</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_692_16">Move</A></span> (<span class="symbol"><A NAME="ref_692_22" HREF="terminal_interface-curses-forms__adb.htm#ref_692_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>; <span class="symbol"><A NAME="ref_692_35" HREF="terminal_interface-curses-forms__adb.htm#ref_692_16">L</A></span>, <span class="symbol"><A NAME="ref_692_38" HREF="terminal_interface-curses-forms__adb.htm#ref_692_16">C</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Move, "move_field");
- <span class="symbol"><A NAME="ref_789_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_786_16">Move</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_614_20">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_615_20">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_616_20">Column</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_789_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_789_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_614_14">Move</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_692_16">Move</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_613_20">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_614_20">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_615_20">Column</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_613_14">Move</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page form_new.3x</EM></span>
@@ -816,39 +719,36 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_802_13" HREF="terminal_interface-curses-forms__ads.htm#ref_625_13">Create</A></span> (<span class="symbol"><A NAME="ref_802_21" HREF="terminal_interface-curses-forms__ads.htm#ref_625_21">Fields</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_705_13" HREF="terminal_interface-curses-forms__ads.htm#ref_624_13">Create</A></span> (<span class="symbol"><A NAME="ref_705_21" HREF="terminal_interface-curses-forms__ads.htm#ref_624_21">Fields</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_135_9">Field_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_804_16">NewForm</A></span> (<span class="symbol"><A NAME="ref_804_25" HREF="terminal_interface-curses-forms__adb.htm#ref_804_16">Fields</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_707_16">NewForm</A></span> (<span class="symbol"><A NAME="ref_707_25" HREF="terminal_interface-curses-forms__adb.htm#ref_707_16">Fields</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
<b>pragma</b> Import (C, NewForm, "new_form");
- <span class="symbol"><A NAME="ref_807_7">M</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
+ <span class="symbol"><A NAME="ref_710_7">M</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
<b>begin</b>
- <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms__ads.htm#ref_625_21">Fields</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_625_21">Fields</A>'Last) = <A HREF="terminal_interface-curses-forms__ads.htm#ref_59_4">Null_Field</A>);
- <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_625_21">Fields</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_625_21">Fields</A>'Last) /= <A HREF="terminal_interface-curses-forms__ads.htm#ref_59_4">Null_Field</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms__ads.htm#ref_624_21">Fields</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_624_21">Fields</A>'Last) = <A HREF="terminal_interface-curses-forms__ads.htm#ref_54_4">Null_Field</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_624_21">Fields</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_624_21">Fields</A>'Last) /= <A HREF="terminal_interface-curses-forms__ads.htm#ref_54_4">Null_Field</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>else</b>
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_807_7">M</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_804_16">NewForm</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_625_21">Fields</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_625_21">Fields</A>'First)'Address);
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_807_7">M</A> = <A HREF="terminal_interface-curses-forms__ads.htm#ref_60_4">Null_Form</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <A HREF="terminal_interface-curses-forms__adb.htm#ref_710_7">M</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_707_16">NewForm</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_624_21">Fields</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_624_21">Fields</A>'First)'Address);
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_710_7">M</A> = <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Form</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>end</b> <b>if</b>;
- <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_807_7">M</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_710_7">M</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_625_13">Create</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_624_13">Create</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_823_14" HREF="terminal_interface-curses-forms__ads.htm#ref_636_14">Delete</A></span> (<span class="symbol"><A NAME="ref_823_22" HREF="terminal_interface-curses-forms__ads.htm#ref_636_22">Frm</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_726_14" HREF="terminal_interface-curses-forms__ads.htm#ref_635_14">Delete</A></span> (<span class="symbol"><A NAME="ref_726_22" HREF="terminal_interface-curses-forms__ads.htm#ref_635_22">Frm</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_825_16">Free</A></span> (<span class="symbol"><A NAME="ref_825_22" HREF="terminal_interface-curses-forms__adb.htm#ref_825_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_728_16">Free</A></span> (<span class="symbol"><A NAME="ref_728_22" HREF="terminal_interface-curses-forms__adb.htm#ref_728_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Free, "free_form");
- <span class="symbol"><A NAME="ref_828_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_825_16">Free</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_636_22">Frm</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_828_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_828_7">Res</A>);
- <b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_636_22">Frm</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_60_4">Null_Form</A>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_636_14">Delete</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_728_16">Free</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_635_22">Frm</A>));
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_635_22">Frm</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Form</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_635_14">Delete</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page form_opts.3x</EM></span>
@@ -856,70 +756,59 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_842_14" HREF="terminal_interface-curses-forms__ads.htm#ref_646_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_842_27" HREF="terminal_interface-curses-forms__ads.htm#ref_646_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_843_27" HREF="terminal_interface-curses-forms__ads.htm#ref_647_27">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_742_14" HREF="terminal_interface-curses-forms__ads.htm#ref_645_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_742_27" HREF="terminal_interface-curses-forms__ads.htm#ref_645_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_743_27" HREF="terminal_interface-curses-forms__ads.htm#ref_646_27">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_845_16">Set_Form_Opts</A></span> (<span class="symbol"><A NAME="ref_845_31" HREF="terminal_interface-curses-forms__adb.htm#ref_845_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_846_31" HREF="terminal_interface-curses-forms__adb.htm#ref_845_16">Opt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_745_16">Set_Form_Opts</A></span> (<span class="symbol"><A NAME="ref_745_31" HREF="terminal_interface-curses-forms__adb.htm#ref_745_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_746_31" HREF="terminal_interface-curses-forms__adb.htm#ref_745_16">Opt</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Form_Opts, "set_form_opts");
- <span class="symbol"><A NAME="ref_849_7">Opt</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := FrmOS_2_CInt (<A HREF="terminal_interface-curses-forms__ads.htm#ref_647_27">Options</A>);
- <span class="symbol"><A NAME="ref_850_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_850_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_845_16">Set_Form_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_646_27">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_849_7">Opt</A>);
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_850_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_850_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_646_14">Set_Options</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_745_16">Set_Form_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_645_27">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_646_27">Options</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_645_14">Set_Options</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_860_14" HREF="terminal_interface-curses-forms__ads.htm#ref_652_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_860_30" HREF="terminal_interface-curses-forms__ads.htm#ref_652_30">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_861_30" HREF="terminal_interface-curses-forms__ads.htm#ref_653_30">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>;
- <span class="symbol"><A NAME="ref_862_30" HREF="terminal_interface-curses-forms__ads.htm#ref_654_30">On</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_755_14" HREF="terminal_interface-curses-forms__ads.htm#ref_651_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_755_30" HREF="terminal_interface-curses-forms__ads.htm#ref_651_30">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_756_30" HREF="terminal_interface-curses-forms__ads.htm#ref_652_30">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>;
+ <span class="symbol"><A NAME="ref_757_30" HREF="terminal_interface-curses-forms__ads.htm#ref_653_30">On</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_864_16">Form_Opts_On</A></span> (<span class="symbol"><A NAME="ref_864_30" HREF="terminal_interface-curses-forms__adb.htm#ref_864_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_865_30" HREF="terminal_interface-curses-forms__adb.htm#ref_864_16">Opt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_759_16">Form_Opts_On</A></span> (<span class="symbol"><A NAME="ref_759_30" HREF="terminal_interface-curses-forms__adb.htm#ref_759_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_760_30" HREF="terminal_interface-curses-forms__adb.htm#ref_759_16">Opt</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Form_Opts_On, "form_opts_on");
- <b>function</b> <span class="symbol"><A NAME="ref_867_16">Form_Opts_Off</A></span> (<span class="symbol"><A NAME="ref_867_31" HREF="terminal_interface-curses-forms__adb.htm#ref_867_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_868_31" HREF="terminal_interface-curses-forms__adb.htm#ref_867_16">Opt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_762_16">Form_Opts_Off</A></span> (<span class="symbol"><A NAME="ref_762_31" HREF="terminal_interface-curses-forms__adb.htm#ref_762_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_763_31" HREF="terminal_interface-curses-forms__adb.htm#ref_762_16">Opt</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Form_Opts_Off, "form_opts_off");
- <span class="symbol"><A NAME="ref_871_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
- <span class="symbol"><A NAME="ref_872_7">Opt</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := FrmOS_2_CInt (<A HREF="terminal_interface-curses-forms__ads.htm#ref_653_30">Options</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_654_30">On</A> <b>then</b>
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_871_7">Err</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_864_16">Form_Opts_On</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_652_30">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_872_7">Opt</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_653_30">On</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_759_16">Form_Opts_On</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_651_30">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_652_30">Options</A>));
<b>else</b>
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_871_7">Err</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_867_16">Form_Opts_Off</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_652_30">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_872_7">Opt</A>);
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_762_16">Form_Opts_Off</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_651_30">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_652_30">Options</A>));
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_871_7">Err</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_871_7">Err</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_652_14">Switch_Options</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_651_14">Switch_Options</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_886_14" HREF="terminal_interface-curses-forms__ads.htm#ref_660_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_886_27" HREF="terminal_interface-curses-forms__ads.htm#ref_660_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_887_27" HREF="terminal_interface-curses-forms__ads.htm#ref_661_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_776_14" HREF="terminal_interface-curses-forms__ads.htm#ref_659_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_776_27" HREF="terminal_interface-curses-forms__ads.htm#ref_659_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_777_27" HREF="terminal_interface-curses-forms__ads.htm#ref_660_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_889_16">Form_Opts</A></span> (<span class="symbol"><A NAME="ref_889_27" HREF="terminal_interface-curses-forms__adb.htm#ref_889_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_779_16">Form_Opts</A></span> (<span class="symbol"><A NAME="ref_779_27" HREF="terminal_interface-curses-forms__adb.htm#ref_779_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>;
<b>pragma</b> Import (C, Form_Opts, "form_opts");
- <span class="symbol"><A NAME="ref_892_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_889_16">Form_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_660_27">Frm</A>);
<b>begin</b>
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_661_27">Options</A> := CInt_2_FrmOS (<A HREF="terminal_interface-curses-forms__adb.htm#ref_892_7">Res</A>);
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_660_14">Get_Options</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_660_27">Options</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_779_16">Form_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_659_27">Frm</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_659_14">Get_Options</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_899_13" HREF="terminal_interface-curses-forms__ads.htm#ref_665_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_899_26" HREF="terminal_interface-curses-forms__ads.htm#ref_665_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_60_4">Null_Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_788_13" HREF="terminal_interface-curses-forms__ads.htm#ref_664_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_788_26" HREF="terminal_interface-curses-forms__ads.htm#ref_664_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_901_7">Fos</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>;
+ <span class="symbol"><A NAME="ref_790_7">Fos</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_660_14">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_665_26">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_901_7">Fos</A>);
- <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_901_7">Fos</A>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_665_13">Get_Options</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_659_14">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_664_26">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_790_7">Fos</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_790_7">Fos</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_664_13">Get_Options</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page form_post.3x</EM></span>
@@ -927,25 +816,21 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_913_14" HREF="terminal_interface-curses-forms__ads.htm#ref_674_14">Post</A></span> (<span class="symbol"><A NAME="ref_913_20" HREF="terminal_interface-curses-forms__ads.htm#ref_674_20">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_914_20" HREF="terminal_interface-curses-forms__ads.htm#ref_675_20">Post</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_802_14" HREF="terminal_interface-curses-forms__ads.htm#ref_673_14">Post</A></span> (<span class="symbol"><A NAME="ref_802_20" HREF="terminal_interface-curses-forms__ads.htm#ref_673_20">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_803_20" HREF="terminal_interface-curses-forms__ads.htm#ref_674_20">Post</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_916_16">M_Post</A></span> (<span class="symbol"><A NAME="ref_916_24" HREF="terminal_interface-curses-forms__adb.htm#ref_916_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_805_16">M_Post</A></span> (<span class="symbol"><A NAME="ref_805_24" HREF="terminal_interface-curses-forms__adb.htm#ref_805_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, M_Post, "post_form");
- <b>function</b> <span class="symbol"><A NAME="ref_918_16">M_Unpost</A></span> (<span class="symbol"><A NAME="ref_918_26" HREF="terminal_interface-curses-forms__adb.htm#ref_918_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_807_16">M_Unpost</A></span> (<span class="symbol"><A NAME="ref_807_26" HREF="terminal_interface-curses-forms__adb.htm#ref_807_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, M_Unpost, "unpost_form");
- <span class="symbol"><A NAME="ref_921_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_675_20">Post</A> <b>then</b>
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_921_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_916_16">M_Post</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_674_20">Frm</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_674_20">Post</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_805_16">M_Post</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_673_20">Frm</A>));
<b>else</b>
- <A HREF="terminal_interface-curses-forms__adb.htm#ref_921_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_918_16">M_Unpost</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_674_20">Frm</A>);
- <b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_921_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_921_7">Res</A>);
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_807_16">M_Unpost</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_673_20">Frm</A>));
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_674_14">Post</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_673_14">Post</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page form_cursor.3x</EM></span>
@@ -953,17 +838,14 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_939_14" HREF="terminal_interface-curses-forms__ads.htm#ref_685_14">Position_Cursor</A></span> (<span class="symbol"><A NAME="ref_939_31" HREF="terminal_interface-curses-forms__ads.htm#ref_685_31">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_824_14" HREF="terminal_interface-curses-forms__ads.htm#ref_684_14">Position_Cursor</A></span> (<span class="symbol"><A NAME="ref_824_31" HREF="terminal_interface-curses-forms__ads.htm#ref_684_31">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_941_16">Pos_Form_Cursor</A></span> (<span class="symbol"><A NAME="ref_941_33" HREF="terminal_interface-curses-forms__adb.htm#ref_941_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_826_16">Pos_Form_Cursor</A></span> (<span class="symbol"><A NAME="ref_826_33" HREF="terminal_interface-curses-forms__adb.htm#ref_826_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Pos_Form_Cursor, "pos_form_cursor");
- <span class="symbol"><A NAME="ref_944_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_941_16">Pos_Form_Cursor</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_685_31">Frm</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_944_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_944_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_685_14">Position_Cursor</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_826_16">Pos_Form_Cursor</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_684_31">Frm</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_684_14">Position_Cursor</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page form_data.3x</EM></span>
@@ -971,35 +853,35 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_957_13" HREF="terminal_interface-curses-forms__ads.htm#ref_694_13">Data_Ahead</A></span> (<span class="symbol"><A NAME="ref_957_25" HREF="terminal_interface-curses-forms__ads.htm#ref_694_25">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_839_13" HREF="terminal_interface-curses-forms__ads.htm#ref_693_13">Data_Ahead</A></span> (<span class="symbol"><A NAME="ref_839_25" HREF="terminal_interface-curses-forms__ads.htm#ref_693_25">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_959_16">Ahead</A></span> (<span class="symbol"><A NAME="ref_959_23" HREF="terminal_interface-curses-forms__adb.htm#ref_959_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_841_16">Ahead</A></span> (<span class="symbol"><A NAME="ref_841_23" HREF="terminal_interface-curses-forms__adb.htm#ref_841_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Ahead, "data_ahead");
- <span class="symbol"><A NAME="ref_962_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_959_16">Ahead</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_694_25">Frm</A>);
+ <span class="symbol"><A NAME="ref_844_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_841_16">Ahead</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_693_25">Frm</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_962_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">Curses_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_844_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_66_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> <A HREF="terminal_interface-curses-forms__ads.htm#ref_694_13">Data_Ahead</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_693_13">Data_Ahead</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_973_13" HREF="terminal_interface-curses-forms__ads.htm#ref_699_13">Data_Behind</A></span> (<span class="symbol"><A NAME="ref_973_26" HREF="terminal_interface-curses-forms__ads.htm#ref_699_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_855_13" HREF="terminal_interface-curses-forms__ads.htm#ref_698_13">Data_Behind</A></span> (<span class="symbol"><A NAME="ref_855_26" HREF="terminal_interface-curses-forms__ads.htm#ref_698_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_975_16">Behind</A></span> (<span class="symbol"><A NAME="ref_975_24" HREF="terminal_interface-curses-forms__adb.htm#ref_975_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_857_16">Behind</A></span> (<span class="symbol"><A NAME="ref_857_24" HREF="terminal_interface-curses-forms__adb.htm#ref_857_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Behind, "data_behind");
- <span class="symbol"><A NAME="ref_978_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_975_16">Behind</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_699_26">Frm</A>);
+ <span class="symbol"><A NAME="ref_860_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_857_16">Behind</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_698_26">Frm</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_978_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">Curses_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_860_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_66_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> <A HREF="terminal_interface-curses-forms__ads.htm#ref_699_13">Data_Behind</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_698_13">Data_Behind</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page form_driver.3x</EM></span>
@@ -1007,29 +889,26 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_993_13" HREF="terminal_interface-curses-forms__ads.htm#ref_713_13">Driver</A></span> (<span class="symbol"><A NAME="ref_993_21" HREF="terminal_interface-curses-forms__ads.htm#ref_713_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_994_21" HREF="terminal_interface-curses-forms__ads.htm#ref_714_21">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_68_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_707_9">Driver_Result</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_875_13" HREF="terminal_interface-curses-forms__ads.htm#ref_712_13">Driver</A></span> (<span class="symbol"><A NAME="ref_875_21" HREF="terminal_interface-curses-forms__ads.htm#ref_712_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_876_21" HREF="terminal_interface-curses-forms__ads.htm#ref_713_21">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_66_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_706_9">Driver_Result</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_996_16">Frm_Driver</A></span> (<span class="symbol"><A NAME="ref_996_28" HREF="terminal_interface-curses-forms__adb.htm#ref_996_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>; <span class="symbol"><A NAME="ref_996_40" HREF="terminal_interface-curses-forms__adb.htm#ref_996_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_878_16">Frm_Driver</A></span> (<span class="symbol"><A NAME="ref_878_28" HREF="terminal_interface-curses-forms__adb.htm#ref_878_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>; <span class="symbol"><A NAME="ref_878_40" HREF="terminal_interface-curses-forms__adb.htm#ref_878_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Frm_Driver, "form_driver");
- <span class="symbol"><A NAME="ref_999_7">R</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_996_16">Frm_Driver</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_713_21">Frm</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_714_21">Key</A>));
+ <span class="symbol"><A NAME="ref_881_7">R</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_878_16">Frm_Driver</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_712_21">Frm</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_713_21">Key</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_999_7">R</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_999_7">R</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_88_4">E_Unknown_Command</A> <b>then</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_709_27">Unknown_Request</A>;
- <b>elsif</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_999_7">R</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_93_4">E_Invalid_Field</A> <b>then</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_710_27">Invalid_Field</A>;
- <b>elsif</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_999_7">R</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_92_4">E_Request_Denied</A> <b>then</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_708_27">Request_Denied</A>;
- <b>else</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_999_7">R</A>);
- <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_707_27">Form_Ok</A>;
- <b>end</b> <b>if</b>;
- <b>else</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_707_27">Form_Ok</A>;
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_713_13">Driver</A>;
+ <b>case</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_881_7">R</A> <b>is</b>
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_76_7">E_Unknown_Command</A> =&gt;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_708_27">Unknown_Request</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_71_7">E_Invalid_Field</A> =&gt;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_709_27">Invalid_Field</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_7">E_Request_Denied</A> =&gt;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_707_27">Request_Denied</A>;
+ <b>when</b> <b>others</b> =&gt;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_881_7">R</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_706_27">Form_Ok</A>;
+ <b>end</b> <b>case</b>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_712_13">Driver</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | man page form_page.3x</EM></span>
@@ -1037,77 +916,71 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1023_14" HREF="terminal_interface-curses-forms__ads.htm#ref_725_14">Set_Current</A></span> (<span class="symbol"><A NAME="ref_1023_27" HREF="terminal_interface-curses-forms__ads.htm#ref_725_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_1024_27" HREF="terminal_interface-curses-forms__ads.htm#ref_726_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_902_14" HREF="terminal_interface-curses-forms__ads.htm#ref_724_14">Set_Current</A></span> (<span class="symbol"><A NAME="ref_902_27" HREF="terminal_interface-curses-forms__ads.htm#ref_724_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_903_27" HREF="terminal_interface-curses-forms__ads.htm#ref_725_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1026_16">Set_Current_Fld</A></span> (<span class="symbol"><A NAME="ref_1026_33" HREF="terminal_interface-curses-forms__adb.htm#ref_1026_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>; <span class="symbol"><A NAME="ref_1026_45" HREF="terminal_interface-curses-forms__adb.htm#ref_1026_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_905_16">Set_Current_Fld</A></span> (<span class="symbol"><A NAME="ref_905_33" HREF="terminal_interface-curses-forms__adb.htm#ref_905_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>; <span class="symbol"><A NAME="ref_905_45" HREF="terminal_interface-curses-forms__adb.htm#ref_905_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Current_Fld, "set_current_field");
- <span class="symbol"><A NAME="ref_1029_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_1026_16">Set_Current_Fld</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_725_27">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_726_27">Fld</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_1029_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_1029_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_725_14">Set_Current</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_905_16">Set_Current_Fld</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_724_27">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_725_27">Fld</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_724_14">Set_Current</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1038_13" HREF="terminal_interface-curses-forms__ads.htm#ref_731_13">Current</A></span> (<span class="symbol"><A NAME="ref_1038_22" HREF="terminal_interface-curses-forms__ads.htm#ref_731_22">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_914_13" HREF="terminal_interface-curses-forms__ads.htm#ref_730_13">Current</A></span> (<span class="symbol"><A NAME="ref_914_22" HREF="terminal_interface-curses-forms__ads.htm#ref_730_22">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1040_16">Current_Fld</A></span> (<span class="symbol"><A NAME="ref_1040_29" HREF="terminal_interface-curses-forms__adb.htm#ref_1040_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_916_16">Current_Fld</A></span> (<span class="symbol"><A NAME="ref_916_29" HREF="terminal_interface-curses-forms__adb.htm#ref_916_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<b>pragma</b> Import (C, Current_Fld, "current_field");
- <span class="symbol"><A NAME="ref_1043_7">Fld</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_1040_16">Current_Fld</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_731_22">Frm</A>);
+ <span class="symbol"><A NAME="ref_919_7">Fld</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_916_16">Current_Fld</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_730_22">Frm</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_1043_7">Fld</A> = <A HREF="terminal_interface-curses-forms__ads.htm#ref_59_4">Null_Field</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_919_7">Fld</A> = <A HREF="terminal_interface-curses-forms__ads.htm#ref_54_4">Null_Field</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>end</b> <b>if</b>;
- <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_1043_7">Fld</A>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_731_13">Current</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_919_7">Fld</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_730_13">Current</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1053_14" HREF="terminal_interface-curses-forms__ads.htm#ref_736_14">Set_Page</A></span> (<span class="symbol"><A NAME="ref_1053_24" HREF="terminal_interface-curses-forms__ads.htm#ref_736_24">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_1054_24" HREF="terminal_interface-curses-forms__ads.htm#ref_737_24">Page</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_722_9">Page_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_722_9">Page_Number</A>'First)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_929_14" HREF="terminal_interface-curses-forms__ads.htm#ref_735_14">Set_Page</A></span> (<span class="symbol"><A NAME="ref_929_24" HREF="terminal_interface-curses-forms__ads.htm#ref_735_24">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_930_24" HREF="terminal_interface-curses-forms__ads.htm#ref_736_24">Page</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_721_9">Page_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_721_9">Page_Number</A>'First)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1056_16">Set_Frm_Page</A></span> (<span class="symbol"><A NAME="ref_1056_30" HREF="terminal_interface-curses-forms__adb.htm#ref_1056_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>; <span class="symbol"><A NAME="ref_1056_42" HREF="terminal_interface-curses-forms__adb.htm#ref_1056_16">Pg</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_932_16">Set_Frm_Page</A></span> (<span class="symbol"><A NAME="ref_932_30" HREF="terminal_interface-curses-forms__adb.htm#ref_932_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>; <span class="symbol"><A NAME="ref_932_42" HREF="terminal_interface-curses-forms__adb.htm#ref_932_16">Pg</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Frm_Page, "set_form_page");
- <span class="symbol"><A NAME="ref_1059_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_1056_16">Set_Frm_Page</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_736_24">Frm</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_737_24">Page</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_1059_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_1059_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_736_14">Set_Page</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_932_16">Set_Frm_Page</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_735_24">Frm</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_736_24">Page</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_735_14">Set_Page</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1068_13" HREF="terminal_interface-curses-forms__ads.htm#ref_742_13">Page</A></span> (<span class="symbol"><A NAME="ref_1068_19" HREF="terminal_interface-curses-forms__ads.htm#ref_742_19">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_722_9">Page_Number</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_941_13" HREF="terminal_interface-curses-forms__ads.htm#ref_741_13">Page</A></span> (<span class="symbol"><A NAME="ref_941_19" HREF="terminal_interface-curses-forms__ads.htm#ref_741_19">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_721_9">Page_Number</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1070_16">Get_Page</A></span> (<span class="symbol"><A NAME="ref_1070_26" HREF="terminal_interface-curses-forms__adb.htm#ref_1070_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_943_16">Get_Page</A></span> (<span class="symbol"><A NAME="ref_943_26" HREF="terminal_interface-curses-forms__adb.htm#ref_943_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Get_Page, "form_page");
- <span class="symbol"><A NAME="ref_1073_7">P</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_1070_16">Get_Page</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_742_19">Frm</A>);
+ <span class="symbol"><A NAME="ref_946_7">P</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_943_16">Get_Page</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_741_19">Frm</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_1073_7">P</A> &lt; 0 <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_946_7">P</A> &lt; 0 <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>else</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_722_9">Page_Number</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_1073_7">P</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_721_9">Page_Number</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_946_7">P</A>);
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_742_13">Page</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_741_13">Page</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_1082_13" HREF="terminal_interface-curses-forms__ads.htm#ref_747_13">Get_Index</A></span> (<span class="symbol"><A NAME="ref_1082_24" HREF="terminal_interface-curses-forms__ads.htm#ref_747_24">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> Positive
+ <b>function</b> <span class="symbol"><A NAME="ref_955_13" HREF="terminal_interface-curses-forms__ads.htm#ref_746_13">Get_Index</A></span> (<span class="symbol"><A NAME="ref_955_24" HREF="terminal_interface-curses-forms__ads.htm#ref_746_24">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> Positive
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1084_16">Get_Fieldindex</A></span> (<span class="symbol"><A NAME="ref_1084_32" HREF="terminal_interface-curses-forms__adb.htm#ref_1084_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_957_16">Get_Fieldindex</A></span> (<span class="symbol"><A NAME="ref_957_32" HREF="terminal_interface-curses-forms__adb.htm#ref_957_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Get_Fieldindex, "field_index");
- <span class="symbol"><A NAME="ref_1087_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_1084_16">Get_Fieldindex</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_747_24">Fld</A>);
+ <span class="symbol"><A NAME="ref_960_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_957_16">Get_Fieldindex</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_746_24">Fld</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_1087_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_960_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_287_4">Form_Exception</A>;
<b>end</b> <b>if</b>;
- <b>return</b> Positive (Natural (<A HREF="terminal_interface-curses-forms__adb.htm#ref_1087_7">Res</A>) + Positive'First);
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_747_13">Get_Index</A>;
+ <b>return</b> Positive (Natural (<A HREF="terminal_interface-curses-forms__adb.htm#ref_960_7">Res</A>) + Positive'First);
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_746_13">Get_Index</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
@@ -1116,64 +989,61 @@
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1102_14" HREF="terminal_interface-curses-forms__ads.htm#ref_759_14">Set_New_Page</A></span> (<span class="symbol"><A NAME="ref_1102_28" HREF="terminal_interface-curses-forms__ads.htm#ref_759_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_1103_28" HREF="terminal_interface-curses-forms__ads.htm#ref_760_28">New_Page</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_975_14" HREF="terminal_interface-curses-forms__ads.htm#ref_758_14">Set_New_Page</A></span> (<span class="symbol"><A NAME="ref_975_28" HREF="terminal_interface-curses-forms__ads.htm#ref_758_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_976_28" HREF="terminal_interface-curses-forms__ads.htm#ref_759_28">New_Page</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1105_16">Set_Page</A></span> (<span class="symbol"><A NAME="ref_1105_26" HREF="terminal_interface-curses-forms__adb.htm#ref_1105_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>; <span class="symbol"><A NAME="ref_1105_39" HREF="terminal_interface-curses-forms__adb.htm#ref_1105_16">Flg</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_978_16">Set_Page</A></span> (<span class="symbol"><A NAME="ref_978_26" HREF="terminal_interface-curses-forms__adb.htm#ref_978_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>; <span class="symbol"><A NAME="ref_978_39" HREF="terminal_interface-curses-forms__adb.htm#ref_978_16">Flg</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Page, "set_new_page");
- <span class="symbol"><A NAME="ref_1108_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_1105_16">Set_Page</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_759_28">Fld</A>, Boolean'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#ref_760_28">New_Page</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_1108_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_1108_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_759_14">Set_New_Page</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_978_16">Set_Page</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_758_28">Fld</A>, Boolean'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#ref_759_28">New_Page</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_758_14">Set_New_Page</A>;
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1117_13" HREF="terminal_interface-curses-forms__ads.htm#ref_765_13">Is_New_Page</A></span> (<span class="symbol"><A NAME="ref_1117_26" HREF="terminal_interface-curses-forms__ads.htm#ref_765_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_987_13" HREF="terminal_interface-curses-forms__ads.htm#ref_764_13">Is_New_Page</A></span> (<span class="symbol"><A NAME="ref_987_26" HREF="terminal_interface-curses-forms__ads.htm#ref_764_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1119_16">Is_New</A></span> (<span class="symbol"><A NAME="ref_1119_24" HREF="terminal_interface-curses-forms__adb.htm#ref_1119_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_989_16">Is_New</A></span> (<span class="symbol"><A NAME="ref_989_24" HREF="terminal_interface-curses-forms__adb.htm#ref_989_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Is_New, "new_page");
- <span class="symbol"><A NAME="ref_1122_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_1119_16">Is_New</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_765_26">Fld</A>);
+ <span class="symbol"><A NAME="ref_992_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_989_16">Is_New</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_764_26">Fld</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_1122_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">Curses_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_992_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_66_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> <A HREF="terminal_interface-curses-forms__ads.htm#ref_765_13">Is_New_Page</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_764_13">Is_New_Page</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1131_14" HREF="terminal_interface-curses-forms__ads.htm#ref_138_14">Free</A></span> (<span class="symbol"><A NAME="ref_1131_20" HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">FA</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>;
- <span class="symbol"><A NAME="ref_1132_20" HREF="terminal_interface-curses-forms__ads.htm#ref_139_20">Free_Fields</A></span> : Boolean := False)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1001_14" HREF="terminal_interface-curses-forms__ads.htm#ref_137_14">Free</A></span> (<span class="symbol"><A NAME="ref_1001_20" HREF="terminal_interface-curses-forms__ads.htm#ref_137_20">FA</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_135_9">Field_Array_Access</A>;
+ <span class="symbol"><A NAME="ref_1002_20" HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">Free_Fields</A></span> : Boolean := False)
<b>is</b>
<b>procedure</b> Release <b>is</b> <b>new</b> Ada.Unchecked_Deallocation
- (Field_Array, <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>);
+ (Field_Array, <A HREF="terminal_interface-curses-forms__ads.htm#ref_135_9">Field_Array_Access</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">FA</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_139_20">Free_Fields</A> <b>then</b>
- <b>for</b> <span class="symbol"><A NAME="ref_1138_14">I</A></span> <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">FA</A>'First .. (<A HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">FA</A>'Last - 1) <b>loop</b>
- <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">FA</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_1138_14">I</A>) /= <A HREF="terminal_interface-curses-forms__ads.htm#ref_59_4">Null_Field</A> <b>then</b>
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_317_14">Delete</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">FA</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_1138_14">I</A>));
+ <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_137_20">FA</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">Free_Fields</A> <b>then</b>
+ <b>for</b> <span class="symbol"><A NAME="ref_1008_14">I</A></span> <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_137_20">FA</A>'First .. (<A HREF="terminal_interface-curses-forms__ads.htm#ref_137_20">FA</A>'Last - 1) <b>loop</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_137_20">FA</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_1008_14">I</A>) /= <A HREF="terminal_interface-curses-forms__ads.htm#ref_54_4">Null_Field</A> <b>then</b>
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_316_14">Delete</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_137_20">FA</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_1008_14">I</A>));
<b>end</b> <b>if</b>;
<b>end</b> <b>loop</b>;
<b>end</b> <b>if</b>;
- Release (<A HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">FA</A>);
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_138_14">Free</A>;
+ Release (<A HREF="terminal_interface-curses-forms__ads.htm#ref_137_20">FA</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_137_14">Free</A>;
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1149_13" HREF="terminal_interface-curses-forms__ads.htm#ref_103_13">Default_Field_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_1019_13" HREF="terminal_interface-curses-forms__ads.htm#ref_104_13">Default_Field_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>
<b>is</b>
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_418_13">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_59_4">Null_Field</A>);
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_103_13">Default_Field_Options</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_417_13">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_54_4">Null_Field</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_104_13">Default_Field_Options</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_1155_13" HREF="terminal_interface-curses-forms__ads.htm#ref_127_13">Default_Form_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_1025_13" HREF="terminal_interface-curses-forms__ads.htm#ref_126_13">Default_Form_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>
<b>is</b>
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_665_13">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_60_4">Null_Form</A>);
- <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_127_13">Default_Form_Options</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_664_13">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Form</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_126_13">Default_Form_Options</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-forms__ads.htm b/doc/html/ada/terminal_interface-curses-forms__ads.htm
index 2a244ab7cdd1..2053855972ee 100644
--- a/doc/html/ada/terminal_interface-curses-forms__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-forms__ads.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- S P E C --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2009,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,388 +52,387 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.30 @</EM></span>
-<span class="comment"><EM>-- @Date: 2009/12/26 17:31:35 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.33 @</EM></span>
+<span class="comment"><EM>-- @Date: 2014/05/24 21:31:57 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- form binding.</EM></span>
-<span class="comment"><EM>-- This module is generated. Please don't change it manually!</EM></span>
-<span class="comment"><EM>-- Run the generator instead.</EM></span>
-<span class="comment"><EM>-- |</EM></span>
<b>with</b> System;
<b>with</b> Ada.Characters.Latin_1;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_49_35" HREF="terminal_interface-curses-forms__adb.htm#ref_51_40">Forms</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>);
- <b>pragma</b> Linker_Options ("-lform");
- <b>pragma</b> Linker_Options ("-lncurses");
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_45_35" HREF="terminal_interface-curses-forms__adb.htm#ref_50_40">Forms</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>);
+ <b>pragma</b> Linker_Options ("-lform" &amp; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_9_4">DFT_ARG_SUFFIX</A>);
Space : Character <b>renames</b> Ada.Characters.Latin_1.Space;
- <b>type</b> <span class="symbol"><A NAME="ref_56_9">Field</A></span> <b>is</b> <b>private</b>;
- <b>type</b> <span class="symbol"><A NAME="ref_57_9">Form</A></span> <b>is</b> <b>private</b>;
+ <b>type</b> <span class="symbol"><A NAME="ref_51_9">Field</A></span> <b>is</b> <b>private</b>;
+ <b>type</b> <span class="symbol"><A NAME="ref_52_9">Form</A></span> <b>is</b> <b>private</b>;
- <span class="symbol"><A NAME="ref_59_4">Null_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_60_4">Null_Form</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
+ <span class="symbol"><A NAME="ref_54_4">Null_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_55_4">Null_Form</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
- <b>type</b> <span class="symbol"><A NAME="ref_62_9">Field_Justification</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_62_33">None</A></span>,
- <span class="symbol"><A NAME="ref_63_33">Left</A></span>,
- <span class="symbol"><A NAME="ref_64_33">Center</A></span>,
- <span class="symbol"><A NAME="ref_65_33">Right</A></span>);
+ <b>type</b> <span class="symbol"><A NAME="ref_57_9">Field_Justification</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_57_33">None</A></span>,
+ <span class="symbol"><A NAME="ref_58_33">Left</A></span>,
+ <span class="symbol"><A NAME="ref_59_33">Center</A></span>,
+ <span class="symbol"><A NAME="ref_60_33">Right</A></span>);
- <b>pragma</b> Warnings (Off);
- <b>type</b> <span class="symbol"><A NAME="ref_68_9">Field_Option_Set</A></span> <b>is</b>
+ <b>type</b> <span class="symbol"><A NAME="ref_62_9">Field_Option_Set</A></span> <b>is</b>
<b>record</b>
- <span class="symbol"><A NAME="ref_70_10">Visible</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_71_10">Active</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_72_10">Public</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_73_10">Edit</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_74_10">Wrap</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_75_10">Blank</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_76_10">Auto_Skip</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_77_10">Null_Ok</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_78_10">Pass_Ok</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_79_10">Static</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_64_10">Visible</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_65_10">Active</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_66_10">Public</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_67_10">Edit</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_68_10">Wrap</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_69_10">Blank</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_70_10">Auto_Skip</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_71_10">Null_Ok</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_72_10">Pass_Ok</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_73_10">Static</A></span> : Boolean;
<b>end</b> <b>record</b>;
- <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A>);
+ <b>pragma</b> Convention (C_Pass_By_Copy, <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>);
- <b>for</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A> <b>use</b>
+ <b>for</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A> <b>use</b>
<b>record</b>
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_70_10">Visible</A> <b>at</b> 0 <b>range</b> 0 .. 0;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_71_10">Active</A> <b>at</b> 0 <b>range</b> 1 .. 1;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_72_10">Public</A> <b>at</b> 0 <b>range</b> 2 .. 2;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_73_10">Edit</A> <b>at</b> 0 <b>range</b> 3 .. 3;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_74_10">Wrap</A> <b>at</b> 0 <b>range</b> 4 .. 4;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_75_10">Blank</A> <b>at</b> 0 <b>range</b> 5 .. 5;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_76_10">Auto_Skip</A> <b>at</b> 0 <b>range</b> 6 .. 6;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_77_10">Null_Ok</A> <b>at</b> 0 <b>range</b> 7 .. 7;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_78_10">Pass_Ok</A> <b>at</b> 0 <b>range</b> 8 .. 8;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_79_10">Static</A> <b>at</b> 0 <b>range</b> 9 .. 9;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_64_10">Visible</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_279_4">O_VISIBLE_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_280_4">O_VISIBLE_Last</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_65_10">Active</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_281_4">O_ACTIVE_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_282_4">O_ACTIVE_Last</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_66_10">Public</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_283_4">O_PUBLIC_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_284_4">O_PUBLIC_Last</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_67_10">Edit</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_285_4">O_EDIT_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_286_4">O_EDIT_Last</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_10">Wrap</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_287_4">O_WRAP_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_288_4">O_WRAP_Last</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_69_10">Blank</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_289_4">O_BLANK_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_290_4">O_BLANK_Last</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_70_10">Auto_Skip</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_291_4">O_AUTOSKIP_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_292_4">O_AUTOSKIP_Last</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_71_10">Null_Ok</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_293_4">O_NULLOK_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_294_4">O_NULLOK_Last</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_72_10">Pass_Ok</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_295_4">O_PASSOK_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_296_4">O_PASSOK_Last</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_73_10">Static</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_297_4">O_STATIC_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_298_4">O_STATIC_Last</A>;
<b>end</b> <b>record</b>;
- <b>pragma</b> Warnings (Off); <b>for</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A>'Size <b>use</b> 32;
- <b>pragma</b> Warnings (On);
- <span class="comment"><EM>-- Please note: this rep. clause is generated and may be</EM></span>
- <span class="comment"><EM>-- different on your system.Dnl</EM></span>
-
+ <b>pragma</b> Warnings (Off);
+ <b>for</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>'Size <b>use</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_299_4">Field_Options_Size</A>;
<b>pragma</b> Warnings (On);
- <b>function</b> <span class="symbol"><A NAME="ref_103_13" HREF="terminal_interface-curses-forms__adb.htm#ref_1149_13">Default_Field_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_104_13" HREF="terminal_interface-curses-forms__adb.htm#ref_1019_13">Default_Field_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>;
<span class="comment"><EM>-- The initial defaults for the field options.</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_103_13">Default_Field_Options</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_104_13">Default_Field_Options</A>);
- <b>pragma</b> Warnings (Off);
<b>type</b> <span class="symbol"><A NAME="ref_108_9">Form_Option_Set</A></span> <b>is</b>
<b>record</b>
<span class="symbol"><A NAME="ref_110_10">NL_Overload</A></span> : Boolean;
<span class="symbol"><A NAME="ref_111_10">BS_Overload</A></span> : Boolean;
<b>end</b> <b>record</b>;
- <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>);
+ <b>pragma</b> Convention (C_Pass_By_Copy, <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>);
<b>for</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A> <b>use</b>
<b>record</b>
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_110_10">NL_Overload</A> <b>at</b> 0 <b>range</b> 0 .. 0;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_111_10">BS_Overload</A> <b>at</b> 0 <b>range</b> 1 .. 1;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_110_10">NL_Overload</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_303_4">O_NL_OVERLOAD_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_304_4">O_NL_OVERLOAD_Last</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_111_10">BS_Overload</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_305_4">O_BS_OVERLOAD_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_306_4">O_BS_OVERLOAD_Last</A>;
<b>end</b> <b>record</b>;
- <b>pragma</b> Warnings (Off); <b>for</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>'Size <b>use</b> 32;
- <b>pragma</b> Warnings (On);
- <span class="comment"><EM>-- Please note: this rep. clause is generated and may be</EM></span>
- <span class="comment"><EM>-- different on your system.Dnl</EM></span>
-
+ <b>pragma</b> Warnings (Off);
+ <b>for</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>'Size <b>use</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_299_4">Field_Options_Size</A>;
<b>pragma</b> Warnings (On);
- <b>function</b> <span class="symbol"><A NAME="ref_127_13" HREF="terminal_interface-curses-forms__adb.htm#ref_1155_13">Default_Form_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_126_13" HREF="terminal_interface-curses-forms__adb.htm#ref_1025_13">Default_Form_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>;
<span class="comment"><EM>-- The initial defaults for the form options.</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_127_13">Default_Form_Options</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_126_13">Default_Form_Options</A>);
- <b>type</b> <span class="symbol"><A NAME="ref_131_9">Buffer_Number</A></span> <b>is</b> <b>new</b> Natural;
+ <b>type</b> <span class="symbol"><A NAME="ref_130_9">Buffer_Number</A></span> <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> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <b>type</b> Field_Array <b>is</b> <b>array</b> (Positive <b>range</b> &lt;&gt;) <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<b>pragma</b> Convention (C, Field_Array);
- <b>type</b> <span class="symbol"><A NAME="ref_136_9">Field_Array_Access</A></span> <b>is</b> <b>access</b> Field_Array;
+ <b>type</b> <span class="symbol"><A NAME="ref_135_9">Field_Array_Access</A></span> <b>is</b> <b>access</b> Field_Array;
- <b>procedure</b> <span class="symbol"><A NAME="ref_138_14" HREF="terminal_interface-curses-forms__adb.htm#ref_1131_14">Free</A></span> (<span class="symbol"><A NAME="ref_138_20" HREF="terminal_interface-curses-forms__adb.htm#ref_1131_20">FA</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>;
- <span class="symbol"><A NAME="ref_139_20" HREF="terminal_interface-curses-forms__adb.htm#ref_1132_20">Free_Fields</A></span> : Boolean := False);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_137_14" HREF="terminal_interface-curses-forms__adb.htm#ref_1001_14">Free</A></span> (<span class="symbol"><A NAME="ref_137_20" HREF="terminal_interface-curses-forms__adb.htm#ref_1001_20">FA</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_135_9">Field_Array_Access</A>;
+ <span class="symbol"><A NAME="ref_138_20" HREF="terminal_interface-curses-forms__adb.htm#ref_1002_20">Free_Fields</A></span> : Boolean := False);
<span class="comment"><EM>-- Release the memory for an allocated field array</EM></span>
<span class="comment"><EM>-- If Free_Fields is True, call Delete() for all the fields in</EM></span>
<span class="comment"><EM>-- the array.</EM></span>
- <b>subtype</b> <span class="symbol"><A NAME="ref_144_12">Form_Request_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_68_9">Key_Code</A> <b>range</b> (<A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 1) .. (<A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 57);
+ <b>subtype</b> <span class="symbol"><A NAME="ref_143_12">Form_Request_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_66_9">Key_Code</A> <b>range</b> (<A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 1) .. (<A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 57);
<span class="comment"><EM>-- The prefix F_ stands for "Form Request"</EM></span>
- <span class="symbol"><A NAME="ref_147_4">F_Next_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 1;
- <span class="symbol"><A NAME="ref_148_4">F_Previous_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 2;
- <span class="symbol"><A NAME="ref_149_4">F_First_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 3;
- <span class="symbol"><A NAME="ref_150_4">F_Last_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 4;
-
- <span class="symbol"><A NAME="ref_152_4">F_Next_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 5;
- <span class="symbol"><A NAME="ref_153_4">F_Previous_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 6;
- <span class="symbol"><A NAME="ref_154_4">F_First_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 7;
- <span class="symbol"><A NAME="ref_155_4">F_Last_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 8;
- <span class="symbol"><A NAME="ref_156_4">F_Sorted_Next_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 9;
- <span class="symbol"><A NAME="ref_157_4">F_Sorted_Previous_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 10;
- <span class="symbol"><A NAME="ref_158_4">F_Sorted_First_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 11;
- <span class="symbol"><A NAME="ref_159_4">F_Sorted_Last_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 12;
- <span class="symbol"><A NAME="ref_160_4">F_Left_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 13;
- <span class="symbol"><A NAME="ref_161_4">F_Right_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 14;
- <span class="symbol"><A NAME="ref_162_4">F_Up_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 15;
- <span class="symbol"><A NAME="ref_163_4">F_Down_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 16;
-
- <span class="symbol"><A NAME="ref_165_4">F_Next_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 17;
- <span class="symbol"><A NAME="ref_166_4">F_Previous_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 18;
- <span class="symbol"><A NAME="ref_167_4">F_Next_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 19;
- <span class="symbol"><A NAME="ref_168_4">F_Previous_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 20;
- <span class="symbol"><A NAME="ref_169_4">F_Next_Word</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 21;
- <span class="symbol"><A NAME="ref_170_4">F_Previous_Word</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 22;
- <span class="symbol"><A NAME="ref_171_4">F_Begin_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 23;
- <span class="symbol"><A NAME="ref_172_4">F_End_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 24;
- <span class="symbol"><A NAME="ref_173_4">F_Begin_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 25;
- <span class="symbol"><A NAME="ref_174_4">F_End_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 26;
- <span class="symbol"><A NAME="ref_175_4">F_Left_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 27;
- <span class="symbol"><A NAME="ref_176_4">F_Right_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 28;
- <span class="symbol"><A NAME="ref_177_4">F_Up_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 29;
- <span class="symbol"><A NAME="ref_178_4">F_Down_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 30;
-
- <span class="symbol"><A NAME="ref_180_4">F_New_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 31;
- <span class="symbol"><A NAME="ref_181_4">F_Insert_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 32;
- <span class="symbol"><A NAME="ref_182_4">F_Insert_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 33;
- <span class="symbol"><A NAME="ref_183_4">F_Delete_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 34;
- <span class="symbol"><A NAME="ref_184_4">F_Delete_Previous</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 35;
- <span class="symbol"><A NAME="ref_185_4">F_Delete_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 36;
- <span class="symbol"><A NAME="ref_186_4">F_Delete_Word</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 37;
- <span class="symbol"><A NAME="ref_187_4">F_Clear_EOL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 38;
- <span class="symbol"><A NAME="ref_188_4">F_Clear_EOF</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 39;
- <span class="symbol"><A NAME="ref_189_4">F_Clear_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 40;
- <span class="symbol"><A NAME="ref_190_4">F_Overlay_Mode</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 41;
- <span class="symbol"><A NAME="ref_191_4">F_Insert_Mode</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 42;
+ <span class="symbol"><A NAME="ref_146_4">F_Next_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 1;
+ <span class="symbol"><A NAME="ref_147_4">F_Previous_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 2;
+ <span class="symbol"><A NAME="ref_148_4">F_First_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 3;
+ <span class="symbol"><A NAME="ref_149_4">F_Last_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 4;
+
+ <span class="symbol"><A NAME="ref_151_4">F_Next_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 5;
+ <span class="symbol"><A NAME="ref_152_4">F_Previous_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 6;
+ <span class="symbol"><A NAME="ref_153_4">F_First_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 7;
+ <span class="symbol"><A NAME="ref_154_4">F_Last_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 8;
+ <span class="symbol"><A NAME="ref_155_4">F_Sorted_Next_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 9;
+ <span class="symbol"><A NAME="ref_156_4">F_Sorted_Previous_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 10;
+ <span class="symbol"><A NAME="ref_157_4">F_Sorted_First_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 11;
+ <span class="symbol"><A NAME="ref_158_4">F_Sorted_Last_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 12;
+ <span class="symbol"><A NAME="ref_159_4">F_Left_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 13;
+ <span class="symbol"><A NAME="ref_160_4">F_Right_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 14;
+ <span class="symbol"><A NAME="ref_161_4">F_Up_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 15;
+ <span class="symbol"><A NAME="ref_162_4">F_Down_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 16;
+
+ <span class="symbol"><A NAME="ref_164_4">F_Next_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 17;
+ <span class="symbol"><A NAME="ref_165_4">F_Previous_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 18;
+ <span class="symbol"><A NAME="ref_166_4">F_Next_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 19;
+ <span class="symbol"><A NAME="ref_167_4">F_Previous_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 20;
+ <span class="symbol"><A NAME="ref_168_4">F_Next_Word</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 21;
+ <span class="symbol"><A NAME="ref_169_4">F_Previous_Word</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 22;
+ <span class="symbol"><A NAME="ref_170_4">F_Begin_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 23;
+ <span class="symbol"><A NAME="ref_171_4">F_End_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 24;
+ <span class="symbol"><A NAME="ref_172_4">F_Begin_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 25;
+ <span class="symbol"><A NAME="ref_173_4">F_End_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 26;
+ <span class="symbol"><A NAME="ref_174_4">F_Left_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 27;
+ <span class="symbol"><A NAME="ref_175_4">F_Right_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 28;
+ <span class="symbol"><A NAME="ref_176_4">F_Up_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 29;
+ <span class="symbol"><A NAME="ref_177_4">F_Down_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 30;
+
+ <span class="symbol"><A NAME="ref_179_4">F_New_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 31;
+ <span class="symbol"><A NAME="ref_180_4">F_Insert_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 32;
+ <span class="symbol"><A NAME="ref_181_4">F_Insert_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 33;
+ <span class="symbol"><A NAME="ref_182_4">F_Delete_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 34;
+ <span class="symbol"><A NAME="ref_183_4">F_Delete_Previous</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 35;
+ <span class="symbol"><A NAME="ref_184_4">F_Delete_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 36;
+ <span class="symbol"><A NAME="ref_185_4">F_Delete_Word</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 37;
+ <span class="symbol"><A NAME="ref_186_4">F_Clear_EOL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 38;
+ <span class="symbol"><A NAME="ref_187_4">F_Clear_EOF</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 39;
+ <span class="symbol"><A NAME="ref_188_4">F_Clear_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 40;
+ <span class="symbol"><A NAME="ref_189_4">F_Overlay_Mode</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 41;
+ <span class="symbol"><A NAME="ref_190_4">F_Insert_Mode</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 42;
<span class="comment"><EM>-- Vertical Scrolling</EM></span>
- <span class="symbol"><A NAME="ref_194_4">F_ScrollForward_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 43;
- <span class="symbol"><A NAME="ref_195_4">F_ScrollBackward_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 44;
- <span class="symbol"><A NAME="ref_196_4">F_ScrollForward_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 45;
- <span class="symbol"><A NAME="ref_197_4">F_ScrollBackward_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 46;
- <span class="symbol"><A NAME="ref_198_4">F_ScrollForward_HalfPage</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 47;
- <span class="symbol"><A NAME="ref_199_4">F_ScrollBackward_HalfPage</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 48;
+ <span class="symbol"><A NAME="ref_193_4">F_ScrollForward_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 43;
+ <span class="symbol"><A NAME="ref_194_4">F_ScrollBackward_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 44;
+ <span class="symbol"><A NAME="ref_195_4">F_ScrollForward_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 45;
+ <span class="symbol"><A NAME="ref_196_4">F_ScrollBackward_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 46;
+ <span class="symbol"><A NAME="ref_197_4">F_ScrollForward_HalfPage</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 47;
+ <span class="symbol"><A NAME="ref_198_4">F_ScrollBackward_HalfPage</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 48;
<span class="comment"><EM>-- Horizontal Scrolling</EM></span>
- <span class="symbol"><A NAME="ref_202_4">F_HScrollForward_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 49;
- <span class="symbol"><A NAME="ref_203_4">F_HScrollBackward_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 50;
- <span class="symbol"><A NAME="ref_204_4">F_HScrollForward_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 51;
- <span class="symbol"><A NAME="ref_205_4">F_HScrollBackward_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 52;
- <span class="symbol"><A NAME="ref_206_4">F_HScrollForward_HalfLine</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 53;
- <span class="symbol"><A NAME="ref_207_4">F_HScrollBackward_HalfLine</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 54;
+ <span class="symbol"><A NAME="ref_201_4">F_HScrollForward_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 49;
+ <span class="symbol"><A NAME="ref_202_4">F_HScrollBackward_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 50;
+ <span class="symbol"><A NAME="ref_203_4">F_HScrollForward_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 51;
+ <span class="symbol"><A NAME="ref_204_4">F_HScrollBackward_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 52;
+ <span class="symbol"><A NAME="ref_205_4">F_HScrollForward_HalfLine</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 53;
+ <span class="symbol"><A NAME="ref_206_4">F_HScrollBackward_HalfLine</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 54;
- <span class="symbol"><A NAME="ref_209_4">F_Validate_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 55;
- <span class="symbol"><A NAME="ref_210_4">F_Next_Choice</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 56;
- <span class="symbol"><A NAME="ref_211_4">F_Previous_Choice</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 57;
+ <span class="symbol"><A NAME="ref_208_4">F_Validate_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 55;
+ <span class="symbol"><A NAME="ref_209_4">F_Next_Choice</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 56;
+ <span class="symbol"><A NAME="ref_210_4">F_Previous_Choice</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 57;
<span class="comment"><EM>-- For those who like the old 'C' style request names</EM></span>
- REQ_NEXT_PAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_147_4">F_Next_Page</A>;
- REQ_PREV_PAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_148_4">F_Previous_Page</A>;
- REQ_FIRST_PAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_149_4">F_First_Page</A>;
- REQ_LAST_PAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_150_4">F_Last_Page</A>;
-
- REQ_NEXT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_152_4">F_Next_Field</A>;
- REQ_PREV_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_153_4">F_Previous_Field</A>;
- REQ_FIRST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_154_4">F_First_Field</A>;
- REQ_LAST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_155_4">F_Last_Field</A>;
- REQ_SNEXT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_156_4">F_Sorted_Next_Field</A>;
- REQ_SPREV_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_157_4">F_Sorted_Previous_Field</A>;
- REQ_SFIRST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_158_4">F_Sorted_First_Field</A>;
- REQ_SLAST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_159_4">F_Sorted_Last_Field</A>;
- REQ_LEFT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_160_4">F_Left_Field</A>;
- REQ_RIGHT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_161_4">F_Right_Field</A>;
- REQ_UP_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_162_4">F_Up_Field</A>;
- REQ_DOWN_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_163_4">F_Down_Field</A>;
-
- REQ_NEXT_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_165_4">F_Next_Char</A>;
- REQ_PREV_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_166_4">F_Previous_Char</A>;
- REQ_NEXT_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_167_4">F_Next_Line</A>;
- REQ_PREV_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_168_4">F_Previous_Line</A>;
- REQ_NEXT_WORD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_169_4">F_Next_Word</A>;
- REQ_PREV_WORD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_170_4">F_Previous_Word</A>;
- REQ_BEG_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_171_4">F_Begin_Field</A>;
- REQ_END_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_172_4">F_End_Field</A>;
- REQ_BEG_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_173_4">F_Begin_Line</A>;
- REQ_END_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_174_4">F_End_Line</A>;
- REQ_LEFT_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_175_4">F_Left_Char</A>;
- REQ_RIGHT_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_176_4">F_Right_Char</A>;
- REQ_UP_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_177_4">F_Up_Char</A>;
- REQ_DOWN_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_178_4">F_Down_Char</A>;
-
- REQ_NEW_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_180_4">F_New_Line</A>;
- REQ_INS_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_181_4">F_Insert_Char</A>;
- REQ_INS_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_182_4">F_Insert_Line</A>;
- REQ_DEL_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_183_4">F_Delete_Char</A>;
- REQ_DEL_PREV : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_184_4">F_Delete_Previous</A>;
- REQ_DEL_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_185_4">F_Delete_Line</A>;
- REQ_DEL_WORD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_186_4">F_Delete_Word</A>;
- REQ_CLR_EOL : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_187_4">F_Clear_EOL</A>;
- REQ_CLR_EOF : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_188_4">F_Clear_EOF</A>;
- REQ_CLR_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_189_4">F_Clear_Field</A>;
- REQ_OVL_MODE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_190_4">F_Overlay_Mode</A>;
- REQ_INS_MODE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_191_4">F_Insert_Mode</A>;
-
- REQ_SCR_FLINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_194_4">F_ScrollForward_Line</A>;
- REQ_SCR_BLINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_195_4">F_ScrollBackward_Line</A>;
- REQ_SCR_FPAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_196_4">F_ScrollForward_Page</A>;
- REQ_SCR_BPAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_197_4">F_ScrollBackward_Page</A>;
- REQ_SCR_FHPAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_198_4">F_ScrollForward_HalfPage</A>;
- REQ_SCR_BHPAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_199_4">F_ScrollBackward_HalfPage</A>;
-
- REQ_SCR_FCHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_202_4">F_HScrollForward_Char</A>;
- REQ_SCR_BCHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_203_4">F_HScrollBackward_Char</A>;
- REQ_SCR_HFLINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_204_4">F_HScrollForward_Line</A>;
- REQ_SCR_HBLINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_205_4">F_HScrollBackward_Line</A>;
- REQ_SCR_HFHALF : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_206_4">F_HScrollForward_HalfLine</A>;
- REQ_SCR_HBHALF : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_207_4">F_HScrollBackward_HalfLine</A>;
-
- REQ_VALIDATION : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_209_4">F_Validate_Field</A>;
- REQ_NEXT_CHOICE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_210_4">F_Next_Choice</A>;
- REQ_PREV_CHOICE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_211_4">F_Previous_Choice</A>;
-
- <b>procedure</b> <span class="symbol"><A NAME="ref_278_14" HREF="terminal_interface-curses-forms__adb.htm#ref_81_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_278_28" HREF="terminal_interface-curses-forms__adb.htm#ref_81_28">Key</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A>;
- <span class="symbol"><A NAME="ref_279_28" HREF="terminal_interface-curses-forms__adb.htm#ref_82_33">Name</A></span> : <b>out</b> String);
-
- <b>function</b> <span class="symbol"><A NAME="ref_281_14" HREF="terminal_interface-curses-forms__adb.htm#ref_90_13">Request_Name</A></span> (<span class="symbol"><A NAME="ref_281_28" HREF="terminal_interface-curses-forms__adb.htm#ref_90_27">Key</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A>) <b>return</b> String;
+ REQ_NEXT_PAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_146_4">F_Next_Page</A>;
+ REQ_PREV_PAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_147_4">F_Previous_Page</A>;
+ REQ_FIRST_PAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_148_4">F_First_Page</A>;
+ REQ_LAST_PAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_149_4">F_Last_Page</A>;
+
+ REQ_NEXT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_151_4">F_Next_Field</A>;
+ REQ_PREV_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_152_4">F_Previous_Field</A>;
+ REQ_FIRST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_153_4">F_First_Field</A>;
+ REQ_LAST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_154_4">F_Last_Field</A>;
+ REQ_SNEXT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_155_4">F_Sorted_Next_Field</A>;
+ REQ_SPREV_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_156_4">F_Sorted_Previous_Field</A>;
+ REQ_SFIRST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_157_4">F_Sorted_First_Field</A>;
+ REQ_SLAST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_158_4">F_Sorted_Last_Field</A>;
+ REQ_LEFT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_159_4">F_Left_Field</A>;
+ REQ_RIGHT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_160_4">F_Right_Field</A>;
+ REQ_UP_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_161_4">F_Up_Field</A>;
+ REQ_DOWN_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_162_4">F_Down_Field</A>;
+
+ REQ_NEXT_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_164_4">F_Next_Char</A>;
+ REQ_PREV_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_165_4">F_Previous_Char</A>;
+ REQ_NEXT_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_166_4">F_Next_Line</A>;
+ REQ_PREV_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_167_4">F_Previous_Line</A>;
+ REQ_NEXT_WORD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_168_4">F_Next_Word</A>;
+ REQ_PREV_WORD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_169_4">F_Previous_Word</A>;
+ REQ_BEG_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_170_4">F_Begin_Field</A>;
+ REQ_END_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_171_4">F_End_Field</A>;
+ REQ_BEG_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_172_4">F_Begin_Line</A>;
+ REQ_END_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_173_4">F_End_Line</A>;
+ REQ_LEFT_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_174_4">F_Left_Char</A>;
+ REQ_RIGHT_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_175_4">F_Right_Char</A>;
+ REQ_UP_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_176_4">F_Up_Char</A>;
+ REQ_DOWN_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_177_4">F_Down_Char</A>;
+
+ REQ_NEW_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_179_4">F_New_Line</A>;
+ REQ_INS_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_180_4">F_Insert_Char</A>;
+ REQ_INS_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_181_4">F_Insert_Line</A>;
+ REQ_DEL_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_182_4">F_Delete_Char</A>;
+ REQ_DEL_PREV : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_183_4">F_Delete_Previous</A>;
+ REQ_DEL_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_184_4">F_Delete_Line</A>;
+ REQ_DEL_WORD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_185_4">F_Delete_Word</A>;
+ REQ_CLR_EOL : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_186_4">F_Clear_EOL</A>;
+ REQ_CLR_EOF : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_187_4">F_Clear_EOF</A>;
+ REQ_CLR_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_188_4">F_Clear_Field</A>;
+ REQ_OVL_MODE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_189_4">F_Overlay_Mode</A>;
+ REQ_INS_MODE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_190_4">F_Insert_Mode</A>;
+
+ REQ_SCR_FLINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_193_4">F_ScrollForward_Line</A>;
+ REQ_SCR_BLINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_194_4">F_ScrollBackward_Line</A>;
+ REQ_SCR_FPAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_195_4">F_ScrollForward_Page</A>;
+ REQ_SCR_BPAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_196_4">F_ScrollBackward_Page</A>;
+ REQ_SCR_FHPAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_197_4">F_ScrollForward_HalfPage</A>;
+ REQ_SCR_BHPAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_198_4">F_ScrollBackward_HalfPage</A>;
+
+ REQ_SCR_FCHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_201_4">F_HScrollForward_Char</A>;
+ REQ_SCR_BCHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_202_4">F_HScrollBackward_Char</A>;
+ REQ_SCR_HFLINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_203_4">F_HScrollForward_Line</A>;
+ REQ_SCR_HBLINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_204_4">F_HScrollBackward_Line</A>;
+ REQ_SCR_HFHALF : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_205_4">F_HScrollForward_HalfLine</A>;
+ REQ_SCR_HBHALF : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_206_4">F_HScrollBackward_HalfLine</A>;
+
+ REQ_VALIDATION : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_208_4">F_Validate_Field</A>;
+ REQ_NEXT_CHOICE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_209_4">F_Next_Choice</A>;
+ REQ_PREV_CHOICE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_210_4">F_Previous_Choice</A>;
+
+ <b>procedure</b> <span class="symbol"><A NAME="ref_277_14" HREF="terminal_interface-curses-forms__adb.htm#ref_64_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_277_28" HREF="terminal_interface-curses-forms__adb.htm#ref_64_28">Key</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A>;
+ <span class="symbol"><A NAME="ref_278_28" HREF="terminal_interface-curses-forms__adb.htm#ref_65_33">Name</A></span> : <b>out</b> String);
+
+ <b>function</b> <span class="symbol"><A NAME="ref_280_14" HREF="terminal_interface-curses-forms__adb.htm#ref_73_13">Request_Name</A></span> (<span class="symbol"><A NAME="ref_280_28" HREF="terminal_interface-curses-forms__adb.htm#ref_73_27">Key</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_143_12">Form_Request_Code</A>) <b>return</b> String;
<span class="comment"><EM>-- Same as function</EM></span>
<b>pragma</b> Inline (Request_Name);
<span class="comment"><EM>------------------</EM></span>
<span class="comment"><EM>-- Exceptions --</EM></span>
<span class="comment"><EM>------------------</EM></span>
- <span class="symbol"><A NAME="ref_288_4">Form_Exception</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_287_4">Form_Exception</A></span> : <b>exception</b>;
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_field_new.3x.html">form_field_new.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_1"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_295_13" HREF="terminal_interface-curses-forms__adb.htm#ref_108_13">Create</A></span> (<span class="symbol"><A NAME="ref_295_21" HREF="terminal_interface-curses-forms__adb.htm#ref_108_21">Height</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_296_21" HREF="terminal_interface-curses-forms__adb.htm#ref_109_21">Width</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_297_21" HREF="terminal_interface-curses-forms__adb.htm#ref_110_21">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_298_21" HREF="terminal_interface-curses-forms__adb.htm#ref_111_21">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_299_21" HREF="terminal_interface-curses-forms__adb.htm#ref_112_21">Off_Screen</A></span> : Natural := 0;
- <span class="symbol"><A NAME="ref_300_21" HREF="terminal_interface-curses-forms__adb.htm#ref_113_21">More_Buffers</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First)
- <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_294_13" HREF="terminal_interface-curses-forms__adb.htm#ref_91_13">Create</A></span> (<span class="symbol"><A NAME="ref_294_21" HREF="terminal_interface-curses-forms__adb.htm#ref_91_21">Height</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_295_21" HREF="terminal_interface-curses-forms__adb.htm#ref_92_21">Width</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_296_21" HREF="terminal_interface-curses-forms__adb.htm#ref_93_21">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_297_21" HREF="terminal_interface-curses-forms__adb.htm#ref_94_21">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_298_21" HREF="terminal_interface-curses-forms__adb.htm#ref_95_21">Off_Screen</A></span> : Natural := 0;
+ <span class="symbol"><A NAME="ref_299_21" HREF="terminal_interface-curses-forms__adb.htm#ref_96_21">More_Buffers</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A>'First)
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">new_field()</A></EM></span>
<span class="comment"><EM>-- An overloaded Create is defined later. Pragma Inline appears there.</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_2"#2|</EM></span>
- <b>function</b> New_Field (<span class="symbol"><A NAME="ref_306_24">Height</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_307_24">Width</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_308_24">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_309_24">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_310_24">Off_Screen</A></span> : Natural := 0;
- <span class="symbol"><A NAME="ref_311_24">More_Buffers</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First)
- <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_295_13">Create</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span>
+ <b>function</b> New_Field (<span class="symbol"><A NAME="ref_305_24">Height</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_306_24">Width</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_307_24">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_308_24">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_309_24">Off_Screen</A></span> : Natural := 0;
+ <span class="symbol"><A NAME="ref_310_24">More_Buffers</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A>'First)
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_294_13">Create</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">new_field()</A></EM></span>
<b>pragma</b> Inline (New_Field);
- <span class="comment"><EM>-- #1A NAME="AFU_3"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_317_14" HREF="terminal_interface-curses-forms__adb.htm#ref_131_14">Delete</A></span> (<span class="symbol"><A NAME="ref_317_22" HREF="terminal_interface-curses-forms__adb.htm#ref_131_22">Fld</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_316_14" HREF="terminal_interface-curses-forms__adb.htm#ref_114_14">Delete</A></span> (<span class="symbol"><A NAME="ref_316_22" HREF="terminal_interface-curses-forms__adb.htm#ref_114_22">Fld</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">free_field()</A></EM></span>
<span class="comment"><EM>-- Reset Fld to Null_Field</EM></span>
<span class="comment"><EM>-- An overloaded Delete is defined later. Pragma Inline appears there.</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_4"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_323_13" HREF="terminal_interface-curses-forms__adb.htm#ref_147_13">Duplicate</A></span> (<span class="symbol"><A NAME="ref_323_24" HREF="terminal_interface-curses-forms__adb.htm#ref_147_24">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_324_24" HREF="terminal_interface-curses-forms__adb.htm#ref_148_24">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_325_24" HREF="terminal_interface-curses-forms__adb.htm#ref_149_24">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_4">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_322_13" HREF="terminal_interface-curses-forms__adb.htm#ref_126_13">Duplicate</A></span> (<span class="symbol"><A NAME="ref_322_24" HREF="terminal_interface-curses-forms__adb.htm#ref_126_24">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_323_24" HREF="terminal_interface-curses-forms__adb.htm#ref_127_24">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_324_24" HREF="terminal_interface-curses-forms__adb.htm#ref_128_24">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">dup_field()</A></EM></span>
<b>pragma</b> Inline (Duplicate);
- <span class="comment"><EM>-- #1A NAME="AFU_5"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_330_13" HREF="terminal_interface-curses-forms__adb.htm#ref_168_13">Link</A></span> (<span class="symbol"><A NAME="ref_330_19" HREF="terminal_interface-curses-forms__adb.htm#ref_168_19">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_331_19" HREF="terminal_interface-curses-forms__adb.htm#ref_169_19">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_332_19" HREF="terminal_interface-curses-forms__adb.htm#ref_170_19">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_5">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_329_13" HREF="terminal_interface-curses-forms__adb.htm#ref_147_13">Link</A></span> (<span class="symbol"><A NAME="ref_329_19" HREF="terminal_interface-curses-forms__adb.htm#ref_147_19">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_330_19" HREF="terminal_interface-curses-forms__adb.htm#ref_148_19">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_331_19" HREF="terminal_interface-curses-forms__adb.htm#ref_149_19">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">link_field()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_330_13">Link</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_329_13">Link</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_field_just.3x.html">form_field_just.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_6"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_341_14" HREF="terminal_interface-curses-forms__adb.htm#ref_193_14">Set_Justification</A></span> (<span class="symbol"><A NAME="ref_341_33" HREF="terminal_interface-curses-forms__adb.htm#ref_193_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_342_33" HREF="terminal_interface-curses-forms__adb.htm#ref_194_33">Just</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Justification</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_33">None</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_6">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_340_14" HREF="terminal_interface-curses-forms__adb.htm#ref_172_14">Set_Justification</A></span> (<span class="symbol"><A NAME="ref_340_33" HREF="terminal_interface-curses-forms__adb.htm#ref_172_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_341_33" HREF="terminal_interface-curses-forms__adb.htm#ref_173_33">Just</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Field_Justification</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_33">None</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_just.3x.html">set_field_just()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_341_14">Set_Justification</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_340_14">Set_Justification</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_7"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_347_13" HREF="terminal_interface-curses-forms__adb.htm#ref_211_13">Get_Justification</A></span> (<span class="symbol"><A NAME="ref_347_32" HREF="terminal_interface-curses-forms__adb.htm#ref_211_32">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Justification</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_7">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_346_13" HREF="terminal_interface-curses-forms__adb.htm#ref_186_13">Get_Justification</A></span> (<span class="symbol"><A NAME="ref_346_32" HREF="terminal_interface-curses-forms__adb.htm#ref_186_32">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Field_Justification</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_just.3x.html">field_just()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_347_13">Get_Justification</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_346_13">Get_Justification</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_field_buffer.3x.html">form_field_buffer.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_8"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_356_14" HREF="terminal_interface-curses-forms__adb.htm#ref_225_14">Set_Buffer</A></span>
- (<span class="symbol"><A NAME="ref_357_7" HREF="terminal_interface-curses-forms__adb.htm#ref_226_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_358_7" HREF="terminal_interface-curses-forms__adb.htm#ref_227_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First;
- <span class="symbol"><A NAME="ref_359_7" HREF="terminal_interface-curses-forms__adb.htm#ref_228_7">Str</A></span> : String);
+ <span class="comment"><EM>-- <A NAME="AFU_8">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_355_14" HREF="terminal_interface-curses-forms__adb.htm#ref_200_14">Set_Buffer</A></span>
+ (<span class="symbol"><A NAME="ref_356_7" HREF="terminal_interface-curses-forms__adb.htm#ref_201_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_357_7" HREF="terminal_interface-curses-forms__adb.htm#ref_202_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A>'First;
+ <span class="symbol"><A NAME="ref_358_7" HREF="terminal_interface-curses-forms__adb.htm#ref_203_7">Str</A></span> : String);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">set_field_buffer()</A></EM></span>
<span class="comment"><EM>-- Not inlined</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_9"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_364_14" HREF="terminal_interface-curses-forms__adb.htm#ref_250_14">Get_Buffer</A></span>
- (<span class="symbol"><A NAME="ref_365_7" HREF="terminal_interface-curses-forms__adb.htm#ref_251_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_366_7" HREF="terminal_interface-curses-forms__adb.htm#ref_252_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First;
- <span class="symbol"><A NAME="ref_367_7" HREF="terminal_interface-curses-forms__adb.htm#ref_253_7">Str</A></span> : <b>out</b> String);
+ <span class="comment"><EM>-- <A NAME="AFU_9">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_363_14" HREF="terminal_interface-curses-forms__adb.htm#ref_217_14">Get_Buffer</A></span>
+ (<span class="symbol"><A NAME="ref_364_7" HREF="terminal_interface-curses-forms__adb.htm#ref_218_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_365_7" HREF="terminal_interface-curses-forms__adb.htm#ref_219_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A>'First;
+ <span class="symbol"><A NAME="ref_366_7" HREF="terminal_interface-curses-forms__adb.htm#ref_220_7">Str</A></span> : <b>out</b> String);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">field_buffer()</A></EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_370_13" HREF="terminal_interface-curses-forms__adb.htm#ref_262_13">Get_Buffer</A></span>
- (<span class="symbol"><A NAME="ref_371_7" HREF="terminal_interface-curses-forms__adb.htm#ref_263_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_372_7" HREF="terminal_interface-curses-forms__adb.htm#ref_264_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First) <b>return</b> String;
+ <b>function</b> <span class="symbol"><A NAME="ref_369_13" HREF="terminal_interface-curses-forms__adb.htm#ref_229_13">Get_Buffer</A></span>
+ (<span class="symbol"><A NAME="ref_370_7" HREF="terminal_interface-curses-forms__adb.htm#ref_230_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_371_7" HREF="terminal_interface-curses-forms__adb.htm#ref_231_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A>'First) <b>return</b> String;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">field_buffer()</A></EM></span>
<span class="comment"><EM>-- Same but as function</EM></span>
<b>pragma</b> Inline (Get_Buffer);
- <span class="comment"><EM>-- #1A NAME="AFU_10"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_378_14" HREF="terminal_interface-curses-forms__adb.htm#ref_275_14">Set_Status</A></span> (<span class="symbol"><A NAME="ref_378_26" HREF="terminal_interface-curses-forms__adb.htm#ref_275_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_379_26" HREF="terminal_interface-curses-forms__adb.htm#ref_276_26">Status</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_10">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_377_14" HREF="terminal_interface-curses-forms__adb.htm#ref_242_14">Set_Status</A></span> (<span class="symbol"><A NAME="ref_377_26" HREF="terminal_interface-curses-forms__adb.htm#ref_242_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_378_26" HREF="terminal_interface-curses-forms__adb.htm#ref_243_26">Status</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">set_field_status()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_378_14">Set_Status</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_377_14">Set_Status</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_11"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_384_13" HREF="terminal_interface-curses-forms__adb.htm#ref_291_13">Changed</A></span> (<span class="symbol"><A NAME="ref_384_22" HREF="terminal_interface-curses-forms__adb.htm#ref_291_22">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_11">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_383_13" HREF="terminal_interface-curses-forms__adb.htm#ref_257_13">Changed</A></span> (<span class="symbol"><A NAME="ref_383_22" HREF="terminal_interface-curses-forms__adb.htm#ref_257_22">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">field_status()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_384_13">Changed</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_383_13">Changed</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_12"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_389_14" HREF="terminal_interface-curses-forms__adb.htm#ref_307_14">Set_Maximum_Size</A></span> (<span class="symbol"><A NAME="ref_389_32" HREF="terminal_interface-curses-forms__adb.htm#ref_307_32">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_390_32" HREF="terminal_interface-curses-forms__adb.htm#ref_308_32">Max</A></span> : Natural := 0);
+ <span class="comment"><EM>-- <A NAME="AFU_12">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_388_14" HREF="terminal_interface-curses-forms__adb.htm#ref_273_14">Set_Maximum_Size</A></span> (<span class="symbol"><A NAME="ref_388_32" HREF="terminal_interface-curses-forms__adb.htm#ref_273_32">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_389_32" HREF="terminal_interface-curses-forms__adb.htm#ref_274_32">Max</A></span> : Natural := 0);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">set_field_max()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_389_14">Set_Maximum_Size</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_388_14">Set_Maximum_Size</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_field_opts.3x.html">form_field_opts.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_13"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_399_14" HREF="terminal_interface-curses-forms__adb.htm#ref_327_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_399_27" HREF="terminal_interface-curses-forms__adb.htm#ref_327_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_400_27" HREF="terminal_interface-curses-forms__adb.htm#ref_328_27">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_13">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_398_14" HREF="terminal_interface-curses-forms__adb.htm#ref_290_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_398_27" HREF="terminal_interface-curses-forms__adb.htm#ref_290_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_399_27" HREF="terminal_interface-curses-forms__adb.htm#ref_291_27">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">set_field_opts()</A></EM></span>
<span class="comment"><EM>-- An overloaded version is defined later. Pragma Inline appears there</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_14"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_405_14" HREF="terminal_interface-curses-forms__adb.htm#ref_345_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_405_30" HREF="terminal_interface-curses-forms__adb.htm#ref_345_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_406_30" HREF="terminal_interface-curses-forms__adb.htm#ref_346_30">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A>;
- <span class="symbol"><A NAME="ref_407_30" HREF="terminal_interface-curses-forms__adb.htm#ref_347_30">On</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_14">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_404_14" HREF="terminal_interface-curses-forms__adb.htm#ref_303_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_404_30" HREF="terminal_interface-curses-forms__adb.htm#ref_303_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_405_30" HREF="terminal_interface-curses-forms__adb.htm#ref_304_30">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>;
+ <span class="symbol"><A NAME="ref_406_30" HREF="terminal_interface-curses-forms__adb.htm#ref_305_30">On</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">field_opts_on()</A></EM></span>
<span class="comment"><EM>-- AKA: field_opts_off()</EM></span>
<span class="comment"><EM>-- An overloaded version is defined later. Pragma Inline appears there</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_15"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_413_14" HREF="terminal_interface-curses-forms__adb.htm#ref_371_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_413_27" HREF="terminal_interface-curses-forms__adb.htm#ref_371_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_414_27" HREF="terminal_interface-curses-forms__adb.htm#ref_372_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_15">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_412_14" HREF="terminal_interface-curses-forms__adb.htm#ref_324_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_412_27" HREF="terminal_interface-curses-forms__adb.htm#ref_324_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_413_27" HREF="terminal_interface-curses-forms__adb.htm#ref_325_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">field_opts()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_16"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_418_13" HREF="terminal_interface-curses-forms__adb.htm#ref_384_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_418_26" HREF="terminal_interface-curses-forms__adb.htm#ref_384_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_59_4">Null_Field</A>)
- <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_9">Field_Option_Set</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_16">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_417_13" HREF="terminal_interface-curses-forms__adb.htm#ref_336_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_417_26" HREF="terminal_interface-curses-forms__adb.htm#ref_336_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_54_4">Null_Field</A>)
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_62_9">Field_Option_Set</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">field_opts()</A></EM></span>
<span class="comment"><EM>-- An overloaded version is defined later. Pragma Inline appears there</EM></span>
@@ -441,162 +440,162 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/form_field_attributes.3x.html">form_field_attributes.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_17"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_428_14" HREF="terminal_interface-curses-forms__adb.htm#ref_399_14">Set_Foreground</A></span>
- (<span class="symbol"><A NAME="ref_429_7" HREF="terminal_interface-curses-forms__adb.htm#ref_400_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_430_7" HREF="terminal_interface-curses-forms__adb.htm#ref_401_7">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_431_7" HREF="terminal_interface-curses-forms__adb.htm#ref_402_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First);
+ <span class="comment"><EM>-- <A NAME="AFU_17">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_427_14" HREF="terminal_interface-curses-forms__adb.htm#ref_351_14">Set_Foreground</A></span>
+ (<span class="symbol"><A NAME="ref_428_7" HREF="terminal_interface-curses-forms__adb.htm#ref_352_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_429_7" HREF="terminal_interface-curses-forms__adb.htm#ref_353_7">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_430_7" HREF="terminal_interface-curses-forms__adb.htm#ref_354_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">set_field_fore()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_428_14">Set_Foreground</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_427_14">Set_Foreground</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_18"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_436_14" HREF="terminal_interface-curses-forms__adb.htm#ref_421_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_436_26" HREF="terminal_interface-curses-forms__adb.htm#ref_421_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_437_26" HREF="terminal_interface-curses-forms__adb.htm#ref_422_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_18">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_435_14" HREF="terminal_interface-curses-forms__adb.htm#ref_368_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_435_26" HREF="terminal_interface-curses-forms__adb.htm#ref_368_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_436_26" HREF="terminal_interface-curses-forms__adb.htm#ref_369_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_fore()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_19"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_441_14" HREF="terminal_interface-curses-forms__adb.htm#ref_430_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_441_26" HREF="terminal_interface-curses-forms__adb.htm#ref_430_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_442_26" HREF="terminal_interface-curses-forms__adb.htm#ref_431_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
- <span class="symbol"><A NAME="ref_443_26" HREF="terminal_interface-curses-forms__adb.htm#ref_432_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_19">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_440_14" HREF="terminal_interface-curses-forms__adb.htm#ref_377_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_440_26" HREF="terminal_interface-curses-forms__adb.htm#ref_377_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_441_26" HREF="terminal_interface-curses-forms__adb.htm#ref_378_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
+ <span class="symbol"><A NAME="ref_442_26" HREF="terminal_interface-curses-forms__adb.htm#ref_379_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_fore()</A></EM></span>
<b>pragma</b> Inline (Foreground);
- <span class="comment"><EM>-- #1A NAME="AFU_20"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_448_14" HREF="terminal_interface-curses-forms__adb.htm#ref_443_14">Set_Background</A></span>
- (<span class="symbol"><A NAME="ref_449_7" HREF="terminal_interface-curses-forms__adb.htm#ref_444_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_450_7" HREF="terminal_interface-curses-forms__adb.htm#ref_445_7">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_451_7" HREF="terminal_interface-curses-forms__adb.htm#ref_446_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First);
+ <span class="comment"><EM>-- <A NAME="AFU_20">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_447_14" HREF="terminal_interface-curses-forms__adb.htm#ref_390_14">Set_Background</A></span>
+ (<span class="symbol"><A NAME="ref_448_7" HREF="terminal_interface-curses-forms__adb.htm#ref_391_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_449_7" HREF="terminal_interface-curses-forms__adb.htm#ref_392_7">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_450_7" HREF="terminal_interface-curses-forms__adb.htm#ref_393_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">set_field_back()</A></EM></span>
<b>pragma</b> Inline (Set_Background);
- <span class="comment"><EM>-- #1A NAME="AFU_21"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_456_14" HREF="terminal_interface-curses-forms__adb.htm#ref_465_14">Background</A></span> (<span class="symbol"><A NAME="ref_456_26" HREF="terminal_interface-curses-forms__adb.htm#ref_465_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_457_26" HREF="terminal_interface-curses-forms__adb.htm#ref_466_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_21">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_455_14" HREF="terminal_interface-curses-forms__adb.htm#ref_407_14">Background</A></span> (<span class="symbol"><A NAME="ref_455_26" HREF="terminal_interface-curses-forms__adb.htm#ref_407_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_456_26" HREF="terminal_interface-curses-forms__adb.htm#ref_408_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_back()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_22"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_461_14" HREF="terminal_interface-curses-forms__adb.htm#ref_474_14">Background</A></span> (<span class="symbol"><A NAME="ref_461_26" HREF="terminal_interface-curses-forms__adb.htm#ref_474_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_462_26" HREF="terminal_interface-curses-forms__adb.htm#ref_475_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
- <span class="symbol"><A NAME="ref_463_26" HREF="terminal_interface-curses-forms__adb.htm#ref_476_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_22">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_460_14" HREF="terminal_interface-curses-forms__adb.htm#ref_416_14">Background</A></span> (<span class="symbol"><A NAME="ref_460_26" HREF="terminal_interface-curses-forms__adb.htm#ref_416_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_461_26" HREF="terminal_interface-curses-forms__adb.htm#ref_417_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
+ <span class="symbol"><A NAME="ref_462_26" HREF="terminal_interface-curses-forms__adb.htm#ref_418_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_back()</A></EM></span>
<b>pragma</b> Inline (Background);
- <span class="comment"><EM>-- #1A NAME="AFU_23"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_468_14" HREF="terminal_interface-curses-forms__adb.htm#ref_487_14">Set_Pad_Character</A></span> (<span class="symbol"><A NAME="ref_468_33" HREF="terminal_interface-curses-forms__adb.htm#ref_487_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_469_33" HREF="terminal_interface-curses-forms__adb.htm#ref_488_33">Pad</A></span> : Character := Space);
+ <span class="comment"><EM>-- <A NAME="AFU_23">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_467_14" HREF="terminal_interface-curses-forms__adb.htm#ref_429_14">Set_Pad_Character</A></span> (<span class="symbol"><A NAME="ref_467_33" HREF="terminal_interface-curses-forms__adb.htm#ref_429_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_468_33" HREF="terminal_interface-curses-forms__adb.htm#ref_430_33">Pad</A></span> : Character := Space);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">set_field_pad()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_468_14">Set_Pad_Character</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_467_14">Set_Pad_Character</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_24"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_474_14" HREF="terminal_interface-curses-forms__adb.htm#ref_504_14">Pad_Character</A></span> (<span class="symbol"><A NAME="ref_474_29" HREF="terminal_interface-curses-forms__adb.htm#ref_504_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_475_29" HREF="terminal_interface-curses-forms__adb.htm#ref_505_29">Pad</A></span> : <b>out</b> Character);
+ <span class="comment"><EM>-- <A NAME="AFU_24">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_473_14" HREF="terminal_interface-curses-forms__adb.htm#ref_443_14">Pad_Character</A></span> (<span class="symbol"><A NAME="ref_473_29" HREF="terminal_interface-curses-forms__adb.htm#ref_443_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_474_29" HREF="terminal_interface-curses-forms__adb.htm#ref_444_29">Pad</A></span> : <b>out</b> Character);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_pad()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_474_14">Pad_Character</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_473_14">Pad_Character</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_field_info.3x.html">form_field_info.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_25"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_484_14" HREF="terminal_interface-curses-forms__adb.htm#ref_519_14">Info</A></span> (<span class="symbol"><A NAME="ref_484_20" HREF="terminal_interface-curses-forms__adb.htm#ref_519_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_485_20" HREF="terminal_interface-curses-forms__adb.htm#ref_520_20">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_486_20" HREF="terminal_interface-curses-forms__adb.htm#ref_521_20">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_487_20" HREF="terminal_interface-curses-forms__adb.htm#ref_522_20">First_Row</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_488_20" HREF="terminal_interface-curses-forms__adb.htm#ref_523_20">First_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_489_20" HREF="terminal_interface-curses-forms__adb.htm#ref_524_20">Off_Screen</A></span> : <b>out</b> Natural;
- <span class="symbol"><A NAME="ref_490_20" HREF="terminal_interface-curses-forms__adb.htm#ref_525_20">Additional_Buffers</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_25">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_483_14" HREF="terminal_interface-curses-forms__adb.htm#ref_458_14">Info</A></span> (<span class="symbol"><A NAME="ref_483_20" HREF="terminal_interface-curses-forms__adb.htm#ref_458_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_484_20" HREF="terminal_interface-curses-forms__adb.htm#ref_459_20">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_485_20" HREF="terminal_interface-curses-forms__adb.htm#ref_460_20">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_486_20" HREF="terminal_interface-curses-forms__adb.htm#ref_461_20">First_Row</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_487_20" HREF="terminal_interface-curses-forms__adb.htm#ref_462_20">First_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_488_20" HREF="terminal_interface-curses-forms__adb.htm#ref_463_20">Off_Screen</A></span> : <b>out</b> Natural;
+ <span class="symbol"><A NAME="ref_489_20" HREF="terminal_interface-curses-forms__adb.htm#ref_464_20">Additional_Buffers</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_130_9">Buffer_Number</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_info.3x.html">field_info()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_484_14">Info</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_483_14">Info</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_26"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_495_14" HREF="terminal_interface-curses-forms__adb.htm#ref_553_14">Dynamic_Info</A></span> (<span class="symbol"><A NAME="ref_495_28" HREF="terminal_interface-curses-forms__adb.htm#ref_553_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_496_28" HREF="terminal_interface-curses-forms__adb.htm#ref_554_28">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_497_28" HREF="terminal_interface-curses-forms__adb.htm#ref_555_28">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_498_28" HREF="terminal_interface-curses-forms__adb.htm#ref_556_28">Max</A></span> : <b>out</b> Natural);
+ <span class="comment"><EM>-- <A NAME="AFU_26">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_494_14" HREF="terminal_interface-curses-forms__adb.htm#ref_488_14">Dynamic_Info</A></span> (<span class="symbol"><A NAME="ref_494_28" HREF="terminal_interface-curses-forms__adb.htm#ref_488_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_495_28" HREF="terminal_interface-curses-forms__adb.htm#ref_489_28">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_496_28" HREF="terminal_interface-curses-forms__adb.htm#ref_490_28">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_497_28" HREF="terminal_interface-curses-forms__adb.htm#ref_491_28">Max</A></span> : <b>out</b> Natural);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field_info.3x.html">dynamic_field_info()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_495_14">Dynamic_Info</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_494_14">Dynamic_Info</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_win.3x.html">form_win.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_27"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_507_14" HREF="terminal_interface-curses-forms__adb.htm#ref_582_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_507_26" HREF="terminal_interface-curses-forms__adb.htm#ref_582_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_508_26" HREF="terminal_interface-curses-forms__adb.htm#ref_583_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_27">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_506_14" HREF="terminal_interface-curses-forms__adb.htm#ref_513_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_506_26" HREF="terminal_interface-curses-forms__adb.htm#ref_513_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_507_26" HREF="terminal_interface-curses-forms__adb.htm#ref_514_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_win.3x.html">set_form_win()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_507_14">Set_Window</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_506_14">Set_Window</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_28"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_513_13" HREF="terminal_interface-curses-forms__adb.htm#ref_598_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_513_25" HREF="terminal_interface-curses-forms__adb.htm#ref_598_25">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_28">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_512_13" HREF="terminal_interface-curses-forms__adb.htm#ref_526_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_512_25" HREF="terminal_interface-curses-forms__adb.htm#ref_526_25">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_win.3x.html">form_win()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_513_13">Get_Window</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_512_13">Get_Window</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_29"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_518_14" HREF="terminal_interface-curses-forms__adb.htm#ref_610_14">Set_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_518_30" HREF="terminal_interface-curses-forms__adb.htm#ref_610_30">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_519_30" HREF="terminal_interface-curses-forms__adb.htm#ref_611_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_29">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_517_14" HREF="terminal_interface-curses-forms__adb.htm#ref_538_14">Set_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_517_30" HREF="terminal_interface-curses-forms__adb.htm#ref_538_30">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_518_30" HREF="terminal_interface-curses-forms__adb.htm#ref_539_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_win.3x.html">set_form_sub()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_518_14">Set_Sub_Window</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_517_14">Set_Sub_Window</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_30"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_524_13" HREF="terminal_interface-curses-forms__adb.htm#ref_626_13">Get_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_524_29" HREF="terminal_interface-curses-forms__adb.htm#ref_626_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_30">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_523_13" HREF="terminal_interface-curses-forms__adb.htm#ref_551_13">Get_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_523_29" HREF="terminal_interface-curses-forms__adb.htm#ref_551_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_win.3x.html">form_sub()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_524_13">Get_Sub_Window</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_523_13">Get_Sub_Window</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_31"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_529_14" HREF="terminal_interface-curses-forms__adb.htm#ref_638_14">Scale</A></span> (<span class="symbol"><A NAME="ref_529_21" HREF="terminal_interface-curses-forms__adb.htm#ref_638_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_530_21" HREF="terminal_interface-curses-forms__adb.htm#ref_639_21">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_531_21" HREF="terminal_interface-curses-forms__adb.htm#ref_640_21">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_31">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_528_14" HREF="terminal_interface-curses-forms__adb.htm#ref_563_14">Scale</A></span> (<span class="symbol"><A NAME="ref_528_21" HREF="terminal_interface-curses-forms__adb.htm#ref_563_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_529_21" HREF="terminal_interface-curses-forms__adb.htm#ref_564_21">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_530_21" HREF="terminal_interface-curses-forms__adb.htm#ref_565_21">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_win.3x.html">scale_form()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_529_14">Scale</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_528_14">Scale</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_hook.3x.html">form_hook.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_539_9">Form_Hook_Function</A></span> <b>is</b> <b>access</b> <b>procedure</b> (<span class="symbol"><A NAME="ref_539_49">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>);
- <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>);
+ <b>type</b> <span class="symbol"><A NAME="ref_538_9">Form_Hook_Function</A></span> <b>is</b> <b>access</b> <b>procedure</b> (<span class="symbol"><A NAME="ref_538_49" HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>);
+ <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_32"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_543_14" HREF="terminal_interface-curses-forms__adb.htm#ref_662_14">Set_Field_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_543_35" HREF="terminal_interface-curses-forms__adb.htm#ref_662_35">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_544_35" HREF="terminal_interface-curses-forms__adb.htm#ref_663_35">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_32">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_542_14" HREF="terminal_interface-curses-forms__adb.htm#ref_584_14">Set_Field_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_542_35" HREF="terminal_interface-curses-forms__adb.htm#ref_584_35">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_543_35" HREF="terminal_interface-curses-forms__adb.htm#ref_585_35">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_field_init()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_543_14">Set_Field_Init_Hook</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_542_14">Set_Field_Init_Hook</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_33"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_549_14" HREF="terminal_interface-curses-forms__adb.htm#ref_678_14">Set_Field_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_549_35" HREF="terminal_interface-curses-forms__adb.htm#ref_678_35">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_550_35" HREF="terminal_interface-curses-forms__adb.htm#ref_679_35">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_33">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_548_14" HREF="terminal_interface-curses-forms__adb.htm#ref_597_14">Set_Field_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_548_35" HREF="terminal_interface-curses-forms__adb.htm#ref_597_35">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_549_35" HREF="terminal_interface-curses-forms__adb.htm#ref_598_35">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_field_term()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_549_14">Set_Field_Term_Hook</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_548_14">Set_Field_Term_Hook</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_34"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_555_14" HREF="terminal_interface-curses-forms__adb.htm#ref_694_14">Set_Form_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_555_34" HREF="terminal_interface-curses-forms__adb.htm#ref_694_34">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_556_34" HREF="terminal_interface-curses-forms__adb.htm#ref_695_34">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_34">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_554_14" HREF="terminal_interface-curses-forms__adb.htm#ref_610_14">Set_Form_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_554_34" HREF="terminal_interface-curses-forms__adb.htm#ref_610_34">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_555_34" HREF="terminal_interface-curses-forms__adb.htm#ref_611_34">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_form_init()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_555_14">Set_Form_Init_Hook</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_554_14">Set_Form_Init_Hook</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_35"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_561_14" HREF="terminal_interface-curses-forms__adb.htm#ref_710_14">Set_Form_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_561_34" HREF="terminal_interface-curses-forms__adb.htm#ref_710_34">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_562_34" HREF="terminal_interface-curses-forms__adb.htm#ref_711_34">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_35">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_560_14" HREF="terminal_interface-curses-forms__adb.htm#ref_623_14">Set_Form_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_560_34" HREF="terminal_interface-curses-forms__adb.htm#ref_623_34">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_561_34" HREF="terminal_interface-curses-forms__adb.htm#ref_624_34">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_form_term()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_561_14">Set_Form_Term_Hook</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_560_14">Set_Form_Term_Hook</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_36"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_567_13">Get_Field_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_567_34" HREF="terminal_interface-curses-forms__ads.htm#ref_567_13">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_36">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_566_13">Get_Field_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_566_34" HREF="terminal_interface-curses-forms__ads.htm#ref_566_13">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">field_init()</A></EM></span>
<b>pragma</b> Import (C, Get_Field_Init_Hook, "field_init");
- <span class="comment"><EM>-- #1A NAME="AFU_37"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_572_13">Get_Field_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_572_34" HREF="terminal_interface-curses-forms__ads.htm#ref_572_13">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_37">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_571_13">Get_Field_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_571_34" HREF="terminal_interface-curses-forms__ads.htm#ref_571_13">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">field_term()</A></EM></span>
<b>pragma</b> Import (C, Get_Field_Term_Hook, "field_term");
- <span class="comment"><EM>-- #1A NAME="AFU_38"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_577_13">Get_Form_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_577_33" HREF="terminal_interface-curses-forms__ads.htm#ref_577_13">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_38">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_576_13">Get_Form_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_576_33" HREF="terminal_interface-curses-forms__ads.htm#ref_576_13">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">form_init()</A></EM></span>
<b>pragma</b> Import (C, Get_Form_Init_Hook, "form_init");
- <span class="comment"><EM>-- #1A NAME="AFU_39"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_582_13">Get_Form_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_582_33" HREF="terminal_interface-curses-forms__ads.htm#ref_582_13">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_39">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_581_13">Get_Form_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_581_33" HREF="terminal_interface-curses-forms__ads.htm#ref_581_13">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_538_9">Form_Hook_Function</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">form_term()</A></EM></span>
<b>pragma</b> Import (C, Get_Form_Term_Hook, "form_term");
@@ -604,53 +603,53 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/form_field.3x.html">form_field.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_40"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_591_14" HREF="terminal_interface-curses-forms__adb.htm#ref_730_14">Redefine</A></span> (<span class="symbol"><A NAME="ref_591_24" HREF="terminal_interface-curses-forms__adb.htm#ref_730_24">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_592_24" HREF="terminal_interface-curses-forms__adb.htm#ref_731_24">Flds</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_40">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_590_14" HREF="terminal_interface-curses-forms__adb.htm#ref_640_14">Redefine</A></span> (<span class="symbol"><A NAME="ref_590_24" HREF="terminal_interface-curses-forms__adb.htm#ref_640_24">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_591_24" HREF="terminal_interface-curses-forms__adb.htm#ref_641_24">Flds</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_135_9">Field_Array_Access</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field.3x.html">set_form_fields()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_591_14">Redefine</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_590_14">Redefine</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_41"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_597_14">Set_Fields</A></span> (<span class="symbol"><A NAME="ref_597_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_598_26">Flds</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>) <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_591_14">Redefine</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_41">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_596_14">Set_Fields</A></span> (<span class="symbol"><A NAME="ref_596_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_597_26">Flds</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_135_9">Field_Array_Access</A>) <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_590_14">Redefine</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field.3x.html">set_form_fields()</A></EM></span>
<span class="comment"><EM>-- pragma Inline (Set_Fields);</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_42"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_603_13" HREF="terminal_interface-curses-forms__adb.htm#ref_752_13">Fields</A></span> (<span class="symbol"><A NAME="ref_603_21" HREF="terminal_interface-curses-forms__adb.htm#ref_752_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_604_21" HREF="terminal_interface-curses-forms__adb.htm#ref_753_21">Index</A></span> : Positive) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_42">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_602_13" HREF="terminal_interface-curses-forms__adb.htm#ref_658_13">Fields</A></span> (<span class="symbol"><A NAME="ref_602_21" HREF="terminal_interface-curses-forms__adb.htm#ref_658_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_603_21" HREF="terminal_interface-curses-forms__adb.htm#ref_659_21">Index</A></span> : Positive) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field.3x.html">form_fields()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_603_13">Fields</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_602_13">Fields</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_43"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_609_13" HREF="terminal_interface-curses-forms__adb.htm#ref_772_13">Field_Count</A></span> (<span class="symbol"><A NAME="ref_609_26" HREF="terminal_interface-curses-forms__adb.htm#ref_772_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> Natural;
+ <span class="comment"><EM>-- <A NAME="AFU_43">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_608_13" HREF="terminal_interface-curses-forms__adb.htm#ref_678_13">Field_Count</A></span> (<span class="symbol"><A NAME="ref_608_26" HREF="terminal_interface-curses-forms__adb.htm#ref_678_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> Natural;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field.3x.html">field_count()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_609_13">Field_Count</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_608_13">Field_Count</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_44"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_614_14" HREF="terminal_interface-curses-forms__adb.htm#ref_782_14">Move</A></span> (<span class="symbol"><A NAME="ref_614_20" HREF="terminal_interface-curses-forms__adb.htm#ref_782_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_615_20" HREF="terminal_interface-curses-forms__adb.htm#ref_783_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_616_20" HREF="terminal_interface-curses-forms__adb.htm#ref_784_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_44">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_613_14" HREF="terminal_interface-curses-forms__adb.htm#ref_688_14">Move</A></span> (<span class="symbol"><A NAME="ref_613_20" HREF="terminal_interface-curses-forms__adb.htm#ref_688_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_614_20" HREF="terminal_interface-curses-forms__adb.htm#ref_689_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_615_20" HREF="terminal_interface-curses-forms__adb.htm#ref_690_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_field.3x.html">move_field()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_614_14">Move</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_613_14">Move</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_new.3x.html">form_new.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_45"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_625_13" HREF="terminal_interface-curses-forms__adb.htm#ref_802_13">Create</A></span> (<span class="symbol"><A NAME="ref_625_21" HREF="terminal_interface-curses-forms__adb.htm#ref_802_21">Fields</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_45">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_624_13" HREF="terminal_interface-curses-forms__adb.htm#ref_705_13">Create</A></span> (<span class="symbol"><A NAME="ref_624_21" HREF="terminal_interface-curses-forms__adb.htm#ref_705_21">Fields</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_135_9">Field_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_new.3x.html">new_form()</A></EM></span>
<b>pragma</b> Inline (Create);
- <span class="comment"><EM>-- #1A NAME="AFU_46"#2|</EM></span>
- <b>function</b> New_Form (<span class="symbol"><A NAME="ref_630_23">Fields</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>
- <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_625_13">Create</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_46">|</A></EM></span>
+ <b>function</b> New_Form (<span class="symbol"><A NAME="ref_629_23">Fields</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_135_9">Field_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>
+ <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_624_13">Create</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_new.3x.html">new_form()</A></EM></span>
<span class="comment"><EM>-- pragma Inline (New_Form);</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_47"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_636_14" HREF="terminal_interface-curses-forms__adb.htm#ref_823_14">Delete</A></span> (<span class="symbol"><A NAME="ref_636_22" HREF="terminal_interface-curses-forms__adb.htm#ref_823_22">Frm</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_47">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_635_14" HREF="terminal_interface-curses-forms__adb.htm#ref_726_14">Delete</A></span> (<span class="symbol"><A NAME="ref_635_22" HREF="terminal_interface-curses-forms__adb.htm#ref_726_22">Frm</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_new.3x.html">free_form()</A></EM></span>
<span class="comment"><EM>-- Reset Frm to Null_Form</EM></span>
<b>pragma</b> Inline (Delete);
@@ -659,27 +658,27 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/form_opts.3x.html">form_opts.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_48"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_646_14" HREF="terminal_interface-curses-forms__adb.htm#ref_842_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_646_27" HREF="terminal_interface-curses-forms__adb.htm#ref_842_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_647_27" HREF="terminal_interface-curses-forms__adb.htm#ref_843_27">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_48">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_645_14" HREF="terminal_interface-curses-forms__adb.htm#ref_742_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_645_27" HREF="terminal_interface-curses-forms__adb.htm#ref_742_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_646_27" HREF="terminal_interface-curses-forms__adb.htm#ref_743_27">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_opts.3x.html">set_form_opts()</A></EM></span>
<b>pragma</b> Inline (Set_Options);
- <span class="comment"><EM>-- #1A NAME="AFU_49"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_652_14" HREF="terminal_interface-curses-forms__adb.htm#ref_860_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_652_30" HREF="terminal_interface-curses-forms__adb.htm#ref_860_30">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_653_30" HREF="terminal_interface-curses-forms__adb.htm#ref_861_30">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>;
- <span class="symbol"><A NAME="ref_654_30" HREF="terminal_interface-curses-forms__adb.htm#ref_862_30">On</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_49">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_651_14" HREF="terminal_interface-curses-forms__adb.htm#ref_755_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_651_30" HREF="terminal_interface-curses-forms__adb.htm#ref_755_30">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_652_30" HREF="terminal_interface-curses-forms__adb.htm#ref_756_30">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>;
+ <span class="symbol"><A NAME="ref_653_30" HREF="terminal_interface-curses-forms__adb.htm#ref_757_30">On</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_opts.3x.html">form_opts_on()</A></EM></span>
<span class="comment"><EM>-- AKA: form_opts_off()</EM></span>
<b>pragma</b> Inline (Switch_Options);
- <span class="comment"><EM>-- #1A NAME="AFU_50"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_660_14" HREF="terminal_interface-curses-forms__adb.htm#ref_886_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_660_27" HREF="terminal_interface-curses-forms__adb.htm#ref_886_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_661_27" HREF="terminal_interface-curses-forms__adb.htm#ref_887_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_50">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_659_14" HREF="terminal_interface-curses-forms__adb.htm#ref_776_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_659_27" HREF="terminal_interface-curses-forms__adb.htm#ref_776_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_660_27" HREF="terminal_interface-curses-forms__adb.htm#ref_777_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_opts.3x.html">form_opts()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_51"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_665_13" HREF="terminal_interface-curses-forms__adb.htm#ref_899_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_665_26" HREF="terminal_interface-curses-forms__adb.htm#ref_899_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_60_4">Null_Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_51">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_664_13" HREF="terminal_interface-curses-forms__adb.htm#ref_788_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_664_26" HREF="terminal_interface-curses-forms__adb.htm#ref_788_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_108_9">Form_Option_Set</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_opts.3x.html">form_opts()</A></EM></span>
<b>pragma</b> Inline (Get_Options);
@@ -687,48 +686,48 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/form_post.3x.html">form_post.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_52"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_674_14" HREF="terminal_interface-curses-forms__adb.htm#ref_913_14">Post</A></span> (<span class="symbol"><A NAME="ref_674_20" HREF="terminal_interface-curses-forms__adb.htm#ref_913_20">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_675_20" HREF="terminal_interface-curses-forms__adb.htm#ref_914_20">Post</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_52">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_673_14" HREF="terminal_interface-curses-forms__adb.htm#ref_802_14">Post</A></span> (<span class="symbol"><A NAME="ref_673_20" HREF="terminal_interface-curses-forms__adb.htm#ref_802_20">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_674_20" HREF="terminal_interface-curses-forms__adb.htm#ref_803_20">Post</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_post.3x.html">post_form()</A></EM></span>
<span class="comment"><EM>-- AKA: unpost_form()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_674_14">Post</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_673_14">Post</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_cursor.3x.html">form_cursor.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_53"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_685_14" HREF="terminal_interface-curses-forms__adb.htm#ref_939_14">Position_Cursor</A></span> (<span class="symbol"><A NAME="ref_685_31" HREF="terminal_interface-curses-forms__adb.htm#ref_939_31">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_53">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_684_14" HREF="terminal_interface-curses-forms__adb.htm#ref_824_14">Position_Cursor</A></span> (<span class="symbol"><A NAME="ref_684_31" HREF="terminal_interface-curses-forms__adb.htm#ref_824_31">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_cursor.3x.html">pos_form_cursor()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_685_14">Position_Cursor</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_684_14">Position_Cursor</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_data.3x.html">form_data.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_54"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_694_13" HREF="terminal_interface-curses-forms__adb.htm#ref_957_13">Data_Ahead</A></span> (<span class="symbol"><A NAME="ref_694_25" HREF="terminal_interface-curses-forms__adb.htm#ref_957_25">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_54">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_693_13" HREF="terminal_interface-curses-forms__adb.htm#ref_839_13">Data_Ahead</A></span> (<span class="symbol"><A NAME="ref_693_25" HREF="terminal_interface-curses-forms__adb.htm#ref_839_25">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_data.3x.html">data_ahead()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_694_13">Data_Ahead</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_693_13">Data_Ahead</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_55"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_699_13" HREF="terminal_interface-curses-forms__adb.htm#ref_973_13">Data_Behind</A></span> (<span class="symbol"><A NAME="ref_699_26" HREF="terminal_interface-curses-forms__adb.htm#ref_973_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_55">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_698_13" HREF="terminal_interface-curses-forms__adb.htm#ref_855_13">Data_Behind</A></span> (<span class="symbol"><A NAME="ref_698_26" HREF="terminal_interface-curses-forms__adb.htm#ref_855_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_data.3x.html">data_behind()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_699_13">Data_Behind</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_698_13">Data_Behind</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_driver.3x.html">form_driver.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_707_9">Driver_Result</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_707_27">Form_Ok</A></span>,
- <span class="symbol"><A NAME="ref_708_27">Request_Denied</A></span>,
- <span class="symbol"><A NAME="ref_709_27">Unknown_Request</A></span>,
- <span class="symbol"><A NAME="ref_710_27">Invalid_Field</A></span>);
+ <b>type</b> <span class="symbol"><A NAME="ref_706_9">Driver_Result</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_706_27">Form_Ok</A></span>,
+ <span class="symbol"><A NAME="ref_707_27">Request_Denied</A></span>,
+ <span class="symbol"><A NAME="ref_708_27">Unknown_Request</A></span>,
+ <span class="symbol"><A NAME="ref_709_27">Invalid_Field</A></span>);
- <span class="comment"><EM>-- #1A NAME="AFU_56"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_713_13" HREF="terminal_interface-curses-forms__adb.htm#ref_993_13">Driver</A></span> (<span class="symbol"><A NAME="ref_713_21" HREF="terminal_interface-curses-forms__adb.htm#ref_993_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_714_21" HREF="terminal_interface-curses-forms__adb.htm#ref_994_21">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_68_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_707_9">Driver_Result</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_56">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_712_13" HREF="terminal_interface-curses-forms__adb.htm#ref_875_13">Driver</A></span> (<span class="symbol"><A NAME="ref_712_21" HREF="terminal_interface-curses-forms__adb.htm#ref_875_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_713_21" HREF="terminal_interface-curses-forms__adb.htm#ref_876_21">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_66_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_706_9">Driver_Result</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_driver.3x.html">form_driver()</A></EM></span>
<span class="comment"><EM>-- Driver not inlined</EM></span>
@@ -736,52 +735,52 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/form_page.3x.html">form_page.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_722_9">Page_Number</A></span> <b>is</b> <b>new</b> Natural;
+ <b>type</b> <span class="symbol"><A NAME="ref_721_9">Page_Number</A></span> <b>is</b> <b>new</b> Natural;
- <span class="comment"><EM>-- #1A NAME="AFU_57"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_725_14" HREF="terminal_interface-curses-forms__adb.htm#ref_1023_14">Set_Current</A></span> (<span class="symbol"><A NAME="ref_725_27" HREF="terminal_interface-curses-forms__adb.htm#ref_1023_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_726_27" HREF="terminal_interface-curses-forms__adb.htm#ref_1024_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_57">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_724_14" HREF="terminal_interface-curses-forms__adb.htm#ref_902_14">Set_Current</A></span> (<span class="symbol"><A NAME="ref_724_27" HREF="terminal_interface-curses-forms__adb.htm#ref_902_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_725_27" HREF="terminal_interface-curses-forms__adb.htm#ref_903_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_page.3x.html">set_current_field()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_725_14">Set_Current</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_724_14">Set_Current</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_58"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_731_13" HREF="terminal_interface-curses-forms__adb.htm#ref_1038_13">Current</A></span> (<span class="symbol"><A NAME="ref_731_22" HREF="terminal_interface-curses-forms__adb.htm#ref_1038_22">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_58">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_730_13" HREF="terminal_interface-curses-forms__adb.htm#ref_914_13">Current</A></span> (<span class="symbol"><A NAME="ref_730_22" HREF="terminal_interface-curses-forms__adb.htm#ref_914_22">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_page.3x.html">current_field()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_731_13">Current</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_730_13">Current</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_59"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_736_14" HREF="terminal_interface-curses-forms__adb.htm#ref_1053_14">Set_Page</A></span> (<span class="symbol"><A NAME="ref_736_24" HREF="terminal_interface-curses-forms__adb.htm#ref_1053_24">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>;
- <span class="symbol"><A NAME="ref_737_24" HREF="terminal_interface-curses-forms__adb.htm#ref_1054_24">Page</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_722_9">Page_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_722_9">Page_Number</A>'First);
+ <span class="comment"><EM>-- <A NAME="AFU_59">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_735_14" HREF="terminal_interface-curses-forms__adb.htm#ref_929_14">Set_Page</A></span> (<span class="symbol"><A NAME="ref_735_24" HREF="terminal_interface-curses-forms__adb.htm#ref_929_24">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>;
+ <span class="symbol"><A NAME="ref_736_24" HREF="terminal_interface-curses-forms__adb.htm#ref_930_24">Page</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_721_9">Page_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_721_9">Page_Number</A>'First);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_page.3x.html">set_form_page()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_736_14">Set_Page</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_735_14">Set_Page</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_60"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_742_13" HREF="terminal_interface-curses-forms__adb.htm#ref_1068_13">Page</A></span> (<span class="symbol"><A NAME="ref_742_19" HREF="terminal_interface-curses-forms__adb.htm#ref_1068_19">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_722_9">Page_Number</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_60">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_741_13" HREF="terminal_interface-curses-forms__adb.htm#ref_941_13">Page</A></span> (<span class="symbol"><A NAME="ref_741_19" HREF="terminal_interface-curses-forms__adb.htm#ref_941_19">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_721_9">Page_Number</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_page.3x.html">form_page()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_742_13">Page</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_741_13">Page</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_61"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_747_13" HREF="terminal_interface-curses-forms__adb.htm#ref_1082_13">Get_Index</A></span> (<span class="symbol"><A NAME="ref_747_24" HREF="terminal_interface-curses-forms__adb.htm#ref_1082_24">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> Positive;
+ <span class="comment"><EM>-- <A NAME="AFU_61">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_746_13" HREF="terminal_interface-curses-forms__adb.htm#ref_955_13">Get_Index</A></span> (<span class="symbol"><A NAME="ref_746_24" HREF="terminal_interface-curses-forms__adb.htm#ref_955_24">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> Positive;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_page.3x.html">field_index()</A></EM></span>
<span class="comment"><EM>-- Please note that in this binding we start the numbering of fields</EM></span>
<span class="comment"><EM>-- with 1. So this is number is one more than you get from the low</EM></span>
<span class="comment"><EM>-- level call.</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_747_13">Get_Index</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_746_13">Get_Index</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_new_page.3x.html">form_new_page.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_62"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_759_14" HREF="terminal_interface-curses-forms__adb.htm#ref_1102_14">Set_New_Page</A></span> (<span class="symbol"><A NAME="ref_759_28" HREF="terminal_interface-curses-forms__adb.htm#ref_1102_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>;
- <span class="symbol"><A NAME="ref_760_28" HREF="terminal_interface-curses-forms__adb.htm#ref_1103_28">New_Page</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_62">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_758_14" HREF="terminal_interface-curses-forms__adb.htm#ref_975_14">Set_New_Page</A></span> (<span class="symbol"><A NAME="ref_758_28" HREF="terminal_interface-curses-forms__adb.htm#ref_975_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>;
+ <span class="symbol"><A NAME="ref_759_28" HREF="terminal_interface-curses-forms__adb.htm#ref_976_28">New_Page</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/form_new_page.3x.html">set_new_page()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_759_14">Set_New_Page</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_758_14">Set_New_Page</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_63"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_765_13" HREF="terminal_interface-curses-forms__adb.htm#ref_1117_13">Is_New_Page</A></span> (<span class="symbol"><A NAME="ref_765_26" HREF="terminal_interface-curses-forms__adb.htm#ref_1117_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A>) <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_63">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_764_13" HREF="terminal_interface-curses-forms__adb.htm#ref_987_13">Is_New_Page</A></span> (<span class="symbol"><A NAME="ref_764_26" HREF="terminal_interface-curses-forms__adb.htm#ref_987_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A>) <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/form_new_page.3x.html">new_page()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_765_13">Is_New_Page</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_764_13">Is_New_Page</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/form_requestname.3x.html">form_requestname.3x</A></EM></span>
@@ -790,11 +789,11 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>private</b>
- <b>type</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
- <b>type</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+ <b>type</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+ <b>type</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_59_4">Null_Field</A> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_9">Field</A> := 0;
- <A HREF="terminal_interface-curses-forms__ads.htm#ref_60_4">Null_Form</A> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_57_9">Form</A> := 0;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_54_4">Null_Field</A> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_51_9">Field</A> := 0;
+ <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Form</A> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Form</A> := 0;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_49_35">Forms</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_45_35">Forms</A>;
</PRE></BODY></HTML>
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
index 703e8afef3c1..4c89bb00ee42 100644
--- 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
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2014,2018 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,44 +52,38 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.12 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.15 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_49_35">Menus</A>.<span class="symbol"><A NAME="ref_44_46" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_41">Item_User_Data</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_45_35">Menus</A>.<span class="symbol"><A NAME="ref_43_46" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_41">Item_User_Data</A></span> <b>is</b>
- <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int;
-
- <b>procedure</b> <span class="symbol"><A NAME="ref_48_14" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_58_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_48_29" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_58_29">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_49_29" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_59_29">Data</A></span> : <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_45_14" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_58_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_45_29" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_58_29">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_46_29" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_59_29">Data</A></span> : <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_51_16">Set_Item_Userptr</A></span> (<span class="symbol"><A NAME="ref_51_34" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_51_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_52_34" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_51_16">Addr</A></span> : <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_48_16">Set_Item_Userptr</A></span> (<span class="symbol"><A NAME="ref_48_34" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_48_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_49_34" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_48_16">Addr</A></span> : <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Item_Userptr, "set_item_userptr");
- <span class="symbol"><A NAME="ref_55_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_51_16">Set_Item_Userptr</A> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_58_29">Itm</A>, <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_59_29">Data</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_55_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_55_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_48_16">Set_Item_Userptr</A> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_58_29">Itm</A>, <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_59_29">Data</A>));
<b>end</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_58_14">Set_User_Data</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_62_13" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_69_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_62_28" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_69_28">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_56_13" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_69_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_56_28" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_69_28">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_64_16">Item_Userptr</A></span> (<span class="symbol"><A NAME="ref_64_30" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_64_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_58_16">Item_Userptr</A></span> (<span class="symbol"><A NAME="ref_58_30" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_58_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>;
<b>pragma</b> Import (C, Item_Userptr, "item_userptr");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_64_16">Item_Userptr</A> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_69_28">Itm</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_58_16">Item_Userptr</A> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_69_28">Itm</A>);
<b>end</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_69_13">Get_User_Data</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_70_14" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_64_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_70_29" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_64_29">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_71_29" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_65_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_64_14" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_64_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_64_29" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_64_29">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_65_29" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_65_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>)
<b>is</b>
<b>begin</b>
<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_65_29">Data</A> := <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_69_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_64_29">Itm</A>);
<b>end</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_64_14">Get_User_Data</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_49_35">Menus</A>.<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_41">Item_User_Data</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_45_35">Menus</A>.<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_41">Item_User_Data</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm b/doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm
index b58396318991..0352ffad1737 100644
--- a/doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm
@@ -60,8 +60,8 @@
<b>generic</b>
<b>type</b> <span class="symbol"><A NAME="ref_44_9" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_41">User</A></span> <b>is</b> <b>limited</b> <b>private</b>;
<b>type</b> <span class="symbol"><A NAME="ref_45_9" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_41">User_Access</A></span> <b>is</b> <b>access</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_44_9">User</A>;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_49_35">Menus</A>.<span class="symbol"><A NAME="ref_46_41" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_44_46">Item_User_Data</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_49_35">Menus</A>.<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_41">Item_User_Data</A>);
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_45_35">Menus</A>.<span class="symbol"><A NAME="ref_46_41" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_43_46">Item_User_Data</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_45_35">Menus</A>.<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_41">Item_User_Data</A>);
<span class="comment"><EM>-- The binding uses the same user pointer for menu items</EM></span>
<span class="comment"><EM>-- as the low level C implementation. So you can safely</EM></span>
@@ -71,22 +71,22 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/mitem_userptr.3x.html">mitem_userptr.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_1"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_58_14" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_48_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_58_29" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_48_29">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_59_29" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_49_29">Data</A></span> : <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_58_14" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_45_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_58_29" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_45_29">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_59_29" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_46_29">Data</A></span> : <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_userptr.3x.html">set_item_userptr</A></EM></span>
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_58_14">Set_User_Data</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_2"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_64_14" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_70_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_64_29" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_70_29">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_65_29" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_71_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_64_14" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_64_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_64_29" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_64_29">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_65_29" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_65_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_userptr.3x.html">item_userptr</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_3"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_69_13" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_62_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_69_28" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_62_28">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_69_13" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_56_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_69_28" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_56_28">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User_Access</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_userptr.3x.html">item_userptr</A></EM></span>
<span class="comment"><EM>-- Same as function</EM></span>
<b>pragma</b> Inline (Get_User_Data);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_49_35">Menus</A>.<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_41">Item_User_Data</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_45_35">Menus</A>.<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_41">Item_User_Data</A>;
</PRE></BODY></HTML>
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
index 50be1edbfb14..8ce5da84cbc3 100644
--- 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
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2014,2018 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,43 +52,39 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.13 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.16 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_49_35">Menus</A>.<span class="symbol"><A NAME="ref_43_46" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_41">Menu_User_Data</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_45_35">Menus</A>.<span class="symbol"><A NAME="ref_43_46" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_41">Menu_User_Data</A></span> <b>is</b>
- <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int;
-
- <b>procedure</b> <span class="symbol"><A NAME="ref_47_14" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_53_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_47_29" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_53_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_48_29" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_54_29">Data</A></span> : <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_45_14" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_53_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_45_29" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_53_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_46_29" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_54_29">Data</A></span> : <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_50_16">Set_Menu_Userptr</A></span> (<span class="symbol"><A NAME="ref_50_34" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_50_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_51_34" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_50_16">Data</A></span> : <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_48_16">Set_Menu_Userptr</A></span> (<span class="symbol"><A NAME="ref_48_34" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_48_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_49_34" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_48_16">Data</A></span> : <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Menu_Userptr, "set_menu_userptr");
- <span class="symbol"><A NAME="ref_54_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_50_16">Set_Menu_Userptr</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_53_29">Men</A>, <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_54_29">Data</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_54_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_54_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_48_16">Set_Menu_Userptr</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_53_29">Men</A>, <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_54_29">Data</A>));
+
<b>end</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_53_14">Set_User_Data</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_61_13" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_64_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_61_28" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_64_28">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_57_13" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_64_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_57_28" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_64_28">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_63_16">Menu_Userptr</A></span> (<span class="symbol"><A NAME="ref_63_30" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_63_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_59_16">Menu_Userptr</A></span> (<span class="symbol"><A NAME="ref_59_30" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_59_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>;
<b>pragma</b> Import (C, Menu_Userptr, "menu_userptr");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_63_16">Menu_Userptr</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_64_28">Men</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_59_16">Menu_Userptr</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_64_28">Men</A>);
<b>end</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_64_13">Get_User_Data</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_69_14" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_59_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_69_29" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_59_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_70_29" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_60_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_65_14" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_59_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_65_29" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_59_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_66_29" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_60_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>)
<b>is</b>
<b>begin</b>
<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_60_29">Data</A> := <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_64_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_59_29">Men</A>);
<b>end</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_59_14">Get_User_Data</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_49_35">Menus</A>.<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_41">Menu_User_Data</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_45_35">Menus</A>.<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_41">Menu_User_Data</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm b/doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm
index 3cb525a0db79..36277030a424 100644
--- a/doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm
@@ -59,29 +59,29 @@
<b>generic</b>
<b>type</b> <span class="symbol"><A NAME="ref_43_9" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_41">User</A></span> <b>is</b> <b>limited</b> <b>private</b>;
<b>type</b> <span class="symbol"><A NAME="ref_44_9" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_41">User_Access</A></span> <b>is</b> <b>access</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_43_9">User</A>;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_49_35">Menus</A>.<span class="symbol"><A NAME="ref_45_41" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_43_46">Menu_User_Data</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_49_35">Menus</A>.<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_41">Menu_User_Data</A>);
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_45_35">Menus</A>.<span class="symbol"><A NAME="ref_45_41" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_43_46">Menu_User_Data</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_45_35">Menus</A>.<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_41">Menu_User_Data</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/menu_userptr.3x.html">menu_userptr.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_1"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_53_14" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_47_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_53_29" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_47_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_54_29" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_48_29">Data</A></span> : <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_53_14" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_45_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_53_29" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_45_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_54_29" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_46_29">Data</A></span> : <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_userptr.3x.html">set_menu_userptr</A></EM></span>
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_53_14">Set_User_Data</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_2"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_59_14" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_69_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_59_29" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_69_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_60_29" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_70_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_59_14" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_65_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_59_29" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_65_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_60_29" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_66_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_userptr.3x.html">menu_userptr</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_3"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_64_13" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_61_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_64_28" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_61_28">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_64_13" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_57_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_64_28" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_57_28">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User_Access</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_userptr.3x.html">menu_userptr</A></EM></span>
<span class="comment"><EM>-- Same as function</EM></span>
<b>pragma</b> Inline (Get_User_Data);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_49_35">Menus</A>.<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_41">Menu_User_Data</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_45_35">Menus</A>.<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_41">Menu_User_Data</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-menus__adb.htm b/doc/html/ada/terminal_interface-curses-menus__adb.htm
index 6da134e31ab4..73f79cea87e4 100644
--- a/doc/html/ada/terminal_interface-curses-menus__adb.htm
+++ b/doc/html/ada/terminal_interface-curses-menus__adb.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2014,2018 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,989 +52,870 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.28 @</EM></span>
-<span class="comment"><EM>-- @Date: 2011/03/22 23:38:12 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.33 @</EM></span>
+<span class="comment"><EM>-- @Date: 2018/07/07 23:36:44 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>with</b> Ada.Unchecked_Deallocation;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Pointers;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Pointers;
-<b>with</b> Ada.Unchecked_Conversion;
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_49_40" HREF="terminal_interface-curses-menus__ads.htm#ref_45_35">Menus</A></span> <b>is</b>
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_51_40" HREF="terminal_interface-curses-menus__ads.htm#ref_49_35">Menus</A></span> <b>is</b>
-
- <b>type</b> C_Item_Array <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#ref_56_9">Item</A>;
+ <b>type</b> C_Item_Array <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#ref_51_9">Item</A>;
<b>package</b> I_Array <b>is</b> <b>new</b>
- <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Pointers (Natural, <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>, C_Item_Array, <A HREF="terminal_interface-curses-menus__ads.htm#ref_62_4">Null_Item</A>);
-
- <b>use</b> <b>type</b> System.Bit_Order;
- <b>subtype</b> <span class="symbol"><A NAME="ref_58_12">chars_ptr</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings.chars_ptr;
-
- <b>function</b> MOS_2_CInt <b>is</b> <b>new</b>
- Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>);
-
- <b>function</b> CInt_2_MOS <b>is</b> <b>new</b>
- Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>,
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A>);
+ <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Pointers (Natural, <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>, C_Item_Array, <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_4">Null_Item</A>);
- <b>function</b> IOS_2_CInt <b>is</b> <b>new</b>
- Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>);
-
- <b>function</b> CInt_2_IOS <b>is</b> <b>new</b>
- Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>,
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A>);
+ <b>subtype</b> <span class="symbol"><A NAME="ref_55_12">chars_ptr</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings.chars_ptr;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_77_14" HREF="terminal_interface-curses-menus__ads.htm#ref_106_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_77_28" HREF="terminal_interface-curses-menus__ads.htm#ref_106_28">Key</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A>;
- <span class="symbol"><A NAME="ref_78_28" HREF="terminal_interface-curses-menus__ads.htm#ref_107_28">Name</A></span> : <b>out</b> String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_58_14" HREF="terminal_interface-curses-menus__ads.htm#ref_101_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_58_28" HREF="terminal_interface-curses-menus__ads.htm#ref_101_28">Key</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A>;
+ <span class="symbol"><A NAME="ref_59_28" HREF="terminal_interface-curses-menus__ads.htm#ref_102_28">Name</A></span> : <b>out</b> String)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_80_16">Request_Name</A></span> (<span class="symbol"><A NAME="ref_80_30" HREF="terminal_interface-curses-menus__adb.htm#ref_80_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_58_12">chars_ptr</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_61_16">Request_Name</A></span> (<span class="symbol"><A NAME="ref_61_30" HREF="terminal_interface-curses-menus__adb.htm#ref_61_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_55_12">chars_ptr</A>;
<b>pragma</b> Import (C, Request_Name, "menu_request_name");
<b>begin</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_116_14">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_80_16">Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_106_28">Key</A>)), <A HREF="terminal_interface-curses-menus__ads.htm#ref_107_28">Name</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_106_14">Request_Name</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_14">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_61_16">Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_101_28">Key</A>)), <A HREF="terminal_interface-curses-menus__ads.htm#ref_102_28">Name</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_101_14">Request_Name</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_86_13" HREF="terminal_interface-curses-menus__ads.htm#ref_109_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_86_27" HREF="terminal_interface-curses-menus__ads.htm#ref_109_28">Key</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A>) <b>return</b> String
+ <b>function</b> <span class="symbol"><A NAME="ref_67_13" HREF="terminal_interface-curses-menus__ads.htm#ref_104_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_67_27" HREF="terminal_interface-curses-menus__ads.htm#ref_104_28">Key</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A>) <b>return</b> String
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_88_16">Request_Name</A></span> (<span class="symbol"><A NAME="ref_88_30" HREF="terminal_interface-curses-menus__adb.htm#ref_88_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_58_12">chars_ptr</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_69_16">Request_Name</A></span> (<span class="symbol"><A NAME="ref_69_30" HREF="terminal_interface-curses-menus__adb.htm#ref_69_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_55_12">chars_ptr</A>;
<b>pragma</b> Import (C, Request_Name, "menu_request_name");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_88_16">Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_109_28">Key</A>)));
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_109_14">Request_Name</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_69_16">Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_104_28">Key</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_104_14">Request_Name</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_94_13" HREF="terminal_interface-curses-menus__ads.htm#ref_193_13">Create</A></span> (<span class="symbol"><A NAME="ref_94_21" HREF="terminal_interface-curses-menus__ads.htm#ref_193_21">Name</A></span> : String;
- <span class="symbol"><A NAME="ref_95_21" HREF="terminal_interface-curses-menus__ads.htm#ref_194_21">Description</A></span> : String := "") <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_75_13" HREF="terminal_interface-curses-menus__ads.htm#ref_189_13">Create</A></span> (<span class="symbol"><A NAME="ref_75_21" HREF="terminal_interface-curses-menus__ads.htm#ref_189_21">Name</A></span> : String;
+ <span class="symbol"><A NAME="ref_76_21" HREF="terminal_interface-curses-menus__ads.htm#ref_190_21">Description</A></span> : String := "") <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>
<b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_97_12">Char_Ptr</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.char;
- <b>function</b> <span class="symbol"><A NAME="ref_98_16">Newitem</A></span> (<span class="symbol"><A NAME="ref_98_25" HREF="terminal_interface-curses-menus__adb.htm#ref_98_16">Name</A></span>, <span class="symbol"><A NAME="ref_98_31" HREF="terminal_interface-curses-menus__adb.htm#ref_98_16">Desc</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_97_12">Char_Ptr</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
+ <b>type</b> <span class="symbol"><A NAME="ref_78_12">Char_Ptr</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.char;
+ <b>function</b> <span class="symbol"><A NAME="ref_79_16">Newitem</A></span> (<span class="symbol"><A NAME="ref_79_25" HREF="terminal_interface-curses-menus__adb.htm#ref_79_16">Name</A></span>, <span class="symbol"><A NAME="ref_79_31" HREF="terminal_interface-curses-menus__adb.htm#ref_79_16">Desc</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_78_12">Char_Ptr</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
<b>pragma</b> Import (C, Newitem, "new_item");
- <b>type</b> Name_String <b>is</b> <b>new</b> char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#ref_193_21">Name</A>'Length);
- <b>type</b> <span class="symbol"><A NAME="ref_102_12">Name_String_Ptr</A></span> <b>is</b> <b>access</b> Name_String;
- <b>pragma</b> Controlled (<A HREF="terminal_interface-curses-menus__adb.htm#ref_102_12">Name_String_Ptr</A>);
-
- <b>type</b> Desc_String <b>is</b> <b>new</b> char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#ref_194_21">Description</A>'Length);
- <b>type</b> <span class="symbol"><A NAME="ref_106_12">Desc_String_Ptr</A></span> <b>is</b> <b>access</b> Desc_String;
- <b>pragma</b> Controlled (<A HREF="terminal_interface-curses-menus__adb.htm#ref_106_12">Desc_String_Ptr</A>);
-
- <span class="symbol"><A NAME="ref_109_7">Name_Str</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_102_12">Name_String_Ptr</A> := <b>new</b> Name_String;
- <span class="symbol"><A NAME="ref_110_7">Desc_Str</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_106_12">Desc_String_Ptr</A> := <b>new</b> Desc_String;
- <span class="symbol"><A NAME="ref_111_7">Name_Len</A></span>, <span class="symbol"><A NAME="ref_111_17">Desc_Len</A></span> : size_t;
- <span class="symbol"><A NAME="ref_112_7">Result</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <b>begin</b>
- To_C (<A HREF="terminal_interface-curses-menus__ads.htm#ref_193_21">Name</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_109_7">Name_Str</A>.<b>all</b>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_111_7">Name_Len</A>);
- To_C (<A HREF="terminal_interface-curses-menus__ads.htm#ref_194_21">Description</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_110_7">Desc_Str</A>.<b>all</b>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_111_17">Desc_Len</A>);
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_112_7">Result</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_98_16">Newitem</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_109_7">Name_Str</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_109_7">Name_Str</A>.<b>all</b>'First)'<b>Access</b>,
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_110_7">Desc_Str</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_110_7">Desc_Str</A>.<b>all</b>'First)'<b>Access</b>);
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_112_7">Result</A> = <A HREF="terminal_interface-curses-menus__ads.htm#ref_62_4">Null_Item</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_4">Eti_System_Error</A>;
+ <b>type</b> Name_String <b>is</b> <b>new</b> char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#ref_189_21">Name</A>'Length);
+ <b>type</b> <span class="symbol"><A NAME="ref_83_12">Name_String_Ptr</A></span> <b>is</b> <b>access</b> Name_String;
+ <b>pragma</b> Controlled (<A HREF="terminal_interface-curses-menus__adb.htm#ref_83_12">Name_String_Ptr</A>);
+
+ <b>type</b> Desc_String <b>is</b> <b>new</b> char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#ref_190_21">Description</A>'Length);
+ <b>type</b> <span class="symbol"><A NAME="ref_87_12">Desc_String_Ptr</A></span> <b>is</b> <b>access</b> Desc_String;
+ <b>pragma</b> Controlled (<A HREF="terminal_interface-curses-menus__adb.htm#ref_87_12">Desc_String_Ptr</A>);
+
+ <span class="symbol"><A NAME="ref_90_7">Name_Str</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_83_12">Name_String_Ptr</A> := <b>new</b> Name_String;
+ <span class="symbol"><A NAME="ref_91_7">Desc_Str</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_87_12">Desc_String_Ptr</A> := <b>new</b> Desc_String;
+ <span class="symbol"><A NAME="ref_92_7">Name_Len</A></span>, <span class="symbol"><A NAME="ref_92_17">Desc_Len</A></span> : size_t;
+ <span class="symbol"><A NAME="ref_93_7">Result</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <b>begin</b>
+ To_C (<A HREF="terminal_interface-curses-menus__ads.htm#ref_189_21">Name</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_90_7">Name_Str</A>.<b>all</b>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_92_7">Name_Len</A>);
+ To_C (<A HREF="terminal_interface-curses-menus__ads.htm#ref_190_21">Description</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_91_7">Desc_Str</A>.<b>all</b>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_92_17">Desc_Len</A>);
+ <A HREF="terminal_interface-curses-menus__adb.htm#ref_93_7">Result</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_79_16">Newitem</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_90_7">Name_Str</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_90_7">Name_Str</A>.<b>all</b>'First)'<b>Access</b>,
+ <A HREF="terminal_interface-curses-menus__adb.htm#ref_91_7">Desc_Str</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_91_7">Desc_Str</A>.<b>all</b>'First)'<b>Access</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_93_7">Result</A> = <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_4">Null_Item</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_527_4">Eti_System_Error</A>;
<b>end</b> <b>if</b>;
- <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_112_7">Result</A>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_193_13">Create</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_93_7">Result</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_189_13">Create</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_124_14" HREF="terminal_interface-curses-menus__ads.htm#ref_205_14">Delete</A></span> (<span class="symbol"><A NAME="ref_124_22" HREF="terminal_interface-curses-menus__ads.htm#ref_205_22">Itm</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_105_14" HREF="terminal_interface-curses-menus__ads.htm#ref_201_14">Delete</A></span> (<span class="symbol"><A NAME="ref_105_22" HREF="terminal_interface-curses-menus__ads.htm#ref_201_22">Itm</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_126_16">Descname</A></span> (<span class="symbol"><A NAME="ref_126_26" HREF="terminal_interface-curses-menus__adb.htm#ref_126_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_58_12">chars_ptr</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_107_16">Descname</A></span> (<span class="symbol"><A NAME="ref_107_26" HREF="terminal_interface-curses-menus__adb.htm#ref_107_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_55_12">chars_ptr</A>;
<b>pragma</b> Import (C, Descname, "item_description");
- <b>function</b> <span class="symbol"><A NAME="ref_128_16">Itemname</A></span> (<span class="symbol"><A NAME="ref_128_26" HREF="terminal_interface-curses-menus__adb.htm#ref_128_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_58_12">chars_ptr</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_109_16">Itemname</A></span> (<span class="symbol"><A NAME="ref_109_26" HREF="terminal_interface-curses-menus__adb.htm#ref_109_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_55_12">chars_ptr</A>;
<b>pragma</b> Import (C, Itemname, "item_name");
- <b>function</b> <span class="symbol"><A NAME="ref_131_16">Freeitem</A></span> (<span class="symbol"><A NAME="ref_131_26" HREF="terminal_interface-curses-menus__adb.htm#ref_131_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_112_16">Freeitem</A></span> (<span class="symbol"><A NAME="ref_112_26" HREF="terminal_interface-curses-menus__adb.htm#ref_112_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Freeitem, "free_item");
- <span class="symbol"><A NAME="ref_134_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
- <span class="symbol"><A NAME="ref_135_7">Ptr</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_58_12">chars_ptr</A>;
+ <span class="symbol"><A NAME="ref_115_7">Ptr</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_55_12">chars_ptr</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_135_7">Ptr</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_126_16">Descname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_205_22">Itm</A>);
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_135_7">Ptr</A> /= Null_Ptr <b>then</b>
- <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings.Free (<A HREF="terminal_interface-curses-menus__adb.htm#ref_135_7">Ptr</A>);
- <b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_135_7">Ptr</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_128_16">Itemname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_205_22">Itm</A>);
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_135_7">Ptr</A> /= Null_Ptr <b>then</b>
- <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings.Free (<A HREF="terminal_interface-curses-menus__adb.htm#ref_135_7">Ptr</A>);
+ <A HREF="terminal_interface-curses-menus__adb.htm#ref_115_7">Ptr</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_107_16">Descname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_201_22">Itm</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_115_7">Ptr</A> /= Null_Ptr <b>then</b>
+ <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings.Free (<A HREF="terminal_interface-curses-menus__adb.htm#ref_115_7">Ptr</A>);
<b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_134_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_131_16">Freeitem</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_205_22">Itm</A>);
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_134_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_134_7">Res</A>);
+ <A HREF="terminal_interface-curses-menus__adb.htm#ref_115_7">Ptr</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_109_16">Itemname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_201_22">Itm</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_115_7">Ptr</A> /= Null_Ptr <b>then</b>
+ <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings.Free (<A HREF="terminal_interface-curses-menus__adb.htm#ref_115_7">Ptr</A>);
<b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_205_22">Itm</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_62_4">Null_Item</A>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_205_14">Delete</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_112_16">Freeitem</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_201_22">Itm</A>));
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_201_22">Itm</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_4">Null_Item</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_201_14">Delete</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_152_14" HREF="terminal_interface-curses-menus__ads.htm#ref_214_14">Set_Value</A></span> (<span class="symbol"><A NAME="ref_152_25" HREF="terminal_interface-curses-menus__ads.htm#ref_214_25">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_153_25" HREF="terminal_interface-curses-menus__ads.htm#ref_215_25">Value</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_129_14" HREF="terminal_interface-curses-menus__ads.htm#ref_210_14">Set_Value</A></span> (<span class="symbol"><A NAME="ref_129_25" HREF="terminal_interface-curses-menus__ads.htm#ref_210_25">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_130_25" HREF="terminal_interface-curses-menus__ads.htm#ref_211_25">Value</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_155_16">Set_Item_Val</A></span> (<span class="symbol"><A NAME="ref_155_30" HREF="terminal_interface-curses-menus__adb.htm#ref_155_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_156_30" HREF="terminal_interface-curses-menus__adb.htm#ref_155_16">Val</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_132_16">Set_Item_Val</A></span> (<span class="symbol"><A NAME="ref_132_30" HREF="terminal_interface-curses-menus__adb.htm#ref_132_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_133_30" HREF="terminal_interface-curses-menus__adb.htm#ref_132_16">Val</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Item_Val, "set_item_value");
- <span class="symbol"><A NAME="ref_159_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_155_16">Set_Item_Val</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_214_25">Itm</A>, Boolean'Pos (<A HREF="terminal_interface-curses-menus__ads.htm#ref_215_25">Value</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_159_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_159_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_214_14">Set_Value</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_132_16">Set_Item_Val</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_210_25">Itm</A>, Boolean'Pos (<A HREF="terminal_interface-curses-menus__ads.htm#ref_211_25">Value</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_210_14">Set_Value</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_166_13" HREF="terminal_interface-curses-menus__ads.htm#ref_220_13">Value</A></span> (<span class="symbol"><A NAME="ref_166_20" HREF="terminal_interface-curses-menus__ads.htm#ref_220_20">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_140_13" HREF="terminal_interface-curses-menus__ads.htm#ref_216_13">Value</A></span> (<span class="symbol"><A NAME="ref_140_20" HREF="terminal_interface-curses-menus__ads.htm#ref_216_20">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_168_16">Item_Val</A></span> (<span class="symbol"><A NAME="ref_168_26" HREF="terminal_interface-curses-menus__adb.htm#ref_168_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_142_16">Item_Val</A></span> (<span class="symbol"><A NAME="ref_142_26" HREF="terminal_interface-curses-menus__adb.htm#ref_142_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Item_Val, "item_value");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_168_16">Item_Val</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_220_20">Itm</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">Curses_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_142_16">Item_Val</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_216_20">Itm</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_66_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> <A HREF="terminal_interface-curses-menus__ads.htm#ref_220_13">Value</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_216_13">Value</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_179_13" HREF="terminal_interface-curses-menus__ads.htm#ref_229_13">Visible</A></span> (<span class="symbol"><A NAME="ref_179_22" HREF="terminal_interface-curses-menus__ads.htm#ref_229_22">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_153_13" HREF="terminal_interface-curses-menus__ads.htm#ref_225_13">Visible</A></span> (<span class="symbol"><A NAME="ref_153_22" HREF="terminal_interface-curses-menus__ads.htm#ref_225_22">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_181_16">Item_Vis</A></span> (<span class="symbol"><A NAME="ref_181_26" HREF="terminal_interface-curses-menus__adb.htm#ref_181_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_155_16">Item_Vis</A></span> (<span class="symbol"><A NAME="ref_155_26" HREF="terminal_interface-curses-menus__adb.htm#ref_155_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Item_Vis, "item_visible");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_181_16">Item_Vis</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_229_22">Itm</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">Curses_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_155_16">Item_Vis</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_225_22">Itm</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_66_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> <A HREF="terminal_interface-curses-menus__ads.htm#ref_229_13">Visible</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_225_13">Visible</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_191_14" HREF="terminal_interface-curses-menus__ads.htm#ref_238_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_191_27" HREF="terminal_interface-curses-menus__ads.htm#ref_238_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_192_27" HREF="terminal_interface-curses-menus__ads.htm#ref_239_27">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_165_14" HREF="terminal_interface-curses-menus__ads.htm#ref_234_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_165_27" HREF="terminal_interface-curses-menus__ads.htm#ref_234_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_166_27" HREF="terminal_interface-curses-menus__ads.htm#ref_235_27">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_194_16">Set_Item_Opts</A></span> (<span class="symbol"><A NAME="ref_194_31" HREF="terminal_interface-curses-menus__adb.htm#ref_194_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_195_31" HREF="terminal_interface-curses-menus__adb.htm#ref_194_16">Opt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_168_16">Set_Item_Opts</A></span> (<span class="symbol"><A NAME="ref_168_31" HREF="terminal_interface-curses-menus__adb.htm#ref_168_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_169_31" HREF="terminal_interface-curses-menus__adb.htm#ref_168_16">Opt</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Item_Opts, "set_item_opts");
- <span class="symbol"><A NAME="ref_198_7">Opt</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := IOS_2_CInt (<A HREF="terminal_interface-curses-menus__ads.htm#ref_239_27">Options</A>);
- <span class="symbol"><A NAME="ref_199_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_199_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_194_16">Set_Item_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_238_27">Itm</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_198_7">Opt</A>);
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_199_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_199_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_238_14">Set_Options</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_168_16">Set_Item_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_234_27">Itm</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_235_27">Options</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_234_14">Set_Options</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_207_14" HREF="terminal_interface-curses-menus__ads.htm#ref_244_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_207_30" HREF="terminal_interface-curses-menus__ads.htm#ref_244_30">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_208_30" HREF="terminal_interface-curses-menus__ads.htm#ref_245_30">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A>;
- <span class="symbol"><A NAME="ref_209_30" HREF="terminal_interface-curses-menus__ads.htm#ref_246_30">On</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_176_14" HREF="terminal_interface-curses-menus__ads.htm#ref_240_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_176_30" HREF="terminal_interface-curses-menus__ads.htm#ref_240_30">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_177_30" HREF="terminal_interface-curses-menus__ads.htm#ref_241_30">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>;
+ <span class="symbol"><A NAME="ref_178_30" HREF="terminal_interface-curses-menus__ads.htm#ref_242_30">On</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_211_16">Item_Opts_On</A></span> (<span class="symbol"><A NAME="ref_211_30" HREF="terminal_interface-curses-menus__adb.htm#ref_211_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_212_30" HREF="terminal_interface-curses-menus__adb.htm#ref_211_16">Opt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_180_16">Item_Opts_On</A></span> (<span class="symbol"><A NAME="ref_180_30" HREF="terminal_interface-curses-menus__adb.htm#ref_180_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_181_30" HREF="terminal_interface-curses-menus__adb.htm#ref_180_16">Opt</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Item_Opts_On, "item_opts_on");
- <b>function</b> <span class="symbol"><A NAME="ref_214_16">Item_Opts_Off</A></span> (<span class="symbol"><A NAME="ref_214_31" HREF="terminal_interface-curses-menus__adb.htm#ref_214_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_215_31" HREF="terminal_interface-curses-menus__adb.htm#ref_214_16">Opt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_183_16">Item_Opts_Off</A></span> (<span class="symbol"><A NAME="ref_183_31" HREF="terminal_interface-curses-menus__adb.htm#ref_183_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_184_31" HREF="terminal_interface-curses-menus__adb.htm#ref_183_16">Opt</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Item_Opts_Off, "item_opts_off");
- <span class="symbol"><A NAME="ref_218_7">Opt</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := IOS_2_CInt (<A HREF="terminal_interface-curses-menus__ads.htm#ref_245_30">Options</A>);
- <span class="symbol"><A NAME="ref_219_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_246_30">On</A> <b>then</b>
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_219_7">Err</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_211_16">Item_Opts_On</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_244_30">Itm</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_218_7">Opt</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_242_30">On</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_180_16">Item_Opts_On</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_240_30">Itm</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_241_30">Options</A>));
<b>else</b>
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_219_7">Err</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_214_16">Item_Opts_Off</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_244_30">Itm</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_218_7">Opt</A>);
- <b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_219_7">Err</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_219_7">Err</A>);
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_183_16">Item_Opts_Off</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_240_30">Itm</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_241_30">Options</A>));
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_244_14">Switch_Options</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_240_14">Switch_Options</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_231_14" HREF="terminal_interface-curses-menus__ads.htm#ref_253_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_231_27" HREF="terminal_interface-curses-menus__ads.htm#ref_253_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_232_27" HREF="terminal_interface-curses-menus__ads.htm#ref_254_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_195_14" HREF="terminal_interface-curses-menus__ads.htm#ref_249_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_195_27" HREF="terminal_interface-curses-menus__ads.htm#ref_249_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_196_27" HREF="terminal_interface-curses-menus__ads.htm#ref_250_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_234_16">Item_Opts</A></span> (<span class="symbol"><A NAME="ref_234_27" HREF="terminal_interface-curses-menus__adb.htm#ref_234_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_198_16">Item_Opts</A></span> (<span class="symbol"><A NAME="ref_198_27" HREF="terminal_interface-curses-menus__adb.htm#ref_198_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>;
<b>pragma</b> Import (C, Item_Opts, "item_opts");
- <span class="symbol"><A NAME="ref_237_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_234_16">Item_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_253_27">Itm</A>);
<b>begin</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_254_27">Options</A> := CInt_2_IOS (<A HREF="terminal_interface-curses-menus__adb.htm#ref_237_7">Res</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_253_14">Get_Options</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_250_27">Options</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_198_16">Item_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_249_27">Itm</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_249_14">Get_Options</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_242_13" HREF="terminal_interface-curses-menus__ads.htm#ref_258_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_242_26" HREF="terminal_interface-curses-menus__ads.htm#ref_258_26">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_62_4">Null_Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_205_13" HREF="terminal_interface-curses-menus__ads.htm#ref_254_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_205_26" HREF="terminal_interface-curses-menus__ads.htm#ref_254_26">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_4">Null_Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_244_7">Ios</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A>;
+ <span class="symbol"><A NAME="ref_207_7">Ios</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_253_14">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_258_26">Itm</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_244_7">Ios</A>);
- <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_244_7">Ios</A>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_258_13">Get_Options</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_249_14">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_254_26">Itm</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_207_7">Ios</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_207_7">Ios</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_254_13">Get_Options</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_250_14" HREF="terminal_interface-curses-menus__ads.htm#ref_267_14">Name</A></span> (<span class="symbol"><A NAME="ref_250_20" HREF="terminal_interface-curses-menus__ads.htm#ref_267_20">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_251_20" HREF="terminal_interface-curses-menus__ads.htm#ref_268_20">Name</A></span> : <b>out</b> String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_213_14" HREF="terminal_interface-curses-menus__ads.htm#ref_263_14">Name</A></span> (<span class="symbol"><A NAME="ref_213_20" HREF="terminal_interface-curses-menus__ads.htm#ref_263_20">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_214_20" HREF="terminal_interface-curses-menus__ads.htm#ref_264_20">Name</A></span> : <b>out</b> String)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_253_16">Itemname</A></span> (<span class="symbol"><A NAME="ref_253_26" HREF="terminal_interface-curses-menus__adb.htm#ref_253_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_58_12">chars_ptr</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_216_16">Itemname</A></span> (<span class="symbol"><A NAME="ref_216_26" HREF="terminal_interface-curses-menus__adb.htm#ref_216_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_55_12">chars_ptr</A>;
<b>pragma</b> Import (C, Itemname, "item_name");
<b>begin</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_116_14">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_253_16">Itemname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_267_20">Itm</A>), <A HREF="terminal_interface-curses-menus__ads.htm#ref_268_20">Name</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_267_14">Name</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_14">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_216_16">Itemname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_263_20">Itm</A>), <A HREF="terminal_interface-curses-menus__ads.htm#ref_264_20">Name</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_263_14">Name</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_259_13" HREF="terminal_interface-curses-menus__ads.htm#ref_270_14">Name</A></span> (<span class="symbol"><A NAME="ref_259_19" HREF="terminal_interface-curses-menus__ads.htm#ref_270_20">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> String
+ <b>function</b> <span class="symbol"><A NAME="ref_222_13" HREF="terminal_interface-curses-menus__ads.htm#ref_266_14">Name</A></span> (<span class="symbol"><A NAME="ref_222_19" HREF="terminal_interface-curses-menus__ads.htm#ref_266_20">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> String
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_261_16">Itemname</A></span> (<span class="symbol"><A NAME="ref_261_26" HREF="terminal_interface-curses-menus__adb.htm#ref_261_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_58_12">chars_ptr</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_224_16">Itemname</A></span> (<span class="symbol"><A NAME="ref_224_26" HREF="terminal_interface-curses-menus__adb.htm#ref_224_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_55_12">chars_ptr</A>;
<b>pragma</b> Import (C, Itemname, "item_name");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_261_16">Itemname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_270_20">Itm</A>));
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_270_14">Name</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_224_16">Itemname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_266_20">Itm</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_266_14">Name</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_267_14" HREF="terminal_interface-curses-menus__ads.htm#ref_276_14">Description</A></span> (<span class="symbol"><A NAME="ref_267_27" HREF="terminal_interface-curses-menus__ads.htm#ref_276_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_268_27" HREF="terminal_interface-curses-menus__ads.htm#ref_277_27">Description</A></span> : <b>out</b> String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_230_14" HREF="terminal_interface-curses-menus__ads.htm#ref_272_14">Description</A></span> (<span class="symbol"><A NAME="ref_230_27" HREF="terminal_interface-curses-menus__ads.htm#ref_272_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_231_27" HREF="terminal_interface-curses-menus__ads.htm#ref_273_27">Description</A></span> : <b>out</b> String)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_270_16">Descname</A></span> (<span class="symbol"><A NAME="ref_270_26" HREF="terminal_interface-curses-menus__adb.htm#ref_270_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_58_12">chars_ptr</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_233_16">Descname</A></span> (<span class="symbol"><A NAME="ref_233_26" HREF="terminal_interface-curses-menus__adb.htm#ref_233_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_55_12">chars_ptr</A>;
<b>pragma</b> Import (C, Descname, "item_description");
<b>begin</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_116_14">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_270_16">Descname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_276_27">Itm</A>), <A HREF="terminal_interface-curses-menus__ads.htm#ref_277_27">Description</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_276_14">Description</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_14">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_233_16">Descname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_272_27">Itm</A>), <A HREF="terminal_interface-curses-menus__ads.htm#ref_273_27">Description</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_272_14">Description</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_276_13" HREF="terminal_interface-curses-menus__ads.htm#ref_280_14">Description</A></span> (<span class="symbol"><A NAME="ref_276_26" HREF="terminal_interface-curses-menus__ads.htm#ref_280_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> String
+ <b>function</b> <span class="symbol"><A NAME="ref_239_13" HREF="terminal_interface-curses-menus__ads.htm#ref_276_14">Description</A></span> (<span class="symbol"><A NAME="ref_239_26" HREF="terminal_interface-curses-menus__ads.htm#ref_276_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> String
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_278_16">Descname</A></span> (<span class="symbol"><A NAME="ref_278_26" HREF="terminal_interface-curses-menus__adb.htm#ref_278_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_58_12">chars_ptr</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_241_16">Descname</A></span> (<span class="symbol"><A NAME="ref_241_26" HREF="terminal_interface-curses-menus__adb.htm#ref_241_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_55_12">chars_ptr</A>;
<b>pragma</b> Import (C, Descname, "item_description");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_278_16">Descname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_280_27">Itm</A>));
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_280_14">Description</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_241_16">Descname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_276_27">Itm</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_276_14">Description</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_284_14" HREF="terminal_interface-curses-menus__ads.htm#ref_290_14">Set_Current</A></span> (<span class="symbol"><A NAME="ref_284_27" HREF="terminal_interface-curses-menus__ads.htm#ref_290_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_285_27" HREF="terminal_interface-curses-menus__ads.htm#ref_291_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_247_14" HREF="terminal_interface-curses-menus__ads.htm#ref_286_14">Set_Current</A></span> (<span class="symbol"><A NAME="ref_247_27" HREF="terminal_interface-curses-menus__ads.htm#ref_286_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_248_27" HREF="terminal_interface-curses-menus__ads.htm#ref_287_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_287_16">Set_Curr_Item</A></span> (<span class="symbol"><A NAME="ref_287_31" HREF="terminal_interface-curses-menus__adb.htm#ref_287_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_288_31" HREF="terminal_interface-curses-menus__adb.htm#ref_287_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_250_16">Set_Curr_Item</A></span> (<span class="symbol"><A NAME="ref_250_31" HREF="terminal_interface-curses-menus__adb.htm#ref_250_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_251_31" HREF="terminal_interface-curses-menus__adb.htm#ref_250_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Curr_Item, "set_current_item");
- <span class="symbol"><A NAME="ref_291_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_287_16">Set_Curr_Item</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_290_27">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_291_27">Itm</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_291_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_291_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_290_14">Set_Current</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_250_16">Set_Curr_Item</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_286_27">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_287_27">Itm</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_286_14">Set_Current</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_298_13" HREF="terminal_interface-curses-menus__ads.htm#ref_296_13">Current</A></span> (<span class="symbol"><A NAME="ref_298_22" HREF="terminal_interface-curses-menus__ads.htm#ref_296_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_258_13" HREF="terminal_interface-curses-menus__ads.htm#ref_292_13">Current</A></span> (<span class="symbol"><A NAME="ref_258_22" HREF="terminal_interface-curses-menus__ads.htm#ref_292_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_300_16">Curr_Item</A></span> (<span class="symbol"><A NAME="ref_300_27" HREF="terminal_interface-curses-menus__adb.htm#ref_300_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_260_16">Curr_Item</A></span> (<span class="symbol"><A NAME="ref_260_27" HREF="terminal_interface-curses-menus__adb.htm#ref_260_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
<b>pragma</b> Import (C, Curr_Item, "current_item");
- <span class="symbol"><A NAME="ref_303_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_300_16">Curr_Item</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_296_22">Men</A>);
+ <span class="symbol"><A NAME="ref_263_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_260_16">Curr_Item</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_292_22">Men</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_303_7">Res</A> = <A HREF="terminal_interface-curses-menus__ads.htm#ref_62_4">Null_Item</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_4">Menu_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_263_7">Res</A> = <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_4">Null_Item</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_111_4">Menu_Exception</A>;
<b>end</b> <b>if</b>;
- <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_303_7">Res</A>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_296_13">Current</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_263_7">Res</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_292_13">Current</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_311_14" HREF="terminal_interface-curses-menus__ads.htm#ref_301_14">Set_Top_Row</A></span> (<span class="symbol"><A NAME="ref_311_27" HREF="terminal_interface-curses-menus__ads.htm#ref_301_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_312_27" HREF="terminal_interface-curses-menus__ads.htm#ref_302_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_271_14" HREF="terminal_interface-curses-menus__ads.htm#ref_297_14">Set_Top_Row</A></span> (<span class="symbol"><A NAME="ref_271_27" HREF="terminal_interface-curses-menus__ads.htm#ref_297_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_272_27" HREF="terminal_interface-curses-menus__ads.htm#ref_298_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_314_16">Set_Toprow</A></span> (<span class="symbol"><A NAME="ref_314_28" HREF="terminal_interface-curses-menus__adb.htm#ref_314_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_315_28" HREF="terminal_interface-curses-menus__adb.htm#ref_314_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_274_16">Set_Toprow</A></span> (<span class="symbol"><A NAME="ref_274_28" HREF="terminal_interface-curses-menus__adb.htm#ref_274_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_275_28" HREF="terminal_interface-curses-menus__adb.htm#ref_274_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Toprow, "set_top_row");
- <span class="symbol"><A NAME="ref_318_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_314_16">Set_Toprow</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_301_27">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_302_27">Line</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_318_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_318_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_301_14">Set_Top_Row</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_274_16">Set_Toprow</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_297_27">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_298_27">Line</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_297_14">Set_Top_Row</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_325_13" HREF="terminal_interface-curses-menus__ads.htm#ref_307_13">Top_Row</A></span> (<span class="symbol"><A NAME="ref_325_22" HREF="terminal_interface-curses-menus__ads.htm#ref_307_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_282_13" HREF="terminal_interface-curses-menus__ads.htm#ref_303_13">Top_Row</A></span> (<span class="symbol"><A NAME="ref_282_22" HREF="terminal_interface-curses-menus__ads.htm#ref_303_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_327_16">Toprow</A></span> (<span class="symbol"><A NAME="ref_327_24" HREF="terminal_interface-curses-menus__adb.htm#ref_327_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_284_16">Toprow</A></span> (<span class="symbol"><A NAME="ref_284_24" HREF="terminal_interface-curses-menus__adb.htm#ref_284_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Toprow, "top_row");
- <span class="symbol"><A NAME="ref_330_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_327_16">Toprow</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_307_22">Men</A>);
+ <span class="symbol"><A NAME="ref_287_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_284_16">Toprow</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_303_22">Men</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_330_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_4">Menu_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_287_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_111_4">Menu_Exception</A>;
<b>end</b> <b>if</b>;
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_330_7">Res</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_307_13">Top_Row</A>;
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_287_7">Res</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_303_13">Top_Row</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_338_13" HREF="terminal_interface-curses-menus__ads.htm#ref_312_13">Get_Index</A></span> (<span class="symbol"><A NAME="ref_338_24" HREF="terminal_interface-curses-menus__ads.htm#ref_312_24">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> Positive
+ <b>function</b> <span class="symbol"><A NAME="ref_295_13" HREF="terminal_interface-curses-menus__ads.htm#ref_308_13">Get_Index</A></span> (<span class="symbol"><A NAME="ref_295_24" HREF="terminal_interface-curses-menus__ads.htm#ref_308_24">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> Positive
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_340_16">Get_Itemindex</A></span> (<span class="symbol"><A NAME="ref_340_31" HREF="terminal_interface-curses-menus__adb.htm#ref_340_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_297_16">Get_Itemindex</A></span> (<span class="symbol"><A NAME="ref_297_31" HREF="terminal_interface-curses-menus__adb.htm#ref_297_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Get_Itemindex, "item_index");
- <span class="symbol"><A NAME="ref_343_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_340_16">Get_Itemindex</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_312_24">Itm</A>);
+ <span class="symbol"><A NAME="ref_300_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_297_16">Get_Itemindex</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_308_24">Itm</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_343_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_4">Menu_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_300_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_111_4">Menu_Exception</A>;
<b>end</b> <b>if</b>;
- <b>return</b> Positive (Natural (<A HREF="terminal_interface-curses-menus__adb.htm#ref_343_7">Res</A>) + Positive'First);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_312_13">Get_Index</A>;
+ <b>return</b> Positive (Natural (<A HREF="terminal_interface-curses-menus__adb.htm#ref_300_7">Res</A>) + Positive'First);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_308_13">Get_Index</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_351_14" HREF="terminal_interface-curses-menus__ads.htm#ref_324_14">Post</A></span> (<span class="symbol"><A NAME="ref_351_20" HREF="terminal_interface-curses-menus__ads.htm#ref_324_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_352_20" HREF="terminal_interface-curses-menus__ads.htm#ref_325_20">Post</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_308_14" HREF="terminal_interface-curses-menus__ads.htm#ref_320_14">Post</A></span> (<span class="symbol"><A NAME="ref_308_20" HREF="terminal_interface-curses-menus__ads.htm#ref_320_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_309_20" HREF="terminal_interface-curses-menus__ads.htm#ref_321_20">Post</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_354_16">M_Post</A></span> (<span class="symbol"><A NAME="ref_354_24" HREF="terminal_interface-curses-menus__adb.htm#ref_354_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_311_16">M_Post</A></span> (<span class="symbol"><A NAME="ref_311_24" HREF="terminal_interface-curses-menus__adb.htm#ref_311_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, M_Post, "post_menu");
- <b>function</b> <span class="symbol"><A NAME="ref_356_16">M_Unpost</A></span> (<span class="symbol"><A NAME="ref_356_26" HREF="terminal_interface-curses-menus__adb.htm#ref_356_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_313_16">M_Unpost</A></span> (<span class="symbol"><A NAME="ref_313_26" HREF="terminal_interface-curses-menus__adb.htm#ref_313_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, M_Unpost, "unpost_menu");
- <span class="symbol"><A NAME="ref_359_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_325_20">Post</A> <b>then</b>
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_359_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_354_16">M_Post</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_324_20">Men</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_321_20">Post</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_311_16">M_Post</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_320_20">Men</A>));
<b>else</b>
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_359_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_356_16">M_Unpost</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_324_20">Men</A>);
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_313_16">M_Unpost</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_320_20">Men</A>));
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_359_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_359_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_324_14">Post</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_320_14">Post</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_371_14" HREF="terminal_interface-curses-menus__ads.htm#ref_335_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_371_27" HREF="terminal_interface-curses-menus__ads.htm#ref_335_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_372_27" HREF="terminal_interface-curses-menus__ads.htm#ref_336_27">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_324_14" HREF="terminal_interface-curses-menus__ads.htm#ref_331_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_324_27" HREF="terminal_interface-curses-menus__ads.htm#ref_331_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_325_27" HREF="terminal_interface-curses-menus__ads.htm#ref_332_27">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_374_16">Set_Menu_Opts</A></span> (<span class="symbol"><A NAME="ref_374_31" HREF="terminal_interface-curses-menus__adb.htm#ref_374_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_375_31" HREF="terminal_interface-curses-menus__adb.htm#ref_374_16">Opt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_327_16">Set_Menu_Opts</A></span> (<span class="symbol"><A NAME="ref_327_31" HREF="terminal_interface-curses-menus__adb.htm#ref_327_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_328_31" HREF="terminal_interface-curses-menus__adb.htm#ref_327_16">Opt</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Menu_Opts, "set_menu_opts");
- <span class="symbol"><A NAME="ref_378_7">Opt</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := MOS_2_CInt (<A HREF="terminal_interface-curses-menus__ads.htm#ref_336_27">Options</A>);
- <span class="symbol"><A NAME="ref_379_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_379_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_374_16">Set_Menu_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_335_27">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_378_7">Opt</A>);
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_379_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_379_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_335_14">Set_Options</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_327_16">Set_Menu_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_331_27">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_332_27">Options</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_331_14">Set_Options</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_387_14" HREF="terminal_interface-curses-menus__ads.htm#ref_341_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_387_30" HREF="terminal_interface-curses-menus__ads.htm#ref_341_30">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_388_30" HREF="terminal_interface-curses-menus__ads.htm#ref_342_30">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A>;
- <span class="symbol"><A NAME="ref_389_30" HREF="terminal_interface-curses-menus__ads.htm#ref_343_30">On</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_335_14" HREF="terminal_interface-curses-menus__ads.htm#ref_337_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_335_30" HREF="terminal_interface-curses-menus__ads.htm#ref_337_30">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_336_30" HREF="terminal_interface-curses-menus__ads.htm#ref_338_30">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>;
+ <span class="symbol"><A NAME="ref_337_30" HREF="terminal_interface-curses-menus__ads.htm#ref_339_30">On</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_391_16">Menu_Opts_On</A></span> (<span class="symbol"><A NAME="ref_391_30" HREF="terminal_interface-curses-menus__adb.htm#ref_391_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_392_30" HREF="terminal_interface-curses-menus__adb.htm#ref_391_16">Opt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_339_16">Menu_Opts_On</A></span> (<span class="symbol"><A NAME="ref_339_30" HREF="terminal_interface-curses-menus__adb.htm#ref_339_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_340_30" HREF="terminal_interface-curses-menus__adb.htm#ref_339_16">Opt</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Menu_Opts_On, "menu_opts_on");
- <b>function</b> <span class="symbol"><A NAME="ref_394_16">Menu_Opts_Off</A></span> (<span class="symbol"><A NAME="ref_394_31" HREF="terminal_interface-curses-menus__adb.htm#ref_394_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_395_31" HREF="terminal_interface-curses-menus__adb.htm#ref_394_16">Opt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_342_16">Menu_Opts_Off</A></span> (<span class="symbol"><A NAME="ref_342_31" HREF="terminal_interface-curses-menus__adb.htm#ref_342_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_343_31" HREF="terminal_interface-curses-menus__adb.htm#ref_342_16">Opt</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Menu_Opts_Off, "menu_opts_off");
- <span class="symbol"><A NAME="ref_398_7">Opt</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := MOS_2_CInt (<A HREF="terminal_interface-curses-menus__ads.htm#ref_342_30">Options</A>);
- <span class="symbol"><A NAME="ref_399_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_343_30">On</A> <b>then</b>
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_399_7">Err</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_391_16">Menu_Opts_On</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_341_30">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_398_7">Opt</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_339_30">On</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_339_16">Menu_Opts_On</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_337_30">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_338_30">Options</A>));
<b>else</b>
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_399_7">Err</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_394_16">Menu_Opts_Off</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_341_30">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_398_7">Opt</A>);
- <b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_399_7">Err</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_399_7">Err</A>);
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_342_16">Menu_Opts_Off</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_337_30">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_338_30">Options</A>));
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_341_14">Switch_Options</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_337_14">Switch_Options</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_411_14" HREF="terminal_interface-curses-menus__ads.htm#ref_349_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_411_27" HREF="terminal_interface-curses-menus__ads.htm#ref_349_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_412_27" HREF="terminal_interface-curses-menus__ads.htm#ref_350_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_354_14" HREF="terminal_interface-curses-menus__ads.htm#ref_345_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_354_27" HREF="terminal_interface-curses-menus__ads.htm#ref_345_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_355_27" HREF="terminal_interface-curses-menus__ads.htm#ref_346_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_414_16">Menu_Opts</A></span> (<span class="symbol"><A NAME="ref_414_27" HREF="terminal_interface-curses-menus__adb.htm#ref_414_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_357_16">Menu_Opts</A></span> (<span class="symbol"><A NAME="ref_357_27" HREF="terminal_interface-curses-menus__adb.htm#ref_357_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>;
<b>pragma</b> Import (C, Menu_Opts, "menu_opts");
- <span class="symbol"><A NAME="ref_417_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_414_16">Menu_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_349_27">Men</A>);
<b>begin</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_350_27">Options</A> := CInt_2_MOS (<A HREF="terminal_interface-curses-menus__adb.htm#ref_417_7">Res</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_349_14">Get_Options</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_346_27">Options</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_357_16">Menu_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_345_27">Men</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_345_14">Get_Options</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_422_13" HREF="terminal_interface-curses-menus__ads.htm#ref_354_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_422_26" HREF="terminal_interface-curses-menus__ads.htm#ref_354_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_63_4">Null_Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_364_13" HREF="terminal_interface-curses-menus__ads.htm#ref_350_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_364_26" HREF="terminal_interface-curses-menus__ads.htm#ref_350_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_424_7">Mos</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A>;
+ <span class="symbol"><A NAME="ref_366_7">Mos</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_349_14">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_354_26">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_424_7">Mos</A>);
- <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_424_7">Mos</A>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_354_13">Get_Options</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_345_14">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_350_26">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_366_7">Mos</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_366_7">Mos</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_350_13">Get_Options</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_430_14" HREF="terminal_interface-curses-menus__ads.htm#ref_363_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_430_26" HREF="terminal_interface-curses-menus__ads.htm#ref_363_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_431_26" HREF="terminal_interface-curses-menus__ads.htm#ref_364_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_372_14" HREF="terminal_interface-curses-menus__ads.htm#ref_359_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_372_26" HREF="terminal_interface-curses-menus__ads.htm#ref_359_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_373_26" HREF="terminal_interface-curses-menus__ads.htm#ref_360_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_433_16">Set_Menu_Win</A></span> (<span class="symbol"><A NAME="ref_433_30" HREF="terminal_interface-curses-menus__adb.htm#ref_433_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_434_30" HREF="terminal_interface-curses-menus__adb.htm#ref_433_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_375_16">Set_Menu_Win</A></span> (<span class="symbol"><A NAME="ref_375_30" HREF="terminal_interface-curses-menus__adb.htm#ref_375_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_376_30" HREF="terminal_interface-curses-menus__adb.htm#ref_375_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Menu_Win, "set_menu_win");
- <span class="symbol"><A NAME="ref_437_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_433_16">Set_Menu_Win</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_363_26">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_364_26">Win</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_437_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_437_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_363_14">Set_Window</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_375_16">Set_Menu_Win</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_359_26">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_360_26">Win</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_359_14">Set_Window</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_444_13" HREF="terminal_interface-curses-menus__ads.htm#ref_369_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_444_25" HREF="terminal_interface-curses-menus__ads.htm#ref_369_25">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_383_13" HREF="terminal_interface-curses-menus__ads.htm#ref_365_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_383_25" HREF="terminal_interface-curses-menus__ads.htm#ref_365_25">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_446_16">Menu_Win</A></span> (<span class="symbol"><A NAME="ref_446_26" HREF="terminal_interface-curses-menus__adb.htm#ref_446_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_385_16">Menu_Win</A></span> (<span class="symbol"><A NAME="ref_385_26" HREF="terminal_interface-curses-menus__adb.htm#ref_385_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>pragma</b> Import (C, Menu_Win, "menu_win");
- <span class="symbol"><A NAME="ref_449_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_446_16">Menu_Win</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_369_25">Men</A>);
+ <span class="symbol"><A NAME="ref_388_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_385_16">Menu_Win</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_365_25">Men</A>);
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_449_7">W</A>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_369_13">Get_Window</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_388_7">W</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_365_13">Get_Window</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_454_14" HREF="terminal_interface-curses-menus__ads.htm#ref_374_14">Set_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_454_30" HREF="terminal_interface-curses-menus__ads.htm#ref_374_30">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_455_30" HREF="terminal_interface-curses-menus__ads.htm#ref_375_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_393_14" HREF="terminal_interface-curses-menus__ads.htm#ref_370_14">Set_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_393_30" HREF="terminal_interface-curses-menus__ads.htm#ref_370_30">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_394_30" HREF="terminal_interface-curses-menus__ads.htm#ref_371_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_457_16">Set_Menu_Sub</A></span> (<span class="symbol"><A NAME="ref_457_30" HREF="terminal_interface-curses-menus__adb.htm#ref_457_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_458_30" HREF="terminal_interface-curses-menus__adb.htm#ref_457_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_396_16">Set_Menu_Sub</A></span> (<span class="symbol"><A NAME="ref_396_30" HREF="terminal_interface-curses-menus__adb.htm#ref_396_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_397_30" HREF="terminal_interface-curses-menus__adb.htm#ref_396_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Menu_Sub, "set_menu_sub");
- <span class="symbol"><A NAME="ref_461_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_457_16">Set_Menu_Sub</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_374_30">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_375_30">Win</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_461_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_461_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_374_14">Set_Sub_Window</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_396_16">Set_Menu_Sub</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_370_30">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_371_30">Win</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_370_14">Set_Sub_Window</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_468_13" HREF="terminal_interface-curses-menus__ads.htm#ref_380_13">Get_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_468_29" HREF="terminal_interface-curses-menus__ads.htm#ref_380_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_404_13" HREF="terminal_interface-curses-menus__ads.htm#ref_376_13">Get_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_404_29" HREF="terminal_interface-curses-menus__ads.htm#ref_376_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_470_16">Menu_Sub</A></span> (<span class="symbol"><A NAME="ref_470_26" HREF="terminal_interface-curses-menus__adb.htm#ref_470_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_406_16">Menu_Sub</A></span> (<span class="symbol"><A NAME="ref_406_26" HREF="terminal_interface-curses-menus__adb.htm#ref_406_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>pragma</b> Import (C, Menu_Sub, "menu_sub");
- <span class="symbol"><A NAME="ref_473_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_470_16">Menu_Sub</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_380_29">Men</A>);
+ <span class="symbol"><A NAME="ref_409_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_406_16">Menu_Sub</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_376_29">Men</A>);
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_473_7">W</A>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_380_13">Get_Sub_Window</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_409_7">W</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_376_13">Get_Sub_Window</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_478_14" HREF="terminal_interface-curses-menus__ads.htm#ref_385_14">Scale</A></span> (<span class="symbol"><A NAME="ref_478_21" HREF="terminal_interface-curses-menus__ads.htm#ref_385_21">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_479_21" HREF="terminal_interface-curses-menus__ads.htm#ref_386_21">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_480_21" HREF="terminal_interface-curses-menus__ads.htm#ref_387_21">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_414_14" HREF="terminal_interface-curses-menus__ads.htm#ref_381_14">Scale</A></span> (<span class="symbol"><A NAME="ref_414_21" HREF="terminal_interface-curses-menus__ads.htm#ref_381_21">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_415_21" HREF="terminal_interface-curses-menus__ads.htm#ref_382_21">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_416_21" HREF="terminal_interface-curses-menus__ads.htm#ref_383_21">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>)
<b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_482_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_483_16">M_Scale</A></span> (<span class="symbol"><A NAME="ref_483_25" HREF="terminal_interface-curses-menus__adb.htm#ref_483_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_484_25" HREF="terminal_interface-curses-menus__adb.htm#ref_483_16">Yp</A></span>, <span class="symbol"><A NAME="ref_484_29" HREF="terminal_interface-curses-menus__adb.htm#ref_483_16">Xp</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_482_12">C_Int_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>type</b> <span class="symbol"><A NAME="ref_418_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_419_16">M_Scale</A></span> (<span class="symbol"><A NAME="ref_419_25" HREF="terminal_interface-curses-menus__adb.htm#ref_419_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_420_25" HREF="terminal_interface-curses-menus__adb.htm#ref_419_16">Yp</A></span>, <span class="symbol"><A NAME="ref_420_29" HREF="terminal_interface-curses-menus__adb.htm#ref_419_16">Xp</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_418_12">C_Int_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, M_Scale, "scale_menu");
- <span class="symbol"><A NAME="ref_487_7">X</A></span>, <span class="symbol"><A NAME="ref_487_10">Y</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_488_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_483_16">M_Scale</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_385_21">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_487_10">Y</A>'<b>Access</b>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_487_7">X</A>'<b>Access</b>);
+ <span class="symbol"><A NAME="ref_423_7">X</A></span>, <span class="symbol"><A NAME="ref_423_10">Y</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_488_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_488_7">Res</A>);
- <b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_386_21">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_487_10">Y</A>);
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_387_21">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_487_7">X</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_385_14">Scale</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_419_16">M_Scale</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_381_21">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_423_10">Y</A>'<b>Access</b>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_423_7">X</A>'<b>Access</b>));
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_382_21">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_423_10">Y</A>);
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_383_21">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_423_7">X</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_381_14">Scale</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_497_14" HREF="terminal_interface-curses-menus__ads.htm#ref_396_14">Position_Cursor</A></span> (<span class="symbol"><A NAME="ref_497_31" HREF="terminal_interface-curses-menus__ads.htm#ref_396_31">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_430_14" HREF="terminal_interface-curses-menus__ads.htm#ref_392_14">Position_Cursor</A></span> (<span class="symbol"><A NAME="ref_430_31" HREF="terminal_interface-curses-menus__ads.htm#ref_392_31">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_499_16">Pos_Menu_Cursor</A></span> (<span class="symbol"><A NAME="ref_499_33" HREF="terminal_interface-curses-menus__adb.htm#ref_499_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_432_16">Pos_Menu_Cursor</A></span> (<span class="symbol"><A NAME="ref_432_33" HREF="terminal_interface-curses-menus__adb.htm#ref_432_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Pos_Menu_Cursor, "pos_menu_cursor");
- <span class="symbol"><A NAME="ref_502_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_499_16">Pos_Menu_Cursor</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_396_31">Men</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_502_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_502_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_396_14">Position_Cursor</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_432_16">Pos_Menu_Cursor</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_392_31">Men</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_392_14">Position_Cursor</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_510_14" HREF="terminal_interface-curses-menus__ads.htm#ref_405_14">Set_Mark</A></span> (<span class="symbol"><A NAME="ref_510_24" HREF="terminal_interface-curses-menus__ads.htm#ref_405_24">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_511_24" HREF="terminal_interface-curses-menus__ads.htm#ref_406_24">Mark</A></span> : String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_440_14" HREF="terminal_interface-curses-menus__ads.htm#ref_401_14">Set_Mark</A></span> (<span class="symbol"><A NAME="ref_440_24" HREF="terminal_interface-curses-menus__ads.htm#ref_401_24">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_441_24" HREF="terminal_interface-curses-menus__ads.htm#ref_402_24">Mark</A></span> : String)
<b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_513_12">Char_Ptr</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.char;
- <b>function</b> <span class="symbol"><A NAME="ref_514_16">Set_Mark</A></span> (<span class="symbol"><A NAME="ref_514_26" HREF="terminal_interface-curses-menus__adb.htm#ref_514_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_515_26" HREF="terminal_interface-curses-menus__adb.htm#ref_514_16">Mark</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_513_12">Char_Ptr</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>type</b> <span class="symbol"><A NAME="ref_443_12">Char_Ptr</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.char;
+ <b>function</b> <span class="symbol"><A NAME="ref_444_16">Set_Mark</A></span> (<span class="symbol"><A NAME="ref_444_26" HREF="terminal_interface-curses-menus__adb.htm#ref_444_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_445_26" HREF="terminal_interface-curses-menus__adb.htm#ref_444_16">Mark</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_443_12">Char_Ptr</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Mark, "set_menu_mark");
- <span class="symbol"><A NAME="ref_518_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#ref_406_24">Mark</A>'Length);
- <span class="symbol"><A NAME="ref_519_7">Len</A></span> : size_t;
- <span class="symbol"><A NAME="ref_520_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
+ <span class="symbol"><A NAME="ref_448_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#ref_402_24">Mark</A>'Length);
+ <span class="symbol"><A NAME="ref_449_7">Len</A></span> : size_t;
<b>begin</b>
- To_C (<A HREF="terminal_interface-curses-menus__ads.htm#ref_406_24">Mark</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_518_7">Txt</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_519_7">Len</A>);
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_520_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_514_16">Set_Mark</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_405_24">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_518_7">Txt</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_518_7">Txt</A>'First)'<b>Access</b>);
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_520_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_520_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_405_14">Set_Mark</A>;
+ To_C (<A HREF="terminal_interface-curses-menus__ads.htm#ref_402_24">Mark</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_448_7">Txt</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_449_7">Len</A>);
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_444_16">Set_Mark</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_401_24">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_448_7">Txt</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_448_7">Txt</A>'First)'<b>Access</b>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_401_14">Set_Mark</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_529_14" HREF="terminal_interface-curses-menus__ads.htm#ref_411_14">Mark</A></span> (<span class="symbol"><A NAME="ref_529_20" HREF="terminal_interface-curses-menus__ads.htm#ref_411_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_530_20" HREF="terminal_interface-curses-menus__ads.htm#ref_412_20">Mark</A></span> : <b>out</b> String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_455_14" HREF="terminal_interface-curses-menus__ads.htm#ref_407_14">Mark</A></span> (<span class="symbol"><A NAME="ref_455_20" HREF="terminal_interface-curses-menus__ads.htm#ref_407_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_456_20" HREF="terminal_interface-curses-menus__ads.htm#ref_408_20">Mark</A></span> : <b>out</b> String)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_532_16">Get_Menu_Mark</A></span> (<span class="symbol"><A NAME="ref_532_31" HREF="terminal_interface-curses-menus__adb.htm#ref_532_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_58_12">chars_ptr</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_458_16">Get_Menu_Mark</A></span> (<span class="symbol"><A NAME="ref_458_31" HREF="terminal_interface-curses-menus__adb.htm#ref_458_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_55_12">chars_ptr</A>;
<b>pragma</b> Import (C, Get_Menu_Mark, "menu_mark");
<b>begin</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_116_14">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_532_16">Get_Menu_Mark</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_411_20">Men</A>), <A HREF="terminal_interface-curses-menus__ads.htm#ref_412_20">Mark</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_411_14">Mark</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_14">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_458_16">Get_Menu_Mark</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_407_20">Men</A>), <A HREF="terminal_interface-curses-menus__ads.htm#ref_408_20">Mark</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_407_14">Mark</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_538_13" HREF="terminal_interface-curses-menus__ads.htm#ref_415_14">Mark</A></span> (<span class="symbol"><A NAME="ref_538_19" HREF="terminal_interface-curses-menus__ads.htm#ref_415_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> String
+ <b>function</b> <span class="symbol"><A NAME="ref_464_13" HREF="terminal_interface-curses-menus__ads.htm#ref_411_14">Mark</A></span> (<span class="symbol"><A NAME="ref_464_19" HREF="terminal_interface-curses-menus__ads.htm#ref_411_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> String
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_540_16">Get_Menu_Mark</A></span> (<span class="symbol"><A NAME="ref_540_31" HREF="terminal_interface-curses-menus__adb.htm#ref_540_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_58_12">chars_ptr</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_466_16">Get_Menu_Mark</A></span> (<span class="symbol"><A NAME="ref_466_31" HREF="terminal_interface-curses-menus__adb.htm#ref_466_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_55_12">chars_ptr</A>;
<b>pragma</b> Import (C, Get_Menu_Mark, "menu_mark");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_540_16">Get_Menu_Mark</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_415_20">Men</A>));
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_415_14">Mark</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_466_16">Get_Menu_Mark</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_411_20">Men</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_411_14">Mark</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_547_14" HREF="terminal_interface-curses-menus__ads.htm#ref_425_14">Set_Foreground</A></span>
- (<span class="symbol"><A NAME="ref_548_7" HREF="terminal_interface-curses-menus__ads.htm#ref_426_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_549_7" HREF="terminal_interface-curses-menus__ads.htm#ref_427_7">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_550_7" HREF="terminal_interface-curses-menus__ads.htm#ref_428_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_473_14" HREF="terminal_interface-curses-menus__ads.htm#ref_421_14">Set_Foreground</A></span>
+ (<span class="symbol"><A NAME="ref_474_7" HREF="terminal_interface-curses-menus__ads.htm#ref_422_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_475_7" HREF="terminal_interface-curses-menus__ads.htm#ref_423_7">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_476_7" HREF="terminal_interface-curses-menus__ads.htm#ref_424_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_552_16">Set_Menu_Fore</A></span> (<span class="symbol"><A NAME="ref_552_31" HREF="terminal_interface-curses-menus__adb.htm#ref_552_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_553_31" HREF="terminal_interface-curses-menus__adb.htm#ref_552_16">Attr</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_478_16">Set_Menu_Fore</A></span> (<span class="symbol"><A NAME="ref_478_31" HREF="terminal_interface-curses-menus__adb.htm#ref_478_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_479_31" HREF="terminal_interface-curses-menus__adb.htm#ref_478_16">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Menu_Fore, "set_menu_fore");
- <span class="symbol"><A NAME="ref_556_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; Character'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_428_7">Color</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_427_7">Fore</A>);
- <span class="symbol"><A NAME="ref_559_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_552_16">Set_Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_426_7">Men</A>, AttrChar_To_Chtype (<A HREF="terminal_interface-curses-menus__adb.htm#ref_556_7">Ch</A>));
+ <span class="symbol"><A NAME="ref_482_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; Character'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_424_7">Color</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_423_7">Fore</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_559_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_559_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_425_14">Set_Foreground</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_478_16">Set_Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_422_7">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_482_7">Ch</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_421_14">Set_Foreground</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_566_14" HREF="terminal_interface-curses-menus__ads.htm#ref_433_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_566_26" HREF="terminal_interface-curses-menus__ads.htm#ref_433_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_567_26" HREF="terminal_interface-curses-menus__ads.htm#ref_434_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_489_14" HREF="terminal_interface-curses-menus__ads.htm#ref_429_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_489_26" HREF="terminal_interface-curses-menus__ads.htm#ref_429_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_490_26" HREF="terminal_interface-curses-menus__ads.htm#ref_430_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_569_16">Menu_Fore</A></span> (<span class="symbol"><A NAME="ref_569_27" HREF="terminal_interface-curses-menus__adb.htm#ref_569_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_492_16">Menu_Fore</A></span> (<span class="symbol"><A NAME="ref_492_27" HREF="terminal_interface-curses-menus__adb.htm#ref_492_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Menu_Fore, "menu_fore");
<b>begin</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_434_26">Fore</A> := Chtype_To_AttrChar (<A HREF="terminal_interface-curses-menus__adb.htm#ref_569_16">Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_433_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_433_14">Foreground</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_430_26">Fore</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_492_16">Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_429_26">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_429_14">Foreground</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_575_14" HREF="terminal_interface-curses-menus__ads.htm#ref_438_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_575_26" HREF="terminal_interface-curses-menus__ads.htm#ref_438_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_576_26" HREF="terminal_interface-curses-menus__ads.htm#ref_439_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
- <span class="symbol"><A NAME="ref_577_26" HREF="terminal_interface-curses-menus__ads.htm#ref_440_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_498_14" HREF="terminal_interface-curses-menus__ads.htm#ref_434_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_498_26" HREF="terminal_interface-curses-menus__ads.htm#ref_434_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_499_26" HREF="terminal_interface-curses-menus__ads.htm#ref_435_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
+ <span class="symbol"><A NAME="ref_500_26" HREF="terminal_interface-curses-menus__ads.htm#ref_436_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_579_16">Menu_Fore</A></span> (<span class="symbol"><A NAME="ref_579_27" HREF="terminal_interface-curses-menus__adb.htm#ref_579_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_502_16">Menu_Fore</A></span> (<span class="symbol"><A NAME="ref_502_27" HREF="terminal_interface-curses-menus__adb.htm#ref_502_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Menu_Fore, "menu_fore");
<b>begin</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_439_26">Fore</A> := Chtype_To_AttrChar (<A HREF="terminal_interface-curses-menus__adb.htm#ref_579_16">Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_438_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A>;
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_440_26">Color</A> := Chtype_To_AttrChar (<A HREF="terminal_interface-curses-menus__adb.htm#ref_579_16">Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_438_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_438_14">Foreground</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_435_26">Fore</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_502_16">Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_434_26">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_436_26">Color</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_502_16">Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_434_26">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_434_14">Foreground</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_586_14" HREF="terminal_interface-curses-menus__ads.htm#ref_445_14">Set_Background</A></span>
- (<span class="symbol"><A NAME="ref_587_7" HREF="terminal_interface-curses-menus__ads.htm#ref_446_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_588_7" HREF="terminal_interface-curses-menus__ads.htm#ref_447_7">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_589_7" HREF="terminal_interface-curses-menus__ads.htm#ref_448_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_509_14" HREF="terminal_interface-curses-menus__ads.htm#ref_441_14">Set_Background</A></span>
+ (<span class="symbol"><A NAME="ref_510_7" HREF="terminal_interface-curses-menus__ads.htm#ref_442_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_511_7" HREF="terminal_interface-curses-menus__ads.htm#ref_443_7">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_512_7" HREF="terminal_interface-curses-menus__ads.htm#ref_444_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_591_16">Set_Menu_Back</A></span> (<span class="symbol"><A NAME="ref_591_31" HREF="terminal_interface-curses-menus__adb.htm#ref_591_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_592_31" HREF="terminal_interface-curses-menus__adb.htm#ref_591_16">Attr</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_514_16">Set_Menu_Back</A></span> (<span class="symbol"><A NAME="ref_514_31" HREF="terminal_interface-curses-menus__adb.htm#ref_514_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_515_31" HREF="terminal_interface-curses-menus__adb.htm#ref_514_16">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Menu_Back, "set_menu_back");
- <span class="symbol"><A NAME="ref_595_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; Character'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_448_7">Color</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_447_7">Back</A>);
- <span class="symbol"><A NAME="ref_598_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_591_16">Set_Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_446_7">Men</A>, AttrChar_To_Chtype (<A HREF="terminal_interface-curses-menus__adb.htm#ref_595_7">Ch</A>));
+ <span class="symbol"><A NAME="ref_518_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; Character'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_444_7">Color</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_443_7">Back</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_598_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_598_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_445_14">Set_Background</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_514_16">Set_Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_442_7">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_518_7">Ch</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_441_14">Set_Background</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_605_14" HREF="terminal_interface-curses-menus__ads.htm#ref_453_14">Background</A></span> (<span class="symbol"><A NAME="ref_605_26" HREF="terminal_interface-curses-menus__ads.htm#ref_453_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_606_26" HREF="terminal_interface-curses-menus__ads.htm#ref_454_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_525_14" HREF="terminal_interface-curses-menus__ads.htm#ref_449_14">Background</A></span> (<span class="symbol"><A NAME="ref_525_26" HREF="terminal_interface-curses-menus__ads.htm#ref_449_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_526_26" HREF="terminal_interface-curses-menus__ads.htm#ref_450_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_608_16">Menu_Back</A></span> (<span class="symbol"><A NAME="ref_608_27" HREF="terminal_interface-curses-menus__adb.htm#ref_608_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_528_16">Menu_Back</A></span> (<span class="symbol"><A NAME="ref_528_27" HREF="terminal_interface-curses-menus__adb.htm#ref_528_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Menu_Back, "menu_back");
<b>begin</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_454_26">Back</A> := Chtype_To_AttrChar (<A HREF="terminal_interface-curses-menus__adb.htm#ref_608_16">Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_453_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_453_14">Background</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_450_26">Back</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_528_16">Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_449_26">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_449_14">Background</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_614_14" HREF="terminal_interface-curses-menus__ads.htm#ref_458_14">Background</A></span> (<span class="symbol"><A NAME="ref_614_26" HREF="terminal_interface-curses-menus__ads.htm#ref_458_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_615_26" HREF="terminal_interface-curses-menus__ads.htm#ref_459_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
- <span class="symbol"><A NAME="ref_616_26" HREF="terminal_interface-curses-menus__ads.htm#ref_460_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_534_14" HREF="terminal_interface-curses-menus__ads.htm#ref_454_14">Background</A></span> (<span class="symbol"><A NAME="ref_534_26" HREF="terminal_interface-curses-menus__ads.htm#ref_454_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_535_26" HREF="terminal_interface-curses-menus__ads.htm#ref_455_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
+ <span class="symbol"><A NAME="ref_536_26" HREF="terminal_interface-curses-menus__ads.htm#ref_456_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_618_16">Menu_Back</A></span> (<span class="symbol"><A NAME="ref_618_27" HREF="terminal_interface-curses-menus__adb.htm#ref_618_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_538_16">Menu_Back</A></span> (<span class="symbol"><A NAME="ref_538_27" HREF="terminal_interface-curses-menus__adb.htm#ref_538_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Menu_Back, "menu_back");
<b>begin</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_459_26">Back</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_618_16">Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_458_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A>;
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_460_26">Color</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_618_16">Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_458_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_458_14">Background</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_455_26">Back</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_538_16">Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_454_26">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_456_26">Color</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_538_16">Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_454_26">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_454_14">Background</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_625_14" HREF="terminal_interface-curses-menus__ads.htm#ref_465_14">Set_Grey</A></span> (<span class="symbol"><A NAME="ref_625_24" HREF="terminal_interface-curses-menus__ads.htm#ref_466_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_626_24" HREF="terminal_interface-curses-menus__ads.htm#ref_467_7">Grey</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_627_24" HREF="terminal_interface-curses-menus__ads.htm#ref_468_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_545_14" HREF="terminal_interface-curses-menus__ads.htm#ref_461_14">Set_Grey</A></span> (<span class="symbol"><A NAME="ref_545_24" HREF="terminal_interface-curses-menus__ads.htm#ref_462_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_546_24" HREF="terminal_interface-curses-menus__ads.htm#ref_463_7">Grey</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_547_24" HREF="terminal_interface-curses-menus__ads.htm#ref_464_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_629_16">Set_Menu_Grey</A></span> (<span class="symbol"><A NAME="ref_629_31" HREF="terminal_interface-curses-menus__adb.htm#ref_629_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_630_31" HREF="terminal_interface-curses-menus__adb.htm#ref_629_16">Attr</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_549_16">Set_Menu_Grey</A></span> (<span class="symbol"><A NAME="ref_549_31" HREF="terminal_interface-curses-menus__adb.htm#ref_549_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_550_31" HREF="terminal_interface-curses-menus__adb.htm#ref_549_16">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Menu_Grey, "set_menu_grey");
- <span class="symbol"><A NAME="ref_633_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; Character'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_468_7">Color</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_467_7">Grey</A>);
+ <span class="symbol"><A NAME="ref_553_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; Character'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_464_7">Color</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_463_7">Grey</A>);
- <span class="symbol"><A NAME="ref_637_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_629_16">Set_Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_466_7">Men</A>, AttrChar_To_Chtype (<A HREF="terminal_interface-curses-menus__adb.htm#ref_633_7">Ch</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_637_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_637_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_465_14">Set_Grey</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_549_16">Set_Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_462_7">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_553_7">Ch</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_461_14">Set_Grey</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_644_14" HREF="terminal_interface-curses-menus__ads.htm#ref_473_14">Grey</A></span> (<span class="symbol"><A NAME="ref_644_20" HREF="terminal_interface-curses-menus__ads.htm#ref_473_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_645_20" HREF="terminal_interface-curses-menus__ads.htm#ref_474_20">Grey</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_561_14" HREF="terminal_interface-curses-menus__ads.htm#ref_469_14">Grey</A></span> (<span class="symbol"><A NAME="ref_561_20" HREF="terminal_interface-curses-menus__ads.htm#ref_469_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_562_20" HREF="terminal_interface-curses-menus__ads.htm#ref_470_20">Grey</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_647_16">Menu_Grey</A></span> (<span class="symbol"><A NAME="ref_647_27" HREF="terminal_interface-curses-menus__adb.htm#ref_647_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_564_16">Menu_Grey</A></span> (<span class="symbol"><A NAME="ref_564_27" HREF="terminal_interface-curses-menus__adb.htm#ref_564_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Menu_Grey, "menu_grey");
<b>begin</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_474_20">Grey</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_647_16">Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_473_20">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_473_14">Grey</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_470_20">Grey</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_564_16">Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_469_20">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_469_14">Grey</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_653_14" HREF="terminal_interface-curses-menus__ads.htm#ref_478_14">Grey</A></span> (<span class="symbol"><A NAME="ref_653_20" HREF="terminal_interface-curses-menus__ads.htm#ref_479_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_654_20" HREF="terminal_interface-curses-menus__ads.htm#ref_480_7">Grey</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
- <span class="symbol"><A NAME="ref_655_20" HREF="terminal_interface-curses-menus__ads.htm#ref_481_7">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_570_14" HREF="terminal_interface-curses-menus__ads.htm#ref_474_14">Grey</A></span> (<span class="symbol"><A NAME="ref_570_20" HREF="terminal_interface-curses-menus__ads.htm#ref_475_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_571_20" HREF="terminal_interface-curses-menus__ads.htm#ref_476_7">Grey</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
+ <span class="symbol"><A NAME="ref_572_20" HREF="terminal_interface-curses-menus__ads.htm#ref_477_7">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_657_16">Menu_Grey</A></span> (<span class="symbol"><A NAME="ref_657_27" HREF="terminal_interface-curses-menus__adb.htm#ref_657_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_574_16">Menu_Grey</A></span> (<span class="symbol"><A NAME="ref_574_27" HREF="terminal_interface-curses-menus__adb.htm#ref_574_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Menu_Grey, "menu_grey");
<b>begin</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_480_7">Grey</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_657_16">Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_479_7">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A>;
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_481_7">Color</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_657_16">Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_479_7">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_478_14">Grey</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_476_7">Grey</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_574_16">Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_475_7">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_477_7">Color</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_574_16">Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_475_7">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_474_14">Grey</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_664_14" HREF="terminal_interface-curses-menus__ads.htm#ref_486_14">Set_Pad_Character</A></span> (<span class="symbol"><A NAME="ref_664_33" HREF="terminal_interface-curses-menus__ads.htm#ref_486_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_665_33" HREF="terminal_interface-curses-menus__ads.htm#ref_487_33">Pad</A></span> : Character := Space)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_581_14" HREF="terminal_interface-curses-menus__ads.htm#ref_482_14">Set_Pad_Character</A></span> (<span class="symbol"><A NAME="ref_581_33" HREF="terminal_interface-curses-menus__ads.htm#ref_482_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_582_33" HREF="terminal_interface-curses-menus__ads.htm#ref_483_33">Pad</A></span> : Character := Space)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_667_16">Set_Menu_Pad</A></span> (<span class="symbol"><A NAME="ref_667_30" HREF="terminal_interface-curses-menus__adb.htm#ref_667_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_668_30" HREF="terminal_interface-curses-menus__adb.htm#ref_667_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_584_16">Set_Menu_Pad</A></span> (<span class="symbol"><A NAME="ref_584_30" HREF="terminal_interface-curses-menus__adb.htm#ref_584_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_585_30" HREF="terminal_interface-curses-menus__adb.htm#ref_584_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Menu_Pad, "set_menu_pad");
- <span class="symbol"><A NAME="ref_671_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_667_16">Set_Menu_Pad</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_486_33">Men</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (Character'Pos (<A HREF="terminal_interface-curses-menus__ads.htm#ref_487_33">Pad</A>)));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_671_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_671_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_486_14">Set_Pad_Character</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_584_16">Set_Menu_Pad</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_482_33">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (Character'Pos (<A HREF="terminal_interface-curses-menus__ads.htm#ref_483_33">Pad</A>))));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_482_14">Set_Pad_Character</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_679_14" HREF="terminal_interface-curses-menus__ads.htm#ref_492_14">Pad_Character</A></span> (<span class="symbol"><A NAME="ref_679_29" HREF="terminal_interface-curses-menus__ads.htm#ref_492_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_680_29" HREF="terminal_interface-curses-menus__ads.htm#ref_493_29">Pad</A></span> : <b>out</b> Character)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_592_14" HREF="terminal_interface-curses-menus__ads.htm#ref_488_14">Pad_Character</A></span> (<span class="symbol"><A NAME="ref_592_29" HREF="terminal_interface-curses-menus__ads.htm#ref_488_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_593_29" HREF="terminal_interface-curses-menus__ads.htm#ref_489_29">Pad</A></span> : <b>out</b> Character)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_682_16">Menu_Pad</A></span> (<span class="symbol"><A NAME="ref_682_26" HREF="terminal_interface-curses-menus__adb.htm#ref_682_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_595_16">Menu_Pad</A></span> (<span class="symbol"><A NAME="ref_595_26" HREF="terminal_interface-curses-menus__adb.htm#ref_595_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Menu_Pad, "menu_pad");
<b>begin</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_493_29">Pad</A> := Character'Val (<A HREF="terminal_interface-curses-menus__adb.htm#ref_682_16">Menu_Pad</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_492_29">Men</A>));
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_492_14">Pad_Character</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_489_29">Pad</A> := Character'Val (<A HREF="terminal_interface-curses-menus__adb.htm#ref_595_16">Menu_Pad</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_488_29">Men</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_488_14">Pad_Character</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_688_14" HREF="terminal_interface-curses-menus__ads.htm#ref_502_14">Set_Spacing</A></span> (<span class="symbol"><A NAME="ref_688_27" HREF="terminal_interface-curses-menus__ads.htm#ref_502_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_689_27" HREF="terminal_interface-curses-menus__ads.htm#ref_503_27">Descr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> := 0;
- <span class="symbol"><A NAME="ref_690_27" HREF="terminal_interface-curses-menus__ads.htm#ref_504_27">Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A> := 0;
- <span class="symbol"><A NAME="ref_691_27" HREF="terminal_interface-curses-menus__ads.htm#ref_505_27">Col</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> := 0)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_601_14" HREF="terminal_interface-curses-menus__ads.htm#ref_498_14">Set_Spacing</A></span> (<span class="symbol"><A NAME="ref_601_27" HREF="terminal_interface-curses-menus__ads.htm#ref_498_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_602_27" HREF="terminal_interface-curses-menus__ads.htm#ref_499_27">Descr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> := 0;
+ <span class="symbol"><A NAME="ref_603_27" HREF="terminal_interface-curses-menus__ads.htm#ref_500_27">Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A> := 0;
+ <span class="symbol"><A NAME="ref_604_27" HREF="terminal_interface-curses-menus__ads.htm#ref_501_27">Col</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> := 0)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_693_16">Set_Spacing</A></span> (<span class="symbol"><A NAME="ref_693_29" HREF="terminal_interface-curses-menus__adb.htm#ref_693_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_694_29" HREF="terminal_interface-curses-menus__adb.htm#ref_693_16">D</A></span>, <span class="symbol"><A NAME="ref_694_32" HREF="terminal_interface-curses-menus__adb.htm#ref_693_16">R</A></span>, <span class="symbol"><A NAME="ref_694_35" HREF="terminal_interface-curses-menus__adb.htm#ref_693_16">C</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_606_16">Set_Spacing</A></span> (<span class="symbol"><A NAME="ref_606_29" HREF="terminal_interface-curses-menus__adb.htm#ref_606_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_607_29" HREF="terminal_interface-curses-menus__adb.htm#ref_606_16">D</A></span>, <span class="symbol"><A NAME="ref_607_32" HREF="terminal_interface-curses-menus__adb.htm#ref_606_16">R</A></span>, <span class="symbol"><A NAME="ref_607_35" HREF="terminal_interface-curses-menus__adb.htm#ref_606_16">C</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Spacing, "set_menu_spacing");
- <span class="symbol"><A NAME="ref_697_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_693_16">Set_Spacing</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_502_27">Men</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_503_27">Descr</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_504_27">Row</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_505_27">Col</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_697_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_697_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_502_14">Set_Spacing</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_606_16">Set_Spacing</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_498_27">Men</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_499_27">Descr</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_500_27">Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_501_27">Col</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_498_14">Set_Spacing</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_707_14" HREF="terminal_interface-curses-menus__ads.htm#ref_510_14">Spacing</A></span> (<span class="symbol"><A NAME="ref_707_23" HREF="terminal_interface-curses-menus__ads.htm#ref_510_23">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_708_23" HREF="terminal_interface-curses-menus__ads.htm#ref_511_23">Descr</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_709_23" HREF="terminal_interface-curses-menus__ads.htm#ref_512_23">Row</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_710_23" HREF="terminal_interface-curses-menus__ads.htm#ref_513_23">Col</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_617_14" HREF="terminal_interface-curses-menus__ads.htm#ref_506_14">Spacing</A></span> (<span class="symbol"><A NAME="ref_617_23" HREF="terminal_interface-curses-menus__ads.htm#ref_506_23">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_618_23" HREF="terminal_interface-curses-menus__ads.htm#ref_507_23">Descr</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_619_23" HREF="terminal_interface-curses-menus__ads.htm#ref_508_23">Row</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_620_23" HREF="terminal_interface-curses-menus__ads.htm#ref_509_23">Col</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>)
<b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_712_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_713_16">Get_Spacing</A></span> (<span class="symbol"><A NAME="ref_713_29" HREF="terminal_interface-curses-menus__adb.htm#ref_713_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_714_29" HREF="terminal_interface-curses-menus__adb.htm#ref_713_16">D</A></span>, <span class="symbol"><A NAME="ref_714_32" HREF="terminal_interface-curses-menus__adb.htm#ref_713_16">R</A></span>, <span class="symbol"><A NAME="ref_714_35" HREF="terminal_interface-curses-menus__adb.htm#ref_713_16">C</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_712_12">C_Int_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>type</b> <span class="symbol"><A NAME="ref_622_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_623_16">Get_Spacing</A></span> (<span class="symbol"><A NAME="ref_623_29" HREF="terminal_interface-curses-menus__adb.htm#ref_623_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_624_29" HREF="terminal_interface-curses-menus__adb.htm#ref_623_16">D</A></span>, <span class="symbol"><A NAME="ref_624_32" HREF="terminal_interface-curses-menus__adb.htm#ref_623_16">R</A></span>, <span class="symbol"><A NAME="ref_624_35" HREF="terminal_interface-curses-menus__adb.htm#ref_623_16">C</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_622_12">C_Int_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Get_Spacing, "menu_spacing");
- <span class="symbol"><A NAME="ref_717_7">D</A></span>, <span class="symbol"><A NAME="ref_717_10">R</A></span>, <span class="symbol"><A NAME="ref_717_13">C</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_718_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_713_16">Get_Spacing</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_510_23">Men</A>,
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_717_7">D</A>'<b>Access</b>,
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_717_10">R</A>'<b>Access</b>,
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_717_13">C</A>'<b>Access</b>);
+ <span class="symbol"><A NAME="ref_627_7">D</A></span>, <span class="symbol"><A NAME="ref_627_10">R</A></span>, <span class="symbol"><A NAME="ref_627_13">C</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_718_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_718_7">Res</A>);
- <b>else</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_511_23">Descr</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_717_7">D</A>);
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_512_23">Row</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_717_10">R</A>);
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_513_23">Col</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_717_13">C</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_510_14">Spacing</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_623_16">Get_Spacing</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_506_23">Men</A>,
+ <A HREF="terminal_interface-curses-menus__adb.htm#ref_627_7">D</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-menus__adb.htm#ref_627_10">R</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-menus__adb.htm#ref_627_13">C</A>'<b>Access</b>));
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_507_23">Descr</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_627_7">D</A>);
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_508_23">Row</A> := <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_627_10">R</A>);
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_509_23">Col</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_627_13">C</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_506_14">Spacing</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_732_13" HREF="terminal_interface-curses-menus__ads.htm#ref_522_13">Set_Pattern</A></span> (<span class="symbol"><A NAME="ref_732_26" HREF="terminal_interface-curses-menus__ads.htm#ref_522_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_733_26" HREF="terminal_interface-curses-menus__ads.htm#ref_523_26">Text</A></span> : String) <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_638_13" HREF="terminal_interface-curses-menus__ads.htm#ref_518_13">Set_Pattern</A></span> (<span class="symbol"><A NAME="ref_638_26" HREF="terminal_interface-curses-menus__ads.htm#ref_518_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_639_26" HREF="terminal_interface-curses-menus__ads.htm#ref_519_26">Text</A></span> : String) <b>return</b> Boolean
<b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_735_12">Char_Ptr</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.char;
- <b>function</b> <span class="symbol"><A NAME="ref_736_16">Set_Pattern</A></span> (<span class="symbol"><A NAME="ref_736_29" HREF="terminal_interface-curses-menus__adb.htm#ref_736_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_737_29" HREF="terminal_interface-curses-menus__adb.htm#ref_736_16">Pattern</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_735_12">Char_Ptr</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>type</b> <span class="symbol"><A NAME="ref_641_12">Char_Ptr</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.char;
+ <b>function</b> <span class="symbol"><A NAME="ref_642_16">Set_Pattern</A></span> (<span class="symbol"><A NAME="ref_642_29" HREF="terminal_interface-curses-menus__adb.htm#ref_642_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_643_29" HREF="terminal_interface-curses-menus__adb.htm#ref_642_16">Pattern</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_641_12">Char_Ptr</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Pattern, "set_menu_pattern");
- <span class="symbol"><A NAME="ref_740_7">S</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#ref_523_26">Text</A>'Length);
- <span class="symbol"><A NAME="ref_741_7">L</A></span> : size_t;
- <span class="symbol"><A NAME="ref_742_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
+ <span class="symbol"><A NAME="ref_646_7">S</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#ref_519_26">Text</A>'Length);
+ <span class="symbol"><A NAME="ref_647_7">L</A></span> : size_t;
+ <span class="symbol"><A NAME="ref_648_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>begin</b>
- To_C (<A HREF="terminal_interface-curses-menus__ads.htm#ref_523_26">Text</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_740_7">S</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_741_7">L</A>);
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_742_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_736_16">Set_Pattern</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_522_26">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_740_7">S</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_740_7">S</A>'First)'<b>Access</b>);
- <b>case</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_742_7">Res</A> <b>is</b>
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_89_4">E_No_Match</A> =&gt; <b>return</b> False;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_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#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_742_7">Res</A>);
+ To_C (<A HREF="terminal_interface-curses-menus__ads.htm#ref_519_26">Text</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_646_7">S</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_647_7">L</A>);
+ <A HREF="terminal_interface-curses-menus__adb.htm#ref_648_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_642_16">Set_Pattern</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_518_26">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_646_7">S</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_646_7">S</A>'First)'<b>Access</b>);
+ <b>case</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_648_7">Res</A> <b>is</b>
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_7">E_No_Match</A> =&gt;
<b>return</b> False;
+ <b>when</b> <b>others</b> =&gt;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_648_7">Res</A>);
+ <b>return</b> True;
<b>end</b> <b>case</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_522_13">Set_Pattern</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_518_13">Set_Pattern</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_755_14" HREF="terminal_interface-curses-menus__ads.htm#ref_529_14">Pattern</A></span> (<span class="symbol"><A NAME="ref_755_23" HREF="terminal_interface-curses-menus__ads.htm#ref_529_23">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_756_23" HREF="terminal_interface-curses-menus__ads.htm#ref_530_23">Text</A></span> : <b>out</b> String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_661_14" HREF="terminal_interface-curses-menus__ads.htm#ref_525_14">Pattern</A></span> (<span class="symbol"><A NAME="ref_661_23" HREF="terminal_interface-curses-menus__ads.htm#ref_525_23">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_662_23" HREF="terminal_interface-curses-menus__ads.htm#ref_526_23">Text</A></span> : <b>out</b> String)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_758_16">Get_Pattern</A></span> (<span class="symbol"><A NAME="ref_758_29" HREF="terminal_interface-curses-menus__adb.htm#ref_758_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_58_12">chars_ptr</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_664_16">Get_Pattern</A></span> (<span class="symbol"><A NAME="ref_664_29" HREF="terminal_interface-curses-menus__adb.htm#ref_664_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_55_12">chars_ptr</A>;
<b>pragma</b> Import (C, Get_Pattern, "menu_pattern");
<b>begin</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_116_14">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_758_16">Get_Pattern</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_529_23">Men</A>), <A HREF="terminal_interface-curses-menus__ads.htm#ref_530_23">Text</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_529_14">Pattern</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_14">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_664_16">Get_Pattern</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_525_23">Men</A>), <A HREF="terminal_interface-curses-menus__ads.htm#ref_526_23">Text</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_525_14">Pattern</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_764_14" HREF="terminal_interface-curses-menus__ads.htm#ref_539_14">Set_Format</A></span> (<span class="symbol"><A NAME="ref_764_26" HREF="terminal_interface-curses-menus__ads.htm#ref_539_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_765_26" HREF="terminal_interface-curses-menus__ads.htm#ref_540_26">Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_766_26" HREF="terminal_interface-curses-menus__ads.htm#ref_541_26">Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_670_14" HREF="terminal_interface-curses-menus__ads.htm#ref_535_14">Set_Format</A></span> (<span class="symbol"><A NAME="ref_670_26" HREF="terminal_interface-curses-menus__ads.htm#ref_535_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_671_26" HREF="terminal_interface-curses-menus__ads.htm#ref_536_26">Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_672_26" HREF="terminal_interface-curses-menus__ads.htm#ref_537_26">Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_768_16">Set_Menu_Fmt</A></span> (<span class="symbol"><A NAME="ref_768_30" HREF="terminal_interface-curses-menus__adb.htm#ref_768_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_769_30" HREF="terminal_interface-curses-menus__adb.htm#ref_768_16">Lin</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_770_30" HREF="terminal_interface-curses-menus__adb.htm#ref_768_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_674_16">Set_Menu_Fmt</A></span> (<span class="symbol"><A NAME="ref_674_30" HREF="terminal_interface-curses-menus__adb.htm#ref_674_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_675_30" HREF="terminal_interface-curses-menus__adb.htm#ref_674_16">Lin</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_676_30" HREF="terminal_interface-curses-menus__adb.htm#ref_674_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Menu_Fmt, "set_menu_format");
- <span class="symbol"><A NAME="ref_773_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_768_16">Set_Menu_Fmt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_539_26">Men</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_540_26">Lines</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_541_26">Columns</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_773_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_773_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_539_14">Set_Format</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_674_16">Set_Menu_Fmt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_535_26">Men</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_536_26">Lines</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_537_26">Columns</A>)));
+
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_535_14">Set_Format</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_782_14" HREF="terminal_interface-curses-menus__ads.htm#ref_553_14">Format</A></span> (<span class="symbol"><A NAME="ref_782_22" HREF="terminal_interface-curses-menus__ads.htm#ref_553_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_783_22" HREF="terminal_interface-curses-menus__ads.htm#ref_554_22">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_784_22" HREF="terminal_interface-curses-menus__ads.htm#ref_555_22">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_686_14" HREF="terminal_interface-curses-menus__ads.htm#ref_549_14">Format</A></span> (<span class="symbol"><A NAME="ref_686_22" HREF="terminal_interface-curses-menus__ads.htm#ref_549_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_687_22" HREF="terminal_interface-curses-menus__ads.htm#ref_550_22">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_688_22" HREF="terminal_interface-curses-menus__ads.htm#ref_551_22">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>)
<b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_786_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_787_16">Menu_Fmt</A></span> (<span class="symbol"><A NAME="ref_787_26" HREF="terminal_interface-curses-menus__adb.htm#ref_787_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_788_26" HREF="terminal_interface-curses-menus__adb.htm#ref_787_16">Y</A></span>, <span class="symbol"><A NAME="ref_788_29" HREF="terminal_interface-curses-menus__adb.htm#ref_787_16">X</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_786_12">C_Int_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>type</b> <span class="symbol"><A NAME="ref_690_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_691_16">Menu_Fmt</A></span> (<span class="symbol"><A NAME="ref_691_26" HREF="terminal_interface-curses-menus__adb.htm#ref_691_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_692_26" HREF="terminal_interface-curses-menus__adb.htm#ref_691_16">Y</A></span>, <span class="symbol"><A NAME="ref_692_29" HREF="terminal_interface-curses-menus__adb.htm#ref_691_16">X</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_690_12">C_Int_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Menu_Fmt, "menu_format");
- <span class="symbol"><A NAME="ref_791_7">L</A></span>, <span class="symbol"><A NAME="ref_791_10">C</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_792_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_787_16">Menu_Fmt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_553_22">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_791_7">L</A>'<b>Access</b>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_791_10">C</A>'<b>Access</b>);
+ <span class="symbol"><A NAME="ref_695_7">L</A></span>, <span class="symbol"><A NAME="ref_695_10">C</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_792_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_792_7">Res</A>);
- <b>else</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_554_22">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_791_7">L</A>);
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_555_22">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_791_10">C</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_553_14">Format</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_691_16">Menu_Fmt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_549_22">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_695_7">L</A>'<b>Access</b>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_695_10">C</A>'<b>Access</b>));
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_550_22">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_695_7">L</A>);
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_551_22">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_695_10">C</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_549_14">Format</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_802_14" HREF="terminal_interface-curses-menus__ads.htm#ref_567_14">Set_Item_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_802_34" HREF="terminal_interface-curses-menus__ads.htm#ref_567_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_803_34" HREF="terminal_interface-curses-menus__ads.htm#ref_568_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_702_14" HREF="terminal_interface-curses-menus__ads.htm#ref_563_14">Set_Item_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_702_34" HREF="terminal_interface-curses-menus__ads.htm#ref_563_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_703_34" HREF="terminal_interface-curses-menus__ads.htm#ref_564_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_805_16">Set_Item_Init</A></span> (<span class="symbol"><A NAME="ref_805_31" HREF="terminal_interface-curses-menus__adb.htm#ref_805_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_806_31" HREF="terminal_interface-curses-menus__adb.htm#ref_805_16">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_705_16">Set_Item_Init</A></span> (<span class="symbol"><A NAME="ref_705_31" HREF="terminal_interface-curses-menus__adb.htm#ref_705_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_706_31" HREF="terminal_interface-curses-menus__adb.htm#ref_705_16">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Item_Init, "set_item_init");
- <span class="symbol"><A NAME="ref_809_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_805_16">Set_Item_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_567_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_568_34">Proc</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_809_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_809_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_567_14">Set_Item_Init_Hook</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_705_16">Set_Item_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_563_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_564_34">Proc</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_14">Set_Item_Init_Hook</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_816_14" HREF="terminal_interface-curses-menus__ads.htm#ref_573_14">Set_Item_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_816_34" HREF="terminal_interface-curses-menus__ads.htm#ref_573_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_817_34" HREF="terminal_interface-curses-menus__ads.htm#ref_574_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_713_14" HREF="terminal_interface-curses-menus__ads.htm#ref_569_14">Set_Item_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_713_34" HREF="terminal_interface-curses-menus__ads.htm#ref_569_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_714_34" HREF="terminal_interface-curses-menus__ads.htm#ref_570_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_819_16">Set_Item_Term</A></span> (<span class="symbol"><A NAME="ref_819_31" HREF="terminal_interface-curses-menus__adb.htm#ref_819_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_820_31" HREF="terminal_interface-curses-menus__adb.htm#ref_819_16">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_716_16">Set_Item_Term</A></span> (<span class="symbol"><A NAME="ref_716_31" HREF="terminal_interface-curses-menus__adb.htm#ref_716_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_717_31" HREF="terminal_interface-curses-menus__adb.htm#ref_716_16">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Item_Term, "set_item_term");
- <span class="symbol"><A NAME="ref_823_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_819_16">Set_Item_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_573_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_574_34">Proc</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_823_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_823_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_573_14">Set_Item_Term_Hook</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_716_16">Set_Item_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_569_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_570_34">Proc</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_569_14">Set_Item_Term_Hook</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_830_14" HREF="terminal_interface-curses-menus__ads.htm#ref_579_14">Set_Menu_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_830_34" HREF="terminal_interface-curses-menus__ads.htm#ref_579_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_831_34" HREF="terminal_interface-curses-menus__ads.htm#ref_580_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_724_14" HREF="terminal_interface-curses-menus__ads.htm#ref_575_14">Set_Menu_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_724_34" HREF="terminal_interface-curses-menus__ads.htm#ref_575_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_725_34" HREF="terminal_interface-curses-menus__ads.htm#ref_576_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_833_16">Set_Menu_Init</A></span> (<span class="symbol"><A NAME="ref_833_31" HREF="terminal_interface-curses-menus__adb.htm#ref_833_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_834_31" HREF="terminal_interface-curses-menus__adb.htm#ref_833_16">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_727_16">Set_Menu_Init</A></span> (<span class="symbol"><A NAME="ref_727_31" HREF="terminal_interface-curses-menus__adb.htm#ref_727_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_728_31" HREF="terminal_interface-curses-menus__adb.htm#ref_727_16">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Menu_Init, "set_menu_init");
- <span class="symbol"><A NAME="ref_837_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_833_16">Set_Menu_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_579_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_580_34">Proc</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_837_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_837_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_579_14">Set_Menu_Init_Hook</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_727_16">Set_Menu_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_575_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_576_34">Proc</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_575_14">Set_Menu_Init_Hook</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_844_14" HREF="terminal_interface-curses-menus__ads.htm#ref_585_14">Set_Menu_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_844_34" HREF="terminal_interface-curses-menus__ads.htm#ref_585_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_845_34" HREF="terminal_interface-curses-menus__ads.htm#ref_586_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_735_14" HREF="terminal_interface-curses-menus__ads.htm#ref_581_14">Set_Menu_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_735_34" HREF="terminal_interface-curses-menus__ads.htm#ref_581_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_736_34" HREF="terminal_interface-curses-menus__ads.htm#ref_582_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_847_16">Set_Menu_Term</A></span> (<span class="symbol"><A NAME="ref_847_31" HREF="terminal_interface-curses-menus__adb.htm#ref_847_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_848_31" HREF="terminal_interface-curses-menus__adb.htm#ref_847_16">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_738_16">Set_Menu_Term</A></span> (<span class="symbol"><A NAME="ref_738_31" HREF="terminal_interface-curses-menus__adb.htm#ref_738_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_739_31" HREF="terminal_interface-curses-menus__adb.htm#ref_738_16">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Menu_Term, "set_menu_term");
- <span class="symbol"><A NAME="ref_851_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_847_16">Set_Menu_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_585_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_586_34">Proc</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_851_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_851_7">Res</A>);
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_585_14">Set_Menu_Term_Hook</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_738_16">Set_Menu_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_581_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_582_34">Proc</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_581_14">Set_Menu_Term_Hook</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_858_13" HREF="terminal_interface-curses-menus__ads.htm#ref_591_13">Get_Item_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_858_33" HREF="terminal_interface-curses-menus__ads.htm#ref_591_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_746_13" HREF="terminal_interface-curses-menus__ads.htm#ref_587_13">Get_Item_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_746_33" HREF="terminal_interface-curses-menus__ads.htm#ref_587_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_860_16">Item_Init</A></span> (<span class="symbol"><A NAME="ref_860_27" HREF="terminal_interface-curses-menus__adb.htm#ref_860_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_748_16">Item_Init</A></span> (<span class="symbol"><A NAME="ref_748_27" HREF="terminal_interface-curses-menus__adb.htm#ref_748_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>;
<b>pragma</b> Import (C, Item_Init, "item_init");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_860_16">Item_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_591_33">Men</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_591_13">Get_Item_Init_Hook</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_748_16">Item_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_587_33">Men</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_587_13">Get_Item_Init_Hook</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_866_13" HREF="terminal_interface-curses-menus__ads.htm#ref_596_13">Get_Item_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_866_33" HREF="terminal_interface-curses-menus__ads.htm#ref_596_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_754_13" HREF="terminal_interface-curses-menus__ads.htm#ref_592_13">Get_Item_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_754_33" HREF="terminal_interface-curses-menus__ads.htm#ref_592_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_868_16">Item_Term</A></span> (<span class="symbol"><A NAME="ref_868_27" HREF="terminal_interface-curses-menus__adb.htm#ref_868_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_756_16">Item_Term</A></span> (<span class="symbol"><A NAME="ref_756_27" HREF="terminal_interface-curses-menus__adb.htm#ref_756_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>;
<b>pragma</b> Import (C, Item_Term, "item_term");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_868_16">Item_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_596_33">Men</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_596_13">Get_Item_Term_Hook</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_756_16">Item_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_592_33">Men</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_592_13">Get_Item_Term_Hook</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_874_13" HREF="terminal_interface-curses-menus__ads.htm#ref_601_13">Get_Menu_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_874_33" HREF="terminal_interface-curses-menus__ads.htm#ref_601_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_762_13" HREF="terminal_interface-curses-menus__ads.htm#ref_597_13">Get_Menu_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_762_33" HREF="terminal_interface-curses-menus__ads.htm#ref_597_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_876_16">Menu_Init</A></span> (<span class="symbol"><A NAME="ref_876_27" HREF="terminal_interface-curses-menus__adb.htm#ref_876_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_764_16">Menu_Init</A></span> (<span class="symbol"><A NAME="ref_764_27" HREF="terminal_interface-curses-menus__adb.htm#ref_764_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>;
<b>pragma</b> Import (C, Menu_Init, "menu_init");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_876_16">Menu_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_601_33">Men</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_601_13">Get_Menu_Init_Hook</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_764_16">Menu_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_597_33">Men</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_597_13">Get_Menu_Init_Hook</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_882_13" HREF="terminal_interface-curses-menus__ads.htm#ref_606_13">Get_Menu_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_882_33" HREF="terminal_interface-curses-menus__ads.htm#ref_606_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_770_13" HREF="terminal_interface-curses-menus__ads.htm#ref_602_13">Get_Menu_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_770_33" HREF="terminal_interface-curses-menus__ads.htm#ref_602_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_884_16">Menu_Term</A></span> (<span class="symbol"><A NAME="ref_884_27" HREF="terminal_interface-curses-menus__adb.htm#ref_884_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_772_16">Menu_Term</A></span> (<span class="symbol"><A NAME="ref_772_27" HREF="terminal_interface-curses-menus__adb.htm#ref_772_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>;
<b>pragma</b> Import (C, Menu_Term, "menu_term");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_884_16">Menu_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_606_33">Men</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_606_13">Get_Menu_Term_Hook</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_772_16">Menu_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_602_33">Men</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_602_13">Get_Menu_Term_Hook</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_890_14" HREF="terminal_interface-curses-menus__ads.htm#ref_615_14">Redefine</A></span> (<span class="symbol"><A NAME="ref_890_24" HREF="terminal_interface-curses-menus__ads.htm#ref_615_24">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_891_24" HREF="terminal_interface-curses-menus__ads.htm#ref_616_24">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_180_9">Item_Array_Access</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_778_14" HREF="terminal_interface-curses-menus__ads.htm#ref_611_14">Redefine</A></span> (<span class="symbol"><A NAME="ref_778_24" HREF="terminal_interface-curses-menus__ads.htm#ref_611_24">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_779_24" HREF="terminal_interface-curses-menus__ads.htm#ref_612_24">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_176_9">Item_Array_Access</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_893_16">Set_Items</A></span> (<span class="symbol"><A NAME="ref_893_27" HREF="terminal_interface-curses-menus__adb.htm#ref_893_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_894_27" HREF="terminal_interface-curses-menus__adb.htm#ref_893_16">Items</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_781_16">Set_Items</A></span> (<span class="symbol"><A NAME="ref_781_27" HREF="terminal_interface-curses-menus__adb.htm#ref_781_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_782_27" HREF="terminal_interface-curses-menus__adb.htm#ref_781_16">Items</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Set_Items, "set_menu_items");
- <span class="symbol"><A NAME="ref_897_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A>;
<b>begin</b>
- <b>pragma</b> Assert (<A HREF="terminal_interface-curses-menus__ads.htm#ref_616_24">Items</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_616_24">Items</A>'Last) = <A HREF="terminal_interface-curses-menus__ads.htm#ref_62_4">Null_Item</A>);
- <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_616_24">Items</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_616_24">Items</A>'Last) /= <A HREF="terminal_interface-curses-menus__ads.htm#ref_62_4">Null_Item</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_4">Menu_Exception</A>;
+ <b>pragma</b> Assert (<A HREF="terminal_interface-curses-menus__ads.htm#ref_612_24">Items</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_612_24">Items</A>'Last) = <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_4">Null_Item</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_612_24">Items</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_612_24">Items</A>'Last) /= <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_4">Null_Item</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_111_4">Menu_Exception</A>;
<b>else</b>
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_897_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_893_16">Set_Items</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_615_24">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_616_24">Items</A>.<b>all</b>'Address);
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_897_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_897_7">Res</A>);
- <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_781_16">Set_Items</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_611_24">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_612_24">Items</A>.<b>all</b>'Address));
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_615_14">Redefine</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_611_14">Redefine</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_910_13" HREF="terminal_interface-curses-menus__ads.htm#ref_631_13">Item_Count</A></span> (<span class="symbol"><A NAME="ref_910_25" HREF="terminal_interface-curses-menus__ads.htm#ref_631_25">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> Natural
+ <b>function</b> <span class="symbol"><A NAME="ref_794_13" HREF="terminal_interface-curses-menus__ads.htm#ref_627_13">Item_Count</A></span> (<span class="symbol"><A NAME="ref_794_25" HREF="terminal_interface-curses-menus__ads.htm#ref_627_25">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> Natural
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_912_16">Count</A></span> (<span class="symbol"><A NAME="ref_912_23" HREF="terminal_interface-curses-menus__adb.htm#ref_912_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_796_16">Count</A></span> (<span class="symbol"><A NAME="ref_796_23" HREF="terminal_interface-curses-menus__adb.htm#ref_796_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Count, "item_count");
<b>begin</b>
- <b>return</b> Natural (<A HREF="terminal_interface-curses-menus__adb.htm#ref_912_16">Count</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_631_25">Men</A>));
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_631_13">Item_Count</A>;
+ <b>return</b> Natural (<A HREF="terminal_interface-curses-menus__adb.htm#ref_796_16">Count</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_627_25">Men</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_627_13">Item_Count</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_918_13" HREF="terminal_interface-curses-menus__ads.htm#ref_625_13">Items</A></span> (<span class="symbol"><A NAME="ref_918_20" HREF="terminal_interface-curses-menus__ads.htm#ref_625_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_919_20" HREF="terminal_interface-curses-menus__ads.htm#ref_626_20">Index</A></span> : Positive) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_802_13" HREF="terminal_interface-curses-menus__ads.htm#ref_621_13">Items</A></span> (<span class="symbol"><A NAME="ref_802_20" HREF="terminal_interface-curses-menus__ads.htm#ref_621_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_803_20" HREF="terminal_interface-curses-menus__ads.htm#ref_622_20">Index</A></span> : Positive) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>
<b>is</b>
<b>use</b> I_Array;
- <b>function</b> C_Mitems (<span class="symbol"><A NAME="ref_923_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> Pointer;
+ <b>function</b> C_Mitems (<span class="symbol"><A NAME="ref_807_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> Pointer;
<b>pragma</b> Import (C, C_Mitems, "menu_items");
- P : Pointer := C_Mitems (<A HREF="terminal_interface-curses-menus__ads.htm#ref_625_20">Men</A>);
+ P : Pointer := C_Mitems (<A HREF="terminal_interface-curses-menus__ads.htm#ref_621_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#ref_626_20">Index</A> &gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_631_13">Item_Count</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_625_20">Men</A>) <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_4">Menu_Exception</A>;
+ <b>if</b> P = <b>null</b> <b>or</b> <b>else</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_622_20">Index</A> &gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_627_13">Item_Count</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_621_20">Men</A>) <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_111_4">Menu_Exception</A>;
<b>else</b>
- P := P + ptrdiff_t (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_626_20">Index</A>) - 1);
+ P := P + ptrdiff_t (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_622_20">Index</A>) - 1);
<b>return</b> P.<b>all</b>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_625_13">Items</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_621_13">Items</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_937_13" HREF="terminal_interface-curses-menus__ads.htm#ref_640_13">Create</A></span> (<span class="symbol"><A NAME="ref_937_21" HREF="terminal_interface-curses-menus__ads.htm#ref_640_21">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_180_9">Item_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_821_13" HREF="terminal_interface-curses-menus__ads.htm#ref_636_13">Create</A></span> (<span class="symbol"><A NAME="ref_821_21" HREF="terminal_interface-curses-menus__ads.htm#ref_636_21">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_176_9">Item_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_939_16">Newmenu</A></span> (<span class="symbol"><A NAME="ref_939_25" HREF="terminal_interface-curses-menus__adb.htm#ref_939_16">Items</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_823_16">Newmenu</A></span> (<span class="symbol"><A NAME="ref_823_25" HREF="terminal_interface-curses-menus__adb.htm#ref_823_16">Items</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
<b>pragma</b> Import (C, Newmenu, "new_menu");
- <span class="symbol"><A NAME="ref_942_7">M</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_826_7">M</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
<b>begin</b>
- <b>pragma</b> Assert (<A HREF="terminal_interface-curses-menus__ads.htm#ref_640_21">Items</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_640_21">Items</A>'Last) = <A HREF="terminal_interface-curses-menus__ads.htm#ref_62_4">Null_Item</A>);
- <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_640_21">Items</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_640_21">Items</A>'Last) /= <A HREF="terminal_interface-curses-menus__ads.htm#ref_62_4">Null_Item</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_4">Menu_Exception</A>;
+ <b>pragma</b> Assert (<A HREF="terminal_interface-curses-menus__ads.htm#ref_636_21">Items</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_636_21">Items</A>'Last) = <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_4">Null_Item</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_636_21">Items</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_636_21">Items</A>'Last) /= <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_4">Null_Item</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_111_4">Menu_Exception</A>;
<b>else</b>
- <A HREF="terminal_interface-curses-menus__adb.htm#ref_942_7">M</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_939_16">Newmenu</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_640_21">Items</A>.<b>all</b>'Address);
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_942_7">M</A> = <A HREF="terminal_interface-curses-menus__ads.htm#ref_63_4">Null_Menu</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_4">Menu_Exception</A>;
+ <A HREF="terminal_interface-curses-menus__adb.htm#ref_826_7">M</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_823_16">Newmenu</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_636_21">Items</A>.<b>all</b>'Address);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_826_7">M</A> = <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Menu</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_111_4">Menu_Exception</A>;
<b>end</b> <b>if</b>;
- <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_942_7">M</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_826_7">M</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_640_13">Create</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_636_13">Create</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_956_14" HREF="terminal_interface-curses-menus__ads.htm#ref_647_14">Delete</A></span> (<span class="symbol"><A NAME="ref_956_22" HREF="terminal_interface-curses-menus__ads.htm#ref_647_22">Men</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_840_14" HREF="terminal_interface-curses-menus__ads.htm#ref_643_14">Delete</A></span> (<span class="symbol"><A NAME="ref_840_22" HREF="terminal_interface-curses-menus__ads.htm#ref_643_22">Men</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_958_16">Free</A></span> (<span class="symbol"><A NAME="ref_958_22" HREF="terminal_interface-curses-menus__adb.htm#ref_958_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_842_16">Free</A></span> (<span class="symbol"><A NAME="ref_842_22" HREF="terminal_interface-curses-menus__adb.htm#ref_842_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Free, "free_menu");
- <span class="symbol"><A NAME="ref_961_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_958_16">Free</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_647_22">Men</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_961_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_961_7">Res</A>);
- <b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_647_22">Men</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_63_4">Null_Menu</A>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_647_14">Delete</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_842_16">Free</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_643_22">Men</A>));
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_643_22">Men</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Menu</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_643_14">Delete</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_970_13" HREF="terminal_interface-curses-menus__ads.htm#ref_662_13">Driver</A></span> (<span class="symbol"><A NAME="ref_970_21" HREF="terminal_interface-curses-menus__ads.htm#ref_662_21">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_971_21" HREF="terminal_interface-curses-menus__ads.htm#ref_663_21">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_68_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_656_9">Driver_Result</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_851_13" HREF="terminal_interface-curses-menus__ads.htm#ref_658_13">Driver</A></span> (<span class="symbol"><A NAME="ref_851_21" HREF="terminal_interface-curses-menus__ads.htm#ref_658_21">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_852_21" HREF="terminal_interface-curses-menus__ads.htm#ref_659_21">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_66_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_652_9">Driver_Result</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_973_16">Driver</A></span> (<span class="symbol"><A NAME="ref_973_24" HREF="terminal_interface-curses-menus__adb.htm#ref_973_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_974_24" HREF="terminal_interface-curses-menus__adb.htm#ref_973_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_854_16">Driver</A></span> (<span class="symbol"><A NAME="ref_854_24" HREF="terminal_interface-curses-menus__adb.htm#ref_854_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_855_24" HREF="terminal_interface-curses-menus__adb.htm#ref_854_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A>;
<b>pragma</b> Import (C, Driver, "menu_driver");
- <span class="symbol"><A NAME="ref_977_7">R</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_973_16">Driver</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_662_21">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_663_21">Key</A>));
- <b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_977_7">R</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_4">E_Ok</A> <b>then</b>
- <b>case</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_977_7">R</A> <b>is</b>
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_88_4">E_Unknown_Command</A> =&gt; <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_658_27">Unknown_Request</A>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_89_4">E_No_Match</A> =&gt; <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_659_27">No_Match</A>;
- <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_92_4">E_Request_Denied</A> |
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_4">E_Not_Selectable</A> =&gt; <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_657_27">Request_Denied</A>;
- <b>when</b> <b>others</b> =&gt;
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_977_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#ref_656_27">Menu_Ok</A>;
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_662_13">Driver</A>;
+ <span class="symbol"><A NAME="ref_858_7">R</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_69_9">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_854_16">Driver</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_658_21">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_659_21">Key</A>));
+ <b>begin</b>
+ <b>case</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_858_7">R</A> <b>is</b>
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_76_7">E_Unknown_Command</A> =&gt;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_654_27">Unknown_Request</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_7">E_No_Match</A> =&gt;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_655_27">No_Match</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_7">E_Request_Denied</A> | <A HREF="terminal_interface-curses-aux__ads.htm#ref_74_7">E_Not_Selectable</A> =&gt;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_653_27">Request_Denied</A>;
+ <b>when</b> <b>others</b> =&gt;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_86_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_858_7">R</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_652_27">Menu_Ok</A>;
+ <b>end</b> <b>case</b>;
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_658_13">Driver</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_992_14" HREF="terminal_interface-curses-menus__ads.htm#ref_182_14">Free</A></span> (<span class="symbol"><A NAME="ref_992_20" HREF="terminal_interface-curses-menus__ads.htm#ref_182_20">IA</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_180_9">Item_Array_Access</A>;
- <span class="symbol"><A NAME="ref_993_20" HREF="terminal_interface-curses-menus__ads.htm#ref_183_20">Free_Items</A></span> : Boolean := False)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_873_14" HREF="terminal_interface-curses-menus__ads.htm#ref_178_14">Free</A></span> (<span class="symbol"><A NAME="ref_873_20" HREF="terminal_interface-curses-menus__ads.htm#ref_178_20">IA</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_176_9">Item_Array_Access</A>;
+ <span class="symbol"><A NAME="ref_874_20" HREF="terminal_interface-curses-menus__ads.htm#ref_179_20">Free_Items</A></span> : Boolean := False)
<b>is</b>
<b>procedure</b> Release <b>is</b> <b>new</b> Ada.Unchecked_Deallocation
- (Item_Array, <A HREF="terminal_interface-curses-menus__ads.htm#ref_180_9">Item_Array_Access</A>);
+ (Item_Array, <A HREF="terminal_interface-curses-menus__ads.htm#ref_176_9">Item_Array_Access</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_182_20">IA</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_183_20">Free_Items</A> <b>then</b>
- <b>for</b> <span class="symbol"><A NAME="ref_999_14">I</A></span> <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_182_20">IA</A>'First .. (<A HREF="terminal_interface-curses-menus__ads.htm#ref_182_20">IA</A>'Last - 1) <b>loop</b>
- <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_182_20">IA</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_999_14">I</A>) /= <A HREF="terminal_interface-curses-menus__ads.htm#ref_62_4">Null_Item</A> <b>then</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_205_14">Delete</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_182_20">IA</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_999_14">I</A>));
+ <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_178_20">IA</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_179_20">Free_Items</A> <b>then</b>
+ <b>for</b> <span class="symbol"><A NAME="ref_880_14">I</A></span> <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_178_20">IA</A>'First .. (<A HREF="terminal_interface-curses-menus__ads.htm#ref_178_20">IA</A>'Last - 1) <b>loop</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_178_20">IA</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_880_14">I</A>) /= <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_4">Null_Item</A> <b>then</b>
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_201_14">Delete</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_178_20">IA</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_880_14">I</A>));
<b>end</b> <b>if</b>;
<b>end</b> <b>loop</b>;
<b>end</b> <b>if</b>;
- Release (<A HREF="terminal_interface-curses-menus__ads.htm#ref_182_20">IA</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_182_14">Free</A>;
+ Release (<A HREF="terminal_interface-curses-menus__ads.htm#ref_178_20">IA</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_178_14">Free</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1009_13" HREF="terminal_interface-curses-menus__ads.htm#ref_147_13">Default_Menu_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_890_13" HREF="terminal_interface-curses-menus__ads.htm#ref_145_13">Default_Menu_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>
<b>is</b>
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_354_13">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_63_4">Null_Menu</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_147_13">Default_Menu_Options</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_350_13">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Menu</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_145_13">Default_Menu_Options</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_1015_13" HREF="terminal_interface-curses-menus__ads.htm#ref_170_13">Default_Item_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_896_13" HREF="terminal_interface-curses-menus__ads.htm#ref_166_13">Default_Item_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>
<b>is</b>
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_258_13">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_62_4">Null_Item</A>);
- <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_170_13">Default_Item_Options</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_254_13">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_57_4">Null_Item</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_166_13">Default_Item_Options</A>;
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_49_35">Menus</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_45_35">Menus</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-menus__ads.htm b/doc/html/ada/terminal_interface-curses-menus__ads.htm
index 7be457b20bad..a8d9253a6d08 100644
--- a/doc/html/ada/terminal_interface-curses-menus__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-menus__ads.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- S P E C --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2009,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,152 +52,148 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.28 @</EM></span>
-<span class="comment"><EM>-- @Date: 2009/12/26 18:35:22 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.31 @</EM></span>
+<span class="comment"><EM>-- @Date: 2014/05/24 21:31:57 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- menu binding.</EM></span>
-<span class="comment"><EM>-- This module is generated. Please don't change it manually!</EM></span>
-<span class="comment"><EM>-- Run the generator instead.</EM></span>
-<span class="comment"><EM>-- |</EM></span>
<b>with</b> System;
<b>with</b> Ada.Characters.Latin_1;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_49_35" HREF="terminal_interface-curses-menus__adb.htm#ref_51_40">Menus</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_49_35">Menus</A>);
- <b>pragma</b> Linker_Options ("-lmenu");
- <b>pragma</b> Linker_Options ("-lncurses");
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_45_35" HREF="terminal_interface-curses-menus__adb.htm#ref_49_40">Menus</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_45_35">Menus</A>);
+ <b>pragma</b> Linker_Options ("-lmenu" &amp; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_9_4">DFT_ARG_SUFFIX</A>);
Space : Character <b>renames</b> Ada.Characters.Latin_1.Space;
- <b>type</b> <span class="symbol"><A NAME="ref_56_9">Item</A></span> <b>is</b> <b>private</b>;
- <b>type</b> <span class="symbol"><A NAME="ref_57_9">Menu</A></span> <b>is</b> <b>private</b>;
+ <b>type</b> <span class="symbol"><A NAME="ref_51_9">Item</A></span> <b>is</b> <b>private</b>;
+ <b>type</b> <span class="symbol"><A NAME="ref_52_9">Menu</A></span> <b>is</b> <b>private</b>;
<span class="comment"><EM>---------------------------</EM></span>
<span class="comment"><EM>-- Interface constants --</EM></span>
<span class="comment"><EM>---------------------------</EM></span>
- <span class="symbol"><A NAME="ref_62_4">Null_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_63_4">Null_Menu</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_57_4">Null_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_58_4">Null_Menu</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
- <b>subtype</b> <span class="symbol"><A NAME="ref_65_12">Menu_Request_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_68_9">Key_Code</A>
- <b>range</b> (<A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 1) .. (<A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 17);
+ <b>subtype</b> <span class="symbol"><A NAME="ref_60_12">Menu_Request_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_66_9">Key_Code</A>
+ <b>range</b> (<A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 1) .. (<A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 17);
<span class="comment"><EM>-- The prefix M_ stands for "Menu Request"</EM></span>
- <span class="symbol"><A NAME="ref_69_4">M_Left_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 1;
- <span class="symbol"><A NAME="ref_70_4">M_Right_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 2;
- <span class="symbol"><A NAME="ref_71_4">M_Up_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 3;
- <span class="symbol"><A NAME="ref_72_4">M_Down_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 4;
- <span class="symbol"><A NAME="ref_73_4">M_ScrollUp_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 5;
- <span class="symbol"><A NAME="ref_74_4">M_ScrollDown_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 6;
- <span class="symbol"><A NAME="ref_75_4">M_ScrollDown_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 7;
- <span class="symbol"><A NAME="ref_76_4">M_ScrollUp_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 8;
- <span class="symbol"><A NAME="ref_77_4">M_First_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 9;
- <span class="symbol"><A NAME="ref_78_4">M_Last_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 10;
- <span class="symbol"><A NAME="ref_79_4">M_Next_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 11;
- <span class="symbol"><A NAME="ref_80_4">M_Previous_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 12;
- <span class="symbol"><A NAME="ref_81_4">M_Toggle_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 13;
- <span class="symbol"><A NAME="ref_82_4">M_Clear_Pattern</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 14;
- <span class="symbol"><A NAME="ref_83_4">M_Back_Pattern</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 15;
- <span class="symbol"><A NAME="ref_84_4">M_Next_Match</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 16;
- <span class="symbol"><A NAME="ref_85_4">M_Previous_Match</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 17;
+ <span class="symbol"><A NAME="ref_64_4">M_Left_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 1;
+ <span class="symbol"><A NAME="ref_65_4">M_Right_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 2;
+ <span class="symbol"><A NAME="ref_66_4">M_Up_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 3;
+ <span class="symbol"><A NAME="ref_67_4">M_Down_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 4;
+ <span class="symbol"><A NAME="ref_68_4">M_ScrollUp_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 5;
+ <span class="symbol"><A NAME="ref_69_4">M_ScrollDown_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 6;
+ <span class="symbol"><A NAME="ref_70_4">M_ScrollDown_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 7;
+ <span class="symbol"><A NAME="ref_71_4">M_ScrollUp_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 8;
+ <span class="symbol"><A NAME="ref_72_4">M_First_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 9;
+ <span class="symbol"><A NAME="ref_73_4">M_Last_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 10;
+ <span class="symbol"><A NAME="ref_74_4">M_Next_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 11;
+ <span class="symbol"><A NAME="ref_75_4">M_Previous_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 12;
+ <span class="symbol"><A NAME="ref_76_4">M_Toggle_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 13;
+ <span class="symbol"><A NAME="ref_77_4">M_Clear_Pattern</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 14;
+ <span class="symbol"><A NAME="ref_78_4">M_Back_Pattern</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 15;
+ <span class="symbol"><A NAME="ref_79_4">M_Next_Match</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 16;
+ <span class="symbol"><A NAME="ref_80_4">M_Previous_Match</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 17;
<span class="comment"><EM>-- For those who like the old 'C' names for the request codes</EM></span>
- REQ_LEFT_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_69_4">M_Left_Item</A>;
- REQ_RIGHT_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_70_4">M_Right_Item</A>;
- REQ_UP_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_71_4">M_Up_Item</A>;
- REQ_DOWN_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_72_4">M_Down_Item</A>;
- REQ_SCR_ULINE : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_73_4">M_ScrollUp_Line</A>;
- REQ_SCR_DLINE : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_74_4">M_ScrollDown_Line</A>;
- REQ_SCR_DPAGE : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_75_4">M_ScrollDown_Page</A>;
- REQ_SCR_UPAGE : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_76_4">M_ScrollUp_Page</A>;
- REQ_FIRST_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_77_4">M_First_Item</A>;
- REQ_LAST_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_78_4">M_Last_Item</A>;
- REQ_NEXT_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_79_4">M_Next_Item</A>;
- REQ_PREV_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_80_4">M_Previous_Item</A>;
- REQ_TOGGLE_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_81_4">M_Toggle_Item</A>;
- REQ_CLEAR_PATTERN : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_82_4">M_Clear_Pattern</A>;
- REQ_BACK_PATTERN : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_83_4">M_Back_Pattern</A>;
- REQ_NEXT_MATCH : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_84_4">M_Next_Match</A>;
- REQ_PREV_MATCH : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_85_4">M_Previous_Match</A>;
-
- <b>procedure</b> <span class="symbol"><A NAME="ref_106_14" HREF="terminal_interface-curses-menus__adb.htm#ref_77_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_106_28" HREF="terminal_interface-curses-menus__adb.htm#ref_77_28">Key</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A>;
- <span class="symbol"><A NAME="ref_107_28" HREF="terminal_interface-curses-menus__adb.htm#ref_78_28">Name</A></span> : <b>out</b> String);
-
- <b>function</b> <span class="symbol"><A NAME="ref_109_14" HREF="terminal_interface-curses-menus__adb.htm#ref_86_13">Request_Name</A></span> (<span class="symbol"><A NAME="ref_109_28" HREF="terminal_interface-curses-menus__adb.htm#ref_86_27">Key</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_12">Menu_Request_Code</A>) <b>return</b> String;
+ REQ_LEFT_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_64_4">M_Left_Item</A>;
+ REQ_RIGHT_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_4">M_Right_Item</A>;
+ REQ_UP_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_66_4">M_Up_Item</A>;
+ REQ_DOWN_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_67_4">M_Down_Item</A>;
+ REQ_SCR_ULINE : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_68_4">M_ScrollUp_Line</A>;
+ REQ_SCR_DLINE : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_69_4">M_ScrollDown_Line</A>;
+ REQ_SCR_DPAGE : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_70_4">M_ScrollDown_Page</A>;
+ REQ_SCR_UPAGE : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_71_4">M_ScrollUp_Page</A>;
+ REQ_FIRST_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_72_4">M_First_Item</A>;
+ REQ_LAST_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_73_4">M_Last_Item</A>;
+ REQ_NEXT_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_74_4">M_Next_Item</A>;
+ REQ_PREV_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_75_4">M_Previous_Item</A>;
+ REQ_TOGGLE_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_76_4">M_Toggle_Item</A>;
+ REQ_CLEAR_PATTERN : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_77_4">M_Clear_Pattern</A>;
+ REQ_BACK_PATTERN : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_78_4">M_Back_Pattern</A>;
+ REQ_NEXT_MATCH : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_79_4">M_Next_Match</A>;
+ REQ_PREV_MATCH : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_80_4">M_Previous_Match</A>;
+
+ <b>procedure</b> <span class="symbol"><A NAME="ref_101_14" HREF="terminal_interface-curses-menus__adb.htm#ref_58_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_101_28" HREF="terminal_interface-curses-menus__adb.htm#ref_58_28">Key</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A>;
+ <span class="symbol"><A NAME="ref_102_28" HREF="terminal_interface-curses-menus__adb.htm#ref_59_28">Name</A></span> : <b>out</b> String);
+
+ <b>function</b> <span class="symbol"><A NAME="ref_104_14" HREF="terminal_interface-curses-menus__adb.htm#ref_67_13">Request_Name</A></span> (<span class="symbol"><A NAME="ref_104_28" HREF="terminal_interface-curses-menus__adb.htm#ref_67_27">Key</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_60_12">Menu_Request_Code</A>) <b>return</b> String;
<span class="comment"><EM>-- Same as function</EM></span>
<span class="comment"><EM>------------------</EM></span>
<span class="comment"><EM>-- Exceptions --</EM></span>
<span class="comment"><EM>------------------</EM></span>
- <span class="symbol"><A NAME="ref_116_4">Menu_Exception</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_111_4">Menu_Exception</A></span> : <b>exception</b>;
<span class="comment"><EM>--</EM></span>
<span class="comment"><EM>-- Menu options</EM></span>
<span class="comment"><EM>--</EM></span>
- <b>pragma</b> Warnings (Off);
- <b>type</b> <span class="symbol"><A NAME="ref_121_9">Menu_Option_Set</A></span> <b>is</b>
+ <b>type</b> <span class="symbol"><A NAME="ref_115_9">Menu_Option_Set</A></span> <b>is</b>
<b>record</b>
- <span class="symbol"><A NAME="ref_123_10">One_Valued</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_124_10">Show_Descriptions</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_125_10">Row_Major_Order</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_126_10">Ignore_Case</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_127_10">Show_Matches</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_128_10">Non_Cyclic</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_117_10">One_Valued</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_118_10">Show_Descriptions</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_119_10">Row_Major_Order</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_120_10">Ignore_Case</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_121_10">Show_Matches</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_122_10">Non_Cyclic</A></span> : Boolean;
<b>end</b> <b>record</b>;
- <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A>);
+ <b>pragma</b> Convention (C_Pass_By_Copy, <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>);
- <b>for</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A> <b>use</b>
+ <b>for</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A> <b>use</b>
<b>record</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_123_10">One_Valued</A> <b>at</b> 0 <b>range</b> 0 .. 0;
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_124_10">Show_Descriptions</A> <b>at</b> 0 <b>range</b> 1 .. 1;
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_125_10">Row_Major_Order</A> <b>at</b> 0 <b>range</b> 2 .. 2;
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_126_10">Ignore_Case</A> <b>at</b> 0 <b>range</b> 3 .. 3;
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_127_10">Show_Matches</A> <b>at</b> 0 <b>range</b> 4 .. 4;
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_128_10">Non_Cyclic</A> <b>at</b> 0 <b>range</b> 5 .. 5;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_117_10">One_Valued</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_257_4">O_ONEVALUE_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_258_4">O_ONEVALUE_Last</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_118_10">Show_Descriptions</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_259_4">O_SHOWDESC_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_260_4">O_SHOWDESC_Last</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_119_10">Row_Major_Order</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_261_4">O_ROWMAJOR_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_262_4">O_ROWMAJOR_Last</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_120_10">Ignore_Case</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_263_4">O_IGNORECASE_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_264_4">O_IGNORECASE_Last</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_10">Show_Matches</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_265_4">O_SHOWMATCH_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_266_4">O_SHOWMATCH_Last</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_122_10">Non_Cyclic</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_267_4">O_NONCYCLIC_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_268_4">O_NONCYCLIC_Last</A>;
<b>end</b> <b>record</b>;
- <b>pragma</b> Warnings (Off); <b>for</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A>'Size <b>use</b> 32;
- <b>pragma</b> Warnings (On);
- <span class="comment"><EM>-- Please note: this rep. clause is generated and may be</EM></span>
- <span class="comment"><EM>-- different on your system.</EM></span>
+ <b>pragma</b> Warnings (Off);
+ <b>for</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>'Size <b>use</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_269_4">Menu_Options_Size</A>;
<b>pragma</b> Warnings (On);
- <b>function</b> <span class="symbol"><A NAME="ref_147_13" HREF="terminal_interface-curses-menus__adb.htm#ref_1009_13">Default_Menu_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_145_13" HREF="terminal_interface-curses-menus__adb.htm#ref_890_13">Default_Menu_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>;
<span class="comment"><EM>-- Initial default options for a menu.</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_147_13">Default_Menu_Options</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_145_13">Default_Menu_Options</A>);
<span class="comment"><EM>--</EM></span>
<span class="comment"><EM>-- Item options</EM></span>
<span class="comment"><EM>--</EM></span>
- <b>pragma</b> Warnings (Off);
- <b>type</b> <span class="symbol"><A NAME="ref_154_9">Item_Option_Set</A></span> <b>is</b>
+ <b>type</b> <span class="symbol"><A NAME="ref_151_9">Item_Option_Set</A></span> <b>is</b>
<b>record</b>
- <span class="symbol"><A NAME="ref_156_10">Selectable</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_153_10">Selectable</A></span> : Boolean;
<b>end</b> <b>record</b>;
- <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A>);
+ <b>pragma</b> Convention (C_Pass_By_Copy, <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>);
- <b>for</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A> <b>use</b>
+ <b>for</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A> <b>use</b>
<b>record</b>
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_156_10">Selectable</A> <b>at</b> 0 <b>range</b> 0 .. 0;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_153_10">Selectable</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_273_4">O_SELECTABLE_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_274_4">O_SELECTABLE_Last</A>;
<b>end</b> <b>record</b>;
- <b>pragma</b> Warnings (Off); <b>for</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A>'Size <b>use</b> 32;
- <b>pragma</b> Warnings (On);
- <span class="comment"><EM>-- Please note: this rep. clause is generated and may be</EM></span>
- <span class="comment"><EM>-- different on your system.</EM></span>
+ <b>pragma</b> Warnings (Off);
+ <b>for</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>'Size <b>use</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_275_4">Item_Options_Size</A>;
<b>pragma</b> Warnings (On);
- <b>function</b> <span class="symbol"><A NAME="ref_170_13" HREF="terminal_interface-curses-menus__adb.htm#ref_1015_13">Default_Item_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_166_13" HREF="terminal_interface-curses-menus__adb.htm#ref_896_13">Default_Item_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>;
<span class="comment"><EM>-- Initial default options for an item.</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_170_13">Default_Item_Options</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_166_13">Default_Item_Options</A>);
<span class="comment"><EM>--</EM></span>
<span class="comment"><EM>-- Item Array</EM></span>
<span class="comment"><EM>--</EM></span>
- <b>type</b> Item_Array <b>is</b> <b>array</b> (Positive <b>range</b> &lt;&gt;) <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
+ <b>type</b> Item_Array <b>is</b> <b>array</b> (Positive <b>range</b> &lt;&gt;) <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
<b>pragma</b> Convention (C, Item_Array);
- <b>type</b> <span class="symbol"><A NAME="ref_180_9">Item_Array_Access</A></span> <b>is</b> <b>access</b> Item_Array;
+ <b>type</b> <span class="symbol"><A NAME="ref_176_9">Item_Array_Access</A></span> <b>is</b> <b>access</b> Item_Array;
- <b>procedure</b> <span class="symbol"><A NAME="ref_182_14" HREF="terminal_interface-curses-menus__adb.htm#ref_992_14">Free</A></span> (<span class="symbol"><A NAME="ref_182_20" HREF="terminal_interface-curses-menus__adb.htm#ref_992_20">IA</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_180_9">Item_Array_Access</A>;
- <span class="symbol"><A NAME="ref_183_20" HREF="terminal_interface-curses-menus__adb.htm#ref_993_20">Free_Items</A></span> : Boolean := False);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_178_14" HREF="terminal_interface-curses-menus__adb.htm#ref_873_14">Free</A></span> (<span class="symbol"><A NAME="ref_178_20" HREF="terminal_interface-curses-menus__adb.htm#ref_873_20">IA</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_176_9">Item_Array_Access</A>;
+ <span class="symbol"><A NAME="ref_179_20" HREF="terminal_interface-curses-menus__adb.htm#ref_874_20">Free_Items</A></span> : Boolean := False);
<span class="comment"><EM>-- Release the memory for an allocated item array</EM></span>
<span class="comment"><EM>-- If Free_Items is True, call Delete() for all the items in</EM></span>
<span class="comment"><EM>-- the array.</EM></span>
@@ -206,20 +202,20 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/mitem_new.3x.html">mitem_new.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_1"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_193_13" HREF="terminal_interface-curses-menus__adb.htm#ref_94_13">Create</A></span> (<span class="symbol"><A NAME="ref_193_21" HREF="terminal_interface-curses-menus__adb.htm#ref_94_21">Name</A></span> : String;
- <span class="symbol"><A NAME="ref_194_21" HREF="terminal_interface-curses-menus__adb.htm#ref_95_21">Description</A></span> : String := "") <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_189_13" HREF="terminal_interface-curses-menus__adb.htm#ref_75_13">Create</A></span> (<span class="symbol"><A NAME="ref_189_21" HREF="terminal_interface-curses-menus__adb.htm#ref_75_21">Name</A></span> : String;
+ <span class="symbol"><A NAME="ref_190_21" HREF="terminal_interface-curses-menus__adb.htm#ref_76_21">Description</A></span> : String := "") <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_new.3x.html">new_item()</A></EM></span>
<span class="comment"><EM>-- Not inlined.</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_2"#2|</EM></span>
- <b>function</b> New_Item (<span class="symbol"><A NAME="ref_199_23">Name</A></span> : String;
- <span class="symbol"><A NAME="ref_200_23">Description</A></span> : String := "") <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>
- <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_193_13">Create</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span>
+ <b>function</b> New_Item (<span class="symbol"><A NAME="ref_195_23">Name</A></span> : String;
+ <span class="symbol"><A NAME="ref_196_23">Description</A></span> : String := "") <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>
+ <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_189_13">Create</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_new.3x.html">new_item()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_3"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_205_14" HREF="terminal_interface-curses-menus__adb.htm#ref_124_14">Delete</A></span> (<span class="symbol"><A NAME="ref_205_22" HREF="terminal_interface-curses-menus__adb.htm#ref_124_22">Itm</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_201_14" HREF="terminal_interface-curses-menus__adb.htm#ref_105_14">Delete</A></span> (<span class="symbol"><A NAME="ref_201_22" HREF="terminal_interface-curses-menus__adb.htm#ref_105_22">Itm</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_new.3x.html">free_item()</A></EM></span>
<span class="comment"><EM>-- Resets Itm to Null_Item</EM></span>
@@ -227,52 +223,52 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/mitem_value.3x.html">mitem_value.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_4"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_214_14" HREF="terminal_interface-curses-menus__adb.htm#ref_152_14">Set_Value</A></span> (<span class="symbol"><A NAME="ref_214_25" HREF="terminal_interface-curses-menus__adb.htm#ref_152_25">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_215_25" HREF="terminal_interface-curses-menus__adb.htm#ref_153_25">Value</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_4">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_210_14" HREF="terminal_interface-curses-menus__adb.htm#ref_129_14">Set_Value</A></span> (<span class="symbol"><A NAME="ref_210_25" HREF="terminal_interface-curses-menus__adb.htm#ref_129_25">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_211_25" HREF="terminal_interface-curses-menus__adb.htm#ref_130_25">Value</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_value.3x.html">set_item_value()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_214_14">Set_Value</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_210_14">Set_Value</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_5"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_220_13" HREF="terminal_interface-curses-menus__adb.htm#ref_166_13">Value</A></span> (<span class="symbol"><A NAME="ref_220_20" HREF="terminal_interface-curses-menus__adb.htm#ref_166_20">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_5">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_216_13" HREF="terminal_interface-curses-menus__adb.htm#ref_140_13">Value</A></span> (<span class="symbol"><A NAME="ref_216_20" HREF="terminal_interface-curses-menus__adb.htm#ref_140_20">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_value.3x.html">item_value()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_220_13">Value</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_216_13">Value</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/mitem_visible.3x.html">mitem_visible.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_6"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_229_13" HREF="terminal_interface-curses-menus__adb.htm#ref_179_13">Visible</A></span> (<span class="symbol"><A NAME="ref_229_22" HREF="terminal_interface-curses-menus__adb.htm#ref_179_22">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_6">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_225_13" HREF="terminal_interface-curses-menus__adb.htm#ref_153_13">Visible</A></span> (<span class="symbol"><A NAME="ref_225_22" HREF="terminal_interface-curses-menus__adb.htm#ref_153_22">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_visible.3x.html">item_visible()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_229_13">Visible</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_225_13">Visible</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/mitem_opts.3x.html">mitem_opts.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_7"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_238_14" HREF="terminal_interface-curses-menus__adb.htm#ref_191_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_238_27" HREF="terminal_interface-curses-menus__adb.htm#ref_191_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_239_27" HREF="terminal_interface-curses-menus__adb.htm#ref_192_27">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_7">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_234_14" HREF="terminal_interface-curses-menus__adb.htm#ref_165_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_234_27" HREF="terminal_interface-curses-menus__adb.htm#ref_165_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_235_27" HREF="terminal_interface-curses-menus__adb.htm#ref_166_27">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">set_item_opts()</A></EM></span>
<span class="comment"><EM>-- An overloaded Set_Options is defined later. Pragma Inline appears there</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_8"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_244_14" HREF="terminal_interface-curses-menus__adb.htm#ref_207_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_244_30" HREF="terminal_interface-curses-menus__adb.htm#ref_207_30">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_245_30" HREF="terminal_interface-curses-menus__adb.htm#ref_208_30">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A>;
- <span class="symbol"><A NAME="ref_246_30" HREF="terminal_interface-curses-menus__adb.htm#ref_209_30">On</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_8">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_240_14" HREF="terminal_interface-curses-menus__adb.htm#ref_176_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_240_30" HREF="terminal_interface-curses-menus__adb.htm#ref_176_30">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_241_30" HREF="terminal_interface-curses-menus__adb.htm#ref_177_30">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>;
+ <span class="symbol"><A NAME="ref_242_30" HREF="terminal_interface-curses-menus__adb.htm#ref_178_30">On</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">item_opts_on()</A></EM></span>
<span class="comment"><EM>-- AKA: item_opts_off()</EM></span>
<span class="comment"><EM>-- An overloaded Switch_Options is defined later.</EM></span>
<span class="comment"><EM>-- Pragma Inline appears there</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_9"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_253_14" HREF="terminal_interface-curses-menus__adb.htm#ref_231_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_253_27" HREF="terminal_interface-curses-menus__adb.htm#ref_231_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_254_27" HREF="terminal_interface-curses-menus__adb.htm#ref_232_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_9">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_249_14" HREF="terminal_interface-curses-menus__adb.htm#ref_195_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_249_27" HREF="terminal_interface-curses-menus__adb.htm#ref_195_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_250_27" HREF="terminal_interface-curses-menus__adb.htm#ref_196_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">item_opts()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_10"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_258_13" HREF="terminal_interface-curses-menus__adb.htm#ref_242_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_258_26" HREF="terminal_interface-curses-menus__adb.htm#ref_242_26">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_62_4">Null_Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_9">Item_Option_Set</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_10">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_254_13" HREF="terminal_interface-curses-menus__adb.htm#ref_205_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_254_26" HREF="terminal_interface-curses-menus__adb.htm#ref_205_26">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_4">Null_Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_151_9">Item_Option_Set</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">item_opts()</A></EM></span>
<span class="comment"><EM>-- An overloaded Get_Options is defined later. Pragma Inline appears there</EM></span>
@@ -280,21 +276,21 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/mitem_name.3x.html">mitem_name.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_11"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_267_14" HREF="terminal_interface-curses-menus__adb.htm#ref_250_14">Name</A></span> (<span class="symbol"><A NAME="ref_267_20" HREF="terminal_interface-curses-menus__adb.htm#ref_250_20">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_268_20" HREF="terminal_interface-curses-menus__adb.htm#ref_251_20">Name</A></span> : <b>out</b> String);
+ <span class="comment"><EM>-- <A NAME="AFU_11">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_263_14" HREF="terminal_interface-curses-menus__adb.htm#ref_213_14">Name</A></span> (<span class="symbol"><A NAME="ref_263_20" HREF="terminal_interface-curses-menus__adb.htm#ref_213_20">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_264_20" HREF="terminal_interface-curses-menus__adb.htm#ref_214_20">Name</A></span> : <b>out</b> String);
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_name()</A></EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_270_14" HREF="terminal_interface-curses-menus__adb.htm#ref_259_13">Name</A></span> (<span class="symbol"><A NAME="ref_270_20" HREF="terminal_interface-curses-menus__adb.htm#ref_259_19">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> String;
+ <b>function</b> <span class="symbol"><A NAME="ref_266_14" HREF="terminal_interface-curses-menus__adb.htm#ref_222_13">Name</A></span> (<span class="symbol"><A NAME="ref_266_20" HREF="terminal_interface-curses-menus__adb.htm#ref_222_19">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> String;
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_name()</A></EM></span>
<span class="comment"><EM>-- Implemented as function</EM></span>
<b>pragma</b> Inline (Name);
- <span class="comment"><EM>-- #1A NAME="AFU_12"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_276_14" HREF="terminal_interface-curses-menus__adb.htm#ref_267_14">Description</A></span> (<span class="symbol"><A NAME="ref_276_27" HREF="terminal_interface-curses-menus__adb.htm#ref_267_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
- <span class="symbol"><A NAME="ref_277_27" HREF="terminal_interface-curses-menus__adb.htm#ref_268_27">Description</A></span> : <b>out</b> String);
+ <span class="comment"><EM>-- <A NAME="AFU_12">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_272_14" HREF="terminal_interface-curses-menus__adb.htm#ref_230_14">Description</A></span> (<span class="symbol"><A NAME="ref_272_27" HREF="terminal_interface-curses-menus__adb.htm#ref_230_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
+ <span class="symbol"><A NAME="ref_273_27" HREF="terminal_interface-curses-menus__adb.htm#ref_231_27">Description</A></span> : <b>out</b> String);
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_description();</A></EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_280_14" HREF="terminal_interface-curses-menus__adb.htm#ref_276_13">Description</A></span> (<span class="symbol"><A NAME="ref_280_27" HREF="terminal_interface-curses-menus__adb.htm#ref_276_26">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> String;
+ <b>function</b> <span class="symbol"><A NAME="ref_276_14" HREF="terminal_interface-curses-menus__adb.htm#ref_239_13">Description</A></span> (<span class="symbol"><A NAME="ref_276_27" HREF="terminal_interface-curses-menus__adb.htm#ref_239_26">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> String;
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_description();</A></EM></span>
<span class="comment"><EM>-- Implemented as function</EM></span>
<b>pragma</b> Inline (Description);
@@ -303,72 +299,72 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/mitem_current.3x.html">mitem_current.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_13"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_290_14" HREF="terminal_interface-curses-menus__adb.htm#ref_284_14">Set_Current</A></span> (<span class="symbol"><A NAME="ref_290_27" HREF="terminal_interface-curses-menus__adb.htm#ref_284_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_291_27" HREF="terminal_interface-curses-menus__adb.htm#ref_285_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_13">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_286_14" HREF="terminal_interface-curses-menus__adb.htm#ref_247_14">Set_Current</A></span> (<span class="symbol"><A NAME="ref_286_27" HREF="terminal_interface-curses-menus__adb.htm#ref_247_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_287_27" HREF="terminal_interface-curses-menus__adb.htm#ref_248_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">set_current_item()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_290_14">Set_Current</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_286_14">Set_Current</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_14"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_296_13" HREF="terminal_interface-curses-menus__adb.htm#ref_298_13">Current</A></span> (<span class="symbol"><A NAME="ref_296_22" HREF="terminal_interface-curses-menus__adb.htm#ref_298_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_14">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_292_13" HREF="terminal_interface-curses-menus__adb.htm#ref_258_13">Current</A></span> (<span class="symbol"><A NAME="ref_292_22" HREF="terminal_interface-curses-menus__adb.htm#ref_258_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">current_item()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_296_13">Current</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_292_13">Current</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_15"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_301_14" HREF="terminal_interface-curses-menus__adb.htm#ref_311_14">Set_Top_Row</A></span> (<span class="symbol"><A NAME="ref_301_27" HREF="terminal_interface-curses-menus__adb.htm#ref_311_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_302_27" HREF="terminal_interface-curses-menus__adb.htm#ref_312_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_15">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_297_14" HREF="terminal_interface-curses-menus__adb.htm#ref_271_14">Set_Top_Row</A></span> (<span class="symbol"><A NAME="ref_297_27" HREF="terminal_interface-curses-menus__adb.htm#ref_271_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_298_27" HREF="terminal_interface-curses-menus__adb.htm#ref_272_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">set_top_row()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_301_14">Set_Top_Row</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_297_14">Set_Top_Row</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_16"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_307_13" HREF="terminal_interface-curses-menus__adb.htm#ref_325_13">Top_Row</A></span> (<span class="symbol"><A NAME="ref_307_22" HREF="terminal_interface-curses-menus__adb.htm#ref_325_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_16">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_303_13" HREF="terminal_interface-curses-menus__adb.htm#ref_282_13">Top_Row</A></span> (<span class="symbol"><A NAME="ref_303_22" HREF="terminal_interface-curses-menus__adb.htm#ref_282_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">top_row()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_307_13">Top_Row</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_303_13">Top_Row</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_17"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_312_13" HREF="terminal_interface-curses-menus__adb.htm#ref_338_13">Get_Index</A></span> (<span class="symbol"><A NAME="ref_312_24" HREF="terminal_interface-curses-menus__adb.htm#ref_338_24">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>) <b>return</b> Positive;
+ <span class="comment"><EM>-- <A NAME="AFU_17">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_308_13" HREF="terminal_interface-curses-menus__adb.htm#ref_295_13">Get_Index</A></span> (<span class="symbol"><A NAME="ref_308_24" HREF="terminal_interface-curses-menus__adb.htm#ref_295_24">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>) <b>return</b> Positive;
<span class="comment"><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">item_index()</A></EM></span>
<span class="comment"><EM>-- Please note that in this binding we start the numbering of items</EM></span>
<span class="comment"><EM>-- with 1. So this is number is one more than you get from the low</EM></span>
<span class="comment"><EM>-- level call.</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_312_13">Get_Index</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_308_13">Get_Index</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/menu_post.3x.html">menu_post.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_18"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_324_14" HREF="terminal_interface-curses-menus__adb.htm#ref_351_14">Post</A></span> (<span class="symbol"><A NAME="ref_324_20" HREF="terminal_interface-curses-menus__adb.htm#ref_351_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_325_20" HREF="terminal_interface-curses-menus__adb.htm#ref_352_20">Post</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_18">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_320_14" HREF="terminal_interface-curses-menus__adb.htm#ref_308_14">Post</A></span> (<span class="symbol"><A NAME="ref_320_20" HREF="terminal_interface-curses-menus__adb.htm#ref_308_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_321_20" HREF="terminal_interface-curses-menus__adb.htm#ref_309_20">Post</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_post.3x.html">post_menu()</A></EM></span>
<span class="comment"><EM>-- AKA: unpost_menu()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_324_14">Post</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_320_14">Post</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/menu_opts.3x.html">menu_opts.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_19"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_335_14" HREF="terminal_interface-curses-menus__adb.htm#ref_371_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_335_27" HREF="terminal_interface-curses-menus__adb.htm#ref_371_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_336_27" HREF="terminal_interface-curses-menus__adb.htm#ref_372_27">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_19">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_331_14" HREF="terminal_interface-curses-menus__adb.htm#ref_324_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_331_27" HREF="terminal_interface-curses-menus__adb.htm#ref_324_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_332_27" HREF="terminal_interface-curses-menus__adb.htm#ref_325_27">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">set_menu_opts()</A></EM></span>
<b>pragma</b> Inline (Set_Options);
- <span class="comment"><EM>-- #1A NAME="AFU_20"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_341_14" HREF="terminal_interface-curses-menus__adb.htm#ref_387_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_341_30" HREF="terminal_interface-curses-menus__adb.htm#ref_387_30">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_342_30" HREF="terminal_interface-curses-menus__adb.htm#ref_388_30">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A>;
- <span class="symbol"><A NAME="ref_343_30" HREF="terminal_interface-curses-menus__adb.htm#ref_389_30">On</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_20">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_337_14" HREF="terminal_interface-curses-menus__adb.htm#ref_335_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_337_30" HREF="terminal_interface-curses-menus__adb.htm#ref_335_30">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_338_30" HREF="terminal_interface-curses-menus__adb.htm#ref_336_30">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>;
+ <span class="symbol"><A NAME="ref_339_30" HREF="terminal_interface-curses-menus__adb.htm#ref_337_30">On</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">menu_opts_on()</A></EM></span>
<span class="comment"><EM>-- AKA: menu_opts_off()</EM></span>
<b>pragma</b> Inline (Switch_Options);
- <span class="comment"><EM>-- #1A NAME="AFU_21"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_349_14" HREF="terminal_interface-curses-menus__adb.htm#ref_411_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_349_27" HREF="terminal_interface-curses-menus__adb.htm#ref_411_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_350_27" HREF="terminal_interface-curses-menus__adb.htm#ref_412_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_21">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_345_14" HREF="terminal_interface-curses-menus__adb.htm#ref_354_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_345_27" HREF="terminal_interface-curses-menus__adb.htm#ref_354_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_346_27" HREF="terminal_interface-curses-menus__adb.htm#ref_355_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">menu_opts()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_22"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_354_13" HREF="terminal_interface-curses-menus__adb.htm#ref_422_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_354_26" HREF="terminal_interface-curses-menus__adb.htm#ref_422_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_63_4">Null_Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_9">Menu_Option_Set</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_22">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_350_13" HREF="terminal_interface-curses-menus__adb.htm#ref_364_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_350_26" HREF="terminal_interface-curses-menus__adb.htm#ref_364_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_115_9">Menu_Option_Set</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">menu_opts()</A></EM></span>
<b>pragma</b> Inline (Get_Options);
@@ -376,60 +372,60 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/menu_win.3x.html">menu_win.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_23"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_363_14" HREF="terminal_interface-curses-menus__adb.htm#ref_430_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_363_26" HREF="terminal_interface-curses-menus__adb.htm#ref_430_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_364_26" HREF="terminal_interface-curses-menus__adb.htm#ref_431_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_23">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_359_14" HREF="terminal_interface-curses-menus__adb.htm#ref_372_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_359_26" HREF="terminal_interface-curses-menus__adb.htm#ref_372_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_360_26" HREF="terminal_interface-curses-menus__adb.htm#ref_373_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_win.3x.html">set_menu_win()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_363_14">Set_Window</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_359_14">Set_Window</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_24"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_369_13" HREF="terminal_interface-curses-menus__adb.htm#ref_444_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_369_25" HREF="terminal_interface-curses-menus__adb.htm#ref_444_25">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_24">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_365_13" HREF="terminal_interface-curses-menus__adb.htm#ref_383_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_365_25" HREF="terminal_interface-curses-menus__adb.htm#ref_383_25">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_win.3x.html">menu_win()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_369_13">Get_Window</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_365_13">Get_Window</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_25"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_374_14" HREF="terminal_interface-curses-menus__adb.htm#ref_454_14">Set_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_374_30" HREF="terminal_interface-curses-menus__adb.htm#ref_454_30">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_375_30" HREF="terminal_interface-curses-menus__adb.htm#ref_455_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_25">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_370_14" HREF="terminal_interface-curses-menus__adb.htm#ref_393_14">Set_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_370_30" HREF="terminal_interface-curses-menus__adb.htm#ref_393_30">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_371_30" HREF="terminal_interface-curses-menus__adb.htm#ref_394_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_win.3x.html">set_menu_sub()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_374_14">Set_Sub_Window</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_370_14">Set_Sub_Window</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_26"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_380_13" HREF="terminal_interface-curses-menus__adb.htm#ref_468_13">Get_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_380_29" HREF="terminal_interface-curses-menus__adb.htm#ref_468_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_26">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_376_13" HREF="terminal_interface-curses-menus__adb.htm#ref_404_13">Get_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_376_29" HREF="terminal_interface-curses-menus__adb.htm#ref_404_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_win.3x.html">menu_sub()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_380_13">Get_Sub_Window</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_376_13">Get_Sub_Window</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_27"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_385_14" HREF="terminal_interface-curses-menus__adb.htm#ref_478_14">Scale</A></span> (<span class="symbol"><A NAME="ref_385_21" HREF="terminal_interface-curses-menus__adb.htm#ref_478_21">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_386_21" HREF="terminal_interface-curses-menus__adb.htm#ref_479_21">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_387_21" HREF="terminal_interface-curses-menus__adb.htm#ref_480_21">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_27">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_381_14" HREF="terminal_interface-curses-menus__adb.htm#ref_414_14">Scale</A></span> (<span class="symbol"><A NAME="ref_381_21" HREF="terminal_interface-curses-menus__adb.htm#ref_414_21">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_382_21" HREF="terminal_interface-curses-menus__adb.htm#ref_415_21">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_383_21" HREF="terminal_interface-curses-menus__adb.htm#ref_416_21">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_win.3x.html">scale_menu()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_385_14">Scale</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_381_14">Scale</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/menu_cursor.3x.html">menu_cursor.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_28"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_396_14" HREF="terminal_interface-curses-menus__adb.htm#ref_497_14">Position_Cursor</A></span> (<span class="symbol"><A NAME="ref_396_31" HREF="terminal_interface-curses-menus__adb.htm#ref_497_31">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_28">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_392_14" HREF="terminal_interface-curses-menus__adb.htm#ref_430_14">Position_Cursor</A></span> (<span class="symbol"><A NAME="ref_392_31" HREF="terminal_interface-curses-menus__adb.htm#ref_430_31">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_cursor.3x.html">pos_menu_cursor()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_396_14">Position_Cursor</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_392_14">Position_Cursor</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/menu_mark.3x.html">menu_mark.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_29"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_405_14" HREF="terminal_interface-curses-menus__adb.htm#ref_510_14">Set_Mark</A></span> (<span class="symbol"><A NAME="ref_405_24" HREF="terminal_interface-curses-menus__adb.htm#ref_510_24">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_406_24" HREF="terminal_interface-curses-menus__adb.htm#ref_511_24">Mark</A></span> : String);
+ <span class="comment"><EM>-- <A NAME="AFU_29">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_401_14" HREF="terminal_interface-curses-menus__adb.htm#ref_440_14">Set_Mark</A></span> (<span class="symbol"><A NAME="ref_401_24" HREF="terminal_interface-curses-menus__adb.htm#ref_440_24">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_402_24" HREF="terminal_interface-curses-menus__adb.htm#ref_441_24">Mark</A></span> : String);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_mark.3x.html">set_menu_mark()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_405_14">Set_Mark</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_401_14">Set_Mark</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_30"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_411_14" HREF="terminal_interface-curses-menus__adb.htm#ref_529_14">Mark</A></span> (<span class="symbol"><A NAME="ref_411_20" HREF="terminal_interface-curses-menus__adb.htm#ref_529_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_412_20" HREF="terminal_interface-curses-menus__adb.htm#ref_530_20">Mark</A></span> : <b>out</b> String);
+ <span class="comment"><EM>-- <A NAME="AFU_30">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_407_14" HREF="terminal_interface-curses-menus__adb.htm#ref_455_14">Mark</A></span> (<span class="symbol"><A NAME="ref_407_20" HREF="terminal_interface-curses-menus__adb.htm#ref_455_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_408_20" HREF="terminal_interface-curses-menus__adb.htm#ref_456_20">Mark</A></span> : <b>out</b> String);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_mark.3x.html">menu_mark()</A></EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_415_14" HREF="terminal_interface-curses-menus__adb.htm#ref_538_13">Mark</A></span> (<span class="symbol"><A NAME="ref_415_20" HREF="terminal_interface-curses-menus__adb.htm#ref_538_19">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> String;
+ <b>function</b> <span class="symbol"><A NAME="ref_411_14" HREF="terminal_interface-curses-menus__adb.htm#ref_464_13">Mark</A></span> (<span class="symbol"><A NAME="ref_411_20" HREF="terminal_interface-curses-menus__adb.htm#ref_464_19">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> String;
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_mark.3x.html">menu_mark()</A></EM></span>
<span class="comment"><EM>-- Implemented as function</EM></span>
<b>pragma</b> Inline (Mark);
@@ -438,124 +434,124 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/menu_attributes.3x.html">menu_attributes.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_31"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_425_14" HREF="terminal_interface-curses-menus__adb.htm#ref_547_14">Set_Foreground</A></span>
- (<span class="symbol"><A NAME="ref_426_7" HREF="terminal_interface-curses-menus__adb.htm#ref_548_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_427_7" HREF="terminal_interface-curses-menus__adb.htm#ref_549_7">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_428_7" HREF="terminal_interface-curses-menus__adb.htm#ref_550_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First);
+ <span class="comment"><EM>-- <A NAME="AFU_31">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_421_14" HREF="terminal_interface-curses-menus__adb.htm#ref_473_14">Set_Foreground</A></span>
+ (<span class="symbol"><A NAME="ref_422_7" HREF="terminal_interface-curses-menus__adb.htm#ref_474_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_423_7" HREF="terminal_interface-curses-menus__adb.htm#ref_475_7">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_424_7" HREF="terminal_interface-curses-menus__adb.htm#ref_476_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">set_menu_fore()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_425_14">Set_Foreground</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_421_14">Set_Foreground</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_32"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_433_14" HREF="terminal_interface-curses-menus__adb.htm#ref_566_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_433_26" HREF="terminal_interface-curses-menus__adb.htm#ref_566_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_434_26" HREF="terminal_interface-curses-menus__adb.htm#ref_567_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_32">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_429_14" HREF="terminal_interface-curses-menus__adb.htm#ref_489_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_429_26" HREF="terminal_interface-curses-menus__adb.htm#ref_489_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_430_26" HREF="terminal_interface-curses-menus__adb.htm#ref_490_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">menu_fore()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_33"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_438_14" HREF="terminal_interface-curses-menus__adb.htm#ref_575_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_438_26" HREF="terminal_interface-curses-menus__adb.htm#ref_575_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_439_26" HREF="terminal_interface-curses-menus__adb.htm#ref_576_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
- <span class="symbol"><A NAME="ref_440_26" HREF="terminal_interface-curses-menus__adb.htm#ref_577_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_33">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_434_14" HREF="terminal_interface-curses-menus__adb.htm#ref_498_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_434_26" HREF="terminal_interface-curses-menus__adb.htm#ref_498_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_435_26" HREF="terminal_interface-curses-menus__adb.htm#ref_499_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
+ <span class="symbol"><A NAME="ref_436_26" HREF="terminal_interface-curses-menus__adb.htm#ref_500_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">menu_fore()</A></EM></span>
<b>pragma</b> Inline (Foreground);
- <span class="comment"><EM>-- #1A NAME="AFU_34"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_445_14" HREF="terminal_interface-curses-menus__adb.htm#ref_586_14">Set_Background</A></span>
- (<span class="symbol"><A NAME="ref_446_7" HREF="terminal_interface-curses-menus__adb.htm#ref_587_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_447_7" HREF="terminal_interface-curses-menus__adb.htm#ref_588_7">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_448_7" HREF="terminal_interface-curses-menus__adb.htm#ref_589_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First);
+ <span class="comment"><EM>-- <A NAME="AFU_34">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_441_14" HREF="terminal_interface-curses-menus__adb.htm#ref_509_14">Set_Background</A></span>
+ (<span class="symbol"><A NAME="ref_442_7" HREF="terminal_interface-curses-menus__adb.htm#ref_510_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_443_7" HREF="terminal_interface-curses-menus__adb.htm#ref_511_7">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_444_7" HREF="terminal_interface-curses-menus__adb.htm#ref_512_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">set_menu_back()</A></EM></span>
<b>pragma</b> Inline (Set_Background);
- <span class="comment"><EM>-- #1A NAME="AFU_35"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_453_14" HREF="terminal_interface-curses-menus__adb.htm#ref_605_14">Background</A></span> (<span class="symbol"><A NAME="ref_453_26" HREF="terminal_interface-curses-menus__adb.htm#ref_605_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_454_26" HREF="terminal_interface-curses-menus__adb.htm#ref_606_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_35">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_449_14" HREF="terminal_interface-curses-menus__adb.htm#ref_525_14">Background</A></span> (<span class="symbol"><A NAME="ref_449_26" HREF="terminal_interface-curses-menus__adb.htm#ref_525_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_450_26" HREF="terminal_interface-curses-menus__adb.htm#ref_526_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">menu_back()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_36"#2|</EM></span>
+ <span class="comment"><EM>-- <A NAME="AFU_36">|</A></EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_458_14" HREF="terminal_interface-curses-menus__adb.htm#ref_614_14">Background</A></span> (<span class="symbol"><A NAME="ref_458_26" HREF="terminal_interface-curses-menus__adb.htm#ref_614_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_459_26" HREF="terminal_interface-curses-menus__adb.htm#ref_615_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
- <span class="symbol"><A NAME="ref_460_26" HREF="terminal_interface-curses-menus__adb.htm#ref_616_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_454_14" HREF="terminal_interface-curses-menus__adb.htm#ref_534_14">Background</A></span> (<span class="symbol"><A NAME="ref_454_26" HREF="terminal_interface-curses-menus__adb.htm#ref_534_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_455_26" HREF="terminal_interface-curses-menus__adb.htm#ref_535_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
+ <span class="symbol"><A NAME="ref_456_26" HREF="terminal_interface-curses-menus__adb.htm#ref_536_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">menu_back()</A></EM></span>
<b>pragma</b> Inline (Background);
- <span class="comment"><EM>-- #1A NAME="AFU_37"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_465_14" HREF="terminal_interface-curses-menus__adb.htm#ref_625_14">Set_Grey</A></span>
- (<span class="symbol"><A NAME="ref_466_7" HREF="terminal_interface-curses-menus__adb.htm#ref_625_24">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_467_7" HREF="terminal_interface-curses-menus__adb.htm#ref_626_24">Grey</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_468_7" HREF="terminal_interface-curses-menus__adb.htm#ref_627_24">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First);
+ <span class="comment"><EM>-- <A NAME="AFU_37">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_461_14" HREF="terminal_interface-curses-menus__adb.htm#ref_545_14">Set_Grey</A></span>
+ (<span class="symbol"><A NAME="ref_462_7" HREF="terminal_interface-curses-menus__adb.htm#ref_545_24">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_463_7" HREF="terminal_interface-curses-menus__adb.htm#ref_546_24">Grey</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_464_7" HREF="terminal_interface-curses-menus__adb.htm#ref_547_24">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">set_menu_grey()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_465_14">Set_Grey</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_461_14">Set_Grey</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_38"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_473_14" HREF="terminal_interface-curses-menus__adb.htm#ref_644_14">Grey</A></span> (<span class="symbol"><A NAME="ref_473_20" HREF="terminal_interface-curses-menus__adb.htm#ref_644_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_474_20" HREF="terminal_interface-curses-menus__adb.htm#ref_645_20">Grey</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_38">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_469_14" HREF="terminal_interface-curses-menus__adb.htm#ref_561_14">Grey</A></span> (<span class="symbol"><A NAME="ref_469_20" HREF="terminal_interface-curses-menus__adb.htm#ref_561_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_470_20" HREF="terminal_interface-curses-menus__adb.htm#ref_562_20">Grey</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">menu_grey()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_39"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_478_14" HREF="terminal_interface-curses-menus__adb.htm#ref_653_14">Grey</A></span>
- (<span class="symbol"><A NAME="ref_479_7" HREF="terminal_interface-curses-menus__adb.htm#ref_653_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_480_7" HREF="terminal_interface-curses-menus__adb.htm#ref_654_20">Grey</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
- <span class="symbol"><A NAME="ref_481_7" HREF="terminal_interface-curses-menus__adb.htm#ref_655_20">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_39">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_474_14" HREF="terminal_interface-curses-menus__adb.htm#ref_570_14">Grey</A></span>
+ (<span class="symbol"><A NAME="ref_475_7" HREF="terminal_interface-curses-menus__adb.htm#ref_570_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_476_7" HREF="terminal_interface-curses-menus__adb.htm#ref_571_20">Grey</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
+ <span class="symbol"><A NAME="ref_477_7" HREF="terminal_interface-curses-menus__adb.htm#ref_572_20">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">menu_grey()</A></EM></span>
<b>pragma</b> Inline (Grey);
- <span class="comment"><EM>-- #1A NAME="AFU_40"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_486_14" HREF="terminal_interface-curses-menus__adb.htm#ref_664_14">Set_Pad_Character</A></span> (<span class="symbol"><A NAME="ref_486_33" HREF="terminal_interface-curses-menus__adb.htm#ref_664_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_487_33" HREF="terminal_interface-curses-menus__adb.htm#ref_665_33">Pad</A></span> : Character := Space);
+ <span class="comment"><EM>-- <A NAME="AFU_40">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_482_14" HREF="terminal_interface-curses-menus__adb.htm#ref_581_14">Set_Pad_Character</A></span> (<span class="symbol"><A NAME="ref_482_33" HREF="terminal_interface-curses-menus__adb.htm#ref_581_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_483_33" HREF="terminal_interface-curses-menus__adb.htm#ref_582_33">Pad</A></span> : Character := Space);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">set_menu_pad()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_486_14">Set_Pad_Character</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_482_14">Set_Pad_Character</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_41"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_492_14" HREF="terminal_interface-curses-menus__adb.htm#ref_679_14">Pad_Character</A></span> (<span class="symbol"><A NAME="ref_492_29" HREF="terminal_interface-curses-menus__adb.htm#ref_679_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_493_29" HREF="terminal_interface-curses-menus__adb.htm#ref_680_29">Pad</A></span> : <b>out</b> Character);
+ <span class="comment"><EM>-- <A NAME="AFU_41">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_488_14" HREF="terminal_interface-curses-menus__adb.htm#ref_592_14">Pad_Character</A></span> (<span class="symbol"><A NAME="ref_488_29" HREF="terminal_interface-curses-menus__adb.htm#ref_592_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_489_29" HREF="terminal_interface-curses-menus__adb.htm#ref_593_29">Pad</A></span> : <b>out</b> Character);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">menu_pad()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_492_14">Pad_Character</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_488_14">Pad_Character</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/menu_spacing.3x.html">menu_spacing.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_42"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_502_14" HREF="terminal_interface-curses-menus__adb.htm#ref_688_14">Set_Spacing</A></span> (<span class="symbol"><A NAME="ref_502_27" HREF="terminal_interface-curses-menus__adb.htm#ref_688_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_503_27" HREF="terminal_interface-curses-menus__adb.htm#ref_689_27">Descr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> := 0;
- <span class="symbol"><A NAME="ref_504_27" HREF="terminal_interface-curses-menus__adb.htm#ref_690_27">Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A> := 0;
- <span class="symbol"><A NAME="ref_505_27" HREF="terminal_interface-curses-menus__adb.htm#ref_691_27">Col</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> := 0);
+ <span class="comment"><EM>-- <A NAME="AFU_42">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_498_14" HREF="terminal_interface-curses-menus__adb.htm#ref_601_14">Set_Spacing</A></span> (<span class="symbol"><A NAME="ref_498_27" HREF="terminal_interface-curses-menus__adb.htm#ref_601_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_499_27" HREF="terminal_interface-curses-menus__adb.htm#ref_602_27">Descr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> := 0;
+ <span class="symbol"><A NAME="ref_500_27" HREF="terminal_interface-curses-menus__adb.htm#ref_603_27">Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A> := 0;
+ <span class="symbol"><A NAME="ref_501_27" HREF="terminal_interface-curses-menus__adb.htm#ref_604_27">Col</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> := 0);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_spacing.3x.html">set_menu_spacing()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_502_14">Set_Spacing</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_498_14">Set_Spacing</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_43"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_510_14" HREF="terminal_interface-curses-menus__adb.htm#ref_707_14">Spacing</A></span> (<span class="symbol"><A NAME="ref_510_23" HREF="terminal_interface-curses-menus__adb.htm#ref_707_23">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_511_23" HREF="terminal_interface-curses-menus__adb.htm#ref_708_23">Descr</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_512_23" HREF="terminal_interface-curses-menus__adb.htm#ref_709_23">Row</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_513_23" HREF="terminal_interface-curses-menus__adb.htm#ref_710_23">Col</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_43">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_506_14" HREF="terminal_interface-curses-menus__adb.htm#ref_617_14">Spacing</A></span> (<span class="symbol"><A NAME="ref_506_23" HREF="terminal_interface-curses-menus__adb.htm#ref_617_23">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_507_23" HREF="terminal_interface-curses-menus__adb.htm#ref_618_23">Descr</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_508_23" HREF="terminal_interface-curses-menus__adb.htm#ref_619_23">Row</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_509_23" HREF="terminal_interface-curses-menus__adb.htm#ref_620_23">Col</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_spacing.3x.html">menu_spacing()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_510_14">Spacing</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_506_14">Spacing</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/menu_pattern.3x.html">menu_pattern.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_44"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_522_13" HREF="terminal_interface-curses-menus__adb.htm#ref_732_13">Set_Pattern</A></span> (<span class="symbol"><A NAME="ref_522_26" HREF="terminal_interface-curses-menus__adb.htm#ref_732_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_523_26" HREF="terminal_interface-curses-menus__adb.htm#ref_733_26">Text</A></span> : String) <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_44">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_518_13" HREF="terminal_interface-curses-menus__adb.htm#ref_638_13">Set_Pattern</A></span> (<span class="symbol"><A NAME="ref_518_26" HREF="terminal_interface-curses-menus__adb.htm#ref_638_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_519_26" HREF="terminal_interface-curses-menus__adb.htm#ref_639_26">Text</A></span> : String) <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_pattern.3x.html">set_menu_pattern()</A></EM></span>
<span class="comment"><EM>-- Return TRUE if the pattern matches, FALSE otherwise</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_522_13">Set_Pattern</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_518_13">Set_Pattern</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_45"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_529_14" HREF="terminal_interface-curses-menus__adb.htm#ref_755_14">Pattern</A></span> (<span class="symbol"><A NAME="ref_529_23" HREF="terminal_interface-curses-menus__adb.htm#ref_755_23">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_530_23" HREF="terminal_interface-curses-menus__adb.htm#ref_756_23">Text</A></span> : <b>out</b> String);
+ <span class="comment"><EM>-- <A NAME="AFU_45">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_525_14" HREF="terminal_interface-curses-menus__adb.htm#ref_661_14">Pattern</A></span> (<span class="symbol"><A NAME="ref_525_23" HREF="terminal_interface-curses-menus__adb.htm#ref_661_23">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_526_23" HREF="terminal_interface-curses-menus__adb.htm#ref_662_23">Text</A></span> : <b>out</b> String);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_pattern.3x.html">menu_pattern()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_529_14">Pattern</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_525_14">Pattern</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/menu_format.3x.html">menu_format.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_46"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_539_14" HREF="terminal_interface-curses-menus__adb.htm#ref_764_14">Set_Format</A></span> (<span class="symbol"><A NAME="ref_539_26" HREF="terminal_interface-curses-menus__adb.htm#ref_764_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_540_26" HREF="terminal_interface-curses-menus__adb.htm#ref_765_26">Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_541_26" HREF="terminal_interface-curses-menus__adb.htm#ref_766_26">Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_46">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_535_14" HREF="terminal_interface-curses-menus__adb.htm#ref_670_14">Set_Format</A></span> (<span class="symbol"><A NAME="ref_535_26" HREF="terminal_interface-curses-menus__adb.htm#ref_670_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_536_26" HREF="terminal_interface-curses-menus__adb.htm#ref_671_26">Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_537_26" HREF="terminal_interface-curses-menus__adb.htm#ref_672_26">Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>);
<span class="comment"><EM>-- Not implemented: 0 argument for Lines or Columns;</EM></span>
<span class="comment"><EM>-- instead use Format to get the current sizes</EM></span>
<span class="comment"><EM>-- The default format is 16 rows, 1 column. Calling</EM></span>
@@ -564,104 +560,104 @@
<span class="comment"><EM>-- is interpreted as a request not to change the current</EM></span>
<span class="comment"><EM>-- value.</EM></span>
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_format.3x.html">set_menu_format()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_539_14">Set_Format</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_535_14">Set_Format</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_47"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_553_14" HREF="terminal_interface-curses-menus__adb.htm#ref_782_14">Format</A></span> (<span class="symbol"><A NAME="ref_553_22" HREF="terminal_interface-curses-menus__adb.htm#ref_782_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_554_22" HREF="terminal_interface-curses-menus__adb.htm#ref_783_22">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_555_22" HREF="terminal_interface-curses-menus__adb.htm#ref_784_22">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_47">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_549_14" HREF="terminal_interface-curses-menus__adb.htm#ref_686_14">Format</A></span> (<span class="symbol"><A NAME="ref_549_22" HREF="terminal_interface-curses-menus__adb.htm#ref_686_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_550_22" HREF="terminal_interface-curses-menus__adb.htm#ref_687_22">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_551_22" HREF="terminal_interface-curses-menus__adb.htm#ref_688_22">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_format.3x.html">menu_format()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_553_14">Format</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_549_14">Format</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_563_9">Menu_Hook_Function</A></span> <b>is</b> <b>access</b> <b>procedure</b> (<span class="symbol"><A NAME="ref_563_49">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>);
- <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>);
+ <b>type</b> <span class="symbol"><A NAME="ref_559_9">Menu_Hook_Function</A></span> <b>is</b> <b>access</b> <b>procedure</b> (<span class="symbol"><A NAME="ref_559_49" HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>);
+ <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_48"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_567_14" HREF="terminal_interface-curses-menus__adb.htm#ref_802_14">Set_Item_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_567_34" HREF="terminal_interface-curses-menus__adb.htm#ref_802_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_568_34" HREF="terminal_interface-curses-menus__adb.htm#ref_803_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_48">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_563_14" HREF="terminal_interface-curses-menus__adb.htm#ref_702_14">Set_Item_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_563_34" HREF="terminal_interface-curses-menus__adb.htm#ref_702_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_564_34" HREF="terminal_interface-curses-menus__adb.htm#ref_703_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_item_init()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_567_14">Set_Item_Init_Hook</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_563_14">Set_Item_Init_Hook</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_49"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_573_14" HREF="terminal_interface-curses-menus__adb.htm#ref_816_14">Set_Item_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_573_34" HREF="terminal_interface-curses-menus__adb.htm#ref_816_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_574_34" HREF="terminal_interface-curses-menus__adb.htm#ref_817_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_49">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_569_14" HREF="terminal_interface-curses-menus__adb.htm#ref_713_14">Set_Item_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_569_34" HREF="terminal_interface-curses-menus__adb.htm#ref_713_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_570_34" HREF="terminal_interface-curses-menus__adb.htm#ref_714_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_item_term()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_573_14">Set_Item_Term_Hook</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_569_14">Set_Item_Term_Hook</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_50"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_579_14" HREF="terminal_interface-curses-menus__adb.htm#ref_830_14">Set_Menu_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_579_34" HREF="terminal_interface-curses-menus__adb.htm#ref_830_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_580_34" HREF="terminal_interface-curses-menus__adb.htm#ref_831_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_50">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_575_14" HREF="terminal_interface-curses-menus__adb.htm#ref_724_14">Set_Menu_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_575_34" HREF="terminal_interface-curses-menus__adb.htm#ref_724_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_576_34" HREF="terminal_interface-curses-menus__adb.htm#ref_725_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_menu_init()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_579_14">Set_Menu_Init_Hook</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_575_14">Set_Menu_Init_Hook</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_51"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_585_14" HREF="terminal_interface-curses-menus__adb.htm#ref_844_14">Set_Menu_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_585_34" HREF="terminal_interface-curses-menus__adb.htm#ref_844_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_586_34" HREF="terminal_interface-curses-menus__adb.htm#ref_845_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_51">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_581_14" HREF="terminal_interface-curses-menus__adb.htm#ref_735_14">Set_Menu_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_581_34" HREF="terminal_interface-curses-menus__adb.htm#ref_735_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_582_34" HREF="terminal_interface-curses-menus__adb.htm#ref_736_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_menu_term()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_585_14">Set_Menu_Term_Hook</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_581_14">Set_Menu_Term_Hook</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_52"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_591_13" HREF="terminal_interface-curses-menus__adb.htm#ref_858_13">Get_Item_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_591_33" HREF="terminal_interface-curses-menus__adb.htm#ref_858_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_52">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_587_13" HREF="terminal_interface-curses-menus__adb.htm#ref_746_13">Get_Item_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_587_33" HREF="terminal_interface-curses-menus__adb.htm#ref_746_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">item_init()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_591_13">Get_Item_Init_Hook</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_587_13">Get_Item_Init_Hook</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_53"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_596_13" HREF="terminal_interface-curses-menus__adb.htm#ref_866_13">Get_Item_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_596_33" HREF="terminal_interface-curses-menus__adb.htm#ref_866_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_53">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_592_13" HREF="terminal_interface-curses-menus__adb.htm#ref_754_13">Get_Item_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_592_33" HREF="terminal_interface-curses-menus__adb.htm#ref_754_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">item_term()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_596_13">Get_Item_Term_Hook</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_592_13">Get_Item_Term_Hook</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_54"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_601_13" HREF="terminal_interface-curses-menus__adb.htm#ref_874_13">Get_Menu_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_601_33" HREF="terminal_interface-curses-menus__adb.htm#ref_874_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_54">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_597_13" HREF="terminal_interface-curses-menus__adb.htm#ref_762_13">Get_Menu_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_597_33" HREF="terminal_interface-curses-menus__adb.htm#ref_762_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">menu_init()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_601_13">Get_Menu_Init_Hook</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_597_13">Get_Menu_Init_Hook</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_55"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_606_13" HREF="terminal_interface-curses-menus__adb.htm#ref_882_13">Get_Menu_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_606_33" HREF="terminal_interface-curses-menus__adb.htm#ref_882_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_563_9">Menu_Hook_Function</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_55">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_602_13" HREF="terminal_interface-curses-menus__adb.htm#ref_770_13">Get_Menu_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_602_33" HREF="terminal_interface-curses-menus__adb.htm#ref_770_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_559_9">Menu_Hook_Function</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">menu_term()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_606_13">Get_Menu_Term_Hook</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_602_13">Get_Menu_Term_Hook</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/menu_items.3x.html">menu_items.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_56"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_615_14" HREF="terminal_interface-curses-menus__adb.htm#ref_890_14">Redefine</A></span> (<span class="symbol"><A NAME="ref_615_24" HREF="terminal_interface-curses-menus__adb.htm#ref_890_24">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_616_24" HREF="terminal_interface-curses-menus__adb.htm#ref_891_24">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_180_9">Item_Array_Access</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_56">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_611_14" HREF="terminal_interface-curses-menus__adb.htm#ref_778_14">Redefine</A></span> (<span class="symbol"><A NAME="ref_611_24" HREF="terminal_interface-curses-menus__adb.htm#ref_778_24">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_612_24" HREF="terminal_interface-curses-menus__adb.htm#ref_779_24">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_176_9">Item_Array_Access</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_items.3x.html">set_menu_items()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_615_14">Redefine</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_611_14">Redefine</A>);
- <b>procedure</b> <span class="symbol"><A NAME="ref_620_14">Set_Items</A></span> (<span class="symbol"><A NAME="ref_620_25">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_621_25">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_180_9">Item_Array_Access</A>) <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_615_14">Redefine</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_616_14">Set_Items</A></span> (<span class="symbol"><A NAME="ref_616_25">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_617_25">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_176_9">Item_Array_Access</A>) <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_611_14">Redefine</A>;
<span class="comment"><EM>-- pragma Inline (Set_Items);</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_57"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_625_13" HREF="terminal_interface-curses-menus__adb.htm#ref_918_13">Items</A></span> (<span class="symbol"><A NAME="ref_625_20" HREF="terminal_interface-curses-menus__adb.htm#ref_918_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_626_20" HREF="terminal_interface-curses-menus__adb.htm#ref_919_20">Index</A></span> : Positive) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_57">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_621_13" HREF="terminal_interface-curses-menus__adb.htm#ref_802_13">Items</A></span> (<span class="symbol"><A NAME="ref_621_20" HREF="terminal_interface-curses-menus__adb.htm#ref_802_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_622_20" HREF="terminal_interface-curses-menus__adb.htm#ref_803_20">Index</A></span> : Positive) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_items.3x.html">menu_items()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_625_13">Items</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_621_13">Items</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_58"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_631_13" HREF="terminal_interface-curses-menus__adb.htm#ref_910_13">Item_Count</A></span> (<span class="symbol"><A NAME="ref_631_25" HREF="terminal_interface-curses-menus__adb.htm#ref_910_25">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>) <b>return</b> Natural;
+ <span class="comment"><EM>-- <A NAME="AFU_58">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_627_13" HREF="terminal_interface-curses-menus__adb.htm#ref_794_13">Item_Count</A></span> (<span class="symbol"><A NAME="ref_627_25" HREF="terminal_interface-curses-menus__adb.htm#ref_794_25">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>) <b>return</b> Natural;
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_items.3x.html">item_count()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_631_13">Item_Count</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_627_13">Item_Count</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/menu_new.3x.html">menu_new.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_59"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_640_13" HREF="terminal_interface-curses-menus__adb.htm#ref_937_13">Create</A></span> (<span class="symbol"><A NAME="ref_640_21" HREF="terminal_interface-curses-menus__adb.htm#ref_937_21">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_180_9">Item_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_59">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_636_13" HREF="terminal_interface-curses-menus__adb.htm#ref_821_13">Create</A></span> (<span class="symbol"><A NAME="ref_636_21" HREF="terminal_interface-curses-menus__adb.htm#ref_821_21">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_176_9">Item_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_new.3x.html">new_menu()</A></EM></span>
<span class="comment"><EM>-- Not inlined</EM></span>
- <b>function</b> New_Menu (<span class="symbol"><A NAME="ref_644_23">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_180_9">Item_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_640_13">Create</A>;
+ <b>function</b> New_Menu (<span class="symbol"><A NAME="ref_640_23">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_176_9">Item_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_636_13">Create</A>;
- <span class="comment"><EM>-- #1A NAME="AFU_60"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_647_14" HREF="terminal_interface-curses-menus__adb.htm#ref_956_14">Delete</A></span> (<span class="symbol"><A NAME="ref_647_22" HREF="terminal_interface-curses-menus__adb.htm#ref_956_22">Men</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_60">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_643_14" HREF="terminal_interface-curses-menus__adb.htm#ref_840_14">Delete</A></span> (<span class="symbol"><A NAME="ref_643_22" HREF="terminal_interface-curses-menus__adb.htm#ref_840_22">Men</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_new.3x.html">free_menu()</A></EM></span>
<span class="comment"><EM>-- Reset Men to Null_Menu</EM></span>
<span class="comment"><EM>-- Not inlined</EM></span>
@@ -670,26 +666,26 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/menu_driver.3x.html">menu_driver.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_656_9">Driver_Result</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_656_27">Menu_Ok</A></span>,
- <span class="symbol"><A NAME="ref_657_27">Request_Denied</A></span>,
- <span class="symbol"><A NAME="ref_658_27">Unknown_Request</A></span>,
- <span class="symbol"><A NAME="ref_659_27">No_Match</A></span>);
+ <b>type</b> <span class="symbol"><A NAME="ref_652_9">Driver_Result</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_652_27">Menu_Ok</A></span>,
+ <span class="symbol"><A NAME="ref_653_27">Request_Denied</A></span>,
+ <span class="symbol"><A NAME="ref_654_27">Unknown_Request</A></span>,
+ <span class="symbol"><A NAME="ref_655_27">No_Match</A></span>);
- <span class="comment"><EM>-- #1A NAME="AFU_61"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_662_13" HREF="terminal_interface-curses-menus__adb.htm#ref_970_13">Driver</A></span> (<span class="symbol"><A NAME="ref_662_21" HREF="terminal_interface-curses-menus__adb.htm#ref_970_21">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A>;
- <span class="symbol"><A NAME="ref_663_21" HREF="terminal_interface-curses-menus__adb.htm#ref_971_21">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_68_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_656_9">Driver_Result</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_61">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_658_13" HREF="terminal_interface-curses-menus__adb.htm#ref_851_13">Driver</A></span> (<span class="symbol"><A NAME="ref_658_21" HREF="terminal_interface-curses-menus__adb.htm#ref_851_21">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A>;
+ <span class="symbol"><A NAME="ref_659_21" HREF="terminal_interface-curses-menus__adb.htm#ref_852_21">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_66_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_652_9">Driver_Result</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/menu_driver.3x.html">menu_driver()</A></EM></span>
<span class="comment"><EM>-- Driver is not inlined</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_62"#2|</EM></span>
+ <span class="comment"><EM>-- <A NAME="AFU_62">|</A></EM></span>
<span class="comment"><EM>-- Not Implemented: menu_request_name, menu_request_by_name</EM></span>
<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span>
<b>private</b>
- <b>type</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
- <b>type</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+ <b>type</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+ <b>type</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_62_4">Null_Item</A> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_56_9">Item</A> := 0;
- <A HREF="terminal_interface-curses-menus__ads.htm#ref_63_4">Null_Menu</A> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_9">Menu</A> := 0;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_57_4">Null_Item</A> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_51_9">Item</A> := 0;
+ <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Menu</A> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Menu</A> := 0;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_49_35">Menus</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_45_35">Menus</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-mouse__adb.htm b/doc/html/ada/terminal_interface-curses-mouse__adb.htm
index 8119f8ca2b1f..7221e322aaac 100644
--- a/doc/html/ada/terminal_interface-curses-mouse__adb.htm
+++ b/doc/html/ada/terminal_interface-curses-mouse__adb.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2014,2018 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,184 +52,183 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.24 @</EM></span>
-<span class="comment"><EM>-- @Date: 2009/12/26 17:38:58 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.26 @</EM></span>
+<span class="comment"><EM>-- @Date: 2018/07/07 23:35:05 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
-<b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
+<b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_46_40" HREF="terminal_interface-curses-mouse__ads.htm#ref_48_35">Mouse</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_46_40" HREF="terminal_interface-curses-mouse__ads.htm#ref_44_35">Mouse</A></span> <b>is</b>
- <b>use</b> <b>type</b> System.Bit_Order;
-
- <b>function</b> <span class="symbol"><A NAME="ref_50_13" HREF="terminal_interface-curses-mouse__ads.htm#ref_94_13">Has_Mouse</A></span> <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_48_13" HREF="terminal_interface-curses-mouse__ads.htm#ref_90_13">Has_Mouse</A></span> <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_52_16">Mouse_Avail</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_50_16">Mouse_Avail</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Mouse_Avail, "has_mouse");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_768_13">Has_Key</A> (<A HREF="terminal_interface-curses__ads.htm#ref_204_4">Key_Mouse</A>) <b>or</b> <b>else</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_52_16">Mouse_Avail</A> /= 0 <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_937_13">Has_Key</A> (<A HREF="terminal_interface-curses__ads.htm#ref_375_4">Key_Mouse</A>) <b>or</b> <b>else</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_50_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> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_94_13">Has_Mouse</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_90_13">Has_Mouse</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_62_13" HREF="terminal_interface-curses-mouse__ads.htm#ref_129_13">Get_Mouse</A></span> <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_88_9">Mouse_Event</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_60_13" HREF="terminal_interface-curses-mouse__ads.htm#ref_125_13">Get_Mouse</A></span> <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_84_9">Mouse_Event</A>
<b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_64_12">Event_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_88_9">Mouse_Event</A>;
+ <b>type</b> <span class="symbol"><A NAME="ref_62_12">Event_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_84_9">Mouse_Event</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_66_16">Getmouse</A></span> (<span class="symbol"><A NAME="ref_66_26" HREF="terminal_interface-curses-mouse__adb.htm#ref_66_16">Ev</A></span> : <A HREF="terminal_interface-curses-mouse__adb.htm#ref_64_12">Event_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_64_16">Getmouse</A></span> (<span class="symbol"><A NAME="ref_64_26" HREF="terminal_interface-curses-mouse__adb.htm#ref_64_16">Ev</A></span> : <A HREF="terminal_interface-curses-mouse__adb.htm#ref_62_12">Event_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Getmouse, "getmouse");
- <span class="symbol"><A NAME="ref_69_7">Event</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_88_9">Mouse_Event</A>;
+ <span class="symbol"><A NAME="ref_67_7">Event</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_84_9">Mouse_Event</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_66_16">Getmouse</A> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_69_7">Event</A>'<b>Access</b>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_64_16">Getmouse</A> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_67_7">Event</A>'<b>Access</b>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>return</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_69_7">Event</A>;
- <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_129_13">Get_Mouse</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_67_7">Event</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_125_13">Get_Mouse</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_77_14" HREF="terminal_interface-curses-mouse__ads.htm#ref_97_14">Register_Reportable_Event</A></span> (<span class="symbol"><A NAME="ref_77_41" HREF="terminal_interface-curses-mouse__ads.htm#ref_98_7">Button</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_9">Mouse_Button</A>;
- <span class="symbol"><A NAME="ref_78_41" HREF="terminal_interface-curses-mouse__ads.htm#ref_99_7">State</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_75_9">Button_State</A>;
- <span class="symbol"><A NAME="ref_79_41" HREF="terminal_interface-curses-mouse__ads.htm#ref_100_7">Mask</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_75_14" HREF="terminal_interface-curses-mouse__ads.htm#ref_93_14">Register_Reportable_Event</A></span> (<span class="symbol"><A NAME="ref_75_41" HREF="terminal_interface-curses-mouse__ads.htm#ref_94_7">Button</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Mouse_Button</A>;
+ <span class="symbol"><A NAME="ref_76_41" HREF="terminal_interface-curses-mouse__ads.htm#ref_95_7">State</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_71_9">Button_State</A>;
+ <span class="symbol"><A NAME="ref_77_41" HREF="terminal_interface-curses-mouse__ads.htm#ref_96_7">Mask</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>)
<b>is</b>
- <span class="symbol"><A NAME="ref_81_7">Button_Nr</A></span> : <b>constant</b> Natural := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_9">Mouse_Button</A>'Pos (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_98_7">Button</A>);
- <span class="symbol"><A NAME="ref_82_7">State_Nr</A></span> : <b>constant</b> Natural := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_75_9">Button_State</A>'Pos (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_99_7">State</A>);
+ <span class="symbol"><A NAME="ref_79_7">Button_Nr</A></span> : <b>constant</b> Natural := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Mouse_Button</A>'Pos (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_94_7">Button</A>);
+ <span class="symbol"><A NAME="ref_80_7">State_Nr</A></span> : <b>constant</b> Natural := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_71_9">Button_State</A>'Pos (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_95_7">State</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_98_7">Button</A> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_73_12">Modifier_Keys</A> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_99_7">State</A> /= <A HREF="terminal_interface-curses-mouse__ads.htm#ref_76_26">Pressed</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_94_7">Button</A> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_69_12">Modifier_Keys</A> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_95_7">State</A> /= <A HREF="terminal_interface-curses-mouse__ads.htm#ref_72_26">Pressed</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>else</b>
- <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_98_7">Button</A> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_72_12">Real_Buttons</A> <b>then</b>
- <A HREF="terminal_interface-curses-mouse__ads.htm#ref_100_7">Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_100_7">Mask</A> <b>or</b> ((2 ** (6 * <A HREF="terminal_interface-curses-mouse__adb.htm#ref_81_7">Button_Nr</A>)) ** <A HREF="terminal_interface-curses-mouse__adb.htm#ref_82_7">State_Nr</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_94_7">Button</A> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_68_12">Real_Buttons</A> <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__ads.htm#ref_96_7">Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_96_7">Mask</A> <b>or</b> ((2 ** (6 * <A HREF="terminal_interface-curses-mouse__adb.htm#ref_79_7">Button_Nr</A>)) ** <A HREF="terminal_interface-curses-mouse__adb.htm#ref_80_7">State_Nr</A>);
<b>else</b>
- <A HREF="terminal_interface-curses-mouse__ads.htm#ref_100_7">Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_100_7">Mask</A> <b>or</b> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_212_4">BUTTON_CTRL</A> ** (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_81_7">Button_Nr</A> - 4));
+ <A HREF="terminal_interface-curses-mouse__ads.htm#ref_96_7">Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_96_7">Mask</A> <b>or</b> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_189_4">BUTTON_CTRL</A> ** (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_79_7">Button_Nr</A> - 4));
<b>end</b> <b>if</b>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_97_14">Register_Reportable_Event</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_93_14">Register_Reportable_Event</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_95_14" HREF="terminal_interface-curses-mouse__ads.htm#ref_106_14">Register_Reportable_Events</A></span> (<span class="symbol"><A NAME="ref_95_42" HREF="terminal_interface-curses-mouse__ads.htm#ref_107_7">Button</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_9">Mouse_Button</A>;
- <span class="symbol"><A NAME="ref_96_42" HREF="terminal_interface-curses-mouse__ads.htm#ref_108_7">State</A></span> : Button_States;
- <span class="symbol"><A NAME="ref_97_42" HREF="terminal_interface-curses-mouse__ads.htm#ref_109_7">Mask</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_93_14" HREF="terminal_interface-curses-mouse__ads.htm#ref_102_14">Register_Reportable_Events</A></span> (<span class="symbol"><A NAME="ref_93_42" HREF="terminal_interface-curses-mouse__ads.htm#ref_103_7">Button</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Mouse_Button</A>;
+ <span class="symbol"><A NAME="ref_94_42" HREF="terminal_interface-curses-mouse__ads.htm#ref_104_7">State</A></span> : Button_States;
+ <span class="symbol"><A NAME="ref_95_42" HREF="terminal_interface-curses-mouse__ads.htm#ref_105_7">Mask</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>)
<b>is</b>
<b>begin</b>
- <b>for</b> <span class="symbol"><A NAME="ref_100_11">S</A></span> <b>in</b> Button_States'<b>Range</b> <b>loop</b>
- <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_108_7">State</A> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_100_11">S</A>) <b>then</b>
- <A HREF="terminal_interface-curses-mouse__ads.htm#ref_97_14">Register_Reportable_Event</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_107_7">Button</A>, <A HREF="terminal_interface-curses-mouse__adb.htm#ref_100_11">S</A>, <A HREF="terminal_interface-curses-mouse__ads.htm#ref_109_7">Mask</A>);
+ <b>for</b> <span class="symbol"><A NAME="ref_98_11">S</A></span> <b>in</b> Button_States'<b>Range</b> <b>loop</b>
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_104_7">State</A> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_98_11">S</A>) <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__ads.htm#ref_93_14">Register_Reportable_Event</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_103_7">Button</A>, <A HREF="terminal_interface-curses-mouse__adb.htm#ref_98_11">S</A>, <A HREF="terminal_interface-curses-mouse__ads.htm#ref_105_7">Mask</A>);
<b>end</b> <b>if</b>;
<b>end</b> <b>loop</b>;
- <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_106_14">Register_Reportable_Events</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_102_14">Register_Reportable_Events</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_107_13" HREF="terminal_interface-curses-mouse__ads.htm#ref_119_13">Start_Mouse</A></span> (<span class="symbol"><A NAME="ref_107_26" HREF="terminal_interface-curses-mouse__ads.htm#ref_119_26">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_62_4">All_Events</A>)
- <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_105_13" HREF="terminal_interface-curses-mouse__ads.htm#ref_115_13">Start_Mouse</A></span> (<span class="symbol"><A NAME="ref_105_26" HREF="terminal_interface-curses-mouse__ads.htm#ref_115_26">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_58_4">All_Events</A>)
+ <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_110_16">MMask</A></span> (<span class="symbol"><A NAME="ref_110_23" HREF="terminal_interface-curses-mouse__adb.htm#ref_110_16">M</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>;
- <span class="symbol"><A NAME="ref_111_23" HREF="terminal_interface-curses-mouse__adb.htm#ref_110_16">O</A></span> : <b>access</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>) <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_108_16">MMask</A></span> (<span class="symbol"><A NAME="ref_108_23" HREF="terminal_interface-curses-mouse__adb.htm#ref_108_16">M</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>;
+ <span class="symbol"><A NAME="ref_109_23" HREF="terminal_interface-curses-mouse__adb.htm#ref_108_16">O</A></span> : <b>access</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>) <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>;
<b>pragma</b> Import (C, MMask, "mousemask");
- <span class="symbol"><A NAME="ref_113_7">R</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>;
- <span class="symbol"><A NAME="ref_114_7">Old</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>;
+ <span class="symbol"><A NAME="ref_111_7">R</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>;
+ <span class="symbol"><A NAME="ref_112_7">Old</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-mouse__adb.htm#ref_113_7">R</A> := <A HREF="terminal_interface-curses-mouse__adb.htm#ref_110_16">MMask</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_119_26">Mask</A>, <A HREF="terminal_interface-curses-mouse__adb.htm#ref_114_7">Old</A>'<b>Access</b>);
- <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_113_7">R</A> = <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_4">No_Events</A> <b>then</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_871_14">Beep</A>;
+ <A HREF="terminal_interface-curses-mouse__adb.htm#ref_111_7">R</A> := <A HREF="terminal_interface-curses-mouse__adb.htm#ref_108_16">MMask</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_115_26">Mask</A>, <A HREF="terminal_interface-curses-mouse__adb.htm#ref_112_7">Old</A>'<b>Access</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_111_7">R</A> = <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_4">No_Events</A> <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#ref_1040_14">Beep</A>;
<b>end</b> <b>if</b>;
- <b>return</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_114_7">Old</A>;
- <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_119_13">Start_Mouse</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_112_7">Old</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_115_13">Start_Mouse</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_123_14" HREF="terminal_interface-curses-mouse__ads.htm#ref_124_14">End_Mouse</A></span> (<span class="symbol"><A NAME="ref_123_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_124_25">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_4">No_Events</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_121_14" HREF="terminal_interface-curses-mouse__ads.htm#ref_120_14">End_Mouse</A></span> (<span class="symbol"><A NAME="ref_121_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_120_25">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_4">No_Events</A>)
<b>is</b>
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_124_25">Mask</A> /= <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_4">No_Events</A> <b>then</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_871_14">Beep</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_120_25">Mask</A> /= <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_4">No_Events</A> <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#ref_1040_14">Beep</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_124_14">End_Mouse</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_120_14">End_Mouse</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_131_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_135_14">Dispatch_Event</A></span> (<span class="symbol"><A NAME="ref_131_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_135_30">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>;
- <span class="symbol"><A NAME="ref_132_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_136_30">Button</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_9">Mouse_Button</A>;
- <span class="symbol"><A NAME="ref_133_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_137_30">State</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_75_9">Button_State</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_129_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_133_14">Dispatch_Event</A></span> (<span class="symbol"><A NAME="ref_129_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_133_30">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>;
+ <span class="symbol"><A NAME="ref_130_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_134_30">Button</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Mouse_Button</A>;
+ <span class="symbol"><A NAME="ref_131_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_135_30">State</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_71_9">Button_State</A>);
- <b>procedure</b> <span class="symbol"><A NAME="ref_135_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_131_14">Dispatch_Event</A></span> (<span class="symbol"><A NAME="ref_135_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>;
- <span class="symbol"><A NAME="ref_136_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_132_30">Button</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_9">Mouse_Button</A>;
- <span class="symbol"><A NAME="ref_137_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_133_30">State</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_75_9">Button_State</A>) <b>is</b>
- <span class="symbol"><A NAME="ref_138_7">L</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_133_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_129_14">Dispatch_Event</A></span> (<span class="symbol"><A NAME="ref_133_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_129_30">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>;
+ <span class="symbol"><A NAME="ref_134_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Button</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Mouse_Button</A>;
+ <span class="symbol"><A NAME="ref_135_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">State</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_71_9">Button_State</A>) <b>is</b>
+ <span class="symbol"><A NAME="ref_136_7">L</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-mouse__adb.htm#ref_132_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_70_26">Alt</A>; <span class="comment"><EM>-- preset to non real button;</EM></span>
- <b>if</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_217_4">BUTTON1_EVENTS</A>) /= 0 <b>then</b>
- <A HREF="terminal_interface-curses-mouse__adb.htm#ref_132_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_26">Left</A>;
- <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_218_4">BUTTON2_EVENTS</A>) /= 0 <b>then</b>
- <A HREF="terminal_interface-curses-mouse__adb.htm#ref_132_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_65_26">Middle</A>;
- <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_219_4">BUTTON3_EVENTS</A>) /= 0 <b>then</b>
- <A HREF="terminal_interface-curses-mouse__adb.htm#ref_132_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_66_26">Right</A>;
- <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_220_4">BUTTON4_EVENTS</A>) /= 0 <b>then</b>
- <A HREF="terminal_interface-curses-mouse__adb.htm#ref_132_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_67_26">Button4</A>;
+ <A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_66_26">Alt</A>; <span class="comment"><EM>-- preset to non real button;</EM></span>
+ <b>if</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_129_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_192_4">BUTTON1_EVENTS</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_26">Left</A>;
+ <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_129_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_194_4">BUTTON2_EVENTS</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_26">Middle</A>;
+ <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_129_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_196_4">BUTTON3_EVENTS</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_62_26">Right</A>;
+ <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_129_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_198_4">BUTTON4_EVENTS</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_63_26">Button4</A>;
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_132_30">Button</A> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_72_12">Real_Buttons</A> <b>then</b>
- <A HREF="terminal_interface-curses-mouse__adb.htm#ref_138_7">L</A> := 2 ** (6 * <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_9">Mouse_Button</A>'Pos (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_132_30">Button</A>));
- <b>for</b> <span class="symbol"><A NAME="ref_152_14">I</A></span> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_75_9">Button_State</A>'<b>Range</b> <b>loop</b>
- <b>if</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_138_7">L</A>) /= 0 <b>then</b>
- <A HREF="terminal_interface-curses-mouse__adb.htm#ref_133_30">State</A> := <A HREF="terminal_interface-curses-mouse__adb.htm#ref_152_14">I</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Button</A> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_68_12">Real_Buttons</A> <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#ref_136_7">L</A> := 2 ** (6 * <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Mouse_Button</A>'Pos (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Button</A>));
+ <b>for</b> <span class="symbol"><A NAME="ref_150_14">I</A></span> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_71_9">Button_State</A>'<b>Range</b> <b>loop</b>
+ <b>if</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_129_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_136_7">L</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">State</A> := <A HREF="terminal_interface-curses-mouse__adb.htm#ref_150_14">I</A>;
<b>exit</b>;
<b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses-mouse__adb.htm#ref_138_7">L</A> := 2 * <A HREF="terminal_interface-curses-mouse__adb.htm#ref_138_7">L</A>;
+ <A HREF="terminal_interface-curses-mouse__adb.htm#ref_136_7">L</A> := 2 * <A HREF="terminal_interface-curses-mouse__adb.htm#ref_136_7">L</A>;
<b>end</b> <b>loop</b>;
<b>else</b>
- <A HREF="terminal_interface-curses-mouse__adb.htm#ref_133_30">State</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_76_26">Pressed</A>;
- <b>if</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_212_4">BUTTON_CTRL</A>) /= 0 <b>then</b>
- <A HREF="terminal_interface-curses-mouse__adb.htm#ref_132_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_68_26">Control</A>;
- <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_213_4">BUTTON_SHIFT</A>) /= 0 <b>then</b>
- <A HREF="terminal_interface-curses-mouse__adb.htm#ref_132_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_69_26">Shift</A>;
- <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_214_4">BUTTON_ALT</A>) /= 0 <b>then</b>
- <A HREF="terminal_interface-curses-mouse__adb.htm#ref_132_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_70_26">Alt</A>;
+ <A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">State</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_72_26">Pressed</A>;
+ <b>if</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_129_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_189_4">BUTTON_CTRL</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_26">Control</A>;
+ <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_129_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_190_4">BUTTON_SHIFT</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_65_26">Shift</A>;
+ <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_129_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_191_4">BUTTON_ALT</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_66_26">Alt</A>;
<b>end</b> <b>if</b>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_14">Dispatch_Event</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_129_14">Dispatch_Event</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_171_14" HREF="terminal_interface-curses-mouse__ads.htm#ref_133_14">Get_Event</A></span> (<span class="symbol"><A NAME="ref_171_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_133_25">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_88_9">Mouse_Event</A>;
- <span class="symbol"><A NAME="ref_172_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_134_25">Y</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_173_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_135_25">X</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_174_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_136_25">Button</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_9">Mouse_Button</A>;
- <span class="symbol"><A NAME="ref_175_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_137_25">State</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_75_9">Button_State</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_169_14" HREF="terminal_interface-curses-mouse__ads.htm#ref_129_14">Get_Event</A></span> (<span class="symbol"><A NAME="ref_169_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_129_25">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_84_9">Mouse_Event</A>;
+ <span class="symbol"><A NAME="ref_170_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_130_25">Y</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_171_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_131_25">X</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_172_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_132_25">Button</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Mouse_Button</A>;
+ <span class="symbol"><A NAME="ref_173_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_133_25">State</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_71_9">Button_State</A>)
<b>is</b>
- <span class="symbol"><A NAME="ref_177_7">Mask</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_133_25">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_170_10">Bstate</A>;
+ <span class="symbol"><A NAME="ref_175_7">Mask</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_129_25">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_169_10">Bstate</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-mouse__ads.htm#ref_135_25">X</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_133_25">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_168_10">X</A>);
- <A HREF="terminal_interface-curses-mouse__ads.htm#ref_134_25">Y</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_133_25">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_168_13">Y</A>);
- <A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_14">Dispatch_Event</A> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_177_7">Mask</A>, <A HREF="terminal_interface-curses-mouse__ads.htm#ref_136_25">Button</A>, <A HREF="terminal_interface-curses-mouse__ads.htm#ref_137_25">State</A>);
- <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_133_14">Get_Event</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#ref_131_25">X</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_129_25">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_167_10">X</A>);
+ <A HREF="terminal_interface-curses-mouse__ads.htm#ref_130_25">Y</A> := <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_129_25">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_167_13">Y</A>);
+ <A HREF="terminal_interface-curses-mouse__adb.htm#ref_129_14">Dispatch_Event</A> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_175_7">Mask</A>, <A HREF="terminal_interface-curses-mouse__ads.htm#ref_132_25">Button</A>, <A HREF="terminal_interface-curses-mouse__ads.htm#ref_133_25">State</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_129_14">Get_Event</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_184_14" HREF="terminal_interface-curses-mouse__ads.htm#ref_145_14">Unget_Mouse</A></span> (<span class="symbol"><A NAME="ref_184_27" HREF="terminal_interface-curses-mouse__ads.htm#ref_145_27">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_88_9">Mouse_Event</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_182_14" HREF="terminal_interface-curses-mouse__ads.htm#ref_141_14">Unget_Mouse</A></span> (<span class="symbol"><A NAME="ref_182_27" HREF="terminal_interface-curses-mouse__ads.htm#ref_141_27">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_84_9">Mouse_Event</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_186_16">Ungetmouse</A></span> (<span class="symbol"><A NAME="ref_186_28" HREF="terminal_interface-curses-mouse__adb.htm#ref_186_16">Ev</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_88_9">Mouse_Event</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_184_16">Ungetmouse</A></span> (<span class="symbol"><A NAME="ref_184_28" HREF="terminal_interface-curses-mouse__adb.htm#ref_184_16">Ev</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_84_9">Mouse_Event</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Ungetmouse, "ungetmouse");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_186_16">Ungetmouse</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_145_27">Event</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_184_16">Ungetmouse</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_141_27">Event</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_145_14">Unget_Mouse</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_141_14">Unget_Mouse</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_194_13" HREF="terminal_interface-curses-mouse__ads.htm#ref_150_13">Enclosed_In_Window</A></span> (<span class="symbol"><A NAME="ref_194_33" HREF="terminal_interface-curses-mouse__ads.htm#ref_150_33">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_195_33" HREF="terminal_interface-curses-mouse__ads.htm#ref_151_33">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_88_9">Mouse_Event</A>) <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_192_13" HREF="terminal_interface-curses-mouse__ads.htm#ref_146_13">Enclosed_In_Window</A></span> (<span class="symbol"><A NAME="ref_192_33" HREF="terminal_interface-curses-mouse__ads.htm#ref_146_33">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_193_33" HREF="terminal_interface-curses-mouse__ads.htm#ref_147_33">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_84_9">Mouse_Event</A>) <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_197_16">Wenclose</A></span> (<span class="symbol"><A NAME="ref_197_26" HREF="terminal_interface-curses-mouse__adb.htm#ref_197_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_197_40" HREF="terminal_interface-curses-mouse__adb.htm#ref_197_16">Y</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>; <span class="symbol"><A NAME="ref_197_51" HREF="terminal_interface-curses-mouse__adb.htm#ref_197_16">X</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>)
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_195_16">Wenclose</A></span> (<span class="symbol"><A NAME="ref_195_26" HREF="terminal_interface-curses-mouse__adb.htm#ref_195_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_195_40" HREF="terminal_interface-curses-mouse__adb.htm#ref_195_16">Y</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>; <span class="symbol"><A NAME="ref_195_51" HREF="terminal_interface-curses-mouse__adb.htm#ref_195_16">X</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Import (C, Wenclose, "wenclose");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_197_16">Wenclose</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_150_33">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_151_33">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_168_13">Y</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_151_33">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_168_10">X</A>))
- = <A HREF="terminal_interface-curses__ads.htm#ref_1926_4">Curses_Bool_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_195_16">Wenclose</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_146_33">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_147_33">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_167_13">Y</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_147_33">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_167_10">X</A>))
+ = <A HREF="terminal_interface-curses__ads.htm#ref_2100_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> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_150_13">Enclosed_In_Window</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_146_13">Enclosed_In_Window</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_209_13" HREF="terminal_interface-curses-mouse__ads.htm#ref_157_13">Mouse_Interval</A></span> (<span class="symbol"><A NAME="ref_209_29" HREF="terminal_interface-curses-mouse__ads.htm#ref_157_29">Msec</A></span> : Natural := 200) <b>return</b> Natural
+ <b>function</b> <span class="symbol"><A NAME="ref_208_13" HREF="terminal_interface-curses-mouse__ads.htm#ref_153_13">Mouse_Interval</A></span> (<span class="symbol"><A NAME="ref_208_29" HREF="terminal_interface-curses-mouse__ads.htm#ref_153_29">Msec</A></span> : Natural := 200) <b>return</b> Natural
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_211_16">Mouseinterval</A></span> (<span class="symbol"><A NAME="ref_211_31" HREF="terminal_interface-curses-mouse__adb.htm#ref_211_16">Msec</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_210_16">Mouseinterval</A></span> (<span class="symbol"><A NAME="ref_210_31" HREF="terminal_interface-curses-mouse__adb.htm#ref_210_16">Msec</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Mouseinterval, "mouseinterval");
<b>begin</b>
- <b>return</b> Natural (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_211_16">Mouseinterval</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_157_29">Msec</A>)));
- <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_157_13">Mouse_Interval</A>;
+ <b>return</b> Natural (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_210_16">Mouseinterval</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_153_29">Msec</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_153_13">Mouse_Interval</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_48_35">Mouse</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_44_35">Mouse</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-mouse__ads.htm b/doc/html/ada/terminal_interface-curses-mouse__ads.htm
index 4b3a071e278d..4a8043b10567 100644
--- a/doc/html/ada/terminal_interface-curses-mouse__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-mouse__ads.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- S P E C --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2014,2015 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,18 +52,14 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.29 @</EM></span>
-<span class="comment"><EM>-- @Date: 2011/03/19 12:35:58 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.32 @</EM></span>
+<span class="comment"><EM>-- @Date: 2015/05/30 23:19:19 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- mouse binding.</EM></span>
-<span class="comment"><EM>-- This module is generated. Please don't change it manually!</EM></span>
-<span class="comment"><EM>-- Run the generator instead.</EM></span>
-<span class="comment"><EM>-- |</EM></span>
<b>with</b> System;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_48_35" HREF="terminal_interface-curses-mouse__adb.htm#ref_46_40">Mouse</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_48_35">Mouse</A>);
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_44_35" HREF="terminal_interface-curses-mouse__adb.htm#ref_46_40">Mouse</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_44_35">Mouse</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_mouse.3x.html">curs_mouse.3x</A></EM></span>
@@ -74,170 +70,153 @@
<span class="comment"><EM>-- Not implemented:</EM></span>
<span class="comment"><EM>-- REPORT_MOUSE_POSITION (i.e. as a parameter to Register_Reportable_Event</EM></span>
<span class="comment"><EM>-- or Start_Mouse)</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_60_9">Event_Mask</A></span> <b>is</b> <b>private</b>;
- <span class="symbol"><A NAME="ref_61_4">No_Events</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>;
- <span class="symbol"><A NAME="ref_62_4">All_Events</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>;
-
- <b>type</b> <span class="symbol"><A NAME="ref_64_9">Mouse_Button</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_64_26">Left</A></span>, <span class="comment"><EM>-- aka: Button 1</EM></span>
- <span class="symbol"><A NAME="ref_65_26">Middle</A></span>, <span class="comment"><EM>-- aka: Button 2</EM></span>
- <span class="symbol"><A NAME="ref_66_26">Right</A></span>, <span class="comment"><EM>-- aka: Button 3</EM></span>
- <span class="symbol"><A NAME="ref_67_26">Button4</A></span>, <span class="comment"><EM>-- aka: Button 4</EM></span>
- <span class="symbol"><A NAME="ref_68_26">Control</A></span>, <span class="comment"><EM>-- Control Key</EM></span>
- <span class="symbol"><A NAME="ref_69_26">Shift</A></span>, <span class="comment"><EM>-- Shift Key</EM></span>
- <span class="symbol"><A NAME="ref_70_26">Alt</A></span>); <span class="comment"><EM>-- ALT Key</EM></span>
-
- <b>subtype</b> <span class="symbol"><A NAME="ref_72_12">Real_Buttons</A></span> <b>is</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_9">Mouse_Button</A> <b>range</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_26">Left</A> .. <A HREF="terminal_interface-curses-mouse__ads.htm#ref_67_26">Button4</A>;
- <b>subtype</b> <span class="symbol"><A NAME="ref_73_12">Modifier_Keys</A></span> <b>is</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_9">Mouse_Button</A> <b>range</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_68_26">Control</A> .. <A HREF="terminal_interface-curses-mouse__ads.htm#ref_70_26">Alt</A>;
-
- <b>type</b> <span class="symbol"><A NAME="ref_75_9">Button_State</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_75_26">Released</A></span>,
- <span class="symbol"><A NAME="ref_76_26">Pressed</A></span>,
- <span class="symbol"><A NAME="ref_77_26">Clicked</A></span>,
- <span class="symbol"><A NAME="ref_78_26">Double_Clicked</A></span>,
- <span class="symbol"><A NAME="ref_79_26">Triple_Clicked</A></span>);
-
- <b>type</b> Button_States <b>is</b> <b>array</b> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_75_9">Button_State</A>) <b>of</b> Boolean;
+ <b>type</b> <span class="symbol"><A NAME="ref_56_9">Event_Mask</A></span> <b>is</b> <b>private</b>;
+ <span class="symbol"><A NAME="ref_57_4">No_Events</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>;
+ <span class="symbol"><A NAME="ref_58_4">All_Events</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>;
+
+ <b>type</b> <span class="symbol"><A NAME="ref_60_9">Mouse_Button</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_60_26">Left</A></span>, <span class="comment"><EM>-- aka: Button 1</EM></span>
+ <span class="symbol"><A NAME="ref_61_26">Middle</A></span>, <span class="comment"><EM>-- aka: Button 2</EM></span>
+ <span class="symbol"><A NAME="ref_62_26">Right</A></span>, <span class="comment"><EM>-- aka: Button 3</EM></span>
+ <span class="symbol"><A NAME="ref_63_26">Button4</A></span>, <span class="comment"><EM>-- aka: Button 4</EM></span>
+ <span class="symbol"><A NAME="ref_64_26">Control</A></span>, <span class="comment"><EM>-- Control Key</EM></span>
+ <span class="symbol"><A NAME="ref_65_26">Shift</A></span>, <span class="comment"><EM>-- Shift Key</EM></span>
+ <span class="symbol"><A NAME="ref_66_26">Alt</A></span>); <span class="comment"><EM>-- ALT Key</EM></span>
+
+ <b>subtype</b> <span class="symbol"><A NAME="ref_68_12">Real_Buttons</A></span> <b>is</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Mouse_Button</A> <b>range</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_26">Left</A> .. <A HREF="terminal_interface-curses-mouse__ads.htm#ref_63_26">Button4</A>;
+ <b>subtype</b> <span class="symbol"><A NAME="ref_69_12">Modifier_Keys</A></span> <b>is</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Mouse_Button</A> <b>range</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_26">Control</A> .. <A HREF="terminal_interface-curses-mouse__ads.htm#ref_66_26">Alt</A>;
+
+ <b>type</b> <span class="symbol"><A NAME="ref_71_9">Button_State</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_71_26">Released</A></span>,
+ <span class="symbol"><A NAME="ref_72_26">Pressed</A></span>,
+ <span class="symbol"><A NAME="ref_73_26">Clicked</A></span>,
+ <span class="symbol"><A NAME="ref_74_26">Double_Clicked</A></span>,
+ <span class="symbol"><A NAME="ref_75_26">Triple_Clicked</A></span>);
+
+ <b>type</b> Button_States <b>is</b> <b>array</b> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_71_9">Button_State</A>) <b>of</b> Boolean;
<b>pragma</b> Pack (Button_States);
- <span class="symbol"><A NAME="ref_84_4">All_Clicks</A></span> : <b>constant</b> Button_States := (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_77_26">Clicked</A> .. <A HREF="terminal_interface-curses-mouse__ads.htm#ref_79_26">Triple_Clicked</A> =&gt; True,
+ <span class="symbol"><A NAME="ref_80_4">All_Clicks</A></span> : <b>constant</b> Button_States := (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_73_26">Clicked</A> .. <A HREF="terminal_interface-curses-mouse__ads.htm#ref_75_26">Triple_Clicked</A> =&gt; True,
<b>others</b> =&gt; False);
- <span class="symbol"><A NAME="ref_86_4">All_States</A></span> : <b>constant</b> Button_States := (<b>others</b> =&gt; True);
+ <span class="symbol"><A NAME="ref_82_4">All_States</A></span> : <b>constant</b> Button_States := (<b>others</b> =&gt; True);
- <b>type</b> <span class="symbol"><A NAME="ref_88_9">Mouse_Event</A></span> <b>is</b> <b>private</b>;
+ <b>type</b> <span class="symbol"><A NAME="ref_84_9">Mouse_Event</A></span> <b>is</b> <b>private</b>;
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_mouse.3x.html">curs_mouse.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_94_13" HREF="terminal_interface-curses-mouse__adb.htm#ref_50_13">Has_Mouse</A></span> <b>return</b> Boolean;
+ <b>function</b> <span class="symbol"><A NAME="ref_90_13" HREF="terminal_interface-curses-mouse__adb.htm#ref_48_13">Has_Mouse</A></span> <b>return</b> Boolean;
<span class="comment"><EM>-- Return true if a mouse device is supported, false otherwise.</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_97_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_77_14">Register_Reportable_Event</A></span>
- (<span class="symbol"><A NAME="ref_98_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_77_41">Button</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_9">Mouse_Button</A>;
- <span class="symbol"><A NAME="ref_99_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_78_41">State</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_75_9">Button_State</A>;
- <span class="symbol"><A NAME="ref_100_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_79_41">Mask</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_93_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_75_14">Register_Reportable_Event</A></span>
+ (<span class="symbol"><A NAME="ref_94_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_75_41">Button</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Mouse_Button</A>;
+ <span class="symbol"><A NAME="ref_95_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_76_41">State</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_71_9">Button_State</A>;
+ <span class="symbol"><A NAME="ref_96_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_77_41">Mask</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>);
<span class="comment"><EM>-- Stores the event described by the button and the state in the mask.</EM></span>
<span class="comment"><EM>-- Before you call this the first time, you should initialize the mask</EM></span>
<span class="comment"><EM>-- with the Empty_Mask constant</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_97_14">Register_Reportable_Event</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_93_14">Register_Reportable_Event</A>);
- <b>procedure</b> <span class="symbol"><A NAME="ref_106_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_95_14">Register_Reportable_Events</A></span>
- (<span class="symbol"><A NAME="ref_107_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_95_42">Button</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_9">Mouse_Button</A>;
- <span class="symbol"><A NAME="ref_108_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_96_42">State</A></span> : Button_States;
- <span class="symbol"><A NAME="ref_109_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_97_42">Mask</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_102_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_93_14">Register_Reportable_Events</A></span>
+ (<span class="symbol"><A NAME="ref_103_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_93_42">Button</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Mouse_Button</A>;
+ <span class="symbol"><A NAME="ref_104_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_94_42">State</A></span> : Button_States;
+ <span class="symbol"><A NAME="ref_105_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_95_42">Mask</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>);
<span class="comment"><EM>-- Register all events described by the Button and the State bitmap.</EM></span>
<span class="comment"><EM>-- Before you call this the first time, you should initialize the mask</EM></span>
<span class="comment"><EM>-- with the Empty_Mask constant</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_1"#2|</EM></span>
+ <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span>
<span class="comment"><EM>-- There is one difference to mousmask(): we return the value of the</EM></span>
<span class="comment"><EM>-- old mask, that means the event mask value before this call.</EM></span>
<span class="comment"><EM>-- Not Implemented: The library version</EM></span>
<span class="comment"><EM>-- returns a Mouse_Mask that tells which events are reported.</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_119_13" HREF="terminal_interface-curses-mouse__adb.htm#ref_107_13">Start_Mouse</A></span> (<span class="symbol"><A NAME="ref_119_26" HREF="terminal_interface-curses-mouse__adb.htm#ref_107_26">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_62_4">All_Events</A>)
- <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_115_13" HREF="terminal_interface-curses-mouse__adb.htm#ref_105_13">Start_Mouse</A></span> (<span class="symbol"><A NAME="ref_115_26" HREF="terminal_interface-curses-mouse__adb.htm#ref_105_26">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_58_4">All_Events</A>)
+ <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">mousemask()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_119_13">Start_Mouse</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_115_13">Start_Mouse</A>);
- <b>procedure</b> <span class="symbol"><A NAME="ref_124_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_123_14">End_Mouse</A></span> (<span class="symbol"><A NAME="ref_124_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_123_25">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_4">No_Events</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_120_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_121_14">End_Mouse</A></span> (<span class="symbol"><A NAME="ref_120_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_121_25">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_4">No_Events</A>);
<span class="comment"><EM>-- Terminates the mouse, restores the specified event mask</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_124_14">End_Mouse</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_120_14">End_Mouse</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_2"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_129_13" HREF="terminal_interface-curses-mouse__adb.htm#ref_62_13">Get_Mouse</A></span> <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_88_9">Mouse_Event</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_125_13" HREF="terminal_interface-curses-mouse__adb.htm#ref_60_13">Get_Mouse</A></span> <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_84_9">Mouse_Event</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">getmouse()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_129_13">Get_Mouse</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_125_13">Get_Mouse</A>);
- <b>procedure</b> <span class="symbol"><A NAME="ref_133_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_171_14">Get_Event</A></span> (<span class="symbol"><A NAME="ref_133_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_171_25">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_88_9">Mouse_Event</A>;
- <span class="symbol"><A NAME="ref_134_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_172_25">Y</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_135_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_173_25">X</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_136_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_174_25">Button</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_9">Mouse_Button</A>;
- <span class="symbol"><A NAME="ref_137_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_175_25">State</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_75_9">Button_State</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_129_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_169_14">Get_Event</A></span> (<span class="symbol"><A NAME="ref_129_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_169_25">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_84_9">Mouse_Event</A>;
+ <span class="symbol"><A NAME="ref_130_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_170_25">Y</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_131_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_171_25">X</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_132_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_172_25">Button</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Mouse_Button</A>;
+ <span class="symbol"><A NAME="ref_133_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_173_25">State</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_71_9">Button_State</A>);
<span class="comment"><EM>-- !!! Warning: X and Y are screen coordinates. Due to ripped of lines they</EM></span>
<span class="comment"><EM>-- may not be identical to window coordinates.</EM></span>
<span class="comment"><EM>-- Not Implemented: Get_Event only reports one event, the C library</EM></span>
<span class="comment"><EM>-- version supports multiple events, e.g. {click-1, click-3}</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_133_14">Get_Event</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_129_14">Get_Event</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_3"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_145_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_184_14">Unget_Mouse</A></span> (<span class="symbol"><A NAME="ref_145_27" HREF="terminal_interface-curses-mouse__adb.htm#ref_184_27">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_88_9">Mouse_Event</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_141_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_182_14">Unget_Mouse</A></span> (<span class="symbol"><A NAME="ref_141_27" HREF="terminal_interface-curses-mouse__adb.htm#ref_182_27">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_84_9">Mouse_Event</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">ungetmouse()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_145_14">Unget_Mouse</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_141_14">Unget_Mouse</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_4"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_150_13" HREF="terminal_interface-curses-mouse__adb.htm#ref_194_13">Enclosed_In_Window</A></span> (<span class="symbol"><A NAME="ref_150_33" HREF="terminal_interface-curses-mouse__adb.htm#ref_194_33">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_151_33" HREF="terminal_interface-curses-mouse__adb.htm#ref_195_33">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_88_9">Mouse_Event</A>) <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_4">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_146_13" HREF="terminal_interface-curses-mouse__adb.htm#ref_192_13">Enclosed_In_Window</A></span> (<span class="symbol"><A NAME="ref_146_33" HREF="terminal_interface-curses-mouse__adb.htm#ref_192_33">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_147_33" HREF="terminal_interface-curses-mouse__adb.htm#ref_193_33">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_84_9">Mouse_Event</A>) <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">wenclose()</A></EM></span>
<span class="comment"><EM>-- But : use event instead of screen coordinates.</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_150_13">Enclosed_In_Window</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_146_13">Enclosed_In_Window</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_5"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_157_13" HREF="terminal_interface-curses-mouse__adb.htm#ref_209_13">Mouse_Interval</A></span> (<span class="symbol"><A NAME="ref_157_29" HREF="terminal_interface-curses-mouse__adb.htm#ref_209_29">Msec</A></span> : Natural := 200) <b>return</b> Natural;
+ <span class="comment"><EM>-- <A NAME="AFU_5">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_153_13" HREF="terminal_interface-curses-mouse__adb.htm#ref_208_13">Mouse_Interval</A></span> (<span class="symbol"><A NAME="ref_153_29" HREF="terminal_interface-curses-mouse__adb.htm#ref_208_29">Msec</A></span> : Natural := 200) <b>return</b> Natural;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">mouseinterval()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_157_13">Mouse_Interval</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_153_13">Mouse_Interval</A>);
<b>private</b>
- <b>type</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> <b>is</b> <b>new</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.unsigned_long;
+ <span class="comment"><EM>-- This can be as little as 32 bits (unsigned), or as long as the system's</EM></span>
+ <span class="comment"><EM>-- unsigned long. Declare it as the minimum size to handle all valid</EM></span>
+ <span class="comment"><EM>-- sizes.</EM></span>
+ <b>type</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A> <b>is</b> <b>mod</b> 4294967296;
- <b>type</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_88_9">Mouse_Event</A> <b>is</b>
+ <b>type</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_84_9">Mouse_Event</A> <b>is</b>
<b>record</b>
- <span class="symbol"><A NAME="ref_166_10">Id</A></span> : Integer <b>range</b> Integer (<A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.short'First) ..
- Integer (<A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.short'Last);
- <span class="symbol"><A NAME="ref_168_10">X</A></span>, <span class="symbol"><A NAME="ref_168_13">Y</A></span>, <span class="symbol"><A NAME="ref_168_16">Z</A></span> : Integer <b>range</b> Integer (<A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int'First) ..
- Integer (<A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int'Last);
- <span class="symbol"><A NAME="ref_170_10">Bstate</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A>;
+ <span class="symbol"><A NAME="ref_165_10">Id</A></span> : Integer <b>range</b> Integer (<A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.short'First) ..
+ Integer (<A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.short'Last);
+ <span class="symbol"><A NAME="ref_167_10">X</A></span>, <span class="symbol"><A NAME="ref_167_13">Y</A></span>, <span class="symbol"><A NAME="ref_167_16">Z</A></span> : Integer <b>range</b> Integer (<A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int'First) ..
+ Integer (<A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int'Last);
+ <span class="symbol"><A NAME="ref_169_10">Bstate</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>;
<b>end</b> <b>record</b>;
- <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-mouse__ads.htm#ref_88_9">Mouse_Event</A>);
+ <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-mouse__ads.htm#ref_84_9">Mouse_Event</A>);
- <b>for</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_88_9">Mouse_Event</A> <b>use</b>
+ <b>for</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_84_9">Mouse_Event</A> <b>use</b>
<b>record</b>
- <A HREF="terminal_interface-curses-mouse__ads.htm#ref_166_10">Id</A> <b>at</b> 0 <b>range</b> 0 .. 15;
- <A HREF="terminal_interface-curses-mouse__ads.htm#ref_168_10">X</A> <b>at</b> 0 <b>range</b> 32 .. 63;
- <A HREF="terminal_interface-curses-mouse__ads.htm#ref_168_13">Y</A> <b>at</b> 0 <b>range</b> 64 .. 95;
- <A HREF="terminal_interface-curses-mouse__ads.htm#ref_168_16">Z</A> <b>at</b> 0 <b>range</b> 96 .. 127;
- <A HREF="terminal_interface-curses-mouse__ads.htm#ref_170_10">Bstate</A> <b>at</b> 0 <b>range</b> 128 .. 191;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#ref_165_10">Id</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_310_4">MEVENT_id_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_311_4">MEVENT_id_Last</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#ref_167_10">X</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_312_4">MEVENT_x_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_313_4">MEVENT_x_Last</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#ref_167_13">Y</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_314_4">MEVENT_y_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_315_4">MEVENT_y_Last</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#ref_167_16">Z</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_316_4">MEVENT_z_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_317_4">MEVENT_z_Last</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#ref_169_10">Bstate</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_318_4">MEVENT_bstate_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_319_4">MEVENT_bstate_Last</A>;
<b>end</b> <b>record</b>;
- <span class="comment"><EM>-- Please note: this rep. clause is generated and may be</EM></span>
- <span class="comment"><EM>-- different on your system.</EM></span>
-
- <span class="symbol"><A NAME="ref_185_4">Generation_Bit_Order</A></span> : <b>constant</b> System.Bit_Order := System.Low_Order_First;
- <span class="comment"><EM>-- This constant may be different on your system.</EM></span>
-
- <span class="symbol"><A NAME="ref_188_4">BUTTON1_RELEASED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000000001#;
- <span class="symbol"><A NAME="ref_189_4">BUTTON1_PRESSED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000000002#;
- <span class="symbol"><A NAME="ref_190_4">BUTTON1_CLICKED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000000004#;
- <span class="symbol"><A NAME="ref_191_4">BUTTON1_DOUBLE_CLICKED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000000010#;
- <span class="symbol"><A NAME="ref_192_4">BUTTON1_TRIPLE_CLICKED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000000020#;
- <span class="symbol"><A NAME="ref_193_4">BUTTON1_RESERVED_EVENT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000000040#;
- <span class="symbol"><A NAME="ref_194_4">BUTTON2_RELEASED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000000100#;
- <span class="symbol"><A NAME="ref_195_4">BUTTON2_PRESSED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000000200#;
- <span class="symbol"><A NAME="ref_196_4">BUTTON2_CLICKED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000000400#;
- <span class="symbol"><A NAME="ref_197_4">BUTTON2_DOUBLE_CLICKED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000001000#;
- <span class="symbol"><A NAME="ref_198_4">BUTTON2_TRIPLE_CLICKED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000002000#;
- <span class="symbol"><A NAME="ref_199_4">BUTTON2_RESERVED_EVENT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000004000#;
- <span class="symbol"><A NAME="ref_200_4">BUTTON3_RELEASED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000010000#;
- <span class="symbol"><A NAME="ref_201_4">BUTTON3_PRESSED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000020000#;
- <span class="symbol"><A NAME="ref_202_4">BUTTON3_CLICKED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000040000#;
- <span class="symbol"><A NAME="ref_203_4">BUTTON3_DOUBLE_CLICKED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000100000#;
- <span class="symbol"><A NAME="ref_204_4">BUTTON3_TRIPLE_CLICKED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000200000#;
- <span class="symbol"><A NAME="ref_205_4">BUTTON3_RESERVED_EVENT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000400000#;
- <span class="symbol"><A NAME="ref_206_4">BUTTON4_RELEASED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00001000000#;
- <span class="symbol"><A NAME="ref_207_4">BUTTON4_PRESSED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00002000000#;
- <span class="symbol"><A NAME="ref_208_4">BUTTON4_CLICKED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00004000000#;
- <span class="symbol"><A NAME="ref_209_4">BUTTON4_DOUBLE_CLICKED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00010000000#;
- <span class="symbol"><A NAME="ref_210_4">BUTTON4_TRIPLE_CLICKED</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00020000000#;
- <span class="symbol"><A NAME="ref_211_4">BUTTON4_RESERVED_EVENT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00040000000#;
- <span class="symbol"><A NAME="ref_212_4">BUTTON_CTRL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00100000000#;
- <span class="symbol"><A NAME="ref_213_4">BUTTON_SHIFT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00200000000#;
- <span class="symbol"><A NAME="ref_214_4">BUTTON_ALT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00400000000#;
- <span class="symbol"><A NAME="ref_215_4">REPORT_MOUSE_POSITION</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#01000000000#;
- <span class="symbol"><A NAME="ref_216_4">ALL_MOUSE_EVENTS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00777777777#;
- <span class="symbol"><A NAME="ref_217_4">BUTTON1_EVENTS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000000077#;
- <span class="symbol"><A NAME="ref_218_4">BUTTON2_EVENTS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000007700#;
- <span class="symbol"><A NAME="ref_219_4">BUTTON3_EVENTS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00000770000#;
- <span class="symbol"><A NAME="ref_220_4">BUTTON4_EVENTS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 8#00077000000#;
-
- <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_4">No_Events</A> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := 0;
- <A HREF="terminal_interface-curses-mouse__ads.htm#ref_62_4">All_Events</A> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_60_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_216_4">ALL_MOUSE_EVENTS</A>;
-
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_48_35">Mouse</A>;
+ <b>for</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_84_9">Mouse_Event</A>'Size <b>use</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_320_4">MEVENT_Size</A>;
+ Generation_Bit_Order : System.Bit_Order <b>renames</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_10_4">Bit_Order</A>;
+
+ <span class="symbol"><A NAME="ref_189_4">BUTTON_CTRL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_348_4">BUTTON_CTRL</A>;
+ <span class="symbol"><A NAME="ref_190_4">BUTTON_SHIFT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_349_4">BUTTON_SHIFT</A>;
+ <span class="symbol"><A NAME="ref_191_4">BUTTON_ALT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_350_4">BUTTON_ALT</A>;
+ <span class="symbol"><A NAME="ref_192_4">BUTTON1_EVENTS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_329_4">all_events_button_1</A>;
+ <span class="symbol"><A NAME="ref_194_4">BUTTON2_EVENTS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_335_4">all_events_button_2</A>;
+ <span class="symbol"><A NAME="ref_196_4">BUTTON3_EVENTS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_341_4">all_events_button_3</A>;
+ <span class="symbol"><A NAME="ref_198_4">BUTTON4_EVENTS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_347_4">all_events_button_4</A>;
+ <span class="symbol"><A NAME="ref_200_4">ALL_MOUSE_EVENTS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_352_4">ALL_MOUSE_EVENTS</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_4">No_Events</A> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A> := 0;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#ref_58_4">All_Events</A> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_56_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_200_4">ALL_MOUSE_EVENTS</A>;
+
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_44_35">Mouse</A>;
</PRE></BODY></HTML>
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
index 91c5a0b9b135..8ab3b2ca6ff1 100644
--- a/doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm
+++ b/doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm
@@ -55,42 +55,42 @@
<span class="comment"><EM>-- @Revision: 1.12 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
-<b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>;
-<b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
+<b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>;
+<b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>.<span class="symbol"><A NAME="ref_47_47" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_42">User_Data</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>.<span class="symbol"><A NAME="ref_47_47" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_42">User_Data</A></span> <b>is</b>
- <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int;
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int;
- <b>procedure</b> <span class="symbol"><A NAME="ref_51_14" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_53_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_51_29" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_53_29">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_51_14" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_53_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_51_29" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_53_29">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
<span class="symbol"><A NAME="ref_52_29" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_54_29">Data</A></span> : <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_44_9">User_Access</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_54_16">Set_Panel_Userptr</A></span> (<span class="symbol"><A NAME="ref_54_35" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_54_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
- <span class="symbol"><A NAME="ref_55_35" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_54_16">Addr</A></span> : <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_44_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_54_16">Set_Panel_Userptr</A></span> (<span class="symbol"><A NAME="ref_54_35" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_54_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
+ <span class="symbol"><A NAME="ref_55_35" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_54_16">Addr</A></span> : <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_44_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Set_Panel_Userptr, "set_panel_userptr");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_54_16">Set_Panel_Userptr</A> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_53_29">Pan</A>, <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_54_29">Data</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_54_16">Set_Panel_Userptr</A> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_53_29">Pan</A>, <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_54_29">Data</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_59_4">Panel_Exception</A>;
<b>end</b> <b>if</b>;
<b>end</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_53_14">Set_User_Data</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_63_13" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_64_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_63_28" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_64_28">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_44_9">User_Access</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_63_13" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_64_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_63_28" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_64_28">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_44_9">User_Access</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_65_16">Panel_Userptr</A></span> (<span class="symbol"><A NAME="ref_65_31" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_65_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_44_9">User_Access</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_65_16">Panel_Userptr</A></span> (<span class="symbol"><A NAME="ref_65_31" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_65_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_44_9">User_Access</A>;
<b>pragma</b> Import (C, Panel_Userptr, "panel_userptr");
<b>begin</b>
<b>return</b> <A HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_65_16">Panel_Userptr</A> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_64_28">Pan</A>);
<b>end</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_64_13">Get_User_Data</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_71_14" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_59_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_71_29" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_59_29">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_71_14" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_59_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_71_29" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_59_29">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
<span class="symbol"><A NAME="ref_72_29" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_60_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_44_9">User_Access</A>)
<b>is</b>
<b>begin</b>
<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_60_29">Data</A> := <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_64_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_59_29">Pan</A>);
<b>end</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_59_14">Get_User_Data</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>.<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_42">User_Data</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>.<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_42">User_Data</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm b/doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm
index dc2eba0a96a3..0bb721d92b48 100644
--- a/doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm
@@ -59,29 +59,29 @@
<b>generic</b>
<b>type</b> <span class="symbol"><A NAME="ref_43_9" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_42">User</A></span> <b>is</b> <b>limited</b> <b>private</b>;
<b>type</b> <span class="symbol"><A NAME="ref_44_9" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_42">User_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_43_9">User</A>;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>.<span class="symbol"><A NAME="ref_45_42" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_47_47">User_Data</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>.<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_42">User_Data</A>);
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>.<span class="symbol"><A NAME="ref_45_42" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_47_47">User_Data</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>.<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_42">User_Data</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/panel.3x.html">panel.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_1"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_53_14" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_51_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_53_29" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_51_29">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_53_14" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_51_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_53_29" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_51_29">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
<span class="symbol"><A NAME="ref_54_29" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_52_29">Data</A></span> : <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_44_9">User_Access</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">set_panel_userptr</A></EM></span>
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_53_14">Set_User_Data</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_2"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_59_14" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_71_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_59_29" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_71_29">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_59_14" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_71_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_59_29" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_71_29">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
<span class="symbol"><A NAME="ref_60_29" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_72_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_44_9">User_Access</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_userptr</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_3"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_64_13" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_63_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_64_28" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_63_28">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_44_9">User_Access</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_64_13" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_63_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_64_28" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_63_28">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_44_9">User_Access</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_userptr</A></EM></span>
<span class="comment"><EM>-- Same as function</EM></span>
<b>pragma</b> Inline (Get_User_Data);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>.<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_42">User_Data</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>.<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_42">User_Data</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-panels__adb.htm b/doc/html/ada/terminal_interface-curses-panels__adb.htm
index 819ad63bae03..9d81a1c5d697 100644
--- a/doc/html/ada/terminal_interface-curses-panels__adb.htm
+++ b/doc/html/ada/terminal_interface-curses-panels__adb.htm
@@ -56,128 +56,128 @@
<span class="comment"><EM>-- @Date: 2009/12/26 17:38:58 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_45_40" HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_45_40" HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A></span> <b>is</b>
- <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int;
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int;
- <b>function</b> <span class="symbol"><A NAME="ref_49_13" HREF="terminal_interface-curses-panels__ads.htm#ref_67_13">Create</A></span> (<span class="symbol"><A NAME="ref_49_21" HREF="terminal_interface-curses-panels__ads.htm#ref_67_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_49_13" HREF="terminal_interface-curses-panels__ads.htm#ref_66_13">Create</A></span> (<span class="symbol"><A NAME="ref_49_21" HREF="terminal_interface-curses-panels__ads.htm#ref_66_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_51_16">Newpanel</A></span> (<span class="symbol"><A NAME="ref_51_26" HREF="terminal_interface-curses-panels__adb.htm#ref_51_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_51_16">Newpanel</A></span> (<span class="symbol"><A NAME="ref_51_26" HREF="terminal_interface-curses-panels__adb.htm#ref_51_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
<b>pragma</b> Import (C, Newpanel, "new_panel");
- <span class="symbol"><A NAME="ref_54_7">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
+ <span class="symbol"><A NAME="ref_54_7">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses-panels__adb.htm#ref_54_7">Pan</A> := <A HREF="terminal_interface-curses-panels__adb.htm#ref_51_16">Newpanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_67_21">Win</A>);
- <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_54_7">Pan</A> = <A HREF="terminal_interface-curses-panels__ads.htm#ref_54_4">Null_Panel</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>;
+ <A HREF="terminal_interface-curses-panels__adb.htm#ref_54_7">Pan</A> := <A HREF="terminal_interface-curses-panels__adb.htm#ref_51_16">Newpanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_66_21">Win</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_54_7">Pan</A> = <A HREF="terminal_interface-curses-panels__ads.htm#ref_53_4">Null_Panel</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_59_4">Panel_Exception</A>;
<b>end</b> <b>if</b>;
<b>return</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_54_7">Pan</A>;
- <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_67_13">Create</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_66_13">Create</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_63_14" HREF="terminal_interface-curses-panels__ads.htm#ref_77_14">Bottom</A></span> (<span class="symbol"><A NAME="ref_63_22" HREF="terminal_interface-curses-panels__ads.htm#ref_77_22">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_63_14" HREF="terminal_interface-curses-panels__ads.htm#ref_76_14">Bottom</A></span> (<span class="symbol"><A NAME="ref_63_22" HREF="terminal_interface-curses-panels__ads.htm#ref_76_22">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_65_16">Bottompanel</A></span> (<span class="symbol"><A NAME="ref_65_29" HREF="terminal_interface-curses-panels__adb.htm#ref_65_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_65_16">Bottompanel</A></span> (<span class="symbol"><A NAME="ref_65_29" HREF="terminal_interface-curses-panels__adb.htm#ref_65_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Bottompanel, "bottom_panel");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_65_16">Bottompanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_77_22">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_65_16">Bottompanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_76_22">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_59_4">Panel_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_77_14">Bottom</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_76_14">Bottom</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_73_14" HREF="terminal_interface-curses-panels__ads.htm#ref_82_14">Top</A></span> (<span class="symbol"><A NAME="ref_73_19" HREF="terminal_interface-curses-panels__ads.htm#ref_82_19">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_73_14" HREF="terminal_interface-curses-panels__ads.htm#ref_81_14">Top</A></span> (<span class="symbol"><A NAME="ref_73_19" HREF="terminal_interface-curses-panels__ads.htm#ref_81_19">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_75_16">Toppanel</A></span> (<span class="symbol"><A NAME="ref_75_26" HREF="terminal_interface-curses-panels__adb.htm#ref_75_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_75_16">Toppanel</A></span> (<span class="symbol"><A NAME="ref_75_26" HREF="terminal_interface-curses-panels__adb.htm#ref_75_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Toppanel, "top_panel");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_75_16">Toppanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_82_19">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_75_16">Toppanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_81_19">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_59_4">Panel_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_82_14">Top</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_81_14">Top</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_83_14" HREF="terminal_interface-curses-panels__ads.htm#ref_87_14">Show</A></span> (<span class="symbol"><A NAME="ref_83_20" HREF="terminal_interface-curses-panels__ads.htm#ref_87_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_83_14" HREF="terminal_interface-curses-panels__ads.htm#ref_86_14">Show</A></span> (<span class="symbol"><A NAME="ref_83_20" HREF="terminal_interface-curses-panels__ads.htm#ref_86_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_85_16">Showpanel</A></span> (<span class="symbol"><A NAME="ref_85_27" HREF="terminal_interface-curses-panels__adb.htm#ref_85_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_85_16">Showpanel</A></span> (<span class="symbol"><A NAME="ref_85_27" HREF="terminal_interface-curses-panels__adb.htm#ref_85_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Showpanel, "show_panel");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_85_16">Showpanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_87_20">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_85_16">Showpanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_86_20">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_59_4">Panel_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_87_14">Show</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_86_14">Show</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_93_14" HREF="terminal_interface-curses-panels__ads.htm#ref_97_14">Hide</A></span> (<span class="symbol"><A NAME="ref_93_20" HREF="terminal_interface-curses-panels__ads.htm#ref_97_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_93_14" HREF="terminal_interface-curses-panels__ads.htm#ref_96_14">Hide</A></span> (<span class="symbol"><A NAME="ref_93_20" HREF="terminal_interface-curses-panels__ads.htm#ref_96_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_95_16">Hidepanel</A></span> (<span class="symbol"><A NAME="ref_95_27" HREF="terminal_interface-curses-panels__adb.htm#ref_95_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_95_16">Hidepanel</A></span> (<span class="symbol"><A NAME="ref_95_27" HREF="terminal_interface-curses-panels__adb.htm#ref_95_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Hidepanel, "hide_panel");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_95_16">Hidepanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_97_20">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_95_16">Hidepanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_96_20">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_59_4">Panel_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_97_14">Hide</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_96_14">Hide</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_103_13" HREF="terminal_interface-curses-panels__ads.htm#ref_102_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_103_25" HREF="terminal_interface-curses-panels__ads.htm#ref_102_25">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_103_13" HREF="terminal_interface-curses-panels__ads.htm#ref_101_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_103_25" HREF="terminal_interface-curses-panels__ads.htm#ref_101_25">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_105_16">Panel_Win</A></span> (<span class="symbol"><A NAME="ref_105_27" HREF="terminal_interface-curses-panels__adb.htm#ref_105_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_105_16">Panel_Win</A></span> (<span class="symbol"><A NAME="ref_105_27" HREF="terminal_interface-curses-panels__adb.htm#ref_105_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>pragma</b> Import (C, Panel_Win, "panel_window");
- <span class="symbol"><A NAME="ref_108_7">Win</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses-panels__adb.htm#ref_105_16">Panel_Win</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_102_25">Pan</A>);
+ <span class="symbol"><A NAME="ref_108_7">Win</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses-panels__adb.htm#ref_105_16">Panel_Win</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_101_25">Pan</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_108_7">Win</A> = <A HREF="terminal_interface-curses__ads.htm#ref_58_4">Null_Window</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_108_7">Win</A> = <A HREF="terminal_interface-curses__ads.htm#ref_56_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_59_4">Panel_Exception</A>;
<b>end</b> <b>if</b>;
<b>return</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_108_7">Win</A>;
- <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_102_13">Get_Window</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_101_13">Get_Window</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_116_14" HREF="terminal_interface-curses-panels__ads.htm#ref_111_14">Replace</A></span> (<span class="symbol"><A NAME="ref_116_23" HREF="terminal_interface-curses-panels__ads.htm#ref_111_23">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
- <span class="symbol"><A NAME="ref_117_23" HREF="terminal_interface-curses-panels__ads.htm#ref_112_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_116_14" HREF="terminal_interface-curses-panels__ads.htm#ref_110_14">Replace</A></span> (<span class="symbol"><A NAME="ref_116_23" HREF="terminal_interface-curses-panels__ads.htm#ref_110_23">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
+ <span class="symbol"><A NAME="ref_117_23" HREF="terminal_interface-curses-panels__ads.htm#ref_111_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_119_16">Replace_Pan</A></span> (<span class="symbol"><A NAME="ref_119_29" HREF="terminal_interface-curses-panels__adb.htm#ref_119_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
- <span class="symbol"><A NAME="ref_120_29" HREF="terminal_interface-curses-panels__adb.htm#ref_119_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_119_16">Replace_Pan</A></span> (<span class="symbol"><A NAME="ref_119_29" HREF="terminal_interface-curses-panels__adb.htm#ref_119_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
+ <span class="symbol"><A NAME="ref_120_29" HREF="terminal_interface-curses-panels__adb.htm#ref_119_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Replace_Pan, "replace_panel");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_119_16">Replace_Pan</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_111_23">Pan</A>, <A HREF="terminal_interface-curses-panels__ads.htm#ref_112_23">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_119_16">Replace_Pan</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_110_23">Pan</A>, <A HREF="terminal_interface-curses-panels__ads.htm#ref_111_23">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_59_4">Panel_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_111_14">Replace</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_110_14">Replace</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_128_14" HREF="terminal_interface-curses-panels__ads.htm#ref_117_14">Move</A></span> (<span class="symbol"><A NAME="ref_128_20" HREF="terminal_interface-curses-panels__ads.htm#ref_117_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
- <span class="symbol"><A NAME="ref_129_20" HREF="terminal_interface-curses-panels__ads.htm#ref_118_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_130_20" HREF="terminal_interface-curses-panels__ads.htm#ref_119_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_128_14" HREF="terminal_interface-curses-panels__ads.htm#ref_116_14">Move</A></span> (<span class="symbol"><A NAME="ref_128_20" HREF="terminal_interface-curses-panels__ads.htm#ref_116_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
+ <span class="symbol"><A NAME="ref_129_20" HREF="terminal_interface-curses-panels__ads.htm#ref_117_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_130_20" HREF="terminal_interface-curses-panels__ads.htm#ref_118_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_132_16">Move</A></span> (<span class="symbol"><A NAME="ref_132_22" HREF="terminal_interface-curses-panels__adb.htm#ref_132_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
- <span class="symbol"><A NAME="ref_133_22" HREF="terminal_interface-curses-panels__adb.htm#ref_132_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_134_22" HREF="terminal_interface-curses-panels__adb.htm#ref_132_16">Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_132_16">Move</A></span> (<span class="symbol"><A NAME="ref_132_22" HREF="terminal_interface-curses-panels__adb.htm#ref_132_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
+ <span class="symbol"><A NAME="ref_133_22" HREF="terminal_interface-curses-panels__adb.htm#ref_132_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_134_22" HREF="terminal_interface-curses-panels__adb.htm#ref_132_16">Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Move, "move_panel");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_132_16">Move</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_117_20">Pan</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_118_20">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_119_20">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_132_16">Move</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_116_20">Pan</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_117_20">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_118_20">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_59_4">Panel_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_117_14">Move</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_116_14">Move</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_142_13" HREF="terminal_interface-curses-panels__ads.htm#ref_124_13">Is_Hidden</A></span> (<span class="symbol"><A NAME="ref_142_24" HREF="terminal_interface-curses-panels__ads.htm#ref_124_24">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_142_13" HREF="terminal_interface-curses-panels__ads.htm#ref_123_13">Is_Hidden</A></span> (<span class="symbol"><A NAME="ref_142_24" HREF="terminal_interface-curses-panels__ads.htm#ref_123_24">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_144_16">Panel_Hidden</A></span> (<span class="symbol"><A NAME="ref_144_30" HREF="terminal_interface-curses-panels__adb.htm#ref_144_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_144_16">Panel_Hidden</A></span> (<span class="symbol"><A NAME="ref_144_30" HREF="terminal_interface-curses-panels__adb.htm#ref_144_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Panel_Hidden, "panel_hidden");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_144_16">Panel_Hidden</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_124_24">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">Curses_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_144_16">Panel_Hidden</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_123_24">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_66_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> <A HREF="terminal_interface-curses-panels__ads.htm#ref_124_13">Is_Hidden</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_123_13">Is_Hidden</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_154_14" HREF="terminal_interface-curses-panels__ads.htm#ref_139_14">Delete</A></span> (<span class="symbol"><A NAME="ref_154_22" HREF="terminal_interface-curses-panels__ads.htm#ref_139_22">Pan</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_154_14" HREF="terminal_interface-curses-panels__ads.htm#ref_138_14">Delete</A></span> (<span class="symbol"><A NAME="ref_154_22" HREF="terminal_interface-curses-panels__ads.htm#ref_138_22">Pan</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_156_16">Del_Panel</A></span> (<span class="symbol"><A NAME="ref_156_27" HREF="terminal_interface-curses-panels__adb.htm#ref_156_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_156_16">Del_Panel</A></span> (<span class="symbol"><A NAME="ref_156_27" HREF="terminal_interface-curses-panels__adb.htm#ref_156_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Del_Panel, "del_panel");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_156_16">Del_Panel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_139_22">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_156_16">Del_Panel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_138_22">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_59_4">Panel_Exception</A>;
<b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses-panels__ads.htm#ref_139_22">Pan</A> := <A HREF="terminal_interface-curses-panels__ads.htm#ref_54_4">Null_Panel</A>;
- <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_139_14">Delete</A>;
+ <A HREF="terminal_interface-curses-panels__ads.htm#ref_138_22">Pan</A> := <A HREF="terminal_interface-curses-panels__ads.htm#ref_53_4">Null_Panel</A>;
+ <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_138_14">Delete</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-panels__ads.htm b/doc/html/ada/terminal_interface-curses-panels__ads.htm
index 75864f7077ae..66d079151921 100644
--- a/doc/html/ada/terminal_interface-curses-panels__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-panels__ads.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- S P E C --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2009,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,114 +52,113 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.20 @</EM></span>
-<span class="comment"><EM>-- @Date: 2009/12/26 17:38:58 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.22 @</EM></span>
+<span class="comment"><EM>-- @Date: 2014/05/24 21:31:57 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>with</b> System;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_44_35" HREF="terminal_interface-curses-panels__adb.htm#ref_45_40">Panels</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>);
- <b>pragma</b> Linker_Options ("-lpanel");
- <b>pragma</b> Linker_Options ("-lncurses");
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_44_35" HREF="terminal_interface-curses-panels__adb.htm#ref_45_40">Panels</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>);
+ <b>pragma</b> Linker_Options ("-lpanel" &amp; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_9_4">DFT_ARG_SUFFIX</A>);
- <b>type</b> <span class="symbol"><A NAME="ref_49_9">Panel</A></span> <b>is</b> <b>private</b>;
+ <b>type</b> <span class="symbol"><A NAME="ref_48_9">Panel</A></span> <b>is</b> <b>private</b>;
<span class="comment"><EM>---------------------------</EM></span>
<span class="comment"><EM>-- Interface constants --</EM></span>
<span class="comment"><EM>---------------------------</EM></span>
- <span class="symbol"><A NAME="ref_54_4">Null_Panel</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
+ <span class="symbol"><A NAME="ref_53_4">Null_Panel</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
<span class="comment"><EM>-------------------</EM></span>
<span class="comment"><EM>-- Exceptions --</EM></span>
<span class="comment"><EM>-------------------</EM></span>
- <span class="symbol"><A NAME="ref_60_4">Panel_Exception</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_59_4">Panel_Exception</A></span> : <b>exception</b>;
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/panel.3x.html">panel.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_1"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_67_13" HREF="terminal_interface-curses-panels__adb.htm#ref_49_13">Create</A></span> (<span class="symbol"><A NAME="ref_67_21" HREF="terminal_interface-curses-panels__adb.htm#ref_49_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_66_13" HREF="terminal_interface-curses-panels__adb.htm#ref_49_13">Create</A></span> (<span class="symbol"><A NAME="ref_66_21" HREF="terminal_interface-curses-panels__adb.htm#ref_49_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">new_panel()</A></EM></span>
<b>pragma</b> Inline (Create);
- <span class="comment"><EM>-- #1A NAME="AFU_2"#2|</EM></span>
- <b>function</b> New_Panel (<span class="symbol"><A NAME="ref_72_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A> <b>renames</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_67_13">Create</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span>
+ <b>function</b> New_Panel (<span class="symbol"><A NAME="ref_71_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A> <b>renames</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_66_13">Create</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">new_panel()</A></EM></span>
<span class="comment"><EM>-- pragma Inline (New_Panel);</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_3"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_77_14" HREF="terminal_interface-curses-panels__adb.htm#ref_63_14">Bottom</A></span> (<span class="symbol"><A NAME="ref_77_22" HREF="terminal_interface-curses-panels__adb.htm#ref_63_22">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_76_14" HREF="terminal_interface-curses-panels__adb.htm#ref_63_14">Bottom</A></span> (<span class="symbol"><A NAME="ref_76_22" HREF="terminal_interface-curses-panels__adb.htm#ref_63_22">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">bottom_panel()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_77_14">Bottom</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_76_14">Bottom</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_4"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_82_14" HREF="terminal_interface-curses-panels__adb.htm#ref_73_14">Top</A></span> (<span class="symbol"><A NAME="ref_82_19" HREF="terminal_interface-curses-panels__adb.htm#ref_73_19">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_4">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_81_14" HREF="terminal_interface-curses-panels__adb.htm#ref_73_14">Top</A></span> (<span class="symbol"><A NAME="ref_81_19" HREF="terminal_interface-curses-panels__adb.htm#ref_73_19">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">top_panel()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_82_14">Top</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_81_14">Top</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_5"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_87_14" HREF="terminal_interface-curses-panels__adb.htm#ref_83_14">Show</A></span> (<span class="symbol"><A NAME="ref_87_20" HREF="terminal_interface-curses-panels__adb.htm#ref_83_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_5">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_86_14" HREF="terminal_interface-curses-panels__adb.htm#ref_83_14">Show</A></span> (<span class="symbol"><A NAME="ref_86_20" HREF="terminal_interface-curses-panels__adb.htm#ref_83_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">show_panel()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_87_14">Show</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_86_14">Show</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_6"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_92_14">Update_Panels</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_6">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_91_14">Update_Panels</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">update_panels()</A></EM></span>
<b>pragma</b> Import (C, Update_Panels, "update_panels");
- <span class="comment"><EM>-- #1A NAME="AFU_7"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_97_14" HREF="terminal_interface-curses-panels__adb.htm#ref_93_14">Hide</A></span> (<span class="symbol"><A NAME="ref_97_20" HREF="terminal_interface-curses-panels__adb.htm#ref_93_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_7">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_96_14" HREF="terminal_interface-curses-panels__adb.htm#ref_93_14">Hide</A></span> (<span class="symbol"><A NAME="ref_96_20" HREF="terminal_interface-curses-panels__adb.htm#ref_93_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">hide_panel()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_97_14">Hide</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_96_14">Hide</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_8"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_102_13" HREF="terminal_interface-curses-panels__adb.htm#ref_103_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_102_25" HREF="terminal_interface-curses-panels__adb.htm#ref_103_25">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_8">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_101_13" HREF="terminal_interface-curses-panels__adb.htm#ref_103_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_101_25" HREF="terminal_interface-curses-panels__adb.htm#ref_103_25">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_window()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_102_13">Get_Window</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_101_13">Get_Window</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_9"#2|</EM></span>
- <b>function</b> Panel_Window (<span class="symbol"><A NAME="ref_107_27">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> <b>renames</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_102_13">Get_Window</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_9">|</A></EM></span>
+ <b>function</b> Panel_Window (<span class="symbol"><A NAME="ref_106_27">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> <b>renames</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_101_13">Get_Window</A>;
<span class="comment"><EM>-- pragma Inline (Panel_Window);</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_10"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_111_14" HREF="terminal_interface-curses-panels__adb.htm#ref_116_14">Replace</A></span> (<span class="symbol"><A NAME="ref_111_23" HREF="terminal_interface-curses-panels__adb.htm#ref_116_23">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
- <span class="symbol"><A NAME="ref_112_23" HREF="terminal_interface-curses-panels__adb.htm#ref_117_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_10">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_110_14" HREF="terminal_interface-curses-panels__adb.htm#ref_116_14">Replace</A></span> (<span class="symbol"><A NAME="ref_110_23" HREF="terminal_interface-curses-panels__adb.htm#ref_116_23">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
+ <span class="symbol"><A NAME="ref_111_23" HREF="terminal_interface-curses-panels__adb.htm#ref_117_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">replace_panel()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_111_14">Replace</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_110_14">Replace</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_11"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_117_14" HREF="terminal_interface-curses-panels__adb.htm#ref_128_14">Move</A></span> (<span class="symbol"><A NAME="ref_117_20" HREF="terminal_interface-curses-panels__adb.htm#ref_128_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
- <span class="symbol"><A NAME="ref_118_20" HREF="terminal_interface-curses-panels__adb.htm#ref_129_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_119_20" HREF="terminal_interface-curses-panels__adb.htm#ref_130_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_11">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_116_14" HREF="terminal_interface-curses-panels__adb.htm#ref_128_14">Move</A></span> (<span class="symbol"><A NAME="ref_116_20" HREF="terminal_interface-curses-panels__adb.htm#ref_128_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
+ <span class="symbol"><A NAME="ref_117_20" HREF="terminal_interface-curses-panels__adb.htm#ref_129_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_118_20" HREF="terminal_interface-curses-panels__adb.htm#ref_130_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">move_panel()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_117_14">Move</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_116_14">Move</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_12"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_124_13" HREF="terminal_interface-curses-panels__adb.htm#ref_142_13">Is_Hidden</A></span> (<span class="symbol"><A NAME="ref_124_24" HREF="terminal_interface-curses-panels__adb.htm#ref_142_24">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_12">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_123_13" HREF="terminal_interface-curses-panels__adb.htm#ref_142_13">Is_Hidden</A></span> (<span class="symbol"><A NAME="ref_123_24" HREF="terminal_interface-curses-panels__adb.htm#ref_142_24">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_hidden()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_124_13">Is_Hidden</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_123_13">Is_Hidden</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_13"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_129_13">Above</A></span> (<span class="symbol"><A NAME="ref_129_20" HREF="terminal_interface-curses-panels__ads.htm#ref_129_13">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_13">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_128_13">Above</A></span> (<span class="symbol"><A NAME="ref_128_20" HREF="terminal_interface-curses-panels__ads.htm#ref_128_13">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_above()</A></EM></span>
<b>pragma</b> Import (C, Above, "panel_above");
- <span class="comment"><EM>-- #1A NAME="AFU_14"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_134_13">Below</A></span> (<span class="symbol"><A NAME="ref_134_20" HREF="terminal_interface-curses-panels__ads.htm#ref_134_13">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_14">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_133_13">Below</A></span> (<span class="symbol"><A NAME="ref_133_20" HREF="terminal_interface-curses-panels__ads.htm#ref_133_13">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_below()</A></EM></span>
<b>pragma</b> Import (C, Below, "panel_below");
- <span class="comment"><EM>-- #1A NAME="AFU_15"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_139_14" HREF="terminal_interface-curses-panels__adb.htm#ref_154_14">Delete</A></span> (<span class="symbol"><A NAME="ref_139_22" HREF="terminal_interface-curses-panels__adb.htm#ref_154_22">Pan</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_15">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_138_14" HREF="terminal_interface-curses-panels__adb.htm#ref_154_14">Delete</A></span> (<span class="symbol"><A NAME="ref_138_22" HREF="terminal_interface-curses-panels__adb.htm#ref_154_22">Pan</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">del_panel()</A></EM></span>
<b>pragma</b> Inline (Delete);
<b>private</b>
- <b>type</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
- <A HREF="terminal_interface-curses-panels__ads.htm#ref_54_4">Null_Panel</A> : <b>constant</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A> := 0;
+ <b>type</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+ <A HREF="terminal_interface-curses-panels__ads.htm#ref_53_4">Null_Panel</A> : <b>constant</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_48_9">Panel</A> := 0;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_44_35">Panels</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-putwin__adb.htm b/doc/html/ada/terminal_interface-curses-putwin__adb.htm
index 45598f510633..6d5df373655a 100644
--- a/doc/html/ada/terminal_interface-curses-putwin__adb.htm
+++ b/doc/html/ada/terminal_interface-curses-putwin__adb.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 2000 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 2000,2003 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,44 +52,44 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.3 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.4 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<b>with</b> Ada.Streams.Stream_IO.C_Streams;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C_Streams;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C_Streams;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_45_40" HREF="terminal_interface-curses-putwin__ads.htm#ref_43_35">PutWin</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_45_40" HREF="terminal_interface-curses-putwin__ads.htm#ref_43_35">PutWin</A></span> <b>is</b>
- <b>package</b> <span class="symbol"><A NAME="ref_47_12">ICS</A></span> <b>renames</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C_Streams;
+ <b>package</b> <span class="symbol"><A NAME="ref_47_12">ICS</A></span> <b>renames</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C_Streams;
<b>package</b> <span class="symbol"><A NAME="ref_48_12">ACS</A></span> <b>renames</b> Ada.Streams.Stream_IO.C_Streams;
- <b>use</b> <b>type</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>use</b> <b>type</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_51_14" HREF="terminal_interface-curses-putwin__ads.htm#ref_45_14">Put_Window</A></span> (<span class="symbol"><A NAME="ref_51_26" HREF="terminal_interface-curses-putwin__ads.htm#ref_45_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_51_14" HREF="terminal_interface-curses-putwin__ads.htm#ref_45_14">Put_Window</A></span> (<span class="symbol"><A NAME="ref_51_26" HREF="terminal_interface-curses-putwin__ads.htm#ref_45_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_52_26" HREF="terminal_interface-curses-putwin__ads.htm#ref_46_26">File</A></span> : Ada.Streams.Stream_IO.File_Type) <b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_53_16">putwin</A></span> (<span class="symbol"><A NAME="ref_53_24" HREF="terminal_interface-curses-putwin__adb.htm#ref_53_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_53_38" HREF="terminal_interface-curses-putwin__adb.htm#ref_53_16">f</A></span> : <A HREF="terminal_interface-curses-putwin__adb.htm#ref_47_12">ICS</A>.FILEs) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_53_16">putwin</A></span> (<span class="symbol"><A NAME="ref_53_24" HREF="terminal_interface-curses-putwin__adb.htm#ref_53_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_53_38" HREF="terminal_interface-curses-putwin__adb.htm#ref_53_16">f</A></span> : <A HREF="terminal_interface-curses-putwin__adb.htm#ref_47_12">ICS</A>.FILEs) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, putwin, "putwin");
- <span class="symbol"><A NAME="ref_56_7">R</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses-putwin__adb.htm#ref_53_16">putwin</A> (<A HREF="terminal_interface-curses-putwin__ads.htm#ref_45_26">Win</A>, <A HREF="terminal_interface-curses-putwin__adb.htm#ref_48_12">ACS</A>.C_Stream (<A HREF="terminal_interface-curses-putwin__ads.htm#ref_46_26">File</A>));
+ <span class="symbol"><A NAME="ref_56_7">R</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses-putwin__adb.htm#ref_53_16">putwin</A> (<A HREF="terminal_interface-curses-putwin__ads.htm#ref_45_26">Win</A>, <A HREF="terminal_interface-curses-putwin__adb.htm#ref_48_12">ACS</A>.C_Stream (<A HREF="terminal_interface-curses-putwin__ads.htm#ref_46_26">File</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-putwin__adb.htm#ref_56_7">R</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_71_4">Curses_Ok</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-putwin__adb.htm#ref_56_7">R</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_62_4">Curses_Ok</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
<b>end</b> <A HREF="terminal_interface-curses-putwin__ads.htm#ref_45_14">Put_Window</A>;
<b>function</b> <span class="symbol"><A NAME="ref_63_13" HREF="terminal_interface-curses-putwin__ads.htm#ref_48_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_63_25" HREF="terminal_interface-curses-putwin__ads.htm#ref_48_25">File</A></span> : Ada.Streams.Stream_IO.File_Type)
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> <b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_65_16">getwin</A></span> (<span class="symbol"><A NAME="ref_65_24" HREF="terminal_interface-curses-putwin__adb.htm#ref_65_16">f</A></span> : <A HREF="terminal_interface-curses-putwin__adb.htm#ref_47_12">ICS</A>.FILEs) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> <b>is</b>
+ <b>function</b> <span class="symbol"><A NAME="ref_65_16">getwin</A></span> (<span class="symbol"><A NAME="ref_65_24" HREF="terminal_interface-curses-putwin__adb.htm#ref_65_16">f</A></span> : <A HREF="terminal_interface-curses-putwin__adb.htm#ref_47_12">ICS</A>.FILEs) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>pragma</b> Import (C, getwin, "getwin");
- <span class="symbol"><A NAME="ref_68_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses-putwin__adb.htm#ref_65_16">getwin</A> (<A HREF="terminal_interface-curses-putwin__adb.htm#ref_48_12">ACS</A>.C_Stream (<A HREF="terminal_interface-curses-putwin__ads.htm#ref_48_25">File</A>));
+ <span class="symbol"><A NAME="ref_68_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses-putwin__adb.htm#ref_65_16">getwin</A> (<A HREF="terminal_interface-curses-putwin__adb.htm#ref_48_12">ACS</A>.C_Stream (<A HREF="terminal_interface-curses-putwin__ads.htm#ref_48_25">File</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-putwin__adb.htm#ref_68_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_58_4">Null_Window</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-putwin__adb.htm#ref_68_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_56_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>else</b>
<b>return</b> <A HREF="terminal_interface-curses-putwin__adb.htm#ref_68_7">W</A>;
<b>end</b> <b>if</b>;
<b>end</b> <A HREF="terminal_interface-curses-putwin__ads.htm#ref_48_13">Get_Window</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-putwin__ads.htm#ref_43_35">PutWin</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-putwin__ads.htm#ref_43_35">PutWin</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-putwin__ads.htm b/doc/html/ada/terminal_interface-curses-putwin__ads.htm
index 77fde726f4b0..b7222cc9c0e1 100644
--- a/doc/html/ada/terminal_interface-curses-putwin__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-putwin__ads.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- S P E C --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 2000 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 2000,2003 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,17 +52,17 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.3 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.4 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<b>with</b> Ada.Streams.Stream_IO;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_43_35" HREF="terminal_interface-curses-putwin__adb.htm#ref_45_40">PutWin</A></span> <b>is</b>
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_43_35" HREF="terminal_interface-curses-putwin__adb.htm#ref_45_40">PutWin</A></span> <b>is</b>
- <b>procedure</b> <span class="symbol"><A NAME="ref_45_14" HREF="terminal_interface-curses-putwin__adb.htm#ref_51_14">Put_Window</A></span> (<span class="symbol"><A NAME="ref_45_26" HREF="terminal_interface-curses-putwin__adb.htm#ref_51_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_45_14" HREF="terminal_interface-curses-putwin__adb.htm#ref_51_14">Put_Window</A></span> (<span class="symbol"><A NAME="ref_45_26" HREF="terminal_interface-curses-putwin__adb.htm#ref_51_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_46_26" HREF="terminal_interface-curses-putwin__adb.htm#ref_52_26">File</A></span> : Ada.Streams.Stream_IO.File_Type);
- <b>function</b> <span class="symbol"><A NAME="ref_48_13" HREF="terminal_interface-curses-putwin__adb.htm#ref_63_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_48_25" HREF="terminal_interface-curses-putwin__adb.htm#ref_63_25">File</A></span> : Ada.Streams.Stream_IO.File_Type) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_48_13" HREF="terminal_interface-curses-putwin__adb.htm#ref_63_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_48_25" HREF="terminal_interface-curses-putwin__adb.htm#ref_63_25">File</A></span> : Ada.Streams.Stream_IO.File_Type) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-putwin__ads.htm#ref_43_35">PutWin</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-putwin__ads.htm#ref_43_35">PutWin</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-termcap__adb.htm b/doc/html/ada/terminal_interface-curses-termcap__adb.htm
index 3a2ed5e83a80..2216eccc49fb 100644
--- a/doc/html/ada/terminal_interface-curses-termcap__adb.htm
+++ b/doc/html/ada/terminal_interface-curses-termcap__adb.htm
@@ -57,26 +57,26 @@
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_47_40" HREF="terminal_interface-curses-termcap__ads.htm#ref_42_35">Termcap</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_47_40" HREF="terminal_interface-curses-termcap__ads.htm#ref_42_35">Termcap</A></span> <b>is</b>
<b>function</b> <span class="symbol"><A NAME="ref_49_13" HREF="terminal_interface-curses-termcap__ads.htm#ref_59_13">Get_Entry</A></span> (<span class="symbol"><A NAME="ref_49_24" HREF="terminal_interface-curses-termcap__ads.htm#ref_59_24">Name</A></span> : String) <b>return</b> Boolean
<b>is</b>
<b>function</b> <span class="symbol"><A NAME="ref_51_16">tgetent</A></span> (<span class="symbol"><A NAME="ref_51_25" HREF="terminal_interface-curses-termcap__adb.htm#ref_51_16">name</A></span> : char_array; <span class="symbol"><A NAME="ref_51_44" HREF="terminal_interface-curses-termcap__adb.htm#ref_51_16">val</A></span> : char_array)
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, tgetent, "tgetent");
<span class="symbol"><A NAME="ref_54_7">NameTxt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-termcap__ads.htm#ref_59_24">Name</A>'Length);
<span class="symbol"><A NAME="ref_55_7">Length</A></span> : size_t;
<span class="symbol"><A NAME="ref_56_7">ignored</A></span> : <b>constant</b> char_array (0 .. 0) := (0 =&gt; nul);
- <span class="symbol"><A NAME="ref_57_7">result</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_57_7">result</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
To_C (<A HREF="terminal_interface-curses-termcap__ads.htm#ref_59_24">Name</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_54_7">NameTxt</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_55_7">Length</A>);
<A HREF="terminal_interface-curses-termcap__adb.htm#ref_57_7">result</A> := <A HREF="terminal_interface-curses-termcap__adb.htm#ref_51_16">tgetent</A> (char_array (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_56_7">ignored</A>), <A HREF="terminal_interface-curses-termcap__adb.htm#ref_54_7">NameTxt</A>);
<b>if</b> <A HREF="terminal_interface-curses-termcap__adb.htm#ref_57_7">result</A> = -1 <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>else</b>
<b>return</b> Boolean'Val (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_57_7">result</A>);
<b>end</b> <b>if</b>;
@@ -85,7 +85,7 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>function</b> <span class="symbol"><A NAME="ref_69_13" HREF="terminal_interface-curses-termcap__ads.htm#ref_63_13">Get_Flag</A></span> (<span class="symbol"><A NAME="ref_69_23" HREF="terminal_interface-curses-termcap__ads.htm#ref_63_23">Name</A></span> : String) <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_71_16">tgetflag</A></span> (<span class="symbol"><A NAME="ref_71_26" HREF="terminal_interface-curses-termcap__adb.htm#ref_71_16">id</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_71_16">tgetflag</A></span> (<span class="symbol"><A NAME="ref_71_26" HREF="terminal_interface-curses-termcap__adb.htm#ref_71_16">id</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, tgetflag, "tgetflag");
<span class="symbol"><A NAME="ref_73_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-termcap__ads.htm#ref_63_23">Name</A>'Length);
<span class="symbol"><A NAME="ref_74_7">Length</A></span> : size_t;
@@ -103,7 +103,7 @@
<span class="symbol"><A NAME="ref_86_26" HREF="terminal_interface-curses-termcap__ads.htm#ref_68_26">Value</A></span> : <b>out</b> Integer;
<span class="symbol"><A NAME="ref_87_26" HREF="terminal_interface-curses-termcap__ads.htm#ref_69_26">Result</A></span> : <b>out</b> Boolean)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_89_16">tgetnum</A></span> (<span class="symbol"><A NAME="ref_89_25" HREF="terminal_interface-curses-termcap__adb.htm#ref_89_16">id</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_89_16">tgetnum</A></span> (<span class="symbol"><A NAME="ref_89_25" HREF="terminal_interface-curses-termcap__adb.htm#ref_89_16">id</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, tgetnum, "tgetnum");
<span class="symbol"><A NAME="ref_91_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-termcap__ads.htm#ref_67_26">Name</A>'Length);
<span class="symbol"><A NAME="ref_92_7">Length</A></span> : size_t;
@@ -136,7 +136,7 @@
<b>if</b> <A HREF="terminal_interface-curses-termcap__adb.htm#ref_113_7">Txt2</A> = Null_Ptr <b>then</b>
<A HREF="terminal_interface-curses-termcap__ads.htm#ref_75_26">Result</A> := False;
<b>else</b>
- <A HREF="terminal_interface-curses-termcap__ads.htm#ref_74_26">Value</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A> (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_113_7">Txt2</A>);
+ <A HREF="terminal_interface-curses-termcap__ads.htm#ref_74_26">Value</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A> (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_113_7">Txt2</A>);
<A HREF="terminal_interface-curses-termcap__ads.htm#ref_75_26">Result</A> := True;
<b>end</b> <b>if</b>;
<b>end</b> <A HREF="terminal_interface-curses-termcap__ads.htm#ref_73_14">Get_String</A>;
@@ -163,19 +163,19 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>function</b> <span class="symbol"><A NAME="ref_148_13" HREF="terminal_interface-curses-termcap__ads.htm#ref_53_13">TGoto</A></span> (<span class="symbol"><A NAME="ref_148_20" HREF="terminal_interface-curses-termcap__ads.htm#ref_53_20">Cap</A></span> : String;
- <span class="symbol"><A NAME="ref_149_20" HREF="terminal_interface-curses-termcap__ads.htm#ref_54_20">Col</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_150_20" HREF="terminal_interface-curses-termcap__ads.htm#ref_55_20">Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>) <b>return</b> Termcap_String <b>is</b>
+ <span class="symbol"><A NAME="ref_149_20" HREF="terminal_interface-curses-termcap__ads.htm#ref_54_20">Col</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_150_20" HREF="terminal_interface-curses-termcap__ads.htm#ref_55_20">Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>) <b>return</b> Termcap_String <b>is</b>
<b>function</b> <span class="symbol"><A NAME="ref_151_16">tgoto</A></span> (<span class="symbol"><A NAME="ref_151_23" HREF="terminal_interface-curses-termcap__adb.htm#ref_151_16">cap</A></span> : char_array;
- <span class="symbol"><A NAME="ref_152_23" HREF="terminal_interface-curses-termcap__adb.htm#ref_151_16">col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_153_23" HREF="terminal_interface-curses-termcap__adb.htm#ref_151_16">row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> chars_ptr;
+ <span class="symbol"><A NAME="ref_152_23" HREF="terminal_interface-curses-termcap__adb.htm#ref_151_16">col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_153_23" HREF="terminal_interface-curses-termcap__adb.htm#ref_151_16">row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> chars_ptr;
<b>pragma</b> Import (C, tgoto);
<span class="symbol"><A NAME="ref_155_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-termcap__ads.htm#ref_53_20">Cap</A>'Length);
<span class="symbol"><A NAME="ref_156_7">Length</A></span> : size_t;
<b>begin</b>
To_C (<A HREF="terminal_interface-curses-termcap__ads.htm#ref_53_20">Cap</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_155_7">Txt</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_156_7">Length</A>);
- <b>return</b> Termcap_String (<A HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A>
- (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_151_16">tgoto</A> (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_155_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-termcap__ads.htm#ref_54_20">Col</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-termcap__ads.htm#ref_55_20">Row</A>))));
+ <b>return</b> Termcap_String (<A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A>
+ (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_151_16">tgoto</A> (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_155_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-termcap__ads.htm#ref_54_20">Col</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-termcap__ads.htm#ref_55_20">Row</A>))));
<b>end</b> <A HREF="terminal_interface-curses-termcap__ads.htm#ref_53_13">TGoto</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-termcap__ads.htm#ref_42_35">Termcap</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-termcap__ads.htm#ref_42_35">Termcap</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-termcap__ads.htm b/doc/html/ada/terminal_interface-curses-termcap__ads.htm
index e57e35a0484b..878b66747973 100644
--- a/doc/html/ada/terminal_interface-curses-termcap__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-termcap__ads.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- S P E C --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 2000 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 2000,2003 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,12 +52,12 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.3 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.4 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_42_35" HREF="terminal_interface-curses-termcap__adb.htm#ref_47_40">Termcap</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-termcap__ads.htm#ref_42_35">Termcap</A>);
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_42_35" HREF="terminal_interface-curses-termcap__adb.htm#ref_47_40">Termcap</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-termcap__ads.htm#ref_42_35">Termcap</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page curs_termcap.3x</EM></span>
@@ -68,8 +68,8 @@
<span class="comment"><EM>-- |</EM></span>
<b>function</b> <span class="symbol"><A NAME="ref_53_13" HREF="terminal_interface-curses-termcap__adb.htm#ref_148_13">TGoto</A></span> (<span class="symbol"><A NAME="ref_53_20" HREF="terminal_interface-curses-termcap__adb.htm#ref_148_20">Cap</A></span> : String;
- <span class="symbol"><A NAME="ref_54_20" HREF="terminal_interface-curses-termcap__adb.htm#ref_149_20">Col</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_55_20" HREF="terminal_interface-curses-termcap__adb.htm#ref_150_20">Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>) <b>return</b> Termcap_String;
+ <span class="symbol"><A NAME="ref_54_20" HREF="terminal_interface-curses-termcap__adb.htm#ref_149_20">Col</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_55_20" HREF="terminal_interface-curses-termcap__adb.htm#ref_150_20">Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>) <b>return</b> Termcap_String;
<span class="comment"><EM>-- AKA: tgoto()</EM></span>
<span class="comment"><EM>-- |</EM></span>
@@ -94,5 +94,5 @@
<span class="comment"><EM>-- Returns True if the string is found.</EM></span>
<span class="comment"><EM>-- AKA: tgetstr()</EM></span>
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-termcap__ads.htm#ref_42_35">Termcap</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-termcap__ads.htm#ref_42_35">Termcap</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-terminfo__adb.htm b/doc/html/ada/terminal_interface-curses-terminfo__adb.htm
index ea809a32660e..665f8e1547ae 100644
--- a/doc/html/ada/terminal_interface-curses-terminfo__adb.htm
+++ b/doc/html/ada/terminal_interface-curses-terminfo__adb.htm
@@ -57,12 +57,12 @@
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings;
<b>with</b> Ada.Unchecked_Conversion;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_48_40" HREF="terminal_interface-curses-terminfo__ads.htm#ref_44_35">Terminfo</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_48_40" HREF="terminal_interface-curses-terminfo__ads.htm#ref_44_35">Terminfo</A></span> <b>is</b>
<b>function</b> <span class="symbol"><A NAME="ref_50_13" HREF="terminal_interface-curses-terminfo__adb.htm#ref_52_13">Is_MinusOne_Pointer</A></span> (<span class="symbol"><A NAME="ref_50_34" HREF="terminal_interface-curses-terminfo__adb.htm#ref_52_34">P</A></span> : chars_ptr) <b>return</b> Boolean;
@@ -83,13 +83,13 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>function</b> <span class="symbol"><A NAME="ref_67_13" HREF="terminal_interface-curses-terminfo__ads.htm#ref_64_13">Get_Flag</A></span> (<span class="symbol"><A NAME="ref_67_23" HREF="terminal_interface-curses-terminfo__ads.htm#ref_64_23">Name</A></span> : String) <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_69_16">tigetflag</A></span> (<span class="symbol"><A NAME="ref_69_27" HREF="terminal_interface-curses-terminfo__adb.htm#ref_69_16">id</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_69_16">tigetflag</A></span> (<span class="symbol"><A NAME="ref_69_27" HREF="terminal_interface-curses-terminfo__adb.htm#ref_69_16">id</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Import (C, tigetflag);
<span class="symbol"><A NAME="ref_71_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_64_23">Name</A>'Length);
<span class="symbol"><A NAME="ref_72_7">Length</A></span> : size_t;
<b>begin</b>
To_C (<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_64_23">Name</A>, <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_71_7">Txt</A>, <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_72_7">Length</A>);
- <b>if</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_69_16">tigetflag</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_71_7">Txt</A>) = <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_74_4">Curses_True</A>) <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_69_16">tigetflag</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_71_7">Txt</A>) = <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_65_4">Curses_True</A>) <b>then</b>
<b>return</b> True;
<b>else</b>
<b>return</b> False;
@@ -112,9 +112,9 @@
<b>if</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_91_7">Txt2</A> = Null_Ptr <b>then</b>
<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_59_26">Result</A> := False;
<b>elsif</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_50_13">Is_MinusOne_Pointer</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_91_7">Txt2</A>) <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>else</b>
- <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_58_26">Value</A> := Terminfo_String (<A HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_91_7">Txt2</A>));
+ <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_58_26">Value</A> := Terminfo_String (<A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_91_7">Txt2</A>));
<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_59_26">Result</A> := True;
<b>end</b> <b>if</b>;
<b>end</b> <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_57_14">Get_String</A>;
@@ -133,7 +133,7 @@
<b>if</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_112_7">Txt2</A> = Null_Ptr <b>then</b>
<b>return</b> False;
<b>elsif</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_50_13">Is_MinusOne_Pointer</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_112_7">Txt2</A>) <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>else</b>
<b>return</b> True;
<b>end</b> <b>if</b>;
@@ -141,7 +141,7 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>function</b> <span class="symbol"><A NAME="ref_126_13" HREF="terminal_interface-curses-terminfo__ads.htm#ref_68_13">Get_Number</A></span> (<span class="symbol"><A NAME="ref_126_25" HREF="terminal_interface-curses-terminfo__ads.htm#ref_68_25">Name</A></span> : String) <b>return</b> Integer <b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_127_16">tigetstr</A></span> (<span class="symbol"><A NAME="ref_127_26" HREF="terminal_interface-curses-terminfo__adb.htm#ref_127_16">s</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_127_16">tigetstr</A></span> (<span class="symbol"><A NAME="ref_127_26" HREF="terminal_interface-curses-terminfo__adb.htm#ref_127_16">s</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, tigetstr);
<span class="symbol"><A NAME="ref_129_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_68_25">Name</A>'Length);
<span class="symbol"><A NAME="ref_130_7">Length</A></span> : size_t;
@@ -151,29 +151,29 @@
<b>end</b> <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_68_13">Get_Number</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_137_14" HREF="terminal_interface-curses-terminfo__ads.htm#ref_76_14">Put_String</A></span> (<span class="symbol"><A NAME="ref_137_26" HREF="terminal_interface-curses-terminfo__ads.htm#ref_76_26">Str</A></span> : Terminfo_String;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_137_14" HREF="terminal_interface-curses-terminfo__ads.htm#ref_76_14">Put_String</A></span> (<span class="symbol"><A NAME="ref_137_26" HREF="terminal_interface-curses-terminfo__ads.htm#ref_76_26">Str</A></span> : <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_44_35">Terminfo_String</A>;
<span class="symbol"><A NAME="ref_138_26" HREF="terminal_interface-curses-terminfo__ads.htm#ref_77_26">affcnt</A></span> : Natural := 1;
<span class="symbol"><A NAME="ref_139_26" HREF="terminal_interface-curses-terminfo__ads.htm#ref_78_26">putc</A></span> : <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_71_9">putctype</A> := <b>null</b>) <b>is</b>
<b>function</b> <span class="symbol"><A NAME="ref_140_16">tputs</A></span> (<span class="symbol"><A NAME="ref_140_23" HREF="terminal_interface-curses-terminfo__adb.htm#ref_140_16">str</A></span> : char_array;
- <span class="symbol"><A NAME="ref_141_23" HREF="terminal_interface-curses-terminfo__adb.htm#ref_140_16">affcnt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_142_23" HREF="terminal_interface-curses-terminfo__adb.htm#ref_140_16">putc</A></span> : <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_71_9">putctype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_143_16">putp</A></span> (<span class="symbol"><A NAME="ref_143_22" HREF="terminal_interface-curses-terminfo__adb.htm#ref_143_16">str</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_141_23" HREF="terminal_interface-curses-terminfo__adb.htm#ref_140_16">affcnt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_142_23" HREF="terminal_interface-curses-terminfo__adb.htm#ref_140_16">putc</A></span> : <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_71_9">putctype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_143_16">putp</A></span> (<span class="symbol"><A NAME="ref_143_22" HREF="terminal_interface-curses-terminfo__adb.htm#ref_143_16">str</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, tputs);
<b>pragma</b> Import (C, putp);
<span class="symbol"><A NAME="ref_146_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_76_26">Str</A>'Length);
<span class="symbol"><A NAME="ref_147_7">Length</A></span> : size_t;
- <span class="symbol"><A NAME="ref_148_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_148_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
To_C (String (<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_76_26">Str</A>), <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_146_7">Txt</A>, <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_147_7">Length</A>);
<b>if</b> <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_78_26">putc</A> = <b>null</b> <b>then</b>
<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_148_7">Err</A> := <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_143_16">putp</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_146_7">Txt</A>);
<b>else</b>
- <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_148_7">Err</A> := <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_140_16">tputs</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_146_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_77_26">affcnt</A>), <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_78_26">putc</A>);
+ <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_148_7">Err</A> := <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_140_16">tputs</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_146_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_77_26">affcnt</A>), <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_78_26">putc</A>);
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_148_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_148_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
<b>end</b> <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_76_14">Put_String</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_44_35">Terminfo</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_44_35">Terminfo</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-terminfo__ads.htm b/doc/html/ada/terminal_interface-curses-terminfo__ads.htm
index fa44003c01fe..edf460de9309 100644
--- a/doc/html/ada/terminal_interface-curses-terminfo__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-terminfo__ads.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- S P E C --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 2000 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 2000,2003 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,14 +52,14 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.3 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.4 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_44_35" HREF="terminal_interface-curses-terminfo__adb.htm#ref_48_40">Terminfo</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_44_35">Terminfo</A>);
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_44_35" HREF="terminal_interface-curses-terminfo__adb.htm#ref_48_40">Terminfo</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_44_35">Terminfo</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page curs_terminfo.3x</EM></span>
@@ -85,8 +85,8 @@
<b>function</b> <span class="symbol"><A NAME="ref_68_13" HREF="terminal_interface-curses-terminfo__adb.htm#ref_126_13">Get_Number</A></span> (<span class="symbol"><A NAME="ref_68_25" HREF="terminal_interface-curses-terminfo__adb.htm#ref_126_25">Name</A></span> : String) <b>return</b> Integer;
<span class="comment"><EM>-- AKA: tigetnum()</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_71_9">putctype</A></span> <b>is</b> <b>access</b> <b>function</b> (<span class="symbol"><A NAME="ref_71_38">c</A></span> : <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int)
- <b>return</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.int;
+ <b>type</b> <span class="symbol"><A NAME="ref_71_9">putctype</A></span> <b>is</b> <b>access</b> <b>function</b> (<span class="symbol"><A NAME="ref_71_38" HREF="terminal_interface-curses-terminfo__ads.htm#ref_71_9">c</A></span> : <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int)
+ <b>return</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_71_9">putctype</A>);
<span class="comment"><EM>-- |</EM></span>
@@ -95,5 +95,5 @@
<span class="symbol"><A NAME="ref_78_26" HREF="terminal_interface-curses-terminfo__adb.htm#ref_139_26">putc</A></span> : <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_71_9">putctype</A> := <b>null</b>);
<span class="comment"><EM>-- AKA: tputs()</EM></span>
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_44_35">Terminfo</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_44_35">Terminfo</A>;
</PRE></BODY></HTML>
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
index b4fa34cf9f17..79157cc3e75f 100644
--- a/doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm
+++ b/doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm
@@ -56,10 +56,10 @@
<span class="comment"><EM>-- @Date: 2009/12/26 17:38:58 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_42_48" HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_42_48" HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A></span> <b>is</b>
<b>procedure</b> <span class="symbol"><A NAME="ref_44_14" HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_48_14">Put_Buf</A></span>
- (<span class="symbol"><A NAME="ref_45_7" HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_45_7" HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_46_7" HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_50_7">Buf</A></span> : String;
<span class="symbol"><A NAME="ref_47_7" HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_51_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A>;
<span class="symbol"><A NAME="ref_48_7" HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_52_7">Signal</A></span> : Boolean := True;
@@ -68,10 +68,10 @@
<span class="symbol"><A NAME="ref_51_7">L</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A>;
<span class="symbol"><A NAME="ref_52_7">Len</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A>;
<span class="symbol"><A NAME="ref_53_7">W</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_51_7">Width</A>;
- <span class="symbol"><A NAME="ref_54_7">LC</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_55_7">CC</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_56_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_57_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_54_7">LC</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_55_7">CC</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_56_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_57_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
<b>procedure</b> <span class="symbol"><A NAME="ref_59_17" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_61_17">Output</A></span> (<span class="symbol"><A NAME="ref_59_25" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_61_25">From</A></span>, <span class="symbol"><A NAME="ref_59_31" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_61_31">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A>);
@@ -88,8 +88,8 @@
<b>end</b> <b>if</b>;
<b>pragma</b> Assert (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">Len</A> &lt;= <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_53_7">W</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1229_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_54_7">LC</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_55_7">CC</A>);
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">Len</A>) &gt; <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_55_7">CC</A> <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#ref_1398_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_54_7">LC</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_55_7">CC</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">Len</A>) &gt; <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_55_7">CC</A> <b>then</b>
<b>if</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_52_7">Signal</A> <b>then</b>
<b>raise</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_134_4">Layout_Error</A>;
<b>else</b>
@@ -104,8 +104,8 @@
<A HREF="terminal_interface-curses-text_io__ads.htm#ref_115_14">Put</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_84_22">Filler</A>);
<b>end</b>;
<b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses__ads.htm#ref_1245_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_56_7">Y</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_57_7">X</A>);
- <b>if</b> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_57_7">X</A> + <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">Len</A>)) &gt; <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_55_7">CC</A> <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#ref_1414_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_56_7">Y</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_57_7">X</A>);
+ <b>if</b> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_57_7">X</A> + <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">Len</A>)) &gt; <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_55_7">CC</A> <b>then</b>
<A HREF="terminal_interface-curses-text_io__ads.htm#ref_86_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_7">Win</A>);
<b>end</b> <b>if</b>;
<A HREF="terminal_interface-curses-text_io__ads.htm#ref_115_14">Put</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_50_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_59_25">From</A> .. <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_59_31">To</A>));
@@ -122,7 +122,7 @@
<b>end</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_59_17">Output</A>;
<b>begin</b>
- <b>pragma</b> Assert (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_7">Win</A> /= <A HREF="terminal_interface-curses__ads.htm#ref_58_4">Null_Window</A>);
+ <b>pragma</b> Assert (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_7">Win</A> /= <A HREF="terminal_interface-curses__ads.htm#ref_56_4">Null_Window</A>);
<b>if</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_53_7">Ljust</A> <b>then</b>
<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_51_7">L</A> := 1;
<b>for</b> <span class="symbol"><A NAME="ref_111_14">I</A></span> <b>in</b> 1 .. <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_50_7">Buf</A>'Length <b>loop</b>
@@ -142,5 +142,5 @@
<b>end</b> <b>if</b>;
<b>end</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_48_14">Put_Buf</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
</PRE></BODY></HTML>
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
index a15046acf28f..eff7081c4d3b 100644
--- a/doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm
@@ -56,18 +56,18 @@
<span class="comment"><EM>-- @Date: 2009/12/26 17:38:58 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>private</b> <b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_42_51" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_42_48">Aux</A></span> <b>is</b>
+<b>private</b> <b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_42_51" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_42_48">Aux</A></span> <b>is</b>
<span class="comment"><EM>-- pragma Preelaborate (Aux);</EM></span>
<span class="comment"><EM>-- This routine is called from the Text_IO output routines for numeric</EM></span>
<span class="comment"><EM>-- and enumeration types.</EM></span>
<span class="comment"><EM>--</EM></span>
<b>procedure</b> <span class="symbol"><A NAME="ref_48_14" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_44_14">Put_Buf</A></span>
- (<span class="symbol"><A NAME="ref_49_7" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_45_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="comment"><EM>-- The output window</EM></span>
+ (<span class="symbol"><A NAME="ref_49_7" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_45_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="comment"><EM>-- The output window</EM></span>
<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_46_7">Buf</A></span> : String; <span class="comment"><EM>-- The buffer containing the text</EM></span>
<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_47_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A>; <span class="comment"><EM>-- The width of the output field</EM></span>
<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_48_7">Signal</A></span> : Boolean := True; <span class="comment"><EM>-- If true, we raise Layout_Error</EM></span>
<span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_49_7">Ljust</A></span> : Boolean := False); <span class="comment"><EM>-- The Buf is left justified</EM></span>
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
</PRE></BODY></HTML>
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
index a76a9f760ef7..baf1c9382e42 100644
--- 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
@@ -55,15 +55,15 @@
<span class="comment"><EM>-- @Revision: 1.11 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_44_43">Float_IO</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_44_43">Float_IO</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_43_48" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_46_43">Complex_IO</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_43_48" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_46_43">Complex_IO</A></span> <b>is</b>
<b>package</b> FIO <b>is</b> <b>new</b>
- <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_44_43">Float_IO</A> (Complex_Types.Real'Base);
+ <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_44_43">Float_IO</A> (Complex_Types.Real'Base);
<b>procedure</b> <span class="symbol"><A NAME="ref_48_14" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_54_14">Put</A></span>
- (<span class="symbol"><A NAME="ref_49_7" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_55_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_49_7" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_55_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
Item : Complex;
<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_57_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_50_4">Default_Fore</A>;
<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_58_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_51_4">Default_Aft</A>;
@@ -87,5 +87,5 @@
<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_54_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>, Item, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_63_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_64_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_65_7">Exp</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_61_14">Put</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_46_43">Complex_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_46_43">Complex_IO</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm b/doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm
index d95ecffde873..78bb8c454885 100644
--- a/doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm
@@ -60,7 +60,7 @@
<b>generic</b>
<b>with</b> <b>package</b> <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_46_43">Complex_Types</A> <b>is</b> <b>new</b> Ada.Numerics.Generic_Complex_Types (&lt;&gt;);
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_46_43" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_43_48">Complex_IO</A></span> <b>is</b>
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_46_43" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_43_48">Complex_IO</A></span> <b>is</b>
<b>use</b> Complex_Types;
@@ -69,7 +69,7 @@
<span class="symbol"><A NAME="ref_52_4">Default_Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := 3;
<b>procedure</b> <span class="symbol"><A NAME="ref_54_14" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_48_14">Put</A></span>
- (<span class="symbol"><A NAME="ref_55_7" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_49_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_55_7" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_49_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_54_14">Item</A> : Complex;
<span class="symbol"><A NAME="ref_57_7" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_51_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_50_4">Default_Fore</A>;
<span class="symbol"><A NAME="ref_58_7" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_52_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_51_4">Default_Aft</A>;
@@ -84,5 +84,5 @@
<b>private</b>
<b>pragma</b> Inline (Put);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_46_43">Complex_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_46_43">Complex_IO</A>;
</PRE></BODY></HTML>
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
index 27b8299f1487..a1b55815a7b7 100644
--- 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
@@ -56,15 +56,15 @@
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>with</b> Ada.Text_IO;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_48" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_44_43">Decimal_IO</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_48" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_44_43">Decimal_IO</A></span> <b>is</b>
- <b>package</b> <span class="symbol"><A NAME="ref_46_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
+ <b>package</b> <span class="symbol"><A NAME="ref_46_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
<b>package</b> DIO <b>is</b> <b>new</b> Ada.Text_IO.Decimal_IO (<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_42_9">Num</A>);
<b>procedure</b> <span class="symbol"><A NAME="ref_49_14" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_50_14">Put</A></span>
- (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_52_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_42_9">Num</A>;
<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_53_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_46_4">Default_Fore</A>;
<span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_54_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_47_4">Default_Aft</A>;
@@ -89,5 +89,5 @@
<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_50_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_58_7">Item</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_59_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_60_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_61_7">Exp</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_57_14">Put</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_44_43">Decimal_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_44_43">Decimal_IO</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm b/doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm
index a0a622e86013..75a19a128245 100644
--- a/doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm
@@ -58,14 +58,14 @@
<b>generic</b>
<b>type</b> <span class="symbol"><A NAME="ref_42_9" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_44_43">Num</A></span> <b>is</b> <b>delta</b> &lt;&gt; <b>digits</b> &lt;&gt;;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_43" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_44_48">Decimal_IO</A></span> <b>is</b>
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_43" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_44_48">Decimal_IO</A></span> <b>is</b>
<span class="symbol"><A NAME="ref_46_4">Default_Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_42_9">Num</A>'Fore;
<span class="symbol"><A NAME="ref_47_4">Default_Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_42_9">Num</A>'Aft;
<span class="symbol"><A NAME="ref_48_4">Default_Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := 0;
<b>procedure</b> <span class="symbol"><A NAME="ref_50_14" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_49_14">Put</A></span>
- (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_51_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_42_9">Num</A>;
<span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_52_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_46_4">Default_Fore</A>;
<span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_53_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_47_4">Default_Aft</A>;
@@ -80,5 +80,5 @@
<b>private</b>
<b>pragma</b> Inline (Put);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_44_43">Decimal_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_44_43">Decimal_IO</A>;
</PRE></BODY></HTML>
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
index 81eb2bec2716..872a7b12878b 100644
--- 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
@@ -57,15 +57,15 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<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#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_45_48" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_44_43">Enumeration_IO</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_45_48" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_44_43">Enumeration_IO</A></span> <b>is</b>
- <b>package</b> <span class="symbol"><A NAME="ref_47_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
+ <b>package</b> <span class="symbol"><A NAME="ref_47_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
<b>package</b> EIO <b>is</b> <b>new</b> Ada.Text_IO.Enumeration_IO (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_42_9">Enum</A>);
<b>procedure</b> <span class="symbol"><A NAME="ref_50_14" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_49_14">Put</A></span>
- (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_51_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_42_9">Enum</A>;
<span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_52_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_46_4">Default_Width</A>;
<span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_53_7">Set</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_53_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_47_4">Default_Setting</A>)
@@ -94,5 +94,5 @@
<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_49_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_56_7">Item</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_57_7">Width</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_58_7">Set</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_55_14">Put</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_44_43">Enumeration_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_44_43">Enumeration_IO</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm b/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm
index 767f1a96d7e1..68fbb658d892 100644
--- a/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm
@@ -58,13 +58,13 @@
<b>generic</b>
<b>type</b> <span class="symbol"><A NAME="ref_42_9" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_44_43">Enum</A></span> <b>is</b> (&lt;&gt;);
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_43" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_45_48">Enumeration_IO</A></span> <b>is</b>
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_43" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_45_48">Enumeration_IO</A></span> <b>is</b>
<span class="symbol"><A NAME="ref_46_4">Default_Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := 0;
<span class="symbol"><A NAME="ref_47_4">Default_Setting</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_53_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#ref_53_46">Mixed_Case</A>;
<b>procedure</b> <span class="symbol"><A NAME="ref_49_14" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_50_14">Put</A></span>
- (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_52_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_42_9">Enum</A>;
<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_53_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_46_4">Default_Width</A>;
<span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_54_7">Set</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_53_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_47_4">Default_Setting</A>);
@@ -77,5 +77,5 @@
<b>private</b>
<b>pragma</b> Inline (Put);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_44_43">Enumeration_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_44_43">Enumeration_IO</A>;
</PRE></BODY></HTML>
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
index 5911efb756b4..e6d9b342b9f2 100644
--- 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
@@ -56,15 +56,15 @@
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>with</b> Ada.Text_IO;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_48" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_44_43">Fixed_IO</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_48" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_44_43">Fixed_IO</A></span> <b>is</b>
- <b>package</b> <span class="symbol"><A NAME="ref_46_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
+ <b>package</b> <span class="symbol"><A NAME="ref_46_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
<b>package</b> FIXIO <b>is</b> <b>new</b> Ada.Text_IO.Fixed_IO (<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_42_9">Num</A>);
<b>procedure</b> <span class="symbol"><A NAME="ref_49_14" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_50_14">Put</A></span>
- (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_52_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_42_9">Num</A>;
<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_53_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_46_4">Default_Fore</A>;
<span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_54_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_47_4">Default_Aft</A>;
@@ -89,5 +89,5 @@
<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_50_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_58_7">Item</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_59_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_60_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_61_7">Exp</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_57_14">Put</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_44_43">Fixed_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_44_43">Fixed_IO</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm b/doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm
index c719f8872487..e990afeae8b6 100644
--- a/doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm
@@ -58,14 +58,14 @@
<b>generic</b>
<b>type</b> <span class="symbol"><A NAME="ref_42_9" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_44_43">Num</A></span> <b>is</b> <b>delta</b> &lt;&gt;;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_43" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_44_48">Fixed_IO</A></span> <b>is</b>
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_43" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_44_48">Fixed_IO</A></span> <b>is</b>
<span class="symbol"><A NAME="ref_46_4">Default_Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_42_9">Num</A>'Fore;
<span class="symbol"><A NAME="ref_47_4">Default_Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_42_9">Num</A>'Aft;
<span class="symbol"><A NAME="ref_48_4">Default_Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := 0;
<b>procedure</b> <span class="symbol"><A NAME="ref_50_14" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_49_14">Put</A></span>
- (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_51_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_42_9">Num</A>;
<span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_52_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_46_4">Default_Fore</A>;
<span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_53_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_47_4">Default_Aft</A>;
@@ -80,5 +80,5 @@
<b>private</b>
<b>pragma</b> Inline (Put);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_44_43">Fixed_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_44_43">Fixed_IO</A>;
</PRE></BODY></HTML>
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
index 6c1c53d1b150..2f1690fd49e8 100644
--- 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
@@ -56,15 +56,15 @@
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>with</b> Ada.Text_IO;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_48" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_44_43">Float_IO</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_48" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_44_43">Float_IO</A></span> <b>is</b>
- <b>package</b> <span class="symbol"><A NAME="ref_46_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
+ <b>package</b> <span class="symbol"><A NAME="ref_46_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
<b>package</b> FIO <b>is</b> <b>new</b> Ada.Text_IO.Float_IO (<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_42_9">Num</A>);
<b>procedure</b> <span class="symbol"><A NAME="ref_49_14" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_50_14">Put</A></span>
- (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_52_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_42_9">Num</A>;
<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_53_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_46_4">Default_Fore</A>;
<span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_54_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_47_4">Default_Aft</A>;
@@ -90,5 +90,5 @@
<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_50_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_58_7">Item</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_59_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_60_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_61_7">Exp</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_57_14">Put</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_44_43">Float_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_44_43">Float_IO</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm b/doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm
index 54816ac0a98a..23f93b07b79c 100644
--- a/doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm
@@ -58,14 +58,14 @@
<b>generic</b>
<b>type</b> <span class="symbol"><A NAME="ref_42_9" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_44_43">Num</A></span> <b>is</b> <b>digits</b> &lt;&gt;;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_43" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_44_48">Float_IO</A></span> <b>is</b>
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_43" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_44_48">Float_IO</A></span> <b>is</b>
<span class="symbol"><A NAME="ref_46_4">Default_Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := 2;
<span class="symbol"><A NAME="ref_47_4">Default_Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_42_9">Num</A>'<b>Digits</b> - 1;
<span class="symbol"><A NAME="ref_48_4">Default_Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := 3;
<b>procedure</b> <span class="symbol"><A NAME="ref_50_14" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_49_14">Put</A></span>
- (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_51_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_42_9">Num</A>;
<span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_52_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_46_4">Default_Fore</A>;
<span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_53_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_47_4">Default_Aft</A>;
@@ -80,5 +80,5 @@
<b>private</b>
<b>pragma</b> Inline (Put);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_44_43">Float_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_44_43">Float_IO</A>;
</PRE></BODY></HTML>
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
index d06ba9fc5f83..f4c984c75659 100644
--- 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
@@ -56,15 +56,15 @@
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>with</b> Ada.Text_IO;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_48" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_44_43">Integer_IO</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_48" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_44_43">Integer_IO</A></span> <b>is</b>
- <b>package</b> <span class="symbol"><A NAME="ref_46_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
+ <b>package</b> <span class="symbol"><A NAME="ref_46_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
<b>package</b> IIO <b>is</b> <b>new</b> Ada.Text_IO.Integer_IO (<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_42_9">Num</A>);
<b>procedure</b> <span class="symbol"><A NAME="ref_49_14" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_49_14">Put</A></span>
- (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_51_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_42_9">Num</A>;
<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_52_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_46_4">Default_Width</A>;
<span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_53_7">Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_47_4">Default_Base</A>)
@@ -84,5 +84,5 @@
<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_49_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_56_7">Item</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_57_7">Width</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_58_7">Base</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_55_14">Put</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_44_43">Integer_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_44_43">Integer_IO</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm b/doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm
index 4fc793114fcb..e4b1c7b6a221 100644
--- a/doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm
@@ -58,13 +58,13 @@
<b>generic</b>
<b>type</b> <span class="symbol"><A NAME="ref_42_9" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_44_43">Num</A></span> <b>is</b> <b>range</b> &lt;&gt;;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_43" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_44_48">Integer_IO</A></span> <b>is</b>
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_43" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_44_48">Integer_IO</A></span> <b>is</b>
<span class="symbol"><A NAME="ref_46_4">Default_Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_42_9">Num</A>'Width;
<span class="symbol"><A NAME="ref_47_4">Default_Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Number_Base</A> := 10;
<b>procedure</b> <span class="symbol"><A NAME="ref_49_14" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_49_14">Put</A></span>
- (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_51_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_42_9">Num</A>;
<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_52_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_46_4">Default_Width</A>;
<span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_53_7">Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_47_4">Default_Base</A>);
@@ -77,5 +77,5 @@
<b>private</b>
<b>pragma</b> Inline (Put);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_44_43">Integer_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_44_43">Integer_IO</A>;
</PRE></BODY></HTML>
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
index 19aeaf2cba85..af4b222867fe 100644
--- 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
@@ -56,15 +56,15 @@
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>with</b> Ada.Text_IO;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_48" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_44_43">Modular_IO</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_48" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_44_43">Modular_IO</A></span> <b>is</b>
- <b>package</b> <span class="symbol"><A NAME="ref_46_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
+ <b>package</b> <span class="symbol"><A NAME="ref_46_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_42_51">Aux</A>;
<b>package</b> MIO <b>is</b> <b>new</b> Ada.Text_IO.Modular_IO (<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_42_9">Num</A>);
<b>procedure</b> <span class="symbol"><A NAME="ref_49_14" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_49_14">Put</A></span>
- (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_51_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_42_9">Num</A>;
<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_52_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_46_4">Default_Width</A>;
<span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_53_7">Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_47_4">Default_Base</A>)
@@ -84,5 +84,5 @@
<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_49_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_56_7">Item</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_57_7">Width</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_58_7">Base</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_55_14">Put</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_44_43">Modular_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_44_43">Modular_IO</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm b/doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm
index 8d485adc656d..1552b0c57452 100644
--- a/doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm
@@ -58,13 +58,13 @@
<b>generic</b>
<b>type</b> <span class="symbol"><A NAME="ref_42_9" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_44_43">Num</A></span> <b>is</b> <b>mod</b> &lt;&gt;;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_43" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_44_48">Modular_IO</A></span> <b>is</b>
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_43" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_44_48">Modular_IO</A></span> <b>is</b>
<span class="symbol"><A NAME="ref_46_4">Default_Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_42_9">Num</A>'Width;
<span class="symbol"><A NAME="ref_47_4">Default_Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Number_Base</A> := 10;
<b>procedure</b> <span class="symbol"><A NAME="ref_49_14" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_49_14">Put</A></span>
- (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_51_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_42_9">Num</A>;
<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_52_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_46_4">Default_Width</A>;
<span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_53_7">Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_47_4">Default_Base</A>);
@@ -77,5 +77,5 @@
<b>private</b>
<b>pragma</b> Inline (Put);
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_44_43">Modular_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_44_43">Modular_IO</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-text_io__adb.htm b/doc/html/ada/terminal_interface-curses-text_io__adb.htm
index f53067fe7294..fb818d034116 100644
--- a/doc/html/ada/terminal_interface-curses-text_io__adb.htm
+++ b/doc/html/ada/terminal_interface-curses-text_io__adb.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,35 +52,35 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.20 @</EM></span>
-<span class="comment"><EM>-- @Date: 2011/03/22 23:38:49 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.22 @</EM></span>
+<span class="comment"><EM>-- @Date: 2014/05/24 21:32:18 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_42_40" HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_42_40" HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A></span> <b>is</b>
- <span class="symbol"><A NAME="ref_44_4">Default_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_58_4">Null_Window</A>;
+ <span class="symbol"><A NAME="ref_44_4">Default_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_56_4">Null_Window</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_59_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_46_26" HREF="terminal_interface-curses-text_io__ads.htm#ref_59_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_59_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_46_26" HREF="terminal_interface-curses-text_io__ads.htm#ref_59_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>)
<b>is</b>
<b>begin</b>
<A HREF="terminal_interface-curses-text_io__adb.htm#ref_44_4">Default_Window</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#ref_59_26">Win</A>;
<b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_59_14">Set_Window</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_52_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_52_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>
<b>is</b>
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_44_4">Default_Window</A> = <A HREF="terminal_interface-curses__ads.htm#ref_58_4">Null_Window</A> <b>then</b>
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_44_4">Default_Window</A> = <A HREF="terminal_interface-curses__ads.htm#ref_56_4">Null_Window</A> <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
<b>else</b>
<b>return</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_44_4">Default_Window</A>;
<b>end</b> <b>if</b>;
<b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>;
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>);
- <b>procedure</b> <span class="symbol"><A NAME="ref_63_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_65_14">Flush</A></span> (<span class="symbol"><A NAME="ref_63_21" HREF="terminal_interface-curses-text_io__ads.htm#ref_65_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_63_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_65_14">Flush</A></span> (<span class="symbol"><A NAME="ref_63_21" HREF="terminal_interface-curses-text_io__ads.htm#ref_65_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1046_14">Refresh</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_65_21">Win</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1215_14">Refresh</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_65_21">Win</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_65_14">Flush</A>;
<b>procedure</b> <span class="symbol"><A NAME="ref_69_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_66_14">Flush</A></span>
@@ -98,12 +98,12 @@
<span class="comment"><EM>-- A scroll-window is interpreted as an page with unbounded page length,</EM></span>
<span class="comment"><EM>-- i.e. it returns the conventional 0 as page length.</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_84_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_77_13">Line_Length</A></span> (<span class="symbol"><A NAME="ref_84_26" HREF="terminal_interface-curses-text_io__ads.htm#ref_77_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_47_12">Count</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_84_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_77_13">Line_Length</A></span> (<span class="symbol"><A NAME="ref_84_26" HREF="terminal_interface-curses-text_io__ads.htm#ref_77_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_47_12">Count</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_86_7">N_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_87_7">N_Cols</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_86_7">N_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_87_7">N_Cols</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1229_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_77_26">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_86_7">N_Lines</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_87_7">N_Cols</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1398_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_77_26">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_86_7">N_Lines</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_87_7">N_Cols</A>);
<span class="comment"><EM>-- if Natural (N_Cols) &gt; Natural (Count'Last) then</EM></span>
<span class="comment"><EM>-- raise Layout_Error;</EM></span>
<span class="comment"><EM>-- end if;</EM></span>
@@ -116,15 +116,15 @@
<b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_77_13">Line_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_78_13">Line_Length</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_102_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_80_13">Page_Length</A></span> (<span class="symbol"><A NAME="ref_102_26" HREF="terminal_interface-curses-text_io__ads.htm#ref_80_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_47_12">Count</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_102_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_80_13">Page_Length</A></span> (<span class="symbol"><A NAME="ref_102_26" HREF="terminal_interface-curses-text_io__ads.htm#ref_80_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_47_12">Count</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_104_7">N_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_105_7">N_Cols</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_104_7">N_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_105_7">N_Cols</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1023_13">Scrolling_Allowed</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_80_26">Win</A>) <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1192_13">Scrolling_Allowed</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_80_26">Win</A>) <b>then</b>
<b>return</b> 0;
<b>else</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1229_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_80_26">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_104_7">N_Lines</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_105_7">N_Cols</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1398_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_80_26">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_104_7">N_Lines</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_105_7">N_Cols</A>);
<span class="comment"><EM>-- if Natural (N_Lines) &gt; Natural (Count'Last) then</EM></span>
<span class="comment"><EM>-- raise Layout_Error;</EM></span>
<span class="comment"><EM>-- end if;</EM></span>
@@ -141,7 +141,7 @@
<span class="comment"><EM>------------------------------------</EM></span>
<span class="comment"><EM>-- Column, Line, and Page Control --</EM></span>
<span class="comment"><EM>------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_127_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_86_14">New_Line</A></span> (<span class="symbol"><A NAME="ref_127_24" HREF="terminal_interface-curses-text_io__ads.htm#ref_86_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_127_38" HREF="terminal_interface-curses-text_io__ads.htm#ref_86_38">Spacing</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A> := 1)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_127_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_86_14">New_Line</A></span> (<span class="symbol"><A NAME="ref_127_24" HREF="terminal_interface-curses-text_io__ads.htm#ref_86_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_127_38" HREF="terminal_interface-curses-text_io__ads.htm#ref_86_38">Spacing</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A> := 1)
<b>is</b>
<span class="symbol"><A NAME="ref_129_7">P_Size</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_47_12">Count</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#ref_80_13">Page_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_86_24">Win</A>);
<b>begin</b>
@@ -153,7 +153,7 @@
<b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_129_7">P_Size</A> &gt; 0 <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_101_13">Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_86_24">Win</A>) &gt;= <A HREF="terminal_interface-curses-text_io__adb.htm#ref_129_7">P_Size</A> <b>then</b>
<A HREF="terminal_interface-curses-text_io__ads.htm#ref_89_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_86_24">Win</A>);
<b>else</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_529_14">Add</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_86_24">Win</A>, ASCII.LF);
+ <A HREF="terminal_interface-curses__ads.htm#ref_698_14">Add</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_86_24">Win</A>, ASCII.LF);
<b>end</b> <b>if</b>;
<b>end</b> <b>loop</b>;
<b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_86_14">New_Line</A>;
@@ -164,10 +164,10 @@
<A HREF="terminal_interface-curses-text_io__ads.htm#ref_86_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_87_24">Spacing</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_87_14">New_Line</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_150_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_89_14">New_Page</A></span> (<span class="symbol"><A NAME="ref_150_24" HREF="terminal_interface-curses-text_io__ads.htm#ref_89_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_150_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_89_14">New_Page</A></span> (<span class="symbol"><A NAME="ref_150_24" HREF="terminal_interface-curses-text_io__ads.htm#ref_89_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1081_14">Clear</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_89_24">Win</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1250_14">Clear</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_89_24">Win</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_89_14">New_Page</A>;
<b>procedure</b> <span class="symbol"><A NAME="ref_156_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_90_14">New_Page</A></span>
@@ -176,20 +176,20 @@
<A HREF="terminal_interface-curses-text_io__ads.htm#ref_89_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_90_14">New_Page</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_162_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_92_14">Set_Col</A></span> (<span class="symbol"><A NAME="ref_162_23" HREF="terminal_interface-curses-text_io__ads.htm#ref_92_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_162_38" HREF="terminal_interface-curses-text_io__ads.htm#ref_92_38">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_162_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_92_14">Set_Col</A></span> (<span class="symbol"><A NAME="ref_162_23" HREF="terminal_interface-curses-text_io__ads.htm#ref_92_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_162_38" HREF="terminal_interface-curses-text_io__ads.htm#ref_92_38">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>)
<b>is</b>
- <span class="symbol"><A NAME="ref_164_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_165_7">X1</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_166_7">X2</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_164_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_165_7">X1</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_166_7">X2</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
<span class="symbol"><A NAME="ref_167_7">N</A></span> : Natural;
<b>begin</b>
<b>if</b> <b>not</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_92_38">To</A>'Valid <b>then</b>
<b>raise</b> Constraint_Error;
<b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses__ads.htm#ref_1245_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_92_23">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_164_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_165_7">X1</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1414_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_92_23">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_164_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_165_7">X1</A>);
<A HREF="terminal_interface-curses-text_io__adb.htm#ref_167_7">N</A> := Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_92_38">To</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#ref_167_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#ref_167_7">N</A> - 1;
- <A HREF="terminal_interface-curses-text_io__adb.htm#ref_166_7">X2</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_167_7">N</A>);
+ <A HREF="terminal_interface-curses-text_io__adb.htm#ref_166_7">X2</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_167_7">N</A>);
<b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_165_7">X1</A> &gt; <A HREF="terminal_interface-curses-text_io__adb.htm#ref_166_7">X2</A> <b>then</b>
<A HREF="terminal_interface-curses-text_io__ads.htm#ref_86_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_92_23">Win</A>, 1);
<A HREF="terminal_interface-curses-text_io__adb.htm#ref_165_7">X1</A> := 0;
@@ -210,21 +210,21 @@
<A HREF="terminal_interface-curses-text_io__ads.htm#ref_92_14">Set_Col</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_93_23">To</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_93_14">Set_Col</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_196_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_95_14">Set_Line</A></span> (<span class="symbol"><A NAME="ref_196_24" HREF="terminal_interface-curses-text_io__ads.htm#ref_95_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_196_38" HREF="terminal_interface-curses-text_io__ads.htm#ref_95_38">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_196_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_95_14">Set_Line</A></span> (<span class="symbol"><A NAME="ref_196_24" HREF="terminal_interface-curses-text_io__ads.htm#ref_95_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_196_38" HREF="terminal_interface-curses-text_io__ads.htm#ref_95_38">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>)
<b>is</b>
- <span class="symbol"><A NAME="ref_198_7">Y1</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_199_7">Y2</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_200_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_198_7">Y1</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_199_7">Y2</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_200_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
<span class="symbol"><A NAME="ref_201_7">N</A></span> : Natural;
<b>begin</b>
<b>if</b> <b>not</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_95_38">To</A>'Valid <b>then</b>
<b>raise</b> Constraint_Error;
<b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses__ads.htm#ref_1245_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_95_24">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_198_7">Y1</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_200_7">X</A>);
- <b>pragma</b> Unreferenced (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_200_7">X</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1414_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_95_24">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_198_7">Y1</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_200_7">X</A>);
+ <b>pragma</b> Warnings (Off, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_200_7">X</A>); <span class="comment"><EM>-- unreferenced</EM></span>
<A HREF="terminal_interface-curses-text_io__adb.htm#ref_201_7">N</A> := Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_95_38">To</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#ref_201_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#ref_201_7">N</A> - 1;
- <A HREF="terminal_interface-curses-text_io__adb.htm#ref_199_7">Y2</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_201_7">N</A>);
+ <A HREF="terminal_interface-curses-text_io__adb.htm#ref_199_7">Y2</A> := <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_201_7">N</A>);
<b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_199_7">Y2</A> &lt; <A HREF="terminal_interface-curses-text_io__adb.htm#ref_198_7">Y1</A> <b>then</b>
<A HREF="terminal_interface-curses-text_io__ads.htm#ref_89_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_95_24">Win</A>);
<A HREF="terminal_interface-curses-text_io__adb.htm#ref_198_7">Y1</A> := 0;
@@ -240,13 +240,13 @@
<A HREF="terminal_interface-curses-text_io__ads.htm#ref_95_14">Set_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_96_24">To</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_96_14">Set_Line</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_226_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_98_13">Col</A></span> (<span class="symbol"><A NAME="ref_226_18" HREF="terminal_interface-curses-text_io__ads.htm#ref_98_18">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_226_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_98_13">Col</A></span> (<span class="symbol"><A NAME="ref_226_18" HREF="terminal_interface-curses-text_io__ads.htm#ref_98_18">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_228_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_229_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_228_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_229_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
<span class="symbol"><A NAME="ref_230_7">N</A></span> : Natural;
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1245_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_98_18">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_228_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_229_7">X</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1414_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_98_18">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_228_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_229_7">X</A>);
<A HREF="terminal_interface-curses-text_io__adb.htm#ref_230_7">N</A> := Natural (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_229_7">X</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#ref_230_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#ref_230_7">N</A> + 1;
<span class="comment"><EM>-- if N &gt; Natural (Count'Last) then</EM></span>
<span class="comment"><EM>-- raise Layout_Error;</EM></span>
@@ -260,13 +260,13 @@
<b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_98_13">Col</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_99_13">Col</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_246_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_101_13">Line</A></span> (<span class="symbol"><A NAME="ref_246_19" HREF="terminal_interface-curses-text_io__ads.htm#ref_101_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_246_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_101_13">Line</A></span> (<span class="symbol"><A NAME="ref_246_19" HREF="terminal_interface-curses-text_io__ads.htm#ref_101_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_248_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_249_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_248_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_249_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
<span class="symbol"><A NAME="ref_250_7">N</A></span> : Natural;
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1245_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_101_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_248_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_249_7">X</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1414_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_101_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_248_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_249_7">X</A>);
<A HREF="terminal_interface-curses-text_io__adb.htm#ref_250_7">N</A> := Natural (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_248_7">Y</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#ref_250_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#ref_250_7">N</A> + 1;
<span class="comment"><EM>-- if N &gt; Natural (Count'Last) then</EM></span>
<span class="comment"><EM>-- raise Layout_Error;</EM></span>
@@ -284,22 +284,22 @@
<span class="comment"><EM>-- Characters Output --</EM></span>
<span class="comment"><EM>-----------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_270_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_108_14">Put</A></span> (<span class="symbol"><A NAME="ref_270_19" HREF="terminal_interface-curses-text_io__ads.htm#ref_108_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_270_34" HREF="terminal_interface-curses-text_io__ads.htm#ref_108_34">Item</A></span> : Character)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_270_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_108_14">Put</A></span> (<span class="symbol"><A NAME="ref_270_19" HREF="terminal_interface-curses-text_io__ads.htm#ref_108_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_270_34" HREF="terminal_interface-curses-text_io__ads.htm#ref_108_34">Item</A></span> : Character)
<b>is</b>
<span class="symbol"><A NAME="ref_272_7">P_Size</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_47_12">Count</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#ref_80_13">Page_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_108_19">Win</A>);
- <span class="symbol"><A NAME="ref_273_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_274_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_275_7">L</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_276_7">C</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_273_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_274_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_275_7">L</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_276_7">C</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
<b>begin</b>
<b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_272_7">P_Size</A> &gt; 0 <b>then</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1245_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_108_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_273_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_274_7">X</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1229_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_108_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_275_7">L</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_276_7">C</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1414_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_108_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_273_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_274_7">X</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1398_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_108_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_275_7">L</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_276_7">C</A>);
<b>if</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_273_7">Y</A> + 1) = <A HREF="terminal_interface-curses-text_io__adb.htm#ref_275_7">L</A> <b>and</b> <b>then</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_274_7">X</A> + 1) = <A HREF="terminal_interface-curses-text_io__adb.htm#ref_276_7">C</A> <b>then</b>
<A HREF="terminal_interface-curses-text_io__ads.htm#ref_89_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_108_19">Win</A>);
<b>end</b> <b>if</b>;
<b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses__ads.htm#ref_529_14">Add</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_108_19">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_108_34">Item</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_698_14">Add</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_108_19">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_108_34">Item</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_108_14">Put</A>;
<b>procedure</b> <span class="symbol"><A NAME="ref_288_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_109_14">Put</A></span> (<span class="symbol"><A NAME="ref_288_19" HREF="terminal_interface-curses-text_io__ads.htm#ref_109_19">Item</A></span> : Character)
@@ -312,22 +312,22 @@
<span class="comment"><EM>-- Strings-Output --</EM></span>
<span class="comment"><EM>--------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_298_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_115_14">Put</A></span> (<span class="symbol"><A NAME="ref_298_19" HREF="terminal_interface-curses-text_io__ads.htm#ref_115_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_298_34" HREF="terminal_interface-curses-text_io__ads.htm#ref_115_34">Item</A></span> : String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_298_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_115_14">Put</A></span> (<span class="symbol"><A NAME="ref_298_19" HREF="terminal_interface-curses-text_io__ads.htm#ref_115_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_298_34" HREF="terminal_interface-curses-text_io__ads.htm#ref_115_34">Item</A></span> : String)
<b>is</b>
<span class="symbol"><A NAME="ref_300_7">P_Size</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_47_12">Count</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#ref_80_13">Page_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_115_19">Win</A>);
- <span class="symbol"><A NAME="ref_301_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_302_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_303_7">L</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_304_7">C</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_301_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_302_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_303_7">L</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_304_7">C</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
<b>begin</b>
<b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_300_7">P_Size</A> &gt; 0 <b>then</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1245_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_115_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_301_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_302_7">X</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1229_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_115_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_303_7">L</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_304_7">C</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1414_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_115_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_301_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_302_7">X</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1398_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_115_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_303_7">L</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_304_7">C</A>);
<b>if</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_301_7">Y</A> + 1) = <A HREF="terminal_interface-curses-text_io__adb.htm#ref_303_7">L</A> <b>and</b> <b>then</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_302_7">X</A> + 1 + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_115_34">Item</A>'Length) &gt;= <A HREF="terminal_interface-curses-text_io__adb.htm#ref_304_7">C</A> <b>then</b>
<A HREF="terminal_interface-curses-text_io__ads.htm#ref_89_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_115_19">Win</A>);
<b>end</b> <b>if</b>;
<b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses__ads.htm#ref_654_14">Add</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_115_19">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_115_34">Item</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_823_14">Add</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_115_19">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_115_34">Item</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_115_14">Put</A>;
<b>procedure</b> <span class="symbol"><A NAME="ref_316_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_116_14">Put</A></span> (<span class="symbol"><A NAME="ref_316_19" HREF="terminal_interface-curses-text_io__ads.htm#ref_116_19">Item</A></span> : String)
@@ -337,7 +337,7 @@
<b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_116_14">Put</A>;
<b>procedure</b> <span class="symbol"><A NAME="ref_322_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_118_14">Put_Line</A></span>
- (<span class="symbol"><A NAME="ref_323_7" HREF="terminal_interface-curses-text_io__ads.htm#ref_119_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_323_7" HREF="terminal_interface-curses-text_io__ads.htm#ref_119_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_324_7" HREF="terminal_interface-curses-text_io__ads.htm#ref_120_7">Item</A></span> : String)
<b>is</b>
<b>begin</b>
@@ -352,5 +352,5 @@
<A HREF="terminal_interface-curses-text_io__ads.htm#ref_118_14">Put_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_123_7">Item</A>);
<b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_122_14">Put_Line</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-text_io__ads.htm b/doc/html/ada/terminal_interface-curses-text_io__ads.htm
index ac2fa990e7d8..f95e359f27f6 100644
--- a/doc/html/ada/terminal_interface-curses-text_io__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-text_io__ads.htm
@@ -58,7 +58,7 @@
<b>with</b> Ada.Text_IO;
<b>with</b> Ada.IO_Exceptions;
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_44_35" HREF="terminal_interface-curses-text_io__adb.htm#ref_42_40">Text_IO</A></span> <b>is</b>
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_44_35" HREF="terminal_interface-curses-text_io__adb.htm#ref_42_40">Text_IO</A></span> <b>is</b>
<b>use</b> <b>type</b> Ada.Text_IO.Count;
<b>subtype</b> <span class="symbol"><A NAME="ref_47_12">Count</A></span> <b>is</b> Ada.Text_IO.Count;
@@ -73,13 +73,13 @@
<span class="comment"><EM>-- type parameter. They will operate on a default window, which can</EM></span>
<span class="comment"><EM>-- be set by the user. It is initially equal to Standard_Window.</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_59_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_46_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_59_26" HREF="terminal_interface-curses-text_io__adb.htm#ref_46_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_59_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_46_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_59_26" HREF="terminal_interface-curses-text_io__adb.htm#ref_46_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>);
<span class="comment"><EM>-- Set Win as the default window</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_62_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_52_13">Get_Window</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_62_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_52_13">Get_Window</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="comment"><EM>-- Get the current default window</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_65_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_63_14">Flush</A></span> (<span class="symbol"><A NAME="ref_65_21" HREF="terminal_interface-curses-text_io__adb.htm#ref_63_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_65_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_63_14">Flush</A></span> (<span class="symbol"><A NAME="ref_65_21" HREF="terminal_interface-curses-text_io__adb.htm#ref_63_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>);
<b>procedure</b> <span class="symbol"><A NAME="ref_66_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_69_14">Flush</A></span>;
<span class="comment"><EM>--------------------------------------------</EM></span>
@@ -91,49 +91,49 @@
<span class="comment"><EM>-- A scroll-window is interpreted as an page with unbounded page length,</EM></span>
<span class="comment"><EM>-- i.e. it returns the conventional 0 as page length.</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_77_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_84_13">Line_Length</A></span> (<span class="symbol"><A NAME="ref_77_26" HREF="terminal_interface-curses-text_io__adb.htm#ref_84_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_47_12">Count</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_77_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_84_13">Line_Length</A></span> (<span class="symbol"><A NAME="ref_77_26" HREF="terminal_interface-curses-text_io__adb.htm#ref_84_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_47_12">Count</A>;
<b>function</b> <span class="symbol"><A NAME="ref_78_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_96_13">Line_Length</A></span> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_47_12">Count</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_80_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_102_13">Page_Length</A></span> (<span class="symbol"><A NAME="ref_80_26" HREF="terminal_interface-curses-text_io__adb.htm#ref_102_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_47_12">Count</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_80_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_102_13">Page_Length</A></span> (<span class="symbol"><A NAME="ref_80_26" HREF="terminal_interface-curses-text_io__adb.htm#ref_102_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_47_12">Count</A>;
<b>function</b> <span class="symbol"><A NAME="ref_81_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_118_13">Page_Length</A></span> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_47_12">Count</A>;
<span class="comment"><EM>------------------------------------</EM></span>
<span class="comment"><EM>-- Column, Line, and Page Control --</EM></span>
<span class="comment"><EM>------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_86_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_127_14">New_Line</A></span> (<span class="symbol"><A NAME="ref_86_24" HREF="terminal_interface-curses-text_io__adb.htm#ref_127_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_86_38" HREF="terminal_interface-curses-text_io__adb.htm#ref_127_38">Spacing</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A> := 1);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_86_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_127_14">New_Line</A></span> (<span class="symbol"><A NAME="ref_86_24" HREF="terminal_interface-curses-text_io__adb.htm#ref_127_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_86_38" HREF="terminal_interface-curses-text_io__adb.htm#ref_127_38">Spacing</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A> := 1);
<b>procedure</b> <span class="symbol"><A NAME="ref_87_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_144_14">New_Line</A></span> (<span class="symbol"><A NAME="ref_87_24" HREF="terminal_interface-curses-text_io__adb.htm#ref_144_24">Spacing</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A> := 1);
- <b>procedure</b> <span class="symbol"><A NAME="ref_89_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_150_14">New_Page</A></span> (<span class="symbol"><A NAME="ref_89_24" HREF="terminal_interface-curses-text_io__adb.htm#ref_150_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_89_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_150_14">New_Page</A></span> (<span class="symbol"><A NAME="ref_89_24" HREF="terminal_interface-curses-text_io__adb.htm#ref_150_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>);
<b>procedure</b> <span class="symbol"><A NAME="ref_90_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_156_14">New_Page</A></span>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_92_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_162_14">Set_Col</A></span> (<span class="symbol"><A NAME="ref_92_23" HREF="terminal_interface-curses-text_io__adb.htm#ref_162_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_92_38" HREF="terminal_interface-curses-text_io__adb.htm#ref_162_38">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_92_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_162_14">Set_Col</A></span> (<span class="symbol"><A NAME="ref_92_23" HREF="terminal_interface-curses-text_io__adb.htm#ref_162_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_92_38" HREF="terminal_interface-curses-text_io__adb.htm#ref_162_38">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>);
<b>procedure</b> <span class="symbol"><A NAME="ref_93_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_190_14">Set_Col</A></span> (<span class="symbol"><A NAME="ref_93_23" HREF="terminal_interface-curses-text_io__adb.htm#ref_190_23">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>);
- <b>procedure</b> <span class="symbol"><A NAME="ref_95_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_196_14">Set_Line</A></span> (<span class="symbol"><A NAME="ref_95_24" HREF="terminal_interface-curses-text_io__adb.htm#ref_196_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_95_38" HREF="terminal_interface-curses-text_io__adb.htm#ref_196_38">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_95_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_196_14">Set_Line</A></span> (<span class="symbol"><A NAME="ref_95_24" HREF="terminal_interface-curses-text_io__adb.htm#ref_196_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_95_38" HREF="terminal_interface-curses-text_io__adb.htm#ref_196_38">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>);
<b>procedure</b> <span class="symbol"><A NAME="ref_96_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_220_14">Set_Line</A></span> (<span class="symbol"><A NAME="ref_96_24" HREF="terminal_interface-curses-text_io__adb.htm#ref_220_24">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>);
- <b>function</b> <span class="symbol"><A NAME="ref_98_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_226_13">Col</A></span> (<span class="symbol"><A NAME="ref_98_18" HREF="terminal_interface-curses-text_io__adb.htm#ref_226_18">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_98_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_226_13">Col</A></span> (<span class="symbol"><A NAME="ref_98_18" HREF="terminal_interface-curses-text_io__adb.htm#ref_226_18">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>;
<b>function</b> <span class="symbol"><A NAME="ref_99_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_240_13">Col</A></span> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_101_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_246_13">Line</A></span> (<span class="symbol"><A NAME="ref_101_19" HREF="terminal_interface-curses-text_io__adb.htm#ref_246_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_101_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_246_13">Line</A></span> (<span class="symbol"><A NAME="ref_101_19" HREF="terminal_interface-curses-text_io__adb.htm#ref_246_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>;
<b>function</b> <span class="symbol"><A NAME="ref_102_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_260_13">Line</A></span> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Positive_Count</A>;
<span class="comment"><EM>-----------------------</EM></span>
<span class="comment"><EM>-- Characters-Output --</EM></span>
<span class="comment"><EM>-----------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_108_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_270_14">Put</A></span> (<span class="symbol"><A NAME="ref_108_19" HREF="terminal_interface-curses-text_io__adb.htm#ref_270_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_108_34" HREF="terminal_interface-curses-text_io__adb.htm#ref_270_34">Item</A></span> : Character);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_108_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_270_14">Put</A></span> (<span class="symbol"><A NAME="ref_108_19" HREF="terminal_interface-curses-text_io__adb.htm#ref_270_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_108_34" HREF="terminal_interface-curses-text_io__adb.htm#ref_270_34">Item</A></span> : Character);
<b>procedure</b> <span class="symbol"><A NAME="ref_109_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_288_14">Put</A></span> (<span class="symbol"><A NAME="ref_109_19" HREF="terminal_interface-curses-text_io__adb.htm#ref_288_19">Item</A></span> : Character);
<span class="comment"><EM>--------------------</EM></span>
<span class="comment"><EM>-- Strings-Output --</EM></span>
<span class="comment"><EM>--------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_115_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_298_14">Put</A></span> (<span class="symbol"><A NAME="ref_115_19" HREF="terminal_interface-curses-text_io__adb.htm#ref_298_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_115_34" HREF="terminal_interface-curses-text_io__adb.htm#ref_298_34">Item</A></span> : String);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_115_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_298_14">Put</A></span> (<span class="symbol"><A NAME="ref_115_19" HREF="terminal_interface-curses-text_io__adb.htm#ref_298_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_115_34" HREF="terminal_interface-curses-text_io__adb.htm#ref_298_34">Item</A></span> : String);
<b>procedure</b> <span class="symbol"><A NAME="ref_116_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_316_14">Put</A></span> (<span class="symbol"><A NAME="ref_116_19" HREF="terminal_interface-curses-text_io__adb.htm#ref_316_19">Item</A></span> : String);
<b>procedure</b> <span class="symbol"><A NAME="ref_118_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_322_14">Put_Line</A></span>
- (<span class="symbol"><A NAME="ref_119_7" HREF="terminal_interface-curses-text_io__adb.htm#ref_323_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_119_7" HREF="terminal_interface-curses-text_io__adb.htm#ref_323_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_120_7" HREF="terminal_interface-curses-text_io__adb.htm#ref_324_7">Item</A></span> : String);
<b>procedure</b> <span class="symbol"><A NAME="ref_122_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_331_14">Put_Line</A></span>
@@ -150,5 +150,5 @@
<span class="symbol"><A NAME="ref_133_4">Data_Error</A></span> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Data_Error;
<span class="symbol"><A NAME="ref_134_4">Layout_Error</A></span> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Layout_Error;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_44_35">Text_IO</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-trace__adb.htm b/doc/html/ada/terminal_interface-curses-trace__adb.htm
index 106aa5d643da..ecae414574c4 100644
--- a/doc/html/ada/terminal_interface-curses-trace__adb.htm
+++ b/doc/html/ada/terminal_interface-curses-trace__adb.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 2000-2004,2009 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 2000-2009,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,44 +52,27 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.7 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.11 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
-<b>with</b> Ada.Unchecked_Conversion;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_45_40" HREF="terminal_interface-curses-trace__ads.htm#ref_42_35">Trace</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_43_40" HREF="terminal_interface-curses-trace__ads.htm#ref_42_35">Trace</A></span> <b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_47_9">C_TraceType</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_59_12">C_UInt</A>;
-
- <b>function</b> TraceAda_To_TraceC <b>is</b> <b>new</b>
- Ada.Unchecked_Conversion (Source =&gt; <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A>,
- Target =&gt; <A HREF="terminal_interface-curses-trace__adb.htm#ref_47_9">C_TraceType</A>);
-
- <b>procedure</b> <span class="symbol"><A NAME="ref_53_14" HREF="terminal_interface-curses-trace__ads.htm#ref_105_14">Trace_On</A></span> (<span class="symbol"><A NAME="ref_53_24" HREF="terminal_interface-curses-trace__ads.htm#ref_105_24">x</A></span> : <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A>) <b>is</b>
- <b>procedure</b> <span class="symbol"><A NAME="ref_54_17">traceC</A></span> (<span class="symbol"><A NAME="ref_54_25" HREF="terminal_interface-curses-trace__adb.htm#ref_54_17">y</A></span> : <A HREF="terminal_interface-curses-trace__adb.htm#ref_47_9">C_TraceType</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_45_14" HREF="terminal_interface-curses-trace__ads.htm#ref_114_14">Trace_On</A></span> (<span class="symbol"><A NAME="ref_45_24" HREF="terminal_interface-curses-trace__ads.htm#ref_114_24">x</A></span> : <A HREF="terminal_interface-curses-trace__ads.htm#ref_45_9">Trace_Attribute_Set</A>) <b>is</b>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_46_17">traceC</A></span> (<span class="symbol"><A NAME="ref_46_25" HREF="terminal_interface-curses-trace__adb.htm#ref_46_17">y</A></span> : <A HREF="terminal_interface-curses-trace__ads.htm#ref_45_9">Trace_Attribute_Set</A>);
<b>pragma</b> Import (C, traceC, "trace");
<b>begin</b>
- <A HREF="terminal_interface-curses-trace__adb.htm#ref_54_17">traceC</A> (TraceAda_To_TraceC (<A HREF="terminal_interface-curses-trace__ads.htm#ref_105_24">x</A>));
- <b>end</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_105_14">Trace_On</A>;
-
- <span class="comment"><EM>-- 75. (12) A C function that takes a variable number of arguments can</EM></span>
- <span class="comment"><EM>-- correspond to several Ada subprograms, taking various specific</EM></span>
- <span class="comment"><EM>-- numbers and types of parameters.</EM></span>
+ <A HREF="terminal_interface-curses-trace__adb.htm#ref_46_17">traceC</A> (<A HREF="terminal_interface-curses-trace__ads.htm#ref_114_24">x</A>);
+ <b>end</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_114_14">Trace_On</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_64_14" HREF="terminal_interface-curses-trace__ads.htm#ref_109_14">Trace_Put</A></span> (<span class="symbol"><A NAME="ref_64_25" HREF="terminal_interface-curses-trace__ads.htm#ref_109_25">str</A></span> : String) <b>is</b>
- <b>procedure</b> <span class="symbol"><A NAME="ref_65_17">tracef</A></span> (<span class="symbol"><A NAME="ref_65_25" HREF="terminal_interface-curses-trace__adb.htm#ref_65_17">format</A></span> : char_array; <span class="symbol"><A NAME="ref_65_46" HREF="terminal_interface-curses-trace__adb.htm#ref_65_17">s</A></span> : char_array);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_52_14" HREF="terminal_interface-curses-trace__ads.htm#ref_118_14">Trace_Put</A></span> (<span class="symbol"><A NAME="ref_52_25" HREF="terminal_interface-curses-trace__ads.htm#ref_118_25">str</A></span> : String) <b>is</b>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_53_17">tracef</A></span> (<span class="symbol"><A NAME="ref_53_25" HREF="terminal_interface-curses-trace__adb.htm#ref_53_17">format</A></span> : char_array; <span class="symbol"><A NAME="ref_53_46" HREF="terminal_interface-curses-trace__adb.htm#ref_53_17">s</A></span> : char_array);
<b>pragma</b> Import (C, tracef, "_traces");
- <span class="symbol"><A NAME="ref_67_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-trace__ads.htm#ref_109_25">str</A>'Length);
- <span class="symbol"><A NAME="ref_68_7">Length</A></span> : size_t;
- <span class="symbol"><A NAME="ref_69_7">formatstr</A></span> : <b>constant</b> String := "%s" &amp; ASCII.NUL;
- <span class="symbol"><A NAME="ref_70_7">formattxt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-trace__adb.htm#ref_69_7">formatstr</A>'Length);
+ <span class="comment"><EM>-- _traces() is defined in c_varargs_to_ada.h</EM></span>
<b>begin</b>
- To_C (<A HREF="terminal_interface-curses-trace__adb.htm#ref_69_7">formatstr</A>, <A HREF="terminal_interface-curses-trace__adb.htm#ref_70_7">formattxt</A>, <A HREF="terminal_interface-curses-trace__adb.htm#ref_68_7">Length</A>);
- To_C (<A HREF="terminal_interface-curses-trace__ads.htm#ref_109_25">str</A>, <A HREF="terminal_interface-curses-trace__adb.htm#ref_67_7">Txt</A>, <A HREF="terminal_interface-curses-trace__adb.htm#ref_68_7">Length</A>);
- <A HREF="terminal_interface-curses-trace__adb.htm#ref_65_17">tracef</A> (<A HREF="terminal_interface-curses-trace__adb.htm#ref_70_7">formattxt</A>, <A HREF="terminal_interface-curses-trace__adb.htm#ref_67_7">Txt</A>);
- <b>end</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_109_14">Trace_Put</A>;
+ <A HREF="terminal_interface-curses-trace__adb.htm#ref_53_17">tracef</A> (To_C ("%s"), To_C (<A HREF="terminal_interface-curses-trace__ads.htm#ref_118_25">str</A>));
+ <b>end</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_118_14">Trace_Put</A>;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-trace__ads.htm#ref_42_35">Trace</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-trace__ads.htm#ref_42_35">Trace</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses-trace__ads.htm b/doc/html/ada/terminal_interface-curses-trace__ads.htm
index 5c6895a9d1cf..caa479fc64e5 100644
--- a/doc/html/ada/terminal_interface-curses-trace__ads.htm
+++ b/doc/html/ada/terminal_interface-curses-trace__ads.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- S P E C --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 2000 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 2000,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,65 +52,74 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Eugene V. Melaragno &lt;aldomel@ix.netcom.com&gt; 2000</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.1 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.4 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<span class="symbol"><A NAME="ref_42_35" HREF="terminal_interface-curses-trace__adb.htm#ref_45_40">Trace</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-trace__ads.htm#ref_42_35">Trace</A>);
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<span class="symbol"><A NAME="ref_42_35" HREF="terminal_interface-curses-trace__adb.htm#ref_43_40">Trace</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-trace__ads.htm#ref_42_35">Trace</A>);
- <b>pragma</b> Warnings (Off);
- <b>type</b> <span class="symbol"><A NAME="ref_46_9">Trace_Attribute_Set</A></span> <b>is</b>
+ <b>type</b> <span class="symbol"><A NAME="ref_45_9">Trace_Attribute_Set</A></span> <b>is</b>
<b>record</b>
- <span class="symbol"><A NAME="ref_48_10">Times</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_49_10">Tputs</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_50_10">Update</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_51_10">Cursor_Move</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_52_10">Character_Output</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_53_10">Calls</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_54_10">Virtual_Puts</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_55_10">Input_Events</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_56_10">TTY_State</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_57_10">Internal_Calls</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_58_10">Character_Calls</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_59_10">Termcap_TermInfo</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_60_10">Attributes_And_Colors</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_47_10">Times</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_48_10">Tputs</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_49_10">Update</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_50_10">Cursor_Move</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_51_10">Character_Output</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_52_10">Calls</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_53_10">Virtual_Puts</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_54_10">Input_Events</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_55_10">TTY_State</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_56_10">Internal_Calls</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_57_10">Character_Calls</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_58_10">Termcap_TermInfo</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_59_10">Attribute_Color</A></span> : Boolean;
<b>end</b> <b>record</b>;
- <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A>);
+ <b>pragma</b> Convention (C_Pass_By_Copy, <A HREF="terminal_interface-curses-trace__ads.htm#ref_45_9">Trace_Attribute_Set</A>);
- <b>for</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A> <b>use</b>
+ <b>for</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_45_9">Trace_Attribute_Set</A> <b>use</b>
<b>record</b>
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_48_10">Times</A> <b>at</b> 0 <b>range</b> 0 .. 0;
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_49_10">Tputs</A> <b>at</b> 0 <b>range</b> 1 .. 1;
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_50_10">Update</A> <b>at</b> 0 <b>range</b> 2 .. 2;
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_51_10">Cursor_Move</A> <b>at</b> 0 <b>range</b> 3 .. 3;
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_52_10">Character_Output</A> <b>at</b> 0 <b>range</b> 4 .. 4;
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_53_10">Calls</A> <b>at</b> 0 <b>range</b> 5 .. 5;
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_54_10">Virtual_Puts</A> <b>at</b> 0 <b>range</b> 6 .. 6;
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_55_10">Input_Events</A> <b>at</b> 0 <b>range</b> 7 .. 7;
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_56_10">TTY_State</A> <b>at</b> 0 <b>range</b> 8 .. 8;
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_57_10">Internal_Calls</A> <b>at</b> 0 <b>range</b> 9 .. 9;
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_58_10">Character_Calls</A> <b>at</b> 0 <b>range</b> 10 .. 10;
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_59_10">Termcap_TermInfo</A> <b>at</b> 0 <b>range</b> 11 .. 11;
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_60_10">Attributes_And_Colors</A> <b>at</b> 0 <b>range</b> 12 .. 12;
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_47_10">Times</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_356_4">TRACE_TIMES_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_357_4">TRACE_TIMES_Last</A>;
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_48_10">Tputs</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_358_4">TRACE_TPUTS_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_359_4">TRACE_TPUTS_Last</A>;
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_49_10">Update</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_360_4">TRACE_UPDATE_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_361_4">TRACE_UPDATE_Last</A>;
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_50_10">Cursor_Move</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_362_4">TRACE_MOVE_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_363_4">TRACE_MOVE_Last</A>;
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_51_10">Character_Output</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_364_4">TRACE_CHARPUT_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_365_4">TRACE_CHARPUT_Last</A>;
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_52_10">Calls</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_366_4">TRACE_CALLS_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_367_4">TRACE_CALLS_Last</A>;
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_53_10">Virtual_Puts</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_368_4">TRACE_VIRTPUT_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_369_4">TRACE_VIRTPUT_Last</A>;
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_54_10">Input_Events</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_370_4">TRACE_IEVENT_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_371_4">TRACE_IEVENT_Last</A>;
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_55_10">TTY_State</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_372_4">TRACE_BITS_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_373_4">TRACE_BITS_Last</A>;
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_56_10">Internal_Calls</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_374_4">TRACE_ICALLS_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_375_4">TRACE_ICALLS_Last</A>;
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_57_10">Character_Calls</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_376_4">TRACE_CCALLS_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_377_4">TRACE_CCALLS_Last</A>;
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_58_10">Termcap_TermInfo</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_378_4">TRACE_DATABASE_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_379_4">TRACE_DATABASE_Last</A>;
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_59_10">Attribute_Color</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_380_4">TRACE_ATTRS_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_381_4">TRACE_ATTRS_Last</A>;
<b>end</b> <b>record</b>;
- <b>pragma</b> Warnings (Off); <b>for</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A>'Size <b>use</b> 32;
- <b>pragma</b> Warnings (On);
- <span class="comment"><EM>-- Please note: this rep. clause is generated and may be</EM></span>
- <span class="comment"><EM>-- different on your system.</EM></span>
-
+ <b>pragma</b> Warnings (Off);
+ <b>for</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_45_9">Trace_Attribute_Set</A>'Size <b>use</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_382_4">Trace_Size</A>;
<b>pragma</b> Warnings (On);
- <span class="symbol"><A NAME="ref_87_4">Trace_Disable</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A> := (<b>others</b> =&gt; False);
+ <span class="symbol"><A NAME="ref_96_4">Trace_Disable</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_45_9">Trace_Attribute_Set</A> := (<b>others</b> =&gt; False);
- <span class="symbol"><A NAME="ref_89_4">Trace_Ordinary</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A> :=
- (<A HREF="terminal_interface-curses-trace__ads.htm#ref_48_10">Times</A> =&gt; True,
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_49_10">Tputs</A> =&gt; True,
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_50_10">Update</A> =&gt; True,
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_51_10">Cursor_Move</A> =&gt; True,
- <A HREF="terminal_interface-curses-trace__ads.htm#ref_52_10">Character_Output</A> =&gt; True,
+ <span class="symbol"><A NAME="ref_98_4">Trace_Ordinary</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_45_9">Trace_Attribute_Set</A> :=
+ (<A HREF="terminal_interface-curses-trace__ads.htm#ref_47_10">Times</A> =&gt; True,
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_48_10">Tputs</A> =&gt; True,
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_49_10">Update</A> =&gt; True,
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_50_10">Cursor_Move</A> =&gt; True,
+ <A HREF="terminal_interface-curses-trace__ads.htm#ref_51_10">Character_Output</A> =&gt; True,
<b>others</b> =&gt; False);
- <span class="symbol"><A NAME="ref_96_4">Trace_Maximum</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A> := (<b>others</b> =&gt; True);
+ <span class="symbol"><A NAME="ref_105_4">Trace_Maximum</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_45_9">Trace_Attribute_Set</A> := (<b>others</b> =&gt; True);
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
@@ -118,16 +127,16 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_1"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_105_14" HREF="terminal_interface-curses-trace__adb.htm#ref_53_14">Trace_On</A></span> (<span class="symbol"><A NAME="ref_105_24" HREF="terminal_interface-curses-trace__adb.htm#ref_53_24">x</A></span> : <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_114_14" HREF="terminal_interface-curses-trace__adb.htm#ref_45_14">Trace_On</A></span> (<span class="symbol"><A NAME="ref_114_24" HREF="terminal_interface-curses-trace__adb.htm#ref_45_24">x</A></span> : <A HREF="terminal_interface-curses-trace__ads.htm#ref_45_9">Trace_Attribute_Set</A>);
<span class="comment"><EM>-- The debugging library has trace.</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_2"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_109_14" HREF="terminal_interface-curses-trace__adb.htm#ref_64_14">Trace_Put</A></span> (<span class="symbol"><A NAME="ref_109_25" HREF="terminal_interface-curses-trace__adb.htm#ref_64_25">str</A></span> : String);
+ <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_118_14" HREF="terminal_interface-curses-trace__adb.htm#ref_52_14">Trace_Put</A></span> (<span class="symbol"><A NAME="ref_118_25" HREF="terminal_interface-curses-trace__adb.htm#ref_52_25">str</A></span> : String);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_trace.3x.html">_tracef()</A></EM></span>
- <span class="symbol"><A NAME="ref_112_4">Current_Trace_Setting</A></span> : <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A>;
- <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-trace__ads.htm#ref_112_4">Current_Trace_Setting</A>, "_nc_tracing");
+ <span class="symbol"><A NAME="ref_121_4">Current_Trace_Setting</A></span> : <A HREF="terminal_interface-curses-trace__ads.htm#ref_45_9">Trace_Attribute_Set</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-trace__ads.htm#ref_121_4">Current_Trace_Setting</A>, "_nc_tracing");
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-trace__ads.htm#ref_42_35">Trace</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-trace__ads.htm#ref_42_35">Trace</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses__adb.htm b/doc/html/ada/terminal_interface-curses__adb.htm
index a54b7eea20bb..067a9178d415 100644
--- a/doc/html/ada/terminal_interface-curses__adb.htm
+++ b/doc/html/ada/terminal_interface-curses__adb.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- B O D Y --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2014,2018 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,2429 +52,2428 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.8 @</EM></span>
-<span class="comment"><EM>-- @Date: 2011/03/22 23:02:14 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.15 @</EM></span>
+<span class="comment"><EM>-- @Date: 2018/07/07 23:28:45 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<b>with</b> System;
-<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.Strings;
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings;
<b>with</b> Ada.Characters.Handling; <b>use</b> Ada.Characters.Handling;
<b>with</b> Ada.Strings.Fixed;
-<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<span class="symbol"><A NAME="ref_50_33" HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A></span> <b>is</b>
+<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<span class="symbol"><A NAME="ref_50_33" HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A></span> <b>is</b>
- <b>use</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_35">Aux</A>;
- <b>use</b> <b>type</b> System.Bit_Order;
+ <b>use</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_45_35">Aux</A>;
- <b>package</b> <span class="symbol"><A NAME="ref_55_12">ASF</A></span> <b>renames</b> Ada.Strings.Fixed;
+ <b>package</b> <span class="symbol"><A NAME="ref_54_12">ASF</A></span> <b>renames</b> Ada.Strings.Fixed;
<b>type</b> chtype_array <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#ref_353_9">Attributed_Character</A>;
+ <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Convention (C, chtype_array);
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_62_13" HREF="terminal_interface-curses__ads.htm#ref_1617_13">Key_Name</A></span> (<span class="symbol"><A NAME="ref_62_23" HREF="terminal_interface-curses__ads.htm#ref_1617_23">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A>) <b>return</b> String
+ <b>function</b> <span class="symbol"><A NAME="ref_61_13" HREF="terminal_interface-curses__ads.htm#ref_1786_13">Key_Name</A></span> (<span class="symbol"><A NAME="ref_61_23" HREF="terminal_interface-curses__ads.htm#ref_1786_23">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A>) <b>return</b> String
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_64_16">Keyname</A></span> (<span class="symbol"><A NAME="ref_64_25" HREF="terminal_interface-curses__adb.htm#ref_64_16">K</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> chars_ptr;
+ <b>function</b> <span class="symbol"><A NAME="ref_63_16">Keyname</A></span> (<span class="symbol"><A NAME="ref_63_25" HREF="terminal_interface-curses__adb.htm#ref_63_16">K</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> chars_ptr;
<b>pragma</b> Import (C, Keyname, "keyname");
- <span class="symbol"><A NAME="ref_67_7">Ch</A></span> : Character;
+ <span class="symbol"><A NAME="ref_66_7">Ch</A></span> : Character;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1617_23">Key</A> &lt;= Character'Pos (Character'Last) <b>then</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_67_7">Ch</A> := Character'Val (<A HREF="terminal_interface-curses__ads.htm#ref_1617_23">Key</A>);
- <b>if</b> Is_Control (<A HREF="terminal_interface-curses__adb.htm#ref_67_7">Ch</A>) <b>then</b>
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1628_13">Un_Control</A> (<A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>'(<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_67_7">Ch</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>));
- <b>elsif</b> Is_Graphic (<A HREF="terminal_interface-curses__adb.htm#ref_67_7">Ch</A>) <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1786_23">Key</A> &lt;= Character'Pos (Character'Last) <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#ref_66_7">Ch</A> := Character'Val (<A HREF="terminal_interface-curses__ads.htm#ref_1786_23">Key</A>);
+ <b>if</b> Is_Control (<A HREF="terminal_interface-curses__adb.htm#ref_66_7">Ch</A>) <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1797_13">Un_Control</A> (<A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>'(<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_66_7">Ch</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>));
+ <b>elsif</b> Is_Graphic (<A HREF="terminal_interface-curses__adb.htm#ref_66_7">Ch</A>) <b>then</b>
<b>declare</b>
- <span class="symbol"><A NAME="ref_77_16">S</A></span> : String (1 .. 1);
+ <span class="symbol"><A NAME="ref_76_16">S</A></span> : String (1 .. 1);
<b>begin</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_77_16">S</A> (1) := <A HREF="terminal_interface-curses__adb.htm#ref_67_7">Ch</A>;
- <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_77_16">S</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_76_16">S</A> (1) := <A HREF="terminal_interface-curses__adb.htm#ref_66_7">Ch</A>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_76_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#ref_121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_64_16">Keyname</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1617_23">Key</A>)));
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_63_16">Keyname</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1786_23">Key</A>)));
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1617_13">Key_Name</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1786_13">Key_Name</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_90_14" HREF="terminal_interface-curses__ads.htm#ref_1611_14">Key_Name</A></span> (<span class="symbol"><A NAME="ref_90_24" HREF="terminal_interface-curses__ads.htm#ref_1611_24">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A>;
- <span class="symbol"><A NAME="ref_91_24" HREF="terminal_interface-curses__ads.htm#ref_1612_24">Name</A></span> : <b>out</b> String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_89_14" HREF="terminal_interface-curses__ads.htm#ref_1780_14">Key_Name</A></span> (<span class="symbol"><A NAME="ref_89_24" HREF="terminal_interface-curses__ads.htm#ref_1780_24">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A>;
+ <span class="symbol"><A NAME="ref_90_24" HREF="terminal_interface-curses__ads.htm#ref_1781_24">Name</A></span> : <b>out</b> String)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_55_12">ASF</A>.Move (<A HREF="terminal_interface-curses__ads.htm#ref_1617_13">Key_Name</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1611_24">Key</A>), <A HREF="terminal_interface-curses__ads.htm#ref_1612_24">Name</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1611_14">Key_Name</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_54_12">ASF</A>.Move (<A HREF="terminal_interface-curses__ads.htm#ref_1786_13">Key_Name</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1780_24">Key</A>), <A HREF="terminal_interface-curses__ads.htm#ref_1781_24">Name</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1780_14">Key_Name</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_98_14" HREF="terminal_interface-curses__ads.htm#ref_487_14">Init_Screen</A></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_97_14" HREF="terminal_interface-curses__ads.htm#ref_656_14">Init_Screen</A></span>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_100_16">Initscr</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_99_16">Initscr</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>pragma</b> Import (C, Initscr, "initscr");
- <span class="symbol"><A NAME="ref_103_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="symbol"><A NAME="ref_102_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_103_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_100_16">Initscr</A>;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_103_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_58_4">Null_Window</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_102_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_99_16">Initscr</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_102_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_56_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_14">Init_Screen</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_656_14">Init_Screen</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_111_14" HREF="terminal_interface-curses__ads.htm#ref_496_14">End_Windows</A></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_110_14" HREF="terminal_interface-curses__ads.htm#ref_665_14">End_Windows</A></span>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_113_16">Endwin</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_112_16">Endwin</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Endwin, "endwin");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_113_16">Endwin</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_112_16">Endwin</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_496_14">End_Windows</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_665_14">End_Windows</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_121_13" HREF="terminal_interface-curses__ads.htm#ref_503_13">Is_End_Window</A></span> <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_120_13" HREF="terminal_interface-curses__ads.htm#ref_672_13">Is_End_Window</A></span> <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_123_16">Isendwin</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_122_16">Isendwin</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Import (C, Isendwin, "isendwin");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_123_16">Isendwin</A> = <A HREF="terminal_interface-curses__ads.htm#ref_1926_4">Curses_Bool_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_122_16">Isendwin</A> = <A HREF="terminal_interface-curses__ads.htm#ref_2100_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> <A HREF="terminal_interface-curses__ads.htm#ref_503_13">Is_End_Window</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_672_13">Is_End_Window</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_133_14" HREF="terminal_interface-curses__ads.htm#ref_512_14">Move_Cursor</A></span> (<span class="symbol"><A NAME="ref_133_27" HREF="terminal_interface-curses__ads.htm#ref_512_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_134_27" HREF="terminal_interface-curses__ads.htm#ref_513_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_135_27" HREF="terminal_interface-curses__ads.htm#ref_514_27">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>)
- <b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_137_16">Wmove</A></span> (<span class="symbol"><A NAME="ref_137_23" HREF="terminal_interface-curses__adb.htm#ref_137_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_138_23" HREF="terminal_interface-curses__adb.htm#ref_137_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_139_23" HREF="terminal_interface-curses__adb.htm#ref_137_16">Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>
- ) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_132_14" HREF="terminal_interface-curses__ads.htm#ref_681_14">Move_Cursor</A></span> (<span class="symbol"><A NAME="ref_132_27" HREF="terminal_interface-curses__ads.htm#ref_681_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_133_27" HREF="terminal_interface-curses__ads.htm#ref_682_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_134_27" HREF="terminal_interface-curses__ads.htm#ref_683_27">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>)
+ <b>is</b>
+ <b>function</b> <span class="symbol"><A NAME="ref_136_16">Wmove</A></span> (<span class="symbol"><A NAME="ref_136_23" HREF="terminal_interface-curses__adb.htm#ref_136_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_137_23" HREF="terminal_interface-curses__adb.htm#ref_136_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_138_23" HREF="terminal_interface-curses__adb.htm#ref_136_16">Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>
+ ) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wmove, "wmove");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_137_16">Wmove</A> (<A HREF="terminal_interface-curses__ads.htm#ref_512_27">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_513_27">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_514_27">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_136_16">Wmove</A> (<A HREF="terminal_interface-curses__ads.htm#ref_681_27">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_682_27">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_683_27">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_512_14">Move_Cursor</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_681_14">Move_Cursor</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_148_14" HREF="terminal_interface-curses__ads.htm#ref_524_14">Add</A></span> (<span class="symbol"><A NAME="ref_148_19" HREF="terminal_interface-curses__ads.htm#ref_524_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_149_19" HREF="terminal_interface-curses__ads.htm#ref_525_19">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_147_14" HREF="terminal_interface-curses__ads.htm#ref_693_14">Add</A></span> (<span class="symbol"><A NAME="ref_147_19" HREF="terminal_interface-curses__ads.htm#ref_693_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_148_19" HREF="terminal_interface-curses__ads.htm#ref_694_19">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_151_16">Waddch</A></span> (<span class="symbol"><A NAME="ref_151_24" HREF="terminal_interface-curses__adb.htm#ref_151_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_152_24" HREF="terminal_interface-curses__adb.htm#ref_151_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_150_16">Waddch</A></span> (<span class="symbol"><A NAME="ref_150_24" HREF="terminal_interface-curses__adb.htm#ref_150_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_151_24" HREF="terminal_interface-curses__adb.htm#ref_150_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Waddch, "waddch");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_151_16">Waddch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_524_19">Win</A>, AttrChar_To_Chtype (<A HREF="terminal_interface-curses__ads.htm#ref_525_19">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_150_16">Waddch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_693_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_694_19">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_524_14">Add</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_693_14">Add</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_160_14" HREF="terminal_interface-curses__ads.htm#ref_529_14">Add</A></span> (<span class="symbol"><A NAME="ref_160_19" HREF="terminal_interface-curses__ads.htm#ref_529_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_161_19" HREF="terminal_interface-curses__ads.htm#ref_530_19">Ch</A></span> : Character)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_159_14" HREF="terminal_interface-curses__ads.htm#ref_698_14">Add</A></span> (<span class="symbol"><A NAME="ref_159_19" HREF="terminal_interface-curses__ads.htm#ref_698_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_160_19" HREF="terminal_interface-curses__ads.htm#ref_699_19">Ch</A></span> : Character)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_524_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#ref_529_19">Win</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>'(<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_530_19">Ch</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>));
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_529_14">Add</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_693_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#ref_698_19">Win</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>'(<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_699_19">Ch</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>));
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_698_14">Add</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_170_14" HREF="terminal_interface-curses__ads.htm#ref_535_14">Add</A></span>
- (<span class="symbol"><A NAME="ref_171_7" HREF="terminal_interface-curses__ads.htm#ref_536_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_172_7" HREF="terminal_interface-curses__ads.htm#ref_537_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_173_7" HREF="terminal_interface-curses__ads.htm#ref_538_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_174_7" HREF="terminal_interface-curses__ads.htm#ref_539_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_169_14" HREF="terminal_interface-curses__ads.htm#ref_704_14">Add</A></span>
+ (<span class="symbol"><A NAME="ref_170_7" HREF="terminal_interface-curses__ads.htm#ref_705_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_171_7" HREF="terminal_interface-curses__ads.htm#ref_706_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_172_7" HREF="terminal_interface-curses__ads.htm#ref_707_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_173_7" HREF="terminal_interface-curses__ads.htm#ref_708_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_176_16">mvwaddch</A></span> (<span class="symbol"><A NAME="ref_176_26" HREF="terminal_interface-curses__adb.htm#ref_176_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_177_26" HREF="terminal_interface-curses__adb.htm#ref_176_16">Y</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_178_26" HREF="terminal_interface-curses__adb.htm#ref_176_16">X</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_179_26" HREF="terminal_interface-curses__adb.htm#ref_176_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_175_16">mvwaddch</A></span> (<span class="symbol"><A NAME="ref_175_26" HREF="terminal_interface-curses__adb.htm#ref_175_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_176_26" HREF="terminal_interface-curses__adb.htm#ref_175_16">Y</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_177_26" HREF="terminal_interface-curses__adb.htm#ref_175_16">X</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_178_26" HREF="terminal_interface-curses__adb.htm#ref_175_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, mvwaddch, "mvwaddch");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_176_16">mvwaddch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_536_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_537_7">Line</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_538_7">Column</A>),
- AttrChar_To_Chtype (<A HREF="terminal_interface-curses__ads.htm#ref_539_7">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_175_16">mvwaddch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_705_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_706_7">Line</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_707_7">Column</A>),
+ <A HREF="terminal_interface-curses__ads.htm#ref_708_7">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_535_14">Add</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_704_14">Add</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_189_14" HREF="terminal_interface-curses__ads.htm#ref_543_14">Add</A></span>
- (<span class="symbol"><A NAME="ref_190_7" HREF="terminal_interface-curses__ads.htm#ref_544_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_191_7" HREF="terminal_interface-curses__ads.htm#ref_545_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_192_7" HREF="terminal_interface-curses__ads.htm#ref_546_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_193_7" HREF="terminal_interface-curses__ads.htm#ref_547_7">Ch</A></span> : Character)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_189_14" HREF="terminal_interface-curses__ads.htm#ref_712_14">Add</A></span>
+ (<span class="symbol"><A NAME="ref_190_7" HREF="terminal_interface-curses__ads.htm#ref_713_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_191_7" HREF="terminal_interface-curses__ads.htm#ref_714_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_192_7" HREF="terminal_interface-curses__ads.htm#ref_715_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_193_7" HREF="terminal_interface-curses__ads.htm#ref_716_7">Ch</A></span> : Character)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_535_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#ref_544_7">Win</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_545_7">Line</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_546_7">Column</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>'(<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_547_7">Ch</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>));
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_543_14">Add</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_704_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#ref_713_7">Win</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_714_7">Line</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_715_7">Column</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>'(<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_716_7">Ch</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>));
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_712_14">Add</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_204_14" HREF="terminal_interface-curses__ads.htm#ref_552_14">Add_With_Immediate_Echo</A></span>
- (<span class="symbol"><A NAME="ref_205_7" HREF="terminal_interface-curses__ads.htm#ref_553_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_206_7" HREF="terminal_interface-curses__ads.htm#ref_554_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_204_14" HREF="terminal_interface-curses__ads.htm#ref_721_14">Add_With_Immediate_Echo</A></span>
+ (<span class="symbol"><A NAME="ref_205_7" HREF="terminal_interface-curses__ads.htm#ref_722_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_206_7" HREF="terminal_interface-curses__ads.htm#ref_723_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_208_16">Wechochar</A></span> (<span class="symbol"><A NAME="ref_208_27" HREF="terminal_interface-curses__adb.htm#ref_208_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_209_27" HREF="terminal_interface-curses__adb.htm#ref_208_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_208_16">Wechochar</A></span> (<span class="symbol"><A NAME="ref_208_27" HREF="terminal_interface-curses__adb.htm#ref_208_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_209_27" HREF="terminal_interface-curses__adb.htm#ref_208_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wechochar, "wechochar");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_208_16">Wechochar</A> (<A HREF="terminal_interface-curses__ads.htm#ref_553_7">Win</A>, AttrChar_To_Chtype (<A HREF="terminal_interface-curses__ads.htm#ref_554_7">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_208_16">Wechochar</A> (<A HREF="terminal_interface-curses__ads.htm#ref_722_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_723_7">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_552_14">Add_With_Immediate_Echo</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_721_14">Add_With_Immediate_Echo</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_217_14" HREF="terminal_interface-curses__ads.htm#ref_558_14">Add_With_Immediate_Echo</A></span>
- (<span class="symbol"><A NAME="ref_218_7" HREF="terminal_interface-curses__ads.htm#ref_559_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_219_7" HREF="terminal_interface-curses__ads.htm#ref_560_7">Ch</A></span> : Character)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_217_14" HREF="terminal_interface-curses__ads.htm#ref_727_14">Add_With_Immediate_Echo</A></span>
+ (<span class="symbol"><A NAME="ref_218_7" HREF="terminal_interface-curses__ads.htm#ref_728_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_219_7" HREF="terminal_interface-curses__ads.htm#ref_729_7">Ch</A></span> : Character)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_552_14">Add_With_Immediate_Echo</A>
- (<A HREF="terminal_interface-curses__ads.htm#ref_559_7">Win</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>'(<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_560_7">Ch</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>));
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_558_14">Add_With_Immediate_Echo</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_721_14">Add_With_Immediate_Echo</A>
+ (<A HREF="terminal_interface-curses__ads.htm#ref_728_7">Win</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>'(<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_729_7">Ch</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>));
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_727_14">Add_With_Immediate_Echo</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_229_13" HREF="terminal_interface-curses__ads.htm#ref_570_13">Create</A></span> (<span class="symbol"><A NAME="ref_229_21" HREF="terminal_interface-curses__ads.htm#ref_571_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_230_21" HREF="terminal_interface-curses__ads.htm#ref_572_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_231_21" HREF="terminal_interface-curses__ads.htm#ref_573_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_232_21" HREF="terminal_interface-curses__ads.htm#ref_574_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>
- <b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_234_16">Newwin</A></span> (<span class="symbol"><A NAME="ref_234_24" HREF="terminal_interface-curses__adb.htm#ref_234_16">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_235_24" HREF="terminal_interface-curses__adb.htm#ref_234_16">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_236_24" HREF="terminal_interface-curses__adb.htm#ref_234_16">First_Line_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_237_24" HREF="terminal_interface-curses__adb.htm#ref_234_16">First_Column_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_229_13" HREF="terminal_interface-curses__ads.htm#ref_739_13">Create</A></span> (<span class="symbol"><A NAME="ref_229_21" HREF="terminal_interface-curses__ads.htm#ref_740_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_230_21" HREF="terminal_interface-curses__ads.htm#ref_741_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_231_21" HREF="terminal_interface-curses__ads.htm#ref_742_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_232_21" HREF="terminal_interface-curses__ads.htm#ref_743_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>
+ <b>is</b>
+ <b>function</b> <span class="symbol"><A NAME="ref_234_16">Newwin</A></span> (<span class="symbol"><A NAME="ref_234_24" HREF="terminal_interface-curses__adb.htm#ref_234_16">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_235_24" HREF="terminal_interface-curses__adb.htm#ref_234_16">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_236_24" HREF="terminal_interface-curses__adb.htm#ref_234_16">First_Line_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_237_24" HREF="terminal_interface-curses__adb.htm#ref_234_16">First_Column_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>pragma</b> Import (C, Newwin, "newwin");
- <span class="symbol"><A NAME="ref_240_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="symbol"><A NAME="ref_240_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_240_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_234_16">Newwin</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_571_7">Number_Of_Lines</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_572_7">Number_Of_Columns</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_573_7">First_Line_Position</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_574_7">First_Column_Position</A>));
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_240_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_58_4">Null_Window</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_240_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_234_16">Newwin</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_740_7">Number_Of_Lines</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_741_7">Number_Of_Columns</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_742_7">First_Line_Position</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_743_7">First_Column_Position</A>));
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_240_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_56_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
<b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_240_7">W</A>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_570_13">Create</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_739_13">Create</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_252_14" HREF="terminal_interface-curses__ads.htm#ref_589_14">Delete</A></span> (<span class="symbol"><A NAME="ref_252_22" HREF="terminal_interface-curses__ads.htm#ref_589_22">Win</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_252_14" HREF="terminal_interface-curses__ads.htm#ref_758_14">Delete</A></span> (<span class="symbol"><A NAME="ref_252_22" HREF="terminal_interface-curses__ads.htm#ref_758_22">Win</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_254_16">Wdelwin</A></span> (<span class="symbol"><A NAME="ref_254_25" HREF="terminal_interface-curses__adb.htm#ref_254_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_254_16">Wdelwin</A></span> (<span class="symbol"><A NAME="ref_254_25" HREF="terminal_interface-curses__adb.htm#ref_254_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wdelwin, "delwin");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_254_16">Wdelwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_589_22">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_254_16">Wdelwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_758_22">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses__ads.htm#ref_589_22">Win</A> := <A HREF="terminal_interface-curses__ads.htm#ref_58_4">Null_Window</A>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_589_14">Delete</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_758_22">Win</A> := <A HREF="terminal_interface-curses__ads.htm#ref_56_4">Null_Window</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_758_14">Delete</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_263_13" HREF="terminal_interface-curses__ads.htm#ref_595_13">Sub_Window</A></span>
- (<span class="symbol"><A NAME="ref_264_7" HREF="terminal_interface-curses__ads.htm#ref_596_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_265_7" HREF="terminal_interface-curses__ads.htm#ref_597_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_266_7" HREF="terminal_interface-curses__ads.htm#ref_598_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_267_7" HREF="terminal_interface-curses__ads.htm#ref_599_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_268_7" HREF="terminal_interface-curses__ads.htm#ref_600_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_263_13" HREF="terminal_interface-curses__ads.htm#ref_764_13">Sub_Window</A></span>
+ (<span class="symbol"><A NAME="ref_264_7" HREF="terminal_interface-curses__ads.htm#ref_765_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_265_7" HREF="terminal_interface-curses__ads.htm#ref_766_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_266_7" HREF="terminal_interface-curses__ads.htm#ref_767_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_267_7" HREF="terminal_interface-curses__ads.htm#ref_768_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_268_7" HREF="terminal_interface-curses__ads.htm#ref_769_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>
<b>is</b>
<b>function</b> <span class="symbol"><A NAME="ref_270_16">Subwin</A></span>
- (<span class="symbol"><A NAME="ref_271_10" HREF="terminal_interface-curses__adb.htm#ref_270_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_272_10" HREF="terminal_interface-curses__adb.htm#ref_270_16">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_273_10" HREF="terminal_interface-curses__adb.htm#ref_270_16">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_274_10" HREF="terminal_interface-curses__adb.htm#ref_270_16">First_Line_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_275_10" HREF="terminal_interface-curses__adb.htm#ref_270_16">First_Column_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_271_10" HREF="terminal_interface-curses__adb.htm#ref_270_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_272_10" HREF="terminal_interface-curses__adb.htm#ref_270_16">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_273_10" HREF="terminal_interface-curses__adb.htm#ref_270_16">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_274_10" HREF="terminal_interface-curses__adb.htm#ref_270_16">First_Line_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_275_10" HREF="terminal_interface-curses__adb.htm#ref_270_16">First_Column_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>pragma</b> Import (C, Subwin, "subwin");
- <span class="symbol"><A NAME="ref_278_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="symbol"><A NAME="ref_278_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_278_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_270_16">Subwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_596_7">Win</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_597_7">Number_Of_Lines</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_598_7">Number_Of_Columns</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_599_7">First_Line_Position</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_600_7">First_Column_Position</A>));
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_278_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_58_4">Null_Window</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_278_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_270_16">Subwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_765_7">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_766_7">Number_Of_Lines</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_767_7">Number_Of_Columns</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_768_7">First_Line_Position</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_769_7">First_Column_Position</A>));
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_278_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_56_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
<b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_278_7">W</A>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_595_13">Sub_Window</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_764_13">Sub_Window</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_291_13" HREF="terminal_interface-curses__ads.htm#ref_605_13">Derived_Window</A></span>
- (<span class="symbol"><A NAME="ref_292_7" HREF="terminal_interface-curses__ads.htm#ref_606_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_293_7" HREF="terminal_interface-curses__ads.htm#ref_607_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_294_7" HREF="terminal_interface-curses__ads.htm#ref_608_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_295_7" HREF="terminal_interface-curses__ads.htm#ref_609_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_296_7" HREF="terminal_interface-curses__ads.htm#ref_610_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_291_13" HREF="terminal_interface-curses__ads.htm#ref_774_13">Derived_Window</A></span>
+ (<span class="symbol"><A NAME="ref_292_7" HREF="terminal_interface-curses__ads.htm#ref_775_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_293_7" HREF="terminal_interface-curses__ads.htm#ref_776_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_294_7" HREF="terminal_interface-curses__ads.htm#ref_777_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_295_7" HREF="terminal_interface-curses__ads.htm#ref_778_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_296_7" HREF="terminal_interface-curses__ads.htm#ref_779_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>
<b>is</b>
<b>function</b> <span class="symbol"><A NAME="ref_298_16">Derwin</A></span>
- (<span class="symbol"><A NAME="ref_299_10" HREF="terminal_interface-curses__adb.htm#ref_298_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_300_10" HREF="terminal_interface-curses__adb.htm#ref_298_16">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_301_10" HREF="terminal_interface-curses__adb.htm#ref_298_16">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_302_10" HREF="terminal_interface-curses__adb.htm#ref_298_16">First_Line_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_303_10" HREF="terminal_interface-curses__adb.htm#ref_298_16">First_Column_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ (<span class="symbol"><A NAME="ref_299_10" HREF="terminal_interface-curses__adb.htm#ref_298_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_300_10" HREF="terminal_interface-curses__adb.htm#ref_298_16">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_301_10" HREF="terminal_interface-curses__adb.htm#ref_298_16">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_302_10" HREF="terminal_interface-curses__adb.htm#ref_298_16">First_Line_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_303_10" HREF="terminal_interface-curses__adb.htm#ref_298_16">First_Column_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>pragma</b> Import (C, Derwin, "derwin");
- <span class="symbol"><A NAME="ref_306_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="symbol"><A NAME="ref_306_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_306_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_298_16">Derwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_606_7">Win</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_607_7">Number_Of_Lines</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_608_7">Number_Of_Columns</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_609_7">First_Line_Position</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_610_7">First_Column_Position</A>));
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_306_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_58_4">Null_Window</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_306_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_298_16">Derwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_775_7">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_776_7">Number_Of_Lines</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_777_7">Number_Of_Columns</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_778_7">First_Line_Position</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_779_7">First_Column_Position</A>));
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_306_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_56_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
<b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_306_7">W</A>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_605_13">Derived_Window</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_774_13">Derived_Window</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_319_13" HREF="terminal_interface-curses__ads.htm#ref_615_13">Duplicate</A></span> (<span class="symbol"><A NAME="ref_319_24" HREF="terminal_interface-curses__ads.htm#ref_615_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_319_13" HREF="terminal_interface-curses__ads.htm#ref_784_13">Duplicate</A></span> (<span class="symbol"><A NAME="ref_319_24" HREF="terminal_interface-curses__ads.htm#ref_784_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_321_16">Dupwin</A></span> (<span class="symbol"><A NAME="ref_321_24" HREF="terminal_interface-curses__adb.htm#ref_321_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_321_16">Dupwin</A></span> (<span class="symbol"><A NAME="ref_321_24" HREF="terminal_interface-curses__adb.htm#ref_321_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>pragma</b> Import (C, Dupwin, "dupwin");
- <span class="symbol"><A NAME="ref_324_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__adb.htm#ref_321_16">Dupwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_615_24">Win</A>);
+ <span class="symbol"><A NAME="ref_324_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__adb.htm#ref_321_16">Dupwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_784_24">Win</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_324_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_58_4">Null_Window</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_324_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_56_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
<b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_324_7">W</A>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_615_13">Duplicate</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_784_13">Duplicate</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_332_14" HREF="terminal_interface-curses__ads.htm#ref_620_14">Move_Window</A></span> (<span class="symbol"><A NAME="ref_332_27" HREF="terminal_interface-curses__ads.htm#ref_620_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_333_27" HREF="terminal_interface-curses__ads.htm#ref_621_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_334_27" HREF="terminal_interface-curses__ads.htm#ref_622_27">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_332_14" HREF="terminal_interface-curses__ads.htm#ref_789_14">Move_Window</A></span> (<span class="symbol"><A NAME="ref_332_27" HREF="terminal_interface-curses__ads.htm#ref_789_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_333_27" HREF="terminal_interface-curses__ads.htm#ref_790_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_334_27" HREF="terminal_interface-curses__ads.htm#ref_791_27">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_336_16">Mvwin</A></span> (<span class="symbol"><A NAME="ref_336_23" HREF="terminal_interface-curses__adb.htm#ref_336_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_337_23" HREF="terminal_interface-curses__adb.htm#ref_336_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_338_23" HREF="terminal_interface-curses__adb.htm#ref_336_16">Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_336_16">Mvwin</A></span> (<span class="symbol"><A NAME="ref_336_23" HREF="terminal_interface-curses__adb.htm#ref_336_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_337_23" HREF="terminal_interface-curses__adb.htm#ref_336_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_338_23" HREF="terminal_interface-curses__adb.htm#ref_336_16">Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Mvwin, "mvwin");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_336_16">Mvwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_620_27">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_621_27">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_622_27">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_336_16">Mvwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_789_27">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_790_27">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_791_27">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_620_14">Move_Window</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_789_14">Move_Window</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_346_14" HREF="terminal_interface-curses__ads.htm#ref_627_14">Move_Derived_Window</A></span> (<span class="symbol"><A NAME="ref_346_35" HREF="terminal_interface-curses__ads.htm#ref_627_35">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_347_35" HREF="terminal_interface-curses__ads.htm#ref_628_35">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_348_35" HREF="terminal_interface-curses__ads.htm#ref_629_35">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_346_14" HREF="terminal_interface-curses__ads.htm#ref_796_14">Move_Derived_Window</A></span> (<span class="symbol"><A NAME="ref_346_35" HREF="terminal_interface-curses__ads.htm#ref_796_35">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_347_35" HREF="terminal_interface-curses__ads.htm#ref_797_35">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_348_35" HREF="terminal_interface-curses__ads.htm#ref_798_35">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_350_16">Mvderwin</A></span> (<span class="symbol"><A NAME="ref_350_26" HREF="terminal_interface-curses__adb.htm#ref_350_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_351_26" HREF="terminal_interface-curses__adb.htm#ref_350_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_352_26" HREF="terminal_interface-curses__adb.htm#ref_350_16">Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_350_16">Mvderwin</A></span> (<span class="symbol"><A NAME="ref_350_26" HREF="terminal_interface-curses__adb.htm#ref_350_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_351_26" HREF="terminal_interface-curses__adb.htm#ref_350_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_352_26" HREF="terminal_interface-curses__adb.htm#ref_350_16">Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Mvderwin, "mvderwin");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_350_16">Mvderwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_627_35">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_628_35">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_629_35">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_350_16">Mvderwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_796_35">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_797_35">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_798_35">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_627_14">Move_Derived_Window</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_796_14">Move_Derived_Window</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_360_14" HREF="terminal_interface-curses__ads.htm#ref_644_14">Set_Synch_Mode</A></span> (<span class="symbol"><A NAME="ref_360_30" HREF="terminal_interface-curses__ads.htm#ref_644_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_361_30" HREF="terminal_interface-curses__ads.htm#ref_645_30">Mode</A></span> : Boolean := False)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_360_14" HREF="terminal_interface-curses__ads.htm#ref_813_14">Set_Synch_Mode</A></span> (<span class="symbol"><A NAME="ref_360_30" HREF="terminal_interface-curses__ads.htm#ref_813_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_361_30" HREF="terminal_interface-curses__ads.htm#ref_814_30">Mode</A></span> : Boolean := False)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_363_16">Syncok</A></span> (<span class="symbol"><A NAME="ref_363_24" HREF="terminal_interface-curses__adb.htm#ref_363_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_364_24" HREF="terminal_interface-curses__adb.htm#ref_363_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_363_16">Syncok</A></span> (<span class="symbol"><A NAME="ref_363_24" HREF="terminal_interface-curses__adb.htm#ref_363_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_364_24" HREF="terminal_interface-curses__adb.htm#ref_363_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Syncok, "syncok");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_363_16">Syncok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_644_30">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_645_30">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_363_16">Syncok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_813_30">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_814_30">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_644_14">Set_Synch_Mode</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_813_14">Set_Synch_Mode</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_372_14" HREF="terminal_interface-curses__ads.htm#ref_654_14">Add</A></span> (<span class="symbol"><A NAME="ref_372_19" HREF="terminal_interface-curses__ads.htm#ref_654_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_373_19" HREF="terminal_interface-curses__ads.htm#ref_655_19">Str</A></span> : String;
- <span class="symbol"><A NAME="ref_374_19" HREF="terminal_interface-curses__ads.htm#ref_656_19">Len</A></span> : Integer := -1)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_372_14" HREF="terminal_interface-curses__ads.htm#ref_823_14">Add</A></span> (<span class="symbol"><A NAME="ref_372_19" HREF="terminal_interface-curses__ads.htm#ref_823_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_373_19" HREF="terminal_interface-curses__ads.htm#ref_824_19">Str</A></span> : String;
+ <span class="symbol"><A NAME="ref_374_19" HREF="terminal_interface-curses__ads.htm#ref_825_19">Len</A></span> : Integer := -1)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_376_16">Waddnstr</A></span> (<span class="symbol"><A NAME="ref_376_26" HREF="terminal_interface-curses__adb.htm#ref_376_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_376_16">Waddnstr</A></span> (<span class="symbol"><A NAME="ref_376_26" HREF="terminal_interface-curses__adb.htm#ref_376_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_377_26" HREF="terminal_interface-curses__adb.htm#ref_376_16">Str</A></span> : char_array;
- <span class="symbol"><A NAME="ref_378_26" HREF="terminal_interface-curses__adb.htm#ref_376_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := -1) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_378_26" HREF="terminal_interface-curses__adb.htm#ref_376_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := -1) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Waddnstr, "waddnstr");
- <span class="symbol"><A NAME="ref_381_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_655_19">Str</A>'Length);
+ <span class="symbol"><A NAME="ref_381_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_824_19">Str</A>'Length);
<span class="symbol"><A NAME="ref_382_7">Length</A></span> : size_t;
<b>begin</b>
- To_C (<A HREF="terminal_interface-curses__ads.htm#ref_655_19">Str</A>, <A HREF="terminal_interface-curses__adb.htm#ref_381_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_382_7">Length</A>);
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_376_16">Waddnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_654_19">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_381_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_656_19">Len</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ To_C (<A HREF="terminal_interface-curses__ads.htm#ref_824_19">Str</A>, <A HREF="terminal_interface-curses__adb.htm#ref_381_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_382_7">Length</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_376_16">Waddnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_823_19">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_381_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_825_19">Len</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_654_14">Add</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_823_14">Add</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_390_14" HREF="terminal_interface-curses__ads.htm#ref_663_14">Add</A></span>
- (<span class="symbol"><A NAME="ref_391_7" HREF="terminal_interface-curses__ads.htm#ref_663_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_392_7" HREF="terminal_interface-curses__ads.htm#ref_664_19">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_393_7" HREF="terminal_interface-curses__ads.htm#ref_665_19">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_394_7" HREF="terminal_interface-curses__ads.htm#ref_666_19">Str</A></span> : String;
- <span class="symbol"><A NAME="ref_395_7" HREF="terminal_interface-curses__ads.htm#ref_667_19">Len</A></span> : Integer := -1)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_390_14" HREF="terminal_interface-curses__ads.htm#ref_832_14">Add</A></span>
+ (<span class="symbol"><A NAME="ref_391_7" HREF="terminal_interface-curses__ads.htm#ref_832_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_392_7" HREF="terminal_interface-curses__ads.htm#ref_833_19">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_393_7" HREF="terminal_interface-curses__ads.htm#ref_834_19">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_394_7" HREF="terminal_interface-curses__ads.htm#ref_835_19">Str</A></span> : String;
+ <span class="symbol"><A NAME="ref_395_7" HREF="terminal_interface-curses__ads.htm#ref_836_19">Len</A></span> : Integer := -1)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_512_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_663_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_664_19">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_665_19">Column</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_654_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#ref_663_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_666_19">Str</A>, <A HREF="terminal_interface-curses__ads.htm#ref_667_19">Len</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_663_14">Add</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_681_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_832_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_833_19">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_834_19">Column</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_823_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#ref_832_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_835_19">Str</A>, <A HREF="terminal_interface-curses__ads.htm#ref_836_19">Len</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_832_14">Add</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_402_14" HREF="terminal_interface-curses__ads.htm#ref_678_14">Add</A></span>
- (<span class="symbol"><A NAME="ref_403_7" HREF="terminal_interface-curses__ads.htm#ref_678_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_404_7" HREF="terminal_interface-curses__ads.htm#ref_679_19">Str</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Attributed_String</A>;
- <span class="symbol"><A NAME="ref_405_7" HREF="terminal_interface-curses__ads.htm#ref_680_19">Len</A></span> : Integer := -1)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_402_14" HREF="terminal_interface-curses__ads.htm#ref_847_14">Add</A></span>
+ (<span class="symbol"><A NAME="ref_403_7" HREF="terminal_interface-curses__ads.htm#ref_847_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_404_7" HREF="terminal_interface-curses__ads.htm#ref_848_19">Str</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Attributed_String</A>;
+ <span class="symbol"><A NAME="ref_405_7" HREF="terminal_interface-curses__ads.htm#ref_849_19">Len</A></span> : Integer := -1)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_407_16">Waddchnstr</A></span> (<span class="symbol"><A NAME="ref_407_28" HREF="terminal_interface-curses__adb.htm#ref_407_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_407_16">Waddchnstr</A></span> (<span class="symbol"><A NAME="ref_407_28" HREF="terminal_interface-curses__adb.htm#ref_407_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="symbol"><A NAME="ref_408_28" HREF="terminal_interface-curses__adb.htm#ref_407_16">Str</A></span> : chtype_array;
- <span class="symbol"><A NAME="ref_409_28" HREF="terminal_interface-curses__adb.htm#ref_407_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := -1) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_409_28" HREF="terminal_interface-curses__adb.htm#ref_407_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := -1) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Waddchnstr, "waddchnstr");
- <span class="symbol"><A NAME="ref_412_7">Txt</A></span> : chtype_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_679_19">Str</A>'Length);
+ <span class="symbol"><A NAME="ref_412_7">Txt</A></span> : chtype_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_848_19">Str</A>'Length);
<b>begin</b>
- <b>for</b> <span class="symbol"><A NAME="ref_414_11">Length</A></span> <b>in</b> 1 .. size_t (<A HREF="terminal_interface-curses__ads.htm#ref_679_19">Str</A>'Length) <b>loop</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_412_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#ref_414_11">Length</A> - 1) := <A HREF="terminal_interface-curses__ads.htm#ref_679_19">Str</A> (Natural (<A HREF="terminal_interface-curses__adb.htm#ref_414_11">Length</A>));
+ <b>for</b> <span class="symbol"><A NAME="ref_414_11">Length</A></span> <b>in</b> 1 .. size_t (<A HREF="terminal_interface-curses__ads.htm#ref_848_19">Str</A>'Length) <b>loop</b>
+ <A HREF="terminal_interface-curses__adb.htm#ref_412_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#ref_414_11">Length</A> - 1) := <A HREF="terminal_interface-curses__ads.htm#ref_848_19">Str</A> (Natural (<A HREF="terminal_interface-curses__adb.htm#ref_414_11">Length</A>));
<b>end</b> <b>loop</b>;
- <A HREF="terminal_interface-curses__adb.htm#ref_412_7">Txt</A> (<A HREF="terminal_interface-curses__ads.htm#ref_679_19">Str</A>'Length) := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_407_16">Waddchnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_678_19">Win</A>,
+ <A HREF="terminal_interface-curses__adb.htm#ref_412_7">Txt</A> (<A HREF="terminal_interface-curses__ads.htm#ref_848_19">Str</A>'Length) := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_407_16">Waddchnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_847_19">Win</A>,
<A HREF="terminal_interface-curses__adb.htm#ref_412_7">Txt</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_680_19">Len</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_849_19">Len</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_678_14">Add</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_847_14">Add</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_425_14" HREF="terminal_interface-curses__ads.htm#ref_687_14">Add</A></span>
- (<span class="symbol"><A NAME="ref_426_7" HREF="terminal_interface-curses__ads.htm#ref_687_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_427_7" HREF="terminal_interface-curses__ads.htm#ref_688_19">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_428_7" HREF="terminal_interface-curses__ads.htm#ref_689_19">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_429_7" HREF="terminal_interface-curses__ads.htm#ref_690_19">Str</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Attributed_String</A>;
- <span class="symbol"><A NAME="ref_430_7" HREF="terminal_interface-curses__ads.htm#ref_691_19">Len</A></span> : Integer := -1)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_426_14" HREF="terminal_interface-curses__ads.htm#ref_856_14">Add</A></span>
+ (<span class="symbol"><A NAME="ref_427_7" HREF="terminal_interface-curses__ads.htm#ref_856_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_428_7" HREF="terminal_interface-curses__ads.htm#ref_857_19">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_429_7" HREF="terminal_interface-curses__ads.htm#ref_858_19">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_430_7" HREF="terminal_interface-curses__ads.htm#ref_859_19">Str</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Attributed_String</A>;
+ <span class="symbol"><A NAME="ref_431_7" HREF="terminal_interface-curses__ads.htm#ref_860_19">Len</A></span> : Integer := -1)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_512_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_687_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_688_19">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_689_19">Column</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_678_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#ref_687_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_690_19">Str</A>, <A HREF="terminal_interface-curses__ads.htm#ref_691_19">Len</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_687_14">Add</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_681_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_856_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_857_19">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_858_19">Column</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_847_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#ref_856_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_859_19">Str</A>, <A HREF="terminal_interface-curses__ads.htm#ref_860_19">Len</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_856_14">Add</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_437_14" HREF="terminal_interface-curses__ads.htm#ref_705_14">Border</A></span>
- (<span class="symbol"><A NAME="ref_438_7" HREF="terminal_interface-curses__ads.htm#ref_706_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_439_7" HREF="terminal_interface-curses__ads.htm#ref_707_7">Left_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_440_7" HREF="terminal_interface-curses__ads.htm#ref_708_7">Right_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_441_7" HREF="terminal_interface-curses__ads.htm#ref_709_7">Top_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_442_7" HREF="terminal_interface-curses__ads.htm#ref_710_7">Bottom_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_443_7" HREF="terminal_interface-curses__ads.htm#ref_711_7">Upper_Left_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_444_7" HREF="terminal_interface-curses__ads.htm#ref_712_7">Upper_Right_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_445_7" HREF="terminal_interface-curses__ads.htm#ref_713_7">Lower_Left_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_446_7" HREF="terminal_interface-curses__ads.htm#ref_714_7">Lower_Right_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>)
- <b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_448_16">Wborder</A></span> (<span class="symbol"><A NAME="ref_448_25" HREF="terminal_interface-curses__adb.htm#ref_448_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_449_25" HREF="terminal_interface-curses__adb.htm#ref_448_16">LS</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
- <span class="symbol"><A NAME="ref_450_25" HREF="terminal_interface-curses__adb.htm#ref_448_16">RS</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
- <span class="symbol"><A NAME="ref_451_25" HREF="terminal_interface-curses__adb.htm#ref_448_16">TS</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
- <span class="symbol"><A NAME="ref_452_25" HREF="terminal_interface-curses__adb.htm#ref_448_16">BS</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
- <span class="symbol"><A NAME="ref_453_25" HREF="terminal_interface-curses__adb.htm#ref_448_16">ULC</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
- <span class="symbol"><A NAME="ref_454_25" HREF="terminal_interface-curses__adb.htm#ref_448_16">URC</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
- <span class="symbol"><A NAME="ref_455_25" HREF="terminal_interface-curses__adb.htm#ref_448_16">LLC</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
- <span class="symbol"><A NAME="ref_456_25" HREF="terminal_interface-curses__adb.htm#ref_448_16">LRC</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_438_14" HREF="terminal_interface-curses__ads.htm#ref_874_14">Border</A></span>
+ (<span class="symbol"><A NAME="ref_439_7" HREF="terminal_interface-curses__ads.htm#ref_875_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_440_7" HREF="terminal_interface-curses__ads.htm#ref_876_7">Left_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_441_7" HREF="terminal_interface-curses__ads.htm#ref_877_7">Right_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_442_7" HREF="terminal_interface-curses__ads.htm#ref_878_7">Top_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_443_7" HREF="terminal_interface-curses__ads.htm#ref_879_7">Bottom_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_444_7" HREF="terminal_interface-curses__ads.htm#ref_880_7">Upper_Left_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_445_7" HREF="terminal_interface-curses__ads.htm#ref_881_7">Upper_Right_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_446_7" HREF="terminal_interface-curses__ads.htm#ref_882_7">Lower_Left_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_447_7" HREF="terminal_interface-curses__ads.htm#ref_883_7">Lower_Right_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>)
+ <b>is</b>
+ <b>function</b> <span class="symbol"><A NAME="ref_449_16">Wborder</A></span> (<span class="symbol"><A NAME="ref_449_25" HREF="terminal_interface-curses__adb.htm#ref_449_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_450_25" HREF="terminal_interface-curses__adb.htm#ref_449_16">LS</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_451_25" HREF="terminal_interface-curses__adb.htm#ref_449_16">RS</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_452_25" HREF="terminal_interface-curses__adb.htm#ref_449_16">TS</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_453_25" HREF="terminal_interface-curses__adb.htm#ref_449_16">BS</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_454_25" HREF="terminal_interface-curses__adb.htm#ref_449_16">ULC</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_455_25" HREF="terminal_interface-curses__adb.htm#ref_449_16">URC</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_456_25" HREF="terminal_interface-curses__adb.htm#ref_449_16">LLC</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_457_25" HREF="terminal_interface-curses__adb.htm#ref_449_16">LRC</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wborder, "wborder");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_448_16">Wborder</A> (<A HREF="terminal_interface-curses__ads.htm#ref_706_7">Win</A>,
- AttrChar_To_Chtype (<A HREF="terminal_interface-curses__ads.htm#ref_707_7">Left_Side_Symbol</A>),
- AttrChar_To_Chtype (<A HREF="terminal_interface-curses__ads.htm#ref_708_7">Right_Side_Symbol</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#ref_709_7">Top_Side_Symbol</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#ref_710_7">Bottom_Side_Symbol</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#ref_711_7">Upper_Left_Corner_Symbol</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#ref_712_7">Upper_Right_Corner_Symbol</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#ref_713_7">Lower_Left_Corner_Symbol</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#ref_714_7">Lower_Right_Corner_Symbol</A>)
- ) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_449_16">Wborder</A> (<A HREF="terminal_interface-curses__ads.htm#ref_875_7">Win</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_876_7">Left_Side_Symbol</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_877_7">Right_Side_Symbol</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_878_7">Top_Side_Symbol</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_879_7">Bottom_Side_Symbol</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_880_7">Upper_Left_Corner_Symbol</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_881_7">Upper_Right_Corner_Symbol</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_882_7">Lower_Left_Corner_Symbol</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_883_7">Lower_Right_Corner_Symbol</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
<b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_705_14">Border</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_874_14">Border</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_474_14" HREF="terminal_interface-curses__ads.htm#ref_721_14">Box</A></span>
- (<span class="symbol"><A NAME="ref_475_7" HREF="terminal_interface-curses__ads.htm#ref_722_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_476_7" HREF="terminal_interface-curses__ads.htm#ref_723_7">Vertical_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_477_7" HREF="terminal_interface-curses__ads.htm#ref_724_7">Horizontal_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_474_14" HREF="terminal_interface-curses__ads.htm#ref_890_14">Box</A></span>
+ (<span class="symbol"><A NAME="ref_475_7" HREF="terminal_interface-curses__ads.htm#ref_891_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_476_7" HREF="terminal_interface-curses__ads.htm#ref_892_7">Vertical_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_477_7" HREF="terminal_interface-curses__ads.htm#ref_893_7">Horizontal_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_705_14">Border</A> (<A HREF="terminal_interface-curses__ads.htm#ref_722_7">Win</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_723_7">Vertical_Symbol</A>, <A HREF="terminal_interface-curses__ads.htm#ref_723_7">Vertical_Symbol</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_724_7">Horizontal_Symbol</A>, <A HREF="terminal_interface-curses__ads.htm#ref_724_7">Horizontal_Symbol</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_721_14">Box</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_874_14">Border</A> (<A HREF="terminal_interface-curses__ads.htm#ref_891_7">Win</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_892_7">Vertical_Symbol</A>, <A HREF="terminal_interface-curses__ads.htm#ref_892_7">Vertical_Symbol</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_893_7">Horizontal_Symbol</A>, <A HREF="terminal_interface-curses__ads.htm#ref_893_7">Horizontal_Symbol</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_890_14">Box</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_485_14" HREF="terminal_interface-curses__ads.htm#ref_729_14">Horizontal_Line</A></span>
- (<span class="symbol"><A NAME="ref_486_7" HREF="terminal_interface-curses__ads.htm#ref_730_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_487_7" HREF="terminal_interface-curses__ads.htm#ref_731_7">Line_Size</A></span> : Natural;
- <span class="symbol"><A NAME="ref_488_7" HREF="terminal_interface-curses__ads.htm#ref_732_7">Line_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_485_14" HREF="terminal_interface-curses__ads.htm#ref_898_14">Horizontal_Line</A></span>
+ (<span class="symbol"><A NAME="ref_486_7" HREF="terminal_interface-curses__ads.htm#ref_899_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_487_7" HREF="terminal_interface-curses__ads.htm#ref_900_7">Line_Size</A></span> : Natural;
+ <span class="symbol"><A NAME="ref_488_7" HREF="terminal_interface-curses__ads.htm#ref_901_7">Line_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_490_16">Whline</A></span> (<span class="symbol"><A NAME="ref_490_24" HREF="terminal_interface-curses__adb.htm#ref_490_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_491_24" HREF="terminal_interface-curses__adb.htm#ref_490_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
- <span class="symbol"><A NAME="ref_492_24" HREF="terminal_interface-curses__adb.htm#ref_490_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_490_16">Whline</A></span> (<span class="symbol"><A NAME="ref_490_24" HREF="terminal_interface-curses__adb.htm#ref_490_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_491_24" HREF="terminal_interface-curses__adb.htm#ref_490_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_492_24" HREF="terminal_interface-curses__adb.htm#ref_490_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Whline, "whline");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_490_16">Whline</A> (<A HREF="terminal_interface-curses__ads.htm#ref_730_7">Win</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#ref_732_7">Line_Symbol</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_731_7">Line_Size</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_490_16">Whline</A> (<A HREF="terminal_interface-curses__ads.htm#ref_899_7">Win</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_901_7">Line_Symbol</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_900_7">Line_Size</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_729_14">Horizontal_Line</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_898_14">Horizontal_Line</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_502_14" HREF="terminal_interface-curses__ads.htm#ref_738_14">Vertical_Line</A></span>
- (<span class="symbol"><A NAME="ref_503_7" HREF="terminal_interface-curses__ads.htm#ref_739_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_504_7" HREF="terminal_interface-curses__ads.htm#ref_740_7">Line_Size</A></span> : Natural;
- <span class="symbol"><A NAME="ref_505_7" HREF="terminal_interface-curses__ads.htm#ref_741_7">Line_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_503_14" HREF="terminal_interface-curses__ads.htm#ref_907_14">Vertical_Line</A></span>
+ (<span class="symbol"><A NAME="ref_504_7" HREF="terminal_interface-curses__ads.htm#ref_908_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_505_7" HREF="terminal_interface-curses__ads.htm#ref_909_7">Line_Size</A></span> : Natural;
+ <span class="symbol"><A NAME="ref_506_7" HREF="terminal_interface-curses__ads.htm#ref_910_7">Line_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_507_16">Wvline</A></span> (<span class="symbol"><A NAME="ref_507_24" HREF="terminal_interface-curses__adb.htm#ref_507_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_508_24" HREF="terminal_interface-curses__adb.htm#ref_507_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
- <span class="symbol"><A NAME="ref_509_24" HREF="terminal_interface-curses__adb.htm#ref_507_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_508_16">Wvline</A></span> (<span class="symbol"><A NAME="ref_508_24" HREF="terminal_interface-curses__adb.htm#ref_508_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_509_24" HREF="terminal_interface-curses__adb.htm#ref_508_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_510_24" HREF="terminal_interface-curses__adb.htm#ref_508_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wvline, "wvline");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_507_16">Wvline</A> (<A HREF="terminal_interface-curses__ads.htm#ref_739_7">Win</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#ref_741_7">Line_Symbol</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_740_7">Line_Size</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_508_16">Wvline</A> (<A HREF="terminal_interface-curses__ads.htm#ref_908_7">Win</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_910_7">Line_Symbol</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_909_7">Line_Size</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_738_14">Vertical_Line</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_907_14">Vertical_Line</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_520_13" HREF="terminal_interface-curses__ads.htm#ref_752_13">Get_Keystroke</A></span> (<span class="symbol"><A NAME="ref_520_28" HREF="terminal_interface-curses__ads.htm#ref_752_28">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_522_13" HREF="terminal_interface-curses__ads.htm#ref_921_13">Get_Keystroke</A></span> (<span class="symbol"><A NAME="ref_522_28" HREF="terminal_interface-curses__ads.htm#ref_921_28">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_523_16">Wgetch</A></span> (<span class="symbol"><A NAME="ref_523_24" HREF="terminal_interface-curses__adb.htm#ref_523_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_525_16">Wgetch</A></span> (<span class="symbol"><A NAME="ref_525_24" HREF="terminal_interface-curses__adb.htm#ref_525_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wgetch, "wgetch");
- <span class="symbol"><A NAME="ref_526_7">C</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_523_16">Wgetch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_752_28">Win</A>);
+ <span class="symbol"><A NAME="ref_528_7">C</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_525_16">Wgetch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_921_28">Win</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_526_7">C</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_528_7">C</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
<b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_88_4">Key_None</A>;
<b>else</b>
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A> (<A HREF="terminal_interface-curses__adb.htm#ref_526_7">C</A>);
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A> (<A HREF="terminal_interface-curses__adb.htm#ref_528_7">C</A>);
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_752_13">Get_Keystroke</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_921_13">Get_Keystroke</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_535_14" HREF="terminal_interface-curses__ads.htm#ref_763_14">Undo_Keystroke</A></span> (<span class="symbol"><A NAME="ref_535_30" HREF="terminal_interface-curses__ads.htm#ref_763_30">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_537_14" HREF="terminal_interface-curses__ads.htm#ref_932_14">Undo_Keystroke</A></span> (<span class="symbol"><A NAME="ref_537_30" HREF="terminal_interface-curses__ads.htm#ref_932_30">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_537_16">Ungetch</A></span> (<span class="symbol"><A NAME="ref_537_25" HREF="terminal_interface-curses__adb.htm#ref_537_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_539_16">Ungetch</A></span> (<span class="symbol"><A NAME="ref_539_25" HREF="terminal_interface-curses__adb.htm#ref_539_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Ungetch, "ungetch");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_537_16">Ungetch</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_763_30">Key</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_539_16">Ungetch</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_932_30">Key</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_763_14">Undo_Keystroke</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_932_14">Undo_Keystroke</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_545_13" HREF="terminal_interface-curses__ads.htm#ref_768_13">Has_Key</A></span> (<span class="symbol"><A NAME="ref_545_22" HREF="terminal_interface-curses__ads.htm#ref_768_22">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A>) <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_547_13" HREF="terminal_interface-curses__ads.htm#ref_937_13">Has_Key</A></span> (<span class="symbol"><A NAME="ref_547_22" HREF="terminal_interface-curses__ads.htm#ref_937_22">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>) <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_547_16">Haskey</A></span> (<span class="symbol"><A NAME="ref_547_24" HREF="terminal_interface-curses__adb.htm#ref_547_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_549_16">Haskey</A></span> (<span class="symbol"><A NAME="ref_549_24" HREF="terminal_interface-curses__adb.htm#ref_549_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Haskey, "has_key");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_547_16">Haskey</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_768_22">Key</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">Curses_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_549_16">Haskey</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_937_22">Key</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_66_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> <A HREF="terminal_interface-curses__ads.htm#ref_768_13">Has_Key</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_937_13">Has_Key</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_557_13" HREF="terminal_interface-curses__ads.htm#ref_775_13">Is_Function_Key</A></span> (<span class="symbol"><A NAME="ref_557_30" HREF="terminal_interface-curses__ads.htm#ref_775_30">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A>) <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_559_13" HREF="terminal_interface-curses__ads.htm#ref_944_13">Is_Function_Key</A></span> (<span class="symbol"><A NAME="ref_559_30" HREF="terminal_interface-curses__ads.htm#ref_944_30">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>) <b>return</b> Boolean
<b>is</b>
- <span class="symbol"><A NAME="ref_559_7">L</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> (Natural (<A HREF="terminal_interface-curses__ads.htm#ref_98_4">Key_F0</A>) +
- Natural (<A HREF="terminal_interface-curses__ads.htm#ref_779_12">Function_Key_Number</A>'Last));
+ <span class="symbol"><A NAME="ref_561_7">L</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> (Natural (<A HREF="terminal_interface-curses__ads.htm#ref_110_4">Key_F0</A>) +
+ Natural (<A HREF="terminal_interface-curses__ads.htm#ref_948_12">Function_Key_Number</A>'Last));
<b>begin</b>
- <b>if</b> (<A HREF="terminal_interface-curses__ads.htm#ref_775_30">Key</A> &gt;= <A HREF="terminal_interface-curses__ads.htm#ref_98_4">Key_F0</A>) <b>and</b> <b>then</b> (<A HREF="terminal_interface-curses__ads.htm#ref_775_30">Key</A> &lt;= <A HREF="terminal_interface-curses__adb.htm#ref_559_7">L</A>) <b>then</b>
+ <b>if</b> (<A HREF="terminal_interface-curses__ads.htm#ref_944_30">Key</A> &gt;= <A HREF="terminal_interface-curses__ads.htm#ref_110_4">Key_F0</A>) <b>and</b> <b>then</b> (<A HREF="terminal_interface-curses__ads.htm#ref_944_30">Key</A> &lt;= <A HREF="terminal_interface-curses__adb.htm#ref_561_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> <A HREF="terminal_interface-curses__ads.htm#ref_775_13">Is_Function_Key</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_944_13">Is_Function_Key</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_569_13" HREF="terminal_interface-curses__ads.htm#ref_782_13">Function_Key</A></span> (<span class="symbol"><A NAME="ref_569_27" HREF="terminal_interface-curses__ads.htm#ref_782_27">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A>)
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_779_12">Function_Key_Number</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_571_13" HREF="terminal_interface-curses__ads.htm#ref_951_13">Function_Key</A></span> (<span class="symbol"><A NAME="ref_571_27" HREF="terminal_interface-curses__ads.htm#ref_951_27">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_948_12">Function_Key_Number</A>
<b>is</b>
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_775_13">Is_Function_Key</A> (<A HREF="terminal_interface-curses__ads.htm#ref_782_27">Key</A>) <b>then</b>
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_779_12">Function_Key_Number</A> (<A HREF="terminal_interface-curses__ads.htm#ref_782_27">Key</A> - <A HREF="terminal_interface-curses__ads.htm#ref_98_4">Key_F0</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_944_13">Is_Function_Key</A> (<A HREF="terminal_interface-curses__ads.htm#ref_951_27">Key</A>) <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_948_12">Function_Key_Number</A> (<A HREF="terminal_interface-curses__ads.htm#ref_951_27">Key</A> - <A HREF="terminal_interface-curses__ads.htm#ref_110_4">Key_F0</A>);
<b>else</b>
<b>raise</b> Constraint_Error;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_782_13">Function_Key</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_951_13">Function_Key</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_580_13" HREF="terminal_interface-curses__ads.htm#ref_787_13">Function_Key_Code</A></span> (<span class="symbol"><A NAME="ref_580_32" HREF="terminal_interface-curses__ads.htm#ref_787_32">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_779_12">Function_Key_Number</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_582_13" HREF="terminal_interface-curses__ads.htm#ref_956_13">Function_Key_Code</A></span> (<span class="symbol"><A NAME="ref_582_32" HREF="terminal_interface-curses__ads.htm#ref_956_32">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_948_12">Function_Key_Number</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A>
<b>is</b>
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A> (Natural (<A HREF="terminal_interface-curses__ads.htm#ref_98_4">Key_F0</A>) + Natural (<A HREF="terminal_interface-curses__ads.htm#ref_787_32">Key</A>));
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_787_13">Function_Key_Code</A>;
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A> (Natural (<A HREF="terminal_interface-curses__ads.htm#ref_110_4">Key_F0</A>) + Natural (<A HREF="terminal_interface-curses__ads.htm#ref_956_32">Key</A>));
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_956_13">Function_Key_Code</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_586_14" HREF="terminal_interface-curses__ads.htm#ref_801_14">Standout</A></span> (<span class="symbol"><A NAME="ref_586_24" HREF="terminal_interface-curses__ads.htm#ref_801_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_587_24" HREF="terminal_interface-curses__ads.htm#ref_802_24">On</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_588_14" HREF="terminal_interface-curses__ads.htm#ref_970_14">Standout</A></span> (<span class="symbol"><A NAME="ref_588_24" HREF="terminal_interface-curses__ads.htm#ref_970_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_589_24" HREF="terminal_interface-curses__ads.htm#ref_971_24">On</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_589_16">wstandout</A></span> (<span class="symbol"><A NAME="ref_589_27" HREF="terminal_interface-curses__adb.htm#ref_589_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_591_16">wstandout</A></span> (<span class="symbol"><A NAME="ref_591_27" HREF="terminal_interface-curses__adb.htm#ref_591_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, wstandout, "wstandout");
- <b>function</b> <span class="symbol"><A NAME="ref_591_16">wstandend</A></span> (<span class="symbol"><A NAME="ref_591_27" HREF="terminal_interface-curses__adb.htm#ref_591_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_593_16">wstandend</A></span> (<span class="symbol"><A NAME="ref_593_27" HREF="terminal_interface-curses__adb.htm#ref_593_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, wstandend, "wstandend");
- <span class="symbol"><A NAME="ref_594_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_596_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_802_24">On</A> <b>then</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_594_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_589_16">wstandout</A> (<A HREF="terminal_interface-curses__ads.htm#ref_801_24">Win</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_971_24">On</A> <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#ref_596_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_591_16">wstandout</A> (<A HREF="terminal_interface-curses__ads.htm#ref_970_24">Win</A>);
<b>else</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_594_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_591_16">wstandend</A> (<A HREF="terminal_interface-curses__ads.htm#ref_801_24">Win</A>);
+ <A HREF="terminal_interface-curses__adb.htm#ref_596_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_593_16">wstandend</A> (<A HREF="terminal_interface-curses__ads.htm#ref_970_24">Win</A>);
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_594_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_596_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_801_14">Standout</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_970_14">Standout</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_606_14" HREF="terminal_interface-curses__ads.htm#ref_807_14">Switch_Character_Attribute</A></span>
- (<span class="symbol"><A NAME="ref_607_7" HREF="terminal_interface-curses__ads.htm#ref_808_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_608_7" HREF="terminal_interface-curses__ads.htm#ref_809_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_609_7" HREF="terminal_interface-curses__ads.htm#ref_810_7">On</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_608_14" HREF="terminal_interface-curses__ads.htm#ref_976_14">Switch_Character_Attribute</A></span>
+ (<span class="symbol"><A NAME="ref_609_7" HREF="terminal_interface-curses__ads.htm#ref_977_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_610_7" HREF="terminal_interface-curses__ads.htm#ref_978_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_611_7" HREF="terminal_interface-curses__ads.htm#ref_979_7">On</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_611_16">Wattron</A></span> (<span class="symbol"><A NAME="ref_611_25" HREF="terminal_interface-curses__adb.htm#ref_611_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_612_25" HREF="terminal_interface-curses__adb.htm#ref_611_16">C_Attr</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_12">C_AttrType</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_613_16">Wattron</A></span> (<span class="symbol"><A NAME="ref_613_25" HREF="terminal_interface-curses__adb.htm#ref_613_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_614_25" HREF="terminal_interface-curses__adb.htm#ref_613_16">C_Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wattron, "wattr_on");
- <b>function</b> <span class="symbol"><A NAME="ref_614_16">Wattroff</A></span> (<span class="symbol"><A NAME="ref_614_26" HREF="terminal_interface-curses__adb.htm#ref_614_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_615_26" HREF="terminal_interface-curses__adb.htm#ref_614_16">C_Attr</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_12">C_AttrType</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_616_16">Wattroff</A></span> (<span class="symbol"><A NAME="ref_616_26" HREF="terminal_interface-curses__adb.htm#ref_616_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_617_26" HREF="terminal_interface-curses__adb.htm#ref_616_16">C_Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wattroff, "wattr_off");
<span class="comment"><EM>-- In Ada we use the On Boolean to control whether or not we want to</EM></span>
<span class="comment"><EM>-- switch on or off the attributes in the set.</EM></span>
- <span class="symbol"><A NAME="ref_619_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_620_7">AC</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; Character'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_809_7">Attr</A>);
+ <span class="symbol"><A NAME="ref_621_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_622_7">AC</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; Character'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_978_7">Attr</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_810_7">On</A> <b>then</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_619_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_611_16">Wattron</A> (<A HREF="terminal_interface-curses__ads.htm#ref_808_7">Win</A>, AttrChar_To_AttrType (<A HREF="terminal_interface-curses__adb.htm#ref_620_7">AC</A>));
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_979_7">On</A> <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#ref_621_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_613_16">Wattron</A> (<A HREF="terminal_interface-curses__ads.htm#ref_977_7">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_622_7">AC</A>);
<b>else</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_619_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_614_16">Wattroff</A> (<A HREF="terminal_interface-curses__ads.htm#ref_808_7">Win</A>, AttrChar_To_AttrType (<A HREF="terminal_interface-curses__adb.htm#ref_620_7">AC</A>));
+ <A HREF="terminal_interface-curses__adb.htm#ref_621_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_616_16">Wattroff</A> (<A HREF="terminal_interface-curses__ads.htm#ref_977_7">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_622_7">AC</A>);
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_619_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_621_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_807_14">Switch_Character_Attribute</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_976_14">Switch_Character_Attribute</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_634_14" HREF="terminal_interface-curses__ads.htm#ref_818_14">Set_Character_Attributes</A></span>
- (<span class="symbol"><A NAME="ref_635_7" HREF="terminal_interface-curses__ads.htm#ref_819_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_636_7" HREF="terminal_interface-curses__ads.htm#ref_820_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_637_7" HREF="terminal_interface-curses__ads.htm#ref_821_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_636_14" HREF="terminal_interface-curses__ads.htm#ref_987_14">Set_Character_Attributes</A></span>
+ (<span class="symbol"><A NAME="ref_637_7" HREF="terminal_interface-curses__ads.htm#ref_988_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_638_7" HREF="terminal_interface-curses__ads.htm#ref_989_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_639_7" HREF="terminal_interface-curses__ads.htm#ref_990_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_639_16">Wattrset</A></span> (<span class="symbol"><A NAME="ref_639_26" HREF="terminal_interface-curses__adb.htm#ref_639_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_640_26" HREF="terminal_interface-curses__adb.htm#ref_639_16">C_Attr</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_12">C_AttrType</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_641_16">Wattrset</A></span> (<span class="symbol"><A NAME="ref_641_26" HREF="terminal_interface-curses__adb.htm#ref_641_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_642_26" HREF="terminal_interface-curses__adb.htm#ref_641_16">C_Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wattrset, "wattrset"); <span class="comment"><EM>-- ??? wattr_set</EM></span>
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_639_16">Wattrset</A> (<A HREF="terminal_interface-curses__ads.htm#ref_819_7">Win</A>,
- AttrChar_To_AttrType (<A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>'
- (<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; Character'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_821_7">Color</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_820_7">Attr</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_641_16">Wattrset</A> (<A HREF="terminal_interface-curses__ads.htm#ref_988_7">Win</A>, (<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; Character'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_990_7">Color</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_989_7">Attr</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_818_14">Set_Character_Attributes</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_987_14">Set_Character_Attributes</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_652_13" HREF="terminal_interface-curses__ads.htm#ref_827_13">Get_Character_Attribute</A></span> (<span class="symbol"><A NAME="ref_652_38" HREF="terminal_interface-curses__ads.htm#ref_828_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_653_13" HREF="terminal_interface-curses__ads.htm#ref_996_13">Get_Character_Attribute</A></span> (<span class="symbol"><A NAME="ref_653_38" HREF="terminal_interface-curses__ads.htm#ref_997_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_655_16">Wattrget</A></span> (<span class="symbol"><A NAME="ref_655_26" HREF="terminal_interface-curses__adb.htm#ref_655_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_656_26" HREF="terminal_interface-curses__adb.htm#ref_655_16">Atr</A></span> : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_12">C_AttrType</A>;
- <span class="symbol"><A NAME="ref_657_26" HREF="terminal_interface-curses__adb.htm#ref_655_16">Col</A></span> : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
- <span class="symbol"><A NAME="ref_658_26" HREF="terminal_interface-curses__adb.htm#ref_655_16">Opt</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_656_16">Wattrget</A></span> (<span class="symbol"><A NAME="ref_656_26" HREF="terminal_interface-curses__adb.htm#ref_656_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_657_26" HREF="terminal_interface-curses__adb.htm#ref_656_16">Atr</A></span> : <b>access</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_658_26" HREF="terminal_interface-curses__adb.htm#ref_656_16">Col</A></span> : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
+ <span class="symbol"><A NAME="ref_659_26" HREF="terminal_interface-curses__adb.htm#ref_656_16">Opt</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wattrget, "wattr_get");
- <span class="symbol"><A NAME="ref_661_7">Attr</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_12">C_AttrType</A>;
- <span class="symbol"><A NAME="ref_662_7">Col</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
- <span class="symbol"><A NAME="ref_663_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_655_16">Wattrget</A> (<A HREF="terminal_interface-curses__ads.htm#ref_828_7">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_661_7">Attr</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_662_7">Col</A>'<b>Access</b>,
+ <span class="symbol"><A NAME="ref_662_7">Attr</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_663_7">Col</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
+ <span class="symbol"><A NAME="ref_664_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_656_16">Wattrget</A> (<A HREF="terminal_interface-curses__ads.htm#ref_997_7">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_662_7">Attr</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_663_7">Col</A>'<b>Access</b>,
System.Null_Address);
- <span class="symbol"><A NAME="ref_665_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_663_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_71_4">Curses_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_665_7">Ch</A> := AttrType_To_AttrChar (<A HREF="terminal_interface-curses__adb.htm#ref_661_7">Attr</A>);
- <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_665_7">Ch</A>.<A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_664_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_62_4">Curses_Ok</A> <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_662_7">Attr</A>.<A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A>;
<b>else</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_827_13">Get_Character_Attribute</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_996_13">Get_Character_Attribute</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_675_13" HREF="terminal_interface-curses__ads.htm#ref_833_13">Get_Character_Attribute</A></span> (<span class="symbol"><A NAME="ref_675_38" HREF="terminal_interface-curses__ads.htm#ref_834_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_674_13" HREF="terminal_interface-curses__ads.htm#ref_1002_13">Get_Character_Attribute</A></span> (<span class="symbol"><A NAME="ref_674_38" HREF="terminal_interface-curses__ads.htm#ref_1003_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_678_16">Wattrget</A></span> (<span class="symbol"><A NAME="ref_678_26" HREF="terminal_interface-curses__adb.htm#ref_678_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_679_26" HREF="terminal_interface-curses__adb.htm#ref_678_16">Atr</A></span> : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_12">C_AttrType</A>;
- <span class="symbol"><A NAME="ref_680_26" HREF="terminal_interface-curses__adb.htm#ref_678_16">Col</A></span> : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
- <span class="symbol"><A NAME="ref_681_26" HREF="terminal_interface-curses__adb.htm#ref_678_16">Opt</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_677_16">Wattrget</A></span> (<span class="symbol"><A NAME="ref_677_26" HREF="terminal_interface-curses__adb.htm#ref_677_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_678_26" HREF="terminal_interface-curses__adb.htm#ref_677_16">Atr</A></span> : <b>access</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_679_26" HREF="terminal_interface-curses__adb.htm#ref_677_16">Col</A></span> : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
+ <span class="symbol"><A NAME="ref_680_26" HREF="terminal_interface-curses__adb.htm#ref_677_16">Opt</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wattrget, "wattr_get");
- <span class="symbol"><A NAME="ref_684_7">Attr</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_12">C_AttrType</A>;
- <span class="symbol"><A NAME="ref_685_7">Col</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
- <span class="symbol"><A NAME="ref_686_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_678_16">Wattrget</A> (<A HREF="terminal_interface-curses__ads.htm#ref_834_7">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_684_7">Attr</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_685_7">Col</A>'<b>Access</b>,
+ <span class="symbol"><A NAME="ref_683_7">Attr</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_684_7">Col</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
+ <span class="symbol"><A NAME="ref_685_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_677_16">Wattrget</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1003_7">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_683_7">Attr</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_684_7">Col</A>'<b>Access</b>,
System.Null_Address);
- <span class="symbol"><A NAME="ref_688_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_686_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_71_4">Curses_Ok</A> <b>then</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_688_7">Ch</A> := AttrType_To_AttrChar (<A HREF="terminal_interface-curses__adb.htm#ref_684_7">Attr</A>);
- <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_688_7">Ch</A>.<A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_685_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_62_4">Curses_Ok</A> <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_683_7">Attr</A>.<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A>;
<b>else</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_833_13">Get_Character_Attribute</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1002_13">Get_Character_Attribute</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_698_14" HREF="terminal_interface-curses__ads.htm#ref_839_14">Set_Color</A></span> (<span class="symbol"><A NAME="ref_698_25" HREF="terminal_interface-curses__ads.htm#ref_839_25">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_699_25" HREF="terminal_interface-curses__ads.htm#ref_840_25">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_695_14" HREF="terminal_interface-curses__ads.htm#ref_1008_14">Set_Color</A></span> (<span class="symbol"><A NAME="ref_695_25" HREF="terminal_interface-curses__ads.htm#ref_1008_25">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_696_25" HREF="terminal_interface-curses__ads.htm#ref_1009_25">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_701_16">Wset_Color</A></span> (<span class="symbol"><A NAME="ref_701_28" HREF="terminal_interface-curses__adb.htm#ref_701_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_702_28" HREF="terminal_interface-curses__adb.htm#ref_701_16">Color</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
- <span class="symbol"><A NAME="ref_703_28" HREF="terminal_interface-curses__adb.htm#ref_701_16">Opts</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_62_12">C_Void_Ptr</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_698_16">Wset_Color</A></span> (<span class="symbol"><A NAME="ref_698_28" HREF="terminal_interface-curses__adb.htm#ref_698_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_699_28" HREF="terminal_interface-curses__adb.htm#ref_698_16">Color</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
+ <span class="symbol"><A NAME="ref_700_28" HREF="terminal_interface-curses__adb.htm#ref_698_16">Opts</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Void_Ptr</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wset_Color, "wcolor_set");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_701_16">Wset_Color</A> (<A HREF="terminal_interface-curses__ads.htm#ref_839_25">Win</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_840_25">Pair</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_62_12">C_Void_Ptr</A> (System.Null_Address)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_839_14">Set_Color</A>;
-
- <b>procedure</b> <span class="symbol"><A NAME="ref_713_14" HREF="terminal_interface-curses__ads.htm#ref_846_14">Change_Attributes</A></span>
- (<span class="symbol"><A NAME="ref_714_7" HREF="terminal_interface-curses__ads.htm#ref_847_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_715_7" HREF="terminal_interface-curses__ads.htm#ref_848_7">Count</A></span> : Integer := -1;
- <span class="symbol"><A NAME="ref_716_7" HREF="terminal_interface-curses__ads.htm#ref_849_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_717_7" HREF="terminal_interface-curses__ads.htm#ref_850_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First)
- <b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_719_16">Wchgat</A></span> (<span class="symbol"><A NAME="ref_719_24" HREF="terminal_interface-curses__adb.htm#ref_719_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_720_24" HREF="terminal_interface-curses__adb.htm#ref_719_16">Cnt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_721_24" HREF="terminal_interface-curses__adb.htm#ref_719_16">Attr</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_12">C_AttrType</A>;
- <span class="symbol"><A NAME="ref_722_24" HREF="terminal_interface-curses__adb.htm#ref_719_16">Color</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
- <span class="symbol"><A NAME="ref_723_24" HREF="terminal_interface-curses__adb.htm#ref_719_16">Opts</A></span> : System.Address := System.Null_Address)
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_698_16">Wset_Color</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1008_25">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1009_25">Pair</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Void_Ptr</A> (System.Null_Address)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1008_14">Set_Color</A>;
+
+ <b>procedure</b> <span class="symbol"><A NAME="ref_711_14" HREF="terminal_interface-curses__ads.htm#ref_1015_14">Change_Attributes</A></span>
+ (<span class="symbol"><A NAME="ref_712_7" HREF="terminal_interface-curses__ads.htm#ref_1016_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_713_7" HREF="terminal_interface-curses__ads.htm#ref_1017_7">Count</A></span> : Integer := -1;
+ <span class="symbol"><A NAME="ref_714_7" HREF="terminal_interface-curses__ads.htm#ref_1018_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_715_7" HREF="terminal_interface-curses__ads.htm#ref_1019_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First)
+ <b>is</b>
+ <b>function</b> <span class="symbol"><A NAME="ref_717_16">Wchgat</A></span> (<span class="symbol"><A NAME="ref_717_24" HREF="terminal_interface-curses__adb.htm#ref_717_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_718_24" HREF="terminal_interface-curses__adb.htm#ref_717_16">Cnt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_719_24" HREF="terminal_interface-curses__adb.htm#ref_717_16">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_720_24" HREF="terminal_interface-curses__adb.htm#ref_717_16">Color</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
+ <span class="symbol"><A NAME="ref_721_24" HREF="terminal_interface-curses__adb.htm#ref_717_16">Opts</A></span> : System.Address := System.Null_Address)
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wchgat, "wchgat");
-
- <span class="symbol"><A NAME="ref_727_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> :=
- (<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; Character'First, <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First, <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_849_7">Attr</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_719_16">Wchgat</A> (<A HREF="terminal_interface-curses__ads.htm#ref_847_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_848_7">Count</A>), AttrChar_To_AttrType (<A HREF="terminal_interface-curses__adb.htm#ref_727_7">Ch</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_850_7">Color</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_717_16">Wchgat</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1016_7">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1017_7">Count</A>),
+ (<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; Character'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_1018_7">Attr</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1019_7">Color</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_846_14">Change_Attributes</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1015_14">Change_Attributes</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_736_14" HREF="terminal_interface-curses__ads.htm#ref_855_14">Change_Attributes</A></span>
- (<span class="symbol"><A NAME="ref_737_7" HREF="terminal_interface-curses__ads.htm#ref_856_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_738_7" HREF="terminal_interface-curses__ads.htm#ref_857_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>'First;
- <span class="symbol"><A NAME="ref_739_7" HREF="terminal_interface-curses__ads.htm#ref_858_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>'First;
- <span class="symbol"><A NAME="ref_740_7" HREF="terminal_interface-curses__ads.htm#ref_859_7">Count</A></span> : Integer := -1;
- <span class="symbol"><A NAME="ref_741_7" HREF="terminal_interface-curses__ads.htm#ref_860_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_742_7" HREF="terminal_interface-curses__ads.htm#ref_861_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_736_14" HREF="terminal_interface-curses__ads.htm#ref_1024_14">Change_Attributes</A></span>
+ (<span class="symbol"><A NAME="ref_737_7" HREF="terminal_interface-curses__ads.htm#ref_1025_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_738_7" HREF="terminal_interface-curses__ads.htm#ref_1026_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A> := <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>'First;
+ <span class="symbol"><A NAME="ref_739_7" HREF="terminal_interface-curses__ads.htm#ref_1027_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>'First;
+ <span class="symbol"><A NAME="ref_740_7" HREF="terminal_interface-curses__ads.htm#ref_1028_7">Count</A></span> : Integer := -1;
+ <span class="symbol"><A NAME="ref_741_7" HREF="terminal_interface-curses__ads.htm#ref_1029_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_742_7" HREF="terminal_interface-curses__ads.htm#ref_1030_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_512_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_856_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_857_7">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_858_7">Column</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_846_14">Change_Attributes</A> (<A HREF="terminal_interface-curses__ads.htm#ref_856_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_859_7">Count</A>, <A HREF="terminal_interface-curses__ads.htm#ref_860_7">Attr</A>, <A HREF="terminal_interface-curses__ads.htm#ref_861_7">Color</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_855_14">Change_Attributes</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_681_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1025_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1026_7">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1027_7">Column</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1015_14">Change_Attributes</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1025_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1028_7">Count</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1029_7">Attr</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1030_7">Color</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1024_14">Change_Attributes</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_749_14" HREF="terminal_interface-curses__ads.htm#ref_871_14">Beep</A></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_749_14" HREF="terminal_interface-curses__ads.htm#ref_1040_14">Beep</A></span>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_751_16">Beeper</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_751_16">Beeper</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Beeper, "beep");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_751_16">Beeper</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_751_16">Beeper</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_871_14">Beep</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1040_14">Beep</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_759_14" HREF="terminal_interface-curses__ads.htm#ref_876_14">Flash_Screen</A></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_759_14" HREF="terminal_interface-curses__ads.htm#ref_1045_14">Flash_Screen</A></span>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_761_16">Flash</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_761_16">Flash</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Flash, "flash");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_761_16">Flash</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_761_16">Flash</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_876_14">Flash_Screen</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1045_14">Flash_Screen</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_769_14" HREF="terminal_interface-curses__ads.htm#ref_887_14">Set_Cbreak_Mode</A></span> (<span class="symbol"><A NAME="ref_769_31" HREF="terminal_interface-curses__ads.htm#ref_887_31">SwitchOn</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_769_14" HREF="terminal_interface-curses__ads.htm#ref_1056_14">Set_Cbreak_Mode</A></span> (<span class="symbol"><A NAME="ref_769_31" HREF="terminal_interface-curses__ads.htm#ref_1056_31">SwitchOn</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_771_16">Cbreak</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_771_16">Cbreak</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Cbreak, "cbreak");
- <b>function</b> <span class="symbol"><A NAME="ref_773_16">NoCbreak</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_773_16">NoCbreak</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, NoCbreak, "nocbreak");
- <span class="symbol"><A NAME="ref_776_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_776_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_887_31">SwitchOn</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1056_31">SwitchOn</A> <b>then</b>
<A HREF="terminal_interface-curses__adb.htm#ref_776_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_771_16">Cbreak</A>;
<b>else</b>
<A HREF="terminal_interface-curses__adb.htm#ref_776_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_773_16">NoCbreak</A>;
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_776_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_776_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_887_14">Set_Cbreak_Mode</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1056_14">Set_Cbreak_Mode</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_788_14" HREF="terminal_interface-curses__ads.htm#ref_893_14">Set_Raw_Mode</A></span> (<span class="symbol"><A NAME="ref_788_28" HREF="terminal_interface-curses__ads.htm#ref_893_28">SwitchOn</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_788_14" HREF="terminal_interface-curses__ads.htm#ref_1062_14">Set_Raw_Mode</A></span> (<span class="symbol"><A NAME="ref_788_28" HREF="terminal_interface-curses__ads.htm#ref_1062_28">SwitchOn</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_790_16">Raw</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_790_16">Raw</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Raw, "raw");
- <b>function</b> <span class="symbol"><A NAME="ref_792_16">NoRaw</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_792_16">NoRaw</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, NoRaw, "noraw");
- <span class="symbol"><A NAME="ref_795_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_795_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_893_28">SwitchOn</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1062_28">SwitchOn</A> <b>then</b>
<A HREF="terminal_interface-curses__adb.htm#ref_795_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_790_16">Raw</A>;
<b>else</b>
<A HREF="terminal_interface-curses__adb.htm#ref_795_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_792_16">NoRaw</A>;
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_795_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_795_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_893_14">Set_Raw_Mode</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1062_14">Set_Raw_Mode</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_807_14" HREF="terminal_interface-curses__ads.htm#ref_899_14">Set_Echo_Mode</A></span> (<span class="symbol"><A NAME="ref_807_29" HREF="terminal_interface-curses__ads.htm#ref_899_29">SwitchOn</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_807_14" HREF="terminal_interface-curses__ads.htm#ref_1068_14">Set_Echo_Mode</A></span> (<span class="symbol"><A NAME="ref_807_29" HREF="terminal_interface-curses__ads.htm#ref_1068_29">SwitchOn</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_809_16">Echo</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_809_16">Echo</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Echo, "echo");
- <b>function</b> <span class="symbol"><A NAME="ref_811_16">NoEcho</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_811_16">NoEcho</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, NoEcho, "noecho");
- <span class="symbol"><A NAME="ref_814_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_814_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_899_29">SwitchOn</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1068_29">SwitchOn</A> <b>then</b>
<A HREF="terminal_interface-curses__adb.htm#ref_814_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_809_16">Echo</A>;
<b>else</b>
<A HREF="terminal_interface-curses__adb.htm#ref_814_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_811_16">NoEcho</A>;
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_814_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_814_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_899_14">Set_Echo_Mode</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1068_14">Set_Echo_Mode</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_826_14" HREF="terminal_interface-curses__ads.htm#ref_905_14">Set_Meta_Mode</A></span> (<span class="symbol"><A NAME="ref_826_29" HREF="terminal_interface-curses__ads.htm#ref_905_29">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_827_29" HREF="terminal_interface-curses__ads.htm#ref_906_29">SwitchOn</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_826_14" HREF="terminal_interface-curses__ads.htm#ref_1074_14">Set_Meta_Mode</A></span> (<span class="symbol"><A NAME="ref_826_29" HREF="terminal_interface-curses__ads.htm#ref_1074_29">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_827_29" HREF="terminal_interface-curses__ads.htm#ref_1075_29">SwitchOn</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_829_16">Meta</A></span> (<span class="symbol"><A NAME="ref_829_22" HREF="terminal_interface-curses__adb.htm#ref_829_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_829_34" HREF="terminal_interface-curses__adb.htm#ref_829_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_829_16">Meta</A></span> (<span class="symbol"><A NAME="ref_829_22" HREF="terminal_interface-curses__adb.htm#ref_829_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_829_34" HREF="terminal_interface-curses__adb.htm#ref_829_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Meta, "meta");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_829_16">Meta</A> (<A HREF="terminal_interface-curses__ads.htm#ref_905_29">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_906_29">SwitchOn</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_829_16">Meta</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1074_29">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1075_29">SwitchOn</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_905_14">Set_Meta_Mode</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1074_14">Set_Meta_Mode</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_837_14" HREF="terminal_interface-curses__ads.htm#ref_911_14">Set_KeyPad_Mode</A></span> (<span class="symbol"><A NAME="ref_837_31" HREF="terminal_interface-curses__ads.htm#ref_911_31">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_838_31" HREF="terminal_interface-curses__ads.htm#ref_912_31">SwitchOn</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_837_14" HREF="terminal_interface-curses__ads.htm#ref_1080_14">Set_KeyPad_Mode</A></span> (<span class="symbol"><A NAME="ref_837_31" HREF="terminal_interface-curses__ads.htm#ref_1080_31">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_838_31" HREF="terminal_interface-curses__ads.htm#ref_1081_31">SwitchOn</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_840_16">Keypad</A></span> (<span class="symbol"><A NAME="ref_840_24" HREF="terminal_interface-curses__adb.htm#ref_840_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_840_36" HREF="terminal_interface-curses__adb.htm#ref_840_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_840_16">Keypad</A></span> (<span class="symbol"><A NAME="ref_840_24" HREF="terminal_interface-curses__adb.htm#ref_840_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_840_36" HREF="terminal_interface-curses__adb.htm#ref_840_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Keypad, "keypad");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_840_16">Keypad</A> (<A HREF="terminal_interface-curses__ads.htm#ref_911_31">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_912_31">SwitchOn</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_840_16">Keypad</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1080_31">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1081_31">SwitchOn</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_911_14">Set_KeyPad_Mode</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1080_14">Set_KeyPad_Mode</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_848_13" HREF="terminal_interface-curses__ads.htm#ref_916_13">Get_KeyPad_Mode</A></span> (<span class="symbol"><A NAME="ref_848_30" HREF="terminal_interface-curses__ads.htm#ref_916_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
+ <b>function</b> <span class="symbol"><A NAME="ref_848_13" HREF="terminal_interface-curses__ads.htm#ref_1085_13">Get_KeyPad_Mode</A></span> (<span class="symbol"><A NAME="ref_848_30" HREF="terminal_interface-curses__ads.htm#ref_1085_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
<b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_851_16">Is_Keypad</A></span> (<span class="symbol"><A NAME="ref_851_27" HREF="terminal_interface-curses__adb.htm#ref_851_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_851_16">Is_Keypad</A></span> (<span class="symbol"><A NAME="ref_851_27" HREF="terminal_interface-curses__adb.htm#ref_851_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Import (C, Is_Keypad, "is_keypad");
<b>begin</b>
- <b>return</b> (<A HREF="terminal_interface-curses__adb.htm#ref_851_16">Is_Keypad</A> (<A HREF="terminal_interface-curses__ads.htm#ref_916_30">Win</A>) /= <A HREF="terminal_interface-curses__ads.htm#ref_1926_4">Curses_Bool_False</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_916_13">Get_KeyPad_Mode</A>;
+ <b>return</b> (<A HREF="terminal_interface-curses__adb.htm#ref_851_16">Is_Keypad</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1085_30">Win</A>) /= <A HREF="terminal_interface-curses__ads.htm#ref_2100_4">Curses_Bool_False</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1085_13">Get_KeyPad_Mode</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_857_14" HREF="terminal_interface-curses__ads.htm#ref_924_14">Half_Delay</A></span> (<span class="symbol"><A NAME="ref_857_26" HREF="terminal_interface-curses__ads.htm#ref_924_26">Amount</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_921_9">Half_Delay_Amount</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_857_14" HREF="terminal_interface-curses__ads.htm#ref_1093_14">Half_Delay</A></span> (<span class="symbol"><A NAME="ref_857_26" HREF="terminal_interface-curses__ads.htm#ref_1093_26">Amount</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1090_9">Half_Delay_Amount</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_859_16">Halfdelay</A></span> (<span class="symbol"><A NAME="ref_859_27" HREF="terminal_interface-curses__adb.htm#ref_859_16">Amount</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_859_16">Halfdelay</A></span> (<span class="symbol"><A NAME="ref_859_27" HREF="terminal_interface-curses__adb.htm#ref_859_16">Amount</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Halfdelay, "halfdelay");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_859_16">Halfdelay</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_924_26">Amount</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_859_16">Halfdelay</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1093_26">Amount</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_924_14">Half_Delay</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1093_14">Half_Delay</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_867_14" HREF="terminal_interface-curses__ads.htm#ref_929_14">Set_Flush_On_Interrupt_Mode</A></span>
- (<span class="symbol"><A NAME="ref_868_7" HREF="terminal_interface-curses__ads.htm#ref_930_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_869_7" HREF="terminal_interface-curses__ads.htm#ref_931_7">Mode</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_867_14" HREF="terminal_interface-curses__ads.htm#ref_1098_14">Set_Flush_On_Interrupt_Mode</A></span>
+ (<span class="symbol"><A NAME="ref_868_7" HREF="terminal_interface-curses__ads.htm#ref_1099_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_869_7" HREF="terminal_interface-curses__ads.htm#ref_1100_7">Mode</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_871_16">Intrflush</A></span> (<span class="symbol"><A NAME="ref_871_27" HREF="terminal_interface-curses__adb.htm#ref_871_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_871_41" HREF="terminal_interface-curses__adb.htm#ref_871_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_871_16">Intrflush</A></span> (<span class="symbol"><A NAME="ref_871_27" HREF="terminal_interface-curses__adb.htm#ref_871_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_871_41" HREF="terminal_interface-curses__adb.htm#ref_871_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Intrflush, "intrflush");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_871_16">Intrflush</A> (<A HREF="terminal_interface-curses__ads.htm#ref_930_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_931_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_871_16">Intrflush</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1099_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1100_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_929_14">Set_Flush_On_Interrupt_Mode</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1098_14">Set_Flush_On_Interrupt_Mode</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_879_14" HREF="terminal_interface-curses__ads.htm#ref_936_14">Set_Queue_Interrupt_Mode</A></span>
- (<span class="symbol"><A NAME="ref_880_7" HREF="terminal_interface-curses__ads.htm#ref_937_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_881_7" HREF="terminal_interface-curses__ads.htm#ref_938_7">Flush</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_879_14" HREF="terminal_interface-curses__ads.htm#ref_1105_14">Set_Queue_Interrupt_Mode</A></span>
+ (<span class="symbol"><A NAME="ref_880_7" HREF="terminal_interface-curses__ads.htm#ref_1106_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_881_7" HREF="terminal_interface-curses__ads.htm#ref_1107_7">Flush</A></span> : Boolean := True)
<b>is</b>
<b>procedure</b> <span class="symbol"><A NAME="ref_883_17">Qiflush</A></span>;
<b>pragma</b> Import (C, Qiflush, "qiflush");
<b>procedure</b> <span class="symbol"><A NAME="ref_885_17">No_Qiflush</A></span>;
<b>pragma</b> Import (C, No_Qiflush, "noqiflush");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_937_7">Win</A> = <A HREF="terminal_interface-curses__ads.htm#ref_58_4">Null_Window</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1106_7">Win</A> = <A HREF="terminal_interface-curses__ads.htm#ref_56_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_938_7">Flush</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1107_7">Flush</A> <b>then</b>
<A HREF="terminal_interface-curses__adb.htm#ref_883_17">Qiflush</A>;
<b>else</b>
<A HREF="terminal_interface-curses__adb.htm#ref_885_17">No_Qiflush</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_936_14">Set_Queue_Interrupt_Mode</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1105_14">Set_Queue_Interrupt_Mode</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_898_14" HREF="terminal_interface-curses__ads.htm#ref_944_14">Set_NoDelay_Mode</A></span>
- (<span class="symbol"><A NAME="ref_899_7" HREF="terminal_interface-curses__ads.htm#ref_945_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_900_7" HREF="terminal_interface-curses__ads.htm#ref_946_7">Mode</A></span> : Boolean := False)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_898_14" HREF="terminal_interface-curses__ads.htm#ref_1113_14">Set_NoDelay_Mode</A></span>
+ (<span class="symbol"><A NAME="ref_899_7" HREF="terminal_interface-curses__ads.htm#ref_1114_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_900_7" HREF="terminal_interface-curses__ads.htm#ref_1115_7">Mode</A></span> : Boolean := False)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_902_16">Nodelay</A></span> (<span class="symbol"><A NAME="ref_902_25" HREF="terminal_interface-curses__adb.htm#ref_902_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_902_39" HREF="terminal_interface-curses__adb.htm#ref_902_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_902_16">Nodelay</A></span> (<span class="symbol"><A NAME="ref_902_25" HREF="terminal_interface-curses__adb.htm#ref_902_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_902_39" HREF="terminal_interface-curses__adb.htm#ref_902_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Nodelay, "nodelay");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_902_16">Nodelay</A> (<A HREF="terminal_interface-curses__ads.htm#ref_945_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_946_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_902_16">Nodelay</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1114_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1115_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_944_14">Set_NoDelay_Mode</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1113_14">Set_NoDelay_Mode</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_910_14" HREF="terminal_interface-curses__ads.htm#ref_953_14">Set_Timeout_Mode</A></span> (<span class="symbol"><A NAME="ref_910_32" HREF="terminal_interface-curses__ads.htm#ref_953_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_911_32" HREF="terminal_interface-curses__ads.htm#ref_954_32">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_950_9">Timeout_Mode</A>;
- <span class="symbol"><A NAME="ref_912_32" HREF="terminal_interface-curses__ads.htm#ref_955_32">Amount</A></span> : Natural)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_910_14" HREF="terminal_interface-curses__ads.htm#ref_1122_14">Set_Timeout_Mode</A></span> (<span class="symbol"><A NAME="ref_910_32" HREF="terminal_interface-curses__ads.htm#ref_1122_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_911_32" HREF="terminal_interface-curses__ads.htm#ref_1123_32">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1119_9">Timeout_Mode</A>;
+ <span class="symbol"><A NAME="ref_912_32" HREF="terminal_interface-curses__ads.htm#ref_1124_32">Amount</A></span> : Natural)
<b>is</b>
- <b>procedure</b> <span class="symbol"><A NAME="ref_914_17">Wtimeout</A></span> (<span class="symbol"><A NAME="ref_914_27" HREF="terminal_interface-curses__adb.htm#ref_914_17">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_914_41" HREF="terminal_interface-curses__adb.htm#ref_914_17">Amount</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_914_17">Wtimeout</A></span> (<span class="symbol"><A NAME="ref_914_27" HREF="terminal_interface-curses__adb.htm#ref_914_17">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_914_41" HREF="terminal_interface-curses__adb.htm#ref_914_17">Amount</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>);
<b>pragma</b> Import (C, Wtimeout, "wtimeout");
- <span class="symbol"><A NAME="ref_917_7">Time</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_917_7">Time</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <b>case</b> <A HREF="terminal_interface-curses__ads.htm#ref_954_32">Mode</A> <b>is</b>
- <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_950_26">Blocking</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_917_7">Time</A> := -1;
- <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_950_36">Non_Blocking</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_917_7">Time</A> := 0;
- <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_950_50">Delayed</A> =&gt;
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_955_32">Amount</A> = 0 <b>then</b>
+ <b>case</b> <A HREF="terminal_interface-curses__ads.htm#ref_1123_32">Mode</A> <b>is</b>
+ <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1119_26">Blocking</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_917_7">Time</A> := -1;
+ <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1119_36">Non_Blocking</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_917_7">Time</A> := 0;
+ <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1119_50">Delayed</A> =&gt;
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1124_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#ref_917_7">Time</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_955_32">Amount</A>);
+ <A HREF="terminal_interface-curses__adb.htm#ref_917_7">Time</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1124_32">Amount</A>);
<b>end</b> <b>case</b>;
- <A HREF="terminal_interface-curses__adb.htm#ref_914_17">Wtimeout</A> (<A HREF="terminal_interface-curses__ads.htm#ref_953_32">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_917_7">Time</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_953_14">Set_Timeout_Mode</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_914_17">Wtimeout</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1122_32">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_917_7">Time</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1122_14">Set_Timeout_Mode</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_931_14" HREF="terminal_interface-curses__ads.htm#ref_965_14">Set_Escape_Timer_Mode</A></span>
- (<span class="symbol"><A NAME="ref_932_7" HREF="terminal_interface-curses__ads.htm#ref_966_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_933_7" HREF="terminal_interface-curses__ads.htm#ref_967_7">Timer_Off</A></span> : Boolean := False)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_931_14" HREF="terminal_interface-curses__ads.htm#ref_1134_14">Set_Escape_Timer_Mode</A></span>
+ (<span class="symbol"><A NAME="ref_932_7" HREF="terminal_interface-curses__ads.htm#ref_1135_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_933_7" HREF="terminal_interface-curses__ads.htm#ref_1136_7">Timer_Off</A></span> : Boolean := False)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_935_16">Notimeout</A></span> (<span class="symbol"><A NAME="ref_935_27" HREF="terminal_interface-curses__adb.htm#ref_935_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_935_41" HREF="terminal_interface-curses__adb.htm#ref_935_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_935_16">Notimeout</A></span> (<span class="symbol"><A NAME="ref_935_27" HREF="terminal_interface-curses__adb.htm#ref_935_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_935_41" HREF="terminal_interface-curses__adb.htm#ref_935_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Notimeout, "notimeout");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_935_16">Notimeout</A> (<A HREF="terminal_interface-curses__ads.htm#ref_966_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_967_7">Timer_Off</A>)))
- = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_935_16">Notimeout</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1135_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1136_7">Timer_Off</A>)))
+ = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_965_14">Set_Escape_Timer_Mode</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1134_14">Set_Escape_Timer_Mode</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_945_14" HREF="terminal_interface-curses__ads.htm#ref_976_14">Set_NL_Mode</A></span> (<span class="symbol"><A NAME="ref_945_27" HREF="terminal_interface-curses__ads.htm#ref_976_27">SwitchOn</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_946_14" HREF="terminal_interface-curses__ads.htm#ref_1145_14">Set_NL_Mode</A></span> (<span class="symbol"><A NAME="ref_946_27" HREF="terminal_interface-curses__ads.htm#ref_1145_27">SwitchOn</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_947_16">NL</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_948_16">NL</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, NL, "nl");
- <b>function</b> <span class="symbol"><A NAME="ref_949_16">NoNL</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_950_16">NoNL</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, NoNL, "nonl");
- <span class="symbol"><A NAME="ref_952_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_953_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_976_27">SwitchOn</A> <b>then</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_952_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_947_16">NL</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1145_27">SwitchOn</A> <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#ref_953_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_948_16">NL</A>;
<b>else</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_952_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_949_16">NoNL</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_953_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_950_16">NoNL</A>;
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_952_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_953_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_976_14">Set_NL_Mode</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1145_14">Set_NL_Mode</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_964_14" HREF="terminal_interface-curses__ads.htm#ref_982_14">Clear_On_Next_Update</A></span>
- (<span class="symbol"><A NAME="ref_965_7" HREF="terminal_interface-curses__ads.htm#ref_983_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_966_7" HREF="terminal_interface-curses__ads.htm#ref_984_7">Do_Clear</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_965_14" HREF="terminal_interface-curses__ads.htm#ref_1151_14">Clear_On_Next_Update</A></span>
+ (<span class="symbol"><A NAME="ref_966_7" HREF="terminal_interface-curses__ads.htm#ref_1152_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_967_7" HREF="terminal_interface-curses__ads.htm#ref_1153_7">Do_Clear</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_968_16">Clear_Ok</A></span> (<span class="symbol"><A NAME="ref_968_26" HREF="terminal_interface-curses__adb.htm#ref_968_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_968_38" HREF="terminal_interface-curses__adb.htm#ref_968_16">Flag</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_969_16">Clear_Ok</A></span> (<span class="symbol"><A NAME="ref_969_26" HREF="terminal_interface-curses__adb.htm#ref_969_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_969_38" HREF="terminal_interface-curses__adb.htm#ref_969_16">Flag</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Clear_Ok, "clearok");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_968_16">Clear_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_983_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_984_7">Do_Clear</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_969_16">Clear_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1152_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1153_7">Do_Clear</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_982_14">Clear_On_Next_Update</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1151_14">Clear_On_Next_Update</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_976_14" HREF="terminal_interface-curses__ads.htm#ref_989_14">Use_Insert_Delete_Line</A></span>
- (<span class="symbol"><A NAME="ref_977_7" HREF="terminal_interface-curses__ads.htm#ref_990_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_978_7" HREF="terminal_interface-curses__ads.htm#ref_991_7">Do_Idl</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_977_14" HREF="terminal_interface-curses__ads.htm#ref_1158_14">Use_Insert_Delete_Line</A></span>
+ (<span class="symbol"><A NAME="ref_978_7" HREF="terminal_interface-curses__ads.htm#ref_1159_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_979_7" HREF="terminal_interface-curses__ads.htm#ref_1160_7">Do_Idl</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_980_16">IDL_Ok</A></span> (<span class="symbol"><A NAME="ref_980_24" HREF="terminal_interface-curses__adb.htm#ref_980_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_980_36" HREF="terminal_interface-curses__adb.htm#ref_980_16">Flag</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_981_16">IDL_Ok</A></span> (<span class="symbol"><A NAME="ref_981_24" HREF="terminal_interface-curses__adb.htm#ref_981_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_981_36" HREF="terminal_interface-curses__adb.htm#ref_981_16">Flag</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, IDL_Ok, "idlok");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_980_16">IDL_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_990_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_991_7">Do_Idl</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_981_16">IDL_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1159_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1160_7">Do_Idl</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_989_14">Use_Insert_Delete_Line</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1158_14">Use_Insert_Delete_Line</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_988_14" HREF="terminal_interface-curses__ads.htm#ref_996_14">Use_Insert_Delete_Character</A></span>
- (<span class="symbol"><A NAME="ref_989_7" HREF="terminal_interface-curses__ads.htm#ref_997_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_990_7" HREF="terminal_interface-curses__ads.htm#ref_998_7">Do_Idc</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_989_14" HREF="terminal_interface-curses__ads.htm#ref_1165_14">Use_Insert_Delete_Character</A></span>
+ (<span class="symbol"><A NAME="ref_990_7" HREF="terminal_interface-curses__ads.htm#ref_1166_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_991_7" HREF="terminal_interface-curses__ads.htm#ref_1167_7">Do_Idc</A></span> : Boolean := True)
<b>is</b>
- <b>procedure</b> <span class="symbol"><A NAME="ref_992_17">IDC_Ok</A></span> (<span class="symbol"><A NAME="ref_992_25" HREF="terminal_interface-curses__adb.htm#ref_992_17">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_992_37" HREF="terminal_interface-curses__adb.htm#ref_992_17">Flag</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_993_17">IDC_Ok</A></span> (<span class="symbol"><A NAME="ref_993_25" HREF="terminal_interface-curses__adb.htm#ref_993_17">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_993_37" HREF="terminal_interface-curses__adb.htm#ref_993_17">Flag</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>);
<b>pragma</b> Import (C, IDC_Ok, "idcok");
<b>begin</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_992_17">IDC_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_997_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_998_7">Do_Idc</A>)));
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_996_14">Use_Insert_Delete_Character</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_993_17">IDC_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1166_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1167_7">Do_Idc</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1165_14">Use_Insert_Delete_Character</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_998_14" HREF="terminal_interface-curses__ads.htm#ref_1003_14">Leave_Cursor_After_Update</A></span>
- (<span class="symbol"><A NAME="ref_999_7" HREF="terminal_interface-curses__ads.htm#ref_1004_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1000_7" HREF="terminal_interface-curses__ads.htm#ref_1005_7">Do_Leave</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_999_14" HREF="terminal_interface-curses__ads.htm#ref_1172_14">Leave_Cursor_After_Update</A></span>
+ (<span class="symbol"><A NAME="ref_1000_7" HREF="terminal_interface-curses__ads.htm#ref_1173_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1001_7" HREF="terminal_interface-curses__ads.htm#ref_1174_7">Do_Leave</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1002_16">Leave_Ok</A></span> (<span class="symbol"><A NAME="ref_1002_26" HREF="terminal_interface-curses__adb.htm#ref_1002_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_1002_38" HREF="terminal_interface-curses__adb.htm#ref_1002_16">Flag</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1003_16">Leave_Ok</A></span> (<span class="symbol"><A NAME="ref_1003_26" HREF="terminal_interface-curses__adb.htm#ref_1003_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_1003_38" HREF="terminal_interface-curses__adb.htm#ref_1003_16">Flag</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Leave_Ok, "leaveok");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1002_16">Leave_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1004_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1005_7">Do_Leave</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1003_16">Leave_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1173_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1174_7">Do_Leave</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1003_14">Leave_Cursor_After_Update</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1172_14">Leave_Cursor_After_Update</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1010_14" HREF="terminal_interface-curses__ads.htm#ref_1010_14">Immediate_Update_Mode</A></span>
- (<span class="symbol"><A NAME="ref_1011_7" HREF="terminal_interface-curses__ads.htm#ref_1011_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1012_7" HREF="terminal_interface-curses__ads.htm#ref_1012_7">Mode</A></span> : Boolean := False)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1011_14" HREF="terminal_interface-curses__ads.htm#ref_1179_14">Immediate_Update_Mode</A></span>
+ (<span class="symbol"><A NAME="ref_1012_7" HREF="terminal_interface-curses__ads.htm#ref_1180_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1013_7" HREF="terminal_interface-curses__ads.htm#ref_1181_7">Mode</A></span> : Boolean := False)
<b>is</b>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1014_17">Immedok</A></span> (<span class="symbol"><A NAME="ref_1014_26" HREF="terminal_interface-curses__adb.htm#ref_1014_17">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_1014_40" HREF="terminal_interface-curses__adb.htm#ref_1014_17">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1015_17">Immedok</A></span> (<span class="symbol"><A NAME="ref_1015_26" HREF="terminal_interface-curses__adb.htm#ref_1015_17">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_1015_40" HREF="terminal_interface-curses__adb.htm#ref_1015_17">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>);
<b>pragma</b> Import (C, Immedok, "immedok");
<b>begin</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_1014_17">Immedok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1011_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1012_7">Mode</A>)));
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1010_14">Immediate_Update_Mode</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_1015_17">Immedok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1180_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1181_7">Mode</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1179_14">Immediate_Update_Mode</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1020_14" HREF="terminal_interface-curses__ads.htm#ref_1017_14">Allow_Scrolling</A></span>
- (<span class="symbol"><A NAME="ref_1021_7" HREF="terminal_interface-curses__ads.htm#ref_1018_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1022_7" HREF="terminal_interface-curses__ads.htm#ref_1019_7">Mode</A></span> : Boolean := False)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1021_14" HREF="terminal_interface-curses__ads.htm#ref_1186_14">Allow_Scrolling</A></span>
+ (<span class="symbol"><A NAME="ref_1022_7" HREF="terminal_interface-curses__ads.htm#ref_1187_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1023_7" HREF="terminal_interface-curses__ads.htm#ref_1188_7">Mode</A></span> : Boolean := False)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1024_16">Scrollok</A></span> (<span class="symbol"><A NAME="ref_1024_26" HREF="terminal_interface-curses__adb.htm#ref_1024_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_1024_40" HREF="terminal_interface-curses__adb.htm#ref_1024_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1025_16">Scrollok</A></span> (<span class="symbol"><A NAME="ref_1025_26" HREF="terminal_interface-curses__adb.htm#ref_1025_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_1025_40" HREF="terminal_interface-curses__adb.htm#ref_1025_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Scrollok, "scrollok");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1024_16">Scrollok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1018_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1019_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1025_16">Scrollok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1187_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1188_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1017_14">Allow_Scrolling</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1186_14">Allow_Scrolling</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_1032_13" HREF="terminal_interface-curses__ads.htm#ref_1023_13">Scrolling_Allowed</A></span> (<span class="symbol"><A NAME="ref_1032_32" HREF="terminal_interface-curses__ads.htm#ref_1023_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
+ <b>function</b> <span class="symbol"><A NAME="ref_1033_13" HREF="terminal_interface-curses__ads.htm#ref_1192_13">Scrolling_Allowed</A></span> (<span class="symbol"><A NAME="ref_1033_32" HREF="terminal_interface-curses__ads.htm#ref_1192_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
<b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1035_16">Is_Scroll_Ok</A></span> (<span class="symbol"><A NAME="ref_1035_30" HREF="terminal_interface-curses__adb.htm#ref_1035_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1036_16">Is_Scroll_Ok</A></span> (<span class="symbol"><A NAME="ref_1036_30" HREF="terminal_interface-curses__adb.htm#ref_1036_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Import (C, Is_Scroll_Ok, "is_scrollok");
<b>begin</b>
- <b>return</b> (<A HREF="terminal_interface-curses__adb.htm#ref_1035_16">Is_Scroll_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1023_32">Win</A>) /= <A HREF="terminal_interface-curses__ads.htm#ref_1926_4">Curses_Bool_False</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1023_13">Scrolling_Allowed</A>;
+ <b>return</b> (<A HREF="terminal_interface-curses__adb.htm#ref_1036_16">Is_Scroll_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1192_32">Win</A>) /= <A HREF="terminal_interface-curses__ads.htm#ref_2100_4">Curses_Bool_False</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1192_13">Scrolling_Allowed</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1041_14" HREF="terminal_interface-curses__ads.htm#ref_1028_14">Set_Scroll_Region</A></span>
- (<span class="symbol"><A NAME="ref_1042_7" HREF="terminal_interface-curses__ads.htm#ref_1029_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1043_7" HREF="terminal_interface-curses__ads.htm#ref_1030_7">Top_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1044_7" HREF="terminal_interface-curses__ads.htm#ref_1031_7">Bottom_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1042_14" HREF="terminal_interface-curses__ads.htm#ref_1197_14">Set_Scroll_Region</A></span>
+ (<span class="symbol"><A NAME="ref_1043_7" HREF="terminal_interface-curses__ads.htm#ref_1198_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1044_7" HREF="terminal_interface-curses__ads.htm#ref_1199_7">Top_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1045_7" HREF="terminal_interface-curses__ads.htm#ref_1200_7">Bottom_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1046_16">Wsetscrreg</A></span> (<span class="symbol"><A NAME="ref_1046_28" HREF="terminal_interface-curses__adb.htm#ref_1046_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1047_28" HREF="terminal_interface-curses__adb.htm#ref_1046_16">Lin</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1048_28" HREF="terminal_interface-curses__adb.htm#ref_1046_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1047_16">Wsetscrreg</A></span> (<span class="symbol"><A NAME="ref_1047_28" HREF="terminal_interface-curses__adb.htm#ref_1047_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1048_28" HREF="terminal_interface-curses__adb.htm#ref_1047_16">Lin</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1049_28" HREF="terminal_interface-curses__adb.htm#ref_1047_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wsetscrreg, "wsetscrreg");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1046_16">Wsetscrreg</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1029_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1030_7">Top_Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1031_7">Bottom_Line</A>))
- = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1047_16">Wsetscrreg</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1198_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1199_7">Top_Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1200_7">Bottom_Line</A>))
+ = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1028_14">Set_Scroll_Region</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1197_14">Set_Scroll_Region</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1057_14" HREF="terminal_interface-curses__ads.htm#ref_1041_14">Update_Screen</A></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1059_14" HREF="terminal_interface-curses__ads.htm#ref_1210_14">Update_Screen</A></span>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1059_16">Do_Update</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1061_16">Do_Update</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Do_Update, "doupdate");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1059_16">Do_Update</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1061_16">Do_Update</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1041_14">Update_Screen</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1210_14">Update_Screen</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1067_14" HREF="terminal_interface-curses__ads.htm#ref_1046_14">Refresh</A></span> (<span class="symbol"><A NAME="ref_1067_23" HREF="terminal_interface-curses__ads.htm#ref_1046_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1069_14" HREF="terminal_interface-curses__ads.htm#ref_1215_14">Refresh</A></span> (<span class="symbol"><A NAME="ref_1069_23" HREF="terminal_interface-curses__ads.htm#ref_1215_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1069_16">Wrefresh</A></span> (<span class="symbol"><A NAME="ref_1069_26" HREF="terminal_interface-curses__adb.htm#ref_1069_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1071_16">Wrefresh</A></span> (<span class="symbol"><A NAME="ref_1071_26" HREF="terminal_interface-curses__adb.htm#ref_1071_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wrefresh, "wrefresh");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1069_16">Wrefresh</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1046_23">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1071_16">Wrefresh</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1215_23">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1046_14">Refresh</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1215_14">Refresh</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1077_14" HREF="terminal_interface-curses__ads.htm#ref_1053_14">Refresh_Without_Update</A></span>
- (<span class="symbol"><A NAME="ref_1078_7" HREF="terminal_interface-curses__ads.htm#ref_1054_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1079_14" HREF="terminal_interface-curses__ads.htm#ref_1222_14">Refresh_Without_Update</A></span>
+ (<span class="symbol"><A NAME="ref_1080_7" HREF="terminal_interface-curses__ads.htm#ref_1223_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1080_16">Wnoutrefresh</A></span> (<span class="symbol"><A NAME="ref_1080_30" HREF="terminal_interface-curses__adb.htm#ref_1080_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1082_16">Wnoutrefresh</A></span> (<span class="symbol"><A NAME="ref_1082_30" HREF="terminal_interface-curses__adb.htm#ref_1082_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wnoutrefresh, "wnoutrefresh");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1080_16">Wnoutrefresh</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1054_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1082_16">Wnoutrefresh</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1223_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1053_14">Refresh_Without_Update</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1222_14">Refresh_Without_Update</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1088_14" HREF="terminal_interface-curses__ads.htm#ref_1060_14">Redraw</A></span> (<span class="symbol"><A NAME="ref_1088_22" HREF="terminal_interface-curses__ads.htm#ref_1060_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1090_14" HREF="terminal_interface-curses__ads.htm#ref_1229_14">Redraw</A></span> (<span class="symbol"><A NAME="ref_1090_22" HREF="terminal_interface-curses__ads.htm#ref_1229_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1090_16">Redrawwin</A></span> (<span class="symbol"><A NAME="ref_1090_27" HREF="terminal_interface-curses__adb.htm#ref_1090_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1092_16">Redrawwin</A></span> (<span class="symbol"><A NAME="ref_1092_27" HREF="terminal_interface-curses__adb.htm#ref_1092_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Redrawwin, "redrawwin");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1090_16">Redrawwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1060_22">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1092_16">Redrawwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1229_22">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1060_14">Redraw</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1229_14">Redraw</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1098_14" HREF="terminal_interface-curses__ads.htm#ref_1064_14">Redraw</A></span>
- (<span class="symbol"><A NAME="ref_1099_7" HREF="terminal_interface-curses__ads.htm#ref_1064_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1100_7" HREF="terminal_interface-curses__ads.htm#ref_1065_22">Begin_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1101_7" HREF="terminal_interface-curses__ads.htm#ref_1066_22">Line_Count</A></span> : Positive)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1100_14" HREF="terminal_interface-curses__ads.htm#ref_1233_14">Redraw</A></span>
+ (<span class="symbol"><A NAME="ref_1101_7" HREF="terminal_interface-curses__ads.htm#ref_1233_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1102_7" HREF="terminal_interface-curses__ads.htm#ref_1234_22">Begin_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1103_7" HREF="terminal_interface-curses__ads.htm#ref_1235_22">Line_Count</A></span> : Positive)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1103_16">Wredrawln</A></span> (<span class="symbol"><A NAME="ref_1103_27" HREF="terminal_interface-curses__adb.htm#ref_1103_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_1103_41" HREF="terminal_interface-curses__adb.htm#ref_1103_16">First</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>; <span class="symbol"><A NAME="ref_1103_56" HREF="terminal_interface-curses__adb.htm#ref_1103_16">Cnt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>)
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1105_16">Wredrawln</A></span> (<span class="symbol"><A NAME="ref_1105_27" HREF="terminal_interface-curses__adb.htm#ref_1105_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_1105_41" HREF="terminal_interface-curses__adb.htm#ref_1105_16">First</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>; <span class="symbol"><A NAME="ref_1105_56" HREF="terminal_interface-curses__adb.htm#ref_1105_16">Cnt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>)
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wredrawln, "wredrawln");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1103_16">Wredrawln</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1064_22">Win</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1065_22">Begin_Line</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1066_22">Line_Count</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1105_16">Wredrawln</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1233_22">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1234_22">Begin_Line</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1235_22">Line_Count</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1064_14">Redraw</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1233_14">Redraw</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1115_14" HREF="terminal_interface-curses__ads.htm#ref_1075_14">Erase</A></span> (<span class="symbol"><A NAME="ref_1115_21" HREF="terminal_interface-curses__ads.htm#ref_1075_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1118_14" HREF="terminal_interface-curses__ads.htm#ref_1244_14">Erase</A></span> (<span class="symbol"><A NAME="ref_1118_21" HREF="terminal_interface-curses__ads.htm#ref_1244_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1117_16">Werase</A></span> (<span class="symbol"><A NAME="ref_1117_24" HREF="terminal_interface-curses__adb.htm#ref_1117_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1120_16">Werase</A></span> (<span class="symbol"><A NAME="ref_1120_24" HREF="terminal_interface-curses__adb.htm#ref_1120_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Werase, "werase");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1117_16">Werase</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1075_21">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1120_16">Werase</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1244_21">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1075_14">Erase</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1244_14">Erase</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1125_14" HREF="terminal_interface-curses__ads.htm#ref_1081_14">Clear</A></span> (<span class="symbol"><A NAME="ref_1125_21" HREF="terminal_interface-curses__ads.htm#ref_1082_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1128_14" HREF="terminal_interface-curses__ads.htm#ref_1250_14">Clear</A></span> (<span class="symbol"><A NAME="ref_1128_21" HREF="terminal_interface-curses__ads.htm#ref_1251_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1127_16">Wclear</A></span> (<span class="symbol"><A NAME="ref_1127_24" HREF="terminal_interface-curses__adb.htm#ref_1127_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1130_16">Wclear</A></span> (<span class="symbol"><A NAME="ref_1130_24" HREF="terminal_interface-curses__adb.htm#ref_1130_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wclear, "wclear");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1127_16">Wclear</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1082_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1130_16">Wclear</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1251_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1081_14">Clear</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1250_14">Clear</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1135_14" HREF="terminal_interface-curses__ads.htm#ref_1088_14">Clear_To_End_Of_Screen</A></span> (<span class="symbol"><A NAME="ref_1135_38" HREF="terminal_interface-curses__ads.htm#ref_1089_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1138_14" HREF="terminal_interface-curses__ads.htm#ref_1257_14">Clear_To_End_Of_Screen</A></span> (<span class="symbol"><A NAME="ref_1138_38" HREF="terminal_interface-curses__ads.htm#ref_1258_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1137_16">Wclearbot</A></span> (<span class="symbol"><A NAME="ref_1137_27" HREF="terminal_interface-curses__adb.htm#ref_1137_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1140_16">Wclearbot</A></span> (<span class="symbol"><A NAME="ref_1140_27" HREF="terminal_interface-curses__adb.htm#ref_1140_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wclearbot, "wclrtobot");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1137_16">Wclearbot</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1089_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1140_16">Wclearbot</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1258_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1088_14">Clear_To_End_Of_Screen</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1257_14">Clear_To_End_Of_Screen</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1145_14" HREF="terminal_interface-curses__ads.htm#ref_1095_14">Clear_To_End_Of_Line</A></span> (<span class="symbol"><A NAME="ref_1145_36" HREF="terminal_interface-curses__ads.htm#ref_1096_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1148_14" HREF="terminal_interface-curses__ads.htm#ref_1264_14">Clear_To_End_Of_Line</A></span> (<span class="symbol"><A NAME="ref_1148_36" HREF="terminal_interface-curses__ads.htm#ref_1265_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1147_16">Wcleareol</A></span> (<span class="symbol"><A NAME="ref_1147_27" HREF="terminal_interface-curses__adb.htm#ref_1147_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1150_16">Wcleareol</A></span> (<span class="symbol"><A NAME="ref_1150_27" HREF="terminal_interface-curses__adb.htm#ref_1150_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wcleareol, "wclrtoeol");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1147_16">Wcleareol</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1096_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1150_16">Wcleareol</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1265_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1095_14">Clear_To_End_Of_Line</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1264_14">Clear_To_End_Of_Line</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1155_14" HREF="terminal_interface-curses__ads.htm#ref_1109_14">Set_Background</A></span>
- (<span class="symbol"><A NAME="ref_1156_7" HREF="terminal_interface-curses__ads.htm#ref_1110_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1157_7" HREF="terminal_interface-curses__ads.htm#ref_1111_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1158_14" HREF="terminal_interface-curses__ads.htm#ref_1278_14">Set_Background</A></span>
+ (<span class="symbol"><A NAME="ref_1159_7" HREF="terminal_interface-curses__ads.htm#ref_1279_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1160_7" HREF="terminal_interface-curses__ads.htm#ref_1280_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>)
<b>is</b>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1159_17">WBackground</A></span> (<span class="symbol"><A NAME="ref_1159_30" HREF="terminal_interface-curses__adb.htm#ref_1159_17">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_1159_42" HREF="terminal_interface-curses__adb.htm#ref_1159_17">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1162_17">WBackground</A></span> (<span class="symbol"><A NAME="ref_1162_30" HREF="terminal_interface-curses__adb.htm#ref_1162_17">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_1162_42" HREF="terminal_interface-curses__adb.htm#ref_1162_17">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>);
<b>pragma</b> Import (C, WBackground, "wbkgdset");
<b>begin</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_1159_17">WBackground</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1110_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1111_7">Ch</A>));
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1109_14">Set_Background</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_1162_17">WBackground</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1279_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1280_7">Ch</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1278_14">Set_Background</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1165_14" HREF="terminal_interface-curses__ads.htm#ref_1117_14">Change_Background</A></span>
- (<span class="symbol"><A NAME="ref_1166_7" HREF="terminal_interface-curses__ads.htm#ref_1118_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1167_7" HREF="terminal_interface-curses__ads.htm#ref_1119_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1168_14" HREF="terminal_interface-curses__ads.htm#ref_1286_14">Change_Background</A></span>
+ (<span class="symbol"><A NAME="ref_1169_7" HREF="terminal_interface-curses__ads.htm#ref_1287_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1170_7" HREF="terminal_interface-curses__ads.htm#ref_1288_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1169_16">WChangeBkgd</A></span> (<span class="symbol"><A NAME="ref_1169_29" HREF="terminal_interface-curses__adb.htm#ref_1169_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_1169_41" HREF="terminal_interface-curses__adb.htm#ref_1169_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1172_16">WChangeBkgd</A></span> (<span class="symbol"><A NAME="ref_1172_29" HREF="terminal_interface-curses__adb.htm#ref_1172_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_1172_41" HREF="terminal_interface-curses__adb.htm#ref_1172_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>)
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, WChangeBkgd, "wbkgd");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1169_16">WChangeBkgd</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1118_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1119_7">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1172_16">WChangeBkgd</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1287_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1288_7">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1117_14">Change_Background</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1286_14">Change_Background</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_1177_13" HREF="terminal_interface-curses__ads.htm#ref_1126_13">Get_Background</A></span> (<span class="symbol"><A NAME="ref_1177_29" HREF="terminal_interface-curses__ads.htm#ref_1126_29">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_1181_13" HREF="terminal_interface-curses__ads.htm#ref_1295_13">Get_Background</A></span> (<span class="symbol"><A NAME="ref_1181_29" HREF="terminal_interface-curses__ads.htm#ref_1295_29">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1180_16">Wgetbkgd</A></span> (<span class="symbol"><A NAME="ref_1180_26" HREF="terminal_interface-curses__adb.htm#ref_1180_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1184_16">Wgetbkgd</A></span> (<span class="symbol"><A NAME="ref_1184_26" HREF="terminal_interface-curses__adb.htm#ref_1184_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Wgetbkgd, "getbkgd");
<b>begin</b>
- <b>return</b> Chtype_To_AttrChar (<A HREF="terminal_interface-curses__adb.htm#ref_1180_16">Wgetbkgd</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1126_29">Win</A>));
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1126_13">Get_Background</A>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1184_16">Wgetbkgd</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1295_29">Win</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1295_13">Get_Background</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1186_14" HREF="terminal_interface-curses__ads.htm#ref_1153_14">Change_Lines_Status</A></span> (<span class="symbol"><A NAME="ref_1186_35" HREF="terminal_interface-curses__ads.htm#ref_1153_35">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1187_35" HREF="terminal_interface-curses__ads.htm#ref_1154_35">Start</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1188_35" HREF="terminal_interface-curses__ads.htm#ref_1155_35">Count</A></span> : Positive;
- <span class="symbol"><A NAME="ref_1189_35" HREF="terminal_interface-curses__ads.htm#ref_1156_35">State</A></span> : Boolean)
- <b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1191_16">Wtouchln</A></span> (<span class="symbol"><A NAME="ref_1191_26" HREF="terminal_interface-curses__adb.htm#ref_1191_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1192_26" HREF="terminal_interface-curses__adb.htm#ref_1191_16">Sta</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1193_26" HREF="terminal_interface-curses__adb.htm#ref_1191_16">Cnt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1194_26" HREF="terminal_interface-curses__adb.htm#ref_1191_16">Chg</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1190_14" HREF="terminal_interface-curses__ads.htm#ref_1322_14">Change_Lines_Status</A></span> (<span class="symbol"><A NAME="ref_1190_35" HREF="terminal_interface-curses__ads.htm#ref_1322_35">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1191_35" HREF="terminal_interface-curses__ads.htm#ref_1323_35">Start</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1192_35" HREF="terminal_interface-curses__ads.htm#ref_1324_35">Count</A></span> : Positive;
+ <span class="symbol"><A NAME="ref_1193_35" HREF="terminal_interface-curses__ads.htm#ref_1325_35">State</A></span> : Boolean)
+ <b>is</b>
+ <b>function</b> <span class="symbol"><A NAME="ref_1195_16">Wtouchln</A></span> (<span class="symbol"><A NAME="ref_1195_26" HREF="terminal_interface-curses__adb.htm#ref_1195_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1196_26" HREF="terminal_interface-curses__adb.htm#ref_1195_16">Sta</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1197_26" HREF="terminal_interface-curses__adb.htm#ref_1195_16">Cnt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1198_26" HREF="terminal_interface-curses__adb.htm#ref_1195_16">Chg</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wtouchln, "wtouchln");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1191_16">Wtouchln</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1153_35">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1154_35">Start</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1155_35">Count</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1156_35">State</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1195_16">Wtouchln</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1322_35">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1323_35">Start</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1324_35">Count</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1325_35">State</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1153_14">Change_Lines_Status</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1322_14">Change_Lines_Status</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1203_14" HREF="terminal_interface-curses__ads.htm#ref_1142_14">Touch</A></span> (<span class="symbol"><A NAME="ref_1203_21" HREF="terminal_interface-curses__ads.htm#ref_1142_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1208_14" HREF="terminal_interface-curses__ads.htm#ref_1311_14">Touch</A></span> (<span class="symbol"><A NAME="ref_1208_21" HREF="terminal_interface-curses__ads.htm#ref_1311_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
<b>is</b>
- <span class="symbol"><A NAME="ref_1205_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1206_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1210_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1211_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1229_14">Get_Size</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1142_21">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1205_7">Y</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1206_7">X</A>);
- <b>pragma</b> Unreferenced (<A HREF="terminal_interface-curses__adb.htm#ref_1206_7">X</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1153_14">Change_Lines_Status</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1142_21">Win</A>, 0, Positive (<A HREF="terminal_interface-curses__adb.htm#ref_1205_7">Y</A>), True);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1142_14">Touch</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_1398_14">Get_Size</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1311_21">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1210_7">Y</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1211_7">X</A>);
+ <b>pragma</b> Warnings (Off, <A HREF="terminal_interface-curses__adb.htm#ref_1211_7">X</A>); <span class="comment"><EM>-- unreferenced</EM></span>
+ <A HREF="terminal_interface-curses__ads.htm#ref_1322_14">Change_Lines_Status</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1311_21">Win</A>, 0, Positive (<A HREF="terminal_interface-curses__adb.htm#ref_1210_7">Y</A>), True);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1311_14">Touch</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1213_14" HREF="terminal_interface-curses__ads.htm#ref_1137_14">Untouch</A></span> (<span class="symbol"><A NAME="ref_1213_23" HREF="terminal_interface-curses__ads.htm#ref_1137_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1218_14" HREF="terminal_interface-curses__ads.htm#ref_1306_14">Untouch</A></span> (<span class="symbol"><A NAME="ref_1218_23" HREF="terminal_interface-curses__ads.htm#ref_1306_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
<b>is</b>
- <span class="symbol"><A NAME="ref_1215_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1216_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1220_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1221_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1229_14">Get_Size</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1137_23">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1215_7">Y</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1216_7">X</A>);
- <b>pragma</b> Unreferenced (<A HREF="terminal_interface-curses__adb.htm#ref_1216_7">X</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1153_14">Change_Lines_Status</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1137_23">Win</A>, 0, Positive (<A HREF="terminal_interface-curses__adb.htm#ref_1215_7">Y</A>), False);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1137_14">Untouch</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_1398_14">Get_Size</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1306_23">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1220_7">Y</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1221_7">X</A>);
+ <b>pragma</b> Warnings (Off, <A HREF="terminal_interface-curses__adb.htm#ref_1221_7">X</A>); <span class="comment"><EM>-- unreferenced</EM></span>
+ <A HREF="terminal_interface-curses__ads.htm#ref_1322_14">Change_Lines_Status</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1306_23">Win</A>, 0, Positive (<A HREF="terminal_interface-curses__adb.htm#ref_1220_7">Y</A>), False);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1306_14">Untouch</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1223_14" HREF="terminal_interface-curses__ads.htm#ref_1146_14">Touch</A></span> (<span class="symbol"><A NAME="ref_1223_21" HREF="terminal_interface-curses__ads.htm#ref_1146_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1224_21" HREF="terminal_interface-curses__ads.htm#ref_1147_21">Start</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1225_21" HREF="terminal_interface-curses__ads.htm#ref_1148_21">Count</A></span> : Positive)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1228_14" HREF="terminal_interface-curses__ads.htm#ref_1315_14">Touch</A></span> (<span class="symbol"><A NAME="ref_1228_21" HREF="terminal_interface-curses__ads.htm#ref_1315_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1229_21" HREF="terminal_interface-curses__ads.htm#ref_1316_21">Start</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1230_21" HREF="terminal_interface-curses__ads.htm#ref_1317_21">Count</A></span> : Positive)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1153_14">Change_Lines_Status</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1146_21">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1147_21">Start</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1148_21">Count</A>, True);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1146_14">Touch</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_1322_14">Change_Lines_Status</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1315_21">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1316_21">Start</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1317_21">Count</A>, True);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1315_14">Touch</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_1231_13" HREF="terminal_interface-curses__ads.htm#ref_1161_13">Is_Touched</A></span>
- (<span class="symbol"><A NAME="ref_1232_7" HREF="terminal_interface-curses__ads.htm#ref_1161_25">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1233_7" HREF="terminal_interface-curses__ads.htm#ref_1162_25">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>) <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_1236_13" HREF="terminal_interface-curses__ads.htm#ref_1330_13">Is_Touched</A></span>
+ (<span class="symbol"><A NAME="ref_1237_7" HREF="terminal_interface-curses__ads.htm#ref_1330_25">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1238_7" HREF="terminal_interface-curses__ads.htm#ref_1331_25">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>) <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1235_16">WLineTouched</A></span> (<span class="symbol"><A NAME="ref_1235_30" HREF="terminal_interface-curses__adb.htm#ref_1235_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_1235_42" HREF="terminal_interface-curses__adb.htm#ref_1235_16">L</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1240_16">WLineTouched</A></span> (<span class="symbol"><A NAME="ref_1240_30" HREF="terminal_interface-curses__adb.htm#ref_1240_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_1240_42" HREF="terminal_interface-curses__adb.htm#ref_1240_16">L</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Import (C, WLineTouched, "is_linetouched");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1235_16">WLineTouched</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1161_25">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1162_25">Line</A>)) = <A HREF="terminal_interface-curses__ads.htm#ref_1926_4">Curses_Bool_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1240_16">WLineTouched</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1330_25">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1331_25">Line</A>)) = <A HREF="terminal_interface-curses__ads.htm#ref_2100_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> <A HREF="terminal_interface-curses__ads.htm#ref_1161_13">Is_Touched</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1330_13">Is_Touched</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_1245_13" HREF="terminal_interface-curses__ads.htm#ref_1166_13">Is_Touched</A></span>
- (<span class="symbol"><A NAME="ref_1246_7" HREF="terminal_interface-curses__ads.htm#ref_1166_25">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>) <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_1250_13" HREF="terminal_interface-curses__ads.htm#ref_1335_13">Is_Touched</A></span>
+ (<span class="symbol"><A NAME="ref_1251_7" HREF="terminal_interface-curses__ads.htm#ref_1335_25">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>) <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1248_16">WWinTouched</A></span> (<span class="symbol"><A NAME="ref_1248_29" HREF="terminal_interface-curses__adb.htm#ref_1248_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1253_16">WWinTouched</A></span> (<span class="symbol"><A NAME="ref_1253_29" HREF="terminal_interface-curses__adb.htm#ref_1253_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Import (C, WWinTouched, "is_wintouched");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1248_16">WWinTouched</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1166_25">Win</A>) = <A HREF="terminal_interface-curses__ads.htm#ref_1926_4">Curses_Bool_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1253_16">WWinTouched</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1335_25">Win</A>) = <A HREF="terminal_interface-curses__ads.htm#ref_2100_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> <A HREF="terminal_interface-curses__ads.htm#ref_1166_13">Is_Touched</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1335_13">Is_Touched</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1258_14" HREF="terminal_interface-curses__ads.htm#ref_1175_14">Copy</A></span>
- (<span class="symbol"><A NAME="ref_1259_7" HREF="terminal_interface-curses__ads.htm#ref_1176_7">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1260_7" HREF="terminal_interface-curses__ads.htm#ref_1177_7">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1261_7" HREF="terminal_interface-curses__ads.htm#ref_1178_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1262_7" HREF="terminal_interface-curses__ads.htm#ref_1179_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1263_7" HREF="terminal_interface-curses__ads.htm#ref_1180_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1264_7" HREF="terminal_interface-curses__ads.htm#ref_1181_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1265_7" HREF="terminal_interface-curses__ads.htm#ref_1182_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1266_7" HREF="terminal_interface-curses__ads.htm#ref_1183_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1267_7" HREF="terminal_interface-curses__ads.htm#ref_1184_7">Non_Destructive_Mode</A></span> : Boolean := True)
- <b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1269_16">Copywin</A></span> (<span class="symbol"><A NAME="ref_1269_25" HREF="terminal_interface-curses__adb.htm#ref_1269_16">Src</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1270_25" HREF="terminal_interface-curses__adb.htm#ref_1269_16">Dst</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1271_25" HREF="terminal_interface-curses__adb.htm#ref_1269_16">Str</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1272_25" HREF="terminal_interface-curses__adb.htm#ref_1269_16">Slc</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1273_25" HREF="terminal_interface-curses__adb.htm#ref_1269_16">Dtr</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1274_25" HREF="terminal_interface-curses__adb.htm#ref_1269_16">Dlc</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1275_25" HREF="terminal_interface-curses__adb.htm#ref_1269_16">Dbr</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1276_25" HREF="terminal_interface-curses__adb.htm#ref_1269_16">Drc</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1277_25" HREF="terminal_interface-curses__adb.htm#ref_1269_16">Ndm</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1263_14" HREF="terminal_interface-curses__ads.htm#ref_1344_14">Copy</A></span>
+ (<span class="symbol"><A NAME="ref_1264_7" HREF="terminal_interface-curses__ads.htm#ref_1345_7">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1265_7" HREF="terminal_interface-curses__ads.htm#ref_1346_7">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1266_7" HREF="terminal_interface-curses__ads.htm#ref_1347_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1267_7" HREF="terminal_interface-curses__ads.htm#ref_1348_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1268_7" HREF="terminal_interface-curses__ads.htm#ref_1349_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1269_7" HREF="terminal_interface-curses__ads.htm#ref_1350_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1270_7" HREF="terminal_interface-curses__ads.htm#ref_1351_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1271_7" HREF="terminal_interface-curses__ads.htm#ref_1352_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1272_7" HREF="terminal_interface-curses__ads.htm#ref_1353_7">Non_Destructive_Mode</A></span> : Boolean := True)
+ <b>is</b>
+ <b>function</b> <span class="symbol"><A NAME="ref_1274_16">Copywin</A></span> (<span class="symbol"><A NAME="ref_1274_25" HREF="terminal_interface-curses__adb.htm#ref_1274_16">Src</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1275_25" HREF="terminal_interface-curses__adb.htm#ref_1274_16">Dst</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1276_25" HREF="terminal_interface-curses__adb.htm#ref_1274_16">Str</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1277_25" HREF="terminal_interface-curses__adb.htm#ref_1274_16">Slc</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1278_25" HREF="terminal_interface-curses__adb.htm#ref_1274_16">Dtr</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1279_25" HREF="terminal_interface-curses__adb.htm#ref_1274_16">Dlc</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1280_25" HREF="terminal_interface-curses__adb.htm#ref_1274_16">Dbr</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1281_25" HREF="terminal_interface-curses__adb.htm#ref_1274_16">Drc</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1282_25" HREF="terminal_interface-curses__adb.htm#ref_1274_16">Ndm</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Copywin, "copywin");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1269_16">Copywin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1176_7">Source_Window</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_1177_7">Destination_Window</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1178_7">Source_Top_Row</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1179_7">Source_Left_Column</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1180_7">Destination_Top_Row</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1181_7">Destination_Left_Column</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1182_7">Destination_Bottom_Row</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1183_7">Destination_Right_Column</A>),
- Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1184_7">Non_Destructive_Mode</A>)
- ) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1175_14">Copy</A>;
-
- <b>procedure</b> <span class="symbol"><A NAME="ref_1294_14" HREF="terminal_interface-curses__ads.htm#ref_1189_14">Overwrite</A></span>
- (<span class="symbol"><A NAME="ref_1295_7" HREF="terminal_interface-curses__ads.htm#ref_1189_25">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1296_7" HREF="terminal_interface-curses__ads.htm#ref_1190_25">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>)
- <b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1298_16">Overwrite</A></span> (<span class="symbol"><A NAME="ref_1298_27" HREF="terminal_interface-curses__adb.htm#ref_1298_16">Src</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_1298_41" HREF="terminal_interface-curses__adb.htm#ref_1298_16">Dst</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1274_16">Copywin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1345_7">Source_Window</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_1346_7">Destination_Window</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1347_7">Source_Top_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1348_7">Source_Left_Column</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1349_7">Destination_Top_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1350_7">Destination_Left_Column</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1351_7">Destination_Bottom_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1352_7">Destination_Right_Column</A>),
+ Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1353_7">Non_Destructive_Mode</A>)
+ ) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1344_14">Copy</A>;
+
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1300_14" HREF="terminal_interface-curses__ads.htm#ref_1358_14">Overwrite</A></span>
+ (<span class="symbol"><A NAME="ref_1301_7" HREF="terminal_interface-curses__ads.htm#ref_1358_25">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1302_7" HREF="terminal_interface-curses__ads.htm#ref_1359_25">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>)
+ <b>is</b>
+ <b>function</b> <span class="symbol"><A NAME="ref_1304_16">Overwrite</A></span> (<span class="symbol"><A NAME="ref_1304_27" HREF="terminal_interface-curses__adb.htm#ref_1304_16">Src</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_1304_41" HREF="terminal_interface-curses__adb.htm#ref_1304_16">Dst</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Overwrite, "overwrite");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1298_16">Overwrite</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1189_25">Source_Window</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1190_25">Destination_Window</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1304_16">Overwrite</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1358_25">Source_Window</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1359_25">Destination_Window</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1189_14">Overwrite</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1358_14">Overwrite</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1306_14" HREF="terminal_interface-curses__ads.htm#ref_1195_14">Overlay</A></span>
- (<span class="symbol"><A NAME="ref_1307_7" HREF="terminal_interface-curses__ads.htm#ref_1195_23">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1308_7" HREF="terminal_interface-curses__ads.htm#ref_1196_23">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1312_14" HREF="terminal_interface-curses__ads.htm#ref_1364_14">Overlay</A></span>
+ (<span class="symbol"><A NAME="ref_1313_7" HREF="terminal_interface-curses__ads.htm#ref_1364_23">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1314_7" HREF="terminal_interface-curses__ads.htm#ref_1365_23">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1310_16">Overlay</A></span> (<span class="symbol"><A NAME="ref_1310_25" HREF="terminal_interface-curses__adb.htm#ref_1310_16">Src</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_1310_39" HREF="terminal_interface-curses__adb.htm#ref_1310_16">Dst</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1316_16">Overlay</A></span> (<span class="symbol"><A NAME="ref_1316_25" HREF="terminal_interface-curses__adb.htm#ref_1316_16">Src</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_1316_39" HREF="terminal_interface-curses__adb.htm#ref_1316_16">Dst</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Overlay, "overlay");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1310_16">Overlay</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1195_23">Source_Window</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1196_23">Destination_Window</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1316_16">Overlay</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1364_23">Source_Window</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1365_23">Destination_Window</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1195_14">Overlay</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1364_14">Overlay</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1319_14" HREF="terminal_interface-curses__ads.htm#ref_1205_14">Insert_Delete_Lines</A></span>
- (<span class="symbol"><A NAME="ref_1320_7" HREF="terminal_interface-curses__ads.htm#ref_1206_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1321_7" HREF="terminal_interface-curses__ads.htm#ref_1207_7">Lines</A></span> : Integer := 1) <span class="comment"><EM>-- default is to insert one line above</EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1325_14" HREF="terminal_interface-curses__ads.htm#ref_1374_14">Insert_Delete_Lines</A></span>
+ (<span class="symbol"><A NAME="ref_1326_7" HREF="terminal_interface-curses__ads.htm#ref_1375_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1327_7" HREF="terminal_interface-curses__ads.htm#ref_1376_7">Lines</A></span> : Integer := 1) <span class="comment"><EM>-- default is to insert one line above</EM></span>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1323_16">Winsdelln</A></span> (<span class="symbol"><A NAME="ref_1323_27" HREF="terminal_interface-curses__adb.htm#ref_1323_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_1323_39" HREF="terminal_interface-curses__adb.htm#ref_1323_16">N</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1329_16">Winsdelln</A></span> (<span class="symbol"><A NAME="ref_1329_27" HREF="terminal_interface-curses__adb.htm#ref_1329_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_1329_39" HREF="terminal_interface-curses__adb.htm#ref_1329_16">N</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Winsdelln, "winsdelln");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1323_16">Winsdelln</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1206_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1207_7">Lines</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1329_16">Winsdelln</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1375_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1376_7">Lines</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1205_14">Insert_Delete_Lines</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1374_14">Insert_Delete_Lines</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1331_14" HREF="terminal_interface-curses__ads.htm#ref_1213_14">Delete_Line</A></span> (<span class="symbol"><A NAME="ref_1331_27" HREF="terminal_interface-curses__ads.htm#ref_1213_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1337_14" HREF="terminal_interface-curses__ads.htm#ref_1382_14">Delete_Line</A></span> (<span class="symbol"><A NAME="ref_1337_27" HREF="terminal_interface-curses__ads.htm#ref_1382_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1205_14">Insert_Delete_Lines</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1213_27">Win</A>, -1);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1213_14">Delete_Line</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_1374_14">Insert_Delete_Lines</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1382_27">Win</A>, -1);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1382_14">Delete_Line</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1337_14" HREF="terminal_interface-curses__ads.htm#ref_1219_14">Insert_Line</A></span> (<span class="symbol"><A NAME="ref_1337_27" HREF="terminal_interface-curses__ads.htm#ref_1219_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1343_14" HREF="terminal_interface-curses__ads.htm#ref_1388_14">Insert_Line</A></span> (<span class="symbol"><A NAME="ref_1343_27" HREF="terminal_interface-curses__ads.htm#ref_1388_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1205_14">Insert_Delete_Lines</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1219_27">Win</A>, 1);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1219_14">Insert_Line</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_1374_14">Insert_Delete_Lines</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1388_27">Win</A>, 1);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1388_14">Insert_Line</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1344_14" HREF="terminal_interface-curses__ads.htm#ref_1229_14">Get_Size</A></span>
- (<span class="symbol"><A NAME="ref_1345_7" HREF="terminal_interface-curses__ads.htm#ref_1230_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1346_7" HREF="terminal_interface-curses__ads.htm#ref_1231_7">Number_Of_Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_1347_7" HREF="terminal_interface-curses__ads.htm#ref_1232_7">Number_Of_Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1350_14" HREF="terminal_interface-curses__ads.htm#ref_1398_14">Get_Size</A></span>
+ (<span class="symbol"><A NAME="ref_1351_7" HREF="terminal_interface-curses__ads.htm#ref_1399_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1352_7" HREF="terminal_interface-curses__ads.htm#ref_1400_7">Number_Of_Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_1353_7" HREF="terminal_interface-curses__ads.htm#ref_1401_7">Number_Of_Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1349_16">GetMaxY</A></span> (<span class="symbol"><A NAME="ref_1349_25" HREF="terminal_interface-curses__adb.htm#ref_1349_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1355_16">GetMaxY</A></span> (<span class="symbol"><A NAME="ref_1355_25" HREF="terminal_interface-curses__adb.htm#ref_1355_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, GetMaxY, "getmaxy");
- <b>function</b> <span class="symbol"><A NAME="ref_1352_16">GetMaxX</A></span> (<span class="symbol"><A NAME="ref_1352_25" HREF="terminal_interface-curses__adb.htm#ref_1352_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1358_16">GetMaxX</A></span> (<span class="symbol"><A NAME="ref_1358_25" HREF="terminal_interface-curses__adb.htm#ref_1358_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, GetMaxX, "getmaxx");
- <span class="symbol"><A NAME="ref_1355_7">Y</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1349_16">GetMaxY</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1230_7">Win</A>);
- <span class="symbol"><A NAME="ref_1356_7">X</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1352_16">GetMaxX</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1230_7">Win</A>);
+ <span class="symbol"><A NAME="ref_1361_7">Y</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1355_16">GetMaxY</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1399_7">Win</A>);
+ <span class="symbol"><A NAME="ref_1362_7">X</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1358_16">GetMaxX</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1399_7">Win</A>);
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1231_7">Number_Of_Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1355_7">Y</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1232_7">Number_Of_Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1356_7">X</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1229_14">Get_Size</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_1400_7">Number_Of_Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1361_7">Y</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1401_7">Number_Of_Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1362_7">X</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1398_14">Get_Size</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1362_14" HREF="terminal_interface-curses__ads.htm#ref_1237_14">Get_Window_Position</A></span>
- (<span class="symbol"><A NAME="ref_1363_7" HREF="terminal_interface-curses__ads.htm#ref_1238_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1364_7" HREF="terminal_interface-curses__ads.htm#ref_1239_7">Top_Left_Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1365_7" HREF="terminal_interface-curses__ads.htm#ref_1240_7">Top_Left_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1368_14" HREF="terminal_interface-curses__ads.htm#ref_1406_14">Get_Window_Position</A></span>
+ (<span class="symbol"><A NAME="ref_1369_7" HREF="terminal_interface-curses__ads.htm#ref_1407_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1370_7" HREF="terminal_interface-curses__ads.htm#ref_1408_7">Top_Left_Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1371_7" HREF="terminal_interface-curses__ads.htm#ref_1409_7">Top_Left_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1367_16">GetBegY</A></span> (<span class="symbol"><A NAME="ref_1367_25" HREF="terminal_interface-curses__adb.htm#ref_1367_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1373_16">GetBegY</A></span> (<span class="symbol"><A NAME="ref_1373_25" HREF="terminal_interface-curses__adb.htm#ref_1373_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, GetBegY, "getbegy");
- <b>function</b> <span class="symbol"><A NAME="ref_1370_16">GetBegX</A></span> (<span class="symbol"><A NAME="ref_1370_25" HREF="terminal_interface-curses__adb.htm#ref_1370_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1376_16">GetBegX</A></span> (<span class="symbol"><A NAME="ref_1376_25" HREF="terminal_interface-curses__adb.htm#ref_1376_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, GetBegX, "getbegx");
- <span class="symbol"><A NAME="ref_1373_7">Y</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1367_16">GetBegY</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1238_7">Win</A>));
- <span class="symbol"><A NAME="ref_1374_7">X</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1370_16">GetBegX</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1238_7">Win</A>));
+ <span class="symbol"><A NAME="ref_1379_7">Y</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1373_16">GetBegY</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1407_7">Win</A>));
+ <span class="symbol"><A NAME="ref_1380_7">X</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1376_16">GetBegX</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1407_7">Win</A>));
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1239_7">Top_Left_Line</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1373_7">Y</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1240_7">Top_Left_Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1374_7">X</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1237_14">Get_Window_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_1408_7">Top_Left_Line</A> := <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1379_7">Y</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1409_7">Top_Left_Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1380_7">X</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1406_14">Get_Window_Position</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1380_14" HREF="terminal_interface-curses__ads.htm#ref_1245_14">Get_Cursor_Position</A></span>
- (<span class="symbol"><A NAME="ref_1381_7" HREF="terminal_interface-curses__ads.htm#ref_1246_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1382_7" HREF="terminal_interface-curses__ads.htm#ref_1247_7">Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1383_7" HREF="terminal_interface-curses__ads.htm#ref_1248_7">Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1386_14" HREF="terminal_interface-curses__ads.htm#ref_1414_14">Get_Cursor_Position</A></span>
+ (<span class="symbol"><A NAME="ref_1387_7" HREF="terminal_interface-curses__ads.htm#ref_1415_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1388_7" HREF="terminal_interface-curses__ads.htm#ref_1416_7">Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1389_7" HREF="terminal_interface-curses__ads.htm#ref_1417_7">Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1385_16">GetCurY</A></span> (<span class="symbol"><A NAME="ref_1385_25" HREF="terminal_interface-curses__adb.htm#ref_1385_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1391_16">GetCurY</A></span> (<span class="symbol"><A NAME="ref_1391_25" HREF="terminal_interface-curses__adb.htm#ref_1391_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, GetCurY, "getcury");
- <b>function</b> <span class="symbol"><A NAME="ref_1388_16">GetCurX</A></span> (<span class="symbol"><A NAME="ref_1388_25" HREF="terminal_interface-curses__adb.htm#ref_1388_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1394_16">GetCurX</A></span> (<span class="symbol"><A NAME="ref_1394_25" HREF="terminal_interface-curses__adb.htm#ref_1394_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, GetCurX, "getcurx");
- <span class="symbol"><A NAME="ref_1391_7">Y</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1385_16">GetCurY</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1246_7">Win</A>));
- <span class="symbol"><A NAME="ref_1392_7">X</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1388_16">GetCurX</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1246_7">Win</A>));
+ <span class="symbol"><A NAME="ref_1397_7">Y</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1391_16">GetCurY</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1415_7">Win</A>));
+ <span class="symbol"><A NAME="ref_1398_7">X</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1394_16">GetCurX</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1415_7">Win</A>));
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1247_7">Line</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1391_7">Y</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1248_7">Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1392_7">X</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1245_14">Get_Cursor_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_1416_7">Line</A> := <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1397_7">Y</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1417_7">Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1398_7">X</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1414_14">Get_Cursor_Position</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1398_14" HREF="terminal_interface-curses__ads.htm#ref_1253_14">Get_Origin_Relative_To_Parent</A></span>
- (<span class="symbol"><A NAME="ref_1399_7" HREF="terminal_interface-curses__ads.htm#ref_1254_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1400_7" HREF="terminal_interface-curses__ads.htm#ref_1255_7">Top_Left_Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1401_7" HREF="terminal_interface-curses__ads.htm#ref_1256_7">Top_Left_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1402_7" HREF="terminal_interface-curses__ads.htm#ref_1257_7">Is_Not_A_Subwindow</A></span> : <b>out</b> Boolean)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1404_14" HREF="terminal_interface-curses__ads.htm#ref_1422_14">Get_Origin_Relative_To_Parent</A></span>
+ (<span class="symbol"><A NAME="ref_1405_7" HREF="terminal_interface-curses__ads.htm#ref_1423_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1406_7" HREF="terminal_interface-curses__ads.htm#ref_1424_7">Top_Left_Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1407_7" HREF="terminal_interface-curses__ads.htm#ref_1425_7">Top_Left_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1408_7" HREF="terminal_interface-curses__ads.htm#ref_1426_7">Is_Not_A_Subwindow</A></span> : <b>out</b> Boolean)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1404_16">GetParY</A></span> (<span class="symbol"><A NAME="ref_1404_25" HREF="terminal_interface-curses__adb.htm#ref_1404_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1410_16">GetParY</A></span> (<span class="symbol"><A NAME="ref_1410_25" HREF="terminal_interface-curses__adb.htm#ref_1410_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, GetParY, "getpary");
- <b>function</b> <span class="symbol"><A NAME="ref_1407_16">GetParX</A></span> (<span class="symbol"><A NAME="ref_1407_25" HREF="terminal_interface-curses__adb.htm#ref_1407_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1413_16">GetParX</A></span> (<span class="symbol"><A NAME="ref_1413_25" HREF="terminal_interface-curses__adb.htm#ref_1413_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, GetParX, "getparx");
- <span class="symbol"><A NAME="ref_1410_7">Y</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1404_16">GetParY</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1254_7">Win</A>);
- <span class="symbol"><A NAME="ref_1411_7">X</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1407_16">GetParX</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1254_7">Win</A>);
+ <span class="symbol"><A NAME="ref_1416_7">Y</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1410_16">GetParY</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1423_7">Win</A>);
+ <span class="symbol"><A NAME="ref_1417_7">X</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1413_16">GetParX</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1423_7">Win</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1410_7">Y</A> = -1 <b>then</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1255_7">Top_Left_Line</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>'Last;
- <A HREF="terminal_interface-curses__ads.htm#ref_1256_7">Top_Left_Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>'Last;
- <A HREF="terminal_interface-curses__ads.htm#ref_1257_7">Is_Not_A_Subwindow</A> := True;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1416_7">Y</A> = -1 <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#ref_1424_7">Top_Left_Line</A> := <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>'Last;
+ <A HREF="terminal_interface-curses__ads.htm#ref_1425_7">Top_Left_Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>'Last;
+ <A HREF="terminal_interface-curses__ads.htm#ref_1426_7">Is_Not_A_Subwindow</A> := True;
<b>else</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1255_7">Top_Left_Line</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1410_7">Y</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1256_7">Top_Left_Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1411_7">X</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1257_7">Is_Not_A_Subwindow</A> := False;
+ <A HREF="terminal_interface-curses__ads.htm#ref_1424_7">Top_Left_Line</A> := <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1416_7">Y</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1425_7">Top_Left_Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1417_7">X</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1426_7">Is_Not_A_Subwindow</A> := False;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1253_14">Get_Origin_Relative_To_Parent</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1422_14">Get_Origin_Relative_To_Parent</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1424_13" HREF="terminal_interface-curses__ads.htm#ref_1268_13">New_Pad</A></span> (<span class="symbol"><A NAME="ref_1424_22" HREF="terminal_interface-curses__ads.htm#ref_1268_22">Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_1425_22" HREF="terminal_interface-curses__ads.htm#ref_1269_22">Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_1430_13" HREF="terminal_interface-curses__ads.htm#ref_1437_13">New_Pad</A></span> (<span class="symbol"><A NAME="ref_1430_22" HREF="terminal_interface-curses__ads.htm#ref_1437_22">Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_1431_22" HREF="terminal_interface-curses__ads.htm#ref_1438_22">Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1427_16">Newpad</A></span> (<span class="symbol"><A NAME="ref_1427_24" HREF="terminal_interface-curses__adb.htm#ref_1427_16">Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>; <span class="symbol"><A NAME="ref_1427_39" HREF="terminal_interface-curses__adb.htm#ref_1427_16">Columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1433_16">Newpad</A></span> (<span class="symbol"><A NAME="ref_1433_24" HREF="terminal_interface-curses__adb.htm#ref_1433_16">Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>; <span class="symbol"><A NAME="ref_1433_39" HREF="terminal_interface-curses__adb.htm#ref_1433_16">Columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>pragma</b> Import (C, Newpad, "newpad");
- <span class="symbol"><A NAME="ref_1430_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1436_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_1430_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1427_16">Newpad</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1268_22">Lines</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1269_22">Columns</A>));
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1430_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_58_4">Null_Window</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_1436_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1433_16">Newpad</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1437_22">Lines</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1438_22">Columns</A>));
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1436_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_56_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1430_7">W</A>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1268_13">New_Pad</A>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1436_7">W</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1437_13">New_Pad</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_1439_13" HREF="terminal_interface-curses__ads.htm#ref_1274_13">Sub_Pad</A></span>
- (<span class="symbol"><A NAME="ref_1440_7" HREF="terminal_interface-curses__ads.htm#ref_1275_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1441_7" HREF="terminal_interface-curses__ads.htm#ref_1276_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_1442_7" HREF="terminal_interface-curses__ads.htm#ref_1277_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_1443_7" HREF="terminal_interface-curses__ads.htm#ref_1278_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1444_7" HREF="terminal_interface-curses__ads.htm#ref_1279_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_1445_13" HREF="terminal_interface-curses__ads.htm#ref_1443_13">Sub_Pad</A></span>
+ (<span class="symbol"><A NAME="ref_1446_7" HREF="terminal_interface-curses__ads.htm#ref_1444_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1447_7" HREF="terminal_interface-curses__ads.htm#ref_1445_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_1448_7" HREF="terminal_interface-curses__ads.htm#ref_1446_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_1449_7" HREF="terminal_interface-curses__ads.htm#ref_1447_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1450_7" HREF="terminal_interface-curses__ads.htm#ref_1448_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1446_16">Subpad</A></span>
- (<span class="symbol"><A NAME="ref_1447_10" HREF="terminal_interface-curses__adb.htm#ref_1446_16">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1448_10" HREF="terminal_interface-curses__adb.htm#ref_1446_16">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1449_10" HREF="terminal_interface-curses__adb.htm#ref_1446_16">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1450_10" HREF="terminal_interface-curses__adb.htm#ref_1446_16">First_Line_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1451_10" HREF="terminal_interface-curses__adb.htm#ref_1446_16">First_Column_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1452_16">Subpad</A></span>
+ (<span class="symbol"><A NAME="ref_1453_10" HREF="terminal_interface-curses__adb.htm#ref_1452_16">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1454_10" HREF="terminal_interface-curses__adb.htm#ref_1452_16">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1455_10" HREF="terminal_interface-curses__adb.htm#ref_1452_16">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1456_10" HREF="terminal_interface-curses__adb.htm#ref_1452_16">First_Line_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1457_10" HREF="terminal_interface-curses__adb.htm#ref_1452_16">First_Column_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<b>pragma</b> Import (C, Subpad, "subpad");
- <span class="symbol"><A NAME="ref_1454_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <b>begin</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_1454_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1446_16">Subpad</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1275_7">Pad</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1276_7">Number_Of_Lines</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1277_7">Number_Of_Columns</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1278_7">First_Line_Position</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1279_7">First_Column_Position</A>));
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1454_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_58_4">Null_Window</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
- <b>end</b> <b>if</b>;
- <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1454_7">W</A>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1274_13">Sub_Pad</A>;
-
- <b>procedure</b> <span class="symbol"><A NAME="ref_1467_14" HREF="terminal_interface-curses__ads.htm#ref_1284_14">Refresh</A></span>
- (<span class="symbol"><A NAME="ref_1468_7" HREF="terminal_interface-curses__ads.htm#ref_1285_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1469_7" HREF="terminal_interface-curses__ads.htm#ref_1286_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1470_7" HREF="terminal_interface-curses__ads.htm#ref_1287_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1471_7" HREF="terminal_interface-curses__ads.htm#ref_1288_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1472_7" HREF="terminal_interface-curses__ads.htm#ref_1289_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1473_7" HREF="terminal_interface-curses__ads.htm#ref_1290_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1474_7" HREF="terminal_interface-curses__ads.htm#ref_1291_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>)
- <b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1476_16">Prefresh</A></span>
- (<span class="symbol"><A NAME="ref_1477_10" HREF="terminal_interface-curses__adb.htm#ref_1476_16">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1478_10" HREF="terminal_interface-curses__adb.htm#ref_1476_16">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1479_10" HREF="terminal_interface-curses__adb.htm#ref_1476_16">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1480_10" HREF="terminal_interface-curses__adb.htm#ref_1476_16">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1481_10" HREF="terminal_interface-curses__adb.htm#ref_1476_16">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1482_10" HREF="terminal_interface-curses__adb.htm#ref_1476_16">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1483_10" HREF="terminal_interface-curses__adb.htm#ref_1476_16">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1460_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__adb.htm#ref_1460_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1452_16">Subpad</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1444_7">Pad</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1445_7">Number_Of_Lines</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1446_7">Number_Of_Columns</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1447_7">First_Line_Position</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1448_7">First_Column_Position</A>));
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1460_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_56_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1460_7">W</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1443_13">Sub_Pad</A>;
+
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1473_14" HREF="terminal_interface-curses__ads.htm#ref_1453_14">Refresh</A></span>
+ (<span class="symbol"><A NAME="ref_1474_7" HREF="terminal_interface-curses__ads.htm#ref_1454_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1475_7" HREF="terminal_interface-curses__ads.htm#ref_1455_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1476_7" HREF="terminal_interface-curses__ads.htm#ref_1456_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1477_7" HREF="terminal_interface-curses__ads.htm#ref_1457_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1478_7" HREF="terminal_interface-curses__ads.htm#ref_1458_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1479_7" HREF="terminal_interface-curses__ads.htm#ref_1459_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1480_7" HREF="terminal_interface-curses__ads.htm#ref_1460_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>)
+ <b>is</b>
+ <b>function</b> <span class="symbol"><A NAME="ref_1482_16">Prefresh</A></span>
+ (<span class="symbol"><A NAME="ref_1483_10" HREF="terminal_interface-curses__adb.htm#ref_1482_16">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1484_10" HREF="terminal_interface-curses__adb.htm#ref_1482_16">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1485_10" HREF="terminal_interface-curses__adb.htm#ref_1482_16">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1486_10" HREF="terminal_interface-curses__adb.htm#ref_1482_16">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1487_10" HREF="terminal_interface-curses__adb.htm#ref_1482_16">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1488_10" HREF="terminal_interface-curses__adb.htm#ref_1482_16">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1489_10" HREF="terminal_interface-curses__adb.htm#ref_1482_16">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Prefresh, "prefresh");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1476_16">Prefresh</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1285_7">Pad</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1286_7">Source_Top_Row</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1287_7">Source_Left_Column</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1288_7">Destination_Top_Row</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1289_7">Destination_Left_Column</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1290_7">Destination_Bottom_Row</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1291_7">Destination_Right_Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
- <b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1284_14">Refresh</A>;
-
- <b>procedure</b> <span class="symbol"><A NAME="ref_1497_14" HREF="terminal_interface-curses__ads.htm#ref_1296_14">Refresh_Without_Update</A></span>
- (<span class="symbol"><A NAME="ref_1498_7" HREF="terminal_interface-curses__ads.htm#ref_1297_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1499_7" HREF="terminal_interface-curses__ads.htm#ref_1298_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1500_7" HREF="terminal_interface-curses__ads.htm#ref_1299_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1501_7" HREF="terminal_interface-curses__ads.htm#ref_1300_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1502_7" HREF="terminal_interface-curses__ads.htm#ref_1301_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1503_7" HREF="terminal_interface-curses__ads.htm#ref_1302_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1504_7" HREF="terminal_interface-curses__ads.htm#ref_1303_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>)
- <b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1506_16">Pnoutrefresh</A></span>
- (<span class="symbol"><A NAME="ref_1507_10" HREF="terminal_interface-curses__adb.htm#ref_1506_16">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1508_10" HREF="terminal_interface-curses__adb.htm#ref_1506_16">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1509_10" HREF="terminal_interface-curses__adb.htm#ref_1506_16">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1510_10" HREF="terminal_interface-curses__adb.htm#ref_1506_16">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1511_10" HREF="terminal_interface-curses__adb.htm#ref_1506_16">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1512_10" HREF="terminal_interface-curses__adb.htm#ref_1506_16">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1513_10" HREF="terminal_interface-curses__adb.htm#ref_1506_16">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1482_16">Prefresh</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1454_7">Pad</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1455_7">Source_Top_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1456_7">Source_Left_Column</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1457_7">Destination_Top_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1458_7">Destination_Left_Column</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1459_7">Destination_Bottom_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1460_7">Destination_Right_Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1453_14">Refresh</A>;
+
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1504_14" HREF="terminal_interface-curses__ads.htm#ref_1465_14">Refresh_Without_Update</A></span>
+ (<span class="symbol"><A NAME="ref_1505_7" HREF="terminal_interface-curses__ads.htm#ref_1466_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1506_7" HREF="terminal_interface-curses__ads.htm#ref_1467_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1507_7" HREF="terminal_interface-curses__ads.htm#ref_1468_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1508_7" HREF="terminal_interface-curses__ads.htm#ref_1469_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1509_7" HREF="terminal_interface-curses__ads.htm#ref_1470_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1510_7" HREF="terminal_interface-curses__ads.htm#ref_1471_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1511_7" HREF="terminal_interface-curses__ads.htm#ref_1472_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>)
+ <b>is</b>
+ <b>function</b> <span class="symbol"><A NAME="ref_1513_16">Pnoutrefresh</A></span>
+ (<span class="symbol"><A NAME="ref_1514_10" HREF="terminal_interface-curses__adb.htm#ref_1513_16">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1515_10" HREF="terminal_interface-curses__adb.htm#ref_1513_16">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1516_10" HREF="terminal_interface-curses__adb.htm#ref_1513_16">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1517_10" HREF="terminal_interface-curses__adb.htm#ref_1513_16">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1518_10" HREF="terminal_interface-curses__adb.htm#ref_1513_16">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1519_10" HREF="terminal_interface-curses__adb.htm#ref_1513_16">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1520_10" HREF="terminal_interface-curses__adb.htm#ref_1513_16">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Pnoutrefresh, "pnoutrefresh");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1506_16">Pnoutrefresh</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1297_7">Pad</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1298_7">Source_Top_Row</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1299_7">Source_Left_Column</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1300_7">Destination_Top_Row</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1301_7">Destination_Left_Column</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1302_7">Destination_Bottom_Row</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1303_7">Destination_Right_Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1513_16">Pnoutrefresh</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1466_7">Pad</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1467_7">Source_Top_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1468_7">Source_Left_Column</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1469_7">Destination_Top_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1470_7">Destination_Left_Column</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1471_7">Destination_Bottom_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1472_7">Destination_Right_Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1296_14">Refresh_Without_Update</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1465_14">Refresh_Without_Update</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1527_14" HREF="terminal_interface-curses__ads.htm#ref_1308_14">Add_Character_To_Pad_And_Echo_It</A></span>
- (<span class="symbol"><A NAME="ref_1528_7" HREF="terminal_interface-curses__ads.htm#ref_1309_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1529_7" HREF="terminal_interface-curses__ads.htm#ref_1310_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1535_14" HREF="terminal_interface-curses__ads.htm#ref_1477_14">Add_Character_To_Pad_And_Echo_It</A></span>
+ (<span class="symbol"><A NAME="ref_1536_7" HREF="terminal_interface-curses__ads.htm#ref_1478_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1537_7" HREF="terminal_interface-curses__ads.htm#ref_1479_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1531_16">Pechochar</A></span> (<span class="symbol"><A NAME="ref_1531_27" HREF="terminal_interface-curses__adb.htm#ref_1531_16">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_1531_41" HREF="terminal_interface-curses__adb.htm#ref_1531_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>)
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1539_16">Pechochar</A></span> (<span class="symbol"><A NAME="ref_1539_27" HREF="terminal_interface-curses__adb.htm#ref_1539_16">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_1539_41" HREF="terminal_interface-curses__adb.htm#ref_1539_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>)
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Pechochar, "pechochar");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1531_16">Pechochar</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1309_7">Pad</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1310_7">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1539_16">Pechochar</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1478_7">Pad</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1479_7">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1308_14">Add_Character_To_Pad_And_Echo_It</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1477_14">Add_Character_To_Pad_And_Echo_It</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1540_14" HREF="terminal_interface-curses__ads.htm#ref_1313_14">Add_Character_To_Pad_And_Echo_It</A></span>
- (<span class="symbol"><A NAME="ref_1541_7" HREF="terminal_interface-curses__ads.htm#ref_1314_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1542_7" HREF="terminal_interface-curses__ads.htm#ref_1315_7">Ch</A></span> : Character)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1548_14" HREF="terminal_interface-curses__ads.htm#ref_1482_14">Add_Character_To_Pad_And_Echo_It</A></span>
+ (<span class="symbol"><A NAME="ref_1549_7" HREF="terminal_interface-curses__ads.htm#ref_1483_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1550_7" HREF="terminal_interface-curses__ads.htm#ref_1484_7">Ch</A></span> : Character)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1308_14">Add_Character_To_Pad_And_Echo_It</A>
- (<A HREF="terminal_interface-curses__ads.htm#ref_1314_7">Pad</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>'(<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_1315_7">Ch</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>));
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1313_14">Add_Character_To_Pad_And_Echo_It</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_1477_14">Add_Character_To_Pad_And_Echo_It</A>
+ (<A HREF="terminal_interface-curses__ads.htm#ref_1483_7">Pad</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>'(<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_1484_7">Ch</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>));
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1482_14">Add_Character_To_Pad_And_Echo_It</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1552_14" HREF="terminal_interface-curses__ads.htm#ref_1323_14">Scroll</A></span> (<span class="symbol"><A NAME="ref_1552_22" HREF="terminal_interface-curses__ads.htm#ref_1323_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1553_22" HREF="terminal_interface-curses__ads.htm#ref_1324_22">Amount</A></span> : Integer := 1)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1560_14" HREF="terminal_interface-curses__ads.htm#ref_1492_14">Scroll</A></span> (<span class="symbol"><A NAME="ref_1560_22" HREF="terminal_interface-curses__ads.htm#ref_1492_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1561_22" HREF="terminal_interface-curses__ads.htm#ref_1493_22">Amount</A></span> : Integer := 1)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1555_16">Wscrl</A></span> (<span class="symbol"><A NAME="ref_1555_23" HREF="terminal_interface-curses__adb.htm#ref_1555_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_1555_37" HREF="terminal_interface-curses__adb.htm#ref_1555_16">N</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1563_16">Wscrl</A></span> (<span class="symbol"><A NAME="ref_1563_23" HREF="terminal_interface-curses__adb.htm#ref_1563_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_1563_37" HREF="terminal_interface-curses__adb.htm#ref_1563_16">N</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wscrl, "wscrl");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1555_16">Wscrl</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1323_22">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1324_22">Amount</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1563_16">Wscrl</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1492_22">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1493_22">Amount</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1323_14">Scroll</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1492_14">Scroll</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1565_14" HREF="terminal_interface-curses__ads.htm#ref_1335_14">Delete_Character</A></span> (<span class="symbol"><A NAME="ref_1565_32" HREF="terminal_interface-curses__ads.htm#ref_1335_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1573_14" HREF="terminal_interface-curses__ads.htm#ref_1504_14">Delete_Character</A></span> (<span class="symbol"><A NAME="ref_1573_32" HREF="terminal_interface-curses__ads.htm#ref_1504_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1567_16">Wdelch</A></span> (<span class="symbol"><A NAME="ref_1567_24" HREF="terminal_interface-curses__adb.htm#ref_1567_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1575_16">Wdelch</A></span> (<span class="symbol"><A NAME="ref_1575_24" HREF="terminal_interface-curses__adb.htm#ref_1575_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wdelch, "wdelch");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1567_16">Wdelch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1335_32">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1575_16">Wdelch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1504_32">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1335_14">Delete_Character</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1504_14">Delete_Character</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1575_14" HREF="terminal_interface-curses__ads.htm#ref_1340_14">Delete_Character</A></span>
- (<span class="symbol"><A NAME="ref_1576_7" HREF="terminal_interface-curses__ads.htm#ref_1341_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1577_7" HREF="terminal_interface-curses__ads.htm#ref_1342_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1578_7" HREF="terminal_interface-curses__ads.htm#ref_1343_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1583_14" HREF="terminal_interface-curses__ads.htm#ref_1509_14">Delete_Character</A></span>
+ (<span class="symbol"><A NAME="ref_1584_7" HREF="terminal_interface-curses__ads.htm#ref_1510_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1585_7" HREF="terminal_interface-curses__ads.htm#ref_1511_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1586_7" HREF="terminal_interface-curses__ads.htm#ref_1512_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1580_16">Mvwdelch</A></span> (<span class="symbol"><A NAME="ref_1580_26" HREF="terminal_interface-curses__adb.htm#ref_1580_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1581_26" HREF="terminal_interface-curses__adb.htm#ref_1580_16">Lin</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1582_26" HREF="terminal_interface-curses__adb.htm#ref_1580_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1588_16">Mvwdelch</A></span> (<span class="symbol"><A NAME="ref_1588_26" HREF="terminal_interface-curses__adb.htm#ref_1588_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1589_26" HREF="terminal_interface-curses__adb.htm#ref_1588_16">Lin</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1590_26" HREF="terminal_interface-curses__adb.htm#ref_1588_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Mvwdelch, "mvwdelch");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1580_16">Mvwdelch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1341_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1342_7">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1343_7">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1588_16">Mvwdelch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1510_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1511_7">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1512_7">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1340_14">Delete_Character</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1509_14">Delete_Character</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1590_13" HREF="terminal_interface-curses__ads.htm#ref_1353_13">Peek</A></span> (<span class="symbol"><A NAME="ref_1590_19" HREF="terminal_interface-curses__ads.htm#ref_1353_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_1598_13" HREF="terminal_interface-curses__ads.htm#ref_1522_13">Peek</A></span> (<span class="symbol"><A NAME="ref_1598_19" HREF="terminal_interface-curses__ads.htm#ref_1522_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1593_16">Winch</A></span> (<span class="symbol"><A NAME="ref_1593_23" HREF="terminal_interface-curses__adb.htm#ref_1593_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1601_16">Winch</A></span> (<span class="symbol"><A NAME="ref_1601_23" HREF="terminal_interface-curses__adb.htm#ref_1601_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Winch, "winch");
<b>begin</b>
- <b>return</b> Chtype_To_AttrChar (<A HREF="terminal_interface-curses__adb.htm#ref_1593_16">Winch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1353_19">Win</A>));
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1353_13">Peek</A>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1601_16">Winch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1522_19">Win</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1522_13">Peek</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_1599_13" HREF="terminal_interface-curses__ads.htm#ref_1359_13">Peek</A></span>
- (<span class="symbol"><A NAME="ref_1600_7" HREF="terminal_interface-curses__ads.htm#ref_1360_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1601_7" HREF="terminal_interface-curses__ads.htm#ref_1361_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1602_7" HREF="terminal_interface-curses__ads.htm#ref_1362_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_1607_13" HREF="terminal_interface-curses__ads.htm#ref_1528_13">Peek</A></span>
+ (<span class="symbol"><A NAME="ref_1608_7" HREF="terminal_interface-curses__ads.htm#ref_1529_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1609_7" HREF="terminal_interface-curses__ads.htm#ref_1530_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1610_7" HREF="terminal_interface-curses__ads.htm#ref_1531_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1604_16">Mvwinch</A></span> (<span class="symbol"><A NAME="ref_1604_25" HREF="terminal_interface-curses__adb.htm#ref_1604_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1605_25" HREF="terminal_interface-curses__adb.htm#ref_1604_16">Lin</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1606_25" HREF="terminal_interface-curses__adb.htm#ref_1604_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1612_16">Mvwinch</A></span> (<span class="symbol"><A NAME="ref_1612_25" HREF="terminal_interface-curses__adb.htm#ref_1612_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1613_25" HREF="terminal_interface-curses__adb.htm#ref_1612_16">Lin</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1614_25" HREF="terminal_interface-curses__adb.htm#ref_1612_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Mvwinch, "mvwinch");
<b>begin</b>
- <b>return</b> Chtype_To_AttrChar (<A HREF="terminal_interface-curses__adb.htm#ref_1604_16">Mvwinch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1360_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1361_7">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1362_7">Column</A>)));
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1359_13">Peek</A>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1612_16">Mvwinch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1529_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1530_7">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1531_7">Column</A>));
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1528_13">Peek</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1612_14" HREF="terminal_interface-curses__ads.htm#ref_1372_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1612_22" HREF="terminal_interface-curses__ads.htm#ref_1372_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1613_22" HREF="terminal_interface-curses__ads.htm#ref_1373_22">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1620_14" HREF="terminal_interface-curses__ads.htm#ref_1541_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1620_22" HREF="terminal_interface-curses__ads.htm#ref_1541_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1621_22" HREF="terminal_interface-curses__ads.htm#ref_1542_22">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1615_16">Winsch</A></span> (<span class="symbol"><A NAME="ref_1615_24" HREF="terminal_interface-curses__adb.htm#ref_1615_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>; <span class="symbol"><A NAME="ref_1615_38" HREF="terminal_interface-curses__adb.htm#ref_1615_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1623_16">Winsch</A></span> (<span class="symbol"><A NAME="ref_1623_24" HREF="terminal_interface-curses__adb.htm#ref_1623_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>; <span class="symbol"><A NAME="ref_1623_38" HREF="terminal_interface-curses__adb.htm#ref_1623_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Winsch, "winsch");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1615_16">Winsch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1372_22">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1373_22">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1623_16">Winsch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1541_22">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1542_22">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1372_14">Insert</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1541_14">Insert</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1623_14" HREF="terminal_interface-curses__ads.htm#ref_1378_14">Insert</A></span>
- (<span class="symbol"><A NAME="ref_1624_7" HREF="terminal_interface-curses__ads.htm#ref_1378_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1625_7" HREF="terminal_interface-curses__ads.htm#ref_1379_22">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1626_7" HREF="terminal_interface-curses__ads.htm#ref_1380_22">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1627_7" HREF="terminal_interface-curses__ads.htm#ref_1381_22">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1631_14" HREF="terminal_interface-curses__ads.htm#ref_1547_14">Insert</A></span>
+ (<span class="symbol"><A NAME="ref_1632_7" HREF="terminal_interface-curses__ads.htm#ref_1547_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1633_7" HREF="terminal_interface-curses__ads.htm#ref_1548_22">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1634_7" HREF="terminal_interface-curses__ads.htm#ref_1549_22">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1635_7" HREF="terminal_interface-curses__ads.htm#ref_1550_22">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1629_16">Mvwinsch</A></span> (<span class="symbol"><A NAME="ref_1629_26" HREF="terminal_interface-curses__adb.htm#ref_1629_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1630_26" HREF="terminal_interface-curses__adb.htm#ref_1629_16">Lin</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1631_26" HREF="terminal_interface-curses__adb.htm#ref_1629_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1632_26" HREF="terminal_interface-curses__adb.htm#ref_1629_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1637_16">Mvwinsch</A></span> (<span class="symbol"><A NAME="ref_1637_26" HREF="terminal_interface-curses__adb.htm#ref_1637_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1638_26" HREF="terminal_interface-curses__adb.htm#ref_1637_16">Lin</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1639_26" HREF="terminal_interface-curses__adb.htm#ref_1637_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1640_26" HREF="terminal_interface-curses__adb.htm#ref_1637_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Mvwinsch, "mvwinsch");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1629_16">Mvwinsch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1378_22">Win</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1379_22">Line</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1380_22">Column</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1381_22">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1637_16">Mvwinsch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1547_22">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1548_22">Line</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1549_22">Column</A>),
+ <A HREF="terminal_interface-curses__ads.htm#ref_1550_22">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1378_14">Insert</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1547_14">Insert</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1643_14" HREF="terminal_interface-curses__ads.htm#ref_1390_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1643_22" HREF="terminal_interface-curses__ads.htm#ref_1390_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1644_22" HREF="terminal_interface-curses__ads.htm#ref_1391_22">Str</A></span> : String;
- <span class="symbol"><A NAME="ref_1645_22" HREF="terminal_interface-curses__ads.htm#ref_1392_22">Len</A></span> : Integer := -1)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1652_14" HREF="terminal_interface-curses__ads.htm#ref_1559_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1652_22" HREF="terminal_interface-curses__ads.htm#ref_1559_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1653_22" HREF="terminal_interface-curses__ads.htm#ref_1560_22">Str</A></span> : String;
+ <span class="symbol"><A NAME="ref_1654_22" HREF="terminal_interface-curses__ads.htm#ref_1561_22">Len</A></span> : Integer := -1)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1647_16">Winsnstr</A></span> (<span class="symbol"><A NAME="ref_1647_26" HREF="terminal_interface-curses__adb.htm#ref_1647_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1648_26" HREF="terminal_interface-curses__adb.htm#ref_1647_16">Str</A></span> : char_array;
- <span class="symbol"><A NAME="ref_1649_26" HREF="terminal_interface-curses__adb.htm#ref_1647_16">Len</A></span> : Integer := -1) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1656_16">Winsnstr</A></span> (<span class="symbol"><A NAME="ref_1656_26" HREF="terminal_interface-curses__adb.htm#ref_1656_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1657_26" HREF="terminal_interface-curses__adb.htm#ref_1656_16">Str</A></span> : char_array;
+ <span class="symbol"><A NAME="ref_1658_26" HREF="terminal_interface-curses__adb.htm#ref_1656_16">Len</A></span> : Integer := -1) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Winsnstr, "winsnstr");
- <span class="symbol"><A NAME="ref_1652_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1391_22">Str</A>'Length);
- <span class="symbol"><A NAME="ref_1653_7">Length</A></span> : size_t;
+ <span class="symbol"><A NAME="ref_1661_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1560_22">Str</A>'Length);
+ <span class="symbol"><A NAME="ref_1662_7">Length</A></span> : size_t;
<b>begin</b>
- To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1391_22">Str</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1652_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1653_7">Length</A>);
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1647_16">Winsnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1390_22">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1652_7">Txt</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1392_22">Len</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1560_22">Str</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1661_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1662_7">Length</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1656_16">Winsnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1559_22">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1661_7">Txt</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1561_22">Len</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1390_14">Insert</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1559_14">Insert</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1661_14" HREF="terminal_interface-curses__ads.htm#ref_1399_14">Insert</A></span>
- (<span class="symbol"><A NAME="ref_1662_7" HREF="terminal_interface-curses__ads.htm#ref_1399_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1663_7" HREF="terminal_interface-curses__ads.htm#ref_1400_22">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1664_7" HREF="terminal_interface-curses__ads.htm#ref_1401_22">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1665_7" HREF="terminal_interface-curses__ads.htm#ref_1402_22">Str</A></span> : String;
- <span class="symbol"><A NAME="ref_1666_7" HREF="terminal_interface-curses__ads.htm#ref_1403_22">Len</A></span> : Integer := -1)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1670_14" HREF="terminal_interface-curses__ads.htm#ref_1568_14">Insert</A></span>
+ (<span class="symbol"><A NAME="ref_1671_7" HREF="terminal_interface-curses__ads.htm#ref_1568_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1672_7" HREF="terminal_interface-curses__ads.htm#ref_1569_22">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1673_7" HREF="terminal_interface-curses__ads.htm#ref_1570_22">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1674_7" HREF="terminal_interface-curses__ads.htm#ref_1571_22">Str</A></span> : String;
+ <span class="symbol"><A NAME="ref_1675_7" HREF="terminal_interface-curses__ads.htm#ref_1572_22">Len</A></span> : Integer := -1)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1668_16">Mvwinsnstr</A></span> (<span class="symbol"><A NAME="ref_1668_28" HREF="terminal_interface-curses__adb.htm#ref_1668_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1669_28" HREF="terminal_interface-curses__adb.htm#ref_1668_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1670_28" HREF="terminal_interface-curses__adb.htm#ref_1668_16">Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1671_28" HREF="terminal_interface-curses__adb.htm#ref_1668_16">Str</A></span> : char_array;
- <span class="symbol"><A NAME="ref_1672_28" HREF="terminal_interface-curses__adb.htm#ref_1668_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1677_16">Mvwinsnstr</A></span> (<span class="symbol"><A NAME="ref_1677_28" HREF="terminal_interface-curses__adb.htm#ref_1677_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1678_28" HREF="terminal_interface-curses__adb.htm#ref_1677_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1679_28" HREF="terminal_interface-curses__adb.htm#ref_1677_16">Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1680_28" HREF="terminal_interface-curses__adb.htm#ref_1677_16">Str</A></span> : char_array;
+ <span class="symbol"><A NAME="ref_1681_28" HREF="terminal_interface-curses__adb.htm#ref_1677_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Mvwinsnstr, "mvwinsnstr");
- <span class="symbol"><A NAME="ref_1675_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1402_22">Str</A>'Length);
- <span class="symbol"><A NAME="ref_1676_7">Length</A></span> : size_t;
+ <span class="symbol"><A NAME="ref_1684_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1571_22">Str</A>'Length);
+ <span class="symbol"><A NAME="ref_1685_7">Length</A></span> : size_t;
<b>begin</b>
- To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1402_22">Str</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1675_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1676_7">Length</A>);
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1668_16">Mvwinsnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1399_22">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1400_22">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1401_22">Column</A>), <A HREF="terminal_interface-curses__adb.htm#ref_1675_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1403_22">Len</A>))
- = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1571_22">Str</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1684_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1685_7">Length</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1677_16">Mvwinsnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1568_22">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1569_22">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1570_22">Column</A>), <A HREF="terminal_interface-curses__adb.htm#ref_1684_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1572_22">Len</A>))
+ = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1399_14">Insert</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1568_14">Insert</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1685_14" HREF="terminal_interface-curses__ads.htm#ref_1415_14">Peek</A></span> (<span class="symbol"><A NAME="ref_1685_20" HREF="terminal_interface-curses__ads.htm#ref_1415_20">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1686_20" HREF="terminal_interface-curses__ads.htm#ref_1416_20">Str</A></span> : <b>out</b> String;
- <span class="symbol"><A NAME="ref_1687_20" HREF="terminal_interface-curses__ads.htm#ref_1417_20">Len</A></span> : Integer := -1)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1695_14" HREF="terminal_interface-curses__ads.htm#ref_1584_14">Peek</A></span> (<span class="symbol"><A NAME="ref_1695_20" HREF="terminal_interface-curses__ads.htm#ref_1584_20">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1696_20" HREF="terminal_interface-curses__ads.htm#ref_1585_20">Str</A></span> : <b>out</b> String;
+ <span class="symbol"><A NAME="ref_1697_20" HREF="terminal_interface-curses__ads.htm#ref_1586_20">Len</A></span> : Integer := -1)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1689_16">Winnstr</A></span> (<span class="symbol"><A NAME="ref_1689_25" HREF="terminal_interface-curses__adb.htm#ref_1689_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1690_25" HREF="terminal_interface-curses__adb.htm#ref_1689_16">Str</A></span> : char_array;
- <span class="symbol"><A NAME="ref_1691_25" HREF="terminal_interface-curses__adb.htm#ref_1689_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1699_16">Winnstr</A></span> (<span class="symbol"><A NAME="ref_1699_25" HREF="terminal_interface-curses__adb.htm#ref_1699_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1700_25" HREF="terminal_interface-curses__adb.htm#ref_1699_16">Str</A></span> : char_array;
+ <span class="symbol"><A NAME="ref_1701_25" HREF="terminal_interface-curses__adb.htm#ref_1699_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Winnstr, "winnstr");
- <span class="symbol"><A NAME="ref_1694_7">N</A></span> : Integer := <A HREF="terminal_interface-curses__ads.htm#ref_1417_20">Len</A>;
- <span class="symbol"><A NAME="ref_1695_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1416_20">Str</A>'Length);
- <span class="symbol"><A NAME="ref_1696_7">Cnt</A></span> : Natural;
+ <span class="symbol"><A NAME="ref_1704_7">N</A></span> : Integer := <A HREF="terminal_interface-curses__ads.htm#ref_1586_20">Len</A>;
+ <span class="symbol"><A NAME="ref_1705_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1585_20">Str</A>'Length);
+ <span class="symbol"><A NAME="ref_1706_7">Cnt</A></span> : Natural;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1694_7">N</A> &lt; 0 <b>then</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_1694_7">N</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1416_20">Str</A>'Length;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1704_7">N</A> &lt; 0 <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#ref_1704_7">N</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1585_20">Str</A>'Length;
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1694_7">N</A> &gt; <A HREF="terminal_interface-curses__ads.htm#ref_1416_20">Str</A>'Length <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1704_7">N</A> &gt; <A HREF="terminal_interface-curses__ads.htm#ref_1585_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#ref_1695_7">Txt</A> (0) := <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.char'First;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1689_16">Winnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1415_20">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1695_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1694_7">N</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_1705_7">Txt</A> (0) := <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.char'First;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1699_16">Winnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1584_20">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1705_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1704_7">N</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- To_Ada (<A HREF="terminal_interface-curses__adb.htm#ref_1695_7">Txt</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1416_20">Str</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1696_7">Cnt</A>, True);
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1696_7">Cnt</A> &lt; <A HREF="terminal_interface-curses__ads.htm#ref_1416_20">Str</A>'Length <b>then</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1416_20">Str</A> ((<A HREF="terminal_interface-curses__ads.htm#ref_1416_20">Str</A>'First + <A HREF="terminal_interface-curses__adb.htm#ref_1696_7">Cnt</A>) .. <A HREF="terminal_interface-curses__ads.htm#ref_1416_20">Str</A>'Last) := (<b>others</b> =&gt; ' ');
+ To_Ada (<A HREF="terminal_interface-curses__adb.htm#ref_1705_7">Txt</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1585_20">Str</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1706_7">Cnt</A>, True);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1706_7">Cnt</A> &lt; <A HREF="terminal_interface-curses__ads.htm#ref_1585_20">Str</A>'Length <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#ref_1585_20">Str</A> ((<A HREF="terminal_interface-curses__ads.htm#ref_1585_20">Str</A>'First + <A HREF="terminal_interface-curses__adb.htm#ref_1706_7">Cnt</A>) .. <A HREF="terminal_interface-curses__ads.htm#ref_1585_20">Str</A>'Last) := (<b>others</b> =&gt; ' ');
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1415_14">Peek</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1584_14">Peek</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1714_14" HREF="terminal_interface-curses__ads.htm#ref_1424_14">Peek</A></span>
- (<span class="symbol"><A NAME="ref_1715_7" HREF="terminal_interface-curses__ads.htm#ref_1424_20">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1716_7" HREF="terminal_interface-curses__ads.htm#ref_1425_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1717_7" HREF="terminal_interface-curses__ads.htm#ref_1426_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1718_7" HREF="terminal_interface-curses__ads.htm#ref_1427_20">Str</A></span> : <b>out</b> String;
- <span class="symbol"><A NAME="ref_1719_7" HREF="terminal_interface-curses__ads.htm#ref_1428_20">Len</A></span> : Integer := -1)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1724_14" HREF="terminal_interface-curses__ads.htm#ref_1593_14">Peek</A></span>
+ (<span class="symbol"><A NAME="ref_1725_7" HREF="terminal_interface-curses__ads.htm#ref_1593_20">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1726_7" HREF="terminal_interface-curses__ads.htm#ref_1594_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1727_7" HREF="terminal_interface-curses__ads.htm#ref_1595_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1728_7" HREF="terminal_interface-curses__ads.htm#ref_1596_20">Str</A></span> : <b>out</b> String;
+ <span class="symbol"><A NAME="ref_1729_7" HREF="terminal_interface-curses__ads.htm#ref_1597_20">Len</A></span> : Integer := -1)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_512_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1424_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1425_20">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1426_20">Column</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1415_14">Peek</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1424_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1427_20">Str</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1428_20">Len</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1424_14">Peek</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_681_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1593_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1594_20">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1595_20">Column</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1584_14">Peek</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1593_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1596_20">Str</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1597_20">Len</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1593_14">Peek</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1726_14" HREF="terminal_interface-curses__ads.htm#ref_1439_14">Peek</A></span>
- (<span class="symbol"><A NAME="ref_1727_7" HREF="terminal_interface-curses__ads.htm#ref_1439_20">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1728_7" HREF="terminal_interface-curses__ads.htm#ref_1440_20">Str</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Attributed_String</A>;
- <span class="symbol"><A NAME="ref_1729_7" HREF="terminal_interface-curses__ads.htm#ref_1441_20">Len</A></span> : Integer := -1)
- <b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1731_16">Winchnstr</A></span> (<span class="symbol"><A NAME="ref_1731_27" HREF="terminal_interface-curses__adb.htm#ref_1731_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1732_27" HREF="terminal_interface-curses__adb.htm#ref_1731_16">Str</A></span> : chtype_array; <span class="comment"><EM>-- out</EM></span>
- <span class="symbol"><A NAME="ref_1733_27" HREF="terminal_interface-curses__adb.htm#ref_1731_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1736_14" HREF="terminal_interface-curses__ads.htm#ref_1608_14">Peek</A></span>
+ (<span class="symbol"><A NAME="ref_1737_7" HREF="terminal_interface-curses__ads.htm#ref_1608_20">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1738_7" HREF="terminal_interface-curses__ads.htm#ref_1609_20">Str</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Attributed_String</A>;
+ <span class="symbol"><A NAME="ref_1739_7" HREF="terminal_interface-curses__ads.htm#ref_1610_20">Len</A></span> : Integer := -1)
+ <b>is</b>
+ <b>function</b> <span class="symbol"><A NAME="ref_1741_16">Winchnstr</A></span> (<span class="symbol"><A NAME="ref_1741_27" HREF="terminal_interface-curses__adb.htm#ref_1741_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1742_27" HREF="terminal_interface-curses__adb.htm#ref_1741_16">Str</A></span> : chtype_array; <span class="comment"><EM>-- out</EM></span>
+ <span class="symbol"><A NAME="ref_1743_27" HREF="terminal_interface-curses__adb.htm#ref_1741_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Winchnstr, "winchnstr");
- <span class="symbol"><A NAME="ref_1736_7">N</A></span> : Integer := <A HREF="terminal_interface-curses__ads.htm#ref_1441_20">Len</A>;
- <span class="symbol"><A NAME="ref_1737_7">Txt</A></span> : <b>constant</b> chtype_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1440_20">Str</A>'Length)
- := (0 =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>);
- <span class="symbol"><A NAME="ref_1739_7">Cnt</A></span> : Natural := 0;
+ <span class="symbol"><A NAME="ref_1746_7">N</A></span> : Integer := <A HREF="terminal_interface-curses__ads.htm#ref_1610_20">Len</A>;
+ <span class="symbol"><A NAME="ref_1747_7">Txt</A></span> : <b>constant</b> chtype_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1609_20">Str</A>'Length)
+ := (0 =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>);
+ <span class="symbol"><A NAME="ref_1749_7">Cnt</A></span> : Natural := 0;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1736_7">N</A> &lt; 0 <b>then</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_1736_7">N</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1440_20">Str</A>'Length;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1746_7">N</A> &lt; 0 <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#ref_1746_7">N</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1609_20">Str</A>'Length;
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1736_7">N</A> &gt; <A HREF="terminal_interface-curses__ads.htm#ref_1440_20">Str</A>'Length <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1746_7">N</A> &gt; <A HREF="terminal_interface-curses__ads.htm#ref_1609_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#ref_1731_16">Winchnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1439_20">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1737_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1736_7">N</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1741_16">Winchnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1608_20">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1747_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1746_7">N</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>for</b> <span class="symbol"><A NAME="ref_1750_11">To</A></span> <b>in</b> <A HREF="terminal_interface-curses__ads.htm#ref_1440_20">Str</A>'<b>Range</b> <b>loop</b>
- <b>exit</b> <b>when</b> <A HREF="terminal_interface-curses__adb.htm#ref_1737_7">Txt</A> (size_t (<A HREF="terminal_interface-curses__adb.htm#ref_1739_7">Cnt</A>)) = <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <A HREF="terminal_interface-curses__ads.htm#ref_1440_20">Str</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1750_11">To</A>) := <A HREF="terminal_interface-curses__adb.htm#ref_1737_7">Txt</A> (size_t (<A HREF="terminal_interface-curses__adb.htm#ref_1739_7">Cnt</A>));
- <A HREF="terminal_interface-curses__adb.htm#ref_1739_7">Cnt</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1739_7">Cnt</A> + 1;
+ <b>for</b> <span class="symbol"><A NAME="ref_1760_11">To</A></span> <b>in</b> <A HREF="terminal_interface-curses__ads.htm#ref_1609_20">Str</A>'<b>Range</b> <b>loop</b>
+ <b>exit</b> <b>when</b> <A HREF="terminal_interface-curses__adb.htm#ref_1747_7">Txt</A> (size_t (<A HREF="terminal_interface-curses__adb.htm#ref_1749_7">Cnt</A>)) = <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_1609_20">Str</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1760_11">To</A>) := <A HREF="terminal_interface-curses__adb.htm#ref_1747_7">Txt</A> (size_t (<A HREF="terminal_interface-curses__adb.htm#ref_1749_7">Cnt</A>));
+ <A HREF="terminal_interface-curses__adb.htm#ref_1749_7">Cnt</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1749_7">Cnt</A> + 1;
<b>end</b> <b>loop</b>;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1739_7">Cnt</A> &lt; <A HREF="terminal_interface-curses__ads.htm#ref_1440_20">Str</A>'Length <b>then</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1440_20">Str</A> ((<A HREF="terminal_interface-curses__ads.htm#ref_1440_20">Str</A>'First + <A HREF="terminal_interface-curses__adb.htm#ref_1739_7">Cnt</A>) .. <A HREF="terminal_interface-curses__ads.htm#ref_1440_20">Str</A>'Last) :=
- (<b>others</b> =&gt; (<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; ' ',
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>));
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1749_7">Cnt</A> &lt; <A HREF="terminal_interface-curses__ads.htm#ref_1609_20">Str</A>'Length <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#ref_1609_20">Str</A> ((<A HREF="terminal_interface-curses__ads.htm#ref_1609_20">Str</A>'First + <A HREF="terminal_interface-curses__adb.htm#ref_1749_7">Cnt</A>) .. <A HREF="terminal_interface-curses__ads.htm#ref_1609_20">Str</A>'Last) :=
+ (<b>others</b> =&gt; (<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; ' ',
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>));
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1439_14">Peek</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1608_14">Peek</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1763_14" HREF="terminal_interface-curses__ads.htm#ref_1448_14">Peek</A></span>
- (<span class="symbol"><A NAME="ref_1764_7" HREF="terminal_interface-curses__ads.htm#ref_1448_20">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1765_7" HREF="terminal_interface-curses__ads.htm#ref_1449_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1766_7" HREF="terminal_interface-curses__ads.htm#ref_1450_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1767_7" HREF="terminal_interface-curses__ads.htm#ref_1451_20">Str</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Attributed_String</A>;
- <span class="symbol"><A NAME="ref_1768_7" HREF="terminal_interface-curses__ads.htm#ref_1452_20">Len</A></span> : Integer := -1)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1773_14" HREF="terminal_interface-curses__ads.htm#ref_1617_14">Peek</A></span>
+ (<span class="symbol"><A NAME="ref_1774_7" HREF="terminal_interface-curses__ads.htm#ref_1617_20">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1775_7" HREF="terminal_interface-curses__ads.htm#ref_1618_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1776_7" HREF="terminal_interface-curses__ads.htm#ref_1619_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1777_7" HREF="terminal_interface-curses__ads.htm#ref_1620_20">Str</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Attributed_String</A>;
+ <span class="symbol"><A NAME="ref_1778_7" HREF="terminal_interface-curses__ads.htm#ref_1621_20">Len</A></span> : Integer := -1)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_512_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1448_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1449_20">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1450_20">Column</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1439_14">Peek</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1448_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1451_20">Str</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1452_20">Len</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1448_14">Peek</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_681_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1617_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1618_20">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1619_20">Column</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1608_14">Peek</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1617_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1620_20">Str</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1621_20">Len</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1617_14">Peek</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1775_14" HREF="terminal_interface-curses__ads.htm#ref_1464_14">Get</A></span> (<span class="symbol"><A NAME="ref_1775_19" HREF="terminal_interface-curses__ads.htm#ref_1464_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1776_19" HREF="terminal_interface-curses__ads.htm#ref_1465_19">Str</A></span> : <b>out</b> String;
- <span class="symbol"><A NAME="ref_1777_19" HREF="terminal_interface-curses__ads.htm#ref_1466_19">Len</A></span> : Integer := -1)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1785_14" HREF="terminal_interface-curses__ads.htm#ref_1633_14">Get</A></span> (<span class="symbol"><A NAME="ref_1785_19" HREF="terminal_interface-curses__ads.htm#ref_1633_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1786_19" HREF="terminal_interface-curses__ads.htm#ref_1634_19">Str</A></span> : <b>out</b> String;
+ <span class="symbol"><A NAME="ref_1787_19" HREF="terminal_interface-curses__ads.htm#ref_1635_19">Len</A></span> : Integer := -1)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1779_16">Wgetnstr</A></span> (<span class="symbol"><A NAME="ref_1779_26" HREF="terminal_interface-curses__adb.htm#ref_1779_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1780_26" HREF="terminal_interface-curses__adb.htm#ref_1779_16">Str</A></span> : char_array;
- <span class="symbol"><A NAME="ref_1781_26" HREF="terminal_interface-curses__adb.htm#ref_1779_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1789_16">Wgetnstr</A></span> (<span class="symbol"><A NAME="ref_1789_26" HREF="terminal_interface-curses__adb.htm#ref_1789_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1790_26" HREF="terminal_interface-curses__adb.htm#ref_1789_16">Str</A></span> : char_array;
+ <span class="symbol"><A NAME="ref_1791_26" HREF="terminal_interface-curses__adb.htm#ref_1789_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Wgetnstr, "wgetnstr");
- <span class="symbol"><A NAME="ref_1784_7">N</A></span> : Integer := <A HREF="terminal_interface-curses__ads.htm#ref_1466_19">Len</A>;
- <span class="symbol"><A NAME="ref_1785_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1465_19">Str</A>'Length);
- <span class="symbol"><A NAME="ref_1786_7">Cnt</A></span> : Natural;
+ <span class="symbol"><A NAME="ref_1794_7">N</A></span> : Integer := <A HREF="terminal_interface-curses__ads.htm#ref_1635_19">Len</A>;
+ <span class="symbol"><A NAME="ref_1795_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1634_19">Str</A>'Length);
+ <span class="symbol"><A NAME="ref_1796_7">Cnt</A></span> : Natural;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1784_7">N</A> &lt; 0 <b>then</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_1784_7">N</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1465_19">Str</A>'Length;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1794_7">N</A> &lt; 0 <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#ref_1794_7">N</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1634_19">Str</A>'Length;
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1784_7">N</A> &gt; <A HREF="terminal_interface-curses__ads.htm#ref_1465_19">Str</A>'Length <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1794_7">N</A> &gt; <A HREF="terminal_interface-curses__ads.htm#ref_1634_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#ref_1785_7">Txt</A> (0) := <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.char'First;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1779_16">Wgetnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1464_19">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1785_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1784_7">N</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_1795_7">Txt</A> (0) := <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.char'First;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1789_16">Wgetnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1633_19">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1795_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1794_7">N</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- To_Ada (<A HREF="terminal_interface-curses__adb.htm#ref_1785_7">Txt</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1465_19">Str</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1786_7">Cnt</A>, True);
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1786_7">Cnt</A> &lt; <A HREF="terminal_interface-curses__ads.htm#ref_1465_19">Str</A>'Length <b>then</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1465_19">Str</A> ((<A HREF="terminal_interface-curses__ads.htm#ref_1465_19">Str</A>'First + <A HREF="terminal_interface-curses__adb.htm#ref_1786_7">Cnt</A>) .. <A HREF="terminal_interface-curses__ads.htm#ref_1465_19">Str</A>'Last) := (<b>others</b> =&gt; ' ');
+ To_Ada (<A HREF="terminal_interface-curses__adb.htm#ref_1795_7">Txt</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1634_19">Str</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1796_7">Cnt</A>, True);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1796_7">Cnt</A> &lt; <A HREF="terminal_interface-curses__ads.htm#ref_1634_19">Str</A>'Length <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#ref_1634_19">Str</A> ((<A HREF="terminal_interface-curses__ads.htm#ref_1634_19">Str</A>'First + <A HREF="terminal_interface-curses__adb.htm#ref_1796_7">Cnt</A>) .. <A HREF="terminal_interface-curses__ads.htm#ref_1634_19">Str</A>'Last) := (<b>others</b> =&gt; ' ');
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1464_14">Get</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1633_14">Get</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1804_14" HREF="terminal_interface-curses__ads.htm#ref_1475_14">Get</A></span>
- (<span class="symbol"><A NAME="ref_1805_7" HREF="terminal_interface-curses__ads.htm#ref_1475_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1806_7" HREF="terminal_interface-curses__ads.htm#ref_1476_19">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1807_7" HREF="terminal_interface-curses__ads.htm#ref_1477_19">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1808_7" HREF="terminal_interface-curses__ads.htm#ref_1478_19">Str</A></span> : <b>out</b> String;
- <span class="symbol"><A NAME="ref_1809_7" HREF="terminal_interface-curses__ads.htm#ref_1479_19">Len</A></span> : Integer := -1)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1814_14" HREF="terminal_interface-curses__ads.htm#ref_1644_14">Get</A></span>
+ (<span class="symbol"><A NAME="ref_1815_7" HREF="terminal_interface-curses__ads.htm#ref_1644_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1816_7" HREF="terminal_interface-curses__ads.htm#ref_1645_19">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1817_7" HREF="terminal_interface-curses__ads.htm#ref_1646_19">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1818_7" HREF="terminal_interface-curses__ads.htm#ref_1647_19">Str</A></span> : <b>out</b> String;
+ <span class="symbol"><A NAME="ref_1819_7" HREF="terminal_interface-curses__ads.htm#ref_1648_19">Len</A></span> : Integer := -1)
<b>is</b>
<b>begin</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_512_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1475_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1476_19">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1477_19">Column</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1464_14">Get</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1475_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1478_19">Str</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1479_19">Len</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1475_14">Get</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_681_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1644_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1645_19">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1646_19">Column</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1633_14">Get</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1644_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1647_19">Str</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1648_19">Len</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1644_14">Get</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1816_14" HREF="terminal_interface-curses__ads.htm#ref_1500_14">Init_Soft_Label_Keys</A></span>
- (<span class="symbol"><A NAME="ref_1817_7" HREF="terminal_interface-curses__ads.htm#ref_1501_7">Format</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1492_9">Soft_Label_Key_Format</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1492_35">Three_Two_Three</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1826_14" HREF="terminal_interface-curses__ads.htm#ref_1669_14">Init_Soft_Label_Keys</A></span>
+ (<span class="symbol"><A NAME="ref_1827_7" HREF="terminal_interface-curses__ads.htm#ref_1670_7">Format</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1661_9">Soft_Label_Key_Format</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1661_35">Three_Two_Three</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1819_16">Slk_Init</A></span> (<span class="symbol"><A NAME="ref_1819_26" HREF="terminal_interface-curses__adb.htm#ref_1819_16">Fmt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1829_16">Slk_Init</A></span> (<span class="symbol"><A NAME="ref_1829_26" HREF="terminal_interface-curses__adb.htm#ref_1829_16">Fmt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Slk_Init, "slk_init");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1819_16">Slk_Init</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1492_9">Soft_Label_Key_Format</A>'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1501_7">Format</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1829_16">Slk_Init</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1661_9">Soft_Label_Key_Format</A>'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1670_7">Format</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1500_14">Init_Soft_Label_Keys</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1669_14">Init_Soft_Label_Keys</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1827_14" HREF="terminal_interface-curses__ads.htm#ref_1506_14">Set_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1827_34" HREF="terminal_interface-curses__ads.htm#ref_1506_34">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1496_9">Label_Number</A>;
- <span class="symbol"><A NAME="ref_1828_34" HREF="terminal_interface-curses__ads.htm#ref_1507_34">Text</A></span> : String;
- <span class="symbol"><A NAME="ref_1829_34" HREF="terminal_interface-curses__ads.htm#ref_1508_34">Fmt</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1497_9">Label_Justification</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1497_33">Left</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1837_14" HREF="terminal_interface-curses__ads.htm#ref_1675_14">Set_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1837_34" HREF="terminal_interface-curses__ads.htm#ref_1675_34">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1665_9">Label_Number</A>;
+ <span class="symbol"><A NAME="ref_1838_34" HREF="terminal_interface-curses__ads.htm#ref_1676_34">Text</A></span> : String;
+ <span class="symbol"><A NAME="ref_1839_34" HREF="terminal_interface-curses__ads.htm#ref_1677_34">Fmt</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1666_9">Label_Justification</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1666_33">Left</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1831_16">Slk_Set</A></span> (<span class="symbol"><A NAME="ref_1831_25" HREF="terminal_interface-curses__adb.htm#ref_1831_16">Label</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1832_25" HREF="terminal_interface-curses__adb.htm#ref_1831_16">Txt</A></span> : char_array;
- <span class="symbol"><A NAME="ref_1833_25" HREF="terminal_interface-curses__adb.htm#ref_1831_16">Fmt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1841_16">Slk_Set</A></span> (<span class="symbol"><A NAME="ref_1841_25" HREF="terminal_interface-curses__adb.htm#ref_1841_16">Label</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1842_25" HREF="terminal_interface-curses__adb.htm#ref_1841_16">Txt</A></span> : char_array;
+ <span class="symbol"><A NAME="ref_1843_25" HREF="terminal_interface-curses__adb.htm#ref_1841_16">Fmt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Slk_Set, "slk_set");
- <span class="symbol"><A NAME="ref_1836_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1507_34">Text</A>'Length);
- <span class="symbol"><A NAME="ref_1837_7">Len</A></span> : size_t;
+ <span class="symbol"><A NAME="ref_1846_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1676_34">Text</A>'Length);
+ <span class="symbol"><A NAME="ref_1847_7">Len</A></span> : size_t;
<b>begin</b>
- To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1507_34">Text</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1836_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1837_7">Len</A>);
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1831_16">Slk_Set</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1506_34">Label</A>), <A HREF="terminal_interface-curses__adb.htm#ref_1836_7">Txt</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1497_9">Label_Justification</A>'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1508_34">Fmt</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1676_34">Text</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1846_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1847_7">Len</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1841_16">Slk_Set</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1675_34">Label</A>), <A HREF="terminal_interface-curses__adb.htm#ref_1846_7">Txt</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1666_9">Label_Justification</A>'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1677_34">Fmt</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1506_14">Set_Soft_Label_Key</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1675_14">Set_Soft_Label_Key</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1846_14" HREF="terminal_interface-curses__ads.htm#ref_1513_14">Refresh_Soft_Label_Keys</A></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1857_14" HREF="terminal_interface-curses__ads.htm#ref_1682_14">Refresh_Soft_Label_Keys</A></span>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1848_16">Slk_Refresh</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1859_16">Slk_Refresh</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Slk_Refresh, "slk_refresh");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1848_16">Slk_Refresh</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1859_16">Slk_Refresh</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1513_14">Refresh_Soft_Label_Keys</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1682_14">Refresh_Soft_Label_Keys</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1856_14" HREF="terminal_interface-curses__ads.htm#ref_1518_14">Refresh_Soft_Label_Keys_Without_Update</A></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1867_14" HREF="terminal_interface-curses__ads.htm#ref_1687_14">Refresh_Soft_Label_Keys_Without_Update</A></span>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1858_16">Slk_Noutrefresh</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1869_16">Slk_Noutrefresh</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Slk_Noutrefresh, "slk_noutrefresh");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1858_16">Slk_Noutrefresh</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1869_16">Slk_Noutrefresh</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1518_14">Refresh_Soft_Label_Keys_Without_Update</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1687_14">Refresh_Soft_Label_Keys_Without_Update</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1866_14" HREF="terminal_interface-curses__ads.htm#ref_1523_14">Get_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1866_34" HREF="terminal_interface-curses__ads.htm#ref_1523_34">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1496_9">Label_Number</A>;
- <span class="symbol"><A NAME="ref_1867_34" HREF="terminal_interface-curses__ads.htm#ref_1524_34">Text</A></span> : <b>out</b> String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1877_14" HREF="terminal_interface-curses__ads.htm#ref_1692_14">Get_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1877_34" HREF="terminal_interface-curses__ads.htm#ref_1692_34">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1665_9">Label_Number</A>;
+ <span class="symbol"><A NAME="ref_1878_34" HREF="terminal_interface-curses__ads.htm#ref_1693_34">Text</A></span> : <b>out</b> String)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1869_16">Slk_Label</A></span> (<span class="symbol"><A NAME="ref_1869_27" HREF="terminal_interface-curses__adb.htm#ref_1869_16">Label</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> chars_ptr;
+ <b>function</b> <span class="symbol"><A NAME="ref_1880_16">Slk_Label</A></span> (<span class="symbol"><A NAME="ref_1880_27" HREF="terminal_interface-curses__adb.htm#ref_1880_16">Label</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> chars_ptr;
<b>pragma</b> Import (C, Slk_Label, "slk_label");
<b>begin</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_116_14">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1869_16">Slk_Label</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1523_34">Label</A>)), <A HREF="terminal_interface-curses__ads.htm#ref_1524_34">Text</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1523_14">Get_Soft_Label_Key</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_14">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1880_16">Slk_Label</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1692_34">Label</A>)), <A HREF="terminal_interface-curses__ads.htm#ref_1693_34">Text</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1692_14">Get_Soft_Label_Key</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_1875_13" HREF="terminal_interface-curses__ads.htm#ref_1528_13">Get_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1875_33" HREF="terminal_interface-curses__ads.htm#ref_1528_33">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1496_9">Label_Number</A>) <b>return</b> String
+ <b>function</b> <span class="symbol"><A NAME="ref_1886_13" HREF="terminal_interface-curses__ads.htm#ref_1697_13">Get_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1886_33" HREF="terminal_interface-curses__ads.htm#ref_1697_33">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1665_9">Label_Number</A>) <b>return</b> String
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1877_16">Slk_Label</A></span> (<span class="symbol"><A NAME="ref_1877_27" HREF="terminal_interface-curses__adb.htm#ref_1877_16">Label</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> chars_ptr;
+ <b>function</b> <span class="symbol"><A NAME="ref_1888_16">Slk_Label</A></span> (<span class="symbol"><A NAME="ref_1888_27" HREF="terminal_interface-curses__adb.htm#ref_1888_16">Label</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> chars_ptr;
<b>pragma</b> Import (C, Slk_Label, "slk_label");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1877_16">Slk_Label</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1528_33">Label</A>)));
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1528_13">Get_Soft_Label_Key</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1888_16">Slk_Label</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1697_33">Label</A>)));
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1697_13">Get_Soft_Label_Key</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1883_14" HREF="terminal_interface-curses__ads.htm#ref_1534_14">Clear_Soft_Label_Keys</A></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1894_14" HREF="terminal_interface-curses__ads.htm#ref_1703_14">Clear_Soft_Label_Keys</A></span>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1885_16">Slk_Clear</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1896_16">Slk_Clear</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Slk_Clear, "slk_clear");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1885_16">Slk_Clear</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1896_16">Slk_Clear</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1534_14">Clear_Soft_Label_Keys</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1703_14">Clear_Soft_Label_Keys</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1893_14" HREF="terminal_interface-curses__ads.htm#ref_1539_14">Restore_Soft_Label_Keys</A></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1904_14" HREF="terminal_interface-curses__ads.htm#ref_1708_14">Restore_Soft_Label_Keys</A></span>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1895_16">Slk_Restore</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1906_16">Slk_Restore</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Slk_Restore, "slk_restore");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1895_16">Slk_Restore</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1906_16">Slk_Restore</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1539_14">Restore_Soft_Label_Keys</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1708_14">Restore_Soft_Label_Keys</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1903_14" HREF="terminal_interface-curses__ads.htm#ref_1544_14">Touch_Soft_Label_Keys</A></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1914_14" HREF="terminal_interface-curses__ads.htm#ref_1713_14">Touch_Soft_Label_Keys</A></span>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1905_16">Slk_Touch</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1916_16">Slk_Touch</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Slk_Touch, "slk_touch");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1905_16">Slk_Touch</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1916_16">Slk_Touch</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1544_14">Touch_Soft_Label_Keys</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1713_14">Touch_Soft_Label_Keys</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1913_14" HREF="terminal_interface-curses__ads.htm#ref_1549_14">Switch_Soft_Label_Key_Attributes</A></span>
- (<span class="symbol"><A NAME="ref_1914_7" HREF="terminal_interface-curses__ads.htm#ref_1550_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
- <span class="symbol"><A NAME="ref_1915_7" HREF="terminal_interface-curses__ads.htm#ref_1551_7">On</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1924_14" HREF="terminal_interface-curses__ads.htm#ref_1718_14">Switch_Soft_Label_Key_Attributes</A></span>
+ (<span class="symbol"><A NAME="ref_1925_7" HREF="terminal_interface-curses__ads.htm#ref_1719_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
+ <span class="symbol"><A NAME="ref_1926_7" HREF="terminal_interface-curses__ads.htm#ref_1720_7">On</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1917_16">Slk_Attron</A></span> (<span class="symbol"><A NAME="ref_1917_28" HREF="terminal_interface-curses__adb.htm#ref_1917_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1928_16">Slk_Attron</A></span> (<span class="symbol"><A NAME="ref_1928_28" HREF="terminal_interface-curses__adb.htm#ref_1928_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Slk_Attron, "slk_attron");
- <b>function</b> <span class="symbol"><A NAME="ref_1919_16">Slk_Attroff</A></span> (<span class="symbol"><A NAME="ref_1919_29" HREF="terminal_interface-curses__adb.htm#ref_1919_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1930_16">Slk_Attroff</A></span> (<span class="symbol"><A NAME="ref_1930_29" HREF="terminal_interface-curses__adb.htm#ref_1930_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Slk_Attroff, "slk_attroff");
- <span class="symbol"><A NAME="ref_1922_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1923_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; Character'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_1550_7">Attr</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First);
+ <span class="symbol"><A NAME="ref_1933_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1934_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; Character'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_1719_7">Attr</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1551_7">On</A> <b>then</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_1922_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1917_16">Slk_Attron</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1923_7">Ch</A>));
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1720_7">On</A> <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#ref_1933_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1928_16">Slk_Attron</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1934_7">Ch</A>);
<b>else</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_1922_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1919_16">Slk_Attroff</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1923_7">Ch</A>));
+ <A HREF="terminal_interface-curses__adb.htm#ref_1933_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1930_16">Slk_Attroff</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1934_7">Ch</A>);
<b>end</b> <b>if</b>;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1922_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1933_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1549_14">Switch_Soft_Label_Key_Attributes</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1718_14">Switch_Soft_Label_Key_Attributes</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1937_14" HREF="terminal_interface-curses__ads.htm#ref_1557_14">Set_Soft_Label_Key_Attributes</A></span>
- (<span class="symbol"><A NAME="ref_1938_7" HREF="terminal_interface-curses__ads.htm#ref_1558_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_1939_7" HREF="terminal_interface-curses__ads.htm#ref_1559_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1948_14" HREF="terminal_interface-curses__ads.htm#ref_1726_14">Set_Soft_Label_Key_Attributes</A></span>
+ (<span class="symbol"><A NAME="ref_1949_7" HREF="terminal_interface-curses__ads.htm#ref_1727_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_1950_7" HREF="terminal_interface-curses__ads.htm#ref_1728_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1941_16">Slk_Attrset</A></span> (<span class="symbol"><A NAME="ref_1941_29" HREF="terminal_interface-curses__adb.htm#ref_1941_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1952_16">Slk_Attrset</A></span> (<span class="symbol"><A NAME="ref_1952_29" HREF="terminal_interface-curses__adb.htm#ref_1952_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Slk_Attrset, "slk_attrset");
- <span class="symbol"><A NAME="ref_1944_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; Character'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_1558_7">Attr</A>,
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_1559_7">Color</A>);
+ <span class="symbol"><A NAME="ref_1955_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; Character'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_1727_7">Attr</A>,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_1728_7">Color</A>);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1941_16">Slk_Attrset</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1944_7">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1952_16">Slk_Attrset</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1955_7">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1557_14">Set_Soft_Label_Key_Attributes</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1726_14">Set_Soft_Label_Key_Attributes</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_1953_13" HREF="terminal_interface-curses__ads.htm#ref_1564_13">Get_Soft_Label_Key_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_1964_13" HREF="terminal_interface-curses__ads.htm#ref_1733_13">Get_Soft_Label_Key_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1955_16">Slk_Attr</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1966_16">Slk_Attr</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Slk_Attr, "slk_attr");
- <span class="symbol"><A NAME="ref_1958_7">Attr</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1955_16">Slk_Attr</A>;
+ <span class="symbol"><A NAME="ref_1969_7">Attr</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1966_16">Slk_Attr</A>;
<b>begin</b>
- <b>return</b> Chtype_To_AttrChar (<A HREF="terminal_interface-curses__adb.htm#ref_1958_7">Attr</A>).<A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1564_13">Get_Soft_Label_Key_Attributes</A>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1969_7">Attr</A>.<A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1733_13">Get_Soft_Label_Key_Attributes</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_1963_13" HREF="terminal_interface-curses__ads.htm#ref_1568_13">Get_Soft_Label_Key_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_1974_13" HREF="terminal_interface-curses__ads.htm#ref_1737_13">Get_Soft_Label_Key_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1965_16">Slk_Attr</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1976_16">Slk_Attr</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Slk_Attr, "slk_attr");
- <span class="symbol"><A NAME="ref_1968_7">Attr</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1965_16">Slk_Attr</A>;
+ <span class="symbol"><A NAME="ref_1979_7">Attr</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1976_16">Slk_Attr</A>;
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1968_7">Attr</A>).<A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1568_13">Get_Soft_Label_Key_Attributes</A>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1979_7">Attr</A>.<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1737_13">Get_Soft_Label_Key_Attributes</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_1973_14" HREF="terminal_interface-curses__ads.htm#ref_1573_14">Set_Soft_Label_Key_Color</A></span> (<span class="symbol"><A NAME="ref_1973_40" HREF="terminal_interface-curses__ads.htm#ref_1573_40">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1984_14" HREF="terminal_interface-curses__ads.htm#ref_1742_14">Set_Soft_Label_Key_Color</A></span> (<span class="symbol"><A NAME="ref_1984_40" HREF="terminal_interface-curses__ads.htm#ref_1742_40">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1975_16">Slk_Color</A></span> (<span class="symbol"><A NAME="ref_1975_27" HREF="terminal_interface-curses__adb.htm#ref_1975_16">Color</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1986_16">Slk_Color</A></span> (<span class="symbol"><A NAME="ref_1986_27" HREF="terminal_interface-curses__adb.htm#ref_1986_16">Color</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Slk_Color, "slk_color");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1975_16">Slk_Color</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1573_40">Pair</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1986_16">Slk_Color</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1742_40">Pair</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1573_14">Set_Soft_Label_Key_Color</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1742_14">Set_Soft_Label_Key_Color</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1984_14" HREF="terminal_interface-curses__ads.htm#ref_1587_14">Enable_Key</A></span> (<span class="symbol"><A NAME="ref_1984_26" HREF="terminal_interface-curses__ads.htm#ref_1587_26">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A>;
- <span class="symbol"><A NAME="ref_1985_26" HREF="terminal_interface-curses__ads.htm#ref_1588_26">Enable</A></span> : Boolean := True)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1995_14" HREF="terminal_interface-curses__ads.htm#ref_1756_14">Enable_Key</A></span> (<span class="symbol"><A NAME="ref_1995_26" HREF="terminal_interface-curses__ads.htm#ref_1756_26">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>;
+ <span class="symbol"><A NAME="ref_1996_26" HREF="terminal_interface-curses__ads.htm#ref_1757_26">Enable</A></span> : Boolean := True)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_1987_16">Keyok</A></span> (<span class="symbol"><A NAME="ref_1987_23" HREF="terminal_interface-curses__adb.htm#ref_1987_16">Keycode</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_1988_23" HREF="terminal_interface-curses__adb.htm#ref_1987_16">On_Off</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1998_16">Keyok</A></span> (<span class="symbol"><A NAME="ref_1998_23" HREF="terminal_interface-curses__adb.htm#ref_1998_16">Keycode</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_1999_23" HREF="terminal_interface-curses__adb.htm#ref_1998_16">On_Off</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Keyok, "keyok");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1987_16">Keyok</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1587_26">Key</A>), <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1588_26">Enable</A>)))
- = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1998_16">Keyok</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1756_26">Key</A>), <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1757_26">Enable</A>)))
+ = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1587_14">Enable_Key</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1756_14">Enable_Key</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1997_14" HREF="terminal_interface-curses__ads.htm#ref_1597_14">Define_Key</A></span> (<span class="symbol"><A NAME="ref_1997_26" HREF="terminal_interface-curses__ads.htm#ref_1597_26">Definition</A></span> : String;
- <span class="symbol"><A NAME="ref_1998_26" HREF="terminal_interface-curses__ads.htm#ref_1598_26">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2009_14" HREF="terminal_interface-curses__ads.htm#ref_1766_14">Define_Key</A></span> (<span class="symbol"><A NAME="ref_2009_26" HREF="terminal_interface-curses__ads.htm#ref_1766_26">Definition</A></span> : String;
+ <span class="symbol"><A NAME="ref_2010_26" HREF="terminal_interface-curses__ads.htm#ref_1767_26">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2000_16">Defkey</A></span> (<span class="symbol"><A NAME="ref_2000_24" HREF="terminal_interface-curses__adb.htm#ref_2000_16">Def</A></span> : char_array;
- <span class="symbol"><A NAME="ref_2001_24" HREF="terminal_interface-curses__adb.htm#ref_2000_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2012_16">Defkey</A></span> (<span class="symbol"><A NAME="ref_2012_24" HREF="terminal_interface-curses__adb.htm#ref_2012_16">Def</A></span> : char_array;
+ <span class="symbol"><A NAME="ref_2013_24" HREF="terminal_interface-curses__adb.htm#ref_2012_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Defkey, "define_key");
- <span class="symbol"><A NAME="ref_2004_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1597_26">Definition</A>'Length);
- <span class="symbol"><A NAME="ref_2005_7">Length</A></span> : size_t;
+ <span class="symbol"><A NAME="ref_2016_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1766_26">Definition</A>'Length);
+ <span class="symbol"><A NAME="ref_2017_7">Length</A></span> : size_t;
<b>begin</b>
- To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1597_26">Definition</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2004_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2005_7">Length</A>);
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2000_16">Defkey</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2004_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1598_26">Key</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1766_26">Definition</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2016_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2017_7">Length</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2012_16">Defkey</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2016_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1767_26">Key</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1597_14">Define_Key</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1766_14">Define_Key</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_2013_14" HREF="terminal_interface-curses__ads.htm#ref_1623_14">Un_Control</A></span> (<span class="symbol"><A NAME="ref_2013_26" HREF="terminal_interface-curses__ads.htm#ref_1623_26">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>;
- <span class="symbol"><A NAME="ref_2014_26" HREF="terminal_interface-curses__ads.htm#ref_1624_26">Str</A></span> : <b>out</b> String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2025_14" HREF="terminal_interface-curses__ads.htm#ref_1792_14">Un_Control</A></span> (<span class="symbol"><A NAME="ref_2025_26" HREF="terminal_interface-curses__ads.htm#ref_1792_26">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_2026_26" HREF="terminal_interface-curses__ads.htm#ref_1793_26">Str</A></span> : <b>out</b> String)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2016_16">Unctrl</A></span> (<span class="symbol"><A NAME="ref_2016_24" HREF="terminal_interface-curses__adb.htm#ref_2016_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> chars_ptr;
+ <b>function</b> <span class="symbol"><A NAME="ref_2028_16">Unctrl</A></span> (<span class="symbol"><A NAME="ref_2028_24" HREF="terminal_interface-curses__adb.htm#ref_2028_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> chars_ptr;
<b>pragma</b> Import (C, Unctrl, "unctrl");
<b>begin</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_116_14">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2016_16">Unctrl</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1623_26">Ch</A>)), <A HREF="terminal_interface-curses__ads.htm#ref_1624_26">Str</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1623_14">Un_Control</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_14">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2028_16">Unctrl</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1792_26">Ch</A>), <A HREF="terminal_interface-curses__ads.htm#ref_1793_26">Str</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1792_14">Un_Control</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2022_13" HREF="terminal_interface-curses__ads.htm#ref_1628_13">Un_Control</A></span> (<span class="symbol"><A NAME="ref_2022_25" HREF="terminal_interface-curses__ads.htm#ref_1628_25">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>) <b>return</b> String
+ <b>function</b> <span class="symbol"><A NAME="ref_2034_13" HREF="terminal_interface-curses__ads.htm#ref_1797_13">Un_Control</A></span> (<span class="symbol"><A NAME="ref_2034_25" HREF="terminal_interface-curses__ads.htm#ref_1797_25">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> String
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2024_16">Unctrl</A></span> (<span class="symbol"><A NAME="ref_2024_24" HREF="terminal_interface-curses__adb.htm#ref_2024_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>) <b>return</b> chars_ptr;
+ <b>function</b> <span class="symbol"><A NAME="ref_2036_16">Unctrl</A></span> (<span class="symbol"><A NAME="ref_2036_24" HREF="terminal_interface-curses__adb.htm#ref_2036_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> chars_ptr;
<b>pragma</b> Import (C, Unctrl, "unctrl");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2024_16">Unctrl</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1628_25">Ch</A>)));
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1628_13">Un_Control</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2036_16">Unctrl</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1797_25">Ch</A>));
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1797_13">Un_Control</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2030_14" HREF="terminal_interface-curses__ads.htm#ref_1634_14">Delay_Output</A></span> (<span class="symbol"><A NAME="ref_2030_28" HREF="terminal_interface-curses__ads.htm#ref_1634_28">Msecs</A></span> : Natural)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2042_14" HREF="terminal_interface-curses__ads.htm#ref_1803_14">Delay_Output</A></span> (<span class="symbol"><A NAME="ref_2042_28" HREF="terminal_interface-curses__ads.htm#ref_1803_28">Msecs</A></span> : Natural)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2032_16">Delayoutput</A></span> (<span class="symbol"><A NAME="ref_2032_29" HREF="terminal_interface-curses__adb.htm#ref_2032_16">Msecs</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2044_16">Delayoutput</A></span> (<span class="symbol"><A NAME="ref_2044_29" HREF="terminal_interface-curses__adb.htm#ref_2044_16">Msecs</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Delayoutput, "delay_output");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2032_16">Delayoutput</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1634_28">Msecs</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2044_16">Delayoutput</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1803_28">Msecs</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1634_14">Delay_Output</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1803_14">Delay_Output</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2040_14" HREF="terminal_interface-curses__ads.htm#ref_1639_14">Flush_Input</A></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2052_14" HREF="terminal_interface-curses__ads.htm#ref_1808_14">Flush_Input</A></span>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2042_16">Flushinp</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2054_16">Flushinp</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Flushinp, "flushinp");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2042_16">Flushinp</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b> <span class="comment"><EM>-- docu says that never happens, but...</EM></span>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2054_16">Flushinp</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b> <span class="comment"><EM>-- docu says that never happens, but...</EM></span>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1639_14">Flush_Input</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1808_14">Flush_Input</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_2050_13" HREF="terminal_interface-curses__ads.htm#ref_1648_13">Baudrate</A></span> <b>return</b> Natural
+ <b>function</b> <span class="symbol"><A NAME="ref_2062_13" HREF="terminal_interface-curses__ads.htm#ref_1817_13">Baudrate</A></span> <b>return</b> Natural
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2052_16">Baud</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2064_16">Baud</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Baud, "baudrate");
<b>begin</b>
- <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#ref_2052_16">Baud</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1648_13">Baudrate</A>;
+ <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#ref_2064_16">Baud</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1817_13">Baudrate</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2058_13" HREF="terminal_interface-curses__ads.htm#ref_1653_13">Erase_Character</A></span> <b>return</b> Character
+ <b>function</b> <span class="symbol"><A NAME="ref_2070_13" HREF="terminal_interface-curses__ads.htm#ref_1822_13">Erase_Character</A></span> <b>return</b> Character
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2060_16">Erasechar</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2072_16">Erasechar</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Erasechar, "erasechar");
<b>begin</b>
- <b>return</b> Character'Val (<A HREF="terminal_interface-curses__adb.htm#ref_2060_16">Erasechar</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1653_13">Erase_Character</A>;
+ <b>return</b> Character'Val (<A HREF="terminal_interface-curses__adb.htm#ref_2072_16">Erasechar</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1822_13">Erase_Character</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2066_13" HREF="terminal_interface-curses__ads.htm#ref_1658_13">Kill_Character</A></span> <b>return</b> Character
+ <b>function</b> <span class="symbol"><A NAME="ref_2078_13" HREF="terminal_interface-curses__ads.htm#ref_1827_13">Kill_Character</A></span> <b>return</b> Character
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2068_16">Killchar</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2080_16">Killchar</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Killchar, "killchar");
<b>begin</b>
- <b>return</b> Character'Val (<A HREF="terminal_interface-curses__adb.htm#ref_2068_16">Killchar</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1658_13">Kill_Character</A>;
+ <b>return</b> Character'Val (<A HREF="terminal_interface-curses__adb.htm#ref_2080_16">Killchar</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1827_13">Kill_Character</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2074_13" HREF="terminal_interface-curses__ads.htm#ref_1663_13">Has_Insert_Character</A></span> <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_2086_13" HREF="terminal_interface-curses__ads.htm#ref_1832_13">Has_Insert_Character</A></span> <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2076_16">Has_Ic</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2088_16">Has_Ic</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Import (C, Has_Ic, "has_ic");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2076_16">Has_Ic</A> = <A HREF="terminal_interface-curses__ads.htm#ref_1926_4">Curses_Bool_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2088_16">Has_Ic</A> = <A HREF="terminal_interface-curses__ads.htm#ref_2100_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> <A HREF="terminal_interface-curses__ads.htm#ref_1663_13">Has_Insert_Character</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1832_13">Has_Insert_Character</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2086_13" HREF="terminal_interface-curses__ads.htm#ref_1668_13">Has_Insert_Line</A></span> <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_2098_13" HREF="terminal_interface-curses__ads.htm#ref_1837_13">Has_Insert_Line</A></span> <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2088_16">Has_Il</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2100_16">Has_Il</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Import (C, Has_Il, "has_il");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2088_16">Has_Il</A> = <A HREF="terminal_interface-curses__ads.htm#ref_1926_4">Curses_Bool_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2100_16">Has_Il</A> = <A HREF="terminal_interface-curses__ads.htm#ref_2100_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> <A HREF="terminal_interface-curses__ads.htm#ref_1668_13">Has_Insert_Line</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1837_13">Has_Insert_Line</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2098_13" HREF="terminal_interface-curses__ads.htm#ref_1673_13">Supported_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_2110_13" HREF="terminal_interface-curses__ads.htm#ref_1842_13">Supported_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2100_16">Termattrs</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_12">C_Chtype</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2112_16">Termattrs</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<b>pragma</b> Import (C, Termattrs, "termattrs");
- <span class="symbol"><A NAME="ref_2103_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2100_16">Termattrs</A>);
+ <span class="symbol"><A NAME="ref_2115_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2112_16">Termattrs</A>;
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_2103_7">Ch</A>.<A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1673_13">Supported_Attributes</A>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_2115_7">Ch</A>.<A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1842_13">Supported_Attributes</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2108_14" HREF="terminal_interface-curses__ads.htm#ref_1678_14">Long_Name</A></span> (<span class="symbol"><A NAME="ref_2108_25" HREF="terminal_interface-curses__ads.htm#ref_1678_25">Name</A></span> : <b>out</b> String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2120_14" HREF="terminal_interface-curses__ads.htm#ref_1847_14">Long_Name</A></span> (<span class="symbol"><A NAME="ref_2120_25" HREF="terminal_interface-curses__ads.htm#ref_1847_25">Name</A></span> : <b>out</b> String)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2110_16">Longname</A></span> <b>return</b> chars_ptr;
+ <b>function</b> <span class="symbol"><A NAME="ref_2122_16">Longname</A></span> <b>return</b> chars_ptr;
<b>pragma</b> Import (C, Longname, "longname");
<b>begin</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_116_14">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2110_16">Longname</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1678_25">Name</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1678_14">Long_Name</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_14">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2122_16">Longname</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1847_25">Name</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1847_14">Long_Name</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2116_13" HREF="terminal_interface-curses__ads.htm#ref_1682_13">Long_Name</A></span> <b>return</b> String
+ <b>function</b> <span class="symbol"><A NAME="ref_2128_13" HREF="terminal_interface-curses__ads.htm#ref_1851_13">Long_Name</A></span> <b>return</b> String
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2118_16">Longname</A></span> <b>return</b> chars_ptr;
+ <b>function</b> <span class="symbol"><A NAME="ref_2130_16">Longname</A></span> <b>return</b> chars_ptr;
<b>pragma</b> Import (C, Longname, "longname");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2118_16">Longname</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1682_13">Long_Name</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2130_16">Longname</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1851_13">Long_Name</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2124_14" HREF="terminal_interface-curses__ads.htm#ref_1688_14">Terminal_Name</A></span> (<span class="symbol"><A NAME="ref_2124_29" HREF="terminal_interface-curses__ads.htm#ref_1688_29">Name</A></span> : <b>out</b> String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2136_14" HREF="terminal_interface-curses__ads.htm#ref_1857_14">Terminal_Name</A></span> (<span class="symbol"><A NAME="ref_2136_29" HREF="terminal_interface-curses__ads.htm#ref_1857_29">Name</A></span> : <b>out</b> String)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2126_16">Termname</A></span> <b>return</b> chars_ptr;
+ <b>function</b> <span class="symbol"><A NAME="ref_2138_16">Termname</A></span> <b>return</b> chars_ptr;
<b>pragma</b> Import (C, Termname, "termname");
<b>begin</b>
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_116_14">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2126_16">Termname</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1688_29">Name</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1688_14">Terminal_Name</A>;
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_90_14">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2138_16">Termname</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1857_29">Name</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1857_14">Terminal_Name</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2132_13" HREF="terminal_interface-curses__ads.htm#ref_1692_13">Terminal_Name</A></span> <b>return</b> String
+ <b>function</b> <span class="symbol"><A NAME="ref_2144_13" HREF="terminal_interface-curses__ads.htm#ref_1861_13">Terminal_Name</A></span> <b>return</b> String
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2134_16">Termname</A></span> <b>return</b> chars_ptr;
+ <b>function</b> <span class="symbol"><A NAME="ref_2146_16">Termname</A></span> <b>return</b> chars_ptr;
<b>pragma</b> Import (C, Termname, "termname");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2134_16">Termname</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1692_13">Terminal_Name</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2146_16">Termname</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1861_13">Terminal_Name</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_2140_14" HREF="terminal_interface-curses__ads.htm#ref_1713_14">Init_Pair</A></span> (<span class="symbol"><A NAME="ref_2140_25" HREF="terminal_interface-curses__ads.htm#ref_1713_25">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_301_12">Redefinable_Color_Pair</A>;
- <span class="symbol"><A NAME="ref_2141_25" HREF="terminal_interface-curses__ads.htm#ref_1714_25">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A>;
- <span class="symbol"><A NAME="ref_2142_25" HREF="terminal_interface-curses__ads.htm#ref_1715_25">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2152_14" HREF="terminal_interface-curses__ads.htm#ref_1882_14">Init_Pair</A></span> (<span class="symbol"><A NAME="ref_2152_25" HREF="terminal_interface-curses__ads.htm#ref_1882_25">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_411_12">Redefinable_Color_Pair</A>;
+ <span class="symbol"><A NAME="ref_2153_25" HREF="terminal_interface-curses__ads.htm#ref_1883_25">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A>;
+ <span class="symbol"><A NAME="ref_2154_25" HREF="terminal_interface-curses__ads.htm#ref_1884_25">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2144_16">Initpair</A></span> (<span class="symbol"><A NAME="ref_2144_26" HREF="terminal_interface-curses__adb.htm#ref_2144_16">Pair</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
- <span class="symbol"><A NAME="ref_2145_26" HREF="terminal_interface-curses__adb.htm#ref_2144_16">Fore</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
- <span class="symbol"><A NAME="ref_2146_26" HREF="terminal_interface-curses__adb.htm#ref_2144_16">Back</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2156_16">Initpair</A></span> (<span class="symbol"><A NAME="ref_2156_26" HREF="terminal_interface-curses__adb.htm#ref_2156_16">Pair</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
+ <span class="symbol"><A NAME="ref_2157_26" HREF="terminal_interface-curses__adb.htm#ref_2156_16">Fore</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
+ <span class="symbol"><A NAME="ref_2158_26" HREF="terminal_interface-curses__adb.htm#ref_2156_16">Back</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Initpair, "init_pair");
<b>begin</b>
- <b>if</b> Integer (<A HREF="terminal_interface-curses__ads.htm#ref_1713_25">Pair</A>) &gt;= <A HREF="terminal_interface-curses__ads.htm#ref_425_13">Number_Of_Color_Pairs</A> <b>then</b>
+ <b>if</b> Integer (<A HREF="terminal_interface-curses__ads.htm#ref_1882_25">Pair</A>) &gt;= <A HREF="terminal_interface-curses__ads.htm#ref_562_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#ref_1714_25">Fore</A>) &gt;= <A HREF="terminal_interface-curses__ads.htm#ref_422_13">Number_Of_Colors</A> <b>or</b> <b>else</b>
- Integer (<A HREF="terminal_interface-curses__ads.htm#ref_1715_25">Back</A>) &gt;= <A HREF="terminal_interface-curses__ads.htm#ref_422_13">Number_Of_Colors</A> <b>then</b>
+ <b>if</b> Integer (<A HREF="terminal_interface-curses__ads.htm#ref_1883_25">Fore</A>) &gt;= <A HREF="terminal_interface-curses__ads.htm#ref_559_13">Number_Of_Colors</A> <b>or</b> <b>else</b>
+ Integer (<A HREF="terminal_interface-curses__ads.htm#ref_1884_25">Back</A>) &gt;= <A HREF="terminal_interface-curses__ads.htm#ref_559_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#ref_2144_16">Initpair</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1713_25">Pair</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1714_25">Fore</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1715_25">Back</A>))
- = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2156_16">Initpair</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1882_25">Pair</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1883_25">Fore</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1884_25">Back</A>))
+ = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1713_14">Init_Pair</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1882_14">Init_Pair</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2162_14" HREF="terminal_interface-curses__ads.htm#ref_1720_14">Pair_Content</A></span> (<span class="symbol"><A NAME="ref_2162_28" HREF="terminal_interface-curses__ads.htm#ref_1720_28">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>;
- <span class="symbol"><A NAME="ref_2163_28" HREF="terminal_interface-curses__ads.htm#ref_1721_28">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A>;
- <span class="symbol"><A NAME="ref_2164_28" HREF="terminal_interface-curses__ads.htm#ref_1722_28">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2176_14" HREF="terminal_interface-curses__ads.htm#ref_1889_14">Pair_Content</A></span> (<span class="symbol"><A NAME="ref_2176_28" HREF="terminal_interface-curses__ads.htm#ref_1889_28">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>;
+ <span class="symbol"><A NAME="ref_2177_28" HREF="terminal_interface-curses__ads.htm#ref_1890_28">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A>;
+ <span class="symbol"><A NAME="ref_2178_28" HREF="terminal_interface-curses__ads.htm#ref_1891_28">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A>)
<b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_2166_12">C_Short_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2167_16">Paircontent</A></span> (<span class="symbol"><A NAME="ref_2167_29" HREF="terminal_interface-curses__adb.htm#ref_2167_16">Pair</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
- <span class="symbol"><A NAME="ref_2168_29" HREF="terminal_interface-curses__adb.htm#ref_2167_16">Fp</A></span> : <A HREF="terminal_interface-curses__adb.htm#ref_2166_12">C_Short_Access</A>;
- <span class="symbol"><A NAME="ref_2169_29" HREF="terminal_interface-curses__adb.htm#ref_2167_16">Bp</A></span> : <A HREF="terminal_interface-curses__adb.htm#ref_2166_12">C_Short_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>type</b> <span class="symbol"><A NAME="ref_2180_12">C_Short_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2181_16">Paircontent</A></span> (<span class="symbol"><A NAME="ref_2181_29" HREF="terminal_interface-curses__adb.htm#ref_2181_16">Pair</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
+ <span class="symbol"><A NAME="ref_2182_29" HREF="terminal_interface-curses__adb.htm#ref_2181_16">Fp</A></span> : <A HREF="terminal_interface-curses__adb.htm#ref_2180_12">C_Short_Access</A>;
+ <span class="symbol"><A NAME="ref_2183_29" HREF="terminal_interface-curses__adb.htm#ref_2181_16">Bp</A></span> : <A HREF="terminal_interface-curses__adb.htm#ref_2180_12">C_Short_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Paircontent, "pair_content");
- <span class="symbol"><A NAME="ref_2172_7">F</A></span>, <span class="symbol"><A NAME="ref_2172_10">B</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
+ <span class="symbol"><A NAME="ref_2186_7">F</A></span>, <span class="symbol"><A NAME="ref_2186_10">B</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2167_16">Paircontent</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1720_28">Pair</A>), <A HREF="terminal_interface-curses__adb.htm#ref_2172_7">F</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_2172_10">B</A>'<b>Access</b>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2181_16">Paircontent</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1889_28">Pair</A>), <A HREF="terminal_interface-curses__adb.htm#ref_2186_7">F</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_2186_10">B</A>'<b>Access</b>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>else</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1721_28">Fore</A> := <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2172_7">F</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1722_28">Back</A> := <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2172_10">B</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1890_28">Fore</A> := <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2186_7">F</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1891_28">Back</A> := <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2186_10">B</A>);
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1720_14">Pair_Content</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1889_14">Pair_Content</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2182_13" HREF="terminal_interface-curses__ads.htm#ref_1727_13">Has_Colors</A></span> <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_2196_13" HREF="terminal_interface-curses__ads.htm#ref_1896_13">Has_Colors</A></span> <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2184_16">Hascolors</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2198_16">Hascolors</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Import (C, Hascolors, "has_colors");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2184_16">Hascolors</A> = <A HREF="terminal_interface-curses__ads.htm#ref_1926_4">Curses_Bool_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2198_16">Hascolors</A> = <A HREF="terminal_interface-curses__ads.htm#ref_2100_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> <A HREF="terminal_interface-curses__ads.htm#ref_1727_13">Has_Colors</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1896_13">Has_Colors</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2194_14" HREF="terminal_interface-curses__ads.htm#ref_1732_14">Init_Color</A></span> (<span class="symbol"><A NAME="ref_2194_26" HREF="terminal_interface-curses__ads.htm#ref_1732_26">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A>;
- <span class="symbol"><A NAME="ref_2195_26" HREF="terminal_interface-curses__ads.htm#ref_1733_26">Red</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A>;
- <span class="symbol"><A NAME="ref_2196_26" HREF="terminal_interface-curses__ads.htm#ref_1734_26">Green</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A>;
- <span class="symbol"><A NAME="ref_2197_26" HREF="terminal_interface-curses__ads.htm#ref_1735_26">Blue</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2208_14" HREF="terminal_interface-curses__ads.htm#ref_1901_14">Init_Color</A></span> (<span class="symbol"><A NAME="ref_2208_26" HREF="terminal_interface-curses__ads.htm#ref_1901_26">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A>;
+ <span class="symbol"><A NAME="ref_2209_26" HREF="terminal_interface-curses__ads.htm#ref_1902_26">Red</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A>;
+ <span class="symbol"><A NAME="ref_2210_26" HREF="terminal_interface-curses__ads.htm#ref_1903_26">Green</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A>;
+ <span class="symbol"><A NAME="ref_2211_26" HREF="terminal_interface-curses__ads.htm#ref_1904_26">Blue</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2199_16">Initcolor</A></span> (<span class="symbol"><A NAME="ref_2199_27" HREF="terminal_interface-curses__adb.htm#ref_2199_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
- <span class="symbol"><A NAME="ref_2200_27" HREF="terminal_interface-curses__adb.htm#ref_2199_16">Red</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
- <span class="symbol"><A NAME="ref_2201_27" HREF="terminal_interface-curses__adb.htm#ref_2199_16">Green</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
- <span class="symbol"><A NAME="ref_2202_27" HREF="terminal_interface-curses__adb.htm#ref_2199_16">Blue</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2213_16">Initcolor</A></span> (<span class="symbol"><A NAME="ref_2213_27" HREF="terminal_interface-curses__adb.htm#ref_2213_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
+ <span class="symbol"><A NAME="ref_2214_27" HREF="terminal_interface-curses__adb.htm#ref_2213_16">Red</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
+ <span class="symbol"><A NAME="ref_2215_27" HREF="terminal_interface-curses__adb.htm#ref_2213_16">Green</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
+ <span class="symbol"><A NAME="ref_2216_27" HREF="terminal_interface-curses__adb.htm#ref_2213_16">Blue</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Initcolor, "init_color");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2199_16">Initcolor</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1732_26">Color</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1733_26">Red</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1734_26">Green</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1735_26">Blue</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2213_16">Initcolor</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1901_26">Color</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1902_26">Red</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1903_26">Green</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1904_26">Blue</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1732_14">Init_Color</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1901_14">Init_Color</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2211_13" HREF="terminal_interface-curses__ads.htm#ref_1740_13">Can_Change_Color</A></span> <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_2226_13" HREF="terminal_interface-curses__ads.htm#ref_1909_13">Can_Change_Color</A></span> <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2213_16">Canchangecolor</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2228_16">Canchangecolor</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>;
<b>pragma</b> Import (C, Canchangecolor, "can_change_color");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2213_16">Canchangecolor</A> = <A HREF="terminal_interface-curses__ads.htm#ref_1926_4">Curses_Bool_False</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2228_16">Canchangecolor</A> = <A HREF="terminal_interface-curses__ads.htm#ref_2100_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> <A HREF="terminal_interface-curses__ads.htm#ref_1740_13">Can_Change_Color</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1909_13">Can_Change_Color</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2223_14" HREF="terminal_interface-curses__ads.htm#ref_1745_14">Color_Content</A></span> (<span class="symbol"><A NAME="ref_2223_29" HREF="terminal_interface-curses__ads.htm#ref_1745_29">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A>;
- <span class="symbol"><A NAME="ref_2224_29" HREF="terminal_interface-curses__ads.htm#ref_1746_29">Red</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A>;
- <span class="symbol"><A NAME="ref_2225_29" HREF="terminal_interface-curses__ads.htm#ref_1747_29">Green</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A>;
- <span class="symbol"><A NAME="ref_2226_29" HREF="terminal_interface-curses__ads.htm#ref_1748_29">Blue</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2238_14" HREF="terminal_interface-curses__ads.htm#ref_1914_14">Color_Content</A></span> (<span class="symbol"><A NAME="ref_2238_29" HREF="terminal_interface-curses__ads.htm#ref_1914_29">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A>;
+ <span class="symbol"><A NAME="ref_2239_29" HREF="terminal_interface-curses__ads.htm#ref_1915_29">Red</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A>;
+ <span class="symbol"><A NAME="ref_2240_29" HREF="terminal_interface-curses__ads.htm#ref_1916_29">Green</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A>;
+ <span class="symbol"><A NAME="ref_2241_29" HREF="terminal_interface-curses__ads.htm#ref_1917_29">Blue</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A>)
<b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_2228_12">C_Short_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
+ <b>type</b> <span class="symbol"><A NAME="ref_2243_12">C_Short_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2230_16">Colorcontent</A></span> (<span class="symbol"><A NAME="ref_2230_30" HREF="terminal_interface-curses__adb.htm#ref_2230_16">Color</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>; <span class="symbol"><A NAME="ref_2230_47" HREF="terminal_interface-curses__adb.htm#ref_2230_16">R</A></span>, <span class="symbol"><A NAME="ref_2230_50" HREF="terminal_interface-curses__adb.htm#ref_2230_16">G</A></span>, <span class="symbol"><A NAME="ref_2230_53" HREF="terminal_interface-curses__adb.htm#ref_2230_16">B</A></span> : <A HREF="terminal_interface-curses__adb.htm#ref_2228_12">C_Short_Access</A>)
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2245_16">Colorcontent</A></span> (<span class="symbol"><A NAME="ref_2245_30" HREF="terminal_interface-curses__adb.htm#ref_2245_16">Color</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>; <span class="symbol"><A NAME="ref_2245_47" HREF="terminal_interface-curses__adb.htm#ref_2245_16">R</A></span>, <span class="symbol"><A NAME="ref_2245_50" HREF="terminal_interface-curses__adb.htm#ref_2245_16">G</A></span>, <span class="symbol"><A NAME="ref_2245_53" HREF="terminal_interface-curses__adb.htm#ref_2245_16">B</A></span> : <A HREF="terminal_interface-curses__adb.htm#ref_2243_12">C_Short_Access</A>)
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Colorcontent, "color_content");
- <span class="symbol"><A NAME="ref_2234_7">R</A></span>, <span class="symbol"><A NAME="ref_2234_10">G</A></span>, <span class="symbol"><A NAME="ref_2234_13">B</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A>;
+ <span class="symbol"><A NAME="ref_2249_7">R</A></span>, <span class="symbol"><A NAME="ref_2249_10">G</A></span>, <span class="symbol"><A NAME="ref_2249_13">B</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2230_16">Colorcontent</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1745_29">Color</A>), <A HREF="terminal_interface-curses__adb.htm#ref_2234_7">R</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_2234_10">G</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_2234_13">B</A>'<b>Access</b>) =
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2245_16">Colorcontent</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1914_29">Color</A>), <A HREF="terminal_interface-curses__adb.htm#ref_2249_7">R</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_2249_10">G</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_2249_13">B</A>'<b>Access</b>) =
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>else</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1746_29">Red</A> := <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2234_7">R</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1747_29">Green</A> := <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2234_10">G</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1748_29">Blue</A> := <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2234_13">B</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1915_29">Red</A> := <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2249_7">R</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1916_29">Green</A> := <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2249_10">G</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1917_29">Blue</A> := <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2249_13">B</A>);
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1745_14">Color_Content</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1914_14">Color_Content</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_2247_14" HREF="terminal_interface-curses__ads.htm#ref_1760_14">Save_Curses_Mode</A></span> (<span class="symbol"><A NAME="ref_2247_32" HREF="terminal_interface-curses__ads.htm#ref_1760_32">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1757_9">Curses_Mode</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2263_14" HREF="terminal_interface-curses__ads.htm#ref_1929_14">Save_Curses_Mode</A></span> (<span class="symbol"><A NAME="ref_2263_32" HREF="terminal_interface-curses__ads.htm#ref_1929_32">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1926_9">Curses_Mode</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2249_16">Def_Prog_Mode</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2265_16">Def_Prog_Mode</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Def_Prog_Mode, "def_prog_mode");
- <b>function</b> <span class="symbol"><A NAME="ref_2251_16">Def_Shell_Mode</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2267_16">Def_Shell_Mode</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Def_Shell_Mode, "def_shell_mode");
- <span class="symbol"><A NAME="ref_2254_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_2270_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <b>case</b> <A HREF="terminal_interface-curses__ads.htm#ref_1760_32">Mode</A> <b>is</b>
- <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1757_25">Curses</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_2254_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2249_16">Def_Prog_Mode</A>;
- <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1757_33">Shell</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_2254_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2251_16">Def_Shell_Mode</A>;
+ <b>case</b> <A HREF="terminal_interface-curses__ads.htm#ref_1929_32">Mode</A> <b>is</b>
+ <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1926_25">Curses</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_2270_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2265_16">Def_Prog_Mode</A>;
+ <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1926_33">Shell</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_2270_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2267_16">Def_Shell_Mode</A>;
<b>end</b> <b>case</b>;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2254_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2270_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1760_14">Save_Curses_Mode</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1929_14">Save_Curses_Mode</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2265_14" HREF="terminal_interface-curses__ads.htm#ref_1766_14">Reset_Curses_Mode</A></span> (<span class="symbol"><A NAME="ref_2265_33" HREF="terminal_interface-curses__ads.htm#ref_1766_33">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1757_9">Curses_Mode</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2281_14" HREF="terminal_interface-curses__ads.htm#ref_1935_14">Reset_Curses_Mode</A></span> (<span class="symbol"><A NAME="ref_2281_33" HREF="terminal_interface-curses__ads.htm#ref_1935_33">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1926_9">Curses_Mode</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2267_16">Reset_Prog_Mode</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2283_16">Reset_Prog_Mode</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Reset_Prog_Mode, "reset_prog_mode");
- <b>function</b> <span class="symbol"><A NAME="ref_2269_16">Reset_Shell_Mode</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2285_16">Reset_Shell_Mode</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Reset_Shell_Mode, "reset_shell_mode");
- <span class="symbol"><A NAME="ref_2272_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_2288_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <b>case</b> <A HREF="terminal_interface-curses__ads.htm#ref_1766_33">Mode</A> <b>is</b>
- <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1757_25">Curses</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_2272_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2267_16">Reset_Prog_Mode</A>;
- <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1757_33">Shell</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_2272_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2269_16">Reset_Shell_Mode</A>;
+ <b>case</b> <A HREF="terminal_interface-curses__ads.htm#ref_1935_33">Mode</A> <b>is</b>
+ <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1926_25">Curses</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_2288_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2283_16">Reset_Prog_Mode</A>;
+ <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1926_33">Shell</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_2288_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2285_16">Reset_Shell_Mode</A>;
<b>end</b> <b>case</b>;
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2272_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2288_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1766_14">Reset_Curses_Mode</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1935_14">Reset_Curses_Mode</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2283_14" HREF="terminal_interface-curses__ads.htm#ref_1772_14">Save_Terminal_State</A></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2299_14" HREF="terminal_interface-curses__ads.htm#ref_1941_14">Save_Terminal_State</A></span>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2285_16">Savetty</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2301_16">Savetty</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Savetty, "savetty");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2285_16">Savetty</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2301_16">Savetty</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1772_14">Save_Terminal_State</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1941_14">Save_Terminal_State</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2293_14" HREF="terminal_interface-curses__ads.htm#ref_1777_14">Reset_Terminal_State</A></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2309_14" HREF="terminal_interface-curses__ads.htm#ref_1946_14">Reset_Terminal_State</A></span>
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2295_16">Resetty</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2311_16">Resetty</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Resetty, "resetty");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2295_16">Resetty</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2311_16">Resetty</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1777_14">Reset_Terminal_State</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1946_14">Reset_Terminal_State</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2303_14" HREF="terminal_interface-curses__ads.htm#ref_1790_14">Rip_Off_Lines</A></span> (<span class="symbol"><A NAME="ref_2303_29" HREF="terminal_interface-curses__ads.htm#ref_1790_29">Lines</A></span> : Integer;
- <span class="symbol"><A NAME="ref_2304_29" HREF="terminal_interface-curses__ads.htm#ref_1791_29">Proc</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1781_9">Stdscr_Init_Proc</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2319_14" HREF="terminal_interface-curses__ads.htm#ref_1959_14">Rip_Off_Lines</A></span> (<span class="symbol"><A NAME="ref_2319_29" HREF="terminal_interface-curses__ads.htm#ref_1959_29">Lines</A></span> : Integer;
+ <span class="symbol"><A NAME="ref_2320_29" HREF="terminal_interface-curses__ads.htm#ref_1960_29">Proc</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1950_9">Stdscr_Init_Proc</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2306_16">Ripoffline</A></span> (<span class="symbol"><A NAME="ref_2306_28" HREF="terminal_interface-curses__adb.htm#ref_2306_16">Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_2307_28" HREF="terminal_interface-curses__adb.htm#ref_2306_16">Proc</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1781_9">Stdscr_Init_Proc</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2322_16">Ripoffline</A></span> (<span class="symbol"><A NAME="ref_2322_28" HREF="terminal_interface-curses__adb.htm#ref_2322_16">Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_2323_28" HREF="terminal_interface-curses__adb.htm#ref_2322_16">Proc</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1950_9">Stdscr_Init_Proc</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Ripoffline, "_nc_ripoffline");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2306_16">Ripoffline</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1790_29">Lines</A>), <A HREF="terminal_interface-curses__ads.htm#ref_1791_29">Proc</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2322_16">Ripoffline</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1959_29">Lines</A>), <A HREF="terminal_interface-curses__ads.htm#ref_1960_29">Proc</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1790_14">Rip_Off_Lines</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1959_14">Rip_Off_Lines</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2315_14" HREF="terminal_interface-curses__ads.htm#ref_1802_14">Set_Cursor_Visibility</A></span> (<span class="symbol"><A NAME="ref_2315_37" HREF="terminal_interface-curses__ads.htm#ref_1802_37">Visibility</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_1799_9">Cursor_Visibility</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2331_14" HREF="terminal_interface-curses__ads.htm#ref_1971_14">Set_Cursor_Visibility</A></span> (<span class="symbol"><A NAME="ref_2331_37" HREF="terminal_interface-curses__ads.htm#ref_1971_37">Visibility</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_1968_9">Cursor_Visibility</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2317_16">Curs_Set</A></span> (<span class="symbol"><A NAME="ref_2317_26" HREF="terminal_interface-curses__adb.htm#ref_2317_16">Curs</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2333_16">Curs_Set</A></span> (<span class="symbol"><A NAME="ref_2333_26" HREF="terminal_interface-curses__adb.htm#ref_2333_16">Curs</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Curs_Set, "curs_set");
- <span class="symbol"><A NAME="ref_2320_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_2336_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_2320_7">Res</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2317_16">Curs_Set</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1799_9">Cursor_Visibility</A>'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1802_37">Visibility</A>));
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2320_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1802_37">Visibility</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1799_9">Cursor_Visibility</A>'Val (<A HREF="terminal_interface-curses__adb.htm#ref_2320_7">Res</A>);
+ <A HREF="terminal_interface-curses__adb.htm#ref_2336_7">Res</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2333_16">Curs_Set</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1968_9">Cursor_Visibility</A>'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1971_37">Visibility</A>));
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2336_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#ref_1971_37">Visibility</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1968_9">Cursor_Visibility</A>'Val (<A HREF="terminal_interface-curses__adb.htm#ref_2336_7">Res</A>);
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1802_14">Set_Cursor_Visibility</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1971_14">Set_Cursor_Visibility</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2328_14" HREF="terminal_interface-curses__ads.htm#ref_1807_14">Nap_Milli_Seconds</A></span> (<span class="symbol"><A NAME="ref_2328_33" HREF="terminal_interface-curses__ads.htm#ref_1807_33">Ms</A></span> : Natural)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2344_14" HREF="terminal_interface-curses__ads.htm#ref_1976_14">Nap_Milli_Seconds</A></span> (<span class="symbol"><A NAME="ref_2344_33" HREF="terminal_interface-curses__ads.htm#ref_1976_33">Ms</A></span> : Natural)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2330_16">Napms</A></span> (<span class="symbol"><A NAME="ref_2330_23" HREF="terminal_interface-curses__adb.htm#ref_2330_16">Ms</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2346_16">Napms</A></span> (<span class="symbol"><A NAME="ref_2346_23" HREF="terminal_interface-curses__adb.htm#ref_2346_16">Ms</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Napms, "napms");
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2330_16">Napms</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1807_33">Ms</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2346_16">Napms</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1976_33">Ms</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1807_14">Nap_Milli_Seconds</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1976_14">Nap_Milli_Seconds</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-
- <b>function</b> <span class="symbol"><A NAME="ref_2339_13" HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>
- <b>is</b>
- <span class="symbol"><A NAME="ref_2341_7">Result</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#ref_2341_7">Result</A>, "stdscr");
- <b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_2341_7">Result</A>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
-
- <b>function</b> <span class="symbol"><A NAME="ref_2347_13" HREF="terminal_interface-curses__ads.htm#ref_482_13">Current_Window</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_2354_13" HREF="terminal_interface-curses__ads.htm#ref_550_13">Lines</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_2349_7">Result</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#ref_2349_7">Result</A>, "curscr");
+ <b>function</b> <span class="symbol"><A NAME="ref_2356_16">LINES_As_Function</A></span> <b>return</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int;
+ <b>pragma</b> Import (C, LINES_As_Function, "LINES_as_function");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_2349_7">Result</A>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_482_13">Current_Window</A>;
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2356_16">LINES_As_Function</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_550_13">Lines</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2355_13" HREF="terminal_interface-curses__ads.htm#ref_413_13">Lines</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_2362_13" HREF="terminal_interface-curses__ads.htm#ref_553_13">Columns</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>
<b>is</b>
- <span class="symbol"><A NAME="ref_2357_7">Result</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#ref_2357_7">Result</A>, "LINES");
+ <b>function</b> <span class="symbol"><A NAME="ref_2364_16">COLS_As_Function</A></span> <b>return</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int;
+ <b>pragma</b> Import (C, COLS_As_Function, "COLS_as_function");
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2357_7">Result</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_413_13">Lines</A>;
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2364_16">COLS_As_Function</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_553_13">Columns</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2363_13" HREF="terminal_interface-curses__ads.htm#ref_416_13">Columns</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>
+ <b>function</b> <span class="symbol"><A NAME="ref_2370_13" HREF="terminal_interface-curses__ads.htm#ref_556_13">Tab_Size</A></span> <b>return</b> Natural
<b>is</b>
- <span class="symbol"><A NAME="ref_2365_7">Result</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#ref_2365_7">Result</A>, "COLS");
- <b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2365_7">Result</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_416_13">Columns</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2372_16">TABSIZE_As_Function</A></span> <b>return</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int;
+ <b>pragma</b> Import (C, TABSIZE_As_Function, "TABSIZE_as_function");
- <b>function</b> <span class="symbol"><A NAME="ref_2371_13" HREF="terminal_interface-curses__ads.htm#ref_419_13">Tab_Size</A></span> <b>return</b> Natural
- <b>is</b>
- <span class="symbol"><A NAME="ref_2373_7">Result</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#ref_2373_7">Result</A>, "TABSIZE");
<b>begin</b>
- <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#ref_2373_7">Result</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_419_13">Tab_Size</A>;
+ <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#ref_2372_16">TABSIZE_As_Function</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_556_13">Tab_Size</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2379_13" HREF="terminal_interface-curses__ads.htm#ref_422_13">Number_Of_Colors</A></span> <b>return</b> Natural
+ <b>function</b> <span class="symbol"><A NAME="ref_2379_13" HREF="terminal_interface-curses__ads.htm#ref_559_13">Number_Of_Colors</A></span> <b>return</b> Natural
<b>is</b>
- <span class="symbol"><A NAME="ref_2381_7">Result</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#ref_2381_7">Result</A>, "COLORS");
+ <b>function</b> <span class="symbol"><A NAME="ref_2381_16">COLORS_As_Function</A></span> <b>return</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int;
+ <b>pragma</b> Import (C, COLORS_As_Function, "COLORS_as_function");
<b>begin</b>
- <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#ref_2381_7">Result</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_422_13">Number_Of_Colors</A>;
+ <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#ref_2381_16">COLORS_As_Function</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_559_13">Number_Of_Colors</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2387_13" HREF="terminal_interface-curses__ads.htm#ref_425_13">Number_Of_Color_Pairs</A></span> <b>return</b> Natural
+ <b>function</b> <span class="symbol"><A NAME="ref_2387_13" HREF="terminal_interface-curses__ads.htm#ref_562_13">Number_Of_Color_Pairs</A></span> <b>return</b> Natural
<b>is</b>
- <span class="symbol"><A NAME="ref_2389_7">Result</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#ref_2389_7">Result</A>, "COLOR_PAIRS");
+ <b>function</b> <span class="symbol"><A NAME="ref_2389_16">COLOR_PAIRS_As_Function</A></span> <b>return</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int;
+ <b>pragma</b> Import (C, COLOR_PAIRS_As_Function, "COLOR_PAIRS_as_function");
<b>begin</b>
- <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#ref_2389_7">Result</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_425_13">Number_Of_Color_Pairs</A>;
-
+ <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#ref_2389_16">COLOR_PAIRS_As_Function</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_562_13">Number_Of_Color_Pairs</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_2396_14" HREF="terminal_interface-curses__ads.htm#ref_1815_14">Transform_Coordinates</A></span>
- (<span class="symbol"><A NAME="ref_2397_7" HREF="terminal_interface-curses__ads.htm#ref_1816_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_2398_7" HREF="terminal_interface-curses__ads.htm#ref_1817_7">Line</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_2399_7" HREF="terminal_interface-curses__ads.htm#ref_1818_7">Column</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_2400_7" HREF="terminal_interface-curses__ads.htm#ref_1819_7">Dir</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1814_9">Transform_Direction</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1814_33">From_Screen</A>)
- <b>is</b>
- <b>type</b> <span class="symbol"><A NAME="ref_2402_12">Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <b>function</b> <span class="symbol"><A NAME="ref_2403_16">Transform</A></span> (<span class="symbol"><A NAME="ref_2403_27" HREF="terminal_interface-curses__adb.htm#ref_2403_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_2404_27" HREF="terminal_interface-curses__adb.htm#ref_2403_16">Y</A></span>, <span class="symbol"><A NAME="ref_2404_30" HREF="terminal_interface-curses__adb.htm#ref_2403_16">X</A></span> : <A HREF="terminal_interface-curses__adb.htm#ref_2402_12">Int_Access</A>;
- <span class="symbol"><A NAME="ref_2405_27" HREF="terminal_interface-curses__adb.htm#ref_2403_16">Dir</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2395_14" HREF="terminal_interface-curses__ads.htm#ref_1984_14">Transform_Coordinates</A></span>
+ (<span class="symbol"><A NAME="ref_2396_7" HREF="terminal_interface-curses__ads.htm#ref_1985_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_2397_7" HREF="terminal_interface-curses__ads.htm#ref_1986_7">Line</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_2398_7" HREF="terminal_interface-curses__ads.htm#ref_1987_7">Column</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_2399_7" HREF="terminal_interface-curses__ads.htm#ref_1988_7">Dir</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1983_9">Transform_Direction</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1983_33">From_Screen</A>)
+ <b>is</b>
+ <b>type</b> <span class="symbol"><A NAME="ref_2401_12">Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2402_16">Transform</A></span> (<span class="symbol"><A NAME="ref_2402_27" HREF="terminal_interface-curses__adb.htm#ref_2402_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_2403_27" HREF="terminal_interface-curses__adb.htm#ref_2402_16">Y</A></span>, <span class="symbol"><A NAME="ref_2403_30" HREF="terminal_interface-curses__adb.htm#ref_2402_16">X</A></span> : <A HREF="terminal_interface-curses__adb.htm#ref_2401_12">Int_Access</A>;
+ <span class="symbol"><A NAME="ref_2404_27" HREF="terminal_interface-curses__adb.htm#ref_2402_16">Dir</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, Transform, "wmouse_trafo");
- <span class="symbol"><A NAME="ref_2408_7">X</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1818_7">Column</A>);
- <span class="symbol"><A NAME="ref_2409_7">Y</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1817_7">Line</A>);
- <span class="symbol"><A NAME="ref_2410_7">D</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1926_4">Curses_Bool_False</A>;
- <span class="symbol"><A NAME="ref_2411_7">R</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_2407_7">X</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1987_7">Column</A>);
+ <span class="symbol"><A NAME="ref_2408_7">Y</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1986_7">Line</A>);
+ <span class="symbol"><A NAME="ref_2409_7">D</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> := <A HREF="terminal_interface-curses__ads.htm#ref_2100_4">Curses_Bool_False</A>;
+ <span class="symbol"><A NAME="ref_2410_7">R</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1819_7">Dir</A> = <A HREF="terminal_interface-curses__ads.htm#ref_1814_46">To_Screen</A> <b>then</b>
- <A HREF="terminal_interface-curses__adb.htm#ref_2410_7">D</A> := 1;
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1988_7">Dir</A> = <A HREF="terminal_interface-curses__ads.htm#ref_1983_46">To_Screen</A> <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#ref_2409_7">D</A> := 1;
<b>end</b> <b>if</b>;
- <A HREF="terminal_interface-curses__adb.htm#ref_2411_7">R</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2403_16">Transform</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1816_7">W</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2409_7">Y</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_2408_7">X</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_2410_7">D</A>);
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2411_7">R</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_4">Curses_False</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_2410_7">R</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2402_16">Transform</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1985_7">W</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2408_7">Y</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_2407_7">X</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_2409_7">D</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2410_7">R</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_66_4">Curses_False</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>else</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_1817_7">Line</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2409_7">Y</A>);
- <A HREF="terminal_interface-curses__ads.htm#ref_1818_7">Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2408_7">X</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1986_7">Line</A> := <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2408_7">Y</A>);
+ <A HREF="terminal_interface-curses__ads.htm#ref_1987_7">Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2407_7">X</A>);
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1815_14">Transform_Coordinates</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1984_14">Transform_Coordinates</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_2425_14" HREF="terminal_interface-curses__ads.htm#ref_1832_14">Use_Default_Colors</A></span> <b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2426_16">C_Use_Default_Colors</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2424_14" HREF="terminal_interface-curses__ads.htm#ref_2003_14">Use_Default_Colors</A></span> <b>is</b>
+ <b>function</b> <span class="symbol"><A NAME="ref_2425_16">C_Use_Default_Colors</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, C_Use_Default_Colors, "use_default_colors");
- <span class="symbol"><A NAME="ref_2428_7">Err</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2426_16">C_Use_Default_Colors</A>;
+ <span class="symbol"><A NAME="ref_2427_7">Err</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2425_16">C_Use_Default_Colors</A>;
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2428_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2427_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1832_14">Use_Default_Colors</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2003_14">Use_Default_Colors</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2435_14" HREF="terminal_interface-curses__ads.htm#ref_1837_14">Assume_Default_Colors</A></span> (<span class="symbol"><A NAME="ref_2435_37" HREF="terminal_interface-curses__ads.htm#ref_1837_37">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A> := <A HREF="terminal_interface-curses__ads.htm#ref_285_4">Default_Color</A>;
- <span class="symbol"><A NAME="ref_2436_37" HREF="terminal_interface-curses__ads.htm#ref_1838_37">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A> := <A HREF="terminal_interface-curses__ads.htm#ref_285_4">Default_Color</A>)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2434_14" HREF="terminal_interface-curses__ads.htm#ref_2008_14">Assume_Default_Colors</A></span> (<span class="symbol"><A NAME="ref_2434_37" HREF="terminal_interface-curses__ads.htm#ref_2008_37">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A> := <A HREF="terminal_interface-curses__ads.htm#ref_2000_4">Default_Color</A>;
+ <span class="symbol"><A NAME="ref_2435_37" HREF="terminal_interface-curses__ads.htm#ref_2009_37">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A> := <A HREF="terminal_interface-curses__ads.htm#ref_2000_4">Default_Color</A>)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2438_16">C_Assume_Default_Colors</A></span> (<span class="symbol"><A NAME="ref_2438_41" HREF="terminal_interface-curses__adb.htm#ref_2438_16">Fore</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_2439_41" HREF="terminal_interface-curses__adb.htm#ref_2438_16">Back</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2437_16">C_Assume_Default_Colors</A></span> (<span class="symbol"><A NAME="ref_2437_41" HREF="terminal_interface-curses__adb.htm#ref_2437_16">Fore</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_2438_41" HREF="terminal_interface-curses__adb.htm#ref_2437_16">Back</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, C_Assume_Default_Colors, "assume_default_colors");
- <span class="symbol"><A NAME="ref_2442_7">Err</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2438_16">C_Assume_Default_Colors</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1837_37">Fore</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1838_37">Back</A>));
+ <span class="symbol"><A NAME="ref_2441_7">Err</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2437_16">C_Assume_Default_Colors</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_2008_37">Fore</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_2009_37">Back</A>));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2442_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2441_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1837_14">Assume_Default_Colors</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2008_14">Assume_Default_Colors</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_2450_13" HREF="terminal_interface-curses__ads.htm#ref_1847_13">Curses_Version</A></span> <b>return</b> String
+ <b>function</b> <span class="symbol"><A NAME="ref_2449_13" HREF="terminal_interface-curses__ads.htm#ref_2018_13">Curses_Version</A></span> <b>return</b> String
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2452_16">curses_versionC</A></span> <b>return</b> chars_ptr;
+ <b>function</b> <span class="symbol"><A NAME="ref_2451_16">curses_versionC</A></span> <b>return</b> chars_ptr;
<b>pragma</b> Import (C, curses_versionC, "curses_version");
- <span class="symbol"><A NAME="ref_2454_7">Result</A></span> : <b>constant</b> chars_ptr := <A HREF="terminal_interface-curses__adb.htm#ref_2452_16">curses_versionC</A>;
+ <span class="symbol"><A NAME="ref_2453_7">Result</A></span> : <b>constant</b> chars_ptr := <A HREF="terminal_interface-curses__adb.htm#ref_2451_16">curses_versionC</A>;
<b>begin</b>
- <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2454_7">Result</A>);
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1847_13">Curses_Version</A>;
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_95_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2453_7">Result</A>);
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2018_13">Curses_Version</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_2459_14" HREF="terminal_interface-curses__ads.htm#ref_1860_14">Curses_Free_All</A></span> <b>is</b>
- <b>procedure</b> <span class="symbol"><A NAME="ref_2460_17">curses_freeall</A></span>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2458_14" HREF="terminal_interface-curses__ads.htm#ref_2031_14">Curses_Free_All</A></span> <b>is</b>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2459_17">curses_freeall</A></span>;
<b>pragma</b> Import (C, curses_freeall, "_nc_freeall");
<b>begin</b>
<span class="comment"><EM>-- Use this only for testing: you cannot use curses after calling it,</EM></span>
@@ -2484,91 +2483,92 @@
<span class="comment"><EM>-- _nc_free_and_exit() procedure can do that, but it can be invoked</EM></span>
<span class="comment"><EM>-- safely only from C - and again, that only as the "last" thing done</EM></span>
<span class="comment"><EM>-- before exiting the program.</EM></span>
- <A HREF="terminal_interface-curses__adb.htm#ref_2460_17">curses_freeall</A>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1860_14">Curses_Free_All</A>;
+ <A HREF="terminal_interface-curses__adb.htm#ref_2459_17">curses_freeall</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2031_14">Curses_Free_All</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_2473_13" HREF="terminal_interface-curses__ads.htm#ref_1852_13">Use_Extended_Names</A></span> (<span class="symbol"><A NAME="ref_2473_33" HREF="terminal_interface-curses__ads.htm#ref_1852_33">Enable</A></span> : Boolean) <b>return</b> Boolean
+ <b>function</b> <span class="symbol"><A NAME="ref_2472_13" HREF="terminal_interface-curses__ads.htm#ref_2023_13">Use_Extended_Names</A></span> (<span class="symbol"><A NAME="ref_2472_33" HREF="terminal_interface-curses__ads.htm#ref_2023_33">Enable</A></span> : Boolean) <b>return</b> Boolean
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2475_16">use_extended_namesC</A></span> (<span class="symbol"><A NAME="ref_2475_37" HREF="terminal_interface-curses__adb.htm#ref_2475_16">e</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2474_16">use_extended_namesC</A></span> (<span class="symbol"><A NAME="ref_2474_37" HREF="terminal_interface-curses__adb.htm#ref_2474_16">e</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, use_extended_namesC, "use_extended_names");
- <span class="symbol"><A NAME="ref_2478_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> :=
- <A HREF="terminal_interface-curses__adb.htm#ref_2475_16">use_extended_namesC</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1852_33">Enable</A>)));
+ <span class="symbol"><A NAME="ref_2477_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> :=
+ <A HREF="terminal_interface-curses__adb.htm#ref_2474_16">use_extended_namesC</A> (<A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_2023_33">Enable</A>)));
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2478_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1926_4">Curses_Bool_False</A>) <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2477_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_2100_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> <A HREF="terminal_interface-curses__ads.htm#ref_1852_13">Use_Extended_Names</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2023_13">Use_Extended_Names</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_2488_14" HREF="terminal_interface-curses__ads.htm#ref_1868_14">Screen_Dump_To_File</A></span> (<span class="symbol"><A NAME="ref_2488_35" HREF="terminal_interface-curses__ads.htm#ref_1868_35">Filename</A></span> : String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2487_14" HREF="terminal_interface-curses__ads.htm#ref_2039_14">Screen_Dump_To_File</A></span> (<span class="symbol"><A NAME="ref_2487_35" HREF="terminal_interface-curses__ads.htm#ref_2039_35">Filename</A></span> : String)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2490_16">scr_dump</A></span> (<span class="symbol"><A NAME="ref_2490_26" HREF="terminal_interface-curses__adb.htm#ref_2490_16">f</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2489_16">scr_dump</A></span> (<span class="symbol"><A NAME="ref_2489_26" HREF="terminal_interface-curses__adb.htm#ref_2489_16">f</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, scr_dump, "scr_dump");
- <span class="symbol"><A NAME="ref_2492_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1868_35">Filename</A>'Length);
- <span class="symbol"><A NAME="ref_2493_7">Length</A></span> : size_t;
+ <span class="symbol"><A NAME="ref_2491_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_2039_35">Filename</A>'Length);
+ <span class="symbol"><A NAME="ref_2492_7">Length</A></span> : size_t;
<b>begin</b>
- To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1868_35">Filename</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2492_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2493_7">Length</A>);
- <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> = <A HREF="terminal_interface-curses__adb.htm#ref_2490_16">scr_dump</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2492_7">Txt</A>) <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ To_C (<A HREF="terminal_interface-curses__ads.htm#ref_2039_35">Filename</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2491_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2492_7">Length</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> = <A HREF="terminal_interface-curses__adb.htm#ref_2489_16">scr_dump</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2491_7">Txt</A>) <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1868_14">Screen_Dump_To_File</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2039_14">Screen_Dump_To_File</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2501_14" HREF="terminal_interface-curses__ads.htm#ref_1872_14">Screen_Restore_From_File</A></span> (<span class="symbol"><A NAME="ref_2501_40" HREF="terminal_interface-curses__ads.htm#ref_1872_40">Filename</A></span> : String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2500_14" HREF="terminal_interface-curses__ads.htm#ref_2043_14">Screen_Restore_From_File</A></span> (<span class="symbol"><A NAME="ref_2500_40" HREF="terminal_interface-curses__ads.htm#ref_2043_40">Filename</A></span> : String)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2503_16">scr_restore</A></span> (<span class="symbol"><A NAME="ref_2503_29" HREF="terminal_interface-curses__adb.htm#ref_2503_16">f</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2502_16">scr_restore</A></span> (<span class="symbol"><A NAME="ref_2502_29" HREF="terminal_interface-curses__adb.htm#ref_2502_16">f</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, scr_restore, "scr_restore");
- <span class="symbol"><A NAME="ref_2505_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1872_40">Filename</A>'Length);
- <span class="symbol"><A NAME="ref_2506_7">Length</A></span> : size_t;
+ <span class="symbol"><A NAME="ref_2504_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_2043_40">Filename</A>'Length);
+ <span class="symbol"><A NAME="ref_2505_7">Length</A></span> : size_t;
<b>begin</b>
- To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1872_40">Filename</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2505_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2506_7">Length</A>);
- <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> = <A HREF="terminal_interface-curses__adb.htm#ref_2503_16">scr_restore</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2505_7">Txt</A>) <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ To_C (<A HREF="terminal_interface-curses__ads.htm#ref_2043_40">Filename</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2504_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2505_7">Length</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> = <A HREF="terminal_interface-curses__adb.htm#ref_2502_16">scr_restore</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2504_7">Txt</A>) <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1872_14">Screen_Restore_From_File</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2043_14">Screen_Restore_From_File</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2514_14" HREF="terminal_interface-curses__ads.htm#ref_1876_14">Screen_Init_From_File</A></span> (<span class="symbol"><A NAME="ref_2514_37" HREF="terminal_interface-curses__ads.htm#ref_1876_37">Filename</A></span> : String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2513_14" HREF="terminal_interface-curses__ads.htm#ref_2047_14">Screen_Init_From_File</A></span> (<span class="symbol"><A NAME="ref_2513_37" HREF="terminal_interface-curses__ads.htm#ref_2047_37">Filename</A></span> : String)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2516_16">scr_init</A></span> (<span class="symbol"><A NAME="ref_2516_26" HREF="terminal_interface-curses__adb.htm#ref_2516_16">f</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2515_16">scr_init</A></span> (<span class="symbol"><A NAME="ref_2515_26" HREF="terminal_interface-curses__adb.htm#ref_2515_16">f</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, scr_init, "scr_init");
- <span class="symbol"><A NAME="ref_2518_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1876_37">Filename</A>'Length);
- <span class="symbol"><A NAME="ref_2519_7">Length</A></span> : size_t;
+ <span class="symbol"><A NAME="ref_2517_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_2047_37">Filename</A>'Length);
+ <span class="symbol"><A NAME="ref_2518_7">Length</A></span> : size_t;
<b>begin</b>
- To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1876_37">Filename</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2518_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2519_7">Length</A>);
- <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> = <A HREF="terminal_interface-curses__adb.htm#ref_2516_16">scr_init</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2518_7">Txt</A>) <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ To_C (<A HREF="terminal_interface-curses__ads.htm#ref_2047_37">Filename</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2517_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2518_7">Length</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> = <A HREF="terminal_interface-curses__adb.htm#ref_2515_16">scr_init</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2517_7">Txt</A>) <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1876_14">Screen_Init_From_File</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2047_14">Screen_Init_From_File</A>;
- <b>procedure</b> <span class="symbol"><A NAME="ref_2527_14" HREF="terminal_interface-curses__ads.htm#ref_1880_14">Screen_Set_File</A></span> (<span class="symbol"><A NAME="ref_2527_31" HREF="terminal_interface-curses__ads.htm#ref_1880_31">Filename</A></span> : String)
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2526_14" HREF="terminal_interface-curses__ads.htm#ref_2051_14">Screen_Set_File</A></span> (<span class="symbol"><A NAME="ref_2526_31" HREF="terminal_interface-curses__ads.htm#ref_2051_31">Filename</A></span> : String)
<b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2529_16">scr_set</A></span> (<span class="symbol"><A NAME="ref_2529_25" HREF="terminal_interface-curses__adb.htm#ref_2529_16">f</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_2528_16">scr_set</A></span> (<span class="symbol"><A NAME="ref_2528_25" HREF="terminal_interface-curses__adb.htm#ref_2528_16">f</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, scr_set, "scr_set");
- <span class="symbol"><A NAME="ref_2531_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1880_31">Filename</A>'Length);
- <span class="symbol"><A NAME="ref_2532_7">Length</A></span> : size_t;
+ <span class="symbol"><A NAME="ref_2530_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_2051_31">Filename</A>'Length);
+ <span class="symbol"><A NAME="ref_2531_7">Length</A></span> : size_t;
<b>begin</b>
- To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1880_31">Filename</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2531_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2532_7">Length</A>);
- <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> = <A HREF="terminal_interface-curses__adb.htm#ref_2529_16">scr_set</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2531_7">Txt</A>) <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ To_C (<A HREF="terminal_interface-curses__ads.htm#ref_2051_31">Filename</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2530_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2531_7">Length</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A> = <A HREF="terminal_interface-curses__adb.htm#ref_2528_16">scr_set</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2530_7">Txt</A>) <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1880_14">Screen_Set_File</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2051_14">Screen_Set_File</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_2540_14" HREF="terminal_interface-curses__ads.htm#ref_1912_14">Resize</A></span> (<span class="symbol"><A NAME="ref_2540_22" HREF="terminal_interface-curses__ads.htm#ref_1912_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_2541_22" HREF="terminal_interface-curses__ads.htm#ref_1913_22">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_2542_22" HREF="terminal_interface-curses__ads.htm#ref_1914_22">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>) <b>is</b>
- <b>function</b> <span class="symbol"><A NAME="ref_2543_16">wresize</A></span> (<span class="symbol"><A NAME="ref_2543_25" HREF="terminal_interface-curses__adb.htm#ref_2543_16">win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_2544_25" HREF="terminal_interface-curses__adb.htm#ref_2543_16">lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
- <span class="symbol"><A NAME="ref_2545_25" HREF="terminal_interface-curses__adb.htm#ref_2543_16">columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A>;
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2539_14" HREF="terminal_interface-curses__ads.htm#ref_2083_14">Resize</A></span> (<span class="symbol"><A NAME="ref_2539_22" HREF="terminal_interface-curses__ads.htm#ref_2083_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_2540_22" HREF="terminal_interface-curses__ads.htm#ref_2084_22">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_2541_22" HREF="terminal_interface-curses__ads.htm#ref_2085_22">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>) <b>is</b>
+ <b>function</b> <span class="symbol"><A NAME="ref_2542_16">wresize</A></span> (<span class="symbol"><A NAME="ref_2542_25" HREF="terminal_interface-curses__adb.htm#ref_2542_16">win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_2543_25" HREF="terminal_interface-curses__adb.htm#ref_2542_16">lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
+ <span class="symbol"><A NAME="ref_2544_25" HREF="terminal_interface-curses__adb.htm#ref_2542_16">columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A>;
<b>pragma</b> Import (C, wresize);
<b>begin</b>
- <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2543_16">wresize</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1912_22">Win</A>,
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1913_22">Number_Of_Lines</A>),
- <A HREF="terminal_interface-curses-aux__ads.htm#ref_55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1914_22">Number_Of_Columns</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_4">Curses_Err</A> <b>then</b>
- <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_384_4">Curses_Exception</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2542_16">wresize</A> (<A HREF="terminal_interface-curses__ads.htm#ref_2083_22">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_2084_22">Number_Of_Lines</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#ref_48_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_2085_22">Number_Of_Columns</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_521_4">Curses_Exception</A>;
<b>end</b> <b>if</b>;
- <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1912_14">Resize</A>;
+ <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2083_14">Resize</A>;
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses__ads.htm b/doc/html/ada/terminal_interface-curses__ads.htm
index 0d60bc433e6f..bb7831504648 100644
--- a/doc/html/ada/terminal_interface-curses__ads.htm
+++ b/doc/html/ada/terminal_interface-curses__ads.htm
@@ -24,7 +24,7 @@
<span class="comment"><EM>-- S P E C --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. --</EM></span>
+<span class="comment"><EM>-- Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. --</EM></span>
<span class="comment"><EM>-- --</EM></span>
<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span>
<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span>
@@ -52,372 +52,509 @@
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span>
<span class="comment"><EM>-- Version Control:</EM></span>
-<span class="comment"><EM>-- @Revision: 1.44 @</EM></span>
-<span class="comment"><EM>-- @Date: 2011/03/19 23:05:56 @</EM></span>
+<span class="comment"><EM>-- @Revision: 1.47 @</EM></span>
+<span class="comment"><EM>-- @Date: 2014/05/24 21:31:57 @</EM></span>
<span class="comment"><EM>-- Binding Version 01.00</EM></span>
<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
-<span class="comment"><EM>-- curses binding.</EM></span>
-<span class="comment"><EM>-- This module is generated. Please don't change it manually!</EM></span>
-<span class="comment"><EM>-- Run the generator instead.</EM></span>
-<span class="comment"><EM>-- |</EM></span>
<b>with</b> System.Storage_Elements;
-<b>with</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C; <span class="comment"><EM>-- We need this for some assertions.</EM></span>
+<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <span class="comment"><EM>-- We need this for some assertions.</EM></span>
-<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<span class="symbol"><A NAME="ref_49_28" HREF="terminal_interface-curses__adb.htm#ref_50_33">Curses</A></span> <b>is</b>
- <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>);
- <b>pragma</b> Linker_Options ("-lncurses");
+<b>with</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>;
- <span class="symbol"><A NAME="ref_53_4">NC_Major_Version</A></span> : <b>constant</b> := 5; <span class="comment"><EM>-- Major version of the library</EM></span>
- <span class="symbol"><A NAME="ref_54_4">NC_Minor_Version</A></span> : <b>constant</b> := 9; <span class="comment"><EM>-- Minor version of the library</EM></span>
- <span class="symbol"><A NAME="ref_55_4">NC_Version</A></span> : <b>constant</b> String := "5.9"; <span class="comment"><EM>-- Version of library</EM></span>
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<span class="symbol"><A NAME="ref_47_28" HREF="terminal_interface-curses__adb.htm#ref_50_33">Curses</A></span> <b>is</b>
+ <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>);
+ <b>pragma</b> Linker_Options ("-lncurses" &amp; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_9_4">DFT_ARG_SUFFIX</A>);
- <b>type</b> <span class="symbol"><A NAME="ref_57_9">Window</A></span> <b>is</b> <b>private</b>;
- <span class="symbol"><A NAME="ref_58_4">Null_Window</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="symbol"><A NAME="ref_51_4">Major_Version</A></span> : <b>constant</b> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_21_4">NCURSES_VERSION_MAJOR</A>;
+ <span class="symbol"><A NAME="ref_52_4">Minor_Version</A></span> : <b>constant</b> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_22_4">NCURSES_VERSION_MINOR</A>;
+ NC_Version : String <b>renames</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_23_4">Version</A>;
- <b>type</b> <span class="symbol"><A NAME="ref_60_9">Line_Position</A></span> <b>is</b> <b>new</b> Integer; <span class="comment"><EM>-- line coordinate</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_61_9">Column_Position</A></span> <b>is</b> <b>new</b> Integer; <span class="comment"><EM>-- column coordinate</EM></span>
+ <b>type</b> <span class="symbol"><A NAME="ref_55_9">Window</A></span> <b>is</b> <b>private</b>;
+ <span class="symbol"><A NAME="ref_56_4">Null_Window</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
- <b>subtype</b> <span class="symbol"><A NAME="ref_63_12">Line_Count</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A> <b>range</b> 1 .. <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>'Last;
+ <b>type</b> <span class="symbol"><A NAME="ref_58_9">Line_Position</A></span> <b>is</b> <b>new</b> Integer; <span class="comment"><EM>-- line coordinate</EM></span>
+ <b>type</b> <span class="symbol"><A NAME="ref_59_9">Column_Position</A></span> <b>is</b> <b>new</b> Integer; <span class="comment"><EM>-- column coordinate</EM></span>
+
+ <b>subtype</b> <span class="symbol"><A NAME="ref_61_12">Line_Count</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A> <b>range</b> 1 .. <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>'Last;
<span class="comment"><EM>-- Type to count lines. We do not allow null windows, so must be positive</EM></span>
- <b>subtype</b> <span class="symbol"><A NAME="ref_65_12">Column_Count</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> <b>range</b> 1 .. <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>'Last;
+ <b>subtype</b> <span class="symbol"><A NAME="ref_63_12">Column_Count</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> <b>range</b> 1 .. <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>'Last;
<span class="comment"><EM>-- Type to count columns. We do not allow null windows, so must be positive</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_68_9">Key_Code</A></span> <b>is</b> <b>new</b> Integer;
+ <b>type</b> <span class="symbol"><A NAME="ref_66_9">Key_Code</A></span> <b>is</b> <b>new</b> Integer;
<span class="comment"><EM>-- That is anything including real characters, special keys and logical</EM></span>
<span class="comment"><EM>-- request codes.</EM></span>
<span class="comment"><EM>-- FIXME: The "-1" should be Curses_Err</EM></span>
- <b>subtype</b> <span class="symbol"><A NAME="ref_73_12">Real_Key_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_68_9">Key_Code</A> <b>range</b> -1 .. 8#777#;
+ <b>subtype</b> <span class="symbol"><A NAME="ref_71_12">Real_Key_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_66_9">Key_Code</A> <b>range</b> -1 .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_99_4">KEY_MAX</A>;
<span class="comment"><EM>-- This are the codes that potentially represent a real keystroke.</EM></span>
<span class="comment"><EM>-- Not all codes may be possible on a specific terminal. To check the</EM></span>
<span class="comment"><EM>-- availability of a special key, the Has_Key function is provided.</EM></span>
- <b>subtype</b> <span class="symbol"><A NAME="ref_78_12">Special_Key_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A>
- <b>range</b> 8#400# .. <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A>'Last;
+ <b>subtype</b> <span class="symbol"><A NAME="ref_76_12">Special_Key_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A>
+ <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>. <A HREF="terminal_interface-curses_constants__ads.htm#ref_98_4">KEY_MIN</A> - 1 .. <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A>'Last;
<span class="comment"><EM>-- Type for a function- or special key number</EM></span>
- <b>subtype</b> <span class="symbol"><A NAME="ref_82_12">Normal_Key_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A> <b>range</b>
+ <b>subtype</b> <span class="symbol"><A NAME="ref_80_12">Normal_Key_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A> <b>range</b>
Character'Pos (Character'First) .. Character'Pos (Character'Last);
<span class="comment"><EM>-- This are the codes for regular (incl. non-graphical) characters.</EM></span>
+ <span class="comment"><EM>-- For those who like to use the original key names we produce them were</EM></span>
+ <span class="comment"><EM>-- they differ from the original.</EM></span>
+
<span class="comment"><EM>-- Constants for function- and special keys</EM></span>
- <span class="comment"><EM>--</EM></span>
- <span class="symbol"><A NAME="ref_88_4">Key_None</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#400#;
- <span class="symbol"><A NAME="ref_89_4">Key_Code_Yes</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#400#;
- <span class="symbol"><A NAME="ref_90_4">Key_Min</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#401#;
- <span class="symbol"><A NAME="ref_91_4">Key_Break</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#401#;
- <span class="symbol"><A NAME="ref_92_4">Key_Cursor_Down</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#402#;
- <span class="symbol"><A NAME="ref_93_4">Key_Cursor_Up</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#403#;
- <span class="symbol"><A NAME="ref_94_4">Key_Cursor_Left</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#404#;
- <span class="symbol"><A NAME="ref_95_4">Key_Cursor_Right</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#405#;
- <span class="symbol"><A NAME="ref_96_4">Key_Home</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#406#;
- <span class="symbol"><A NAME="ref_97_4">Key_Backspace</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#407#;
- <span class="symbol"><A NAME="ref_98_4">Key_F0</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#410#;
- <span class="symbol"><A NAME="ref_99_4">Key_F1</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#411#;
- <span class="symbol"><A NAME="ref_100_4">Key_F2</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#412#;
- <span class="symbol"><A NAME="ref_101_4">Key_F3</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#413#;
- <span class="symbol"><A NAME="ref_102_4">Key_F4</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#414#;
- <span class="symbol"><A NAME="ref_103_4">Key_F5</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#415#;
- <span class="symbol"><A NAME="ref_104_4">Key_F6</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#416#;
- <span class="symbol"><A NAME="ref_105_4">Key_F7</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#417#;
- <span class="symbol"><A NAME="ref_106_4">Key_F8</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#420#;
- <span class="symbol"><A NAME="ref_107_4">Key_F9</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#421#;
- <span class="symbol"><A NAME="ref_108_4">Key_F10</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#422#;
- <span class="symbol"><A NAME="ref_109_4">Key_F11</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#423#;
- <span class="symbol"><A NAME="ref_110_4">Key_F12</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#424#;
- <span class="symbol"><A NAME="ref_111_4">Key_F13</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#425#;
- <span class="symbol"><A NAME="ref_112_4">Key_F14</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#426#;
- <span class="symbol"><A NAME="ref_113_4">Key_F15</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#427#;
- <span class="symbol"><A NAME="ref_114_4">Key_F16</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#430#;
- <span class="symbol"><A NAME="ref_115_4">Key_F17</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#431#;
- <span class="symbol"><A NAME="ref_116_4">Key_F18</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#432#;
- <span class="symbol"><A NAME="ref_117_4">Key_F19</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#433#;
- <span class="symbol"><A NAME="ref_118_4">Key_F20</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#434#;
- <span class="symbol"><A NAME="ref_119_4">Key_F21</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#435#;
- <span class="symbol"><A NAME="ref_120_4">Key_F22</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#436#;
- <span class="symbol"><A NAME="ref_121_4">Key_F23</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#437#;
- <span class="symbol"><A NAME="ref_122_4">Key_F24</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#440#;
- <span class="symbol"><A NAME="ref_123_4">Key_Delete_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#510#;
- <span class="symbol"><A NAME="ref_124_4">Key_Insert_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#511#;
- <span class="symbol"><A NAME="ref_125_4">Key_Delete_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#512#;
- <span class="symbol"><A NAME="ref_126_4">Key_Insert_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#513#;
- <span class="symbol"><A NAME="ref_127_4">Key_Exit_Insert_Mode</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#514#;
- <span class="symbol"><A NAME="ref_128_4">Key_Clear_Screen</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#515#;
- <span class="symbol"><A NAME="ref_129_4">Key_Clear_End_Of_Screen</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#516#;
- <span class="symbol"><A NAME="ref_130_4">Key_Clear_End_Of_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#517#;
- <span class="symbol"><A NAME="ref_131_4">Key_Scroll_1_Forward</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#520#;
- <span class="symbol"><A NAME="ref_132_4">Key_Scroll_1_Backward</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#521#;
- <span class="symbol"><A NAME="ref_133_4">Key_Next_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#522#;
- <span class="symbol"><A NAME="ref_134_4">Key_Previous_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#523#;
- <span class="symbol"><A NAME="ref_135_4">Key_Set_Tab</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#524#;
- <span class="symbol"><A NAME="ref_136_4">Key_Clear_Tab</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#525#;
- <span class="symbol"><A NAME="ref_137_4">Key_Clear_All_Tabs</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#526#;
- <span class="symbol"><A NAME="ref_138_4">Key_Enter_Or_Send</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#527#;
- <span class="symbol"><A NAME="ref_139_4">Key_Soft_Reset</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#530#;
- <span class="symbol"><A NAME="ref_140_4">Key_Reset</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#531#;
- <span class="symbol"><A NAME="ref_141_4">Key_Print</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#532#;
- <span class="symbol"><A NAME="ref_142_4">Key_Bottom</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#533#;
- <span class="symbol"><A NAME="ref_143_4">Key_Upper_Left_Of_Keypad</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#534#;
- <span class="symbol"><A NAME="ref_144_4">Key_Upper_Right_Of_Keypad</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#535#;
- <span class="symbol"><A NAME="ref_145_4">Key_Center_Of_Keypad</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#536#;
- <span class="symbol"><A NAME="ref_146_4">Key_Lower_Left_Of_Keypad</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#537#;
- <span class="symbol"><A NAME="ref_147_4">Key_Lower_Right_Of_Keypad</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#540#;
- <span class="symbol"><A NAME="ref_148_4">Key_Back_Tab</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#541#;
- <span class="symbol"><A NAME="ref_149_4">Key_Beginning</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#542#;
- <span class="symbol"><A NAME="ref_150_4">Key_Cancel</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#543#;
- <span class="symbol"><A NAME="ref_151_4">Key_Close</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#544#;
- <span class="symbol"><A NAME="ref_152_4">Key_Command</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#545#;
- <span class="symbol"><A NAME="ref_153_4">Key_Copy</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#546#;
- <span class="symbol"><A NAME="ref_154_4">Key_Create</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#547#;
- <span class="symbol"><A NAME="ref_155_4">Key_End</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#550#;
- <span class="symbol"><A NAME="ref_156_4">Key_Exit</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#551#;
- <span class="symbol"><A NAME="ref_157_4">Key_Find</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#552#;
- <span class="symbol"><A NAME="ref_158_4">Key_Help</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#553#;
- <span class="symbol"><A NAME="ref_159_4">Key_Mark</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#554#;
- <span class="symbol"><A NAME="ref_160_4">Key_Message</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#555#;
- <span class="symbol"><A NAME="ref_161_4">Key_Move</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#556#;
- <span class="symbol"><A NAME="ref_162_4">Key_Next</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#557#;
- <span class="symbol"><A NAME="ref_163_4">Key_Open</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#560#;
- <span class="symbol"><A NAME="ref_164_4">Key_Options</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#561#;
- <span class="symbol"><A NAME="ref_165_4">Key_Previous</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#562#;
- <span class="symbol"><A NAME="ref_166_4">Key_Redo</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#563#;
- <span class="symbol"><A NAME="ref_167_4">Key_Reference</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#564#;
- <span class="symbol"><A NAME="ref_168_4">Key_Refresh</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#565#;
- <span class="symbol"><A NAME="ref_169_4">Key_Replace</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#566#;
- <span class="symbol"><A NAME="ref_170_4">Key_Restart</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#567#;
- <span class="symbol"><A NAME="ref_171_4">Key_Resume</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#570#;
- <span class="symbol"><A NAME="ref_172_4">Key_Save</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#571#;
- <span class="symbol"><A NAME="ref_173_4">Key_Shift_Begin</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#572#;
- <span class="symbol"><A NAME="ref_174_4">Key_Shift_Cancel</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#573#;
- <span class="symbol"><A NAME="ref_175_4">Key_Shift_Command</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#574#;
- <span class="symbol"><A NAME="ref_176_4">Key_Shift_Copy</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#575#;
- <span class="symbol"><A NAME="ref_177_4">Key_Shift_Create</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#576#;
- <span class="symbol"><A NAME="ref_178_4">Key_Shift_Delete_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#577#;
- <span class="symbol"><A NAME="ref_179_4">Key_Shift_Delete_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#600#;
- <span class="symbol"><A NAME="ref_180_4">Key_Select</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#601#;
- <span class="symbol"><A NAME="ref_181_4">Key_Shift_End</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#602#;
- <span class="symbol"><A NAME="ref_182_4">Key_Shift_Clear_End_Of_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#603#;
- <span class="symbol"><A NAME="ref_183_4">Key_Shift_Exit</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#604#;
- <span class="symbol"><A NAME="ref_184_4">Key_Shift_Find</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#605#;
- <span class="symbol"><A NAME="ref_185_4">Key_Shift_Help</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#606#;
- <span class="symbol"><A NAME="ref_186_4">Key_Shift_Home</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#607#;
- <span class="symbol"><A NAME="ref_187_4">Key_Shift_Insert_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#610#;
- <span class="symbol"><A NAME="ref_188_4">Key_Shift_Cursor_Left</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#611#;
- <span class="symbol"><A NAME="ref_189_4">Key_Shift_Message</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#612#;
- <span class="symbol"><A NAME="ref_190_4">Key_Shift_Move</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#613#;
- <span class="symbol"><A NAME="ref_191_4">Key_Shift_Next_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#614#;
- <span class="symbol"><A NAME="ref_192_4">Key_Shift_Options</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#615#;
- <span class="symbol"><A NAME="ref_193_4">Key_Shift_Previous_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#616#;
- <span class="symbol"><A NAME="ref_194_4">Key_Shift_Print</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#617#;
- <span class="symbol"><A NAME="ref_195_4">Key_Shift_Redo</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#620#;
- <span class="symbol"><A NAME="ref_196_4">Key_Shift_Replace</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#621#;
- <span class="symbol"><A NAME="ref_197_4">Key_Shift_Cursor_Right</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#622#;
- <span class="symbol"><A NAME="ref_198_4">Key_Shift_Resume</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#623#;
- <span class="symbol"><A NAME="ref_199_4">Key_Shift_Save</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#624#;
- <span class="symbol"><A NAME="ref_200_4">Key_Shift_Suspend</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#625#;
- <span class="symbol"><A NAME="ref_201_4">Key_Shift_Undo</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#626#;
- <span class="symbol"><A NAME="ref_202_4">Key_Suspend</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#627#;
- <span class="symbol"><A NAME="ref_203_4">Key_Undo</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#630#;
- <span class="symbol"><A NAME="ref_204_4">Key_Mouse</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#631#;
- <span class="symbol"><A NAME="ref_205_4">Key_Resize</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> := 8#632#;
-
- <span class="symbol"><A NAME="ref_207_4">Key_Max</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A>
- := <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A>'Last;
-
- <b>subtype</b> <span class="symbol"><A NAME="ref_210_12">User_Key_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_68_9">Key_Code</A>
- <b>range</b> (<A HREF="terminal_interface-curses__ads.htm#ref_207_4">Key_Max</A> + 129) .. <A HREF="terminal_interface-curses__ads.htm#ref_68_9">Key_Code</A>'Last;
+ <span class="symbol"><A NAME="ref_88_4">Key_None</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_98_4">KEY_MIN</A> - 1;
+ <span class="symbol"><A NAME="ref_90_4">Key_Min</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_98_4">KEY_MIN</A>;
+ <span class="symbol"><A NAME="ref_92_4">Key_Break</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_104_4">KEY_BREAK</A>;
+ <span class="symbol"><A NAME="ref_94_4">KEY_DOWN</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_105_4">KEY_DOWN</A>;
+ Key_Cursor_Down : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_94_4">KEY_DOWN</A>;
+ <span class="symbol"><A NAME="ref_97_4">KEY_UP</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_106_4">KEY_UP</A>;
+ Key_Cursor_Up : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_97_4">KEY_UP</A>;
+ <span class="symbol"><A NAME="ref_100_4">KEY_LEFT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_107_4">KEY_LEFT</A>;
+ Key_Cursor_Left : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_100_4">KEY_LEFT</A>;
+ <span class="symbol"><A NAME="ref_103_4">KEY_RIGHT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_108_4">KEY_RIGHT</A>;
+ Key_Cursor_Right : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_103_4">KEY_RIGHT</A>;
+ <span class="symbol"><A NAME="ref_106_4">Key_Home</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_109_4">KEY_HOME</A>;
+ <span class="symbol"><A NAME="ref_108_4">Key_Backspace</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_110_4">KEY_BACKSPACE</A>;
+ <span class="symbol"><A NAME="ref_110_4">Key_F0</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_111_4">KEY_F0</A>;
+ <span class="symbol"><A NAME="ref_112_4">Key_F1</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_112_4">KEY_F1</A>;
+ <span class="symbol"><A NAME="ref_114_4">Key_F2</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_113_4">KEY_F2</A>;
+ <span class="symbol"><A NAME="ref_116_4">Key_F3</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_114_4">KEY_F3</A>;
+ <span class="symbol"><A NAME="ref_118_4">Key_F4</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_115_4">KEY_F4</A>;
+ <span class="symbol"><A NAME="ref_120_4">Key_F5</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_116_4">KEY_F5</A>;
+ <span class="symbol"><A NAME="ref_122_4">Key_F6</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_117_4">KEY_F6</A>;
+ <span class="symbol"><A NAME="ref_124_4">Key_F7</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_118_4">KEY_F7</A>;
+ <span class="symbol"><A NAME="ref_126_4">Key_F8</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_119_4">KEY_F8</A>;
+ <span class="symbol"><A NAME="ref_128_4">Key_F9</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_120_4">KEY_F9</A>;
+ <span class="symbol"><A NAME="ref_130_4">Key_F10</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_121_4">KEY_F10</A>;
+ <span class="symbol"><A NAME="ref_132_4">Key_F11</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_122_4">KEY_F11</A>;
+ <span class="symbol"><A NAME="ref_134_4">Key_F12</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_123_4">KEY_F12</A>;
+ <span class="symbol"><A NAME="ref_136_4">Key_F13</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_124_4">KEY_F13</A>;
+ <span class="symbol"><A NAME="ref_138_4">Key_F14</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_125_4">KEY_F14</A>;
+ <span class="symbol"><A NAME="ref_140_4">Key_F15</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_126_4">KEY_F15</A>;
+ <span class="symbol"><A NAME="ref_142_4">Key_F16</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_127_4">KEY_F16</A>;
+ <span class="symbol"><A NAME="ref_144_4">Key_F17</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_128_4">KEY_F17</A>;
+ <span class="symbol"><A NAME="ref_146_4">Key_F18</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_129_4">KEY_F18</A>;
+ <span class="symbol"><A NAME="ref_148_4">Key_F19</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_130_4">KEY_F19</A>;
+ <span class="symbol"><A NAME="ref_150_4">Key_F20</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_131_4">KEY_F20</A>;
+ <span class="symbol"><A NAME="ref_152_4">Key_F21</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_132_4">KEY_F21</A>;
+ <span class="symbol"><A NAME="ref_154_4">Key_F22</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_133_4">KEY_F22</A>;
+ <span class="symbol"><A NAME="ref_156_4">Key_F23</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_134_4">KEY_F23</A>;
+ <span class="symbol"><A NAME="ref_158_4">Key_F24</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_135_4">KEY_F24</A>;
+ <span class="symbol"><A NAME="ref_160_4">KEY_DL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_136_4">KEY_DL</A>;
+ Key_Delete_Line : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_160_4">KEY_DL</A>;
+ <span class="symbol"><A NAME="ref_163_4">KEY_IL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_137_4">KEY_IL</A>;
+ Key_Insert_Line : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_163_4">KEY_IL</A>;
+ <span class="symbol"><A NAME="ref_166_4">KEY_DC</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_138_4">KEY_DC</A>;
+ Key_Delete_Char : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_166_4">KEY_DC</A>;
+ <span class="symbol"><A NAME="ref_169_4">KEY_IC</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_139_4">KEY_IC</A>;
+ Key_Insert_Char : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_169_4">KEY_IC</A>;
+ <span class="symbol"><A NAME="ref_172_4">KEY_EIC</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_140_4">KEY_EIC</A>;
+ Key_Exit_Insert_Mode : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_172_4">KEY_EIC</A>;
+ <span class="symbol"><A NAME="ref_175_4">KEY_CLEAR</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_141_4">KEY_CLEAR</A>;
+ Key_Clear_Screen : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_175_4">KEY_CLEAR</A>;
+ <span class="symbol"><A NAME="ref_178_4">KEY_EOS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_142_4">KEY_EOS</A>;
+ Key_Clear_End_Of_Screen : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_178_4">KEY_EOS</A>;
+ <span class="symbol"><A NAME="ref_181_4">KEY_EOL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_143_4">KEY_EOL</A>;
+ Key_Clear_End_Of_Line : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_181_4">KEY_EOL</A>;
+ <span class="symbol"><A NAME="ref_184_4">KEY_SF</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_144_4">KEY_SF</A>;
+ Key_Scroll_1_Forward : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_184_4">KEY_SF</A>;
+ <span class="symbol"><A NAME="ref_187_4">KEY_SR</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_145_4">KEY_SR</A>;
+ Key_Scroll_1_Backward : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_187_4">KEY_SR</A>;
+ <span class="symbol"><A NAME="ref_190_4">KEY_NPAGE</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_146_4">KEY_NPAGE</A>;
+ Key_Next_Page : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_190_4">KEY_NPAGE</A>;
+ <span class="symbol"><A NAME="ref_193_4">KEY_PPAGE</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_147_4">KEY_PPAGE</A>;
+ Key_Previous_Page : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_193_4">KEY_PPAGE</A>;
+ <span class="symbol"><A NAME="ref_196_4">KEY_STAB</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_148_4">KEY_STAB</A>;
+ Key_Set_Tab : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_196_4">KEY_STAB</A>;
+ <span class="symbol"><A NAME="ref_199_4">KEY_CTAB</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_149_4">KEY_CTAB</A>;
+ Key_Clear_Tab : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_199_4">KEY_CTAB</A>;
+ <span class="symbol"><A NAME="ref_202_4">KEY_CATAB</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_150_4">KEY_CATAB</A>;
+ Key_Clear_All_Tabs : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_202_4">KEY_CATAB</A>;
+ <span class="symbol"><A NAME="ref_205_4">KEY_ENTER</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_151_4">KEY_ENTER</A>;
+ Key_Enter_Or_Send : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_205_4">KEY_ENTER</A>;
+ <span class="symbol"><A NAME="ref_208_4">KEY_SRESET</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_152_4">KEY_SRESET</A>;
+ Key_Soft_Reset : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_208_4">KEY_SRESET</A>;
+ <span class="symbol"><A NAME="ref_211_4">Key_Reset</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_153_4">KEY_RESET</A>;
+ <span class="symbol"><A NAME="ref_213_4">Key_Print</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_154_4">KEY_PRINT</A>;
+ <span class="symbol"><A NAME="ref_215_4">KEY_LL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_155_4">KEY_LL</A>;
+ Key_Bottom : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_215_4">KEY_LL</A>;
+ <span class="symbol"><A NAME="ref_218_4">KEY_A1</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_156_4">KEY_A1</A>;
+ Key_Upper_Left_Of_Keypad : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_218_4">KEY_A1</A>;
+ <span class="symbol"><A NAME="ref_221_4">KEY_A3</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_157_4">KEY_A3</A>;
+ Key_Upper_Right_Of_Keypad : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_221_4">KEY_A3</A>;
+ <span class="symbol"><A NAME="ref_224_4">KEY_B2</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_158_4">KEY_B2</A>;
+ Key_Center_Of_Keypad : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_224_4">KEY_B2</A>;
+ <span class="symbol"><A NAME="ref_227_4">KEY_C1</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_159_4">KEY_C1</A>;
+ Key_Lower_Left_Of_Keypad : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_227_4">KEY_C1</A>;
+ <span class="symbol"><A NAME="ref_230_4">KEY_C3</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_160_4">KEY_C3</A>;
+ Key_Lower_Right_Of_Keypad : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_230_4">KEY_C3</A>;
+ <span class="symbol"><A NAME="ref_233_4">KEY_BTAB</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_161_4">KEY_BTAB</A>;
+ Key_Back_Tab : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_233_4">KEY_BTAB</A>;
+ <span class="symbol"><A NAME="ref_236_4">KEY_BEG</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_162_4">KEY_BEG</A>;
+ Key_Beginning : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_236_4">KEY_BEG</A>;
+ <span class="symbol"><A NAME="ref_239_4">Key_Cancel</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_163_4">KEY_CANCEL</A>;
+ <span class="symbol"><A NAME="ref_241_4">Key_Close</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_164_4">KEY_CLOSE</A>;
+ <span class="symbol"><A NAME="ref_243_4">Key_Command</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_165_4">KEY_COMMAND</A>;
+ <span class="symbol"><A NAME="ref_245_4">Key_Copy</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_166_4">KEY_COPY</A>;
+ <span class="symbol"><A NAME="ref_247_4">Key_Create</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_167_4">KEY_CREATE</A>;
+ <span class="symbol"><A NAME="ref_249_4">Key_End</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_168_4">KEY_END</A>;
+ <span class="symbol"><A NAME="ref_251_4">Key_Exit</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_169_4">KEY_EXIT</A>;
+ <span class="symbol"><A NAME="ref_253_4">Key_Find</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_170_4">KEY_FIND</A>;
+ <span class="symbol"><A NAME="ref_255_4">Key_Help</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_171_4">KEY_HELP</A>;
+ <span class="symbol"><A NAME="ref_257_4">Key_Mark</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_172_4">KEY_MARK</A>;
+ <span class="symbol"><A NAME="ref_259_4">Key_Message</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_173_4">KEY_MESSAGE</A>;
+ <span class="symbol"><A NAME="ref_261_4">Key_Move</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_174_4">KEY_MOVE</A>;
+ <span class="symbol"><A NAME="ref_263_4">Key_Next</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_175_4">KEY_NEXT</A>;
+ <span class="symbol"><A NAME="ref_265_4">Key_Open</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_176_4">KEY_OPEN</A>;
+ <span class="symbol"><A NAME="ref_267_4">Key_Options</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_177_4">KEY_OPTIONS</A>;
+ <span class="symbol"><A NAME="ref_269_4">Key_Previous</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_178_4">KEY_PREVIOUS</A>;
+ <span class="symbol"><A NAME="ref_271_4">Key_Redo</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_179_4">KEY_REDO</A>;
+ <span class="symbol"><A NAME="ref_273_4">Key_Reference</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_180_4">KEY_REFERENCE</A>;
+ <span class="symbol"><A NAME="ref_275_4">Key_Refresh</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_181_4">KEY_REFRESH</A>;
+ <span class="symbol"><A NAME="ref_277_4">Key_Replace</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_182_4">KEY_REPLACE</A>;
+ <span class="symbol"><A NAME="ref_279_4">Key_Restart</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_183_4">KEY_RESTART</A>;
+ <span class="symbol"><A NAME="ref_281_4">Key_Resume</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_184_4">KEY_RESUME</A>;
+ <span class="symbol"><A NAME="ref_283_4">Key_Save</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_185_4">KEY_SAVE</A>;
+ <span class="symbol"><A NAME="ref_285_4">KEY_SBEG</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_186_4">KEY_SBEG</A>;
+ Key_Shift_Begin : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_285_4">KEY_SBEG</A>;
+ <span class="symbol"><A NAME="ref_288_4">KEY_SCANCEL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_187_4">KEY_SCANCEL</A>;
+ Key_Shift_Cancel : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_288_4">KEY_SCANCEL</A>;
+ <span class="symbol"><A NAME="ref_291_4">KEY_SCOMMAND</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_188_4">KEY_SCOMMAND</A>;
+ Key_Shift_Command : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_291_4">KEY_SCOMMAND</A>;
+ <span class="symbol"><A NAME="ref_294_4">KEY_SCOPY</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_189_4">KEY_SCOPY</A>;
+ Key_Shift_Copy : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_294_4">KEY_SCOPY</A>;
+ <span class="symbol"><A NAME="ref_297_4">KEY_SCREATE</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_190_4">KEY_SCREATE</A>;
+ Key_Shift_Create : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_297_4">KEY_SCREATE</A>;
+ <span class="symbol"><A NAME="ref_300_4">KEY_SDC</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_191_4">KEY_SDC</A>;
+ Key_Shift_Delete_Char : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_300_4">KEY_SDC</A>;
+ <span class="symbol"><A NAME="ref_303_4">KEY_SDL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_192_4">KEY_SDL</A>;
+ Key_Shift_Delete_Line : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_303_4">KEY_SDL</A>;
+ <span class="symbol"><A NAME="ref_306_4">Key_Select</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_193_4">KEY_SELECT</A>;
+ <span class="symbol"><A NAME="ref_308_4">KEY_SEND</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_194_4">KEY_SEND</A>;
+ Key_Shift_End : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_308_4">KEY_SEND</A>;
+ <span class="symbol"><A NAME="ref_311_4">KEY_SEOL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_195_4">KEY_SEOL</A>;
+ Key_Shift_Clear_End_Of_Line : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_311_4">KEY_SEOL</A>;
+ <span class="symbol"><A NAME="ref_314_4">KEY_SEXIT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_196_4">KEY_SEXIT</A>;
+ Key_Shift_Exit : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_314_4">KEY_SEXIT</A>;
+ <span class="symbol"><A NAME="ref_317_4">KEY_SFIND</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_197_4">KEY_SFIND</A>;
+ Key_Shift_Find : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_317_4">KEY_SFIND</A>;
+ <span class="symbol"><A NAME="ref_320_4">KEY_SHELP</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_198_4">KEY_SHELP</A>;
+ Key_Shift_Help : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_320_4">KEY_SHELP</A>;
+ <span class="symbol"><A NAME="ref_323_4">KEY_SHOME</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_199_4">KEY_SHOME</A>;
+ Key_Shift_Home : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_323_4">KEY_SHOME</A>;
+ <span class="symbol"><A NAME="ref_326_4">KEY_SIC</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_200_4">KEY_SIC</A>;
+ Key_Shift_Insert_Char : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_326_4">KEY_SIC</A>;
+ <span class="symbol"><A NAME="ref_329_4">KEY_SLEFT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_201_4">KEY_SLEFT</A>;
+ Key_Shift_Cursor_Left : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_329_4">KEY_SLEFT</A>;
+ <span class="symbol"><A NAME="ref_332_4">KEY_SMESSAGE</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_202_4">KEY_SMESSAGE</A>;
+ Key_Shift_Message : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_332_4">KEY_SMESSAGE</A>;
+ <span class="symbol"><A NAME="ref_335_4">KEY_SMOVE</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_203_4">KEY_SMOVE</A>;
+ Key_Shift_Move : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_335_4">KEY_SMOVE</A>;
+ <span class="symbol"><A NAME="ref_338_4">KEY_SNEXT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_204_4">KEY_SNEXT</A>;
+ Key_Shift_Next_Page : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_338_4">KEY_SNEXT</A>;
+ <span class="symbol"><A NAME="ref_341_4">KEY_SOPTIONS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_205_4">KEY_SOPTIONS</A>;
+ Key_Shift_Options : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_341_4">KEY_SOPTIONS</A>;
+ <span class="symbol"><A NAME="ref_344_4">KEY_SPREVIOUS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_206_4">KEY_SPREVIOUS</A>;
+ Key_Shift_Previous_Page : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_344_4">KEY_SPREVIOUS</A>;
+ <span class="symbol"><A NAME="ref_347_4">KEY_SPRINT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_207_4">KEY_SPRINT</A>;
+ Key_Shift_Print : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_347_4">KEY_SPRINT</A>;
+ <span class="symbol"><A NAME="ref_350_4">KEY_SREDO</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_208_4">KEY_SREDO</A>;
+ Key_Shift_Redo : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_350_4">KEY_SREDO</A>;
+ <span class="symbol"><A NAME="ref_353_4">KEY_SREPLACE</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_209_4">KEY_SREPLACE</A>;
+ Key_Shift_Replace : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_4">KEY_SREPLACE</A>;
+ <span class="symbol"><A NAME="ref_356_4">KEY_SRIGHT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_210_4">KEY_SRIGHT</A>;
+ Key_Shift_Cursor_Right : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_356_4">KEY_SRIGHT</A>;
+ <span class="symbol"><A NAME="ref_359_4">KEY_SRSUME</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_211_4">KEY_SRSUME</A>;
+ Key_Shift_Resume : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_359_4">KEY_SRSUME</A>;
+ <span class="symbol"><A NAME="ref_362_4">KEY_SSAVE</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_212_4">KEY_SSAVE</A>;
+ Key_Shift_Save : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_362_4">KEY_SSAVE</A>;
+ <span class="symbol"><A NAME="ref_365_4">KEY_SSUSPEND</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_213_4">KEY_SSUSPEND</A>;
+ Key_Shift_Suspend : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_365_4">KEY_SSUSPEND</A>;
+ <span class="symbol"><A NAME="ref_368_4">KEY_SUNDO</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_214_4">KEY_SUNDO</A>;
+ Key_Shift_Undo : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_368_4">KEY_SUNDO</A>;
+ <span class="symbol"><A NAME="ref_371_4">Key_Suspend</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_215_4">KEY_SUSPEND</A>;
+ <span class="symbol"><A NAME="ref_373_4">Key_Undo</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_216_4">KEY_UNDO</A>;
+ <span class="symbol"><A NAME="ref_375_4">Key_Mouse</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_217_4">KEY_MOUSE</A>;
+ <span class="symbol"><A NAME="ref_377_4">Key_Resize</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_218_4">KEY_RESIZE</A>;
+ <span class="symbol"><A NAME="ref_379_4">Key_Max</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>
+ := <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>'Last;
+
+ <b>subtype</b> <span class="symbol"><A NAME="ref_382_12">User_Key_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_66_9">Key_Code</A>
+ <b>range</b> (<A HREF="terminal_interface-curses__ads.htm#ref_379_4">Key_Max</A> + 129) .. <A HREF="terminal_interface-curses__ads.htm#ref_66_9">Key_Code</A>'Last;
<span class="comment"><EM>-- This is reserved for user defined key codes. The range between Key_Max</EM></span>
<span class="comment"><EM>-- and the first user code is reserved for subsystems like menu and forms.</EM></span>
- <span class="comment"><EM>-- For those who like to use the original key names we produce them were</EM></span>
- <span class="comment"><EM>-- they differ from the original. Please note that they may differ in</EM></span>
- <span class="comment"><EM>-- lower/upper case.</EM></span>
- KEY_DOWN : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_92_4">Key_Cursor_Down</A>;
- KEY_UP : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_93_4">Key_Cursor_Up</A>;
- KEY_LEFT : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_94_4">Key_Cursor_Left</A>;
- KEY_RIGHT : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_95_4">Key_Cursor_Right</A>;
- KEY_DL : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_123_4">Key_Delete_Line</A>;
- KEY_IL : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_124_4">Key_Insert_Line</A>;
- KEY_DC : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_125_4">Key_Delete_Char</A>;
- KEY_IC : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_126_4">Key_Insert_Char</A>;
- KEY_EIC : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_127_4">Key_Exit_Insert_Mode</A>;
- KEY_CLEAR : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_128_4">Key_Clear_Screen</A>;
- KEY_EOS : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_129_4">Key_Clear_End_Of_Screen</A>;
- KEY_EOL : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_130_4">Key_Clear_End_Of_Line</A>;
- KEY_SF : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_131_4">Key_Scroll_1_Forward</A>;
- KEY_SR : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_132_4">Key_Scroll_1_Backward</A>;
- KEY_NPAGE : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_133_4">Key_Next_Page</A>;
- KEY_PPAGE : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_134_4">Key_Previous_Page</A>;
- KEY_STAB : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_135_4">Key_Set_Tab</A>;
- KEY_CTAB : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_136_4">Key_Clear_Tab</A>;
- KEY_CATAB : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_137_4">Key_Clear_All_Tabs</A>;
- KEY_ENTER : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_138_4">Key_Enter_Or_Send</A>;
- KEY_SRESET : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_139_4">Key_Soft_Reset</A>;
- KEY_LL : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_142_4">Key_Bottom</A>;
- KEY_A1 : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_143_4">Key_Upper_Left_Of_Keypad</A>;
- KEY_A3 : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_144_4">Key_Upper_Right_Of_Keypad</A>;
- KEY_B2 : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_145_4">Key_Center_Of_Keypad</A>;
- KEY_C1 : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_146_4">Key_Lower_Left_Of_Keypad</A>;
- KEY_C3 : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_147_4">Key_Lower_Right_Of_Keypad</A>;
- KEY_BTAB : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_148_4">Key_Back_Tab</A>;
- KEY_BEG : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_149_4">Key_Beginning</A>;
- KEY_SBEG : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_173_4">Key_Shift_Begin</A>;
- KEY_SCANCEL : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_174_4">Key_Shift_Cancel</A>;
- KEY_SCOMMAND : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_175_4">Key_Shift_Command</A>;
- KEY_SCOPY : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_176_4">Key_Shift_Copy</A>;
- KEY_SCREATE : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_177_4">Key_Shift_Create</A>;
- KEY_SDC : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_178_4">Key_Shift_Delete_Char</A>;
- KEY_SDL : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_179_4">Key_Shift_Delete_Line</A>;
- KEY_SEND : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_181_4">Key_Shift_End</A>;
- KEY_SEOL : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_182_4">Key_Shift_Clear_End_Of_Line</A>;
- KEY_SEXIT : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_183_4">Key_Shift_Exit</A>;
- KEY_SFIND : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_184_4">Key_Shift_Find</A>;
- KEY_SHELP : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_185_4">Key_Shift_Help</A>;
- KEY_SHOME : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_186_4">Key_Shift_Home</A>;
- KEY_SIC : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_187_4">Key_Shift_Insert_Char</A>;
- KEY_SLEFT : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_188_4">Key_Shift_Cursor_Left</A>;
- KEY_SMESSAGE : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_189_4">Key_Shift_Message</A>;
- KEY_SMOVE : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_190_4">Key_Shift_Move</A>;
- KEY_SNEXT : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_191_4">Key_Shift_Next_Page</A>;
- KEY_SOPTIONS : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_192_4">Key_Shift_Options</A>;
- KEY_SPREVIOUS : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_193_4">Key_Shift_Previous_Page</A>;
- KEY_SPRINT : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_194_4">Key_Shift_Print</A>;
- KEY_SREDO : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_195_4">Key_Shift_Redo</A>;
- KEY_SREPLACE : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_196_4">Key_Shift_Replace</A>;
- KEY_SRIGHT : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_197_4">Key_Shift_Cursor_Right</A>;
- KEY_SRSUME : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_198_4">Key_Shift_Resume</A>;
- KEY_SSAVE : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_199_4">Key_Shift_Save</A>;
- KEY_SSUSPEND : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_200_4">Key_Shift_Suspend</A>;
- KEY_SUNDO : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_201_4">Key_Shift_Undo</A>;
-
-<span class="comment"><EM>------------------------------------------------------------------------------</EM></span>
+ <span class="comment"><EM>--------------------------------------------------------------------------</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_278_9">Color_Number</A></span> <b>is</b> <b>range</b> -1 .. Integer (<A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.short'Last);
- <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A>'Size <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.short'Size;
+ <b>type</b> <span class="symbol"><A NAME="ref_389_9">Color_Number</A></span> <b>is</b> <b>range</b> -1 .. Integer (<A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.short'Last);
+ <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A>'Size <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.short'Size;
<span class="comment"><EM>-- (n)curses uses a short for the color index</EM></span>
<span class="comment"><EM>-- The model is, that a Color_Number is an index into an array of</EM></span>
<span class="comment"><EM>-- (potentially) definable colors. Some of those indices are</EM></span>
<span class="comment"><EM>-- predefined (see below), although they may not really exist.</EM></span>
- <span class="symbol"><A NAME="ref_285_4">Default_Color</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A> := -1;
- <span class="symbol"><A NAME="ref_286_4">Black</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A> := 0;
- <span class="symbol"><A NAME="ref_287_4">Red</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A> := 1;
- <span class="symbol"><A NAME="ref_288_4">Green</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A> := 2;
- <span class="symbol"><A NAME="ref_289_4">Yellow</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A> := 3;
- <span class="symbol"><A NAME="ref_290_4">Blue</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A> := 4;
- <span class="symbol"><A NAME="ref_291_4">Magenta</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A> := 5;
- <span class="symbol"><A NAME="ref_292_4">Cyan</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A> := 6;
- <span class="symbol"><A NAME="ref_293_4">White</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A> := 7;
-
- <b>type</b> <span class="symbol"><A NAME="ref_295_9">RGB_Value</A></span> <b>is</b> <b>range</b> 0 .. Integer (<A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.short'Last);
- <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A>'Size <b>use</b> <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.short'Size;
+ <span class="symbol"><A NAME="ref_396_4">Black</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_69_4">COLOR_BLACK</A>;
+ <span class="symbol"><A NAME="ref_397_4">Red</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_70_4">COLOR_RED</A>;
+ <span class="symbol"><A NAME="ref_398_4">Green</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_71_4">COLOR_GREEN</A>;
+ <span class="symbol"><A NAME="ref_399_4">Yellow</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_72_4">COLOR_YELLOW</A>;
+ <span class="symbol"><A NAME="ref_400_4">Blue</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_73_4">COLOR_BLUE</A>;
+ <span class="symbol"><A NAME="ref_401_4">Magenta</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_74_4">COLOR_MAGENTA</A>;
+ <span class="symbol"><A NAME="ref_402_4">Cyan</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_75_4">COLOR_CYAN</A>;
+ <span class="symbol"><A NAME="ref_403_4">White</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_76_4">COLOR_WHITE</A>;
+
+ <b>type</b> <span class="symbol"><A NAME="ref_405_9">RGB_Value</A></span> <b>is</b> <b>range</b> 0 .. Integer (<A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.short'Last);
+ <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A>'Size <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.short'Size;
<span class="comment"><EM>-- Some system may allow to redefine a color by setting RGB values.</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_299_9">Color_Pair</A></span> <b>is</b> <b>range</b> 0 .. 255;
- <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'Size <b>use</b> 8;
- <b>subtype</b> <span class="symbol"><A NAME="ref_301_12">Redefinable_Color_Pair</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> <b>range</b> 1 .. 255;
+ <b>type</b> <span class="symbol"><A NAME="ref_409_9">Color_Pair</A></span> <b>is</b> <b>range</b> 0 .. 255;
+ <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'Size <b>use</b> 8;
+ <b>subtype</b> <span class="symbol"><A NAME="ref_411_12">Redefinable_Color_Pair</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> <b>range</b> 1 .. 255;
<span class="comment"><EM>-- (n)curses reserves 1 Byte for the color-pair number. Color Pair 0</EM></span>
<span class="comment"><EM>-- is fixed (Black &amp; White). A color pair is simply a combination of</EM></span>
<span class="comment"><EM>-- two colors described by Color_Numbers, one for the foreground and</EM></span>
<span class="comment"><EM>-- the other for the background</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_307_9">Character_Attribute_Set</A></span> <b>is</b>
+ <b>type</b> <span class="symbol"><A NAME="ref_417_9">Character_Attribute_Set</A></span> <b>is</b>
<b>record</b>
- <span class="symbol"><A NAME="ref_309_10">Stand_Out</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_310_10">Under_Line</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_311_10">Reverse_Video</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_312_10">Blink</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_313_10">Dim_Character</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_314_10">Bold_Character</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_315_10">Alternate_Character_Set</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_316_10">Invisible_Character</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_317_10">Protected_Character</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_318_10">Horizontal</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_319_10">Left</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_320_10">Low</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_321_10">Right</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_322_10">Top</A></span> : Boolean;
- <span class="symbol"><A NAME="ref_323_10">Vertical</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_419_10">Stand_Out</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_420_10">Under_Line</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_421_10">Reverse_Video</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_422_10">Blink</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_423_10">Dim_Character</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_424_10">Bold_Character</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_425_10">Protected_Character</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_426_10">Invisible_Character</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_427_10">Alternate_Character_Set</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_428_10">Horizontal</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_429_10">Left</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_430_10">Low</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_431_10">Right</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_432_10">Top</A></span> : Boolean;
+ <span class="symbol"><A NAME="ref_433_10">Vertical</A></span> : Boolean;
<b>end</b> <b>record</b>;
- <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>);
- <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> <b>use</b>
+ <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> <b>use</b>
<b>record</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_309_10">Stand_Out</A> <b>at</b> 0 <b>range</b> 0 .. 0;
- <A HREF="terminal_interface-curses__ads.htm#ref_310_10">Under_Line</A> <b>at</b> 0 <b>range</b> 1 .. 1;
- <A HREF="terminal_interface-curses__ads.htm#ref_311_10">Reverse_Video</A> <b>at</b> 0 <b>range</b> 2 .. 2;
- <A HREF="terminal_interface-curses__ads.htm#ref_312_10">Blink</A> <b>at</b> 0 <b>range</b> 3 .. 3;
- <A HREF="terminal_interface-curses__ads.htm#ref_313_10">Dim_Character</A> <b>at</b> 0 <b>range</b> 4 .. 4;
- <A HREF="terminal_interface-curses__ads.htm#ref_314_10">Bold_Character</A> <b>at</b> 0 <b>range</b> 5 .. 5;
- <A HREF="terminal_interface-curses__ads.htm#ref_315_10">Alternate_Character_Set</A> <b>at</b> 0 <b>range</b> 6 .. 6;
- <A HREF="terminal_interface-curses__ads.htm#ref_316_10">Invisible_Character</A> <b>at</b> 0 <b>range</b> 7 .. 7;
- <A HREF="terminal_interface-curses__ads.htm#ref_317_10">Protected_Character</A> <b>at</b> 0 <b>range</b> 8 .. 8;
- <A HREF="terminal_interface-curses__ads.htm#ref_318_10">Horizontal</A> <b>at</b> 0 <b>range</b> 9 .. 9;
- <A HREF="terminal_interface-curses__ads.htm#ref_319_10">Left</A> <b>at</b> 0 <b>range</b> 10 .. 10;
- <A HREF="terminal_interface-curses__ads.htm#ref_320_10">Low</A> <b>at</b> 0 <b>range</b> 11 .. 11;
- <A HREF="terminal_interface-curses__ads.htm#ref_321_10">Right</A> <b>at</b> 0 <b>range</b> 12 .. 12;
- <A HREF="terminal_interface-curses__ads.htm#ref_322_10">Top</A> <b>at</b> 0 <b>range</b> 13 .. 13;
- <A HREF="terminal_interface-curses__ads.htm#ref_323_10">Vertical</A> <b>at</b> 0 <b>range</b> 14 .. 14;
+ <A HREF="terminal_interface-curses__ads.htm#ref_419_10">Stand_Out</A> <b>at</b> 0 <b>range</b>
+ <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_35_4">A_STANDOUT_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_36_4">A_STANDOUT_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_420_10">Under_Line</A> <b>at</b> 0 <b>range</b>
+ <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_37_4">A_UNDERLINE_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_38_4">A_UNDERLINE_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_421_10">Reverse_Video</A> <b>at</b> 0 <b>range</b>
+ <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_39_4">A_REVERSE_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_40_4">A_REVERSE_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_422_10">Blink</A> <b>at</b> 0 <b>range</b>
+ <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_41_4">A_BLINK_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_42_4">A_BLINK_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_423_10">Dim_Character</A> <b>at</b> 0 <b>range</b>
+ <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_43_4">A_DIM_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_44_4">A_DIM_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_424_10">Bold_Character</A> <b>at</b> 0 <b>range</b>
+ <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_45_4">A_BOLD_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_46_4">A_BOLD_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_425_10">Protected_Character</A> <b>at</b> 0 <b>range</b>
+ <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_47_4">A_PROTECT_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_48_4">A_PROTECT_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_426_10">Invisible_Character</A> <b>at</b> 0 <b>range</b>
+ <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_49_4">A_INVIS_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_50_4">A_INVIS_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_427_10">Alternate_Character_Set</A> <b>at</b> 0 <b>range</b>
+ <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_51_4">A_ALTCHARSET_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_52_4">A_ALTCHARSET_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_428_10">Horizontal</A> <b>at</b> 0 <b>range</b>
+ <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_53_4">A_HORIZONTAL_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_54_4">A_HORIZONTAL_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_429_10">Left</A> <b>at</b> 0 <b>range</b>
+ <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_55_4">A_LEFT_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_56_4">A_LEFT_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_430_10">Low</A> <b>at</b> 0 <b>range</b>
+ <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_57_4">A_LOW_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_58_4">A_LOW_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_431_10">Right</A> <b>at</b> 0 <b>range</b>
+ <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_59_4">A_RIGHT_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_60_4">A_RIGHT_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_432_10">Top</A> <b>at</b> 0 <b>range</b>
+ <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_61_4">A_TOP_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_62_4">A_TOP_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_433_10">Vertical</A> <b>at</b> 0 <b>range</b>
+ <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_63_4">A_VERTICAL_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_64_4">A_VERTICAL_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>;
<b>end</b> <b>record</b>;
- <b>pragma</b> Warnings (Off); <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>'Size <b>use</b> 16;
- <b>pragma</b> Warnings (On);
- <span class="comment"><EM>-- Please note: this rep. clause is generated and may be</EM></span>
- <span class="comment"><EM>-- different on your system.</EM></span>
- <span class="comment"><EM>-- (n)curses uses all but the lowest 16 Bits for Attributes.</EM></span>
- <span class="symbol"><A NAME="ref_351_4">Normal_Video</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := (<b>others</b> =&gt; False);
+ <span class="symbol"><A NAME="ref_485_4">Normal_Video</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := (<b>others</b> =&gt; False);
- <b>type</b> <span class="symbol"><A NAME="ref_353_9">Attributed_Character</A></span> <b>is</b>
+ <b>type</b> <span class="symbol"><A NAME="ref_487_9">Attributed_Character</A></span> <b>is</b>
<b>record</b>
- <span class="symbol"><A NAME="ref_355_10">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
- <span class="symbol"><A NAME="ref_356_10">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>;
- <span class="symbol"><A NAME="ref_357_10">Ch</A></span> : Character;
+ <span class="symbol"><A NAME="ref_489_10">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
+ <span class="symbol"><A NAME="ref_490_10">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>;
+ <span class="symbol"><A NAME="ref_491_10">Ch</A></span> : Character;
<b>end</b> <b>record</b>;
- <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>);
+ <b>pragma</b> Convention (C_Pass_By_Copy, <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>);
<span class="comment"><EM>-- This is the counterpart for the chtype in C.</EM></span>
- <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> <b>use</b>
+ <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> <b>use</b>
<b>record</b>
- <A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> <b>at</b> 0 <b>range</b> 0 .. 7;
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> <b>at</b> 0 <b>range</b> 8 .. 15;
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> <b>at</b> 0 <b>range</b> 16 .. 31;
+ <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_29_4">A_CHARTEXT_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_30_4">A_CHARTEXT_Last</A>;
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_31_4">A_COLOR_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_32_4">A_COLOR_Last</A>;
+ <b>pragma</b> Warnings (Off);
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>
+ .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_34_4">Attr_Last</A>;
+ <b>pragma</b> Warnings (On);
<b>end</b> <b>record</b>;
- <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>'Size <b>use</b> 32;
- <span class="comment"><EM>-- Please note: this rep. clause is generated and may be</EM></span>
- <span class="comment"><EM>-- different on your system.</EM></span>
+ <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>'Size <b>use</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_65_4">chtype_Size</A>;
- <span class="symbol"><A NAME="ref_372_4">Default_Character</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>
- := (<A HREF="terminal_interface-curses__ads.htm#ref_357_10">Ch</A> =&gt; Character'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_356_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First,
- <A HREF="terminal_interface-curses__ads.htm#ref_355_10">Attr</A> =&gt; (<b>others</b> =&gt; False)); <span class="comment"><EM>-- preelaboratable Normal_Video</EM></span>
+ <span class="symbol"><A NAME="ref_509_4">Default_Character</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>
+ := (<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Ch</A> =&gt; Character'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First,
+ <A HREF="terminal_interface-curses__ads.htm#ref_489_10">Attr</A> =&gt; (<b>others</b> =&gt; False)); <span class="comment"><EM>-- preelaboratable Normal_Video</EM></span>
- <b>type</b> Attributed_String <b>is</b> <b>array</b> (Positive <b>range</b> &lt;&gt;) <b>of</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>;
- <b>pragma</b> Pack (Attributed_String);
+ <b>type</b> Attributed_String <b>is</b> <b>array</b> (Positive <b>range</b> &lt;&gt;) <b>of</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <b>pragma</b> Convention (C, Attributed_String);
<span class="comment"><EM>-- In this binding we allow strings of attributed characters.</EM></span>
<span class="comment"><EM>------------------</EM></span>
<span class="comment"><EM>-- Exceptions --</EM></span>
<span class="comment"><EM>------------------</EM></span>
- <span class="symbol"><A NAME="ref_384_4">Curses_Exception</A></span> : <b>exception</b>;
- <span class="symbol"><A NAME="ref_385_4">Wrong_Curses_Version</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_521_4">Curses_Exception</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_522_4">Wrong_Curses_Version</A></span> : <b>exception</b>;
<span class="comment"><EM>-- Those exceptions are raised by the ETI (Extended Terminal Interface)</EM></span>
<span class="comment"><EM>-- subpackets for Menu and Forms handling.</EM></span>
<span class="comment"><EM>--</EM></span>
- <span class="symbol"><A NAME="ref_390_4">Eti_System_Error</A></span> : <b>exception</b>;
- <span class="symbol"><A NAME="ref_391_4">Eti_Bad_Argument</A></span> : <b>exception</b>;
- <span class="symbol"><A NAME="ref_392_4">Eti_Posted</A></span> : <b>exception</b>;
- <span class="symbol"><A NAME="ref_393_4">Eti_Connected</A></span> : <b>exception</b>;
- <span class="symbol"><A NAME="ref_394_4">Eti_Bad_State</A></span> : <b>exception</b>;
- <span class="symbol"><A NAME="ref_395_4">Eti_No_Room</A></span> : <b>exception</b>;
- <span class="symbol"><A NAME="ref_396_4">Eti_Not_Posted</A></span> : <b>exception</b>;
- <span class="symbol"><A NAME="ref_397_4">Eti_Unknown_Command</A></span> : <b>exception</b>;
- <span class="symbol"><A NAME="ref_398_4">Eti_No_Match</A></span> : <b>exception</b>;
- <span class="symbol"><A NAME="ref_399_4">Eti_Not_Selectable</A></span> : <b>exception</b>;
- <span class="symbol"><A NAME="ref_400_4">Eti_Not_Connected</A></span> : <b>exception</b>;
- <span class="symbol"><A NAME="ref_401_4">Eti_Request_Denied</A></span> : <b>exception</b>;
- <span class="symbol"><A NAME="ref_402_4">Eti_Invalid_Field</A></span> : <b>exception</b>;
- <span class="symbol"><A NAME="ref_403_4">Eti_Current</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_527_4">Eti_System_Error</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_528_4">Eti_Bad_Argument</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_529_4">Eti_Posted</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_530_4">Eti_Connected</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_531_4">Eti_Bad_State</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_532_4">Eti_No_Room</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_533_4">Eti_Not_Posted</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_534_4">Eti_Unknown_Command</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_535_4">Eti_No_Match</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_536_4">Eti_Not_Selectable</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_537_4">Eti_Not_Connected</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_538_4">Eti_Request_Denied</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_539_4">Eti_Invalid_Field</A></span> : <b>exception</b>;
+ <span class="symbol"><A NAME="ref_540_4">Eti_Current</A></span> : <b>exception</b>;
<span class="comment"><EM>--------------------------------------------------------------------------</EM></span>
<span class="comment"><EM>-- External C variables</EM></span>
@@ -427,154 +564,186 @@
<span class="comment"><EM>-- this is to use functions.</EM></span>
<span class="comment"><EM>--------------------------------------------------------------------------</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_413_13" HREF="terminal_interface-curses__adb.htm#ref_2355_13">Lines</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_413_13">Lines</A>);
+ <b>function</b> <span class="symbol"><A NAME="ref_550_13" HREF="terminal_interface-curses__adb.htm#ref_2354_13">Lines</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_550_13">Lines</A>);
- <b>function</b> <span class="symbol"><A NAME="ref_416_13" HREF="terminal_interface-curses__adb.htm#ref_2363_13">Columns</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_416_13">Columns</A>);
+ <b>function</b> <span class="symbol"><A NAME="ref_553_13" HREF="terminal_interface-curses__adb.htm#ref_2362_13">Columns</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_553_13">Columns</A>);
- <b>function</b> <span class="symbol"><A NAME="ref_419_13" HREF="terminal_interface-curses__adb.htm#ref_2371_13">Tab_Size</A></span> <b>return</b> Natural;
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_419_13">Tab_Size</A>);
+ <b>function</b> <span class="symbol"><A NAME="ref_556_13" HREF="terminal_interface-curses__adb.htm#ref_2370_13">Tab_Size</A></span> <b>return</b> Natural;
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_556_13">Tab_Size</A>);
- <b>function</b> <span class="symbol"><A NAME="ref_422_13" HREF="terminal_interface-curses__adb.htm#ref_2379_13">Number_Of_Colors</A></span> <b>return</b> Natural;
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_422_13">Number_Of_Colors</A>);
+ <b>function</b> <span class="symbol"><A NAME="ref_559_13" HREF="terminal_interface-curses__adb.htm#ref_2379_13">Number_Of_Colors</A></span> <b>return</b> Natural;
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_559_13">Number_Of_Colors</A>);
- <b>function</b> <span class="symbol"><A NAME="ref_425_13" HREF="terminal_interface-curses__adb.htm#ref_2387_13">Number_Of_Color_Pairs</A></span> <b>return</b> Natural;
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_425_13">Number_Of_Color_Pairs</A>);
+ <b>function</b> <span class="symbol"><A NAME="ref_562_13" HREF="terminal_interface-curses__adb.htm#ref_2387_13">Number_Of_Color_Pairs</A></span> <b>return</b> Natural;
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_562_13">Number_Of_Color_Pairs</A>);
+
+ <b>subtype</b> <span class="symbol"><A NAME="ref_565_12">ACS_Index</A></span> <b>is</b> Character <b>range</b>
+ Character'Val (0) .. Character'Val (127);
+ <b>function</b> <span class="symbol"><A NAME="ref_567_13">ACS_Map</A></span> (<span class="symbol"><A NAME="ref_567_22" HREF="terminal_interface-curses__ads.htm#ref_567_13">Index</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <b>pragma</b> Import (C, ACS_Map, "acs_map_as_function");
- <b>type</b> C_ACS_Map <b>is</b> <b>array</b> (Character'Val (0) .. Character'Val (127))
- <b>of</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>;
- <span class="symbol"><A NAME="ref_430_4">ACS_Map</A></span> : C_ACS_Map;
- <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__ads.htm#ref_430_4">ACS_Map</A>, "acs_map");
- <span class="comment"><EM>--</EM></span>
- <span class="comment"><EM>--</EM></span>
<span class="comment"><EM>-- Constants for several characters from the Alternate Character Set</EM></span>
- <span class="comment"><EM>-- You must use these constants as indices into the ACS_Map array</EM></span>
- <span class="comment"><EM>-- to get the corresponding attributed character at runtime.</EM></span>
- <span class="comment"><EM>--</EM></span>
- <span class="symbol"><A NAME="ref_438_4">ACS_Upper_Left_Corner</A></span> : <b>constant</b> Character := 'l';
- <span class="symbol"><A NAME="ref_439_4">ACS_Lower_Left_Corner</A></span> : <b>constant</b> Character := 'm';
- <span class="symbol"><A NAME="ref_440_4">ACS_Upper_Right_Corner</A></span> : <b>constant</b> Character := 'k';
- <span class="symbol"><A NAME="ref_441_4">ACS_Lower_Right_Corner</A></span> : <b>constant</b> Character := 'j';
- <span class="symbol"><A NAME="ref_442_4">ACS_Left_Tee</A></span> : <b>constant</b> Character := 't';
- <span class="symbol"><A NAME="ref_443_4">ACS_Right_Tee</A></span> : <b>constant</b> Character := 'u';
- <span class="symbol"><A NAME="ref_444_4">ACS_Bottom_Tee</A></span> : <b>constant</b> Character := 'v';
- <span class="symbol"><A NAME="ref_445_4">ACS_Top_Tee</A></span> : <b>constant</b> Character := 'w';
- <span class="symbol"><A NAME="ref_446_4">ACS_Horizontal_Line</A></span> : <b>constant</b> Character := 'q';
- <span class="symbol"><A NAME="ref_447_4">ACS_Vertical_Line</A></span> : <b>constant</b> Character := 'x';
- <span class="symbol"><A NAME="ref_448_4">ACS_Plus_Symbol</A></span> : <b>constant</b> Character := 'n';
- <span class="symbol"><A NAME="ref_449_4">ACS_Scan_Line_1</A></span> : <b>constant</b> Character := 'o';
- <span class="symbol"><A NAME="ref_450_4">ACS_Scan_Line_9</A></span> : <b>constant</b> Character := 's';
- <span class="symbol"><A NAME="ref_451_4">ACS_Diamond</A></span> : <b>constant</b> Character := Character'Val (96);
- <span class="symbol"><A NAME="ref_452_4">ACS_Checker_Board</A></span> : <b>constant</b> Character := 'a';
- <span class="symbol"><A NAME="ref_453_4">ACS_Degree</A></span> : <b>constant</b> Character := 'f';
- <span class="symbol"><A NAME="ref_454_4">ACS_Plus_Minus</A></span> : <b>constant</b> Character := 'g';
- <span class="symbol"><A NAME="ref_455_4">ACS_Bullet</A></span> : <b>constant</b> Character := '~';
- <span class="symbol"><A NAME="ref_456_4">ACS_Left_Arrow</A></span> : <b>constant</b> Character := ',';
- <span class="symbol"><A NAME="ref_457_4">ACS_Right_Arrow</A></span> : <b>constant</b> Character := '+';
- <span class="symbol"><A NAME="ref_458_4">ACS_Down_Arrow</A></span> : <b>constant</b> Character := '.';
- <span class="symbol"><A NAME="ref_459_4">ACS_Up_Arrow</A></span> : <b>constant</b> Character := '-';
- <span class="symbol"><A NAME="ref_460_4">ACS_Board_Of_Squares</A></span> : <b>constant</b> Character := 'h';
- <span class="symbol"><A NAME="ref_461_4">ACS_Lantern</A></span> : <b>constant</b> Character := 'i';
- <span class="symbol"><A NAME="ref_462_4">ACS_Solid_Block</A></span> : <b>constant</b> Character := '0';
- <span class="symbol"><A NAME="ref_463_4">ACS_Scan_Line_3</A></span> : <b>constant</b> Character := 'p';
- <span class="symbol"><A NAME="ref_464_4">ACS_Scan_Line_7</A></span> : <b>constant</b> Character := 'r';
- <span class="symbol"><A NAME="ref_465_4">ACS_Less_Or_Equal</A></span> : <b>constant</b> Character := 'y';
- <span class="symbol"><A NAME="ref_466_4">ACS_Greater_Or_Equal</A></span> : <b>constant</b> Character := 'z';
- <span class="symbol"><A NAME="ref_467_4">ACS_PI</A></span> : <b>constant</b> Character := '{';
- <span class="symbol"><A NAME="ref_468_4">ACS_Not_Equal</A></span> : <b>constant</b> Character := '|';
- <span class="symbol"><A NAME="ref_469_4">ACS_Sterling</A></span> : <b>constant</b> Character := '}';
+ <span class="comment"><EM>-- You must use these constants as indices into the ACS_Map function</EM></span>
+ <span class="comment"><EM>-- to get the corresponding attributed character at runtime</EM></span>
+ <span class="symbol"><A NAME="ref_573_4">ACS_Upper_Left_Corner</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_222_4">ACS_ULCORNER</A>);
+ <span class="symbol"><A NAME="ref_575_4">ACS_Lower_Left_Corner</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_223_4">ACS_LLCORNER</A>);
+ <span class="symbol"><A NAME="ref_577_4">ACS_Upper_Right_Corner</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_224_4">ACS_URCORNER</A>);
+ <span class="symbol"><A NAME="ref_579_4">ACS_Lower_Right_Corner</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_225_4">ACS_LRCORNER</A>);
+ <span class="symbol"><A NAME="ref_581_4">ACS_Left_Tee</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_226_4">ACS_LTEE</A>);
+ <span class="symbol"><A NAME="ref_583_4">ACS_Right_Tee</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_227_4">ACS_RTEE</A>);
+ <span class="symbol"><A NAME="ref_585_4">ACS_Bottom_Tee</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_228_4">ACS_BTEE</A>);
+ <span class="symbol"><A NAME="ref_587_4">ACS_Top_Tee</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_229_4">ACS_TTEE</A>);
+ <span class="symbol"><A NAME="ref_589_4">ACS_Horizontal_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_230_4">ACS_HLINE</A>);
+ <span class="symbol"><A NAME="ref_591_4">ACS_Vertical_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_231_4">ACS_VLINE</A>);
+ <span class="symbol"><A NAME="ref_593_4">ACS_Plus_Symbol</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_232_4">ACS_PLUS</A>);
+ <span class="symbol"><A NAME="ref_595_4">ACS_Scan_Line_1</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_233_4">ACS_S1</A>);
+ <span class="symbol"><A NAME="ref_597_4">ACS_Scan_Line_9</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_234_4">ACS_S9</A>);
+ <span class="symbol"><A NAME="ref_599_4">ACS_Diamond</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_235_4">ACS_DIAMOND</A>);
+ <span class="symbol"><A NAME="ref_601_4">ACS_Checker_Board</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_236_4">ACS_CKBOARD</A>);
+ <span class="symbol"><A NAME="ref_603_4">ACS_Degree</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_237_4">ACS_DEGREE</A>);
+ <span class="symbol"><A NAME="ref_605_4">ACS_Plus_Minus</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_238_4">ACS_PLMINUS</A>);
+ <span class="symbol"><A NAME="ref_607_4">ACS_Bullet</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_239_4">ACS_BULLET</A>);
+ <span class="symbol"><A NAME="ref_609_4">ACS_Left_Arrow</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_240_4">ACS_LARROW</A>);
+ <span class="symbol"><A NAME="ref_611_4">ACS_Right_Arrow</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_241_4">ACS_RARROW</A>);
+ <span class="symbol"><A NAME="ref_613_4">ACS_Down_Arrow</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_242_4">ACS_DARROW</A>);
+ <span class="symbol"><A NAME="ref_615_4">ACS_Up_Arrow</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_243_4">ACS_UARROW</A>);
+ <span class="symbol"><A NAME="ref_617_4">ACS_Board_Of_Squares</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_244_4">ACS_BOARD</A>);
+ <span class="symbol"><A NAME="ref_619_4">ACS_Lantern</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_245_4">ACS_LANTERN</A>);
+ <span class="symbol"><A NAME="ref_621_4">ACS_Solid_Block</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_246_4">ACS_BLOCK</A>);
+ <span class="symbol"><A NAME="ref_623_4">ACS_Scan_Line_3</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_247_4">ACS_S3</A>);
+ <span class="symbol"><A NAME="ref_625_4">ACS_Scan_Line_7</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_248_4">ACS_S7</A>);
+ <span class="symbol"><A NAME="ref_627_4">ACS_Less_Or_Equal</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_249_4">ACS_LEQUAL</A>);
+ <span class="symbol"><A NAME="ref_629_4">ACS_Greater_Or_Equal</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_250_4">ACS_GEQUAL</A>);
+ <span class="symbol"><A NAME="ref_631_4">ACS_PI</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_251_4">ACS_PI</A>);
+ <span class="symbol"><A NAME="ref_633_4">ACS_Not_Equal</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_252_4">ACS_NEQUAL</A>);
+ <span class="symbol"><A NAME="ref_635_4">ACS_Sterling</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_565_12">ACS_Index</A>
+ := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_253_4">ACS_STERLING</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Not implemented: newterm, set_term, delscreen</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_1"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_477_13" HREF="terminal_interface-curses__adb.htm#ref_2339_13">Standard_Window</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_644_13">Standard_Window</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">stdscr</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>);
+ <b>pragma</b> Import (C, Standard_Window, "stdscr_as_function");
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_2"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_482_13" HREF="terminal_interface-curses__adb.htm#ref_2347_13">Current_Window</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_650_13">Current_Window</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">curscr</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_482_13">Current_Window</A>);
+ <b>pragma</b> Import (C, Current_Window, "curscr_as_function");
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_650_13">Current_Window</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_3"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_487_14" HREF="terminal_interface-curses__adb.htm#ref_98_14">Init_Screen</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_656_14" HREF="terminal_interface-curses__adb.htm#ref_97_14">Init_Screen</A></span>;
- <span class="comment"><EM>-- #1A NAME="AFU_4"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_490_14">Init_Windows</A></span> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_14">Init_Screen</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_4">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_659_14">Init_Windows</A></span> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_656_14">Init_Screen</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">initscr()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_487_14">Init_Screen</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_656_14">Init_Screen</A>);
<span class="comment"><EM>-- pragma Inline (Init_Windows);</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_5"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_496_14" HREF="terminal_interface-curses__adb.htm#ref_111_14">End_Windows</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_5">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_665_14" HREF="terminal_interface-curses__adb.htm#ref_110_14">End_Windows</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">endwin()</A></EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_498_14">End_Screen</A></span> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_496_14">End_Windows</A>;
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_496_14">End_Windows</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_667_14">End_Screen</A></span> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_665_14">End_Windows</A>;
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_665_14">End_Windows</A>);
<span class="comment"><EM>-- pragma Inline (End_Screen);</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_6"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_503_13" HREF="terminal_interface-curses__adb.htm#ref_121_13">Is_End_Window</A></span> <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_6">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_672_13" HREF="terminal_interface-curses__adb.htm#ref_120_13">Is_End_Window</A></span> <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">isendwin()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_503_13">Is_End_Window</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_672_13">Is_End_Window</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_move.3x.html">curs_move.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_7"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_512_14" HREF="terminal_interface-curses__adb.htm#ref_133_14">Move_Cursor</A></span> (<span class="symbol"><A NAME="ref_512_27" HREF="terminal_interface-curses__adb.htm#ref_133_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_513_27" HREF="terminal_interface-curses__adb.htm#ref_134_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_514_27" HREF="terminal_interface-curses__adb.htm#ref_135_27">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_7">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_681_14" HREF="terminal_interface-curses__adb.htm#ref_132_14">Move_Cursor</A></span> (<span class="symbol"><A NAME="ref_681_27" HREF="terminal_interface-curses__adb.htm#ref_132_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_682_27" HREF="terminal_interface-curses__adb.htm#ref_133_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_683_27" HREF="terminal_interface-curses__adb.htm#ref_134_27">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_move.3x.html">wmove()</A></EM></span>
<span class="comment"><EM>-- AKA: move()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_512_14">Move_Cursor</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_681_14">Move_Cursor</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_addch.3x.html">curs_addch.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_8"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_524_14" HREF="terminal_interface-curses__adb.htm#ref_148_14">Add</A></span> (<span class="symbol"><A NAME="ref_524_19" HREF="terminal_interface-curses__adb.htm#ref_148_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_525_19" HREF="terminal_interface-curses__adb.htm#ref_149_19">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_8">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_693_14" HREF="terminal_interface-curses__adb.htm#ref_147_14">Add</A></span> (<span class="symbol"><A NAME="ref_693_19" HREF="terminal_interface-curses__adb.htm#ref_147_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_694_19" HREF="terminal_interface-curses__adb.htm#ref_148_19">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_addch.3x.html">waddch()</A></EM></span>
<span class="comment"><EM>-- AKA: addch()</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_529_14" HREF="terminal_interface-curses__adb.htm#ref_160_14">Add</A></span> (<span class="symbol"><A NAME="ref_529_19" HREF="terminal_interface-curses__adb.htm#ref_160_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_530_19" HREF="terminal_interface-curses__adb.htm#ref_161_19">Ch</A></span> : Character);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_698_14" HREF="terminal_interface-curses__adb.htm#ref_159_14">Add</A></span> (<span class="symbol"><A NAME="ref_698_19" HREF="terminal_interface-curses__adb.htm#ref_159_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_699_19" HREF="terminal_interface-curses__adb.htm#ref_160_19">Ch</A></span> : Character);
<span class="comment"><EM>-- Add a single character at the current logical cursor position to</EM></span>
<span class="comment"><EM>-- the window. Use the current windows attributes.</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_9"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_535_14" HREF="terminal_interface-curses__adb.htm#ref_170_14">Add</A></span>
- (<span class="symbol"><A NAME="ref_536_7" HREF="terminal_interface-curses__adb.htm#ref_171_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_537_7" HREF="terminal_interface-curses__adb.htm#ref_172_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_538_7" HREF="terminal_interface-curses__adb.htm#ref_173_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_539_7" HREF="terminal_interface-curses__adb.htm#ref_174_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_9">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_704_14" HREF="terminal_interface-curses__adb.htm#ref_169_14">Add</A></span>
+ (<span class="symbol"><A NAME="ref_705_7" HREF="terminal_interface-curses__adb.htm#ref_170_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_706_7" HREF="terminal_interface-curses__adb.htm#ref_171_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_707_7" HREF="terminal_interface-curses__adb.htm#ref_172_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_708_7" HREF="terminal_interface-curses__adb.htm#ref_173_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_addch.3x.html">mvwaddch()</A></EM></span>
<span class="comment"><EM>-- AKA: mvaddch()</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_543_14" HREF="terminal_interface-curses__adb.htm#ref_189_14">Add</A></span>
- (<span class="symbol"><A NAME="ref_544_7" HREF="terminal_interface-curses__adb.htm#ref_190_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_545_7" HREF="terminal_interface-curses__adb.htm#ref_191_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_546_7" HREF="terminal_interface-curses__adb.htm#ref_192_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_547_7" HREF="terminal_interface-curses__adb.htm#ref_193_7">Ch</A></span> : Character);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_712_14" HREF="terminal_interface-curses__adb.htm#ref_189_14">Add</A></span>
+ (<span class="symbol"><A NAME="ref_713_7" HREF="terminal_interface-curses__adb.htm#ref_190_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_714_7" HREF="terminal_interface-curses__adb.htm#ref_191_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_715_7" HREF="terminal_interface-curses__adb.htm#ref_192_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_716_7" HREF="terminal_interface-curses__adb.htm#ref_193_7">Ch</A></span> : Character);
<span class="comment"><EM>-- Move to the position and add a single character into the window</EM></span>
<span class="comment"><EM>-- There are more Add routines, so the Inline pragma follows later</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_10"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_552_14" HREF="terminal_interface-curses__adb.htm#ref_204_14">Add_With_Immediate_Echo</A></span>
- (<span class="symbol"><A NAME="ref_553_7" HREF="terminal_interface-curses__adb.htm#ref_205_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_554_7" HREF="terminal_interface-curses__adb.htm#ref_206_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_10">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_721_14" HREF="terminal_interface-curses__adb.htm#ref_204_14">Add_With_Immediate_Echo</A></span>
+ (<span class="symbol"><A NAME="ref_722_7" HREF="terminal_interface-curses__adb.htm#ref_205_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_723_7" HREF="terminal_interface-curses__adb.htm#ref_206_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_addch.3x.html">wechochar()</A></EM></span>
<span class="comment"><EM>-- AKA: echochar()</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_558_14" HREF="terminal_interface-curses__adb.htm#ref_217_14">Add_With_Immediate_Echo</A></span>
- (<span class="symbol"><A NAME="ref_559_7" HREF="terminal_interface-curses__adb.htm#ref_218_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_560_7" HREF="terminal_interface-curses__adb.htm#ref_219_7">Ch</A></span> : Character);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_727_14" HREF="terminal_interface-curses__adb.htm#ref_217_14">Add_With_Immediate_Echo</A></span>
+ (<span class="symbol"><A NAME="ref_728_7" HREF="terminal_interface-curses__adb.htm#ref_218_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_729_7" HREF="terminal_interface-curses__adb.htm#ref_219_7">Ch</A></span> : Character);
<span class="comment"><EM>-- Add a character and do an immediate refresh of the screen.</EM></span>
<b>pragma</b> Inline (Add_With_Immediate_Echo);
@@ -583,105 +752,105 @@
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- Not Implemented: wcursyncup</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_11"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_570_13" HREF="terminal_interface-curses__adb.htm#ref_229_13">Create</A></span>
- (<span class="symbol"><A NAME="ref_571_7" HREF="terminal_interface-curses__adb.htm#ref_229_21">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_572_7" HREF="terminal_interface-curses__adb.htm#ref_230_21">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_573_7" HREF="terminal_interface-curses__adb.htm#ref_231_21">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_574_7" HREF="terminal_interface-curses__adb.htm#ref_232_21">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_11">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_739_13" HREF="terminal_interface-curses__adb.htm#ref_229_13">Create</A></span>
+ (<span class="symbol"><A NAME="ref_740_7" HREF="terminal_interface-curses__adb.htm#ref_229_21">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_741_7" HREF="terminal_interface-curses__adb.htm#ref_230_21">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_742_7" HREF="terminal_interface-curses__adb.htm#ref_231_21">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_743_7" HREF="terminal_interface-curses__adb.htm#ref_232_21">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="comment"><EM>-- Not Implemented: Default Number_Of_Lines, Number_Of_Columns</EM></span>
<span class="comment"><EM>-- the C version lets them be 0, see the man page.</EM></span>
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">newwin()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_570_13">Create</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_739_13">Create</A>);
<b>function</b> New_Window
- (<span class="symbol"><A NAME="ref_581_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_582_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_583_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_584_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>
- <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_570_13">Create</A>;
+ (<span class="symbol"><A NAME="ref_750_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_751_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_752_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_753_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>
+ <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_739_13">Create</A>;
<span class="comment"><EM>-- pragma Inline (New_Window);</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_12"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_589_14" HREF="terminal_interface-curses__adb.htm#ref_252_14">Delete</A></span> (<span class="symbol"><A NAME="ref_589_22" HREF="terminal_interface-curses__adb.htm#ref_252_22">Win</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_12">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_758_14" HREF="terminal_interface-curses__adb.htm#ref_252_14">Delete</A></span> (<span class="symbol"><A NAME="ref_758_22" HREF="terminal_interface-curses__adb.htm#ref_252_22">Win</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">delwin()</A></EM></span>
<span class="comment"><EM>-- Reset Win to Null_Window</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_589_14">Delete</A>);
-
- <span class="comment"><EM>-- #1A NAME="AFU_13"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_595_13" HREF="terminal_interface-curses__adb.htm#ref_263_13">Sub_Window</A></span>
- (<span class="symbol"><A NAME="ref_596_7" HREF="terminal_interface-curses__adb.htm#ref_264_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_597_7" HREF="terminal_interface-curses__adb.htm#ref_265_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_598_7" HREF="terminal_interface-curses__adb.htm#ref_266_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_599_7" HREF="terminal_interface-curses__adb.htm#ref_267_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_600_7" HREF="terminal_interface-curses__adb.htm#ref_268_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_758_14">Delete</A>);
+
+ <span class="comment"><EM>-- <A NAME="AFU_13">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_764_13" HREF="terminal_interface-curses__adb.htm#ref_263_13">Sub_Window</A></span>
+ (<span class="symbol"><A NAME="ref_765_7" HREF="terminal_interface-curses__adb.htm#ref_264_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_766_7" HREF="terminal_interface-curses__adb.htm#ref_265_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_767_7" HREF="terminal_interface-curses__adb.htm#ref_266_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_768_7" HREF="terminal_interface-curses__adb.htm#ref_267_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_769_7" HREF="terminal_interface-curses__adb.htm#ref_268_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">subwin()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_595_13">Sub_Window</A>);
-
- <span class="comment"><EM>-- #1A NAME="AFU_14"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_605_13" HREF="terminal_interface-curses__adb.htm#ref_291_13">Derived_Window</A></span>
- (<span class="symbol"><A NAME="ref_606_7" HREF="terminal_interface-curses__adb.htm#ref_292_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_607_7" HREF="terminal_interface-curses__adb.htm#ref_293_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_608_7" HREF="terminal_interface-curses__adb.htm#ref_294_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_609_7" HREF="terminal_interface-curses__adb.htm#ref_295_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_610_7" HREF="terminal_interface-curses__adb.htm#ref_296_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_764_13">Sub_Window</A>);
+
+ <span class="comment"><EM>-- <A NAME="AFU_14">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_774_13" HREF="terminal_interface-curses__adb.htm#ref_291_13">Derived_Window</A></span>
+ (<span class="symbol"><A NAME="ref_775_7" HREF="terminal_interface-curses__adb.htm#ref_292_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_776_7" HREF="terminal_interface-curses__adb.htm#ref_293_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_777_7" HREF="terminal_interface-curses__adb.htm#ref_294_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_778_7" HREF="terminal_interface-curses__adb.htm#ref_295_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_779_7" HREF="terminal_interface-curses__adb.htm#ref_296_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">derwin()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_605_13">Derived_Window</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_774_13">Derived_Window</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_15"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_615_13" HREF="terminal_interface-curses__adb.htm#ref_319_13">Duplicate</A></span> (<span class="symbol"><A NAME="ref_615_24" HREF="terminal_interface-curses__adb.htm#ref_319_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_15">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_784_13" HREF="terminal_interface-curses__adb.htm#ref_319_13">Duplicate</A></span> (<span class="symbol"><A NAME="ref_784_24" HREF="terminal_interface-curses__adb.htm#ref_319_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">dupwin()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_615_13">Duplicate</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_784_13">Duplicate</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_16"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_620_14" HREF="terminal_interface-curses__adb.htm#ref_332_14">Move_Window</A></span> (<span class="symbol"><A NAME="ref_620_27" HREF="terminal_interface-curses__adb.htm#ref_332_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_621_27" HREF="terminal_interface-curses__adb.htm#ref_333_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_622_27" HREF="terminal_interface-curses__adb.htm#ref_334_27">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_16">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_789_14" HREF="terminal_interface-curses__adb.htm#ref_332_14">Move_Window</A></span> (<span class="symbol"><A NAME="ref_789_27" HREF="terminal_interface-curses__adb.htm#ref_332_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_790_27" HREF="terminal_interface-curses__adb.htm#ref_333_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_791_27" HREF="terminal_interface-curses__adb.htm#ref_334_27">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">mvwin()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_620_14">Move_Window</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_789_14">Move_Window</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_17"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_627_14" HREF="terminal_interface-curses__adb.htm#ref_346_14">Move_Derived_Window</A></span> (<span class="symbol"><A NAME="ref_627_35" HREF="terminal_interface-curses__adb.htm#ref_346_35">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_628_35" HREF="terminal_interface-curses__adb.htm#ref_347_35">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_629_35" HREF="terminal_interface-curses__adb.htm#ref_348_35">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_17">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_796_14" HREF="terminal_interface-curses__adb.htm#ref_346_14">Move_Derived_Window</A></span> (<span class="symbol"><A NAME="ref_796_35" HREF="terminal_interface-curses__adb.htm#ref_346_35">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_797_35" HREF="terminal_interface-curses__adb.htm#ref_347_35">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_798_35" HREF="terminal_interface-curses__adb.htm#ref_348_35">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">mvderwin()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_627_14">Move_Derived_Window</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_796_14">Move_Derived_Window</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_18"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_634_14">Synchronize_Upwards</A></span> (<span class="symbol"><A NAME="ref_634_35" HREF="terminal_interface-curses__ads.htm#ref_634_14">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_18">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_803_14">Synchronize_Upwards</A></span> (<span class="symbol"><A NAME="ref_803_35" HREF="terminal_interface-curses__ads.htm#ref_803_14">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">wsyncup()</A></EM></span>
<b>pragma</b> Import (C, Synchronize_Upwards, "wsyncup");
- <span class="comment"><EM>-- #1A NAME="AFU_19"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_639_14">Synchronize_Downwards</A></span> (<span class="symbol"><A NAME="ref_639_37" HREF="terminal_interface-curses__ads.htm#ref_639_14">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_19">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_808_14">Synchronize_Downwards</A></span> (<span class="symbol"><A NAME="ref_808_37" HREF="terminal_interface-curses__ads.htm#ref_808_14">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">wsyncdown()</A></EM></span>
<b>pragma</b> Import (C, Synchronize_Downwards, "wsyncdown");
- <span class="comment"><EM>-- #1A NAME="AFU_20"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_644_14" HREF="terminal_interface-curses__adb.htm#ref_360_14">Set_Synch_Mode</A></span> (<span class="symbol"><A NAME="ref_644_30" HREF="terminal_interface-curses__adb.htm#ref_360_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_645_30" HREF="terminal_interface-curses__adb.htm#ref_361_30">Mode</A></span> : Boolean := False);
+ <span class="comment"><EM>-- <A NAME="AFU_20">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_813_14" HREF="terminal_interface-curses__adb.htm#ref_360_14">Set_Synch_Mode</A></span> (<span class="symbol"><A NAME="ref_813_30" HREF="terminal_interface-curses__adb.htm#ref_360_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_814_30" HREF="terminal_interface-curses__adb.htm#ref_361_30">Mode</A></span> : Boolean := False);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">syncok()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_644_14">Set_Synch_Mode</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_813_14">Set_Synch_Mode</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_addstr.3x.html">curs_addstr.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_21"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_654_14" HREF="terminal_interface-curses__adb.htm#ref_372_14">Add</A></span> (<span class="symbol"><A NAME="ref_654_19" HREF="terminal_interface-curses__adb.htm#ref_372_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_655_19" HREF="terminal_interface-curses__adb.htm#ref_373_19">Str</A></span> : String;
- <span class="symbol"><A NAME="ref_656_19" HREF="terminal_interface-curses__adb.htm#ref_374_19">Len</A></span> : Integer := -1);
+ <span class="comment"><EM>-- <A NAME="AFU_21">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_823_14" HREF="terminal_interface-curses__adb.htm#ref_372_14">Add</A></span> (<span class="symbol"><A NAME="ref_823_19" HREF="terminal_interface-curses__adb.htm#ref_372_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_824_19" HREF="terminal_interface-curses__adb.htm#ref_373_19">Str</A></span> : String;
+ <span class="symbol"><A NAME="ref_825_19" HREF="terminal_interface-curses__adb.htm#ref_374_19">Len</A></span> : Integer := -1);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_addstr.3x.html">waddnstr()</A></EM></span>
<span class="comment"><EM>-- AKA: waddstr()</EM></span>
<span class="comment"><EM>-- AKA: addnstr()</EM></span>
<span class="comment"><EM>-- AKA: addstr()</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_22"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_663_14" HREF="terminal_interface-curses__adb.htm#ref_390_14">Add</A></span> (<span class="symbol"><A NAME="ref_663_19" HREF="terminal_interface-curses__adb.htm#ref_391_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_664_19" HREF="terminal_interface-curses__adb.htm#ref_392_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_665_19" HREF="terminal_interface-curses__adb.htm#ref_393_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_666_19" HREF="terminal_interface-curses__adb.htm#ref_394_7">Str</A></span> : String;
- <span class="symbol"><A NAME="ref_667_19" HREF="terminal_interface-curses__adb.htm#ref_395_7">Len</A></span> : Integer := -1);
+ <span class="comment"><EM>-- <A NAME="AFU_22">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_832_14" HREF="terminal_interface-curses__adb.htm#ref_390_14">Add</A></span> (<span class="symbol"><A NAME="ref_832_19" HREF="terminal_interface-curses__adb.htm#ref_391_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_833_19" HREF="terminal_interface-curses__adb.htm#ref_392_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_834_19" HREF="terminal_interface-curses__adb.htm#ref_393_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_835_19" HREF="terminal_interface-curses__adb.htm#ref_394_7">Str</A></span> : String;
+ <span class="symbol"><A NAME="ref_836_19" HREF="terminal_interface-curses__adb.htm#ref_395_7">Len</A></span> : Integer := -1);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_addstr.3x.html">mvwaddnstr()</A></EM></span>
<span class="comment"><EM>-- AKA: mvwaddstr()</EM></span>
<span class="comment"><EM>-- AKA: mvaddnstr()</EM></span>
@@ -691,21 +860,21 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_addchstr.3x.html">curs_addchstr.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_23"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_678_14" HREF="terminal_interface-curses__adb.htm#ref_402_14">Add</A></span> (<span class="symbol"><A NAME="ref_678_19" HREF="terminal_interface-curses__adb.htm#ref_403_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_679_19" HREF="terminal_interface-curses__adb.htm#ref_404_7">Str</A></span> : Attributed_String;
- <span class="symbol"><A NAME="ref_680_19" HREF="terminal_interface-curses__adb.htm#ref_405_7">Len</A></span> : Integer := -1);
+ <span class="comment"><EM>-- <A NAME="AFU_23">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_847_14" HREF="terminal_interface-curses__adb.htm#ref_402_14">Add</A></span> (<span class="symbol"><A NAME="ref_847_19" HREF="terminal_interface-curses__adb.htm#ref_403_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_848_19" HREF="terminal_interface-curses__adb.htm#ref_404_7">Str</A></span> : Attributed_String;
+ <span class="symbol"><A NAME="ref_849_19" HREF="terminal_interface-curses__adb.htm#ref_405_7">Len</A></span> : Integer := -1);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_addchstr.3x.html">waddchnstr()</A></EM></span>
<span class="comment"><EM>-- AKA: waddchstr()</EM></span>
<span class="comment"><EM>-- AKA: addchnstr()</EM></span>
<span class="comment"><EM>-- AKA: addchstr()</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_24"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_687_14" HREF="terminal_interface-curses__adb.htm#ref_425_14">Add</A></span> (<span class="symbol"><A NAME="ref_687_19" HREF="terminal_interface-curses__adb.htm#ref_426_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_688_19" HREF="terminal_interface-curses__adb.htm#ref_427_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_689_19" HREF="terminal_interface-curses__adb.htm#ref_428_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_690_19" HREF="terminal_interface-curses__adb.htm#ref_429_7">Str</A></span> : Attributed_String;
- <span class="symbol"><A NAME="ref_691_19" HREF="terminal_interface-curses__adb.htm#ref_430_7">Len</A></span> : Integer := -1);
+ <span class="comment"><EM>-- <A NAME="AFU_24">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_856_14" HREF="terminal_interface-curses__adb.htm#ref_426_14">Add</A></span> (<span class="symbol"><A NAME="ref_856_19" HREF="terminal_interface-curses__adb.htm#ref_427_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_857_19" HREF="terminal_interface-curses__adb.htm#ref_428_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_858_19" HREF="terminal_interface-curses__adb.htm#ref_429_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_859_19" HREF="terminal_interface-curses__adb.htm#ref_430_7">Str</A></span> : Attributed_String;
+ <span class="symbol"><A NAME="ref_860_19" HREF="terminal_interface-curses__adb.htm#ref_431_7">Len</A></span> : Integer := -1);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_addchstr.3x.html">mvwaddchnstr()</A></EM></span>
<span class="comment"><EM>-- AKA: mvwaddchstr()</EM></span>
<span class="comment"><EM>-- AKA: mvaddchnstr()</EM></span>
@@ -718,92 +887,92 @@
<span class="comment"><EM>-- | Not implemented: mvhline, mvwhline, mvvline, mvwvline</EM></span>
<span class="comment"><EM>-- | use Move_Cursor then Horizontal_Line or Vertical_Line</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_25"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_705_14" HREF="terminal_interface-curses__adb.htm#ref_437_14">Border</A></span>
- (<span class="symbol"><A NAME="ref_706_7" HREF="terminal_interface-curses__adb.htm#ref_438_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_707_7" HREF="terminal_interface-curses__adb.htm#ref_439_7">Left_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_708_7" HREF="terminal_interface-curses__adb.htm#ref_440_7">Right_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_709_7" HREF="terminal_interface-curses__adb.htm#ref_441_7">Top_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_710_7" HREF="terminal_interface-curses__adb.htm#ref_442_7">Bottom_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_711_7" HREF="terminal_interface-curses__adb.htm#ref_443_7">Upper_Left_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_712_7" HREF="terminal_interface-curses__adb.htm#ref_444_7">Upper_Right_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_713_7" HREF="terminal_interface-curses__adb.htm#ref_445_7">Lower_Left_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_714_7" HREF="terminal_interface-curses__adb.htm#ref_446_7">Lower_Right_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>
+ <span class="comment"><EM>-- <A NAME="AFU_25">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_874_14" HREF="terminal_interface-curses__adb.htm#ref_438_14">Border</A></span>
+ (<span class="symbol"><A NAME="ref_875_7" HREF="terminal_interface-curses__adb.htm#ref_439_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_876_7" HREF="terminal_interface-curses__adb.htm#ref_440_7">Left_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_877_7" HREF="terminal_interface-curses__adb.htm#ref_441_7">Right_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_878_7" HREF="terminal_interface-curses__adb.htm#ref_442_7">Top_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_879_7" HREF="terminal_interface-curses__adb.htm#ref_443_7">Bottom_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_880_7" HREF="terminal_interface-curses__adb.htm#ref_444_7">Upper_Left_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_881_7" HREF="terminal_interface-curses__adb.htm#ref_445_7">Upper_Right_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_882_7" HREF="terminal_interface-curses__adb.htm#ref_446_7">Lower_Left_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_883_7" HREF="terminal_interface-curses__adb.htm#ref_447_7">Lower_Right_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>
);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_border.3x.html">wborder()</A></EM></span>
<span class="comment"><EM>-- AKA: border()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_705_14">Border</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_874_14">Border</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_26"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_721_14" HREF="terminal_interface-curses__adb.htm#ref_474_14">Box</A></span>
- (<span class="symbol"><A NAME="ref_722_7" HREF="terminal_interface-curses__adb.htm#ref_475_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_723_7" HREF="terminal_interface-curses__adb.htm#ref_476_7">Vertical_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>;
- <span class="symbol"><A NAME="ref_724_7" HREF="terminal_interface-curses__adb.htm#ref_477_7">Horizontal_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_26">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_890_14" HREF="terminal_interface-curses__adb.htm#ref_474_14">Box</A></span>
+ (<span class="symbol"><A NAME="ref_891_7" HREF="terminal_interface-curses__adb.htm#ref_475_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_892_7" HREF="terminal_interface-curses__adb.htm#ref_476_7">Vertical_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>;
+ <span class="symbol"><A NAME="ref_893_7" HREF="terminal_interface-curses__adb.htm#ref_477_7">Horizontal_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_border.3x.html">box()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_721_14">Box</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_890_14">Box</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_27"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_729_14" HREF="terminal_interface-curses__adb.htm#ref_485_14">Horizontal_Line</A></span>
- (<span class="symbol"><A NAME="ref_730_7" HREF="terminal_interface-curses__adb.htm#ref_486_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_731_7" HREF="terminal_interface-curses__adb.htm#ref_487_7">Line_Size</A></span> : Natural;
- <span class="symbol"><A NAME="ref_732_7" HREF="terminal_interface-curses__adb.htm#ref_488_7">Line_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_27">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_898_14" HREF="terminal_interface-curses__adb.htm#ref_485_14">Horizontal_Line</A></span>
+ (<span class="symbol"><A NAME="ref_899_7" HREF="terminal_interface-curses__adb.htm#ref_486_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_900_7" HREF="terminal_interface-curses__adb.htm#ref_487_7">Line_Size</A></span> : Natural;
+ <span class="symbol"><A NAME="ref_901_7" HREF="terminal_interface-curses__adb.htm#ref_488_7">Line_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_border.3x.html">whline()</A></EM></span>
<span class="comment"><EM>-- AKA: hline()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_729_14">Horizontal_Line</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_898_14">Horizontal_Line</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_28"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_738_14" HREF="terminal_interface-curses__adb.htm#ref_502_14">Vertical_Line</A></span>
- (<span class="symbol"><A NAME="ref_739_7" HREF="terminal_interface-curses__adb.htm#ref_503_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_740_7" HREF="terminal_interface-curses__adb.htm#ref_504_7">Line_Size</A></span> : Natural;
- <span class="symbol"><A NAME="ref_741_7" HREF="terminal_interface-curses__adb.htm#ref_505_7">Line_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_372_4">Default_Character</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_28">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_907_14" HREF="terminal_interface-curses__adb.htm#ref_503_14">Vertical_Line</A></span>
+ (<span class="symbol"><A NAME="ref_908_7" HREF="terminal_interface-curses__adb.htm#ref_504_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_909_7" HREF="terminal_interface-curses__adb.htm#ref_505_7">Line_Size</A></span> : Natural;
+ <span class="symbol"><A NAME="ref_910_7" HREF="terminal_interface-curses__adb.htm#ref_506_7">Line_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_509_4">Default_Character</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_border.3x.html">wvline()</A></EM></span>
<span class="comment"><EM>-- AKA: vline()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_738_14">Vertical_Line</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_907_14">Vertical_Line</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_getch.3x.html">curs_getch.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- Not implemented: mvgetch, mvwgetch</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_29"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_752_13" HREF="terminal_interface-curses__adb.htm#ref_520_13">Get_Keystroke</A></span> (<span class="symbol"><A NAME="ref_752_28" HREF="terminal_interface-curses__adb.htm#ref_520_28">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_29">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_921_13" HREF="terminal_interface-curses__adb.htm#ref_522_13">Get_Keystroke</A></span> (<span class="symbol"><A NAME="ref_921_28" HREF="terminal_interface-curses__adb.htm#ref_522_28">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_getch.3x.html">wgetch()</A></EM></span>
<span class="comment"><EM>-- AKA: getch()</EM></span>
<span class="comment"><EM>-- Get a character from the keyboard and echo it - if enabled - to the</EM></span>
<span class="comment"><EM>-- window.</EM></span>
<span class="comment"><EM>-- If for any reason (i.e. a timeout) we could not get a character the</EM></span>
<span class="comment"><EM>-- returned keycode is Key_None.</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_752_13">Get_Keystroke</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_921_13">Get_Keystroke</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_30"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_763_14" HREF="terminal_interface-curses__adb.htm#ref_535_14">Undo_Keystroke</A></span> (<span class="symbol"><A NAME="ref_763_30" HREF="terminal_interface-curses__adb.htm#ref_535_30">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_30">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_932_14" HREF="terminal_interface-curses__adb.htm#ref_537_14">Undo_Keystroke</A></span> (<span class="symbol"><A NAME="ref_932_30" HREF="terminal_interface-curses__adb.htm#ref_537_30">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_getch.3x.html">ungetch()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_763_14">Undo_Keystroke</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_932_14">Undo_Keystroke</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_31"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_768_13" HREF="terminal_interface-curses__adb.htm#ref_545_13">Has_Key</A></span> (<span class="symbol"><A NAME="ref_768_22" HREF="terminal_interface-curses__adb.htm#ref_545_22">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A>) <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_31">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_937_13" HREF="terminal_interface-curses__adb.htm#ref_547_13">Has_Key</A></span> (<span class="symbol"><A NAME="ref_937_22" HREF="terminal_interface-curses__adb.htm#ref_547_22">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>) <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_getch.3x.html">has_key()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_768_13">Has_Key</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_937_13">Has_Key</A>);
<span class="comment"><EM>-- |</EM></span>
<span class="comment"><EM>-- | Some helper functions</EM></span>
<span class="comment"><EM>-- |</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_775_13" HREF="terminal_interface-curses__adb.htm#ref_557_13">Is_Function_Key</A></span> (<span class="symbol"><A NAME="ref_775_30" HREF="terminal_interface-curses__adb.htm#ref_557_30">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A>) <b>return</b> Boolean;
+ <b>function</b> <span class="symbol"><A NAME="ref_944_13" HREF="terminal_interface-curses__adb.htm#ref_559_13">Is_Function_Key</A></span> (<span class="symbol"><A NAME="ref_944_30" HREF="terminal_interface-curses__adb.htm#ref_559_30">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>) <b>return</b> Boolean;
<span class="comment"><EM>-- Return True if the Key is a function key (i.e. one of F0 .. F63)</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_775_13">Is_Function_Key</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_944_13">Is_Function_Key</A>);
- <b>subtype</b> <span class="symbol"><A NAME="ref_779_12">Function_Key_Number</A></span> <b>is</b> Integer <b>range</b> 0 .. 63;
+ <b>subtype</b> <span class="symbol"><A NAME="ref_948_12">Function_Key_Number</A></span> <b>is</b> Integer <b>range</b> 0 .. 63;
<span class="comment"><EM>-- (n)curses allows for 64 function keys.</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_782_13" HREF="terminal_interface-curses__adb.htm#ref_569_13">Function_Key</A></span> (<span class="symbol"><A NAME="ref_782_27" HREF="terminal_interface-curses__adb.htm#ref_569_27">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_779_12">Function_Key_Number</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_951_13" HREF="terminal_interface-curses__adb.htm#ref_571_13">Function_Key</A></span> (<span class="symbol"><A NAME="ref_951_27" HREF="terminal_interface-curses__adb.htm#ref_571_27">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_948_12">Function_Key_Number</A>;
<span class="comment"><EM>-- Return the number of the function key. If the code is not a</EM></span>
<span class="comment"><EM>-- function key, a CONSTRAINT_ERROR will be raised.</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_782_13">Function_Key</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_951_13">Function_Key</A>);
- <b>function</b> <span class="symbol"><A NAME="ref_787_13" HREF="terminal_interface-curses__adb.htm#ref_580_13">Function_Key_Code</A></span> (<span class="symbol"><A NAME="ref_787_32" HREF="terminal_interface-curses__adb.htm#ref_580_32">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_779_12">Function_Key_Number</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_956_13" HREF="terminal_interface-curses__adb.htm#ref_582_13">Function_Key_Code</A></span> (<span class="symbol"><A NAME="ref_956_32" HREF="terminal_interface-curses__adb.htm#ref_582_32">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_948_12">Function_Key_Number</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A>;
<span class="comment"><EM>-- Return the key code for a given function-key number.</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_787_13">Function_Key_Code</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_956_13">Function_Key_Code</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></EM></span>
@@ -814,68 +983,68 @@
<span class="comment"><EM>-- PAIR_NUMBER</EM></span>
<span class="comment"><EM>-- PAIR_NUMBER(c) is the same as c.Color</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_32"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_801_14" HREF="terminal_interface-curses__adb.htm#ref_586_14">Standout</A></span> (<span class="symbol"><A NAME="ref_801_24" HREF="terminal_interface-curses__adb.htm#ref_586_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_802_24" HREF="terminal_interface-curses__adb.htm#ref_587_24">On</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_32">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_970_14" HREF="terminal_interface-curses__adb.htm#ref_588_14">Standout</A></span> (<span class="symbol"><A NAME="ref_970_24" HREF="terminal_interface-curses__adb.htm#ref_588_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_971_24" HREF="terminal_interface-curses__adb.htm#ref_589_24">On</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: wstandout()</EM></span>
<span class="comment"><EM>-- AKA: wstandend()</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_33"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_807_14" HREF="terminal_interface-curses__adb.htm#ref_606_14">Switch_Character_Attribute</A></span>
- (<span class="symbol"><A NAME="ref_808_7" HREF="terminal_interface-curses__adb.htm#ref_607_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_809_7" HREF="terminal_interface-curses__adb.htm#ref_608_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_810_7" HREF="terminal_interface-curses__adb.htm#ref_609_7">On</A></span> : Boolean := True); <span class="comment"><EM>-- if False we switch Off.</EM></span>
+ <span class="comment"><EM>-- <A NAME="AFU_33">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_976_14" HREF="terminal_interface-curses__adb.htm#ref_608_14">Switch_Character_Attribute</A></span>
+ (<span class="symbol"><A NAME="ref_977_7" HREF="terminal_interface-curses__adb.htm#ref_609_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_978_7" HREF="terminal_interface-curses__adb.htm#ref_610_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_979_7" HREF="terminal_interface-curses__adb.htm#ref_611_7">On</A></span> : Boolean := True); <span class="comment"><EM>-- if False we switch Off.</EM></span>
<span class="comment"><EM>-- Switches those Attributes set to true in the list.</EM></span>
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattron()</A></EM></span>
<span class="comment"><EM>-- AKA: wattroff()</EM></span>
<span class="comment"><EM>-- AKA: attron()</EM></span>
<span class="comment"><EM>-- AKA: attroff()</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_34"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_818_14" HREF="terminal_interface-curses__adb.htm#ref_634_14">Set_Character_Attributes</A></span>
- (<span class="symbol"><A NAME="ref_819_7" HREF="terminal_interface-curses__adb.htm#ref_635_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_820_7" HREF="terminal_interface-curses__adb.htm#ref_636_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_821_7" HREF="terminal_interface-curses__adb.htm#ref_637_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First);
+ <span class="comment"><EM>-- <A NAME="AFU_34">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_987_14" HREF="terminal_interface-curses__adb.htm#ref_636_14">Set_Character_Attributes</A></span>
+ (<span class="symbol"><A NAME="ref_988_7" HREF="terminal_interface-curses__adb.htm#ref_637_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_989_7" HREF="terminal_interface-curses__adb.htm#ref_638_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_990_7" HREF="terminal_interface-curses__adb.htm#ref_639_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattrset()</A></EM></span>
<span class="comment"><EM>-- AKA: attrset()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_818_14">Set_Character_Attributes</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_987_14">Set_Character_Attributes</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_35"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_827_13" HREF="terminal_interface-curses__adb.htm#ref_652_13">Get_Character_Attribute</A></span>
- (<span class="symbol"><A NAME="ref_828_7" HREF="terminal_interface-curses__adb.htm#ref_652_38">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_35">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_996_13" HREF="terminal_interface-curses__adb.htm#ref_653_13">Get_Character_Attribute</A></span>
+ (<span class="symbol"><A NAME="ref_997_7" HREF="terminal_interface-curses__adb.htm#ref_653_38">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattr_get()</A></EM></span>
<span class="comment"><EM>-- AKA: attr_get()</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_36"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_833_13" HREF="terminal_interface-curses__adb.htm#ref_675_13">Get_Character_Attribute</A></span>
- (<span class="symbol"><A NAME="ref_834_7" HREF="terminal_interface-curses__adb.htm#ref_675_38">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_36">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1002_13" HREF="terminal_interface-curses__adb.htm#ref_674_13">Get_Character_Attribute</A></span>
+ (<span class="symbol"><A NAME="ref_1003_7" HREF="terminal_interface-curses__adb.htm#ref_674_38">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattr_get()</A></EM></span>
<b>pragma</b> Inline (Get_Character_Attribute);
- <span class="comment"><EM>-- #1A NAME="AFU_37"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_839_14" HREF="terminal_interface-curses__adb.htm#ref_698_14">Set_Color</A></span> (<span class="symbol"><A NAME="ref_839_25" HREF="terminal_interface-curses__adb.htm#ref_698_25">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_840_25" HREF="terminal_interface-curses__adb.htm#ref_699_25">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_37">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1008_14" HREF="terminal_interface-curses__adb.htm#ref_695_14">Set_Color</A></span> (<span class="symbol"><A NAME="ref_1008_25" HREF="terminal_interface-curses__adb.htm#ref_695_25">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1009_25" HREF="terminal_interface-curses__adb.htm#ref_696_25">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wcolor_set()</A></EM></span>
<span class="comment"><EM>-- AKA: color_set()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_839_14">Set_Color</A>);
-
- <span class="comment"><EM>-- #1A NAME="AFU_38"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_846_14" HREF="terminal_interface-curses__adb.htm#ref_713_14">Change_Attributes</A></span>
- (<span class="symbol"><A NAME="ref_847_7" HREF="terminal_interface-curses__adb.htm#ref_714_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_848_7" HREF="terminal_interface-curses__adb.htm#ref_715_7">Count</A></span> : Integer := -1;
- <span class="symbol"><A NAME="ref_849_7" HREF="terminal_interface-curses__adb.htm#ref_716_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_850_7" HREF="terminal_interface-curses__adb.htm#ref_717_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1008_14">Set_Color</A>);
+
+ <span class="comment"><EM>-- <A NAME="AFU_38">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1015_14" HREF="terminal_interface-curses__adb.htm#ref_711_14">Change_Attributes</A></span>
+ (<span class="symbol"><A NAME="ref_1016_7" HREF="terminal_interface-curses__adb.htm#ref_712_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1017_7" HREF="terminal_interface-curses__adb.htm#ref_713_7">Count</A></span> : Integer := -1;
+ <span class="symbol"><A NAME="ref_1018_7" HREF="terminal_interface-curses__adb.htm#ref_714_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_1019_7" HREF="terminal_interface-curses__adb.htm#ref_715_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wchgat()</A></EM></span>
<span class="comment"><EM>-- AKA: chgat()</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_39"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_855_14" HREF="terminal_interface-curses__adb.htm#ref_736_14">Change_Attributes</A></span>
- (<span class="symbol"><A NAME="ref_856_7" HREF="terminal_interface-curses__adb.htm#ref_737_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_857_7" HREF="terminal_interface-curses__adb.htm#ref_738_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>'First;
- <span class="symbol"><A NAME="ref_858_7" HREF="terminal_interface-curses__adb.htm#ref_739_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A> := <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>'First;
- <span class="symbol"><A NAME="ref_859_7" HREF="terminal_interface-curses__adb.htm#ref_740_7">Count</A></span> : Integer := -1;
- <span class="symbol"><A NAME="ref_860_7" HREF="terminal_interface-curses__adb.htm#ref_741_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_861_7" HREF="terminal_interface-curses__adb.htm#ref_742_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First);
+ <span class="comment"><EM>-- <A NAME="AFU_39">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1024_14" HREF="terminal_interface-curses__adb.htm#ref_736_14">Change_Attributes</A></span>
+ (<span class="symbol"><A NAME="ref_1025_7" HREF="terminal_interface-curses__adb.htm#ref_737_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1026_7" HREF="terminal_interface-curses__adb.htm#ref_738_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A> := <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>'First;
+ <span class="symbol"><A NAME="ref_1027_7" HREF="terminal_interface-curses__adb.htm#ref_739_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>'First;
+ <span class="symbol"><A NAME="ref_1028_7" HREF="terminal_interface-curses__adb.htm#ref_740_7">Count</A></span> : Integer := -1;
+ <span class="symbol"><A NAME="ref_1029_7" HREF="terminal_interface-curses__adb.htm#ref_741_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_1030_7" HREF="terminal_interface-curses__adb.htm#ref_742_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">mvwchgat()</A></EM></span>
<span class="comment"><EM>-- AKA: mvchgat()</EM></span>
<b>pragma</b> Inline (Change_Attributes);
@@ -884,15 +1053,15 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_beep.3x.html">curs_beep.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_40"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_871_14" HREF="terminal_interface-curses__adb.htm#ref_749_14">Beep</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_40">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1040_14" HREF="terminal_interface-curses__adb.htm#ref_749_14">Beep</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_beep.3x.html">beep()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_871_14">Beep</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1040_14">Beep</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_41"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_876_14" HREF="terminal_interface-curses__adb.htm#ref_759_14">Flash_Screen</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_41">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1045_14" HREF="terminal_interface-curses__adb.htm#ref_759_14">Flash_Screen</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_beep.3x.html">flash()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_876_14">Flash_Screen</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1045_14">Flash_Screen</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></EM></span>
@@ -900,76 +1069,76 @@
<span class="comment"><EM>-- | Not implemented : typeahead</EM></span>
<span class="comment"><EM>--</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_42"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_887_14" HREF="terminal_interface-curses__adb.htm#ref_769_14">Set_Cbreak_Mode</A></span> (<span class="symbol"><A NAME="ref_887_31" HREF="terminal_interface-curses__adb.htm#ref_769_31">SwitchOn</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_42">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1056_14" HREF="terminal_interface-curses__adb.htm#ref_769_14">Set_Cbreak_Mode</A></span> (<span class="symbol"><A NAME="ref_1056_31" HREF="terminal_interface-curses__adb.htm#ref_769_31">SwitchOn</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">cbreak()</A></EM></span>
<span class="comment"><EM>-- AKA: nocbreak()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_887_14">Set_Cbreak_Mode</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1056_14">Set_Cbreak_Mode</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_43"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_893_14" HREF="terminal_interface-curses__adb.htm#ref_788_14">Set_Raw_Mode</A></span> (<span class="symbol"><A NAME="ref_893_28" HREF="terminal_interface-curses__adb.htm#ref_788_28">SwitchOn</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_43">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1062_14" HREF="terminal_interface-curses__adb.htm#ref_788_14">Set_Raw_Mode</A></span> (<span class="symbol"><A NAME="ref_1062_28" HREF="terminal_interface-curses__adb.htm#ref_788_28">SwitchOn</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">raw()</A></EM></span>
<span class="comment"><EM>-- AKA: noraw()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_893_14">Set_Raw_Mode</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1062_14">Set_Raw_Mode</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_44"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_899_14" HREF="terminal_interface-curses__adb.htm#ref_807_14">Set_Echo_Mode</A></span> (<span class="symbol"><A NAME="ref_899_29" HREF="terminal_interface-curses__adb.htm#ref_807_29">SwitchOn</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_44">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1068_14" HREF="terminal_interface-curses__adb.htm#ref_807_14">Set_Echo_Mode</A></span> (<span class="symbol"><A NAME="ref_1068_29" HREF="terminal_interface-curses__adb.htm#ref_807_29">SwitchOn</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">echo()</A></EM></span>
<span class="comment"><EM>-- AKA: noecho()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_899_14">Set_Echo_Mode</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1068_14">Set_Echo_Mode</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_45"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_905_14" HREF="terminal_interface-curses__adb.htm#ref_826_14">Set_Meta_Mode</A></span> (<span class="symbol"><A NAME="ref_905_29" HREF="terminal_interface-curses__adb.htm#ref_826_29">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_906_29" HREF="terminal_interface-curses__adb.htm#ref_827_29">SwitchOn</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_45">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1074_14" HREF="terminal_interface-curses__adb.htm#ref_826_14">Set_Meta_Mode</A></span> (<span class="symbol"><A NAME="ref_1074_29" HREF="terminal_interface-curses__adb.htm#ref_826_29">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1075_29" HREF="terminal_interface-curses__adb.htm#ref_827_29">SwitchOn</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">meta()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_905_14">Set_Meta_Mode</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1074_14">Set_Meta_Mode</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_46"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_911_14" HREF="terminal_interface-curses__adb.htm#ref_837_14">Set_KeyPad_Mode</A></span> (<span class="symbol"><A NAME="ref_911_31" HREF="terminal_interface-curses__adb.htm#ref_837_31">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_912_31" HREF="terminal_interface-curses__adb.htm#ref_838_31">SwitchOn</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_46">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1080_14" HREF="terminal_interface-curses__adb.htm#ref_837_14">Set_KeyPad_Mode</A></span> (<span class="symbol"><A NAME="ref_1080_31" HREF="terminal_interface-curses__adb.htm#ref_837_31">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1081_31" HREF="terminal_interface-curses__adb.htm#ref_838_31">SwitchOn</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">keypad()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_911_14">Set_KeyPad_Mode</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1080_14">Set_KeyPad_Mode</A>);
- <b>function</b> <span class="symbol"><A NAME="ref_916_13" HREF="terminal_interface-curses__adb.htm#ref_848_13">Get_KeyPad_Mode</A></span> (<span class="symbol"><A NAME="ref_916_30" HREF="terminal_interface-curses__adb.htm#ref_848_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
+ <b>function</b> <span class="symbol"><A NAME="ref_1085_13" HREF="terminal_interface-curses__adb.htm#ref_848_13">Get_KeyPad_Mode</A></span> (<span class="symbol"><A NAME="ref_1085_30" HREF="terminal_interface-curses__adb.htm#ref_848_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
<b>return</b> Boolean;
<span class="comment"><EM>-- This has no pendant in C. There you've to look into the WINDOWS</EM></span>
<span class="comment"><EM>-- structure to get the value. Bad practice, not repeated in Ada.</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_921_9">Half_Delay_Amount</A></span> <b>is</b> <b>range</b> 1 .. 255;
+ <b>type</b> <span class="symbol"><A NAME="ref_1090_9">Half_Delay_Amount</A></span> <b>is</b> <b>range</b> 1 .. 255;
- <span class="comment"><EM>-- #1A NAME="AFU_47"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_924_14" HREF="terminal_interface-curses__adb.htm#ref_857_14">Half_Delay</A></span> (<span class="symbol"><A NAME="ref_924_26" HREF="terminal_interface-curses__adb.htm#ref_857_26">Amount</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_921_9">Half_Delay_Amount</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_47">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1093_14" HREF="terminal_interface-curses__adb.htm#ref_857_14">Half_Delay</A></span> (<span class="symbol"><A NAME="ref_1093_26" HREF="terminal_interface-curses__adb.htm#ref_857_26">Amount</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1090_9">Half_Delay_Amount</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">halfdelay()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_924_14">Half_Delay</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1093_14">Half_Delay</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_48"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_929_14" HREF="terminal_interface-curses__adb.htm#ref_867_14">Set_Flush_On_Interrupt_Mode</A></span>
- (<span class="symbol"><A NAME="ref_930_7" HREF="terminal_interface-curses__adb.htm#ref_868_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_931_7" HREF="terminal_interface-curses__adb.htm#ref_869_7">Mode</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_48">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1098_14" HREF="terminal_interface-curses__adb.htm#ref_867_14">Set_Flush_On_Interrupt_Mode</A></span>
+ (<span class="symbol"><A NAME="ref_1099_7" HREF="terminal_interface-curses__adb.htm#ref_868_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1100_7" HREF="terminal_interface-curses__adb.htm#ref_869_7">Mode</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">intrflush()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_929_14">Set_Flush_On_Interrupt_Mode</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1098_14">Set_Flush_On_Interrupt_Mode</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_49"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_936_14" HREF="terminal_interface-curses__adb.htm#ref_879_14">Set_Queue_Interrupt_Mode</A></span>
- (<span class="symbol"><A NAME="ref_937_7" HREF="terminal_interface-curses__adb.htm#ref_880_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_938_7" HREF="terminal_interface-curses__adb.htm#ref_881_7">Flush</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_49">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1105_14" HREF="terminal_interface-curses__adb.htm#ref_879_14">Set_Queue_Interrupt_Mode</A></span>
+ (<span class="symbol"><A NAME="ref_1106_7" HREF="terminal_interface-curses__adb.htm#ref_880_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1107_7" HREF="terminal_interface-curses__adb.htm#ref_881_7">Flush</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">qiflush()</A></EM></span>
<span class="comment"><EM>-- AKA: noqiflush()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_936_14">Set_Queue_Interrupt_Mode</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1105_14">Set_Queue_Interrupt_Mode</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_50"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_944_14" HREF="terminal_interface-curses__adb.htm#ref_898_14">Set_NoDelay_Mode</A></span>
- (<span class="symbol"><A NAME="ref_945_7" HREF="terminal_interface-curses__adb.htm#ref_899_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_946_7" HREF="terminal_interface-curses__adb.htm#ref_900_7">Mode</A></span> : Boolean := False);
+ <span class="comment"><EM>-- <A NAME="AFU_50">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1113_14" HREF="terminal_interface-curses__adb.htm#ref_898_14">Set_NoDelay_Mode</A></span>
+ (<span class="symbol"><A NAME="ref_1114_7" HREF="terminal_interface-curses__adb.htm#ref_899_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1115_7" HREF="terminal_interface-curses__adb.htm#ref_900_7">Mode</A></span> : Boolean := False);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">nodelay()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_944_14">Set_NoDelay_Mode</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1113_14">Set_NoDelay_Mode</A>);
- <b>type</b> <span class="symbol"><A NAME="ref_950_9">Timeout_Mode</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_950_26">Blocking</A></span>, <span class="symbol"><A NAME="ref_950_36">Non_Blocking</A></span>, <span class="symbol"><A NAME="ref_950_50">Delayed</A></span>);
+ <b>type</b> <span class="symbol"><A NAME="ref_1119_9">Timeout_Mode</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1119_26">Blocking</A></span>, <span class="symbol"><A NAME="ref_1119_36">Non_Blocking</A></span>, <span class="symbol"><A NAME="ref_1119_50">Delayed</A></span>);
- <span class="comment"><EM>-- #1A NAME="AFU_51"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_953_14" HREF="terminal_interface-curses__adb.htm#ref_910_14">Set_Timeout_Mode</A></span> (<span class="symbol"><A NAME="ref_953_32" HREF="terminal_interface-curses__adb.htm#ref_910_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_954_32" HREF="terminal_interface-curses__adb.htm#ref_911_32">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_950_9">Timeout_Mode</A>;
- <span class="symbol"><A NAME="ref_955_32" HREF="terminal_interface-curses__adb.htm#ref_912_32">Amount</A></span> : Natural); <span class="comment"><EM>-- in Milliseconds</EM></span>
+ <span class="comment"><EM>-- <A NAME="AFU_51">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1122_14" HREF="terminal_interface-curses__adb.htm#ref_910_14">Set_Timeout_Mode</A></span> (<span class="symbol"><A NAME="ref_1122_32" HREF="terminal_interface-curses__adb.htm#ref_910_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1123_32" HREF="terminal_interface-curses__adb.htm#ref_911_32">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1119_9">Timeout_Mode</A>;
+ <span class="symbol"><A NAME="ref_1124_32" HREF="terminal_interface-curses__adb.htm#ref_912_32">Amount</A></span> : Natural); <span class="comment"><EM>-- in Milliseconds</EM></span>
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">wtimeout()</A></EM></span>
<span class="comment"><EM>-- AKA: timeout()</EM></span>
<span class="comment"><EM>-- Instead of overloading the semantic of the sign of amount, we</EM></span>
@@ -978,109 +1147,109 @@
<span class="comment"><EM>-- evaluated.</EM></span>
<span class="comment"><EM>-- We do not inline this procedure.</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_52"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_965_14" HREF="terminal_interface-curses__adb.htm#ref_931_14">Set_Escape_Timer_Mode</A></span>
- (<span class="symbol"><A NAME="ref_966_7" HREF="terminal_interface-curses__adb.htm#ref_932_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_967_7" HREF="terminal_interface-curses__adb.htm#ref_933_7">Timer_Off</A></span> : Boolean := False);
+ <span class="comment"><EM>-- <A NAME="AFU_52">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1134_14" HREF="terminal_interface-curses__adb.htm#ref_931_14">Set_Escape_Timer_Mode</A></span>
+ (<span class="symbol"><A NAME="ref_1135_7" HREF="terminal_interface-curses__adb.htm#ref_932_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1136_7" HREF="terminal_interface-curses__adb.htm#ref_933_7">Timer_Off</A></span> : Boolean := False);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">notimeout()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_965_14">Set_Escape_Timer_Mode</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1134_14">Set_Escape_Timer_Mode</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_53"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_976_14" HREF="terminal_interface-curses__adb.htm#ref_945_14">Set_NL_Mode</A></span> (<span class="symbol"><A NAME="ref_976_27" HREF="terminal_interface-curses__adb.htm#ref_945_27">SwitchOn</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_53">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1145_14" HREF="terminal_interface-curses__adb.htm#ref_946_14">Set_NL_Mode</A></span> (<span class="symbol"><A NAME="ref_1145_27" HREF="terminal_interface-curses__adb.htm#ref_946_27">SwitchOn</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">nl()</A></EM></span>
<span class="comment"><EM>-- AKA: nonl()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_976_14">Set_NL_Mode</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1145_14">Set_NL_Mode</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_54"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_982_14" HREF="terminal_interface-curses__adb.htm#ref_964_14">Clear_On_Next_Update</A></span>
- (<span class="symbol"><A NAME="ref_983_7" HREF="terminal_interface-curses__adb.htm#ref_965_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_984_7" HREF="terminal_interface-curses__adb.htm#ref_966_7">Do_Clear</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_54">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1151_14" HREF="terminal_interface-curses__adb.htm#ref_965_14">Clear_On_Next_Update</A></span>
+ (<span class="symbol"><A NAME="ref_1152_7" HREF="terminal_interface-curses__adb.htm#ref_966_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1153_7" HREF="terminal_interface-curses__adb.htm#ref_967_7">Do_Clear</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">clearok()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_982_14">Clear_On_Next_Update</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1151_14">Clear_On_Next_Update</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_55"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_989_14" HREF="terminal_interface-curses__adb.htm#ref_976_14">Use_Insert_Delete_Line</A></span>
- (<span class="symbol"><A NAME="ref_990_7" HREF="terminal_interface-curses__adb.htm#ref_977_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_991_7" HREF="terminal_interface-curses__adb.htm#ref_978_7">Do_Idl</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_55">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1158_14" HREF="terminal_interface-curses__adb.htm#ref_977_14">Use_Insert_Delete_Line</A></span>
+ (<span class="symbol"><A NAME="ref_1159_7" HREF="terminal_interface-curses__adb.htm#ref_978_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1160_7" HREF="terminal_interface-curses__adb.htm#ref_979_7">Do_Idl</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">idlok()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_989_14">Use_Insert_Delete_Line</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1158_14">Use_Insert_Delete_Line</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_56"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_996_14" HREF="terminal_interface-curses__adb.htm#ref_988_14">Use_Insert_Delete_Character</A></span>
- (<span class="symbol"><A NAME="ref_997_7" HREF="terminal_interface-curses__adb.htm#ref_989_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_998_7" HREF="terminal_interface-curses__adb.htm#ref_990_7">Do_Idc</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_56">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1165_14" HREF="terminal_interface-curses__adb.htm#ref_989_14">Use_Insert_Delete_Character</A></span>
+ (<span class="symbol"><A NAME="ref_1166_7" HREF="terminal_interface-curses__adb.htm#ref_990_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1167_7" HREF="terminal_interface-curses__adb.htm#ref_991_7">Do_Idc</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">idcok()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_996_14">Use_Insert_Delete_Character</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1165_14">Use_Insert_Delete_Character</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_57"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1003_14" HREF="terminal_interface-curses__adb.htm#ref_998_14">Leave_Cursor_After_Update</A></span>
- (<span class="symbol"><A NAME="ref_1004_7" HREF="terminal_interface-curses__adb.htm#ref_999_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1005_7" HREF="terminal_interface-curses__adb.htm#ref_1000_7">Do_Leave</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_57">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1172_14" HREF="terminal_interface-curses__adb.htm#ref_999_14">Leave_Cursor_After_Update</A></span>
+ (<span class="symbol"><A NAME="ref_1173_7" HREF="terminal_interface-curses__adb.htm#ref_1000_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1174_7" HREF="terminal_interface-curses__adb.htm#ref_1001_7">Do_Leave</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">leaveok()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1003_14">Leave_Cursor_After_Update</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1172_14">Leave_Cursor_After_Update</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_58"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1010_14" HREF="terminal_interface-curses__adb.htm#ref_1010_14">Immediate_Update_Mode</A></span>
- (<span class="symbol"><A NAME="ref_1011_7" HREF="terminal_interface-curses__adb.htm#ref_1011_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1012_7" HREF="terminal_interface-curses__adb.htm#ref_1012_7">Mode</A></span> : Boolean := False);
+ <span class="comment"><EM>-- <A NAME="AFU_58">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1179_14" HREF="terminal_interface-curses__adb.htm#ref_1011_14">Immediate_Update_Mode</A></span>
+ (<span class="symbol"><A NAME="ref_1180_7" HREF="terminal_interface-curses__adb.htm#ref_1012_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1181_7" HREF="terminal_interface-curses__adb.htm#ref_1013_7">Mode</A></span> : Boolean := False);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">immedok()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1010_14">Immediate_Update_Mode</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1179_14">Immediate_Update_Mode</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_59"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1017_14" HREF="terminal_interface-curses__adb.htm#ref_1020_14">Allow_Scrolling</A></span>
- (<span class="symbol"><A NAME="ref_1018_7" HREF="terminal_interface-curses__adb.htm#ref_1021_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1019_7" HREF="terminal_interface-curses__adb.htm#ref_1022_7">Mode</A></span> : Boolean := False);
+ <span class="comment"><EM>-- <A NAME="AFU_59">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1186_14" HREF="terminal_interface-curses__adb.htm#ref_1021_14">Allow_Scrolling</A></span>
+ (<span class="symbol"><A NAME="ref_1187_7" HREF="terminal_interface-curses__adb.htm#ref_1022_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1188_7" HREF="terminal_interface-curses__adb.htm#ref_1023_7">Mode</A></span> : Boolean := False);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">scrollok()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1017_14">Allow_Scrolling</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1186_14">Allow_Scrolling</A>);
- <b>function</b> <span class="symbol"><A NAME="ref_1023_13" HREF="terminal_interface-curses__adb.htm#ref_1032_13">Scrolling_Allowed</A></span> (<span class="symbol"><A NAME="ref_1023_32" HREF="terminal_interface-curses__adb.htm#ref_1032_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>) <b>return</b> Boolean;
+ <b>function</b> <span class="symbol"><A NAME="ref_1192_13" HREF="terminal_interface-curses__adb.htm#ref_1033_13">Scrolling_Allowed</A></span> (<span class="symbol"><A NAME="ref_1192_32" HREF="terminal_interface-curses__adb.htm#ref_1033_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>) <b>return</b> Boolean;
<span class="comment"><EM>-- There is no such function in the C interface.</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1023_13">Scrolling_Allowed</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1192_13">Scrolling_Allowed</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_60"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1028_14" HREF="terminal_interface-curses__adb.htm#ref_1041_14">Set_Scroll_Region</A></span>
- (<span class="symbol"><A NAME="ref_1029_7" HREF="terminal_interface-curses__adb.htm#ref_1042_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1030_7" HREF="terminal_interface-curses__adb.htm#ref_1043_7">Top_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1031_7" HREF="terminal_interface-curses__adb.htm#ref_1044_7">Bottom_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_60">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1197_14" HREF="terminal_interface-curses__adb.htm#ref_1042_14">Set_Scroll_Region</A></span>
+ (<span class="symbol"><A NAME="ref_1198_7" HREF="terminal_interface-curses__adb.htm#ref_1043_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1199_7" HREF="terminal_interface-curses__adb.htm#ref_1044_7">Top_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1200_7" HREF="terminal_interface-curses__adb.htm#ref_1045_7">Bottom_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">wsetscrreg()</A></EM></span>
<span class="comment"><EM>-- AKA: setscrreg()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1028_14">Set_Scroll_Region</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1197_14">Set_Scroll_Region</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_refresh.3x.html">curs_refresh.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_61"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1041_14" HREF="terminal_interface-curses__adb.htm#ref_1057_14">Update_Screen</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_61">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1210_14" HREF="terminal_interface-curses__adb.htm#ref_1059_14">Update_Screen</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">doupdate()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1041_14">Update_Screen</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1210_14">Update_Screen</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_62"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1046_14" HREF="terminal_interface-curses__adb.htm#ref_1067_14">Refresh</A></span> (<span class="symbol"><A NAME="ref_1046_23" HREF="terminal_interface-curses__adb.htm#ref_1067_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_62">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1215_14" HREF="terminal_interface-curses__adb.htm#ref_1069_14">Refresh</A></span> (<span class="symbol"><A NAME="ref_1215_23" HREF="terminal_interface-curses__adb.htm#ref_1069_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">wrefresh()</A></EM></span>
<span class="comment"><EM>-- There is an overloaded Refresh for Pads.</EM></span>
<span class="comment"><EM>-- The Inline pragma appears there</EM></span>
<span class="comment"><EM>-- AKA: refresh()</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_63"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1053_14" HREF="terminal_interface-curses__adb.htm#ref_1077_14">Refresh_Without_Update</A></span>
- (<span class="symbol"><A NAME="ref_1054_7" HREF="terminal_interface-curses__adb.htm#ref_1078_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_63">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1222_14" HREF="terminal_interface-curses__adb.htm#ref_1079_14">Refresh_Without_Update</A></span>
+ (<span class="symbol"><A NAME="ref_1223_7" HREF="terminal_interface-curses__adb.htm#ref_1080_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">wnoutrefresh()</A></EM></span>
<span class="comment"><EM>-- There is an overloaded Refresh_Without_Update for Pads.</EM></span>
<span class="comment"><EM>-- The Inline pragma appears there</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_64"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1060_14" HREF="terminal_interface-curses__adb.htm#ref_1088_14">Redraw</A></span> (<span class="symbol"><A NAME="ref_1060_22" HREF="terminal_interface-curses__adb.htm#ref_1088_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_64">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1229_14" HREF="terminal_interface-curses__adb.htm#ref_1090_14">Redraw</A></span> (<span class="symbol"><A NAME="ref_1229_22" HREF="terminal_interface-curses__adb.htm#ref_1090_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">redrawwin()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_65"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1064_14" HREF="terminal_interface-curses__adb.htm#ref_1098_14">Redraw</A></span> (<span class="symbol"><A NAME="ref_1064_22" HREF="terminal_interface-curses__adb.htm#ref_1099_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1065_22" HREF="terminal_interface-curses__adb.htm#ref_1100_7">Begin_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1066_22" HREF="terminal_interface-curses__adb.htm#ref_1101_7">Line_Count</A></span> : Positive);
+ <span class="comment"><EM>-- <A NAME="AFU_65">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1233_14" HREF="terminal_interface-curses__adb.htm#ref_1100_14">Redraw</A></span> (<span class="symbol"><A NAME="ref_1233_22" HREF="terminal_interface-curses__adb.htm#ref_1101_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1234_22" HREF="terminal_interface-curses__adb.htm#ref_1102_7">Begin_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1235_22" HREF="terminal_interface-curses__adb.htm#ref_1103_7">Line_Count</A></span> : Positive);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">wredrawln()</A></EM></span>
<b>pragma</b> Inline (Redraw);
@@ -1088,99 +1257,99 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_clear.3x.html">curs_clear.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_66"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1075_14" HREF="terminal_interface-curses__adb.htm#ref_1115_14">Erase</A></span> (<span class="symbol"><A NAME="ref_1075_21" HREF="terminal_interface-curses__adb.htm#ref_1115_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_66">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1244_14" HREF="terminal_interface-curses__adb.htm#ref_1118_14">Erase</A></span> (<span class="symbol"><A NAME="ref_1244_21" HREF="terminal_interface-curses__adb.htm#ref_1118_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">werase()</A></EM></span>
<span class="comment"><EM>-- AKA: erase()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1075_14">Erase</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1244_14">Erase</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_67"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1081_14" HREF="terminal_interface-curses__adb.htm#ref_1125_14">Clear</A></span>
- (<span class="symbol"><A NAME="ref_1082_7" HREF="terminal_interface-curses__adb.htm#ref_1125_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_67">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1250_14" HREF="terminal_interface-curses__adb.htm#ref_1128_14">Clear</A></span>
+ (<span class="symbol"><A NAME="ref_1251_7" HREF="terminal_interface-curses__adb.htm#ref_1128_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">wclear()</A></EM></span>
<span class="comment"><EM>-- AKA: clear()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1081_14">Clear</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1250_14">Clear</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_68"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1088_14" HREF="terminal_interface-curses__adb.htm#ref_1135_14">Clear_To_End_Of_Screen</A></span>
- (<span class="symbol"><A NAME="ref_1089_7" HREF="terminal_interface-curses__adb.htm#ref_1135_38">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_68">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1257_14" HREF="terminal_interface-curses__adb.htm#ref_1138_14">Clear_To_End_Of_Screen</A></span>
+ (<span class="symbol"><A NAME="ref_1258_7" HREF="terminal_interface-curses__adb.htm#ref_1138_38">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">wclrtobot()</A></EM></span>
<span class="comment"><EM>-- AKA: clrtobot()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1088_14">Clear_To_End_Of_Screen</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1257_14">Clear_To_End_Of_Screen</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_69"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1095_14" HREF="terminal_interface-curses__adb.htm#ref_1145_14">Clear_To_End_Of_Line</A></span>
- (<span class="symbol"><A NAME="ref_1096_7" HREF="terminal_interface-curses__adb.htm#ref_1145_36">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_69">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1264_14" HREF="terminal_interface-curses__adb.htm#ref_1148_14">Clear_To_End_Of_Line</A></span>
+ (<span class="symbol"><A NAME="ref_1265_7" HREF="terminal_interface-curses__adb.htm#ref_1148_36">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">wclrtoeol()</A></EM></span>
<span class="comment"><EM>-- AKA: clrtoeol()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1095_14">Clear_To_End_Of_Line</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1264_14">Clear_To_End_Of_Line</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_bkgd.3x.html">curs_bkgd.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_70"#2|</EM></span>
+ <span class="comment"><EM>-- <A NAME="AFU_70">|</A></EM></span>
<span class="comment"><EM>-- TODO: we could have Set_Background(Window; Character_Attribute_Set)</EM></span>
<span class="comment"><EM>-- because in C it is common to see bkgdset(A_BOLD) or</EM></span>
<span class="comment"><EM>-- bkgdset(COLOR_PAIR(n))</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1109_14" HREF="terminal_interface-curses__adb.htm#ref_1155_14">Set_Background</A></span>
- (<span class="symbol"><A NAME="ref_1110_7" HREF="terminal_interface-curses__adb.htm#ref_1156_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1111_7" HREF="terminal_interface-curses__adb.htm#ref_1157_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1278_14" HREF="terminal_interface-curses__adb.htm#ref_1158_14">Set_Background</A></span>
+ (<span class="symbol"><A NAME="ref_1279_7" HREF="terminal_interface-curses__adb.htm#ref_1159_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1280_7" HREF="terminal_interface-curses__adb.htm#ref_1160_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_bkgd.3x.html">wbkgdset()</A></EM></span>
<span class="comment"><EM>-- AKA: bkgdset()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1109_14">Set_Background</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1278_14">Set_Background</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_71"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1117_14" HREF="terminal_interface-curses__adb.htm#ref_1165_14">Change_Background</A></span>
- (<span class="symbol"><A NAME="ref_1118_7" HREF="terminal_interface-curses__adb.htm#ref_1166_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1119_7" HREF="terminal_interface-curses__adb.htm#ref_1167_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_71">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1286_14" HREF="terminal_interface-curses__adb.htm#ref_1168_14">Change_Background</A></span>
+ (<span class="symbol"><A NAME="ref_1287_7" HREF="terminal_interface-curses__adb.htm#ref_1169_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1288_7" HREF="terminal_interface-curses__adb.htm#ref_1170_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_bkgd.3x.html">wbkgd()</A></EM></span>
<span class="comment"><EM>-- AKA: bkgd()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1117_14">Change_Background</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1286_14">Change_Background</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_72"#2|</EM></span>
+ <span class="comment"><EM>-- <A NAME="AFU_72">|</A></EM></span>
<span class="comment"><EM>-- ? wbkgdget is not listed in curs_bkgd, getbkgd is thpough.</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1126_13" HREF="terminal_interface-curses__adb.htm#ref_1177_13">Get_Background</A></span> (<span class="symbol"><A NAME="ref_1126_29" HREF="terminal_interface-curses__adb.htm#ref_1177_29">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>;
+ <b>function</b> <span class="symbol"><A NAME="ref_1295_13" HREF="terminal_interface-curses__adb.htm#ref_1181_13">Get_Background</A></span> (<span class="symbol"><A NAME="ref_1295_29" HREF="terminal_interface-curses__adb.htm#ref_1181_29">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_bkgd.3x.html">wbkgdget()</A></EM></span>
<span class="comment"><EM>-- AKA: bkgdget()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1126_13">Get_Background</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1295_13">Get_Background</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_73"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1137_14" HREF="terminal_interface-curses__adb.htm#ref_1213_14">Untouch</A></span> (<span class="symbol"><A NAME="ref_1137_23" HREF="terminal_interface-curses__adb.htm#ref_1213_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_73">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1306_14" HREF="terminal_interface-curses__adb.htm#ref_1218_14">Untouch</A></span> (<span class="symbol"><A NAME="ref_1306_23" HREF="terminal_interface-curses__adb.htm#ref_1218_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">untouchwin()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1137_14">Untouch</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1306_14">Untouch</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_74"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1142_14" HREF="terminal_interface-curses__adb.htm#ref_1203_14">Touch</A></span> (<span class="symbol"><A NAME="ref_1142_21" HREF="terminal_interface-curses__adb.htm#ref_1203_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_74">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1311_14" HREF="terminal_interface-curses__adb.htm#ref_1208_14">Touch</A></span> (<span class="symbol"><A NAME="ref_1311_21" HREF="terminal_interface-curses__adb.htm#ref_1208_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">touchwin()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_75"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1146_14" HREF="terminal_interface-curses__adb.htm#ref_1223_14">Touch</A></span> (<span class="symbol"><A NAME="ref_1146_21" HREF="terminal_interface-curses__adb.htm#ref_1223_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1147_21" HREF="terminal_interface-curses__adb.htm#ref_1224_21">Start</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1148_21" HREF="terminal_interface-curses__adb.htm#ref_1225_21">Count</A></span> : Positive);
+ <span class="comment"><EM>-- <A NAME="AFU_75">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1315_14" HREF="terminal_interface-curses__adb.htm#ref_1228_14">Touch</A></span> (<span class="symbol"><A NAME="ref_1315_21" HREF="terminal_interface-curses__adb.htm#ref_1228_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1316_21" HREF="terminal_interface-curses__adb.htm#ref_1229_21">Start</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1317_21" HREF="terminal_interface-curses__adb.htm#ref_1230_21">Count</A></span> : Positive);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">touchline()</A></EM></span>
<b>pragma</b> Inline (Touch);
- <span class="comment"><EM>-- #1A NAME="AFU_76"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1153_14" HREF="terminal_interface-curses__adb.htm#ref_1186_14">Change_Lines_Status</A></span> (<span class="symbol"><A NAME="ref_1153_35" HREF="terminal_interface-curses__adb.htm#ref_1186_35">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1154_35" HREF="terminal_interface-curses__adb.htm#ref_1187_35">Start</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1155_35" HREF="terminal_interface-curses__adb.htm#ref_1188_35">Count</A></span> : Positive;
- <span class="symbol"><A NAME="ref_1156_35" HREF="terminal_interface-curses__adb.htm#ref_1189_35">State</A></span> : Boolean);
+ <span class="comment"><EM>-- <A NAME="AFU_76">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1322_14" HREF="terminal_interface-curses__adb.htm#ref_1190_14">Change_Lines_Status</A></span> (<span class="symbol"><A NAME="ref_1322_35" HREF="terminal_interface-curses__adb.htm#ref_1190_35">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1323_35" HREF="terminal_interface-curses__adb.htm#ref_1191_35">Start</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1324_35" HREF="terminal_interface-curses__adb.htm#ref_1192_35">Count</A></span> : Positive;
+ <span class="symbol"><A NAME="ref_1325_35" HREF="terminal_interface-curses__adb.htm#ref_1193_35">State</A></span> : Boolean);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">wtouchln()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1153_14">Change_Lines_Status</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1322_14">Change_Lines_Status</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_77"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1161_13" HREF="terminal_interface-curses__adb.htm#ref_1231_13">Is_Touched</A></span> (<span class="symbol"><A NAME="ref_1161_25" HREF="terminal_interface-curses__adb.htm#ref_1232_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1162_25" HREF="terminal_interface-curses__adb.htm#ref_1233_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>) <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_77">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1330_13" HREF="terminal_interface-curses__adb.htm#ref_1236_13">Is_Touched</A></span> (<span class="symbol"><A NAME="ref_1330_25" HREF="terminal_interface-curses__adb.htm#ref_1237_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1331_25" HREF="terminal_interface-curses__adb.htm#ref_1238_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>) <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">is_linetouched()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_78"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1166_13" HREF="terminal_interface-curses__adb.htm#ref_1245_13">Is_Touched</A></span> (<span class="symbol"><A NAME="ref_1166_25" HREF="terminal_interface-curses__adb.htm#ref_1246_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>) <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_78">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1335_13" HREF="terminal_interface-curses__adb.htm#ref_1250_13">Is_Touched</A></span> (<span class="symbol"><A NAME="ref_1335_25" HREF="terminal_interface-curses__adb.htm#ref_1251_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>) <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">is_wintouched()</A></EM></span>
<b>pragma</b> Inline (Is_Touched);
@@ -1188,176 +1357,176 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_overlay.3x.html">curs_overlay.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_79"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1175_14" HREF="terminal_interface-curses__adb.htm#ref_1258_14">Copy</A></span>
- (<span class="symbol"><A NAME="ref_1176_7" HREF="terminal_interface-curses__adb.htm#ref_1259_7">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1177_7" HREF="terminal_interface-curses__adb.htm#ref_1260_7">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1178_7" HREF="terminal_interface-curses__adb.htm#ref_1261_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1179_7" HREF="terminal_interface-curses__adb.htm#ref_1262_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1180_7" HREF="terminal_interface-curses__adb.htm#ref_1263_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1181_7" HREF="terminal_interface-curses__adb.htm#ref_1264_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1182_7" HREF="terminal_interface-curses__adb.htm#ref_1265_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1183_7" HREF="terminal_interface-curses__adb.htm#ref_1266_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1184_7" HREF="terminal_interface-curses__adb.htm#ref_1267_7">Non_Destructive_Mode</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_79">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1344_14" HREF="terminal_interface-curses__adb.htm#ref_1263_14">Copy</A></span>
+ (<span class="symbol"><A NAME="ref_1345_7" HREF="terminal_interface-curses__adb.htm#ref_1264_7">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1346_7" HREF="terminal_interface-curses__adb.htm#ref_1265_7">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1347_7" HREF="terminal_interface-curses__adb.htm#ref_1266_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1348_7" HREF="terminal_interface-curses__adb.htm#ref_1267_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1349_7" HREF="terminal_interface-curses__adb.htm#ref_1268_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1350_7" HREF="terminal_interface-curses__adb.htm#ref_1269_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1351_7" HREF="terminal_interface-curses__adb.htm#ref_1270_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1352_7" HREF="terminal_interface-curses__adb.htm#ref_1271_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1353_7" HREF="terminal_interface-curses__adb.htm#ref_1272_7">Non_Destructive_Mode</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_overlay.3x.html">copywin()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1175_14">Copy</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1344_14">Copy</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_80"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1189_14" HREF="terminal_interface-curses__adb.htm#ref_1294_14">Overwrite</A></span> (<span class="symbol"><A NAME="ref_1189_25" HREF="terminal_interface-curses__adb.htm#ref_1295_7">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1190_25" HREF="terminal_interface-curses__adb.htm#ref_1296_7">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_80">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1358_14" HREF="terminal_interface-curses__adb.htm#ref_1300_14">Overwrite</A></span> (<span class="symbol"><A NAME="ref_1358_25" HREF="terminal_interface-curses__adb.htm#ref_1301_7">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1359_25" HREF="terminal_interface-curses__adb.htm#ref_1302_7">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_overlay.3x.html">overwrite()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1189_14">Overwrite</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1358_14">Overwrite</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_81"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1195_14" HREF="terminal_interface-curses__adb.htm#ref_1306_14">Overlay</A></span> (<span class="symbol"><A NAME="ref_1195_23" HREF="terminal_interface-curses__adb.htm#ref_1307_7">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1196_23" HREF="terminal_interface-curses__adb.htm#ref_1308_7">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_81">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1364_14" HREF="terminal_interface-curses__adb.htm#ref_1312_14">Overlay</A></span> (<span class="symbol"><A NAME="ref_1364_23" HREF="terminal_interface-curses__adb.htm#ref_1313_7">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1365_23" HREF="terminal_interface-curses__adb.htm#ref_1314_7">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_overlay.3x.html">overlay()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1195_14">Overlay</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1364_14">Overlay</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_deleteln.3x.html">curs_deleteln.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_82"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1205_14" HREF="terminal_interface-curses__adb.htm#ref_1319_14">Insert_Delete_Lines</A></span>
- (<span class="symbol"><A NAME="ref_1206_7" HREF="terminal_interface-curses__adb.htm#ref_1320_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1207_7" HREF="terminal_interface-curses__adb.htm#ref_1321_7">Lines</A></span> : Integer := 1); <span class="comment"><EM>-- default is to insert one line above</EM></span>
+ <span class="comment"><EM>-- <A NAME="AFU_82">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1374_14" HREF="terminal_interface-curses__adb.htm#ref_1325_14">Insert_Delete_Lines</A></span>
+ (<span class="symbol"><A NAME="ref_1375_7" HREF="terminal_interface-curses__adb.htm#ref_1326_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1376_7" HREF="terminal_interface-curses__adb.htm#ref_1327_7">Lines</A></span> : Integer := 1); <span class="comment"><EM>-- default is to insert one line above</EM></span>
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_deleteln.3x.html">winsdelln()</A></EM></span>
<span class="comment"><EM>-- AKA: insdelln()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1205_14">Insert_Delete_Lines</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1374_14">Insert_Delete_Lines</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_83"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1213_14" HREF="terminal_interface-curses__adb.htm#ref_1331_14">Delete_Line</A></span> (<span class="symbol"><A NAME="ref_1213_27" HREF="terminal_interface-curses__adb.htm#ref_1331_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_83">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1382_14" HREF="terminal_interface-curses__adb.htm#ref_1337_14">Delete_Line</A></span> (<span class="symbol"><A NAME="ref_1382_27" HREF="terminal_interface-curses__adb.htm#ref_1337_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_deleteln.3x.html">wdeleteln()</A></EM></span>
<span class="comment"><EM>-- AKA: deleteln()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1213_14">Delete_Line</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1382_14">Delete_Line</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_84"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1219_14" HREF="terminal_interface-curses__adb.htm#ref_1337_14">Insert_Line</A></span> (<span class="symbol"><A NAME="ref_1219_27" HREF="terminal_interface-curses__adb.htm#ref_1337_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_84">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1388_14" HREF="terminal_interface-curses__adb.htm#ref_1343_14">Insert_Line</A></span> (<span class="symbol"><A NAME="ref_1388_27" HREF="terminal_interface-curses__adb.htm#ref_1343_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_deleteln.3x.html">winsertln()</A></EM></span>
<span class="comment"><EM>-- AKA: insertln()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1219_14">Insert_Line</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1388_14">Insert_Line</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_getyx.3x.html">curs_getyx.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_85"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1229_14" HREF="terminal_interface-curses__adb.htm#ref_1344_14">Get_Size</A></span>
- (<span class="symbol"><A NAME="ref_1230_7" HREF="terminal_interface-curses__adb.htm#ref_1345_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1231_7" HREF="terminal_interface-curses__adb.htm#ref_1346_7">Number_Of_Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_1232_7" HREF="terminal_interface-curses__adb.htm#ref_1347_7">Number_Of_Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_85">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1398_14" HREF="terminal_interface-curses__adb.htm#ref_1350_14">Get_Size</A></span>
+ (<span class="symbol"><A NAME="ref_1399_7" HREF="terminal_interface-curses__adb.htm#ref_1351_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1400_7" HREF="terminal_interface-curses__adb.htm#ref_1352_7">Number_Of_Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_1401_7" HREF="terminal_interface-curses__adb.htm#ref_1353_7">Number_Of_Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getmaxyx()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1229_14">Get_Size</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1398_14">Get_Size</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_86"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1237_14" HREF="terminal_interface-curses__adb.htm#ref_1362_14">Get_Window_Position</A></span>
- (<span class="symbol"><A NAME="ref_1238_7" HREF="terminal_interface-curses__adb.htm#ref_1363_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1239_7" HREF="terminal_interface-curses__adb.htm#ref_1364_7">Top_Left_Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1240_7" HREF="terminal_interface-curses__adb.htm#ref_1365_7">Top_Left_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_86">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1406_14" HREF="terminal_interface-curses__adb.htm#ref_1368_14">Get_Window_Position</A></span>
+ (<span class="symbol"><A NAME="ref_1407_7" HREF="terminal_interface-curses__adb.htm#ref_1369_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1408_7" HREF="terminal_interface-curses__adb.htm#ref_1370_7">Top_Left_Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1409_7" HREF="terminal_interface-curses__adb.htm#ref_1371_7">Top_Left_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getbegyx()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1237_14">Get_Window_Position</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1406_14">Get_Window_Position</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_87"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1245_14" HREF="terminal_interface-curses__adb.htm#ref_1380_14">Get_Cursor_Position</A></span>
- (<span class="symbol"><A NAME="ref_1246_7" HREF="terminal_interface-curses__adb.htm#ref_1381_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1247_7" HREF="terminal_interface-curses__adb.htm#ref_1382_7">Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1248_7" HREF="terminal_interface-curses__adb.htm#ref_1383_7">Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_87">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1414_14" HREF="terminal_interface-curses__adb.htm#ref_1386_14">Get_Cursor_Position</A></span>
+ (<span class="symbol"><A NAME="ref_1415_7" HREF="terminal_interface-curses__adb.htm#ref_1387_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1416_7" HREF="terminal_interface-curses__adb.htm#ref_1388_7">Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1417_7" HREF="terminal_interface-curses__adb.htm#ref_1389_7">Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getyx()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1245_14">Get_Cursor_Position</A>);
-
- <span class="comment"><EM>-- #1A NAME="AFU_88"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1253_14" HREF="terminal_interface-curses__adb.htm#ref_1398_14">Get_Origin_Relative_To_Parent</A></span>
- (<span class="symbol"><A NAME="ref_1254_7" HREF="terminal_interface-curses__adb.htm#ref_1399_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1255_7" HREF="terminal_interface-curses__adb.htm#ref_1400_7">Top_Left_Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1256_7" HREF="terminal_interface-curses__adb.htm#ref_1401_7">Top_Left_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1257_7" HREF="terminal_interface-curses__adb.htm#ref_1402_7">Is_Not_A_Subwindow</A></span> : <b>out</b> Boolean);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1414_14">Get_Cursor_Position</A>);
+
+ <span class="comment"><EM>-- <A NAME="AFU_88">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1422_14" HREF="terminal_interface-curses__adb.htm#ref_1404_14">Get_Origin_Relative_To_Parent</A></span>
+ (<span class="symbol"><A NAME="ref_1423_7" HREF="terminal_interface-curses__adb.htm#ref_1405_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1424_7" HREF="terminal_interface-curses__adb.htm#ref_1406_7">Top_Left_Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1425_7" HREF="terminal_interface-curses__adb.htm#ref_1407_7">Top_Left_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1426_7" HREF="terminal_interface-curses__adb.htm#ref_1408_7">Is_Not_A_Subwindow</A></span> : <b>out</b> Boolean);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getparyx()</A></EM></span>
<span class="comment"><EM>-- Instead of placing -1 in the coordinates as return, we use a Boolean</EM></span>
<span class="comment"><EM>-- to return the info that the window has no parent.</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1253_14">Get_Origin_Relative_To_Parent</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1422_14">Get_Origin_Relative_To_Parent</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_pad.3x.html">curs_pad.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_89"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1268_13" HREF="terminal_interface-curses__adb.htm#ref_1424_13">New_Pad</A></span> (<span class="symbol"><A NAME="ref_1268_22" HREF="terminal_interface-curses__adb.htm#ref_1424_22">Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_1269_22" HREF="terminal_interface-curses__adb.htm#ref_1425_22">Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_89">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1437_13" HREF="terminal_interface-curses__adb.htm#ref_1430_13">New_Pad</A></span> (<span class="symbol"><A NAME="ref_1437_22" HREF="terminal_interface-curses__adb.htm#ref_1430_22">Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_1438_22" HREF="terminal_interface-curses__adb.htm#ref_1431_22">Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">newpad()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1268_13">New_Pad</A>);
-
- <span class="comment"><EM>-- #1A NAME="AFU_90"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1274_13" HREF="terminal_interface-curses__adb.htm#ref_1439_13">Sub_Pad</A></span>
- (<span class="symbol"><A NAME="ref_1275_7" HREF="terminal_interface-curses__adb.htm#ref_1440_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1276_7" HREF="terminal_interface-curses__adb.htm#ref_1441_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_1277_7" HREF="terminal_interface-curses__adb.htm#ref_1442_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>;
- <span class="symbol"><A NAME="ref_1278_7" HREF="terminal_interface-curses__adb.htm#ref_1443_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1279_7" HREF="terminal_interface-curses__adb.htm#ref_1444_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1437_13">New_Pad</A>);
+
+ <span class="comment"><EM>-- <A NAME="AFU_90">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1443_13" HREF="terminal_interface-curses__adb.htm#ref_1445_13">Sub_Pad</A></span>
+ (<span class="symbol"><A NAME="ref_1444_7" HREF="terminal_interface-curses__adb.htm#ref_1446_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1445_7" HREF="terminal_interface-curses__adb.htm#ref_1447_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_1446_7" HREF="terminal_interface-curses__adb.htm#ref_1448_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>;
+ <span class="symbol"><A NAME="ref_1447_7" HREF="terminal_interface-curses__adb.htm#ref_1449_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1448_7" HREF="terminal_interface-curses__adb.htm#ref_1450_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">subpad()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1274_13">Sub_Pad</A>);
-
- <span class="comment"><EM>-- #1A NAME="AFU_91"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1284_14" HREF="terminal_interface-curses__adb.htm#ref_1467_14">Refresh</A></span>
- (<span class="symbol"><A NAME="ref_1285_7" HREF="terminal_interface-curses__adb.htm#ref_1468_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1286_7" HREF="terminal_interface-curses__adb.htm#ref_1469_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1287_7" HREF="terminal_interface-curses__adb.htm#ref_1470_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1288_7" HREF="terminal_interface-curses__adb.htm#ref_1471_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1289_7" HREF="terminal_interface-curses__adb.htm#ref_1472_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1290_7" HREF="terminal_interface-curses__adb.htm#ref_1473_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1291_7" HREF="terminal_interface-curses__adb.htm#ref_1474_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1443_13">Sub_Pad</A>);
+
+ <span class="comment"><EM>-- <A NAME="AFU_91">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1453_14" HREF="terminal_interface-curses__adb.htm#ref_1473_14">Refresh</A></span>
+ (<span class="symbol"><A NAME="ref_1454_7" HREF="terminal_interface-curses__adb.htm#ref_1474_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1455_7" HREF="terminal_interface-curses__adb.htm#ref_1475_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1456_7" HREF="terminal_interface-curses__adb.htm#ref_1476_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1457_7" HREF="terminal_interface-curses__adb.htm#ref_1477_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1458_7" HREF="terminal_interface-curses__adb.htm#ref_1478_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1459_7" HREF="terminal_interface-curses__adb.htm#ref_1479_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1460_7" HREF="terminal_interface-curses__adb.htm#ref_1480_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">prefresh()</A></EM></span>
<b>pragma</b> Inline (Refresh);
- <span class="comment"><EM>-- #1A NAME="AFU_92"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1296_14" HREF="terminal_interface-curses__adb.htm#ref_1497_14">Refresh_Without_Update</A></span>
- (<span class="symbol"><A NAME="ref_1297_7" HREF="terminal_interface-curses__adb.htm#ref_1498_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1298_7" HREF="terminal_interface-curses__adb.htm#ref_1499_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1299_7" HREF="terminal_interface-curses__adb.htm#ref_1500_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1300_7" HREF="terminal_interface-curses__adb.htm#ref_1501_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1301_7" HREF="terminal_interface-curses__adb.htm#ref_1502_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1302_7" HREF="terminal_interface-curses__adb.htm#ref_1503_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1303_7" HREF="terminal_interface-curses__adb.htm#ref_1504_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_92">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1465_14" HREF="terminal_interface-curses__adb.htm#ref_1504_14">Refresh_Without_Update</A></span>
+ (<span class="symbol"><A NAME="ref_1466_7" HREF="terminal_interface-curses__adb.htm#ref_1505_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1467_7" HREF="terminal_interface-curses__adb.htm#ref_1506_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1468_7" HREF="terminal_interface-curses__adb.htm#ref_1507_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1469_7" HREF="terminal_interface-curses__adb.htm#ref_1508_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1470_7" HREF="terminal_interface-curses__adb.htm#ref_1509_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1471_7" HREF="terminal_interface-curses__adb.htm#ref_1510_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1472_7" HREF="terminal_interface-curses__adb.htm#ref_1511_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">pnoutrefresh()</A></EM></span>
<b>pragma</b> Inline (Refresh_Without_Update);
- <span class="comment"><EM>-- #1A NAME="AFU_93"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1308_14" HREF="terminal_interface-curses__adb.htm#ref_1527_14">Add_Character_To_Pad_And_Echo_It</A></span>
- (<span class="symbol"><A NAME="ref_1309_7" HREF="terminal_interface-curses__adb.htm#ref_1528_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1310_7" HREF="terminal_interface-curses__adb.htm#ref_1529_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_93">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1477_14" HREF="terminal_interface-curses__adb.htm#ref_1535_14">Add_Character_To_Pad_And_Echo_It</A></span>
+ (<span class="symbol"><A NAME="ref_1478_7" HREF="terminal_interface-curses__adb.htm#ref_1536_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1479_7" HREF="terminal_interface-curses__adb.htm#ref_1537_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">pechochar()</A></EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1313_14" HREF="terminal_interface-curses__adb.htm#ref_1540_14">Add_Character_To_Pad_And_Echo_It</A></span>
- (<span class="symbol"><A NAME="ref_1314_7" HREF="terminal_interface-curses__adb.htm#ref_1541_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1315_7" HREF="terminal_interface-curses__adb.htm#ref_1542_7">Ch</A></span> : Character);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1482_14" HREF="terminal_interface-curses__adb.htm#ref_1548_14">Add_Character_To_Pad_And_Echo_It</A></span>
+ (<span class="symbol"><A NAME="ref_1483_7" HREF="terminal_interface-curses__adb.htm#ref_1549_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1484_7" HREF="terminal_interface-curses__adb.htm#ref_1550_7">Ch</A></span> : Character);
<b>pragma</b> Inline (Add_Character_To_Pad_And_Echo_It);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_scroll.3x.html">curs_scroll.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_94"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1323_14" HREF="terminal_interface-curses__adb.htm#ref_1552_14">Scroll</A></span> (<span class="symbol"><A NAME="ref_1323_22" HREF="terminal_interface-curses__adb.htm#ref_1552_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1324_22" HREF="terminal_interface-curses__adb.htm#ref_1553_22">Amount</A></span> : Integer := 1);
+ <span class="comment"><EM>-- <A NAME="AFU_94">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1492_14" HREF="terminal_interface-curses__adb.htm#ref_1560_14">Scroll</A></span> (<span class="symbol"><A NAME="ref_1492_22" HREF="terminal_interface-curses__adb.htm#ref_1560_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1493_22" HREF="terminal_interface-curses__adb.htm#ref_1561_22">Amount</A></span> : Integer := 1);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_scroll.3x.html">wscrl()</A></EM></span>
<span class="comment"><EM>-- AKA: scroll()</EM></span>
<span class="comment"><EM>-- AKA: scrl()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1323_14">Scroll</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1492_14">Scroll</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_delch.3x.html">curs_delch.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_95"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1335_14" HREF="terminal_interface-curses__adb.htm#ref_1565_14">Delete_Character</A></span> (<span class="symbol"><A NAME="ref_1335_32" HREF="terminal_interface-curses__adb.htm#ref_1565_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_95">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1504_14" HREF="terminal_interface-curses__adb.htm#ref_1573_14">Delete_Character</A></span> (<span class="symbol"><A NAME="ref_1504_32" HREF="terminal_interface-curses__adb.htm#ref_1573_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_delch.3x.html">wdelch()</A></EM></span>
<span class="comment"><EM>-- AKA: delch()</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_96"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1340_14" HREF="terminal_interface-curses__adb.htm#ref_1575_14">Delete_Character</A></span>
- (<span class="symbol"><A NAME="ref_1341_7" HREF="terminal_interface-curses__adb.htm#ref_1576_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1342_7" HREF="terminal_interface-curses__adb.htm#ref_1577_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1343_7" HREF="terminal_interface-curses__adb.htm#ref_1578_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_96">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1509_14" HREF="terminal_interface-curses__adb.htm#ref_1583_14">Delete_Character</A></span>
+ (<span class="symbol"><A NAME="ref_1510_7" HREF="terminal_interface-curses__adb.htm#ref_1584_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1511_7" HREF="terminal_interface-curses__adb.htm#ref_1585_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1512_7" HREF="terminal_interface-curses__adb.htm#ref_1586_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_delch.3x.html">mvwdelch()</A></EM></span>
<span class="comment"><EM>-- AKA: mvdelch()</EM></span>
<b>pragma</b> Inline (Delete_Character);
@@ -1366,17 +1535,17 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_inch.3x.html">curs_inch.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_97"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1353_13" HREF="terminal_interface-curses__adb.htm#ref_1590_13">Peek</A></span> (<span class="symbol"><A NAME="ref_1353_19" HREF="terminal_interface-curses__adb.htm#ref_1590_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>)
- <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_97">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1522_13" HREF="terminal_interface-curses__adb.htm#ref_1598_13">Peek</A></span> (<span class="symbol"><A NAME="ref_1522_19" HREF="terminal_interface-curses__adb.htm#ref_1598_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<span class="comment"><EM>-- AKA: inch()</EM></span>
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_inch.3x.html">winch()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_98"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1359_13" HREF="terminal_interface-curses__adb.htm#ref_1599_13">Peek</A></span>
- (<span class="symbol"><A NAME="ref_1360_7" HREF="terminal_interface-curses__adb.htm#ref_1600_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1361_7" HREF="terminal_interface-curses__adb.htm#ref_1601_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1362_7" HREF="terminal_interface-curses__adb.htm#ref_1602_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_98">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1528_13" HREF="terminal_interface-curses__adb.htm#ref_1607_13">Peek</A></span>
+ (<span class="symbol"><A NAME="ref_1529_7" HREF="terminal_interface-curses__adb.htm#ref_1608_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1530_7" HREF="terminal_interface-curses__adb.htm#ref_1609_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1531_7" HREF="terminal_interface-curses__adb.htm#ref_1610_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_inch.3x.html">mvwinch()</A></EM></span>
<span class="comment"><EM>-- AKA: mvinch()</EM></span>
<span class="comment"><EM>-- More Peek's follow, pragma Inline appears later.</EM></span>
@@ -1385,17 +1554,17 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_insch.3x.html">curs_insch.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_99"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1372_14" HREF="terminal_interface-curses__adb.htm#ref_1612_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1372_22" HREF="terminal_interface-curses__adb.htm#ref_1612_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1373_22" HREF="terminal_interface-curses__adb.htm#ref_1613_22">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_99">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1541_14" HREF="terminal_interface-curses__adb.htm#ref_1620_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1541_22" HREF="terminal_interface-curses__adb.htm#ref_1620_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1542_22" HREF="terminal_interface-curses__adb.htm#ref_1621_22">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_insch.3x.html">winsch()</A></EM></span>
<span class="comment"><EM>-- AKA: insch()</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_100"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1378_14" HREF="terminal_interface-curses__adb.htm#ref_1623_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1378_22" HREF="terminal_interface-curses__adb.htm#ref_1624_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1379_22" HREF="terminal_interface-curses__adb.htm#ref_1625_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1380_22" HREF="terminal_interface-curses__adb.htm#ref_1626_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1381_22" HREF="terminal_interface-curses__adb.htm#ref_1627_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_100">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1547_14" HREF="terminal_interface-curses__adb.htm#ref_1631_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1547_22" HREF="terminal_interface-curses__adb.htm#ref_1632_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1548_22" HREF="terminal_interface-curses__adb.htm#ref_1633_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1549_22" HREF="terminal_interface-curses__adb.htm#ref_1634_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1550_22" HREF="terminal_interface-curses__adb.htm#ref_1635_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_insch.3x.html">mvwinsch()</A></EM></span>
<span class="comment"><EM>-- AKA: mvinsch()</EM></span>
@@ -1403,21 +1572,21 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_insstr.3x.html">curs_insstr.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_101"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1390_14" HREF="terminal_interface-curses__adb.htm#ref_1643_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1390_22" HREF="terminal_interface-curses__adb.htm#ref_1643_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1391_22" HREF="terminal_interface-curses__adb.htm#ref_1644_22">Str</A></span> : String;
- <span class="symbol"><A NAME="ref_1392_22" HREF="terminal_interface-curses__adb.htm#ref_1645_22">Len</A></span> : Integer := -1);
+ <span class="comment"><EM>-- <A NAME="AFU_101">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1559_14" HREF="terminal_interface-curses__adb.htm#ref_1652_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1559_22" HREF="terminal_interface-curses__adb.htm#ref_1652_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1560_22" HREF="terminal_interface-curses__adb.htm#ref_1653_22">Str</A></span> : String;
+ <span class="symbol"><A NAME="ref_1561_22" HREF="terminal_interface-curses__adb.htm#ref_1654_22">Len</A></span> : Integer := -1);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_insstr.3x.html">winsnstr()</A></EM></span>
<span class="comment"><EM>-- AKA: winsstr()</EM></span>
<span class="comment"><EM>-- AKA: insnstr()</EM></span>
<span class="comment"><EM>-- AKA: insstr()</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_102"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1399_14" HREF="terminal_interface-curses__adb.htm#ref_1661_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1399_22" HREF="terminal_interface-curses__adb.htm#ref_1662_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1400_22" HREF="terminal_interface-curses__adb.htm#ref_1663_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1401_22" HREF="terminal_interface-curses__adb.htm#ref_1664_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1402_22" HREF="terminal_interface-curses__adb.htm#ref_1665_7">Str</A></span> : String;
- <span class="symbol"><A NAME="ref_1403_22" HREF="terminal_interface-curses__adb.htm#ref_1666_7">Len</A></span> : Integer := -1);
+ <span class="comment"><EM>-- <A NAME="AFU_102">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1568_14" HREF="terminal_interface-curses__adb.htm#ref_1670_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1568_22" HREF="terminal_interface-curses__adb.htm#ref_1671_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1569_22" HREF="terminal_interface-curses__adb.htm#ref_1672_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1570_22" HREF="terminal_interface-curses__adb.htm#ref_1673_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1571_22" HREF="terminal_interface-curses__adb.htm#ref_1674_7">Str</A></span> : String;
+ <span class="symbol"><A NAME="ref_1572_22" HREF="terminal_interface-curses__adb.htm#ref_1675_7">Len</A></span> : Integer := -1);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_insstr.3x.html">mvwinsnstr()</A></EM></span>
<span class="comment"><EM>-- AKA: mvwinsstr()</EM></span>
<span class="comment"><EM>-- AKA: mvinsnstr()</EM></span>
@@ -1428,21 +1597,21 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_instr.3x.html">curs_instr.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_103"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1415_14" HREF="terminal_interface-curses__adb.htm#ref_1685_14">Peek</A></span> (<span class="symbol"><A NAME="ref_1415_20" HREF="terminal_interface-curses__adb.htm#ref_1685_20">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1416_20" HREF="terminal_interface-curses__adb.htm#ref_1686_20">Str</A></span> : <b>out</b> String;
- <span class="symbol"><A NAME="ref_1417_20" HREF="terminal_interface-curses__adb.htm#ref_1687_20">Len</A></span> : Integer := -1);
+ <span class="comment"><EM>-- <A NAME="AFU_103">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1584_14" HREF="terminal_interface-curses__adb.htm#ref_1695_14">Peek</A></span> (<span class="symbol"><A NAME="ref_1584_20" HREF="terminal_interface-curses__adb.htm#ref_1695_20">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1585_20" HREF="terminal_interface-curses__adb.htm#ref_1696_20">Str</A></span> : <b>out</b> String;
+ <span class="symbol"><A NAME="ref_1586_20" HREF="terminal_interface-curses__adb.htm#ref_1697_20">Len</A></span> : Integer := -1);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_instr.3x.html">winnstr()</A></EM></span>
<span class="comment"><EM>-- AKA: winstr()</EM></span>
<span class="comment"><EM>-- AKA: innstr()</EM></span>
<span class="comment"><EM>-- AKA: instr()</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_104"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1424_14" HREF="terminal_interface-curses__adb.htm#ref_1714_14">Peek</A></span> (<span class="symbol"><A NAME="ref_1424_20" HREF="terminal_interface-curses__adb.htm#ref_1715_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1425_20" HREF="terminal_interface-curses__adb.htm#ref_1716_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1426_20" HREF="terminal_interface-curses__adb.htm#ref_1717_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1427_20" HREF="terminal_interface-curses__adb.htm#ref_1718_7">Str</A></span> : <b>out</b> String;
- <span class="symbol"><A NAME="ref_1428_20" HREF="terminal_interface-curses__adb.htm#ref_1719_7">Len</A></span> : Integer := -1);
+ <span class="comment"><EM>-- <A NAME="AFU_104">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1593_14" HREF="terminal_interface-curses__adb.htm#ref_1724_14">Peek</A></span> (<span class="symbol"><A NAME="ref_1593_20" HREF="terminal_interface-curses__adb.htm#ref_1725_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1594_20" HREF="terminal_interface-curses__adb.htm#ref_1726_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1595_20" HREF="terminal_interface-curses__adb.htm#ref_1727_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1596_20" HREF="terminal_interface-curses__adb.htm#ref_1728_7">Str</A></span> : <b>out</b> String;
+ <span class="symbol"><A NAME="ref_1597_20" HREF="terminal_interface-curses__adb.htm#ref_1729_7">Len</A></span> : Integer := -1);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_instr.3x.html">mvwinnstr()</A></EM></span>
<span class="comment"><EM>-- AKA: mvwinstr()</EM></span>
<span class="comment"><EM>-- AKA: mvinnstr()</EM></span>
@@ -1452,21 +1621,21 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_inchstr.3x.html">curs_inchstr.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_105"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1439_14" HREF="terminal_interface-curses__adb.htm#ref_1726_14">Peek</A></span> (<span class="symbol"><A NAME="ref_1439_20" HREF="terminal_interface-curses__adb.htm#ref_1727_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1440_20" HREF="terminal_interface-curses__adb.htm#ref_1728_7">Str</A></span> : <b>out</b> Attributed_String;
- <span class="symbol"><A NAME="ref_1441_20" HREF="terminal_interface-curses__adb.htm#ref_1729_7">Len</A></span> : Integer := -1);
+ <span class="comment"><EM>-- <A NAME="AFU_105">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1608_14" HREF="terminal_interface-curses__adb.htm#ref_1736_14">Peek</A></span> (<span class="symbol"><A NAME="ref_1608_20" HREF="terminal_interface-curses__adb.htm#ref_1737_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1609_20" HREF="terminal_interface-curses__adb.htm#ref_1738_7">Str</A></span> : <b>out</b> Attributed_String;
+ <span class="symbol"><A NAME="ref_1610_20" HREF="terminal_interface-curses__adb.htm#ref_1739_7">Len</A></span> : Integer := -1);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_inchstr.3x.html">winchnstr()</A></EM></span>
<span class="comment"><EM>-- AKA: winchstr()</EM></span>
<span class="comment"><EM>-- AKA: inchnstr()</EM></span>
<span class="comment"><EM>-- AKA: inchstr()</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_106"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1448_14" HREF="terminal_interface-curses__adb.htm#ref_1763_14">Peek</A></span> (<span class="symbol"><A NAME="ref_1448_20" HREF="terminal_interface-curses__adb.htm#ref_1764_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1449_20" HREF="terminal_interface-curses__adb.htm#ref_1765_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1450_20" HREF="terminal_interface-curses__adb.htm#ref_1766_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1451_20" HREF="terminal_interface-curses__adb.htm#ref_1767_7">Str</A></span> : <b>out</b> Attributed_String;
- <span class="symbol"><A NAME="ref_1452_20" HREF="terminal_interface-curses__adb.htm#ref_1768_7">Len</A></span> : Integer := -1);
+ <span class="comment"><EM>-- <A NAME="AFU_106">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1617_14" HREF="terminal_interface-curses__adb.htm#ref_1773_14">Peek</A></span> (<span class="symbol"><A NAME="ref_1617_20" HREF="terminal_interface-curses__adb.htm#ref_1774_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1618_20" HREF="terminal_interface-curses__adb.htm#ref_1775_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1619_20" HREF="terminal_interface-curses__adb.htm#ref_1776_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1620_20" HREF="terminal_interface-curses__adb.htm#ref_1777_7">Str</A></span> : <b>out</b> Attributed_String;
+ <span class="symbol"><A NAME="ref_1621_20" HREF="terminal_interface-curses__adb.htm#ref_1778_7">Len</A></span> : Integer := -1);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_inchstr.3x.html">mvwinchnstr()</A></EM></span>
<span class="comment"><EM>-- AKA: mvwinchstr()</EM></span>
<span class="comment"><EM>-- AKA: mvinchnstr()</EM></span>
@@ -1477,10 +1646,10 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_getstr.3x.html">curs_getstr.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_107"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1464_14" HREF="terminal_interface-curses__adb.htm#ref_1775_14">Get</A></span> (<span class="symbol"><A NAME="ref_1464_19" HREF="terminal_interface-curses__adb.htm#ref_1775_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1465_19" HREF="terminal_interface-curses__adb.htm#ref_1776_19">Str</A></span> : <b>out</b> String;
- <span class="symbol"><A NAME="ref_1466_19" HREF="terminal_interface-curses__adb.htm#ref_1777_19">Len</A></span> : Integer := -1);
+ <span class="comment"><EM>-- <A NAME="AFU_107">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1633_14" HREF="terminal_interface-curses__adb.htm#ref_1785_14">Get</A></span> (<span class="symbol"><A NAME="ref_1633_19" HREF="terminal_interface-curses__adb.htm#ref_1785_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1634_19" HREF="terminal_interface-curses__adb.htm#ref_1786_19">Str</A></span> : <b>out</b> String;
+ <span class="symbol"><A NAME="ref_1635_19" HREF="terminal_interface-curses__adb.htm#ref_1787_19">Len</A></span> : Integer := -1);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_getstr.3x.html">wgetnstr()</A></EM></span>
<span class="comment"><EM>-- AKA: wgetstr()</EM></span>
<span class="comment"><EM>-- AKA: getnstr()</EM></span>
@@ -1488,12 +1657,12 @@
<span class="comment"><EM>-- actually getstr is not supported because that results in buffer</EM></span>
<span class="comment"><EM>-- overflows.</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_108"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1475_14" HREF="terminal_interface-curses__adb.htm#ref_1804_14">Get</A></span> (<span class="symbol"><A NAME="ref_1475_19" HREF="terminal_interface-curses__adb.htm#ref_1805_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1476_19" HREF="terminal_interface-curses__adb.htm#ref_1806_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1477_19" HREF="terminal_interface-curses__adb.htm#ref_1807_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1478_19" HREF="terminal_interface-curses__adb.htm#ref_1808_7">Str</A></span> : <b>out</b> String;
- <span class="symbol"><A NAME="ref_1479_19" HREF="terminal_interface-curses__adb.htm#ref_1809_7">Len</A></span> : Integer := -1);
+ <span class="comment"><EM>-- <A NAME="AFU_108">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1644_14" HREF="terminal_interface-curses__adb.htm#ref_1814_14">Get</A></span> (<span class="symbol"><A NAME="ref_1644_19" HREF="terminal_interface-curses__adb.htm#ref_1815_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1645_19" HREF="terminal_interface-curses__adb.htm#ref_1816_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1646_19" HREF="terminal_interface-curses__adb.htm#ref_1817_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1647_19" HREF="terminal_interface-curses__adb.htm#ref_1818_7">Str</A></span> : <b>out</b> String;
+ <span class="symbol"><A NAME="ref_1648_19" HREF="terminal_interface-curses__adb.htm#ref_1819_7">Len</A></span> : Integer := -1);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_getstr.3x.html">mvwgetnstr()</A></EM></span>
<span class="comment"><EM>-- AKA: mvwgetstr()</EM></span>
<span class="comment"><EM>-- AKA: mvgetnstr()</EM></span>
@@ -1506,90 +1675,90 @@
<span class="comment"><EM>-- Not Implemented: slk_attr_on, slk_attr_off, slk_attr_set</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_1492_9">Soft_Label_Key_Format</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1492_35">Three_Two_Three</A></span>,
- <span class="symbol"><A NAME="ref_1493_35">Four_Four</A></span>,
- <span class="symbol"><A NAME="ref_1494_35">PC_Style</A></span>, <span class="comment"><EM>-- ncurses specific</EM></span>
- <span class="symbol"><A NAME="ref_1495_35">PC_Style_With_Index</A></span>); <span class="comment"><EM>-- "</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_1496_9">Label_Number</A></span> <b>is</b> <b>new</b> Positive <b>range</b> 1 .. 12;
- <b>type</b> <span class="symbol"><A NAME="ref_1497_9">Label_Justification</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1497_33">Left</A></span>, <span class="symbol"><A NAME="ref_1497_39">Centered</A></span>, <span class="symbol"><A NAME="ref_1497_49">Right</A></span>);
+ <b>type</b> <span class="symbol"><A NAME="ref_1661_9">Soft_Label_Key_Format</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1661_35">Three_Two_Three</A></span>,
+ <span class="symbol"><A NAME="ref_1662_35">Four_Four</A></span>,
+ <span class="symbol"><A NAME="ref_1663_35">PC_Style</A></span>, <span class="comment"><EM>-- ncurses specific</EM></span>
+ <span class="symbol"><A NAME="ref_1664_35">PC_Style_With_Index</A></span>); <span class="comment"><EM>-- "</EM></span>
+ <b>type</b> <span class="symbol"><A NAME="ref_1665_9">Label_Number</A></span> <b>is</b> <b>new</b> Positive <b>range</b> 1 .. 12;
+ <b>type</b> <span class="symbol"><A NAME="ref_1666_9">Label_Justification</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1666_33">Left</A></span>, <span class="symbol"><A NAME="ref_1666_39">Centered</A></span>, <span class="symbol"><A NAME="ref_1666_49">Right</A></span>);
- <span class="comment"><EM>-- #1A NAME="AFU_109"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1500_14" HREF="terminal_interface-curses__adb.htm#ref_1816_14">Init_Soft_Label_Keys</A></span>
- (<span class="symbol"><A NAME="ref_1501_7" HREF="terminal_interface-curses__adb.htm#ref_1817_7">Format</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1492_9">Soft_Label_Key_Format</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1492_35">Three_Two_Three</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_109">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1669_14" HREF="terminal_interface-curses__adb.htm#ref_1826_14">Init_Soft_Label_Keys</A></span>
+ (<span class="symbol"><A NAME="ref_1670_7" HREF="terminal_interface-curses__adb.htm#ref_1827_7">Format</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1661_9">Soft_Label_Key_Format</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1661_35">Three_Two_Three</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_init()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1500_14">Init_Soft_Label_Keys</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1669_14">Init_Soft_Label_Keys</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_110"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1506_14" HREF="terminal_interface-curses__adb.htm#ref_1827_14">Set_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1506_34" HREF="terminal_interface-curses__adb.htm#ref_1827_34">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1496_9">Label_Number</A>;
- <span class="symbol"><A NAME="ref_1507_34" HREF="terminal_interface-curses__adb.htm#ref_1828_34">Text</A></span> : String;
- <span class="symbol"><A NAME="ref_1508_34" HREF="terminal_interface-curses__adb.htm#ref_1829_34">Fmt</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1497_9">Label_Justification</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1497_33">Left</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_110">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1675_14" HREF="terminal_interface-curses__adb.htm#ref_1837_14">Set_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1675_34" HREF="terminal_interface-curses__adb.htm#ref_1837_34">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1665_9">Label_Number</A>;
+ <span class="symbol"><A NAME="ref_1676_34" HREF="terminal_interface-curses__adb.htm#ref_1838_34">Text</A></span> : String;
+ <span class="symbol"><A NAME="ref_1677_34" HREF="terminal_interface-curses__adb.htm#ref_1839_34">Fmt</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1666_9">Label_Justification</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1666_33">Left</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_set()</A></EM></span>
<span class="comment"><EM>-- We do not inline this procedure</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_111"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1513_14" HREF="terminal_interface-curses__adb.htm#ref_1846_14">Refresh_Soft_Label_Keys</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_111">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1682_14" HREF="terminal_interface-curses__adb.htm#ref_1857_14">Refresh_Soft_Label_Keys</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_refresh()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1513_14">Refresh_Soft_Label_Keys</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1682_14">Refresh_Soft_Label_Keys</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_112"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1518_14" HREF="terminal_interface-curses__adb.htm#ref_1856_14">Refresh_Soft_Label_Keys_Without_Update</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_112">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1687_14" HREF="terminal_interface-curses__adb.htm#ref_1867_14">Refresh_Soft_Label_Keys_Without_Update</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_noutrefresh()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1518_14">Refresh_Soft_Label_Keys_Without_Update</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1687_14">Refresh_Soft_Label_Keys_Without_Update</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_113"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1523_14" HREF="terminal_interface-curses__adb.htm#ref_1866_14">Get_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1523_34" HREF="terminal_interface-curses__adb.htm#ref_1866_34">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1496_9">Label_Number</A>;
- <span class="symbol"><A NAME="ref_1524_34" HREF="terminal_interface-curses__adb.htm#ref_1867_34">Text</A></span> : <b>out</b> String);
+ <span class="comment"><EM>-- <A NAME="AFU_113">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1692_14" HREF="terminal_interface-curses__adb.htm#ref_1877_14">Get_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1692_34" HREF="terminal_interface-curses__adb.htm#ref_1877_34">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1665_9">Label_Number</A>;
+ <span class="symbol"><A NAME="ref_1693_34" HREF="terminal_interface-curses__adb.htm#ref_1878_34">Text</A></span> : <b>out</b> String);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_label()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_114"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1528_13" HREF="terminal_interface-curses__adb.htm#ref_1875_13">Get_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1528_33" HREF="terminal_interface-curses__adb.htm#ref_1875_33">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1496_9">Label_Number</A>) <b>return</b> String;
+ <span class="comment"><EM>-- <A NAME="AFU_114">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1697_13" HREF="terminal_interface-curses__adb.htm#ref_1886_13">Get_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1697_33" HREF="terminal_interface-curses__adb.htm#ref_1886_33">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1665_9">Label_Number</A>) <b>return</b> String;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_label()</A></EM></span>
<span class="comment"><EM>-- Same as function</EM></span>
<b>pragma</b> Inline (Get_Soft_Label_Key);
- <span class="comment"><EM>-- #1A NAME="AFU_115"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1534_14" HREF="terminal_interface-curses__adb.htm#ref_1883_14">Clear_Soft_Label_Keys</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_115">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1703_14" HREF="terminal_interface-curses__adb.htm#ref_1894_14">Clear_Soft_Label_Keys</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_clear()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1534_14">Clear_Soft_Label_Keys</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1703_14">Clear_Soft_Label_Keys</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_116"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1539_14" HREF="terminal_interface-curses__adb.htm#ref_1893_14">Restore_Soft_Label_Keys</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_116">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1708_14" HREF="terminal_interface-curses__adb.htm#ref_1904_14">Restore_Soft_Label_Keys</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_restore()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1539_14">Restore_Soft_Label_Keys</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1708_14">Restore_Soft_Label_Keys</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_117"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1544_14" HREF="terminal_interface-curses__adb.htm#ref_1903_14">Touch_Soft_Label_Keys</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_117">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1713_14" HREF="terminal_interface-curses__adb.htm#ref_1914_14">Touch_Soft_Label_Keys</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_touch()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1544_14">Touch_Soft_Label_Keys</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1713_14">Touch_Soft_Label_Keys</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_118"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1549_14" HREF="terminal_interface-curses__adb.htm#ref_1913_14">Switch_Soft_Label_Key_Attributes</A></span>
- (<span class="symbol"><A NAME="ref_1550_7" HREF="terminal_interface-curses__adb.htm#ref_1914_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
- <span class="symbol"><A NAME="ref_1551_7" HREF="terminal_interface-curses__adb.htm#ref_1915_7">On</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_118">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1718_14" HREF="terminal_interface-curses__adb.htm#ref_1924_14">Switch_Soft_Label_Key_Attributes</A></span>
+ (<span class="symbol"><A NAME="ref_1719_7" HREF="terminal_interface-curses__adb.htm#ref_1925_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
+ <span class="symbol"><A NAME="ref_1720_7" HREF="terminal_interface-curses__adb.htm#ref_1926_7">On</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attron()</A></EM></span>
<span class="comment"><EM>-- AKA: slk_attroff()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1549_14">Switch_Soft_Label_Key_Attributes</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1718_14">Switch_Soft_Label_Key_Attributes</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_119"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1557_14" HREF="terminal_interface-curses__adb.htm#ref_1937_14">Set_Soft_Label_Key_Attributes</A></span>
- (<span class="symbol"><A NAME="ref_1558_7" HREF="terminal_interface-curses__adb.htm#ref_1938_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_351_4">Normal_Video</A>;
- <span class="symbol"><A NAME="ref_1559_7" HREF="terminal_interface-curses__adb.htm#ref_1939_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>'First);
+ <span class="comment"><EM>-- <A NAME="AFU_119">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1726_14" HREF="terminal_interface-curses__adb.htm#ref_1948_14">Set_Soft_Label_Key_Attributes</A></span>
+ (<span class="symbol"><A NAME="ref_1727_7" HREF="terminal_interface-curses__adb.htm#ref_1949_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_485_4">Normal_Video</A>;
+ <span class="symbol"><A NAME="ref_1728_7" HREF="terminal_interface-curses__adb.htm#ref_1950_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>'First);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attrset()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1557_14">Set_Soft_Label_Key_Attributes</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1726_14">Set_Soft_Label_Key_Attributes</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_120"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1564_13" HREF="terminal_interface-curses__adb.htm#ref_1953_13">Get_Soft_Label_Key_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_120">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1733_13" HREF="terminal_interface-curses__adb.htm#ref_1964_13">Get_Soft_Label_Key_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attr()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_121"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1568_13" HREF="terminal_interface-curses__adb.htm#ref_1963_13">Get_Soft_Label_Key_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_121">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1737_13" HREF="terminal_interface-curses__adb.htm#ref_1974_13">Get_Soft_Label_Key_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attr()</A></EM></span>
<b>pragma</b> Inline (Get_Soft_Label_Key_Attributes);
- <span class="comment"><EM>-- #1A NAME="AFU_122"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1573_14" HREF="terminal_interface-curses__adb.htm#ref_1973_14">Set_Soft_Label_Key_Color</A></span> (<span class="symbol"><A NAME="ref_1573_40" HREF="terminal_interface-curses__adb.htm#ref_1973_40">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_122">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1742_14" HREF="terminal_interface-curses__adb.htm#ref_1984_14">Set_Soft_Label_Key_Color</A></span> (<span class="symbol"><A NAME="ref_1742_40" HREF="terminal_interface-curses__adb.htm#ref_1984_40">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_color()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1573_14">Set_Soft_Label_Key_Color</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1742_14">Set_Soft_Label_Key_Color</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/keybound.3x.html">keybound.3x</A></EM></span>
@@ -1600,21 +1769,21 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/keyok.3x.html">keyok.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_123"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1587_14" HREF="terminal_interface-curses__adb.htm#ref_1984_14">Enable_Key</A></span> (<span class="symbol"><A NAME="ref_1587_26" HREF="terminal_interface-curses__adb.htm#ref_1984_26">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A>;
- <span class="symbol"><A NAME="ref_1588_26" HREF="terminal_interface-curses__adb.htm#ref_1985_26">Enable</A></span> : Boolean := True);
+ <span class="comment"><EM>-- <A NAME="AFU_123">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1756_14" HREF="terminal_interface-curses__adb.htm#ref_1995_14">Enable_Key</A></span> (<span class="symbol"><A NAME="ref_1756_26" HREF="terminal_interface-curses__adb.htm#ref_1995_26">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>;
+ <span class="symbol"><A NAME="ref_1757_26" HREF="terminal_interface-curses__adb.htm#ref_1996_26">Enable</A></span> : Boolean := True);
<span class="comment"><EM>-- AKA: <A HREF="../man/keyok.3x.html">keyok()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1587_14">Enable_Key</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1756_14">Enable_Key</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/define_key.3x.html">define_key.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_124"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1597_14" HREF="terminal_interface-curses__adb.htm#ref_1997_14">Define_Key</A></span> (<span class="symbol"><A NAME="ref_1597_26" HREF="terminal_interface-curses__adb.htm#ref_1997_26">Definition</A></span> : String;
- <span class="symbol"><A NAME="ref_1598_26" HREF="terminal_interface-curses__adb.htm#ref_1998_26">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_78_12">Special_Key_Code</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_124">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1766_14" HREF="terminal_interface-curses__adb.htm#ref_2009_14">Define_Key</A></span> (<span class="symbol"><A NAME="ref_1766_26" HREF="terminal_interface-curses__adb.htm#ref_2009_26">Definition</A></span> : String;
+ <span class="symbol"><A NAME="ref_1767_26" HREF="terminal_interface-curses__adb.htm#ref_2010_26">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_76_12">Special_Key_Code</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/define_key.3x.html">define_key()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1597_14">Define_Key</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1766_14">Define_Key</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_util.3x.html">curs_util.3x</A></EM></span>
@@ -1624,89 +1793,89 @@
<span class="comment"><EM>-- | putwin, getwin are in the child package PutWin</EM></span>
<span class="comment"><EM>--</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_125"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1611_14" HREF="terminal_interface-curses__adb.htm#ref_90_14">Key_Name</A></span> (<span class="symbol"><A NAME="ref_1611_24" HREF="terminal_interface-curses__adb.htm#ref_90_24">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A>;
- <span class="symbol"><A NAME="ref_1612_24" HREF="terminal_interface-curses__adb.htm#ref_91_24">Name</A></span> : <b>out</b> String);
+ <span class="comment"><EM>-- <A NAME="AFU_125">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1780_14" HREF="terminal_interface-curses__adb.htm#ref_89_14">Key_Name</A></span> (<span class="symbol"><A NAME="ref_1780_24" HREF="terminal_interface-curses__adb.htm#ref_89_24">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A>;
+ <span class="symbol"><A NAME="ref_1781_24" HREF="terminal_interface-curses__adb.htm#ref_90_24">Name</A></span> : <b>out</b> String);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_util.3x.html">keyname()</A></EM></span>
<span class="comment"><EM>-- The external name for a real keystroke.</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_126"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1617_13" HREF="terminal_interface-curses__adb.htm#ref_62_13">Key_Name</A></span> (<span class="symbol"><A NAME="ref_1617_23" HREF="terminal_interface-curses__adb.htm#ref_62_23">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_73_12">Real_Key_Code</A>) <b>return</b> String;
+ <span class="comment"><EM>-- <A NAME="AFU_126">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1786_13" HREF="terminal_interface-curses__adb.htm#ref_61_13">Key_Name</A></span> (<span class="symbol"><A NAME="ref_1786_23" HREF="terminal_interface-curses__adb.htm#ref_61_23">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_71_12">Real_Key_Code</A>) <b>return</b> String;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_util.3x.html">keyname()</A></EM></span>
<span class="comment"><EM>-- Same as function</EM></span>
<span class="comment"><EM>-- We do not inline this routine</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_127"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1623_14" HREF="terminal_interface-curses__adb.htm#ref_2013_14">Un_Control</A></span> (<span class="symbol"><A NAME="ref_1623_26" HREF="terminal_interface-curses__adb.htm#ref_2013_26">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>;
- <span class="symbol"><A NAME="ref_1624_26" HREF="terminal_interface-curses__adb.htm#ref_2014_26">Str</A></span> : <b>out</b> String);
+ <span class="comment"><EM>-- <A NAME="AFU_127">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1792_14" HREF="terminal_interface-curses__adb.htm#ref_2025_14">Un_Control</A></span> (<span class="symbol"><A NAME="ref_1792_26" HREF="terminal_interface-curses__adb.htm#ref_2025_26">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>;
+ <span class="symbol"><A NAME="ref_1793_26" HREF="terminal_interface-curses__adb.htm#ref_2026_26">Str</A></span> : <b>out</b> String);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_util.3x.html">unctrl()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_128"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1628_13" HREF="terminal_interface-curses__adb.htm#ref_2022_13">Un_Control</A></span> (<span class="symbol"><A NAME="ref_1628_25" HREF="terminal_interface-curses__adb.htm#ref_2022_25">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_353_9">Attributed_Character</A>) <b>return</b> String;
+ <span class="comment"><EM>-- <A NAME="AFU_128">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1797_13" HREF="terminal_interface-curses__adb.htm#ref_2034_13">Un_Control</A></span> (<span class="symbol"><A NAME="ref_1797_25" HREF="terminal_interface-curses__adb.htm#ref_2034_25">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_487_9">Attributed_Character</A>) <b>return</b> String;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_util.3x.html">unctrl()</A></EM></span>
<span class="comment"><EM>-- Same as function</EM></span>
<b>pragma</b> Inline (Un_Control);
- <span class="comment"><EM>-- #1A NAME="AFU_129"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1634_14" HREF="terminal_interface-curses__adb.htm#ref_2030_14">Delay_Output</A></span> (<span class="symbol"><A NAME="ref_1634_28" HREF="terminal_interface-curses__adb.htm#ref_2030_28">Msecs</A></span> : Natural);
+ <span class="comment"><EM>-- <A NAME="AFU_129">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1803_14" HREF="terminal_interface-curses__adb.htm#ref_2042_14">Delay_Output</A></span> (<span class="symbol"><A NAME="ref_1803_28" HREF="terminal_interface-curses__adb.htm#ref_2042_28">Msecs</A></span> : Natural);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_util.3x.html">delay_output()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1634_14">Delay_Output</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1803_14">Delay_Output</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_130"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1639_14" HREF="terminal_interface-curses__adb.htm#ref_2040_14">Flush_Input</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_130">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1808_14" HREF="terminal_interface-curses__adb.htm#ref_2052_14">Flush_Input</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_util.3x.html">flushinp()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1639_14">Flush_Input</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1808_14">Flush_Input</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_131"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1648_13" HREF="terminal_interface-curses__adb.htm#ref_2050_13">Baudrate</A></span> <b>return</b> Natural;
+ <span class="comment"><EM>-- <A NAME="AFU_131">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1817_13" HREF="terminal_interface-curses__adb.htm#ref_2062_13">Baudrate</A></span> <b>return</b> Natural;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">baudrate()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1648_13">Baudrate</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1817_13">Baudrate</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_132"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1653_13" HREF="terminal_interface-curses__adb.htm#ref_2058_13">Erase_Character</A></span> <b>return</b> Character;
+ <span class="comment"><EM>-- <A NAME="AFU_132">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1822_13" HREF="terminal_interface-curses__adb.htm#ref_2070_13">Erase_Character</A></span> <b>return</b> Character;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">erasechar()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1653_13">Erase_Character</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1822_13">Erase_Character</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_133"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1658_13" HREF="terminal_interface-curses__adb.htm#ref_2066_13">Kill_Character</A></span> <b>return</b> Character;
+ <span class="comment"><EM>-- <A NAME="AFU_133">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1827_13" HREF="terminal_interface-curses__adb.htm#ref_2078_13">Kill_Character</A></span> <b>return</b> Character;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">killchar()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1658_13">Kill_Character</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1827_13">Kill_Character</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_134"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1663_13" HREF="terminal_interface-curses__adb.htm#ref_2074_13">Has_Insert_Character</A></span> <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_134">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1832_13" HREF="terminal_interface-curses__adb.htm#ref_2086_13">Has_Insert_Character</A></span> <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">has_ic()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1663_13">Has_Insert_Character</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1832_13">Has_Insert_Character</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_135"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1668_13" HREF="terminal_interface-curses__adb.htm#ref_2086_13">Has_Insert_Line</A></span> <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_135">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1837_13" HREF="terminal_interface-curses__adb.htm#ref_2098_13">Has_Insert_Line</A></span> <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">has_il()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1668_13">Has_Insert_Line</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1837_13">Has_Insert_Line</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_136"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1673_13" HREF="terminal_interface-curses__adb.htm#ref_2098_13">Supported_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_307_9">Character_Attribute_Set</A>;
+ <span class="comment"><EM>-- <A NAME="AFU_136">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1842_13" HREF="terminal_interface-curses__adb.htm#ref_2110_13">Supported_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_417_9">Character_Attribute_Set</A>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">termattrs()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1673_13">Supported_Attributes</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1842_13">Supported_Attributes</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_137"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1678_14" HREF="terminal_interface-curses__adb.htm#ref_2108_14">Long_Name</A></span> (<span class="symbol"><A NAME="ref_1678_25" HREF="terminal_interface-curses__adb.htm#ref_2108_25">Name</A></span> : <b>out</b> String);
+ <span class="comment"><EM>-- <A NAME="AFU_137">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1847_14" HREF="terminal_interface-curses__adb.htm#ref_2120_14">Long_Name</A></span> (<span class="symbol"><A NAME="ref_1847_25" HREF="terminal_interface-curses__adb.htm#ref_2120_25">Name</A></span> : <b>out</b> String);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">longname()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_138"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1682_13" HREF="terminal_interface-curses__adb.htm#ref_2116_13">Long_Name</A></span> <b>return</b> String;
+ <span class="comment"><EM>-- <A NAME="AFU_138">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1851_13" HREF="terminal_interface-curses__adb.htm#ref_2128_13">Long_Name</A></span> <b>return</b> String;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">longname()</A></EM></span>
<span class="comment"><EM>-- Same as function</EM></span>
<b>pragma</b> Inline (Long_Name);
- <span class="comment"><EM>-- #1A NAME="AFU_139"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1688_14" HREF="terminal_interface-curses__adb.htm#ref_2124_14">Terminal_Name</A></span> (<span class="symbol"><A NAME="ref_1688_29" HREF="terminal_interface-curses__adb.htm#ref_2124_29">Name</A></span> : <b>out</b> String);
+ <span class="comment"><EM>-- <A NAME="AFU_139">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1857_14" HREF="terminal_interface-curses__adb.htm#ref_2136_14">Terminal_Name</A></span> (<span class="symbol"><A NAME="ref_1857_29" HREF="terminal_interface-curses__adb.htm#ref_2136_29">Name</A></span> : <b>out</b> String);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">termname()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_140"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1692_13" HREF="terminal_interface-curses__adb.htm#ref_2132_13">Terminal_Name</A></span> <b>return</b> String;
+ <span class="comment"><EM>-- <A NAME="AFU_140">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1861_13" HREF="terminal_interface-curses__adb.htm#ref_2144_13">Terminal_Name</A></span> <b>return</b> String;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">termname()</A></EM></span>
<span class="comment"><EM>-- Same as function</EM></span>
<b>pragma</b> Inline (Terminal_Name);
@@ -1721,119 +1890,119 @@
<span class="comment"><EM>-- In C you often see something like c = c | COLOR_PAIR(n);</EM></span>
<span class="comment"><EM>-- This is equivalent to c.Color := n;</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_141"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1708_14">Start_Color</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_141">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1877_14">Start_Color</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_color.3x.html">start_color()</A></EM></span>
<b>pragma</b> Import (C, Start_Color, "start_color");
- <span class="comment"><EM>-- #1A NAME="AFU_142"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1713_14" HREF="terminal_interface-curses__adb.htm#ref_2140_14">Init_Pair</A></span> (<span class="symbol"><A NAME="ref_1713_25" HREF="terminal_interface-curses__adb.htm#ref_2140_25">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_301_12">Redefinable_Color_Pair</A>;
- <span class="symbol"><A NAME="ref_1714_25" HREF="terminal_interface-curses__adb.htm#ref_2141_25">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A>;
- <span class="symbol"><A NAME="ref_1715_25" HREF="terminal_interface-curses__adb.htm#ref_2142_25">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_142">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1882_14" HREF="terminal_interface-curses__adb.htm#ref_2152_14">Init_Pair</A></span> (<span class="symbol"><A NAME="ref_1882_25" HREF="terminal_interface-curses__adb.htm#ref_2152_25">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_411_12">Redefinable_Color_Pair</A>;
+ <span class="symbol"><A NAME="ref_1883_25" HREF="terminal_interface-curses__adb.htm#ref_2153_25">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A>;
+ <span class="symbol"><A NAME="ref_1884_25" HREF="terminal_interface-curses__adb.htm#ref_2154_25">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_color.3x.html">init_pair()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1713_14">Init_Pair</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1882_14">Init_Pair</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_143"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1720_14" HREF="terminal_interface-curses__adb.htm#ref_2162_14">Pair_Content</A></span> (<span class="symbol"><A NAME="ref_1720_28" HREF="terminal_interface-curses__adb.htm#ref_2162_28">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_299_9">Color_Pair</A>;
- <span class="symbol"><A NAME="ref_1721_28" HREF="terminal_interface-curses__adb.htm#ref_2163_28">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A>;
- <span class="symbol"><A NAME="ref_1722_28" HREF="terminal_interface-curses__adb.htm#ref_2164_28">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_143">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1889_14" HREF="terminal_interface-curses__adb.htm#ref_2176_14">Pair_Content</A></span> (<span class="symbol"><A NAME="ref_1889_28" HREF="terminal_interface-curses__adb.htm#ref_2176_28">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_409_9">Color_Pair</A>;
+ <span class="symbol"><A NAME="ref_1890_28" HREF="terminal_interface-curses__adb.htm#ref_2177_28">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A>;
+ <span class="symbol"><A NAME="ref_1891_28" HREF="terminal_interface-curses__adb.htm#ref_2178_28">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_color.3x.html">pair_content()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1720_14">Pair_Content</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1889_14">Pair_Content</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_144"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1727_13" HREF="terminal_interface-curses__adb.htm#ref_2182_13">Has_Colors</A></span> <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_144">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1896_13" HREF="terminal_interface-curses__adb.htm#ref_2196_13">Has_Colors</A></span> <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_color.3x.html">has_colors()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1727_13">Has_Colors</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1896_13">Has_Colors</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_145"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1732_14" HREF="terminal_interface-curses__adb.htm#ref_2194_14">Init_Color</A></span> (<span class="symbol"><A NAME="ref_1732_26" HREF="terminal_interface-curses__adb.htm#ref_2194_26">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A>;
- <span class="symbol"><A NAME="ref_1733_26" HREF="terminal_interface-curses__adb.htm#ref_2195_26">Red</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A>;
- <span class="symbol"><A NAME="ref_1734_26" HREF="terminal_interface-curses__adb.htm#ref_2196_26">Green</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A>;
- <span class="symbol"><A NAME="ref_1735_26" HREF="terminal_interface-curses__adb.htm#ref_2197_26">Blue</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_145">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1901_14" HREF="terminal_interface-curses__adb.htm#ref_2208_14">Init_Color</A></span> (<span class="symbol"><A NAME="ref_1901_26" HREF="terminal_interface-curses__adb.htm#ref_2208_26">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A>;
+ <span class="symbol"><A NAME="ref_1902_26" HREF="terminal_interface-curses__adb.htm#ref_2209_26">Red</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A>;
+ <span class="symbol"><A NAME="ref_1903_26" HREF="terminal_interface-curses__adb.htm#ref_2210_26">Green</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A>;
+ <span class="symbol"><A NAME="ref_1904_26" HREF="terminal_interface-curses__adb.htm#ref_2211_26">Blue</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_color.3x.html">init_color()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1732_14">Init_Color</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1901_14">Init_Color</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_146"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1740_13" HREF="terminal_interface-curses__adb.htm#ref_2211_13">Can_Change_Color</A></span> <b>return</b> Boolean;
+ <span class="comment"><EM>-- <A NAME="AFU_146">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_1909_13" HREF="terminal_interface-curses__adb.htm#ref_2226_13">Can_Change_Color</A></span> <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_color.3x.html">can_change_color()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1740_13">Can_Change_Color</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1909_13">Can_Change_Color</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_147"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1745_14" HREF="terminal_interface-curses__adb.htm#ref_2223_14">Color_Content</A></span> (<span class="symbol"><A NAME="ref_1745_29" HREF="terminal_interface-curses__adb.htm#ref_2223_29">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A>;
- <span class="symbol"><A NAME="ref_1746_29" HREF="terminal_interface-curses__adb.htm#ref_2224_29">Red</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A>;
- <span class="symbol"><A NAME="ref_1747_29" HREF="terminal_interface-curses__adb.htm#ref_2225_29">Green</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A>;
- <span class="symbol"><A NAME="ref_1748_29" HREF="terminal_interface-curses__adb.htm#ref_2226_29">Blue</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_295_9">RGB_Value</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_147">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1914_14" HREF="terminal_interface-curses__adb.htm#ref_2238_14">Color_Content</A></span> (<span class="symbol"><A NAME="ref_1914_29" HREF="terminal_interface-curses__adb.htm#ref_2238_29">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A>;
+ <span class="symbol"><A NAME="ref_1915_29" HREF="terminal_interface-curses__adb.htm#ref_2239_29">Red</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A>;
+ <span class="symbol"><A NAME="ref_1916_29" HREF="terminal_interface-curses__adb.htm#ref_2240_29">Green</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A>;
+ <span class="symbol"><A NAME="ref_1917_29" HREF="terminal_interface-curses__adb.htm#ref_2241_29">Blue</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_405_9">RGB_Value</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_color.3x.html">color_content()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1745_14">Color_Content</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1914_14">Color_Content</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Not implemented: getsyx, setsyx</EM></span>
<span class="comment"><EM>--</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_1757_9">Curses_Mode</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1757_25">Curses</A></span>, <span class="symbol"><A NAME="ref_1757_33">Shell</A></span>);
+ <b>type</b> <span class="symbol"><A NAME="ref_1926_9">Curses_Mode</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1926_25">Curses</A></span>, <span class="symbol"><A NAME="ref_1926_33">Shell</A></span>);
- <span class="comment"><EM>-- #1A NAME="AFU_148"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1760_14" HREF="terminal_interface-curses__adb.htm#ref_2247_14">Save_Curses_Mode</A></span> (<span class="symbol"><A NAME="ref_1760_32" HREF="terminal_interface-curses__adb.htm#ref_2247_32">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1757_9">Curses_Mode</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_148">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1929_14" HREF="terminal_interface-curses__adb.htm#ref_2263_14">Save_Curses_Mode</A></span> (<span class="symbol"><A NAME="ref_1929_32" HREF="terminal_interface-curses__adb.htm#ref_2263_32">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1926_9">Curses_Mode</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">def_prog_mode()</A></EM></span>
<span class="comment"><EM>-- AKA: def_shell_mode()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1760_14">Save_Curses_Mode</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1929_14">Save_Curses_Mode</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_149"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1766_14" HREF="terminal_interface-curses__adb.htm#ref_2265_14">Reset_Curses_Mode</A></span> (<span class="symbol"><A NAME="ref_1766_33" HREF="terminal_interface-curses__adb.htm#ref_2265_33">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1757_9">Curses_Mode</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_149">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1935_14" HREF="terminal_interface-curses__adb.htm#ref_2281_14">Reset_Curses_Mode</A></span> (<span class="symbol"><A NAME="ref_1935_33" HREF="terminal_interface-curses__adb.htm#ref_2281_33">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1926_9">Curses_Mode</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">reset_prog_mode()</A></EM></span>
<span class="comment"><EM>-- AKA: reset_shell_mode()</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1766_14">Reset_Curses_Mode</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1935_14">Reset_Curses_Mode</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_150"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1772_14" HREF="terminal_interface-curses__adb.htm#ref_2283_14">Save_Terminal_State</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_150">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1941_14" HREF="terminal_interface-curses__adb.htm#ref_2299_14">Save_Terminal_State</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">savetty()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1772_14">Save_Terminal_State</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1941_14">Save_Terminal_State</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_151"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1777_14" HREF="terminal_interface-curses__adb.htm#ref_2293_14">Reset_Terminal_State</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_151">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1946_14" HREF="terminal_interface-curses__adb.htm#ref_2309_14">Reset_Terminal_State</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">resetty();</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1777_14">Reset_Terminal_State</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1946_14">Reset_Terminal_State</A>);
- <b>type</b> <span class="symbol"><A NAME="ref_1781_9">Stdscr_Init_Proc</A></span> <b>is</b> <b>access</b>
- <b>function</b> (<span class="symbol"><A NAME="ref_1782_17">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A>;
- <span class="symbol"><A NAME="ref_1783_17">Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>) <b>return</b> Integer;
- <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses__ads.htm#ref_1781_9">Stdscr_Init_Proc</A>);
+ <b>type</b> <span class="symbol"><A NAME="ref_1950_9">Stdscr_Init_Proc</A></span> <b>is</b> <b>access</b>
+ <b>function</b> (<span class="symbol"><A NAME="ref_1951_17" HREF="terminal_interface-curses__ads.htm#ref_1950_9">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A>;
+ <span class="symbol"><A NAME="ref_1952_17" HREF="terminal_interface-curses__ads.htm#ref_1950_9">Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>) <b>return</b> Integer;
+ <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses__ads.htm#ref_1950_9">Stdscr_Init_Proc</A>);
<span class="comment"><EM>-- N.B.: the return value is actually ignored, but it seems to be</EM></span>
<span class="comment"><EM>-- a good practice to return 0 if you think all went fine</EM></span>
<span class="comment"><EM>-- and -1 otherwise.</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_152"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1790_14" HREF="terminal_interface-curses__adb.htm#ref_2303_14">Rip_Off_Lines</A></span> (<span class="symbol"><A NAME="ref_1790_29" HREF="terminal_interface-curses__adb.htm#ref_2303_29">Lines</A></span> : Integer;
- <span class="symbol"><A NAME="ref_1791_29" HREF="terminal_interface-curses__adb.htm#ref_2304_29">Proc</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1781_9">Stdscr_Init_Proc</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_152">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1959_14" HREF="terminal_interface-curses__adb.htm#ref_2319_14">Rip_Off_Lines</A></span> (<span class="symbol"><A NAME="ref_1959_29" HREF="terminal_interface-curses__adb.htm#ref_2319_29">Lines</A></span> : Integer;
+ <span class="symbol"><A NAME="ref_1960_29" HREF="terminal_interface-curses__adb.htm#ref_2320_29">Proc</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1950_9">Stdscr_Init_Proc</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">ripoffline()</A></EM></span>
<span class="comment"><EM>-- N.B.: to be more precise, this uses a ncurses specific enhancement of</EM></span>
<span class="comment"><EM>-- ripoffline(), in which the Lines argument absolute value is the</EM></span>
<span class="comment"><EM>-- number of lines to be ripped of. The official ripoffline() only</EM></span>
<span class="comment"><EM>-- uses the sign of Lines to remove a single line from bottom or top.</EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1790_14">Rip_Off_Lines</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1959_14">Rip_Off_Lines</A>);
- <b>type</b> <span class="symbol"><A NAME="ref_1799_9">Cursor_Visibility</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1799_31">Invisible</A></span>, <span class="symbol"><A NAME="ref_1799_42">Normal</A></span>, <span class="symbol"><A NAME="ref_1799_50">Very_Visible</A></span>);
+ <b>type</b> <span class="symbol"><A NAME="ref_1968_9">Cursor_Visibility</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1968_31">Invisible</A></span>, <span class="symbol"><A NAME="ref_1968_42">Normal</A></span>, <span class="symbol"><A NAME="ref_1968_50">Very_Visible</A></span>);
- <span class="comment"><EM>-- #1A NAME="AFU_153"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1802_14" HREF="terminal_interface-curses__adb.htm#ref_2315_14">Set_Cursor_Visibility</A></span> (<span class="symbol"><A NAME="ref_1802_37" HREF="terminal_interface-curses__adb.htm#ref_2315_37">Visibility</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_1799_9">Cursor_Visibility</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_153">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1971_14" HREF="terminal_interface-curses__adb.htm#ref_2331_14">Set_Cursor_Visibility</A></span> (<span class="symbol"><A NAME="ref_1971_37" HREF="terminal_interface-curses__adb.htm#ref_2331_37">Visibility</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_1968_9">Cursor_Visibility</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">curs_set()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1802_14">Set_Cursor_Visibility</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1971_14">Set_Cursor_Visibility</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_154"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1807_14" HREF="terminal_interface-curses__adb.htm#ref_2328_14">Nap_Milli_Seconds</A></span> (<span class="symbol"><A NAME="ref_1807_33" HREF="terminal_interface-curses__adb.htm#ref_2328_33">Ms</A></span> : Natural);
+ <span class="comment"><EM>-- <A NAME="AFU_154">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1976_14" HREF="terminal_interface-curses__adb.htm#ref_2344_14">Nap_Milli_Seconds</A></span> (<span class="symbol"><A NAME="ref_1976_33" HREF="terminal_interface-curses__adb.htm#ref_2344_33">Ms</A></span> : Natural);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">napms()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1807_14">Nap_Milli_Seconds</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1976_14">Nap_Milli_Seconds</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Some useful helpers.</EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_1814_9">Transform_Direction</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1814_33">From_Screen</A></span>, <span class="symbol"><A NAME="ref_1814_46">To_Screen</A></span>);
- <b>procedure</b> <span class="symbol"><A NAME="ref_1815_14" HREF="terminal_interface-curses__adb.htm#ref_2396_14">Transform_Coordinates</A></span>
- (<span class="symbol"><A NAME="ref_1816_7" HREF="terminal_interface-curses__adb.htm#ref_2397_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1817_7" HREF="terminal_interface-curses__adb.htm#ref_2398_7">Line</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Line_Position</A>;
- <span class="symbol"><A NAME="ref_1818_7" HREF="terminal_interface-curses__adb.htm#ref_2399_7">Column</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_61_9">Column_Position</A>;
- <span class="symbol"><A NAME="ref_1819_7" HREF="terminal_interface-curses__adb.htm#ref_2400_7">Dir</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1814_9">Transform_Direction</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1814_33">From_Screen</A>);
+ <b>type</b> <span class="symbol"><A NAME="ref_1983_9">Transform_Direction</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1983_33">From_Screen</A></span>, <span class="symbol"><A NAME="ref_1983_46">To_Screen</A></span>);
+ <b>procedure</b> <span class="symbol"><A NAME="ref_1984_14" HREF="terminal_interface-curses__adb.htm#ref_2395_14">Transform_Coordinates</A></span>
+ (<span class="symbol"><A NAME="ref_1985_7" HREF="terminal_interface-curses__adb.htm#ref_2396_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_1986_7" HREF="terminal_interface-curses__adb.htm#ref_2397_7">Line</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_58_9">Line_Position</A>;
+ <span class="symbol"><A NAME="ref_1987_7" HREF="terminal_interface-curses__adb.htm#ref_2398_7">Column</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Column_Position</A>;
+ <span class="symbol"><A NAME="ref_1988_7" HREF="terminal_interface-curses__adb.htm#ref_2399_7">Dir</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1983_9">Transform_Direction</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1983_33">From_Screen</A>);
<span class="comment"><EM>-- This procedure transforms screen coordinates into coordinates relative</EM></span>
<span class="comment"><EM>-- to the window and vice versa, depending on the Dir parameter.</EM></span>
<span class="comment"><EM>-- Screen coordinates are the position information for the physical device.</EM></span>
@@ -1845,56 +2014,58 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/default_colors.3x.html">default_colors.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_155"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1832_14" HREF="terminal_interface-curses__adb.htm#ref_2425_14">Use_Default_Colors</A></span>;
+ <span class="symbol"><A NAME="ref_2000_4">Default_Color</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A> := -1;
+
+ <span class="comment"><EM>-- <A NAME="AFU_155">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2003_14" HREF="terminal_interface-curses__adb.htm#ref_2424_14">Use_Default_Colors</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/default_colors.3x.html">use_default_colors()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1832_14">Use_Default_Colors</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_2003_14">Use_Default_Colors</A>);
- <span class="comment"><EM>-- #1A NAME="AFU_156"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1837_14" HREF="terminal_interface-curses__adb.htm#ref_2435_14">Assume_Default_Colors</A></span> (<span class="symbol"><A NAME="ref_1837_37" HREF="terminal_interface-curses__adb.htm#ref_2435_37">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A> := <A HREF="terminal_interface-curses__ads.htm#ref_285_4">Default_Color</A>;
- <span class="symbol"><A NAME="ref_1838_37" HREF="terminal_interface-curses__adb.htm#ref_2436_37">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_278_9">Color_Number</A> := <A HREF="terminal_interface-curses__ads.htm#ref_285_4">Default_Color</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_156">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2008_14" HREF="terminal_interface-curses__adb.htm#ref_2434_14">Assume_Default_Colors</A></span> (<span class="symbol"><A NAME="ref_2008_37" HREF="terminal_interface-curses__adb.htm#ref_2434_37">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A> := <A HREF="terminal_interface-curses__ads.htm#ref_2000_4">Default_Color</A>;
+ <span class="symbol"><A NAME="ref_2009_37" HREF="terminal_interface-curses__adb.htm#ref_2435_37">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_389_9">Color_Number</A> := <A HREF="terminal_interface-curses__ads.htm#ref_2000_4">Default_Color</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/default_colors.3x.html">assume_default_colors()</A></EM></span>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1837_14">Assume_Default_Colors</A>);
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_2008_14">Assume_Default_Colors</A>);
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_extend.3x.html">curs_extend.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_157"#2|</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1847_13" HREF="terminal_interface-curses__adb.htm#ref_2450_13">Curses_Version</A></span> <b>return</b> String;
+ <span class="comment"><EM>-- <A NAME="AFU_157">|</A></EM></span>
+ <b>function</b> <span class="symbol"><A NAME="ref_2018_13" HREF="terminal_interface-curses__adb.htm#ref_2449_13">Curses_Version</A></span> <b>return</b> String;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_extend.3x.html">curses_version()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_158"#2|</EM></span>
+ <span class="comment"><EM>-- <A NAME="AFU_158">|</A></EM></span>
<span class="comment"><EM>-- The returnvalue is the previous setting of the flag</EM></span>
- <b>function</b> <span class="symbol"><A NAME="ref_1852_13" HREF="terminal_interface-curses__adb.htm#ref_2473_13">Use_Extended_Names</A></span> (<span class="symbol"><A NAME="ref_1852_33" HREF="terminal_interface-curses__adb.htm#ref_2473_33">Enable</A></span> : Boolean) <b>return</b> Boolean;
+ <b>function</b> <span class="symbol"><A NAME="ref_2023_13" HREF="terminal_interface-curses__adb.htm#ref_2472_13">Use_Extended_Names</A></span> (<span class="symbol"><A NAME="ref_2023_33" HREF="terminal_interface-curses__adb.htm#ref_2472_33">Enable</A></span> : Boolean) <b>return</b> Boolean;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_extend.3x.html">use_extended_names()</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_159"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1860_14" HREF="terminal_interface-curses__adb.htm#ref_2459_14">Curses_Free_All</A></span>;
+ <span class="comment"><EM>-- <A NAME="AFU_159">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2031_14" HREF="terminal_interface-curses__adb.htm#ref_2458_14">Curses_Free_All</A></span>;
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_trace.3x.html">_nc_freeall()</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
<span class="comment"><EM>-- | Man page <A HREF="../man/curs_scr_dump.3x.html">curs_scr_dump.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_160"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1868_14" HREF="terminal_interface-curses__adb.htm#ref_2488_14">Screen_Dump_To_File</A></span> (<span class="symbol"><A NAME="ref_1868_35" HREF="terminal_interface-curses__adb.htm#ref_2488_35">Filename</A></span> : String);
+ <span class="comment"><EM>-- <A NAME="AFU_160">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2039_14" HREF="terminal_interface-curses__adb.htm#ref_2487_14">Screen_Dump_To_File</A></span> (<span class="symbol"><A NAME="ref_2039_35" HREF="terminal_interface-curses__adb.htm#ref_2487_35">Filename</A></span> : String);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_scr_dump.3x.html">scr_dump()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_161"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1872_14" HREF="terminal_interface-curses__adb.htm#ref_2501_14">Screen_Restore_From_File</A></span> (<span class="symbol"><A NAME="ref_1872_40" HREF="terminal_interface-curses__adb.htm#ref_2501_40">Filename</A></span> : String);
+ <span class="comment"><EM>-- <A NAME="AFU_161">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2043_14" HREF="terminal_interface-curses__adb.htm#ref_2500_14">Screen_Restore_From_File</A></span> (<span class="symbol"><A NAME="ref_2043_40" HREF="terminal_interface-curses__adb.htm#ref_2500_40">Filename</A></span> : String);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_scr_dump.3x.html">scr_restore()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_162"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1876_14" HREF="terminal_interface-curses__adb.htm#ref_2514_14">Screen_Init_From_File</A></span> (<span class="symbol"><A NAME="ref_1876_37" HREF="terminal_interface-curses__adb.htm#ref_2514_37">Filename</A></span> : String);
+ <span class="comment"><EM>-- <A NAME="AFU_162">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2047_14" HREF="terminal_interface-curses__adb.htm#ref_2513_14">Screen_Init_From_File</A></span> (<span class="symbol"><A NAME="ref_2047_37" HREF="terminal_interface-curses__adb.htm#ref_2513_37">Filename</A></span> : String);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_scr_dump.3x.html">scr_init()</A></EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_163"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1880_14" HREF="terminal_interface-curses__adb.htm#ref_2527_14">Screen_Set_File</A></span> (<span class="symbol"><A NAME="ref_1880_31" HREF="terminal_interface-curses__adb.htm#ref_2527_31">Filename</A></span> : String);
+ <span class="comment"><EM>-- <A NAME="AFU_163">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2051_14" HREF="terminal_interface-curses__adb.htm#ref_2526_14">Screen_Set_File</A></span> (<span class="symbol"><A NAME="ref_2051_31" HREF="terminal_interface-curses__adb.htm#ref_2526_31">Filename</A></span> : String);
<span class="comment"><EM>-- AKA: <A HREF="../man/curs_scr_dump.3x.html">scr_set()</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
@@ -1925,22 +2096,25 @@
<span class="comment"><EM>-- | Man page <A HREF="../man/wresize.3x.html">wresize.3x</A></EM></span>
<span class="comment"><EM>-- |=====================================================================</EM></span>
- <span class="comment"><EM>-- #1A NAME="AFU_164"#2|</EM></span>
- <b>procedure</b> <span class="symbol"><A NAME="ref_1912_14" HREF="terminal_interface-curses__adb.htm#ref_2540_14">Resize</A></span> (<span class="symbol"><A NAME="ref_1912_22" HREF="terminal_interface-curses__adb.htm#ref_2540_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_477_13">Standard_Window</A>;
- <span class="symbol"><A NAME="ref_1913_22" HREF="terminal_interface-curses__adb.htm#ref_2541_22">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Line_Count</A>;
- <span class="symbol"><A NAME="ref_1914_22" HREF="terminal_interface-curses__adb.htm#ref_2542_22">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_65_12">Column_Count</A>);
+ <span class="comment"><EM>-- <A NAME="AFU_164">|</A></EM></span>
+ <b>procedure</b> <span class="symbol"><A NAME="ref_2083_14" HREF="terminal_interface-curses__adb.htm#ref_2539_14">Resize</A></span> (<span class="symbol"><A NAME="ref_2083_22" HREF="terminal_interface-curses__adb.htm#ref_2539_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_644_13">Standard_Window</A>;
+ <span class="symbol"><A NAME="ref_2084_22" HREF="terminal_interface-curses__adb.htm#ref_2540_22">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_61_12">Line_Count</A>;
+ <span class="symbol"><A NAME="ref_2085_22" HREF="terminal_interface-curses__adb.htm#ref_2541_22">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_63_12">Column_Count</A>);
<span class="comment"><EM>-- AKA: <A HREF="../man/wresize.3x.html">wresize()</A></EM></span>
<b>private</b>
- <b>type</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
- <A HREF="terminal_interface-curses__ads.htm#ref_58_4">Null_Window</A> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_57_9">Window</A> := 0;
+ <b>type</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+ <A HREF="terminal_interface-curses__ads.htm#ref_56_4">Null_Window</A> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_55_9">Window</A> := 0;
<span class="comment"><EM>-- The next constants are generated and may be different on your</EM></span>
<span class="comment"><EM>-- architecture.</EM></span>
<span class="comment"><EM>--</EM></span>
- <span class="symbol"><A NAME="ref_1924_4">Sizeof_bool</A></span> : <b>constant</b> Natural := 1; <span class="comment"><EM>-- bool</EM></span>
- <b>type</b> <span class="symbol"><A NAME="ref_1925_9">Curses_Bool</A></span> <b>is</b> <b>mod</b> 2 ** <A HREF="interfac__ads.htm#ref_36_9">Interfaces</A>.C.char'Size;
- <span class="symbol"><A NAME="ref_1926_4">Curses_Bool_False</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_1925_9">Curses_Bool</A> := 0;
-<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_49_28">Curses</A>;
+ <span class="symbol"><A NAME="ref_2096_4">Sizeof_Bool</A></span> : <b>constant</b> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_11_4">Sizeof_Bool</A>;
+
+ <b>type</b> <span class="symbol"><A NAME="ref_2098_9">Curses_Bool</A></span> <b>is</b> <b>mod</b> 2 ** <A HREF="terminal_interface-curses__ads.htm#ref_2096_4">Sizeof_Bool</A>;
+
+ <span class="symbol"><A NAME="ref_2100_4">Curses_Bool_False</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_2098_9">Curses_Bool</A> := 0;
+
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_47_28">Curses</A>;
</PRE></BODY></HTML>
diff --git a/doc/html/ada/terminal_interface-curses_constants__ads.htm b/doc/html/ada/terminal_interface-curses_constants__ads.htm
new file mode 100644
index 000000000000..e57ea4a0c9b7
--- /dev/null
+++ b/doc/html/ada/terminal_interface-curses_constants__ads.htm
@@ -0,0 +1,401 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<TITLE>terminal_interface-curses_constants.ads</TITLE>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<style type="text/css">
+*.comment {
+ color: green;
+}
+*.symbol {
+ color: red;
+}
+</style>
+</HEAD>
+<BODY>
+<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses_constants.ads </H1></DIV><HR>
+<PRE>
+<span class="comment"><EM>-- Generated by the C program ./generate (source ./gen.c).</EM></span>
+<span class="comment"><EM>-- Do not edit this file directly.</EM></span>
+<span class="comment"><EM>-- The values provided here may vary on your system.</EM></span>
+
+<b>with</b> System;
+<b>package</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<span class="symbol"><A NAME="ref_6_28">Curses_Constants</A></span> <b>is</b>
+ <b>pragma</b> Pure;
+
+ <span class="symbol"><A NAME="ref_9_4">DFT_ARG_SUFFIX</A></span> : <b>constant</b> String := "";
+ <span class="symbol"><A NAME="ref_10_4">Bit_Order</A></span> : <b>constant</b> System.Bit_Order := System.Low_Order_First;
+ <span class="symbol"><A NAME="ref_11_4">Sizeof_Bool</A></span> : <b>constant</b> := 8;
+ <span class="symbol"><A NAME="ref_12_4">OK</A></span> : <b>constant</b> := 0;
+ <span class="symbol"><A NAME="ref_13_4">ERR</A></span> : <b>constant</b> := -1;
+ <b>pragma</b> Warnings (Off); <span class="comment"><EM>-- redefinition of Standard.True and False</EM></span>
+ <span class="symbol"><A NAME="ref_15_4">TRUE</A></span> : <b>constant</b> := 1;
+ <span class="symbol"><A NAME="ref_16_4">FALSE</A></span> : <b>constant</b> := 0;
+ <b>pragma</b> Warnings (On);
+
+ <span class="comment"><EM>-- Version of the ncurses library from extensions(3NCURSES)</EM></span>
+
+ <span class="symbol"><A NAME="ref_21_4">NCURSES_VERSION_MAJOR</A></span> : <b>constant</b> := 6;
+ <span class="symbol"><A NAME="ref_22_4">NCURSES_VERSION_MINOR</A></span> : <b>constant</b> := 1;
+ <span class="symbol"><A NAME="ref_23_4">Version</A></span> : <b>constant</b> String := "6.1";
+
+ <span class="comment"><EM>-- Character non-color attributes from attr(3NCURSES)</EM></span>
+
+ <span class="comment"><EM>-- attr_t and chtype may be signed in C.</EM></span>
+ <b>type</b> <span class="symbol"><A NAME="ref_28_9">attr_t</A></span> <b>is</b> <b>mod</b> 2 ** 32;
+ <span class="symbol"><A NAME="ref_29_4">A_CHARTEXT_First</A></span> : <b>constant</b> := 0;
+ <span class="symbol"><A NAME="ref_30_4">A_CHARTEXT_Last</A></span> : <b>constant</b> := 7;
+ <span class="symbol"><A NAME="ref_31_4">A_COLOR_First</A></span> : <b>constant</b> := 8;
+ <span class="symbol"><A NAME="ref_32_4">A_COLOR_Last</A></span> : <b>constant</b> := 15;
+ <span class="symbol"><A NAME="ref_33_4">Attr_First</A></span> : <b>constant</b> := 16;
+ <span class="symbol"><A NAME="ref_34_4">Attr_Last</A></span> : <b>constant</b> := 31;
+ <span class="symbol"><A NAME="ref_35_4">A_STANDOUT_First</A></span> : <b>constant</b> := 16;
+ <span class="symbol"><A NAME="ref_36_4">A_STANDOUT_Last</A></span> : <b>constant</b> := 16;
+ <span class="symbol"><A NAME="ref_37_4">A_UNDERLINE_First</A></span> : <b>constant</b> := 17;
+ <span class="symbol"><A NAME="ref_38_4">A_UNDERLINE_Last</A></span> : <b>constant</b> := 17;
+ <span class="symbol"><A NAME="ref_39_4">A_REVERSE_First</A></span> : <b>constant</b> := 18;
+ <span class="symbol"><A NAME="ref_40_4">A_REVERSE_Last</A></span> : <b>constant</b> := 18;
+ <span class="symbol"><A NAME="ref_41_4">A_BLINK_First</A></span> : <b>constant</b> := 19;
+ <span class="symbol"><A NAME="ref_42_4">A_BLINK_Last</A></span> : <b>constant</b> := 19;
+ <span class="symbol"><A NAME="ref_43_4">A_DIM_First</A></span> : <b>constant</b> := 20;
+ <span class="symbol"><A NAME="ref_44_4">A_DIM_Last</A></span> : <b>constant</b> := 20;
+ <span class="symbol"><A NAME="ref_45_4">A_BOLD_First</A></span> : <b>constant</b> := 21;
+ <span class="symbol"><A NAME="ref_46_4">A_BOLD_Last</A></span> : <b>constant</b> := 21;
+ <span class="symbol"><A NAME="ref_47_4">A_PROTECT_First</A></span> : <b>constant</b> := 24;
+ <span class="symbol"><A NAME="ref_48_4">A_PROTECT_Last</A></span> : <b>constant</b> := 24;
+ <span class="symbol"><A NAME="ref_49_4">A_INVIS_First</A></span> : <b>constant</b> := 23;
+ <span class="symbol"><A NAME="ref_50_4">A_INVIS_Last</A></span> : <b>constant</b> := 23;
+ <span class="symbol"><A NAME="ref_51_4">A_ALTCHARSET_First</A></span> : <b>constant</b> := 22;
+ <span class="symbol"><A NAME="ref_52_4">A_ALTCHARSET_Last</A></span> : <b>constant</b> := 22;
+ <span class="symbol"><A NAME="ref_53_4">A_HORIZONTAL_First</A></span> : <b>constant</b> := 25;
+ <span class="symbol"><A NAME="ref_54_4">A_HORIZONTAL_Last</A></span> : <b>constant</b> := 25;
+ <span class="symbol"><A NAME="ref_55_4">A_LEFT_First</A></span> : <b>constant</b> := 26;
+ <span class="symbol"><A NAME="ref_56_4">A_LEFT_Last</A></span> : <b>constant</b> := 26;
+ <span class="symbol"><A NAME="ref_57_4">A_LOW_First</A></span> : <b>constant</b> := 27;
+ <span class="symbol"><A NAME="ref_58_4">A_LOW_Last</A></span> : <b>constant</b> := 27;
+ <span class="symbol"><A NAME="ref_59_4">A_RIGHT_First</A></span> : <b>constant</b> := 28;
+ <span class="symbol"><A NAME="ref_60_4">A_RIGHT_Last</A></span> : <b>constant</b> := 28;
+ <span class="symbol"><A NAME="ref_61_4">A_TOP_First</A></span> : <b>constant</b> := 29;
+ <span class="symbol"><A NAME="ref_62_4">A_TOP_Last</A></span> : <b>constant</b> := 29;
+ <span class="symbol"><A NAME="ref_63_4">A_VERTICAL_First</A></span> : <b>constant</b> := 30;
+ <span class="symbol"><A NAME="ref_64_4">A_VERTICAL_Last</A></span> : <b>constant</b> := 30;
+ <span class="symbol"><A NAME="ref_65_4">chtype_Size</A></span> : <b>constant</b> := 32;
+
+ <span class="comment"><EM>-- predefined color numbers from color(3NCURSES)</EM></span>
+
+ <span class="symbol"><A NAME="ref_69_4">COLOR_BLACK</A></span> : <b>constant</b> := 0;
+ <span class="symbol"><A NAME="ref_70_4">COLOR_RED</A></span> : <b>constant</b> := 1;
+ <span class="symbol"><A NAME="ref_71_4">COLOR_GREEN</A></span> : <b>constant</b> := 2;
+ <span class="symbol"><A NAME="ref_72_4">COLOR_YELLOW</A></span> : <b>constant</b> := 3;
+ <span class="symbol"><A NAME="ref_73_4">COLOR_BLUE</A></span> : <b>constant</b> := 4;
+ <span class="symbol"><A NAME="ref_74_4">COLOR_MAGENTA</A></span> : <b>constant</b> := 5;
+ <span class="symbol"><A NAME="ref_75_4">COLOR_CYAN</A></span> : <b>constant</b> := 6;
+ <span class="symbol"><A NAME="ref_76_4">COLOR_WHITE</A></span> : <b>constant</b> := 7;
+
+ <span class="comment"><EM>-- ETI return codes from ncurses.h</EM></span>
+
+ <span class="symbol"><A NAME="ref_80_4">E_OK</A></span> : <b>constant</b> := 0;
+ <span class="symbol"><A NAME="ref_81_4">E_SYSTEM_ERROR</A></span> : <b>constant</b> := -1;
+ <span class="symbol"><A NAME="ref_82_4">E_BAD_ARGUMENT</A></span> : <b>constant</b> := -2;
+ <span class="symbol"><A NAME="ref_83_4">E_POSTED</A></span> : <b>constant</b> := -3;
+ <span class="symbol"><A NAME="ref_84_4">E_CONNECTED</A></span> : <b>constant</b> := -4;
+ <span class="symbol"><A NAME="ref_85_4">E_BAD_STATE</A></span> : <b>constant</b> := -5;
+ <span class="symbol"><A NAME="ref_86_4">E_NO_ROOM</A></span> : <b>constant</b> := -6;
+ <span class="symbol"><A NAME="ref_87_4">E_NOT_POSTED</A></span> : <b>constant</b> := -7;
+ <span class="symbol"><A NAME="ref_88_4">E_UNKNOWN_COMMAND</A></span> : <b>constant</b> := -8;
+ <span class="symbol"><A NAME="ref_89_4">E_NO_MATCH</A></span> : <b>constant</b> := -9;
+ <span class="symbol"><A NAME="ref_90_4">E_NOT_SELECTABLE</A></span> : <b>constant</b> := -10;
+ <span class="symbol"><A NAME="ref_91_4">E_NOT_CONNECTED</A></span> : <b>constant</b> := -11;
+ <span class="symbol"><A NAME="ref_92_4">E_REQUEST_DENIED</A></span> : <b>constant</b> := -12;
+ <span class="symbol"><A NAME="ref_93_4">E_INVALID_FIELD</A></span> : <b>constant</b> := -13;
+ <span class="symbol"><A NAME="ref_94_4">E_CURRENT</A></span> : <b>constant</b> := -14;
+
+ <span class="comment"><EM>-- Input key codes not defined in any ncurses manpage</EM></span>
+
+ <span class="symbol"><A NAME="ref_98_4">KEY_MIN</A></span> : <b>constant</b> := 257;
+ <span class="symbol"><A NAME="ref_99_4">KEY_MAX</A></span> : <b>constant</b> := 511;
+ <span class="symbol"><A NAME="ref_100_4">KEY_CODE_YES</A></span> : <b>constant</b> := 256;
+
+ <span class="comment"><EM>-- Input key codes from getch(3NCURSES)</EM></span>
+
+ <span class="symbol"><A NAME="ref_104_4">KEY_BREAK</A></span> : <b>constant</b> := 257;
+ <span class="symbol"><A NAME="ref_105_4">KEY_DOWN</A></span> : <b>constant</b> := 258;
+ <span class="symbol"><A NAME="ref_106_4">KEY_UP</A></span> : <b>constant</b> := 259;
+ <span class="symbol"><A NAME="ref_107_4">KEY_LEFT</A></span> : <b>constant</b> := 260;
+ <span class="symbol"><A NAME="ref_108_4">KEY_RIGHT</A></span> : <b>constant</b> := 261;
+ <span class="symbol"><A NAME="ref_109_4">KEY_HOME</A></span> : <b>constant</b> := 262;
+ <span class="symbol"><A NAME="ref_110_4">KEY_BACKSPACE</A></span> : <b>constant</b> := 263;
+ <span class="symbol"><A NAME="ref_111_4">KEY_F0</A></span> : <b>constant</b> := 264;
+ <span class="symbol"><A NAME="ref_112_4">KEY_F1</A></span> : <b>constant</b> := 265;
+ <span class="symbol"><A NAME="ref_113_4">KEY_F2</A></span> : <b>constant</b> := 266;
+ <span class="symbol"><A NAME="ref_114_4">KEY_F3</A></span> : <b>constant</b> := 267;
+ <span class="symbol"><A NAME="ref_115_4">KEY_F4</A></span> : <b>constant</b> := 268;
+ <span class="symbol"><A NAME="ref_116_4">KEY_F5</A></span> : <b>constant</b> := 269;
+ <span class="symbol"><A NAME="ref_117_4">KEY_F6</A></span> : <b>constant</b> := 270;
+ <span class="symbol"><A NAME="ref_118_4">KEY_F7</A></span> : <b>constant</b> := 271;
+ <span class="symbol"><A NAME="ref_119_4">KEY_F8</A></span> : <b>constant</b> := 272;
+ <span class="symbol"><A NAME="ref_120_4">KEY_F9</A></span> : <b>constant</b> := 273;
+ <span class="symbol"><A NAME="ref_121_4">KEY_F10</A></span> : <b>constant</b> := 274;
+ <span class="symbol"><A NAME="ref_122_4">KEY_F11</A></span> : <b>constant</b> := 275;
+ <span class="symbol"><A NAME="ref_123_4">KEY_F12</A></span> : <b>constant</b> := 276;
+ <span class="symbol"><A NAME="ref_124_4">KEY_F13</A></span> : <b>constant</b> := 277;
+ <span class="symbol"><A NAME="ref_125_4">KEY_F14</A></span> : <b>constant</b> := 278;
+ <span class="symbol"><A NAME="ref_126_4">KEY_F15</A></span> : <b>constant</b> := 279;
+ <span class="symbol"><A NAME="ref_127_4">KEY_F16</A></span> : <b>constant</b> := 280;
+ <span class="symbol"><A NAME="ref_128_4">KEY_F17</A></span> : <b>constant</b> := 281;
+ <span class="symbol"><A NAME="ref_129_4">KEY_F18</A></span> : <b>constant</b> := 282;
+ <span class="symbol"><A NAME="ref_130_4">KEY_F19</A></span> : <b>constant</b> := 283;
+ <span class="symbol"><A NAME="ref_131_4">KEY_F20</A></span> : <b>constant</b> := 284;
+ <span class="symbol"><A NAME="ref_132_4">KEY_F21</A></span> : <b>constant</b> := 285;
+ <span class="symbol"><A NAME="ref_133_4">KEY_F22</A></span> : <b>constant</b> := 286;
+ <span class="symbol"><A NAME="ref_134_4">KEY_F23</A></span> : <b>constant</b> := 287;
+ <span class="symbol"><A NAME="ref_135_4">KEY_F24</A></span> : <b>constant</b> := 288;
+ <span class="symbol"><A NAME="ref_136_4">KEY_DL</A></span> : <b>constant</b> := 328;
+ <span class="symbol"><A NAME="ref_137_4">KEY_IL</A></span> : <b>constant</b> := 329;
+ <span class="symbol"><A NAME="ref_138_4">KEY_DC</A></span> : <b>constant</b> := 330;
+ <span class="symbol"><A NAME="ref_139_4">KEY_IC</A></span> : <b>constant</b> := 331;
+ <span class="symbol"><A NAME="ref_140_4">KEY_EIC</A></span> : <b>constant</b> := 332;
+ <span class="symbol"><A NAME="ref_141_4">KEY_CLEAR</A></span> : <b>constant</b> := 333;
+ <span class="symbol"><A NAME="ref_142_4">KEY_EOS</A></span> : <b>constant</b> := 334;
+ <span class="symbol"><A NAME="ref_143_4">KEY_EOL</A></span> : <b>constant</b> := 335;
+ <span class="symbol"><A NAME="ref_144_4">KEY_SF</A></span> : <b>constant</b> := 336;
+ <span class="symbol"><A NAME="ref_145_4">KEY_SR</A></span> : <b>constant</b> := 337;
+ <span class="symbol"><A NAME="ref_146_4">KEY_NPAGE</A></span> : <b>constant</b> := 338;
+ <span class="symbol"><A NAME="ref_147_4">KEY_PPAGE</A></span> : <b>constant</b> := 339;
+ <span class="symbol"><A NAME="ref_148_4">KEY_STAB</A></span> : <b>constant</b> := 340;
+ <span class="symbol"><A NAME="ref_149_4">KEY_CTAB</A></span> : <b>constant</b> := 341;
+ <span class="symbol"><A NAME="ref_150_4">KEY_CATAB</A></span> : <b>constant</b> := 342;
+ <span class="symbol"><A NAME="ref_151_4">KEY_ENTER</A></span> : <b>constant</b> := 343;
+ <span class="symbol"><A NAME="ref_152_4">KEY_SRESET</A></span> : <b>constant</b> := 344;
+ <span class="symbol"><A NAME="ref_153_4">KEY_RESET</A></span> : <b>constant</b> := 345;
+ <span class="symbol"><A NAME="ref_154_4">KEY_PRINT</A></span> : <b>constant</b> := 346;
+ <span class="symbol"><A NAME="ref_155_4">KEY_LL</A></span> : <b>constant</b> := 347;
+ <span class="symbol"><A NAME="ref_156_4">KEY_A1</A></span> : <b>constant</b> := 348;
+ <span class="symbol"><A NAME="ref_157_4">KEY_A3</A></span> : <b>constant</b> := 349;
+ <span class="symbol"><A NAME="ref_158_4">KEY_B2</A></span> : <b>constant</b> := 350;
+ <span class="symbol"><A NAME="ref_159_4">KEY_C1</A></span> : <b>constant</b> := 351;
+ <span class="symbol"><A NAME="ref_160_4">KEY_C3</A></span> : <b>constant</b> := 352;
+ <span class="symbol"><A NAME="ref_161_4">KEY_BTAB</A></span> : <b>constant</b> := 353;
+ <span class="symbol"><A NAME="ref_162_4">KEY_BEG</A></span> : <b>constant</b> := 354;
+ <span class="symbol"><A NAME="ref_163_4">KEY_CANCEL</A></span> : <b>constant</b> := 355;
+ <span class="symbol"><A NAME="ref_164_4">KEY_CLOSE</A></span> : <b>constant</b> := 356;
+ <span class="symbol"><A NAME="ref_165_4">KEY_COMMAND</A></span> : <b>constant</b> := 357;
+ <span class="symbol"><A NAME="ref_166_4">KEY_COPY</A></span> : <b>constant</b> := 358;
+ <span class="symbol"><A NAME="ref_167_4">KEY_CREATE</A></span> : <b>constant</b> := 359;
+ <span class="symbol"><A NAME="ref_168_4">KEY_END</A></span> : <b>constant</b> := 360;
+ <span class="symbol"><A NAME="ref_169_4">KEY_EXIT</A></span> : <b>constant</b> := 361;
+ <span class="symbol"><A NAME="ref_170_4">KEY_FIND</A></span> : <b>constant</b> := 362;
+ <span class="symbol"><A NAME="ref_171_4">KEY_HELP</A></span> : <b>constant</b> := 363;
+ <span class="symbol"><A NAME="ref_172_4">KEY_MARK</A></span> : <b>constant</b> := 364;
+ <span class="symbol"><A NAME="ref_173_4">KEY_MESSAGE</A></span> : <b>constant</b> := 365;
+ <span class="symbol"><A NAME="ref_174_4">KEY_MOVE</A></span> : <b>constant</b> := 366;
+ <span class="symbol"><A NAME="ref_175_4">KEY_NEXT</A></span> : <b>constant</b> := 367;
+ <span class="symbol"><A NAME="ref_176_4">KEY_OPEN</A></span> : <b>constant</b> := 368;
+ <span class="symbol"><A NAME="ref_177_4">KEY_OPTIONS</A></span> : <b>constant</b> := 369;
+ <span class="symbol"><A NAME="ref_178_4">KEY_PREVIOUS</A></span> : <b>constant</b> := 370;
+ <span class="symbol"><A NAME="ref_179_4">KEY_REDO</A></span> : <b>constant</b> := 371;
+ <span class="symbol"><A NAME="ref_180_4">KEY_REFERENCE</A></span> : <b>constant</b> := 372;
+ <span class="symbol"><A NAME="ref_181_4">KEY_REFRESH</A></span> : <b>constant</b> := 373;
+ <span class="symbol"><A NAME="ref_182_4">KEY_REPLACE</A></span> : <b>constant</b> := 374;
+ <span class="symbol"><A NAME="ref_183_4">KEY_RESTART</A></span> : <b>constant</b> := 375;
+ <span class="symbol"><A NAME="ref_184_4">KEY_RESUME</A></span> : <b>constant</b> := 376;
+ <span class="symbol"><A NAME="ref_185_4">KEY_SAVE</A></span> : <b>constant</b> := 377;
+ <span class="symbol"><A NAME="ref_186_4">KEY_SBEG</A></span> : <b>constant</b> := 378;
+ <span class="symbol"><A NAME="ref_187_4">KEY_SCANCEL</A></span> : <b>constant</b> := 379;
+ <span class="symbol"><A NAME="ref_188_4">KEY_SCOMMAND</A></span> : <b>constant</b> := 380;
+ <span class="symbol"><A NAME="ref_189_4">KEY_SCOPY</A></span> : <b>constant</b> := 381;
+ <span class="symbol"><A NAME="ref_190_4">KEY_SCREATE</A></span> : <b>constant</b> := 382;
+ <span class="symbol"><A NAME="ref_191_4">KEY_SDC</A></span> : <b>constant</b> := 383;
+ <span class="symbol"><A NAME="ref_192_4">KEY_SDL</A></span> : <b>constant</b> := 384;
+ <span class="symbol"><A NAME="ref_193_4">KEY_SELECT</A></span> : <b>constant</b> := 385;
+ <span class="symbol"><A NAME="ref_194_4">KEY_SEND</A></span> : <b>constant</b> := 386;
+ <span class="symbol"><A NAME="ref_195_4">KEY_SEOL</A></span> : <b>constant</b> := 387;
+ <span class="symbol"><A NAME="ref_196_4">KEY_SEXIT</A></span> : <b>constant</b> := 388;
+ <span class="symbol"><A NAME="ref_197_4">KEY_SFIND</A></span> : <b>constant</b> := 389;
+ <span class="symbol"><A NAME="ref_198_4">KEY_SHELP</A></span> : <b>constant</b> := 390;
+ <span class="symbol"><A NAME="ref_199_4">KEY_SHOME</A></span> : <b>constant</b> := 391;
+ <span class="symbol"><A NAME="ref_200_4">KEY_SIC</A></span> : <b>constant</b> := 392;
+ <span class="symbol"><A NAME="ref_201_4">KEY_SLEFT</A></span> : <b>constant</b> := 393;
+ <span class="symbol"><A NAME="ref_202_4">KEY_SMESSAGE</A></span> : <b>constant</b> := 394;
+ <span class="symbol"><A NAME="ref_203_4">KEY_SMOVE</A></span> : <b>constant</b> := 395;
+ <span class="symbol"><A NAME="ref_204_4">KEY_SNEXT</A></span> : <b>constant</b> := 396;
+ <span class="symbol"><A NAME="ref_205_4">KEY_SOPTIONS</A></span> : <b>constant</b> := 397;
+ <span class="symbol"><A NAME="ref_206_4">KEY_SPREVIOUS</A></span> : <b>constant</b> := 398;
+ <span class="symbol"><A NAME="ref_207_4">KEY_SPRINT</A></span> : <b>constant</b> := 399;
+ <span class="symbol"><A NAME="ref_208_4">KEY_SREDO</A></span> : <b>constant</b> := 400;
+ <span class="symbol"><A NAME="ref_209_4">KEY_SREPLACE</A></span> : <b>constant</b> := 401;
+ <span class="symbol"><A NAME="ref_210_4">KEY_SRIGHT</A></span> : <b>constant</b> := 402;
+ <span class="symbol"><A NAME="ref_211_4">KEY_SRSUME</A></span> : <b>constant</b> := 403;
+ <span class="symbol"><A NAME="ref_212_4">KEY_SSAVE</A></span> : <b>constant</b> := 404;
+ <span class="symbol"><A NAME="ref_213_4">KEY_SSUSPEND</A></span> : <b>constant</b> := 405;
+ <span class="symbol"><A NAME="ref_214_4">KEY_SUNDO</A></span> : <b>constant</b> := 406;
+ <span class="symbol"><A NAME="ref_215_4">KEY_SUSPEND</A></span> : <b>constant</b> := 407;
+ <span class="symbol"><A NAME="ref_216_4">KEY_UNDO</A></span> : <b>constant</b> := 408;
+ <span class="symbol"><A NAME="ref_217_4">KEY_MOUSE</A></span> : <b>constant</b> := 409;
+ <span class="symbol"><A NAME="ref_218_4">KEY_RESIZE</A></span> : <b>constant</b> := 410;
+
+ <span class="comment"><EM>-- alternate character codes (ACS) from addch(3NCURSES)</EM></span>
+
+ <span class="symbol"><A NAME="ref_222_4">ACS_ULCORNER</A></span> : <b>constant</b> := 108;
+ <span class="symbol"><A NAME="ref_223_4">ACS_LLCORNER</A></span> : <b>constant</b> := 109;
+ <span class="symbol"><A NAME="ref_224_4">ACS_URCORNER</A></span> : <b>constant</b> := 107;
+ <span class="symbol"><A NAME="ref_225_4">ACS_LRCORNER</A></span> : <b>constant</b> := 106;
+ <span class="symbol"><A NAME="ref_226_4">ACS_LTEE</A></span> : <b>constant</b> := 116;
+ <span class="symbol"><A NAME="ref_227_4">ACS_RTEE</A></span> : <b>constant</b> := 117;
+ <span class="symbol"><A NAME="ref_228_4">ACS_BTEE</A></span> : <b>constant</b> := 118;
+ <span class="symbol"><A NAME="ref_229_4">ACS_TTEE</A></span> : <b>constant</b> := 119;
+ <span class="symbol"><A NAME="ref_230_4">ACS_HLINE</A></span> : <b>constant</b> := 113;
+ <span class="symbol"><A NAME="ref_231_4">ACS_VLINE</A></span> : <b>constant</b> := 120;
+ <span class="symbol"><A NAME="ref_232_4">ACS_PLUS</A></span> : <b>constant</b> := 110;
+ <span class="symbol"><A NAME="ref_233_4">ACS_S1</A></span> : <b>constant</b> := 111;
+ <span class="symbol"><A NAME="ref_234_4">ACS_S9</A></span> : <b>constant</b> := 115;
+ <span class="symbol"><A NAME="ref_235_4">ACS_DIAMOND</A></span> : <b>constant</b> := 96;
+ <span class="symbol"><A NAME="ref_236_4">ACS_CKBOARD</A></span> : <b>constant</b> := 97;
+ <span class="symbol"><A NAME="ref_237_4">ACS_DEGREE</A></span> : <b>constant</b> := 102;
+ <span class="symbol"><A NAME="ref_238_4">ACS_PLMINUS</A></span> : <b>constant</b> := 103;
+ <span class="symbol"><A NAME="ref_239_4">ACS_BULLET</A></span> : <b>constant</b> := 126;
+ <span class="symbol"><A NAME="ref_240_4">ACS_LARROW</A></span> : <b>constant</b> := 44;
+ <span class="symbol"><A NAME="ref_241_4">ACS_RARROW</A></span> : <b>constant</b> := 43;
+ <span class="symbol"><A NAME="ref_242_4">ACS_DARROW</A></span> : <b>constant</b> := 46;
+ <span class="symbol"><A NAME="ref_243_4">ACS_UARROW</A></span> : <b>constant</b> := 45;
+ <span class="symbol"><A NAME="ref_244_4">ACS_BOARD</A></span> : <b>constant</b> := 104;
+ <span class="symbol"><A NAME="ref_245_4">ACS_LANTERN</A></span> : <b>constant</b> := 105;
+ <span class="symbol"><A NAME="ref_246_4">ACS_BLOCK</A></span> : <b>constant</b> := 48;
+ <span class="symbol"><A NAME="ref_247_4">ACS_S3</A></span> : <b>constant</b> := 112;
+ <span class="symbol"><A NAME="ref_248_4">ACS_S7</A></span> : <b>constant</b> := 114;
+ <span class="symbol"><A NAME="ref_249_4">ACS_LEQUAL</A></span> : <b>constant</b> := 121;
+ <span class="symbol"><A NAME="ref_250_4">ACS_GEQUAL</A></span> : <b>constant</b> := 122;
+ <span class="symbol"><A NAME="ref_251_4">ACS_PI</A></span> : <b>constant</b> := 123;
+ <span class="symbol"><A NAME="ref_252_4">ACS_NEQUAL</A></span> : <b>constant</b> := 124;
+ <span class="symbol"><A NAME="ref_253_4">ACS_STERLING</A></span> : <b>constant</b> := 125;
+
+ <span class="comment"><EM>-- Menu_Options from opts(3MENU)</EM></span>
+
+ <span class="symbol"><A NAME="ref_257_4">O_ONEVALUE_First</A></span> : <b>constant</b> := 0;
+ <span class="symbol"><A NAME="ref_258_4">O_ONEVALUE_Last</A></span> : <b>constant</b> := 0;
+ <span class="symbol"><A NAME="ref_259_4">O_SHOWDESC_First</A></span> : <b>constant</b> := 1;
+ <span class="symbol"><A NAME="ref_260_4">O_SHOWDESC_Last</A></span> : <b>constant</b> := 1;
+ <span class="symbol"><A NAME="ref_261_4">O_ROWMAJOR_First</A></span> : <b>constant</b> := 2;
+ <span class="symbol"><A NAME="ref_262_4">O_ROWMAJOR_Last</A></span> : <b>constant</b> := 2;
+ <span class="symbol"><A NAME="ref_263_4">O_IGNORECASE_First</A></span> : <b>constant</b> := 3;
+ <span class="symbol"><A NAME="ref_264_4">O_IGNORECASE_Last</A></span> : <b>constant</b> := 3;
+ <span class="symbol"><A NAME="ref_265_4">O_SHOWMATCH_First</A></span> : <b>constant</b> := 4;
+ <span class="symbol"><A NAME="ref_266_4">O_SHOWMATCH_Last</A></span> : <b>constant</b> := 4;
+ <span class="symbol"><A NAME="ref_267_4">O_NONCYCLIC_First</A></span> : <b>constant</b> := 5;
+ <span class="symbol"><A NAME="ref_268_4">O_NONCYCLIC_Last</A></span> : <b>constant</b> := 5;
+ <span class="symbol"><A NAME="ref_269_4">Menu_Options_Size</A></span> : <b>constant</b> := 32;
+
+ <span class="comment"><EM>-- Item_Options from menu_opts(3MENU)</EM></span>
+
+ <span class="symbol"><A NAME="ref_273_4">O_SELECTABLE_First</A></span> : <b>constant</b> := 0;
+ <span class="symbol"><A NAME="ref_274_4">O_SELECTABLE_Last</A></span> : <b>constant</b> := 0;
+ <span class="symbol"><A NAME="ref_275_4">Item_Options_Size</A></span> : <b>constant</b> := 32;
+
+ <span class="comment"><EM>-- Field_Options from field_opts(3FORM)</EM></span>
+
+ <span class="symbol"><A NAME="ref_279_4">O_VISIBLE_First</A></span> : <b>constant</b> := 0;
+ <span class="symbol"><A NAME="ref_280_4">O_VISIBLE_Last</A></span> : <b>constant</b> := 0;
+ <span class="symbol"><A NAME="ref_281_4">O_ACTIVE_First</A></span> : <b>constant</b> := 1;
+ <span class="symbol"><A NAME="ref_282_4">O_ACTIVE_Last</A></span> : <b>constant</b> := 1;
+ <span class="symbol"><A NAME="ref_283_4">O_PUBLIC_First</A></span> : <b>constant</b> := 2;
+ <span class="symbol"><A NAME="ref_284_4">O_PUBLIC_Last</A></span> : <b>constant</b> := 2;
+ <span class="symbol"><A NAME="ref_285_4">O_EDIT_First</A></span> : <b>constant</b> := 3;
+ <span class="symbol"><A NAME="ref_286_4">O_EDIT_Last</A></span> : <b>constant</b> := 3;
+ <span class="symbol"><A NAME="ref_287_4">O_WRAP_First</A></span> : <b>constant</b> := 4;
+ <span class="symbol"><A NAME="ref_288_4">O_WRAP_Last</A></span> : <b>constant</b> := 4;
+ <span class="symbol"><A NAME="ref_289_4">O_BLANK_First</A></span> : <b>constant</b> := 5;
+ <span class="symbol"><A NAME="ref_290_4">O_BLANK_Last</A></span> : <b>constant</b> := 5;
+ <span class="symbol"><A NAME="ref_291_4">O_AUTOSKIP_First</A></span> : <b>constant</b> := 6;
+ <span class="symbol"><A NAME="ref_292_4">O_AUTOSKIP_Last</A></span> : <b>constant</b> := 6;
+ <span class="symbol"><A NAME="ref_293_4">O_NULLOK_First</A></span> : <b>constant</b> := 7;
+ <span class="symbol"><A NAME="ref_294_4">O_NULLOK_Last</A></span> : <b>constant</b> := 7;
+ <span class="symbol"><A NAME="ref_295_4">O_PASSOK_First</A></span> : <b>constant</b> := 8;
+ <span class="symbol"><A NAME="ref_296_4">O_PASSOK_Last</A></span> : <b>constant</b> := 8;
+ <span class="symbol"><A NAME="ref_297_4">O_STATIC_First</A></span> : <b>constant</b> := 9;
+ <span class="symbol"><A NAME="ref_298_4">O_STATIC_Last</A></span> : <b>constant</b> := 9;
+ <span class="symbol"><A NAME="ref_299_4">Field_Options_Size</A></span> : <b>constant</b> := 32;
+
+ <span class="comment"><EM>-- Field_Options from opts(3FORM)</EM></span>
+
+ <span class="symbol"><A NAME="ref_303_4">O_NL_OVERLOAD_First</A></span> : <b>constant</b> := 0;
+ <span class="symbol"><A NAME="ref_304_4">O_NL_OVERLOAD_Last</A></span> : <b>constant</b> := 0;
+ <span class="symbol"><A NAME="ref_305_4">O_BS_OVERLOAD_First</A></span> : <b>constant</b> := 1;
+ <span class="symbol"><A NAME="ref_306_4">O_BS_OVERLOAD_Last</A></span> : <b>constant</b> := 1;
+
+ <span class="comment"><EM>-- MEVENT structure from mouse(3NCURSES)</EM></span>
+
+ <span class="symbol"><A NAME="ref_310_4">MEVENT_id_First</A></span> : <b>constant</b> := 0;
+ <span class="symbol"><A NAME="ref_311_4">MEVENT_id_Last</A></span> : <b>constant</b> := 15;
+ <span class="symbol"><A NAME="ref_312_4">MEVENT_x_First</A></span> : <b>constant</b> := 32;
+ <span class="symbol"><A NAME="ref_313_4">MEVENT_x_Last</A></span> : <b>constant</b> := 63;
+ <span class="symbol"><A NAME="ref_314_4">MEVENT_y_First</A></span> : <b>constant</b> := 64;
+ <span class="symbol"><A NAME="ref_315_4">MEVENT_y_Last</A></span> : <b>constant</b> := 95;
+ <span class="symbol"><A NAME="ref_316_4">MEVENT_z_First</A></span> : <b>constant</b> := 96;
+ <span class="symbol"><A NAME="ref_317_4">MEVENT_z_Last</A></span> : <b>constant</b> := 127;
+ <span class="symbol"><A NAME="ref_318_4">MEVENT_bstate_First</A></span> : <b>constant</b> := 128;
+ <span class="symbol"><A NAME="ref_319_4">MEVENT_bstate_Last</A></span> : <b>constant</b> := 159;
+ <span class="symbol"><A NAME="ref_320_4">MEVENT_Size</A></span> : <b>constant</b> := 160;
+
+ <span class="comment"><EM>-- mouse events from mouse(3NCURSES)</EM></span>
+
+ <span class="symbol"><A NAME="ref_324_4">BUTTON1_RELEASED</A></span> : <b>constant</b> := 1;
+ <span class="symbol"><A NAME="ref_325_4">BUTTON1_PRESSED</A></span> : <b>constant</b> := 2;
+ <span class="symbol"><A NAME="ref_326_4">BUTTON1_CLICKED</A></span> : <b>constant</b> := 4;
+ <span class="symbol"><A NAME="ref_327_4">BUTTON1_DOUBLE_CLICKED</A></span> : <b>constant</b> := 8;
+ <span class="symbol"><A NAME="ref_328_4">BUTTON1_TRIPLE_CLICKED</A></span> : <b>constant</b> := 16;
+ <span class="symbol"><A NAME="ref_329_4">all_events_button_1</A></span> : <b>constant</b> := 31;
+ <span class="symbol"><A NAME="ref_330_4">BUTTON2_RELEASED</A></span> : <b>constant</b> := 32;
+ <span class="symbol"><A NAME="ref_331_4">BUTTON2_PRESSED</A></span> : <b>constant</b> := 64;
+ <span class="symbol"><A NAME="ref_332_4">BUTTON2_CLICKED</A></span> : <b>constant</b> := 128;
+ <span class="symbol"><A NAME="ref_333_4">BUTTON2_DOUBLE_CLICKED</A></span> : <b>constant</b> := 256;
+ <span class="symbol"><A NAME="ref_334_4">BUTTON2_TRIPLE_CLICKED</A></span> : <b>constant</b> := 512;
+ <span class="symbol"><A NAME="ref_335_4">all_events_button_2</A></span> : <b>constant</b> := 992;
+ <span class="symbol"><A NAME="ref_336_4">BUTTON3_RELEASED</A></span> : <b>constant</b> := 1024;
+ <span class="symbol"><A NAME="ref_337_4">BUTTON3_PRESSED</A></span> : <b>constant</b> := 2048;
+ <span class="symbol"><A NAME="ref_338_4">BUTTON3_CLICKED</A></span> : <b>constant</b> := 4096;
+ <span class="symbol"><A NAME="ref_339_4">BUTTON3_DOUBLE_CLICKED</A></span> : <b>constant</b> := 8192;
+ <span class="symbol"><A NAME="ref_340_4">BUTTON3_TRIPLE_CLICKED</A></span> : <b>constant</b> := 16384;
+ <span class="symbol"><A NAME="ref_341_4">all_events_button_3</A></span> : <b>constant</b> := 31744;
+ <span class="symbol"><A NAME="ref_342_4">BUTTON4_RELEASED</A></span> : <b>constant</b> := 32768;
+ <span class="symbol"><A NAME="ref_343_4">BUTTON4_PRESSED</A></span> : <b>constant</b> := 65536;
+ <span class="symbol"><A NAME="ref_344_4">BUTTON4_CLICKED</A></span> : <b>constant</b> := 131072;
+ <span class="symbol"><A NAME="ref_345_4">BUTTON4_DOUBLE_CLICKED</A></span> : <b>constant</b> := 262144;
+ <span class="symbol"><A NAME="ref_346_4">BUTTON4_TRIPLE_CLICKED</A></span> : <b>constant</b> := 524288;
+ <span class="symbol"><A NAME="ref_347_4">all_events_button_4</A></span> : <b>constant</b> := 1015808;
+ <span class="symbol"><A NAME="ref_348_4">BUTTON_CTRL</A></span> : <b>constant</b> := 33554432;
+ <span class="symbol"><A NAME="ref_349_4">BUTTON_SHIFT</A></span> : <b>constant</b> := 67108864;
+ <span class="symbol"><A NAME="ref_350_4">BUTTON_ALT</A></span> : <b>constant</b> := 134217728;
+ <span class="symbol"><A NAME="ref_351_4">REPORT_MOUSE_POSITION</A></span> : <b>constant</b> := 268435456;
+ <span class="symbol"><A NAME="ref_352_4">ALL_MOUSE_EVENTS</A></span> : <b>constant</b> := 268435455;
+
+ <span class="comment"><EM>-- trace selection from trace(3NCURSES)</EM></span>
+
+ <span class="symbol"><A NAME="ref_356_4">TRACE_TIMES_First</A></span> : <b>constant</b> := 0;
+ <span class="symbol"><A NAME="ref_357_4">TRACE_TIMES_Last</A></span> : <b>constant</b> := 0;
+ <span class="symbol"><A NAME="ref_358_4">TRACE_TPUTS_First</A></span> : <b>constant</b> := 1;
+ <span class="symbol"><A NAME="ref_359_4">TRACE_TPUTS_Last</A></span> : <b>constant</b> := 1;
+ <span class="symbol"><A NAME="ref_360_4">TRACE_UPDATE_First</A></span> : <b>constant</b> := 2;
+ <span class="symbol"><A NAME="ref_361_4">TRACE_UPDATE_Last</A></span> : <b>constant</b> := 2;
+ <span class="symbol"><A NAME="ref_362_4">TRACE_MOVE_First</A></span> : <b>constant</b> := 3;
+ <span class="symbol"><A NAME="ref_363_4">TRACE_MOVE_Last</A></span> : <b>constant</b> := 3;
+ <span class="symbol"><A NAME="ref_364_4">TRACE_CHARPUT_First</A></span> : <b>constant</b> := 4;
+ <span class="symbol"><A NAME="ref_365_4">TRACE_CHARPUT_Last</A></span> : <b>constant</b> := 4;
+ <span class="symbol"><A NAME="ref_366_4">TRACE_CALLS_First</A></span> : <b>constant</b> := 5;
+ <span class="symbol"><A NAME="ref_367_4">TRACE_CALLS_Last</A></span> : <b>constant</b> := 5;
+ <span class="symbol"><A NAME="ref_368_4">TRACE_VIRTPUT_First</A></span> : <b>constant</b> := 6;
+ <span class="symbol"><A NAME="ref_369_4">TRACE_VIRTPUT_Last</A></span> : <b>constant</b> := 6;
+ <span class="symbol"><A NAME="ref_370_4">TRACE_IEVENT_First</A></span> : <b>constant</b> := 7;
+ <span class="symbol"><A NAME="ref_371_4">TRACE_IEVENT_Last</A></span> : <b>constant</b> := 7;
+ <span class="symbol"><A NAME="ref_372_4">TRACE_BITS_First</A></span> : <b>constant</b> := 8;
+ <span class="symbol"><A NAME="ref_373_4">TRACE_BITS_Last</A></span> : <b>constant</b> := 8;
+ <span class="symbol"><A NAME="ref_374_4">TRACE_ICALLS_First</A></span> : <b>constant</b> := 9;
+ <span class="symbol"><A NAME="ref_375_4">TRACE_ICALLS_Last</A></span> : <b>constant</b> := 9;
+ <span class="symbol"><A NAME="ref_376_4">TRACE_CCALLS_First</A></span> : <b>constant</b> := 10;
+ <span class="symbol"><A NAME="ref_377_4">TRACE_CCALLS_Last</A></span> : <b>constant</b> := 10;
+ <span class="symbol"><A NAME="ref_378_4">TRACE_DATABASE_First</A></span> : <b>constant</b> := 11;
+ <span class="symbol"><A NAME="ref_379_4">TRACE_DATABASE_Last</A></span> : <b>constant</b> := 11;
+ <span class="symbol"><A NAME="ref_380_4">TRACE_ATTRS_First</A></span> : <b>constant</b> := 12;
+ <span class="symbol"><A NAME="ref_381_4">TRACE_ATTRS_Last</A></span> : <b>constant</b> := 12;
+ <span class="symbol"><A NAME="ref_382_4">Trace_Size</A></span> : <b>constant</b> := 32;
+<b>end</b> <A HREF="terminal_interface__ads.htm#ref_42_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>;
+</PRE></BODY></HTML>
diff --git a/doc/html/announce.html b/doc/html/announce.html
index ffc115de1e66..45c0c1254da0 100644
--- a/doc/html/announce.html
+++ b/doc/html/announce.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
- $Id: announce.html,v 1.56 2013/05/17 23:34:26 tom Exp $
+ $Id: announce.html,v 1.59 2018/01/27 02:10:10 tom Exp $
****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2018 Free 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,361 +28,2932 @@
* authorization. *
****************************************************************************
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta name="generator" content=
- "HTML Tidy for Linux/x86 (vers 6 November 2007), see www.w3.org">
+ "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
- <title>Announcing ncurses 5.9</title>
+ <title>Announcing ncurses 6.1</title>
<link rev="made" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content=
"text/html; charset=us-ascii">
+ <style type="text/css">
+p,li { max-width:700px; }
+ dd { max-width:630px; }
+ *.main-name {
+ font-style: italic;
+ font-variant: small-caps;
+ }
+ *.part-name {
+ font-family: "Andale Mono", "Monotype.com", monospace;
+ font-size: 12pt;
+ font-weight: bold;
+ }
+ </style>
</head>
<body>
- <h1>Announcing ncurses 5.9</h1>The ncurses (new curses)
+ <h1 class="no-header">Announcing ncurses 6.1</h1>
+
+ <h2><a name="h2-overview" id="h2-overview">Overview</a></h2>
+
+ <p>The <span class="main-name">ncurses</span> (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.
+ Release 4.0 (SVr4), 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 SVr4-curses
+ enhancements over BSD curses. SVr4 curses became the basis of
+ X/Open Curses.</p>
<p>In mid-June 1995, the maintainer of 4.4BSD curses declared
that he considered 4.4BSD curses obsolete, and encouraged the
- keepers of Unix releases such as BSD/OS, FreeBSD and NetBSD to
- switch over to ncurses.</p>
+ keepers of <span class="main-name">unix</span> releases such as
+ BSD/OS, FreeBSD and NetBSD to switch over to <span class=
+ "main-name">ncurses</span>.</p>
+
+ <p>Since 1995, <span class="main-name">ncurses</span> has been
+ ported to many systems:</p>
- <p>The ncurses code was developed under GNU/Linux. It has been in
- use for some time with OpenBSD as the system curses library, and
- on FreeBSD and NetBSD as an external package. It should port
- easily to any ANSI/POSIX-conforming UNIX. It has even been ported
- to OS/2 Warp!</p>
+ <ul>
+ <li>It is used in almost every system based on the Linux kernel
+ (aside from some embedded applications).</li>
+
+ <li>It is used as the system curses library on OpenBSD, FreeBSD
+ and OSX.</li>
+
+ <li>It is used in environments such as Cygwin and MinGW. The
+ first of these was EMX on OS/2 Warp.</li>
+
+ <li>It is used (though usually not as the <em>system</em>
+ curses) on all of the vendor <span class=
+ "main-name">unix</span> systems, e.g., AIX, HP-UX, IRIX64, SCO,
+ Solaris, Tru64.</li>
+
+ <li>It should work readily on any ANSI/POSIX-conforming
+ <span class="main-name">unix</span>.</li>
+ </ul>
<p>The distribution includes the library and support utilities,
- including a terminfo compiler tic(1), a decompiler infocmp(1),
- clear(1), tput(1), tset(1), and a termcap conversion tool
- captoinfo(1). Full manual pages are provided for the library and
- tools.</p>
-
- <p>The ncurses distribution is available via anonymous FTP at the
- GNU distribution site <a href=
- "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a>&nbsp;.<br>
-
- It is also available at <a href=
- "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a>&nbsp;.</p>
-
- <h1>Release Notes</h1>This release is designed to be upward
- compatible from ncurses 5.0 through 5.8; very few applications
- will require recompilation, depending on the platform. These are
- the highlights from the change-log since ncurses 5.8 release.
- <p>
- This is a bug-fix release, correcting a small number of urgent problems
- in the ncurses library from the 5.8 release.
- <p>
- It also improves the Ada95 binding:
- <ul>
- <li>fixes a longstanding portability problem with its use of the
- <a href="http://invisible-island.net/ncurses/man/form_fieldtype.3x">set_field_type</a>
- function. Because that function uses variable-length argument lists,
- its interface with gnat does not work with certain platforms.
- <li>improves configurability and portability, particularly when built
- separately from the main ncurses tree. The 5.8 release introduced
- scripts which can be used to construct separate tarballs for the
- Ada95 and ncurses examples.
- <p>Those were a proof of concept. For the 5.9 release, those
- scripts are augmented with rpm- and dpkg-scripts used in test builds
- against a variety of gnat- and system ncurses versions as old as
- gnat 3.15 and ncurses 5.4 (see snapshots and systems tested
- <a href="http://invisible-island.net/ncurses/ncurses-Ada95.html">here</a>.
- <li>additional improvements were made for portability of the
- ncurses examples, adding rpm- and dpkg-scripts for test-builds.
- See
- <a href="http://invisible-island.net/ncurses/ncurses-examples.html">this page</a>
- for snapshots and other information.
- </ul>
-
- <h1>Features of Ncurses</h1>The ncurses package is fully
- compatible with SVr4 (System V Release 4) curses:
-
- <ul>
- <li>All 257 of the SVr4 calls have been implemented (and are
- documented).</li>
-
- <li>Full support for SVr4 curses features including keyboard
- mapping, color, forms-drawing with ACS characters, and
- automatic recognition of keypad and function keys.</li>
-
- <li>An emulation of the SVr4 panels library, supporting a stack
- of windows with backing store, is included.</li>
-
- <li>An emulation of the SVr4 menus library, supporting a
- uniform but flexible interface for menu programming, is
- included.</li>
-
- <li>An emulation of the SVr4 form library, supporting data
- collection through on-screen forms, is included.</li>
-
- <li>Binary terminfo entries generated by the ncurses tic(1)
- implementation are bit-for-bit-compatible with the entry format
- SVr4 curses uses.</li>
-
- <li>The utilities have options to allow you to filter terminfo
- entries for use with less capable
- <strong>curses</strong>/<strong>terminfo</strong> versions such
- as the HP/UX and AIX ports.</li>
- </ul>The ncurses package also has many useful extensions over
- SVr4:
-
- <ul>
- <li>The API is 8-bit clean and base-level conformant with the
- X/OPEN curses specification, XSI curses (that is, it implements
- all BASE level features, and most EXTENDED features). It
- includes many function calls not supported under SVr4 curses
- (but portability of all calls is documented so you can use the
- SVr4 subset only).</li>
-
- <li>Unlike SVr3 curses, ncurses can write to the
- rightmost-bottommost corner of the screen if your terminal has
- an insert-character capability.</li>
-
- <li>Ada95 and C++ bindings.</li>
-
- <li>Support for mouse event reporting with X Window xterm and
- FreeBSD and OS/2 console windows.</li>
-
- <li>Extended mouse support via Alessandro Rubini's gpm
- package.</li>
-
- <li>The function <code>wresize</code> allows you to resize
- windows, preserving their data.</li>
-
- <li>The function <code>use_default_colors</code> allows you to
- use the terminal's default colors for the default color pair,
- achieving the effect of transparent colors.</li>
-
- <li>The functions <code>keyok</code> and
- <code>define_key</code> allow you to better control the use of
- function keys, e.g., disabling the ncurses KEY_MOUSE, or by
- defining more than one control sequence to map to a given key
- code.</li>
-
- <li>Support for 256-color terminals, such as modern xterm, when
- configured using the <code>--enable-ext-colors</code>
- option.</li>
-
- <li>Support for 16-color terminals, such as <em>aixterm</em>
- and <em>modern xterm</em>.</li>
-
- <li>Better cursor-movement optimization. The package now
- features a cursor-local-movement computation more efficient
- than either BSD's or System V's.</li>
-
- <li>Super hardware scrolling support. The screen-update code
- incorporates a novel, simple, and cheap algorithm that enables
- it to make optimal use of hardware scrolling, line-insertion,
- and line-deletion for screen-line movements. This algorithm is
- more powerful than the 4.4BSD curses <code>quickch</code>
- routine.</li>
-
- <li>Real support for terminals with the magic-cookie glitch.
- The screen-update code will refrain from drawing a highlight if
- the magic- cookie unattributed spaces required just before the
- beginning and after the end would step on a non-space
- character. It will automatically shift highlight boundaries
- when doing so would make it possible to draw the highlight
- without changing the visual appearance of the screen.</li>
-
- <li>It is possible to generate the library with a list of
- pre-loaded fallback entries linked to it so that it can serve
- those terminal types even when no terminfo tree or termcap file
- is accessible (this may be useful for support of
- screen-oriented programs that must run in single-user
- mode).</li>
+ including</p>
- <li>The tic(1)/captoinfo utility provided with ncurses has the
- ability to translate many termcaps from the XENIX, IBM and
- AT&amp;T extension sets.</li>
-
- <li>A BSD-like tset(1) utility is provided.</li>
-
- <li>The ncurses library and utilities will automatically read
- terminfo entries from $HOME/.terminfo if it exists, and compile
- to that directory if it exists and the user has no write access
- to the system directory. This feature makes it easier for users
- to have personal terminfo entries without giving up access to
- the system terminfo directory.</li>
-
- <li>You may specify a path of directories to search for
- compiled descriptions with the environment variable
- TERMINFO_DIRS (this generalizes the feature provided by
- TERMINFO under stock System V.)</li>
-
- <li>In terminfo source files, use capabilities may refer not
- just to other entries in the same source file (as in System V)
- but also to compiled entries in either the system terminfo
- directory or the user's $HOME/.terminfo directory.</li>
-
- <li>A script (<strong>capconvert</strong>) is provided to help
- BSD users transition from termcap to terminfo. It gathers the
- information in a TERMCAP environment variable and/or a
- ~/.termcap local entries file and converts it to an equivalent
- local terminfo tree under $HOME/.terminfo.</li>
-
- <li>Automatic fallback to the /etc/termcap file can be compiled
- in when it is not possible to build a terminfo tree. This
- feature is neither fast nor cheap, you don't want to use it
- unless you have to, but it's there.</li>
-
- <li>The table-of-entries utility <strong>toe</strong> makes it
- easy for users to see exactly what terminal types are available
- on the system.</li>
-
- <li>The library meets the XSI requirement that every macro
- entry point have a corresponding function which may be linked
- (and will be prototype-checked) if the macro definition is
- disabled with <code>#undef</code>.</li>
-
- <li>An HTML "Introduction to Programming with NCURSES" document
- provides a narrative introduction to the curses programming
- interface.</li>
- </ul>
-
- <h1>State of the Package</h1>Numerous bugs present in earlier
- versions have been fixed; the library is far more reliable than
- it used to be. Bounds checking in many `dangerous' entry points
- has been improved. The code is now type-safe according to gcc
- -Wall. The library has been checked for malloc leaks and arena
- corruption by the Purify memory-allocation tester.
-
- <p>The ncurses code has been tested with a wide variety of
- applications including (versions starting with those noted):</p>
+ <ul>
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/captoinfo.1m.html"><span class="part-name">
+ captoinfo</span></a>, a termcap conversion tool</li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html"><span class="part-name">
+ clear</span></a>, utility for clearing the screen</li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/infocmp.1m.html"><span class="part-name">
+ infocmp</span></a>, the terminfo decompiler</li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/tabs.1.html"><span class="part-name">
+ tabs</span></a>, set tabs on a terminal</li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name">
+ tic</span></a>, the terminfo compiler</li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/toe.1m.html"><span class="part-name">
+ toe</span></a>, list (table of) terminfo entries</li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/tput.1.html"><span class="part-name">
+ tput</span></a>, utility for retrieving terminal capabilities
+ in shell scripts</li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/tset.1.html"><span class="part-name">
+ tset</span></a>, to initialize the terminal</li>
+ </ul>
- <dl>
- <dt>cdk</dt>
+ <p>Full manual pages are provided for the library and tools.</p>
- <dd>Curses Development Kit<br>
- <a href=
- "http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</a><br>
+ <p>The <span class="main-name">ncurses</span> distribution is
+ available at <span class="main-name">ncurses</span>' <a href=
+ "https://invisible-island.net/ncurses/">homepage</a>:</p>
+ <blockquote>
+ <p><a href=
+ "ftp://ftp.invisible-island.net/ncurses/">ftp://ftp.invisible-island.net/ncurses/</a>
+ or<br>
<a href=
- "http://www.vexus.ca/products/CDK/">http://www.vexus.ca/products/CDK/</a></dd>
+ "https://invisible-mirror.net/archives/ncurses/">https://invisible-mirror.net/archives/ncurses/</a>&nbsp;.</p>
+ </blockquote>
- <dt>ded</dt>
+ <p>It is also available via anonymous FTP at the GNU distribution
+ site</p>
- <dd>directory-editor<br>
- <a href=
- "http://invisible-island.net/ded/">http://invisible-island.net/ded/</a></dd>
+ <blockquote>
+ <p><a href=
+ "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a>&nbsp;.</p>
+ </blockquote>
- <dt>dialog</dt>
+ <h2><a name="h2-release-notes" id="h2-release-notes">Release
+ Notes</a></h2>
- <dd>the underlying application used in Slackware's setup, and
- the basis for similar applications on GNU/Linux.<br>
- <a href=
- "http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</a></dd>
+ <p>These notes are for <span class="main-name">ncurses</span>
+ 6.1, released <strong>January 27, 2018</strong>.</p>
- <dt>lynx</dt>
+ <p>This release is designed to be source-compatible with
+ <span class="main-name">ncurses</span> 5.0 through 6.0; providing
+ extensions to the application binary interface (ABI). Although
+ the source can still be configured to support the <span class=
+ "main-name">ncurses</span> 5 ABI, the intent of the release is to
+ provide extensions to the <span class="main-name">ncurses</span>
+ <strong>6</strong> ABI:</p>
- <dd>the character-screen WWW browser<br>
- <a href=
- "http://lynx.isc.org/release/">http://lynx.isc.org/release/</a></dd>
+ <ul>
+ <li>
+ <p>improve integration of <span class="part-name">tput</span>
+ and <span class="part-name">tset</span></p>
+ </li>
+
+ <li>
+ <p>provide support for extended numeric capabilities.</p>
+ </li>
+ </ul>
- <dt>Midnight Commander</dt>
+ <p>There are, of course, numerous other improvements, listed in
+ this announcement.</p>
- <dd>file manager<br>
- <a href=
- "http://www.midnight-commander.org/">http://www.midnight-commander.org/</a></dd>
+ <p>The release notes also mention some bug-fixes, but are focused
+ on new features and improvements to existing features since
+ <span class="main-name">ncurses</span> 6.0 release.</p>
+
+ <h3><a name="h3-library" id="h3-library">Library
+ improvements</a></h3>
+
+ <h4><a name="h4-new-library" id="h4-new-library">New
+ features</a></h4>
+
+ <p>The improved integration of <span class=
+ "part-name">tput</span> and <span class="part-name">tset</span>
+ made only small changes to the libraries. However, supporting
+ extended numeric capabilities required a few changes:</p>
- <dt>mutt</dt>
+ <ul>
+ <li>
+ <p>The <code>TERMINAL</code> structure in
+ <code>&lt;term.h&gt;</code> is now opaque. Doing that allowed
+ making the structure larger, to hold the extended numeric
+ data.</p>
+
+ <p>A few applications required changes during development of
+ <span class="main-name">ncurses&nbsp;6.1</span> because those
+ applications misused the members of that structure, e.g.,
+ directly modifying it rather than using <a href=
+ "https://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-def_prog_mode_-def_shell_mode">
+ def_prog_mode</a>.</p>
+ </li>
+
+ <li>
+ <p>Having made <code>TERMINAL</code> opaque (and because none
+ of the library functions use anything except a pointer to
+ <code>TERMINAL</code>), it was possible to increase the size
+ of the structure, adding to the end.</p>
+
+ <p>Existing applications which were linked to the
+ <span class="part-name">ncurses&nbsp;6.0</span> high-level
+ (<em>ncurses</em>, <em>ncursesw</em>) and low-level
+ (<em>tinfo</em>, <em>tinfo</em>) libraries should not require
+ re-linking since the binary interface did not change, nor did
+ the structure offsets with <code>TERMINAL</code> change.</p>
+
+ <p>A few applications use the inner <code>TERMTYPE</code>
+ structure's offsets to refer to terminfo capabilities within
+ that structure. Again, those do not require modification
+ because their offsets within <code>TERMINAL</code> did not
+ change.</p>
+ </li>
+
+ <li>
+ <p>When configured for wide-characters, i.e.,
+ &ldquo;ncursesw&rdquo; the <code>TERMINAL</code> structure is
+ extended.</p>
+
+ <p>The new data in <code>TERMINAL</code> holds the same
+ information as <code>TERMTYPE</code>, but with larger numbers
+ (&ldquo;int&rdquo; versus &ldquo;short&rdquo;). It is named
+ <code>TERMTYPE2</code>.</p>
+
+ <p>The library uses this structure internally in preference
+ to <code>TERMTYPE</code>, referring to <code>TERMTYPE</code>
+ only to initialize it for applications that use the
+ capabilities defined in <code>&lt;term.h&gt;</code></p>
+ </li>
+
+ <li>
+ <p>When configured for 8-bit (narrow) characters, the
+ <code>TERMTYPE2</code> structure is not used.</p>
+ </li>
+
+ <li>The updated application binary interface is 6.1.20171230
+ (used for new <a href=
+ "https://invisible-island.net/ncurses/ncurses-mapsyms.html">versioned
+ symbols</a>), although the interface changes were developed
+ several months previously.</li>
+ </ul>
+
+ <p>The motivation for making this extension came from noticing
+ that <a href=
+ "https://invisible-island.net/ncurses/tctest.html#bsd42-numeric-caps">
+ termcap applications</a> could (though not <a href=
+ "https://invisible-island.net/ncurses/ncurses-slang.html#cause_numbers">
+ realistically</a>) use larger numbers than would fit in 16-bits,
+ and the fact that the number of color pairs for a 256-color xterm
+ could not be expressed in terminfo (i.e., 32767 versus 65536).
+ Also, a few terminals support direct-colors, which could use the
+ extension.</p>
+
+ <p>Generally speaking, applications that use internal details of
+ a library are unsupported. There was exactly one exception for
+ <span class="main-name">ncurses</span>: the <span class=
+ "main-name">tack</span> program <em>used</em> the internal
+ details of <code>TERMINAL</code>, because it provides an
+ ncurses-specific feature for interactively modifying a terminfo
+ description and writing the updated description to a text-file.
+ It was possible to not only separate <span class=
+ "main-name">tack</span> from these <a href=
+ "https://invisible-island.net/ncurses/tack.html#portable">internal
+ details of <span class="main-name">ncurses</span></a>, but to
+ generalize it so that the program works with Unix curses
+ (omitting the ncurses-specific feature). That was released as
+ <a href=
+ "https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726">
+ <span class="main-name">tack</span>&nbsp;1.08</a> in July
+ 2017.</p>
+
+ <p>While making changes to <span class="main-name">tack</span> to
+ eliminate its dependency upon <span class=
+ "main-name">ncurses</span> internals, the publicly-visible
+ details of those internals were reviewed, and some symbols were
+ moved to private header files, while others were marked
+ explicitly as <span class="main-name">ncurses</span> internals.
+ Future releases of <span class="main-name">ncurses</span> may
+ eliminate some of those symbols (such as those used by
+ <span class="main-name">tack</span>&nbsp;1.07) because they are
+ neither part of the API or the ABI.</p>
+
+ <p>Using the <code>TERMTYPE2</code> extended numeric
+ capabilities, it is possible to support both color pair values
+ and color values past 32767. Taking compatibility into account,
+ developers readily understand that neither function signatures
+ nor structure offsets change. Also, existing functions have to
+ operate with the extended numbers. Most of that work is internal
+ to the library. For the external interfaces, a hybrid approach
+ was used:</p>
- <dd>mail utility<br>
- <a href="http://www.mutt.org/">http://www.mutt.org/</a></dd>
+ <ul>
+ <li>
+ <p>X/Open Curses defined function prototypes such as
+ <code>wattr_set</code> with an unused parameter, for
+ &ldquo;future&rdquo; use. After 25 years, the future is here:
+ <span class="main-name">ncurses</span> uses the parameter to
+ augment color pair values as described in the <a href=
+ "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-EXTENSIONS">
+ manual page</a>.</p>
+ </li>
+
+ <li>
+ <p>Other functions such as those defining color pairs did not
+ have a corresponding <em>reserved</em> parameter. For those,
+ <span class="main-name">ncurses</span> defines extended
+ versions such as <code>init_extended_pair</code> (versus
+ <code>init_pair</code>), <code>init_extended_color</code>
+ (versus <code>init_color</code>).</p>
+ </li>
+ </ul>
+
+ <p>Additionally, to improve performance other changes (and
+ extensions) are provided in this release:</p>
+
+ <ul>
+ <li>
+ <p>Several new functions simplify management of large sets of
+ color pairs: <code>reset_color_pairs</code>,
+ <code>alloc_pair</code>, <code>find_pair</code> and
+ <code>free_pair</code>.</p>
+ </li>
+
+ <li>
+ <p>New "RGB" extension capability for direct-color support is
+ used to improve performance of
+ <code>color_content</code>.</p>
+ </li>
+
+ <li>
+ <p>The internal <code>colorpair_t</code> is now a struct,
+ eliminating an internal 8-bit limit on colors</p>
+ </li>
+
+ <li>
+ <p>Allocation for <code>SCREEN</code>'s color-pair table
+ starts small, grows on demand up to the limit given in the
+ terminal description.</p>
+ </li>
+
+ <li>
+ <p><code>setcchar</code> and <code>getcchar</code> now treat
+ a negative color-pair as an error.</p>
+ </li>
+ </ul>
+
+ <h4><a name="h4-fixes-library" id="h4-fixes-library">Other
+ improvements</a></h4>
+
+ <p>These are new or revised features:</p>
+
+ <ul>
+ <li>
+ <p>modify <code>c++/etip.h.in</code> to accommodate
+ deprecation of throw and throws in c++17</p>
+ </li>
+
+ <li>
+ <p>add new function <code>unfocus_current_field</code></p>
+ </li>
+
+ <li>
+ <p>add option to preserve leading whitespace in form
+ fields</p>
+ </li>
+
+ <li>
+ <p>add a macro for <code>is_linetouched</code> and adjust the
+ function's return value to make it possible for most
+ applications to check for an error-return.</p>
+ </li>
+
+ <li>
+ <p>add build-time utility <code>report_offsets</code> to help
+ show when the various configurations of tinfo library are
+ compatible or not.</p>
+ </li>
+ </ul>
- <dt>ncftp</dt>
+ <p>These were done to limit or ultimately deprecate features:</p>
- <dd>file-transfer utility<br>
- <a href="http://www.ncftp.com/">http://www.ncftp.com/</a></dd>
+ <ul>
+ <li>
+ <p>drop two symbols obsoleted in 2004:
+ <code>_nc_check_termtype</code>, and
+ <code>_nc_resolve_uses</code></p>
+ </li>
+
+ <li>
+ <p>move <code>_nc_tracebits</code>, <code>_tracedump</code>
+ and <code>_tracemouse</code> to <code>curses.priv.h</code>,
+ since they are not part of the suggested ABI6.</p>
+ </li>
+
+ <li>
+ <p>mark some structs in form/menu/panel libraries as
+ potentially opaque without modifying API/ABI.</p>
+ </li>
+
+ <li>
+ <p>ifdef'd header-file definition of <code>mouse_trafo</code>
+ with <code>NCURSES_NOMACROS</code></p>
+ </li>
+
+ <li>
+ <p>remove initialization-check for calling <code>napms</code>
+ in the term-driver configuration; none is needed.</p>
+ </li>
+
+ <li>
+ <p>modify <code>trace</code> to avoid overwriting existing
+ file</p>
+ </li>
+ </ul>
+
+ <p>These are improvements to existing features:</p>
+
+ <ul>
+ <li>
+ <p>modify <code>make_hash</code> to allow building with
+ address-sanitizer, assuming that <code>--disable-leaks</code>
+ is configured.</p>
+ </li>
+
+ <li>
+ <p>move <code>SCREEN</code> field for <code>use_tioctl</code>
+ data before the ncursesw fields, and limit that to the
+ sp-funcs configuration to improve termlib compatibility</p>
+ </li>
+
+ <li>
+ <p>modify db-iterator:</p>
+
+ <ul>
+ <li>
+ <p>ignore zero-length files in db-iterator; these are
+ useful for instance to suppress
+ <code>$HOME/.terminfo</code> when not wanted.</p>
+ </li>
+
+ <li>
+ <p>modify <code>update_getenv</code> to ensure that
+ environment variables which are not initially set will be
+ checked later if an application happens to set them</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>modify <code>_nc_outc_wrapper</code> to use the standard
+ output if the screen was not initialized, rather than
+ returning an error.</p>
+ </li>
+
+ <li>
+ <p>improve checks for low-level terminfo functions when the
+ terminal has not been initialized.</p>
+ </li>
+
+ <li>
+ <p>modify <code>set_curterm</code> to update
+ <code>ttytype[]</code> data used by longname/p&gt;</p>
+ </li>
+
+ <li>
+ <p>modify <code>_nc_get_screensize</code> to allow for
+ <code>use_env</code> and <code>use_tioctl</code> state to be
+ per-screen when sp-funcs are configured, better matching the
+ behavior when using the term-driver configuration.</p>
+ </li>
+
+ <li>
+ <p>remove an early-return from <code>_nc_do_color,</code>
+ which can interfere with data needed by <code>bkgd</code>
+ when <span class="main-name">ncurses</span> is configured
+ with extended colors</p>
+ </li>
+
+ <li>
+ <p>incorporate <code>A_COLOR</code> mask into
+ <code>COLOR_PAIR</code>, in case user application provides an
+ out-of-range pair number</p>
+ </li>
+
+ <li>
+ <p>modify logic for <code>endwin</code>-state to be able to
+ detect the case where the screen was never initialized, using
+ that to trigger a flush of <span class=
+ "main-name">ncurses'</span> buffer for <code>mvcur</code>,
+ e.g., in the sample program <span class=
+ "part-name">dots_mvcur</span> for the term-driver
+ configuration.</p>
+ </li>
+ </ul>
+
+ <p>These are corrections to existing features:</p>
+
+ <ul>
+ <li>
+ <p>fixes for writing extended color pairs in
+ <code>putwin</code>.</p>
+ </li>
+
+ <li>
+ <p>modify no-leaks code for <code>lib_cur_term.c</code> to
+ account for the <code>tgetent</code> cache.</p>
+ </li>
+
+ <li>
+ <p>amend handling of the <code>repeat_char</code> capability
+ in <code>EmitRange</code> to avoid scope creep: translate the
+ character to the alternate character set when the alternate
+ character set is enabled, and do not use
+ <code>repeat_char</code> for characters past 255.</p>
+ </li>
+
+ <li>
+ <p>improve wide-character implementation of
+ <code>myADDNSTR</code> in <code>frm_driver.c</code>, which
+ was inconsistent with the normal implementation.</p>
+ </li>
+
+ <li>
+ <p>modify <code>winnstr</code> and <code>winchnstr</code> to
+ return error if the output pointer is null, as well as adding
+ a null pointer check of the window pointer for better
+ compatibility with other implementations.</p>
+ </li>
+
+ <li>
+ <p>modify <code>setupterm</code> to save original tty-modes
+ so that <code>erasechar</code> works as expected. Also modify
+ <code>_nc_setupscreen</code> to avoid redundant calls to get
+ original tty-modes.</p>
+ </li>
+
+ <li>
+ <p>modify <code>wattr_set</code> and <code>wattr_get</code>
+ to return <code>ERR</code> if <em>win</em>-parameter is null,
+ as documented.</p>
+ </li>
+
+ <li>
+ <p>correct order of initialization for traces in
+ <code>use_env</code> and <code>use_tioctl</code> versus first
+ <code>_tracef</code> calls.</p>
+ </li>
+
+ <li>
+ <p>correct parameters for <code>copywin</code> call in
+ <code>_nc_Synchronize_Attributes</code></p>
+ </li>
+
+ <li>
+ <p>flush the standard output in <code>_nc_flush</code> for
+ the case where <code>SP</code> is zero, e.g., when called via
+ <code>putp</code>. This fixes a scenario where
+ &ldquo;tput&nbsp;flash&rdquo; did not work after changes in
+ 20130112.</p>
+ </li>
+
+ <li>
+ <p>amend internal use of <code>tputs</code> to consistently
+ use the number of lines affected, e.g., for insert/delete
+ character operations. While merging terminfo source early in
+ 1995, several descriptions used the
+ &ldquo;<code>*</code>&rdquo; proportional delay for these
+ operations, prompting a change in <code>doupdate</code>.</p>
+ </li>
+
+ <li>
+ <p>correct return-value of extended <code>putwin</code>.</p>
+ </li>
+
+ <li>
+ <p>double-width multibyte characters were not counted
+ properly in <code>winsnstr</code> and
+ <code>wins_nwstr</code>.</p>
+ </li>
+
+ <li>
+ <p>amend fix for <code>_nc_ripoffline</code> from 20091031 to
+ make <code>test/ditto.c</code> work in threaded
+ configuration.</p>
+ </li>
+
+ <li>
+ <p>modify <code>_nc_viscbuf2</code> and
+ <code>_tracecchar_t2</code> to trace wide-characters as a
+ whole rather than their multibyte equivalents.</p>
+ </li>
+
+ <li>
+ <p>minor fix in <code>wadd_wchnstr</code> to ensure that each
+ cell has nonzero width.</p>
+ </li>
+
+ <li>
+ <p>move <code>PUTC_INIT</code> calls next to
+ <code>wcrtomb</code> calls, to avoid carry-over of error
+ status when processing Unicode values which are not
+ mapped.</p>
+ </li>
+
+ <li>
+ <p>add missing assignment in <code>lib_getch.c</code> to make
+ <code>notimeout</code> work</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-programs" id="h3-programs">Program
+ improvements</a></h3>
+
+ <p>While reviewing user feedback, it became apparent that the
+ differences between <a href=
+ "https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization">
+ <span class="part-name">reset</span></a> (an alias for
+ <span class="part-name">tset</span>) and &ldquo;<span class=
+ "part-name">tput reset</span>&rdquo; were confusing:</p>
+
+ <ul>
+ <li>one (<a href=
+ "https://invisible-island.net/ncurses/man/tset.1.html">tset</a>)
+ updated the terminal modes, but used only part of the terminfo
+ capabilities for initialization, while</li>
+
+ <li>the other (<a href=
+ "https://invisible-island.net/ncurses/man/tput.1.html"><span class="part-name">tput</span></a>)
+ used all of the terminal capabilities while neglecting the
+ terminal modes.</li>
+ </ul>
+
+ <p>On further investigation, it turned out that the differences
+ were largely an accident due to the way those programs had
+ evolved.</p>
+
+ <p>This release eliminates the unnecessary differences, using the
+ same approach for <span class="part-name">tput</span>'s
+ <em>init</em> (initialization), <em>reset</em> and <em>clear</em>
+ operations as the separate <a href=
+ "https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization">
+ reset</a> and <a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html"><span class="part-name">
+ clear</span></a> programs. Doing this does not change the
+ command-line options; existing scripts are unaffected.</p>
+
+ <p>These are the user-visible changes for the three programs
+ (<span class="part-name">tput</span>, <span class=
+ "part-name">tset</span> and <span class=
+ "part-name">clear</span>):</p>
+
+ <ul>
+ <li>
+ <p>add the terminal-mode parts of &ldquo;<span class=
+ "part-name">reset</span>&rdquo; (aka <span class=
+ "part-name">tset</span>) to the &ldquo;<code>tput
+ reset</code>&rdquo; command, making the two almost the same
+ except for window-size.</p>
+ </li>
+
+ <li>
+ <p>improve <span class="part-name">tput</span>'s check for
+ being called as &ldquo;init&rdquo; or &ldquo;reset&rdquo; to
+ allow for transformed names.</p>
+ </li>
+
+ <li>
+ <p>add &ldquo;clear&rdquo; as a possible link/alias to
+ <span class="part-name">tput</span>.</p>
+ </li>
+
+ <li>
+ <p>amend changes for <span class="part-name">tput</span> to
+ reset tty modes to &ldquo;sane&rdquo; if the program is run
+ as &ldquo;reset&rdquo;, like <span class=
+ "part-name">tset</span>. Likewise, ensure that <span class=
+ "part-name">tset</span> sends either reset- or
+ init-strings.</p>
+ </li>
+
+ <li>
+ <p>add <code>-x</code> option to <span class=
+ "part-name">clear</span>/<span class="part-name">tput</span>
+ to make the <code>E3</code> extension optional</p>
+ </li>
+
+ <li>
+ <p>add functionality of
+ &ldquo;<code>tset&nbsp;-w</code>&rdquo; to <span class=
+ "part-name">tput</span>, like the
+ &ldquo;<code>-c</code>&rdquo; feature this is not optional in
+ <span class="part-name">tput</span>.</p>
+ </li>
+
+ <li>
+ <p>add options <code>-T</code> and <code>-V</code> to
+ <span class="part-name">clear</span> command for
+ compatibility with <span class="part-name">tput</span>.</p>
+ </li>
+
+ <li>
+ <p>drop long-obsolete &ldquo;<code>-n</code>&rdquo; option
+ from <span class="part-name">tset</span>.</p>
+ </li>
+
+ <li>
+ <p>modify <span class="part-name">tset</span>'s assignment to
+ <code>TERM</code> in its output to reflect the name by which
+ the terminal description is found, rather than the primary
+ name. That was an unnecessary part from the initial
+ conversion of <span class="part-name">tset</span> from
+ termcap to terminfo. The termcap library in 4.3BSD did this
+ to avoid using the short 2-character name</p>
+ </li>
+
+ <li>
+ <p>remove a restriction in <span class=
+ "part-name">tput</span>'s support for termcap names which
+ omitted capabilities normally not shown in termcap
+ translations</p>
+ </li>
+
+ <li>
+ <p>add usage message to <span class="part-name">clear</span>
+ command</p>
+ </li>
+
+ <li>
+ <p>improve usage messages for <span class=
+ "part-name">tset</span> and <span class=
+ "part-name">tput</span>.</p>
+ </li>
+ </ul>
+
+ <p>Other user-visible improvements and new features include:</p>
+
+ <ul>
+ <li>
+ <p>modify <span class="part-name">tic</span>/<span class=
+ "part-name">infocmp</span> display of numeric values to use
+ hexadecimal when they are "close" to a power of two, making
+ the result more readable.</p>
+ </li>
+
+ <li>
+ <p>add &ldquo;<code>-W</code>&rdquo; option to <span class=
+ "part-name">tic</span>/<span class="part-name">infocmp</span>
+ to force long strings to wrap.</p>
+
+ <ul>
+ <li>
+ <p>This is in addition to the
+ &ldquo;<code>-w</code>&rdquo; option which attempts to
+ fit capabilities into a given line-length.</p>
+ </li>
+
+ <li>
+ <p>If &ldquo;<code>-f</code>&rdquo; option splits line,
+ do not further split it with
+ &ldquo;<code>-W</code>&rdquo;.</p>
+ </li>
+
+ <li>
+ <p>Begin a new line when adding
+ &ldquo;<code>use=</code>&rdquo; after a wrapped line.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>add &ldquo;<code>-q</code>&rdquo; option to <span class=
+ "part-name">infocmp</span> to suppress the
+ &ldquo;<code>Reconstructed from</code>&rdquo; comment from
+ the header, and a corresponding option to <span class=
+ "part-name">tic</span> to suppress all comments from the
+ &ldquo;<code>tic -I</code>&rdquo; output.</p>
+ </li>
+
+ <li>
+ <p>Sorted options in usage message for <span class=
+ "part-name">infocmp</span>, to make it simpler to see unused
+ letters.</p>
+ </li>
+
+ <li>
+ <p>Updated usage message for <span class=
+ "part-name">tic</span>, adding &ldquo;<code>-0</code>&rdquo;
+ option.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">infocmp</span>/<span class=
+ "part-name">tic</span> &ldquo;<code>-Q</code>&rdquo; option,
+ which allows one to dump the compiled form of the terminal
+ entry, in hexadecimal or base64:</p>
+
+ <ul>
+ <li>A &ldquo;<code>b64:</code>&rdquo; prefix in the
+ <code>TERMINFO</code> variable tells the terminfo reader to
+ use base64 according to RFC-3548 as well as RFC-4648
+ url/filename-safe format.</li>
+
+ <li>A &ldquo;<code>hex:</code>&rdquo; prefix tells the
+ terminfo reader to accept hexadecimal data as generated by
+ &ldquo;<code>infocmp -0qQ1</code>&rdquo;.</li>
+ </ul>
+ </li>
+ </ul>
+
+ <p>Other less-visible improvements and new features include:</p>
+
+ <ul>
+ <li>
+ <p>modify utility headers such as <code>tic.h</code> to make
+ it clearer which are externals that are used by <span class=
+ "main-name">tack</span>.</p>
+ </li>
+
+ <li>
+ <p>add &ldquo;<code>reset</code>&rdquo; to list of programs
+ whose names might change in manpages due to
+ program-transformation configure options.</p>
+ </li>
+
+ <li>
+ <p>modify &ldquo;<code>-T</code>&rdquo; option of
+ <span class="part-name">clear</span> and <span class=
+ "part-name">tput</span> to call <code>use_tioctl</code> to
+ obtain the operating system's notion of the screensize if
+ possible.</p>
+ </li>
+
+ <li>
+ <p>add check in <span class="part-name">tput</span> for
+ init/reset operands to ensure those use a terminal.</p>
+ </li>
+
+ <li>
+ <p>modify programs <span class="part-name">clear</span>,
+ <span class="part-name">tabs</span>, <span class=
+ "part-name">tput</span> and <span class=
+ "part-name">tset</span> to pass the actual tty file
+ descriptor to setupterm rather than the standard output or
+ error, making padding work.</p>
+ </li>
+
+ <li>
+ <p>change <span class="part-name">tset</span>'s
+ initialization to allow it to get settings from the standard
+ input as well as <code>/dev/tty</code>, to be more effective
+ when output or error are redirected.</p>
+ </li>
+
+ <li>
+ <p>amend check in <span class="part-name">tput</span>,
+ <span class="part-name">tabs</span> and <span class=
+ "part-name">clear</span> to allow those to use the
+ database-only features in <span class="part-name">cron</span>
+ if a &ldquo;<code>-T</code>&rdquo; option gives a suitable
+ terminal name.</p>
+ </li>
+
+ <li>
+ <p>improve error message from <span class=
+ "part-name">tset</span>/<span class="part-name">reset</span>
+ when both stderr/stdout are redirected to a file or pipe.</p>
+ </li>
+ </ul>
+
+ <p>Several of the less apparent features deal with translation of
+ terminfo to termcap (and the reverse), with corresponding checks
+ by <span class="part-name">tic</span>:</p>
+
+ <ul>
+ <li>
+ <p>modify check in <code>fmt_entry</code> to handle a
+ cancelled reset string. Make similar fixes in other parts of
+ <code>dump_entry.c</code> and <code>tput.c</code></p>
+ </li>
+
+ <li>
+ <p>correct read of terminfo entry in which all strings are
+ absent or explicitly cancelled. Before this fix, the result
+ was that all were treated as only absent.</p>
+ </li>
+
+ <li>
+ <p>modify <span class="part-name">infocmp</span> to suppress
+ mixture of absent/cancelled capabilities that would only show
+ as &ldquo;<code>NULL, NULL</code>&rdquo;, unless the
+ &ldquo;<code>-q</code>&rdquo; option is used, e.g., to show
+ &ldquo;<code>-, @</code>&rdquo; or &ldquo;<code>@,
+ -</code>&rdquo;.</p>
+ </li>
+
+ <li>
+ <p>correct a warning from <span class="part-name">tic</span>
+ about keys which are the same, to skip over missing/cancelled
+ values.</p>
+ </li>
+
+ <li>
+ <p>add check in <span class="part-name">tic</span> for use of
+ bold, etc., video attributes in the color capabilities,
+ accounting whether the feature is listed in
+ <code>ncv</code>.</p>
+ </li>
+
+ <li>
+ <p>add check in <span class="part-name">tic</span> for
+ unnecessary use of &ldquo;<code>2</code>&rdquo; to denote a
+ shifted special key.</p>
+ </li>
+
+ <li>
+ <p>improve check in <span class="part-name">tic</span> for
+ delays by also warning about beep/flash when a delay is not
+ embedded, or if those use the VT100 reverse video escape
+ without using a delay.</p>
+ </li>
+
+ <li>
+ <p>improve checks in <code>trim_sgr0</code>, comp_parse.c and
+ parse_entry.c, for cancelled string capabilities.</p>
+ </li>
+
+ <li>
+ <p>add check in <span class="part-name">tic</span> for some
+ syntax errors of delays, as well as use of proportional
+ delays for non-line capabilities.</p>
+ </li>
+
+ <li>
+ <p>add check in <span class="part-name">tic</span> for
+ conflict between <code>ritm</code>, <code>rmso</code>,
+ <code>rmul</code> versus <code>sgr0</code>.</p>
+ </li>
+
+ <li>
+ <p>add check in <code>_nc_parse_entry</code> for invalid
+ entry name, setting the name to
+ &ldquo;<code>invalid</code>&rdquo; to avoid problems storing
+ entries.</p>
+ </li>
+
+ <li>
+ <p>improve <code>_nc_tparm_analyze</code>, using that to
+ extend the checks made by <span class="part-name">tic</span>
+ for reporting inconsistencies between the expected number of
+ parameters for a capability and the actual.</p>
+ </li>
+
+ <li>
+ <p>remove <span class="part-name">tic</span> warning about
+ &ldquo;<code>^?</code>&rdquo; in string capabilities, which
+ was marked as an extension; however all Unix implementations
+ support this and X/Open Curses does not address it. On the
+ other hand, <a href=
+ "https://invisible-island.net/ncurses/tctest.html#bsd42-ctl-question">
+ BSD termcap</a> did not support this feature (until the
+ <a href=
+ "https://invisible-island.net/ncurses/tctest.html#freebsd-ctl-question">
+ mid-1990s</a>).</p>
+
+ <p>in <code>_nc_infotocap</code>, added a check to ensure
+ that terminfo &ldquo;<code>^?</code>&rdquo; is not written to
+ termcap.</p>
+ </li>
+
+ <li>
+ <p>modify <code>sscanf</code> calls in
+ <code>_nc_infotocap</code> for patterns
+ &ldquo;<code>%{number}%+%c</code>&rdquo; and
+ &ldquo;<code>%'char'%+%c</code>&rdquo; to check that the
+ final character is really &ldquo;<code>c</code>&rdquo;,
+ avoiding a case in icl6404 which cannot be converted to
+ termcap.</p>
+ </li>
+
+ <li>
+ <p>in <code>_nc_tic_expand</code> and
+ <code>_nc_infotocap</code>, improved string-length check when
+ deciding whether to use &ldquo;<code>^X</code>&rdquo; or
+ &ldquo;<code>\xxx</code>&rdquo; format for control
+ characters, to make the output of <span class=
+ "part-name">tic</span>/<span class="part-name">infocmp</span>
+ more predictable.</p>
+ </li>
+
+ <li>
+ <p>limited termcap &ldquo;<code>%d</code>&rdquo; width to 2
+ digits on input, and use &ldquo;<code>%2</code>&rdquo; in
+ preference to &ldquo;<code>%02</code>&rdquo; on output.</p>
+ </li>
+
+ <li>
+ <p>correct terminfo/termcap conversion of
+ &ldquo;<code>%02</code>&rdquo; and
+ &ldquo;<code>%03</code>&rdquo; into
+ &ldquo;<code>%2</code>&rdquo; and
+ &ldquo;<code>%3</code>&rdquo;; the result repeated the last
+ character.</p>
+ </li>
+ </ul>
+
+ <h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
+
+ <p>Along with the library and utilities, many improvements were
+ made to the <a href=
+ "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>.</p>
+
+ <p>These changes were made to demonstrate new extensions in
+ <span class="main-name">ncurses</span>:</p>
+
+ <ul>
+ <li>
+ <p>add <span class="part-name">demo_new_pair</span> program,
+ to demonstrate <a href=
+ "https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-alloc_pair">
+ <code>alloc_pair</code></a>, <a href=
+ "https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-find_pair">
+ <code>find_pair</code></a> and <a href=
+ "https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-free_pair">
+ <code>free_pair</code></a> functions.</p>
+
+ <p>This program iterates over the possible color
+ combinations, allocating or initializing color pairs. For
+ best results, choose screen-width dividing evenly into the
+ number of colors. e.g.,</p>
+
+ <blockquote>
+ <table summary="sample layouts for demo_new_pair">
+ <tr>
+ <td><code>32x64,32x128</code>&nbsp;&nbsp;</td>
+
+ <td>256 colors</td>
+ </tr>
+
+ <tr>
+ <td><code>24x44,24x88</code></td>
+
+ <td>88 colors</td>
+ </tr>
+
+ <tr>
+ <td><code>32x64,24x128</code></td>
+
+ <td>16 colors</td>
+ </tr>
+ </table>
+ </blockquote>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">extended_color</span> program,
+ like the older <span class="part-name">color_set</span>
+ program, but using the extended color functions, with and
+ without the SP-functions interface.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">picsmap</span> program to fill
+ in some testing issues not met by <span class=
+ "part-name">dots</span>, using this as the third example in a
+ comparison of the <a href=
+ "https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap">
+ ncurses versus slang</a> libraries.</p>
+
+ <p>The program can directly read X bitmap and pixmap files,
+ displaying a picture. It can read other image files using
+ <span class="part-name">ImageMagick</span>'s <span class=
+ "part-name">convert</span> program to translate the image
+ into text.</p>
+
+ <p>For 16-, 88- and 256-color terminal descriptions,
+ <span class="part-name">picsmap</span> can load a palette
+ file which tells it which color palette entries to use. For
+ direct-colors, the terminal descriptions use the
+ <code>RGB</code> extension capability.</p>
+ </li>
+ </ul>
- <dt>nvi</dt>
+ <p>There are other new example programs and a few scripts:</p>
- <dd>New vi versions 1.50 are able to use ncurses versions 1.9.7
- and later.<br>
+ <ul>
+ <li>
+ <p>add <span class="part-name">dots_xcurses</span> program to
+ illustrate a different approach used for extended colors
+ which can be contrasted with <span class=
+ "part-name">dots_curses</span>.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">list_keys</span> program show
+ function keys for one or more terminal descriptions. It uses
+ <span class="main-name">ncurses'</span>s convention of
+ modifiers for special keys, based on xterm.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">padview</span> program, to
+ compare pads with direct updates in the <span class=
+ "part-name">view</span> program.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">sp_tinfo</span> program to
+ exercise the SP-functions extension of the low-level terminfo
+ library.</p>
+ </li>
+
+ <li>
+ <p>add test-programs for <code>termattrs</code> and
+ <code>term_attrs</code> functions.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">test_sgr</span> program to
+ exercise all combinations of the sgr capability.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">tput-colorcube</span> demo
+ script, imitating xterm's 88- and 256-color scripts using
+ <span class="part-name">tput</span>.</p>
+ </li>
+
+ <li>
+ <p>add <span class="part-name">tput-initc</span> script to
+ demonstrate how <span class="part-name">tput</span> may be
+ used to initialize a color palette from a data file.</p>
+ </li>
+ </ul>
+
+ <p>A variety of improvements were made to existing programs, both
+ new features as well as options added to make the set of programs
+ more consistent.</p>
+
+ <p>The <span class="part-name">ncurses</span> program is the
+ largest; a proportionately large number of changes were made to
+ it:</p>
+
+ <ul>
+ <li>
+ <p>modify a/A screens to make exiting on an escape character
+ depend on the start of keypad and timeout modes, to allow
+ better testing of function-keys.</p>
+
+ <p>add &ldquo;<code>t</code>&rdquo; toggle for
+ <code>notimeout</code> function.</p>
+ </li>
+
+ <li>
+ <p>modify layout of b/B screens to allow for additional
+ annotation on the right margin; some terminals with partial
+ support did not display well.</p>
+ </li>
+
+ <li>
+ <p>modify c/C screens to allow for extended color pairs.</p>
+
+ <p>add z/Z <em>zoom</em> feature to make extended color pairs
+ easier to test.</p>
+
+ <p>modify test-screens to take advantage of wide screens,
+ reducing the number of lines used for 88- and 256-colors.</p>
+ </li>
+
+ <li>
+ <p>modify &ldquo;<code>d</code>&rdquo; edit-color screen to
+ optionally read xterm color palette directly from terminal,
+ as well as handling <code>KEY_RESIZE</code> and
+ screen-repainting with control/L and control/R.</p>
+ </li>
+
+ <li>
+ <p>add examples to &ldquo;<code>F</code>&rdquo; screen for
+ <code>WACS_D_PLUS</code> and <code>WACS_T_PLUS</code>.</p>
+ </li>
+
+ <li>
+ <p>improve &ldquo;<code>g</code>&rdquo; screen, correcting
+ ifdef which made the legend not reflect changes to keypad-
+ and scroll-modes. Added check for return-value of
+ <code>putwin</code>.</p>
+ </li>
+
+ <li>
+ <p>make &ldquo;<code>s</code>&rdquo; test easier to
+ understand which subtests are available</p>
+
+ <p>add a corresponding &ldquo;<code>S</code>&rdquo;
+ wide-character overlap test-screen.</p>
+ </li>
+
+ <li>
+ <p>add &ldquo;<code>v</code>&rdquo; screen to show
+ <code>baudrate</code> and other values.</p>
+ </li>
+ </ul>
+
+ <p>These changes were made to the other examples:</p>
+
+ <ul>
+ <li>
+ <p>modify <span class="part-name">blue</span> program to use
+ Unicode values for card-glyphs when available, as well as
+ improving the check for CP437 and CP850.</p>
+ </li>
+
+ <li>
+ <p>improve <span class="part-name">demo_menus</span> program,
+ allowing mouse-click on the menu-headers to switch the active
+ menu. This requires a new extension option
+ <code>O_MOUSE_MENU</code> to tell the menu driver to put
+ mouse events which do not apply to the active menu back into
+ the queue so that the application can handle the event.</p>
+ </li>
+
+ <li>
+ <p>correct logic in <span class=
+ "part-name">demo_terminfo</span> program for
+ &ldquo;<code>-f</code>&rdquo; option</p>
+ </li>
+
+ <li>
+ <p>modify <span class="part-name">ditto</span> program to
+ allow <code>$XTERM_PROG</code> environment variable to
+ override "xterm" as the name of the program to run in the
+ threaded configuration.</p>
+ </li>
+
+ <li>
+ <p>add several options to the &ldquo;<em>dots</em>&rdquo;
+ test-programs.</p>
+ </li>
+
+ <li>
+ <p>modify <span class="part-name">filter</span> program:</p>
+
+ <ul>
+ <li>illustrate an alternative to <code>getnstr</code>, that
+ polls for input while updating a clock on the right margin
+ as well as responding to window size-changes.</li>
+
+ <li>adapt logic used in <a href=
+ "https://invisible-island.net/dialog/"><span class=
+ "main-name">dialog</span></a> <a href=
+ "https://invisible-island.net/dialog/manpage/dialog.html#h3-Common-Options">
+ &ldquo;<code>--keep-tite</code>&rdquo; option</a> for
+ <span class="part-name">filter</span> program as the "-a"
+ option. When set, <span class="part-name">filter</span>
+ attempts to suppress the alternate screen.</li>
+ </ul>
+ </li>
+
+ <li>
+ <p>modify <span class="part-name">knight</span> program to
+ provide the "slow" solution for small screens using
+ &ldquo;<code>R</code>&rdquo;, noting that Warnsdorf's method
+ is easily done with &ldquo;<code>a</code>&rdquo;.</p>
+ </li>
+
+ <li>
+ <p>modify the <span class="part-name">savescreen</span>
+ program to add test patterns that exercise 88-, 256-, etc.,
+ colors.</p>
+ </li>
+
+ <li>
+ <p>add options to <span class="part-name">test_arrays</span>,
+ for selecting termcap vs terminfo, etc.</p>
+ </li>
+
+ <li>
+ <p>modify the <span class="part-name">view</span>
+ program:</p>
+
+ <ul>
+ <li>expand tabs using the ncurses library rather than in
+ the test-program.</li>
+
+ <li>eliminate the &ldquo;<code>-n</code>&rdquo; option by
+ simply reading the whole file.</li>
+
+ <li>implement page up/down commands.</li>
+
+ <li>remove the very old <code>SIGWINCH</code> example; just
+ use <code>KEY_RESIZE</code>.</li>
+ </ul>
+ </li>
+
+ <li>
+ <p>improve animation in <span class="part-name">xmas</span>
+ program by adding a time-delay in <code>blinkit</code>.</p>
+ </li>
+
+ <li>
+ <p>modify several test-programs which call
+ <code>use_default_colors</code> to consistently do this only
+ if the &ldquo;<code>-d</code>&rdquo; option is given.</p>
+ </li>
+
+ <li>
+ <p>modify the install-rule for ncurses-examples to put the
+ data files in the data directory, e.g.,
+ <code>/usr/share/ncurses-examples</code>.</p>
+ </li>
+
+ <li>
+ <p>modify several test programs to use new
+ <code>popup_msgs</code> function, adapted from the
+ help-screen used in the <code>edit_field</code> program.</p>
+ </li>
+
+ <li>
+ <p>modify test data for xterm palettes to use the newer
+ color4/color12 values.</p>
+ </li>
+
+ <li>
+ <p>improve the <span class="part-name">tracemunch</span>
+ script:</p>
+
+ <ul>
+ <li>show screenXX pointers and thread identifiers as
+ names.</li>
+
+ <li>chang address-parameters of <code>add_wch</code>,
+ <code>color_content</code> and <code>pair_content</code> to
+ dummy parameters.</li>
+ </ul>
+ </li>
+ </ul>
+
+ <h3><a name="h3-database" id="h3-database">Terminal
+ database</a></h3>
+
+ <p>There are several new terminal descriptions:</p>
+
+ <blockquote>
+ <p><code>dumb-emacs-ansi</code>, <code>dvtm</code>,
+ <code>dvtm-256color</code>, <code>fbterm</code>,
+ <code>iterm2</code>, <code>linux-m1</code> <em>minitel
+ entries</em>, <code>putty-noapp</code>, <code>viewdata</code>,
+ and <code>vt100+4bsd</code> <em>building-block</em>.</p>
+
+ <p><code>xterm+noalt</code>, <code>xterm+titlestack</code>,
+ <code>xterm+alt1049</code>, <code>xterm+alt+title</code>
+ <em>building blocks</em> and <code>xterm+direct</code>,
+ <code>xterm+indirect</code>, <code>xterm-direct</code>. from
<a href=
- "https://sites.google.com/a/bostic.com/keithbostic/nvi">https://sites.google.com/a/bostic.com/keithbostic/nvi</a><br>
- </dd>
+ "https://invisible-island.net/xterm/xterm.log.html#xterm_331">xterm
+ patch #331</a>.</p>
+
+ <p>several other &ldquo;<code>-direct</code>&rdquo;
+ descriptions to address the differences of other terminal
+ emulators versus <code>xterm-direct</code>.</p>
+ </blockquote>
- <dt>pinfo</dt>
+ <p>There are many changes to existing terminal descriptions. Some
+ were updates to several descriptions:</p>
- <dd>Lynx-like info browser. <a href=
- "https://alioth.debian.org/projects/pinfo/">https://alioth.debian.org/projects/pinfo/</a></dd>
+ <ul>
+ <li>use <code>xterm+sm+1006</code> in several terminal
+ descriptions which were validated as supporting the extended
+ mouse feature for their respective terminal emulators.</li>
- <dt>tin</dt>
+ <li>corrected <em>sgr</em>/<em>sgr0</em> strings in a few cases
+ reported by <span class="part-name">tic</span>, making those
+ correspond to the non-<em>sgr</em> settings where they differ,
+ but otherwise use ECMA-48 consistently.</li>
- <dd>newsreader, supporting color, MIME <a href=
- "http://www.tin.org/">http://www.tin.org/</a></dd>
- </dl>as well as some that use ncurses for the terminfo support
- alone:
+ <li>add 0.1sec mandatory delay to <em>flash</em> capabilities
+ using the VT100 reverse-video control</li>
+ </ul>
+
+ <p>while others affected specific descriptions. These were
+ retested, to take into account new/undocumented changes by their
+ developers:</p>
+
+ <blockquote>
+ <p><code>iterm</code>, <code>minitel</code>, <code>st</code>,
+ <code>viewdata</code>, <code>nsterm</code></p>
+ </blockquote>
+
+ <p>while these are specific fixes based on user reports, or
+ warnings from <span class="part-name">tic</span>:</p>
<dl>
- <dt>minicom</dt>
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#toc-_A_N_S_I__S_Y_S__I_S_O_6429__E_C_M_A-48__Capabilities">
+ <code>ansi</code> <em>building blocks</em></a></dt>
+
+ <dd>
+ <ul>
+ <li>restored <em>rmir</em>/<em>smir</em> in
+ <code>ansi+idc</code> to better match original
+ <code>ansiterm+idc</code>, add alias
+ <code>ansiterm</code></li>
+ </ul>
+ </dd>
- <dd>terminal emulator<br>
- <a href=
- "http://alioth.debian.org/projects/minicom/">http://alioth.debian.org/projects/minicom/</a></dd>
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#tic-icl6404">
+ <code>icl6402</code></a></dt>
- <dt>vile</dt>
+ <dd>
+ <ul>
+ <li>corrected missing comma-separator between string
+ capabilities in <code>icl6402</code> and
+ <code>m2-nam</code></li>
+ </ul>
+ </dd>
- <dd>vi-like-emacs<br>
- <a href=
- "http://invisible-island.net/vile/">http://invisible-island.net/vile/</a></dd>
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#tic-interix">
+ <code>interix</code></a></dt>
+
+ <dd>
+ <ul>
+ <li>updated using <span class="main-name">tack</span> and
+ SFU with Windows 7 Ultimate.</li>
+
+ <li>used <code>^?</code> for <em>kdch1</em></li>
+ </ul>
+ </dd>
+
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#toc-_Linux_consoles">
+ <code>linux</code></a></dt>
+
+ <dd>
+ <ul>
+ <li>made <code>linux3.0</code> entry the default
+ <strong><code>linux</code></strong> entry</li>
+
+ <li>modify <code>linux2.6</code> entry to improve
+ line-drawing so that the <code>linux3.0</code> entry can be
+ used in non-UTF-8 mode</li>
+
+ <li>omitted selection of ISO-8859-1 for G0 in enacs
+ capability from linux2.6 entry, to avoid conflict with the
+ user-defined mapping. The reset feature uses ISO-8859-1 in
+ any case.</li>
+
+ <li>modify <em>flash</em> capability for <code>linux</code>
+ and <code>wyse</code> entries to put the delay between the
+ reverse/normal escapes rather than after</li>
+
+ <li>modify <code>linux-16color</code> to not mask dim,
+ standout or reverse with the <em>ncv</em> capability</li>
+ </ul>
+ </dd>
+
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#toc-_Open_B_S_D_consoles">
+ <code>pccon</code> <em>entries</em></a></dt>
+
+ <dd>
+ <ul>
+ <li>fixed some inconsistencies in the
+ <code><em>pccon*</em></code> entries</li>
+
+ <li>add bold to <code>pccon+sgr+acs</code> and
+ <code>pccon-base</code></li>
+
+ <li>add keys f12-f124 to <code>pccon+keys</code></li>
+ </ul>
+ </dd>
+
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#toc-_Tmux">
+ <code>tmux</code></a></dt>
+
+ <dd>
+ <ul>
+ <li>corrected <em>sgr</em> string, which used
+ <code>screen</code>'s "standout" code rather than the
+ standard code.</li>
+
+ <li>add settings corresponding to <code>xterm-keys</code>
+ option to reflect upcoming change to make that option
+ <em>"on"</em> by default</li>
+
+ <li>uncanceled <em>Ms</em></li>
+ </ul>
+ </dd>
+
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#toc-_D_E_C__V_T100_and_compatibles">
+ <code>vt100</code></a></dt>
+
+ <dd>
+ <ul>
+ <li>modify <code>vt100</code> <em>rs2</em> string to reset
+ vt52 mode and scrolling regions</li>
+
+ <li>corrected <em>rs2</em> string for
+ <code>vt100-nam</code></li>
+
+ <li>made minor fixes for <code>vt100+4bsd</code>, e.g.,
+ delay in <em>sgr</em> for consistency</li>
+ </ul>
+ </dd>
+
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#toc-_G_N_O_M_E__V_T_E_">
+ <code>vte</code></a></dt>
+
+ <dd>
+ <ul>
+ <li>moved SGR 24 and 27 from <code>vte-2014</code> to
+ <code>vte-2012</code></li>
+
+ <li>add a few capabilities fixed in recent <em>VTE</em>
+ development</li>
+ </ul>
+ </dd>
+
+ <dt><a href=
+ "https://invisible-island.net/ncurses/terminfo.src.html#toc-_X_T_E_R_M">
+ <code>xterm</code></a></dt>
+
+ <dd>
+ <ul>
+ <li>add <em>rep</em> to <code>xterm-new</code>, available
+ since <a href=
+ "https://invisible-island.net/xterm/xterm.log.html#xterm_32">
+ late 1996</a>.</li>
+
+ <li>modify <code>xterm+256color</code> and
+ <code>xterm+256setaf</code> to use correct number of color
+ pairs.</li>
+
+ <li>modify <em>rs1</em> for <code>xterm-16color</code>,
+ <code>xterm-88color</code> and <code>xterm-256color</code>
+ to reset palette using <em>oc</em> string as in
+ <code>linux</code> entry.</li>
+
+ <li>add <em>rs1</em> capability to
+ <code>xterm-256color</code></li>
+
+ <li>add <em>oc</em> capability to
+ <code>xterm+256color</code>, allowing palette reset for
+ <span class="main-name">xterm</span></li>
+
+ <li>add <em>op</em> to <code>xterm+256setaf</code></li>
+
+ <li>modify <code>xterm-r5</code>, <code>xterm-r6</code> and
+ <code>xterm-xf86-v32</code> to use <code>xterm+kbs</code>
+ to match <a href=
+ "https://invisible-island.net/xterm/xterm.log.html#xterm_272">
+ xterm #272</a>, reflecting packager's changes</li>
+
+ <li>used ANSI reply for <em>u8</em> in
+ <code>xterm-new</code>, to reflect vt220-style responses
+ that could be returned.</li>
+
+ <li>made <code>xterm-pcolor</code> <em>sgr</em> consistent
+ with other capabilities</li>
+ </ul>
+ </dd>
</dl>
- <p>The ncurses distribution includes a selection of test programs
- (including a few games).</p>
+ <p>A few entries use extensions (user-defined terminal
+ capabilities):</p>
+
+ <ul>
+ <li>add <em>rmxx</em>/<em>smxx</em> ECMA-48 strikeout extension
+ to <code>tmux</code> and <code>xterm-basic</code></li>
+
+ <li>used <em>RGB</em> capability in new <em>*-direct</em>
+ entries to denote direct-color feature.</li>
+ </ul>
+
+ <h3><a name="h3-documentation" id=
+ "h3-documentation">Documentation</a></h3>
+
+ <p>As usual, this release</p>
+
+ <ul>
+ <li>
+ <p>improves documentation by describing new features,</p>
+ </li>
+
+ <li>
+ <p>attempts to improve the description of features which
+ users have found confusing</p>
+ </li>
+
+ <li>
+ <p>fills in overlooked descriptions of features which were
+ described in the <a href=
+ "https://invisible-island.net/ncurses/NEWS.html">NEWS</a>
+ file but treated sketchily in manual pages.</p>
+ </li>
+ </ul>
+
+ <p>In particular,</p>
+
+ <ul>
+ <li>
+ <p>Since the underlying features for <a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY">
+ <span class="part-name">tset</span></a>, <a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY">
+ <span class="part-name">tput</span></a>, and <a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY">
+ <span class="part-name">clear</span></a> have been better
+ integrated, the documentation now includes information on how
+ those tools evolved.</p>
+
+ <p>In addition to explaining the improved integration of the
+ tools, the manual pages made it easier to see how the tools
+ are similar and how they are different.</p>
+ </li>
+
+ <li>
+ <p>The <code>addch</code> manual page has additional
+ information on <a href=
+ "https://invisible-island.net/ncurses/man/curs_addch.3x.html#h2-PORTABILITY">
+ portability</a> and differences from other
+ implementations.</p>
+ </li>
+
+ <li>
+ <p>The discussion of color-pairs in the <em>attributes</em>
+ manual page is improved in its <a href=
+ "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY">
+ history section</a>.</p>
+ </li>
+
+ <li>
+ <p>The documentation of the <code>chtype</code>,
+ <code>cchar_t</code> types and the attribute values which can
+ be stored in those types, in particular the <a href=
+ "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY">
+ history</a> and <a href=
+ "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY">
+ portability</a> sections of the <em>attributes</em> manual
+ page, has been improved.</p>
+ </li>
+
+ <li>
+ <p>improve discussion of <a href=
+ "https://invisible-island.net/ncurses/man/curs_mouse.3x.html#h2-PORTABILITY">
+ portability</a> in the <em>mouse</em> manual.</p>
+ </li>
+
+ <li>
+ <p>The <em>pad</em> manual page has a section on the <a href=
+ "https://invisible-island.net/ncurses/man/curs_pad.3x.html#h2-PORTABILITY">
+ origin and portability</a> of pads.</p>
+ </li>
+
+ <li>
+ <p>Differences between SVr4 and X/Open Curses soft-keys are
+ discussed in a new section on <a href=
+ "https://invisible-island.net/ncurses/man/curs_slk.3x.html#h2-PORTABILITY">
+ portability</a>.</p>
+ </li>
+
+ <li>
+ <p>There are updated/improved notes on portability in the
+ <a href=
+ "https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-PORTABILITY">
+ resizeterm</a> and <a href=
+ "https://invisible-island.net/ncurses/man/wresize.3x.html#h2-PORTABILITY">
+ wresize</a> manual pages.</p>
+ </li>
+ </ul>
+
+ <p>In addition to providing background information to explain
+ these features and show how they evolved, there are corrections,
+ clarifications, etc.:</p>
+
+ <ul>
+ <li>
+ <p>add note in the <a href=
+ "https://invisible-island.net/ncurses/man/curs_addch.3x.html#h3-ACS-Symbols">
+ <em>addch</em></a> manual about line-drawing when it depends
+ upon UTF-8.</p>
+ </li>
+
+ <li>
+ <p>improve discussion of line-drawing characters in the
+ <a href=
+ "https://invisible-island.net/ncurses/man/curs_add_wch.3x.html">
+ <em>add_wch</em></a> manual.</p>
+ </li>
+
+ <li>
+ <p>explain in <a href=
+ "https://invisible-island.net/ncurses/man/clear.1.html#h2-DESCRIPTION">
+ <span class="part-name">clear</span></a>'s manual page that
+ it writes to the standard output.</p>
+ </li>
+
+ <li>
+ <p>improve description of <a href=
+ "https://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-endwin">
+ <em>endwin</em></a>.</p>
+ </li>
+
+ <li>
+ <p>improve discussion of field validation in the <a href=
+ "https://invisible-island.net/ncurses/man/form_driver.3x.html">
+ <em>form driver</em></a> manual page.</p>
+ </li>
+
+ <li>
+ <p>clarify the use of <code>wint_t</code> vs
+ <code>wchar_t</code> in <a href=
+ "https://invisible-island.net/ncurses/man/curs_get_wstr.3x.html#h2-RETURN-VALUE">
+ <em>get_wstr</em></a> manual page.</p>
+ </li>
+
+ <li>
+ <p>clarify in the <a href=
+ "https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Predefined-key-codes">
+ <em>getch</em></a> manual that the keypad mode affects an
+ application's ability to read <code>KEY_MOUSE</code> codes,
+ but does not affect <code>KEY_RESIZE</code>.</p>
+
+ <p>trim some obsolete/incorrect wording about
+ <code>EINTR</code> from the <em>getch</em> manual page</p>
+
+ <p>improve manual pages for <a href=
+ "https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Keypad-Mode">
+ <em>getch</em></a> and <a href=
+ "https://invisible-island.net/ncurses/man/curs_get_wch.3x.html#h2-DESCRIPTION">
+ <em>get_wch</em></a> to point out that they might return
+ user-defined values which have no predefined names in
+ <code>&lt;curses.h&gt;</code></p>
+ </li>
+
+ <li>
+ <p>improve description of the <code>-R</code> option in the
+ <a href=
+ "https://invisible-island.net/ncurses/man/infocmp.1m.html"><span class="part-name">
+ infocmp</span></a> manual page</p>
+ </li>
+
+ <li>
+ <p>clarify in the <a href=
+ "https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-NOTES">
+ <em>resizeterm</em></a> manual page how
+ <code>KEY_RESIZE</code> is pushed onto the input stream.</p>
+ </li>
+
+ <li>
+ <p>document return value of <a href=
+ "https://invisible-island.net/ncurses/man/curs_extend.3x#h2-RETURN-VALUE">
+ <code>use_extended_names</code></a></p>
+ </li>
+
+ <li>
+ <p>document differences in <a href=
+ "https://invisible-island.net/ncurses/man/curs_variables.3x.html#h2-PORTABILITY">
+ <code>ESCDELAY</code></a> versus AIX's implementation in the
+ <em>variables</em> manual page.</p>
+ </li>
+
+ <li>
+ <p>The <code>_nc_free_tinfo</code> function is now documented
+ in the <a href=
+ "https://invisible-island.net/ncurses/man/curs_memleaks.3x.html">
+ <em>memory-leaks</em></a> manual page, because it could be
+ used in <span class="main-name">tack</span> for memory-leak
+ checking.</p>
+ </li>
+
+ <li>
+ <p>add a note to the <a href=
+ "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name">
+ tic</span></a> manual page about -W versus -f options.</p>
+ </li>
+
+ <li>
+ <p>improve <em>terminfo manual</em> description of <a href=
+ "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Terminfo-Capabilities-Syntax">
+ terminfo syntax</a>.</p>
+
+ <p>improve terminfo manual page discussion of <a href=
+ "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Line-Graphics">
+ control- and graphics- characters</a>.</p>
+
+ <p>improve <a href=
+ "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Color-Handling">
+ color-handling</a> section in terminfo manual page</p>
+ </li>
+
+ <li>
+ <p>clarify description in <a href=
+ "https://invisible-island.net/ncurses/man/tput.1.html#h2-PORTABILITY">
+ <span class="part-name">tput</span></a> manual page regarding
+ support for termcap names</p>
+
+ <p>update <a href=
+ "https://invisible-island.net/ncurses/man/tput.1.html#h3-Aliases">
+ <span class="part-name">tput</span></a> manual page to
+ reflect changes to manipulate terminal modes by sharing
+ functions with <span class="part-name">tset</span>.</p>
+ </li>
+
+ <li>
+ <p>clarify in manual pages that the optional verbose option
+ level of <a href=
+ "https://invisible-island.net/ncurses/man/tic.1m.html#h2-OPTIONS">
+ <span class="part-name">tic</span></a> and <a href=
+ "https://invisible-island.net/ncurses/man/infocmp.1m.html#h3-Other-Options">
+ <span class="part-name">infocmp</span></a> is available only
+ when <span class="main-name">ncurses</span> is configured for
+ tracing.</p>
+ </li>
+
+ <li>
+ <p>improve manual page description of <a href=
+ "https://invisible-island.net/ncurses/man/tset.1.html"><em>tset/reset</em></a>
+ versus window-size.</p>
+ </li>
+
+ <li>
+ <p>improve description of <a href=
+ "https://invisible-island.net/ncurses/man/curs_termcap.3x.html#h3-FORMATTING-CAPABILITIES">
+ <em>tgoto</em></a> parameters</p>
+ </li>
+ </ul>
+
+ <p>There are new manual pages:</p>
+
+ <ul>
+ <li><a href=
+ "https://invisible-island.net/ncurses/man/user_caps.5.html"><em>
+ user_caps</em></a> documents the terminfo extensions used by
+ <span class="main-name">ncurses</span>.</li>
+
+ <li>
+ <p><a href=
+ "https://invisible-island.net/ncurses/man/scr_dump.5.html"><em>
+ scr_dump</em></a> documents the screen-dump format.</p>
+ </li>
+ </ul>
+
+ <p>Some of the improvements are more subtle, relating to the way
+ the information is presented:</p>
+
+ <ul>
+ <li>
+ <p>Made minor fixes to manpage <em>NAME/SYNOPSIS</em>
+ sections to consistently use rule that either all functions
+ which are prototyped in <em>SYNOPSIS</em> are listed in the
+ <em>NAME</em> section, or the manual-page name is the sole
+ item listed in the <em>NAME</em> section. The latter is used
+ to reduce clutter, e.g., for the top-level library manual
+ pages as well as for certain feature-pages such as <a href=
+ "https://invisible-island.net/ncurses/man/curs_sp_funcs.3x.html">
+ <em>SP-funcs</em></a> and <a href=
+ "https://invisible-island.net/ncurses/man/curs_threads.3x.html">
+ <em>threading</em></a>.</p>
+ </li>
+
+ <li>
+ <p>improve manual pages for utilities with respect to POSIX
+ versus X/Open Curses.</p>
+ </li>
+
+ <li>
+ <p>improve organization of the <a href=
+ "https://invisible-island.net/ncurses/man/curs_attr.3x.html"><em>
+ attributes</em></a> and <a href=
+ "/ncurses/man/curs_color.3x.html"><em>color</em></a> manual
+ pages.</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
+ bug-fixes</a></h3>
+
+ <ul>
+ <li>
+ <p>modify <span class="part-name">toe</span> to not exit if
+ unable to read a terminal description, e.g., if there is a
+ permission problem.</p>
+ </li>
+
+ <li>
+ <p>correct 20100515 change for weak signals versus
+ sigprocmask</p>
+ </li>
+
+ <li>work around Ada tool-breakage in Debian 9 and later by
+ invoking <code>gprconfig</code> to specify the C compiler to be
+ used by <code>gnatmake</code>, and conditionally suppressing
+ <code>Library_Options</code> line for static libraries.</li>
+
+ <li>
+ <p>There were, as well, several bug-fixes to handle illegal
+ input for <span class="part-name">tic</span>. Because those
+ did not correspond to useful terminal descriptions, most
+ users are unaffected.</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-config-config" id=
+ "h3-config-config">Configuration changes</a></h3>
+
+ <h4><a name="h4-config-major" id="h4-config-major">Major
+ changes</a></h4>
+
+ <p>This release provides a new binary format for terminal
+ descriptions that use extended numeric capabilities. Applications
+ built with the wide-character <em>ncursesw</em> library can use
+ these extended numbers.</p>
+
+ <ul>
+ <li>
+ <p>This includes utilities such as <span class=
+ "part-name">tic</span> and <span class=
+ "part-name">infocmp</span>, because (as noted in <a href=
+ "#h4-new-library"><em>New features</em></a>), the feature
+ relies upon an extension to the low-level <em>tinfo</em>
+ library.</p>
+ </li>
+
+ <li>
+ <p>A few software packagers use a configuration option of
+ <span class="main-name">ncurses</span> which allows the
+ low-level <em>tinfo</em> library to be shared between the
+ high-level <em>ncurses</em> and <em>ncursesw</em> libraries.
+ This new feature was designed to work in that configuration
+ as well.</p>
+ </li>
+ </ul>
+
+ <p>Other applications (i.e., using the 8-bit <em>ncurses</em>
+ library) which read the extended terminal descriptions see those
+ numeric capabilities set to the maximum value for a signed 16-bit
+ number.</p>
+
+ <p>Older versions of <span class="main-name">ncurses</span>'
+ <span class="part-name">tic</span> accept out-of-range numeric
+ capabilities, storing those as the maximum value for a signed
+ 16-bit number. Other implementations of curses (mentioned in the
+ discussion of <a href=
+ "https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap">
+ <span class="part-name">picsmap</span></a>) give zero for these
+ out-of-range capabilities.</p>
+
+ <h4><a name="h4-config-options" id=
+ "h4-config-options">Configuration options</a></h4>
+
+ <p>These changes provide support for <span class=
+ "main-name">tack</span> 1.08, released in <a href=
+ "https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726">
+ July 2017</a>:</p>
+
+ <ul>
+ <li>
+ <p>add <code>--without-tack</code> configure option to refine
+ <code>--with-progs</code> configure option. Normally
+ <span class="main-name">tack</span> is built outside the
+ <span class="main-name">ncurses</span> tree, but a few
+ packagers combine it during the build. If
+ <code>term_entry.h</code> is installed, there is no advantage
+ to in-tree builds.</p>
+ </li>
+
+ <li>
+ <p>adjust configure-script to define
+ <code>HAVE_CURSES_DATA_BOOLNAMES</code> symbol needed for
+ <span class="main-name">tack</span> 1.08 when built in-tree.
+ Rather than relying upon internal "_nc_" functions,
+ <span class="main-name">tack</span> now uses the boolean,
+ number and string capability name-arrays provided by
+ <span class="main-name">ncurses</span> and SVr4 Unix curses.
+ It still uses <code>term_entry.h</code> for the definitions
+ of the extended capability arrays.</p>
+ </li>
+
+ <li>
+ <p>add dependency upon ncurses_cfg.h to <span class=
+ "part-name">tic</span>'s header-files; any program using
+ <span class="part-name">tic</span>-library will have to
+ supply this file. Legacy <span class="main-name">tack</span>
+ versions supply this file; ongoing <span class=
+ "main-name">tack</span> development has dropped the
+ dependency upon <span class="part-name">tic</span>-library
+ and new releases will not be affected.</p>
+ </li>
+ </ul>
+
+ <p>Other changes to the configure-script and generated files
+ include</p>
+
+ <ul>
+ <li>
+ <p>add configure options to disable checks for form, menu and
+ panel libraries so that ncurses-examples can be built with
+ non-SVr4 curses implementations.</p>
+ </li>
+
+ <li>
+ <p>add configure option <code>--enable-opaque-curses</code>
+ for <em>ncurses</em> library and similar options for the
+ other libraries.</p>
+ </li>
+
+ <li>
+ <p>add configure option <code>--disable-wattr-macros</code>
+ for use in cases where one wants to use the same headers for
+ ncurses5/ncurses6 development, by suppressing the
+ <em>wattr*</em> macros which differ due to the introduction
+ of extended colors</p>
+ </li>
+
+ <li>
+ <p>modify configure macro for shared-library rules to use
+ <code>-Wl,-rpath</code> rather than <code>-rpath</code> to
+ work around a bug in <span class="part-name">scons</span></p>
+ </li>
+
+ <li>
+ <p>improve ncurses-examples' configure script to define as
+ needed <code>NCURSES_WIDECHAR</code> for platforms where
+ <code>_XOPEN_SOURCE_EXTENDED</code> does not work. Also
+ modified the test program to ensure that if building with
+ <span class="main-name">ncurses</span>, that the
+ <code>cchar_t</code> type is checked, since that is normally
+ (since <a href=
+ "https://invisible-island.net/ncurses/NEWS.html#t20111030">20111030</a>)
+ ifdef'd depending on this test.</p>
+ </li>
+
+ <li>
+ <p>modify configure script to handle the case where
+ <span class="part-name">tic</span>-library is renamed, but
+ the <code>--with-debug</code> option is used by itself
+ without normal or shared libraries</p>
+ </li>
+
+ <li>
+ <p>modify editing script which generates resulting.map to
+ work with the clang configuration on recent FreeBSD, which
+ gives an error on an empty "local" section.</p>
+ </li>
+
+ <li>
+ <p>improve configure check for setting the
+ <code>WILDCARD_SYMS</code> variable; on ppc64 the variable is
+ in the <strong><em>Data</em></strong> section rather than
+ <strong><em>Text</em></strong>.</p>
+ </li>
+
+ <li>
+ <p>correct result of configure option
+ <code>--without-fallbacks</code>, which caused FALLBACK_LIST
+ to be set to "no"</p>
+ </li>
+
+ <li>
+ <p>modify <code>--with-pkg-config-libdir</code> option to
+ make it possible to install &ldquo;.pc&rdquo; files even if
+ <span class="part-name">pkg-config</span> is not found. Limit
+ this change, to suppress the actual install if it is not
+ overridden to a valid directory at install time.</p>
+ </li>
+
+ <li>
+ <p>disallow &ldquo;no&rdquo; as a possible value for
+ <code>--with-shlib-version</code> option, overlooked in
+ cleanup-changes for <a href=
+ "https://invisible-island.net/ncurses/NEWS.html#t20000708">20000708</a>.</p>
+ </li>
+ </ul>
+
+ <h3><a name="h3-portability" id=
+ "h3-portability">Portability</a></h3>
+
+ <p>Many of the portability changes are implemented via the
+ configure script:</p>
+
+ <ul>
+ <li>
+ <p>improve configure script's <code>CF_CC_ENV_FLAGS</code>
+ macro to allow for compiler wrappers such as <span class=
+ "part-name">ccache</span>. This change moves only the
+ preprocessor, optimization and warning flags to
+ <code>CPPFLAGS</code> and <code>CFLAGS</code>, leaving the
+ residue in <code>CC</code>. That happens to work for
+ <span class="part-name">gcc</span>'s various
+ &ldquo;model&rdquo; options, but may require tuning for other
+ compilers.</p>
+ </li>
+
+ <li>
+ <p>modify ncurses-examples' configure script to use
+ <span class="part-name">pkg-config</span> for the extra
+ form/menu/panel libraries, to be more consistent with the
+ handling of the curses/ncurses library.</p>
+ </li>
+
+ <li>
+ <p>add configuration checks to build with <a href=
+ "https://invisible-island.net/ncurses/ncurses-netbsd.html">NetBSD
+ curses</a>, which for example lacks <a href=
+ "https://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env">
+ <code>use_env</code></a>.</p>
+ </li>
+
+ <li>
+ <p>change ncurses-examples to use <code>attr_t</code> vs
+ <code>chtype</code> to follow X/Open documentation more
+ closely since Solaris xpg4-curses uses different values for
+ <code>WA_<em>xxx</em></code> vs <code>A_<em>xxx</em></code>
+ that rely on attr_t being an unsigned short. Tru64 aka OSF1,
+ HPUX, AIX did as <span class="main-name">ncurses</span> does,
+ equating the two sets.</p>
+ </li>
+
+ <li>
+ <p>modify several test programs to reflect that <span class=
+ "main-name">ncurses</span> honors existing signal handlers in
+ initscr, while other implementations do not.</p>
+ </li>
+
+ <li>
+ <p>add configure check for <code>openpty</code> to
+ ncurses-examples' configure script, for <span class=
+ "part-name">ditto</span>.</p>
+ </li>
+
+ <li>
+ <p>improve check for working <code>poll</code> function by
+ using <code>posix_openpt</code> as a fallback in case there
+ is no valid terminal on the standard input</p>
+ </li>
+
+ <li>
+ <p>modify ncurses-examples' configure script to check for
+ <span class="part-name">pthread</span> dependency of
+ <em>ncursest</em> or <em>ncursestw</em> library when building
+ the <span class="main-name">ncurses</span> examples, e.g., in
+ case weak symbols are used.</p>
+ </li>
+
+ <li>
+ <p>add checks in ncurses-examples' configure script for some
+ functions neither in 4.3BSD curses, nor based on X/Open
+ Curses:</p>
+
+ <ul>
+ <li>
+ <p>modify a loop limit in firework.c to work around
+ absense of limit checks in some libraries.</p>
+ </li>
+
+ <li>
+ <p>fill the last row of a window with
+ &ldquo;<code>?</code>&rdquo; in firstlast if waddch does
+ not return <code>ERR</code> on the lower-right
+ corner.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>build-fixes for the Portland Group (PGI) compilers</p>
+
+ <ul>
+ <li>
+ <p>accept whitespace in <span class=
+ "part-name">sed</span> expression for generating
+ expanded.c</p>
+ </li>
+
+ <li>
+ <p>modify configure check that g++ compiler warnings are
+ not used.</p>
+ </li>
+
+ <li>
+ <p>add configure check for -fPIC option needed for shared
+ libraries.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>modify configure script for clang as used on FreeBSD, to
+ work around clang's differences in exit codes vs gcc.</p>
+ </li>
+
+ <li>
+ <p>fixes for configure/build using clang on OSX</p>
+
+ <ul>
+ <li>
+ <p>do not redefine &ldquo;inline&rdquo; in
+ <code>ncurses_cfg.h</code>; this was originally to solve
+ a problem with gcc/g++, but is aggravated by clang's
+ misuse of symbols to pretend it is gcc.</p>
+ </li>
+
+ <li>
+ <p>add braces to configure script to prevent unwanted
+ addition of &ldquo;<code>-lstdc++</code>&rdquo; option to
+ the <code>CXXLIBS</code> symbol.</p>
+ </li>
+
+ <li>
+ <p>improve/update test-program used for checking
+ existence of stdc++ library.</p>
+ </li>
+
+ <li>
+ <p>if <code>$CXXLIBS</code> is set, the linkage test uses
+ that in addition to <code>$LIBS</code>.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>fixes for OS/2:</p>
+
+ <ul>
+ <li>
+ <p>use button instead of <code>kbuf[0]</code> in
+ EMX-specific part of <code>lib_mouse.c</code></p>
+ </li>
+
+ <li>
+ <p>support building with <span class=
+ "part-name">libtool</span> on OS/2</p>
+ </li>
+
+ <li>
+ <p>use stdc++ library with OS/2 kLIBC</p>
+ </li>
+
+ <li>
+ <p>clear configure script's <code>cf_XOPEN_SOURCE</code>
+ for OS/2, to work with its header files</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>add &ldquo;newer&rdquo; baudrate symbols to the <a href=
+ "https://invisible-island.net/ncurses/man/curs_termattrs.3x.html#h3-baudrate">
+ <code>baudrate</code></a> function in the ncurses library as
+ well as to a corresponding table in <span class=
+ "part-name">tset</span>.</p>
+ </li>
+
+ <li>
+ <p>modify ncurses-examples <span class=
+ "part-name">savescreen</span> to work with AIX and HPUX.</p>
+ </li>
+
+ <li>
+ <p>define <code>WIN32_LEAN_AND_MEAN</code> for MinGW port,
+ making builds faster.</p>
+ </li>
+
+ <li>
+ <p>add a configure check for <em>wcwidth</em> versus the
+ <span class="main-name">ncurses</span> line-drawing
+ characters, to use in special-casing systems such as Solaris.
+ Solaris, however, requires a special case that maps Unicode
+ line-drawing characters into the acsc string for non-Unicode
+ locales. Solaris also has a misconfigured wcwidth which marks
+ all of the line drawing characters as double-width.</p>
+ </li>
+
+ <li>
+ <p>string-hacks (non-standard):</p>
+
+ <ul>
+ <li>
+ <p>fix configure script to record when
+ <code>strlcat</code> is found on OpenBSD.</p>
+ </li>
+
+ <li>
+ <p>add <code>--enable-string-hacks</code> option to
+ ncurses-examples' configure script.</p>
+ </li>
+
+ <li>
+ <p>completed string-hacks for <em>sprintf</em>, etc.,
+ including the ncurses-examples programs.</p>
+ </li>
+
+ <li>
+ <p>make <code>--enable-string-hacks</code> option work
+ with Debian by checking for the "bsd" library and its
+ associated "&lt;bsd/string.h&gt;" header.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>workaround for Debian's antique/unmaintained version of
+ mawk:</p>
+
+ <ul>
+ <li>
+ <p>see Debian #65617, which was fixed in <span class=
+ "main-name">mawk</span>'s upstream releases in <a href=
+ "https://invisible-island.net/mawk/CHANGES.html#t20090727">
+ 2009</a>.</p>
+ </li>
+
+ <li>
+ <p>related fixes when building link_test.</p>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <hr>
+
+ <h2><a name="h2-features" id="h2-features">Features of
+ <span class="main-name">ncurses</span></a></h2>
+
+ <p>The <span class="main-name">ncurses</span> package is fully
+ upward-compatible with SVr4 (System V Release 4) curses:</p>
+
+ <ul>
+ <li>
+ <p>All of the SVr4 calls have been implemented (and are
+ documented).</p>
+ </li>
+
+ <li>
+ <p><span class="main-name">ncurses</span> supports all of the
+ for SVr4 curses features including keyboard mapping, color,
+ forms-drawing with ACS characters, and automatic recognition
+ of keypad and function keys.</p>
+ </li>
+
+ <li>
+ <p><span class="main-name">ncurses</span> provides these SVr4
+ add-on libraries (not part of X/Open Curses):</p>
+
+ <ul>
+ <li>
+ <p>the panels library, supporting a stack of windows with
+ backing store.</p>
+ </li>
+
+ <li>
+ <p>the menus library, supporting a uniform but flexible
+ interface for menu programming.</p>
+ </li>
+
+ <li>
+ <p>the form library, supporting data collection through
+ on-screen forms.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p><span class="main-name">ncurses</span>'s terminal database
+ is fully compatible with that used by SVr4 curses.</p>
+
+ <ul>
+ <li>
+ <p><span class="main-name">ncurses</span> supports
+ user-defined capabilities which it can see, but which are
+ hidden from SVr4 curses applications using the
+ <em>same</em> terminal database.</p>
+ </li>
+
+ <li>
+ <p>It can be optionally configured to match the format
+ used in related systems such as AIX and Tru64.</p>
+ </li>
+
+ <li>
+ <p>Alternatively, <span class="main-name">ncurses</span>
+ can be configured to use hashed databases rather than the
+ directory of files used by SVr4 curses.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p>The <span class="main-name">ncurses</span> utilities have
+ options to allow you to filter terminfo entries for use with
+ less capable <em>curses</em>/<em>terminfo</em> versions such
+ as the HP/UX and AIX ports.</p>
+ </li>
+ </ul>
+
+ <p>The <span class="main-name">ncurses</span> package also has
+ many useful extensions over SVr4:</p>
+
+ <ul>
+ <li>
+ <p>The API is 8-bit clean and base-level conformant with the
+ X/OPEN curses specification, XSI curses (that is, it
+ implements all BASE level features, and most EXTENDED
+ features). It includes many function calls not supported
+ under SVr4 curses (but portability of all calls is documented
+ so you can use the SVr4 subset only).</p>
+ </li>
+
+ <li>
+ <p>Unlike SVr3 curses, <span class="main-name">ncurses</span>
+ can write to the rightmost-bottommost corner of the screen if
+ your terminal has an insert-character capability.</p>
+ </li>
+
+ <li>
+ <p>Ada95 and C++ bindings.</p>
+ </li>
+
+ <li>
+ <p>Support for mouse event reporting with X Window xterm and
+ FreeBSD and OS/2 console windows.</p>
+ </li>
+
+ <li>
+ <p>Extended mouse support via Alessandro Rubini's gpm
+ package.</p>
+ </li>
+
+ <li>
+ <p>The function <code>wresize</code> allows you to resize
+ windows, preserving their data.</p>
+ </li>
+
+ <li>
+ <p>The function <code>use_default_colors</code> allows you to
+ use the terminal's default colors for the default color pair,
+ achieving the effect of transparent colors.</p>
+ </li>
+
+ <li>
+ <p>The functions <code>keyok</code> and
+ <code>define_key</code> allow you to better control the use
+ of function keys, e.g., disabling the <span class=
+ "main-name">ncurses</span> KEY_MOUSE, or by defining more
+ than one control sequence to map to a given key code.</p>
+ </li>
+
+ <li>
+ <p>Support for 256-color terminals, such as modern xterm.</p>
+ </li>
+
+ <li>
+ <p>Support for 16-color terminals, such as <em>aixterm</em>
+ and <em>modern xterm</em>.</p>
+ </li>
+
+ <li>
+ <p>Better cursor-movement optimization. The package now
+ features a cursor-local-movement computation more efficient
+ than either BSD's or System V's.</p>
+ </li>
+
+ <li>
+ <p>Super hardware scrolling support. The screen-update code
+ incorporates a novel, simple, and cheap algorithm that
+ enables it to make optimal use of hardware scrolling,
+ line-insertion, and line-deletion for screen-line movements.
+ This algorithm is more powerful than the 4.4BSD curses
+ <code>quickch</code> routine.</p>
+ </li>
+
+ <li>
+ <p>Real support for terminals with the magic-cookie glitch.
+ The screen-update code will refrain from drawing a highlight
+ if the magic- cookie unattributed spaces required just before
+ the beginning and after the end would step on a non-space
+ character. It will automatically shift highlight boundaries
+ when doing so would make it possible to draw the highlight
+ without changing the visual appearance of the screen.</p>
+ </li>
+
+ <li>
+ <p>It is possible to generate the library with a list of
+ pre-loaded fallback entries linked to it so that it can serve
+ those terminal types even when no terminfo tree or termcap
+ file is accessible (this may be useful for support of
+ screen-oriented programs that must run in single-user
+ mode).</p>
+ </li>
+
+ <li>
+ <p>The <a href=
+ "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name">
+ tic</span></a>/<a href=
+ "https://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a>
+ utility provided with <span class="main-name">ncurses</span>
+ has the ability to translate many termcaps from the XENIX,
+ IBM and AT&amp;T extension sets.</p>
+ </li>
+
+ <li>
+ <p>A BSD-like <a href=
+ "https://invisible-island.net/ncurses/man/tset.1.html"><span class="part-name">
+ tset</span></a> utility is provided.</p>
+ </li>
+
+ <li>
+ <p>The <span class="main-name">ncurses</span> library and
+ utilities will automatically read terminfo entries from
+ $HOME/.terminfo if it exists, and compile to that directory
+ if it exists and the user has no write access to the system
+ directory. This feature makes it easier for users to have
+ personal terminfo entries without giving up access to the
+ system terminfo directory.</p>
+ </li>
+
+ <li>
+ <p>You may specify a path of directories to search for
+ compiled descriptions with the environment variable
+ TERMINFO_DIRS (this generalizes the feature provided by
+ TERMINFO under stock System V.)</p>
+ </li>
+
+ <li>
+ <p>In terminfo source files, use capabilities may refer not
+ just to other entries in the same source file (as in System
+ V) but also to compiled entries in either the system terminfo
+ directory or the user's $HOME/.terminfo directory.</p>
+ </li>
+
+ <li>
+ <p>The table-of-entries utility <a href=
+ "https://invisible-island.net/ncurses/man/toe.1m.html"><span class="part-name">
+ toe</span></a> makes it easy for users to see exactly what
+ terminal types are available on the system.</p>
+ </li>
+
+ <li>
+ <p>The library meets the XSI requirement that every macro
+ entry point have a corresponding function which may be linked
+ (and will be prototype-checked) if the macro definition is
+ disabled with <code>#undef</code>.</p>
+ </li>
+
+ <li>
+ <p>Extensive documentation is provided (see the <em><a href=
+ "https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading">
+ Additional Reading</a></em> section of the <em><a href=
+ "https://invisible-island.net/ncurses/ncurses.faq.html"><span class="main-name">
+ ncurses</span> FAQ</a></em> for online documentation).</p>
+ </li>
+ </ul>
+
+ <h2><a name="h2-who-uses" id="h2-who-uses">Applications using
+ <span class="main-name">ncurses</span></a></h2>
+
+ <p>The <span class="main-name">ncurses</span> distribution
+ includes a selection of test programs (including a few games).
+ These are available separately as <a href=
+ "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a></p>
+
+ <p>The ncurses library has been tested with a wide variety of
+ applications including:</p>
+
+ <blockquote>
+ <dl>
+ <dt><span class="part-name">aptitude</span></dt>
+
+ <dd>
+ <p>FrontEnd to Apt, the debian package manager</p>
+
+ <p><a href=
+ "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p>
+ </dd>
+
+ <dt><span class="part-name">cdk</span></dt>
+
+ <dd>
+ <p>Curses Development Kit</p>
+
+ <p><a href=
+ "https://invisible-island.net/cdk/">https://invisible-island.net/cdk/</a><br>
+ </p>
+ </dd>
+
+ <dt><span class="part-name">ded</span></dt>
+
+ <dd>
+ <p>directory-editor</p>
+
+ <p><a href=
+ "https://invisible-island.net/ded/">https://invisible-island.net/ded/</a></p>
+ </dd>
+
+ <dt><span class="part-name">dialog</span></dt>
+
+ <dd>
+ <p>the underlying application used in Slackware's setup,
+ and the basis for similar install/configure applications on
+ many systems.</p>
+
+ <p><a href=
+ "https://invisible-island.net/dialog/">https://invisible-island.net/dialog/</a></p>
+ </dd>
+
+ <dt><span class="part-name">lynx</span></dt>
+
+ <dd>
+ <p>the text WWW browser</p>
+
+ <p><a href=
+ "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p>
+ </dd>
+
+ <dt><span class="part-name">mutt</span></dt>
+
+ <dd>
+ <p>mail utility</p>
+
+ <p><a href=
+ "http://www.mutt.org/">http://www.mutt.org/</a></p>
+ </dd>
+
+ <dt><span class="part-name">ncftp</span></dt>
+
+ <dd>
+ <p>file-transfer utility</p>
- <h2>Who's Who and What's What</h2>Zeyd Ben-Halim started it from
- a previous package pcurses, written by Pavel Curtis. Eric S.
+ <p><a href=
+ "https://www.ncftp.com/">https://www.ncftp.com/</a></p>
+ </dd>
+
+ <dt><span class="part-name">nvi</span></dt>
+
+ <dd>
+ <p>New vi uses ncurses.</p>
+
+ <p><a href=
+ "https://sites.google.com/a/bostic.com/keithbostic/vi">https://sites.google.com/a/bostic.com/keithbostic/vi</a><br>
+ </p>
+ </dd>
+
+ <dt><span class="part-name">ranger</span></dt>
+
+ <dd>
+ <p>A console file manager with VI key bindings in
+ <em>Python</em>.</p>
+
+ <p><a href=
+ "https://ranger.github.io/">https://ranger.github.io/</a></p>
+ </dd>
+
+ <dt><span class="part-name">tin</span></dt>
+
+ <dd>
+ <p>newsreader, supporting color, MIME</p>
+
+ <p><a href=
+ "http://www.tin.org/">http://www.tin.org/</a></p>
+ </dd>
+
+ <dt><span class="part-name">vifm</span></dt>
+
+ <dd>
+ <p>File manager with vi like keybindings</p>
+
+ <p><a href="https://vifm.info/">https://vifm.info/</a></p>
+ </dd>
+ </dl>
+ </blockquote>
+
+ <p>as well as some that use <span class=
+ "main-name">ncurses</span> for the terminfo support alone:</p>
+
+ <blockquote>
+ <dl>
+ <dt><span class="part-name">minicom</span></dt>
+
+ <dd>
+ <p>terminal emulator for serial modem connections</p>
+
+ <p><a href=
+ "https://alioth.debian.org/projects/minicom/">https://alioth.debian.org/projects/minicom/</a></p>
+ </dd>
+
+ <dt><span class="part-name">mosh</span></dt>
+
+ <dd>
+ <p>a replacement for <code>ssh</code>.</p>
+
+ <p><a href=
+ "https://mosh.mit.edu/">https://mosh.mit.edu/</a></p>
+ </dd>
+
+ <dt><span class="part-name">tack</span></dt>
+
+ <dd>
+ <p>terminfo action checker</p>
+
+ <p><a href=
+ "https://invisible-island.net/ncurses/tack.html">https://invisible-island.net/ncurses/tack.html</a></p>
+ </dd>
+
+ <dt><span class="part-name">tmux</span></dt>
+
+ <dd>
+ <p>terminal multiplexor</p>
+
+ <p><a href=
+ "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p>
+ </dd>
+
+ <dt><span class="part-name">vile</span></dt>
+
+ <dd>
+ <p>vi-like-emacs may be built to use the terminfo, termcap
+ or curses interfaces.</p>
+
+ <p><a href=
+ "https://invisible-island.net/vile/">https://invisible-island.net/vile/</a></p>
+ </dd>
+ </dl>
+ </blockquote>
+
+ <p>and finally, those which use only the termcap interface:</p>
+
+ <blockquote>
+ <dl>
+ <dt><span class="part-name">emacs</span></dt>
+
+ <dd>
+ <p>text editor</p>
+
+ <p><a href=
+ "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/</a></p>
+ </dd>
+
+ <dt><span class="part-name">less</span></dt>
+
+ <dd>
+ <p>The most commonly used <em>pager</em> (a program that
+ displays text files).</p>
+
+ <p><a href=
+ "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a></p>
+ </dd>
+
+ <dt><span class="part-name">screen</span></dt>
+
+ <dd>
+ <p>terminal multiplexor</p>
+
+ <p><a href=
+ "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/</a></p>
+ </dd>
+
+ <dt><span class="part-name">vim</span></dt>
+
+ <dd>
+ <p>text editor</p>
+
+ <p><a href=
+ "https://www.vim.org/">https://www.vim.org/</a></p>
+ </dd>
+ </dl>
+ </blockquote>
+
+ <h2><a name="h2-development" id="h2-development">Development
+ activities</a></h2>
+
+ <p>Zeyd Ben-Halim started <span class="main-name">ncurses</span>
+ from a previous package pcurses, written by Pavel Curtis. Eric S.
Raymond continued development. J&uuml;rgen Pfeifer wrote most of
- the form and menu libraries. Ongoing work is being done by
+ the form and menu libraries. Ongoing development work is done by
<a href="mailto:dickey@invisible-island.net">Thomas Dickey</a>.
- Thomas Dickey acts as the maintainer for the Free Software
- Foundation, which holds the copyright on ncurses. Contact the
- current maintainers at <a href=
- "mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>.
+ Thomas Dickey also acts as the maintainer for the Free Software
+ Foundation, which holds the <a href=
+ "https://invisible-island.net/ncurses/ncurses-license.html">copyright
+ on ncurses</a>.</p>
+
+ <p>Contact the current maintainers at</p>
+
+ <blockquote>
+ <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>
+ </blockquote>
- <p>To join the ncurses mailing list, please write email to
- <code>bug-ncurses-request@gnu.org</code> containing the line:</p>
- <pre>
- subscribe &lt;name&gt;@&lt;host.domain&gt;
-</pre>
+ <p>To join the ncurses mailing list, please write email to</p>
+
+ <blockquote>
+ <a href=
+ "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a>
+ </blockquote>containing the line:
+
+ <blockquote>
+ <p><code>subscribe</code>
+ <em>&lt;name&gt;@&lt;host.domain&gt;</em></p>
+ </blockquote>
<p>This list is open to anyone interested in helping with the
development and testing of this package.</p>
- <p>Beta versions of ncurses and patches to the current release
- are made available at <a href=
- "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a>&nbsp;.</p>
+ <p>Beta versions of <span class="main-name">ncurses</span> and
+ patches to the current release are made available at</p>
+
+ <blockquote>
+ <p><a href=
+ "ftp://ftp.invisible-island.net/ncurses/">ftp://ftp.invisible-island.net/ncurses/</a>
+ and<br>
+ <a href=
+ "https://invisible-mirror.net/archives/ncurses/">https://invisible-mirror.net/archives/ncurses/</a>&nbsp;.</p>
+ </blockquote>
+
+ <p>There is an archive of the mailing list here:</p>
+
+ <blockquote>
+ <p><a href=
+ "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a>
+ (also <a href=
+ "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p>
+ </blockquote>
- <h2>Future Plans</h2>
+ <h2><a name="h2-this-stuff" id="h2-this-stuff">Related
+ resources</a></h2>
+
+ <p>The release notes make scattered references to these pages,
+ which may be interesting by themselves:</p>
<ul>
- <li>Extended-level XPG4 conformance, with internationalization
- support.</li>
+ <li><a href=
+ "https://invisible-island.net/ncurses/ncurses-license.html"><span class="main-name">
+ ncurses</span> licensing</a></li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
+ versioning in <span class="main-name">ncurses</span></a></li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/ncurses-slang.html">Comments
+ on <span class="main-name">ncurses</span> versus <span class=
+ "main-name">slang</span> (S-Lang)</a></li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/tack.html">tack &ndash;
+ terminfo action checker</a></li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/tctest.html">tctest
+ &ndash; termcap library checker</a></li>
+
+ <li><a href=
+ "https://invisible-island.net/ncurses/ncurses.html#download_database">
+ Terminal Database</a></li>
+ </ul>
- <li>Ports to more systems, including DOS and Windows.</li>
- </ul>We need people to help with these projects. If you are
- interested in working on them, please join the ncurses list.
+ <h2><a name="h2-other-stuff" id="h2-other-stuff">Other
+ resources</a></h2>
- <h2>Other Related Resources</h2>The distribution provides a newer
- version of the terminfo-format terminal description file once
- maintained by <a href="http://www.catb.org/~esr/terminfo/">Eric
+ <p>The distribution provides a newer version of the
+ terminfo-format terminal description file once maintained by
+ <a href="http://www.catb.org/~esr/terminfo/">Eric
Raymond</a>&nbsp;. Unlike the older version, the termcap and
- terminfo data are provided in the same file, and provides several
- user-definable extensions beyond the X/Open specification.
+ terminfo data are provided in the same file, which also provides
+ several user-definable extensions beyond the X/Open
+ specification.</p>
<p>You can find lots of information on terminal-related topics
not covered in the terminfo file at <a href=
"http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">
Richard Shuford's archive</a>&nbsp;.</p>
+
+ <div class="nav">
+ <ul>
+ <li><a href="#h2-overview">Overview</a></li>
+
+ <li>
+ <a href="#h2-release-notes">Release Notes</a>
+
+ <ul>
+ <li>
+ <a href="#h3-library">Library improvements</a>
+
+ <ul>
+ <li><a href="#h4-new-library">New features</a></li>
+
+ <li><a href="#h4-fixes-library">Other
+ improvements</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <a href="#h3-programs">Program improvements</a>
+
+ <ul>
+ <li><a href="#h4-utilities">Utilities</a></li>
+
+ <li><a href="#h4-examples">Examples</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#h3-database">Terminal database</a></li>
+
+ <li><a href="#h3-documentation">Documentation</a></li>
+
+ <li><a href="#h3-bug-fixes">Interesting
+ bug-fixes</a></li>
+
+ <li>
+ <a href="#h3-config-config">Configuration changes</a>
+
+ <ul>
+ <li><a href="#h4-config-major">Major changes</a></li>
+
+ <li><a href="#h4-config-options">Configuration
+ options</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#h3-portability">Portability</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#h2-features">Features of <span class=
+ "main-name">ncurses</span></a></li>
+
+ <li><a href="#h2-who-uses">Applications using <span class=
+ "main-name">ncurses</span></a></li>
+
+ <li><a href="#h2-development">Development activities</a></li>
+
+ <li><a href="#h2-this-stuff">Related resources</a></li>
+
+ <li><a href="#h2-other-stuff">Other resources</a></li>
+ </ul>
+ </div>
</body>
</html>
diff --git a/doc/html/hackguide.html b/doc/html/hackguide.html
index 84370809ebf3..3bf9d09435bd 100644
--- a/doc/html/hackguide.html
+++ b/doc/html/hackguide.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
- $Id: hackguide.html,v 1.29 2013/05/17 23:29:18 tom Exp $
+ $Id: hackguide.html,v 1.32 2019/07/28 18:08:54 tom Exp $
****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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,886 +28,941 @@
* authorization. *
****************************************************************************
-->
-<HTML>
-<HEAD>
-<TITLE>A Hacker's Guide to Ncurses Internals</TITLE>
-<link rev="made" href="mailto:bugs-ncurses@gnu.org">
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<!--
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+
+<html>
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for HTML5 for Linux version 5.2.0">
+
+ <title>A Hacker's Guide to Ncurses Internals</title>
+ <link rel="author" href="mailto:bugs-ncurses@gnu.org">
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii"><!--
This document is self-contained, *except* that there is one relative link to
the ncurses-intro.html document, expected to be in the same directory with
this one.
-->
-</HEAD>
-<BODY>
-
-<H1>A Hacker's Guide to NCURSES</H1>
-
-<H1>Contents</H1>
-<UL>
-<LI><A HREF="#abstract">Abstract</A>
-<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>
-<LI><A HREF="#documentation">Documentation Conventions</A>
-<LI><A HREF="#bugtrack">How to Report Bugs</A>
-<LI><A HREF="#ncurslib">A Tour of the Ncurses Library</A>
-<UL>
-<LI><A HREF="#loverview">Library Overview</A>
-<LI><A HREF="#engine">The Engine Room</A>
-<LI><A HREF="#input">Keyboard Input</A>
-<LI><A HREF="#mouse">Mouse Events</A>
-<LI><A HREF="#output">Output and Screen Updating</A>
-</UL>
-<LI><A HREF="#fmnote">The Forms and Menu Libraries</A>
-<LI><A HREF="#tic">A Tour of the Terminfo Compiler</A>
-<UL>
-<LI><A HREF="#nonuse">Translation of Non-<STRONG>use</STRONG> Capabilities</A>
-<LI><A HREF="#uses">Use Capability Resolution</A>
-<LI><A HREF="#translation">Source-Form Translation</A>
-</UL>
-<LI><A HREF="#utils">Other Utilities</A>
-<LI><A HREF="#style">Style Tips for Developers</A>
-<LI><A HREF="#port">Porting Hints</A>
-</UL>
-
-<H1><A NAME="abstract">Abstract</A></H1>
-
-This document is a hacker's tour of the <STRONG>ncurses</STRONG> library and utilities.
-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.
-
-<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:
-
-<UL>
-<LI>Source-compatible with historical curses implementations (including
- the original BSD curses and System V curses.
-<LI>Conformant with the XSI Curses standard issued as part of XPG4 by
- X/Open.
-<LI>High-quality -- stable and reliable code, wide portability, good
- packaging, superior documentation.
-<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.
-</UL>
-
-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.
-
-<H2><A NAME="whysvr4">Why System V Curses?</A></H2>
-
-We used System V curses as a model, reverse-engineering their API, in
-order to fulfill the first two objectives. <P>
-
-System V curses implementations can support BSD curses programs with
-just a recompilation, so by capturing the System V API we also
-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.
-
-<H2><A NAME="extensions">How to Design Extensions</A></H2>
-
-The third objective (standards conformance) requires that it be easy to
-condition source code using <STRONG>ncurses</STRONG> so that the absence of nonstandard
-extensions does not break the code. <P>
-
-Accordingly, we have a policy of associating with each nonstandard extension
-a feature macro, so that ncurses client code can use this macro to condition
-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.
-
-<H1><A NAME="portability">Portability and Configuration</A></H1>
-
-Code written for <STRONG>ncurses</STRONG> may assume an ANSI-standard C compiler and
-POSIX-compatible OS interface. It may also assume the presence of a
-System-V-compatible <EM>select(2)</EM> call. <P>
-
-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:
-
-<UL>
-<LI>All such code is properly conditioned so the build process does not
- attempt to compile it under a plain ANSI/POSIX environment.
-<LI>Adding such implementation methods does not introduce incompatibilities
- in the <STRONG>ncurses</STRONG> API between platforms.
-</UL>
-
-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.
-
-<H1><A NAME="documentation">Documentation Conventions</A></H1>
-
-There are three kinds of documentation associated with this package. Each
-has a different preferred format:
-
-<UL>
-<LI>Package-internal files (README, INSTALL, TO-DO etc.)
-<LI>Manual pages.
-<LI>Everything else (i.e., narrative documentation).
-</UL>
-
-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.
-
-<LI><STRONG>Mark up manual pages in the man macros.</STRONG> These have to be viewable
- through traditional <EM>man(1)</EM> programs.
-
-<LI><STRONG>Write everything else in HTML.</STRONG>
-</OL>
-
-When in doubt, HTMLize a master and use <EM>lynx(1)</EM> to generate
-plain ASCII (as we do for the announcement document). <P>
+</head>
+
+<body>
+ <h1>A Hacker's Guide to NCURSES</h1>
+
+ <h1>Contents</h1>
+
+ <ul>
+ <li><a href="#abstract">Abstract</a></li>
+
+ <li>
+ <a href="#objective">Objective of the Package</a>
+
+ <ul>
+ <li><a href="#whysvr4">Why System V Curses?</a></li>
+
+ <li><a href="#extensions">How to Design Extensions</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#portability">Portability and Configuration</a></li>
+
+ <li><a href="#documentation">Documentation Conventions</a></li>
+
+ <li><a href="#bugtrack">How to Report Bugs</a></li>
+
+ <li>
+ <a href="#ncurslib">A Tour of the Ncurses Library</a>
+
+ <ul>
+ <li><a href="#loverview">Library Overview</a></li>
+
+ <li><a href="#engine">The Engine Room</a></li>
+
+ <li><a href="#input">Keyboard Input</a></li>
+
+ <li><a href="#mouse">Mouse Events</a></li>
+
+ <li><a href="#output">Output and Screen Updating</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#fmnote">The Forms and Menu Libraries</a></li>
+
+ <li>
+ <a href="#tic">A Tour of the Terminfo Compiler</a>
+
+ <ul>
+ <li><a href="#nonuse">Translation of
+ Non-<strong>use</strong> Capabilities</a></li>
+
+ <li><a href="#uses">Use Capability Resolution</a></li>
+
+ <li><a href="#translation">Source-Form Translation</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#utils">Other Utilities</a></li>
+
+ <li><a href="#style">Style Tips for Developers</a></li>
+
+ <li><a href="#port">Porting Hints</a></li>
+ </ul>
+
+ <h1><a name="abstract" id="abstract">Abstract</a></h1>
+
+ <p>This document is a hacker's tour of the
+ <strong>ncurses</strong> library and utilities. 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>
+
+ <h1><a name="objective" id="objective">Objective of the
+ Package</a></h1>
+
+ <p>The objective of the <strong>ncurses</strong> package is to
+ provide a free software API for character-cell terminals and
+ terminal emulators with the following characteristics:</p>
+
+ <ul>
+ <li>Source-compatible with historical curses implementations
+ (including the original BSD curses and System V curses.</li>
+
+ <li>Conformant with the XSI Curses standard issued as part of
+ XPG4 by X/Open.</li>
+
+ <li>High-quality &mdash; stable and reliable code, wide
+ portability, good packaging, superior documentation.</li>
+
+ <li>Featureful &mdash; should eliminate as much of the drudgery
+ of C interface programming as possible, freeing programmers to
+ think at a higher level of design.</li>
+ </ul>
+
+ <p>These objectives are in priority order. So, for example,
+ source compatibility with older version must trump featurefulness
+ &mdash; we cannot add features if it means breaking the portion
+ of the API corresponding to historical curses versions.</p>
+
+ <h2><a name="whysvr4" id="whysvr4">Why System V Curses?</a></h2>
+
+ <p>We used System V curses as a model, reverse-engineering their
+ API, in order to fulfill the first two objectives.</p>
+
+ <p>System V curses implementations can support BSD curses
+ programs with just a recompilation, so by capturing the System V
+ API we also capture BSD's.</p>
+
+ <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>
+
+ <h2><a name="extensions" id="extensions">How to Design
+ Extensions</a></h2>
+
+ <p>The third objective (standards conformance) requires that it
+ be easy to condition source code using <strong>ncurses</strong>
+ so that the absence of nonstandard extensions does not break the
+ code.</p>
+
+ <p>Accordingly, we have a policy of associating with each
+ nonstandard extension a feature macro, so that ncurses client
+ code can use this macro to condition in or out the code that
+ requires the <strong>ncurses</strong> extension.</p>
+
+ <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>
+
+ <h1><a name="portability" id="portability">Portability and
+ Configuration</a></h1>
+
+ <p>Code written for <strong>ncurses</strong> may assume an
+ ANSI-standard C compiler and POSIX-compatible OS interface. It
+ may also assume the presence of a System-V-compatible
+ <em>select(2)</em> call.</p>
+
+ <p>We encourage (but do not require) developers to make the code
+ friendly to less-capable UNIX environments wherever possible.</p>
+
+ <p>We encourage developers to support OS-specific optimizations
+ and methods not available under POSIX/ANSI, provided only
+ that:</p>
+
+ <ul>
+ <li>All such code is properly conditioned so the build process
+ does not attempt to compile it under a plain ANSI/POSIX
+ environment.</li>
+
+ <li>Adding such implementation methods does not introduce
+ incompatibilities in the <strong>ncurses</strong> API between
+ platforms.</li>
+ </ul>
+
+ <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>
+
+ <h1><a name="documentation" id="documentation">Documentation
+ Conventions</a></h1>
+
+ <p>There are three kinds of documentation associated with this
+ package. Each has a different preferred format:</p>
+
+ <ul>
+ <li>Package-internal files (README, INSTALL, TO-DO etc.)</li>
+
+ <li>Manual pages.</li>
+
+ <li>Everything else (i.e., narrative documentation).</li>
+ </ul>
+
+ <p>Our conventions are simple:</p>
+
+ <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 is no point in elaborate mark-up.</li>
+
+ <li><strong>Mark up manual pages in the man macros.</strong>
+ These have to be viewable through traditional <em>man(1)</em>
+ programs.</li>
-The reason for choosing HTML is that it's (a) well-adapted for on-line
-browsing through viewers that are everywhere; (b) more easily readable
-as plain text than most other mark-ups, if you don't have a viewer; and (c)
-carries enough information that you can generate a nice-looking printed
-version from it. Also, of course, it make exporting things like the
-announcement document to WWW pretty trivial.
-
-<H1><A NAME="bugtrack">How to Report Bugs</A></H1>
-
-The <A NAME="bugreport">reporting address for bugs</A> is
-<A HREF="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</A>.
-This is a majordomo list; to join, write
-to <CODE>bug-ncurses-request@gnu.org</CODE> with a message containing the line:
-<PRE>
+ <li><strong>Write everything else in HTML.</strong>
+ </li>
+ </ol>
+
+ <p>When in doubt, HTMLize a master and use <em>lynx(1)</em> to
+ generate plain ASCII (as we do for the announcement
+ document).</p>
+
+ <p>The reason for choosing HTML is that it is (a) well-adapted
+ for on-line browsing through viewers that are everywhere; (b)
+ more easily readable as plain text than most other mark-ups, if
+ you do not 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>
+
+ <h1><a name="bugtrack" id="bugtrack">How to Report Bugs</a></h1>
+
+ <p>The <a name="bugreport" id="bugreport">reporting address for
+ bugs</a> is <a href=
+ "mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>. This is a
+ majordomo list; to join, write to
+ <code>bug-ncurses-request@gnu.org</code> with a message
+ containing the line:</p>
+
+ <pre>
subscribe &lt;name&gt;@&lt;host.domain&gt;
-</PRE>
-
-The <CODE>ncurses</CODE> code is maintained by a small group of
-volunteers. While we try our best to fix bugs promptly, we simply
-don't have a lot of hours to spend on elementary hand-holding. We rely
-on intelligent cooperation from our users. If you think you have
-found a bug in <CODE>ncurses</CODE>, there are some steps you can take
-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.
-
-<OL>
-<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.)
-
-<LI>Try to reproduce the bug on a different terminal type. <P>
-
-In our experience, most of the behaviors people report as library bugs
-are actually due to subtle problems in terminal descriptions. This is
-especially likely to be true if you're using a traditional
-asynchronous terminal or PC-based terminal emulator, rather than xterm
-or a UNIX console entry. <P>
-
-It's therefore extremely helpful if you can tell us whether or not your
-problem reproduces on other terminal types. Usually you'll have both
-a console type and xterm available; please tell us whether or not your
-bug reproduces on both. <P>
-
-If you have xterm available, it is also good to collect xterm reports for
-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.
-
-<LI>Generate and examine a trace file for the broken behavior. <P>
-
-Recompile your program with the debugging versions of the libraries.
-Insert a <CODE>trace()</CODE> call with the argument set to <CODE>TRACE_UPDATE</CODE>.
-(See <A HREF="ncurses-intro.html#debugging">"Writing Programs with
-NCURSES"</A> for details on trace levels.)
-Reproduce your bug, then look at the trace file to see what the library
-was actually doing. <P>
-
-Another frequent cause of apparent bugs is application coding errors
-that cause the wrong things to be put on the virtual screen. Looking
-at the virtual-screen dumps in the trace file will tell you immediately if
-this is happening, and save you from the possible embarrassment of being
-told that the bug is in your code and is your problem rather than ours. <P>
-
-If the virtual-screen dumps look correct but the bug persists, it's
-possible to crank up the trace level to give more and more information
-about the library's update actions and the control sequences it issues
-to perform them. The test directory of the distribution contains a
-tool for digesting these logs to make them less tedious to wade
-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.
-
-<LI>Report details and symptoms, not just interpretations. <P>
-
-If you do the preceding two steps, it is very likely that you'll discover
-the nature of the problem yourself and be able to send us a fix. This
-will create happy feelings all around and earn you good karma for the first
-time you run into a bug you really can't characterize and fix yourself. <P>
-
-If you're still stuck, at least you'll know what to tell us. Remember, we
-need details. If you guess about what is safe to leave out, you are too
-likely to be wrong. <P>
-
-If your bug produces a bad update, include a trace file. Try to make
-the trace at the <EM>least</EM> voluminous level that pins down the
-bug. Logs that have been through tracemunch are OK, it doesn't throw
-away any information (actually they're better than un-munched ones because
-they're easier to read). <P>
-
-If your bug produces a core-dump, please include a symbolic stack trace
-generated by gdb(1) or your local equivalent. <P>
-
-Tell us about every terminal on which you've reproduced the bug -- and
-every terminal on which you can't. Ideally, sent us terminfo sources
-for all of these (yours might differ from ours). <P>
-
-Include your ncurses version and your OS/machine type, of course! You can
-find your ncurses version in the <CODE>curses.h</CODE> file.
-</OL>
-
-If your problem smells like a logic error or in cursor movement or
-scrolling or a bad capability, there are a couple of tiny test frames
-for the library algorithms in the progs directory that may help you
-isolate it. These are not part of the normal build, but do have their
-own make productions. <P>
-
-The most important of these is <CODE>mvcur</CODE>, a test frame for the
-cursor-movement optimization code. With this program, you can see
-directly what control sequences will be emitted for any given cursor
-movement or scroll/insert/delete operations. If you think you've got
-a bad capability identified, you can disable it and test again. The
-program is command-driven and has on-line help. <P>
-
-If you think the vertical-scroll optimization is broken, or just want to
-understand how it works better, build <CODE>hashmap</CODE> and read the
-header comments of <CODE>hardscroll.c</CODE> and <CODE>hashmap.c</CODE>; then try
-it out. You can also test the hardware-scrolling optimization separately
-with <CODE>hardscroll</CODE>. <P>
-
-<H1><A NAME="ncurslib">A Tour of the Ncurses Library</A></H1>
-
-<H2><A NAME="loverview">Library Overview</A></H2>
-
-Most of the library is superstructure -- fairly trivial convenience
-interfaces to a small set of basic functions and data structures used
-to manipulate the virtual screen (in particular, none of this code
-does any I/O except through calls to more fundamental modules
-described below). The files
-<blockquote>
-<CODE>
-lib_addch.c
-lib_bkgd.c
-lib_box.c
-lib_chgat.c
-lib_clear.c
-lib_clearok.c
-lib_clrbot.c
-lib_clreol.c
-lib_colorset.c
-lib_data.c
-lib_delch.c
-lib_delwin.c
-lib_echo.c
-lib_erase.c
-lib_gen.c
-lib_getstr.c
-lib_hline.c
-lib_immedok.c
-lib_inchstr.c
-lib_insch.c
-lib_insdel.c
-lib_insstr.c
-lib_instr.c
-lib_isendwin.c
-lib_keyname.c
-lib_leaveok.c
-lib_move.c
-lib_mvwin.c
-lib_overlay.c
-lib_pad.c
-lib_printw.c
-lib_redrawln.c
-lib_scanw.c
-lib_screen.c
-lib_scroll.c
-lib_scrollok.c
-lib_scrreg.c
-lib_set_term.c
-lib_slk.c
-lib_slkatr_set.c
-lib_slkatrof.c
-lib_slkatron.c
-lib_slkatrset.c
-lib_slkattr.c
-lib_slkclear.c
-lib_slkcolor.c
-lib_slkinit.c
-lib_slklab.c
-lib_slkrefr.c
-lib_slkset.c
-lib_slktouch.c
-lib_touch.c
-lib_unctrl.c
-lib_vline.c
-lib_wattroff.c
-lib_wattron.c
-lib_window.c
-</CODE>
-</blockquote>
-are all in this category. They are very
-unlikely to need change, barring bugs or some fundamental
-reorganization in the underlying data structures. <P>
-
-These files are used only for debugging support:
-<blockquote>
-<code>
-lib_trace.c
-lib_traceatr.c
-lib_tracebits.c
-lib_tracechr.c
-lib_tracedmp.c
-lib_tracemse.c
-trace_buf.c
-</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 reason.<P>
-
-There is another group of files that do direct I/O via <EM>tputs()</EM>,
-computations on the terminal capabilities, or queries to the OS
-environment, but nevertheless have only fairly low complexity. These
-include:
-<blockquote>
-<code>
-lib_acs.c
-lib_beep.c
-lib_color.c
-lib_endwin.c
-lib_initscr.c
-lib_longname.c
-lib_newterm.c
-lib_options.c
-lib_termcap.c
-lib_ti.c
-lib_tparm.c
-lib_tputs.c
-lib_vidattr.c
-read_entry.c.
-</code>
-</blockquote>
-They are likely to need revision only if
-ncurses is being ported to an environment without an underlying
-terminfo capability representation. <P>
-
-These files
-have serious hooks into
-the tty driver and signal facilities:
-<blockquote>
-<code>
-lib_kernel.c
-lib_baudrate.c
-lib_raw.c
-lib_tstp.c
-lib_twait.c
-</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.
-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>
-hardscroll.c
-hashmap.c
-lib_addch.c
-lib_doupdate.c
-lib_getch.c
-lib_mouse.c
-lib_mvcur.c
-lib_refresh.c
-lib_setup.c
-lib_vidattr.c
-</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.
-We'll tour some of these files in detail
-below (see <A HREF="#engine">The Engine Room</A>). <P>
-
-Finally, there is a group of files that is actually most of the
-terminfo compiler. The reason this code lives in the <STRONG>ncurses</STRONG>
-library is to support fallback to /etc/termcap. These files include
-<blockquote>
-<code>
-alloc_entry.c
-captoinfo.c
-comp_captab.c
-comp_error.c
-comp_hash.c
-comp_parse.c
-comp_scan.c
-parse_entry.c
-read_termcap.c
-write_entry.c
-</code>
-</blockquote>
-We'll discuss these in the compiler tour.
-
-<H2><A NAME="engine">The Engine Room</A></H2>
-
-<H3><A NAME="input">Keyboard Input</A></H3>
-
-All <CODE>ncurses</CODE> input funnels through the function
-<CODE>wgetch()</CODE>, defined in <CODE>lib_getch.c</CODE>. This function is
-tricky; it has to poll for keyboard and mouse events and do a running
-match of incoming input against the set of defined special keys. <P>
-
-The central data structure in this module is a FIFO queue, used to
-match multiple-character input sequences against special-key
-capabilities; also to implement pushback via <CODE>ungetch()</CODE>. <P>
-
-The <CODE>wgetch()</CODE> code distinguishes between function key
-sequences and the same sequences typed manually by doing a timed wait
-after each input character that could lead a function key sequence.
-If the entire sequence takes less than 1 second, it is assumed to have
-been generated by a function key press. <P>
-
-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.
-
-<H3><A NAME="mouse">Mouse Events</A></H3>
-
-If the mouse interface is active, <CODE>wgetch()</CODE> polls for mouse
-events each call, before it goes to the keyboard for input. It is
-up to <CODE>lib_mouse.c</CODE> how the polling is accomplished; it may vary
-for different devices. <P>
-
-Under xterm, however, mouse event notifications come in via the keyboard
-input stream. They are recognized by having the <STRONG>kmous</STRONG> capability
-as a prefix. This is kind of klugey, but trying to wire in recognition of
-a mouse key prefix without going through the function-key machinery would
-be just too painful, and this turns out to imply having the prefix somewhere
-in the function-key capabilities at terminal-type initialization. <P>
-
-This kluge only works because <STRONG>kmous</STRONG> isn't actually used by any
-historic terminal type or curses implementation we know of. Best
-guess is it's a relic of some forgotten experiment in-house at Bell
-Labs that didn't leave any traces in the publicly-distributed System V
-terminfo files. If System V or XPG4 ever gets serious about using it
-again, this kluge may have to change. <P>
-
-Here are some more details about mouse event handling: <P>
-
-The <CODE>lib_mouse()</CODE>code is logically split into a lower level that
-accepts event reports in a device-dependent format and an upper level that
-parses mouse gestures and filters events. The mediating data structure is a
-circular queue of event structures. <P>
-
-Functionally, the lower level's job is to pick up primitive events and
-put them on the circular queue. This can happen in one of two ways:
-either (a) <CODE>_nc_mouse_event()</CODE> detects a series of incoming
-mouse reports and queues them, or (b) code in <CODE>lib_getch.c</CODE> detects the
-<STRONG>kmous</STRONG> prefix in the keyboard input stream and calls _nc_mouse_inline
-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).
-
-<H3><A NAME="output">Output and Screen Updating</A></H3>
-
-With the single exception of character echoes during a <CODE>wgetnstr()</CODE>
-call (which simulates cooked-mode line editing in an ncurses window),
-the library normally does all its output at refresh time. <P>
-
-The main job is to go from the current state of the screen (as represented
-in the <CODE>curscr</CODE> window structure) to the desired new state (as
-represented in the <CODE>newscr</CODE> window structure), while doing as
-little I/O as possible. <P>
-
-The brains of this operation are the modules <CODE>hashmap.c</CODE>,
-<CODE>hardscroll.c</CODE> and <CODE>lib_doupdate.c</CODE>; the latter two use
-<CODE>lib_mvcur.c</CODE>. Essentially, what happens looks like this: <P>
-
-The <CODE>hashmap.c</CODE> module tries to detect vertical motion
-changes between the real and virtual screens. This information
-is represented by the oldindex members in the newscr structure.
-These are modified by vertical-motion and clear operations, and both are
-re-initialized after each update. To this change-journalling
-information, the hashmap code adds deductions made using a modified Heckel
-algorithm on hash values generated from the line contents. <P>
-
-The <CODE>hardscroll.c</CODE> module computes an optimum set of scroll,
-insertion, and deletion operations to make the indices match. It calls
-<CODE>_nc_mvcur_scrolln()</CODE> in <CODE>lib_mvcur.c</CODE> to do those motions. <P>
-
-Then <CODE>lib_doupdate.c</CODE> goes to work. Its job is to do line-by-line
-transformations of <CODE>curscr</CODE> lines to <CODE>newscr</CODE> lines. Its main
-tool is the routine <CODE>mvcur()</CODE> in <CODE>lib_mvcur.c</CODE>. This routine
-does cursor-movement optimization, attempting to get from given screen
-location A to given location B in the fewest output characters possible. <P>
-
-If you want to work on screen optimizations, you should use the fact
-that (in the trace-enabled version of the library) enabling the
-<CODE>TRACE_TIMES</CODE> trace level causes a report to be emitted after
-each screen update giving the elapsed time and a count of characters
-emitted during the update. You can use this to tell when an update
-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.
-
-<H1><A NAME="fmnote">The Forms and Menu Libraries</A></H1>
-
-The forms and menu libraries should work reliably in any environment you
-can port ncurses to. The only portability issue anywhere in them is what
-flavor of regular expressions the built-in form field type TYPE_REGEXP
-will recognize. <P>
-
-The configuration code prefers the POSIX regex facility, modeled on
-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>.
-
-<H1><A NAME="tic">A Tour of the Terminfo Compiler</A></H1>
-
-The <STRONG>ncurses</STRONG> implementation of <STRONG>tic</STRONG> is rather complex
-internally; it has to do a trying combination of missions. This starts
-with the fact that, in addition to its normal duty of compiling
-terminfo sources into loadable terminfo binaries, it has to be able to
-handle termcap syntax and compile that too into terminfo entries. <P>
-
-The implementation therefore starts with a table-driven, dual-mode
-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".
-
-<H2><A NAME="nonuse">Translation of Non-<STRONG>use</STRONG> Capabilities</A></H2>
-
-Translation of most things besides <STRONG>use</STRONG> capabilities is pretty
-straightforward. The lexical analyzer's tokenizer hands each capability
-name to a hash function, which drives a table lookup. The table entry
-yields an index which is used to look up the token type in another table,
-and controls interpretation of the value. <P>
-
-One possibly interesting aspect of the implementation is the way the
-compiler tables are initialized. All the tables are generated by various
-awk/sed/sh scripts from a master table <CODE>include/Caps</CODE>; these
-scripts actually write C initializers which are linked to the compiler.
-Furthermore, the hash table is generated in the same way, so it doesn't
-have to be generated at compiler startup time (another benefit of this
-organization is that the hash table can be in shareable text space). <P>
-
-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>.
-
-<H2><A NAME="uses">Use Capability Resolution</A></H2>
-
-The background problem that makes <STRONG>tic</STRONG> tricky isn't the capability
-translation itself, it's the resolution of <STRONG>use</STRONG> capabilities. Older
-versions would not handle forward <STRONG>use</STRONG> references for this reason
-(that is, a using terminal always had to follow its use target in the
-source file). By doing this, they got away with a simple implementation
-tactic; compile everything as it blows by, then resolve uses from compiled
-entries. <P>
-
-This won't do for <STRONG>ncurses</STRONG>. The problem is that that the whole
-compilation process has to be embeddable in the <STRONG>ncurses</STRONG> library
-so that it can be called by the startup code to translate termcap
-entries on the fly. The embedded version can't go promiscuously writing
-everything it translates out to disk -- for one thing, it will typically
-be running with non-root permissions. <P>
-
-So our <STRONG>tic</STRONG> is designed to parse an entire terminfo file into a
-doubly-linked circular list of entry structures in-core, and then do
-<STRONG>use</STRONG> resolution in-memory before writing everything out. This
-design has other advantages: it makes forward and back use-references
-equally easy (so we get the latter for free), and it makes checking for
-name collisions before they're written out easy to do. <P>
-
-And this is exactly how the embedded version works. But the stand-alone
-user-accessible version of <STRONG>tic</STRONG> partly reverts to the historical
-strategy; it writes to disk (not keeping in core) any entry with no
-<STRONG>use</STRONG> references. <P>
-
-This is strictly a core-economy kluge, implemented because the
-terminfo master file is large enough that some core-poor systems swap
-like crazy when you compile it all in memory...there have been reports of
-this process taking <STRONG>three hours</STRONG>, rather than the twenty seconds
-or less typical on the author's development box. <P>
-
-So. The executable <STRONG>tic</STRONG> passes the entry-parser a hook that
-<EM>immediately</EM> writes out the referenced entry if it has no use
-capabilities. The compiler main loop refrains from adding the entry
-to the in-core list when this hook fires. If some other entry later
-needs to reference an entry that got written immediately, that's OK;
-the resolution code will fetch it off disk when it can't find it in
-core. <P>
-
-Name collisions will still be detected, just not as cleanly. The
-<CODE>write_entry()</CODE> code complains before overwriting an entry that
-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.
-
-<H2><A NAME="translation">Source-Form Translation</A></H2>
-
-Another use of <STRONG>tic</STRONG> is to do source translation between various termcap
-and terminfo formats. There are more variants out there than you might
-think; the ones we know about are described in the <STRONG>captoinfo(1)</STRONG>
-manual page. <P>
-
-The translation output code (<CODE>dump_entry()</CODE> in
-<CODE>ncurses/dump_entry.c</CODE>) is shared with the <STRONG>infocmp(1)</STRONG>
-utility. It takes the same internal representation used to generate
-the binary form and dumps it to standard output in a specified
-format. <P>
-
-The <CODE>include/Caps</CODE> file has a header comment describing ways you
-can specify source translations for nonstandard capabilities just by
-altering the master table. It's possible to set up capability aliasing
-or tell the compiler to plain ignore a given capability without writing
-any C code at all. <P>
-
-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.
-
-<H1><A NAME="utils">Other Utilities</A></H1>
-
-The <STRONG>infocmp</STRONG> utility is just a wrapper around the same
-entry-dumping code used by <STRONG>tic</STRONG> for source translation. Perhaps
-the one interesting aspect of the code is the use of a predicate
-function passed in to <CODE>dump_entry()</CODE> to control which
-capabilities are dumped. This is necessary in order to handle both
-the ordinary De-compilation case and entry difference reporting. <P>
-
-The <STRONG>tput</STRONG> and <STRONG>clear</STRONG> utilities just do an entry load
-followed by a <CODE>tputs()</CODE> of a selected capability.
-
-<H1><A NAME="style">Style Tips for Developers</A></H1>
-
-See the TO-DO file in the top-level directory of the source distribution
-for additions that would be particularly useful. <P>
-
-The prefix <CODE>_nc_</CODE> should be used on library public functions that are
-not part of the curses API in order to prevent pollution of the
-application namespace.
-
-If you have to add to or modify the function prototypes in curses.h.in,
-read ncurses/MKlib_gen.sh first so you can avoid breaking XSI conformance.
-
-Please join the ncurses mailing list. See the INSTALL file in the
-top level of the distribution for details on the list. <P>
-
-Look for the string <CODE>FIXME</CODE> in source files to tag minor bugs
-and potential problems that could use fixing. <P>
-
-Don't try to auto-detect OS features in the main body of the C code.
-That's the job of the configuration system. <P>
-
-To hold down complexity, do make your code data-driven. Especially,
-if you can drive logic from a table filtered out of
-<CODE>include/Caps</CODE>, do it. If you find you need to augment the
-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!
-
-<H1><A NAME="port">Porting Hints</A></H1>
-
-The following notes are intended to be a first step towards DOS and Macintosh
-ports of the ncurses libraries. <P>
-
-The following library modules are `pure curses'; they operate only on
-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.
-
-<blockquote>
-<code>
-lib_addch.c
-lib_addstr.c
-lib_bkgd.c
-lib_box.c
-lib_clear.c
-lib_clrbot.c
-lib_clreol.c
-lib_delch.c
-lib_delwin.c
-lib_erase.c
-lib_inchstr.c
-lib_insch.c
-lib_insdel.c
-lib_insstr.c
-lib_keyname.c
-lib_move.c
-lib_mvwin.c
-lib_newwin.c
-lib_overlay.c
-lib_pad.c
-lib_printw.c
-lib_refresh.c
-lib_scanw.c
-lib_scroll.c
-lib_scrreg.c
-lib_set_term.c
-lib_touch.c
-lib_tparm.c
-lib_tputs.c
-lib_unctrl.c
-lib_window.c
-panel.c
-</code>
-</blockquote>
-<P>
-
-This module is pure curses, but calls outstr():
-
-<blockquote>
-<code>
-lib_getstr.c
-</code>
-</blockquote>
-<P>
-
-These modules are pure curses, except that they use <CODE>tputs()</CODE>
-and <CODE>putp()</CODE>:
-
-<blockquote>
-<code>
-lib_beep.c
-lib_color.c
-lib_endwin.c
-lib_options.c
-lib_slk.c
-lib_vidattr.c
-</code>
-</blockquote>
-<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.
-
-<blockquote>
-<code>
-alloc_entry.c
-captoinfo.c
-clear.c
-comp_captab.c
-comp_error.c
-comp_hash.c
-comp_main.c
-comp_parse.c
-comp_scan.c
-dump_entry.c
-infocmp.c
-parse_entry.c
-read_entry.c
-tput.c
-write_entry.c
-</code>
-</blockquote>
-<P>
-
-The following modules will use open()/read()/write()/close()/lseek() on files,
-but no other OS calls.
-
-<DL>
-<DT>lib_screen.c
-<DD>used to read/write screen dumps
-<DT>lib_trace.c
-<DD>used to write trace data to the logfile
-</DL>
-
-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.
-
-<dl>
-<dt>lib_longname.c<dd>assumes there may be multiple terminals
-<dt>lib_acs.c<dd>assumes acs_map as a double indirection
-<dt>lib_mvcur.c<dd>assumes cursor moves have variable cost
-<dt>lib_termcap.c<dd>assumes there may be multiple terminals
-<dt>lib_ti.c<dd>assumes there may be multiple terminals
-</dl>
-
-The following modules use UNIX-specific calls:
-
-<dl>
-<dt>lib_doupdate.c<dd>input checking
-<dt>lib_getch.c<dd>read()
-<dt>lib_initscr.c<dd>getenv()
-<dt>lib_newterm.c
-<dt>lib_baudrate.c
-<dt>lib_kernel.c<dd>various tty-manipulation and system calls
-<dt>lib_raw.c<dd>various tty-manipulation calls
-<dt>lib_setup.c<dd>various tty-manipulation calls
-<dt>lib_restart.c<dd>various tty-manipulation calls
-<dt>lib_tstp.c<dd>signal-manipulation calls
-<dt>lib_twait.c<dd>gettimeofday(), select().
-</dl>
-
-<HR>
-<ADDRESS>Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;</ADDRESS>
-(Note: This is <EM>not</EM> the <A HREF="#bugtrack">bug address</A>!)
-</BODY>
-</HTML>
+</pre>
+
+ <p>The <code>ncurses</code> code is maintained by a small group
+ of volunteers. While we try our best to fix bugs promptly, we
+ simply do not have a lot of hours to spend on elementary
+ hand-holding. We rely on intelligent cooperation from our users.
+ If you think you have found a bug in <code>ncurses</code>, there
+ are some steps you can take before contacting us that will help
+ get the bug fixed quickly.</p>
+
+ <p>In order to use our bug-fixing time efficiently, we put people
+ who show us they have taken these steps at the head of our queue.
+ This means that if you do not, you will probably end up at the
+ tail end and have to wait a while.</p>
+
+ <ol>
+ <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 &mdash; 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>
+ </li>
+
+ <li>Try to reproduce the bug on a different terminal type.
+
+ <p>In our experience, most of the behaviors people report as
+ library bugs are actually due to subtle problems in terminal
+ descriptions. This is especially likely to be true if you are
+ using a traditional asynchronous terminal or PC-based
+ terminal emulator, rather than xterm or a UNIX console
+ entry.</p>
+
+ <p>It is therefore extremely helpful if you can tell us
+ whether or not your problem reproduces on other terminal
+ types. Usually you will have both a console type and xterm
+ available; please tell us whether or not your bug reproduces
+ on both.</p>
+
+ <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 &mdash;
+ a surprising number of the bugs we have seen are either
+ triggered or masked by these.</p>
+ </li>
+
+ <li>Generate and examine a trace file for the broken behavior.
+
+ <p>Recompile your program with the debugging versions of the
+ libraries. Insert a <code>trace()</code> call with the
+ argument set to <code>TRACE_UPDATE</code>. (See <a href=
+ "ncurses-intro.html#debugging">"Writing Programs with
+ NCURSES"</a> for details on trace levels.) Reproduce your
+ bug, then look at the trace file to see what the library was
+ actually doing.</p>
+
+ <p>Another frequent cause of apparent bugs is application
+ coding errors that cause the wrong things to be put on the
+ virtual screen. Looking at the virtual-screen dumps in the
+ trace file will tell you immediately if this is happening,
+ and save you from the possible embarrassment of being told
+ that the bug is in your code and is your problem rather than
+ ours.</p>
+
+ <p>If the virtual-screen dumps look correct but the bug
+ persists, it is possible to crank up the trace level to give
+ more and more information about the library's update actions
+ and the control sequences it issues to perform them. The test
+ directory of the distribution contains a tool for digesting
+ these logs to make them less tedious to wade through.</p>
+
+ <p>Often you will find terminfo problems at this stage by
+ noticing that the escape sequences put out for various
+ capabilities are wrong. If not, you are likely to learn
+ enough to be able to characterize any bug in the
+ screen-update logic quite exactly.</p>
+ </li>
+
+ <li>Report details and symptoms, not just interpretations.
+
+ <p>If you do the preceding two steps, it is very likely that
+ you will discover the nature of the problem yourself and be
+ able to send us a fix. This will create happy feelings all
+ around and earn you good karma for the first time you run
+ into a bug you really cannot characterize and fix
+ yourself.</p>
+
+ <p>If you are still stuck, at least you will know what to
+ tell us. Remember, we need details. If you guess about what
+ is safe to leave out, you are too likely to be wrong.</p>
+
+ <p>If your bug produces a bad update, include a trace file.
+ Try to make the trace at the <em>least</em> voluminous level
+ that pins down the bug. Logs that have been through
+ tracemunch are OK, it does not throw away any information
+ (actually they are better than un-munched ones because they
+ are easier to read).</p>
+
+ <p>If your bug produces a core-dump, please include a
+ symbolic stack trace generated by gdb(1) or your local
+ equivalent.</p>
+
+ <p>Tell us about every terminal on which you have reproduced
+ the bug &mdash; and every terminal on which you cannot.
+ Ideally, send us terminfo sources for all of these (yours
+ might differ from ours).</p>
+
+ <p>Include your ncurses version and your OS/machine type, of
+ course! You can find your ncurses version in the
+ <code>curses.h</code> file.</p>
+ </li>
+ </ol>
+
+ <p>If your problem smells like a logic error or in cursor
+ movement or scrolling or a bad capability, there are a couple of
+ tiny test frames for the library algorithms in the progs
+ directory that may help you isolate it. These are not part of the
+ normal build, but do have their own make productions.</p>
+
+ <p>The most important of these is <code>mvcur</code>, a test
+ frame for the cursor-movement optimization code. With this
+ program, you can see directly what control sequences will be
+ emitted for any given cursor movement or scroll/insert/delete
+ operations. If you think you have got a bad capability
+ identified, you can disable it and test again. The program is
+ command-driven and has on-line help.</p>
+
+ <p>If you think the vertical-scroll optimization is broken, or
+ just want to understand how it works better, build
+ <code>hashmap</code> and read the header comments of
+ <code>hardscroll.c</code> and <code>hashmap.c</code>; then try it
+ out. You can also test the hardware-scrolling optimization
+ separately with <code>hardscroll</code>.</p>
+
+ <h1><a name="ncurslib" id="ncurslib">A Tour of the Ncurses
+ Library</a></h1>
+
+ <h2><a name="loverview" id="loverview">Library Overview</a></h2>
+
+ <p>Most of the library is superstructure &mdash; fairly trivial
+ convenience interfaces to a small set of basic functions and data
+ structures used to manipulate the virtual screen (in particular,
+ none of this code does any I/O except through calls to more
+ fundamental modules described below). The files</p>
+
+ <blockquote>
+ <code>lib_addch.c lib_bkgd.c lib_box.c lib_chgat.c lib_clear.c
+ lib_clearok.c lib_clrbot.c lib_clreol.c lib_colorset.c
+ lib_data.c lib_delch.c lib_delwin.c lib_echo.c lib_erase.c
+ lib_gen.c lib_getstr.c lib_hline.c lib_immedok.c lib_inchstr.c
+ lib_insch.c lib_insdel.c lib_insstr.c lib_instr.c
+ lib_isendwin.c lib_keyname.c lib_leaveok.c lib_move.c
+ lib_mvwin.c lib_overlay.c lib_pad.c lib_printw.c lib_redrawln.c
+ lib_scanw.c lib_screen.c lib_scroll.c lib_scrollok.c
+ lib_scrreg.c lib_set_term.c lib_slk.c lib_slkatr_set.c
+ lib_slkatrof.c lib_slkatron.c lib_slkatrset.c lib_slkattr.c
+ lib_slkclear.c lib_slkcolor.c lib_slkinit.c lib_slklab.c
+ lib_slkrefr.c lib_slkset.c lib_slktouch.c lib_touch.c
+ lib_unctrl.c lib_vline.c lib_wattroff.c lib_wattron.c
+ lib_window.c</code>
+ </blockquote>
+
+ <p>are all in this category. They are very unlikely to need
+ change, barring bugs or some fundamental reorganization in the
+ underlying data structures.</p>
+
+ <p>These files are used only for debugging support:</p>
+
+ <blockquote>
+ <code>lib_trace.c lib_traceatr.c lib_tracebits.c lib_tracechr.c
+ lib_tracedmp.c lib_tracemse.c trace_buf.c</code>
+ </blockquote>
+
+ <p>It is rather unlikely you will ever need to change these,
+ unless you want to introduce a new debug trace level for some
+ reason.</p>
+
+ <p>There is another group of files that do direct I/O via
+ <em>tputs()</em>, computations on the terminal capabilities, or
+ queries to the OS environment, but nevertheless have only fairly
+ low complexity. These include:</p>
+
+ <blockquote>
+ <code>lib_acs.c lib_beep.c lib_color.c lib_endwin.c
+ lib_initscr.c lib_longname.c lib_newterm.c lib_options.c
+ lib_termcap.c lib_ti.c lib_tparm.c lib_tputs.c lib_vidattr.c
+ read_entry.c.</code>
+ </blockquote>
+
+ <p>They are likely to need revision only if ncurses is being
+ ported to an environment without an underlying terminfo
+ capability representation.</p>
+
+ <p>These files have serious hooks into the tty driver and signal
+ facilities:</p>
+
+ <blockquote>
+ <code>lib_kernel.c lib_baudrate.c lib_raw.c lib_tstp.c
+ lib_twait.c</code>
+ </blockquote>
+
+ <p>If you run into porting snafus moving the package to another
+ UNIX, the problem is likely to be in one of these files. The file
+ <code>lib_print.c</code> uses sleep(2) and also falls in this
+ category.</p>
+
+ <p>Almost all of the real work is done in the files</p>
+
+ <blockquote>
+ <code>hardscroll.c hashmap.c lib_addch.c lib_doupdate.c
+ lib_getch.c lib_mouse.c lib_mvcur.c lib_refresh.c lib_setup.c
+ lib_vidattr.c</code>
+ </blockquote>
+
+ <p>Most of the algorithmic complexity in the library lives in
+ these files. If there is a real bug in <strong>ncurses</strong>
+ itself, it is probably here. We will tour some of these files in
+ detail below (see <a href="#engine">The Engine Room</a>).</p>
+
+ <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</p>
+
+ <blockquote>
+ <code>alloc_entry.c captoinfo.c comp_captab.c comp_error.c
+ comp_hash.c comp_parse.c comp_scan.c parse_entry.c
+ read_termcap.c write_entry.c</code>
+ </blockquote>
+
+ <p>We will discuss these in the compiler tour.</p>
+
+ <h2><a name="engine" id="engine">The Engine Room</a></h2>
+
+ <h3><a name="input" id="input">Keyboard Input</a></h3>
+
+ <p>All <code>ncurses</code> input funnels through the function
+ <code>wgetch()</code>, defined in <code>lib_getch.c</code>. This
+ function is tricky; it has to poll for keyboard and mouse events
+ and do a running match of incoming input against the set of
+ defined special keys.</p>
+
+ <p>The central data structure in this module is a FIFO queue,
+ used to match multiple-character input sequences against
+ special-key capabilities; also to implement pushback via
+ <code>ungetch()</code>.</p>
+
+ <p>The <code>wgetch()</code> code distinguishes between function
+ key sequences and the same sequences typed manually by doing a
+ timed wait after each input character that could lead a function
+ key sequence. If the entire sequence takes less than 1 second, it
+ is assumed to have been generated by a function key press.</p>
+
+ <p>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 do not return a reliable time-left value.
+ The function <code>timed_wait()</code> effectively simulates a
+ System V select.</p>
+
+ <h3><a name="mouse" id="mouse">Mouse Events</a></h3>
+
+ <p>If the mouse interface is active, <code>wgetch()</code> polls
+ for mouse events each call, before it goes to the keyboard for
+ input. It is up to <code>lib_mouse.c</code> how the polling is
+ accomplished; it may vary for different devices.</p>
+
+ <p>Under xterm, however, mouse event notifications come in via
+ the keyboard input stream. They are recognized by having the
+ <strong>kmous</strong> capability as a prefix. This is kind of
+ klugey, but trying to wire in recognition of a mouse key prefix
+ without going through the function-key machinery would be just
+ too painful, and this turns out to imply having the prefix
+ somewhere in the function-key capabilities at terminal-type
+ initialization.</p>
+
+ <p>This kluge only works because <strong>kmous</strong> is not
+ actually used by any historic terminal type or curses
+ implementation we know of. Best guess is it is a relic of some
+ forgotten experiment in-house at Bell Labs that did not leave any
+ traces in the publicly-distributed System V terminfo files. If
+ System V or XPG4 ever gets serious about using it again, this
+ kluge may have to change.</p>
+
+ <p>Here are some more details about mouse event handling:</p>
+
+ <p>The <code>lib_mouse()</code> code is logically split into a
+ lower level that accepts event reports in a device-dependent
+ format and an upper level that parses mouse gestures and filters
+ events. The mediating data structure is a circular queue of event
+ structures.</p>
+
+ <p>Functionally, the lower level's job is to pick up primitive
+ events and put them on the circular queue. This can happen in one
+ of two ways: either (a) <code>_nc_mouse_event()</code> detects a
+ series of incoming mouse reports and queues them, or (b) code in
+ <code>lib_getch.c</code> detects the <strong>kmous</strong>
+ prefix in the keyboard input stream and calls _nc_mouse_inline to
+ queue up a series of adjacent mouse reports.</p>
+
+ <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>
+
+ <h3><a name="output" id="output">Output and Screen Updating</a></h3>
+
+ <p>With the single exception of character echoes during a
+ <code>wgetnstr()</code> call (which simulates cooked-mode line
+ editing in an ncurses window), the library normally does all its
+ output at refresh time.</p>
+
+ <p>The main job is to go from the current state of the screen (as
+ represented in the <code>curscr</code> window structure) to the
+ desired new state (as represented in the <code>newscr</code>
+ window structure), while doing as little I/O as possible.</p>
+
+ <p>The brains of this operation are the modules
+ <code>hashmap.c</code>, <code>hardscroll.c</code> and
+ <code>lib_doupdate.c</code>; the latter two use
+ <code>lib_mvcur.c</code>. Essentially, what happens looks like
+ this:</p>
+
+ <ul>
+ <li>
+ <p>The <code>hashmap.c</code> module tries to detect vertical
+ motion changes between the real and virtual screens. This
+ information is represented by the oldindex members in the
+ newscr structure. These are modified by vertical-motion and
+ clear operations, and both are re-initialized after each
+ update. To this change-journalling information, the hashmap
+ code adds deductions made using a modified Heckel algorithm
+ on hash values generated from the line contents.</p>
+ </li>
+
+ <li>
+ <p>The <code>hardscroll.c</code> module computes an optimum
+ set of scroll, insertion, and deletion operations to make the
+ indices match. It calls <code>_nc_mvcur_scrolln()</code> in
+ <code>lib_mvcur.c</code> to do those motions.</p>
+ </li>
+
+ <li>
+ <p>Then <code>lib_doupdate.c</code> goes to work. Its job is
+ to do line-by-line transformations of <code>curscr</code>
+ lines to <code>newscr</code> lines. Its main tool is the
+ routine <code>mvcur()</code> in <code>lib_mvcur.c</code>.
+ This routine does cursor-movement optimization, attempting to
+ get from given screen location A to given location B in the
+ fewest output characters possible.</p>
+ </li>
+ </ul>
+
+ <p>If you want to work on screen optimizations, you should use
+ the fact that (in the trace-enabled version of the library)
+ enabling the <code>TRACE_TIMES</code> trace level causes a report
+ to be emitted after each screen update giving the elapsed time
+ and a count of characters emitted during the update. You can use
+ this to tell when an update optimization improves efficiency.</p>
+
+ <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>
+
+ <h1><a name="fmnote" id="fmnote">The Forms and Menu Libraries</a></h1>
+
+ <p>The forms and menu libraries should work reliably in any
+ environment you can port ncurses to. The only portability issue
+ anywhere in them is what flavor of regular expressions the
+ built-in form field type TYPE_REGEXP will recognize.</p>
+
+ <p>The configuration code prefers the POSIX regex facility,
+ modeled on System V's, but will settle for BSD regexps if the
+ former is not available.</p>
+
+ <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>
+
+ <h1><a name="tic" id="tic">A Tour of the Terminfo Compiler</a></h1>
+
+ <p>The <strong>ncurses</strong> implementation of
+ <strong>tic</strong> is rather complex internally; it has to do a
+ trying combination of missions. This starts with the fact that,
+ in addition to its normal duty of compiling terminfo sources into
+ loadable terminfo binaries, it has to be able to handle termcap
+ syntax and compile that too into terminfo entries.</p>
+
+ <p>The implementation therefore starts with a table-driven,
+ dual-mode lexical analyzer (in <code>comp_scan.c</code>). The
+ lexer chooses its mode (termcap or terminfo) based on the first
+ &ldquo;,&rdquo; or &ldquo;:&rdquo; 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>
+
+ <h2><a name="nonuse" id="nonuse">Translation of
+ Non-<strong>use</strong> Capabilities</a></h2>
+
+ <p>Translation of most things besides <strong>use</strong>
+ capabilities is pretty straightforward. The lexical analyzer's
+ tokenizer hands each capability name to a hash function, which
+ drives a table lookup. The table entry yields an index which is
+ used to look up the token type in another table, and controls
+ interpretation of the value.</p>
+
+ <p>One possibly interesting aspect of the implementation is the
+ way the compiler tables are initialized. All the tables are
+ generated by various awk/sed/sh scripts from a master table
+ <code>include/Caps</code>; these scripts actually write C
+ initializers which are linked to the compiler. Furthermore, the
+ hash table is generated in the same way, so it doesn't have to be
+ generated at compiler startup time (another benefit of this
+ organization is that the hash table can be in shareable text
+ space).</p>
+
+ <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 will have more to say about this in the section on
+ <a href="#translation">Source-Form Translation</a>.</p>
+
+ <h2><a name="uses" id="uses">Use Capability Resolution</a></h2>
+
+ <p>The background problem that makes <strong>tic</strong> tricky
+ is not the capability translation itself, it is the resolution of
+ <strong>use</strong> capabilities. Older versions would not
+ handle forward <strong>use</strong> references for this reason
+ (that is, a using terminal always had to follow its use target in
+ the source file). By doing this, they got away with a simple
+ implementation tactic; compile everything as it blows by, then
+ resolve uses from compiled entries.</p>
+
+ <p>This will not do for <strong>ncurses</strong>. The problem is
+ that that the whole compilation process has to be embeddable in
+ the <strong>ncurses</strong> library so that it can be called by
+ the startup code to translate termcap entries on the fly. The
+ embedded version cannot go promiscuously writing everything it
+ translates out to disk &mdash; for one thing, it will typically
+ be running with non-root permissions.</p>
+
+ <p>So our <strong>tic</strong> is designed to parse an entire
+ terminfo file into a doubly-linked circular list of entry
+ structures in-core, and then do <strong>use</strong> resolution
+ in-memory before writing everything out. This design has other
+ advantages: it makes forward and back use-references equally easy
+ (so we get the latter for free), and it makes checking for name
+ collisions before they are written out easy to do.</p>
+
+ <p>And this is exactly how the embedded version works. But the
+ stand-alone user-accessible version of <strong>tic</strong>
+ partly reverts to the historical strategy; it writes to disk (not
+ keeping in core) any entry with no <strong>use</strong>
+ references.</p>
+
+ <p>This is strictly a core-economy kluge, implemented because the
+ terminfo master file is large enough that some core-poor systems
+ swap like crazy when you compile it all in memory...there have
+ been reports of this process taking <strong>three hours</strong>,
+ rather than the twenty seconds or less typical on the author's
+ development box.</p>
+
+ <p>So. The executable <strong>tic</strong> passes the
+ entry-parser a hook that <em>immediately</em> writes out the
+ referenced entry if it has no use capabilities. The compiler main
+ loop refrains from adding the entry to the in-core list when this
+ hook fires. If some other entry later needs to reference an entry
+ that got written immediately, that is OK; the resolution code
+ will fetch it off disk when it cannot find it in core.</p>
+
+ <p>Name collisions will still be detected, just not as cleanly.
+ The <code>write_entry()</code> code complains before overwriting
+ an entry that 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>
+
+ <h2><a name="translation" id="translation">Source-Form
+ Translation</a></h2>
+
+ <p>Another use of <strong>tic</strong> is to do source
+ translation between various termcap and terminfo formats. There
+ are more variants out there than you might think; the ones we
+ know about are described in the <strong>captoinfo(1)</strong>
+ manual page.</p>
+
+ <p>The translation output code (<code>dump_entry()</code> in
+ <code>ncurses/dump_entry.c</code>) is shared with the
+ <strong>infocmp(1)</strong> utility. It takes the same internal
+ representation used to generate the binary form and dumps it to
+ standard output in a specified format.</p>
+
+ <p>The <code>include/Caps</code> file has a header comment
+ describing ways you can specify source translations for
+ nonstandard capabilities just by altering the master table. It is
+ possible to set up capability aliasing or tell the compiler to
+ plain ignore a given capability without writing any C code at
+ all.</p>
+
+ <p>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>
+
+ <h1><a name="utils" id="utils">Other Utilities</a></h1>
+
+ <p>The <strong>infocmp</strong> utility is just a wrapper around
+ the same entry-dumping code used by <strong>tic</strong> for
+ source translation. Perhaps the one interesting aspect of the
+ code is the use of a predicate function passed in to
+ <code>dump_entry()</code> to control which capabilities are
+ dumped. This is necessary in order to handle both the ordinary
+ De-compilation case and entry difference reporting.</p>
+
+ <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>
+
+ <h1><a name="style" id="style">Style Tips for Developers</a></h1>
+
+ <p>See the TO-DO file in the top-level directory of the source
+ distribution for additions that would be particularly useful.</p>
+
+ <p>The prefix <code>_nc_</code> should be used on library public
+ functions that are not part of the curses API in order to prevent
+ pollution of the application namespace. If you have to add to or
+ modify the function prototypes in curses.h.in, read
+ ncurses/MKlib_gen.sh first so you can avoid breaking XSI
+ conformance. Please join the ncurses mailing list. See the
+ INSTALL file in the top level of the distribution for details on
+ the list.</p>
+
+ <p>Look for the string <code>FIXME</code> in source files to tag
+ minor bugs and potential problems that could use fixing.</p>
+
+ <p>Do not try to auto-detect OS features in the main body of the
+ C code. That is the job of the configuration system.</p>
+
+ <p>To hold down complexity, do make your code data-driven.
+ Especially, if you can drive logic from a table filtered out of
+ <code>include/Caps</code>, do it. If you find you need to augment
+ the data in that file in order to generate the proper table, that
+ is still preferable to ad-hoc code &mdash; that is why the fifth
+ field (flags) is there.</p>
+
+ <p>Have fun!</p>
+
+ <h1><a name="port" id="port">Porting Hints</a></h1>
+
+ <p>The following notes are intended to be a first step towards
+ DOS and Macintosh ports of the ncurses libraries.</p>
+
+ <p>The following library modules are &ldquo;pure curses&rdquo;;
+ they operate only on 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>
+
+ <blockquote>
+ <code>lib_addch.c lib_addstr.c lib_bkgd.c lib_box.c lib_clear.c
+ lib_clrbot.c lib_clreol.c lib_delch.c lib_delwin.c lib_erase.c
+ lib_inchstr.c lib_insch.c lib_insdel.c lib_insstr.c
+ lib_keyname.c lib_move.c lib_mvwin.c lib_newwin.c lib_overlay.c
+ lib_pad.c lib_printw.c lib_refresh.c lib_scanw.c lib_scroll.c
+ lib_scrreg.c lib_set_term.c lib_touch.c lib_tparm.c lib_tputs.c
+ lib_unctrl.c lib_window.c panel.c</code>
+ </blockquote>
+
+ <p>This module is pure curses, but calls outstr():</p>
+
+ <blockquote>
+ <code>lib_getstr.c</code>
+ </blockquote>
+
+ <p>These modules are pure curses, except that they use
+ <code>tputs()</code> and <code>putp()</code>:</p>
+
+ <blockquote>
+ <code>lib_beep.c lib_color.c lib_endwin.c lib_options.c
+ lib_slk.c lib_vidattr.c</code>
+ </blockquote>
+
+ <p>This modules assist in POSIX emulation on non-POSIX
+ systems:</p>
+
+ <dl>
+ <dt>sigaction.c</dt>
+
+ <dd>signal calls</dd>
+ </dl>
+
+ <p>The following source files will not be needed for a
+ single-terminal-type port.</p>
+
+ <blockquote>
+ <code>alloc_entry.c captoinfo.c clear.c comp_captab.c
+ comp_error.c comp_hash.c comp_main.c comp_parse.c comp_scan.c
+ dump_entry.c infocmp.c parse_entry.c read_entry.c tput.c
+ write_entry.c</code>
+ </blockquote>
+
+ <p>The following modules will use
+ open()/read()/write()/close()/lseek() on files, but no other OS
+ calls.</p>
+
+ <dl>
+ <dt>lib_screen.c</dt>
+
+ <dd>used to read/write screen dumps</dd>
+
+ <dt>lib_trace.c</dt>
+
+ <dd>used to write trace data to the logfile</dd>
+ </dl>
+
+ <p>Modules that would have to be modified for a port start
+ here:</p>
+
+ <p>The following modules are &ldquo;pure curses&rdquo; but
+ contain assumptions inappropriate for a memory-mapped port.</p>
+
+ <dl>
+ <dt>lib_longname.c</dt>
+
+ <dd>assumes there may be multiple terminals</dd>
+
+ <dt>lib_acs.c</dt>
+
+ <dd>assumes acs_map as a double indirection</dd>
+
+ <dt>lib_mvcur.c</dt>
+
+ <dd>assumes cursor moves have variable cost</dd>
+
+ <dt>lib_termcap.c</dt>
+
+ <dd>assumes there may be multiple terminals</dd>
+
+ <dt>lib_ti.c</dt>
+
+ <dd>assumes there may be multiple terminals</dd>
+ </dl>
+
+ <p>The following modules use UNIX-specific calls:</p>
+
+ <dl>
+ <dt>lib_doupdate.c</dt>
+
+ <dd>input checking</dd>
+
+ <dt>lib_getch.c</dt>
+
+ <dd>read()</dd>
+
+ <dt>lib_initscr.c</dt>
+
+ <dd>getenv()</dd>
+
+ <dt>lib_newterm.c</dt>
+
+ <dt>lib_baudrate.c</dt>
+
+ <dt>lib_kernel.c</dt>
+
+ <dd>various tty-manipulation and system calls</dd>
+
+ <dt>lib_raw.c</dt>
+
+ <dd>various tty-manipulation calls</dd>
+
+ <dt>lib_setup.c</dt>
+
+ <dd>various tty-manipulation calls</dd>
+
+ <dt>lib_restart.c</dt>
+
+ <dd>various tty-manipulation calls</dd>
+
+ <dt>lib_tstp.c</dt>
+
+ <dd>signal-manipulation calls</dd>
+
+ <dt>lib_twait.c</dt>
+
+ <dd>gettimeofday(), select().</dd>
+ </dl>
+
+ <hr>
+
+ <address>
+ Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;
+ </address>
+ (Note: This is <em>not</em> the <a href="#bugtrack">bug
+ address</a>!)
+</body>
+</html>
diff --git a/doc/html/index.html b/doc/html/index.html
index fb6a071c2ca0..c367eaba1cfa 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
- $Id: index.html,v 1.6 2013/05/17 23:30:29 tom Exp $
+ $Id: index.html,v 1.8 2019/03/16 19:39:05 tom Exp $
****************************************************************************
- * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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,23 +28,41 @@
* authorization. *
****************************************************************************
-->
-<HTML>
-<HEAD>
-<TITLE>Welcome to ncurses</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</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>An <a href="ncurses-intro.html">Introduction</a> into (n)curses programming.
-<LI>A <a href="hackguide.html">hackers guide</a> to ncurses.
-<LI>A description of the <a href="Ada95.html">Ada95 binding</a>, by J&uuml;rgen Pfeifer.
-<li>A <a href="NCURSES-Programming-HOWTO.html">A short tutorial</a>, by Pradeep Padala.
-</UL><P>
-We also have HTML versions of all the ncurses <a href="man">manpages</a>.
-</BODY>
-</HTML>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+
+<html>
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
+
+ <title>Welcome to ncurses</title>
+ <link rel="author" href="mailto:bug-ncurses@gnu.org">
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii">
+</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>, by J&uuml;rgen Pfeifer.</li>
+
+ <li>A <a href="NCURSES-Programming-HOWTO.html">A short
+ tutorial</a>, by Pradeep Padala.</li>
+ </ul>
+
+ <p>We also have HTML versions of all the ncurses <a href=
+ "man">manpages</a>.</p>
+</body>
+</html>
diff --git a/doc/html/man/adacurses-config.1.html b/doc/html/man/adacurses-config.1.html
deleted file mode 100644
index 11fd61facf3c..000000000000
--- a/doc/html/man/adacurses-config.1.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
-<!--
- ****************************************************************************
- * Copyright (c) 2010,2011 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************
- * @Id: MKada_config.in,v 1.5 2011/03/26 14:44:51 tom Exp @
--->
-<HTML>
-<HEAD>
-<TITLE>ADACURSES 1 User Commands</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</HEAD>
-<BODY>
-<H1>ADACURSES 1 User Commands</H1>
-<HR>
-<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="ADACURSES.1.html">ADACURSES(1)</A></STRONG> User Commands <STRONG><A HREF="ADACURSES.1.html">ADACURSES(1)</A></STRONG>
-
-
-
-
-</PRE>
-<H2>NAME</H2><PRE>
- adacurses-config - helper script for AdaCurses libraries
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>adacurses-config</STRONG> [<EM>options</EM>]
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- This is a shell script which simplifies configuring an
- application to use the AdaCurses library binding to
- ncurses.
-
-
-</PRE>
-<H2>OPTIONS</H2><PRE>
- <STRONG>--cflags</STRONG>
- echos the gnat (Ada compiler) flags needed to com-
- pile with AdaCurses.
-
- <STRONG>--libs</STRONG> echos the gnat libraries needed to link with
- AdaCurses.
-
- <STRONG>--version</STRONG>
- echos the release+patchdate version of the ncurses
- libraries used to configure and build AdaCurses.
-
- <STRONG>--help</STRONG> prints a list of the <STRONG>adacurses-config</STRONG> script's
- options.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
-
- This describes <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
-
-
-
- <STRONG><A HREF="ADACURSES.1.html">ADACURSES(1)</A></STRONG>
-</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/adacurses6-config.1.html b/doc/html/man/adacurses6-config.1.html
new file mode 100644
index 000000000000..92d3f2e1b8ea
--- /dev/null
+++ b/doc/html/man/adacurses6-config.1.html
@@ -0,0 +1,145 @@
+<!--
+ ****************************************************************************
+ * Copyright (c) 2010-2016,2019 Free 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: MKada_config.in,v 1.11 2019/09/07 20:22:51 tom Exp @
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>ADACURSES 1 User Commands</TITLE>
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
+<BODY>
+<H1 class="no-header">ADACURSES 1 User Commands</H1>
+<PRE>
+<STRONG>ADACURSES(1)</STRONG> User Commands <STRONG>ADACURSES(1)</STRONG>
+
+
+
+
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ adacurses6-config - helper script for AdaCurses libraries
+
+
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <STRONG>adacurses6-config</STRONG> [<EM>options</EM>]
+
+
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ This is a shell script which simplifies configuring an application to
+ use the AdaCurses library binding to ncurses.
+
+
+</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
+ <STRONG>--cflags</STRONG>
+ echos the gnat (Ada compiler) flags needed to compile with
+ AdaCurses.
+
+ <STRONG>--libs</STRONG> echos the gnat libraries needed to link with AdaCurses.
+
+ <STRONG>--version</STRONG>
+ echos the release+patchdate version of the ncurses libraries
+ used to configure and build AdaCurses.
+
+ <STRONG>--help</STRONG> prints a list of the <STRONG>adacurses6-config</STRONG> script's options.
+
+ If no options are given, <STRONG>adacurses6-config</STRONG> prints the combination of
+ <STRONG>--cflags</STRONG> and <STRONG>--libs</STRONG> that <STRONG>gnatmake</STRONG> expects (see example).
+
+
+</PRE><H2><a name="h2-EXAMPLE">EXAMPLE</a></H2><PRE>
+ For example, supposing that you want to compile the "Hello World!"
+ program for AdaCurses. Make a file named "hello.adb":
+ with Terminal_Interface.Curses; use Terminal_Interface.Curses;
+
+ procedure Hello is
+
+ Visibility : Cursor_Visibility := Invisible;
+ done : Boolean := False;
+ c : Key_Code;
+
+ begin
+
+ Init_Screen;
+ Set_Echo_Mode (False);
+
+ Set_Cursor_Visibility (Visibility);
+ Set_Timeout_Mode (Standard_Window, Non_Blocking, 0);
+
+ Move_Cursor (Line =&gt; Lines / 2, Column =&gt; (Columns - 12) / 2);
+ Add (Str =&gt; "Hello World!");
+
+ while not done loop
+
+ c := Get_Keystroke (Standard_Window);
+ case c is
+ when Character'Pos ('q') =&gt; done := True;
+ when others =&gt; null;
+ end case;
+
+ Nap_Milli_Seconds (50);
+ end loop;
+
+ End_Windows;
+
+ end Hello;
+
+ Then, using
+ gnatmake `adacurses-config --cflags` hello -largs `adacurses-
+ config --libs`
+
+ or (simpler):
+ gnatmake hello `adacurses-config`
+
+ you will compile and link the program.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
+
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
+
+
+
+ <STRONG>ADACURSES(1)</STRONG>
+</PRE>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-OPTIONS">OPTIONS</a></li>
+<li><a href="#h2-EXAMPLE">EXAMPLE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
+</BODY>
+</HTML>
diff --git a/doc/html/man/captoinfo.1m.html b/doc/html/man/captoinfo.1m.html
index 2251ab041499..7228f73ff20b 100644
--- a/doc/html/man/captoinfo.1m.html
+++ b/doc/html/man/captoinfo.1m.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,78 +27,69 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: captoinfo.1m,v 1.25 2010/12/04 18:36:44 tom Exp @
+ * @Id: captoinfo.1m,v 1.29 2019/10/12 21:10:00 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>captoinfo 1m</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>captoinfo 1m</H1>
-<HR>
+<H1 class="no-header">captoinfo 1m</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG> <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>
+<STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG> <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>captoinfo</STRONG> - convert a <EM>termcap</EM> description into a <EM>terminfo</EM>
- description
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>captoinfo</STRONG> - convert a <EM>termcap</EM> description into a <EM>terminfo</EM> description
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>captoinfo</STRONG> [<STRONG>-v</STRONG><EM>n</EM> <EM>width</EM>] [<STRONG>-V</STRONG>] [<STRONG>-1</STRONG>] [<STRONG>-w</STRONG> <EM>width</EM>] <EM>file</EM> . . .
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <STRONG>captoinfo</STRONG> [<STRONG>-v</STRONG><EM>n</EM> <EM>width</EM>] [<STRONG>-V</STRONG>] [<STRONG>-1</STRONG>] [<STRONG>-w</STRONG> <EM>width</EM>] <EM>file</EM> ...
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- <STRONG>captoinfo</STRONG> looks in each given text <EM>file</EM> for <STRONG>termcap</STRONG>
- descriptions. For each one found, an equivalent <STRONG>terminfo</STRONG>
- description is written to standard output. Termcap <STRONG>tc</STRONG>
- capabilities are translated directly to terminfo <STRONG>use</STRONG> capa-
- bilities.
-
- If no <EM>file</EM> is given, then the environment variable <STRONG>TERMCAP</STRONG>
- is used for the filename or entry. If <STRONG>TERMCAP</STRONG> is a full
- pathname to a file, only the terminal whose name is speci-
- fied in the environment variable <STRONG>TERM</STRONG> is extracted from
- that file. If the environment variable <STRONG>TERMCAP</STRONG> is not
- set, then the file <STRONG>/usr/share/terminfo</STRONG> is read.
-
- <STRONG>-v</STRONG> print out tracing information on standard error as
- the program runs.
-
- <STRONG>-V</STRONG> print out the version of the program in use on stan-
- dard error and exit.
-
- <STRONG>-1</STRONG> 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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ <STRONG>captoinfo</STRONG> looks in each given text <EM>file</EM> for <STRONG>termcap</STRONG> descriptions. For
+ each one found, an equivalent <STRONG>terminfo</STRONG> description is written to stan-
+ dard output. Termcap <STRONG>tc</STRONG> capabilities are translated directly to ter-
+ minfo <STRONG>use</STRONG> capabilities.
+
+ If no <EM>file</EM> is given, then the environment variable <STRONG>TERMCAP</STRONG> is used for
+ the filename or entry. If <STRONG>TERMCAP</STRONG> is a full pathname to a file, only
+ the terminal whose name is specified in the environment variable <STRONG>TERM</STRONG>
+ is extracted from that file. If the environment variable <STRONG>TERMCAP</STRONG> is
+ not set, then the file <STRONG>/usr/share/terminfo</STRONG> is read.
+
+ <STRONG>-v</STRONG> print out tracing information on standard error as the program
+ runs.
+
+ <STRONG>-V</STRONG> print out the version of the program in use on standard error and
+ exit.
+
+ <STRONG>-1</STRONG> 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.
<STRONG>-w</STRONG> change the output to <EM>width</EM> characters.
-</PRE>
-<H2>FILES</H2><PRE>
- /usr/share/terminfo Compiled terminal description data-
- base.
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+ /usr/share/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 <STRONG>captoinfo</STRONG>. 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.
+</PRE><H2><a name="h2-TRANSLATIONS-FROM-NONSTANDARD-CAPABILITIES">TRANSLATIONS FROM NONSTANDARD CAPABILITIES</a></H2><PRE>
+ Some obsolete nonstandard capabilities will automatically be translated
+ into standard (SVr4/XSI Curses) terminfo capabilities by <STRONG>captoinfo</STRONG>.
+ Whenever one of these automatic 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
@@ -116,12 +106,12 @@
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
@@ -134,9 +124,9 @@
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:
+ XENIX termcap also used to have a set of extension capabilities for
+ forms drawing, designed to take advantage of the IBM PC high-half
+ graphics. They were as follows:
Cap Graphic
-----------------------------
@@ -164,14 +154,13 @@
Gc intersection
GG acs magic cookie count
- If the single-line capabilities occur in an entry, they
- will automatically be composed into an <EM>acsc</EM> string. The
- double-line capabilities and <STRONG>GG</STRONG> are discarded with a warn-
- ing message.
+ If the single-line capabilities occur in an entry, they will automati-
+ cally be composed into an <STRONG>acsc</STRONG> string. The double-line capabilities
+ and <STRONG>GG</STRONG> are discarded with a warning message.
- IBM's AIX has a terminfo facility descended from SVr1 ter-
- minfo but incompatible with the SVr4 format. The follow-
- ing AIX extensions are automatically translated:
+ IBM's AIX has a terminfo facility descended from SVr1 terminfo but
+ incompatible with the SVr4 format. The following AIX extensions are
+ automatically translated:
IBM XSI
-------------
@@ -182,45 +171,56 @@
font2 s2ds
font3 s3ds
- Additionally, the AIX <EM>box1</EM> capability will be automati-
- cally translated to an <EM>acsc</EM> string.
+ Additionally, the AIX <EM>box1</EM> capability will be automatically translated
+ to an <STRONG>acsc</STRONG> string.
- Hewlett-Packard's terminfo library supports two nonstan-
- dard terminfo capabilities <EM>meml</EM> (memory lock) and <EM>memu</EM>
- (memory unlock). These will be discarded with a warning
- message.
+ Hewlett-Packard's terminfo library supports two nonstandard terminfo
+ capabilities <STRONG>meml</STRONG> (memory lock) and <STRONG>memu</STRONG> (memory unlock). These will
+ be discarded with a warning message.
-</PRE>
-<H2>NOTES</H2><PRE>
- This utility is actually a link to <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, running in <EM>-I</EM>
- mode. You can use other <STRONG>tic</STRONG> options such as <STRONG>-f</STRONG> and <STRONG>-x</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ This utility is actually a link to <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, running in <EM>-I</EM> mode. You
+ can use other <STRONG>tic</STRONG> options such as <STRONG>-f</STRONG> and <STRONG>-x</STRONG>.
- The trace option is not identical to SVr4's. Under SVr4,
- instead of following the <STRONG>-v</STRONG> with a trace level n, you
- repeat it n times.
+ The verbose option is not identical to SVr4's. Under SVr4, instead of
+ following the <STRONG>-v</STRONG> with a trace level n, you repeat it n times.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ X/Open Curses, Issue 7 (2009) describes <STRONG>tic</STRONG> briefly, but omits this
+ program. SVr4 systems provide <STRONG>captoinfo</STRONG> as a separate application from
+ <STRONG>tic</STRONG>.
+
+ NetBSD does not provide this application.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
-</PRE>
-<H2>AUTHOR</H2><PRE>
+</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and
Thomas E. Dickey &lt;dickey@invisible-island.net&gt;
- <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>
+ <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-TRANSLATIONS-FROM-NONSTANDARD-CAPABILITIES">TRANSLATIONS FROM NONSTANDARD CAPABILITIES</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/clear.1.html b/doc/html/man/clear.1.html
index 02b5e31d6573..1130989ccfca 100644
--- a/doc/html/man/clear.1.html
+++ b/doc/html/man/clear.1.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free 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,60 +26,144 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: clear.1,v 1.10 2013/06/22 22:22:11 tom Exp @
+ * @Id: clear.1,v 1.22 2018/07/28 21:45:40 tom Exp @
+ * these would be fallbacks for DS/DE,
+ * but groff changed the meaning of the macros.
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>clear 1</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>clear 1</H1>
-<HR>
+<H1 class="no-header">clear 1</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="clear.1.html">clear(1)</A></STRONG> <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>
+<STRONG><A HREF="clear.1.html">clear(1)</A></STRONG> General Commands Manual <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>clear</STRONG> - clear the terminal screen
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>clear</STRONG>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <STRONG>clear</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] [<STRONG>-V</STRONG>] [<STRONG>-x</STRONG>]
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- <STRONG>clear</STRONG> clears your screen if this is possible, including
- its scrollback buffer (if the extended "E3" capability is
- defined). <STRONG>clear</STRONG> looks in the environment for the terminal
- type and then in the <STRONG>terminfo</STRONG> database to determine how to
- clear the screen.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ <STRONG>clear</STRONG> clears your screen if this is possible, including its scrollback
+ buffer (if the extended "E3" capability is defined). <STRONG>clear</STRONG> looks in
+ the environment for the terminal type given by the environment variable
+ <STRONG>TERM</STRONG>, and then in the <STRONG>terminfo</STRONG> database to determine how to clear the
+ screen.
- <STRONG>clear</STRONG> ignores any command-line parameters that may be
- present.
+ <STRONG>clear</STRONG> writes to the standard output. You can redirect the standard
+ output to a file (which prevents <STRONG>clear</STRONG> from actually clearing the
+ screen), and later <STRONG>cat</STRONG> the file to the screen, clearing it at that
+ point.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
+ <STRONG>-T</STRONG> <EM>type</EM>
+ indicates the <EM>type</EM> of terminal. Normally this option is unneces-
+ sary, because the default is taken from the environment variable
+ <STRONG>TERM</STRONG>. If <STRONG>-T</STRONG> is specified, then the shell variables <STRONG>LINES</STRONG> and <STRONG>COL-</STRONG>
+ <STRONG>UMNS</STRONG> will also be ignored.
+
+ <STRONG>-V</STRONG> reports the version of ncurses which was used in this program, and
+ exits. The options are as follows:
+
+ <STRONG>-x</STRONG> do not attempt to clear the terminal's scrollback buffer using the
+ extended "E3" capability.
+
+
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+ A <STRONG>clear</STRONG> command appeared in 2.79BSD dated February 24, 1979. Later
+ that was provided in Unix 8th edition (1985).
+
+ AT&amp;T adapted a different BSD program (<STRONG>tset</STRONG>) to make a new command
+ (<STRONG>tput</STRONG>), and used this to replace the <STRONG>clear</STRONG> command with a shell script
+ which calls <STRONG>tput</STRONG> <STRONG>clear</STRONG>, e.g.,
+
+ /usr/bin/tput ${1:+-T$1} clear 2&gt; /dev/null
+ exit
+
+ In 1989, when Keith Bostic revised the BSD <STRONG>tput</STRONG> command to make it sim-
+ ilar to the AT&amp;T <STRONG>tput</STRONG>, he added a shell script for the <STRONG>clear</STRONG> command:
+
+ exec tput clear
+
+ The remainder of the script in each case is a copyright notice.
+
+ The ncurses <STRONG>clear</STRONG> command began in 1995 by adapting the original BSD
+ <STRONG>clear</STRONG> command (with terminfo, of course).
+
+ The <STRONG>E3</STRONG> extension came later:
+
+ <STRONG>o</STRONG> In June 1999, xterm provided an extension to the standard control
+ sequence for clearing the screen. Rather than clearing just the
+ visible part of the screen using
+
+ printf '\033[2J'
+
+ one could clear the <EM>scrollback</EM> using
+
+ printf '\033[<STRONG>3</STRONG>J'
+
+ This is documented in <EM>XTerm</EM> <EM>Control</EM> <EM>Sequences</EM> as a feature origi-
+ nating with xterm.
+
+ <STRONG>o</STRONG> A few other terminal developers adopted the feature, e.g., PuTTY in
+ 2006.
+
+ <STRONG>o</STRONG> In April 2011, a Red Hat developer submitted a patch to the Linux
+ kernel, modifying its console driver to do the same thing. The
+ Linux change, part of the 3.0 release, did not mention xterm,
+ although it was cited in the Red Hat bug report (#683733) which led
+ to the change.
+
+ <STRONG>o</STRONG> Again, a few other terminal developers adopted the feature. But
+ the next relevant step was a change to the <STRONG>clear</STRONG> program in 2013 to
+ incorporate this extension.
+
+ <STRONG>o</STRONG> In 2013, the <STRONG>E3</STRONG> extension was overlooked in <STRONG>tput</STRONG> with the "clear"
+ parameter. That was addressed in 2016 by reorganizing <STRONG>tput</STRONG> to
+ share its logic with <STRONG>clear</STRONG> and <STRONG>tset</STRONG>.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ Neither IEEE Std 1003.1/The Open Group Base Specifications Issue 7
+ (POSIX.1-2008) nor X/Open Curses Issue 7 documents tset or reset.
+
+ The latter documents <STRONG>tput</STRONG>, which could be used to replace this utility
+ either via a shell script or by an alias (such as a symbolic link) to
+ run <STRONG>tput</STRONG> as <STRONG>clear</STRONG>.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
- <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>
+ <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-OPTIONS">OPTIONS</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_add_wch.3x.html b/doc/html/man/curs_add_wch.3x.html
index eb5506199a95..f7f0c2432e05 100644
--- a/doc/html/man/curs_add_wch.3x.html
+++ b/doc/html/man/curs_add_wch.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2001-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2017,2019 Free 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,204 +26,269 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_add_wch.3x,v 1.15 2012/11/03 23:03:59 tom Exp @
+ * @Id: curs_add_wch.3x,v 1.25 2019/10/27 00:07:13 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_add_wch 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_add_wch 3x</H1>
-<HR>
+<H1 class="no-header">curs_add_wch 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
+<STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>add_wch</STRONG>, <STRONG>wadd_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, <STRONG>mvwadd_wch</STRONG>, <STRONG>echo_wchar</STRONG>,
- <STRONG>wecho_wchar</STRONG> - add a complex character and rendition to a
- <STRONG>curses</STRONG> window, then advance the cursor
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>add_wch</STRONG>, <STRONG>wadd_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, <STRONG>mvwadd_wch</STRONG>, <STRONG>echo_wchar</STRONG>, <STRONG>wecho_wchar</STRONG> - add
+ a complex character and rendition to a <STRONG>curses</STRONG> window, then advance the
+ cursor
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>add_wch(</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>wadd_wch(</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>mvadd_wch(</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwadd_wch(</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG>
- <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvwadd_wch(</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>echo_wchar(</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>wecho_wchar(</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>add_wch</STRONG>, <STRONG>wadd_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, and <STRONG>mvwadd_wch</STRONG> functions
- put the complex character <EM>wch</EM> into the given window at its
- current position, which is then advanced. These functions
- perform wrapping and special-character processing as fol-
- lows:
-
- <STRONG>o</STRONG> If <EM>wch</EM> refers to a spacing character, then any previ-
- ous character at that location is removed. A new
- character specified by <EM>wch</EM> is placed at that location
- with rendition specified by <EM>wch</EM>. The cursor then
- advances to the next spacing character on the screen.
-
- <STRONG>o</STRONG> If <EM>wch</EM> refers to a non-spacing character, all previous
- characters at that location are preserved. The non-
- spacing characters of <EM>wch</EM> are added to the spacing
- complex character, and the rendition specified by <EM>wch</EM>
- is ignored.
-
- <STRONG>o</STRONG> If the character part of <EM>wch</EM> is a tab, newline,
- backspace or other control character, the window is
- updated and the cursor moves as if <STRONG>addch</STRONG> were called.
-
- The <STRONG>echo_wchar</STRONG> function is functionally equivalent to a
- call to <STRONG>add_wch</STRONG> followed by a call to <STRONG>refresh</STRONG>. Similarly,
- the <STRONG>wecho_wchar</STRONG> is functionally equivalent to a call to
- <STRONG>wadd_wch</STRONG> followed by a call to <STRONG>wrefresh</STRONG>. The knowledge
- that only a single character is being output is taken into
- consideration and, for non-control characters, a consider-
- able performance gain might be seen by using the *<STRONG>echo</STRONG>*
- functions instead of their equivalents.
-
- <STRONG>Line</STRONG> <STRONG>Graphics</STRONG>
- Like <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG>addch_wch</STRONG> accepts symbols which make it
- simple to draw lines and other frequently used special
- characters. These symbols correspond to the same VT100
- line-drawing set as <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>.
-
- <EM>Name</EM> <EM>Unicode</EM> <EM>Default</EM> <EM>Description</EM>
- ----------------------------------------------------------------
- WACS_BLOCK 0x25ae # solid square block
- WACS_BOARD 0x2592 # board of squares
- WACS_BTEE 0x2534 + bottom tee
- WACS_BULLET 0x00b7 o bullet
- WACS_CKBOARD 0x2592 : checker board (stipple)
-
- WACS_DARROW 0x2193 v arrow pointing down
- WACS_DEGREE 0x00b0 ' degree symbol
- WACS_DIAMOND 0x25c6 + diamond
- WACS_GEQUAL 0x2265 &gt; greater-than-or-equal-to
- WACS_HLINE 0x2500 - horizontal line
- WACS_LANTERN 0x2603 # lantern symbol
- WACS_LARROW 0x2190 &lt; arrow pointing left
- WACS_LEQUAL 0x2264 &lt; less-than-or-equal-to
- WACS_LLCORNER 0x2514 + lower left-hand corner
- WACS_LRCORNER 0x2518 + lower right-hand corner
- WACS_LTEE 0x2524 + left tee
- WACS_NEQUAL 0x2260 ! not-equal
- WACS_PI 0x03c0 * greek pi
- WACS_PLMINUS 0x00b1 # plus/minus
- WACS_PLUS 0x253c + plus
- WACS_RARROW 0x2192 &gt; arrow pointing right
- WACS_RTEE 0x251c + right tee
- WACS_S1 0x23ba - scan line 1
- WACS_S3 0x23bb - scan line 3
- WACS_S7 0x23bc - scan line 7
- WACS_S9 0x23bd _ scan line 9
- WACS_STERLING 0x00a3 f pound-sterling symbol
- WACS_TTEE 0x252c + top tee
- WACS_UARROW 0x2191 ^ arrow pointing up
- WACS_ULCORNER 0x250c + upper left-hand corner
- WACS_URCORNER 0x2510 + upper right-hand corner
- WACS_VLINE 0x2502 | vertical line
-
- The wide-character configuration of ncurses also defines
- symbols for thick- and double-lines:
-
- <EM>Name</EM> <EM>Unicode</EM> <EM>Default</EM> <EM>Description</EM>
- ---------------------------------------------------------------------
- WACS_T_ULCORNER 0x250f + thick upper left corner
- WACS_T_LLCORNER 0x2517 + thick lower left corner
- WACS_T_URCORNER 0x2513 + thick upper right corner
- WACS_T_LRCORNER 0x251b + thick lower right corner
- WACS_T_LTEE 0x252b + thick tee pointing right
- WACS_T_RTEE 0x2523 + thick tee pointing left
- WACS_T_BTEE 0x253b + thick tee pointing up
- WACS_T_TTEE 0x2533 + thick tee pointing down
- WACS_T_HLINE 0x2501 - thick horizontal line
- WACS_T_VLINE 0x2503 | thick vertical line
- WACS_T_PLUS 0x254b + thick large plus or crossover
- WACS_D_ULCORNER 0x2554 + double upper left corner
- WACS_D_LLCORNER 0x255a + double lower left corner
- WACS_D_URCORNER 0x2557 + double upper right corner
- WACS_D_LRCORNER 0x255d + double lower right corner
- WACS_D_RTEE 0x2563 + double tee pointing left
- WACS_D_LTEE 0x2560 + double tee pointing right
- WACS_D_BTEE 0x2569 + double tee pointing up
- WACS_D_TTEE 0x2566 + double tee pointing down
- WACS_D_HLINE 0x2550 - double horizontal line
- WACS_D_VLINE 0x2551 | double vertical line
- WACS_D_PLUS 0x256c + double large plus or crossover
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE><H3><a name="h3-add_wch">add_wch</a></H3><PRE>
+ The <STRONG>add_wch</STRONG>, <STRONG>wadd_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, and <STRONG>mvwadd_wch</STRONG> functions put the com-
+ plex character <EM>wch</EM> into the given window at its current position, which
+ is then advanced. These functions perform wrapping and special-charac-
+ ter processing as follows:
+
+ <STRONG>o</STRONG> If <EM>wch</EM> refers to a spacing character, then any previous character
+ at that location is removed. A new character specified by <EM>wch</EM> is
+ placed at that location with rendition specified by <EM>wch</EM>. The cur-
+ sor then advances to the next spacing character on the screen.
+
+ <STRONG>o</STRONG> If <EM>wch</EM> refers to a non-spacing character, all previous characters
+ at that location are preserved. The non-spacing characters of <EM>wch</EM>
+ are added to the spacing complex character, and the rendition spec-
+ ified by <EM>wch</EM> is ignored.
+
+ <STRONG>o</STRONG> If the character part of <EM>wch</EM> is a tab, newline, backspace or other
+ control character, the window is updated and the cursor moves as if
+ <STRONG>addch</STRONG> were called.
+
+
+</PRE><H3><a name="h3-echo_wchar">echo_wchar</a></H3><PRE>
+ The <STRONG>echo_wchar</STRONG> function is functionally equivalent to a call to <STRONG>add_wch</STRONG>
+ followed by a call to <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>. Similarly, the <STRONG>wecho_wchar</STRONG> is func-
+ tionally equivalent to a call to <STRONG>wadd_wch</STRONG> followed by a call to <STRONG>wre-</STRONG>
+ <STRONG>fresh</STRONG>. The knowledge that only a single character is being output is
+ taken into consideration and, for non-control characters, a consider-
+ able performance gain might be seen by using the *<STRONG>echo</STRONG>* functions
+ instead of their equivalents.
+
+
+</PRE><H3><a name="h3-Line-Graphics">Line Graphics</a></H3><PRE>
+ Like <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>, <STRONG>addch_wch</STRONG> accepts symbols which make it simple to draw
+ lines and other frequently used special characters. These symbols cor-
+ respond to the same VT100 line-drawing set as <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>.
+
+ <STRONG>ACS</STRONG> <STRONG>Unicode</STRONG> <STRONG>ASCII</STRONG> <STRONG>acsc</STRONG> <STRONG>Glyph</STRONG>
+ <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Default</STRONG> <STRONG>char</STRONG> <STRONG>Name</STRONG>
+ ------------------------------------------------------------------------
+ WACS_BLOCK 0x25ae # 0 solid square block
+ WACS_BOARD 0x2592 # h board of squares
+ WACS_BTEE 0x2534 + v bottom tee
+ WACS_BULLET 0x00b7 o ~ bullet
+ WACS_CKBOARD 0x2592 : a checker board (stipple)
+ WACS_DARROW 0x2193 v . arrow pointing down
+ WACS_DEGREE 0x00b0 ' f degree symbol
+ WACS_DIAMOND 0x25c6 + ` diamond
+
+ WACS_GEQUAL 0x2265 &gt; &gt; greater-than-or-equal-to
+ WACS_HLINE 0x2500 - q horizontal line
+ WACS_LANTERN 0x2603 # i lantern symbol
+ WACS_LARROW 0x2190 &lt; , arrow pointing left
+ WACS_LEQUAL 0x2264 &lt; y less-than-or-equal-to
+ WACS_LLCORNER 0x2514 + m lower left-hand corner
+ WACS_LRCORNER 0x2518 + j lower right-hand corner
+ WACS_LTEE 0x2524 + t left tee
+ WACS_NEQUAL 0x2260 ! | not-equal
+ WACS_PI 0x03c0 * { greek pi
+ WACS_PLMINUS 0x00b1 # g plus/minus
+ WACS_PLUS 0x253c + n plus
+ WACS_RARROW 0x2192 &gt; + arrow pointing right
+ WACS_RTEE 0x251c + u right tee
+ WACS_S1 0x23ba - o scan line 1
+ WACS_S3 0x23bb - p scan line 3
+ WACS_S7 0x23bc - r scan line 7
+ WACS_S9 0x23bd _ s scan line 9
+ WACS_STERLING 0x00a3 f } pound-sterling symbol
+ WACS_TTEE 0x252c + w top tee
+ WACS_UARROW 0x2191 ^ - arrow pointing up
+ WACS_ULCORNER 0x250c + l upper left-hand corner
+ WACS_URCORNER 0x2510 + k upper right-hand corner
+ WACS_VLINE 0x2502 | x vertical line
+
+ The wide-character configuration of ncurses also defines symbols for
+ thick lines (<STRONG>acsc</STRONG> "J" to "V"):
+
+ <STRONG>ACS</STRONG> <STRONG>Unicode</STRONG> <STRONG>ASCII</STRONG> <STRONG>acsc</STRONG> <STRONG>Glyph</STRONG>
+ <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Default</STRONG> <STRONG>char</STRONG> <STRONG>Name</STRONG>
+ -----------------------------------------------------------------------
+ WACS_T_BTEE 0x253b + V thick tee pointing up
+ WACS_T_HLINE 0x2501 - Q thick horizontal line
+ WACS_T_LLCORNER 0x2517 + M thick lower left corner
+ WACS_T_LRCORNER 0x251b + J thick lower right corner
+ WACS_T_LTEE 0x252b + T thick tee pointing right
+ WACS_T_PLUS 0x254b + N thick large plus
+ WACS_T_RTEE 0x2523 + U thick tee pointing left
+ WACS_T_TTEE 0x2533 + W thick tee pointing down
+ WACS_T_ULCORNER 0x250f + L thick upper left corner
+ WACS_T_URCORNER 0x2513 + K thick upper right corner
+ WACS_T_VLINE 0x2503 | X thick vertical line
+
+ and for double-lines (<STRONG>acsc</STRONG> "A" to "I"):
+
+ <STRONG>ACS</STRONG> <STRONG>Unicode</STRONG> <STRONG>ASCII</STRONG> <STRONG>acsc</STRONG> <STRONG>Glyph</STRONG>
+ <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Default</STRONG> <STRONG>char</STRONG> <STRONG>Name</STRONG>
+ ------------------------------------------------------------------------
+ WACS_D_BTEE 0x2569 + H double tee pointing up
+ WACS_D_HLINE 0x2550 - R double horizontal line
+ WACS_D_LLCORNER 0x255a + D double lower left corner
+ WACS_D_LRCORNER 0x255d + A double lower right corner
+ WACS_D_LTEE 0x2560 + F double tee pointing right
+ WACS_D_PLUS 0x256c + E double large plus
+ WACS_D_RTEE 0x2563 + G double tee pointing left
+ WACS_D_TTEE 0x2566 + I double tee pointing down
+ WACS_D_ULCORNER 0x2554 + C double upper left corner
+ WACS_D_URCORNER 0x2557 + B double upper right corner
+ WACS_D_VLINE 0x2551 | Y double vertical line
+
+ Unicode's descriptions for these characters differs slightly from
+ ncurses, by introducing the term "light" (along with less important
+ details). Here are its descriptions for the normal, thick, and double
+ horizontal lines:
+
+ <STRONG>o</STRONG> U+2500 BOX DRAWINGS LIGHT HORIZONTAL
+
+ <STRONG>o</STRONG> U+2501 BOX DRAWINGS HEAVY HORIZONTAL
+
+ <STRONG>o</STRONG> U+2550 BOX DRAWINGS DOUBLE HORIZONTAL
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success.
+
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ Note that <STRONG>add_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, <STRONG>mvwadd_wch</STRONG>, and <STRONG>echo_wchar</STRONG> may be macros.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ All of these functions are described in the XSI Curses standard, Issue
+ 4. The defaults specified for line-drawing characters apply in the
+ POSIX locale.
+
+ X/Open Curses makes it clear that the WACS_ symbols should be defined
+ as a pointer to <STRONG>cchar_t</STRONG> data, e.g., in the discussion of <STRONG>border_set</STRONG>. A
+ few implementations are problematic:
+
+ <STRONG>o</STRONG> NetBSD curses defines the symbols as a <STRONG>wchar_t</STRONG> within a <STRONG>cchar_t</STRONG>.
+
+ <STRONG>o</STRONG> HPUX curses equates some of the <EM>ACS</EM><STRONG>_</STRONG> symbols to the analogous <EM>WACS</EM><STRONG>_</STRONG>
+ symbols as if the <EM>ACS</EM><STRONG>_</STRONG> symbols were wide characters. The misde-
+ fined symbols are the arrows and other symbols which are not used
+ for line-drawing.
+
+ X/Open Curses does not define symbols for thick- or double-lines. SVr4
+ curses implementations defined their line-drawing symbols in terms of
+ intermediate symbols. This implementation extends those symbols, pro-
+ viding new definitions which are not in the SVr4 implementations.
+
+ Not all Unicode-capable terminals provide support for VT100-style
+ alternate character sets (i.e., the <STRONG>acsc</STRONG> capability), with their corre-
+ sponding line-drawing characters. X/Open Curses did not address the
+ aspect of integrating Unicode with line-drawing characters. Existing
+ implementations of Unix curses (AIX, HPUX, Solaris) use only the <STRONG>acsc</STRONG>
+ character-mapping to provide this feature. As a result, those imple-
+ mentations can only use single-byte line-drawing characters. Ncurses
+ 5.3 (2002) provided a table of Unicode values to solve these problems.
+ NetBSD curses incorporated that table in 2010.
+
+ In this implementation, the Unicode values are used instead of the ter-
+ minal description's <STRONG>acsc</STRONG> mapping as discussed in <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> for the
+ environment variable <STRONG>NCURSES_NO_UTF8_ACS</STRONG>. In contrast, for the same
+ cases, the line-drawing characters described in <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> will use
+ only the ASCII default values.
+
+ Having Unicode available does not solve all of the problems with line-
+ drawing for curses:
+ <STRONG>o</STRONG> The closest Unicode equivalents to the VT100 graphics <EM>S1</EM>, <EM>S3</EM>, <EM>S7</EM>
+ and <EM>S9</EM> frequently are not displayed at the regular intervals which
+ the terminal used.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on
- success.
+ <STRONG>o</STRONG> The <EM>lantern</EM> is a special case. It originated with the AT&amp;T 4410
+ terminal in the early 1980s. There is no accessible documentation
+ depicting the lantern symbol on the AT&amp;T terminal.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Lacking documentation, most readers assume that a <EM>storm</EM> <EM>lantern</EM> was
+ intended. But there are several possibilities, all with problems.
+ Unicode 6.0 (2010) does provide two lantern symbols: U+1F383 and
+ U+1F3EE. Those were not available in 2002, and are irrelevant
+ since they lie outside the BMP and as a result are not generally
+ available in terminals. They are not storm lanterns, in any case.
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>add_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, <STRONG>mvwadd_wch</STRONG>, and <STRONG>echo_wchar</STRONG>
- may be macros.
+ Most <EM>storm</EM> <EM>lanterns</EM> have a tapering glass chimney (to guard against
+ tipping); some have a wire grid protecting the chimney.
+ For the tapering appearance, U+2603 was adequate. In use on a
+ terminal, no one can tell what the image represents. Unicode calls
+ it a snowman.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- All of these functions are described in the XSI Curses
- standard, Issue 4. The defaults specified for line-draw-
- ing characters apply in the POSIX locale.
-
- X/Open Curses makes it clear that the WACS_ symbols should
- be defined as a pointer to <STRONG>cchar_t</STRONG> data, e.g., in the dis-
- cussion of <STRONG>border_set</STRONG>. A few implementations are problem-
- atic:
-
- <STRONG>o</STRONG> NetBSD curses defines the symbols as a <STRONG>wchar_t</STRONG> within
- a <STRONG>cchar_t</STRONG>.
+ Others have suggested these alternatives: S U+00A7 (section mark),
+ <STRONG>O</STRONG> U+0398 (theta), <STRONG>O</STRONG> U+03A6 (phi), d U+03B4 (delta), U+2327 (x in a
+ rectangle), U+256C (forms double vertical and horizontal), and
+ U+2612 (ballot box with x).
- <STRONG>o</STRONG> HPUX curses equates some of the <EM>ACS</EM><STRONG>_</STRONG> symbols to the
- analogous <EM>WACS</EM><STRONG>_</STRONG> symbols as if the <EM>ACS</EM><STRONG>_</STRONG> symbols were
- wide characters. The misdefined symbols are the
- arrows and other symbols which are not used for line-
- drawing.
- X/Open Curses does not define symbols for thick- or dou-
- ble-lines. SVr4 curses implementations defined their
- line-drawing symbols in terms of intermediate symbols.
- This implementation extends those symbols, providing new
- definitions which are not in the SVr4 implementations.
-
-
-</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_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(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>putwc(3)</STRONG>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>, <STRONG>curs_out-</STRONG>
+ <STRONG><A HREF="curs_outopts.3x.html">opts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG>putwc(3)</STRONG>
- <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
+ <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-add_wch">add_wch</a></li>
+<li><a href="#h3-echo_wchar">echo_wchar</a></li>
+<li><a href="#h3-Line-Graphics">Line Graphics</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_add_wchstr.3x.html b/doc/html/man/curs_add_wchstr.3x.html
index d27ab8c772a4..8b4fe83d8b2f 100644
--- a/doc/html/man/curs_add_wchstr.3x.html
+++ b/doc/html/man/curs_add_wchstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2017,2019 Free 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,34 +26,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_add_wchstr.3x,v 1.10 2012/11/03 22:54:43 tom Exp @
+ * @Id: curs_add_wchstr.3x,v 1.12 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_add_wchstr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_add_wchstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_add_wchstr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>add_wchstr</STRONG>, <STRONG>add_wchnstr</STRONG>, <STRONG>wadd_wchstr</STRONG>, <STRONG>wadd_wchnstr</STRONG>,
- <STRONG>mvadd_wchstr</STRONG>, <STRONG>mvadd_wchnstr</STRONG>, <STRONG>mvwadd_wchstr</STRONG>, <STRONG>mvwadd_wchnstr</STRONG>
- - add an array of complex characters (and attributes) to a
- curses window
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>add_wchstr</STRONG>, <STRONG>add_wchnstr</STRONG>, <STRONG>wadd_wchstr</STRONG>, <STRONG>wadd_wchnstr</STRONG>, <STRONG>mvadd_wchstr</STRONG>,
+ <STRONG>mvadd_wchnstr</STRONG>, <STRONG>mvwadd_wchstr</STRONG>, <STRONG>mvwadd_wchnstr</STRONG> - add an array of complex
+ characters (and attributes) to a curses window
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>add_wchstr(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG>
@@ -67,76 +64,72 @@
<STRONG>int</STRONG> <STRONG>mvwadd_wchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These functions copy the (null-terminated) array of com-
- plex characters <EM>wchstr</EM> into the window image structure
- starting at the current cursor position. The four func-
- tions 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 array is copied, to the maximum number of characters
- that will fit on the line.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These functions copy the (null-terminated) array of complex characters
+ <EM>wchstr</EM> into the window image structure starting at the current cursor
+ position. The four functions 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 array is copied, to the maximum number of characters that will
+ fit on the line.
- The window cursor is <EM>not</EM> advanced. These functions work
- faster than <STRONG>waddnstr</STRONG>. On the other hand:
+ The window cursor is <EM>not</EM> advanced. These functions work faster than
+ <STRONG>waddnstr</STRONG>. On the other hand:
- <STRONG>o</STRONG> they do not perform checking (such as for the newline,
- backspace, or carriage return characters),
+ <STRONG>o</STRONG> they do not perform checking (such as for the newline, backspace,
+ or carriage return characters),
<STRONG>o</STRONG> they do not advance the current cursor position,
- <STRONG>o</STRONG> they do not expand other control characters to ^-es-
- capes, and
+ <STRONG>o</STRONG> they do not expand other control characters to ^-escapes, and
- <STRONG>o</STRONG> they truncate the string if it crosses the right mar-
- gin, rather than wrapping it around to the new line.
+ <STRONG>o</STRONG> they truncate the string if it crosses the right margin, rather
+ than wrapping it around to the new line.
- These functions end successfully on encountering a null
- <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>, or when they have filled the current line. If a
- complex character cannot completely fit at the end of the
- current line, the remaining columns are filled with the
- background character and rendition.
+ These functions end successfully on encountering a null <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>, or
+ when they have filled the current line. If a complex character cannot
+ completely fit at the end of the current line, the remaining columns
+ are filled with the background character and rendition.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
- on success.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success.
- X/Open does not define any error conditions. This imple-
- mentation returns an error if the window pointer is null.
+ X/Open does not define any error conditions. This implementation re-
+ turns an error if the window pointer is null.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</PRE>
-<H2>NOTES</H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
All functions except <STRONG>wadd_wchnstr</STRONG> may be macros.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These entry points are described in the XSI Curses stan-
- dard, Issue 4.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These entry points are described in the XSI Curses standard, Issue 4.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
- Comparable functions in the narrow-character (ncurses) li-
- brary are described in <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>.
+ Comparable functions in the narrow-character (ncurses) library are de-
+ scribed in <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>.
- <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
+ <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_addch.3x.html b/doc/html/man/curs_addch.3x.html
index b8e1fb01ed12..779d5ad51194 100644
--- a/doc/html/man/curs_addch.3x.html
+++ b/doc/html/man/curs_addch.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,33 +27,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_addch.3x,v 1.32 2011/01/15 14:15:10 tom Exp @
+ * @Id: curs_addch.3x,v 1.50 2019/11/30 20:07:00 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_addch 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_addch 3x</H1>
-<HR>
+<H1 class="no-header">curs_addch 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
+<STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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><a name="h2-NAME">NAME</a></H2><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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>addch(const</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
@@ -65,155 +62,252 @@
<STRONG>int</STRONG> <STRONG>wechochar(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</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>stdio(3)</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. The tab interval
- may be altered by setting the <STRONG>TABSIZE</STRONG> variable.
-
- 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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
- 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
- equivalents.
-
- <STRONG>Line</STRONG> <STRONG>Graphics</STRONG>
- The following variables may be used to add line drawing
- characters to the screen with routines of the <STRONG>addch</STRONG> fam-
- ily. The default character listed below is used if the
- <STRONG>acsc</STRONG> capability does not define a terminal-specific
- replacement for it. The names are taken from VT100 nomen-
- clature.
-
- <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 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><H3><a name="h3-Adding-characters">Adding characters</a></H3><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(3)</STRONG> in <STRONG>stdio(3)</STRONG>. If the
+ advance is at the right margin:
+ <STRONG>o</STRONG> The cursor automatically wraps to the beginning of the next 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.
+ <STRONG>o</STRONG> At the bottom of the current scrolling region, and if <STRONG>scrollok</STRONG> is
+ enabled, the scrolling region is scrolled up one line.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ <STRONG>o</STRONG> If <STRONG>scrollok</STRONG> is not enabled, writing a character at the lower right
+ margin succeeds. However, an error is returned because it is not
+ possible to wrap to a new line
+ If <EM>ch</EM> is a tab, newline, carriage return or backspace, the cursor is
+ moved appropriately within the window:
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>addch</STRONG>, <STRONG>mvaddch</STRONG>, <STRONG>mvwaddch</STRONG>, and <STRONG>echochar</STRONG> may be
- macros.
+ <STRONG>o</STRONG> Backspace moves the cursor one character left; at the left edge of
+ a window it does nothing.
+ <STRONG>o</STRONG> Carriage return moves the cursor to the window left margin on the
+ current line.
-</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.
+ <STRONG>o</STRONG> 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.
- X/Open Curses states that the <EM>ACS</EM><STRONG>_</STRONG> definitions are <STRONG>char</STRONG>
- constants. For the wide-character implementation (see
- <STRONG>curs_add_wch</STRONG>), there are analogous <EM>WACS</EM><STRONG>_</STRONG> definitions which
- are <STRONG>cchar_t</STRONG> constants.
+ <STRONG>o</STRONG> Tabs are considered to be at every eighth column. The tab interval
+ may be altered by setting the <STRONG>TABSIZE</STRONG> variable.
- 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
- list of their character descriptions has come to light.
- The ACS-prefixed names for them were invented for
- <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.
+ If <EM>ch</EM> is any other control character, it is drawn in <STRONG>^</STRONG><EM>X</EM> notation.
+ Calling <STRONG>winch</STRONG> after adding a control character does not return the
+ character itself, but instead returns the ^-representation of the con-
+ trol character.
- The <STRONG>TABSIZE</STRONG> variable is implemented in some versions of
- curses, but is not part of X/Open curses.
+ 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><A HREF="curs_inch.3x.html">inch(3x)</A></STRONG> and <STRONG>addch</STRONG>.) See the <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> page for val-
+ ues of predefined video attribute constants that can be usefully OR'ed
+ into characters.
- If <EM>ch</EM> is a carriage return, the cursor is moved to the
- beginning of the current row of the window. This is true
- of other implementations, but is not documented.
+</PRE><H3><a name="h3-Echoing-characters">Echoing characters</a></H3><PRE>
+ The <STRONG>echochar</STRONG> and <STRONG>wechochar</STRONG> routines are equivalent to a call to <STRONG>addch</STRONG>
+ followed by a call to <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></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 perfor-
+ mance gain may be seen by using these routines instead of their equiva-
+ lents.
+
+
+</PRE><H3><a name="h3-Line-Graphics">Line Graphics</a></H3><PRE>
+ The following variables may be used to add line drawing characters to
+ the screen with routines of the <STRONG>addch</STRONG> family. The default character
+ listed below is used if the <STRONG>acsc</STRONG> capability does not define a terminal-
+ specific replacement for it, or if the terminal and locale configura-
+ tion requires Unicode but the library is unable to use Unicode.
+
+ The names are taken from VT100 nomenclature.
+
+ <STRONG>ACS</STRONG> <STRONG>ACS</STRONG> <STRONG>acsc</STRONG> <STRONG>Glyph</STRONG>
+ <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>char</STRONG> <STRONG>Name</STRONG>
+ ---------------------------------------------------------
+ ACS_BLOCK # 0 solid square block
+ ACS_BOARD # h board of squares
+ ACS_BTEE + v bottom tee
+ ACS_BULLET o ~ bullet
+ ACS_CKBOARD : a checker board (stipple)
+ ACS_DARROW v . arrow pointing down
+ ACS_DEGREE ' f degree symbol
+ ACS_DIAMOND + ` diamond
+ ACS_GEQUAL &gt; &gt; greater-than-or-equal-to
+ ACS_HLINE - q horizontal line
+ ACS_LANTERN # i lantern symbol
+ ACS_LARROW &lt; , arrow pointing left
+ ACS_LEQUAL &lt; y less-than-or-equal-to
+ ACS_LLCORNER + m lower left-hand corner
+ ACS_LRCORNER + j lower right-hand corner
+ ACS_LTEE + t left tee
+ ACS_NEQUAL ! | not-equal
+ ACS_PI * { greek pi
+ ACS_PLMINUS # g plus/minus
+ ACS_PLUS + n plus
+ ACS_RARROW &gt; + arrow pointing right
+ ACS_RTEE + u right tee
+ ACS_S1 - o scan line 1
+ ACS_S3 - p scan line 3
+ ACS_S7 - r scan line 7
+ ACS_S9 _ s scan line 9
+ ACS_STERLING f } pound-sterling symbol
+ ACS_TTEE + w top tee
+ ACS_UARROW ^ - arrow pointing up
+ ACS_ULCORNER + l upper left-hand corner
+ ACS_URCORNER + k upper right-hand corner
+ ACS_VLINE | x vertical line
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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 suc-
+ cessful completion, unless otherwise noted in the preceding routine
+ descriptions.
+
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ Note that <STRONG>addch</STRONG>, <STRONG>mvaddch</STRONG>, <STRONG>mvwaddch</STRONG>, and <STRONG>echochar</STRONG> may be macros.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ All these functions are described in the XSI Curses standard, Issue 4.
+ The defaults specified for forms-drawing characters apply in the POSIX
+ locale.
+
+
+</PRE><H3><a name="h3-ACS-Symbols">ACS Symbols</a></H3><PRE>
+ X/Open Curses states that the <EM>ACS</EM><STRONG>_</STRONG> definitions are <STRONG>char</STRONG> constants. For
+ the wide-character implementation (see <STRONG>curs_add_wch</STRONG>), there are analo-
+ gous <EM>WACS</EM><STRONG>_</STRONG> definitions which are <STRONG>cchar_t</STRONG> constants. Some implementa-
+ tions are problematic:
+
+ <STRONG>o</STRONG> Some implementations define the ACS symbols to a constant (such as
+ Solaris), while others define those to entries in an array.
+
+ This implementation uses an array <STRONG>acs_map</STRONG>, as done in SVr4 curses.
+ NetBSD also uses an array, actually named <STRONG>_acs_char</STRONG>, with a <STRONG>#define</STRONG>
+ for compatibility.
+
+ <STRONG>o</STRONG> HPUX curses equates some of the <EM>ACS</EM><STRONG>_</STRONG> symbols to the analogous <EM>WACS</EM><STRONG>_</STRONG>
+ symbols as if the <EM>ACS</EM><STRONG>_</STRONG> symbols were wide characters. The misde-
+ fined symbols are the arrows and other symbols which are not used
+ for line-drawing.
+
+ <STRONG>o</STRONG> X/Open Curses (issues 2 through 7) has a typographical error for
+ the ACS_LANTERN symbol, equating its "VT100+ Character" to <STRONG>I</STRONG> (capi-
+ tal I), while the header files for SVr4 curses and the various
+ implementations use <STRONG>i</STRONG> (lowercase).
+
+ None of the terminal descriptions on Unix platforms use uppercase-
+ I, except for Solaris (i.e., <EM>screen</EM>'s terminal description, appar-
+ ently based on the X/Open documentation around 1995). On the other
+ hand, the terminal description <EM>gs6300</EM> (AT&amp;T PC6300 with EMOTS Ter-
+ minal Emulator) uses lowercase-i.
+
+ 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 list of their character descriptions has come to light.
+ The ACS-prefixed names for them were invented for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.
+
+ The <EM>displayed</EM> values for the <EM>ACS</EM><STRONG>_</STRONG> and <EM>WACS</EM><STRONG>_</STRONG> constants depend on
+
+ <STRONG>o</STRONG> the library configuration, i.e., <STRONG>ncurses</STRONG> versus <STRONG>ncursesw</STRONG>, where the
+ latter is capable of displaying Unicode while the former is not,
+ and
+
+ <STRONG>o</STRONG> whether the <EM>locale</EM> uses UTF-8 encoding.
+
+ In certain cases, the terminal is unable to display line-drawing char-
+ acters except by using UTF-8 (see the discussion of <STRONG>NCURSES_NO_UTF8_ACS</STRONG>
+ in <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>).
+
+
+</PRE><H3><a name="h3-Character-Set">Character Set</a></H3><PRE>
+ X/Open Curses assumes that the parameter passed to <STRONG>waddch</STRONG> contains a
+ single character. As discussed in <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, that character may
+ have been more than eight bits in an SVr3 or SVr4 implementation, but
+ in the X/Open Curses model, the details are not given. The important
+ distinction between SVr4 curses and X/Open Curses is that the non-char-
+ acter information (attributes and color) was separated from the charac-
+ ter information which is packed in a <STRONG>chtype</STRONG> to pass to <STRONG>waddch</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="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
- <STRONG>putc(3)</STRONG>.
+ In this implementation, <STRONG>chtype</STRONG> holds an eight-bit character. But
+ ncurses allows multibyte characters to be passed in a succession of
+ calls to <STRONG>waddch</STRONG>. The other implementations do not do this; a call to
+ <STRONG>waddch</STRONG> passes exactly one character which may be rendered as one or
+ more cells on the screen depending on whether it is printable.
+
+ Depending on the locale settings, ncurses will inspect the byte passed
+ in each call to <STRONG>waddch</STRONG>, and check if the latest call will continue a
+ multibyte sequence. When a character is <EM>complete</EM>, ncurses displays the
+ character and moves to the next position in the screen.
+
+ If the calling application interrupts the succession of bytes in a
+ multibyte character by moving the current location (e.g., using <STRONG>wmove</STRONG>),
+ ncurses discards the partially built character, starting over again.
+
+ For portability to other implementations, do not rely upon this behav-
+ ior:
+
+ <STRONG>o</STRONG> check if a character can be represented as a single byte in the
+ current locale before attempting call <STRONG>waddch</STRONG>, and
+
+ <STRONG>o</STRONG> call <STRONG>wadd_wch</STRONG> for characters which cannot be handled by <STRONG>waddch</STRONG>.
+
+
+</PRE><H3><a name="h3-TABSIZE">TABSIZE</a></H3><PRE>
+ The <STRONG>TABSIZE</STRONG> variable is implemented in SVr4 and other versions of
+ curses, but is not part of X/Open curses (see <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG> for
+ more details).
+
+ If <EM>ch</EM> is a carriage return, the cursor is moved to the beginning of the
+ current row of the window. This is true of other implementations, but
+ is not documented.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>curs_out-</STRONG>
+ <STRONG><A HREF="curs_outopts.3x.html">opts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>.
- Comparable functions in the wide-character (ncursesw)
- library are described in <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>.
+ Comparable functions in the wide-character (ncursesw) library are
+ described in <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>.
- <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
+ <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Adding-characters">Adding characters</a></li>
+<li><a href="#h3-Echoing-characters">Echoing characters</a></li>
+<li><a href="#h3-Line-Graphics">Line Graphics</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a>
+<ul>
+<li><a href="#h3-ACS-Symbols">ACS Symbols</a></li>
+<li><a href="#h3-Character-Set">Character Set</a></li>
+<li><a href="#h3-TABSIZE">TABSIZE</a></li>
+</ul>
+</li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_addchstr.3x.html b/doc/html/man/curs_addchstr.3x.html
index b4bbc4f84cc9..82dd5daf2a16 100644
--- a/doc/html/man/curs_addchstr.3x.html
+++ b/doc/html/man/curs_addchstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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,33 +26,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_addchstr.3x,v 1.16 2012/11/03 22:54:43 tom Exp @
+ * @Id: curs_addchstr.3x,v 1.18 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_addchstr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_addchstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_addchstr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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><a name="h2-NAME">NAME</a></H2><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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>addchstr(const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
@@ -66,69 +64,66 @@
<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 functions copy the (null-terminated) <EM>chstr</EM> array in-
- to the window image structure starting at the current cur-
- sor position. The four functions with <EM>n</EM> as the last argu-
- ment 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 array is copied, to the
- maximum number of characters that will fit on the line.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These functions copy the (null-terminated) <EM>chstr</EM> array into the window
+ image structure starting at the current cursor position. The four
+ functions 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 array is
+ copied, to the maximum number of characters that will fit on the line.
- The window cursor is <EM>not</EM> advanced. These functions work
- faster than <STRONG>waddnstr</STRONG>. On the other hand:
+ The window cursor is <EM>not</EM> advanced. These functions work faster than
+ <STRONG>waddnstr</STRONG>. On the other hand:
- <STRONG>o</STRONG> they do not perform checking (such as for the newline,
- backspace, or carriage return characters),
+ <STRONG>o</STRONG> they do not perform checking (such as for the newline, backspace,
+ or carriage return characters),
<STRONG>o</STRONG> they do not advance the current cursor position,
- <STRONG>o</STRONG> they do not expand other control characters to ^-es-
- capes, and
+ <STRONG>o</STRONG> they do not expand other control characters to ^-escapes, and
- <STRONG>o</STRONG> they truncate the string if it crosses the right mar-
- gin, rather than wrapping it around to the new line.
+ <STRONG>o</STRONG> they truncate the string if it crosses the right margin, rather
+ than wrapping it around to the new line.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
- on success.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success.
- X/Open does not define any error conditions. This imple-
- mentation returns an error if the window pointer is null.
+ X/Open does not define any error conditions. This implementation re-
+ turns an error if the window pointer is null.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</PRE>
-<H2>NOTES</H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
All functions except <STRONG>waddchnstr</STRONG> may be macros.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These entry points are described in the XSI Curses stan-
- dard, Issue 4.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These entry points are described in the XSI Curses standard, Issue 4.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
- Comparable functions in the wide-character (ncursesw) li-
- brary are described in <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>.
+ Comparable functions in the wide-character (ncursesw) library are de-
+ scribed in <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>.
- <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
+ <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_addstr.3x.html b/doc/html/man/curs_addstr.3x.html
index f5fd5ebfa2a5..1506a391513d 100644
--- a/doc/html/man/curs_addstr.3x.html
+++ b/doc/html/man/curs_addstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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,33 +26,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_addstr.3x,v 1.17 2012/11/03 22:57:31 tom Exp @
+ * @Id: curs_addstr.3x,v 1.19 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_addstr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_addstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_addstr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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><a name="h2-NAME">NAME</a></H2><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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>addstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
@@ -66,28 +64,25 @@
<STRONG>int</STRONG> <STRONG>mvwaddnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str,</EM> <EM>int</EM> <EM>n</EM><STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These functions write the (null-terminated) character
- string <EM>str</EM> on the given window. It is similar to calling
- <STRONG>waddch</STRONG> once for each character in the string.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These functions write the (null-terminated) 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 <EM>mv</EM> functions perform cursor movement once, before
- writing any characters. Thereafter, the cursor is ad-
- vanced as a side-effect of writing to the window.
+ The <EM>mv</EM> functions perform cursor movement once, before writing any char-
+ acters. Thereafter, the cursor is advanced as a side-effect of writing
+ to the window.
- The four functions with <EM>n</EM> as the last argument write at
- most <EM>n</EM> characters, or until a terminating null is reached.
- If <EM>n</EM> is -1, then the entire string will be added.
+ The four functions with <EM>n</EM> as the last argument write at most <EM>n</EM> charac-
+ ters, or until a terminating null is reached. If <EM>n</EM> is -1, then the en-
+ tire string will be added.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
- on success.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success.
- X/Open does not define any error conditions. This imple-
- mentation returns an error
+ X/Open does not define any error conditions. This implementation re-
+ turns an error
<STRONG>o</STRONG> if the window pointer is null or
@@ -95,34 +90,36 @@
<STRONG>o</STRONG> if the corresponding calls to <STRONG>waddch</STRONG> return an error.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</PRE>
-<H2>NOTES</H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
All of these functions except <STRONG>waddnstr</STRONG> may be macros.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions are described in the XSI Curses standard,
- Issue 4.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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_addstr.3x.html">curs_addstr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_addwstr.3x.html b/doc/html/man/curs_addwstr.3x.html
index fc9d830d60bb..2cd1aa2dd92e 100644
--- a/doc/html/man/curs_addwstr.3x.html
+++ b/doc/html/man/curs_addwstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2017,2019 Free 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,33 +26,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_addwstr.3x,v 1.11 2012/11/03 22:57:31 tom Exp @
+ * @Id: curs_addwstr.3x,v 1.13 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_addwstr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_addwstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_addwstr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>addwstr</STRONG>, <STRONG>addnwstr</STRONG>, <STRONG>waddwstr</STRONG>, <STRONG>waddnwstr</STRONG>, <STRONG>mvaddwstr</STRONG>,
- <STRONG>mvaddnwstr</STRONG>, <STRONG>mvwaddwstr</STRONG>, <STRONG>mvwaddnwstr</STRONG> - add a string of wide
- characters to a <STRONG>curses</STRONG> window and advance cursor
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>addwstr</STRONG>, <STRONG>addnwstr</STRONG>, <STRONG>waddwstr</STRONG>, <STRONG>waddnwstr</STRONG>, <STRONG>mvaddwstr</STRONG>, <STRONG>mvaddnwstr</STRONG>,
+ <STRONG>mvwaddwstr</STRONG>, <STRONG>mvwaddnwstr</STRONG> - add a string of wide characters to a <STRONG>curses</STRONG>
+ window and advance cursor
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>addwstr(const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
@@ -66,67 +64,63 @@
<STRONG>int</STRONG> <STRONG>mvwaddnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These functions write the characters of the (null-termi-
- nated) <STRONG>wchar_t</STRONG> character string <EM>wstr</EM> on the given window.
- It is similar to constructing a <STRONG>cchar_t</STRONG> for each wchar_t
- in the string, then calling <STRONG>wadd_wch</STRONG> for the resulting
- <STRONG>cchar_t</STRONG>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These functions write the characters of the (null-terminated) <STRONG>wchar_t</STRONG>
+ character string <EM>wstr</EM> on the given window. It is similar to construct-
+ ing a <STRONG>cchar_t</STRONG> for each wchar_t in the string, then calling <STRONG>wadd_wch</STRONG> for
+ the resulting <STRONG>cchar_t</STRONG>.
- The <EM>mv</EM> functions perform cursor movement once, before
- writing any characters. Thereafter, the cursor is ad-
- vanced as a side-effect of writing to the window.
+ The <EM>mv</EM> functions perform cursor movement once, before writing any char-
+ acters. Thereafter, the cursor is advanced as a side-effect of writing
+ to the window.
- The four functions with <EM>n</EM> as the last argument write at
- most <EM>n</EM> <STRONG>wchar_t</STRONG> characters, or until a terminating null is
- reached. If <EM>n</EM> is -1, then the entire string will be
- added.
+ The four functions with <EM>n</EM> as the last argument write at most <EM>n</EM> <STRONG>wchar_t</STRONG>
+ characters, or until a terminating null is reached. If <EM>n</EM> is -1, then
+ the entire string will be added.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
- on success.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success.
- X/Open does not define any error conditions. This imple-
- mentation returns an error
+ X/Open does not define any error conditions. This implementation re-
+ turns an error
<STRONG>o</STRONG> if the window pointer is null or
<STRONG>o</STRONG> if the string pointer is null or
- <STRONG>o</STRONG> if the corresponding calls to <STRONG>wadd_wch</STRONG> return an er-
- ror.
+ <STRONG>o</STRONG> if the corresponding calls to <STRONG>wadd_wch</STRONG> return an error.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</PRE>
-<H2>NOTES</H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
All of these functions except <STRONG>waddnwstr</STRONG> may be macros.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions are described in the XSI Curses standard,
- Issue 4.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
- <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
+ <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_attr.3x.html b/doc/html/man/curs_attr.3x.html
index f09a28de97c5..ec259a1cdf7f 100644
--- a/doc/html/man/curs_attr.3x.html
+++ b/doc/html/man/curs_attr.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,145 +27,224 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_attr.3x,v 1.39 2013/09/21 20:39:49 Sven.Joachim Exp @
+ * @Id: curs_attr.3x,v 1.65 2019/11/30 21:06:30 tom Exp @
+ * ---------------------------------------------------------------------------
+ * attr_get
+ * .br
+ * .br
+ * .br
+ * .br
+ * .br
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
+ * ---------------------------------------------------------------------------
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_attr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_attr 3x</H1>
-<HR>
+<H1 class="no-header">curs_attr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
+<STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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>attr_get</STRONG>, <STRONG>wattr_get</STRONG>, <STRONG>attr_off</STRONG>, <STRONG>wattr_off</STRONG>,
- <STRONG>attr_on</STRONG>, <STRONG>wattr_on</STRONG>, <STRONG>attr_set</STRONG>, <STRONG>wattr_set</STRONG>, <STRONG>chgat</STRONG>, <STRONG>wchgat</STRONG>,
- <STRONG>mvchgat</STRONG>, <STRONG>mvwchgat</STRONG>, <STRONG>PAIR_NUMBER</STRONG> - <STRONG>curses</STRONG> character and
- window attribute control routines
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>attr_get</STRONG>, <STRONG>wattr_get</STRONG>, <STRONG>attr_set</STRONG>, <STRONG>wattr_set</STRONG>, <STRONG>attr_off</STRONG>, <STRONG>wattr_off</STRONG>, <STRONG>attr_on</STRONG>,
+ <STRONG>wattr_on</STRONG>, <STRONG>attroff</STRONG>, <STRONG>wattroff</STRONG>, <STRONG>attron</STRONG>, <STRONG>wattron</STRONG>, <STRONG>attrset</STRONG>, <STRONG>wattrset</STRONG>, <STRONG>chgat</STRONG>,
+ <STRONG>wchgat</STRONG>, <STRONG>mvchgat</STRONG>, <STRONG>mvwchgat</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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</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>attr_get(attr_t</STRONG> <STRONG>*</STRONG><EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>wattr_get(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <STRONG>*</STRONG><EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>attr_set(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>wattr_set(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+
+ <STRONG>int</STRONG> <STRONG>attr_off(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>wattr_off(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>attr_on(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>wattr_on(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+
+ <STRONG>int</STRONG> <STRONG>attroff(int</STRONG> <EM>attrs);</EM>
+ <STRONG>int</STRONG> <STRONG>wattroff(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>attron(int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>wattron(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>attrset(int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>wattrset(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
+
+ <STRONG>int</STRONG> <STRONG>chgat(int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>wchgat(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG>
+ <STRONG>int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvchgat(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG>
+ <STRONG>int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvwchgat(WINDOW</STRONG> <STRONG>*</STRONG><EM>win,</EM> <EM>int</EM> <EM>y,</EM> <EM>int</EM> <EM>x</EM><STRONG>,</STRONG>
+ <STRONG>int</STRONG> <EM>n,</EM> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+
+ <STRONG>int</STRONG> <STRONG>color_set(short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>wcolor_set(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts);</EM>
+
<STRONG>int</STRONG> <STRONG>standend(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>wstandend(WINDOW</STRONG> <STRONG>*win);</STRONG>
+ <STRONG>int</STRONG> <STRONG>wstandend(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</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>short</STRONG> <STRONG>pair,</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>short</STRONG> <STRONG>pair,</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>
+ <STRONG>int</STRONG> <STRONG>wstandout(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</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>wadd-</STRONG>
- <STRONG>ch</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
- or off. The routine <STRONG>attron</STRONG> turns on the named attributes
- without affecting any others. The routine <STRONG>standout</STRONG> is the
- same as <STRONG>attron(A_STANDOUT)</STRONG>. The routine <STRONG>standend</STRONG> is the
- same as <STRONG>attrset(A_NORMAL)</STRONG> or <STRONG>attrset(0)</STRONG>, that is, it turns
- off all attributes.
-
- The <STRONG>attrset</STRONG> and related routines do not affect the at-
- tributes used when erasing portions of the window. See
- <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> for functions which modify the attributes
- used for erasing and clearing.
-
- 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 ar-
- gument 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> argu-
- ment 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>&lt;curses.h&gt;</STRONG>, can
- be passed to the routines <STRONG>attron</STRONG>, <STRONG>attroff</STRONG>, and <STRONG>attrset</STRONG>, or
- OR'd with the characters passed to <STRONG>addch</STRONG>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These routines manipulate the current attributes of the named window,
+ which then apply to all characters that are written into the window
+ with <STRONG>waddch</STRONG>, <STRONG>waddstr</STRONG> and <STRONG>wprintw</STRONG>. Attributes are a property of the
+ character, and move with the character through any scrolling and in-
+ sert/delete line/character operations. To the extent possible, they
+ are displayed as appropriate modifications to the graphic rendition of
+ characters put on the screen.
- <EM>Name</EM> <EM>Description</EM>
- ------------------------------------------------------------
- <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> Invisible or blank mode
- <STRONG>A_ALTCHARSET</STRONG> Alternate character set
- <STRONG>A_ITALIC</STRONG> Italics (non-X/Open extension)
- <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>
-
- These video attributes are supported by <STRONG>attr_on</STRONG> and relat-
- ed functions (which also support the attributes recognized
- by <STRONG>attron</STRONG>, etc.):
+ These routines do not affect the attributes used when erasing portions
+ of the window. See <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> for functions which modify the at-
+ tributes used for erasing and clearing.
+
+ Routines which do not have a <STRONG>WINDOW*</STRONG> parameter apply to <STRONG>stdscr</STRONG>. For
+ example, <STRONG>attr_set</STRONG> is the <STRONG>stdscr</STRONG> variant of <STRONG>wattr_set</STRONG>.
+
+
+</PRE><H3><a name="h3-Window-attributes">Window attributes</a></H3><PRE>
+ There are two sets of functions:
+
+ <STRONG>o</STRONG> functions for manipulating the window attributes and color: <STRONG>wat-</STRONG>
+ <STRONG>tr_set</STRONG> and <STRONG>wattr_get</STRONG>.
+
+ <STRONG>o</STRONG> functions for manipulating only the window attributes (not color):
+ <STRONG>wattr_on</STRONG> and <STRONG>wattr_off</STRONG>.
+
+ The <STRONG>wattr_set</STRONG> function sets the current attributes of the given window
+ to <EM>attrs</EM>, with color specified by <EM>pair</EM>.
+
+ Use <STRONG>wattr_get</STRONG> to retrieve attributes for the given window.
+
+ Use <STRONG>attr_on</STRONG> and <STRONG>wattr_on</STRONG> to turn on window attributes, i.e., values
+ OR'd together in <EM>attr</EM>, without affecting other attributes. Use <STRONG>at-</STRONG>
+ <STRONG>tr_off</STRONG> and <STRONG>wattr_off</STRONG> to turn off window attributes, again values OR'd
+ together in <EM>attr</EM>, without affecting other attributes.
+
+
+</PRE><H3><a name="h3-Legacy-window-attributes">Legacy window attributes</a></H3><PRE>
+ The X/Open window attribute routines which <EM>set</EM> or <EM>get</EM>, turn <EM>on</EM> or <EM>off</EM>
+ are extensions of older routines which assume that color pairs are OR'd
+ into the attribute parameter. These newer routines use similar names,
+ because X/Open simply added an underscore (<STRONG>_</STRONG>) for the newer names.
+
+ The <STRONG>int</STRONG> datatype used in the legacy routines is treated as if it is the
+ same size as <STRONG>chtype</STRONG> (used by <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>). It holds the common video at-
+ tributes (such as bold, reverse), as well as a few bits for color.
+ Those bits correspond to the <STRONG>A_COLOR</STRONG> symbol. The <STRONG>COLOR_PAIR</STRONG> macro pro-
+ vides a value which can be OR'd into the attribute parameter. For ex-
+ ample, as long as that value fits into the <STRONG>A_COLOR</STRONG> mask, then these
+ calls produce similar results:
+
+ attrset(A_BOLD | COLOR_PAIR(<EM>pair</EM>));
+ attr_set(A_BOLD, <EM>pair</EM>, NULL);
+
+ However, if the value does not fit, then the <STRONG>COLOR_PAIR</STRONG> macro uses only
+ the bits that fit. For example, because in ncurses <STRONG>A_COLOR</STRONG> has eight
+ (8) bits, then <STRONG>COLOR_PAIR(</STRONG><EM>259</EM><STRONG>)</STRONG> is 4 (i.e., 259 is 4 more than the limit
+ 255).
+
+ The <STRONG>PAIR_NUMBER</STRONG> macro extracts a pair number from an <STRONG>int</STRONG> (or <STRONG>chtype</STRONG>).
+ For example, the <EM>input</EM> and <EM>output</EM> values in these statements would be
+ the same:
+
+ int value = A_BOLD | COLOR_PAIR(<EM>input</EM>);
+ int <EM>output</EM> = PAIR_NUMBER(value);
+
+ The <STRONG>attrset</STRONG> routine is a legacy feature predating SVr4 curses but kept
+ in X/Open Curses for the same reason that SVr4 curses kept it: compati-
+ bility.
+
+ The remaining <STRONG>attr</STRONG>* functions operate exactly like the corresponding
+ <STRONG>attr_</STRONG>* functions, except that they take arguments of type <STRONG>int</STRONG> rather
+ than <STRONG>attr_t</STRONG>.
+
+ There is no corresponding <STRONG>attrget</STRONG> function as such in X/Open Curses,
+ although ncurses provides <STRONG>getattrs</STRONG> (see <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>).
+
+
+</PRE><H3><a name="h3-Change-character-rendition">Change character rendition</a></H3><PRE>
+ The routine <STRONG>chgat</STRONG> changes the attributes of a given number of charac-
+ ters starting at the current cursor location of <STRONG>stdscr</STRONG>. It does not
+ update the cursor and does not perform wrapping. A character count of
+ -1 or greater than the remaining window width means to change at-
+ tributes 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 cur-
+ sor move before acting.
+
+ In these functions, the color <EM>pair</EM> argument is a color-pair index (as
+ in the first argument of <STRONG>init_pair</STRONG>, see <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>).
+
+
+</PRE><H3><a name="h3-Change-window-color">Change window color</a></H3><PRE>
+ The routine <STRONG>color_set</STRONG> sets the current color of the given window to the
+ foreground/background combination described by the color <EM>pair</EM> parame-
+ ter.
+
+
+</PRE><H3><a name="h3-Standout">Standout</a></H3><PRE>
+ The routine <STRONG>standout</STRONG> is the same as <STRONG>attron(A_STANDOUT)</STRONG>. The routine
+ <STRONG>standend</STRONG> is the same as <STRONG>attrset(A_NORMAL)</STRONG> or <STRONG>attrset(0)</STRONG>, that is, it
+ turns off all attributes.
+
+ X/Open does not mark these "restricted", because
+
+ <STRONG>o</STRONG> they have well established legacy use, and
+
+ <STRONG>o</STRONG> there is no ambiguity about the way the attributes might be com-
+ bined with a color pair.
+
+
+</PRE><H2><a name="h2-VIDEO-ATTRIBUTES">VIDEO ATTRIBUTES</a></H2><PRE>
+ The following video attributes, defined in <STRONG>&lt;curses.h&gt;</STRONG>, can be passed to
+ the routines <STRONG>attron</STRONG>, <STRONG>attroff</STRONG>, and <STRONG>attrset</STRONG>, or OR'd with the characters
+ passed to <STRONG>addch</STRONG> (see <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>).
+
+ <EM>Name</EM> <EM>Description</EM>
+ -----------------------------------------------------------------
+ <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> Invisible or blank mode
+ <STRONG>A_ALTCHARSET</STRONG> Alternate character set
+ <STRONG>A_ITALIC</STRONG> Italics (non-X/Open extension)
+ <STRONG>A_CHARTEXT</STRONG> Bit-mask to extract a character
+ <STRONG>A_COLOR</STRONG> Bit-mask to extract a color (legacy routines)
+
+ These video attributes are supported by <STRONG>attr_on</STRONG> and related functions
+ (which also support the attributes recognized by <STRONG>attron</STRONG>, etc.):
<EM>Name</EM> <EM>Description</EM>
-----------------------------------------
@@ -177,61 +255,199 @@
<STRONG>WA_TOP</STRONG> Top highlight
<STRONG>WA_VERTICAL</STRONG> Vertical highlight
- For consistency
-
- The following macro is the reverse of <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG>:
+ The return values of many of these routines are not meaningful (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>.
- <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>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ These functions may be macros:
+ <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>.
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>attroff</STRONG>, <STRONG>wattroff</STRONG>, <STRONG>attron</STRONG>, <STRONG>wattron</STRONG>, <STRONG>attrset</STRONG>,
- <STRONG>wattrset</STRONG>, <STRONG>standend</STRONG> and <STRONG>standout</STRONG> may be macros.
-
- <STRONG>COLOR_PAIR</STRONG> values can only be OR'd with attributes if the
- pair number is less than 256. The alternate functions
- such as <STRONG>color_set</STRONG> can pass a color pair value directly.
- However, ncurses ABI 4 and 5 simply OR this value within
- the alternate functions. You must use ncurses ABI 6 to
+ Color pair values can only be OR'd with attributes if the pair number
+ is less than 256. The alternate functions such as <STRONG>color_set</STRONG> can pass a
+ color pair value directly. However, ncurses ABI 4 and 5 simply OR this
+ value within the alternate functions. You must use ncurses ABI 6 to
support more than 256 color pairs.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions are supported in the XSI Curses standard,
- 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 supported
- under SVr4.
-
- The XSI Curses standard states that whether the tradition-
- al functions <STRONG>attron</STRONG>/<STRONG>attroff</STRONG>/<STRONG>attrset</STRONG> can manipulate at-
- tributes 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>).
-
- This implementation provides the <STRONG>A_ITALIC</STRONG> attribute for
- terminals which have the <EM>enter</EM><STRONG>_</STRONG><EM>italics</EM><STRONG>_</STRONG><EM>mode</EM> (sitm) and <EM>ex-</EM>
- <EM>it</EM><STRONG>_</STRONG><EM>italics</EM><STRONG>_</STRONG><EM>mode</EM> (ritm) capabilities. Italics are not men-
- tioned in X/Open Curses. Unlike the other video at-
- tributes, <STRONG>I_ITALIC</STRONG> is unrelated to the <EM>set</EM><STRONG>_</STRONG><EM>attributes</EM> ca-
- pabilities. This implementation makes the assumption that
- <EM>exit</EM><STRONG>_</STRONG><EM>attribute</EM><STRONG>_</STRONG><EM>mode</EM> may also reset italics.
-
- 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>wat-</STRONG>
- <STRONG>tr_set</STRONG>. These are intended to work with a new series of
- highlight macros prefixed with <STRONG>WA_</STRONG>. The older macros have
- direct counterparts in the newer set of names:
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+ X/Open Curses is largely based on SVr4 curses, adding support for
+ "wide-characters" (not specific to Unicode). Some of the X/Open dif-
+ ferences from SVr4 curses address the way video attributes can be ap-
+ plied to wide-characters. But aside from that, <STRONG>attrset</STRONG> and <STRONG>attr_set</STRONG>
+ are similar. SVr4 curses provided the basic features for manipulating
+ video attributes. However, earlier versions of curses provided a part
+ of these features.
+
+ As seen in 2.8BSD, curses assumed 7-bit characters, using the eighth
+ bit of a byte to represent the <EM>standout</EM> feature (often implemented as
+ bold and/or reverse video). The BSD curses library provided functions
+ <STRONG>standout</STRONG> and <STRONG>standend</STRONG> which were carried along into X/Open Curses due
+ to their pervasive use in legacy applications.
+
+ Some terminals in the 1980s could support a variety of video at-
+ tributes, although the BSD curses library could do nothing with those.
+ System V (1983) provided an improved curses library. It defined the <STRONG>A_</STRONG>
+ symbols for use by applications to manipulate the other attributes.
+ There are few useful references for the chronology.
+
+ Goodheart's book <EM>UNIX</EM> <EM>Curses</EM> <EM>Explained</EM> (1991) describes SVr3 (1987),
+ commenting on several functions:
+
+ <STRONG>o</STRONG> the <STRONG>attron</STRONG>, <STRONG>attroff</STRONG>, <STRONG>attrset</STRONG> functions (and most of the functions
+ found in SVr4 but not in BSD curses) were introduced by System V,
+
+ <STRONG>o</STRONG> the alternate character set feature with <STRONG>A_ALTCHARSET</STRONG> was added in
+ SVr2 and improved in SVr3 (by adding <STRONG>acs_map[]</STRONG>),
+
+ <STRONG>o</STRONG> <STRONG>start_color</STRONG> and related color-functions were introduced by System
+ V.3.2,
+
+ <STRONG>o</STRONG> pads, soft-keys were added in SVr3, and
+
+ Goodheart did not mention the background character or the <STRONG>cchar_t</STRONG> type.
+ Those are respectively SVr4 and X/Open features. He did mention the <STRONG>A_</STRONG>
+ constants, but did not indicate their values. Those were not the same
+ in different systems, even for those marked as System V.
+
+ Different Unix systems used different sizes for the bit-fields in
+ <STRONG>chtype</STRONG> for <EM>characters</EM> and <EM>colors</EM>, and took into account the different
+ integer sizes (32-bit versus 64-bit).
+
+ This table showing the number of bits for <STRONG>A_COLOR</STRONG> and <STRONG>A_CHARTEXT</STRONG> was
+ gleaned from the curses header files for various operating systems and
+ architectures. The inferred architecture and notes reflect the format
+ and size of the defined constants as well as clues such as the alter-
+ nate character set implementation. A 32-bit library can be used on a
+ 64-bit system, but not necessarily the reverse.
+
+ <EM>Year</EM> <EM>System</EM> <EM>Arch</EM> <EM>Color</EM> <EM>Char</EM> <EM>Notes</EM>
+ ----------------------------------------------------------------
+ 1992 Solaris 5.2 32 6 17 SVr4 curses
+ 1992 HPUX 9 32 no 8 SVr2 curses
+ 1992 AIX 3.2 32 no 23 SVr2 curses
+ 1994 OSF/1 r3 32 no 23 SVr2 curses
+ 1995 HP-UX 10.00 32 6 16 SVr3 "curses_colr"
+ 1995 HP-UX 10.00 32 6 8 SVr4, X/Open curses
+ 1995 Solaris 5.4 32/64 7 16 X/Open curses
+ 1996 AIX 4.2 32 7 16 X/Open curses
+ 1996 OSF/1 r4 32 6 16 X/Open curses
+
+ 1997 HP-UX 11.00 32 6 8 X/Open curses
+ 2000 U/Win 32/64 7/31 16 uses <STRONG>chtype</STRONG>
+
+ Notes:
+
+ Regarding HP-UX,
+
+ <STRONG>o</STRONG> HP-UX 10.20 (1996) added support for 64-bit PA-RISC processors
+ in 1996.
+
+ <STRONG>o</STRONG> HP-UX 10.30 (1997) marked "curses_colr" obsolete. That version
+ of curses was dropped with HP-UX 11.30 in 2006.
+
+ Regarding OSF/1 (and Tru64),
+
+ <STRONG>o</STRONG> These used 64-bit hardware. Like ncurses, the OSF/1 curses in-
+ terface is not customized for 32-bit and 64-bit versions.
+
+ <STRONG>o</STRONG> Unlike other systems which evolved from AT&amp;T code, OSF/1 provid-
+ ed a new implementation for X/Open curses.
+
+ Regarding Solaris,
+
+ <STRONG>o</STRONG> The initial release of Solaris was in 1992.
+
+ <STRONG>o</STRONG> The <EM>xpg4</EM> (X/Open) curses was developed by MKS from 1990 to 1995.
+ Sun's copyright began in 1996.
+
+ <STRONG>o</STRONG> Sun updated the X/Open curses interface after 64-bit support was
+ introduced in 1997, but did not modify the SVr4 curses inter-
+ face.
+
+ Regarding U/Win,
+
+ <STRONG>o</STRONG> Development of the curses library began in 1991, stopped in
+ 2000.
+
+ <STRONG>o</STRONG> Color support was added in 1998.
+
+ <STRONG>o</STRONG> The library uses only <STRONG>chtype</STRONG> (no <STRONG>cchar_t</STRONG>).
+
+ Once X/Open curses was adopted in the mid-1990s, the constraint of a
+ 32-bit interface with many colors and wide-characters for <STRONG>chtype</STRONG> became
+ a moot point. The <STRONG>cchar_t</STRONG> structure (whose size and members are not
+ specified in X/Open Curses) could be extended as needed.
+
+ Other interfaces are rarely used now:
+
+ <STRONG>o</STRONG> BSD curses was improved slightly in 1993/1994 using Keith Bostic's
+ modification to make the library 8-bit clean for <STRONG>nvi</STRONG>. He moved
+ <EM>standout</EM> attribute to a structure member.
+
+ The resulting 4.4BSD curses was replaced by ncurses over the next
+ ten years.
+
+ <STRONG>o</STRONG> U/Win is rarely used now.
+
+
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+ This implementation provides the <STRONG>A_ITALIC</STRONG> attribute for terminals which
+ have the <STRONG>enter_italics_mode</STRONG> (<STRONG>sitm</STRONG>) and <STRONG>exit_italics_mode</STRONG> (<STRONG>ritm</STRONG>) capa-
+ bilities. Italics are not mentioned in X/Open Curses. Unlike the oth-
+ er video attributes, <STRONG>A_ITALIC</STRONG> is unrelated to the <STRONG>set_attributes</STRONG> capa-
+ bilities. This implementation makes the assumption that <STRONG>exit_at-</STRONG>
+ <STRONG>tribute_mode</STRONG> may also reset italics.
+
+ Each of the functions added by XSI Curses has a parameter <EM>opts</EM>, which
+ X/Open Curses still (after more than twenty years) documents as re-
+ served for future use, saying that it should be <STRONG>NULL</STRONG>. This implementa-
+ tion uses that parameter in ABI 6 for the functions which have a color-
+ pair parameter to support <EM>extended</EM> <EM>color</EM> <EM>pairs</EM>:
+
+ <STRONG>o</STRONG> For functions which modify the color, e.g., <STRONG>wattr_set</STRONG>, if <EM>opts</EM> is
+ set it is treated as a pointer to <STRONG>int</STRONG>, and used to set the color
+ pair instead of the <STRONG>short</STRONG> <EM>pair</EM> parameter.
+
+ <STRONG>o</STRONG> For functions which retrieve the color, e.g., <STRONG>wattr_get</STRONG>, if <EM>opts</EM> is
+ set it is treated as a pointer to <STRONG>int</STRONG>, and used to retrieve the
+ color pair as an <STRONG>int</STRONG> value, in addition retrieving it via the stan-
+ dard pointer to <STRONG>short</STRONG> parameter.
+
+ The remaining functions which have <EM>opts</EM>, but do not manipulate color,
+ e.g., <STRONG>wattr_on</STRONG> and <STRONG>wattr_off</STRONG> are not used by this implementation except
+ to check that they are <STRONG>NULL</STRONG>.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are supported in the XSI Curses standard, Issue 4. The
+ standard defined the dedicated type for highlights, <STRONG>attr_t</STRONG>, which was
+ not defined in SVr4 curses. The functions taking <STRONG>attr_t</STRONG> arguments were
+ not supported under SVr4.
+
+ Very old versions of this library did not force an update of the screen
+ when changing the attributes. Use <STRONG>touchwin</STRONG> to force the screen to
+ match the updated attributes.
+
+ The XSI Curses standard states that whether the traditional 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 cor-
+ rectly manipulate all other highlights (specifically, <STRONG>A_ALTCHARSET</STRONG>,
+ <STRONG>A_PROTECT</STRONG>, and <STRONG>A_INVIS</STRONG>).
+
+ XSI Curses added these 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>wat-</STRONG>
+ <STRONG>tr_get</STRONG>, <STRONG>wattr_set</STRONG>
+
+ The new functions are intended to work with a new series of highlight
+ macros prefixed with <STRONG>WA_</STRONG>. The older macros have direct counterparts in
+ the newer set of names:
<EM>Name</EM> <EM>Description</EM>
------------------------------------------------------------
@@ -244,52 +460,81 @@
<STRONG>WA_BOLD</STRONG> Extra bright or bold
<STRONG>WA_ALTCHARSET</STRONG> Alternate character set
- Older versions of this library did not force an update of
- the screen when changing the attributes. Use <STRONG>touchwin</STRONG> to
- force the screen to match the updated attributes.
+ XSI curses does not assign values to these symbols, nor does it state
+ whether or not they are related to the similarly-named A_NORMAL, etc.:
- 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.
+ <STRONG>o</STRONG> The XSI curses standard specifies that each pair of corresponding
+ <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). As of Au-
- gust 2013, no known terminal provides these highlights
- (i.e., via the <STRONG>sgr1</STRONG> capability).
+ <STRONG>o</STRONG> However, in some implementations, those symbols have unrelated val-
+ ues.
+ For example, the Solaris <EM>xpg4</EM> (X/Open) curses declares <STRONG>attr_t</STRONG> to be
+ an unsigned short integer (16-bits), while <STRONG>chtype</STRONG> is a unsigned in-
+ teger (32-bits). The <STRONG>WA_</STRONG> symbols in this case are different from
+ the <STRONG>A_</STRONG> symbols because they are used for a smaller datatype which
+ does not represent <STRONG>A_CHARTEXT</STRONG> or <STRONG>A_COLOR</STRONG>.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- All routines return the integer <STRONG>OK</STRONG> on success, or <STRONG>ERR</STRONG> on
- failure.
+ In this implementation (as in many others), the values happen to be
+ the same because it simplifies copying information between <STRONG>chtype</STRONG>
+ and <STRONG>cchar_t</STRONG> variables.
+
+ The XSI standard extended conformance level adds new highlights <STRONG>A_HORI-</STRONG>
+ <STRONG>ZONTAL</STRONG>, <STRONG>A_LEFT</STRONG>, <STRONG>A_LOW</STRONG>, <STRONG>A_RIGHT</STRONG>, <STRONG>A_TOP</STRONG>, <STRONG>A_VERTICAL</STRONG> (and corresponding
+ <STRONG>WA_</STRONG> macros for each). As of August 2013, no known terminal provides
+ these highlights (i.e., via the <STRONG>sgr1</STRONG> capability).
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All routines return the integer <STRONG>OK</STRONG> on success, or <STRONG>ERR</STRONG> on failure.
X/Open does not define any error conditions.
- This implementation returns an error if the window pointer
- is null. The <STRONG>wcolor_set</STRONG> function returns an error if the
- color pair parameter is outside the range 0..COL-
- OR_PAIRS-1. This implementation also provides <STRONG>getattrs</STRONG>
- for compatibility with older versions of curses.
+ This implementation
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ <STRONG>o</STRONG> returns an error if the window pointer is null.
+ <STRONG>o</STRONG> returns an error if the color pair parameter for <STRONG>wcolor_set</STRONG> is out-
+ side the range 0..COLOR_PAIRS-1.
-</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_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>, <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
+ <STRONG>o</STRONG> does not return an error if either of the parameters of <STRONG>wattr_get</STRONG>
+ used for retrieving attribute or color-pair values is <STRONG>NULL</STRONG>.
+
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>,
+ <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
- <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
+ <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Window-attributes">Window attributes</a></li>
+<li><a href="#h3-Legacy-window-attributes">Legacy window attributes</a></li>
+<li><a href="#h3-Change-character-rendition">Change character rendition</a></li>
+<li><a href="#h3-Change-window-color">Change window color</a></li>
+<li><a href="#h3-Standout">Standout</a></li>
+</ul>
+</li>
+<li><a href="#h2-VIDEO-ATTRIBUTES">VIDEO ATTRIBUTES</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_beep.3x.html b/doc/html/man/curs_beep.3x.html
index c6d14e899c5b..1162843c31c1 100644
--- a/doc/html/man/curs_beep.3x.html
+++ b/doc/html/man/curs_beep.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2018 Free 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,80 +26,77 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_beep.3x,v 1.12 2010/12/04 18:36:44 tom Exp @
+ * @Id: curs_beep.3x,v 1.13 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_beep 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_beep 3x</H1>
-<HR>
+<H1 class="no-header">curs_beep 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG> <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>
+<STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG> <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>beep</STRONG>, <STRONG>flash</STRONG> - <STRONG>curses</STRONG> bell and screen flash routines
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</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><a name="h2-DESCRIPTION">DESCRIPTION</a></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; oth-
+ erwise 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 audi-
+ ble 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><a name="h2-RETURN-VALUE">RETURN VALUE</a></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><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+ SVr4's beep and flash routines always returned <STRONG>OK</STRONG>, so it was not possi-
+ ble to tell when the beep or flash failed.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions are described in the XSI Curses standard,
- Issue 4. Like SVr4, it specifies that they always return
- <STRONG>OK</STRONG>.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4.
+ Like SVr4, it specifies that they always return <STRONG>OK</STRONG>.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
- <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>
+ <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_bkgd.3x.html b/doc/html/man/curs_bkgd.3x.html
index f6d30d5a59a7..4c772ccd1412 100644
--- a/doc/html/man/curs_bkgd.3x.html
+++ b/doc/html/man/curs_bkgd.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2003,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,105 +26,165 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_bkgd.3x,v 1.22 2010/12/04 18:36:44 tom Exp @
+ * @Id: curs_bkgd.3x,v 1.29 2019/07/13 21:01:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_bkgd 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_bkgd 3x</H1>
-<HR>
+<H1 class="no-header">curs_bkgd 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
+<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>bkgdset</STRONG>, <STRONG>wbkgdset</STRONG>, <STRONG>bkgd</STRONG>, <STRONG>wbkgd</STRONG>, <STRONG>getbkgd</STRONG> - <STRONG>curses</STRONG> window
- background manipulation routines
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>bkgdset</STRONG>, <STRONG>wbkgdset</STRONG>, <STRONG>bkgd</STRONG>, <STRONG>wbkgd</STRONG>, <STRONG>getbkgd</STRONG> - <STRONG>curses</STRONG> window background
+ manipulation routines
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
- <STRONG>void</STRONG> <STRONG>bkgdset(chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>void</STRONG> <STRONG>wbkgdset(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>int</STRONG> <STRONG>bkgd(chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>int</STRONG> <STRONG>wbkgd(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>chtype</STRONG> <STRONG>getbkgd(WINDOW</STRONG> <STRONG>*win);</STRONG>
+ <STRONG>void</STRONG> <STRONG>bkgdset(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+ <STRONG>void</STRONG> <STRONG>wbkgdset(WINDOW</STRONG> <STRONG>*</STRONG><EM>win,</EM> <EM>chtype</EM> <EM>ch</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>bkgd(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>wbkgd(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+ <STRONG>chtype</STRONG> <STRONG>getbkgd(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</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
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE><H3><a name="h3-bkgdset">bkgdset</a></H3><PRE>
+ The <STRONG>bkgdset</STRONG> and <STRONG>wbkgdset</STRONG> routines manipulate the background of the
+ named window. The window background is a <STRONG>chtype</STRONG> consisting of any com-
+ bination of attributes (i.e., rendition) and a character. The
+ attribute part of the background is combined (OR'ed) with all non-blank
+ characters 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.
+ 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.
+</PRE><H3><a name="h3-bkgd">bkgd</a></H3><PRE>
+ 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. According to X/Open Curses, it should do
+ this:
- Wherever the former background character appears,
- it is changed to the new background character.
+ <STRONG>o</STRONG> The rendition of every character on the screen is changed to the
+ new background rendition.
- The <STRONG>getbkgd</STRONG> function returns the given window's current
- background character/attribute pair.
+ <STRONG>o</STRONG> Wherever the former background character appears, it is changed to
+ the new background character.
+ Neither X/Open Curses nor the SVr4 manual pages give details about the
+ way the rendition of characters on the screen is updated when <STRONG>bkgd</STRONG> or
+ <STRONG>wbkgd</STRONG> is used to change the background character.
-</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.
+ This implementation, like SVr4 curses, does not store the background
+ and window attribute contributions to each cell separately. It updates
+ the rendition by comparing the character, non-color attributes and col-
+ ors contained in the background. For each cell in the window, whether
+ or not it is blank:
+ <STRONG>o</STRONG> The library first compares the <EM>character</EM>, and if it matches the
+ current character part of the background, it replaces that with the
+ new background character.
-</PRE>
-<H2>NOTES</H2><PRE>
+ <STRONG>o</STRONG> The library then checks if the cell uses color, i.e., its color
+ pair value is nonzero. If not, it simply replaces the attributes
+ and color pair in the cell with those from the new background char-
+ acter.
+
+ <STRONG>o</STRONG> If the cell uses color, and that matches the color in the current
+ background, the library removes attributes which may have come from
+ the current background and adds attributes from the new background.
+ It finishes by setting the cell to use the color from the new back-
+ ground.
+
+ <STRONG>o</STRONG> If the cell uses color, and that does not match the color in the
+ current background, the library updates only the non-color
+ attributes, first removing those which may have come from the cur-
+ rent background, and then adding attributes from the new back-
+ ground.
+
+ If the background's character value is zero, a space is assumed.
+
+ If the terminal does not support color, or if color has not been
+ started with <STRONG>start_color</STRONG>, the new background character's color
+ attribute will be ignored.
+
+
+</PRE><H3><a name="h3-getbkgd">getbkgd</a></H3><PRE>
+ The <STRONG>getbkgd</STRONG> function returns the given window's current background
+ character/attribute pair.
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4. It
+ specifies that <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> return <STRONG>ERR</STRONG> on failure, but gives no fail-
+ ure conditions.
+
+ The routines <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> return the integer <STRONG>OK</STRONG>, unless the library
+ has not been initialized.
+
+ In contrast, the SVr4.0 manual says <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> may return <STRONG>OK</STRONG> "or a
+ non-negative integer if <STRONG>immedok</STRONG> is set", which refers to the return
+ value from <STRONG>wrefresh</STRONG> (used to implement the immediate repainting). The
+ SVr4 curses <STRONG>wrefresh</STRONG> returns the number of characters written to the
+ screen during the refresh. This implementation does not do that.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
Note that <STRONG>bkgdset</STRONG> and <STRONG>bkgd</STRONG> may be macros.
+ X/Open Curses mentions that the character part of the background must
+ be a single-byte value. This implementation, like SVr4, checks to
+ ensure that, and will reuse the old background character if the check
+ fails.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions are described in the XSI Curses standard,
- Issue 4. It specifies that <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> return <STRONG>ERR</STRONG> on
- failure, but gives no failure conditions.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4
+ (X/Open Curses).
-</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_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG>curs_out-</STRONG>
- <STRONG><A HREF="curs_outopts.3x.html">opts(3x)</A></STRONG>
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
- <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
+ <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-bkgdset">bkgdset</a></li>
+<li><a href="#h3-bkgd">bkgd</a></li>
+<li><a href="#h3-getbkgd">getbkgd</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_bkgrnd.3x.html b/doc/html/man/curs_bkgrnd.3x.html
index 27ceb22dcbce..bf914925bcb4 100644
--- a/doc/html/man/curs_bkgrnd.3x.html
+++ b/doc/html/man/curs_bkgrnd.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2017,2018 Free 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,33 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_bkgrnd.3x,v 1.5 2012/11/03 23:03:59 tom Exp @
+ * @Id: curs_bkgrnd.3x,v 1.10 2018/12/09 00:50:50 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_bkgrnd 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_bkgrnd 3x</H1>
-<HR>
+<H1 class="no-header">curs_bkgrnd 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
+<STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>bkgrnd</STRONG>, <STRONG>wbkgrnd</STRONG>, <STRONG>bkgrndset</STRONG>, <STRONG>wbkgrndset</STRONG>, <STRONG>getbkgrnd</STRONG>, <STRONG>wget-</STRONG>
- <STRONG>bkgrnd</STRONG> - <STRONG>curses</STRONG> window complex background manipulation
- routines
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>bkgrnd</STRONG>, <STRONG>wbkgrnd</STRONG>, <STRONG>bkgrndset</STRONG>, <STRONG>wbkgrndset</STRONG>, <STRONG>getbkgrnd</STRONG>, <STRONG>wgetbkgrnd</STRONG> - <STRONG>curses</STRONG>
+ window complex background manipulation routines
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>bkgrnd(</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
@@ -64,65 +61,89 @@
<STRONG>int</STRONG> <STRONG>wgetbkgrnd(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>bkgrndset</STRONG> and <STRONG>wbkgrndset</STRONG> routines manipulate the back-
- ground of the named window. The window background is a
- <STRONG>cchar_t</STRONG> consisting of any combination of attributes (i.e.,
- rendition) and a complex character. The attribute part of
- the background is combined (OR'ed) with all non-blank
- characters 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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
- 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.
+</PRE><H3><a name="h3-bkgrndset">bkgrndset</a></H3><PRE>
+ The <STRONG>bkgrndset</STRONG> and <STRONG>wbkgrndset</STRONG> routines manipulate the background of the
+ named window. The window background is a <STRONG>cchar_t</STRONG> consisting of any
+ combination of attributes (i.e., rendition) and a complex character.
+ The attribute part of the background is combined (OR'ed) with all non-
+ blank characters 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 charac-
+ ter and moves with the character through any scrolling and
+ insert/delete line/character operations.
- The <STRONG>bkgrnd</STRONG> and <STRONG>wbkgrnd</STRONG> functions set the background prop-
- erty of the current or specified window and then apply
- this setting to every character position in that window:
+ 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 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.
+</PRE><H3><a name="h3-bkgrnd">bkgrnd</a></H3><PRE>
+ The <STRONG>bkgrnd</STRONG> and <STRONG>wbkgrnd</STRONG> functions set the background property of the
+ current or specified window and then apply this setting to every char-
+ acter position in that window:
- The <STRONG>getbkgrnd</STRONG> function returns the given window's current
- background character/attribute pair via the <STRONG>wch</STRONG> pointer.
+ <STRONG>o</STRONG> The rendition of every character on the screen is changed to the
+ new background rendition.
+ <STRONG>o</STRONG> Wherever the former background character appears, it is changed to
+ the new background character.
-</PRE>
-<H2>NOTES</H2><PRE>
+
+</PRE><H3><a name="h3-getbkgrnd">getbkgrnd</a></H3><PRE>
+ The <STRONG>getbkgrnd</STRONG> function returns the given window's current background
+ character/attribute pair via the <STRONG>wch</STRONG> pointer. If the given window
+ pointer is null, the character is not updated (but no error returned).
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
Note that <STRONG>bkgrnd</STRONG>, <STRONG>bkgrndset</STRONG>, and <STRONG>getbkgrnd</STRONG> may be macros.
+ X/Open Curses does not provide details on how the rendition is changed.
+ This implementation follows the approach used in SVr4 curses, which is
+ explained in the manual page for <STRONG>wbkgd</STRONG>.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The <STRONG>bkgrndset</STRONG> and <STRONG>wbkgrndset</STRONG> routines do not return a
- value.
- Upon successful completion, the other functions return <STRONG>OK</STRONG>.
- Otherwise, they return <STRONG>ERR</STRONG>. A null window pointer is
- treated as an error.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The <STRONG>bkgrndset</STRONG> and <STRONG>wbkgrndset</STRONG> routines do not return a value.
+ Upon successful completion, the other functions return <STRONG>OK</STRONG>. Otherwise,
+ they return <STRONG>ERR</STRONG>:
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+ <STRONG>o</STRONG> A null window pointer is treated as an error.
+
+ <STRONG>o</STRONG> A null character pointer is treated as an error.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4
+ (X/Open Curses).
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
- <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
+ <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-bkgrndset">bkgrndset</a></li>
+<li><a href="#h3-bkgrnd">bkgrnd</a></li>
+<li><a href="#h3-getbkgrnd">getbkgrnd</a></li>
+</ul>
+</li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_border.3x.html b/doc/html/man/curs_border.3x.html
index f2f4d5659c9c..2b259de43c04 100644
--- a/doc/html/man/curs_border.3x.html
+++ b/doc/html/man/curs_border.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,33 +26,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_border.3x,v 1.22 2010/12/04 18:36:44 tom Exp @
+ * @Id: curs_border.3x,v 1.24 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_border 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_border 3x</H1>
-<HR>
+<H1 class="no-header">curs_border 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
+<STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>border</STRONG>, <STRONG>wborder</STRONG>, <STRONG>box</STRONG>, <STRONG>hline</STRONG>, <STRONG>whline</STRONG>, <STRONG>vline</STRONG>, <STRONG>wvline</STRONG>,
- <STRONG>mvhline</STRONG>, <STRONG>mvwhline</STRONG>, <STRONG>mvvline</STRONG>, <STRONG>mvwvline</STRONG> - create <STRONG>curses</STRONG>
- borders, horizontal and vertical lines
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>border</STRONG>, <STRONG>wborder</STRONG>, <STRONG>box</STRONG>, <STRONG>hline</STRONG>, <STRONG>whline</STRONG>, <STRONG>vline</STRONG>, <STRONG>wvline</STRONG>, <STRONG>mvhline</STRONG>, <STRONG>mvwhline</STRONG>,
+ <STRONG>mvvline</STRONG>, <STRONG>mvwvline</STRONG> - create <STRONG>curses</STRONG> borders, horizontal and vertical
+ lines
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</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>
@@ -71,11 +69,10 @@
<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. Other than the window, each argument
- is a character with attributes:
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <STRONG>border</STRONG>, <STRONG>wborder</STRONG> and <STRONG>box</STRONG> routines draw a box around the edges of a
+ window. Other than the window, each argument is a character with at-
+ tributes:
<EM>ls</EM> - left side,
<EM>rs</EM> - right side,
@@ -86,8 +83,8 @@
<EM>bl</EM> - bottom left-hand corner, and
<EM>br</EM> - bottom right-hand corner.
- If any of these arguments is zero, then the corresponding
- default values (defined in <STRONG>curses.h</STRONG>) are used instead:
+ If any of these arguments is zero, then the corresponding default val-
+ ues (defined in <STRONG>curses.h</STRONG>) are used instead:
<STRONG>ACS_VLINE</STRONG>,
<STRONG>ACS_VLINE</STRONG>,
@@ -98,65 +95,62 @@
<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>.
+ <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>wbor-</STRONG>
+ <STRONG>der(</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>hline</STRONG> and <STRONG>whline</STRONG> functions draw a horizontal (left to right) line
+ using <EM>ch</EM> starting at the current cursor position in the window. The
+ current cursor position is not changed. The line is at most <EM>n</EM> charac-
+ ters 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.
+ The <STRONG>vline</STRONG> and <STRONG>wvline</STRONG> functions draw a vertical (top to bottom) line us-
+ ing <EM>ch</EM> starting at the current cursor position in the window. The cur-
+ rent 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.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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.
- X/Open does not define any error conditions. This imple-
- mentation returns an error if the window pointer is null.
+ X/Open does not define any error conditions. This implementation re-
+ turns an error if the window pointer is null.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</PRE>
-<H2>NOTES</H2><PRE>
- 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).
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The borders generated by these functions are <EM>inside</EM> borders (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. The standard specifies that they return <STRONG>ERR</STRONG> on
- failure, but specifies no error conditions.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></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>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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_border.3x.html">curs_border(3x)</A></STRONG>
+ <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_border_set.3x.html b/doc/html/man/curs_border_set.3x.html
index 1116c5327b1b..5b3dba90480f 100644
--- a/doc/html/man/curs_border_set.3x.html
+++ b/doc/html/man/curs_border_set.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2002-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2012,2019 Free 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,34 +26,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_border_set.3x,v 1.11 2012/11/03 23:03:59 tom Exp @
+ * @Id: curs_border_set.3x,v 1.12 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_border_set 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_border_set 3x</H1>
-<HR>
+<H1 class="no-header">curs_border_set 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
+<STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>border_set</STRONG>, <STRONG>wborder_set</STRONG>, <STRONG>box_set</STRONG>, <STRONG>hline_set</STRONG>, <STRONG>whline_set</STRONG>,
- <STRONG>mvhline_set</STRONG>, <STRONG>mvwhline_set</STRONG>, <STRONG>vline_set</STRONG>, <STRONG>wvline_set</STRONG>,
- <STRONG>mvvline_set</STRONG>, <STRONG>mvwvline_set</STRONG> - create <STRONG>curses</STRONG> borders or lines
- using complex characters and renditions
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>border_set</STRONG>, <STRONG>wborder_set</STRONG>, <STRONG>box_set</STRONG>, <STRONG>hline_set</STRONG>, <STRONG>whline_set</STRONG>, <STRONG>mvhline_set</STRONG>,
+ <STRONG>mvwhline_set</STRONG>, <STRONG>vline_set</STRONG>, <STRONG>wvline_set</STRONG>, <STRONG>mvvline_set</STRONG>, <STRONG>mvwvline_set</STRONG> - create
+ <STRONG>curses</STRONG> borders or lines using complex characters and renditions
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>border_set(</STRONG>
@@ -98,15 +95,13 @@
<STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>border_set</STRONG> and <STRONG>wborder_set</STRONG> functions draw a border
- around the edges of the current or specified window.
- These functions do not change the cursor position, and do
- not wrap.
-
- Other than the window, each argument is a complex charac-
- ter with attributes:
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <STRONG>border_set</STRONG> and <STRONG>wborder_set</STRONG> functions draw a border around the edges
+ of the current or specified window. These functions do not change the
+ cursor position, and do not wrap.
+
+ Other than the window, each argument is a complex character with at-
+ tributes:
<EM>ls</EM> - left side,
<EM>rs</EM> - right side,
<EM>ts</EM> - top side,
@@ -116,8 +111,8 @@
<EM>bl</EM> - bottom left-hand corner, and
<EM>br</EM> - bottom right-hand corner.
- If any of these arguments is zero, then the corresponding
- default values (defined in <STRONG>curses.h</STRONG>) are used instead:
+ If any of these arguments is zero, then the corresponding default val-
+ ues (defined in <STRONG>curses.h</STRONG>) are used instead:
<STRONG>WACS_VLINE</STRONG>,
<STRONG>WACS_VLINE</STRONG>,
<STRONG>WACS_HLINE</STRONG>,
@@ -127,58 +122,55 @@
<STRONG>WACS_LLCORNER</STRONG>, and
<STRONG>WACS_LRCORNER</STRONG>.
- <STRONG>box_set(</STRONG><EM>win</EM>, <EM>verch</EM><STRONG>,</STRONG> <EM>horch</EM><STRONG>);</STRONG> is a shorthand for the follow-
- ing call:
+ <STRONG>box_set(</STRONG><EM>win</EM>, <EM>verch</EM><STRONG>,</STRONG> <EM>horch</EM><STRONG>);</STRONG> is a shorthand for the following call:
<STRONG>wborder_set(</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>NULL,</STRONG> <STRONG>NULL,</STRONG> <STRONG>NULL,</STRONG> <STRONG>NULL);</STRONG>
- The <STRONG>*line_set</STRONG> functions use <EM>wch</EM> to draw a line starting at
- the current cursor position in the window. The line is at
- most <EM>n</EM> characters long or as many as fit into the window.
- The current cursor position is not changed.
+ The <STRONG>*line_set</STRONG> functions use <EM>wch</EM> to draw a line starting at the current
+ cursor position in the window. The line is at most <EM>n</EM> characters long
+ or as many as fit into the window. The current cursor position is not
+ changed.
- The <STRONG>hline_set</STRONG>, <STRONG>mvhline_set</STRONG>, <STRONG>mvwhline_set</STRONG>, and <STRONG>whline_set</STRONG>
- functions draw a line proceeding toward the last column of
- the same line.
+ The <STRONG>hline_set</STRONG>, <STRONG>mvhline_set</STRONG>, <STRONG>mvwhline_set</STRONG>, and <STRONG>whline_set</STRONG> functions draw
+ a line proceeding toward the last column of the same line.
- The <STRONG>vline_set</STRONG>, <STRONG>mvvline_set</STRONG>, <STRONG>mvwvline_set</STRONG>, and <STRONG>wvline_set</STRONG>
- functions draw a line proceeding toward the last line of
- the window.
+ The <STRONG>vline_set</STRONG>, <STRONG>mvvline_set</STRONG>, <STRONG>mvwvline_set</STRONG>, and <STRONG>wvline_set</STRONG> functions draw
+ a line proceeding toward the last line of the window.
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>border_set</STRONG>, <STRONG>hline_set</STRONG>, <STRONG>mvhline_set</STRONG>, <STRONG>mvvline_set</STRONG>,
- <STRONG>mvwhline_set</STRONG>, <STRONG>mvwvline_set</STRONG>, and <STRONG>vline_set</STRONG> may be macros.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ Note that <STRONG>border_set</STRONG>, <STRONG>hline_set</STRONG>, <STRONG>mvhline_set</STRONG>, <STRONG>mvvline_set</STRONG>, <STRONG>mvwh-</STRONG>
+ <STRONG>line_set</STRONG>, <STRONG>mvwvline_set</STRONG>, and <STRONG>vline_set</STRONG> may be macros.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- Upon successful completion, these functions return <STRONG>OK</STRONG>.
- Otherwise, they return <STRONG>ERR</STRONG>.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Upon successful completion, these functions return <STRONG>OK</STRONG>. Otherwise, they
+ return <STRONG>ERR</STRONG>.
- Functions using a window parameter return an error if it
- is null.
+ Functions using a window parameter return an error if it is null.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>, <STRONG>curs_out-</STRONG>
- <STRONG><A HREF="curs_outopts.3x.html">opts(3x)</A></STRONG>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
- <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
+ <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_clear.3x.html b/doc/html/man/curs_clear.3x.html
index 39f9ad929d9e..c760c1f03875 100644
--- a/doc/html/man/curs_clear.3x.html
+++ b/doc/html/man/curs_clear.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2018 Free 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,32 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_clear.3x,v 1.14 2010/12/04 18:36:44 tom Exp @
+ * @Id: curs_clear.3x,v 1.16 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_clear 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_clear 3x</H1>
-<HR>
+<H1 class="no-header">curs_clear 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
+<STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>erase</STRONG>, <STRONG>werase</STRONG>, <STRONG>clear</STRONG>, <STRONG>wclear</STRONG>, <STRONG>clrtobot</STRONG>, <STRONG>wclrtobot</STRONG>,
- <STRONG>clrtoeol</STRONG>, <STRONG>wclrtoeol</STRONG> - clear all or part of a <STRONG>curses</STRONG> window
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>erase</STRONG>, <STRONG>werase</STRONG>, <STRONG>clear</STRONG>, <STRONG>wclear</STRONG>, <STRONG>clrtobot</STRONG>, <STRONG>wclrtobot</STRONG>, <STRONG>clrtoeol</STRONG>, <STRONG>wclrtoeol</STRONG>
+ - clear all or part of a <STRONG>curses</STRONG> window
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#</STRONG> <STRONG>include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>erase(void);</STRONG>
@@ -65,82 +63,76 @@
<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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <STRONG>erase</STRONG> and <STRONG>werase</STRONG> routines copy blanks to every position in the win-
+ dow, 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>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>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.
+ 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.
+ Blanks created by erasure have the current background rendition (as set
+ by <STRONG>wbkgdset</STRONG>) merged into them.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- All routines return the integer <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on
- failure. The SVr4.0 manual says "or a non-negative inte-
- ger if <STRONG>immedok</STRONG> is set", but this appears to be an error.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All routines return the integer <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on failure. The
+ SVr4.0 manual says "or a non-negative integer if <STRONG>immedok</STRONG> is set", but
+ this appears to be an error.
- X/Open defines no error conditions. In this implementa-
- tion, functions using a window pointer parameter return an
- error if it is null.
+ X/Open defines no error conditions. In this implementation, functions
+ using a window pointer parameter return an error if it is null.
-</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><a name="h2-NOTES">NOTES</a></H2><PRE>
+ Note that <STRONG>erase</STRONG>, <STRONG>werase</STRONG>, <STRONG>clear</STRONG>, <STRONG>wclear</STRONG>, <STRONG>clrtobot</STRONG>, and <STRONG>clrtoeol</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><a name="h2-PORTABILITY">PORTABILITY</a></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
- <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.
+ Some historic curses implementations had, as an undocumented feature,
+ the ability to do the equivalent of <STRONG>clearok(...,</STRONG> <STRONG>1)</STRONG> by saying <STRONG>touch-</STRONG>
+ <STRONG>win(stdscr)</STRONG> or <STRONG>clear(stdscr)</STRONG>. This will not work under ncurses.
- This implementation, and others such as Solaris, sets the
- current position to 0,0 after erasing via <STRONG>werase()</STRONG> and
- <STRONG>wclear()</STRONG>. That fact is not documented in other implemen-
- tations, and may not be true of implementations which were
- not derived from SVr4 source.
+ This implementation, and others such as Solaris, sets the current posi-
+ tion to 0,0 after erasing via <STRONG>werase</STRONG> and <STRONG>wclear</STRONG>. That fact is not doc-
+ umented in other implementations, and may not be true of implementa-
+ tions which were not derived from SVr4 source.
- Not obvious from the description, most implementations
- clear the screen after <STRONG>wclear</STRONG> even for a subwindow or de-
- rived window. If you do not want to clear the screen dur-
- ing the next <STRONG>wrefresh</STRONG>, use <STRONG>werase</STRONG> instead.
+ Not obvious from the description, most implementations clear the screen
+ after <STRONG>wclear</STRONG> even for a subwindow or derived window. If you do not
+ want to clear the screen during the next <STRONG>wrefresh</STRONG>, use <STRONG>werase</STRONG> instead.
-</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>, <STRONG>curs_vari-</STRONG>
- <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
- <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
+ <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_color.3x.html b/doc/html/man/curs_color.3x.html
index 4ebe0da04f4d..ecf9dde89f57 100644
--- a/doc/html/man/curs_color.3x.html
+++ b/doc/html/man/curs_color.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,155 +26,126 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_color.3x,v 1.35 2010/12/20 00:50:58 tom Exp @
+ * @Id: curs_color.3x,v 1.61 2019/01/20 17:04:08 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_color 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_color 3x</H1>
-<HR>
+<H1 class="no-header">curs_color 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
+<STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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>COLOR_PAIR</STRONG>
- - <STRONG>curses</STRONG> color manipulation routines
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>start_color</STRONG>, <STRONG>has_colors</STRONG>, <STRONG>can_change_color</STRONG>, <STRONG>init_pair</STRONG>, <STRONG>init_color</STRONG>,
+ <STRONG>init_extended_pair</STRONG>, <STRONG>init_extended_color</STRONG>, <STRONG>color_content</STRONG>, <STRONG>pair_content</STRONG>,
+ <STRONG>extended_color_content</STRONG>, <STRONG>extended_pair_content</STRONG>, <STRONG>reset_color_pairs</STRONG>,
+ <STRONG>COLOR_PAIR</STRONG>, <STRONG>PAIR_NUMBER</STRONG> - <STRONG>curses</STRONG> color manipulation routines
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#</STRONG> <STRONG>include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</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>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>
+ /* extensions */
+ <STRONG>int</STRONG> <STRONG>init_extended_pair(int</STRONG> <STRONG>pair,</STRONG> <STRONG>int</STRONG> <STRONG>f,</STRONG> <STRONG>int</STRONG> <STRONG>b);</STRONG>
+ <STRONG>int</STRONG> <STRONG>init_extended_color(int</STRONG> <STRONG>color,</STRONG> <STRONG>int</STRONG> <STRONG>r,</STRONG> <STRONG>int</STRONG> <STRONG>g,</STRONG> <STRONG>int</STRONG> <STRONG>b);</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>
+ /* extensions */
+ <STRONG>int</STRONG> <STRONG>extended_color_content(int</STRONG> <STRONG>color,</STRONG> <STRONG>int</STRONG> <STRONG>*r,</STRONG> <STRONG>int</STRONG> <STRONG>*g,</STRONG> <STRONG>int</STRONG> <STRONG>*b);</STRONG>
+ <STRONG>int</STRONG> <STRONG>extended_pair_content(int</STRONG> <STRONG>pair,</STRONG> <STRONG>int</STRONG> <STRONG>*f,</STRONG> <STRONG>int</STRONG> <STRONG>*b);</STRONG>
+ /* extensions */
+ <STRONG>void</STRONG> <STRONG>reset_color_pairs(void);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- <STRONG>Overview</STRONG>
- <STRONG>curses</STRONG> support color attributes on terminals with that ca-
- pability. 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>&lt;curses.h&gt;</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>col-</STRONG>
- <STRONG>or_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.
-
- The <STRONG>init_pair</STRONG> 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:
-
- <STRONG>o</STRONG> The value of the first argument must be between <STRONG>1</STRONG> and
- <STRONG>COLOR_PAIRS-1</STRONG>, except that if default colors are used
- (see <STRONG>use_default_colors</STRONG>) the upper limit is adjusted
- to allow for extra pairs which use a default color in
- foreground and/or background.
-
- <STRONG>o</STRONG> The value of the second and third arguments must be
- between 0 and <STRONG>COLORS</STRONG>. Color pair 0 is assumed to be
- white on black, but is actually whatever the terminal
- implements before color is initialized. It cannot be
- modified by the application.
-
- If the color-pair was previously initialized, the screen
- is refreshed and all occurrences of that color-pair are
- changed to the new definition.
-
- As an extension, ncurses allows you to set color pair 0
- via the <STRONG>assume_default_colors</STRONG> routine, or to specify the
- use of default colors (color number <STRONG>-1</STRONG>) if you first in-
- voke the <STRONG>use_default_colors</STRONG> routine.
-
- 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 at-
- tribute.
-
- 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 be-
- tween 0 (no component) and 1000 (maximum amount of compo-
- nent).
-
- 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>
- In <STRONG>&lt;curses.h&gt;</STRONG> the following macros are defined. These are
- the default colors. <STRONG>curses</STRONG> also assumes that <STRONG>COLOR_BLACK</STRONG>
- is the default background color for all terminals.
+ <STRONG>int</STRONG> <STRONG>COLOR_PAIR(int</STRONG> <STRONG>n);</STRONG>
+ <STRONG>PAIR_NUMBER(</STRONG><EM>attrs</EM><STRONG>);</STRONG>
+
+
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE><H3><a name="h3-Overview">Overview</a></H3><PRE>
+ <STRONG>curses</STRONG> supports 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 characters are dis-
+ played). A programmer initializes a color-pair with the routine
+ <STRONG>init_pair</STRONG>. After it has been initialized, <STRONG>COLOR_PAIR</STRONG>(<EM>n</EM>) can be used to
+ convert the pair to a video attribute.
+
+ If a terminal is capable of redefining colors, the programmer can use
+ the routine <STRONG>init_color</STRONG> to change the definition of a color. The rou-
+ tines <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 program-
+ mer can change the colors. The routine <STRONG>color_content</STRONG> allows a program-
+ mer 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.
+
+
+</PRE><H3><a name="h3-Color-Rendering">Color Rendering</a></H3><PRE>
+ The <STRONG>curses</STRONG> library combines these inputs to produce the actual fore-
+ ground and background colors shown on the screen:
+
+ <STRONG>o</STRONG> per-character video attributes (e.g., via <STRONG>waddch</STRONG>),
+
+ <STRONG>o</STRONG> the window attribute (e.g., by <STRONG>wattrset</STRONG>), and
+
+ <STRONG>o</STRONG> the background character (e.g., <STRONG>wbkgdset</STRONG>).
+
+ Per-character and window attributes are usually set by a parameter con-
+ taining video attributes including a color pair value. Some functions
+ such as <STRONG>wattr_set</STRONG> use a separate parameter which is the color pair num-
+ ber.
+
+ The background character is a special case: it includes a character
+ value, just as if it were passed to <STRONG>waddch</STRONG>.
+
+ The <STRONG>curses</STRONG> library does the actual work of combining these color pairs
+ in an internal function called from <STRONG>waddch</STRONG>:
+
+ <STRONG>o</STRONG> If the parameter passed to <STRONG>waddch</STRONG> is <EM>blank</EM>, and it uses the special
+ color pair 0,
+
+ <STRONG>o</STRONG> <STRONG>curses</STRONG> next checks the window attribute.
+
+ <STRONG>o</STRONG> If the window attribute does not use color pair 0, <STRONG>curses</STRONG> uses
+ the color pair from the window attribute.
+
+ <STRONG>o</STRONG> Otherwise, <STRONG>curses</STRONG> uses the background character.
+
+ <STRONG>o</STRONG> If the parameter passed to <STRONG>waddch</STRONG> is <EM>not</EM> <EM>blank</EM>, or it does not use
+ the special color pair 0, <STRONG>curses</STRONG> prefers the color pair from the
+ parameter, if it is nonzero. Otherwise, it tries the window at-
+ tribute next, and finally the background character.
+
+ Some <STRONG>curses</STRONG> functions such as <STRONG>wprintw</STRONG> call <STRONG>waddch</STRONG>. Those do not com-
+ bine its parameter with a color pair. Consequently those calls use on-
+ ly the window attribute or the background character.
+
+
+</PRE><H2><a name="h2-CONSTANTS">CONSTANTS</a></H2><PRE>
+ In <STRONG>&lt;curses.h&gt;</STRONG> the following macros are defined. These are the standard
+ colors (ISO-6429). <STRONG>curses</STRONG> also assumes that <STRONG>COLOR_BLACK</STRONG> is the default
+ background color for all terminals.
<STRONG>COLOR_BLACK</STRONG>
<STRONG>COLOR_RED</STRONG>
@@ -186,100 +156,363 @@
<STRONG>COLOR_CYAN</STRONG>
<STRONG>COLOR_WHITE</STRONG>
+ Some terminals support more than the eight (8) "ANSI" colors. There
+ are no standard names for those additional colors.
-</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.
-
- X/Open defines no error conditions. This implementation
- will return <STRONG>ERR</STRONG> on attempts to use color values outside
- the range 0 to COLORS-1 (except for the default colors ex-
- tension), or use color pairs outside the range 0 to COL-
- OR_PAIRS-1. Color values used in <STRONG>init_color</STRONG> must be in
- the range 0 to 1000. An error is returned from all func-
- tions if the terminal has not been initialized. An error
- is returned from secondary functions such as <STRONG>init_pair</STRONG> if
- <STRONG>start_color</STRONG> was not called.
+
+</PRE><H2><a name="h2-VARIABLES">VARIABLES</a></H2><PRE>
+
+</PRE><H3><a name="h3-COLORS">COLORS</a></H3><PRE>
+ is initialized by <STRONG>start_color</STRONG> to the maximum number of colors the ter-
+ minal can support.
+
+
+</PRE><H3><a name="h3-COLOR_PAIRS">COLOR_PAIRS</a></H3><PRE>
+ is initialized by <STRONG>start_color</STRONG> to the maximum number of color pairs the
+ terminal can support.
+
+
+</PRE><H2><a name="h2-FUNCTIONS">FUNCTIONS</a></H2><PRE>
+
+</PRE><H3><a name="h3-start_color">start_color</a></H3><PRE>
+ 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 manipu-
+ lation routine is called. It is good practice to call this routine
+ right after <STRONG>initscr</STRONG>. <STRONG>start_color</STRONG> does this:
+
+ <STRONG>o</STRONG> It initializes two global variables, <STRONG>COLORS</STRONG> and <STRONG>COLOR_PAIRS</STRONG> (re-
+ spectively defining the maximum number of colors and color-pairs
+ the terminal can support).
+
+ <STRONG>o</STRONG> It initializes the special color pair <STRONG>0</STRONG> to the default foreground
+ and background colors. No other color pairs are initialized.
+
+ <STRONG>o</STRONG> It restores the colors on the terminal to the values they had when
+ the terminal was just turned on.
+
+ <STRONG>o</STRONG> If the terminal supports the <STRONG>initc</STRONG> (<STRONG>initialize_color</STRONG>) capability,
+ <STRONG>start_color</STRONG> initializes its internal table representing the red,
+ green, and blue components of the color palette.
+
+ The components depend on whether the terminal uses CGA (aka "ANSI")
+ or HLS (i.e., the <STRONG>hls</STRONG> (<STRONG>hue_lightness_saturation</STRONG>) capability is
+ set). The table is initialized first for eight basic colors
+ (black, red, green, yellow, blue, magenta, cyan, and white), using
+ weights that depend upon the CGA/HLS choice. For "ANSI" colors the
+ weights are <STRONG>680</STRONG> or <STRONG>0</STRONG> depending on whether the corresponding red,
+ green, or blue component is used or not. That permits using <STRONG>1000</STRONG>
+ to represent bold/bright colors. After the initial eight colors
+ (if the terminal supports more than eight colors) the components
+ are initialized using the same pattern, but with weights of <STRONG>1000</STRONG>.
+ SVr4 uses a similar scheme, but uses <STRONG>1000</STRONG> for the components of the
+ initial eight colors.
+
+ <STRONG>start_color</STRONG> does not attempt to set the terminal's color palette to
+ match its built-in table. An application may use <STRONG>init_color</STRONG> to al-
+ ter the internal table along with the terminal's color.
+
+ These limits apply to color values and color pairs. Values outside
+ these limits are not legal, and may result in a runtime error:
+
+ <STRONG>o</STRONG> <STRONG>COLORS</STRONG> corresponds to the terminal database's <STRONG>max_colors</STRONG> capabili-
+ ty, (see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>).
+
+ <STRONG>o</STRONG> color values are expected to be in the range <STRONG>0</STRONG> to <STRONG>COLORS-1</STRONG>, inclu-
+ sive (including <STRONG>0</STRONG> and <STRONG>COLORS-1</STRONG>).
+
+ <STRONG>o</STRONG> a special color value <STRONG>-1</STRONG> is used in certain extended functions to
+ denote the <EM>default</EM> <EM>color</EM> (see <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG>).
+
+ <STRONG>o</STRONG> <STRONG>COLOR_PAIRS</STRONG> corresponds to the terminal database's <STRONG>max_pairs</STRONG> capa-
+ bility, (see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>).
+
+ <STRONG>o</STRONG> legal color pair values are in the range <STRONG>1</STRONG> to <STRONG>COLOR_PAIRS-1</STRONG>, inclu-
+ sive.
+
+ <STRONG>o</STRONG> color pair <STRONG>0</STRONG> is special; it denotes "no color".
+
+ Color pair <STRONG>0</STRONG> is assumed to be white on black, but is actually what-
+ ever the terminal implements before color is initialized. It can-
+ not be modified by the application.
+
+
+</PRE><H3><a name="h3-has_colors">has_colors</a></H3><PRE>
+ 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 rou-
+ tine facilitates writing terminal-independent programs. For example, a
+ programmer can use it to decide whether to use color or some other
+ video attribute.
+
+
+</PRE><H3><a name="h3-can_change_color">can_change_color</a></H3><PRE>
+ 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-indepen-
+ dent programs.
+
+
+</PRE><H3><a name="h3-init_pair">init_pair</a></H3><PRE>
+ The <STRONG>init_pair</STRONG> routine changes the definition of a color-pair. It takes
+ three arguments: the number of the color-pair to be changed, the fore-
+ ground color number, and the background color number. For portable ap-
+ plications:
+
+ <STRONG>o</STRONG> The first argument must be a legal color pair value. If default
+ colors are used (see <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG>) the upper limit is ad-
+ justed to allow for extra pairs which use a default color in fore-
+ ground and/or background.
+
+ <STRONG>o</STRONG> The second and third arguments must be legal color values.
+
+ If the color-pair was previously initialized, the screen is refreshed
+ and all occurrences of that color-pair are changed to the new defini-
+ tion.
+
+ As an extension, ncurses allows you to set color pair <STRONG>0</STRONG> via the <STRONG>as-</STRONG>
+ <STRONG><A HREF="assume_default_colors.3x.html">sume_default_colors(3x)</A></STRONG> routine, or to specify the use of default col-
+ ors (color number <STRONG>-1</STRONG>) if you first invoke the <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG>
+ routine.
+
+
+</PRE><H3><a name="h3-init_extended_pair">init_extended_pair</a></H3><PRE>
+ Because <STRONG>init_pair</STRONG> uses signed <STRONG>short</STRONG>s for its parameters, that limits
+ color-pairs and color-values to 32767 on modern hardware. The exten-
+ sion <STRONG>init_extended_pair</STRONG> uses <STRONG>int</STRONG>s for the color-pair and color-value,
+ allowing a larger number of colors to be supported.
+
+
+</PRE><H3><a name="h3-init_color">init_color</a></H3><PRE>
+ 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).
+
+ <STRONG>o</STRONG> The first argument must be a legal color value; default colors are
+ not allowed here. (See the section <STRONG>Colors</STRONG> for the default color
+ index.)
+
+ <STRONG>o</STRONG> Each of the last three arguments must be a value in the range <STRONG>0</STRONG>
+ through <STRONG>1000</STRONG>.
+
+ When <STRONG>init_color</STRONG> is used, all occurrences of that color on the screen
+ immediately change to the new definition.
+
+
+</PRE><H3><a name="h3-init_extended_color">init_extended_color</a></H3><PRE>
+ Because <STRONG>init_color</STRONG> uses signed <STRONG>short</STRONG>s for its parameters, that limits
+ color-values and their red, green, and blue components to 32767 on mod-
+ ern hardware. The extension <STRONG>init_extended_color</STRONG> uses <STRONG>int</STRONG>s for the col-
+ or value and for setting the red, green, and blue components, allowing
+ a larger number of colors to be supported.
+
+
+</PRE><H3><a name="h3-color_content">color_content</a></H3><PRE>
+ 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 com-
+ ponents in the given color.
+
+ <STRONG>o</STRONG> The first argument must be a legal color value, i.e., <STRONG>0</STRONG> through
+ <STRONG>COLORS-1</STRONG>, inclusive.
+
+ <STRONG>o</STRONG> The values that are stored at the addresses pointed to by the last
+ three arguments are in the range <STRONG>0</STRONG> (no component) through <STRONG>1000</STRONG>
+ (maximum amount of component), inclusive.
+
+
+</PRE><H3><a name="h3-extended_color_content">extended_color_content</a></H3><PRE>
+ Because <STRONG>color_content</STRONG> uses signed <STRONG>short</STRONG>s for its parameters, that lim-
+ its color-values and their red, green, and blue components to 32767 on
+ modern hardware. The extension <STRONG>extended_color_content</STRONG> uses <STRONG>int</STRONG>s for
+ the color value and for returning the red, green, and blue components,
+ allowing a larger number of colors to be supported.
+
+
+</PRE><H3><a name="h3-pair_content">pair_content</a></H3><PRE>
+ 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.
+
+ <STRONG>o</STRONG> The first argument must be a legal color value, i.e., in the range
+ <STRONG>1</STRONG> through <STRONG>COLOR_PAIRS-1</STRONG>, inclusive.
+
+ <STRONG>o</STRONG> The values that are stored at the addresses pointed to by the sec-
+ ond and third arguments are in the range <STRONG>0</STRONG> through <STRONG>COLORS</STRONG>, inclu-
+ sive.
+
+
+</PRE><H3><a name="h3-extended_pair_content">extended_pair_content</a></H3><PRE>
+ Because <STRONG>pair_content</STRONG> uses signed <STRONG>short</STRONG>s for its parameters, that limits
+ color-pair and color-values to 32767 on modern hardware. The extension
+ <STRONG>extended_pair_content</STRONG> uses <STRONG>int</STRONG>s for the color pair and for returning
+ the foreground and background colors, allowing a larger number of col-
+ ors to be supported.
+
+
+</PRE><H3><a name="h3-reset_color_pairs">reset_color_pairs</a></H3><PRE>
+ The extension <STRONG>reset_color_pairs</STRONG> tells ncurses to discard all of the
+ color-pair information which was set with <STRONG>init_pair</STRONG>. It also touches
+ the current- and standard-screens, allowing an application to switch
+ color palettes rapidly.
+
+
+</PRE><H3><a name="h3-PAIR_NUMBER">PAIR_NUMBER</a></H3><PRE>
+ <STRONG>PAIR_NUMBER(</STRONG><EM>attrs</EM>) extracts the color value from its <EM>attrs</EM> parameter
+ and returns it as a color pair number.
+
+
+</PRE><H3><a name="h3-COLOR_PAIR">COLOR_PAIR</a></H3><PRE>
+ Its inverse <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG> converts a color pair number to an attribute.
+ Attributes can hold color pairs in the range 0 to 255. If you need a
+ color pair larger than that, you must use functions such as <STRONG>attr_set</STRONG>
+ (which pass the color pair as a separate parameter) rather than the
+ legacy functions such as <STRONG>attrset</STRONG>.
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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 com-
+ pletion.
+
+ X/Open defines no error conditions. SVr4 does document some error con-
+ ditions which apply in general:
+
+ <STRONG>o</STRONG> This implementation will return <STRONG>ERR</STRONG> on attempts to use color values
+ outside the range <STRONG>0</STRONG> to <STRONG>COLORS</STRONG>-1 (except for the default colors ex-
+ tension), or use color pairs outside the range <STRONG>0</STRONG> to <STRONG>COLOR_PAIRS-1</STRONG>.
+
+ Color values used in <STRONG>init_color</STRONG> must be in the range <STRONG>0</STRONG> to <STRONG>1000</STRONG>.
+
+ An error is returned from all functions if the terminal has not
+ been initialized.
+
+ An error is returned from secondary functions such as <STRONG>init_pair</STRONG> if
+ <STRONG>start_color</STRONG> was not called.
+
+ <STRONG>o</STRONG> SVr4 does much the same, except that it returns <STRONG>ERR</STRONG> from <STRONG>pair_con-</STRONG>
+ <STRONG>tent</STRONG> if the pair was not initialized using <STRONG>init_pairs</STRONG> and it re-
+ turns <STRONG>ERR</STRONG> from <STRONG>color_content</STRONG> if the terminal does not support
+ changing colors.
+
+ This implementation does not return <STRONG>ERR</STRONG> for either case.
+
+ Specific functions make additional checks:
<STRONG>init_color</STRONG>
- returns an error if the terminal does not support
- this feature, e.g., if the <EM>initialize</EM><STRONG>_</STRONG><EM>color</EM> capa-
- bility is absent from the terminal description.
+ returns an error if the terminal does not support this feature,
+ e.g., if the <STRONG>initialize_color</STRONG> capability is absent from the
+ terminal description.
<STRONG>start_color</STRONG>
- returns an error if the color table cannot be al-
- located.
+ returns an error if the color table cannot be allocated.
-</PRE>
-<H2>NOTES</H2><PRE>
- In the <EM>ncurses</EM> implementation, there is a separate color
- activation flag, color palette, color pairs table, and as-
- sociated 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:
-
- <STRONG>o</STRONG> COLOR_YELLOW is actually brown. To get yellow, use
- COLOR_YELLOW combined with the <STRONG>A_BOLD</STRONG> attribute.
-
- <STRONG>o</STRONG> 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
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ In the <STRONG>ncurses</STRONG> implementation, there is a separate color activation
+ flag, color palette, color pairs table, and associated <STRONG>COLORS</STRONG> and <STRONG>COL-</STRONG>
+ <STRONG>OR_PAIRS</STRONG> 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.
+
+ 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 older x86 machines (e.g., i386, i486) with
+ VGA-compatible graphics:
+
+ <STRONG>o</STRONG> COLOR_YELLOW is actually brown. To get yellow, use COLOR_YELLOW
+ combined with the <STRONG>A_BOLD</STRONG> attribute.
+
+ <STRONG>o</STRONG> 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).
<STRONG>o</STRONG> 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>.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ This implementation satisfies XSI Curses's minimum maximums for <STRONG>COLORS</STRONG>
+ and <STRONG>COLOR_PAIRS</STRONG>.
- The <STRONG>init_pair</STRONG> routine accepts negative values of fore-
- ground and background color to support the <STRONG>use_de-</STRONG>
- <STRONG>fault_colors</STRONG> extension, but only if that routine has been
- first invoked.
+ The <STRONG>init_pair</STRONG> routine accepts negative values of foreground and back-
+ ground color to support the <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG> extension, but only
+ if that routine has been first invoked.
- The assumption that <STRONG>COLOR_BLACK</STRONG> is the default background
- color for all terminals can be modified using the <STRONG>as-</STRONG>
- <STRONG>sume_default_colors</STRONG> extension.
+ The assumption that <STRONG>COLOR_BLACK</STRONG> is the default background color for all
+ terminals can be modified using the <STRONG><A HREF="default_colors.3x.html">assume_default_colors(3x)</A></STRONG> exten-
+ sion.
- This implementation checks the pointers, e.g., for the
- values returned by <STRONG>color_content</STRONG> and <STRONG>pair_content</STRONG>, and
- will treat those as optional parameters when null.
+ This implementation checks the pointers, e.g., for the values returned
+ by <STRONG>color_content</STRONG> and <STRONG>pair_content</STRONG>, and will treat those as optional pa-
+ rameters when null.
+ X/Open Curses does not specify a limit for the number of colors and
+ color pairs which a terminal can support. However, in its use of <STRONG>short</STRONG>
+ for the parameters, it carries over SVr4's implementation detail for
+ the compiled terminfo database, which uses signed 16-bit numbers. This
+ implementation provides extended versions of those functions which use
+ <STRONG>short</STRONG> parameters, allowing applications to use larger color- and pair-
+ numbers.
-</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>curs_vari-</STRONG>
- <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>, <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
+ The <STRONG>reset_color_pairs</STRONG> function is an extension of ncurses.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>de-</STRONG>
+ <STRONG><A HREF="default_colors.3x.html">fault_colors(3x)</A></STRONG>
- <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
+ <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Overview">Overview</a></li>
+<li><a href="#h3-Color-Rendering">Color Rendering</a></li>
+</ul>
+</li>
+<li><a href="#h2-CONSTANTS">CONSTANTS</a></li>
+<li><a href="#h2-VARIABLES">VARIABLES</a>
+<ul>
+<li><a href="#h3-COLORS">COLORS</a></li>
+<li><a href="#h3-COLOR_PAIRS">COLOR_PAIRS</a></li>
+</ul>
+</li>
+<li><a href="#h2-FUNCTIONS">FUNCTIONS</a>
+<ul>
+<li><a href="#h3-start_color">start_color</a></li>
+<li><a href="#h3-has_colors">has_colors</a></li>
+<li><a href="#h3-can_change_color">can_change_color</a></li>
+<li><a href="#h3-init_pair">init_pair</a></li>
+<li><a href="#h3-init_extended_pair">init_extended_pair</a></li>
+<li><a href="#h3-init_color">init_color</a></li>
+<li><a href="#h3-init_extended_color">init_extended_color</a></li>
+<li><a href="#h3-color_content">color_content</a></li>
+<li><a href="#h3-extended_color_content">extended_color_content</a></li>
+<li><a href="#h3-pair_content">pair_content</a></li>
+<li><a href="#h3-extended_pair_content">extended_pair_content</a></li>
+<li><a href="#h3-reset_color_pairs">reset_color_pairs</a></li>
+<li><a href="#h3-PAIR_NUMBER">PAIR_NUMBER</a></li>
+<li><a href="#h3-COLOR_PAIR">COLOR_PAIR</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_delch.3x.html b/doc/html/man/curs_delch.3x.html
index 40d43c4e8006..019ce2766f7f 100644
--- a/doc/html/man/curs_delch.3x.html
+++ b/doc/html/man/curs_delch.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,32 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_delch.3x,v 1.11 2010/12/04 18:36:44 tom Exp @
+ * @Id: curs_delch.3x,v 1.13 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_delch 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_delch 3x</H1>
-<HR>
+<H1 class="no-header">curs_delch 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG> <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>
+<STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG> <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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><a name="h2-NAME">NAME</a></H2><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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>delch(void);</STRONG>
@@ -61,52 +59,52 @@
<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-
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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 speci-
+ fied). (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><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG> (SVr4 speci-
+ fies only "an integer value other than <STRONG>ERR</STRONG>") upon successful comple-
+ tion.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</PRE>
-<H2>NOTES</H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></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><a name="h2-PORTABILITY">PORTABILITY</a></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>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
- <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>
+ <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_deleteln.3x.html b/doc/html/man/curs_deleteln.3x.html
index 40a1a2be3d11..2c2d6277389f 100644
--- a/doc/html/man/curs_deleteln.3x.html
+++ b/doc/html/man/curs_deleteln.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2018 Free 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,32 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_deleteln.3x,v 1.13 2010/12/04 18:36:44 tom Exp @
+ * @Id: curs_deleteln.3x,v 1.14 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_deleteln 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_deleteln 3x</H1>
-<HR>
+<H1 class="no-header">curs_deleteln 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
+<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>deleteln</STRONG>, <STRONG>wdeleteln</STRONG>, <STRONG>insdelln</STRONG>, <STRONG>winsdelln</STRONG>, <STRONG>insertln</STRONG>, <STRONG>winsertln</STRONG> - delete
+ and insert lines in a <STRONG>curses</STRONG> window
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>deleteln(void);</STRONG>
@@ -63,64 +61,63 @@
<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
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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>winsertln</STRONG> routines insert a blank line
- above the current line and the bottom line is lost.
+ The <STRONG>insertln</STRONG> and <STRONG>winsertln</STRONG> routines insert a blank line above the cur-
+ rent 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><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG> (SVr4 speci-
+ fies only "an integer value other than <STRONG>ERR</STRONG>") upon successful comple-
+ tion.
- X/Open defines no error conditions. In this implementa-
- tion, if the window parameter is null, an error is
- returned.
+ X/Open defines no error conditions. In this implementation, if the
+ window parameter is null, an error is returned.
-</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><a name="h2-PORTABILITY">PORTABILITY</a></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>
+</PRE><H2><a name="h2-NOTES">NOTES</a></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 will not
- use hardware line delete/insert unless <STRONG>idlok(...,</STRONG> <STRONG>TRUE)</STRONG>
- has been set on the current window.
+ These routines do not require a hardware line delete or insert feature
+ in the terminal. In fact, they will not use hardware line
+ delete/insert unless <STRONG>idlok(...,</STRONG> <STRONG>TRUE)</STRONG> has been set on the current win-
+ dow.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
- <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
+ <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_extend.3x.html b/doc/html/man/curs_extend.3x.html
index 40418ebbe4ea..751a881d35d5 100644
--- a/doc/html/man/curs_extend.3x.html
+++ b/doc/html/man/curs_extend.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1999-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2016,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,84 +27,98 @@
* authorization. *
****************************************************************************
* Author: Thomas E. Dickey 1999-on
- * @Id: curs_extend.3x,v 1.19 2010/12/04 18:36:44 tom Exp @
+ * @Id: curs_extend.3x,v 1.22 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_extend 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_extend 3x</H1>
-<HR>
+<H1 class="no-header">curs_extend 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG> <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>
+<STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG> <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>curses_version</STRONG>, <STRONG>use_extended_names</STRONG> - miscellaneous curses
- extensions
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>curses_version</STRONG>, <STRONG>use_extended_names</STRONG> - miscellaneous curses extensions
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>curses_version(void);</STRONG>
<STRONG>int</STRONG> <STRONG>use_extended_names(bool</STRONG> <STRONG>enable);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These functions are extensions to the curses library which
- do not fit easily into other categories.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These functions are extensions to the curses library which do not fit
+ easily into other categories.
- Use <EM>curses</EM><STRONG>_</STRONG><EM>version()</EM> to get the version number, including
- patch level of the library, e.g., <STRONG>5.0.19991023</STRONG>
- The <EM>use</EM><STRONG>_</STRONG><EM>extended</EM><STRONG>_</STRONG><EM>names()</EM> 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 decision is made by using the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>
- to compile extended terminal definitions. However you can
- disable this feature to ensure compatibility with other
- implementations of curses.
+</PRE><H3><a name="h3-curses_version">curses_version</a></H3><PRE>
+ Use <STRONG>curses_version</STRONG> to get the version number, including patch level of
+ the library, e.g., <STRONG>5.0.19991023</STRONG>
-</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><H3><a name="h3-use_extended_names">use_extended_names</a></H3><PRE>
+ The <STRONG>use_extended_names</STRONG> function controls whether the calling applica-
+ tion is able to use user-defined or nonstandard names which may be com-
+ piled into the terminfo description, i.e., via the terminfo or termcap
+ interfaces. Normally these names are available for use, since the
+ essential decision is made by using the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG> to compile
+ extended terminal definitions. However you can disable this feature to
+ ensure compatibility with other implementations of curses.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>, <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>,
- <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>, <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG>key-</STRONG>
- <STRONG><A HREF="keybound.3x.html">bound(3x)</A></STRONG>, <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>, <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>, <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ <STRONG>curses_version</STRONG> returns a pointer to static memory; you should not free
+ this in your application.
+ <STRONG>use_extended_names</STRONG> returns the previous state, allowing you to save
+ this and restore it.
-</PRE>
-<H2>AUTHOR</H2><PRE>
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></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 conditioned using NCURSES_VERSION.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>, <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>,
+ <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>, <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>, <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>,
+ <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>, <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>.
+
+
+</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
Thomas Dickey.
- <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>
+ <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-curses_version">curses_version</a></li>
+<li><a href="#h3-use_extended_names">use_extended_names</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_get_wch.3x.html b/doc/html/man/curs_get_wch.3x.html
index ca8d2e8c02e2..ab833d422cad 100644
--- a/doc/html/man/curs_get_wch.3x.html
+++ b/doc/html/man/curs_get_wch.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2018,2019 Free 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,33 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_get_wch.3x,v 1.8 2012/11/03 23:03:59 tom Exp @
+ * @Id: curs_get_wch.3x,v 1.12 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_get_wch 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_get_wch 3x</H1>
-<HR>
+<H1 class="no-header">curs_get_wch 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG> <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
+<STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG> <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, <STRONG>mvwget_wch</STRONG>, <STRONG>unget_wch</STRONG> - get
- (or push back) a wide character from curses terminal key-
- board
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, <STRONG>mvwget_wch</STRONG>, <STRONG>unget_wch</STRONG> - get (or push
+ back) a wide character from curses terminal keyboard
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>get_wch(wint_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
@@ -63,93 +60,97 @@
<STRONG>int</STRONG> <STRONG>unget_wch(const</STRONG> <STRONG>wchar_t</STRONG> <EM>wch</EM><STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, and <STRONG>mvwget_wch</STRONG> functions
- read a character from the terminal associated with the
- current or specified 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 newline (nocbreak mode). In half-delay
- mode, the program waits until the user types a character
- or the specified timeout interval has elapsed.
-
- Unless <STRONG>noecho</STRONG> has been set, these routines echo the char-
- acter into the designated window.
-
- If the window is not a pad and has been moved or modified
- since the last call to <STRONG>wrefresh</STRONG>, <STRONG>wrefresh</STRONG> will be called
- before another character is read.
-
- If <STRONG>keypad</STRONG> is enabled, these functions respond to the
- pressing of a function key by setting the object pointed
- to by <EM>wch</EM> to the corresponding <STRONG>KEY_</STRONG> value defined in
- <STRONG>&lt;curses.h&gt;</STRONG> and returning <STRONG>KEY_CODE_YES</STRONG>. If a character
- (such as escape) that could be the beginning of a function
- key is received, curses sets a timer. If the remainder of
- the sequence does arrive within the designated time,
- curses passes through the character; otherwise, curses
- returns the function key value. For this reason, many
- terminals experience a delay between the time a user
- presses the escape key and the time the escape is returned
- to the program.
-
- The <STRONG>unget_wch</STRONG> function pushes the wide character <EM>wch</EM> back
- onto the head of the input queue, so the wide character is
- returned by the next call to <STRONG>get_wch</STRONG>. The pushback of one
- character is guaranteed. If the program calls <STRONG>unget_wch</STRONG>
- too many times without an intervening call to <STRONG>get_wch</STRONG>, the
- operation may fail.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, and <STRONG>mvwget_wch</STRONG> functions read a char-
+ acter from the terminal associated with the current or specified win-
+ dow. In no-delay mode, if no input is waiting, the value <STRONG>ERR</STRONG> is re-
+ turned. 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 newline (nocbreak
+ mode). In half-delay mode, the program waits until the user types a
+ character or the specified timeout interval has elapsed.
+ Unless <STRONG>noecho</STRONG> has been set, these routines echo the character into the
+ designated window.
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;curses.h&gt;</STRONG> automatically includes the
- header file <STRONG>&lt;stdio.h&gt;</STRONG>.
+ If the window is not a pad and has been moved or modified since the
+ last call to <STRONG>wrefresh</STRONG>, <STRONG>wrefresh</STRONG> will be called before another character
+ is read.
+
+ If <STRONG>keypad</STRONG> is enabled, these functions respond to the pressing of a
+ function key by setting the object pointed to by <EM>wch</EM> to the keycode as-
+ signed to the function key, and returning <STRONG>KEY_CODE_YES</STRONG>. If a character
+ (such as escape) that could be the beginning of a function key is re-
+ ceived, curses sets a timer. If the remainder of the sequence does ar-
+ rive within the designated time, curses passes through the character;
+ otherwise, curses returns the function key value. For this reason,
+ many terminals experience a delay between the time a user presses the
+ escape key and the time the escape is returned to the program.
+
+ The keycodes returned by these functions are the same as those returned
+ by <STRONG>wgetch</STRONG>:
- Applications should not define the escape key by itself as
- a single-character function.
+ <STRONG>o</STRONG> The predefined function keys are listed in <STRONG>&lt;curses.h&gt;</STRONG> as macros
+ with values outside the range of 8-bit characters. Their names be-
+ gin with <STRONG>KEY_</STRONG>.
- When using <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, or <STRONG>mvwget_wch</STRONG>,
- applications should not use <STRONG>nocbreak</STRONG> mode and <STRONG>echo</STRONG> mode at
- the same time. Depending on the state of the tty driver
- when each character is typed, the program may produce
- undesirable results.
+ <STRONG>o</STRONG> Other (user-defined) function keys which may be defined using <STRONG>de-</STRONG>
+ <STRONG><A HREF="define_key.3x.html">fine_key(3x)</A></STRONG> have no names, but also are expected to have values
+ outside the range of 8-bit characters.
+
+ The <STRONG>unget_wch</STRONG> function pushes the wide character <EM>wch</EM> back onto the head
+ of the input queue, so the wide character is returned by the next call
+ to <STRONG>get_wch</STRONG>. The pushback of one character is guaranteed. If the pro-
+ gram calls <STRONG>unget_wch</STRONG> too many times without an intervening call to
+ <STRONG>get_wch</STRONG>, the operation may fail.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;curses.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;stdio.h&gt;</STRONG>.
+
+ Applications should not define the escape key by itself as a single-
+ character function.
+
+ When using <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, or <STRONG>mvwget_wch</STRONG>, applications
+ should not use <STRONG>nocbreak</STRONG> mode and <STRONG>echo</STRONG> mode at the same time. Depending
+ on the state of the tty driver when each character is typed, the pro-
+ gram may produce undesirable results.
All functions except <STRONG>wget_wch</STRONG> and <STRONG>unget_wch</STRONG> may be macros.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- When <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, and <STRONG>mvwget_wch</STRONG> func-
- tions successfully report the pressing of a function key,
- they return <STRONG>KEY_CODE_YES</STRONG>. When they successfully report a
- wide character, they return <STRONG>OK</STRONG>. Otherwise, they return
- <STRONG>ERR</STRONG>.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ When <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, and <STRONG>mvwget_wch</STRONG> functions successful-
+ ly report the pressing of a function key, they return <STRONG>KEY_CODE_YES</STRONG>.
+ When they successfully report a wide character, they return <STRONG>OK</STRONG>. Other-
+ wise, they return <STRONG>ERR</STRONG>.
- Upon successful completion, <STRONG>unget_wch</STRONG> returns <STRONG>OK</STRONG>. Other-
- wise, the function returns <STRONG>ERR</STRONG>.
+ Upon successful completion, <STRONG>unget_wch</STRONG> returns <STRONG>OK</STRONG>. Otherwise, the func-
+ tion returns <STRONG>ERR</STRONG>.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</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_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>,
- <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(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>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(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="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
+ <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_get_wstr.3x.html b/doc/html/man/curs_get_wstr.3x.html
index d3d709cd9d21..07081e981818 100644
--- a/doc/html/man/curs_get_wstr.3x.html
+++ b/doc/html/man/curs_get_wstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2018,2019 Free 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,33 +26,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_get_wstr.3x,v 1.9 2012/11/03 23:03:59 tom Exp @
+ * @Id: curs_get_wstr.3x,v 1.19 2019/11/30 20:59:22 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_get_wstr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_get_wstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_get_wstr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>get_wstr</STRONG>, <STRONG>getn_wstr</STRONG>, <STRONG>wget_wstr</STRONG>, <STRONG>wgetn_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>,
- <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwget_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG> - get an array of
- wide characters from a curses terminal keyboard
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>get_wstr</STRONG>, <STRONG>getn_wstr</STRONG>, <STRONG>wget_wstr</STRONG>, <STRONG>wgetn_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>,
+ <STRONG>mvwget_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG> - get an array of wide characters from a
+ curses terminal keyboard
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>get_wstr(wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
@@ -66,101 +64,120 @@
<STRONG>int</STRONG> <STRONG>mvwgetn_wstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The effect of <STRONG>get_wstr</STRONG> is as though a series of calls to
- <STRONG>get_wch</STRONG> were made, until a newline, other end-of-line, or
- end-of-file condition is processed. An end-of-file condi-
- tion is represented by <STRONG>WEOF</STRONG>, as defined in <STRONG>&lt;wchar.h&gt;</STRONG>. The
- newline and end-of-line conditions are represented by the
- <STRONG>\n</STRONG> <STRONG>wchar_t</STRONG> value. In all instances, the end of the string
- is terminated by a null <STRONG>wchar_t</STRONG>. The routine places re-
- sulting values in the area pointed to by <EM>wstr</EM>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The effect of <STRONG>get_wstr</STRONG> is as though a series of calls to <STRONG><A HREF="curs_get_wch.3x.html">get_wch(3x)</A></STRONG>
+ were made, until a newline, other end-of-line, or end-of-file condition
+ is processed. An end-of-file condition is represented by <STRONG>WEOF</STRONG>, as de-
+ fined in <STRONG>&lt;wchar.h&gt;</STRONG>. The newline and end-of-line conditions are repre-
+ sented by the <STRONG>\n</STRONG> <STRONG>wchar_t</STRONG> value. In all instances, the end of the
+ string is terminated by a null <STRONG>wchar_t</STRONG>. The routine places resulting
+ values in the area pointed to by <EM>wstr</EM>.
- 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.
+ 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).
+ Characters input are echoed only if <STRONG>echo</STRONG> is currently on. In that
+ case, backspace is echoed as deletion of the previous character (typi-
+ cally a left motion).
- The effect of <STRONG>wget_wstr</STRONG> is as though a series of calls to
- <STRONG>wget_wch</STRONG> were made.
+ The effect of <STRONG>wget_wstr</STRONG> is as though a series of calls to <STRONG>wget_wch</STRONG> were
+ made.
- The effect of <STRONG>mvget_wstr</STRONG> is as though a call to <STRONG>move</STRONG> and
- then a series of calls to <STRONG>get_wch</STRONG> were made.
+ The effect of <STRONG>mvget_wstr</STRONG> is as though a call to <STRONG>move</STRONG> and then a series
+ of calls to <STRONG>get_wch</STRONG> were made.
- The effect of <STRONG>mvwget_wstr</STRONG> is as though a call to <STRONG>wmove</STRONG> and
- then a series of calls to <STRONG>wget_wch</STRONG> were made.
+ The effect of <STRONG>mvwget_wstr</STRONG> is as though a call to <STRONG>wmove</STRONG> and then a se-
+ ries of calls to <STRONG>wget_wch</STRONG> were made.
- The <STRONG>getn_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG>, and <STRONG>wgetn_wstr</STRONG>
- functions are identical to the <STRONG>get_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>,
- <STRONG>mvwget_wstr</STRONG>, and <STRONG>wget_wstr</STRONG> functions, respectively, except
- that the <STRONG>*n_*</STRONG> versions read at most <EM>n</EM> characters, letting
- the application prevent overflow of the input buffer.
+ The <STRONG>getn_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG>, and <STRONG>wgetn_wstr</STRONG> functions are
+ identical to the <STRONG>get_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvwget_wstr</STRONG>, and <STRONG>wget_wstr</STRONG> func-
+ tions, respectively, except that the <STRONG>*n_*</STRONG> versions read at most <EM>n</EM> char-
+ acters, letting the application prevent overflow of the input buffer.
-</PRE>
-<H2>NOTES</H2><PRE>
- Using <STRONG>get_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvwget_wstr</STRONG>, or <STRONG>wget_wstr</STRONG> to
- read a line that overflows the array pointed to by <STRONG>wstr</STRONG>
- causes undefined results. The use of <STRONG>getn_wstr</STRONG>,
- <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG>, or <STRONG>wgetn_wstr</STRONG>, respectively, is
- recommended.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ Using <STRONG>get_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvwget_wstr</STRONG>, or <STRONG>wget_wstr</STRONG> to read a line
+ that overflows the array pointed to by <STRONG>wstr</STRONG> causes undefined results.
+ The use of <STRONG>getn_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG>, or <STRONG>wgetn_wstr</STRONG>, respec-
+ tively, is recommended.
- These functions cannot return <STRONG>KEY_</STRONG> values because there is
- no way to distinguish a <STRONG>KEY_</STRONG> value from a valid <STRONG>wchar_t</STRONG>
- value.
+ These functions cannot return <STRONG>KEY_</STRONG> values because there is no way to
+ distinguish a <STRONG>KEY_</STRONG> value from a valid <STRONG>wchar_t</STRONG> value.
All of these routines except <STRONG>wgetn_wstr</STRONG> may be macros.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- All of these functions return <STRONG>OK</STRONG> upon successful comple-
- tion. Otherwise, they return <STRONG>ERR</STRONG>.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All of these functions return <STRONG>OK</STRONG> upon successful completion. Other-
+ wise, they return <STRONG>ERR</STRONG>.
- Functions using a window parameter return an error if it
- is null.
+ Functions using a window parameter return an error if it is null.
<STRONG>wgetn_wstr</STRONG>
- returns an error if the associated call to
- <STRONG>wget_wch</STRONG> failed.
+ returns an error if the associated call to <STRONG>wget_wch</STRONG> failed.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions are described in The Single Unix Specifi-
- cation, Version 2. No error conditions are defined. This
- implementation returns ERR if the window pointer is null,
- or if the lower-level <STRONG>wget_wch</STRONG> call returns an ERR. In
- the latter case, an ERR return without other data is
- treated as an end-of-file condition, and the returned ar-
- ray contains a <STRONG>WEOF</STRONG> followed by a null <STRONG>wchar_t</STRONG>.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in The Single Unix Specification, Version
+ 2. No error conditions are defined. This implementation returns <STRONG>ERR</STRONG>
+ if the window pointer is null, or if the lower-level <STRONG>wget_wch</STRONG> call re-
+ turns an <STRONG>ERR</STRONG>. In the latter case, an <STRONG>ERR</STRONG> return without other data is
+ treated as an end-of-file condition, and the returned array contains a
+ <STRONG>WEOF</STRONG> followed by a null <STRONG>wchar_t</STRONG>.
- X/Open curses documents these functions to pass an array
- of <STRONG>wchar_t</STRONG>, but all of the vendors implement this using
- <STRONG>wint_t</STRONG>.
+ X/Open curses documented these functions to pass an array of <STRONG>wchar_t</STRONG> in
+ 1997, but that was an error because of this part of the description:
+ The effect of <EM>get</EM><STRONG>_</STRONG><EM>wstr()</EM> is as though a series of calls to
+ <EM>get</EM><STRONG>_</STRONG><EM>wch()</EM> were made, until a newline character, end-of-line
+ character, or end-of-file character is processed.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+ The latter function <EM>get</EM><STRONG>_</STRONG><EM>wch()</EM> can return a negative value, while
+ <STRONG>wchar_t</STRONG> is a unsigned type. All of the vendors implement this using
+ <STRONG>wint_t</STRONG>, following the standard.
+
+ X/Open Curses, Issue 7 (2009) is unclear regarding whether the termi-
+ nating <EM>null</EM> <STRONG>wchar_t</STRONG> value is counted in the length parameter <EM>n</EM>. X/Open
+ Curses, Issue 7 revised the corresponding description of <STRONG>wgetnstr</STRONG> to
+ address this issue. The unrevised description of <STRONG>wget_nwstr</STRONG> can be in-
+ terpreted either way. This implementation counts the terminator in the
+ length.
+
+ X/Open Curses does not specify what happens if the length <EM>n</EM> is nega-
+ tive.
+
+ <STRONG>o</STRONG> For analogy with <STRONG>wgetnstr</STRONG>, ncurses 6.2 uses a limit (based on
+ <STRONG>LINE_MAX</STRONG>).
+
+ <STRONG>o</STRONG> Some other implementations (such as Solaris xcurses) do the same,
+ while others (PDCurses) do not allow this.
+
+ <STRONG>o</STRONG> NetBSD 7 curses imitates ncurses 6.1 in this regard, treating a <STRONG>-1</STRONG>
+ as an indefinite number of characters.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
Functions: <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>.
- <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
+ <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_getcchar.3x.html b/doc/html/man/curs_getcchar.3x.html
index 6bd64861116b..504f54a733bb 100644
--- a/doc/html/man/curs_getcchar.3x.html
+++ b/doc/html/man/curs_getcchar.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2001-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2017,2019 Free 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,33 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_getcchar.3x,v 1.16 2012/11/03 23:03:59 tom Exp @
+ * @Id: curs_getcchar.3x,v 1.23 2019/11/30 22:22:32 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_getcchar 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_getcchar 3x</H1>
-<HR>
+<H1 class="no-header">curs_getcchar 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG> <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
+<STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG> <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>getcchar</STRONG>, <STRONG>setcchar</STRONG> - Get a wide character string and ren-
- dition from a <STRONG>cchar_t</STRONG> or set a <STRONG>cchar_t</STRONG> from a wide-charac-
- ter string
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>getcchar</STRONG>, <STRONG>setcchar</STRONG> - Get a wide character string and rendition from a
+ <STRONG>cchar_t</STRONG> or set a <STRONG>cchar_t</STRONG> from a wide-character string
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>getcchar(</STRONG>
@@ -68,91 +65,154 @@
<STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG>
<STRONG>const</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG>
<STRONG>short</STRONG> <EM>color</EM><STRONG>_</STRONG><EM>pair</EM><STRONG>,</STRONG>
- <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM> <STRONG>);</STRONG>
+ <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM> <STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>getcchar</STRONG> function gets a wide-character string and
- rendition from a <STRONG>cchar_t</STRONG> argument. When <EM>wch</EM> is not a null
- pointer, the <STRONG>getcchar</STRONG> function does the following:
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE><H3><a name="h3-getcchar">getcchar</a></H3><PRE>
+ The <STRONG>getcchar</STRONG> function gets a wide-character string and rendition from a
+ <STRONG>cchar_t</STRONG> argument. When <EM>wch</EM> is not a null pointer, the <STRONG>getcchar</STRONG> func-
+ tion does the following:
<STRONG>o</STRONG> Extracts information from a <STRONG>cchar_t</STRONG> value <EM>wcval</EM>
- <STRONG>o</STRONG> Stores the character attributes in the location
- pointed to by <EM>attrs</EM>
+ <STRONG>o</STRONG> Stores the character attributes in the location pointed to by <EM>attrs</EM>
- <STRONG>o</STRONG> Stores the color-pair in the location pointed to by
- <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
+ <STRONG>o</STRONG> Stores the color-pair in the location pointed to by <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
- <STRONG>o</STRONG> Stores the wide-character string, characters refer-
- enced by <EM>wcval</EM>, into the array pointed to by <EM>wch</EM>.
+ <STRONG>o</STRONG> Stores the wide-character string, characters referenced by <EM>wcval</EM>,
+ into the array pointed to by <EM>wch</EM>.
- When <EM>wch</EM> is a null pointer, the <STRONG>getcchar</STRONG> function does the
- following:
+ When <EM>wch</EM> is a null pointer, the <STRONG>getcchar</STRONG> function does the following:
- <STRONG>o</STRONG> Obtains the number of wide characters pointed to by
- <EM>wcval</EM>
+ <STRONG>o</STRONG> Obtains the number of wide characters pointed to by <EM>wcval</EM>
- <STRONG>o</STRONG> Does not change the data referenced by <EM>attrs</EM> or
- <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
+ <STRONG>o</STRONG> Does not change the data referenced by <EM>attrs</EM> or <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
- The <STRONG>setcchar</STRONG> function initializes the location pointed to
- by <EM>wcval</EM> by using:
+
+</PRE><H3><a name="h3-setcchar">setcchar</a></H3><PRE>
+ The <STRONG>setcchar</STRONG> function initializes the location pointed to by <EM>wcval</EM> by
+ using:
<STRONG>o</STRONG> The character attributes in <EM>attrs</EM>
<STRONG>o</STRONG> The color pair in <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
- <STRONG>o</STRONG> The wide-character string pointed to by <EM>wch</EM>. The
- string must be L'\0' terminated, contain at most one
- spacing character, which must be the first.
+ <STRONG>o</STRONG> The wide-character string pointed to by <EM>wch</EM>. The string must be
+ L'\0' terminated, contain at most one spacing character, which must
+ be the first.
- Up to <STRONG>CCHARW_MAX</STRONG>-1 nonspacing characters may follow.
- Additional nonspacing characters are ignored.
+ Up to <STRONG>CCHARW_MAX</STRONG>-1 nonspacing characters may follow. Additional
+ nonspacing characters are ignored.
- The string may contain a single control character
- instead. In that case, no nonspacing characters are
- allowed.
+ The string may contain a single control character instead. In that
+ case, no nonspacing characters are allowed.
-</PRE>
-<H2>NOTES</H2><PRE>
- The <EM>opts</EM> argument is reserved for future use. Currently,
- an application must provide a null pointer as <EM>opts</EM>.
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+ X/Open Curses documents the <EM>opts</EM> argument as reserved for future use,
+ saying that it must be null. This implementation uses that parameter
+ in ABI 6 for the functions which have a color-pair parameter to support
+ extended color pairs:
- The <EM>wcval</EM> argument may be a value generated by a call to
- <STRONG>setcchar</STRONG> or by a function that has a <STRONG>cchar_t</STRONG> output argu-
- ment. If <EM>wcval</EM> is constructed by any other means, the
- effect is unspecified.
+ <STRONG>o</STRONG> For functions which modify the color, e.g., <STRONG>setcchar</STRONG>, if <EM>opts</EM> is
+ set it is treated as a pointer to <STRONG>int</STRONG>, and used to set the color
+ pair instead of the <STRONG>short</STRONG> pair parameter.
+ <STRONG>o</STRONG> For functions which retrieve the color, e.g., <STRONG>getcchar</STRONG>, if <EM>opts</EM> is
+ set it is treated as a pointer to <STRONG>int</STRONG>, and used to retrieve the
+ color pair as an <STRONG>int</STRONG> value, in addition retrieving it via the stan-
+ dard pointer to <STRONG>short</STRONG> parameter.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- When <EM>wch</EM> is a null pointer, <STRONG>getcchar</STRONG> returns the number of
- wide characters referenced by <EM>wcval</EM>, including one for a
- trailing null.
- When <EM>wch</EM> is not a null pointer, <STRONG>getcchar</STRONG> returns <STRONG>OK</STRONG> upon
- successful completion, and <STRONG>ERR</STRONG> otherwise.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The <EM>wcval</EM> argument may be a value generated by a call to <STRONG>setcchar</STRONG> or by
+ a function that has a <STRONG>cchar_t</STRONG> output argument. If <EM>wcval</EM> is constructed
+ by any other means, the effect is unspecified.
- Upon successful completion, <STRONG>setcchar</STRONG> returns <STRONG>OK</STRONG>. Other-
- wise, it returns <STRONG>ERR</STRONG>.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ When <EM>wch</EM> is a null pointer, <STRONG>getcchar</STRONG> returns the number of wide charac-
+ ters referenced by <EM>wcval</EM>, including one for a trailing null.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- Functions: <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,
- <STRONG>wcwidth(3)</STRONG>.
+ When <EM>wch</EM> is not a null pointer, <STRONG>getcchar</STRONG> returns <STRONG>OK</STRONG> upon successful
+ completion, and <STRONG>ERR</STRONG> otherwise.
+
+ Upon successful completion, <STRONG>setcchar</STRONG> returns <STRONG>OK</STRONG>. Otherwise, it returns
+ <STRONG>ERR</STRONG>.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The <STRONG>CCHARW_MAX</STRONG> symbol is specific to ncurses. X/Open Curses does not
+ provide details for the layout of the <STRONG>cchar_t</STRONG> structure. It tells what
+ data are stored in it:
+
+ <STRONG>o</STRONG> a spacing character (<STRONG>wchar_t</STRONG>, i.e., 32-bits).
+
+ <STRONG>o</STRONG> non-spacing characters (again, <STRONG>wchar_t</STRONG>'s).
+
+ <STRONG>o</STRONG> attributes (at least 16 bits, inferred from the various ACS- and
+ WACS-flags).
+
+ <STRONG>o</STRONG> color pair (at least 16 bits, inferred from the <STRONG>unsigned</STRONG> <STRONG>short</STRONG>
+ type).
+
+ The non-spacing characters are optional, in the sense that zero or more
+ may be stored in a <STRONG>cchar_t</STRONG>. XOpen/Curses specifies a limit:
+
+ Implementations may limit the number of non-spacing characters that
+ can be associated with a spacing character, provided any limit is
+ at least 5.
+
+ The Unix implementations at the time follow that limit:
+
+ <STRONG>o</STRONG> AIX 4 and OSF1 4 use the same declaration with an array of 5 non-
+ spacing characters <EM>z</EM> and a single spacing character <EM>c</EM>.
+
+ <STRONG>o</STRONG> HP-UX 10 uses an opaque structure with 28 bytes, which is large
+ enough for the 6 <STRONG>wchar_t</STRONG> values.
+
+ <STRONG>o</STRONG> Solaris xpg4 curses uses a single array of 6 <STRONG>wchar_t</STRONG> values.
+
+ This implementation's <STRONG>cchar_t</STRONG> was defined in 1995 using <STRONG>5</STRONG> for the total
+ of spacing and non-spacing characters (<STRONG>CCHARW_MAX</STRONG>). That was probably
+ due to a misreading of the AIX 4 header files, because the X/Open
+ Curses document was not generally available at that time. Later (in
+ 2002), this detail was overlooked when beginning to implement the func-
+ tions using the structure.
+
+ In practice, even four non-spacing characters may seem enough. X/Open
+ Curses documents possible uses for non-spacing characters, including
+ using them for ligatures between characters (a feature apparently not
+ supported by any curses implementation). Unicode does not limit the
+ (analogous) number of combining characters, so some applications may be
+ affected.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ Functions: <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG>wcwidth(3)</STRONG>.
- <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
+ <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-getcchar">getcchar</a></li>
+<li><a href="#h3-setcchar">setcchar</a></li>
+</ul>
+</li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_getch.3x.html b/doc/html/man/curs_getch.3x.html
index 64953795ad9b..e8ccf097241a 100644
--- a/doc/html/man/curs_getch.3x.html
+++ b/doc/html/man/curs_getch.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,328 +27,377 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_getch.3x,v 1.37 2012/07/07 20:04:56 tom Exp @
+ * @Id: curs_getch.3x,v 1.54 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_getch 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_getch 3x</H1>
-<HR>
+<H1 class="no-header">curs_getch 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
+<STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG>, <STRONG>mvwgetch</STRONG>, <STRONG>ungetch</STRONG>, <STRONG>has_key</STRONG> - get
- (or push back) characters from <STRONG>curses</STRONG> terminal keyboard
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG>, <STRONG>mvwgetch</STRONG>, <STRONG>ungetch</STRONG>, <STRONG>has_key</STRONG> - get (or push back)
+ characters from <STRONG>curses</STRONG> terminal keyboard
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</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>
+ <STRONG>int</STRONG> <STRONG>wgetch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win);</EM>
+ <STRONG>int</STRONG> <STRONG>mvgetch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvwgetch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>ungetch(int</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>has_key(int</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+
+
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE><H3><a name="h3-Reading-characters">Reading characters</a></H3><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 newline
+ (nocbreak mode). In half-delay mode, the program waits until a charac-
+ ter is typed or the specified timeout has been reached.
+
+ If <STRONG>echo</STRONG> is enabled, and the window is not a pad, then the character
+ will also be echoed into the designated window according to the follow-
+ ing rules:
+
+ <STRONG>o</STRONG> 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 as if <STRONG>delch</STRONG> had been called.
+
+ <STRONG>o</STRONG> If the character value is any other <STRONG>KEY_</STRONG> define, the user is alert-
+ ed with a <STRONG>beep</STRONG> call.
+
+ <STRONG>o</STRONG> If the character is a carriage-return, and if <STRONG>nl</STRONG> is enabled, it is
+ translated to a line-feed after echoing.
+
+ <STRONG>o</STRONG> Otherwise the character is simply output to the screen.
+
+ If the window is not a pad, and it has been moved or modified since the
+ last call to <STRONG>wrefresh</STRONG>, <STRONG>wrefresh</STRONG> will be called before another character
+ is read.
+
+
+</PRE><H3><a name="h3-Keypad-mode">Keypad mode</a></H3><PRE>
+ 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:
+
+ <STRONG>o</STRONG> The predefined function keys are listed in <STRONG>&lt;curses.h&gt;</STRONG> as macros
+ with values outside the range of 8-bit characters. Their names be-
+ gin with <STRONG>KEY_</STRONG>.
+
+ <STRONG>o</STRONG> Other (user-defined) function keys which may be defined using <STRONG>de-</STRONG>
+ <STRONG><A HREF="define_key.3x.html">fine_key(3x)</A></STRONG> have no names, but also are expected to have values
+ outside the range of 8-bit characters.
+
+ 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 re-
+ ceived (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 expe-
+ rience a delay between the time a user presses the escape key and the
+ escape is returned to the program.
+
+ In <STRONG>ncurses</STRONG>, the timer normally expires after the value in <STRONG>ESCDELAY</STRONG> (see
+ <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>). If <STRONG>notimeout</STRONG> is <STRONG>TRUE</STRONG>, the timer does not expire;
+ it is an infinite (or very large) value. Because function keys usually
+ begin with an escape character, the terminal may appear to hang in no-
+ timeout mode after pressing the escape key until another key is
+ pressed.
+
+
+</PRE><H3><a name="h3-Ungetting-characters">Ungetting characters</a></H3><PRE>
+ 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>. There is just one input queue for all win-
+ dows.
+
+
+</PRE><H3><a name="h3-Predefined-key-codes">Predefined key-codes</a></H3><PRE>
+ The following special keys are defined in <STRONG>&lt;curses.h&gt;</STRONG>.
+
+ <STRONG>o</STRONG> Except for the special case <STRONG>KEY_RESIZE</STRONG>, it is necessary to enable
+ <STRONG>keypad</STRONG> for <STRONG>getch</STRONG> to return these codes.
+
+ <STRONG>o</STRONG> Not all of these are necessarily supported on any particular termi-
+ nal.
+
+ <STRONG>o</STRONG> The naming convention may seem obscure, with some apparent mis-
+ spellings (such as "RSUME" for "resume"). The names correspond to
+ the long terminfo capability names for the keys, and were defined
+ long ago, in the 1980s.
+
+ <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 Function keys; space for 64 keys
+ is reserved.
+ KEY_F(<EM>n</EM>) For 0 &lt;= <EM>n</EM> &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:
-</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 af-
- ter 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 <STRONG>noecho</STRONG> 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
- <STRONG>delch</STRONG> had been called. If the character value is any oth-
- er <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 to-
- ken for that function key is returned instead of the raw
- characters. Possible function keys are defined in <STRONG>&lt;curs-</STRONG>
- <STRONG>es.h&gt;</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 es-
- cape 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 presses the es-
- cape key and the escape is returned to the program.
-
- 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>. There is just one
- input queue for all windows.
-
- <STRONG>Function</STRONG> <STRONG>Keys</STRONG>
- The following function keys, defined in <STRONG>&lt;curses.h&gt;</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.
-
-
- <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 Function keys; space for 64 keys
- is reserved.
- KEY_F(<EM>n</EM>) For 0 &lt;= <EM>n</EM> &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
+ +-----+------+-------+
+ | <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> |
+ +-----+------+-------+
+ A few of these predefined values do <EM>not</EM> correspond to a real key:
- Keypad is arranged like this:
+ <STRONG>o</STRONG> <STRONG>KEY_RESIZE</STRONG> is returned when the <STRONG>SIGWINCH</STRONG> signal has been detected
+ (see <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG> and <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>). This code is returned
+ whether or not <STRONG>keypad</STRONG> has been enabled.
+ <STRONG>o</STRONG> <STRONG>KEY_MOUSE</STRONG> is returned for mouse-events (see <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>). This
+ code relies upon whether or not <STRONG><A HREF="curs_inopts.3x.html">keypad(3x)</A></STRONG> has been enabled, be-
+ cause (e.g., with <EM>xterm</EM> mouse prototocol) ncurses must read escape
+ sequences, just like a function key.
- +-----+------+-------+
- | <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 to whether the current
- terminal type recognizes a key with that value. Note that
- a few values do not correspond to a real key, e.g.,
- <STRONG>KEY_RESIZE</STRONG> and <STRONG>KEY_MOUSE</STRONG>. See <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> for more de-
- tails about <STRONG>KEY_RESIZE</STRONG>, and <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> for a discus-
- sion of <STRONG>KEY_MOUSE</STRONG>.
+</PRE><H3><a name="h3-Testing-key-codes">Testing key-codes</a></H3><PRE>
+ The <STRONG>has_key</STRONG> routine takes a key-code value from the above list, and re-
+ turns <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG> according to whether the current terminal type rec-
+ ognizes 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.
+ The library also supports these extensions:
+
+ <STRONG>define_key</STRONG>
+ defines a key-code for a given string (see <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>).
+
+ <STRONG>key_defined</STRONG>
+ checks if there is a key-code defined for a given string (see
+ <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>).
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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 <STRONG>ungetch</STRONG>) upon successful completion.
<STRONG>ungetch</STRONG>
- returns ERR if there is no more room in the FIFO.
+ returns <STRONG>ERR</STRONG> if there is no more room in the FIFO.
<STRONG>wgetch</STRONG>
- returns ERR if the window pointer is null, or if
- its timeout expires without having any data.
+ returns <STRONG>ERR</STRONG> if the window pointer is null, or if its timeout
+ expires without having any data, or if the execution was inter-
+ rupted by a signal (<STRONG>errno</STRONG> will be set to <STRONG>EINTR</STRONG>).
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</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.
-
- Note that some keys may be the same as commonly used con-
- trol keys, e.g., <STRONG>KEY_ENTER</STRONG> versus control/M, <STRONG>KEY_BACKSPACE</STRONG>
- versus control/H. Some curses implementations may differ
- according to whether they treat these control keys spe-
- cially (and ignore the terminfo), or use the terminfo def-
- initions. <STRONG>Ncurses</STRONG> uses the terminfo definition. If it
- says that <STRONG>KEY_ENTER</STRONG> is control/M, <STRONG>getch</STRONG> will return
- <STRONG>KEY_ENTER</STRONG> when you press control/M.
-
- Generally, <STRONG>KEY_ENTER</STRONG> denotes the character(s) sent by the
- <EM>Enter</EM> key on the numeric keypad:
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ Use of the escape key by a programmer for a single character function
+ is discouraged, as it will cause a delay of up to one second while the
+ keypad code looks for a following function-key sequence.
+
+ Some keys may be the same as commonly used control keys, e.g., <STRONG>KEY_EN-</STRONG>
+ <STRONG>TER</STRONG> versus control/M, <STRONG>KEY_BACKSPACE</STRONG> versus control/H. Some curses im-
+ plementations may differ according to whether they treat these control
+ keys specially (and ignore the terminfo), or use the terminfo defini-
+ tions. <STRONG>Ncurses</STRONG> uses the terminfo definition. If it says that <STRONG>KEY_EN-</STRONG>
+ <STRONG>TER</STRONG> is control/M, <STRONG>getch</STRONG> will return <STRONG>KEY_ENTER</STRONG> when you press control/M.
+
+ Generally, <STRONG>KEY_ENTER</STRONG> denotes the character(s) sent by the <EM>Enter</EM> key on
+ the numeric keypad:
<STRONG>o</STRONG> the terminal description lists the most useful keys,
- <STRONG>o</STRONG> the <EM>Enter</EM> key on the regular keyboard is already han-
- dled by the standard ASCII characters for carriage-re-
- turn and line-feed,
+ <STRONG>o</STRONG> the <EM>Enter</EM> key on the regular keyboard is already handled by the
+ standard ASCII characters for carriage-return and line-feed,
- <STRONG>o</STRONG> depending on whether <STRONG>nl</STRONG> or <STRONG>nonl</STRONG> was called, pressing
- "Enter" on the regular keyboard may return either a
- carriage-return or line-feed, and finally
+ <STRONG>o</STRONG> depending on whether <STRONG>nl</STRONG> or <STRONG>nonl</STRONG> was called, pressing "Enter" on the
+ regular keyboard may return either a carriage-return or line-feed,
+ and finally
- <STRONG>o</STRONG> "Enter or send" is the standard description for this
- key.
+ <STRONG>o</STRONG> "Enter or send" is the standard description for this key.
- 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 un-
- desirable results.
+ 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&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 <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>.
+ Historically, the set of keypad macros was largely defined by the ex-
+ tremely function-key-rich keyboard of the AT&amp;T 7300, aka 3B1, aka Sa-
+ fari 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-
- mentation. This description is adopted from the XSI Curs-
- es standard.
-
- 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 im-
- plementation of handled signal receipt interrupts a
- <STRONG>read(2)</STRONG> call in progress or not, and also (in some imple-
- mentations) depending on whether an input timeout or non-
- blocking mode has been set.
-
- Programmers concerned about portability should be prepared
- for either of two cases: (a) signal receipt does not in-
- terrupt <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>NCURS-</STRONG>
- <STRONG>ES_VERSION</STRONG> feature macro.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The *get* 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 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 documentation. This descrip-
+ tion is adopted from the XSI Curses standard.
-</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_outopts.3x.html">curs_outopts(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>re-</STRONG>
- <STRONG><A HREF="resizeterm.3x.html">sizeterm(3x)</A></STRONG>.
+ The behavior of <STRONG>getch</STRONG> and friends in the presence of handled 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>read(2)</STRONG>
+ call in progress or not, and also (in some implementations) depending
+ on whether an input timeout or non-blocking mode has been set.
+
+ <STRONG>KEY_MOUSE</STRONG> is mentioned in XSI Curses, along with a few related terminfo
+ capabilities, but no higher-level functions use the feature. The im-
+ plementation in ncurses is an extension.
+
+ <STRONG>KEY_RESIZE</STRONG> is an extension first implemented for ncurses. NetBSD curs-
+ es later added this extension.
+
+ 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 <STRONG>ERR</STRONG> with <STRONG>errno</STRONG> set to
+ <STRONG>EINTR</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><a name="h2-SEE-ALSO">SEE ALSO</a></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_outopts.3x.html">curs_outopts(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="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>.
- Comparable functions in the wide-character (ncursesw) li-
- brary are described in <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>.
+ Comparable functions in the wide-character (ncursesw) library are de-
+ scribed in <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>.
- <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
+ <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Reading-characters">Reading characters</a></li>
+<li><a href="#h3-Keypad-mode">Keypad mode</a></li>
+<li><a href="#h3-Ungetting-characters">Ungetting characters</a></li>
+<li><a href="#h3-Predefined-key-codes">Predefined key-codes</a></li>
+<li><a href="#h3-Testing-key-codes">Testing key-codes</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_getstr.3x.html b/doc/html/man/curs_getstr.3x.html
index f7cffded9a17..8c4c7bca864f 100644
--- a/doc/html/man/curs_getstr.3x.html
+++ b/doc/html/man/curs_getstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,33 +26,34 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_getstr.3x,v 1.19 2010/12/04 18:36:44 tom Exp @
+ * @Id: curs_getstr.3x,v 1.28 2019/07/20 19:14:56 tom Exp @
+ * X/Open says also until EOf
+ * X/Open says then an EOS is added to the result
+ * X/Open doesn't mention n&lt;0
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_getstr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_getstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_getstr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>getstr</STRONG>, <STRONG>getnstr</STRONG>, <STRONG>wgetstr</STRONG>, <STRONG>wgetnstr</STRONG>, <STRONG>mvgetstr</STRONG>, <STRONG>mvgetnstr</STRONG>,
- <STRONG>mvwgetstr</STRONG>, <STRONG>mvwgetnstr</STRONG> - accept character strings from
- <STRONG>curses</STRONG> terminal keyboard
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>getstr</STRONG>, <STRONG>getnstr</STRONG>, <STRONG>wgetstr</STRONG>, <STRONG>wgetnstr</STRONG>, <STRONG>mvgetstr</STRONG>, <STRONG>mvgetnstr</STRONG>, <STRONG>mvwgetstr</STRONG>,
+ <STRONG>mvwgetnstr</STRONG> - accept character strings from <STRONG>curses</STRONG> terminal keyboard
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>getstr(char</STRONG> <STRONG>*str);</STRONG>
@@ -66,90 +66,125 @@
<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>
-</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 point-
- ed 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 en-
- ter 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><a name="h2-DESCRIPTION">DESCRIPTION</a></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>, followed by a NUL.
+ <STRONG>wgetnstr</STRONG> reads at most <EM>n</EM> characters, thus preventing a possible over-
+ flow of the input buffer. Any attempt to enter more characters (other
+ than the terminating newline or carriage return) causes a beep. Func-
+ tion keys also cause a beep and are ignored. The <STRONG>getnstr</STRONG> function
+ reads from the <EM>stdscr</EM> default window.
-</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.
+ 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 previous character (typi-
+ cally a left motion).
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG> (SVr4 speci-
+ fies only "an integer value other than <STRONG>ERR</STRONG>") upon successful comple-
+ tion.
X/Open defines no error conditions.
- In this implementation, these functions return an error if
- the window pointer is null, or if its timeout expires
- without having any data.
+ In this implementation, these functions return an error if the window
+ pointer is null, or if its timeout expires without having any data.
- This implementation provides an extension as well. If a
- SIGWINCH interrupts the function, it will return <STRONG>KEY_RE-</STRONG>
- <STRONG>SIZE</STRONG> rather than <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>.
+ This implementation provides an extension as well. If a <STRONG>SIGWINCH</STRONG> in-
+ terrupts the function, it will return <STRONG>KEY_RESIZE</STRONG> rather than <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</PRE>
-<H2>NOTES</H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></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 does not define any error conditions. This im-
- plementation returns ERR if the window pointer is null, or
- if the lower-level <STRONG>wgetch</STRONG> call returns an ERR.
-
- 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
- present but not documented in SVr4.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4.
+ They read single-byte characters only. The standard does not define
+ any error conditions. This implementation returns <STRONG>ERR</STRONG> if the window
+ pointer is null, or if the lower-level <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> call returns an <STRONG>ERR</STRONG>.
+ SVr3 and early SVr4 curses implementations did not reject function
+ keys; the SVr4.0 documentation claimed that "special keys" (such as
+ function keys, "home" key, "clear" key, <EM>etc</EM>.) are "interpreted", with-
+ out 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).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+ The functions <STRONG>getnstr</STRONG>, <STRONG>mvgetnstr</STRONG>, and <STRONG>mvwgetnstr</STRONG> were present but not
+ documented in SVr4.
+
+ X/Open Curses, Issue 5 (2007) stated that these functions "read at most
+ <EM>n</EM> bytes" but did not state whether the terminating NUL is counted in
+ that limit. X/Open Curses, Issue 7 (2009) changed that to say they
+ "read at most <EM>n</EM>-1 bytes" to allow for the terminating NUL. As of 2018,
+ some implementations do, some do not count it:
+
+ <STRONG>o</STRONG> ncurses 6.1 and PDCurses do not count the NUL in the given limit,
+ while
+
+ <STRONG>o</STRONG> Solaris SVr4 and NetBSD curses count the NUL as part of the limit.
+
+ <STRONG>o</STRONG> Solaris xcurses provides both: its wide-character <STRONG>wget_nstr</STRONG> re-
+ serves a NUL, but its <STRONG>wgetnstr</STRONG> does not count the NUL consistently.
+
+ In SVr4 curses, a negative value of <EM>n</EM> tells <STRONG>wgetnstr</STRONG> to assume that the
+ caller's buffer is large enough to hold the result, i.e., to act like
+ <STRONG>wgetstr</STRONG>. X/Open Curses does not mention this (or anything related to
+ negative or zero values of <EM>n</EM>), however most implementations use the
+ feature, with different limits:
+
+ <STRONG>o</STRONG> Solaris SVr4 curses and PDCurses limit the result to 255 bytes.
+ Other Unix systems than Solaris are likely to use the same limit.
+
+ <STRONG>o</STRONG> Solaris xcurses limits the result to <STRONG>LINE_MAX</STRONG> bytes.
+
+ <STRONG>o</STRONG> NetBSD 7 assumes no particular limit for the result from <STRONG>wgetstr</STRONG>.
+ However, it limits the <STRONG>wgetnstr</STRONG> parameter <EM>n</EM> to ensure that it is
+ greater than zero.
+
+ A comment in NetBSD's source code states that this is specified in
+ SUSv2.
+
+ <STRONG>o</STRONG> ncurses (before 6.2) assumes no particular limit for the result
+ from <STRONG>wgetstr</STRONG>, and treats the <EM>n</EM> parameter of <STRONG>wgetnstr</STRONG> like SVr4
+ curses.
+
+ <STRONG>o</STRONG> ncurses 6.2 uses <STRONG>LINE_MAX</STRONG>, or a larger (system-dependent) value
+ which the <STRONG>sysconf</STRONG> function may provide. If neither <STRONG>LINE_MAX</STRONG> or
+ <STRONG>sysconf</STRONG> is available, ncurses uses the POSIX value for <STRONG>LINE_MAX</STRONG> (a
+ 2048 byte limit). In either case, it reserves a byte for the ter-
+ minating NUL.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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_variables.3x.html">curs_variables(3x)</A></STRONG>.
- <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
+ <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_getyx.3x.html b/doc/html/man/curs_getyx.3x.html
index b5809b3c8ed1..c2b616d48c27 100644
--- a/doc/html/man/curs_getyx.3x.html
+++ b/doc/html/man/curs_getyx.3x.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
* Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
@@ -29,30 +28,29 @@
****************************************************************************
* @Id: curs_getyx.3x,v 1.18 2010/12/04 18:36:44 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_getyx 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_getyx 3x</H1>
-<HR>
+<H1 class="no-header">curs_getyx 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG> <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
+<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG> <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>getyx</STRONG>, <STRONG>getparyx</STRONG>, <STRONG>getbegyx</STRONG>, <STRONG>getmaxyx</STRONG> - get <STRONG>curses</STRONG> cursor
- and window coordinates
+</PRE><H2><a name="h2-NAME">NAME</a></H2><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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>void</STRONG> <STRONG>getyx(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
@@ -61,71 +59,66 @@
<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>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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>.
+ If <EM>win</EM> is a subwindow, the <STRONG>getparyx</STRONG> macro places the beginning coordi-
+ nates of the subwindow relative to the parent window into two integer
+ variables <EM>y</EM> and <EM>x</EM>. Otherwise, <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.
+ Like <STRONG>getyx</STRONG>, the <STRONG>getbegyx</STRONG> and <STRONG>getmaxyx</STRONG> macros store the current begin-
+ ning coordinates and size of the specified window.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The return values of these macros are undefined (i.e.,
- they should not be used as the right-hand side of assign-
- ment statements).
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The return values of these macros are undefined (i.e., they should not
+ be used as the right-hand side of assignment statements).
-</PRE>
-<H2>NOTES</H2><PRE>
- All of these interfaces are macros. A "<STRONG>&amp;</STRONG>" is not neces-
- sary before the variables <EM>y</EM> and <EM>x</EM>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ All of these interfaces are macros. A "<STRONG>&amp;</STRONG>" is not necessary before the
+ variables <EM>y</EM> and <EM>x</EM>.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The <STRONG>getyx</STRONG>, <STRONG>getparyx</STRONG>, <STRONG>getbegyx</STRONG> and <STRONG>getmaxyx</STRONG> macros are
- described in the XSI Curses standard, Issue 4.
-
- This implementation also provides functions <STRONG>getbegx</STRONG>, <STRONG>getb-</STRONG>
- <STRONG>egy</STRONG>, <STRONG>getcurx</STRONG>, <STRONG>getcury</STRONG>, <STRONG>getmaxx</STRONG>, <STRONG>getmaxy</STRONG>, <STRONG>getparx</STRONG> and <STRONG>get-</STRONG>
- <STRONG>pary</STRONG> for compatibility with older versions of curses.
-
- Although X/Open Curses does not address this, many imple-
- mentations provide members of the WINDOW structure con-
- taining values corresponding to these macros. For best
- portability, do not rely on using the data in WINDOW,
- since some implementations make WINDOW opaque (do not
- allow direct use of its members).
-
- Besides the problem of opaque structures, the data stored
- in like-named members may not have like-values in differ-
- ent implementations. For example, the WINDOW._maxx and
- WINDOW._maxy values in ncurses have (at least since
- release 1.8.1) differed by one from some other implementa-
- tions. The difference is hidden by means of the macro
- <STRONG>getmaxyx</STRONG>.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The <STRONG>getyx</STRONG>, <STRONG>getparyx</STRONG>, <STRONG>getbegyx</STRONG> and <STRONG>getmaxyx</STRONG> macros are described in the
+ XSI Curses standard, Issue 4.
+ This implementation also provides functions <STRONG>getbegx</STRONG>, <STRONG>getbegy</STRONG>, <STRONG>getcurx</STRONG>,
+ <STRONG>getcury</STRONG>, <STRONG>getmaxx</STRONG>, <STRONG>getmaxy</STRONG>, <STRONG>getparx</STRONG> and <STRONG>getpary</STRONG> for compatibility with
+ older versions of curses.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+ Although X/Open Curses does not address this, many implementations pro-
+ vide members of the WINDOW structure containing values corresponding to
+ these macros. For best portability, do not rely on using the data in
+ WINDOW, since some implementations make WINDOW opaque (do not allow
+ direct use of its members).
+
+ Besides the problem of opaque structures, the data stored in like-named
+ members may not have like-values in different implementations. For
+ example, the WINDOW._maxx and WINDOW._maxy values in ncurses have (at
+ least since release 1.8.1) differed by one from some other implementa-
+ tions. The difference is hidden by means of the macro <STRONG>getmaxyx</STRONG>.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>
- <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
+ <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_in_wch.3x.html b/doc/html/man/curs_in_wch.3x.html
index ce6fdf3dcd79..fd531b921b9e 100644
--- a/doc/html/man/curs_in_wch.3x.html
+++ b/doc/html/man/curs_in_wch.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2018,2019 Free 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,32 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_in_wch.3x,v 1.5 2010/12/04 18:36:44 tom Exp @
+ * @Id: curs_in_wch.3x,v 1.8 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_in_wch 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_in_wch 3x</H1>
-<HR>
+<H1 class="no-header">curs_in_wch 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG> <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
+<STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG> <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>in_wch</STRONG>, <STRONG>mvin_wch</STRONG>, <STRONG>mvwin_wch</STRONG>, <STRONG>win_wch</STRONG> - extract a complex
- character and rendition from a window
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>in_wch</STRONG>, <STRONG>mvin_wch</STRONG>, <STRONG>mvwin_wch</STRONG>, <STRONG>win_wch</STRONG> - extract a complex character and
+ rendition from a window
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>in_wch(cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>);</STRONG>
@@ -61,49 +59,48 @@
<STRONG>int</STRONG> <STRONG>win_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These functions extract the complex character and rendi-
- tion from the current position in the named window into
- the <STRONG>cchar_t</STRONG> object referenced by wcval.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These functions extract the complex character and rendition from the
+ current position in the named window into the <STRONG>cchar_t</STRONG> object referenced
+ by wcval.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- No errors are defined in the XSI Curses standard. This
- implementation checks for null pointers, returns ERR in
- that case. Also, the <EM>mv</EM> routines check for error moving
- the cursor, returning ERR in that case. Otherwise they
- return OK
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ No errors are defined in the XSI Curses standard. This implementation
+ checks for null pointers, returns <STRONG>ERR</STRONG> in that case. Also, the <EM>mv</EM> rou-
+ tines check for error moving the cursor, returning <STRONG>ERR</STRONG> in that case.
+ Otherwise they return <STRONG>OK</STRONG>.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</PRE>
-<H2>NOTES</H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>.
- <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
+ <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_in_wchstr.3x.html b/doc/html/man/curs_in_wchstr.3x.html
index f130c8021056..3ca1a4e7c013 100644
--- a/doc/html/man/curs_in_wchstr.3x.html
+++ b/doc/html/man/curs_in_wchstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2018,2019 Free 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,34 +26,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_in_wchstr.3x,v 1.9 2012/11/03 23:03:59 tom Exp @
+ * @Id: curs_in_wchstr.3x,v 1.12 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_in_wchstr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_in_wchstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_in_wchstr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>in_wchstr</STRONG>, <STRONG>in_wchnstr</STRONG>, <STRONG>win_wchstr</STRONG>, <STRONG>win_wchnstr</STRONG>,
- <STRONG>mvin_wchstr</STRONG>, <STRONG>mvin_wchnstr</STRONG>, <STRONG>mvwin_wchstr</STRONG>, <STRONG>mvwin_wchnstr</STRONG> -
- get an array of complex characters and renditions from a
- curses window
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>in_wchstr</STRONG>, <STRONG>in_wchnstr</STRONG>, <STRONG>win_wchstr</STRONG>, <STRONG>win_wchnstr</STRONG>, <STRONG>mvin_wchstr</STRONG>,
+ <STRONG>mvin_wchnstr</STRONG>, <STRONG>mvwin_wchstr</STRONG>, <STRONG>mvwin_wchnstr</STRONG> - get an array of complex
+ characters and renditions from a curses window
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>in_wchstr(cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG>
@@ -67,58 +64,56 @@
<STRONG>int</STRONG> <STRONG>mvwin_wchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM>, int <EM>n</EM><STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These functions return an array of complex characters in
- <EM>wchstr</EM>, starting at the current cursor position in the
- named window. Attributes (rendition) are stored with the
- characters.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These functions return an array of complex characters in <EM>wchstr</EM>, start-
+ ing at the current cursor position in the named window. Attributes
+ (rendition) are stored with the characters.
- The <STRONG>in_wchnstr</STRONG>, <STRONG>mvin_wchnstr</STRONG>, <STRONG>mvwin_wchnstr</STRONG> and <STRONG>win_wchn-</STRONG>
- <STRONG>str</STRONG> fill the array with at most <EM>n</EM> <STRONG>cchar_t</STRONG> elements.
+ The <STRONG>in_wchnstr</STRONG>, <STRONG>mvin_wchnstr</STRONG>, <STRONG>mvwin_wchnstr</STRONG> and <STRONG>win_wchnstr</STRONG> fill the
+ array with at most <EM>n</EM> <STRONG>cchar_t</STRONG> elements.
-</PRE>
-<H2>NOTES</H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
Note that all routines except <STRONG>win_wchnstr</STRONG> may be macros.
- Reading a line that overflows the array pointed to by <EM>wch-</EM>
- <EM>str</EM> with <STRONG>in_wchstr</STRONG>, <STRONG>mvin_wchstr</STRONG>, <STRONG>mvwin_wchstr</STRONG> or <STRONG>win_wch-</STRONG>
- <STRONG>str</STRONG> causes undefined results. Therefore, the use of
- <STRONG>in_wchnstr</STRONG>, <STRONG>mvin_wchnstr</STRONG>, <STRONG>mvwin_wchnstr</STRONG>, or <STRONG>win_wchnstr</STRONG> is
- recommended.
+ Reading a line that overflows the array pointed to by <EM>wchstr</EM> with
+ <STRONG>in_wchstr</STRONG>, <STRONG>mvin_wchstr</STRONG>, <STRONG>mvwin_wchstr</STRONG> or <STRONG>win_wchstr</STRONG> causes undefined re-
+ sults. Therefore, the use of <STRONG>in_wchnstr</STRONG>, <STRONG>mvin_wchnstr</STRONG>, <STRONG>mvwin_wchnstr</STRONG>,
+ or <STRONG>win_wchnstr</STRONG> is recommended.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- Upon successful completion, these functions return <STRONG>OK</STRONG>.
- Otherwise, they return <STRONG>ERR</STRONG>.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Upon successful completion, these functions return <STRONG>OK</STRONG>. Otherwise, they
+ return <STRONG>ERR</STRONG>.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses defines no error conditions. This imple-
- mentation checks for null pointers, returning ERR in that
- case.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The XSI Curses defines no error conditions. This implementation checks
+ for null pointers, returning <STRONG>ERR</STRONG> in that case.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- Functions: <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>,
- <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ Functions: <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>, <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
+ <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
- <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
+ <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_inch.3x.html b/doc/html/man/curs_inch.3x.html
index 5068a59e6a62..f54519414bad 100644
--- a/doc/html/man/curs_inch.3x.html
+++ b/doc/html/man/curs_inch.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,32 +27,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_inch.3x,v 1.17 2010/12/04 18:36:44 tom Exp @
+ * @Id: curs_inch.3x,v 1.22 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_inch 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_inch 3x</H1>
-<HR>
+<H1 class="no-header">curs_inch 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG> <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
+<STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG> <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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><a name="h2-NAME">NAME</a></H2><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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>chtype</STRONG> <STRONG>inch(void);</STRONG>
@@ -62,57 +60,93 @@
<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>&lt;curses.h&gt;</STRONG> can be used with the <STRONG>&amp;</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>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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 posi-
+ tion, their values are OR'ed into the value returned. Constants
+ defined in <STRONG>&lt;curses.h&gt;</STRONG> can be used with the <STRONG>&amp;</STRONG> (logical AND) operator to
+ extract the character or attributes alone.
+
+
+</PRE><H3><a name="h3-Attributes">Attributes</a></H3><PRE>
+ The following bit-masks may be AND-ed with characters returned by
+ <STRONG>winch</STRONG>.
<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>RETURN VALUE</H2><PRE>
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
+ The <STRONG>winch</STRONG> function does not return an error if the window contains
+ characters larger than 8-bits (255). Only the low-order 8 bits of the
+ character are used by <STRONG>winch</STRONG>.
-</PRE>
-<H2>NOTES</H2><PRE>
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4.
+ Very old systems (before standardization) provide a different function
+ with the same name:
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
+ <STRONG>o</STRONG> The <STRONG>winch</STRONG> function was part of the original BSD curses library,
+ which stored a 7-bit character combined with the <EM>standout</EM>
+ attribute.
+
+ In BSD curses, <STRONG>winch</STRONG> returned only the character (as an integer)
+ with the <EM>standout</EM> attribute removed.
+
+ <STRONG>o</STRONG> System V curses added support for several video attributes which
+ could be combined with characters in the window.
+
+ Reflecting this improvement, the function was altered to return the
+ character combined with all video attributes in a <STRONG>chtype</STRONG> value.
+
+ X/Open Curses does not specify the size and layout of attributes, color
+ and character values in <STRONG>chtype</STRONG>; it is implementation-dependent. This
+ implementation uses 8 bits for character values. An application using
+ more bits, e.g., a Unicode value, should use the wide-character equiva-
+ lents to these functions.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
+ gives an overview of the WINDOW and <STRONG>chtype</STRONG> data types.
+
+ <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
+ goes into more detail, pointing out portability problems and con-
+ straints on the use of <STRONG>chtype</STRONG> for returning window information.
- Comparable functions in the wide-character (ncursesw)
- library are described in <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>.
+ <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
+ describes comparable functions for the wide-character (ncursesw)
+ library.
- <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
+ <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Attributes">Attributes</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_inchstr.3x.html b/doc/html/man/curs_inchstr.3x.html
index 82884de74616..e61595c42f10 100644
--- a/doc/html/man/curs_inchstr.3x.html
+++ b/doc/html/man/curs_inchstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free 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,33 +26,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_inchstr.3x,v 1.15 2010/12/04 18:36:44 tom Exp @
+ * @Id: curs_inchstr.3x,v 1.18 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_inchstr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_inchstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_inchstr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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><a name="h2-NAME">NAME</a></H2><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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>inchstr(chtype</STRONG> <STRONG>*chstr);</STRONG>
@@ -63,71 +61,69 @@
<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>
+ <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>&lt;curses.h&gt;</STRONG>
- can be used with the <STRONG>&amp;</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><a name="h2-DESCRIPTION">DESCRIPTION</a></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>&lt;curses.h&gt;</STRONG>
+ can be used with the <STRONG>&amp;</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><a name="h2-RETURN-VALUE">RETURN VALUE</a></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 re-
+ trieved, exclusive of the trailing 0).
- No error conditions are defined. If the <EM>chstr</EM> parameter
- is null, no data is returned, and the return value is ze-
- ro.
+ X/Open Curses defines no error conditions. In this implementation:
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ <STRONG>o</STRONG> If the <EM>win</EM> parameter is null, an error is returned,
+ <STRONG>o</STRONG> If the <EM>chstr</EM> parameter is null, an error is returned,
-</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 zero-
- terminated; it does not document whether a length limit
- argument includes any trailing 0; and it does not document
- the meaning of the return value.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</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><a name="h2-NOTES">NOTES</a></H2><PRE>
+ Note that all routines except <STRONG>winchnstr</STRONG> may be macros. SVr4 does not
+ document whether the result string is zero-terminated; it does not doc-
+ ument whether a length limit argument includes any trailing 0; and it
+ does not document the meaning of the return value.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4. It
+ is no more specific than the SVr4 documentation on the trailing 0. It
+ does specify that the successful return of the functions is <STRONG>OK</STRONG>.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>.
- Comparable functions in the wide-character (ncursesw) li-
- brary are described in <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>.
+ Comparable functions in the wide-character (ncursesw) library are de-
+ scribed in <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>.
- <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
+ <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_initscr.3x.html b/doc/html/man/curs_initscr.3x.html
index b61b21dcb600..baf2951d841c 100644
--- a/doc/html/man/curs_initscr.3x.html
+++ b/doc/html/man/curs_initscr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free 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,149 +26,250 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_initscr.3x,v 1.19 2013/07/20 19:34:14 tom Exp @
+ * @Id: curs_initscr.3x,v 1.31 2018/07/28 22:15:59 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_initscr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_initscr 3x</H1>
-<HR>
+<H1 class="no-header">curs_initscr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
+<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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><a name="h2-NAME">NAME</a></H2><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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>WINDOW</STRONG> <STRONG>*initscr(void);</STRONG>
<STRONG>int</STRONG> <STRONG>endwin(void);</STRONG>
<STRONG>bool</STRONG> <STRONG>isendwin(void);</STRONG>
- <STRONG>SCREEN</STRONG> <STRONG>*newterm(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>
+ <STRONG>SCREEN</STRONG> <STRONG>*newterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>type</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>outfd</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>infd</EM><STRONG>);</STRONG>
+ <STRONG>SCREEN</STRONG> <STRONG>*set_term(SCREEN</STRONG> <STRONG>*</STRONG><EM>new</EM><STRONG>);</STRONG>
+ <STRONG>void</STRONG> <STRONG>delscreen(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</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 oc-
- cur, <STRONG>initscr</STRONG> writes an appropriate error message to stan-
- dard 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 es-
- caping from <STRONG>curses</STRONG> mode temporarily. This routine re-
- stores 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.
-
- The <STRONG>isendwin</STRONG> routine returns <STRONG>TRUE</STRONG> if <STRONG>endwin</STRONG> has been
- 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><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+</PRE><H3><a name="h3-initscr">initscr</a></H3><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><A HREF="curs_slk.3x.html">slk_init(3x)</A></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>.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- <STRONG>endwin</STRONG> returns the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> upon
- successful completion.
+ The initscr code determines the terminal type and initializes all <STRONG>curs-</STRONG>
+ <STRONG>es</STRONG> data structures. <STRONG>initscr</STRONG> also causes the first call to <STRONG><A HREF="curscurs_refresh.3x.html">refresh(3x)</A></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 re-
+ turned to <STRONG>stdscr</STRONG>.
+
+
+</PRE><H3><a name="h3-newterm">newterm</a></H3><PRE>
+ 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 terminal cannot support a screen-oriented program, would also
+ use <STRONG>newterm</STRONG>. The routine <STRONG>newterm</STRONG> should be called once for each termi-
+ nal. It returns a variable of type <STRONG>SCREEN</STRONG> <STRONG>*</STRONG> which should be saved as a
+ reference to that terminal. <STRONG>newterm</STRONG>'s arguments are
+
+ <STRONG>o</STRONG> the <EM>type</EM> of the terminal to be used in place of <STRONG>$TERM</STRONG>,
+
+ <STRONG>o</STRONG> a file pointer for output to the terminal, and
+
+ <STRONG>o</STRONG> another file pointer for input from the terminal
+
+ If the <EM>type</EM> parameter is <STRONG>NULL</STRONG>, <STRONG>$TERM</STRONG> will be used.
+
+
+</PRE><H3><a name="h3-endwin">endwin</a></H3><PRE>
+ 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
+
+ <STRONG>o</STRONG> resets colors to correspond with the default color pair 0,
+
+ <STRONG>o</STRONG> moves the cursor to the lower left-hand corner of the screen,
+
+ <STRONG>o</STRONG> clears the remainder of the line so that it uses the default col-
+ ors,
+
+ <STRONG>o</STRONG> sets the cursor to normal visibility (see <STRONG><A HREF="curs_kernel.3x.html">curs_set(3x)</A></STRONG>),
+
+ <STRONG>o</STRONG> stops cursor-addressing mode using the <EM>exit</EM><STRONG>_</STRONG><EM>ca</EM><STRONG>_</STRONG><EM>mode</EM> terminal capa-
+ bility,
+
+ <STRONG>o</STRONG> restores tty modes (see <STRONG><A HREF="curs_kernel.3x.html">reset_shell_mode(3x)</A></STRONG>).
+
+ Calling <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> or <STRONG><A HREF="curs_refresh.3x.html">doupdate(3x)</A></STRONG> after a temporary escape causes the
+ program to resume visual mode.
+
+
+</PRE><H3><a name="h3-isendwin">isendwin</a></H3><PRE>
+ The <STRONG>isendwin</STRONG> routine returns <STRONG>TRUE</STRONG> if <STRONG>endwin</STRONG> has been called without any
+ subsequent calls to <STRONG>wrefresh</STRONG>, and <STRONG>FALSE</STRONG> otherwise.
+
+
+</PRE><H3><a name="h3-set_term">set_term</a></H3><PRE>
+ The <STRONG>set_term</STRONG> routine is used to switch between different terminals.
+ The screen reference <STRONG>new</STRONG> becomes the new current terminal. The previ-
+ ous terminal is returned by the routine. This is the only routine
+ which manipulates <STRONG>SCREEN</STRONG> pointers; all other routines affect only the
+ current terminal.
+
+
+</PRE><H3><a name="h3-delscreen">delscreen</a></H3><PRE>
+ 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 particular <STRONG>SCREEN</STRONG> is no longer needed.
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ <STRONG>endwin</STRONG> returns the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> upon successful com-
+ pletion.
Routines that return pointers always return <STRONG>NULL</STRONG> on error.
- X/Open defines no error conditions. In this implementa-
- tion <STRONG>endwin</STRONG> returns an error if the terminal was not ini-
- tialized.
+ X/Open defines no error conditions. In this implementation
+ <STRONG>o</STRONG> <STRONG>endwin</STRONG> returns an error if the terminal was not initialized.
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG> may be macros.
+ <STRONG>o</STRONG> <STRONG>newterm</STRONG> returns an error if it cannot allocate the data structures
+ for the screen, or for the top-level windows within the screen,
+ i.e., <STRONG>curscr</STRONG>, <STRONG>newscr</STRONG>, or <STRONG>stdscr</STRONG>.
+ <STRONG>o</STRONG> <STRONG>set_term</STRONG> returns no error.
-</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.
- Old versions of curses, e.g., BSD 4.4, may have returned a
- null pointer from <STRONG>initscr</STRONG> when an error is detected,
- rather than exiting. It is safe but redundant to check
- the return value of <STRONG>initscr</STRONG> in XSI Curses.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions were described in the XSI Curses standard, Issue 4. As
+ of 2015, the current document is X/Open Curses, Issue 7.
- If the TERM variable is missing or empty, <STRONG>initscr</STRONG> uses the
- value "unknown", which normally corresponds to a terminal
- entry with the <EM>generic</EM> (<EM>gn</EM>) capability. Generic entries
- are detected by <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> and cannot be used for full-
- screen operation. Other implementations may handle a
- missing/empty TERM variable differently.
+</PRE><H3><a name="h3-Differences">Differences</a></H3><PRE>
+ X/Open 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_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG>curs_vari-</STRONG>
- <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>.
+ <STRONG>o</STRONG> The portable way to use <STRONG>initscr</STRONG> is once only, using <STRONG>refresh</STRONG> (see
+ <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>) to restore the screen after <STRONG>endwin</STRONG>.
+
+ <STRONG>o</STRONG> This implementation allows using <STRONG>initscr</STRONG> after <STRONG>endwin</STRONG>.
+
+ Old versions of curses, e.g., BSD 4.4, may have returned a null pointer
+ from <STRONG>initscr</STRONG> when an error is detected, rather than exiting. It is
+ safe but redundant to check the return value of <STRONG>initscr</STRONG> in XSI Curses.
+
+
+</PRE><H3><a name="h3-Unset-TERM-Variable">Unset TERM Variable</a></H3><PRE>
+ If the TERM variable is missing or empty, <STRONG>initscr</STRONG> uses the value "un-
+ known", which normally corresponds to a terminal entry with the <EM>generic</EM>
+ (<EM>gn</EM>) capability. Generic entries are detected by <STRONG>setupterm</STRONG> (see
+ <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>) and cannot be used for full-screen operation. Other
+ implementations may handle a missing/empty TERM variable differently.
+
+
+</PRE><H3><a name="h3-Signal-Handlers">Signal Handlers</a></H3><PRE>
+ Quoting from X/Open Curses, section 3.1.1:
+
+ <EM>Curses</EM> <EM>implementations</EM> <EM>may</EM> <EM>provide</EM> <EM>for</EM> <EM>special</EM> <EM>handling</EM> <EM>of</EM> <EM>the</EM>
+ <STRONG>SIGINT</STRONG><EM>,</EM> <STRONG>SIGQUIT</STRONG> <EM>and</EM> <STRONG>SIGTSTP</STRONG> <EM>signals</EM> <EM>if</EM> <EM>their</EM> <EM>disposition</EM> <EM>is</EM>
+ <STRONG>SIG_DFL</STRONG> <EM>at</EM> <EM>the</EM> <EM>time</EM> <STRONG>initscr</STRONG> <EM>is</EM> <EM>called</EM> <STRONG>...</STRONG>
+
+ <EM>Any</EM> <EM>special</EM> <EM>handling</EM> <EM>for</EM> <EM>these</EM> <EM>signals</EM> <EM>may</EM> <EM>remain</EM> <EM>in</EM> <EM>effect</EM> <EM>for</EM>
+ <EM>the</EM> <EM>life</EM> <EM>of</EM> <EM>the</EM> <EM>process</EM> <EM>or</EM> <EM>until</EM> <EM>the</EM> <EM>process</EM> <EM>changes</EM> <EM>the</EM> <EM>disposi-</EM>
+ <EM>tion</EM> <EM>of</EM> <EM>the</EM> <EM>signal.</EM>
+
+ <EM>None</EM> <EM>of</EM> <EM>the</EM> <EM>Curses</EM> <EM>functions</EM> <EM>are</EM> <EM>required</EM> <EM>to</EM> <EM>be</EM> <EM>safe</EM> <EM>with</EM> <EM>respect</EM>
+ <EM>to</EM> <EM>signals</EM> ...
+
+ This implementation establishes signal handlers during initialization,
+ e.g., <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>. Applications which must handle these signals
+ should set up the corresponding handlers <EM>after</EM> initializing the li-
+ brary:
+
+ <STRONG>SIGINT</STRONG>
+ The handler <EM>attempts</EM> to cleanup the screen on exit. Although it
+ <EM>usually</EM> works as expected, there are limitations:
+
+ <STRONG>o</STRONG> Walking the <STRONG>SCREEN</STRONG> list is unsafe, since all list management
+ is done without any signal blocking.
+
+ <STRONG>o</STRONG> On systems which have <STRONG>REENTRANT</STRONG> turned on, <STRONG>set_term</STRONG> uses func-
+ tions which could deadlock or misbehave in other ways.
+
+ <STRONG>o</STRONG> <STRONG>endwin</STRONG> calls other functions, many of which use stdio or other
+ library functions which are clearly unsafe.
+
+ <STRONG>SIGTERM</STRONG>
+ This uses the same handler as <STRONG>SIGINT</STRONG>, with the same limitations.
+ It is not mentioned in X/Open Curses, but is more suitable for
+ this purpose than <STRONG>SIGQUIT</STRONG> (which is used in debugging).
+
+ <STRONG>SIGTSTP</STRONG>
+ This handles the <EM>stop</EM> signal, used in job control. When resuming
+ the process, this implementation discards pending input with
+ <STRONG>flushinput</STRONG> (see <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>), and repaints the screen assuming
+ that it has been completely altered. It also updates the saved
+ terminal modes with <STRONG>def_shell_mode</STRONG> (see <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>).
+
+ <STRONG>SIGWINCH</STRONG>
+ This handles the window-size changes which were ignored in the
+ standardization efforts. The handler sets a (signal-safe) vari-
+ able which is later tested in <STRONG>wgetch</STRONG> (see <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>). If
+ <STRONG>keypad</STRONG> has been enabled for the corresponding window, <STRONG>wgetch</STRONG> re-
+ turns the key symbol <STRONG>KEY_RESIZE</STRONG>. At the same time, <STRONG>wgetch</STRONG> calls
+ <STRONG>resizeterm</STRONG> to adjust the standard screen <STRONG>stdscr</STRONG>, and update other
+ data such as <STRONG>LINES</STRONG> and <STRONG>COLS</STRONG>.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>curs_ter-</STRONG>
+ <STRONG><A HREF="curs_terminfo.3x.html">minfo(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
- <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
+ <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-initscr">initscr</a></li>
+<li><a href="#h3-newterm">newterm</a></li>
+<li><a href="#h3-endwin">endwin</a></li>
+<li><a href="#h3-isendwin">isendwin</a></li>
+<li><a href="#h3-set_term">set_term</a></li>
+<li><a href="#h3-delscreen">delscreen</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a>
+<ul>
+<li><a href="#h3-Differences">Differences</a></li>
+<li><a href="#h3-Unset-TERM-Variable">Unset TERM Variable</a></li>
+<li><a href="#h3-Signal-Handlers">Signal Handlers</a></li>
+</ul>
+</li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_inopts.3x.html b/doc/html/man/curs_inopts.3x.html
index 9843728a1350..94beb0341865 100644
--- a/doc/html/man/curs_inopts.3x.html
+++ b/doc/html/man/curs_inopts.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,34 +26,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_inopts.3x,v 1.18 2013/07/20 19:42:02 tom Exp @
+ * @Id: curs_inopts.3x,v 1.28 2019/01/20 20:39:35 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_inopts 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_inopts 3x</H1>
-<HR>
+<H1 class="no-header">curs_inopts 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
+<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>cbreak</STRONG>, <STRONG>nocbreak</STRONG>, <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>,
- <STRONG>keypad</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><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>cbreak</STRONG>, <STRONG>nocbreak</STRONG>, <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>keypad</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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>cbreak(void);</STRONG>
@@ -76,220 +73,237 @@
<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 unaffect-
- ed), 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 initial-
- ly <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>.]
-
- The <STRONG>halfdelay</STRONG> routine is used for half-delay mode, which
- is similar to <STRONG>cbreak</STRONG> mode in that characters typed by the
- user are immediately available to the program. However,
- after blocking for <EM>tenths</EM> tenths of seconds, ERR is re-
- turned 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 in-
- terrupt, 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 inher-
- ited from the tty driver settings. The window argument 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 local-
- ly), turning on this option causes the terminal keypad 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 driv-
- er [see <STRONG>termio(7)</STRONG>]. To force 8 bits to be returned, in-
- voke <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 equivalent,
- under POSIX, to setting the CS7 flag on the terminal. 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>,
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <STRONG>ncurses</STRONG> library provides several functions which let an application
+ change the way input from the terminal is handled. Some are global,
+ applying to all windows. Others apply only to a specific window. Win-
+ dow-specific settings are not automatically applied to new or derived
+ windows. An application must apply these to each window, if the same
+ behavior is needed.
+
+
+</PRE><H3><a name="h3-cbreak">cbreak</a></H3><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-processing (interrupt and flow control charac-
+ ters are unaffected), 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> explic-
+ itly. Most interactive programs using <STRONG>curses</STRONG> set the <STRONG>cbreak</STRONG> mode.
+ Note that <STRONG>cbreak</STRONG> overrides <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>.]
+
+
+</PRE><H3><a name="h3-echo_noecho">echo/noecho</a></H3><PRE>
+ The <STRONG>echo</STRONG> and <STRONG>noecho</STRONG> routines control whether characters typed by the
+ user are echoed by <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG> as they are typed. Echoing by the tty
+ driver is always disabled, but initially <STRONG>getch</STRONG> is in echo mode, so
+ characters typed are echoed. Authors of most interactive programs pre-
+ fer 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>.]
+
+
+</PRE><H3><a name="h3-halfdelay">halfdelay</a></H3><PRE>
+ The <STRONG>halfdelay</STRONG> routine is used for half-delay mode, which is similar to
+ <STRONG>cbreak</STRONG> mode in that characters typed by the user are immediately avail-
+ able to the program. However, after blocking for <EM>tenths</EM> tenths of sec-
+ onds, <STRONG>ERR</STRONG> is returned if nothing has been typed. The value of <EM>tenths</EM>
+ must be a number between 1 and 255. Use <STRONG>nocbreak</STRONG> to leave half-delay
+ mode.
+
+
+</PRE><H3><a name="h3-intrflush">intrflush</a></H3><PRE>
+ If the <STRONG>intrflush</STRONG> option is enabled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), and 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 the option (<EM>bf</EM> is <STRONG>FALSE</STRONG>) prevents the flush.
+ The default for the option is inherited from the tty driver settings.
+ The window argument is ignored.
+
+
+</PRE><H3><a name="h3-keypad">keypad</a></H3><PRE>
+ The <STRONG>keypad</STRONG> option enables the keypad of the user's terminal. If en-
+ abled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the user can press a function key (such as an arrow
+ key) and <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> returns a single 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 se-
+ quences 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 keypad to be turned on when <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> is called.
+ The default value for keypad is <STRONG>FALSE</STRONG>.
+
+
+</PRE><H3><a name="h3-meta">meta</a></H3><PRE>
+ Initially, whether the terminal returns 7 or 8 significant bits on in-
+ put depends on the control mode of the tty driver [see <STRONG>termios(3)</STRONG>]. To
+ force 8 bits to be returned, invoke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>TRUE</STRONG>); this is equiva-
+ lent, 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 equivalent, under
+ POSIX, to setting the CS7 flag on the terminal. 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 termi-
+ nal 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 be-
- tween sequences received from a function key and those
- typed by a user.
-
- The <STRONG>raw</STRONG> and <STRONG>noraw</STRONG> routines place the terminal into or out
- of raw mode. Raw mode is similar to <STRONG>cbreak</STRONG> mode, in that
- characters typed are immediately passed through to the us-
- er program. The differences are that in raw mode, the in-
- terrupt, 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>termio(7)</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 (i.e., waits indefinitely for in-
- put). If <EM>delay</EM> is zero, then non-blocking read is used
- (i.e., 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>de-</EM>
- <EM>lay</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><H3><a name="h3-nodelay">nodelay</a></H3><PRE>
+ 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><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> sets a timer
+ while waiting for the next character. If <STRONG>notimeout(</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.
-</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.
- X/Open does not define any error conditions. In this im-
- plementation, functions with a window parameter will re-
- turn an error if it is null. Any function will also re-
- turn an error if the terminal was not initialized. Also,
+</PRE><H3><a name="h3-raw_noraw">raw/noraw</a></H3><PRE>
+ The <STRONG>raw</STRONG> and <STRONG>noraw</STRONG> routines place the terminal into or out of raw mode.
+ Raw mode is similar to <STRONG>cbreak</STRONG> mode, in that characters typed are imme-
+ diately 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>.
- <STRONG>halfdelay</STRONG>
- returns an error if its parameter is outside
- the range 1..255.
+</PRE><H3><a name="h3-noqiflush">noqiflush</a></H3><PRE>
+ 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>termios(3)</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.
-</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 <STRONG>raw</STRONG>
- call turned it off as a side-effect. For best portabili-
- ty, set echo or noecho explicitly just after initializa-
- tion, even if your program remains in cooked mode.
-
- When <STRONG>keypad</STRONG> is first enabled, ncurses loads the key-defi-
- nitions for the current terminal description. If the ter-
- minal description includes extended string capabilities,
- e.g., from using the <STRONG>-x</STRONG> option of tic, then ncurses also
- defines keys for the capabilities whose names begin with
- "k". The corresponding keycodes are generated and (de-
- pending on previous loads of terminal descriptions) may
- differ from one execution of a program to the next. The
- generated keycodes are recognized by the <STRONG>keyname</STRONG> function
- (which will then return a name beginning with "k" denoting
- the terminfo capability name rather than "K", used for
- curses key-names). On the other hand, an application can
- use <STRONG>define_key</STRONG> to establish a specific keycode for a given
- string. This makes it possible for an application to
- check for an extended capability's presence with <EM>tigetstr</EM>,
- and reassign the keycode to match its own needs.
-
- Low-level applications can use <STRONG>tigetstr</STRONG> to obtain the def-
- inition of any particular string capability. Higher-level
- applications which use the curses <STRONG>wgetch</STRONG> and similar func-
- tions to return keycodes rely upon the order in which the
- strings are loaded. If more than one key definition has
- the same string value, then <STRONG>wgetch</STRONG> can return only one
- keycode. Most curses implementations (including ncurses)
- load key definitions in the order defined by the array of
- string capability names. The last key to be loaded deter-
- mines the keycode which will be returned. In ncurses, you
- may also have extended capabilities interpreted as key
- definitions. These are loaded after the predefined keys,
- and if a capability's value is the same as a previously-
- loaded key definition, the later definition is the one
- used.
+</PRE><H3><a name="h3-timeout_wtimeout">timeout/wtimeout</a></H3><PRE>
+ 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 (i.e.,
+ waits indefinitely for input). If <EM>delay</EM> is zero, then non-blocking
+ read is used (i.e., 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 routines 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).
+
+
+</PRE><H3><a name="h3-typeahead">typeahead</a></H3><PRE>
+ The <STRONG>curses</STRONG> library does "line-breakout optimization" by looking for ty-
+ peahead periodically while updating the screen. If input is found, and
+ it is coming from a tty, the current update is postponed until <STRONG>re-</STRONG>
+ <STRONG><A HREF="refresh.3x.html">fresh(3x)</A></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><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All 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, unless otherwise noted in the preceding routine descrip-
+ tions.
+
+ X/Open does not define any error conditions. In this implementation,
+ functions with a window parameter will return an error if it is null.
+ Any function will also return an error if the terminal was not initial-
+ ized. Also,
-</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
+ <STRONG>halfdelay</STRONG>
+ returns an error if its parameter is outside the range
+ 1..255.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4.
+
+ The ncurses library obeys the XPG4 standard and the historical 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
+ <STRONG>raw</STRONG> call turned it off as a side-effect. For best portability, set
+ echo or noecho explicitly just after initialization, even if your pro-
+ gram remains in cooked mode.
+
+ When <STRONG>keypad</STRONG> is first enabled, ncurses loads the key-definitions for the
+ current terminal description. If the terminal description includes ex-
+ tended string capabilities, e.g., from using the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>, then
+ ncurses also defines keys for the capabilities whose names begin with
+ "k". The corresponding keycodes are generated and (depending on previ-
+ ous loads of terminal descriptions) may differ from one execution of a
+ program to the next. The generated keycodes are recognized by the <STRONG>key-</STRONG>
+ <STRONG>name</STRONG> function (which will then return a name beginning with "k" denot-
+ ing the terminfo capability name rather than "K", used for curses key-
+ names). On the other hand, an application can use <STRONG>define_key</STRONG> to estab-
+ lish a specific keycode for a given string. This makes it possible for
+ an application to check for an extended capability's presence with
+ <STRONG>tigetstr</STRONG>, and reassign the keycode to match its own needs.
+
+ Low-level applications can use <STRONG>tigetstr</STRONG> to obtain the definition of any
+ particular string capability. Higher-level applications which use the
+ curses <STRONG>wgetch</STRONG> and similar functions to return keycodes rely upon the
+ order in which the strings are loaded. If more than one key definition
+ has the same string value, then <STRONG>wgetch</STRONG> can return only one keycode.
+ Most curses implementations (including ncurses) load key definitions in
+ the order defined by the array of string capability names. The last
+ key to be loaded determines the keycode which will be returned. In
+ ncurses, you may also have extended capabilities interpreted as key
+ definitions. These are loaded after the predefined keys, and if a ca-
+ pability's value is the same as a previously-loaded key definition, the
+ later definition is the one used.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ Note that <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>meta</STRONG>, <STRONG>nodelay</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="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG>termio(7)</STRONG>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG>de-</STRONG>
+ <STRONG><A HREF="define_key.3x.html">fine_key(3x)</A></STRONG>, <STRONG>termios(3)</STRONG>
- <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
+ <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-cbreak">cbreak</a></li>
+<li><a href="#h3-echo_noecho">echo/noecho</a></li>
+<li><a href="#h3-halfdelay">halfdelay</a></li>
+<li><a href="#h3-intrflush">intrflush</a></li>
+<li><a href="#h3-keypad">keypad</a></li>
+<li><a href="#h3-meta">meta</a></li>
+<li><a href="#h3-nodelay">nodelay</a></li>
+<li><a href="#h3-raw_noraw">raw/noraw</a></li>
+<li><a href="#h3-noqiflush">noqiflush</a></li>
+<li><a href="#h3-timeout_wtimeout">timeout/wtimeout</a></li>
+<li><a href="#h3-typeahead">typeahead</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_ins_wch.3x.html b/doc/html/man/curs_ins_wch.3x.html
index afd50cd3312f..05b43675996d 100644
--- a/doc/html/man/curs_ins_wch.3x.html
+++ b/doc/html/man/curs_ins_wch.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2017,2019 Free 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,78 +26,75 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_ins_wch.3x,v 1.5 2010/12/04 18:38:55 tom Exp @
+ * @Id: curs_ins_wch.3x,v 1.7 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_ins_wch 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_ins_wch 3x</H1>
-<HR>
+<H1 class="no-header">curs_ins_wch 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG> <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
+<STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG> <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>ins_wch</STRONG>, <STRONG>mvins_wch</STRONG>, <STRONG>mvwins_wch</STRONG>, <STRONG>wins_wch</STRONG> - insert a com-
- plex character and rendition into a window
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>ins_wch</STRONG>, <STRONG>mvins_wch</STRONG>, <STRONG>mvwins_wch</STRONG>, <STRONG>wins_wch</STRONG> - insert a complex character
+ and rendition into a window
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
#include &lt;curses.h&gt;
<STRONG>int</STRONG> <STRONG>ins_wch(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>wins_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win,</EM> <EM>const</EM> <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM> <EM>*wch</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>mvins_wch(int</STRONG> <EM>y,</EM> <EM>int</EM> <EM>x,</EM> <EM>const</EM> <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM> <EM>*wch</EM><STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwins_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win,</EM> <EM>int</EM> <EM>y,</EM> <EM>int</EM> <EM>x,</EM> <EM>const</EM> <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>
- <EM>*wch</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvwins_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win,</EM> <EM>int</EM> <EM>y,</EM> <EM>int</EM> <EM>x,</EM> <EM>const</EM> <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM> <EM>*wch</EM><STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These routines, insert the complex character <EM>wch</EM> with ren-
- dition before the character under the cursor. All charac-
- ters to the right of the cursor are moved one space to the
- right, with the possibility of the rightmost character on
- the line being lost. The insertion operation does not
- change the cursor position.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These routines, insert the complex character <EM>wch</EM> with rendition before
+ the character under the cursor. All characters to the right of the
+ cursor are moved one space to the right, with the possibility of the
+ rightmost character on the line being lost. The insertion operation
+ does not change the cursor position.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- If successful, these functions return OK. If not, they
- return ERR.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ If successful, these functions return <STRONG>OK</STRONG>. If not, they return <STRONG>ERR</STRONG>.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</PRE>
-<H2>ERRORS</H2><PRE>
+</PRE><H2><a name="h2-ERRORS">ERRORS</a></H2><PRE>
No errors are defined.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>.
- <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
+ <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-ERRORS">ERRORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_ins_wstr.3x.html b/doc/html/man/curs_ins_wstr.3x.html
index 8545bf134316..f04aa36a816e 100644
--- a/doc/html/man/curs_ins_wstr.3x.html
+++ b/doc/html/man/curs_ins_wstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2017,2019 Free 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,33 +26,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_ins_wstr.3x,v 1.7 2012/11/03 23:03:59 tom Exp @
+ * @Id: curs_ins_wstr.3x,v 1.9 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_ins_wstr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_ins_wstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_ins_wstr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>ins_wstr</STRONG>, <STRONG>ins_nwstr</STRONG>, <STRONG>wins_wstr</STRONG>, <STRONG>wins_nwstr</STRONG>, <STRONG>mvins_wstr</STRONG>,
- <STRONG>mvins_nwstr</STRONG>, <STRONG>mvwins_wstr</STRONG>, <STRONG>mvwins_nwstr</STRONG> - insert a wide-
- character string into a curses window
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>ins_wstr</STRONG>, <STRONG>ins_nwstr</STRONG>, <STRONG>wins_wstr</STRONG>, <STRONG>wins_nwstr</STRONG>, <STRONG>mvins_wstr</STRONG>, <STRONG>mvins_nwstr</STRONG>,
+ <STRONG>mvwins_wstr</STRONG>, <STRONG>mvwins_nwstr</STRONG> - insert a wide-character string into a
+ curses window
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>ins_wstr(const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr);</EM>
@@ -66,64 +64,59 @@
<STRONG>int</STRONG> <STRONG>mvwins_nwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These routines insert a <STRONG>wchar_t</STRONG> character string (as many
- characters as will fit on the line) before the character
- under the cursor. All characters to the right of the cur-
- sor are shifted right, with the possibility of the right-
- most characters on the line being lost. No wrapping is
- performed. 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 substring of at most
- <EM>n</EM> <STRONG>wchar_t</STRONG> characters. If <EM>n</EM> is less than 1, the entire
- string is inserted.
-
- If a character in <EM>wstr</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>wstr</EM> is another control character, it is
- drawn in the <STRONG>^</STRONG><EM>X</EM> notation. Calling <STRONG>win_wch</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 charac-
- ter.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These routines insert a <STRONG>wchar_t</STRONG> character string (as many characters as
+ will fit on the line) before the character under the cursor. All char-
+ acters to the right of the cursor are shifted right, with the possibil-
+ ity of the rightmost characters on the line being lost. No wrapping is
+ performed. 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 substring of at most <EM>n</EM> <STRONG>wchar_t</STRONG> characters. If <EM>n</EM> is less than
+ 1, the entire string is inserted.
+ If a character in <EM>wstr</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>wstr</EM> is another control character, it
+ is drawn in the <STRONG>^</STRONG><EM>X</EM> notation. Calling <STRONG>win_wch</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>NOTES</H2><PRE>
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
Note that all but wins_nwstr may be macros.
- If the first character in the string is a nonspacing char-
- acter, these functions will fail. XSI does not define
- what will happen if a nonspacing character follows a con-
- trol character.
+ If the first character in the string is a nonspacing character, these
+ functions will fail. XSI does not define what will happen if a non-
+ spacing character follows a control character.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- Upon successful completion, these functions return OK.
- Otherwise, they return ERR.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Upon successful completion, these functions return <STRONG>OK</STRONG>. Otherwise, they
+ return <STRONG>ERR</STRONG>.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>, <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>,
- <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>, <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>.
- <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
+ <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_insch.3x.html b/doc/html/man/curs_insch.3x.html
index 559254e2befd..086ff7481bfd 100644
--- a/doc/html/man/curs_insch.3x.html
+++ b/doc/html/man/curs_insch.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,32 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_insch.3x,v 1.13 2010/12/04 18:38:55 tom Exp @
+ * @Id: curs_insch.3x,v 1.16 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_insch 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_insch 3x</H1>
-<HR>
+<H1 class="no-header">curs_insch 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG> <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
+<STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG> <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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><a name="h2-NAME">NAME</a></H2><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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>insch(chtype</STRONG> <STRONG>ch);</STRONG>
@@ -61,57 +59,56 @@
<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><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These routines insert the character <EM>ch</EM> before the character under the
+ cursor. All characters to the right of the cursor are moved one space
+ to the right, with the possibility of the rightmost character on the
+ line being lost. The insertion operation does not change the cursor
+ position.
-</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><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All 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, unless otherwise noted in the preceding routine descrip-
+ tions.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</PRE>
-<H2>NOTES</H2><PRE>
- These routines do not necessarily imply use of a hardware
- insert character feature.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ These routines do not necessarily imply use of a hardware insert char-
+ acter 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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
- Comparable functions in the wide-character (ncursesw)
- library are described in <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>.
+ Comparable functions in the wide-character (ncursesw) library are
+ described in <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>.
- <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
+ <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_insstr.3x.html b/doc/html/man/curs_insstr.3x.html
index 91e533f29cbb..e8b0d9eadb6b 100644
--- a/doc/html/man/curs_insstr.3x.html
+++ b/doc/html/man/curs_insstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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,33 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_insstr.3x,v 1.21 2010/12/04 18:38:55 tom Exp @
+ * @Id: curs_insstr.3x,v 1.23 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_insstr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_insstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_insstr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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><a name="h2-NAME">NAME</a></H2><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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</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>
@@ -62,70 +59,67 @@
<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>
+ <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
- functions with <EM>n</EM> as the last argument insert a leading
- substring of at most <EM>n</EM> characters. If <EM>n</EM>&lt;=0, then the
- entire string is inserted.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These routines insert a character string (as many characters 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 characters on the line being lost. The cursor position
+ does not change (after moving to <EM>y</EM>, <EM>x</EM>, if specified). The functions
+ with <EM>n</EM> as the last argument insert a leading substring of at most <EM>n</EM>
+ characters. If <EM>n</EM>&lt;=0, then the entire string is inserted.
Special characters are handled as in <STRONG>addch</STRONG>.
-</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><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All 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, unless otherwise noted in the preceding routine descrip-
+ tions.
- X/Open defines no error conditions. In this implementa-
- tion, if the window parameter is null or the str parameter
- is null, an error is returned.
+ X/Open defines no error conditions. In this implementation, if the
+ window parameter is null or the str parameter is null, an error is
+ returned.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</PRE>
-<H2>NOTES</H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></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.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4,
+ which adds const qualifiers to the arguments.
- The Single Unix Specification, Version 2 states that
- <STRONG>insnstr</STRONG> and <STRONG>winsnstr</STRONG> perform wrapping. This is probably
- an error, since it makes this group of functions inconsis-
- tent. Also, no implementation of curses documents this
- inconsistency.
+ The Single Unix Specification, Version 2 states that <STRONG>insnstr</STRONG> and <STRONG>win-</STRONG>
+ <STRONG>snstr</STRONG> perform wrapping. This is probably an error, since it makes this
+ group of functions inconsistent. Also, no implementation of curses
+ documents this inconsistency.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(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_insstr.3x.html">curs_insstr(3x)</A></STRONG>
+ <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_instr.3x.html b/doc/html/man/curs_instr.3x.html
index 46c464d9e424..99d5965777f9 100644
--- a/doc/html/man/curs_instr.3x.html
+++ b/doc/html/man/curs_instr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free 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,33 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_instr.3x,v 1.16 2010/12/04 18:38:55 tom Exp @
+ * @Id: curs_instr.3x,v 1.19 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_instr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_instr 3x</H1>
-<HR>
+<H1 class="no-header">curs_instr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
+<STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>instr</STRONG>, <STRONG>innstr</STRONG>, <STRONG>winstr</STRONG>, <STRONG>winnstr</STRONG>, <STRONG>mvinstr</STRONG>, <STRONG>mvinnstr</STRONG>, <STRONG>mvwinstr</STRONG>, <STRONG>mvwinnstr</STRONG>
+ - get a string of characters from a <STRONG>curses</STRONG> window
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>instr(char</STRONG> <STRONG>*str);</STRONG>
@@ -63,61 +60,62 @@
<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>
+ <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><a name="h2-DESCRIPTION">DESCRIPTION</a></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 characters. The four functions with <EM>n</EM> as the last
+ argument return a leading substring at most <EM>n</EM> characters long (exclu-
+ sive 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><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All of the functions return <STRONG>ERR</STRONG> upon failure, or the number of charac-
+ ters actually read into the string.
- X/Open defines no error conditions. In this implementa-
- tion, if the window parameter is null or the str parameter
- is null, a zero is returned.
+ X/Open Curses defines no error conditions. In this implementation:
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ <STRONG>o</STRONG> If the <EM>win</EM> parameter is null, an error is returned,
+ <STRONG>o</STRONG> If the <EM>chstr</EM> parameter is null, an error is returned,
-</PRE>
-<H2>NOTES</H2><PRE>
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
Note that all routines except <STRONG>winnstr</STRONG> may be macros.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- SVr4 does not document whether a length limit includes or
- excludes the trailing NUL.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ 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.
+ The ncurses library extends the XSI description by allowing 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>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
- <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
+ <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_inwstr.3x.html b/doc/html/man/curs_inwstr.3x.html
index 3a8ce138976d..bbc9775d2315 100644
--- a/doc/html/man/curs_inwstr.3x.html
+++ b/doc/html/man/curs_inwstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2018,2019 Free 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,89 +26,91 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_inwstr.3x,v 1.8 2012/11/03 23:03:59 tom Exp @
+ * @Id: curs_inwstr.3x,v 1.12 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_inwstr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_inwstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_inwstr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>inwstr</STRONG>, <STRONG>innwstr</STRONG>, <STRONG>winwstr</STRONG>, <STRONG>winnwstr</STRONG>, <STRONG>mvinwstr</STRONG>, <STRONG>mvinnwstr</STRONG>,
- <STRONG>mvwinwstr</STRONG>, <STRONG>mvwinnwstr</STRONG> - get a string of <STRONG>wchar_t</STRONG> characters
- from a curses window
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>inwstr</STRONG>, <STRONG>innwstr</STRONG>, <STRONG>winwstr</STRONG>, <STRONG>winnwstr</STRONG>, <STRONG>mvinwstr</STRONG>, <STRONG>mvinnwstr</STRONG>, <STRONG>mvwinwstr</STRONG>,
+ <STRONG>mvwinnwstr</STRONG> - get a string of <STRONG>wchar_t</STRONG> characters from a curses window
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
- <STRONG>int</STRONG> <STRONG>inwstr(wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>innwstr(wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>winwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>winnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvinwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvinnwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwinwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwinnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>inwstr(wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>innwstr(wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>winwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>winnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvinwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvinnwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvwinwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvwinnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These routines return a string of <STRONG>wchar_t</STRONG> characters in
- <EM>wstr</EM>, extracted starting at the current cursor position in
- the named window. Attributes are stripped from the char-
- acters. The four functions with <EM>n</EM> as the last argument
- return a leading substring at most <EM>n</EM> bytes long (exclusive
- of the trailing NUL). Transfer stops at the end of the
- current line, or when <EM>n</EM> bytes have been stored at the
- location referenced by <EM>wstr</EM>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These routines return a string of <STRONG>wchar_t</STRONG> wide characters in <EM>wstr</EM>,
+ extracted starting at the current cursor position in the named window.
- If the size <EM>n</EM> is not large enough to store a complete
- character, an error is generated.
+ The four functions with <EM>n</EM> as the last argument return a leading sub-
+ string at most <EM>n</EM> characters long (exclusive of the trailing NUL).
+ Transfer stops at the end of the current line, or when <EM>n</EM> characters
+ have been stored at the location referenced by <EM>wstr</EM>.
+ If the size <EM>n</EM> is not large enough to store a complete complex charac-
+ ter, an error is generated.
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that all routines except <STRONG>winnwstr</STRONG> may be macros.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ All routines except <STRONG>winnwstr</STRONG> may be macros.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- All routines return <STRONG>ERR</STRONG> upon failure. Upon successful com-
- pletion, the *<STRONG>inwstr</STRONG> routines return <STRONG>OK</STRONG>, and the *<STRONG>innwstr</STRONG>
- routines return the number of characters read into the
- string.
+ Each cell in the window holds a complex character (i.e., base- and com-
+ bining-characters) together with attributes and color. These functions
+ store only the wide characters, ignoring attributes and color. Use
+ <STRONG>in_wchstr</STRONG> to return the complex characters from a window.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All routines return <STRONG>ERR</STRONG> upon failure. Upon successful completion, the
+ *<STRONG>inwstr</STRONG> routines return <STRONG>OK</STRONG>, and the *<STRONG>innwstr</STRONG> routines return the number
+ of characters read into the string.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>, <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
- <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
+ <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_kernel.3x.html b/doc/html/man/curs_kernel.3x.html
index fb0488241894..4238ed8cb38a 100644
--- a/doc/html/man/curs_kernel.3x.html
+++ b/doc/html/man/curs_kernel.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,33 +26,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_kernel.3x,v 1.19 2010/12/04 18:38:55 tom Exp @
+ * @Id: curs_kernel.3x,v 1.27 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_kernel 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_kernel 3x</H1>
-<HR>
+<H1 class="no-header">curs_kernel 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
+<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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>ripoffline</STRONG>, <STRONG>curs_set</STRONG>, <STRONG>napms</STRONG> - low-level <STRONG>curses</STRONG> routines
+</PRE><H2><a name="h2-NAME">NAME</a></H2><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>ripoffline</STRONG>, <STRONG>curs_set</STRONG>, <STRONG>napms</STRONG> - low-
+ level <STRONG>curses</STRONG> routines
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>def_prog_mode(void);</STRONG>
@@ -62,145 +60,168 @@
<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>
+ <STRONG>void</STRONG> <STRONG>getsyx(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
+ <STRONG>void</STRONG> <STRONG>setsyx(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>ripoffline(int</STRONG> <EM>line</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>init</EM><STRONG>)(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>int));</STRONG>
+ <STRONG>int</STRONG> <STRONG>curs_set(int</STRONG> <EM>visibility</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>napms(int</STRONG> <EM>ms</EM><STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The following routines give low-level access to various
- <STRONG>curses</STRONG> capabilities. These 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>re-</STRONG>
- <STRONG>set_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> in-
- clude 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 li-
- brary routine, which manipulates <STRONG>curses</STRONG> windows but does
- not want to change the current position of the program's
- cursor. The library routine would call <STRONG>getsyx</STRONG> at the be-
- ginning, 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 facili-
- ty 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>&lt;curses.h&gt;</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 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> re-
- quested, the previous <EM>cursor</EM> state is returned; otherwise,
- <STRONG>ERR</STRONG> is returned.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The following routines give low-level access to various <STRONG>curses</STRONG> capabil-
+ ities. These routines typically are used inside library routines.
+
+
+</PRE><H3><a name="h3-def_prog_mode_-def_shell_mode">def_prog_mode, def_shell_mode</a></H3><PRE>
+ 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>.
+
+
+</PRE><H3><a name="h3-reset_prog_mode_-reset_shell_mode">reset_prog_mode, reset_shell_mode</a></H3><PRE>
+ 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><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> and, after an <STRONG>endwin</STRONG>, by <STRONG>doupdate</STRONG>, so
+ they normally are not called.
+
+
+</PRE><H3><a name="h3-resetty_-savetty">resetty, savetty</a></H3><PRE>
+ The <STRONG>resetty</STRONG> and <STRONG>savetty</STRONG> routines save and restore the state of the ter-
+ minal 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>.
+
+
+</PRE><H3><a name="h3-getsyx">getsyx</a></H3><PRE>
+ The <STRONG>getsyx</STRONG> routine returns the current coordinates of the <EM>virtual</EM>
+ <EM>screen</EM> 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>.
+
+ Few applications will use this feature, most use <STRONG>getyx</STRONG> instead.
+
+
+</PRE><H3><a name="h3-setsyx">setsyx</a></H3><PRE>
+ The <STRONG>setsyx</STRONG> routine sets the <EM>virtual</EM> <EM>screen</EM> 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 routines <STRONG>getsyx</STRONG> and <STRONG>setsyx</STRONG>
+ are designed to be used by a library routine, which manipulates <STRONG>curses</STRONG>
+ windows but does not want to change the current position of the pro-
+ gram's 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 win-
+ dows, call <STRONG>setsyx</STRONG>, and then call <STRONG>doupdate</STRONG>.
+
+ Few applications will use this feature, most use <STRONG>wmove</STRONG> instead.
+
+</PRE><H3><a name="h3-ripoffline">ripoffline</a></H3><PRE>
+ The <STRONG>ripoffline</STRONG> routine provides access to the same facility 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, to pre-
+ pare these initial actions:
+
+ <STRONG>o</STRONG> If <EM>line</EM> is positive, a line is removed from the top of <STRONG>stdscr</STRONG>.
+
+ <STRONG>o</STRONG> if <EM>line</EM> is negative, a line is removed from the bottom.
+
+ When the resulting initialization is done inside <STRONG>initscr</STRONG>, the routine
+ <STRONG>init</STRONG> (supplied by the user) is called with two arguments:
+
+ <STRONG>o</STRONG> a window pointer to the one-line window that has been allocated and
+
+ <STRONG>o</STRONG> an integer with the number of columns in the window.
+
+ Inside this initialization routine, the integer variables <STRONG>LINES</STRONG> and
+ <STRONG>COLS</STRONG> (defined in <STRONG>&lt;curses.h&gt;</STRONG>) are not guaranteed to be accurate and <STRONG>wre-</STRONG>
+ <STRONG>fresh</STRONG> or <STRONG>doupdate</STRONG> must not be called. It is allowable to call <STRONG>wnoutre-</STRONG>
+ <STRONG>fresh</STRONG> during the initialization routine.
+
+ <STRONG>ripoffline</STRONG> can be called up to five times before calling <STRONG>initscr</STRONG> or
+ <STRONG>newterm</STRONG>.
+
+
+</PRE><H3><a name="h3-curs_set">curs_set</a></H3><PRE>
+ The <STRONG>curs_set</STRONG> routine sets the cursor state 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.
+
+
+</PRE><H3><a name="h3-napms">napms</a></H3><PRE>
The <STRONG>napms</STRONG> routine is used to sleep for <EM>ms</EM> milliseconds.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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.
+ <STRONG>curs_set</STRONG> returns the previous cursor state, or <STRONG>ERR</STRONG> if the requested
+ <EM>visibility</EM> is not supported.
- X/Open defines no error conditions. In this implementa-
- tion
+ X/Open defines no error conditions. In this implementation
- <STRONG>def_prog_mode</STRONG>, <STRONG>def_shell_mode</STRONG>, <STRONG>reset_prog_mode</STRONG>, <STRONG>re-</STRONG>
- <STRONG>set_shell_mode</STRONG>
- return an error if the terminal was not ini-
- tialized, or if the I/O call to obtain the
- terminal settings fails.
+ <STRONG>def_prog_mode</STRONG>, <STRONG>def_shell_mode</STRONG>, <STRONG>reset_prog_mode</STRONG>, <STRONG>reset_shell_mode</STRONG>
+ return an error if the terminal was not initialized, or if the I/O
+ call to obtain the terminal settings fails.
- <STRONG>ripoffline</STRONG>
- returns an error if the maximum number of
- ripped-off lines exceeds the maximum (NRIPS =
- 5).
+ <STRONG>ripoffline</STRONG>
+ returns an error if the maximum number of ripped-off lines exceeds
+ the maximum (NRIPS = 5).
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>getsyx</STRONG> is a macro, so <STRONG>&amp;</STRONG> is not necessary before
- the variables <EM>y</EM> and <EM>x</EM>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ Note that <STRONG>getsyx</STRONG> is a macro, so <STRONG>&amp;</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.
+ Older SVr4 man pages warn that the return value of <STRONG>curs_set</STRONG> "is cur-
+ rently 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 <STRONG>curs_set</STRONG> in <STRONG>endwin</STRONG> if
- <STRONG>curs_set</STRONG> has been called to make the cursor other than
- normal, i.e., either invisible or very visible. There is
- no way for ncurses to determine the initial cursor state
- to restore that.
+ Both ncurses and SVr4 will call <STRONG>curs_set</STRONG> in <STRONG>endwin</STRONG> if <STRONG>curs_set</STRONG> has been
+ called to make the cursor other than normal, i.e., either invisible 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 <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.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The <EM>virtual</EM> <EM>screen</EM> 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
- macros with no documented semantics for the return value.
+ The SVr4 documentation describes <STRONG>setsyx</STRONG> and <STRONG>getsyx</STRONG> as having return
+ type int. This is misleading, as they are macros with no documented
+ semantics for the return value.
-</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>, <STRONG>curs_re-</STRONG>
- <STRONG><A HREF="curs_refresh.3x.html">fresh(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>, <STRONG>curs_vari-</STRONG>
- <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>, <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>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
- <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
+ <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-def_prog_mode_-def_shell_mode">def_prog_mode, def_shell_mode</a></li>
+<li><a href="#h3-reset_prog_mode_-reset_shell_mode">reset_prog_mode, reset_shell_mode</a></li>
+<li><a href="#h3-resetty_-savetty">resetty, savetty</a></li>
+<li><a href="#h3-getsyx">getsyx</a></li>
+<li><a href="#h3-setsyx">setsyx</a></li>
+<li><a href="#h3-ripoffline">ripoffline</a></li>
+<li><a href="#h3-curs_set">curs_set</a></li>
+<li><a href="#h3-napms">napms</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_legacy.3x.html b/doc/html/man/curs_legacy.3x.html
index 16f7d4d7547a..1fea49098c60 100644
--- a/doc/html/man/curs_legacy.3x.html
+++ b/doc/html/man/curs_legacy.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2017,2019 Free 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,95 +26,109 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_legacy.3x,v 1.5 2010/12/04 18:38:55 tom Exp @
+ * @Id: curs_legacy.3x,v 1.9 2019/03/23 21:51:12 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_legacy 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_legacy 3x</H1>
-<HR>
+<H1 class="no-header">curs_legacy 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG> <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>
+<STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG> <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- getattrs - get <STRONG>curses</STRONG> cursor and window coordinates,
- attributes
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ curs_legacy - get <STRONG>curses</STRONG> cursor and window coordinates, attributes
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
- <STRONG>int</STRONG> <STRONG>getattrs(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>getbegx(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>getbegy(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>getcurx(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>getcury(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>getmaxx(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>getmaxy(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>getparx(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>getpary(WINDOW</STRONG> <STRONG>*win);</STRONG>
+ <STRONG>int</STRONG> <STRONG>getattrs(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
+ <STRONG>int</STRONG> <STRONG>getbegx(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
+ <STRONG>int</STRONG> <STRONG>getbegy(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
+ <STRONG>int</STRONG> <STRONG>getcurx(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
+ <STRONG>int</STRONG> <STRONG>getcury(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
+ <STRONG>int</STRONG> <STRONG>getmaxx(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
+ <STRONG>int</STRONG> <STRONG>getmaxy(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
+ <STRONG>int</STRONG> <STRONG>getparx(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
+ <STRONG>int</STRONG> <STRONG>getpary(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>getbegy</STRONG> and <STRONG>getbegx</STRONG> functions return the same data as
- <STRONG>getbegyx</STRONG>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These legacy functions are simpler to use than the X/Open Curses func-
+ tions:
- The <STRONG>getcury</STRONG> and <STRONG>getcurx</STRONG> functions return the same data as
- <STRONG>getyx</STRONG>.
+ <STRONG>o</STRONG> The <STRONG>getattrs</STRONG> function returns the same attribute data as <STRONG>wattr_get</STRONG>.
- The <STRONG>getmaxy</STRONG> and <STRONG>getmaxx</STRONG> functions return the same data as
- <STRONG>getmaxyx</STRONG>.
+ However, <STRONG>getattrs</STRONG> returns an integer (actually a <STRONG>chtype</STRONG>), while
+ <STRONG>wattr_get</STRONG> returns the current color pair in a separate parameter.
+ In the wide-character library configuration, color pairs may not
+ fit into a <STRONG>chtype</STRONG>, so <STRONG>wattr_get</STRONG> is the only way to obtain the color
+ information.
- The <STRONG>getpary</STRONG> and <STRONG>getparx</STRONG> functions return the same data as
- <STRONG>getparyx</STRONG>.
+ Because <STRONG>getattrs</STRONG> returns the attributes in a single parameter, it
+ would not be possible for an application to distinguish that from
+ <STRONG>ERR</STRONG> (a <EM>-1</EM>). If the window parameter is null, <STRONG>getattrs</STRONG> returns
+ <STRONG>A_NORMAL</STRONG> (zero).
+ <STRONG>o</STRONG> The <STRONG>getbegy</STRONG> and <STRONG>getbegx</STRONG> functions return the same data as <STRONG>getbegyx</STRONG>.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- These functions return an integer, or ERR if the window
- parameter is null.
+ <STRONG>o</STRONG> The <STRONG>getcury</STRONG> and <STRONG>getcurx</STRONG> functions return the same data as <STRONG>getyx</STRONG>.
+ <STRONG>o</STRONG> The <STRONG>getmaxy</STRONG> and <STRONG>getmaxx</STRONG> functions return the same data as <STRONG>getmaxyx</STRONG>.
-</PRE>
-<H2>NOTES</H2><PRE>
- All of these interfaces are provided as macros and func-
- tions. The macros are suppressed (and only the functions
- provided) when <STRONG>NCURSES_OPAQUE</STRONG> is defined. The standard
- forms such as <STRONG>getyx</STRONG> must be implemented as macros, and (in
- this implementation) are defined in terms of the functions
- described here, to avoid reliance on internal details of
- the WINDOW structure.
+ <STRONG>o</STRONG> The <STRONG>getpary</STRONG> and <STRONG>getparx</STRONG> functions return the same data as <STRONG>getparyx</STRONG>.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions were supported on Version 7, BSD or System
- V implementations.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Except as noted, these functions return an integer, or <STRONG>ERR</STRONG> if the win-
+ dow parameter is null.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ All of these interfaces are provided as macros and functions. The
+ macros are suppressed (and only the functions provided) when
+ <STRONG>NCURSES_OPAQUE</STRONG> is defined. The standard forms such as <STRONG>getyx</STRONG> must be
+ implemented as macros, and (in this implementation) are defined in
+ terms of the functions described here, to avoid reliance on internal
+ details of the WINDOW structure.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions were supported on Version 7, BSD or System V implemen-
+ tations. None of those implementations checked the window parameter.
+
+ The <STRONG>getattrs</STRONG> function and macro are defined to return a (signed) inte-
+ ger for compatibility with those implementations although an unsigned
+ type would have been more appropriate.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>
- <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>
+ <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_memleaks.3x.html b/doc/html/man/curs_memleaks.3x.html
index 7b3d8e162e1f..252a9807a6fc 100644
--- a/doc/html/man/curs_memleaks.3x.html
+++ b/doc/html/man/curs_memleaks.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2017,2019 Free 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,85 +26,108 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_memleaks.3x,v 1.3 2010/12/04 18:40:45 tom Exp @
+ * @Id: curs_memleaks.3x,v 1.7 2019/12/14 23:21:32 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_memleaks 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_memleaks 3x</H1>
-<HR>
+<H1 class="no-header">curs_memleaks 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG> <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>
+<STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG> <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>_nc_freeall</STRONG> <STRONG>_nc_free_and_exit</STRONG> - <STRONG>curses</STRONG> memory-leak
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>_nc_freeall</STRONG>, <STRONG>_nc_free_and_exit</STRONG>, <STRONG>_nc_free_tinfo</STRONG> - <STRONG>curses</STRONG> memory-leak
checking
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+ <STRONG>void</STRONG> <STRONG>exit_curses(int);</STRONG>
+ <STRONG>void</STRONG> <STRONG>exit_terminfo(int);</STRONG>
+
+ /* deprecated */
<STRONG>void</STRONG> <STRONG>_nc_freeall(void);</STRONG>
<STRONG>void</STRONG> <STRONG>_nc_free_and_exit(int);</STRONG>
+ <STRONG>void</STRONG> <STRONG>_nc_free_tinfo(int);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These functions are used to simplify analysis of memory
- leaks in the ncurses library. They are normally not
- available; they must be configured into the library at
- build time using the <STRONG>--disable-leaks</STRONG> option. That com-
- piles-in code that frees memory that normally would not be
- freed.
-
- Any implementation of curses must not free the memory as-
- sociated with a screen, since (even after calling <STRONG>endwin</STRONG>),
- it must be available for use in the next call to <STRONG>refresh</STRONG>.
- There are also chunks of memory held for performance rea-
- sons. That makes it hard to analyze curses applications
- for memory leaks. To work around this, one can build a
- debugging version of the ncurses library which frees those
- chunks which it can, and provides these functions to free
- all of the memory allocated by the ncurses library.
-
- The _nc_free_and_exit function is the preferred one since
- some of the memory which is freed may be required for the
- application to continue running. Its parameter is the
- code to pass to the exit routine.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These functions are used to simplify analysis of memory leaks in the
+ ncurses library.
+ Any implementation of curses must not free the memory associated with a
+ screen, since (even after calling <STRONG>endwin</STRONG>), it must be available for use
+ in the next call to <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>. There are also chunks of memory held
+ for performance reasons. That makes it hard to analyze curses applica-
+ tions for memory leaks. When using the specially configured debugging
+ version of the ncurses library, applications can call functions which
+ free those chunks of memory, simplifying the process of memory-leak
+ checking.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
+ Some of the functions are named with a "_nc_" prefix because they are
+ not intended for use in the non-debugging library:
+
+ <STRONG>_nc_freeall</STRONG>
+ This frees (almost) all of the memory allocated by ncurses.
+
+ <STRONG>_nc_free_and_exit</STRONG>
+ This frees the memory allocated by ncurses (like <STRONG>_nc_freeall</STRONG>), and
+ exits the program. It is preferred over <STRONG>_nc_freeall</STRONG> since some of
+ that memory may be required to keep the application running. Sim-
+ ply exiting (with the given exit-code) is safer.
+
+ <STRONG>_nc_free_tinfo</STRONG>
+ Use this function if only the low-level terminfo functions (and
+ corresponding library) are used. Like <STRONG>_nc_free_and_exit</STRONG>, it exits
+ the program after freeing memory.
+
+ The functions prefixed "_nc" are normally not available; they must be
+ configured into the library at build time using the <STRONG>--disable-leaks</STRONG> op-
+ tion. That compiles-in code that frees memory that normally would not
+ be freed.
+
+ The <STRONG>exit_curses</STRONG> and <STRONG>exit_terminfo</STRONG> functions call <STRONG>_nc_free_and_exit</STRONG> and
+ <STRONG>_nc_free_tinfo</STRONG> if the library is configured to support memory-leak
+ checking. If the library is not configured to support memory-leak
+ checking, they simply call <STRONG>exit</STRONG>.
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
These functions do not return a value.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions are not part of the XSI interface.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are not part of X/Open Curses; nor do other implementa-
+ tions of curses provide a similar feature.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
- <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>
+ <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_mouse.3x.html b/doc/html/man/curs_mouse.3x.html
index 72382d87d4ee..1d2a45de3f13 100644
--- a/doc/html/man/curs_mouse.3x.html
+++ b/doc/html/man/curs_mouse.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,33 +27,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_mouse.3x,v 1.39 2013/06/22 18:09:42 tom Exp @
+ * @Id: curs_mouse.3x,v 1.51 2019/07/13 23:45:12 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_mouse 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_mouse 3x</H1>
-<HR>
+<H1 class="no-header">curs_mouse 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>
+<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>has_mouse</STRONG>, <STRONG>getmouse</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>wenclose</STRONG>,
- <STRONG>mouse_trafo</STRONG>, <STRONG>wmouse_trafo</STRONG>, <STRONG>mouseinterval</STRONG> - mouse interface
- through curses
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>has_mouse</STRONG>, <STRONG>getmouse</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>wenclose</STRONG>, <STRONG>mouse_trafo</STRONG>,
+ <STRONG>wmouse_trafo</STRONG>, <STRONG>mouseinterval</STRONG> - mouse interface through curses
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>typedef</STRONG> <STRONG>unsigned</STRONG> <STRONG>long</STRONG> <STRONG>mmask_t;</STRONG>
@@ -66,35 +63,36 @@
<STRONG>}</STRONG> <STRONG>MEVENT;</STRONG>
<STRONG>bool</STRONG> <STRONG>has_mouse(void);</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(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
- <STRONG>bool</STRONG> <STRONG>mouse_trafo(int*</STRONG> <STRONG>pY,</STRONG> <STRONG>int*</STRONG> <STRONG>pX,</STRONG> <STRONG>bool</STRONG> <STRONG>to_screen);</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>
+ <STRONG>int</STRONG> <STRONG>getmouse(MEVENT</STRONG> <STRONG>*</STRONG><EM>event</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>ungetmouse(MEVENT</STRONG> <STRONG>*</STRONG><EM>event</EM><STRONG>);</STRONG>
+ <STRONG>mmask_t</STRONG> <STRONG>mousemask(mmask_t</STRONG> <EM>newmask</EM><STRONG>,</STRONG> <STRONG>mmask_t</STRONG> <STRONG>*</STRONG><EM>oldmask</EM><STRONG>);</STRONG>
+ <STRONG>bool</STRONG> <STRONG>wenclose(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
+ <STRONG>bool</STRONG> <STRONG>mouse_trafo(int*</STRONG> <EM>pY</EM><STRONG>,</STRONG> <STRONG>int*</STRONG> <EM>pX</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>to</EM><STRONG>_</STRONG><EM>screen</EM><STRONG>);</STRONG>
+ <STRONG>bool</STRONG> <STRONG>wmouse_trafo(const</STRONG> <STRONG>WINDOW*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>int*</STRONG> <EM>pY</EM><STRONG>,</STRONG> <STRONG>int*</STRONG> <EM>pX</EM><STRONG>,</STRONG>
+ <STRONG>bool</STRONG> <EM>to</EM><STRONG>_</STRONG><EM>screen</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mouseinterval(int</STRONG> <EM>erval</EM><STRONG>);</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 de-
- fault, 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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> input stream.
+
+
+</PRE><H3><a name="h3-mousemask">mousemask</a></H3><PRE>
+ 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.
+
+</PRE><H3><a name="h3-Mouse-events">Mouse events</a></H3><PRE>
Here are the mouse event type masks which may be defined:
<EM>Name</EM> <EM>Description</EM>
@@ -112,8 +110,8 @@
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
@@ -137,179 +135,254 @@
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 re-
- turn <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 corresponding data in the queue is marked
- invalid. A subsequent call to <STRONG>getmouse</STRONG> will retrieve the
- next older item from the queue.
-
- The <STRONG>ungetmouse</STRONG> function behaves analogously to <STRONG>ungetch</STRONG>.
- It pushes a <STRONG>KEY_MOUSE</STRONG> event onto the input queue, and as-
- sociates 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 coordinates
- relative to the given window or vice versa. Please remem-
- ber, that stdscr-relative coordinates are not always iden-
- tical to window-relative coordinates due to the mechanism
- to reserve lines on top or bottom of the screen for other
- purposes (see the <STRONG>ripoffline()</STRONG> and <STRONG>slk_init</STRONG> calls, for ex-
- ample). 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 window-relative co-
- ordinates and returned through the pointers. If the con-
- version was successful, the function returns <STRONG>TRUE</STRONG>. If one
- of the parameters 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> <STRONG>pX</STRONG> must reference window-relative coordi-
- nates. They are converted to stdscr-relative coordinates
- if the window <STRONG>win</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 converted coordinates if the transforma-
- tion was successful.
-
- The <STRONG>mouse_trafo</STRONG> function performs the same translation as
- <STRONG>wmouse_trafo</STRONG>, using stdscr for <STRONG>win</STRONG>.
-
- The <STRONG>mouseinterval</STRONG> function sets the maximum time (in thou-
- sands of a second) that can elapse between press and re-
- lease events for them to be recognized as a click. Use
- <STRONG>mouseinterval(0)</STRONG> to disable click resolution. This func-
- tion returns the previous interval value. Use <STRONG>mouseinter-</STRONG>
- <STRONG>val(-1)</STRONG> to obtain the interval without altering it. The
- default is one sixth of a second.
-
- The <STRONG>has_mouse</STRONG> function returns TRUE if the mouse driver
- has been successfully initialized.
-
- 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><H3><a name="h3-getmouse">getmouse</a></H3><PRE>
+ Once a class of mouse events has 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 coordi-
+ nates. The returned state mask will have exactly one bit set to indi-
+ cate the event type. The corresponding data in the queue is marked in-
+ valid. A subsequent call to <STRONG>getmouse</STRONG> will retrieve the next older item
+ from the queue.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- <STRONG>getmouse</STRONG> and <STRONG>ungetmouse</STRONG> return the integer <STRONG>ERR</STRONG> upon fail-
- ure or <STRONG>OK</STRONG> upon successful completion.
- <STRONG>getmouse</STRONG>
- returns an error. If no mouse driver was ini-
- tialized, or if the mask parameter is zero, it
- also returns an error if no more events remain
- in the queue.
+</PRE><H3><a name="h3-ungetmouse">ungetmouse</a></H3><PRE>
+ 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.
+
+
+</PRE><H3><a name="h3-wenclose">wenclose</a></H3><PRE>
+ The <STRONG>wenclose</STRONG> function tests whether a given pair of screen-relative
+ character-cell coordinates is enclosed by a given window, returning
+ <STRONG>TRUE</STRONG> if it is and <STRONG>FALSE</STRONG> otherwise. It is useful for determining what
+ subset of the screen windows enclose the location of a mouse event.
+
+
+</PRE><H3><a name="h3-wmouse_trafo">wmouse_trafo</a></H3><PRE>
+ The <STRONG>wmouse_trafo</STRONG> function transforms a given pair of coordinates from
+ stdscr-relative coordinates to coordinates relative to the given window
+ or vice versa. The resulting stdscr-relative coordinates are not al-
+ ways identical to window-relative coordinates due to the mechanism to
+ reserve lines on top or bottom of the screen for other purposes (see
+ the <STRONG>ripoffline</STRONG> and <STRONG><A HREF="curs_slk.3x.html">slk_init(3x)</A></STRONG> calls, for example).
+
+ <STRONG>o</STRONG> If the parameter <STRONG>to_screen</STRONG> is <STRONG>TRUE</STRONG>, the pointers <STRONG>pY,</STRONG> <STRONG>pX</STRONG> must refer-
+ ence the coordinates of a location inside the window <STRONG>win</STRONG>. They are
+ converted to window-relative coordinates and returned through the
+ pointers. If the conversion was successful, the function returns
+ <STRONG>TRUE</STRONG>.
+
+ <STRONG>o</STRONG> If one of the parameters was NULL or the location is not inside the
+ window, <STRONG>FALSE</STRONG> is returned.
+
+ <STRONG>o</STRONG> If <STRONG>to_screen</STRONG> is <STRONG>FALSE</STRONG>, the pointers <STRONG>pY,</STRONG> <STRONG>pX</STRONG> must reference window-
+ relative coordinates. They are converted to stdscr-relative coor-
+ dinates if the window <STRONG>win</STRONG> encloses this point. In this case the
+ function returns <STRONG>TRUE</STRONG>.
+
+ <STRONG>o</STRONG> If one of the parameters is NULL or the point is not inside the
+ window, <STRONG>FALSE</STRONG> is returned. The referenced coordinates are only re-
+ placed by the converted coordinates if the transformation was suc-
+ cessful.
+
+
+</PRE><H3><a name="h3-mouse_trafo">mouse_trafo</a></H3><PRE>
+ The <STRONG>mouse_trafo</STRONG> function performs the same translation as <STRONG>wmouse_trafo</STRONG>,
+ using stdscr for <STRONG>win</STRONG>.
+
+
+</PRE><H3><a name="h3-mouseinterval">mouseinterval</a></H3><PRE>
+ The <STRONG>mouseinterval</STRONG> function sets the maximum time (in thousands of a
+ second) that can elapse between press and release events for them to be
+ recognized as a click. Use <STRONG>mouseinterval(0)</STRONG> to disable click resolu-
+ tion. This function returns the previous interval value. Use <STRONG>mousein-</STRONG>
+ <STRONG>terval(-1)</STRONG> to obtain the interval without altering it. The default is
+ one sixth of a second.
+
+
+</PRE><H3><a name="h3-has_mouse">has_mouse</a></H3><PRE>
+ The <STRONG>has_mouse</STRONG> function returns <STRONG>TRUE</STRONG> if the mouse driver has been suc-
+ cessfully initialized.
+
+ 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>getstr</STRONG> that expects a linefeed for input-
+ loop termination.
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ <STRONG>getmouse</STRONG> and <STRONG>ungetmouse</STRONG> return the integer <STRONG>ERR</STRONG> upon failure or <STRONG>OK</STRONG> upon
+ successful completion:
+
+ <STRONG>getmouse</STRONG>
+ returns an error.
+
+ <STRONG>o</STRONG> If no mouse driver was initialized, or if the mask parameter is
+ zero,
- <STRONG>ungetmouse</STRONG>
- returns an error if the FIFO is full.
+ <STRONG>o</STRONG> It also returns an error if no more events remain in the queue.
+
+ <STRONG>ungetmouse</STRONG>
+ returns an error if the FIFO is full.
<STRONG>mousemask</STRONG> returns the mask of reportable events.
- <STRONG>mouseinterval</STRONG> returns the previous interval value, unless
- the terminal was not initialized. In that case, it re-
- turns the maximum interval value (166).
+ <STRONG>mouseinterval</STRONG> returns the previous interval value, unless the terminal
+ was not initialized. In that case, it returns the maximum interval
+ value (166).
- <STRONG>wenclose</STRONG> and <STRONG>wmouse_trafo</STRONG> are boolean functions returning
- <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG> depending on their test result.
+ <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. If the interface is changed, the value of
- <STRONG>NCURSES_MOUSE_VERSION</STRONG> will be incremented. These values
- for <STRONG>NCURSES_MOUSE_VERSION</STRONG> may be specified when configur-
- ing ncurses:
-
- 1 has definitions for reserved events. The mask
- uses 28 bits.
-
- 2 adds definitions for button 5, removes the defi-
- nitions for reserved events. The mask uses 29
- bits.
-
- 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 ei-
- ther xterm's built-in mouse-tracking API or platform-spe-
- cific drivers including
- Alessandro Rubini's gpm server
- FreeBSD sysmouse
- OS/2 EMX
- If you are using an unsupported configuration, mouse
- events will not be visible to <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> (and the <STRONG>mouse-</STRONG>
- <STRONG>mask</STRONG> function will always return <STRONG>0</STRONG>).
-
- If the terminfo entry contains a <STRONG>XM</STRONG> string, this is used
- in the xterm mouse driver to control the way the terminal
- is initialized for mouse operation. The default, if <STRONG>XM</STRONG> is
- not found, corresponds to private mode 1000 of xterm:
- \E[?1000%?%p1%{1}%=%th%el%;
- 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><a name="h2-PORTABILITY">PORTABILITY</a></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.
+ SVr4 curses had support for the mouse in a variant of <STRONG>xterm</STRONG>. It is
+ mentioned in a few places, but with no supporting documentation:
-</PRE>
-<H2>BUGS</H2><PRE>
- Mouse events under xterm will not in fact be ignored dur-
- ing cooked mode, if they have been enabled by <STRONG>mousemask</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, since they are inter-
- preted as a variety of function key. Your terminfo de-
- scription should have <STRONG>kmous</STRONG> set to "\E[M" (the beginning
- of the response from xterm for mouse clicks). Other val-
- ues for <STRONG>kmous</STRONG> are permitted, but under the same assump-
- tion, i.e., it is the beginning of the response.
-
- Because there are no standard terminal responses that
- would serve to identify terminals which support the xterm
- mouse protocol, <STRONG>ncurses</STRONG> assumes that if your $TERM envi-
- ronment variable contains "xterm", or <STRONG>kmous</STRONG> is defined in
- the terminal description, then the terminal may send mouse
- events.
+ <STRONG>o</STRONG> the "libcurses" manual page lists functions for this feature which
+ are prototyped in <STRONG>curses.h</STRONG>:
+ extern int mouse_set(long int);
+ extern int mouse_on(long int);
+ extern int mouse_off(long int);
+ extern int request_mouse_pos(void);
+ extern int map_button(unsigned long);
+ extern void wmouse_position(WINDOW *, int *, int *);
+ extern unsigned long getmouse(void), getbmap(void);
-</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_slk.3x.html">curs_slk(3x)</A></STRONG>, <STRONG>curs_vari-</STRONG>
- <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>.
+ <STRONG>o</STRONG> the "terminfo" manual page lists capabilities for the feature
+
+ buttons btns BT Number of buttons on the mouse
+ get_mouse getm Gm Curses should get button events
+ key_mouse kmous Km 0631, Mouse event has occurred
+ mouse_info minfo Mi Mouse status information
+ req_mouse_pos reqmp RQ Request mouse position report
+
+ <STRONG>o</STRONG> the interface made assumptions (as does ncurses) about the escape
+ sequences sent to and received from the terminal.
+
+ For instance the SVr4 curses library used the <STRONG>get_mouse</STRONG> capability
+ to tell the terminal which mouse button events it should send,
+ passing the mouse-button bit-mask to the terminal. Also, it could
+ ask the terminal where the mouse was using the <STRONG>req_mouse_pos</STRONG> capa-
+ bility.
+
+ Those features required a terminal which had been modified to work
+ with curses. They were not part of the X Consortium's xterm.
+
+ When developing the xterm mouse support for ncurses in September 1995,
+ Eric Raymond was uninterested in using the same interface due to its
+ lack of documentation. Later, in 1998, Mark Hesseling provided support
+ in PDCurses 2.3 using the SVr4 interface. PDCurses, however, does not
+ use video terminals, making it unnecessary to be concerned about com-
+ patibility with the escape sequences.
+
+ The feature macro <STRONG>NCURSES_MOUSE_VERSION</STRONG> is provided so the preprocessor
+ can be used to test whether these features are present. If the inter-
+ face is changed, the value of <STRONG>NCURSES_MOUSE_VERSION</STRONG> will be increment-
+ ed. These values for <STRONG>NCURSES_MOUSE_VERSION</STRONG> may be specified when con-
+ figuring ncurses:
+
+ 1 has definitions for reserved events. The mask uses 28 bits.
+
+ 2 adds definitions for button 5, removes the definitions for re-
+ served events. The mask uses 29 bits.
+
+ The order of the <STRONG>MEVENT</STRONG> structure members is not guaranteed. Addition-
+ al 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 platform-specific drivers including
+
+ <STRONG>o</STRONG> Alessandro Rubini's gpm server
+
+ <STRONG>o</STRONG> FreeBSD sysmouse
+
+ <STRONG>o</STRONG> OS/2 EMX
+
+ If you are using an unsupported configuration, mouse events will not be
+ visible to <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> (and the <STRONG>mousemask</STRONG> function will always return
+ <STRONG>0</STRONG>).
+
+ If the terminfo entry contains a <STRONG>XM</STRONG> string, this is used in the xterm
+ mouse driver to control the way the terminal is initialized for mouse
+ operation. The default, if <STRONG>XM</STRONG> is not found, corresponds to private
+ mode 1000 of xterm:
+
+ \E[?1000%?%p1%{1}%=%th%el%;
+
+ The mouse driver also recognizes a newer xterm private mode 1006, e.g.,
+
+ \E[?1006;1000%?%p1%{1}%=%th%el%;
+
+ The <EM>z</EM> member in the event structure is not presently used. It is in-
+ tended for use with touch screens (which may be pressure-sensitive) or
+ with 3D-mice/trackballs/power gloves.
+
+ The <STRONG>ALL_MOUSE_EVENTS</STRONG> class does not include <STRONG>REPORT_MOUSE_POSITION</STRONG>.
+ They are distinct. For example, in xterm, wheel/scrolling mice send
+ position reports as a sequence of presses of buttons 4 or 5 without
+ matching button-releases.
+
+
+</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
+ Mouse events under xterm will not in fact be ignored during cooked
+ mode, if they have been enabled by <STRONG>mousemask</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, since they are interpreted as a variety of
+ function key. Your terminfo description should have <STRONG>kmous</STRONG> set to
+ "\E[M" (the beginning of the response from xterm for mouse clicks).
+ Other values for <STRONG>kmous</STRONG> are permitted, but under the same assumption,
+ i.e., it is the beginning of the response.
+
+ Because there are no standard terminal responses that would serve to
+ identify terminals which support the xterm mouse protocol, <STRONG>ncurses</STRONG> as-
+ sumes that if <STRONG>kmous</STRONG> is defined in the terminal description, or if the
+ terminal description's primary name or aliases contain the string
+ "xterm", then the terminal may send mouse events. The <STRONG>kmous</STRONG> capability
+ is checked first, allowing the use of newer xterm mouse protocols such
+ as xterm's private mode 1006.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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_slk.3x.html">curs_slk(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
- <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>
+ <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-mousemask">mousemask</a></li>
+<li><a href="#h3-Mouse-events">Mouse events</a></li>
+<li><a href="#h3-getmouse">getmouse</a></li>
+<li><a href="#h3-ungetmouse">ungetmouse</a></li>
+<li><a href="#h3-wenclose">wenclose</a></li>
+<li><a href="#h3-wmouse_trafo">wmouse_trafo</a></li>
+<li><a href="#h3-mouse_trafo">mouse_trafo</a></li>
+<li><a href="#h3-mouseinterval">mouseinterval</a></li>
+<li><a href="#h3-has_mouse">has_mouse</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-BUGS">BUGS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_move.3x.html b/doc/html/man/curs_move.3x.html
index 4c283581803a..c938a627a934 100644
--- a/doc/html/man/curs_move.3x.html
+++ b/doc/html/man/curs_move.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free 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,79 +26,76 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_move.3x,v 1.14 2010/12/04 18:40:45 tom Exp @
+ * @Id: curs_move.3x,v 1.17 2018/07/28 21:34:56 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_move 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_move 3x</H1>
-<HR>
+<H1 class="no-header">curs_move 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG> <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>
+<STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG> <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>move</STRONG>, <STRONG>wmove</STRONG> - move <STRONG>curses</STRONG> window cursor
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</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><a name="h2-DESCRIPTION">DESCRIPTION</a></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 termi-
+ nal until <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></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><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ These routines return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 specifies only "an
+ integer value other than <STRONG>ERR</STRONG>") upon successful completion.
- Specifically, they return an error if the window pointer
- is null, or if the position is outside the window.
+ Specifically, they return an error if the window pointer is null, or if
+ the position is outside the window.
-</PRE>
-<H2>NOTES</H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></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.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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_move.3x.html">curs_move(3x)</A></STRONG>
+ <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_opaque.3x.html b/doc/html/man/curs_opaque.3x.html
index ff0e5711cdf5..f036c825d676 100644
--- a/doc/html/man/curs_opaque.3x.html
+++ b/doc/html/man/curs_opaque.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2007-2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2014,2015 Free 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,33 +26,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_opaque.3x,v 1.10 2013/07/20 19:42:29 tom Exp @
+ * @Id: curs_opaque.3x,v 1.13 2015/12/05 20:05:45 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_opaque 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_opaque 3x</H1>
-<HR>
+<H1 class="no-header">curs_opaque 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>
+<STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>is_cleared</STRONG>, <STRONG>is_idlok</STRONG>, <STRONG>is_idcok</STRONG>, <STRONG>is_immedok</STRONG>, <STRONG>is_keypad</STRONG>,
- <STRONG>is_leaveok</STRONG>, <STRONG>is_nodelay</STRONG>, <STRONG>is_notimeout</STRONG>, <STRONG>is_pad</STRONG>, <STRONG>is_scrollok</STRONG>,
- <STRONG>is_subwin</STRONG>, <STRONG>is_syncok</STRONG> - <STRONG>curses</STRONG> window properties
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>is_cleared</STRONG>, <STRONG>is_idlok</STRONG>, <STRONG>is_idcok</STRONG>, <STRONG>is_immedok</STRONG>, <STRONG>is_keypad</STRONG>, <STRONG>is_leaveok</STRONG>,
+ <STRONG>is_nodelay</STRONG>, <STRONG>is_notimeout</STRONG>, <STRONG>is_pad</STRONG>, <STRONG>is_scrollok</STRONG>, <STRONG>is_subwin</STRONG>, <STRONG>is_syncok</STRONG>,
+ <STRONG>wgetdelay</STRONG>, <STRONG>wgetparent</STRONG>, <STRONG>wgetscrreg</STRONG> - <STRONG>curses</STRONG> window properties
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>bool</STRONG> <STRONG>is_cleared(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
@@ -69,14 +67,14 @@
<STRONG>bool</STRONG> <STRONG>is_subwin(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
<STRONG>bool</STRONG> <STRONG>is_syncok(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
<STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>wgetparent(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
+ <STRONG>int</STRONG> <STRONG>wgetdelay(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
<STRONG>int</STRONG> <STRONG>wgetscrreg(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>*top,</STRONG> <STRONG>int</STRONG> <STRONG>*bottom);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- This implementation provides functions which return prop-
- erties set in the WINDOW structure, allowing it to be
- "opaque" if the symbol <STRONG>NCURSES_OPAQUE</STRONG> is defined:
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ This implementation provides functions which return properties set in
+ the WINDOW structure, allowing it to be "opaque" if the symbol <STRONG>NCURS-</STRONG>
+ <STRONG>ES_OPAQUE</STRONG> is defined:
<STRONG>is_cleared</STRONG>
returns the value set in <STRONG>clearok</STRONG>
@@ -103,59 +101,62 @@
returns the value set in <STRONG>notimeout</STRONG>
<STRONG>is_pad</STRONG>
- returns TRUE if the window is a pad i.e., created by
- <STRONG>newpad</STRONG>
+ returns <STRONG>TRUE</STRONG> if the window is a pad i.e., created by <STRONG>newpad</STRONG>
<STRONG>is_scrollok</STRONG>
returns the value set in <STRONG>scrollok</STRONG>
<STRONG>is_subwin</STRONG>
- returns TRUE if the window is a subwindow, i.e., cre-
- ated by <STRONG>subwin</STRONG> or <STRONG>derwin</STRONG>
+ returns <STRONG>TRUE</STRONG> if the window is a subwindow, i.e., created by <STRONG>subwin</STRONG>
+ or <STRONG>derwin</STRONG>
<STRONG>is_syncok</STRONG>
returns the value set in <STRONG>syncok</STRONG>
+ <STRONG>wgetdelay</STRONG>
+ returns the delay timeout as set in <STRONG>wtimeout</STRONG>.
+
<STRONG>wgetparent</STRONG>
- returns the parent WINDOW pointer for subwindows, or
- NULL for windows having no parent.
+ returns the parent WINDOW pointer for subwindows, or NULL for win-
+ dows having no parent.
<STRONG>wgetscrreg</STRONG>
- returns the top and bottom rows for the scrolling
- margin as set in <STRONG>wsetscrreg</STRONG>.
+ returns the top and bottom rows for the scrolling margin as set in
+ <STRONG>wsetscrreg</STRONG>.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- These functions all return TRUE or FALSE, except as noted.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ These functions all return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>, except as noted.
-</PRE>
-<H2>NOTES</H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
Both a macro and a function are provided for each name.
-</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 ncurses ex-
- tensions be conditioned using NCURSES_VERSION.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></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 ncurses extensions be conditioned using NCURSES_VER-
+ SION.
-</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_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG>curs_win-</STRONG>
- <STRONG><A HREF="curs_window.3x.html">dow(3x)</A></STRONG>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
- <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>
+ <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_outopts.3x.html b/doc/html/man/curs_outopts.3x.html
index aad607f70a17..5fe4fa1eea52 100644
--- a/doc/html/man/curs_outopts.3x.html
+++ b/doc/html/man/curs_outopts.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free 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,208 +26,216 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_outopts.3x,v 1.25 2010/12/04 18:38:55 tom Exp @
+ * @Id: curs_outopts.3x,v 1.29 2018/07/28 22:59:02 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_outopts 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_outopts 3x</H1>
-<HR>
+<H1 class="no-header">curs_outopts 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
+<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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><a name="h2-NAME">NAME</a></H2><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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</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>clearok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>idlok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+ <STRONG>void</STRONG> <STRONG>idcok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+ <STRONG>void</STRONG> <STRONG>immedok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>leaveok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>setscrreg(int</STRONG> <EM>top</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bot</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>wsetscrreg(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>top</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bot</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>scrollok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</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 op-
- tions 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 is not 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
- the window image, such as the ones caused by <STRONG>waddch,</STRONG> <STRONG>wclr-</STRONG>
- <STRONG>tobot,</STRONG> <STRONG>wscrl</STRONG>, etc., automatically cause a call to <STRONG>wre-</STRONG>
- <STRONG>fresh</STRONG>. However, it may degrade performance considerably,
- due to repeated calls to <STRONG>wrefresh</STRONG>. It is disabled by de-
- fault.
-
- Normally, the hardware cursor is left at the location of
- the window cursor being refreshed. The <STRONG>leaveok</STRONG> option al-
- lows the cursor to be left wherever the update happens to
- leave it. It is useful for applications where the cursor
- is not used, since it reduces the need for cursor motions.
-
- The <STRONG>setscrreg</STRONG> and <STRONG>wsetscrreg</STRONG> routines allow the applica-
- tion programmer to set a software scrolling region in a
- window. The <EM>top</EM> and <EM>bot</EM> parameters 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 bot-
- tom 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 re-
- gion 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 to get the physical
- scrolling effect on the terminal, it is also necessary 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><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These routines set options that change the style of output within <STRONG>curs-</STRONG>
+ <STRONG>es</STRONG>. All options are initially <STRONG>FALSE</STRONG>, unless otherwise stated. It is
+ not necessary to turn these options off before calling <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG>.
+
+
+</PRE><H3><a name="h3-clearok">clearok</a></H3><PRE>
+ 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 completely 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.
+
+
+</PRE><H3><a name="h3-idlok">idlok</a></H3><PRE>
+ 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 inser-
+ tion and deletion. This option should be enabled only if the applica-
+ tion needs insert/delete line, for example, for a screen editor. It is
+ disabled by default because insert/delete line tends to be visually an-
+ noying when used in applications where it is not really needed. If in-
+ sert/delete line cannot be used, <STRONG>curses</STRONG> redraws the changed portions of
+ all lines.
+
+
+</PRE><H3><a name="h3-idcok">idcok</a></H3><PRE>
+ If <STRONG>idcok</STRONG> is called with <STRONG>FALSE</STRONG> as second argument, <STRONG>curses</STRONG> no longer con-
+ siders using the hardware insert/delete character 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
+ insertion and deletion.
+
+
+</PRE><H3><a name="h3-immedok">immedok</a></H3><PRE>
+ If <STRONG>immedok</STRONG> is called with <STRONG>TRUE</STRONG> <STRONG>as</STRONG> <STRONG>argument</STRONG>, any change in the window
+ image, such as the ones caused by <STRONG>waddch,</STRONG> <STRONG>wclrtobot,</STRONG> <STRONG>wscrl</STRONG>, etc., auto-
+ matically cause a call to <STRONG>wrefresh</STRONG>. However, it may degrade perfor-
+ mance considerably, due to repeated calls to <STRONG>wrefresh</STRONG>. It is disabled
+ by default.
+
+
+</PRE><H3><a name="h3-leaveok">leaveok</a></H3><PRE>
+ 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 appli-
+ cations where the cursor is not used, since it reduces the need for
+ cursor motions.
+
+
+</PRE><H3><a name="h3-setscrreg">setscrreg</a></H3><PRE>
+ The <STRONG>setscrreg</STRONG> and <STRONG>wsetscrreg</STRONG> routines allow the application programmer
+ to set a software scrolling region in a window. The <EM>top</EM> and <EM>bot</EM> param-
+ eters 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 op-
+ tion 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.)
+
+
+</PRE><H3><a name="h3-scrollok">scrollok</a></H3><PRE>
+ 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 char-
+ acter 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 to get the physical scrolling effect on the ter-
+ minal, it is also necessary to call <STRONG>idlok</STRONG>).
+
+
+</PRE><H3><a name="h3-nl_-nonl">nl, nonl</a></H3><PRE>
+ 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 trans-
+ lates 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
+ <EM>virtual</EM> <EM>screen</EM>). Initially, these translations do occur. If you dis-
+ able them using <STRONG>nonl</STRONG>, <STRONG>curses</STRONG> will be able to make better 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><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The functions <STRONG>setscrreg</STRONG> and <STRONG>wsetscrreg</STRONG> return <STRONG>OK</STRONG> upon success and <STRONG>ERR</STRONG>
+ upon failure. All other routines that return an integer always return
+ <STRONG>OK</STRONG>.
+
+ X/Open Curses does not define any error conditions.
+
+ In this implementation, those functions that have a window pointer will
+ return an error if the window pointer is null.
+ <STRONG>wclrtoeol</STRONG>
+ returns an error if the cursor position is about to wrap.
-</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>.
+ <STRONG>wsetscrreg</STRONG>
+ returns an error if the scrolling region limits extend out-
+ side the window.
- X/Open does not define any error conditions.
+ X/Open does not define any error conditions. This implementation re-
+ turns an error if the window pointer is null.
- In this implementation, those functions that have a window
- pointer will return an error if the window pointer is
- null.
- <STRONG>wclrtoeol</STRONG>
- returns an error if the cursor position is
- about to wrap.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4.
- <STRONG>wsetscrreg</STRONG>
- returns an error if the scrolling region lim-
- its extend outside the window.
+ The XSI Curses standard is ambiguous on the question of whether <STRONG>raw</STRONG>
+ should disable the CRLF translations controlled by <STRONG>nl</STRONG> and <STRONG>nonl</STRONG>. BSD
+ curses did turn off these translations; AT&amp;T curses (at least as late
+ as SVr1) did 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 will not alter.
- X/Open does not define any error conditions. This imple-
- mentation returns an error if the window pointer is null.
+ Some historic curses implementations had, as an undocumented feature,
+ the ability to do the equivalent of <STRONG>clearok(...,</STRONG> <STRONG>1)</STRONG> by saying <STRONG>touch-</STRONG>
+ <STRONG>win(stdscr)</STRONG> or <STRONG>clear(stdscr)</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 to perform better vertical-motion optimization at <STRONG>wrefresh</STRONG>
+ time.
-</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 <STRONG>raw</STRONG>() should disable the CRLF translations con-
- trolled by <STRONG>nl</STRONG>() and <STRONG>nonl</STRONG>(). BSD curses did turn off these
- translations; AT&amp;T curses (at least as late as SVr1) did
- 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 will not alter.
-
- 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 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. Use <STRONG>curs_set</STRONG> to make the cursor invisible.
+ 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. Use <STRONG>curs_set</STRONG> to make the cursor invisi-
+ ble.
-</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.
+</PRE><H2><a name="h2-NOTES">NOTES</a></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.
+ The <STRONG>immedok</STRONG> routine is useful for windows that are used as terminal em-
+ ulators.
-</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>,
- <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
- <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
+ <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-clearok">clearok</a></li>
+<li><a href="#h3-idlok">idlok</a></li>
+<li><a href="#h3-idcok">idcok</a></li>
+<li><a href="#h3-immedok">immedok</a></li>
+<li><a href="#h3-leaveok">leaveok</a></li>
+<li><a href="#h3-setscrreg">setscrreg</a></li>
+<li><a href="#h3-scrollok">scrollok</a></li>
+<li><a href="#h3-nl_-nonl">nl, nonl</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_overlay.3x.html b/doc/html/man/curs_overlay.3x.html
index 4adbfb7ff553..130796744a31 100644
--- a/doc/html/man/curs_overlay.3x.html
+++ b/doc/html/man/curs_overlay.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2015 Free 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,96 +26,102 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_overlay.3x,v 1.17 2013/04/06 23:48:51 tom Exp @
+ * @Id: curs_overlay.3x,v 1.18 2015/07/21 00:51:31 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_overlay 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_overlay 3x</H1>
-<HR>
+<H1 class="no-header">curs_overlay 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG> <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>
+<STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG> <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>overlay</STRONG>, <STRONG>overwrite</STRONG>, <STRONG>copywin</STRONG> - overlay and manipulate
- overlapped <STRONG>curses</STRONG> windows
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>overlay</STRONG>, <STRONG>overwrite</STRONG>, <STRONG>copywin</STRONG> - overlay and manipulate overlapped <STRONG>curses</STRONG>
+ windows
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</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(const</STRONG> <STRONG>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>
+ <STRONG>int</STRONG> <STRONG>overlay(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>srcwin</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>dstwin</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>overwrite(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>srcwin</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>dstwin</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>copywin(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>srcwin</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>dstwin</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>sminrow</EM><STRONG>,</STRONG>
+ <STRONG>int</STRONG> <EM>smincol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>dminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>dmincol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>dmaxrow</EM><STRONG>,</STRONG>
+ <STRONG>int</STRONG> <EM>dmaxcol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>overlay</EM><STRONG>);</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. As 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><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+</PRE><H3><a name="h3-overlay_-overwrite">overlay, overwrite</a></H3><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 destruc-
+ tive.
-</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.
- X/Open defines no error conditions. In this implementa-
- tion, <STRONG>copywin</STRONG>, <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> return an error if
- either of the window pointers are null, or if some part of
- the window would be placed off-screen.
+</PRE><H3><a name="h3-copywin">copywin</a></H3><PRE>
+ The <STRONG>copywin</STRONG> routine provides a finer granularity of control over the
+ <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> routines. As in the <STRONG>prefresh</STRONG> routine, a rectan-
+ gle is specified in the destination window, (<EM>dminrow</EM>, <EM>dmincol</EM>) and
+ (<EM>dmaxrow</EM>, <EM>dmaxcol</EM>), and the upper-left-corner coordinates of the source
+ window, (<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>NOTES</H2><PRE>
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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 com-
+ pletion.
+
+ X/Open defines no error conditions. In this implementation, <STRONG>copywin</STRONG>,
+ <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> return an error if either of the window pointers
+ are null, or if some part of the window would be placed off-screen.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></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 multibyte ren-
- ditions (not yet supported in this implementation).
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></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 multibyte renditions (not yet supported in this im-
+ plementation).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>
- <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>
+ <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-overlay_-overwrite">overlay, overwrite</a></li>
+<li><a href="#h3-copywin">copywin</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_pad.3x.html b/doc/html/man/curs_pad.3x.html
index c9e2c6f7c3a9..70378c52dc64 100644
--- a/doc/html/man/curs_pad.3x.html
+++ b/doc/html/man/curs_pad.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free 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,158 +26,231 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_pad.3x,v 1.17 2010/12/04 18:41:07 tom Exp @
+ * @Id: curs_pad.3x,v 1.25 2018/07/28 22:20:54 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_pad 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_pad 3x</H1>
-<HR>
+<H1 class="no-header">curs_pad 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
+<STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>newpad</STRONG>, <STRONG>subpad</STRONG>, <STRONG>prefresh</STRONG>, <STRONG>pnoutrefresh</STRONG>, <STRONG>pechochar</STRONG>,
- <STRONG>pecho_wchar</STRONG> - create and display <STRONG>curses</STRONG> pads
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>newpad</STRONG>, <STRONG>subpad</STRONG>, <STRONG>prefresh</STRONG>, <STRONG>pnoutrefresh</STRONG>, <STRONG>pechochar</STRONG>, <STRONG>pecho_wchar</STRONG> - create
+ and display <STRONG>curses</STRONG> pads
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</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>
- <STRONG>int</STRONG> <STRONG>pecho_wchar(WINDOW</STRONG> <STRONG>*pad,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*wch);</STRONG>
+ <STRONG>WINDOW</STRONG> <STRONG>*newpad(int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>);</STRONG>
+ <STRONG>WINDOW</STRONG> <STRONG>*subpad(WINDOW</STRONG> <STRONG>*</STRONG><EM>orig</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG>
+ <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>prefresh(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pmincol</EM><STRONG>,</STRONG>
+ <STRONG>int</STRONG> <EM>sminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smincol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxcol</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>pnoutrefresh(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pmincol</EM><STRONG>,</STRONG>
+ <STRONG>int</STRONG> <EM>sminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smincol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxcol</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>pechochar(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>pecho_wchar(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</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. Au-
- tomatic refreshes of pads (e.g., from scrolling or echoing
- of input) do not occur. It is not legal to call <STRONG>wrefresh</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 of-
- ten be necessary to call <STRONG>touchwin</STRONG> or <STRONG>touchline</STRONG> on <EM>orig</EM> be-
- fore 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.
- The <EM>pminrow</EM> and <EM>pmincol</EM> parameters specify the upper left-
- hand corner of the rectangle to be displayed in the pad.
- The <EM>sminrow</EM>, <EM>smincol</EM>, <EM>smaxrow</EM>, and <EM>smaxcol</EM> parameters
- specify the edges of the rectangle to be displayed on the
- screen. The lower right-hand corner of the rectangle to
- be displayed in the pad is calculated from the screen co-
- ordinates, since the rectangles must be the same size.
- Both rectangles must be entirely contained within their
- respective structures. Negative values of <EM>pminrow</EM>, <EM>pmin-</EM>
- <EM>col</EM>, <EM>sminrow</EM>, or <EM>smincol</EM> are 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 in-
- stead 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>.
-
- The <STRONG>pecho_wchar</STRONG> function is the analogous wide-character
- form of <STRONG>pechochar</STRONG>. It outputs one character to a pad and
- immediately refreshes the pad. It does this by a call to
- <STRONG>wadd_wch</STRONG> followed by a call to <STRONG>prefresh</STRONG>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+</PRE><H3><a name="h3-newpad">newpad</a></H3><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 necessarily 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 re-
+ freshes of pads (e.g., from scrolling or echoing of input) do not oc-
+ cur.
-</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.
+ It is not legal to call <STRONG>wrefresh</STRONG> with a <EM>pad</EM> as an argument; the rou-
+ tines <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.
- Routines that return pointers return <STRONG>NULL</STRONG> on error, and
- set <STRONG>errno</STRONG> to <STRONG>ENOMEM</STRONG>.
- X/Open does not define any error conditions. In this im-
- plementation
+</PRE><H3><a name="h3-subpad">subpad</a></H3><PRE>
+ The <STRONG>subpad</STRONG> routine creates and returns a pointer to a subwindow within
+ a pad with the given number of lines, <EM>nlines</EM>, and columns, <EM>ncols</EM>. Un-
+ like <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>.
- <STRONG>prefresh</STRONG> and <STRONG>pnoutrefresh</STRONG>
- return an error if the window pointer is null,
- or if the window is not really a pad or if the
- area to refresh extends off-screen or if the
- minimum coordinates are greater than the maxi-
- mum.
- <STRONG>pechochar</STRONG>
- returns an error if the window is not really a
- pad, and the associated call to <STRONG>wechochar</STRONG> re-
- turns an error.
+</PRE><H3><a name="h3-prefresh_-pnoutrefresh">prefresh, pnoutrefresh</a></H3><PRE>
+ 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.
- <STRONG>pecho_wchar</STRONG>
- returns an error if the window is not really a
- pad, and the associated call to <STRONG>wecho_wchar</STRONG>
- returns an error.
+ <STRONG>o</STRONG> The <EM>pminrow</EM> and <EM>pmincol</EM> parameters specify the upper left-hand cor-
+ ner of the rectangle to be displayed in the pad.
+ <STRONG>o</STRONG> The <EM>sminrow</EM>, <EM>smincol</EM>, <EM>smaxrow</EM>, and <EM>smaxcol</EM> parameters specify the
+ edges of the rectangle to be displayed on the screen.
-</PRE>
-<H2>NOTES</H2><PRE>
+ The lower right-hand corner of the rectangle to be displayed in the pad
+ is calculated 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 <EM>pminrow</EM>, <EM>pmincol</EM>, <EM>sminrow</EM>,
+ or <EM>smincol</EM> are treated as if they were zero.
+
+
+</PRE><H3><a name="h3-pechochar">pechochar</a></H3><PRE>
+ The <STRONG>pechochar</STRONG> routine is functionally equivalent to a call to <STRONG>addch</STRONG>
+ followed by a call to <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>, a call to <STRONG>waddch</STRONG> followed by a call
+ to <STRONG>wrefresh</STRONG>, or a call to <STRONG>waddch</STRONG> followed by a call to <STRONG>prefresh</STRONG>. The
+ knowledge that only a single character is being output is taken into
+ consideration and, for non-control characters, a considerable perfor-
+ mance 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><H3><a name="h3-pecho_wchar">pecho_wchar</a></H3><PRE>
+ The <STRONG>pecho_wchar</STRONG> function is the analogous wide-character form of <STRONG>pe-</STRONG>
+ <STRONG>chochar</STRONG>. It outputs one character to a pad and immediately refreshes
+ the pad. It does this by a call to <STRONG>wadd_wch</STRONG> followed by a call to <STRONG>pre-</STRONG>
+ <STRONG>fresh</STRONG>.
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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 com-
+ pletion.
+
+ Routines that return pointers return <STRONG>NULL</STRONG> on error, and set <STRONG>errno</STRONG> to
+ <STRONG>ENOMEM</STRONG>.
+
+ X/Open does not define any error conditions. In this implementation
+
+ <STRONG>prefresh</STRONG> and <STRONG>pnoutrefresh</STRONG>
+ return an error if the window pointer is null, or if the window
+ is not really a pad or if the area to refresh extends off-
+ screen or if the minimum coordinates are greater than the maxi-
+ mum.
+
+ <STRONG>pechochar</STRONG>
+ returns an error if the window is not really a pad, and the as-
+ sociated call to <STRONG>wechochar</STRONG> returns an error.
+
+ <STRONG>pecho_wchar</STRONG>
+ returns an error if the window is not really a pad, and the as-
+ sociated call to <STRONG>wecho_wchar</STRONG> returns an error.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ BSD curses has no <EM>pad</EM> feature.
+ SVr2 curses (1986) provided the <STRONG>newpad</STRONG> and related functions, document-
+ ing them in a single line each. SVr3 (1987) provided more extensive
+ documentation.
-</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>curs_add-</STRONG>
- <STRONG><A HREF="curs_addch.3x.html">ch(3x)</A></STRONG>.
+ The documentation does not explain the term <EM>pad</EM>. However, the Apollo
+ <EM>Aegis</EM> workstation operating system supported a graphical <EM>pad</EM> feature:
+
+ <STRONG>o</STRONG> These graphical pads could be much larger than the computer's dis-
+ play.
+
+ <STRONG>o</STRONG> The read-only output from a command could be scrolled back to in-
+ spect, and select text from the pad.
+
+ The two uses may be related.
+
+ The XSI Curses standard, Issue 4 describes these functions, without
+ significant change from the SVr3 documentation. It describes no error
+ conditions. The behavior of <STRONG>subpad</STRONG> if the parent window is not a pad
+ is undocumented, and is not checked by the vendor Unix implementations:
+
+ <STRONG>o</STRONG> SVr4 curses sets a flag in the <STRONG>WINDOW</STRONG> structure in <STRONG>newpad</STRONG> which
+ tells if the window is a <EM>pad</EM>.
+
+ However, it uses this information only in <STRONG>waddch</STRONG> (to decide if it
+ should call <STRONG>wrefresh</STRONG>) and <STRONG>wscrl</STRONG> (to avoid scrolling a pad), and
+ does not check in <STRONG>wrefresh</STRONG> to ensure that the pad is refreshed
+ properly.
+
+ <STRONG>o</STRONG> Solaris X/Open Curses checks if a window is a pad in <STRONG>wnoutrefresh</STRONG>,
+ returning <STRONG>ERR</STRONG> in that case.
+
+ However, it only sets the flag for subwindows if the parent window
+ is a pad. Its <STRONG>newpad</STRONG> function does not set this information. Con-
+ sequently, the check will never fail.
+
+ It makes no comparable check in <STRONG>pnoutrefresh</STRONG>, though interestingly
+ enough, a comment in the source code states that the lack of a
+ check was an MKS extension.
+
+ <STRONG>o</STRONG> NetBSD 7 curses sets a flag in the <STRONG>WINDOW</STRONG> structure for <STRONG>newpad</STRONG> and
+ <STRONG>subpad</STRONG>, using this to help with the distinction between <STRONG>wnoutre-</STRONG>
+ <STRONG>fresh</STRONG> and <STRONG>pnoutrefresh</STRONG>.
+
+ It does not check for the case where a subwindow is created in a
+ pad using <STRONG>subwin</STRONG> or <STRONG>derwin</STRONG>.
+
+ The <STRONG>dupwin</STRONG> function returns a regular window when duplicating a
+ pad. Likewise, <STRONG>getwin</STRONG> always returns a window, even if the saved
+ data was from a pad.
+
+ This implementation
+
+ <STRONG>o</STRONG> sets a flag in the <STRONG>WINDOW</STRONG> structure for <STRONG>newpad</STRONG> and <STRONG>subpad</STRONG>,
+
+ <STRONG>o</STRONG> allows a <STRONG>subwin</STRONG> or <STRONG>derwin</STRONG> call to succeed having a pad parent by
+ forcing the subwindow to be a pad,
+
+ <STRONG>o</STRONG> checks in both <STRONG>wnoutrefresh</STRONG> and <STRONG>pnoutrefresh</STRONG> to ensure that pads
+ and windows are handled distinctly, and
+
+ <STRONG>o</STRONG> ensures that <STRONG>dupwin</STRONG> and <STRONG>getwin</STRONG> treat pads versus windows consis-
+ tently.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>.
- <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
+ <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-newpad">newpad</a></li>
+<li><a href="#h3-subpad">subpad</a></li>
+<li><a href="#h3-prefresh_-pnoutrefresh">prefresh, pnoutrefresh</a></li>
+<li><a href="#h3-pechochar">pechochar</a></li>
+<li><a href="#h3-pecho_wchar">pecho_wchar</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_print.3x.html b/doc/html/man/curs_print.3x.html
index 14f53c1e1687..07d38e435b00 100644
--- a/doc/html/man/curs_print.3x.html
+++ b/doc/html/man/curs_print.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free 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,95 +26,89 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_print.3x,v 1.10 2010/12/04 18:40:45 tom Exp @
+ * @Id: curs_print.3x,v 1.13 2018/07/28 21:34:56 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_print 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_print 3x</H1>
-<HR>
+<H1 class="no-header">curs_print 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG> <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>
+<STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG> <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>mcprint</STRONG> - ship binary data to printer
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>mcprint(char</STRONG> <STRONG>*data,</STRONG> <STRONG>int</STRONG> <STRONG>len);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- This function uses the <STRONG>mc5p</STRONG> or <STRONG>mc4</STRONG> and <STRONG>mc5</STRONG> capabilities,
- if they are present, to ship given data to a printer
- attached to the terminal.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ This function uses the <STRONG>mc5p</STRONG> or <STRONG>mc4</STRONG> and <STRONG>mc5</STRONG> 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
- 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
- (typically about half of its nominal cps rating). Dot-
- matrix printers and 6-page-per-minute lasers can typically
- handle 80cps, so a good conservative rule of thumb is to
- sleep for a second after shipping each 80-character line.
+ Note that the <STRONG>mcprint</STRONG> 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 (typically about half of its nominal cps
+ rating). Dot-matrix printers and 6-page-per-minute lasers can typi-
+ cally handle 80cps, so a good conservative rule of thumb is to sleep
+ for a second after shipping each 80-character line.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The <STRONG>mcprint</STRONG> function returns <STRONG>ERR</STRONG> 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
- following:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The <STRONG>mcprint</STRONG> function returns <STRONG>ERR</STRONG> if the write operation aborted for
+ some reason. In this case, errno will contain either an error associ-
+ ated with <STRONG>write(2)</STRONG> or one of the following:
ENODEV
Capabilities for printer redirection do not exist.
ENOMEM
- Couldn't allocate sufficient memory to buffer the
- printer write.
+ Couldn't allocate sufficient memory to buffer the printer write.
- When <STRONG>mcprint</STRONG> succeeds, it returns the number of characters
- actually sent to the printer.
+ When <STRONG>mcprint</STRONG> succeeds, it returns the number of characters 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
- found in SVr4 curses, 4.4BSD curses, or any other previous
- version of curses.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The <STRONG>mcprint</STRONG> call was designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, 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
- interpreted.
+</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
+ Padding in the <STRONG>mc5p</STRONG>, <STRONG>mc4</STRONG> and <STRONG>mc5</STRONG> capabilities will not be interpreted.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
- <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>
+ <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-BUGS">BUGS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_printw.3x.html b/doc/html/man/curs_printw.3x.html
index 90b9f498d64d..994a1b5d6bca 100644
--- a/doc/html/man/curs_printw.3x.html
+++ b/doc/html/man/curs_printw.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,100 +26,105 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_printw.3x,v 1.20 2010/12/04 18:40:45 tom Exp @
+ * @Id: curs_printw.3x,v 1.24 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_printw 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_printw 3x</H1>
-<HR>
+<H1 class="no-header">curs_printw 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
+<STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>printw</STRONG>, <STRONG>wprintw</STRONG>, <STRONG>mvprintw</STRONG>, <STRONG>mvwprintw</STRONG>, <STRONG>vwprintw</STRONG>, <STRONG>vw_printw</STRONG>
- - print formatted output in <STRONG>curses</STRONG> windows
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>printw</STRONG>, <STRONG>wprintw</STRONG>, <STRONG>mvprintw</STRONG>, <STRONG>mvwprintw</STRONG>, <STRONG>vwprintw</STRONG>, <STRONG>vw_printw</STRONG> - print
+ formatted output in <STRONG>curses</STRONG> windows
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>printw(const</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>...);</STRONG>
<STRONG>int</STRONG> <STRONG>wprintw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>...);</STRONG>
<STRONG>int</STRONG> <STRONG>mvprintw(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</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>const</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG>
- <STRONG>...);</STRONG>
- <STRONG>int</STRONG> <STRONG>vwprintw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>va_list</STRONG> <STRONG>var-</STRONG>
- <STRONG>glist);</STRONG>
- <STRONG>int</STRONG> <STRONG>vw_printw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>va_list</STRONG> <STRONG>var-</STRONG>
- <STRONG>glist);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvwprintw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>...);</STRONG>
+ <STRONG>int</STRONG> <STRONG>vw_printw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>va_list</STRONG> <STRONG>varglist);</STRONG>
+ /* obsolete */
+ <STRONG>int</STRONG> <STRONG>vwprintw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>va_list</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>printf(3)</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> and <STRONG>wv_printw</STRONG> routines are analogous to
- <STRONG>vprintf</STRONG> [see <STRONG>printf(3)</STRONG>] and perform a <STRONG>wprintw</STRONG> using a
- variable argument list. The third argument is a <STRONG>va_list</STRONG>,
- a pointer to a list of arguments, as defined in
- <STRONG>&lt;stdarg.h&gt;</STRONG>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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>printf(3)</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 win-
+ dow.
+ The <STRONG>vwprintw</STRONG> and <STRONG>wv_printw</STRONG> routines are analogous to <STRONG>vprintf</STRONG> [see
+ <STRONG>printf(3)</STRONG>] and perform a <STRONG>wprintw</STRONG> using a variable argument list. The
+ third argument is a <STRONG>va_list</STRONG>, a pointer to a list of arguments, as de-
+ fined in <STRONG>&lt;stdarg.h&gt;</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.
- X/Open defines no error conditions. In this implementa-
- tion, an error may be returned if it cannot allocate
- enough memory for the buffer used to format the results.
- It will return an error if the window pointer is null.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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 com-
+ pletion.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ X/Open defines no error conditions. In this implementation, an error
+ may be returned if it cannot allocate enough memory for the buffer used
+ to format the results. It will return an error if the window pointer
+ is null.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</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>&lt;stdarg.h&gt;</STRONG> interface. The Single Unix Specification, Ver-
- sion 2 states that <STRONG>vw_printw</STRONG> is preferred to <STRONG>vwprintw</STRONG>
- since the latter requires including <STRONG>&lt;varargs.h&gt;</STRONG>, which
- cannot be used in the same file as <STRONG>&lt;stdarg.h&gt;</STRONG>. This im-
- plementation uses <STRONG>&lt;stdarg.h&gt;</STRONG> for both, because that header
- is included in <STRONG>&lt;curses.h</STRONG>&gt;.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ In this implementation, <STRONG>vw_printw</STRONG> and <STRONG>vwprintw</STRONG> are equivalent, to sup-
+ port legacy applications. However, the latter (<STRONG>vwprintw</STRONG>) is obsolete:
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG>printf(3)</STRONG>, <STRONG>vprintf(3)</STRONG>
+ <STRONG>o</STRONG> The XSI Curses standard, Issue 4 described these functions. The
+ function <STRONG>vwprintw</STRONG> is marked TO BE WITHDRAWN, and is to be replaced
+ by a function <STRONG>vw_printw</STRONG> using the <STRONG>&lt;stdarg.h&gt;</STRONG> interface.
+
+ <STRONG>o</STRONG> The Single Unix Specification, Version 2 states that <STRONG>vw_printw</STRONG> is
+ preferred to <STRONG>vwprintw</STRONG> since the latter requires including
+ <STRONG>&lt;varargs.h&gt;</STRONG>, which cannot be used in the same file as <STRONG>&lt;stdarg.h&gt;</STRONG>.
+ This implementation uses <STRONG>&lt;stdarg.h&gt;</STRONG> for both, because that header
+ is included in <STRONG>&lt;curses.h</STRONG>&gt;.
+
+ <STRONG>o</STRONG> X/Open Curses, Issue 5 (December 2007) marked <STRONG>vwprintw</STRONG> (along with
+ <STRONG>vwscanw</STRONG> and the termcap interface) as withdrawn.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>, <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>,
+ <STRONG>printf(3)</STRONG>, <STRONG>vprintf(3)</STRONG>.
- <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
+ <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_refresh.3x.html b/doc/html/man/curs_refresh.3x.html
index ad8874992203..04ca3d0da9e2 100644
--- a/doc/html/man/curs_refresh.3x.html
+++ b/doc/html/man/curs_refresh.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,32 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_refresh.3x,v 1.15 2010/12/04 18:38:55 tom Exp @
+ * @Id: curs_refresh.3x,v 1.20 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_refresh 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_refresh 3x</H1>
-<HR>
+<H1 class="no-header">curs_refresh 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
+<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>doupdate</STRONG>, <STRONG>redrawwin</STRONG>, <STRONG>refresh</STRONG>, <STRONG>wnoutrefresh</STRONG>, <STRONG>wredrawln</STRONG>,
- <STRONG>wrefresh</STRONG> - refresh <STRONG>curses</STRONG> windows and lines
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>doupdate</STRONG>, <STRONG>redrawwin</STRONG>, <STRONG>refresh</STRONG>, <STRONG>wnoutrefresh</STRONG>, <STRONG>wredrawln</STRONG>, <STRONG>wrefresh</STRONG> -
+ refresh <STRONG>curses</STRONG> windows and lines
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>refresh(void);</STRONG>
@@ -63,108 +61,120 @@
<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 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 ter-
- minal is left at the location of the cursor for that win-
- dow.
-
- The <STRONG>wnoutrefresh</STRONG> and <STRONG>doupdate</STRONG> routines allow multiple up-
- dates with more efficiency than <STRONG>wrefresh</STRONG> alone. In addi-
- tion to all the window structures, <STRONG>curses</STRONG> keeps two data
- structures representing the terminal screen: a physical
- 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 se-
- ries of calls to <STRONG>wrefresh</STRONG> results in alternating calls to
- <STRONG>wnoutrefresh</STRONG> and <STRONG>doupdate</STRONG>, causing several bursts of out-
- put to the screen. By first calling <STRONG>wnoutrefresh</STRONG> for each
- window, it is then possible to call <STRONG>doupdate</STRONG> once, result-
- ing in only one burst of output, with fewer total charac-
- ters transmitted and less CPU time used. If the <EM>win</EM> argu-
- ment 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
- can refresh them in either order and the overlap region
- will be modified only when it is explicitly changed. (But
- 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><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+</PRE><H3><a name="h3-refresh_wrefresh">refresh/wrefresh</a></H3><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 terminal, as other routines mere-
+ ly manipulate data structures. The routine <STRONG>wrefresh</STRONG> copies the named
+ window to the <EM>physical</EM> <EM>screen</EM>, taking into account what is already
+ there to do optimizations. The <STRONG>refresh</STRONG> routine is the same, using <STRONG>std-</STRONG>
+ <STRONG>scr</STRONG> as the default window. Unless <STRONG>leaveok</STRONG> has been enabled, the physi-
+ cal cursor of the terminal is left at the location of the cursor for
+ that 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.
- X/Open does not define any error conditions. In this im-
- plementation
+</PRE><H3><a name="h3-wnoutrefresh_doupdate">wnoutrefresh/doupdate</a></H3><PRE>
+ 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 struc-
+ tures, <STRONG>curses</STRONG> keeps two data structures representing the terminal
+ screen:
- <STRONG>wnoutrefresh</STRONG>
- returns an error if the window pointer is
- null, or if the window is really a pad.
+ <STRONG>o</STRONG> a <EM>physical</EM> <EM>screen</EM>, describing what is actually on the screen, and
- <STRONG>wredrawln</STRONG>
- returns an error if the associated call to
- <STRONG>touchln</STRONG> returns an error.
+ <STRONG>o</STRONG> a <EM>virtual</EM> <EM>screen</EM>, describing what the programmer wants to have on
+ the screen.
+ The routine <STRONG>wrefresh</STRONG> works by
-</PRE>
-<H2>NOTES</H2><PRE>
+ <STRONG>o</STRONG> first calling <STRONG>wnoutrefresh</STRONG>, which copies the named window to the
+ <EM>virtual</EM> <EM>screen</EM>, and
+
+ <STRONG>o</STRONG> then calling <STRONG>doupdate</STRONG>, which compares the <EM>virtual</EM> <EM>screen</EM> to the
+ <EM>physical</EM> <EM>screen</EM> 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>doup-</STRONG>
+ <STRONG>date</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 <EM>physical</EM> <EM>screen</EM> (i.e., the glob-
+ al 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 am-
+ biguous. 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 overlapping windows; it means that if two windows overlap, you
+ can refresh them in either order and the overlap region will be modi-
+ fied only when it is explicitly changed. (But see the section on
+ <STRONG>PORTABILITY</STRONG> below for a warning about exploiting this behavior.)
+
+
+</PRE><H3><a name="h3-wredrawln_redrawwin">wredrawln/redrawwin</a></H3><PRE>
+ The <STRONG>wredrawln</STRONG> routine indicates to <STRONG>curses</STRONG> that some screen lines are
+ corrupted and should be thrown away before anything is written over
+ them. It touches the indicated lines (marking them changed). The rou-
+ tine <STRONG>redrawwin</STRONG> touches the entire window.
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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 com-
+ pletion.
+
+ X/Open does not define any error conditions. In this implementation
+
+ <STRONG>wnoutrefresh</STRONG>
+ returns an error if the window pointer is null, or if the win-
+ dow is really a pad.
+
+ <STRONG>wredrawln</STRONG>
+ returns an error if the associated call to <STRONG>touchln</STRONG> returns an
+ error.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></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.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The XSI Curses standard, Issue 4 describes these functions.
- 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 ex-
- plicit <STRONG>touchwin()</STRONG> before the <STRONG>wnoutrefresh()</STRONG> call to guar-
- antee an entire-contents copy anywhere.
+ 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 any-
+ where.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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_variables.3x.html">curs_variables(3x)</A></STRONG>.
- <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
+ <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-refresh_wrefresh">refresh/wrefresh</a></li>
+<li><a href="#h3-wnoutrefresh_doupdate">wnoutrefresh/doupdate</a></li>
+<li><a href="#h3-wredrawln_redrawwin">wredrawln/redrawwin</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_scanw.3x.html b/doc/html/man/curs_scanw.3x.html
index 5023f670bb75..48d0d2dcbfcd 100644
--- a/doc/html/man/curs_scanw.3x.html
+++ b/doc/html/man/curs_scanw.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,107 +26,123 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_scanw.3x,v 1.17 2010/12/04 18:40:45 tom Exp @
+ * @Id: curs_scanw.3x,v 1.25 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_scanw 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_scanw 3x</H1>
-<HR>
+<H1 class="no-header">curs_scanw 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
+<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG>, <STRONG>mvscanw</STRONG>, <STRONG>mvwscanw</STRONG>, <STRONG>vwscanw</STRONG>, <STRONG>vw_scanw</STRONG> - con-
- vert formatted input from a <STRONG>curses</STRONG> window
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG>, <STRONG>mvscanw</STRONG>, <STRONG>mvwscanw</STRONG>, <STRONG>vwscanw</STRONG>, <STRONG>vw_scanw</STRONG> - convert formatted
+ input from a <STRONG>curses</STRONG> window
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
- <STRONG>int</STRONG> <STRONG>scanw(char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>...);</STRONG>
- <STRONG>int</STRONG> <STRONG>wscanw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</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>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>int</STRONG> <STRONG>vw_scanw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>va_list</STRONG> <STRONG>varglist);</STRONG>
- <STRONG>int</STRONG> <STRONG>vwscanw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>va_list</STRONG> <STRONG>varglist);</STRONG>
+ <STRONG>int</STRONG> <STRONG>scanw(const</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>...);</STRONG>
+ <STRONG>int</STRONG> <STRONG>wscanw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>...);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvscanw(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</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>const</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>...);</STRONG>
+ <STRONG>int</STRONG> <STRONG>vw_scanw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>va_list</STRONG> <STRONG>varglist);</STRONG>
+ /* obsolete */
+ <STRONG>int</STRONG> <STRONG>vwscanw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</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>scanf(3)</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>sscanf(3)</STRONG>. Fields which do not
- map to a variable in the <EM>fmt</EM> field are lost.
- The <STRONG>vwscanw</STRONG> and <STRONG>vw_scanw</STRONG> routines are analogous to <STRONG>vscanf</STRONG>.
- They perform a <STRONG>wscanw</STRONG> using a variable argument list. The
- third argument is a <EM>va</EM><STRONG>_</STRONG><EM>list</EM>, a pointer to a list of argu-
- ments, as defined in <STRONG>&lt;stdarg.h&gt;</STRONG>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG> and <STRONG>mvscanw</STRONG> routines are analogous to <STRONG>scanf</STRONG> [see
+ <STRONG>scanf(3)</STRONG>]. The effect of these routines is as though <STRONG>wgetstr</STRONG> were
+ called on the window, and the resulting line used as input for
+ <STRONG>sscanf(3)</STRONG>. Fields which do not map to a variable in the <EM>fmt</EM> field are
+ lost.
+ The <STRONG>vwscanw</STRONG> and <STRONG>vw_scanw</STRONG> routines are analogous to <STRONG>vscanf(3)</STRONG>. They
+ perform a <STRONG>wscanw</STRONG> using a variable argument list. The third argument is
+ a <EM>va</EM><STRONG>_</STRONG><EM>list</EM>, a pointer to a list of arguments, as defined in <STRONG>&lt;stdarg.h&gt;</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><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ <STRONG>vwscanw</STRONG> returns <STRONG>ERR</STRONG> on failure and an integer equal to the number of
+ fields scanned on success.
- Functions with a "mv" prefix first perform a cursor move-
- ment using <STRONG>wmove</STRONG>, and return an error if the position is
- outside the window, or if the window pointer is null.
+ 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.
+ Functions with a "mv" prefix first perform a cursor movement using
+ <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
+ the window pointer is null.
-</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>&lt;stdarg.h&gt;</STRONG> interface. The Single Unix Specification, Ver-
- sion 2 states that <STRONG>vw_scanw</STRONG> is preferred to <STRONG>vwscanw</STRONG> since
- the latter requires including <STRONG>&lt;varargs.h&gt;</STRONG>, which cannot be
- used in the same file as <STRONG>&lt;stdarg.h&gt;</STRONG>. This implementation
- uses <STRONG>&lt;stdarg.h&gt;</STRONG> for both, because that header is included
- in <STRONG>&lt;curses.h</STRONG>&gt;.
-
- Both XSI and The Single Unix Specification, Version 2
- state that these functions return ERR or OK. Since the
- underlying <STRONG>scanf</STRONG> can return the number of items scanned,
- and the SVr4 code was documented to use this feature, this
- is probably an editing error which was introduced in XSI,
- rather than being done intentionally. Portable applica-
- tions should only test if the return value is ERR, since
- the OK value (zero) is likely to be misleading. One pos-
- sible way to get useful results would be to use a "%n"
- conversion at the end of the format string to ensure that
- something was processed.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ In this implementation, <STRONG>vw_scanw</STRONG> and <STRONG>vwscanw</STRONG> are equivalent, to support
+ legacy applications. However, the latter (<STRONG>vwscanw</STRONG>) is obsolete:
-</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>scanf(3)</STRONG>
+ <STRONG>o</STRONG> The XSI Curses standard, Issue 4 described these functions, noting
+ that the function <STRONG>vwscanw</STRONG> is marked TO BE WITHDRAWN, and is to be
+ replaced by a function <STRONG>vw_scanw</STRONG> using the <STRONG>&lt;stdarg.h&gt;</STRONG> interface.
+
+ <STRONG>o</STRONG> The Single Unix Specification, Version 2 states that <STRONG>vw_scanw</STRONG> is
+ preferred to <STRONG>vwscanw</STRONG> since the latter requires including
+ <STRONG>&lt;varargs.h&gt;</STRONG>, which cannot be used in the same file as <STRONG>&lt;stdarg.h&gt;</STRONG>.
+ This implementation uses <STRONG>&lt;stdarg.h&gt;</STRONG> for both, because that header
+ is included in <STRONG>&lt;curses.h</STRONG>&gt;.
+
+ <STRONG>o</STRONG> X/Open Curses, Issue 5 (December 2007) marked <STRONG>vwscanw</STRONG> (along with
+ <STRONG>vwprintw</STRONG> and the termcap interface) as withdrawn.
+
+ Both XSI and The Single Unix Specification, Version 2 state that these
+ functions return <STRONG>ERR</STRONG> or <STRONG>OK</STRONG>.
+
+ <STRONG>o</STRONG> Since the underlying <STRONG>scanf(3)</STRONG> can return the number of items
+ scanned, and the SVr4 code was documented to use this feature, this
+ is probably an editing error which was introduced in XSI, rather
+ than being done intentionally.
+
+ <STRONG>o</STRONG> This implementation returns the number of items scanned, for com-
+ patibility with SVr4 curses. As of 2018, NetBSD curses also
+ returns the number of items scanned. Both ncurses and NetBSD
+ curses call <STRONG>vsscanf</STRONG> to scan the string, which returns <STRONG>EOF</STRONG> on error.
+
+ <STRONG>o</STRONG> Portable applications should only test if the return value is <STRONG>ERR</STRONG>,
+ since the <STRONG>OK</STRONG> value (zero) is likely to be misleading.
+
+ One possible way to get useful results would be to use a "%n" con-
+ version at the end of the format string to ensure that something
+ was processed.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>,
+ <STRONG>scanf(3)</STRONG>.
- <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
+ <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_scr_dump.3x.html b/doc/html/man/curs_scr_dump.3x.html
index e838995d6bc9..0b1e50ba6142 100644
--- a/doc/html/man/curs_scr_dump.3x.html
+++ b/doc/html/man/curs_scr_dump.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,32 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_scr_dump.3x,v 1.9 2010/12/04 18:40:45 tom Exp @
+ * @Id: curs_scr_dump.3x,v 1.14 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_scr_dump 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_scr_dump 3x</H1>
-<HR>
+<H1 class="no-header">curs_scr_dump 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG> <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
+<STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG> <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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><a name="h2-NAME">NAME</a></H2><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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>scr_dump(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
@@ -61,77 +59,76 @@
<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 da-
- ta 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> 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 writ-
- ten 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><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <STRONG>scr_dump</STRONG> routine dumps the current contents of the <EM>virtual</EM> <EM>screen</EM>
+ to the file <EM>filename</EM>.
+ The <STRONG>scr_restore</STRONG> routine sets the <EM>virtual</EM> <EM>screen</EM> 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 <EM>physical</EM> <EM>screen</EM> to the way it looked in the
+ dump file.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
- upon success.
+ 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> call to share the screen with another process which has
+ done a <STRONG>scr_dump</STRONG> after its <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> call. The data is declared in-
+ valid
- X/Open defines no error conditions. In this implementa-
- tion, each will return an error if the file cannot be
- opened.
+ <STRONG>o</STRONG> if the terminfo capabilities <STRONG>rmcup</STRONG> and <STRONG>nrrmc</STRONG> exist, also
+ <STRONG>o</STRONG> if the terminal has been written to since the preceding <STRONG>scr_dump</STRONG>
+ call.
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG>, and <STRONG>scr_restore</STRONG> may be
- macros.
+ 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>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4, describes these func-
- tions (adding the const qualifiers).
- The SVr4 docs merely say under <STRONG>scr_init</STRONG> that the dump data
- is also considered invalid "if the time-stamp of the tty
- is old" but do not define "old".
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> upon success.
+ X/Open defines no error conditions. In this implementation, each will
+ return an error if the file cannot be opened.
-</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>system(3)</STRONG>
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ Note that <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG>, and <STRONG>scr_restore</STRONG> may be macros.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The XSI Curses standard, Issue 4, describes these functions (adding the
+ const qualifiers).
+
+ The SVr4 docs merely say under <STRONG>scr_init</STRONG> that the dump data is also con-
+ sidered invalid "if the time-stamp of the tty is old" but do not define
+ "old".
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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="scr_dump.5.html">scr_dump(5)</A></STRONG>, <STRONG>system(3)</STRONG>
- <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
+ <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_scroll.3x.html b/doc/html/man/curs_scroll.3x.html
index 120f4eb7f121..4d885e512b16 100644
--- a/doc/html/man/curs_scroll.3x.html
+++ b/doc/html/man/curs_scroll.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,31 +26,30 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_scroll.3x,v 1.15 2010/12/04 18:40:45 tom Exp @
+ * @Id: curs_scroll.3x,v 1.17 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_scroll 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_scroll 3x</H1>
-<HR>
+<H1 class="no-header">curs_scroll 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG> <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
+<STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG> <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>scroll</STRONG>, <STRONG>scrl</STRONG>, <STRONG>wscrl</STRONG> - scroll a <STRONG>curses</STRONG> window
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>scroll(WINDOW</STRONG> <STRONG>*win);</STRONG>
@@ -59,73 +57,65 @@
<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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <STRONG>scroll</STRONG> routine scrolls the window up one line. This involves mov-
+ ing the lines in the window data structure. As an optimization, if the
+ scrolling region of the window is the entire screen, the <EM>physical</EM>
+ <EM>screen</EM> 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 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 cursor position is not changed.
- For these functions to work, scrolling must be enabled via
- <STRONG>scrollok</STRONG>.
+ 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><a name="h2-RETURN-VALUE">RETURN VALUE</a></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 successful completion.
X/Open defines no error conditions.
- This implementation returns an error if the window pointer
- is null, or if scrolling is not enabled in the window,
- e.g., with <STRONG>scrollok</STRONG>.
+ This implementation returns an error if the window pointer is null, or
+ if scrolling is not enabled in the window, e.g., with <STRONG>scrollok</STRONG>.
-</PRE>
-<H2>NOTES</H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></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, to leave open the possibility of smarter
- optimization of multiple scroll actions on the next up-
- date.
+ The SVr4 documentation says that the optimization of physically
+ 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, 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 im-
- plementation it is.
+ Neither the SVr4 nor the XSI documentation specify whether the current
+ attribute or current color-pair of blanks generated by the scroll func-
+ tion is zeroed. Under this implementation it is.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4 describes these func-
- tions.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The XSI Curses standard, Issue 4 describes these functions.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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_scroll.3x.html">curs_scroll(3x)</A></STRONG>
+ <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_slk.3x.html b/doc/html/man/curs_slk.3x.html
index deeabf55cb61..c1dad6e59d1a 100644
--- a/doc/html/man/curs_slk.3x.html
+++ b/doc/html/man/curs_slk.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2020 Free 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,209 +26,281 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_slk.3x,v 1.22 2010/12/04 18:38:55 tom Exp @
+ * @Id: curs_slk.3x,v 1.35 2020/01/18 22:49:38 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_slk 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_slk 3x</H1>
-<HR>
+<H1 class="no-header">curs_slk 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
+<STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>slk_init</STRONG>, <STRONG>slk_set</STRONG>, <STRONG>slk_wset</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_attr_on</STRONG>, <STRONG>slk_attr_set</STRONG>,
- <STRONG>slk_attr_off</STRONG>, <STRONG>slk_attr</STRONG>, <STRONG>slk_color</STRONG> - <STRONG>curses</STRONG> soft label
- routines
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>slk_init</STRONG>, <STRONG>slk_set</STRONG>, <STRONG>slk_wset</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_attr_on</STRONG>, <STRONG>slk_attr_set</STRONG>, <STRONG>slk_attr_off</STRONG>, <STRONG>slk_attr</STRONG>,
+ <STRONG>slk_color</STRONG>, <STRONG>extended_slk_color</STRONG> - <STRONG>curses</STRONG> soft label routines
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</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_init(int</STRONG> <EM>fmt</EM><STRONG>);</STRONG>
+
+ <STRONG>int</STRONG> <STRONG>slk_set(int</STRONG> <EM>labnum</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>label</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fmt</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>slk_wset(int</STRONG> <EM>labnum</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>label</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fmt</EM><STRONG>);</STRONG>
+
+ <STRONG>char</STRONG> <STRONG>*slk_label(int</STRONG> <EM>labnum</EM><STRONG>);</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_attroff(const</STRONG> <STRONG>chtype</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>slk_attrset(const</STRONG> <STRONG>chtype</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>slk_attr_on(attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void*</STRONG> <STRONG>opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>slk_attr_off(const</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG> <STRONG>opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>slk_attr_set(const</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>short</STRONG> <STRONG>color_pair,</STRONG>
- <STRONG>void*</STRONG> <STRONG>opts);</STRONG>
+
+ <STRONG>int</STRONG> <STRONG>slk_attron(const</STRONG> <STRONG>chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>slk_attroff(const</STRONG> <STRONG>chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>slk_attrset(const</STRONG> <STRONG>chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>slk_attr_on(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>slk_attr_off(const</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG> <EM>opts</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>slk_attr_set(const</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts</EM><STRONG>);</STRONG>
+
<STRONG>attr_t</STRONG> <STRONG>slk_attr(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>slk_color(short</STRONG> <STRONG>color_pair);</STRONG>
- <STRONG>int</STRONG> <STRONG>slk_wset(int</STRONG> <STRONG>labnum,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*label,</STRONG> <STRONG>int</STRONG> <STRONG>fmt);</STRONG>
+ <STRONG>int</STRONG> <STRONG>slk_color(short</STRONG> <EM>pair</EM><STRONG>);</STRONG>
+ /* extension */
+ <STRONG>int</STRONG> <STRONG>extended_slk_color(int</STRONG> <EM>pair</EM><STRONG>);</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 la-
- bels of up to five characters each. This is useful for
- today's PC-like enduser devices. ncurses simulates this
- mode by taking over up to two lines at the bottom of the
- screen; it does not 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:
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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 la-
+ bels, <STRONG>curses</STRONG> takes over the bottom line of <STRONG>stdscr</STRONG>, reducing the size of
+ <STRONG>stdscr</STRONG> and the variable <STRONG>LINES</STRONG>. <STRONG>curses</STRONG> standardizes on eight labels of
+ up to eight characters each. In addition to this, the ncurses imple-
+ mentation supports a mode where it simulates 12 labels of up to five
+ characters each. This is useful for PC-like enduser devices. ncurses
+ simulates this mode by taking over up to two lines at the bottom of the
+ screen; it does not try to use any hardware support for this mode.
- <STRONG>0</STRONG> indicates a 3-2-3 arrangement of the labels.
- <STRONG>1</STRONG> indicates a 4-4 arrangement
+</PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
+ 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:
- <STRONG>2</STRONG> indicates the PC-like 4-4-4 mode.
+ <STRONG>0</STRONG> indicates a 3-2-3 arrangement of the labels.
- <STRONG>3</STRONG> 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.
+ <STRONG>1</STRONG> indicates a 4-4 arrangement
- The <STRONG>slk_set</STRONG> routine (and the <STRONG>slk_wset</STRONG> routine for the
- wide-character library) has three parameters:
+ <STRONG>2</STRONG> indicates the PC-like 4-4-4 mode.
- <EM>labnum</EM>
- is the label number, from <STRONG>1</STRONG> to <STRONG>8</STRONG> (12 for <EM>fmt</EM>
- in <STRONG>slk_init</STRONG> is <STRONG>2</STRONG> or <STRONG>3</STRONG>);
+ <STRONG>3</STRONG> 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.
- <EM>label</EM>
- is be the string to put on the label, up to
- eight (five for <EM>fmt</EM> in <STRONG>slk_init</STRONG> is <STRONG>2</STRONG> or <STRONG>3</STRONG>)
- 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-justified, respectively, within the la-
- bel.
+</PRE><H3><a name="h3-Labels">Labels</a></H3><PRE>
+ The <STRONG>slk_set</STRONG> routine (and the <STRONG>slk_wset</STRONG> routine for the wide-character
+ library) has three parameters:
- The <STRONG>slk_refresh</STRONG> and <STRONG>slk_noutrefresh</STRONG> routines correspond to
- the <STRONG>wrefresh</STRONG> and <STRONG>wnoutrefresh</STRONG> routines.
+ <EM>labnum</EM>
+ is the label number, from <STRONG>1</STRONG> to <STRONG>8</STRONG> (12 for <EM>fmt</EM> in <STRONG>slk_init</STRONG> is <STRONG>2</STRONG>
+ or <STRONG>3</STRONG>);
- The <STRONG>slk_label</STRONG> routine returns the current label for label
- number <EM>labnum</EM>, with leading and trailing blanks stripped.
+ <EM>label</EM>
+ is be the string to put on the label, up to eight (five for <EM>fmt</EM>
+ in <STRONG>slk_init</STRONG> is <STRONG>2</STRONG> or <STRONG>3</STRONG>) characters in length. A null string or
+ a null pointer sets up a blank label.
- The <STRONG>slk_clear</STRONG> routine clears the soft labels from the
- screen.
+ <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-justified, respectively,
+ within the label.
- 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_label</STRONG> routine returns the current label for label number <EM>lab-</EM>
+ <EM>num</EM>, with leading and trailing blanks stripped.
- 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).
+</PRE><H3><a name="h3-Screen-updates">Screen updates</a></H3><PRE>
+ The <STRONG>slk_refresh</STRONG> and <STRONG>slk_noutrefresh</STRONG> routines correspond to the <STRONG>wrefresh</STRONG>
+ and <STRONG>wnoutrefresh</STRONG> routines.
- 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.
+ 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.
-</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.
+ The <STRONG>slk_touch</STRONG> routine forces all the soft labels to be output the next
+ time a <STRONG>slk_noutrefresh</STRONG> is performed.
- X/Open defines no error conditions. In this implementa-
- tion
- <STRONG>slk_attr</STRONG>
- returns the attribute used for the soft keys.
+</PRE><H3><a name="h3-Video-attributes">Video attributes</a></H3><PRE>
+ The <STRONG>slk_attron</STRONG>, <STRONG>slk_attrset</STRONG>, <STRONG>slk_attroff</STRONG> and <STRONG>slk_attr</STRONG> routines corre-
+ spond to <STRONG>attron</STRONG>, <STRONG>attrset</STRONG>, <STRONG>attroff</STRONG> and <STRONG>attr_get</STRONG>, respectively. 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).
- <STRONG>slk_attroff</STRONG>, <STRONG>slk_attron</STRONG>, <STRONG>slk_clear</STRONG>,
- <STRONG>slk_noutrefresh</STRONG>, <STRONG>slk_refresh</STRONG>, <STRONG>slk_touch</STRONG>
- return an error if the terminal or the soft-
- keys were not initialized.
- <STRONG>slk_attrset</STRONG>
- returns an error if the terminal or the soft-
- keys were not initialized.
+</PRE><H3><a name="h3-Colors">Colors</a></H3><PRE>
+ 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.
- <STRONG>slk_attr_set</STRONG>
- returns an error if the terminal or the soft-
- keys were not initialized, or the color pair
- is outside the range 0..COLOR_PAIRS-1, or opts
- is not null.
+ Because <STRONG>slk_color</STRONG> accepts only <STRONG>short</STRONG> (signed 16-bit integer) values,
+ this implementation provides <STRONG>extended_slk_color</STRONG> which accepts an inte-
+ ger value, e.g., 32-bits.
- <STRONG>slk_color</STRONG>
- returns an error if the terminal or the soft-
- keys were not initialized, or the color pair
- is outside the range 0..COLOR_PAIRS-1.
- <STRONG>slk_init</STRONG>
- returns an error if the format parameter is
- outside the range 0..3.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ These routines 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>slk_label</STRONG>
- returns <STRONG>NULL</STRONG> on error.
+ X/Open defines no error conditions. In this implementation
- <STRONG>slk_set</STRONG>
- returns an error if the terminal or the soft-
- keys were not initialized, or the <EM>labnum</EM> pa-
- rameter is outside the range of label counts,
- or if the format parameter is outside the
- range 0..2, or if memory for the labels cannot
- be allocated.
+ <STRONG>slk_attr</STRONG>
+ returns the attribute used for the soft keys.
+ <STRONG>slk_attroff</STRONG>, <STRONG>slk_attron</STRONG>, <STRONG>slk_clear</STRONG>, <STRONG>slk_noutrefresh</STRONG>, <STRONG>slk_refresh</STRONG>,
+ <STRONG>slk_touch</STRONG>
+ return an error if the terminal or the softkeys were not ini-
+ tialized.
-</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.
+ <STRONG>slk_attrset</STRONG>
+ returns an error if the terminal or the softkeys were not ini-
+ tialized.
+ <STRONG>slk_attr_set</STRONG>
+ returns an error if the terminal or the softkeys were not ini-
+ tialized, or the color pair is outside the range 0..COL-
+ OR_PAIRS-1.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4, describes these func-
- tions. It changes the argument type of the attribute-ma-
- nipulation 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 spe-
- cific to ncurses.
+ <STRONG>slk_color</STRONG>
+ returns an error if the terminal or the softkeys were not ini-
+ tialized, or the color pair is outside the range 0..COL-
+ OR_PAIRS-1.
+ <STRONG>slk_init</STRONG>
+ returns an error if the format parameter is outside the range
+ 0..3.
-</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>curs_re-</STRONG>
- <STRONG><A HREF="curs_refresh.3x.html">fresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
+ <STRONG>slk_label</STRONG>
+ returns <STRONG>NULL</STRONG> on error.
+
+ <STRONG>slk_set</STRONG>
+ returns an error if the terminal or the softkeys were not ini-
+ tialized, or the <EM>labnum</EM> parameter is outside the range of label
+ counts, or if the format parameter is outside the range 0..2,
+ or if memory for the labels cannot be allocated.
+
+
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+ SVr3 introduced these functions:
+ slk_clear
+ slk_init
+ slk_label
+ slk_noutrefresh
+ slk_refresh
+ slk_restore
+ slk_set
+ slk_touch
+
+ SVr4 added these functions:
+ slk_attroff
+ slk_attron
+ slk_attrset
+ slk_start
+
+ X/Open Curses added these:
+ slk_attr_off
+ slk_attr_on
+ slk_attr_set
+ slk_color
+ slk_wset
+
+
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+ X/Open Curses documents the <EM>opts</EM> argument as reserved for future use,
+ saying that it must be null. This implementation uses that parameter
+ in ABI 6 for the functions which have a color-pair parameter to support
+ extended color pairs.
+
+ For functions which modify the color, e.g., <STRONG>slk_attr_set</STRONG>, if <EM>opts</EM> is
+ set it is treated as a pointer to <STRONG>int</STRONG>, and used to set the color
+ pair instead of the <STRONG>short</STRONG> pair parameter.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ Most applications would use <STRONG>slk_noutrefresh</STRONG> because a <STRONG>wrefresh</STRONG> is like-
+ ly to follow soon.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The XSI Curses standard, Issue 4, described the soft-key functions,
+ with some differences from SVr4 curses:
+
+ <STRONG>o</STRONG> It added functions like the SVr4 attribute-manipulation functions
+ <STRONG>slk_attron</STRONG>, <STRONG>slk_attroff</STRONG>, <STRONG>slk_attrset</STRONG>, but which use <STRONG>attr_t</STRONG> parame-
+ ters (rather than <STRONG>chtype</STRONG>), along with a reserved <EM>opts</EM> parameter.
+
+ Two of these new functions (unlike the SVr4 functions) have no pro-
+ vision for color: <STRONG>slk_attr_on</STRONG> and <STRONG>slk_attr_off</STRONG>.
+
+ The third function (<STRONG>slk_attr_set</STRONG>) has a color-pair parameter.
+
+ <STRONG>o</STRONG> It added <STRONG>const</STRONG> qualifiers to parameters (unnecessarily), and
+
+ <STRONG>o</STRONG> It added <STRONG>slk_color</STRONG>.
+
+ 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.
+
+ X/Open Curses does not specify a limit for the number of colors and
+ color pairs which a terminal can support. However, in its use of <STRONG>short</STRONG>
+ for the parameters, it carries over SVr4's implementation detail for
+ the compiled terminfo database, which uses signed 16-bit numbers. This
+ implementation provides extended versions of those functions which use
+ <STRONG>short</STRONG> parameters, allowing applications to use larger color- and pair-
+ numbers.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>,
+ <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
- <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
+ <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Initialization">Initialization</a></li>
+<li><a href="#h3-Labels">Labels</a></li>
+<li><a href="#h3-Screen-updates">Screen updates</a></li>
+<li><a href="#h3-Video-attributes">Video attributes</a></li>
+<li><a href="#h3-Colors">Colors</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_sp_funcs.3x.html b/doc/html/man/curs_sp_funcs.3x.html
index 5f973584d324..4b5358d3091e 100644
--- a/doc/html/man/curs_sp_funcs.3x.html
+++ b/doc/html/man/curs_sp_funcs.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2010-2018,2019 Free 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,36 +26,36 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_sp_funcs.3x,v 1.6 2013/06/22 17:53:59 tom Exp @
+ * @Id: curs_sp_funcs.3x,v 1.17 2019/11/30 21:01:26 tom Exp @
* ***************************************************************************
* ***************************************************************************
* ***************************************************************************
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_sp_funcs 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_sp_funcs 3x</H1>
-<HR>
+<H1 class="no-header">curs_sp_funcs 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG> <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>
+<STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG> <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- new_prescr - <STRONG>curses</STRONG> screen-pointer extension
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ curs_sp_funcs - <STRONG>curses</STRONG> screen-pointer extension
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
+ <STRONG>int</STRONG> <STRONG>alloc_pair_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int);</STRONG>
<STRONG>int</STRONG> <STRONG>assume_default_colors_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int);</STRONG>
<STRONG>int</STRONG> <STRONG>baudrate_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>beep_sp(SCREEN*);</STRONG>
@@ -71,20 +70,27 @@
<STRONG>int</STRONG> <STRONG>doupdate_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>echo_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>endwin_sp(SCREEN*);</STRONG>
- <STRONG>int</STRONG> <STRONG>erasechar_sp(SCREEN*);</STRONG>
- <STRONG>int</STRONG> <STRONG>filter_sp(SCREEN*);</STRONG>
+ <STRONG>char</STRONG> <STRONG>erasechar_sp(SCREEN*);</STRONG>
+ <STRONG>int</STRONG> <STRONG>extended_color_content_sp(SCREEN</STRONG> <STRONG>*,</STRONG> <STRONG>int,</STRONG> <STRONG>int</STRONG> <STRONG>*,</STRONG> <STRONG>int</STRONG> <STRONG>*,</STRONG> <STRONG>int</STRONG> <STRONG>*);</STRONG>
+ <STRONG>int</STRONG> <STRONG>extended_pair_content_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int</STRONG> <STRONG>*,</STRONG> <STRONG>int</STRONG> <STRONG>*);</STRONG>
+ <STRONG>int</STRONG> <STRONG>extended_slk_color_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
+ <STRONG>void</STRONG> <STRONG>filter_sp(SCREEN*);</STRONG>
+ <STRONG>int</STRONG> <STRONG>find_pair_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int);</STRONG>
+ <STRONG>int</STRONG> <STRONG>free_pair_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
<STRONG>int</STRONG> <STRONG>flash_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>flushinp_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>get_escdelay_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>getmouse_sp(SCREEN*,</STRONG> <STRONG>MEVENT*);</STRONG>
<STRONG>WINDOW*</STRONG> <STRONG>getwin_sp(SCREEN*,</STRONG> <STRONG>FILE*);</STRONG>
- <STRONG>int</STRONG> <STRONG>halfdelay_sp(SCREEN*);</STRONG>
+ <STRONG>int</STRONG> <STRONG>halfdelay_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
<STRONG>bool</STRONG> <STRONG>has_colors_sp(SCREEN*);</STRONG>
<STRONG>bool</STRONG> <STRONG>has_ic_sp(SCREEN*);</STRONG>
<STRONG>bool</STRONG> <STRONG>has_il_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>has_key_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
<STRONG>bool</STRONG> <STRONG>has_mouse_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>init_color_sp(SCREEN*,</STRONG> <STRONG>short,</STRONG> <STRONG>short,</STRONG> <STRONG>short,</STRONG> <STRONG>short);</STRONG>
+ <STRONG>int</STRONG> <STRONG>init_extended_color_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int,</STRONG> <STRONG>int,</STRONG> <STRONG>int);</STRONG>
+ <STRONG>int</STRONG> <STRONG>init_extended_pair_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int,</STRONG> <STRONG>int);</STRONG>
<STRONG>int</STRONG> <STRONG>init_pair_sp(SCREEN*,</STRONG> <STRONG>short,</STRONG> <STRONG>short,</STRONG> <STRONG>short);</STRONG>
<STRONG>int</STRONG> <STRONG>intrflush_sp(SCREEN*,</STRONG> <STRONG>WINDOW*,</STRONG> <STRONG>bool);</STRONG>
<STRONG>bool</STRONG> <STRONG>isendwin_sp(SCREEN*);</STRONG>
@@ -94,6 +100,7 @@
<STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>keyname_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
<STRONG>int</STRONG> <STRONG>keyok_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>bool);</STRONG>
<STRONG>char</STRONG> <STRONG>killchar_sp(SCREEN*);</STRONG>
+ <STRONG>char*</STRONG> <STRONG>longname_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>mcprint_sp(SCREEN*,</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>int);</STRONG>
<STRONG>int</STRONG> <STRONG>mouseinterval_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
<STRONG>mmask_t</STRONG> <STRONG>mousemask_sp(SCREEN*,</STRONG> <STRONG>mmask_t,</STRONG> <STRONG>mmask_t</STRONG> <STRONG>*);</STRONG>
@@ -101,12 +108,12 @@
<STRONG>int</STRONG> <STRONG>napms_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
<STRONG>WINDOW*</STRONG> <STRONG>newpad_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int);</STRONG>
<STRONG>SCREEN*</STRONG> <STRONG>new_prescr(void);</STRONG>
- <STRONG>SCREEN*</STRONG> <STRONG>newterm_sp(SCREEN*,</STRONG> <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>FILE</STRONG> <STRONG>*,</STRONG> <STRONG>FILE</STRONG> <STRONG>*);</STRONG>
+ <STRONG>SCREEN*</STRONG> <STRONG>newterm_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>FILE</STRONG> <STRONG>*,</STRONG> <STRONG>FILE</STRONG> <STRONG>*);</STRONG>
<STRONG>WINDOW*</STRONG> <STRONG>newwin_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int,</STRONG> <STRONG>int,</STRONG> <STRONG>int);</STRONG>
<STRONG>int</STRONG> <STRONG>nl_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>nocbreak_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>noecho_sp(SCREEN*);</STRONG>
- <STRONG>int</STRONG> <STRONG>nofilter_sp(SCREEN*);</STRONG>
+ <STRONG>void</STRONG> <STRONG>nofilter_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>nonl_sp(SCREEN*);</STRONG>
<STRONG>void</STRONG> <STRONG>noqiflush_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>noraw_sp(SCREEN*);</STRONG>
@@ -131,11 +138,11 @@
<STRONG>int</STRONG> <STRONG>slk_attron_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>chtype);</STRONG>
<STRONG>int</STRONG> <STRONG>slk_attr_set_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>attr_t,</STRONG> <STRONG>short,</STRONG> <STRONG>void*);</STRONG>
<STRONG>int</STRONG> <STRONG>slk_attrset_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>chtype);</STRONG>
- <STRONG>int</STRONG> <STRONG>slk_attr_sp(SCREEN*);</STRONG>
+ <STRONG>attr_t</STRONG> <STRONG>slk_attr_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>slk_clear_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>slk_color_sp(SCREEN*,</STRONG> <STRONG>short);</STRONG>
<STRONG>int</STRONG> <STRONG>slk_init_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
- <STRONG>int</STRONG> <STRONG>slk_label_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
+ <STRONG>char*</STRONG> <STRONG>slk_label_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
<STRONG>int</STRONG> <STRONG>slk_noutrefresh_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>slk_refresh_sp(SCREEN*);</STRONG>
<STRONG>int</STRONG> <STRONG>slk_restore_sp(SCREEN*);</STRONG>
@@ -152,6 +159,7 @@
<STRONG>int</STRONG> <STRONG>unget_wch_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t);</STRONG>
<STRONG>int</STRONG> <STRONG>use_default_colors_sp(SCREEN*);</STRONG>
<STRONG>void</STRONG> <STRONG>use_env_sp(SCREEN*,</STRONG> <STRONG>bool);</STRONG>
+ <STRONG>void</STRONG> <STRONG>use_tioctl_sp(SCREEN</STRONG> <STRONG>*,</STRONG> <STRONG>bool);</STRONG>
<STRONG>int</STRONG> <STRONG>use_legacy_coding_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
<STRONG>int</STRONG> <STRONG>vid_attr_sp(SCREEN*,</STRONG> <STRONG>attr_t,</STRONG> <STRONG>short,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG>
<STRONG>int</STRONG> <STRONG>vidattr_sp(SCREEN*,</STRONG> <STRONG>chtype);</STRONG>
@@ -161,123 +169,123 @@
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
- <STRONG>int</STRONG> <STRONG>new_form_sp(SCREEN*,</STRONG> <STRONG>FIELD</STRONG> <STRONG>**);</STRONG>
+ <STRONG>FORM*</STRONG> <STRONG>new_form_sp(SCREEN*,</STRONG> <STRONG>FIELD</STRONG> <STRONG>**);</STRONG>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
- <STRONG>int</STRONG> <STRONG>new_menu_sp(SCREEN*,</STRONG> <STRONG>ITEM</STRONG> <STRONG>**);</STRONG>
+ <STRONG>MENU*</STRONG> <STRONG>new_menu_sp(SCREEN*,</STRONG> <STRONG>ITEM</STRONG> <STRONG>**);</STRONG>
<STRONG>#include</STRONG> <STRONG>&lt;panel.h&gt;</STRONG>
- <STRONG>int</STRONG> <STRONG>ceiling_panel(SCREEN*);</STRONG>
+ <STRONG>PANEL*</STRONG> <STRONG>ceiling_panel(SCREEN*);</STRONG>
<STRONG>PANEL*</STRONG> <STRONG>ground_panel(SCREEN*);</STRONG>
- <STRONG>int</STRONG> <STRONG>update_panels_sp(SCREEN*);</STRONG>
+ <STRONG>void</STRONG> <STRONG>update_panels_sp(SCREEN*);</STRONG>
<STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>del_curterm_sp(SCREEN*,</STRONG> <STRONG>TERMINAL</STRONG> <STRONG>*);</STRONG>
<STRONG>int</STRONG> <STRONG>putp_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
- <STRONG>int</STRONG> <STRONG>tgetflag_sp(SCREEN*,</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+ <STRONG>int</STRONG> <STRONG>tgetflag_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
<STRONG>int</STRONG> <STRONG>tgetent_sp(SCREEN*,</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
- <STRONG>int</STRONG> <STRONG>tgetnum_sp(SCREEN*,</STRONG> <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
- <STRONG>char*</STRONG> <STRONG>tgetstr_sp(SCREEN*,</STRONG> <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>char</STRONG> <STRONG>**);</STRONG>
- <STRONG>int</STRONG> <STRONG>tigetflag_sp(SCREEN*,</STRONG> <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
- <STRONG>int</STRONG> <STRONG>tigetnum_sp(SCREEN*,</STRONG> <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
- <STRONG>char*</STRONG> <STRONG>tigetstr_sp(SCREEN*,</STRONG> <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+ <STRONG>int</STRONG> <STRONG>tgetnum_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+ <STRONG>char*</STRONG> <STRONG>tgetstr_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>char</STRONG> <STRONG>**);</STRONG>
+ <STRONG>int</STRONG> <STRONG>tigetflag_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+ <STRONG>int</STRONG> <STRONG>tigetnum_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+ <STRONG>char*</STRONG> <STRONG>tigetstr_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
<STRONG>int</STRONG> <STRONG>tputs_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>int,</STRONG> <STRONG>NCURSES_SP_OUTC);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- This implementation can be configured to provide a set of
- functions which improve the ability to manage multiple
- screens. This feature can be added to any of the configu-
- rations supported by ncurses; it adds new entrypoints
- without changing the meaning of any of the existing ones.
-
- <STRONG>IMPROVED</STRONG> <STRONG>FUNCTIONS</STRONG>
- Most of the functions are new versions of existing func-
- tions. A parameter is added at the front of the parameter
- list. It is a SCREEN pointer.
-
- The existing functions all use the current screen, which
- is a static variable. The extended functions use the
- specified screen, thereby reducing the number of variables
- which must be modified to update multiple screens.
-
- <STRONG>NEW</STRONG> <STRONG>FUNCTIONS</STRONG>
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ This implementation can be configured to provide a set of functions
+ which improve the ability to manage multiple screens. This feature can
+ be added to any of the configurations supported by ncurses; it adds new
+ entrypoints without changing the meaning of any of the existing ones.
+
+
+</PRE><H3><a name="h3-IMPROVED-FUNCTIONS">IMPROVED FUNCTIONS</a></H3><PRE>
+ Most of the functions are new versions of existing functions. A param-
+ eter is added at the front of the parameter list. It is a SCREEN
+ pointer.
+
+ The existing functions all use the current screen, which is a static
+ variable. The extended functions use the specified screen, thereby re-
+ ducing the number of variables which must be modified to update multi-
+ ple screens.
+
+
+</PRE><H3><a name="h3-NEW-FUNCTIONS">NEW FUNCTIONS</a></H3><PRE>
Here are the new functions:
ceiling_panel
- this returns a pointer to the topmost panel in the
- given screen.
+ this returns a pointer to the topmost panel in the given screen.
ground_panel
- this returns a pointer to the lowest panel in the
- given screen.
+ this returns a pointer to the lowest panel in the given screen.
new_prescr
- when creating a new screen, the library uses static
- variables which have been preset, e.g., by
- <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, etc. With the screen-point-
- er extension, there are situations where it must cre-
- ate a current screen before the unextended library
- does. The <STRONG>new_prescr</STRONG> function is used internally to
- handle these cases. It is also provided as an entry-
- point to allow applications to customize the library
- initialization.
+ when creating a new screen, the library uses static variables
+ which have been preset, e.g., by <STRONG><A HREF="curs_util.3x.html">use_env(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">filter(3x)</A></STRONG>, etc.
+ With the screen-pointer extension, there are situations where it
+ must create a current screen before the unextended library does.
+ The <STRONG>new_prescr</STRONG> function is used internally to handle these cases.
+ It is also provided as an entrypoint to allow applications to cus-
+ tomize the library initialization.
-</PRE>
-<H2>NOTES</H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
This extension introduces some new names:
NCURSES_SP_FUNCS
- This is set to the library patch-level number. In
- the unextended library, this is zero (0), to make it
- useful for checking if the extension is provided.
+ This is set to the library patch-level number. In the unextended
+ library, this is zero (0), to make it useful for checking if the
+ extension is provided.
NCURSES_SP_NAME
- The new functions are named using the macro <EM>NCURS-</EM>
- <EM>ES</EM><STRONG>_</STRONG><EM>SP</EM><STRONG>_</STRONG><EM>NAME</EM>, which hides the actual implementation.
- Currently this adds a "_sp" suffix to the name of the
- unextended function. This manual page indexes the
- extensions showing the full name. However the proper
- usage of these functions uses the macro, to provide
- for the possibility of changing the naming convention
- for specific library configurations.
+ The new functions are named using the macro <EM>NCURSES</EM><STRONG>_</STRONG><EM>SP</EM><STRONG>_</STRONG><EM>NAME</EM>, which
+ hides the actual implementation. Currently this adds a "_sp" suf-
+ fix to the name of the unextended function. This manual page in-
+ dexes the extensions showing the full name. However the proper
+ usage of these functions uses the macro, to provide for the possi-
+ bility of changing the naming convention for specific library con-
+ figurations.
NCURSES_SP_OUTC
- This is a new function-pointer type to use in the
- screen-pointer functions where an <EM>NCURSES</EM><STRONG>_</STRONG><EM>OUTC</EM> is
- used in the unextended library.
+ This is a new function-pointer type to use in the screen-pointer
+ functions where an <EM>NCURSES</EM><STRONG>_</STRONG><EM>OUTC</EM> is used in the unextended library.
NCURSES_OUTC
- This is a function-pointer type used for the cases
- where a function passes characters to the output
- stream, e.g., <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>.
+ This is a function-pointer type used for the cases where a func-
+ tion passes characters to the output stream, e.g., <STRONG><A HREF="curs_terminfo.3x.html">vidputs(3x)</A></STRONG>.
-</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 ncurses ex-
- tensions be conditioned using <EM>NCURSES</EM><STRONG>_</STRONG><EM>SP</EM><STRONG>_</STRONG><EM>FUNCS</EM>.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></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 ncurses extensions be conditioned using <EM>NCURS-</EM>
+ <EM>ES</EM><STRONG>_</STRONG><EM>SP</EM><STRONG>_</STRONG><EM>FUNCS</EM>.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>, <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>.
- <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>
+ <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-IMPROVED-FUNCTIONS">IMPROVED FUNCTIONS</a></li>
+<li><a href="#h3-NEW-FUNCTIONS">NEW FUNCTIONS</a></li>
+</ul>
+</li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_termattrs.3x.html b/doc/html/man/curs_termattrs.3x.html
index 54a73dfc1d66..bdee4a11ef9f 100644
--- a/doc/html/man/curs_termattrs.3x.html
+++ b/doc/html/man/curs_termattrs.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2018 Free 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,33 +26,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_termattrs.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
+ * @Id: curs_termattrs.3x,v 1.14 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_termattrs 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_termattrs 3x</H1>
-<HR>
+<H1 class="no-header">curs_termattrs 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
+<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>baudrate</STRONG>, <STRONG>erasechar</STRONG>, <STRONG>erasewchar</STRONG>, <STRONG>has_ic</STRONG>, <STRONG>has_il</STRONG>, <STRONG>killchar</STRONG>,
- <STRONG>killwchar</STRONG>, <STRONG>longname</STRONG>, <STRONG>term_attrs</STRONG>, <STRONG>termattrs</STRONG>, <STRONG>termname</STRONG> -
- <STRONG>curses</STRONG> environment query routines
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>baudrate</STRONG>, <STRONG>erasechar</STRONG>, <STRONG>erasewchar</STRONG>, <STRONG>has_ic</STRONG>, <STRONG>has_il</STRONG>, <STRONG>killchar</STRONG>, <STRONG>killwchar</STRONG>,
+ <STRONG>longname</STRONG>, <STRONG>term_attrs</STRONG>, <STRONG>termattrs</STRONG>, <STRONG>termname</STRONG> - <STRONG>curses</STRONG> environment query
+ routines
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>baudrate(void);</STRONG>
@@ -69,93 +67,108 @@
<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>erasewchar</STRONG> routine stores the current erase character
- in the location referenced by <EM>ch</EM>. If no erase character
- has been defined, the routine fails and the location ref-
- erenced by <EM>ch</EM> is not changed.
-
- 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>killwchar</STRONG> routine stores the current line-kill charac-
- ter in the location referenced by <EM>ch</EM>. If no line-kill
- character has been defined, the routine fails and the
- location referenced by <EM>ch</EM> is not changed.
-
- 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 does not support a video attribute
- that an application program is trying to use, <STRONG>curses</STRONG> may
- substitute a different video attribute for it. The <STRONG>ter-</STRONG>
- <STRONG>mattrs</STRONG> and <STRONG>term_attrs</STRONG> functions return a logical <STRONG>OR</STRONG> of all
- video attributes supported by the terminal using <EM>A</EM><STRONG>_</STRONG> and
- <EM>WA</EM><STRONG>_</STRONG> constants respectively. This information is useful
- when a <STRONG>curses</STRONG> program needs complete control over the
- appearance of the screen.
-
- The <STRONG>termname</STRONG> routine returns the terminal name used by
- <STRONG>setupterm</STRONG>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+</PRE><H3><a name="h3-baudrate">baudrate</a></H3><PRE>
+ The <STRONG>baudrate</STRONG> routine returns the output speed of the terminal. The
+ number returned is in bits per second, for example <STRONG>9600</STRONG>, and is an
+ integer.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
+
+</PRE><H3><a name="h3-erasechar_-erasewchar">erasechar, erasewchar</a></H3><PRE>
+ The <STRONG>erasechar</STRONG> routine returns the user's current erase character.
+
+ The <STRONG>erasewchar</STRONG> routine stores the current erase character in the loca-
+ tion referenced by <EM>ch</EM>. If no erase character has been defined, the
+ routine fails and the location referenced by <EM>ch</EM> is not changed.
+
+
+</PRE><H3><a name="h3-has_is_-has_il">has_is, has_il</a></H3><PRE>
+ 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>.
+
+
+</PRE><H3><a name="h3-killchar_-killwchar">killchar, killwchar</a></H3><PRE>
+ The <STRONG>killchar</STRONG> routine returns the user's current line kill character.
+
+ The <STRONG>killwchar</STRONG> routine stores the current line-kill character in the
+ location referenced by <EM>ch</EM>. If no line-kill character has been defined,
+ the routine fails and the location referenced by <EM>ch</EM> is not changed.
+
+
+</PRE><H3><a name="h3-longname">longname</a></H3><PRE>
+ 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 characters. 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.
+
+
+</PRE><H3><a name="h3-termattrs_-term_attrs">termattrs, term_attrs</a></H3><PRE>
+ If a given terminal does not support a video attribute that an applica-
+ tion program is trying to use, <STRONG>curses</STRONG> may substitute a different video
+ attribute for it. The <STRONG>termattrs</STRONG> and <STRONG>term_attrs</STRONG> functions return a log-
+ ical <STRONG>OR</STRONG> of all video attributes supported by the terminal using <EM>A</EM><STRONG>_</STRONG> and
+ <EM>WA</EM><STRONG>_</STRONG> constants respectively. This information is useful when a <STRONG>curses</STRONG>
+ program needs complete control over the appearance of the screen.
+
+
+</PRE><H3><a name="h3-termname">termname</a></H3><PRE>
+ The <STRONG>termname</STRONG> routine returns the terminal name used by <STRONG>setupterm</STRONG>.
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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.
+ 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 com-
+ pletion.
-</PRE>
-<H2>NOTES</H2><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></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>. Most versions of curses truncate the result
- returned by <STRONG>termname</STRONG> to 14 characters.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The XSI Curses standard, Issue 4 describes these functions. It changes
+ the return type of <STRONG>termattrs</STRONG> to the new type <STRONG>attr_t</STRONG>. Most versions of
+ curses truncate the result returned by <STRONG>termname</STRONG> to 14 characters.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>
- <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
+ <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-baudrate">baudrate</a></li>
+<li><a href="#h3-erasechar_-erasewchar">erasechar, erasewchar</a></li>
+<li><a href="#h3-has_is_-has_il">has_is, has_il</a></li>
+<li><a href="#h3-killchar_-killwchar">killchar, killwchar</a></li>
+<li><a href="#h3-longname">longname</a></li>
+<li><a href="#h3-termattrs_-term_attrs">termattrs, term_attrs</a></li>
+<li><a href="#h3-termname">termname</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_termcap.3x.html b/doc/html/man/curs_termcap.3x.html
index 54197aea43ce..f701f8a1322f 100644
--- a/doc/html/man/curs_termcap.3x.html
+++ b/doc/html/man/curs_termcap.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,33 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_termcap.3x,v 1.30 2013/01/19 15:58:48 tom Exp @
+ * @Id: curs_termcap.3x,v 1.42 2019/11/30 21:01:40 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_termcap 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_termcap 3x</H1>
-<HR>
+<H1 class="no-header">curs_termcap 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
+<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>PC</STRONG>, <STRONG>UP</STRONG>, <STRONG>BC</STRONG>, <STRONG>ospeed</STRONG>, <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><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>PC</STRONG>, <STRONG>UP</STRONG>, <STRONG>BC</STRONG>, <STRONG>ospeed</STRONG>, <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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
@@ -63,174 +60,209 @@
<STRONG>extern</STRONG> <STRONG>short</STRONG> <STRONG>ospeed;</STRONG>
<STRONG>int</STRONG> <STRONG>tgetent(char</STRONG> <STRONG>*bp,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*name);</STRONG>
- <STRONG>int</STRONG> <STRONG>tgetflag(char</STRONG> <STRONG>*id);</STRONG>
- <STRONG>int</STRONG> <STRONG>tgetnum(char</STRONG> <STRONG>*id);</STRONG>
- <STRONG>char</STRONG> <STRONG>*tgetstr(char</STRONG> <STRONG>*id,</STRONG> <STRONG>char</STRONG> <STRONG>**area);</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.
-
- <STRONG>INITIALIZATION</STRONG>
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These routines are included as a conversion aid for programs 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 capabilities of entries for which a terminfo entry has
+ been compiled.
+
+
+</PRE><H3><a name="h3-INITIALIZATION">INITIALIZATION</a></H3><PRE>
The <STRONG>tgetent</STRONG> routine loads the entry for <EM>name</EM>. It returns:
1 on success,
- 0 if there is no such entry (or that it is a generic
- type, having too little information for curses ap-
- plications to run), and
+ 0 if there is no such entry (or that it is a generic type, having
+ too little information for curses applications to run), and
-1 if the terminfo database could not be found.
This differs from the <EM>termcap</EM> library in two ways:
- <STRONG>o</STRONG> The emulation ignores the buffer pointer <EM>bp</EM>. The
- <EM>termcap</EM> library would store a copy of the terminal
- description in the area referenced by this pointer.
- However, ncurses stores its terminal descriptions
- in compiled binary form, which is not the same
+ <STRONG>o</STRONG> The emulation ignores the buffer pointer <EM>bp</EM>. The <EM>termcap</EM> li-
+ brary would store a copy of the terminal description in the area
+ referenced by this pointer. However, ncurses stores its termi-
+ nal descriptions in compiled binary form, which is not the same
thing.
- <STRONG>o</STRONG> There is a difference in return codes. The <EM>termcap</EM>
- library does not check if the terminal description
- is marked with the <EM>generic</EM> capability, or if the
- terminal description has cursor-addressing.
+ <STRONG>o</STRONG> There is a difference in return codes. The <EM>termcap</EM> library does
+ not check if the terminal description is marked with the <EM>generic</EM>
+ capability, or if the terminal description has cursor-address-
+ ing.
- <STRONG>CAPABILITY</STRONG> <STRONG>VALUES</STRONG>
- The <STRONG>tgetflag</STRONG> routine gets the boolean entry for <EM>id</EM>, or ze-
- ro 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.
+</PRE><H3><a name="h3-CAPABILITY-VALUES">CAPABILITY VALUES</a></H3><PRE>
+ The <STRONG>tgetflag</STRONG> routine gets the boolean entry for <EM>id</EM>, or zero 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 re-
- turned string. The return value will also be copied to
- the buffer pointed to by <EM>area</EM>, and the <EM>area</EM> value will be
- updated to point past the null ending this value.
+ The <STRONG>tgetnum</STRONG> routine gets the numeric entry for <EM>id</EM>, or -1 if it is not
+ available.
- Only the first two characters of the <STRONG>id</STRONG> parameter of <STRONG>tget-</STRONG>
- <STRONG>flag</STRONG>, <STRONG>tgetnum</STRONG> and <STRONG>tgetstr</STRONG> are compared in lookups.
+ 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 <EM>area</EM> pa-
+ rameter is used as follows:
- <STRONG>FORMATTING</STRONG> <STRONG>CAPABILITIES</STRONG>
- 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>.
+ <STRONG>o</STRONG> It is assumed to be the address of a pointer to a buffer managed
+ by the calling application.
- 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.
+ <STRONG>o</STRONG> However, ncurses checks to ensure that <STRONG>area</STRONG> is not NULL, and al-
+ so that the resulting buffer pointer is not NULL. If either
+ check fails, the <EM>area</EM> parameter is ignored.
- <STRONG>GLOBAL</STRONG> <STRONG>VARIABLES</STRONG>
- The variables <STRONG>PC</STRONG>, <STRONG>UP</STRONG> and <STRONG>BC</STRONG> are set by <STRONG>tgetent</STRONG> to the ter-
- minfo entry's data for <STRONG>pad_char</STRONG>, <STRONG>cursor_up</STRONG> and
- <STRONG>backspace_if_not_bs</STRONG>, respectively. <STRONG>UP</STRONG> is not used by
- ncurses. <STRONG>PC</STRONG> is used in the <STRONG>tdelay_output</STRONG> function. <STRONG>BC</STRONG> is
- used in the <STRONG>tgoto</STRONG> emulation. The variable <STRONG>ospeed</STRONG> is set
- by ncurses in a system-specific coding to reflect the ter-
- minal speed.
+ <STRONG>o</STRONG> If the checks succeed, ncurses also copies the return value to
+ the buffer pointed to by <EM>area</EM>, and the <EM>area</EM> value will be updat-
+ ed to point past the null ending this value.
+ <STRONG>o</STRONG> The return value itself is an address in the terminal descrip-
+ tion which is loaded into memory.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- Except where explicitly noted, routines that return an in-
- teger return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 only specifies
- "an integer value other than <STRONG>ERR</STRONG>") upon successful comple-
- tion.
+ Only the first two characters of the <STRONG>id</STRONG> parameter of <STRONG>tgetflag</STRONG>, <STRONG>tgetnum</STRONG>
+ and <STRONG>tgetstr</STRONG> are compared in lookups.
- Routines that return pointers return <STRONG>NULL</STRONG> on error.
+</PRE><H3><a name="h3-FORMATTING-CAPABILITIES">FORMATTING CAPABILITIES</a></H3><PRE>
+ The <STRONG>tgoto</STRONG> routine expands the given capability using the parameters.
-</PRE>
-<H2>BUGS</H2><PRE>
- If you call <STRONG>tgetstr</STRONG> to fetch <STRONG>ca</STRONG> or any other parameterized
- string, be aware that it will be returned in terminfo no-
- tation, not the older and not-quite-compatible termcap no-
- tation. This will not cause problems if all you do with
- it is call <STRONG>tgoto</STRONG> or <STRONG>tparm</STRONG>, which both expand terminfo-
- style strings as terminfo. (The <STRONG>tgoto</STRONG> function, if con-
- figured to support termcap, will check if the string is
- indeed terminfo-style by looking for "%p" parameters or
- "$&lt;..&gt;" delays, and invoke a termcap-style parser if the
- string does not appear to be terminfo).
-
- 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.
-
- Note that termcap has nothing analogous to terminfo's <STRONG>sgr</STRONG>
- string. One consequence of this is that termcap applica-
- tions assume me (terminfo <STRONG>sgr0</STRONG>) does not reset the alter-
- nate character set. This implementation checks for, and
- modifies the data shown to the termcap interface to accom-
- modate termcap's limitation in this respect.
+ <STRONG>o</STRONG> Because the capability may have padding characters, the output of
+ <STRONG>tgoto</STRONG> should be passed to <STRONG>tputs</STRONG> rather than some other output func-
+ tion such as <STRONG>printf</STRONG>.
+ <STRONG>o</STRONG> While <STRONG>tgoto</STRONG> is assumed to be used for the two-parameter cursor po-
+ sitioning capability, termcap applications also use it for single-
+ parameter capabilities.
-</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. In par-
- ticular, an omission in the XSI Curses documentation has
- been misinterpreted to mean that <STRONG>tgetent</STRONG> returns <STRONG>OK</STRONG> or
- <STRONG>ERR</STRONG>. Because the purpose of these functions is to provide
- compatibility with the <EM>termcap</EM> library, that is a defect
- in XCurses, Issue 4, Version 2 rather than in ncurses.
-
- External variables are provided for support of certain
- termcap applications. However, termcap applications' use
- of those variables is poorly documented, e.g., not distin-
- guishing between input and output. In particular, some
- applications are reported to declare and/or modify <STRONG>ospeed</STRONG>.
-
- The comment that only the first two characters of the <STRONG>id</STRONG>
- parameter are used escapes many application developers.
- The original BSD 4.2 termcap library (and historical
- relics thereof) did not require a trailing null NUL on the
- parameter name passed to <STRONG>tgetstr</STRONG>, <STRONG>tgetnum</STRONG> and <STRONG>tgetflag</STRONG>.
- Some applications assume that the termcap interface does
- not require the trailing NUL for the parameter name. Tak-
- ing into account these issues:
-
- <STRONG>o</STRONG> As a special case, <STRONG>tgetflag</STRONG> matched against a single-
- character identifier provided that was at the end of
- the terminal description. You should not rely upon
- this behavior in portable programs. This implementa-
- tion disallows matches against single-character capa-
- bility names.
-
- <STRONG>o</STRONG> This implementation disallows matches by the termcap
- interface against extended capability names which are
- longer than two characters.
+ Doing this shows a quirk in <STRONG>tgoto</STRONG>: most hardware terminals use cur-
+ sor addressing with <EM>row</EM> first, but the original developers of the
+ termcap interface chose to put the <EM>column</EM> parameter first. The
+ <STRONG>tgoto</STRONG> function swaps the order of parameters. It does this also
+ for calls requiring only a single parameter. In that case, the
+ first parameter is merely a placeholder.
+ <STRONG>o</STRONG> Normally the ncurses library is compiled with terminfo support. In
+ that case, <STRONG>tgoto</STRONG> uses <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> (a more capable formatter).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+ However, <STRONG>tparm</STRONG> is not a <EM>termcap</EM> feature, and portable <EM>termcap</EM> ap-
+ plications should not rely upon its availability.
+
+ 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 termcap or terminfo name.
+
+
+</PRE><H3><a name="h3-GLOBAL-VARIABLES">GLOBAL VARIABLES</a></H3><PRE>
+ The variables <STRONG>PC</STRONG>, <STRONG>UP</STRONG> and <STRONG>BC</STRONG> are set by <STRONG>tgetent</STRONG> to the terminfo entry's
+ data for <STRONG>pad_char</STRONG>, <STRONG>cursor_up</STRONG> and <STRONG>backspace_if_not_bs</STRONG>, respectively. <STRONG>UP</STRONG>
+ is not used by ncurses. <STRONG>PC</STRONG> is used in the <STRONG>tdelay_output</STRONG> function. <STRONG>BC</STRONG>
+ is used in the <STRONG>tgoto</STRONG> emulation. The variable <STRONG>ospeed</STRONG> is set by ncurses
+ in a system-specific coding to reflect the terminal speed.
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Except where explicitly noted, routines that return an integer return
+ <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 only specifies "an integer value other
+ than <STRONG>ERR</STRONG>") upon successful completion.
+
+ Routines that return pointers return <STRONG>NULL</STRONG> on error.
+
+
+</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
+ If you call <STRONG>tgetstr</STRONG> to fetch <STRONG>ca</STRONG> or any other parameterized string, be
+ aware that it will be returned in terminfo notation, not the older and
+ not-quite-compatible termcap notation. This will not cause problems if
+ all you do with it is call <STRONG>tgoto</STRONG> or <STRONG>tparm</STRONG>, which both expand terminfo-
+ style strings as terminfo. (The <STRONG>tgoto</STRONG> function, if configured to sup-
+ port termcap, will check if the string is indeed terminfo-style by
+ looking for "%p" parameters or "$&lt;..&gt;" delays, and invoke a termcap-
+ style parser if the string does not appear to be terminfo).
+
+ Because terminfo conventions for representing padding in string capa-
+ bilities differ from termcap's, <STRONG>tputs("50");</STRONG> will put out a literal
+ "50" rather than busy-waiting for 50 milliseconds. Cope with it.
+
+ Note that termcap has nothing analogous to terminfo's <STRONG>sgr</STRONG> string. One
+ consequence of this is that termcap applications assume me (terminfo
+ <STRONG>sgr0</STRONG>) does not reset the alternate character set. This implementation
+ checks for, and modifies the data shown to the termcap interface to ac-
+ commodate termcap's limitation in this respect.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are provided for supporting legacy applications, and
+ should not be used in new programs:
+
+ <STRONG>o</STRONG> The XSI Curses standard, Issue 4 describes these functions. Howev-
+ er, they are marked TO BE WITHDRAWN and may be removed in future
+ versions.
+
+ <STRONG>o</STRONG> X/Open Curses, Issue 5 (December 2007) marked the termcap interface
+ (along with <STRONG>vwprintw</STRONG> and <STRONG>vwscanw</STRONG>) as withdrawn.
+
+ 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 re-
+ turned ever since SVr1. In particular, an omission in the XSI Curses
+ documentation has been misinterpreted to mean that <STRONG>tgetent</STRONG> returns <STRONG>OK</STRONG>
+ or <STRONG>ERR</STRONG>. Because the purpose of these functions is to provide compati-
+ bility with the <EM>termcap</EM> library, that is a defect in XCurses, Issue 4,
+ Version 2 rather than in ncurses.
+
+ External variables are provided for support of certain termcap applica-
+ tions. However, termcap applications' use of those variables is poorly
+ documented, e.g., not distinguishing between input and output. In par-
+ ticular, some applications are reported to declare and/or modify <STRONG>os-</STRONG>
+ <STRONG>peed</STRONG>.
+
+ The comment that only the first two characters of the <STRONG>id</STRONG> parameter are
+ used escapes many application developers. The original BSD 4.2 termcap
+ library (and historical relics thereof) did not require a trailing null
+ NUL on the parameter name passed to <STRONG>tgetstr</STRONG>, <STRONG>tgetnum</STRONG> and <STRONG>tgetflag</STRONG>.
+ Some applications assume that the termcap interface does not require
+ the trailing NUL for the parameter name. Taking into account these is-
+ sues:
+
+ <STRONG>o</STRONG> As a special case, <STRONG>tgetflag</STRONG> matched against a single-character
+ identifier provided that was at the end of the terminal descrip-
+ tion. You should not rely upon this behavior in portable programs.
+ This implementation disallows matches against single-character ca-
+ pability names.
+
+ <STRONG>o</STRONG> This implementation disallows matches by the termcap interface
+ against extended capability names which are longer than two charac-
+ ters.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>.
- http://invisible-island.net/ncurses/tctest.html
+ https://invisible-island.net/ncurses/tctest.html
- <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
+ <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-INITIALIZATION">INITIALIZATION</a></li>
+<li><a href="#h3-CAPABILITY-VALUES">CAPABILITY VALUES</a></li>
+<li><a href="#h3-FORMATTING-CAPABILITIES">FORMATTING CAPABILITIES</a></li>
+<li><a href="#h3-GLOBAL-VARIABLES">GLOBAL VARIABLES</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-BUGS">BUGS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_terminfo.3x.html b/doc/html/man/curs_terminfo.3x.html
index f0a6ecc39cdf..0e33754b1aae 100644
--- a/doc/html/man/curs_terminfo.3x.html
+++ b/doc/html/man/curs_terminfo.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1999-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2018,2020 Free 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,100 +26,110 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_terminfo.3x,v 1.43 2013/07/20 19:29:59 tom Exp @
+ * @Id: curs_terminfo.3x,v 1.63 2020/01/18 23:55:46 tom Exp @
* ***************************************************************************
* ***************************************************************************
* ***************************************************************************
* ***************************************************************************
* ***************************************************************************
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_terminfo 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_terminfo 3x</H1>
-<HR>
+<H1 class="no-header">curs_terminfo 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
+<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>del_curterm</STRONG>, <STRONG>mvcur</STRONG>, <STRONG>putp</STRONG>, <STRONG>restartterm</STRONG>, <STRONG>set_curterm</STRONG>,
- <STRONG>setterm</STRONG>, <STRONG>setupterm</STRONG>, <STRONG>tigetflag</STRONG>, <STRONG>tigetnum</STRONG>, <STRONG>tigetstr</STRONG>, <STRONG>tiparm</STRONG>,
- <STRONG>tparm</STRONG>, <STRONG>tputs</STRONG>, <STRONG>vid_attr</STRONG>, <STRONG>vid_puts</STRONG>, <STRONG>vidattr</STRONG>, <STRONG>vidputs</STRONG> -
- <STRONG>curses</STRONG> interfaces to terminfo database
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>del_curterm</STRONG>, <STRONG>mvcur</STRONG>, <STRONG>putp</STRONG>, <STRONG>restartterm</STRONG>, <STRONG>set_curterm</STRONG>, <STRONG>setterm</STRONG>, <STRONG>setupterm</STRONG>,
+ <STRONG>tigetflag</STRONG>, <STRONG>tigetnum</STRONG>, <STRONG>tigetstr</STRONG>, <STRONG>tiparm</STRONG>, <STRONG>tparm</STRONG>, <STRONG>tputs</STRONG>, <STRONG>vid_attr</STRONG>,
+ <STRONG>vid_puts</STRONG>, <STRONG>vidattr</STRONG>, <STRONG>vidputs</STRONG> - <STRONG>curses</STRONG> interfaces to terminfo database
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
- <STRONG>int</STRONG> <STRONG>setupterm(char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fildes</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>errret</EM><STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>setterm(char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>);</STRONG>
+ <STRONG>TERMINAL</STRONG> <STRONG>*cur_term;</STRONG>
+
+ <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolnames[];</STRONG>
+ <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolcodes[];</STRONG>
+ <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolfnames[];</STRONG>
+ <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numnames[];</STRONG>
+ <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numcodes[];</STRONG>
+ <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numfnames[];</STRONG>
+ <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strnames[];</STRONG>
+ <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strcodes[];</STRONG>
+ <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strfnames[];</STRONG>
+
+ <STRONG>int</STRONG> <STRONG>setupterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>filedes</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>errret</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>setterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>);</STRONG>
<STRONG>TERMINAL</STRONG> <STRONG>*set_curterm(TERMINAL</STRONG> <STRONG>*</STRONG><EM>nterm</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>del_curterm(TERMINAL</STRONG> <STRONG>*</STRONG><EM>oterm</EM><STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>restartterm(char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fildes</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>errret</EM><STRONG>);</STRONG>
- <STRONG>char</STRONG> <STRONG>*tparm(char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
+ <STRONG>int</STRONG> <STRONG>restartterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>filedes</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>errret</EM><STRONG>);</STRONG>
+
+ <STRONG>char</STRONG> <STRONG>*tparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
<STRONG>int</STRONG> <STRONG>tputs(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>affcnt</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG>
<STRONG>int</STRONG> <STRONG>putp(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
+
<STRONG>int</STRONG> <STRONG>vidputs(chtype</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG>
<STRONG>int</STRONG> <STRONG>vidattr(chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
<STRONG>int</STRONG> <STRONG>vid_puts(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG>
<STRONG>int</STRONG> <STRONG>vid_attr(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+
<STRONG>int</STRONG> <STRONG>mvcur(int</STRONG> <EM>oldrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>oldcol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>newrow</EM>, int <EM>newcol</EM><STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>tigetflag(char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
- <STRONG>int</STRONG> <STRONG>tigetnum(char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
- <STRONG>char</STRONG> <STRONG>*tigetstr(char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
+
+ <STRONG>int</STRONG> <STRONG>tigetflag(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>tigetnum(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
+ <STRONG>char</STRONG> <STRONG>*tigetstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
+
<STRONG>char</STRONG> <STRONG>*tiparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>...);</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.
-
- <STRONG>Initialization</STRONG>
- Initially, <STRONG>setupterm</STRONG> should be called. Note that <STRONG>se-</STRONG>
- <STRONG>tupterm</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>].
-
- Each initialization routine provides applications with the
- terminal capabilities either directly (via header defini-
- tions), or by special functions. The header files <STRONG>curs-</STRONG>
- <STRONG>es.h</STRONG> and <STRONG>term.h</STRONG> should be included (in this order) to get
- the definitions for these strings, numbers, and flags.
-
- The <STRONG>terminfo</STRONG> variables <STRONG>lines</STRONG> and <STRONG>columns</STRONG> are initialized
- by <STRONG>setupterm</STRONG> as follows:
-
- <STRONG>o</STRONG> 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.
-
- <STRONG>o</STRONG> Otherwise, if the environment variables <STRONG>LINES</STRONG> and <STRONG>COL-</STRONG>
- <STRONG>UMNS</STRONG> exist, their values are used. If these environ-
- ment variables do not exist and the program is running
- in a window, the current window size is used. Other-
- wise, 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.
-
- 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 <STRONG>reset_shell_mode</STRONG> to restore the tty modes before ex-
- iting [see <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>].
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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 capabil-
+ ities, such as programming function keys. For all other functionality,
+ <STRONG>curses</STRONG> routines are more suitable and their use is recommended.
+
+
+</PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
+ Initially, <STRONG>setupterm</STRONG> should be called. The high-level curses functions
+ <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG> call <STRONG>setupterm</STRONG> to initialize the low-level set of
+ terminal-dependent variables [listed in <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>].
+
+ Applications can use the terminal capabilities either directly (via
+ header definitions), or by special functions. The header files <STRONG>curs-</STRONG>
+ <STRONG>es.h</STRONG> and <STRONG>term.h</STRONG> should be included (in this order) to get the defini-
+ tions for these strings, numbers, and flags.
+
+ The <STRONG>terminfo</STRONG> variables <STRONG>lines</STRONG> and <STRONG>columns</STRONG> are initialized by <STRONG>setupterm</STRONG>
+ as follows:
+
+ <STRONG>o</STRONG> 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.
+
+ <STRONG>o</STRONG> Otherwise, if the environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> exist,
+ their values 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.
+
+ 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 <STRONG>reset_shell_mode</STRONG> to restore the tty
+ modes before exiting [see <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>].
Programs which use cursor addressing should
@@ -130,139 +139,163 @@
Programs which execute shell subprocesses should
- <STRONG>o</STRONG> call <STRONG>reset_shell_mode</STRONG> and output <STRONG>exit_ca_mode</STRONG> before
- the shell is called and
+ <STRONG>o</STRONG> call <STRONG>reset_shell_mode</STRONG> and output <STRONG>exit_ca_mode</STRONG> before the shell is
+ called and
+
+ <STRONG>o</STRONG> output <STRONG>enter_ca_mode</STRONG> and call <STRONG>reset_prog_mode</STRONG> after returning from
+ the shell.
- <STRONG>o</STRONG> 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, initializing the
+ <STRONG>terminfo</STRONG> structures, but does not set up the output virtualization
+ structures used by <STRONG>curses</STRONG>. These are its parameters:
- 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>er-</EM>
- <EM>rret</EM>. A return value of <STRONG>OK</STRONG> combined with status of <STRONG>1</STRONG> in
- <EM>errret</EM> is normal. If <STRONG>ERR</STRONG> is returned, examine <EM>errret</EM>:
+ <EM>term</EM> is the terminal type, a character string. If <EM>term</EM> is null, the
+ environment variable <STRONG>TERM</STRONG> is used.
- <STRONG>1</STRONG> means that the terminal is hardcopy, cannot be used
- for curses applications.
+ <EM>filedes</EM>
+ is the file descriptor used for all output.
- <STRONG>setupterm</STRONG> determines if the entry is a hardcopy type
- by checking the <EM>hc</EM> (<EM>hardcopy</EM>) capability.
+ <EM>errret</EM>
+ points to an optional location where an error status can be re-
+ turned to the caller. 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 return value of <STRONG>OK</STRONG> combined with sta-
+ tus of <STRONG>1</STRONG> in <EM>errret</EM> is normal.
- <STRONG>0</STRONG> means that the terminal could not be found, or that
- it is a generic type, having too little information
- for curses applications to run.
+ If <STRONG>ERR</STRONG> is returned, examine <EM>errret</EM>:
- <STRONG>setupterm</STRONG> determines if the entry is a generic type
- by checking the <EM>gn</EM> (<EM>generic</EM>) capability.
+ <STRONG>1</STRONG> means that the terminal is hardcopy, cannot be used for
+ curses applications.
- <STRONG>-1</STRONG> means that the <STRONG>terminfo</STRONG> database could not be found.
+ <STRONG>setupterm</STRONG> determines if the entry is a hardcopy type by
+ checking the <STRONG>hc</STRONG> (<STRONG>hardcopy</STRONG>) capability.
- 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>0</STRONG> means that the terminal could not be found, or that it is
+ a generic type, having too little information for curses
+ applications to run.
- <STRONG>setupterm((char</STRONG> <STRONG>*)0,</STRONG> <STRONG>1,</STRONG> <STRONG>(int</STRONG> <STRONG>*)0);</STRONG>,
+ <STRONG>setupterm</STRONG> determines if the entry is a generic type by
+ checking the <STRONG>gn</STRONG> (<STRONG>generic</STRONG>) capability.
- which uses all the defaults and sends the output to <STRONG>std-</STRONG>
- <STRONG>out</STRONG>.
+ <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 find-
+ ing 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>stdout</STRONG>.
The <STRONG>setterm</STRONG> routine was 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 provided for BSD compatibility, and is
- not recommended for new programs.
-
- <STRONG>The</STRONG> <STRONG>Terminal</STRONG> <STRONG>State</STRONG>
- The <STRONG>setupterm</STRONG> routine stores its information about the
- terminal in a <STRONG>TERMINAL</STRONG> structure pointed to by the global
- variable <STRONG>cur_term</STRONG>. If it detects an error, or decides
- that the terminal is unsuitable (hardcopy or generic), it
- discards this information, making it not available to ap-
- plications.
-
- If <STRONG>setupterm</STRONG> is called repeatedly for the same terminal
- type, it will reuse the information. It maintains only
- one copy of a given terminal's capabilities in memory. If
- it is called for different terminal types, <STRONG>setupterm</STRONG> allo-
- cates new storage for each set of terminal capabilities.
-
- The <STRONG>set_curterm</STRONG> routine sets <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 re-
- fer 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). <STRONG>restartterm</STRONG> assumes that the
- windows and the input and output options are the same as
- when memory was saved, but the terminal type and baud rate
- may be different. Accordingly, <STRONG>restartterm</STRONG> saves various
- tty state bits, calls <STRONG>setupterm</STRONG>, and then restores the
- bits.
-
- <STRONG>Formatting</STRONG> <STRONG>Output</STRONG>
- 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.
-
- <STRONG>tiparm</STRONG> is a newer form of <STRONG>tparm</STRONG> which uses <EM>&lt;stdarg.h&gt;</EM>
- rather than a fixed-parameter list. Its numeric parame-
- ters are integers (int) rather than longs.
-
- <STRONG>Output</STRONG> <STRONG>Functions</STRONG>
- 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>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> routines correspond to vidattr
- and vidputs, respectively. They use a set of arguments
- for representing the video attributes plus color, i.e.,
- one of type attr_t for the attributes and one of short for
- the color_pair number. The <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> routines
- are designed to use the attribute constants with the <EM>WA</EM><STRONG>_</STRONG>
- prefix. The opts argument is reserved for future use.
- Currently, applications must provide a null pointer for
- that argument.
-
- The <STRONG>mvcur</STRONG> routine provides low-level cursor motion. It
- takes effect immediately (rather than at the next re-
- fresh).
-
- <STRONG>Terminal</STRONG> <STRONG>Capability</STRONG> <STRONG>Functions</STRONG>
- 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 <EM>capname</EM> for each
- capability is given in the table column entitled <EM>capname</EM>
- code in the capabilities section of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+ provides the same functionality as <STRONG>setterm(</STRONG><EM>term</EM><STRONG>)</STRONG>. The <STRONG>setterm</STRONG> routine
+ is provided for BSD compatibility, and is not recommended for new pro-
+ grams.
+
+
+</PRE><H3><a name="h3-The-Terminal-State">The Terminal State</a></H3><PRE>
+ The <STRONG>setupterm</STRONG> routine stores its information about the terminal in a
+ <STRONG>TERMINAL</STRONG> structure pointed to by the global variable <STRONG>cur_term</STRONG>. If it
+ detects an error, or decides that the terminal is unsuitable (hardcopy
+ or generic), it discards this information, making it not available to
+ applications.
+
+ If <STRONG>setupterm</STRONG> is called repeatedly for the same terminal type, it will
+ reuse the information. It maintains only one copy of a given termi-
+ nal's capabilities in memory. If it is called for different terminal
+ types, <STRONG>setupterm</STRONG> allocates new storage for each set of terminal capa-
+ bilities.
+
+ The <STRONG>set_curterm</STRONG> routine sets <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>, refer-
+ ences to any of the <STRONG>terminfo</STRONG> boolean, numeric, and string variables
+ thereafter may refer to invalid memory locations until another <STRONG>se-</STRONG>
+ <STRONG>tupterm</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 exam-
+ ple, when reloading a game saved as a core image dump). <STRONG>restartterm</STRONG>
+ assumes that the windows and the input and output options are the same
+ as when memory was saved, but the terminal type and baud rate may be
+ different. Accordingly, <STRONG>restartterm</STRONG> saves various tty state bits,
+ calls <STRONG>setupterm</STRONG>, and then restores the bits.
+
+
+</PRE><H3><a name="h3-Formatting-Output">Formatting Output</a></H3><PRE>
+ The <STRONG>tparm</STRONG> routine instantiates the string <EM>str</EM> with parameters <EM>pi</EM>. A
+ pointer is returned to the result of <EM>str</EM> with the parameters applied.
+ Application developers should keep in mind these quirks of the inter-
+ face:
+
+ <STRONG>o</STRONG> Although <STRONG>tparm</STRONG>'s actual parameters may be integers or strings, the
+ prototype expects <STRONG>long</STRONG> (integer) values.
+
+ <STRONG>o</STRONG> Aside from the <STRONG>set_attributes</STRONG> (<STRONG>sgr</STRONG>) capability, most terminal capa-
+ bilities require no more than one or two parameters.
+
+ <STRONG>tiparm</STRONG> is a newer form of <STRONG>tparm</STRONG> which uses <EM>&lt;stdarg.h&gt;</EM> rather than a
+ fixed-parameter list. Its numeric parameters are integers (int) rather
+ than longs.
+
+
+</PRE><H3><a name="h3-Output-Functions">Output Functions</a></H3><PRE>
+ The <STRONG>tputs</STRONG> routine applies padding information to the string <EM>str</EM> and
+ outputs it:
+
+ <STRONG>o</STRONG> The <EM>str</EM> parameter must be a terminfo string variable or the return
+ value from <STRONG>tparm</STRONG>, <STRONG>tiparm</STRONG>, <STRONG>tgetstr</STRONG>, or <STRONG>tgoto</STRONG>.
+
+ The <STRONG>tgetstr</STRONG> and <STRONG>tgoto</STRONG> functions are part of the <EM>termcap</EM> interface,
+ which happens to share this function name with the <EM>terminfo</EM> inter-
+ face.
+
+ <STRONG>o</STRONG> <EM>affcnt</EM> is the number of lines affected, or 1 if not applicable.
+
+ <STRONG>o</STRONG> <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>. The output of <STRONG>putp</STRONG> al-
+ ways goes to <STRONG>stdout</STRONG>, rather than the <EM>filedes</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>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> routines correspond to vidattr and vidputs,
+ respectively. They use a set of arguments for representing the video
+ attributes plus color, i.e.,
+
+ <STRONG>o</STRONG> <EM>attrs</EM> of type <STRONG>attr_t</STRONG> for the attributes and
+
+ <STRONG>o</STRONG> <EM>pair</EM> of type <STRONG>short</STRONG> for the color-pair number.
+
+ The <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> routines are designed to use the attribute
+ constants with the <EM>WA</EM><STRONG>_</STRONG> prefix.
+
+ X/Open Curses reserves the <EM>opts</EM> argument for future use, saying that
+ applications must provide a null pointer for that argument. As an ex-
+ tension, this implementation allows <EM>opts</EM> to be used as a pointer to
+ <STRONG>int</STRONG>, which overrides the <EM>pair</EM> (<STRONG>short</STRONG>) argument.
+
+ The <STRONG>mvcur</STRONG> routine provides low-level cursor motion. It takes effect
+ immediately (rather than at the next refresh).
+
+
+</PRE><H3><a name="h3-Terminal-Capability-Functions">Terminal Capability Functions</a></H3><PRE>
+ 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>capname</EM> passed to them, such
+ as <STRONG>xenl</STRONG>. The <EM>capname</EM> for each capability is given in the table column
+ entitled <EM>capname</EM> code in the capabilities section of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
These routines return special values to denote errors.
@@ -270,163 +303,278 @@
<STRONG>-1</STRONG> if <EM>capname</EM> is not a boolean capability, or
- <STRONG>0</STRONG> if it is canceled or absent from the terminal de-
- scription.
+ <STRONG>0</STRONG> if it is canceled or absent from the terminal description.
The <STRONG>tigetnum</STRONG> routine returns
<STRONG>-2</STRONG> if <EM>capname</EM> is not a numeric capability, or
- <STRONG>-1</STRONG> if it is canceled or absent from the terminal de-
- scription.
+ <STRONG>-1</STRONG> if it is canceled or absent from the terminal description.
The <STRONG>tigetstr</STRONG> routine returns
<STRONG>(char</STRONG> <STRONG>*)-1</STRONG>
if <EM>capname</EM> is not a string capability, or
- <STRONG>0</STRONG> if it is canceled or absent from the terminal de-
- scription.
+ <STRONG>0</STRONG> if it is canceled or absent from the terminal description.
- <STRONG>Terminal</STRONG> <STRONG>Capability</STRONG> <STRONG>Names</STRONG>
- These null-terminated arrays contain the short terminfo
- names ("codes"), the <STRONG>termcap</STRONG> names, and the long terminfo
- names ("fnames") for each of the predefined <STRONG>terminfo</STRONG> vari-
- ables:
- <STRONG>char</STRONG> <STRONG>*boolnames[]</STRONG>, <STRONG>*boolcodes[]</STRONG>, <STRONG>*boolfnames[]</STRONG>
- <STRONG>char</STRONG> <STRONG>*numnames[]</STRONG>, <STRONG>*numcodes[]</STRONG>, <STRONG>*numfnames[]</STRONG>
+</PRE><H3><a name="h3-Terminal-Capability-Names">Terminal Capability Names</a></H3><PRE>
+ These null-terminated arrays contain
- <STRONG>char</STRONG> <STRONG>*strnames[]</STRONG>, <STRONG>*strcodes[]</STRONG>, <STRONG>*strfnames[]</STRONG>
+ <STRONG>o</STRONG> the short terminfo names ("codes"),
+ <STRONG>o</STRONG> the <STRONG>termcap</STRONG> names ("names", and
-</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.
+ <STRONG>o</STRONG> the long terminfo names ("fnames")
+
+ for each of the predefined <STRONG>terminfo</STRONG> variables:
+
+ <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*boolnames[]</STRONG>, <STRONG>*boolcodes[]</STRONG>, <STRONG>*boolfnames[]</STRONG>
+ <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*numnames[]</STRONG>, <STRONG>*numcodes[]</STRONG>, <STRONG>*numfnames[]</STRONG>
+ <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*strnames[]</STRONG>, <STRONG>*strcodes[]</STRONG>, <STRONG>*strfnames[]</STRONG>
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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 com-
+ pletion, unless otherwise noted in the preceding routine descriptions.
Routines that return pointers always return <STRONG>NULL</STRONG> on error.
- X/Open defines no error conditions. In this implementa-
- tion
+ X/Open defines no error conditions. In this implementation
+
+ <STRONG>del_curterm</STRONG>
+ returns an error if its terminal parameter is null.
+
+ <STRONG>putp</STRONG> calls <STRONG>tputs</STRONG>, returning the same error-codes.
+
+ <STRONG>restartterm</STRONG>
+ returns an error if the associated call to <STRONG>setupterm</STRONG> returns an
+ error.
+
+ <STRONG>setupterm</STRONG>
+ returns an error if it cannot allocate enough memory, or create
+ the initial windows (stdscr, curscr, newscr). Other error con-
+ ditions are documented above.
+
+ <STRONG>tputs</STRONG>
+ returns an error if the string parameter is null. It does not
+ detect I/O errors: X/Open states that <STRONG>tputs</STRONG> ignores the return
+ value of the output function <EM>putc</EM>.
+
+
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+ SVr2 introduced the terminfo feature. Its programming manual mentioned
+ these low-level functions:
+
+ <STRONG>Function</STRONG> <STRONG>Description</STRONG>
+ ------------------------------------------------------------
+ fixterm restore tty to "in curses" state
+ gettmode establish current tty modes
+ mvcur low level cursor motion
+ putp utility function that uses <STRONG>tputs</STRONG> to send char-
+ acters via <STRONG>putchar</STRONG>.
+ resetterm set tty modes to "out of curses" state
+ resetty reset tty flags to stored value
+ saveterm save current modes as "in curses" state
+ savetty store current tty flags
+ setterm establish terminal with given type
+ setupterm establish terminal with given type
+ tparm instantiate a string expression with parameters
+ tputs apply padding information to a string
+ vidattr like <STRONG>vidputs</STRONG>, but outputs through <STRONG>putchar</STRONG>
+ vidputs output a string to put terminal in a specified
+ video attribute mode
+
+ The programming manual also mentioned functions provided for termcap
+ compatibility (commenting that they "may go away at a later date"):
+
+ <STRONG>Function</STRONG> <STRONG>Description</STRONG>
+ ------------------------------------------------
+ tgetent look up termcap entry for given <EM>name</EM>
+ tgetflag get boolean entry for given <EM>id</EM>
+ tgetnum get numeric entry for given <EM>id</EM>
+ tgetstr get string entry for given <EM>id</EM>
+ tgoto apply parameters to given capability
+ tputs apply padding to capability, calling
+ a function to put characters
+
+ Early terminfo programs obtained capability values from the <STRONG>TERMINAL</STRONG>
+ structure initialized by <STRONG>setupterm</STRONG>.
+
+ SVr3 extended terminfo by adding functions to retrieve capability val-
+ ues (like the termcap interface), and reusing tgoto and tputs:
+
+ <STRONG>Function</STRONG> <STRONG>Description</STRONG>
+ -------------------------------------------
+ tigetflag get boolean entry for given <EM>id</EM>
+ tigetnum get numeric entry for given <EM>id</EM>
+ tigetstr get string entry for given <EM>id</EM>
+
+ SVr3 also replaced several of the SVr2 terminfo functions which had no
+ counterpart in the termcap interface, documenting them as obsolete:
+
+ <STRONG>Function</STRONG> <STRONG>Replaced</STRONG> <STRONG>by</STRONG>
+ -----------------------------
+ crmode cbreak
+ fixterm reset_prog_mode
+ gettmode N/A
+ nocrmode nocbreak
+ resetterm reset_shell_mode
+ saveterm def_prog_mode
+ setterm setupterm
+
+ SVr3 kept the <STRONG>mvcur</STRONG>, <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> functions, along with <STRONG>putp</STRONG>,
+ <STRONG>tparm</STRONG> and <STRONG>tputs</STRONG>. The latter were needed to support padding, and han-
+ dling functions such as <STRONG>vidattr</STRONG> (which used more than the two parame-
+ ters supported by <STRONG>tgoto</STRONG>).
+
+ SVr3 introduced the functions for switching between terminal descrip-
+ tions, e.g., <STRONG>set_curterm</STRONG>. The various global variables such as <STRONG>bool-</STRONG>
+ <STRONG>names</STRONG> were mentioned in the programming manual at this point.
+
+ SVr4 added the <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> functions.
+
+ There are other low-level functions declared in the curses header files
+ on Unix systems, but none were documented. The functions marked "obso-
+ lete" remained in use by the Unix <STRONG>vi</STRONG> editor.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+
+</PRE><H3><a name="h3-Legacy-functions">Legacy functions</a></H3><PRE>
+ X/Open notes that <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> may be macros.
+
+ The function <STRONG>setterm</STRONG> is not described by X/Open and must be considered
+ non-portable. All other functions are as described by X/Open.
- <STRONG>del_curterm</STRONG>
- returns an error if its terminal parameter is
- null.
- <STRONG>putp</STRONG> calls <STRONG>tputs</STRONG>, returning the same error-codes.
+</PRE><H3><a name="h3-Legacy-data">Legacy data</a></H3><PRE>
+ <STRONG>setupterm</STRONG> copies the terminal name to the array <STRONG>ttytype</STRONG>. This is not
+ part of X/Open Curses, but is assumed by some applications.
- <STRONG>restartterm</STRONG>
- returns an error if the associated call to <STRONG>se-</STRONG>
- <STRONG>tupterm</STRONG> returns an error.
+ Other implementions may not declare the capability name arrays. Some
+ provide them without declaring them. X/Open does not specify them.
- <STRONG>setupterm</STRONG>
- returns an error if it cannot allocate enough
- memory, or create the initial windows (stdscr,
- curscr, newscr). Other error conditions are
- documented above.
+ Extended terminal capability names, e.g., as defined by <STRONG>tic</STRONG> <STRONG>-x</STRONG>, are not
+ stored in the arrays described here.
- <STRONG>tputs</STRONG>
- returns an error if the string parameter is
- null. It does not detect I/O errors: X/Open
- states that <STRONG>tputs</STRONG> ignores the return value of
- the output function <EM>putc</EM>.
+</PRE><H3><a name="h3-Output-buffering">Output buffering</a></H3><PRE>
+ Older versions of <STRONG>ncurses</STRONG> assumed that the file descriptor passed to
+ <STRONG>setupterm</STRONG> from <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> uses buffered I/O, and would write to
+ the corresponding stream. In addition to the limitation that the ter-
+ minal was left in block-buffered mode on exit (like System V curses),
+ it was problematic because <STRONG>ncurses</STRONG> did not allow a reliable way to
+ cleanup on receiving SIGTSTP.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- X/Open notes that <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> may be macros.
+ The current version (ncurses6) uses output buffers managed directly by
+ <STRONG>ncurses</STRONG>. Some of the low-level functions described in this manual page
+ write to the standard output. They are not signal-safe. The high-lev-
+ el functions in <STRONG>ncurses</STRONG> use alternate versions of these functions using
+ the more reliable buffering scheme.
- The function <STRONG>setterm</STRONG> is not described by X/Open and must
- be considered non-portable. All other functions are as
- described by X/Open.
- <STRONG>setupterm</STRONG> copies the terminal name to the array <STRONG>ttytype</STRONG>.
- This is not part of X/Open Curses, but is assumed by some
- applications.
+</PRE><H3><a name="h3-Function-prototypes">Function prototypes</a></H3><PRE>
+ The X/Open Curses prototypes are based on the SVr4 curses header decla-
+ rations, which were defined at the same time the C language was first
+ standardized in the late 1980s.
- If configured to use the terminal-driver, e.g., for the
- MinGW port,
-
- <STRONG>o</STRONG> <STRONG>setupterm</STRONG> interprets a missing/empty TERM variable as
- the special value "unknown".
-
- <STRONG>o</STRONG> <STRONG>setupterm</STRONG> allows explicit use of the the windows con-
- sole driver by checking if $TERM is set to "#win32con"
- or an abbreviation of that string.
-
- Older versions of <STRONG>ncurses</STRONG> assumed that the file descriptor
- passed to <STRONG>setupterm</STRONG> from <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> uses buffered
- I/O, and would write to the corresponding stream. In ad-
- dition to the limitation that the terminal was left in
- block-buffered mode on exit (like SystemV curses), it was
- problematic because <STRONG>ncurses</STRONG> did not allow a reliable way
- to cleanup on receiving SIGTSTP. The current version uses
- output buffers managed directly by <STRONG>ncurses</STRONG>. Some of the
- low-level functions described in this manual page write to
- the standard output. They are not signal-safe. The high-
- level functions in <STRONG>ncurses</STRONG> use alternate versions of these
- functions using the more reliable buffering scheme.
-
- 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
- X/Open Curses semantics.
-
- In System V Release 4, the third argument of <STRONG>tputs</STRONG> has the
- type <STRONG>int</STRONG> <STRONG>(*putc)(char)</STRONG>.
-
- At least one implementation of X/Open Curses (Solaris) re-
- turns a value other than OK/ERR from <STRONG>tputs</STRONG>. That returns
- the length of the string, and does no error-checking.
-
- X/Open Curses prototypes <STRONG>tparm</STRONG> with a fixed number of pa-
- rameters, rather than a variable argument list. This im-
- plementation uses a variable argument list, but can be
- configured to use the fixed-parameter list. Portable ap-
- plications should provide 9 parameters after the format;
- zeroes are fine for this purpose.
-
- In response to comments by Thomas E. Dickey, X/Open Curses
- Issue 7 proposed the <STRONG>tiparm</STRONG> function in mid-2009.
-
- X/Open notes that after calling <STRONG>mvcur</STRONG>, the curses state
- may not match the actual terminal state, and that an ap-
- plication should touch and refresh the window before re-
- suming normal curses calls. Both <STRONG>ncurses</STRONG> and System V Re-
- lease 4 curses implement <STRONG>mvcur</STRONG> using the SCREEN data allo-
- cated in either <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>. So though it is docu-
- mented as a terminfo function, <STRONG>mvcur</STRONG> is really a curses
- function which is not well specified.
-
- X/Open states that the old location must be given for
- <STRONG>mvcur</STRONG>. This implementation allows the caller to use -1's
- for the old ordinates. In that case, the old location is
- unknown.
-
- Other implementions may not declare the capability name
- arrays. Some provide them without declaring them. X/Open
- does not specify them.
-
- Extended terminal capability names, e.g., as defined by
- <STRONG>tic</STRONG> <STRONG>-x</STRONG>, are not stored in the arrays described here.
+ <STRONG>o</STRONG> X/Open Curses uses <STRONG>const</STRONG> less effectively than a later design
+ might, in some cases applying it needlessly to values are already
+ constant, and in most cases overlooking parameters which normally
+ would use <STRONG>const</STRONG>. Using constant parameters for functions which do
+ not use <STRONG>const</STRONG> may prevent the program from compiling. On the other
+ hand, <EM>writable</EM> <EM>strings</EM> are an obsolescent feature.
+ As an extension, this implementation can be configured to change
+ the function prototypes to use the <STRONG>const</STRONG> keyword. The ncurses ABI
+ 6 enables this feature by default.
-</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="curs_termcap.3x.html">cap(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>,
- <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
+ <STRONG>o</STRONG> X/Open Curses prototypes <STRONG>tparm</STRONG> with a fixed number of parameters,
+ rather than a variable argument list.
+
+ This implementation uses a variable argument list, but can be con-
+ figured to use the fixed-parameter list. Portable applications
+ should provide 9 parameters after the format; zeroes are fine for
+ this purpose.
+
+ In response to review comments by Thomas E. Dickey, X/Open Curses
+ Issue 7 proposed the <STRONG>tiparm</STRONG> function in mid-2009.
+
+
+</PRE><H3><a name="h3-Special-TERM-treatment">Special TERM treatment</a></H3><PRE>
+ If configured to use the terminal-driver, e.g., for the MinGW port,
+
+ <STRONG>o</STRONG> <STRONG>setupterm</STRONG> interprets a missing/empty TERM variable as the special
+ value "unknown".
+
+ <STRONG>o</STRONG> <STRONG>setupterm</STRONG> allows explicit use of the the windows console driver by
+ checking if $TERM is set to "#win32con" or an abbreviation of that
+ string.
+
+
+</PRE><H3><a name="h3-Other-portability-issues">Other portability issues</a></H3><PRE>
+ 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 X/Open Curses semantics.
+
+ In System V Release 4, the third argument of <STRONG>tputs</STRONG> has the type <STRONG>int</STRONG>
+ <STRONG>(*putc)(char)</STRONG>.
+
+ At least one implementation of X/Open Curses (Solaris) returns a value
+ other than <STRONG>OK</STRONG>/<STRONG>ERR</STRONG> from <STRONG>tputs</STRONG>. That returns the length of the string,
+ and does no error-checking.
+
+ X/Open notes that after calling <STRONG>mvcur</STRONG>, the curses state may not match
+ the actual terminal state, and that an application should touch and re-
+ fresh the window before resuming normal curses calls. Both <STRONG>ncurses</STRONG> and
+ System V Release 4 curses implement <STRONG>mvcur</STRONG> using the SCREEN data allo-
+ cated in either <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>. So though it is documented as a
+ terminfo function, <STRONG>mvcur</STRONG> is really a curses function which is not well
+ specified.
+
+ X/Open states that the old location must be given for <STRONG>mvcur</STRONG>. This im-
+ plementation allows the caller to use -1's for the old ordinates. In
+ that case, the old location is unknown.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>,
+ <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
+ <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Initialization">Initialization</a></li>
+<li><a href="#h3-The-Terminal-State">The Terminal State</a></li>
+<li><a href="#h3-Formatting-Output">Formatting Output</a></li>
+<li><a href="#h3-Output-Functions">Output Functions</a></li>
+<li><a href="#h3-Terminal-Capability-Functions">Terminal Capability Functions</a></li>
+<li><a href="#h3-Terminal-Capability-Names">Terminal Capability Names</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a>
+<ul>
+<li><a href="#h3-Legacy-functions">Legacy functions</a></li>
+<li><a href="#h3-Legacy-data">Legacy data</a></li>
+<li><a href="#h3-Output-buffering">Output buffering</a></li>
+<li><a href="#h3-Function-prototypes">Function prototypes</a></li>
+<li><a href="#h3-Special-TERM-treatment">Special TERM treatment</a></li>
+<li><a href="#h3-Other-portability-issues">Other portability issues</a></li>
+</ul>
+</li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_threads.3x.html b/doc/html/man/curs_threads.3x.html
index 899037332f44..0977cac573c0 100644
--- a/doc/html/man/curs_threads.3x.html
+++ b/doc/html/man/curs_threads.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2008-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2015,2017 Free 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,33 +26,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_threads.3x,v 1.19 2012/05/26 17:03:26 tom Exp @
+ * @Id: curs_threads.3x,v 1.24 2017/11/18 23:56:00 tom Exp @
* ***************************************************************************
* ***************************************************************************
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_threads 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_threads 3x</H1>
-<HR>
+<H1 class="no-header">curs_threads 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>
+<STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>use_screen</STRONG>, <STRONG>use_window</STRONG> - <STRONG>curses</STRONG> thread support
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>curs_threads</STRONG> - <STRONG>curses</STRONG> thread support
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>typedef</STRONG> <STRONG>int</STRONG> <STRONG>(*NCURSES_WINDOW_CB)(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG>
@@ -61,574 +59,568 @@
<STRONG>int</STRONG> <STRONG>get_escdelay(void);</STRONG>
<STRONG>int</STRONG> <STRONG>set_escdelay(int</STRONG> <STRONG>size);</STRONG>
<STRONG>int</STRONG> <STRONG>set_tabsize(int</STRONG> <STRONG>size);</STRONG>
- <STRONG>int</STRONG> <STRONG>use_screen(SCREEN</STRONG> <STRONG>*scr,</STRONG> <STRONG>NCURSES_SCREEN_CB</STRONG> <STRONG>func,</STRONG> <STRONG>void</STRONG>
- <STRONG>*data);</STRONG>
- <STRONG>int</STRONG> <STRONG>use_window(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>NCURSES_WINDOW_CB</STRONG> <STRONG>func,</STRONG> <STRONG>void</STRONG>
- <STRONG>*data);</STRONG>
+ <STRONG>int</STRONG> <STRONG>use_screen(SCREEN</STRONG> <STRONG>*scr,</STRONG> <STRONG>NCURSES_SCREEN_CB</STRONG> <STRONG>func,</STRONG> <STRONG>void</STRONG> <STRONG>*data);</STRONG>
+ <STRONG>int</STRONG> <STRONG>use_window(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>NCURSES_WINDOW_CB</STRONG> <STRONG>func,</STRONG> <STRONG>void</STRONG> <STRONG>*data);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- This implementation can be configured to provide rudimen-
- tary support for multi-threaded applications. This makes
- a different set of libraries, e.g., <EM>libncursest</EM> since the
- binary interfaces are different.
-
- Rather than modify the interfaces to pass a thread speci-
- fier to each function, it adds a few functions which can
- be used in any configuration which hide the mutex's needed
- to prevent concurrent use of the global variables when
- configured for threading.
-
- In addition to forcing access to members of the <STRONG>WINDOW</STRONG>
- structure to be via functions (see <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>), it
- makes functions of the common global variables, e.g., COL-
- ORS, COLOR_PAIRS, COLS, ESCDELAY, LINES, TABSIZE curscr,
- newscr and ttytype. Those variables are maintained as
- read-only values, stored in the <STRONG>SCREEN</STRONG> structure.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ This implementation can be configured to provide rudimentary support
+ for multi-threaded applications. This makes a different set of li-
+ braries, e.g., <EM>libncursest</EM> since the binary interfaces are different.
- Even this is not enough to make a thread-safe application
- using curses. A multi-threaded application would be ex-
- pected to have threads updating separate windows (within
- the same device), or updating on separate screens (on dif-
- ferent devices). Also, a few of the global variables are
- considered writable by some applications. The functions
- described here address these special situations.
+ Rather than modify the interfaces to pass a thread specifier to each
+ function, it adds a few functions which can be used in any configura-
+ tion which hide the mutex's needed to prevent concurrent use of the
+ global variables when configured for threading.
- The ESCDELAY and TABSIZE global variables are modified by
- some applications. To modify them in any configuration,
- use the <STRONG>set_escdelay</STRONG> or <STRONG>set_tabsize</STRONG> functions. Other
- global variables are not modifiable.
-
- The <STRONG>get_escdelay</STRONG> function returns the value for ESCDELAY.
-
- The <STRONG>use_window</STRONG> and <STRONG>use_screen</STRONG> functions provide coarse
- granularity mutexes for their respective <STRONG>WINDOW</STRONG> and <STRONG>SCREEN</STRONG>
- parameters, and call a user-supplied function, passing it
- a <EM>data</EM> parameter, and returning the value from the user-
- supplied function to the application.
-
- <STRONG>USAGE</STRONG>
- All of the ncurses library functions assume that the lo-
- cale is not altered during operation. In addition, they
- use data which is maintained within a hierarchy of scopes.
-
- <STRONG>o</STRONG> global data, e.g., used in the low-level terminfo
- or termcap interfaces.
-
- <STRONG>o</STRONG> terminal data, e.g., associated with a call to
- <EM>set</EM><STRONG>_</STRONG><EM>curterm</EM>. The terminal data are initialized
- when screens are created.
-
- <STRONG>o</STRONG> screen data, e.g., associated with a call to
- <EM>newterm</EM> or <EM>initscr</EM>.
-
- <STRONG>o</STRONG> window data, e.g., associated with a call to <EM>newwin</EM>
- or <EM>subwin</EM>. Windows are associated with screens.
- Pads are not necessarily associated with a particu-
- lar screen.
-
- Most curses applications operate on one or more
- windows within a single screen.
-
- <STRONG>o</STRONG> reentrant, i.e., it uses only the data passed as
- parameters.
-
- This table lists the scope of data used for each symbol in
- the ncurses library when it is configured to support
- threading:
-
- Symbol Scope
- -------------------------------------------------------------
- BC global
- COLORS screen (readonly)
- COLOR_PAIR reentrant
- COLOR_PAIRS screen (readonly)
- COLS screen (readonly)
- ESCDELAY screen (readonly, see <EM>set</EM><STRONG>_</STRONG><EM>escdelay</EM>)
- LINES screen (readonly)
- PAIR_NUMBER reentrant
- PC global
- SP global
- TABSIZE screen (readonly)
- UP global
- acs_map screen (readonly)
- add_wch window (stdscr)
- add_wchnstr window (stdscr)
- add_wchstr window (stdscr)
- addch window (stdscr)
- addchnstr window (stdscr)
- addchstr window (stdscr)
- addnstr window (stdscr)
- addnwstr window (stdscr)
- addstr window (stdscr)
- addwstr window (stdscr)
- assume_default_colors screen
- attr_get window (stdscr)
- attr_off window (stdscr)
- attr_on window (stdscr)
- attr_set window (stdscr)
- attroff window (stdscr)
- attron window (stdscr)
- attrset window (stdscr)
- baudrate screen
- beep screen
- bkgd window (stdscr)
- bkgdset window (stdscr)
- bkgrnd window (stdscr)
- bkgrndset window (stdscr)
- boolcodes global (readonly)
- boolfnames global (readonly)
- boolnames global (readonly)
- border window (stdscr)
-
- border_set window (stdscr)
- box window (stdscr)
- box_set window (stdscr)
- can_change_color terminal
- cbreak screen
- chgat window (stdscr)
- clear window (stdscr)
- clearok window
- clrtobot window (stdscr)
- clrtoeol window (stdscr)
- color_content screen
- color_set window (stdscr)
- copywin window locks(source, target)
- cur_term terminal
- curs_set screen
- curscr screen (readonly)
- curses_version global (readonly)
- def_prog_mode terminal
- def_shell_mode terminal
- define_key screen
- del_curterm screen
- delay_output screen
- delch window (stdscr)
- deleteln window (stdscr)
- delscreen global locks(screenlist, screen)
- delwin global locks(windowlist)
- derwin screen
- doupdate screen
- dupwin screen locks(window)
- echo screen
- echo_wchar window (stdscr)
- echochar window (stdscr)
- endwin screen
- erase window (stdscr)
- erasechar window (stdscr)
- erasewchar window (stdscr)
- filter global
- flash terminal
- flushinp screen
- get_wch screen (input-operation)
- get_wstr screen (input-operation)
- getattrs window
- getbegx window
- getbegy window
- getbkgd window
- getbkgrnd window
- getcchar reentrant
- getch screen (input-operation)
- getcurx window
- getcury window
- getmaxx window
- getmaxy window
- getmouse screen (input-operation)
- getn_wstr screen (input-operation)
- getnstr screen (input-operation)
- getparx window
- getpary window
- getstr screen (input-operation)
- getwin screen (input-operation)
- halfdelay screen
- has_colors terminal
- has_ic terminal
- has_il terminal
- has_key screen
- hline window (stdscr)
- hline_set window (stdscr)
-
- idcok window
- idlok window
- immedok window
- in_wch window (stdscr)
- in_wchnstr window (stdscr)
- in_wchstr window (stdscr)
- inch window (stdscr)
- inchnstr window (stdscr)
- inchstr window (stdscr)
- init_color screen
- init_pair screen
- initscr global locks(screenlist)
- innstr window (stdscr)
- innwstr window (stdscr)
- ins_nwstr window (stdscr)
- ins_wch window (stdscr)
- ins_wstr window (stdscr)
- insch window (stdscr)
- insdelln window (stdscr)
- insertln window (stdscr)
- insnstr window (stdscr)
- insstr window (stdscr)
- instr window (stdscr)
- intrflush terminal
- inwstr window (stdscr)
- is_cleared window
- is_idcok window
- is_idlok window
- is_immedok window
- is_keypad window
- is_leaveok window
- is_linetouched window
- is_nodelay window
- is_notimeout window
- is_scrollok window
- is_syncok window
- is_term_resized terminal
- is_wintouched window
- isendwin screen
- key_defined screen
- key_name global (static data)
- keybound screen
- keyname global (static data)
- keyok screen
- keypad window
- killchar terminal
- killwchar terminal
- leaveok window
- longname screen
- mcprint terminal
- meta screen
- mouse_trafo window (stdscr)
- mouseinterval screen
- mousemask screen
- move window (stdscr)
- mvadd_wch window (stdscr)
- mvadd_wchnstr window (stdscr)
- mvadd_wchstr window (stdscr)
- mvaddch window (stdscr)
- mvaddchnstr window (stdscr)
- mvaddchstr window (stdscr)
- mvaddnstr window (stdscr)
- mvaddnwstr window (stdscr)
- mvaddstr window (stdscr)
- mvaddwstr window (stdscr)
- mvchgat window (stdscr)
-
- mvcur screen
- mvdelch window (stdscr)
- mvderwin window (stdscr)
- mvget_wch screen (input-operation)
- mvget_wstr screen (input-operation)
- mvgetch screen (input-operation)
- mvgetn_wstr screen (input-operation)
- mvgetnstr screen (input-operation)
- mvgetstr screen (input-operation)
- mvhline window (stdscr)
- mvhline_set window (stdscr)
- mvin_wch window (stdscr)
- mvin_wchnstr window (stdscr)
- mvin_wchstr window (stdscr)
- mvinch window (stdscr)
- mvinchnstr window (stdscr)
- mvinchstr window (stdscr)
- mvinnstr window (stdscr)
- mvinnwstr window (stdscr)
- mvins_nwstr window (stdscr)
- mvins_wch window (stdscr)
- mvins_wstr window (stdscr)
- mvinsch window (stdscr)
- mvinsnstr window (stdscr)
- mvinsstr window (stdscr)
- mvinstr window (stdscr)
- mvinwstr window (stdscr)
- mvprintw window (stdscr)
- mvscanw screen
- mvvline window (stdscr)
- mvvline_set window (stdscr)
- mvwadd_wch window
- mvwadd_wchnstr window
- mvwadd_wchstr window
- mvwaddch window
- mvwaddchnstr window
- mvwaddchstr window
- mvwaddnstr window
- mvwaddnwstr window
- mvwaddstr window
- mvwaddwstr window
- mvwchgat window
- mvwdelch window
- mvwget_wch screen (input-operation)
- mvwget_wstr screen (input-operation)
- mvwgetch screen (input-operation)
- mvwgetn_wstr screen (input-operation)
- mvwgetnstr screen (input-operation)
- mvwgetstr screen (input-operation)
- mvwhline window
- mvwhline_set window
- mvwin window
- mvwin_wch window
- mvwin_wchnstr window
- mvwin_wchstr window
- mvwinch window
- mvwinchnstr window
- mvwinchstr window
- mvwinnstr window
- mvwinnwstr window
- mvwins_nwstr window
- mvwins_wch window
- mvwins_wstr window
- mvwinsch window
- mvwinsnstr window
- mvwinsstr window
-
- mvwinstr window
- mvwinwstr window
- mvwprintw window
- mvwscanw screen
- mvwvline window
- mvwvline_set window
- napms reentrant
- newpad global locks(windowlist)
- newscr screen (readonly)
- newterm global locks(screenlist)
- newwin global locks(windowlist)
- nl screen
- nocbreak screen
- nodelay window
- noecho screen
- nofilter global
- nonl screen
- noqiflush terminal
- noraw screen
- notimeout window
- numcodes global (readonly)
- numfnames global (readonly)
- numnames global (readonly)
- ospeed global
- overlay window locks(source, target)
- overwrite window locks(source, target)
- pair_content screen
- pecho_wchar screen
- pechochar screen
- pnoutrefresh screen
- prefresh screen
- printw window
- putp global
- putwin window
- qiflush terminal
- raw screen
- redrawwin window
- refresh screen
- reset_prog_mode screen
- reset_shell_mode screen
- resetty terminal
- resize_term screen locks(windowlist)
- resizeterm screen
- restartterm screen
- ripoffline global (static data)
- savetty terminal
- scanw screen
- scr_dump screen
- scr_init screen
- scr_restore screen
- scr_set screen
- scrl window (stdscr)
- scroll window
- scrollok window
- set_curterm screen
- set_escdelay screen
- set_tabsize screen
- set_term global locks(screenlist, screen)
- setcchar reentrant
- setscrreg window (stdscr)
- setupterm global
- slk_attr screen
- slk_attr_off screen
- slk_attr_on screen
- slk_attr_set screen
- slk_attroff screen
-
- slk_attron screen
- slk_attrset screen
- slk_clear screen
- slk_color screen
- slk_init screen
- slk_label screen
- slk_noutrefresh screen
- slk_refresh screen
- slk_restore screen
- slk_set screen
- slk_touch screen
- slk_wset screen
- standend window
- standout window
- start_color screen
- stdscr screen (readonly)
- strcodes global (readonly)
- strfnames global (readonly)
- strnames global (readonly)
- subpad window
- subwin window
- syncok window
- term_attrs screen
- termattrs screen
- termname terminal
- tgetent global
- tgetflag global
- tgetnum global
- tgetstr global
- tgoto global
- tigetflag terminal
- tigetnum terminal
- tigetstr terminal
- timeout window (stdscr)
- touchline window
- touchwin window
- tparm global (static data)
- tputs screen
- trace global (static data)
- ttytype screen (readonly)
- typeahead screen
- unctrl screen
- unget_wch screen (input-operation)
- ungetch screen (input-operation)
- ungetmouse screen (input-operation)
- untouchwin window
- use_default_colors screen
- use_env global (static data)
- use_extended_names global (static data)
- use_legacy_coding screen
- use_screen global locks(screenlist, screen)
- use_window global locks(windowlist, window)
- vid_attr screen
- vid_puts screen
- vidattr screen
- vidputs screen
- vline window (stdscr)
- vline_set window (stdscr)
- vw_printw window
- vw_scanw screen
- vwprintw window
- vwscanw screen
- wadd_wch window
- wadd_wchnstr window
- wadd_wchstr window
- waddch window
-
- waddchnstr window
- waddchstr window
- waddnstr window
- waddnwstr window
- waddstr window
- waddwstr window
- wattr_get window
- wattr_off window
- wattr_on window
- wattr_set window
- wattroff window
- wattron window
- wattrset window
- wbkgd window
- wbkgdset window
- wbkgrnd window
- wbkgrndset window
- wborder window
- wborder_set window
- wchgat window
- wclear window
- wclrtobot window
- wclrtoeol window
- wcolor_set window
- wcursyncup screen (affects window plus parents)
- wdelch window
- wdeleteln window
- wecho_wchar window
- wechochar window
- wenclose window
- werase window
- wget_wch screen (input-operation)
- wget_wstr screen (input-operation)
- wgetbkgrnd window
- wgetch screen (input-operation)
- wgetn_wstr screen (input-operation)
- wgetnstr screen (input-operation)
- wgetparent window
- wgetscrreg window
- wgetstr screen (input-operation)
- whline window
- whline_set window
- win_wch window
- win_wchnstr window
- win_wchstr window
- winch window
- winchnstr window
- winchstr window
- winnstr window
- winnwstr window
- wins_nwstr window
- wins_wch window
- wins_wstr window
- winsch window
- winsdelln window
- winsertln window
- winsnstr window
- winsstr window
- winstr window
- winwstr window
- wmouse_trafo window
- wmove window
- wnoutrefresh screen
- wprintw window
- wredrawln window
- wrefresh screen
-
- wresize window locks(windowlist)
- wscanw screen
- wscrl window
- wsetscrreg window
- wstandend window
- wstandout window
- wsyncdown screen (affects window plus parents)
- wsyncup screen (affects window plus parents)
- wtimeout window
- wtouchln window
- wunctrl global (static data)
- wvline window
- wvline_set window
+ In addition to forcing access to members of the <STRONG>WINDOW</STRONG> structure to be
+ via functions (see <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>), it makes functions of the common
+ global variables, e.g., COLORS, COLOR_PAIRS, COLS, ESCDELAY, LINES,
+ TABSIZE curscr, newscr and ttytype. Those variables are maintained as
+ read-only values, stored in the <STRONG>SCREEN</STRONG> structure.
+ Even this is not enough to make a thread-safe application using curses.
+ A multi-threaded application would be expected to have threads updating
+ separate windows (within the same device), or updating on separate
+ screens (on different devices). Also, a few of the global variables
+ are considered writable by some applications. The functions described
+ here address these special situations.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- These functions all return TRUE or FALSE, except as noted.
+ The ESCDELAY and TABSIZE global variables are modified by some applica-
+ tions. To modify them in any configuration, use the <STRONG>set_escdelay</STRONG> or
+ <STRONG>set_tabsize</STRONG> functions. Other global variables are not modifiable.
+ The <STRONG>get_escdelay</STRONG> function returns the value for ESCDELAY.
-</PRE>
-<H2>NOTES</H2><PRE>
+ The <STRONG>use_window</STRONG> and <STRONG>use_screen</STRONG> functions provide coarse granularity mu-
+ texes for their respective <STRONG>WINDOW</STRONG> and <STRONG>SCREEN</STRONG> parameters, and call a us-
+ er-supplied function, passing it a <EM>data</EM> parameter, and returning the
+ value from the user-supplied function to the application.
+
+
+</PRE><H3><a name="h3-USAGE">USAGE</a></H3><PRE>
+ All of the ncurses library functions assume that the locale is not al-
+ tered during operation. In addition, they use data which is maintained
+ within a hierarchy of scopes.
+
+ <STRONG>o</STRONG> global data, e.g., used in the low-level terminfo or termcap in-
+ terfaces.
+
+ <STRONG>o</STRONG> terminal data, e.g., associated with a call to <EM>set</EM><STRONG>_</STRONG><EM>curterm</EM>. The
+ terminal data are initialized when screens are created.
+
+ <STRONG>o</STRONG> screen data, e.g., associated with a call to <EM>newterm</EM> or <EM>initscr</EM>.
+
+ <STRONG>o</STRONG> window data, e.g., associated with a call to <EM>newwin</EM> or <EM>subwin</EM>.
+ Windows are associated with screens. Pads are not necessarily
+ associated with a particular screen.
+
+ Most curses applications operate on one or more windows within a
+ single screen.
+
+ <STRONG>o</STRONG> reentrant, i.e., it uses only the data passed as parameters.
+
+ This table lists the scope of data used for each symbol in the ncurses
+ library when it is configured to support threading:
+
+ Symbol Scope
+ -------------------------------------------------------------
+ BC global
+ COLORS screen (readonly)
+ COLOR_PAIR reentrant
+ COLOR_PAIRS screen (readonly)
+ COLS screen (readonly)
+ ESCDELAY screen (readonly, see <EM>set</EM><STRONG>_</STRONG><EM>escdelay</EM>)
+ LINES screen (readonly)
+ PAIR_NUMBER reentrant
+ PC global
+ SP global
+ TABSIZE screen (readonly)
+ UP global
+ acs_map screen (readonly)
+ add_wch window (stdscr)
+ add_wchnstr window (stdscr)
+ add_wchstr window (stdscr)
+ addch window (stdscr)
+ addchnstr window (stdscr)
+ addchstr window (stdscr)
+ addnstr window (stdscr)
+ addnwstr window (stdscr)
+ addstr window (stdscr)
+ addwstr window (stdscr)
+ assume_default_colors screen
+ attr_get window (stdscr)
+ attr_off window (stdscr)
+ attr_on window (stdscr)
+ attr_set window (stdscr)
+ attroff window (stdscr)
+ attron window (stdscr)
+ attrset window (stdscr)
+ baudrate screen
+ beep screen
+ bkgd window (stdscr)
+ bkgdset window (stdscr)
+ bkgrnd window (stdscr)
+ bkgrndset window (stdscr)
+ boolcodes global (readonly)
+ boolfnames global (readonly)
+ boolnames global (readonly)
+ border window (stdscr)
+ border_set window (stdscr)
+ box window (stdscr)
+ box_set window (stdscr)
+ can_change_color terminal
+ cbreak screen
+ chgat window (stdscr)
+ clear window (stdscr)
+ clearok window
+ clrtobot window (stdscr)
+ clrtoeol window (stdscr)
+ color_content screen
+ color_set window (stdscr)
+ copywin window locks(source, target)
+
+ cur_term terminal
+ curs_set screen
+ curscr screen (readonly)
+ curses_version global (readonly)
+ def_prog_mode terminal
+ def_shell_mode terminal
+ define_key screen
+ del_curterm screen
+ delay_output screen
+ delch window (stdscr)
+ deleteln window (stdscr)
+ delscreen global locks(screenlist, screen)
+ delwin global locks(windowlist)
+ derwin screen
+ doupdate screen
+ dupwin screen locks(window)
+ echo screen
+ echo_wchar window (stdscr)
+ echochar window (stdscr)
+ endwin screen
+ erase window (stdscr)
+ erasechar window (stdscr)
+ erasewchar window (stdscr)
+ filter global
+ flash terminal
+ flushinp screen
+ get_wch screen (input-operation)
+ get_wstr screen (input-operation)
+ getattrs window
+ getbegx window
+ getbegy window
+ getbkgd window
+ getbkgrnd window
+ getcchar reentrant
+ getch screen (input-operation)
+ getcurx window
+ getcury window
+ getmaxx window
+ getmaxy window
+ getmouse screen (input-operation)
+ getn_wstr screen (input-operation)
+ getnstr screen (input-operation)
+ getparx window
+ getpary window
+ getstr screen (input-operation)
+ getwin screen (input-operation)
+ halfdelay screen
+ has_colors terminal
+ has_ic terminal
+ has_il terminal
+ has_key screen
+ hline window (stdscr)
+ hline_set window (stdscr)
+ idcok window
+ idlok window
+ immedok window
+ in_wch window (stdscr)
+ in_wchnstr window (stdscr)
+ in_wchstr window (stdscr)
+ inch window (stdscr)
+ inchnstr window (stdscr)
+ inchstr window (stdscr)
+ init_color screen
+ init_pair screen
+ initscr global locks(screenlist)
+ innstr window (stdscr)
+
+ innwstr window (stdscr)
+ ins_nwstr window (stdscr)
+ ins_wch window (stdscr)
+ ins_wstr window (stdscr)
+ insch window (stdscr)
+ insdelln window (stdscr)
+ insertln window (stdscr)
+ insnstr window (stdscr)
+ insstr window (stdscr)
+ instr window (stdscr)
+ intrflush terminal
+ inwstr window (stdscr)
+ is_cleared window
+ is_idcok window
+ is_idlok window
+ is_immedok window
+ is_keypad window
+ is_leaveok window
+ is_linetouched window
+ is_nodelay window
+ is_notimeout window
+ is_scrollok window
+ is_syncok window
+ is_term_resized terminal
+ is_wintouched window
+ isendwin screen
+ key_defined screen
+ key_name global (static data)
+ keybound screen
+ keyname global (static data)
+ keyok screen
+ keypad window
+ killchar terminal
+ killwchar terminal
+ leaveok window
+ longname screen
+ mcprint terminal
+ meta screen
+ mouse_trafo window (stdscr)
+ mouseinterval screen
+ mousemask screen
+ move window (stdscr)
+ mvadd_wch window (stdscr)
+ mvadd_wchnstr window (stdscr)
+ mvadd_wchstr window (stdscr)
+ mvaddch window (stdscr)
+ mvaddchnstr window (stdscr)
+ mvaddchstr window (stdscr)
+ mvaddnstr window (stdscr)
+ mvaddnwstr window (stdscr)
+ mvaddstr window (stdscr)
+ mvaddwstr window (stdscr)
+ mvchgat window (stdscr)
+ mvcur screen
+ mvdelch window (stdscr)
+ mvderwin window (stdscr)
+ mvget_wch screen (input-operation)
+ mvget_wstr screen (input-operation)
+ mvgetch screen (input-operation)
+ mvgetn_wstr screen (input-operation)
+ mvgetnstr screen (input-operation)
+ mvgetstr screen (input-operation)
+ mvhline window (stdscr)
+ mvhline_set window (stdscr)
+ mvin_wch window (stdscr)
+ mvin_wchnstr window (stdscr)
+
+ mvin_wchstr window (stdscr)
+ mvinch window (stdscr)
+ mvinchnstr window (stdscr)
+ mvinchstr window (stdscr)
+ mvinnstr window (stdscr)
+ mvinnwstr window (stdscr)
+ mvins_nwstr window (stdscr)
+ mvins_wch window (stdscr)
+ mvins_wstr window (stdscr)
+ mvinsch window (stdscr)
+ mvinsnstr window (stdscr)
+ mvinsstr window (stdscr)
+ mvinstr window (stdscr)
+ mvinwstr window (stdscr)
+ mvprintw window (stdscr)
+ mvscanw screen
+ mvvline window (stdscr)
+ mvvline_set window (stdscr)
+ mvwadd_wch window
+ mvwadd_wchnstr window
+ mvwadd_wchstr window
+ mvwaddch window
+ mvwaddchnstr window
+ mvwaddchstr window
+ mvwaddnstr window
+ mvwaddnwstr window
+ mvwaddstr window
+ mvwaddwstr window
+ mvwchgat window
+ mvwdelch window
+ mvwget_wch screen (input-operation)
+ mvwget_wstr screen (input-operation)
+ mvwgetch screen (input-operation)
+ mvwgetn_wstr screen (input-operation)
+ mvwgetnstr screen (input-operation)
+ mvwgetstr screen (input-operation)
+ mvwhline window
+ mvwhline_set window
+ mvwin window
+ mvwin_wch window
+ mvwin_wchnstr window
+ mvwin_wchstr window
+ mvwinch window
+ mvwinchnstr window
+ mvwinchstr window
+ mvwinnstr window
+ mvwinnwstr window
+ mvwins_nwstr window
+ mvwins_wch window
+ mvwins_wstr window
+ mvwinsch window
+ mvwinsnstr window
+ mvwinsstr window
+ mvwinstr window
+ mvwinwstr window
+ mvwprintw window
+ mvwscanw screen
+ mvwvline window
+ mvwvline_set window
+ napms reentrant
+ newpad global locks(windowlist)
+ newscr screen (readonly)
+ newterm global locks(screenlist)
+ newwin global locks(windowlist)
+ nl screen
+ nocbreak screen
+
+ nodelay window
+ noecho screen
+ nofilter global
+ nonl screen
+ noqiflush terminal
+ noraw screen
+ notimeout window
+ numcodes global (readonly)
+ numfnames global (readonly)
+ numnames global (readonly)
+ ospeed global
+ overlay window locks(source, target)
+ overwrite window locks(source, target)
+ pair_content screen
+ pecho_wchar screen
+ pechochar screen
+ pnoutrefresh screen
+ prefresh screen
+ printw window
+ putp global
+ putwin window
+ qiflush terminal
+ raw screen
+ redrawwin window
+ refresh screen
+ reset_prog_mode screen
+ reset_shell_mode screen
+ resetty terminal
+ resize_term screen locks(windowlist)
+ resizeterm screen
+ restartterm screen
+ ripoffline global (static data)
+ savetty terminal
+ scanw screen
+ scr_dump screen
+ scr_init screen
+ scr_restore screen
+ scr_set screen
+ scrl window (stdscr)
+ scroll window
+ scrollok window
+ set_curterm screen
+ set_escdelay screen
+ set_tabsize screen
+ set_term global locks(screenlist, screen)
+ setcchar reentrant
+ setscrreg window (stdscr)
+ setupterm global
+ slk_attr screen
+ slk_attr_off screen
+ slk_attr_on screen
+ slk_attr_set screen
+ slk_attroff screen
+ slk_attron screen
+ slk_attrset screen
+ slk_clear screen
+ slk_color screen
+ slk_init screen
+ slk_label screen
+ slk_noutrefresh screen
+ slk_refresh screen
+ slk_restore screen
+ slk_set screen
+ slk_touch screen
+ slk_wset screen
+ standend window
+
+ standout window
+ start_color screen
+ stdscr screen (readonly)
+ strcodes global (readonly)
+ strfnames global (readonly)
+ strnames global (readonly)
+ subpad window
+ subwin window
+ syncok window
+ term_attrs screen
+ termattrs screen
+ termname terminal
+ tgetent global
+ tgetflag global
+ tgetnum global
+ tgetstr global
+ tgoto global
+ tigetflag terminal
+ tigetnum terminal
+ tigetstr terminal
+ timeout window (stdscr)
+ touchline window
+ touchwin window
+ tparm global (static data)
+ tputs screen
+ trace global (static data)
+ ttytype screen (readonly)
+ typeahead screen
+ unctrl screen
+ unget_wch screen (input-operation)
+ ungetch screen (input-operation)
+ ungetmouse screen (input-operation)
+ untouchwin window
+ use_default_colors screen
+ use_env global (static data)
+ use_extended_names global (static data)
+ use_legacy_coding screen
+ use_screen global locks(screenlist, screen)
+ use_window global locks(windowlist, window)
+ vid_attr screen
+ vid_puts screen
+ vidattr screen
+ vidputs screen
+ vline window (stdscr)
+ vline_set window (stdscr)
+ vw_printw window
+ vw_scanw screen
+ vwprintw window
+ vwscanw screen
+ wadd_wch window
+ wadd_wchnstr window
+ wadd_wchstr window
+ waddch window
+ waddchnstr window
+ waddchstr window
+ waddnstr window
+ waddnwstr window
+ waddstr window
+ waddwstr window
+ wattr_get window
+ wattr_off window
+ wattr_on window
+ wattr_set window
+ wattroff window
+ wattron window
+ wattrset window
+
+ wbkgd window
+ wbkgdset window
+ wbkgrnd window
+ wbkgrndset window
+ wborder window
+ wborder_set window
+ wchgat window
+ wclear window
+ wclrtobot window
+ wclrtoeol window
+ wcolor_set window
+ wcursyncup screen (affects window plus parents)
+ wdelch window
+ wdeleteln window
+ wecho_wchar window
+ wechochar window
+ wenclose window
+ werase window
+ wget_wch screen (input-operation)
+ wget_wstr screen (input-operation)
+ wgetbkgrnd window
+ wgetch screen (input-operation)
+ wgetdelay window
+ wgetn_wstr screen (input-operation)
+ wgetnstr screen (input-operation)
+ wgetparent window
+ wgetscrreg window
+ wgetstr screen (input-operation)
+ whline window
+ whline_set window
+ win_wch window
+ win_wchnstr window
+ win_wchstr window
+ winch window
+ winchnstr window
+ winchstr window
+ winnstr window
+ winnwstr window
+ wins_nwstr window
+ wins_wch window
+ wins_wstr window
+ winsch window
+ winsdelln window
+ winsertln window
+ winsnstr window
+ winsstr window
+ winstr window
+ winwstr window
+ wmouse_trafo window
+ wmove window
+ wnoutrefresh screen
+ wprintw window
+ wredrawln window
+ wrefresh screen
+ wresize window locks(windowlist)
+ wscanw screen
+ wscrl window
+ wsetscrreg window
+ wstandend window
+ wstandout window
+ wsyncdown screen (affects window plus parents)
+ wsyncup screen (affects window plus parents)
+ wtimeout window
+ wtouchln window
+ wunctrl global (static data)
+ wvline window
+
+ wvline_set window
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ These functions all return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>, except as noted.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
Both a macro and a function are provided for each name.
-</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 ncurses ex-
- tensions be conditioned using NCURSES_VERSION.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></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 ncurses extensions be conditioned using NCURSES_VER-
+ SION.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
- <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>
+ <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-USAGE">USAGE</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_touch.3x.html b/doc/html/man/curs_touch.3x.html
index f2057b9e53b7..a60b3690e2a2 100644
--- a/doc/html/man/curs_touch.3x.html
+++ b/doc/html/man/curs_touch.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free 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,32 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_touch.3x,v 1.14 2010/12/04 18:38:55 tom Exp @
+ * @Id: curs_touch.3x,v 1.21 2018/07/28 21:34:56 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_touch 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_touch 3x</H1>
-<HR>
+<H1 class="no-header">curs_touch 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
+<STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</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>
@@ -62,83 +60,85 @@
<STRONG>bool</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><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <STRONG>touchwin</STRONG> and <STRONG>touchline</STRONG> routines throw away all optimization infor-
+ mation 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>.
-</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.
+ 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>.
- X/Open does not define any error conditions. In this im-
- plementation
+ The <STRONG>is_linetouched</STRONG> and <STRONG>is_wintouched</STRONG> routines return <STRONG>TRUE</STRONG> if the speci-
+ fied line/window was modified since the last call to <STRONG>wrefresh</STRONG>; other-
+ wise they return <STRONG>FALSE</STRONG>. In addition, <STRONG>is_linetouched</STRONG> returns <STRONG>ERR</STRONG> if
+ <EM>line</EM> is not valid for the given window.
- <STRONG>is_linetouched</STRONG>
- returns an error if the window pointer is
- null, or if the line number is outside the
- window. Note that ERR is distinct from TRUE
- and FALSE, which are the normal return values
- of this function.
- <STRONG>wtouchln</STRONG>
- returns an error if the window pointer is
- null, or if the line number is outside the
- window.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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 descriptions.
+ X/Open does not define any error conditions. In this implementation
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4 describes these func-
- tions.
+ <STRONG>is_linetouched</STRONG>
+ returns an error if the window pointer is null, or if the line
+ number is outside the window.
- 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.
+ The constant <STRONG>ERR</STRONG> is distinct from <STRONG>TRUE</STRONG> and <STRONG>FALSE</STRONG>, which are the
+ normal return values of this function. Because the function
+ returns a <STRONG>bool</STRONG>, returning <STRONG>ERR</STRONG> (which is neither <STRONG>TRUE</STRONG> nor <STRONG>FALSE</STRONG>)
+ may not be supported by the compiler.
+ To provide error-checking and also match the X/Open function
+ prototype, the <STRONG>ERR</STRONG> is provided by a macro named <STRONG>is_linetouched</STRONG>.
+ The actual function returns <STRONG>FALSE</STRONG> when it detects an error.
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that all routines except <STRONG>wtouchln</STRONG> may be macros.
+ <STRONG>wtouchln</STRONG>
+ returns an error if the window pointer is null, or if the line
+ number is outside the window.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions were introduced by SVr4. The Solaris curses header
+ file, for instance, defines both an actual function and macro for each.
+ The macros give the same result as the actual functions. SVr4 curses
+ does not check the window parameter <EM>win</EM> to ensure that it is not <STRONG>NULL</STRONG>;
+ otherwise this implementation behaves the same as SVr4.
+
+ The XSI Curses standard, Issue 4 describes these functions, but defines
+ no error conditions.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ All of these routines except <STRONG>wtouchln</STRONG> may be macros.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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_variables.3x.html">curs_variables(3x)</A></STRONG>.
- <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
+ <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_trace.3x.html b/doc/html/man/curs_trace.3x.html
index d3c9eebd982b..77ecbccec61f 100644
--- a/doc/html/man/curs_trace.3x.html
+++ b/doc/html/man/curs_trace.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2000-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2000-2017,2019 Free 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,160 +26,254 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_trace.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
+ * @Id: curs_trace.3x,v 1.20 2019/12/07 18:55:02 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_trace 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_trace 3x</H1>
-<HR>
+<H1 class="no-header">curs_trace 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG> <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>
+<STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG> <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>_tracef</STRONG>, <STRONG>_tracedump</STRONG>, <STRONG>_traceattr</STRONG>, <STRONG>_traceattr2</STRONG>,
- <STRONG>_nc_tracebits</STRONG>, <STRONG>_tracecchar_t</STRONG>, <STRONG>_tracecchar_t2</STRONG>, <STRONG>_tracechar</STRONG>,
- <STRONG>_tracechtype</STRONG>, <STRONG>_tracechtype2</STRONG>, <STRONG>_tracemouse</STRONG>, <STRONG>trace</STRONG> - <STRONG>curses</STRONG>
- debugging routines
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>curses_trace</STRONG>, <STRONG>trace</STRONG>, <STRONG>_tracef</STRONG>, <STRONG>_traceattr</STRONG>, <STRONG>_traceattr2</STRONG>, <STRONG>_tracecchar_t</STRONG>,
+ <STRONG>_tracecchar_t2</STRONG>, <STRONG>_tracechar</STRONG>, <STRONG>_tracechtype</STRONG>, <STRONG>_tracechtype2</STRONG>, <STRONG>_nc_tracebits</STRONG>,
+ <STRONG>_tracedump</STRONG>, <STRONG>_tracemouse</STRONG> - <STRONG>curses</STRONG> debugging routines
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
- <STRONG>void</STRONG> <STRONG>_tracef(const</STRONG> <STRONG>char</STRONG> <STRONG>*format,</STRONG> <STRONG>...);</STRONG>
- <STRONG>void</STRONG> <STRONG>_tracedump(const</STRONG> <STRONG>char</STRONG> <STRONG>*label,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>char</STRONG> <STRONG>*_traceattr(attr_t</STRONG> <STRONG>attr);</STRONG>
- <STRONG>char</STRONG> <STRONG>*_traceattr2(int</STRONG> <STRONG>buffer,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
+ <STRONG>unsigned</STRONG> <STRONG>curses_trace(const</STRONG> <STRONG>unsigned</STRONG> <EM>param</EM><STRONG>);</STRONG>
+
+ <STRONG>void</STRONG> <STRONG>_tracef(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>format</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
+
+ <STRONG>char</STRONG> <STRONG>*_traceattr(attr_t</STRONG> <EM>attr</EM><STRONG>);</STRONG>
+ <STRONG>char</STRONG> <STRONG>*_traceattr2(int</STRONG> <EM>buffer</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+ <STRONG>char</STRONG> <STRONG>*_tracecchar_t(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>string</EM><STRONG>);</STRONG>
+ <STRONG>char</STRONG> <STRONG>*_tracecchar_t2(int</STRONG> <EM>buffer</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>string</EM><STRONG>);</STRONG>
+ <STRONG>char</STRONG> <STRONG>*_tracechar(int</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+ <STRONG>char</STRONG> <STRONG>*_tracechtype(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+ <STRONG>char</STRONG> <STRONG>*_tracechtype2(int</STRONG> <EM>buffer</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+
+ <STRONG>void</STRONG> <STRONG>_tracedump(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>label</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
<STRONG>char</STRONG> <STRONG>*_nc_tracebits(void);</STRONG>
- <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>_tracecchar_t(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*string);</STRONG>
- <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>_tracecchar_t2(int</STRONG> <STRONG>buffer,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*string);</STRONG>
- <STRONG>char</STRONG> <STRONG>*_tracechar(int</STRONG> <STRONG>ch);</STRONG>
- <STRONG>char</STRONG> <STRONG>*_tracechtype(chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>char</STRONG> <STRONG>*_tracechtype2(int</STRONG> <STRONG>buffer,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>char</STRONG> <STRONG>*_tracemouse(const</STRONG> <STRONG>MEVENT</STRONG> <STRONG>*event);</STRONG>
- <STRONG>void</STRONG> <STRONG>trace(const</STRONG> <STRONG>unsigned</STRONG> <STRONG>int</STRONG> <STRONG>param);</STRONG>
+ <STRONG>char</STRONG> <STRONG>*_tracemouse(const</STRONG> <STRONG>MEVENT</STRONG> <STRONG>*</STRONG><EM>event</EM><STRONG>);</STRONG>
+ /* deprecated */
+ <STRONG>void</STRONG> <STRONG>trace(const</STRONG> <STRONG>unsigned</STRONG> <STRONG>int</STRONG> <EM>param</EM><STRONG>);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>trace</STRONG> routines are used for debugging the ncurses li-
- braries, as well as applications which use the ncurses li-
- braries. These functions are normally available only with
- the debugging library <EM>libncurses</EM><STRONG>_</STRONG><EM>g.a</EM>, but may be compiled
- into any model (shared, static, profile) by defining the
- symbol <STRONG>TRACE</STRONG>. Additionally, some functions are only
- available with the wide-character configuration of the li-
- braries.
-
- The principal parts of this interface are the <STRONG>trace</STRONG> rou-
- tine which selectively enables different tracing features,
- and the <STRONG>_tracef</STRONG> routine which writes formatted data to the
- <EM>trace</EM> file.
-
- Calling <STRONG>trace</STRONG> with a nonzero parameter opens the file
- <STRONG>trace</STRONG> in the current directory for output. The parameter
- is formed by OR'ing values from the list of <STRONG>TRACE_</STRONG><EM>xxx</EM> def-
- initions in <STRONG>&lt;curses.h&gt;</STRONG>. These include:
-
- TRACE_DISABLE
- turn off tracing.
-
- TRACE_TIMES
+
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <EM>curses</EM> <EM>trace</EM> routines are used for debugging the ncurses libraries,
+ as well as applications which use the ncurses libraries. Some limita-
+ tions apply:
+
+ <STRONG>o</STRONG> Aside from <STRONG>curses_trace</STRONG>, the other functions are normally available
+ only with the debugging library e.g., <EM>libncurses</EM><STRONG>_</STRONG><EM>g.a</EM>.
+
+ All of the trace functions may be compiled into any model (shared,
+ static, profile) by defining the symbol <STRONG>TRACE</STRONG>.
+
+ <STRONG>o</STRONG> Additionally, the functions which use <STRONG>cchar_t</STRONG> are only available
+ with the wide-character configuration of the libraries.
+
+
+</PRE><H3><a name="h3-Functions">Functions</a></H3><PRE>
+ The principal parts of this interface are
+
+ <STRONG>o</STRONG> <STRONG>curses_trace</STRONG>, which selectively enables different tracing features,
+ and
+
+ <STRONG>o</STRONG> <STRONG>_tracef</STRONG>, which writes formatted data to the <EM>trace</EM> file.
+
+ The other functions either return a pointer to a string-area (allo-
+ cated by the corresponding function), or return no value (such as
+ <STRONG>_tracedump</STRONG>, which implements the screen dump for <STRONG>TRACE_UPDATE</STRONG>).
+ The caller should not free these strings, since the allocation is
+ reused on successive calls. To work around the problem of a single
+ string-area per function, some use a buffer-number parameter,
+ telling the library to allocate additional string-areas.
+
+ The <STRONG>curses_trace</STRONG> function is always available, whether or not the other
+ trace functions are available:
+
+ <STRONG>o</STRONG> If tracing is available, calling <STRONG>curses_trace</STRONG> with a nonzero param-
+ eter updates the trace mask, and returns the previous trace mask.
+
+ When the trace mask is nonzero, ncurses creates the file "trace" in
+ the current directory for output. If the file already exists, no
+ tracing is done.
+
+ <STRONG>o</STRONG> If tracing is not available, <STRONG>curses_trace</STRONG> returns zero (0).
+
+
+</PRE><H3><a name="h3-Trace-Parameter">Trace Parameter</a></H3><PRE>
+ The trace parameter is formed by OR'ing values from the list of
+ <STRONG>TRACE_</STRONG><EM>xxx</EM> definitions in <STRONG>&lt;curses.h&gt;</STRONG>. These include:
+
+ <STRONG>TRACE_DISABLE</STRONG>
+ turn off tracing by passing a zero parameter.
+
+ The library flushes the output file, but retains an open file-de-
+ scriptor to the trace file so that it can resume tracing later if
+ a nonzero parameter is passed to the <STRONG>curses_trace</STRONG> function.
+
+ <STRONG>TRACE_TIMES</STRONG>
trace user and system times of updates.
- TRACE_TPUTS
- trace tputs calls.
+ <STRONG>TRACE_TPUTS</STRONG>
+ trace <STRONG><A HREF="curs_terminfo.3x.html">tputs(3x)</A></STRONG> calls.
- TRACE_UPDATE
+ <STRONG>TRACE_UPDATE</STRONG>
trace update actions, old &amp; new screens.
- TRACE_MOVE
+ <STRONG>TRACE_MOVE</STRONG>
trace cursor movement and scrolling.
- TRACE_CHARPUT
+ <STRONG>TRACE_CHARPUT</STRONG>
trace all character outputs.
- TRACE_ORDINARY
- trace all update actions. The old and new screen
- contents are written to the trace file for each re-
- fresh.
+ <STRONG>TRACE_ORDINARY</STRONG>
+ 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.
+ <STRONG>TRACE_CALLS</STRONG>
+ trace all curses calls. The parameters for each call are traced,
+ as well as return values.
- TRACE_VIRTPUT
+ <STRONG>TRACE_VIRTPUT</STRONG>
trace virtual character puts, i.e., calls to <STRONG>addch</STRONG>.
- TRACE_IEVENT
+ <STRONG>TRACE_IEVENT</STRONG>
trace low-level input processing, including timeouts.
- TRACE_BITS
+ <STRONG>TRACE_BITS</STRONG>
trace state of TTY control bits.
- TRACE_ICALLS
+ <STRONG>TRACE_ICALLS</STRONG>
trace internal/nested calls.
- TRACE_CCALLS
+ <STRONG>TRACE_CCALLS</STRONG>
trace per-character calls.
- TRACE_DATABASE
+ <STRONG>TRACE_DATABASE</STRONG>
trace read/write of terminfo/termcap data.
- TRACE_ATTRS
+ <STRONG>TRACE_ATTRS</STRONG>
trace changes to video attributes and colors.
- TRACE_MAXIMUM
- maximum trace level, enables all of the separate
- trace features.
+ <STRONG>TRACE_MAXIMUM</STRONG>
+ maximum trace level, enables all of the separate trace features.
- Some tracing features are enabled whenever the <STRONG>trace</STRONG> pa-
- rameter is nonzero. Some features overlap. The specific
- names are used as a guideline.
+ Some tracing features are enabled whenever the <STRONG>curses_trace</STRONG> parameter
+ is nonzero. Some features overlap. The specific names are used as a
+ guideline.
- These functions check the <STRONG>NCURSES_TRACE</STRONG> environment vari-
- able, to set the tracing feature as if <STRONG>trace</STRONG> was called:
- filter, initscr, new_prescr, newterm, nofilter,
- ripoffline, setupterm, slk_init, tgetent
+</PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
+ These functions check the <STRONG>NCURSES_TRACE</STRONG> environment variable, to set
+ the tracing feature as if <STRONG>curses_trace</STRONG> was called:
+ filter, initscr, new_prescr, newterm, nofilter, restartterm,
+ ripoffline, setupterm, slk_init, tgetent, use_env,
+ use_extended_names, use_tioctl
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- Routines which return a value are designed to be used as
- parameters to the <STRONG>_tracef</STRONG> routine.
+</PRE><H3><a name="h3-Command-line-Utilities">Command-line Utilities</a></H3><PRE>
+ The command-line utilities such as <STRONG><A HREF="tic.1m.html">tic(1)</A></STRONG> provide a verbose option
+ which extends the set of messages written using the <STRONG>curses_trace</STRONG> func-
+ tion. Both of these (<STRONG>-v</STRONG> and <STRONG>curses_trace</STRONG>) use the same variable
+ (<STRONG>_nc_tracing</STRONG>), which determines the messages which are written.
-</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.
+ Because the command-line utilities may call initialization functions
+ such as <STRONG>setupterm</STRONG>, <STRONG>tgetent</STRONG> or <STRONG>use_extended_names</STRONG>, some of their debug-
+ ging output may be directed to the <EM>trace</EM> file if the <STRONG>NCURSES_TRACE</STRONG> en-
+ vironment variable is set:
+ <STRONG>o</STRONG> messages produced in the utility are written to the standard error.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+ <STRONG>o</STRONG> messages produced by the underlying library are written to <EM>trace</EM>.
+
+ If ncurses is built without tracing, none of the latter are produced,
+ and fewer diagnostics are provided by the command-line utilities.
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Routines which return a value are designed to be used as parameters to
+ the <STRONG>_tracef</STRONG> routine.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are not part of the XSI interface. Some other curses
+ implementations are known to have similar features, but they are not
+ compatible with ncurses:
+
+ <STRONG>o</STRONG> SVr4 provided <STRONG>traceon</STRONG> and <STRONG>traceoff</STRONG>, to control whether debugging
+ information was written to the "trace" file. While the functions
+ were always available, this feature was only enabled if <STRONG>DEBUG</STRONG> was
+ defined when building the library.
+
+ The SVr4 tracing feature is undocumented.
+
+ <STRONG>o</STRONG> PDCurses provides <STRONG>traceon</STRONG> and <STRONG>traceoff</STRONG>, which (like SVr4) are al-
+ ways available, and enable tracing to the "trace" file only when a
+ debug-library is built.
+
+ PDCurses has a short description of these functions, with a note
+ that they are not present in X/Open Curses, ncurses or NetBSD. It
+ does not mention SVr4, but the functions' inclusion in a header
+ file section labeled "Quasi-standard" hints at the origin.
+
+ <STRONG>o</STRONG> NetBSD does not provide functions for enabling/disabling traces.
+ It uses environment variables <STRONG>CURSES_TRACE_MASK</STRONG> and <STRONG>CURS-</STRONG>
+ <STRONG>ES_TRACE_FILE</STRONG> to determine what is traced, and where the results
+ are written. This is available only when a debug-library is built.
+
+ The NetBSD tracing feature is undocumented.
+
+ A few ncurses functions are not provided when symbol versioning is
+ used:
+
+ _nc_tracebits, _tracedump, _tracemouse
+
+ The original <STRONG>trace</STRONG> routine was deprecated because it often conflicted
+ with application names.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
- <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>
+ <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Functions">Functions</a></li>
+<li><a href="#h3-Trace-Parameter">Trace Parameter</a></li>
+<li><a href="#h3-Initialization">Initialization</a></li>
+<li><a href="#h3-Command-line-Utilities">Command-line Utilities</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_util.3x.html b/doc/html/man/curs_util.3x.html
index b2006cd3634c..1c175a774ab9 100644
--- a/doc/html/man/curs_util.3x.html
+++ b/doc/html/man/curs_util.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,39 +27,38 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_util.3x,v 1.37 2013/07/20 19:43:45 tom Exp @
+ * @Id: curs_util.3x,v 1.56 2019/11/30 21:04:02 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_util 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_util 3x</H1>
-<HR>
+<H1 class="no-header">curs_util 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
+<STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>delay_output</STRONG>, <STRONG>filter</STRONG>, <STRONG>flushinp</STRONG>, <STRONG>getwin</STRONG>, <STRONG>key_name</STRONG>, <STRONG>keyname</STRONG>,
- <STRONG>nofilter</STRONG>, <STRONG>putwin</STRONG>, <STRONG>unctrl</STRONG>, <STRONG>use_env</STRONG>, <STRONG>use_tioctl</STRONG>, <STRONG>wunctrl</STRONG> -
- miscellaneous <STRONG>curses</STRONG> utility routines
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>delay_output</STRONG>, <STRONG>filter</STRONG>, <STRONG>flushinp</STRONG>, <STRONG>getwin</STRONG>, <STRONG>key_name</STRONG>, <STRONG>keyname</STRONG>, <STRONG>nofilter</STRONG>,
+ <STRONG>putwin</STRONG>, <STRONG>unctrl</STRONG>, <STRONG>use_env</STRONG>, <STRONG>use_tioctl</STRONG>, <STRONG>wunctrl</STRONG> - miscellaneous <STRONG>curses</STRONG>
+ utility routines
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
- <STRONG>char</STRONG> <STRONG>*unctrl(chtype</STRONG> <STRONG>c);</STRONG>
+ <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*unctrl(chtype</STRONG> <STRONG>c);</STRONG>
<STRONG>wchar_t</STRONG> <STRONG>*wunctrl(cchar_t</STRONG> <STRONG>*c);</STRONG>
- <STRONG>char</STRONG> <STRONG>*keyname(int</STRONG> <STRONG>c);</STRONG>
- <STRONG>char</STRONG> <STRONG>*key_name(wchar_t</STRONG> <STRONG>w);</STRONG>
+ <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*keyname(int</STRONG> <STRONG>c);</STRONG>
+ <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*key_name(wchar_t</STRONG> <STRONG>w);</STRONG>
<STRONG>void</STRONG> <STRONG>filter(void);</STRONG>
<STRONG>void</STRONG> <STRONG>nofilter(void);</STRONG>
<STRONG>void</STRONG> <STRONG>use_env(bool</STRONG> <STRONG>f);</STRONG>
@@ -71,248 +69,318 @@
<STRONG>int</STRONG> <STRONG>flushinp(void);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>unctrl</STRONG> routine returns a character string which is a
- printable representation of the character <EM>c</EM>, ignoring at-
- tributes. Control characters are displayed in the <STRONG>^</STRONG><EM>X</EM> no-
- tation. Printing characters are displayed as is. The
- corresponding <STRONG>wunctrl</STRONG> returns a printable representation
- of a wide character.
-
- The <STRONG>keyname</STRONG> routine returns a character string correspond-
- ing to the key <EM>c</EM>:
-
- <STRONG>o</STRONG> Printable characters are displayed as themselves,
- e.g., a one-character string containing the key.
-
- <STRONG>o</STRONG> Control characters are displayed in the <STRONG>^</STRONG><EM>X</EM> nota-
- tion.
-
- <STRONG>o</STRONG> DEL (character 127) is displayed as <STRONG>^?</STRONG>.
-
- <STRONG>o</STRONG> Values above 128 are either meta characters (if the
- screen has not been initialized, or if <STRONG>meta</STRONG> has
- been called with a TRUE parameter), shown in the
- <STRONG>M-</STRONG><EM>X</EM> notation, or are displayed as themselves. In
- the latter case, the values may not be printable;
- this follows the X/Open specification.
-
- <STRONG>o</STRONG> Values above 256 may be the names of the names of
- function keys.
-
- <STRONG>o</STRONG> Otherwise (if there is no corresponding name) the
- function returns null, to denote an error. X/Open
- also lists an "UNKNOWN KEY" return value, which
- some implementations return rather than null.
-
- The corresponding <STRONG>key_name</STRONG> returns a character string cor-
- responding to the wide-character value <EM>w</EM>. The two func-
- tions do not return the same set of strings; the latter
- returns null where the former would display a meta charac-
- ter.
-
- 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>nofilter</STRONG> routine cancels the effect of a preceding
- <STRONG>filter</STRONG> call. That allows the caller to initialize a
- screen on a different device, using a different value of
- <STRONG>$TERM</STRONG>. The limitation arises because the <STRONG>filter</STRONG> routine
- modifies the in-memory copy of the terminal information.
-
- The <STRONG>use_env</STRONG> routine, if used, should be called before
- <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> are called (because those compute the
- screen size). It modifies the way <STRONG>ncurses</STRONG> treats environ-
- ment variables when determining the screen size.
-
- <STRONG>o</STRONG> Normally ncurses looks first at the terminal database
- for the screen size.
-
- If <STRONG>use_env</STRONG> was called with <STRONG>FALSE</STRONG> for parameter, it
- stops here unless If <STRONG>use_tioctl</STRONG> was also called with
- <STRONG>TRUE</STRONG> for parameter.
-
- <STRONG>o</STRONG> Then it asks for the screen size via operating system
- calls. If successful, it overrides the values from
- the terminal database.
-
- <STRONG>o</STRONG> Finally (unless <STRONG>use_env</STRONG> was called with <STRONG>FALSE</STRONG> parame-
- ter), ncurses examines the <STRONG>LINES</STRONG> or <STRONG>COLUMNS</STRONG> environ-
- ment variables, using a value in those to override the
- results from the operating system or terminal data-
- base.
-
- Ncurses also updates the screen size in response to
- SIGWINCH, unless overridden by the <STRONG>LINES</STRONG> or <STRONG>COLUMNS</STRONG>
- environment variables,
-
- The <STRONG>use_tioctl</STRONG> routine, if used, should be called before
- <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> are called (because those compute the
- screen size). After <STRONG>use_tioctl</STRONG> is called with <STRONG>TRUE</STRONG> as an
- argument, ncurses modifies the last step in its computa-
- tion of screen size as follows:
-
- <STRONG>o</STRONG> checks if the <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> environment variables
- are set to a number greater than zero.
-
- <STRONG>o</STRONG> for each, ncurses updates the corresponding environ-
- ment variable with the value that it has obtained via
- operating system call or from the terminal database.
-
- <STRONG>o</STRONG> ncurses re-fetches the value of the environment vari-
- ables so that it is still the environment variables
- which set the screen size.
-
- The <STRONG>use_env</STRONG> and <STRONG>use_tioctl</STRONG> routines combine as summarized
- here:
-
- <EM>use</EM><STRONG>_</STRONG><EM>env</EM> <EM>use</EM><STRONG>_</STRONG><EM>tioctl</EM> <EM>Summary</EM>
- ----------------------------------------------------------------
- TRUE FALSE This is the default behavior. ncurses
- uses operating system calls unless over-
- ridden by $LINES or $COLUMNS environment
- variables.
- TRUE TRUE ncurses updates $LINES and $COLUMNS
- based on operating system calls.
-
- FALSE TRUE ncurses ignores $LINES and $COLUMNS, us-
- es operating system calls to obtain
- size.
- FALSE FALSE ncurses relies on the terminal database
- to determine size.
-
- 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
- pause. If no padding character is specified, this uses
- <STRONG>napms</STRONG> to perform the delay.
-
- The <STRONG>flushinp</STRONG> routine throws away any typeahead that has
- been typed by the user and has not yet been read by the
- program.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+</PRE><H3><a name="h3-unctrl">unctrl</a></H3><PRE>
+ The <STRONG>unctrl</STRONG> routine returns a character string which is a printable rep-
+ resentation of the character <EM>c</EM>, ignoring attributes. Control charac-
+ ters are displayed in the <STRONG>^</STRONG><EM>X</EM> notation. Printing characters are dis-
+ played as is. The corresponding <STRONG>wunctrl</STRONG> returns a printable represen-
+ tation of a wide character.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- Except for <STRONG>flushinp</STRONG>, routines that return an integer re-
- turn <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 specifies only "an in-
- teger value other than <STRONG>ERR</STRONG>") upon successful completion.
+
+</PRE><H3><a name="h3-keyname_key_name">keyname/key_name</a></H3><PRE>
+ The <STRONG>keyname</STRONG> routine returns a character string corresponding to the key
+ <EM>c</EM>:
+
+ <STRONG>o</STRONG> Printable characters are displayed as themselves, e.g., a one-char-
+ acter string containing the key.
+
+ <STRONG>o</STRONG> Control characters are displayed in the <STRONG>^</STRONG><EM>X</EM> notation.
+
+ <STRONG>o</STRONG> DEL (character 127) is displayed as <STRONG>^?</STRONG>.
+
+ <STRONG>o</STRONG> Values above 128 are either meta characters (if the screen has not
+ been initialized, or if <STRONG><A HREF="curs_inopts.3x.html">meta(3x)</A></STRONG> has been called with a <STRONG>TRUE</STRONG> param-
+ eter), shown in the <STRONG>M-</STRONG><EM>X</EM> notation, or are displayed as themselves.
+ In the latter case, the values may not be printable; this follows
+ the X/Open specification.
+
+ <STRONG>o</STRONG> Values above 256 may be the names of the names of function keys.
+
+ <STRONG>o</STRONG> Otherwise (if there is no corresponding name) the function returns
+ null, to denote an error. X/Open also lists an "UNKNOWN KEY" re-
+ turn value, which some implementations return rather than null.
+
+ The corresponding <STRONG>key_name</STRONG> returns a character string corresponding to
+ the wide-character value <EM>w</EM>. The two functions do not return the same
+ set of strings; the latter returns null where the former would display
+ a meta character.
+
+
+</PRE><H3><a name="h3-filter_nofilter">filter/nofilter</a></H3><PRE>
+ The <STRONG>filter</STRONG> routine, if used, must be called before <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>
+ are called. Calling <STRONG>filter</STRONG> causes these changes in initialization:
+
+ <STRONG>o</STRONG> <STRONG>LINES</STRONG> is set to 1;
+
+ <STRONG>o</STRONG> the capabilities <STRONG>clear</STRONG>, <STRONG>cud1</STRONG>, <STRONG>cud</STRONG>, <STRONG>cup</STRONG>, <STRONG>cuu1</STRONG>, <STRONG>cuu</STRONG>, <STRONG>vpa</STRONG> are dis-
+ abled;
+
+ <STRONG>o</STRONG> the capability <STRONG>ed</STRONG> is disabled if <STRONG>bce</STRONG> is set;
+
+ <STRONG>o</STRONG> and the <STRONG>home</STRONG> string is set to the value of <STRONG>cr</STRONG>.
+
+ The <STRONG>nofilter</STRONG> routine cancels the effect of a preceding <STRONG>filter</STRONG> call.
+ That allows the caller to initialize a screen on a different device,
+ using a different value of <STRONG>$TERM</STRONG>. The limitation arises because the
+ <STRONG>filter</STRONG> routine modifies the in-memory copy of the terminal information.
+
+
+</PRE><H3><a name="h3-use_env">use_env</a></H3><PRE>
+ The <STRONG>use_env</STRONG> routine, if used, should be called before <STRONG>initscr</STRONG> or
+ <STRONG>newterm</STRONG> are called (because those compute the screen size). It modi-
+ fies the way <STRONG>ncurses</STRONG> treats environment variables when determining the
+ screen size.
+
+ <STRONG>o</STRONG> Normally <STRONG>ncurses</STRONG> looks first at the terminal database for the
+ screen size.
+
+ If <STRONG>use_env</STRONG> was called with <STRONG>FALSE</STRONG> for parameter, it stops here un-
+ less <STRONG>use_tioctl</STRONG> was also called with <STRONG>TRUE</STRONG> for parameter.
+
+ <STRONG>o</STRONG> Then it asks for the screen size via operating system calls. If
+ successful, it overrides the values from the terminal database.
+
+ <STRONG>o</STRONG> Finally (unless <STRONG>use_env</STRONG> was called with <STRONG>FALSE</STRONG> parameter), <STRONG>ncurses</STRONG>
+ examines the <STRONG>LINES</STRONG> or <STRONG>COLUMNS</STRONG> environment variables, using a value
+ in those to override the results from the operating system or ter-
+ minal database.
+
+ <STRONG>Ncurses</STRONG> also updates the screen size in response to <STRONG>SIGWINCH</STRONG>, un-
+ less overridden by the <STRONG>LINES</STRONG> or <STRONG>COLUMNS</STRONG> environment variables,
+
+
+</PRE><H3><a name="h3-use_tioctl">use_tioctl</a></H3><PRE>
+ The <STRONG>use_tioctl</STRONG> routine, if used, should be called before <STRONG>initscr</STRONG> or
+ <STRONG>newterm</STRONG> are called (because those compute the screen size). After
+ <STRONG>use_tioctl</STRONG> is called with <STRONG>TRUE</STRONG> as an argument, <STRONG>ncurses</STRONG> modifies the
+ last step in its computation of screen size as follows:
+
+ <STRONG>o</STRONG> checks if the <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> environment variables are set to a
+ number greater than zero.
+
+ <STRONG>o</STRONG> for each, <STRONG>ncurses</STRONG> updates the corresponding environment variable
+ with the value that it has obtained via operating system call or
+ from the terminal database.
+
+ <STRONG>o</STRONG> <STRONG>ncurses</STRONG> re-fetches the value of the environment variables so that
+ it is still the environment variables which set the screen size.
+
+ The <STRONG>use_env</STRONG> and <STRONG>use_tioctl</STRONG> routines combine as summarized here:
+
+ <EM>use</EM><STRONG>_</STRONG><EM>env</EM> <EM>use</EM><STRONG>_</STRONG><EM>tioctl</EM> <EM>Summary</EM>
+ ----------------------------------------------------------------
+ TRUE FALSE This is the default behavior. <STRONG>ncurses</STRONG>
+ uses operating system calls unless over-
+ ridden by $LINES or $COLUMNS environment
+ variables.
+ TRUE TRUE <STRONG>ncurses</STRONG> updates $LINES and $COLUMNS
+ based on operating system calls.
+ FALSE TRUE <STRONG>ncurses</STRONG> ignores $LINES and $COLUMNS, us-
+ es operating system calls to obtain
+ size.
+ FALSE FALSE <STRONG>ncurses</STRONG> relies on the terminal database
+ to determine size.
+
+
+</PRE><H3><a name="h3-putwin_getwin">putwin/getwin</a></H3><PRE>
+ The <STRONG>putwin</STRONG> routine writes all data associated with window (or pad) <EM>win</EM>
+ into the file to which <EM>filep</EM> points. This information can be later re-
+ trieved 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. There are a few
+ caveats:
+
+ <STRONG>o</STRONG> the data written is a copy of the <STRONG>WINDOW</STRONG> structure, and its associ-
+ ated character cells. The format differs between the wide-charac-
+ ter (<STRONG>ncursesw</STRONG>) and non-wide (<STRONG>ncurses</STRONG>) libraries. You can transfer
+ data between the two, however.
+
+ <STRONG>o</STRONG> the retrieved window is always created as a top-level window (or
+ pad), rather than a subwindow.
+
+ <STRONG>o</STRONG> the window's character cells contain the color pair <EM>value</EM>, but not
+ the actual color <EM>numbers</EM>. If cells in the retrieved window use
+ color pairs which have not been created in the application using
+ <STRONG>init_pair</STRONG>, they will not be colored when the window is refreshed.
+
+
+</PRE><H3><a name="h3-delay_output">delay_output</a></H3><PRE>
+ 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 pause. If no padding character is speci-
+ fied, this uses <STRONG>napms</STRONG> to perform the delay.
+
+
+</PRE><H3><a name="h3-flushinp">flushinp</a></H3><PRE>
+ The <STRONG>flushinp</STRONG> routine throws away any typeahead that has been typed by
+ the user and has not yet been read by the program.
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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.
Routines that return pointers return <STRONG>NULL</STRONG> on error.
- X/Open does not define any error conditions. In this im-
- plementation
+ X/Open does not define any error conditions. In this implementation
<STRONG>flushinp</STRONG>
- returns an error if the terminal was not initial-
- ized.
-
- <STRONG>meta</STRONG> returns an error if the terminal was not initial-
- ized.
+ returns an error if the terminal was not initialized.
<STRONG>putwin</STRONG>
- returns an error if the associated <STRONG>fwrite</STRONG> calls
- return an error.
+ returns an error if the associated <STRONG>fwrite</STRONG> calls return an er-
+ ror.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+
+</PRE><H3><a name="h3-filter">filter</a></H3><PRE>
+ 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><H3><a name="h3-keyname">keyname</a></H3><PRE>
+ The <STRONG>keyname</STRONG> function may return the names of user-defined string capa-
+ bilities which are defined in the terminfo entry via the <STRONG>-x</STRONG> option of
+ <STRONG>tic</STRONG>. This implementation automatically assigns at run-time keycodes to
+ user-defined strings which begin with "k". The keycodes start at
+ KEY_MAX, but are not guaranteed to be the same value for different runs
+ because user-defined codes are merged from all terminal descriptions
+ which have been loaded. The <STRONG><A HREF="curs_extend.3x.html">use_extended_names(3x)</A></STRONG> function controls
+ whether this data is loaded when the terminal description is read by
+ the library.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4 describes these func-
- tions. It states that <STRONG>unctrl</STRONG> and <STRONG>wunctrl</STRONG> will return a
- null pointer if unsuccessful, but does not define any er-
- ror conditions. This implementation checks for three cas-
- es:
-
- <STRONG>o</STRONG> the parameter is a 7-bit US-ASCII code. This is
- the case that X/Open Curses documented.
-
- <STRONG>o</STRONG> the parameter is in the range 128-159, i.e., a C1
- control code. If <STRONG>use_legacy_coding</STRONG> has been called
- with a <STRONG>2</STRONG> parameter, <STRONG>unctrl</STRONG> returns the parameter,
- i.e., a one-character string with the parameter as
- the first character. Otherwise, it returns "~@",
- "~A", etc., analogous to "^@", "^A", C0 controls.
-
- X/Open Curses does not document whether <STRONG>unctrl</STRONG> can
- be called before initializing curses. This imple-
- mentation permits that, and returns the "~@", etc.,
- values in that case.
-
- <STRONG>o</STRONG> parameter values outside the 0 to 255 range. <STRONG>unc-</STRONG>
- <STRONG>trl</STRONG> returns a null pointer.
-
- 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>).
-
- The strings returned by <STRONG>unctrl</STRONG> in this implementation are
- determined at compile time, showing C1 controls from the
- upper-128 codes with a `~' prefix rather than `^'. Other
- implementations have different conventions. For example,
- they may show both sets of control characters with `^',
- and strip the parameter to 7 bits. Or they may ignore C1
- controls and treat all of the upper-128 codes as print-
- able. This implementation uses 8 bits but does not modify
- the string to reflect locale. The <STRONG>use_legacy_coding</STRONG> func-
- tion allows the caller to change the output of <STRONG>unctrl</STRONG>.
-
- Likewise, the <STRONG>meta</STRONG> function allows the caller to change
- the output of <STRONG>keyname</STRONG>, i.e., it determines whether to use
- the `M-' prefix for "meta" keys (codes in the range 128 to
- 255). Both <STRONG>use_legacy_coding</STRONG> and <STRONG>meta</STRONG> succeed only after
- curses is initialized. X/Open Curses does not document
- the treatment of codes 128 to 159. When treating them as
- "meta" keys (or if <STRONG>keyname</STRONG> is called before initializing
- curses), this implementation returns strings "M-^@",
- "M-^A", etc.
-
- The <STRONG>keyname</STRONG> function may return the names of user-defined
- string capabilities which are defined in the terminfo en-
- try via the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>. This implementation auto-
- matically assigns at run-time keycodes to user-defined
- strings which begin with "k". The keycodes start at
- KEY_MAX, but are not guaranteed to be the same value for
- different runs because user-defined codes are merged from
- all terminal descriptions which have been loaded. The
- <STRONG>use_extended_names</STRONG> function controls whether this data is
- loaded when the terminal description is read by the li-
- brary.
-
- The <STRONG>nofilter</STRONG> and <STRONG>use_tioctl</STRONG> 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 ncurses extensions be conditioned using
- NCURSES_VERSION.
+</PRE><H3><a name="h3-nofilter_use_tioctl">nofilter/use_tioctl</a></H3><PRE>
+ The <STRONG>nofilter</STRONG> and <STRONG>use_tioctl</STRONG> routines are specific to <STRONG>ncurses</STRONG>. They
+ were not supported on Version 7, BSD or System V implementations. It
+ is recommended that any code depending on <STRONG>ncurses</STRONG> extensions be condi-
+ tioned using NCURSES_VERSION.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG>curs_ker-</STRONG>
- <STRONG><A HREF="curs_kernel.3x.html">nel(3x)</A></STRONG>, <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>lega-</STRONG>
- <STRONG><A HREF="legacy_coding.3x.html">cy_coding(3x)</A></STRONG>.
+</PRE><H3><a name="h3-putwin_getwin">putwin/getwin</a></H3><PRE>
+ The <STRONG>putwin</STRONG> and <STRONG>getwin</STRONG> functions have several issues with portability:
+
+ <STRONG>o</STRONG> The files written and read by these functions use an implementa-
+ tion-specific format. Although the format is an obvious target for
+ standardization, it has been overlooked.
+
+ Interestingly enough, according to the copyright dates in Solaris
+ source, the functions (along with <STRONG>scr_init</STRONG>, etc.) originated with
+ the University of California, Berkeley (in 1982) and were later (in
+ 1988) incorporated into SVr4. Oddly, there are no such functions
+ in the 4.3BSD curses sources.
+
+ <STRONG>o</STRONG> Most implementations simply dump the binary <STRONG>WINDOW</STRONG> structure to the
+ file. These include SVr4 curses, NetBSD and PDCurses, as well as
+ older <STRONG>ncurses</STRONG> versions. This implementation (as well as the X/Open
+ variant of Solaris curses, dated 1995) uses textual dumps.
+
+ The implementations which use binary dumps use block-I/O (the
+ <STRONG>fwrite</STRONG> and <STRONG>fread</STRONG> functions). Those that use textual dumps use
+ buffered-I/O. A few applications may happen to write extra data in
+ the file using these functions. Doing that can run into problems
+ mixing block- and buffered-I/O. This implementation reduces the
+ problem on writes by flushing the output. However, reading from a
+ file written using mixed schemes may not be successful.
+
+
+</PRE><H3><a name="h3-unctrl_wunctrl">unctrl/wunctrl</a></H3><PRE>
+ The XSI Curses standard, Issue 4 describes these functions. It states
+ that <STRONG>unctrl</STRONG> and <STRONG>wunctrl</STRONG> will return a null pointer if unsuccessful, but
+ does not define any error conditions. This implementation checks for
+ three cases:
+
+ <STRONG>o</STRONG> the parameter is a 7-bit US-ASCII code. This is the case that
+ X/Open Curses documented.
+
+ <STRONG>o</STRONG> the parameter is in the range 128-159, i.e., a C1 control code. If
+ <STRONG>use_legacy_coding</STRONG> has been called with a <STRONG>2</STRONG> parameter, <STRONG>unctrl</STRONG> re-
+ turns the parameter, i.e., a one-character string with the parame-
+ ter as the first character. Otherwise, it returns "~@", "~A",
+ etc., analogous to "^@", "^A", C0 controls.
+
+ X/Open Curses does not document whether <STRONG>unctrl</STRONG> can be called before
+ initializing curses. This implementation permits that, and returns
+ the "~@", etc., values in that case.
+
+ <STRONG>o</STRONG> parameter values outside the 0 to 255 range. <STRONG>unctrl</STRONG> returns a null
+ pointer.
+
+ The strings returned by <STRONG>unctrl</STRONG> in this implementation are determined at
+ compile time, showing C1 controls from the upper-128 codes with a "~"
+ prefix rather than "^". Other implementations have different conven-
+ tions. For example, they may show both sets of control characters with
+ "^", and strip the parameter to 7 bits. Or they may ignore C1 controls
+ and treat all of the upper-128 codes as printable. This implementation
+ uses 8 bits but does not modify the string to reflect locale. The
+ <STRONG>use_legacy_coding</STRONG> function allows the caller to change the output of
+ <STRONG>unctrl</STRONG>.
+
+ Likewise, the <STRONG><A HREF="curs_inopts.3x.html">meta(3x)</A></STRONG> function allows the caller to change the output
+ of <STRONG>keyname</STRONG>, i.e., it determines whether to use the "M-" prefix for
+ "meta" keys (codes in the range 128 to 255). Both <STRONG>use_legacy_coding</STRONG>
+ and <STRONG>meta</STRONG> succeed only after curses is initialized. X/Open Curses does
+ not document the treatment of codes 128 to 159. When treating them as
+ "meta" keys (or if <STRONG>keyname</STRONG> is called before initializing curses), this
+ implementation returns strings "M-^@", "M-^A", etc.
+ X/Open Curses documents <STRONG>unctrl</STRONG> as declared in <STRONG>&lt;unctrl.h&gt;</STRONG>, which <STRONG>ncurses</STRONG>
+ does. However, <STRONG>ncurses</STRONG>' <STRONG>&lt;curses.h&gt;</STRONG> includes <STRONG>&lt;unctrl.h&gt;</STRONG>, matching the
+ behavior of SVr4 curses. Other implementations may not do that.
- <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
+</PRE><H3><a name="h3-use_env_use_tioctl">use_env/use_tioctl</a></H3><PRE>
+ If <STRONG>ncurses</STRONG> is configured to provide the sp-functions extension, the
+ state of <STRONG>use_env</STRONG> and <STRONG>use_tioctl</STRONG> may be updated before creating each
+ <EM>screen</EM> rather than once only (<STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>). This feature of
+ <STRONG>use_env</STRONG> is not provided by other implementation of curses.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>,
+ <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>, <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>, <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>, <STRONG>curs_vari-</STRONG>
+ <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>, <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>.
+
+
+
+ <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-unctrl">unctrl</a></li>
+<li><a href="#h3-keyname_key_name">keyname/key_name</a></li>
+<li><a href="#h3-filter_nofilter">filter/nofilter</a></li>
+<li><a href="#h3-use_env">use_env</a></li>
+<li><a href="#h3-use_tioctl">use_tioctl</a></li>
+<li><a href="#h3-putwin_getwin">putwin/getwin</a></li>
+<li><a href="#h3-delay_output">delay_output</a></li>
+<li><a href="#h3-flushinp">flushinp</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a>
+<ul>
+<li><a href="#h3-filter">filter</a></li>
+<li><a href="#h3-keyname">keyname</a></li>
+<li><a href="#h3-nofilter_use_tioctl">nofilter/use_tioctl</a></li>
+<li><a href="#h3-putwin_getwin">putwin/getwin</a></li>
+<li><a href="#h3-unctrl_wunctrl">unctrl/wunctrl</a></li>
+<li><a href="#h3-use_env_use_tioctl">use_env/use_tioctl</a></li>
+</ul>
+</li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_variables.3x.html b/doc/html/man/curs_variables.3x.html
index 4c407892cab8..afeca3b21e89 100644
--- a/doc/html/man/curs_variables.3x.html
+++ b/doc/html/man/curs_variables.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2010-2018,2019 Free 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,32 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_variables.3x,v 1.6 2013/12/21 18:41:32 tom Exp @
+ * @Id: curs_variables.3x,v 1.13 2019/06/01 22:51:21 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_variables 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_variables 3x</H1>
-<HR>
+<H1 class="no-header">curs_variables 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG> <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
+<STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG> <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>COLORS</STRONG>, <STRONG>COLOR_PAIRS</STRONG>, <STRONG>COLS</STRONG>, <STRONG>ESCDELAY</STRONG>, <STRONG>LINES</STRONG>, <STRONG>TABSIZE</STRONG>,
- <STRONG>curscr</STRONG>, <STRONG>newscr</STRONG>, <STRONG>stdscr</STRONG> - <STRONG>curses</STRONG> global variables
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>COLORS</STRONG>, <STRONG>COLOR_PAIRS</STRONG>, <STRONG>COLS</STRONG>, <STRONG>ESCDELAY</STRONG>, <STRONG>LINES</STRONG>, <STRONG>TABSIZE</STRONG>, <STRONG>curscr</STRONG>, <STRONG>newscr</STRONG>,
+ <STRONG>stdscr</STRONG> - <STRONG>curses</STRONG> global variables
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>COLOR_PAIRS;</STRONG>
@@ -66,99 +64,156 @@
<STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>stdscr;</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- This page summarizes variables provided by the <STRONG>curses</STRONG> li-
- brary. A more complete description is given in the <STRONG>curs-</STRONG>
- <STRONG><A HREF="ncurses.3x.html">es(3x)</A></STRONG> manual page.
-
- Depending on the configuration, these may be actual vari-
- ables, or macros (see <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> and
- <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>) which provide read-only access to <EM>curs-</EM>
- <EM>es</EM>'s state. In either case, applications should treat
- them as read-only to avoid confusing the library.
-
- <STRONG>COLOR_PAIRS</STRONG>
- After initializing curses, this variable contains the num-
- ber of color pairs which the terminal can support. Usual-
- ly the number of color pairs will be the product <STRONG>COL-</STRONG>
- <STRONG>ORS</STRONG>*<STRONG>COLORS</STRONG>, however this is not always true:
-
- <STRONG>o</STRONG> a few terminals use HLS colors, which do not follow
- this rule
-
- <STRONG>o</STRONG> terminals supporting a large number of colors are lim-
- ited by the number of color pairs that can be repre-
- sented in a <EM>signed</EM> <EM>short</EM> value.
-
- <STRONG>COLORS</STRONG>
- After initializing curses, this variable contains the num-
- ber of colors which the terminal can support.
-
- <STRONG>COLS</STRONG>
- After initializing curses, this variable contains the
- width of the screen, i.e., the number of columns.
-
- <STRONG>ESCDELAY</STRONG>
- This variable holds the number of milliseconds to wait af-
- ter reading an escape character, to distinguish between an
- individual escape character entered on the keyboard from
- escape sequences sent by cursor- and function-keys (see
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
-
- <STRONG>LINES</STRONG>
- After initializing curses, this variable contains the
- height of the screen, i.e., the number of lines.
-
- <STRONG>TABSIZE</STRONG>
- This variable holds the number of columns used by the
- <EM>curses</EM> library when converting a tab character to spaces
- as it adds the tab to a window (see <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>.
-
- <STRONG>The</STRONG> <STRONG>Current</STRONG> <STRONG>Screen</STRONG>
- This implementation of curses uses a special window <STRONG>curscr</STRONG>
- to record its updates to the terminal screen.
-
- <STRONG>The</STRONG> <STRONG>New</STRONG> <STRONG>Screen</STRONG>
- This implementation of curses uses a special window <STRONG>newscr</STRONG>
- to hold updates to the terminal screen before applying
- them to <STRONG>curscr</STRONG>.
-
- <STRONG>The</STRONG> <STRONG>Standard</STRONG> <STRONG>Screen</STRONG>
- Upon initializing curses, a default window called <STRONG>stdscr</STRONG>,
- which is the size of the terminal screen, is created.
- Many curses functions use this window.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ This page summarizes variables provided by the <STRONG>curses</STRONG> library. A more
+ complete description is given in the <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> manual page.
+ Depending on the configuration, these may be actual variables, or
+ macros (see <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> and <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>) which provide read-
+ only access to <EM>curses</EM>'s state. In either case, applications should
+ treat them as read-only to avoid confusing the library.
-</PRE>
-<H2>NOTES</H2><PRE>
- The curses library is initialized using either
- <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, or <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>.
- If <STRONG>curses</STRONG> is configured to use separate curses/terminfo
- libraries, most of these variables reside in the curses
- library.
+</PRE><H3><a name="h3-COLOR_PAIRS">COLOR_PAIRS</a></H3><PRE>
+ After initializing curses, this variable contains the number of color
+ pairs which the terminal can support. Usually the number of color
+ pairs will be the product <STRONG>COLORS</STRONG>*<STRONG>COLORS</STRONG>, however this is not always
+ true:
+ <STRONG>o</STRONG> a few terminals use HLS colors, which do not follow this rule
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- ESCDELAY and TABSIZE are extensions, not provided in most
- other implementations of curses.
+ <STRONG>o</STRONG> terminals supporting a large number of colors are limited by the
+ number of color pairs that can be represented in a <EM>signed</EM> <EM>short</EM>
+ value.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>,
- <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+</PRE><H3><a name="h3-COLORS">COLORS</a></H3><PRE>
+ After initializing curses, this variable contains the number of colors
+ which the terminal can support.
+
+
+</PRE><H3><a name="h3-COLS">COLS</a></H3><PRE>
+ After initializing curses, this variable contains the width of the
+ screen, i.e., the number of columns.
+
+
+</PRE><H3><a name="h3-ESCDELAY">ESCDELAY</a></H3><PRE>
+ This variable holds the number of milliseconds to wait after reading an
+ escape character, to distinguish between an individual escape character
+ entered on the keyboard from escape sequences sent by cursor- and func-
+ tion-keys (see <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>).
+
+
+</PRE><H3><a name="h3-LINES">LINES</a></H3><PRE>
+ After initializing curses, this variable contains the height of the
+ screen, i.e., the number of lines.
+
+
+</PRE><H3><a name="h3-TABSIZE">TABSIZE</a></H3><PRE>
+ This variable holds the number of columns used by the <EM>curses</EM> library
+ when converting a tab character to spaces as it adds the tab to a win-
+ dow (see <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>.
+
+
+</PRE><H3><a name="h3-The-Current-Screen">The Current Screen</a></H3><PRE>
+ This implementation of curses uses a special window <STRONG>curscr</STRONG> to record
+ its updates to the terminal screen.
+
+ This is referred to as the "physical screen" in the <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
+ and <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> manual pages.
+
+
+</PRE><H3><a name="h3-The-New-Screen">The New Screen</a></H3><PRE>
+ This implementation of curses uses a special window <STRONG>newscr</STRONG> to hold up-
+ dates to the terminal screen before applying them to <STRONG>curscr</STRONG>.
+
+ This is referred to as the "virtual screen" in the <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>,
+ <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> and <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> manual pages.
+
+
+</PRE><H3><a name="h3-The-Standard-Screen">The Standard Screen</a></H3><PRE>
+ Upon initializing curses, a default window called <STRONG>stdscr</STRONG>, which is the
+ size of the terminal screen, is created. Many curses functions use
+ this window.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The curses library is initialized using either <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>, or
+ <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>.
+
+ If <STRONG>curses</STRONG> is configured to use separate curses/terminfo libraries, most
+ of these variables reside in the curses library.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ <STRONG>TABSIZE</STRONG> is a feature of SVr4 curses which is not documented by X/Open
+ curses.
+
+ <STRONG>o</STRONG> In SVr4 curses, <STRONG>TABSIZE</STRONG> is initially set from the terminal descrip-
+ tion's <STRONG>init_tabs</STRONG> capability. After that, it can be altered by the
+ applications using SVr4 curses.
+
+ SVr4 curses uses the current value of <STRONG>TABSIZE</STRONG> to compute the posi-
+ tion of tabstops for updating both the virtual screen with <STRONG>add-</STRONG>
+ <STRONG><A HREF="addch.3x.html">ch(3x)</A></STRONG> as well as the physical screen with <STRONG><A HREF="curs_terminfo.3x.html">mvcur(3x)</A></STRONG>.
+
+ <STRONG>o</STRONG> This implementation uses the current value of <STRONG>TABSIZE</STRONG> only for up-
+ dating the virtual screen. It uses the terminal description's <STRONG>it</STRONG>
+ (<STRONG>init_tabs</STRONG>) capability for computing hardware tabs (i.e., tab stops
+ on the physical screen).
+
+ <STRONG>o</STRONG> Other implementations differ. For instance, NetBSD curses allows
+ <STRONG>TABSIZE</STRONG> to be set through an environment variable. This implemen-
+ tation does not.
+
+ NetBSD curses does not support hardware tabs; it uses the <STRONG>init_tabs</STRONG>
+ capability and the <STRONG>TABSIZE</STRONG> variable only for updating the virtual
+ screen.
+
+ <STRONG>ESCDELAY</STRONG> is an extension in AIX curses:
+
+ <STRONG>o</STRONG> In AIX, the units for <STRONG>ESCDELAY</STRONG> are <EM>fifths</EM> of a millisecond.
+
+ <STRONG>o</STRONG> The default value for AIX's <STRONG>ESCDELAY</STRONG> is 0.1 seconds.
+
+ <STRONG>o</STRONG> AIX also enforces a limit of 10,000 seconds for <STRONG>ESCDELAY</STRONG>; this im-
+ plementation currently has no upper limit.
+
+ This implementation has long used <STRONG>ESCDELAY</STRONG> with units of milliseconds,
+ making it impossible to be completely compatible with AIX. Likewise,
+ most users have either decided to override the value, or rely upon its
+ default value.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>,
+ <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
- <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
+ <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-COLOR_PAIRS">COLOR_PAIRS</a></li>
+<li><a href="#h3-COLORS">COLORS</a></li>
+<li><a href="#h3-COLS">COLS</a></li>
+<li><a href="#h3-ESCDELAY">ESCDELAY</a></li>
+<li><a href="#h3-LINES">LINES</a></li>
+<li><a href="#h3-TABSIZE">TABSIZE</a></li>
+<li><a href="#h3-The-Current-Screen">The Current Screen</a></li>
+<li><a href="#h3-The-New-Screen">The New Screen</a></li>
+<li><a href="#h3-The-Standard-Screen">The Standard Screen</a></li>
+</ul>
+</li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/curs_window.3x.html b/doc/html/man/curs_window.3x.html
index b98446a07da6..5c1edc65b488 100644
--- a/doc/html/man/curs_window.3x.html
+++ b/doc/html/man/curs_window.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2016 Free 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,190 +26,231 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_window.3x,v 1.17 2010/12/04 18:38:55 tom Exp @
+ * @Id: curs_window.3x,v 1.20 2016/10/15 17:26:09 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_window 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>curs_window 3x</H1>
-<HR>
+<H1 class="no-header">curs_window 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
+<STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><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><a name="h2-NAME">NAME</a></H2><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>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</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>
+ <STRONG>WINDOW</STRONG> <STRONG>*newwin(</STRONG>
+ <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG>
+ <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>delwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
+ <STRONG>WINDOW</STRONG> <STRONG>*subwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>orig</EM><STRONG>,</STRONG>
+ <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG>
+ <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
+ <STRONG>WINDOW</STRONG> <STRONG>*derwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>orig</EM><STRONG>,</STRONG>
+ <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG>
+ <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>mvderwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>par</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>par</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
+ <STRONG>WINDOW</STRONG> <STRONG>*dupwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
+ <STRONG>void</STRONG> <STRONG>wsyncup(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>syncok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+ <STRONG>void</STRONG> <STRONG>wcursyncup(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
+ <STRONG>void</STRONG> <STRONG>wsyncdown(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</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 memo-
- ry associated with it (it does not actually erase the win-
- dow'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.
-
- Calling <STRONG>derwin</STRONG> is the same as calling <STRONG>subwin,</STRONG> except that
- <EM>begin</EM>_<EM>y</EM> and <EM>begin</EM>_<EM>x</EM> are relative to the origin of the win-
- 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) in-
- side its parent window. The screen-relative parameters of
- the window are not changed. This routine is used to dis-
- play 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 whenev-
- er 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><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+</PRE><H3><a name="h3-newwin">newwin</a></H3><PRE>
+ Calling <STRONG>newwin</STRONG> creates and returns a pointer to a new window 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>
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- Routines that return an integer return the integer <STRONG>ERR</STRONG> up-
- on failure and <STRONG>OK</STRONG> (SVr4 only specifies "an integer value
- other than <STRONG>ERR</STRONG>") upon successful completion.
+ 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>.
+
+
+</PRE><H3><a name="h3-delwin">delwin</a></H3><PRE>
+ Calling <STRONG>delwin</STRONG> deletes the named window, freeing all memory associated
+ with it (it does not actually erase the window's screen image). Sub-
+ windows must be deleted before the main window can be deleted.
+
+
+</PRE><H3><a name="h3-mvwin">mvwin</a></H3><PRE>
+ 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.
+
+
+</PRE><H3><a name="h3-subwin">subwin</a></H3><PRE>
+ Calling <STRONG>subwin</STRONG> creates and returns a pointer to a new window 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. The subwindow shares memory
+ with the window <EM>orig</EM>, so that changes made to one window will affect
+ both windows. When using this routine, it is necessary to call <STRONG>touch-</STRONG>
+ <STRONG>win</STRONG> or <STRONG>touchline</STRONG> on <EM>orig</EM> before calling <STRONG>wrefresh</STRONG> on the subwindow.
+
+
+</PRE><H3><a name="h3-derwin">derwin</a></H3><PRE>
+ Calling <STRONG>derwin</STRONG> is the same as calling <STRONG>subwin,</STRONG> except that <EM>begin</EM>_<EM>y</EM> and
+ <EM>begin</EM>_<EM>x</EM> are relative to the origin of the window <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 par-
+ ent 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.
+
+
+</PRE><H3><a name="h3-dupwin">dupwin</a></H3><PRE>
+ Calling <STRONG>dupwin</STRONG> creates an exact duplicate of the window <EM>win</EM>.
+
+
+</PRE><H3><a name="h3-wsyncup">wsyncup</a></H3><PRE>
+ 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 whenever there is a change in the win-
+ dow.
+
+
+</PRE><H3><a name="h3-wsyncdown">wsyncdown</a></H3><PRE>
+ 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>wre-</STRONG>
+ <STRONG>fresh</STRONG>, so it should almost never be necessary to call it manually.
+
+
+</PRE><H3><a name="h3-wcursyncup">wcursyncup</a></H3><PRE>
+ 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><a name="h2-RETURN-VALUE">RETURN VALUE</a></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 suc-
+ cessful completion.
Routines that return pointers return <STRONG>NULL</STRONG> on error.
- X/Open defines no error conditions. In this implementa-
- tion
+ X/Open defines no error conditions. In this implementation
- <STRONG>delwin</STRONG>
- returns an error if the window pointer is
- null, or if the window is the parent of anoth-
- er window.
+ <STRONG>delwin</STRONG>
+ returns an error if the window pointer is null, or if the window
+ is the parent of another window.
- This implementation also maintains a list of
- windows, and checks that the pointer passed to
- <STRONG>delwin</STRONG> is one that it created, returning an
- error if it was not..
+ <STRONG>derwin</STRONG>
+ returns an error if the parent window pointer is null, or if any
+ of its ordinates or dimensions is negative, or if the resulting
+ window does not fit inside the parent window.
- <STRONG>mvderwin</STRONG>
- returns an error if the window pointer is
- null, or if some part of the window would be
- placed off-screen.
+ <STRONG>dupwin</STRONG>
+ returns an error if the window pointer is null.
- <STRONG>mvwin</STRONG>
- returns an error if the window pointer is
- null, or if the window is really a pad, or if
- some part of the window would be placed off-
- screen.
+ This implementation also maintains a list of windows, and checks
+ that the pointer passed to <STRONG>delwin</STRONG> is one that it created, return-
+ ing an error if it was not..
- <STRONG>syncok</STRONG>
- returns an error if the window pointer is
- null.
+ <STRONG>mvderwin</STRONG>
+ returns an error if the window pointer is null, or if some part of
+ the window would be placed off-screen.
+ <STRONG>mvwin</STRONG>
+ returns an error if the window pointer is null, or if the window
+ is really a pad, or if some part of the window would be placed
+ off-screen.
-</PRE>
-<H2>NOTES</H2><PRE>
- If many small changes are made to the window, the <STRONG>wsyncup</STRONG>
- option could degrade performance.
+ <STRONG>newwin</STRONG>
+ will fail if either of its beginning ordinates is negative, or if
+ either the number of lines or columns is negative.
+
+ <STRONG>syncok</STRONG>
+ returns an error if the window pointer is null.
+
+ <STRONG>subwin</STRONG>
+ returns an error if the parent window pointer is null, or if any
+ of its ordinates or dimensions is negative, or if the resulting
+ window does not fit inside the parent window.
+
+ The functions which return a window pointer may also fail if there is
+ insufficient memory for its data structures. Any of these functions
+ will fail if the screen has not been initialized, i.e., with <STRONG>initscr</STRONG> or
+ <STRONG>newterm</STRONG>.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></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, incomplete-
- ly 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-
- terned on the XPG4 curses standard. The weaker XPG4 spec
+</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
+ The subwindow functions (<STRONG>subwin</STRONG>, <STRONG>derwin</STRONG>, <STRONG>mvderwin</STRONG>, <STRONG>wsyncup</STRONG>, <STRONG>wsyncdown</STRONG>,
+ <STRONG>wcursyncup</STRONG>, <STRONG>syncok</STRONG>) are flaky, incompletely 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 sup-
+ posed to touch exactly those lines that are affected by ancestor
+ changes. The language here, and the behavior of the <STRONG>curses</STRONG> implementa-
+ tion, is patterned 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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The XSI Curses standard, Issue 4 describes these functions.
-</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>curs_vari-</STRONG>
- <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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_variables.3x.html">curs_variables(3x)</A></STRONG>
- <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
+ <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-newwin">newwin</a></li>
+<li><a href="#h3-delwin">delwin</a></li>
+<li><a href="#h3-mvwin">mvwin</a></li>
+<li><a href="#h3-subwin">subwin</a></li>
+<li><a href="#h3-derwin">derwin</a></li>
+<li><a href="#h3-dupwin">dupwin</a></li>
+<li><a href="#h3-wsyncup">wsyncup</a></li>
+<li><a href="#h3-wsyncdown">wsyncdown</a></li>
+<li><a href="#h3-wcursyncup">wcursyncup</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-BUGS">BUGS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/default_colors.3x.html b/doc/html/man/default_colors.3x.html
index ae05ea39017b..c91d0119598b 100644
--- a/doc/html/man/default_colors.3x.html
+++ b/doc/html/man/default_colors.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,153 +27,140 @@
* authorization. *
****************************************************************************
* Author: Thomas E. Dickey 1997,1999,2000,2005
- * @Id: default_colors.3x,v 1.23 2011/01/03 21:52:27 Tim.van.der.Molen Exp @
+ * @Id: default_colors.3x,v 1.28 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>default_colors 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>default_colors 3x</H1>
-<HR>
+<H1 class="no-header">default_colors 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG> <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
+<STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG> <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>use_default_colors</STRONG>, <STRONG>assume_default_colors</STRONG> - use terminal's
- default colors
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>use_default_colors</STRONG>, <STRONG>assume_default_colors</STRONG> - use terminal's default col-
+ ors
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>use_default_colors(void);</STRONG>
<STRONG>int</STRONG> <STRONG>assume_default_colors(int</STRONG> <STRONG>fg,</STRONG> <STRONG>int</STRONG> <STRONG>bg);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <EM>use</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors()</EM> and <EM>assume</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors()</EM> 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 <STRONG>ls</STRONG> 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 <EM>setaf</EM> terminfo
- capability to set the foreground color. Full-screen
- applications that use default colors can achieve similar
- visual effects.
-
- The first function, <EM>use</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors()</EM> 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, <EM>assume</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors()</EM> 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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <STRONG>use_default_colors</STRONG> and <STRONG>assume_default_colors</STRONG> functions are exten-
+ sions 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 <STRONG>ls</STRONG> 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 <STRONG>setaf</STRONG> terminfo capability to set the fore-
+ ground color. Full-screen applications that use default colors can
+ achieve similar visual effects.
+
+ The first function, <STRONG>use_default_colors</STRONG> 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, <STRONG>assume_default_colors</STRONG> is a refinement which tells which col-
+ ors to paint for color pair 0. This function recognizes a special
+ color number -1, which denotes the default terminal color.
The following are equivalent:
<EM>use</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors();</EM>
<EM>assume</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors(-1,-1);</EM>
- 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 <EM>use</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>col-</EM>
- <EM>ors()</EM> or <EM>assume</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors()</EM>.
-
- 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 <EM>use</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors()</EM> or <EM>assume</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>col-</EM>
- <EM>ors()</EM> ncurses will paint a white foreground (text) with
+ These are ncurses extensions. For other curses implementations, color
+ number -1 does not mean anything, just as for ncurses before a success-
+ ful call of <STRONG>use_default_colors</STRONG> or <STRONG>assume_default_colors</STRONG>.
+
+ 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 <STRONG>use_default_colors</STRONG> or
+ <STRONG>assume_default_colors</STRONG> 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 <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
- on success. They 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 not found, this causes
- an error as well.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ These functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success.
+ They will fail if either the terminal does not support the <STRONG>orig_pair</STRONG> or
+ <STRONG>orig_colors</STRONG> capability. If the <STRONG>initialize_pair</STRONG> capability is not
+ found, this causes an error as well.
-</PRE>
-<H2>NOTES</H2><PRE>
- Associated with this extension, the <STRONG>init_pair</STRONG> function
- accepts negative arguments to specify default foreground
- or background colors.
-
- The <EM>use</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors()</EM> function was added to support
- <EM>ded</EM>. This is a full-screen application which uses curses
- to manage only part of the screen. The bottom portion of
- the screen, which is of adjustable size, is left uncolored
- to display the results from shell commands. The top por-
- tion of the screen colors filenames using a scheme like
- the "color ls" programs. Attempting to manage the back-
- ground color of the screen for this application would give
- unsatisfactory results for a variety of reasons. This
- extension was devised after noting that color xterm (and
- similar programs) provides a background color which does
- not necessarily correspond to any of the ANSI colors.
- While a special terminfo entry could be constructed using
- nine colors, there was no mechanism provided within curses
- to account for the related <EM>orig</EM><STRONG>_</STRONG><EM>pair</EM> and <EM>back</EM><STRONG>_</STRONG><EM>color</EM><STRONG>_</STRONG><EM>erase</EM>
- capabilities.
-
- The <EM>assume</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors()</EM> function was added to solve a
- different problem: support for applications which would
- use environment variables and other configuration to
- bypass curses' notion of the terminal's default colors,
- setting specific values.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ Associated with this extension, the <STRONG>init_pair</STRONG> function accepts negative
+ arguments to specify default foreground or background colors.
+ The <STRONG>use_default_colors</STRONG> function was added to support <EM>ded</EM>. This is a
+ full-screen application which uses curses to manage only part of the
+ screen. The bottom portion of the screen, which is of adjustable size,
+ is left uncolored to display the results from shell commands. The top
+ portion of the screen colors filenames using a scheme like the "color
+ ls" programs. Attempting to manage the background color of the screen
+ for this application would give unsatisfactory results for a variety of
+ reasons. This extension was devised after noting that color xterm (and
+ similar programs) provides a background color which does not necessar-
+ ily correspond to any of the ANSI colors. While a special terminfo
+ entry could be constructed using nine colors, there was no mechanism
+ provided within curses to account for the related <STRONG>orig_pair</STRONG> and
+ <STRONG>back_color_erase</STRONG> capabilities.
-</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.
+ The <STRONG>assume_default_colors</STRONG> function was added to solve a different prob-
+ lem: support for applications which would use environment variables and
+ other configuration to bypass curses' notion of the terminal's default
+ colors, setting specific values.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></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 conditioned using NCURSES_VERSION.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>, <STRONG>ded(1)</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><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
+ Thomas Dickey (from an analysis of the requirements for color xterm for
+ XFree86 3.1.2C, February 1996).
- <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
+ <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/define_key.3x.html b/doc/html/man/define_key.3x.html
index 2dd46c898052..0bd1b710c537 100644
--- a/doc/html/man/define_key.3x.html
+++ b/doc/html/man/define_key.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,84 +27,80 @@
* authorization. *
****************************************************************************
* Author: Thomas E. Dickey 1997
- * @Id: define_key.3x,v 1.14 2010/12/04 18:49:20 tom Exp @
+ * @Id: define_key.3x,v 1.16 2018/07/28 21:34:56 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>define_key 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>define_key 3x</H1>
-<HR>
+<H1 class="no-header">define_key 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG> <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>
+<STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG> <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>define_key</STRONG> - define a keycode
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>define_key(const</STRONG> <STRONG>char</STRONG> <STRONG>*definition,</STRONG> <STRONG>int</STRONG> <STRONG>keycode);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- This is an extension to the curses library. It permits an
- application to define keycodes with their corresponding
- control strings, so that the ncurses library will inter-
- pret them just as it would the predefined codes in the
- terminfo database.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ This is an extension to the curses library. It permits an application
+ to define keycodes with their corresponding control strings, so that
+ the ncurses library will interpret them just as it would the predefined
+ codes in the terminfo database.
- If the given string is null, any existing definition for
- the keycode is removed. Similarly, if the given keycode
- is negative or zero, any existing string for the given
- definition is removed.
+ If the given string is null, any existing definition for the keycode is
+ removed. Similarly, if the given keycode is negative or zero, any
+ existing string for the given definition is removed.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The keycode must be greater than zero, and the string non-
- null, otherwise ERR is returned. ERR may also be returned
- if there is insufficient memory to allocate the data to
- store the definition. If no error is detected, OK is
- returned.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The keycode must be greater than zero, and the string non-null, other-
+ wise <STRONG>ERR</STRONG> is returned. <STRONG>ERR</STRONG> may also be returned if there is insuffi-
+ cient memory to allocate the data to store the definition. If no error
+ is detected, <STRONG>OK</STRONG> is returned.
-</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><a name="h2-PORTABILITY">PORTABILITY</a></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 conditioned using NCURSES_VERSION.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>, <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>.
-</PRE>
-<H2>AUTHOR</H2><PRE>
+</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
Thomas Dickey.
- <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>
+ <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form.3x.html b/doc/html/man/form.3x.html
index 57e92f2c7bb4..63bee133e77b 100644
--- a/doc/html/man/form.3x.html
+++ b/doc/html/man/form.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,45 +27,42 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form.3x,v 1.24 2010/12/04 18:40:45 tom Exp @
+ * @Id: form.3x,v 1.33 2019/11/30 20:51:36 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form 3x</H1>
-<HR>
+<H1 class="no-header">form 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form.3x.html">form(3x)</A></STRONG> <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+<STRONG><A HREF="form.3x.html">form(3x)</A></STRONG> <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>form</STRONG> - curses extension for programming forms
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</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-
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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. To use the
- <STRONG>form</STRONG> library, link with the options <STRONG>-lform</STRONG> <STRONG>-lcurses</STRONG>.
+ The <STRONG>form</STRONG> library uses the <STRONG>curses</STRONG> libraries. To use the <STRONG>form</STRONG> library,
+ link with the options <STRONG>-lform</STRONG> <STRONG>-lcurses</STRONG>.
Your program should set up the locale, e.g.,
@@ -74,115 +70,115 @@
so that input/output processing will work.
- A curses initialization routine such as <STRONG>initscr</STRONG> must be
- called before using any of these functions.
-
- <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>set_</STRONG> or retrieval 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.
-
- <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_field_info <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>
-
- field_userptr <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
- form_driver <STRONG><A HREF="form_driver.3x.html">form_driver(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_fieldtype <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(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_fieldtype <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(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, and
- set errno to the corresponding error-code returned by
- functions returning an integer. Routines that return an
- integer return one of the following error codes:
+ A curses initialization routine such as <STRONG>initscr</STRONG> must be called before
+ using any of these functions.
+
+
+</PRE><H3><a name="h3-Current-Default-Values-for-Field-Attributes">Current Default Values for Field Attributes</a></H3><PRE>
+ The <STRONG>form</STRONG> library maintains a default value for field attributes. You
+ can get or set this default by calling the appropriate <STRONG>set_</STRONG> or
+ retrieval 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.
+
+
+</PRE><H3><a name="h3-Routine-Name-Index">Routine Name Index</a></H3><PRE>
+ The following table lists each <STRONG>form</STRONG> routine and the name of the manual
+ page on which it is described.
+
+ <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_field_info <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>
+ field_userptr <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
+ form_driver <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>
+
+ form_driver_w <STRONG><A HREF="form_driver.3x.html">form_driver(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_fieldtype <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(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_fieldtype <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(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>
+ unfocus_current_field <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
+ unpost_form <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Routines that return pointers return <STRONG>NULL</STRONG> on error, and set errno to
+ the corresponding error-code returned by functions returning an inte-
+ ger. Routines that return an integer return one of the following error
+ codes:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_BAD_STATE</STRONG>
- Routine was called from an initialization or termina-
- tion function.
+ Routine was called from an initialization or termination function.
<STRONG>E_CONNECTED</STRONG>
The field is already connected to a form.
@@ -206,53 +202,72 @@
The form driver could not process the request.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_UNKNOWN_COMMAND</STRONG>
The form driver code saw an unknown request code.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for
- detailed descriptions of the entry points.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header files
+ <STRONG>&lt;curses.h&gt;</STRONG> and <STRONG>&lt;eti.h&gt;</STRONG>.
+ In your library list, libform.a should be before libncurses.a; that is,
+ you want to say "-lform -lncurses", not the other way around (which
+ would give you a link error when using static libraries).
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
- files <STRONG>&lt;curses.h&gt;</STRONG> and <STRONG>&lt;eti.h&gt;</STRONG>.
- 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 most linkers).
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported on Version 7 or BSD versions.
+ The menu facility was documented in SVr4.2 in <EM>Character</EM> <EM>User</EM> <EM>Interface</EM>
+ <EM>Programming</EM> <EM>(UNIX</EM> <EM>SVR4.2)</EM>.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V forms library. They
- were not supported on Version 7 or BSD versions.
+ It is not part of X/Open Curses.
+ Aside from ncurses, there are few implementations:
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for ncurses
- by Eric S. Raymond.
+ <STRONG>o</STRONG> systems based on SVr4 source code, e.g., Solaris.
+ <STRONG>o</STRONG> NetBSD curses.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- This describes <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
+ A few functions in this implementation are extensions added for
+ ncurses, but not provided by other implementations, e.g.,
+ <STRONG>form_driver_w</STRONG>, <STRONG>unfocus_current_field</STRONG>.
+
+
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for ncurses by Eric S.
+ Raymond.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for detailed
+ descriptions of the entry points.
+
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
- <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+ <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Current-Default-Values-for-Field-Attributes">Current Default Values for Field Attributes</a></li>
+<li><a href="#h3-Routine-Name-Index">Routine Name Index</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_cursor.3x.html b/doc/html/man/form_cursor.3x.html
index 0dc4bee2a45f..9dcc6eee8886 100644
--- a/doc/html/man/form_cursor.3x.html
+++ b/doc/html/man/form_cursor.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,91 +27,89 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_cursor.3x,v 1.8 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_cursor.3x,v 1.11 2019/01/20 20:31:42 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_cursor 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_cursor 3x</H1>
-<HR>
+<H1 class="no-header">form_cursor 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG> <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG>
+<STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG> <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_cursor</STRONG> - position a form window cursor
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>pos_form_cursor</STRONG> - position a form window cursor
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
int pos_form_cursor(FORM *form);
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>pos_form_cursor</STRONG> restores the cursor to the
- position required for the forms driver to continue pro-
- cessing requests. This is useful after <STRONG>curses</STRONG> routines
- have been called to do screen-painting in response to a
- form operation.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>pos_form_cursor</STRONG> restores the cursor to the position
+ required for the forms driver to continue processing requests. This is
+ useful after <STRONG>curses</STRONG> routines have been called to do screen-painting in
+ response to a form operation.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
This routine returns one of the following:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_NOT_POSTED</STRONG>
The form has not been posted.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG>
+ <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_data.3x.html b/doc/html/man/form_data.3x.html
index d7d0dfa16888..71839fabdc10 100644
--- a/doc/html/man/form_data.3x.html
+++ b/doc/html/man/form_data.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,77 +27,75 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_data.3x,v 1.10 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_data.3x,v 1.12 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_data 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_data 3x</H1>
-<HR>
+<H1 class="no-header">form_data 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG> <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>
+<STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG> <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_data</STRONG> - test for off-screen data in given forms
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>data_ahead</STRONG>, <STRONG>data_behind</STRONG> - test for off-screen data in given forms
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
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
- data ahead in the given form. It returns TRUE (1) or
- FALSE (0).
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>data_ahead</STRONG> 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
- data behind in the given form. It returns TRUE (1) or
- FALSE (0).
+ The function <STRONG>data_behind</STRONG> 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>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>
+ <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_driver.3x.html b/doc/html/man/form_driver.3x.html
index 7ffe298ef856..f815be827f58 100644
--- a/doc/html/man/form_driver.3x.html
+++ b/doc/html/man/form_driver.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,243 +26,163 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_driver.3x,v 1.22 2010/12/04 18:38:55 tom Exp @
+ * @Id: form_driver.3x,v 1.32 2019/01/20 20:31:42 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_driver 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_driver 3x</H1>
-<HR>
+<H1 class="no-header">form_driver 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG> <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>
+<STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG> <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_driver</STRONG> - command-processing loop of the form system
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>form_driver</STRONG>, <STRONG>form_driver_w</STRONG> - command-processing loop of the form system
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
- 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
- three major input cases:
-
- <STRONG>o</STRONG> The input is a form navigation request. Navigation
- request codes are constants defined in <STRONG>&lt;form.h&gt;</STRONG>, which
- are distinct from the key- and character codes
- returned by <STRONG>wgetch</STRONG>.
-
- <STRONG>o</STRONG> The input is a printable character. Printable charac-
- ters (which must be positive, less than 256) are
- checked according to the program's locale settings.
-
- <STRONG>o</STRONG> The input is the KEY_MOUSE special key associated with
- an mouse event.
-
- The form driver requests are as follows:
-
- REQ_NEXT_PAGE
- Move to the next page.
-
- REQ_PREV_PAGE
- Move to the previous page.
-
- REQ_FIRST_PAGE
- Move to the first page.
-
- REQ_LAST_PAGE
- Move to the last field.
-
-
- REQ_NEXT_FIELD
- Move to the next field.
-
- REQ_PREV_FIELD
- Move to the previous field.
-
- REQ_FIRST_FIELD
- Move to the first field.
-
- REQ_LAST_FIELD
- Move to the last field.
-
- REQ_SNEXT_FIELD
- Move to the sorted next field.
-
- REQ_SPREV_FIELD
- Move to the sorted previous field.
-
- REQ_SFIRST_FIELD
- Move to the sorted first field.
-
- REQ_SLAST_FIELD
- Move to the sorted last field.
-
- REQ_LEFT_FIELD
- Move left to a field.
-
- REQ_RIGHT_FIELD
- Move right to a field.
-
- REQ_UP_FIELD
- Move up to a field.
-
- REQ_DOWN_FIELD
- Move down to a field.
-
-
- REQ_NEXT_CHAR
- Move to the next char.
-
- REQ_PREV_CHAR
- Move to the previous char.
-
- REQ_NEXT_LINE
- Move to the next line.
-
- REQ_PREV_LINE
- Move to the previous line.
-
- REQ_NEXT_WORD
- Move to the next word.
-
- REQ_PREV_WORD
- Move to the previous word.
-
- REQ_BEG_FIELD
- Move to the beginning of the field.
+ <STRONG>int</STRONG> <STRONG>form_driver(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>);</STRONG>
+ <STRONG>int</STRONG> <STRONG>form_driver_w(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <EM>wch</EM><STRONG>);</STRONG>
- REQ_END_FIELD
- Move to the end of the field.
- REQ_BEG_LINE
- Move to the beginning of the line.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
- REQ_END_LINE
- Move to the end of the line.
+</PRE><H3><a name="h3-form_driver">form_driver</a></H3><PRE>
+ Once a form has been posted (displayed), you should funnel input events
+ to it through <STRONG>form_driver</STRONG>. This routine has three major input cases:
- REQ_LEFT_CHAR
- Move left in the field.
+ <STRONG>o</STRONG> The input is a form navigation request. Navigation request codes
+ are constants defined in <STRONG>&lt;form.h&gt;</STRONG>, which are distinct from the key-
+ and character codes returned by <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>.
- REQ_RIGHT_CHAR
- Move right in the field.
+ <STRONG>o</STRONG> The input is a printable character. Printable characters (which
+ must be positive, less than 256) are checked according to the pro-
+ gram's locale settings.
- REQ_UP_CHAR
- Move up in the field.
+ <STRONG>o</STRONG> The input is the KEY_MOUSE special key associated with an mouse
+ event.
- REQ_DOWN_CHAR
- Move down in the field.
+</PRE><H3><a name="h3-form_driver_w">form_driver_w</a></H3><PRE>
+ This extension simplifies the use of the forms library using wide char-
+ acters. The input is either a key code (a request) or a wide character
+ returned by <STRONG><A HREF="curs_get_wch.3x.html">get_wch(3x)</A></STRONG>. The type must be passed as well, to enable
+ the library to determine whether the parameter is a wide character or a
+ request.
- REQ_NEW_LINE
- Insert or overlay a new line.
- REQ_INS_CHAR
- Insert a blank at the cursor.
-
- REQ_INS_LINE
- Insert a blank line at the cursor.
-
- REQ_DEL_CHAR
- Delete character at the cursor.
-
- REQ_DEL_PREV
- Delete character before the cursor.
-
- REQ_DEL_LINE
- Delete line at the cursor.
-
- REQ_DEL_WORD
- Delete blank-delimited word at the cursor.
-
- REQ_CLR_EOL
- Clear to end of line from cursor.
-
- REQ_CLR_EOF
- Clear to end of field from cursor.
-
- REQ_CLR_FIELD
- Clear the entire field.
-
- REQ_OVL_MODE
- Enter overlay mode.
-
- REQ_INS_MODE
- Enter insert mode.
-
-
- REQ_SCR_FLINE
- Scroll the field forward a line.
-
- REQ_SCR_BLINE
- Scroll the field backward a line.
-
- REQ_SCR_FPAGE
- Scroll the field forward a page.
-
- REQ_SCR_BPAGE
- Scroll the field backward a page.
-
- REQ_SCR_FHPAGE
- 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
- Scroll the field backward a character.
-
- REQ_SCR_HFLINE
- Horizontal scroll the field forward a line.
-
- REQ_SCR_HBLINE
- Horizontal scroll the field backward a line.
-
- REQ_SCR_HFHALF
- Horizontal scroll the field forward half a line.
-
- REQ_SCR_HBHALF
- Horizontal scroll the field backward half a line.
-
-
- REQ_VALIDATION
- Validate field.
-
- REQ_NEXT_CHOICE
- Display next field choice.
-
- REQ_PREV_CHOICE
- Display previous field choice.
-
- If the second argument is a printable character, the
- driver places it in the current position in the current
- field. If it is one of the forms requests listed above,
- that request is executed.
+</PRE><H3><a name="h3-Form-driver-requests">Form-driver requests</a></H3><PRE>
+ The form driver requests are as follows:
- <STRONG>MOUSE</STRONG> <STRONG>HANDLING</STRONG>
- If the second argument is the KEY_MOUSE special key, the
- associated mouse event is translated into one of the above
- pre-defined requests. Currently only clicks in the user
- window (e.g., inside the form display area or the decora-
- tion window) are handled.
+ <EM>Name</EM> <EM>Description</EM>
+ ---------------------------------------------------------------------
+ REQ_BEG_FIELD Move to the beginning of the field.
+ REQ_BEG_LINE Move to the beginning of the line.
+ REQ_CLR_EOF Clear to end of field from cursor.
+ REQ_CLR_EOL Clear to end of line from cursor.
+ REQ_CLR_FIELD Clear the entire field.
+ REQ_DEL_CHAR Delete character at the cursor.
+ REQ_DEL_LINE Delete line at the cursor.
+ REQ_DEL_PREV Delete character before the cursor.
+ REQ_DEL_WORD Delete blank-delimited word at the cursor.
+ REQ_DOWN_CHAR Move down in the field.
+ REQ_DOWN_FIELD Move down to a field.
+ REQ_END_FIELD Move to the end of the field.
+ REQ_END_LINE Move to the end of the line.
+ REQ_FIRST_FIELD Move to the first field.
+ REQ_FIRST_PAGE Move to the first page.
+ REQ_INS_CHAR Insert a blank at the cursor.
+ REQ_INS_LINE Insert a blank line at the cursor.
+ REQ_INS_MODE Enter insert mode.
+ REQ_LAST_FIELD Move to the last field.
+ REQ_LAST_PAGE Move to the last field.
+ REQ_LEFT_CHAR Move left in the field.
+ REQ_LEFT_FIELD Move left to a field.
+ REQ_NEW_LINE Insert or overlay a new line.
+ REQ_NEXT_CHAR Move to the next char.
+ REQ_NEXT_CHOICE Display next field choice.
+
+ REQ_NEXT_FIELD Move to the next field.
+ REQ_NEXT_LINE Move to the next line.
+ REQ_NEXT_PAGE Move to the next page.
+ REQ_NEXT_PAGE Move to the next page.
+ REQ_NEXT_WORD Move to the next word.
+ REQ_OVL_MODE Enter overlay mode.
+ REQ_PREV_CHAR Move to the previous char.
+ REQ_PREV_CHOICE Display previous field choice.
+ REQ_PREV_FIELD Move to the previous field.
+ REQ_PREV_LINE Move to the previous line.
+ REQ_PREV_PAGE Move to the previous page.
+ REQ_PREV_WORD Move to the previous word.
+ REQ_RIGHT_CHAR Move right in the field.
+ REQ_RIGHT_FIELD Move right to a field.
+ REQ_SCR_BCHAR Scroll the field backward a character.
+ REQ_SCR_BHPAGE Scroll the field backward half a page.
+ REQ_SCR_BLINE Scroll the field backward a line.
+ REQ_SCR_BPAGE Scroll the field backward a page.
+ REQ_SCR_FCHAR Scroll the field forward a character.
+ REQ_SCR_FHPAGE Scroll the field forward half a page.
+ REQ_SCR_FLINE Scroll the field forward a line.
+ REQ_SCR_FPAGE Scroll the field forward a page.
+ REQ_SCR_HBHALF Horizontal scroll the field backward half a line.
+ REQ_SCR_HBLINE Horizontal scroll the field backward a line.
+ REQ_SCR_HFHALF Horizontal scroll the field forward half a line.
+ REQ_SCR_HFLINE Horizontal scroll the field forward a line.
+ REQ_SFIRST_FIELD Move to the sorted first field.
+ REQ_SLAST_FIELD Move to the sorted last field.
+ REQ_SNEXT_FIELD Move to the sorted next field.
+ REQ_SPREV_FIELD Move to the sorted previous field.
+ REQ_UP_CHAR Move up in the field.
+ REQ_UP_FIELD Move up to a field.
+ REQ_VALIDATION Validate field.
+
+ If the second argument is a printable character, the driver places it
+ in the current position in the current field. If it is one of the
+ forms requests listed above, that request is executed.
+
+
+</PRE><H3><a name="h3-Field-validation">Field validation</a></H3><PRE>
+ The form library makes updates to the window associated with form
+ fields rather than directly to the field buffers.
+
+ The form driver provides low-level control over updates to the form
+ fields. The form driver also provides for validating modified fields
+ to ensure that the contents meet whatever constraints an application
+ may attach using <STRONG>set_field_type</STRONG>.
+
+ You can validate a field without making any changes to it using
+ <STRONG>REQ_VALIDATION</STRONG>. The form driver also validates a field in these cases:
+
+ <STRONG>o</STRONG> a call to <STRONG>set_current_field</STRONG> attempts to move to a different field.
+
+ <STRONG>o</STRONG> a call to <STRONG>set_current_page</STRONG> attempts to move to a different page of
+ the form.
+
+ <STRONG>o</STRONG> a request attempts to move to a different field.
+
+ <STRONG>o</STRONG> a request attempts to move to a different page of the form.
+
+ In each case, the move fails if the field is invalid.
+
+ If the modified field is valid, the form driver copies the modified
+ data from the window associated with the field to the field buffer.
+
+
+</PRE><H3><a name="h3-Mouse-handling">Mouse handling</a></H3><PRE>
+ If the second argument is the KEY_MOUSE special key, the associated
+ mouse event is translated into one of the above pre-defined requests.
+ Currently only clicks in the user window (e.g., inside the form display
+ area or the decoration window) are handled.
If you click above the display region of the form:
@@ -281,48 +200,42 @@
a REQ_LAST_FIELD is generated for a triple-click.
- If you click at an field inside the display area of the
- form:
+ If you click at an field inside the display area of the form:
<STRONG>o</STRONG> the form cursor is positioned to that field.
- <STRONG>o</STRONG> If you double-click a field, the form cursor is
- positioned to that field and <STRONG>E_UNKNOWN_COMMAND</STRONG> is
- returned. This return value makes sense, because a
- double click usually means that an field-specific
- action should be returned. It is exactly the pur-
- pose of this return value to signal that an appli-
- cation specific command should be executed.
+ <STRONG>o</STRONG> If you double-click a field, the form cursor is positioned to
+ that field and <STRONG>E_UNKNOWN_COMMAND</STRONG> is returned. This return value
+ makes sense, because a double click usually means that an field-
+ specific action should be returned. It is exactly the purpose
+ of this return value to signal that an application specific com-
+ mand should be executed.
- <STRONG>o</STRONG> If a translation into a request was done,
- <STRONG>form_driver</STRONG> returns the result of this request.
+ <STRONG>o</STRONG> If a translation into a request was done, <STRONG>form_driver</STRONG> returns
+ the result of this request.
- If you clicked outside the user window or the mouse event
- could not be translated into a form request an
- <STRONG>E_REQUEST_DENIED</STRONG> is returned.
+ If you clicked outside the user window or the mouse event could not be
+ translated into a form request an <STRONG>E_REQUEST_DENIED</STRONG> is returned.
- <STRONG>APPLICATION-DEFINED</STRONG> <STRONG>COMMANDS</STRONG>
- If the second argument is neither printable nor one of the
- above pre-defined form requests, the driver assumes it is
- an application-specific command and returns <STRONG>E_UNKNOWN_COM-</STRONG>
- <STRONG>MAND</STRONG>. Application-defined commands should be defined rel-
- ative to <STRONG>MAX_COMMAND</STRONG>, the maximum value of these pre-
- defined requests.
+</PRE><H3><a name="h3-Application-defined-commands">Application-defined commands</a></H3><PRE>
+ If the second argument is neither printable nor one 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 these
+ pre-defined requests.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
<STRONG>form_driver</STRONG> returns one of the following error codes:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_BAD_STATE</STRONG>
- Routine was called from an initialization or termina-
- tion function.
+ Routine was called from an initialization or termination function.
<STRONG>E_NOT_POSTED</STRONG>
The form has not been posted.
@@ -330,46 +243,62 @@
<STRONG>E_INVALID_FIELD</STRONG>
Contents of field is invalid.
+ <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.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_UNKNOWN_COMMAND</STRONG>
The form driver code saw an unknown request code.
-</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>, <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>, <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>,
+ <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>, <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>.
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
- files <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header files
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>
+ <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-form_driver">form_driver</a></li>
+<li><a href="#h3-form_driver_w">form_driver_w</a></li>
+<li><a href="#h3-Form-driver-requests">Form-driver requests</a></li>
+<li><a href="#h3-Field-validation">Field validation</a></li>
+<li><a href="#h3-Mouse-handling">Mouse handling</a></li>
+<li><a href="#h3-Application-defined-commands">Application-defined commands</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_field.3x.html b/doc/html/man/form_field.3x.html
index 3faa99656e01..6e6a096fabdc 100644
--- a/doc/html/man/form_field.3x.html
+++ b/doc/html/man/form_field.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,32 +27,30 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_field.3x,v 1.11 2012/11/03 23:03:59 tom Exp @
+ * @Id: form_field.3x,v 1.13 2019/01/20 20:31:42 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_field 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_field 3x</H1>
-<HR>
+<H1 class="no-header">form_field 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG> <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
+<STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG> <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_field</STRONG> - make and break connections between fields and
- forms
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>form_field</STRONG> - make and break connections between fields and forms
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
int set_form_fields(FORM *form, FIELD **fields);
FIELD **form_fields(const FORM *form);
@@ -61,38 +58,31 @@
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>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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>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>field_count</STRONG> returns the count of fields in <EM>form</EM>.
- The function <STRONG>move_field</STRONG> moves the given field (which must
- be disconnected) to a specified location on the screen.
+ The function <STRONG>move_field</STRONG> moves the given field (which must be discon-
+ nected) to a specified location on the screen.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The function <STRONG>form_fields</STRONG> returns a pointer (which may be
- <STRONG>NULL</STRONG>). It does not set errno.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The function <STRONG>form_fields</STRONG> returns a pointer (which may be <STRONG>NULL</STRONG>). It
+ does not set errno.
- The function <STRONG>field_count</STRONG> returns <STRONG>ERR</STRONG> if the <EM>form</EM> parameter
- is <STRONG>NULL</STRONG>.
+ The function <STRONG>field_count</STRONG> returns <STRONG>ERR</STRONG> if the <EM>form</EM> parameter is <STRONG>NULL</STRONG>.
- The functions <STRONG>set_form_fields</STRONG> and <STRONG>move_field</STRONG> return one of
- the following codes on error:
+ The functions <STRONG>set_form_fields</STRONG> and <STRONG>move_field</STRONG> return one of the follow-
+ ing codes on error:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_CONNECTED</STRONG>
The field is already connected to a form.
@@ -101,42 +91,45 @@
The form is already posted.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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>).
+ 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
+ <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_field_attributes.3x.html b/doc/html/man/form_field_attributes.3x.html
index 0d7a126e2a84..42e82b5ac28c 100644
--- a/doc/html/man/form_field_attributes.3x.html
+++ b/doc/html/man/form_field_attributes.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,32 +27,30 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_field_attributes.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_field_attributes.3x,v 1.15 2019/11/30 21:01:57 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_field_attributes 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_field_attributes 3x</H1>
-<HR>
+<H1 class="no-header">form_field_attributes 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG> <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
+<STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG> <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_field_attributes</STRONG> - color and attribute control for
- form fields
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>form_field_attributes</STRONG> - color and attribute control for form fields
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
int set_field_fore(FIELD *field, chtype attr);
chtype field_fore(const FIELD *field);
@@ -63,68 +60,68 @@
int 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>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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_STAND-</STRONG>
+ <STRONG>OUT</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_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.
+ 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>
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
These routines return one of the following:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for
- detailed descriptions of the entry points.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for detailed
+ descriptions of the entry points.
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
+ <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_field_buffer.3x.html b/doc/html/man/form_field_buffer.3x.html
index 8b7389ba9283..71484d3aade1 100644
--- a/doc/html/man/form_field_buffer.3x.html
+++ b/doc/html/man/form_field_buffer.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,100 +27,88 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_field_buffer.3x,v 1.19 2010/12/04 18:38:55 tom Exp @
+ * @Id: form_field_buffer.3x,v 1.24 2019/11/30 21:02:22 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_field_buffer 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_field_buffer 3x</H1>
-<HR>
+<H1 class="no-header">form_field_buffer 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG> <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
+<STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG> <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>form_field_buffer</STRONG> - field buffer control
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
- int set_field_buffer(FIELD *field, int buf, const char
- *value);
+ 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:
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>set_field_buffer</STRONG> sets the numbered buffer of the given
+ field to contain a given string:
<STRONG>o</STRONG> Buffer 0 is the displayed value of the field.
- <STRONG>o</STRONG> Other numbered buffers may be allocated by applica-
- tions 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.
+ <STRONG>o</STRONG> 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 manip-
+ ulated by the forms library.
- The function <STRONG>field_buffer</STRONG> returns a pointer to the con-
- tents of the given numbered buffer:
+ The function <STRONG>field_buffer</STRONG> returns a pointer to the contents of the
+ given numbered buffer:
- <STRONG>o</STRONG> The buffer contents always have the same length,
- and are padded with trailing spaces as needed to
- ensure this length is the same.
+ <STRONG>o</STRONG> The buffer contents always have the same length, and are padded
+ with trailing spaces as needed to ensure this length is the
+ same.
- <STRONG>o</STRONG> The buffer may contain leading spaces, depending on
- how it was set.
+ <STRONG>o</STRONG> The buffer may contain leading spaces, depending on how it was
+ set.
- <STRONG>o</STRONG> The buffer contents are set with <STRONG>set_field_buffer</STRONG>,
- or as a side effect of any editing operations on
- the corresponding field.
+ <STRONG>o</STRONG> The buffer contents are set with <STRONG>set_field_buffer</STRONG>, or as a side
+ effect of any editing operations on the corresponding field.
- <STRONG>o</STRONG> Editing operations are based on the <EM>window</EM> which
- displays the field, rather than a <EM>string</EM>. The win-
- dow contains only printable characters, and is
- filled with blanks. If you want the raw data, you
- must write your own routine that copies the value
- out of the buffer and removes the leading and
- trailing spaces.
+ <STRONG>o</STRONG> Editing operations are based on the <EM>window</EM> which displays the
+ field, rather than a <EM>string</EM>. The window contains only printable
+ characters, and is filled with blanks. If you want the raw
+ data, you must write your own routine that copies the value out
+ of the buffer and removes the leading and trailing spaces.
- <STRONG>o</STRONG> Because editing operations change the content of
- the buffer to correspond to the window, you should
- not rely on using buffers for long-term storage of
- form data.
+ <STRONG>o</STRONG> Because editing operations change the content of the buffer to
+ correspond to the window, you should not rely on using buffers
+ for long-term storage of form data.
- 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_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.
+ 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. It sets
- errno according to their success:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The <STRONG>field_buffer</STRONG> function returns NULL on error. It sets errno accord-
+ ing to their success:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
The <STRONG>field_status</STRONG> function returns <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>.
@@ -130,50 +117,54 @@
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for
- detailed descriptions of the entry points.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for detailed
+ descriptions of the entry points.
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
- file
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
- When configured for wide characters, <STRONG>field_buffer</STRONG> returns
- a pointer to temporary storage (allocated and freed by the
- library). The application should not attempt to modify
- the data. It will be freed on the next call to <STRONG>field_buf-</STRONG>
- <STRONG>fer</STRONG> to return the same buffer. <STRONG>&lt;curses.h&gt;</STRONG>.
+ When configured for wide characters, <STRONG>field_buffer</STRONG> returns a pointer to
+ temporary storage (allocated and freed by the library). The applica-
+ tion should not attempt to modify the data. It will be freed on the
+ next call to <STRONG>field_buffer</STRONG> to return the same buffer. <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported on Version 7 or BSD versions.
+ The <STRONG>set_max_field</STRONG> function checks for an ncurses extension
+ <STRONG>O_INPUT_FIELD</STRONG> which allows a dynamic field to shrink if the new limit
+ is smaller than the current field size.
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
+
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
+ <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_field_info.3x.html b/doc/html/man/form_field_info.3x.html
index 07606e7993f9..c3199ebb55a8 100644
--- a/doc/html/man/form_field_info.3x.html
+++ b/doc/html/man/form_field_info.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,102 +27,99 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_field_info.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_field_info.3x,v 1.16 2019/11/30 21:02:29 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_field_info 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_field_info 3x</H1>
-<HR>
+<H1 class="no-header">form_field_info 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG> <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>
+<STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG> <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_field_info</STRONG> - retrieve field characteristics
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>dynamic_field_info</STRONG>, <STRONG>field_info</STRONG> - retrieve field characteristics
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
int field_info(const FIELD *field, int *rows, int *cols,
int *frow, int *fcol, int *nrow, int *nbuf);
- int dynamic_field_info(const FIELD *field, int *rows, int
- *cols, int *max);
+ int dynamic_field_info(const FIELD *field, int *rows, int *cols, int
+ *max);
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>field_info</STRONG> 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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>field_info</STRONG> returns the sizes and other attributes passed
+ in to the field at its creation time. The attributes are: height,
+ width, row of upper-left corner, 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 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> option with <STRONG>field_opts_off</STRONG>.
+ The function <STRONG>dynamic_field_info</STRONG> 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> option with <STRONG>field_opts_off</STRONG>.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for
- detailed descriptions of the entry points.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for detailed
+ descriptions of the entry points.
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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.
+ 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>
+ <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_field_just.3x.html b/doc/html/man/form_field_just.3x.html
index e98de08df624..8f7ab13ef17a 100644
--- a/doc/html/man/form_field_just.3x.html
+++ b/doc/html/man/form_field_just.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,92 +27,91 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_field_just.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_field_just.3x,v 1.15 2019/11/30 21:02:36 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_field_just 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_field_just 3x</H1>
-<HR>
+<H1 class="no-header">form_field_just 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG> <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>
+<STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG> <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_field_just</STRONG> - retrieve field characteristics
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_field_just</STRONG>, <STRONG>field_just</STRONG> - retrieve field characteristics
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</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><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>set_field_just</STRONG> sets the justification attribute of a
+ field; <STRONG>field_just</STRONG> returns a field's justification attribute. The
+ attribute may be one of NO_JUSTIFICATION, 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.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The function <STRONG>field_just</STRONG> returns one of: NO_JUSTIFICATION, JUS-
+ TIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER.
The function <STRONG>set_field_just</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>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for
- detailed descriptions of the entry points.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for detailed
+ descriptions of the entry points.
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>
+ <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_field_new.3x.html b/doc/html/man/form_field_new.3x.html
index 2c9745963197..94132de7b982 100644
--- a/doc/html/man/form_field_new.3x.html
+++ b/doc/html/man/form_field_new.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,31 +27,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_field_new.3x,v 1.18 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_field_new.3x,v 1.20 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_field_new 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_field_new 3x</H1>
-<HR>
+<H1 class="no-header">form_field_new 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG> <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
+<STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG> <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_field_new</STRONG> - create and destroy form fields
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>new_field</STRONG>, <STRONG>dup_field</STRONG>, <STRONG>link_field</STRONG>, <STRONG>free_field</STRONG> - create and destroy form
+ fields
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
FIELD *new_field(int height, int width,
int toprow, int leftcol,
@@ -62,38 +61,32 @@
int free_field(FIELD *field);
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>new_field</STRONG> 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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>new_field</STRONG> allocates a new field and initializes 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-
- 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>dup_field</STRONG> duplicates a field at a new location. Most
+ attributes (including current contents, size, validation type, buffer
+ count, growth threshold, justification, 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
- field shares buffers with its parent. Attribute data is
- separate.
+ The function <STRONG>link_field</STRONG> acts like <STRONG>dup_field</STRONG>, but the new field shares
+ buffers with its parent. Attribute data is separate.
- The function <STRONG>free_field</STRONG> de-allocates storage associated
- with a field.
+ The function <STRONG>free_field</STRONG> 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>
- on error. They set errno according to their success:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The function, <STRONG>new_field</STRONG>, <STRONG>dup_field</STRONG>, <STRONG>link_field</STRONG> return <STRONG>NULL</STRONG> on error.
+ They set errno according to their success:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_SYSTEM_ERROR</STRONG>
System error occurred, e.g., malloc failure.
@@ -103,48 +96,49 @@
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_CONNECTED</STRONG>
field is connected.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported on Version 7 or BSD versions.
- It may be unwise to count on the set of attributes copied
- by <STRONG>dup_field</STRONG> being portable; the System V forms library
- documents are not very explicit about what gets copied and
- what does not.
+ It may be unwise to count on the set of attributes copied by <STRONG>dup_field</STRONG>
+ being portable; the System V forms library documents are not very
+ explicit about what gets copied and what does not.
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
+ <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_field_opts.3x.html b/doc/html/man/form_field_opts.3x.html
index 1cdfe7038ae5..04a1cafcca7c 100644
--- a/doc/html/man/form_field_opts.3x.html
+++ b/doc/html/man/form_field_opts.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,31 +27,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_field_opts.3x,v 1.16 2010/12/04 18:41:07 tom Exp @
+ * @Id: form_field_opts.3x,v 1.24 2019/01/20 20:19:03 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_field_opts 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_field_opts 3x</H1>
-<HR>
+<H1 class="no-header">form_field_opts 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG> <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
+<STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG> <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_field_opts</STRONG> - set and get field options
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_field_opts</STRONG>, <STRONG>field_opts_on</STRONG>, <STRONG>field_opts_off</STRONG>, <STRONG>field_opts</STRONG> - set and get
+ field options
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
int set_field_opts(FIELD *field, Field_Options opts);
int field_opts_on(FIELD *field, Field_Options opts);
@@ -60,109 +59,127 @@
Field_Options field_opts(const FIELD *field);
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>set_field_opts</STRONG> 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,
- and leaves others alone.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>set_field_opts</STRONG> sets all the given field's option bits
+ (field option bits may be logically-OR'ed together).
- The function <STRONG>field_opts_off</STRONG> turns off the given option
- bits, and leaves others alone.
+ The function <STRONG>field_opts_on</STRONG> turns on the given option bits, and leaves
+ others alone.
- The function <STRONG>field_opts</STRONG> returns the field's current option
- bits.
+ The function <STRONG>field_opts_off</STRONG> turns off the given option bits, and leaves
+ others alone.
- The following options are defined (all are on by default):
+ The function <STRONG>field_opts</STRONG> returns the field's current option bits.
- O_VISIBLE
- The field is displayed. If this option is off, dis-
- play of the field is suppressed.
+ The following standard options are defined (all are on by default):
O_ACTIVE
- The field is visited during processing. If this
- option is off, the field will not be reachable by
- navigation keys. Please notice that an invisible
- field appears to be inactive also.
+ The field is visited during processing. If this option is off,
+ the field will not be reachable by navigation keys. Please notice
+ that an invisible field appears to be inactive also.
- O_PUBLIC
- The field contents are displayed as data is entered.
+ O_AUTOSKIP
+ Skip to the next field when this one fills.
+
+ O_BLANK
+ The field is cleared whenever a character is entered at the first
+ position.
O_EDIT
The field can be edited.
+ O_NULLOK
+ Allow a blank field.
+
+ O_PASSOK
+ Validate field only if modified by user.
+
+ O_PUBLIC
+ The field contents are displayed as data is entered.
+
+ O_STATIC
+ Field buffers are fixed to field's original size. Turn this
+ option off to create a dynamic field.
+
+ O_VISIBLE
+ The field is displayed. If this option is off, display of the
+ field is suppressed.
+
O_WRAP
- Words that do not fit on a line are wrapped to the
- next line. Words are blank-separated.
+ Words that do not fit on a line are wrapped to the next line.
+ Words are blank-separated.
- O_BLANK
- The field is cleared whenever a character is entered
- at the first position.
+ These extension options are defined (extensions are off by default):
- O_AUTOSKIP
- Skip to the next field when this one fills.
+ O_DYNAMIC_JUSTIFY
+ Permit dynamic fields to be justified, like static fields.
- O_NULLOK
- Allow a blank field.
+ O_NO_LEFT_STRIP
+ Preserve leading whitespace in the field buffer, which is normally
+ discarded.
- O_STATIC
- Field buffers are fixed to field's original size.
- Turn this option off to create a dynamic field.
+ O_EDGE_INSERT_STAY
+ When inserting into a field up to the boundary position, option-
+ ally delay the scrolling, so that the last inserted character
+ remains visible, but advance the cursor to reflect the insertion.
+ This allows the form library to display the inserted character in
+ one-character fields as well as allowing the library to maintain
+ consistent state.
- O_PASSOK
- Validate field only if modified by user.
+ O_INPUT_FIELD
+ The <STRONG>set_max_field</STRONG> function checks for this extension, which allows
+ a dynamic field to shrink if the new limit is smaller than the
+ current field size.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- Except for <STRONG>field_opts</STRONG>, each routine returns one of the
- following:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Except for <STRONG>field_opts</STRONG>, each routine returns one of the following:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_CURRENT</STRONG>
The field is the current field.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</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><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>.
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
+ <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_field_userptr.3x.html b/doc/html/man/form_field_userptr.3x.html
index 845027db82c4..3adc70edb472 100644
--- a/doc/html/man/form_field_userptr.3x.html
+++ b/doc/html/man/form_field_userptr.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,85 +27,85 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_field_userptr.3x,v 1.10 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_field_userptr.3x,v 1.12 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_field_userptr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_field_userptr 3x</H1>
-<HR>
+<H1 class="no-header">form_field_userptr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG> <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
+<STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG> <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_field_userptr</STRONG> - associate application data with a
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_field_userptr</STRONG>, <STRONG>field_userptr</STRONG> - associate application data with a
form field
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
int set_field_userptr(FIELD *field, void*userptr);
void *field_userptr(const FIELD *field);
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- Every form field has a field that can be used to hold
- application-specific data (that is, the form-driver code
- leaves it alone). These functions get and set that field.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ Every form field has a field that can be used to hold application-spe-
+ cific data (that is, the form-driver code leaves it alone). These
+ functions get and set that field.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The function <STRONG>field_userptr</STRONG> returns a pointer (which may be
- <STRONG>NULL</STRONG>). It does not set errno.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The function <STRONG>field_userptr</STRONG> returns a pointer (which may be <STRONG>NULL</STRONG>). It
+ does not set errno.
The function <STRONG>set_field_userptr</STRONG> returns <STRONG>E_OK</STRONG> (success).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported on Version 7 or BSD versions.
- The user pointer is a void pointer. We chose not to leave
- it as a char pointer for SVr4 compatibility.
+ The user pointer is a void pointer. We chose not to leave it as a char
+ pointer for SVr4 compatibility.
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
+ <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_field_validation.3x.html b/doc/html/man/form_field_validation.3x.html
index 08201ff1315e..a65e0b4ad4d5 100644
--- a/doc/html/man/form_field_validation.3x.html
+++ b/doc/html/man/form_field_validation.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,31 +26,30 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_field_validation.3x,v 1.20 2010/12/04 18:38:55 tom Exp @
+ * @Id: form_field_validation.3x,v 1.24 2019/01/20 20:31:42 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_field_validation 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_field_validation 3x</H1>
-<HR>
+<H1 class="no-header">form_field_validation 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG> <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
+<STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG> <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>form_field_validation</STRONG> - data type validation for fields
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
int set_field_type(FIELD *field, FIELDTYPE *type, ...);
FIELDTYPE *field_type(const FIELD *field);
@@ -66,130 +64,142 @@
FIELDTYPE *TYPE_IPV4;
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>set_field_type</STRONG> declares a data type for a
- given form field. This is the type checked by validation
- functions. The predefined types are as follows:
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>set_field_type</STRONG> declares a data type for a given form
+ field. This is the type checked by validation functions. The prede-
+ fined types are as follows:
TYPE_ALNUM
- Alphanumeric data. Requires a third <STRONG>int</STRONG> argument, a
- minimum field width.
+ Alphanumeric data. Requires a third <STRONG>int</STRONG> argument, a minimum field
+ width.
TYPE_ALPHA
- Character data. Requires a third <STRONG>int</STRONG> argument, a
- minimum field width.
+ Character data. Requires a third <STRONG>int</STRONG> 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
- 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
- notice that the string list is copied. So you may use
- a list that lives in automatic variables on the
- stack.
+ Accept one of a specified set of strings. Requires additional
+ parameters:
+
+ <STRONG>o</STRONG> a third <STRONG>(char</STRONG> <STRONG>**)</STRONG> argument pointing to a string list;
+
+ <STRONG>o</STRONG> a fourth <STRONG>int</STRONG> flag argument to enable case-sensitivity;
+
+ <STRONG>o</STRONG> and a fifth <STRONG>int</STRONG> 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.
+
+ The library copies the string list, so you may use a list that
+ lives in automatic variables 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.
- If the maximum value is less than or equal to the
- minimum value, the range is simply ignored. On return
- the field buffer is formatted according to the <STRONG>printf</STRONG>
- format specification ".*ld", where the '*' is
- replaced by the precision argument. For details of
- the precision handling see <STRONG>printf's</STRONG> man-page.
+ Integer data, parsable to an integer by <STRONG>atoi(3)</STRONG>. Requires addi-
+ tional parameters:
+
+ <STRONG>o</STRONG> a third <STRONG>int</STRONG> argument controlling the precision,
+
+ <STRONG>o</STRONG> a fourth <STRONG>long</STRONG> argument constraining minimum value,
+
+ <STRONG>o</STRONG> and a fifth <STRONG>long</STRONG> constraining maximum value. If the maximum
+ value is less than or equal to the minimum value, the range is
+ simply ignored. On return, the field buffer is formatted
+ according to the <STRONG>printf</STRONG> format specification ".*ld", where the
+ "*" is replaced by the precision argument.
+
+ For details of the precision handling see <STRONG>printf(3)</STRONG>.
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.
- If your system supports locales, the decimal point
- character to be used must be the one specified by
- your locale. If the maximum value is less than or
- equal to 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 replaced by the precision argument.
- For details of the precision handling see <STRONG>printf's</STRONG>
- man-page.
+ Numeric data (may have a decimal-point part). This requires addi-
+ tional parameters:
+
+ <STRONG>o</STRONG> a third <STRONG>int</STRONG> argument controlling the precision,
+
+ <STRONG>o</STRONG> a fourth <STRONG>double</STRONG> argument constraining minimum value,
+
+ <STRONG>o</STRONG> and a fifth <STRONG>double</STRONG> constraining maximum value. If your system
+ supports locales, the decimal point character must be the one
+ specified by your locale. If the maximum value is less than
+ or equal to 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 replaced
+ by the precision argument.
+
+ For details of the precision handling see <STRONG>printf(3)</STRONG>.
TYPE_REGEXP
- Regular expression data. Requires a regular expres-
- sion <STRONG>(char</STRONG> <STRONG>*)</STRONG> third argument; the data is valid if
- the regular expression matches it. Regular expres-
- sions are in the format of <STRONG>regcomp</STRONG> and <STRONG>regexec</STRONG>.
- Please notice that the regular expression 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 fill all eight posi-
- tions with digits. If you want to allow fewer digits,
- you may use for example "^[0-9]* *$" which is good
- for trailing spaces (up to an empty field), or "^
- *[0-9]* *$" which is good for leading and trailing
- spaces around the digits.
+ Regular expression data. Requires a regular expression <STRONG>(char</STRONG> <STRONG>*)</STRONG>
+ third argument. The data is valid if the regular expression
+ matches it.
+
+ Regular expressions are in the format of <STRONG>regcomp</STRONG> and <STRONG>regexec</STRONG>.
+
+ The regular expression 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 fill all eight positions
+ with digits. If you want to allow fewer digits, you may use for
+ example "^[0-9]* *$" which is good for trailing spaces (up to an
+ empty field), or "^ *[0-9]* *$" which is good for leading and
+ trailing spaces around the digits.
TYPE_IPV4
- An Internet Protocol Version 4 address. This requires
- no additional argument. It is checked whether or not
- the buffer has the form a.b.c.d, where a,b,c and d
- are numbers between 0 and 255. Trailing blanks in the
- buffer are ignored. The address itself is not vali-
- dated. Please note that this is an ncurses extension.
- This field type may not be available in other curses
- implementations.
+ An Internet Protocol Version 4 address. This requires no addi-
+ tional argument. The library checks whether or not the buffer has
+ the form a.b.c.d, where a,b,c and d are numbers between 0 and 255.
+ Trailing blanks in the buffer are ignored. The address itself is
+ not validated.
- 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.
+ This is an ncurses extension; this field type may not be available
+ in other curses 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.
-</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-
- lowing:
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The functions <STRONG>field_type</STRONG> and <STRONG>field_arg</STRONG> return <STRONG>NULL</STRONG> on error. The func-
+ tion <STRONG>set_field_type</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>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>.
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
+ <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_fieldtype.3x.html b/doc/html/man/form_fieldtype.3x.html
index f2778a1e3e11..468c9dbedae8 100644
--- a/doc/html/man/form_fieldtype.3x.html
+++ b/doc/html/man/form_fieldtype.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,31 +27,30 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_fieldtype.3x,v 1.16 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_fieldtype.3x,v 1.19 2019/01/20 20:31:42 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_fieldtype 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_fieldtype 3x</H1>
-<HR>
+<H1 class="no-header">form_fieldtype 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG> <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
+<STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG> <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>form_fieldtype</STRONG> - define validation-field types
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
FIELDTYPE *new_fieldtype(
bool (* const field_check)(FIELD *, const void *),
@@ -71,75 +69,62 @@
FIELDTYPE *type2);
-</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
- predicate to check the validity of an entered data string
- whenever the user attempts to leave a field. The (FIELD
- *) argument is passed in so the validation predicate can
- see the field's buffer, sizes and other attributes; the
- second 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
- 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
- a given validation type.
-
- The function <STRONG>set_fieldtype_arg</STRONG> associates three storage-
- management functions with a field type. The <EM>make</EM><STRONG>_</STRONG><EM>arg</EM>
- function is automatically applied to the list of arguments
- you give <STRONG>set_field_type</STRONG> when attaching validation to a
- field; its job is to bundle these into an allocated argu-
- ment-block object which can later be passed to validation
- predicated. The other two hook arguments should copy and
- free argument-block structures. They will be used by the
- forms-driver code. You must supply the <EM>make</EM><STRONG>_</STRONG><EM>arg</EM> function,
- the other two are optional, you may supply NULL for them.
- In this case it is assumed that <EM>make</EM><STRONG>_</STRONG><EM>arg</EM> does not allocate
- memory but simply loads the argument into a single scalar
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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 predicate to check the
+ validity of an entered data string whenever the user attempts to leave
+ a field. The (FIELD *) argument is passed in so the validation predi-
+ cate can see the field's buffer, sizes and other attributes; the second
+ 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 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 a given vali-
+ dation type.
+
+ The function <STRONG>set_fieldtype_arg</STRONG> associates three storage-management
+ functions with a field type. The <EM>make</EM><STRONG>_</STRONG><EM>arg</EM> function is automatically
+ applied to the list of arguments you give <STRONG>set_field_type</STRONG> 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 predi-
+ cated. The other two hook arguments should copy and free argument-
+ block structures. They will be used by the forms-driver code. You
+ must supply the <EM>make</EM><STRONG>_</STRONG><EM>arg</EM> function, the other two are optional, you may
+ supply NULL for them. In this case it is assumed that <EM>make</EM><STRONG>_</STRONG><EM>arg</EM> does
+ not allocate memory but simply loads the argument into a single scalar
value.
- The function <STRONG>link_fieldtype</STRONG> creates a new field type from
- the two given types. They are connected by an logical
- 'OR'.
+ The function <STRONG>link_fieldtype</STRONG> creates a new field type from the two given
+ types. They are connected by an logical 'OR'.
- The form driver requests <STRONG>REQ_NEXT_CHOICE</STRONG> and
- <STRONG>REQ_PREV_CHOICE</STRONG> 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-
- 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
- arguments.
+ The form driver requests <STRONG>REQ_NEXT_CHOICE</STRONG> and <STRONG>REQ_PREV_CHOICE</STRONG> 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_field-</STRONG>
+ <STRONG>type_choice</STRONG> function allows forms programmers to define successor and
+ predecessor functions for the field type. These functions take the
+ field pointer and an argument-block structure as arguments.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The pointer-valued routines return NULL on error. They
- set errno according to their success:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The pointer-valued routines return NULL on error. They set errno
+ according to their success:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_SYSTEM_ERROR</STRONG>
System error occurred, e.g., malloc failure.
- The integer-valued routines return one of the following
- codes on error:
+ The integer-valued routines return one of the following codes on error:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_CONNECTED</STRONG>
The field is already connected to a form.
@@ -148,43 +133,46 @@
The field is the current field.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</STRONG>.
- All of the <STRONG>(char</STRONG> <STRONG>*)</STRONG> arguments of these functions should
- actually be <STRONG>(void</STRONG> <STRONG>*)</STRONG>. The type has been left uncorrected
- for strict compatibility with System V.
+ 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 for strict compatibility
+ with System V.
-</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
+ <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_hook.3x.html b/doc/html/man/form_hook.3x.html
index 837d6f403dd9..b2b02708ab7d 100644
--- a/doc/html/man/form_hook.3x.html
+++ b/doc/html/man/form_hook.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,32 +27,30 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_hook.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_hook.3x,v 1.13 2019/01/20 20:31:42 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_hook 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_hook 3x</H1>
-<HR>
+<H1 class="no-header">form_hook 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG> <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
+<STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG> <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_hook</STRONG> - set hooks for automatic invocation by applica-
- tions
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>form_hook</STRONG> - set hooks for automatic invocation by applications
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
int set_field_init(FORM *form, Form_Hook func);
Form_Hook field_init(const FORM *form);
@@ -65,74 +62,73 @@
Form_Hook 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>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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_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_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_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).
+ 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:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
+ <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_new.3x.html b/doc/html/man/form_new.3x.html
index 81002200fef3..83f6e2da2fe0 100644
--- a/doc/html/man/form_new.3x.html
+++ b/doc/html/man/form_new.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,56 +27,51 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_new.3x,v 1.9 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_new.3x,v 1.11 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_new 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_new 3x</H1>
-<HR>
+<H1 class="no-header">form_new 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG> <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>
+<STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG> <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_new</STRONG> - create and destroy forms
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>new_form</STRONG>, <STRONG>free_form</STRONG> - create and destroy forms
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</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).
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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>-terminated).
- The function <STRONG>free_form</STRONG> disconnects <EM>form</EM> from its field
- array and frees the storage allocated for the form.
+ 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. It sets
- errno according to the function's success:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The function <STRONG>new_form</STRONG> returns <STRONG>NULL</STRONG> on error. It sets errno according
+ to the function's success:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_CONNECTED</STRONG>
The field is already connected to a form.
@@ -90,43 +84,45 @@
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_POSTED</STRONG>
The form has already been posted.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>
+ <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_new_page.3x.html b/doc/html/man/form_new_page.3x.html
index 171b09ac5dbb..7eceabe639cc 100644
--- a/doc/html/man/form_new_page.3x.html
+++ b/doc/html/man/form_new_page.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,92 +27,88 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_new_page.3x,v 1.10 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_new_page.3x,v 1.14 2019/11/30 21:06:30 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_new_page 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_new_page 3x</H1>
-<HR>
+<H1 class="no-header">form_new_page 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG> <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>
+<STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG> <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_new_page</STRONG> - form pagination functions
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_new_page</STRONG>, <STRONG>new_page</STRONG> - form pagination functions
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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.
+ 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>
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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:
+ The function <STRONG>set_new_page</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_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 related pages whose names begin "form_" for
- detailed descriptions of the entry points.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for detailed
+ descriptions of the entry points.
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>
+ <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_opts.3x.html b/doc/html/man/form_opts.3x.html
index ee73c24a2f5a..472fefdf212d 100644
--- a/doc/html/man/form_opts.3x.html
+++ b/doc/html/man/form_opts.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,31 +27,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_opts.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_opts.3x,v 1.14 2019/01/20 20:31:42 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_opts 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_opts 3x</H1>
-<HR>
+<H1 class="no-header">form_opts 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG> <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
+<STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG> <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_opts</STRONG> - set and get form options
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_form_opts</STRONG>, <STRONG>form_opts_on</STRONG>, <STRONG>form_opts_off</STRONG>, <STRONG>form_opts</STRONG> - set and get
+ form options
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
int set_form_opts(FORM *form, Field_Options opts);
int form_opts_on(FORM *form, Field_Options opts);
@@ -60,75 +59,71 @@
Field_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).
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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_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_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 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.
+ 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.
+ 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:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Except for <STRONG>form_opts</STRONG>, each routine returns one of the following:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
+ <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_page.3x.html b/doc/html/man/form_page.3x.html
index 07c83da31773..999089962fea 100644
--- a/doc/html/man/form_page.3x.html
+++ b/doc/html/man/form_page.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,71 +27,67 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_page.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_page.3x,v 1.16 2019/01/20 20:31:42 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_page 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_page 3x</H1>
-<HR>
+<H1 class="no-header">form_page 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG> <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
+<STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG> <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>form_page</STRONG> - set and get form page number
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
int set_current_field(FORM *form, FIELD *field);
FIELD *current_field(const FORM *);
+ int unfocus_current_field(FORM *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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>set_current_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>unfocus_current_field</STRONG> removes the focus from the current
+ field of the form. In such state, inquiries via <STRONG>current_field</STRONG> shall
+ return a NULL pointer.
- The function <STRONG>form_page</STRONG> returns the form's current page
- number.
+ 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>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.
+ 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:
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Except for <STRONG>form_page</STRONG>, each routine returns one of the following:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_BAD_STATE</STRONG>
- Routine was called from an initialization or termina-
- tion function.
+ Routine was called from an initialization or termination function.
<STRONG>E_INVALID_FIELD</STRONG>
Contents of a field are not valid.
@@ -101,39 +96,44 @@
The form driver could not process the request.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported on Version 7 or BSD versions.
+ The <STRONG>unfocus_current_field</STRONG> function is an ncurses extension.
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
+
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
+ <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_post.3x.html b/doc/html/man/form_post.3x.html
index 38f8a8f501c2..0cb52febfe56 100644
--- a/doc/html/man/form_post.3x.html
+++ b/doc/html/man/form_post.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,62 +27,55 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_post.3x,v 1.9 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_post.3x,v 1.13 2019/01/20 20:31:42 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_post 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_post 3x</H1>
-<HR>
+<H1 class="no-header">form_post 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG> <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>
+<STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG> <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_post</STRONG> - write or erase forms from associated subwin-
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>post_form</STRONG>, <STRONG>unpost_form</STRONG> - write or erase forms from associated subwin-
dows
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</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).
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>post_form</STRONG> displays a form to its associated subwindow. To
+ trigger physical display of the subwindow, use <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></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.
+ The function <STRONG>unpost_form</STRONG> erases form from its associated subwindow.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
These routines return one of the following:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_BAD_STATE</STRONG>
- Routine was called from an initialization or termina-
- tion function.
+ Routine was called from an initialization or termination function.
<STRONG>E_NOT_POSTED</STRONG>
The form has not been posted.
@@ -98,39 +90,42 @@
The form has already been posted.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>
+ <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_requestname.3x.html b/doc/html/man/form_requestname.3x.html
index 68fe8497f4d4..9156cc24aee0 100644
--- a/doc/html/man/form_requestname.3x.html
+++ b/doc/html/man/form_requestname.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,85 +27,85 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_requestname.3x,v 1.9 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_requestname.3x,v 1.11 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_requestname 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_requestname 3x</H1>
-<HR>
+<H1 class="no-header">form_requestname 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG> <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>
+<STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG> <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_requestname</STRONG> - handle printable form request names
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>form_request_by_name</STRONG>, <STRONG>form_request_name</STRONG> - handle printable form request
+ names
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
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
- of a form request code.
- The function <STRONG>form_request_by_name</STRONG> searches in the name-ta-
- ble for a request with the given name and returns its
- request code. Otherwise E_NO_MATCH is returned.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>form_request_name</STRONG> returns the printable name of a form
+ request code.
+ The function <STRONG>form_request_by_name</STRONG> 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. It does
- not set errno.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ <STRONG>form_request_name</STRONG> returns <STRONG>NULL</STRONG> on error and sets errno to <STRONG>E_BAD_ARGU-</STRONG>
+ <STRONG>MENT</STRONG>.
+ <STRONG>form_request_by_name</STRONG> returns <STRONG>E_NO_MATCH</STRONG> on error. It does not set
+ errno.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</STRONG>.
-</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><a name="h2-PORTABILITY">PORTABILITY</a></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 conditioned using NCURSES_VERSION.
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>
+ <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_userptr.3x.html b/doc/html/man/form_userptr.3x.html
index 564295a53197..b3edafb5331a 100644
--- a/doc/html/man/form_userptr.3x.html
+++ b/doc/html/man/form_userptr.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,85 +27,85 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_userptr.3x,v 1.13 2010/12/04 18:40:45 tom Exp @
+ * @Id: form_userptr.3x,v 1.15 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_userptr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_userptr 3x</H1>
-<HR>
+<H1 class="no-header">form_userptr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG> <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>
+<STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG> <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_userptr</STRONG> - associate application data with a form item
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_form_userptr</STRONG>, <STRONG>form_userptr</STRONG> - associate application data with a form
+ item
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
int set_form_userptr(FORM *form, void *userptr);
void* form_userptr(const FORM *form);
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- Every form and every form item has a field that can be
- used to hold application-specific data (that is, the form-
- driver code leaves it alone). These functions get and set
- the form user pointer field.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ Every form and every form item has a field that can be used to hold
+ application-specific data (that is, the form-driver code leaves it
+ alone). These functions get and set the form user pointer field.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The function <STRONG>form_userptr</STRONG> returns a pointer (which may be
- <STRONG>NULL</STRONG>). It does not set errno.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The function <STRONG>form_userptr</STRONG> returns a pointer (which may be <STRONG>NULL</STRONG>). It
+ does not set errno.
The function <STRONG>set_form_userptr</STRONG> returns <STRONG>E_OK</STRONG> (success).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported on Version 7 or BSD versions.
- The user pointer is a void pointer. We chose not to leave
- it as a char pointer for SVr4 compatibility.
+ The user pointer is a void pointer. We chose not to leave it as a char
+ pointer for SVr4 compatibility.
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>
+ <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_variables.3x.html b/doc/html/man/form_variables.3x.html
index fdbc8625343d..844f0ae5d724 100644
--- a/doc/html/man/form_variables.3x.html
+++ b/doc/html/man/form_variables.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2010-2013,2017 Free 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,33 +26,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_variables.3x,v 1.4 2013/06/22 17:58:32 tom Exp @
+ * @Id: form_variables.3x,v 1.5 2017/11/20 00:59:21 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_variables 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_variables 3x</H1>
-<HR>
+<H1 class="no-header">form_variables 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG> <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>
+<STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG> <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>TYPE_ALNUM</STRONG>, <STRONG>TYPE_ALPHA</STRONG>, <STRONG>TYPE_ENUM</STRONG>, <STRONG>TYPE_INTEGER</STRONG>,
- <STRONG>TYPE_IPV4</STRONG>, <STRONG>TYPE_NUMERIC</STRONG>, <STRONG>TYPE_REGEXP</STRONG> - form system global
- variables
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>TYPE_ALNUM</STRONG>, <STRONG>TYPE_ALPHA</STRONG>, <STRONG>TYPE_ENUM</STRONG>, <STRONG>TYPE_INTEGER</STRONG>, <STRONG>TYPE_IPV4</STRONG>,
+ <STRONG>TYPE_NUMERIC</STRONG>, <STRONG>TYPE_REGEXP</STRONG> - form system global variables
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
<STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_ALNUM;</STRONG>
@@ -65,54 +62,70 @@
<STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_REGEXP;</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These are building blocks for the form library, defining
- fields that can be created using <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>. Each
- provides functions for field- and character-validation,
- according to the given datatype.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These are building blocks for the form library, defining fields that
+ can be created using <STRONG><A HREF="form_fieldtype.3x.html">set_fieldtype(3x)</A></STRONG>. Each provides functions for
+ field- and character-validation, according to the given datatype.
+
- <STRONG>TYPE_ALNUM</STRONG>
+</PRE><H3><a name="h3-TYPE_ALNUM">TYPE_ALNUM</a></H3><PRE>
This holds alphanumeric data.
- <STRONG>TYPE_ALPHA</STRONG>
+
+</PRE><H3><a name="h3-TYPE_ALPHA">TYPE_ALPHA</a></H3><PRE>
This holds alphabetic data.
- <STRONG>TYPE_ENUM</STRONG>
+
+</PRE><H3><a name="h3-TYPE_ENUM">TYPE_ENUM</a></H3><PRE>
This holds an enumerated type.
- <STRONG>TYPE_INTEGER</STRONG>
+
+</PRE><H3><a name="h3-TYPE_INTEGER">TYPE_INTEGER</a></H3><PRE>
This holds a decimal integer.
- <STRONG>TYPE_IPV4</STRONG>
+
+</PRE><H3><a name="h3-TYPE_IPV4">TYPE_IPV4</a></H3><PRE>
This holds an IPv4 internet address, e.g., "127.0.0.1".
- <STRONG>TYPE_NUMERIC</STRONG>
- This holds a decimal number, with optional sign and deci-
- mal point.
- <STRONG>TYPE_REGEXP</STRONG>
+</PRE><H3><a name="h3-TYPE_NUMERIC">TYPE_NUMERIC</a></H3><PRE>
+ This holds a decimal number, with optional sign and decimal point.
+
+
+</PRE><H3><a name="h3-TYPE_REGEXP">TYPE_REGEXP</a></H3><PRE>
This holds a regular expression.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The <STRONG>TYPE_IPV4</STRONG> variable is an extension not provided by
- older implementations of the form library.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The <STRONG>TYPE_IPV4</STRONG> variable is an extension not provided by older implemen-
+ tations of the form library.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
- <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>
+ <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-TYPE_ALNUM">TYPE_ALNUM</a></li>
+<li><a href="#h3-TYPE_ALPHA">TYPE_ALPHA</a></li>
+<li><a href="#h3-TYPE_ENUM">TYPE_ENUM</a></li>
+<li><a href="#h3-TYPE_INTEGER">TYPE_INTEGER</a></li>
+<li><a href="#h3-TYPE_IPV4">TYPE_IPV4</a></li>
+<li><a href="#h3-TYPE_NUMERIC">TYPE_NUMERIC</a></li>
+<li><a href="#h3-TYPE_REGEXP">TYPE_REGEXP</a></li>
+</ul>
+</li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/form_win.3x.html b/doc/html/man/form_win.3x.html
index be604a152d9a..f477f34d0cf6 100644
--- a/doc/html/man/form_win.3x.html
+++ b/doc/html/man/form_win.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,32 +27,30 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: form_win.3x,v 1.13 2010/12/04 18:38:55 tom Exp @
+ * @Id: form_win.3x,v 1.15 2019/01/20 20:31:42 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>form_win 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>form_win 3x</H1>
-<HR>
+<H1 class="no-header">form_win 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG> <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
+<STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG> <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>form_win</STRONG> - make and break form window and subwindow asso-
- ciations
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>form_win</STRONG> - make and break form window and subwindow associations
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
int set_form_win(FORM *form, WINDOW *win);
WINDOW *form_win(const FORM *form);
@@ -62,40 +59,35 @@
int scale_form(const FORM *form, int *rows, int *columns);
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- Every form has an associated pair of <STRONG>curses</STRONG> 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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ Every form has an associated pair of <STRONG>curses</STRONG> windows. The form window
+ displays any title and border associated with the window; the form sub-
+ window 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.
+ The first four functions get and set those windows. It is not neces-
+ sary to set either window; by default, the driver code uses <STRONG>stdscr</STRONG> 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
- treated as a request to change the system default form
- window or subwindow.
+ 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 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 <STRONG>scale_form</STRONG> returns the minimum size required for the sub-
+ window of <EM>form</EM>.
-</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:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Routines that return pointers return <STRONG>NULL</STRONG> on error. Routines 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>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_POSTED</STRONG>
The form has already been posted.
@@ -104,36 +96,39 @@
No items are connected to the form.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V forms library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
+ <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/index.html b/doc/html/man/index.html
index c93d1f84ccc4..aa8f274f0598 100644
--- a/doc/html/man/index.html
+++ b/doc/html/man/index.html
@@ -1,7 +1,7 @@
<!--
- $Id: index.html,v 1.7 2013/06/07 20:12:36 tom Exp $
+ $Id: index.html,v 1.11 2019/03/16 19:39:05 tom Exp $
****************************************************************************
- * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -36,7 +36,7 @@
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
<title>NCURSES &ndash; Manual Pages</title>
- <link rev="MADE" href="mailto:dickey@invisible-island.net">
+ <link rel="author" href="mailto:dickey@invisible-island.net">
<meta http-equiv="Content-Type" content=
"text/html; charset=us-ascii">
</head>
@@ -75,14 +75,26 @@
</ul>
</li>
+ <li>Scripts:
+
+ <ul>
+ <li><a href=
+ "adacurses6-config.1.html">adacurses*-config</a> &ndash;
+ helper script for AdaCurses libraries</li>
+
+ <li><a href="ncurses6-config.1.html">ncurses*-config</a>
+ &ndash; helper script for ncurses libraries</li>
+ </ul>
+ </li>
+
<li>Libraries:
<ul>
<li><a href="ncurses.3x.html">ncurses &ndash; CRT screen
handling and optimization package</a></li>
- <li><a href="panel.3x.html">panel- panel stack extension
- for curses</a></li>
+ <li><a href="panel.3x.html">panel &ndash; panel stack
+ extension for curses</a></li>
<li><a href="form.3x.html">form &ndash; curses extension
for programming forms</a></li>
@@ -101,6 +113,9 @@
<li><a href="term.5.html">term &ndash; format of compiled
term file.</a></li>
+ <li><a href="scr_dump.5.html">scr_dump &ndash; format of
+ curses screen dumps.</a></li>
+
<li><a href="term.7.html">term &ndash; conventions for
naming terminal types</a></li>
</ul>
diff --git a/doc/html/man/infocmp.1m.html b/doc/html/man/infocmp.1m.html
index fc15a2b9eeca..63c29e415f91 100644
--- a/doc/html/man/infocmp.1m.html
+++ b/doc/html/man/infocmp.1m.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,359 +27,383 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: infocmp.1m,v 1.53 2013/02/02 22:07:35 tom Exp @
+ * @Id: infocmp.1m,v 1.75 2019/07/20 18:42:11 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>infocmp 1m</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>infocmp 1m</H1>
-<HR>
+<H1 class="no-header">infocmp 1m</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>
+<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>infocmp</STRONG> - compare or print out <EM>terminfo</EM> descriptions
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>infocmp</STRONG> [<STRONG>-1CDEFGIKLTUVcdegilnpqrtux</STRONG>]
- [<STRONG>-v</STRONG> <EM>n</EM>] [<STRONG>-s</STRONG> <STRONG>d</STRONG>| <STRONG>i</STRONG>| <STRONG>l</STRONG>| <STRONG>c</STRONG>] [<STRONG>-R</STRONG> <STRONG>subset</STRONG>]
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <STRONG>infocmp</STRONG> [<STRONG>-1CDEFGIKLTUVWcdegilnpqrtux</STRONG>]
+ [<STRONG>-v</STRONG> <EM>n</EM>] [<STRONG>-s</STRONG> <STRONG>d</STRONG>| <STRONG>i</STRONG>| <STRONG>l</STRONG>| <STRONG>c</STRONG>] [<STRONG>-Q</STRONG> <EM>n</EM>] [<STRONG>-R</STRONG> <STRONG>subset</STRONG>]
[<STRONG>-w</STRONG> <EM>width</EM>] [<STRONG>-A</STRONG> <EM>directory</EM>] [<STRONG>-B</STRONG> <EM>directory</EM>]
[<EM>termname</EM>...]
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- <STRONG>infocmp</STRONG> can be used to compare a binary <STRONG>terminfo</STRONG> entry
- with other terminfo entries, rewrite a <STRONG>terminfo</STRONG> descrip-
- tion to take advantage of the <STRONG>use=</STRONG> terminfo field, or
- print out a <STRONG>terminfo</STRONG> description from the binary file
- (<STRONG>term</STRONG>) 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.
-
- <STRONG>Default</STRONG> <STRONG>Options</STRONG>
- If no options are specified and zero or one <EM>termnames</EM> are
- specified, the <STRONG>-I</STRONG> option will be assumed. If more than
- one <EM>termname</EM> is specified, the <STRONG>-d</STRONG> option will be assumed.
-
- <STRONG>Comparison</STRONG> <STRONG>Options</STRONG> <STRONG>[-d]</STRONG> <STRONG>[-c]</STRONG> <STRONG>[-n]</STRONG>
- <STRONG>infocmp</STRONG> compares the <STRONG>terminfo</STRONG> description of the first
- terminal <EM>termname</EM> with each of the descriptions given by
- the entries for the other terminal's <EM>termnames</EM>. If a
- capability is defined for only one of the terminals, the
- value returned will depend on the type of the capability:
- <STRONG>F</STRONG> for boolean variables, <STRONG>-1</STRONG> for integer variables, and
- <STRONG>NULL</STRONG> for string variables.
-
- The <STRONG>-d</STRONG> 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 <STRONG>-c</STRONG> option produces a list of each capability that is
- common between two or more entries. Capabilities that are
- not set are ignored. This option can be used as a quick
- check to see if the <STRONG>-u</STRONG> option is worth using.
-
- The <STRONG>-n</STRONG> option produces a list of each capability that is
- in none of the given entries. If no <EM>termnames</EM> are given,
- the environment variable <STRONG>TERM</STRONG> will be used for both of the
- <EM>termnames</EM>. This can be used as a quick check to see if
- anything was left out of a description.
-
- <STRONG>Source</STRONG> <STRONG>Listing</STRONG> <STRONG>Options</STRONG> <STRONG>[-I]</STRONG> <STRONG>[-L]</STRONG> <STRONG>[-C]</STRONG> <STRONG>[-r]</STRONG>
- The <STRONG>-I</STRONG>, <STRONG>-L</STRONG>, and <STRONG>-C</STRONG> options will produce a source listing
- for each terminal named.
-
- <STRONG>-I</STRONG> use the <STRONG>terminfo</STRONG> names
- <STRONG>-L</STRONG> use the long C variable name listed in &lt;<STRONG>term.h</STRONG>&gt;
- <STRONG>-C</STRONG> use the <STRONG>termcap</STRONG> names
- <STRONG>-r</STRONG> when using <STRONG>-C</STRONG>, put out all capabilities in <STRONG>termcap</STRONG> form
- <STRONG>-K</STRONG> modifies the <STRONG>-C</STRONG> option, improving BSD-compatibility.
-
- If no <EM>termnames</EM> are given, the environment variable <STRONG>TERM</STRONG>
- will be used for the terminal name.
-
- The source produced by the <STRONG>-C</STRONG> option may be used directly
- as a <STRONG>termcap</STRONG> entry, but not all parameterized strings can
- be changed to the <STRONG>termcap</STRONG> format. <STRONG>infocmp</STRONG> 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.
-
- For best results when converting to <STRONG>termcap</STRONG> format, you
- should use both <STRONG>-C</STRONG> and <STRONG>-r</STRONG>. Normally a termcap description
- is limited to 1023 bytes. infocmp trims away less essen-
- tial parts to make it fit. If you are converting to one
- of the (rare) termcap implementations which accept an
- unlimited size of termcap, you may want to add the <STRONG>-T</STRONG>
- option. More often however, you must help the termcap
- implementation, and trim excess whitespace (use the <STRONG>-0</STRONG>
- option for that).
-
- All padding information for strings will be collected
- together and placed at the beginning of the string where
- <STRONG>termcap</STRONG> expects it. Mandatory padding (padding informa-
- tion with a trailing '/') will become optional.
-
- All <STRONG>termcap</STRONG> variables no longer supported by <STRONG>terminfo</STRONG>, but
- which are derivable from other <STRONG>terminfo</STRONG> variables, will be
- output. Not all <STRONG>terminfo</STRONG> capabilities will be translated;
- only those variables which were part of <STRONG>termcap</STRONG> will nor-
- mally be output. Specifying the <STRONG>-r</STRONG> option will take off
- this restriction, allowing all capabilities to be output
- in <EM>termcap</EM> form. Normally you would use both the <STRONG>-C</STRONG> and
- <STRONG>-r</STRONG> options. The actual format used incorporates some
- improvements for escaped characters from terminfo format.
- For a stricter BSD-compatible translation, use the <STRONG>-K</STRONG>
- option rather than <STRONG>-C</STRONG>.
-
- Note that because padding is collected to the beginning of
- the capability, not all capabilities are output. Manda-
- tory padding is not supported. Because <STRONG>termcap</STRONG> strings
- are not as flexible, it is not always possible to convert
- a <STRONG>terminfo</STRONG> string capability into an equivalent <STRONG>termcap</STRONG>
- format. A subsequent conversion of the <STRONG>termcap</STRONG> file back
- into <STRONG>terminfo</STRONG> format will not necessarily reproduce the
- original <STRONG>terminfo</STRONG> source.
-
- Some common <STRONG>terminfo</STRONG> parameter sequences, their <STRONG>termcap</STRONG>
- equivalents, and some terminal types which commonly have
- such sequences, are:
-
- <STRONG>terminfo</STRONG> <STRONG>termcap</STRONG> Representative Terminals
- ---------------------------------------------------------------
- <STRONG>%p1%c</STRONG> <STRONG>%.</STRONG> adm
- <STRONG>%p1%d</STRONG> <STRONG>%d</STRONG> hp, ANSI standard, vt100
- <STRONG>%p1%'x'%+%c</STRONG> <STRONG>%+x</STRONG> concept
- <STRONG>%i</STRONG> <STRONG>%i</STRONG>q ANSI standard, vt100
- <STRONG>%p1%?%'x'%&gt;%t%p1%'y'%+%;</STRONG> <STRONG>%&gt;xy</STRONG> concept
- <STRONG>%p2</STRONG> is printed before <STRONG>%p1</STRONG> <STRONG>%r</STRONG> hp
-
- <STRONG>Use=</STRONG> <STRONG>Option</STRONG> <STRONG>[-u]</STRONG>
- The <STRONG>-u</STRONG> option produces a <STRONG>terminfo</STRONG> source description of
- the first terminal <EM>termname</EM> which is relative to the sum
- of the descriptions given by the entries for the other
- terminals <EM>termnames</EM>. It does this by analyzing the dif-
- ferences between the first <EM>termname</EM> and the other
- <EM>termnames</EM> and producing a description with <STRONG>use=</STRONG> 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 <STRONG>infocmp</STRONG> 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 <EM>termname</EM>, but one of the other
- <EM>termname</EM> entries contains a value for it. A capability's
- value gets printed if the value in the first <EM>termname</EM> is
- not found in any of the other <EM>termname</EM> entries, or if the
- first of the other <EM>termname</EM> entries that has this capabil-
- ity gives a different value for the capability than that
- in the first <EM>termname</EM>.
-
- The order of the other <EM>termname</EM> entries is significant.
- Since the terminfo compiler <STRONG>tic</STRONG> does a left-to-right scan
- of the capabilities, specifying two <STRONG>use=</STRONG> 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. <STRONG>infocmp</STRONG> will flag any such incon-
- sistencies between the other <EM>termname</EM> entries as they are
- found.
-
- Alternatively, specifying a capability <EM>after</EM> a <STRONG>use=</STRONG> entry
- that contains that capability will cause the second speci-
- fication to be ignored. Using <STRONG>infocmp</STRONG> to recreate a
- description can be a useful check to make sure that every-
- thing was specified correctly in the original source
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ <STRONG>infocmp</STRONG> can be used to compare a binary <STRONG>terminfo</STRONG> entry with other ter-
+ minfo entries, rewrite a <STRONG>terminfo</STRONG> description to take advantage of the
+ <STRONG>use=</STRONG> terminfo field, or print out a <STRONG>terminfo</STRONG> description from the
+ binary file (<STRONG>term</STRONG>) 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.
+
+
+</PRE><H3><a name="h3-Default-Options">Default Options</a></H3><PRE>
+ If no options are specified and zero or one <EM>termnames</EM> are specified,
+ the <STRONG>-I</STRONG> option will be assumed. If more than one <EM>termname</EM> is specified,
+ the <STRONG>-d</STRONG> option will be assumed.
+
+
+</PRE><H3><a name="h3-Comparison-Options-_-d_-_-c_-_-n_">Comparison Options [-d] [-c] [-n]</a></H3><PRE>
+ <STRONG>infocmp</STRONG> compares the <STRONG>terminfo</STRONG> description of the first terminal
+ <EM>termname</EM> with each of the descriptions given by the entries for the
+ other terminal's <EM>termnames</EM>. If a capability is defined for only one of
+ the terminals, the value returned depends on the type of the capabil-
+ ity:
+
+ <STRONG>o</STRONG> <STRONG>F</STRONG> for missing boolean variables
+
+ <STRONG>o</STRONG> <STRONG>NULL</STRONG> for missing integer or string variables
+
+ Use the <STRONG>-q</STRONG> option to show the distinction between <EM>absent</EM> and <EM>cancelled</EM>
+ capabilities.
+
+ These options produce a list which you can use to compare two or more
+ terminal descriptions:
+
+ <STRONG>-d</STRONG> produces a list of each capability that is <EM>different</EM> between two
+ entries. Each item in the list shows ":" after the capability
+ name, followed by the capability values, separated by a comma.
+
+ <STRONG>-c</STRONG> produces a list of each capability that is <EM>common</EM> between two or
+ more entries. Missing capabilities are ignored. Each item in the
+ list shows "=" after the capability name, followed by the capabil-
+ ity value.
+
+ The <STRONG>-u</STRONG> option provides a related output, showing the first termi-
+ nal description rewritten to use the second as a building block
+ via the "use=" clause.
+
+ <STRONG>-n</STRONG> produces a list of each capability that is in <EM>none</EM> of the given
+ entries. Each item in the list shows "!" before the capability
+ name.
+
+ Normally only the conventional capabilities are shown. Use the <STRONG>-x</STRONG>
+ option to add the BSD-compatibility capabilities (names prefixed
+ with "OT").
+
+ If no <EM>termnames</EM> are given, <STRONG>infocmp</STRONG> uses the environment variable
+ <STRONG>TERM</STRONG> for each of the <EM>termnames</EM>.
+
+
+</PRE><H3><a name="h3-Source-Listing-Options-_-I_-_-L_-_-C_-_-r_">Source Listing Options [-I] [-L] [-C] [-r]</a></H3><PRE>
+ The <STRONG>-I</STRONG>, <STRONG>-L</STRONG>, and <STRONG>-C</STRONG> options will produce a source listing for each ter-
+ minal named.
+
+ <STRONG>-I</STRONG> use the <STRONG>terminfo</STRONG> names
+ <STRONG>-L</STRONG> use the long C variable name listed in &lt;<STRONG>term.h</STRONG>&gt;
+ <STRONG>-C</STRONG> use the <STRONG>termcap</STRONG> names
+ <STRONG>-r</STRONG> when using <STRONG>-C</STRONG>, put out all capabilities in <STRONG>termcap</STRONG> form
+ <STRONG>-K</STRONG> modifies the <STRONG>-C</STRONG> option, improving BSD-compatibility.
+
+ If no <EM>termnames</EM> are given, the environment variable <STRONG>TERM</STRONG> will be used
+ for the terminal name.
+
+ The source produced by the <STRONG>-C</STRONG> option may be used directly as a <STRONG>termcap</STRONG>
+ entry, but not all parameterized strings can be changed to the <STRONG>termcap</STRONG>
+ format. <STRONG>infocmp</STRONG> will attempt to convert most of the parameterized
+ information, and anything not converted will be plainly marked in the
+ output and commented out. These should be edited by hand.
+
+ For best results when converting to <STRONG>termcap</STRONG> format, you should use both
+ <STRONG>-C</STRONG> and <STRONG>-r</STRONG>. Normally a termcap description is limited to 1023 bytes.
+ <STRONG>infocmp</STRONG> trims away less essential parts to make it fit. If you are
+ converting to one of the (rare) termcap implementations which accept an
+ unlimited size of termcap, you may want to add the <STRONG>-T</STRONG> option. More
+ often however, you must help the termcap implementation, and trim
+ excess whitespace (use the <STRONG>-0</STRONG> option for that).
+
+ All padding information for strings will be collected together and
+ placed at the beginning of the string where <STRONG>termcap</STRONG> expects it. Manda-
+ tory padding (padding information with a trailing "/") will become
+ optional.
+
+ All <STRONG>termcap</STRONG> variables no longer supported by <STRONG>terminfo</STRONG>, but which are
+ derivable from other <STRONG>terminfo</STRONG> variables, will be output. Not all <STRONG>ter-</STRONG>
+ <STRONG>minfo</STRONG> capabilities will be translated; only those variables which were
+ part of <STRONG>termcap</STRONG> will normally be output. Specifying the <STRONG>-r</STRONG> option will
+ take off this restriction, allowing all capabilities to be output in
+ <EM>termcap</EM> form. Normally you would use both the <STRONG>-C</STRONG> and <STRONG>-r</STRONG> options. The
+ actual format used incorporates some improvements for escaped charac-
+ ters from terminfo format. For a stricter BSD-compatible translation,
+ use the <STRONG>-K</STRONG> option rather than <STRONG>-C</STRONG>.
+
+ Note that because padding is collected to the beginning of the capabil-
+ ity, not all capabilities are output. Mandatory padding is not sup-
+ ported. Because <STRONG>termcap</STRONG> strings are not as flexible, it is not always
+ possible to convert a <STRONG>terminfo</STRONG> string capability into an equivalent
+ <STRONG>termcap</STRONG> format. A subsequent conversion of the <STRONG>termcap</STRONG> file back into
+ <STRONG>terminfo</STRONG> format will not necessarily reproduce the original <STRONG>terminfo</STRONG>
+ source.
+
+ Some common <STRONG>terminfo</STRONG> parameter sequences, their <STRONG>termcap</STRONG> equivalents,
+ and some terminal types which commonly have such sequences, are:
+
+ <STRONG>terminfo</STRONG> <STRONG>termcap</STRONG> Representative Terminals
+ ---------------------------------------------------------------
+ <STRONG>%p1%c</STRONG> <STRONG>%.</STRONG> adm
+ <STRONG>%p1%d</STRONG> <STRONG>%d</STRONG> hp, ANSI standard, vt100
+ <STRONG>%p1%'x'%+%c</STRONG> <STRONG>%+x</STRONG> concept
+ <STRONG>%i</STRONG> <STRONG>%i</STRONG>q ANSI standard, vt100
+ <STRONG>%p1%?%'x'%&gt;%t%p1%'y'%+%;</STRONG> <STRONG>%&gt;xy</STRONG> concept
+ <STRONG>%p2</STRONG> is printed before <STRONG>%p1</STRONG> <STRONG>%r</STRONG> hp
+
+
+</PRE><H3><a name="h3-Use_-Option-_-u_">Use= Option [-u]</a></H3><PRE>
+ The <STRONG>-u</STRONG> option produces a <STRONG>terminfo</STRONG> source description of the first ter-
+ minal <EM>termname</EM> which is relative to the sum of the descriptions given
+ by the entries for the other terminals <EM>termnames</EM>. It does this by ana-
+ lyzing the differences between the first <EM>termname</EM> and the other
+ <EM>termnames</EM> and producing a description with <STRONG>use=</STRONG> 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 <STRONG>infocmp</STRONG> will show what
+ can be done to change one description to be relative to the other.
+
+ A capability will get printed with an at-sign (@) if it no longer
+ exists in the first <EM>termname</EM>, but one of the other <EM>termname</EM> entries
+ contains a value for it. A capability's value gets printed if the
+ value in the first <EM>termname</EM> is not found in any of the other <EM>termname</EM>
+ entries, or if the first of the other <EM>termname</EM> entries that has this
+ capability gives a different value for the capability than that in the
+ first <EM>termname</EM>.
+
+ The order of the other <EM>termname</EM> entries is significant. Since the ter-
+ minfo compiler <STRONG>tic</STRONG> does a left-to-right scan of the capabilities, spec-
+ ifying two <STRONG>use=</STRONG> entries that contain differing entries for the same
+ capabilities will produce different results depending on the order that
+ the entries are given in. <STRONG>infocmp</STRONG> will flag any such inconsistencies
+ between the other <EM>termname</EM> entries as they are found.
+
+ Alternatively, specifying a capability <EM>after</EM> a <STRONG>use=</STRONG> entry that contains
+ that capability will cause the second specification to be ignored.
+ Using <STRONG>infocmp</STRONG> to recreate a description can be a useful check to make
+ sure that everything 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 <STRONG>use=</STRONG> fields that are superfluous. <STRONG>infocmp</STRONG>
- will flag any other <EM>termname</EM> <EM>use=</EM> fields that were not
- needed.
+ Another error that does not cause incorrect compiled files, but will
+ slow down the compilation time, is specifying extra <STRONG>use=</STRONG> fields that
+ are superfluous. <STRONG>infocmp</STRONG> will flag any other <EM>termname</EM> <EM>use=</EM> fields that
+ were not needed.
<STRONG>Changing</STRONG> <STRONG>Databases</STRONG> <STRONG>[-A</STRONG> <EM>directory</EM>] [-B <EM>directory</EM>]
- Like other <STRONG>ncurses</STRONG> utilities, infocmp looks for the termi-
- nal descriptions in several places. You can use the <STRONG>TER-</STRONG>
- <STRONG>MINFO</STRONG> and <STRONG>TERMINFO_DIRS</STRONG> environment variables to override
- the compiled-in default list of places to search (see
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> for details).
+ Like other <STRONG>ncurses</STRONG> utilities, <STRONG>infocmp</STRONG> looks for the terminal descrip-
+ tions in several places. You can use the <STRONG>TERMINFO</STRONG> and <STRONG>TERMINFO_DIRS</STRONG>
+ environment variables to override the compiled-in default list of
+ places to search (see <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> for details).
- You can also use the options <STRONG>-A</STRONG> and <STRONG>-B</STRONG> to override the
- list of places to search when comparing terminal descrip-
- tions:
+ You can also use the options <STRONG>-A</STRONG> and <STRONG>-B</STRONG> to override the list of places
+ to search when comparing terminal descriptions:
<STRONG>o</STRONG> The <STRONG>-A</STRONG> option sets the location for the first <EM>termname</EM>
- <STRONG>o</STRONG> The <STRONG>-B</STRONG> option sets the location for the other
- <EM>termnames</EM>.
-
- Using these options, it is possible to compare descrip-
- tions for a terminal with the same name located in two
- different databases. For instance, you can use this fea-
- ture for comparing descriptions for the same terminal cre-
- ated by different people.
-
- <STRONG>Other</STRONG> <STRONG>Options</STRONG>
- <STRONG>-0</STRONG> causes the fields to be printed on one line, without
- wrapping.
-
- <STRONG>-1</STRONG> 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.
-
- <STRONG>-a</STRONG> tells <STRONG>infocmp</STRONG> to retain commented-out capabilities
- rather than discarding them. Capabilities are com-
- mented by prefixing them with a period.
-
- <STRONG>-D</STRONG> tells <STRONG>infocmp</STRONG> to print the database locations that it
- knows about, and exit.
-
- <STRONG>-E</STRONG> Dump the capabilities of the given terminal as
- tables, needed in the C initializer for a TERMTYPE
- structure (the terminal capability structure in the
- <STRONG>&lt;term.h&gt;</STRONG>). 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 <STRONG>-e</STRONG> and <STRONG>-E</STRONG>
- options was not needed; but support for extended
- names required making the arrays of terminal capabil-
- ities separate from the TERMTYPE structure.
-
- <STRONG>-e</STRONG> Dump the capabilities of the given terminal as a C
- initializer for a TERMTYPE structure (the terminal
- capability structure in the <STRONG>&lt;term.h&gt;</STRONG>). This option
- is useful for preparing versions of the curses
- library hardwired for a given terminal type.
-
- <STRONG>-F</STRONG> 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 <STRONG>-r</STRONG>.
-
- <STRONG>-f</STRONG> Display complex terminfo strings which contain
- if/then/else/endif expressions indented for readabil-
- ity.
-
- <STRONG>-G</STRONG> Display constant literals in decimal form rather than
- their character equivalents.
-
- <STRONG>-g</STRONG> Display constant character literals in quoted form
- rather than their decimal equivalents.
-
- <STRONG>-i</STRONG> Analyze the initialization (<STRONG>is1</STRONG>, <STRONG>is2</STRONG>, <STRONG>is3</STRONG>), and reset
- (<STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>), 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 descrip-
- tions. Here is a list of the DEC/ANSI special
- sequences recognized: i.
-
- Action Meaning
- -----------------------------------------
- RIS full reset
-
- SC save cursor
- RC restore cursor
- LL home-down
- RSR reset scroll region
- -----------------------------------------
- DECSTR soft reset (VT320)
- S7C1T 7-bit controls (VT220)
- -----------------------------------------
- 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
- -----------------------------------------
- ECMA[+-]AM keyboard action mode
- ECMA[+-]IRM insert replace mode
- ECMA[+-]SRM send receive mode
- ECMA[+-]LNM linefeed 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}).
+ <STRONG>o</STRONG> The <STRONG>-B</STRONG> option sets the location for the other <EM>termnames</EM>.
+
+ Using these options, it is possible to compare descriptions for a ter-
+ minal with the same name located in two different databases. For
+ instance, you can use this feature for comparing descriptions for the
+ same terminal created by different people.
+
+
+</PRE><H3><a name="h3-Other-Options">Other Options</a></H3><PRE>
+ <STRONG>-0</STRONG> causes the fields to be printed on one line, without wrapping.
+
+ <STRONG>-1</STRONG> 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.
+
+ <STRONG>-a</STRONG> tells <STRONG>infocmp</STRONG> to retain commented-out capabilities rather than
+ discarding them. Capabilities are commented by prefixing them
+ with a period.
+
+ <STRONG>-D</STRONG> tells <STRONG>infocmp</STRONG> to print the database locations that it knows about,
+ and exit.
+
+ <STRONG>-E</STRONG> Dump the capabilities of the given terminal as tables, needed in
+ the C initializer for a TERMTYPE structure (the terminal capabil-
+ ity structure in the <STRONG>&lt;term.h&gt;</STRONG>). This option is useful for prepar-
+ ing versions of the curses library hardwired for a given terminal
+ type. The tables are all declared static, and are named according
+ to the type and the name of the corresponding terminal entry.
+
+ Before ncurses 5.0, the split between the <STRONG>-e</STRONG> and <STRONG>-E</STRONG> options was
+ not needed; but support for extended names required making the
+ arrays of terminal capabilities separate from the TERMTYPE struc-
+ ture.
+
+ <STRONG>-e</STRONG> Dump the capabilities of the given terminal as a C initializer for
+ a TERMTYPE structure (the terminal capability structure in the
+ <STRONG>&lt;term.h&gt;</STRONG>). This option is useful for preparing versions of the
+ curses library hardwired for a given terminal type.
+
+ <STRONG>-F</STRONG> compare terminfo files. This assumes that two following 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 differences,
+ but resolution can be forced by also specifying <STRONG>-r</STRONG>.
+
+ <STRONG>-f</STRONG> Display complex terminfo strings which contain if/then/else/endif
+ expressions indented for readability.
+
+ <STRONG>-G</STRONG> Display constant literals in decimal form rather than their char-
+ acter equivalents.
+
+ <STRONG>-g</STRONG> Display constant character literals in quoted form rather than
+ their decimal equivalents.
+
+ <STRONG>-i</STRONG> Analyze the initialization (<STRONG>is1</STRONG>, <STRONG>is2</STRONG>, <STRONG>is3</STRONG>), and reset (<STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>,
+ <STRONG>rs3</STRONG>), strings in the entry, as well as those used for start-
+ ing/stopping cursor-positioning mode (<STRONG>smcup</STRONG>, <STRONG>rmcup</STRONG>) as well as
+ starting/stopping keymap mode (<STRONG>smkx</STRONG>, <STRONG>rmkx</STRONG>).
+
+ 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 special 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 recognized 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
+ -----------------------------------------
+ DECSTR soft reset (VT320)
+ S7C1T 7-bit controls (VT220)
+ -----------------------------------------
+
+ 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
+ -----------------------------------------
+ ECMA[+-]AM keyboard action mode
+ ECMA[+-]IRM insert replace mode
+ ECMA[+-]SRM send receive mode
+ ECMA[+-]LNM linefeed 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
+
+ <STRONG>o</STRONG> "+" (turn on) or
+
+ <STRONG>o</STRONG> "-" (turn off).
+
+ An SGR0 designates an empty highlight sequence (equivalent to
+ {SGR:NORMAL}).
<STRONG>-l</STRONG> Set output format to terminfo.
<STRONG>-p</STRONG> Ignore padding specifications when comparing strings.
- <STRONG>-q</STRONG> Make the comparison listing shorter by omitting sub-
- headings, and using "-" for absent capabilities, "@"
- for canceled rather than "NULL".
+ <STRONG>-Q</STRONG> <EM>n</EM> Rather than show source in terminfo (text) format, print the com-
+ piled (binary) format in hexadecimal or base64 form, depending on
+ the option's value:
+
+ 1 hexadecimal
+
+ 2 base64
+
+ 3 hexadecimal and base64
+
+ For example, this prints the compiled terminfo value as a string
+ which could be assigned to the <STRONG>TERMINFO</STRONG> environment variable:
+
+ infocmp -0 -q -Q2
+
+ <STRONG>-q</STRONG> This makes the output a little shorter:
+
+ <STRONG>o</STRONG> Make the comparison listing shorter by omitting subheadings,
+ and using "-" for absent capabilities, "@" for canceled rather
+ than "NULL".
+
+ <STRONG>o</STRONG> However, show differences between absent and cancelled capa-
+ bilities.
+
+ <STRONG>o</STRONG> Omit the "Reconstructed from" comment for source listings.
<STRONG>-R</STRONG><EM>subset</EM>
- 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 <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- for details. You can also choose the subset "BSD"
- which selects only capabilities with termcap equiva-
- lents recognized by 4.4BSD.
+ 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 incompatible
+ with SVr4/XSI.
+
+ <STRONG>o</STRONG> Available terminfo subsets are "SVr1", "Ultrix", "HP", and
+ "AIX"; see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for details.
+
+ <STRONG>o</STRONG> You can also choose the subset "BSD" which selects only capa-
+ bilities with termcap equivalents recognized by 4.4BSD. The
+ <STRONG>-C</STRONG> option sets the "BSD" subset as a side-effect.
+
+ <STRONG>o</STRONG> If you select any other value for <STRONG>-R</STRONG>, it is the same as no
+ subset, i.e., all capabilities are used. The <STRONG>-I</STRONG> option like-
+ wise selects no subset as a side-effect.
<STRONG>-s</STRONG> <EM>[d|i|l|c]</EM>
- The <STRONG>-s</STRONG> option sorts the fields within each type
- according to the argument below:
+ The <STRONG>-s</STRONG> option sorts the fields within each type according to the
+ argument below:
- <STRONG>d</STRONG> leave fields in the order that they are stored
- in the <EM>terminfo</EM> database.
+ <STRONG>d</STRONG> leave fields in the order that they are stored in the <EM>ter-</EM>
+ <EM>minfo</EM> database.
<STRONG>i</STRONG> sort by <EM>terminfo</EM> name.
@@ -388,89 +411,139 @@
<STRONG>c</STRONG> sort by the <EM>termcap</EM> name.
- If the <STRONG>-s</STRONG> option is not given, the fields printed out
- will be sorted alphabetically by the <STRONG>terminfo</STRONG> name
- within each type, except in the case of the <STRONG>-C</STRONG> or the
- <STRONG>-L</STRONG> options, which cause the sorting to be done by the
- <STRONG>termcap</STRONG> name or the long C variable name, respec-
- tively.
+ If the <STRONG>-s</STRONG> option is not given, the fields printed out will be
+ sorted alphabetically by the <STRONG>terminfo</STRONG> name within each type,
+ except in the case of the <STRONG>-C</STRONG> or the <STRONG>-L</STRONG> options, which cause the
+ sorting to be done by the <STRONG>termcap</STRONG> name or the long C variable
+ name, respectively.
+
+ <STRONG>-T</STRONG> 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 ter-
+ minfo).
- <STRONG>-T</STRONG> 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).
+ <STRONG>-t</STRONG> tells <STRONG>tic</STRONG> to discard commented-out capabilities. Normally when
+ translating from terminfo to termcap, untranslatable capabilities
+ are commented-out.
- <STRONG>-t</STRONG> tells <STRONG>tic</STRONG> to discard commented-out capabilities.
- Normally when translating from terminfo to termcap,
- untranslatable capabilities are commented-out.
+ <STRONG>-U</STRONG> tells <STRONG>infocmp</STRONG> to not post-process the data after parsing the
+ source file. This feature helps when comparing the actual con-
+ tents of two source files, since it excludes the inferences that
+ <STRONG>infocmp</STRONG> makes to fill in missing data.
- <STRONG>-U</STRONG> tells <STRONG>infocmp</STRONG> to not post-process the data after
- parsing the source file. This feature helps when
- comparing the actual contents of two source files,
- since it excludes the inferences that <STRONG>infocmp</STRONG> makes
- to fill in missing data.
+ <STRONG>-V</STRONG> reports the version of ncurses which was used in this program, and
+ exits.
- <STRONG>-V</STRONG> reports the version of ncurses which was used in this
- program, and exits.
+ <STRONG>-v</STRONG> <EM>n</EM> prints out tracing information on standard error as the program
+ runs.
- <STRONG>-v</STRONG> <EM>n</EM> prints out tracing information on standard error as
- the program runs. Higher values of n induce greater
- verbosity.
+ The optional parameter <EM>n</EM> is a number from 1 to 10, inclusive,
+ indicating the desired level of detail of information. If ncurses
+ is built without tracing support, the optional parameter is
+ ignored.
+
+ <STRONG>-W</STRONG> By itself, the <STRONG>-w</STRONG> option will not force long strings to be
+ wrapped. Use the <STRONG>-W</STRONG> option to do this.
<STRONG>-w</STRONG> <EM>width</EM>
changes the output to <EM>width</EM> characters.
- <STRONG>-x</STRONG> print information for user-defined capabilities.
- These are extensions to the terminfo repertoire which
- can be loaded using the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>.
+ <STRONG>-x</STRONG> print information for user-defined capabilities (see <STRONG>user_caps(5)</STRONG>.
+ These are extensions to the terminfo repertoire which can be
+ loaded using the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>.
-</PRE>
-<H2>FILES</H2><PRE>
- /usr/share/terminfo Compiled terminal description data-
- base.
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+ /usr/share/terminfo Compiled terminal description database.
-</PRE>
-<H2>EXTENSIONS</H2><PRE>
- The <STRONG>-0</STRONG>, <STRONG>-1</STRONG>, <STRONG>-E</STRONG>, <STRONG>-F</STRONG>, <STRONG>-G</STRONG>, <STRONG>-R</STRONG>, <STRONG>-T</STRONG>, <STRONG>-V</STRONG>, <STRONG>-a</STRONG>, <STRONG>-e</STRONG>, <STRONG>-f</STRONG>, <STRONG>-g</STRONG>, <STRONG>-i</STRONG>,
- <STRONG>-l</STRONG>, <STRONG>-p</STRONG>, <STRONG>-q</STRONG> and <STRONG>-t</STRONG> options are not supported in SVr4
- curses.
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+ Although System V Release 2 provided a terminfo library, it had no doc-
+ umented tool for decompiling the terminal descriptions. Tony Hansen
+ (AT&amp;T) wrote the first <STRONG>infocmp</STRONG> in early 1984, for System V Release 3.
- The <STRONG>-r</STRONG> 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 <STRONG>-r</STRONG>
- <STRONG>-RBSD</STRONG>.
+ Eric Raymond used the AT&amp;T documentation in 1995 to provide an equiva-
+ lent <STRONG>infocmp</STRONG> for ncurses. In addition, he added a few new features
+ such as:
+ <STRONG>o</STRONG> the <STRONG>-e</STRONG> option, to support <EM>fallback</EM> (compiled-in) terminal descrip-
+ tions
-</PRE>
-<H2>BUGS</H2><PRE>
+ <STRONG>o</STRONG> the <STRONG>-i</STRONG> option, to help with analysis
+
+ Later, Thomas Dickey added the <STRONG>-x</STRONG> (user-defined capabilities) option,
+ and the <STRONG>-E</STRONG> option to support fallback entries with user-defined capa-
+ bilities.
+
+ For a complete list, see the <EM>EXTENSIONS</EM> section.
+
+ In 2010, Roy Marples provided an <STRONG>infocmp</STRONG> program for NetBSD. It is
+ less capable than the SVr4 or ncurses versions (e.g., it lacks the
+ sorting options documented in X/Open), but does include the <STRONG>-x</STRONG> option
+ adapted from ncurses.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ X/Open Curses, Issue 7 (2009) provides a description of <STRONG>infocmp</STRONG>. It
+ does not mention the options used for converting to termcap format.
+
+
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+ The <STRONG>-0</STRONG>, <STRONG>-1</STRONG>, <STRONG>-E</STRONG>, <STRONG>-F</STRONG>, <STRONG>-G</STRONG>, <STRONG>-Q</STRONG>, <STRONG>-R</STRONG>, <STRONG>-T</STRONG>, <STRONG>-V</STRONG>, <STRONG>-a</STRONG>, <STRONG>-e</STRONG>, <STRONG>-f</STRONG>, <STRONG>-g</STRONG>, <STRONG>-i</STRONG>, <STRONG>-l</STRONG>, <STRONG>-p</STRONG>, <STRONG>-q</STRONG>
+ and <STRONG>-t</STRONG> options are not supported in SVr4 curses.
+
+ SVr4 infocmp does not distinguish between absent and cancelled capabil-
+ ities. Also, it shows missing integer capabilities as <STRONG>-1</STRONG> (the internal
+ value used to represent missing integers). This implementation shows
+ those as "NULL", for consistency with missing strings.
+
+ The <STRONG>-r</STRONG> 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 <STRONG>-r</STRONG> <STRONG>-RBSD</STRONG>.
+
+
+</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
The <STRONG>-F</STRONG> option of <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> should be a <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG> mode.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>,
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG>ter-</STRONG>
+ <STRONG><A HREF="terminfo.5.html">minfo(5)</A></STRONG>. <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>.
- http://invisible-island.net/ncurses/tctest.html
+ https://invisible-island.net/ncurses/tctest.html
- This describes <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
-</PRE>
-<H2>AUTHOR</H2><PRE>
+</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and
Thomas E. Dickey &lt;dickey@invisible-island.net&gt;
- <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>
+ <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Default-Options">Default Options</a></li>
+<li><a href="#h3-Comparison-Options-_-d_-_-c_-_-n_">Comparison Options [-d] [-c] [-n]</a></li>
+<li><a href="#h3-Source-Listing-Options-_-I_-_-L_-_-C_-_-r_">Source Listing Options [-I] [-L] [-C] [-r]</a></li>
+<li><a href="#h3-Use_-Option-_-u_">Use= Option [-u]</a></li>
+<li><a href="#h3-Other-Options">Other Options</a></li>
+</ul>
+</li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-BUGS">BUGS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/infotocap.1m.html b/doc/html/man/infotocap.1m.html
index 247f85eb4f17..882703fa9ff2 100644
--- a/doc/html/man/infotocap.1m.html
+++ b/doc/html/man/infotocap.1m.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1999-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,88 +27,91 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: infotocap.1m,v 1.11 2010/12/04 18:38:55 tom Exp @
+ * @Id: infotocap.1m,v 1.15 2019/10/12 21:16:00 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>infotocap 1m</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>infotocap 1m</H1>
-<HR>
+<H1 class="no-header">infotocap 1m</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG> <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>
+<STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG> <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>infotocap</STRONG> - convert a <EM>terminfo</EM> description into a <EM>termcap</EM>
- description
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>infotocap</STRONG> - convert a <EM>terminfo</EM> description into a <EM>termcap</EM> description
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>infotocap</STRONG> [<STRONG>-v</STRONG><EM>n</EM> <EM>width</EM>] [<STRONG>-V</STRONG>] [<STRONG>-1</STRONG>] [<STRONG>-w</STRONG> <EM>width</EM>] <EM>file</EM> . . .
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <STRONG>infotocap</STRONG> [<STRONG>-v</STRONG><EM>n</EM> <EM>width</EM>] [<STRONG>-V</STRONG>] [<STRONG>-1</STRONG>] [<STRONG>-w</STRONG> <EM>width</EM>] <EM>file</EM> ...
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- <STRONG>infotocap</STRONG> looks in each given text <EM>file</EM> for <STRONG>terminfo</STRONG>
- descriptions. For each terminfo description found, an
- equivalent <STRONG>termcap</STRONG> description is written to standard out-
- put. Terminfo <STRONG>use</STRONG> capabilities are translated directly to
- termcap <STRONG>tc</STRONG> capabilities.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ <STRONG>infotocap</STRONG> looks in each given text <EM>file</EM> for <STRONG>terminfo</STRONG> descriptions. For
+ each terminfo description found, an equivalent <STRONG>termcap</STRONG> description is
+ written to standard output. Terminfo <STRONG>use</STRONG> capabilities are translated
+ directly to termcap <STRONG>tc</STRONG> capabilities.
- <STRONG>-v</STRONG> print out tracing information on standard error as
- the program runs.
+ <STRONG>-v</STRONG> print out tracing information on standard error as the program
+ runs.
- <STRONG>-V</STRONG> print out the version of the program in use on stan-
- dard error and exit.
+ <STRONG>-V</STRONG> print out the version of the program in use on standard error and
+ exit.
- <STRONG>-1</STRONG> 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.
+ <STRONG>-1</STRONG> 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.
<STRONG>-w</STRONG> change the output to <EM>width</EM> characters.
-</PRE>
-<H2>FILES</H2><PRE>
- /usr/share/terminfo Compiled terminal description data-
- base.
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+ /usr/share/terminfo Compiled terminal description database.
-</PRE>
-<H2>NOTES</H2><PRE>
- This utility is actually a link to <EM>tic</EM>, running in <EM>-C</EM>
- mode. You can use other <EM>tic</EM> options such as <STRONG>-f</STRONG> and <STRONG>-x</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ This utility is actually a link to <STRONG>tic</STRONG>, running in <EM>-C</EM> mode. You can
+ use other <STRONG>tic</STRONG> options such as <STRONG>-f</STRONG> and <STRONG>-x</STRONG>.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ None of X/Open Curses, Issue 7 (2009), SVr4 or NetBSD document this
+ application.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
-</PRE>
-<H2>AUTHOR</H2><PRE>
+</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and
Thomas E. Dickey &lt;dickey@invisible-island.net&gt;
- <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>
+ <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/key_defined.3x.html b/doc/html/man/key_defined.3x.html
index e726ece694f3..7de895abe73c 100644
--- a/doc/html/man/key_defined.3x.html
+++ b/doc/html/man/key_defined.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2003-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2003-2010,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,76 +27,73 @@
* authorization. *
****************************************************************************
* Author: Thomas E. Dickey 2003
- * @Id: key_defined.3x,v 1.6 2010/12/04 18:40:45 tom Exp @
+ * @Id: key_defined.3x,v 1.8 2018/07/28 22:08:59 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>key_defined 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>key_defined 3x</H1>
-<HR>
+<H1 class="no-header">key_defined 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG> <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>
+<STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG> <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>key_defined</STRONG> - check if a keycode is defined
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>key_defined(const</STRONG> <STRONG>char</STRONG> <STRONG>*definition);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- This is an extension to the curses library. It permits an
- application to determine if a string is currently bound to
- any keycode.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ This is an extension to the curses library. It permits an application
+ to determine if a string is currently bound to any keycode.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- If the string is bound to a keycode, its value (greater
- than zero) is returned. If no keycode is bound, zero is
- returned. If the string conflicts with longer strings
- which are bound to keys, -1 is returned.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ If the string is bound to a keycode, its value (greater than zero) is
+ returned. If no keycode is bound, zero is returned. If the string
+ conflicts with longer strings which are bound to keys, -1 is returned.
-</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><a name="h2-PORTABILITY">PORTABILITY</a></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 conditioned using NCURSES_VERSION.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>.
-</PRE>
-<H2>AUTHOR</H2><PRE>
+</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
Thomas Dickey.
- <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>
+ <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/keybound.3x.html b/doc/html/man/keybound.3x.html
index 8275428587c2..bebbadd4405e 100644
--- a/doc/html/man/keybound.3x.html
+++ b/doc/html/man/keybound.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1999-2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2010,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,78 +27,76 @@
* authorization. *
****************************************************************************
* Author: Thomas E. Dickey 1999
- * @Id: keybound.3x,v 1.8 2010/12/04 18:49:20 tom Exp @
+ * @Id: keybound.3x,v 1.9 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>keybound 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>keybound 3x</H1>
-<HR>
+<H1 class="no-header">keybound 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG> <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>
+<STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG> <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>keybound</STRONG> - return definition of keycode
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>keybound(int</STRONG> <STRONG>keycode,</STRONG> <STRONG>int</STRONG> <STRONG>count);</STRONG>
-</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><a name="h2-DESCRIPTION">DESCRIPTION</a></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 <EM>keycode</EM> parameter must be greater than zero, else NULL
- is returned. If it does not correspond to a defined key,
- then NULL is returned. The <EM>count</EM> parameter is used to
- allow the application to iterate through multiple defini-
- tions, counting from zero. When successful, the function
- returns a string which must be freed by the caller.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The <EM>keycode</EM> parameter must be greater than zero, else NULL is returned.
+ If it does not correspond to a defined key, then NULL is returned. The
+ <EM>count</EM> parameter is used to allow the application to iterate through
+ multiple definitions, counting from zero. When successful, the func-
+ tion 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><a name="h2-PORTABILITY">PORTABILITY</a></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 conditioned using NCURSES_VERSION.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>.
-</PRE>
-<H2>AUTHOR</H2><PRE>
+</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
Thomas Dickey.
- <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>
+ <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/keyok.3x.html b/doc/html/man/keyok.3x.html
index ce866d4c4d39..afa6514f3289 100644
--- a/doc/html/man/keyok.3x.html
+++ b/doc/html/man/keyok.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,78 +27,75 @@
* authorization. *
****************************************************************************
* Author: Thomas E. Dickey 1997
- * @Id: keyok.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
+ * @Id: keyok.3x,v 1.13 2018/07/28 21:34:56 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>keyok 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>keyok 3x</H1>
-<HR>
+<H1 class="no-header">keyok 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG> <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>
+<STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG> <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>keyok</STRONG> - enable or disable a keycode
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>keyok(int</STRONG> <STRONG>keycode,</STRONG> <STRONG>bool</STRONG> <STRONG>enable);</STRONG>
-</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
- have been disabled can be re-enabled.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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 have been disabled can be re-enabled.
-</PRE>
-<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 the key must have been disabled, and vice versa.
- Otherwise, the function returns OK.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The keycode must be greater than zero, else <STRONG>ERR</STRONG> is returned. If it
+ does not correspond to a defined key, then <STRONG>ERR</STRONG> is returned. If the
+ <EM>enable</EM> parameter is true, then the key must have been disabled, and
+ vice versa. Otherwise, the function returns <STRONG>OK</STRONG>.
-</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><a name="h2-PORTABILITY">PORTABILITY</a></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 conditioned using NCURSES_VERSION.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>.
-</PRE>
-<H2>AUTHOR</H2><PRE>
+</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
Thomas Dickey.
- <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>
+ <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/legacy_coding.3x.html b/doc/html/man/legacy_coding.3x.html
index 22cb734636d2..bf64f79526c3 100644
--- a/doc/html/man/legacy_coding.3x.html
+++ b/doc/html/man/legacy_coding.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2005-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2005-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,91 +27,88 @@
* authorization. *
****************************************************************************
* Author: Thomas E. Dickey
- * @Id: legacy_coding.3x,v 1.4 2010/12/04 18:49:20 tom Exp @
+ * @Id: legacy_coding.3x,v 1.6 2017/03/15 08:14:25 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>legacy_coding 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>legacy_coding 3x</H1>
-<HR>
+<H1 class="no-header">legacy_coding 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG> <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>
+<STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG> <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>use_legacy_coding</STRONG> - use terminal's default colors
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>use_legacy_coding</STRONG> - override locale-encoding checks
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>use_legacy_coding(int</STRONG> <STRONG>level);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <EM>use</EM><STRONG>_</STRONG><EM>legacy</EM><STRONG>_</STRONG><EM>coding()</EM> function is an extension to the
- curses library. It allows the caller to change the result
- of <STRONG>unctrl</STRONG>, and suppress related checks within the library
- that would normally cause nonprinting characters to be
- rendered in visible form. This affects only 8-bit charac-
- ters.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <STRONG>use_legacy_coding</STRONG> function is an extension to the curses library.
+ It allows the caller to change the result of <STRONG>unctrl</STRONG>, and suppress
+ related checks within the library that would normally cause nonprinting
+ characters to be rendered in visible form. This affects only 8-bit
+ characters.
The <EM>level</EM> parameter controls the result:
- 0 the library functions normally, rendering non-
- printing characters as described in <STRONG>unctrl</STRONG>.
+ 0 the library functions normally, rendering nonprinting char-
+ acters as described in <STRONG>unctrl</STRONG>.
- 1 the library ignores <STRONG>isprintf</STRONG> for codes in the
- range 160-255.
+ 1 the library ignores <STRONG>isprintf</STRONG> for codes in the range
+ 160-255.
- 2 the library ignores <STRONG>isprintf</STRONG> for codes in the
- range 128-255. It also modifies the output of
- <STRONG>unctrl</STRONG>, showing codes in the range 128-159 as
- is.
+ 2 the library ignores <STRONG>isprintf</STRONG> for codes in the range
+ 128-255. It also modifies the output of <STRONG>unctrl</STRONG>, showing
+ codes in the range 128-159 as is.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- If the screen has not been initialized, or the <EM>level</EM>
- parameter is out of range, the function returns <STRONG>ERR</STRONG>. Oth-
- erwise, it returns the previous level: <STRONG>0</STRONG>, <STRONG>1</STRONG> or <STRONG>2</STRONG>.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ If the screen has not been initialized, or the <EM>level</EM> parameter is out
+ of range, the function returns <STRONG>ERR</STRONG>. Otherwise, it returns the previous
+ level: <STRONG>0</STRONG>, <STRONG>1</STRONG> or <STRONG>2</STRONG>.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- This routine is specific to ncurses. It was not supported
- on Version 7, BSD or System V implementations. It is rec-
- ommended that any code depending on ncurses extensions be
- conditioned using NCURSES_VERSION.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ This routine is specific to ncurses. It was not supported on Version
+ 7, BSD or System V implementations. It is recommended that any code
+ depending on ncurses extensions be conditioned using NCURSES_VERSION.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG>unctrl</STRONG>.
-</PRE>
-<H2>AUTHOR</H2><PRE>
+</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
Thomas Dickey (to support lynx's font-switching feature).
- <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>
+ <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu.3x.html b/doc/html/man/menu.3x.html
index c974468d9a4c..7770423bfd0d 100644
--- a/doc/html/man/menu.3x.html
+++ b/doc/html/man/menu.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,59 +27,56 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu.3x,v 1.21 2010/12/04 18:40:45 tom Exp @
+ * @Id: menu.3x,v 1.26 2019/01/20 20:32:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu 3x</H1>
-<HR>
+<H1 class="no-header">menu 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG> <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+<STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG> <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>menu</STRONG> - curses extension for programming menus
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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 modify menu items; and menu routines, which
+ group items into menus, display menus on the screen, and handle inter-
+ action 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 func-
+ tions. To use the <STRONG>menu</STRONG> library, link with the options <STRONG>-lmenu</STRONG> <STRONG>-lcurses</STRONG>.
+
+
+</PRE><H3><a name="h3-Current-Default-Values-for-Item-Attributes">Current Default Values for Item Attributes</a></H3><PRE>
+ 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 render-
+ ing of items already created.
+
+
+</PRE><H3><a name="h3-Routine-Name-Index">Routine Name Index</a></H3><PRE>
+ The following table lists each <STRONG>menu</STRONG> routine and the name of the manual
+ page on which it is described.
<STRONG>curses</STRONG> Routine Name Manual Page Name
--------------------------------------------
@@ -112,10 +108,10 @@
menu_opts_on <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>
menu_pad <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG>
menu_pattern <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG>
-
menu_request_by_name <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG>
menu_request_name <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG>
menu_spacing <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG>
+
menu_sub <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>
@@ -151,21 +147,17 @@
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:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Routines that return pointers return <STRONG>NULL</STRONG> on error. Routines that
+ return an integer return one of the following error codes:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_BAD_STATE</STRONG>
- Routine was called from an initialization or termina-
- tion function.
+ Routine was called from an initialization or termination function.
<STRONG>E_NO_MATCH</STRONG>
Character failed to match.
@@ -189,53 +181,68 @@
The menu driver could not process the request.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_UNKNOWN_COMMAND</STRONG>
The menu driver code saw an unknown request code.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "menu_" for
- detailed descriptions of the entry points.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header files
+ <STRONG>&lt;curses.h&gt;</STRONG> and <STRONG>&lt;eti.h&gt;</STRONG>.
+ In your library list, libmenu.a should be before libncurses.a; that is,
+ you should say "-lmenu -lncurses", not the other way around (which
+ would give a link-error when using static libraries).
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
- files <STRONG>&lt;curses.h&gt;</STRONG> and <STRONG>&lt;eti.h&gt;</STRONG>.
- 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 usually give a link-
- error).
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported on Version 7 or BSD versions.
+ The menu facility was documented in SVr4.2 in <EM>Character</EM> <EM>User</EM> <EM>Interface</EM>
+ <EM>Programming</EM> <EM>(UNIX</EM> <EM>SVR4.2)</EM>.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V menu library. They
- were not supported on Version 7 or BSD versions.
+ It is not part of X/Open Curses.
+ Aside from ncurses, there are few implementations:
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for ncurses
- by Eric S. Raymond.
+ <STRONG>o</STRONG> systems based on SVr4 source code, e.g., Solaris.
+ <STRONG>o</STRONG> NetBSD curses.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- This describes <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
+
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for ncurses by Eric S.
+ Raymond.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "menu_" for detailed
+ descriptions of the entry points.
+
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
- <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+ <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Current-Default-Values-for-Item-Attributes">Current Default Values for Item Attributes</a></li>
+<li><a href="#h3-Routine-Name-Index">Routine Name Index</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu_attributes.3x.html b/doc/html/man/menu_attributes.3x.html
index f73757f00b72..b1efafb2f65b 100644
--- a/doc/html/man/menu_attributes.3x.html
+++ b/doc/html/man/menu_attributes.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,31 +27,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu_attributes.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
+ * @Id: menu_attributes.3x,v 1.16 2019/11/30 21:02:51 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu_attributes 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu_attributes 3x</H1>
-<HR>
+<H1 class="no-header">menu_attributes 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG> <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG>
+<STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG> <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>menu_attributes</STRONG> - color and attribute control for menus
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>menu_back</STRONG>, <STRONG>menu_fore</STRONG>, <STRONG>menu_grey</STRONG>, <STRONG>menu_pad</STRONG>, <STRONG>set_menu_back</STRONG>,
+ <STRONG>set_menu_fore</STRONG>, <STRONG>set_menu_grey</STRONG>, <STRONG>set_menu_pad</STRONG> - color and attribute con-
+ trol for menus
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
int set_menu_fore(MENU *menu, chtype attr);
chtype menu_fore(const MENU *menu);
@@ -64,76 +64,72 @@
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_REVERSE</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><a name="h2-DESCRIPTION">DESCRIPTION</a></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_REVERSE</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>.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
+ 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><a name="h2-RETURN-VALUE">RETURN VALUE</a></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>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "menu_" for
- detailed descriptions of the entry points.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "menu_" for detailed
+ descriptions of the entry points.
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG>
+ <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu_cursor.3x.html b/doc/html/man/menu_cursor.3x.html
index 37a724eb1961..77d17a183716 100644
--- a/doc/html/man/menu_cursor.3x.html
+++ b/doc/html/man/menu_cursor.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,90 +27,89 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu_cursor.3x,v 1.8 2010/12/04 18:40:45 tom Exp @
+ * @Id: menu_cursor.3x,v 1.11 2019/01/20 20:32:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu_cursor 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu_cursor 3x</H1>
-<HR>
+<H1 class="no-header">menu_cursor 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG> <STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG>
+<STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG> <STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>menu_cursor</STRONG> - position a menu's cursor
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>pos_menu_cursor</STRONG> - position a menu's cursor
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
int pos_menu_cursor(const MENU *menu);
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>pos_menu_cursor</STRONG> 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
- do screen-painting in response to a menu select.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>pos_menu_cursor</STRONG> restores the cursor to the current posi-
+ tion associated with the menu's selected item. This is useful after
+ <STRONG>curses</STRONG> routines have been called to do screen-painting in response to a
+ menu select.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
This routine returns one of the following:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_NOT_POSTED</STRONG>
The menu has not been posted.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG>
+ <STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu_driver.3x.html b/doc/html/man/menu_driver.3x.html
index 4eaf63166795..5a35438e006a 100644
--- a/doc/html/man/menu_driver.3x.html
+++ b/doc/html/man/menu_driver.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,52 +26,48 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu_driver.3x,v 1.20 2010/12/04 18:38:55 tom Exp @
+ * @Id: menu_driver.3x,v 1.25 2019/01/20 20:32:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu_driver 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu_driver 3x</H1>
-<HR>
+<H1 class="no-header">menu_driver 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG> <STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG>
+<STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG> <STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>menu_driver</STRONG> - command-processing loop of the menu system
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
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
- three major input cases:
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ Once a menu has been posted (displayed), you should funnel input events
+ to it through <STRONG>menu_driver</STRONG>. This routine has three major input cases:
- <STRONG>o</STRONG> The input is a form navigation request. Navigation
- request codes are constants defined in <STRONG>&lt;form.h&gt;</STRONG>, which
- are distinct from the key- and character codes
- returned by <STRONG>wgetch</STRONG>.
+ <STRONG>o</STRONG> The input is a form navigation request. Navigation request codes
+ are constants defined in <STRONG>&lt;form.h&gt;</STRONG>, which are distinct from the key-
+ and character codes returned by <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>.
- <STRONG>o</STRONG> The input is a printable character. Printable charac-
- ters (which must be positive, less than 256) are
- checked according to the program's locale settings.
+ <STRONG>o</STRONG> The input is a printable character. Printable characters (which
+ must be positive, less than 256) are checked according to the pro-
+ gram's locale settings.
- <STRONG>o</STRONG> The input is the KEY_MOUSE special key associated with
- an mouse event.
+ <STRONG>o</STRONG> The input is the KEY_MOUSE special key associated with an mouse
+ event.
The menu driver requests are as follows:
@@ -119,8 +114,7 @@
Clear the menu pattern buffer.
REQ_BACK_PATTERN
- Delete the previous character from the pattern buf-
- fer.
+ Delete the previous character from the pattern buffer.
REQ_NEXT_MATCH
Move to the next item matching the pattern match.
@@ -128,21 +122,20 @@
REQ_PREV_MATCH
Move to the previous item matching the pattern match.
- If the second argument is a printable 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
- appended character from the buffer.
+ If the second argument is a printable 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 appended character from the buffer.
+
+ If the second argument is one of the above pre-defined requests, the
+ corresponding action is performed.
- If the second argument is one of the above pre-defined
- requests, the corresponding action is performed.
- <STRONG>MOUSE</STRONG> <STRONG>HANDLING</STRONG>
- If the second argument is the KEY_MOUSE special key, the
- associated mouse event is translated into one of the above
- pre-defined requests. Currently only clicks in the user
- window (e.g., inside the menu display area or the decora-
- tion window) are handled.
+</PRE><H3><a name="h3-MOUSE-HANDLING">MOUSE HANDLING</a></H3><PRE>
+ If the second argument is the KEY_MOUSE special key, the associated
+ mouse event is translated into one of the above pre-defined requests.
+ Currently only clicks in the user window (e.g., inside the menu display
+ area or the decoration window) are handled.
If you click above the display region of the menu:
@@ -160,51 +153,44 @@
<STRONG>o</STRONG> a REQ_LAST_ITEM is generated for a triple-click.
- If you click at an item inside the display area of the
- menu:
+ If you click at an item inside the display area of the menu:
<STRONG>o</STRONG> the menu cursor is positioned to that item.
- <STRONG>o</STRONG> If you double-click an item a REQ_TOGGLE_ITEM is gen-
- erated and <STRONG>E_UNKNOWN_COMMAND</STRONG> is returned. This return
- value makes sense, because a double click usually
- means that an item-specific action should be returned.
- It is exactly the purpose of this return value to sig-
- nal that an application specific command should be
- executed.
+ <STRONG>o</STRONG> If you double-click an item a REQ_TOGGLE_ITEM is generated and
+ <STRONG>E_UNKNOWN_COMMAND</STRONG> is returned. This return value makes sense,
+ because a double click usually means that an item-specific action
+ should be returned. It is exactly the purpose of this return value
+ to signal that an application specific command should be executed.
- <STRONG>o</STRONG> If a translation into a request was done, <STRONG>menu_driver</STRONG>
- returns the result of this request.
+ <STRONG>o</STRONG> If a translation into a request was done, <STRONG>menu_driver</STRONG> returns the
+ result of this request.
- If you clicked outside the user window or the mouse event
- could not be translated into a menu request an
- <STRONG>E_REQUEST_DENIED</STRONG> is returned.
+ If you clicked outside the user window or the mouse event could not be
+ translated into a menu request an <STRONG>E_REQUEST_DENIED</STRONG> is returned.
- <STRONG>APPLICATION-DEFINED</STRONG> <STRONG>COMMANDS</STRONG>
- If the second argument is neither printable nor one of the
- above pre-defined menu requests or KEY_MOUSE, the drive
- assumes it is an application-specific command and returns
- <STRONG>E_UNKNOWN_COMMAND</STRONG>. Application-defined commands should be
- defined relative to <STRONG>MAX_COMMAND</STRONG>, the maximum value of
- these pre-defined requests.
+</PRE><H3><a name="h3-APPLICATION-DEFINED-COMMANDS">APPLICATION-DEFINED COMMANDS</a></H3><PRE>
+ If the second argument is neither printable nor one of the above pre-
+ defined menu requests or KEY_MOUSE, the drive assumes it is an applica-
+ tion-specific command and returns <STRONG>E_UNKNOWN_COMMAND</STRONG>. Application-
+ defined commands should be defined relative to <STRONG>MAX_COMMAND</STRONG>, the maximum
+ value of these pre-defined requests.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
<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>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_BAD_STATE</STRONG>
- Routine was called from an initialization or termina-
- tion function.
+ Routine was called from an initialization or termination function.
<STRONG>E_NOT_POSTED</STRONG>
The menu has not been posted.
@@ -219,37 +205,45 @@
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>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>.
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
- files <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header files
+ <STRONG>&lt;curses.h&gt;</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 sup-
- port for mouse events is ncurses specific.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported on Version 7 or BSD versions. The support for mouse events is
+ ncurses specific.
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG>
+ <STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-MOUSE-HANDLING">MOUSE HANDLING</a></li>
+<li><a href="#h3-APPLICATION-DEFINED-COMMANDS">APPLICATION-DEFINED COMMANDS</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu_format.3x.html b/doc/html/man/menu_format.3x.html
index 912b01caa12f..329ecd4a82b1 100644
--- a/doc/html/man/menu_format.3x.html
+++ b/doc/html/man/menu_format.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,68 +27,61 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu_format.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
+ * @Id: menu_format.3x,v 1.16 2019/01/20 20:32:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu_format 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu_format 3x</H1>
-<HR>
+<H1 class="no-header">menu_format 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG> <STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG>
+<STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG> <STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>menu_format</STRONG> - set and get menu sizes
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_menu_format</STRONG>, <STRONG>menu_format</STRONG> - set and get menu sizes
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
int set_menu_format(MENU *menu, int rows, int cols);
void 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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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 subwin-
+ dow 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 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>.
+ The function <STRONG>menu_format</STRONG> returns the maximum-size constraints for the
+ given menu into the storage addressed by <STRONG>rows</STRONG> and <STRONG>cols</STRONG>.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_POSTED</STRONG>
The menu is already posted.
@@ -98,36 +90,39 @@
No items are connected to the menu.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG>
+ <STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu_hook.3x.html b/doc/html/man/menu_hook.3x.html
index 9e10787f57ab..e25ee824a7d8 100644
--- a/doc/html/man/menu_hook.3x.html
+++ b/doc/html/man/menu_hook.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,32 +27,30 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu_hook.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
+ * @Id: menu_hook.3x,v 1.13 2019/01/20 20:32:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu_hook 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu_hook 3x</H1>
-<HR>
+<H1 class="no-header">menu_hook 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG> <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG>
+<STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG> <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>menu_hook</STRONG> - set hooks for automatic invocation by applica-
- tions
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>menu_hook</STRONG> - set hooks for automatic invocation by applications
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
int set_item_init(MENU *menu, Menu_Hook func);
Menu_Hook item_init(const MENU *menu);
@@ -65,74 +62,75 @@
Menu_Hook 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>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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_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_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_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).
+ 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:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG>
+ <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu_items.3x.html b/doc/html/man/menu_items.3x.html
index 81b7e8dd6a08..5b6512b62bdf 100644
--- a/doc/html/man/menu_items.3x.html
+++ b/doc/html/man/menu_items.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,67 +27,60 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu_items.3x,v 1.10 2012/11/03 23:03:59 tom Exp @
+ * @Id: menu_items.3x,v 1.13 2019/01/20 20:32:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu_items 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu_items 3x</H1>
-<HR>
+<H1 class="no-header">menu_items 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG> <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG>
+<STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG> <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>menu_items</STRONG> - make and break connections between items and
- menus
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_menu_items</STRONG>, <STRONG>menu_items</STRONG>, <STRONG>item_count</STRONG> - make and break connections
+ between items and menus
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</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>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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>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>.
+ The function <STRONG>item_count</STRONG> returns the count of items in <EM>menu</EM>.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The function <STRONG>menu_items</STRONG> returns a pointer (which may be
- <STRONG>NULL</STRONG>). It does not set errno.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The function <STRONG>menu_items</STRONG> returns a pointer (which may be <STRONG>NULL</STRONG>). It does
+ not set errno.
- The function <STRONG>item_count</STRONG> returns <STRONG>ERR</STRONG> (the general <STRONG>curses</STRONG>
- error return value) if its <EM>menu</EM> parameter is <STRONG>NULL</STRONG>.
+ The function <STRONG>item_count</STRONG> returns <STRONG>ERR</STRONG> (the general <STRONG>curses</STRONG> error return
+ value) if its <EM>menu</EM> parameter is <STRONG>NULL</STRONG>.
- The function <STRONG>set_menu_items</STRONG> returns one of the following
- codes 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_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_NOT_CONNECTED</STRONG>
No items are connected to the menu.
@@ -97,42 +89,45 @@
The menu is already posted.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported on Version 7 or BSD versions.
- The SVr4 menu library documentation specifies the
- <STRONG>item_count</STRONG> error value as -1 (which is the value of <STRONG>ERR</STRONG>).
+ 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG>
+ <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu_mark.3x.html b/doc/html/man/menu_mark.3x.html
index d7dfefba2631..7e280f72201a 100644
--- a/doc/html/man/menu_mark.3x.html
+++ b/doc/html/man/menu_mark.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,104 +27,100 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu_mark.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
+ * @Id: menu_mark.3x,v 1.14 2019/01/20 20:32:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu_mark 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu_mark 3x</H1>
-<HR>
+<H1 class="no-header">menu_mark 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG> <STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG>
+<STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG> <STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>menu_mark</STRONG> - get and set the menu mark string
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_menu_mark</STRONG>, <STRONG>menu_mark</STRONG> - get and set the menu mark string
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ In order to make menu selections visible on older terminals without
+ highlighting or color capability, the menu library marks selected items
+ in a menu with a prefix string.
- 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 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 non-<STRONG>NULL</STRONG> menu argument will change this default.
+ The default string is "-" (a dash). Calling <STRONG>set_menu_mark</STRONG> with a non-
+ <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).
+ 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 a pointer (which may be
- <STRONG>NULL</STRONG>). It does not set errno.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The function <STRONG>menu_mark</STRONG> returns a pointer (which may be <STRONG>NULL</STRONG>). It does
+ not set errno.
- The function <STRONG>set_menu_mark</STRONG> may return the following error
- codes:
+ The function <STRONG>set_menu_mark</STRONG> may return the following error codes:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG>
+ <STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu_new.3x.html b/doc/html/man/menu_new.3x.html
index 10f30e775413..9fce52b77ea8 100644
--- a/doc/html/man/menu_new.3x.html
+++ b/doc/html/man/menu_new.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,50 +27,46 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu_new.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
+ * @Id: menu_new.3x,v 1.14 2019/01/20 20:32:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu_new 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu_new 3x</H1>
-<HR>
+<H1 class="no-header">menu_new 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG> <STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG>
+<STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG> <STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>menu_new</STRONG> - create and destroy menus
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>new_menu</STRONG>, <STRONG>free_menu</STRONG> - create and destroy menus
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</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).
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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>-terminated).
- The function <STRONG>free_menu</STRONG> disconnects <EM>menu</EM> from its item
- array and frees the storage allocated for the menu.
+ 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. It sets
- errno according to the function's failure:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The function <STRONG>new_menu</STRONG> returns <STRONG>NULL</STRONG> on error. It sets errno according
+ to the function's failure:
<STRONG>E_NOT_CONNECTED</STRONG>
No items are connected to the menu.
@@ -84,46 +79,48 @@
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_POSTED</STRONG>
The menu has already been posted.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG>
+ <STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu_opts.3x.html b/doc/html/man/menu_opts.3x.html
index 18557237249c..b777b2655071 100644
--- a/doc/html/man/menu_opts.3x.html
+++ b/doc/html/man/menu_opts.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,31 +27,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu_opts.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
+ * @Id: menu_opts.3x,v 1.16 2019/01/20 20:32:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu_opts 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu_opts 3x</H1>
-<HR>
+<H1 class="no-header">menu_opts 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG> <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>
+<STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG> <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>menu_opts</STRONG> - set and get menu options
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_menu_opts</STRONG>, <STRONG>menu_opts_on</STRONG>, <STRONG>menu_opts_off</STRONG>, <STRONG>menu_opts</STRONG> - set and get
+ menu options
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
int set_menu_opts(MENU *menu, Menu_Options opts);
int menu_opts_on(MENU *menu, Menu_Options opts);
@@ -60,20 +59,17 @@
Menu_Options menu_opts(const MENU *menu);
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>set_menu_opts</STRONG> sets all the given menu's
- option bits (menu option bits may be logically-OR'ed
- together).
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>set_menu_opts</STRONG> 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,
- and leaves others alone.
+ The function <STRONG>menu_opts_on</STRONG> turns on the given option bits, and leaves
+ others alone.
- The function <STRONG>menu_opts_off</STRONG> turns off the given option
- bits, and leaves others alone.
+ The function <STRONG>menu_opts_off</STRONG> turns off the given option bits, and leaves
+ others alone.
- The function <STRONG>menu_opts</STRONG> returns the menu's current option
- bits.
+ The function <STRONG>menu_opts</STRONG> returns the menu's current option bits.
The following options are defined (all are on by default):
@@ -81,8 +77,7 @@
Only one item can be selected for this menu.
O_SHOWDESC
- Display the item descriptions when the menu is
- posted.
+ Display the item descriptions when the menu is posted.
O_ROWMAJOR
Display the menu in row-major order.
@@ -91,58 +86,63 @@
Ignore the case when pattern-matching.
O_SHOWMATCH
- Move the cursor to within the item name while pat-
- tern-matching.
+ Move the cursor to within the item name while pattern-matching.
O_NONCYCLIC
- Don't wrap around next-item and previous-item,
- requests to the other end of the menu.
+ Don't wrap around next-item and previous-item, requests to the
+ other end of the menu.
+ O_MOUSE_MENU
+ If user clicks with the mouse and it does not fall on the cur-
+ rently active menu, push <STRONG>KEY_MOUSE</STRONG> and the <STRONG>MEVENT</STRONG> data back on the
+ queue to allow processing in another part of the calling program.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- Except for <STRONG>menu_opts</STRONG>, each routine returns one of the fol-
- lowing:
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Except for <STRONG>menu_opts</STRONG>, each routine returns one of the following:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_POSTED</STRONG>
The menu is already posted.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>
+ <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu_pattern.3x.html b/doc/html/man/menu_pattern.3x.html
index 4a2f09b3396e..8fea22ab80e0 100644
--- a/doc/html/man/menu_pattern.3x.html
+++ b/doc/html/man/menu_pattern.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,71 +26,61 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu_pattern.3x,v 1.13 2010/12/04 18:40:45 tom Exp @
+ * @Id: menu_pattern.3x,v 1.17 2019/01/20 20:32:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu_pattern 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu_pattern 3x</H1>
-<HR>
+<H1 class="no-header">menu_pattern 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG> <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG>
+<STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG> <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>menu_pattern</STRONG> - get and set a menu's pattern buffer
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_menu_pattern</STRONG>, <STRONG>menu_pattern</STRONG> - set and get a menu's pattern buffer
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</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 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>.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ Every menu has an associated pattern match buffer. As input events
+ that are printable 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>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>.
+ 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 a pointer, which is <STRONG>NULL</STRONG>
- if the <EM>menu</EM> parameter is <STRONG>NULL</STRONG>. Otherwise, it is a pointer
- to a string which is empty if no pattern has been set. It
- does not set errno.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The function <STRONG>menu_pattern</STRONG> returns a pointer, which is <STRONG>NULL</STRONG> if the <EM>menu</EM>
+ parameter is <STRONG>NULL</STRONG>. Otherwise, it is a pointer to a string which is
+ empty if no pattern has been set. It does not set errno.
- The function <STRONG>set_menu_pattern</STRONG> may return the following
- error codes:
+ The function <STRONG>set_menu_pattern</STRONG> may return the following error codes:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_BAD_STATE</STRONG>
- Routine was called from an initialization or termina-
- tion function.
+ Routine was called from an initialization or termination function.
<STRONG>E_NOT_CONNECTED</STRONG>
No items are connected to menu.
@@ -100,39 +89,42 @@
Character failed to match.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG>
+ <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu_post.3x.html b/doc/html/man/menu_post.3x.html
index 0a360e2dca4a..92b57e904794 100644
--- a/doc/html/man/menu_post.3x.html
+++ b/doc/html/man/menu_post.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,73 +27,66 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu_post.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
+ * @Id: menu_post.3x,v 1.17 2019/01/20 20:32:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu_post 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu_post 3x</H1>
-<HR>
+<H1 class="no-header">menu_post 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG> <STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG>
+<STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG> <STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>menu_post</STRONG> - write or erase menus from associated subwin-
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>post_menu</STRONG>, <STRONG>unpost_menu</STRONG> - write or erase menus from associated subwin-
dows
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</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
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>post_menu</STRONG> displays a menu to its associated subwindow. To
+ trigger physical display of the subwindow, use <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></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.
+ The function <STRONG>unpost_menu</STRONG> erases menu from its associated subwindow.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<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.
+ Routine was called from an initialization or termination 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.
+ Menu is too large for its window. You should consider using
+ <STRONG>set_menu_format</STRONG> to solve the problem.
<STRONG>E_NOT_POSTED</STRONG>
The menu has not been posted.
@@ -103,36 +95,39 @@
No items are connected to the menu.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG>
+ <STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu_requestname.3x.html b/doc/html/man/menu_requestname.3x.html
index 43c6ef569979..a6cff4cccaa6 100644
--- a/doc/html/man/menu_requestname.3x.html
+++ b/doc/html/man/menu_requestname.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,85 +27,85 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu_requestname.3x,v 1.9 2010/12/04 18:40:45 tom Exp @
+ * @Id: menu_requestname.3x,v 1.11 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu_requestname 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu_requestname 3x</H1>
-<HR>
+<H1 class="no-header">menu_requestname 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG> <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG>
+<STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG> <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>menu_requestname</STRONG> - handle printable menu request names
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>menu_request_by_name</STRONG>, <STRONG>menu_request_name</STRONG> - handle printable menu request
+ names
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
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
- of a menu request code.
- The function <STRONG>menu_request_by_name</STRONG> searches in the name-ta-
- ble for a request with the given name and returns its
- request code. Otherwise E_NO_MATCH is returned.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>menu_request_name</STRONG> returns the printable name of a menu
+ request code.
+ The function <STRONG>menu_request_by_name</STRONG> 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. It does
- not set errno.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ <STRONG>menu_request_name</STRONG> returns <STRONG>NULL</STRONG> on error and sets errno to <STRONG>E_BAD_ARGU-</STRONG>
+ <STRONG>MENT</STRONG>.
+ <STRONG>menu_request_by_name</STRONG> returns <STRONG>E_NO_MATCH</STRONG> on error. It does not set
+ errno.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</STRONG>.
-</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><a name="h2-PORTABILITY">PORTABILITY</a></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 conditioned using NCURSES_VERSION.
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG>
+ <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu_spacing.3x.html b/doc/html/man/menu_spacing.3x.html
index 50f3b52b84ee..13e64d8a1df2 100644
--- a/doc/html/man/menu_spacing.3x.html
+++ b/doc/html/man/menu_spacing.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,31 +27,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu_spacing.3x,v 1.12 2010/12/04 18:38:55 tom Exp @
+ * @Id: menu_spacing.3x,v 1.15 2019/06/01 22:33:45 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu_spacing 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu_spacing 3x</H1>
-<HR>
+<H1 class="no-header">menu_spacing 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG> <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG>
+<STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG> <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>menu_spacing</STRONG> - Control spacing between menu items.
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_menu_spacing</STRONG>, <STRONG>menu_spacing</STRONG> - set and get spacing between menu
+ items.
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
int set_menu_spacing(MENU *menu,
int spc_description,
@@ -64,66 +63,63 @@
int* spc_columns);
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>set_menu_spacing</STRONG> sets the spacing information
- for the menu. Its parameter <STRONG>spc_description</STRONG> controls the
- number of spaces between an item name and an item descrip-
- tion. It must not be larger than <STRONG>TABSIZE</STRONG>. The menu sys-
- tem puts in the middle of this spacing area the pad char-
- acter. The remaining parts are filled with spaces. The
- <STRONG>spc_rows</STRONG> parameter controls the number of rows that are
- used for an item. It must not be larger than 3. The menu
- system inserts the blank lines between item rows, these
- lines will contain the pad character in the appropriate
- positions. The <STRONG>spc_columns</STRONG> parameter 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 menu. If a pointer is NULL, this specific info is
- simply not returned.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>set_menu_spacing</STRONG> sets the spacing information for the
+ menu. Its parameter <STRONG>spc_description</STRONG> 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 the middle of this spacing area
+ the pad character. The remaining parts are filled with spaces. The
+ <STRONG>spc_rows</STRONG> parameter controls the number of rows that are used for an
+ item. It must not be larger than 3. The menu system inserts the blank
+ lines between item rows, these lines will contain the pad character in
+ the appropriate positions. The <STRONG>spc_columns</STRONG> parameter controls the num-
+ ber of blanks between columns of items. It must not be larger than
+ <STRONG>TABSIZE</STRONG>. 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 menu.
+ If a pointer is NULL, this specific info is simply 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_ARGU-</STRONG>
- <STRONG>MENT</STRONG> if one of the spacing values is out of range.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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> if one of the spacing
+ values is out of range.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</STRONG>.
-</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><a name="h2-PORTABILITY">PORTABILITY</a></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 conditioned using NCURSES_VERSION.
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG>
+ <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu_userptr.3x.html b/doc/html/man/menu_userptr.3x.html
index 816c3f895693..d50ad455b97e 100644
--- a/doc/html/man/menu_userptr.3x.html
+++ b/doc/html/man/menu_userptr.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,85 +27,85 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu_userptr.3x,v 1.10 2010/12/04 18:40:45 tom Exp @
+ * @Id: menu_userptr.3x,v 1.12 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu_userptr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu_userptr 3x</H1>
-<HR>
+<H1 class="no-header">menu_userptr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG> <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG>
+<STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG> <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>menu_userptr</STRONG> - associate application data with a menu item
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_menu_userptr</STRONG>, <STRONG>menu_userptr</STRONG> - associate application data with a menu
+ item
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
int set_menu_userptr(MENU *menu, void *userptr);
void *menu_userptr(const MENU *menu);
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- Every menu and every menu item has a field that can be
- used to hold application-specific data (that is, the menu-
- driver code leaves it alone). These functions get and set
- the menu user pointer field.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ Every menu and every menu item has a field that can be used to hold
+ application-specific data (that is, the menu-driver code leaves it
+ alone). These functions get and set the menu user pointer field.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- <STRONG>menu_userptr</STRONG> returns a pointer (which may be <STRONG>NULL</STRONG>). It
- does not set errno.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ <STRONG>menu_userptr</STRONG> returns a pointer (which may be <STRONG>NULL</STRONG>). It does not set
+ errno.
<STRONG>set_menu_userptr</STRONG> returns <STRONG>E_OK</STRONG> (success).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported on Version 7 or BSD versions.
- The user pointer is a void pointer. We chose not to leave
- it as a char pointer for SVr4 compatibility.
+ The user pointer is a void pointer. We chose not to leave it as a char
+ pointer for SVr4 compatibility.
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG>
+ <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/menu_win.3x.html b/doc/html/man/menu_win.3x.html
index db62b23c3d24..70778b9dd8e7 100644
--- a/doc/html/man/menu_win.3x.html
+++ b/doc/html/man/menu_win.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,32 +27,30 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: menu_win.3x,v 1.11 2010/12/04 18:38:55 tom Exp @
+ * @Id: menu_win.3x,v 1.13 2019/01/20 20:32:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>menu_win 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>menu_win 3x</H1>
-<HR>
+<H1 class="no-header">menu_win 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG> <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG>
+<STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG> <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>menu_win</STRONG> - make and break menu window and subwindow asso-
- ciations
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>menu_win</STRONG> - make and break menu window and subwindow associations
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
int set_menu_win(MENU *menu, WINDOW *win);
WINDOW *menu_win(const MENU *menu);
@@ -62,40 +59,35 @@
int scale_menu(const MENU *menu, int *rows, int *columns);
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- Every menu has an associated pair of <STRONG>curses</STRONG> 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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ Every menu has an associated pair of <STRONG>curses</STRONG> windows. The menu window
+ displays any title and border associated with the window; the menu sub-
+ window 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.
+ The first four functions get and set those windows. It is not neces-
+ sary to set either window; by default, the driver code uses <STRONG>stdscr</STRONG> 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
- treated as a request to change the system default menu
- window or subwindow.
+ 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 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 <STRONG>scale_menu</STRONG> returns the minimum size required for the sub-
+ window of <EM>menu</EM>.
-</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:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Routines that return pointers return <STRONG>NULL</STRONG> on error. Routines 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>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_POSTED</STRONG>
The menu has already been posted.
@@ -104,36 +96,39 @@
No items are connected to the menu.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG>
+ <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/mitem_current.3x.html b/doc/html/man/mitem_current.3x.html
index 964aa9d7cf8d..3f62802197ec 100644
--- a/doc/html/man/mitem_current.3x.html
+++ b/doc/html/man/mitem_current.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,119 +27,113 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: mitem_current.3x,v 1.13 2010/12/04 18:40:45 tom Exp @
+ * @Id: mitem_current.3x,v 1.16 2019/03/23 21:47:36 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>mitem_current 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>mitem_current 3x</H1>
-<HR>
+<H1 class="no-header">mitem_current 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG> <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG>
+<STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG> <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>mitem_current</STRONG> - set and get current_menu_item
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
- int set_current_item(MENU *menu, const ITEM *item);
+ int set_current_item(MENU *menu, 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
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The function <STRONG>set_current_item</STRONG> sets the current item (the item on which
+ the menu cursor is positioned). <STRONG>current_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 toggled). The item leftmost on the given row
+ becomes current. 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.
+ 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 a pointer (which may be <STRONG>NULL</STRONG>). It
- does not set errno.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ <STRONG>current_item</STRONG> returns a pointer (which may be <STRONG>NULL</STRONG>). It does not set
+ errno.
- <STRONG>top_row</STRONG> and <STRONG>item_index</STRONG> return <STRONG>ERR</STRONG> (the general <STRONG>curses</STRONG>
- error value) if their <EM>menu</EM> parameter is <STRONG>NULL</STRONG>.
+ <STRONG>top_row</STRONG> and <STRONG>item_index</STRONG> return <STRONG>ERR</STRONG> (the general <STRONG>curses</STRONG> error value) if
+ their <EM>menu</EM> parameter is <STRONG>NULL</STRONG>.
- <STRONG>set_current_item</STRONG> and <STRONG>set_top_row</STRONG> return one of the follow-
- ing:
+ <STRONG>set_current_item</STRONG> and <STRONG>set_top_row</STRONG> return one of the following:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_BAD_STATE</STRONG>
- Routine was called from an initialization or termina-
- tion function.
+ Routine was called from an initialization or termination function.
<STRONG>E_NOT_CONNECTED</STRONG>
No items are connected to the menu.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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>).
+ 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG>
+ <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/mitem_name.3x.html b/doc/html/man/mitem_name.3x.html
index 2f8a9e8b1f7d..66699db46bb4 100644
--- a/doc/html/man/mitem_name.3x.html
+++ b/doc/html/man/mitem_name.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,80 +27,79 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: mitem_name.3x,v 1.8 2010/12/04 18:40:45 tom Exp @
+ * @Id: mitem_name.3x,v 1.10 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>mitem_name 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>mitem_name 3x</H1>
-<HR>
+<H1 class="no-header">mitem_name 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG> <STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG>
+<STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG> <STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>mitem_name</STRONG> - get menu item name and description fields
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>item_name</STRONG>, <STRONG>item_description</STRONG> - get menu item name and description fields
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</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
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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.
- The function <STRONG>item_description</STRONG> returns the description part
- of the given item.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- These routines return a pointer (which may be <STRONG>NULL</STRONG>). They
- do not set errno.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ These routines return a pointer (which may be <STRONG>NULL</STRONG>). They do not set
+ errno.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG>
+ <STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/mitem_new.3x.html b/doc/html/man/mitem_new.3x.html
index 927c3d075e48..63d28a77604d 100644
--- a/doc/html/man/mitem_new.3x.html
+++ b/doc/html/man/mitem_new.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,58 +27,52 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: mitem_new.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
+ * @Id: mitem_new.3x,v 1.15 2019/01/20 20:32:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>mitem_new 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>mitem_new 3x</H1>
-<HR>
+<H1 class="no-header">mitem_new 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG> <STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG>
+<STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG> <STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>mitem_new</STRONG> - create and destroy menu items
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>new_item</STRONG>, <STRONG>free_item</STRONG> - create and destroy menu items
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
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
- 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 careful with names
- or descriptions allocated on the stack of some routines.
- The function <STRONG>free_item</STRONG> 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><a name="h2-DESCRIPTION">DESCRIPTION</a></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 that the item stores only
+ the pointers to the name and description. Those pointers must be valid
+ during the lifetime of the item. So you should be very careful with
+ names or descriptions allocated on the stack of some routines.
+ The function <STRONG>free_item</STRONG> 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. It sets
- errno according to the function's failure:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The function <STRONG>new_item</STRONG> returns <STRONG>NULL</STRONG> on error. It sets errno according
+ to the function's failure:
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_SYSTEM_ERROR</STRONG>
System error occurred, e.g., malloc failure.
@@ -89,46 +82,48 @@
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
+ Routine detected an incorrect or out-of-range argument.
<STRONG>E_CONNECTED</STRONG>
Item is connected to a menu.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG>
+ <STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/mitem_opts.3x.html b/doc/html/man/mitem_opts.3x.html
index bd7b3ff666d5..ba565d277d5f 100644
--- a/doc/html/man/mitem_opts.3x.html
+++ b/doc/html/man/mitem_opts.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,31 +27,31 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: mitem_opts.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
+ * @Id: mitem_opts.3x,v 1.14 2019/01/20 20:32:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>mitem_opts 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>mitem_opts 3x</H1>
-<HR>
+<H1 class="no-header">mitem_opts 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG> <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG>
+<STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG> <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>mitem_opts</STRONG> - set and get menu item options
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_item_opts</STRONG>, <STRONG>item_opts_on</STRONG>, <STRONG>item_opts_off</STRONG>, <STRONG>item_opts</STRONG> - set and get
+ menu item options
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
int set_item_opts(ITEM *item, Item_Options opts);
int item_opts_on(ITEM *item, Item_Options opts);
@@ -60,67 +59,65 @@
Item_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).
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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_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_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.
+ 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.
+ There is only one defined option bit mask, <STRONG>O_SELECTABLE</STRONG>. When this is
+ on, the item may be selected during menu processing. 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:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Except for <STRONG>item_opts</STRONG>, each routine returns one of the following:
<STRONG>E_OK</STRONG> The routine succeeded.
<STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG>
+ <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/mitem_userptr.3x.html b/doc/html/man/mitem_userptr.3x.html
index 92d368105154..905f559311ec 100644
--- a/doc/html/man/mitem_userptr.3x.html
+++ b/doc/html/man/mitem_userptr.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,85 +27,85 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: mitem_userptr.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
+ * @Id: mitem_userptr.3x,v 1.13 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>mitem_userptr 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>mitem_userptr 3x</H1>
-<HR>
+<H1 class="no-header">mitem_userptr 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG> <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG>
+<STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG> <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>mitem_userptr</STRONG> - associate application data with a menu
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_item_userptr</STRONG>, <STRONG>item_userptr</STRONG> - associate application data with a menu
item
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
int set_item_userptr(ITEM *item, void *userptr);
void *item_userptr(const ITEM *item);
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- Every menu item has a field that can be used to hold
- application-specific data (that is, the menu-driver code
- leaves it alone). These functions get and set that field.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ Every menu item has a field that can be used to hold application-spe-
+ cific data (that is, the menu-driver code leaves it alone). These
+ functions get and set that field.
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The function <STRONG>item_userptr</STRONG> returns a pointer (possibly
- <STRONG>NULL</STRONG>). It does not set errno.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The function <STRONG>item_userptr</STRONG> returns a pointer (possibly <STRONG>NULL</STRONG>). It does
+ not set errno.
The <STRONG>set_item_userptr</STRONG> always returns <STRONG>E_OK</STRONG> (success).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported on Version 7 or BSD versions.
- The user pointer is a void pointer. We chose not to leave
- it as a char pointer for SVr4 compatibility.
+ The user pointer is a void pointer. We chose not to leave it as a char
+ pointer for SVr4 compatibility.
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG>
+ <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/mitem_value.3x.html b/doc/html/man/mitem_value.3x.html
index 7dfc5839111d..256404b42158 100644
--- a/doc/html/man/mitem_value.3x.html
+++ b/doc/html/man/mitem_value.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,91 +26,90 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: mitem_value.3x,v 1.10 2010/12/04 18:40:45 tom Exp @
+ * @Id: mitem_value.3x,v 1.13 2019/01/20 20:32:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>mitem_value 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>mitem_value 3x</H1>
-<HR>
+<H1 class="no-header">mitem_value 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG> <STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG>
+<STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG> <STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>mitem_value</STRONG> - set and get menu item values
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>set_item_value</STRONG>, <STRONG>item_value</STRONG> - set and get menu item values
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</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.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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>).
+ 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 deselect it (second argument
+ <STRONG>FALSE</STRONG>).
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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>).
+ System error occurred (see <STRONG>errno(3)</STRONG>).
<STRONG>E_REQUEST_DENIED</STRONG>
The menu driver could not process the request.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG>
+ <STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/mitem_visible.3x.html b/doc/html/man/mitem_visible.3x.html
index 521be28c41d4..425e06a46558 100644
--- a/doc/html/man/mitem_visible.3x.html
+++ b/doc/html/man/mitem_visible.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,73 +27,72 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: mitem_visible.3x,v 1.7 2010/12/04 18:40:45 tom Exp @
+ * @Id: mitem_visible.3x,v 1.8 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>mitem_visible 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>mitem_visible 3x</H1>
-<HR>
+<H1 class="no-header">mitem_visible 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG> <STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG>
+<STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG> <STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>mitem_visible</STRONG> - check visibility of a menu item
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
bool item_visible(const ITEM *item);
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- A menu item is visible when it is in the portion of a
- posted menu that is mapped onto the screen (if the menu is
- scrollable, in particular, this portion will be smaller
- than the whole menu).
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ A menu item is visible when it is in the portion of a posted menu that
+ is mapped onto the screen (if the menu is scrollable, in particular,
+ this portion will be smaller than the whole menu).
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>&lt;menu.h&gt;</STRONG> automatically includes the header
- file <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file
+ <STRONG>&lt;curses.h&gt;</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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These routines emulate the System V menu library. They were not sup-
+ ported 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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
+ Raymond.
- <STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG>
+ <STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/ncurses.3x.html b/doc/html/man/ncurses.3x.html
index 57ca23abd60f..2a36e050e22e 100644
--- a/doc/html/man/ncurses.3x.html
+++ b/doc/html/man/ncurses.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,1134 +27,1178 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: ncurses.3x,v 1.112 2013/07/20 19:29:59 tom Exp @
+ * @Id: ncurses.3x,v 1.143 2019/11/30 20:47:07 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>ncurses 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>ncurses 3x</H1>
-<HR>
+<H1 class="no-header">ncurses 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>
+<STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>ncurses</STRONG> - CRT screen handling and optimization package
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>ncurses</STRONG> 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 clas-
- sic curses, which has been discontinued. This describes
- <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
-
- The <STRONG>ncurses</STRONG> library emulates the curses library of System
- V Release 4 UNIX, and XPG4 (X/Open Portability Guide)
- curses (also known as XSI curses). XSI stands for X/Open
- System Interfaces Extension. The <STRONG>ncurses</STRONG> library is
- freely redistributable in source form. Differences from
- the SVr4 curses are summarized under the <STRONG>EXTENSIONS</STRONG> and
- <STRONG>PORTABILITY</STRONG> sections below and described in detail in the
- respective <STRONG>EXTENSIONS</STRONG>, <STRONG>PORTABILITY</STRONG> and <STRONG>BUGS</STRONG> sections of
- individual man pages.
-
- The <STRONG>ncurses</STRONG> library also provides many useful extensions,
- i.e., features which cannot be implemented by a simple
- add-on library but which require access to the internals
- of the library.
-
- A program using these routines must be linked with the
- <STRONG>-lncurses</STRONG> option, or (if it has been generated) with the
- debugging library <STRONG>-lncurses_g</STRONG>. (Your system integrator
- may also have installed these libraries under the names
- <STRONG>-lcurses</STRONG> and <STRONG>-lcurses_g</STRONG>.) The ncurses_g library generates
- trace logs (in a file called 'trace' in the current direc-
- tory) that describe curses actions. See also the section
- on <STRONG>ALTERNATE</STRONG> <STRONG>CONFIGURATIONS</STRONG>.
-
- The <STRONG>ncurses</STRONG> package supports: overall screen, window and
- pad manipulation; output to windows and pads; reading ter-
- minal input; control over terminal and <STRONG>curses</STRONG> input and
- output options; environment query routines; color manipu-
- lation; use of soft label keys; terminfo capabilities; and
- access to low-level terminal-manipulation routines.
-
- The library uses the locale which the calling program has
- initialized. That is normally done with <STRONG>setlocale</STRONG>:
-
- <STRONG>setlocale(LC_ALL,</STRONG> <STRONG>"");</STRONG>
-
- If the locale is not initialized, the library assumes that
- characters are printable as in ISO-8859-1, to work with
- certain legacy programs. You should initialize the locale
- and not rely on specific details of the library when the
- locale has not been setup.
-
- The function <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> must be called to initial-
- ize the library 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 fol-
- lowing sequence should be used:
-
- <STRONG>initscr();</STRONG> <STRONG>cbreak();</STRONG> <STRONG>noecho();</STRONG>
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></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.
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
+
+ The <STRONG>ncurses</STRONG> library emulates the curses library of System V Release 4
+ UNIX, and XPG4 (X/Open Portability Guide) curses (also known as XSI
+ curses). XSI stands for X/Open System Interfaces Extension. The
+ <STRONG>ncurses</STRONG> library is freely redistributable in source form. Differences
+ from the SVr4 curses are summarized under the <STRONG>EXTENSIONS</STRONG> and <STRONG>PORTABIL-</STRONG>
+ <STRONG>ITY</STRONG> sections below and described in detail in the respective <STRONG>EXTEN-</STRONG>
+ <STRONG>SIONS</STRONG>, <STRONG>PORTABILITY</STRONG> and <STRONG>BUGS</STRONG> sections of individual man pages.
+
+ The <STRONG>ncurses</STRONG> library also provides many useful extensions, i.e., fea-
+ tures which cannot be implemented by a simple add-on library but which
+ require access to the internals of the library.
+
+ 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. See also the section on
+ <STRONG>ALTERNATE</STRONG> <STRONG>CONFIGURATIONS</STRONG>.
+
+ The <STRONG>ncurses</STRONG> package supports: overall screen, window and pad manipula-
+ tion; output to windows and pads; reading terminal input; control over
+ terminal and <STRONG>curses</STRONG> input and output options; environment query rou-
+ tines; color manipulation; use of soft label keys; terminfo capabili-
+ ties; and access to low-level terminal-manipulation routines.
+
+
+</PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
+ The library uses the locale which the calling program has initialized.
+ That is normally done with <STRONG>setlocale</STRONG>:
+
+ <STRONG>setlocale(LC_ALL,</STRONG> <STRONG>"");</STRONG>
+
+ If the locale is not initialized, the library assumes that characters
+ are printable as in ISO-8859-1, to work with certain legacy programs.
+ You should initialize the locale and not rely on specific details of
+ the library when the locale has not been setup.
+
+ The function <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> must be called to initialize the
+ library before any of the other routines that deal with windows and
+ screens are used. The routine <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> must be called before exit-
+ ing.
+
+ 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>
+ <STRONG>nonl();</STRONG>
+ <STRONG>intrflush(stdscr,</STRONG> <STRONG>FALSE);</STRONG>
+ <STRONG>keypad(stdscr,</STRONG> <STRONG>TRUE);</STRONG>
- Before a <STRONG>curses</STRONG> program is run, the tab stops of the ter-
- minal should be set and its initialization strings, if
- 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
+ Before a <STRONG>curses</STRONG> program is run, the tab stops of the terminal should be
+ set and its initialization strings, if defined, must be output. This
+ can be done by executing the <STRONG>tput</STRONG> <STRONG>init</STRONG> command after the shell environ-
+ ment 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 struc-
- tures, called <EM>windows</EM>, which can be thought of as two-
- dimensional arrays of characters representing all or part
- of a CRT screen. A default window called <STRONG>stdscr</STRONG>, which is
- the size of the terminal screen, is supplied. Others may
- be created with <STRONG>newwin</STRONG>.
-
- Note that <STRONG>curses</STRONG> does not handle overlapping windows,
- that's done by the <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG> library. This means that you
- can either use <STRONG>stdscr</STRONG> or divide the screen into tiled win-
- dows and not using <STRONG>stdscr</STRONG> at all. Mixing the two will
- result in unpredictable, and undesired, effects.
-
- Windows are referred to by variables declared as <STRONG>WINDOW</STRONG> <STRONG>*</STRONG>.
- These data structures are manipulated with routines
- described here and elsewhere in the <STRONG>ncurses</STRONG> manual pages.
- Among those, the most basic routines are <STRONG>move</STRONG> and <STRONG>addch</STRONG>.
- More general versions of these routines are included with
- names beginning with <STRONG>w</STRONG>, allowing the user to specify a
- window. The routines not beginning with <STRONG>w</STRONG> affect <STRONG>stdscr</STRONG>.
-
- After using routines to manipulate a window, <STRONG>refresh</STRONG> is
- called, telling <STRONG>curses</STRONG> to make the user's CRT screen look
- like <STRONG>stdscr</STRONG>. The characters in a window are actually of
- type <STRONG>chtype</STRONG>, (character and attribute data) so that other
- information about the character may also be stored with
- each character.
-
- Special windows called <EM>pads</EM> may also be manipulated.
- These are windows which are not constrained to the size of
- the screen and whose contents need not be completely dis-
- played. See <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> for more information.
-
- In addition to drawing characters on the screen, video
- attributes and colors may be supported, causing the char-
- acters to show up in such modes as underlined, in reverse
- video, or in color on terminals that support such display
- enhancements. Line drawing characters may be specified to
- be output. On input, <STRONG>curses</STRONG> is also able to translate
- arrow and function keys that transmit escape sequences
- into single values. The video attributes, line drawing
- characters, and input values use names, defined in
- <STRONG>&lt;curses.h&gt;</STRONG>, such as <STRONG>A_REVERSE</STRONG>, <STRONG>ACS_HLINE</STRONG>, and <STRONG>KEY_LEFT</STRONG>.
-
- If the environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> are set, or
- if the program is executing in a window environment, line
- and column information in the environment will override
- information read by <EM>terminfo</EM>. This would affect a program
- running in an AT&amp;T 630 layer, for example, where the size
- of a screen is changeable (see <STRONG>ENVIRONMENT</STRONG>).
-
- If the environment variable <STRONG>TERMINFO</STRONG> is defined, any pro-
- gram using <STRONG>curses</STRONG> checks for a local terminal definition
- before checking in the standard place. For example, if
- <STRONG>TERM</STRONG> is set to <STRONG>att4424</STRONG>, then the compiled terminal defini-
- tion is found in
-
- <STRONG>/usr/share/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>,
+
+</PRE><H3><a name="h3-Datatypes">Datatypes</a></H3><PRE>
+ The <STRONG>ncurses</STRONG> library permits manipulation of data structures, called
+ <EM>windows</EM>, which can be thought of as two-dimensional arrays of charac-
+ ters 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. Mix-
+ ing 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 those, 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><A HREF="curs_refresh.3x.html">refresh(3x)</A></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 informa-
+ tion.
+
+ 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 val-
+ ues. The video attributes, line drawing characters, and input values
+ use names, defined in <STRONG>&lt;curses.h&gt;</STRONG>, such as <STRONG>A_REVERSE</STRONG>, <STRONG>ACS_HLINE</STRONG>, and
+ <STRONG>KEY_LEFT</STRONG>.
+
+
+</PRE><H3><a name="h3-Environment-variables">Environment variables</a></H3><PRE>
+ If the environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> are set, or if the pro-
+ gram is executing in a window environment, line and column information
+ in the environment will override information read by <EM>terminfo</EM>. This
+ would affect a program running in an AT&amp;T 630 layer, for example, where
+ the size 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 com-
+ piled terminal definition is found in
+
+ <STRONG>/usr/share/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>/usr/share/terminfo/a/att4424</STRONG>.
-
- This is useful for developing experimental definitions or
- when write permission in <STRONG>/usr/share/terminfo</STRONG> is not avail-
- able.
-
- The integer variables <STRONG>LINES</STRONG> and <STRONG>COLS</STRONG> are defined in
- <STRONG>&lt;curses.h&gt;</STRONG> and will be filled in by <STRONG>initscr</STRONG> with the size
- of the screen. The constants <STRONG>TRUE</STRONG> and <STRONG>FALSE</STRONG> have the val-
- ues <STRONG>1</STRONG> and <STRONG>0</STRONG>, respectively.
-
- The <STRONG>curses</STRONG> routines also define the <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> variable
- <STRONG>curscr</STRONG> which is used for certain low-level operations like
- clearing and redrawing a screen containing garbage. The
- <STRONG>curscr</STRONG> can be used in only a few routines.
-
- <STRONG>Routine</STRONG> <STRONG>and</STRONG> <STRONG>Argument</STRONG> <STRONG>Names</STRONG>
- Many <STRONG>curses</STRONG> routines have two or more versions. The rou-
- tines prefixed with <STRONG>w</STRONG> require a window argument. The rou-
- tines prefixed with <STRONG>p</STRONG> require a pad argument. Those with-
- out a prefix generally use <STRONG>stdscr</STRONG>.
-
- The routines prefixed with <STRONG>mv</STRONG> require a <EM>y</EM> and <EM>x</EM> coordinate
- to move to before performing the appropriate action. The
- <STRONG>mv</STRONG> routines imply a call to <STRONG>move</STRONG> before the call to the
- other routine. The coordinate <EM>y</EM> always refers to the row
- (of the window), and <EM>x</EM> always refers to the column. The
- upper left-hand corner is always (0,0), not (1,1).
-
- The routines prefixed with <STRONG>mvw</STRONG> take both a window argument
- and <EM>x</EM> and <EM>y</EM> coordinates. The window argument is always
- specified before the coordinates.
-
- In each case, <EM>win</EM> is the window affected, and <EM>pad</EM> is the
- pad affected; <EM>win</EM> and <EM>pad</EM> are always pointers to type <STRONG>WIN-</STRONG>
- <STRONG>DOW</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>. Most of
- the data types used in the library routines, such as <STRONG>WIN-</STRONG>
- <STRONG>DOW</STRONG>, <STRONG>SCREEN</STRONG>, <STRONG>bool</STRONG>, and <STRONG>chtype</STRONG> are defined in <STRONG>&lt;curses.h&gt;</STRONG>.
- Types used for the terminfo routines such as <STRONG>TERMINAL</STRONG> are
- defined in <STRONG>&lt;term.h&gt;</STRONG>.
-
- This manual page describes functions which may appear in
- any configuration of the library. There are two common
- configurations of the library:
-
- ncurses
- the "normal" library, which handles 8-bit
- characters. The normal (8-bit) library stores
- characters combined with attributes in <STRONG>chtype</STRONG>
- data.
-
- Attributes alone (no corresponding character)
- may be stored in <STRONG>chtype</STRONG> or the equivalent
- <STRONG>attr_t</STRONG> data. In either case, the data is
- stored in something like an integer.
-
- Each cell (row and column) in a <STRONG>WINDOW</STRONG> is
- stored as a <STRONG>chtype</STRONG>.
-
- ncursesw
- the so-called "wide" library, which handles
- multibyte characters (see the section on
- <STRONG>ALTERNATE</STRONG> <STRONG>CONFIGURATIONS</STRONG>). The "wide" library
- includes all of the calls from the "normal"
- library. It adds about one third more calls
- using data types which store multibyte charac-
- ters:
-
- <STRONG>cchar_t</STRONG>
- corresponds to <STRONG>chtype</STRONG>. However it is a
- structure, because more data is stored
- than can fit into an integer. The char-
- acters are large enough to require a full
- integer value - and there may be more
- than one character per cell. The video
- attributes and color are stored in sepa-
- rate fields of the structure.
-
- Each cell (row and column) in a <STRONG>WINDOW</STRONG> is
- stored as a <STRONG>cchar_t</STRONG>.
-
- <STRONG>wchar_t</STRONG>
- stores a "wide" character. Like <STRONG>chtype</STRONG>,
- this may be an integer.
-
- <STRONG>wint_t</STRONG>
- stores a <STRONG>wchar_t</STRONG> or <STRONG>WEOF</STRONG> - not the same,
- though both may have the same size.
-
- The "wide" library provides new functions
- which are analogous to functions in the "nor-
- mal" library. There is a naming convention
- which relates many of the normal/wide vari-
- ants: a "_w" is inserted into the name. For
- example, <STRONG>waddch</STRONG> becomes <STRONG>wadd_wch</STRONG>.
-
- <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.
-
- <STRONG>curses</STRONG> Routine Name Manual Page Name
- --------------------------------------------
- COLOR_PAIR <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
- PAIR_NUMBER <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
- _nc_free_and_exit <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>*
- _nc_freeall <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>*
- _nc_tracebits <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
-
- _traceattr <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
- _traceattr2 <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
- _tracechar <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
- _tracechtype <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
- _tracechtype2 <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
- _tracedump <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
- _tracef <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
- _tracemouse <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
- add_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
- add_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
- add_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
- 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>
- addnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
- addstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
- addwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
- assume_default_colors <STRONG><A HREF="default_colors.3x.html">default_colors(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>
- bkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
- bkgrndset <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
- border <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
- border_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
- box <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
- box_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(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>
- curses_version <STRONG><A HREF="curs_extend.3x.html">curs_extend(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>
- echo_wchar <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(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>
- erasewchar <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>
- get_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
- get_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
- getattrs <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
- getbegx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
- getbegy <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(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>
- getbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
- getcchar <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
- getch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
- getcurx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
- getcury <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
- getmaxx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
- getmaxy <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(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>*
- getn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
- getnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
- getparx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
- getpary <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(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>
- hline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(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>
- in_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
- in_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
- in_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
- inch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
- inchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
- inchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
- init_color <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
- init_pair <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
- initscr <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
- innstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
- innwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
- ins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
- ins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
- ins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(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>
- inwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
- is_cleared <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
- is_idcok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
- is_idlok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
-
- is_immedok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
- is_keypad <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
- is_leaveok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
- is_linetouched <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
- is_nodelay <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
- is_notimeout <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
- is_scrollok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
- is_syncok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
- is_term_resized <STRONG><A HREF="resizeterm.3x.html">resizeterm(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>
- key_defined <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>*
- key_name <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
- keybound <STRONG><A HREF="keybound.3x.html">keybound(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>
- killwchar <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>
- mouse_trafo <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(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>
- mvadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
- mvadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
- mvadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(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>
- mvaddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
- mvaddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
- mvaddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(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>
- mvget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
- mvget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
- mvgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
- mvgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(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>
- mvhline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
- mvin_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
- mvin_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
- mvin_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(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>
- mvinnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
- mvins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
- mvins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
- mvins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(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>
- mvinwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(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>
- mvvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
- mvvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
- mvwadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
- mvwadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
- mvwadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(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>
- mvwaddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
- mvwaddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
- mvwaddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(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>
- mvwget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
- mvwget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
- mvwgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
- mvwgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(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>
- mvwhline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
- mvwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
- mvwin_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
- mvwin_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
- mvwin_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(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>
- mvwinnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
- mvwins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
- mvwins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
- mvwins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(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>
- mvwinwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(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>
- mvwvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(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>
- nofilter <STRONG><A HREF="curs_util.3x.html">curs_util(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>
- scr_init <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
- scr_restore <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
- scr_set <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
- scrl <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
- scroll <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
- scrollok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
- set_curterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
- set_term <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
- setcchar <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(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>
- term_attrs <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(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>
- trace <STRONG><A HREF="curs_trace.3x.html">curs_trace(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>
- unget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(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="default_colors.3x.html">default_colors(3x)</A></STRONG>*
- use_env <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
- use_extended_names <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>*
- use_legacy_coding <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>*
- use_tioctl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
- vid_attr <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
- vid_puts <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(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>
- vline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(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>
- wadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
- wadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
- wadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(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>
- waddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
- waddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
- waddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(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>
- wbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
- wbkgrndset <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
- wborder <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
- wborder_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(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>
- wecho_wchar <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(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>
- wget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
- wget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
- wgetbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
- wgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
- wgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(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>
- whline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
- win_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
- win_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
- win_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(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>
- winnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
- wins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
- wins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
- wins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(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>
- winwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(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>
- wredrawln <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
- wrefresh <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
- wresize <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>*
- wscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
- wscrl <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
- 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>
- wunctrl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
- wvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
- wvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
+ <STRONG>/usr/share/terminfo/a/att4424</STRONG>.
+
+ This is useful for developing experimental definitions or when write
+ permission in <STRONG>/usr/share/terminfo</STRONG> is not available.
+
+ The integer variables <STRONG>LINES</STRONG> and <STRONG>COLS</STRONG> are defined in <STRONG>&lt;curses.h&gt;</STRONG> and will
+ be filled in by <STRONG>initscr</STRONG> with the size of the screen. The constants
+ <STRONG>TRUE</STRONG> and <STRONG>FALSE</STRONG> have the 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 rou-
+ tines.
+
+
+</PRE><H3><a name="h3-Routine-and-Argument-Names">Routine and Argument Names</a></H3><PRE>
+ 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 coor-
+ dinates.
+
+ In each case, <EM>win</EM> is the window affected, and <EM>pad</EM> is the pad affected;
+ <EM>win</EM> and <EM>pad</EM> are always pointers to type <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>. Most of the data types used in
+ the library routines, such as <STRONG>WINDOW</STRONG>, <STRONG>SCREEN</STRONG>, <STRONG>bool</STRONG>, and <STRONG>chtype</STRONG> are
+ defined in <STRONG>&lt;curses.h&gt;</STRONG>. Types used for the terminfo routines such as
+ <STRONG>TERMINAL</STRONG> are defined in <STRONG>&lt;term.h&gt;</STRONG>.
+
+ This manual page describes functions which may appear in any configura-
+ tion of the library. There are two common configurations of the
+ library:
+
+ <EM>ncurses</EM>
+ the "normal" library, which handles 8-bit characters. The nor-
+ mal (8-bit) library stores characters combined with attributes
+ in <STRONG>chtype</STRONG> data.
+
+ Attributes alone (no corresponding character) may be stored in
+ <STRONG>chtype</STRONG> or the equivalent <STRONG>attr_t</STRONG> data. In either case, the data
+ is stored in something like an integer.
+
+ Each cell (row and column) in a <STRONG>WINDOW</STRONG> is stored as a <STRONG>chtype</STRONG>.
+
+ <EM>ncursesw</EM>
+ the so-called "wide" library, which handles multibyte charac-
+ ters (see the section on <STRONG>ALTERNATE</STRONG> <STRONG>CONFIGURATIONS</STRONG>). The "wide"
+ library includes all of the calls from the "normal" library.
+ It adds about one third more calls using data types which store
+ multibyte characters:
+
+ <STRONG>cchar_t</STRONG>
+ corresponds to <STRONG>chtype</STRONG>. However it is a structure, because
+ more data is stored than can fit into an integer. The
+ characters are large enough to require a full integer
+ value - and there may be more than one character per cell.
+ The video attributes and color are stored in separate
+ fields of the structure.
+
+ Each cell (row and column) in a <STRONG>WINDOW</STRONG> is stored as a
+ <STRONG>cchar_t</STRONG>.
+
+ The <STRONG><A HREF="setcchar.3x.html">setcchar(3x)</A></STRONG> and <STRONG><A HREF="getcchar.3x.html">getcchar(3x)</A></STRONG> functions store and
+ retrieve the data from a <STRONG>cchar_t</STRONG> structure.
+
+ <STRONG>wchar_t</STRONG>
+ stores a "wide" character. Like <STRONG>chtype</STRONG>, this may be an
+ integer.
+
+ <STRONG>wint_t</STRONG>
+ stores a <STRONG>wchar_t</STRONG> or <STRONG>WEOF</STRONG> - not the same, though both may
+ have the same size.
+
+ The "wide" library provides new functions which are analogous
+ to functions in the "normal" library. There is a naming con-
+ vention which relates many of the normal/wide variants: a "_w"
+ is inserted into the name. For example, <STRONG>waddch</STRONG> becomes
+ <STRONG>wadd_wch</STRONG>.
+
+
+</PRE><H3><a name="h3-Routine-Name-Index">Routine Name Index</a></H3><PRE>
+ The following table lists each <STRONG>curses</STRONG> routine and the name of the man-
+ ual page on which it is described. Routines flagged with "*" are
+ ncurses-specific, not described by XPG4 or present in SVr4.
+
+ <STRONG>curses</STRONG> Routine Name Manual Page Name
+ ---------------------------------------------
+ COLOR_PAIR <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
+ PAIR_NUMBER <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
+ _nc_free_and_exit <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>*
+ _nc_freeall <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>*
+ _nc_tracebits <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
+ _traceattr <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
+ _traceattr2 <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
+ _tracechar <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
+ _tracechtype <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
+ _tracechtype2 <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
+ _tracedump <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
+ _tracef <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
+ _tracemouse <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
+ add_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
+ add_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
+ add_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
+ 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>
+ addnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
+ addstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
+ addwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
+ alloc_pair <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>*
+ assume_default_colors <STRONG><A HREF="default_colors.3x.html">default_colors(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>
+ bkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
+ bkgrndset <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
+ border <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
+ border_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
+ box <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
+ box_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(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>
+ curses_version <STRONG><A HREF="curs_extend.3x.html">curs_extend(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>
+ echo_wchar <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(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>
+ erasewchar <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
+ extended_color_content <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>*
+ extended_pair_content <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>*
+ extended_slk_color <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>*
+ filter <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
+ find_pair <STRONG><A HREF="new_pair.3x.html">new_pair(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>
+ free_pair <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>*
+ get_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
+ get_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
+ getattrs <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
+ getbegx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
+ getbegy <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(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>
+ getbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
+ getcchar <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
+ getch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
+ getcurx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
+ getcury <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
+ getmaxx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
+
+ getmaxy <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(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>*
+ getn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
+ getnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
+ getparx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
+ getpary <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(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>
+ hline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(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>
+ in_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
+ in_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
+ in_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
+ inch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
+ inchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
+ inchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
+ init_color <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
+ init_extended_color <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>*
+ init_extended_pair <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>*
+ init_pair <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
+ initscr <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
+ innstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
+ innwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
+ ins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
+ ins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
+ ins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(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>
+ inwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
+ is_cleared <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_idcok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_idlok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_immedok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_keypad <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_leaveok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_linetouched <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
+ is_nodelay <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_notimeout <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_pad <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_scrollok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_subwin <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_syncok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_term_resized <STRONG><A HREF="resizeterm.3x.html">resizeterm(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>
+ key_defined <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>*
+ key_name <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
+ keybound <STRONG><A HREF="keybound.3x.html">keybound(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>
+ killwchar <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>
+ mouse_trafo <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(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>
+ mvadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
+ mvadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
+ mvadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(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>
+ mvaddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
+ mvaddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
+ mvaddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(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>
+ mvget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
+ mvget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
+ mvgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
+ mvgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(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>
+ mvhline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
+ mvin_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
+ mvin_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
+ mvin_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(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>
+ mvinnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
+ mvins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
+ mvins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
+ mvins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(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>
+ mvinwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(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>
+ mvvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
+ mvvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
+ mvwadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
+ mvwadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
+ mvwadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(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>
+ mvwaddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
+ mvwaddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
+ mvwaddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(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>
+ mvwget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
+ mvwget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
+ mvwgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
+ mvwgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(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>
+ mvwhline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
+ mvwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
+ mvwin_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
+ mvwin_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
+ mvwin_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(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>
+ mvwinnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
+ mvwins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
+ mvwins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
+ mvwins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(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>
+ mvwinwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(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>
+ mvwvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(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>
+ nofilter <STRONG><A HREF="curs_util.3x.html">curs_util(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>
+ resize_term <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>*
+ resizeterm <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>*
+ restartterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
+ ripoffline <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
+ savetty <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
+
+ scanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
+ scr_dump <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
+ scr_init <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
+ scr_restore <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
+ scr_set <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
+ scrl <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
+ scroll <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
+ scrollok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
+ set_curterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
+ set_term <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
+ setcchar <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(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>
+ term_attrs <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(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>
+ tiparm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(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>
+ trace <STRONG><A HREF="curs_trace.3x.html">curs_trace(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>
+ unget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(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="default_colors.3x.html">default_colors(3x)</A></STRONG>*
+ use_env <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
+ use_extended_names <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>*
+
+ use_legacy_coding <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>*
+ use_tioctl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>*
+ vid_attr <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
+ vid_puts <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(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>
+ vline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(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>
+ wadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
+ wadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
+ wadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(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>
+ waddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
+ waddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
+ waddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(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>
+ wbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
+ wbkgrndset <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
+ wborder <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
+ wborder_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(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>
+ wecho_wchar <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(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>
+ wget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
+ wget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
+ wgetbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
+ wgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
+ wgetdelay <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ wgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
+ wgetnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
+ wgetparent <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ wgetscrreg <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(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>
+ whline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
+ win_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
+ win_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
+ win_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(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>
+ winnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
+ wins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
+ wins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
+ wins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(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>
+ winwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(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>
+ wredrawln <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
+ wrefresh <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
+ wresize <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>*
+ wscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
+ wscrl <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
+ 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>
+ wunctrl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
+ wvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
+ wvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></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.
+
+ As a general rule, routines check for null pointers passed as parame-
+ ters, and handle this as an error.
+
+ All macros return the value of the <STRONG>w</STRONG> version, except <STRONG>setscrreg</STRONG>,
+ <STRONG>wsetscrreg</STRONG>, <STRONG>getyx</STRONG>, <STRONG>getbegyx</STRONG>, and <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
+ (i.e., 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>RETURN VALUE</H2><PRE>
- Routines that return an integer return <STRONG>ERR</STRONG> upon failure
- and an integer value other than <STRONG>ERR</STRONG> upon successful com-
- pletion, unless otherwise noted in the routine descrip-
- tions.
- As a general rule, routines check for null pointers passed
- as parameters, and handle this as an error.
+</PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE>
+ The following environment symbols are useful for customizing the run-
+ time behavior of the <STRONG>ncurses</STRONG> library. The most important ones have
+ been already discussed in detail.
- All macros return the value of the <STRONG>w</STRONG> version, except
- <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>, <STRONG>getyx</STRONG>, <STRONG>getbegyx</STRONG>, and <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 (i.e., these should not be used
- as the right-hand side of assignment statements).
- Routines that return pointers return <STRONG>NULL</STRONG> on error.
+</PRE><H3><a name="h3-CC-command-character">CC command-character</a></H3><PRE>
+ 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 vari-
+ able. Very few terminfo entries provide this feature.
+ Because this name is also used in development environments to represent
+ the C compiler's name, <STRONG>ncurses</STRONG> ignores it if it does not happen to be a
+ single character.
-</PRE>
-<H2>ENVIRONMENT</H2><PRE>
- The following environment symbols are useful for customiz-
- ing 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 vari-
- able when the application has redirected output to a
- file. The variable'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 variable. Very few ter-
- minfo entries provide this feature.
-
- Because this name is also used in development envi-
- ronments to represent the C compiler's name, <STRONG>ncurses</STRONG>
- ignores it if it does not happen to be a single char-
- acter.
-
- 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 <STRONG>COLUMNS</STRONG>
- 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. 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. However, setting <STRONG>COLUMNS</STRONG> and/or <STRONG>LINES</STRONG>
- overrides the library's use of the screen size
- obtained from the operating system.
-
- Either <STRONG>COLUMNS</STRONG> or <STRONG>LINES</STRONG> 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 all use of exter-
- nal environment (but not including system calls) to
- determine the screen size. Use the <STRONG>use_tioctl</STRONG> func-
- tion to update <STRONG>COLUMNS</STRONG> or <STRONG>LINES</STRONG> to match the screen
- size obtained from system calls or the terminal data-
- base.
-
- 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.
-
- In addition to the environment variable, this imple-
- mentation provides a global variable with the same
- name. Portable applications should not rely upon the
- presence of ESCDELAY in either form, but setting the
- environment variable rather than the global variable
- does not create problems when compiling an applica-
- tion.
-
- 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.
-
- This variable lets you customize the mouse. The
- variable must be three numeric digits 1-3 in any
- order, e.g., 123 or 321. If it is not specified,
- <STRONG>ncurses</STRONG> uses 132.
-
- NCURSES_ASSUMED_COLORS
- Override the compiled-in assumption that the termi-
- nal's default colors are white-on-black (see
- <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>). You may set the foreground and
- background color values with this environment vari-
- able by proving a 2-element list: foreground,back-
- ground. For example, to tell ncurses to not assume
- anything about the colors, set this to "-1,-1". To
- make it green-on-black, set it to "2,0". Any posi-
- tive value from zero to the terminfo <STRONG>max_colors</STRONG> value
- is allowed.
-
- NCURSES_GPM_TERMS
- This applies only to ncurses configured to use the
- GPM interface.
-
- If present, the environment variable is a list of one
- or more terminal names against which the TERM envi-
- ronment variable is matched. Setting it to an empty
- value disables the GPM interface; using the built-in
- support for xterm, etc.
-
- If the environment variable is absent, ncurses will
- attempt to open GPM if TERM contains "linux".
-
- NCURSES_NO_HARD_TABS
- <STRONG>Ncurses</STRONG> may use tabs as part of the cursor movement
- optimization. In some cases, your terminal driver
- may not handle these properly. Set this environment
- variable to disable the feature. You can also adjust
- your <STRONG>stty</STRONG> settings to avoid the problem.
-
- NCURSES_NO_MAGIC_COOKIES
- Some terminals use a magic-cookie feature which
- requires special handling to make highlighting and
- other video attributes display properly. You can
- suppress the highlighting entirely for these termi-
- nals by setting this environment variable.
-
- 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 environment variable 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
- This setting is obsolete. Before changes
-
- <STRONG>o</STRONG> started with 5.9 patch 20120825 and
-
- <STRONG>o</STRONG> continued though 5.9 patch 20130126
-
- <STRONG>ncurses</STRONG> enabled buffered output during terminal ini-
- tialization. This was done (as in SVr4 curses) for
- performance reasons. For testing purposes, both of
- <STRONG>ncurses</STRONG> and certain applications, this feature was
- made optional. Setting the NCURSES_NO_SETBUF vari-
- able disabled output buffering, leaving the output in
- the original (usually line buffered) mode.
-
- In the current implementation, ncurses performs its
- own buffering and does not require this workaround.
- It does not modify the buffering of the standard out-
- put.
-
- The reason for the change was to make the behavior
- for interrupts and other signals more robust. One
- drawback is that certain nonconventional programs
- would mix ordinary stdio calls with ncurses calls and
- (usually) work. This is no longer possible since
- ncurses is not using the buffered standard output but
- its own output (to the same file descriptor). As a
- special case, the low-level calls such as <STRONG>putp</STRONG> still
- use the standard output. But high-level curses calls
- do not.
-
- NCURSES_NO_UTF8_ACS
- During initialization, the <STRONG>ncurses</STRONG> library checks for
- special cases where VT100 line-drawing (and the cor-
- responding alternate character set capabilities)
- described in the terminfo are known to be missing.
- Specifically, when running in a UTF-8 locale, the
- Linux console emulator and the GNU screen program
- ignore these. Ncurses checks the TERM environment
- variable for these. For other special cases, you
- should set this environment variable. Doing this
- tells ncurses to use Unicode values which correspond
- to the VT100 line-drawing glyphs. That works for the
- special cases cited, and is likely to work for termi-
- nal emulators.
-
- When setting this variable, you should set it to a
- nonzero value. Setting it to zero (or to a nonnum-
- ber) disables the special check for "linux" and
- "screen".
-
- As an alternative to the environment variable,
- ncurses checks for an extended terminfo capability
- <STRONG>U8</STRONG>. This is a numeric capability which can be com-
- piled using <STRONG>tic</STRONG> <STRONG>-x</STRONG>. For example
-
- # linux console, if patched to provide working
- # VT100 shift-in/shift-out, with corresponding font.
- linux-vt100|linux console with VT100 line-graphics,
- U8#0, use=linux,
-
- # uxterm with vt100Graphics resource set to false
- xterm-utf8|xterm relying on UTF-8 line-graphics,
- U8#1, use=xterm,
-
- The name "U8" is chosen to be two characters, to per-
- mit it to be used by applications that use ncurses'
- termcap interface.
-
- NCURSES_TRACE
- During initialization, the <STRONG>ncurses</STRONG> debugging library
- checks the NCURSES_TRACE environment variable. 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
- distinct, though many are similar.
-
- TERMCAP
- If the <STRONG>ncurses</STRONG> library has been configured with <EM>term-</EM>
- <EM>cap</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 environment variable contains either a
- terminal description (with newlines stripped out), or
- a file name telling where the information denoted by
- the TERM environment variable 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:
-
- <STRONG>o</STRONG> the last directory to which <STRONG>ncurses</STRONG> wrote, if
- any, is searched first
-
- <STRONG>o</STRONG> the directory specified by the TERMINFO environ-
- ment variable
-
- <STRONG>o</STRONG> $HOME/.terminfo
-
- <STRONG>o</STRONG> directories listed in the TERMINFO_DIRS environ-
- ment variable
-
- <STRONG>o</STRONG> one or more directories whose names are config-
- ured and compiled into the ncurses library, i.e.,
-
- <STRONG>o</STRONG> /usr/local/ncurses/share/ter-
- minfo:/usr/share/terminfo (corresponding to
- the TERMINFO_DIRS variable)
-
- <STRONG>o</STRONG> /usr/share/terminfo (corresponding to the
- TERMINFO variable)
-
- TERMINFO_DIRS
- Specifies a list of directories to search for termi-
- nal descriptions. The list is separated by colons
- (i.e., ":") on Unix, semicolons on OS/2 EMX.
-
- All of the terminal descriptions are in terminfo
- form. Normally these are stored in a directory tree,
- using subdirectories named by the first letter of the
- terminal names therein.
-
- If <STRONG>ncurses</STRONG> is built with a hashed database, then each
- entry in this list can also be the path of the corre-
- sponding database file.
-
- If <STRONG>ncurses</STRONG> is built with a support for reading term-
- cap files directly, then an entry in this list may be
- the path of a termcap file.
-
- TERMPATH
- If TERMCAP does not hold a file name then <STRONG>ncurses</STRONG>
- checks the TERMPATH environment variable. This is a
- list of filenames separated by spaces or colons
- (i.e., ":") on Unix, semicolons on OS/2 EMX.
-
- If the TERMPATH environment variable is not set,
- <STRONG>ncurses</STRONG> looks in the files /etc/termcap,
- /usr/share/misc/termcap and $HOME/.termcap, in that
- order.
-
- The library may be configured to disregard the following
- variables when the current user is the superuser (root),
- or if the application uses setuid or setgid permissions:
- $TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as
- $HOME.
+</PRE><H3><a name="h3-BAUDRATE">BAUDRATE</a></H3><PRE>
+ The debugging library checks this environment variable when the appli-
+ cation has redirected output to a file. The variable'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.
-</PRE>
-<H2>ALTERNATE CONFIGURATIONS</H2><PRE>
- Several different configurations are possible, depending
- on the configure script options used when building
- <STRONG>ncurses</STRONG>. There are a few main options whose effects are
- visible to the applications developer using <STRONG>ncurses</STRONG>:
+</PRE><H3><a name="h3-COLUMNS">COLUMNS</a></H3><PRE>
+ 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 <STRONG>COLUMNS</STRONG> 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. 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. How-
+ ever, setting <STRONG>COLUMNS</STRONG> and/or <STRONG>LINES</STRONG> overrides the library's use of the
+ screen size obtained from the operating system.
+
+ Either <STRONG>COLUMNS</STRONG> or <STRONG>LINES</STRONG> symbols may be specified independently. This
+ is mainly useful to circumvent legacy misfeatures of terminal descrip-
+ tions, 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 descrip-
+ tion for terminals which are run as emulations.
+
+ Use the <STRONG>use_env</STRONG> function to disable all use of external environment
+ (but not including system calls) to determine the screen size. Use the
+ <STRONG>use_tioctl</STRONG> function to update <STRONG>COLUMNS</STRONG> or <STRONG>LINES</STRONG> to match the screen size
+ obtained from system calls or the terminal database.
+
+
+</PRE><H3><a name="h3-ESCDELAY">ESCDELAY</a></H3><PRE>
+ 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 multi-
+ ple-clicking, you may wish to lengthen this default value because the
+ timeout applies to the composed multi-click event as well as the indi-
+ vidual clicks.
+
+ In addition to the environment variable, this implementation provides a
+ global variable with the same name. Portable applications should not
+ rely upon the presence of ESCDELAY in either form, but setting the
+ environment variable rather than the global variable does not create
+ problems when compiling an application.
+
+
+</PRE><H3><a name="h3-HOME">HOME</a></H3><PRE>
+ Tells <STRONG>ncurses</STRONG> where your home directory is. That is where it may read
+ and write auxiliary terminal descriptions:
+
+ $HOME/.termcap
+ $HOME/.terminfo
+
+
+</PRE><H3><a name="h3-LINES">LINES</a></H3><PRE>
+ Like COLUMNS, specify the height of the screen in characters. See COL-
+ UMNS for a detailed description.
+
+
+</PRE><H3><a name="h3-MOUSE_BUTTONS_123">MOUSE_BUTTONS_123</a></H3><PRE>
+ This applies only to the OS/2 EMX port. It specifies the order of but-
+ tons on the mouse. OS/2 numbers a 3-button mouse inconsistently from
+ other platforms:
+
+ 1 = left
+ 2 = right
+ 3 = middle.
+
+ This variable lets you customize the mouse. The variable must be three
+ numeric digits 1-3 in any order, e.g., 123 or 321. If it is not speci-
+ fied, <STRONG>ncurses</STRONG> uses 132.
+
+
+</PRE><H3><a name="h3-NCURSES_ASSUMED_COLORS">NCURSES_ASSUMED_COLORS</a></H3><PRE>
+ Override the compiled-in assumption that the terminal's default colors
+ are white-on-black (see <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>). You may set the fore-
+ ground and background color values with this environment variable by
+ proving a 2-element list: foreground,background. For example, to tell
+ ncurses to not assume anything about the colors, set this to "-1,-1".
+ To make it green-on-black, set it to "2,0". Any positive value from
+ zero to the terminfo <STRONG>max_colors</STRONG> value is allowed.
+
+
+</PRE><H3><a name="h3-NCURSES_CONSOLE2">NCURSES_CONSOLE2</a></H3><PRE>
+ This applies only to the MinGW port of ncurses.
+
+ The <STRONG>Console2</STRONG> program's handling of the Microsoft Console API call <STRONG>Cre-</STRONG>
+ <STRONG>ateConsoleScreenBuffer</STRONG> is defective. Applications which use this will
+ hang. However, it is possible to simulate the action of this call by
+ mapping coordinates, explicitly saving and restoring the original
+ screen contents. Setting the environment variable <STRONG>NCGDB</STRONG> has the same
+ effect.
+
+
+</PRE><H3><a name="h3-NCURSES_GPM_TERMS">NCURSES_GPM_TERMS</a></H3><PRE>
+ This applies only to ncurses configured to use the GPM interface.
+
+ If present, the environment variable is a list of one or more terminal
+ names against which the <STRONG>TERM</STRONG> environment variable is matched. Setting
+ it to an empty value disables the GPM interface; using the built-in
+ support for xterm, etc.
+
+ If the environment variable is absent, ncurses will attempt to open GPM
+ if <STRONG>TERM</STRONG> contains "linux".
+
+
+</PRE><H3><a name="h3-NCURSES_NO_HARD_TABS">NCURSES_NO_HARD_TABS</a></H3><PRE>
+ <STRONG>Ncurses</STRONG> may use tabs as part of the cursor movement optimization. In
+ some cases, your terminal driver may not handle these properly. Set
+ this environment variable to disable the feature. You can also adjust
+ your <STRONG>stty</STRONG> settings to avoid the problem.
+
+
+</PRE><H3><a name="h3-NCURSES_NO_MAGIC_COOKIE">NCURSES_NO_MAGIC_COOKIE</a></H3><PRE>
+ Some terminals use a magic-cookie feature which requires special han-
+ dling to make highlighting and other video attributes display properly.
+ You can suppress the highlighting entirely for these terminals by set-
+ ting this environment variable.
+
+
+</PRE><H3><a name="h3-NCURSES_NO_PADDING">NCURSES_NO_PADDING</a></H3><PRE>
+ 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, pre-
+ venting 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 environment variable to disable all but
+ mandatory padding. Mandatory padding is used as a part of special con-
+ trol sequences such as <EM>flash</EM>.
+
+
+</PRE><H3><a name="h3-NCURSES_NO_SETBUF">NCURSES_NO_SETBUF</a></H3><PRE>
+ This setting is obsolete. Before changes
+
+ <STRONG>o</STRONG> started with 5.9 patch 20120825 and
+
+ <STRONG>o</STRONG> continued though 5.9 patch 20130126
+
+ <STRONG>ncurses</STRONG> enabled buffered output during terminal initialization. This
+ was done (as in SVr4 curses) for performance reasons. For testing pur-
+ poses, both of <STRONG>ncurses</STRONG> and certain applications, this feature was made
+ optional. Setting the NCURSES_NO_SETBUF variable disabled output
+ buffering, leaving the output in the original (usually line buffered)
+ mode.
+
+ In the current implementation, ncurses performs its own buffering and
+ does not require this workaround. It does not modify the buffering of
+ the standard output.
+
+ The reason for the change was to make the behavior for interrupts and
+ other signals more robust. One drawback is that certain nonconven-
+ tional programs would mix ordinary stdio calls with ncurses calls and
+ (usually) work. This is no longer possible since ncurses is not using
+ the buffered standard output but its own output (to the same file
+ descriptor). As a special case, the low-level calls such as <STRONG>putp</STRONG> still
+ use the standard output. But high-level curses calls do not.
+
+
+</PRE><H3><a name="h3-NCURSES_NO_UTF8_ACS">NCURSES_NO_UTF8_ACS</a></H3><PRE>
+ During initialization, the <STRONG>ncurses</STRONG> library checks for special cases
+ where VT100 line-drawing (and the corresponding alternate character set
+ capabilities) described in the terminfo are known to be missing.
+ Specifically, when running in a UTF-8 locale, the Linux console emula-
+ tor and the GNU screen program ignore these. Ncurses checks the <STRONG>TERM</STRONG>
+ environment variable for these. For other special cases, you should
+ set this environment variable. Doing this tells ncurses to use Unicode
+ values which correspond to the VT100 line-drawing glyphs. That works
+ for the special cases cited, and is likely to work for terminal emula-
+ tors.
+
+ When setting this variable, you should set it to a nonzero value. Set-
+ ting it to zero (or to a nonnumber) disables the special check for
+ "linux" and "screen".
+
+ As an alternative to the environment variable, ncurses checks for an
+ extended terminfo capability <STRONG>U8</STRONG>. This is a numeric capability which
+ can be compiled using <STRONG>tic</STRONG> <STRONG>-x</STRONG>. For example
+
+ # linux console, if patched to provide working
+ # VT100 shift-in/shift-out, with corresponding font.
+ linux-vt100|linux console with VT100 line-graphics,
+ U8#0, use=linux,
+
+ # uxterm with vt100Graphics resource set to false
+ xterm-utf8|xterm relying on UTF-8 line-graphics,
+ U8#1, use=xterm,
+
+ The name "U8" is chosen to be two characters, to permit it to be used
+ by applications that use ncurses' termcap interface.
+
+
+</PRE><H3><a name="h3-NCURSES_TRACE">NCURSES_TRACE</a></H3><PRE>
+ During initialization, the <STRONG>ncurses</STRONG> debugging library checks the
+ NCURSES_TRACE environment variable. If it is defined, to a numeric
+ value, <STRONG>ncurses</STRONG> calls the <STRONG>trace</STRONG> function, using that value as the argu-
+ ment.
+
+ The argument values, which are defined in <STRONG>curses.h</STRONG>, provide several
+ types of information. When running with traces enabled, your applica-
+ tion will write the file <STRONG>trace</STRONG> to the current directory.
+
+ See <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG> for more information.
+
+
+</PRE><H3><a name="h3-TERM">TERM</a></H3><PRE>
+ Denotes your terminal type. Each terminal type is distinct, though
+ many are similar.
+
+ <STRONG>TERM</STRONG> is commonly set by terminal emulators to help applications find a
+ workable terminal description. Some of those choose a popular approxi-
+ mation, e.g., "ansi", "vt100", "xterm" rather than an exact fit. Not
+ infrequently, your application will have problems with that approach,
+ e.g., incorrect function-key definitions.
+
+ If you set <STRONG>TERM</STRONG> in your environment, it has no effect on the operation
+ of the terminal emulator. It only affects the way applications work
+ within the terminal. Likewise, as a general rule (<STRONG>xterm</STRONG> being a rare
+ exception), terminal emulators which allow you to specify <STRONG>TERM</STRONG> as a
+ parameter or configuration value do not change their behavior to match
+ that setting.
+
+
+</PRE><H3><a name="h3-TERMCAP">TERMCAP</a></H3><PRE>
+ 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 <STRONG>TERMCAP</STRONG> environment variable contains either a terminal description
+ (with newlines stripped out), or a file name telling where the informa-
+ tion denoted by the <STRONG>TERM</STRONG> environment variable exists. In either case,
+ setting it directs <STRONG>ncurses</STRONG> to ignore the usual place for this informa-
+ tion, e.g., /etc/termcap.
+
+
+</PRE><H3><a name="h3-TERMINFO">TERMINFO</a></H3><PRE>
+ <STRONG>ncurses</STRONG> can be configured to read from multiple terminal databases.
+ The <STRONG>TERMINFO</STRONG> variable overrides the location for the default terminal
+ database. Terminal descriptions (in terminal format) are stored in
+ terminal databases:
+
+ <STRONG>o</STRONG> Normally these are stored in a directory tree, using subdirectories
+ named by the first letter of the terminal names therein.
+
+ This is the scheme used in System V, which legacy Unix systems use,
+ and the <STRONG>TERMINFO</STRONG> variable is used by <EM>curses</EM> applications on those
+ systems to override the default location of the terminal database.
+
+ <STRONG>o</STRONG> If <STRONG>ncurses</STRONG> is built to use hashed databases, then each entry in
+ this list may be the path of a hashed database file, e.g.,
+
+ /usr/share/terminfo.db
+
+ rather than
+
+ /usr/share/terminfo/
+
+ The hashed database uses less disk-space and is a little faster
+ than the directory tree. However, some applications assume the
+ existence of the directory tree, reading it directly rather than
+ using the terminfo library calls.
+
+ <STRONG>o</STRONG> If <STRONG>ncurses</STRONG> is built with a support for reading termcap files
+ directly, then an entry in this list may be the path of a termcap
+ file.
+
+ <STRONG>o</STRONG> If the <STRONG>TERMINFO</STRONG> variable begins with "hex:" or "b64:", <STRONG>ncurses</STRONG> uses
+ the remainder of that variable as a compiled terminal description.
+ You might produce the base64 format using <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>:
+
+ TERMINFO="$(infocmp -0 -Q2 -q)"
+ export TERMINFO
+
+ The compiled description is used if it corresponds to the terminal
+ identified by the <STRONG>TERM</STRONG> variable.
+
+ Setting <STRONG>TERMINFO</STRONG> is the simplest, but not the only way to set location
+ of the default terminal database. The complete list of database loca-
+ tions in order follows:
+
+ <STRONG>o</STRONG> the last terminal database to which <STRONG>ncurses</STRONG> wrote, if any, is
+ searched first
+
+ <STRONG>o</STRONG> the location specified by the TERMINFO environment variable
+
+ <STRONG>o</STRONG> $HOME/.terminfo
+
+ <STRONG>o</STRONG> locations listed in the TERMINFO_DIRS environment variable
+
+ <STRONG>o</STRONG> one or more locations whose names are configured and compiled
+ into the ncurses library, i.e.,
+
+ <STRONG>o</STRONG> /usr/local/ncurses/share/terminfo:/usr/share/terminfo (corre-
+ sponding to the TERMINFO_DIRS variable)
+
+ <STRONG>o</STRONG> /usr/share/terminfo (corresponding to the TERMINFO variable)
+
+
+</PRE><H3><a name="h3-TERMINFO_DIRS">TERMINFO_DIRS</a></H3><PRE>
+ Specifies a list of locations to search for terminal descriptions.
+ Each location in the list is a terminal database as described in the
+ section on the <STRONG>TERMINFO</STRONG> variable. The list is separated by colons
+ (i.e., ":") on Unix, semicolons on OS/2 EMX.
+
+ There is no corresponding feature in System V terminfo; it is an exten-
+ sion developed for <STRONG>ncurses</STRONG>.
+
+
+</PRE><H3><a name="h3-TERMPATH">TERMPATH</a></H3><PRE>
+ If <STRONG>TERMCAP</STRONG> does not hold a file name then <STRONG>ncurses</STRONG> checks the <STRONG>TERMPATH</STRONG>
+ environment variable. This is a list of filenames separated by spaces
+ or colons (i.e., ":") on Unix, semicolons on OS/2 EMX.
+
+ If the <STRONG>TERMPATH</STRONG> environment variable is not set, <STRONG>ncurses</STRONG> looks in the
+ files
+
+ /etc/termcap, /usr/share/misc/termcap and $HOME/.termcap,
+
+ in that order.
+
+ The library may be configured to disregard the following variables when
+ the current user is the superuser (root), or if the application uses
+ setuid or setgid permissions:
+
+ $TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME.
+
+
+</PRE><H2><a name="h2-ALTERNATE-CONFIGURATIONS">ALTERNATE CONFIGURATIONS</a></H2><PRE>
+ Several different configurations are possible, depending on the config-
+ ure script options used when building <STRONG>ncurses</STRONG>. There are a few main
+ options whose effects are visible to the applications developer using
+ <STRONG>ncurses</STRONG>:
--disable-overwrite
- The standard include for <STRONG>ncurses</STRONG> is as noted in <STRONG>SYN-</STRONG>
- <STRONG>OPSIS</STRONG>:
+ The standard include for <STRONG>ncurses</STRONG> is as noted in <STRONG>SYNOPSIS</STRONG>:
- <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+ <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
- This option is used to avoid filename conflicts when
- <STRONG>ncurses</STRONG> is not the main implementation of curses of
- the computer. If <STRONG>ncurses</STRONG> is installed disabling
- overwrite, it puts its headers in a subdirectory,
- e.g.,
+ This option is used to avoid filename conflicts when <STRONG>ncurses</STRONG> is
+ not the main implementation of curses of the computer. If <STRONG>ncurses</STRONG>
+ is installed disabling overwrite, it puts its headers in a subdi-
+ rectory, e.g.,
- <STRONG>#include</STRONG> <STRONG>&lt;ncurses/curses.h&gt;</STRONG>
+ <STRONG>#include</STRONG> <STRONG>&lt;ncurses/curses.h&gt;</STRONG>
- It also omits a symbolic link which would allow you
- to use <STRONG>-lcurses</STRONG> to build executables.
+ It also omits a symbolic link which would allow you to use
+ <STRONG>-lcurses</STRONG> to build executables.
--enable-widec
- The configure script renames the library and (if the
- <STRONG>--disable-overwrite</STRONG> option is used) puts the header
- files in a different subdirectory. All of the
- library names have a "w" appended to them, i.e.,
- instead of
+ The configure script renames the library and (if the <STRONG>--dis-</STRONG>
+ <STRONG>able-overwrite</STRONG> option is used) puts the header files in a differ-
+ ent subdirectory. All of the library names have a "w" appended to
+ them, i.e., instead of
- <STRONG>-lncurses</STRONG>
+ <STRONG>-lncurses</STRONG>
you link with
- <STRONG>-lncursesw</STRONG>
-
- You must also define <STRONG>_XOPEN_SOURCE_EXTENDED</STRONG> when com-
- piling for the wide-character library to use the
- extended (wide-character) functions. The <STRONG>curses.h</STRONG>
- file which is installed for the wide-character
- library is designed to be compatible with the normal
- library's header. Only the size of the <STRONG>WINDOW</STRONG> struc-
- ture differs, and very few applications require more
- than a pointer to <STRONG>WINDOW</STRONG>s. If the headers are
- installed allowing overwrite, the wide-character
- library's headers should be installed last, to allow
- applications to be built using either library from
- the same set of headers.
+ <STRONG>-lncursesw</STRONG>
+
+ You must also enable the wide-character features in the header
+ file when compiling for the wide-character library to use the
+ extended (wide-character) functions. The symbol which enables
+ these features has changed since XSI Curses, Issue 4:
+
+ <STRONG>o</STRONG> Originally, the wide-character feature required the symbol
+ <STRONG>_XOPEN_SOURCE_EXTENDED</STRONG> but that was only valid for XPG4
+ (1996).
+
+ <STRONG>o</STRONG> Later, that was deemed conflicting with <STRONG>_XOPEN_SOURCE</STRONG> defined
+ to 500.
+
+ <STRONG>o</STRONG> As of mid-2018, none of the features in this implementation
+ require a <STRONG>_XOPEN_SOURCE</STRONG> feature greater than 600. However,
+ X/Open Curses, Issue 7 (2009) recommends defining it to 700.
+
+ <STRONG>o</STRONG> Alternatively, you can enable the feature by defining
+ <STRONG>NCURSES_WIDECHAR</STRONG> with the caveat that some other header file
+ than <STRONG>curses.h</STRONG> may require a specific value for <STRONG>_XOPEN_SOURCE</STRONG>
+ (or a system-specific symbol).
+
+ The <STRONG>curses.h</STRONG> file which is installed for the wide-character
+ library is designed to be compatible with the normal library's
+ header. Only the size of the <STRONG>WINDOW</STRONG> structure differs, and very
+ few applications require more than a pointer to <STRONG>WINDOW</STRONG>s.
+
+ If the headers are installed allowing overwrite, the wide-charac-
+ ter library's headers should be installed last, to allow applica-
+ tions to be built using either library from the same set of head-
+ ers.
+
+ --with-pthread
+ The configure script renames the library. All of the library
+ names have a "t" appended to them (before any "w" added by
+ <STRONG>--enable-widec</STRONG>).
+
+ The global variables such as <STRONG>LINES</STRONG> are replaced by macros to allow
+ read-only access. At the same time, setter-functions are provided
+ to set these values. Some applications (very few) may require
+ changes to work with this convention.
--with-shared
@@ -1164,163 +1207,186 @@
--with-debug
--with-profile
- The shared and normal (static) library names differ
- by their suffixes, e.g., <STRONG>libncurses.so</STRONG> and <STRONG>libn-</STRONG>
- <STRONG>curses.a</STRONG>. The debug and profiling libraries add a
- "_g" and a "_p" to the root names respectively, e.g.,
- <STRONG>libncurses_g.a</STRONG> and <STRONG>libncurses_p.a</STRONG>.
+ The shared and normal (static) library names differ by their suf-
+ fixes, e.g., <STRONG>libncurses.so</STRONG> and <STRONG>libncurses.a</STRONG>. The debug and pro-
+ filing libraries add a "_g" and a "_p" to the root names respec-
+ tively, e.g., <STRONG>libncurses_g.a</STRONG> and <STRONG>libncurses_p.a</STRONG>.
--with-trace
- The <STRONG>trace</STRONG> function normally resides in the debug
- library, but it is sometimes useful to configure this
- in the shared library. Configure scripts should
- check for the function's existence rather than assum-
- ing it is always in the debug library.
+ The <STRONG>trace</STRONG> function normally resides in the debug library, but it
+ is sometimes useful to configure this in the shared library. Con-
+ figure scripts should check for the function's existence rather
+ than assuming it is always in the debug library.
-</PRE>
-<H2>FILES</H2><PRE>
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
/usr/share/tabset
- directory containing initialization files for the
- terminal capability database /usr/share/terminfo ter-
- minal capability database
+ directory containing initialization files for the terminal capa-
+ bility database /usr/share/terminfo terminal capability database
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> and related pages whose names begin "curs_"
- for detailed routine descriptions.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> and related pages whose names begin "curs_" for detailed
+ routine descriptions.
<STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
-
-
-</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/term-
- cap 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> <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>, and <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG> man-
- ual pages for details.
-
- The <STRONG>ncurses</STRONG> 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 <STRONG><A HREF="default_colors.3x.html">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 confor-
- mant with XSI Curses. The EXTENDED XSI Curses functional-
- ity (including color support) is supported.
-
- 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.
-
- Unlike other implementations, this one checks parameters
- such as pointers to WINDOW structures to ensure they are
- not null. The main reason for providing this behavior is
- to guard against programmer error. The standard interface
- does not provide a way for the library to tell an applica-
- tion which of several possible errors were detected.
- Relying on this (or some other) extension will adversely
- affect the portability of curses applications.
+ <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG> for user-defined capabilities
+
+
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></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 term-
+ cap 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 resiz-
+ ing 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 <STRONG>SIGWINCH</STRONG> 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> <STRONG><A HREF="key_defined.3x.html">key_defined(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 back-
+ ground 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>default_col-</STRONG>
+ <STRONG><A HREF="default_colors.3x.html">ors(3x)</A></STRONG> manual page for details.
+
+ The <STRONG>ncurses</STRONG> library includes a function for directing application out-
+ put 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><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The <STRONG>ncurses</STRONG> library is intended to be BASE-level conformant with XSI
+ Curses. The EXTENDED XSI Curses functionality (including color sup-
+ port) is supported.
+
+ 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.
+
+ Unlike other implementations, this one checks parameters such as point-
+ ers to WINDOW structures to ensure they are not null. The main reason
+ for providing this behavior is to guard against programmer error. The
+ standard interface does not provide a way for the library to tell an
+ application which of several possible errors were detected. Relying on
+ this (or some other) extension will adversely affect the portability of
+ curses applications.
This implementation also contains several extensions:
- <STRONG>o</STRONG> 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.
+ <STRONG>o</STRONG> 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.
- <STRONG>o</STRONG> 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.
+ <STRONG>o</STRONG> 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.
- <STRONG>o</STRONG> The routines <STRONG>getmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mousein-</STRONG>
- <STRONG>terval</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.
+ <STRONG>o</STRONG> 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.
- <STRONG>o</STRONG> 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.
+ <STRONG>o</STRONG> The routine <STRONG>mcprint</STRONG> was not present in any previous curses imple-
+ mentation. See the <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG> manual page for details.
- <STRONG>o</STRONG> 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.
+ <STRONG>o</STRONG> 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.
- <STRONG>o</STRONG> The WINDOW structure's internal details can be hidden
- from application programs. See <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> for
- the discussion of <STRONG>is_scrollok</STRONG>, etc.
+ <STRONG>o</STRONG> The WINDOW structure's internal details can be hidden from applica-
+ tion programs. See <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> for the discussion of <STRONG>is_scrol-</STRONG>
+ <STRONG>lok</STRONG>, etc.
- <STRONG>o</STRONG> This implementation can be configured to provide rudi-
- mentary support for multi-threaded applications. See
- <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> for details.
+ <STRONG>o</STRONG> This implementation can be configured to provide rudimentary sup-
+ port for multi-threaded applications. See <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> for
+ details.
- <STRONG>o</STRONG> This implementation can also be configured to provide
- a set of functions which improve the ability to manage
- multiple screens. See <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG> for details.
+ <STRONG>o</STRONG> This implementation can also be configured to provide a set of
+ functions which improve the ability to manage multiple screens.
+ See <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG> for details.
- In historic curses versions, delays embedded in the capa-
- bilities <STRONG>cr</STRONG>, <STRONG>ind</STRONG>, <STRONG>cub1</STRONG>, <STRONG>ff</STRONG> and <STRONG>tab</STRONG> activated corresponding
- delay bits in the UNIX tty driver. In this implementa-
- tion, all padding is done by sending NUL bytes. This
- method is slightly more expensive, but narrows the inter-
- face to the UNIX kernel significantly and increases the
- package's portability correspondingly.
+ 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 sending NUL
+ bytes. This method is slightly more expensive, but narrows the inter-
+ face to the UNIX kernel significantly and increases the package's
+ portability correspondingly.
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG>&lt;curses.h&gt;</STRONG> automatically includes the
- header files <STRONG>&lt;stdio.h&gt;</STRONG> and <STRONG>&lt;unctrl.h&gt;</STRONG>.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The header file <STRONG>&lt;curses.h&gt;</STRONG> automatically includes the header files
+ <STRONG>&lt;stdio.h&gt;</STRONG> and <STRONG>&lt;unctrl.h&gt;</STRONG>.
- If standard output from a <STRONG>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 fea-
- ture of AT&amp;T System V Release 3 curses.
+ 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&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><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. Based on pcurses
+ by Pavel Curtis.
- <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>
+ <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Initialization">Initialization</a></li>
+<li><a href="#h3-Datatypes">Datatypes</a></li>
+<li><a href="#h3-Environment-variables">Environment variables</a></li>
+<li><a href="#h3-Routine-and-Argument-Names">Routine and Argument Names</a></li>
+<li><a href="#h3-Routine-Name-Index">Routine Name Index</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-ENVIRONMENT">ENVIRONMENT</a>
+<ul>
+<li><a href="#h3-CC-command-character">CC command-character</a></li>
+<li><a href="#h3-BAUDRATE">BAUDRATE</a></li>
+<li><a href="#h3-COLUMNS">COLUMNS</a></li>
+<li><a href="#h3-ESCDELAY">ESCDELAY</a></li>
+<li><a href="#h3-HOME">HOME</a></li>
+<li><a href="#h3-LINES">LINES</a></li>
+<li><a href="#h3-MOUSE_BUTTONS_123">MOUSE_BUTTONS_123</a></li>
+<li><a href="#h3-NCURSES_ASSUMED_COLORS">NCURSES_ASSUMED_COLORS</a></li>
+<li><a href="#h3-NCURSES_CONSOLE2">NCURSES_CONSOLE2</a></li>
+<li><a href="#h3-NCURSES_GPM_TERMS">NCURSES_GPM_TERMS</a></li>
+<li><a href="#h3-NCURSES_NO_HARD_TABS">NCURSES_NO_HARD_TABS</a></li>
+<li><a href="#h3-NCURSES_NO_MAGIC_COOKIE">NCURSES_NO_MAGIC_COOKIE</a></li>
+<li><a href="#h3-NCURSES_NO_PADDING">NCURSES_NO_PADDING</a></li>
+<li><a href="#h3-NCURSES_NO_SETBUF">NCURSES_NO_SETBUF</a></li>
+<li><a href="#h3-NCURSES_NO_UTF8_ACS">NCURSES_NO_UTF8_ACS</a></li>
+<li><a href="#h3-NCURSES_TRACE">NCURSES_TRACE</a></li>
+<li><a href="#h3-TERM">TERM</a></li>
+<li><a href="#h3-TERMCAP">TERMCAP</a></li>
+<li><a href="#h3-TERMINFO">TERMINFO</a></li>
+<li><a href="#h3-TERMINFO_DIRS">TERMINFO_DIRS</a></li>
+<li><a href="#h3-TERMPATH">TERMPATH</a></li>
+</ul>
+</li>
+<li><a href="#h2-ALTERNATE-CONFIGURATIONS">ALTERNATE CONFIGURATIONS</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/ncurses5-config.1.html b/doc/html/man/ncurses6-config.1.html
index 99c00fb455f0..d0417c0d2486 100644
--- a/doc/html/man/ncurses5-config.1.html
+++ b/doc/html/man/ncurses6-config.1.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
* Copyright (c) 2010 Free Software Foundation, Inc. *
@@ -29,40 +28,37 @@
****************************************************************************
* @Id: MKncu_config.in,v 1.3 2010/03/06 22:29:17 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
-<TITLE>ncurses5-config 1</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>ncurses6-config 1</TITLE>
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>ncurses5-config 1</H1>
-<HR>
+<H1 class="no-header">ncurses6-config 1</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="ncurses5-config.1.html">ncurses5-config(1)</A></STRONG> <STRONG><A HREF="ncurses5-config.1.html">ncurses5-config(1)</A></STRONG>
+<STRONG><A HREF="ncurses6-config.1.html">ncurses6-config(1)</A></STRONG> General Commands Manual <STRONG><A HREF="ncurses6-config.1.html">ncurses6-config(1)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- ncurses5-config - helper script for ncurses libraries
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ ncurses6-config - helper script for ncurses libraries
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>ncurses5-config</STRONG> [<EM>options</EM>]
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <STRONG>ncurses6-config</STRONG> [<EM>options</EM>]
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- This is a shell script which simplifies configuring appli-
- cations against a particular set of ncurses libraries.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ This is a shell script which simplifies configuring applications
+ against a particular set of ncurses libraries.
-</PRE>
-<H2>OPTIONS</H2><PRE>
+</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
<STRONG>--prefix</STRONG>
echos the package-prefix of ncurses
@@ -70,8 +66,7 @@
echos the executable-prefix of ncurses
<STRONG>--cflags</STRONG>
- echos the C compiler flags needed to compile with
- ncurses
+ echos the C compiler flags needed to compile with ncurses
<STRONG>--libs</STRONG> echos the libraries needed to link with ncurses
@@ -105,30 +100,32 @@
<STRONG>--terminfo-dirs</STRONG>
echos the $TERMINFO_DIRS directory list, e.g.,
- /usr/local/ncurses/share/terminfo:/usr/share/ter-
- minfo
+ /usr/local/ncurses/share/terminfo:/usr/share/terminfo
<STRONG>--termpath</STRONG>
- echos the $TERMPATH termcap list, if support for
- termcap is configured.
+ echos the $TERMPATH termcap list, if support for termcap is con-
+ figured.
<STRONG>--help</STRONG> prints this message
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
- <STRONG><A HREF="ncurses5-config.1.html">ncurses5-config(1)</A></STRONG>
+ <STRONG><A HREF="ncurses6-config.1.html">ncurses6-config(1)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-OPTIONS">OPTIONS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/new_pair.3x.html b/doc/html/man/new_pair.3x.html
new file mode 100644
index 000000000000..30740285cb7b
--- /dev/null
+++ b/doc/html/man/new_pair.3x.html
@@ -0,0 +1,186 @@
+<!--
+ ****************************************************************************
+ * Copyright (c) 2017,2018 Free 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
+ * @Id: new_pair.3x,v 1.13 2018/07/28 22:19:56 tom Exp @
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>new_pair 3x</TITLE>
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
+<BODY>
+<H1 class="no-header">new_pair 3x</H1>
+<PRE>
+<STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG> <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>
+
+
+
+
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>alloc_pair</STRONG>, <STRONG>find_pair</STRONG>, <STRONG>free_pair</STRONG> - new curses color-pair functions
+
+
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+
+ <STRONG>int</STRONG> <STRONG>alloc_pair(int</STRONG> <STRONG>fg,</STRONG> <STRONG>int</STRONG> <STRONG>bg);</STRONG>
+ <STRONG>int</STRONG> <STRONG>find_pair(int</STRONG> <STRONG>fg,</STRONG> <STRONG>int</STRONG> <STRONG>bg);</STRONG>
+ <STRONG>int</STRONG> <STRONG>free_pair(int</STRONG> <STRONG>pair);</STRONG>
+
+
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These functions are an extension to the curses library. They permit an
+ application to dynamically allocate a color pair using the fore-
+ ground/background colors rather than assign a fixed color pair number,
+ and return an unused pair to the pool.
+
+ The number of colors may be related to the number of possible color
+ pairs for a given terminal, or it may not:
+
+ <STRONG>o</STRONG> While almost all terminals allow setting the color <EM>attributes</EM> inde-
+ pendently, it is unlikely that your terminal allows you to modify
+ the attributes of a given character cell without rewriting it.
+ That is, the foreground and background colors are applied as a
+ pair.
+
+ <STRONG>o</STRONG> Color pairs are the curses library's way of managing a color pal-
+ ette on a terminal. If the library does not keep track of the <EM>com-</EM>
+ <EM>binations</EM> of colors which are displayed, it will be inefficient.
+
+ <STRONG>o</STRONG> For simple terminal emulators with only a few dozen color combina-
+ tions, it is convenient to use the maximum number of combinations
+ as the limit on color pairs:
+
+ <STRONG>COLORS</STRONG> <EM>*</EM> <STRONG>COLORS</STRONG>
+
+ <STRONG>o</STRONG> Terminals which support <EM>default</EM> <EM>colors</EM> distinct from "ANSI colors"
+ add to the possible combinations, producing this total:
+
+ <EM>(</EM> <STRONG>COLORS</STRONG> <EM>+</EM> <EM>1</EM> <EM>)</EM> <EM>*</EM> <EM>(</EM> <STRONG>COLORS</STRONG> <EM>+</EM> <EM>1</EM> <EM>)</EM>
+
+ <STRONG>o</STRONG> An application might use up to a few dozen color pairs to implement
+ a predefined color scheme.
+
+ Beyond that lies in the realm of programs using the foreground and
+ background colors for "ASCII art" (or some other non-textual appli-
+ cation).
+
+ Also beyond those few dozen pairs, the required size for a table to
+ represent the combinations grows rapidly with an increasing number
+ of colors.
+
+ These functions allow a developer to let the screen library manage
+ color pairs.
+
+
+</PRE><H3><a name="h3-alloc_pair">alloc_pair</a></H3><PRE>
+ The <STRONG>alloc_pair</STRONG> function accepts parameters for foreground and back-
+ ground color, and checks if that color combination is already associ-
+ ated with a color pair.
+
+ <STRONG>o</STRONG> If the combination already exists, <STRONG>alloc_pair</STRONG> returns the existing
+ pair.
+
+ <STRONG>o</STRONG> If the combination does not exist, <STRONG>alloc_pair</STRONG> allocates a new color
+ pair and returns that.
+
+ <STRONG>o</STRONG> If the table fills up, <STRONG>alloc_pair</STRONG> discards the least-recently allo-
+ cated entry using <STRONG>free_pair</STRONG> and allocates a new color pair.
+
+ All of the color pairs are allocated from a table of possible color
+ pairs. The size of the table is determined by the terminfo <EM>pairs</EM> capa-
+ bility. The table is shared with <STRONG>init_pair</STRONG>; in fact <STRONG>alloc_pair</STRONG> calls
+ <STRONG>init_pair</STRONG> after updating the ncurses library's fast index to the colors
+ versus color pairs.
+
+
+</PRE><H3><a name="h3-find_pair">find_pair</a></H3><PRE>
+ The <STRONG>find_pair</STRONG> function accepts parameters for foreground and background
+ color, and checks if that color combination is already associated with
+ a color pair, returning the pair number if it has been allocated. Oth-
+ erwise it returns -1.
+
+
+</PRE><H3><a name="h3-free_pair">free_pair</a></H3><PRE>
+ Marks the given color pair as unused, i.e., like color pair 0.
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The <STRONG>alloc_pair</STRONG> function returns a color pair number in the range 1
+ through <STRONG>COLOR_PAIRS</STRONG>-1, unless it encounters an error updating its fast
+ index to the color pair values, preventing it from allocating a color
+ pair. In that case, it returns -1.
+
+ The <STRONG>find_pair</STRONG> function returns a color pair number if the given color
+ combination has been associated with a color pair, or -1 if not.
+
+ Likewise, <STRONG>free_pair</STRONG> returns <STRONG>OK</STRONG> unless it encounters an error updating
+ the fast index or if no such color pair is in use.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></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 conditioned using NCURSES_VERSION.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>.
+
+
+</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
+ Thomas Dickey.
+
+
+
+ <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>
+</PRE>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-alloc_pair">alloc_pair</a></li>
+<li><a href="#h3-find_pair">find_pair</a></li>
+<li><a href="#h3-free_pair">free_pair</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
+</BODY>
+</HTML>
diff --git a/doc/html/man/panel.3x.html b/doc/html/man/panel.3x.html
index 8f9af37b9eee..3304dff61223 100644
--- a/doc/html/man/panel.3x.html
+++ b/doc/html/man/panel.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,140 +26,126 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: panel.3x,v 1.17 2010/10/02 23:22:44 tom Exp @
+ * @Id: panel.3x,v 1.27 2019/03/23 19:23:01 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>panel 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>panel 3x</H1>
-<HR>
+<H1 class="no-header">panel 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG> <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>
+<STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG> <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
panel - panel stack extension for curses
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;panel.h&gt;</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, hide, 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>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(void);</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><a name="h2-DESCRIPTION">DESCRIPTION</a></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 por-
+ tions of each window and the curses <STRONG>stdscr</STRONG> window are hidden or dis-
+ played when panels are added, moved, modified or removed. The set of
+ currently 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 routines enable you
+ to create, move, hide, 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 terminfo curses does.
+
+
+</PRE><H2><a name="h2-FUNCTIONS">FUNCTIONS</a></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>update_panels()</STRONG>
- 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 <STRONG>wrefresh</STRONG> or <STRONG>wnoutrefresh</STRONG>.
- <STRONG>update_panels</STRONG> may be called more than once before a
- call to doupdate(), but doupdate() is the function
- responsible for updating the physical screen.
+ 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>update_panels</STRONG>
+ refreshes the <EM>virtual</EM> <EM>screen</EM> to reflect the relations between
+ the panels in the stack, but does not call <STRONG>doupdate</STRONG> to refresh
+ the <EM>physical</EM> <EM>screen</EM>. Use this function and not <STRONG>wrefresh</STRONG> or
+ <STRONG>wnoutrefresh</STRONG>. <STRONG>update_panels</STRONG> may be called more than once before
+ a call to <STRONG>doupdate</STRONG>, but <STRONG>doupdate</STRONG> is the function responsible for
+ updating the <EM>physical</EM> <EM>screen</EM>.
<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).
+ removes the given panel from the stack and deallocates 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.
+ 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>panel_hidden(pan)</STRONG>
- returns TRUE if the panel is in the panel stack,
- FALSE if it is not. If the panel is a null
- pointer, return ERR.
+ returns <STRONG>TRUE</STRONG> if the panel is in the panel stack, <STRONG>FALSE</STRONG> if it is
+ not. If the panel is a null pointer, return <STRONG>ERR</STRONG>.
<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.
+ 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.
+ 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.
+ 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.
+ 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.
+ 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.
+ 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.
@@ -172,70 +157,79 @@
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><a name="h2-DIAGNOSTICS">DIAGNOSTICS</a></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 suc-
+ cessfully 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><a name="h2-COMPATIBILITY">COMPATIBILITY</a></H2><PRE>
+ Reasonable care has been taken to ensure compatibility with the
+ native panel facility introduced in System V (inspection of the SVr4
+ manual pages suggests the programming interface is unchanged). The
+ <STRONG>PANEL</STRONG> data structures are merely similar. The programmer is cau-
+ tioned not to directly use <STRONG>PANEL</STRONG> fields.
+ The functions <STRONG>show_panel</STRONG> and <STRONG>top_panel</STRONG> are identical in this implemen-
+ tation, and work equally well with displayed or hidden panels. In the
+ native System V implementation, <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 compat-
+ ibility 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 usually give a link-
- error).
+</PRE><H2><a name="h2-NOTE">NOTE</a></H2><PRE>
+ In your library list, libpanel.a should be before libncurses.a; that
+ is, you should say "-lpanel -lncurses", not the other way around (which
+ would give a link-error with static libraries).
-</PRE>
-<H2>FILES</H2><PRE>
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The panel facility was documented in SVr4.2 in <EM>Character</EM> <EM>User</EM> <EM>Interface</EM>
+ <EM>Programming</EM> <EM>(UNIX</EM> <EM>SVR4.2)</EM>.
+
+ It is not part of X/Open Curses.
+
+ Aside from ncurses, only systems based on SVr4 source code, e.g.,
+ Solaris provide this library.
+
+
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
panel.h interface for the panels library
libpanel.a the panels library itself
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
- This describes <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
-</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><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
+ Originally written by Warren Tucker &lt;wht@n4hgf.mt-park.ga.us&gt;, primar-
+ ily to assist in porting u386mon to systems without a native panels
+ library. Repackaged for ncurses by Zeyd ben-Halim.
- <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>
+ <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-FUNCTIONS">FUNCTIONS</a></li>
+<li><a href="#h2-DIAGNOSTICS">DIAGNOSTICS</a></li>
+<li><a href="#h2-COMPATIBILITY">COMPATIBILITY</a></li>
+<li><a href="#h2-NOTE">NOTE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/resizeterm.3x.html b/doc/html/man/resizeterm.3x.html
index 5f2defe2ab72..a1e20f90ab52 100644
--- a/doc/html/man/resizeterm.3x.html
+++ b/doc/html/man/resizeterm.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,32 +27,31 @@
* authorization. *
****************************************************************************
* Author: Thomas E. Dickey 1996-on
- * @Id: resizeterm.3x,v 1.17 2013/06/22 20:41:54 tom Exp @
+ * @Id: resizeterm.3x,v 1.26 2019/09/21 23:44:41 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>resizeterm 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>resizeterm 3x</H1>
-<HR>
+<H1 class="no-header">resizeterm 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>
+<STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>is_term_resized</STRONG>, <STRONG>resize_term</STRONG>, <STRONG>resizeterm</STRONG> - change the
- curses terminal size
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>is_term_resized</STRONG>, <STRONG>resize_term</STRONG>, <STRONG>resizeterm</STRONG> - change the curses terminal
+ size
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>bool</STRONG> <STRONG>is_term_resized(int</STRONG> <STRONG>lines,</STRONG> <STRONG>int</STRONG> <STRONG>columns);</STRONG>
@@ -61,80 +59,125 @@
<STRONG>int</STRONG> <STRONG>resizeterm(int</STRONG> <STRONG>lines,</STRONG> <STRONG>int</STRONG> <STRONG>columns);</STRONG>
-</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-
- dows, primarily for use by programs running in an X Window
- terminal (e.g., xterm). The function <STRONG>resizeterm</STRONG> 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 such as
- the <STRONG>LINES</STRONG> and <STRONG>COLS</STRONG> variables.
-
- Most of the work is done by the inner function
- <STRONG>resize_term</STRONG>. The outer function <STRONG>resizeterm</STRONG> adds bookkeep-
- ing for the SIGWINCH handler. When resizing the windows,
- <STRONG>resize_term</STRONG> blank-fills the areas that are extended. The
- calling application should fill in these areas with appro-
- priate data. The <STRONG>resize_term</STRONG> function attempts to resize
- all windows. However, due to the calling convention of
- pads, it is not possible to resize these without addi-
- tional interaction with the application.
-
- A support function <STRONG>is_term_resized</STRONG> is provided so that
- applications can check if the <STRONG>resize_term</STRONG> function would
- modify the window structures. It returns TRUE if the win-
- dows would be modified, and FALSE otherwise.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ This is an extension to the curses library. It provides callers with a
+ hook into the <STRONG>ncurses</STRONG> data to resize windows, primarily for use by pro-
+ grams running in an X Window terminal (e.g., xterm).
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- Except as noted, these functions return the integer <STRONG>ERR</STRONG>
- upon failure and <STRONG>OK</STRONG> on success. They will fail if either
- of the dimensions are less than or equal to zero, or if an
- error occurs while (re)allocating memory for the windows.
+</PRE><H3><a name="h3-resizeterm">resizeterm</a></H3><PRE>
+ The function <STRONG>resizeterm</STRONG> resizes the standard and current windows to the
+ specified dimensions, and adjusts other bookkeeping data used by the
+ <STRONG>ncurses</STRONG> library that record the window dimensions such as the <STRONG>LINES</STRONG> and
+ <STRONG>COLS</STRONG> variables.
-</PRE>
-<H2>NOTES</H2><PRE>
- While these functions are intended to be used to support a
- signal handler (i.e., for SIGWINCH), care should be taken
- to avoid invoking them in a context where <STRONG>malloc</STRONG> or <STRONG>real-</STRONG>
- <STRONG>loc</STRONG> may have been interrupted, since it uses those func-
- tions.
-
- If ncurses is configured to supply its own SIGWINCH han-
- dler, the <STRONG>resizeterm</STRONG> function <STRONG>ungetch</STRONG>'s a <STRONG>KEY_RESIZE</STRONG> which
- will be read on the next call to <STRONG>getch</STRONG>. 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.
-
- If the environment variables <STRONG>LINES</STRONG> or <STRONG>COLUMNS</STRONG> are set,
- this overrides the library's use of the window size
- obtained from the operating system. Thus, even if a SIG-
- WINCH is received, no screen size change may be recorded.
+</PRE><H3><a name="h3-resize_term">resize_term</a></H3><PRE>
+ Most of the work is done by the inner function <STRONG>resize_term</STRONG>. The outer
+ function <STRONG>resizeterm</STRONG> adds bookkeeping for the <STRONG>SIGWINCH</STRONG> handler, as well
+ as repainting the soft-key area (see <STRONG><A HREF="slk_touch.3x.html">slk_touch(3x)</A></STRONG>).
+ When resizing the windows, <STRONG>resize_term</STRONG> blank-fills the areas that are
+ extended. The calling application should fill in these areas with
+ appropriate data.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+ The <STRONG>resize_term</STRONG> function attempts to resize all windows. However, due
+ to the calling convention of pads, it is not possible to resize these
+ without additional interaction with the application.
+
+ When resizing windows, <STRONG>resize_term</STRONG> recursively adjusts subwindows,
+ keeping them within the updated parent window's limits. If a top-level
+ window happens to extend to the screen's limits, then on resizing the
+ window, <STRONG>resize_term</STRONG> will keep the window extending to the corresponding
+ limit, regardless of whether the screen has shrunk or grown.
+
+
+</PRE><H3><a name="h3-is_term_resized">is_term_resized</a></H3><PRE>
+ A support function <STRONG>is_term_resized</STRONG> is provided so that applications can
+ check if the <STRONG>resize_term</STRONG> function would modify the window structures.
+ It returns <STRONG>TRUE</STRONG> if the windows would be modified, and <STRONG>FALSE</STRONG> otherwise.
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ Except as noted, these functions return the integer <STRONG>ERR</STRONG> upon failure
+ and <STRONG>OK</STRONG> on success. They will fail if either of the dimensions are less
+ than or equal to zero, or if an error occurs while (re)allocating mem-
+ ory for the windows.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ While these functions are intended to be used to support a signal han-
+ dler (i.e., for <STRONG>SIGWINCH</STRONG>), care should be taken to avoid invoking them
+ in a context where <STRONG>malloc</STRONG> or <STRONG>realloc</STRONG> may have been interrupted, since
+ it uses those functions.
+
+ If ncurses is configured to supply its own <STRONG>SIGWINCH</STRONG> handler,
+
+ <STRONG>o</STRONG> on receipt of a <STRONG>SIGWINCH</STRONG>, the handler sets a flag
+
+ <STRONG>o</STRONG> which is tested in <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> and <STRONG>doupdate</STRONG>,
+
+ <STRONG>o</STRONG> in turn, calling the <STRONG>resizeterm</STRONG> function,
+
+ <STRONG>o</STRONG> which <STRONG>ungetch</STRONG>'s a <STRONG>KEY_RESIZE</STRONG> which will be read on the next call to
+ <STRONG>wgetch</STRONG>.
+
+ The <STRONG>KEY_RESIZE</STRONG> alerts an application that the screen size has
+ changed, and that it should repaint special features such as pads
+ that cannot be done automatically.
+
+ Calling <STRONG>resizeterm</STRONG> or <STRONG>resize_term</STRONG> directly from a signal handler is
+ unsafe. This indirect method is used to provide a safe way to
+ resize the ncurses data structures.
+
+ If the environment variables <STRONG>LINES</STRONG> or <STRONG>COLUMNS</STRONG> are set, this overrides
+ the library's use of the window size obtained from the operating sys-
+ tem. Thus, even if a <STRONG>SIGWINCH</STRONG> is received, no screen size change may
+ be recorded.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ It is possible to resize the screen with SVr4 curses, by
+
+ <STRONG>o</STRONG> exiting curses with <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> and
+
+ <STRONG>o</STRONG> resuming using <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>.
+
+ Doing that clears the screen and is visually distracting.
+
+ This extension of ncurses was introduced in mid-1995. It was adopted
+ in NetBSD curses (2001) and PDCurses (2003).
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>.
-</PRE>
-<H2>AUTHOR</H2><PRE>
- Thomas Dickey (from an equivalent function written in 1988
- for BSD curses).
+</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
+ Thomas Dickey (from an equivalent function written in 1988 for BSD
+ curses).
- <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>
+ <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-resizeterm">resizeterm</a></li>
+<li><a href="#h3-resize_term">resize_term</a></li>
+<li><a href="#h3-is_term_resized">is_term_resized</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/scr_dump.5.html b/doc/html/man/scr_dump.5.html
new file mode 100644
index 000000000000..55b0e85349e1
--- /dev/null
+++ b/doc/html/man/scr_dump.5.html
@@ -0,0 +1,435 @@
+<!--
+ ****************************************************************************
+ * Copyright (c) 2017,2018 Free 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: scr_dump.5,v 1.15 2018/07/28 21:46:15 tom Exp @
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>scr_dump 5</TITLE>
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
+<BODY>
+<H1 class="no-header">scr_dump 5</H1>
+<PRE>
+<STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG> File Formats Manual <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>
+
+
+
+
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ scr_dump - format of curses screen-dumps.
+
+
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <STRONG>scr_dump</STRONG>
+
+
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The curses library provides applications with the ability to write the
+ contents of a window to an external file using <STRONG>scr_dump</STRONG> or <STRONG>putwin</STRONG>, and
+ read it back using <STRONG>scr_restore</STRONG> or <STRONG>getwin</STRONG>.
+
+ The <STRONG>putwin</STRONG> and <STRONG>getwin</STRONG> functions do the work; while <STRONG>scr_dump</STRONG> and
+ <STRONG>scr_restore</STRONG> conveniently save and restore the whole screen, i.e., <STRONG>std-</STRONG>
+ <STRONG>scr</STRONG>.
+
+
+</PRE><H3><a name="h3-ncurses6">ncurses6</a></H3><PRE>
+ A longstanding implementation of screen-dump was revised with ncurses6
+ to remedy problems with the earlier approach:
+
+ <STRONG>o</STRONG> A "magic number" is written to the beginning of the dump file,
+ allowing applications (such as <STRONG>file(1)</STRONG>) to recognize curses dump
+ files.
+
+ Because ncurses6 uses a new format, that requires a new magic num-
+ ber was unused by other applications. This 16-bit number was
+ unused:
+
+ 0x8888 (octal "\210\210")
+
+ but to be more certain, this 32-bit number was chosen:
+
+ 0x88888888 (octal "\210\210\210\210")
+
+ This is the pattern submitted to the maintainers of the <STRONG>file</STRONG> pro-
+ gram:
+
+ #
+ # ncurses5 (and before) did not use a magic number,
+ # making screen dumps "data".
+ #
+ # ncurses6 (2015) uses this format, ignoring byte-order
+ 0 string \210\210\210\210ncurses ncurses6 screen image
+ #
+
+ <STRONG>o</STRONG> The screen dumps are written in textual form, so that internal data
+ sizes are not directly related to the dump-format, and enabling the
+ library to read dumps from either narrow- or wide-character- con-
+ figurations.
+
+ The <EM>narrow</EM> library configuration holds characters and video
+ attributes in a 32-bit <STRONG>chtype</STRONG>, while the <EM>wide-character</EM> library
+ stores this information in the <STRONG>cchar_t</STRONG> structure, which is much
+ larger than 32-bits.
+
+ <STRONG>o</STRONG> It is possible to read a screen dump into a terminal with a differ-
+ ent screen-size, because the library truncates or fills the screen
+ as necessary.
+
+ <STRONG>o</STRONG> The ncurses6 <STRONG>getwin</STRONG> reads the legacy screen dumps from ncurses5.
+
+
+</PRE><H3><a name="h3-ncurses5-_legacy_">ncurses5 (legacy)</a></H3><PRE>
+ The screen-dump feature was added to ncurses in June 1995. While there
+ were fixes and improvements in succeeding years, the basic scheme was
+ unchanged:
+
+ <STRONG>o</STRONG> The <STRONG>WINDOW</STRONG> structure was written in binary form.
+
+ <STRONG>o</STRONG> The <STRONG>WINDOW</STRONG> structure refers to lines of data, which were written as
+ an array of binary data following the <STRONG>WINDOW</STRONG>.
+
+ <STRONG>o</STRONG> When <STRONG>getwin</STRONG> restored the window, it would keep track of offsets
+ into the array of line-data and adjust the <STRONG>WINDOW</STRONG> structure which
+ was read back into memory.
+
+ This is similar to Unix SystemV, but does not write a "magic number" to
+ identify the file format.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ There is no standard format for <STRONG>putwin</STRONG>. This section gives a brief
+ description of the existing formats.
+
+
+</PRE><H3><a name="h3-X_Open-Curses">X/Open Curses</a></H3><PRE>
+ Refer to <EM>X/Open</EM> <EM>Curses,</EM> <EM>Issue</EM> <EM>7</EM> (2009).
+
+ X/Open's documentation for <EM>enhanced</EM> <EM>curses</EM> says only:
+
+ The <EM>getwin(</EM> <EM>)</EM> function reads window-related data stored in the file
+ by <EM>putwin(</EM> <EM>)</EM>. The function then creates and initializes a new win-
+ dow using that data.
+
+ The <EM>putwin(</EM> <EM>)</EM> function writes all data associated with <EM>win</EM> into the
+ <EM>stdio</EM> stream to which <EM>filep</EM> points, using an <STRONG>unspecified</STRONG> <STRONG>format</STRONG>.
+ This information can be retrieved later using <EM>getwin(</EM> <EM>)</EM>.
+
+ In the mid-1990s when the X/Open Curses document was written, there
+ were still systems using older, less capable curses libraries (aside
+ from the BSD curses library which was not relevant to X/Open because it
+ did not meet the criteria for <EM>base</EM> <EM>curses</EM>). The document explained the
+ term "enhanced" as follows:
+
+ <STRONG>o</STRONG> Shading is used to identify <EM>X/Open</EM> <EM>Enhanced</EM> <EM>Curses</EM> material,
+ relating to interfaces included to provide enhanced capabilities
+ for applications originally written to be compiled on systems
+ based on the UNIX operating system. Therefore, the features
+ described may not be present on systems that conform to <STRONG>XPG4</STRONG> <STRONG>or</STRONG>
+ <STRONG>to</STRONG> <STRONG>earlier</STRONG> <STRONG>XPG</STRONG> <STRONG>releases</STRONG>. The relevant reference pages may pro-
+ vide additional or more specific portability warnings about use
+ of the material.
+
+ In the foregoing, emphasis was added to <STRONG>unspecified</STRONG> <STRONG>format</STRONG> and to <STRONG>XPG4</STRONG>
+ <STRONG>or</STRONG> <STRONG>to</STRONG> <STRONG>earlier</STRONG> <STRONG>XPG</STRONG> <STRONG>releases</STRONG>, for clarity.
+
+
+</PRE><H3><a name="h3-Unix-SystemV">Unix SystemV</a></H3><PRE>
+ Unix SystemV curses identified the file format by writing a "magic num-
+ ber" at the beginning of the dump. The <STRONG>WINDOW</STRONG> data and the lines of
+ text follow, all in binary form.
+
+ The Solaris curses source has these definitions:
+
+ /* terminfo magic number */
+ #define MAGNUM 0432
+
+ /* curses screen dump magic number */
+ #define SVR2_DUMP_MAGIC_NUMBER 0433
+ #define SVR3_DUMP_MAGIC_NUMBER 0434
+
+ That is, the feature was likely introduced in SVr2 (1984), and improved
+ in SVr3 (1987). The Solaris curses source has no magic number for SVr4
+ (1989). Other operating systems (AIX and HPUX) use a magic number
+ which would correspond to this definition:
+
+ /* curses screen dump magic number */
+ #define SVR4_DUMP_MAGIC_NUMBER 0435
+
+ That octal number in bytes is 001, 035. Because most Unix vendors use
+ big-endian hardware, the magic number is written with the high-order
+ byte first, e.g.,
+
+ 01 35
+
+ After the magic number, the <STRONG>WINDOW</STRONG> structure and line-data are written
+ in binary format. While the magic number used by the Unix systems can
+ be seen using <STRONG>od(1)</STRONG>, none of the Unix systems documents the format used
+ for screen-dumps.
+
+ The Unix systems do not use identical formats. While collecting infor-
+ mation for for this manual page, the <EM>savescreen</EM> test-program produced
+ dumps of different size (all on 64-bit hardware, on 40x80 screens):
+
+ <STRONG>o</STRONG> AIX (51817 bytes)
+
+ <STRONG>o</STRONG> HPUX (90093 bytes)
+
+ <STRONG>o</STRONG> Solaris 10 (13273 bytes)
+
+ <STRONG>o</STRONG> ncurses5 (12888 bytes)
+
+
+</PRE><H3><a name="h3-Solaris">Solaris</a></H3><PRE>
+ As noted above, Solaris curses has no magic number corresponding to
+ SVr4 curses. This is odd since Solaris was the first operating system
+ to pass the SVr4 guidelines. Solaris has two versions of curses:
+
+ <STRONG>o</STRONG> The default curses library uses the SVr3 magic number.
+
+ <STRONG>o</STRONG> There is an alternate curses library in <STRONG>/usr/xpg4</STRONG>. This uses a
+ textual format with no magic number.
+
+ According to the copyright notice, the <EM>xpg4</EM> Solaris curses library
+ was developed by MKS (Mortice Kern Systems) from 1990 to 1995.
+
+ Like ncurses6, there is a file-header with parameters. Unlike
+ ncurses6, the contents of the window are written piecemeal, with
+ coordinates and attributes for each chunk of text rather than writ-
+ ing the whole window from top to bottom.
+
+
+</PRE><H3><a name="h3-PDCurses">PDCurses</a></H3><PRE>
+ PDCurses added support for screen dumps in version 2.7 (2005). Like
+ Unix SystemV and ncurses5, it writes the <STRONG>WINDOW</STRONG> structure in binary,
+ but begins the file with its three-byte identifier "PDC", followed by a
+ one-byte version, e.g.,
+
+ "PDC\001"
+
+
+</PRE><H3><a name="h3-NetBSD">NetBSD</a></H3><PRE>
+ As of April 2017, NetBSD curses does not support <STRONG>scr_dump</STRONG> and
+ <STRONG>scr_restore</STRONG> (or <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG>), although it has <STRONG>putwin</STRONG> and <STRONG>getwin</STRONG>.
+
+ Like ncurses5, NetBSD <STRONG>putwin</STRONG> does not identify its dumps with a useful
+ magic number. It writes
+
+ <STRONG>o</STRONG> the curses shared library major and minor versions as the first two
+ bytes (e.g., 7 and 1),
+
+ <STRONG>o</STRONG> followed by a binary dump of the <STRONG>WINDOW</STRONG>,
+
+ <STRONG>o</STRONG> some data for wide-characters referenced by the <STRONG>WINDOW</STRONG> structure,
+ and
+
+ <STRONG>o</STRONG> finally, lines as done by other implementations.
+
+
+</PRE><H2><a name="h2-EXAMPLE">EXAMPLE</a></H2><PRE>
+ Given a simple program which writes text to the screen (and for the
+ sake of example, limiting the screen-size to 10x20):
+
+ #include &lt;curses.h&gt;
+
+ int
+ main(void)
+ {
+ putenv("LINES=10");
+ putenv("COLUMNS=20");
+ initscr();
+ start_color();
+ init_pair(1, COLOR_WHITE, COLOR_BLUE);
+ init_pair(2, COLOR_RED, COLOR_BLACK);
+ bkgd(<STRONG>COLOR_PAIR(1)</STRONG>);
+ move(4, 5);
+ attron(A_BOLD);
+ addstr("Hello");
+ move(5, 5);
+ attroff(A_BOLD);
+ attrset(A_REVERSE | <STRONG>COLOR_PAIR(2)</STRONG>);
+ addstr("World!");
+ refresh();
+ scr_dump("foo.out");
+ endwin();
+ return 0;
+ }
+
+ When run using ncurses6, the output looks like this:
+
+ \210\210\210\210ncurses 6.0.20170415
+ _cury=5
+ _curx=11
+ _maxy=9
+ _maxx=19
+ _flags=14
+ _attrs=\{REVERSE|C2}
+ flag=_idcok
+ _delay=-1
+ _regbottom=9
+ _bkgrnd=\{NORMAL|C1}\s
+ rows:
+ 1:\{NORMAL|C1}\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
+ 2:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
+ 3:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
+ 4:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
+ 5:\s\s\s\s\s\{BOLD}Hello\{NORMAL}\s\s\s\s\s\s\s\s\s\s
+ 6:\s\s\s\s\s\{REVERSE|C2}World!\{NORMAL|C1}\s\s\s\s\s\s\s\s\s
+ 7:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
+ 8:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
+ 9:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
+ 10:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
+
+ The first four octal escapes are actually nonprinting characters, while
+ the remainder of the file is printable text. You may notice:
+
+ <STRONG>o</STRONG> The actual color pair values are not written to the file.
+
+ <STRONG>o</STRONG> All characters are shown in printable form; spaces are "\s" to
+ ensure they are not overlooked.
+
+ <STRONG>o</STRONG> Attributes are written in escaped curly braces, e.g., "\{BOLD}",
+ and may include a color-pair (C1 or C2 in this example).
+
+ <STRONG>o</STRONG> The parameters in the header are written out only if they are
+ nonzero. When reading back, order does not matter.
+
+ Running the same program with Solaris <EM>xpg4</EM> curses gives this dump:
+
+ MAX=10,20
+ BEG=0,0
+ SCROLL=0,10
+ VMIN=1
+ VTIME=0
+ FLAGS=0x1000
+ FG=0,0
+ BG=0,0,
+ 0,0,0,1,
+ 0,19,0,0,
+ 1,0,0,1,
+ 1,19,0,0,
+ 2,0,0,1,
+ 2,19,0,0,
+ 3,0,0,1,
+ 3,19,0,0,
+ 4,0,0,1,
+ 4,5,0x20,0,Hello
+ 4,10,0,1,
+ 4,19,0,0,
+ 5,0,0,1,
+ 5,5,0x4,2,World!
+ 5,11,0,1,
+ 5,19,0,0,
+ 6,0,0,1,
+ 6,19,0,0,
+ 7,0,0,1,
+ 7,19,0,0,
+ 8,0,0,1,
+ 8,19,0,0,
+ 9,0,0,1,
+ 9,19,0,0,
+ CUR=11,5
+
+ Solaris <STRONG>getwin</STRONG> requires that all parameters are present, and in the
+ same order. The <EM>xpg4</EM> curses library does not know about the <STRONG>bce</STRONG> (back
+ color erase) capability, and does not color the window background.
+
+ On the other hand, the SVr4 curses library does know about the back-
+ ground color. However, its screen dumps are in binary. Here is the
+ corresponding dump (using "od -t x1"):
+
+ 0000000 1c 01 c3 d6 f3 58 05 00 0b 00 0a 00 14 00 00 00
+ 0000020 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0000040 00 00 b8 1a 06 08 cc 1a 06 08 00 00 09 00 10 00
+ 0000060 00 00 00 80 00 00 20 00 00 00 ff ff ff ff 00 00
+ 0000100 ff ff ff ff 00 00 00 00 20 80 00 00 20 80 00 00
+ 0000120 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00
+ *
+ 0000620 20 80 00 00 20 80 00 00 20 80 00 00 48 80 00 04
+ 0000640 65 80 00 04 6c 80 00 04 6c 80 00 04 6f 80 00 04
+ 0000660 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00
+ *
+ 0000740 20 80 00 00 20 80 00 00 20 80 00 00 57 00 81 00
+ 0000760 6f 00 81 00 72 00 81 00 6c 00 81 00 64 00 81 00
+ 0001000 21 00 81 00 20 80 00 00 20 80 00 00 20 80 00 00
+ 0001020 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00
+ *
+ 0001540 20 80 00 00 20 80 00 00 00 00 f6 d1 01 00 f6 d1
+ 0001560 08 00 00 00 40 00 00 00 00 00 00 00 00 00 00 07
+ 0001600 00 04 00 01 00 01 00 00 00 01 00 00 00 00 00 00
+ 0001620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ *
+ 0002371
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>.
+
+
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Thomas E. Dickey
+ extended screen-dump format for ncurses 6.0 (2015)
+
+ Eric S. Raymond
+ screen dump feature in ncurses 1.9.2d (1995)
+
+
+
+ <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>
+</PRE>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-ncurses6">ncurses6</a></li>
+<li><a href="#h3-ncurses5-_legacy_">ncurses5 (legacy)</a></li>
+</ul>
+</li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a>
+<ul>
+<li><a href="#h3-X_Open-Curses">X/Open Curses</a></li>
+<li><a href="#h3-Unix-SystemV">Unix SystemV</a></li>
+<li><a href="#h3-Solaris">Solaris</a></li>
+<li><a href="#h3-PDCurses">PDCurses</a></li>
+<li><a href="#h3-NetBSD">NetBSD</a></li>
+</ul>
+</li>
+<li><a href="#h2-EXAMPLE">EXAMPLE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
+</BODY>
+</HTML>
diff --git a/doc/html/man/tabs.1.html b/doc/html/man/tabs.1.html
index 030d59d98adc..14b555ee4d81 100644
--- a/doc/html/man/tabs.1.html
+++ b/doc/html/man/tabs.1.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2008-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2018,2019 Free 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,97 +26,111 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: tabs.1,v 1.11 2013/06/22 18:11:57 tom Exp @
+ * @Id: tabs.1,v 1.26 2019/06/23 21:01:12 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>tabs 1</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>tabs 1</H1>
-<HR>
+<H1 class="no-header">tabs 1</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG> <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>
+<STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG> General Commands Manual <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>tabs</STRONG> - set tabs on a terminal
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>tabs</STRONG> [<EM>options</EM>]] <EM>[tabstop-list]</EM>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>tabs</STRONG> program clears and sets tab-stops on the termi-
- nal. This uses the terminfo <EM>clear</EM><STRONG>_</STRONG><EM>all</EM><STRONG>_</STRONG><EM>tabs</EM> and <EM>set</EM><STRONG>_</STRONG><EM>tab</EM>
- capabilities. If either is absent, <STRONG>tabs</STRONG> is unable to
- clear/set tab-stops. The terminal should be configured to
- use hard tabs, e.g.,
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <STRONG>tabs</STRONG> program clears and sets tab-stops on the terminal. This uses
+ the terminfo <EM>clear</EM><STRONG>_</STRONG><EM>all</EM><STRONG>_</STRONG><EM>tabs</EM> and <EM>set</EM><STRONG>_</STRONG><EM>tab</EM> capabilities. If either is
+ absent, <STRONG>tabs</STRONG> is unable to clear/set tab-stops. The terminal should be
+ configured to use hard tabs, e.g.,
- stty tab0
+ stty tab0
+ Like <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>tabs</STRONG> writes to the standard output. You can redirect
+ the standard output to a file (which prevents <STRONG>tabs</STRONG> from actually chang-
+ ing the tabstops), and later <STRONG>cat</STRONG> the file to the screen, setting tab-
+ stops at that point.
-</PRE>
-<H2>OPTIONS</H2><PRE>
- <STRONG>General</STRONG> <STRONG>Options</STRONG>
+ These are hardware tabs, which cannot be queried rapidly by applica-
+ tions running in the terminal, if at all. Curses and other full-screen
+ applications may use hardware tabs in optimizing their output to the
+ terminal. If the hardware tabstops differ from the information in the
+ terminal database, the result is unpredictable. Before running curses
+ programs, you should either reset tab-stops to the standard interval
+
+ tabs -8
+
+ or use the <STRONG>reset</STRONG> program, since the normal initialization sequences do
+ not ensure that tab-stops are reset.
+
+
+</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
+
+</PRE><H3><a name="h3-General-Options">General Options</a></H3><PRE>
<STRONG>-T</STRONG><EM>name</EM>
- Tell <STRONG>tabs</STRONG> which terminal type to use. If this option
- is not given, <STRONG>tabs</STRONG> will use the <STRONG>$TERM</STRONG> environment
- variable. If that is not set, it will use the
- <EM>ansi+tabs</EM> entry.
-
- <STRONG>-d</STRONG> The debugging option shows a ruler line, followed by
- two data lines. The first data line shows the
- expected tab-stops marked with asterisks. The second
- data line shows the actual tab-stops, marked with
- asterisks.
-
- <STRONG>-n</STRONG> This option tells <STRONG>tabs</STRONG> to check the options and run
- any debugging option, but not to modify the terminal
- settings.
-
- <STRONG>-V</STRONG> reports the version of ncurses which was used in this
- program, and exits.
-
- The <STRONG>tabs</STRONG> program processes a single list of tab stops.
- The last option to be processed which defines a list is
- the one that determines the list to be processed.
-
- <STRONG>Implicit</STRONG> <STRONG>Lists</STRONG>
- Use a single number as an option, e.g., "<STRONG>-5</STRONG>" to set tabs
- at the given interval (in this case 1, 6, 11, 16, 21,
- etc.). Tabs are repeated up to the right margin of the
- screen.
+ Tell <STRONG>tabs</STRONG> which terminal type to use. If this option is not
+ given, <STRONG>tabs</STRONG> will use the <STRONG>$TERM</STRONG> environment variable. If that is
+ not set, it will use the <EM>ansi+tabs</EM> entry.
+
+ <STRONG>-d</STRONG> The debugging option shows a ruler line, followed by two data
+ lines. The first data line shows the expected tab-stops marked
+ with asterisks. The second data line shows the actual tab-stops,
+ marked with asterisks.
+
+ <STRONG>-n</STRONG> This option tells <STRONG>tabs</STRONG> to check the options and run any debugging
+ option, but not to modify the terminal settings.
+
+ <STRONG>-V</STRONG> reports the version of ncurses which was used in this program, and
+ exits.
+
+ The <STRONG>tabs</STRONG> program processes a single list of tab stops. The last option
+ to be processed which defines a list is the one that determines the
+ list to be processed.
+
+
+</PRE><H3><a name="h3-Implicit-Lists">Implicit Lists</a></H3><PRE>
+ Use a single number as an option, e.g., "<STRONG>-5</STRONG>" to set tabs at the given
+ interval (in this case 1, 6, 11, 16, 21, etc.). Tabs are repeated up
+ to the right margin of the screen.
Use "<STRONG>-0</STRONG>" to clear all tabs.
Use "<STRONG>-8</STRONG>" to set tabs to the standard interval.
- <STRONG>Explicit</STRONG> <STRONG>Lists</STRONG>
- An explicit list can be defined after the options (this
- does not use a "-"). The values in the list must be in
- increasing numeric order, and greater than zero. They are
- separated by a comma or a blank, for example,
- tabs 1,6,11,16,21
- tabs 1 6 11 16 21
- Use a '+' to treat a number as an increment relative to
- the previous value, e.g.,
+</PRE><H3><a name="h3-Explicit-Lists">Explicit Lists</a></H3><PRE>
+ An explicit list can be defined after the options (this does not use a
+ "-"). The values in the list must be in increasing numeric order, and
+ greater than zero. They are separated by a comma or a blank, for exam-
+ ple,
+
+ tabs 1,6,11,16,21
+ tabs 1 6 11 16 21
+
+ Use a "+" to treat a number as an increment relative to the previous
+ value, e.g.,
- tabs 1,+5,+5,+5,+5
+ tabs 1,+5,+5,+5,+5
which is equivalent to the 1,6,11,16,21 example.
- <STRONG>Predefined</STRONG> <STRONG>Tab-Stops</STRONG>
+
+</PRE><H3><a name="h3-Predefined-Tab-Stops">Predefined Tab-Stops</a></H3><PRE>
X/Open defines several predefined lists of tab stops.
<STRONG>-a</STRONG> Assembler, IBM S/370, first format
@@ -139,37 +152,81 @@
<STRONG>-u</STRONG> UNIVAC 1100 Assembler
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- X/Open describes a <STRONG>+m</STRONG> option, to set a terminal's left-
- margin. Very few of the entries in the terminal database
- provide this capability.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ <EM>IEEE</EM> <EM>Std</EM> <EM>1003.1/The</EM> <EM>Open</EM> <EM>Group</EM> <EM>Base</EM> <EM>Specifications</EM> <EM>Issue</EM> <EM>7</EM>
+ (POSIX.1-2008) describes a <STRONG>tabs</STRONG> utility. However
- The <STRONG>-d</STRONG> (debug) and <STRONG>-n</STRONG> (no-op) options are extensions not
- provided by other implementations.
+ <STRONG>o</STRONG> This standard describes a <STRONG>+m</STRONG> option, to set a terminal's left-mar-
+ gin. Very few of the entries in the terminal database provide the
+ <STRONG>smgl</STRONG> (<STRONG>set_left_margin</STRONG>) or <STRONG>smglp</STRONG> (<STRONG>set_left_margin_parm</STRONG>) capability
+ needed to support the feature.
- Documentation for other implementations states that there
- is a limit on the number of tab stops. While some termi-
- nals may not accept an arbitrary number of tab stops, this
- implementation will attempt to set tab stops up to the
- right margin of the screen, if the given list happens to
- be that long.
+ <STRONG>o</STRONG> There is no counterpart in X/Open Curses Issue 7 for this utility,
+ unlike <STRONG>tput(1)</STRONG>.
+ The <STRONG>-d</STRONG> (debug) and <STRONG>-n</STRONG> (no-op) options are extensions not provided by
+ other implementations.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+ A <STRONG>tabs</STRONG> utility appeared in PWB/Unix 1.0 (1977). There was a reduced
+ version of the <STRONG>tabs</STRONG> utility in Unix 7th edition and in 3BSD (1979).
+ The latter supported a single "-n" option (to cause the first tab stop
+ to be set on the left margin). That option is not documented by POSIX.
+
+ The PWB/Unix <STRONG>tabs</STRONG> utility, which was included in System III (1980),
+ used built-in tables rather than the terminal database, to support a
+ half-dozen terminal types. It also had built-in logic to support the
+ left-margin, as well as a feature for copying the tab settings from a
+ file.
+
+ Later versions of Unix, e.g., SVr4, added support for the terminal
+ database, but kept the tables, as a fallback. In an earlier develop-
+ ment effort, the tab-stop initialization provided by <STRONG>tset</STRONG> (1982) and
+ incorporated into <STRONG>tput</STRONG> uses the terminal database,
+
+ POSIX documents no limits on the number of tab stops. Documentation
+ for other implementations states that there is a limit on the number of
+ tab stops (e.g., 20 in PWB/Unix's <STRONG>tabs</STRONG> utility). While some terminals
+ may not accept an arbitrary number of tab stops, this implementation
+ will attempt to set tab stops up to the right margin of the screen, if
+ the given list happens to be that long.
+
+ The <EM>Rationale</EM> section of the POSIX documentation goes into some detail
+ about the ways the committee considered redesigning the <STRONG>tabs</STRONG> and <STRONG>tput</STRONG>
+ utilities, without proposing an improved solution. It comments that
+
+ no known historical version of tabs supports the capability of
+ setting arbitrary tab stops.
+
+ However, the <EM>Explicit</EM> <EM>Lists</EM> described in this manual page were imple-
+ mented in PWB/Unix. Those provide the capability of setting abitrary
+ tab stops.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
- <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>
+ <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-OPTIONS">OPTIONS</a>
+<ul>
+<li><a href="#h3-General-Options">General Options</a></li>
+<li><a href="#h3-Implicit-Lists">Implicit Lists</a></li>
+<li><a href="#h3-Explicit-Lists">Explicit Lists</a></li>
+<li><a href="#h3-Predefined-Tab-Stops">Predefined Tab-Stops</a></li>
+</ul>
+</li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/term.5.html b/doc/html/man/term.5.html
index 26d608bb8215..5fab776ded8c 100644
--- a/doc/html/man/term.5.html
+++ b/doc/html/man/term.5.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,82 +26,76 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: term.5,v 1.21 2010/12/04 18:40:45 tom Exp @
+ * @Id: term.5,v 1.32 2019/01/12 23:11:08 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>term 5</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>term 5</H1>
-<HR>
+<H1 class="no-header">term 5</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="term.5.html">term(5)</A></STRONG> <STRONG><A HREF="term.5.html">term(5)</A></STRONG>
+<STRONG><A HREF="term.5.html">term(5)</A></STRONG> File Formats Manual <STRONG><A HREF="term.5.html">term(5)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
term - format of compiled term file.
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>term</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- <STRONG>STORAGE</STRONG> <STRONG>LOCATION</STRONG>
- Compiled terminfo descriptions are placed under the direc-
- tory <STRONG>/usr/share/terminfo</STRONG>. Two configurations are sup-
- ported (when building the ncurses libraries):
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE><H3><a name="h3-STORAGE-LOCATION">STORAGE LOCATION</a></H3><PRE>
+ Compiled terminfo descriptions are placed under the directory
+ <STRONG>/usr/share/terminfo</STRONG>. Two configurations are supported (when building
+ the <STRONG>ncurses</STRONG> libraries):
<STRONG>directory</STRONG> <STRONG>tree</STRONG>
- A two-level scheme is used to avoid a linear search
- of a huge UNIX system directory: <STRONG>/usr/share/ter-</STRONG>
- <STRONG>minfo/c/name</STRONG> where <EM>name</EM> is the name of the terminal,
- and <EM>c</EM> is the first character of <EM>name</EM>. Thus, <EM>act4</EM> can
- be found in the file <STRONG>/usr/share/terminfo/a/act4</STRONG>.
- Synonyms for the same terminal are implemented by
- multiple links to the same compiled file.
+ A two-level scheme is used to avoid a linear search of a huge UNIX
+ system directory: <STRONG>/usr/share/terminfo/c/name</STRONG> where <EM>name</EM> is the
+ name of the terminal, and <EM>c</EM> is the first character of <EM>name</EM>. Thus,
+ <EM>act4</EM> can be found in the file <STRONG>/usr/share/terminfo/a/act4</STRONG>. Syn-
+ onyms for the same terminal are implemented by multiple links to
+ the same compiled file.
<STRONG>hashed</STRONG> <STRONG>database</STRONG>
- Using Berkeley database, two types of records are
- stored: the terminfo data in the same format as
- stored in a directory tree with the terminfo's pri-
- mary name as a key, and records containing only
+ Using Berkeley database, two types of records are stored: the ter-
+ minfo data in the same format as stored in a directory tree with
+ the terminfo's primary name as a key, and records containing only
aliases pointing to the primary name.
- If built to write hashed databases, ncurses can still
- read terminfo databases organized as a directory
- tree, but cannot write entries into the directory
- tree. It can write (or rewrite) entries in the
- hashed database.
+ If built to write hashed databases, <STRONG>ncurses</STRONG> can still read ter-
+ minfo databases organized as a directory tree, but cannot write
+ entries into the directory tree. It can write (or rewrite)
+ entries in the hashed database.
+
+ <STRONG>ncurses</STRONG> distinguishes the two cases in the TERMINFO and TER-
+ MINFO_DIRS environment variable by assuming a directory tree for
+ entries that correspond to an existing directory, and hashed data-
+ base otherwise.
- ncurses distinguishes the two cases in the TERMINFO
- and TERMINFO_DIRS environment variable by assuming a
- directory tree for entries that correspond to an
- existing directory, and hashed database otherwise.
- <STRONG>STORAGE</STRONG> <STRONG>FORMAT</STRONG>
- 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.
+</PRE><H3><a name="h3-LEGACY-STORAGE-FORMAT">LEGACY STORAGE FORMAT</a></H3><PRE>
+ 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 order-
+ ing or sign extension are made.
- The compiled file is created with the <STRONG>tic</STRONG> program, and
- read by the routine <EM>setupterm</EM>. The file is divided into
- six parts: the header, terminal names, boolean flags, num-
- bers, strings, and string table.
+ The compiled file is created with the <STRONG>tic</STRONG> program, and read by the rou-
+ tine <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>. The file is divided into six parts: the header,
+ terminal names, boolean flags, numbers, strings, and string table.
- The header section begins the file. This section contains
- six short integers in the format described below. These
- integers are
+ 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);
@@ -110,78 +103,69 @@
(3) the number of bytes in the boolean section;
- (4) the number of short integers in the numbers sec-
- tion;
+ (4) the number of short integers in the numbers section;
- (5) the number of offsets (short integers) in the
- strings 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.
-
- <STRONG>EXTENDED</STRONG> <STRONG>STORAGE</STRONG> <STRONG>FORMAT</STRONG>
- The previous section describes the conventional terminfo
- binary format. With some minor variations of the offsets
- (see PORTABILITY), the same binary format is used in all
- modern UNIX systems. Each system uses a predefined set of
- boolean, number or string capabilities.
-
- The ncurses libraries and applications support extended
- terminfo binary format, allowing users to define capabili-
- ties which are loaded at runtime. This extension is made
- possible by using the fact that the other implementations
- stop reading the terminfo data when they have reached the
- end of the size given in the header. ncurses checks the
- size, and if it exceeds that due to the predefined data,
- continues to parse according to its own scheme.
+ 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*sec-
+ ond+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 hardware of the VAX and PDP-11 (that is, lit-
+ tle-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 various names for the terminal,
+ separated by the "|" character. The section is terminated with an
+ ASCII NUL character.
+
+ 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 begin-
+ ning of the string table. Special characters in ^X or \c notation are
+ stored in their interpreted form, not the printing representation.
+ Padding information $&lt;nn&gt; and parameter information %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.
+
+
+</PRE><H3><a name="h3-EXTENDED-STORAGE-FORMAT">EXTENDED STORAGE FORMAT</a></H3><PRE>
+ The previous section describes the conventional terminfo binary format.
+ With some minor variations of the offsets (see PORTABILITY), the same
+ binary format is used in all modern UNIX systems. Each system uses a
+ predefined set of boolean, number or string capabilities.
+
+ The <STRONG>ncurses</STRONG> libraries and applications support extended terminfo binary
+ format, allowing users to define capabilities which are loaded at run-
+ time. This extension is made possible by using the fact that the other
+ implementations stop reading the terminfo data when they have reached
+ the end of the size given in the header. <STRONG>ncurses</STRONG> checks the size, and
+ if it exceeds that due to the predefined data, continues to parse
+ according to its own scheme.
First, it reads the extended header (5 short integers):
@@ -191,118 +175,203 @@
(3) count of extended string capabilities
- (4) size of the extended string table in bytes.
+ (4) count of the items in extended string table
- (5) last offset of the extended string table in
- bytes.
+ (5) size of the extended string table in bytes
- Using the counts and sizes, ncurses allocates arrays and
- reads data for the extended capabilties in the same order
- as the header information.
+ The count- and size-values for the extended string table include the
+ extended capability <EM>names</EM> as well as extended capability <EM>values</EM>.
- The extended string table contains values for string capa-
- bilities. After the end of these values, it contains the
- names for each of the extended capabilities in order,
- e.g., booleans, then numbers and finally strings.
+ Using the counts and sizes, <STRONG>ncurses</STRONG> allocates arrays and reads data for
+ the extended capabilities in the same order as the header information.
+ The extended string table contains values for string capabilities.
+ After the end of these values, it contains the names for each of the
+ extended capabilities in order, e.g., booleans, then numbers and
+ finally strings.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- Note that it is possible for <EM>setupterm</EM> to expect a differ-
- ent set of capabilities than are actually present in the
- file. Either the database may have been updated since
- <EM>setupterm</EM> 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 <EM>setupterm</EM>
- 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 <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for detailed discus-
- sion of terminfo source compatibility issues.
+ Applications which manipulate terminal data can use the definitions
+ described in <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG> which associate the long capability
+ names with members of a <STRONG>TERMTYPE</STRONG> structure.
-</PRE>
-<H2>EXAMPLE</H2><PRE>
- 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=\E=%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 ........ .
+</PRE><H3><a name="h3-EXTENDED-NUMBER-FORMAT">EXTENDED NUMBER FORMAT</a></H3><PRE>
+ On occasion, 16-bit signed integers are not large enough. With <STRONG>ncurses</STRONG>
+ 6.1, a new format was introduced by making a few changes to the legacy
+ format:
+
+ <STRONG>o</STRONG> a different magic number (octal 01036)
+
+ <STRONG>o</STRONG> changing the type for the <EM>number</EM> array from signed 16-bit integers
+ to signed 32-bit integers.
+
+ To maintain compatibility, the library presents the same data struc-
+ tures to direct users of the <STRONG>TERMTYPE</STRONG> structure as in previous formats.
+ However, that cannot provide callers with the extended numbers. The
+ library uses a similar but hidden data structure <STRONG>TERMTYPE2</STRONG> to provide
+ data for the terminfo functions.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+
+</PRE><H3><a name="h3-setupterm">setupterm</a></H3><PRE>
+ Note that it is possible for <STRONG>setupterm</STRONG> to expect a different set of
+ capabilities than are actually present in the file. Either the data-
+ base may have been updated since <STRONG>setupterm</STRONG> has been recompiled (result-
+ ing in extra unrecognized entries in the file) or the program may have
+ been recompiled more recently than the database was updated (resulting
+ in missing entries). The routine <STRONG>setupterm</STRONG> 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 bool-
+ ean, number, and string capabilities.
+</PRE><H3><a name="h3-Binary-format">Binary format</a></H3><PRE>
+ X/Open Curses does not specify a format for the terminfo database.
+ UNIX System V curses used a directory-tree of binary files, one per
+ terminal description.
-</PRE>
-<H2>LIMITS</H2><PRE>
- Some limitations: total compiled entries cannot exceed
- 4096 bytes. The name field cannot exceed 128 bytes.
+ Despite the consistent use of little-endian for numbers and the other-
+ wise 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
+ <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for detailed discussion of terminfo source compatibility
+ issues.
+ This implementation is by default compatible with the binary terminfo
+ format used by Solaris curses, except in a few less-used details where
+ it was found that the latter did not match X/Open Curses. The format
+ used by the other Unix versions can be matched by building ncurses with
+ different configuration options.
-</PRE>
-<H2>FILES</H2><PRE>
- /usr/share/terminfo/*/* compiled terminal capability data
- base
+</PRE><H3><a name="h3-Magic-codes">Magic codes</a></H3><PRE>
+ The magic number in a binary terminfo file is the first 16-bits (two
+ bytes). Besides making it more reliable for the library to check that
+ a file is terminfo, utilities such as <STRONG>file</STRONG> also use that to tell what
+ the file-format is. System V defined more than one magic number, with
+ 0433, 0435 as screen-dumps (see <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>). This implementation uses
+ 01036 as a continuation of that sequence, but with a different high-
+ order byte to avoid confusion.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+
+</PRE><H3><a name="h3-The-TERMTYPE-structure">The TERMTYPE structure</a></H3><PRE>
+ Direct access to the <STRONG>TERMTYPE</STRONG> structure is provided for legacy applica-
+ tions. Portable applications should use the <STRONG>tigetflag</STRONG> and related
+ functions described in <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> for reading terminal capabili-
+ ties.
+
+
+</PRE><H3><a name="h3-Mixed-case-terminal-names">Mixed-case terminal names</a></H3><PRE>
+ A small number of terminal descriptions use uppercase characters in
+ their names. If the underlying filesystem ignores the difference
+ between uppercase and lowercase, <STRONG>ncurses</STRONG> represents the "first charac-
+ ter" of the terminal name used as the intermediate level of a directory
+ tree in (two-character) hexadecimal form.
+
+
+</PRE><H2><a name="h2-EXAMPLE">EXAMPLE</a></H2><PRE>
+ As an example, here is a description for the Lear-Siegler ADM-3, a pop-
+ ular 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=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+ home=^^, ind=^J,
+
+
+ and a hexadecimal dump of the compiled terminal description:
+
+ 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 ........ .
+
+
+
+</PRE><H2><a name="h2-LIMITS">LIMITS</a></H2><PRE>
+ Some limitations:
+
+ <STRONG>o</STRONG> total compiled entries cannot exceed 4096 bytes in the legacy for-
+ mat.
+
+ <STRONG>o</STRONG> total compiled entries cannot exceed 32768 bytes in the extended
+ format.
+
+ <STRONG>o</STRONG> the name field cannot exceed 128 bytes.
+
+
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+ /usr/share/terminfo/*/* compiled terminal capability data base
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
-</PRE>
-<H2>AUTHORS</H2><PRE>
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
Thomas E. Dickey
extended terminfo format for ncurses 5.0
hashed database support for ncurses 5.6
+ extended number support for ncurses 6.1
Eric S. Raymond
+ documented legacy terminfo format, e.g., from pcurses.
- <STRONG><A HREF="term.5.html">term(5)</A></STRONG>
+ <STRONG><A HREF="term.5.html">term(5)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-STORAGE-LOCATION">STORAGE LOCATION</a></li>
+<li><a href="#h3-LEGACY-STORAGE-FORMAT">LEGACY STORAGE FORMAT</a></li>
+<li><a href="#h3-EXTENDED-STORAGE-FORMAT">EXTENDED STORAGE FORMAT</a></li>
+<li><a href="#h3-EXTENDED-NUMBER-FORMAT">EXTENDED NUMBER FORMAT</a></li>
+</ul>
+</li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a>
+<ul>
+<li><a href="#h3-setupterm">setupterm</a></li>
+<li><a href="#h3-Binary-format">Binary format</a></li>
+<li><a href="#h3-Magic-codes">Magic codes</a></li>
+<li><a href="#h3-The-TERMTYPE-structure">The TERMTYPE structure</a></li>
+<li><a href="#h3-Mixed-case-terminal-names">Mixed-case terminal names</a></li>
+</ul>
+</li>
+<li><a href="#h2-EXAMPLE">EXAMPLE</a></li>
+<li><a href="#h2-LIMITS">LIMITS</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/term.7.html b/doc/html/man/term.7.html
index b63800579e63..2cadcafa32cf 100644
--- a/doc/html/man/term.7.html
+++ b/doc/html/man/term.7.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,160 +26,142 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: term.7,v 1.23 2011/12/17 23:32:17 tom Exp @
+ * @Id: term.7,v 1.27 2019/07/13 23:17:23 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>term 7</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>term 7</H1>
-<HR>
+<H1 class="no-header">term 7</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="term.7.html">term(7)</A></STRONG> <STRONG><A HREF="term.7.html">term(7)</A></STRONG>
+<STRONG><A HREF="term.7.html">term(7)</A></STRONG> Miscellaneous Information Manual <STRONG><A HREF="term.7.html">term(7)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
term - conventions for naming terminal types
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The environment variable <STRONG>TERM</STRONG> 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 <STRONG>TERM</STRONG> value will be set on a per-line basis by
- either <STRONG>/etc/inittab</STRONG> (e.g., System-V-like UNIXes) or
- <STRONG>/etc/ttys</STRONG> (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 <STRONG>TERM</STRONG> 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 <STRONG>TERM</STRONG> set-
- ting to your taste in your shell profile. The <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>
- 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 <STRONG>TERM</STRONG> value may also be useful if you have
- created a custom entry incorporating options (such as vis-
- ual 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 /usr/share/terminfo. To browse a list
- of all terminal names recognized by the system, do
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The environment variable <STRONG>TERM</STRONG> 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 <STRONG>TERM</STRONG> value will be set on a per-line basis by either
+ <STRONG>/etc/inittab</STRONG> (e.g., System-V-like UNIXes) or <STRONG>/etc/ttys</STRONG> (BSD UNIXes).
+ This will nearly always suffice for workstation and microcomputer con-
+ soles.
+
+ If you use a dialup line, the type of device attached to it may vary.
+ Older UNIX systems pre-set a very dumb terminal 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
+ emulators.
+
+ Modern telnets pass your <STRONG>TERM</STRONG> 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 sit-
+ uation is rare and can almost always be avoided by explicitly exporting
+ "vt100" (assuming you are in fact using a VT100-superset console, ter-
+ minal, or terminal emulator.)
+
+ In any case, you are free to override the system <STRONG>TERM</STRONG> setting to your
+ taste in your shell profile. The <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> 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 <STRONG>TERM</STRONG> 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 capability data
+ underneath /usr/share/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 <STRONG>termcap</STRONG> format they replace); to examine an entry,
- you must use the <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> command. Invoke it as fol-
- lows:
+ from your shell. These capability files are in a binary format opti-
+ mized for retrieval speed (unlike the old text-based <STRONG>termcap</STRONG> format
+ they replace); to examine an entry, you must use the <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> com-
+ mand. Invoke it as follows:
infocmp <EM>entry</EM><STRONG>_</STRONG><EM>name</EM>
- where <EM>entry</EM><STRONG>_</STRONG><EM>name</EM> is the name of the type you wish to exam-
- ine (and the name of its capability file the subdirectory
- of /usr/share/terminfo named for its first letter). This
- command dumps a capability file in the text format
- described by <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
-
- The first line of a <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> 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 <EM>primary</EM>
- <EM>name</EM>, and is the one to use when setting <STRONG>TERM</STRONG>. 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 unhelp-
- ful 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
- <STRONG>hp</STRONG> for Hewlett-Packard, <STRONG>wy</STRONG> for Wyse, or <STRONG>att</STRONG> for AT&amp;T ter-
- minals), or a common name of the terminal line (<STRONG>vt</STRONG> for the
- VT series of terminals from DEC, or <STRONG>sun</STRONG> for Sun Microsys-
- tems workstation consoles, or <STRONG>regent</STRONG> 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 <STRONG>vt100</STRONG>, <STRONG>hp2621</STRONG>, <STRONG>wy50</STRONG>.
-
- The root name for a PC-Unix console type should be the OS
- name, i.e., <STRONG>linux</STRONG>, <STRONG>bsdos</STRONG>, <STRONG>freebsd</STRONG>, <STRONG>netbsd</STRONG>. It should <EM>not</EM>
- be <STRONG>console</STRONG> 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 does
- not fit one of the standard ANSI or vt100 types) should be
- the program name or a readily recognizable abbreviation of
- it (i.e., <STRONG>versaterm</STRONG>, <STRONG>ctrm</STRONG>).
-
- Following the root name, you may add any reasonable number
- of hyphen-separated feature suffixes.
+ where <EM>entry</EM><STRONG>_</STRONG><EM>name</EM> is the name of the type you wish to examine (and the
+ name of its capability file the subdirectory of /usr/share/terminfo
+ named for its first letter). This command dumps a capability file in
+ the text format described by <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+
+ The first line of a <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> 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 <EM>primary</EM> <EM>name</EM>, and is the one to use when setting <STRONG>TERM</STRONG>. 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 compat-
+ ibility.
+
+ There are some conventions for how to choose terminal primary 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 let-
+ ter followed by up to seven lower-case letters or digits. You need to
+ avoid using punctuation characters in root names, because they are used
+ and interpreted 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 plat-
+ form-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 <STRONG>hp</STRONG> for Hewlett-Packard, <STRONG>wy</STRONG>
+ for Wyse, or <STRONG>att</STRONG> for AT&amp;T terminals), or a common name of the terminal
+ line (<STRONG>vt</STRONG> for the VT series of terminals from DEC, or <STRONG>sun</STRONG> for Sun
+ Microsystems workstation consoles, or <STRONG>regent</STRONG> for the ADDS Regent
+ series. You can list the terminfo tree to see what prefixes are
+ already in common use. The root name prefix should be followed when
+ appropriate by a model number; thus <STRONG>vt100</STRONG>, <STRONG>hp2621</STRONG>, <STRONG>wy50</STRONG>.
+
+ The root name for a PC-Unix console type should be the OS name, i.e.,
+ <STRONG>linux</STRONG>, <STRONG>bsdos</STRONG>, <STRONG>freebsd</STRONG>, <STRONG>netbsd</STRONG>. It should <EM>not</EM> be <STRONG>console</STRONG> or any other
+ generic that might cause confusion in a multi-platform environment! If
+ a model number follows, it should indicate either the OS release level
+ or the console driver release level.
+
+ The root name for a terminal emulator (assuming it does not fit one of
+ the standard ANSI or vt100 types) should be the program name or a read-
+ ily recognizable abbreviation of it (i.e., <STRONG>versaterm</STRONG>, <STRONG>ctrm</STRONG>).
+
+ 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.
+ mc Magic-cookie. Some terminals (notably older Wyses) can only sup-
+ port 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.
+ -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.
@@ -196,34 +177,29 @@
-vb Use visible bell (flash) rather than beep.
- -w Wide; terminal is in 132 column mode.
+ -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
- <STRONG>fubar-30-rv</STRONG> (rather than, say, `fubar-rv-30').
+ 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 <STRONG>fubar-30-rv</STRONG> (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 <STRONG>use</STRONG> capabilities, are distinguished by using embedded
- plus signs rather than dashes.
+ Terminal types that are written not as standalone entries, but rather
+ as components to be plugged into other entries via <STRONG>use</STRONG> 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 <STRONG>TERM</STRONG>
- environment variable when no -T option is specified.
+ 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 <STRONG>TERM</STRONG> environment variable when no -T option is speci-
+ fied.
-</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><a name="h2-PORTABILITY">PORTABILITY</a></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>
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
/usr/share/terminfo/?/*
compiled terminal capability data base
@@ -234,18 +210,21 @@
tty line initialization (BSD-like UNIXes)
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></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="term.5.html">term(5)</A></STRONG>.
- <STRONG><A HREF="term.7.html">term(7)</A></STRONG>
+ <STRONG><A HREF="term.7.html">term(7)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/term_variables.3x.html b/doc/html/man/term_variables.3x.html
index 8041832aa0aa..d5a83afcd8a9 100644
--- a/doc/html/man/term_variables.3x.html
+++ b/doc/html/man/term_variables.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2011-2017,2019 Free 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,139 +26,174 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: term_variables.3x,v 1.3 2011/12/17 23:31:50 tom Exp @
+ * @Id: term_variables.3x,v 1.11 2019/11/30 20:51:36 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>term_variables 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>term_variables 3x</H1>
-<HR>
+<H1 class="no-header">term_variables 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG> <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>
+<STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG> <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>SP</STRONG>, <STRONG>acs_map</STRONG>, <STRONG>boolcodes</STRONG>, <STRONG>boolfnames</STRONG>, <STRONG>boolnames</STRONG>, <STRONG>cur_term</STRONG>,
- <STRONG>numcodes</STRONG>, <STRONG>numfnames</STRONG>, <STRONG>numnames</STRONG>, <STRONG>strcodes</STRONG>, <STRONG>strfnames</STRONG>,
- <STRONG>strnames</STRONG>, <STRONG>ttytype</STRONG> - <STRONG>curses</STRONG> terminfo global variables
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>SP</STRONG>, <STRONG>acs_map</STRONG>, <STRONG>boolcodes</STRONG>, <STRONG>boolfnames</STRONG>, <STRONG>boolnames</STRONG>, <STRONG>cur_term</STRONG>, <STRONG>numcodes</STRONG>,
+ <STRONG>numfnames</STRONG>, <STRONG>numnames</STRONG>, <STRONG>strcodes</STRONG>, <STRONG>strfnames</STRONG>, <STRONG>strnames</STRONG>, <STRONG>ttytype</STRONG> - <STRONG>curses</STRONG>
+ terminfo global variables
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
<STRONG>chtype</STRONG> <STRONG>acs_map[];</STRONG>
- <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>boolcodes;</STRONG>
- <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>boolfnames;</STRONG>
- <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>boolnames;</STRONG>
+
+ <STRONG>SCREEN</STRONG> <STRONG>*</STRONG> <STRONG>SP;</STRONG>
+
<STRONG>TERMINAL</STRONG> <STRONG>*</STRONG> <STRONG>cur_term;</STRONG>
- <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>numcodes;</STRONG>
- <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>numfnames;</STRONG>
- <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>numnames;</STRONG>
- <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>strcodes;</STRONG>
- <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>strfnames;</STRONG>
- <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>strnames;</STRONG>
+
<STRONG>char</STRONG> <STRONG>ttytype[];</STRONG>
+ <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolcodes[];</STRONG>
+ <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolfnames[];</STRONG>
+ <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolnames[];</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- This page summarizes variables provided by the <STRONG>curses</STRONG> li-
- brary's low-level terminfo interface. A more complete de-
- scription is given in the <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> manual page.
-
- Depending on the configuration, these may be actual vari-
- ables, or macros (see <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>) which provide
- read-only access to <EM>curses</EM>'s state. In either case, ap-
- plications should treat them as read-only to avoid confus-
- ing the library.
-
- <STRONG>Alternate</STRONG> <STRONG>Character</STRONG> <STRONG>Set</STRONG> <STRONG>Mapping</STRONG>
- After initializing the curses or terminfo interfaces, the
- <STRONG>acs_map</STRONG> array holds information used to translate cells
- with the <STRONG>A_ALTCHARSET</STRONG> video attribute into line-drawing
- characters.
-
- The encoding of the information in this array has changed
- periodically. Application developers need only know that
- it is used for the "ACS_" constants in &lt;curses.h&gt;.
-
- The comparable data for the wide-character library is a
- private variable.
-
- <STRONG>Current</STRONG> <STRONG>Terminal</STRONG> <STRONG>Data</STRONG>
- After initializing the curses or terminfo interfaces, the
- <STRONG>cur_term</STRONG> contains data describing the current terminal.
- This variable is also set as a side-effect of <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
- and <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>.
-
- It is possible to save a value of <STRONG>cur_term</STRONG> for subsequent
- use as a parameter to <STRONG>set_term</STRONG>, for switching between
- screens. Alternatively, one can save the return value
- from <STRONG>newterm</STRONG> or <STRONG>setupterm</STRONG> to reuse in <STRONG>set_term</STRONG>.
-
- <STRONG>Terminfo</STRONG> <STRONG>Names</STRONG>
- The <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> and <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> programs use lookup tables for
- the long and short names of terminfo capabilities, as well
- as the corresponding names for termcap capabilities.
- These are available to other applications, though the
- hash-tables are not available.
-
- The long terminfo capability names use a "l" (ell) in
- their names: boolfnames numfnames strfnames
-
- These are the short names for terminfo capabilities: bool-
- names, numnames, and strnames.
-
- These are the corresponding names used for termcap de-
- scriptions: boolcodes, numcodes, and strcodes.
-
- <STRONG>Terminal</STRONG> <STRONG>Type</STRONG>
- On initialization of the curses or terminfo interfaces,
- <STRONG>setupterm</STRONG> copies the terminal name to the array <STRONG>ttytype</STRONG>.
+ <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numcodes[];</STRONG>
+ <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numfnames[];</STRONG>
+ <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numnames[];</STRONG>
+ <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strcodes[];</STRONG>
+ <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strfnames[];</STRONG>
+ <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strnames[];</STRONG>
-</PRE>
-<H2>NOTES</H2><PRE>
- The low-level terminfo interface is initialized using
- <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>. The upper-level curses interface uses the
- low-level terminfo interface, internally.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ This page summarizes variables provided by the <STRONG>curses</STRONG> library's low-
+ level terminfo interface. A more complete description is given in the
+ <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> manual page.
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- X/Open Curses does not describe any of these except for
- <STRONG>cur_term</STRONG>. (The inclusion of <STRONG>cur_term</STRONG> appears to be an
- oversight, since other comparable low-level information is
- omitted by X/Open).
+ Depending on the configuration, these may be actual variables, or
+ macros (see <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>) which provide read-only access to <EM>curs-</EM>
+ <EM>es</EM>'s state. In either case, applications should treat them as read-on-
+ ly to avoid confusing the library.
- Other implementations may have comparable variables. Some
- implementations provide the variables in their libraries,
- but omit them from the header files.
+</PRE><H3><a name="h3-Alternate-Character-Set-Mapping">Alternate Character Set Mapping</a></H3><PRE>
+ After initializing the curses or terminfo interfaces, the <STRONG>acs_map</STRONG> array
+ holds information used to translate cells with the <STRONG>A_ALTCHARSET</STRONG> video
+ attribute into line-drawing characters.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>,
- <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+ The encoding of the information in this array has changed periodically.
+ Application developers need only know that it is used for the "ACS_"
+ constants in &lt;curses.h&gt;.
+
+ The comparable data for the wide-character library is a private vari-
+ able.
+
+
+</PRE><H3><a name="h3-Current-Terminal-Data">Current Terminal Data</a></H3><PRE>
+ After initializing the curses or terminfo interfaces, the <STRONG>cur_term</STRONG> con-
+ tains data describing the current terminal. This variable is also set
+ as a side-effect of <STRONG><A HREF="curs_initscr.3x.html">set_term(3x)</A></STRONG> and <STRONG><A HREF="curs_initscr.3x.html">delscreen(3x)</A></STRONG>.
+
+ It is possible to save a value of <STRONG>cur_term</STRONG> for subsequent use as a pa-
+ rameter to <STRONG>set_term</STRONG>, for switching between screens. Alternatively, one
+ can save the return value from <STRONG>newterm</STRONG> or <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG> to reuse in
+ <STRONG>set_term</STRONG>.
+
+
+</PRE><H3><a name="h3-Terminfo-Names">Terminfo Names</a></H3><PRE>
+ The <STRONG><A HREF="tic.1m.html">tic(1)</A></STRONG> and <STRONG><A HREF="infocmp.1m.html">infocmp(1)</A></STRONG> programs use lookup tables for the long and
+ short names of terminfo capabilities, as well as the corresponding
+ names for termcap capabilities. These are available to other applica-
+ tions, although the hash-tables used by the terminfo and termcap func-
+ tions are not available.
+
+ The long terminfo capability names use a "l" (ell) in their names:
+ <STRONG>boolfnames</STRONG>, <STRONG>numfnames</STRONG>, and <STRONG>strfnames</STRONG>.
+
+ These are the short names for terminfo capabilities: <STRONG>boolnames</STRONG>, <STRONG>num-</STRONG>
+ <STRONG>names</STRONG>, and <STRONG>strnames</STRONG>.
+
+ These are the corresponding names used for termcap descriptions: <STRONG>bool-</STRONG>
+ <STRONG>codes</STRONG>, <STRONG>numcodes</STRONG>, and <STRONG>strcodes</STRONG>.
+
+
+</PRE><H3><a name="h3-Terminal-Type">Terminal Type</a></H3><PRE>
+ A terminal description begins with one or more terminal names separated
+ by "|" (vertical bars). On initialization of the curses or terminfo
+ interfaces, <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG> copies the terminal names to the array <STRONG>tty-</STRONG>
+ <STRONG>type</STRONG>.
+
+
+</PRE><H3><a name="h3-Terminfo-Names">Terminfo Names</a></H3><PRE>
+ In addition to the variables, <STRONG>&lt;term.h&gt;</STRONG> also defines a symbol for each
+ terminfo capability <EM>long</EM> <EM>name</EM>. These are in terms of the symbol <STRONG>CUR</STRONG>,
+ which is defined
+
+ #define CUR ((TERMTYPE *)(cur_term))-&gt;
+
+ These symbols provide a faster method of accessing terminfo capabili-
+ ties than using <STRONG><A HREF="curs_terminfo.3x.html">tigetstr(3x)</A></STRONG>, etc.
+
+ The actual definition of <STRONG>CUR</STRONG> depends upon the implementation, but each
+ terminfo library provides these long names defined to point into the
+ current terminal description loaded into memory.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ The low-level terminfo interface is initialized using <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>.
+ The upper-level curses interface uses the low-level terminfo interface,
+ internally.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ X/Open Curses does not describe any of these except for <STRONG>cur_term</STRONG>. (The
+ inclusion of <STRONG>cur_term</STRONG> appears to be an oversight, since other compara-
+ ble low-level information is omitted by X/Open).
+
+ Other implementations may have comparable variables. Some implementa-
+ tions provide the variables in their libraries, but omit them from the
+ header files.
+
+ All implementations which provide terminfo interfaces add definitions
+ as described in the <STRONG>Terminfo</STRONG> <STRONG>Names</STRONG> section. Most, but not all, base
+ the definition upon the <STRONG>cur_term</STRONG> variable.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
- <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>
+ <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Alternate-Character-Set-Mapping">Alternate Character Set Mapping</a></li>
+<li><a href="#h3-Current-Terminal-Data">Current Terminal Data</a></li>
+<li><a href="#h3-Terminfo-Names">Terminfo Names</a></li>
+<li><a href="#h3-Terminal-Type">Terminal Type</a></li>
+<li><a href="#h3-Terminfo-Names">Terminfo Names</a></li>
+</ul>
+</li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/terminfo.5.html b/doc/html/man/terminfo.5.html
index 94e2b034b83b..2a2bdf32f850 100644
--- a/doc/html/man/terminfo.5.html
+++ b/doc/html/man/terminfo.5.html
@@ -1,12 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
* DO NOT EDIT THIS FILE BY HAND!
- * It is generated from terminfo.head, Caps, and terminfo.tail.
+ * It is generated from terminfo.head, ./../include/Caps ./../include/Caps-ncurses, and terminfo.tail.
* Note: this must be run through tbl before nroff.
* The magic cookie on the first line triggers this under some man programs.
****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,142 +31,241 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: terminfo.head,v 1.21 2013/03/09 22:11:36 tom Exp @
+ * @Id: terminfo.head,v 1.38 2019/07/27 11:51:04 tom Exp @
* Head of terminfo man page ends here
- * @Id: terminfo.tail,v 1.68 2013/11/09 15:20:48 tom Exp @
- * Beginning of terminfo.tail file
- * This file is part of ncurses.
- * See "terminfo.head" for copyright.
+ ****************************************************************************
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************
+ * @Id: terminfo.tail,v 1.98 2019/11/30 20:54:32 tom Exp @
*.in -2
*.in +2
*.in -2
*.in +2
*.TH
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>terminfo 5 File Formats</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>terminfo 5 File Formats</H1>
-<HR>
+<H1 class="no-header">terminfo 5 File Formats</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> File Formats <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
+<STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> File Formats <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
terminfo - terminal capability data base
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
/usr/share/terminfo/*/*
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- <EM>Terminfo</EM> is a data base describing terminals, used by
- screen-oriented programs such as <STRONG>nvi(1)</STRONG>, <STRONG>rogue(1)</STRONG> and
- libraries such as <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>. <EM>Terminfo</EM> 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.
- This describes <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
-
- Entries in <EM>terminfo</EM> consist of a sequence of `,' separated
- fields (embedded commas may be escaped with a backslash or
- notated as \054). 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.
-
- Lines beginning with a `#' in the first column are treated
- as comments. While comment lines are legal at any point,
- the output of <STRONG>captoinfo</STRONG> and <STRONG>infotocap</STRONG> (aliases for <STRONG>tic</STRONG>)
- will move comments so they occur only between entries.
-
- Newlines and leading tabs may be used for formatting
- entries for readability. These are removed from parsed
- entries. The <STRONG>infocmp</STRONG> <STRONG>-f</STRONG> option relies on this to format
- if-then-else expressions: the result can be read by <STRONG>tic</STRONG>.
-
- 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:
-
- <STRONG>Suffix</STRONG> <STRONG>Meaning</STRONG> <STRONG>Example</STRONG>
- -<EM>nn</EM> Number of lines on the screen aaa-60
- -<EM>n</EM>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 <STRONG>term(7)</STRONG>
- manual page.
-
- <STRONG>Predefined</STRONG> <STRONG>Capabilities</STRONG>
- 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 <STRONG>variable</STRONG> is the name by which the programmer (at the
- terminfo level) accesses the capability.
-
- The <STRONG>capname</STRONG> 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 <STRONG>termcap</STRONG> 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 <STRONG>Caps</STRONG> 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:
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ <EM>Terminfo</EM> is a data base describing terminals, used by screen-oriented
+ programs such as <STRONG>nvi(1)</STRONG>, <STRONG>lynx(1)</STRONG>, <STRONG>mutt(1)</STRONG>, and other curses applica-
+ tions, using high-level calls to libraries such as <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>. It is
+ also used via low-level calls by non-curses applications which may be
+ screen-oriented (such as <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>) or non-screen (such as <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>).
+
+ <EM>Terminfo</EM> describes terminals by giving a set of capabilities which they
+ have, by specifying how to perform screen operations, and by specifying
+ padding requirements and initialization sequences.
+
+ This manual describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
+
+
+</PRE><H3><a name="h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></H3><PRE>
+ Entries in <EM>terminfo</EM> consist of a sequence of fields:
+
+ <STRONG>o</STRONG> Each field ends with a comma "," (embedded commas may be escaped
+ with a backslash or written as "\054").
+
+ <STRONG>o</STRONG> White space between fields is ignored.
+
+ <STRONG>o</STRONG> The first field in a <EM>terminfo</EM> entry begins in the first column.
+
+ <STRONG>o</STRONG> Newlines and leading whitespace (spaces or tabs) may be used for
+ formatting entries for readability. These are removed from parsed
+ entries.
+
+ The <STRONG>infocmp</STRONG> <STRONG>-f</STRONG> and <STRONG>-W</STRONG> options rely on this to format if-then-else
+ expressions, or to enforce maximum line-width. The resulting for-
+ matted terminal description can be read by <STRONG>tic</STRONG>.
+
+ <STRONG>o</STRONG> The first field 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 termi-
+ nal (its primary name), the last name given should be a long name
+ fully identifying the terminal (see <STRONG><A HREF="curs_termattrs.3x.html">longname(3x)</A></STRONG>), and all others
+ are treated as synonyms (aliases) for the primary terminal name.
+
+ X/Open Curses advises that 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.
+
+ This implementation is not so strict; it allows mixed case in the
+ primary name and aliases. If the last name has no embedded blanks,
+ it allows that to be both an alias and a verbose name (but will
+ warn about this ambiguity).
+
+ <STRONG>o</STRONG> Lines beginning with a "#" in the first column are treated as com-
+ ments.
+
+ While comment lines are legal at any point, the output of <STRONG>captoinfo</STRONG>
+ and <STRONG>infotocap</STRONG> (aliases for <STRONG>tic</STRONG>) will move comments so they occur
+ only between entries.
+
+ Terminal names (except for the last, verbose entry) should be chosen
+ using the following conventions. The particular piece of hardware mak-
+ ing 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
+ preferences, should be indicated by appending a hyphen and a mode suf-
+ fix. Thus, a vt100 in 132-column mode would be vt100-w. The following
+ suffixes should be used where possible:
+
+ <STRONG>Suffix</STRONG> <STRONG>Meaning</STRONG> <STRONG>Example</STRONG>
+ -<EM>nn</EM> Number of lines on the screen aaa-60
+ -<EM>n</EM>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 <STRONG><A HREF="term.7.html">term(7)</A></STRONG> manual page.
+
+
+</PRE><H3><a name="h3-Terminfo-Capabilities-Syntax">Terminfo Capabilities Syntax</a></H3><PRE>
+ The terminfo entry consists of several <EM>capabilities</EM>, i.e., features
+ that the terminal has, or methods for exercising the terminal's fea-
+ tures.
+
+ After the first field (giving the name(s) of the terminal entry), there
+ should be one or more <EM>capability</EM> fields. These are boolean, numeric or
+ string names with corresponding values:
+
+ <STRONG>o</STRONG> Boolean capabilities are true when present, false when absent.
+ There is no explicit value for boolean capabilities.
+
+ <STRONG>o</STRONG> Numeric capabilities have a "#" following the name, then an
+ unsigned decimal integer value.
+
+ <STRONG>o</STRONG> String capabilities have a "=" following the name, then an string
+ of characters making up the capability value.
+
+ String capabilities can be split into multiple lines, just as the
+ fields comprising a terminal entry can be split into multiple
+ lines. While blanks between fields are ignored, blanks embedded
+ within a string value are retained, except for leading blanks on a
+ line.
+
+ Any capability can be <EM>canceled</EM>, i.e., suppressed from the terminal
+ entry, by following its name with "@" rather than a capability value.
+
+
+</PRE><H3><a name="h3-Similar-Terminals">Similar Terminals</a></H3><PRE>
+ If there are two very similar terminals, one (the variant) can be
+ defined as being just like the other (the base) with certain excep-
+ tions. In the definition of the variant, the string capability <STRONG>use</STRONG> can
+ be given with the name of the base terminal:
+
+ <STRONG>o</STRONG> The capabilities given before <STRONG>use</STRONG> override those in the base type
+ named by <STRONG>use</STRONG>.
+
+ <STRONG>o</STRONG> If there are multiple <STRONG>use</STRONG> capabilities, they are merged in reverse
+ order. That is, the rightmost <STRONG>use</STRONG> reference is processed first,
+ then the one to its left, and so forth.
+
+ <STRONG>o</STRONG> Capabilities given explicitly in the entry override those brought
+ in by <STRONG>use</STRONG> references.
+
+ A capability can be canceled by placing <STRONG>xx@</STRONG> to the left of the use ref-
+ erence that imports it, where <EM>xx</EM> is the capability. For example, the
+ entry
+
+ 2621-nl, smkx@, rmkx@, use=2621,
+
+ defines a 2621-nl that does not have the <STRONG>smkx</STRONG> or <STRONG>rmkx</STRONG> 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.
+
+ An entry included via <STRONG>use</STRONG> can contain canceled capabilities, which have
+ the same effect as if those cancels were inline in the using terminal
+ entry.
+
+
+</PRE><H3><a name="h3-Predefined-Capabilities">Predefined Capabilities</a></H3><PRE>
+ 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 <STRONG>variable</STRONG> is the name by which the programmer (at the terminfo
+ level) accesses the capability.
+
+ The <STRONG>capname</STRONG> 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 specifica-
+ tion.
+
+ The termcap code is the old <STRONG>termcap</STRONG> capability name (some capabilities
+ are new, and have names which termcap did not originate).
+
+ Capability names have no hard length limit, but an informal limit of 5
+ characters has been adopted to keep them short and to allow the tabs in
+ the source file <STRONG>Caps</STRONG> 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 (#<EM>i</EM>).
+ #[1-9] in the description field indicates that the string is passed
+ through tparm with parms as given (#<EM>i</EM>).
- (P*) indicates that padding may vary in proportion to
- the number of lines affected
+ (P*) indicates that padding may vary in proportion to the number of
+ lines affected
(#<EM>i</EM>) indicates the <EM>i</EM>th parameter.
@@ -175,899 +273,895 @@
These are the boolean capabilities:
- <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
- <STRONG>Booleans</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
- 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 will not
- 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 will not
- 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 cannot print ~'s
- (hazeltine)
-
-
- transparent_underline ul ul underline character
- overstrikes
- xon_xoff xon xo terminal uses
- xon/xoff handshaking
+ <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
+ <STRONG>Booleans</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
+ 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 will not
+ 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 will not
+ 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 cannot print ~'s
+ (Hazeltine)
+ transparent_underline ul ul underline character
+ overstrikes
+ xon_xoff xon xo terminal uses
+ xon/xoff handshaking
These are the numeric capabilities:
- <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
- <STRONG>Numeric</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
- 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 cannot 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.
-
-
- <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
- <STRONG>Numeric</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
- 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
+ <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
+ <STRONG>Numeric</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
+ 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
+ definable windows
+ no_color_video ncv NC video attributes
+ that cannot 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.
+
+
+ <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
+ <STRONG>Numeric</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
+ 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:
- <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
- <STRONG>String</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
- 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
- to #1
- change_line_pitch lpi ZB Change number of
- lines per inch to #1
- change_res_horz chr ZC Change horizontal
- resolution to #1
- change_res_vert cvr ZD Change vertical res-
- olution to #1
- 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 col-
- umns #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, move
- to row #1 columns #2
- 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
- #1, #2 dots wide,
- descender #3
- 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
- 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 #1
- 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, #1
- 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 (if smgtp
- is not given) #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.
- See smgl. (ML is not
- in BSD termcap).
- set_left_margin_parm smglp Zm Set left (right)
- margin at column #1
- 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
- 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 #1, with
- #2 characters in the
- set
- stop_bit_image rbim Zs Stop printing bit
- image graphics
- stop_char_set_def rcsd Zt End definition of
- character set #1
- 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,
- column #1
- 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.
-
-
- <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
- <STRONG>String</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
- 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 Produce #1'th item
- from list of char-
- acter 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 #1
- 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,
- parameter #1 not
- documented.
- 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 codeset 0
- (EUC set 0, ASCII)
- set1_des_seq s1ds s1 Shift to codeset 1
- set2_des_seq s2ds s2 Shift to codeset 2
- set3_des_seq s3ds s3 Shift to codeset 3
- set_a_background setab AB Set background
- color to #1, using
- ANSI escape
- set_a_foreground setaf AF Set foreground
- color to #1, 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. (ML is
- not in BSD term-
- cap).
- 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 hardcopy capabili-
- ties. They were used in some post-4.1 versions of System
- V curses, e.g., Solaris 2.5 and IRIX 6.x. Except for <STRONG>YI</STRONG>,
- the <STRONG>ncurses</STRONG> termcap names for them are invented. Accord-
- ing 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!
-
-
- <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
- <STRONG>String</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
- 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 slengthYI Set page length to
- #1 hundredth of an
- inch (some implemen-
- tations use sL for
- termcap).
-
- <STRONG>User-Defined</STRONG> <STRONG>Capabilities</STRONG>
- The preceding section listed the <EM>predefined</EM> capabilities.
- They deal with some special features for terminals no
- longer (or possibly never) produced. Occasionally there
- are special features of newer terminals which are awkward
- or impossible to represent by reusing the predefined capa-
- bilities.
-
- <STRONG>ncurses</STRONG> addresses this limitation by allowing user-defined
- capabilities. The <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> programs provide the <STRONG>-x</STRONG>
- option for this purpose. When <STRONG>-x</STRONG> is set, <STRONG>tic</STRONG> treats
- unknown capabilities as user-defined. That is, if <STRONG>tic</STRONG>
- encounters a capability name which it does not recognize,
- it infers its type (boolean, number or string) from the
- syntax and makes an extended table entry for that capabil-
- ity. The <STRONG>use_extended_names</STRONG> function makes this informa-
- tion conditionally available to applications. The ncurses
- library provides the data leaving most of the behavior to
- applications:
-
- <STRONG>o</STRONG> User-defined capability strings whose name begins with
- "k" are treated as function keys.
-
- <STRONG>o</STRONG> The types (boolean, number, string) determined by <STRONG>tic</STRONG>
- can be inferred by successful calls on <STRONG>tigetflag</STRONG>, etc.
-
- <STRONG>o</STRONG> If the capability name happens to be two characters,
- the capability is also available through the termcap
- interface.
-
- While termcap is said to be extensible because it does not
- use a predefined set of capabilities, in practice it has
- been limited to the capabilities defined by terminfo
- implementations. As a rule, user-defined capabilities
- intended for use by termcap applications should be limited
- to booleans and numbers to avoid running past the 1023
- byte limit assumed by termcap implementations and their
- applications. In particular, providing extended sets of
- function keys (past the 60 numbered keys and the handful
- of special named keys) is best done using the longer names
- available using terminfo.
-
- <STRONG>A</STRONG> <STRONG>Sample</STRONG> <STRONG>Entry</STRONG>
- The following entry, describing an ANSI-standard terminal,
- is representative of what a <STRONG>terminfo</STRONG> entry for a modern
- terminal typically looks like.
+ <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
+ <STRONG>String</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
+ 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
+ to #1
+ change_line_pitch lpi ZB Change number of
+ lines per inch to #1
+ change_res_horz chr ZC Change horizontal
+ resolution to #1
+ change_res_vert cvr ZD Change vertical res-
+ olution to #1
+ 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 col-
+ umns #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, move
+ to row #1 columns #2
+ 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
+ #1, #2 dots wide,
+ descender #3
+ 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
+ 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 #1
+ 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, #1
+ 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 (if smgtp
+ is not given) #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 col-
+ umn. See smgl.
+ (ML is not in BSD
+ termcap).
+ set_left_margin_parm smglp Zm Set left (right)
+ margin at column #1
+ 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
+ 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 #1, with
+ #2 characters in the
+ set
+ stop_bit_image rbim Zs Stop printing bit
+ image graphics
+ stop_char_set_def rcsd Zt End definition of
+ character set #1
+ 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,
+ column #1
+ 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 struc-
+ ture, but were originally not documented in the man page.
+
+
+ <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
+ <STRONG>String</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
+ 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 Produce #1'th item
+ from list of char-
+ acter 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 rectangular
+ bit image region
+ device_type devt dv Indicate lan-
+ guage/codeset sup-
+ port
+ display_pc_char dispc S1 Display PC charac-
+ ter #1
+ 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,
+ parameter #1 not
+ documented.
+ 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 codeset 0
+ (EUC set 0, ASCII)
+ set1_des_seq s1ds s1 Shift to codeset 1
+ set2_des_seq s2ds s2 Shift to codeset 2
+ set3_des_seq s3ds s3 Shift to codeset 3
+ set_a_background setab AB Set background
+ color to #1, using
+ ANSI escape
+ set_a_foreground setaf AF Set foreground
+ color to #1, 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. (ML is
+ not in BSD term-
+ cap).
+ 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 hardcopy capabilities. They were
+ used in some post-4.1 versions of System V curses, e.g., Solaris 2.5
+ and IRIX 6.x. Except for <STRONG>YI</STRONG>, the <STRONG>ncurses</STRONG> 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!
+
+
+ <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
+ <STRONG>String</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
+ 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 slength YI Set page length to
+ #1 hundredth of an
+ inch (some implemen-
+ tations use sL for
+ termcap).
+
+
+</PRE><H3><a name="h3-User-Defined-Capabilities">User-Defined Capabilities</a></H3><PRE>
+ The preceding section listed the <EM>predefined</EM> capabilities. They deal
+ with some special features for terminals no longer (or possibly never)
+ produced. Occasionally there are special features of newer terminals
+ which are awkward or impossible to represent by reusing the predefined
+ capabilities.
+
+ <STRONG>ncurses</STRONG> addresses this limitation by allowing user-defined capabili-
+ ties. The <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> programs provide the <STRONG>-x</STRONG> option for this pur-
+ pose. When <STRONG>-x</STRONG> is set, <STRONG>tic</STRONG> treats unknown capabilities as user-defined.
+ That is, if <STRONG>tic</STRONG> encounters a capability name which it does not recog-
+ nize, it infers its type (boolean, number or string) from the syntax
+ and makes an extended table entry for that capability. The
+ <STRONG><A HREF="curs_extend.3x.html">use_extended_names(3x)</A></STRONG> function makes this information conditionally
+ available to applications. The ncurses library provides the data leav-
+ ing most of the behavior to applications:
+
+ <STRONG>o</STRONG> User-defined capability strings whose name begins with "k" are
+ treated as function keys.
+
+ <STRONG>o</STRONG> The types (boolean, number, string) determined by <STRONG>tic</STRONG> can be
+ inferred by successful calls on <STRONG>tigetflag</STRONG>, etc.
+
+ <STRONG>o</STRONG> If the capability name happens to be two characters, the capability
+ is also available through the termcap interface.
+
+ While termcap is said to be extensible because it does not use a prede-
+ fined set of capabilities, in practice it has been limited to the capa-
+ bilities defined by terminfo implementations. As a rule, user-defined
+ capabilities intended for use by termcap applications should be limited
+ to booleans and numbers to avoid running past the 1023 byte limit
+ assumed by termcap implementations and their applications. In particu-
+ lar, providing extended sets of function keys (past the 60 numbered
+ keys and the handful of special named keys) is best done using the
+ longer names available using terminfo.
+
+
+</PRE><H3><a name="h3-A-Sample-Entry">A Sample Entry</a></H3><PRE>
+ The following entry, describing an ANSI-standard terminal, is represen-
+ tative of what a <STRONG>terminfo</STRONG> entry for a modern terminal typically looks
+ like.
ansi|ansi/pc-term compatible with color,
am, mc5i, mir, msgr,
@@ -1100,44 +1194,59 @@
smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%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 <EM>terminfo</EM> are of three types:
-
- <STRONG>o</STRONG> Boolean capabilities which indicate that the terminal
- has some particular feature,
-
- <STRONG>o</STRONG> numeric capabilities giving the size of the terminal
- or the size of particular delays, and
-
- <STRONG>o</STRONG> string capabilities, which give a sequence which can
- be used to perform particular terminal operations.
-
- <STRONG>Types</STRONG> <STRONG>of</STRONG> <STRONG>Capabilities</STRONG>
- All capabilities have names. For instance, the fact that
- ANSI-standard terminals have <EM>automatic</EM> <EM>margins</EM> (i.e., an
- automatic return and line-feed when the end of a line is
- reached) is indicated by the capability <STRONG>am</STRONG>. Hence the
- description of ansi includes <STRONG>am</STRONG>. Numeric capabilities are
- followed by the character "#" and then a positive value.
- Thus <STRONG>cols</STRONG>, 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 <STRONG>el</STRONG> (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 <STRONG>\E</STRONG> and <STRONG>\e</STRONG> map to an ESCAPE character, <STRONG>^x</STRONG> maps to a
- control-x for any appropriate x, and the sequences <STRONG>\n</STRONG> <STRONG>\l</STRONG>
- <STRONG>\r</STRONG> <STRONG>\t</STRONG> <STRONG>\b</STRONG> <STRONG>\f</STRONG> <STRONG>\s</STRONG> give a newline, line-feed, return, tab,
- backspace, form-feed, and space. Other escapes include
+ 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 <EM>terminfo</EM> are of three types:
+
+ <STRONG>o</STRONG> Boolean capabilities which indicate that the terminal has some par-
+ ticular feature,
+
+ <STRONG>o</STRONG> numeric capabilities giving the size of the terminal or the size of
+ particular delays, and
+
+ <STRONG>o</STRONG> string capabilities, which give a sequence which can be used to
+ perform particular terminal operations.
+
+
+</PRE><H3><a name="h3-Types-of-Capabilities">Types of Capabilities</a></H3><PRE>
+ All capabilities have names. For instance, the fact that ANSI-standard
+ terminals have <EM>automatic</EM> <EM>margins</EM> (i.e., an automatic return and line-
+ feed when the end of a line is reached) is indicated by the capability
+ <STRONG>am</STRONG>. Hence the description of ansi includes <STRONG>am</STRONG>. Numeric capabilities
+ are followed by the character "#" and then a positive value. Thus
+ <STRONG>cols</STRONG>, which indicates the number of columns the terminal has, gives the
+ value "80" for ansi. Values for numeric capabilities may be specified
+ in decimal, octal or hexadecimal, using the C programming language con-
+ ventions (e.g., 255, 0377 and 0xff or 0xFF).
+
+ Finally, string valued capabilities, such as <STRONG>el</STRONG> (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 capabil-
+ ities for easy encoding of characters there:
+
+ <STRONG>o</STRONG> Both <STRONG>\E</STRONG> and <STRONG>\e</STRONG> map to an ESCAPE character,
+
+ <STRONG>o</STRONG> <STRONG>^x</STRONG> maps to a control-x for any appropriate <EM>x</EM>, and
+
+ <STRONG>o</STRONG> the sequences
+
+ <STRONG>\n</STRONG>, <STRONG>\l</STRONG>, <STRONG>\r</STRONG>, <STRONG>\t</STRONG>, <STRONG>\b</STRONG>, <STRONG>\f</STRONG>, and <STRONG>\s</STRONG>
+
+ produce
+
+ <EM>newline</EM>, <EM>line-feed</EM>, <EM>return</EM>, <EM>tab</EM>, <EM>backspace</EM>, <EM>form-feed</EM>, and <EM>space</EM>,
+
+ respectively.
+
+ X/Open Curses does not say what "appropriate <EM>x</EM>" might be. In practice,
+ that is a printable ASCII graphic character. The special case "^?" is
+ interpreted as DEL (127). In all other cases, the character value is
+ AND'd with 0x1f, mapping to ASCII control codes in the range 0 through
+ 31.
+
+ Other escapes include
<STRONG>o</STRONG> <STRONG>\^</STRONG> for <STRONG>^</STRONG>,
@@ -1149,164 +1258,147 @@
<STRONG>o</STRONG> and <STRONG>\0</STRONG> for null.
- <STRONG>\0</STRONG> will produce \200, which does not terminate a
- string but behaves as a null character on most termi-
- nals, providing CS7 is specified. See <STRONG>stty(1)</STRONG>.
-
- The reason for this quirk is to maintain binary com-
- patibility of the compiled terminfo files with other
- implementations, e.g., the SVr4 systems, which docu-
- ment this. Compiled terminfo files use null-termi-
- nated strings, with no lengths. Modifying this would
- require a new binary format, which would not work with
- other implementations.
-
- Finally, characters may be given as three octal digits
- after a <STRONG>\</STRONG>.
-
- A delay in milliseconds may appear anywhere in a string
- capability, enclosed in $&lt;..&gt; brackets, as in <STRONG>el</STRONG>=\EK$&lt;5&gt;,
- and padding characters are supplied by <EM>tputs</EM> 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 <EM>lines</EM>
- affected.) Normally, padding is advisory if the device
- has the <STRONG>xon</STRONG> 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 <STRONG>xon</STRONG> 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 <STRONG>ind</STRONG> in the example above.
-
- <STRONG>Fetching</STRONG> <STRONG>Compiled</STRONG> <STRONG>Descriptions</STRONG>
- The <STRONG>ncurses</STRONG> library searches for terminal descriptions in
- several places. It uses only the first description found.
- The library has a compiled-in list of places to search
- which can be overridden by environment variables. Before
- starting to search, <STRONG>ncurses</STRONG> eliminates duplicates in its
- search list.
-
- <STRONG>o</STRONG> If the environment variable TERMINFO is set, it is
- interpreted as the pathname of a directory containing
- the compiled description you are working on. Only
- that directory is searched.
-
- <STRONG>o</STRONG> If TERMINFO is not set, <STRONG>ncurses</STRONG> will instead look in
- the directory <STRONG>$HOME/.terminfo</STRONG> for a compiled descrip-
- tion.
-
- <STRONG>o</STRONG> Next, if the environment variable TERMINFO_DIRS is
- set, <STRONG>ncurses</STRONG> will interpret the contents of that vari-
- able as a list of colon-separated directories (or
- database files) to be searched.
-
- An empty directory name (i.e., if the variable begins
- or ends with a colon, or contains adacent colons) is
- interpreted as the system location <EM>/usr/share/ter-</EM>
- <EM>minfo</EM>.
+ <STRONG>\0</STRONG> will produce \200, which does not terminate a string but behaves
+ as a null character on most terminals, providing CS7 is specified.
+ See <STRONG>stty(1)</STRONG>.
+
+ The reason for this quirk is to maintain binary compatibility of
+ the compiled terminfo files with other implementations, e.g., the
+ SVr4 systems, which document this. Compiled terminfo files use
+ null-terminated strings, with no lengths. Modifying this would
+ require a new binary format, which would not work with other imple-
+ mentations.
+
+ Finally, characters may be given as three octal digits after a <STRONG>\</STRONG>.
+
+ A delay in milliseconds may appear anywhere in a string capability,
+ enclosed in $&lt;..&gt; brackets, as in <STRONG>el</STRONG>=\EK$&lt;5&gt;, and padding characters
+ are supplied by <STRONG><A HREF="curs_terminfo.3x.html">tputs(3x)</A></STRONG> to provide this delay.
+
+ <STRONG>o</STRONG> The delay must be a number with at most one decimal place of preci-
+ sion; it may be followed by suffixes "*" or "/" or both.
+
+ <STRONG>o</STRONG> 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 <EM>lines</EM> affected.)
+
+ Normally, padding is advisory if the device has the <STRONG>xon</STRONG> capability;
+ it is used for cost computation but does not trigger delays.
+
+ <STRONG>o</STRONG> A "/" suffix indicates that the padding is mandatory and forces a
+ delay of the given number of milliseconds even on devices for which
+ <STRONG>xon</STRONG> 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
+ <STRONG>ind</STRONG> in the example above.
+
+
+</PRE><H3><a name="h3-Fetching-Compiled-Descriptions">Fetching Compiled Descriptions</a></H3><PRE>
+ The <STRONG>ncurses</STRONG> library searches for terminal descriptions in several
+ places. It uses only the first description found. The library has a
+ compiled-in list of places to search which can be overridden by envi-
+ ronment variables. Before starting to search, <STRONG>ncurses</STRONG> eliminates
+ duplicates in its search list.
+
+ <STRONG>o</STRONG> If the environment variable TERMINFO is set, it is interpreted as
+ the pathname of a directory containing the compiled description you
+ are working on. Only that directory is searched.
+
+ <STRONG>o</STRONG> If TERMINFO is not set, <STRONG>ncurses</STRONG> will instead look in the directory
+ <STRONG>$HOME/.terminfo</STRONG> for a compiled description.
+
+ <STRONG>o</STRONG> Next, if the environment variable TERMINFO_DIRS is set, <STRONG>ncurses</STRONG>
+ will interpret the contents of that variable as a list of colon-
+ separated directories (or database files) to be searched.
+
+ An empty directory name (i.e., if the variable begins or ends with
+ a colon, or contains adjacent colons) is interpreted as the system
+ location <EM>/usr/share/terminfo</EM>.
<STRONG>o</STRONG> Finally, <STRONG>ncurses</STRONG> searches these compiled-in locations:
- <STRONG>o</STRONG> a list of directories
- (/usr/local/ncurses/share/terminfo:/usr/share/ter-
- minfo), and
-
- <STRONG>o</STRONG> the system terminfo directory, <EM>/usr/share/terminfo</EM>
- (the compiled-in default).
-
- <STRONG>Preparing</STRONG> <STRONG>Descriptions</STRONG>
- 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
- <EM>terminfo</EM> and to build up a description gradually, using
- partial descriptions with <EM>vi</EM> 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 <EM>terminfo</EM> 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.
-
- <STRONG>Basic</STRONG> <STRONG>Capabilities</STRONG>
- The number of columns on each line for the terminal is
- given by the <STRONG>cols</STRONG> numeric capability. If the terminal is
- a CRT, then the number of lines on the screen is given by
- the <STRONG>lines</STRONG> 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 <STRONG>am</STRONG> capability. If the termi-
- nal can clear its screen, leaving the cursor in the home
- position, then this is given by the <STRONG>clear</STRONG> string capabil-
- ity. If the terminal overstrikes (rather than clearing a
- position when a character is struck over) then it should
- have the <STRONG>os</STRONG> capability. If the terminal is a printing
- terminal, with no soft copy unit, give it both <STRONG>hc</STRONG> and <STRONG>os</STRONG>.
- (<STRONG>os</STRONG> 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 <STRONG>cr</STRONG>. (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 <STRONG>bel</STRONG>.
-
- If there is a code to move the cursor one position to the
- left (such as backspace) that capability should be given
- as <STRONG>cub1</STRONG>. Similarly, codes to move to the right, up, and
- down should be given as <STRONG>cuf1</STRONG>, <STRONG>cuu1</STRONG>, and <STRONG>cud1</STRONG>. These local
- cursor motions should not alter the text they pass over,
- for example, you would not normally use "<STRONG>cuf1</STRONG>= " because
- the space would erase the character moved over.
-
- A very important point here is that the local cursor
- motions encoded in <EM>terminfo</EM> are undefined at the left and
- top edges of a CRT terminal. Programs should never
- attempt to backspace around the left edge, unless <STRONG>bw</STRONG> 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 <STRONG>ind</STRONG> (index) string.
-
- To scroll text down, a program goes to the top left corner
- of the screen and sends the <STRONG>ri</STRONG> (reverse index) string.
- The strings <STRONG>ind</STRONG> and <STRONG>ri</STRONG> are undefined when not on their
- respective corners of the screen.
-
- Parameterized versions of the scrolling sequences are <STRONG>indn</STRONG>
- and <STRONG>rin</STRONG> which have the same semantics as <STRONG>ind</STRONG> and <STRONG>ri</STRONG> except
- that they take one parameter, and scroll that many lines.
- They are also undefined except at the appropriate edge of
- the screen.
-
- The <STRONG>am</STRONG> 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 <STRONG>cuf1</STRONG> from the last column.
- The only local motion which is defined from the left edge
- is if <STRONG>bw</STRONG> is given, then a <STRONG>cub1</STRONG> from the left edge will
- move to the right edge of the previous row. If <STRONG>bw</STRONG> 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
- <EM>terminfo</EM> file usually assumes that this is on; i.e., <STRONG>am</STRONG>.
- If the terminal has a command which moves to the first
- column of the next line, that command can be given as <STRONG>nel</STRONG>
- (newline). It does not matter if the command clears the
- remainder of the current line, so if the terminal has no
- <STRONG>cr</STRONG> and <STRONG>lf</STRONG> it may still be possible to craft a working <STRONG>nel</STRONG>
- 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
+ <STRONG>o</STRONG> a list of directories (/usr/local/ncurses/share/ter-
+ minfo:/usr/share/terminfo), and
+
+ <STRONG>o</STRONG> the system terminfo directory, <EM>/usr/share/terminfo</EM> (the com-
+ piled-in default).
+
+
+</PRE><H3><a name="h3-Preparing-Descriptions">Preparing Descriptions</a></H3><PRE>
+ 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 <EM>terminfo</EM> and to build up a
+ description gradually, using partial descriptions with <EM>vi</EM> or some other
+ screen-oriented program to check that they are correct. Be aware that
+ a very unusual terminal may expose deficiencies in the ability of the
+ <EM>terminfo</EM> 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 usually needed. A similar test can be used for insert character.
+
+
+</PRE><H3><a name="h3-Basic-Capabilities">Basic Capabilities</a></H3><PRE>
+ The number of columns on each line for the terminal is given by the
+ <STRONG>cols</STRONG> numeric capability. If the terminal is a CRT, then the number of
+ lines on the screen is given by the <STRONG>lines</STRONG> capability. If the terminal
+ wraps around to the beginning of the next line when it reaches the
+ right margin, then it should have the <STRONG>am</STRONG> capability. If the terminal
+ can clear its screen, leaving the cursor in the home position, then
+ this is given by the <STRONG>clear</STRONG> string capability. If the terminal over-
+ strikes (rather than clearing a position when a character is struck
+ over) then it should have the <STRONG>os</STRONG> capability. If the terminal is a
+ printing terminal, with no soft copy unit, give it both <STRONG>hc</STRONG> and <STRONG>os</STRONG>. (<STRONG>os</STRONG>
+ 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 <STRONG>cr</STRONG>. (Normally
+ this will be carriage return, control/M.) If there is a code to pro-
+ duce an audible signal (bell, beep, etc) give this as <STRONG>bel</STRONG>.
+
+ If there is a code to move the cursor one position to the left (such as
+ backspace) that capability should be given as <STRONG>cub1</STRONG>. Similarly, codes
+ to move to the right, up, and down should be given as <STRONG>cuf1</STRONG>, <STRONG>cuu1</STRONG>, and
+ <STRONG>cud1</STRONG>. These local cursor motions should not alter the text they pass
+ over, for example, you would not normally use "<STRONG>cuf1</STRONG>= " because the
+ space would erase the character moved over.
+
+ A very important point here is that the local cursor motions encoded in
+ <EM>terminfo</EM> are undefined at the left and top edges of a CRT terminal.
+ Programs should never attempt to backspace around the left edge, unless
+ <STRONG>bw</STRONG> 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 <STRONG>ind</STRONG> (index) string.
+
+ To scroll text down, a program goes to the top left corner of the
+ screen and sends the <STRONG>ri</STRONG> (reverse index) string. The strings <STRONG>ind</STRONG> and <STRONG>ri</STRONG>
+ are undefined when not on their respective corners of the screen.
+
+ Parameterized versions of the scrolling sequences are <STRONG>indn</STRONG> and <STRONG>rin</STRONG>
+ which have the same semantics as <STRONG>ind</STRONG> and <STRONG>ri</STRONG> except that they take one
+ parameter, and scroll that many lines. They are also undefined except
+ at the appropriate edge of the screen.
+
+ The <STRONG>am</STRONG> 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 <STRONG>cuf1</STRONG> from the last column. The only local motion which is defined
+ from the left edge is if <STRONG>bw</STRONG> is given, then a <STRONG>cub1</STRONG> from the left edge
+ will move to the right edge of the previous row. If <STRONG>bw</STRONG> is not given,
+ the effect is undefined. This is useful for drawing a box around the
+ edge of the screen, for example. If the terminal has switch selectable
+ automatic margins, the <EM>terminfo</EM> file usually assumes that this is on;
+ i.e., <STRONG>am</STRONG>. If the terminal has a command which moves to the first col-
+ umn of the next line, that command can be given as <STRONG>nel</STRONG> (newline). It
+ does not matter if the command clears the remainder of the current
+ line, so if the terminal has no <STRONG>cr</STRONG> and <STRONG>lf</STRONG> it may still be possible to
+ craft a working <STRONG>nel</STRONG> out of one or both of them.
+
+ These capabilities suffice to describe hard-copy and "glass-tty" termi-
+ nals. 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,
@@ -1317,43 +1409,42 @@
am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
ind=^J, lines#24,
- <STRONG>Parameterized</STRONG> <STRONG>Strings</STRONG>
- Cursor addressing and other strings requiring parameters
- in the terminal are described by a parameterized string
- capability, with <EM>printf</EM>-like escapes such as <EM>%x</EM> in it.
- For example, to address the cursor, the <STRONG>cup</STRONG> 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 <STRONG>mrcup</STRONG>.
-
- The parameter mechanism uses a stack and special <STRONG>%</STRONG> codes
- to manipulate it. Typically a sequence will push one of
- the parameters onto the stack and then print it in some
- format. Print (e.g., "%d") is a special case. Other
- operations, including "%t" pop their operand from the
- stack. It is noted that more complex operations are often
- necessary, e.g., in the <STRONG>sgr</STRONG> string.
+
+</PRE><H3><a name="h3-Parameterized-Strings">Parameterized Strings</a></H3><PRE>
+ Cursor addressing and other strings requiring parameters in the termi-
+ nal are described by a parameterized string capability, with <EM>printf</EM>-
+ like escapes such as <EM>%x</EM> in it. For example, to address the cursor, the
+ <STRONG>cup</STRONG> 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 <STRONG>mrcup</STRONG>.
+
+ The parameter mechanism uses a stack and special <STRONG>%</STRONG> codes to manipulate
+ it. Typically a sequence will push one of the parameters onto the
+ stack and then print it in some format. Print (e.g., "%d") is a spe-
+ cial case. Other operations, including "%t" pop their operand from the
+ stack. It is noted that more complex operations are often necessary,
+ e.g., in the <STRONG>sgr</STRONG> string.
The <STRONG>%</STRONG> encodings have the following meanings:
<STRONG>%%</STRONG> outputs "%"
<STRONG>%</STRONG><EM>[[</EM>:<EM>]flags][width[.precision]][</EM><STRONG>doxXs</STRONG><EM>]</EM>
- as in <STRONG>printf</STRONG>, flags are <EM>[-+#]</EM> and <EM>space</EM>. Use a ":"
- to allow the next character to be a "-" flag, avoid-
- ing interpreting "%-" as an operator.
+ as in <STRONG>printf(3)</STRONG>, flags are <EM>[-+#]</EM> and <EM>space</EM>. Use a ":" to allow
+ the next character to be a "-" flag, avoiding interpreting "%-" as
+ an operator.
- %c print pop() like %c in <STRONG>printf</STRONG>
+ %c print <EM>pop()</EM> like %c in <STRONG>printf</STRONG>
- <STRONG>%s</STRONG> print pop() like %s in <STRONG>printf</STRONG>
+ <STRONG>%s</STRONG> print <EM>pop()</EM> like %s in <STRONG>printf</STRONG>
<STRONG>%p</STRONG><EM>[1-9]</EM>
push <EM>i</EM>'th parameter
<STRONG>%P</STRONG><EM>[a-z]</EM>
- set dynamic variable <EM>[a-z]</EM> to pop()
+ set dynamic variable <EM>[a-z]</EM> to <EM>pop()</EM>
<STRONG>%g</STRONG><EM>[a-z]/</EM>
get dynamic variable <EM>[a-z]</EM> and push it
@@ -1364,11 +1455,10 @@
<STRONG>%g</STRONG><EM>[A-Z]</EM>
get static variable <EM>[a-z]</EM> and push it
- The terms "static" and "dynamic" are misleading.
- Historically, these are simply two different sets of
- variables, whose values are not reset between calls
- to <STRONG>tparm</STRONG>. However, that fact is not documented in
- other implementations. Relying on it will adversely
+ The terms "static" and "dynamic" are misleading. Historically,
+ these are simply two different sets of variables, whose values are
+ not reset between calls to <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>. However, that fact is not
+ documented in other implementations. Relying on it will adversely
impact portability to other implementations.
<STRONG>%'</STRONG><EM>c</EM><STRONG>'</STRONG> char constant <EM>c</EM>
@@ -1379,11 +1469,10 @@
<STRONG>%l</STRONG> push strlen(pop)
<STRONG>%+</STRONG>, <STRONG>%-</STRONG>, <STRONG>%*</STRONG>, <STRONG>%/</STRONG>, <STRONG>%m</STRONG>
- arithmetic (%m is mod): <EM>push(pop()</EM> <EM>op</EM> <EM>pop())</EM>
+ arithmetic (%m is <EM>mod</EM>): <EM>push(pop()</EM> <EM>op</EM> <EM>pop())</EM>
<STRONG>%&amp;</STRONG>, <STRONG>%|</STRONG>, <STRONG>%^</STRONG>
- bit operations (AND, OR and exclusive-OR): <EM>push(pop()</EM>
- <EM>op</EM> <EM>pop())</EM>
+ bit operations (AND, OR and exclusive-OR): <EM>push(pop()</EM> <EM>op</EM> <EM>pop())</EM>
<STRONG>%=</STRONG>, <STRONG>%&gt;</STRONG>, <STRONG>%&lt;</STRONG>
logical operations: <EM>push(pop()</EM> <EM>op</EM> <EM>pop())</EM>
@@ -1392,407 +1481,360 @@
logical AND and OR operations (for conditionals)
<STRONG>%!</STRONG>, <STRONG>%~</STRONG>
- unary operations (logical and bit complement):
- push(op pop())
+ unary operations (logical and bit complement): <EM>push(op</EM> <EM>pop())</EM>
<STRONG>%i</STRONG> add 1 to first two parameters (for ANSI terminals)
<STRONG>%?</STRONG> <EM>expr</EM> <STRONG>%t</STRONG> <EM>thenpart</EM> <STRONG>%e</STRONG> <EM>elsepart</EM> <STRONG>%;</STRONG>
- This forms an if-then-else. The <STRONG>%e</STRONG> <EM>elsepart</EM> is
- optional. Usually the <STRONG>%?</STRONG> <EM>expr</EM> part pushes a value
- onto the stack, and <STRONG>%t</STRONG> pops it from the stack, test-
- ing if it is nonzero (true). If it is zero (false),
- control passes to the <STRONG>%e</STRONG> (else) part.
+ This forms an if-then-else. The <STRONG>%e</STRONG> <EM>elsepart</EM> is optional. Usually
+ the <STRONG>%?</STRONG> <EM>expr</EM> part pushes a value onto the stack, and <STRONG>%t</STRONG> pops it
+ from the stack, testing if it is nonzero (true). If it is zero
+ (false), control passes to the <STRONG>%e</STRONG> (else) part.
It is possible to form else-if's a la Algol 68:
<STRONG>%?</STRONG> c1 <STRONG>%t</STRONG> b1 <STRONG>%e</STRONG> c2 <STRONG>%t</STRONG> b2 <STRONG>%e</STRONG> c3 <STRONG>%t</STRONG> b3 <STRONG>%e</STRONG> c4 <STRONG>%t</STRONG> b4 <STRONG>%e</STRONG> <STRONG>%;</STRONG>
where ci are conditions, bi are bodies.
- Use the <STRONG>-f</STRONG> option of <STRONG>tic</STRONG> or <STRONG>infocmp</STRONG> to see the struc-
- ture of if-then-else's. Some strings, e.g., <STRONG>sgr</STRONG> can
- be very complicated when written on one line. The <STRONG>-f</STRONG>
- option splits the string into lines with the parts
- indented.
-
- Binary operations are in postfix form with the operands in
- the usual order. That is, to get x-5 one would use
- "%gx%{5}%-". <STRONG>%P</STRONG> and <STRONG>%g</STRONG> 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 <STRONG>cup</STRONG> capability is "cup=6\E&amp;%p2%2dc%p1%2dY".
-
- The Microterm ACT-IV needs the current row and column sent
- preceded by a <STRONG>^T</STRONG>, 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 (<STRONG>cub1</STRONG>), and to
- move the cursor up one line on the screen (<STRONG>cuu1</STRONG>). This is
- necessary because it is not always safe to transmit <STRONG>\n</STRONG> <STRONG>^D</STRONG>
- and <STRONG>\r</STRONG>, 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.
-
- <STRONG>Cursor</STRONG> <STRONG>Motions</STRONG>
- If the terminal has a fast way to home the cursor (to very
- upper left corner of screen) then this can be given as
- <STRONG>home</STRONG>; similarly a fast way of getting to the lower left-
- hand corner can be given as <STRONG>ll</STRONG>; this may involve going up
- with <STRONG>cuu1</STRONG> from the home position, but a program should
- never do this itself (unless <STRONG>ll</STRONG> 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 <STRONG>home</STRONG>.)
-
- If the terminal has row or column absolute cursor address-
- ing, these can be given as single parameter capabilities
- <STRONG>hpa</STRONG> (horizontal position absolute) and <STRONG>vpa</STRONG> (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 <STRONG>cup</STRONG>. If there are parameter-
- ized local motions (e.g., move <EM>n</EM> spaces to the right)
- these can be given as <STRONG>cud</STRONG>, <STRONG>cub</STRONG>, <STRONG>cuf</STRONG>, and <STRONG>cuu</STRONG> with a single
- parameter indicating how many spaces to move. These are
- primarily useful if the terminal does not have <STRONG>cup</STRONG>, 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 <STRONG>smcup</STRONG> and <STRONG>rmcup</STRONG>. 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 <STRONG>smcup</STRONG> sets
- the command character to be the one used by terminfo. If
- the <STRONG>smcup</STRONG> sequence will not restore the screen after an
- <STRONG>rmcup</STRONG> sequence is output (to the state prior to outputting
+ Use the <STRONG>-f</STRONG> option of <STRONG>tic</STRONG> or <STRONG>infocmp</STRONG> to see the structure of if-
+ then-else's. Some strings, e.g., <STRONG>sgr</STRONG> can be very complicated when
+ written on one line. The <STRONG>-f</STRONG> option splits the string into lines
+ with the parts indented.
+
+ Binary operations are in postfix form with the operands in the usual
+ order. That is, to get x-5 one would use "%gx%{5}%-". <STRONG>%P</STRONG> and <STRONG>%g</STRONG> vari-
+ ables 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 digits. Thus its <STRONG>cup</STRONG> capability is
+ "cup=6\E&amp;%p2%2dc%p1%2dY".
+
+ The Microterm ACT-IV needs the current row and column sent preceded by
+ a <STRONG>^T</STRONG>, 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 (<STRONG>cub1</STRONG>), and to move the cursor up one line on the
+ screen (<STRONG>cuu1</STRONG>). This is necessary because it is not always safe to
+ transmit <STRONG>\n</STRONG> <STRONG>^D</STRONG> and <STRONG>\r</STRONG>, 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 column 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 character. Then the same
+ is done for the second parameter. More complex arithmetic is possible
+ using the stack.
+
+
+</PRE><H3><a name="h3-Cursor-Motions">Cursor Motions</a></H3><PRE>
+ If the terminal has a fast way to home the cursor (to very upper left
+ corner of screen) then this can be given as <STRONG>home</STRONG>; similarly a fast way
+ of getting to the lower left-hand corner can be given as <STRONG>ll</STRONG>; this may
+ involve going up with <STRONG>cuu1</STRONG> from the home position, but a program should
+ never do this itself (unless <STRONG>ll</STRONG> 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 cor-
+ ner of the screen, not of memory. (Thus, the \EH sequence on HP termi-
+ nals cannot be used for <STRONG>home</STRONG>.)
+
+ If the terminal has row or column absolute cursor addressing, these can
+ be given as single parameter capabilities <STRONG>hpa</STRONG> (horizontal position
+ absolute) and <STRONG>vpa</STRONG> (vertical position absolute). Sometimes these are
+ shorter than the more general two parameter sequence (as with the
+ hp2645) and can be used in preference to <STRONG>cup</STRONG>. If there are parameter-
+ ized local motions (e.g., move <EM>n</EM> spaces to the right) these can be
+ given as <STRONG>cud</STRONG>, <STRONG>cub</STRONG>, <STRONG>cuf</STRONG>, and <STRONG>cuu</STRONG> with a single parameter indicating how
+ many spaces to move. These are primarily useful if the terminal does
+ not have <STRONG>cup</STRONG>, 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 <STRONG>smcup</STRONG> and <STRONG>rmcup</STRONG>. 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 cur-
+ sor addressing, a one screen-sized window must be fixed into the termi-
+ nal for cursor addressing to work properly. This is also used for the
+ TEKTRONIX 4025, where <STRONG>smcup</STRONG> sets the command character to be the one
+ used by terminfo. If the <STRONG>smcup</STRONG> sequence will not restore the screen
+ after an <STRONG>rmcup</STRONG> sequence is output (to the state prior to outputting
<STRONG>rmcup</STRONG>), specify <STRONG>nrrmc</STRONG>.
- <STRONG>Area</STRONG> <STRONG>Clears</STRONG>
- 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 <STRONG>el</STRONG>. 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
- <STRONG>el1</STRONG>. If the terminal can clear from the current position
- to the end of the display, then this should be given as
- <STRONG>ed</STRONG>. <STRONG>Ed</STRONG> 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 <STRONG>ed</STRONG> is not available.)
-
- <STRONG>Insert/delete</STRONG> <STRONG>line</STRONG> <STRONG>and</STRONG> <STRONG>vertical</STRONG> <STRONG>motions</STRONG>
- If the terminal can open a new blank line before the line
- where the cursor is, this should be given as <STRONG>il1</STRONG>; 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 <STRONG>dl1</STRONG>; this is done only from the first
- position on the line to be deleted. Versions of <STRONG>il1</STRONG> and
- <STRONG>dl1</STRONG> which take a single parameter and insert or delete
- that many lines can be given as <STRONG>il</STRONG> and <STRONG>dl</STRONG>.
-
- If the terminal has a settable scrolling region (like the
- vt100) the command to set this can be described with the
- <STRONG>csr</STRONG> 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 <STRONG>csr</STRONG> on a properly chosen region; the <STRONG>sc</STRONG> and <STRONG>rc</STRONG> (save
- and restore cursor) commands may be useful for ensuring
- that your synthesized insert/delete string does not move
- the cursor. (Note that the <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> library does this
- synthesis automatically, so you need not compose
+
+</PRE><H3><a name="h3-Area-Clears">Area Clears</a></H3><PRE>
+ 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 <STRONG>el</STRONG>. 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 <STRONG>el1</STRONG>. If the terminal can clear from the current position to
+ the end of the display, then this should be given as <STRONG>ed</STRONG>. <STRONG>Ed</STRONG> 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 <STRONG>ed</STRONG> is not avail-
+ able.)
+
+
+</PRE><H3><a name="h3-Insert_delete-line-and-vertical-motions">Insert/delete line and vertical motions</a></H3><PRE>
+ If the terminal can open a new blank line before the line where the
+ cursor is, this should be given as <STRONG>il1</STRONG>; 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 <STRONG>dl1</STRONG>; this is done only from the first
+ position on the line to be deleted. Versions of <STRONG>il1</STRONG> and <STRONG>dl1</STRONG> which take
+ a single parameter and insert or delete that many lines can be given as
+ <STRONG>il</STRONG> and <STRONG>dl</STRONG>.
+
+ If the terminal has a settable scrolling region (like the vt100) the
+ command to set this can be described with the <STRONG>csr</STRONG> 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 <STRONG>csr</STRONG> on
+ a properly chosen region; the <STRONG>sc</STRONG> and <STRONG>rc</STRONG> (save and restore cursor) com-
+ mands may be useful for ensuring that your synthesized insert/delete
+ string does not move the cursor. (Note that the <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> library
+ does this synthesis automatically, so you need not compose
insert/delete strings for an entry with <STRONG>csr</STRONG>).
- 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 <STRONG>ri</STRONG> or <STRONG>ind</STRONG> on many terminals without a
- true insert/delete line, and is often faster even on ter-
- minals with those features.
-
- The boolean <STRONG>non_dest_scroll_region</STRONG> 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 <STRONG>ri</STRONG> followed by <STRONG>dl1</STRONG> or <STRONG>ind</STRONG>. If the data
- scrolled off the bottom of the region by the <STRONG>ri</STRONG> re-
- appears, then scrolling is non-destructive. System V and
- XSI Curses expect that <STRONG>ind</STRONG>, <STRONG>ri</STRONG>, <STRONG>indn</STRONG>, and <STRONG>rin</STRONG> will simu-
- late destructive scrolling; their documentation cautions
- you not to define <STRONG>csr</STRONG> unless this is true. This <STRONG>curses</STRONG>
- implementation is more liberal and will do explicit erases
- after scrolling if <STRONG>ndstr</STRONG> 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 <STRONG>wind</STRONG>. 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
- <STRONG>da</STRONG> capability should be given; if display memory can be
- retained below, then <STRONG>db</STRONG> should be given. These indicate
- that deleting a line or scrolling may bring non-blank
- lines up from below or that scrolling back with <STRONG>ri</STRONG> may
+ Yet another way to construct insert and delete might be to use a combi-
+ nation 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 <STRONG>ri</STRONG> or <STRONG>ind</STRONG> on many terminals without a true insert/delete line,
+ and is often faster even on terminals with those features.
+
+ The boolean <STRONG>non_dest_scroll_region</STRONG> should be set if each scrolling win-
+ dow 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 something to the bottom line, move the cursor to the top of the
+ region, and do <STRONG>ri</STRONG> followed by <STRONG>dl1</STRONG> or <STRONG>ind</STRONG>. If the data scrolled off the
+ bottom of the region by the <STRONG>ri</STRONG> re-appears, then scrolling is non-
+ destructive. System V and XSI Curses expect that <STRONG>ind</STRONG>, <STRONG>ri</STRONG>, <STRONG>indn</STRONG>, and
+ <STRONG>rin</STRONG> will simulate destructive scrolling; their documentation cautions
+ you not to define <STRONG>csr</STRONG> unless this is true. This <STRONG>curses</STRONG> implementation
+ is more liberal and will do explicit erases after scrolling if <STRONG>ndsrc</STRONG> 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 <STRONG>wind</STRONG>. 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 <STRONG>da</STRONG> capability
+ should be given; if display memory can be retained below, then <STRONG>db</STRONG>
+ should be given. These indicate that deleting a line or scrolling may
+ bring non-blank lines up from below or that scrolling back with <STRONG>ri</STRONG> may
bring down non-blank lines.
- <STRONG>Insert/Delete</STRONG> <STRONG>Character</STRONG>
- There are two basic kinds of intelligent terminals with
- respect to insert/delete character which can be described
- using <EM>terminfo.</EM> 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 clear-
- ing 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 posi-
- tion 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 terminal 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 <STRONG>in</STRONG>, which
- stands for "insert null".
-
- While these are two logically separate attributes (one
- line versus multi-line insert mode, and special treatment
- of untyped spaces) we have seen no terminals 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 <STRONG>smir</STRONG> the
- sequence to get into insert mode. Give as <STRONG>rmir</STRONG> the
- sequence to leave insert mode. Now give as <STRONG>ich1</STRONG> 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 <STRONG>ich1</STRONG>; 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 <STRONG>ich1</STRONG>. 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 <STRONG>ich</STRONG> sequences do not require previous smir,
- and most smir insert modes do not require <STRONG>ich1</STRONG> before each
- character. Therefore, the new <STRONG>curses</STRONG> actually assumes
- this is the case and uses either <STRONG>rmir</STRONG>/<STRONG>smir</STRONG> or <STRONG>ich</STRONG>/<STRONG>ich1</STRONG> 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 <STRONG>rmir</STRONG>/<STRONG>smir</STRONG> sequences in <STRONG>ich1</STRONG>.
-
- If post insert padding is needed, give this as a number of
- milliseconds in <STRONG>ip</STRONG> (a string option). Any other sequence
- which may need to be sent after an insert of a single
- character may also be given in <STRONG>ip</STRONG>. If your terminal needs
- both to be placed into an "insert mode" and a special code
- to precede each inserted character, then both <STRONG>smir</STRONG>/<STRONG>rmir</STRONG>
- and <STRONG>ich1</STRONG> can be given, and both will be used. The <STRONG>ich</STRONG>
- capability, with one parameter, <EM>n</EM>, will repeat the effects
- of <STRONG>ich1</STRONG> <EM>n</EM> times.
-
- If padding is necessary between characters typed while not
- in insert mode, give this as a number of milliseconds pad-
- ding in <STRONG>rmp</STRONG>.
-
- 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 <STRONG>mir</STRONG> to speed up inserting in this case.
- Omitting <STRONG>mir</STRONG> will affect only speed. Some terminals
- (notably Datamedia's) must not have <STRONG>mir</STRONG> because of the way
- their insert mode works.
-
- Finally, you can specify <STRONG>dch1</STRONG> to delete a single charac-
- ter, <STRONG>dch</STRONG> with one parameter, <EM>n</EM>, to delete <EM>n</EM> <EM>characters,</EM>
- and delete mode by giving <STRONG>smdc</STRONG> and <STRONG>rmdc</STRONG> to enter and exit
- delete mode (any mode the terminal needs to be placed in
- for <STRONG>dch1</STRONG> to work).
-
- A command to erase <EM>n</EM> characters (equivalent to outputting
- <EM>n</EM> blanks without moving the cursor) can be given as <STRONG>ech</STRONG>
- with one parameter.
-
- <STRONG>Highlighting,</STRONG> <STRONG>Underlining,</STRONG> <STRONG>and</STRONG> <STRONG>Visible</STRONG> <STRONG>Bells</STRONG>
- 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 <EM>stand-</EM>
- <EM>out</EM> <EM>mode</EM>, 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
- <STRONG>smso</STRONG> and <STRONG>rmso</STRONG>, respectively. If the code to change into
- or out of standout mode leaves one or even two blank spa-
- ces on the screen, as the TVI 912 and Teleray 1061 do,
- then <STRONG>xmc</STRONG> should be given to tell how many spaces are left.
-
- Codes to begin underlining and end underlining can be
- given as <STRONG>smul</STRONG> and <STRONG>rmul</STRONG> 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 <STRONG>uc</STRONG>.
-
- Other capabilities to enter various highlighting modes
- include <STRONG>blink</STRONG> (blinking) <STRONG>bold</STRONG> (bold or extra bright) <STRONG>dim</STRONG>
- (dim or half-bright) <STRONG>invis</STRONG> (blanking or invisible text)
- <STRONG>prot</STRONG> (protected) <STRONG>rev</STRONG> (reverse video) <STRONG>sgr0</STRONG> (turn off <EM>all</EM>
- attribute modes) <STRONG>smacs</STRONG> (enter alternate character set
- mode) and <STRONG>rmacs</STRONG> (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 <STRONG>sgr</STRONG> (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 <STRONG>sgr</STRONG>, only those for which
- corresponding separate attribute commands exist.
+
+</PRE><H3><a name="h3-Insert_Delete-Character">Insert/Delete Character</a></H3><PRE>
+ There are two basic kinds of intelligent terminals with respect to
+ insert/delete character which can be described using <EM>terminfo.</EM> The
+ most common insert/delete character operations affect only the charac-
+ ters 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 terminal
+ 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 sec-
+ ond type of terminal, and should give the capability <STRONG>in</STRONG>, which stands
+ for "insert null".
+
+ While these are two logically separate attributes (one line versus
+ multi-line insert mode, and special treatment of untyped spaces) we
+ have seen no terminals 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 <STRONG>smir</STRONG> the sequence to get into insert mode. Give
+ as <STRONG>rmir</STRONG> the sequence to leave insert mode. Now give as <STRONG>ich1</STRONG> any
+ sequence needed to be sent just before sending the character to be
+ inserted. Most terminals with a true insert mode will not give <STRONG>ich1</STRONG>;
+ terminals which send a sequence to open a screen position should give
+ it here.
+
+ If your terminal has both, insert mode is usually preferable to <STRONG>ich1</STRONG>.
+ 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 <STRONG>ich</STRONG> sequences do not require previous smir, and most smir insert
+ modes do not require <STRONG>ich1</STRONG> before each character. Therefore, the new
+ <STRONG>curses</STRONG> actually assumes this is the case and uses either <STRONG>rmir</STRONG>/<STRONG>smir</STRONG> or
+ <STRONG>ich</STRONG>/<STRONG>ich1</STRONG> 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 <STRONG>rmir</STRONG>/<STRONG>smir</STRONG> sequences in <STRONG>ich1</STRONG>.
+
+ If post insert padding is needed, give this as a number of milliseconds
+ in <STRONG>ip</STRONG> (a string option). Any other sequence which may need to be sent
+ after an insert of a single character may also be given in <STRONG>ip</STRONG>. If your
+ terminal needs both to be placed into an "insert mode" and a special
+ code to precede each inserted character, then both <STRONG>smir</STRONG>/<STRONG>rmir</STRONG> and <STRONG>ich1</STRONG>
+ can be given, and both will be used. The <STRONG>ich</STRONG> capability, with one
+ parameter, <EM>n</EM>, will repeat the effects of <STRONG>ich1</STRONG> <EM>n</EM> times.
+
+ If padding is necessary between characters typed while not in insert
+ mode, give this as a number of milliseconds padding in <STRONG>rmp</STRONG>.
+
+ 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 <STRONG>mir</STRONG> to speed up inserting in this
+ case. Omitting <STRONG>mir</STRONG> will affect only speed. Some terminals (notably
+ Datamedia's) must not have <STRONG>mir</STRONG> because of the way their insert mode
+ works.
+
+ Finally, you can specify <STRONG>dch1</STRONG> to delete a single character, <STRONG>dch</STRONG> with
+ one parameter, <EM>n</EM>, to delete <EM>n</EM> <EM>characters,</EM> and delete mode by giving
+ <STRONG>smdc</STRONG> and <STRONG>rmdc</STRONG> to enter and exit delete mode (any mode the terminal
+ needs to be placed in for <STRONG>dch1</STRONG> to work).
+
+ A command to erase <EM>n</EM> characters (equivalent to outputting <EM>n</EM> blanks
+ without moving the cursor) can be given as <STRONG>ech</STRONG> with one parameter.
+
+
+</PRE><H3><a name="h3-Highlighting_-Underlining_-and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></H3><PRE>
+ If your terminal has one or more kinds of display attributes, these can
+ be represented in a number of different ways. You should choose one
+ display form as <EM>standout</EM> <EM>mode</EM>, 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 <STRONG>smso</STRONG> and <STRONG>rmso</STRONG>, 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
+ <STRONG>xmc</STRONG> should be given to tell how many spaces are left.
+
+ Codes to begin underlining and end underlining can be given as <STRONG>smul</STRONG> and
+ <STRONG>rmul</STRONG> 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 <STRONG>uc</STRONG>.
+
+ Other capabilities to enter various highlighting modes include <STRONG>blink</STRONG>
+ (blinking) <STRONG>bold</STRONG> (bold or extra bright) <STRONG>dim</STRONG> (dim or half-bright) <STRONG>invis</STRONG>
+ (blanking or invisible text) <STRONG>prot</STRONG> (protected) <STRONG>rev</STRONG> (reverse video) <STRONG>sgr0</STRONG>
+ (turn off <EM>all</EM> attribute modes) <STRONG>smacs</STRONG> (enter alternate character set
+ mode) and <STRONG>rmacs</STRONG> (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 <STRONG>sgr</STRONG> (set attributes), taking 9 parameters. Each
+ parameter is either 0 or nonzero, as the corresponding attribute is on
+ or off. The 9 parameters are, in order: standout, underline, reverse,
+ blink, dim, bold, blank, protect, alternate character set. Not all
+ modes need be supported by <STRONG>sgr</STRONG>, only those for which corresponding sep-
+ arate attribute commands exist.
For example, the DEC vt220 supports most of the modes:
- <STRONG>tparm</STRONG> <STRONG>parameter</STRONG> <STRONG>attribute</STRONG> <STRONG>escape</STRONG> <STRONG>sequence</STRONG>
-
- 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
-
- <STRONG>sequence</STRONG> <STRONG>when</STRONG> <STRONG>to</STRONG> <STRONG>output</STRONG> <STRONG>terminfo</STRONG> <STRONG>translation</STRONG>
-
- \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%;
+ <STRONG>tparm</STRONG> <STRONG>parameter</STRONG> <STRONG>attribute</STRONG> <STRONG>escape</STRONG> <STRONG>sequence</STRONG>
+
+ 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 termi-
+ nal has a protect mode, though it is not commonly used in sgr because
+ it protects characters on the screen from the host's erasures. The
+ altcharset mode also is different in that it is either ^O or ^N,
+ depending on whether it is off or on. If all modes are turned on, the
+ resulting sequence is \E[0;1;4;5;7;8m^N.
+
+ Some sequences are common to different modes. For example, ;7 is out-
+ put 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 dependencies yields
+
+ <STRONG>sequence</STRONG> <STRONG>when</STRONG> <STRONG>to</STRONG> <STRONG>output</STRONG> <STRONG>terminfo</STRONG> <STRONG>translation</STRONG>
+
+ \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%;%?%p4%t;5%;
%?%p1%p3%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
- Remember that if you specify sgr, you must also specify
- sgr0. Also, some implementations rely on sgr being given
- if sgr0 is, Not all terminfo entries necessarily have an
- sgr string, however. Many terminfo entries are derived
- from termcap entries which have no sgr string. The only
- drawback to adding an sgr string is that termcap also
- assumes that sgr0 does not exit alternate character set
- mode.
-
- Terminals with the "magic cookie" glitch (<STRONG>xmc</STRONG>) 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
- <STRONG>msgr</STRONG> 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 <STRONG>flash</STRONG>; 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 <STRONG>cvvis</STRONG>. If there
- is a way to make the cursor completely invisible, give
- that as <STRONG>civis</STRONG>. The capability <STRONG>cnorm</STRONG> 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 <STRONG>ul</STRONG>. If a
- character overstriking another leaves both characters on
- the screen, specify the capability <STRONG>os</STRONG>. If overstrikes are
- erasable with a blank, then this should be indicated by
+ Remember that if you specify sgr, you must also specify sgr0. Also,
+ some implementations rely on sgr being given if sgr0 is, Not all ter-
+ minfo entries necessarily have an sgr string, however. Many terminfo
+ entries are derived from termcap entries which have no sgr string. The
+ only drawback to adding an sgr string is that termcap also assumes that
+ sgr0 does not exit alternate character set mode.
+
+ Terminals with the "magic cookie" glitch (<STRONG>xmc</STRONG>) deposit special "cook-
+ ies" when they receive mode-setting sequences, which affect the display
+ algorithm rather than having extra bits for each character. Some ter-
+ minals, 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 <STRONG>msgr</STRONG> capability, asserting that it is
+ safe to move in standout mode, is present.
+
+ If the terminal has a way of flashing the screen to indicate an error
+ quietly (a bell replacement) then this can be given as <STRONG>flash</STRONG>; 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
+ <STRONG>cvvis</STRONG>. If there is a way to make the cursor completely invisible, give
+ that as <STRONG>civis</STRONG>. The capability <STRONG>cnorm</STRONG> 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 <STRONG>ul</STRONG>. If a character overstriking another
+ leaves both characters on the screen, specify the capability <STRONG>os</STRONG>. If
+ overstrikes are erasable with a blank, then this should be indicated by
giving <STRONG>eo</STRONG>.
- <STRONG>Keypad</STRONG> <STRONG>and</STRONG> <STRONG>Function</STRONG> <STRONG>Keys</STRONG>
- 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 key-
- pad 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 <STRONG>smkx</STRONG> and
- <STRONG>rmkx</STRONG>. 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 <STRONG>kcub1,</STRONG> <STRONG>kcuf1,</STRONG>
- <STRONG>kcuu1,</STRONG> <STRONG>kcud1,</STRONG> and <STRONG>khome</STRONG> respectively. If there are func-
- tion keys such as f0, f1, ..., f10, the codes they send
- can be given as <STRONG>kf0,</STRONG> <STRONG>kf1,</STRONG> <STRONG>...,</STRONG> <STRONG>kf10</STRONG>. If these keys have
- labels other than the default f0 through f10, the labels
- can be given as <STRONG>lf0,</STRONG> <STRONG>lf1,</STRONG> <STRONG>...,</STRONG> <STRONG>lf10</STRONG>.
-
- The codes transmitted by certain other special keys can be
- given:
+
+</PRE><H3><a name="h3-Keypad-and-Function-Keys">Keypad and Function Keys</a></H3><PRE>
+ 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 <STRONG>smkx</STRONG> and <STRONG>rmkx</STRONG>. Other-
+ wise 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 <STRONG>kcub1,</STRONG> <STRONG>kcuf1,</STRONG> <STRONG>kcuu1,</STRONG> <STRONG>kcud1,</STRONG> and <STRONG>khome</STRONG>
+ respectively. If there are function keys such as f0, f1, ..., f10, the
+ codes they send can be given as <STRONG>kf0,</STRONG> <STRONG>kf1,</STRONG> <STRONG>...,</STRONG> <STRONG>kf10</STRONG>. If these keys
+ have labels other than the default f0 through f10, the labels can be
+ given as <STRONG>lf0,</STRONG> <STRONG>lf1,</STRONG> <STRONG>...,</STRONG> <STRONG>lf10</STRONG>.
+
+ The codes transmitted by certain other special keys can be given:
<STRONG>o</STRONG> <STRONG>kll</STRONG> (home down),
@@ -1828,68 +1870,77 @@
<STRONG>o</STRONG> <STRONG>khts</STRONG> (set a tab stop in this column).
- In addition, if the keypad has a 3 by 3 array of keys
- including the four arrow keys, the other five keys can be
- given as <STRONG>ka1</STRONG>, <STRONG>ka3</STRONG>, <STRONG>kb2</STRONG>, <STRONG>kc1</STRONG>, and <STRONG>kc3</STRONG>. These keys are use-
- ful when the effects of a 3 by 3 directional pad are
- needed.
-
- Strings to program function keys can be given as <STRONG>pfkey</STRONG>,
- <STRONG>pfloc</STRONG>, and <STRONG>pfx</STRONG>. A string to program screen labels should
- be specified as <STRONG>pln</STRONG>. 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 <STRONG>pfkey</STRONG> causes pressing the given key
- to be the same as the user typing the given string; <STRONG>pfloc</STRONG>
- causes the string to be executed by the terminal in local;
- and <STRONG>pfx</STRONG> causes the string to be transmitted to the com-
- puter.
-
- The capabilities <STRONG>nlab</STRONG>, <STRONG>lw</STRONG> and <STRONG>lh</STRONG> 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 <STRONG>smln</STRONG> and <STRONG>rmln</STRONG>. <STRONG>smln</STRONG> is normally output after one
- or more pln sequences to make sure that the change becomes
- visible.
-
- <STRONG>Tabs</STRONG> <STRONG>and</STRONG> <STRONG>Initialization</STRONG>
- If the terminal has hardware tabs, the command to advance
- to the next tab stop can be given as <STRONG>ht</STRONG> (usually control
- I). A "back-tab" command which moves leftward to the pre-
- ceding tab stop can be given as <STRONG>cbt</STRONG>. 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 <STRONG>ht</STRONG> or <STRONG>cbt</STRONG> even if they are
- present, since the user may not have the tab stops prop-
- erly set. If the terminal has hardware tabs which are
- initially set every <EM>n</EM> spaces when the terminal is powered
- up, the numeric parameter <STRONG>it</STRONG> is given, showing the number
- of spaces the tabs are set to. This is normally used by
- the <EM>tset</EM> 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 <STRONG>is1</STRONG>, <STRONG>is2</STRONG>, and <STRONG>is3</STRONG>, initializa-
- tion strings for the terminal, <STRONG>iprog</STRONG>, the path name of a
- program to be run to initialize the terminal, and <STRONG>if</STRONG>, 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 <EM>init</EM> option
- of the <EM>tput</EM> program, each time the user logs in. They
- will be printed in the following order:
+ In addition, if the keypad has a 3 by 3 array of keys including the
+ four arrow keys, the other five keys can be given as <STRONG>ka1</STRONG>, <STRONG>ka3</STRONG>, <STRONG>kb2</STRONG>,
+ <STRONG>kc1</STRONG>, and <STRONG>kc3</STRONG>. 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 <STRONG>pfkey</STRONG>, <STRONG>pfloc</STRONG>, and <STRONG>pfx</STRONG>.
+ A string to program screen labels should be specified as <STRONG>pln</STRONG>. Each of
+ these strings takes two parameters: the function key number to program
+ (from 0 to 10) and the string to program it with. Function key numbers
+ out of this range may program undefined keys in a terminal dependent
+ manner. The difference between the capabilities is that <STRONG>pfkey</STRONG> causes
+ pressing the given key to be the same as the user typing the given
+ string; <STRONG>pfloc</STRONG> causes the string to be executed by the terminal in
+ local; and <STRONG>pfx</STRONG> causes the string to be transmitted to the computer.
+
+ The capabilities <STRONG>nlab</STRONG>, <STRONG>lw</STRONG> and <STRONG>lh</STRONG> define the number of programmable
+ screen labels and their width and height. If there are commands to
+ turn the labels on and off, give them in <STRONG>smln</STRONG> and <STRONG>rmln</STRONG>. <STRONG>smln</STRONG> is nor-
+ mally output after one or more pln sequences to make sure that the
+ change becomes visible.
+
+
+</PRE><H3><a name="h3-Tabs-and-Initialization">Tabs and Initialization</a></H3><PRE>
+ A few capabilities are used only for tabs:
+
+ <STRONG>o</STRONG> If the terminal has hardware tabs, the command to advance to the
+ next tab stop can be given as <STRONG>ht</STRONG> (usually control/I).
+
+ <STRONG>o</STRONG> A "back-tab" command which moves leftward to the preceding tab stop
+ can be given as <STRONG>cbt</STRONG>.
+
+ 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 <STRONG>ht</STRONG> or <STRONG>cbt</STRONG> even if they are present, since
+ the user may not have the tab stops properly set.
+
+ <STRONG>o</STRONG> If the terminal has hardware tabs which are initially set every <EM>n</EM>
+ spaces when the terminal is powered up, the numeric parameter <STRONG>it</STRONG> is
+ given, showing the number of spaces the tabs are set to.
+
+ The <STRONG>it</STRONG> capability is normally used by the <STRONG>tset</STRONG> 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
+
+ <STRONG>o</STRONG> <STRONG>is1</STRONG>, <STRONG>is2</STRONG>, and <STRONG>is3</STRONG>, initialization strings for the terminal,
+
+ <STRONG>o</STRONG> <STRONG>iprog</STRONG>, the path name of a program to be run to initialize the ter-
+ minal,
+
+ <STRONG>o</STRONG> and <STRONG>if</STRONG>, 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 <EM>init</EM> option of the <STRONG>tput</STRONG> program, each time the
+ user logs in. They will be printed in the following order:
run the program
<STRONG>iprog</STRONG>
- output <STRONG>is1</STRONG> <STRONG>is2</STRONG>
+ output
+ <STRONG>is1</STRONG> and
+ <STRONG>is2</STRONG>
set the margins using
- <STRONG>mgc</STRONG>, <STRONG>smgl</STRONG> and <STRONG>smgr</STRONG>
+ <STRONG>mgc</STRONG> or
+ <STRONG>smglp</STRONG> and <STRONG>smgrp</STRONG> or
+ <STRONG>smgl</STRONG> and <STRONG>smgr</STRONG>
set tabs using
<STRONG>tbc</STRONG> and <STRONG>hts</STRONG>
@@ -1897,594 +1948,598 @@
print the file
<STRONG>if</STRONG>
- and finally
- output <STRONG>is3</STRONG>.
-
- Most initialization is done with <STRONG>is2</STRONG>. Special terminal
- modes can be set up without duplicating strings by putting
- the common sequences in <STRONG>is2</STRONG> and special cases in <STRONG>is1</STRONG> and
- <STRONG>is3</STRONG>.
-
- A set of sequences that does a harder reset from a totally
- unknown state can be given as <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rf</STRONG> and <STRONG>rs3</STRONG>, analo-
- gous to <STRONG>is1</STRONG> <STRONG>,</STRONG> <STRONG>is2</STRONG> <STRONG>,</STRONG> <STRONG>if</STRONG> and <STRONG>is3</STRONG> respectively. These
- strings are output by the <EM>reset</EM> program, which is used
- when the terminal gets into a wedged state. Commands are
- normally placed in <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG> <STRONG>rs3</STRONG> and <STRONG>rf</STRONG> only if they pro-
- duce annoying effects on the screen and are not necessary
- when logging in. For example, the command to set the
- vt100 into 80-column mode would normally be part of <STRONG>is2</STRONG>,
- but it causes an annoying glitch of the screen and is not
- normally needed since the terminal is usually already in
- 80 column mode.
-
- The <EM>reset</EM> program writes strings including <STRONG>iprog</STRONG>, etc., in
- the same order as the <EM>init</EM> program, using <STRONG>rs1</STRONG>, etc.,
- instead of <STRONG>is1</STRONG>, etc. If any of <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>, or <STRONG>rf</STRONG> reset
- capability strings are missing, the <EM>reset</EM> program falls
- back upon the corresponding initialization capability
- string.
-
- If there are commands to set and clear tab stops, they can
- be given as <STRONG>tbc</STRONG> (clear all tab stops) and <STRONG>hts</STRONG> (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 <STRONG>is2</STRONG> or
- <STRONG>if</STRONG>.
-
- <STRONG>Delays</STRONG> <STRONG>and</STRONG> <STRONG>Padding</STRONG>
- Many older and slower terminals do not 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 <STRONG>xon</STRONG>. This capa-
- bility suppresses the emission of padding. You can also
- set it for memory-mapped console devices effectively that
- do not 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 <STRONG>pb</STRONG> (padding baud rate) is given, padding is suppressed
- at baud rates below the value of <STRONG>pb</STRONG>. If the entry has no
- padding baud rate, then whether padding is emitted or not
- is completely controlled by <STRONG>xon</STRONG>.
-
- If the terminal requires other than a null (zero) charac-
- ter as a pad, then this can be given as <STRONG>pad</STRONG>. Only the
- first character of the <STRONG>pad</STRONG> string is used.
-
- <STRONG>Status</STRONG> <STRONG>Lines</STRONG>
- Some terminals have an extra "status line" which is not
- normally used by software (and thus not counted in the
- terminal's <STRONG>lines</STRONG> 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 <STRONG>hs</STRONG> capability.
-
- Some terminals with status lines need special sequences to
- access the status line. These may be expressed as a
- string with single parameter <STRONG>tsl</STRONG> which takes the cursor to
- a given zero-origin column on the status line. The capa-
- bility <STRONG>fsl</STRONG> must return to the main-screen cursor positions
- before the last <STRONG>tsl</STRONG>. You may need to embed the string
- values of <STRONG>sc</STRONG> (save cursor) and <STRONG>rc</STRONG> (restore cursor) in <STRONG>tsl</STRONG>
- and <STRONG>fsl</STRONG> 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 <STRONG>wsl</STRONG>.
-
- A command to erase or blank the status line may be speci-
- fied as <STRONG>dsl</STRONG>.
-
- The boolean capability <STRONG>eslok</STRONG> specifies that escape
- sequences, tabs, etc., work ordinarily in the status line.
-
- The <STRONG>ncurses</STRONG> implementation does not yet use any of these
- capabilities. They are documented here in case they ever
- become important.
-
- <STRONG>Line</STRONG> <STRONG>Graphics</STRONG>
- Many terminals have alternate character sets useful for
- forms-drawing. Terminfo and <STRONG>curses</STRONG> 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 <STRONG>acsc</STRONG> capability.
-
- <STRONG>Glyph</STRONG> <STRONG>ACS</STRONG> <STRONG>Ascii</STRONG> <STRONG>VT100</STRONG>
- <STRONG>Name</STRONG> <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Name</STRONG>
- 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
- <STRONG>smacs</STRONG>/<STRONG>rmacs</STRONG> 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.
-
- <STRONG>Color</STRONG> <STRONG>Handling</STRONG>
- 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 <STRONG>colors</STRONG> and <STRONG>pairs</STRONG> specify
- the maximum numbers of colors and color-pairs that can be
- displayed simultaneously. The <STRONG>op</STRONG> (original pair) string
- resets foreground and background colors to their default
- values for the terminal. The <STRONG>oc</STRONG> 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 <STRONG>bce</STRONG>.
-
- To change the current foreground or background color on a
- Tektronix-type terminal, use <STRONG>setaf</STRONG> (set ANSI foreground)
- and <STRONG>setab</STRONG> (set ANSI background) or <STRONG>setf</STRONG> (set foreground)
- and <STRONG>setb</STRONG> (set background). These take one parameter, the
- color number. The SVr4 documentation describes only
- <STRONG>setaf</STRONG>/<STRONG>setab</STRONG>; the XPG4 draft says that "If the terminal
- supports ANSI escape sequences to set background and fore-
- ground, they should be coded as <STRONG>setaf</STRONG> and <STRONG>setab</STRONG>, respec-
- tively. If the terminal supports other escape sequences
- to set background and foreground, they should be coded as
- <STRONG>setf</STRONG> and <STRONG>setb</STRONG>, respectively. The <EM>vidputs()</EM> function and
- the refresh functions use <STRONG>setaf</STRONG> and <STRONG>setab</STRONG> if they are
- defined."
-
- The <STRONG>setaf</STRONG>/<STRONG>setab</STRONG> and <STRONG>setf</STRONG>/<STRONG>setb</STRONG> capabilities take a single
- numeric argument each. Argument values 0-7 of <STRONG>setaf</STRONG>/<STRONG>setab</STRONG>
- are portably defined as follows (the middle column is the
- symbolic #define available in the header for the <STRONG>curses</STRONG> or
- <STRONG>ncurses</STRONG> libraries). The terminal hardware is free to map
- these as it likes, but the RGB values indicate normal
- locations in color space.
-
- <STRONG>Color</STRONG> <STRONG>#define</STRONG> <STRONG>Value</STRONG> <STRONG>RGB</STRONG>
- black <STRONG>COLOR_BLACK</STRONG> 0 0, 0, 0
- red <STRONG>COLOR_RED</STRONG> 1 max,0,0
- green <STRONG>COLOR_GREEN</STRONG> 2 0,max,0
- yellow <STRONG>COLOR_YELLOW</STRONG> 3 max,max,0
- blue <STRONG>COLOR_BLUE</STRONG> 4 0,0,max
- magenta <STRONG>COLOR_MAGENTA</STRONG> 5 max,0,max
- cyan <STRONG>COLOR_CYAN</STRONG> 6 0,max,max
- white <STRONG>COLOR_WHITE</STRONG> 7 max,max,max
-
- The argument values of <STRONG>setf</STRONG>/<STRONG>setb</STRONG> historically correspond
- to a different mapping, i.e.,
-
- <STRONG>Color</STRONG> <STRONG>#define</STRONG> <STRONG>Value</STRONG> <STRONG>RGB</STRONG>
- black <STRONG>COLOR_BLACK</STRONG> 0 0, 0, 0
- blue <STRONG>COLOR_BLUE</STRONG> 1 0,0,max
- green <STRONG>COLOR_GREEN</STRONG> 2 0,max,0
- cyan <STRONG>COLOR_CYAN</STRONG> 3 0,max,max
- red <STRONG>COLOR_RED</STRONG> 4 max,0,0
- magenta <STRONG>COLOR_MAGENTA</STRONG> 5 max,0,max
- yellow <STRONG>COLOR_YELLOW</STRONG> 6 max,max,0
- white <STRONG>COLOR_WHITE</STRONG> 7 max,max,max
-
- It is important to not confuse the two sets of color capa-
- bilities; otherwise red/blue will be interchanged on the
- display.
-
- On an HP-like terminal, use <STRONG>scp</STRONG> with a color-pair number
- parameter to set which color pair is current.
-
- On a Tektronix-like terminal, the capability <STRONG>ccc</STRONG> may be
- present to indicate that colors can be modified. If so,
- the <STRONG>initc</STRONG> capability will take a color number (0 to <STRONG>colors</STRONG>
- - 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 <STRONG>hls</STRONG>
- is present, they are instead as HLS (Hue, Lightness, Satu-
- ration) indices. The ranges are terminal-dependent.
-
- On an HP-like terminal, <STRONG>initp</STRONG> may give a capability for
- changing a color-pair value. It will take seven parame-
- ters; a color-pair number (0 to <STRONG>max_pairs</STRONG> - 1), and two
- triples describing first background and then foreground
- colors. These parameters must be (Red, Green, Blue) or
- (Hue, Lightness, Saturation) depending on <STRONG>hls</STRONG>.
-
- On some color terminals, colors collide with highlights.
- You can register these collisions with the <STRONG>ncv</STRONG> capability.
- This is a bit-mask of attributes not to be used when col-
- ors are enabled. The correspondence with the attributes
- understood by <STRONG>curses</STRONG> is as follows:
-
- <STRONG>Attribute</STRONG> <STRONG>Bit</STRONG> <STRONG>Decimal</STRONG> <STRONG>Set</STRONG> <STRONG>by</STRONG>
- A_STANDOUT 0 1 sgr
- A_UNDERLINE 1 2 sgr
- A_REVERSE 2 4 sgr
- A_BLINK 3 8 sgr
- A_DIM 4 16 sgr
- A_BOLD 5 32 sgr
- A_INVIS 6 64 sgr
- A_PROTECT 7 128 sgr
- A_ALTCHARSET 8 256 sgr
- A_HORIZONTAL 9 512 sgr1
- A_LEFT 10 1024 sgr1
- A_LOW 11 2048 sgr1
- A_RIGHT 12 4096 sgr1
- A_TOP 13 8192 sgr1
- A_VERTICAL 14 16384 sgr1
- A_ITALIC 15 32768 sitm
-
- 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 <STRONG>ncv</STRONG>
- capability of 2.
-
- SVr4 curses does nothing with <STRONG>ncv</STRONG>, ncurses recognizes it
- and optimizes the output in favor of colors.
-
- <STRONG>Miscellaneous</STRONG>
- 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 <STRONG>PC</STRONG> variable;
- though the application may set this value to something
- other than a null, ncurses will test <STRONG>npc</STRONG> 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 <STRONG>hu</STRONG> (half-line up) and <STRONG>hd</STRONG> (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 <STRONG>ff</STRONG>
- (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 <STRONG>rep</STRONG>. 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 <STRONG>cmdch</STRONG>. A
- prototype command character is chosen which is used in all
- capabilities. This character is given in the <STRONG>cmdch</STRONG> capa-
- bility to identify it. The following convention is sup-
- ported on some UNIX systems: The environment is to be
- searched for a <STRONG>CC</STRONG> 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 <EM>switch</EM>, <EM>dialup</EM>, <EM>patch</EM>, and
- <EM>network</EM>, should include the <STRONG>gn</STRONG> (generic) capability so
- that programs can complain that they do not know how to
- talk to the terminal. (This capability does not apply to
- <EM>virtual</EM> 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 <STRONG>km</STRONG>. 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 finally output
+ <STRONG>is3</STRONG>.
+
+ Most initialization is done with <STRONG>is2</STRONG>. Special terminal modes can be
+ set up without duplicating strings by putting the common sequences in
+ <STRONG>is2</STRONG> and special cases in <STRONG>is1</STRONG> and <STRONG>is3</STRONG>.
+
+ A set of sequences that does a harder reset from a totally unknown
+ state can be given as <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rf</STRONG> and <STRONG>rs3</STRONG>, analogous to <STRONG>is1</STRONG> <STRONG>,</STRONG> <STRONG>is2</STRONG> <STRONG>,</STRONG> <STRONG>if</STRONG>
+ and <STRONG>is3</STRONG> respectively. These strings are output by <EM>reset</EM> option of
+ <STRONG>tput</STRONG>, or by the <STRONG>reset</STRONG> program (an alias of <STRONG>tset</STRONG>), which is used when
+ the terminal gets into a wedged state. Commands are normally placed in
+ <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG> <STRONG>rs3</STRONG> and <STRONG>rf</STRONG> only if they produce annoying effects on the screen
+ and are not necessary when logging in. For example, the command to set
+ the vt100 into 80-column mode would normally be part of <STRONG>is2</STRONG>, but it
+ causes an annoying glitch of the screen and is not normally needed
+ since the terminal is usually already in 80-column mode.
+
+ The <STRONG>reset</STRONG> program writes strings including <STRONG>iprog</STRONG>, etc., in the same
+ order as the <EM>init</EM> program, using <STRONG>rs1</STRONG>, etc., instead of <STRONG>is1</STRONG>, etc. If
+ any of <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>, or <STRONG>rf</STRONG> reset capability strings are missing, the
+ <STRONG>reset</STRONG> program falls back upon the corresponding initialization capabil-
+ ity string.
+
+ If there are commands to set and clear tab stops, they can be given as
+ <STRONG>tbc</STRONG> (clear all tab stops) and <STRONG>hts</STRONG> (set a tab stop in the current column
+ of every row). If a more complex sequence is needed to set the tabs
+ than can be described by this, the sequence can be placed in <STRONG>is2</STRONG> or <STRONG>if</STRONG>.
+
+ The <STRONG>tput</STRONG> <STRONG>reset</STRONG> command uses the same capability strings as the <STRONG>reset</STRONG>
+ command, although the two programs (<STRONG>tput</STRONG> and <STRONG>reset</STRONG>) provide different
+ command-line options.
+
+ In practice, these terminfo capabilities are not often used in initial-
+ ization of tabs (though they are required for the <STRONG>tabs</STRONG> program):
+
+ <STRONG>o</STRONG> Almost all hardware terminals (at least those which supported tabs)
+ initialized those to every <EM>eight</EM> columns:
+
+ The only exception was the AT&amp;T 2300 series, which set tabs to
+ every <EM>five</EM> columns.
+
+ <STRONG>o</STRONG> In particular, developers of the hardware terminals which are com-
+ monly used as models for modern terminal emulators provided docu-
+ mentation demonstrating that <EM>eight</EM> columns were the standard.
+
+ <STRONG>o</STRONG> Because of this, the terminal initialization programs <STRONG>tput</STRONG> and <STRONG>tset</STRONG>
+ use the <STRONG>tbc</STRONG> (<STRONG>clear_all_tabs</STRONG>) and <STRONG>hts</STRONG> (<STRONG>set_tab</STRONG>) capabilities
+ directly only when the <STRONG>it</STRONG> (<STRONG>init_tabs</STRONG>) capability is set to a value
+ other than <EM>eight</EM>.
+
+
+</PRE><H3><a name="h3-Delays-and-Padding">Delays and Padding</a></H3><PRE>
+ Many older and slower terminals do not 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 char-
+ acters after certain 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 <STRONG>xon</STRONG>. This capability suppresses the emission of
+ padding. You can also set it for memory-mapped console devices effec-
+ tively that do not have a speed limit. Padding information should
+ still be included so that routines can make better decisions about rel-
+ ative costs, but actual pad characters will not be transmitted.
+
+ If <STRONG>pb</STRONG> (padding baud rate) is given, padding is suppressed at baud rates
+ below the value of <STRONG>pb</STRONG>. If the entry has no padding baud rate, then
+ whether padding is emitted or not is completely controlled by <STRONG>xon</STRONG>.
+
+ If the terminal requires other than a null (zero) character as a pad,
+ then this can be given as <STRONG>pad</STRONG>. Only the first character of the <STRONG>pad</STRONG>
+ string is used.
+
+
+</PRE><H3><a name="h3-Status-Lines">Status Lines</a></H3><PRE>
+ Some terminals have an extra "status line" which is not normally used
+ by software (and thus not counted in the terminal's <STRONG>lines</STRONG> 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 indicated
+ by the <STRONG>hs</STRONG> capability.
+
+ Some terminals with status lines need special sequences to access the
+ status line. These may be expressed as a string with single parameter
+ <STRONG>tsl</STRONG> which takes the cursor to a given zero-origin column on the status
+ line. The capability <STRONG>fsl</STRONG> must return to the main-screen cursor posi-
+ tions before the last <STRONG>tsl</STRONG>. You may need to embed the string values of
+ <STRONG>sc</STRONG> (save cursor) and <STRONG>rc</STRONG> (restore cursor) in <STRONG>tsl</STRONG> and <STRONG>fsl</STRONG> 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 <STRONG>wsl</STRONG>.
+
+ A command to erase or blank the status line may be specified as <STRONG>dsl</STRONG>.
+
+ The boolean capability <STRONG>eslok</STRONG> specifies that escape sequences, tabs,
+ etc., work ordinarily in the status line.
+
+ The <STRONG>ncurses</STRONG> implementation does not yet use any of these capabilities.
+ They are documented here in case they ever become important.
+
+
+</PRE><H3><a name="h3-Line-Graphics">Line Graphics</a></H3><PRE>
+ Many terminals have alternate character sets useful for forms-drawing.
+ Terminfo and <STRONG>curses</STRONG> have built-in support for most of the drawing char-
+ acters supported by the VT100, with some characters from the AT&amp;T
+ 4410v1 added. This alternate character set may be specified by the
+ <STRONG>acsc</STRONG> capability.
+
+ <STRONG>Glyph</STRONG> <STRONG>ACS</STRONG> <STRONG>Ascii</STRONG> <STRONG>acsc</STRONG> <STRONG>acsc</STRONG>
+ <STRONG>Name</STRONG> <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Char</STRONG> <STRONG>Value</STRONG>
+ --------------------------------------------------------------------
+ arrow pointing right ACS_RARROW &gt; + 0x2b
+ arrow pointing left ACS_LARROW &lt; , 0x2c
+ arrow pointing up ACS_UARROW ^ - 0x2d
+ arrow pointing down ACS_DARROW v . 0x2e
+ solid square block ACS_BLOCK # 0 0x30
+ diamond ACS_DIAMOND + ` 0x60
+ checker board (stipple) ACS_CKBOARD : a 0x61
+ degree symbol ACS_DEGREE \ f 0x66
+ plus/minus ACS_PLMINUS # g 0x67
+ board of squares ACS_BOARD # h 0x68
+ lantern symbol ACS_LANTERN # i 0x69
+ lower right corner ACS_LRCORNER + j 0x6a
+ upper right corner ACS_URCORNER + k 0x6b
+ upper left corner ACS_ULCORNER + l 0x6c
+ lower left corner ACS_LLCORNER + m 0x6d
+ large plus or crossover ACS_PLUS + n 0x6e
+ scan line 1 ACS_S1 ~ o 0x6f
+ scan line 3 ACS_S3 - p 0x70
+ horizontal line ACS_HLINE - q 0x71
+ scan line 7 ACS_S7 - r 0x72
+ scan line 9 ACS_S9 _ s 0x73
+ tee pointing right ACS_LTEE + t 0x74
+ tee pointing left ACS_RTEE + u 0x75
+ tee pointing up ACS_BTEE + v 0x76
+ tee pointing down ACS_TTEE + w 0x77
+ vertical line ACS_VLINE | x 0x78
+ less-than-or-equal-to ACS_LEQUAL &lt; y 0x79
+ greater-than-or-equal-to ACS_GEQUAL &gt; z 0x7a
+ greek pi ACS_PI * { 0x7b
+ not-equal ACS_NEQUAL ! | 0x7c
+ UK pound sign ACS_STERLING f } 0x7d
+ bullet ACS_BULLET o ~ 0x7e
+
+ A few notes apply to the table itself:
+
+ <STRONG>o</STRONG> X/Open Curses incorrectly states that the mapping for <EM>lantern</EM> is
+ uppercase "I" although Unix implementations use the lowercase "i"
+ mapping.
+
+ <STRONG>o</STRONG> The DEC VT100 implemented graphics using the alternate character
+ set feature, temporarily switching <EM>modes</EM> and sending characters in
+ the range 0x60 (96) to 0x7e (126) (the <STRONG>acsc</STRONG> <STRONG>Value</STRONG> column in the ta-
+ ble).
+
+ <STRONG>o</STRONG> The AT&amp;T terminal added graphics characters outside that range.
+
+ Some of the characters within the range do not match the VT100;
+ presumably they were used in the AT&amp;T terminal: <EM>board</EM> <EM>of</EM> <EM>squares</EM>
+ replaces the VT100 <EM>newline</EM> symbol, while <EM>lantern</EM> <EM>symbol</EM> replaces
+ the VT100 <EM>vertical</EM> <EM>tab</EM> symbol. The other VT100 symbols for control
+ characters (<EM>horizontal</EM> <EM>tab</EM>, <EM>carriage</EM> <EM>return</EM> and <EM>line-feed</EM>) are not
+ (re)used in curses.
+
+ 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 <STRONG>smacs</STRONG>/<STRONG>rmacs</STRONG> switches) will be rendered as the
+ corresponding graphic. Then read off the VT100/your terminal character
+ pairs right to left in sequence; these become the ACSC string.
+
+
+</PRE><H3><a name="h3-Color-Handling">Color Handling</a></H3><PRE>
+ The curses library functions <STRONG>init_pair</STRONG> and <STRONG>init_color</STRONG> manipulate the
+ <EM>color</EM> <EM>pairs</EM> and <EM>color</EM> <EM>values</EM> discussed in this section (see
+ <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> for details on these and related functions).
+
+ Most color terminals are either "Tektronix-like" or "HP-like":
+
+ <STRONG>o</STRONG> Tektronix-like terminals have a predefined set of <EM>N</EM> colors (where <EM>N</EM>
+ is usually 8), and can set character-cell foreground and background
+ characters independently, mixing them into <EM>N</EM> * <EM>N</EM> color-pairs.
+
+ <STRONG>o</STRONG> On HP-like terminals, the user must set each color pair up sepa-
+ rately (foreground and background are not independently settable).
+ Up to <EM>M</EM> color-pairs may be set up from 2*<EM>M</EM> different colors. ANSI-
+ compatible terminals are Tektronix-like.
+
+ Some basic color capabilities are independent of the color method. The
+ numeric capabilities <STRONG>colors</STRONG> and <STRONG>pairs</STRONG> specify the maximum numbers of
+ colors and color-pairs that can be displayed simultaneously. The <STRONG>op</STRONG>
+ (original pair) string resets foreground and background colors to their
+ default values for the terminal. The <STRONG>oc</STRONG> 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 cur-
+ rent background color rather than the power-up default background;
+ these should have the boolean capability <STRONG>bce</STRONG>.
+
+ While the curses library works with <EM>color</EM> <EM>pairs</EM> (reflecting the inabil-
+ ity of some devices to set foreground and background colors indepen-
+ dently), there are separate capabilities for setting these features:
+
+ <STRONG>o</STRONG> To change the current foreground or background color on a Tek-
+ tronix-type terminal, use <STRONG>setaf</STRONG> (set ANSI foreground) and <STRONG>setab</STRONG>
+ (set ANSI background) or <STRONG>setf</STRONG> (set foreground) and <STRONG>setb</STRONG> (set back-
+ ground). These take one parameter, the color number. The SVr4
+ documentation describes only <STRONG>setaf</STRONG>/<STRONG>setab</STRONG>; the XPG4 draft says that
+ "If the terminal supports ANSI escape sequences to set background
+ and foreground, they should be coded as <STRONG>setaf</STRONG> and <STRONG>setab</STRONG>, respec-
+ tively.
+
+ <STRONG>o</STRONG> If the terminal supports other escape sequences to set background
+ and foreground, they should be coded as <STRONG>setf</STRONG> and <STRONG>setb</STRONG>, respec-
+ tively. The <STRONG>vidputs</STRONG> and the <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> functions use the <STRONG>setaf</STRONG>
+ and <STRONG>setab</STRONG> capabilities if they are defined.
+
+ The <STRONG>setaf</STRONG>/<STRONG>setab</STRONG> and <STRONG>setf</STRONG>/<STRONG>setb</STRONG> capabilities take a single numeric argu-
+ ment each. Argument values 0-7 of <STRONG>setaf</STRONG>/<STRONG>setab</STRONG> are portably defined as
+ follows (the middle column is the symbolic #define available in the
+ header for the <STRONG>curses</STRONG> or <STRONG>ncurses</STRONG> libraries). The terminal hardware is
+ free to map these as it likes, but the RGB values indicate normal loca-
+ tions in color space.
+
+ <STRONG>Color</STRONG> <STRONG>#define</STRONG> <STRONG>Value</STRONG> <STRONG>RGB</STRONG>
+ black <STRONG>COLOR_BLACK</STRONG> 0 0, 0, 0
+ red <STRONG>COLOR_RED</STRONG> 1 max,0,0
+ green <STRONG>COLOR_GREEN</STRONG> 2 0,max,0
+ yellow <STRONG>COLOR_YELLOW</STRONG> 3 max,max,0
+ blue <STRONG>COLOR_BLUE</STRONG> 4 0,0,max
+ magenta <STRONG>COLOR_MAGENTA</STRONG> 5 max,0,max
+ cyan <STRONG>COLOR_CYAN</STRONG> 6 0,max,max
+ white <STRONG>COLOR_WHITE</STRONG> 7 max,max,max
+
+ The argument values of <STRONG>setf</STRONG>/<STRONG>setb</STRONG> historically correspond to a different
+ mapping, i.e.,
+
+ <STRONG>Color</STRONG> <STRONG>#define</STRONG> <STRONG>Value</STRONG> <STRONG>RGB</STRONG>
+ black <STRONG>COLOR_BLACK</STRONG> 0 0, 0, 0
+ blue <STRONG>COLOR_BLUE</STRONG> 1 0,0,max
+ green <STRONG>COLOR_GREEN</STRONG> 2 0,max,0
+ cyan <STRONG>COLOR_CYAN</STRONG> 3 0,max,max
+ red <STRONG>COLOR_RED</STRONG> 4 max,0,0
+ magenta <STRONG>COLOR_MAGENTA</STRONG> 5 max,0,max
+ yellow <STRONG>COLOR_YELLOW</STRONG> 6 max,max,0
+ white <STRONG>COLOR_WHITE</STRONG> 7 max,max,max
+
+ It is important to not confuse the two sets of color capabilities; oth-
+ erwise red/blue will be interchanged on the display.
+
+ On an HP-like terminal, use <STRONG>scp</STRONG> with a color-pair number parameter to
+ set which color pair is current.
+
+ Some terminals allow the <EM>color</EM> <EM>values</EM> to be modified:
+
+ <STRONG>o</STRONG> On a Tektronix-like terminal, the capability <STRONG>ccc</STRONG> may be present to
+ indicate that colors can be modified. If so, the <STRONG>initc</STRONG> capability
+ will take a color number (0 to <STRONG>colors</STRONG> - 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 capa-
+ bility <STRONG>hls</STRONG> is present, they are instead as HLS (Hue, Lightness,
+ Saturation) indices. The ranges are terminal-dependent.
+
+ <STRONG>o</STRONG> On an HP-like terminal, <STRONG>initp</STRONG> may give a capability for changing a
+ color-pair value. It will take seven parameters; a color-pair num-
+ ber (0 to <STRONG>max_pairs</STRONG> - 1), and two triples describing first back-
+ ground and then foreground colors. These parameters must be (Red,
+ Green, Blue) or (Hue, Lightness, Saturation) depending on <STRONG>hls</STRONG>.
+
+ On some color terminals, colors collide with highlights. You can reg-
+ ister these collisions with the <STRONG>ncv</STRONG> capability. This is a bit-mask of
+ attributes not to be used when colors are enabled. The correspondence
+ with the attributes understood by <STRONG>curses</STRONG> is as follows:
+
+ <STRONG>Attribute</STRONG> <STRONG>Bit</STRONG> <STRONG>Decimal</STRONG> <STRONG>Set</STRONG> <STRONG>by</STRONG>
+ A_STANDOUT 0 1 sgr
+ A_UNDERLINE 1 2 sgr
+ A_REVERSE 2 4 sgr
+ A_BLINK 3 8 sgr
+ A_DIM 4 16 sgr
+ A_BOLD 5 32 sgr
+ A_INVIS 6 64 sgr
+ A_PROTECT 7 128 sgr
+
+ A_ALTCHARSET 8 256 sgr
+ A_HORIZONTAL 9 512 sgr1
+ A_LEFT 10 1024 sgr1
+ A_LOW 11 2048 sgr1
+ A_RIGHT 12 4096 sgr1
+ A_TOP 13 8192 sgr1
+ A_VERTICAL 14 16384 sgr1
+ A_ITALIC 15 32768 sitm
+
+ 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 <STRONG>ncv</STRONG> capability of 2.
+
+ SVr4 curses does nothing with <STRONG>ncv</STRONG>, ncurses recognizes it and optimizes
+ the output in favor of colors.
+
+
+</PRE><H3><a name="h3-Miscellaneous">Miscellaneous</a></H3><PRE>
+ If the terminal requires other than a null (zero) character as a pad,
+ then this can be given as pad. Only the first character of the pad
+ string is used. If the terminal does not have a pad character, specify
+ npc. Note that ncurses implements the termcap-compatible <STRONG>PC</STRONG> variable;
+ though the application may set this value to something other than a
+ null, ncurses will test <STRONG>npc</STRONG> 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 <STRONG>hu</STRONG> (half-line up) and <STRONG>hd</STRONG> (half-line down). This is primarily use-
+ ful for superscripts and subscripts on hard-copy terminals. If a hard-
+ copy terminal can eject to the next page (form feed), give this as <STRONG>ff</STRONG>
+ (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 charac-
+ ters) this can be indicated with the parameterized string <STRONG>rep</STRONG>. 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 <STRONG>cmdch</STRONG>. A prototype command character
+ is chosen which is used in all capabilities. This character is given
+ in the <STRONG>cmdch</STRONG> capability to identify it. The following convention is
+ supported on some UNIX systems: The environment is to be searched for a
+ <STRONG>CC</STRONG> 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 <EM>switch</EM>, <EM>dialup</EM>, <EM>patch</EM>, and <EM>network</EM>, should include
+ the <STRONG>gn</STRONG> (generic) capability so that programs can complain that they do
+ not know how to talk to the terminal. (This capability does not apply
+ to <EM>virtual</EM> 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
+ <STRONG>km</STRONG>. 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 <STRONG>smm</STRONG> and <STRONG>rmm</STRONG>.
- 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 <STRONG>lm</STRONG>. A value of <STRONG>lm</STRONG>#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 <STRONG>vt</STRONG>.
-
- Media copy strings which control an auxiliary printer con-
- nected to the terminal can be given as <STRONG>mc0</STRONG>: print the con-
- tents of the screen, <STRONG>mc4</STRONG>: turn off the printer, and <STRONG>mc5</STRONG>:
- 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 <STRONG>mc5p</STRONG> 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 <STRONG>mc4</STRONG>, is transparently passed to the
- printer while an <STRONG>mc5p</STRONG> is in effect.
-
- <STRONG>Glitches</STRONG> <STRONG>and</STRONG> <STRONG>Braindamage</STRONG>
- Hazeltine terminals, which do not allow "~" characters to
- be displayed should indicate <STRONG>hz</STRONG>.
-
- Terminals which ignore a line-feed immediately after an <STRONG>am</STRONG>
- wrap, such as the Concept and vt100, should indicate <STRONG>xenl</STRONG>.
-
- If <STRONG>el</STRONG> is required to get rid of standout (instead of
- merely writing normal text on top of it), <STRONG>xhp</STRONG> should be
- given.
-
- Teleray terminals, where tabs turn all characters moved
- over to blanks, should indicate <STRONG>xt</STRONG> (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 <STRONG>xsb</STRONG>, 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 <STRONG>x</STRONG><EM>x</EM>.
-
- <STRONG>Similar</STRONG> <STRONG>Terminals</STRONG>
- 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 <STRONG>use</STRONG> can be given with the name
- of the base terminal. The capabilities given before <STRONG>use</STRONG>
- override those in the base type named by <STRONG>use</STRONG>. If there
- are multiple <STRONG>use</STRONG> capabilities, they are merged in reverse
- order. That is, the rightmost <STRONG>use</STRONG> 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 <STRONG>use</STRONG> references.
-
- A capability can be canceled by placing <STRONG>xx@</STRONG> to the left of
- the use reference that imports it, where <EM>xx</EM> is the capa-
- bility. For example, the entry
+ 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 <STRONG>lm</STRONG>. A value
+ of <STRONG>lm</STRONG>#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 virtual terminal
+ protocol, the terminal number can be given as <STRONG>vt</STRONG>.
+
+ Media copy strings which control an auxiliary printer connected to the
+ terminal can be given as <STRONG>mc0</STRONG>: print the contents of the screen, <STRONG>mc4</STRONG>:
+ turn off the printer, and <STRONG>mc5</STRONG>: 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 terminal screen
+ when the printer is on. A variation <STRONG>mc5p</STRONG> takes one parameter, and
+ leaves the printer on for as many characters as the value of the param-
+ eter, then turns the printer off. The parameter should not exceed 255.
+ All text, including <STRONG>mc4</STRONG>, is transparently passed to the printer while
+ an <STRONG>mc5p</STRONG> is in effect.
+
+
+</PRE><H3><a name="h3-Glitches-and-Braindamage">Glitches and Braindamage</a></H3><PRE>
+ Hazeltine terminals, which do not allow "~" characters to be displayed
+ should indicate <STRONG>hz</STRONG>.
+
+ Terminals which ignore a line-feed immediately after an <STRONG>am</STRONG> wrap, such
+ as the Concept and vt100, should indicate <STRONG>xenl</STRONG>.
+
+ If <STRONG>el</STRONG> is required to get rid of standout (instead of merely writing
+ normal text on top of it), <STRONG>xhp</STRONG> should be given.
+
+ Teleray terminals, where tabs turn all characters moved over to blanks,
+ should indicate <STRONG>xt</STRONG> (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 stand-
+ out mode it is instead necessary to use delete and insert line. The
+ ncurses implementation ignores this glitch.
+
+ The Beehive Superbee, which is unable to correctly transmit the escape
+ or control/C characters, has <STRONG>xsb</STRONG>, indicating 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 capa-
+ bilities of the form <STRONG>x</STRONG><EM>x</EM>.
+
+
+</PRE><H3><a name="h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></H3><PRE>
+ Long terminfo entries are unlikely to be a problem; to date, no entry
+ has even approached terminfo's 4096-byte string-table maximum. Unfor-
+ tunately, the termcap translations are much more strictly limited (to
+ 1023 bytes), thus termcap translations of long terminfo entries can
+ cause problems.
+
+ The man pages for 4.3BSD and older versions of <STRONG>tgetent</STRONG> instruct the
+ user to allocate a 1024-byte buffer for the termcap entry. The entry
+ gets null-terminated by the termcap library, so that makes the maximum
+ safe length for a termcap entry 1k-1 (1023) bytes. Depending on what
+ the application and the termcap library being used does, and where in
+ the termcap file the terminal type that <STRONG>tgetent</STRONG> 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 do not; others truncate the
+ entries to 1023 bytes. Some application programs allocate more than
+ the recommended 1K for the termcap entry; others do not.
+
+ 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 does not 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 particular terminal. This is the
+ length of the entry as it exists in /etc/termcap, minus the backslash-
+ newline pairs, which <STRONG>tgetent</STRONG> strips out while reading it. Some termcap
+ libraries strip off the final newline, too (GNU termcap does not). Now
+ suppose:
+
+ <STRONG>o</STRONG> a termcap entry before expansion is more than 1023 bytes long,
- 2621-nl, smkx@, rmkx@, use=2621,
+ <STRONG>o</STRONG> and the application has only allocated a 1k buffer,
- defines a 2621-nl that does not have the <STRONG>smkx</STRONG> or <STRONG>rmkx</STRONG>
- 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.
-
- <STRONG>Pitfalls</STRONG> <STRONG>of</STRONG> <STRONG>Long</STRONG> <STRONG>Entries</STRONG>
- Long terminfo entries are unlikely to be a problem; to
- date, no entry has even approached terminfo's 4096-byte
- string-table maximum. Unfortunately, the termcap transla-
- tions are much more strictly limited (to 1023 bytes), thus
- termcap translations of long terminfo entries can cause
- problems.
-
- The man pages for 4.3BSD and older versions of <STRONG>tgetent()</STRONG>
- instruct the user to allocate a 1024-byte buffer for the
- termcap entry. The entry gets null-terminated by the
- termcap library, so that makes the maximum safe length for
- a termcap entry 1k-1 (1023) bytes. Depending on what the
- application and the termcap library being used does, and
- where in the termcap file the terminal type that <STRONG>tgetent()</STRONG>
- 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
- do not; others truncate the entries to 1023 bytes. Some
- application programs allocate more than the recommended 1K
- for the termcap entry; others do not.
-
- 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 does not 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 <STRONG>tgetent()</STRONG> strips out while reading it. Some termcap
- libraries strip off the final newline, too (GNU termcap
- does not). Now suppose:
-
- <STRONG>o</STRONG> a termcap entry before expansion is more than 1023
- bytes long,
+ <STRONG>o</STRONG> 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 is the entry it wants,
+
+ <STRONG>o</STRONG> and <STRONG>tgetent</STRONG> is searching for a terminal type that either is the
+ long entry, appears in the termcap file after the long entry, or
+ does not appear in the file at all (so that <STRONG>tgetent</STRONG> has to search
+ the whole termcap file).
- <STRONG>o</STRONG> and the application has only allocated a 1k buffer,
+ Then <STRONG>tgetent</STRONG> will overwrite memory, perhaps its stack, and probably
+ core dump the program. Programs like telnet are particularly vulnera-
+ ble; modern telnets pass along values like the terminal type automati-
+ cally. 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.
- <STRONG>o</STRONG> 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 is the entry it
- wants,
-
- <STRONG>o</STRONG> and <STRONG>tgetent()</STRONG> is searching for a terminal type that
- either is the long entry, appears in the termcap file
- after the long entry, or does not appear in the file
- at all (so that <STRONG>tgetent()</STRONG> has to search the whole
- termcap file).
-
- Then <STRONG>tgetent()</STRONG> 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 <STRONG>tgetent()</STRONG> only does "tc" expan-
- sion once it is 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 is 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 <STRONG>ncurses</STRONG> imple-
- mentation of <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> 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.
-
- <STRONG>Binary</STRONG> <STRONG>Compatibility</STRONG>
- 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.
+ 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 <STRONG>tgetent</STRONG> only does "tc" expansion once it is 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 is too long even before
+ "tc" expansion, it will have this effect even for users of some other
+ terminal types and users whose TERM variable does not have a termcap
+ entry.
-</PRE>
-<H2>EXTENSIONS</H2><PRE>
- Searching for terminal descriptions in <STRONG>$HOME/.terminfo</STRONG> and
- TERMINFO_DIRS is not supported by older implementations.
-
- Some SVr4 <STRONG>curses</STRONG> implementations, and all previous to
- SVr4, do not interpret the %A and %O operators in parame-
- ter strings.
-
- SVr4/XPG4 do not specify whether <STRONG>msgr</STRONG> licenses movement
- while in an alternate-character-set mode (such modes may,
- among other things, map CR and NL to characters that do
- not trigger local motions). The <STRONG>ncurses</STRONG> implementation
- ignores <STRONG>msgr</STRONG> in <STRONG>ALTCHARSET</STRONG> mode. This raises the possi-
- bility that an XPG4 implementation making the opposite
- interpretation may need terminfo entries made for <STRONG>ncurses</STRONG>
- to have <STRONG>msgr</STRONG> turned off.
-
- The <STRONG>ncurses</STRONG> library handles insert-character and insert-
- character modes in a slightly non-standard way to get bet-
- ter update efficiency. See the <STRONG>Insert/Delete</STRONG> <STRONG>Character</STRONG>
- subsection above.
-
- The parameter substitutions for <STRONG>set_clock</STRONG> and <STRONG>dis-</STRONG>
- <STRONG>play_clock</STRONG> 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 <STRONG>kmous</STRONG> capability. The <STRONG>ncurses</STRONG>
- wants to interpret it as <STRONG>KEY_MOUSE</STRONG>, for use by terminals
- and emulators like xterm that can return mouse-tracking
- information in the keyboard-input stream.
-
- X/Open Curses does not mention italics. Portable applica-
- tions must assume that numeric capabilities are signed
- 16-bit values. This includes the <EM>no</EM><STRONG>_</STRONG><EM>color</EM><STRONG>_</STRONG><EM>video</EM> (ncv)
- capability. The 32768 mask value used for italics with
- ncv can be confused with an absent or cancelled ncv. If
- italics should work with colors, then the ncv value must
- be specified, even if it is zero.
-
- 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:
-
- <STRONG>SVR4,</STRONG> <STRONG>Solaris,</STRONG> <STRONG>ncurses</STRONG> -- These support all SVr4 capabili-
- ties.
-
- <STRONG>SGI</STRONG> -- Supports the SVr4 set, adds one undocumented
- extended string capability (<STRONG>set_pglen</STRONG>).
-
- <STRONG>SVr1,</STRONG> <STRONG>Ultrix</STRONG> -- These support a restricted subset of ter-
- minfo capabilities. The booleans end with <STRONG>xon_xoff</STRONG>; the
- numerics with <STRONG>width_status_line</STRONG>; and the strings with
- <STRONG>prtr_non</STRONG>.
-
- <STRONG>HP/UX</STRONG> -- Supports the SVr1 subset, plus the SVr[234]
- numerics <STRONG>num_labels</STRONG>, <STRONG>label_height</STRONG>, <STRONG>label_width</STRONG>, plus func-
- tion keys 11 through 63, plus <STRONG>plab_norm</STRONG>, <STRONG>label_on</STRONG>, and
- <STRONG>label_off</STRONG>, plus some incompatible extensions in the string
- table.
-
- <STRONG>AIX</STRONG> -- Supports the SVr1 subset, plus function keys 11
- through 63, plus a number of incompatible string table
- extensions.
-
- <STRONG>OSF</STRONG> -- Supports both the SVr4 set and the AIX extensions.
+ When in -C (translate to termcap) mode, the <STRONG>ncurses</STRONG> implementation of
+ <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> 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.
-</PRE>
-<H2>FILES</H2><PRE>
- /usr/share/terminfo/?/* files containing terminal
- descriptions
+</PRE><H3><a name="h3-Binary-Compatibility">Binary Compatibility</a></H3><PRE>
+ 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 capabili-
+ ties to the string table that (in the binary format) collide with Sys-
+ tem V and XSI Curses extensions.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG>printf(3)</STRONG>, <STRONG><A HREF="term.5.html">term(5)</A></STRONG>.
- <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>.
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+ Searching for terminal descriptions in <STRONG>$HOME/.terminfo</STRONG> and TER-
+ MINFO_DIRS is not supported by older implementations.
+ Some SVr4 <STRONG>curses</STRONG> implementations, and all previous to SVr4, do not
+ interpret the %A and %O operators in parameter strings.
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
- Based on pcurses by Pavel Curtis.
+ SVr4/XPG4 do not specify whether <STRONG>msgr</STRONG> licenses movement while in an
+ alternate-character-set mode (such modes may, among other things, map
+ CR and NL to characters that do not trigger local motions). The
+ <STRONG>ncurses</STRONG> implementation ignores <STRONG>msgr</STRONG> in <STRONG>ALTCHARSET</STRONG> mode. This raises
+ the possibility that an XPG4 implementation making the opposite inter-
+ pretation may need terminfo entries made for <STRONG>ncurses</STRONG> to have <STRONG>msgr</STRONG>
+ turned off.
+
+ The <STRONG>ncurses</STRONG> library handles insert-character and insert-character modes
+ in a slightly non-standard way to get better update efficiency. See
+ the <STRONG>Insert/Delete</STRONG> <STRONG>Character</STRONG> subsection above.
+
+ The parameter substitutions for <STRONG>set_clock</STRONG> and <STRONG>display_clock</STRONG> 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 <STRONG>kmous</STRONG> capability. The <STRONG>ncurses</STRONG> library wants
+ to interpret it as <STRONG>KEY_MOUSE</STRONG>, for use by terminals and emulators like
+ xterm that can return mouse-tracking information in the keyboard-input
+ stream.
+
+ X/Open Curses does not mention italics. Portable applications must
+ assume that numeric capabilities are signed 16-bit values. This
+ includes the <EM>no</EM><STRONG>_</STRONG><EM>color</EM><STRONG>_</STRONG><EM>video</EM> (ncv) capability. The 32768 mask value
+ used for italics with ncv can be confused with an absent or cancelled
+ ncv. If italics should work with colors, then the ncv value must be
+ specified, even if it is zero.
+
+ Different commercial ports of terminfo and curses support different
+ subsets of the XSI Curses standard and (in some cases) different exten-
+ sion sets. Here is a summary, accurate as of October 1995:
+
+ <STRONG>o</STRONG> <STRONG>SVR4,</STRONG> <STRONG>Solaris,</STRONG> <STRONG>ncurses</STRONG> -- These support all SVr4 capabilities.
+
+ <STRONG>o</STRONG> <STRONG>SGI</STRONG> -- Supports the SVr4 set, adds one undocumented extended string
+ capability (<STRONG>set_pglen</STRONG>).
+
+ <STRONG>o</STRONG> <STRONG>SVr1,</STRONG> <STRONG>Ultrix</STRONG> -- These support a restricted subset of terminfo capa-
+ bilities. The booleans end with <STRONG>xon_xoff</STRONG>; the numerics with
+ <STRONG>width_status_line</STRONG>; and the strings with <STRONG>prtr_non</STRONG>.
+
+ <STRONG>o</STRONG> <STRONG>HP/UX</STRONG> -- Supports the SVr1 subset, plus the SVr[234] numerics
+ <STRONG>num_labels</STRONG>, <STRONG>label_height</STRONG>, <STRONG>label_width</STRONG>, plus function keys 11
+ through 63, plus <STRONG>plab_norm</STRONG>, <STRONG>label_on</STRONG>, and <STRONG>label_off</STRONG>, plus some
+ incompatible extensions in the string table.
+
+ <STRONG>o</STRONG> <STRONG>AIX</STRONG> -- Supports the SVr1 subset, plus function keys 11 through 63,
+ plus a number of incompatible string table extensions.
+
+ <STRONG>o</STRONG> <STRONG>OSF</STRONG> -- Supports both the SVr4 set and the AIX extensions.
+
+
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+ /usr/share/terminfo/?/* files containing terminal descriptions
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>, <STRONG>curs_vari-</STRONG>
+ <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>, <STRONG>printf(3)</STRONG>, <STRONG><A HREF="term.5.html">term(5)</A></STRONG>. <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>. <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>.
+
+
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. Based on pcurses
+ by Pavel Curtis.
- <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
+ <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></li>
+<li><a href="#h3-Terminfo-Capabilities-Syntax">Terminfo Capabilities Syntax</a></li>
+<li><a href="#h3-Similar-Terminals">Similar Terminals</a></li>
+<li><a href="#h3-Predefined-Capabilities">Predefined Capabilities</a></li>
+<li><a href="#h3-User-Defined-Capabilities">User-Defined Capabilities</a></li>
+<li><a href="#h3-A-Sample-Entry">A Sample Entry</a></li>
+<li><a href="#h3-Types-of-Capabilities">Types of Capabilities</a></li>
+<li><a href="#h3-Fetching-Compiled-Descriptions">Fetching Compiled Descriptions</a></li>
+<li><a href="#h3-Preparing-Descriptions">Preparing Descriptions</a></li>
+<li><a href="#h3-Basic-Capabilities">Basic Capabilities</a></li>
+<li><a href="#h3-Parameterized-Strings">Parameterized Strings</a></li>
+<li><a href="#h3-Cursor-Motions">Cursor Motions</a></li>
+<li><a href="#h3-Area-Clears">Area Clears</a></li>
+<li><a href="#h3-Insert_delete-line-and-vertical-motions">Insert/delete line and vertical motions</a></li>
+<li><a href="#h3-Insert_Delete-Character">Insert/Delete Character</a></li>
+<li><a href="#h3-Highlighting_-Underlining_-and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></li>
+<li><a href="#h3-Keypad-and-Function-Keys">Keypad and Function Keys</a></li>
+<li><a href="#h3-Tabs-and-Initialization">Tabs and Initialization</a></li>
+<li><a href="#h3-Delays-and-Padding">Delays and Padding</a></li>
+<li><a href="#h3-Status-Lines">Status Lines</a></li>
+<li><a href="#h3-Line-Graphics">Line Graphics</a></li>
+<li><a href="#h3-Color-Handling">Color Handling</a></li>
+<li><a href="#h3-Miscellaneous">Miscellaneous</a></li>
+<li><a href="#h3-Glitches-and-Braindamage">Glitches and Braindamage</a></li>
+<li><a href="#h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></li>
+<li><a href="#h3-Binary-Compatibility">Binary Compatibility</a></li>
+</ul>
+</li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/tic.1m.html b/doc/html/man/tic.1m.html
index 1d2085fba86d..e4a646e2c356 100644
--- a/doc/html/man/tic.1m.html
+++ b/doc/html/man/tic.1m.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,230 +26,245 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: tic.1m,v 1.58 2013/07/20 19:31:25 tom Exp @
+ * @Id: tic.1m,v 1.76 2019/11/30 20:51:55 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>tic 1m</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>tic 1m</H1>
-<HR>
+<H1 class="no-header">tic 1m</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>
+<STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>tic</STRONG> - the <EM>terminfo</EM> entry-description compiler
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>tic</STRONG> [<STRONG>-01CDGIKLNTUVacfgrstx</STRONG>] [<STRONG>-e</STRONG> <EM>names</EM>] [<STRONG>-o</STRONG> <EM>dir</EM>] [<STRONG>-R</STRONG> <EM>sub-</EM>
- <EM>set</EM>] [<STRONG>-v</STRONG>[<EM>n</EM>]] [<STRONG>-w</STRONG>[<EM>n</EM>]] <EM>file</EM>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <STRONG>tic</STRONG> [<STRONG>-01CDGIKLNTUVWacfgqrstx</STRONG>] [<STRONG>-e</STRONG> <EM>names</EM>] [<STRONG>-o</STRONG> <EM>dir</EM>] [<STRONG>-Q</STRONG>[<EM>n</EM>]] [<STRONG>-R</STRONG> <EM>subset</EM>]
+ [<STRONG>-v</STRONG>[<EM>n</EM>]] [<STRONG>-w</STRONG>[<EM>n</EM>]] <EM>file</EM>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>tic</STRONG> command translates a <STRONG>terminfo</STRONG> file from source
- format into compiled format. The compiled format is nec-
- essary for use with the library routines in <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.
-
- As described in <STRONG><A HREF="term.5.html">term(5)</A></STRONG>, the database may be either a
- directory tree (one file per terminal entry) or a hashed
- database (one record per entry). The <STRONG>tic</STRONG> command writes
- only one type of entry, depending on how it was built:
-
- <STRONG>o</STRONG> For directory trees, the top-level directory, e.g.,
- /usr/share/terminfo, specifies the location of the
- database.
-
- <STRONG>o</STRONG> For hashed databases, a filename is needed. If the
- given file is not found by that name, but can be found
- by adding the suffix ".db", then that is used.
-
- The default name for the hashed database is the same
- as the default directory name (only adding a ".db"
- suffix).
-
- In either case (directory or hashed database), <STRONG>tic</STRONG> will
- create the container if it does not exist. For a direc-
- tory, this would be the "terminfo" leaf, versus a "ter-
- minfo.db" file.
-
- The results are normally placed in the system terminfo
- database <STRONG>/usr/share/terminfo</STRONG>. The compiled terminal
- description can be placed in a different terminfo data-
- base. There are two ways to achieve this:
-
- <STRONG>o</STRONG> First, you may override the system default either by
- using the <STRONG>-o</STRONG> option, or by setting the variable <STRONG>TER-</STRONG>
- <STRONG>MINFO</STRONG> in your shell environment to a valid database
- location.
-
- <STRONG>o</STRONG> Secondly, if <STRONG>tic</STRONG> cannot write in <EM>/usr/share/terminfo</EM>
- or the location specified using your TERMINFO vari-
- able, it looks for the directory <EM>$HOME/.terminfo</EM> (or
- hashed database <EM>$HOME/.terminfo.db)</EM>; if that location
- exists, the entry is placed there.
-
- Libraries that read terminfo entries are expected to check
- in succession
-
- <STRONG>o</STRONG> a location specified with the TERMINFO environment
- variable,
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <STRONG>tic</STRONG> command translates a <STRONG>terminfo</STRONG> file from source format into com-
+ piled format. The compiled format is necessary for use with the
+ library routines in <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.
+
+ As described in <STRONG><A HREF="term.5.html">term(5)</A></STRONG>, the database may be either a directory tree
+ (one file per terminal entry) or a hashed database (one record per
+ entry). The <STRONG>tic</STRONG> command writes only one type of entry, depending on
+ how it was built:
+
+ <STRONG>o</STRONG> For directory trees, the top-level directory, e.g., /usr/share/ter-
+ minfo, specifies the location of the database.
+
+ <STRONG>o</STRONG> For hashed databases, a filename is needed. If the given file is
+ not found by that name, but can be found by adding the suffix
+ ".db", then that is used.
+
+ The default name for the hashed database is the same as the default
+ directory name (only adding a ".db" suffix).
+
+ In either case (directory or hashed database), <STRONG>tic</STRONG> will create the con-
+ tainer if it does not exist. For a directory, this would be the "ter-
+ minfo" leaf, versus a "terminfo.db" file.
+
+ The results are normally placed in the system terminfo database
+ <STRONG>/usr/share/terminfo</STRONG>. The compiled terminal description can be placed
+ in a different terminfo database. There are two ways to achieve this:
+
+ <STRONG>o</STRONG> First, you may override the system default either by using the <STRONG>-o</STRONG>
+ option, or by setting the variable <STRONG>TERMINFO</STRONG> in your shell environ-
+ ment to a valid database location.
+
+ <STRONG>o</STRONG> Secondly, if <STRONG>tic</STRONG> cannot write in <EM>/usr/share/terminfo</EM> or the loca-
+ tion specified using your TERMINFO variable, it looks for the
+ directory <EM>$HOME/.terminfo</EM> (or hashed database <EM>$HOME/.terminfo.db)</EM>;
+ if that location exists, the entry is placed there.
+
+ Libraries that read terminfo entries are expected to check in succes-
+ sion
+
+ <STRONG>o</STRONG> a location specified with the TERMINFO environment variable,
<STRONG>o</STRONG> <EM>$HOME/.terminfo</EM>,
- <STRONG>o</STRONG> directories listed in the TERMINFO_DIRS environment
- variable,
+ <STRONG>o</STRONG> directories listed in the TERMINFO_DIRS environment variable,
- <STRONG>o</STRONG> a compiled-in list of directories
- (/usr/local/ncurses/share/terminfo:/usr/share/ter-
- minfo), and
+ <STRONG>o</STRONG> a compiled-in list of directories (/usr/local/ncurses/share/ter-
+ minfo:/usr/share/terminfo), and
<STRONG>o</STRONG> the system terminfo database (<EM>/usr/share/terminfo</EM>).
- <STRONG>OPTIONS</STRONG>
+
+</PRE><H3><a name="h3-ALIASES">ALIASES</a></H3><PRE>
+ This is the same program as infotocap and captoinfo; usually those are
+ linked to, or copied from this program:
+
+ <STRONG>o</STRONG> When invoked as infotocap, tic sets the <STRONG>-I</STRONG> option.
+
+ <STRONG>o</STRONG> When invoked as captoinfo, tic sets the <STRONG>-C</STRONG> option.
+
+
+</PRE><H3><a name="h3-OPTIONS">OPTIONS</a></H3><PRE>
<STRONG>-0</STRONG> restricts the output to a single line
<STRONG>-1</STRONG> restricts the output to a single column
- <STRONG>-a</STRONG> tells <STRONG>tic</STRONG> to retain commented-out capabilities
- rather than discarding them. Capabilities are com-
- mented by prefixing them with a period. This sets
- the <STRONG>-x</STRONG> option, because it treats the commented-out
- entries as user-defined names. If the source is
- termcap, accept the 2-character names required by
- version 6. Otherwise these are ignored.
-
- <STRONG>-C</STRONG> Force source translation to termcap format. Note:
- this differs from the <STRONG>-C</STRONG> option of <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> 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. The actual
- format used incorporates some improvements for
- escaped characters from terminfo format. For a
- stricter BSD-compatible translation, add the <STRONG>-K</STRONG>
- option.
-
- <STRONG>-c</STRONG> tells <STRONG>tic</STRONG> to only check <EM>file</EM> for errors, including
- syntax problems and bad use links. If you specify
- <STRONG>-C</STRONG> (<STRONG>-I</STRONG>) 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, as well
- as buggy checking for the buffer length (and a doc-
- umented limit in terminfo), these entries may cause
- core dumps with other implementations.
-
- <STRONG>-D</STRONG> tells <STRONG>tic</STRONG> to print the database locations that it
- knows about, and exit. The first location shown is
- the one to which it would write compiled terminal
- descriptions. If <STRONG>tic</STRONG> is not able to find a
- writable database location according to the rules
- summarized above, it will print a diagnostic and
- exit with an error rather than printing a list of
- database locations.
+ <STRONG>-a</STRONG> tells <STRONG>tic</STRONG> to retain commented-out capabilities rather than dis-
+ carding them. Capabilities are commented by prefixing them with
+ a period. This sets the <STRONG>-x</STRONG> option, because it treats the com-
+ mented-out entries as user-defined names. If the source is
+ termcap, accept the 2-character names required by version 6.
+ Otherwise these are ignored.
+
+ <STRONG>-C</STRONG> Force source translation to termcap format. Note: this differs
+ from the <STRONG>-C</STRONG> option of <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> 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. The actual format used incorporates
+ some improvements for escaped characters from terminfo format.
+ For a stricter BSD-compatible translation, add the <STRONG>-K</STRONG> option.
+
+ If this is combined with <STRONG>-c</STRONG>, <STRONG>tic</STRONG> makes additional checks to
+ report cases where the terminfo values do not have an exact
+ equivalent in termcap form. For example:
+
+ <STRONG>o</STRONG> <STRONG>sgr</STRONG> usually will not convert, because termcap lacks the
+ ability to work with more than two parameters, and because
+ termcap lacks many of the arithmetic/logical operators used
+ in terminfo.
+
+ <STRONG>o</STRONG> capabilities with more than one delay or with delays before
+ the end of the string will not convert completely.
+
+ <STRONG>-c</STRONG> tells <STRONG>tic</STRONG> to only check <EM>file</EM> for errors, including syntax prob-
+ lems and bad use-links. If you specify <STRONG>-C</STRONG> (<STRONG>-I</STRONG>) 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 libraries, as well as buggy
+ checking for the buffer length (and a documented limit in ter-
+ minfo), these entries may cause core dumps with other implemen-
+ tations.
+
+ <STRONG>tic</STRONG> checks string capabilities to ensure that those with parame-
+ ters will be valid expressions. It does this check only for the
+ predefined string capabilities; those which are defined with the
+ <STRONG>-x</STRONG> option are ignored.
+
+ <STRONG>-D</STRONG> tells <STRONG>tic</STRONG> to print the database locations that it knows about,
+ and exit. The first location shown is the one to which it would
+ write compiled terminal descriptions. If <STRONG>tic</STRONG> is not able to
+ find a writable database location according to the rules summa-
+ rized above, it will print a diagnostic and exit with an error
+ rather than printing a list of database locations.
<STRONG>-e</STRONG> <EM>names</EM>
- 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 <STRONG>-I</STRONG> or <STRONG>-C</STRONG>.)
-
- <STRONG>-f</STRONG> Display complex terminfo strings which contain
- if/then/else/endif expressions indented for read-
- ability.
-
- <STRONG>-G</STRONG> Display constant literals in decimal form rather
- than their character equivalents.
-
- <STRONG>-g</STRONG> Display constant character literals in quoted form
- rather than their decimal equivalents.
+ 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 containing the
+ list if it contains a '/'. (Note: depending on how tic was com-
+ piled, this option may require <STRONG>-I</STRONG> or <STRONG>-C</STRONG>.)
+
+ <STRONG>-f</STRONG> Display complex terminfo strings which contain
+ if/then/else/endif expressions indented for readability.
+
+ <STRONG>-G</STRONG> Display constant literals in decimal form rather than their
+ character equivalents.
+
+ <STRONG>-g</STRONG> Display constant character literals in quoted form rather than
+ their decimal equivalents.
<STRONG>-I</STRONG> Force source translation to terminfo format.
- <STRONG>-K</STRONG> Suppress some longstanding ncurses extensions to
- termcap format, e.g., "\s" for space.
-
- <STRONG>-L</STRONG> Force source translation to terminfo format using
- the long C variable names listed in &lt;<STRONG>term.h</STRONG>&gt;
-
- <STRONG>-N</STRONG> Disable smart defaults. Normally, when translating
- from termcap to terminfo, the compiler makes a num-
- ber of assumptions about the defaults of string
- capabilities <STRONG>reset1_string</STRONG>, <STRONG>carriage_return</STRONG>, <STRONG>cur-</STRONG>
- <STRONG>sor_left</STRONG>, <STRONG>cursor_down</STRONG>, <STRONG>scroll_forward</STRONG>, <STRONG>tab</STRONG>, <STRONG>new-</STRONG>
- <STRONG>line</STRONG>, <STRONG>key_backspace</STRONG>, <STRONG>key_left</STRONG>, and <STRONG>key_down</STRONG>, then
- attempts to use obsolete termcap capabilities to
- deduce correct values. It also normally suppresses
- output of obsolete termcap capabilities such as <STRONG>bs</STRONG>.
- This option forces a more literal translation that
+ <STRONG>-K</STRONG> Suppress some longstanding ncurses extensions to termcap format,
+ e.g., "\s" for space.
+
+ <STRONG>-L</STRONG> Force source translation to terminfo format using the long C
+ variable names listed in &lt;<STRONG>term.h</STRONG>&gt;
+
+ <STRONG>-N</STRONG> Disable smart defaults. Normally, when translating from termcap
+ to terminfo, the compiler makes a number of assumptions about
+ the defaults of string capabilities <STRONG>reset1_string</STRONG>, <STRONG>car-</STRONG>
+ <STRONG>riage_return</STRONG>, <STRONG>cursor_left</STRONG>, <STRONG>cursor_down</STRONG>, <STRONG>scroll_forward</STRONG>, <STRONG>tab</STRONG>,
+ <STRONG>newline</STRONG>, <STRONG>key_backspace</STRONG>, <STRONG>key_left</STRONG>, and <STRONG>key_down</STRONG>, then attempts to
+ use obsolete termcap capabilities to deduce correct values. It
+ also normally suppresses output of obsolete termcap capabilities
+ such as <STRONG>bs</STRONG>. This option forces a more literal translation that
also preserves the obsolete capabilities.
- <STRONG>-o</STRONG><EM>dir</EM> Write compiled entries to given database location.
- Overrides the TERMINFO environment variable.
+ <STRONG>-o</STRONG><EM>dir</EM> Write compiled entries to given database location. Overrides
+ the TERMINFO environment variable.
+
+ <STRONG>-Q</STRONG><EM>n</EM> Rather than show source in terminfo (text) format, print the
+ compiled (binary) format in hexadecimal or base64 form, depend-
+ ing on the option's value:
+
+ 1 hexadecimal
+
+ 2 base64
+
+ 3 hexadecimal and base64
+
+ <STRONG>-q</STRONG> Suppress comments and blank lines when showing translated
+ source.
<STRONG>-R</STRONG><EM>subset</EM>
- 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 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 <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for details.
-
- <STRONG>-r</STRONG> Force entry resolution (so there are no remaining
- tc capabilities) even when doing translation to
- termcap format. This may be needed if you are pre-
- paring a termcap file for a termcap library (such
- as GNU termcap through version 1.3 or BSD termcap
- through 4.3BSD) that does not handle multiple tc
- capabilities per entry.
-
- <STRONG>-s</STRONG> Summarize the compile by showing the database loca-
- tion into which entries are written, and the number
- of entries which are compiled.
-
- <STRONG>-T</STRONG> 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).
-
- <STRONG>-t</STRONG> tells <STRONG>tic</STRONG> to discard commented-out capabilities.
- Normally when translating from terminfo to termcap,
- untranslatable capabilities are commented-out.
-
- <STRONG>-U</STRONG> tells <STRONG>tic</STRONG> to not post-process the data after parsing
- the source file. Normally, it infers data which is
- commonly missing in older terminfo data, or in term-
- caps.
-
- <STRONG>-V</STRONG> reports the version of ncurses which was used in this
- program, and exits.
-
- <STRONG>-v</STRONG><EM>n</EM> specifies that (verbose) output be written to stan-
- dard error trace information showing <STRONG>tic</STRONG>'s progress.
- The optional parameter <EM>n</EM> is a number from 1 to 10,
- inclusive, indicating the desired level of detail of
- information. If <EM>n</EM> is omitted, the default level is
- 1. If <EM>n</EM> is specified and greater than 1, the level
- of detail is increased.
+ 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 ter-
+ minfo; and outright broken ports like AIX 3.x that have their
+ own extensions incompatible with SVr4/XSI. Available subsets
+ are "SVr1", "Ultrix", "HP", "BSD" and "AIX"; see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for
+ details.
+
+ <STRONG>-r</STRONG> Force entry resolution (so there are no remaining tc capabili-
+ ties) 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 through version 1.3 or BSD termcap
+ through 4.3BSD) that does not handle multiple tc capabilities
+ per entry.
+
+ <STRONG>-s</STRONG> Summarize the compile by showing the database location into
+ which entries are written, and the number of entries which are
+ compiled.
+
+ <STRONG>-T</STRONG> 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 ter-
+ minfo).
+
+ <STRONG>-t</STRONG> tells <STRONG>tic</STRONG> to discard commented-out capabilities. Normally when
+ translating from terminfo to termcap, untranslatable capabili-
+ ties are commented-out.
+
+ <STRONG>-U</STRONG> tells <STRONG>tic</STRONG> to not post-process the data after parsing the source
+ file. Normally, it infers data which is commonly missing in older
+ terminfo data, or in termcaps.
+
+ <STRONG>-V</STRONG> reports the version of ncurses which was used in this program, and
+ exits.
+
+ <STRONG>-v</STRONG><EM>n</EM> specifies that (verbose) output be written to standard error trace
+ information showing <STRONG>tic</STRONG>'s progress.
+
+ The optional parameter <EM>n</EM> is a number from 1 to 10, inclusive,
+ indicating the desired level of detail of information. If ncurses
+ is built without tracing support, the optional parameter is
+ ignored. If <EM>n</EM> is omitted, the default level is 1. If <EM>n</EM> is speci-
+ fied and greater than 1, the level of detail is increased.
The debug flag levels are as follows:
@@ -266,124 +280,220 @@
8 List of tokens encountered by scanner
- 9 All values computed in construction of the
- hash table
-
- If the debug level <EM>n</EM> is not given, it is taken to be
- one.
-
- <STRONG>-w</STRONG><EM>n</EM> specifies the width of the output. The parameter is
- optional. If it is omitted, it defaults to 60.
-
- <STRONG>-x</STRONG> Treat unknown capabilities as user-defined. That is,
- if you supply a capability name which <STRONG>tic</STRONG> does not
- recognize, it will infer its type (boolean, number or
- string) from the syntax and make an extended table
- entry for that. User-defined capability strings
- whose name begins with "k" are treated as function
- keys.
-
- <STRONG>PARAMETERS</STRONG>
- <EM>file</EM> contains one or more <STRONG>terminfo</STRONG> terminal descriptions
- in source format [see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>]. Each descrip-
- tion in the file describes the capabilities of a
- particular terminal.
-
- If <EM>file</EM> is "-", then the data is read from the
- standard input. The <EM>file</EM> parameter may also be the
- path of a character-device.
-
- <STRONG>PROCESSING</STRONG>
- All but one of the capabilities recognized by <STRONG>tic</STRONG> are doc-
- umented in <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. The exception is the <STRONG>use</STRONG> capabil-
- ity.
-
- When a <STRONG>use</STRONG>=<EM>entry</EM>-<EM>name</EM> field is discovered in a terminal
- entry currently being compiled, <STRONG>tic</STRONG> reads in the binary
- from <STRONG>/usr/share/terminfo</STRONG> to complete the entry. (Entries
- created from <EM>file</EM> will be used first. <STRONG>tic</STRONG> duplicates the
- capabilities in <EM>entry</EM>-<EM>name</EM> for the current entry, with the
- exception of those capabilities that explicitly are
- defined in the current entry.
-
- When an entry, e.g., <STRONG>entry_name_1</STRONG>, contains a
- <STRONG>use=</STRONG><EM>entry</EM>_<EM>name</EM>_<EM>2</EM> field, any canceled capabilities in
- <EM>entry</EM>_<EM>name</EM>_<EM>2</EM> must also appear in <STRONG>entry_name_1</STRONG> before <STRONG>use=</STRONG>
- for these capabilities to be canceled in <STRONG>entry_name_1</STRONG>.
-
- 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.
+ 9 All values computed in construction of the hash table
+ If the debug level <EM>n</EM> is not given, it is taken to be one.
-</PRE>
-<H2>COMPATIBILITY</H2><PRE>
- There is some evidence that historic <STRONG>tic</STRONG> implementations
- treated description fields with no whitespace in them as
- additional aliases or short names. This <STRONG>tic</STRONG> does not do
- that, but it does warn when description fields may be
- treated that way and check them for dangerous characters.
+ <STRONG>-W</STRONG> By itself, the <STRONG>-w</STRONG> option will not force long strings to be
+ wrapped. Use the <STRONG>-W</STRONG> option to do this.
+ If you specify both <STRONG>-f</STRONG> and <STRONG>-W</STRONG> options, the latter is ignored when
+ <STRONG>-f</STRONG> has already split the line.
-</PRE>
-<H2>EXTENSIONS</H2><PRE>
- Unlike the SVr4 <STRONG>tic</STRONG> command, this implementation can actu-
- ally compile termcap sources. In fact, entries in ter-
- minfo and termcap syntax can be mixed in a single source
- file. See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> 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 <STRONG>use</STRONG> capabilities. This implementation of <STRONG>tic</STRONG>
- will find <STRONG>use</STRONG> targets anywhere in the source file, or any-
- where in the file tree rooted at <STRONG>TERMINFO</STRONG> (if <STRONG>TERMINFO</STRONG> is
- defined), or in the user's <EM>$HOME/.terminfo</EM> database (if it
- exists), or (finally) anywhere in the system's file tree
- of compiled entries.
-
- The error messages from this <STRONG>tic</STRONG> have the same format as
- GNU C error messages, and can be parsed by GNU Emacs's
- compile facility.
-
- The <STRONG>-0</STRONG>, <STRONG>-1</STRONG>, <STRONG>-C</STRONG>, <STRONG>-G</STRONG>, <STRONG>-I</STRONG>, <STRONG>-N</STRONG>, <STRONG>-R</STRONG>, <STRONG>-T</STRONG>, <STRONG>-V</STRONG>, <STRONG>-a</STRONG>, <STRONG>-e</STRONG>, <STRONG>-f</STRONG>, <STRONG>-g</STRONG>,
- <STRONG>-o</STRONG>, <STRONG>-r</STRONG>, <STRONG>-s</STRONG>, <STRONG>-t</STRONG> and <STRONG>-x</STRONG> options are not supported under
- SVr4. The SVr4 <STRONG>-c</STRONG> mode does not report bad use links.
-
- System V does not compile entries to or read entries from
- your <EM>$HOME/.terminfo</EM> database unless TERMINFO is explic-
- itly set to it.
+ <STRONG>-w</STRONG><EM>n</EM> specifies the width of the output. The parameter is optional. If
+ it is omitted, it defaults to 60.
+ <STRONG>-x</STRONG> Treat unknown capabilities as user-defined (see <STRONG>user_caps(5)</STRONG>).
+ That is, if you supply a capability name which <STRONG>tic</STRONG> does not recog-
+ nize, it will infer its type (boolean, number or string) from the
+ syntax and make an extended table entry for that. User-defined
+ capability strings whose name begins with "k" are treated as func-
+ tion keys.
-</PRE>
-<H2>FILES</H2><PRE>
+
+</PRE><H3><a name="h3-PARAMETERS">PARAMETERS</a></H3><PRE>
+ <EM>file</EM> contains one or more <STRONG>terminfo</STRONG> terminal descriptions in source
+ format [see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>]. Each description in the file
+ describes the capabilities of a particular terminal.
+
+ If <EM>file</EM> is "-", then the data is read from the standard input.
+ The <EM>file</EM> parameter may also be the path of a character-device.
+
+
+</PRE><H3><a name="h3-PROCESSING">PROCESSING</a></H3><PRE>
+ All but one of the capabilities recognized by <STRONG>tic</STRONG> are documented in
+ <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. The exception is the <STRONG>use</STRONG> capability.
+
+ When a <STRONG>use</STRONG>=<EM>entry</EM>-<EM>name</EM> field is discovered in a terminal entry currently
+ being compiled, <STRONG>tic</STRONG> reads in the binary from <STRONG>/usr/share/terminfo</STRONG> to
+ complete the entry. (Entries created from <EM>file</EM> will be used first.
+ <STRONG>tic</STRONG> duplicates the capabilities in <EM>entry</EM>-<EM>name</EM> for the current entry,
+ with the exception of those capabilities that explicitly are defined in
+ the current entry.
+
+ When an entry, e.g., <STRONG>entry_name_1</STRONG>, contains a <STRONG>use=</STRONG><EM>entry</EM>_<EM>name</EM>_<EM>2</EM> field,
+ any canceled capabilities in <EM>entry</EM>_<EM>name</EM>_<EM>2</EM> must also appear in
+ <STRONG>entry_name_1</STRONG> before <STRONG>use=</STRONG> for these capabilities to be canceled in
+ <STRONG>entry_name_1</STRONG>.
+
+ 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><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+ System V Release 2 provided a <STRONG>tic</STRONG> utility. It accepted a single
+ option: <STRONG>-v</STRONG> (optionally followed by a number). According to Ross
+ Ridge's comment in <EM>mytinfo</EM>, this version of <STRONG>tic</STRONG> was unable to represent
+ cancelled capabilities.
+
+ System V Release 3 provided a different <STRONG>tic</STRONG> utility, written by Pavel
+ Curtis, (originally named "compile" in <EM>pcurses</EM>). This added an option
+ <STRONG>-c</STRONG> to check the file for errors, with the caveat that errors in "use="
+ links would not be reported. System V Release 3 documented a few warn-
+ ing messages which did not appear in <EM>pcurses</EM>. While the program itself
+ was changed little as development continued with System V Release 4,
+ the table of capabilities grew from 180 (<EM>pcurses</EM>) to 464 (Solaris).
+
+ In early development of ncurses (1993), Zeyd Ben-Halim used the table
+ from <EM>mytinfo</EM> to extend the <EM>pcurses</EM> table to 469 capabilities (456
+ matched SVr4, 8 were only in SVr4, 13 were not in SVr4). Of those 13,
+ 11 were ultimately discarded (perhaps to match the draft of X/Open
+ Curses). The exceptions were <STRONG>memory_lock_above</STRONG> and <STRONG>memory_unlock</STRONG> (see
+ <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>).
+
+ Eric Raymond incorporated parts of <EM>mytinfo</EM> into ncurses to implement
+ the termcap-to-terminfo source conversion, and extended that to begin
+ development of the corresponding terminfo-to-termcap source conversion,
+ Thomas Dickey completed that development over the course of several
+ years.
+
+ In 1999, Thomas Dickey added the <STRONG>-x</STRONG> option to support user-defined
+ capabilities.
+
+ In 2010, Roy Marples provided a <STRONG>tic</STRONG> program and terminfo library for
+ NetBSD. That implementation adapts several features from ncurses,
+ including <STRONG>tic</STRONG>'s <STRONG>-x</STRONG> option.
+
+ The <STRONG>-c</STRONG> option tells <STRONG>tic</STRONG> to check for problems in the terminfo source
+ file. Continued development provides additional checks:
+
+ <STRONG>o</STRONG> <EM>pcurses</EM> had 8 warnings
+
+ <STRONG>o</STRONG> ncurses in 1996 had 16 warnings
+
+ <STRONG>o</STRONG> Solaris (SVr4) curses has 28 warnings
+
+ <STRONG>o</STRONG> NetBSD tic in 2019 has 19 warnings.
+
+ <STRONG>o</STRONG> ncurses in 2019 has 96 warnings
+
+ The checking done in ncurses' <STRONG>tic</STRONG> helps with the conversion to termcap,
+ as well as pointing out errors and inconsistencies. It is also used to
+ ensure consistency with the user-defined capabilities. There are 527
+ distinct capabilities in ncurses' terminal database; 128 of those are
+ user-defined.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ X/Open Curses, Issue 7 (2009) provides a brief description of <STRONG>tic</STRONG>. It
+ lists one option: <STRONG>-c</STRONG>. The omission of <STRONG>-v</STRONG> is unexpected. The change
+ history states that the description is derived from True64 UNIX.
+ According to its manual pages, that system also supported the <STRONG>-v</STRONG>
+ option.
+
+ Shortly after Issue 7 was released, Tru64 was discontinued. As of
+ 2019, the surviving implementations of <STRONG>tic</STRONG> are SVr4 (AIX, HP-UX and
+ Solaris), ncurses and NetBSD curses. The SVr4 <STRONG>tic</STRONG> programs all support
+ the <STRONG>-v</STRONG> option. The NetBSD <STRONG>tic</STRONG> program follows X/Open's documentation,
+ omitting the <STRONG>-v</STRONG> option.
+
+ The X/Open rationale states that some implementations of <STRONG>tic</STRONG> read ter-
+ minal descriptions from the standard input if the <EM>file</EM> parameter is
+ omitted. None of these implementations do that. Further, it comments
+ that some may choose to read from "./terminfo.src" but that is obsoles-
+ cent behavior from SVr2, and is not (for example) a documented feature
+ of SVr3.
+
+
+</PRE><H3><a name="h3-COMPATIBILITY">COMPATIBILITY</a></H3><PRE>
+ There is some evidence that historic <STRONG>tic</STRONG> implementations treated
+ description fields with no whitespace in them as additional aliases or
+ short names. This <STRONG>tic</STRONG> does not do that, but it does warn when descrip-
+ tion fields may be treated that way and check them for dangerous char-
+ acters.
+
+
+</PRE><H3><a name="h3-EXTENSIONS">EXTENSIONS</a></H3><PRE>
+ Unlike the SVr4 <STRONG>tic</STRONG> 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 <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> 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 <STRONG>use</STRONG>
+ capabilities. This implementation of <STRONG>tic</STRONG> will find <STRONG>use</STRONG> targets any-
+ where in the source file, or anywhere in the file tree rooted at <STRONG>TER-</STRONG>
+ <STRONG>MINFO</STRONG> (if <STRONG>TERMINFO</STRONG> is defined), or in the user's <EM>$HOME/.terminfo</EM> data-
+ base (if it exists), or (finally) anywhere in the system's file tree of
+ compiled entries.
+
+ The error messages from this <STRONG>tic</STRONG> have the same format as GNU C error
+ messages, and can be parsed by GNU Emacs's compile facility.
+
+ Aside from <STRONG>-c</STRONG> and <STRONG>-v</STRONG>, options are not portable:
+
+ <STRONG>o</STRONG> Most of tic's options are not supported by SVr4 <STRONG>tic</STRONG>:
+
+ <STRONG>-0</STRONG> <STRONG>-1</STRONG> <STRONG>-C</STRONG> <STRONG>-G</STRONG> <STRONG>-I</STRONG> <STRONG>-N</STRONG> <STRONG>-R</STRONG> <STRONG>-T</STRONG> <STRONG>-V</STRONG> <STRONG>-a</STRONG> <STRONG>-e</STRONG> <STRONG>-f</STRONG> <STRONG>-g</STRONG> <STRONG>-o</STRONG> <STRONG>-r</STRONG> <STRONG>-s</STRONG> <STRONG>-t</STRONG> <STRONG>-x</STRONG>
+
+ <STRONG>o</STRONG> The NetBSD <STRONG>tic</STRONG> supports a few of the ncurses options
+
+ <STRONG>-a</STRONG> <STRONG>-o</STRONG> <STRONG>-x</STRONG>
+
+ and adds <STRONG>-S</STRONG> (a feature which does the same thing as infocmp's <STRONG>-e</STRONG>
+ and <STRONG>-E</STRONG> options).
+
+ The SVr4 <STRONG>-c</STRONG> mode does not report bad "use=" links.
+
+ System V does not compile entries to or read entries from your
+ <EM>$HOME/.terminfo</EM> database unless TERMINFO is explicitly set to it.
+
+
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
<STRONG>/usr/share/terminfo/?/*</STRONG>
Compiled terminal description database.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>,
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="term.5.html">term(5)</A></STRONG>. <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,
+ <STRONG><A HREF="term.5.html">term(5)</A></STRONG>. <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
-</PRE>
-<H2>AUTHOR</H2><PRE>
+</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and
Thomas E. Dickey &lt;dickey@invisible-island.net&gt;
- <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>
+ <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-ALIASES">ALIASES</a></li>
+<li><a href="#h3-OPTIONS">OPTIONS</a></li>
+<li><a href="#h3-PARAMETERS">PARAMETERS</a></li>
+<li><a href="#h3-PROCESSING">PROCESSING</a></li>
+</ul>
+</li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a>
+<ul>
+<li><a href="#h3-COMPATIBILITY">COMPATIBILITY</a></li>
+<li><a href="#h3-EXTENSIONS">EXTENSIONS</a></li>
+</ul>
+</li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/toe.1m.html b/doc/html/man/toe.1m.html
index 6eb523cce2bd..13ddb2762929 100644
--- a/doc/html/man/toe.1m.html
+++ b/doc/html/man/toe.1m.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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,108 +26,166 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: toe.1m,v 1.26 2012/01/01 00:40:51 tom Exp @
+ * @Id: toe.1m,v 1.31 2019/07/20 19:06:44 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>toe 1m</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>toe 1m</H1>
-<HR>
+<H1 class="no-header">toe 1m</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG> <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>
+<STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG> <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>toe</STRONG> - table of (terminfo) entries
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>toe</STRONG> [<STRONG>-v</STRONG>[<EM>n</EM>]] [<STRONG>-ahsuUV</STRONG>] <EM>file...</EM>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- With no options, <STRONG>toe</STRONG> 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 <STRONG>-h</STRONG> option, a directory header will be
- issued as each directory is entered.
-
- There are other options intended for use by terminfo file
- maintainers:
-
- <STRONG>-a</STRONG> report on all of the terminal databases which
- ncurses would search, rather than only the first
- one that it finds.
-
- If the <STRONG>-s</STRONG> is also given, <STRONG>toe</STRONG> adds a column to the
- report, showing (like <STRONG>conflict(1)</STRONG>) which entries
- which belong to a given terminal database. An "*"
- marks entries which differ, and "+" marks equiva-
- lent entries.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ With no options, <STRONG>toe</STRONG> 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 direc-
+ tory is scanned. If you also specify the <STRONG>-h</STRONG> option, a directory header
+ will be issued as each directory is entered.
+
+ There are other options intended for use by terminfo file maintainers:
+
+ <STRONG>-a</STRONG> report on all of the terminal databases which ncurses would
+ search, rather than only the first one that it finds.
+
+ If the <STRONG>-s</STRONG> is also given, <STRONG>toe</STRONG> adds a column to the report, show-
+ ing (like <STRONG>conflict(1)</STRONG>) which entries which belong to a given
+ terminal database. An "*" marks entries which differ, and "+"
+ marks equivalent entries.
+
+ Without the <STRONG>-s</STRONG> option, <STRONG>toe</STRONG> does not attempt to merge duplicates
+ in its report
<STRONG>-s</STRONG> sort the output by the entry names.
<STRONG>-u</STRONG> <EM>file</EM>
- says to write a report to the standard output,
- listing dependencies in the given terminfo/termcap
- source file. The report condenses the `use' rela-
- tion: each line consists of the primary name of a
- terminal that has use capabilities, followed by a
- colon, followed by the whitespace-separated primary
- names of all terminals which occur in those use
- capabilities, followed by a newline
+ says to write a report to the standard output, listing dependen-
+ cies in the given terminfo/termcap source file. The report con-
+ denses the "use" relation: each line consists of the primary
+ name of a terminal that has use capabilities, followed by a
+ colon, followed by the whitespace-separated primary names of all
+ terminals which occur in those use capabilities, followed by a
+ newline
<STRONG>-U</STRONG> <EM>file</EM>
- says to write a report to the standard output,
- listing reverse dependencies in the given ter-
- minfo/termcap source file. The report reverses the
- `use' relation: each line consists of the primary
- name of a terminal that occurs in use capabilities,
- followed by a colon, followed by the whitespace-
- separated primary names of all terminals which
- depend on it, followed by a newline.
+ says to write a report to the standard output, listing reverse
+ dependencies in the given terminfo/termcap source file. The
+ 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-separated primary
+ names of all terminals which depend on it, followed by a new-
+ line.
+
+ <STRONG>-v</STRONG><EM>n</EM> specifies that (verbose) output be written to standard error,
+ showing <STRONG>toe</STRONG>'s progress.
+
+ The optional parameter <EM>n</EM> is a number from 1 to 10, interpreted
+ as for <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>. If ncurses is built without tracing support,
+ the optional parameter is ignored.
+
+ <STRONG>-V</STRONG> reports the version of ncurses which was used in this program,
+ and exits.
+
+
+</PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE>
+ Without sorting, the <STRONG>-a</STRONG> option reports all of the names found in all of
+ the terminal databases found by the <STRONG>TERMINFO</STRONG> and <STRONG>TERMINFO_DIRS</STRONG> environ-
+ ment variables:
+
+ MtxOrb162 16x2 Matrix Orbital LCD display
+ MtxOrb204 20x4 Matrix Orbital LCD display
+ MtxOrb Generic Matrix Orbital LCD display
+ qvt101+ qume qvt 101 PLUS product
+ qvt119+-25 QVT 119 PLUS with 25 data lines
+ qansi-g QNX ANSI
+ qvt103 qume qvt 103
+ qnxw QNX4 windows
+ qansi-w QNX ansi for windows
+ qnxm QNX4 with mouse events
+ qvt203-25-w QVT 203 PLUS with 25 by 132 columns
+ qansi-t QNX ansi without console writes
+ . . .
+
+ Use the <STRONG>-a</STRONG> and <STRONG>-s</STRONG> options together to show where each terminal descrip-
+ tion was found:
+
+ --&gt; /usr/local/ncurses/share/terminfo
+ ----&gt; /usr/share/terminfo
+ *-+-: 9term Plan9 terminal emulator for X
+ *---: Eterm Eterm with xterm-style color support (X Window System)
+ *-*-: Eterm-256color Eterm with xterm 256-colors
+ *-*-: Eterm-88color Eterm with 88 colors
+ *-+-: MtxOrb Generic Matrix Orbital LCD display
+ *-+-: MtxOrb162 16x2 Matrix Orbital LCD display
+ *-+-: MtxOrb204 20x4 Matrix Orbital LCD display
+ *-*-: NCR260VT300WPP NCR 2900_260 vt300 wide mode pc+ kybd
+ *-+-: aaa ann arbor ambassador/30 lines
+ *-+-: aaa+dec ann arbor ambassador in dec vt100 mode
+ *-+-: aaa+rv ann arbor ambassador in reverse video
+ . . .
+
+
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+ <STRONG>/usr/share/terminfo/?/*</STRONG>
+ Compiled terminal description database.
- <STRONG>-v</STRONG><EM>n</EM> specifies that (verbose) output be written to stan-
- dard error, showing <STRONG>toe</STRONG>'s progress. The optional
- parameter <EM>n</EM> is a number from 1 to 10, interpreted
- as for <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>.
- <STRONG>-V</STRONG> reports the version of ncurses which was used in
- this program, and exits.
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+ This utility is not provided by other implementations. There is no
+ relevant X/Open or POSIX standard for <STRONG>toe</STRONG>.
+ The program name refers to a developer's pun:
-</PRE>
-<H2>FILES</H2><PRE>
- <STRONG>/usr/share/terminfo/?/*</STRONG>
- Compiled terminal description database.
+ <STRONG>o</STRONG> <STRONG>tic</STRONG>,
+ <STRONG>o</STRONG> <STRONG>tac</STRONG> (now <STRONG>tack</STRONG>),
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+ <STRONG>o</STRONG> <STRONG>toe</STRONG>.
+
+ It replaced a <STRONG>-T</STRONG> option which was briefly supported by the ncurses
+ <STRONG>infocmp</STRONG> utility in 1995.
+
+ The <STRONG>-a</STRONG> and <STRONG>-s</STRONG> options were added to <STRONG>toe</STRONG> several years later (2006 and
+ 2011, respectively).
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG>ter-</STRONG>
+ <STRONG><A HREF="terminfo.5.html">minfo(5)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
- <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>
+ <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-EXAMPLES">EXAMPLES</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/tput.1.html b/doc/html/man/tput.1.html
index 0f4bc64493d1..88b3f13ae943 100644
--- a/doc/html/man/tput.1.html
+++ b/doc/html/man/tput.1.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
* t
****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,33 +27,32 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: tput.1,v 1.32 2012/07/14 21:06:45 tom Exp @
+ * @Id: tput.1,v 1.62 2018/09/30 20:31:59 Sven.Joachim Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>tput 1</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>tput 1</H1>
-<HR>
+<H1 class="no-header">tput 1</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="tput.1.html">tput(1)</A></STRONG> <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>
+<STRONG><A HREF="tput.1.html">tput(1)</A></STRONG> General Commands Manual <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
- <STRONG>tput</STRONG>, <STRONG>reset</STRONG> - initialize a terminal or query terminfo
- database
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <STRONG>tput</STRONG>, <STRONG>reset</STRONG> - initialize a terminal or query terminfo database
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <EM>capname</EM> [<EM>parms</EM> ... ]
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <EM>capname</EM> [<EM>parameters</EM>]
+ <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] [<STRONG>-x</STRONG>] <STRONG>clear</STRONG>
<STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <STRONG>init</STRONG>
<STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <STRONG>reset</STRONG>
<STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <STRONG>longname</STRONG>
@@ -62,137 +60,230 @@
<STRONG>tput</STRONG> <STRONG>-V</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>tput</STRONG> utility uses the <STRONG>terminfo</STRONG> database to make the
- values of terminal-dependent capabilities and information
- available to the shell (see <STRONG>sh(1)</STRONG>), to initialize or reset
- the terminal, or return the long name of the requested
- terminal type. The result depends upon the capability's
- type:
-
- string
- <STRONG>tput</STRONG> writes the string to the standard output.
- No trailing newline is supplied.
-
- integer
- <STRONG>tput</STRONG> writes the decimal value to the standard
- output, with a trailing newline.
-
- boolean
- <STRONG>tput</STRONG> simply sets the exit code (<STRONG>0</STRONG> for TRUE if
- the terminal has the capability, <STRONG>1</STRONG> for FALSE
- if it does not), and writes nothing to the
- standard output.
-
- Before using a value returned on the standard output, the
- application should test the exit code (e.g., <STRONG>$?</STRONG>, see
- <STRONG>sh(1)</STRONG>) to be sure it is <STRONG>0</STRONG>. (See the <STRONG>EXIT</STRONG> <STRONG>CODES</STRONG> and <STRONG>DIAG-</STRONG>
- <STRONG>NOSTICS</STRONG> sections.) For a complete list of capabilities
- and the <EM>capname</EM> associated with each, see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
-
- <STRONG>-T</STRONG><EM>type</EM> indicates the <EM>type</EM> of terminal. Normally this
- option is unnecessary, because the default is taken
- from the environment variable <STRONG>TERM</STRONG>. If <STRONG>-T</STRONG> is spec-
- ified, then the shell variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG>
- will also be ignored.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <STRONG>tput</STRONG> utility uses the <STRONG>terminfo</STRONG> database to make the values of ter-
+ minal-dependent capabilities and information available to the shell
+ (see <STRONG>sh(1)</STRONG>), to initialize or reset the terminal, or return the long
+ name of the requested terminal type. The result depends upon the capa-
+ bility's type:
+
+ string
+ <STRONG>tput</STRONG> writes the string to the standard output. No trailing
+ newline is supplied.
+
+ integer
+ <STRONG>tput</STRONG> writes the decimal value to the standard output, with a
+ trailing newline.
+
+ boolean
+ <STRONG>tput</STRONG> simply sets the exit code (<STRONG>0</STRONG> for TRUE if the terminal has
+ the capability, <STRONG>1</STRONG> for FALSE if it does not), and writes nothing
+ to the standard output.
+
+ Before using a value returned on the standard output, the application
+ should test the exit code (e.g., <STRONG>$?</STRONG>, see <STRONG>sh(1)</STRONG>) to be sure it is <STRONG>0</STRONG>.
+ (See the <STRONG>EXIT</STRONG> <STRONG>CODES</STRONG> and <STRONG>DIAGNOSTICS</STRONG> sections.) For a complete list of
+ capabilities and the <EM>capname</EM> associated with each, see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+
+
+</PRE><H3><a name="h3-Options">Options</a></H3><PRE>
+ <STRONG>-S</STRONG> allows more than one capability per invocation of <STRONG>tput</STRONG>. The
+ capabilities must be passed to <STRONG>tput</STRONG> from the standard input
+ instead of from the command line (see example). Only one <EM>cap-</EM>
+ <EM>name</EM> is allowed per line. The <STRONG>-S</STRONG> option changes the meaning of
+ the <STRONG>0</STRONG> and <STRONG>1</STRONG> boolean and string exit codes (see the EXIT CODES
+ section).
+
+ Because some capabilities may use <EM>string</EM> parameters rather than
+ <EM>numbers</EM>, <STRONG>tput</STRONG> uses a table and the presence of parameters in its
+ input to decide whether to use <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>, and how to interpret
+ the parameters.
+
+ <STRONG>-T</STRONG><EM>type</EM> indicates the <EM>type</EM> of terminal. Normally this option is unnec-
+ essary, because the default is taken from the environment vari-
+ able <STRONG>TERM</STRONG>. If <STRONG>-T</STRONG> is specified, then the shell variables <STRONG>LINES</STRONG>
+ and <STRONG>COLUMNS</STRONG> will also be ignored.
+
+ <STRONG>-V</STRONG> reports the version of ncurses which was used in this program,
+ and exits.
+
+ <STRONG>-x</STRONG> do not attempt to clear the terminal's scrollback buffer using
+ the extended "E3" capability.
+
+
+</PRE><H3><a name="h3-Commands">Commands</a></H3><PRE>
+ A few commands (<STRONG>init</STRONG>, <STRONG>reset</STRONG> and <STRONG>longname</STRONG>) are special; they are defined
+ by the <STRONG>tput</STRONG> program. The others are the names of <EM>capabilities</EM> from the
+ terminal database (see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for a list). Although <STRONG>init</STRONG> and
+ <STRONG>reset</STRONG> resemble capability names, <STRONG>tput</STRONG> uses several capabilities to per-
+ form these special functions.
<EM>capname</EM>
- indicates the capability from the <STRONG>terminfo</STRONG> data-
- base. When <STRONG>termcap</STRONG> support is compiled in, the
- <STRONG>termcap</STRONG> name for the capability is also accepted.
+ indicates the capability from the terminal database.
- <EM>parms</EM> If the capability is a string that takes parame-
- ters, the arguments <EM>parms</EM> will be instantiated into
+ If the capability is a string that takes parameters, the argu-
+ ments following the capability will be used as parameters for
the string.
- Most parameters are numbers. Only a few terminfo
- capabilities require string parameters; <STRONG>tput</STRONG> uses a
- table to decide which to pass as strings. Normally
- <STRONG>tput</STRONG> uses <STRONG>tparm</STRONG> (3x) to perform the substitution.
- If no parameters are given for the capability, <STRONG>tput</STRONG>
- writes the string without performing the substitu-
- tion.
-
- <STRONG>-S</STRONG> allows more than one capability per invocation of
- <STRONG>tput</STRONG>. The capabilities must be passed to <STRONG>tput</STRONG> from
- the standard input instead of from the command line
- (see example). Only one <EM>capname</EM> is allowed per
- line. The <STRONG>-S</STRONG> option changes the meaning of the <STRONG>0</STRONG>
- and <STRONG>1</STRONG> boolean and string exit codes (see the EXIT
- CODES section).
-
- Again, <STRONG>tput</STRONG> uses a table and the presence of param-
- eters in its input to decide whether to use <STRONG>tparm</STRONG>
- (3x), and how to interpret the parameters.
-
- <STRONG>-V</STRONG> reports the version of ncurses which was used in
- this program, and exits.
-
- <STRONG>init</STRONG> If the <STRONG>terminfo</STRONG> database is present and an entry
- for the user's terminal exists (see <STRONG>-T</STRONG><EM>type</EM>, above),
- the following will occur:
-
- (1) if present, the terminal's initialization
- strings will be output as detailed in the
- <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> section on <EM>Tabs</EM> <EM>and</EM> <EM>Initializa-</EM>
- <EM>tion</EM>,
-
- (2) any delays (e.g., newline) 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.
-
- <STRONG>reset</STRONG> Instead of putting out initialization strings, the
- terminal's reset strings will be output if present
- (<STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>, <STRONG>rf</STRONG>). If the reset strings are not
- present, but initialization strings are, the ini-
- tialization strings will be output. Otherwise,
- <STRONG>reset</STRONG> acts identically to <STRONG>init</STRONG>.
+ Most parameters are numbers. Only a few terminal capabilities
+ require string parameters; <STRONG>tput</STRONG> uses a table to decide which to
+ pass as strings. Normally <STRONG>tput</STRONG> uses <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> to perform the
+ substitution. If no parameters are given for the capability,
+ <STRONG>tput</STRONG> writes the string without performing the substitution.
+
+ <STRONG>init</STRONG> If the terminal database is present and an entry for the user's
+ terminal exists (see <STRONG>-T</STRONG><EM>type</EM>, above), the following will occur:
+
+ (1) first, <STRONG>tput</STRONG> retrieves the current terminal mode settings
+ for your terminal. It does this by successively testing
+
+ <STRONG>o</STRONG> the standard error,
+
+ <STRONG>o</STRONG> standard output,
+
+ <STRONG>o</STRONG> standard input and
+
+ <STRONG>o</STRONG> ultimately "/dev/tty"
+
+ to obtain terminal settings. Having retrieved these set-
+ tings, <STRONG>tput</STRONG> remembers which file descriptor to use when
+ updating settings.
+
+ (2) if the window size cannot be obtained from the operating
+ system, but the terminal description (or environment, e.g.,
+ <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> variables specify this), update the oper-
+ ating system's notion of the window size.
+
+ (3) the terminal modes will be updated:
+
+ <STRONG>o</STRONG> any delays (e.g., newline) specified in the entry will
+ be set in the tty driver,
+
+ <STRONG>o</STRONG> tabs expansion will be turned on or off according to
+ the specification in the entry, and
+
+ <STRONG>o</STRONG> if tabs are not expanded, standard tabs will be set
+ (every 8 spaces).
+
+ (4) if present, the terminal's initialization strings will be
+ output as detailed in the <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> section on <EM>Tabs</EM> <EM>and</EM>
+ <EM>Initialization</EM>,
+
+ (5) output is flushed.
+
+ If an entry does not contain the information needed for any of
+ these activities, that activity will silently be skipped.
+
+ <STRONG>reset</STRONG> This is similar to <STRONG>init</STRONG>, with two differences:
+
+ (1) before any other initialization, the terminal modes will be
+ reset to a "sane" state:
+
+ <STRONG>o</STRONG> set cooked and echo modes,
+
+ <STRONG>o</STRONG> turn off cbreak and raw modes,
+
+ <STRONG>o</STRONG> turn on newline translation and
+
+ <STRONG>o</STRONG> reset any unset special characters to their default
+ values
+
+ (2) Instead of putting out <EM>initialization</EM> strings, the termi-
+ nal's <EM>reset</EM> strings will be output if present (<STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>,
+ <STRONG>rs3</STRONG>, <STRONG>rf</STRONG>). If the <EM>reset</EM> strings are not present, but <EM>ini-</EM>
+ <EM>tialization</EM> strings are, the <EM>initialization</EM> strings will be
+ output.
+
+ Otherwise, <STRONG>reset</STRONG> acts identically to <STRONG>init</STRONG>.
<STRONG>longname</STRONG>
- If the <STRONG>terminfo</STRONG> database is present and an entry
- for the user's terminal exists (see <STRONG>-T</STRONG><EM>type</EM> 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 <STRONG>terminfo</STRONG> database
- [see <STRONG><A HREF="term.5.html">term(5)</A></STRONG>].
+ If the terminal database is present and an entry for the user's
+ terminal exists (see <STRONG>-T</STRONG><EM>type</EM> 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 <STRONG>terminfo</STRONG> data-
+ base [see <STRONG><A HREF="term.5.html">term(5)</A></STRONG>].
- If <STRONG>tput</STRONG> is invoked by a link named <STRONG>reset</STRONG>, this has the
- same effect as <STRONG>tput</STRONG> <STRONG>reset</STRONG>. See <STRONG>tset</STRONG> for comparison, which
- has similar behavior.
+</PRE><H3><a name="h3-Aliases">Aliases</a></H3><PRE>
+ <STRONG>tput</STRONG> handles the <STRONG>clear</STRONG>, <STRONG>init</STRONG> and <STRONG>reset</STRONG> commands specially: it allows
+ for the possibility that it is invoked by a link with those names.
-</PRE>
-<H2>EXAMPLES</H2><PRE>
+ If <STRONG>tput</STRONG> is invoked by a link named <STRONG>reset</STRONG>, this has the same effect as
+ <STRONG>tput</STRONG> <STRONG>reset</STRONG>. The <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> utility also treats a link named <STRONG>reset</STRONG> spe-
+ cially.
+
+ Before ncurses 6.1, the two utilities were different from each other:
+
+ <STRONG>o</STRONG> <STRONG>tset</STRONG> utility reset the terminal modes and special characters (not
+ done with <STRONG>tput</STRONG>).
+
+ <STRONG>o</STRONG> On the other hand, <STRONG>tset</STRONG>'s repertoire of terminal capabilities for
+ resetting the terminal was more limited, i.e., only <STRONG>reset_1string</STRONG>,
+ <STRONG>reset_2string</STRONG> and <STRONG>reset_file</STRONG> in contrast to the tab-stops and mar-
+ gins which are set by this utility.
+
+ <STRONG>o</STRONG> The <STRONG>reset</STRONG> program is usually an alias for <STRONG>tset</STRONG>, because of this
+ difference with resetting terminal modes and special characters.
+
+ With the changes made for ncurses 6.1, the <EM>reset</EM> feature of the two
+ programs is (mostly) the same. A few differences remain:
+
+ <STRONG>o</STRONG> The <STRONG>tset</STRONG> program waits one second when resetting, in case it hap-
+ pens to be a hardware terminal.
+
+ <STRONG>o</STRONG> The two programs write the terminal initialization strings to dif-
+ ferent streams (i.e., the standard error for <STRONG>tset</STRONG> and the standard
+ output for <STRONG>tput</STRONG>).
+
+ <STRONG>Note:</STRONG> although these programs write to different streams, redirect-
+ ing their output to a file will capture only part of their actions.
+ The changes to the terminal modes are not affected by redirecting
+ the output.
+
+ If <STRONG>tput</STRONG> is invoked by a link named <STRONG>init</STRONG>, this has the same effect as
+ <STRONG>tput</STRONG> <STRONG>init</STRONG>. Again, you are less likely to use that link because another
+ program named <STRONG>init</STRONG> has a more well-established use.
+
+
+</PRE><H3><a name="h3-Terminal-Size">Terminal Size</a></H3><PRE>
+ Besides the special commands (e.g., <STRONG>clear</STRONG>), tput treats certain ter-
+ minfo capabilities specially: <STRONG>lines</STRONG> and <STRONG>columns</STRONG>. tput calls
+ <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG> to obtain the terminal size:
+
+ <STRONG>o</STRONG> first, it gets the size from the terminal database (which generally
+ is not provided for terminal emulators which do not have a fixed
+ window size)
+
+ <STRONG>o</STRONG> then it asks the operating system for the terminal's size (which
+ generally works, unless connecting via a serial line which does not
+ support <EM>NAWS</EM>: negotiations about window size).
+
+ <STRONG>o</STRONG> finally, it inspects the environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG>
+ which may override the terminal size.
+
+ If the <STRONG>-T</STRONG> option is given tput ignores the environment variables by
+ calling <STRONG>use_tioctl(TRUE)</STRONG>, relying upon the operating system (or
+ finally, the terminal database).
+
+
+</PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE>
<STRONG>tput</STRONG> <STRONG>init</STRONG>
- Initialize the terminal according to the type of ter-
- minal in the environmental variable <STRONG>TERM</STRONG>. This com-
- mand should be included in everyone's .profile after
- the environmental variable <STRONG>TERM</STRONG> has been exported, as
- illustrated on the <STRONG>profile(5)</STRONG> manual page.
+ Initialize the terminal according to the type of terminal in the
+ environmental variable <STRONG>TERM</STRONG>. This command should be included in
+ everyone's .profile after the environmental variable <STRONG>TERM</STRONG> has been
+ exported, as illustrated on the <STRONG>profile(5)</STRONG> manual page.
<STRONG>tput</STRONG> <STRONG>-T5620</STRONG> <STRONG>reset</STRONG>
- Reset an AT&amp;T 5620 terminal, overriding the type of
- terminal in the environmental variable <STRONG>TERM</STRONG>.
+ Reset an AT&amp;T 5620 terminal, overriding the type of terminal in
+ the environmental variable <STRONG>TERM</STRONG>.
<STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>0</STRONG> <STRONG>0</STRONG>
- Send the sequence to move the cursor to row <STRONG>0</STRONG>, column
- <STRONG>0</STRONG> (the upper left corner of the screen, usually known
- as the "home" cursor position).
+ Send the sequence to move the cursor to row <STRONG>0</STRONG>, column <STRONG>0</STRONG> (the upper
+ left corner of the screen, usually known as the "home" cursor
+ position).
<STRONG>tput</STRONG> <STRONG>clear</STRONG>
- Echo the clear-screen sequence for the current termi-
- nal.
+ Echo the clear-screen sequence for the current terminal.
<STRONG>tput</STRONG> <STRONG>cols</STRONG>
Print the number of columns for the current terminal.
@@ -201,28 +292,25 @@
Print the number of columns for the 450 terminal.
<STRONG>bold=`tput</STRONG> <STRONG>smso`</STRONG> <STRONG>offbold=`tput</STRONG> <STRONG>rmso`</STRONG>
- Set the shell variables <STRONG>bold</STRONG>, to begin stand-out mode
- sequence, and <STRONG>offbold</STRONG>, to end standout mode sequence,
- for the current terminal. This might be followed by
- a prompt: <STRONG>echo</STRONG> <STRONG>"${bold}Please</STRONG> <STRONG>type</STRONG> <STRONG>in</STRONG> <STRONG>your</STRONG> <STRONG>name:</STRONG>
- <STRONG>${offbold}\c"</STRONG>
+ Set the shell variables <STRONG>bold</STRONG>, to begin stand-out mode sequence,
+ and <STRONG>offbold</STRONG>, to end standout mode sequence, for the current termi-
+ nal. This might be followed by a prompt: <STRONG>echo</STRONG> <STRONG>"${bold}Please</STRONG> <STRONG>type</STRONG>
+ <STRONG>in</STRONG> <STRONG>your</STRONG> <STRONG>name:</STRONG> <STRONG>${offbold}\c"</STRONG>
<STRONG>tput</STRONG> <STRONG>hc</STRONG>
- Set exit code to indicate if the current terminal is
- a hard copy terminal.
+ Set exit code to indicate if the current terminal is a hard copy
+ terminal.
<STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>23</STRONG> <STRONG>4</STRONG>
- Send the sequence to move the cursor to row 23, col-
- umn 4.
+ Send the sequence to move the cursor to row 23, column 4.
<STRONG>tput</STRONG> <STRONG>cup</STRONG>
- Send the terminfo string for cursor-movement, with no
- parameters substituted.
+ Send the terminfo string for cursor-movement, with no parameters
+ substituted.
<STRONG>tput</STRONG> <STRONG>longname</STRONG>
- Print the long name from the <STRONG>terminfo</STRONG> database for
- the type of terminal specified in the environmental
- variable <STRONG>TERM</STRONG>.
+ Print the long name from the <STRONG>terminfo</STRONG> database for the type of
+ terminal specified in the environmental variable <STRONG>TERM</STRONG>.
<STRONG>tput</STRONG> <STRONG>-S</STRONG> <STRONG>&lt;&lt;!</STRONG>
<STRONG>&gt;</STRONG> <STRONG>clear</STRONG>
@@ -230,68 +318,56 @@
<STRONG>&gt;</STRONG> <STRONG>bold</STRONG>
<STRONG>&gt;</STRONG> <STRONG>!</STRONG>
- This example shows <STRONG>tput</STRONG> processing several capabili-
- ties in one invocation. It 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 (<STRONG>!</STRONG>) on a line by itself.
+ This example shows <STRONG>tput</STRONG> processing several capabilities in one
+ invocation. It clears the screen, moves the cursor to position
+ 10, 10 and turns on bold (extra bright) mode. The list is termi-
+ nated by an exclamation mark (<STRONG>!</STRONG>) on a line by itself.
-</PRE>
-<H2>FILES</H2><PRE>
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
<STRONG>/usr/share/terminfo</STRONG>
compiled terminal description database
<STRONG>/usr/share/tabset/*</STRONG>
- 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 <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
+ tab settings for some terminals, in a format appropriate to be
+ output to the terminal (escape sequences that set margins and
+ tabs); for more information, see the <EM>Tabs</EM> <EM>and</EM> <EM>Initialization</EM>,
+ section of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
-</PRE>
-<H2>EXIT CODES</H2><PRE>
- If the <STRONG>-S</STRONG> option is used, <STRONG>tput</STRONG> checks for errors from each
- line, and if any errors are found, will set the exit code
- to 4 plus the number of lines with errors. If no errors
- are found, the exit code is <STRONG>0</STRONG>. No indication of which
- line failed can be given so exit code <STRONG>1</STRONG> will never appear.
- Exit codes <STRONG>2</STRONG>, <STRONG>3</STRONG>, and <STRONG>4</STRONG> retain their usual interpretation.
- If the <STRONG>-S</STRONG> option is not used, the exit code depends on the
- type of <EM>capname</EM>:
-
- <EM>boolean</EM>
- a value of <STRONG>0</STRONG> is set for TRUE and <STRONG>1</STRONG> for FALSE.
-
- <EM>string</EM> a value of <STRONG>0</STRONG> is set if the <EM>capname</EM> is defined
- for this terminal <EM>type</EM> (the value of <EM>capname</EM>
- is returned on standard output); a value of <STRONG>1</STRONG>
- is set if <EM>capname</EM> is not defined for this ter-
- minal <EM>type</EM> (nothing is written to standard
- output).
-
- <EM>integer</EM>
- a value of <STRONG>0</STRONG> is always set, whether or not
- <EM>capname</EM> is defined for this terminal <EM>type</EM>. To
- determine if <EM>capname</EM> is defined for this ter-
- minal <EM>type</EM>, the user must test the value writ-
- ten to standard output. A value of <STRONG>-1</STRONG> means
- that <EM>capname</EM> is not defined for this terminal
- <EM>type</EM>.
-
- <EM>other</EM> <STRONG>reset</STRONG> or <STRONG>init</STRONG> may fail to find their respec-
- tive files. In that case, the exit code is
- set to 4 + <STRONG>errno</STRONG>.
-
- Any other exit code indicates an error; see the DIAGNOS-
- TICS section.
+</PRE><H2><a name="h2-EXIT-CODES">EXIT CODES</a></H2><PRE>
+ If the <STRONG>-S</STRONG> option is used, <STRONG>tput</STRONG> checks for errors from each line, and if
+ any errors are found, will set the exit code to 4 plus the number of
+ lines with errors. If no errors are found, the exit code is <STRONG>0</STRONG>. No
+ indication of which line failed can be given so exit code <STRONG>1</STRONG> will never
+ appear. Exit codes <STRONG>2</STRONG>, <STRONG>3</STRONG>, and <STRONG>4</STRONG> retain their usual interpretation. If
+ the <STRONG>-S</STRONG> option is not used, the exit code depends on the type of <EM>cap-</EM>
+ <EM>name</EM>:
+ <EM>boolean</EM>
+ a value of <STRONG>0</STRONG> is set for TRUE and <STRONG>1</STRONG> for FALSE.
-</PRE>
-<H2>DIAGNOSTICS</H2><PRE>
- <STRONG>tput</STRONG> prints the following error messages and sets the cor-
- responding exit codes.
+ <EM>string</EM> a value of <STRONG>0</STRONG> is set if the <EM>capname</EM> is defined for this termi-
+ nal <EM>type</EM> (the value of <EM>capname</EM> is returned on standard out-
+ put); a value of <STRONG>1</STRONG> is set if <EM>capname</EM> is not defined for this
+ terminal <EM>type</EM> (nothing is written to standard output).
+
+ <EM>integer</EM>
+ a value of <STRONG>0</STRONG> is always set, whether or not <EM>capname</EM> is defined
+ for this terminal <EM>type</EM>. To determine if <EM>capname</EM> is defined
+ for this terminal <EM>type</EM>, the user must test the value written
+ to standard output. A value of <STRONG>-1</STRONG> means that <EM>capname</EM> is not
+ defined for this terminal <EM>type</EM>.
+
+ <EM>other</EM> <STRONG>reset</STRONG> or <STRONG>init</STRONG> may fail to find their respective files. In
+ that case, the exit code is set to 4 + <STRONG>errno</STRONG>.
+
+ Any other exit code indicates an error; see the DIAGNOSTICS section.
+
+
+</PRE><H2><a name="h2-DIAGNOSTICS">DIAGNOSTICS</a></H2><PRE>
+ <STRONG>tput</STRONG> prints the following error messages and sets the corresponding
+ exit codes.
exit code error message
---------------------------------------------------------------------
@@ -306,48 +382,172 @@
---------------------------------------------------------------------
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The <STRONG>longname</STRONG> and <STRONG>-S</STRONG> options, and the parameter-substitu-
- tion features used in the <STRONG>cup</STRONG> example, are not supported
- in BSD curses or in AT&amp;T/USL curses before SVr4.
-
- X/Open documents only the operands for <STRONG>clear</STRONG>, <STRONG>init</STRONG> and
- <STRONG>reset</STRONG>. In this implementation, <STRONG>clear</STRONG> is part of the <EM>cap-</EM>
- <EM>name</EM> support. Other implementations of <STRONG>tput</STRONG> on SVr4-based
- systems such as Solaris, IRIX64 and HPUX as well as others
- such as AIX and Tru64 provide support for <EM>capname</EM> oper-
- ands.
-
- A few platforms such as FreeBSD and NetBSD recognize term-
- cap names rather than terminfo capability names in their
- respective <STRONG>tput</STRONG> commands.
-
- Most implementations which provide support for <EM>capname</EM> op-
- erands use the <EM>tparm</EM> function to expand parameters in it.
- That function expects a mixture of numeric and string
- parameters, requiring <STRONG>tput</STRONG> to know which type to use.
- This implementation uses a table to determine that for the
- standard <EM>capname</EM> operands, and an internal library func-
- tion to analyze nonstandard <EM>capname</EM> operands. Other
- implementations may simply guess that an operand contain-
- ing only digits is intended to be a number.
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+ The <STRONG>tput</STRONG> command was begun by Bill Joy in 1980. The initial version
+ only cleared the screen.
+
+ AT&amp;T System V provided a different <STRONG>tput</STRONG> command, whose <STRONG>init</STRONG> and <STRONG>reset</STRONG>
+ subcommands (more than half the program) were incorporated from the
+ <STRONG>reset</STRONG> feature of BSD <STRONG>tset</STRONG> written by Eric Allman.
+
+ Keith Bostic replaced the BSD <STRONG>tput</STRONG> command in 1989 with a new implemen-
+ tation based on the AT&amp;T System V program <STRONG>tput</STRONG>. Like the AT&amp;T program,
+ Bostic's version accepted some parameters named for <EM>terminfo</EM> <EM>capabili-</EM>
+ <EM>ties</EM> (<STRONG>clear</STRONG>, <STRONG>init</STRONG>, <STRONG>longname</STRONG> and <STRONG>reset</STRONG>). However (because he had only
+ termcap available), it accepted <EM>termcap</EM> <EM>names</EM> for other capabilities.
+ Also, Bostic's BSD <STRONG>tput</STRONG> did not modify the terminal I/O modes as the
+ earlier BSD <STRONG>tset</STRONG> had done.
+
+ At the same time, Bostic added a shell script named "clear", which used
+ <STRONG>tput</STRONG> to clear the screen.
+
+ Both of these appeared in 4.4BSD, becoming the "modern" BSD implementa-
+ tion of <STRONG>tput</STRONG>.
+
+ This implementation of <STRONG>tput</STRONG> began from a different source than AT&amp;T or
+ BSD: Ross Ridge's <EM>mytinfo</EM> package, published on <EM>comp.sources.unix</EM> in
+ December 1992. Ridge's program made more sophisticated use of the ter-
+ minal capabilities than the BSD program. Eric Raymond used that <STRONG>tput</STRONG>
+ program (and other parts of <EM>mytinfo</EM>) in ncurses in June 1995. Using
+ the portions dealing with terminal capabilities almost without change,
+ Raymond made improvements to the way the command-line parameters were
+ handled.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ This implementation of <STRONG>tput</STRONG> differs from AT&amp;T <STRONG>tput</STRONG> in two important
+ areas:
+
+ <STRONG>o</STRONG> <STRONG>tput</STRONG> <EM>capname</EM> writes to the standard output. That need not be a
+ regular terminal. However, the subcommands which manipulate termi-
+ nal modes may not use the standard output.
+ The AT&amp;T implementation's <STRONG>init</STRONG> and <STRONG>reset</STRONG> commands use the BSD
+ (4.1c) <STRONG>tset</STRONG> source, which manipulates terminal modes. It succes-
+ sively tries standard output, standard error, standard input before
+ falling back to "/dev/tty" and finally just assumes a 1200Bd termi-
+ nal. When updating terminal modes, it ignores errors.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>.
+ Until changes made after ncurses 6.0, <STRONG>tput</STRONG> did not modify terminal
+ modes. <STRONG>tput</STRONG> now uses a similar scheme, using functions shared with
+ <STRONG>tset</STRONG> (and ultimately based on the 4.4BSD <STRONG>tset</STRONG>). If it is not able
+ to open a terminal, e.g., when running in <STRONG>cron</STRONG>, <STRONG>tput</STRONG> will return an
+ error.
+
+ <STRONG>o</STRONG> AT&amp;T <STRONG>tput</STRONG> guesses the type of its <EM>capname</EM> operands by seeing if all
+ of the characters are numeric, or not.
+
+ Most implementations which provide support for <EM>capname</EM> operands use
+ the <EM>tparm</EM> function to expand parameters in it. That function
+ expects a mixture of numeric and string parameters, requiring <STRONG>tput</STRONG>
+ to know which type to use.
+
+ This implementation uses a table to determine the parameter types
+ for the standard <EM>capname</EM> operands, and an internal library function
+ to analyze nonstandard <EM>capname</EM> operands.
+
+ This implementation (unlike others) can accept both <EM>termcap</EM> and <EM>ter-</EM>
+ <EM>minfo</EM> names for the <EM>capname</EM> feature, if <EM>termcap</EM> support is compiled in.
+ However, the predefined <EM>termcap</EM> and <EM>terminfo</EM> names have two ambiguities
+ in this case (and the <EM>terminfo</EM> name is assumed):
+
+ <STRONG>o</STRONG> The <EM>termcap</EM> name <STRONG>dl</STRONG> corresponds to the <EM>terminfo</EM> name <STRONG>dl1</STRONG> (delete
+ one line).
+ The <EM>terminfo</EM> name <STRONG>dl</STRONG> corresponds to the <EM>termcap</EM> name <STRONG>DL</STRONG> (delete a
+ given number of lines).
+
+ <STRONG>o</STRONG> The <EM>termcap</EM> name <STRONG>ed</STRONG> corresponds to the <EM>terminfo</EM> name <STRONG>rmdc</STRONG> (end
+ delete mode).
+ The <EM>terminfo</EM> name <STRONG>ed</STRONG> corresponds to the <EM>termcap</EM> name <STRONG>cd</STRONG> (clear to
+ end of screen).
+
+ The <STRONG>longname</STRONG> and <STRONG>-S</STRONG> options, and the parameter-substitution features
+ used in the <STRONG>cup</STRONG> example, were not supported in BSD curses before
+ 4.3reno (1989) or in AT&amp;T/USL curses before SVr4 (1988).
+
+ IEEE Std 1003.1/The Open Group Base Specifications Issue 7
+ (POSIX.1-2008) documents only the operands for <STRONG>clear</STRONG>, <STRONG>init</STRONG> and <STRONG>reset</STRONG>.
+ There are a few interesting observations to make regarding that:
+
+ <STRONG>o</STRONG> In this implementation, <STRONG>clear</STRONG> is part of the <EM>capname</EM> support. The
+ others (<STRONG>init</STRONG> and <STRONG>longname</STRONG>) do not correspond to terminal capabili-
+ ties.
+
+ <STRONG>o</STRONG> Other implementations of <STRONG>tput</STRONG> on SVr4-based systems such as
+ Solaris, IRIX64 and HPUX as well as others such as AIX and Tru64
+ provide support for <EM>capname</EM> operands.
+
+ <STRONG>o</STRONG> A few platforms such as FreeBSD recognize termcap names rather than
+ terminfo capability names in their respective <STRONG>tput</STRONG> commands. Since
+ 2010, NetBSD's <STRONG>tput</STRONG> uses terminfo names. Before that, it (like
+ FreeBSD) recognized termcap names.
+
+ Because (apparently) <EM>all</EM> of the certified Unix systems support the full
+ set of capability names, the reasoning for documenting only a few may
+ not be apparent.
+
+ <STRONG>o</STRONG> X/Open Curses Issue 7 documents <STRONG>tput</STRONG> differently, with <EM>capname</EM> and
+ the other features used in this implementation.
+
+ <STRONG>o</STRONG> That is, there are two standards for <STRONG>tput</STRONG>: POSIX (a subset) and
+ X/Open Curses (the full implementation). POSIX documents a subset
+ to avoid the complication of including X/Open Curses and the termi-
+ nal capabilities database.
+
+ <STRONG>o</STRONG> While it is certainly possible to write a <STRONG>tput</STRONG> program without
+ using curses, none of the systems which have a curses implementa-
+ tion provide a <STRONG>tput</STRONG> utility which does not provide the <EM>capname</EM> fea-
+ ture.
+
+ X/Open Curses Issue 7 (2009) is the first version to document utili-
+ ties. However that part of X/Open Curses does not follow existing
+ practice (i.e., Unix features documented in SVID 3):
+
+ <STRONG>o</STRONG> It assigns exit code 4 to "invalid operand", which may be the same
+ as <EM>unknown</EM> <EM>capability</EM>. For instance, the source code for Solaris'
+ xcurses uses the term "invalid" in this case.
+
+ <STRONG>o</STRONG> It assigns exit code 255 to a numeric variable that is not speci-
+ fied in the terminfo database. That likely is a documentation
+ error, confusing the <STRONG>-1</STRONG> written to the standard output for an
+ absent or cancelled numeric value versus an (unsigned) exit code.
+
+ The various Unix systems (AIX, HPUX, Solaris) use the same exit-codes
+ as ncurses.
+
+ NetBSD curses documents different exit codes which do not correspond to
+ either ncurses or X/Open.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
- <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>
+ <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Options">Options</a></li>
+<li><a href="#h3-Commands">Commands</a></li>
+<li><a href="#h3-Aliases">Aliases</a></li>
+<li><a href="#h3-Terminal-Size">Terminal Size</a></li>
+</ul>
+</li>
+<li><a href="#h2-EXAMPLES">EXAMPLES</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-EXIT-CODES">EXIT CODES</a></li>
+<li><a href="#h2-DIAGNOSTICS">DIAGNOSTICS</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/tset.1.html b/doc/html/man/tset.1.html
index 81aabd663afa..e7ea47d485de 100644
--- a/doc/html/man/tset.1.html
+++ b/doc/html/man/tset.1.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free 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,308 +26,394 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: tset.1,v 1.28 2013/07/20 19:40:55 tom Exp @
+ * @Id: tset.1,v 1.54 2018/07/28 21:30:27 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>tset 1</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>tset 1</H1>
-<HR>
+<H1 class="no-header">tset 1</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>
+<STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> General Commands Manual <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>tset</STRONG>, <STRONG>reset</STRONG> - terminal initialization
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>tset</STRONG> [<STRONG>-IQVcqrsw</STRONG>] [<STRONG>-</STRONG>] [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG> <EM>mapping</EM>]
- [<EM>terminal</EM>]
- <STRONG>reset</STRONG> [<STRONG>-IQVcqrsw</STRONG>] [<STRONG>-</STRONG>] [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG> <EM>mapping</EM>]
- [<EM>terminal</EM>]
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <STRONG>tset</STRONG> [<STRONG>-IQVcqrsw</STRONG>] [<STRONG>-</STRONG>] [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG> <EM>mapping</EM>] [<EM>terminal</EM>]
+ <STRONG>reset</STRONG> [<STRONG>-IQVcqrsw</STRONG>] [<STRONG>-</STRONG>] [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG> <EM>mapping</EM>] [<EM>terminal</EM>]
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- <STRONG>Tset</STRONG> initializes terminals. <STRONG>Tset</STRONG> first determines the
- type of terminal that you are using. This determination
- is done as follows, using the first terminal type found.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE><H3><a name="h3-tset---initialization">tset - initialization</a></H3><PRE>
+ This program initializes terminals.
+
+ First, <STRONG>tset</STRONG> retrieves the current terminal mode settings for your ter-
+ minal. It does this by successively testing
+
+ <STRONG>o</STRONG> the standard error,
+
+ <STRONG>o</STRONG> standard output,
+
+ <STRONG>o</STRONG> standard input and
+
+ <STRONG>o</STRONG> ultimately "/dev/tty"
+
+ to obtain terminal settings. Having retrieved these settings, <STRONG>tset</STRONG>
+ remembers which file descriptor to use when updating settings.
+
+ Next, <STRONG>tset</STRONG> determines the type of terminal that you are using. This
+ determination is done as follows, using the first terminal type found.
1. The <STRONG>terminal</STRONG> argument specified on the command line.
2. The value of the <STRONG>TERM</STRONG> environmental variable.
- 3. (BSD systems only.) The terminal type associated with
- the standard error output device in the <EM>/etc/ttys</EM> file.
- (On System-V-like UNIXes and systems using that conven-
- tion, <EM>getty</EM> does this job by setting <STRONG>TERM</STRONG> according to the
- type passed to it by <EM>/etc/inittab</EM>.)
+ 3. (BSD systems only.) The terminal type associated with the standard
+ error output device in the <EM>/etc/ttys</EM> file. (On System-V-like UNIXes
+ and systems using that convention, <EM>getty</EM> does this job by setting <STRONG>TERM</STRONG>
+ according to the type passed to it by <EM>/etc/inittab</EM>.)
4. The default terminal type, "unknown".
- If the terminal type was not specified on the command-
- line, the <STRONG>-m</STRONG> option mappings are then applied (see the
- section <STRONG>TERMINAL</STRONG> <STRONG>TYPE</STRONG> <STRONG>MAPPING</STRONG> for more information).
- Then, if the terminal type begins with a question mark
- ("?"), the user is prompted for confirmation of the termi-
- nal type. An empty response confirms 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 ter-
- minal 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.
- Use the <STRONG>-c</STRONG> or <STRONG>-w</STRONG> option to select only the window sizing
- versus the other initialization. If neither option is
- given, both are assumed.
-
- When invoked as <STRONG>reset</STRONG>, <STRONG>tset</STRONG> 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
-
- <STRONG>&lt;LF&gt;reset&lt;LF&gt;</STRONG>
-
- (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.
+ If the terminal type was not specified on the command-line, the <STRONG>-m</STRONG>
+ option mappings are then applied (see the section <STRONG>TERMINAL</STRONG> <STRONG>TYPE</STRONG> <STRONG>MAPPING</STRONG>
+ for more information). Then, if the terminal type begins with a ques-
+ tion mark ("?"), the user is prompted for confirmation of the terminal
+ type. An empty response confirms the type, or, another type can be
+ entered to specify a new type. Once the terminal type has been deter-
+ mined, the terminal description for the terminal is retrieved. If no
+ terminal description is found for the type, the user is prompted for
+ another terminal type.
+
+ Once the terminal description is retrieved,
+
+ <STRONG>o</STRONG> if the "<STRONG>-w</STRONG>" option is enabled, <STRONG>tset</STRONG> may update the terminal's win-
+ dow size.
+
+ If the window size cannot be obtained from the operating system,
+ but the terminal description (or environment, e.g., <STRONG>LINES</STRONG> and <STRONG>COL-</STRONG>
+ <STRONG>UMNS</STRONG> variables specify this), use this to set the operating sys-
+ tem's notion of the window size.
+
+ <STRONG>o</STRONG> if the "<STRONG>-c</STRONG>" option is enabled, the backspace, interrupt and line
+ kill characters (among many other things) are set
+
+ <STRONG>o</STRONG> unless the "<STRONG>-I</STRONG>" option is enabled, the terminal and tab <EM>initializa-</EM>
+ <EM>tion</EM> strings are sent to the standard error output, and <STRONG>tset</STRONG> waits
+ one second (in case a hardware reset was issued).
+
+ <STRONG>o</STRONG> 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.
+
+
+</PRE><H3><a name="h3-reset---reinitialization">reset - reinitialization</a></H3><PRE>
+ When invoked as <STRONG>reset</STRONG>, <STRONG>tset</STRONG> sets the terminal modes to "sane" values:
+
+ <STRONG>o</STRONG> sets cooked and echo modes,
+
+ <STRONG>o</STRONG> turns off cbreak and raw modes,
+ <STRONG>o</STRONG> turns on newline translation and
+
+ <STRONG>o</STRONG> resets any unset special characters to their default values
+
+ before doing the terminal initialization described above. Also, rather
+ than using the terminal <EM>initialization</EM> strings, it uses the terminal
+ <EM>reset</EM> strings.
+
+ The <STRONG>reset</STRONG> command is useful after a program dies leaving a terminal in
+ an abnormal state:
+
+ <STRONG>o</STRONG> you may have to type
+
+ <EM>&lt;LF&gt;</EM><STRONG>reset</STRONG><EM>&lt;LF&gt;</EM>
+
+ (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.
+
+ <STRONG>o</STRONG> Also, the terminal will often not echo the command.
+
+
+</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
The options are as follows:
<STRONG>-c</STRONG> Set control characters and modes.
<STRONG>-e</STRONG> Set the erase character to <EM>ch</EM>.
- <STRONG>-I</STRONG> Do not send the terminal or tab initialization
- strings to the terminal.
+ <STRONG>-I</STRONG> Do not send the terminal or tab initialization strings to the ter-
+ minal.
<STRONG>-i</STRONG> Set the interrupt character to <EM>ch</EM>.
<STRONG>-k</STRONG> Set the line kill character to <EM>ch</EM>.
- <STRONG>-m</STRONG> Specify a mapping from a port type to a terminal.
- See the section <STRONG>TERMINAL</STRONG> <STRONG>TYPE</STRONG> <STRONG>MAPPING</STRONG> for more infor-
- mation.
+ <STRONG>-m</STRONG> Specify a mapping from a port type to a terminal. See the section
+ <STRONG>TERMINAL</STRONG> <STRONG>TYPE</STRONG> <STRONG>MAPPING</STRONG> for more information.
- <STRONG>-Q</STRONG> Do not display any values for the erase, interrupt
- and line kill characters. Normally <STRONG>tset</STRONG> displays the
- values for control characters which differ from the
- system's default values.
+ <STRONG>-Q</STRONG> Do not display any values for the erase, interrupt and line kill
+ characters. Normally <STRONG>tset</STRONG> displays the values for control charac-
+ ters which differ from the system's default values.
- <STRONG>-q</STRONG> 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.
+ <STRONG>-q</STRONG> The terminal type is displayed to the standard output, and the
+ terminal is not initialized in any way. The option "-" by itself
+ is equivalent but archaic.
<STRONG>-r</STRONG> Print the terminal type to the standard error output.
- <STRONG>-s</STRONG> Print the sequence of shell commands to initialize
- the environment variable <STRONG>TERM</STRONG> to the standard output.
- See the section <STRONG>SETTING</STRONG> <STRONG>THE</STRONG> <STRONG>ENVIRONMENT</STRONG> for details.
-
- <STRONG>-V</STRONG> reports the version of ncurses which was used in this
- program, and exits.
-
- <STRONG>-w</STRONG> Resize the window to match the size deduced via
- <STRONG>setupterm</STRONG>. Normally this has no effect, unless
- <STRONG>setupterm</STRONG> is not able to detect the window size.
+ <STRONG>-s</STRONG> Print the sequence of shell commands to initialize the environment
+ variable <STRONG>TERM</STRONG> to the standard output. See the section <STRONG>SETTING</STRONG> <STRONG>THE</STRONG>
+ <STRONG>ENVIRONMENT</STRONG> for details.
- The arguments for the <STRONG>-e</STRONG>, <STRONG>-i</STRONG>, and <STRONG>-k</STRONG> 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".
+ <STRONG>-V</STRONG> reports the version of ncurses which was used in this program, and
+ exits.
+ <STRONG>-w</STRONG> Resize the window to match the size deduced via <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>.
+ Normally this has no effect, unless <STRONG>setupterm</STRONG> is not able to
+ detect the window size.
-</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 <STRONG>-s</STRONG> option.
-
- When the <STRONG>-s</STRONG> option is specified, the commands to enter the
- information into the shell's environment are written to
- the standard output. If the <STRONG>SHELL</STRONG> environmental variable
- ends in "csh", the commands are for <STRONG>csh</STRONG>, otherwise, they
- are for <STRONG>sh</STRONG>. Note, the <STRONG>csh</STRONG> commands set and unset the
- shell variable <STRONG>noglob</STRONG>, leaving it unset. The following
- line in the <STRONG>.login</STRONG> or <STRONG>.profile</STRONG> files will initialize the
- environment correctly:
-
- eval `tset -s options ... `
+ The arguments for the <STRONG>-e</STRONG>, <STRONG>-i</STRONG>, and <STRONG>-k</STRONG> options may either be entered as
+ actual characters or by using the "hat" notation, i.e., control-h may
+ be specified as "^H" or "^h".
-
-</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 <EM>/etc/ttys</EM> file or the <STRONG>TERM</STRONG> environmental
- variable is often something generic like <STRONG>network</STRONG>, <STRONG>dialup</STRONG>,
- or <STRONG>unknown</STRONG>. When <STRONG>tset</STRONG> 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 <STRONG>-m</STRONG> option is to map from some set of
- conditions to a terminal type, that is, to tell <STRONG>tset</STRONG> "If
- I'm on this port at a particular speed, guess that I'm on
- that kind of terminal".
-
- The argument to the <STRONG>-m</STRONG> 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 <STRONG>-m</STRONG> 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:
- <STRONG>dialup&gt;9600:vt100</STRONG>. 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 <STRONG>dialup</STRONG>, and the baud rate
- is greater than 9600 baud, a terminal type of <STRONG>vt100</STRONG> 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, <STRONG>-m</STRONG>
- <STRONG>dialup:vt100</STRONG> <STRONG>-m</STRONG> <STRONG>:?xterm</STRONG> 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 <STRONG>-m</STRONG> option
- argument. Also, to avoid problems with meta-characters,
- it is suggested that the entire <STRONG>-m</STRONG> option argument be
- placed within single quote characters, and that <STRONG>csh</STRONG> users
- insert a backslash character ("\") before any exclamation
- marks ("!").
+ If neither <STRONG>-c</STRONG> or <STRONG>-w</STRONG> is given, both options are assumed.
-</PRE>
-<H2>HISTORY</H2><PRE>
- The <STRONG>tset</STRONG> command appeared in BSD 3.0. The <STRONG>ncurses</STRONG> 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><a name="h2-SETTING-THE-ENVIRONMENT">SETTING THE ENVIRONMENT</a></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 <STRONG>-s</STRONG> option.
+ When the <STRONG>-s</STRONG> option is specified, the commands to enter the information
+ into the shell's environment are written to the standard output. If
+ the <STRONG>SHELL</STRONG> environmental variable ends in "csh", the commands are for
+ <STRONG>csh</STRONG>, otherwise, they are for <STRONG>sh</STRONG>. Note, the <STRONG>csh</STRONG> commands set and unset
+ the shell variable <STRONG>noglob</STRONG>, leaving it unset. The following line in the
+ <STRONG>.login</STRONG> or <STRONG>.profile</STRONG> files will initialize the environment correctly:
-</PRE>
-<H2>COMPATIBILITY</H2><PRE>
- The <STRONG>tset</STRONG> utility has been provided for backward-compati-
- bility with BSD environments (under most modern UNIXes,
- <STRONG>/etc/inittab</STRONG> and <STRONG>getty(1)</STRONG> can set <STRONG>TERM</STRONG> appropriately for
- each dial-up line; this obviates what was <STRONG>tset</STRONG>'s most
- important use). This implementation behaves like 4.4BSD
- tset, with a few exceptions specified here.
-
- The <STRONG>-S</STRONG> option of BSD tset no longer works; it prints an
- error message to stderr and dies. The <STRONG>-s</STRONG> option only sets
- <STRONG>TERM</STRONG>, not <STRONG>TERMCAP</STRONG>. Both of these changes are because the
- <STRONG>TERMCAP</STRONG> variable is no longer supported under terminfo-
- based <STRONG>ncurses</STRONG>, which makes <STRONG>tset</STRONG> <STRONG>-S</STRONG> 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 <STRONG>-A</STRONG>, <STRONG>-E</STRONG>, <STRONG>-h</STRONG>, <STRONG>-u</STRONG> and <STRONG>-v</STRONG> options were deleted from the
- <STRONG>tset</STRONG> utility in 4.4BSD. None of them were documented in
- 4.3BSD and all are of limited utility at best. The <STRONG>-a</STRONG>,
- <STRONG>-d</STRONG>, and <STRONG>-p</STRONG> 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 <STRONG>-m</STRONG> option instead. The <STRONG>-n</STRONG>
- option remains, but has no effect. The <STRONG>-adnp</STRONG> options are
- therefore omitted from the usage summary above.
-
- It is still permissible to specify the <STRONG>-e</STRONG>, <STRONG>-i</STRONG>, and <STRONG>-k</STRONG>
- options without arguments, although it is strongly recom-
- mended that such usage be fixed to explicitly specify the
- character.
-
- As of 4.4BSD, executing <STRONG>tset</STRONG> as <STRONG>reset</STRONG> no longer implies
- the <STRONG>-Q</STRONG> option. Also, the interaction between the - option
- and the <EM>terminal</EM> argument in some historic implementations
- of <STRONG>tset</STRONG> has been removed.
+ eval `tset -s options ... `
-</PRE>
-<H2>ENVIRONMENT</H2><PRE>
+</PRE><H2><a name="h2-TERMINAL-TYPE-MAPPING">TERMINAL TYPE MAPPING</a></H2><PRE>
+ When the terminal is not hardwired into the system (or the current sys-
+ tem information is incorrect) the terminal type derived from the
+ <EM>/etc/ttys</EM> file or the <STRONG>TERM</STRONG> environmental variable is often something
+ generic like <STRONG>network</STRONG>, <STRONG>dialup</STRONG>, or <STRONG>unknown</STRONG>. When <STRONG>tset</STRONG> is used in a
+ startup script it is often desirable to provide information about the
+ type of terminal used on such ports.
+
+ The <STRONG>-m</STRONG> options maps from some set of conditions to a terminal type,
+ that is, to tell <STRONG>tset</STRONG> "If I'm on this port at a particular speed, guess
+ that I'm on that kind of terminal".
+
+ The argument to the <STRONG>-m</STRONG> option consists of an optional port type, an
+ optional operator, an optional baud rate specification, an optional
+ colon (":") character and a terminal type. The port type is a string
+ (delimited by either the operator or the colon character). The opera-
+ tor 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 con-
+ trol terminal). The terminal type is a string.
+
+ If the terminal type is not specified on the command line, the <STRONG>-m</STRONG> map-
+ pings 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
+ applicable mapping is used.
+
+ For example, consider the following mapping: <STRONG>dialup&gt;9600:vt100</STRONG>. The
+ port type is dialup , the operator is &gt;, the baud rate specification is
+ 9600, and the terminal type is vt100. The result of this mapping is to
+ specify that if the terminal type is <STRONG>dialup</STRONG>, and the baud rate is
+ greater than 9600 baud, a terminal type of <STRONG>vt100</STRONG> 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, <STRONG>-m</STRONG> <STRONG>dialup:vt100</STRONG> <STRONG>-m</STRONG> <STRONG>:?xterm</STRONG> 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 <STRONG>-m</STRONG> option argument.
+ Also, to avoid problems with meta-characters, it is suggested that the
+ entire <STRONG>-m</STRONG> option argument be placed within single quote characters, and
+ that <STRONG>csh</STRONG> users insert a backslash character ("\") before any exclama-
+ tion marks ("!").
+
+
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+ A <STRONG>reset</STRONG> command appeared in 2BSD (April 1979), written by Kurt Shoens.
+ This program set the <EM>erase</EM> and <EM>kill</EM> characters to <STRONG>^H</STRONG> (backspace) and <STRONG>@</STRONG>
+ respectively. Mark Horton improved that in 3BSD (October 1979), adding
+ <EM>intr</EM>, <EM>quit</EM>, <EM>start</EM>/<EM>stop</EM> and <EM>eof</EM> characters as well as changing the pro-
+ gram to avoid modifying any user settings.
+
+ Later in 4.1BSD (December 1980), Mark Horton added a call to the <STRONG>tset</STRONG>
+ program using the <STRONG>-I</STRONG> and <STRONG>-Q</STRONG> options, i.e., using that to improve the
+ terminal modes. With those options, that version of <STRONG>reset</STRONG> did not use
+ the termcap database.
+
+ A separate <STRONG>tset</STRONG> command was provided in 2BSD by Eric Allman. While the
+ oldest published source (from 1979) provides both <STRONG>tset</STRONG> and <STRONG>reset</STRONG>, All-
+ man's comments in the 2BSD source code indicate that he began work in
+ October 1977, continuing development over the next few years.
+
+ In September 1980, Eric Allman modified <STRONG>tset</STRONG>, adding the code from the
+ existing "reset" feature when <STRONG>tset</STRONG> was invoked as <STRONG>reset</STRONG>. Rather than
+ simply copying the existing program, in this merged version, <STRONG>tset</STRONG> used
+ the termcap database to do additional (re)initialization of the termi-
+ nal. This version appeared in 4.1cBSD, late in 1982.
+
+ Other developers (e.g., Keith Bostic and Jim Bloom) continued to modify
+ <STRONG>tset</STRONG> until 4.4BSD was released in 1993.
+
+ The <STRONG>ncurses</STRONG> implementation was lightly adapted from the 4.4BSD sources
+ for a terminfo environment by Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;.
+
+
+</PRE><H2><a name="h2-COMPATIBILITY">COMPATIBILITY</a></H2><PRE>
+ Neither IEEE Std 1003.1/The Open Group Base Specifications Issue 7
+ (POSIX.1-2008) nor X/Open Curses Issue 7 documents <STRONG>tset</STRONG> or <STRONG>reset</STRONG>.
+
+ The AT&amp;T <STRONG>tput</STRONG> utility (AIX, HPUX, Solaris) incorporated the terminal-
+ mode manipulation as well as termcap-based features such as resetting
+ tabstops from <STRONG>tset</STRONG> in BSD (4.1c), presumably with the intention of mak-
+ ing <STRONG>tset</STRONG> obsolete. However, each of those systems still provides <STRONG>tset</STRONG>.
+ In fact, the commonly-used <STRONG>reset</STRONG> utility is always an alias for <STRONG>tset</STRONG>.
+
+ The <STRONG>tset</STRONG> utility provides for backward-compatibility with BSD environ-
+ ments (under most modern UNIXes, <STRONG>/etc/inittab</STRONG> and <STRONG>getty(1)</STRONG> can set <STRONG>TERM</STRONG>
+ appropriately for each dial-up line; this obviates what was <STRONG>tset</STRONG>'s most
+ important use). This implementation behaves like 4.4BSD <STRONG>tset</STRONG>, with a
+ few exceptions specified here.
+
+ A few options are different because the <STRONG>TERMCAP</STRONG> variable is no longer
+ supported under terminfo-based <STRONG>ncurses</STRONG>:
+
+ <STRONG>o</STRONG> The <STRONG>-S</STRONG> option of BSD <STRONG>tset</STRONG> no longer works; it prints an error mes-
+ sage to the standard error and dies.
+
+ <STRONG>o</STRONG> The <STRONG>-s</STRONG> option only sets <STRONG>TERM</STRONG>, not <STRONG>TERMCAP</STRONG>.
+
+ There was an undocumented 4.4BSD feature that invoking <STRONG>tset</STRONG> via a link
+ named "TSET" (or via any other name beginning with an upper-case let-
+ ter) set the terminal to use upper-case only. This feature has been
+ omitted.
+
+ The <STRONG>-A</STRONG>, <STRONG>-E</STRONG>, <STRONG>-h</STRONG>, <STRONG>-u</STRONG> and <STRONG>-v</STRONG> options were deleted from the <STRONG>tset</STRONG> utility in
+ 4.4BSD. None of them were documented in 4.3BSD and all are of limited
+ utility at best. The <STRONG>-a</STRONG>, <STRONG>-d</STRONG>, and <STRONG>-p</STRONG> options are similarly not docu-
+ mented 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 <STRONG>-m</STRONG> option instead. The <STRONG>-a</STRONG>, <STRONG>-d</STRONG>, and <STRONG>-p</STRONG> options
+ are therefore omitted from the usage summary above.
+
+ Very old systems, e.g., 3BSD, used a different terminal driver which
+ was replaced in 4BSD in the early 1980s. To accommodate these older
+ systems, the 4BSD <STRONG>tset</STRONG> provided a <STRONG>-n</STRONG> option to specify that the new
+ terminal driver should be used. This implementation does not provide
+ that choice.
+
+ It is still permissible to specify the <STRONG>-e</STRONG>, <STRONG>-i</STRONG>, and <STRONG>-k</STRONG> options without
+ arguments, although it is strongly recommended that such usage be fixed
+ to explicitly specify the character.
+
+ As of 4.4BSD, executing <STRONG>tset</STRONG> as <STRONG>reset</STRONG> no longer implies the <STRONG>-Q</STRONG> option.
+ Also, the interaction between the - option and the <EM>terminal</EM> argument in
+ some historic implementations of <STRONG>tset</STRONG> has been removed.
+
+ The <STRONG>-c</STRONG> and <STRONG>-w</STRONG> options are not found in earlier implementations. How-
+ ever, a different window size-change feature was provided in 4.4BSD.
+
+ <STRONG>o</STRONG> In 4.4BSD, <STRONG>tset</STRONG> uses the window size from the termcap description
+ to set the window size if <STRONG>tset</STRONG> is not able to obtain the window
+ size from the operating system.
+
+ <STRONG>o</STRONG> In ncurses, <STRONG>tset</STRONG> obtains the window size using <STRONG>setupterm</STRONG>, which may
+ be from the operating system, the <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> environment
+ variables or the terminal description.
+
+ Obtaining the window size from the terminal description is common to
+ both implementations, but considered obsolescent. Its only practical
+ use is for hardware terminals. Generally speaking, a window size would
+ be unset only if there were some problem obtaining the value from the
+ operating system (and <STRONG>setupterm</STRONG> would still fail). For that reason,
+ the <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> environment variables may be useful for working
+ around window-size problems. Those have the drawback that if the win-
+ dow is resized, those variables must be recomputed and reassigned. To
+ do this more easily, use the <STRONG><A HREF="resize.1.html">resize(1)</A></STRONG> program.
+
+
+</PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE>
The <STRONG>tset</STRONG> command uses these environment variables:
SHELL
- tells <STRONG>tset</STRONG> whether to initialize <STRONG>TERM</STRONG> using <STRONG>sh</STRONG> or <STRONG>csh</STRONG>
- syntax.
+ tells <STRONG>tset</STRONG> whether to initialize <STRONG>TERM</STRONG> using <STRONG>sh</STRONG> or <STRONG>csh</STRONG> syntax.
- TERM Denotes your terminal type. Each terminal type is
- distinct, though many are similar.
+ TERM Denotes your terminal type. Each terminal type is distinct,
+ though many are similar.
TERMCAP
- may denote the location of a termcap database. If it
- is not an absolute pathname, e.g., begins with a `/',
- <STRONG>tset</STRONG> removes the variable from the environment before
- looking for the terminal description.
+ may denote the location of a termcap database. If it is not an
+ absolute pathname, e.g., begins with a "/", <STRONG>tset</STRONG> removes the vari-
+ able from the environment before looking for the terminal descrip-
+ tion.
-</PRE>
-<H2>FILES</H2><PRE>
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
/etc/ttys
- system port name to terminal type mapping database
- (BSD versions only).
+ system port name to terminal type mapping database (BSD versions
+ only).
/usr/share/terminfo
terminal capability database
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG>csh(1)</STRONG>, <STRONG>sh(1)</STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG>tty(4)</STRONG>,
- <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG>ttys(5)</STRONG>, <STRONG>environ(7)</STRONG>
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG>csh(1)</STRONG>, <STRONG>sh(1)</STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG>tty(4)</STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>,
+ <STRONG>ttys(5)</STRONG>, <STRONG>environ(7)</STRONG>
- This describes <STRONG>ncurses</STRONG> version 5.9 (patch 20131221).
+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20200118).
- <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>
+ <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-tset---initialization">tset - initialization</a></li>
+<li><a href="#h3-reset---reinitialization">reset - reinitialization</a></li>
+</ul>
+</li>
+<li><a href="#h2-OPTIONS">OPTIONS</a></li>
+<li><a href="#h2-SETTING-THE-ENVIRONMENT">SETTING THE ENVIRONMENT</a></li>
+<li><a href="#h2-TERMINAL-TYPE-MAPPING">TERMINAL TYPE MAPPING</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-COMPATIBILITY">COMPATIBILITY</a></li>
+<li><a href="#h2-ENVIRONMENT">ENVIRONMENT</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/man/user_caps.5.html b/doc/html/man/user_caps.5.html
new file mode 100644
index 000000000000..3c3a90243221
--- /dev/null
+++ b/doc/html/man/user_caps.5.html
@@ -0,0 +1,400 @@
+<!--
+ ****************************************************************************
+ * Copyright (c) 2017-2019,2020 Free 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: user_caps.5,v 1.11 2020/01/19 02:01:39 tom Exp @
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>user_caps 5</TITLE>
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
+<BODY>
+<H1 class="no-header">user_caps 5</H1>
+<PRE>
+<STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG> File Formats Manual <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>
+
+
+
+
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ user_caps - user-defined terminfo capabilities
+
+
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <STRONG>tic</STRONG> <STRONG>-x,</STRONG> <STRONG>infocmp</STRONG> <STRONG>-x</STRONG>
+
+
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE><H3><a name="h3-Background">Background</a></H3><PRE>
+ Before ncurses 5.0, terminfo databases used a <EM>fixed</EM> <EM>repertoire</EM> of ter-
+ minal capabilities designed for the SVr2 terminal database in 1984, and
+ extended in stages through SVr4 (1989), and standardized in the Single
+ Unix Specification beginning in 1995.
+
+ Most of the <EM>extensions</EM> in this fixed repertoire were additions to the
+ tables of boolean, numeric and string capabilities. Rather than change
+ the meaning of an existing capability, a new name was added. The ter-
+ minfo database uses a binary format; binary compatibility was ensured
+ by using a header which gave the number of items in the tables for each
+ type of capability. The standardization was incomplete:
+
+ <STRONG>o</STRONG> The <EM>binary</EM> <EM>format</EM> itself is not described in the X/Open Curses doc-
+ umentation. Only the <EM>source</EM> <EM>format</EM> is described.
+
+ Library developers rely upon the SVr4 documentation, and reverse-
+ engineering the compiled terminfo files to match the binary format.
+
+ <STRONG>o</STRONG> Lacking a standard for the binary format, most implementations copy
+ the SVr2 binary format, which uses 16-bit signed integers, and is
+ limited to 4096-byte entries.
+
+ The format cannot represent very large numeric capabilities, nor
+ can it represent large numbers of special keyboard definitions.
+
+ <STRONG>o</STRONG> The tables of capability names differ between implementations.
+
+ Although they <EM>may</EM> provide all of the standard capability names, the
+ position in the tables differs because some features were added as
+ needed, while others were added (out of order) to comply with
+ X/Open Curses.
+
+ While ncurses' repertoire of predefined capabilities is closest to
+ Solaris, Solaris's terminfo database has a few differences from the
+ list published by X/Open Curses. For example, ncurses can be con-
+ figured with tables which match the terminal databases for AIX, HP-
+ UX or OSF/1, rather than the default Solaris-like configuration.
+
+ <STRONG>o</STRONG> In SVr4 curses and ncurses, the terminal database is defined at
+ compile-time using a text file which lists the different terminal
+ capabilities.
+
+ In principle, the text-file can be extended, but doing this
+ requires recompiling and reinstalling the library. The text-file
+ used in ncurses for terminal capabilities includes details for var-
+ ious systems past the documented X/Open Curses features. For exam-
+ ple, ncurses supports these capabilities in each configuration:
+
+ memory_lock
+ (meml) lock memory above cursor
+
+ memory_unlock
+ (memu) unlock memory
+
+ box_chars_1
+ (box1) box characters primary set
+
+ The memory lock/unlock capabilities were included because they were
+ used in the X11R6 terminal description for <STRONG>xterm</STRONG>. The <EM>box1</EM> capa-
+ bility is used in tic to help with terminal descriptions written
+ for AIX.
+
+ During the 1990s, some users were reluctant to use terminfo in spite of
+ its performance advantages over termcap:
+
+ <STRONG>o</STRONG> The fixed repertoire prevented users from adding features for unan-
+ ticipated terminal improvements (or required them to reuse existing
+ capabilities as a workaround).
+
+ <STRONG>o</STRONG> The limitation to 16-bit signed integers was also mentioned.
+ Because termcap stores everything as a string, it could represent
+ larger numbers.
+
+ Although termcap's extensibility was rarely used (it was never the
+ <EM>speaker</EM> who had actually used the feature), the criticism had a point.
+ ncurses 5.0 provided a way to detect nonstandard capabilities, deter-
+ mine their type and optionally store and retrieve them in a way which
+ did not interfere with other applications. These are referred to as
+ <EM>user-defined</EM> <EM>capabilities</EM> because no modifications to the toolset's
+ predefined capability names are needed.
+
+ The ncurses utilities <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> have a command-line option "-x"
+ to control whether the nonstandard capabilities are stored or
+ retrieved. A library function <STRONG>use_extended_names</STRONG> is provided for the
+ same purpose.
+
+ When compiling a terminal database, if "-x" is set, <STRONG>tic</STRONG> will store a
+ user-defined capability if the capability name is not one of the prede-
+ fined names.
+
+ Because ncurses provides a termcap library interface, these user-
+ defined capabilities may be visible to termcap applications:
+
+ <STRONG>o</STRONG> The termcap interface (like all implementations of termcap)
+ requires that the capability names are 2-characters.
+
+ When the capability is simple enough for use in a termcap applica-
+ tion, it is provided as a 2-character name.
+
+ <STRONG>o</STRONG> There are other user-defined capabilities which refer to features
+ not usable in termcap, e.g., parameterized strings that use more
+ than two parameters or use more than the trivial expression support
+ provided by termcap. For these, the terminfo database should have
+ only capability names with 3 or more characters.
+
+ <STRONG>o</STRONG> Some terminals can send distinct strings for special keys (cursor-,
+ keypad- or function-keys) depending on modifier keys (shift, con-
+ trol, etc.). While terminfo and termcap have a set of 60 prede-
+ fined function-key names, to which a series of keys can be
+ assigned, that is insufficient for more than a dozen keys multi-
+ plied by more than a couple of modifier combinations. The ncurses
+ database uses a convention based on <STRONG>xterm</STRONG> to provide extended spe-
+ cial-key names.
+
+ Fitting that into termcap's limitation of 2-character names would
+ be pointless. These extended keys are available only with ter-
+ minfo.
+
+
+</PRE><H3><a name="h3-Recognized-capabilities">Recognized capabilities</a></H3><PRE>
+ The ncurses library uses the user-definable capabilities. While the
+ terminfo database may have other extensions, ncurses makes explicit
+ checks for these:
+
+ AX <EM>boolean</EM>, asserts that the terminal interprets SGR 39 and SGR 49
+ by resetting the foreground and background color, respectively,
+ to the default.
+
+ This is a feature recognized by the <STRONG>screen</STRONG> program as well.
+
+ E3 <EM>string</EM>, tells how to clear the terminal's scrollback buffer.
+ When present, the <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG> program sends this before clearing the
+ terminal.
+
+ The command "<STRONG>tput</STRONG> <STRONG>clear</STRONG>" does the same thing.
+
+ RGB
+ <EM>boolean</EM>, <EM>number</EM> <STRONG>or</STRONG> <EM>string</EM>, to assert that the <STRONG>set_a_foreground</STRONG>
+ and <STRONG>set_a_background</STRONG> capabilities correspond to <EM>direct</EM> <EM>colors</EM>,
+ using an RGB (red/green/blue) convention. This capability allows
+ the <STRONG>color_content</STRONG> function to return appropriate values without
+ requiring the application to initialize colors using <STRONG>init_color</STRONG>.
+
+ The capability type determines the values which ncurses sees:
+
+ <EM>boolean</EM>
+ implies that the number of bits for red, green and blue are
+ the same. Using the maximum number of colors, ncurses adds
+ two, divides that sum by three, and assigns the result to red,
+ green and blue in that order.
+
+ If the number of bits needed for the number of colors is not a
+ multiple of three, the blue (and green) components lose in
+ comparison to red.
+
+ <EM>number</EM>
+ tells ncurses what result to add to red, green and blue. If
+ ncurses runs out of bits, blue (and green) lose just as in the
+ <EM>boolean</EM> case.
+
+ <EM>string</EM>
+ explicitly list the number of bits used for red, green and
+ blue components as a slash-separated list of decimal integers.
+
+ Because there are several RGB encodings in use, applications
+ which make assumptions about the number of bits per color are
+ unlikely to work reliably. As a trivial case, for example, one
+ could define <STRONG>RGB#1</STRONG> to represent the standard eight ANSI colors,
+ i.e., one bit per color.
+
+ U8 <EM>number</EM>, asserts that ncurses must use Unicode values for line-
+ drawing characters, and that it should ignore the alternate char-
+ acter set capabilities when the locale uses UTF-8 encoding. For
+ more information, see the discussion of <STRONG>NCURSES_NO_UTF8_ACS</STRONG> in
+ <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.
+
+ Set this capability to a nonzero value to enable it.
+
+ XM <EM>string</EM>, override ncurses's built-in string which enables/disables
+ <STRONG>xterm</STRONG> mouse mode.
+
+ ncurses sends a character sequence to the terminal to initialize
+ mouse mode, and when the user clicks the mouse buttons or (in
+ certain modes) moves the mouse, handles the characters sent back
+ by the terminal to tell it what was done with the mouse.
+
+ The mouse protocol is enabled when the <EM>mask</EM> passed in the <STRONG>mouse-</STRONG>
+ <STRONG>mask</STRONG> function is nonzero. By default, ncurses handles the
+ responses for the X11 xterm mouse protocol. It also knows about
+ the <EM>SGR</EM> <EM>1006</EM> xterm mouse protocol, but must to be told to look
+ for this specifically. It will not be able to guess which mode
+ is used, because the responses are enough alike that only confu-
+ sion would result.
+
+ The <STRONG>XM</STRONG> capability has a single parameter. If nonzero, the mouse
+ protocol should be enabled. If zero, the mouse protocol should
+ be disabled. ncurses inspects this capability if it is present,
+ to see whether the 1006 protocol is used. If so, it expects the
+ responses to use the <EM>SGR</EM> <EM>1006</EM> xterm mouse protocol.
+
+ The xterm mouse protocol is used by other terminal emulators.
+ The terminal database uses building-blocks for the various xterm
+ mouse protocols which can be used in customized terminal descrip-
+ tions.
+
+ The terminal database building blocks for this mouse feature also
+ have an experimental capability <EM>xm</EM>. The "xm" capability
+ describes the mouse response. Currently there is no interpreter
+ which would use this information to make the mouse support com-
+ pletely data-driven.
+
+ <EM>xm</EM> shows the format of the mouse responses. In this experimental
+ capability, the parameters are
+
+ <EM>p1</EM> y-ordinate
+
+ <EM>p2</EM> x-ordinate
+
+ <EM>p3</EM> button
+
+ <EM>p4</EM> state, e.g., pressed or released
+
+ <EM>p5</EM> y-ordinate starting region
+
+ <EM>p6</EM> x-ordinate starting region
+
+ <EM>p7</EM> y-ordinate ending region
+
+ <EM>p8</EM> x-ordinate ending region
+
+ Here are examples from the terminal database for the most com-
+ monly used xterm mouse protocols:
+
+ xterm+x11mouse|X11 xterm mouse protocol,
+ kmous=\E[M, XM=\E[?1000%?%p1%{1}%=%th%el%;,
+ xm=\E[M
+ %?%p4%t%p3%e%{3}%;%' '%+%c
+ %p2%'!'%+%c
+ %p1%'!'%+%c,
+
+ xterm+sm+1006|xterm SGR-mouse,
+ kmous=\E[&lt;, XM=\E[?1006;1000%?%p1%{1}%=%th%el%;,
+ xm=\E[&lt;%i%p3%d;
+ %p1%d;
+ %p2%d;
+ %?%p4%tM%em%;,
+
+
+</PRE><H3><a name="h3-Extended-key-definitions">Extended key-definitions</a></H3><PRE>
+ Several terminals provide the ability to send distinct strings for com-
+ binations of modified special keys. There is no standard for what
+ those keys can send.
+
+ Since 1999, <STRONG>xterm</STRONG> has supported <EM>shift</EM>, <EM>control</EM>, <EM>alt</EM>, and <EM>meta</EM> modifiers
+ which produce distinct special-key strings. In a terminal description,
+ ncurses has no special knowledge of the modifiers used. Applications
+ can use the <EM>naming</EM> <EM>convention</EM> established for <STRONG>xterm</STRONG> to find these spe-
+ cial keys in the terminal description.
+
+ Starting with the curses convention that <EM>key</EM> <EM>names</EM> begin with "k" and
+ that shifted special keys are an uppercase name, ncurses' terminal
+ database defines these names to which a suffix is added:
+
+ <EM>Name</EM> <EM>Description</EM>
+ ---------------------------------------------------------------
+ kDC special form of kdch1 (delete character)
+ kDN special form of kcud1 (cursor down)
+ kEND special form of kend (End)
+ kHOM special form of khome (Home)
+ kLFT special form of kcub1 (cursor-left or cursor-back)
+ kNXT special form of knext (Next, or Page-Down)
+ kPRV special form of kprev (Prev, or Page-Up)
+ kRIT special form of kcuf1 (cursor-right, or cursor-forward)
+ kUP special form of kcuu1 (cursor-up)
+
+ These are the suffixes used to denote the modifiers:
+
+ <EM>Value</EM> <EM>Description</EM>
+ ----------------------------------
+ 2 Shift
+ 3 Alt
+ 4 Shift + Alt
+ 5 Control
+ 6 Shift + Control
+ 7 Alt + Control
+ 8 Shift + Alt + Control
+ 9 Meta
+ 10 Meta + Shift
+ 11 Meta + Alt
+ 12 Meta + Alt + Shift
+ 13 Meta + Ctrl
+ 14 Meta + Ctrl + Shift
+ 15 Meta + Ctrl + Alt
+ 16 Meta + Ctrl + Alt + Shift
+
+ None of these are predefined; terminal descriptions can refer to <EM>names</EM>
+ which ncurses will allocate at runtime to <EM>key-codes</EM>. To use these keys
+ in an ncurses program, an application could do this:
+
+ <STRONG>o</STRONG> using a list of extended key <EM>names</EM>, ask <STRONG><A HREF="curs_terminfo.3x.html">tigetstr(3x)</A></STRONG> for their val-
+ ues, and
+
+ <STRONG>o</STRONG> given the list of values, ask <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG> for the <EM>key-code</EM>
+ which would be returned for those keys by <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ The "-x" extension feature of <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> has been adopted in Net-
+ BSD curses. That implementation stores user-defined capabilities, but
+ makes no use of these capabilities itself.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>.
+
+
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+ Thomas E. Dickey
+ beginning with ncurses 5.0 (1999)
+
+
+
+ <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>
+</PRE>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Background">Background</a></li>
+<li><a href="#h3-Recognized-capabilities">Recognized capabilities</a></li>
+<li><a href="#h3-Extended-key-definitions">Extended key-definitions</a></li>
+</ul>
+</li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
+</BODY>
+</HTML>
diff --git a/doc/html/man/wresize.3x.html b/doc/html/man/wresize.3x.html
index 7bdf75f91ccb..ffd941f09386 100644
--- a/doc/html/man/wresize.3x.html
+++ b/doc/html/man/wresize.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
****************************************************************************
- * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,81 +27,86 @@
* authorization. *
****************************************************************************
* Author: Thomas E. Dickey 1996
- * @Id: wresize.3x,v 1.13 2010/12/04 18:40:45 tom Exp @
+ * @Id: wresize.3x,v 1.15 2018/07/28 21:34:06 tom Exp @
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>wresize 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
-<H1>wresize 3x</H1>
-<HR>
+<H1 class="no-header">wresize 3x</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG> <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>
+<STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG> <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>
-</PRE>
-<H2>NAME</H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
<STRONG>wresize</STRONG> - resize a curses window
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
<STRONG>int</STRONG> <STRONG>wresize(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>lines,</STRONG> <STRONG>int</STRONG> <STRONG>columns);</STRONG>
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- This is an extension to the curses library. It reallo-
- cates storage for an <STRONG>ncurses</STRONG> window to adjust its dimen-
- sions 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 rendi-
- tion (as set by <STRONG>wbkgdset</STRONG>) merged into them.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ This is an extension to the curses library. It reallocates storage for
+ an <STRONG>ncurses</STRONG> 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>wbkgdset</STRONG>) merged into them.
-</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 of the dimensions less
- than or equal to zero, or if an error occurs while
- (re)allocating memory for the window.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The function returns the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> 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.
-</PRE>
-<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
- dimensions fit within the actual screen dimensions.
+</PRE><H2><a name="h2-NOTES">NOTES</a></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 dimensions fit within the actual screen dimensions.
-</PRE>
-<H2>SEE ALSO</H2><PRE>
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ It is not possible to resize windows with SVr4 curses.
+
+ This extension of ncurses was introduced in mid-1995. It was adopted
+ in NetBSD curses (2001) and PDCurses (2003).
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>.
-</PRE>
-<H2>AUTHOR</H2><PRE>
- Thomas Dickey (from an equivalent function written in 1988
- for BSD curses).
+</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
+ Thomas Dickey (from an equivalent function written in 1988 for BSD
+ curses).
- <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>
+ <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
</BODY>
</HTML>
diff --git a/doc/html/ncurses-intro.html b/doc/html/ncurses-intro.html
index a6cd40c74ddb..cc1a041eeeaf 100644
--- a/doc/html/ncurses-intro.html
+++ b/doc/html/ncurses-intro.html
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
- $Id: ncurses-intro.html,v 1.46 2013/05/17 23:29:27 tom Exp $
+ $Id: ncurses-intro.html,v 1.53 2019/07/28 16:53:26 tom Exp $
****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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,408 +28,623 @@
* authorization. *
****************************************************************************
-->
-<HTML>
-<HEAD>
-<TITLE>Writing Programs with NCURSES</TITLE>
-<link rev="made" href="mailto:bugs-ncurses@gnu.org">
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</HEAD>
-<BODY>
-
-<H1>Writing Programs with NCURSES</H1>
-
-<BLOCKQUOTE>
-by Eric S. Raymond and Zeyd M. Ben-Halim<BR>
-updates since release 1.9.9e by Thomas Dickey
-</BLOCKQUOTE>
-
-<H1>Contents</H1>
-<UL>
-<LI><A HREF="#introduction">Introduction</A>
-<UL>
-<LI><A HREF="#history">A Brief History of Curses</A>
-<LI><A HREF="#scope">Scope of This Document</A>
-<LI><A HREF="#terminology">Terminology</A>
-</UL>
-<LI><A HREF="#curses">The Curses Library</A>
-<UL>
-<LI><A HREF="#overview">An Overview of Curses</A>
-<UL>
-<LI><A HREF="#compiling">Compiling Programs using Curses</A>
-<LI><A HREF="#updating">Updating the Screen</A>
-<LI><A HREF="#stdscr">Standard Windows and Function Naming Conventions</A>
-<LI><A HREF="#variables">Variables</A>
-</UL>
-<LI><A HREF="#using">Using the Library</A>
-<UL>
-<LI><A HREF="#starting">Starting up</A>
-<LI><A HREF="#output">Output</A>
-<LI><A HREF="#input">Input</A>
-<LI><A HREF="#formschars">Using Forms Characters</A>
-<LI><A HREF="#attributes">Character Attributes and Color</A>
-<LI><A HREF="#mouse">Mouse Interfacing</A>
-<LI><A HREF="#finishing">Finishing Up</A>
-</UL>
-<LI><A HREF="#functions">Function Descriptions</A>
-<UL>
-<LI><A HREF="#init">Initialization and Wrapup</A>
-<LI><A HREF="#flush">Causing Output to the Terminal</A>
-<LI><A HREF="#lowlevel">Low-Level Capability Access</A>
-<LI><A HREF="#debugging">Debugging</A>
-</UL>
-<LI><A HREF="#hints">Hints, Tips, and Tricks</A>
-<UL>
-<LI><A HREF="#caution">Some Notes of Caution</A>
-<LI><A HREF="#leaving">Temporarily Leaving ncurses Mode</A>
-<LI><A HREF="#xterm">Using <CODE>ncurses</CODE> under <CODE>xterm</CODE></A>
-<LI><A HREF="#screens">Handling Multiple Terminal Screens</A>
-<LI><A HREF="#testing">Testing for Terminal Capabilities</A>
-<LI><A HREF="#tuning">Tuning for Speed</A>
-<LI><A HREF="#special">Special Features of <CODE>ncurses</CODE></A>
-</UL>
-<LI><A HREF="#compat">Compatibility with Older Versions</A>
-<UL>
-<LI><A HREF="#refbug">Refresh of Overlapping Windows</A>
-<LI><A HREF="#backbug">Background Erase</A>
-</UL>
-<LI><A HREF="#xsifuncs">XSI Curses Conformance</A>
-</UL>
-<LI><A HREF="#panels">The Panels Library</A>
-<UL>
-<LI><A HREF="#pcompile">Compiling With the Panels Library</A>
-<LI><A HREF="#poverview">Overview of Panels</A>
-<LI><A HREF="#pstdscr">Panels, Input, and the Standard Screen</A>
-<LI><A HREF="#hiding">Hiding Panels</A>
-<LI><A HREF="#pmisc">Miscellaneous Other Facilities</A>
-</UL>
-<LI><A HREF="#menu">The Menu Library</A>
-<UL>
-<LI><A HREF="#mcompile">Compiling with the menu Library</A>
-<LI><A HREF="#moverview">Overview of Menus</A>
-<LI><A HREF="#mselect">Selecting items</A>
-<LI><A HREF="#mdisplay">Menu Display</A>
-<LI><A HREF="#mwindows">Menu Windows</A>
-<LI><A HREF="#minput">Processing Menu Input</A>
-<LI><A HREF="#mmisc">Miscellaneous Other Features</A>
-</UL>
-<LI><A HREF="#form">The Forms Library</A>
-<UL>
-<LI><A HREF="#fcompile">Compiling with the forms Library</A>
-<LI><A HREF="#foverview">Overview of Forms</A>
-<LI><A HREF="#fcreate">Creating and Freeing Fields and Forms</A>
-<LI><A HREF="#fattributes">Fetching and Changing Field Attributes</A>
-<UL>
-<LI><A HREF="#fsizes">Fetching Size and Location Data</A>
-<LI><A HREF="#flocation">Changing the Field Location</A>
-<LI><A HREF="#fjust">The Justification Attribute</A>
-<LI><A HREF="#fdispatts">Field Display Attributes</A>
-<LI><A HREF="#foptions">Field Option Bits</A>
-<LI><A HREF="#fstatus">Field Status</A>
-<LI><A HREF="#fuser">Field User Pointer</A>
-</UL>
-<LI><A HREF="#fdynamic">Variable-Sized Fields</A>
-<LI><A HREF="#fvalidation">Field Validation</A>
-<UL>
-<LI><A HREF="#ftype_alpha">TYPE_ALPHA</A>
-<LI><A HREF="#ftype_alnum">TYPE_ALNUM</A>
-<LI><A HREF="#ftype_enum">TYPE_ENUM</A>
-<LI><A HREF="#ftype_integer">TYPE_INTEGER</A>
-<LI><A HREF="#ftype_numeric">TYPE_NUMERIC</A>
-<LI><A HREF="#ftype_regexp">TYPE_REGEXP</A>
-</UL>
-<LI><A HREF="#fbuffer">Direct Field Buffer Manipulation</A>
-<LI><A HREF="#formattrs">Attributes of Forms</A>
-<LI><A HREF="#fdisplay">Control of Form Display</A>
-<LI><A HREF="#fdriver">Input Processing in the Forms Driver</A>
-<UL>
-<LI><A HREF="#fpage">Page Navigation Requests</A>
-<LI><A HREF="#ffield">Inter-Field Navigation Requests</A>
-<LI><A HREF="#fifield">Intra-Field Navigation Requests</A>
-<LI><A HREF="#fscroll">Scrolling Requests</A>
-<LI><A HREF="#fedit">Field Editing Requests</A>
-<LI><A HREF="#forder">Order Requests</A>
-<LI><A HREF="#fappcmds">Application Commands</A>
-</UL>
-<LI><A HREF="#fhooks">Field Change Hooks</A>
-<LI><A HREF="#ffocus">Field Change Commands</A>
-<LI><A HREF="#frmoptions">Form Options</A>
-<LI><A HREF="#fcustom">Custom Validation Types</A>
-<UL>
-<LI><A HREF="#flinktypes">Union Types</A>
-<LI><A HREF="#fnewtypes">New Field Types</A>
-<LI><A HREF="#fcheckargs">Validation Function Arguments</A>
-<LI><A HREF="#fcustorder">Order Functions For Custom Types</A>
-<LI><A HREF="#fcustprobs">Avoiding Problems</A>
-</UL>
-</UL>
-</UL>
-
-<HR>
-<H1><A NAME="introduction">Introduction</A></H1>
-
-This document is an introduction to programming with <CODE>curses</CODE>. It is
-not an exhaustive reference for the curses Application Programming Interface
-(API); that role is filled by the <CODE>curses</CODE> manual pages. Rather, it
-is intended to help C programmers ease into using the package. <P>
-
-This document is aimed at C applications programmers not yet specifically
-familiar with ncurses. If you are already an experienced <CODE>curses</CODE>
-programmer, you should nevertheless read the sections on
-<A HREF="#mouse">Mouse Interfacing</A>, <A HREF="#debugging">Debugging</A>,
-<A HREF="#compat">Compatibility with Older Versions</A>,
-and <A HREF="#hints">Hints, Tips, and Tricks</A>. These will bring you up
-to speed on the special features and quirks of the <CODE>ncurses</CODE>
-implementation. If you are not so experienced, keep reading. <P>
-
-The <CODE>curses</CODE> package is a subroutine library for
-terminal-independent screen-painting and input-event handling which
-presents a high level screen model to the programmer, hiding differences
-between terminal types and doing automatic optimization of output to change
-one screen full of text into another. <CODE>Curses</CODE> uses terminfo, which
-is a database format that can describe the capabilities of thousands of
-different terminals. <P>
-
-The <CODE>curses</CODE> API may seem something of an archaism on UNIX desktops
-increasingly dominated by X, Motif, and Tcl/Tk. Nevertheless, UNIX still
-supports tty lines and X supports <EM>xterm(1)</EM>; the <CODE>curses</CODE>
-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.
-
-<H2><A NAME="history">A Brief History of Curses</A></H2>
-
-Historically, the first ancestor of <CODE>curses</CODE> was the routines written to
-provide screen-handling for the game <CODE>rogue</CODE>; these used the
-already-existing <CODE>termcap</CODE> database facility for describing terminal
-capabilities. These routines were abstracted into a documented library and
-first released with the early BSD UNIX versions. <P>
-
-System III UNIX from Bell Labs featured a rewritten and much-improved
-<CODE>curses</CODE> library. It introduced the terminfo format. Terminfo is based
-on Berkeley's termcap database, but contains a number of improvements and
-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.
-
-<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:
-<UL>
-<LI>Support for multiple screen highlights (BSD curses could only
-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>
-
-Also, this package makes use of the insert and delete line and character
-features of terminals so equipped, and determines how to optimally use these
-features with no help from the programmer. It allows arbitrary combinations of
-video attributes to be displayed, even on terminals that leave ``magic
-cookies'' on the screen to mark changes in attributes. <P>
-
-The <CODE>ncurses</CODE> package can also capture and use event reports from a
-mouse in some environments (notably, xterm under the X window system). This
-document includes tips for using the mouse. <P>
-
-The <CODE>ncurses</CODE> package was originated by Pavel Curtis. The original
-maintainer of this package is
-<A HREF="mailto:zmbenhal@netcom.com">Zeyd Ben-Halim</A>
-&lt;zmbenhal@netcom.com&gt;.
-<A HREF="mailto:esr@snark.thyrsus.com">Eric S. Raymond</A>
-&lt;esr@snark.thyrsus.com&gt;
-wrote many of the new features in versions after 1.8.1
-and wrote most of this introduction.
-J&uuml;rgen Pfeifer
-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@invisible-island.net">Thomas Dickey</A> (maintainer).
-Contact the current maintainers at
-<A HREF="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</A>.
-<P>
-
-This document also describes the <A HREF="#panels">panels</A> extension library,
-similarly modeled on the SVr4 panels facility. This library allows you to
-associate backing store with each of a stack or deck of overlapping windows,
-and provides operations for moving windows around in the stack that change
-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.
-
-
-<H2><A NAME="terminology">Terminology</A></H2>
-
-In this document, the following terminology is used with reasonable
-consistency:
-
-<DL>
-<DT> window
-<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.
-<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.
-<DT> terminal screen
-<DD>
-The package's idea of what the terminal display currently looks like, i.e.,
-what the user sees now. This is a special screen.
-</DL>
-
-<H1><A NAME="curses">The Curses Library</A></H1>
-
-<H2><A NAME="overview">An Overview of Curses</A></H2>
-
-<H3><A NAME="compiling">Compiling Programs using Curses</A></H3>
-
-In order to use the library, it is necessary to have certain types and
-variables defined. Therefore, the programmer must have a line:
-
-<PRE>
- #include &lt;curses.h&gt;
-</PRE>
-
-at the top of the program source. The screen package uses the Standard I/O
-library, so <CODE>&lt;curses.h&gt;</CODE> includes
-<CODE>&lt;stdio.h&gt;</CODE>. <CODE>&lt;curses.h&gt;</CODE> also includes
-<CODE>&lt;termios.h&gt;</CODE>, <CODE>&lt;termio.h&gt;</CODE>, or
-<CODE>&lt;sgtty.h&gt;</CODE> depending on your system. It is redundant (but
-harmless) for the programmer to do these includes, too. In linking with
-<CODE>curses</CODE> you need to have <CODE>-lncurses</CODE> in your LDFLAGS or on the
-command line. There is no need for any other libraries.
-
-<H3><A NAME="updating">Updating the Screen</A></H3>
-
-In order to update the screen optimally, it is necessary for the routines to
-know what the screen currently looks like and what the programmer wants it to
-look like next. For this purpose, a data type (structure) named WINDOW is
-defined which describes a window image to the routines, including its starting
-position on the screen (the (y, x) coordinates of the upper left hand corner)
-and its size. One of these (called <CODE>curscr</CODE>, for current screen) is a
-screen image of what the terminal currently looks like. Another screen (called
-<CODE>stdscr</CODE>, for standard screen) is provided by default to make changes
-on. <P>
-
-A window is a purely internal representation. It is used to build and store a
-potential image of a portion of the terminal. It doesn't bear any necessary
-relation to what is really on the terminal screen; it's more like a
-scratchpad or write buffer. <P>
-
-To make the section of physical screen corresponding to a window reflect the
-contents of the window structure, the routine <CODE>refresh()</CODE> (or
-<CODE>wrefresh()</CODE> if the window is not <CODE>stdscr</CODE>) is called. <P>
-
-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.
-
-<H3><A NAME="stdscr">Standard Windows and Function Naming Conventions</A></H3>
-
-As hinted above, the routines can use several windows, but two are
-automatically given: <CODE>curscr</CODE>, which knows what the terminal looks like,
-and <CODE>stdscr</CODE>, which is what the programmer wants the terminal to look
-like next. The user should never actually access <CODE>curscr</CODE> directly.
-Changes should be made to through the API, and then the routine
-<CODE>refresh()</CODE> (or <CODE>wrefresh()</CODE>) called. <P>
-
-Many functions are defined to use <CODE>stdscr</CODE> as a default screen. For
-example, to add a character to <CODE>stdscr</CODE>, one calls <CODE>addch()</CODE> with
-the desired character as argument. To write to a different window. use the
-routine <CODE>waddch()</CODE> (for `w'indow-specific addch()) is provided. This
-convention of prepending function names with a `w' when they are to be
-applied to specific windows is consistent. The only routines which do not
-follow it are those for which a window must always be specified. <P>
-
-In order to move the current (y, x) coordinates from one point to another, the
-routines <CODE>move()</CODE> and <CODE>wmove()</CODE> are provided. However, it is
-often desirable to first move and then perform some I/O operation. In order to
-avoid clumsiness, most I/O routines can be preceded by the prefix 'mv' and
-the desired (y, x) coordinates prepended to the arguments to the function. For
-example, the calls
-
-<PRE>
- move(y, x);
- addch(ch);
-</PRE>
-
-can be replaced by
-
-<PRE>
- mvaddch(y, x, ch);
-</PRE>
-
-and
-
-<PRE>
- wmove(win, y, x);
- waddch(win, ch);
-</PRE>
-
-can be replaced by
-
-<PRE>
- mvwaddch(win, y, x, ch);
-</PRE>
-
-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.
-
-<H3><A NAME="variables">Variables</A></H3>
-
-The <CODE>curses</CODE> library sets some variables describing the terminal
-capabilities.
-
-<PRE>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+
+<html>
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for HTML5 for Linux version 5.2.0">
+
+ <title>Writing Programs with NCURSES</title>
+ <link rel="author" href="mailto:bugs-ncurses@gnu.org">
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii">
+</head>
+
+<body>
+ <h1>Writing Programs with NCURSES</h1>
+
+ <blockquote>
+ by Eric S. Raymond and Zeyd M. Ben-Halim<br>
+ updates since release 1.9.9e by Thomas Dickey
+ </blockquote>
+
+ <h1>Contents</h1>
+
+ <ul>
+ <li>
+ <a href="#introduction">Introduction</a>
+
+ <ul>
+ <li><a href="#history">A Brief History of Curses</a></li>
+
+ <li><a href="#scope">Scope of This Document</a></li>
+
+ <li><a href="#terminology">Terminology</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <a href="#curses">The Curses Library</a>
+
+ <ul>
+ <li>
+ <a href="#overview">An Overview of Curses</a>
+
+ <ul>
+ <li><a href="#compiling">Compiling Programs using
+ Curses</a></li>
+
+ <li><a href="#updating">Updating the Screen</a></li>
+
+ <li><a href="#stdscr">Standard Windows and Function
+ Naming Conventions</a></li>
+
+ <li><a href="#variables">Variables</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <a href="#using">Using the Library</a>
+
+ <ul>
+ <li><a href="#starting">Starting up</a></li>
+
+ <li><a href="#output">Output</a></li>
+
+ <li><a href="#input">Input</a></li>
+
+ <li><a href="#formschars">Using Forms Characters</a></li>
+
+ <li><a href="#attributes">Character Attributes and
+ Color</a></li>
+
+ <li><a href="#mouse">Mouse Interfacing</a></li>
+
+ <li><a href="#finishing">Finishing Up</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <a href="#functions">Function Descriptions</a>
+
+ <ul>
+ <li><a href="#init">Initialization and Wrapup</a></li>
+
+ <li><a href="#flush">Causing Output to the Terminal</a></li>
+
+ <li><a href="#lowlevel">Low-Level Capability Access</a></li>
+
+ <li><a href="#debugging">Debugging</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <a href="#hints">Hints, Tips, and Tricks</a>
+
+ <ul>
+ <li><a href="#caution">Some Notes of Caution</a></li>
+
+ <li><a href="#leaving">Temporarily Leaving ncurses
+ Mode</a></li>
+
+ <li><a href="#xterm">Using <code>ncurses</code> under
+ <code>xterm</code></a></li>
+
+ <li><a href="#screens">Handling Multiple Terminal
+ Screens</a></li>
+
+ <li><a href="#testing">Testing for Terminal
+ Capabilities</a></li>
+
+ <li><a href="#tuning">Tuning for Speed</a></li>
+
+ <li><a href="#special">Special Features of
+ <code>ncurses</code></a></li>
+ </ul>
+ </li>
+
+ <li>
+ <a href="#compat">Compatibility with Older Versions</a>
+
+ <ul>
+ <li><a href="#refbug">Refresh of Overlapping
+ Windows</a></li>
+
+ <li><a href="#backbug">Background Erase</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#xsifuncs">XSI Curses Conformance</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <a href="#panels">The Panels Library</a>
+
+ <ul>
+ <li><a href="#pcompile">Compiling With the Panels
+ Library</a></li>
+
+ <li><a href="#poverview">Overview of Panels</a></li>
+
+ <li><a href="#pstdscr">Panels, Input, and the Standard
+ Screen</a></li>
+
+ <li><a href="#hiding">Hiding Panels</a></li>
+
+ <li><a href="#pmisc">Miscellaneous Other Facilities</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <a href="#menu">The Menu Library</a>
+
+ <ul>
+ <li><a href="#mcompile">Compiling with the menu Library</a></li>
+
+ <li><a href="#moverview">Overview of Menus</a></li>
+
+ <li><a href="#mselect">Selecting items</a></li>
+
+ <li><a href="#mdisplay">Menu Display</a></li>
+
+ <li><a href="#mwindows">Menu Windows</a></li>
+
+ <li><a href="#minput">Processing Menu Input</a></li>
+
+ <li><a href="#mmisc">Miscellaneous Other Features</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <a href="#form">The Forms Library</a>
+
+ <ul>
+ <li><a href="#fcompile">Compiling with the forms
+ Library</a></li>
+
+ <li><a href="#foverview">Overview of Forms</a></li>
+
+ <li><a href="#fcreate">Creating and Freeing Fields and
+ Forms</a></li>
+
+ <li>
+ <a href="#fattributes">Fetching and Changing Field
+ Attributes</a>
+
+ <ul>
+ <li><a href="#fsizes">Fetching Size and Location
+ Data</a></li>
+
+ <li><a href="#flocation">Changing the Field
+ Location</a></li>
+
+ <li><a href="#fjust">The Justification Attribute</a></li>
+
+ <li><a href="#fdispatts">Field Display Attributes</a></li>
+
+ <li><a href="#foptions">Field Option Bits</a></li>
+
+ <li><a href="#fstatus">Field Status</a></li>
+
+ <li><a href="#fuser">Field User Pointer</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#fdynamic">Variable-Sized Fields</a></li>
+
+ <li>
+ <a href="#fvalidation">Field Validation</a>
+
+ <ul>
+ <li><a href="#ftype_alpha">TYPE_ALPHA</a></li>
+
+ <li><a href="#ftype_alnum">TYPE_ALNUM</a></li>
+
+ <li><a href="#ftype_enum">TYPE_ENUM</a></li>
+
+ <li><a href="#ftype_integer">TYPE_INTEGER</a></li>
+
+ <li><a href="#ftype_numeric">TYPE_NUMERIC</a></li>
+
+ <li><a href="#ftype_regexp">TYPE_REGEXP</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#fbuffer">Direct Field Buffer Manipulation</a></li>
+
+ <li><a href="#formattrs">Attributes of Forms</a></li>
+
+ <li><a href="#fdisplay">Control of Form Display</a></li>
+
+ <li>
+ <a href="#fdriver">Input Processing in the Forms
+ Driver</a>
+
+ <ul>
+ <li><a href="#fpage">Page Navigation Requests</a></li>
+
+ <li><a href="#ffield">Inter-Field Navigation
+ Requests</a></li>
+
+ <li><a href="#fifield">Intra-Field Navigation
+ Requests</a></li>
+
+ <li><a href="#fscroll">Scrolling Requests</a></li>
+
+ <li><a href="#fedit">Field Editing Requests</a></li>
+
+ <li><a href="#forder">Order Requests</a></li>
+
+ <li><a href="#fappcmds">Application Commands</a></li>
+ </ul>
+ </li>
+
+ <li><a href="#fhooks">Field Change Hooks</a></li>
+
+ <li><a href="#ffocus">Field Change Commands</a></li>
+
+ <li><a href="#frmoptions">Form Options</a></li>
+
+ <li>
+ <a href="#fcustom">Custom Validation Types</a>
+
+ <ul>
+ <li><a href="#flinktypes">Union Types</a></li>
+
+ <li><a href="#fnewtypes">New Field Types</a></li>
+
+ <li><a href="#fcheckargs">Validation Function
+ Arguments</a></li>
+
+ <li><a href="#fcustorder">Order Functions For Custom
+ Types</a></li>
+
+ <li><a href="#fcustprobs">Avoiding Problems</a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+
+ <hr>
+
+ <h1><a name="introduction" id="introduction">Introduction</a></h1>
+
+ <p>This document is an introduction to programming with
+ <code>curses</code>. It is not an exhaustive reference for the
+ curses Application Programming Interface (API); that role is
+ filled by the <code>curses</code> manual pages. Rather, it is
+ intended to help C programmers ease into using the package.</p>
+
+ <p>This document is aimed at C applications programmers not yet
+ specifically familiar with ncurses. If you are already an
+ experienced <code>curses</code> programmer, you should
+ nevertheless read the sections on <a href="#mouse">Mouse
+ Interfacing</a>, <a href="#debugging">Debugging</a>, <a href=
+ "#compat">Compatibility with Older Versions</a>, and <a href=
+ "#hints">Hints, Tips, and Tricks</a>. These will bring you up to
+ speed on the special features and quirks of the
+ <code>ncurses</code> implementation. If you are not so
+ experienced, keep reading.</p>
+
+ <p>The <code>curses</code> package is a subroutine library for
+ terminal-independent screen-painting and input-event handling
+ which presents a high level screen model to the programmer,
+ hiding differences between terminal types and doing automatic
+ optimization of output to change one screen full of text into
+ another. <code>Curses</code> uses terminfo, which is a database
+ format that can describe the capabilities of thousands of
+ different terminals.</p>
+
+ <p>The <code>curses</code> API may seem something of an archaism
+ on UNIX desktops increasingly dominated by X, Motif, and Tcl/Tk.
+ Nevertheless, UNIX still supports tty lines and X supports
+ <em>xterm(1)</em>; the <code>curses</code> 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>
+
+ <h2><a name="history" id="history">A Brief History of Curses</a></h2>
+
+ <p>Historically, the first ancestor of <code>curses</code> was
+ the routines written to provide screen-handling for the
+ <code>vi</code> editor; these used the <code>termcap</code>
+ database facility (both released in 3BSD) for describing terminal
+ capabilities. These routines were abstracted into a documented
+ library and first released with the early BSD UNIX versions. All
+ of this work was done by students at the University of California
+ (Berkeley campus). The curses library was first published in
+ 4.0BSD, a year after 3BSD (i.e., late 1980).</p>
+
+ <p>After graduation, one of those students went to work at
+ AT&amp;T Bell Labs, and made an improved <code>termcap</code>
+ library called <code>terminfo</code> (i.e.,
+ &ldquo;libterm&rdquo;), and adapted the curses library to use
+ this. That was subsequently released in System V Release 2 (early
+ 1984). Thereafter, other developers added to the curses and
+ terminfo libraries. For instance, a student at Cornell University
+ wrote an improved terminfo library as well as a tool
+ (<code>tic</code>) to compile the terminal descriptions. As a
+ general rule, AT&amp;T did not identify the developers in the
+ source-code or documentation; the <code>tic</code> and
+ <code>infocmp</code> programs are the exceptions.</p>
+
+ <p>System V Release 3 (System III UNIX) from Bell Labs featured a
+ rewritten and much-improved <code>curses</code> library, along
+ with the <code>tic</code> program (late 1986).</p>
+
+ <p>To recap, terminfo is based on Berkeley's termcap database,
+ but contains a number of improvements and 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>
+
+ <h2><a name="scope" id="scope">Scope of This Document</a></h2>
+
+ <p>This document describes <code>ncurses</code>, a free
+ implementation of the System V <code>curses</code> API with some
+ clearly marked extensions. It includes the following System V
+ curses features:</p>
+
+ <ul>
+ <li>Support for multiple screen highlights (BSD curses could
+ only handle one &ldquo;standout&rdquo; highlight, usually
+ reverse-video).</li>
+
+ <li>Support for line- and box-drawing using forms
+ characters.</li>
+
+ <li>Recognition of function keys on input.</li>
+
+ <li>Color support.</li>
+
+ <li>Support for pads (windows of larger than screen size on
+ which the screen or a subwindow defines a viewport).</li>
+ </ul>
+
+ <p>Also, this package makes use of the insert and delete line and
+ character features of terminals so equipped, and determines how
+ to optimally use these features with no help from the programmer.
+ It allows arbitrary combinations of video attributes to be
+ displayed, even on terminals that leave &ldquo;magic
+ cookies&rdquo; on the screen to mark changes in attributes.</p>
+
+ <p>The <code>ncurses</code> package can also capture and use
+ event reports from a mouse in some environments (notably, xterm
+ under the X window system). This document includes tips for using
+ the mouse.</p>
+
+ <p>The <code>ncurses</code> package was originated by Pavel
+ Curtis. The original maintainer of this package is <a href=
+ "mailto:zmbenhal@netcom.com">Zeyd Ben-Halim</a>
+ &lt;zmbenhal@netcom.com&gt;. <a href=
+ "mailto:esr@snark.thyrsus.com">Eric S. Raymond</a>
+ &lt;esr@snark.thyrsus.com&gt; wrote many of the new features in
+ versions after 1.8.1 and wrote most of this introduction.
+ J&uuml;rgen Pfeifer 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@invisible-island.net">Thomas Dickey</a>
+ (maintainer). Contact the current maintainers at <a href=
+ "mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>.</p>
+
+ <p>This document also describes the <a href="#panels">panels</a>
+ extension library, similarly modeled on the SVr4 panels facility.
+ This library allows you to associate backing store with each of a
+ stack or deck of overlapping windows, and provides operations for
+ moving windows around in the stack that change their visibility
+ in the natural way (handling window overlaps).</p>
+
+ <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>
+
+ <h2><a name="terminology" id="terminology">Terminology</a></h2>
+
+ <p>In this document, the following terminology is used with
+ reasonable consistency:</p>
+
+ <dl>
+ <dt>window</dt>
+
+ <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.</dd>
+
+ <dt>screens</dt>
+
+ <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.</dd>
+
+ <dt>terminal screen</dt>
+
+ <dd>The package's idea of what the terminal display currently
+ looks like, i.e., what the user sees now. This is a special
+ screen.</dd>
+ </dl>
+
+ <h1><a name="curses" id="curses">The Curses Library</a></h1>
+
+ <h2><a name="overview" id="overview">An Overview of Curses</a></h2>
+
+ <h3><a name="compiling" id="compiling">Compiling Programs using
+ Curses</a></h3>
+
+ <p>In order to use the library, it is necessary to have certain
+ types and variables defined. Therefore, the programmer must have
+ a line:</p>
+
+ <pre>
+ #include &lt;curses.h&gt;
+</pre>
+
+ <p>at the top of the program source. The screen package uses the
+ Standard I/O library, so <code>&lt;curses.h&gt;</code> includes
+ <code>&lt;stdio.h&gt;</code>. <code>&lt;curses.h&gt;</code> also
+ includes <code>&lt;termios.h&gt;</code>,
+ <code>&lt;termio.h&gt;</code>, or <code>&lt;sgtty.h&gt;</code>
+ depending on your system. It is redundant (but harmless) for the
+ programmer to do these includes, too. In linking with
+ <code>curses</code> you need to have <code>-lncurses</code> in
+ your LDFLAGS or on the command line. There is no need for any
+ other libraries.</p>
+
+ <h3><a name="updating" id="updating">Updating the Screen</a></h3>
+
+ <p>In order to update the screen optimally, it is necessary for
+ the routines to know what the screen currently looks like and
+ what the programmer wants it to look like next. For this purpose,
+ a data type (structure) named WINDOW is defined which describes a
+ window image to the routines, including its starting position on
+ the screen (the (y, x) coordinates of the upper left hand corner)
+ and its size. One of these (called <code>curscr</code>, for
+ current screen) is a screen image of what the terminal currently
+ looks like. Another screen (called <code>stdscr</code>, for
+ standard screen) is provided by default to make changes on.</p>
+
+ <p>A window is a purely internal representation. It is used to
+ build and store a potential image of a portion of the terminal.
+ It does not bear any necessary relation to what is really on the
+ terminal screen; it is more like a scratchpad or write
+ buffer.</p>
+
+ <p>To make the section of physical screen corresponding to a
+ window reflect the contents of the window structure, the routine
+ <code>refresh()</code> (or <code>wrefresh()</code> if the window
+ is not <code>stdscr</code>) is called.</p>
+
+ <p>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 &ldquo;make it look
+ like this,&rdquo; and let the package implementation determine
+ the most efficient way to repaint the screen.</p>
+
+ <h3><a name="stdscr" id="stdscr">Standard Windows and Function
+ Naming Conventions</a></h3>
+
+ <p>As hinted above, the routines can use several windows, but two
+ are automatically given: <code>curscr</code>, which knows what
+ the terminal looks like, and <code>stdscr</code>, which is what
+ the programmer wants the terminal to look like next. The user
+ should never actually access <code>curscr</code> directly.
+ Changes should be made to through the API, and then the routine
+ <code>refresh()</code> (or <code>wrefresh()</code>) called.</p>
+
+ <p>Many functions are defined to use <code>stdscr</code> as a
+ default screen. For example, to add a character to
+ <code>stdscr</code>, one calls <code>addch()</code> with the
+ desired character as argument. To write to a different window.
+ use the routine <code>waddch()</code> (for
+ <strong>w</strong>indow-specific addch()) is provided. This
+ convention of prepending function names with a &ldquo;w&rdquo;
+ when they are to be applied to specific windows is consistent.
+ The only routines which do not follow it are those for which a
+ window must always be specified.</p>
+
+ <p>In order to move the current (y, x) coordinates from one point
+ to another, the routines <code>move()</code> and
+ <code>wmove()</code> are provided. However, it is often desirable
+ to first move and then perform some I/O operation. In order to
+ avoid clumsiness, most I/O routines can be preceded by the prefix
+ &ldquo;mv&rdquo; and the desired (y, x) coordinates prepended to
+ the arguments to the function. For example, the calls</p>
+
+ <pre>
+ move(y, x);
+ addch(ch);
+</pre>
+
+ <p>can be replaced by</p>
+
+ <pre>
+ mvaddch(y, x, ch);
+</pre>
+
+ <p>and</p>
+
+ <pre>
+ wmove(win, y, x);
+ waddch(win, ch);
+</pre>
+
+ <p>can be replaced by</p>
+
+ <pre>
+ mvwaddch(win, y, x, ch);
+</pre>
+
+ <p>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>
+
+ <h3><a name="variables" id="variables">Variables</a></h3>
+
+ <p>The <code>curses</code> library sets some variables describing
+ the terminal capabilities.</p>
+
+ <pre>
type name description
------------------------------------------------------------------
int LINES number of lines on the terminal
int COLS number of columns on the terminal
-</PRE>
-
-The <CODE>curses.h</CODE> also introduces some <CODE>#define</CODE> constants and types
-of general usefulness:
-
-<DL>
-<DT> <CODE>bool</CODE>
-<DD> boolean type, actually a `char' (e.g., <CODE>bool doneit;</CODE>)
-<DT> <CODE>TRUE</CODE>
-<DD> boolean `true' flag (1).
-<DT> <CODE>FALSE</CODE>
-<DD> boolean `false' flag (0).
-<DT> <CODE>ERR</CODE>
-<DD> error flag returned by routines on a failure (-1).
-<DT> <CODE>OK</CODE>
-<DD> error flag returned by routines when things go right.
-</DL>
-
-<H2><A NAME="using">Using the Library</A></H2>
-
-Now we describe how to actually use the screen package. In it, we assume all
-updating, reading, etc. is applied to <CODE>stdscr</CODE>. These instructions will
-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:
-
-<PRE>
+</pre>
+
+ <p>The <code>curses.h</code> also introduces some
+ <code>#define</code> constants and types of general
+ usefulness:</p>
+
+ <dl>
+ <dt><code>bool</code>
+ </dt>
+
+ <dd>boolean type, actually a &ldquo;char&rdquo; (e.g.,
+ <code>bool doneit;</code>)</dd>
+
+ <dt><code>TRUE</code>
+ </dt>
+
+ <dd>boolean &ldquo;true&rdquo; flag (1).</dd>
+
+ <dt><code>FALSE</code>
+ </dt>
+
+ <dd>boolean &ldquo;false&rdquo; flag (0).</dd>
+
+ <dt><code>ERR</code>
+ </dt>
+
+ <dd>error flag returned by routines on a failure (-1).</dd>
+
+ <dt><code>OK</code>
+ </dt>
+
+ <dd>error flag returned by routines when things go right.</dd>
+ </dl>
+
+ <h2><a name="using" id="using">Using the Library</a></h2>
+
+ <p>Now we describe how to actually use the screen package. In it,
+ we assume all updating, reading, etc. is applied to
+ <code>stdscr</code>. These instructions will work on any window,
+ providing you change the function names and parameters as
+ mentioned above.</p>
+
+ <p>Here is a sample program to motivate the discussion:</p>
+
+ <pre>
#include &lt;stdlib.h&gt;
#include &lt;curses.h&gt;
#include &lt;signal.h&gt;
@@ -458,9 +672,9 @@ main(int argc, char *argv[])
/*
* 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:
+ * 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(1, COLOR_RED, COLOR_BLACK);
init_pair(2, COLOR_GREEN, COLOR_BLACK);
@@ -474,13 +688,13 @@ main(int argc, char *argv[])
for (;;)
{
int c = getch(); /* refresh, accept single keystroke of input */
- attrset(COLOR_PAIR(num % 8));
- num++;
+ attrset(COLOR_PAIR(num % 8));
+ num++;
/* process the command keystroke */
}
- finish(0); /* we're done */
+ finish(0); /* we are done */
}
static void finish(int sig)
@@ -491,1165 +705,1377 @@ static void finish(int sig)
exit(0);
}
-</PRE>
-
-<H3><A NAME="starting">Starting up</A></H3>
-
-In order to use the screen package, the routines must know about terminal
-characteristics, and the space for <CODE>curscr</CODE> and <CODE>stdscr</CODE> must be
-allocated. These function <CODE>initscr()</CODE> does both these things. Since it
-must allocate space for the windows, it can overflow memory when attempting to
-do so. On the rare occasions this happens, <CODE>initscr()</CODE> will terminate
-the program with an error message. <CODE>initscr()</CODE> must always be called
-before any of the routines which affect windows are used. If it is not, the
-program will core dump as soon as either <CODE>curscr</CODE> or <CODE>stdscr</CODE> are
-referenced. However, it is usually best to wait to call it until after you are
-sure you will need it, like after checking for startup errors. Terminal status
-changing routines like <CODE>nl()</CODE> and <CODE>cbreak()</CODE> should be called
-after <CODE>initscr()</CODE>. <P>
-
-Once the screen windows have been allocated, you can set them up for
-your program. If you want to, say, allow a screen to scroll, use
-<CODE>scrollok()</CODE>. If you want the cursor to be left in place after
-the last change, use <CODE>leaveok()</CODE>. If this isn't done,
-<CODE>refresh()</CODE> will move the cursor to the window's current (y, x)
-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.
-
-<H3><A NAME="output">Output</A></H3>
-
-Now that we have set things up, we will want to actually update the terminal.
-The basic functions used to change what will go on a window are
-<CODE>addch()</CODE> and <CODE>move()</CODE>. <CODE>addch()</CODE> adds a character at the
-current (y, x) coordinates. <CODE>move()</CODE> changes the current (y, x)
-coordinates to whatever you want them to be. It returns <CODE>ERR</CODE> if you
-try to move off the window. As mentioned above, you can combine the two into
-<CODE>mvaddch()</CODE> to do both things at once. <P>
-
-The other output functions, such as <CODE>addstr()</CODE> and <CODE>printw()</CODE>,
-all call <CODE>addch()</CODE> to add characters to the window. <P>
-
-After you have put on the window what you want there, when you want the portion
-of the terminal covered by the window to be made to look like it, you must call
-<CODE>refresh()</CODE>. In order to optimize finding changes, <CODE>refresh()</CODE>
-assumes that any part of the window not changed since the last
-<CODE>refresh()</CODE> of that window has not been changed on the terminal, i.e.,
-that you have not refreshed a portion of the terminal with an overlapping
-window. If this is not the case, the routine <CODE>touchwin()</CODE> is provided
-to make it look like the entire window has been changed, thus making
-<CODE>refresh()</CODE> check the whole subsection of the terminal for changes. <P>
-
-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.
-
-<H3><A NAME="input">Input</A></H3>
-
-The complementary function to <CODE>addch()</CODE> is <CODE>getch()</CODE> which, if
-echo is set, will call <CODE>addch()</CODE> to echo the character. Since the
-screen package needs to know what is on the terminal at all times, if
-characters are to be echoed, the tty must be in raw or cbreak mode. Since
-initially the terminal has echoing enabled and is in ordinary ``cooked'' mode,
-one or the other has to changed before calling <CODE>getch()</CODE>; otherwise,
-the program's output will be unpredictable. <P>
-
-When you need to accept line-oriented input in a window, the functions
-<CODE>wgetstr()</CODE> and friends are available. There is even a <CODE>wscanw()</CODE>
-function that can do <CODE>scanf()</CODE>(3)-style multi-field parsing on window
-input. These pseudo-line-oriented functions turn on echoing while they
-execute. <P>
-
-The example code above uses the call <CODE>keypad(stdscr, TRUE)</CODE> to enable
-support for function-key mapping. With this feature, the <CODE>getch()</CODE> code
-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.
-
-<H3><A NAME="formschars">Using Forms Characters</A></H3>
-
-The <CODE>addch()</CODE> function (and some others, including <CODE>box()</CODE> and
-<CODE>border()</CODE>) can accept some pseudo-character arguments which are specially
-defined by <CODE>ncurses</CODE>. These are <CODE>#define</CODE> values set up in
-the <CODE>curses.h</CODE> header; see there for a complete list (look for
-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.
-
-<H3><A NAME="attributes">Character Attributes and Color</A></H3>
-
-The <CODE>ncurses</CODE> package supports screen highlights including standout,
-reverse-video, underline, and blink. It also supports color, which is treated
-as another kind of highlight. <P>
-
-Highlights are encoded, internally, as high bits of the pseudo-character type
-(<CODE>chtype</CODE>) that <CODE>curses.h</CODE> uses to represent the contents of a
-screen cell. See the <CODE>curses.h</CODE> header file for a complete list of
-highlight mask values (look for the prefix <CODE>A_</CODE>).<P>
-
-There are two ways to make highlights. One is to logical-or the value of the
-highlights you want into the character argument of an <CODE>addch()</CODE> call,
-or any other output call that takes a <CODE>chtype</CODE> argument. <P>
-
-The other is to set the current-highlight value. This is logical-or'ed with
-any highlight you specify the first way. You do this with the functions
-<CODE>attron()</CODE>, <CODE>attroff()</CODE>, and <CODE>attrset()</CODE>; see the manual
-pages for details.
-
-Color is a special kind of highlight. The package actually thinks in terms
-of color pairs, combinations of foreground and background colors. The sample
-code above sets up eight color pairs, all of the guaranteed-available colors
-on black. Note that each color pair is, in effect, given the name of its
-foreground color. Any other range of eight non-conflicting values could
-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.
-
-<H3><A NAME="mouse">Mouse Interfacing</A></H3>
-
-The <CODE>ncurses</CODE> library also provides a mouse interface.
-<!-- The 'note' tag is not portable enough -->
-<blockquote>
-<strong>NOTE:</strong> this facility is specific to <CODE>ncurses</CODE>, it is not part of either
-the XSI Curses standard, nor of System V Release 4, nor BSD curses.
-System V Release 4 curses contains code with similar interface definitions,
-however it is not documented. Other than by disassembling the library, we
-have no way to determine exactly how that mouse code works.
-Thus, we recommend that you wrap mouse-related code in an #ifdef using the
-feature macro NCURSES_MOUSE_VERSION so it will not be compiled and linked
-on non-ncurses systems.
-</blockquote>
-
-Presently, mouse event reporting works in the following environments:
-<ul>
-<li>xterm and similar programs such as rxvt.
-<li>Linux console, when configured with <CODE>gpm</CODE>(1), Alessandro
-Rubini's mouse server.
-<li>FreeBSD sysmouse (console)
-<li>OS/2 EMX
-</ul>
-<P>
-The mouse interface is very simple. To activate it, you use the function
-<CODE>mousemask()</CODE>, passing it as first argument a bit-mask that specifies
-what kinds of events you want your program to be able to see. It will
-return the bit-mask of events that actually become visible, which may differ
-from the argument if the mouse device is not capable of reporting some of
-the event types you specify. <P>
-
-Once the mouse is active, your application's command loop should watch
-for a return value of <CODE>KEY_MOUSE</CODE> from <CODE>wgetch()</CODE>. When
-you see this, a mouse event report has been queued. To pick it off
-the queue, use the function <CODE>getmouse()</CODE> (you must do this before
-the next <CODE>wgetch()</CODE>, otherwise another mouse event might come
-in and make the first one inaccessible). <P>
-
-Each call to <CODE>getmouse()</CODE> fills a structure (the address of which you'll
-pass it) with mouse event data. The event data includes zero-origin,
-screen-relative character-cell coordinates of the mouse pointer. It also
-includes an event mask. Bits in this mask will be set, corresponding
-to the event type being reported. <P>
-
-The mouse structure contains two additional fields which may be
-significant in the future as ncurses interfaces to new kinds of
-pointing device. In addition to x and y coordinates, there is a slot
-for a z coordinate; this might be useful with touch-screens that can
-return a pressure or duration parameter. There is also a device ID
-field, which could be used to distinguish between multiple pointing
-devices. <P>
-
-The class of visible events may be changed at any time via <CODE>mousemask()</CODE>.
-Events that can be reported include presses, releases, single-, double- and
-triple-clicks (you can set the maximum button-down time for clicks). If
-you don't make clicks visible, they will be reported as press-release
-pairs. In some environments, the event mask may include bits reporting
-the state of shift, alt, and ctrl keys on the keyboard during the event. <P>
-
-A function to check whether a mouse event fell within a given window is
-also supplied. You can use this to see whether a given window should
-consider a mouse event relevant to it. <P>
-
-Because mouse event reporting will not be available in all
-environments, it would be unwise to build <CODE>ncurses</CODE>
-applications that <EM>require</EM> the use of a mouse. Rather, you should
-use the mouse as a shortcut for point-and-shoot commands your application
-would normally accept from the keyboard. Two of the test games in the
-<CODE>ncurses</CODE> distribution (<CODE>bs</CODE> and <CODE>knight</CODE>) contain
-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.
-
-<H3><A NAME="finishing">Finishing Up</A></H3>
-
-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.
-
-<H2><A NAME="functions">Function Descriptions</A></H2>
-
-We describe the detailed behavior of some important curses functions here, as a
-supplement to the manual page descriptions.
-
-<H3><A NAME="init">Initialization and Wrapup</A></H3>
-
-<DL>
-<DT> <CODE>initscr()</CODE>
-<DD> The first function called should almost always be <CODE>initscr()</CODE>.
-This will determine the terminal type and
-initialize curses data structures. <CODE>initscr()</CODE> also arranges that
-the first call to <CODE>refresh()</CODE> will clear the screen. If an error
-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>ripoffline()</CODE>, <CODE>use_env()</CODE>, and, if you are using multiple
-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.
-<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
-be called once for each terminal. It returns a variable of type
-<CODE>SCREEN *</CODE> which should be saved as a reference to that
-terminal.
-(NOTE: a SCREEN variable is not a <em>screen</em> in the sense we
-are describing in this introduction, but a collection of
-parameters used to assist in optimizing the display.)
-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.
-<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.
-<DT> <CODE>delscreen(sp)</CODE>
-<DD> The inverse of <CODE>newterm()</CODE>; deallocates the data structures
-associated with a given <CODE>SCREEN</CODE> reference.
-</DL>
-
-<H3><A NAME="flush">Causing Output to the Terminal</A></H3>
-
-<DL>
-<DT> <CODE>refresh()</CODE> and <CODE>wrefresh(win)</CODE>
-<DD> These functions must be called to actually get any output on
-the terminal, as other routines merely manipulate data
-structures. <CODE>wrefresh()</CODE> copies the named window to the physical
-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.
-<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
-works. In addition to all the window structures, curses keeps two
-data structures representing the terminal screen: a physical screen,
-describing what is actually on the screen, and a virtual screen,
-describing what the programmer wants to have on the screen. wrefresh
-works by first copying the named window to the virtual screen
-(<CODE>wnoutrefresh()</CODE>), and then calling the routine to update the
-screen (<CODE>doupdate()</CODE>). If the programmer wishes to output
-several windows at once, a series of calls to <CODE>wrefresh</CODE> will result
-in alternating calls to <CODE>wnoutrefresh()</CODE> and <CODE>doupdate()</CODE>,
-causing several bursts of output to the screen. By calling
-<CODE>wnoutrefresh()</CODE> for each window, it is then possible to call
-<CODE>doupdate()</CODE> once, resulting in only one burst of output, with
-fewer total characters transmitted (this also avoids a visually annoying
-flicker at each update).
-</DL>
-
-<H3><A NAME="lowlevel">Low-Level Capability Access</A></H3>
-
-<DL>
-<DT> <CODE>setupterm(term, filenum, errret)</CODE>
-<DD> This routine is called to initialize a terminal's description, without setting
-up the curses screen structures or changing the tty-driver mode bits.
-<CODE>term</CODE> is the character string representing the name of the terminal
-being used. <CODE>filenum</CODE> is the UNIX file descriptor of the terminal to
-be used for output. <CODE>errret</CODE> is a pointer to an integer, in which a
-success or failure indication is returned. The values returned can be 1 (all
-is well), 0 (no such terminal), or -1 (some problem locating the terminfo
-database). <P>
-
-The value of <CODE>term</CODE> can be given as NULL, which will cause the value of
-<CODE>TERM</CODE> in the environment to be used. The <CODE>errret</CODE> pointer can
-also be given as NULL, meaning no error code is wanted. If <CODE>errret</CODE> is
-defaulted, and something goes wrong, <CODE>setupterm()</CODE> will print an
-appropriate error message and exit, rather than returning. Thus, a simple
-program can call setupterm(0, 1, 0) and not worry about initialization
-errors. <P>
-
-After the call to <CODE>setupterm()</CODE>, the global variable <CODE>cur_term</CODE> is
-set to point to the current structure of terminal capabilities. By calling
-<CODE>setupterm()</CODE> for each terminal, and saving and restoring
-<CODE>cur_term</CODE>, it is possible for a program to use two or more terminals at
-once. <CODE>Setupterm()</CODE> also stores the names section of the terminal
-description in the global character array <CODE>ttytype[]</CODE>. Subsequent calls
-to <CODE>setupterm()</CODE> will overwrite this array, so you'll have to save it
-yourself if need be.
-</DL>
-
-<H3><A NAME="debugging">Debugging</A></H3>
-
-<!-- The 'note' tag is not portable enough -->
-<blockquote>
-<strong>NOTE:</strong> These functions are not part of the standard curses API!
-</blockquote>
-
-<DL>
-<DT> <CODE>trace()</CODE>
-<DD>
-This function can be used to explicitly set a trace level. If the
-trace level is nonzero, execution of your program will generate a file
-called `trace' in the current working directory containing a report on
-the library's actions. Higher trace levels enable more detailed (and
-verbose) reporting -- see comments attached to <CODE>TRACE_</CODE> defines
-in the <CODE>curses.h</CODE> file for details. (It is also possible to set
-a trace level by assigning a trace level value to the environment variable
-<CODE>NCURSES_TRACE</CODE>).
-<DT> <CODE>_tracef()</CODE>
-<DD>
-This function can be used to output your own debugging information. It is only
-available only if you link with -lncurses_g. It can be used the same way as
-<CODE>printf()</CODE>, only it outputs a newline after the end of arguments.
-The output goes to a file called <CODE>trace</CODE> in the current directory.
-</DL>
-
-Trace logs can be difficult to interpret due to the sheer volume of
-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.
-
-<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.
-
-<H3><A NAME="caution">Some Notes of Caution</A></H3>
-
-If you find yourself thinking you need to use <CODE>noraw()</CODE> or
-<CODE>nocbreak()</CODE>, think again and move carefully. It's probably
-better design to use <CODE>getstr()</CODE> or one of its relatives to
-simulate cooked mode. The <CODE>noraw()</CODE> and <CODE>nocbreak()</CODE>
-functions try to restore cooked mode, but they may end up clobbering
-some control bits set before you started your application. Also, they
-have always been poorly documented, and are likely to hurt your
-application's usability with other curses libraries. <P>
-
-Bear in mind that <CODE>refresh()</CODE> is a synonym for <CODE>wrefresh(stdscr)</CODE>.
-Don't try to mix use of <CODE>stdscr</CODE> with use of windows declared
-by <CODE>newwin()</CODE>; a <CODE>refresh()</CODE> call will blow them off the
-screen. The right way to handle this is to use <CODE>subwin()</CODE>, or
-not touch <CODE>stdscr</CODE> at all and tile your screen with declared
-windows which you then <CODE>wnoutrefresh()</CODE> somewhere in your program
-event loop, with a single <CODE>doupdate()</CODE> call to trigger actual
-repainting. <P>
-
-You are much less likely to run into problems if you design your screen
-layouts to use tiled rather than overlapping windows. Historically,
-curses support for overlapping windows has been weak, fragile, and poorly
-documented. The <CODE>ncurses</CODE> library is not yet an exception to this
-rule. <P>
-
-There is a panels library included in the <CODE>ncurses</CODE>
-distribution that does a pretty good job of strengthening the
-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.
-
-<H3><A NAME="leaving">Temporarily Leaving NCURSES Mode</A></H3>
-
-Sometimes you will want to write a program that spends most of its time in
-screen mode, but occasionally returns to ordinary `cooked' mode. A common
-reason for this is to support shell-out. This behavior is simple to arrange
-in <CODE>ncurses</CODE>. <P>
-
-To leave <CODE>ncurses</CODE> mode, call <CODE>endwin()</CODE> as you would if you
-were intending to terminate the program. This will take the screen back to
-cooked mode; you can do your shell-out. When you want to return to
-<CODE>ncurses</CODE> mode, simply call <CODE>refresh()</CODE> or <CODE>doupdate()</CODE>.
-This will repaint the screen. <P>
-
-There is a boolean function, <CODE>isendwin()</CODE>, which code can use to
-test whether <CODE>ncurses</CODE> screen mode is active. It returns <CODE>TRUE</CODE>
-in the interval between an <CODE>endwin()</CODE> call and the following
-<CODE>refresh()</CODE>, <CODE>FALSE</CODE> otherwise. <P>
-
-Here is some sample code for shellout:
-
-<PRE>
+</pre>
+
+ <h3><a name="starting" id="starting">Starting up</a></h3>
+
+ <p>In order to use the screen package, the routines must know
+ about terminal characteristics, and the space for
+ <code>curscr</code> and <code>stdscr</code> must be allocated.
+ These function <code>initscr()</code> does both these things.
+ Since it must allocate space for the windows, it can overflow
+ memory when attempting to do so. On the rare occasions this
+ happens, <code>initscr()</code> will terminate the program with
+ an error message. <code>initscr()</code> must always be called
+ before any of the routines which affect windows are used. If it
+ is not, the program will core dump as soon as either
+ <code>curscr</code> or <code>stdscr</code> are referenced.
+ However, it is usually best to wait to call it until after you
+ are sure you will need it, like after checking for startup
+ errors. Terminal status changing routines like <code>nl()</code>
+ and <code>cbreak()</code> should be called after
+ <code>initscr()</code>.</p>
+
+ <p>Once the screen windows have been allocated, you can set them
+ up for your program. If you want to, say, allow a screen to
+ scroll, use <code>scrollok()</code>. If you want the cursor to be
+ left in place after the last change, use <code>leaveok()</code>.
+ If this is not done, <code>refresh()</code> will move the cursor
+ to the window's current (y, x) coordinates after updating it.</p>
+
+ <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>
+
+ <h3><a name="output" id="output">Output</a></h3>
+
+ <p>Now that we have set things up, we will want to actually
+ update the terminal. The basic functions used to change what will
+ go on a window are <code>addch()</code> and <code>move()</code>.
+ <code>addch()</code> adds a character at the current (y, x)
+ coordinates. <code>move()</code> changes the current (y, x)
+ coordinates to whatever you want them to be. It returns
+ <code>ERR</code> if you try to move off the window. As mentioned
+ above, you can combine the two into <code>mvaddch()</code> to do
+ both things at once.</p>
+
+ <p>The other output functions, such as <code>addstr()</code> and
+ <code>printw()</code>, all call <code>addch()</code> to add
+ characters to the window.</p>
+
+ <p>After you have put on the window what you want there, when you
+ want the portion of the terminal covered by the window to be made
+ to look like it, you must call <code>refresh()</code>. In order
+ to optimize finding changes, <code>refresh()</code> assumes that
+ any part of the window not changed since the last
+ <code>refresh()</code> of that window has not been changed on the
+ terminal, i.e., that you have not refreshed a portion of the
+ terminal with an overlapping window. If this is not the case, the
+ routine <code>touchwin()</code> is provided to make it look like
+ the entire window has been changed, thus making
+ <code>refresh()</code> check the whole subsection of the terminal
+ for changes.</p>
+
+ <p>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>
+
+ <h3><a name="input" id="input">Input</a></h3>
+
+ <p>The complementary function to <code>addch()</code> is
+ <code>getch()</code> which, if echo is set, will call
+ <code>addch()</code> to echo the character. Since the screen
+ package needs to know what is on the terminal at all times, if
+ characters are to be echoed, the tty must be in raw or cbreak
+ mode. Since initially the terminal has echoing enabled and is in
+ ordinary &ldquo;cooked&rdquo; mode, one or the other has to
+ changed before calling <code>getch()</code>; otherwise, the
+ program's output will be unpredictable.</p>
+
+ <p>When you need to accept line-oriented input in a window, the
+ functions <code>wgetstr()</code> and friends are available. There
+ is even a <code>wscanw()</code> function that can do
+ <code>scanf()</code>(3)-style multi-field parsing on window
+ input. These pseudo-line-oriented functions turn on echoing while
+ they execute.</p>
+
+ <p>The example code above uses the call <code>keypad(stdscr,
+ TRUE)</code> to enable support for function-key mapping. With
+ this feature, the <code>getch()</code> code 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>
+
+ <h3><a name="formschars" id="formschars">Using Forms
+ Characters</a></h3>
+
+ <p>The <code>addch()</code> function (and some others, including
+ <code>box()</code> and <code>border()</code>) can accept some
+ pseudo-character arguments which are specially defined by
+ <code>ncurses</code>. These are <code>#define</code> values set
+ up in the <code>curses.h</code> header; see there for a complete
+ list (look for the prefix <code>ACS_</code>).</p>
+
+ <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>
+
+ <h3><a name="attributes" id="attributes">Character Attributes and
+ Color</a></h3>
+
+ <p>The <code>ncurses</code> package supports screen highlights
+ including standout, reverse-video, underline, and blink. It also
+ supports color, which is treated as another kind of
+ highlight.</p>
+
+ <p>Highlights are encoded, internally, as high bits of the
+ pseudo-character type (<code>chtype</code>) that
+ <code>curses.h</code> uses to represent the contents of a screen
+ cell. See the <code>curses.h</code> header file for a complete
+ list of highlight mask values (look for the prefix
+ <code>A_</code>).</p>
+
+ <p>There are two ways to make highlights. One is to logical-or
+ the value of the highlights you want into the character argument
+ of an <code>addch()</code> call, or any other output call that
+ takes a <code>chtype</code> argument.</p>
+
+ <p>The other is to set the current-highlight value. This is
+ <em>logical-OR</em>ed with any highlight you specify the first
+ way. You do this with the functions <code>attron()</code>,
+ <code>attroff()</code>, and <code>attrset()</code>; see the
+ manual pages for details. Color is a special kind of highlight.
+ The package actually thinks in terms of color pairs, combinations
+ of foreground and background colors. The sample code above sets
+ up eight color pairs, all of the guaranteed-available colors on
+ black. Note that each color pair is, in effect, given the name of
+ its foreground color. Any other range of eight non-conflicting
+ values could have been used as the first arguments of the
+ <code>init_pair()</code> values.</p>
+
+ <p>Once you have 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>
+
+ <h3><a name="mouse" id="mouse">Mouse Interfacing</a></h3>
+
+ <p>The <code>ncurses</code> library also provides a mouse
+ interface.</p>
+
+ <blockquote>
+ <strong>NOTE:</strong> this facility is specific to
+ <code>ncurses</code>, it is not part of either the XSI Curses
+ standard, nor of System V Release 4, nor BSD curses. System V
+ Release 4 curses contains code with similar interface
+ definitions, however it is not documented. Other than by
+ disassembling the library, we have no way to determine exactly
+ how that mouse code works. Thus, we recommend that you wrap
+ mouse-related code in an #ifdef using the feature macro
+ NCURSES_MOUSE_VERSION so it will not be compiled and linked on
+ non-ncurses systems.
+ </blockquote>
+
+ <p>Presently, mouse event reporting works in the following
+ environments:</p>
+
+ <ul>
+ <li>xterm and similar programs such as rxvt.</li>
+
+ <li>Linux console, when configured with <code>gpm</code>(1),
+ Alessandro Rubini's mouse server.</li>
+
+ <li>FreeBSD sysmouse (console)</li>
+
+ <li>OS/2 EMX</li>
+ </ul>
+
+ <p>The mouse interface is very simple. To activate it, you use
+ the function <code>mousemask()</code>, passing it as first
+ argument a bit-mask that specifies what kinds of events you want
+ your program to be able to see. It will return the bit-mask of
+ events that actually become visible, which may differ from the
+ argument if the mouse device is not capable of reporting some of
+ the event types you specify.</p>
+
+ <p>Once the mouse is active, your application's command loop
+ should watch for a return value of <code>KEY_MOUSE</code> from
+ <code>wgetch()</code>. When you see this, a mouse event report
+ has been queued. To pick it off the queue, use the function
+ <code>getmouse()</code> (you must do this before the next
+ <code>wgetch()</code>, otherwise another mouse event might come
+ in and make the first one inaccessible).</p>
+
+ <p>Each call to <code>getmouse()</code> fills a structure (the
+ address of which you will pass it) with mouse event data. The
+ event data includes zero-origin, screen-relative character-cell
+ coordinates of the mouse pointer. It also includes an event mask.
+ Bits in this mask will be set, corresponding to the event type
+ being reported.</p>
+
+ <p>The mouse structure contains two additional fields which may
+ be significant in the future as ncurses interfaces to new kinds
+ of pointing device. In addition to x and y coordinates, there is
+ a slot for a z coordinate; this might be useful with
+ touch-screens that can return a pressure or duration parameter.
+ There is also a device ID field, which could be used to
+ distinguish between multiple pointing devices.</p>
+
+ <p>The class of visible events may be changed at any time via
+ <code>mousemask()</code>. Events that can be reported include
+ presses, releases, single-, double- and triple-clicks (you can
+ set the maximum button-down time for clicks). If you do not make
+ clicks visible, they will be reported as press-release pairs. In
+ some environments, the event mask may include bits reporting the
+ state of shift, alt, and ctrl keys on the keyboard during the
+ event.</p>
+
+ <p>A function to check whether a mouse event fell within a given
+ window is also supplied. You can use this to see whether a given
+ window should consider a mouse event relevant to it.</p>
+
+ <p>Because mouse event reporting will not be available in all
+ environments, it would be unwise to build <code>ncurses</code>
+ applications that <em>require</em> the use of a mouse. Rather,
+ you should use the mouse as a shortcut for point-and-shoot
+ commands your application would normally accept from the
+ keyboard. Two of the test games in the <code>ncurses</code>
+ distribution (<code>bs</code> and <code>knight</code>) contain
+ code that illustrates how this can be done.</p>
+
+ <p>See the manual page <code>curs_mouse(3X)</code> for full
+ details of the mouse-interface functions.</p>
+
+ <h3><a name="finishing" id="finishing">Finishing Up</a></h3>
+
+ <p>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>
+
+ <h2><a name="functions" id="functions">Function Descriptions</a></h2>
+
+ <p>We describe the detailed behavior of some important curses
+ functions here, as a supplement to the manual page
+ descriptions.</p>
+
+ <h3><a name="init" id="init">Initialization and Wrapup</a></h3>
+
+ <dl>
+ <dt><code>initscr()</code>
+ </dt>
+
+ <dd>The first function called should almost always be
+ <code>initscr()</code>. This will determine the terminal type
+ and initialize curses data structures. <code>initscr()</code>
+ also arranges that the first call to <code>refresh()</code>
+ will clear the screen. If an error 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>ripoffline()</code>, <code>use_env()</code>, and, if you
+ are using multiple terminals, <code>newterm()</code>.)</dd>
+
+ <dt><code>endwin()</code>
+ </dt>
+
+ <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.</dd>
+
+ <dt><code>newterm(type, ofp, ifp)</code>
+ </dt>
+
+ <dd>A program which outputs to more than one terminal should
+ use <code>newterm()</code> instead of <code>initscr()</code>.
+ <code>newterm()</code> should be called once for each terminal.
+ It returns a variable of type <code>SCREEN *</code> which
+ should be saved as a reference to that terminal. (NOTE: a
+ SCREEN variable is not a <em>screen</em> in the sense we are
+ describing in this introduction, but a collection of parameters
+ used to assist in optimizing the display.) 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.</dd>
+
+ <dt><code>set_term(new)</code>
+ </dt>
+
+ <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.</dd>
+
+ <dt><code>delscreen(sp)</code>
+ </dt>
+
+ <dd>The inverse of <code>newterm()</code>; deallocates the data
+ structures associated with a given <code>SCREEN</code>
+ reference.</dd>
+ </dl>
+
+ <h3><a name="flush" id="flush">Causing Output to the Terminal</a></h3>
+
+ <dl>
+ <dt><code>refresh()</code> and <code>wrefresh(win)</code></dt>
+
+ <dd>These functions must be called to actually get any output
+ on the terminal, as other routines merely manipulate data
+ structures. <code>wrefresh()</code> copies the named window to
+ the physical 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.</dd>
+
+ <dt><code>doupdate()</code> and
+ <code>wnoutrefresh(win)</code></dt>
+
+ <dd>These two functions allow multiple updates with more
+ efficiency than wrefresh. To use them, it is important to
+ understand how curses works. In addition to all the window
+ structures, curses keeps two data structures representing the
+ terminal screen: a physical screen, describing what is actually
+ on the screen, and a virtual screen, describing what the
+ programmer wants to have on the screen. wrefresh works by first
+ copying the named window to the virtual screen
+ (<code>wnoutrefresh()</code>), and then calling the routine to
+ update the screen (<code>doupdate()</code>). If the programmer
+ wishes to output several windows at once, a series of calls to
+ <code>wrefresh</code> will result in alternating calls to
+ <code>wnoutrefresh()</code> and <code>doupdate()</code>,
+ causing several bursts of output to the screen. By calling
+ <code>wnoutrefresh()</code> for each window, it is then
+ possible to call <code>doupdate()</code> once, resulting in
+ only one burst of output, with fewer total characters
+ transmitted (this also avoids a visually annoying flicker at
+ each update).</dd>
+ </dl>
+
+ <h3><a name="lowlevel" id="lowlevel">Low-Level Capability
+ Access</a></h3>
+
+ <dl>
+ <dt><code>setupterm(term, filenum, errret)</code>
+ </dt>
+
+ <dd>
+ This routine is called to initialize a terminal's
+ description, without setting up the curses screen structures
+ or changing the tty-driver mode bits. <code>term</code> is
+ the character string representing the name of the terminal
+ being used. <code>filenum</code> is the UNIX file descriptor
+ of the terminal to be used for output. <code>errret</code> is
+ a pointer to an integer, in which a success or failure
+ indication is returned. The values returned can be 1 (all is
+ well), 0 (no such terminal), or -1 (some problem locating the
+ terminfo database).
+
+ <p>The value of <code>term</code> can be given as NULL, which
+ will cause the value of <code>TERM</code> in the environment
+ to be used. The <code>errret</code> pointer can also be given
+ as NULL, meaning no error code is wanted. If
+ <code>errret</code> is defaulted, and something goes wrong,
+ <code>setupterm()</code> will print an appropriate error
+ message and exit, rather than returning. Thus, a simple
+ program can call setupterm(0, 1, 0) and not worry about
+ initialization errors.</p>
+
+ <p>After the call to <code>setupterm()</code>, the global
+ variable <code>cur_term</code> is set to point to the current
+ structure of terminal capabilities. By calling
+ <code>setupterm()</code> for each terminal, and saving and
+ restoring <code>cur_term</code>, it is possible for a program
+ to use two or more terminals at once.
+ <code>Setupterm()</code> also stores the names section of the
+ terminal description in the global character array
+ <code>ttytype[]</code>. Subsequent calls to
+ <code>setupterm()</code> will overwrite this array, so you
+ will have to save it yourself if need be.</p>
+ </dd>
+ </dl>
+
+ <h3><a name="debugging" id="debugging">Debugging</a></h3>
+
+ <blockquote>
+ <strong>NOTE:</strong> These functions are not part of the
+ standard curses API!
+ </blockquote>
+
+ <dl>
+ <dt><code>trace()</code>
+ </dt>
+
+ <dd>This function can be used to explicitly set a trace level.
+ If the trace level is nonzero, execution of your program will
+ generate a file called &ldquo;trace&rdquo; in the current
+ working directory containing a report on the library's actions.
+ Higher trace levels enable more detailed (and verbose)
+ reporting -- see comments attached to <code>TRACE_</code>
+ defines in the <code>curses.h</code> file for details. (It is
+ also possible to set a trace level by assigning a trace level
+ value to the environment variable
+ <code>NCURSES_TRACE</code>).</dd>
+
+ <dt><code>_tracef()</code>
+ </dt>
+
+ <dd>This function can be used to output your own debugging
+ information. It is only available only if you link with
+ -lncurses_g. It can be used the same way as
+ <code>printf()</code>, only it outputs a newline after the end
+ of arguments. The output goes to a file called
+ <code>trace</code> in the current directory.</dd>
+ </dl>
+
+ <p>Trace logs can be difficult to interpret due to the sheer
+ volume of 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>
+
+ <h2><a name="hints" id="hints">Hints, Tips, and Tricks</a></h2>
+
+ <p>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>
+
+ <h3><a name="caution" id="caution">Some Notes of Caution</a></h3>
+
+ <p>If you find yourself thinking you need to use
+ <code>noraw()</code> or <code>nocbreak()</code>, think again and
+ move carefully. It is probably better design to use
+ <code>getstr()</code> or one of its relatives to simulate cooked
+ mode. The <code>noraw()</code> and <code>nocbreak()</code>
+ functions try to restore cooked mode, but they may end up
+ clobbering some control bits set before you started your
+ application. Also, they have always been poorly documented, and
+ are likely to hurt your application's usability with other curses
+ libraries.</p>
+
+ <p>Bear in mind that <code>refresh()</code> is a synonym for
+ <code>wrefresh(stdscr)</code>. Do not try to mix use of
+ <code>stdscr</code> with use of windows declared by
+ <code>newwin()</code>; a <code>refresh()</code> call will blow
+ them off the screen. The right way to handle this is to use
+ <code>subwin()</code>, or not touch <code>stdscr</code> at all
+ and tile your screen with declared windows which you then
+ <code>wnoutrefresh()</code> somewhere in your program event loop,
+ with a single <code>doupdate()</code> call to trigger actual
+ repainting.</p>
+
+ <p>You are much less likely to run into problems if you design
+ your screen layouts to use tiled rather than overlapping windows.
+ Historically, curses support for overlapping windows has been
+ weak, fragile, and poorly documented. The <code>ncurses</code>
+ library is not yet an exception to this rule.</p>
+
+ <p>There is a panels library included in the <code>ncurses</code>
+ distribution that does a pretty good job of strengthening the
+ overlapping-windows facilities.</p>
+
+ <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>
+
+ <h3><a name="leaving" id="leaving">Temporarily Leaving NCURSES
+ Mode</a></h3>
+
+ <p>Sometimes you will want to write a program that spends most of
+ its time in screen mode, but occasionally returns to ordinary
+ &ldquo;cooked&rdquo; mode. A common reason for this is to support
+ shell-out. This behavior is simple to arrange in
+ <code>ncurses</code>.</p>
+
+ <p>To leave <code>ncurses</code> mode, call <code>endwin()</code>
+ as you would if you were intending to terminate the program. This
+ will take the screen back to cooked mode; you can do your
+ shell-out. When you want to return to <code>ncurses</code> mode,
+ simply call <code>refresh()</code> or <code>doupdate()</code>.
+ This will repaint the screen.</p>
+
+ <p>There is a boolean function, <code>isendwin()</code>, which
+ code can use to test whether <code>ncurses</code> screen mode is
+ active. It returns <code>TRUE</code> in the interval between an
+ <code>endwin()</code> call and the following
+ <code>refresh()</code>, <code>FALSE</code> otherwise.</p>
+
+ <p>Here is some sample code for shellout:</p>
+
+ <pre>
addstr("Shelling out...");
def_prog_mode(); /* save current tty modes */
endwin(); /* restore original tty modes */
system("sh"); /* run shell */
addstr("returned.\n"); /* prepare return message */
refresh(); /* restore save modes, repaint screen */
-</PRE>
-
-<H3><A NAME="xterm">Using NCURSES under XTERM</A></H3>
-
-A resize operation in X sends <CODE>SIGWINCH</CODE> to the application running
-under xterm.
-
-The easiest way to handle <CODE>SIGWINCH</CODE>
-is to do an <CODE>endwin</CODE>,
-followed by an <CODE>refresh</CODE> and a screen repaint you code
-yourself.
-The <CODE>refresh</CODE> will pick up the new screen size from the
-xterm's environment. <P>
-
-That is the standard way, of course (it even works with some vendor's curses
-implementations).
-Its drawback is that it clears the screen to reinitialize the display, and does
-not resize subwindows which must be shrunk.
-<CODE>Ncurses</CODE> provides an extension which works better, the
-<CODE>resizeterm</CODE> function. That function ensures that all windows
-are limited to the new screen dimensions, and pads <CODE>stdscr</CODE>
-with blanks if the screen is larger. <P>
-
-The <CODE>ncurses</CODE> library provides a SIGWINCH signal handler,
-which pushes a <CODE>KEY_RESIZE</CODE> via the wgetch() calls.
-When <CODE>ncurses</CODE> returns that code,
-it calls <code>resizeterm</CODE>
-to update the size of the standard screen's window, repainting that
-(filling with blanks or truncating as needed).
-It also resizes other windows,
-but its effect may be less satisfactory because it cannot
-know how you want the screen re-painted.
-You will usually have to write special-purpose code to handle
-<CODE>KEY_RESIZE</CODE> yourself.
-
-<H3><A NAME="screens">Handling Multiple Terminal Screens</A></H3>
-
-The <CODE>initscr()</CODE> function actually calls a function named
-<CODE>newterm()</CODE> to do most of its work. If you are writing a program that
-opens multiple terminals, use <CODE>newterm()</CODE> directly. <P>
-
-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.
-
-<H3><A NAME="testing">Testing for Terminal Capabilities</A></H3>
-
-Sometimes you may want to write programs that test for the presence of various
-capabilities before deciding whether to go into <CODE>ncurses</CODE> mode. An easy
-way to do this is to call <CODE>setupterm()</CODE>, then use the functions
-<CODE>tigetflag()</CODE>, <CODE>tigetnum()</CODE>, and <CODE>tigetstr()</CODE> to do your
-testing. <P>
-
-A particularly useful case of this often comes up when you want to
-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>.
-
-<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!
-
-<H3><A NAME="special">Special Features of NCURSES</A></H3>
-
-The <CODE>wresize()</CODE> function allows you to resize a window in place.
-The associated <CODE>resizeterm()</CODE> function simplifies the construction
-of <a HREF="#xterm">SIGWINCH</a> handlers, for resizing all windows. <P>
-
-The <CODE>define_key()</CODE> function allows you
-to define at runtime function-key control sequences which are not in the
-terminal description.
-The <CODE>keyok()</CODE> function allows you to temporarily
-enable or disable interpretation of any function-key control sequence. <P>
-
-The <CODE>use_default_colors()</CODE> function allows you to construct
-applications which can use the terminal's default foreground and
-background colors as an additional "default" color.
-Several terminal emulators support this feature, which is based on ISO 6429. <P>
-
-Ncurses supports up 16 colors, unlike SVr4 curses which defines only 8.
-While most terminals which provide color allow only 8 colors, about
-a quarter (including XFree86 xterm) support 16 colors.
-
-<H2><A NAME="compat">Compatibility with Older Versions</A></H2>
-
-Despite our best efforts, there are some differences between <CODE>ncurses</CODE>
-and the (undocumented!) behavior of older curses implementations. These arise
-from ambiguities or omissions in the documentation of the API.
-
-<H3><A NAME="refbug">Refresh of Overlapping Windows</A></H3>
-
-If you define two windows A and B that overlap, and then alternately scribble
-on and refresh them, the changes made to the overlapping region under historic
-<CODE>curses</CODE> versions were often not documented precisely. <P>
-
-To understand why this is a problem, remember that screen updates are
-calculated between two representations of the <EM>entire</EM> display. The
-documentation says that when you refresh a window, it is first copied to the
-virtual screen, and then changes are calculated to update the physical screen
-(and applied to the terminal). But "copied to" is not very specific, and
-subtle differences in how copying works can produce different behaviors in the
-case where two overlapping windows are each being refreshed at unpredictable
-intervals. <P>
-
-What happens to the overlapping region depends on what <CODE>wnoutrefresh()</CODE>
-does with its argument -- what portions of the argument window it copies to the
-virtual screen. Some implementations do "change copy", copying down only
-locations in the window that have changed (or been marked changed with
-<CODE>wtouchln()</CODE> and friends). Some implementations do "entire copy",
-copying <EM>all</EM> window locations to the virtual screen whether or not
-they have changed. <P>
-
-The <CODE>ncurses</CODE> library itself has not always been consistent on this
-score. Due to a bug, versions 1.8.7 to 1.9.8a did entire copy. Versions
-1.8.6 and older, and versions 1.9.9 and newer, do change copy. <P>
-
-For most commercial curses implementations, it is not documented and not known
-for sure (at least not to the <CODE>ncurses</CODE> maintainers) whether they do
-change copy or entire copy. We know that System V release 3 curses has logic
-in it that looks like an attempt to do change copy, but the surrounding logic
-and data representations are sufficiently complex, and our knowledge
-sufficiently indirect, that it's hard to know whether this is reliable.
-
-It is not clear what the SVr4 documentation and XSI standard intend. The XSI
-Curses standard barely mentions wnoutrefresh(); the SVr4 documents seem to be
-describing entire-copy, but it is possible with some effort and straining to
-read them the other way. <P>
-
-It might therefore 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 <CODE>touchwin()</CODE> before the <CODE>wnoutrefresh()</CODE> call to
-guarantee an entire-contents copy anywhere. <P>
-
-The really clean way to handle this is to use the panels library. If,
-when you want a screen update, you do <CODE>update_panels()</CODE>, it will
-do all the necessary <CODE>wnoutrefresh()</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.
-
-<H3><A NAME="backbug">Background Erase</A></H3>
-
-If you have been using a very old versions of <CODE>ncurses</CODE> (1.8.7 or
-older) you may be surprised by the behavior of the erase functions. In older
-versions, erased areas of a window were filled with a blank modified by the
-window's current attribute (as set by <STRONG>wattrset()</STRONG>, <STRONG>wattron()</STRONG>,
-<STRONG>wattroff()</STRONG> and friends). <P>
-
-In newer versions, this is not so. Instead, the attribute of erased blanks
-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.
-
-<H2><A NAME="xsifuncs">XSI Curses Conformance</A></H2>
-
-The <CODE>ncurses</CODE> library is intended to be base-level conformant with the
-XSI Curses standard from X/Open. Many extended-level features (in fact, almost
-all features not directly concerned with wide characters and
-internationalization) are also supported. <P>
-
-One effect of XSI conformance is the change in behavior described under
-<A HREF="#backbug">"Background Erase -- Compatibility with Old Versions"</A>. <P>
-
-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>.
-
-<H1><A NAME="panels">The Panels Library</A></H1>
-
-The <CODE>ncurses</CODE> library by itself provides good support for screen
-displays in which the windows are tiled (non-overlapping). In the more
-general case that windows may overlap, you have to use a series of
-<CODE>wnoutrefresh()</CODE> calls followed by a <CODE>doupdate()</CODE>, and be
-careful about the order you do the window refreshes in. It has to be
-bottom-upwards, otherwise parts of windows that should be obscured will
-show through. <P>
-
-When your interface design is such that windows may dive deeper into the
-visibility stack or pop to the top at runtime, the resulting book-keeping
-can be tedious and difficult to get right. Hence the panels library. <P>
-
-The <CODE>panel</CODE> library first appeared in AT&amp;T System V. The
-version documented here is the <CODE>panel</CODE> code distributed
-with <CODE>ncurses</CODE>.
-
-<H2><A NAME="pcompile">Compiling With the Panels Library</A></H2>
-
-Your panels-using modules must import the panels library declarations with
-
-<PRE>
- #include &lt;panel.h&gt;
-</PRE>
-
-and must be linked explicitly with the panels library using an
-<CODE>-lpanel</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>-lpanel</CODE> first and <CODE>-lncurses</CODE> second.
-
-<H2><A NAME="poverview">Overview of Panels</A></H2>
-
-A panel object is a window that is implicitly treated as part of a
-<DFN>deck</DFN> including all other panel objects. The deck has an implicit
-bottom-to-top visibility order. The panels library includes an update
-function (analogous to <CODE>refresh()</CODE>) that displays all panels in the
-deck in the proper order to resolve overlaps. The standard window,
-<CODE>stdscr</CODE>, is considered below all panels. <P>
-
-Details on the panels functions are available in the man pages. We'll just
-hit the highlights here. <P>
-
-You create a panel from a window by calling <CODE>new_panel()</CODE> on a
-window pointer. It then becomes the top of the deck. The panel's window
-is available as the value of <CODE>panel_window()</CODE> called with the
-panel pointer as argument.<P>
-
-You can delete a panel (removing it from the deck) with <CODE>del_panel</CODE>.
-This will not deallocate the associated window; you have to do that yourself.
+</pre>
+
+ <h3><a name="xterm" id="xterm">Using NCURSES under XTERM</a></h3>
+
+ <p>A resize operation in X sends <code>SIGWINCH</code> to the
+ application running under xterm. The easiest way to handle
+ <code>SIGWINCH</code> is to do an <code>endwin</code>, followed
+ by an <code>refresh</code> and a screen repaint you code
+ yourself. The <code>refresh</code> will pick up the new screen
+ size from the xterm's environment.</p>
+
+ <p>That is the standard way, of course (it even works with some
+ vendor's curses implementations). Its drawback is that it clears
+ the screen to reinitialize the display, and does not resize
+ subwindows which must be shrunk. <code>Ncurses</code> provides an
+ extension which works better, the <code>resizeterm</code>
+ function. That function ensures that all windows are limited to
+ the new screen dimensions, and pads <code>stdscr</code> with
+ blanks if the screen is larger.</p>
+
+ <p>The <code>ncurses</code> library provides a SIGWINCH signal
+ handler, which pushes a <code>KEY_RESIZE</code> via the wgetch()
+ calls. When <code>ncurses</code> returns that code, it calls
+ <code>resizeterm</code> to update the size of the standard
+ screen's window, repainting that (filling with blanks or
+ truncating as needed). It also resizes other windows, but its
+ effect may be less satisfactory because it cannot know how you
+ want the screen re-painted. You will usually have to write
+ special-purpose code to handle <code>KEY_RESIZE</code>
+ yourself.</p>
+
+ <h3><a name="screens" id="screens">Handling Multiple Terminal
+ Screens</a></h3>
+
+ <p>The <code>initscr()</code> function actually calls a function
+ named <code>newterm()</code> to do most of its work. If you are
+ writing a program that opens multiple terminals, use
+ <code>newterm()</code> directly.</p>
+
+ <p>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>
+
+ <h3><a name="testing" id="testing">Testing for Terminal
+ Capabilities</a></h3>
+
+ <p>Sometimes you may want to write programs that test for the
+ presence of various capabilities before deciding whether to go
+ into <code>ncurses</code> mode. An easy way to do this is to call
+ <code>setupterm()</code>, then use the functions
+ <code>tigetflag()</code>, <code>tigetnum()</code>, and
+ <code>tigetstr()</code> to do your testing.</p>
+
+ <p>A particularly useful case of this often comes up when you
+ want to test whether a given terminal type should be treated as
+ &ldquo;smart&rdquo; (cursor-addressable) or &ldquo;stupid&rdquo;.
+ 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>
+
+ <h3><a name="tuning" id="tuning">Tuning for Speed</a></h3>
+
+ <p>Use the <code>addchstr()</code> family of functions for fast
+ screen-painting of text when you know the text does not contain
+ any control characters. Try to make attribute changes infrequent
+ on your screens. Do not use the <code>immedok()</code>
+ option!</p>
+
+ <h3><a name="special" id="special">Special Features of
+ NCURSES</a></h3>
+
+ <p>The <code>wresize()</code> function allows you to resize a
+ window in place. The associated <code>resizeterm()</code>
+ function simplifies the construction of <a href=
+ "#xterm">SIGWINCH</a> handlers, for resizing all windows.</p>
+
+ <p>The <code>define_key()</code> function allows you to define at
+ runtime function-key control sequences which are not in the
+ terminal description. The <code>keyok()</code> function allows
+ you to temporarily enable or disable interpretation of any
+ function-key control sequence.</p>
+
+ <p>The <code>use_default_colors()</code> function allows you to
+ construct applications which can use the terminal's default
+ foreground and background colors as an additional "default"
+ color. Several terminal emulators support this feature, which is
+ based on ISO 6429.</p>
+
+ <p>Ncurses supports up 16 colors, unlike SVr4 curses which
+ defines only 8. While most terminals which provide color allow
+ only 8 colors, about a quarter (including XFree86 xterm) support
+ 16 colors.</p>
+
+ <h2><a name="compat" id="compat">Compatibility with Older
+ Versions</a></h2>
+
+ <p>Despite our best efforts, there are some differences between
+ <code>ncurses</code> and the (undocumented!) behavior of older
+ curses implementations. These arise from ambiguities or omissions
+ in the documentation of the API.</p>
+
+ <h3><a name="refbug" id="refbug">Refresh of Overlapping
+ Windows</a></h3>
+
+ <p>If you define two windows A and B that overlap, and then
+ alternately scribble on and refresh them, the changes made to the
+ overlapping region under historic <code>curses</code> versions
+ were often not documented precisely.</p>
+
+ <p>To understand why this is a problem, remember that screen
+ updates are calculated between two representations of the
+ <em>entire</em> display. The documentation says that when you
+ refresh a window, it is first copied to the virtual screen, and
+ then changes are calculated to update the physical screen (and
+ applied to the terminal). But "copied to" is not very specific,
+ and subtle differences in how copying works can produce different
+ behaviors in the case where two overlapping windows are each
+ being refreshed at unpredictable intervals.</p>
+
+ <p>What happens to the overlapping region depends on what
+ <code>wnoutrefresh()</code> does with its argument -- what
+ portions of the argument window it copies to the virtual screen.
+ Some implementations do "change copy", copying down only
+ locations in the window that have changed (or been marked changed
+ with <code>wtouchln()</code> and friends). Some implementations
+ do "entire copy", copying <em>all</em> window locations to the
+ virtual screen whether or not they have changed.</p>
+
+ <p>The <code>ncurses</code> library itself has not always been
+ consistent on this score. Due to a bug, versions 1.8.7 to 1.9.8a
+ did entire copy. Versions 1.8.6 and older, and versions 1.9.9 and
+ newer, do change copy.</p>
+
+ <p>For most commercial curses implementations, it is not
+ documented and not known for sure (at least not to the
+ <code>ncurses</code> maintainers) whether they do change copy or
+ entire copy. We know that System V release 3 curses has logic in
+ it that looks like an attempt to do change copy, but the
+ surrounding logic and data representations are sufficiently
+ complex, and our knowledge sufficiently indirect, that it is hard
+ to know whether this is reliable. It is not clear what the SVr4
+ documentation and XSI standard intend. The XSI Curses standard
+ barely mentions wnoutrefresh(); the SVr4 documents seem to be
+ describing entire-copy, but it is possible with some effort and
+ straining to read them the other way.</p>
+
+ <p>It might therefore 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
+ <code>touchwin()</code> before the <code>wnoutrefresh()</code>
+ call to guarantee an entire-contents copy anywhere.</p>
+
+ <p>The really clean way to handle this is to use the panels
+ library. If, when you want a screen update, you do
+ <code>update_panels()</code>, it will do all the necessary
+ <code>wnoutrefresh()</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>
+
+ <h3><a name="backbug" id="backbug">Background Erase</a></h3>
+
+ <p>If you have been using a very old versions of
+ <code>ncurses</code> (1.8.7 or older) you may be surprised by the
+ behavior of the erase functions. In older versions, erased areas
+ of a window were filled with a blank modified by the window's
+ current attribute (as set by <strong>wattrset()</strong>,
+ <strong>wattron()</strong>, <strong>wattroff()</strong> and
+ friends).</p>
+
+ <p>In newer versions, this is not so. Instead, the attribute of
+ erased blanks is normal unless and until it is modified by the
+ functions <code>bkgdset()</code> or <code>wbkgdset()</code>.</p>
+
+ <p>This change in behavior conforms <code>ncurses</code> to
+ System V Release 4 and the XSI Curses standard.</p>
+
+ <h2><a name="xsifuncs" id="xsifuncs">XSI Curses Conformance</a></h2>
+
+ <p>The <code>ncurses</code> library is intended to be base-level
+ conformant with the XSI Curses standard from X/Open. Many
+ extended-level features (in fact, almost all features not
+ directly concerned with wide characters and internationalization)
+ are also supported.</p>
+
+ <p>One effect of XSI conformance is the change in behavior
+ described under <a href="#backbug">"Background Erase --
+ Compatibility with Old Versions"</a>.</p>
+
+ <p>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>
+
+ <h1><a name="panels" id="panels">The Panels Library</a></h1>
+
+ <p>The <code>ncurses</code> library by itself provides good
+ support for screen displays in which the windows are tiled
+ (non-overlapping). In the more general case that windows may
+ overlap, you have to use a series of <code>wnoutrefresh()</code>
+ calls followed by a <code>doupdate()</code>, and be careful about
+ the order you do the window refreshes in. It has to be
+ bottom-upwards, otherwise parts of windows that should be
+ obscured will show through.</p>
+
+ <p>When your interface design is such that windows may dive
+ deeper into the visibility stack or pop to the top at runtime,
+ the resulting book-keeping can be tedious and difficult to get
+ right. Hence the panels library.</p>
+
+ <p>The <code>panel</code> library first appeared in AT&amp;T
+ System V. The version documented here is the <code>panel</code>
+ code distributed with <code>ncurses</code>.</p>
+
+ <h2><a name="pcompile" id="pcompile">Compiling With the Panels
+ Library</a></h2>
+
+ <p>Your panels-using modules must import the panels library
+ declarations with</p>
+
+ <pre>
+ #include &lt;panel.h&gt;
+</pre>
+
+ <p>and must be linked explicitly with the panels library using an
+ <code>-lpanel</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>-lpanel</code> first and
+ <code>-lncurses</code> second.</p>
+
+ <h2><a name="poverview" id="poverview">Overview of Panels</a></h2>
+
+ <p>A panel object is a window that is implicitly treated as part
+ of a <dfn>deck</dfn> including all other panel objects. The deck
+ has an implicit bottom-to-top visibility order. The panels
+ library includes an update function (analogous to
+ <code>refresh()</code>) that displays all panels in the deck in
+ the proper order to resolve overlaps. The standard window,
+ <code>stdscr</code>, is considered below all panels.</p>
+
+ <p>Details on the panels functions are available in the man
+ pages. We will just hit the highlights here.</p>
+
+ <p>You create a panel from a window by calling
+ <code>new_panel()</code> on a window pointer. It then becomes the
+ top of the deck. The panel's window is available as the value of
+ <code>panel_window()</code> called with the panel pointer as
+ argument.</p>
+
+ <p>You can delete a panel (removing it from the deck) with
+ <code>del_panel</code>. This will not deallocate the associated
+ window; you have to do that yourself. You can replace a panel's
+ window with a different window by calling
+ <code>replace_window</code>. The new window may be of different
+ size; the panel code will re-compute all overlaps. This operation
+ does not change the panel's position in the deck.</p>
+
+ <p>To move a panel's window, use <code>move_panel()</code>. The
+ <code>mvwin()</code> function on the panel's window is not
+ sufficient because it does not update the panels library's
+ representation of where the windows are. This operation leaves
+ the panel's depth, contents, and size unchanged.</p>
+
+ <p>Two functions (<code>top_panel()</code>,
+ <code>bottom_panel()</code>) are provided for rearranging the
+ deck. The first pops its argument window to the top of the deck;
+ the second sends it to the bottom. Either operation leaves the
+ panel's screen location, contents, and size unchanged.</p>
+
+ <p>The function <code>update_panels()</code> does all the
+ <code>wnoutrefresh()</code> calls needed to prepare for
+ <code>doupdate()</code> (which you must call yourself,
+ afterwards).</p>
+
+ <p>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 will generate a lot of unnecessary refresh activity and
+ screen flicker.</p>
+
+ <h2><a name="pstdscr" id="pstdscr">Panels, Input, and the
+ Standard Screen</a></h2>
+
+ <p>You should not mix <code>wnoutrefresh()</code> or
+ <code>wrefresh()</code> operations with panels code; this will
+ work only if the argument window is either in the top panel or
+ unobscured by any other panels.</p>
+
+ <p>The <code>stsdcr</code> window is a special case. It is
+ considered below all panels. Because changes to panels may
+ obscure parts of <code>stdscr</code>, though, you should call
+ <code>update_panels()</code> before <code>doupdate()</code> even
+ when you only change <code>stdscr</code>.</p>
+
+ <p>Note that <code>wgetch</code> automatically calls
+ <code>wrefresh</code>. Therefore, before requesting input from a
+ panel window, you need to be sure that the panel is totally
+ unobscured.</p>
+
+ <p>There is presently no way to display changes to one obscured
+ panel without repainting all panels.</p>
-You can replace a panel's window with a different window by calling
-<CODE>replace_window</CODE>. The new window may be of different size;
-the panel code will re-compute all overlaps. This operation doesn't
-change the panel's position in the deck. <P>
+ <h2><a name="hiding" id="hiding">Hiding Panels</a></h2>
+
+ <p>It is possible to remove a panel from the deck temporarily;
+ use <code>hide_panel</code> for this. Use
+ <code>show_panel()</code> to render it visible again. The
+ predicate function <code>panel_hidden</code> tests whether or not
+ a panel is hidden.</p>
+
+ <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>
+
+ <h2><a name="pmisc" id="pmisc">Miscellaneous Other Facilities</a></h2>
+
+ <p>It is possible to navigate the deck using the functions
+ <code>panel_above()</code> and <code>panel_below</code>. Handed a
+ panel pointer, they return the panel above or below that panel.
+ Handed <code>NULL</code>, they return the bottom-most or top-most
+ panel.</p>
+
+ <p>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>
+
+ <h1><a name="menu" id="menu">The Menu Library</a></h1>
-To move a panel's window, use <CODE>move_panel()</CODE>. The
-<CODE>mvwin()</CODE> function on the panel's window isn't sufficient because it
-doesn't update the panels library's representation of where the windows are.
-This operation leaves the panel's depth, contents, and size unchanged. <P>
+ <p>A menu is a screen display that assists the user to choose
+ some subset of a given set of items. The <code>menu</code>
+ library is a curses extension that supports easy programming of
+ menu hierarchies with a uniform but flexible interface.</p>
-Two functions (<CODE>top_panel()</CODE>, <CODE>bottom_panel()</CODE>) are
-provided for rearranging the deck. The first pops its argument window to the
-top of the deck; the second sends it to the bottom. Either operation leaves
-the panel's screen location, contents, and size unchanged. <P>
+ <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>
-The function <CODE>update_panels()</CODE> does all the
-<CODE>wnoutrefresh()</CODE> calls needed to prepare for
-<CODE>doupdate()</CODE> (which you must call yourself, afterwards). <P>
-
-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.
-
-<H2><A NAME="pstdscr">Panels, Input, and the Standard Screen</A></H2>
-
-You shouldn't mix <CODE>wnoutrefresh()</CODE> or <CODE>wrefresh()</CODE>
-operations with panels code; this will work only if the argument window
-is either in the top panel or unobscured by any other panels. <P>
-
-The <CODE>stsdcr</CODE> window is a special case. It is considered below all
-panels. Because changes to panels may obscure parts of <CODE>stdscr</CODE>,
-though, you should call <CODE>update_panels()</CODE> before
-<CODE>doupdate()</CODE> even when you only change <CODE>stdscr</CODE>. <P>
-
-Note that <CODE>wgetch</CODE> automatically calls <CODE>wrefresh</CODE>.
-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.
-
-<H2><A NAME="hiding">Hiding Panels</A></H2>
-
-It's possible to remove a panel from the deck temporarily; use
-<CODE>hide_panel</CODE> for this. Use <CODE>show_panel()</CODE> to render it
-visible again. The predicate function <CODE>panel_hidden</CODE>
-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.
-
-<H2><A NAME="pmisc">Miscellaneous Other Facilities</A></H2>
-
-It's possible to navigate the deck using the functions
-<CODE>panel_above()</CODE> and <CODE>panel_below</CODE>. Handed a panel
-pointer, they return the panel above or below that panel. Handed
-<CODE>NULL</CODE>, they return the bottom-most or top-most panel. <P>
-
-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.
-
-<H1><A NAME="menu">The Menu Library</A></H1>
-
-A menu is a screen display that assists the user to choose some subset
-of a given set of items. The <CODE>menu</CODE> library is a curses
-extension that supports easy programming of menu hierarchies with a
-uniform but flexible interface. <P>
-
-The <CODE>menu</CODE> library first appeared in AT&amp;T System V. The
-version documented here is the <CODE>menu</CODE> code distributed
-with <CODE>ncurses</CODE>.
-
-<H2><A NAME="mcompile">Compiling With the menu Library</A></H2>
-
-Your menu-using modules must import the menu library declarations with
-
-<PRE>
- #include &lt;menu.h&gt;
-</PRE>
-
-and must be linked explicitly with the menus library using an
-<CODE>-lmenu</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>-lmenu</CODE> first and <CODE>-lncurses</CODE> second.
-
-<H2><A NAME="moverview">Overview of Menus</A></H2>
-
-The menus created by this library consist of collections of
-<DFN>items</DFN> including a name string part and a description string
-part. To make menus, you create groups of these items and connect
-them with menu frame objects. <P>
-
-The menu can then by <DFN>posted</DFN>, that is written to an
-associated window. Actually, each menu has two associated windows; a
-containing window in which the programmer can scribble titles or
-borders, and a subwindow in which the menu items proper are displayed.
-If this subwindow is too small to display all the items, it will be a
-scrollable viewport on the collection of items. <P>
-
-A menu may also be <DFN>unposted</DFN> (that is, undisplayed), and finally
-freed to make the storage associated with it and its items available for
-re-use. <P>
-
-The general flow of control of a menu program looks like this:
-
-<OL>
-<LI>Initialize <CODE>curses</CODE>.
-<LI>Create the menu items, using <CODE>new_item()</CODE>.
-<LI>Create the menu using <CODE>new_menu()</CODE>.
-<LI>Post the menu using <CODE>post_menu()</CODE>.
-<LI>Refresh the screen.
-<LI>Process user requests via an input loop.
-<LI>Unpost the menu using <CODE>unpost_menu()</CODE>.
-<LI>Free the menu, using <CODE>free_menu()</CODE>.
-<LI>Free the items using <CODE>free_item()</CODE>.
-<LI>Terminate <CODE>curses</CODE>.
-</OL>
-
-<H2><A NAME="mselect">Selecting items</A></H2>
-
-Menus may be multi-valued or (the default) single-valued (see the manual
-page <CODE>menu_opts(3x)</CODE> to see how to change the default).
-Both types always have a <DFN>current item</DFN>. <P>
-
-From a single-valued menu you can read the selected value simply by looking
-at the current item. From a multi-valued menu, you get the selected set
-by looping through the items applying the <CODE>item_value()</CODE>
-predicate function. Your menu-processing code can use the function
-<CODE>set_item_value()</CODE> to flag the items in the select set. <P>
-
-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.
-
-<H2><A NAME="mdisplay">Menu Display</A></H2>
-
-The menu library calculates a minimum display size for your window, based
-on the following variables:
-
-<UL>
-<LI>The number and maximum length of the menu items
-<LI>Whether the O_ROWMAJOR option is enabled
-<LI>Whether display of descriptions is enabled
-<LI>Whatever menu format may have been set by the programmer
-<LI>The length of the menu mark string used for highlighting selected items
-</UL>
-
-The function <CODE>set_menu_format()</CODE> allows you to set the
-maximum size of the viewport or <DFN>menu page</DFN> that will be used
-to display menu items. You can retrieve any format associated with a
-menu with <CODE>menu_format()</CODE>. The default format is rows=16,
-columns=1. <P>
-
-The actual menu page may be smaller than the format size. This depends
-on the item number and size and whether O_ROWMAJOR is on. This option
-(on by default) causes menu items to be displayed in a `raster-scan'
-pattern, so that if more than one item will fit horizontally the first
-couple of items are side-by-side in the top row. The alternative is
-column-major display, which tries to put the first several items in
-the first column. <P>
-
-As mentioned above, a menu format not large enough to allow all items to fit
-on-screen will result in a menu display that is vertically scrollable. <P>
-You can scroll it with requests to the menu driver, which will be described
-in the section on <A HREF="#minput">menu input handling</A>. <P>
-
-Each menu has a <DFN>mark string</DFN> used to visually tag selected items;
-see the <CODE>menu_mark(3x)</CODE> manual page for details. The mark
-string length also influences the menu page size. <P>
-
-The function <CODE>scale_menu()</CODE> returns the minimum display size
-that the menu code computes from all these factors.
-
-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.
-
-<H2><A NAME="mwindows">Menu Windows</A></H2>
-
-Each menu has, as mentioned previously, a pair of associated windows.
-Both these windows are painted when the menu is posted and erased when
-the menu is unposted. <P>
-
-The outer or frame window is not otherwise touched by the menu
-routines. It exists so the programmer can associate a title, a
-border, or perhaps help text with the menu and have it properly
-refreshed or erased at post/unpost time. The inner window or
-<DFN>subwindow</DFN> is where the current menu page is displayed. <P>
-
-By default, both windows are <CODE>stdscr</CODE>. You can set them with the
-functions in <CODE>menu_win(3x)</CODE>. <P>
-
-When you call <CODE>post_menu()</CODE>, you write the menu to its
-subwindow. When you call <CODE>unpost_menu()</CODE>, you erase the
-subwindow, However, neither of these actually modifies the screen. To
-do that, call <CODE>wrefresh()</CODE> or some equivalent.
-
-<H2><A NAME="minput">Processing Menu Input</A></H2>
-
-The main loop of your menu-processing code should call
-<CODE>menu_driver()</CODE> repeatedly. The first argument of this routine
-is a menu pointer; the second is a menu command code. You should write an
-input-fetching routine that maps input characters to menu command codes, and
-pass its output to <CODE>menu_driver()</CODE>. The menu command codes are
-fully documented in <CODE>menu_driver(3x)</CODE>. <P>
-
-The simplest group of command codes is <CODE>REQ_NEXT_ITEM</CODE>,
-<CODE>REQ_PREV_ITEM</CODE>, <CODE>REQ_FIRST_ITEM</CODE>,
-<CODE>REQ_LAST_ITEM</CODE>, <CODE>REQ_UP_ITEM</CODE>,
-<CODE>REQ_DOWN_ITEM</CODE>, <CODE>REQ_LEFT_ITEM</CODE>,
-<CODE>REQ_RIGHT_ITEM</CODE>. These change the currently selected
-item. These requests may cause scrolling of the menu page if it only
-partially displayed. <P>
-
-There are explicit requests for scrolling which also change the
-current item (because the select location does not change, but the
-item there does). These are <CODE>REQ_SCR_DLINE</CODE>,
-<CODE>REQ_SCR_ULINE</CODE>, <CODE>REQ_SCR_DPAGE</CODE>, and
-<CODE>REQ_SCR_UPAGE</CODE>. <P>
-
-The <CODE>REQ_TOGGLE_ITEM</CODE> selects or deselects the current item.
-It is for use in multi-valued menus; if you use it with <CODE>O_ONEVALUE</CODE>
-on, you'll get an error return (<CODE>E_REQUEST_DENIED</CODE>). <P>
-
-Each menu has an associated pattern buffer. The
-<CODE>menu_driver()</CODE> logic tries to accumulate printable ASCII
-characters passed in in that buffer; when it matches a prefix of an
-item name, that item (or the next matching item) is selected. If
-appending a character yields no new match, that character is deleted
-from the pattern buffer, and <CODE>menu_driver()</CODE> returns
-<CODE>E_NO_MATCH</CODE>. <P>
-
-Some requests change the pattern buffer directly:
-<CODE>REQ_CLEAR_PATTERN</CODE>, <CODE>REQ_BACK_PATTERN</CODE>,
-<CODE>REQ_NEXT_MATCH</CODE>, <CODE>REQ_PREV_MATCH</CODE>. The latter
-two are useful when pattern buffer input matches more than one item
-in a multi-valued menu. <P>
-
-Each successful scroll or item navigation request clears the pattern
-buffer. It is also possible to set the pattern buffer explicitly
-with <CODE>set_menu_pattern()</CODE>. <P>
-
-Finally, menu driver requests above the constant <CODE>MAX_COMMAND</CODE>
-are considered application-specific commands. The <CODE>menu_driver()</CODE>
-code ignores them and returns <CODE>E_UNKNOWN_COMMAND</CODE>.
-
-<H2><A NAME="mmisc">Miscellaneous Other Features</A></H2>
-
-Various menu options can affect the processing and visual appearance
-and input processing of menus. See <CODE>menu_opts(3x) for
-details.</CODE> <P>
-
-It is possible to change the current item from application code; this
-is useful if you want to write your own navigation requests. It is
-also possible to explicitly set the top row of the menu display. See
-<CODE>mitem_current(3x)</CODE>.
-
-If your application needs to change the menu subwindow cursor for
-any reason, <CODE>pos_menu_cursor()</CODE> will restore it to the
-correct location for continuing menu driver processing. <P>
-
-It is possible to set hooks to be called at menu initialization and
-wrapup time, and whenever the selected item changes. See
-<CODE>menu_hook(3x)</CODE>. <P>
-
-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>.
-
-<H1><A NAME="form">The Forms Library</A></H1>
-
-The <CODE>form</CODE> library is a curses extension that supports easy
-programming of on-screen forms for data entry and program control. <P>
-
-The <CODE>form</CODE> library first appeared in AT&amp;T System V. The
-version documented here is the <CODE>form</CODE> code distributed
-with <CODE>ncurses</CODE>.
-
-<H2><A NAME="fcompile">Compiling With the form Library</A></H2>
-
-Your form-using modules must import the form library declarations with
-
-<PRE>
- #include &lt;form.h&gt;
-</PRE>
-
-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.
-
-<H2><A NAME="foverview">Overview of Forms</A></H2>
-
-A form is a collection of fields; each field may be either a label
-(explanatory text) or a data-entry location. Long forms may be
-segmented into pages; each entry to a new page clears the screen. <P>
-To make forms, you create groups of fields and connect them with form
-frame objects; the form library makes this relatively simple. <P>
-
-Once defined, a form can be <DFN>posted</DFN>, that is written to an
-associated window. Actually, each form has two associated windows; a
-containing window in which the programmer can scribble titles or
-borders, and a subwindow in which the form fields proper are displayed. <P>
-
-As the form user fills out the posted form, navigation and editing
-keys support movement between fields, editing keys support modifying
-field, and plain text adds to or changes data in a current field. The
-form library allows you (the forms designer) to bind each navigation
-and editing key to any keystroke accepted by <CODE>curses</CODE>
-
-Fields may have validation conditions on them, so that they check input
-data for type and value. The form library supplies a rich set of
-pre-defined field types, and makes it relatively easy to define new ones. <P>
-
-Once its transaction is completed (or aborted), a form may be
-<DFN>unposted</DFN> (that is, undisplayed), and finally freed to make
-the storage associated with it and its items available for re-use. <P>
-
-The general flow of control of a form program looks like this:
-
-<OL>
-<LI>Initialize <CODE>curses</CODE>.
-<LI>Create the form fields, using <CODE>new_field()</CODE>.
-<LI>Create the form using <CODE>new_form()</CODE>.
-<LI>Post the form using <CODE>post_form()</CODE>.
-<LI>Refresh the screen.
-<LI>Process user requests via an input loop.
-<LI>Unpost the form using <CODE>unpost_form()</CODE>.
-<LI>Free the form, using <CODE>free_form()</CODE>.
-<LI>Free the fields using <CODE>free_field()</CODE>.
-<LI>Terminate <CODE>curses</CODE>.
-</OL>
+ <h2><a name="mcompile" id="mcompile">Compiling With the menu
+ Library</a></h2>
-Note that this looks much like a menu program; the form library handles
-tasks which are in many ways similar, and its interface was obviously
-designed to resemble that of the <A HREF="#menu">menu library</A>
-wherever possible. <P>
+ <p>Your menu-using modules must import the menu library
+ declarations with</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.
+ <pre>
+ #include &lt;menu.h&gt;
+</pre>
-<H2><A NAME="fcreate">Creating and Freeing Fields and Forms</A></H2>
+ <p>and must be linked explicitly with the menus library using an
+ <code>-lmenu</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>-lmenu</code> first and
+ <code>-lncurses</code> second.</p>
-The basic function for creating fields is <CODE>new_field()</CODE>:
+ <h2><a name="moverview" id="moverview">Overview of Menus</a></h2>
-<PRE>
-FIELD *new_field(int height, int width, /* new field size */
- int top, int left, /* upper left corner */
- int offscreen, /* number of offscreen rows */
- int nbuf); /* number of working buffers */
-</PRE>
-
-Menu items always occupy a single row, but forms fields may have
-multiple rows. So <CODE>new_field()</CODE> requires you to specify a
-width and height (the first two arguments, which mist both be greater
-than zero). <P>
-
-You must also specify the location of the field's upper left corner on
-the screen (the third and fourth arguments, which must be zero or
-greater). Note that these coordinates are relative to the form
-subwindow, which will coincide with <CODE>stdscr</CODE> by default but
-need not be <CODE>stdscr</CODE> if you've done an explicit
-<CODE>set_form_win()</CODE> call. <P>
-
-The fifth argument allows you to specify a number of off-screen rows. If
-this is zero, the entire field will always be displayed. If it is
-nonzero, the form will be scrollable, with only one screen-full (initially
-the top part) displayed at any given time. If you make a field dynamic
-and grow it so it will no longer fit on the screen, the form will become
-scrollable even if the <CODE>offscreen</CODE> argument was initially zero. <P>
-
-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.
-
-<PRE>
-FIELD *dup_field(FIELD *field, /* field to copy */
- int top, int left); /* location of new copy */
-</PRE>
+ <p>The menus created by this library consist of collections of
+ <dfn>items</dfn> including a name string part and a description
+ string part. To make menus, you create groups of these items and
+ connect them with menu frame objects.</p>
-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>The menu can then by <dfn>posted</dfn>, that is written to an
+ associated window. Actually, each menu has two associated
+ windows; a containing window in which the programmer can scribble
+ titles or borders, and a subwindow in which the menu items proper
+ are displayed. If this subwindow is too small to display all the
+ items, it will be a scrollable viewport on the collection of
+ items.</p>
-<PRE>
-FIELD *link_field(FIELD *field, /* field to copy */
- int top, int left); /* location of new copy */
-</PRE>
+ <p>A menu may also be <dfn>unposted</dfn> (that is, undisplayed),
+ and finally freed to make the storage associated with it and its
+ items available for re-use.</p>
-The function <CODE>link_field()</CODE> also duplicates an existing field
-at a new location. The difference from <CODE>dup_field()</CODE> is that
-it arranges for the new field's buffer to be shared with the old one. <P>
+ <p>The general flow of control of a menu program looks like
+ this:</p>
-Besides the obvious use in making a field editable from two different
-form pages, linked fields give you a way to hack in dynamic labels. If
-you declare several fields linked to an original, and then make them
-inactive, changes from the original will still be propagated to the
-linked fields. <P>
+ <ol>
+ <li>Initialize <code>curses</code>.</li>
-As with duplicated fields, linked fields have attribute bits separate
-from the original. <P>
+ <li>Create the menu items, using <code>new_item()</code>.</li>
-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>
+ <li>Create the menu using <code>new_menu()</code>.</li>
-To connect fields to a form, use
+ <li>Post the menu using <code>post_menu()</code>.</li>
-<PRE>
-FORM *new_form(FIELD **fields);
-</PRE>
+ <li>Refresh the screen.</li>
+
+ <li>Process user requests via an input loop.</li>
+
+ <li>Unpost the menu using <code>unpost_menu()</code>.</li>
+
+ <li>Free the menu, using <code>free_menu()</code>.</li>
+
+ <li>Free the items using <code>free_item()</code>.</li>
+
+ <li>Terminate <code>curses</code>.</li>
+ </ol>
+
+ <h2><a name="mselect" id="mselect">Selecting items</a></h2>
+
+ <p>Menus may be multi-valued or (the default) single-valued (see
+ the manual page <code>menu_opts(3x)</code> to see how to change
+ the default). Both types always have a <dfn>current
+ item</dfn>.</p>
+
+ <p>From a single-valued menu you can read the selected value
+ simply by looking at the current item. From a multi-valued menu,
+ you get the selected set by looping through the items applying
+ the <code>item_value()</code> predicate function. Your
+ menu-processing code can use the function
+ <code>set_item_value()</code> to flag the items in the select
+ set.</p>
+
+ <p>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>
+
+ <h2><a name="mdisplay" id="mdisplay">Menu Display</a></h2>
+
+ <p>The menu library calculates a minimum display size for your
+ window, based on the following variables:</p>
+
+ <ul>
+ <li>The number and maximum length of the menu items</li>
+
+ <li>Whether the O_ROWMAJOR option is enabled</li>
+
+ <li>Whether display of descriptions is enabled</li>
+
+ <li>Whatever menu format may have been set by the
+ programmer</li>
+
+ <li>The length of the menu mark string used for highlighting
+ selected items</li>
+ </ul>
+
+ <p>The function <code>set_menu_format()</code> allows you to set
+ the maximum size of the viewport or <dfn>menu page</dfn> that
+ will be used to display menu items. You can retrieve any format
+ associated with a menu with <code>menu_format()</code>. The
+ default format is rows=16, columns=1.</p>
+
+ <p>The actual menu page may be smaller than the format size. This
+ depends on the item number and size and whether O_ROWMAJOR is on.
+ This option (on by default) causes menu items to be displayed in
+ a &ldquo;raster-scan&rdquo; pattern, so that if more than one
+ item will fit horizontally the first couple of items are
+ side-by-side in the top row. The alternative is column-major
+ display, which tries to put the first several items in the first
+ column.</p>
+
+ <p>As mentioned above, a menu format not large enough to allow
+ all items to fit on-screen will result in a menu display that is
+ vertically scrollable.</p>
+
+ <p>You can scroll it with requests to the menu driver, which will
+ be described in the section on <a href="#minput">menu input
+ handling</a>.</p>
+
+ <p>Each menu has a <dfn>mark string</dfn> used to visually tag
+ selected items; see the <code>menu_mark(3x)</code> manual page
+ for details. The mark string length also influences the menu page
+ size.</p>
+
+ <p>The function <code>scale_menu()</code> returns the minimum
+ display size that the menu code computes from all these factors.
+ There are other menu display attributes including a select
+ attribute, 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>
+
+ <h2><a name="mwindows" id="mwindows">Menu Windows</a></h2>
+
+ <p>Each menu has, as mentioned previously, a pair of associated
+ windows. Both these windows are painted when the menu is posted
+ and erased when the menu is unposted.</p>
+
+ <p>The outer or frame window is not otherwise touched by the menu
+ routines. It exists so the programmer can associate a title, a
+ border, or perhaps help text with the menu and have it properly
+ refreshed or erased at post/unpost time. The inner window or
+ <dfn>subwindow</dfn> is where the current menu page is
+ displayed.</p>
+
+ <p>By default, both windows are <code>stdscr</code>. You can set
+ them with the functions in <code>menu_win(3x)</code>.</p>
+
+ <p>When you call <code>post_menu()</code>, you write the menu to
+ its subwindow. When you call <code>unpost_menu()</code>, you
+ erase the subwindow, However, neither of these actually modifies
+ the screen. To do that, call <code>wrefresh()</code> or some
+ equivalent.</p>
+
+ <h2><a name="minput" id="minput">Processing Menu Input</a></h2>
+
+ <p>The main loop of your menu-processing code should call
+ <code>menu_driver()</code> repeatedly. The first argument of this
+ routine is a menu pointer; the second is a menu command code. You
+ should write an input-fetching routine that maps input characters
+ to menu command codes, and pass its output to
+ <code>menu_driver()</code>. The menu command codes are fully
+ documented in <code>menu_driver(3x)</code>.</p>
+
+ <p>The simplest group of command codes is
+ <code>REQ_NEXT_ITEM</code>, <code>REQ_PREV_ITEM</code>,
+ <code>REQ_FIRST_ITEM</code>, <code>REQ_LAST_ITEM</code>,
+ <code>REQ_UP_ITEM</code>, <code>REQ_DOWN_ITEM</code>,
+ <code>REQ_LEFT_ITEM</code>, <code>REQ_RIGHT_ITEM</code>. These
+ change the currently selected item. These requests may cause
+ scrolling of the menu page if it only partially displayed.</p>
+
+ <p>There are explicit requests for scrolling which also change
+ the current item (because the select location does not change,
+ but the item there does). These are <code>REQ_SCR_DLINE</code>,
+ <code>REQ_SCR_ULINE</code>, <code>REQ_SCR_DPAGE</code>, and
+ <code>REQ_SCR_UPAGE</code>.</p>
+
+ <p>The <code>REQ_TOGGLE_ITEM</code> selects or deselects the
+ current item. It is for use in multi-valued menus; if you use it
+ with <code>O_ONEVALUE</code> on, you will get an error return
+ (<code>E_REQUEST_DENIED</code>).</p>
+
+ <p>Each menu has an associated pattern buffer. The
+ <code>menu_driver()</code> logic tries to accumulate printable
+ ASCII characters passed in in that buffer; when it matches a
+ prefix of an item name, that item (or the next matching item) is
+ selected. If appending a character yields no new match, that
+ character is deleted from the pattern buffer, and
+ <code>menu_driver()</code> returns <code>E_NO_MATCH</code>.</p>
+
+ <p>Some requests change the pattern buffer directly:
+ <code>REQ_CLEAR_PATTERN</code>, <code>REQ_BACK_PATTERN</code>,
+ <code>REQ_NEXT_MATCH</code>, <code>REQ_PREV_MATCH</code>. The
+ latter two are useful when pattern buffer input matches more than
+ one item in a multi-valued menu.</p>
+
+ <p>Each successful scroll or item navigation request clears the
+ pattern buffer. It is also possible to set the pattern buffer
+ explicitly with <code>set_menu_pattern()</code>.</p>
+
+ <p>Finally, menu driver requests above the constant
+ <code>MAX_COMMAND</code> are considered application-specific
+ commands. The <code>menu_driver()</code> code ignores them and
+ returns <code>E_UNKNOWN_COMMAND</code>.</p>
+
+ <h2><a name="mmisc" id="mmisc">Miscellaneous Other Features</a></h2>
+
+ <p>Various menu options can affect the processing and visual
+ appearance and input processing of menus. See <code>menu_opts(3x)
+ for details.</code></p>
+
+ <p>It is possible to change the current item from application
+ code; this is useful if you want to write your own navigation
+ requests. It is also possible to explicitly set the top row of
+ the menu display. See <code>mitem_current(3x)</code>. If your
+ application needs to change the menu subwindow cursor for any
+ reason, <code>pos_menu_cursor()</code> will restore it to the
+ correct location for continuing menu driver processing.</p>
+
+ <p>It is possible to set hooks to be called at menu
+ initialization and wrapup time, and whenever the selected item
+ changes. See <code>menu_hook(3x)</code>.</p>
+
+ <p>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>
+
+ <h1><a name="form" id="form">The Forms Library</a></h1>
+
+ <p>The <code>form</code> library is a curses extension that
+ supports easy programming of on-screen forms for data entry and
+ program control.</p>
+
+ <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>
+
+ <h2><a name="fcompile" id="fcompile">Compiling With the form
+ Library</a></h2>
+
+ <p>Your form-using modules must import the form library
+ declarations with</p>
+
+ <pre>
+ #include &lt;form.h&gt;
+</pre>
+
+ <p>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>
+
+ <h2><a name="foverview" id="foverview">Overview of Forms</a></h2>
+
+ <p>A form is a collection of fields; each field may be either a
+ label (explanatory text) or a data-entry location. Long forms may
+ be segmented into pages; each entry to a new page clears the
+ screen.</p>
+
+ <p>To make forms, you create groups of fields and connect them
+ with form frame objects; the form library makes this relatively
+ simple.</p>
+
+ <p>Once defined, a form can be <dfn>posted</dfn>, that is written
+ to an associated window. Actually, each form has two associated
+ windows; a containing window in which the programmer can scribble
+ titles or borders, and a subwindow in which the form fields
+ proper are displayed.</p>
+
+ <p>As the form user fills out the posted form, navigation and
+ editing keys support movement between fields, editing keys
+ support modifying field, and plain text adds to or changes data
+ in a current field. The form library allows you (the forms
+ designer) to bind each navigation and editing key to any
+ keystroke accepted by <code>curses</code> Fields may have
+ validation conditions on them, so that they check input data for
+ type and value. The form library supplies a rich set of
+ pre-defined field types, and makes it relatively easy to define
+ new ones.</p>
+
+ <p>Once its transaction is completed (or aborted), a form may be
+ <dfn>unposted</dfn> (that is, undisplayed), and finally freed to
+ make the storage associated with it and its items available for
+ re-use.</p>
+
+ <p>The general flow of control of a form program looks like
+ this:</p>
+
+ <ol>
+ <li>Initialize <code>curses</code>.</li>
+
+ <li>Create the form fields, using
+ <code>new_field()</code>.</li>
+
+ <li>Create the form using <code>new_form()</code>.</li>
+
+ <li>Post the form using <code>post_form()</code>.</li>
+
+ <li>Refresh the screen.</li>
+
+ <li>Process user requests via an input loop.</li>
-This function expects to see a NULL-terminated array of field pointers.
-Said fields are connected to a newly-allocated form object; its address
-is returned (or else NULL if the allocation fails). <P>
+ <li>Unpost the form using <code>unpost_form()</code>.</li>
-Note that <CODE>new_field()</CODE> does <EM>not</EM> copy the pointer array
-into private storage; if you modify the contents of the pointer array
-during forms processing, all manner of bizarre things might happen. Also
-note that any given field may only be connected to one form. <P>
+ <li>Free the form, using <code>free_form()</code>.</li>
-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.
+ <li>Free the fields using <code>free_field()</code>.</li>
-<H2><A NAME="fattributes">Fetching and Changing Field Attributes</A></H2>
+ <li>Terminate <code>curses</code>.</li>
+ </ol>
-Each form field has a number of location and size attributes
-associated with it. There are other field attributes used to control
-display and editing of the field. Some (for example, the <CODE>O_STATIC</CODE> bit)
-involve sufficient complications to be covered in sections of their own
-later on. We cover the functions used to get and set several basic
-attributes here. <P>
+ <p>Note that this looks much like a menu program; the form
+ library handles tasks which are in many ways similar, and its
+ interface was obviously designed to resemble that of the <a href=
+ "#menu">menu library</a> wherever possible.</p>
-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>In forms programs, however, the &ldquo;process user
+ requests&rdquo; 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>
-<H3><A NAME="fsizes">Fetching Size and Location Data</A></H3>
+ <h2><a name="fcreate" id="fcreate">Creating and Freeing Fields
+ and Forms</a></h2>
-You can retrieve field sizes and locations through:
+ <p>The basic function for creating fields is
+ <code>new_field()</code>:</p>
-<PRE>
+ <pre>
+FIELD *new_field(int height, int width, /* new field size */
+ int top, int left, /* upper left corner */
+ int offscreen, /* number of offscreen rows */
+ int nbuf); /* number of working buffers */
+</pre>
+
+ <p>Menu items always occupy a single row, but forms fields may
+ have multiple rows. So <code>new_field()</code> requires you to
+ specify a width and height (the first two arguments, which mist
+ both be greater than zero).</p>
+
+ <p>You must also specify the location of the field's upper left
+ corner on the screen (the third and fourth arguments, which must
+ be zero or greater). Note that these coordinates are relative to
+ the form subwindow, which will coincide with <code>stdscr</code>
+ by default but need not be <code>stdscr</code> if you have done
+ an explicit <code>set_form_win()</code> call.</p>
+
+ <p>The fifth argument allows you to specify a number of
+ off-screen rows. If this is zero, the entire field will always be
+ displayed. If it is nonzero, the form will be scrollable, with
+ only one screen-full (initially the top part) displayed at any
+ given time. If you make a field dynamic and grow it so it will no
+ longer fit on the screen, the form will become scrollable even if
+ the <code>offscreen</code> argument was initially zero.</p>
+
+ <p>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>
+
+ <pre>
+FIELD *dup_field(FIELD *field, /* field to copy */
+ int top, int left); /* location of new copy */
+</pre>
+
+ <p>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>
+
+ <pre>
+FIELD *link_field(FIELD *field, /* field to copy */
+ int top, int left); /* location of new copy */
+</pre>
+
+ <p>The function <code>link_field()</code> also duplicates an
+ existing field at a new location. The difference from
+ <code>dup_field()</code> is that it arranges for the new field's
+ buffer to be shared with the old one.</p>
+
+ <p>Besides the obvious use in making a field editable from two
+ different form pages, linked fields give you a way to hack in
+ dynamic labels. If you declare several fields linked to an
+ original, and then make them inactive, changes from the original
+ will still be propagated to the linked fields.</p>
+
+ <p>As with duplicated fields, linked fields have attribute bits
+ separate from the original.</p>
+
+ <p>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>
+
+ <p>To connect fields to a form, use</p>
+
+ <pre>
+FORM *new_form(FIELD **fields);
+</pre>
+
+ <p>This function expects to see a NULL-terminated array of field
+ pointers. Said fields are connected to a newly-allocated form
+ object; its address is returned (or else NULL if the allocation
+ fails).</p>
+
+ <p>Note that <code>new_field()</code> does <em>not</em> copy the
+ pointer array into private storage; if you modify the contents of
+ the pointer array during forms processing, all manner of bizarre
+ things might happen. Also note that any given field may only be
+ connected to one form.</p>
+
+ <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>
+
+ <h2><a name="fattributes" id="fattributes">Fetching and Changing
+ Field Attributes</a></h2>
+
+ <p>Each form field has a number of location and size attributes
+ associated with it. There are other field attributes used to
+ control display and editing of the field. Some (for example, the
+ <code>O_STATIC</code> bit) involve sufficient complications to be
+ covered in sections of their own later on. We cover the functions
+ used to get and set several basic attributes here.</p>
+
+ <p>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>
+
+ <h3><a name="fsizes" id="fsizes">Fetching Size and Location
+ Data</a></h3>
+
+ <p>You can retrieve field sizes and locations through:</p>
+
+ <pre>
int field_info(FIELD *field, /* field from which to fetch */
int *height, *int width, /* field size */
int *top, int *left, /* upper left corner */
int *offscreen, /* number of offscreen rows */
int *nbuf); /* number of working buffers */
-</PRE>
+</pre>
-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>This function is a sort of inverse of
+ <code>new_field()</code>; instead of setting size and location
+ attributes of a new field, it fetches them from an existing
+ one.</p>
-<H3><A NAME="flocation">Changing the Field Location</A></H3>
+ <h3><a name="flocation" id="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:</p>
-<PRE>
+ <pre>
int move_field(FIELD *field, /* field to alter */
int top, int left); /* new upper-left corner */
-</PRE>
+</pre>
-You can, of course. query the current location through <CODE>field_info()</CODE>.
+ <p>You can, of course. query the current location through
+ <code>field_info()</code>.</p>
-<H3><A NAME="fjust">The Justification Attribute</A></H3>
+ <h3><a name="fjust" id="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>One-line fields may be unjustified, justified right, justified
+ left, or centered. Here is how you manipulate this attribute:</p>
-<PRE>
+ <pre>
int set_field_just(FIELD *field, /* field to alter */
int justmode); /* mode to set */
int field_just(FIELD *field); /* fetch mode of field */
-</PRE>
+</pre>
-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>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>
-<H3><A NAME="fdispatts">Field Display Attributes</A></H3>
+ <h3><a name="fdispatts" id="fdispatts">Field Display
+ Attributes</a></h3>
-For each field, you can set a foreground attribute for entered
-characters, a background attribute for the entire field, and a pad
-character for the unfilled portion of the field. You can also
-control pagination of the form. <P>
+ <p>For each field, you can set a foreground attribute for entered
+ characters, a background attribute for the entire field, and a
+ pad character for the unfilled portion of the field. You can also
+ 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>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>
-<PRE>
+ <pre>
int set_field_fore(FIELD *field, /* field to alter */
chtype attr); /* attribute to set */
@@ -1669,22 +2095,21 @@ int set_new_page(FIELD *field, /* field to alter */
int flag); /* TRUE to force new page */
chtype new_page(FIELD *field); /* field to query */
-</PRE>
-
-The attributes set and returned by the first four functions are normal
-<CODE>curses(3x)</CODE> display attribute values (<CODE>A_STANDOUT</CODE>,
-<CODE>A_BOLD</CODE>, <CODE>A_REVERSE</CODE> etc).
+</pre>
-The page bit of a field controls whether it is displayed at the start of
-a new form screen.
+ <p>The attributes set and returned by the first four functions
+ are normal <code>curses(3x)</code> display attribute values
+ (<code>A_STANDOUT</code>, <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>
-<H3><A NAME="foptions">Field Option Bits</A></H3>
+ <h3><a name="foptions" id="foptions">Field Option Bits</a></h3>
-There is also a large collection of field option bits you can set to control
-various aspects of forms processing. You can manipulate them with these
-functions:
+ <p>There is also a large collection of field option bits you can
+ set to control various aspects of forms processing. You can
+ manipulate them with these functions:</p>
-<PRE>
+ <pre>
int set_field_opts(FIELD *field, /* field to alter */
int attr); /* attribute to set */
@@ -1695,423 +2120,485 @@ int field_opts_off(FIELD *field, /* field to alter */
int attr); /* attributes to turn off */
int field_opts(FIELD *field); /* field to query */
-</PRE>
-
-By default, all options are on. Here are the available option bits:
-<DL>
-<DT> O_VISIBLE
-<DD> Controls whether the field is visible on the screen. Can be used
-during form processing to hide or pop up fields depending on the value
-of parent fields.
-<DT> O_ACTIVE
-<DD> Controls whether the field is active during forms processing (i.e.
-visited by form navigation keys). Can be used to make labels or derived
-fields with buffer values alterable by the forms application, not the user.
-<DT> O_PUBLIC
-<DD> Controls whether data is displayed during field entry. If this option is
-turned off on a field, the library will accept and edit data in that field,
-but it will not be displayed and the visible field cursor will not move.
-You can turn off the O_PUBLIC bit to define password fields.
-<DT> O_EDIT
-<DD> Controls whether the field's data can be modified. When this option is
-off, all editing requests except <CODE>REQ_PREV_CHOICE</CODE> and
-<CODE>REQ_NEXT_CHOICE</CODE> will fail. Such read-only fields may be useful for
-help messages.
-<DT> O_WRAP
-<DD> Controls word-wrapping in multi-line fields. Normally, when any
-character of a (blank-separated) word reaches the end of the current line, the
-entire word is wrapped to the next line (assuming there is one). When this
-option is off, the word will be split across the line break.
-<DT> O_BLANK
-<DD> Controls field blanking. When this option is on, entering a character at
-the first field position erases the entire field (except for the just-entered
-character).
-<DT> O_AUTOSKIP
-<DD> Controls automatic skip to next field when this one fills. Normally,
-when the forms user tries to type more data into a field than will fit,
-the editing location jumps to next field. When this option is off, the
-user's cursor will hang at the end of the field. This option is ignored
-in dynamic fields that have not reached their size limit.
-<DT> O_NULLOK
-<DD> Controls whether <A HREF="#fvalidation">validation</A> is applied to
-blank fields. Normally, it is not; the user can leave a field blank
-without invoking the usual validation check on exit. If this option is
-off on a field, exit from it will invoke a validation check.
-<DT> O_PASSOK
-<DD> Controls whether validation occurs on every exit, or only after
-the field is modified. Normally the latter is true. Setting O_PASSOK
-may be useful if your field's validation function may change during
-forms processing.
-<DT> O_STATIC
-<DD> Controls whether the field is fixed to its initial dimensions. If you
-turn this off, the field becomes <A HREF="#fdynamic">dynamic</A> and will
-stretch to fit entered data.
-</DL>
-
-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.
-
-<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:
-
-<PRE>
-int set_field_status(FIELD *field, /* field to alter */
- int status); /* mode to set */
+</pre>
-int field_status(FIELD *field); /* fetch mode of field */
-</PRE>
+ <p>By default, all options are on. Here are the available option
+ bits:</p>
-Setting this flag under program control can be useful if you use the same
-form repeatedly, looking for modified fields each time. <P>
+ <dl>
+ <dt>O_VISIBLE</dt>
-Calling <CODE>field_status()</CODE> on a field not currently selected
-for input will return a correct value. Calling <CODE>field_status()</CODE> on a
-field that is currently selected for input may not necessarily give a
-correct field status value, because entered data isn't necessarily copied to
-buffer zero before the exit validation check.
+ <dd>Controls whether the field is visible on the screen. Can be
+ used during form processing to hide or pop up fields depending
+ on the value of parent fields.</dd>
-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.
+ <dt>O_ACTIVE</dt>
-<H2><A NAME="fuser">Field User Pointer</A></H2>
+ <dd>Controls whether the field is active during forms
+ processing (i.e. visited by form navigation keys). Can be used
+ to make labels or derived fields with buffer values alterable
+ by the forms application, not the user.</dd>
-Each field structure contains one character pointer slot that is not used
-by the forms library. It is intended to be used by applications to store
-private per-field data. You can manipulate it with:
+ <dt>O_PUBLIC</dt>
-<PRE>
-int set_field_userptr(FIELD *field, /* field to alter */
- char *userptr); /* mode to set */
+ <dd>Controls whether data is displayed during field entry. If
+ this option is turned off on a field, the library will accept
+ and edit data in that field, but it will not be displayed and
+ the visible field cursor will not move. You can turn off the
+ O_PUBLIC bit to define password fields.</dd>
-char *field_userptr(FIELD *field); /* fetch mode of field */
-</PRE>
+ <dt>O_EDIT</dt>
-(Properly, this user pointer field ought to have <CODE>(void *)</CODE> type.
-The <CODE>(char *)</CODE> type is retained for System V compatibility.) <P>
+ <dd>Controls whether the field's data can be modified. When
+ this option is off, all editing requests except
+ <code>REQ_PREV_CHOICE</code> and <code>REQ_NEXT_CHOICE</code>
+ will fail. Such read-only fields may be useful for help
+ messages.</dd>
-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.
+ <dt>O_WRAP</dt>
-<H2><A NAME="fdynamic">Variable-Sized Fields</A></H2>
+ <dd>Controls word-wrapping in multi-line fields. Normally, when
+ any character of a (blank-separated) word reaches the end of
+ the current line, the entire word is wrapped to the next line
+ (assuming there is one). When this option is off, the word will
+ be split across the line break.</dd>
-Normally, a field is fixed at the size specified for it at creation
-time. If, however, you turn off its O_STATIC bit, it becomes
-<DFN>dynamic</DFN> and will automatically resize itself to accommodate
-data as it is entered. If the field has extra buffers associated with it,
-they will grow right along with the main input buffer. <P>
+ <dt>O_BLANK</dt>
-A one-line dynamic field will have a fixed height (1) but variable
-width, scrolling horizontally to display data within the field area as
-originally dimensioned and located. A multi-line dynamic field will
-have a fixed width, but variable height (number of rows), scrolling
-vertically to display data within the field area as originally
-dimensioned and located. <P>
+ <dd>Controls field blanking. When this option is on, entering a
+ character at the first field position erases the entire field
+ (except for the just-entered character).</dd>
-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:
+ <dt>O_AUTOSKIP</dt>
-<PRE>
+ <dd>Controls automatic skip to next field when this one fills.
+ Normally, when the forms user tries to type more data into a
+ field than will fit, the editing location jumps to next field.
+ When this option is off, the user's cursor will hang at the end
+ of the field. This option is ignored in dynamic fields that
+ have not reached their size limit.</dd>
+
+ <dt>O_NULLOK</dt>
+
+ <dd>Controls whether <a href="#fvalidation">validation</a> is
+ applied to blank fields. Normally, it is not; the user can
+ leave a field blank without invoking the usual validation check
+ on exit. If this option is off on a field, exit from it will
+ invoke a validation check.</dd>
+
+ <dt>O_PASSOK</dt>
+
+ <dd>Controls whether validation occurs on every exit, or only
+ after the field is modified. Normally the latter is true.
+ Setting O_PASSOK may be useful if your field's validation
+ function may change during forms processing.</dd>
+
+ <dt>O_STATIC</dt>
+
+ <dd>Controls whether the field is fixed to its initial
+ dimensions. If you turn this off, the field becomes <a href=
+ "#fdynamic">dynamic</a> and will stretch to fit entered
+ data.</dd>
+ </dl>
+
+ <p>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>
+
+ <p>The option values are bit-masks and can be composed with
+ logical-or in the obvious way.</p>
+
+ <h2><a name="fstatus" id="fstatus">Field Status</a></h2>
+
+ <p>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>
+
+ <pre>
+int set_field_status(FIELD *field, /* field to alter */
+ int status); /* mode to set */
+
+int field_status(FIELD *field); /* fetch mode of field */
+</pre>
+
+ <p>Setting this flag under program control can be useful if you
+ use the same form repeatedly, looking for modified fields each
+ time.</p>
+
+ <p>Calling <code>field_status()</code> on a field not currently
+ selected for input will return a correct value. Calling
+ <code>field_status()</code> on a field that is currently selected
+ for input may not necessarily give a correct field status value,
+ because entered data is not necessarily copied to buffer zero
+ before the exit validation check. 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>
+
+ <h2><a name="fuser" id="fuser">Field User Pointer</a></h2>
+
+ <p>Each field structure contains one character pointer slot that
+ is not used by the forms library. It is intended to be used by
+ applications to store private per-field data. You can manipulate
+ it with:</p>
+
+ <pre>
+int set_field_userptr(FIELD *field, /* field to alter */
+ char *userptr); /* mode to set */
+
+char *field_userptr(FIELD *field); /* fetch mode of field */
+</pre>(Properly, this user pointer field ought to have <code>(void
+*)</code> type. The <code>(char *)</code> type is retained for
+System V compatibility.)
+
+ <p>It is valid to set the user pointer of the default field (with
+ a <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>
+
+ <h2><a name="fdynamic" id="fdynamic">Variable-Sized Fields</a></h2>
+
+ <p>Normally, a field is fixed at the size specified for it at
+ creation time. If, however, you turn off its O_STATIC bit, it
+ becomes <dfn>dynamic</dfn> and will automatically resize itself
+ to accommodate data as it is entered. If the field has extra
+ buffers associated with it, they will grow right along with the
+ main input buffer.</p>
+
+ <p>A one-line dynamic field will have a fixed height (1) but
+ variable width, scrolling horizontally to display data within the
+ field area as originally dimensioned and located. A multi-line
+ dynamic field will have a fixed width, but variable height
+ (number of rows), scrolling vertically to display data within the
+ field area as originally dimensioned and located.</p>
+
+ <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>
+
+ <pre>
int set_max_field(FIELD *field, /* field to alter (may not be NULL) */
int max_size); /* upper limit on field size */
-</PRE>
-
-If the field is one-line, <CODE>max_size</CODE> is taken to be a column size
-limit; if it is multi-line, it is taken to be a line size limit. To disable
-any limit, use an argument of zero. The growth limit can be changed whether
-or not the O_STATIC bit is on, but has no effect until it is. <P>
-
-The following properties of a field change when it becomes dynamic:
-
-<UL>
-<LI>If there is no growth limit, there is no final position of the field;
-therefore <CODE>O_AUTOSKIP</CODE> and <CODE>O_NL_OVERLOAD</CODE> are ignored.
-<LI>Field justification will be ignored (though whatever justification is
-set up will be retained internally and can be queried).
-<LI>The <CODE>dup_field()</CODE> and <CODE>link_field()</CODE> calls copy
-dynamic-buffer sizes. If the <CODE>O_STATIC</CODE> option is set on one of a
-collection of links, buffer resizing will occur only when the field is
-edited through that link.
-<LI>The call <CODE>field_info()</CODE> will retrieve the original static size of
-the field; use <CODE>dynamic_field_info()</CODE> to get the actual dynamic size.
-</UL>
-
-<H2><A NAME="fvalidation">Field Validation</A></H2>
-
-By default, a field will accept any data that will fit in its input buffer.
-However, it is possible to attach a validation type to a field. If you do
-this, any attempt to leave the field while it contains data that doesn't
-match the validation type will fail. Some validation types also have a
-character-validity check for each time a character is entered in the field. <P>
-
-A field's validation check (if any) is not called when
-<CODE>set_field_buffer()</CODE> modifies the input buffer, nor when that buffer
-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:
-
-<PRE>
+</pre>
+
+ <p>If the field is one-line, <code>max_size</code> is taken to be
+ a column size limit; if it is multi-line, it is taken to be a
+ line size limit. To disable any limit, use an argument of zero.
+ The growth limit can be changed whether or not the O_STATIC bit
+ is on, but has no effect until it is.</p>
+
+ <p>The following properties of a field change when it becomes
+ dynamic:</p>
+
+ <ul>
+ <li>If there is no growth limit, there is no final position of
+ the field; therefore <code>O_AUTOSKIP</code> and
+ <code>O_NL_OVERLOAD</code> are ignored.</li>
+
+ <li>Field justification will be ignored (though whatever
+ justification is set up will be retained internally and can be
+ queried).</li>
+
+ <li>The <code>dup_field()</code> and <code>link_field()</code>
+ calls copy dynamic-buffer sizes. If the <code>O_STATIC</code>
+ option is set on one of a collection of links, buffer resizing
+ will occur only when the field is edited through that
+ link.</li>
+
+ <li>The call <code>field_info()</code> will retrieve the
+ original static size of the field; use
+ <code>dynamic_field_info()</code> to get the actual dynamic
+ size.</li>
+ </ul>
+
+ <h2><a name="fvalidation" id="fvalidation">Field Validation</a></h2>
+
+ <p>By default, a field will accept any data that will fit in its
+ input buffer. However, it is possible to attach a validation type
+ to a field. If you do this, any attempt to leave the field while
+ it contains data that does not match the validation type will
+ fail. Some validation types also have a character-validity check
+ for each time a character is entered in the field.</p>
+
+ <p>A field's validation check (if any) is not called when
+ <code>set_field_buffer()</code> modifies the input buffer, nor
+ when that buffer is changed through a linked field.</p>
+
+ <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>
+
+ <pre>
int set_field_type(FIELD *field, /* field to alter */
FIELDTYPE *ftype, /* type to associate */
...); /* additional arguments*/
FIELDTYPE *field_type(FIELD *field); /* field to query */
-</PRE>
+</pre>
-The validation type of a field is considered an attribute of the field. As
-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>
+ <p>The validation type of a field is considered an attribute of
+ the field. As 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:</p>
-<H3><A NAME="ftype_alpha">TYPE_ALPHA</A></H3>
+ <h3><a name="ftype_alpha" id="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>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>
-<PRE>
+ <pre>
int set_field_type(FIELD *field, /* field to alter */
TYPE_ALPHA, /* type to associate */
int width); /* maximum width of field */
-</PRE>
+</pre>
-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>The <code>width</code> argument sets a minimum width of data.
+ Typically you will want to set this to the field width; if it is
+ greater than the field width, the validation check will always
+ fail. A minimum width of zero makes field completion
+ optional.</p>
-<H3><A NAME="ftype_alnum">TYPE_ALNUM</A></H3>
+ <h3><a name="ftype_alnum" id="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>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>
-<PRE>
+ <pre>
int set_field_type(FIELD *field, /* field to alter */
TYPE_ALNUM, /* type to associate */
int width); /* maximum width of field */
-</PRE>
+</pre>
-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>The <code>width</code> argument sets a minimum width of data.
+ As with TYPE_ALPHA, typically you will want to set this to the
+ field width; if it is greater than the field width, the
+ validation check will always fail. A minimum width of zero makes
+ field completion optional.</p>
-<H3><A NAME="ftype_enum">TYPE_ENUM</A></H3>
+ <h3><a name="ftype_enum" id="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>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>
-<PRE>
+ <pre>
int set_field_type(FIELD *field, /* field to alter */
TYPE_ENUM, /* type to associate */
char **valuelist; /* list of possible values */
int checkcase; /* case-sensitive? */
int checkunique); /* must specify uniquely? */
-</PRE>
+</pre>
-The <CODE>valuelist</CODE> parameter must point at a NULL-terminated list of
-valid strings. The <CODE>checkcase</CODE> argument, if true, makes comparison
-with the string case-sensitive. <P>
+ <p>The <code>valuelist</code> parameter must point at a
+ NULL-terminated list of valid strings. The <code>checkcase</code>
+ argument, if true, makes comparison with the string
+ case-sensitive.</p>
-When the user exits a TYPE_ENUM field, the validation procedure tries to
-complete the data in the buffer to a valid entry. If a complete choice string
-has been entered, it is of course valid. But it is also possible to enter a
-prefix of a valid string and have it completed for you. <P>
+ <p>When the user exits a TYPE_ENUM field, the validation
+ procedure tries to complete the data in the buffer to a valid
+ entry. If a complete choice string has been entered, it is of
+ course valid. But it is also possible to enter a prefix of a
+ valid string and have it completed for you.</p>
-By default, if you enter such a prefix and it matches more than one value
-in the string list, the prefix will be completed to the first matching
-value. But the <CODE>checkunique</CODE> argument, if true, requires prefix
-matches to be unique in order to be valid. <P>
+ <p>By default, if you enter such a prefix and it matches more
+ than one value in the string list, the prefix will be completed
+ to the first matching 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>The <code>REQ_NEXT_CHOICE</code> and
+ <code>REQ_PREV_CHOICE</code> input requests can be particularly
+ useful with these fields.</p>
-<H3><A NAME="ftype_integer">TYPE_INTEGER</A></H3>
+ <h3><a name="ftype_integer" id="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:</p>
-<PRE>
+ <pre>
int set_field_type(FIELD *field, /* field to alter */
TYPE_INTEGER, /* type to associate */
int padding, /* # places to zero-pad to */
int vmin, int vmax); /* valid range */
-</PRE>
+</pre>
-Valid characters consist of an optional leading minus and digits.
-The range check is performed on exit. If the range maximum is less
-than or equal to the minimum, the range is ignored. <P>
+ <p>Valid characters consist of an optional leading minus and
+ digits. The range check is performed on exit. If the range
+ maximum is less than or equal to the minimum, the range is
+ ignored.</p>
-If the value passes its range check, it is padded with as many leading
-zero digits as necessary to meet the padding argument. <P>
+ <p>If the value passes its range check, it is padded with as many
+ leading zero digits as necessary to meet the padding
+ argument.</p>
-A <CODE>TYPE_INTEGER</CODE> value buffer can conveniently be interpreted
-with the C library function <CODE>atoi(3)</CODE>.
+ <p>A <code>TYPE_INTEGER</code> value buffer can conveniently be
+ interpreted with the C library function <code>atoi(3)</code>.</p>
-<H3><A NAME="ftype_numeric">TYPE_NUMERIC</A></H3>
+ <h3><a name="ftype_numeric" id="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:</p>
-<PRE>
+ <pre>
int set_field_type(FIELD *field, /* field to alter */
TYPE_NUMERIC, /* type to associate */
int padding, /* # places of precision */
double vmin, double vmax); /* valid range */
-</PRE>
+</pre>
-Valid characters consist of an optional leading minus and digits. possibly
-including a decimal point. If your system supports locale's, the decimal point
-character used must be the one defined by your locale. The range check is
-performed on exit. If the range maximum is less than or equal to the minimum,
-the range is ignored. <P>
+ <p>Valid characters consist of an optional leading minus and
+ digits. possibly including a decimal point. If your system
+ supports locale's, the decimal point character used must be the
+ one defined by your locale. The range check is performed on exit.
+ If the range maximum is less than or equal to the minimum, the
+ range is ignored.</p>
-If the value passes its range check, it is padded with as many trailing
-zero digits as necessary to meet the padding argument. <P>
+ <p>If the value passes its range check, it is padded with as many
+ trailing zero digits as necessary to meet the padding
+ argument.</p>
-A <CODE>TYPE_NUMERIC</CODE> value buffer can conveniently be interpreted
-with the C library function <CODE>atof(3)</CODE>.
+ <p>A <code>TYPE_NUMERIC</code> value buffer can conveniently be
+ interpreted with the C library function <code>atof(3)</code>.</p>
-<H3><A NAME="ftype_regexp">TYPE_REGEXP</A></H3>
+ <h3><a name="ftype_regexp" id="ftype_regexp">TYPE_REGEXP</a></h3>
-This field type accepts data matching a regular expression. It is set up
-as follows:
+ <p>This field type accepts data matching a regular expression. It
+ is set up as follows:</p>
-<PRE>
+ <pre>
int set_field_type(FIELD *field, /* field to alter */
TYPE_REGEXP, /* type to associate */
char *regexp); /* expression to match */
-</PRE>
+</pre>
-The syntax for regular expressions is that of <CODE>regcomp(3)</CODE>.
-The check for regular-expression match is performed on exit.
+ <p>The syntax for regular expressions is that of
+ <code>regcomp(3)</code>. The check for regular-expression match
+ is performed on exit.</p>
-<H2><A NAME="fbuffer">Direct Field Buffer Manipulation</A></H2>
+ <h2><a name="fbuffer" id="fbuffer">Direct Field Buffer
+ Manipulation</a></h2>
-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>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>
-<PRE>
+ <pre>
char *field_buffer(FIELD *field, /* field to query */
int bufindex); /* number of buffer to query */
-</PRE>
+</pre>
-Normally, the state of the zero-numbered buffer for each field is set by
-the user's editing actions on that field. It's sometimes useful to be able
-to set the value of the zero-numbered (or some other) buffer from your
-application:
+ <p>Normally, the state of the zero-numbered buffer for each field
+ is set by the user's editing actions on that field. It is
+ sometimes useful to be able to set the value of the zero-numbered
+ (or some other) buffer from your application:</p>
-<PRE>
+ <pre>
int set_field_buffer(FIELD *field, /* field to alter */
int bufindex, /* number of buffer to alter */
char *value); /* string value to set */
-</PRE>
-
-If the field is not large enough and cannot be resized to a sufficiently
-large size to contain the specified value, the value will be truncated
-to fit. <P>
-
-Calling <CODE>field_buffer()</CODE> with a null field pointer will raise an
-error. Calling <CODE>field_buffer()</CODE> on a field not currently selected
-for input will return a correct value. Calling <CODE>field_buffer()</CODE> on a
-field that is currently selected for input may not necessarily give a
-correct field buffer value, because entered data isn't necessarily copied to
-buffer zero before the exit validation check.
-
-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.
-
-<H2><A NAME="formattrs">Attributes of Forms</A></H2>
-
-As with field attributes, form attributes inherit a default from a
-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:
-
-<PRE>
+</pre>
+
+ <p>If the field is not large enough and cannot be resized to a
+ sufficiently large size to contain the specified value, the value
+ will be truncated to fit.</p>
+
+ <p>Calling <code>field_buffer()</code> with a null field pointer
+ will raise an error. Calling <code>field_buffer()</code> on a
+ field not currently selected for input will return a correct
+ value. Calling <code>field_buffer()</code> on a field that is
+ currently selected for input may not necessarily give a correct
+ field buffer value, because entered data is not necessarily
+ copied to buffer zero before the exit validation check. 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>
+
+ <h2><a name="formattrs" id="formattrs">Attributes of Forms</a></h2>
+
+ <p>As with field attributes, form attributes inherit a default
+ from a 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>
+
+ <p>The principal attribute of a form is its field list. You can
+ query and change this list with:</p>
+
+ <pre>
int set_form_fields(FORM *form, /* form to alter */
FIELD **fields); /* fields to connect */
char *form_fields(FORM *form); /* fetch fields of form */
int field_count(FORM *form); /* count connect fields */
-</PRE>
-
-The second argument of <CODE>set_form_fields()</CODE> may be a
-NULL-terminated field pointer array like the one required by
-<CODE>new_form()</CODE>. In that case, the old fields of the form are
-disconnected but not freed (and eligible to be connected to other
-forms), then the new fields are connected. <P>
-
-It may also be null, in which case the old fields are disconnected
-(and not freed) but no new ones are connected. <P>
-
-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.
-
-<H2><A NAME="fdisplay">Control of Form Display</A></H2>
-
-In the overview section, you saw that to display a form you normally
-start by defining its size (and fields), posting it, and refreshing
-the screen. There is an hidden step before posting, which is the
-association of the form with a frame window (actually, a pair of
-windows) within which it will be displayed. By default, the forms
-library associates every form with the full-screen window
-<CODE>stdscr</CODE>. <P>
-
-By making this step explicit, you can associate a form with a declared
-frame window on your screen display. This can be useful if you want to
-adapt the form display to different screen sizes, dynamically tile
-forms on the screen, or use a form as part of an interface layout
-managed by <A HREF="#panels">panels</A>. <P>
-
-The two windows associated with each form have the same functions as
-their analogues in the <A HREF="#menu">menu library</A>. Both these
-windows are painted when the form is posted and erased when the form
-is unposted. <P>
-
-The outer or frame window is not otherwise touched by the form
-routines. It exists so the programmer can associate a title, a
-border, or perhaps help text with the form and have it properly
-refreshed or erased at post/unpost time. The inner window or subwindow
-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:
-
-<PRE>
+</pre>
+
+ <p>The second argument of <code>set_form_fields()</code> may be a
+ NULL-terminated field pointer array like the one required by
+ <code>new_form()</code>. In that case, the old fields of the form
+ are disconnected but not freed (and eligible to be connected to
+ other forms), then the new fields are connected.</p>
+
+ <p>It may also be null, in which case the old fields are
+ disconnected (and not freed) but no new ones are connected.</p>
+
+ <p>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>
+
+ <h2><a name="fdisplay" id="fdisplay">Control of Form Display</a></h2>
+
+ <p>In the overview section, you saw that to display a form you
+ normally start by defining its size (and fields), posting it, and
+ refreshing the screen. There is an hidden step before posting,
+ which is the association of the form with a frame window
+ (actually, a pair of windows) within which it will be displayed.
+ By default, the forms library associates every form with the
+ full-screen window <code>stdscr</code>.</p>
+
+ <p>By making this step explicit, you can associate a form with a
+ declared frame window on your screen display. This can be useful
+ if you want to adapt the form display to different screen sizes,
+ dynamically tile forms on the screen, or use a form as part of an
+ interface layout managed by <a href="#panels">panels</a>.</p>
+
+ <p>The two windows associated with each form have the same
+ functions as their analogues in the <a href="#menu">menu
+ library</a>. Both these windows are painted when the form is
+ posted and erased when the form is unposted.</p>
+
+ <p>The outer or frame window is not otherwise touched by the form
+ routines. It exists so the programmer can associate a title, a
+ border, or perhaps help text with the form and have it properly
+ refreshed or erased at post/unpost time. The inner window or
+ subwindow is where the current form page is actually
+ displayed.</p>
+
+ <p>In order to declare your own frame window for a form, you will
+ need to know the size of the form's bounding rectangle. You can
+ get this information with:</p>
+
+ <pre>
int scale_form(FORM *form, /* form to query */
int *rows, /* form rows */
int *cols); /* form cols */
-</PRE>
+</pre>
-The form dimensions are passed back in the locations pointed to by
-the arguments. Once you have this information, you can use it to
-declare of windows, then use one of these functions:
+ <p>The form dimensions are passed back in the locations pointed
+ to by the arguments. Once you have this information, you can use
+ it to declare of windows, then use one of these functions:</p>
-<PRE>
+ <pre>
int set_form_win(FORM *form, /* form to alter */
WINDOW *win); /* frame window to connect */
@@ -2121,319 +2608,507 @@ int set_form_sub(FORM *form, /* form to alter */
WINDOW *win); /* form subwindow to connect */
WINDOW *form_sub(FORM *form); /* fetch form subwindow of form */
-</PRE>
+</pre>
-Note that curses operations, including <CODE>refresh()</CODE>, on the form,
-should be done on the frame window, not the form subwindow. <P>
+ <p>Note that curses operations, including <code>refresh()</code>,
+ on the form, 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>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>
-<PRE>
+ <pre>
int data_ahead(FORM *form); /* form to be queried */
int data_behind(FORM *form); /* form to be queried */
-</PRE>
+</pre>
-The function <CODE>data_ahead()</CODE> returns TRUE if (a) the current
-field is one-line and has undisplayed data off to the right, (b) the current
-field is multi-line and there is data off-screen below it. <P>
+ <p>The function <code>data_ahead()</code> returns TRUE if (a) the
+ current field is one-line and has undisplayed data off to the
+ right, (b) the current field is multi-line and there is data
+ off-screen below it.</p>
-The function <CODE>data_behind()</CODE> returns TRUE if the first (upper
-left hand) character position is off-screen (not being displayed). <P>
+ <p>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>Finally, there is a function to restore the form window's
+ cursor to the value expected by the forms driver:</p>
-<PRE>
+ <pre>
int pos_form_cursor(FORM *) /* form to be queried */
-</PRE>
+</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>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>
-<H2><A NAME="fdriver">Input Processing in the Forms Driver</A></H2>
+ <h2><a name="fdriver" id="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>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>
-<PRE>
+ <pre>
int form_driver(FORM *form, /* form to pass input to */
int request); /* form request code */
-</PRE>
-
-Your input virtualization function needs to take input and then convert it
-to either an alphanumeric character (which is treated as data to be
-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.
-
-<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.
-
-<DL>
-<DT> <CODE>REQ_NEXT_PAGE</CODE>
-<DD> Move to the next form page.
-<DT> <CODE>REQ_PREV_PAGE</CODE>
-<DD> Move to the previous form page.
-<DT> <CODE>REQ_FIRST_PAGE</CODE>
-<DD> Move to the first form page.
-<DT> <CODE>REQ_LAST_PAGE</CODE>
-<DD> Move to the last form page.
-</DL>
-
-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.
-
-<H3><A NAME="ffield">Inter-Field Navigation Requests</A></H3>
-
-These requests handle navigation between fields on the same page.
-
-<DL>
-<DT> <CODE>REQ_NEXT_FIELD</CODE>
-<DD> Move to next field.
-<DT> <CODE>REQ_PREV_FIELD</CODE>
-<DD> Move to previous field.
-<DT> <CODE>REQ_FIRST_FIELD</CODE>
-<DD> Move to the first field.
-<DT> <CODE>REQ_LAST_FIELD</CODE>
-<DD> Move to the last field.
-<DT> <CODE>REQ_SNEXT_FIELD</CODE>
-<DD> Move to sorted next field.
-<DT> <CODE>REQ_SPREV_FIELD</CODE>
-<DD> Move to sorted previous field.
-<DT> <CODE>REQ_SFIRST_FIELD</CODE>
-<DD> Move to the sorted first field.
-<DT> <CODE>REQ_SLAST_FIELD</CODE>
-<DD> Move to the sorted last field.
-<DT> <CODE>REQ_LEFT_FIELD</CODE>
-<DD> Move left to field.
-<DT> <CODE>REQ_RIGHT_FIELD</CODE>
-<DD> Move right to field.
-<DT> <CODE>REQ_UP_FIELD</CODE>
-<DD> Move up to field.
-<DT> <CODE>REQ_DOWN_FIELD</CODE>
-<DD> Move down to field.
-</DL>
-
-These requests treat the list of fields on a page as cyclic; that is,
-<CODE>REQ_NEXT_FIELD</CODE> from the last field goes to the first, and
-<CODE>REQ_PREV_FIELD</CODE> from the first field goes to the last. The
-order of the fields for these (and the <CODE>REQ_FIRST_FIELD</CODE> and
-<CODE>REQ_LAST_FIELD</CODE> requests) is simply the order of the field
-pointers in the form array (as set up by <CODE>new_form()</CODE> or
-<CODE>set_form_fields()</CODE> <P>
-
-It is also possible to traverse the fields as if they had been sorted in
-screen-position order, so the sequence goes left-to-right and top-to-bottom.
-To do this, use the second group of four sorted-movement requests. <P>
-
-Finally, it is possible to move between fields using visual directions up,
-down, right, and left. To accomplish this, use the third group of four
-requests. Note, however, that the position of a form for purposes of these
-requests is its upper-left corner. <P>
-
-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.
-
-<H3><A NAME="fifield">Intra-Field Navigation Requests</A></H3>
-
-These requests drive movement of the edit cursor within the currently
-selected field.
-
-<DL>
-<DT> <CODE>REQ_NEXT_CHAR</CODE>
-<DD> Move to next character.
-<DT> <CODE>REQ_PREV_CHAR</CODE>
-<DD> Move to previous character.
-<DT> <CODE>REQ_NEXT_LINE</CODE>
-<DD> Move to next line.
-<DT> <CODE>REQ_PREV_LINE</CODE>
-<DD> Move to previous line.
-<DT> <CODE>REQ_NEXT_WORD</CODE>
-<DD> Move to next word.
-<DT> <CODE>REQ_PREV_WORD</CODE>
-<DD> Move to previous word.
-<DT> <CODE>REQ_BEG_FIELD</CODE>
-<DD> Move to beginning of field.
-<DT> <CODE>REQ_END_FIELD</CODE>
-<DD> Move to end of field.
-<DT> <CODE>REQ_BEG_LINE</CODE>
-<DD> Move to beginning of line.
-<DT> <CODE>REQ_END_LINE</CODE>
-<DD> Move to end of line.
-<DT> <CODE>REQ_LEFT_CHAR</CODE>
-<DD> Move left in field.
-<DT> <CODE>REQ_RIGHT_CHAR</CODE>
-<DD> Move right in field.
-<DT> <CODE>REQ_UP_CHAR</CODE>
-<DD> Move up in field.
-<DT> <CODE>REQ_DOWN_CHAR</CODE>
-<DD> Move down in field.
-</DL>
-
-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.
-
-<H3><A NAME="fscroll">Scrolling Requests</A></H3>
-
-Fields that are dynamic and have grown and fields explicitly created
-with offscreen rows are scrollable. One-line fields scroll horizontally;
-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:
-
-<DL>
-<DT> <CODE>REQ_SCR_FLINE</CODE>
-<DD> Scroll vertically forward a line.
-<DT> <CODE>REQ_SCR_BLINE</CODE>
-<DD> Scroll vertically backward a line.
-<DT> <CODE>REQ_SCR_FPAGE</CODE>
-<DD> Scroll vertically forward a page.
-<DT> <CODE>REQ_SCR_BPAGE</CODE>
-<DD> Scroll vertically backward a page.
-<DT> <CODE>REQ_SCR_FHPAGE</CODE>
-<DD> Scroll vertically forward half a page.
-<DT> <CODE>REQ_SCR_BHPAGE</CODE>
-<DD> Scroll vertically backward half a page.
-<DT> <CODE>REQ_SCR_FCHAR</CODE>
-<DD> Scroll horizontally forward a character.
-<DT> <CODE>REQ_SCR_BCHAR</CODE>
-<DD> Scroll horizontally backward a character.
-<DT> <CODE>REQ_SCR_HFLINE</CODE>
-<DD> Scroll horizontally one field width forward.
-<DT> <CODE>REQ_SCR_HBLINE</CODE>
-<DD> Scroll horizontally one field width backward.
-<DT> <CODE>REQ_SCR_HFHALF</CODE>
-<DD> Scroll horizontally one half field width forward.
-<DT> <CODE>REQ_SCR_HBHALF</CODE>
-<DD> Scroll horizontally one half field width backward.
-</DL>
-
-For scrolling purposes, a <EM>page</EM> of a field is the height
-of its visible part.
-
-<H3><A NAME="fedit">Editing Requests</A></H3>
-
-When you pass the forms driver an ASCII character, it is treated as a
-request to add the character to the field's data buffer. Whether this
-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:
-
-<DL>
-<DT> <CODE>REQ_INS_MODE</CODE>
-<DD> Set insertion mode.
-<DT> <CODE>REQ_OVL_MODE</CODE>
-<DD> Set overlay mode.
-<DT> <CODE>REQ_NEW_LINE</CODE>
-<DD> New line request (see below for explanation).
-<DT> <CODE>REQ_INS_CHAR</CODE>
-<DD> Insert space at character location.
-<DT> <CODE>REQ_INS_LINE</CODE>
-<DD> Insert blank line at character location.
-<DT> <CODE>REQ_DEL_CHAR</CODE>
-<DD> Delete character at cursor.
-<DT> <CODE>REQ_DEL_PREV</CODE>
-<DD> Delete previous word at cursor.
-<DT> <CODE>REQ_DEL_LINE</CODE>
-<DD> Delete line at cursor.
-<DT> <CODE>REQ_DEL_WORD</CODE>
-<DD> Delete word at cursor.
-<DT> <CODE>REQ_CLR_EOL</CODE>
-<DD> Clear to end of line.
-<DT> <CODE>REQ_CLR_EOF</CODE>
-<DD> Clear to end of field.
-<DT> <CODE>REQ_CLEAR_FIELD</CODE>
-<DD> Clear entire field.
-</DL>
-
-The behavior of the <CODE>REQ_NEW_LINE</CODE> and <CODE>REQ_DEL_PREV</CODE> requests
-is complicated and partly controlled by a pair of forms options.
-The special cases are triggered when the cursor is at the beginning of
-a field, or on the last line of the field. <P>
-
-First, we consider <CODE>REQ_NEW_LINE</CODE>: <P>
-
-The normal behavior of <CODE>REQ_NEW_LINE</CODE> in insert mode is to break the
-current line at the position of the edit cursor, inserting the portion of
-the current line after the cursor as a new line following the current
-and moving the cursor to the beginning of that new line (you may think
-of this as inserting a newline in the field buffer). <P>
-
-The normal behavior of <CODE>REQ_NEW_LINE</CODE> in overlay mode is to clear the
-current line from the position of the edit cursor to end of line.
-The cursor is then moved to the beginning of the next line. <P>
-
-However, <CODE>REQ_NEW_LINE</CODE> at the beginning of a field, or on the
-last line of a field, instead does a <CODE>REQ_NEXT_FIELD</CODE>.
-<CODE>O_NL_OVERLOAD</CODE> option is off, this special action is
-disabled. <P>
-
-Now, let us consider <CODE>REQ_DEL_PREV</CODE>: <P>
-
-The normal behavior of <CODE>REQ_DEL_PREV</CODE> is to delete the previous
-character. If insert mode is on, and the cursor is at the start of a
-line, and the text on that line will fit on the previous one, it
-instead appends the contents of the current line to the previous one
-and deletes the current line (you may think of this as deleting a
-newline from the field buffer). <P>
-
-However, <CODE>REQ_DEL_PREV</CODE> at the beginning of a field is instead
-treated as a <CODE>REQ_PREV_FIELD</CODE>. <P> If the
-<CODE>O_BS_OVERLOAD</CODE> option is off, this special action is
-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.
-
-<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:
-
-<DL>
-<DT> <CODE>REQ_NEXT_CHOICE</CODE>
-<DD> Place the successor value of the current value in the buffer.
-<DT> <CODE>REQ_PREV_CHOICE</CODE>
-<DD> Place the predecessor value of the current value in the buffer.
-</DL>
-
-Of the built-in field types, only <CODE>TYPE_ENUM</CODE> has built-in successor
-and predecessor functions. When you define a field type of your own
-(see <A HREF="#fcustom">Custom Validation Types</A>), you can associate
-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.
-
-<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:
-
-<PRE>
-typedef void (*HOOK)(); /* pointer to function returning void */
+</pre>
+
+ <p>Your input virtualization function needs to take input and
+ then convert it to either an alphanumeric character (which is
+ treated as data to be entered in the currently-selected field),
+ or a forms processing request.</p>
+
+ <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>
+
+ <h3><a name="fpage" id="fpage">Page Navigation Requests</a></h3>
+
+ <p>These requests cause page-level moves through the form,
+ triggering display of a new form screen.</p>
+
+ <dl>
+ <dt><code>REQ_NEXT_PAGE</code>
+ </dt>
+
+ <dd>Move to the next form page.</dd>
+
+ <dt><code>REQ_PREV_PAGE</code>
+ </dt>
+
+ <dd>Move to the previous form page.</dd>
+
+ <dt><code>REQ_FIRST_PAGE</code>
+ </dt>
+
+ <dd>Move to the first form page.</dd>
+
+ <dt><code>REQ_LAST_PAGE</code>
+ </dt>
+
+ <dd>Move to the last form page.</dd>
+ </dl>
+
+ <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>
+
+ <h3><a name="ffield" id="ffield">Inter-Field Navigation
+ Requests</a></h3>
+
+ <p>These requests handle navigation between fields on the same
+ page.</p>
+
+ <dl>
+ <dt><code>REQ_NEXT_FIELD</code>
+ </dt>
+
+ <dd>Move to next field.</dd>
+
+ <dt><code>REQ_PREV_FIELD</code>
+ </dt>
+
+ <dd>Move to previous field.</dd>
+
+ <dt><code>REQ_FIRST_FIELD</code>
+ </dt>
+
+ <dd>Move to the first field.</dd>
+
+ <dt><code>REQ_LAST_FIELD</code>
+ </dt>
+
+ <dd>Move to the last field.</dd>
+
+ <dt><code>REQ_SNEXT_FIELD</code>
+ </dt>
+
+ <dd>Move to sorted next field.</dd>
+
+ <dt><code>REQ_SPREV_FIELD</code>
+ </dt>
+
+ <dd>Move to sorted previous field.</dd>
+
+ <dt><code>REQ_SFIRST_FIELD</code>
+ </dt>
+
+ <dd>Move to the sorted first field.</dd>
+
+ <dt><code>REQ_SLAST_FIELD</code>
+ </dt>
+
+ <dd>Move to the sorted last field.</dd>
+
+ <dt><code>REQ_LEFT_FIELD</code>
+ </dt>
+
+ <dd>Move left to field.</dd>
+
+ <dt><code>REQ_RIGHT_FIELD</code>
+ </dt>
+
+ <dd>Move right to field.</dd>
+
+ <dt><code>REQ_UP_FIELD</code>
+ </dt>
+
+ <dd>Move up to field.</dd>
+
+ <dt><code>REQ_DOWN_FIELD</code>
+ </dt>
+
+ <dd>Move down to field.</dd>
+ </dl>
+
+ <p>These requests treat the list of fields on a page as cyclic;
+ that is, <code>REQ_NEXT_FIELD</code> from the last field goes to
+ the first, and <code>REQ_PREV_FIELD</code> from the first field
+ goes to the last. The order of the fields for these (and the
+ <code>REQ_FIRST_FIELD</code> and <code>REQ_LAST_FIELD</code>
+ requests) is simply the order of the field pointers in the form
+ array (as set up by <code>new_form()</code> or
+ <code>set_form_fields()</code></p>
+
+ <p>It is also possible to traverse the fields as if they had been
+ sorted in screen-position order, so the sequence goes
+ left-to-right and top-to-bottom. To do this, use the second group
+ of four sorted-movement requests.</p>
+
+ <p>Finally, it is possible to move between fields using visual
+ directions up, down, right, and left. To accomplish this, use the
+ third group of four requests. Note, however, that the position of
+ a form for purposes of these requests is its upper-left
+ corner.</p>
+
+ <p>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>
+
+ <h3><a name="fifield" id="fifield">Intra-Field Navigation
+ Requests</a></h3>
+
+ <p>These requests drive movement of the edit cursor within the
+ currently selected field.</p>
+
+ <dl>
+ <dt><code>REQ_NEXT_CHAR</code>
+ </dt>
+
+ <dd>Move to next character.</dd>
+
+ <dt><code>REQ_PREV_CHAR</code>
+ </dt>
+
+ <dd>Move to previous character.</dd>
+
+ <dt><code>REQ_NEXT_LINE</code>
+ </dt>
+
+ <dd>Move to next line.</dd>
+
+ <dt><code>REQ_PREV_LINE</code>
+ </dt>
+
+ <dd>Move to previous line.</dd>
+
+ <dt><code>REQ_NEXT_WORD</code>
+ </dt>
+
+ <dd>Move to next word.</dd>
+
+ <dt><code>REQ_PREV_WORD</code>
+ </dt>
+
+ <dd>Move to previous word.</dd>
+
+ <dt><code>REQ_BEG_FIELD</code>
+ </dt>
+
+ <dd>Move to beginning of field.</dd>
+
+ <dt><code>REQ_END_FIELD</code>
+ </dt>
+
+ <dd>Move to end of field.</dd>
+
+ <dt><code>REQ_BEG_LINE</code>
+ </dt>
+
+ <dd>Move to beginning of line.</dd>
+
+ <dt><code>REQ_END_LINE</code>
+ </dt>
+
+ <dd>Move to end of line.</dd>
+
+ <dt><code>REQ_LEFT_CHAR</code>
+ </dt>
+
+ <dd>Move left in field.</dd>
+
+ <dt><code>REQ_RIGHT_CHAR</code>
+ </dt>
+
+ <dd>Move right in field.</dd>
+
+ <dt><code>REQ_UP_CHAR</code>
+ </dt>
+
+ <dd>Move up in field.</dd>
+
+ <dt><code>REQ_DOWN_CHAR</code>
+ </dt>
+
+ <dd>Move down in field.</dd>
+ </dl>
+
+ <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>
+
+ <h3><a name="fscroll" id="fscroll">Scrolling Requests</a></h3>
+
+ <p>Fields that are dynamic and have grown and fields explicitly
+ created with offscreen rows are scrollable. One-line fields
+ scroll horizontally; 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>
+ </dt>
+
+ <dd>Scroll vertically forward a line.</dd>
+
+ <dt><code>REQ_SCR_BLINE</code>
+ </dt>
+
+ <dd>Scroll vertically backward a line.</dd>
+
+ <dt><code>REQ_SCR_FPAGE</code>
+ </dt>
+
+ <dd>Scroll vertically forward a page.</dd>
+
+ <dt><code>REQ_SCR_BPAGE</code>
+ </dt>
+
+ <dd>Scroll vertically backward a page.</dd>
+
+ <dt><code>REQ_SCR_FHPAGE</code>
+ </dt>
+
+ <dd>Scroll vertically forward half a page.</dd>
+
+ <dt><code>REQ_SCR_BHPAGE</code>
+ </dt>
+
+ <dd>Scroll vertically backward half a page.</dd>
+
+ <dt><code>REQ_SCR_FCHAR</code>
+ </dt>
+
+ <dd>Scroll horizontally forward a character.</dd>
+
+ <dt><code>REQ_SCR_BCHAR</code>
+ </dt>
+
+ <dd>Scroll horizontally backward a character.</dd>
+
+ <dt><code>REQ_SCR_HFLINE</code>
+ </dt>
+
+ <dd>Scroll horizontally one field width forward.</dd>
+
+ <dt><code>REQ_SCR_HBLINE</code>
+ </dt>
+
+ <dd>Scroll horizontally one field width backward.</dd>
+
+ <dt><code>REQ_SCR_HFHALF</code>
+ </dt>
+
+ <dd>Scroll horizontally one half field width forward.</dd>
+
+ <dt><code>REQ_SCR_HBHALF</code>
+ </dt>
+
+ <dd>Scroll horizontally one half field width backward.</dd>
+ </dl>
+
+ <p>For scrolling purposes, a <em>page</em> of a field is the
+ height of its visible part.</p>
+
+ <h3><a name="fedit" id="fedit">Editing Requests</a></h3>
+
+ <p>When you pass the forms driver an ASCII character, it is
+ treated as a request to add the character to the field's data
+ buffer. Whether this is an insertion or a replacement depends on
+ the field's edit mode (insertion is the default.</p>
+
+ <p>The following requests support editing the field and changing
+ the edit mode:</p>
+
+ <dl>
+ <dt><code>REQ_INS_MODE</code>
+ </dt>
+
+ <dd>Set insertion mode.</dd>
+
+ <dt><code>REQ_OVL_MODE</code>
+ </dt>
+
+ <dd>Set overlay mode.</dd>
+
+ <dt><code>REQ_NEW_LINE</code>
+ </dt>
+
+ <dd>New line request (see below for explanation).</dd>
+
+ <dt><code>REQ_INS_CHAR</code>
+ </dt>
+
+ <dd>Insert space at character location.</dd>
+
+ <dt><code>REQ_INS_LINE</code>
+ </dt>
+
+ <dd>Insert blank line at character location.</dd>
+
+ <dt><code>REQ_DEL_CHAR</code>
+ </dt>
+
+ <dd>Delete character at cursor.</dd>
+
+ <dt><code>REQ_DEL_PREV</code>
+ </dt>
+
+ <dd>Delete previous word at cursor.</dd>
+
+ <dt><code>REQ_DEL_LINE</code>
+ </dt>
+
+ <dd>Delete line at cursor.</dd>
+
+ <dt><code>REQ_DEL_WORD</code>
+ </dt>
+
+ <dd>Delete word at cursor.</dd>
+
+ <dt><code>REQ_CLR_EOL</code>
+ </dt>
+
+ <dd>Clear to end of line.</dd>
+
+ <dt><code>REQ_CLR_EOF</code>
+ </dt>
+
+ <dd>Clear to end of field.</dd>
+
+ <dt><code>REQ_CLEAR_FIELD</code>
+ </dt>
+
+ <dd>Clear entire field.</dd>
+ </dl>
+
+ <p>The behavior of the <code>REQ_NEW_LINE</code> and
+ <code>REQ_DEL_PREV</code> requests is complicated and partly
+ controlled by a pair of forms options. The special cases are
+ triggered when the cursor is at the beginning of a field, or on
+ the last line of the field.</p>
+
+ <p>First, we consider <code>REQ_NEW_LINE</code>:</p>
+
+ <p>The normal behavior of <code>REQ_NEW_LINE</code> in insert
+ mode is to break the current line at the position of the edit
+ cursor, inserting the portion of the current line after the
+ cursor as a new line following the current and moving the cursor
+ to the beginning of that new line (you may think of this as
+ inserting a newline in the field buffer).</p>
+
+ <p>The normal behavior of <code>REQ_NEW_LINE</code> in overlay
+ mode is to clear the current line from the position of the edit
+ cursor to end of line. The cursor is then moved to the beginning
+ of the next line.</p>
+
+ <p>However, <code>REQ_NEW_LINE</code> at the beginning of a
+ field, or on the last line of a field, instead does a
+ <code>REQ_NEXT_FIELD</code>. <code>O_NL_OVERLOAD</code> option is
+ off, this special action is disabled.</p>
+
+ <p>Now, let us consider <code>REQ_DEL_PREV</code>:</p>
+
+ <p>The normal behavior of <code>REQ_DEL_PREV</code> is to delete
+ the previous character. If insert mode is on, and the cursor is
+ at the start of a line, and the text on that line will fit on the
+ previous one, it instead appends the contents of the current line
+ to the previous one and deletes the current line (you may think
+ of this as deleting a newline from the field buffer).</p>
+
+ <p>However, <code>REQ_DEL_PREV</code> at the beginning of a field
+ is instead treated as a <code>REQ_PREV_FIELD</code>.</p>
+
+ <p>If the <code>O_BS_OVERLOAD</code> option is off, this special
+ action is disabled and the forms driver just returns
+ <code>E_REQUEST_DENIED</code>.</p>
+
+ <p>See <a href="#frmoptions">Form Options</a> for discussion of
+ how to set and clear the overload options.</p>
+
+ <h3><a name="forder" id="forder">Order Requests</a></h3>
+
+ <p>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>
+
+ <dl>
+ <dt><code>REQ_NEXT_CHOICE</code>
+ </dt>
+
+ <dd>Place the successor value of the current value in the
+ buffer.</dd>
+
+ <dt><code>REQ_PREV_CHOICE</code>
+ </dt>
+
+ <dd>Place the predecessor value of the current value in the
+ buffer.</dd>
+ </dl>
+
+ <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>
+
+ <h3><a name="fappcmds" id="fappcmds">Application Commands</a></h3>
+
+ <p>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>
+
+ <h2><a name="fhooks" id="fhooks">Field Change Hooks</a></h2>
+
+ <p>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>
+
+ <pre>
+typedef void (*HOOK)(); /* pointer to function returning void */
int set_form_init(FORM *form, /* form to alter */
HOOK hook); /* initialization hook */
@@ -2454,53 +3129,67 @@ int set_field_term(FORM *form, /* form to alter */
HOOK hook); /* termination hook */
HOOK field_term(FORM *form); /* form to query */
-</PRE>
-
-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.
-
-<DL>
-<DT> form_init
-<DD> This hook is called when the form is posted; also, just after
-each page change operation.
-<DT> field_init
-<DD> This hook is called when the form is posted; also, just after
-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.
-<DT> form_term
-<DD> This hook is called when the form is unposted; also, just before
-each page change operation.
-</DL>
-
-Calls to these hooks may be triggered
-<OL>
-<LI>When user editing requests are processed by the forms driver
-<LI>When the current page is changed by <CODE>set_current_field()</CODE> call
-<LI>When the current field is changed by a <CODE>set_form_page()</CODE> call
-</OL>
-
-See <A NAME="ffocus">Field Change Commands</A> for discussion of the latter
-two cases. <P>
-
-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.
-
-<H2><A HREF="#ffocus">Field Change Commands</A></H2>
-
-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:
-
-<PRE>
+</pre>
+
+ <p>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>
+
+ <dl>
+ <dt>form_init</dt>
+
+ <dd>This hook is called when the form is posted; also, just
+ after each page change operation.</dd>
+
+ <dt>field_init</dt>
+
+ <dd>This hook is called when the form is posted; also, just
+ after each field change</dd>
+
+ <dt>field_term</dt>
+
+ <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.</dd>
+
+ <dt>form_term</dt>
+
+ <dd>This hook is called when the form is unposted; also, just
+ before each page change operation.</dd>
+ </dl>
+
+ <p>Calls to these hooks may be triggered</p>
+
+ <ol>
+ <li>When user editing requests are processed by the forms
+ driver</li>
+
+ <li>When the current page is changed by
+ <code>set_current_field()</code> call</li>
+
+ <li>When the current field is changed by a
+ <code>set_form_page()</code> call</li>
+ </ol>
+
+ <p>See <a name="ffocus" id="ffocus">Field Change Commands</a> for
+ discussion of the latter two cases.</p>
+
+ <p>You can set a default hook for all fields by passing one of
+ the set functions a NULL first argument.</p>
+
+ <p>You can disable any of these hooks by (re)setting them to
+ NULL, the default value.</p>
+
+ <h2><a href="#ffocus">Field Change Commands</a></h2>
+
+ <p>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>
+
+ <pre>
int set_current_field(FORM *form, /* form to alter */
FIELD *field); /* field to shift to */
@@ -2508,33 +3197,35 @@ FIELD *current_field(FORM *form); /* form to query */
int field_index(FORM *form, /* form to query */
FIELD *field); /* field to get index of */
-</PRE>
+</pre>
-The function <CODE>field_index()</CODE> returns the index of the given field
-in the given form's field array (the array passed to <CODE>new_form()</CODE> or
-<CODE>set_form_fields()</CODE>). <P>
+ <p>The function <code>field_index()</code> returns the index of
+ the given field in the given form's field array (the array passed
+ to <code>new_form()</code> or
+ <code>set_form_fields()</code>).</p>
-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>
+ <p>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.</p>
-<PRE>
+ <pre>
int set_form_page(FORM *form, /* form to alter */
int page); /* page to go to (0-origin) */
int form_page(FORM *form); /* return form's current page */
-</PRE>
+</pre>
-The initial page of a newly-created form is 0. The function
-<CODE>set_form_fields()</CODE> resets this.
+ <p>The initial page of a newly-created form is 0. The function
+ <code>set_form_fields()</code> resets this.</p>
-<H2><A NAME="frmoptions">Form Options</A></H2>
+ <h2><a name="frmoptions" id="frmoptions">Form Options</a></h2>
-Like fields, forms may have control option bits. They can be changed
-or queried with these functions:
+ <p>Like fields, forms may have control option bits. They can be
+ changed or queried with these functions:</p>
-<PRE>
+ <pre>
int set_form_opts(FORM *form, /* form to alter */
int attr); /* attribute to set */
@@ -2545,179 +3236,210 @@ int form_opts_off(FORM *form, /* form to alter */
int attr); /* attributes to turn off */
int form_opts(FORM *form); /* form to query */
-</PRE>
+</pre>
+
+ <p>By default, all options are on. Here are the available option
+ bits:</p>
+
+ <dl>
+ <dt>O_NL_OVERLOAD</dt>
-By default, all options are on. Here are the available option bits:
+ <dd>Enable overloading of <code>REQ_NEW_LINE</code> as
+ described in <a href="#fedit">Editing Requests</a>. The value
+ of this option is ignored on dynamic fields that have not
+ reached their size limit; these have no last line, so the
+ circumstances for triggering a <code>REQ_NEXT_FIELD</code>
+ never arise.</dd>
-<DL>
-<DT> O_NL_OVERLOAD
-<DD> Enable overloading of <CODE>REQ_NEW_LINE</CODE> as described in <A
-href="#fedit">Editing Requests</A>. The value of this option is
-ignored on dynamic fields that have not reached their size limit;
-these have no last line, so the circumstances for triggering a
-<CODE>REQ_NEXT_FIELD</CODE> never arise.
-<DT> O_BS_OVERLOAD
-<DD> Enable overloading of <CODE>REQ_DEL_PREV</CODE> as described in
-<A href="#fedit">Editing Requests</A>.
-</DL>
+ <dt>O_BS_OVERLOAD</dt>
-The option values are bit-masks and can be composed with logical-or in
-the obvious way.
+ <dd>Enable overloading of <code>REQ_DEL_PREV</code> as
+ described in <a href="#fedit">Editing Requests</a>.</dd>
+ </dl>
-<H2><A NAME="fcustom">Custom Validation Types</A></H2>
+ <p>The option values are bit-masks and can be composed with
+ logical-or in the obvious way.</p>
-The <CODE>form</CODE> library gives you the capability to define custom
-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.
+ <h2><a name="fcustom" id="fcustom">Custom Validation Types</a></h2>
-<H3><A NAME="flinktypes">Union Types</A></H3>
+ <p>The <code>form</code> library gives you the capability to
+ define custom 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>
-The simplest way to create a custom data type is to compose it from two
-preexisting ones:
+ <h3><a name="flinktypes" id="flinktypes">Union Types</a></h3>
-<PRE>
+ <p>The simplest way to create a custom data type is to compose it
+ from two preexisting ones:</p>
+
+ <pre>
FIELD *link_fieldtype(FIELDTYPE *type1,
FIELDTYPE *type2);
-</PRE>
+</pre>
+
+ <p>This function creates a field type that will accept any of the
+ values legal for either of its argument field types (which may be
+ either predefined or programmer-defined). If a
+ <code>set_field_type()</code> call later requires arguments, the
+ new 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>
-This function creates a field type that will accept any of the values
-legal for either of its argument field types (which may be either
-predefined or programmer-defined).
+ <h3><a name="fnewtypes" id="fnewtypes">New Field Types</a></h3>
-If a <CODE>set_field_type()</CODE> call later requires arguments, the new
-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>To create a field type from scratch, you need to specify one
+ or both of the following things:</p>
-<H3><A NAME="fnewtypes">New Field Types</A></H3>
+ <ul>
+ <li>A character-validation function, to check each character as
+ it is entered.</li>
-To create a field type from scratch, you need to specify one or both of the
-following things:
+ <li>A field-validation function to be applied on exit from the
+ field.</li>
+ </ul>
-<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>
+ <p>Here is how you do that:</p>
-Here's how you do that:
-<PRE>
-typedef int (*HOOK)(); /* pointer to function returning int */
+ <pre>
+typedef int (*HOOK)(); /* pointer to function returning int */
FIELDTYPE *new_fieldtype(HOOK f_validate, /* field validator */
HOOK c_validate) /* character validator */
-
int free_fieldtype(FIELDTYPE *ftype); /* type to free */
-</PRE>
+</pre>
-At least one of the arguments of <CODE>new_fieldtype()</CODE> must be
-non-NULL. The forms driver will automatically call the new type's
-validation functions at appropriate points in processing a field of
-the new type. <P>
+ <p>At least one of the arguments of <code>new_fieldtype()</code>
+ must be non-NULL. The forms driver will automatically call the
+ new type's validation functions at appropriate points in
+ processing a field of the new type.</p>
-The function <CODE>free_fieldtype()</CODE> deallocates the argument
-fieldtype, freeing all storage associated with it. <P>
+ <p>The function <code>free_fieldtype()</code> deallocates the
+ argument fieldtype, freeing all storage associated with it.</p>
-Normally, a field validator is called when the user attempts to
-leave the field. Its first argument is a field pointer, from which it
-can get to field buffer 0 and test it. If the function returns TRUE,
-the operation succeeds; if it returns FALSE, the edit cursor stays in
-the field. <P>
+ <p>Normally, a field validator is called when the user attempts
+ to leave the field. Its first argument is a field pointer, from
+ which it can get to field buffer 0 and test it. If the function
+ returns TRUE, 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>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>
-<H3><A NAME="fcheckargs">Validation Function Arguments</A></H3>
+ <h3><a name="fcheckargs" id="fcheckargs">Validation Function
+ Arguments</a></h3>
-Your field- and character- validation functions will be passed a
-second argument as well. This second argument is the address of a
-structure (which we'll call a <EM>pile</EM>) built from any of the
-field-type-specific arguments passed to <CODE>set_field_type()</CODE>. If
-no such arguments are defined for the field type, this pile pointer
-argument will be NULL. <P>
+ <p>Your field- and character- validation functions will be passed
+ a second argument as well. This second argument is the address of
+ a structure (which we will call a <em>pile</em>) built from any
+ of the field-type-specific arguments passed to
+ <code>set_field_type()</code>. If no such arguments are defined
+ for the field type, this pile pointer argument will be NULL.</p>
-In order to arrange for such arguments to be passed to your validation
-functions, you must associate a small set of storage-management functions
-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>
+ <p>In order to arrange for such arguments to be passed to your
+ validation functions, you must associate a small set of
+ storage-management functions 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:</p>
-<PRE>
-typedef char *(*PTRHOOK)(); /* pointer to function returning (char *) */
-typedef void (*VOIDHOOK)(); /* pointer to function returning void */
+ <pre>
+typedef char *(*PTRHOOK)(); /* pointer to function returning (char *) */
+typedef void (*VOIDHOOK)(); /* pointer to function returning void */
int set_fieldtype_arg(FIELDTYPE *type, /* type to alter */
PTRHOOK make_str, /* make structure from args */
PTRHOOK copy_str, /* make copy of structure */
VOIDHOOK free_str); /* free structure storage */
-</PRE>
-
-Here is how the storage-management hooks are used:
-
-<DL>
-<DT> <CODE>make_str</CODE>
-<DD> This function is called by <CODE>set_field_type()</CODE>. It gets one
-argument, a <CODE>va_list</CODE> of the type-specific arguments passed to
-<CODE>set_field_type()</CODE>. It is expected to return a pile pointer to a data
-structure that encapsulates those arguments.
-<DT> <CODE>copy_str</CODE>
-<DD> This function is called by form library functions that allocate new
-field instances. It is expected to take a pile pointer, copy the pile
-to allocated storage, and return the address of the pile copy.
-<DT> <CODE>free_str</CODE>
-<DD> This function is called by field- and type-deallocation routines in the
-library. It takes a pile pointer argument, and is expected to free the
-storage of that pile.
-</DL>
-
-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.
-
-<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:
-
-<PRE>
-typedef int (*INTHOOK)(); /* pointer to function returning int */
+</pre>
+
+ <p>Here is how the storage-management hooks are used:</p>
+
+ <dl>
+ <dt><code>make_str</code>
+ </dt>
+
+ <dd>This function is called by <code>set_field_type()</code>.
+ It gets one argument, a <code>va_list</code> of the
+ type-specific arguments passed to
+ <code>set_field_type()</code>. It is expected to return a pile
+ pointer to a data structure that encapsulates those
+ arguments.</dd>
+
+ <dt><code>copy_str</code>
+ </dt>
+
+ <dd>This function is called by form library functions that
+ allocate new field instances. It is expected to take a pile
+ pointer, copy the pile to allocated storage, and return the
+ address of the pile copy.</dd>
+
+ <dt><code>free_str</code>
+ </dt>
+
+ <dd>This function is called by field- and type-deallocation
+ routines in the library. It takes a pile pointer argument, and
+ is expected to free the storage of that pile.</dd>
+ </dl>
+
+ <p>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>
+
+ <h3><a name="fcustorder" id="fcustorder">Order Functions For
+ Custom Types</a></h3>
+
+ <p>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 is how:</p>
+
+ <pre>
+typedef int (*INTHOOK)(); /* pointer to function returning int */
int set_fieldtype_arg(FIELDTYPE *type, /* type to alter */
INTHOOK succ, /* get successor value */
INTHOOK pred); /* get predecessor value */
-</PRE>
-
-The successor and predecessor arguments will each be passed two arguments;
-a field pointer, and a pile pointer (as for the validation functions). They
-are expected to use the function <CODE>field_buffer()</CODE> to read the
-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.
-
-<H3><A NAME="fcustprobs">Avoiding Problems</A></H3>
-
-The interface for defining custom types is complicated and tricky.
-Rather than attempting to create a custom type entirely from scratch,
-you should start by studying the library source code for whichever of
-the pre-defined types seems to be closest to what you want. <P>
-
-Use that code as a model, and evolve it towards what you really want.
-You will avoid many problems and annoyances that way. The code
-in the <CODE>ncurses</CODE> library has been specifically exempted from
-the package copyright to support this. <P>
-
-If your custom type defines order functions, have do something intuitive
-with a blank field. A useful convention is to make the successor of a
-blank field the types minimum value, and its predecessor the maximum.
-</BODY>
-</HTML>
+</pre>
+
+ <p>The successor and predecessor arguments will each be passed
+ two arguments; a field pointer, and a pile pointer (as for the
+ validation functions). They are expected to use the function
+ <code>field_buffer()</code> to read the 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>
+
+ <h3><a name="fcustprobs" id="fcustprobs">Avoiding Problems</a></h3>
+
+ <p>The interface for defining custom types is complicated and
+ tricky. Rather than attempting to create a custom type entirely
+ from scratch, you should start by studying the library source
+ code for whichever of the pre-defined types seems to be closest
+ to what you want.</p>
+
+ <p>Use that code as a model, and evolve it towards what you
+ really want. You will avoid many problems and annoyances that
+ way. The code in the <code>ncurses</code> library has been
+ specifically exempted from the package copyright to support
+ this.</p>
+
+ <p>If your custom type defines order functions, have do something
+ intuitive with a blank field. A useful convention is to make the
+ successor of a blank field the types minimum value, and its
+ predecessor the maximum.</p>
+</body>
+</html>
diff --git a/doc/ncurses-intro.doc b/doc/ncurses-intro.doc
index b44800503a32..4e752ed0fc54 100644
--- a/doc/ncurses-intro.doc
+++ b/doc/ncurses-intro.doc
@@ -132,20 +132,36 @@
A Brief History of Curses
Historically, the first ancestor of curses was the routines written to
- provide screen-handling for the game rogue; these used the
- already-existing termcap database facility for describing terminal
+ provide screen-handling for the vi editor; these used the termcap
+ database facility (both released in 3BSD) for describing terminal
capabilities. These routines were abstracted into a documented library
- and first released with the early BSD UNIX versions.
-
- System III UNIX from Bell Labs featured a rewritten and much-improved
- curses library. It introduced the terminfo format. Terminfo is based
- on Berkeley's termcap database, but contains a number of improvements
- and 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&T System V releases, curses evolved to use more
- facilities and offer more capabilities, going far beyond BSD curses in
- power and flexibility.
+ and first released with the early BSD UNIX versions. All of this work
+ was done by students at the University of California (Berkeley
+ campus). The curses library was first published in 4.0BSD, a year
+ after 3BSD (i.e., late 1980).
+
+ After graduation, one of those students went to work at AT&T Bell
+ Labs, and made an improved termcap library called terminfo (i.e.,
+ "libterm"), and adapted the curses library to use this. That was
+ subsequently released in System V Release 2 (early 1984). Thereafter,
+ other developers added to the curses and terminfo libraries. For
+ instance, a student at Cornell University wrote an improved terminfo
+ library as well as a tool (tic) to compile the terminal descriptions.
+ As a general rule, AT&T did not identify the developers in the
+ source-code or documentation; the tic and infocmp programs are the
+ exceptions.
+
+ System V Release 3 (System III UNIX) from Bell Labs featured a
+ rewritten and much-improved curses library, along with the tic program
+ (late 1986).
+
+ To recap, terminfo is based on Berkeley's termcap database, but
+ contains a number of improvements and 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&T System V
+ releases, curses evolved to use more facilities and offer more
+ capabilities, going far beyond BSD curses in power and flexibility.
Scope of This Document
@@ -153,7 +169,7 @@ Scope of This Document
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).
+ handle one "standout" highlight, usually reverse-video).
* Support for line- and box-drawing using forms characters.
* Recognition of function keys on input.
* Color support.
@@ -164,7 +180,7 @@ Scope of This Document
character features of terminals so equipped, and determines how to
optimally use these features with no help from the programmer. It
allows arbitrary combinations of video attributes to be displayed,
- even on terminals that leave ``magic cookies'' on the screen to mark
+ even on terminals that leave "magic cookies" on the screen to mark
changes in attributes.
The ncurses package can also capture and use event reports from a
@@ -242,8 +258,8 @@ An Overview of Curses
standard screen) is provided by default to make changes on.
A window is a purely internal representation. It is used to build and
- store a potential image of a portion of the terminal. It doesn't bear
- any necessary relation to what is really on the terminal screen; it's
+ store a potential image of a portion of the terminal. It does not bear
+ any necessary relation to what is really on the terminal screen; it is
more like a scratchpad or write buffer.
To make the section of physical screen corresponding to a window
@@ -253,7 +269,7 @@ An Overview of Curses
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
+ programmer can effectively say "make it look like this," and let the
package implementation determine the most efficient way to repaint the
screen.
@@ -269,8 +285,8 @@ An Overview of Curses
Many functions are defined to use stdscr as a default screen. For
example, to add a character to stdscr, one calls addch() with the
desired character as argument. To write to a different window. use the
- routine waddch() (for `w'indow-specific addch()) is provided. This
- convention of prepending function names with a `w' when they are to be
+ routine waddch() (for window-specific addch()) is provided. This
+ convention of prepending function names with a "w" when they are to be
applied to specific windows is consistent. The only routines which do
not follow it are those for which a window must always be specified.
@@ -278,7 +294,7 @@ An Overview of Curses
another, the routines move() and wmove() are provided. However, it is
often desirable to first move and then perform some I/O operation. In
order to avoid clumsiness, most I/O routines can be preceded by the
- prefix 'mv' and the desired (y, x) coordinates prepended to the
+ prefix "mv" and the desired (y, x) coordinates prepended to the
arguments to the function. For example, the calls
move(y, x);
addch(ch);
@@ -310,13 +326,13 @@ An Overview of Curses
general usefulness:
bool
- boolean type, actually a `char' (e.g., bool doneit;)
+ boolean type, actually a "char" (e.g., bool doneit;)
TRUE
- boolean `true' flag (1).
+ boolean "true" flag (1).
FALSE
- boolean `false' flag (0).
+ boolean "false" flag (0).
ERR
error flag returned by routines on a failure (-1).
@@ -332,7 +348,7 @@ Using the Library
function names and parameters as mentioned above.
Here is a sample program to motivate the discussion:
-#include <curses.h>
+#include <stdlib.h>
#include <curses.h>
#include <signal.h>
@@ -381,7 +397,7 @@ main(int argc, char *argv[])
/* process the command keystroke */
}
- finish(0); /* we're done */
+ finish(0); /* we are done */
}
static void finish(int sig)
@@ -411,7 +427,7 @@ static void finish(int sig)
Once the screen windows have been allocated, you can set them up for
your program. If you want to, say, allow a screen to scroll, use
scrollok(). If you want the cursor to be left in place after the last
- change, use leaveok(). If this isn't done, refresh() will move the
+ change, use leaveok(). If this is not done, refresh() will move the
cursor to the window's current (y, x) coordinates after updating it.
You can create new windows of your own using the functions newwin(),
@@ -454,8 +470,8 @@ static void finish(int sig)
set, will call addch() to echo the character. Since the screen package
needs to know what is on the terminal at all times, if characters are
to be echoed, the tty must be in raw or cbreak mode. Since initially
- the terminal has echoing enabled and is in ordinary ``cooked'' mode,
- one or the other has to changed before calling getch(); otherwise, the
+ the terminal has echoing enabled and is in ordinary "cooked" mode, one
+ or the other has to changed before calling getch(); otherwise, the
program's output will be unpredictable.
When you need to accept line-oriented input in a window, the functions
@@ -499,7 +515,7 @@ static void finish(int sig)
of the highlights you want into the character argument of an addch()
call, or any other output call that takes a chtype argument.
- The other is to set the current-highlight value. This is logical-or'ed
+ The other is to set the current-highlight value. This is logical-ORed
with any highlight you specify the first way. You do this with the
functions attron(), attroff(), and attrset(); see the manual pages for
details. Color is a special kind of highlight. The package actually
@@ -510,8 +526,8 @@ static void finish(int sig)
range of eight non-conflicting values could have been used as the
first arguments of the init_pair() values.
- Once you've done an init_pair() that creates color-pair N, you can use
- COLOR_PAIR(N) as a highlight that invokes that particular color
+ Once you have done an init_pair() that creates color-pair N, you can
+ use COLOR_PAIR(N) as a highlight that invokes that particular color
combination. Note that COLOR_PAIR(N), for constant N, is itself a
compile-time constant and can be used in initializers.
@@ -550,11 +566,11 @@ static void finish(int sig)
otherwise another mouse event might come in and make the first one
inaccessible).
- Each call to getmouse() fills a structure (the address of which you'll
- pass it) with mouse event data. The event data includes zero-origin,
- screen-relative character-cell coordinates of the mouse pointer. It
- also includes an event mask. Bits in this mask will be set,
- corresponding to the event type being reported.
+ Each call to getmouse() fills a structure (the address of which you
+ will pass it) with mouse event data. The event data includes
+ zero-origin, screen-relative character-cell coordinates of the mouse
+ pointer. It also includes an event mask. Bits in this mask will be
+ set, corresponding to the event type being reported.
The mouse structure contains two additional fields which may be
significant in the future as ncurses interfaces to new kinds of
@@ -567,7 +583,7 @@ static void finish(int sig)
The class of visible events may be changed at any time via
mousemask(). Events that can be reported include presses, releases,
single-, double- and triple-clicks (you can set the maximum
- button-down time for clicks). If you don't make clicks visible, they
+ button-down time for clicks). If you do not make clicks visible, they
will be reported as press-release pairs. In some environments, the
event mask may include bits reporting the state of shift, alt, and
ctrl keys on the keyboard during the event.
@@ -701,7 +717,7 @@ Function Descriptions
more terminals at once. Setupterm() also stores the names
section of the terminal description in the global character
array ttytype[]. Subsequent calls to setupterm() will overwrite
- this array, so you'll have to save it yourself if need be.
+ this array, so you will have to save it yourself if need be.
Debugging
@@ -710,7 +726,7 @@ Function Descriptions
trace()
This function can be used to explicitly set a trace level. If
the trace level is nonzero, execution of your program will
- generate a file called `trace' in the current working directory
+ generate a file called "trace" in the current working directory
containing a report on the library's actions. Higher trace
levels enable more detailed (and verbose) reporting -- see
comments attached to TRACE_ defines in the curses.h file for
@@ -740,7 +756,7 @@ Hints, Tips, and Tricks
Some Notes of Caution
If you find yourself thinking you need to use noraw() or nocbreak(),
- think again and move carefully. It's probably better design to use
+ think again and move carefully. It is probably better design to use
getstr() or one of its relatives to simulate cooked mode. The noraw()
and nocbreak() functions try to restore cooked mode, but they may end
up clobbering some control bits set before you started your
@@ -748,7 +764,7 @@ Hints, Tips, and Tricks
likely to hurt your application's usability with other curses
libraries.
- Bear in mind that refresh() is a synonym for wrefresh(stdscr). Don't
+ Bear in mind that refresh() is a synonym for wrefresh(stdscr). Do not
try to mix use of stdscr with use of windows declared by newwin(); a
refresh() call will blow them off the screen. The right way to handle
this is to use subwin(), or not touch stdscr at all and tile your
@@ -774,7 +790,7 @@ Hints, Tips, and Tricks
Temporarily Leaving NCURSES Mode
Sometimes you will want to write a program that spends most of its
- time in screen mode, but occasionally returns to ordinary `cooked'
+ time in screen mode, but occasionally returns to ordinary "cooked"
mode. A common reason for this is to support shell-out. This behavior
is simple to arrange in ncurses.
@@ -839,8 +855,8 @@ Hints, Tips, and Tricks
tigetflag(), tigetnum(), and tigetstr() to do your testing.
A particularly useful case of this often comes up when you want to
- test whether a given terminal type should be treated as `smart'
- (cursor-addressable) or `stupid'. The right way to test this is to see
+ 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 tigetstr("cup") is non-NULL. Alternatively, you
can include the term.h file and test the value of the macro
cursor_address.
@@ -848,8 +864,8 @@ Hints, Tips, and Tricks
Tuning for Speed
Use the addchstr() 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
+ text when you know the text does not contain any control characters.
+ Try to make attribute changes infrequent on your screens. Do not use
the immedok() option!
Special Features of NCURSES
@@ -913,7 +929,7 @@ Compatibility with Older Versions
they do change copy or entire copy. We know that System V release 3
curses has logic in it that looks like an attempt to do change copy,
but the surrounding logic and data representations are sufficiently
- complex, and our knowledge sufficiently indirect, that it's hard to
+ complex, and our knowledge sufficiently indirect, that it is hard to
know whether this is reliable. It is not clear what the SVr4
documentation and XSI standard intend. The XSI Curses standard barely
mentions wnoutrefresh(); the SVr4 documents seem to be describing
@@ -997,8 +1013,8 @@ Overview of Panels
in the proper order to resolve overlaps. The standard window, stdscr,
is considered below all panels.
- Details on the panels functions are available in the man pages. We'll
- just hit the highlights here.
+ Details on the panels functions are available in the man pages. We
+ will just hit the highlights here.
You create a panel from a window by calling new_panel() on a window
pointer. It then becomes the top of the deck. The panel's window is
@@ -1009,11 +1025,11 @@ Overview of Panels
This will not deallocate the associated window; you have to do that
yourself. You can replace a panel's window with a different window by
calling replace_window. The new window may be of different size; the
- panel code will re-compute all overlaps. This operation doesn't change
- the panel's position in the deck.
+ panel code will re-compute all overlaps. This operation does not
+ change the panel's position in the deck.
To move a panel's window, use move_panel(). The mvwin() function on
- the panel's window isn't sufficient because it doesn't update the
+ the panel's window is not sufficient because it does not update the
panels library's representation of where the windows are. This
operation leaves the panel's depth, contents, and size unchanged.
@@ -1028,12 +1044,12 @@ Overview of Panels
Typically, you will want to call update_panels() and doupdate() just
before accepting command input, once in each cycle of interaction with
the user. If you call update_panels() after each and every panel
- write, you'll generate a lot of unnecessary refresh activity and
+ write, you will generate a lot of unnecessary refresh activity and
screen flicker.
Panels, Input, and the Standard Screen
- You shouldn't mix wnoutrefresh() or wrefresh() operations with panels
+ You should not mix wnoutrefresh() or wrefresh() operations with panels
code; this will work only if the argument window is either in the top
panel or unobscured by any other panels.
@@ -1051,7 +1067,7 @@ Panels, Input, and the Standard Screen
Hiding Panels
- It's possible to remove a panel from the deck temporarily; use
+ It is possible to remove a panel from the deck temporarily; use
hide_panel for this. Use show_panel() to render it visible again. The
predicate function panel_hidden tests whether or not a panel is
hidden.
@@ -1062,7 +1078,7 @@ Hiding Panels
Miscellaneous Other Facilities
- It's possible to navigate the deck using the functions panel_above()
+ It is possible to navigate the deck using the functions panel_above()
and panel_below. Handed a panel pointer, they return the panel above
or below that panel. Handed NULL, they return the bottom-most or
top-most panel.
@@ -1156,7 +1172,7 @@ Menu Display
The actual menu page may be smaller than the format size. This depends
on the item number and size and whether O_ROWMAJOR is on. This option
- (on by default) causes menu items to be displayed in a `raster-scan'
+ (on by default) causes menu items to be displayed in a "raster-scan"
pattern, so that if more than one item will fit horizontally the first
couple of items are side-by-side in the top row. The alternative is
column-major display, which tries to put the first several items in
@@ -1222,7 +1238,7 @@ Processing Menu Input
REQ_SCR_DPAGE, and REQ_SCR_UPAGE.
The REQ_TOGGLE_ITEM selects or deselects the current item. It is for
- use in multi-valued menus; if you use it with O_ONEVALUE on, you'll
+ use in multi-valued menus; if you use it with O_ONEVALUE on, you will
get an error return (E_REQUEST_DENIED).
Each menu has an associated pattern buffer. The menu_driver() logic
@@ -1326,7 +1342,7 @@ Overview of Forms
obviously designed to resemble that of the menu library wherever
possible.
- In forms programs, however, the `process user requests' is somewhat
+ 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.
@@ -1348,7 +1364,7 @@ FIELD *new_field(int height, int width, /* new field size */
the screen (the third and fourth arguments, which must be zero or
greater). Note that these coordinates are relative to the form
subwindow, which will coincide with stdscr by default but need not be
- stdscr if you've done an explicit set_form_win() call.
+ stdscr if you have done an explicit set_form_win() call.
The fifth argument allows you to specify a number of off-screen rows.
If this is zero, the entire field will always be displayed. If it is
@@ -1593,7 +1609,7 @@ int field_status(FIELD *field); /* fetch mode of field */
Calling field_status() on a field not currently selected for input
will return a correct value. Calling field_status() on a field that is
currently selected for input may not necessarily give a correct field
- status value, because entered data isn't necessarily copied to buffer
+ status value, because entered data is not necessarily copied to buffer
zero before the exit validation check. To guarantee that the returned
status value reflects reality, call field_status() either (1) in the
field's exit validation check routine, (2) from the field's or form's
@@ -1662,7 +1678,7 @@ Field Validation
By default, a field will accept any data that will fit in its input
buffer. However, it is possible to attach a validation type to a
field. If you do this, any attempt to leave the field while it
- contains data that doesn't match the validation type will fail. Some
+ contains data that does not match the validation type will fail. Some
validation types also have a character-validity check for each time a
character is entered in the field.
@@ -1696,10 +1712,10 @@ int set_field_type(FIELD *field, /* field to alter */
TYPE_ALPHA, /* type to associate */
int width); /* maximum width of field */
- The width 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.
+ The width argument sets a minimum width of data. Typically you will
+ want to set this to the field width; if it is greater than the field
+ width, the validation check will always fail. A minimum width of zero
+ makes field completion optional.
TYPE_ALNUM
@@ -1711,9 +1727,9 @@ int set_field_type(FIELD *field, /* field to alter */
int width); /* maximum width of field */
The width 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.
+ typically you will want to set this to the field width; if it is
+ greater than the field width, the validation check will always fail. A
+ minimum width of zero makes field completion optional.
TYPE_ENUM
@@ -1802,7 +1818,7 @@ char *field_buffer(FIELD *field, /* field to query */
int bufindex); /* number of buffer to query */
Normally, the state of the zero-numbered buffer for each field is set
- by the user's editing actions on that field. It's sometimes useful to
+ by the user's editing actions on that field. It is sometimes useful to
be able to set the value of the zero-numbered (or some other) buffer
from your application:
int set_field_buffer(FIELD *field, /* field to alter */
@@ -1817,7 +1833,7 @@ int set_field_buffer(FIELD *field, /* field to alter */
Calling field_buffer() on a field not currently selected for input
will return a correct value. Calling field_buffer() on a field that is
currently selected for input may not necessarily give a correct field
- buffer value, because entered data isn't necessarily copied to buffer
+ buffer value, because entered data is not necessarily copied to buffer
zero before the exit validation check. To guarantee that the returned
buffer value reflects on-screen reality, call field_buffer() either
(1) in the field's exit validation check routine, (2) from the field's
@@ -1877,7 +1893,7 @@ Control of Form Display
erased at post/unpost time. The inner window or subwindow is where the
current form page is actually displayed.
- In order to declare your own frame window for a form, you'll need to
+ In order to declare your own frame window for a form, you will 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 */
@@ -2389,13 +2405,12 @@ FIELD *link_fieldtype(FIELDTYPE *type1,
entered.
* A field-validation function to be applied on exit from the field.
- Here's how you do that:
+ Here is how you do that:
typedef int (*HOOK)(); /* pointer to function returning int */
FIELDTYPE *new_fieldtype(HOOK f_validate, /* field validator */
HOOK c_validate) /* character validator */
-
int free_fieldtype(FIELDTYPE *ftype); /* type to free */
At least one of the arguments of new_fieldtype() must be non-NULL. The
@@ -2419,7 +2434,7 @@ int free_fieldtype(FIELDTYPE *ftype); /* type to free */
Your field- and character- validation functions will be passed a
second argument as well. This second argument is the address of a
- structure (which we'll call a pile) built from any of the
+ structure (which we will call a pile) built from any of the
field-type-specific arguments passed to set_field_type(). If no such
arguments are defined for the field type, this pile pointer argument
will be NULL.
@@ -2469,7 +2484,7 @@ int set_fieldtype_arg(FIELDTYPE *type, /* type to alter */
Some custom field types are simply ordered in the same well-defined
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:
+ REQ_PREV_CHOICE requests. Here is how:
typedef int (*INTHOOK)(); /* pointer to function returning int */
int set_fieldtype_arg(FIELDTYPE *type, /* type to alter */
diff --git a/form/Makefile.in b/form/Makefile.in
index 2a8db8d54bd6..8db31ed4ad71 100644
--- a/form/Makefile.in
+++ b/form/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.56 2013/08/04 20:23:20 tom Exp $
+# $Id: Makefile.in,v 1.64 2018/01/15 19:28:45 tom Exp $
##############################################################################
-# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2015,2018 Free 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"), #
@@ -42,7 +42,7 @@
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
@@ -51,6 +51,7 @@ o = .@OBJEXT@
MODEL = @DFT_LWR_MODEL@
DESTDIR = @DESTDIR@
+top_srcdir = @top_srcdir@
srcdir = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
@@ -61,7 +62,10 @@ includesubdir = @includesubdir@
INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
+PACKAGE = @PACKAGE@
+
LIBTOOL = @LIBTOOL@
+LIBTOOL_OPTS = @LIBTOOL_OPTS@ @EXPORT_SYMS@
LIBTOOL_CLEAN = @LIB_CLEAN@
LIBTOOL_COMPILE = @LIB_COMPILE@
LIBTOOL_LINK = @LIB_LINK@
@@ -71,7 +75,7 @@ LT_UNDEF = @LT_UNDEF@
INSTALL = @INSTALL@
INSTALL_LIB = @INSTALL@ @INSTALL_LIB@
-INSTALL_PROG = @INSTALL_PROGRAM@
+INSTALL_PROG = @INSTALL_PROGRAM@ @INSTALL_OPT_S@
INSTALL_DATA = @INSTALL_DATA@
AR = @AR@
@@ -87,7 +91,7 @@ CC = @CC@
CPP = @CPP@
CFLAGS = @CFLAGS@
-CPPFLAGS = -I@top_srcdir@/ncurses -DHAVE_CONFIG_H @CPPFLAGS@
+CPPFLAGS = -I${top_srcdir}/ncurses -DHAVE_CONFIG_H @CPPFLAGS@
CCFLAGS = $(CPPFLAGS) $(CFLAGS)
@@ -103,9 +107,11 @@ LINK = $(LIBTOOL_LINK)
LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
SHLIB_DIRS = -L../lib
-SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
+SHLIB_LIST = $(SHLIB_DIRS) -lncurses@USE_LIB_SUFFIX@ @SHLIB_LIST@
RPATH_LIST = @RPATH_LIST@
+RESULTING_SYMS = @RESULTING_SYMS@
+VERSIONED_SYMS = @VERSIONED_SYMS@
MK_SHARED_LIB = @MK_SHARED_LIB@
NCURSES_MAJOR = @NCURSES_MAJOR@
@@ -162,6 +168,7 @@ clean :: mostlyclean
distclean :: clean
-rm -f Makefile
+ -rm -rf .libs *.dSYM
realclean :: distclean
diff --git a/form/f_trace.c b/form/f_trace.c
index 6044e03c6e3a..7f7c84ee8979 100644
--- a/form/f_trace.c
+++ b/form/f_trace.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2004-2016,2018 Free 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 "form.priv.h"
-MODULE_ID("$Id: f_trace.c,v 1.2 2010/01/23 21:14:36 tom Exp $")
+MODULE_ID("$Id: f_trace.c,v 1.4 2018/12/16 00:13:36 tom Exp $")
NCURSES_EXPORT(FIELD **)
_nc_retrace_field_ptr(FIELD **code)
@@ -65,6 +65,7 @@ _nc_retrace_form(FORM *code)
NCURSES_EXPORT(Form_Hook)
_nc_retrace_form_hook(Form_Hook code)
{
- T((T_RETURN("%p"), code));
+ TR_FUNC_BFR(1);
+ T((T_RETURN("%s"), TR_FUNC_ARG(0, code)));
return code;
}
diff --git a/form/fld_arg.c b/form/fld_arg.c
index 001c1d157a00..de8feabafdf9 100644
--- a/form/fld_arg.c
+++ b/form/fld_arg.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2018 Free 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 "form.priv.h"
-MODULE_ID("$Id: fld_arg.c,v 1.13 2012/06/10 00:27:49 tom Exp $")
+MODULE_ID("$Id: fld_arg.c,v 1.15 2018/12/16 00:13:36 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -66,8 +66,13 @@ set_fieldtype_arg(FIELDTYPE *typ,
void *(*const copy_arg)(const void *),
void (*const free_arg) (void *))
{
- T((T_CALLED("set_fieldtype_arg(%p,%p,%p,%p)"),
- (void *)typ, make_arg, copy_arg, free_arg));
+ TR_FUNC_BFR(3);
+
+ T((T_CALLED("set_fieldtype_arg(%p,%s,%s,%s)"),
+ (void *)typ,
+ TR_FUNC_ARG(0, make_arg),
+ TR_FUNC_ARG(1, copy_arg),
+ TR_FUNC_ARG(2, free_arg)));
if (typ != 0 && make_arg != (void *)0)
{
diff --git a/form/fld_attr.c b/form/fld_attr.c
index 0112f009ecd4..28001d3c91a1 100644
--- a/form/fld_attr.c
+++ b/form/fld_attr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2016 Free 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 "form.priv.h"
-MODULE_ID("$Id: fld_attr.c,v 1.11 2010/01/23 21:12:08 tom Exp $")
+MODULE_ID("$Id: fld_attr.c,v 1.12 2016/01/23 21:32:00 tom Exp $")
/*----------------------------------------------------------------------------
Field-Attribute manipulation routines
@@ -42,7 +42,7 @@ MODULE_ID("$Id: fld_attr.c,v 1.11 2010/01/23 21:12:08 tom Exp $")
NCURSES_IMPEXP int NCURSES_API set_field_ ## name (FIELD * field, chtype attr)\
{\
int res = E_BAD_ARGUMENT;\
- T((T_CALLED("set_field_" #name "(%p,%s)"), field, _traceattr(attr)));\
+ T((T_CALLED("set_field_" #name "(%p,%s)"), (void *)field, _traceattr(attr)));\
if ( attr==A_NORMAL || ((attr & A_ATTRIBUTES)==attr) )\
{\
Normalize_Field( field );\
diff --git a/form/fld_current.c b/form/fld_current.c
index ef9ec007ecaf..efd5c2f95d8f 100644
--- a/form/fld_current.c
+++ b/form/fld_current.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2016 Free 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 "form.priv.h"
-MODULE_ID("$Id: fld_current.c,v 1.12 2010/01/23 21:14:35 tom Exp $")
+MODULE_ID("$Id: fld_current.c,v 1.14 2016/10/29 22:30:10 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -76,7 +76,7 @@ set_current_field(FORM *form, FIELD *field)
{
if (form->current != field)
{
- if (!_nc_Internal_Validation(form))
+ if (form->current && !_nc_Internal_Validation(form))
{
err = E_INVALID_FIELD;
}
@@ -104,6 +104,32 @@ set_current_field(FORM *form, FIELD *field)
/*---------------------------------------------------------------------------
| Facility : libnform
+| Function : int unfocus_current_field(FORM * form)
+|
+| Description : Removes focus from the current field.
+|
+| Return Values : E_OK - success
+| E_BAD_ARGUMENT - invalid form pointer
+| E_REQUEST_DENIED - there is no current field to unfocus
++--------------------------------------------------------------------------*/
+NCURSES_EXPORT(int)
+unfocus_current_field(FORM *const form)
+{
+ T((T_CALLED("unfocus_current_field(%p)"), (const void *)form));
+ if (form == 0)
+ {
+ RETURN(E_BAD_ARGUMENT);
+ }
+ else if (form->current == 0)
+ {
+ RETURN(E_REQUEST_DENIED);
+ }
+ _nc_Unset_Current_Field(form);
+ RETURN(E_OK);
+}
+
+/*---------------------------------------------------------------------------
+| Facility : libnform
| Function : FIELD *current_field(const FORM * form)
|
| Description : Return the current field.
diff --git a/form/fld_def.c b/form/fld_def.c
index 681a3713e8c7..b18462f7b7f7 100644
--- a/form/fld_def.c
+++ b/form/fld_def.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2014 Free 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 "form.priv.h"
-MODULE_ID("$Id: fld_def.c,v 1.40 2012/03/11 00:37:16 tom Exp $")
+MODULE_ID("$Id: fld_def.c,v 1.41 2014/07/26 21:08:55 tom Exp $")
/* this can't be readonly */
static FIELD default_field =
@@ -53,7 +53,7 @@ static FIELD default_field =
(int)' ', /* pad */
A_NORMAL, /* fore */
A_NORMAL, /* back */
- ALL_FIELD_OPTS, /* opts */
+ STD_FIELD_OPTS, /* opts */
(FIELD *)0, /* snext */
(FIELD *)0, /* sprev */
(FIELD *)0, /* link */
@@ -294,14 +294,14 @@ new_field(int rows, int cols, int frow, int fcol, int nrow, int nbuf)
{
T((T_CREATE("field %p"), (void *)New_Field));
*New_Field = default_field;
- New_Field->rows = (short) rows;
- New_Field->cols = (short) cols;
+ New_Field->rows = (short)rows;
+ New_Field->cols = (short)cols;
New_Field->drows = rows + nrow;
New_Field->dcols = cols;
- New_Field->frow = (short) frow;
- New_Field->fcol = (short) fcol;
+ New_Field->frow = (short)frow;
+ New_Field->fcol = (short)fcol;
New_Field->nrow = nrow;
- New_Field->nbuf = (short) nbuf;
+ New_Field->nbuf = (short)nbuf;
New_Field->link = New_Field;
#if USE_WIDEC_SUPPORT
diff --git a/form/fld_ftchoice.c b/form/fld_ftchoice.c
index 090130678f95..897093a7adf1 100644
--- a/form/fld_ftchoice.c
+++ b/form/fld_ftchoice.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2018 Free 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 "form.priv.h"
-MODULE_ID("$Id: fld_ftchoice.c,v 1.13 2012/06/10 00:27:49 tom Exp $")
+MODULE_ID("$Id: fld_ftchoice.c,v 1.15 2018/12/16 00:14:26 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -51,7 +51,12 @@ set_fieldtype_choice(FIELDTYPE *typ,
bool (*const next_choice) (FIELD *, const void *),
bool (*const prev_choice) (FIELD *, const void *))
{
- T((T_CALLED("set_fieldtype_choice(%p,%p,%p)"), (void *)typ, next_choice, prev_choice));
+ TR_FUNC_BFR(2);
+
+ T((T_CALLED("set_fieldtype_choice(%p,%s,%s)"),
+ (void *)typ,
+ TR_FUNC_ARG(0, next_choice),
+ TR_FUNC_ARG(1, prev_choice)));
if (!typ || !next_choice || !prev_choice)
RETURN(E_BAD_ARGUMENT);
diff --git a/form/fld_max.c b/form/fld_max.c
index 6c7fe728bd98..510c3f1c9321 100644
--- a/form/fld_max.c
+++ b/form/fld_max.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2019 Free 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 "form.priv.h"
-MODULE_ID("$Id: fld_max.c,v 1.13 2013/08/24 22:59:28 tom Exp $")
+MODULE_ID("$Id: fld_max.c,v 1.15 2019/01/26 22:18:08 Leon.Winter Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -57,11 +57,16 @@ set_max_field(FIELD *field, int maxgrow)
if (maxgrow > 0)
{
- if ((single_line_field && (maxgrow < field->dcols)) ||
- (!single_line_field && (maxgrow < field->drows)))
+ if (((single_line_field && (maxgrow < field->dcols)) ||
+ (!single_line_field && (maxgrow < field->drows))) &&
+ !Field_Has_Option(field, O_INPUT_LIMIT))
RETURN(E_BAD_ARGUMENT);
}
field->maxgrow = maxgrow;
+ /* shrink */
+ if (maxgrow > 0 && Field_Has_Option(field, O_INPUT_LIMIT) &&
+ field->dcols > maxgrow)
+ field->dcols = maxgrow;
ClrStatus(field, _MAY_GROW);
if (!((unsigned)field->opts & O_STATIC))
{
diff --git a/form/fld_newftyp.c b/form/fld_newftyp.c
index 4351aed6b3c8..a279a48bb2f5 100644
--- a/form/fld_newftyp.c
+++ b/form/fld_newftyp.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2018 Free 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 "form.priv.h"
-MODULE_ID("$Id: fld_newftyp.c,v 1.19 2010/01/23 21:14:36 tom Exp $")
+MODULE_ID("$Id: fld_newftyp.c,v 1.21 2018/12/16 00:14:22 tom Exp $")
static FIELDTYPE default_fieldtype =
{
@@ -53,7 +53,7 @@ static FIELDTYPE default_fieldtype =
};
NCURSES_EXPORT_VAR(FIELDTYPE *)
-_nc_Default_FieldType = &default_fieldtype;
+ _nc_Default_FieldType = &default_fieldtype;
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -76,7 +76,12 @@ new_fieldtype(bool (*const field_check) (FIELD *, const void *),
{
FIELDTYPE *nftyp = (FIELDTYPE *)0;
- T((T_CALLED("new_fieldtype(%p,%p)"), field_check, char_check));
+ TR_FUNC_BFR(2);
+
+ T((T_CALLED("new_fieldtype(%s,%s)"),
+ TR_FUNC_ARG(0, field_check),
+ TR_FUNC_ARG(1, char_check)));
+
if ((field_check) || (char_check))
{
nftyp = typeMalloc(FIELDTYPE, 1);
diff --git a/form/form.h b/form/form.h
index f1a6635ec5e7..c34be75dc270 100644
--- a/form/form.h
+++ b/form/form.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,10 +30,11 @@
* Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
-/* $Id: form.h,v 0.23 2013/12/07 17:57:32 tom Exp $ */
+/* $Id: form.h,v 0.29 2019/01/19 21:26:13 Leon.Winter Exp $ */
#ifndef FORM_H
#define FORM_H
+/* *INDENT-OFF*/
#include <curses.h>
#include <eti.h>
@@ -57,18 +58,24 @@ typedef int Field_Options;
* _PAGE *
**********/
-typedef struct {
+typedef struct pagenode
+#if !NCURSES_OPAQUE_FORM
+{
short pmin; /* index of first field on page */
short pmax; /* index of last field on page */
short smin; /* index of top leftmost field on page */
short smax; /* index of bottom rightmost field on page */
-} _PAGE;
+}
+#endif /* !NCURSES_OPAQUE_FORM */
+_PAGE;
/**********
* FIELD *
**********/
-typedef struct fieldnode {
+typedef struct fieldnode
+#if 1 /* not yet: !NCURSES_OPAQUE_FORM */
+{
unsigned short status; /* flags */
short rows; /* size in rows */
short cols; /* size in cols */
@@ -97,20 +104,24 @@ typedef struct fieldnode {
/*
* The wide-character configuration requires extra information. Because
* there are existing applications that manipulate the members of FIELD
- * directly, we cannot make the struct opaque. Offsets of members up to
- * this point are the same in the narrow- and wide-character configuration.
- * But note that the type of buf depends on the configuration, and is made
- * opaque for that reason.
+ * directly, we cannot make the struct opaque, except by changing the ABI.
+ * Offsets of members up to this point are the same in the narrow- and
+ * wide-character configuration. But note that the type of buf depends on
+ * the configuration, and is made opaque for that reason.
*/
NCURSES_FIELD_INTERNALS
-} FIELD;
+}
+#endif /* NCURSES_OPAQUE_FORM */
+FIELD;
/*********
* FORM *
*********/
-typedef struct formnode {
+typedef struct formnode
+#if 1 /* not yet: !NCURSES_OPAQUE_FORM */
+{
unsigned short status; /* flags */
short rows; /* size in rows */
short cols; /* size in cols */
@@ -135,14 +146,18 @@ typedef struct formnode {
void (*fieldinit)(struct formnode *);
void (*fieldterm)(struct formnode *);
-} FORM;
+}
+#endif /* !NCURSES_OPAQUE_FORM */
+FORM;
/**************
* FIELDTYPE *
**************/
-typedef struct typenode {
+typedef struct typenode
+#if !NCURSES_OPAQUE_FORM
+{
unsigned short status; /* flags */
long ref; /* reference count */
struct typenode * left; /* ptr to operand for | */
@@ -178,7 +193,9 @@ typedef struct typenode {
bool (*next)(FIELD *,const void *); /* enumerate next value */
bool (*prev)(FIELD *,const void *); /* enumerate prev value */
#endif
-} FIELDTYPE;
+}
+#endif /* !NCURSES_OPAQUE_FORM */
+FIELDTYPE;
typedef void (*Form_Hook)(FORM *);
@@ -203,6 +220,10 @@ typedef void (*Form_Hook)(FORM *);
#define O_NULLOK (0x0080U)
#define O_PASSOK (0x0100U)
#define O_STATIC (0x0200U)
+#define O_DYNAMIC_JUSTIFY (0x0400U) /* ncurses extension */
+#define O_NO_LEFT_STRIP (0x0800U) /* ncurses extension */
+#define O_EDGE_INSERT_STAY (0x1000U) /* ncurses extension */
+#define O_INPUT_LIMIT (0x2000U) /* ncurses extension */
/* form options */
#define O_NL_OVERLOAD (0x0001U)
@@ -384,6 +405,7 @@ extern NCURSES_EXPORT(int) field_count (const FORM *);
extern NCURSES_EXPORT(int) set_form_win (FORM *,WINDOW *);
extern NCURSES_EXPORT(int) set_form_sub (FORM *,WINDOW *);
extern NCURSES_EXPORT(int) set_current_field (FORM *,FIELD *);
+extern NCURSES_EXPORT(int) unfocus_current_field (FORM *);
extern NCURSES_EXPORT(int) field_index (const FIELD *);
extern NCURSES_EXPORT(int) set_form_page (FORM *,int);
extern NCURSES_EXPORT(int) form_page (const FORM *);
@@ -421,5 +443,6 @@ extern NCURSES_EXPORT(FORM *) NCURSES_SP_NAME(new_form) (SCREEN*, FIELD **);
#ifdef __cplusplus
}
#endif
+/* *INDENT-ON*/
-#endif /* FORM_H */
+#endif /* FORM_H */
diff --git a/form/form.priv.h b/form/form.priv.h
index 38dd8caa263e..c434dacc8d1f 100644
--- a/form/form.priv.h
+++ b/form/form.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,12 +30,15 @@
* Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
-/* $Id: form.priv.h,v 0.33 2012/03/11 00:37:46 tom Exp $ */
+/* $Id: form.priv.h,v 0.44 2019/01/26 22:17:48 Leon.Winter Exp $ */
#ifndef FORM_PRIV_H
#define FORM_PRIV_H 1
/* *INDENT-OFF*/
#include "curses.priv.h"
+
+#define NCURSES_OPAQUE_FORM 0
+
#include "mf_common.h"
#if USE_WIDEC_SUPPORT
@@ -125,6 +128,8 @@ extern NCURSES_EXPORT_VAR(FIELDTYPE *) _nc_Default_FieldType;
#define Single_Line_Field(field) \
(((field)->rows + (field)->nrow) == 1)
+#define Field_Has_Option(f,o) ((((unsigned)(f)->opts) & o) != 0)
+
/* Logic to determine whether or not a field is selectable */
#define Field_Is_Selectable(f) (((unsigned)((f)->opts) & O_SELECTABLE)==O_SELECTABLE)
#define Field_Is_Not_Selectable(f) (((unsigned)((f)->opts) & O_SELECTABLE)!=O_SELECTABLE)
@@ -146,7 +151,7 @@ TypeArgument;
O_NL_OVERLOAD |\
O_BS_OVERLOAD )
-#define ALL_FIELD_OPTS (Field_Options)( \
+#define STD_FIELD_OPTS (Field_Options)( \
O_VISIBLE |\
O_ACTIVE |\
O_PUBLIC |\
@@ -156,7 +161,14 @@ TypeArgument;
O_AUTOSKIP|\
O_NULLOK |\
O_PASSOK |\
- O_STATIC )
+ O_STATIC)
+
+#define ALL_FIELD_OPTS (Field_Options)( \
+ STD_FIELD_OPTS |\
+ O_DYNAMIC_JUSTIFY |\
+ O_NO_LEFT_STRIP |\
+ O_EDGE_INSERT_STAY |\
+ O_INPUT_LIMIT)
#define C_BLANK ' '
#define is_blank(c) ((c)==C_BLANK)
@@ -177,6 +189,7 @@ extern NCURSES_EXPORT(FIELD *) _nc_First_Active_Field (FORM*);
extern NCURSES_EXPORT(bool) _nc_Internal_Validation (FORM*);
extern NCURSES_EXPORT(int) _nc_Set_Current_Field (FORM*, FIELD*);
extern NCURSES_EXPORT(int) _nc_Position_Form_Cursor (FORM*);
+extern NCURSES_EXPORT(void) _nc_Unset_Current_Field(FORM *form);
#if NCURSES_INTEROP_FUNCS
extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_INTEGER(void);
@@ -214,11 +227,11 @@ extern NCURSES_EXPORT(wchar_t *) _nc_Widen_String(char *, int *);
#ifdef TRACE
-#define returnField(code) TRACE_RETURN(code,field)
-#define returnFieldPtr(code) TRACE_RETURN(code,field_ptr)
-#define returnForm(code) TRACE_RETURN(code,form)
-#define returnFieldType(code) TRACE_RETURN(code,field_type)
-#define returnFormHook(code) TRACE_RETURN(code,form_hook)
+#define returnField(code) TRACE_RETURN1(code,field)
+#define returnFieldPtr(code) TRACE_RETURN1(code,field_ptr)
+#define returnForm(code) TRACE_RETURN1(code,form)
+#define returnFieldType(code) TRACE_RETURN1(code,field_type)
+#define returnFormHook(code) TRACE_RETURN1(code,form_hook)
extern NCURSES_EXPORT(FIELD **) _nc_retrace_field_ptr (FIELD **);
extern NCURSES_EXPORT(FIELD *) _nc_retrace_field (FIELD *);
diff --git a/form/frm_driver.c b/form/frm_driver.c
index ed561bf1e9e5..123127b7db79 100644
--- a/form/frm_driver.c
+++ b/form/frm_driver.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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 "form.priv.h"
-MODULE_ID("$Id: frm_driver.c,v 1.110 2014/02/10 00:42:48 tom Exp $")
+MODULE_ID("$Id: frm_driver.c,v 1.128 2019/01/20 01:25:02 tom Exp $")
/*----------------------------------------------------------------------------
This is the core module of the form library. It contains the majority
@@ -99,9 +99,9 @@ Perhaps at some time we will make this configurable at runtime.
#define GROW_IF_NAVIGATE (1)
#if USE_WIDEC_SUPPORT
-#define myADDNSTR(w, s, n) wadd_wchnstr(w, s, n)
-#define myINSNSTR(w, s, n) wins_wchnstr(w, s, n)
-#define myINNSTR(w, s, n) fix_wchnstr(w, s, n)
+#define myADDNSTR(w, s, n) wide_waddnstr(w, s, n)
+#define myINSNSTR(w, s, n) wide_winsnstr(w, s, n)
+#define myINNSTR(w, s, n) wide_winnstr(w, s, n)
#define myWCWIDTH(w, y, x) cell_width(w, y, x)
#else
#define myADDNSTR(w, s, n) waddnstr(w, s, n)
@@ -172,15 +172,16 @@ static int FE_Delete_Previous(FORM *);
instead of a derived window because it contains invisible parts.
This is true for non-public fields and for scrollable fields. */
#define Has_Invisible_Parts(field) \
- (!((unsigned)(field)->opts & O_PUBLIC) || \
+ (!(Field_Has_Option(field, O_PUBLIC)) || \
Is_Scroll_Field(field))
/* Logic to decide whether or not a field needs justification */
#define Justification_Allowed(field) \
(((field)->just != NO_JUSTIFICATION) && \
(Single_Line_Field(field)) && \
- (((field)->dcols == (field)->cols) && \
- ((unsigned)(field)->opts & O_STATIC)))
+ ((Field_Has_Option(field, O_STATIC) && \
+ ((field)->dcols == (field)->cols)) || \
+ Field_Has_Option(field, O_DYNAMIC_JUSTIFY)))
/* Logic to determine whether or not a dynamic field may still grow */
#define Growable(field) ((field)->status & _MAY_GROW)
@@ -194,7 +195,7 @@ static int FE_Delete_Previous(FORM *);
#define Field_Really_Appears(field) \
((field->form) &&\
(field->form->status & _POSTED) &&\
- ((unsigned)field->opts & O_VISIBLE) &&\
+ (Field_Has_Option(field, O_VISIBLE)) &&\
(field->page == field->form->curpage))
/* Logic to determine whether or not we are on the first position in the
@@ -238,9 +239,29 @@ check_pos(FORM *form, int lineno)
Wide-character special functions
--------------------------------------------------------------------------*/
#if USE_WIDEC_SUPPORT
-/* like winsnstr */
+/* add like waddnstr, but using cchar_t* rather than char*
+ */
+static int
+wide_waddnstr(WINDOW *w, const cchar_t *s, int n)
+{
+ int rc = OK;
+
+ while (n-- > 0)
+ {
+ if ((rc = wadd_wch(w, s)) != OK)
+ break;
+ ++s;
+ }
+ return rc;
+}
+
+/* insert like winsnstr, but using cchar_t* rather than char*
+ *
+ * X/Open Curses has no close equivalent; inserts are done only with wchar_t
+ * strings.
+ */
static int
-wins_wchnstr(WINDOW *w, cchar_t *s, int n)
+wide_winsnstr(WINDOW *w, const cchar_t *s, int n)
{
int code = ERR;
int y, x;
@@ -256,11 +277,13 @@ wins_wchnstr(WINDOW *w, cchar_t *s, int n)
return code;
}
-/* win_wchnstr is inconsistent with winnstr, since it returns OK rather than
- * the number of items transferred.
+/* retrieve like winnstr, but using cchar_t*, rather than char*.
+ *
+ * X/Open Curses' closest equivalent, win_wchnstr(), is inconsistent with
+ * winnstr(), since it returns OK rather than the number of items transferred.
*/
static int
-fix_wchnstr(WINDOW *w, cchar_t *s, int n)
+wide_winnstr(WINDOW *w, cchar_t *s, int n)
{
int x;
@@ -843,11 +866,13 @@ _nc_Position_Form_Cursor(FORM *form)
| E_BAD_ARGUMENT - invalid form pointer
| E_SYSTEM_ERROR - general error
+--------------------------------------------------------------------------*/
+static bool move_after_insert = TRUE;
NCURSES_EXPORT(int)
_nc_Refresh_Current_Field(FORM *form)
{
WINDOW *formwin;
FIELD *field;
+ bool is_public;
T((T_CALLED("_nc_Refresh_Current_Field(%p)"), (void *)form));
@@ -860,102 +885,105 @@ _nc_Refresh_Current_Field(FORM *form)
field = form->current;
formwin = Get_Form_Window(form);
- if ((unsigned)field->opts & O_PUBLIC)
+ is_public = Field_Has_Option(field, O_PUBLIC);
+
+ if (Is_Scroll_Field(field))
{
- if (Is_Scroll_Field(field))
+ /* Again, in this case the fieldwin isn't derived from formwin,
+ so we have to perform a copy operation. */
+ if (Single_Line_Field(field))
{
- /* Again, in this case the fieldwin isn't derived from formwin,
- so we have to perform a copy operation. */
- if (Single_Line_Field(field))
- {
- /* horizontal scrolling */
- if (form->curcol < form->begincol)
- form->begincol = form->curcol;
- else
- {
- if (form->curcol >= (form->begincol + field->cols))
- form->begincol = form->curcol - field->cols + 1;
- }
- copywin(form->w,
- formwin,
- 0,
- form->begincol,
- field->frow,
- field->fcol,
- field->frow,
- field->cols + field->fcol - 1,
- 0);
- }
+ /* horizontal scrolling */
+ if (form->curcol < form->begincol)
+ form->begincol = form->curcol;
else
{
- /* A multi-line, i.e. vertical scrolling field */
- int row_after_bottom, first_modified_row, first_unmodified_row;
+ if (form->curcol >= (form->begincol + field->cols))
+ form->begincol = form->curcol - field->cols
+ + (move_after_insert ? 1 : 0);
+ }
+ if (is_public)
+ copywin(form->w,
+ formwin,
+ 0,
+ form->begincol,
+ field->frow,
+ field->fcol,
+ field->frow,
+ field->cols + field->fcol - 1,
+ 0);
+ }
+ else
+ {
+ /* A multi-line, i.e. vertical scrolling field */
+ int row_after_bottom, first_modified_row, first_unmodified_row;
- if (field->drows > field->rows)
+ if (field->drows > field->rows)
+ {
+ row_after_bottom = form->toprow + field->rows;
+ if (form->currow < form->toprow)
{
- row_after_bottom = form->toprow + field->rows;
- if (form->currow < form->toprow)
- {
- form->toprow = form->currow;
- SetStatus(field, _NEWTOP);
- }
- if (form->currow >= row_after_bottom)
- {
- form->toprow = form->currow - field->rows + 1;
- SetStatus(field, _NEWTOP);
- }
- if (field->status & _NEWTOP)
- {
- /* means we have to copy whole range */
- first_modified_row = form->toprow;
- first_unmodified_row = first_modified_row + field->rows;
- ClrStatus(field, _NEWTOP);
- }
- else
- {
- /* we try to optimize : finding the range of touched
- lines */
- first_modified_row = form->toprow;
- while (first_modified_row < row_after_bottom)
- {
- if (is_linetouched(form->w, first_modified_row))
- break;
- first_modified_row++;
- }
- first_unmodified_row = first_modified_row;
- while (first_unmodified_row < row_after_bottom)
- {
- if (!is_linetouched(form->w, first_unmodified_row))
- break;
- first_unmodified_row++;
- }
- }
+ form->toprow = form->currow;
+ SetStatus(field, _NEWTOP);
}
- else
+ if (form->currow >= row_after_bottom)
+ {
+ form->toprow = form->currow - field->rows + 1;
+ SetStatus(field, _NEWTOP);
+ }
+ if (field->status & _NEWTOP)
{
+ /* means we have to copy whole range */
first_modified_row = form->toprow;
first_unmodified_row = first_modified_row + field->rows;
+ ClrStatus(field, _NEWTOP);
+ }
+ else
+ {
+ /* we try to optimize : finding the range of touched
+ lines */
+ first_modified_row = form->toprow;
+ while (first_modified_row < row_after_bottom)
+ {
+ if (is_linetouched(form->w, first_modified_row))
+ break;
+ first_modified_row++;
+ }
+ first_unmodified_row = first_modified_row;
+ while (first_unmodified_row < row_after_bottom)
+ {
+ if (!is_linetouched(form->w, first_unmodified_row))
+ break;
+ first_unmodified_row++;
+ }
}
- if (first_unmodified_row != first_modified_row)
- copywin(form->w,
- formwin,
- first_modified_row,
- 0,
- field->frow + first_modified_row - form->toprow,
- field->fcol,
- field->frow + first_unmodified_row - form->toprow - 1,
- field->cols + field->fcol - 1,
- 0);
}
- wsyncup(formwin);
- }
- else
- {
- /* if the field-window is simply a derived window, i.e. contains no
- * invisible parts, the whole thing is trivial
- */
- wsyncup(form->w);
+ else
+ {
+ first_modified_row = form->toprow;
+ first_unmodified_row = first_modified_row + field->rows;
+ }
+ if (first_unmodified_row != first_modified_row && is_public)
+ copywin(form->w,
+ formwin,
+ first_modified_row,
+ 0,
+ field->frow + first_modified_row - form->toprow,
+ field->fcol,
+ field->frow + first_unmodified_row - form->toprow - 1,
+ field->cols + field->fcol - 1,
+ 0);
}
+ if (is_public)
+ wsyncup(formwin);
+ }
+ else
+ {
+ /* if the field-window is simply a derived window, i.e. contains no
+ * invisible parts, the whole thing is trivial
+ */
+ if (is_public)
+ wsyncup(form->w);
}
untouchwin(form->w);
returnCode(_nc_Position_Form_Cursor(form));
@@ -978,26 +1006,29 @@ Perform_Justification(FIELD *field, WINDOW *win)
int len;
int col = 0;
- bp = Get_Start_Of_Data(field->buf, Buffer_Length(field));
+ bp = (Field_Has_Option(field, O_NO_LEFT_STRIP)
+ ? field->buf
+ : Get_Start_Of_Data(field->buf, Buffer_Length(field)));
len = (int)(After_End_Of_Data(field->buf, Buffer_Length(field)) - bp);
if (len > 0)
{
- assert(win && (field->drows == 1) && (field->dcols == field->cols));
+ assert(win && (field->drows == 1));
- switch (field->just)
- {
- case JUSTIFY_LEFT:
- break;
- case JUSTIFY_CENTER:
- col = (field->cols - len) / 2;
- break;
- case JUSTIFY_RIGHT:
- col = field->cols - len;
- break;
- default:
- break;
- }
+ if (field->cols - len >= 0)
+ switch (field->just)
+ {
+ case JUSTIFY_LEFT:
+ break;
+ case JUSTIFY_CENTER:
+ col = (field->cols - len) / 2;
+ break;
+ case JUSTIFY_RIGHT:
+ col = field->cols - len;
+ break;
+ default:
+ break;
+ }
wmove(win, 0, col);
myADDNSTR(win, bp, len);
@@ -1019,9 +1050,14 @@ static void
Undo_Justification(FIELD *field, WINDOW *win)
{
FIELD_CELL *bp;
+ int y, x;
int len;
- bp = Get_Start_Of_Data(field->buf, Buffer_Length(field));
+ getyx(win, y, x);
+
+ bp = (Field_Has_Option(field, O_NO_LEFT_STRIP)
+ ? field->buf
+ : Get_Start_Of_Data(field->buf, Buffer_Length(field)));
len = (int)(After_End_Of_Data(field->buf, Buffer_Length(field)) - bp);
if (len > 0)
@@ -1030,6 +1066,7 @@ Undo_Justification(FIELD *field, WINDOW *win)
wmove(win, 0, 0);
myADDNSTR(win, bp, len);
}
+ wmove(win, y, x);
}
/*---------------------------------------------------------------------------
@@ -1111,7 +1148,7 @@ Display_Or_Erase_Field(FIELD *field, bool bEraseFlag)
return E_SYSTEM_ERROR;
else
{
- if ((unsigned)field->opts & O_VISIBLE)
+ if (Field_Has_Option(field, O_VISIBLE))
{
Set_Field_Window_Attributes(field, win);
}
@@ -1124,7 +1161,7 @@ Display_Or_Erase_Field(FIELD *field, bool bEraseFlag)
if (!bEraseFlag)
{
- if ((unsigned)field->opts & O_PUBLIC)
+ if (Field_Has_Option(field, O_PUBLIC))
{
if (Justification_Allowed(field))
Perform_Justification(field, win);
@@ -1170,7 +1207,7 @@ Synchronize_Field(FIELD *field)
form->currow = form->curcol = form->toprow = form->begincol = 0;
werase(form->w);
- if (((unsigned)field->opts & O_PUBLIC) && Justification_Allowed(field))
+ if ((Field_Has_Option(field, O_PUBLIC)) && Justification_Allowed(field))
Undo_Justification(field, form->w);
else
Buffer_To_Window(field, form->w);
@@ -1256,7 +1293,7 @@ _nc_Synchronize_Attributes(FIELD *field)
werase(form->w);
wmove(form->w, form->currow, form->curcol);
- if ((unsigned)field->opts & O_PUBLIC)
+ if (Field_Has_Option(field, O_PUBLIC))
{
if (Justification_Allowed(field))
Undo_Justification(field, form->w);
@@ -1269,7 +1306,8 @@ _nc_Synchronize_Attributes(FIELD *field)
copywin(form->w, formwin,
0, 0,
field->frow, field->fcol,
- field->rows - 1, field->cols - 1, 0);
+ field->frow + field->rows - 1,
+ field->fcol + field->cols - 1, 0);
wsyncup(formwin);
Buffer_To_Window(field, form->w);
SetStatus(field, _NEWTOP); /* fake refresh to paint all */
@@ -1389,6 +1427,57 @@ _nc_Synchronize_Options(FIELD *field, Field_Options newopts)
returnCode(res);
}
+/*
+ * Removes the focus from the current field of the form.
+ */
+void
+_nc_Unset_Current_Field(FORM *form)
+{
+ FIELD *field = form->current;
+
+ _nc_Refresh_Current_Field(form);
+ if (Field_Has_Option(field, O_PUBLIC))
+ {
+ if (field->drows > field->rows)
+ {
+ if (form->toprow == 0)
+ ClrStatus(field, _NEWTOP);
+ else
+ SetStatus(field, _NEWTOP);
+ }
+ else
+ {
+ if (Justification_Allowed(field))
+ {
+ Window_To_Buffer(form, field);
+ werase(form->w);
+ Perform_Justification(field, form->w);
+ if (Field_Has_Option(field, O_DYNAMIC_JUSTIFY) &&
+ (form->w->_parent == 0))
+ {
+ copywin(form->w,
+ Get_Form_Window(form),
+ 0,
+ 0,
+ field->frow,
+ field->fcol,
+ field->frow,
+ field->cols + field->fcol - 1,
+ 0);
+ wsyncup(Get_Form_Window(form));
+ }
+ else
+ {
+ wsyncup(form->w);
+ }
+ }
+ }
+ }
+ delwin(form->w);
+ form->w = (WINDOW *)0;
+ form->current = 0;
+}
+
/*---------------------------------------------------------------------------
| Facility : libnform
| Function : int _nc_Set_Current_Field(FORM * form,
@@ -1409,7 +1498,7 @@ _nc_Set_Current_Field(FORM *form, FIELD *newfield)
T((T_CALLED("_nc_Set_Current_Field(%p,%p)"), (void *)form, (void *)newfield));
- if (!form || !newfield || !form->current || (newfield->form != form))
+ if (!form || !newfield || (newfield->form != form))
returnCode(E_BAD_ARGUMENT);
if ((form->status & _IN_DRIVER))
@@ -1423,34 +1512,10 @@ _nc_Set_Current_Field(FORM *form, FIELD *newfield)
if ((field != newfield) ||
!(form->status & _POSTED))
{
- if ((form->w) &&
- ((unsigned)field->opts & O_VISIBLE) &&
+ if (field && (form->w) &&
+ (Field_Has_Option(field, O_VISIBLE)) &&
(field->form->curpage == field->page))
- {
- _nc_Refresh_Current_Field(form);
- if ((unsigned)field->opts & O_PUBLIC)
- {
- if (field->drows > field->rows)
- {
- if (form->toprow == 0)
- ClrStatus(field, _NEWTOP);
- else
- SetStatus(field, _NEWTOP);
- }
- else
- {
- if (Justification_Allowed(field))
- {
- Window_To_Buffer(form, field);
- werase(form->w);
- Perform_Justification(field, form->w);
- wsyncup(form->w);
- }
- }
- }
- delwin(form->w);
- form->w = (WINDOW *)0;
- }
+ _nc_Unset_Current_Field(form);
field = newfield;
@@ -1998,7 +2063,7 @@ Vertical_Scrolling(int (*const fct) (FORM *), FORM *form)
{
res = fct(form);
if (res == E_OK)
- SetStatus(form, _NEWTOP);
+ SetStatus(form->current, _NEWTOP);
}
return (res);
}
@@ -2430,7 +2495,7 @@ Wrapping_Not_Necessary_Or_Wrapping_Ok(FORM *form)
int result = E_REQUEST_DENIED;
bool Last_Row = ((field->drows - 1) == form->currow);
- if (((unsigned)field->opts & O_WRAP) && /* wrapping wanted */
+ if ((Field_Has_Option(field, O_WRAP)) && /* wrapping wanted */
(!Single_Line_Field(field)) && /* must be multi-line */
(There_Is_No_Room_For_A_Char_In_Line(form)) && /* line is full */
(!Last_Row || Growable(field))) /* there are more lines */
@@ -3111,7 +3176,7 @@ Check_Field(FORM *form, FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
{
if (typ)
{
- if ((unsigned)field->opts & O_NULLOK)
+ if (Field_Has_Option(field, O_NULLOK))
{
FIELD_CELL *bp = field->buf;
@@ -3168,7 +3233,7 @@ _nc_Internal_Validation(FORM *form)
Synchronize_Buffer(form);
if ((form->status & _FCHECK_REQUIRED) ||
- (!((unsigned)field->opts & O_PASSOK)))
+ (!(Field_Has_Option(field, O_PASSOK))))
{
if (!Check_Field(form, field->type, field, (TypeArgument *)(field->arg)))
return FALSE;
@@ -3273,7 +3338,7 @@ _nc_First_Active_Field(FORM *form)
do
{
field = (field == last_on_page) ? first : field + 1;
- if (((unsigned)(*field)->opts & O_VISIBLE))
+ if (Field_Has_Option(*field, O_VISIBLE))
break;
}
while (proposed != (*field));
@@ -4001,9 +4066,9 @@ Data_Entry_w(FORM *form, wchar_t c)
int result = E_REQUEST_DENIED;
T((T_CALLED("Data_Entry(%p,%s)"), (void *)form, _tracechtype((chtype)c)));
- if (((unsigned)field->opts & O_EDIT)
+ if ((Field_Has_Option(field, O_EDIT))
#if FIX_FORM_INACTIVE_BUG
- && ((unsigned)field->opts & O_ACTIVE)
+ && (Field_Has_Option(field, O_ACTIVE))
#endif
)
{
@@ -4011,9 +4076,9 @@ Data_Entry_w(FORM *form, wchar_t c)
cchar_t temp_ch;
given[0] = c;
- given[1] = 1;
+ given[1] = 0;
setcchar(&temp_ch, given, 0, 0, (void *)0);
- if (((unsigned)field->opts & O_BLANK) &&
+ if ((Field_Has_Option(field, O_BLANK)) &&
First_Position_In_Current_Field(form) &&
!(form->status & _FCHECK_REQUIRED) &&
!(form->status & _WINDOW_MODIFIED))
@@ -4044,7 +4109,7 @@ Data_Entry_w(FORM *form, wchar_t c)
((field->dcols - 1) == form->curcol));
form->status |= _WINDOW_MODIFIED;
- if (End_Of_Field && !Growable(field) && ((unsigned)field->opts & O_AUTOSKIP))
+ if (End_Of_Field && !Growable(field) && (Field_Has_Option(field, O_AUTOSKIP)))
result = Inter_Field_Navigation(FN_Next_Field, form);
else
{
@@ -4088,13 +4153,13 @@ Data_Entry(FORM *form, int c)
int result = E_REQUEST_DENIED;
T((T_CALLED("Data_Entry(%p,%s)"), (void *)form, _tracechtype((chtype)c)));
- if (((unsigned)field->opts & O_EDIT)
+ if ((Field_Has_Option(field, O_EDIT))
#if FIX_FORM_INACTIVE_BUG
- && ((unsigned)field->opts & O_ACTIVE)
+ && (Field_Has_Option(field, O_ACTIVE))
#endif
)
{
- if (((unsigned)field->opts & O_BLANK) &&
+ if ((Field_Has_Option(field, O_BLANK)) &&
First_Position_In_Current_Field(form) &&
!(form->status & _FCHECK_REQUIRED) &&
!(form->status & _WINDOW_MODIFIED))
@@ -4124,8 +4189,14 @@ Data_Entry(FORM *form, int c)
bool End_Of_Field = (((field->drows - 1) == form->currow) &&
((field->dcols - 1) == form->curcol));
+ if (Field_Has_Option(field, O_EDGE_INSERT_STAY))
+ move_after_insert = !!(form->curcol
+ - form->begincol
+ - field->cols
+ + 1);
+
SetStatus(form, _WINDOW_MODIFIED);
- if (End_Of_Field && !Growable(field) && ((unsigned)field->opts & O_AUTOSKIP))
+ if (End_Of_Field && !Growable(field) && (Field_Has_Option(field, O_AUTOSKIP)))
result = Inter_Field_Navigation(FN_Next_Field, form);
else
{
@@ -4288,12 +4359,14 @@ form_driver(FORM *form, int c)
const Binding_Info *BI = (Binding_Info *) 0;
int res = E_UNKNOWN_COMMAND;
+ move_after_insert = TRUE;
+
T((T_CALLED("form_driver(%p,%d)"), (void *)form, c));
if (!form)
RETURN(E_BAD_ARGUMENT);
- if (!(form->field))
+ if (!(form->field) || !(form->current))
RETURN(E_NOT_CONNECTED);
assert(form->page);
@@ -4493,7 +4566,7 @@ form_driver_w(FORM *form, int type, wchar_t c)
const Binding_Info *BI = (Binding_Info *) 0;
int res = E_UNKNOWN_COMMAND;
- T((T_CALLED("form_driver(%p,%d)"), (void *)form, (int) c));
+ T((T_CALLED("form_driver(%p,%d)"), (void *)form, (int)c));
if (!form)
RETURN(E_BAD_ARGUMENT);
@@ -4503,7 +4576,7 @@ form_driver_w(FORM *form, int type, wchar_t c)
assert(form->page);
- if (c == FIRST_ACTIVE_MAGIC)
+ if (c == (wchar_t)FIRST_ACTIVE_MAGIC)
{
form->current = _nc_First_Active_Field(form);
RETURN(E_OK);
@@ -4905,7 +4978,7 @@ _nc_Widen_String(char *source, int *lengthp)
{
if (pass)
{
- result[need] = source[passed];
+ result[need] = (wchar_t)source[passed];
}
++need;
++passed;
diff --git a/form/frm_hook.c b/form/frm_hook.c
index 23850bfd1f8e..5f1f602f49db 100644
--- a/form/frm_hook.c
+++ b/form/frm_hook.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2018 Free 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,13 +32,14 @@
#include "form.priv.h"
-MODULE_ID("$Id: frm_hook.c,v 1.16 2012/03/11 00:37:16 tom Exp $")
+MODULE_ID("$Id: frm_hook.c,v 1.18 2018/12/16 00:13:36 tom Exp $")
/* "Template" macro to generate function to set application specific hook */
#define GEN_HOOK_SET_FUNCTION( typ, name ) \
NCURSES_IMPEXP int NCURSES_API set_ ## typ ## _ ## name (FORM *form, Form_Hook func)\
{\
- T((T_CALLED("set_" #typ"_"#name"(%p,%p)"), (void *) form, func));\
+ TR_FUNC_BFR(1); \
+ T((T_CALLED("set_" #typ"_"#name"(%p,%s)"), (void *) form, TR_FUNC_ARG(0, func)));\
(Normalize_Form( form ) -> typ ## name) = func ;\
RETURN(E_OK);\
}
diff --git a/form/frm_post.c b/form/frm_post.c
index 31568b2a6e1f..0a07ee7947bf 100644
--- a/form/frm_post.c
+++ b/form/frm_post.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2020 Free 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,12 +32,12 @@
#include "form.priv.h"
-MODULE_ID("$Id: frm_post.c,v 1.11 2012/06/10 00:27:49 tom Exp $")
+MODULE_ID("$Id: frm_post.c,v 1.12 2020/01/18 17:05:03 tom Exp $")
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int post_form(FORM * form)
-|
+|
| Description : Writes the form into its associated subwindow.
|
| Return Values : E_OK - success
@@ -69,7 +69,7 @@ post_form(FORM *form)
if ((form->cols > getmaxx(formwin)) || (form->rows > getmaxy(formwin)))
RETURN(E_NO_ROOM);
- /* reset form->curpage to an invald value. This forces Set_Form_Page
+ /* reset form->curpage to an invalid value. This forces Set_Form_Page
to do the page initialization which is required by post_form.
*/
page = form->curpage;
@@ -87,9 +87,9 @@ post_form(FORM *form)
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int unpost_form(FORM * form)
-|
+|
| Description : Erase form from its associated subwindow.
|
| Return Values : E_OK - success
diff --git a/form/frm_req_name.c b/form/frm_req_name.c
index c24db1a8a924..5686b22202d1 100644
--- a/form/frm_req_name.c
+++ b/form/frm_req_name.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2015 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,73 +37,77 @@
#include "form.priv.h"
-MODULE_ID("$Id: frm_req_name.c,v 1.18 2012/07/21 23:17:23 tom Exp $")
+MODULE_ID("$Id: frm_req_name.c,v 1.19 2015/04/04 17:11:46 tom Exp $")
-static const char *request_names[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] =
+#define DATA(s) { s }
+
+static const char request_names[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1][13] =
{
- "NEXT_PAGE",
- "PREV_PAGE",
- "FIRST_PAGE",
- "LAST_PAGE",
-
- "NEXT_FIELD",
- "PREV_FIELD",
- "FIRST_FIELD",
- "LAST_FIELD",
- "SNEXT_FIELD",
- "SPREV_FIELD",
- "SFIRST_FIELD",
- "SLAST_FIELD",
- "LEFT_FIELD",
- "RIGHT_FIELD",
- "UP_FIELD",
- "DOWN_FIELD",
-
- "NEXT_CHAR",
- "PREV_CHAR",
- "NEXT_LINE",
- "PREV_LINE",
- "NEXT_WORD",
- "PREV_WORD",
- "BEG_FIELD",
- "END_FIELD",
- "BEG_LINE",
- "END_LINE",
- "LEFT_CHAR",
- "RIGHT_CHAR",
- "UP_CHAR",
- "DOWN_CHAR",
-
- "NEW_LINE",
- "INS_CHAR",
- "INS_LINE",
- "DEL_CHAR",
- "DEL_PREV",
- "DEL_LINE",
- "DEL_WORD",
- "CLR_EOL",
- "CLR_EOF",
- "CLR_FIELD",
- "OVL_MODE",
- "INS_MODE",
- "SCR_FLINE",
- "SCR_BLINE",
- "SCR_FPAGE",
- "SCR_BPAGE",
- "SCR_FHPAGE",
- "SCR_BHPAGE",
- "SCR_FCHAR",
- "SCR_BCHAR",
- "SCR_HFLINE",
- "SCR_HBLINE",
- "SCR_HFHALF",
- "SCR_HBHALF",
-
- "VALIDATION",
- "NEXT_CHOICE",
- "PREV_CHOICE"
+ DATA("NEXT_PAGE"),
+ DATA("PREV_PAGE"),
+ DATA("FIRST_PAGE"),
+ DATA("LAST_PAGE"),
+
+ DATA("NEXT_FIELD"),
+ DATA("PREV_FIELD"),
+ DATA("FIRST_FIELD"),
+ DATA("LAST_FIELD"),
+ DATA("SNEXT_FIELD"),
+ DATA("SPREV_FIELD"),
+ DATA("SFIRST_FIELD"),
+ DATA("SLAST_FIELD"),
+ DATA("LEFT_FIELD"),
+ DATA("RIGHT_FIELD"),
+ DATA("UP_FIELD"),
+ DATA("DOWN_FIELD"),
+
+ DATA("NEXT_CHAR"),
+ DATA("PREV_CHAR"),
+ DATA("NEXT_LINE"),
+ DATA("PREV_LINE"),
+ DATA("NEXT_WORD"),
+ DATA("PREV_WORD"),
+ DATA("BEG_FIELD"),
+ DATA("END_FIELD"),
+ DATA("BEG_LINE"),
+ DATA("END_LINE"),
+ DATA("LEFT_CHAR"),
+ DATA("RIGHT_CHAR"),
+ DATA("UP_CHAR"),
+ DATA("DOWN_CHAR"),
+
+ DATA("NEW_LINE"),
+ DATA("INS_CHAR"),
+ DATA("INS_LINE"),
+ DATA("DEL_CHAR"),
+ DATA("DEL_PREV"),
+ DATA("DEL_LINE"),
+ DATA("DEL_WORD"),
+ DATA("CLR_EOL"),
+ DATA("CLR_EOF"),
+ DATA("CLR_FIELD"),
+ DATA("OVL_MODE"),
+ DATA("INS_MODE"),
+ DATA("SCR_FLINE"),
+ DATA("SCR_BLINE"),
+ DATA("SCR_FPAGE"),
+ DATA("SCR_BPAGE"),
+ DATA("SCR_FHPAGE"),
+ DATA("SCR_BHPAGE"),
+ DATA("SCR_FCHAR"),
+ DATA("SCR_BCHAR"),
+ DATA("SCR_HFLINE"),
+ DATA("SCR_HBLINE"),
+ DATA("SCR_HFHALF"),
+ DATA("SCR_HBHALF"),
+
+ DATA("VALIDATION"),
+ DATA("NEXT_CHOICE"),
+ DATA("PREV_CHOICE")
};
+#undef DATA
+
#define A_SIZE (sizeof(request_names)/sizeof(request_names[0]))
/*---------------------------------------------------------------------------
diff --git a/form/fty_generic.c b/form/fty_generic.c
index 429ceac44a05..83d18f0302ce 100644
--- a/form/fty_generic.c
+++ b/form/fty_generic.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2008-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2018,2020 Free 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 "form.priv.h"
-MODULE_ID("$Id: fty_generic.c,v 1.6 2012/06/10 00:27:49 tom Exp $")
+MODULE_ID("$Id: fty_generic.c,v 1.9 2020/01/18 17:08:04 tom Exp $")
/*
* This is not a full implementation of a field type, but adds some
@@ -55,15 +55,15 @@ MODULE_ID("$Id: fty_generic.c,v 1.6 2012/06/10 00:27:49 tom Exp $")
* fieldtype they register with the forms library using this call.
*
* For that purpose we have extended the fieldtype struc by a new element
- * that gets the arguments from a single struct passed by the caller.
- *
+ * that gets the arguments from a single struct passed by the caller.
+ *
*/
#if NCURSES_INTEROP_FUNCS
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static void *Generic_This_Type( void * arg )
-|
+|
| Description : We interpret the passed arg just as a handle the
| calling language uses to keep track of its allocated
| argument structures. We can simply copy it back.
@@ -89,7 +89,7 @@ Generic_This_Type(void *arg)
| write a field_check and a char_check function and give
| them as input to this call. A callback to allow the
| release of the allocated memory must also be provided.
-| For generic field types, we provide some more
+| For generic field types, we provide some more
| information about the field as parameters.
|
| If an error occurs, errno is set to
@@ -109,8 +109,14 @@ _nc_generic_fieldtype(bool (*const field_check) (FORM *, FIELD *, const void *),
int code = E_SYSTEM_ERROR;
FIELDTYPE *res = (FIELDTYPE *)0;
- T((T_CALLED("_nc_generic_fieldtype(%p,%p,%p,%p,%p)"),
- field_check, char_check, next, prev, freecallback));
+ TR_FUNC_BFR(5);
+
+ T((T_CALLED("_nc_generic_fieldtype(%s,%s,%s,%s,%s)"),
+ TR_FUNC_ARG(0, field_check),
+ TR_FUNC_ARG(1, char_check),
+ TR_FUNC_ARG(2, next),
+ TR_FUNC_ARG(3, prev),
+ TR_FUNC_ARG(4, freecallback)));
if (field_check || char_check)
{
@@ -139,16 +145,16 @@ _nc_generic_fieldtype(bool (*const field_check) (FORM *, FIELD *, const void *),
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static TypeArgument *GenericArgument(
| const FIELDTYPE* typ,
| int (*argiterator)(void**),
| int* err)
-|
+|
| Description : The iterator callback must browse through all fieldtype
| parameters that have an argument associated with the
| type. The iterator returns 1 if the operation to get
-| the next element was successfull, 0 otherwise. If the
+| the next element was successful, 0 otherwise. If the
| iterator could move to the next argument, it fills
| the void* pointer representing the argument into the
| location provided as argument to the iterator.
@@ -200,14 +206,14 @@ GenericArgument(const FIELDTYPE *typ,
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int _nc_set_generic_fieldtype(
| FIELD* field,
| FIELDTYPE* ftyp,
| int (*argiterator)(void**))
-|
+|
| Description : Assign the fieldtype to the field and use the iterator
-| mechanism to get the arguments when a check is
+| mechanism to get the arguments when a check is
| performed.
|
| Return Values : E_OK if all went well
@@ -258,11 +264,11 @@ _nc_set_generic_fieldtype(FIELD *field,
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : WINDOW* _nc_form_cursor(
| FORM* form,
| int *pRow, int *pCol)
-|
+|
| Description : Get the current position of the form cursor position
| We also return the field window
|
diff --git a/form/fty_num.c b/form/fty_num.c
index 8cce43f83a17..d144ef4a9716 100644
--- a/form/fty_num.c
+++ b/form/fty_num.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2019 Free 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,13 +34,13 @@
#include "form.priv.h"
-MODULE_ID("$Id: fty_num.c,v 1.29 2012/02/23 10:02:15 tom Exp $")
+MODULE_ID("$Id: fty_num.c,v 1.31 2019/03/30 21:20:04 tom Exp $")
#if HAVE_LOCALE_H
#include <locale.h>
#endif
-#if HAVE_LOCALE_H
+#if HAVE_LOCALE_H && HAVE_LOCALECONV
#define isDecimalPoint(c) ((c) == ((L && L->decimal_point) ? *(L->decimal_point) : '.'))
#else
#define isDecimalPoint(c) ((c) == '.')
@@ -96,7 +96,7 @@ Generic_This_Type(void *arg)
argn->low = args->low;
argn->high = args->high;
-#if HAVE_LOCALE_H
+#if HAVE_LOCALE_H && HAVE_LOCALECONV
argn->L = localeconv();
#else
argn->L = NULL;
diff --git a/form/fty_regex.c b/form/fty_regex.c
index 7a42e7eee7f0..45ea1ab375ca 100644
--- a/form/fty_regex.c
+++ b/form/fty_regex.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2018 Free 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,10 +34,17 @@
#include "form.priv.h"
-MODULE_ID("$Id: fty_regex.c,v 1.25 2012/10/27 20:12:53 tom Exp $")
+MODULE_ID("$Id: fty_regex.c,v 1.27 2018/07/14 21:41:39 tom Exp $")
-#if HAVE_REGEX_H_FUNCS /* We prefer POSIX regex */
+#if HAVE_REGEX_H_FUNCS || HAVE_LIB_PCRE2 /* We prefer POSIX regex */
+
+#if HAVE_PCRE2_POSIX_H
+#include <pcre2-posix.h>
+#elif HAVE_PCREPOSIX_H
+#include <pcreposix.h>
+#else
#include <regex.h>
+#endif
typedef struct
{
@@ -113,7 +120,7 @@ Generic_RegularExpression_Type(void *arg MAYBE_UNUSED)
if (rx)
{
- preg = typeMalloc(RegExp_Arg, 1);
+ preg = typeCalloc(RegExp_Arg, 1);
if (preg)
{
@@ -264,6 +271,7 @@ Free_RegularExpression_Type(void *argp MAYBE_UNUSED)
{
free(ap->refCount);
regfree(ap->pRegExp);
+ free(ap->pRegExp);
}
#elif HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS
if (ap->compiled_expression)
diff --git a/form/llib-lform b/form/llib-lform
index 2b6abdcd7c99..35941e975a93 100644
--- a/form/llib-lform
+++ b/form/llib-lform
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2017 Free 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 1996-2005,2010 *
+ * Author: Thomas E. Dickey 1996-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -110,6 +110,11 @@ int set_current_field(
FIELD *field)
{ return(*(int *)0); }
+#undef unfocus_current_field
+int unfocus_current_field(
+ FORM *const form)
+ { return(*(int *)0); }
+
#undef current_field
FIELD *current_field(
const FORM *form)
@@ -458,6 +463,11 @@ int _nc_Synchronize_Options(
Field_Options newopts)
{ return(*(int *)0); }
+#undef _nc_Unset_Current_Field
+void _nc_Unset_Current_Field(
+ FORM *form)
+ { /* void */ }
+
#undef _nc_Set_Current_Field
int _nc_Set_Current_Field(
FORM *form,
@@ -674,6 +684,10 @@ alnumARG;
#undef TYPE_ALNUM
FIELDTYPE *TYPE_ALNUM;
+#undef _nc_TYPE_ALNUM
+FIELDTYPE *_nc_TYPE_ALNUM(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_alpha.c */
typedef struct
@@ -685,6 +699,10 @@ alphaARG;
#undef TYPE_ALPHA
FIELDTYPE *TYPE_ALPHA;
+#undef _nc_TYPE_ALPHA
+FIELDTYPE *_nc_TYPE_ALPHA(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_enum.c */
typedef struct
@@ -707,11 +725,49 @@ enumParams;
#undef TYPE_ENUM
FIELDTYPE *TYPE_ENUM;
+#undef _nc_TYPE_ENUM
+FIELDTYPE *_nc_TYPE_ENUM(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_generic.c */
-#undef _nc_fty_generic
-void _nc_fty_generic(void)
- { /* void */ }
+#undef _nc_generic_fieldtype
+FIELDTYPE *_nc_generic_fieldtype(
+ NCURSES_BOOL (*const field_check)(
+ FORM *p1,
+ FIELD *p2,
+ const void *p3),
+ NCURSES_BOOL (*const char_check)(
+ int p1,
+ FORM *p2,
+ FIELD *p3,
+ const void *p4),
+ NCURSES_BOOL (*const next)(
+ FORM *p1,
+ FIELD *p2,
+ const void *p3),
+ NCURSES_BOOL (*const prev)(
+ FORM *p1,
+ FIELD *p2,
+ const void *p3),
+ void (*freecallback)(
+ void *p1))
+ { return(*(FIELDTYPE **)0); }
+
+#undef _nc_set_generic_fieldtype
+int _nc_set_generic_fieldtype(
+ FIELD *field,
+ FIELDTYPE *ftyp,
+ int (*argiterator)(
+ void **p1))
+ { return(*(int *)0); }
+
+#undef _nc_form_cursor
+WINDOW *_nc_form_cursor(
+ const FORM *form,
+ int *pRow,
+ int *pCol)
+ { return(*(WINDOW **)0); }
/* ./fty_int.c */
@@ -734,13 +790,20 @@ integerPARM;
#undef TYPE_INTEGER
FIELDTYPE *TYPE_INTEGER;
+#undef _nc_TYPE_INTEGER
+FIELDTYPE *_nc_TYPE_INTEGER(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_ipv4.c */
+
#undef TYPE_IPV4
FIELDTYPE *TYPE_IPV4;
-/* ./fty_num.c */
+#undef _nc_TYPE_IPV4
+FIELDTYPE *_nc_TYPE_IPV4(void)
+ { return(*(FIELDTYPE **)0); }
-#include <locale.h>
+/* ./fty_num.c */
typedef struct
{
@@ -762,9 +825,11 @@ thisPARM;
#undef TYPE_NUMERIC
FIELDTYPE *TYPE_NUMERIC;
-/* ./fty_regex.c */
+#undef _nc_TYPE_NUMERIC
+FIELDTYPE *_nc_TYPE_NUMERIC(void)
+ { return(*(FIELDTYPE **)0); }
-#include <regex.h>
+/* ./fty_regex.c */
typedef struct
{
@@ -775,3 +840,7 @@ RegExp_Arg;
#undef TYPE_REGEXP
FIELDTYPE *TYPE_REGEXP;
+
+#undef _nc_TYPE_REGEXP
+FIELDTYPE *_nc_TYPE_REGEXP(void)
+ { return(*(FIELDTYPE **)0); }
diff --git a/form/llib-lformt b/form/llib-lformt
index 33de63cde975..6aab98dc0f64 100644
--- a/form/llib-lformt
+++ b/form/llib-lformt
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2010-2015,2017 Free 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 2010 *
+ * Author: Thomas E. Dickey 2010-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -110,6 +110,11 @@ int set_current_field(
FIELD *field)
{ return(*(int *)0); }
+#undef unfocus_current_field
+int unfocus_current_field(
+ FORM *const form)
+ { return(*(int *)0); }
+
#undef current_field
FIELD *current_field(
const FORM *form)
@@ -458,6 +463,11 @@ int _nc_Synchronize_Options(
Field_Options newopts)
{ return(*(int *)0); }
+#undef _nc_Unset_Current_Field
+void _nc_Unset_Current_Field(
+ FORM *form)
+ { /* void */ }
+
#undef _nc_Set_Current_Field
int _nc_Set_Current_Field(
FORM *form,
@@ -674,6 +684,10 @@ alnumARG;
#undef TYPE_ALNUM
FIELDTYPE *TYPE_ALNUM;
+#undef _nc_TYPE_ALNUM
+FIELDTYPE *_nc_TYPE_ALNUM(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_alpha.c */
typedef struct
@@ -685,6 +699,10 @@ alphaARG;
#undef TYPE_ALPHA
FIELDTYPE *TYPE_ALPHA;
+#undef _nc_TYPE_ALPHA
+FIELDTYPE *_nc_TYPE_ALPHA(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_enum.c */
typedef struct
@@ -707,11 +725,49 @@ enumParams;
#undef TYPE_ENUM
FIELDTYPE *TYPE_ENUM;
+#undef _nc_TYPE_ENUM
+FIELDTYPE *_nc_TYPE_ENUM(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_generic.c */
-#undef _nc_fty_generic
-void _nc_fty_generic(void)
- { /* void */ }
+#undef _nc_generic_fieldtype
+FIELDTYPE *_nc_generic_fieldtype(
+ NCURSES_BOOL (*const field_check)(
+ FORM *p1,
+ FIELD *p2,
+ const void *p3),
+ NCURSES_BOOL (*const char_check)(
+ int p1,
+ FORM *p2,
+ FIELD *p3,
+ const void *p4),
+ NCURSES_BOOL (*const next)(
+ FORM *p1,
+ FIELD *p2,
+ const void *p3),
+ NCURSES_BOOL (*const prev)(
+ FORM *p1,
+ FIELD *p2,
+ const void *p3),
+ void (*freecallback)(
+ void *p1))
+ { return(*(FIELDTYPE **)0); }
+
+#undef _nc_set_generic_fieldtype
+int _nc_set_generic_fieldtype(
+ FIELD *field,
+ FIELDTYPE *ftyp,
+ int (*argiterator)(
+ void **p1))
+ { return(*(int *)0); }
+
+#undef _nc_form_cursor
+WINDOW *_nc_form_cursor(
+ const FORM *form,
+ int *pRow,
+ int *pCol)
+ { return(*(WINDOW **)0); }
/* ./fty_int.c */
@@ -734,13 +790,20 @@ integerPARM;
#undef TYPE_INTEGER
FIELDTYPE *TYPE_INTEGER;
+#undef _nc_TYPE_INTEGER
+FIELDTYPE *_nc_TYPE_INTEGER(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_ipv4.c */
+
#undef TYPE_IPV4
FIELDTYPE *TYPE_IPV4;
-/* ./fty_num.c */
+#undef _nc_TYPE_IPV4
+FIELDTYPE *_nc_TYPE_IPV4(void)
+ { return(*(FIELDTYPE **)0); }
-#include <locale.h>
+/* ./fty_num.c */
typedef struct
{
@@ -762,9 +825,11 @@ thisPARM;
#undef TYPE_NUMERIC
FIELDTYPE *TYPE_NUMERIC;
-/* ./fty_regex.c */
+#undef _nc_TYPE_NUMERIC
+FIELDTYPE *_nc_TYPE_NUMERIC(void)
+ { return(*(FIELDTYPE **)0); }
-#include <regex.h>
+/* ./fty_regex.c */
typedef struct
{
@@ -775,3 +840,7 @@ RegExp_Arg;
#undef TYPE_REGEXP
FIELDTYPE *TYPE_REGEXP;
+
+#undef _nc_TYPE_REGEXP
+FIELDTYPE *_nc_TYPE_REGEXP(void)
+ { return(*(FIELDTYPE **)0); }
diff --git a/form/llib-lformtw b/form/llib-lformtw
index 6e9cd13f8070..5d853480e384 100644
--- a/form/llib-lformtw
+++ b/form/llib-lformtw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2010-2015,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -110,6 +110,11 @@ int set_current_field(
FIELD *field)
{ return(*(int *)0); }
+#undef unfocus_current_field
+int unfocus_current_field(
+ FORM *const form)
+ { return(*(int *)0); }
+
#undef current_field
FIELD *current_field(
const FORM *form)
@@ -458,6 +463,11 @@ int _nc_Synchronize_Options(
Field_Options newopts)
{ return(*(int *)0); }
+#undef _nc_Unset_Current_Field
+void _nc_Unset_Current_Field(
+ FORM *form)
+ { /* void */ }
+
#undef _nc_Set_Current_Field
int _nc_Set_Current_Field(
FORM *form,
@@ -687,6 +697,10 @@ alnumARG;
#undef TYPE_ALNUM
FIELDTYPE *TYPE_ALNUM;
+#undef _nc_TYPE_ALNUM
+FIELDTYPE *_nc_TYPE_ALNUM(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_alpha.c */
typedef struct
@@ -698,6 +712,10 @@ alphaARG;
#undef TYPE_ALPHA
FIELDTYPE *TYPE_ALPHA;
+#undef _nc_TYPE_ALPHA
+FIELDTYPE *_nc_TYPE_ALPHA(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_enum.c */
typedef struct
@@ -720,11 +738,49 @@ enumParams;
#undef TYPE_ENUM
FIELDTYPE *TYPE_ENUM;
+#undef _nc_TYPE_ENUM
+FIELDTYPE *_nc_TYPE_ENUM(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_generic.c */
-#undef _nc_fty_generic
-void _nc_fty_generic(void)
- { /* void */ }
+#undef _nc_generic_fieldtype
+FIELDTYPE *_nc_generic_fieldtype(
+ NCURSES_BOOL (*const field_check)(
+ FORM *p1,
+ FIELD *p2,
+ const void *p3),
+ NCURSES_BOOL (*const char_check)(
+ int p1,
+ FORM *p2,
+ FIELD *p3,
+ const void *p4),
+ NCURSES_BOOL (*const next)(
+ FORM *p1,
+ FIELD *p2,
+ const void *p3),
+ NCURSES_BOOL (*const prev)(
+ FORM *p1,
+ FIELD *p2,
+ const void *p3),
+ void (*freecallback)(
+ void *p1))
+ { return(*(FIELDTYPE **)0); }
+
+#undef _nc_set_generic_fieldtype
+int _nc_set_generic_fieldtype(
+ FIELD *field,
+ FIELDTYPE *ftyp,
+ int (*argiterator)(
+ void **p1))
+ { return(*(int *)0); }
+
+#undef _nc_form_cursor
+WINDOW *_nc_form_cursor(
+ const FORM *form,
+ int *pRow,
+ int *pCol)
+ { return(*(WINDOW **)0); }
/* ./fty_int.c */
@@ -747,13 +803,20 @@ integerPARM;
#undef TYPE_INTEGER
FIELDTYPE *TYPE_INTEGER;
+#undef _nc_TYPE_INTEGER
+FIELDTYPE *_nc_TYPE_INTEGER(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_ipv4.c */
+
#undef TYPE_IPV4
FIELDTYPE *TYPE_IPV4;
-/* ./fty_num.c */
+#undef _nc_TYPE_IPV4
+FIELDTYPE *_nc_TYPE_IPV4(void)
+ { return(*(FIELDTYPE **)0); }
-#include <locale.h>
+/* ./fty_num.c */
typedef struct
{
@@ -775,9 +838,11 @@ thisPARM;
#undef TYPE_NUMERIC
FIELDTYPE *TYPE_NUMERIC;
-/* ./fty_regex.c */
+#undef _nc_TYPE_NUMERIC
+FIELDTYPE *_nc_TYPE_NUMERIC(void)
+ { return(*(FIELDTYPE **)0); }
-#include <regex.h>
+/* ./fty_regex.c */
typedef struct
{
@@ -788,3 +853,7 @@ RegExp_Arg;
#undef TYPE_REGEXP
FIELDTYPE *TYPE_REGEXP;
+
+#undef _nc_TYPE_REGEXP
+FIELDTYPE *_nc_TYPE_REGEXP(void)
+ { return(*(FIELDTYPE **)0); }
diff --git a/form/llib-lformw b/form/llib-lformw
index 04cbe2b6e36c..db5db9ed2df8 100644
--- a/form/llib-lformw
+++ b/form/llib-lformw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2015,2017 Free 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 2002-on *
+ * Author: Thomas E. Dickey 2002-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -110,6 +110,11 @@ int set_current_field(
FIELD *field)
{ return(*(int *)0); }
+#undef unfocus_current_field
+int unfocus_current_field(
+ FORM *const form)
+ { return(*(int *)0); }
+
#undef current_field
FIELD *current_field(
const FORM *form)
@@ -458,6 +463,11 @@ int _nc_Synchronize_Options(
Field_Options newopts)
{ return(*(int *)0); }
+#undef _nc_Unset_Current_Field
+void _nc_Unset_Current_Field(
+ FORM *form)
+ { /* void */ }
+
#undef _nc_Set_Current_Field
int _nc_Set_Current_Field(
FORM *form,
@@ -687,6 +697,10 @@ alnumARG;
#undef TYPE_ALNUM
FIELDTYPE *TYPE_ALNUM;
+#undef _nc_TYPE_ALNUM
+FIELDTYPE *_nc_TYPE_ALNUM(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_alpha.c */
typedef struct
@@ -698,6 +712,10 @@ alphaARG;
#undef TYPE_ALPHA
FIELDTYPE *TYPE_ALPHA;
+#undef _nc_TYPE_ALPHA
+FIELDTYPE *_nc_TYPE_ALPHA(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_enum.c */
typedef struct
@@ -720,11 +738,49 @@ enumParams;
#undef TYPE_ENUM
FIELDTYPE *TYPE_ENUM;
+#undef _nc_TYPE_ENUM
+FIELDTYPE *_nc_TYPE_ENUM(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_generic.c */
-#undef _nc_fty_generic
-void _nc_fty_generic(void)
- { /* void */ }
+#undef _nc_generic_fieldtype
+FIELDTYPE *_nc_generic_fieldtype(
+ NCURSES_BOOL (*const field_check)(
+ FORM *p1,
+ FIELD *p2,
+ const void *p3),
+ NCURSES_BOOL (*const char_check)(
+ int p1,
+ FORM *p2,
+ FIELD *p3,
+ const void *p4),
+ NCURSES_BOOL (*const next)(
+ FORM *p1,
+ FIELD *p2,
+ const void *p3),
+ NCURSES_BOOL (*const prev)(
+ FORM *p1,
+ FIELD *p2,
+ const void *p3),
+ void (*freecallback)(
+ void *p1))
+ { return(*(FIELDTYPE **)0); }
+
+#undef _nc_set_generic_fieldtype
+int _nc_set_generic_fieldtype(
+ FIELD *field,
+ FIELDTYPE *ftyp,
+ int (*argiterator)(
+ void **p1))
+ { return(*(int *)0); }
+
+#undef _nc_form_cursor
+WINDOW *_nc_form_cursor(
+ const FORM *form,
+ int *pRow,
+ int *pCol)
+ { return(*(WINDOW **)0); }
/* ./fty_int.c */
@@ -747,13 +803,20 @@ integerPARM;
#undef TYPE_INTEGER
FIELDTYPE *TYPE_INTEGER;
+#undef _nc_TYPE_INTEGER
+FIELDTYPE *_nc_TYPE_INTEGER(void)
+ { return(*(FIELDTYPE **)0); }
+
/* ./fty_ipv4.c */
+
#undef TYPE_IPV4
FIELDTYPE *TYPE_IPV4;
-/* ./fty_num.c */
+#undef _nc_TYPE_IPV4
+FIELDTYPE *_nc_TYPE_IPV4(void)
+ { return(*(FIELDTYPE **)0); }
-#include <locale.h>
+/* ./fty_num.c */
typedef struct
{
@@ -775,9 +838,11 @@ thisPARM;
#undef TYPE_NUMERIC
FIELDTYPE *TYPE_NUMERIC;
-/* ./fty_regex.c */
+#undef _nc_TYPE_NUMERIC
+FIELDTYPE *_nc_TYPE_NUMERIC(void)
+ { return(*(FIELDTYPE **)0); }
-#include <regex.h>
+/* ./fty_regex.c */
typedef struct
{
@@ -788,3 +853,7 @@ RegExp_Arg;
#undef TYPE_REGEXP
FIELDTYPE *TYPE_REGEXP;
+
+#undef _nc_TYPE_REGEXP
+FIELDTYPE *_nc_TYPE_REGEXP(void)
+ { return(*(FIELDTYPE **)0); }
diff --git a/include/Caps b/include/Caps
index cb650a6be900..09c670f4332d 100644
--- a/include/Caps
+++ b/include/Caps
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2016,2019 Free 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,12 +29,12 @@
# Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995
# and: Eric S. Raymond <esr@snark.thyrsus.com>
#
-# $Id: Caps,v 1.38 2011/10/15 23:10:18 tom Exp $
+# $Id: Caps,v 1.44 2019/07/27 00:36:44 tom Exp $
#
# This is the master termcap/terminfo capability table.
#
# This table is used to generate initializers for tables that drive tic,
-# infocmp, and the library compilation code used to support the termcap
+# infocmp, and the library compilation code used to support the termcap
# compatibility hack. It is also used to generate the tabular portion of the
# terminfo(5) man page; lines beginning with `#%' are passed through to become
# the terminfo table.
@@ -97,7 +97,7 @@
# 3. List it in the standard table. You almost certainly do *not* want
# to do this -- the capabilities in that one, and their order, have been
# carefully chosen to be SVr4-binary-compatible when they're written out
-# as a terminfo object, and breaking this would be bad. It's up the ncurses
+# as a terminfo object, and breaking this would be bad. It's up to the ncurses
# library what to do with the terminfo data after it's read in.
#
# 4. List it in the aliases table with an IGNORE target field. If you
@@ -119,14 +119,14 @@
# You'll need to write custom code, probably in postprocess_termcap() or
# postprocess_terminfo(), to handle the translation.
#
-# CONTROLLING ENTRY LENGTH
+# CONTROLLING ENTRY LENGTH
#
# Notes on specific elisions made to fit translations within 1023 bytes:
#
# Machines with IBM PC-like keyboards want to be able to define the following
# keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap-
# only environments for End or Home-Down), key_dc, and key_ic. This is also
-# the set of keys the `joe' editor will be upset if it can't see. So don't
+# the set of keys the `joe' editor will be upset if it can't see. So don't
# trim those out of the set to be translated to termcap, or various users of
# the termcap file will become irate.
#
@@ -147,7 +147,7 @@
#
# It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap
# translations go back over critical if we do this. As 4.4BSD curses fades
-# into history and GNU termcap's application base shrinks towards being GNU
+# into history and GNU termcap's application base shrinks towards being GNU
# Emacs only, we'll probably elide out some BSD-only capabilities in order
# to buy space for non-essentials Emacs is still using. Capabilities high
# on that hit list: rc, sc, uc.
@@ -166,7 +166,7 @@
#%The \fBcapname\fR 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
+#%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 specification.
#%
@@ -227,7 +227,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
over_strike os bool os - - YBCG- terminal can overstrike
status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
-tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
+tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine)
transparent_underline ul bool ul - - YBCGE underline character overstrikes
xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required
@@ -271,7 +271,7 @@ num_labels nlab num Nl - - ----- number of labels on screen
label_height lh num lh - - ----- rows in each label
label_width lw num lw - - ----- columns in each label
max_attributes ma num ma - - YBC-- maximum combined attributes terminal can handle
-maximum_windows wnum num MW - - ----- maximum number of defineable windows
+maximum_windows wnum num MW - - ----- maximum number of definable windows
# These came in with SVr4's color support
max_colors colors num Co - - ----- maximum number of colors on screen
max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen
@@ -719,7 +719,7 @@ bit_image_repeat birep str Xy - - ----- Repeat bit image cell #1 #2 times
bit_image_newline binel str Zz - - ----- Move to next row of the bit image
bit_image_carriage_return bicr str Yv - - ----- Move to beginning of same row
color_names colornm str Yw - - ----- Give name for color #1
-define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region
+define_bit_image_region defbi str Yx - - ----- Define rectangular bit image region
end_bit_image_region endbi str Yy - - ----- End a bit-image region
set_color_band setcolor str Yz - - ----- Change to ribbon color #1
set_page_length slines str YZ - - ----- Set page length to #1 lines
@@ -826,7 +826,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# GNU termcap *does* include the following extended capability, Only the
# now-obsolete Ann Arbor terminals used it.
#
-# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
+# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
#
# The following comments describe capnames so ancient that I believe no
# software uses them any longer. Some of these have to go because they
@@ -843,9 +843,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# comma-separated list of capabilities for which there are corresponding keys.
# The `kn' code is accepted but ignored.
#
-# The `ma' capability seems to have been designed to map between the rogue(2)
-# motion keys (including jkhl) and characters emitted by arrow keys on some
-# primitive pre-ANSI terminals. It's so obsolete it's fossilized...
+# The `ma' capability was a 4.0BSD feature used by vi version 2.
+# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh.
+# Besides being obsolete, that interpretation conflicts with max_attributes.
#
# Here is a description of memory_lock_above and memory_unlock:
# "You can 'freeze' data on the screen by turning on Memory Lock in a line of
@@ -871,7 +871,7 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I
# vertical_tab_delay OTdV num dV - - -B--- padding required for ^V
number_of_function_keys OTkn num kn - - -B-G- count of function keys
other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps
-arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys
+arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2
# memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line
# memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line
has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I
@@ -887,7 +887,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# University of Waterloo termcap extensions (as described in mytinfo).
# The `xl' termcap file clashes with a terminfo name; this ambiguity cannot
# be resolved by a type check. The descriptions are guesses from what was
-# in the mytinfo tables.
+# in the mytinfo tables.
#
# key_interrupt_char OTki str ki - - ----- string set by interrupt key (?)
# key_kill_char OTkk str kk - - ----- string set by kill key (?)
@@ -936,7 +936,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# Gv 186 \272 M-: double vertical line
#
# The compiler will translate the single-line caps and discard the others
-# (via IGNORE aliases further down). We don't want to do normal pad
+# (via IGNORE aliases further down). We don't want to do normal pad
# translation on these, they're often single-character printable ASCII
# strings that happen to be numerics. There's awk code in parametrized.sh
# that detects the acs_ prefix and uses it to suppress pad translation.
@@ -958,303 +958,9 @@ acs_plus OTGC str GC - - ----- single intersection
#
# TERMINFO EXTENSION CAPABILITIES
#
-# This section is almost all comments. What it's mainly for is to describe
-# what capabilities need to be squeezed out to get down to the XSI Curses
-# standard set. They are flagged with K.
-#
-# HP extensions
-#
-# These extensions follow ptr_non (replacing everything after it) in HP
-# terminfo files. Except for memory_lock and memory_unlock, they are
-# functionally identical to SVr4 extensions, but they make the binary format
-# different. Grrr....
+# (see Caps-ncurses for the complete set of comments)
#
memory_lock meml str ml - - ----K lock memory above cursor
memory_unlock memu str mu - - ----K unlock memory
-#plab_norm pln str pn - - ----- program label #1 to show string #2
-#label_on smln str LO - - ----- turn on soft labels
-#label_off rmln str LF - - ----- turn off soft labels
-#key_f11 kf11 str F1 - - ----- F11 function key
-#key_f12 kf12 str F2 - - ----- F12 function key
-#key_f13 kf13 str F3 - - ----- F13 function key
-#key_f14 kf14 str F4 - - ----- F14 function key
-#key_f15 kf15 str F5 - - ----- F15 function key
-#key_f16 kf16 str F6 - - ----- F16 function key
-#key_f17 kf17 str F7 - - ----- F17 function key
-#key_f18 kf18 str F8 - - ----- F18 function key
-#key_f19 kf19 str F9 - - ----- F19 function key
-#key_f20 kf20 str FA - - ----- F20 function key
-#key_f21 kf21 str FB - - ----- F21 function key
-#key_f22 kf22 str FC - - ----- F22 function key
-#key_f23 kf23 str FD - - ----- F23 function key
-#key_f24 kf24 str FE - - ----- F24 function key
-#key_f25 kf25 str FF - - ----- F25 function key
-#key_f26 kf26 str FG - - ----- F26 function key
-#key_f27 kf27 str FH - - ----- F27 function key
-#key_f28 kf28 str FI - - ----- F28 function key
-#key_f29 kf29 str FJ - - ----- F29 function key
-#key_f30 kf30 str FK - - ----- F30 function key
-#key_f31 kf31 str FL - - ----- F31 function key
-#key_f32 kf32 str FM - - ----- F32 function key
-#key_f33 kf33 str FN - - ----- F33 function key
-#key_f34 kf34 str FO - - ----- F34 function key
-#key_f35 kf35 str FP - - ----- F35 function key
-#key_f36 kf36 str FQ - - ----- F36 function key
-#key_f37 kf37 str FR - - ----- F37 function key
-#key_f38 kf38 str FS - - ----- F38 function key
-#key_f39 kf39 str FT - - ----- F39 function key
-#key_f40 kf40 str FU - - ----- F40 function key
-#key_f41 kf41 str FV - - ----- F41 function key
-#key_f42 kf42 str FW - - ----- F42 function key
-#key_f43 kf43 str FX - - ----- F43 function key
-#key_f44 kf44 str FY - - ----- F44 function key
-#key_f45 kf45 str FZ - - ----- F45 function key
-#key_f46 kf46 str Fa - - ----- F46 function key
-#key_f47 kf47 str Fb - - ----- F47 function key
-#key_f48 kf48 str Fc - - ----- F48 function key
-#key_f49 kf49 str Fd - - ----- F49 function key
-#key_f50 kf50 str Fe - - ----- F50 function key
-#key_f51 kf51 str Ff - - ----- F51 function key
-#key_f52 kf52 str Fg - - ----- F52 function key
-#key_f53 kf53 str Fh - - ----- F53 function key
-#key_f54 kf54 str Fi - - ----- F54 function key
-#key_f55 kf55 str Fj - - ----- F55 function key
-#key_f56 kf56 str Fk - - ----- F56 function key
-#key_f57 kf57 str Fl - - ----- F57 function key
-#key_f58 kf58 str Fm - - ----- F58 function key
-#key_f59 kf59 str Fn - - ----- F59 function key
-#key_f60 kf60 str Fo - - ----- F60 function key
-#key_f61 kf61 str Fp - - ----- F61 function key
-#key_f62 kf62 str Fq - - ----- F62 function key
-#key_f63 kf63 str Fr - - ----- F63 function key
-#
-# IBM extensions
-#
-# These extensions follow ptr_non (replacing everything after it) in IBM
-# terminfo files.
-#
-# The places in the box[12] capabilities correspond to acsc characters, here is
-# the mapping:
-#
-# box1[0] = ACS_ULCORNER
-# box1[1] = ACS_HLINE
-# box1[2] = ACS_URCORNER
-# box1[3] = ACS_VLINE
-# box1[4] = ACS_LRCORNER
-# box1[5] = ACS_LLCORNER
-# box1[6] = ACS_TTEE
-# box1[7] = ACS_RTEE
-# box1[8] = ACS_BTEE
-# box1[9] = ACS_LTEE
-# box1[10] = ACS_PLUS
-#
-# The box2 characters are the double-line versions of these forms graphics.
-#
box_chars_1 box1 str bx - - ----K box characters primary set
-#box_chars_2 box2 str by - - ----K box characters secondary set
-#box_attr_1 batt1 str Bx - - ----K attributes for box1
-#box_attr_2 batt2 str By - - ----K attributes for box2
-#color_bg_0 colb0 str d0 - - ----K background color 0
-#color_bg_1 colb1 str d1 - - ----K background color 1
-#color_bg_2 colb2 str d2 - - ----K background color 2
-#color_bg_3 colb3 str d3 - - ----K background color 3
-#color_bg_4 colb4 str d4 - - ----K background color 4
-#color_bg_5 colb5 str d5 - - ----K background color 5
-#color_bg_6 colb6 str d6 - - ----K background color 6
-#color_bg_7 colb7 str d7 - - ----K background color 7
-#color_fg_0 colf0 str c0 - - ----K foreground color 0
-#color_fg_1 colf1 str c1 - - ----K foreground color 1
-#color_fg_2 colf2 str c2 - - ----K foreground color 2
-#color_fg_3 colf3 str c3 - - ----K foreground color 3
-#color_fg_4 colf4 str c4 - - ----K foreground color 4
-#color_fg_5 colf5 str c5 - - ----K foreground color 5
-#color_fg_6 colf6 str c6 - - ----K foreground color 6
-#color_fg_7 colf7 str c7 - - ----K foreground color 7
-#font_0 font0 str f0 - - ----- select font 0
-#font_1 font1 str f1 - - ----- select font 1
-#font_2 font2 str f2 - - ----- select font 2
-#font_3 font3 str f3 - - ----- select font 3
-#font_4 font4 str f4 - - ----K select font 4
-#font_5 font5 str f5 - - ----K select font 5
-#font_6 font6 str f6 - - ----K select font 6
-#font_7 font7 str f7 - - ----K select font 7
-#key_back_tab kbtab str k0 - - ----- backtab key
-#key_do kdo str ki - - ----K do request key
-#key_command kcmd str kd - - ----K command-request key
-#key_command_pane kcpn str kW - - ----K command-pane key
-#key_end kend str kw - - ----- end key
-#key_help khlp str kq - - ----- help key
-#key_newline knl str nl - - ----K newline key
-#key_next_pane knpn str kv - - ----K next-pane key
-#key_prev_cmd kppn str kp - - ----K previous-command key
-#key_prev_pane kppn str kV - - ----K previous-pane key
-#key_quit kquit str kQ - - ----K quit key
-#key_select ksel str kU - - ----- select key
-#key_scroll_left kscl str kz - - ----K scroll left
-#key_scroll_right kscr str kZ - - ----K scroll right
-#key_tab ktab str ko - - ----K tab key
-#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input
-#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output
-#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input
-#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output
-#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input
-#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output
-#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input
-#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output
-#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input
-#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output
-#appl_defined_str apstr str za - - ----K application-defined string
-# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in
-# the IBM manual pages, so the cap name strings are guesses. The terminfo
-# names are almost certainly right, the termcap ones almost certainly wrong.
-#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input
-#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output
-#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input
-#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output
-#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input
-#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output
-#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input
-#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output
-# Undocumented capabilities end here
-#key_sf1 ksf1 str S1 - - ----K special function key 1
-#key_sf2 ksf2 str S2 - - ----K special function key 2
-#key_sf3 ksf3 str S3 - - ----K special function key 3
-#key_sf4 ksf4 str S4 - - ----K special function key 4
-#key_sf5 ksf5 str S5 - - ----K special function key 5
-#key_sf6 ksf6 str S6 - - ----K special function key 6
-#key_sf7 ksf7 str S7 - - ----K special function key 7
-#key_sf8 ksf8 str S8 - - ----K special function key 8
-#key_sf9 ksf9 str S9 - - ----K special function key 9
-#key_sf10 ksf10 str SA - - ----K special function key 10
-# AIX version 3 documents different codes for F11, F12 and does not mention
-# F13-F64. AIX version 4 uses the same naming for F0-F63 as above.
-#key_f11 kf11 str k< - - ----- function key 11
-#key_f12 kf12 str k> - - ----- function key 12
-# Undocumented capabilities end here.
-#key_action kact str kJ - - ----K sent by action key
-# The IBM docs say these capabilities are for table-drawing, and are
-# valid only for aixterm descriptions.
-#enter_topline_mode topl str tp - - ----K start top-line mode
-#enter_bottom_mode btml str bm - - ----K start bottom-line mode
-#enter_rvert_mode rvert str rv - - ----K start right-vertical mode
-#enter_lvert_mode lvert str lv - - ----K start left-vertical mode
-#
-#############################################################################
-#
-# ALIAS DECLARATIONS
-#
-# Here we set up aliases for translating extensions into standard terminfo.
-#
-#---------------------------------- Termcap aliases -------------------------
-#
-# BSD aliases:
-#
-# This is a common error in many termcap files. We'll get notified during
-# translation when this (or any other alias) fires.
-#
-capalias sb sr BSD scroll text down
-#
-# AT&T extensions:
-#
-# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
-# nonstandard capabilities. Its signature is the KM capability, used to name
-# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
-# set. Comments in the original, and a little cross-checking with other AT&T
-# documentation, seem to establish the following mappings:
-#
-capalias BO mr AT&T enter_reverse_mode
-capalias CI vi AT&T cursor_invisible
-capalias CV ve AT&T cursor_normal
-capalias DS mh AT&T enter_dim_mode
-#capalias EE me AT&T exit_attribute_mode
-capalias FE LF AT&T label_on
-capalias FL LO AT&T label_off
-capalias XS mk AT&T enter_secure_mode
-#
-# We comment out EE because the conflicting XENIX EE is more common in
-# old entries.
-#
-# XENIX extensions:
-#
-# These are the ones we know how to translate directly:
-#
-capalias EE mh XENIX exit_attribute_mode
-capalias GE ae XENIX exit_alt_charset_mode
-capalias GS as XENIX enter_alt_charset_mode
-capalias CF vi XENIX cursor_invis
-capalias CO ve XENIX cursor_normal
-capalias EN @7 XENIX key_end
-capalias HM kh XENIX key_home
-capalias LD kL XENIX key_dl
-capalias PD kN XENIX key_npage
-capalias PN po XENIX prtr_off
-capalias PS pf XENIX prtr_on
-capalias PU kP XENIX key_ppage
-capalias RT @8 XENIX kent
-capalias UP ku XENIX kcuu1
-capalias G6 IGNORE XENIX double-ACS_ULCORNER
-capalias G7 IGNORE XENIX double-ACS_LLCORNER
-capalias G5 IGNORE XENIX double-ACS_URCORNER
-capalias G8 IGNORE XENIX double-ACS_LRCORNER
-capalias Gr IGNORE XENIX double-ACS_LTEE
-capalias Gr IGNORE XENIX double-ACS_RTEE
-capalias Gu IGNORE XENIX double-ACS_BTEE
-capalias Gd IGNORE XENIX double ACS_TTEE
-capalias Gh IGNORE XENIX double-ACS_HLINE
-capalias Gv IGNORE XENIX double-ACS_VLINE
-capalias Gc IGNORE XENIX double-ACS_PLUS
-capalias GG IGNORE XENIX acs-glitch
-#
-# IBM extensions:
-#
-capalias kq %1 IBM key_help
-#
-# Iris extensions:
-#
-capalias HS mh IRIS enter_dim_mode
-#
-# Tektronix extensions:
-#
-capalias KA k; Tek key_f10
-capalias KB F1 Tek key_f11
-capalias KC F2 Tek key_f12
-capalias KD F3 Tek key_f13
-capalias KE F4 Tek key_f14
-capalias KF F5 Tek key_f15
-capalias BC Sb Tek set_background
-capalias FC Sf Tek set_foreground
-#
-# There are also the following:
-#
-# XENIX XENIX variable name name clash with terminfo?
-# ----- ------------------- -------------------------
-# CL key_char_left
-# CR key_char_right
-# CW key_change_window
-# HP ??
-# LF key_linefeed label_off
-# NU key_next_unlocked_cell
-# PL ??
-# PR ??
-# RC key_recalc remove_clock
-# RF key_toggle_ref req_for_input
-# WL key_word_left
-# WR key_word_right
-#
-# If you know what any of the question-marked ones mean, please tell us.
-#
-#--------------------------------- Terminfo aliases ------------------------
-#
-# IBM extensions:
-#
-infoalias font0 s0ds IBM set0_des_seq
-infoalias font1 s1ds IBM set1_des_seq
-infoalias font2 s2ds IBM set2_des_seq
-infoalias font3 s3ds IBM set3_des_seq
-infoalias kbtab kcbt IBM key_backtab
-infoalias ksel kslt IBM key_select
-#
-# Some others are identical to SVr4/XPG4 capabilities, in particular:
-# kcmd, kend, khlp, and kf11...kf63.
-#
#############################################################################
diff --git a/include/Caps-ncurses b/include/Caps-ncurses
new file mode 100644
index 000000000000..39524de4381b
--- /dev/null
+++ b/include/Caps-ncurses
@@ -0,0 +1,451 @@
+##############################################################################
+# Copyright (c) 2019 Free 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
+#
+# $Id: Caps-ncurses,v 1.7 2019/05/04 14:10:54 tom Exp $
+#
+#############################################################################
+#
+# TERMINFO EXTENSION CAPABILITIES
+#
+# This section is all comments (selected lines are copied/uncommented into
+# specific "Caps" files). The section describes what capabilities need to be
+# squeezed out to get down to the XSI Curses standard set. They are flagged
+# with K.
+#
+# HP extensions
+#
+# These extensions follow ptr_non (replacing everything after it) in HP
+# terminfo files. Except for memory_lock and memory_unlock, they are
+# functionally identical to SVr4 extensions, but they make the binary format
+# different. Grrr....
+#
+#memory_lock meml str ml - - ----K lock memory above cursor
+#memory_unlock memu str mu - - ----K unlock memory
+#plab_norm pln str pn - - ----- program label #1 to show string #2
+#label_on smln str LO - - ----- turn on soft labels
+#label_off rmln str LF - - ----- turn off soft labels
+#key_f11 kf11 str F1 - - ----- F11 function key
+#key_f12 kf12 str F2 - - ----- F12 function key
+#key_f13 kf13 str F3 - - ----- F13 function key
+#key_f14 kf14 str F4 - - ----- F14 function key
+#key_f15 kf15 str F5 - - ----- F15 function key
+#key_f16 kf16 str F6 - - ----- F16 function key
+#key_f17 kf17 str F7 - - ----- F17 function key
+#key_f18 kf18 str F8 - - ----- F18 function key
+#key_f19 kf19 str F9 - - ----- F19 function key
+#key_f20 kf20 str FA - - ----- F20 function key
+#key_f21 kf21 str FB - - ----- F21 function key
+#key_f22 kf22 str FC - - ----- F22 function key
+#key_f23 kf23 str FD - - ----- F23 function key
+#key_f24 kf24 str FE - - ----- F24 function key
+#key_f25 kf25 str FF - - ----- F25 function key
+#key_f26 kf26 str FG - - ----- F26 function key
+#key_f27 kf27 str FH - - ----- F27 function key
+#key_f28 kf28 str FI - - ----- F28 function key
+#key_f29 kf29 str FJ - - ----- F29 function key
+#key_f30 kf30 str FK - - ----- F30 function key
+#key_f31 kf31 str FL - - ----- F31 function key
+#key_f32 kf32 str FM - - ----- F32 function key
+#key_f33 kf33 str FN - - ----- F33 function key
+#key_f34 kf34 str FO - - ----- F34 function key
+#key_f35 kf35 str FP - - ----- F35 function key
+#key_f36 kf36 str FQ - - ----- F36 function key
+#key_f37 kf37 str FR - - ----- F37 function key
+#key_f38 kf38 str FS - - ----- F38 function key
+#key_f39 kf39 str FT - - ----- F39 function key
+#key_f40 kf40 str FU - - ----- F40 function key
+#key_f41 kf41 str FV - - ----- F41 function key
+#key_f42 kf42 str FW - - ----- F42 function key
+#key_f43 kf43 str FX - - ----- F43 function key
+#key_f44 kf44 str FY - - ----- F44 function key
+#key_f45 kf45 str FZ - - ----- F45 function key
+#key_f46 kf46 str Fa - - ----- F46 function key
+#key_f47 kf47 str Fb - - ----- F47 function key
+#key_f48 kf48 str Fc - - ----- F48 function key
+#key_f49 kf49 str Fd - - ----- F49 function key
+#key_f50 kf50 str Fe - - ----- F50 function key
+#key_f51 kf51 str Ff - - ----- F51 function key
+#key_f52 kf52 str Fg - - ----- F52 function key
+#key_f53 kf53 str Fh - - ----- F53 function key
+#key_f54 kf54 str Fi - - ----- F54 function key
+#key_f55 kf55 str Fj - - ----- F55 function key
+#key_f56 kf56 str Fk - - ----- F56 function key
+#key_f57 kf57 str Fl - - ----- F57 function key
+#key_f58 kf58 str Fm - - ----- F58 function key
+#key_f59 kf59 str Fn - - ----- F59 function key
+#key_f60 kf60 str Fo - - ----- F60 function key
+#key_f61 kf61 str Fp - - ----- F61 function key
+#key_f62 kf62 str Fq - - ----- F62 function key
+#key_f63 kf63 str Fr - - ----- F63 function key
+#
+# IBM extensions
+#
+# These extensions follow ptr_non (replacing everything after it) in IBM
+# terminfo files.
+#
+# The places in the box[12] capabilities correspond to acsc characters, here is
+# the mapping:
+#
+# box1[0] = ACS_ULCORNER
+# box1[1] = ACS_HLINE
+# box1[2] = ACS_URCORNER
+# box1[3] = ACS_VLINE
+# box1[4] = ACS_LRCORNER
+# box1[5] = ACS_LLCORNER
+# box1[6] = ACS_TTEE
+# box1[7] = ACS_RTEE
+# box1[8] = ACS_BTEE
+# box1[9] = ACS_LTEE
+# box1[10] = ACS_PLUS
+#
+# The box2 characters are the double-line versions of these forms graphics.
+#
+#box_chars_1 box1 str bx - - ----K box characters primary set
+#box_chars_2 box2 str by - - ----K box characters secondary set
+#box_attr_1 batt1 str Bx - - ----K attributes for box1
+#box_attr_2 batt2 str By - - ----K attributes for box2
+#color_bg_0 colb0 str d0 - - ----K background color 0
+#color_bg_1 colb1 str d1 - - ----K background color 1
+#color_bg_2 colb2 str d2 - - ----K background color 2
+#color_bg_3 colb3 str d3 - - ----K background color 3
+#color_bg_4 colb4 str d4 - - ----K background color 4
+#color_bg_5 colb5 str d5 - - ----K background color 5
+#color_bg_6 colb6 str d6 - - ----K background color 6
+#color_bg_7 colb7 str d7 - - ----K background color 7
+#color_fg_0 colf0 str c0 - - ----K foreground color 0
+#color_fg_1 colf1 str c1 - - ----K foreground color 1
+#color_fg_2 colf2 str c2 - - ----K foreground color 2
+#color_fg_3 colf3 str c3 - - ----K foreground color 3
+#color_fg_4 colf4 str c4 - - ----K foreground color 4
+#color_fg_5 colf5 str c5 - - ----K foreground color 5
+#color_fg_6 colf6 str c6 - - ----K foreground color 6
+#color_fg_7 colf7 str c7 - - ----K foreground color 7
+#font_0 font0 str f0 - - ----- select font 0
+#font_1 font1 str f1 - - ----- select font 1
+#font_2 font2 str f2 - - ----- select font 2
+#font_3 font3 str f3 - - ----- select font 3
+#font_4 font4 str f4 - - ----K select font 4
+#font_5 font5 str f5 - - ----K select font 5
+#font_6 font6 str f6 - - ----K select font 6
+#font_7 font7 str f7 - - ----K select font 7
+#key_back_tab kbtab str k0 - - ----- backtab key
+#key_do kdo str ki - - ----K do request key
+#key_command kcmd str kd - - ----K command-request key
+#key_command_pane kcpn str kW - - ----K command-pane key
+#key_end kend str kw - - ----- end key
+#key_help khlp str kq - - ----- help key
+#key_newline knl str nl - - ----K newline key
+#key_next_pane knpn str kv - - ----K next-pane key
+#key_prev_cmd kppn str kp - - ----K previous-command key
+#key_prev_pane kppn str kV - - ----K previous-pane key
+#key_quit kquit str kQ - - ----K quit key
+#key_select ksel str kU - - ----- select key
+#key_scroll_left kscl str kz - - ----K scroll left
+#key_scroll_right kscr str kZ - - ----K scroll right
+#key_tab ktab str ko - - ----K tab key
+#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input
+#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output
+#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input
+#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output
+#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input
+#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output
+#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input
+#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output
+#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input
+#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output
+#appl_defined_str apstr str za - - ----K application-defined string
+# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in
+# the IBM manual pages, so the cap name strings are guesses. The terminfo
+# names are almost certainly right, the termcap ones almost certainly wrong.
+#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input
+#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output
+#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input
+#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output
+#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input
+#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output
+#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input
+#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output
+# Undocumented capabilities end here
+#key_sf1 ksf1 str S1 - - ----K special function key 1
+#key_sf2 ksf2 str S2 - - ----K special function key 2
+#key_sf3 ksf3 str S3 - - ----K special function key 3
+#key_sf4 ksf4 str S4 - - ----K special function key 4
+#key_sf5 ksf5 str S5 - - ----K special function key 5
+#key_sf6 ksf6 str S6 - - ----K special function key 6
+#key_sf7 ksf7 str S7 - - ----K special function key 7
+#key_sf8 ksf8 str S8 - - ----K special function key 8
+#key_sf9 ksf9 str S9 - - ----K special function key 9
+#key_sf10 ksf10 str SA - - ----K special function key 10
+# AIX version 3 documents different codes for F11, F12 and does not mention
+# F13-F64. AIX version 4 uses the same naming for F0-F63 as above.
+#key_f11 kf11 str k< - - ----- function key 11
+#key_f12 kf12 str k> - - ----- function key 12
+# Undocumented capabilities end here.
+#key_action kact str kJ - - ----K sent by action key
+# The IBM docs say these capabilities are for table-drawing, and are
+# valid only for aixterm descriptions.
+#enter_topline_mode topl str tp - - ----K start top-line mode
+#enter_bottom_mode btml str bm - - ----K start bottom-line mode
+#enter_rvert_mode rvert str rv - - ----K start right-vertical mode
+#enter_lvert_mode lvert str lv - - ----K start left-vertical mode
+#
+#############################################################################
+#
+# ALIAS DECLARATIONS
+#
+# Here we set up aliases for translating extensions into standard terminfo.
+#
+#---------------------------------- Termcap aliases -------------------------
+#
+# BSD aliases:
+#
+# This is a common error in many termcap files. We'll get notified during
+# translation when this (or any other alias) fires.
+#
+capalias sb sr BSD scroll text down
+#
+# AT&T extensions:
+#
+# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
+# nonstandard capabilities. Its signature is the KM capability, used to name
+# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
+# set. Comments in the original, and a little cross-checking with other AT&T
+# documentation, seem to establish the following mappings:
+#
+capalias BO mr AT&T enter_reverse_mode
+capalias CI vi AT&T cursor_invisible
+capalias CV ve AT&T cursor_normal
+capalias DS mh AT&T enter_dim_mode
+#capalias EE me AT&T exit_attribute_mode
+capalias FE LF AT&T label_on
+capalias FL LO AT&T label_off
+capalias XS mk AT&T enter_secure_mode
+#
+# We comment out EE because the conflicting XENIX EE is more common in
+# old entries.
+#
+# XENIX extensions:
+#
+# These are the ones we know how to translate directly:
+#
+capalias EE mh XENIX exit_attribute_mode
+capalias GE ae XENIX exit_alt_charset_mode
+capalias GS as XENIX enter_alt_charset_mode
+capalias CF vi XENIX cursor_invis
+capalias CO ve XENIX cursor_normal
+capalias EN @7 XENIX key_end
+capalias HM kh XENIX key_home
+capalias LD kL XENIX key_dl
+capalias PD kN XENIX key_npage
+capalias PN po XENIX prtr_off
+capalias PS pf XENIX prtr_on
+capalias PU kP XENIX key_ppage
+capalias RT @8 XENIX kent
+capalias UP ku XENIX kcuu1
+capalias G6 IGNORE XENIX double-ACS_ULCORNER
+capalias G7 IGNORE XENIX double-ACS_LLCORNER
+capalias G5 IGNORE XENIX double-ACS_URCORNER
+capalias G8 IGNORE XENIX double-ACS_LRCORNER
+capalias Gr IGNORE XENIX double-ACS_LTEE
+capalias Gr IGNORE XENIX double-ACS_RTEE
+capalias Gu IGNORE XENIX double-ACS_BTEE
+capalias Gd IGNORE XENIX double ACS_TTEE
+capalias Gh IGNORE XENIX double-ACS_HLINE
+capalias Gv IGNORE XENIX double-ACS_VLINE
+capalias Gc IGNORE XENIX double-ACS_PLUS
+capalias GG IGNORE XENIX acs-glitch
+#
+# IBM extensions:
+#
+capalias kq %1 IBM key_help
+#
+# Iris extensions:
+#
+capalias HS mh IRIS enter_dim_mode
+#
+# Tektronix extensions:
+#
+capalias KA k; Tek key_f10
+capalias KB F1 Tek key_f11
+capalias KC F2 Tek key_f12
+capalias KD F3 Tek key_f13
+capalias KE F4 Tek key_f14
+capalias KF F5 Tek key_f15
+capalias BC Sb Tek set_background
+capalias FC Sf Tek set_foreground
+#
+# There are also the following:
+#
+# XENIX XENIX variable name name clash with terminfo?
+# ----- ------------------- -------------------------
+# CL key_char_left
+# CR key_char_right
+# CW key_change_window
+# HP ??
+# LF key_linefeed label_off
+# NU key_next_unlocked_cell
+# PL ??
+# PR ??
+# RC key_recalc remove_clock
+# RF key_toggle_ref req_for_input
+# WL key_word_left
+# WR key_word_right
+#
+# If you know what any of the question-marked ones mean, please tell us.
+#
+#--------------------------------- Terminfo aliases ------------------------
+#
+# IBM extensions:
+#
+infoalias font0 s0ds IBM set0_des_seq
+infoalias font1 s1ds IBM set1_des_seq
+infoalias font2 s2ds IBM set2_des_seq
+infoalias font3 s3ds IBM set3_des_seq
+infoalias kbtab kcbt IBM key_backtab
+infoalias ksel kslt IBM key_select
+#
+# Some others are identical to SVr4/XPG4 capabilities, in particular:
+# kcmd, kend, khlp, and kf11...kf63.
+#
+#############################################################################
+# This is a table of ncurses user-definable capabilities which applications
+# developers may have used. ncurses may use the table to check consistency of
+# types/parameters. Applications may have defined others (such as screen's
+# LP and NF), but where a standard capability is available, those alternatives
+# are not listed here.
+#
+used_by ncurses
+userdef E3 str - clears the terminal's scrollback buffer.
+userdef RGB bool - use direct colors with 1/3 of color-pair bits per color.
+userdef RGB num n use direct colors with given number of bits per color.
+userdef RGB str - use direct colors with given bit-layout.
+userdef TS str - like "tsl", but uses no parameter.
+userdef U8 num n terminal does/does not support VT100 SI/SO when processing UTF-8 encoding.
+userdef XM str n initialize alternate xterm mouse mode
+userdef grbom str - disable real bold (not intensity bright) mode.
+userdef gsbom str - enable real bold (not intensity bright) mode.
+userdef xm str - mouse response, no parameters
+userdef xm str n mouse response, p1 = y-ordinate
+userdef xm str nn mouse response, p2 = x-ordinate
+userdef xm str nnn mouse response, p3 = button
+userdef xm str nnns mouse response, p4 = state, e.g., pressed or released
+userdef xm str nnnsn mouse response, p5 = y-ordinate starting region
+userdef xm str nnnsnn mouse response, p6 = x-ordinate starting region
+userdef xm str nnnsnnn mouse response, p7 = y-ordinate ending region
+userdef xm str nnnsnnnn mouse response, p8 = x-ordinate ending region
+#
+used_by screen
+userdef AN bool - turn on autonuke.
+userdef AX bool - understands ANSI set default fg/bg color (\E[39m / \E[49m).
+userdef C0 str - use the string as a conversion table for font '0', like acsc.
+userdef C8 bool - terminal shows bold as high-intensity colors.
+userdef CE str - switch cursor-keys back to normal mode.
+userdef CS str - switch cursor-keys to application mode.
+userdef E0 str - switch charset 'G0' back to standard charset. Default is '\E(B'.
+userdef G0 bool - terminal can deal with ISO 2022 font selection sequences.
+userdef KJ str s set the encoding of the terminal.
+userdef OL num n set the screen program's output buffer limit.
+userdef S0 str s switch charset 'G0' to the specified charset. Default is '\E(%.'.
+userdef TF bool - add missing capabilities to screen's termcap/info entry. (Set by default).
+userdef WS str nn resize display. This capability has the desired width and height as arguments. SunView(tm) example: '\E[8;%d;%dt'.
+userdef XC str s describe a translation of characters to strings depending on the current font.
+userdef XT bool - terminal understands special xterm sequences (OSC, mouse tracking).
+userdef Z0 str - change width to 132 columns.
+userdef Z1 str - change width to 80 columns.
+#
+used_by tmux
+userdef Cr str - restore the default cursor color.
+userdef Cs str s set the cursor color.
+userdef Csr str n change the cursor style, overriding Ss.
+userdef Ms str ss store the current buffer in the host terminal's selection (clipboard).
+userdef Se str - reset the cursor style to the terminal initial state.
+userdef Smulx str n modify the appearance of underlines in VTE.
+userdef Ss str n change the cursor style.
+userdef rmxx str - reset ECMA-48 strikeout/crossed-out attributes.
+userdef smxx str - set ECMA-48 strikeout/crossed-out attributes.
+#
+used_by xterm
+userdef kDC3 str - alt delete-character
+userdef kDC4 str - shift+alt delete-character
+userdef kDC5 str - control delete-character
+userdef kDC6 str - shift+control delete-character
+userdef kDC7 str - alt+control delete-character
+userdef kDN str - shift down-cursor
+userdef kDN3 str - alt down-cursor
+userdef kDN4 str - shift+alt down-cursor
+userdef kDN5 str - control down-cursor
+userdef kDN6 str - shift+control down-cursor
+userdef kDN7 str - alt+control down-cursor
+userdef kEND3 str - alt end
+userdef kEND4 str - shift+alt end
+userdef kEND5 str - control end
+userdef kEND6 str - shift+control end
+userdef kEND7 str - alt+control end
+userdef kHOM3 str - alt home
+userdef kHOM4 str - shift+alt home
+userdef kHOM5 str - control home
+userdef kHOM6 str - shift+control home
+userdef kHOM7 str - alt+control home
+userdef kIC3 str - alt insert-character
+userdef kIC4 str - shift+alt insert-character
+userdef kIC5 str - control insert-character
+userdef kIC6 str - shift+control insert-character
+userdef kIC7 str - alt+control insert-character
+userdef kLFT3 str - alt left-cursor
+userdef kLFT4 str - shift+alt left-cursor
+userdef kLFT5 str - control left-cursor
+userdef kLFT6 str - shift+control left-cursor
+userdef kLFT7 str - alt+control left-cursor
+userdef kNXT3 str - alt next
+userdef kNXT4 str - shift+alt next
+userdef kNXT5 str - control next
+userdef kNXT6 str - shift+control next
+userdef kNXT7 str - alt+control next
+userdef kPRV3 str - alt previous
+userdef kPRV4 str - shift+alt previous
+userdef kPRV5 str - control previous
+userdef kPRV6 str - shift+control previous
+userdef kPRV7 str - alt+control previous
+userdef kRIT3 str - alt right-cursor
+userdef kRIT4 str - shift+alt right-cursor
+userdef kRIT5 str - control right-cursor
+userdef kRIT6 str - shift+control right-cursor
+userdef kRIT7 str - alt+control right-cursor
+userdef kUP str - shift up-cursor
+userdef kUP3 str - alt up-cursor
+userdef kUP4 str - shift+alt up-cursor
+userdef kUP5 str - control up-cursor
+userdef kUP6 str - shift+control up-cursor
+userdef kUP7 str - alt+control up-cursor
+userdef ka2 str - vt220-keypad extensions
+userdef kb1 str - vt220-keypad extensions
+userdef kb3 str - vt220-keypad extensions
+userdef kc2 str - vt220-keypad extensions
+#############################################################################
diff --git a/include/Caps.aix4 b/include/Caps.aix4
index faa9822e59b2..4139bfa554b2 100644
--- a/include/Caps.aix4
+++ b/include/Caps.aix4
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2001-2010,2011 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2016,2019 Free 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"), #
@@ -28,13 +28,13 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.aix4,v 1.9 2011/10/15 23:19:16 tom Exp $
+# $Id: Caps.aix4,v 1.16 2019/07/27 00:36:44 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with AIX 4.x's terminfo.
#
# This table is used to generate initializers for tables that drive tic,
-# infocmp, and the library compilation code used to support the termcap
+# infocmp, and the library compilation code used to support the termcap
# compatibility hack. It is also used to generate the tabular portion of the
# terminfo(5) man page; lines beginning with `#%' are passed through to become
# the terminfo table.
@@ -97,7 +97,7 @@
# 3. List it in the standard table. You almost certainly do *not* want
# to do this -- the capabilities in that one, and their order, have been
# carefully chosen to be SVr4-binary-compatible when they're written out
-# as a terminfo object, and breaking this would be bad. It's up the ncurses
+# as a terminfo object, and breaking this would be bad. It's up to the ncurses
# library what to do with the terminfo data after it's read in.
#
# 4. List it in the aliases table with an IGNORE target field. If you
@@ -119,14 +119,14 @@
# You'll need to write custom code, probably in postprocess_termcap() or
# postprocess_terminfo(), to handle the translation.
#
-# CONTROLLING ENTRY LENGTH
+# CONTROLLING ENTRY LENGTH
#
# Notes on specific elisions made to fit translations within 1023 bytes:
#
# Machines with IBM PC-like keyboards want to be able to define the following
# keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap-
# only environments for End or Home-Down), key_dc, and key_ic. This is also
-# the set of keys the `joe' editor will be upset if it can't see. So don't
+# the set of keys the `joe' editor will be upset if it can't see. So don't
# trim those out of the set to be translated to termcap, or various users of
# the termcap file will become irate.
#
@@ -147,7 +147,7 @@
#
# It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap
# translations go back over critical if we do this. As 4.4BSD curses fades
-# into history and GNU termcap's application base shrinks towards being GNU
+# into history and GNU termcap's application base shrinks towards being GNU
# Emacs only, we'll probably elide out some BSD-only capabilities in order
# to buy space for non-essentials Emacs is still using. Capabilities high
# on that hit list: rc, sc, uc.
@@ -166,7 +166,7 @@
#%The \fBcapname\fR 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
+#%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 specification.
#%
@@ -227,7 +227,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
over_strike os bool os - - YBCG- terminal can overstrike
status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
-tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
+tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine)
transparent_underline ul bool ul - - YBCGE underline character overstrikes
xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required
@@ -271,7 +271,7 @@ num_labels nlab num Nl - - ----- number of labels on screen
label_height lh num lh - - ----- rows in each label
label_width lw num lw - - ----- columns in each label
max_attributes ma num ma - - YBC-- maximum combined attributes terminal can handle
-maximum_windows wnum num MW - - ----- maximum number of defineable windows
+maximum_windows wnum num MW - - ----- maximum number of definable windows
# These came in with SVr4's color support
max_colors colors num Co - - ----- maximum number of colors on screen
max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen
@@ -476,7 +476,7 @@ prtr_non mc5p str pO - - -B-G-* turn on printer for #1 bytes
# the mapping:
#
# box1[0] = ACS_ULCORNER
-# box1[1] = ACS_HLINE
+# box1[1] = ACS_HLINE
# box1[2] = ACS_URCORNER
# box1[3] = ACS_VLINE
# box1[4] = ACS_LRCORNER
@@ -517,15 +517,15 @@ font_4 font4 str f4 - - ----K select font 4
font_5 font5 str f5 - - ----K select font 5
font_6 font6 str f6 - - ----K select font 6
font_7 font7 str f7 - - ----K select font 7
-key_back_tab kbtab str k0 - - ----K backtab key
+key_back_tab kbtab str kO - - ----K backtab key
key_do kdo str ki - - ----K do request key
-key_command kcmd str kd - - ----K command-request key
+key_command kcmd str @4 - - ----K command-request key
key_command_pane kcpn str kW - - ----K command-pane key
-key_end kend str kw KEY_END 0550 ----- end key
-key_help khlp str kq - - ----- help key
-key_newline knl str nl - - ----K newline key
+key_end kend str @7 KEY_END 0550 ----- end key
+key_help khlp str %1 - - ----- help key
+key_newline knl str kn - - ----K newline key
key_next_pane knpn str kv - - ----K next-pane key
-key_prev_cmd kppn str kp - - ----K previous-command key
+key_prev_cmd kpcmd str kp - - ----K previous-command key
key_prev_pane kppn str kV - - ----K previous-pane key
key_quit kquit str kQ - - ----K quit key
key_select_aix ksel str kU - - ----- select key
@@ -543,13 +543,13 @@ key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output
key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input
key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output
appl_defined_str apstr str za - - ----K application-defined string
-key_smap_in6 kmpf6 str kr - - ----K special mapped key 6 input
+key_smap_in6 kmpf6 str Kr - - ----K special mapped key 6 input
key_smap_out6 kmpt6 str KR - - ----K special mapped key 6 output
-key_smap_in7 kmpf7 str ks - - ----K special mapped key 7 input
+key_smap_in7 kmpf7 str Ks - - ----K special mapped key 7 input
key_smap_out7 kmpt7 str KS - - ----K special mapped key 7 output
-key_smap_in8 kmpf8 str kt - - ----K special mapped key 8 input
+key_smap_in8 kmpf8 str Kt - - ----K special mapped key 8 input
key_smap_out8 kmpt8 str KT - - ----K special mapped key 8 output
-key_smap_in9 kmpf9 str ku - - ----K special mapped key 9 input
+key_smap_in9 kmpf9 str Ku - - ----K special mapped key 9 input
key_smap_out9 kmpt9 str KU - - ----K special mapped key 9 output
key_sf1 ksf1 str S1 - - ----K special function key 1
key_sf2 ksf2 str S2 - - ----K special function key 2
@@ -821,7 +821,7 @@ bit_image_repeat birep str Xy - - ----- Repeat bit image cell #1 #2 times
bit_image_newline binel str Zz - - ----- Move to next row of the bit image
bit_image_carriage_return bicr str Yv - - ----- Move to beginning of same row
color_names colornm str Yw - - ----- Give name for color #1
-define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region
+define_bit_image_region defbi str Yx - - ----- Define rectangular bit image region
end_bit_image_region endbi str Yy - - ----- End a bit-image region
set_color_band setcolor str Yz - - ----- Change to ribbon color #1
set_page_length slines str YZ - - ----- Set page length to #1 lines
@@ -857,13 +857,13 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio
#%lw25 lw6 lw2 lw20.
#%\fBVariable Cap- TCap Description\fR
#%\fBString name Code\fR
-enter_horizontal_hl_mode ehhlm str Xh - - ----- Enter horizontal highlight mode
-enter_left_hl_mode elhlm str Xl - - ----- Enter left highlight mode
-enter_low_hl_mode elohlm str Xo - - ----- Enter low highlight mode
-enter_right_hl_mode erhlm str Xr - - ----- Enter right highlight mode
-enter_top_hl_mode ethlm str Xt - - ----- Enter top highlight mode
-enter_vertical_hl_mode evhlm str Xv - - ----- Enter vertical highlight mode
-set_a_attributes sgr1 str sA - - ----- Define second set of video attributes #1-#6
+#enter_horizontal_hl_mode ehhlm str Xh - - ----- Enter horizontal highlight mode
+#enter_left_hl_mode elhlm str Xl - - ----- Enter left highlight mode
+#enter_low_hl_mode elohlm str Xo - - ----- Enter low highlight mode
+#enter_right_hl_mode erhlm str Xr - - ----- Enter right highlight mode
+#enter_top_hl_mode ethlm str Xt - - ----- Enter top highlight mode
+#enter_vertical_hl_mode evhlm str Xv - - ----- Enter vertical highlight mode
+#set_a_attributes sgr1 str sA - - ----- Define second set of video attributes #1-#6
set_pglen_inch slength str YI - - ----- Set page length to #1 hundredth of an inch (some implementations use sL for termcap).
#%.TE
#%.ad
@@ -928,7 +928,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# GNU termcap *does* include the following extended capability, Only the
# now-obsolete Ann Arbor terminals used it.
#
-# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
+# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
#
# The following comments describe capnames so ancient that I believe no
# software uses them any longer. Some of these have to go because they
@@ -945,9 +945,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# comma-separated list of capabilities for which there are corresponding keys.
# The `kn' code is accepted but ignored.
#
-# The `ma' capability seems to have been designed to map between the rogue(2)
-# motion keys (including jkhl) and characters emitted by arrow keys on some
-# primitive pre-ANSI terminals. It's so obsolete it's fossilized...
+# The `ma' capability was a 4.0BSD feature used by vi version 2.
+# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh.
+# Besides being obsolete, that interpretation conflicts with max_attributes.
#
# Here is a description of memory_lock_above and memory_unlock:
# "You can 'freeze' data on the screen by turning on Memory Lock in a line of
@@ -973,7 +973,7 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I
# vertical_tab_delay OTdV num dV - - -B--- padding required for ^V
number_of_function_keys OTkn num kn - - -B-G- count of function keys
other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps
-arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys
+arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2
# memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line
# memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line
has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I
@@ -989,7 +989,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# University of Waterloo termcap extensions (as described in mytinfo).
# The `xl' termcap file clashes with a terminfo name; this ambiguity cannot
# be resolved by a type check. The descriptions are guesses from what was
-# in the mytinfo tables.
+# in the mytinfo tables.
#
# key_interrupt_char OTki str ki - - ----- string set by interrupt key (?)
# key_kill_char OTkk str kk - - ----- string set by kill key (?)
@@ -1038,7 +1038,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# Gv 186 \272 M-: double vertical line
#
# The compiler will translate the single-line caps and discard the others
-# (via IGNORE aliases further down). We don't want to do normal pad
+# (via IGNORE aliases further down). We don't want to do normal pad
# translation on these, they're often single-character printable ASCII
# strings that happen to be numerics. There's awk code in parametrized.sh
# that detects the acs_ prefix and uses it to suppress pad translation.
@@ -1060,192 +1060,9 @@ acs_plus OTGC str GC - - ----- single intersection
#
# TERMINFO EXTENSION CAPABILITIES
#
-# This section is almost all comments. What it's mainly for is to describe
-# what capabilities need to be squeezed out to get down to the XSI Curses
-# standard set. They are flagged with K.
-#
-# HP extensions
-#
-# These extensions follow ptr_non (replacing everything after it) in HP
-# terminfo files. Except for memory_lock and memory_unlock, they are
-# functionally identical to SVr4 extensions, but they make the binary format
-# different. Grrr....
+# (see Caps-ncurses for the complete set of comments)
#
memory_lock meml str ml - - ----K lock memory above cursor
memory_unlock memu str mu - - ----K unlock memory
-#plab_norm pln str pn - - ----- program label #1 to show string #2
-#label_on smln str LO - - ----- turn on soft labels
-#label_off rmln str LF - - ----- turn off soft labels
-#key_f11 kf11 str F1 - - ----- F11 function key
-#key_f12 kf12 str F2 - - ----- F12 function key
-#key_f13 kf13 str F3 - - ----- F13 function key
-#key_f14 kf14 str F4 - - ----- F14 function key
-#key_f15 kf15 str F5 - - ----- F15 function key
-#key_f16 kf16 str F6 - - ----- F16 function key
-#key_f17 kf17 str F7 - - ----- F17 function key
-#key_f18 kf18 str F8 - - ----- F18 function key
-#key_f19 kf19 str F9 - - ----- F19 function key
-#key_f20 kf20 str FA - - ----- F20 function key
-#key_f21 kf21 str FB - - ----- F21 function key
-#key_f22 kf22 str FC - - ----- F22 function key
-#key_f23 kf23 str FD - - ----- F23 function key
-#key_f24 kf24 str FE - - ----- F24 function key
-#key_f25 kf25 str FF - - ----- F25 function key
-#key_f26 kf26 str FG - - ----- F26 function key
-#key_f27 kf27 str FH - - ----- F27 function key
-#key_f28 kf28 str FI - - ----- F28 function key
-#key_f29 kf29 str FJ - - ----- F29 function key
-#key_f30 kf30 str FK - - ----- F30 function key
-#key_f31 kf31 str FL - - ----- F31 function key
-#key_f32 kf32 str FM - - ----- F32 function key
-#key_f33 kf33 str FN - - ----- F33 function key
-#key_f34 kf34 str FO - - ----- F34 function key
-#key_f35 kf35 str FP - - ----- F35 function key
-#key_f36 kf36 str FQ - - ----- F36 function key
-#key_f37 kf37 str FR - - ----- F37 function key
-#key_f38 kf38 str FS - - ----- F38 function key
-#key_f39 kf39 str FT - - ----- F39 function key
-#key_f40 kf40 str FU - - ----- F40 function key
-#key_f41 kf41 str FV - - ----- F41 function key
-#key_f42 kf42 str FW - - ----- F42 function key
-#key_f43 kf43 str FX - - ----- F43 function key
-#key_f44 kf44 str FY - - ----- F44 function key
-#key_f45 kf45 str FZ - - ----- F45 function key
-#key_f46 kf46 str Fa - - ----- F46 function key
-#key_f47 kf47 str Fb - - ----- F47 function key
-#key_f48 kf48 str Fc - - ----- F48 function key
-#key_f49 kf49 str Fd - - ----- F49 function key
-#key_f50 kf50 str Fe - - ----- F50 function key
-#key_f51 kf51 str Ff - - ----- F51 function key
-#key_f52 kf52 str Fg - - ----- F52 function key
-#key_f53 kf53 str Fh - - ----- F53 function key
-#key_f54 kf54 str Fi - - ----- F54 function key
-#key_f55 kf55 str Fj - - ----- F55 function key
-#key_f56 kf56 str Fk - - ----- F56 function key
-#key_f57 kf57 str Fl - - ----- F57 function key
-#key_f58 kf58 str Fm - - ----- F58 function key
-#key_f59 kf59 str Fn - - ----- F59 function key
-#key_f60 kf60 str Fo - - ----- F60 function key
-#key_f61 kf61 str Fp - - ----- F61 function key
-#key_f62 kf62 str Fq - - ----- F62 function key
-#key_f63 kf63 str Fr - - ----- F63 function key
-#
-#############################################################################
-#
-# ALIAS DECLARATIONS
-#
-# Here we set up aliases for translating extensions into standard terminfo.
-#
-#---------------------------------- Termcap aliases -------------------------
-#
-# BSD aliases:
-#
-# This is a common error in many termcap files. We'll get notified during
-# translation when this (or any other alias) fires.
-#
-capalias sb sr BSD scroll text down
-#
-# AT&T extensions:
-#
-# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
-# nonstandard capabilities. Its signature is the KM capability, used to name
-# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
-# set. Comments in the original, and a little cross-checking with other AT&T
-# documentation, seem to establish the following mappings:
-#
-capalias BO mr AT&T enter_reverse_mode
-capalias CI vi AT&T cursor_invisible
-capalias CV ve AT&T cursor_normal
-capalias DS mh AT&T enter_dim_mode
-#capalias EE me AT&T exit_attribute_mode
-capalias FE LF AT&T label_on
-capalias FL LO AT&T label_off
-capalias XS mk AT&T enter_secure_mode
-#
-# We comment out EE because the conflicting XENIX EE is more common in
-# old entries.
-#
-# XENIX extensions:
-#
-# These are the ones we know how to translate directly:
-#
-capalias EE mh XENIX exit_attribute_mode
-capalias GE ae XENIX exit_alt_charset_mode
-capalias GS as XENIX enter_alt_charset_mode
-capalias CF vi XENIX cursor_invis
-capalias CO ve XENIX cursor_normal
-capalias EN @7 XENIX key_end
-capalias HM kh XENIX key_home
-capalias LD kL XENIX key_dl
-capalias PD kN XENIX key_npage
-capalias PN po XENIX prtr_off
-capalias PS pf XENIX prtr_on
-capalias PU kP XENIX key_ppage
-capalias RT @8 XENIX kent
-capalias UP ku XENIX kcuu1
-capalias G6 IGNORE XENIX double-ACS_ULCORNER
-capalias G7 IGNORE XENIX double-ACS_LLCORNER
-capalias G5 IGNORE XENIX double-ACS_URCORNER
-capalias G8 IGNORE XENIX double-ACS_LRCORNER
-capalias Gr IGNORE XENIX double-ACS_LTEE
-capalias Gr IGNORE XENIX double-ACS_RTEE
-capalias Gu IGNORE XENIX double-ACS_BTEE
-capalias Gd IGNORE XENIX double ACS_TTEE
-capalias Gh IGNORE XENIX double-ACS_HLINE
-capalias Gv IGNORE XENIX double-ACS_VLINE
-capalias Gc IGNORE XENIX double-ACS_PLUS
-capalias GG IGNORE XENIX acs-glitch
-#
-# IBM extensions:
-#
-capalias kq %1 IBM key_help
-#
-# Iris extensions:
-#
-capalias HS mh IRIS enter_dim_mode
-#
-# Tektronix extensions:
-#
-capalias KA k; Tek key_f10
-capalias KB F1 Tek key_f11
-capalias KC F2 Tek key_f12
-capalias KD F3 Tek key_f13
-capalias KE F4 Tek key_f14
-capalias KF F5 Tek key_f15
-capalias BC Sb Tek set_background
-capalias FC Sf Tek set_foreground
-#
-# There are also the following:
-#
-# XENIX XENIX variable name name clash with terminfo?
-# ----- ------------------- -------------------------
-# CL key_char_left
-# CR key_char_right
-# CW key_change_window
-# HP ??
-# LF key_linefeed label_off
-# NU key_next_unlocked_cell
-# PL ??
-# PR ??
-# RC key_recalc remove_clock
-# RF key_toggle_ref req_for_input
-# WL key_word_left
-# WR key_word_right
-#
-# If you know what any of the question-marked ones mean, please tell us.
-#
-#--------------------------------- Terminfo aliases ------------------------
-#
-# IBM extensions:
-#
-infoalias font0 s0ds IBM set0_des_seq
-infoalias font1 s1ds IBM set1_des_seq
-infoalias font2 s2ds IBM set2_des_seq
-infoalias font3 s3ds IBM set3_des_seq
-infoalias kbtab kcbt IBM key_backtab
-infoalias ksel kslt IBM key_select
-#
-# Some others are identical to SVr4/XPG4 capabilities, in particular:
-# kcmd, kend, khlp, and kf11...kf63.
#
#############################################################################
diff --git a/include/Caps.hpux11 b/include/Caps.hpux11
index b7bb99872774..4f99d34efe73 100644
--- a/include/Caps.hpux11
+++ b/include/Caps.hpux11
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2002-2010,2011 Free Software Foundation, Inc. #
+# Copyright (c) 2002-2016,2019 Free 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"), #
@@ -28,13 +28,13 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.hpux11,v 1.6 2011/10/15 23:20:04 tom Exp $
+# $Id: Caps.hpux11,v 1.14 2019/07/27 00:36:44 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with HPUX 11.x's terminfo.
#
# This table is used to generate initializers for tables that drive tic,
-# infocmp, and the library compilation code used to support the termcap
+# infocmp, and the library compilation code used to support the termcap
# compatibility hack. It is also used to generate the tabular portion of the
# terminfo(5) man page; lines beginning with `#%' are passed through to become
# the terminfo table.
@@ -97,7 +97,7 @@
# 3. List it in the standard table. You almost certainly do *not* want
# to do this -- the capabilities in that one, and their order, have been
# carefully chosen to be SVr4-binary-compatible when they're written out
-# as a terminfo object, and breaking this would be bad. It's up the ncurses
+# as a terminfo object, and breaking this would be bad. It's up to the ncurses
# library what to do with the terminfo data after it's read in.
#
# 4. List it in the aliases table with an IGNORE target field. If you
@@ -119,14 +119,14 @@
# You'll need to write custom code, probably in postprocess_termcap() or
# postprocess_terminfo(), to handle the translation.
#
-# CONTROLLING ENTRY LENGTH
+# CONTROLLING ENTRY LENGTH
#
# Notes on specific elisions made to fit translations within 1023 bytes:
#
# Machines with IBM PC-like keyboards want to be able to define the following
# keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap-
# only environments for End or Home-Down), key_dc, and key_ic. This is also
-# the set of keys the `joe' editor will be upset if it can't see. So don't
+# the set of keys the `joe' editor will be upset if it can't see. So don't
# trim those out of the set to be translated to termcap, or various users of
# the termcap file will become irate.
#
@@ -147,7 +147,7 @@
#
# It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap
# translations go back over critical if we do this. As 4.4BSD curses fades
-# into history and GNU termcap's application base shrinks towards being GNU
+# into history and GNU termcap's application base shrinks towards being GNU
# Emacs only, we'll probably elide out some BSD-only capabilities in order
# to buy space for non-essentials Emacs is still using. Capabilities high
# on that hit list: rc, sc, uc.
@@ -166,7 +166,7 @@
#%The \fBcapname\fR 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
+#%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 specification.
#%
@@ -227,7 +227,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
over_strike os bool os - - YBCG- terminal can overstrike
status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
-tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
+tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine)
transparent_underline ul bool ul - - YBCGE underline character overstrikes
xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
# end booleans for HPUX 9, 10 (non-color curses)
@@ -273,7 +273,7 @@ num_labels nlab num Nl - - ----- number of labels on screen
label_height lh num lh - - ----- rows in each label
label_width lw num lw - - ----- columns in each label
max_attributes ma num ma - - YBC-- maximum combined attributes terminal can handle
-maximum_windows wnum num MW - - ----- maximum number of defineable windows
+maximum_windows wnum num MW - - ----- maximum number of definable windows
# These came in with SVr4's color support
max_colors colors num Co - - ----- maximum number of colors on screen
max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen
@@ -298,7 +298,7 @@ dot_vert_spacing spinv num Yb - - ----- spacing of pins vertically in pins per
dot_horz_spacing spinh num Yc - - ----- spacing of dots horizontally in dots per inch
max_micro_address maddr num Yd - - ----- maximum value in micro_..._address
max_micro_jump mjump num Ye - - ----- maximum value in parm_..._micro
-micro_col_size mcs num Yf - - ----- character step size when in micro mode
+micro_char_size mcs num Yf - - ----- character step size when in micro mode
micro_line_size mls num Yg - - ----- line step size when in micro mode
number_of_pins npins num Yh - - ----- numbers of pins in print-head
output_res_char orc num Yi - - ----- horizontal resolution in units per line
@@ -727,7 +727,7 @@ bit_image_repeat birep str Xy - - ----- Repeat bit image cell #1 #2 times
bit_image_newline binel str Zz - - ----- Move to next row of the bit image
bit_image_carriage_return bicr str Yv - - ----- Move to beginning of same row
color_names colornm str Yw - - ----- Give name for color #1
-define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region
+define_bit_image_region defbi str Yx - - ----- Define rectangular bit image region
end_bit_image_region endbi str Yy - - ----- End a bit-image region
set_color_band setcolor str Yz - - ----- Change to ribbon color #1
set_page_length slines str YZ - - ----- Set page length to #1 lines
@@ -755,6 +755,8 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio
#%they may not be binary-compatible with System V terminfo
#%entries after SVr4.1; beware!
#%
+#%AIX and Solaris do not provide termcap names for these; HPUX does.
+#%
#%.na
#%.TS H
#%center expand;
@@ -764,19 +766,19 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio
#%\fBVariable Cap- TCap Description\fR
#%\fBString name Code\fR
set_pglen_inch slength str YI - - ----- Set page length to #1 hundredth of an inch (some implementations use sL for termcap).
-enter_horizontal_hl_mode ehhlm str Xh - - ----- Enter horizontal highlight mode
-enter_left_hl_mode elhlm str Xl - - ----- Enter left highlight mode
-enter_low_hl_mode elohlm str Xo - - ----- Enter low highlight mode
-enter_right_hl_mode erhlm str Xr - - ----- Enter right highlight mode
-enter_top_hl_mode ethlm str Xt - - ----- Enter top highlight mode
-enter_vertical_hl_mode evhlm str Xv - - ----- Enter vertical highlight mode
-set_a_attributes sgr1 str sA - - ----- Define second set of video attributes #1-#6
-exit_horizontal_hl_mode rhhlm str XH - - ----K Exit horizontal highlight mode
-exit_left_hl_mode rlhlm str XL - - ----K Exit left highlight mode
-exit_low_hl_mode rlohlm str XO - - ----K Exit low highlight mode
-exit_right_hl_mode rrhlm str XR - - ----K Exit right highlight mode
-exit_top_hl_mode rthlm str XT - - ----K Exit top highlight mode
-exit_vertical_hl_mode rvhlm str XV - - ----K Exit vertical highlight mode
+enter_horizontal_hl_mode ehhlm str Q1 - - ----- Enter horizontal highlight mode
+enter_left_hl_mode elhlm str Q2 - - ----- Enter left highlight mode
+enter_low_hl_mode elohlm str Q3 - - ----- Enter low highlight mode
+enter_right_hl_mode erhlm str Q4 - - ----- Enter right highlight mode
+enter_top_hl_mode ethlm str Q5 - - ----- Enter top highlight mode
+enter_vertical_hl_mode evhlm str Q6 - - ----- Enter vertical highlight mode
+set_a_attributes sgr1 str Q7 - - ----- Define second set of video attributes #1-#6
+exit_horizontal_hl_mode rmhhlm str Q8 - - ----K Exit horizontal highlight mode
+exit_left_hl_mode rmlhlm str Q9 - - ----K Exit left highlight mode
+exit_low_hl_mode rmlohlm str Qa - - ----K Exit low highlight mode
+exit_right_hl_mode rmrhlm str Qb - - ----K Exit right highlight mode
+exit_top_hl_mode rmthlm str Qc - - ----K Exit top highlight mode
+exit_vertical_hl_mode rmvhlm str Qd - - ----K Exit vertical highlight mode
#%.TE
#%.ad
#
@@ -840,7 +842,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# GNU termcap *does* include the following extended capability, Only the
# now-obsolete Ann Arbor terminals used it.
#
-# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
+# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
#
# The following comments describe capnames so ancient that I believe no
# software uses them any longer. Some of these have to go because they
@@ -857,9 +859,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# comma-separated list of capabilities for which there are corresponding keys.
# The `kn' code is accepted but ignored.
#
-# The `ma' capability seems to have been designed to map between the rogue(2)
-# motion keys (including jkhl) and characters emitted by arrow keys on some
-# primitive pre-ANSI terminals. It's so obsolete it's fossilized...
+# The `ma' capability was a 4.0BSD feature used by vi version 2.
+# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh.
+# Besides being obsolete, that interpretation conflicts with max_attributes.
#
# Here is a description of memory_lock_above and memory_unlock:
# "You can 'freeze' data on the screen by turning on Memory Lock in a line of
@@ -885,7 +887,7 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I
# vertical_tab_delay OTdV num dV - - -B--- padding required for ^V
number_of_function_keys OTkn num kn - - -B-G- count of function keys
other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps
-arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys
+arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2
# memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line
# memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line
has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I
@@ -901,7 +903,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# University of Waterloo termcap extensions (as described in mytinfo).
# The `xl' termcap file clashes with a terminfo name; this ambiguity cannot
# be resolved by a type check. The descriptions are guesses from what was
-# in the mytinfo tables.
+# in the mytinfo tables.
#
# key_interrupt_char OTki str ki - - ----- string set by interrupt key (?)
# key_kill_char OTkk str kk - - ----- string set by kill key (?)
@@ -950,7 +952,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# Gv 186 \272 M-: double vertical line
#
# The compiler will translate the single-line caps and discard the others
-# (via IGNORE aliases further down). We don't want to do normal pad
+# (via IGNORE aliases further down). We don't want to do normal pad
# translation on these, they're often single-character printable ASCII
# strings that happen to be numerics. There's awk code in parametrized.sh
# that detects the acs_ prefix and uses it to suppress pad translation.
@@ -972,303 +974,8 @@ acs_plus OTGC str GC - - ----- single intersection
#
# TERMINFO EXTENSION CAPABILITIES
#
-# This section is almost all comments. What it's mainly for is to describe
-# what capabilities need to be squeezed out to get down to the XSI Curses
-# standard set. They are flagged with K.
-#
-# HP extensions
-#
-# These extensions follow ptr_non (replacing everything after it) in HP
-# terminfo files. Except for memory_lock and memory_unlock, they are
-# functionally identical to SVr4 extensions, but they make the binary format
-# different. Grrr....
-#
-#memory_lock meml str ml - - ----K memory lock above
-#memory_unlock memu str mu - - ----K memory unlock
-#plab_norm pln str pn - - ----- program label #1 to show string #2
-#label_on smln str LO - - ----- turn on soft labels
-#label_off rmln str LF - - ----- turn off soft labels
-#key_f11 kf11 str F1 - - ----- F11 function key
-#key_f12 kf12 str F2 - - ----- F12 function key
-#key_f13 kf13 str F3 - - ----- F13 function key
-#key_f14 kf14 str F4 - - ----- F14 function key
-#key_f15 kf15 str F5 - - ----- F15 function key
-#key_f16 kf16 str F6 - - ----- F16 function key
-#key_f17 kf17 str F7 - - ----- F17 function key
-#key_f18 kf18 str F8 - - ----- F18 function key
-#key_f19 kf19 str F9 - - ----- F19 function key
-#key_f20 kf20 str FA - - ----- F20 function key
-#key_f21 kf21 str FB - - ----- F21 function key
-#key_f22 kf22 str FC - - ----- F22 function key
-#key_f23 kf23 str FD - - ----- F23 function key
-#key_f24 kf24 str FE - - ----- F24 function key
-#key_f25 kf25 str FF - - ----- F25 function key
-#key_f26 kf26 str FG - - ----- F26 function key
-#key_f27 kf27 str FH - - ----- F27 function key
-#key_f28 kf28 str FI - - ----- F28 function key
-#key_f29 kf29 str FJ - - ----- F29 function key
-#key_f30 kf30 str FK - - ----- F30 function key
-#key_f31 kf31 str FL - - ----- F31 function key
-#key_f32 kf32 str FM - - ----- F32 function key
-#key_f33 kf33 str FN - - ----- F33 function key
-#key_f34 kf34 str FO - - ----- F34 function key
-#key_f35 kf35 str FP - - ----- F35 function key
-#key_f36 kf36 str FQ - - ----- F36 function key
-#key_f37 kf37 str FR - - ----- F37 function key
-#key_f38 kf38 str FS - - ----- F38 function key
-#key_f39 kf39 str FT - - ----- F39 function key
-#key_f40 kf40 str FU - - ----- F40 function key
-#key_f41 kf41 str FV - - ----- F41 function key
-#key_f42 kf42 str FW - - ----- F42 function key
-#key_f43 kf43 str FX - - ----- F43 function key
-#key_f44 kf44 str FY - - ----- F44 function key
-#key_f45 kf45 str FZ - - ----- F45 function key
-#key_f46 kf46 str Fa - - ----- F46 function key
-#key_f47 kf47 str Fb - - ----- F47 function key
-#key_f48 kf48 str Fc - - ----- F48 function key
-#key_f49 kf49 str Fd - - ----- F49 function key
-#key_f50 kf50 str Fe - - ----- F50 function key
-#key_f51 kf51 str Ff - - ----- F51 function key
-#key_f52 kf52 str Fg - - ----- F52 function key
-#key_f53 kf53 str Fh - - ----- F53 function key
-#key_f54 kf54 str Fi - - ----- F54 function key
-#key_f55 kf55 str Fj - - ----- F55 function key
-#key_f56 kf56 str Fk - - ----- F56 function key
-#key_f57 kf57 str Fl - - ----- F57 function key
-#key_f58 kf58 str Fm - - ----- F58 function key
-#key_f59 kf59 str Fn - - ----- F59 function key
-#key_f60 kf60 str Fo - - ----- F60 function key
-#key_f61 kf61 str Fp - - ----- F61 function key
-#key_f62 kf62 str Fq - - ----- F62 function key
-#key_f63 kf63 str Fr - - ----- F63 function key
-#
-# IBM extensions
-#
-# These extensions follow ptr_non (replacing everything after it) in IBM
-# terminfo files.
-#
-# The places in the box[12] capabilities correspond to acsc characters, here is
-# the mapping:
-#
-# box1[0] = ACS_ULCORNER
-# box1[1] = ACS_HLINE
-# box1[2] = ACS_URCORNER
-# box1[3] = ACS_VLINE
-# box1[4] = ACS_LRCORNER
-# box1[5] = ACS_LLCORNER
-# box1[6] = ACS_TTEE
-# box1[7] = ACS_RTEE
-# box1[8] = ACS_BTEE
-# box1[9] = ACS_LTEE
-# box1[10] = ACS_PLUS
-#
-# The box2 characters are the double-line versions of these forms graphics.
+# (see Caps-ncurses for the complete set of comments)
#
box_chars_1 box1 str bx - - ----K box characters primary set
-#box_chars_2 box2 str by - - ----K box characters secondary set
-#box_attr_1 batt1 str Bx - - ----K attributes for box1
-#box_attr_2 batt2 str By - - ----K attributes for box2
-#color_bg_0 colb0 str d0 - - ----K background color 0
-#color_bg_1 colb1 str d1 - - ----K background color 1
-#color_bg_2 colb2 str d2 - - ----K background color 2
-#color_bg_3 colb3 str d3 - - ----K background color 3
-#color_bg_4 colb4 str d4 - - ----K background color 4
-#color_bg_5 colb5 str d5 - - ----K background color 5
-#color_bg_6 colb6 str d6 - - ----K background color 6
-#color_bg_7 colb7 str d7 - - ----K background color 7
-#color_fg_0 colf0 str c0 - - ----K foreground color 0
-#color_fg_1 colf1 str c1 - - ----K foreground color 1
-#color_fg_2 colf2 str c2 - - ----K foreground color 2
-#color_fg_3 colf3 str c3 - - ----K foreground color 3
-#color_fg_4 colf4 str c4 - - ----K foreground color 4
-#color_fg_5 colf5 str c5 - - ----K foreground color 5
-#color_fg_6 colf6 str c6 - - ----K foreground color 6
-#color_fg_7 colf7 str c7 - - ----K foreground color 7
-#font_0 font0 str f0 - - ----- select font 0
-#font_1 font1 str f1 - - ----- select font 1
-#font_2 font2 str f2 - - ----- select font 2
-#font_3 font3 str f3 - - ----- select font 3
-#font_4 font4 str f4 - - ----K select font 4
-#font_5 font5 str f5 - - ----K select font 5
-#font_6 font6 str f6 - - ----K select font 6
-#font_7 font7 str f7 - - ----K select font 7
-#key_back_tab kbtab str k0 - - ----- backtab key
-#key_do kdo str ki - - ----K do request key
-#key_command kcmd str kd - - ----K command-request key
-#key_command_pane kcpn str kW - - ----K command-pane key
-#key_end kend str kw - - ----- end key
-#key_help khlp str kq - - ----- help key
-#key_newline knl str nl - - ----K newline key
-#key_next_pane knpn str kv - - ----K next-pane key
-#key_prev_cmd kppn str kp - - ----K previous-command key
-#key_prev_pane kppn str kV - - ----K previous-pane key
-#key_quit kquit str kQ - - ----K quit key
-#key_select ksel str kU - - ----- select key
-#key_scroll_left kscl str kz - - ----K scroll left
-#key_scroll_right kscr str kZ - - ----K scroll right
-#key_tab ktab str ko - - ----K tab key
-#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input
-#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output
-#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input
-#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output
-#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input
-#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output
-#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input
-#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output
-#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input
-#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output
-#appl_defined_str apstr str za - - ----K application-defined string
-# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in
-# the IBM manual pages, so the cap name strings are guesses. The terminfo
-# names are almost certainly right, the termcap ones almost certainly wrong.
-#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input
-#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output
-#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input
-#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output
-#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input
-#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output
-#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input
-#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output
-# Undocumented capabilities end here
-#key_sf1 ksf1 str S1 - - ----K special function key 1
-#key_sf2 ksf2 str S2 - - ----K special function key 2
-#key_sf3 ksf3 str S3 - - ----K special function key 3
-#key_sf4 ksf4 str S4 - - ----K special function key 4
-#key_sf5 ksf5 str S5 - - ----K special function key 5
-#key_sf6 ksf6 str S6 - - ----K special function key 6
-#key_sf7 ksf7 str S7 - - ----K special function key 7
-#key_sf8 ksf8 str S8 - - ----K special function key 8
-#key_sf9 ksf9 str S9 - - ----K special function key 9
-#key_sf10 ksf10 str SA - - ----K special function key 10
-# AIX version 3 documents different codes for F11, F12 and does not mention
-# F13-F64. AIX version 4 uses the same naming for F0-F63 as above.
-#key_f11 kf11 str k< - - ----- function key 11
-#key_f12 kf12 str k> - - ----- function key 12
-# Undocumented capabilities end here.
-#key_action kact str kJ - - ----K sent by action key
-# The IBM docs say these capabilities are for table-drawing, and are
-# valid only for aixterm descriptions.
-#enter_topline_mode topl str tp - - ----K start top-line mode
-#enter_bottom_mode btml str bm - - ----K start bottom-line mode
-#enter_rvert_mode rvert str rv - - ----K start right-vertical mode
-#enter_lvert_mode lvert str lv - - ----K start left-vertical mode
-#
-#############################################################################
-#
-# ALIAS DECLARATIONS
-#
-# Here we set up aliases for translating extensions into standard terminfo.
-#
-#---------------------------------- Termcap aliases -------------------------
-#
-# BSD aliases:
-#
-# This is a common error in many termcap files. We'll get notified during
-# translation when this (or any other alias) fires.
-#
-capalias sb sr BSD scroll text down
-#
-# AT&T extensions:
-#
-# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
-# nonstandard capabilities. Its signature is the KM capability, used to name
-# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
-# set. Comments in the original, and a little cross-checking with other AT&T
-# documentation, seem to establish the following mappings:
-#
-capalias BO mr AT&T enter_reverse_mode
-capalias CI vi AT&T cursor_invisible
-capalias CV ve AT&T cursor_normal
-capalias DS mh AT&T enter_dim_mode
-#capalias EE me AT&T exit_attribute_mode
-capalias FE LF AT&T label_on
-capalias FL LO AT&T label_off
-capalias XS mk AT&T enter_secure_mode
-#
-# We comment out EE because the conflicting XENIX EE is more common in
-# old entries.
-#
-# XENIX extensions:
-#
-# These are the ones we know how to translate directly:
-#
-capalias EE mh XENIX exit_attribute_mode
-capalias GE ae XENIX exit_alt_charset_mode
-capalias GS as XENIX enter_alt_charset_mode
-capalias CF vi XENIX cursor_invis
-capalias CO ve XENIX cursor_normal
-capalias EN @7 XENIX key_end
-capalias HM kh XENIX key_home
-capalias LD kL XENIX key_dl
-capalias PD kN XENIX key_npage
-capalias PN po XENIX prtr_off
-capalias PS pf XENIX prtr_on
-capalias PU kP XENIX key_ppage
-capalias RT @8 XENIX kent
-capalias UP ku XENIX kcuu1
-capalias G6 IGNORE XENIX double-ACS_ULCORNER
-capalias G7 IGNORE XENIX double-ACS_LLCORNER
-capalias G5 IGNORE XENIX double-ACS_URCORNER
-capalias G8 IGNORE XENIX double-ACS_LRCORNER
-capalias Gr IGNORE XENIX double-ACS_LTEE
-capalias Gr IGNORE XENIX double-ACS_RTEE
-capalias Gu IGNORE XENIX double-ACS_BTEE
-capalias Gd IGNORE XENIX double ACS_TTEE
-capalias Gh IGNORE XENIX double-ACS_HLINE
-capalias Gv IGNORE XENIX double-ACS_VLINE
-capalias Gc IGNORE XENIX double-ACS_PLUS
-capalias GG IGNORE XENIX acs-glitch
-#
-# IBM extensions:
-#
-capalias kq %1 IBM key_help
-#
-# Iris extensions:
-#
-capalias HS mh IRIS enter_dim_mode
-#
-# Tektronix extensions:
-#
-capalias KA k; Tek key_f10
-capalias KB F1 Tek key_f11
-capalias KC F2 Tek key_f12
-capalias KD F3 Tek key_f13
-capalias KE F4 Tek key_f14
-capalias KF F5 Tek key_f15
-capalias BC Sb Tek set_background
-capalias FC Sf Tek set_foreground
-#
-# There are also the following:
-#
-# XENIX XENIX variable name name clash with terminfo?
-# ----- ------------------- -------------------------
-# CL key_char_left
-# CR key_char_right
-# CW key_change_window
-# HP ??
-# LF key_linefeed label_off
-# NU key_next_unlocked_cell
-# PL ??
-# PR ??
-# RC key_recalc remove_clock
-# RF key_toggle_ref req_for_input
-# WL key_word_left
-# WR key_word_right
-#
-# If you know what any of the question-marked ones mean, please tell us.
-#
-#--------------------------------- Terminfo aliases ------------------------
-#
-# IBM extensions:
-#
-infoalias font0 s0ds IBM set0_des_seq
-infoalias font1 s1ds IBM set1_des_seq
-infoalias font2 s2ds IBM set2_des_seq
-infoalias font3 s3ds IBM set3_des_seq
-infoalias kbtab kcbt IBM key_backtab
-infoalias ksel kslt IBM key_select
-#
-# Some others are identical to SVr4/XPG4 capabilities, in particular:
-# kcmd, kend, khlp, and kf11...kf63.
#
#############################################################################
diff --git a/include/Caps.keys b/include/Caps.keys
index 99c65b782394..a716d786c1ba 100644
--- a/include/Caps.keys
+++ b/include/Caps.keys
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2001-2011,2013 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2016,2019 Free 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,14 +29,14 @@
# Author: Thomas Dickey
# and: Ilya Zakharevich
#
-# $Id: Caps.keys,v 1.7 2013/07/20 17:59:24 tom Exp $
+# $Id: Caps.keys,v 1.13 2019/07/27 00:36:44 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is illustrates an experimental extension to describe alt-, shift- and
# control-modifiers applied to function and normal keys, as done on IBM pc's.
#
# This table is used to generate initializers for tables that drive tic,
-# infocmp, and the library compilation code used to support the termcap
+# infocmp, and the library compilation code used to support the termcap
# compatibility hack. It is also used to generate the tabular portion of the
# terminfo(5) man page; lines beginning with `#%' are passed through to become
# the terminfo table.
@@ -99,7 +99,7 @@
# 3. List it in the standard table. You almost certainly do *not* want
# to do this -- the capabilities in that one, and their order, have been
# carefully chosen to be SVr4-binary-compatible when they're written out
-# as a terminfo object, and breaking this would be bad. It's up the ncurses
+# as a terminfo object, and breaking this would be bad. It's up to the ncurses
# library what to do with the terminfo data after it's read in.
#
# 4. List it in the aliases table with an IGNORE target field. If you
@@ -121,14 +121,14 @@
# You'll need to write custom code, probably in postprocess_termcap() or
# postprocess_terminfo(), to handle the translation.
#
-# CONTROLLING ENTRY LENGTH
+# CONTROLLING ENTRY LENGTH
#
# Notes on specific elisions made to fit translations within 1023 bytes:
#
# Machines with IBM PC-like keyboards want to be able to define the following
# keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap-
# only environments for End or Home-Down), key_dc, and key_ic. This is also
-# the set of keys the `joe' editor will be upset if it can't see. So don't
+# the set of keys the `joe' editor will be upset if it can't see. So don't
# trim those out of the set to be translated to termcap, or various users of
# the termcap file will become irate.
#
@@ -149,7 +149,7 @@
#
# It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap
# translations go back over critical if we do this. As 4.4BSD curses fades
-# into history and GNU termcap's application base shrinks towards being GNU
+# into history and GNU termcap's application base shrinks towards being GNU
# Emacs only, we'll probably elide out some BSD-only capabilities in order
# to buy space for non-essentials Emacs is still using. Capabilities high
# on that hit list: rc, sc, uc.
@@ -168,7 +168,7 @@
#%The \fBcapname\fR 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
+#%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 specification.
#%
@@ -229,7 +229,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
over_strike os bool os - - YBCG- terminal can overstrike
status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
-tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
+tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine)
transparent_underline ul bool ul - - YBCGE underline character overstrikes
xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required
@@ -273,7 +273,7 @@ num_labels nlab num Nl - - ----- number of labels on screen
label_height lh num lh - - ----- rows in each label
label_width lw num lw - - ----- columns in each label
max_attributes ma num ma - - YBC-- maximum combined attributes terminal can handle
-maximum_windows wnum num MW - - ----- maximum number of defineable windows
+maximum_windows wnum num MW - - ----- maximum number of definable windows
# These came in with SVr4's color support
max_colors colors num Co - - ----- maximum number of colors on screen
max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen
@@ -809,7 +809,7 @@ bit_image_repeat birep str Xy - - ----- Repeat bit image cell #1 #2 times
bit_image_newline binel str Zz - - ----- Move to next row of the bit image
bit_image_carriage_return bicr str Yv - - ----- Move to beginning of same row
color_names colornm str Yw - - ----- Give name for color #1
-define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region
+define_bit_image_region defbi str Yx - - ----- Define rectangular bit image region
end_bit_image_region endbi str Yy - - ----- End a bit-image region
set_color_band setcolor str Yz - - ----- Change to ribbon color #1
set_page_length slines str YZ - - ----- Set page length to #1 lines
@@ -916,7 +916,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# GNU termcap *does* include the following extended capability, Only the
# now-obsolete Ann Arbor terminals used it.
#
-# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
+# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
#
# The following comments describe capnames so ancient that I believe no
# software uses them any longer. Some of these have to go because they
@@ -933,9 +933,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# comma-separated list of capabilities for which there are corresponding keys.
# The `kn' code is accepted but ignored.
#
-# The `ma' capability seems to have been designed to map between the rogue(2)
-# motion keys (including jkhl) and characters emitted by arrow keys on some
-# primitive pre-ANSI terminals. It's so obsolete it's fossilized...
+# The `ma' capability was a 4.0BSD feature used by vi version 2.
+# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh.
+# Besides being obsolete, that interpretation conflicts with max_attributes.
#
# Here is a description of memory_lock_above and memory_unlock:
# "You can 'freeze' data on the screen by turning on Memory Lock in a line of
@@ -961,7 +961,7 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I
# vertical_tab_delay OTdV num dV - - -B--- padding required for ^V
number_of_function_keys OTkn num kn - - -B-G- count of function keys
other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps
-arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys
+arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2
# memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line
# memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line
has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I
@@ -977,7 +977,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# University of Waterloo termcap extensions (as described in mytinfo).
# The `xl' termcap file clashes with a terminfo name; this ambiguity cannot
# be resolved by a type check. The descriptions are guesses from what was
-# in the mytinfo tables.
+# in the mytinfo tables.
#
# key_interrupt_char OTki str ki - - ----- string set by interrupt key (?)
# key_kill_char OTkk str kk - - ----- string set by kill key (?)
@@ -1026,7 +1026,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# Gv 186 \272 M-: double vertical line
#
# The compiler will translate the single-line caps and discard the others
-# (via IGNORE aliases further down). We don't want to do normal pad
+# (via IGNORE aliases further down). We don't want to do normal pad
# translation on these, they're often single-character printable ASCII
# strings that happen to be numerics. There's awk code in parametrized.sh
# that detects the acs_ prefix and uses it to suppress pad translation.
@@ -1048,303 +1048,10 @@ acs_plus OTGC str GC - - ----- single intersection
#
# TERMINFO EXTENSION CAPABILITIES
#
-# This section is almost all comments. What it's mainly for is to describe
-# what capabilities need to be squeezed out to get down to the XSI Curses
-# standard set. They are flagged with K.
-#
-# HP extensions
-#
-# These extensions follow ptr_non (replacing everything after it) in HP
-# terminfo files. Except for memory_lock and memory_unlock, they are
-# functionally identical to SVr4 extensions, but they make the binary format
-# different. Grrr....
+# (see Caps-ncurses for the complete set of comments)
#
memory_lock meml str ml - - ----K lock memory above cursor
memory_unlock memu str mu - - ----K unlock memory
-#plab_norm pln str pn - - ----- program label #1 to show string #2
-#label_on smln str LO - - ----- turn on soft labels
-#label_off rmln str LF - - ----- turn off soft labels
-#key_f11 kf11 str F1 - - ----- F11 function key
-#key_f12 kf12 str F2 - - ----- F12 function key
-#key_f13 kf13 str F3 - - ----- F13 function key
-#key_f14 kf14 str F4 - - ----- F14 function key
-#key_f15 kf15 str F5 - - ----- F15 function key
-#key_f16 kf16 str F6 - - ----- F16 function key
-#key_f17 kf17 str F7 - - ----- F17 function key
-#key_f18 kf18 str F8 - - ----- F18 function key
-#key_f19 kf19 str F9 - - ----- F19 function key
-#key_f20 kf20 str FA - - ----- F20 function key
-#key_f21 kf21 str FB - - ----- F21 function key
-#key_f22 kf22 str FC - - ----- F22 function key
-#key_f23 kf23 str FD - - ----- F23 function key
-#key_f24 kf24 str FE - - ----- F24 function key
-#key_f25 kf25 str FF - - ----- F25 function key
-#key_f26 kf26 str FG - - ----- F26 function key
-#key_f27 kf27 str FH - - ----- F27 function key
-#key_f28 kf28 str FI - - ----- F28 function key
-#key_f29 kf29 str FJ - - ----- F29 function key
-#key_f30 kf30 str FK - - ----- F30 function key
-#key_f31 kf31 str FL - - ----- F31 function key
-#key_f32 kf32 str FM - - ----- F32 function key
-#key_f33 kf33 str FN - - ----- F33 function key
-#key_f34 kf34 str FO - - ----- F34 function key
-#key_f35 kf35 str FP - - ----- F35 function key
-#key_f36 kf36 str FQ - - ----- F36 function key
-#key_f37 kf37 str FR - - ----- F37 function key
-#key_f38 kf38 str FS - - ----- F38 function key
-#key_f39 kf39 str FT - - ----- F39 function key
-#key_f40 kf40 str FU - - ----- F40 function key
-#key_f41 kf41 str FV - - ----- F41 function key
-#key_f42 kf42 str FW - - ----- F42 function key
-#key_f43 kf43 str FX - - ----- F43 function key
-#key_f44 kf44 str FY - - ----- F44 function key
-#key_f45 kf45 str FZ - - ----- F45 function key
-#key_f46 kf46 str Fa - - ----- F46 function key
-#key_f47 kf47 str Fb - - ----- F47 function key
-#key_f48 kf48 str Fc - - ----- F48 function key
-#key_f49 kf49 str Fd - - ----- F49 function key
-#key_f50 kf50 str Fe - - ----- F50 function key
-#key_f51 kf51 str Ff - - ----- F51 function key
-#key_f52 kf52 str Fg - - ----- F52 function key
-#key_f53 kf53 str Fh - - ----- F53 function key
-#key_f54 kf54 str Fi - - ----- F54 function key
-#key_f55 kf55 str Fj - - ----- F55 function key
-#key_f56 kf56 str Fk - - ----- F56 function key
-#key_f57 kf57 str Fl - - ----- F57 function key
-#key_f58 kf58 str Fm - - ----- F58 function key
-#key_f59 kf59 str Fn - - ----- F59 function key
-#key_f60 kf60 str Fo - - ----- F60 function key
-#key_f61 kf61 str Fp - - ----- F61 function key
-#key_f62 kf62 str Fq - - ----- F62 function key
-#key_f63 kf63 str Fr - - ----- F63 function key
-#
-# IBM extensions
-#
-# These extensions follow ptr_non (replacing everything after it) in IBM
-# terminfo files.
-#
-# The places in the box[12] capabilities correspond to acsc characters, here is
-# the mapping:
-#
-# box1[0] = ACS_ULCORNER
-# box1[1] = ACS_HLINE
-# box1[2] = ACS_URCORNER
-# box1[3] = ACS_VLINE
-# box1[4] = ACS_LRCORNER
-# box1[5] = ACS_LLCORNER
-# box1[6] = ACS_TTEE
-# box1[7] = ACS_RTEE
-# box1[8] = ACS_BTEE
-# box1[9] = ACS_LTEE
-# box1[10] = ACS_PLUS
-#
-# The box2 characters are the double-line versions of these forms graphics.
-#
box_chars_1 box1 str bx - - ----K box characters primary set
-#box_chars_2 box2 str by - - ----K box characters secondary set
-#box_attr_1 batt1 str Bx - - ----K attributes for box1
-#box_attr_2 batt2 str By - - ----K attributes for box2
-#color_bg_0 colb0 str d0 - - ----K background color 0
-#color_bg_1 colb1 str d1 - - ----K background color 1
-#color_bg_2 colb2 str d2 - - ----K background color 2
-#color_bg_3 colb3 str d3 - - ----K background color 3
-#color_bg_4 colb4 str d4 - - ----K background color 4
-#color_bg_5 colb5 str d5 - - ----K background color 5
-#color_bg_6 colb6 str d6 - - ----K background color 6
-#color_bg_7 colb7 str d7 - - ----K background color 7
-#color_fg_0 colf0 str c0 - - ----K foreground color 0
-#color_fg_1 colf1 str c1 - - ----K foreground color 1
-#color_fg_2 colf2 str c2 - - ----K foreground color 2
-#color_fg_3 colf3 str c3 - - ----K foreground color 3
-#color_fg_4 colf4 str c4 - - ----K foreground color 4
-#color_fg_5 colf5 str c5 - - ----K foreground color 5
-#color_fg_6 colf6 str c6 - - ----K foreground color 6
-#color_fg_7 colf7 str c7 - - ----K foreground color 7
-#font_0 font0 str f0 - - ----- select font 0
-#font_1 font1 str f1 - - ----- select font 1
-#font_2 font2 str f2 - - ----- select font 2
-#font_3 font3 str f3 - - ----- select font 3
-#font_4 font4 str f4 - - ----K select font 4
-#font_5 font5 str f5 - - ----K select font 5
-#font_6 font6 str f6 - - ----K select font 6
-#font_7 font7 str f7 - - ----K select font 7
-#key_back_tab kbtab str k0 - - ----- backtab key
-#key_do kdo str ki - - ----K do request key
-#key_command kcmd str kd - - ----K command-request key
-#key_command_pane kcpn str kW - - ----K command-pane key
-#key_end kend str kw - - ----- end key
-#key_help khlp str kq - - ----- help key
-#key_newline knl str nl - - ----K newline key
-#key_next_pane knpn str kv - - ----K next-pane key
-#key_prev_cmd kppn str kp - - ----K previous-command key
-#key_prev_pane kppn str kV - - ----K previous-pane key
-#key_quit kquit str kQ - - ----K quit key
-#key_select ksel str kU - - ----- select key
-#key_scroll_left kscl str kz - - ----K scroll left
-#key_scroll_right kscr str kZ - - ----K scroll right
-#key_tab ktab str ko - - ----K tab key
-#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input
-#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output
-#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input
-#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output
-#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input
-#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output
-#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input
-#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output
-#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input
-#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output
-#appl_defined_str apstr str za - - ----K application-defined string
-# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in
-# the IBM manual pages, so the cap name strings are guesses. The terminfo
-# names are almost certainly right, the termcap ones almost certainly wrong.
-#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input
-#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output
-#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input
-#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output
-#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input
-#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output
-#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input
-#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output
-# Undocumented capabilities end here
-#key_sf1 ksf1 str S1 - - ----K special function key 1
-#key_sf2 ksf2 str S2 - - ----K special function key 2
-#key_sf3 ksf3 str S3 - - ----K special function key 3
-#key_sf4 ksf4 str S4 - - ----K special function key 4
-#key_sf5 ksf5 str S5 - - ----K special function key 5
-#key_sf6 ksf6 str S6 - - ----K special function key 6
-#key_sf7 ksf7 str S7 - - ----K special function key 7
-#key_sf8 ksf8 str S8 - - ----K special function key 8
-#key_sf9 ksf9 str S9 - - ----K special function key 9
-#key_sf10 ksf10 str SA - - ----K special function key 10
-# AIX version 3 documents different codes for F11, F12 and does not mention
-# F13-F64. AIX version 4 uses the same naming for F0-F63 as above.
-#key_f11 kf11 str k< - - ----- function key 11
-#key_f12 kf12 str k> - - ----- function key 12
-# Undocumented capabilities end here.
-#key_action kact str kJ - - ----K sent by action key
-# The IBM docs say these capabilities are for table-drawing, and are
-# valid only for aixterm descriptions.
-#enter_topline_mode topl str tp - - ----K start top-line mode
-#enter_bottom_mode btml str bm - - ----K start bottom-line mode
-#enter_rvert_mode rvert str rv - - ----K start right-vertical mode
-#enter_lvert_mode lvert str lv - - ----K start left-vertical mode
-#
-#############################################################################
-#
-# ALIAS DECLARATIONS
-#
-# Here we set up aliases for translating extensions into standard terminfo.
-#
-#---------------------------------- Termcap aliases -------------------------
-#
-# BSD aliases:
-#
-# This is a common error in many termcap files. We'll get notified during
-# translation when this (or any other alias) fires.
-#
-capalias sb sr BSD scroll text down
-#
-# AT&T extensions:
-#
-# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
-# nonstandard capabilities. Its signature is the KM capability, used to name
-# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
-# set. Comments in the original, and a little cross-checking with other AT&T
-# documentation, seem to establish the following mappings:
-#
-capalias BO mr AT&T enter_reverse_mode
-capalias CI vi AT&T cursor_invisible
-capalias CV ve AT&T cursor_normal
-capalias DS mh AT&T enter_dim_mode
-#capalias EE me AT&T exit_attribute_mode
-capalias FE LF AT&T label_on
-capalias FL LO AT&T label_off
-capalias XS mk AT&T enter_secure_mode
-#
-# We comment out EE because the conflicting XENIX EE is more common in
-# old entries.
-#
-# XENIX extensions:
-#
-# These are the ones we know how to translate directly:
-#
-capalias EE mh XENIX exit_attribute_mode
-capalias GE ae XENIX exit_alt_charset_mode
-capalias GS as XENIX enter_alt_charset_mode
-capalias CF vi XENIX cursor_invis
-capalias CO ve XENIX cursor_normal
-capalias EN @7 XENIX key_end
-capalias HM kh XENIX key_home
-capalias LD kL XENIX key_dl
-capalias PD kN XENIX key_npage
-capalias PN po XENIX prtr_off
-capalias PS pf XENIX prtr_on
-capalias PU kP XENIX key_ppage
-capalias RT @8 XENIX kent
-capalias UP ku XENIX kcuu1
-capalias G6 IGNORE XENIX double-ACS_ULCORNER
-capalias G7 IGNORE XENIX double-ACS_LLCORNER
-capalias G5 IGNORE XENIX double-ACS_URCORNER
-capalias G8 IGNORE XENIX double-ACS_LRCORNER
-capalias Gr IGNORE XENIX double-ACS_LTEE
-capalias Gr IGNORE XENIX double-ACS_RTEE
-capalias Gu IGNORE XENIX double-ACS_BTEE
-capalias Gd IGNORE XENIX double ACS_TTEE
-capalias Gh IGNORE XENIX double-ACS_HLINE
-capalias Gv IGNORE XENIX double-ACS_VLINE
-capalias Gc IGNORE XENIX double-ACS_PLUS
-capalias GG IGNORE XENIX acs-glitch
-#
-# IBM extensions:
-#
-capalias kq %1 IBM key_help
-#
-# Iris extensions:
-#
-capalias HS mh IRIS enter_dim_mode
-#
-# Tektronix extensions:
-#
-capalias KA k; Tek key_f10
-capalias KB F1 Tek key_f11
-capalias KC F2 Tek key_f12
-capalias KD F3 Tek key_f13
-capalias KE F4 Tek key_f14
-capalias KF F5 Tek key_f15
-capalias BC Sb Tek set_background
-capalias FC Sf Tek set_foreground
-#
-# There are also the following:
-#
-# XENIX XENIX variable name name clash with terminfo?
-# ----- ------------------- -------------------------
-# CL key_char_left
-# CR key_char_right
-# CW key_change_window
-# HP ??
-# LF key_linefeed label_off
-# NU key_next_unlocked_cell
-# PL ??
-# PR ??
-# RC key_recalc remove_clock
-# RF key_toggle_ref req_for_input
-# WL key_word_left
-# WR key_word_right
-#
-# If you know what any of the question-marked ones mean, please tell us.
-#
-#--------------------------------- Terminfo aliases ------------------------
-#
-# IBM extensions:
-#
-infoalias font0 s0ds IBM set0_des_seq
-infoalias font1 s1ds IBM set1_des_seq
-infoalias font2 s2ds IBM set2_des_seq
-infoalias font3 s3ds IBM set3_des_seq
-infoalias kbtab kcbt IBM key_backtab
-infoalias ksel kslt IBM key_select
-#
-# Some others are identical to SVr4/XPG4 capabilities, in particular:
-# kcmd, kend, khlp, and kf11...kf63.
#
#############################################################################
diff --git a/include/Caps.osf1r5 b/include/Caps.osf1r5
index b9400b97ea1a..c23142148b0b 100644
--- a/include/Caps.osf1r5
+++ b/include/Caps.osf1r5
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2002-2010,2011 Free Software Foundation, Inc. #
+# Copyright (c) 2002-2016,2019 Free 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"), #
@@ -28,13 +28,13 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.osf1r5,v 1.6 2011/10/15 22:52:09 tom Exp $
+# $Id: Caps.osf1r5,v 1.12 2019/07/27 00:36:44 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with OSF/1 version 5 (Tru64) terminfo.
#
# This table is used to generate initializers for tables that drive tic,
-# infocmp, and the library compilation code used to support the termcap
+# infocmp, and the library compilation code used to support the termcap
# compatibility hack. It is also used to generate the tabular portion of the
# terminfo(5) man page; lines beginning with `#%' are passed through to become
# the terminfo table.
@@ -97,7 +97,7 @@
# 3. List it in the standard table. You almost certainly do *not* want
# to do this -- the capabilities in that one, and their order, have been
# carefully chosen to be SVr4-binary-compatible when they're written out
-# as a terminfo object, and breaking this would be bad. It's up the ncurses
+# as a terminfo object, and breaking this would be bad. It's up to the ncurses
# library what to do with the terminfo data after it's read in.
#
# 4. List it in the aliases table with an IGNORE target field. If you
@@ -119,14 +119,14 @@
# You'll need to write custom code, probably in postprocess_termcap() or
# postprocess_terminfo(), to handle the translation.
#
-# CONTROLLING ENTRY LENGTH
+# CONTROLLING ENTRY LENGTH
#
# Notes on specific elisions made to fit translations within 1023 bytes:
#
# Machines with IBM PC-like keyboards want to be able to define the following
# keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap-
# only environments for End or Home-Down), key_dc, and key_ic. This is also
-# the set of keys the `joe' editor will be upset if it can't see. So don't
+# the set of keys the `joe' editor will be upset if it can't see. So don't
# trim those out of the set to be translated to termcap, or various users of
# the termcap file will become irate.
#
@@ -147,7 +147,7 @@
#
# It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap
# translations go back over critical if we do this. As 4.4BSD curses fades
-# into history and GNU termcap's application base shrinks towards being GNU
+# into history and GNU termcap's application base shrinks towards being GNU
# Emacs only, we'll probably elide out some BSD-only capabilities in order
# to buy space for non-essentials Emacs is still using. Capabilities high
# on that hit list: rc, sc, uc.
@@ -166,7 +166,7 @@
#%The \fBcapname\fR 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
+#%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 specification.
#%
@@ -227,7 +227,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
over_strike os bool os - - YBCG- terminal can overstrike
status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
-tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
+tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine)
transparent_underline ul bool ul - - YBCGE underline character overstrikes
xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
back_color_erase bce bool ut - - ----- screen erased with background color
@@ -280,7 +280,7 @@ max_colors colors num Co - - ----- maximum number of colors on screen
max_micro_address maddr num Yd - - ----- maximum value in micro_..._address
max_micro_jump mjump num Ye - - ----- maximum value in parm_..._micro
max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen
-maximum_windows wnum num MW - - ----- maximum number of defineable windows
+maximum_windows wnum num MW - - ----- maximum number of definable windows
micro_col_size mcs num Yf - - ----- character step size when in micro mode
micro_line_size mls num Yg - - ----- line step size when in micro mode
no_color_video ncv num NC - - ----- video attributes that can not be used with colors
@@ -574,7 +574,7 @@ clr_bol el1 str cb - - ----- Clear to beginning of line
code_set_init csin str ci - - ----- Init sequence for multiple codesets
color_names colornm str Yw - - ----- Give name for color #1
create_window cwin str CW - - ----- define a window #1 from #2,#3 to #4,#5
-define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region
+define_bit_image_region defbi str Yx - - ----- Define rectangular bit image region
define_char defc str ZE - - ----- Define a character #1, #2 dots wide, descender #3
device_type devt str dv - - ----- Indicate language/codeset support
dial_phone dial str DI - - ----- dial number #1
@@ -834,7 +834,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# GNU termcap *does* include the following extended capability, Only the
# now-obsolete Ann Arbor terminals used it.
#
-# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
+# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
#
# The following comments describe capnames so ancient that I believe no
# software uses them any longer. Some of these have to go because they
@@ -851,9 +851,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# comma-separated list of capabilities for which there are corresponding keys.
# The `kn' code is accepted but ignored.
#
-# The `ma' capability seems to have been designed to map between the rogue(2)
-# motion keys (including jkhl) and characters emitted by arrow keys on some
-# primitive pre-ANSI terminals. It's so obsolete it's fossilized...
+# The `ma' capability was a 4.0BSD feature used by vi version 2.
+# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh.
+# Besides being obsolete, that interpretation conflicts with max_attributes.
#
# Here is a description of memory_lock_above and memory_unlock:
# "You can 'freeze' data on the screen by turning on Memory Lock in a line of
@@ -879,7 +879,7 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I
# vertical_tab_delay OTdV num dV - - -B--- padding required for ^V
number_of_function_keys OTkn num kn - - -B-G- count of function keys
other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps
-arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys
+arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2
# memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line
# memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line
has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I
@@ -895,7 +895,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# University of Waterloo termcap extensions (as described in mytinfo).
# The `xl' termcap file clashes with a terminfo name; this ambiguity cannot
# be resolved by a type check. The descriptions are guesses from what was
-# in the mytinfo tables.
+# in the mytinfo tables.
#
# key_interrupt_char OTki str ki - - ----- string set by interrupt key (?)
# key_kill_char OTkk str kk - - ----- string set by kill key (?)
@@ -944,7 +944,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# Gv 186 \272 M-: double vertical line
#
# The compiler will translate the single-line caps and discard the others
-# (via IGNORE aliases further down). We don't want to do normal pad
+# (via IGNORE aliases further down). We don't want to do normal pad
# translation on these, they're often single-character printable ASCII
# strings that happen to be numerics. There's awk code in parametrized.sh
# that detects the acs_ prefix and uses it to suppress pad translation.
@@ -966,303 +966,9 @@ acs_plus OTGC str GC - - ----- single intersection
#
# TERMINFO EXTENSION CAPABILITIES
#
-# This section is almost all comments. What it's mainly for is to describe
-# what capabilities need to be squeezed out to get down to the XSI Curses
-# standard set. They are flagged with K.
-#
-# HP extensions
-#
-# These extensions follow ptr_non (replacing everything after it) in HP
-# terminfo files. Except for memory_lock and memory_unlock, they are
-# functionally identical to SVr4 extensions, but they make the binary format
-# different. Grrr....
+# (see Caps-ncurses for the complete set of comments)
#
memory_lock meml str ml - - ----K lock memory above cursor
memory_unlock memu str mu - - ----K unlock memory
-#plab_norm pln str pn - - ----- program label #1 to show string #2
-#label_on smln str LO - - ----- turn on soft labels
-#label_off rmln str LF - - ----- turn off soft labels
-#key_f11 kf11 str F1 - - ----- F11 function key
-#key_f12 kf12 str F2 - - ----- F12 function key
-#key_f13 kf13 str F3 - - ----- F13 function key
-#key_f14 kf14 str F4 - - ----- F14 function key
-#key_f15 kf15 str F5 - - ----- F15 function key
-#key_f16 kf16 str F6 - - ----- F16 function key
-#key_f17 kf17 str F7 - - ----- F17 function key
-#key_f18 kf18 str F8 - - ----- F18 function key
-#key_f19 kf19 str F9 - - ----- F19 function key
-#key_f20 kf20 str FA - - ----- F20 function key
-#key_f21 kf21 str FB - - ----- F21 function key
-#key_f22 kf22 str FC - - ----- F22 function key
-#key_f23 kf23 str FD - - ----- F23 function key
-#key_f24 kf24 str FE - - ----- F24 function key
-#key_f25 kf25 str FF - - ----- F25 function key
-#key_f26 kf26 str FG - - ----- F26 function key
-#key_f27 kf27 str FH - - ----- F27 function key
-#key_f28 kf28 str FI - - ----- F28 function key
-#key_f29 kf29 str FJ - - ----- F29 function key
-#key_f30 kf30 str FK - - ----- F30 function key
-#key_f31 kf31 str FL - - ----- F31 function key
-#key_f32 kf32 str FM - - ----- F32 function key
-#key_f33 kf33 str FN - - ----- F33 function key
-#key_f34 kf34 str FO - - ----- F34 function key
-#key_f35 kf35 str FP - - ----- F35 function key
-#key_f36 kf36 str FQ - - ----- F36 function key
-#key_f37 kf37 str FR - - ----- F37 function key
-#key_f38 kf38 str FS - - ----- F38 function key
-#key_f39 kf39 str FT - - ----- F39 function key
-#key_f40 kf40 str FU - - ----- F40 function key
-#key_f41 kf41 str FV - - ----- F41 function key
-#key_f42 kf42 str FW - - ----- F42 function key
-#key_f43 kf43 str FX - - ----- F43 function key
-#key_f44 kf44 str FY - - ----- F44 function key
-#key_f45 kf45 str FZ - - ----- F45 function key
-#key_f46 kf46 str Fa - - ----- F46 function key
-#key_f47 kf47 str Fb - - ----- F47 function key
-#key_f48 kf48 str Fc - - ----- F48 function key
-#key_f49 kf49 str Fd - - ----- F49 function key
-#key_f50 kf50 str Fe - - ----- F50 function key
-#key_f51 kf51 str Ff - - ----- F51 function key
-#key_f52 kf52 str Fg - - ----- F52 function key
-#key_f53 kf53 str Fh - - ----- F53 function key
-#key_f54 kf54 str Fi - - ----- F54 function key
-#key_f55 kf55 str Fj - - ----- F55 function key
-#key_f56 kf56 str Fk - - ----- F56 function key
-#key_f57 kf57 str Fl - - ----- F57 function key
-#key_f58 kf58 str Fm - - ----- F58 function key
-#key_f59 kf59 str Fn - - ----- F59 function key
-#key_f60 kf60 str Fo - - ----- F60 function key
-#key_f61 kf61 str Fp - - ----- F61 function key
-#key_f62 kf62 str Fq - - ----- F62 function key
-#key_f63 kf63 str Fr - - ----- F63 function key
-#
-# IBM extensions
-#
-# These extensions follow ptr_non (replacing everything after it) in IBM
-# terminfo files.
-#
-# The places in the box[12] capabilities correspond to acsc characters, here is
-# the mapping:
-#
-# box1[0] = ACS_ULCORNER
-# box1[1] = ACS_HLINE
-# box1[2] = ACS_URCORNER
-# box1[3] = ACS_VLINE
-# box1[4] = ACS_LRCORNER
-# box1[5] = ACS_LLCORNER
-# box1[6] = ACS_TTEE
-# box1[7] = ACS_RTEE
-# box1[8] = ACS_BTEE
-# box1[9] = ACS_LTEE
-# box1[10] = ACS_PLUS
-#
-# The box2 characters are the double-line versions of these forms graphics.
-#
-#box_chars_1 box1 str bx - - ----K box characters primary set
-#box_chars_2 box2 str by - - ----K box characters secondary set
-#box_attr_1 batt1 str Bx - - ----K attributes for box1
-#box_attr_2 batt2 str By - - ----K attributes for box2
-#color_bg_0 colb0 str d0 - - ----K background color 0
-#color_bg_1 colb1 str d1 - - ----K background color 1
-#color_bg_2 colb2 str d2 - - ----K background color 2
-#color_bg_3 colb3 str d3 - - ----K background color 3
-#color_bg_4 colb4 str d4 - - ----K background color 4
-#color_bg_5 colb5 str d5 - - ----K background color 5
-#color_bg_6 colb6 str d6 - - ----K background color 6
-#color_bg_7 colb7 str d7 - - ----K background color 7
-#color_fg_0 colf0 str c0 - - ----K foreground color 0
-#color_fg_1 colf1 str c1 - - ----K foreground color 1
-#color_fg_2 colf2 str c2 - - ----K foreground color 2
-#color_fg_3 colf3 str c3 - - ----K foreground color 3
-#color_fg_4 colf4 str c4 - - ----K foreground color 4
-#color_fg_5 colf5 str c5 - - ----K foreground color 5
-#color_fg_6 colf6 str c6 - - ----K foreground color 6
-#color_fg_7 colf7 str c7 - - ----K foreground color 7
-#font_0 font0 str f0 - - ----- select font 0
-#font_1 font1 str f1 - - ----- select font 1
-#font_2 font2 str f2 - - ----- select font 2
-#font_3 font3 str f3 - - ----- select font 3
-#font_4 font4 str f4 - - ----K select font 4
-#font_5 font5 str f5 - - ----K select font 5
-#font_6 font6 str f6 - - ----K select font 6
-#font_7 font7 str f7 - - ----K select font 7
-#key_back_tab kbtab str k0 - - ----- backtab key
-#key_do kdo str ki - - ----K do request key
-#key_command kcmd str kd - - ----K command-request key
-#key_command_pane kcpn str kW - - ----K command-pane key
-#key_end kend str kw - - ----- end key
-#key_help khlp str kq - - ----- help key
-#key_newline knl str nl - - ----K newline key
-#key_next_pane knpn str kv - - ----K next-pane key
-#key_prev_cmd kppn str kp - - ----K previous-command key
-#key_prev_pane kppn str kV - - ----K previous-pane key
-#key_quit kquit str kQ - - ----K quit key
-#key_select ksel str kU - - ----- select key
-#key_scroll_left kscl str kz - - ----K scroll left
-#key_scroll_right kscr str kZ - - ----K scroll right
-#key_tab ktab str ko - - ----K tab key
-#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input
-#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output
-#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input
-#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output
-#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input
-#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output
-#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input
-#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output
-#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input
-#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output
-#appl_defined_str apstr str za - - ----K application-defined string
-# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in
-# the IBM manual pages, so the cap name strings are guesses. The terminfo
-# names are almost certainly right, the termcap ones almost certainly wrong.
-#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input
-#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output
-#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input
-#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output
-#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input
-#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output
-#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input
-#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output
-# Undocumented capabilities end here
-#key_sf1 ksf1 str S1 - - ----K special function key 1
-#key_sf2 ksf2 str S2 - - ----K special function key 2
-#key_sf3 ksf3 str S3 - - ----K special function key 3
-#key_sf4 ksf4 str S4 - - ----K special function key 4
-#key_sf5 ksf5 str S5 - - ----K special function key 5
-#key_sf6 ksf6 str S6 - - ----K special function key 6
-#key_sf7 ksf7 str S7 - - ----K special function key 7
-#key_sf8 ksf8 str S8 - - ----K special function key 8
-#key_sf9 ksf9 str S9 - - ----K special function key 9
-#key_sf10 ksf10 str SA - - ----K special function key 10
-# AIX version 3 documents different codes for F11, F12 and does not mention
-# F13-F64. AIX version 4 uses the same naming for F0-F63 as above.
-#key_f11 kf11 str k< - - ----- function key 11
-#key_f12 kf12 str k> - - ----- function key 12
-# Undocumented capabilities end here.
-#key_action kact str kJ - - ----K sent by action key
-# The IBM docs say these capabilities are for table-drawing, and are
-# valid only for aixterm descriptions.
-#enter_topline_mode topl str tp - - ----K start top-line mode
-#enter_bottom_mode btml str bm - - ----K start bottom-line mode
-#enter_rvert_mode rvert str rv - - ----K start right-vertical mode
-#enter_lvert_mode lvert str lv - - ----K start left-vertical mode
-#
-#############################################################################
-#
-# ALIAS DECLARATIONS
-#
-# Here we set up aliases for translating extensions into standard terminfo.
-#
-#---------------------------------- Termcap aliases -------------------------
-#
-# BSD aliases:
-#
-# This is a common error in many termcap files. We'll get notified during
-# translation when this (or any other alias) fires.
-#
-capalias sb sr BSD scroll text down
-#
-# AT&T extensions:
-#
-# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
-# nonstandard capabilities. Its signature is the KM capability, used to name
-# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
-# set. Comments in the original, and a little cross-checking with other AT&T
-# documentation, seem to establish the following mappings:
-#
-capalias BO mr AT&T enter_reverse_mode
-capalias CI vi AT&T cursor_invisible
-capalias CV ve AT&T cursor_normal
-capalias DS mh AT&T enter_dim_mode
-#capalias EE me AT&T exit_attribute_mode
-capalias FE LF AT&T label_on
-capalias FL LO AT&T label_off
-capalias XS mk AT&T enter_secure_mode
-#
-# We comment out EE because the conflicting XENIX EE is more common in
-# old entries.
-#
-# XENIX extensions:
-#
-# These are the ones we know how to translate directly:
-#
-capalias EE mh XENIX exit_attribute_mode
-capalias GE ae XENIX exit_alt_charset_mode
-capalias GS as XENIX enter_alt_charset_mode
-capalias CF vi XENIX cursor_invis
-capalias CO ve XENIX cursor_normal
-capalias EN @7 XENIX key_end
-capalias HM kh XENIX key_home
-capalias LD kL XENIX key_dl
-capalias PD kN XENIX key_npage
-capalias PN po XENIX prtr_off
-capalias PS pf XENIX prtr_on
-capalias PU kP XENIX key_ppage
-capalias RT @8 XENIX kent
-capalias UP ku XENIX kcuu1
-capalias G6 IGNORE XENIX double-ACS_ULCORNER
-capalias G7 IGNORE XENIX double-ACS_LLCORNER
-capalias G5 IGNORE XENIX double-ACS_URCORNER
-capalias G8 IGNORE XENIX double-ACS_LRCORNER
-capalias Gr IGNORE XENIX double-ACS_LTEE
-capalias Gr IGNORE XENIX double-ACS_RTEE
-capalias Gu IGNORE XENIX double-ACS_BTEE
-capalias Gd IGNORE XENIX double ACS_TTEE
-capalias Gh IGNORE XENIX double-ACS_HLINE
-capalias Gv IGNORE XENIX double-ACS_VLINE
-capalias Gc IGNORE XENIX double-ACS_PLUS
-capalias GG IGNORE XENIX acs-glitch
-#
-# IBM extensions:
-#
-capalias kq %1 IBM key_help
-#
-# Iris extensions:
-#
-capalias HS mh IRIS enter_dim_mode
-#
-# Tektronix extensions:
-#
-capalias KA k; Tek key_f10
-capalias KB F1 Tek key_f11
-capalias KC F2 Tek key_f12
-capalias KD F3 Tek key_f13
-capalias KE F4 Tek key_f14
-capalias KF F5 Tek key_f15
-capalias BC Sb Tek set_background
-capalias FC Sf Tek set_foreground
-#
-# There are also the following:
-#
-# XENIX XENIX variable name name clash with terminfo?
-# ----- ------------------- -------------------------
-# CL key_char_left
-# CR key_char_right
-# CW key_change_window
-# HP ??
-# LF key_linefeed label_off
-# NU key_next_unlocked_cell
-# PL ??
-# PR ??
-# RC key_recalc remove_clock
-# RF key_toggle_ref req_for_input
-# WL key_word_left
-# WR key_word_right
-#
-# If you know what any of the question-marked ones mean, please tell us.
-#
-#--------------------------------- Terminfo aliases ------------------------
-#
-# IBM extensions:
-#
-infoalias font0 s0ds IBM set0_des_seq
-infoalias font1 s1ds IBM set1_des_seq
-infoalias font2 s2ds IBM set2_des_seq
-infoalias font3 s3ds IBM set3_des_seq
-infoalias kbtab kcbt IBM key_backtab
-infoalias ksel kslt IBM key_select
-#
-# Some others are identical to SVr4/XPG4 capabilities, in particular:
-# kcmd, kend, khlp, and kf11...kf63.
#
#############################################################################
diff --git a/include/Caps.uwin b/include/Caps.uwin
index 31020cd0700a..aef7bb26a88b 100644
--- a/include/Caps.uwin
+++ b/include/Caps.uwin
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2001-2006,2010 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2016,2019 Free 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"), #
@@ -28,13 +28,13 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.uwin,v 1.5 2010/12/04 18:49:20 tom Exp $
+# $Id: Caps.uwin,v 1.11 2019/07/27 00:36:44 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with U/Win's terminfo.
#
# This table is used to generate initializers for tables that drive tic,
-# infocmp, and the library compilation code used to support the termcap
+# infocmp, and the library compilation code used to support the termcap
# compatibility hack. It is also used to generate the tabular portion of the
# terminfo(5) man page; lines beginning with `#%' are passed through to become
# the terminfo table.
@@ -97,7 +97,7 @@
# 3. List it in the standard table. You almost certainly do *not* want
# to do this -- the capabilities in that one, and their order, have been
# carefully chosen to be SVr4-binary-compatible when they're written out
-# as a terminfo object, and breaking this would be bad. It's up the ncurses
+# as a terminfo object, and breaking this would be bad. It's up to the ncurses
# library what to do with the terminfo data after it's read in.
#
# 4. List it in the aliases table with an IGNORE target field. If you
@@ -119,14 +119,14 @@
# You'll need to write custom code, probably in postprocess_termcap() or
# postprocess_terminfo(), to handle the translation.
#
-# CONTROLLING ENTRY LENGTH
+# CONTROLLING ENTRY LENGTH
#
# Notes on specific elisions made to fit translations within 1023 bytes:
#
# Machines with IBM PC-like keyboards want to be able to define the following
# keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap-
# only environments for End or Home-Down), key_dc, and key_ic. This is also
-# the set of keys the `joe' editor will be upset if it can't see. So don't
+# the set of keys the `joe' editor will be upset if it can't see. So don't
# trim those out of the set to be translated to termcap, or various users of
# the termcap file will become irate.
#
@@ -147,7 +147,7 @@
#
# It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap
# translations go back over critical if we do this. As 4.4BSD curses fades
-# into history and GNU termcap's application base shrinks towards being GNU
+# into history and GNU termcap's application base shrinks towards being GNU
# Emacs only, we'll probably elide out some BSD-only capabilities in order
# to buy space for non-essentials Emacs is still using. Capabilities high
# on that hit list: rc, sc, uc.
@@ -166,7 +166,7 @@
#%The \fBcapname\fR 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
+#%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 specification.
#%
@@ -227,7 +227,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
over_strike os bool os - - YBCG- terminal can overstrike
status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
-tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
+tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine)
transparent_underline ul bool ul - - YBCGE underline character overstrikes
xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required
@@ -650,7 +650,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# GNU termcap *does* include the following extended capability, Only the
# now-obsolete Ann Arbor terminals used it.
#
-# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
+# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
#
# The following comments describe capnames so ancient that I believe no
# software uses them any longer. Some of these have to go because they
@@ -667,9 +667,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# comma-separated list of capabilities for which there are corresponding keys.
# The `kn' code is accepted but ignored.
#
-# The `ma' capability seems to have been designed to map between the rogue(2)
-# motion keys (including jkhl) and characters emitted by arrow keys on some
-# primitive pre-ANSI terminals. It's so obsolete it's fossilized...
+# The `ma' capability was a 4.0BSD feature used by vi version 2.
+# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh.
+# Besides being obsolete, that interpretation conflicts with max_attributes.
#
# Here is a description of memory_lock_above and memory_unlock:
# "You can 'freeze' data on the screen by turning on Memory Lock in a line of
@@ -695,7 +695,7 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I
# vertical_tab_delay OTdV num dV - - -B--- padding required for ^V
number_of_function_keys OTkn num kn - - -B-G- count of function keys
other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps
-arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys
+arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2
# memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line
# memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line
has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I
@@ -711,7 +711,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# University of Waterloo termcap extensions (as described in mytinfo).
# The `xl' termcap file clashes with a terminfo name; this ambiguity cannot
# be resolved by a type check. The descriptions are guesses from what was
-# in the mytinfo tables.
+# in the mytinfo tables.
#
# key_interrupt_char OTki str ki - - ----- string set by interrupt key (?)
# key_kill_char OTkk str kk - - ----- string set by kill key (?)
@@ -760,7 +760,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# Gv 186 \272 M-: double vertical line
#
# The compiler will translate the single-line caps and discard the others
-# (via IGNORE aliases further down). We don't want to do normal pad
+# (via IGNORE aliases further down). We don't want to do normal pad
# translation on these, they're often single-character printable ASCII
# strings that happen to be numerics. There's awk code in parametrized.sh
# that detects the acs_ prefix and uses it to suppress pad translation.
@@ -782,303 +782,10 @@ acs_plus OTGC str GC - - ----- single intersection
#
# TERMINFO EXTENSION CAPABILITIES
#
-# This section is almost all comments. What it's mainly for is to describe
-# what capabilities need to be squeezed out to get down to the XSI Curses
-# standard set. They are flagged with K.
-#
-# HP extensions
-#
-# These extensions follow ptr_non (replacing everything after it) in HP
-# terminfo files. Except for memory_lock and memory_unlock, they are
-# functionally identical to SVr4 extensions, but they make the binary format
-# different. Grrr....
+# (see Caps-ncurses for the complete set of comments)
#
memory_lock meml str ml - - ----K lock memory above cursor
memory_unlock memu str mu - - ----K unlock memory
-#plab_norm pln str pn - - ----- program label #1 to show string #2
-#label_on smln str LO - - ----- turn on soft labels
-#label_off rmln str LF - - ----- turn off soft labels
-#key_f11 kf11 str F1 - - ----- F11 function key
-#key_f12 kf12 str F2 - - ----- F12 function key
-#key_f13 kf13 str F3 - - ----- F13 function key
-#key_f14 kf14 str F4 - - ----- F14 function key
-#key_f15 kf15 str F5 - - ----- F15 function key
-#key_f16 kf16 str F6 - - ----- F16 function key
-#key_f17 kf17 str F7 - - ----- F17 function key
-#key_f18 kf18 str F8 - - ----- F18 function key
-#key_f19 kf19 str F9 - - ----- F19 function key
-#key_f20 kf20 str FA - - ----- F20 function key
-#key_f21 kf21 str FB - - ----- F21 function key
-#key_f22 kf22 str FC - - ----- F22 function key
-#key_f23 kf23 str FD - - ----- F23 function key
-#key_f24 kf24 str FE - - ----- F24 function key
-#key_f25 kf25 str FF - - ----- F25 function key
-#key_f26 kf26 str FG - - ----- F26 function key
-#key_f27 kf27 str FH - - ----- F27 function key
-#key_f28 kf28 str FI - - ----- F28 function key
-#key_f29 kf29 str FJ - - ----- F29 function key
-#key_f30 kf30 str FK - - ----- F30 function key
-#key_f31 kf31 str FL - - ----- F31 function key
-#key_f32 kf32 str FM - - ----- F32 function key
-#key_f33 kf33 str FN - - ----- F33 function key
-#key_f34 kf34 str FO - - ----- F34 function key
-#key_f35 kf35 str FP - - ----- F35 function key
-#key_f36 kf36 str FQ - - ----- F36 function key
-#key_f37 kf37 str FR - - ----- F37 function key
-#key_f38 kf38 str FS - - ----- F38 function key
-#key_f39 kf39 str FT - - ----- F39 function key
-#key_f40 kf40 str FU - - ----- F40 function key
-#key_f41 kf41 str FV - - ----- F41 function key
-#key_f42 kf42 str FW - - ----- F42 function key
-#key_f43 kf43 str FX - - ----- F43 function key
-#key_f44 kf44 str FY - - ----- F44 function key
-#key_f45 kf45 str FZ - - ----- F45 function key
-#key_f46 kf46 str Fa - - ----- F46 function key
-#key_f47 kf47 str Fb - - ----- F47 function key
-#key_f48 kf48 str Fc - - ----- F48 function key
-#key_f49 kf49 str Fd - - ----- F49 function key
-#key_f50 kf50 str Fe - - ----- F50 function key
-#key_f51 kf51 str Ff - - ----- F51 function key
-#key_f52 kf52 str Fg - - ----- F52 function key
-#key_f53 kf53 str Fh - - ----- F53 function key
-#key_f54 kf54 str Fi - - ----- F54 function key
-#key_f55 kf55 str Fj - - ----- F55 function key
-#key_f56 kf56 str Fk - - ----- F56 function key
-#key_f57 kf57 str Fl - - ----- F57 function key
-#key_f58 kf58 str Fm - - ----- F58 function key
-#key_f59 kf59 str Fn - - ----- F59 function key
-#key_f60 kf60 str Fo - - ----- F60 function key
-#key_f61 kf61 str Fp - - ----- F61 function key
-#key_f62 kf62 str Fq - - ----- F62 function key
-#key_f63 kf63 str Fr - - ----- F63 function key
-#
-# IBM extensions
-#
-# These extensions follow ptr_non (replacing everything after it) in IBM
-# terminfo files.
-#
-# The places in the box[12] capabilities correspond to acsc characters, here is
-# the mapping:
-#
-# box1[0] = ACS_ULCORNER
-# box1[1] = ACS_HLINE
-# box1[2] = ACS_URCORNER
-# box1[3] = ACS_VLINE
-# box1[4] = ACS_LRCORNER
-# box1[5] = ACS_LLCORNER
-# box1[6] = ACS_TTEE
-# box1[7] = ACS_RTEE
-# box1[8] = ACS_BTEE
-# box1[9] = ACS_LTEE
-# box1[10] = ACS_PLUS
-#
-# The box2 characters are the double-line versions of these forms graphics.
-#
box_chars_1 box1 str bx - - ----K box characters primary set
-#box_chars_2 box2 str by - - ----K box characters secondary set
-#box_attr_1 batt1 str Bx - - ----K attributes for box1
-#box_attr_2 batt2 str By - - ----K attributes for box2
-#color_bg_0 colb0 str d0 - - ----K background color 0
-#color_bg_1 colb1 str d1 - - ----K background color 1
-#color_bg_2 colb2 str d2 - - ----K background color 2
-#color_bg_3 colb3 str d3 - - ----K background color 3
-#color_bg_4 colb4 str d4 - - ----K background color 4
-#color_bg_5 colb5 str d5 - - ----K background color 5
-#color_bg_6 colb6 str d6 - - ----K background color 6
-#color_bg_7 colb7 str d7 - - ----K background color 7
-#color_fg_0 colf0 str c0 - - ----K foreground color 0
-#color_fg_1 colf1 str c1 - - ----K foreground color 1
-#color_fg_2 colf2 str c2 - - ----K foreground color 2
-#color_fg_3 colf3 str c3 - - ----K foreground color 3
-#color_fg_4 colf4 str c4 - - ----K foreground color 4
-#color_fg_5 colf5 str c5 - - ----K foreground color 5
-#color_fg_6 colf6 str c6 - - ----K foreground color 6
-#color_fg_7 colf7 str c7 - - ----K foreground color 7
-#font_0 font0 str f0 - - ----- select font 0
-#font_1 font1 str f1 - - ----- select font 1
-#font_2 font2 str f2 - - ----- select font 2
-#font_3 font3 str f3 - - ----- select font 3
-#font_4 font4 str f4 - - ----K select font 4
-#font_5 font5 str f5 - - ----K select font 5
-#font_6 font6 str f6 - - ----K select font 6
-#font_7 font7 str f7 - - ----K select font 7
-#key_back_tab kbtab str k0 - - ----- backtab key
-#key_do kdo str ki - - ----K do request key
-#key_command kcmd str kd - - ----K command-request key
-#key_command_pane kcpn str kW - - ----K command-pane key
-#key_end kend str kw - - ----- end key
-#key_help khlp str kq - - ----- help key
-#key_newline knl str nl - - ----K newline key
-#key_next_pane knpn str kv - - ----K next-pane key
-#key_prev_cmd kppn str kp - - ----K previous-command key
-#key_prev_pane kppn str kV - - ----K previous-pane key
-#key_quit kquit str kQ - - ----K quit key
-#key_select ksel str kU - - ----- select key
-#key_scroll_left kscl str kz - - ----K scroll left
-#key_scroll_right kscr str kZ - - ----K scroll right
-#key_tab ktab str ko - - ----K tab key
-#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input
-#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output
-#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input
-#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output
-#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input
-#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output
-#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input
-#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output
-#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input
-#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output
-#appl_defined_str apstr str za - - ----K application-defined string
-# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in
-# the IBM manual pages, so the cap name strings are guesses. The terminfo
-# names are almost certainly right, the termcap ones almost certainly wrong.
-#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input
-#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output
-#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input
-#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output
-#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input
-#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output
-#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input
-#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output
-# Undocumented capabilities end here
-#key_sf1 ksf1 str S1 - - ----K special function key 1
-#key_sf2 ksf2 str S2 - - ----K special function key 2
-#key_sf3 ksf3 str S3 - - ----K special function key 3
-#key_sf4 ksf4 str S4 - - ----K special function key 4
-#key_sf5 ksf5 str S5 - - ----K special function key 5
-#key_sf6 ksf6 str S6 - - ----K special function key 6
-#key_sf7 ksf7 str S7 - - ----K special function key 7
-#key_sf8 ksf8 str S8 - - ----K special function key 8
-#key_sf9 ksf9 str S9 - - ----K special function key 9
-#key_sf10 ksf10 str SA - - ----K special function key 10
-# AIX version 3 documents different codes for F11, F12 and does not mention
-# F13-F64. AIX version 4 uses the same naming for F0-F63 as above.
-#key_f11 kf11 str k< - - ----- function key 11
-#key_f12 kf12 str k> - - ----- function key 12
-# Undocumented capabilities end here.
-#key_action kact str kJ - - ----K sent by action key
-# The IBM docs say these capabilities are for table-drawing, and are
-# valid only for aixterm descriptions.
-#enter_topline_mode topl str tp - - ----K start top-line mode
-#enter_bottom_mode btml str bm - - ----K start bottom-line mode
-#enter_rvert_mode rvert str rv - - ----K start right-vertical mode
-#enter_lvert_mode lvert str lv - - ----K start left-vertical mode
-#
-#############################################################################
-#
-# ALIAS DECLARATIONS
-#
-# Here we set up aliases for translating extensions into standard terminfo.
-#
-#---------------------------------- Termcap aliases -------------------------
-#
-# BSD aliases:
-#
-# This is a common error in many termcap files. We'll get notified during
-# translation when this (or any other alias) fires.
-#
-capalias sb sr BSD scroll text down
-#
-# AT&T extensions:
-#
-# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
-# nonstandard capabilities. Its signature is the KM capability, used to name
-# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
-# set. Comments in the original, and a little cross-checking with other AT&T
-# documentation, seem to establish the following mappings:
-#
-capalias BO mr AT&T enter_reverse_mode
-capalias CI vi AT&T cursor_invisible
-capalias CV ve AT&T cursor_normal
-capalias DS mh AT&T enter_dim_mode
-#capalias EE me AT&T exit_attribute_mode
-capalias FE LF AT&T label_on
-capalias FL LO AT&T label_off
-capalias XS mk AT&T enter_secure_mode
-#
-# We comment out EE because the conflicting XENIX EE is more common in
-# old entries.
-#
-# XENIX extensions:
-#
-# These are the ones we know how to translate directly:
-#
-capalias EE mh XENIX exit_attribute_mode
-capalias GE ae XENIX exit_alt_charset_mode
-capalias GS as XENIX enter_alt_charset_mode
-capalias CF vi XENIX cursor_invis
-capalias CO ve XENIX cursor_normal
-capalias EN @7 XENIX key_end
-capalias HM kh XENIX key_home
-capalias LD kL XENIX key_dl
-capalias PD kN XENIX key_npage
-capalias PN po XENIX prtr_off
-capalias PS pf XENIX prtr_on
-capalias PU kP XENIX key_ppage
-capalias RT @8 XENIX kent
-capalias UP ku XENIX kcuu1
-capalias G6 IGNORE XENIX double-ACS_ULCORNER
-capalias G7 IGNORE XENIX double-ACS_LLCORNER
-capalias G5 IGNORE XENIX double-ACS_URCORNER
-capalias G8 IGNORE XENIX double-ACS_LRCORNER
-capalias Gr IGNORE XENIX double-ACS_LTEE
-capalias Gr IGNORE XENIX double-ACS_RTEE
-capalias Gu IGNORE XENIX double-ACS_BTEE
-capalias Gd IGNORE XENIX double ACS_TTEE
-capalias Gh IGNORE XENIX double-ACS_HLINE
-capalias Gv IGNORE XENIX double-ACS_VLINE
-capalias Gc IGNORE XENIX double-ACS_PLUS
-capalias GG IGNORE XENIX acs-glitch
-#
-# IBM extensions:
-#
-capalias kq %1 IBM key_help
-#
-# Iris extensions:
-#
-capalias HS mh IRIS enter_dim_mode
-#
-# Tektronix extensions:
-#
-capalias KA k; Tek key_f10
-capalias KB F1 Tek key_f11
-capalias KC F2 Tek key_f12
-capalias KD F3 Tek key_f13
-capalias KE F4 Tek key_f14
-capalias KF F5 Tek key_f15
-capalias BC Sb Tek set_background
-capalias FC Sf Tek set_foreground
-#
-# There are also the following:
-#
-# XENIX XENIX variable name name clash with terminfo?
-# ----- ------------------- -------------------------
-# CL key_char_left
-# CR key_char_right
-# CW key_change_window
-# HP ??
-# LF key_linefeed label_off
-# NU key_next_unlocked_cell
-# PL ??
-# PR ??
-# RC key_recalc remove_clock
-# RF key_toggle_ref req_for_input
-# WL key_word_left
-# WR key_word_right
-#
-# If you know what any of the question-marked ones mean, please tell us.
-#
-#--------------------------------- Terminfo aliases ------------------------
-#
-# IBM extensions:
-#
-infoalias font0 s0ds IBM set0_des_seq
-infoalias font1 s1ds IBM set1_des_seq
-infoalias font2 s2ds IBM set2_des_seq
-infoalias font3 s3ds IBM set3_des_seq
-infoalias kbtab kcbt IBM key_backtab
-infoalias ksel kslt IBM key_select
-#
-# Some others are identical to SVr4/XPG4 capabilities, in particular:
-# kcmd, kend, khlp, and kf11...kf63.
#
#############################################################################
diff --git a/include/MKhashsize.sh b/include/MKhashsize.sh
index 11b3111aff92..b311137ee4ec 100755
--- a/include/MKhashsize.sh
+++ b/include/MKhashsize.sh
@@ -1,6 +1,6 @@
#!/bin/sh
##############################################################################
-# Copyright (c) 1998,2006 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2006,2019 Free 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"), #
@@ -26,7 +26,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: MKhashsize.sh,v 1.7 2006/10/22 00:45:39 tom Exp $
+# $Id: MKhashsize.sh,v 1.8 2019/04/06 22:53:17 tom Exp $
#
# MKhashsize.sh --- generate size include for hash functions
#
@@ -34,8 +34,8 @@ echo "/*"
echo " * hashsize.h -- hash and token table constants"
echo " */"
-CAPS="${1-Caps}"
-TABSIZE=`grep -v '^[ #]' $CAPS | grep -v "^$" | grep -v "^capalias"| grep -v "^infoalias" | wc -l`
+test $# = 0 && set Caps
+TABSIZE=`cat "$@" | grep -v '^[ #]' | grep -v "^$" | grep -v "^capalias"| grep -v "^infoalias" | grep -v "^userdef" | grep -v "^used_by" | wc -l`
echo ""
echo "#define CAPTABSIZE ${TABSIZE}"
diff --git a/include/MKkey_defs.sh b/include/MKkey_defs.sh
index 45a06d032771..6a173f5afb4f 100755
--- a/include/MKkey_defs.sh
+++ b/include/MKkey_defs.sh
@@ -1,7 +1,7 @@
#! /bin/sh
-# $Id: MKkey_defs.sh,v 1.15 2013/03/09 16:32:01 tom Exp $
+# $Id: MKkey_defs.sh,v 1.18 2019/04/06 23:38:16 tom Exp $
##############################################################################
-# Copyright (c) 2001-2003,2013 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2017,2019 Free 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"), #
@@ -35,25 +35,26 @@
# Extract function-key definitions from the Caps file
#
: ${AWK-awk}
-DATA=${1-Caps}
+
+test $# = 0 && set Caps
data=data$$
pass1=pass1_$$
pass2=pass2_$$
pass3=pass3_$$
pass4=pass4_$$
-trap 'rm -f $data pass[1234]_$$' 0 1 2 5 15
+trap 'rm -f $data pass[1234]_$$' EXIT INT QUIT TERM HUP
# change repeated tabs (used for readability) to single tabs (needed to make
# awk see the right field alignment of the corresponding columns):
-if sort -k 6 $DATA >$data 2>/dev/null
+if sort -k 6 "$@" >$data 2>/dev/null
then
# POSIX
- sed -e 's/[ ][ ]*/ /g' < $DATA |sort -n -k 6 >$data
-elif sort -n +5 $DATA >$data 2>/dev/null
+ sed -e 's/[ ][ ]*/ /g' "$@" |sort -n -k 6 >$data
+elif sort -n +5 "$@" >$data 2>/dev/null
then
# SunOS (and SVr4, marked as obsolete but still recognized)
- sed -e 's/[ ][ ]*/ /g' < $DATA |sort -n +5 >$data
+ sed -e 's/[ ][ ]*/ /g' "$@" |sort -n +5 >$data
else
echo "Your sort utility is broken. Please install one that works." >&2
exit 1
@@ -66,11 +67,10 @@ key_event kv1 str V1 KEY_EVENT + ----- We were interrupted by an event
EOF
THIS=./`basename $0`
-PARM=./`basename $DATA`
cat <<EOF
/*
- * These definitions were generated by $THIS $PARM
+ * These definitions were generated by $THIS $*
*/
EOF
@@ -124,6 +124,8 @@ BEGIN {
/^#/ {next;}
/^capalias/ {next;}
/^infoalias/ {next;}
+/^used_by/ {next;}
+/^userdef/ {next;}
$5 != "-" && $6 != "-" {
if ($6 == "+") {
diff --git a/include/MKncurses_def.sh b/include/MKncurses_def.sh
index 4aac86554b55..1740bccb8c08 100755
--- a/include/MKncurses_def.sh
+++ b/include/MKncurses_def.sh
@@ -1,7 +1,7 @@
#! /bin/sh
-# $Id: MKncurses_def.sh,v 1.2 2003/10/25 16:19:46 tom Exp $
+# $Id: MKncurses_def.sh,v 1.3 2003/10/25 16:19:46 tom Exp $
##############################################################################
-# Copyright (c) 2000 Free Software Foundation, Inc. #
+# Copyright (c) 2000,2003 Free 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"), #
diff --git a/include/MKparametrized.sh b/include/MKparametrized.sh
index 2825c822ae25..4c99d00fa395 100755
--- a/include/MKparametrized.sh
+++ b/include/MKparametrized.sh
@@ -1,6 +1,6 @@
#!/bin/sh
##############################################################################
-# Copyright (c) 1998-2000,2006 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2017,2019 Free 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"), #
@@ -26,15 +26,18 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: MKparametrized.sh,v 1.6 2006/04/22 21:36:16 tom Exp $
+# $Id: MKparametrized.sh,v 1.9 2019/04/13 20:36:24 tom Exp $
#
# MKparametrized.sh -- generate indirection vectors for various sort methods
#
# The output of this script is C source for an array specifying whether
# termcap strings should undergo parameter and padding translation.
#
-CAPS="${1-Caps}"
+[ $# = 0 ] && set - Caps
+
cat <<EOF
+#ifndef PARAMETRIZED_H
+#define PARAMETRIZED_H 1
/*
* parametrized.h --- is a termcap capability parametrized?
*
@@ -52,11 +55,20 @@ EOF
# XENIX acs_* capabilities. Maybe someday we'll dedicate a flag field for
# this, that would be cleaner....
-${AWK-awk} <$CAPS '
-$3 != "str" {next;}
-$1 ~ /^acs_/ {print "-1,\t/* ", $2, " */"; count++; next;}
-$0 ~ /#[0-9]/ {print "1,\t/* ", $2, " */"; count++; next;}
- {print "0,\t/* ", $2, " */"; count++;}
-END {printf("} /* %d entries */;\n\n", count);}
+cat "$@" | ${AWK-awk} '
+
+/^#/ { next ; }
+/^capalias/ { next ; }
+/^infoalias/ { next ; }
+/^used_by/ { next ; }
+/^userdef/ { next ; }
+
+$3 != "str" {next;}
+$1 ~ /^acs_/ {print "-1,\t/* ", $2, " */"; count++; next;}
+$1 ~ /^label_format/ {print "-1,\t/* ", $2, " */"; count++; next;}
+$0 ~ /#[0-9]/ {print "1,\t/* ", $2, " */"; count++; next;}
+ {print "0,\t/* ", $2, " */"; count++;}
+END {printf("} /* %d entries */;\n\n", count);}
'
+echo "#endif /* PARAMETRIZED_H */"
diff --git a/include/MKterm.h.awk.in b/include/MKterm.h.awk.in
index 587ee5212388..c315e2e1a216 100644
--- a/include/MKterm.h.awk.in
+++ b/include/MKterm.h.awk.in
@@ -1,334 +1,390 @@
# vile:awkmode
-BEGIN {
- print "/****************************************************************************"
- print " * Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *"
- print " * *"
- print " * Permission is hereby granted, free of charge, to any person obtaining a *"
- print " * copy of this software and associated documentation files (the *"
- print " * \"Software\"), to deal in the Software without restriction, including *"
- print " * without limitation the rights to use, copy, modify, merge, publish, *"
- print " * distribute, distribute with modifications, sublicense, and/or sell *"
- print " * copies of the Software, and to permit persons to whom the Software is *"
- print " * furnished to do so, subject to the following conditions: *"
- print " * *"
- print " * The above copyright notice and this permission notice shall be included *"
- print " * in all copies or substantial portions of the Software. *"
- print " * *"
- print " * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS *"
- print " * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *"
- print " * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *"
- print " * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *"
- print " * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *"
- print " * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *"
- print " * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *"
- print " * *"
- print " * Except as contained in this notice, the name(s) of the above copyright *"
- print " * holders shall not be used in advertising or otherwise to promote the *"
- print " * sale, use or other dealings in this Software without prior written *"
- print " * authorization. *"
- print " ****************************************************************************/"
- print ""
- print "/****************************************************************************/"
- print "/* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 */"
- print "/* and: Eric S. Raymond <esr@snark.thyrsus.com> */"
- print "/* and: Thomas E. Dickey 1995-on */"
- print "/****************************************************************************/"
- print ""
- print "/* $Id: MKterm.h.awk.in,v 1.62 2013/08/17 19:21:56 tom Exp $ */"
- print ""
- print "/*"
- print "** term.h -- Definition of struct term"
- print "*/"
- print ""
- print "#ifndef NCURSES_TERM_H_incl"
- print "#define NCURSES_TERM_H_incl 1"
- print ""
- print "#undef NCURSES_VERSION"
- print "#define NCURSES_VERSION \"@NCURSES_MAJOR@.@NCURSES_MINOR@\""
- print ""
- print "#include <ncurses_dll.h>"
- print ""
- print "#ifdef __cplusplus"
- print "extern \"C\" {"
- print "#endif"
- print ""
- print "/* Make this file self-contained by providing defaults for the HAVE_TERMIO[S]_H"
- print " * definition (based on the system for which this was configured)."
- print " */"
- print ""
- print "#undef NCURSES_CONST"
- print "#define NCURSES_CONST @NCURSES_CONST@"
- print ""
- print "#undef NCURSES_SBOOL"
- print "#define NCURSES_SBOOL @NCURSES_SBOOL@"
- print ""
- print "#undef NCURSES_USE_DATABASE"
- print "#define NCURSES_USE_DATABASE @NCURSES_USE_DATABASE@"
- print ""
- print "#undef NCURSES_USE_TERMCAP"
- print "#define NCURSES_USE_TERMCAP @NCURSES_USE_TERMCAP@"
- print ""
- print "#undef NCURSES_XNAMES"
- print "#define NCURSES_XNAMES @NCURSES_XNAMES@"
- print ""
- print "/* We will use these symbols to hide differences between"
- print " * termios/termio/sgttyb interfaces."
- print " */"
- print "#undef TTY"
- print "#undef SET_TTY"
- print "#undef GET_TTY"
- print ""
- print "/* Assume POSIX termio if we have the header and function */"
- print "/* #if HAVE_TERMIOS_H && HAVE_TCGETATTR */"
- print "#if @HAVE_TERMIOS_H@ && @HAVE_TCGETATTR@"
- print ""
- print "#undef TERMIOS"
- print "#define TERMIOS 1"
- print ""
- print "#include <termios.h>"
- print "#define TTY struct termios"
- print ""
- print "#else /* !HAVE_TERMIOS_H */"
- print ""
- print "/* #if HAVE_TERMIO_H */"
- print "#if @HAVE_TERMIO_H@"
- print ""
- print "#undef TERMIOS"
- print "#define TERMIOS 1"
- print ""
- print "#include <termio.h>"
- print "#define TTY struct termio"
- print ""
- print "#else /* !HAVE_TERMIO_H */"
- print ""
- print "#if __MINGW32__"
- print "# include <ncurses_mingw.h>"
- print "# define TTY struct termios"
- print "#else"
- print "#undef TERMIOS"
- print "#include <sgtty.h>"
- print "#include <sys/ioctl.h>"
- print "#define TTY struct sgttyb"
- print "#endif /* MINGW32 */"
- print "#endif /* HAVE_TERMIO_H */"
- print ""
- print "#endif /* HAVE_TERMIOS_H */"
- print ""
- print "#ifdef TERMIOS"
- print "#define GET_TTY(fd, buf) tcgetattr(fd, buf)"
- print "#define SET_TTY(fd, buf) tcsetattr(fd, TCSADRAIN, buf)"
- print "#else"
- print "#define GET_TTY(fd, buf) gtty(fd, buf)"
- print "#define SET_TTY(fd, buf) stty(fd, buf)"
- print "#endif"
- print ""
- print "#define NAMESIZE 256"
- print ""
- print "#define CUR cur_term->type."
- print ""
- }
+function declare_termtype(number,suffix) {
+ printf "typedef struct termtype%s { /* in-core form of terminfo data */\n", suffix;
+ print " char *term_names; /* str_table offset of term names */"
+ print " char *str_table; /* pointer to string table */"
+ print " NCURSES_SBOOL *Booleans; /* array of boolean values */"
+ printf " %-5s *Numbers; /* array of integer values */\n", number;
+ print " char **Strings; /* array of string offsets */"
+ print ""
+ print "#if NCURSES_XNAMES"
+ print " char *ext_str_table; /* pointer to extended string table */"
+ print " char **ext_Names; /* corresponding names */"
+ print ""
+ print " unsigned short num_Booleans;/* count total Booleans */";
+ print " unsigned short num_Numbers; /* count total Numbers */";
+ print " unsigned short num_Strings; /* count total Strings */";
+ print ""
+ print " unsigned short ext_Booleans;/* count extensions to Booleans */";
+ print " unsigned short ext_Numbers; /* count extensions to Numbers */";
+ print " unsigned short ext_Strings; /* count extensions to Strings */";
+ print "#endif /* NCURSES_XNAMES */"
+ print ""
+ printf "} TERMTYPE%s;\n", suffix;
+}
+BEGIN {
+ lcurl = "{";
+ rcurl = "}";
+ print "/****************************************************************************"
+ print " * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *"
+ print " * *"
+ print " * Permission is hereby granted, free of charge, to any person obtaining a *"
+ print " * copy of this software and associated documentation files (the *"
+ print " * \"Software\"), to deal in the Software without restriction, including *"
+ print " * without limitation the rights to use, copy, modify, merge, publish, *"
+ print " * distribute, distribute with modifications, sublicense, and/or sell *"
+ print " * copies of the Software, and to permit persons to whom the Software is *"
+ print " * furnished to do so, subject to the following conditions: *"
+ print " * *"
+ print " * The above copyright notice and this permission notice shall be included *"
+ print " * in all copies or substantial portions of the Software. *"
+ print " * *"
+ print " * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS *"
+ print " * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *"
+ print " * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *"
+ print " * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *"
+ print " * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *"
+ print " * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *"
+ print " * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *"
+ print " * *"
+ print " * Except as contained in this notice, the name(s) of the above copyright *"
+ print " * holders shall not be used in advertising or otherwise to promote the *"
+ print " * sale, use or other dealings in this Software without prior written *"
+ print " * authorization. *"
+ print " ****************************************************************************/"
+ print ""
+ print "/****************************************************************************/"
+ print "/* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 */"
+ print "/* and: Eric S. Raymond <esr@snark.thyrsus.com> */"
+ print "/* and: Thomas E. Dickey 1995-on */"
+ print "/****************************************************************************/"
+ print ""
+ print "/* $Id: MKterm.h.awk.in,v 1.73 2019/12/21 18:29:09 tom Exp $ */"
+ print ""
+ print "/*"
+ print "** term.h -- Definition of struct term"
+ print "*/"
+ print ""
+ print "#ifndef NCURSES_TERM_H_incl"
+ print "#define NCURSES_TERM_H_incl 1"
+ print ""
+ print "#undef NCURSES_VERSION"
+ print "#define NCURSES_VERSION \"@NCURSES_MAJOR@.@NCURSES_MINOR@\""
+ print ""
+ print "#include <ncurses_dll.h>"
+ print ""
+ print "#ifdef __cplusplus"
+ printf "extern \"C\" %s\n", lcurl;
+ print "#endif"
+ print ""
+ print "/* Make this file self-contained by providing defaults for the HAVE_TERMIO[S]_H"
+ print " * definition (based on the system for which this was configured)."
+ print " */"
+ print ""
+ print "#undef NCURSES_CONST"
+ print "#define NCURSES_CONST @NCURSES_CONST@"
+ print ""
+ print "#undef NCURSES_SBOOL"
+ print "#define NCURSES_SBOOL @NCURSES_SBOOL@"
+ print ""
+ print "#undef NCURSES_USE_DATABASE"
+ print "#define NCURSES_USE_DATABASE @NCURSES_USE_DATABASE@"
+ print ""
+ print "#undef NCURSES_USE_TERMCAP"
+ print "#define NCURSES_USE_TERMCAP @NCURSES_USE_TERMCAP@"
+ print ""
+ print "#undef NCURSES_XNAMES"
+ print "#define NCURSES_XNAMES @NCURSES_XNAMES@"
+ print ""
+ print "/* We will use these symbols to hide differences between"
+ print " * termios/termio/sgttyb interfaces."
+ print " */"
+ print "#undef TTY"
+ print "#undef SET_TTY"
+ print "#undef GET_TTY"
+ print ""
+ print "/* Assume POSIX termio if we have the header and function */"
+ print "/* #if HAVE_TERMIOS_H && HAVE_TCGETATTR */"
+ print "#if @HAVE_TERMIOS_H@ && @HAVE_TCGETATTR@"
+ print ""
+ print "#undef TERMIOS"
+ print "#define TERMIOS 1"
+ print ""
+ print "#include <termios.h>"
+ print "#define TTY struct termios"
+ print ""
+ print "#else /* !HAVE_TERMIOS_H */"
+ print ""
+ print "/* #if HAVE_TERMIO_H */"
+ print "#if @HAVE_TERMIO_H@"
+ print ""
+ print "#undef TERMIOS"
+ print "#define TERMIOS 1"
+ print ""
+ print "#include <termio.h>"
+ print "#define TTY struct termio"
+ print ""
+ print "#else /* !HAVE_TERMIO_H */"
+ print ""
+ print "#if _WIN32"
+ print "# include <ncurses_mingw.h>"
+ print "# define TTY struct termios"
+ print "#else"
+ print "#undef TERMIOS"
+ print "#include <sgtty.h>"
+ print "#include <sys/ioctl.h>"
+ print "#define TTY struct sgttyb"
+ print "#endif /* MINGW32 */"
+ print "#endif /* HAVE_TERMIO_H */"
+ print ""
+ print "#endif /* HAVE_TERMIOS_H */"
+ print ""
+ print "#ifdef TERMIOS"
+ print "#define GET_TTY(fd, buf) tcgetattr(fd, buf)"
+ print "#define SET_TTY(fd, buf) tcsetattr(fd, TCSADRAIN, buf)"
+ print "#else"
+ print "#define GET_TTY(fd, buf) gtty(fd, buf)"
+ print "#define SET_TTY(fd, buf) stty(fd, buf)"
+ print "#endif"
+ print ""
+ print "#ifndef GCC_NORETURN"
+ print "#define GCC_NORETURN /* nothing */"
+ print "#endif"
+ print ""
+ print "#define NAMESIZE 256"
+ print ""
+ print "/* The cast works because TERMTYPE is the first data in TERMINAL */"
+ print "#define CUR ((TERMTYPE *)(cur_term))->"
+ print ""
+}
-$2 == "%%-STOP-HERE-%%" {
- print ""
- printf "#define BOOLWRITE %d\n", BoolCount
- printf "#define NUMWRITE %d\n", NumberCount
- printf "#define STRWRITE %d\n", StringCount
- print ""
- print "/* older synonyms for some capabilities */"
- print "#define beehive_glitch no_esc_ctlc"
- print "#define teleray_glitch dest_tabs_magic_smso"
- print "#define micro_char_size micro_col_size"
- print ""
- print "#ifdef __INTERNAL_CAPS_VISIBLE"
- }
+$2 == "%%-STOP-HERE-%%" {
+ print ""
+ printf "#define BOOLWRITE %d\n", BoolCount
+ printf "#define NUMWRITE %d\n", NumberCount
+ printf "#define STRWRITE %d\n", StringCount
+ print ""
+ print "/* older synonyms for some capabilities */"
+ print "#define beehive_glitch no_esc_ctlc"
+ print "#define teleray_glitch dest_tabs_magic_smso"
+ print ""
+ print "/* HPUX-11 uses this name rather than the standard one */"
+ print "#ifndef micro_char_size"
+ print "#define micro_char_size micro_col_size"
+ print "#endif"
+ print ""
+ print "#ifdef __INTERNAL_CAPS_VISIBLE"
+}
-/^#/ {next;}
+/^#/ { next; }
-$1 == "acs_chars" {acsindex = StringCount}
+/^used_by/ { next ; }
+/^userdef/ { next ; }
-$3 == "bool" {
- printf "#define %-30s CUR Booleans[%d]\n", $1, BoolCount++
- }
+$1 == "acs_chars" {
+ acsindex = StringCount;
+}
-$3 == "num" {
- printf "#define %-30s CUR Numbers[%d]\n", $1, NumberCount++
- }
+$3 == "bool" {
+ printf "#define %-30s CUR Booleans[%d]\n", $1, BoolCount++
+}
-$3 == "str" {
- printf "#define %-30s CUR Strings[%d]\n", $1, StringCount++
- }
+$3 == "num" {
+ printf "#define %-30s CUR Numbers[%d]\n", $1, NumberCount++
+}
-END {
- print "#endif /* __INTERNAL_CAPS_VISIBLE */"
- print ""
- print ""
- print "/*"
- print " * Predefined terminfo array sizes"
- print " */"
- printf "#define BOOLCOUNT %d\n", BoolCount
- printf "#define NUMCOUNT %d\n", NumberCount
- printf "#define STRCOUNT %d\n", StringCount
- print ""
- print "/* 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 */"
- print " NCURSES_SBOOL *Booleans; /* array of boolean values */"
- print " short *Numbers; /* array of integer values */"
- print " char **Strings; /* array of string offsets */"
- print ""
- print "#if NCURSES_XNAMES"
- print " char *ext_str_table; /* pointer to extended string table */"
- print " char **ext_Names; /* corresponding names */"
- print ""
- print " unsigned short num_Booleans;/* count total Booleans */"
- print " unsigned short num_Numbers; /* count total Numbers */"
- print " unsigned short num_Strings; /* count total Strings */"
- print ""
- print " unsigned short ext_Booleans;/* count extensions to Booleans */"
- print " unsigned short ext_Numbers; /* count extensions to Numbers */"
- print " unsigned short ext_Strings; /* count extensions to Strings */"
- print "#endif /* NCURSES_XNAMES */"
- print ""
- print "} TERMTYPE;"
- print ""
- print "typedef struct term { /* describe an actual terminal */"
- print " TERMTYPE type; /* terminal type description */"
- print " short Filedes; /* file description being written to */"
- print " TTY Ottyb, /* original state of the terminal */"
- print " Nttyb; /* current state of the terminal */"
- print " int _baudrate; /* used to compute padding */"
- print " char * _termname; /* used for termname() */"
- print "} TERMINAL;"
- print ""
- print "#if @BROKEN_LINKER@ && !@cf_cv_enable_reentrant@"
- print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;"
- print "#elif @cf_cv_enable_reentrant@"
- print "NCURSES_WRAPPED_VAR(TERMINAL *, cur_term);"
- print "#define cur_term NCURSES_PUBLIC_VAR(cur_term())"
- print "#else"
- print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;"
- print "#endif"
- print ""
- print "#if @BROKEN_LINKER@ || @cf_cv_enable_reentrant@"
- print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolnames);"
- print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolcodes);"
- print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolfnames);"
- print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numnames);"
- print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numcodes);"
- print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numfnames);"
- print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strnames);"
- print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strcodes);"
- print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strfnames);"
- print ""
- print "#define boolnames NCURSES_PUBLIC_VAR(boolnames())"
- print "#define boolcodes NCURSES_PUBLIC_VAR(boolcodes())"
- print "#define boolfnames NCURSES_PUBLIC_VAR(boolfnames())"
- print "#define numnames NCURSES_PUBLIC_VAR(numnames())"
- print "#define numcodes NCURSES_PUBLIC_VAR(numcodes())"
- print "#define numfnames NCURSES_PUBLIC_VAR(numfnames())"
- print "#define strnames NCURSES_PUBLIC_VAR(strnames())"
- print "#define strcodes NCURSES_PUBLIC_VAR(strcodes())"
- print "#define strfnames NCURSES_PUBLIC_VAR(strfnames())"
- print ""
- print "#else"
- print ""
- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[];"
- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[];"
- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[];"
- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[];"
- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[];"
- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[];"
- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[];"
- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[];"
- print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[];"
- print ""
- print "#endif"
- print ""
- print "/* internals */"
- print "extern NCURSES_EXPORT(int) _nc_set_tty_mode (TTY *buf);"
- print "extern NCURSES_EXPORT(int) _nc_get_tty_mode (TTY *buf);"
- print "extern NCURSES_EXPORT(int) _nc_read_entry (const char * const, char * const, TERMTYPE *const);"
- print "extern NCURSES_EXPORT(int) _nc_read_file_entry (const char *const, TERMTYPE *);"
- print "extern NCURSES_EXPORT(void) _nc_init_termtype (TERMTYPE *const);"
- print "extern NCURSES_EXPORT(int) _nc_read_termtype (TERMTYPE *, char *, int);"
- print "extern NCURSES_EXPORT(char *) _nc_first_name (const char *const);"
- print "extern NCURSES_EXPORT(int) _nc_name_match (const char *const, const char *const, const char *const);"
- print "extern NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *);"
- print ""
- print "/* entry points */"
- print "extern NCURSES_EXPORT(TERMINAL *) set_curterm (TERMINAL *);"
- print "extern NCURSES_EXPORT(int) del_curterm (TERMINAL *);"
- print ""
- print "/* miscellaneous entry points */"
- print "extern NCURSES_EXPORT(int) restartterm (NCURSES_CONST char *, int, int *);"
- print "extern NCURSES_EXPORT(int) setupterm (NCURSES_CONST char *,int,int *);"
- print ""
- print "/* terminfo entry points, also declared in curses.h */"
- print "#if !defined(__NCURSES_H)"
- print "extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *);"
- print "extern NCURSES_EXPORT_VAR(char) ttytype[];"
- print "extern NCURSES_EXPORT(int) putp (const char *);"
- print "extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *);"
- print "extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *);"
- print ""
- print "#if @NCURSES_TPARM_VARARGS@ /* NCURSES_TPARM_VARARGS */"
- print "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* special */"
- print "#else"
- print "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */"
- print "extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* special */"
- print "#endif"
- print ""
- print "extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */"
- print ""
- print "#endif /* __NCURSES_H */"
- print ""
- print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */"
- print "#if !defined(NCURSES_TERMCAP_H_incl)"
- print "extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **);"
- print "extern NCURSES_EXPORT(char *) tgoto (const char *, int, int);"
- print "extern NCURSES_EXPORT(int) tgetent (char *, const char *);"
- print "extern NCURSES_EXPORT(int) tgetflag (NCURSES_CONST char *);"
- print "extern NCURSES_EXPORT(int) tgetnum (NCURSES_CONST char *);"
- print "extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int));"
- print "#endif /* NCURSES_TERMCAP_H_incl */"
- print ""
- print "/*"
- print " * Include curses.h before term.h to enable these extensions."
- print " */"
- print "#if defined(NCURSES_SP_FUNCS) && (NCURSES_SP_FUNCS != 0)"
- print ""
- print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tigetstr) (SCREEN*, NCURSES_CONST char *);"
- print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(putp) (SCREEN*, const char *);"
- print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetflag) (SCREEN*, NCURSES_CONST char *);"
- print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetnum) (SCREEN*, NCURSES_CONST char *);"
- print ""
- print "#if @NCURSES_TPARM_VARARGS@ /* NCURSES_TPARM_VARARGS */"
- print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, NCURSES_CONST char *, ...); /* special */"
- print "#else"
- print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */"
- print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm_varargs) (SCREEN*, NCURSES_CONST char *, ...); /* special */"
- print "#endif"
- print ""
- print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */"
- print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgetstr) (SCREEN*, NCURSES_CONST char *, char **);"
- print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgoto) (SCREEN*, const char *, int, int);"
- print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetent) (SCREEN*, char *, const char *);"
- print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetflag) (SCREEN*, NCURSES_CONST char *);"
- print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetnum) (SCREEN*, NCURSES_CONST char *);"
- print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tputs) (SCREEN*, const char *, int, NCURSES_SP_OUTC);"
- print ""
- print "extern NCURSES_EXPORT(TERMINAL *) NCURSES_SP_NAME(set_curterm) (SCREEN*, TERMINAL *);"
- print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(del_curterm) (SCREEN*, TERMINAL *);"
- print ""
- print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(restartterm) (SCREEN*, NCURSES_CONST char *, int, int *);"
- print "#endif /* NCURSES_SP_FUNCS */"
- print ""
- print "#ifdef __cplusplus"
- print "}"
- print "#endif"
- print ""
- print "#endif /* NCURSES_TERM_H_incl */"
- }
+$3 == "str" {
+ printf "#define %-30s CUR Strings[%d]\n", $1, StringCount++
+}
+
+END {
+ print "#endif /* __INTERNAL_CAPS_VISIBLE */"
+ print ""
+ print ""
+ print "/*"
+ print " * Predefined terminfo array sizes"
+ print " */"
+ printf "#define BOOLCOUNT %d\n", BoolCount
+ printf "#define NUMCOUNT %d\n", NumberCount
+ printf "#define STRCOUNT %d\n", StringCount
+ print ""
+ print "/* used by code for comparing entries */"
+ print "#define acs_chars_index ", acsindex
+ print ""
+ declare_termtype("short","");
+ print ""
+ print "/*"
+ print " * The only reason these structures are visible is for read-only use."
+ print " * Programs which modify the data are not, never were, portable across"
+ print " * curses implementations."
+ print " */"
+ print "#ifdef NCURSES_INTERNALS"
+ print ""
+ if (@NCURSES_EXT_COLORS@) {
+ declare_termtype("int","2");
+ } else {
+ print "typedef TERMTYPE TERMTYPE2;"
+ }
+ print ""
+ print "typedef struct term { /* describe an actual terminal */"
+ print " TERMTYPE type; /* terminal type description */"
+ print " short Filedes; /* file description being written to */"
+ print " TTY Ottyb; /* original state of the terminal */"
+ print " TTY Nttyb; /* current state of the terminal */"
+ print " int _baudrate; /* used to compute padding */"
+ print " char * _termname; /* used for termname() */"
+ if (@NCURSES_EXT_COLORS@) {
+ print " TERMTYPE2 type2; /* extended terminal type description */"
+ }
+ print "} TERMINAL;"
+ print "#else"
+ print "typedef struct term TERMINAL;"
+ print "#endif /* NCURSES_INTERNALS */"
+ print ""
+ print ""
+ print "#if @BROKEN_LINKER@ && !@cf_cv_enable_reentrant@"
+ print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;"
+ print "#elif @cf_cv_enable_reentrant@"
+ print "NCURSES_WRAPPED_VAR(TERMINAL *, cur_term);"
+ print "#define cur_term NCURSES_PUBLIC_VAR(cur_term())"
+ print "#else"
+ print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;"
+ print "#endif"
+ print ""
+ print "#if @BROKEN_LINKER@ || @cf_cv_enable_reentrant@"
+ print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolnames);"
+ print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolcodes);"
+ print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolfnames);"
+ print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numnames);"
+ print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numcodes);"
+ print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numfnames);"
+ print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strnames);"
+ print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strcodes);"
+ print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strfnames);"
+ print ""
+ print "#define boolnames NCURSES_PUBLIC_VAR(boolnames())"
+ print "#define boolcodes NCURSES_PUBLIC_VAR(boolcodes())"
+ print "#define boolfnames NCURSES_PUBLIC_VAR(boolfnames())"
+ print "#define numnames NCURSES_PUBLIC_VAR(numnames())"
+ print "#define numcodes NCURSES_PUBLIC_VAR(numcodes())"
+ print "#define numfnames NCURSES_PUBLIC_VAR(numfnames())"
+ print "#define strnames NCURSES_PUBLIC_VAR(strnames())"
+ print "#define strcodes NCURSES_PUBLIC_VAR(strcodes())"
+ print "#define strfnames NCURSES_PUBLIC_VAR(strfnames())"
+ print ""
+ print "#else"
+ print ""
+ print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[];"
+ print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[];"
+ print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[];"
+ print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[];"
+ print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[];"
+ print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[];"
+ print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[];"
+ print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[];"
+ print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[];"
+ print ""
+ print "#endif"
+ print ""
+ print "/*"
+ print " * These entrypoints are used only by the ncurses utilities such as tic."
+ print " */"
+ print "#ifdef NCURSES_INTERNALS"
+ print ""
+ print "extern NCURSES_EXPORT(int) _nc_set_tty_mode (TTY *buf);"
+ print "extern NCURSES_EXPORT(int) _nc_read_entry2 (const char * const, char * const, TERMTYPE2 *const);"
+ print "extern NCURSES_EXPORT(int) _nc_read_file_entry (const char *const, TERMTYPE2 *);"
+ print "extern NCURSES_EXPORT(int) _nc_read_termtype (TERMTYPE2 *, char *, int);"
+ print "extern NCURSES_EXPORT(char *) _nc_first_name (const char *const);"
+ print "extern NCURSES_EXPORT(int) _nc_name_match (const char *const, const char *const, const char *const);"
+ print ""
+ print "#endif /* NCURSES_INTERNALS */"
+ print ""
+ print ""
+ print "/*"
+ print " * These entrypoints are used by tack 1.07."
+ print " */"
+ print "extern NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *);"
+ print "extern NCURSES_EXPORT(int) _nc_read_entry (const char * const, char * const, TERMTYPE *const);"
+ print ""
+ print "/*"
+ print " * Normal entry points"
+ print " */"
+ print "extern NCURSES_EXPORT(TERMINAL *) set_curterm (TERMINAL *);"
+ print "extern NCURSES_EXPORT(int) del_curterm (TERMINAL *);"
+ print ""
+ print "/* miscellaneous entry points */"
+ print "extern NCURSES_EXPORT(int) restartterm (NCURSES_CONST char *, int, int *);"
+ print "extern NCURSES_EXPORT(int) setupterm (const char *,int,int *);"
+ print ""
+ print "/* terminfo entry points, also declared in curses.h */"
+ print "#if !defined(__NCURSES_H)"
+ print "extern NCURSES_EXPORT(char *) tigetstr (const char *);"
+ print "extern NCURSES_EXPORT_VAR(char) ttytype[];"
+ print "extern NCURSES_EXPORT(int) putp (const char *);"
+ print "extern NCURSES_EXPORT(int) tigetflag (const char *);"
+ print "extern NCURSES_EXPORT(int) tigetnum (const char *);"
+ print ""
+ print "#if @NCURSES_TPARM_VARARGS@ /* NCURSES_TPARM_VARARGS */"
+ print "extern NCURSES_EXPORT(char *) tparm (const char *, ...); /* special */"
+ print "#else"
+ print "extern NCURSES_EXPORT(char *) tparm (const char *, long,long,long,long,long,long,long,long,long); /* special */"
+ print "extern NCURSES_EXPORT(char *) tparm_varargs (const char *, ...); /* special */"
+ print "#endif"
+ print ""
+ print "extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */"
+ print ""
+ print "#endif /* __NCURSES_H */"
+ print ""
+ print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */"
+ print "#if !defined(NCURSES_TERMCAP_H_incl)"
+ print "extern NCURSES_EXPORT(char *) tgetstr (const char *, char **);"
+ print "extern NCURSES_EXPORT(char *) tgoto (const char *, int, int);"
+ print "extern NCURSES_EXPORT(int) tgetent (char *, const char *);"
+ print "extern NCURSES_EXPORT(int) tgetflag (const char *);"
+ print "extern NCURSES_EXPORT(int) tgetnum (const char *);"
+ print "extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int));"
+ print "#endif /* NCURSES_TERMCAP_H_incl */"
+ print ""
+ print "/*"
+ print " * Include curses.h before term.h to enable these extensions."
+ print " */"
+ print "#if defined(NCURSES_SP_FUNCS) && (NCURSES_SP_FUNCS != 0)"
+ print ""
+ print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tigetstr) (SCREEN*, const char *);"
+ print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(putp) (SCREEN*, const char *);"
+ print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetflag) (SCREEN*, const char *);"
+ print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetnum) (SCREEN*, const char *);"
+ print ""
+ print "#if @NCURSES_TPARM_VARARGS@ /* NCURSES_TPARM_VARARGS */"
+ print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, const char *, ...); /* special */"
+ print "#else"
+ print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, const char *, long,long,long,long,long,long,long,long,long); /* special */"
+ print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm_varargs) (SCREEN*, const char *, ...); /* special */"
+ print "#endif"
+ print ""
+ print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */"
+ print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgetstr) (SCREEN*, const char *, char **);"
+ print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgoto) (SCREEN*, const char *, int, int);"
+ print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetent) (SCREEN*, char *, const char *);"
+ print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetflag) (SCREEN*, const char *);"
+ print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetnum) (SCREEN*, const char *);"
+ print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tputs) (SCREEN*, const char *, int, NCURSES_SP_OUTC);"
+ print ""
+ print "extern NCURSES_EXPORT(TERMINAL *) NCURSES_SP_NAME(set_curterm) (SCREEN*, TERMINAL *);"
+ print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(del_curterm) (SCREEN*, TERMINAL *);"
+ print ""
+ print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(restartterm) (SCREEN*, NCURSES_CONST char *, int, int *);"
+ print "#endif /* NCURSES_SP_FUNCS */"
+ print ""
+ print "/*"
+ print " * Debugging features."
+ print " */"
+ print "extern NCURSES_EXPORT(void) exit_terminfo(int) GCC_NORETURN;"
+ print ""
+ print "#ifdef __cplusplus"
+ printf "%s\n", rcurl;
+ print "#endif"
+ print ""
+ print "#endif /* NCURSES_TERM_H_incl */"
+}
diff --git a/include/Makefile.in b/include/Makefile.in
index 61f388461ef8..0faf7a89d9d0 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.41 2013/08/03 23:10:51 tom Exp $
+# $Id: Makefile.in,v 1.45 2019/03/03 01:41:21 tom Exp $
##############################################################################
-# Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2015,2019 Free 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"), #
@@ -39,7 +39,7 @@
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
@@ -66,6 +66,8 @@ VERSION = @cf_cv_rel_version@
# The "Caps" file specifies the terminfo database format, as well as the list
# of function keys.
TERMINFO_CAPS = $(srcdir)/@TERMINFO_CAPS@
+CAPLIST = $(TERMINFO_CAPS) \
+ $(srcdir)/Caps-ncurses
# These files are generated by the configure script
CONFIG_SRC = \
@@ -91,27 +93,30 @@ depend \
sources \
install :: $(AUTO_SRC)
-curses.h : $(TERMINFO_CAPS) \
+curses.h : $(CAPLIST) \
curses.head \
$(srcdir)/curses.tail \
$(srcdir)/MKkey_defs.sh
cat curses.head >$@
- AWK=$(AWK) sh $(srcdir)/MKkey_defs.sh $(TERMINFO_CAPS) >>$@
- sh -c 'if test "@NCURSES_CH_T@" = "cchar_t" ; then cat $(srcdir)/curses.wide >>$@ ; fi'
+ AWK=$(AWK) $(SHELL) $(srcdir)/MKkey_defs.sh $(CAPLIST) >>$@
+ $(SHELL) -c 'if test "@NCURSES_CH_T@" = "cchar_t" ; then cat $(srcdir)/curses.wide >>$@ ; fi'
cat $(srcdir)/curses.tail >>$@
-term.h: $(TERMINFO_CAPS) MKterm.h.awk
- $(AWK) -f MKterm.h.awk $(TERMINFO_CAPS) > $@
- sh $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@
+term.h: $(CAPLIST) \
+ MKterm.h.awk
+ $(AWK) -f MKterm.h.awk $(CAPLIST) > $@
+ $(SHELL) $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@
-hashsize.h: $(TERMINFO_CAPS) $(srcdir)/MKhashsize.sh
- sh $(srcdir)/MKhashsize.sh $(TERMINFO_CAPS) >$@
+hashsize.h: $(CAPLIST) \
+ $(srcdir)/MKhashsize.sh
+ $(SHELL) $(srcdir)/MKhashsize.sh $(CAPLIST) >$@
ncurses_def.h: $(srcdir)/ncurses_defs $(srcdir)/MKncurses_def.sh
- AWK=$(AWK) sh $(srcdir)/MKncurses_def.sh $(srcdir)/ncurses_defs >$@
+ AWK=$(AWK) $(SHELL) $(srcdir)/MKncurses_def.sh $(srcdir)/ncurses_defs >$@
-parametrized.h: $(TERMINFO_CAPS) $(srcdir)/MKparametrized.sh
- AWK=$(AWK) sh $(srcdir)/MKparametrized.sh $(TERMINFO_CAPS) >$@
+parametrized.h: $(CAPLIST) \
+ $(srcdir)/MKparametrized.sh
+ AWK=$(AWK) $(SHELL) $(srcdir)/MKparametrized.sh $(CAPLIST) >$@
# This is required by pthread.h on MinGW
config.h:
@@ -128,6 +133,7 @@ mostlyclean ::
clean :: mostlyclean
-rm -f $(AUTO_SRC)
+ -rm -rf *.dSYM
distclean :: clean
-rm -f Makefile $(CONFIG_SRC) config.h
diff --git a/include/curses.h.in b/include/curses.h.in
index 15c9f7f24375..743ff98c2bf1 100644
--- a/include/curses.h.in
+++ b/include/curses.h.in
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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 @@
* and: Thomas E. Dickey 1996-on *
****************************************************************************/
-/* $Id: curses.h.in,v 1.237 2014/02/01 22:08:12 tom Exp $ */
+/* $Id: curses.h.in,v 1.264 2019/03/23 23:06:46 tom Exp $ */
#ifndef __NCURSES_H
#define __NCURSES_H
@@ -59,6 +59,10 @@
*/
#include <ncurses_dll.h>
+#if @HAVE_STDINT_H@
+#include <stdint.h>
+#endif
+
/*
* User-definable tweak to disable the include of <stdbool.h>.
*/
@@ -70,12 +74,6 @@
* NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses
* configured using --disable-macros.
*/
-#ifdef NCURSES_NOMACROS
-#ifndef NCURSES_ATTR_T
-#define NCURSES_ATTR_T attr_t
-#endif
-#endif /* NCURSES_NOMACROS */
-
#ifndef NCURSES_ATTR_T
#define NCURSES_ATTR_T int
#endif
@@ -91,13 +89,13 @@
#define NCURSES_INLINE @NCURSES_INLINE@
/*
- * The internal type used for color values, and for color-pairs. The latter
+ * The standard type used for color values, and for color-pairs. The latter
* allows the curses library to enumerate the combinations of foreground and
* background colors used by an application, and is normally the product of the
* total foreground and background colors.
*
* X/Open uses "short" for both of these types, ultimately because they are
- * numbers from the terminal database, which uses 16-bit signed values.
+ * numbers from the SVr4 terminal database, which uses 16-bit signed values.
*/
#undef NCURSES_COLOR_T
#define NCURSES_COLOR_T short
@@ -106,10 +104,22 @@
#define NCURSES_PAIRS_T short
/*
- * Definition used to make WINDOW and similar structs opaque.
+ * Definitions used to make WINDOW and similar structs opaque.
*/
-#ifndef @cf_cv_enable_opaque@
-#define NCURSES_OPAQUE @NCURSES_OPAQUE@
+#ifndef NCURSES_INTERNALS
+#define NCURSES_OPAQUE @NCURSES_OPAQUE@
+#define NCURSES_OPAQUE_FORM @NCURSES_OPAQUE_FORM@
+#define NCURSES_OPAQUE_MENU @NCURSES_OPAQUE_MENU@
+#define NCURSES_OPAQUE_PANEL @NCURSES_OPAQUE_PANEL@
+#endif
+
+/*
+ * Definition used to optionally suppress wattr* macros to help with the
+ * transition from ncurses5 to ncurses6 by allowing the header files to
+ * be shared across development packages for ncursesw in both ABIs.
+ */
+#ifndef NCURSES_WATTR_MACROS
+#define NCURSES_WATTR_MACROS @NCURSES_WATTR_MACROS@
#endif
/*
@@ -145,6 +155,13 @@
#define NCURSES_TPARM_ARG @NCURSES_TPARM_ARG@
/*
+ * Control whether ncurses uses wcwidth() for checking width of line-drawing
+ * characters.
+ */
+#undef NCURSES_WCWIDTH_GRAPHICS
+#define NCURSES_WCWIDTH_GRAPHICS @NCURSES_WCWIDTH_GRAPHICS@
+
+/*
* NCURSES_CH_T is used in building the library, but not used otherwise in
* this header file, since that would make the normal/wide-character versions
* of the header incompatible.
@@ -156,8 +173,8 @@
typedef unsigned chtype;
typedef unsigned mmask_t;
#else
-typedef unsigned @cf_cv_typeof_chtype@ chtype;
-typedef unsigned @cf_cv_typeof_mmask_t@ mmask_t;
+typedef @cf_cv_typeof_chtype@ chtype;
+typedef @cf_cv_typeof_mmask_t@ mmask_t;
#endif
/*
@@ -231,6 +248,8 @@ extern "C" {
#define NCURSES_CAST(type,value) (type)(value)
#endif
+#define NCURSES_OK_ADDR(p) (0 != NCURSES_CAST(const void *, (p)))
+
/*
* X/Open attributes. In the ncurses implementation, they are identical to the
* A_ attributes.
@@ -561,6 +580,13 @@ extern NCURSES_EXPORT(int) wgetnstr_events (WINDOW *,char *,int,_nc_eventlist *)
#define GCC_UNUSED /* nothing */
#endif
+#undef GCC_DEPRECATED
+#if (__GNUC__ - 0 > 3 || (__GNUC__ - 0 == 3 && __GNUC_MINOR__ - 0 >= 2))
+#define GCC_DEPRECATED(msg) __attribute__((deprecated))
+#else
+#define GCC_DEPRECATED(msg) /* nothing */
+#endif
+
/*
* Curses uses a helper function. Define our type for this to simplify
* extending it for the sp-funcs feature.
@@ -682,7 +708,7 @@ extern NCURSES_EXPORT(int) mvinsstr (int, int, const char *); /* generated */
extern NCURSES_EXPORT(int) mvinstr (int, int, char *); /* generated */
extern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...) /* implemented */
GCC_PRINTFLIKE(3,4);
-extern NCURSES_EXPORT(int) mvscanw (int,int, NCURSES_CONST char *,...) /* implemented */
+extern NCURSES_EXPORT(int) mvscanw (int,int, const char *,...) /* implemented */
GCC_SCANFLIKE(3,4);
extern NCURSES_EXPORT(int) mvvline (int, int, chtype, int); /* generated */
extern NCURSES_EXPORT(int) mvwaddch (WINDOW *, int, int, const chtype); /* generated */
@@ -707,13 +733,13 @@ extern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *); /* gene
extern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *); /* generated */
extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...) /* implemented */
GCC_PRINTFLIKE(4,5);
-extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, NCURSES_CONST char *,...) /* implemented */
+extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, const char *,...) /* implemented */
GCC_SCANFLIKE(4,5);
extern NCURSES_EXPORT(int) mvwvline (WINDOW *,int, int, chtype, int); /* generated */
extern NCURSES_EXPORT(int) napms (int); /* implemented */
-extern NCURSES_EXPORT(WINDOW *) newpad (int,int); /* implemented */
-extern NCURSES_EXPORT(SCREEN *) newterm (NCURSES_CONST char *,FILE *,FILE *); /* implemented */
-extern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int); /* implemented */
+extern NCURSES_EXPORT(WINDOW *) newpad (int,int); /* implemented */
+extern NCURSES_EXPORT(SCREEN *) newterm (const char *,FILE *,FILE *); /* implemented */
+extern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int); /* implemented */
extern NCURSES_EXPORT(int) nl (void); /* implemented */
extern NCURSES_EXPORT(int) nocbreak (void); /* implemented */
extern NCURSES_EXPORT(int) nodelay (WINDOW *,bool); /* implemented */
@@ -741,7 +767,7 @@ extern NCURSES_EXPORT(int) reset_prog_mode (void); /* implemented */
extern NCURSES_EXPORT(int) reset_shell_mode (void); /* implemented */
extern NCURSES_EXPORT(int) ripoffline (int, int (*)(WINDOW *, int)); /* implemented */
extern NCURSES_EXPORT(int) savetty (void); /* implemented */
-extern NCURSES_EXPORT(int) scanw (NCURSES_CONST char *,...) /* implemented */
+extern NCURSES_EXPORT(int) scanw (const char *,...) /* implemented */
GCC_SCANFLIKE(1,2);
extern NCURSES_EXPORT(int) scr_dump (const char *); /* implemented */
extern NCURSES_EXPORT(int) scr_init (const char *); /* implemented */
@@ -767,7 +793,7 @@ extern NCURSES_EXPORT(int) slk_noutrefresh (void); /* implemented */
extern NCURSES_EXPORT(int) slk_refresh (void); /* implemented */
extern NCURSES_EXPORT(int) slk_restore (void); /* implemented */
extern NCURSES_EXPORT(int) slk_set (int,const char *,int); /* implemented */
-extern NCURSES_EXPORT(int) slk_touch (void); /* implemented */
+extern NCURSES_EXPORT(int) slk_touch (void); /* implemented */
extern NCURSES_EXPORT(int) standout (void); /* generated */
extern NCURSES_EXPORT(int) standend (void); /* generated */
extern NCURSES_EXPORT(int) start_color (void); /* implemented */
@@ -787,10 +813,10 @@ extern NCURSES_EXPORT(void) use_tioctl (bool); /* implemented */
extern NCURSES_EXPORT(int) vidattr (chtype); /* implemented */
extern NCURSES_EXPORT(int) vidputs (chtype, NCURSES_OUTC); /* implemented */
extern NCURSES_EXPORT(int) vline (chtype, int); /* generated */
-extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *,va_list); /* implemented */
-extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *,va_list); /* generated */
-extern NCURSES_EXPORT(int) vwscanw (WINDOW *, NCURSES_CONST char *,va_list); /* implemented */
-extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, NCURSES_CONST char *,va_list); /* generated */
+extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *,va_list) GCC_DEPRECATED(use vw_printw); /* implemented */
+extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *,va_list); /* implemented */
+extern NCURSES_EXPORT(int) vwscanw (WINDOW *, const char *,va_list) GCC_DEPRECATED(use vw_scanw); /* implemented */
+extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, const char *,va_list); /* implemented */
extern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype); /* implemented */
extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int); /* implemented */
extern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *); /* generated */
@@ -836,7 +862,7 @@ extern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...) /* implemented
GCC_PRINTFLIKE(2,3);
extern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int); /* implemented */
extern NCURSES_EXPORT(int) wrefresh (WINDOW *); /* implemented */
-extern NCURSES_EXPORT(int) wscanw (WINDOW *, NCURSES_CONST char *,...) /* implemented */
+extern NCURSES_EXPORT(int) wscanw (WINDOW *, const char *,...) /* implemented */
GCC_SCANFLIKE(2,3);
extern NCURSES_EXPORT(int) wscrl (WINDOW *,int); /* implemented */
extern NCURSES_EXPORT(int) wsetscrreg (WINDOW *,int,int); /* implemented */
@@ -851,16 +877,16 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
/*
* These are also declared in <term.h>:
*/
-extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *); /* implemented */
-extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *); /* implemented */
-extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *); /* implemented */
+extern NCURSES_EXPORT(int) tigetflag (const char *); /* implemented */
+extern NCURSES_EXPORT(int) tigetnum (const char *); /* implemented */
+extern NCURSES_EXPORT(char *) tigetstr (const char *); /* implemented */
extern NCURSES_EXPORT(int) putp (const char *); /* implemented */
#if NCURSES_TPARM_VARARGS
-extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* special */
+extern NCURSES_EXPORT(char *) tparm (const char *, ...); /* special */
#else
-extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG); /* special */
-extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* special */
+extern NCURSES_EXPORT(char *) tparm (const char *, NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG); /* special */
+extern NCURSES_EXPORT(char *) tparm_varargs (const char *, ...); /* special */
#endif
extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */
@@ -896,11 +922,20 @@ typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);
extern NCURSES_EXPORT(bool) is_term_resized (int, int);
extern NCURSES_EXPORT(char *) keybound (int, int);
extern NCURSES_EXPORT(const char *) curses_version (void);
+extern NCURSES_EXPORT(int) alloc_pair (int, int);
extern NCURSES_EXPORT(int) assume_default_colors (int, int);
extern NCURSES_EXPORT(int) define_key (const char *, int);
+extern NCURSES_EXPORT(int) extended_color_content(int, int *, int *, int *);
+extern NCURSES_EXPORT(int) extended_pair_content(int, int *, int *);
+extern NCURSES_EXPORT(int) extended_slk_color(int);
+extern NCURSES_EXPORT(int) find_pair (int, int);
+extern NCURSES_EXPORT(int) free_pair (int);
extern NCURSES_EXPORT(int) get_escdelay (void);
+extern NCURSES_EXPORT(int) init_extended_color(int, int, int, int);
+extern NCURSES_EXPORT(int) init_extended_pair(int, int, int);
extern NCURSES_EXPORT(int) key_defined (const char *);
extern NCURSES_EXPORT(int) keyok (int, bool);
+extern NCURSES_EXPORT(void) reset_color_pairs (void);
extern NCURSES_EXPORT(int) resize_term (int, int);
extern NCURSES_EXPORT(int) resizeterm (int, int);
extern NCURSES_EXPORT(int) set_escdelay (int);
@@ -930,6 +965,7 @@ extern NCURSES_EXPORT(bool) is_pad (const WINDOW *); /* @GENERATED_EXT_FUNCS@ *
extern NCURSES_EXPORT(bool) is_scrollok (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT(bool) is_subwin (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT(bool) is_syncok (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */
+extern NCURSES_EXPORT(int) wgetdelay (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT(int) wgetscrreg (const WINDOW *, int *, int *); /* @GENERATED_EXT_FUNCS@ */
#else
@@ -982,7 +1018,7 @@ extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(longname) (SCREEN*); /* implemente
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mvcur) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(napms) (SCREEN*, int); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newpad) (SCREEN*, int, int); /* implemented:SP_FUNC */
-extern NCURSES_EXPORT(SCREEN *) NCURSES_SP_NAME(newterm) (SCREEN*, NCURSES_CONST char *, FILE *, FILE *); /* implemented:SP_FUNC */
+extern NCURSES_EXPORT(SCREEN *) NCURSES_SP_NAME(newterm) (SCREEN*, const char *, FILE *, FILE *); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newwin) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nl) (SCREEN*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nocbreak) (SCREEN*); /* implemented:SP_FUNC */
@@ -1026,13 +1062,22 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidattr) (SCREEN*, chtype); /* implem
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidputs) (SCREEN*, chtype, NCURSES_SP_OUTC); /* implemented:SP_FUNC */
#if @NCURSES_EXT_FUNCS@
extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(keybound) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(alloc_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(assume_default_colors) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(define_key) (SCREEN*, const char *, int); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_color_content) (SCREEN*, int, int *, int *, int *); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_pair_content) (SCREEN*, int, int *, int *); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_slk_color) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(get_escdelay) (SCREEN*); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(find_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(free_pair) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_color) (SCREEN*, int, int, int, int); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_pair) (SCREEN*, int, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(is_term_resized) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(key_defined) (SCREEN*, const char *); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(keyok) (SCREEN*, int, bool); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(nofilter) (SCREEN*); /* implemented */ /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(void) NCURSES_SP_NAME(reset_color_pairs) (SCREEN*); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resize_term) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resizeterm) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_escdelay) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
@@ -1086,7 +1131,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
* These pseudo functions are always implemented as macros:
*/
-#define getyx(win,y,x) (y = getcury(win), x = getcurx(win))
+#define getyx(win,y,x) (y = getcury(win), x = getcurx(win))
#define getbegyx(win,y,x) (y = getbegy(win), x = getbegx(win))
#define getmaxyx(win,y,x) (y = getmaxy(win), x = getmaxx(win))
#define getparyx(win,y,x) (y = getpary(win), x = getparx(win))
@@ -1129,36 +1174,40 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
/* It seems older SYSV curses versions define these */
#if !NCURSES_OPAQUE
-#define getattrs(win) NCURSES_CAST(int, (win) ? (win)->_attrs : A_NORMAL)
-#define getcurx(win) ((win) ? (win)->_curx : ERR)
-#define getcury(win) ((win) ? (win)->_cury : ERR)
-#define getbegx(win) ((win) ? (win)->_begx : ERR)
-#define getbegy(win) ((win) ? (win)->_begy : ERR)
-#define getmaxx(win) ((win) ? ((win)->_maxx + 1) : ERR)
-#define getmaxy(win) ((win) ? ((win)->_maxy + 1) : ERR)
-#define getparx(win) ((win) ? (win)->_parx : ERR)
-#define getpary(win) ((win) ? (win)->_pary : ERR)
+#define getattrs(win) NCURSES_CAST(int, NCURSES_OK_ADDR(win) ? (win)->_attrs : A_NORMAL)
+#define getcurx(win) (NCURSES_OK_ADDR(win) ? (win)->_curx : ERR)
+#define getcury(win) (NCURSES_OK_ADDR(win) ? (win)->_cury : ERR)
+#define getbegx(win) (NCURSES_OK_ADDR(win) ? (win)->_begx : ERR)
+#define getbegy(win) (NCURSES_OK_ADDR(win) ? (win)->_begy : ERR)
+#define getmaxx(win) (NCURSES_OK_ADDR(win) ? ((win)->_maxx + 1) : ERR)
+#define getmaxy(win) (NCURSES_OK_ADDR(win) ? ((win)->_maxy + 1) : ERR)
+#define getparx(win) (NCURSES_OK_ADDR(win) ? (win)->_parx : ERR)
+#define getpary(win) (NCURSES_OK_ADDR(win) ? (win)->_pary : ERR)
#endif /* NCURSES_OPAQUE */
-#define wstandout(win) (wattrset(win,A_STANDOUT))
-#define wstandend(win) (wattrset(win,A_NORMAL))
+#define wstandout(win) (wattrset(win,A_STANDOUT))
+#define wstandend(win) (wattrset(win,A_NORMAL))
#define wattron(win,at) wattr_on(win, NCURSES_CAST(attr_t, at), NULL)
#define wattroff(win,at) wattr_off(win, NCURSES_CAST(attr_t, at), NULL)
#if !NCURSES_OPAQUE
+#if NCURSES_WATTR_MACROS
#if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@
-#define wattrset(win,at) ((win) \
- ? ((win)->_color = PAIR_NUMBER(at), \
- (win)->_attrs = NCURSES_CAST(attr_t, at), \
- OK) \
- : ERR)
+#define wattrset(win,at) \
+ (NCURSES_OK_ADDR(win) \
+ ? ((win)->_color = NCURSES_CAST(int, PAIR_NUMBER(at)), \
+ (win)->_attrs = NCURSES_CAST(attr_t, at), \
+ OK) \
+ : ERR)
#else
-#define wattrset(win,at) ((win) \
- ? ((win)->_attrs = NCURSES_CAST(attr_t, at), \
- OK) \
- : ERR)
+#define wattrset(win,at) \
+ (NCURSES_OK_ADDR(win) \
+ ? ((win)->_attrs = NCURSES_CAST(attr_t, at), \
+ OK) \
+ : ERR)
#endif
+#endif /* NCURSES_WATTR_MACROS */
#endif /* NCURSES_OPAQUE */
#define scroll(win) wscrl(win,1)
@@ -1177,7 +1226,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
#define winsstr(w, s) winsnstr(w, s, -1)
#if !NCURSES_OPAQUE
-#define redrawwin(win) wredrawln(win, 0, ((win) ? (win)->_maxy+1 : -1))
+#define redrawwin(win) wredrawln(win, 0, (NCURSES_OK_ADDR(win) ? (win)->_maxy+1 : -1))
#endif /* NCURSES_OPAQUE */
#define waddstr(win,str) waddnstr(win,str,-1)
@@ -1186,7 +1235,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
/*
* These apply to the first 256 color pairs.
*/
-#define COLOR_PAIR(n) NCURSES_BITS((n), 0)
+#define COLOR_PAIR(n) (NCURSES_BITS((n), 0) & A_COLOR)
#define PAIR_NUMBER(a) (NCURSES_CAST(int,((NCURSES_CAST(unsigned long,(a)) & A_COLOR) >> NCURSES_ATTR_SHIFT)))
/*
@@ -1198,13 +1247,13 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
#define addchstr(str) waddchstr(stdscr,(str))
#define addnstr(str,n) waddnstr(stdscr,(str),(n))
#define addstr(str) waddnstr(stdscr,(str),-1)
-#define attroff(at) wattroff(stdscr,(at))
-#define attron(at) wattron(stdscr,(at))
-#define attrset(at) wattrset(stdscr,(at))
#define attr_get(ap,cp,o) wattr_get(stdscr,(ap),(cp),(o))
#define attr_off(a,o) wattr_off(stdscr,(a),(o))
#define attr_on(a,o) wattr_on(stdscr,(a),(o))
#define attr_set(a,c,o) wattr_set(stdscr,(a),(c),(o))
+#define attroff(at) wattroff(stdscr,(at))
+#define attron(at) wattron(stdscr,(at))
+#define attrset(at) wattrset(stdscr,(at))
#define bkgd(ch) wbkgd(stdscr,(ch))
#define bkgdset(ch) wbkgdset(stdscr,(ch))
#define chgat(n,a,c,o) wchgat(stdscr,(n),(a),(c),(o))
@@ -1247,8 +1296,8 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
#define mvwaddchstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : waddchnstr((win),(str),-1))
#define mvwaddnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),(n)))
#define mvwaddstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),-1))
-#define mvwdelch(win,y,x) (wmove((win),(y),(x)) == ERR ? ERR : wdelch(win))
#define mvwchgat(win,y,x,n,a,c,o) (wmove((win),(y),(x)) == ERR ? ERR : wchgat((win),(n),(a),(c),(o)))
+#define mvwdelch(win,y,x) (wmove((win),(y),(x)) == ERR ? ERR : wdelch(win))
#define mvwgetch(win,y,x) (wmove((win),(y),(x)) == ERR ? ERR : wgetch(win))
#define mvwgetnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : wgetnstr((win),(str),(n)))
#define mvwgetstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : wgetstr((win),(str)))
@@ -1288,31 +1337,53 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
* Some wide-character functions can be implemented without the extensions.
*/
#if !NCURSES_OPAQUE
-#define getbkgd(win) ((win) ? ((win)->_bkgd) : 0)
+#define getbkgd(win) (NCURSES_OK_ADDR(win) ? ((win)->_bkgd) : 0)
#endif /* NCURSES_OPAQUE */
#define slk_attr_off(a,v) ((v) ? ERR : slk_attroff(a))
#define slk_attr_on(a,v) ((v) ? ERR : slk_attron(a))
#if !NCURSES_OPAQUE
+#if NCURSES_WATTR_MACROS
#if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@
-#define wattr_set(win,a,p,opts) (((win) \
- ? ((win)->_attrs = ((a) & ~A_COLOR), \
- (win)->_color = (p)) \
- : OK), \
- OK)
-#define wattr_get(win,a,p,opts) ((void)(((a) != (void *)0) ? (*(a) = (win) ? (win)->_attrs : 0) : OK), \
- (void)(((p) != (void *)0) ? (*(p) = (NCURSES_PAIRS_T) ((win) ? (win)->_color : 0)) : OK), \
- OK)
-#else
-#define wattr_set(win,a,p,opts) (((win) \
- ? ((win)->_attrs = (((a) & ~A_COLOR) | (attr_t)COLOR_PAIR(p))) \
- : OK), \
- OK)
-#define wattr_get(win,a,p,opts) ((void)(((a) != (void *)0) ? (*(a) = (win) ? (win)->_attrs : 0) : OK), \
- (void)(((p) != (void *)0) ? (*(p) = (NCURSES_PAIRS_T) ((win) ? PAIR_NUMBER((win)->_attrs) : 0)) : OK), \
- OK)
-#endif
+#define wattr_set(win,a,p,opts) \
+ (NCURSES_OK_ADDR(win) \
+ ? ((void)((win)->_attrs = ((a) & ~A_COLOR), \
+ (win)->_color = (opts) ? *(int *)(opts) : (p)), \
+ OK) \
+ : ERR)
+#define wattr_get(win,a,p,opts) \
+ (NCURSES_OK_ADDR(win) \
+ ? ((void)(NCURSES_OK_ADDR(a) \
+ ? (*(a) = (win)->_attrs) \
+ : OK), \
+ (void)(NCURSES_OK_ADDR(p) \
+ ? (*(p) = (NCURSES_PAIRS_T) (win)->_color) \
+ : OK), \
+ (void)(NCURSES_OK_ADDR(opts) \
+ ? (*(int *)(opts) = (win)->_color) \
+ : OK), \
+ OK) \
+ : ERR)
+#else /* !(NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */
+#define wattr_set(win,a,p,opts) \
+ (NCURSES_OK_ADDR(win) \
+ ? ((void)((win)->_attrs = (((a) & ~A_COLOR) | \
+ (attr_t)COLOR_PAIR(p))), \
+ OK) \
+ : ERR)
+#define wattr_get(win,a,p,opts) \
+ (NCURSES_OK_ADDR(win) \
+ ? ((void)(NCURSES_OK_ADDR(a) \
+ ? (*(a) = (win)->_attrs) \
+ : OK), \
+ (void)(NCURSES_OK_ADDR(p) \
+ ? (*(p) = (NCURSES_PAIRS_T) PAIR_NUMBER((win)->_attrs)) \
+ : OK), \
+ OK) \
+ : ERR)
+#endif /* (NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */
+#endif /* NCURSES_WATTR_MACROS */
#endif /* NCURSES_OPAQUE */
/*
@@ -1321,8 +1392,8 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
* use POSIX stdarg.h. The ncurses versions of vwprintw/vwscanw already
* use stdarg.h, so...
*/
-#define vw_printw vwprintw
-#define vw_scanw vwscanw
+/* define vw_printw vwprintw */
+/* define vw_scanw vwscanw */
/*
* Export fallback function for use in C++ binding.
@@ -1337,23 +1408,30 @@ NCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list);
*/
#if @NCURSES_EXT_FUNCS@
#if !NCURSES_OPAQUE
-#define is_cleared(win) ((win) ? (win)->_clear : FALSE)
-#define is_idcok(win) ((win) ? (win)->_idcok : FALSE)
-#define is_idlok(win) ((win) ? (win)->_idlok : FALSE)
-#define is_immedok(win) ((win) ? (win)->_immed : FALSE)
-#define is_keypad(win) ((win) ? (win)->_use_keypad : FALSE)
-#define is_leaveok(win) ((win) ? (win)->_leaveok : FALSE)
-#define is_nodelay(win) ((win) ? ((win)->_delay == 0) : FALSE)
-#define is_notimeout(win) ((win) ? (win)->_notimeout : FALSE)
-#define is_pad(win) ((win) ? ((win)->_flags & _ISPAD) != 0 : FALSE)
-#define is_scrollok(win) ((win) ? (win)->_scroll : FALSE)
-#define is_subwin(win) ((win) ? ((win)->_flags & _SUBWIN) != 0 : FALSE)
-#define is_syncok(win) ((win) ? (win)->_sync : FALSE)
-#define wgetparent(win) ((win) ? (win)->_parent : 0)
-#define wgetscrreg(win,t,b) ((win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR)
+#define is_cleared(win) (NCURSES_OK_ADDR(win) ? (win)->_clear : FALSE)
+#define is_idcok(win) (NCURSES_OK_ADDR(win) ? (win)->_idcok : FALSE)
+#define is_idlok(win) (NCURSES_OK_ADDR(win) ? (win)->_idlok : FALSE)
+#define is_immedok(win) (NCURSES_OK_ADDR(win) ? (win)->_immed : FALSE)
+#define is_keypad(win) (NCURSES_OK_ADDR(win) ? (win)->_use_keypad : FALSE)
+#define is_leaveok(win) (NCURSES_OK_ADDR(win) ? (win)->_leaveok : FALSE)
+#define is_nodelay(win) (NCURSES_OK_ADDR(win) ? ((win)->_delay == 0) : FALSE)
+#define is_notimeout(win) (NCURSES_OK_ADDR(win) ? (win)->_notimeout : FALSE)
+#define is_pad(win) (NCURSES_OK_ADDR(win) ? ((win)->_flags & _ISPAD) != 0 : FALSE)
+#define is_scrollok(win) (NCURSES_OK_ADDR(win) ? (win)->_scroll : FALSE)
+#define is_subwin(win) (NCURSES_OK_ADDR(win) ? ((win)->_flags & _SUBWIN) != 0 : FALSE)
+#define is_syncok(win) (NCURSES_OK_ADDR(win) ? (win)->_sync : FALSE)
+#define wgetdelay(win) (NCURSES_OK_ADDR(win) ? (win)->_delay : 0)
+#define wgetparent(win) (NCURSES_OK_ADDR(win) ? (win)->_parent : 0)
+#define wgetscrreg(win,t,b) (NCURSES_OK_ADDR(win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR)
#endif
#endif
+/*
+ * X/Open says this returns a bool; SVr4 also checked for out-of-range line.
+ * The macro provides compatibility:
+ */
+#define is_linetouched(w,l) ((!(w) || ((l) > getmaxy(w)) || ((l) < 0)) ? ERR : (is_linetouched)((w),(l)))
+
#endif /* NCURSES_NOMACROS */
/*
diff --git a/include/curses.tail b/include/curses.tail
index 5f911aee7b15..05f7439eff9d 100644
--- a/include/curses.tail
+++ b/include/curses.tail
@@ -1,4 +1,4 @@
-/* $Id: curses.tail,v 1.21 2011/10/29 20:03:22 tom Exp $ */
+/* $Id: curses.tail,v 1.25 2019/12/14 22:28:39 tom Exp $ */
/*
* vile:cmode:
* This file is part of ncurses, designed to be appended after curses.h.in
@@ -111,7 +111,9 @@ extern NCURSES_EXPORT(mmask_t) NCURSES_SP_NAME(mousemask) (SCREEN*, mmask_t, mma
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mouseinterval) (SCREEN*, int);
#endif
+#ifndef NCURSES_NOMACROS
#define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen)
+#endif
/* other non-XSI functions */
@@ -126,10 +128,8 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mcprint) (SCREEN*, char *, int); /* d
/* Debugging : use with libncurses_g.a */
extern NCURSES_EXPORT(void) _tracef (const char *, ...) GCC_PRINTFLIKE(1,2);
-extern NCURSES_EXPORT(void) _tracedump (const char *, WINDOW *);
extern NCURSES_EXPORT(char *) _traceattr (attr_t);
extern NCURSES_EXPORT(char *) _traceattr2 (int, chtype);
-extern NCURSES_EXPORT(char *) _nc_tracebits (void);
extern NCURSES_EXPORT(char *) _tracechar (int);
extern NCURSES_EXPORT(char *) _tracechtype (chtype);
extern NCURSES_EXPORT(char *) _tracechtype2 (int, chtype);
@@ -142,8 +142,8 @@ extern NCURSES_EXPORT(char *) _tracecchar_t2 (int, const cchar_t *);
#define _tracech_t _tracechtype
#define _tracech_t2 _tracechtype2
#endif
-extern NCURSES_EXPORT(char *) _tracemouse (const MEVENT *);
-extern NCURSES_EXPORT(void) trace (const unsigned int);
+extern NCURSES_EXPORT(void) trace (const unsigned) GCC_DEPRECATED("use curses_trace");
+extern NCURSES_EXPORT(unsigned) curses_trace (const unsigned);
/* trace masks */
#define TRACE_DISABLE 0x0000 /* turn off tracing */
@@ -174,6 +174,8 @@ extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
#define OPTIMIZE_ALL 0xff /* enable all optimizations (dflt) */
#endif
+extern NCURSES_EXPORT(void) exit_curses (int) GCC_NORETURN;
+
#include <unctrl.h>
#ifdef __cplusplus
diff --git a/include/curses.wide b/include/curses.wide
index 5d130a962284..7a8ae7d5fa13 100644
--- a/include/curses.wide
+++ b/include/curses.wide
@@ -1,4 +1,4 @@
-/* $Id: curses.wide,v 1.46 2014/02/01 22:00:32 tom Exp $ */
+/* $Id: curses.wide,v 1.50 2017/03/26 16:05:21 tom Exp $ */
/*
* vile:cmode:
* This file is part of ncurses, designed to be appended after curses.h.in
@@ -204,7 +204,7 @@ extern NCURSES_EXPORT(int) wecho_wchar (WINDOW *, const cchar_t *); /* implement
extern NCURSES_EXPORT(int) wget_wch (WINDOW *, wint_t *); /* implemented */
extern NCURSES_EXPORT(int) wget_wstr (WINDOW *, wint_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) wgetbkgrnd (WINDOW *, cchar_t *); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) wgetn_wstr (WINDOW *,wint_t *, int); /* implemented */
+extern NCURSES_EXPORT(int) wgetn_wstr (WINDOW *, wint_t *, int); /* implemented */
extern NCURSES_EXPORT(int) whline_set (WINDOW *, const cchar_t *, int); /* implemented */
extern NCURSES_EXPORT(int) win_wch (WINDOW *, cchar_t *); /* implemented */
extern NCURSES_EXPORT(int) win_wchnstr (WINDOW *, cchar_t *, int); /* implemented */
@@ -261,7 +261,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_puts) (SCREEN*, attr_t, NCURSES_P
#define wins_wstr(w,t) wins_nwstr((w),(t),-1)
#if !NCURSES_OPAQUE
-#define wgetbkgrnd(win,wch) ((win) ? (*(wch) = (win)->_bkgrnd) : *(wch), OK)
+#define wgetbkgrnd(win,wch) (NCURSES_OK_ADDR(wch) ? ((win) ? (*(wch) = (win)->_bkgrnd) : *(wch), OK) : ERR)
#endif
#define mvadd_wch(y,x,c) mvwadd_wch(stdscr,(y),(x),(c))
diff --git a/include/edit_cfg.sh b/include/edit_cfg.sh
index 8d64fee18013..5b2e4fba734d 100755
--- a/include/edit_cfg.sh
+++ b/include/edit_cfg.sh
@@ -1,7 +1,7 @@
#!/bin/sh
-# $Id: edit_cfg.sh,v 1.12 2001/12/23 00:52:40 tom Exp $
+# $Id: edit_cfg.sh,v 1.13 2017/08/12 12:22:06 tom Exp $
##############################################################################
-# Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. #
+# Copyright (c) 2000,2001,2017 Free 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,7 +38,7 @@
#
BAK=save$$
TMP=edit$$
-trap "rm -f $BAK $TMP" 0 1 2 5 15
+trap "rm -f $BAK $TMP" 0 1 2 3 15
for name in \
HAVE_TCGETATTR \
HAVE_TERMIOS_H \
diff --git a/include/hashed_db.h b/include/hashed_db.h
index 4dd3933111a8..396a7cd86a1d 100644
--- a/include/hashed_db.h
+++ b/include/hashed_db.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2006 Free Software Foundation, Inc. *
+ * Copyright (c) 2006-2014,2017 Free 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,19 +31,23 @@
****************************************************************************/
/*
- * $Id: hashed_db.h,v 1.5 2006/08/19 15:58:34 tom Exp $
+ * $Id: hashed_db.h,v 1.8 2017/07/22 16:22:49 tom Exp $
*/
#ifndef HASHED_DB_H
#define HASHED_DB_H 1
+#include <ncurses_cfg.h>
+
#include <curses.h>
#if USE_HASHED_DB
+#define DB_DBM_HSEARCH 0 /* quiet gcc -Wundef with db6 */
+
#include <db.h>
-#ifndef DBN_SUFFIX
+#ifndef DBM_SUFFIX
#define DBM_SUFFIX ".db"
#endif
diff --git a/include/nc_alloc.h b/include/nc_alloc.h
index 356f6056d521..c24c8a36e934 100644
--- a/include/nc_alloc.h
+++ b/include/nc_alloc.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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,12 +29,15 @@
/****************************************************************************
* Author: Thomas E. Dickey 1996-on *
****************************************************************************/
-/* $Id: nc_alloc.h,v 1.22 2013/01/26 21:56:51 tom Exp $ */
+/* $Id: nc_alloc.h,v 1.24 2019/12/15 01:00:51 tom Exp $ */
#ifndef NC_ALLOC_included
#define NC_ALLOC_included 1
/* *INDENT-OFF* */
+#include <ncurses_cfg.h>
+#include <curses.h>
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -69,8 +72,9 @@ extern "C" {
#if HAVE_LIBDBMALLOC || HAVE_LIBDMALLOC || NO_LEAKS
#define HAVE_NC_FREEALL 1
struct termtype;
-extern NCURSES_EXPORT(void) _nc_free_and_exit(int) GCC_NORETURN;
-extern NCURSES_EXPORT(void) _nc_free_tinfo(int) GCC_NORETURN;
+extern NCURSES_EXPORT(void) _nc_free_tinfo(int) GCC_NORETURN GCC_DEPRECATED("use exit_terminfo");
+
+#ifdef NCURSES_INTERNALS
extern NCURSES_EXPORT(void) _nc_free_tic(int) GCC_NORETURN;
extern NCURSES_EXPORT(void) _nc_free_tparm(void);
extern NCURSES_EXPORT(void) _nc_leaks_dump_entry(void);
@@ -79,8 +83,13 @@ extern NCURSES_EXPORT(void) _nc_leaks_tic(void);
#if NCURSES_SP_FUNCS
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_free_and_exit)(SCREEN*, int) GCC_NORETURN;
#endif
+extern NCURSES_EXPORT(void) _nc_free_and_exit(int) GCC_NORETURN;
+
+#else /* !NCURSES_INTERNALS */
+extern NCURSES_EXPORT(void) _nc_free_and_exit(int) GCC_NORETURN GCC_DEPRECATED("use exit_curses");
+#endif
-#define ExitProgram(code) _nc_free_and_exit(code)
+#define ExitProgram(code) exit_curses(code)
#endif /* NO_LEAKS, etc */
diff --git a/include/nc_mingw.h b/include/nc_mingw.h
index 32470034df34..3fbaf222427e 100644
--- a/include/nc_mingw.h
+++ b/include/nc_mingw.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2008-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2018,2019 Free 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,19 +27,19 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas Dickey, 2008-on *
- * *
+ * Author: Thomas Dickey, 2008-on *
****************************************************************************/
-/* $Id: nc_mingw.h,v 1.3 2010/09/25 22:16:12 juergen Exp $ */
+/* $Id: nc_mingw.h,v 1.6 2019/06/23 19:55:08 tom Exp $ */
#ifndef NC_MINGW_H
#define NC_MINGW_H 1
+#ifdef _WIN32
#ifdef WINVER
# if WINVER < 0x0501
# error WINVER must at least be 0x0501
-# endif
+# endif
#else
# define WINVER 0x0501
#endif
@@ -51,7 +51,7 @@
#undef gettimeofday
#define gettimeofday(tv,tz) _nc_gettimeofday(tv,tz)
-#include <sys/time.h> /* for struct timeval */
+#include <sys/time.h> /* for struct timeval */
extern int _nc_gettimeofday(struct timeval *, void *);
@@ -63,7 +63,9 @@ extern int _nc_gettimeofday(struct timeval *, void *);
#define getlogin() "username"
#undef wcwidth
-#define wcwidth(ucs) _nc_wcwidth(ucs)
+#define wcwidth(ucs) _nc_wcwidth((wchar_t)(ucs))
extern int _nc_wcwidth(wchar_t);
+#endif /* _WIN32 */
+
#endif /* NC_MINGW_H */
diff --git a/include/nc_panel.h b/include/nc_panel.h
index 6a9ffea39687..687c5713f26c 100644
--- a/include/nc_panel.h
+++ b/include/nc_panel.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2017 Free 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 @@
****************************************************************************/
/*
- * $Id: nc_panel.h,v 1.7 2009/07/04 18:20:02 tom Exp $
+ * $Id: nc_panel.h,v 1.9 2017/07/22 17:06:03 tom Exp $
*
* nc_panel.h
*
@@ -43,6 +43,9 @@
#ifndef NC_PANEL_H
#define NC_PANEL_H 1
+#include <ncurses_cfg.h>
+#include <curses.h>
+
#ifdef __cplusplus
extern "C"
{
diff --git a/include/nc_string.h b/include/nc_string.h
index 7e6ccd410cbf..ce7ccb1280ef 100644
--- a/include/nc_string.h
+++ b/include/nc_string.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2012-2013,2016 Free 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,8 +35,12 @@
#include <ncurses_cfg.h>
+#if HAVE_BSD_STRING_H
+#include <bsd/string.h>
+#endif
+
/*
- * $Id: nc_string.h,v 1.4 2013/12/15 01:09:19 tom Exp $
+ * $Id: nc_string.h,v 1.7 2016/09/10 19:57:15 tom Exp $
*
* String-hacks. Use these macros to stifle warnings on (presumably) correct
* uses of strcat, strcpy and sprintf.
@@ -56,14 +60,18 @@
#if USE_STRING_HACKS && HAVE_STRLCAT
#define _nc_STRCAT(d,s,n) NCURSES_VOID strlcat((d),(s),NCURSES_CAST(size_t,n))
+#define _nc_STRNCAT(d,s,m,n) NCURSES_VOID strlcat((d),(s),NCURSES_CAST(size_t,m))
#else
#define _nc_STRCAT(d,s,n) NCURSES_VOID strcat((d),(s))
+#define _nc_STRNCAT(d,s,m,n) NCURSES_VOID strncat((d),(s),(n))
#endif
#if USE_STRING_HACKS && HAVE_STRLCPY
#define _nc_STRCPY(d,s,n) NCURSES_VOID strlcpy((d),(s),NCURSES_CAST(size_t,n))
+#define _nc_STRNCPY(d,s,n) NCURSES_VOID strlcpy((d),(s),NCURSES_CAST(size_t,n))
#else
#define _nc_STRCPY(d,s,n) NCURSES_VOID strcpy((d),(s))
+#define _nc_STRNCPY(d,s,n) NCURSES_VOID strncpy((d),(s),(n))
#endif
#if USE_STRING_HACKS && HAVE_SNPRINTF
diff --git a/include/nc_termios.h b/include/nc_termios.h
index 5a6360698b2a..c09d18e63067 100644
--- a/include/nc_termios.h
+++ b/include/nc_termios.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2011-2017,2018 Free 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,11 +30,13 @@
* Author: Thomas E. Dickey 2011 *
****************************************************************************/
-/* $Id: nc_termios.h,v 1.2 2011/06/25 20:44:05 tom Exp $ */
+/* $Id: nc_termios.h,v 1.6 2018/06/24 00:06:37 tom Exp $ */
#ifndef NC_TERMIOS_included
#define NC_TERMIOS_included 1
+#include <ncurses_cfg.h>
+
#if HAVE_TERMIOS_H && HAVE_TCGETATTR
#else /* !HAVE_TERMIOS_H */
@@ -69,101 +71,91 @@
#else /* !HAVE_TERMIO_H */
-#if __MINGW32__
-
-/* c_cc chars */
-#define VINTR 0
-#define VQUIT 1
-#define VERASE 2
-#define VKILL 3
-#define VEOF 4
-#define VTIME 5
-#define VMIN 6
-
-/* c_iflag bits */
-#define ISTRIP 0000040
-#define INLCR 0000100
-#define IGNCR 0000200
-#define ICRNL 0000400
-#define BRKINT 0000002
-#define PARMRK 0000010
-#define IXON 0002000
-#define IGNBRK 0000001
-#define IGNPAR 0000004
-#define INPCK 0000020
-#define IXOFF 0010000
-
-/* c_oflag bits */
-#define OPOST 0000001
-
-/* c_cflag bit meaning */
-#define CBAUD 0010017
-#define CSIZE 0000060
-#define CS8 0000060
-#define B0 0000000
-#define B50 0000001
-#define B75 0000002
-#define B110 0000003
-#define B134 0000004
-#define B150 0000005
-#define B200 0000006
-#define B300 0000007
-#define B600 0000010
-#define B1200 0000011
-#define B1800 0000012
-#define B2400 0000013
-#define B4800 0000014
-#define B9600 0000015
-#define CLOCAL 0004000
-#define CREAD 0000200
-#define CSTOPB 0000100
-#define HUPCL 0002000
-#define PARENB 0000400
-#define PARODD 0001000
-
-/* c_lflag bits */
-#define ECHO 0000010
-#define ECHONL 0000100
-#define ISIG 0000001
-#define IEXTEN 0100000
-#define ICANON 0000002
-#define NOFLSH 0000200
-#define ECHOE 0000020
-#define ECHOK 0000040
-
-/* tcflush() */
-#define TCIFLUSH 0
-
-/* tcsetattr uses these */
-#define TCSADRAIN 1
-
-/* ioctls */
-#define TCGETA 0x5405
-#define TCFLSH 0x540B
-#define TIOCGWINSZ 0x5413
+#if _WIN32
+
+/* lflag bits */
+#define ISIG 0x0001
+#define ICANON 0x0002
+#define ECHO 0x0004
+#define ECHOE 0x0008
+#define ECHOK 0x0010
+#define ECHONL 0x0020
+#define NOFLSH 0x0040
+#define IEXTEN 0x0100
+
+#define VEOF 4
+#define VERASE 5
+#define VINTR 6
+#define VKILL 7
+#define VMIN 9
+#define VQUIT 10
+#define VTIME 16
+
+/* iflag bits */
+#define IGNBRK 0x00001
+#define BRKINT 0x00002
+#define IGNPAR 0x00004
+#define INPCK 0x00010
+#define ISTRIP 0x00020
+#define INLCR 0x00040
+#define IGNCR 0x00080
+#define ICRNL 0x00100
+#define IXON 0x00400
+#define IXOFF 0x01000
+#define PARMRK 0x10000
+
+/* oflag bits */
+#define OPOST 0x00001
+
+/* cflag bits */
+#define CBAUD 0x0100f
+#define B0 0x00000
+#define B50 0x00001
+#define B75 0x00002
+#define B110 0x00003
+#define B134 0x00004
+#define B150 0x00005
+#define B200 0x00006
+#define B300 0x00007
+#define B600 0x00008
+#define B1200 0x00009
+#define B1800 0x0000a
+#define B2400 0x0000b
+#define B4800 0x0000c
+#define B9600 0x0000d
+
+#define CSIZE 0x00030
+#define CS8 0x00030
+#define CSTOPB 0x00040
+#define CREAD 0x00080
+#define PARENB 0x00100
+#define PARODD 0x00200
+#define HUPCL 0x00400
+#define CLOCAL 0x00800
+
+#define TCIFLUSH 0
+#define TCSADRAIN 3
#ifndef cfgetospeed
#define cfgetospeed(t) ((t)->c_cflag & CBAUD)
#endif
#ifndef tcsetattr
-#define tcsetattr(fd, cmd, arg) _nc_mingw_ioctl(fd, cmd, arg)
+#define tcsetattr(fd, opt, arg) _nc_mingw_tcsetattr(fd, opt, arg)
#endif
#ifndef tcgetattr
-#define tcgetattr(fd, arg) _nc_mingw_ioctl(fd, TCGETA, arg)
+#define tcgetattr(fd, arg) _nc_mingw_tcgetattr(fd, arg)
#endif
#ifndef tcflush
-#define tcflush(fd, arg) _nc_mingw_ioctl(fd, TCFLSH, arg)
+#define tcflush(fd, queue) _nc_mingw_tcflush(fd, queue)
#endif
#undef ttyname
#define ttyname(fd) NULL
-#else
-
-#endif /* __MINGW32__ */
+#endif /* _WIN32 */
#endif /* HAVE_TERMIO_H */
#endif /* HAVE_TERMIOS_H */
diff --git a/include/nc_tparm.h b/include/nc_tparm.h
index 248f6c077994..d2670a2bb5d4 100644
--- a/include/nc_tparm.h
+++ b/include/nc_tparm.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2006-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2006-2017,2018 Free 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,11 +30,14 @@
* Author: Thomas E. Dickey 2006 *
****************************************************************************/
-/* $Id: nc_tparm.h,v 1.6 2012/02/18 21:34:42 tom Exp $ */
+/* $Id: nc_tparm.h,v 1.9 2018/03/17 19:19:58 tom Exp $ */
#ifndef NC_TPARM_included
#define NC_TPARM_included 1
+#include <ncurses_cfg.h>
+#include <curses.h>
+
/*
* Cast parameters past the formatting-string for tparm() to match the
* assumption of the varargs code.
@@ -70,7 +73,6 @@
#define TPARM_3(a,b,c,d) TPARM_4(a,b,c,d,0)
#define TPARM_2(a,b,c) TPARM_3(a,b,c,0)
#define TPARM_1(a,b) TPARM_2(a,b,0)
-#define TPARM_1(a,b) TPARM_2(a,b,0)
#define TPARM_0(a) TPARM_1(a,0)
#endif
diff --git a/include/ncurses_cfg.hin b/include/ncurses_cfg.hin
index 3f8a482a5d84..fb89e76257b8 100644
--- a/include/ncurses_cfg.hin
+++ b/include/ncurses_cfg.hin
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2005 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free 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,10 +27,13 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1997 *
+ * Author: Thomas E. Dickey 1997-on *
****************************************************************************/
/*
- * $Id: ncurses_cfg.hin,v 1.7 2005/01/02 01:26:58 tom Exp $
+ * $Id: ncurses_cfg.hin,v 1.11 2017/12/09 20:41:54 tom Exp $
+ *
+ * Both ncurses_cfg.h and ncurses_def.h are internal header-files used when
+ * building ncurses.
*
* This is a template-file used to generate the "ncurses_cfg.h" file.
*
@@ -40,7 +43,7 @@
*
* See:
* http://invisible-island.net/autoconf/
- * ftp://invisible-island.net/autoconf/
+ * ftp://ftp.invisible-island.net/autoconf/
*/
#ifndef NC_CONFIG_H
#define NC_CONFIG_H
@@ -52,11 +55,6 @@
#ifdef __cplusplus
#undef const
#undef inline
-#else
-#if defined(lint) || defined(TRACE)
-#undef inline
-#define inline /* nothing */
-#endif
#endif
/* On HP-UX, the C compiler doesn't grok mbstate_t without
@@ -69,4 +67,7 @@
#endif
#endif
+/*
+ * vile:cmode
+ */
#endif /* NC_CONFIG_H */
diff --git a/include/ncurses_defs b/include/ncurses_defs
index 01ce9ea141cf..07304a7f67f1 100644
--- a/include/ncurses_defs
+++ b/include/ncurses_defs
@@ -1,6 +1,6 @@
-# $Id: ncurses_defs,v 1.62 2013/12/14 23:52:07 tom Exp $
+# $Id: ncurses_defs,v 1.91 2019/06/23 15:19:43 tom Exp $
##############################################################################
-# Copyright (c) 2000-2012,2013 Free Software Foundation, Inc. #
+# Copyright (c) 2000-2018,2019 Free 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"), #
@@ -41,15 +41,26 @@ DECL_ERRNO
ETIP_NEEDS_MATH_H
GCC_NORETURN /* nothing */
GCC_UNUSED /* nothing */
+HAVE_ALLOC_PAIR
HAVE_ASSUME_DEFAULT_COLORS
HAVE_BIG_CORE
HAVE_BSD_CGETENT
HAVE_BSD_SIGNAL_H
+HAVE_BSD_STRING_H
HAVE_BTOWC
HAVE_BUILTIN_H
HAVE_CHGAT 1
+HAVE_COLOR_CONTENT 1
HAVE_COLOR_SET 1
+HAVE_CONSISTENT_GETENV
+HAVE_COPYWIN 1
+HAVE_CURSCR 1
+HAVE_CURSES_DATA_TABSIZE 1
+HAVE_CURSES_DATA_TTYTYPE 1
+HAVE_DELSCREEN 1
+HAVE_DERWIN 1
HAVE_DIRENT_H
+HAVE_DUPWIN 1
HAVE_ERRNO
HAVE_FCNTL_H
HAVE_FILTER 1
@@ -69,7 +80,9 @@ HAVE_GETWIN 1
HAVE_GPM_H
HAVE_GPP_BUILTIN_H
HAVE_GXX_BUILTIN_H
+HAVE_HALFDELAY 1
HAVE_HAS_KEY
+HAVE_INIT_EXTENDED_COLOR
HAVE_INTTYPES_H
HAVE_IOSTREAM
HAVE_ISASCII
@@ -83,8 +96,10 @@ HAVE_LIBGPM
HAVE_LIBMENU
HAVE_LIBMPATROL
HAVE_LIBPANEL
+HAVE_LIB_PCRE2
HAVE_LIMITS_H
HAVE_LINK
+HAVE_LOCALECONV
HAVE_LOCALE_H
HAVE_LONG_FILE_NAMES
HAVE_MATH_H
@@ -96,11 +111,16 @@ HAVE_MBSTOWCS
HAVE_MBTOWC
HAVE_MENU_H
HAVE_MKSTEMP
+HAVE_MVDERWIN 1
HAVE_MVVLINE 1
+HAVE_MVWIN 1
HAVE_MVWVLINE 1
HAVE_NANOSLEEP
HAVE_NC_ALLOC_H
+HAVE_NEWPAD 1
HAVE_PANEL_H
+HAVE_PCRE2_POSIX_H
+HAVE_PCREPOSIX_H
HAVE_POLL
HAVE_POLL_H
HAVE_PURIFY
@@ -111,8 +131,10 @@ HAVE_REGEXPR_H_FUNCS
HAVE_REGEXP_H_FUNCS
HAVE_REGEX_H_FUNCS
HAVE_REMOVE
+HAVE_RESET_COLOR_PAIRS
HAVE_RESIZETERM
HAVE_RESIZE_TERM
+HAVE_RESTARTTERM 1
HAVE_RIPOFFLINE 1
HAVE_SCR_DUMP 1
HAVE_SELECT
@@ -134,6 +156,7 @@ HAVE_STRLCAT
HAVE_STRLCPY
HAVE_STRSTR
HAVE_SYMLINK
+HAVE_SYSCONF
HAVE_SYS_BSDTYPES_H
HAVE_SYS_IOCTL_H
HAVE_SYS_PARAM_H
@@ -147,6 +170,7 @@ HAVE_TCGETATTR
HAVE_TCGETPGRP
HAVE_TELL
HAVE_TERMATTRS 1
+HAVE_TERMCAP_H 1
HAVE_TERMIOS_H
HAVE_TERMIO_H
HAVE_TERMNAME 1
@@ -156,6 +180,8 @@ HAVE_TGETENT 1
HAVE_TIGETNUM 1
HAVE_TIGETSTR 1
HAVE_TIMES
+HAVE_TPUTS_SP
+HAVE_TSEARCH
HAVE_TTYENT_H
HAVE_TYPEAHEAD 1
HAVE_TYPEINFO
@@ -165,26 +191,35 @@ HAVE_UNCTRL_H 1
HAVE_UNISTD_H
HAVE_UNLINK
HAVE_USE_DEFAULT_COLORS
+HAVE_USE_ENV 1
+HAVE_USE_EXTENDED_NAMES
HAVE_USE_SCREEN
HAVE_USE_WINDOW
HAVE_VFSCANF
+HAVE_VIDPUTS 1
+HAVE_VID_PUTS 1
HAVE_VSNPRINTF
HAVE_VSSCANF
+HAVE_VW_PRINTW 1
+HAVE_WCHGAT 1
HAVE_WCSRTOMBS
HAVE_WCSTOMBS
HAVE_WCTOB
HAVE_WCTOMB
HAVE_WCTYPE_H
+HAVE_WINSDELLN 1
HAVE_WINSSTR 1
HAVE_WORKING_POLL
HAVE_WRESIZE
HAVE_WSYNCDOWN 1
HAVE__DOSCAN
+HAVE__TRACEF
MIXEDCASE_FILENAMES
NCURSES_CHAR_EQ
NCURSES_EXPANDED
NCURSES_EXT_COLORS
NCURSES_EXT_FUNCS
+NCURSES_EXT_PUTWIN
NCURSES_NO_PADDING
NCURSES_OSPEED_COMPAT
NCURSES_PATHSEP ':'
@@ -201,6 +236,7 @@ TERMPATH "none"
TIME_WITH_SYS_TIME
TYPEOF_CHTYPE
USE_COLORFGBG
+USE_FOPEN_BIN_R
USE_GETCAP
USE_GETCAP_CACHE
USE_HARD_TABS
diff --git a/include/ncurses_dll.h.in b/include/ncurses_dll.h.in
index 82c9b85ca542..aa2579c682de 100644
--- a/include/ncurses_dll.h.in
+++ b/include/ncurses_dll.h.in
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2014,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -25,12 +25,42 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************/
-/* $Id: ncurses_dll.h.in,v 1.8 2009/04/04 22:26:27 tom Exp $ */
+/* $Id: ncurses_dll.h.in,v 1.11 2018/06/23 21:38:14 tom Exp $ */
#ifndef NCURSES_DLL_H_incl
#define NCURSES_DLL_H_incl 1
/*
+ * MinGW gcc (unlike MSYS2 and Cygwin) should define _WIN32 and possibly _WIN64.
+ */
+#if defined(__MINGW64__)
+
+#ifndef _WIN64
+#define _WIN64 1
+#endif
+
+#elif defined(__MINGW32__)
+
+#ifndef _WIN32
+#define _WIN32 1
+#endif
+
+/* 2014-08-02 workaround for broken MinGW compiler.
+ * Oddly, only TRACE is mapped to trace - the other -D's are okay.
+ * suggest TDM as an alternative.
+ */
+#if (__GNUC__ == 4) && (__GNUC_MINOR__ == 8)
+
+#ifdef trace
+#undef trace
+#define TRACE
+#endif
+
+#endif /* broken compiler */
+
+#endif /* MingW */
+
+/*
* For reentrant code, we map the various global variables into SCREEN by
* using functions to access them.
*/
@@ -44,7 +74,7 @@
#undef NCURSES_DLL
#define NCURSES_STATIC
-#if defined(__CYGWIN__) || defined(__MINGW32__)
+#if defined(__CYGWIN__) || defined(_WIN32)
# if defined(NCURSES_DLL)
# if defined(NCURSES_STATIC)
# undef NCURSES_STATIC
diff --git a/include/ncurses_mingw.h b/include/ncurses_mingw.h
index 7feb4c51c912..5e89dc6424eb 100644
--- a/include/ncurses_mingw.h
+++ b/include/ncurses_mingw.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,17 +28,16 @@
/****************************************************************************
* Author: Juergen Pfeifer, 2008-on *
- * *
****************************************************************************/
-/* $Id: ncurses_mingw.h,v 1.2 2011/06/25 20:51:00 tom Exp $ */
+/* $Id: ncurses_mingw.h,v 1.5 2018/06/24 00:07:35 tom Exp $ */
/*
* This is a placeholder up to now and describes what needs to be implemented
* to support I/O to external terminals with ncurses on the Windows OS.
*/
-#if __MINGW32__
+#ifdef _WIN32
#ifndef _NC_MINGWH
#define _NC_MINGWH
@@ -47,28 +46,36 @@
#undef TERMIOS
#define TERMIOS 1
-#define InvalidHandle ((TERM_HANDLE)-1)
-#define InvalidConsoleHandle(s) ((s)==InvalidHandle)
-
typedef unsigned char cc_t;
-typedef unsigned int speed_t;
typedef unsigned int tcflag_t;
+typedef unsigned int speed_t;
+typedef unsigned short otcflag_t;
+typedef unsigned char ospeed_t;
-#define NCCS 32
+#define NCCS 18
struct termios
{
- tcflag_t c_iflag; /* input mode */
- tcflag_t c_oflag; /* output mode */
- tcflag_t c_cflag; /* control mode */
- tcflag_t c_lflag; /* local mode */
- cc_t c_line; /* line discipline */
- cc_t c_cc[NCCS]; /* control characters */
- speed_t c_ispeed; /* input speed */
- speed_t c_ospeed; /* c_ospeed */
+ tcflag_t c_iflag;
+ tcflag_t c_oflag;
+ tcflag_t c_cflag;
+ tcflag_t c_lflag;
+ char c_line;
+ cc_t c_cc[NCCS];
+ speed_t c_ispeed;
+ speed_t c_ospeed;
};
-extern int _nc_mingw_ioctl(int fd, long int request, struct termios* arg);
-extern void _nc_set_term_driver(void* term);
+extern NCURSES_EXPORT(int) _nc_mingw_tcsetattr(
+ int fd,
+ int optional_actions,
+ const struct termios* arg);
+extern NCURSES_EXPORT(int) _nc_mingw_tcgetattr(
+ int fd,
+ struct termios* arg);
+extern NCURSES_EXPORT(int) _nc_mingw_tcflush(
+ int fd,
+ int queue);
+extern NCURSES_EXPORT(void) _nc_set_term_driver(void* term);
#endif /* _NC_MINGWH */
-#endif /* __MINGW32__ */
+#endif /* _WIN32 */
diff --git a/include/term_entry.h b/include/term_entry.h
index f7c32c6cf61c..513bd97d4832 100644
--- a/include/term_entry.h
+++ b/include/term_entry.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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 @@
* and: Thomas E. Dickey 1998-on *
****************************************************************************/
-/* $Id: term_entry.h,v 1.44 2013/05/25 20:13:38 tom Exp $ */
+/* $Id: term_entry.h,v 1.58 2019/12/07 16:11:15 tom Exp $ */
/*
* term_entry.h -- interface to entry-manipulation code
@@ -40,53 +40,18 @@
#ifndef NCURSES_TERM_ENTRY_H_incl
#define NCURSES_TERM_ENTRY_H_incl 1
+/* *INDENT-OFF* */
#ifdef __cplusplus
extern "C" {
#endif
+#include <curses.h>
#include <term.h>
- /*
- * see db_iterator.c - this enumeration lists the places searched for a
- * terminal description and defines the order in which they are searched.
- */
- typedef enum {
- dbdTIC = 0, /* special, used by tic when writing entry */
-#if NCURSES_USE_DATABASE
- dbdEnvOnce, /* the $TERMINFO environment variable */
- dbdHome, /* $HOME/.terminfo */
- dbdEnvList, /* the $TERMINFO_DIRS environment variable */
- dbdCfgList, /* the compiled-in TERMINFO_DIRS value */
- dbdCfgOnce, /* the compiled-in TERMINFO value */
-#endif
-#if NCURSES_USE_TERMCAP
- dbdEnvOnce2, /* the $TERMCAP environment variable */
- dbdEnvList2, /* the $TERMPATH environment variable */
- dbdCfgList2, /* the compiled-in TERMPATH */
-#endif
- dbdLAST
- } DBDIRS;
-
-#define MAX_USES 32
-#define MAX_CROSSLINKS 16
-
- typedef struct entry {
- TERMTYPE tterm;
- unsigned nuses;
- struct {
- 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;
- struct entry *last;
- } ENTRY;
-/* *INDENT-OFF* */
+/*
+ * These macros may be used by programs that know about TERMTYPE:
+ */
#if NCURSES_XNAMES
#define NUM_BOOLEANS(tp) (tp)->num_Booleans
#define NUM_NUMBERS(tp) (tp)->num_Numbers
@@ -106,15 +71,66 @@ extern "C" {
#define for_each_string(n,tp) for(n = 0; n < NUM_STRINGS(tp); n++)
#if NCURSES_XNAMES
-#define for_each_ext_boolean(n,tp) for(n = BOOLCOUNT; n < NUM_BOOLEANS(tp); n++)
-#define for_each_ext_number(n,tp) for(n = NUMCOUNT; n < NUM_NUMBERS(tp); n++)
-#define for_each_ext_string(n,tp) for(n = STRCOUNT; n < NUM_STRINGS(tp); n++)
+#define for_each_ext_boolean(n,tp) for(n = BOOLCOUNT; (int) n < (int) NUM_BOOLEANS(tp); n++)
+#define for_each_ext_number(n,tp) for(n = NUMCOUNT; (int) n < (int) NUM_NUMBERS(tp); n++)
+#define for_each_ext_string(n,tp) for(n = STRCOUNT; (int) n < (int) NUM_STRINGS(tp); n++)
#endif
#define ExtBoolname(tp,i,names) EXT_NAMES(tp, i, BOOLCOUNT, (i - (tp->num_Booleans - tp->ext_Booleans)), names)
#define ExtNumname(tp,i,names) EXT_NAMES(tp, i, NUMCOUNT, (i - (tp->num_Numbers - tp->ext_Numbers)) + tp->ext_Booleans, names)
#define ExtStrname(tp,i,names) EXT_NAMES(tp, i, STRCOUNT, (i - (tp->num_Strings - tp->ext_Strings)) + (tp->ext_Numbers + tp->ext_Booleans), names)
+/*
+ * The remaining type-definitions and macros are used only internally by the
+ * ncurses utilities.
+ */
+#ifdef NCURSES_INTERNALS
+
+/*
+ * see db_iterator.c - this enumeration lists the places searched for a
+ * terminal description and defines the order in which they are searched.
+ */
+typedef enum {
+ dbdTIC = 0, /* special, used by tic when writing entry */
+#if NCURSES_USE_DATABASE
+ dbdEnvOnce, /* the $TERMINFO environment variable */
+ dbdHome, /* $HOME/.terminfo */
+ dbdEnvList, /* the $TERMINFO_DIRS environment variable */
+ dbdCfgList, /* the compiled-in TERMINFO_DIRS value */
+ dbdCfgOnce, /* the compiled-in TERMINFO value */
+#endif
+#if NCURSES_USE_TERMCAP
+ dbdEnvOnce2, /* the $TERMCAP environment variable */
+ dbdEnvList2, /* the $TERMPATH environment variable */
+ dbdCfgList2, /* the compiled-in TERMPATH */
+#endif
+ dbdLAST
+} DBDIRS;
+
+#define MAX_USES 32
+#define MAX_CROSSLINKS 16
+
+typedef struct entry ENTRY;
+
+typedef struct {
+ char *name;
+ ENTRY *link;
+ long line;
+} ENTRY_USES;
+
+struct entry {
+ TERMTYPE2 tterm;
+ unsigned nuses;
+ ENTRY_USES uses[MAX_USES];
+ int ncrosslinks;
+ ENTRY *crosslinks[MAX_CROSSLINKS];
+ long cstart;
+ long cend;
+ long startline;
+ ENTRY *next;
+ ENTRY *last;
+};
+
extern NCURSES_EXPORT_VAR(ENTRY *) _nc_head;
extern NCURSES_EXPORT_VAR(ENTRY *) _nc_tail;
#define for_entry_list(qp) for (qp = _nc_head; qp; qp = qp->next)
@@ -131,7 +147,10 @@ extern NCURSES_EXPORT_VAR(ENTRY *) _nc_tail;
#define PRESENT(s) (((s) != ABSENT_STRING) && ((s) != CANCELLED_STRING))
#define ANDMISSING(p,q) \
- {if (PRESENT(p) && !PRESENT(q)) _nc_warning(#p " but no " #q);}
+ { \
+ if (PRESENT(p) && !PRESENT(q)) \
+ _nc_warning(#p " but no " #q); \
+ }
#define PAIRED(p,q) \
{ \
@@ -141,25 +160,25 @@ extern NCURSES_EXPORT_VAR(ENTRY *) _nc_tail;
_nc_warning(#p " but no " #q); \
}
+/*
+ * These entrypoints are used only by the ncurses utilities such as tic.
+ */
+
/* alloc_entry.c: elementary allocation code */
extern NCURSES_EXPORT(ENTRY *) _nc_copy_entry (ENTRY *oldp);
extern NCURSES_EXPORT(char *) _nc_save_str (const char *const);
-extern NCURSES_EXPORT(void) _nc_init_entry (TERMTYPE *const);
-extern NCURSES_EXPORT(void) _nc_merge_entry (TERMTYPE *const, TERMTYPE *const);
+extern NCURSES_EXPORT(void) _nc_init_entry (ENTRY *const);
+extern NCURSES_EXPORT(void) _nc_merge_entry (ENTRY *const, ENTRY *const);
extern NCURSES_EXPORT(void) _nc_wrap_entry (ENTRY *const, bool);
/* alloc_ttype.c: elementary allocation code */
-extern NCURSES_EXPORT(void) _nc_align_termtype (TERMTYPE *, TERMTYPE *);
-extern NCURSES_EXPORT(void) _nc_copy_termtype (TERMTYPE *, const TERMTYPE *);
+extern NCURSES_EXPORT(void) _nc_align_termtype (TERMTYPE2 *, TERMTYPE2 *);
/* free_ttype.c: elementary allocation code */
-extern NCURSES_EXPORT(void) _nc_free_termtype (TERMTYPE *);
-
-/* lib_acs.c */
-extern NCURSES_EXPORT(void) _nc_init_acs (void); /* corresponds to traditional 'init_acs()' */
+extern NCURSES_EXPORT(void) _nc_free_termtype2 (TERMTYPE2 *);
/* lib_termcap.c: trim sgr0 string for termcap users */
-extern NCURSES_EXPORT(char *) _nc_trim_sgr0 (TERMTYPE *);
+extern NCURSES_EXPORT(char *) _nc_trim_sgr0 (TERMTYPE2 *);
/* parse_entry.c: entry-parsing code */
#if NCURSES_XNAMES
@@ -170,8 +189,9 @@ extern NCURSES_EXPORT(int) _nc_parse_entry (ENTRY *, int, bool);
extern NCURSES_EXPORT(int) _nc_capcmp (const char *, const char *);
/* write_entry.c: writing an entry to the file system */
-extern NCURSES_EXPORT(void) _nc_set_writedir (char *);
-extern NCURSES_EXPORT(void) _nc_write_entry (TERMTYPE *const);
+extern NCURSES_EXPORT(void) _nc_set_writedir (const char *);
+extern NCURSES_EXPORT(void) _nc_write_entry (TERMTYPE2 *const);
+extern NCURSES_EXPORT(int) _nc_write_object (TERMTYPE2 *, char *, unsigned *, unsigned);
/* comp_parse.c: entry list handling */
extern NCURSES_EXPORT(void) _nc_read_entry_source (FILE*, char*, int, bool, bool (*)(ENTRY*));
@@ -180,13 +200,37 @@ extern NCURSES_EXPORT(int) _nc_resolve_uses (bool); /* obs 20040705 */
extern NCURSES_EXPORT(int) _nc_resolve_uses2 (bool, bool);
extern NCURSES_EXPORT(void) _nc_free_entries (ENTRY *);
extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype)(TERMTYPE *); /* obs 20040705 */
-extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype2)(TERMTYPE *, bool);
+extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype2)(TERMTYPE2 *, bool);
/* trace_xnames.c */
extern NCURSES_EXPORT(void) _nc_trace_xnames (TERMTYPE *);
-/* *INDENT-ON* */
+
+#endif /* NCURSES_INTERNALS */
+
+/*
+ * These entrypoints were used by tack before 1.08.
+ */
+
+#undef NCURSES_TACK_1_08
+#ifdef NCURSES_INTERNALS
+#define NCURSES_TACK_1_08 /* nothing */
+#else
+#define NCURSES_TACK_1_08 GCC_DEPRECATED("upgrade to tack 1.08")
+#endif
+
+/* alloc_ttype.c: elementary allocation code */
+extern NCURSES_EXPORT(void) _nc_copy_termtype (TERMTYPE *, const TERMTYPE *) NCURSES_TACK_1_08;
+
+/* lib_acs.c */
+extern NCURSES_EXPORT(void) _nc_init_acs (void) NCURSES_TACK_1_08; /* corresponds to traditional 'init_acs()' */
+
+/* free_ttype.c: elementary allocation code */
+extern NCURSES_EXPORT(void) _nc_free_termtype (TERMTYPE *) NCURSES_TACK_1_08;
#ifdef __cplusplus
}
#endif
-#endif /* NCURSES_TERM_ENTRY_H_incl */
+
+/* *INDENT-ON* */
+
+#endif /* NCURSES_TERM_ENTRY_H_incl */
diff --git a/include/termcap.h.in b/include/termcap.h.in
index 6adc31222064..593e3268639c 100644
--- a/include/termcap.h.in
+++ b/include/termcap.h.in
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,2018 Free 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: termcap.h.in,v 1.16 2001/03/24 21:53:27 tom Exp $ */
+/* $Id: termcap.h.in,v 1.18 2018/04/07 20:46:20 tom Exp $ */
#ifndef NCURSES_TERMCAP_H_incl
#define NCURSES_TERMCAP_H_incl 1
@@ -48,9 +48,6 @@ extern "C"
#include <sys/types.h>
-#undef NCURSES_CONST
-#define NCURSES_CONST @NCURSES_CONST@
-
#undef NCURSES_OSPEED
#define NCURSES_OSPEED @NCURSES_OSPEED@
@@ -60,11 +57,11 @@ extern NCURSES_EXPORT_VAR(char *) BC;
extern NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed;
#if !defined(NCURSES_TERM_H_incl)
-extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **);
+extern NCURSES_EXPORT(char *) tgetstr (const char *, char **);
extern NCURSES_EXPORT(char *) tgoto (const char *, int, int);
extern NCURSES_EXPORT(int) tgetent (char *, const char *);
-extern NCURSES_EXPORT(int) tgetflag (NCURSES_CONST char *);
-extern NCURSES_EXPORT(int) tgetnum (NCURSES_CONST char *);
+extern NCURSES_EXPORT(int) tgetflag (const char *);
+extern NCURSES_EXPORT(int) tgetnum (const char *);
extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int));
#endif
diff --git a/include/tic.h b/include/tic.h
index 528a1b7d5af3..f878df09fcd4 100644
--- a/include/tic.h
+++ b/include/tic.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,9 +33,8 @@
****************************************************************************/
/*
- * $Id: tic.h,v 1.69 2012/03/17 18:22:10 tom Exp $
- * tic.h - Global variables and structures for the terminfo
- * compiler.
+ * $Id: tic.h,v 1.80 2019/12/07 16:05:22 tom Exp $
+ * tic.h - Global variables and structures for the terminfo compiler.
*/
#ifndef __TIC_H
@@ -45,10 +44,12 @@
extern "C" {
#endif
+#include <ncurses_cfg.h>
+
#include <curses.h> /* for the _tracef() prototype, ERR/OK, bool defs */
/*
-** The format of compiled terminfo files is as follows:
+** The format of SVr2 compiled terminfo files is as follows:
**
** Header (12 bytes), containing information given below
** Names Section, containing the names of the terminal
@@ -64,6 +65,11 @@ extern "C" {
** String Table, containing the actual characters of the string
** capabilities.
**
+** In the SVr2 format, "short" means signed 16-bit numbers, which is sometimes
+** inconvenient. The numbers are signed, to provide for absent and canceled
+** values. ncurses6.1 introduced an extension to this compiled format, by
+** making the Number Section a list of signed 32-bit integers.
+**
** NOTE that all short integers in the file are stored using VAX/PDP-style
** byte-order, i.e., least-significant byte first.
**
@@ -76,6 +82,7 @@ extern "C" {
*/
#define MAGIC 0432 /* first two bytes of a compiled entry */
+#define MAGIC2 01036 /* first two bytes of a compiled 32-bit entry */
#undef BYTE
#define BYTE(p,n) (unsigned char)((p)[n])
@@ -84,14 +91,23 @@ extern "C" {
#define IS_NEG2(p) ((BYTE(p,0) == 0376) && (BYTE(p,1) == 0377))
#define LOW_MSB(p) (BYTE(p,0) + 256*BYTE(p,1))
-#define IS_TIC_MAGIC(p) (LOW_MSB(p) == MAGIC)
+#define IS_TIC_MAGIC(p) (LOW_MSB(p) == MAGIC || LOW_MSB(p) == MAGIC2)
+
+#define quick_prefix(s) (!strncmp((s), "b64:", (size_t)4) || !strncmp((s), "hex:", (size_t)4))
/*
* The "maximum" here is misleading; XSI guarantees minimum values, which a
* given implementation may exceed.
*/
#define MAX_NAME_SIZE 512 /* maximum legal name field size (XSI:127) */
-#define MAX_ENTRY_SIZE 4096 /* maximum legal entry size */
+#define MAX_ENTRY_SIZE1 4096 /* maximum legal entry size (SVr2) */
+#define MAX_ENTRY_SIZE2 32768 /* maximum legal entry size (ncurses6.1) */
+
+#if NCURSES_EXT_COLORS && HAVE_INIT_EXTENDED_COLOR
+#define MAX_ENTRY_SIZE MAX_ENTRY_SIZE2
+#else
+#define MAX_ENTRY_SIZE MAX_ENTRY_SIZE1
+#endif
/*
* The maximum size of individual name or alias is guaranteed in XSI to be at
@@ -118,7 +134,8 @@ extern "C" {
#define DEBUG_LEVEL(n) ((n) << TRACE_SHIFT)
#define set_trace_level(n) \
- _nc_tracing &= DEBUG_LEVEL(MAX_DEBUG_LEVEL), \
+ _nc_tracing &= DEBUG_LEVEL(MAX_DEBUG_LEVEL) \
+ + DEBUG_LEVEL(MAX_DEBUG_LEVEL) - 1, \
_nc_tracing |= DEBUG_LEVEL(n)
#ifdef TRACE
@@ -127,11 +144,6 @@ extern "C" {
#define DEBUG(n, a) /*nothing*/
#endif
-extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing;
-extern NCURSES_EXPORT(void) _nc_tracef (char *, ...) GCC_PRINTFLIKE(1,2);
-extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
-extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);
-
/*
* These are the types of tokens returned by the scanner. The first
* three are also used in the hash table of capability names. The scanner
@@ -148,49 +160,33 @@ extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);
#define NO_PUSHBACK -1 /* used in pushtype to indicate no pushback */
- /*
- * The global structure in which the specific parts of a
- * scanned token are returned.
- *
- */
+/*
+ * The global structure in which the specific parts of a
+ * scanned token are returned.
+ */
struct token
{
- char *tk_name; /* name of capability */
+ char *tk_name; /* name of capability */
int tk_valnumber; /* value of capability (if a number) */
char *tk_valstring; /* value of capability (if a string) */
};
-extern NCURSES_EXPORT_VAR(struct token) _nc_curr_token;
-
- /*
- * Offsets to string capabilities, with the corresponding functionkey
- * codes.
- */
+/*
+ * Offsets to string capabilities, with the corresponding functionkey codes.
+ */
struct tinfo_fkeys {
unsigned offset;
chtype code;
};
-#if BROKEN_LINKER
-
-#define _nc_tinfo_fkeys _nc_tinfo_fkeysf()
-extern NCURSES_EXPORT(const struct tinfo_fkeys *) _nc_tinfo_fkeysf (void);
-
-#else
-
-extern NCURSES_EXPORT_VAR(const struct tinfo_fkeys) _nc_tinfo_fkeys[];
-
-#endif
-
typedef short HashValue;
- /*
- * The file comp_captab.c contains an array of these structures, one
- * per possible capability. These are indexed by a hash table array of
- * pointers to the same structures for use by the parser.
- */
-
+/*
+ * The file comp_captab.c contains an array of these structures, one per
+ * possible capability. These are indexed by a hash table array of pointers to
+ * the same structures for use by the parser.
+ */
struct name_table_entry
{
const char *nte_name; /* name to hash on */
@@ -199,10 +195,9 @@ struct name_table_entry
HashValue nte_link; /* index in table of next hash, or -1 */
};
- /*
- * Use this structure to hide differences between terminfo and termcap
- * tables.
- */
+/*
+ * Use this structure to hide differences between terminfo and termcap tables.
+ */
typedef struct {
unsigned table_size;
const HashValue *table_data;
@@ -217,14 +212,24 @@ struct alias
const char *source;
};
-extern NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool);
-extern NCURSES_EXPORT(const HashData *) _nc_get_hash_info (bool);
-extern NCURSES_EXPORT(const HashValue *) _nc_get_hash_table (bool);
-extern NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool);
-
#define NOTFOUND ((struct name_table_entry *) 0)
/*
+ * The file comp_userdefs.c contains an array of these structures, one per
+ * possible capability. These are indexed by a hash table array of pointers to
+ * the same structures for use by the parser.
+ */
+struct user_table_entry
+{
+ const char *ute_name; /* name to hash on */
+ int ute_type; /* mask (BOOLEAN, NUMBER, STRING) */
+ unsigned ute_argc; /* number of parameters */
+ unsigned ute_args; /* bit-mask for string parameters */
+ HashValue ute_index; /* index of associated variable in its array */
+ HashValue ute_link; /* index in table of next hash, or -1 */
+};
+
+/*
* The casts are required for correct sign-propagation with systems such as
* AIX, IRIX64, Solaris which default to unsigned characters. The C standard
* leaves this detail unspecified.
@@ -256,6 +261,10 @@ extern NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool);
#ifdef NCURSES_TERM_ENTRY_H_incl
+/*
+ * These entrypoints are used only by the ncurses utilities such as tic.
+ */
+#ifdef NCURSES_INTERNALS
/* access.c */
extern NCURSES_EXPORT(unsigned) _nc_pathlast (const char *);
extern NCURSES_EXPORT(bool) _nc_is_abs_path (const char *);
@@ -264,17 +273,21 @@ extern NCURSES_EXPORT(bool) _nc_is_file_path (const char *);
extern NCURSES_EXPORT(char *) _nc_basename (char *);
extern NCURSES_EXPORT(char *) _nc_rootname (char *);
+/* comp_captab.c */
+extern NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool);
+extern NCURSES_EXPORT(const HashData *) _nc_get_hash_info (bool);
+extern NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool);
+
/* comp_hash.c: name lookup */
-extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_entry
- (const char *, const HashValue *);
extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_type_entry
(const char *, int, bool);
+extern NCURSES_EXPORT(struct user_table_entry const *) _nc_find_user_entry
+ (const char *);
/* comp_scan.c: lexical analysis */
extern NCURSES_EXPORT(int) _nc_get_token (bool);
extern NCURSES_EXPORT(void) _nc_panic_mode (char);
extern NCURSES_EXPORT(void) _nc_push_token (int);
-extern NCURSES_EXPORT(void) _nc_reset_input (FILE *, char *);
extern NCURSES_EXPORT_VAR(int) _nc_curr_col;
extern NCURSES_EXPORT_VAR(int) _nc_curr_line;
extern NCURSES_EXPORT_VAR(int) _nc_syntax;
@@ -296,11 +309,12 @@ extern NCURSES_EXPORT(void) _nc_syserr_abort (const char *const,...) GCC_PRINTFL
extern NCURSES_EXPORT(void) _nc_warning (const char *const,...) GCC_PRINTFLIKE(1,2);
extern NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings;
-/* comp_expand.c: expand string into readable form */
-extern NCURSES_EXPORT(char *) _nc_tic_expand (const char *, bool, int);
+/* comp_scan.c */
+extern NCURSES_EXPORT_VAR(struct token) _nc_curr_token;
-/* comp_scan.c: decode string from readable form */
-extern NCURSES_EXPORT(int) _nc_trans_string (char *, char *);
+/* comp_userdefs.c */
+NCURSES_EXPORT(const struct user_table_entry *) _nc_get_userdefs_table (void);
+NCURSES_EXPORT(const HashData *) _nc_get_hash_user (void);
/* captoinfo.c: capability conversion */
extern NCURSES_EXPORT(char *) _nc_captoinfo (const char *, const char *, int const);
@@ -309,6 +323,14 @@ extern NCURSES_EXPORT(char *) _nc_infotocap (const char *, const char *, int con
/* home_terminfo.c */
extern NCURSES_EXPORT(char *) _nc_home_terminfo (void);
+/* init_keytry.c */
+#if BROKEN_LINKER
+#define _nc_tinfo_fkeys _nc_tinfo_fkeysf()
+extern NCURSES_EXPORT(const struct tinfo_fkeys *) _nc_tinfo_fkeysf (void);
+#else
+extern NCURSES_EXPORT_VAR(const struct tinfo_fkeys) _nc_tinfo_fkeys[];
+#endif
+
/* lib_tparm.c */
#define NUM_PARM 9
@@ -316,8 +338,13 @@ extern NCURSES_EXPORT_VAR(int) _nc_tparm_err;
extern NCURSES_EXPORT(int) _nc_tparm_analyze(const char *, char **, int *);
+/* lib_trace.c */
+extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing;
+extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
+extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);
+
/* lib_tputs.c */
-extern NCURSES_EXPORT_VAR(int) _nc_nulls_sent; /* Add one for every null sent */
+extern NCURSES_EXPORT_VAR(int) _nc_nulls_sent; /* Add one for every null sent */
/* comp_main.c: compiler main */
extern const char * _nc_progname;
@@ -331,6 +358,33 @@ extern NCURSES_EXPORT(void) _nc_last_db(void);
/* write_entry.c */
extern NCURSES_EXPORT(int) _nc_tic_written (void);
+#endif /* NCURSES_INTERNALS */
+
+/*
+ * These entrypoints were used by tack before 1.08.
+ */
+
+#undef NCURSES_TACK_1_08
+#ifdef NCURSES_INTERNALS
+#define NCURSES_TACK_1_08 /* nothing */
+#else
+#define NCURSES_TACK_1_08 GCC_DEPRECATED("upgrade to tack 1.08")
+#endif
+
+/* comp_hash.c: name lookup */
+extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_entry
+ (const char *, const HashValue *) NCURSES_TACK_1_08;
+extern NCURSES_EXPORT(const HashValue *) _nc_get_hash_table (bool) NCURSES_TACK_1_08;
+
+/* comp_scan.c: lexical analysis */
+extern NCURSES_EXPORT(void) _nc_reset_input (FILE *, char *) NCURSES_TACK_1_08;
+
+/* comp_expand.c: expand string into readable form */
+extern NCURSES_EXPORT(char *) _nc_tic_expand (const char *, bool, int) NCURSES_TACK_1_08;
+
+/* comp_scan.c: decode string from readable form */
+extern NCURSES_EXPORT(int) _nc_trans_string (char *, char *) NCURSES_TACK_1_08;
+
#endif /* NCURSES_TERM_ENTRY_H_incl */
#ifdef __cplusplus
diff --git a/man/MKada_config.in b/man/MKada_config.in
index 2be3c419ec8f..86db2ec9e42f 100644
--- a/man/MKada_config.in
+++ b/man/MKada_config.in
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2010,2011 Free Software Foundation, Inc. *
+.\" Copyright (c) 2010-2016,2019 Free 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,30 +26,96 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: MKada_config.in,v 1.5 2011/03/26 14:44:51 tom Exp $
+.\" $Id: MKada_config.in,v 1.11 2019/09/07 20:22:51 tom Exp $
+.ds C adacurses@USE_CFG_SUFFIX@\-config
.TH ADACURSES "1" "" "" "User Commands"
.SH NAME
-adacurses\-config \- helper script for AdaCurses libraries
+adacurses@USE_CFG_SUFFIX@\-config \- helper script for @ADA_LIBNAME@ libraries
.SH SYNOPSIS
-.B adacurses\-config
+.B \*C
[\fIoptions\fR]
.SH DESCRIPTION
This is a shell script which simplifies configuring an application to use
-the AdaCurses library binding to ncurses.
+the @ADA_LIBNAME@ library binding to ncurses.
.SH OPTIONS
.TP
\fB\-\-cflags\fR
-echos the gnat (Ada compiler) flags needed to compile with AdaCurses.
+echos the gnat (Ada compiler) flags needed to compile with @ADA_LIBNAME@.
.TP
\fB\-\-libs\fR
-echos the gnat libraries needed to link with AdaCurses.
+echos the gnat libraries needed to link with @ADA_LIBNAME@.
.TP
\fB\-\-version\fR
echos the release+patchdate version of the ncurses libraries used
-to configure and build AdaCurses.
+to configure and build @ADA_LIBNAME@.
.TP
\fB\-\-help\fR
-prints a list of the \fBadacurses\-config\fP script's options.
+prints a list of the \fB\*C\fP script's options.
+.PP
+If no options are given, \fB\*C\fP prints the combination
+of
+\fB\-\-cflags\fR and
+\fB\-\-libs\fR
+that \fBgnatmake\fP expects (see example).
+.SH EXAMPLE
+.PP
+For example, supposing that you want to compile the "Hello World!"
+program for @ADA_LIBNAME@.
+Make a file named "hello.adb":
+.RS
+.nf
+.ft CW
+with Terminal_Interface.Curses; use Terminal_Interface.Curses;
+
+procedure Hello is
+
+ Visibility : Cursor_Visibility := Invisible;
+ done : Boolean := False;
+ c : Key_Code;
+
+begin
+
+ Init_Screen;
+ Set_Echo_Mode (False);
+
+ Set_Cursor_Visibility (Visibility);
+ Set_Timeout_Mode (Standard_Window, Non_Blocking, 0);
+
+ Move_Cursor (Line => Lines / 2, Column => (Columns - 12) / 2);
+ Add (Str => "Hello World!");
+
+ while not done loop
+
+ c := Get_Keystroke (Standard_Window);
+ case c is
+ when Character'Pos ('q') => done := True;
+ when others => null;
+ end case;
+
+ Nap_Milli_Seconds (50);
+ end loop;
+
+ End_Windows;
+
+end Hello;
+.fi
+.RE
+.PP
+Then, using
+.RS
+.ft CW
+gnatmake `adacurses-config --cflags` hello -largs `adacurses-config --libs`
+.ft
+.RE
+.PP
+or (simpler):
+.RS
+.ft CW
+gnatmake hello `adacurses-config`
+.ft
+.RE
+.PP
+you will compile and link the program.
.SH "SEE ALSO"
\fBcurses\fR(3X)
.PP
diff --git a/man/MKterminfo.sh b/man/MKterminfo.sh
index 3a9960956567..7c0378cdcfdd 100755
--- a/man/MKterminfo.sh
+++ b/man/MKterminfo.sh
@@ -1,10 +1,10 @@
#!/bin/sh
-# $Id: MKterminfo.sh,v 1.12 2003/01/11 21:42:12 tom Exp $
+# $Id: MKterminfo.sh,v 1.17 2019/03/02 22:18:27 tom Exp $
#
# MKterminfo.sh -- generate terminfo.5 from Caps tabular data
#
#***************************************************************************
-# Copyright (c) 1998,2002,2003 Free Software Foundation, Inc. *
+# Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
# *
# Permission is hereby granted, free of charge, to any person obtaining a *
# copy of this software and associated documentation files (the *
@@ -50,25 +50,34 @@ if test "${LC_COLLATE+set}" = set; then LC_COLLATE=C; export LC_COLLATE; fi
#
head=$1
-caps=$2
-tail=$3
-cat <<'EOF'
-'\" t
-.\" DO NOT EDIT THIS FILE BY HAND!
-.\" It is generated from terminfo.head, Caps, and terminfo.tail.
-.\"
-.\" Note: this must be run through tbl before nroff.
-.\" The magic cookie on the first line triggers this under some man programs.
+shift 1
+caps=
+while test $# -gt 1
+do
+ caps="$caps $1"
+ shift 1
+done
+tail=$1
+cat <<EOF
+'\\" t
+.\\" DO NOT EDIT THIS FILE BY HAND!
+.\\" It is generated from terminfo.head, $caps, and terminfo.tail.
+.\\"
+.\\" Note: this must be run through tbl before nroff.
+.\\" The magic cookie on the first line triggers this under some man programs.
EOF
cat $head
temp=temp$$
sorted=sorted$$
unsorted=unsorted$$
-trap "rm -f $sorted $temp $unsorted; exit 99" 1 2 5 15
+trap "code=\$?; rm -f $sorted $temp $unsorted; exit \$code" EXIT HUP INT QUIT TERM
+rm -f $sorted $temp $unsorted
-sed -n <$caps "\
+cat $caps | sed -n "\
/%%-STOP-HERE-%%/q
+/^#%center/s, expand,,
+/^#%lw25/s, lw6 , lw7 ,
/^#%/s/#%//p
/^#/d
s/[ ][ ]*/ /g
@@ -105,6 +114,7 @@ done <$unsorted
test $saved = yes && sort $temp >>$sorted
sed -e 's/^\.\.$//' $sorted | tr "\005\006" "\012\134"
-cat $tail
-rm -f $sorted $temp $unsorted
+sed -e '/^center expand;/s, expand,,' \
+ -e '/^\.TS/,/^\\/s, lw[1-9][0-9]*\., l.,' \
+ $tail
diff --git a/man/Makefile.in b/man/Makefile.in
index ad40bc53a2c2..8f6b27126fa7 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.47 2013/08/04 20:23:20 tom Exp $
+# $Id: Makefile.in,v 1.49 2019/03/02 22:18:27 tom Exp $
##############################################################################
-# Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2015,2019 Free 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"), #
@@ -34,7 +34,7 @@
# NOTE: When you add or rename a man page, make sure you update both
# the top-level MANIFEST and any man/*.renames files!
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
DESTDIR = @DESTDIR@
@@ -62,15 +62,20 @@ $(DESTDIR)$(mandir) :
EDITARGS = $(DESTDIR)$(mandir) $(srcdir) terminfo.5 *-config.1 $(srcdir)/*.[0-9]*
install install.man : terminfo.5 $(DESTDIR)$(mandir)
- sh ../edit_man.sh normal installing $(EDITARGS)
+ $(SHELL) ../edit_man.sh normal installing $(EDITARGS)
uninstall uninstall.man :
- -sh ../edit_man.sh normal removing $(EDITARGS)
+ -$(SHELL) ../edit_man.sh normal removing $(EDITARGS)
# We compose terminfo.5 from the real sources...
-CAPLIST=$(srcdir)/../include/@TERMINFO_CAPS@
-terminfo.5: $(srcdir)/terminfo.head $(CAPLIST) $(srcdir)/terminfo.tail Makefile $(srcdir)/MKterminfo.sh
- sh $(srcdir)/MKterminfo.sh $(srcdir)/terminfo.head $(CAPLIST) $(srcdir)/terminfo.tail >terminfo.5
+CAPLIST = \
+ $(srcdir)/../include/@TERMINFO_CAPS@ \
+ $(srcdir)/../include/Caps-ncurses
+terminfo.5: $(srcdir)/terminfo.head \
+ $(CAPLIST) \
+ $(srcdir)/terminfo.tail \
+ Makefile $(srcdir)/MKterminfo.sh
+ $(SHELL) $(srcdir)/MKterminfo.sh $(srcdir)/terminfo.head $(CAPLIST) $(srcdir)/terminfo.tail >terminfo.5
mostlyclean :
-rm -f core tags TAGS *~ *.bak *.ln *.atac trace
@@ -79,7 +84,7 @@ clean: mostlyclean
rm -f terminfo.5
../edit_man.sed : make_sed.sh @MANPAGE_RENAMES@
- sh $(srcdir)/make_sed.sh @MANPAGE_RENAMES@ >../edit_man.sed
+ $(SHELL) $(srcdir)/make_sed.sh @MANPAGE_RENAMES@ >../edit_man.sed
distclean realclean: clean
rm -f Makefile *-config.1 ../edit_man.* ../man_alias.*
diff --git a/man/captoinfo.1m b/man/captoinfo.1m
index c7a33643f706..4fa155e40c85 100644
--- a/man/captoinfo.1m
+++ b/man/captoinfo.1m
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,14 +27,14 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: captoinfo.1m,v 1.25 2010/12/04 18:36:44 tom Exp $
+.\" $Id: captoinfo.1m,v 1.29 2019/10/12 21:10:00 tom Exp $
.TH @CAPTOINFO@ 1M ""
.ds n 5
.ds d @TERMINFO@
.SH NAME
\fB@CAPTOINFO@\fR \- convert a \fItermcap\fR description into a \fIterminfo\fR description
.SH SYNOPSIS
-\fB@CAPTOINFO@\fR [\fB\-v\fR\fIn\fR \fIwidth\fR] [\fB\-V\fR] [\fB\-1\fR] [\fB\-w\fR \fIwidth\fR] \fIfile\fR . . .
+\fB@CAPTOINFO@\fR [\fB\-v\fR\fIn\fR \fIwidth\fR] [\fB\-V\fR] [\fB\-1\fR] [\fB\-w\fR \fIwidth\fR] \fIfile\fR ...
.SH DESCRIPTION
\fB@CAPTOINFO@\fR looks in each given text
\fIfile\fR for \fBtermcap\fR descriptions.
@@ -152,7 +152,7 @@ GG acs magic cookie count
.TE
.PP
If the single-line capabilities occur in an entry, they will automatically
-be composed into an \fIacsc\fR string.
+be composed into an \fBacsc\fR string.
The double-line capabilities and
\fBGG\fR are discarded with a warning message.
.PP
@@ -174,18 +174,24 @@ font3 s3ds
.TE
.PP
Additionally, the AIX \fIbox1\fR capability will be automatically translated to
-an \fIacsc\fR string.
+an \fBacsc\fR string.
.PP
Hewlett-Packard's terminfo library supports two nonstandard terminfo
-capabilities \fImeml\fR (memory lock) and \fImemu\fR (memory unlock).
+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 \fB@TIC@\fR(1M), running in \fI\-I\fR mode.
You can use other \fB@TIC@\fR options such as \fB\-f\fR and \fB\-x\fR.
.PP
-The trace option is not identical to SVr4's.
+The verbose option is not identical to SVr4's.
Under SVr4, instead of following
the \fB\-v\fR with a trace level n, you repeat it n times.
+.SH PORTABILITY
+X/Open Curses, Issue 7 (2009) describes \fBtic\fP briefly,
+but omits this program.
+SVr4 systems provide \fBcaptoinfo\fP as a separate application from \fBtic\fP.
+.PP
+NetBSD does not provide this application.
.SH SEE ALSO
\fB@INFOCMP@\fR(1M),
\fBcurses\fR(3X),
diff --git a/man/clear.1 b/man/clear.1
index d8e24e5bb926..21ce43c2c32e 100644
--- a/man/clear.1
+++ b/man/clear.1
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2018 Free 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,21 +26,135 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: clear.1,v 1.10 2013/06/22 22:22:11 tom Exp $
+.\" $Id: clear.1,v 1.22 2018/07/28 21:45:40 tom Exp $
.TH @CLEAR@ 1 ""
+.\" these would be fallbacks for DS/DE,
+.\" but groff changed the meaning of the macros.
+.de NS
+.ie n .sp
+.el .sp .5
+.ie n .in +4
+.el .in +2
+.nf
+.ft C \" Courier
+..
+.de NE
+.fi
+.ft R
+.ie n .in -4
+.el .in -2
+..
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.ds n 5
.SH NAME
\fB@CLEAR@\fR \- clear the terminal screen
.SH SYNOPSIS
-\fB@CLEAR@\fR
+\fB@CLEAR@\fR [\fB\-T\fR\fItype\fR] [\fB\-V\fP] [\fB\-x\fP]
.br
.SH DESCRIPTION
\fB@CLEAR@\fR clears your screen if this is possible,
-including its scrollback buffer (if the extended "E3" capability is defined).
-\fB@CLEAR@\fR looks in the environment for the terminal type and then in the
+including its scrollback buffer
+(if the extended \*(``E3\*('' capability is defined).
+\fB@CLEAR@\fR looks in the environment for the terminal type
+given by the environment variable \fBTERM\fP,
+and then in the
\fBterminfo\fR database to determine how to clear the screen.
.PP
-\fB@CLEAR@\fR ignores any command-line parameters that may be present.
+\fB@CLEAR@\fR writes to the standard output.
+You can redirect the standard output to a file (which prevents
+\fB@CLEAR@\fR from actually clearing the screen),
+and later \fBcat\fP the file to the screen, clearing it at that point.
+.SH OPTIONS
+.PP
+.TP 5
+.B \-T \fItype\fP
+indicates the \fItype\fR of terminal.
+Normally this option is
+unnecessary, because the default is taken from the environment
+variable \fBTERM\fR.
+If \fB\-T\fR is specified, then the shell
+variables \fBLINES\fR and \fBCOLUMNS\fR will also be ignored.
+.TP
+.B \-V
+reports the version of ncurses which was used in this program, and exits.
+The options are as follows:
+.TP
+.B \-x
+do not attempt to clear the terminal's scrollback buffer
+using the extended \*(``E3\*('' capability.
+.SH HISTORY
+A \fBclear\fP command appeared in 2.79BSD dated February 24, 1979.
+Later that was provided in Unix 8th edition (1985).
+.PP
+AT&T adapted a different BSD program (\fBtset\fP) to make
+a new command (\fBtput\fP),
+and used this to replace the \fBclear\fP command with a shell script
+which calls \fBtput clear\fP, e.g.,
+.NS
+/usr/bin/tput ${1:+-T$1} clear 2> /dev/null
+exit
+.NE
+.PP
+In 1989, when Keith Bostic revised the BSD \fBtput\fP command
+to make it similar to the AT&T \fBtput\fP,
+he added a shell script for the \fBclear\fP command:
+.NS
+exec tput clear
+.NE
+.PP
+The remainder of the script in each case is a copyright notice.
+.PP
+The ncurses \fBclear\fP command began in 1995 by adapting the original
+BSD \fBclear\fP command (with terminfo, of course).
+.PP
+The \fBE3\fP extension came later:
+.bP
+In June 1999, xterm provided an extension to the standard control
+sequence for clearing the screen.
+Rather than clearing just the visible part of the screen using
+.NS
+printf '\\033[2J'
+.NE
+.IP
+one could clear the \fIscrollback\fP using
+.NS
+printf '\\033[\fB3\fPJ'
+.NE
+.IP
+This is documented in \fIXTerm Control Sequences\fP as a feature originating
+with xterm.
+.bP
+A few other terminal developers adopted the feature, e.g., PuTTY in 2006.
+.bP
+In April 2011, a Red Hat developer submitted a patch to the Linux
+kernel, modifying its console driver to do the same thing.
+The Linux change, part of the 3.0 release, did not mention xterm,
+although it was cited in the Red Hat bug report (#683733)
+which led to the change.
+.bP
+Again, a few other terminal developers adopted the feature.
+But the
+next relevant step was a change to the \fBclear\fP program in 2013
+to incorporate this extension.
+.bP
+In 2013, the \fBE3\fP extension was overlooked in \fB@TPUT@\fP with
+the \*(``clear\*('' parameter.
+That was addressed in 2016 by reorganizing \fB@TPUT@\fP to share
+its logic with \fB@CLEAR@\fP and \fB@TSET@\fP.
+.SH PORTABILITY
+Neither IEEE Std 1003.1/The Open Group Base Specifications Issue 7
+(POSIX.1-2008) nor X/Open Curses Issue 7 documents @TSET@ or @RESET@.
+.PP
+The latter documents \fBtput\fP, which could be used to replace this utility
+either via a shell script or by an alias (such as a symbolic link) to
+run \fB@TPUT@\fP as \fB@CLEAR@\fP.
.SH SEE ALSO
\fB@TPUT@\fR(1), \fBterminfo\fR(\*n)
.PP
diff --git a/man/curs_add_wch.3x b/man/curs_add_wch.3x
index b7164ada0e2b..245cc17e0cae 100644
--- a/man/curs_add_wch.3x
+++ b/man/curs_add_wch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2001-2011,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 2001-2017,2019 Free 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,10 +26,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_add_wch.3x,v 1.15 2012/11/03 23:03:59 tom Exp $
+.\" $Id: curs_add_wch.3x,v 1.25 2019/10/27 00:07:13 tom Exp $
.TH curs_add_wch 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.SH NAME
\fBadd_wch\fP,
@@ -55,6 +60,7 @@
.B "int wecho_wchar( WINDOW *\fIwin\fP, const cchar_t *\fIwch\fB );"
.br
.SH DESCRIPTION
+.SS add_wch
.PP
The
\fBadd_wch\fP,
@@ -83,12 +89,13 @@ and the rendition specified by \fIwch\fP is ignored.
If the character part of \fIwch\fP is
a tab, newline, backspace or other control character,
the window is updated and the cursor moves as if \fBaddch\fR were called.
+.SS echo_wchar
.PP
The \fBecho_wchar\fP
function is functionally equivalent to a call to
\fBadd_wch\fP
followed by a call to
-\fBrefresh\fP.
+\fBrefresh\fP(3X).
Similarly, the
\fBwecho_wchar\fP
is functionally equivalent to a call to
@@ -107,80 +114,104 @@ These symbols correspond to the same VT100 line-drawing set as
\fBaddch\fP(3X).
.PP
.TS
-l l l l
-_ _ _ _
-lw(1.5i) lw7 lw7 lw20.
-\fIName\fR \fIUnicode\fP \fIDefault\fR \fIDescription\fR
-WACS_BLOCK 0x25ae # solid square block
-WACS_BOARD 0x2592 # board of squares
-WACS_BTEE 0x2534 + bottom tee
-WACS_BULLET 0x00b7 o bullet
-WACS_CKBOARD 0x2592 : checker board (stipple)
-WACS_DARROW 0x2193 v arrow pointing down
-WACS_DEGREE 0x00b0 ' degree symbol
-WACS_DIAMOND 0x25c6 + diamond
-WACS_GEQUAL 0x2265 > greater-than-or-equal-to
-WACS_HLINE 0x2500 \- horizontal line
-WACS_LANTERN 0x2603 # lantern symbol
-WACS_LARROW 0x2190 < arrow pointing left
-WACS_LEQUAL 0x2264 < less-than-or-equal-to
-WACS_LLCORNER 0x2514 + lower left-hand corner
-WACS_LRCORNER 0x2518 + lower right-hand corner
-WACS_LTEE 0x2524 + left tee
-WACS_NEQUAL 0x2260 ! not-equal
-WACS_PI 0x03c0 * greek pi
-WACS_PLMINUS 0x00b1 # plus/minus
-WACS_PLUS 0x253c + plus
-WACS_RARROW 0x2192 > arrow pointing right
-WACS_RTEE 0x251c + right tee
-WACS_S1 0x23ba \- scan line 1
-WACS_S3 0x23bb \- scan line 3
-WACS_S7 0x23bc \- scan line 7
-WACS_S9 0x23bd \&_ scan line 9
-WACS_STERLING 0x00a3 f pound-sterling symbol
-WACS_TTEE 0x252c + top tee
-WACS_UARROW 0x2191 ^ arrow pointing up
-WACS_ULCORNER 0x250c + upper left-hand corner
-WACS_URCORNER 0x2510 + upper right-hand corner
-WACS_VLINE 0x2502 | vertical line
+l l l l l
+l l l l l
+_ _ _ _ _
+lw(1.5i) lw5 lw5 lw5 lw20.
+\fBACS\fR \fBUnicode\fP \fBASCII\fR \fBacsc\fP \fBGlyph\fR
+\fBName\fR \fBDefault\fP \fBDefault\fR \fBchar\fP \fBName\fR
+WACS_BLOCK 0x25ae # 0 solid square block
+WACS_BOARD 0x2592 # h board of squares
+WACS_BTEE 0x2534 + v bottom tee
+WACS_BULLET 0x00b7 o ~ bullet
+WACS_CKBOARD 0x2592 : a checker board (stipple)
+WACS_DARROW 0x2193 v . arrow pointing down
+WACS_DEGREE 0x00b0 ' f degree symbol
+WACS_DIAMOND 0x25c6 + ` diamond
+WACS_GEQUAL 0x2265 > > greater-than-or-equal-to
+WACS_HLINE 0x2500 \- q horizontal line
+WACS_LANTERN 0x2603 # i lantern symbol
+WACS_LARROW 0x2190 < , arrow pointing left
+WACS_LEQUAL 0x2264 < y less-than-or-equal-to
+WACS_LLCORNER 0x2514 + m lower left-hand corner
+WACS_LRCORNER 0x2518 + j lower right-hand corner
+WACS_LTEE 0x2524 + t left tee
+WACS_NEQUAL 0x2260 ! | not-equal
+WACS_PI 0x03c0 * { greek pi
+WACS_PLMINUS 0x00b1 # g plus/minus
+WACS_PLUS 0x253c + n plus
+WACS_RARROW 0x2192 > + arrow pointing right
+WACS_RTEE 0x251c + u right tee
+WACS_S1 0x23ba \- o scan line 1
+WACS_S3 0x23bb \- p scan line 3
+WACS_S7 0x23bc \- r scan line 7
+WACS_S9 0x23bd \&_ s scan line 9
+WACS_STERLING 0x00a3 f } pound-sterling symbol
+WACS_TTEE 0x252c + w top tee
+WACS_UARROW 0x2191 ^ \- arrow pointing up
+WACS_ULCORNER 0x250c + l upper left-hand corner
+WACS_URCORNER 0x2510 + k upper right-hand corner
+WACS_VLINE 0x2502 | x vertical line
.TE
.PP
The wide-character configuration of ncurses also defines symbols
-for thick- and double-lines:
+for thick lines (\fBacsc\fP \*(``J\*('' to \*(``V\*(''):
+.TS
+l l l l l
+l l l l l
+_ _ _ _ _
+lw(1.5i) lw5 lw5 lw5 lw20.
+\fBACS\fR \fBUnicode\fP \fBASCII\fR \fBacsc\fP \fBGlyph\fR
+\fBName\fR \fBDefault\fP \fBDefault\fR \fBchar\fP \fBName\fR
+WACS_T_BTEE 0x253b + V thick tee pointing up
+WACS_T_HLINE 0x2501 - Q thick horizontal line
+WACS_T_LLCORNER 0x2517 + M thick lower left corner
+WACS_T_LRCORNER 0x251b + J thick lower right corner
+WACS_T_LTEE 0x252b + T thick tee pointing right
+WACS_T_PLUS 0x254b + N thick large plus
+WACS_T_RTEE 0x2523 + U thick tee pointing left
+WACS_T_TTEE 0x2533 + W thick tee pointing down
+WACS_T_ULCORNER 0x250f + L thick upper left corner
+WACS_T_URCORNER 0x2513 + K thick upper right corner
+WACS_T_VLINE 0x2503 | X thick vertical line
+.TE
+.PP
+and for double-lines (\fBacsc\fP \*(``A\*('' to \*(``I\*(''):
.PP
.TS
-l l l l
-_ _ _ _
-lw(1.5i) lw7 lw7 lw20.
-\fIName\fR \fIUnicode\fP \fIDefault\fR \fIDescription\fR
-WACS_T_ULCORNER 0x250f + thick upper left corner
-WACS_T_LLCORNER 0x2517 + thick lower left corner
-WACS_T_URCORNER 0x2513 + thick upper right corner
-WACS_T_LRCORNER 0x251b + thick lower right corner
-WACS_T_LTEE 0x252b + thick tee pointing right
-WACS_T_RTEE 0x2523 + thick tee pointing left
-WACS_T_BTEE 0x253b + thick tee pointing up
-WACS_T_TTEE 0x2533 + thick tee pointing down
-WACS_T_HLINE 0x2501 - thick horizontal line
-WACS_T_VLINE 0x2503 | thick vertical line
-WACS_T_PLUS 0x254b + thick large plus or crossover
-WACS_D_ULCORNER 0x2554 + double upper left corner
-WACS_D_LLCORNER 0x255a + double lower left corner
-WACS_D_URCORNER 0x2557 + double upper right corner
-WACS_D_LRCORNER 0x255d + double lower right corner
-WACS_D_RTEE 0x2563 + double tee pointing left
-WACS_D_LTEE 0x2560 + double tee pointing right
-WACS_D_BTEE 0x2569 + double tee pointing up
-WACS_D_TTEE 0x2566 + double tee pointing down
-WACS_D_HLINE 0x2550 - double horizontal line
-WACS_D_VLINE 0x2551 | double vertical line
-WACS_D_PLUS 0x256c + double large plus or crossover
+l l l l l
+l l l l l
+_ _ _ _ _
+lw(1.5i) lw5 lw5 lw5 lw20.
+\fBACS\fR \fBUnicode\fP \fBASCII\fR \fBacsc\fP \fBGlyph\fR
+\fBName\fR \fBDefault\fP \fBDefault\fR \fBchar\fP \fBName\fR
+WACS_D_BTEE 0x2569 + H double tee pointing up
+WACS_D_HLINE 0x2550 - R double horizontal line
+WACS_D_LLCORNER 0x255a + D double lower left corner
+WACS_D_LRCORNER 0x255d + A double lower right corner
+WACS_D_LTEE 0x2560 + F double tee pointing right
+WACS_D_PLUS 0x256c + E double large plus
+WACS_D_RTEE 0x2563 + G double tee pointing left
+WACS_D_TTEE 0x2566 + I double tee pointing down
+WACS_D_ULCORNER 0x2554 + C double upper left corner
+WACS_D_URCORNER 0x2557 + B double upper right corner
+WACS_D_VLINE 0x2551 | Y double vertical line
.TE
+.PP
+Unicode's descriptions for these characters differs slightly from ncurses,
+by introducing the term \*(``light\*('' (along with less important details).
+Here are its descriptions for the normal, thick, and double horizontal lines:
+.bP
+U+2500 BOX DRAWINGS LIGHT HORIZONTAL
+.bP
+U+2501 BOX DRAWINGS HEAVY HORIZONTAL
+.bP
+U+2550 BOX DRAWINGS DOUBLE HORIZONTAL
.SH RETURN VALUE
.PP
All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
@@ -213,7 +244,66 @@ SVr4 curses implementations defined their line-drawing symbols in
terms of intermediate symbols.
This implementation extends those symbols, providing new definitions
which are not in the SVr4 implementations.
+.PP
+Not all Unicode-capable terminals provide support for VT100-style
+alternate character sets (i.e., the \fBacsc\fP capability),
+with their corresponding line-drawing characters.
+X/Open Curses did not address the aspect of integrating Unicode with
+line-drawing characters.
+Existing implementations of Unix curses (AIX, HPUX, Solaris)
+use only the \fBacsc\fP character-mapping to provide this feature.
+As a result, those implementations can only use single-byte line-drawing
+characters.
+Ncurses 5.3 (2002) provided a table of Unicode values to solve these problems.
+NetBSD curses incorporated that table in 2010.
+.PP
+In this implementation, the Unicode values are used instead of the
+terminal description's \fBacsc\fP mapping as discussed in ncurses(3X)
+for the environment variable \fBNCURSES_NO_UTF8_ACS\fP.
+In contrast, for the same cases, the line-drawing characters
+described in \fBcurs_addch\fP(3X) will use only the ASCII default values.
+.PP
+Having Unicode available does not solve all of the problems with
+line-drawing for curses:
+.bP
+The closest Unicode equivalents to the
+VT100 graphics \fIS1\fP, \fIS3\fP, \fIS7\fP and \fIS9\fP
+frequently are not displayed at
+the regular intervals which the terminal used.
+.bP
+The \fIlantern\fP is a special case.
+It originated with the AT&T 4410 terminal in the early 1980s.
+There is no accessible documentation depicting the lantern symbol
+on the AT&T terminal.
+.IP
+Lacking documentation, most readers assume that a \fIstorm lantern\fP
+was intended.
+But there are several possibilities, all with problems.
+.IP
+Unicode 6.0 (2010) does provide two lantern symbols: U+1F383 and U+1F3EE.
+Those were not available in 2002, and are irrelevant since
+they lie outside the BMP and as a result are not generally available
+in terminals.
+They are not storm lanterns, in any case.
+.IP
+Most \fIstorm lanterns\fP have a tapering glass chimney
+(to guard against tipping);
+some have a wire grid protecting the chimney.
+.IP
+For the tapering appearance, \[u2603] U+2603 was adequate.
+In use on a terminal, no one can tell what the image represents.
+Unicode calls it a snowman.
+.IP
+Others have suggested these alternatives:
+\[sc] U+00A7 (section mark),
+\[u0398] U+0398 (theta),
+\[u03A6] U+03A6 (phi),
+\[u03B4] U+03B4 (delta),
+\[u2327] U+2327 (x in a rectangle),
+\[u256C] U+256C (forms double vertical and horizontal), and
+\[u2612] U+2612 (ballot box with x).
.SH SEE ALSO
+.na
.PP
\fBcurses\fR(3X),
\fBcurs_addch\fR(3X),
diff --git a/man/curs_add_wchstr.3x b/man/curs_add_wchstr.3x
index 37e3df614b16..ccc077b3ac16 100644
--- a/man/curs_add_wchstr.3x
+++ b/man/curs_add_wchstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2017,2019 Free 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,10 +26,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_add_wchstr.3x,v 1.10 2012/11/03 22:54:43 tom Exp $
+.\" $Id: curs_add_wchstr.3x,v 1.12 2019/11/30 21:06:30 tom Exp $
.TH curs_add_wchstr 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.na
.hy 0
@@ -101,7 +106,7 @@ X/Open does not define any error conditions.
This implementation returns an error
if the window pointer is null.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
diff --git a/man/curs_addch.3x b/man/curs_addch.3x
index 1ad071a8a8a0..ee980aac5435 100644
--- a/man/curs_addch.3x
+++ b/man/curs_addch.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +27,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_addch.3x,v 1.32 2011/01/15 14:15:10 tom Exp $
+.\" $Id: curs_addch.3x,v 1.50 2019/11/30 20:07:00 tom Exp $
.TH curs_addch 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.SH NAME
\fBaddch\fR,
\fBwaddch\fR,
@@ -52,93 +60,118 @@
\fBint wechochar(WINDOW *win, const chtype ch);\fR
.br
.SH DESCRIPTION
+.SS Adding characters
The \fBaddch\fR, \fBwaddch\fR, \fBmvaddch\fR and \fBmvwaddch\fR routines put
the character \fIch\fR into the given window at its current window position,
-which is then advanced. They are analogous to \fBputchar\fR in \fBstdio\fR(3).
-If the advance is at the right margin, the cursor automatically wraps to the
-beginning of the next line. At the bottom of the current scrolling region, if
-\fBscrollok\fR is enabled, the scrolling region is scrolled up one line.
+which is then advanced.
+They are analogous to \fBputchar\fR(3) in \fBstdio\fR(3).
+If the advance is at the right margin:
+.bP
+The cursor automatically wraps to the beginning of the next line.
+.bP
+At the bottom of the current scrolling region,
+and if \fBscrollok\fR is enabled,
+the scrolling region is scrolled up one line.
+.bP
+If \fBscrollok\fR is not enabled,
+writing a character at the lower right margin succeeds.
+However, an error is returned because
+it is not possible to wrap to a new line
.PP
-If \fIch\fR is a tab, newline, or backspace,
-the cursor is moved appropriately within the window.
+If \fIch\fR is a tab, newline, carriage return or backspace,
+the cursor is moved appropriately within the window:
+.bP
Backspace moves the cursor one character left; at the left
edge of a window it does nothing.
+.bP
+Carriage return moves the cursor to the window left margin on the current line.
+.bP
Newline does a \fBclrtoeol\fR,
then moves the cursor to the window left margin on the next line,
scrolling the window if on the last line.
+.bP
Tabs are considered to be at every eighth column.
The tab interval may be altered by setting the \fBTABSIZE\fR variable.
.PP
-If \fIch\fR is any control character other than tab, newline, or backspace, it
-is drawn in \fB^\fR\fIX\fR notation. Calling \fBwinch\fR after adding a
+If \fIch\fR is any other control character, it
+is drawn in \fB^\fR\fIX\fR notation.
+Calling \fBwinch\fR after adding a
control character does not return the character itself, but instead returns
the ^-representation of the control character.
.PP
Video attributes can be combined with a character argument passed to
\fBaddch\fR or related functions by logical-ORing them into the character.
(Thus, text, including attributes, can be copied from one place to another
-using \fBinch\fR and \fBaddch\fR.) See the \fBcurs_attr\fR(3X) page for
+using \fBinch\fR(3X) and \fBaddch\fR.) See the \fBcurs_attr\fR(3X) page for
values of predefined video attribute constants that can be usefully OR'ed
into characters.
+.SS Echoing characters
.PP
The \fBechochar\fR and \fBwechochar\fR routines are equivalent to a call to
-\fBaddch\fR followed by a call to \fBrefresh\fR, or a call to \fBwaddch\fR
-followed by a call to \fBwrefresh\fR. The knowledge that only a single
+\fBaddch\fR followed by a call to \fBrefresh\fR(3X), or a call to \fBwaddch\fR
+followed by a call to \fBwrefresh\fR.
+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.
.SS Line Graphics
The following variables may be used to add line drawing characters to the
-screen with routines of the \fBaddch\fR family. The default character listed
+screen with routines of the \fBaddch\fR family.
+The default character listed
below is used if the \fBacsc\fR capability does not define a terminal-specific
-replacement for it.
+replacement for it,
+or if the terminal and locale configuration requires Unicode but the
+library is unable to use Unicode.
+.PP
The names are taken from VT100 nomenclature.
.PP
.TS
-l l l
-_ _ _
-l l l.
-\fIName\fR \fIDefault\fR \fIDescription\fR
-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 > 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-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
+l l l l
+l l l l
+_ _ _ _
+l l l l.
+\fBACS\fR \fBACS\fR \fBacsc\fP \fBGlyph\fR
+\fBName\fR \fBDefault\fR \fBchar\fP \fBName\fR
+ACS_BLOCK # 0 solid square block
+ACS_BOARD # h board of squares
+ACS_BTEE + v bottom tee
+ACS_BULLET o ~ bullet
+ACS_CKBOARD : a checker board (stipple)
+ACS_DARROW v . arrow pointing down
+ACS_DEGREE ' f degree symbol
+ACS_DIAMOND + ` diamond
+ACS_GEQUAL > > greater-than-or-equal-to
+ACS_HLINE \- q horizontal line
+ACS_LANTERN # i lantern symbol
+ACS_LARROW < , arrow pointing left
+ACS_LEQUAL < y less-than-or-equal-to
+ACS_LLCORNER + m lower left-hand corner
+ACS_LRCORNER + j lower right-hand corner
+ACS_LTEE + t left tee
+ACS_NEQUAL ! | not-equal
+ACS_PI * { greek pi
+ACS_PLMINUS # g plus/minus
+ACS_PLUS + n plus
+ACS_RARROW > + arrow pointing right
+ACS_RTEE + u right tee
+ACS_S1 \- o scan line 1
+ACS_S3 \- p scan line 3
+ACS_S7 \- r scan line 7
+ACS_S9 \&_ s scan line 9
+ACS_STERLING f } pound-sterling symbol
+ACS_TTEE + w top tee
+ACS_UARROW ^ \- arrow pointing up
+ACS_ULCORNER + l upper left-hand corner
+ACS_URCORNER + k upper right-hand corner
+ACS_VLINE | x vertical line
.TE
.SH RETURN VALUE
All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success
-(the SVr4 manuals specify only "an integer value other than \fBERR\fR") upon
-successful completion, unless otherwise noted in the preceding routine
-descriptions.
+(the SVr4 manuals specify only
+\*(``an integer value other than \fBERR\fR\*('') upon successful completion,
+unless otherwise noted in the preceding routine descriptions.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
@@ -147,10 +180,36 @@ Note that \fBaddch\fR, \fBmvaddch\fR, \fBmvwaddch\fR, and
.SH PORTABILITY
All these functions are described in the XSI Curses standard, Issue 4.
The defaults specified for forms-drawing characters apply in the POSIX locale.
+.SS ACS Symbols
.LP
X/Open Curses states that the \fIACS_\fP definitions are \fBchar\fP constants.
For the wide-character implementation (see \fBcurs_add_wch\fP),
there are analogous \fIWACS_\fP definitions which are \fBcchar_t\fP constants.
+Some implementations are problematic:
+.bP
+Some implementations define the ACS symbols to a constant
+(such as Solaris), while others define those to entries in an array.
+.IP
+This implementation uses an array \fBacs_map\fP, as done in SVr4 curses.
+NetBSD also uses an array, actually named \fB_acs_char\fP, with a \fB#define\fP
+for compatibility.
+.bP
+HPUX curses equates some of the \fIACS_\fP symbols
+to the analogous \fIWACS_\fP symbols as if the \fIACS_\fP symbols were
+wide characters.
+The misdefined symbols are the arrows
+and other symbols which are not used for line-drawing.
+.bP
+X/Open Curses (issues 2 through 7) has a typographical error
+for the ACS_LANTERN symbol, equating its \*(``VT100+ Character\*(''
+to \fBI\fP (capital I), while the header files for SVr4 curses
+and the various implementations use \fBi\fP (lowercase).
+.IP
+None of the terminal descriptions on Unix platforms use uppercase-I,
+except for Solaris (i.e., \fIscreen\fP's terminal description,
+apparently based on the X/Open documentation around 1995).
+On the other hand, the terminal description \fIgs6300\fP
+(AT&T PC6300 with EMOTS Terminal Emulator) uses lowercase-i.
.LP
Some ACS symbols
(ACS_S3,
@@ -161,13 +220,66 @@ ACS_PI,
ACS_NEQUAL,
ACS_STERLING)
were not documented in
-any publicly released System V. However, many publicly available terminfos
+any publicly released System V.
+However, many publicly available terminfos
include \fBacsc\fR strings in which their key characters (pryz{|}) are
embedded, and a second-hand list of their character descriptions has come
-to light. The ACS-prefixed names for them were invented for \fBncurses\fR(3X).
+to light.
+The ACS-prefixed names for them were invented for \fBncurses\fR(3X).
+.LP
+The \fIdisplayed\fP values for the \fIACS_\fP and \fIWACS_\fP constants
+depend on
+.bP
+the library configuration, i.e., \fBncurses\fP versus \fBncursesw\fP,
+where the latter is capable of displaying Unicode while the former is not, and
+.bP
+whether the \fIlocale\fP uses UTF-8 encoding.
+.LP
+In certain cases, the terminal is unable to display line-drawing characters
+except by using UTF-8 (see the discussion of \fBNCURSES_NO_UTF8_ACS\fP in
+ncurses(3X)).
+.SS Character Set
+X/Open Curses assumes that the parameter passed to \fBwaddch\fP contains
+a single character.
+As discussed in \fBcurs_attr\fP(3X), that character may have been
+more than eight bits in an SVr3 or SVr4 implementation,
+but in the X/Open Curses model, the details are not given.
+The important distinction between SVr4 curses and X/Open Curses is
+that the non-character information (attributes and color) was
+separated from the character information which is packed in a \fBchtype\fP
+to pass to \fBwaddch\fP.
+.PP
+In this implementation, \fBchtype\fP holds an eight-bit character.
+But ncurses allows multibyte characters to be passed in a succession
+of calls to \fBwaddch\fP.
+The other implementations do not do this;
+a call to \fBwaddch\fP passes exactly one character
+which may be rendered as one or more cells on the screen
+depending on whether it is printable.
+.PP
+Depending on the locale settings,
+ncurses will inspect the byte passed in each call to \fBwaddch\fP,
+and check if the latest call will continue a multibyte sequence.
+When a character is \fIcomplete\fP,
+ncurses displays the character and moves to the next position in the screen.
+.PP
+If the calling application interrupts the succession of bytes in
+a multibyte character by moving the current location (e.g., using \fBwmove\fP),
+ncurses discards the partially built character,
+starting over again.
+.PP
+For portability to other implementations,
+do not rely upon this behavior:
+.bP
+check if a character can be represented as a single byte in the current locale
+before attempting call \fBwaddch\fP, and
+.bP
+call \fBwadd_wch\fP for characters which cannot be handled by \fBwaddch\fP.
+.SS TABSIZE
.LP
-The \fBTABSIZE\fR variable is implemented in some versions of curses,
-but is not part of X/Open curses.
+The \fBTABSIZE\fR variable is implemented in SVr4 and other versions of curses,
+but is not part of X/Open curses
+(see \fBcurs_variables\fR(3X) for more details).
.LP
If \fIch\fR is a carriage return,
the cursor is moved to the beginning of the current row of the window.
diff --git a/man/curs_addchstr.3x b/man/curs_addchstr.3x
index 08536e330260..a2f701ce4884 100644
--- a/man/curs_addchstr.3x
+++ b/man/curs_addchstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2019 Free 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,10 +26,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_addchstr.3x,v 1.16 2012/11/03 22:54:43 tom Exp $
+.\" $Id: curs_addchstr.3x,v 1.18 2019/11/30 21:06:30 tom Exp $
.TH curs_addchstr 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.na
.hy 0
@@ -95,7 +100,7 @@ X/Open does not define any error conditions.
This implementation returns an error
if the window pointer is null.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
diff --git a/man/curs_addstr.3x b/man/curs_addstr.3x
index b1cb1cc25c15..87d6b5c5c654 100644
--- a/man/curs_addstr.3x
+++ b/man/curs_addstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2019 Free 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,10 +26,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_addstr.3x,v 1.17 2012/11/03 22:57:31 tom Exp $
+.\" $Id: curs_addstr.3x,v 1.19 2019/11/30 21:06:30 tom Exp $
.TH curs_addstr 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.na
.hy 0
@@ -89,7 +94,7 @@ if the string pointer is null or
.bP
if the corresponding calls to \fBwaddch\fP return an error.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
diff --git a/man/curs_addwstr.3x b/man/curs_addwstr.3x
index 835cb34010fc..b7576220615e 100644
--- a/man/curs_addwstr.3x
+++ b/man/curs_addwstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2017,2019 Free 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,10 +26,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_addwstr.3x,v 1.11 2012/11/03 22:57:31 tom Exp $
+.\" $Id: curs_addwstr.3x,v 1.13 2019/11/30 21:06:30 tom Exp $
.TH curs_addwstr 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.na
.hy 0
@@ -91,7 +96,7 @@ if the string pointer is null or
.bP
if the corresponding calls to \fBwadd_wch\fP return an error.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
diff --git a/man/curs_attr.3x b/man/curs_attr.3x
index 7a0d1588d516..cfa04964c71d 100644
--- a/man/curs_attr.3x
+++ b/man/curs_attr.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,146 +27,256 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_attr.3x,v 1.39 2013/09/21 20:39:49 Sven.Joachim Exp $
+.\" $Id: curs_attr.3x,v 1.65 2019/11/30 21:06:30 tom Exp $
.TH curs_attr 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de NS
+.ie n .sp
+.el .sp .5
+.ie n .in +4
+.el .in +2
+.nf
+.ft C \" Courier
+..
+.de NE
+.fi
+.ft R
+.ie n .in -4
+.el .in -2
+..
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.na
.hy 0
+.\" ---------------------------------------------------------------------------
.SH NAME
+.\" attr_get
+\fBattr_get\fR,
+\fBwattr_get\fR,
+\fBattr_set\fR,
+\fBwattr_set\fR,
+.\" .br
+\fBattr_off\fR,
+\fBwattr_off\fR,
+\fBattr_on\fR,
+\fBwattr_on\fR,
+.\" .br
\fBattroff\fR,
\fBwattroff\fR,
\fBattron\fR,
\fBwattron\fR,
\fBattrset\fR,
\fBwattrset\fR,
+.\" .br
+\fBchgat\fR,
+\fBwchgat\fR,
+\fBmvchgat\fR,
+\fBmvwchgat\fR,
+.\" .br
\fBcolor_set\fR,
\fBwcolor_set\fR,
+.\" .br
\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
+\fBwstandout\fR \- \fBcurses\fR character and window attribute control routines
.ad
.hy
+.\" ---------------------------------------------------------------------------
.SH SYNOPSIS
\fB#include <curses.h>\fR
+.sp
+\fBint attr_get(attr_t *\fP\fIattrs\fP\fB, short *\fP\fIpair\fP\fB, void *\fP\fIopts\fP\fB);\fR
.br
-\fBint attroff(int attrs);\fR
-.br
-\fBint wattroff(WINDOW *win, int attrs);\fR
+\fBint wattr_get(WINDOW *\fP\fIwin\fP\fB, attr_t *\fP\fIattrs\fP\fB, short *\fP\fIpair\fP\fB,\fR \fBvoid *\fP\fIopts\fP\fB);\fR
.br
-\fBint attron(int attrs);\fR
+\fBint attr_set(attr_t \fP\fIattrs\fP\fB, short \fP\fIpair\fP\fB, void *\fP\fIopts\fP\fB);\fR
.br
-\fBint wattron(WINDOW *win, int attrs);\fR
+\fBint wattr_set(WINDOW *\fP\fIwin\fP\fB, attr_t \fP\fIattrs\fP\fB, short \fP\fIpair\fP\fB, void *\fP\fIopts\fP\fB);\fR
+.sp
+\fBint attr_off(attr_t \fP\fIattrs\fP\fB, void *\fP\fIopts\fP\fB);\fR
.br
-\fBint attrset(int attrs);\fR
+\fBint wattr_off(WINDOW *\fP\fIwin\fP\fB, attr_t \fP\fIattrs\fP\fB, void *\fP\fIopts\fP\fB);\fR
.br
-\fBint wattrset(WINDOW *win, int attrs);\fR
+\fBint attr_on(attr_t \fP\fIattrs\fP\fB, void *\fP\fIopts\fP\fB);\fR
.br
-\fBint color_set(short color_pair_number, void* opts);\fR
+\fBint wattr_on(WINDOW *\fP\fIwin\fP\fB, attr_t \fP\fIattrs\fP\fB, void *\fP\fIopts\fP\fB);\fR
+.sp
+\fBint attroff(int \fP\fIattrs);\fR
.br
-\fBint wcolor_set(WINDOW *win, short color_pair_number,\fR
- \fBvoid* opts);\fR
+\fBint wattroff(WINDOW *\fP\fIwin\fP\fB, int \fP\fIattrs\fP\fB);\fR
.br
-\fBint standend(void);\fR
-.br
-\fBint wstandend(WINDOW *win);\fR
-.br
-\fBint standout(void);\fR
-.br
-\fBint wstandout(WINDOW *win);\fR
-.br
-\fBint attr_get(attr_t *attrs, short *pair, void *opts);\fR
-.br
-\fBint wattr_get(WINDOW *win, attr_t *attrs, short *pair,\fR
- \fBvoid *opts);\fR
+\fBint attron(int \fP\fIattrs\fP\fB);\fR
.br
-\fBint attr_off(attr_t attrs, void *opts);\fR
+\fBint wattron(WINDOW *\fP\fIwin\fP\fB, int \fP\fIattrs\fP\fB);\fR
.br
-\fBint wattr_off(WINDOW *win, attr_t attrs, void *opts);\fR
+\fBint attrset(int \fP\fIattrs\fP\fB);\fR
.br
-\fBint attr_on(attr_t attrs, void *opts);\fR
+\fBint wattrset(WINDOW *\fP\fIwin\fP\fB, int \fP\fIattrs\fP\fB);\fR
+.sp
+\fBint chgat(int \fP\fIn\fP\fB, attr_t \fP\fIattr\fP\fB, short \fP\fIpair\fP\fB,\fR \fBconst void *\fP\fIopts\fP\fB);\fR
.br
-\fBint wattr_on(WINDOW *win, attr_t attrs, void *opts);\fR
+\fBint wchgat(WINDOW *\fP\fIwin\fP\fB,\fP
+ \fBint \fP\fIn\fP\fB, attr_t \fP\fIattr\fP\fB,\fR \fBshort \fP\fIpair\fP\fB, const void *\fP\fIopts\fP\fB);\fR
.br
-\fBint attr_set(attr_t attrs, short pair, void *opts);\fR
+\fBint mvchgat(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB,\fP
+ \fBint \fP\fIn\fP\fB, attr_t \fP\fIattr\fP\fB,\fR \fBshort \fP\fIpair\fP\fB, const void *\fP\fIopts\fP\fB);\fR
.br
-\fBint wattr_set(WINDOW *win, attr_t attrs, short pair, void *opts);\fR
+\fBint mvwchgat(WINDOW *\fP\fIwin, int \fP\fIy, int \fP\fIx\fP\fB,\fP
+ \fBint \fP\fIn,\fR \fBattr_t \fP\fIattr\fP\fB, short \fP\fIpair\fP\fB, const void *\fP\fIopts\fP\fB);\fR
+.sp
+\fBint color_set(short \fP\fIpair\fP\fB, void* \fP\fIopts\fP\fB);\fR
.br
-\fBint chgat(int n, attr_t attr, short color,\fR
- \fBconst void *opts)\fR
-.br
-\fBint wchgat(WINDOW *win, int n, attr_t attr,\fR
- \fBshort color, const void *opts)\fR
+\fBint wcolor_set(WINDOW *\fP\fIwin\fP\fB, short \fP\fIpair\fP\fB,\fR \fBvoid* \fP\fIopts);\fR
+.sp
+\fBint standend(void);\fR
.br
-\fBint mvchgat(int y, int x, int n, attr_t attr,\fR
- \fBshort color, const void *opts)\fR
+\fBint wstandend(WINDOW *\fP\fIwin\fP\fB);\fR
.br
-\fBint mvwchgat(WINDOW *win, int y, int x, int n,\fR
- \fBattr_t attr, short color, const void *opts)\fR
+\fBint standout(void);\fR
.br
+\fBint wstandout(WINDOW *\fP\fIwin\fP\fB);\fR
+.\" ---------------------------------------------------------------------------
.SH DESCRIPTION
-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 \fBwaddch\fR, \fBwaddstr\fR and \fBwprintw\fR. Attributes are
+.PP
+These routines manipulate the current attributes of the named window,
+which then apply to all characters that are written into
+the window with \fBwaddch\fR, \fBwaddstr\fR and \fBwprintw\fR.
+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
+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.
.PP
-The routine \fBattrset\fR sets the current attributes of the given window to
-\fIattrs\fR. The routine \fBattroff\fR turns off the named attributes without
-turning any other attributes on or off. The routine \fBattron\fR turns on the
-named attributes without affecting any others. The routine \fBstandout\fR is
-the same as \fBattron(A_STANDOUT)\fR. The routine \fBstandend\fR is the same
-as \fBattrset(A_NORMAL)\fR or \fBattrset(0)\fR, that is, it turns off all
-attributes.
-.PP
-The \fBattrset\fR and related routines do not affect the attributes used
+These routines do not affect the attributes used
when erasing portions of the window.
See \fBcurs_bkgd\fR(3X) for functions which modify the attributes used for
erasing and clearing.
.PP
-The routine \fBcolor_set\fR sets the current color of the given window to the
-foreground/background combination described by the color_pair_number. The
-parameter opts is reserved for future use, applications must supply a null
-pointer.
+Routines which do not have a \fBWINDOW*\fP parameter apply to \fBstdscr\fP.
+For example,
+\fBattr_set\fP is the \fBstdscr\fP variant of \fBwattr_set\fP.
+.\" ---------------------------------------------------------------------------
+.SS Window attributes
+.PP
+There are two sets of functions:
+.bP
+functions for manipulating the window attributes and color:
+\fBwattr_set\fP and \fBwattr_get\fP.
+.bP
+functions for manipulating only the window attributes (not color):
+\fBwattr_on\fP and \fBwattr_off\fP.
+.PP
+The \fBwattr_set\fP function sets the current attributes
+of the given window to \fIattrs\fP, with color specified by \fIpair\fP.
+.PP
+Use \fBwattr_get\fP to retrieve attributes for the given window.
+.PP
+Use \fBattr_on\fP and \fBwattr_on\fP to turn on window attributes, i.e.,
+values OR'd together in \fIattr\fP,
+without affecting other attributes.
+Use \fBattr_off\fP and \fBwattr_off\fP to turn off window attributes,
+again values OR'd together in \fIattr\fP,
+without affecting other attributes.
+.\" ---------------------------------------------------------------------------
+.SS Legacy window attributes
+The X/Open window attribute routines which \fIset\fP or \fIget\fP,
+turn \fIon\fP or \fIoff\fP
+are extensions of older routines
+which assume that color pairs are OR'd into the attribute parameter.
+These newer routines use similar names, because
+X/Open simply added an underscore (\fB_\fP) for the newer names.
.PP
-The routine \fBwattr_get\fR returns the current attribute and color pair for
-the given window; \fBattr_get\fR returns the current attribute and color pair
-for \fBstdscr\fR.
-The remaining \fBattr_\fR* functions operate exactly like the corresponding
-\fBattr\fR* functions, except that they take arguments of type \fBattr_t\fR
-rather than \fBint\fR.
+The \fBint\fP datatype used in the legacy routines is treated as if
+it is the same size as \fBchtype\fP (used by \fBaddch\fP(3X)).
+It holds the common video attributes (such as bold, reverse),
+as well as a few bits for color.
+Those bits correspond to the \fBA_COLOR\fP symbol.
+The \fBCOLOR_PAIR\fP macro provides a value which can be OR'd into
+the attribute parameter.
+For example,
+as long as that value fits into the \fBA_COLOR\fP mask,
+then these calls produce similar results:
+.NS
+attrset(A_BOLD | COLOR_PAIR(\fIpair\fP));
+attr_set(A_BOLD, \fIpair\fP, NULL);
+.NE
+.PP
+However, if the value does not fit, then the \fBCOLOR_PAIR\fP macro
+uses only the bits that fit.
+For example, because in ncurses \fBA_COLOR\fP has eight (8) bits,
+then \fBCOLOR_PAIR(\fP\fI259\fP\fB)\fP is 4
+(i.e., 259 is 4 more than the limit 255).
+.PP
+The \fBPAIR_NUMBER\fP macro extracts a pair number from an \fBint\fP
+(or \fBchtype\fP).
+For example, the \fIinput\fP and \fIoutput\fP values in these statements
+would be the same:
+.NS
+int value = A_BOLD | COLOR_PAIR(\fIinput\fP);
+int \fIoutput\fP = PAIR_NUMBER(value);
+.NE
+.PP
+The \fBattrset\fP routine is a legacy feature predating SVr4 curses
+but kept in X/Open Curses for the same reason that SVr4 curses kept it:
+compatibility.
+.PP
+The remaining \fBattr\fR* functions operate exactly like the corresponding
+\fBattr_\fR* functions, except that they take arguments of type \fBint\fR
+rather than \fBattr_t\fR.
+.PP
+There is no corresponding \fBattrget\fP function as such in X/Open Curses,
+although ncurses provides \fBgetattrs\fP (see curs_legacy(3X)).
+.\" ---------------------------------------------------------------------------
+.SS Change character rendition
.PP
The routine \fBchgat\fR changes the attributes of a given number of characters
-starting at the current cursor location of \fBstdscr\fR. It does not update
-the cursor and does not perform wrapping. A character count of \-1 or greater
+starting at the current cursor location of \fBstdscr\fR.
+It does not update
+the cursor and does not perform 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 \fBwchgat\fR function generalizes this to any
-window; the \fBmvwchgat\fR function does a cursor move before acting. In these
-functions, the color argument is a color-pair index (as in the first argument
-of \fIinit_pair\fR, see \fBcurs_color\fR(3X)). The \fBopts\fR argument is not
-presently used, but is reserved for the future (leave it \fBNULL\fR).
-.SS Attributes
+end of the current line.
+The \fBwchgat\fR function generalizes this to any window;
+the \fBmvwchgat\fR function does a cursor move before acting.
+.PP
+In these functions,
+the color \fIpair\fP argument is a color-pair index
+(as in the first argument of \fBinit_pair\fR, see \fBcurs_color\fR(3X)).
+.\" ---------------------------------------------------------------------------
+.SS Change window color
+The routine \fBcolor_set\fR sets the current color of the given window to the
+foreground/background combination described by the color \fIpair\fP parameter.
+.\" ---------------------------------------------------------------------------
+.SS Standout
+.PP
+The routine \fBstandout\fR is
+the same as \fBattron(A_STANDOUT)\fR.
+The routine \fBstandend\fR is the same
+as \fBattrset(A_NORMAL)\fR or \fBattrset(0)\fR, that is, it turns off all
+attributes.
+.PP
+X/Open does not mark these \*(``restricted\*('', because
+.bP
+they have well established legacy use, and
+.bP
+there is no ambiguity about the way the attributes
+might be combined with a color pair.
+.\" ---------------------------------------------------------------------------
+.SH VIDEO ATTRIBUTES
The following video attributes, defined in \fB<curses.h>\fR, can be passed to
the routines \fBattron\fR, \fBattroff\fR, and \fBattrset\fR, or OR'd with the
-characters passed to \fBaddch\fR.
+characters passed to \fBaddch\fR (see \fBcurs_addch\fR(3X)).
.PP
.RS
.TS
-l l
+l l
_ _ _
l l .
\fIName\fR \fIDescription\fR
@@ -182,7 +292,7 @@ l l .
\fBA_ALTCHARSET\fR Alternate character set
\fBA_ITALIC\fR Italics (non-X/Open extension)
\fBA_CHARTEXT\fR Bit-mask to extract a character
-\fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR Color-pair number \fIn\fR
+\fBA_COLOR\fR Bit-mask to extract a color (legacy routines)
.TE
.RE
.PP
@@ -190,7 +300,7 @@ These video attributes are supported by \fBattr_on\fP and related functions
(which also support the attributes recognized by \fBattron\fP, etc.):
.RS
.TS
-l l
+l l
_ _ _
l l .
\fIName\fR \fIDescription\fR
@@ -203,59 +313,226 @@ l l .
.TE
.RE
.PP
-For consistency
-.PP
-The following macro is the reverse of \fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR:
-.PP
-.br
-\fBPAIR_NUMBER(\fR\fIattrs\fR) Returns the pair number associated
- with the \fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR attribute.
-.br
-.PP
The return values of many of these routines are not meaningful (they are
implemented as macro-expanded assignments and simply return their argument).
The SVr4 manual page claims (falsely) that these routines always return \fB1\fR.
+.\" ---------------------------------------------------------------------------
.SH NOTES
-Note that \fBattroff\fR, \fBwattroff\fR, \fBattron\fR, \fBwattron\fR,
-\fBattrset\fR, \fBwattrset\fR, \fBstandend\fR and \fBstandout\fR may be macros.
+These functions may be macros:
+.sp
+.RS
+\fBattroff\fR, \fBwattroff\fR, \fBattron\fR, \fBwattron\fR,
+\fBattrset\fR, \fBwattrset\fR, \fBstandend\fR and \fBstandout\fR.
+.RE
.PP
-\fBCOLOR_PAIR\fP values can only be OR'd with attributes if the pair
+Color pair values can only be OR'd with attributes if the pair
number is less than 256.
The alternate functions such as \fBcolor_set\fP can pass a color pair
value directly.
-However, ncurses ABI 4 and 5 simply OR this value within the alternate functions.
+However, ncurses ABI 4 and 5 simply OR this value
+within the alternate functions.
You must use ncurses ABI 6 to support more than 256 color pairs.
+.\" ---------------------------------------------------------------------------
+.SH HISTORY
+X/Open Curses is largely based on SVr4 curses,
+adding support for \*(``wide-characters\*('' (not specific to Unicode).
+Some of the X/Open differences from SVr4 curses address the way
+video attributes can be applied to wide-characters.
+But aside from that, \fBattrset\fP and \fBattr_set\fP are similar.
+SVr4 curses provided the basic features for manipulating video attributes.
+However, earlier versions of curses provided a part of these features.
+.PP
+As seen in 2.8BSD, curses assumed 7-bit characters,
+using the eighth bit of a byte to represent the \fIstandout\fP
+feature (often implemented as bold and/or reverse video).
+The BSD curses library provided functions \fBstandout\fP and \fBstandend\fP
+which were carried along into X/Open Curses due to their pervasive use
+in legacy applications.
+.PP
+Some terminals in the 1980s could support a variety of video attributes,
+although the BSD curses library could do nothing with those.
+System V (1983) provided an improved curses library.
+It defined the \fBA_\fP symbols for use by applications to manipulate the
+other attributes.
+There are few useful references for the chronology.
+.PP
+Goodheart's book
+\fIUNIX Curses Explained\fP (1991) describes SVr3 (1987),
+commenting on several functions:
+.bP
+the \fBattron\fP, \fBattroff\fP, \fBattrset\fP functions
+(and most of the functions found in SVr4 but not in BSD curses) were
+introduced by System V,
+.bP
+the alternate character set feature with \fBA_ALTCHARSET\fP was
+added in SVr2 and improved in SVr3 (by adding \fBacs_map[]\fP),
+.bP
+\fBstart_color\fP and related color-functions were introduced by System V.3.2,
+.bP
+pads, soft-keys were added in SVr3, and
+.PP
+Goodheart did not mention the background character or the \fBcchar_t\fP type.
+Those are respectively SVr4 and X/Open features.
+He did mention the \fBA_\fP constants, but did not indicate their values.
+Those were not the same in different systems,
+even for those marked as System V.
+.PP
+Different Unix systems used different sizes for the bit-fields in \fBchtype\fP
+for \fIcharacters\fP and \fIcolors\fP, and took into account the different
+integer sizes (32-bit versus 64-bit).
+.PP
+This table showing the number of bits for \fBA_COLOR\fP
+and \fBA_CHARTEXT\fP
+was gleaned from the curses header files for
+various operating systems and architectures.
+The inferred architecture and notes reflect
+the format and size of the defined constants
+as well as clues such as the alternate character set implementation.
+A 32-bit library can be used on a 64-bit system,
+but not necessarily the reverse.
+.RS
+.TS
+l l l l l l
+_ _ _ _ _ _
+l l l l l l .
+\fIYear\fR \fISystem\fR \fIArch\fP \fIColor\fR \fIChar\fR \fINotes\fR
+1992 Solaris 5.2 32 6 17 SVr4 curses
+1992 HPUX 9 32 no 8 SVr2 curses
+1992 AIX 3.2 32 no 23 SVr2 curses
+1994 OSF/1 r3 32 no 23 SVr2 curses
+1995 HP-UX 10.00 32 6 16 SVr3 \*(``curses_colr\*(''
+1995 HP-UX 10.00 32 6 8 SVr4, X/Open curses
+1995 Solaris 5.4 32/64 7 16 X/Open curses
+1996 AIX 4.2 32 7 16 X/Open curses
+1996 OSF/1 r4 32 6 16 X/Open curses
+1997 HP-UX 11.00 32 6 8 X/Open curses
+2000 U/Win 32/64 7/31 16 uses \fBchtype\fP
+.TE
+.RE
+.PP
+Notes:
+.RS 3
+.PP
+Regarding HP-UX,
+.bP
+HP-UX 10.20 (1996) added support for 64-bit PA-RISC processors in 1996.
+.bP
+HP-UX 10.30 (1997) marked \*(``curses_colr\*('' obsolete.
+That version of curses was dropped with HP-UX 11.30 in 2006.
+.PP
+Regarding OSF/1 (and Tru64),
+.bP
+These used 64-bit hardware.
+Like ncurses, the OSF/1 curses interface is not customized for 32-bit
+and 64-bit versions.
+.bP
+Unlike other systems which evolved from AT&T code,
+OSF/1 provided a new implementation for X/Open curses.
+.PP
+Regarding Solaris,
+.bP
+The initial release of Solaris was in 1992.
+.bP
+The \fIxpg4\fP (X/Open) curses was developed by MKS from 1990 to 1995.
+Sun's copyright began in 1996.
+.bP
+Sun updated the X/Open curses interface
+after 64-bit support was introduced in 1997,
+but did not modify the SVr4 curses interface.
+.PP
+Regarding U/Win,
+.bP
+Development of the curses library began in 1991, stopped in 2000.
+.bP
+Color support was added in 1998.
+.bP
+The library uses only \fBchtype\fP (no \fBcchar_t\fP).
+.RE
+.PP
+Once X/Open curses was adopted in the mid-1990s, the constraint of
+a 32-bit interface with many colors and wide-characters for \fBchtype\fP
+became a moot point.
+The \fBcchar_t\fP structure (whose size and
+members are not specified in X/Open Curses) could be extended as needed.
+.PP
+Other interfaces are rarely used now:
+.bP
+BSD curses was improved slightly in 1993/1994 using Keith Bostic's
+modification to make the library 8-bit clean for \fBnvi\fP.
+He moved \fIstandout\fP attribute to a structure member.
+.IP
+The resulting 4.4BSD curses was replaced by ncurses over the next ten years.
+.bP
+U/Win is rarely used now.
+.\" ---------------------------------------------------------------------------
+.SH EXTENSIONS
+.PP
+This implementation provides the \fBA_ITALIC\fP attribute for terminals
+which have the \fBenter_italics_mode\fP (\fBsitm\fP)
+and \fBexit_italics_mode\fP (\fBritm\fP) capabilities.
+Italics are not mentioned in X/Open Curses.
+Unlike the other video attributes, \fBA_ITALIC\fP is unrelated
+to the \fBset_attributes\fP capabilities.
+This implementation makes the assumption that
+\fBexit_attribute_mode\fP may also reset italics.
+.PP
+Each of the functions added by XSI Curses has a parameter \fIopts\fP,
+which X/Open Curses still (after more than twenty years) documents
+as reserved for future use, saying that it should be \fBNULL\fP.
+This implementation uses that parameter in ABI 6 for the functions which
+have a color-pair parameter to support \fIextended color pairs\fP:
+.bP
+For functions which modify the color, e.g.,
+\fBwattr_set\fP,
+if \fIopts\fP is set it is treated as a pointer to \fBint\fP,
+and used to set the color pair instead of the \fBshort\fP \fIpair\fP parameter.
+.bP
+For functions which retrieve the color, e.g.,
+\fBwattr_get\fP,
+if \fIopts\fP is set it is treated as a pointer to \fBint\fP,
+and used to retrieve the color pair as an \fBint\fP value,
+in addition
+retrieving it via the standard pointer to \fBshort\fP parameter.
+.PP
+The remaining functions which have \fIopts\fP,
+but do not manipulate color,
+e.g., \fBwattr_on\fP and \fBwattr_off\fP
+are not used by this implementation except to check that they are \fBNULL\fP.
+.\" ---------------------------------------------------------------------------
.SH PORTABILITY
-These functions are supported in the XSI Curses standard, Issue 4. The
-standard defined the dedicated type for highlights, \fBattr_t\fR, which is not
-defined in SVr4 curses. The functions taking \fBattr_t\fR arguments are
-not supported under SVr4.
+These functions are supported in the XSI Curses standard, Issue 4.
+The standard defined the dedicated type for highlights,
+\fBattr_t\fR, which was not defined in SVr4 curses.
+The functions taking \fBattr_t\fR arguments were not supported under SVr4.
+.PP
+Very old versions of this library did not force an update of the screen
+when changing the attributes.
+Use \fBtouchwin\fR to force the screen to match the updated attributes.
.PP
The XSI Curses standard states that whether the traditional functions
\fBattron\fR/\fBattroff\fR/\fBattrset\fR can manipulate attributes other than
\fBA_BLINK\fR, \fBA_BOLD\fR, \fBA_DIM\fR, \fBA_REVERSE\fR, \fBA_STANDOUT\fR, or
-\fBA_UNDERLINE\fR is "unspecified". Under this implementation as well as
+\fBA_UNDERLINE\fR is \*(``unspecified\*(''.
+Under this implementation as well as
SVr4 curses, these functions correctly manipulate all other highlights
(specifically, \fBA_ALTCHARSET\fR, \fBA_PROTECT\fR, and \fBA_INVIS\fR).
.PP
-This implementation provides the \fBA_ITALIC\fP attribute for terminals
-which have the \fIenter_italics_mode\fP (sitm) and \fIexit_italics_mode\fP (ritm) capabilities.
-Italics are not mentioned in X/Open Curses.
-Unlike the other video attributes, \fBI_ITALIC\fP is unrelated
-to the \fIset_attributes\fP capabilities.
-This implementation makes the assumption that
-\fIexit_attribute_mode\fP may also reset italics.
-.PP
-XSI Curses added the new entry points, \fBattr_get\fR, \fBattr_on\fR,
+XSI Curses added these entry points:
+.sp
+.RS
+\fBattr_get\fR, \fBattr_on\fR,
\fBattr_off\fR, \fBattr_set\fR, \fBwattr_on\fR, \fBwattr_off\fR,
-\fBwattr_get\fR, \fBwattr_set\fR. These are intended to work with
+\fBwattr_get\fR, \fBwattr_set\fR
+.RE
+.PP
+The new functions are intended to work with
a new series of highlight macros prefixed with \fBWA_\fR.
The older macros have direct counterparts in the newer set of names:
.PP
.RS
.ne 9
.TS
-l l
+l l
_ _ _
l l .
\fIName\fR \fIDescription\fR
@@ -270,13 +547,26 @@ l l .
.TE
.RE
.PP
-Older versions of this library did not force an update of the screen
-when changing the attributes.
-Use \fBtouchwin\fR to force the screen to match the updated attributes.
-.PP
+XSI curses does not assign values to these symbols,
+nor does it state whether or not they are related to the
+similarly-named A_NORMAL, etc.:
+.bP
The XSI curses standard specifies that each pair of corresponding \fBA_\fR
and \fBWA_\fR-using functions operates on the same current-highlight
information.
+.bP
+However, in some implementations, those symbols have unrelated values.
+.IP
+For example, the Solaris \fIxpg4\fP (X/Open) curses declares
+\fBattr_t\fP to be an unsigned short integer (16-bits),
+while \fBchtype\fP is a unsigned integer (32-bits).
+The \fBWA_\fP symbols in this case are different from the \fBA_\fP symbols
+because they are used for a smaller datatype which does not
+represent \fBA_CHARTEXT\fP or \fBA_COLOR\fP.
+.IP
+In this implementation (as in many others), the values happen to be
+the same because it simplifies copying information between
+\fBchtype\fP and \fBcchar_t\fP variables.
.PP
The XSI standard extended conformance level adds new highlights
\fBA_HORIZONTAL\fR, \fBA_LEFT\fR, \fBA_LOW\fR, \fBA_RIGHT\fR, \fBA_TOP\fR,
@@ -284,23 +574,28 @@ The XSI standard extended conformance level adds new highlights
As of August 2013,
no known terminal provides these highlights
(i.e., via the \fBsgr1\fP capability).
+.\" ---------------------------------------------------------------------------
.SH RETURN VALUE
All routines return the integer \fBOK\fR on success, or \fBERR\fP on failure.
.PP
X/Open does not define any error conditions.
.PP
-This implementation returns an error
-if the window pointer is null.
-The \fBwcolor_set\fP function returns an error if the color pair parameter
-is outside the range 0..COLOR_PAIRS\-1.
-This implementation also provides
-\fBgetattrs\fR
-for compatibility with older versions of curses.
+This implementation
+.bP
+returns an error if the window pointer is null.
+.bP
+returns an error if the color pair parameter
+for \fBwcolor_set\fP is outside the range 0..COLOR_PAIRS\-1.
+.bP
+does not return an error if either of the parameters of \fBwattr_get\fP
+used for retrieving attribute or color-pair values is \fBNULL\fP.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
+.\" ---------------------------------------------------------------------------
.SH SEE ALSO
+.na
\fBcurses\fR(3X),
\fBcurs_addch\fR(3X),
\fBcurs_addstr\fR(3X),
diff --git a/man/curs_beep.3x b/man/curs_beep.3x
index c6af6f09e647..a2a24933df3e 100644
--- a/man/curs_beep.3x
+++ b/man/curs_beep.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2010,2018 Free 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_beep.3x,v 1.12 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_beep.3x,v 1.13 2018/07/28 21:34:06 tom Exp $
.TH curs_beep 3X ""
.SH NAME
\fBbeep\fR, \fBflash\fR \- \fBcurses\fR bell and screen flash routines
@@ -40,9 +40,12 @@
.SH DESCRIPTION
The \fBbeep\fR and \fBflash\fR routines are used to alert the terminal user.
The routine \fBbeep\fR sounds an audible alarm on the terminal, if possible;
-otherwise it flashes the screen (visible bell). The routine \fBflash\fR
-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
+otherwise it flashes the screen (visible bell).
+The routine \fBflash\fR
+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.
.SH RETURN VALUE
These routines return \fBOK\fR if they succeed in beeping or flashing,
diff --git a/man/curs_bkgd.3x b/man/curs_bkgd.3x
index 67e2ab8fc54a..c973b98ae6e7 100644
--- a/man/curs_bkgd.3x
+++ b/man/curs_bkgd.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2003,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_bkgd.3x,v 1.22 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_bkgd.3x,v 1.29 2019/07/13 21:01:06 tom Exp $
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.TH curs_bkgd 3X ""
.SH NAME
\fBbkgdset\fR, \fBwbkgdset\fR,
@@ -35,57 +39,121 @@
.SH SYNOPSIS
\fB#include <curses.h>\fR
.PP
-\fBvoid bkgdset(chtype ch);\fR
+\fBvoid bkgdset(chtype \fP\fIch\fP\fB);\fR
.br
-\fBvoid wbkgdset(WINDOW *win, chtype ch);\fR
+\fBvoid wbkgdset(WINDOW *\fP\fIwin, chtype \fP\fIch\fP\fB);\fR
.br
-\fBint bkgd(chtype ch);\fR
+\fBint bkgd(chtype \fP\fIch\fP\fB);\fR
.br
-\fBint wbkgd(WINDOW *win, chtype ch);\fR
+\fBint wbkgd(WINDOW *\fP\fIwin\fP\fB, chtype \fP\fIch\fP\fB);\fR
.br
-\fBchtype getbkgd(WINDOW *win);\fR
+\fBchtype getbkgd(WINDOW *\fP\fIwin\fP\fB);\fR
.br
.SH DESCRIPTION
+.SS bkgdset
The \fBbkgdset\fR and \fBwbkgdset\fR routines manipulate the
background of the named window.
The window background is a \fBchtype\fR 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
-characters that are written into the window with \fBwaddch\fR. Both
-the character and attribute parts of the background are combined with
-the blank characters. The background becomes a property of the
+characters that are written into the window with \fBwaddch\fR.
+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.
.PP
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.
+.SS bkgd
.PP
The \fBbkgd\fR and \fBwbkgd\fR functions
set the background property of the current or specified window
-and then apply this setting to every character position in that window:
+and then apply this setting to every character position in that window.
+According to X/Open Curses, it should do this:
.PP
-.RS
+.bP
The rendition of every character on the screen is changed to
the new background rendition.
-.PP
+.bP
Wherever the former background character
appears, it is changed to the new background character.
-.RE
+.PP
+Neither X/Open Curses nor the SVr4 manual pages give details about
+the way the rendition of characters on the screen is updated when
+\fBbkgd\fP or \fBwbkgd\fP is used to change the background character.
+.PP
+This implementation, like SVr4 curses, does not store the background
+and window attribute contributions to each cell separately.
+It updates the rendition by comparing the character, non-color attributes and
+colors contained in the background.
+For each cell in the window, whether or not it is blank:
+.bP
+The library first compares the \fIcharacter\fP,
+and if it matches the current character part of the background,
+it replaces that with the new background character.
+.bP
+The library then checks if the cell uses color,
+i.e., its color pair value is nonzero.
+If not, it simply replaces the attributes and color pair in the
+cell with those from the new background character.
+.bP
+If the cell uses color,
+and that matches the color in the current background,
+the library removes attributes
+which may have come from the current background
+and adds attributes from the new background.
+It finishes by setting the cell
+to use the color from the new background.
+.bP
+If the cell uses color,
+and that does not match the color in the current background,
+the library updates only the non-color attributes,
+first removing those which may have come from the current background,
+and then adding attributes from the new background.
+.PP
+If the background's character value is zero, a space is assumed.
+.PP
+If the terminal does not support color,
+or if color has not been started with \fBstart_color\fP,
+the new background character's color attribute will be ignored.
+.SS getbkgd
.PP
The \fBgetbkgd\fR function returns the given window's current background
character/attribute pair.
.SH RETURN VALUE
-The routines \fBbkgd\fR and \fBwbkgd\fR return the integer \fBOK\fR.
-The SVr4.0 manual says "or a non-negative integer if \fBimmedok\fR is set",
-but this appears to be an error.
-.SH NOTES
-Note that \fBbkgdset\fR and \fBbkgd\fR may be macros.
-.SH PORTABILITY
+.PP
These functions are described in the XSI Curses standard, Issue 4.
It specifies that \fBbkgd\fR and \fBwbkgd\fR return \fBERR\fR on failure,
but gives no failure conditions.
+.PP
+The routines \fBbkgd\fR and \fBwbkgd\fR return the integer \fBOK\fR,
+unless the library has not been initialized.
+.PP
+In contrast,
+the SVr4.0 manual says \fBbkgd\fR and \fBwbkgd\fR may return \fBOK\fP
+"or a non-negative integer if \fBimmedok\fR is set",
+which refers to the return value from \fBwrefresh\fP
+(used to implement the immediate repainting).
+The SVr4 curses \fBwrefresh\fP returns the number of characters
+written to the screen during the refresh.
+This implementation does not do that.
+.SH NOTES
+.PP
+Note that \fBbkgdset\fR and \fBbkgd\fR may be macros.
+.PP
+X/Open Curses mentions that the character part of the background must
+be a single-byte value.
+This implementation, like SVr4, checks to ensure that,
+and will reuse the old background character if the check fails.
+.SH PORTABILITY
+.PP
+These functions are described in the XSI Curses standard, Issue 4
+(X/Open Curses).
.SH SEE ALSO
+.na
+.PP
\fBcurses\fR(3X),
\fBcurs_addch\fR(3X),
\fBcurs_attr\fR(3X),
diff --git a/man/curs_bkgrnd.3x b/man/curs_bkgrnd.3x
index 08ea59f10217..78ee92e18e32 100644
--- a/man/curs_bkgrnd.3x
+++ b/man/curs_bkgrnd.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2017,2018 Free 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,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_bkgrnd.3x,v 1.5 2012/11/03 23:03:59 tom Exp $
+.\" $Id: curs_bkgrnd.3x,v 1.10 2018/12/09 00:50:50 tom Exp $
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.TH curs_bkgrnd 3X ""
.SH NAME
\fBbkgrnd\fR,
@@ -52,12 +56,15 @@
\fBint wgetbkgrnd(WINDOW *\fR\fIwin\fR\fB, cchar_t *\fR\fIwch\fR\fB);\fR
.br
.SH DESCRIPTION
+.SS bkgrndset
+.PP
The \fBbkgrndset\fR and \fBwbkgrndset\fR routines manipulate the
background of the named window.
The window background is a \fBcchar_t\fR consisting of
any combination of attributes (i.e., rendition) and a complex character.
The attribute part of the background is combined (OR'ed) with all non-blank
-characters that are written into the window with \fBwaddch\fR. Both
+characters that are written into the window with \fBwaddch\fR.
+Both
the character and attribute parts of the background are combined with
the blank characters.
The background becomes a property of the
@@ -67,34 +74,47 @@ 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.
+.SS bkgrnd
.PP
The \fBbkgrnd\fR and \fBwbkgrnd\fR functions
set the background property of the current or specified window
and then apply this setting to every character position in that window:
-.RS
-.PP
+.bP
The rendition of every character on the screen is changed to
the new background rendition.
-.PP
+.bP
Wherever the former background character
appears, it is changed to the new background character.
-.RE
+.SS getbkgrnd
.PP
The \fBgetbkgrnd\fR function returns the given window's current background
character/attribute pair via the \fBwch\fR pointer.
-.
+If the given window pointer is null,
+the character is not updated (but no error returned).
.SH NOTES
Note that
\fBbkgrnd\fR,
\fBbkgrndset\fR, and
\fBgetbkgrnd\fR
may be macros.
+.PP
+X/Open Curses does not provide details on how the rendition is changed.
+This implementation follows the approach used in SVr4 curses,
+which is explained in the manual page for \fBwbkgd\fP.
.SH RETURN VALUE
+.PP
The \fBbkgrndset\fR and \fBwbkgrndset\fR routines do not return a value.
.PP
Upon successful completion, the other functions return \fBOK\fR.
-Otherwise, they return \fBERR\fR.
+Otherwise, they return \fBERR\fR:
+.bP
A null window pointer is treated as an error.
+.bP
+A null character pointer is treated as an error.
+.SH PORTABILITY
+.PP
+These functions are described in the XSI Curses standard, Issue 4
+(X/Open Curses).
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_bkgd\fR(3X)
diff --git a/man/curs_border.3x b/man/curs_border.3x
index 5a58e9db5583..bbd9d8f325b0 100644
--- a/man/curs_border.3x
+++ b/man/curs_border.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_border.3x,v 1.22 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_border.3x,v 1.24 2019/11/30 21:06:30 tom Exp $
.TH curs_border 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.na
.hy 0
.SH NAME
@@ -121,23 +125,28 @@ for the following call: \fBwborder(\fR\fIwin\fR\fB,\fR \fIverch\fR\fB,\fR
\fIverch\fR\fB,\fR \fIhorch\fR\fB,\fR \fIhorch\fR\fB, 0, 0, 0, 0)\fR.
.PP
The \fBhline\fR and \fBwhline\fR functions draw a horizontal (left to right)
-line using \fIch\fR starting at the current cursor position in the window. The
-current cursor position is not changed. The line is at most \fIn\fR characters
+line using \fIch\fR starting at the current cursor position in the window.
+The
+current cursor position is not changed.
+The line is at most \fIn\fR characters
long, or as many as fit into the window.
.PP
The \fBvline\fR and \fBwvline\fR functions draw a vertical (top to bottom) line
-using \fIch\fR starting at the current cursor position in the window. The
-current cursor position is not changed. The line is at most \fIn\fR characters
+using \fIch\fR starting at the current cursor position in the window.
+The
+current cursor position is not changed.
+The line is at most \fIn\fR characters
long, or as many as fit into the window.
.SH RETURN VALUE
-All routines return the integer \fBOK\fR. The SVr4.0 manual says "or a
+All routines return the integer \fBOK\fR.
+The SVr4.0 manual says "or a
non-negative integer if \fBimmedok\fR is set", but this appears to be an error.
.PP
X/Open does not define any error conditions.
This implementation returns an error
if the window pointer is null.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
diff --git a/man/curs_border_set.3x b/man/curs_border_set.3x
index c9621ac74b35..77e6cc3f79fa 100644
--- a/man/curs_border_set.3x
+++ b/man/curs_border_set.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2011,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2012,2019 Free 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,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_border_set.3x,v 1.11 2012/11/03 23:03:59 tom Exp $
+.\" $Id: curs_border_set.3x,v 1.12 2019/11/30 21:06:30 tom Exp $
.TH curs_border_set 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.na
.hy 0
.SH NAME
@@ -196,7 +200,7 @@ Otherwise, they return
.PP
Functions using a window parameter return an error if it is null.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH SEE ALSO
diff --git a/man/curs_clear.3x b/man/curs_clear.3x
index 305c608a49ca..8668feb8225d 100644
--- a/man/curs_clear.3x
+++ b/man/curs_clear.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2016,2018 Free 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_clear.3x,v 1.14 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_clear.3x,v 1.16 2018/07/28 21:34:06 tom Exp $
.TH curs_clear 3X ""
.na
.hy 0
@@ -70,7 +70,8 @@ cleared completely on the next call to \fBwrefresh\fR for that window
and repainted from scratch.
.PP
The \fBclrtobot\fR and \fBwclrtobot\fR routines erase from the cursor to the
-end of screen. That is, they erase all lines below the cursor in the window.
+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.
.PP
The \fBclrtoeol\fR and \fBwclrtoeol\fR routines erase the current line
@@ -90,18 +91,20 @@ functions using a window pointer parameter return an error if it is null.
Note that \fBerase\fR, \fBwerase\fR, \fBclear\fR, \fBwclear\fR,
\fBclrtobot\fR, and \fBclrtoeol\fR may be macros.
.SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4. The
+These functions are described in the XSI Curses standard, Issue 4.
+The
standard specifies that they return \fBERR\fR on failure, but specifies no
error conditions.
.PP
Some historic curses implementations had, as an undocumented feature, the
ability to do the equivalent of \fBclearok(..., 1)\fR by saying
-\fBtouchwin(stdscr)\fR or \fBclear(stdscr)\fR. This will not work under
+\fBtouchwin(stdscr)\fR or \fBclear(stdscr)\fR.
+This will not work under
ncurses.
.PP
This implementation, and others such as Solaris,
sets the current position to 0,0 after erasing
-via \fBwerase()\fP and \fBwclear()\fP.
+via \fBwerase\fP and \fBwclear\fP.
That fact is not documented in other implementations,
and may not be true of implementations
which were not derived from SVr4 source.
diff --git a/man/curs_color.3x b/man/curs_color.3x
index 2f63c848bc1a..965af772af65 100644
--- a/man/curs_color.3x
+++ b/man/curs_color.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,197 +26,444 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_color.3x,v 1.35 2010/12/20 00:50:58 tom Exp $
+.\" $Id: curs_color.3x,v 1.61 2019/01/20 17:04:08 tom Exp $
.TH curs_color 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
+.ds n 5
.na
.hy 0
.SH NAME
\fBstart_color\fR,
-\fBinit_pair\fR,
-\fBinit_color\fR,
\fBhas_colors\fR,
\fBcan_change_color\fR,
+\fBinit_pair\fR,
+\fBinit_color\fR,
+\fBinit_extended_pair\fR,
+\fBinit_extended_color\fR,
\fBcolor_content\fR,
\fBpair_content\fR,
-\fBCOLOR_PAIR\fR \- \fBcurses\fR color manipulation routines
+\fBextended_color_content\fR,
+\fBextended_pair_content\fR,
+\fBreset_color_pairs\fR,
+\fBCOLOR_PAIR\fR,
+\fBPAIR_NUMBER\fR \- \fBcurses\fR color manipulation routines
.ad
.hy
.SH SYNOPSIS
-\fB# include <curses.h>\fR
+\fB#include <curses.h>\fR
.sp
\fBint start_color(void);\fR
+.sp
+\fBbool has_colors(void);\fR
.br
+\fBbool can_change_color(void);\fR
+.sp
\fBint init_pair(short pair, short f, short b);\fR
.br
\fBint init_color(short color, short r, short g, short b);\fR
.br
-\fBbool has_colors(void);\fR
+/* extensions */
.br
-\fBbool can_change_color(void);\fR
+\fBint init_extended_pair(int pair, int f, int b);\fR
.br
+\fBint init_extended_color(int color, int r, int g, int b);\fR
+.sp
\fBint color_content(short color, short *r, short *g, short *b);\fR
.br
\fBint pair_content(short pair, short *f, short *b);\fR
.br
+/* extensions */
+.br
+\fBint extended_color_content(int color, int *r, int *g, int *b);\fR
+.br
+\fBint extended_pair_content(int pair, int *f, int *b);\fR
+.sp
+/* extensions */
+.br
+\fBvoid reset_color_pairs(void);\fR
+.sp
+\fBint COLOR_PAIR(int n);\fR
+.br
+\fBPAIR_NUMBER(\fR\fIattrs\fR\fB);\fP
+.br
.SH DESCRIPTION
.SS Overview
-\fBcurses\fR support color attributes on terminals with that capability. To
-use these routines \fBstart_color\fR must be called, usually right after
-\fBinitscr\fR. Colors are always used in pairs (referred to as color-pairs).
+\fBcurses\fR supports color attributes on terminals with that capability.
+To use these routines \fBstart_color\fR must be called, usually right after
+\fBinitscr\fR.
+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 characters are displayed). A
-programmer initializes a color-pair with the routine \fBinit_pair\fR. After it
-has been initialized, \fBCOLOR_PAIR\fR(\fIn\fR), a macro defined in
-\fB<curses.h>\fR, can be used as a new video attribute.
+color (for the blank field on which the characters are displayed).
+A programmer initializes a color-pair with the routine \fBinit_pair\fR.
+After it has been initialized, \fBCOLOR_PAIR\fR(\fIn\fR)
+can be used to convert the pair to a video attribute.
.PP
If a terminal is capable of redefining colors, the programmer can use the
-routine \fBinit_color\fR to change the definition of a color. The routines
-\fBhas_colors\fR and \fBcan_change_color\fR return \fBTRUE\fR or \fBFALSE\fR,
+routine \fBinit_color\fR to change the definition of a color.
+The routines \fBhas_colors\fR and \fBcan_change_color\fR
+return \fBTRUE\fR or \fBFALSE\fR,
depending on whether the terminal has color capabilities and whether the
-programmer can change the colors. The routine \fBcolor_content\fR allows a
+programmer can change the colors.
+The routine \fBcolor_content\fR allows a
programmer to extract the amounts of red, green, and blue components in an
-initialized color. The routine \fBpair_content\fR allows a programmer to find
+initialized color.
+The routine \fBpair_content\fR allows a programmer to find
out how a given color-pair is currently defined.
-.SS Routine Descriptions
-The \fBstart_color\fR 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 \fBinitscr\fR. \fBstart_color\fR initializes
-eight basic colors (black, red, green, yellow, blue, magenta, cyan,
-and white), and two global variables, \fBCOLORS\fR and
+.SS Color Rendering
+The \fBcurses\fP library combines these inputs to produce the
+actual foreground and background colors shown on the screen:
+.bP
+per-character video attributes (e.g., via \fBwaddch\fP),
+.bP
+the window attribute (e.g., by \fBwattrset\fP), and
+.bP
+the background character (e.g., \fBwbkgdset\fP).
+.PP
+Per-character and window attributes are usually set by a parameter containing
+video attributes including a color pair value.
+Some functions such as \fBwattr_set\fP use a separate parameter which
+is the color pair number.
+.PP
+The background character is a special case: it includes a character value,
+just as if it were passed to \fBwaddch\fP.
+.PP
+The \fBcurses\fP library does the actual work of combining these color
+pairs in an internal function called from \fBwaddch\fP:
+.bP
+If the parameter passed to \fBwaddch\fP is \fIblank\fP,
+and it uses the special color pair 0,
+.RS
+.bP
+\fBcurses\fP next checks the window attribute.
+.bP
+If the window attribute does not use color pair 0,
+\fBcurses\fP uses the color pair from the window attribute.
+.bP
+Otherwise, \fBcurses\fP uses the background character.
+.RE
+.bP
+If the parameter passed to \fBwaddch\fP is \fInot blank\fP,
+or it does not use the special color pair 0,
+\fBcurses\fP prefers the color pair from the parameter,
+if it is nonzero.
+Otherwise, it tries the window attribute next, and finally the
+background character.
+.PP
+Some \fBcurses\fP functions such as \fBwprintw\fP call \fBwaddch\fP.
+Those do not combine its parameter with a color pair.
+Consequently those calls use only the window attribute or
+the background character.
+.SH CONSTANTS
+.PP
+In \fB<curses.h>\fR the following macros are defined.
+These are the standard colors (ISO-6429).
+\fBcurses\fR also assumes that \fBCOLOR_BLACK\fR is the default
+background color for all terminals.
+.PP
+.nf
+ \fBCOLOR_BLACK\fR
+ \fBCOLOR_RED\fR
+ \fBCOLOR_GREEN\fR
+ \fBCOLOR_YELLOW\fR
+ \fBCOLOR_BLUE\fR
+ \fBCOLOR_MAGENTA\fR
+ \fBCOLOR_CYAN\fR
+ \fBCOLOR_WHITE\fR
+.fi
+.PP
+Some terminals support more than the eight (8) \*(``ANSI\*('' colors.
+There are no standard names for those additional colors.
+.SH VARIABLES
+.SS COLORS
+is initialized by \fBstart_color\fP to the maximum number of colors
+the terminal can support.
+.SS COLOR_PAIRS
+is initialized by \fBstart_color\fP to the maximum number of color pairs
+the terminal can support.
+.SH FUNCTIONS
+.SS start_color
+The \fBstart_color\fR 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 \fBinitscr\fR.
+\fBstart_color\fR does this:
+.bP
+It initializes two global variables, \fBCOLORS\fR and
\fBCOLOR_PAIRS\fR (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.
+and color-pairs the terminal can support).
+.bP
+It initializes the special color pair \fB0\fP to the default foreground
+and background colors.
+No other color pairs are initialized.
+.bP
+It restores the colors on the terminal to the values
+they had when the terminal was just turned on.
+.bP
+If the terminal supports the \fBinitc\fP (\fBinitialize_color\fP) capability,
+\fBstart_color\fP
+initializes its internal table representing the
+red, green, and blue components of the color palette.
+.IP
+The components depend on whether the terminal uses
+CGA (aka \*(``ANSI\*('') or
+HLS (i.e., the \fBhls\fP (\fBhue_lightness_saturation\fP) capability is set).
+The table is initialized first for eight basic colors
+(black, red, green, yellow, blue, magenta, cyan, and white),
+using weights that depend upon the CGA/HLS choice.
+For \*(``ANSI\*('' colors the weights are \fB680\fP or \fB0\fP
+depending on whether the corresponding
+red, green, or blue component is used or not.
+That permits using \fB1000\fP to represent bold/bright colors.
+After the initial eight colors
+(if the terminal supports more than eight colors)
+the components are initialized using the same pattern,
+but with weights of \fB1000\fP.
+SVr4 uses a similar scheme, but uses \fB1000\fP
+for the components of the initial eight colors.
+.IP
+\fBstart_color\fP does not attempt to set the terminal's color palette
+to match its built-in table.
+An application may use \fBinit_color\fP to alter the internal table
+along with the terminal's color.
.PP
-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
+These limits apply to color values and color pairs.
+Values outside these limits are not legal, and may result in a runtime error:
+.bP
+\fBCOLORS\fP corresponds to the terminal database's \fBmax_colors\fR capability,
+(see \fBterminfo\fR(\*n)).
+.bP
+color values are expected to be in the range \fB0\fP to \fBCOLORS\-1\fP,
+inclusive (including \fB0\fP and \fBCOLORS\-1\fP).
+.bP
+a special color value \fB\-1\fP is used in certain extended functions
+to denote the \fIdefault color\fP (see \fBuse_default_colors\fP(3X)).
+.bP
+\fBCOLOR_PAIRS\fP corresponds to
+the terminal database's \fBmax_pairs\fP capability,
+(see \fBterminfo\fR(\*n)).
+.bP
+legal color pair values are in the range \fB1\fP to \fBCOLOR_PAIRS\-1\fP,
+inclusive.
+.bP
+color pair \fB0\fP is special; it denotes \*(``no color\*(''.
+.IP
+Color pair \fB0\fP is assumed to be white on black,
+but is actually whatever the terminal implements before color is initialized.
+It cannot be modified by the application.
+.SS has_colors
+.PP
+The \fBhas_colors\fR routine requires no arguments.
+It returns \fBTRUE\fR if
+the terminal can manipulate colors; otherwise, it returns \fBFALSE\fR.
+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.
+.SS can_change_color
+.PP
+The \fBcan_change_color\fR routine requires no arguments.
+It returns \fBTRUE\fR if the terminal supports colors
+and can change their definitions;
+other, it returns \fBFALSE\fR.
+This routine facilitates writing terminal-independent programs.
+.SS init_pair
+.PP
+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.
For portable applications:
.bP
-The value of the first argument
-must be between \fB1\fR and \fBCOLOR_PAIRS\-1\fR,
-except that if default colors are used (see \fBuse_default_colors\fP)
+The first argument must be a legal color pair value.
+If default colors are used (see \fBuse_default_colors\fP(3X))
the upper limit is adjusted to allow for extra pairs which use
a default color in foreground and/or background.
.bP
-The value of the second and
-third arguments must be between 0 and \fBCOLORS\fR.
-Color pair 0 is assumed to be white on black,
-but is actually whatever the terminal implements before color is initialized.
-It cannot be modified by the application.
+The second and third arguments must be legal color values.
.PP
-If the color-pair was previously
-initialized, the screen is refreshed and all occurrences of that color-pair
+If the color-pair was previously initialized,
+the screen is refreshed and all occurrences of that color-pair
are changed to the new definition.
.PP
-As an extension, ncurses allows you to set color pair 0 via
-the \fBassume_default_colors\fR routine, or to specify the use of
+As an extension, ncurses allows you to set color pair \fB0\fP via
+the \fBassume_default_colors\fR(3X) routine, or to specify the use of
default colors (color number \fB\-1\fR) if you first invoke the
-\fBuse_default_colors\fR routine.
-.PP
-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
-argument must be between \fB0\fR and \fBCOLORS\fR. (See the section
-\fBColors\fR for the default color index.) Each of the last three arguments
-must be a value between 0 and 1000. When \fBinit_color\fR is used, all
+\fBuse_default_colors\fR(3X) routine.
+.SS init_extended_pair
+.PP
+Because \fBinit_pair\fP uses signed \fBshort\fPs for its parameters,
+that limits color-pairs and color-values
+to 32767 on modern hardware.
+The extension \fBinit_extended_pair\fP uses \fBint\fPs
+for the color-pair and color-value,
+allowing a larger number of colors to be supported.
+.SS init_color
+.PP
+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).
+.bP
+The first argument must be a legal color value;
+default colors are not allowed here.
+(See the section \fBColors\fR for the default color index.)
+.bP
+Each of the last three arguments
+must be a value in the range \fB0\fP through \fB1000\fP.
+.PP
+When \fBinit_color\fR is used, all
occurrences of that color on the screen immediately change to the new
definition.
+.SS init_extended_color
.PP
-The \fBhas_colors\fR routine requires no arguments. It returns \fBTRUE\fR if
-the terminal can manipulate colors; otherwise, it returns \fBFALSE\fR. 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.
-.PP
-The \fBcan_change_color\fR routine requires no arguments. It returns
-\fBTRUE\fR if the terminal supports colors and can change their definitions;
-other, it returns \fBFALSE\fR. This routine facilitates writing
-terminal-independent programs.
+Because \fBinit_color\fP uses signed \fBshort\fPs for its parameters,
+that limits color-values and their red, green, and blue components
+to 32767 on modern hardware.
+The extension \fBinit_extended_color\fP uses \fBint\fPs
+for the color value and
+for setting the red, green, and blue components,
+allowing a larger number of colors to be supported.
+.SS color_content
.PP
The \fBcolor_content\fR 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 \fBshort\fRs for storing
+of the red, green, and blue (RGB) components in a color.
+It requires four arguments: the color number, and three addresses
+of \fBshort\fRs 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
-\fBCOLORS\fR. 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
-component).
+given color.
+.bP
+The first argument must be a legal color value, i.e.,
+\fB0\fP through \fBCOLORS\-1\fP, inclusive.
+.bP
+The values that are stored at the addresses pointed to by the
+last three arguments are in the range
+\fB0\fP (no component) through \fB1000\fP
+(maximum amount of component), inclusive.
+.SS extended_color_content
+.PP
+Because \fBcolor_content\fP uses signed \fBshort\fPs for its parameters,
+that limits color-values and their red, green, and blue components
+to 32767 on modern hardware.
+The extension \fBextended_color_content\fP uses \fBint\fPs
+for the color value and
+for returning the red, green, and blue components,
+allowing a larger number of colors to be supported.
+.SS pair_content
.PP
The \fBpair_content\fR routine allows programmers to find out what colors a
-given color-pair consists of. It requires three arguments: the color-pair
+given color-pair consists of.
+It requires three arguments: the color-pair
number, and two addresses of \fBshort\fRs for storing the foreground and the
-background color numbers. The value of the first argument must be between 1
-and \fBCOLOR_PAIRS\-1\fR. The values that are stored at the addresses pointed
-to by the second and third arguments are between 0 and \fBCOLORS\fR.
-.SS Colors
-In \fB<curses.h>\fR the following macros are defined. These are the default
-colors. \fBcurses\fR also assumes that \fBCOLOR_BLACK\fR is the default
-background color for all terminals.
+background color numbers.
+.bP
+The first argument must be a legal color value,
+i.e., in the range \fB1\fP through \fBCOLOR_PAIRS\-1\fR, inclusive.
+.bP
+The values that are stored at the addresses pointed
+to by the second and third arguments are in the
+range \fB0\fP through \fBCOLORS\fR, inclusive.
+.SS extended_pair_content
.PP
-.nf
- \fBCOLOR_BLACK\fR
- \fBCOLOR_RED\fR
- \fBCOLOR_GREEN\fR
- \fBCOLOR_YELLOW\fR
- \fBCOLOR_BLUE\fR
- \fBCOLOR_MAGENTA\fR
- \fBCOLOR_CYAN\fR
- \fBCOLOR_WHITE\fR
-.fi
+Because \fBpair_content\fP uses signed \fBshort\fPs for its parameters,
+that limits color-pair and color-values to 32767 on modern hardware.
+The extension \fBextended_pair_content\fP uses \fBint\fPs
+for the color pair and
+for returning the foreground and background colors,
+allowing a larger number of colors to be supported.
+.SS reset_color_pairs
+.PP
+The extension \fBreset_color_pairs\fP tells ncurses to discard all
+of the color-pair information which was set with \fBinit_pair\fP.
+It also touches the current- and standard-screens, allowing an application to
+switch color palettes rapidly.
+.SS PAIR_NUMBER
+.PP
+\fBPAIR_NUMBER(\fR\fIattrs\fR) extracts the color
+value from its \fIattrs\fP parameter and returns it as a color pair number.
+.SS COLOR_PAIR
+Its inverse \fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR converts a color pair number
+to an attribute.
+Attributes can hold color pairs in the range 0 to 255.
+If you need a color pair larger than that, you must use functions
+such as \fBattr_set\fP (which pass the color pair as a separate parameter)
+rather than the legacy functions such as \fBattrset\fP.
.SH RETURN VALUE
-The routines \fBcan_change_color()\fR and \fBhas_colors()\fR return \fBTRUE\fR
+The routines \fBcan_change_color\fR and \fBhas_colors\fR return \fBTRUE\fR
or \fBFALSE\fR.
.PP
All other routines return the integer \fBERR\fR upon failure and an \fBOK\fR
-(SVr4 specifies only "an integer value other than \fBERR\fR") upon successful
-completion.
+(SVr4 specifies only \*(``an integer value
+other than \fBERR\fR\*('') upon successful completion.
.PP
X/Open defines no error conditions.
+SVr4 does document some error conditions which apply in general:
+.bP
This implementation will return \fBERR\fR on attempts to
-use color values outside the range 0 to COLORS\-1
+use color values outside the range \fB0\fP to \fBCOLORS\fP\-1
(except for the default colors extension),
-or use color pairs outside the range 0 to COLOR_PAIRS\-1.
-Color values used in \fBinit_color\fP must be in the range 0 to 1000.
+or use color pairs outside the range \fB0\fP to \fBCOLOR_PAIRS\-1\fP.
+.IP
+Color values used in \fBinit_color\fP must be
+in the range \fB0\fP to \fB1000\fP.
+.IP
An error is returned from all functions
if the terminal has not been initialized.
+.IP
An error is returned from secondary functions such as \fBinit_pair\fP
if \fBstart_color\fP was not called.
+.bP
+SVr4 does much the same, except that
+it returns \fBERR\fP from \fBpair_content\fP if the pair was not initialized
+using \fBinit_pairs\fP
+and
+it returns \fBERR\fP from \fBcolor_content\fP
+if the terminal does not support changing colors.
+.IP
+This implementation does not return \fBERR\fP for either case.
+.PP
+Specific functions make additional checks:
.RS 3
.TP 5
\fBinit_color\fP
returns an error if the terminal does not support
-this feature, e.g., if the \fIinitialize_color\fP capability is absent
+this feature, e.g., if the \fBinitialize_color\fP capability is absent
from the terminal description.
.TP 5
\fBstart_color\fP
returns an error if the color table cannot be allocated.
.RE
.SH NOTES
-In the \fIncurses\fR implementation, there is a separate color activation flag,
-color palette, color pairs table, and associated COLORS and COLOR_PAIRS counts
+In the \fBncurses\fR implementation, there is a separate color activation flag,
+color palette, color pairs table,
+and associated \fBCOLORS\fP and \fBCOLOR_PAIRS\fP counts
for each screen; the \fBstart_color\fR function only affects the current
-screen. The SVr4/XSI interface is not really designed with this in mind, and
+screen.
+The SVr4/XSI interface is not really designed with this in mind, and
historical implementations may use a single shared color palette.
.PP
-Note that setting an implicit background color via a color pair affects only
-character cells that a character write operation explicitly touches. To change
+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 \fBcurs_bkgd\fR(3X).
.PP
-Several caveats apply on 386 and 486 machines with VGA-compatible graphics:
+Several caveats apply on older x86 machines
+(e.g., i386, i486) with VGA-compatible graphics:
.bP
-COLOR_YELLOW is actually brown. To get yellow, use COLOR_YELLOW combined with
-the \fBA_BOLD\fR attribute.
+COLOR_YELLOW is actually brown.
+To get yellow, use COLOR_YELLOW combined with the \fBA_BOLD\fR attribute.
.bP
-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
+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).
+\*(``yellow\*('' background (you get a blinking yellow foreground instead).
.bP
Color RGB values are not settable.
.SH PORTABILITY
@@ -224,17 +471,28 @@ This implementation satisfies XSI Curses's minimum maximums
for \fBCOLORS\fR and \fBCOLOR_PAIRS\fR.
.PP
The \fBinit_pair\fP routine accepts negative values of foreground
-and background color to support the \fBuse_default_colors\fP extension,
+and background color to support the \fBuse_default_colors\fR(3X) 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.
+\fBassume_default_colors\fR(3X) extension.
.PP
This implementation checks the pointers,
e.g., for the values returned by
\fBcolor_content\fP and \fBpair_content\fP,
and will treat those as optional parameters when null.
+.PP
+X/Open Curses does not specify a limit for the number of colors and
+color pairs which a terminal can support.
+However, in its use of \fBshort\fP for the parameters,
+it carries over SVr4's implementation detail for the compiled
+terminfo database, which uses signed 16-bit numbers.
+This implementation provides extended versions of those functions
+which use \fBshort\fP parameters,
+allowing applications to use larger color- and pair-numbers.
+.PP
+The \fBreset_color_pairs\fP function is an extension of ncurses.
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_initscr\fR(3X),
diff --git a/man/curs_delch.3x b/man/curs_delch.3x
index 6dfc0a05896d..04b9044aad5e 100644
--- a/man/curs_delch.3x
+++ b/man/curs_delch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_delch.3x,v 1.11 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_delch.3x,v 1.13 2019/11/30 21:06:30 tom Exp $
.TH curs_delch 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.SH NAME
\fBdelch\fR,
\fBwdelch\fR,
@@ -47,21 +51,24 @@
.SH DESCRIPTION
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 \fIy\fR, \fIx\fR, if specified). (This does not
+last character on the line is filled with a blank.
+The cursor position does
+not change (after moving to \fIy\fR, \fIx\fR, if specified).
+(This does not
imply use of the hardware delete character feature.)
.SH RETURN VALUE
All routines return the integer \fBERR\fR upon failure and an \fBOK\fR (SVr4
specifies only "an integer value other than \fBERR\fR") upon successful
completion.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
Note that \fBdelch\fR, \fBmvdelch\fR, and \fBmvwdelch\fR may be macros.
.SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4. The
+These functions are described in the XSI Curses standard, Issue 4.
+The
standard specifies that they return \fBERR\fR on failure, but specifies no
error conditions.
.SH SEE ALSO
diff --git a/man/curs_deleteln.3x b/man/curs_deleteln.3x
index 83cbdec7e9a8..91415ac8a764 100644
--- a/man/curs_deleteln.3x
+++ b/man/curs_deleteln.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2010,2018 Free 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_deleteln.3x,v 1.13 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_deleteln.3x,v 1.14 2018/07/28 21:34:06 tom Exp $
.TH curs_deleteln 3X ""
.SH NAME
\fBdeleteln\fR,
@@ -53,13 +53,18 @@
.SH DESCRIPTION
The \fBdeleteln\fR and \fBwdeleteln\fR 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 bottom line of the window is cleared.
+The cursor position does not change.
.PP
The \fBinsdelln\fR and \fBwinsdelln\fR routines, for positive \fIn\fR, insert
-\fIn\fR lines into the specified window above the current line. The \fIn\fR
-bottom lines are lost. For negative \fIn\fR, delete \fIn\fR lines (starting
-with the one under the cursor), and move the remaining lines up. The bottom
-\fIn\fR lines are cleared. The current cursor position remains the same.
+\fIn\fR lines into the specified window above the current line.
+The \fIn\fR
+bottom lines are lost.
+For negative \fIn\fR, delete \fIn\fR lines (starting
+with the one under the cursor), and move the remaining lines up.
+The bottom
+\fIn\fR lines are cleared.
+The current cursor position remains the same.
.PP
The \fBinsertln\fR and \fBwinsertln\fR routines insert a blank line above the
current line and the bottom line is lost.
@@ -72,14 +77,16 @@ X/Open defines no error conditions.
In this implementation,
if the window parameter is null, an error is returned.
.SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4. The
+These functions are described in the XSI Curses standard, Issue 4.
+The
standard specifies that they return \fBERR\fR on failure, but specifies no
error conditions.
.SH NOTES
Note that all but \fBwinsdelln\fR may be macros.
.PP
These routines do not require a hardware line delete or insert feature in the
-terminal. In fact, they will not use hardware line delete/insert unless
+terminal.
+In fact, they will not use hardware line delete/insert unless
\fBidlok(..., TRUE)\fR has been set on the current window.
.SH SEE ALSO
\fBcurses\fR(3X)
diff --git a/man/curs_extend.3x b/man/curs_extend.3x
index 9a52f93080f4..77960c8d436b 100644
--- a/man/curs_extend.3x
+++ b/man/curs_extend.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1999-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1999-2016,2018 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -28,7 +28,7 @@
.\"
.\" Author: Thomas E. Dickey 1999-on
.\"
-.\" $Id: curs_extend.3x,v 1.19 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_extend.3x,v 1.22 2018/07/28 21:34:06 tom Exp $
.TH curs_extend 3X ""
.SH NAME
\fBcurses_version\fP,
@@ -43,14 +43,14 @@
.SH DESCRIPTION
These functions are extensions to the curses library
which do not fit easily into other categories.
+.SS curses_version
.PP
-Use
-.I curses_version()
+Use \fBcurses_version\fP
to get the version number, including patch level of the library, e.g.,
.B 5.0.19991023
+.SS use_extended_names
.PP
-The
-.I use_extended_names()
+The \fBuse_extended_names\fP
function controls whether the calling application
is able to use user-defined or nonstandard names
which may be compiled into the terminfo
@@ -60,9 +60,18 @@ is made by using the \fB\-x\fP option of \fB@TIC@\fP to compile
extended terminal definitions.
However you can disable this feature
to ensure compatibility with other implementations of curses.
+.SH RETURN VALUE
+.PP
+\fBcurses_version\fP returns a pointer to static memory; you should not free
+this in your application.
+.PP
+\fBuse_extended_names\fP returns the previous state, allowing you to
+save this and restore it.
.SH PORTABILITY
-These routines are specific to ncurses. They were not supported on
-Version 7, BSD or System V implementations. It is recommended that
+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),
diff --git a/man/curs_get_wch.3x b/man/curs_get_wch.3x
index df9bc6a6e6c6..52c57c93baf4 100644
--- a/man/curs_get_wch.3x
+++ b/man/curs_get_wch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2018,2019 Free 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,14 +26,26 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_get_wch.3x,v 1.8 2012/11/03 23:03:59 tom Exp $
+.\" $Id: curs_get_wch.3x,v 1.12 2019/11/30 21:06:30 tom Exp $
.TH curs_get_wch 3X ""
+.na
+.hy 0
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.SH NAME
\fBget_wch\fR,
\fBwget_wch\fR,
\fBmvget_wch\fR,
\fBmvwget_wch\fR,
\fBunget_wch\fR \- get (or push back) a wide character from curses terminal keyboard
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
.sp
@@ -76,13 +88,8 @@ If \fBkeypad\fR is enabled,
these functions respond to
the pressing of a function key by setting the object pointed to by
\fIwch\fR
-to the corresponding
-\fBKEY_\fR
-value defined
-in
-\fB<curses.h>\fR
-and returning
-\fBKEY_CODE_YES\fR.
+to the keycode assigned to the function key,
+and returning \fBKEY_CODE_YES\fR.
If a character (such as escape) that could be the
beginning of a function key is received, curses sets a timer.
If the remainder
@@ -92,6 +99,18 @@ For this
reason, many terminals experience a delay between the time a user presses
the escape key and the time the escape is returned to the program.
.PP
+The keycodes returned by these functions are the same as those
+returned by \fBwgetch\fP:
+.bP
+The predefined function
+keys are listed in \fB<curses.h>\fR as macros with values outside the range
+of 8-bit characters.
+Their names begin with \fBKEY_\fR.
+.bP
+Other (user-defined) function keys
+which may be defined using \fBdefine_key\fP(3X) have no names,
+but also are expected to have values outside the range of 8-bit characters.
+.PP
The
\fBunget_wch\fR
function pushes the wide character
@@ -153,7 +172,7 @@ returns
Otherwise, the function returns
\fBERR\fR.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH SEE ALSO
diff --git a/man/curs_get_wstr.3x b/man/curs_get_wstr.3x
index 2a3fb3ce27bf..23ddb6dc6d81 100644
--- a/man/curs_get_wstr.3x
+++ b/man/curs_get_wstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2018,2019 Free 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,8 +26,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_get_wstr.3x,v 1.9 2012/11/03 23:03:59 tom Exp $
+.\" $Id: curs_get_wstr.3x,v 1.19 2019/11/30 20:59:22 tom Exp $
.TH curs_get_wstr 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.na
.hy 0
.SH NAME
@@ -66,18 +74,23 @@ The effect of
\fBget_wstr\fR
is as though a series of calls
to
-\fBget_wch\fR
-were made, until a newline, other end-of-line, or end-of-file condition is processed.
-An end-of-file condition is represented by \fBWEOF\fR, as defined in \fB<wchar.h>\fR.
-The newline and end-of-line conditions are represented by the \fB\\n\fR \fBwchar_t\fR value.
+\fBget_wch\fR(3X)
+were made, until a newline, other end-of-line,
+or end-of-file condition is processed.
+An end-of-file condition is represented by \fBWEOF\fR,
+as defined in \fB<wchar.h>\fR.
+The newline and end-of-line conditions are represented
+by the \fB\\n\fR \fBwchar_t\fR value.
In all instances, the end of the string is terminated by a null \fBwchar_t\fR.
The routine places resulting values in the area pointed to by \fIwstr\fR.
.PP
-The user's erase and kill characters are interpreted. If keypad
+The user's erase and kill characters are interpreted.
+If keypad
mode is on for the window, \fBKEY_LEFT\fR and \fBKEY_BACKSPACE\fR
are both considered equivalent to the user's kill character.
.PP
-Characters input are echoed only if \fBecho\fR is currently on. In that case,
+Characters input are echoed only if \fBecho\fR is currently on.
+In that case,
backspace is echoed as deletion of the previous character (typically a left
motion).
.PP
@@ -155,20 +168,49 @@ Functions using a window parameter return an error if it is null.
returns an error if the associated call to \fBwget_wch\fP failed.
.RE
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH PORTABILITY
These functions are described in The Single Unix Specification, Version 2.
No error conditions are defined.
-This implementation returns ERR if the window pointer is null,
-or if the lower-level \fBwget_wch\fR call returns an ERR.
+This implementation returns \fBERR\fP if the window pointer is null,
+or if the lower-level \fBwget_wch\fR call returns an \fBERR\fP.
In the latter case,
-an ERR return without other data is treated as an end-of-file condition,
+an \fBERR\fP return without other data is treated as an end-of-file condition,
and the returned array contains a \fBWEOF\fR followed by a null \fBwchar_t\fR.
.PP
-X/Open curses documents these functions to pass an array of \fBwchar_t\fR,
-but all of the vendors implement this using \fBwint_t\fR.
+X/Open curses documented these functions to pass an array of \fBwchar_t\fR
+in 1997, but that was an error because of this part of the description:
+.RS
+.PP
+The effect of \fIget_wstr()\fP is as though a series of calls to
+\fIget_wch()\fP were made, until a newline character, end-of-line character, or
+end-of-file character is processed.
+.RE
+.PP
+The latter function \fIget_wch()\fP can return a negative value,
+while \fBwchar_t\fP is a unsigned type.
+All of the vendors implement this using \fBwint_t\fR, following the standard.
+.PP
+X/Open Curses, Issue 7 (2009) is unclear regarding whether
+the terminating \fInull \fP\fBwchar_t\fP
+value is counted in the length parameter \fIn\fP.
+X/Open Curses, Issue 7 revised the corresponding description
+of \fBwgetnstr\fP to address this issue.
+The unrevised description of \fBwget_nwstr\fP can be interpreted either way.
+This implementation counts the terminator in the length.
+.PP
+X/Open Curses does not specify what happens if the length \fIn\fP is negative.
+.bP
+For analogy with \fBwgetnstr\fP,
+ncurses 6.2 uses a limit (based on \fBLINE_MAX\fP).
+.bP
+Some other implementations (such as Solaris xcurses) do the same,
+while others (PDCurses) do not allow this.
+.bP
+NetBSD 7 curses imitates ncurses 6.1 in this regard,
+treating a \fB\-1\fP as an indefinite number of characters.
.SH SEE ALSO
Functions:
\fBcurses\fR(3X),
diff --git a/man/curs_getcchar.3x b/man/curs_getcchar.3x
index a974c738a8c3..43f97fd43411 100644
--- a/man/curs_getcchar.3x
+++ b/man/curs_getcchar.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2001-2010,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 2001-2017,2019 Free 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,10 +26,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_getcchar.3x,v 1.16 2012/11/03 23:03:59 tom Exp $
+.\" $Id: curs_getcchar.3x,v 1.23 2019/11/30 22:22:32 tom Exp $
.TH curs_getcchar 3X ""
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.SH NAME
\fBgetcchar\fP,
@@ -59,8 +60,9 @@
.br
.B " short \fIcolor_pair\fP,"
.br
-.B " void *\fIopts\fP );"
+.B " const void *\fIopts\fP );"
.SH DESCRIPTION
+.SS getcchar
.PP
The \fBgetcchar\fP function gets a wide-character string
and rendition from a \fBcchar_t\fP argument.
@@ -88,6 +90,7 @@ Does not change the data referenced by
\fIattrs\fP
or
\fIcolor_pair\fP
+.SS setcchar
.PP
The \fBsetcchar\fP function initializes the location pointed to by \fIwcval\fP
by using:
@@ -108,10 +111,23 @@ Additional nonspacing characters are ignored.
.IP
The string may contain a single control character instead.
In that case, no nonspacing characters are allowed.
-.SH NOTES
+.SH EXTENSIONS
.PP
-The \fIopts\fP argument is reserved for future use.
-Currently, an application must provide a null pointer as \fIopts\fP.
+X/Open Curses documents the \fIopts\fP argument as reserved for future use,
+saying that it must be null.
+This implementation
+uses that parameter in ABI 6 for the functions which have a color-pair
+parameter to support extended color pairs:
+.bP
+For functions which modify the color, e.g., \fBsetcchar\fP,
+if \fIopts\fP is set it is treated as a pointer to \fBint\fP,
+and used to set the color pair instead of the \fBshort\fP pair parameter.
+.bP
+For functions which retrieve the color, e.g., \fBgetcchar\fP,
+if \fIopts\fP is set it is treated as a pointer to \fBint\fP,
+and used to retrieve the color pair as an \fBint\fP value,
+in addition retrieving it via the standard pointer to \fBshort\fP parameter.
+.SH NOTES
.PP
The \fIwcval\fP argument may be a value generated by a call to
\fBsetcchar\fP or by a function that has a \fBcchar_t\fP output argument.
@@ -129,6 +145,53 @@ and \fBERR\fP otherwise.
.PP
Upon successful completion, \fBsetcchar\fP returns \fBOK\fP.
Otherwise, it returns \fBERR\fP.
+.SH PORTABILITY
+The \fBCCHARW_MAX\fP symbol is specific to ncurses.
+X/Open Curses does not provide details for the layout of the \fBcchar_t\fP
+structure.
+It tells what data are stored in it:
+.bP
+a spacing character (\fBwchar_t\fP, i.e., 32-bits).
+.bP
+non-spacing characters (again, \fBwchar_t\fP's).
+.bP
+attributes (at least 16 bits, inferred from the various ACS- and WACS-flags).
+.bP
+color pair (at least 16 bits, inferred from the \fBunsigned short\fP type).
+.PP
+The non-spacing characters are optional,
+in the sense that zero or more may be stored in a \fBcchar_t\fP.
+XOpen/Curses specifies a limit:
+.RS 4
+.PP
+Implementations may limit the number of non-spacing characters that can be
+associated with a spacing character, provided any limit is at least 5.
+.RE
+.PP
+The Unix implementations at the time follow that limit:
+.bP
+AIX\ 4 and OSF1\ 4 use the same declaration with an array of 5 non-spacing
+characters \fIz\fP and a single spacing character \fIc\fP.
+.bP
+HP-UX\ 10 uses an opaque structure with 28 bytes,
+which is large enough for the 6 \fBwchar_t\fP values.
+.bP
+Solaris xpg4 curses uses a single array of 6 \fBwchar_t\fP values.
+.PP
+This implementation's \fBcchar_t\fP was defined in 1995
+using \fB5\fP for the total of spacing and non-spacing characters
+(\fBCCHARW_MAX\fP).
+That was probably due to a misreading of the AIX\ 4 header files,
+because the X/Open Curses document was not generally available at that time.
+Later (in 2002), this detail was overlooked when beginning to implement
+the functions using the structure.
+.PP
+In practice, even four non-spacing characters may seem enough.
+X/Open Curses documents possible uses for non-spacing characters,
+including using them for ligatures between characters
+(a feature apparently not supported by any curses implementation).
+Unicode does not limit the (analogous) number of combining characters,
+so some applications may be affected.
.SH SEE ALSO
.PP
Functions:
diff --git a/man/curs_getch.3x b/man/curs_getch.3x
index a8b2ffea1868..fbebd45d0b15 100644
--- a/man/curs_getch.3x
+++ b/man/curs_getch.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,12 +27,17 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_getch.3x,v 1.37 2012/07/07 20:04:56 tom Exp $
+.\" $Id: curs_getch.3x,v 1.54 2019/11/30 21:06:30 tom Exp $
.TH curs_getch 3X ""
.na
.hy 0
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.SH NAME
\fBgetch\fR,
@@ -48,17 +53,18 @@
.PP
\fBint getch(void);\fR
.br
-\fBint wgetch(WINDOW *win);\fR
+\fBint wgetch(WINDOW *\fP\fIwin);\fR
.br
-\fBint mvgetch(int y, int x);\fR
+\fBint mvgetch(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR
.br
-\fBint mvwgetch(WINDOW *win, int y, int x);\fR
+\fBint mvwgetch(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR
.br
-\fBint ungetch(int ch);\fR
+\fBint ungetch(int \fP\fIch\fP\fB);\fR
.br
-\fBint has_key(int ch);\fR
+\fBint has_key(int \fP\fIch\fP\fB);\fR
.br
.SH DESCRIPTION
+.SS Reading characters
The \fBgetch\fR, \fBwgetch\fR, \fBmvgetch\fR and \fBmvwgetch\fR, routines read
a character from the window.
In no-delay mode, if no input is waiting, the value \fBERR\fR is returned.
@@ -71,25 +77,42 @@ In half-delay mode,
the program waits until a character is typed or the
specified timeout has been reached.
.PP
-Unless \fBnoecho\fR has been set,
+If \fBecho\fR is enabled, and the window is not a pad,
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,
+.bP
+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
as if \fBdelch\fR had been called.
+.bP
If the character value is any other \fBKEY_\fR define, the user is alerted
with a \fBbeep\fR call.
+.bP
+If the character is a carriage-return,
+and if \fBnl\fP is enabled,
+it is translated to a line-feed after echoing.
+.bP
Otherwise the character is simply output to the screen.
.PP
If the window is not a pad, and it has been moved or modified since the last
call to \fBwrefresh\fR, \fBwrefresh\fR will be called before another character
is read.
+.SS Keypad mode
.PP
If \fBkeypad\fR is \fBTRUE\fR, 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 \fB<curses.h>\fR as macros with values outside the range
-of 8-bit characters whose names begin with \fBKEY_\fR. Thus, a variable
+that function key is returned instead of the raw characters:
+.bP
+The predefined function
+keys are listed in \fB<curses.h>\fR as macros with values outside the range
+of 8-bit characters.
+Their names begin with \fBKEY_\fR.
+.bP
+Other (user-defined) function keys which may be defined
+using \fBdefine_key\fP(3X)
+have no names, but also are expected to have values outside the range of
+8-bit characters.
+.PP
+Thus, a variable
intended to hold the return value of a function key must be of short size or
larger.
.PP
@@ -102,21 +125,37 @@ 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.
.PP
+In \fBncurses\fP, the timer normally expires after
+the value in \fBESCDELAY\fP (see \fBcurs_variables\fP(3X)).
+If \fBnotimeout\fP is \fBTRUE\fP, the timer does not expire;
+it is an infinite (or very large) value.
+Because function keys usually begin with an escape character,
+the terminal may appear to hang in notimeout mode after pressing the escape key
+until another key is pressed.
+.SS Ungetting characters
+.PP
The \fBungetch\fR routine places \fIch\fR back onto the input queue to be
returned by the next call to \fBwgetch\fR.
There is just one input queue for all windows.
.PP
-.SS Function Keys
-The following function keys, defined in \fB<curses.h>\fR, might be returned by
-\fBgetch\fR if \fBkeypad\fR has been enabled.
-Note that not all of these are
-necessarily supported on any particular terminal.
-.sp
+.SS Predefined key-codes
+The following special keys are defined in \fB<curses.h>\fR.
+.bP
+Except for the special case \fBKEY_RESIZE\fP,
+it is necessary to enable \fBkeypad\fR for \fBgetch\fP to return these codes.
+.bP
+Not all of these are necessarily supported on any particular terminal.
+.bP
+The naming convention may seem obscure, with some apparent
+misspellings (such as \*(``RSUME\*('' for \*(``resume\*('').
+The names correspond to the long terminfo capability names for the keys,
+and were defined long ago, in the 1980s.
+.PP
.TS
center tab(/) ;
-l l
l l .
\fIName\fR/\fIKey\fR \fIname\fR
+_
KEY_BREAK/Break key
KEY_DOWN/The four arrow keys ...
KEY_UP
@@ -216,7 +255,7 @@ KEY_UNDO/Undo key
.TE
.PP
Keypad is arranged like this:
-.sp
+.br
.TS
center allbox tab(/) ;
c c c .
@@ -225,31 +264,55 @@ c c c .
\fBC1\fR/\fBdown\fR/\fBC3\fR
.TE
.sp
-The \fBhas_key\fR routine takes a key value from the above list, and
-returns TRUE or FALSE according to whether
+A few of these predefined values do \fInot\fP correspond to a real key:
+.bP
+.B KEY_RESIZE
+is returned when the \fBSIGWINCH\fP signal has been detected
+(see \fBinitscr\fP(3X) and \fBresizeterm\fR(3X)).
+This code is returned whether or not \fBkeypad\fP has been enabled.
+.bP
+.B KEY_MOUSE
+is returned for mouse-events (see \fBcurs_mouse\fR(3X)).
+This code relies upon whether or not \fBkeypad\fP(3X) has been enabled,
+because (e.g., with \fIxterm\fP mouse prototocol) ncurses must
+read escape sequences,
+just like a function key.
+.SS Testing key-codes
+.PP
+The \fBhas_key\fR routine takes a key-code value from the above list, and
+returns \fBTRUE\fP or \fBFALSE\fP according to whether
the current terminal type recognizes a key with that value.
-Note that a few values do not correspond to a real key,
-e.g., \fBKEY_RESIZE\fP and \fBKEY_MOUSE\fP.
-See \fBresizeterm\fR(3X) for more details about \fBKEY_RESIZE\fP, and
-\fBcurs_mouse\fR(3X) for a discussion of \fBKEY_MOUSE\fP.
+.PP
+The library also supports these extensions:
+.RS 3
+.TP 5
+.B define_key
+defines a key-code for a given string (see \fBdefine_key\fP(3X)).
+.TP 5
+.B key_defined
+checks if there is a key-code defined for a given
+string (see \fBkey_defined\fP(3X)).
+.RE
.PP
.SH RETURN VALUE
All routines return the integer \fBERR\fR upon failure and an integer value
-other than \fBERR\fR (\fBOK\fR in the case of ungetch()) upon successful
+other than \fBERR\fR (\fBOK\fR in the case of \fBungetch\fP) upon successful
completion.
.RS 3
.TP 5
\fBungetch\fP
-returns ERR
+returns \fBERR\fP
if there is no more room in the FIFO.
.TP
\fBwgetch\fP
-returns ERR
+returns \fBERR\fP
if the window pointer is null, or
-if its timeout expires without having any data.
+if its timeout expires without having any data, or
+if the execution was interrupted by a signal (\fBerrno\fR will be set to
+\fBEINTR\fR).
.RE
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
@@ -257,8 +320,10 @@ Use of the escape key by a programmer for a single character function is
discouraged, as it will cause a delay of up to one second while the
keypad code looks for a following function-key sequence.
.PP
-Note that some keys may be the same as commonly used control
-keys, e.g., \fBKEY_ENTER\fP versus control/M, \fBKEY_BACKSPACE\fP versus control/H.
+Some keys may be the same as commonly used control
+keys, e.g.,
+\fBKEY_ENTER\fP versus control/M,
+\fBKEY_BACKSPACE\fP versus control/H.
Some curses implementations may differ according to whether they
treat these control keys specially (and ignore the terminfo), or
use the terminfo definitions.
@@ -276,10 +341,10 @@ the \fIEnter\fP key on the regular keyboard is already handled by
the standard ASCII characters for carriage-return and line-feed,
.bP
depending on whether \fBnl\fP or \fBnonl\fP was called,
-pressing "Enter" on the regular keyboard may return either a carriage-return
-or line-feed, and finally
+pressing \*(``Enter\*('' on the regular keyboard
+may return either a carriage-return or line-feed, and finally
.bP
-"Enter or send" is the standard description for this key.
+\*(``Enter or send\*('' is the standard description for this key.
.PP
When using \fBgetch\fR, \fBwgetch\fR, \fBmvgetch\fR, or
\fBmvwgetch\fR, nocbreak mode (\fBnocbreak\fR) and echo mode
@@ -320,12 +385,17 @@ implementation of handled signal receipt interrupts a \fBread\fR(2) call in
progress or not, and also (in some implementations) depending on whether an
input timeout or non-blocking mode has been set.
.PP
+\fBKEY_MOUSE\fP is mentioned in XSI Curses, along with a few related
+terminfo capabilities, but no higher-level functions use the feature.
+The implementation in ncurses is an extension.
+.PP
+\fBKEY_RESIZE\fP is an extension first implemented for ncurses.
+NetBSD curses later added this extension.
+.PP
Programmers concerned about portability should be prepared for either of two
cases: (a) signal receipt does not interrupt \fBgetch\fR; (b) signal receipt
-interrupts \fBgetch\fR and causes it to return ERR with \fBerrno\fR set to
+interrupts \fBgetch\fR and causes it to return \fBERR\fP with \fBerrno\fR set to
\fBEINTR\fR.
-Under the \fBncurses\fR implementation, handled signals never
-interrupt \fBgetch\fR.
.PP
The \fBhas_key\fR function is unique to \fBncurses\fR.
We recommend that
@@ -337,6 +407,7 @@ any code using it be conditionalized on the \fBNCURSES_VERSION\fR feature macro.
\fBcurs_mouse\fR(3X),
\fBcurs_move\fR(3X),
\fBcurs_refresh\fR(3X),
+\fBcurs_variables\fR(3X),
\fBresizeterm\fR(3X).
.PP
Comparable functions in the wide-character (ncursesw) library are
diff --git a/man/curs_getstr.3x b/man/curs_getstr.3x
index e548cf145c25..818dc9035a0e 100644
--- a/man/curs_getstr.3x
+++ b/man/curs_getstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +26,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_getstr.3x,v 1.19 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_getstr.3x,v 1.28 2019/07/20 19:14:56 tom Exp $
.TH curs_getstr 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.na
.hy 0
.SH NAME
@@ -63,25 +71,35 @@
.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
-not included in the returned string). The resulting value is placed in the
-area pointed to by the character pointer \fIstr\fR.
+not included in the returned string).
+.\" X/Open says also until EOf
+.\" X/Open says then an EOS is added to the result
+.\" X/Open doesn't mention n<0
+The resulting value is placed in the
+area pointed to by the character pointer \fIstr\fR,
+followed by a NUL.
.PP
\fBwgetnstr\fR reads at most \fIn\fR 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 \fBgetnstr\fR function reads
+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 \fBgetnstr\fR function reads
from the \fIstdscr\fR default window.
.PP
-The user's erase and kill characters are interpreted. If keypad
+The user's erase and kill characters are interpreted.
+If keypad
mode is on for the window, \fBKEY_LEFT\fR and \fBKEY_BACKSPACE\fR
are both considered equivalent to the user's kill character.
.PP
-Characters input are echoed only if \fBecho\fR is currently on. In that case,
+Characters input are echoed only if \fBecho\fR is currently on.
+In that case,
backspace is echoed as deletion of the previous character (typically a left
motion).
.SH RETURN VALUE
All routines return the integer \fBERR\fR upon failure and an \fBOK\fR (SVr4
-specifies only "an integer value other than \fBERR\fR") upon successful
+specifies only \*(``an integer value other than \fBERR\fR\*('') upon successful
completion.
.PP
X/Open defines no error conditions.
@@ -92,10 +110,10 @@ if the window pointer is null, or
if its timeout expires without having any data.
.PP
This implementation provides an extension as well.
-If a SIGWINCH interrupts the function, it will return \fBKEY_RESIZE\fP
+If a \fBSIGWINCH\fP interrupts the function, it will return \fBKEY_RESIZE\fP
rather than \fBOK\fP or \fBERR\fP.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
@@ -104,18 +122,70 @@ Note that \fBgetstr\fR, \fBmvgetstr\fR, and \fBmvwgetstr\fR may be macros.
These functions are described in the XSI Curses standard, Issue 4.
They read single-byte characters only.
The standard does not define any error conditions.
-This implementation returns ERR if the window pointer is null,
-or if the lower-level \fBwgetch\fR call returns an ERR.
+This implementation returns \fBERR\fP if the window pointer is null,
+or if the lower-level \fBwgetch\fR(3X) call returns an \fBERR\fP.
.PP
SVr3 and early SVr4 curses implementations did not reject function keys;
-the SVr4.0 documentation claimed that "special keys" (such as function
-keys, "home" key, "clear" key, \fIetc\fR.) are "interpreted", without
-giving details. It lied. In fact, the `character' value appended to the
+the SVr4.0 documentation claimed that \*(``special keys\*(''
+(such as function keys,
+\*(``home\*('' key,
+\*(``clear\*('' key,
+\fIetc\fR.) 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).
.PP
The functions \fBgetnstr\fR, \fBmvgetnstr\fR, and \fBmvwgetnstr\fR were
present but not documented in SVr4.
+.PP
+X/Open Curses, Issue 5 (2007) stated that these functions
+\*(``read at most \fIn\fP bytes\*(''
+but did not state whether the terminating NUL is counted in that limit.
+X/Open Curses, Issue 7 (2009) changed that to say they
+\*(``read at most \fIn\fP\-1 bytes\*(''
+to allow for the terminating NUL.
+As of 2018, some implementations do, some do not count it:
+.bP
+ncurses 6.1 and PDCurses do not count the NUL in the given limit, while
+.bP
+Solaris SVr4 and NetBSD curses count the NUL as part of the limit.
+.bP
+Solaris xcurses provides both:
+its wide-character \fBwget_nstr\fP reserves a NUL,
+but its \fBwgetnstr\fP does not count the NUL consistently.
+.PP
+In SVr4 curses,
+a negative value of \fIn\fP tells \fBwgetnstr\fP to assume that the
+caller's buffer is large enough to hold the result,
+i.e., to act like \fBwgetstr\fP.
+X/Open Curses does not mention this
+(or anything related to negative or zero values of \fIn\fP),
+however most implementations
+use the feature, with different limits:
+.bP
+Solaris SVr4 curses and PDCurses limit the result to 255 bytes.
+Other Unix systems than Solaris are likely to use the same limit.
+.bP
+Solaris xcurses limits the result to \fBLINE_MAX\fP bytes.
+.bP
+NetBSD 7 assumes no particular limit for the result from \fBwgetstr\fP.
+However, it limits the \fBwgetnstr\fP parameter \fIn\fP to ensure
+that it is greater than zero.
+.IP
+A comment in NetBSD's source code states that this is specified in SUSv2.
+.bP
+ncurses (before 6.2) assumes no particular limit for the result
+from \fBwgetstr\fP, and treats the \fIn\fP parameter of \fBwgetnstr\fP
+like SVr4 curses.
+.bP
+ncurses 6.2 uses \fBLINE_MAX\fP,
+or a larger (system-dependent) value
+which the \fBsysconf\fP function may provide.
+If neither \fBLINE_MAX\fP or \fBsysconf\fP is available,
+ncurses uses the POSIX value for \fBLINE_MAX\fP (a 2048 byte limit).
+In either case, it reserves a byte for the terminating NUL.
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_getch\fR(3X),
diff --git a/man/curs_in_wch.3x b/man/curs_in_wch.3x
index 5f50e5a89fde..84294d8014ef 100644
--- a/man/curs_in_wch.3x
+++ b/man/curs_in_wch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2018,2019 Free 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,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_in_wch.3x,v 1.5 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_in_wch.3x,v 1.8 2019/11/30 21:06:30 tom Exp $
.TH curs_in_wch 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.SH NAME
\fBin_wch\fR,
\fBmvin_wch\fR,
@@ -49,12 +53,12 @@ the current position in the named window into the \fBcchar_t\fR object
referenced by wcval.
.SH RETURN VALUE
No errors are defined in the XSI Curses standard.
-This implementation checks for null pointers, returns ERR in that case.
-Also, the \fImv\fR routines check for error moving the cursor, returning ERR
-in that case.
-Otherwise they return OK
+This implementation checks for null pointers, returns \fBERR\fP in that case.
+Also, the \fImv\fR routines check for error moving the cursor,
+returning \fBERR\fP in that case.
+Otherwise they return \fBOK\fP.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
diff --git a/man/curs_in_wchstr.3x b/man/curs_in_wchstr.3x
index f92968779623..dda9f2487311 100644
--- a/man/curs_in_wchstr.3x
+++ b/man/curs_in_wchstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2018,2019 Free 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,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_in_wchstr.3x,v 1.9 2012/11/03 23:03:59 tom Exp $
+.\" $Id: curs_in_wchstr.3x,v 1.12 2019/11/30 21:06:30 tom Exp $
.TH curs_in_wchstr 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.na
.hy 0
.SH NAME
@@ -92,7 +96,8 @@ with
\fBmvwin_wchstr\fR
or
\fBwin_wchstr\fR
-causes undefined results. Therefore, the use of
+causes undefined results.
+Therefore, the use of
\fBin_wchnstr\fR,
\fBmvin_wchnstr\fR,
\fBmvwin_wchnstr\fR, or
@@ -104,13 +109,13 @@ Upon successful completion, these functions return
Otherwise, they return
\fBERR\fR.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH PORTABILITY
The XSI Curses defines no error conditions.
This implementation checks for null pointers,
-returning ERR in that case.
+returning \fBERR\fP in that case.
.SH SEE ALSO
Functions:
\fBcurses\fR(3X),
diff --git a/man/curs_inch.3x b/man/curs_inch.3x
index 7e1e3b439177..15698c8c6637 100644
--- a/man/curs_inch.3x
+++ b/man/curs_inch.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +27,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_inch.3x,v 1.17 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_inch.3x,v 1.22 2019/11/30 21:06:30 tom Exp $
.TH curs_inch 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.SH NAME
\fBinch\fR,
\fBwinch\fR,
@@ -47,8 +55,10 @@
.br
.SH DESCRIPTION
These routines return the character, of type \fBchtype\fR, 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
+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
\fB<curses.h>\fR can be used with the \fB&\fR (logical AND) operator to
extract the character or attributes alone.
.
@@ -62,16 +72,47 @@ l l .
\fBA_COLOR\fR Bit-mask to extract color-pair field information
.TE
.SH RETURN VALUE
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
+.PP
+The \fBwinch\fP function does not return an error if the window contains
+characters larger than 8-bits (255).
+Only the low-order 8 bits of the character are used by \fBwinch\fP.
.SH NOTES
Note that all of these routines may be macros.
.SH PORTABILITY
These functions are described in the XSI Curses standard, Issue 4.
-.SH SEE ALSO
-\fBcurses\fR(3X).
.PP
-Comparable functions in the wide-character (ncursesw) library are
-described in
-\fBcurs_in_wch\fR(3X).
+Very old systems (before standardization) provide a different function
+with the same name:
+.bP
+The \fBwinch\fP function was part of the original BSD curses library,
+which stored a 7-bit character combined with the \fIstandout\fP attribute.
+.IP
+In BSD curses, \fBwinch\fP returned only the character (as an integer)
+with the \fIstandout\fP attribute removed.
+.bP
+System V curses added support for several video attributes which
+could be combined with characters in the window.
+.IP
+Reflecting this improvement, the function was altered to return the
+character combined with all video attributes in a \fBchtype\fP value.
+.PP
+X/Open Curses does not specify
+the size and layout of attributes, color and character values in
+\fBchtype\fP; it is implementation-dependent.
+This implementation uses 8 bits for character values.
+An application using more bits, e.g., a Unicode value,
+should use the wide-character equivalents to these functions.
+.SH SEE ALSO
+.TP 5
+\fBcurses\fR(3X)
+gives an overview of the WINDOW and \fBchtype\fP data types.
+.TP 5
+\fBcurs_attr\fR(3X)
+goes into more detail, pointing out portability problems and
+constraints on the use of \fBchtype\fP for returning window information.
+.TP 5
+\fBcurs_in_wch\fR(3X)
+describes comparable functions for the wide-character (ncursesw) library.
diff --git a/man/curs_inchstr.3x b/man/curs_inchstr.3x
index 2dc7673c3768..b7ba45071774 100644
--- a/man/curs_inchstr.3x
+++ b/man/curs_inchstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2018 Free 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,8 +26,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_inchstr.3x,v 1.15 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_inchstr.3x,v 1.18 2018/07/28 21:34:06 tom Exp $
.TH curs_inchstr 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.na
.hy 0
.SH NAME
@@ -63,7 +71,8 @@
.SH DESCRIPTION
These routines return a NULL-terminated array of \fBchtype\fR quantities,
starting at the current cursor position in the named window and ending at the
-right margin of the window. The four functions with \fIn\fR as
+right margin of the window.
+The four functions with \fIn\fR as
the last argument, return a leading substring at most \fIn\fR characters long
(exclusive of the trailing (chtype)0).
Constants defined in \fB<curses.h>\fR can be used with the \fB&\fR (logical
@@ -74,22 +83,27 @@ All routines return the integer \fBERR\fR upon failure and an integer value
other than \fBERR\fR upon successful completion (the number of characters
retrieved, exclusive of the trailing 0).
.PP
-No error conditions are defined.
-If the \fIchstr\fP parameter is null,
-no data is returned,
-and the return value is zero.
+X/Open Curses defines no error conditions.
+In this implementation:
+.bP
+If the \fIwin\fP parameter is null, an error is returned,
+.bP
+If the \fIchstr\fP parameter is null, an error is returned,
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
-Note that all routines except \fBwinchnstr\fR may be macros. SVr4 does not
+Note that all routines except \fBwinchnstr\fR may be macros.
+SVr4 does not
document whether the result string is zero-terminated; it does not document
whether a length limit argument includes any trailing 0; and it does not
document the meaning of the return value.
.SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4. It is no
-more specific than the SVr4 documentation on the trailing 0. It does specify
+These functions are described in the XSI Curses standard, Issue 4.
+It is no
+more specific than the SVr4 documentation on the trailing 0.
+It does specify
that the successful return of the functions is \fBOK\fR.
.SH SEE ALSO
\fBcurses\fR(3X), \fBcurs_inch\fR(3X).
diff --git a/man/curs_initscr.3x b/man/curs_initscr.3x
index 0dceb973d1e6..d08043dc192b 100644
--- a/man/curs_initscr.3x
+++ b/man/curs_initscr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2018 Free 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,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_initscr.3x,v 1.19 2013/07/20 19:34:14 tom Exp $
+.\" $Id: curs_initscr.3x,v 1.31 2018/07/28 22:15:59 tom Exp $
.TH curs_initscr 3X ""
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
@@ -52,57 +56,91 @@
.br
\fBbool isendwin(void);\fR
.br
-\fBSCREEN *newterm(char *type, FILE *outfd, FILE *infd);\fR
+\fBSCREEN *newterm(const char *\fP\fItype\fP\fB, FILE *\fP\fIoutfd\fP\fB, FILE *\fP\fIinfd\fP\fB);\fR
.br
-\fBSCREEN *set_term(SCREEN *new);\fR
+\fBSCREEN *set_term(SCREEN *\fP\fInew\fP\fB);\fR
.br
-\fBvoid delscreen(SCREEN* sp);\fR
+\fBvoid delscreen(SCREEN* \fP\fIsp\fP\fB);\fR
.br
.SH DESCRIPTION
+.SS initscr
\fBinitscr\fR is normally the first \fBcurses\fR routine to call when
-initializing a program. A few special routines sometimes need to be
-called before it; these are \fBslk_init\fR, \fBfilter\fR, \fBripoffline\fR,
-\fBuse_env\fR. For multiple-terminal applications, \fBnewterm\fR may be
-called before \fBinitscr\fR.
+initializing a program.
+A few special routines sometimes need to be called before it;
+these are \fBslk_init\fR(3X), \fBfilter\fR, \fBripoffline\fR,
+\fBuse_env\fR.
+For multiple-terminal applications,
+\fBnewterm\fR may be called before \fBinitscr\fR.
.PP
The initscr code determines the terminal type and initializes all \fBcurses\fR
-data structures. \fBinitscr\fR also causes the first call to \fBrefresh\fR to
-clear the screen. If errors occur, \fBinitscr\fR writes an appropriate error
-message to standard error and exits; otherwise, a pointer is returned to
-\fBstdscr\fR.
+data structures.
+\fBinitscr\fR also causes the first call to \fBrefresh\fR(3X)
+to clear the screen.
+If errors occur, \fBinitscr\fR writes an appropriate error
+message to standard error and exits;
+otherwise, a pointer is returned to \fBstdscr\fR.
+.SS newterm
.PP
A program that outputs to more than one terminal should use the \fBnewterm\fR
-routine for each terminal instead of \fBinitscr\fR. A program that needs to
-inspect capabilities, so it can continue to run in a line-oriented mode if the
+routine for each terminal instead of \fBinitscr\fR.
+A program that needs to inspect capabilities,
+so it can continue to run in a line-oriented mode if the
terminal cannot support a screen-oriented program, would also use
-\fBnewterm\fR. The routine \fBnewterm\fR should be called once for each
-terminal. It returns a variable of type \fBSCREEN *\fR which should be saved
-as a reference to that terminal. The arguments are the \fItype\fR of the
-terminal to be used in place of \fB$TERM\fR, a file pointer for output to the
-terminal, and another file pointer for input from the terminal (if \fItype\fR
-is \fBNULL\fR, \fB$TERM\fR will be used). The program must also call
+\fBnewterm\fR.
+The routine \fBnewterm\fR should be called once for each terminal.
+It returns a variable of type \fBSCREEN *\fR which should be saved
+as a reference to that terminal.
+\fBnewterm\fP's arguments are
+.bP
+the \fItype\fR of the terminal to be used in place of \fB$TERM\fR,
+.bP
+a file pointer for output to the terminal, and
+.bP
+another file pointer for input from the terminal
+.PP
+If the \fItype\fR parameter is \fBNULL\fR, \fB$TERM\fR will be used.
+.SS endwin
+.PP
+The program must also call
\fBendwin\fR for each terminal being used before exiting from \fBcurses\fR.
If \fBnewterm\fR is called more than once for the same terminal, the first
terminal referred to must be the last one for which \fBendwin\fR is called.
.PP
A program should always call \fBendwin\fR before exiting or escaping from
-\fBcurses\fR 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 \fBrefresh\fR or \fBdoupdate\fR after a
+\fBcurses\fR mode temporarily.
+This routine
+.bP
+resets colors to correspond with the default color pair 0,
+.bP
+moves the cursor to the lower left-hand corner of the screen,
+.bP
+clears the remainder of the line so that it uses the default colors,
+.bP
+sets the cursor to normal visibility (see \fBcurs_set\fP(3X)),
+.bP
+stops cursor-addressing mode using the \fIexit_ca_mode\fP terminal capability,
+.bP
+restores tty modes (see \fBreset_shell_mode\fP(3X)).
+.PP
+Calling \fBrefresh\fR(3X) or \fBdoupdate\fR(3X) after a
temporary escape causes the program to resume visual mode.
+.SS isendwin
.PP
The \fBisendwin\fR routine returns \fBTRUE\fR if \fBendwin\fR has been
-called without any subsequent calls to \fBwrefresh\fR, and \fBFALSE\fR
-otherwise.
+called without any subsequent calls to \fBwrefresh\fR,
+and \fBFALSE\fR otherwise.
+.SS set_term
.PP
-The \fBset_term\fR routine is used to switch between different
-terminals. The screen reference \fBnew\fR becomes the new current
-terminal. The previous terminal is returned by the routine. This is
-the only routine which manipulates \fBSCREEN\fR pointers; all other
-routines affect only the current terminal.
+The \fBset_term\fR routine is used to switch between different terminals.
+The screen reference \fBnew\fR becomes the new current terminal.
+The previous terminal is returned by the routine.
+This is the only routine which manipulates \fBSCREEN\fR pointers;
+all other routines affect only the current terminal.
+.SS delscreen
.PP
The \fBdelscreen\fR routine frees storage associated with the
-\fBSCREEN\fR data structure. The \fBendwin\fR routine does not do
+\fBSCREEN\fR data structure.
+The \fBendwin\fR routine does not do
this, so \fBdelscreen\fR should be called after \fBendwin\fR if a
particular \fBSCREEN\fR is no longer needed.
.SH RETURN VALUE
@@ -113,26 +151,104 @@ Routines that return pointers always return \fBNULL\fR on error.
.PP
X/Open defines no error conditions.
In this implementation
+.bP
\fBendwin\fP returns an error if the terminal was not initialized.
-.SH NOTES
-Note that \fBinitscr\fR and \fBnewterm\fR may be macros.
+.bP
+\fBnewterm\fP
+returns an error if it cannot allocate the data structures for the screen,
+or for the top-level windows within the screen,
+i.e.,
+\fBcurscr\fP, \fBnewscr\fP, or \fBstdscr\fP.
+.bP
+\fBset_term\fP
+returns no error.
.SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4. It
-specifies that portable applications must not call \fBinitscr\fR more than
-once.
+These functions were described in the XSI Curses standard, Issue 4.
+As of 2015, the current document is X/Open Curses, Issue 7.
+.SS Differences
+X/Open specifies that portable applications must not
+call \fBinitscr\fR more than once:
+.bP
+The portable way to use \fBinitscr\fP is once only,
+using \fBrefresh\fP (see curs_refresh(3X))
+to restore the screen after \fBendwin\fP.
+.bP
+This implementation allows using \fBinitscr\fP after \fBendwin\fP.
.PP
Old versions of curses, e.g., BSD 4.4, may have returned a null pointer
from \fBinitscr\fR when an error is detected, rather than exiting.
It is safe but redundant to check the return value of \fBinitscr\fR
in XSI Curses.
+.SS Unset TERM Variable
.PP
If the TERM variable is missing or empty, \fBinitscr\fP uses the
value \*(``unknown\*('',
which normally corresponds to a terminal entry with the \fIgeneric\fP
(\fIgn\fP) capability.
-Generic entries are detected by \fBsetupterm\fP(3X) and cannot be
-used for full-screen operation.
+Generic entries are detected by \fBsetupterm\fP
+(see curs_terminfo(3X)) and cannot be used for full-screen operation.
Other implementations may handle a missing/empty TERM variable differently.
+.SS Signal Handlers
+.PP
+Quoting from X/Open Curses, section 3.1.1:
+.RS 5
+.PP
+\fICurses implementations may provide for special handling of the \fBSIGINT\fP,
+\fBSIGQUIT\fP and \fBSIGTSTP\fP signals
+if their disposition is \fBSIG_DFL\fP at the time
+\fBinitscr\fP is called \fP...
+.PP
+\fIAny special handling for these signals may remain in effect for the
+life of the process or until the process changes the disposition of
+the signal.\fP
+.PP
+\fINone of the Curses functions are required to be safe
+with respect to signals \fP...
+.RE
+.PP
+This implementation establishes signal handlers during initialization,
+e.g., \fBinitscr\fP or \fBnewterm\fP.
+Applications which must handle these signals should set up the corresponding
+handlers \fIafter\fP initializing the library:
+.TP 5
+.B SIGINT
+The handler \fIattempts\fP to cleanup the screen on exit.
+Although it \fIusually\fP works as expected, there are limitations:
+.RS 5
+.bP
+Walking the \fBSCREEN\fP list is unsafe, since all list management
+is done without any signal blocking.
+.bP
+On systems which have \fBREENTRANT\fP turned on, \fBset_term\fP uses
+functions which could deadlock or misbehave in other ways.
+.bP
+\fBendwin\fP calls other functions, many of which use stdio or
+other library functions which are clearly unsafe.
+.RE
+.TP 5
+.B SIGTERM
+This uses the same handler as \fBSIGINT\fP, with the same limitations.
+It is not mentioned in X/Open Curses, but is more suitable for this
+purpose than \fBSIGQUIT\fP (which is used in debugging).
+.TP 5
+.B SIGTSTP
+This handles the \fIstop\fP signal, used in job control.
+When resuming the process, this implementation discards pending
+input with \fBflushinput\fP (see curs_util(3X)), and repaints the screen
+assuming that it has been completely altered.
+It also updates the saved terminal modes with \fBdef_shell_mode\fP
+(see \fBcurs_kernel\fR(3X)).
+.TP 5
+.B SIGWINCH
+This handles the window-size changes which were ignored in
+the standardization efforts.
+The handler sets a (signal-safe) variable
+which is later tested in \fBwgetch\fP (see curs_getch(3X)).
+If \fBkeypad\fP has been enabled for the corresponding window,
+\fBwgetch\fP returns the key symbol \fBKEY_RESIZE\fP.
+At the same time, \fBwgetch\fP calls \fBresizeterm\fP to adjust the
+standard screen \fBstdscr\fP,
+and update other data such as \fBLINES\fP and \fBCOLS\fP.
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_kernel\fR(3X),
diff --git a/man/curs_inopts.3x b/man/curs_inopts.3x
index 2e637ce30b64..214edd748edc 100644
--- a/man/curs_inopts.3x
+++ b/man/curs_inopts.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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_inopts.3x,v 1.18 2013/07/20 19:42:02 tom Exp $
+.\" $Id: curs_inopts.3x,v 1.28 2019/01/20 20:39:35 tom Exp $
.TH curs_inopts 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
@@ -92,122 +92,184 @@
\fBint typeahead(int fd);\fR
.br
.SH DESCRIPTION
+The \fBncurses\fP library provides several functions which let an application
+change the way input from the terminal is handled.
+Some are global, applying to all windows.
+Others apply only to a specific window.
+Window-specific settings are not automatically applied to new or derived
+windows.
+An application must apply these to each window, if the same behavior
+is needed.
+.\"
+.SS cbreak
Normally, the tty driver buffers typed characters until a newline or carriage
-return is typed. The \fBcbreak\fR routine disables line buffering and
+return is typed.
+The \fBcbreak\fR routine disables line buffering and
erase/kill character-processing (interrupt and flow control characters are
unaffected), making characters typed by the user immediately available to the
-program. The \fBnocbreak\fR routine returns the terminal to normal (cooked)
+program.
+The \fBnocbreak\fR routine returns the terminal to normal (cooked)
mode.
.PP
Initially the terminal may or may not be in \fBcbreak\fR mode, as the mode is
inherited; therefore, a program should call \fBcbreak\fR or \fBnocbreak\fR
-explicitly. Most interactive programs using \fBcurses\fR set the \fBcbreak\fR
-mode. Note that \fBcbreak\fR overrides \fBraw\fR.
+explicitly.
+Most interactive programs using \fBcurses\fR set the \fBcbreak\fR
+mode.
+Note that \fBcbreak\fR overrides \fBraw\fR.
[See \fBcurs_getch\fR(3X) for a
discussion of how these routines interact with \fBecho\fR and \fBnoecho\fR.]
+.\"
+.SS echo/noecho
.PP
The \fBecho\fR and \fBnoecho\fR routines control whether characters typed by
-the user are echoed by \fBgetch\fR as they are typed. Echoing by the tty
+the user are echoed by \fBgetch\fR(3X) as they are typed.
+Echoing by the tty
driver is always disabled, but initially \fBgetch\fR is in echo mode, so
-characters typed are echoed. Authors of most interactive programs prefer to do
+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 \fBnoecho\fR.
[See \fBcurs_getch\fR(3X) for a
discussion of how these routines interact with \fBcbreak\fR and
\fBnocbreak\fR.]
+.\"
+.SS halfdelay
.PP
The \fBhalfdelay\fR routine is used for half-delay mode, which is similar to
\fBcbreak\fR mode in that characters typed by the user are immediately
-available to the program. However, after blocking for \fItenths\fR tenths of
-seconds, ERR is returned if nothing has been typed. The value of \fBtenths\fR
-must be a number between 1 and 255. Use \fBnocbreak\fR to leave half-delay
+available to the program.
+However, after blocking for \fItenths\fR tenths of
+seconds, \fBERR\fP is returned if nothing has been typed.
+The value of \fItenths\fR
+must be a number between 1 and 255.
+Use \fBnocbreak\fR to leave half-delay
mode.
+.\"
+.SS intrflush
.PP
-If the \fBintrflush\fR option is enabled, (\fIbf\fR is \fBTRUE\fR), when an
-interrupt key is pressed on the keyboard (interrupt, break, quit) all output in
+If the \fBintrflush\fR option is enabled (\fIbf\fR is \fBTRUE\fR), and 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 \fBcurses\fR to have the wrong idea of what is on
-the screen. Disabling (\fIbf\fR is \fBFALSE\fR), the option prevents the
-flush. The default for the option is inherited from the tty driver settings.
+the screen.
+Disabling the option (\fIbf\fR is \fBFALSE\fR) prevents the
+flush.
+The default for the option is inherited from the tty driver settings.
The window argument is ignored.
+.\"
+.SS keypad
.PP
-The \fBkeypad\fR option enables the keypad of the user's terminal. If
+The \fBkeypad\fR option enables the keypad of the user's terminal.
+If
enabled (\fIbf\fR is \fBTRUE\fR), the user can press a function key
-(such as an arrow key) and \fBwgetch\fR returns a single value
-representing the function key, as in \fBKEY_LEFT\fR. If disabled
+(such as an arrow key) and \fBwgetch\fR(3X) returns a single value
+representing the function key, as in \fBKEY_LEFT\fR.
+If disabled
(\fIbf\fR is \fBFALSE\fR), \fBcurses\fR 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
+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 keypad to be turned on when \fBwgetch\fR is
-called. The default value for keypad is false.
+causes the terminal keypad to be turned on when \fBwgetch\fR(3X) is
+called.
+The default value for keypad is \fBFALSE\fP.
+.\"
+.SS meta
.PP
Initially, whether the terminal returns 7 or 8 significant bits on
-input depends on the control mode of the tty driver [see termio(7)].
+input depends on the control mode of the tty driver [see \fBtermios\fP(3)].
To force 8 bits to be returned, invoke \fBmeta\fR(\fIwin\fR,
\fBTRUE\fR); this is equivalent, under POSIX, to setting the CS8 flag
-on the terminal. To force 7 bits to be returned, invoke
+on the terminal.
+To force 7 bits to be returned, invoke
\fBmeta\fR(\fIwin\fR, \fBFALSE\fR); this is equivalent, under POSIX,
-to setting the CS7 flag on the terminal. The window argument,
-\fIwin\fR, is always ignored. If the terminfo capabilities \fBsmm\fR
+to setting the CS7 flag on the terminal.
+The window argument,
+\fIwin\fR, is always ignored.
+If the terminfo capabilities \fBsmm\fR
(meta_on) and \fBrmm\fR (meta_off) are defined for the terminal,
\fBsmm\fR is sent to the terminal when \fBmeta\fR(\fIwin\fR,
\fBTRUE\fR) is called and \fBrmm\fR is sent when \fBmeta\fR(\fIwin\fR,
\fBFALSE\fR) is called.
+.\"
+.SS nodelay
.PP
The \fBnodelay\fR option causes \fBgetch\fR to be a non-blocking call.
-If no input is ready, \fBgetch\fR returns \fBERR\fR. If disabled
+If no input is ready, \fBgetch\fR returns \fBERR\fR.
+If disabled
(\fIbf\fR is \fBFALSE\fR), \fBgetch\fR waits until a key is pressed.
.PP
-While interpreting an input escape sequence, \fBwgetch\fR sets a timer
-while waiting for the next character. If \fBnotimeout(\fR\fIwin\fR,
-\fBTRUE\fR) is called, then \fBwgetch\fR does not set a timer. The
+While interpreting an input escape sequence, \fBwgetch\fR(3X) sets a timer
+while waiting for the next character.
+If \fBnotimeout(\fR\fIwin\fR,
+\fBTRUE\fR) is called, then \fBwgetch\fR 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.
+.\"
+.SS raw/noraw
.PP
The \fBraw\fR and \fBnoraw\fR routines place the terminal into or out of raw
-mode. Raw mode is similar to \fBcbreak\fR mode, in that characters typed are
-immediately passed through to the user program. The differences are that in
+mode.
+Raw mode is similar to \fBcbreak\fR 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
+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
\fBcurses\fR.
+.\"
+.SS noqiflush
.PP
When the \fBnoqiflush\fR routine is used, normal flush of input and
output queues associated with the \fBINTR\fR, \fBQUIT\fR and
-\fBSUSP\fR characters will not be done [see termio(7)]. When
+\fBSUSP\fR characters will not be done [see \fBtermios\fP(3)].
+When
\fBqiflush\fR is called, the queues will be flushed when these control
-characters are read. You may want to call \fBnoqiflush()\fR in a signal
+characters are read.
+You may want to call \fBnoqiflush\fR in a signal
handler if you want output to continue as though the interrupt
had not occurred, after the handler exits.
+.\"
+.SS timeout/wtimeout
.PP
The \fBtimeout\fR and \fBwtimeout\fR routines set blocking or
-non-blocking read for a given window. If \fIdelay\fR is negative,
+non-blocking read for a given window.
+If \fIdelay\fR is negative,
blocking read is used (i.e., waits indefinitely for
-input). If \fIdelay\fR is zero, then non-blocking read is used
-(i.e., read returns \fBERR\fR if no input is waiting). If
+input).
+If \fIdelay\fR is zero, then non-blocking read is used
+(i.e., read returns \fBERR\fR if no input is waiting).
+If
\fIdelay\fR is positive, then read blocks for \fIdelay\fR
milliseconds, and returns \fBERR\fR if there is still no input.
Hence, these routines provide the same functionality as \fBnodelay\fR,
plus the additional capability of being able to block for only
\fIdelay\fR milliseconds (where \fIdelay\fR is positive).
+.\"
+.SS typeahead
.PP
The \fBcurses\fR 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
-\fBrefresh\fR or \fBdoupdate\fR is called again.
+\fBrefresh\fR(3X) or \fBdoupdate\fR is called again.
This allows faster response to commands typed in advance.
Normally, the input FILE
pointer passed to \fBnewterm\fR, or \fBstdin\fR in the case that
\fBinitscr\fR was used, will be used to do this typeahead checking.
The \fBtypeahead\fR routine specifies that the file descriptor
-\fIfd\fR is to be used to check for typeahead instead. If \fIfd\fR is
+\fIfd\fR is to be used to check for typeahead instead.
+If \fIfd\fR is
\-1, then no typeahead checking is done.
+.\"
.SH RETURN VALUE
-All routines that return an integer return \fBERR\fR upon failure and OK (SVr4
-specifies only "an integer value other than \fBERR\fR") upon successful
-completion, unless otherwise noted in the preceding routine descriptions.
+All routines that return an integer return \fBERR\fR upon failure and \fBOK\fP
+(SVr4 specifies only \*(``an integer value other than \fBERR\fR\*('')
+upon successful completion,
+unless otherwise noted in the preceding routine descriptions.
.PP
X/Open does not define any error conditions.
In this implementation,
@@ -225,27 +287,29 @@ These functions are described in the XSI Curses standard, Issue 4.
.PP
The ncurses library obeys the XPG4 standard and the historical 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; it
+initializes the terminal state.
+BSD curses differed from this slightly; it
left the echo bit on at initialization, but the BSD \fBraw\fR call turned it
-off as a side-effect. For best portability, set echo or noecho explicitly
+off as a side-effect.
+For best portability, set echo or noecho explicitly
just after initialization, even if your program remains in cooked mode.
.PP
When \fBkeypad\fP is first enabled,
ncurses loads the key-definitions for the current terminal description.
If the terminal description includes extended string capabilities,
-e.g., from using the \fB\-x\fP option of @TIC@,
+e.g., from using the \fB\-x\fP option of \fB@TIC@\fP,
then ncurses also defines keys for the capabilities whose names
-begin with "k".
+begin with \*(``k\*(''.
The corresponding keycodes are generated and (depending on previous
loads of terminal descriptions) may differ from one execution of a
program to the next.
The generated keycodes are recognized by the \fBkeyname\fP function
-(which will then return a name beginning with "k" denoting the
-terminfo capability name rather than "K", used for curses key-names).
+(which will then return a name beginning with \*(``k\*('' denoting the
+terminfo capability name rather than \*(``K\*('', used for curses key-names).
On the other hand, an application can use \fBdefine_key\fP to establish
a specific keycode for a given string.
This makes it possible for an application to check for an extended
-capability's presence with \fItigetstr\fP,
+capability's presence with \fBtigetstr\fP,
and reassign the keycode to match its own needs.
.PP
Low-level applications can use \fBtigetstr\fP to obtain the definition
@@ -271,8 +335,9 @@ Note that \fBecho\fR, \fBnoecho\fR, \fBhalfdelay\fR, \fBintrflush\fR,
\fBqiflush\fR, \fBtimeout\fR, and \fBwtimeout\fR may be macros.
.PP
The \fBnoraw\fR and \fBnocbreak\fR 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
+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.
.SH SEE ALSO
\fBcurses\fR(3X),
@@ -280,4 +345,4 @@ control states that are hard to predict or understand; it is not recommended.
\fBcurs_initscr\fR(3X),
\fBcurs_util\fR(3X),
\fBdefine_key\fR(3X),
-\fBtermio\fR(7)
+\fBtermios\fR(3)
diff --git a/man/curs_ins_wch.3x b/man/curs_ins_wch.3x
index 4c6a925e9963..5873f48e4066 100644
--- a/man/curs_ins_wch.3x
+++ b/man/curs_ins_wch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2017,2019 Free 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,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_ins_wch.3x,v 1.5 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_ins_wch.3x,v 1.7 2019/11/30 21:06:30 tom Exp $
.TH curs_ins_wch 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.SH NAME
\fBins_wch\fR,
\fBmvins_wch\fR,
@@ -50,10 +54,10 @@ All characters to the right of the cursor are moved one space to the right,
with the possibility of the rightmost character on the line being lost.
The insertion operation does not change the cursor position.
.SH RETURN VALUE
-If successful, these functions return OK.
-If not, they return ERR.
+If successful, these functions return \fBOK\fP.
+If not, they return \fBERR\fP.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH ERRORS
diff --git a/man/curs_ins_wstr.3x b/man/curs_ins_wstr.3x
index 12479b0d9306..595748ac3b65 100644
--- a/man/curs_ins_wstr.3x
+++ b/man/curs_ins_wstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2017,2019 Free 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,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_ins_wstr.3x,v 1.7 2012/11/03 23:03:59 tom Exp $
+.\" $Id: curs_ins_wstr.3x,v 1.9 2019/11/30 21:06:30 tom Exp $
.TH curs_ins_wstr 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.na
.hy 0
.SH NAME
@@ -93,10 +97,10 @@ functions will fail.
XSI does not define what will happen if a nonspacing character follows
a control character.
.SH RETURN VALUE
-Upon successful completion, these functions return OK.
-Otherwise, they return ERR.
+Upon successful completion, these functions return \fBOK\fP.
+Otherwise, they return \fBERR\fP.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH SEE ALSO
diff --git a/man/curs_insch.3x b/man/curs_insch.3x
index 77e92ec0bed7..2cd69aac08e7 100644
--- a/man/curs_insch.3x
+++ b/man/curs_insch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_insch.3x,v 1.13 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_insch.3x,v 1.16 2019/11/30 21:06:30 tom Exp $
.TH curs_insch 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.SH NAME
\fBinsch\fR,
\fBwinsch\fR,
@@ -46,15 +50,17 @@
.br
.SH DESCRIPTION
These routines insert the character \fIch\fR before the character under the
-cursor. All characters to the right of the cursor are moved one space to the
+cursor.
+All characters to the right of the cursor are moved one space to the
right, with the possibility of the rightmost character on the line being lost.
The insertion operation does not change the cursor position.
.SH RETURN VALUE
-All routines that return an integer return \fBERR\fR upon failure and OK (SVr4
-specifies only "an integer value other than \fBERR\fR") upon successful
-completion, unless otherwise noted in the preceding routine descriptions.
+All routines that return an integer return \fBERR\fR upon failure and \fBOK\fP
+(SVr4 specifies only "an integer value other than \fBERR\fR")
+upon successful completion,
+unless otherwise noted in the preceding routine descriptions.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
diff --git a/man/curs_insstr.3x b/man/curs_insstr.3x
index 3e38a531d5fb..93142d769898 100644
--- a/man/curs_insstr.3x
+++ b/man/curs_insstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2019 Free 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,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_insstr.3x,v 1.21 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_insstr.3x,v 1.23 2019/11/30 21:06:30 tom Exp $
.TH curs_insstr 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.SH NAME
\fBinsstr\fR,
\fBinsnstr\fR,
@@ -70,16 +74,17 @@ If \fIn\fR<=0, then the entire string is inserted.
.PP
Special characters are handled as in \fBaddch\fP.
.SH RETURN VALUE
-All routines that return an integer return \fBERR\fR upon failure and OK (SVr4
-specifies only "an integer value other than \fBERR\fR") upon successful
-completion, unless otherwise noted in the preceding routine descriptions.
+All routines that return an integer return \fBERR\fR upon failure and \fBOK\fP
+(SVr4 specifies only "an integer value other than \fBERR\fR")
+upon successful completion,
+unless otherwise noted in the preceding routine descriptions.
.PP
X/Open defines no error conditions.
In this implementation,
if the window parameter is null or the str parameter is null,
an error is returned.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
diff --git a/man/curs_instr.3x b/man/curs_instr.3x
index 1b17db952d11..2c148bc404dd 100644
--- a/man/curs_instr.3x
+++ b/man/curs_instr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2018 Free 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,8 +26,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_instr.3x,v 1.16 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_instr.3x,v 1.19 2018/07/28 21:34:06 tom Exp $
.TH curs_instr 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.SH NAME
\fBinstr\fR,
\fBinnstr\fR,
@@ -59,19 +67,22 @@
.SH DESCRIPTION
These routines return a string of characters in \fIstr\fR, extracted starting
at the current cursor position in the named window.
-Attributes are stripped from the characters. The four
+Attributes are stripped from the characters.
+The four
functions with \fIn\fR as the last argument return a leading substring at most
\fIn\fR characters long (exclusive of the trailing NUL).
.SH RETURN VALUE
All of the functions return \fBERR\fR upon failure,
or the number of characters actually read into the string.
.PP
-X/Open defines no error conditions.
-In this implementation,
-if the window parameter is null or the str parameter is null,
-a zero is returned.
+X/Open Curses defines no error conditions.
+In this implementation:
+.bP
+If the \fIwin\fP parameter is null, an error is returned,
+.bP
+If the \fIchstr\fP parameter is null, an error is returned,
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
diff --git a/man/curs_inwstr.3x b/man/curs_inwstr.3x
index 0cdf4d8df65b..a2779aca1d3b 100644
--- a/man/curs_inwstr.3x
+++ b/man/curs_inwstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2018,2019 Free 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,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_inwstr.3x,v 1.8 2012/11/03 23:03:59 tom Exp $
+.\" $Id: curs_inwstr.3x,v 1.12 2019/11/30 21:06:30 tom Exp $
.TH curs_inwstr 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.SH NAME
\fBinwstr\fR,
\fBinnwstr\fR,
@@ -41,48 +45,58 @@
.nf
\fB#include <curses.h> \fR
.sp
-\fBint inwstr(\fR\fBwchar_t *\fR\fIstr\fR\fB);\fR
+\fBint inwstr(\fR\fBwchar_t *\fR\fIwstr\fR\fB);\fR
.br
-\fBint innwstr(\fR\fBwchar_t *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR
+\fBint innwstr(\fR\fBwchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR
.br
-\fBint winwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, wchar_t *\fR\fIstr\fR\fB);\fR
+\fBint winwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, wchar_t *\fR\fIwstr\fR\fB);\fR
.br
-\fBint winnwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, wchar_t *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR
+\fBint winnwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR
.br
-\fBint mvinwstr(\fR\fBint \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIstr\fR\fB);\fR
+\fBint mvinwstr(\fR\fBint \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIwstr\fR\fB);\fR
.br
-\fBint mvinnwstr(\fR\fBint \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR
+\fBint mvinnwstr(\fR\fBint \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR
.br
-\fBint mvwinwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIstr\fR\fB);\fR
+\fBint mvwinwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIwstr\fR\fB);\fR
.br
-\fBint mvwinnwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR
+\fBint mvwinnwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR
.fi
.SH DESCRIPTION
-These routines return a string of \fBwchar_t\fR characters in \fIwstr\fR,
+.PP
+These routines return a string of \fBwchar_t\fR wide characters in \fIwstr\fR,
extracted starting at the current cursor position in the named window.
-Attributes are stripped from the characters.
-The four functions with \fIn\fR as the last argument return a leading substring at most
-\fIn\fR bytes long (exclusive of the trailing NUL).
-Transfer stops at the end of the current line, or when \fIn\fR bytes have
+.PP
+The four functions with \fIn\fR as the last argument return
+a leading substring at most \fIn\fR characters long
+(exclusive of the trailing NUL).
+Transfer stops at the end of the current line, or when \fIn\fR characters have
been stored at the location referenced by \fIwstr\fR.
.PP
-If the size \fIn\fR is not large enough to store a complete character,
+If the size \fIn\fR is not large enough to store a complete complex character,
an error is generated.
.SH NOTES
-Note that all routines except
+.PP
+All routines except
\fBwinnwstr\fR
may be macros.
+.PP
+Each cell in the window holds a complex character (i.e., base-
+and combining-characters) together with attributes and color.
+These functions store only the wide characters,
+ignoring attributes and color.
+Use \fBin_wchstr\fP to return the complex characters from a window.
.SH RETURN VALUE
All routines return
\fBERR\fR
-upon failure. Upon
+upon failure.
+Upon
successful completion, the *\fBinwstr\fR
routines return
\fBOK\fR, and the *\fBinnwstr\fR
routines return the
number of characters read into the string.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH SEE ALSO
diff --git a/man/curs_kernel.3x b/man/curs_kernel.3x
index d81b134b8d81..144854c6d529 100644
--- a/man/curs_kernel.3x
+++ b/man/curs_kernel.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_kernel.3x,v 1.19 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_kernel.3x,v 1.27 2019/11/30 21:06:30 tom Exp $
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.TH curs_kernel 3X ""
.na
.hy 0
@@ -59,79 +67,111 @@
.br
\fBint savetty(void);\fR
.br
-\fBvoid getsyx(int y, int x);\fR
+\fBvoid getsyx(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR
.br
-\fBvoid setsyx(int y, int x);\fR
+\fBvoid setsyx(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR
.br
-\fBint ripoffline(int line, int (*init)(WINDOW *, int));\fR
+\fBint ripoffline(int \fP\fIline\fP\fB, int (*\fP\fIinit\fP\fB)(WINDOW *, int));\fR
.br
-\fBint curs_set(int visibility);\fR
+\fBint curs_set(int \fP\fIvisibility\fP\fB);\fR
.br
-\fBint napms(int ms);\fR
+\fBint napms(int \fP\fIms\fP\fB);\fR
.br
.SH DESCRIPTION
-The following routines give low-level access to various \fBcurses\fR
-capabilities. These routines typically are used inside library
-routines.
+The following routines give low-level access
+to various \fBcurses\fR capabilities.
+These routines typically are used inside library routines.
+.SS def_prog_mode, def_shell_mode
.PP
The \fBdef_prog_mode\fR and \fBdef_shell_mode\fR routines save the
-current terminal modes as the "program" (in \fBcurses\fR) or "shell"
+current terminal modes as the \*(``program\*('' (in \fBcurses\fR) or \*(``shell\*(''
(not in \fBcurses\fR) state for use by the \fBreset_prog_mode\fR and
-\fBreset_shell_mode\fR routines. This is done automatically by
-\fBinitscr\fR. There is one such save area for each screen context
-allocated by \fBnewterm()\fR.
+\fBreset_shell_mode\fR routines.
+This is done automatically by \fBinitscr\fR.
+There is one such save area for each screen context
+allocated by \fBnewterm\fR.
+.SS reset_prog_mode, reset_shell_mode
.PP
The \fBreset_prog_mode\fR and \fBreset_shell_mode\fR routines restore
-the terminal to "program" (in \fBcurses\fR) or "shell" (out of
-\fBcurses\fR) state. These are done automatically by \fBendwin\fR
-and, after an \fBendwin\fR, by \fBdoupdate\fR, so they normally are
-not called.
+the terminal to \*(``program\*('' (in \fBcurses\fR) or \*(``shell\*('' (out of
+\fBcurses\fR) state.
+These are done automatically by \fBendwin\fR(3X) and,
+after an \fBendwin\fR, by \fBdoupdate\fR,
+so they normally are not called.
+.SS resetty, savetty
.PP
The \fBresetty\fR and \fBsavetty\fR routines save and restore the
-state of the terminal modes. \fBsavetty\fR saves the current state in
+state of the terminal modes.
+\fBsavetty\fR saves the current state in
a buffer and \fBresetty\fR restores the state to what it was at the
last call to \fBsavetty\fR.
+.SS getsyx
.PP
-The \fBgetsyx\fR routine returns the current coordinates of the virtual screen
-cursor in \fIy\fR and \fIx\fR. If \fBleaveok\fR is currently \fBTRUE\fR, then
-\fB\-1\fR,\fB\-1\fR is returned. If lines have been removed from the top of the
+The \fBgetsyx\fR routine returns the current coordinates
+of the \fIvirtual screen\fP cursor in \fIy\fR and \fIx\fR.
+If \fBleaveok\fR is currently \fBTRUE\fR, then
+\fB\-1\fR,\fB\-1\fR is returned.
+If lines have been removed from the top of the
screen, using \fBripoffline\fR, \fIy\fR and \fIx\fR include these lines;
therefore, \fIy\fR and \fIx\fR should be used only as arguments for
\fBsetsyx\fR.
.PP
-The \fBsetsyx\fR routine sets the virtual screen cursor to
-\fIy\fR, \fIx\fR. If \fIy\fR and \fIx\fR are both \fB\-1\fR, then
-\fBleaveok\fR is set. The two routines \fBgetsyx\fR and \fBsetsyx\fR
+Few applications will use this feature,
+most use \fBgetyx\fP instead.
+.SS setsyx
+.PP
+The \fBsetsyx\fR routine sets
+the \fIvirtual screen\fP cursor to \fIy\fR, \fIx\fR.
+If \fIy\fR and \fIx\fR are both \fB\-1\fR, then
+\fBleaveok\fR is set.
+The two routines \fBgetsyx\fR and \fBsetsyx\fR
are designed to be used by a library routine, which manipulates
\fBcurses\fR windows but does not want to change the current position
-of the program's cursor. The library routine would call \fBgetsyx\fR
+of the program's cursor.
+The library routine would call \fBgetsyx\fR
at the beginning, do its manipulation of its own windows, do a
\fBwnoutrefresh\fR on its windows, call \fBsetsyx\fR, and then call
\fBdoupdate\fR.
.PP
+Few applications will use this feature,
+most use \fBwmove\fP instead.
+.SS ripoffline
+.PP
The \fBripoffline\fR routine provides access to the same facility that
\fBslk_init\fR [see \fBcurs_slk\fR(3X)] uses to reduce the size of the
-screen. \fBripoffline\fR must be called before \fBinitscr\fR or
-\fBnewterm\fR is called. If \fIline\fR is positive, a line is removed
-from the top of \fBstdscr\fR; if \fIline\fR is negative, a line is
-removed from the bottom. When this is done inside \fBinitscr\fR, the
+screen.
+\fBripoffline\fR must be called before \fBinitscr\fR or
+\fBnewterm\fR is called, to prepare these initial actions:
+.bP
+If \fIline\fR is positive, a line is removed from the top of \fBstdscr\fR.
+.bP
+if \fIline\fR is negative, a line is removed from the bottom.
+.PP
+When the resulting initialization is done inside \fBinitscr\fR, the
routine \fBinit\fR (supplied by the user) is called with two
-arguments: a window pointer to the one-line window that has been
-allocated and an integer with the number of columns in the window.
+arguments:
+.bP
+a window pointer to the one-line window that has been
+allocated and
+.bP
+an integer with the number of columns in the window.
+.PP
Inside this initialization routine, the integer variables \fBLINES\fR
and \fBCOLS\fR (defined in \fB<curses.h>\fR) are not guaranteed to be
-accurate and \fBwrefresh\fR or \fBdoupdate\fR must not be called. It
-is allowable to call \fBwnoutrefresh\fR during the initialization
-routine.
+accurate and \fBwrefresh\fR or \fBdoupdate\fR must not be called.
+It is allowable to call \fBwnoutrefresh\fR during the initialization routine.
.PP
\fBripoffline\fR can be called up to five times before calling \fBinitscr\fR or
\fBnewterm\fR.
+.SS curs_set
.PP
The \fBcurs_set\fR routine sets the cursor state to invisible,
normal, or very visible for \fBvisibility\fR equal to \fB0\fR,
-\fB1\fR, or \fB2\fR respectively. If the terminal supports the
-\fIvisibility\fR requested, the previous \fIcursor\fR state is
-returned; otherwise, \fBERR\fR is returned.
+\fB1\fR, or \fB2\fR respectively.
+If the terminal supports the \fIvisibility\fR requested,
+the previous \fIcursor\fR state is returned;
+otherwise, \fBERR\fR is returned.
+.SS napms
.PP
The \fBnapms\fR routine is used to sleep for \fIms\fR milliseconds.
.SH RETURN VALUE
@@ -143,9 +183,12 @@ requested \fIvisibility\fR is not supported.
.PP
X/Open defines no error conditions.
In this implementation
-.RS
.TP 5
+.na
+.hy 0
\fBdef_prog_mode\fR, \fBdef_shell_mode\fR, \fBreset_prog_mode\fR, \fBreset_shell_mode\fR
+.hy
+.ad
return an error
if the terminal was not initialized, or
if the I/O call to obtain the terminal settings fails.
@@ -153,13 +196,13 @@ if the I/O call to obtain the terminal settings fails.
\fBripoffline\fP
returns an error if the maximum number of ripped-off lines
exceeds the maximum (NRIPS = 5).
-.RE
.SH NOTES
Note that \fBgetsyx\fR is a macro, so \fB&\fR is not necessary before
the variables \fIy\fR and \fIx\fR.
.PP
-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
+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.
.PP
Both ncurses and SVr4 will call \fBcurs_set\fR in \fBendwin\fR
@@ -169,11 +212,13 @@ invisible 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.
+The \fIvirtual screen\fP 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.
.PP
-The SVr4 documentation describes \fBsetsyx\fR and \fBgetsyx\fR as having return
-type int. This is misleading, as they are macros with no documented semantics
+The SVr4 documentation describes \fBsetsyx\fR and \fBgetsyx\fR
+as having return type int.
+This is misleading, as they are macros with no documented semantics
for the return value.
.SH SEE ALSO
\fBcurses\fR(3X),
diff --git a/man/curs_legacy.3x b/man/curs_legacy.3x
index febaf294174f..9851b9dece08 100644
--- a/man/curs_legacy.3x
+++ b/man/curs_legacy.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2007-2017,2019 Free 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,57 +26,82 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_legacy.3x,v 1.5 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_legacy.3x,v 1.9 2019/03/23 21:51:12 tom Exp $
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.TH curs_legacy 3X ""
.SH NAME
-getattrs \- get \fBcurses\fR cursor and window coordinates, attributes
+curs_legacy \- get \fBcurses\fP cursor and window coordinates, attributes
.SH SYNOPSIS
-\fB#include <curses.h>\fR
+\fB#include <curses.h>\fP
.sp
-\fBint getattrs(WINDOW *win);\fR
+\fBint getattrs(const WINDOW *win);\fP
.br
-\fBint getbegx(WINDOW *win);\fR
+\fBint getbegx(const WINDOW *win);\fP
.br
-\fBint getbegy(WINDOW *win);\fR
+\fBint getbegy(const WINDOW *win);\fP
.br
-\fBint getcurx(WINDOW *win);\fR
+\fBint getcurx(const WINDOW *win);\fP
.br
-\fBint getcury(WINDOW *win);\fR
+\fBint getcury(const WINDOW *win);\fP
.br
-\fBint getmaxx(WINDOW *win);\fR
+\fBint getmaxx(const WINDOW *win);\fP
.br
-\fBint getmaxy(WINDOW *win);\fR
+\fBint getmaxy(const WINDOW *win);\fP
.br
-\fBint getparx(WINDOW *win);\fR
+\fBint getparx(const WINDOW *win);\fP
.br
-\fBint getpary(WINDOW *win);\fR
+\fBint getpary(const WINDOW *win);\fP
.br
.SH DESCRIPTION
-The \fBgetbegy\fR and \fBgetbegx\fR functions return the same
-data as \fBgetbegyx\fR.
-.PP
-The \fBgetcury\fR and \fBgetcurx\fR functions return the same
-data as \fBgetyx\fR.
-.PP
-The \fBgetmaxy\fR and \fBgetmaxx\fR functions return the same
-data as \fBgetmaxyx\fR.
-.PP
-The \fBgetpary\fR and \fBgetparx\fR functions return the same
-data as \fBgetparyx\fR.
+These legacy functions are simpler to use than the X/Open Curses functions:
+.bP
+The \fBgetattrs\fP function returns the same attribute data as \fBwattr_get\fP.
+.IP
+However, \fBgetattrs\fP returns an integer (actually a \fBchtype\fP),
+while \fBwattr_get\fP returns the current color pair in a separate parameter.
+In the wide-character library configuration,
+color pairs may not fit into a \fBchtype\fP,
+so \fBwattr_get\fP is the only way to obtain the color information.
+.IP
+Because \fBgetattrs\fP returns the attributes in a single parameter,
+it would not be possible for an application to distinguish that from
+\fBERR\fP (a \fI-1\fP).
+If the window parameter is null, \fBgetattrs\fP returns \fBA_NORMAL\fP (zero).
+.bP
+The \fBgetbegy\fP and \fBgetbegx\fP functions return the same
+data as \fBgetbegyx\fP.
+.bP
+The \fBgetcury\fP and \fBgetcurx\fP functions return the same
+data as \fBgetyx\fP.
+.bP
+The \fBgetmaxy\fP and \fBgetmaxx\fP functions return the same
+data as \fBgetmaxyx\fP.
+.bP
+The \fBgetpary\fP and \fBgetparx\fP functions return the same
+data as \fBgetparyx\fP.
.SH RETURN VALUE
-These functions return an integer,
-or ERR if the window parameter is null.
+Except as noted,
+these functions return an integer,
+or \fBERR\fP if the window parameter is null.
.SH NOTES
All of these interfaces are provided as macros and functions.
The macros are suppressed (and only the functions provided)
-when \fBNCURSES_OPAQUE\fR is defined.
+when \fBNCURSES_OPAQUE\fP is defined.
The standard forms such as \fBgetyx\fP must be implemented as macros,
and (in this implementation) are defined in terms of the functions
described here,
to avoid reliance on internal details of the WINDOW structure.
.SH PORTABILITY
These functions were supported on Version 7, BSD or System V implementations.
+None of those implementations checked the window parameter.
+.PP
+The \fBgetattrs\fP function and macro are defined to return a (signed) integer
+for compatibility with those implementations
+although an unsigned type would have been more appropriate.
.SH SEE ALSO
-\fBcurses\fR(3X),
-\fBcurs_getyx\fR(3X),
-\fBcurs_opaque\fR(3X)
+\fBcurses\fP(3X),
+\fBcurs_getyx\fP(3X),
+\fBcurs_opaque\fP(3X)
diff --git a/man/curs_memleaks.3x b/man/curs_memleaks.3x
index 5ebc0d066fa5..8cea74256378 100644
--- a/man/curs_memleaks.3x
+++ b/man/curs_memleaks.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2008,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2008-2017,2019 Free 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,44 +26,79 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_memleaks.3x,v 1.3 2010/12/04 18:40:45 tom Exp $
+.\" $Id: curs_memleaks.3x,v 1.7 2019/12/14 23:21:32 tom Exp $
.TH curs_memleaks 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.na
.hy 0
.SH NAME
-\fB_nc_freeall\fP
-\fB_nc_free_and_exit\fP \- \fBcurses\fR memory-leak checking
+\fB_nc_freeall\fP,
+\fB_nc_free_and_exit\fP,
+\fB_nc_free_tinfo\fP \- \fBcurses\fR memory-leak checking
.ad
.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
.sp
+\fBvoid exit_curses(int);\fR
+.br
+\fBvoid exit_terminfo(int);\fR
+.sp
+/* deprecated */
+.br
\fBvoid _nc_freeall(void);\fR
.br
\fBvoid _nc_free_and_exit(int);\fR
+.br
+\fBvoid _nc_free_tinfo(int);\fR
.SH DESCRIPTION
These functions are used to simplify analysis of memory leaks in the ncurses
library.
-They are normally not available; they must be configured into the library
-at build time using the \fB\-\-disable-leaks\fP option.
-That compiles-in code that frees memory that normally would not be freed.
.PP
Any implementation of curses must not free the memory associated with
a screen, since (even after calling \fBendwin\fP), it must be available
-for use in the next call to \fBrefresh\fP.
+for use in the next call to \fBrefresh\fP(3X).
There are also chunks of memory held for performance reasons.
That makes it hard to analyze curses applications for memory leaks.
-To work around this, one can build a debugging version of the ncurses
-library which frees those chunks which it can, and provides these
-functions to free all of the memory allocated by the ncurses library.
+When using the specially configured debugging version of the ncurses library,
+applications can call functions which free those chunks of memory,
+simplifying the process of memory-leak checking.
+.PP
+Some of the functions are named with a \*(``_nc_\*('' prefix
+because they are not intended for use in the non-debugging library:
+.TP 5
+\fB_nc_freeall\fP
+This frees (almost) all of the memory allocated by ncurses.
+.TP 5
+\fB_nc_free_and_exit\fP
+This frees the memory allocated by ncurses (like \fB_nc_freeall\fP),
+and exits the program.
+It is preferred over \fB_nc_freeall\fP since some of that memory
+may be required to keep the application running.
+Simply exiting (with the given exit-code) is safer.
+.TP 5
+\fB_nc_free_tinfo\fP
+Use this function if only the low-level terminfo functions (and
+corresponding library) are used.
+Like \fB_nc_free_and_exit\fP, it exits the program after freeing memory.
+.PP
+The functions prefixed \*(``_nc\*('' are normally not available;
+they must be configured into the library
+at build time using the \fB\-\-disable-leaks\fP option.
+That compiles-in code that frees memory that normally would not be freed.
.PP
-The \fP_nc_free_and_exit\fP function is the preferred one since
-some of the memory which is freed may be required for the application
-to continue running.
-Its parameter is the code to pass to the \fPexit\fP routine.
+The \fBexit_curses\fP and \fBexit_terminfo\fP functions
+call \fB_nc_free_and_exit\fP and \fB_nc_free_tinfo\fP if
+the library is configured to support memory-leak checking.
+If the library is not configured to support memory-leak checking,
+they simply call \fBexit\fP.
.SH RETURN VALUE
These functions do not return a value.
.SH PORTABILITY
-These functions are not part of the XSI interface.
+These functions are not part of X/Open Curses;
+nor do other implementations of curses provide a similar feature.
.SH SEE ALSO
\fBcurses\fR(3X).
diff --git a/man/curs_mouse.3x b/man/curs_mouse.3x
index 1de85e510851..5e4bc10e9694 100644
--- a/man/curs_mouse.3x
+++ b/man/curs_mouse.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,29 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_mouse.3x,v 1.39 2013/06/22 18:09:42 tom Exp $
+.\" $Id: curs_mouse.3x,v 1.51 2019/07/13 23:45:12 tom Exp $
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de NS
+.ie n .sp
+.el .sp .5
+.ie n .in +4
+.el .in +2
+.nf
+.ft C \" Courier
+..
+.de NE
+.fi
+.ft R
+.ie n .in -4
+.el .in -2
+..
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.TH curs_mouse 3X ""
.na
.hy 0
@@ -54,27 +76,28 @@
.PP
\fBbool has_mouse(void);\fR
.br
-\fBint getmouse(MEVENT *event);\fR
+\fBint getmouse(MEVENT *\fP\fIevent\fP\fB);\fR
.br
-\fBint ungetmouse(MEVENT *event);\fR
+\fBint ungetmouse(MEVENT *\fP\fIevent\fP\fB);\fR
.br
-\fBmmask_t mousemask(mmask_t newmask, mmask_t *oldmask);\fR
+\fBmmask_t mousemask(mmask_t \fP\fInewmask\fP\fB, mmask_t *\fP\fIoldmask\fP\fB);\fR
.br
-\fBbool wenclose(const WINDOW *win, int y, int x);\fR
+\fBbool wenclose(const WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR
.br
-\fBbool mouse_trafo(int* pY, int* pX, bool to_screen);\fR
+\fBbool mouse_trafo(int* \fP\fIpY\fP\fB, int* \fP\fIpX\fP\fB, bool \fP\fIto_screen\fP\fB);\fR
.br
-\fBbool wmouse_trafo(const WINDOW* win, int* pY, int* pX,\fR
+\fBbool wmouse_trafo(const WINDOW* \fP\fIwin\fP\fB, int* \fP\fIpY\fP\fB, int* \fP\fIpX\fP\fB,\fR
.br
- \fBbool to_screen);\fR
+ \fBbool \fP\fIto_screen\fP\fB);\fR
.br
-\fBint mouseinterval(int erval);\fR
+\fBint mouseinterval(int \fP\fIerval\fP\fB);\fR
.br
.SH DESCRIPTION
These functions provide an interface to mouse events from
\fBncurses\fR(3X).
Mouse events are represented by \fBKEY_MOUSE\fR
-pseudo-key values in the \fBwgetch\fR input stream.
+pseudo-key values in the \fBwgetch\fR(3X) input stream.
+.SS mousemask
.PP
To make mouse events visible, use the \fBmousemask\fR function.
This will set
@@ -89,6 +112,7 @@ 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.
+.SS Mouse events
.PP
Here are the mouse event type masks which may be defined:
.PP
@@ -134,8 +158,9 @@ ALL_MOUSE_EVENTS report all button state changes
REPORT_MOUSE_POSITION report mouse movement
_
.TE
+.SS getmouse
.PP
-Once a class of mouse events have been made visible in a window,
+Once a class of mouse events has been made visible in a window,
calling the \fBwgetch\fR function on that window may return
\fBKEY_MOUSE\fR as an indicator that a mouse event has been queued.
To read the event data and pop the event off the queue, call
@@ -150,48 +175,57 @@ indicate the event type.
The corresponding data in the queue is marked invalid.
A subsequent call to \fBgetmouse\fP will retrieve the next older
item from the queue.
+.SS ungetmouse
.PP
The \fBungetmouse\fR function behaves analogously to \fBungetch\fR.
It pushes
a \fBKEY_MOUSE\fR event onto the input queue, and associates with that event
the given state data and screen-relative character-cell coordinates.
+.SS wenclose
.PP
The \fBwenclose\fR 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 otherwise.
+character-cell coordinates is enclosed by a given window, returning \fBTRUE\fP
+if it is and \fBFALSE\fP otherwise.
It is useful for determining what subset of
the screen windows enclose the location of a mouse event.
+.SS wmouse_trafo
.PP
The \fBwmouse_trafo\fR function transforms a given pair of coordinates
from stdscr-relative coordinates
to coordinates relative to the given window or vice versa.
-Please remember, that stdscr-relative coordinates are not always identical
+The resulting stdscr-relative coordinates are not always identical
to window-relative coordinates due to the mechanism to reserve lines on top
or bottom of the screen for other purposes
-(see the \fBripoffline()\fP and \fBslk_init\fR calls, for example).
+(see the \fBripoffline\fP and \fBslk_init\fR(3X) calls, for example).
+.bP
If the parameter \fBto_screen\fR is \fBTRUE\fR, the pointers
\fBpY, pX\fR must reference the coordinates of a location
inside the window \fBwin\fR.
They are converted to window-relative coordinates and returned
through the pointers.
If the conversion was successful, the function returns \fBTRUE\fR.
+.bP
If one of the parameters was NULL or the location is
not inside the window, \fBFALSE\fR is returned.
+.bP
If \fBto_screen\fR is
\fBFALSE\fR, the pointers \fBpY, pX\fR must reference window-relative
coordinates.
They are converted to stdscr-relative coordinates if the
window \fBwin\fR encloses this point.
In this case the function returns \fBTRUE\fR.
+.bP
If one of the parameters is NULL or the point is not inside the
window, \fBFALSE\fR is returned.
-Please notice, that the referenced coordinates
+The referenced coordinates
are only replaced by the converted coordinates if the transformation was
successful.
+.SS mouse_trafo
.PP
The \fBmouse_trafo\fR function performs the same translation
as \fBwmouse_trafo\fR,
using stdscr for \fBwin\fR.
+.SS mouseinterval
.PP
The \fBmouseinterval\fR function sets the maximum time (in thousands of a
second) that can elapse between press and release events for them to
@@ -200,8 +234,9 @@ Use \fBmouseinterval(0)\fR to disable click resolution.
This function returns the previous interval value.
Use \fBmouseinterval(\-1)\fR to obtain the interval without altering it.
The default is one sixth of a second.
+.SS has_mouse
.PP
-The \fBhas_mouse\fP function returns TRUE if the mouse driver has been
+The \fBhas_mouse\fP function returns \fBTRUE\fP if the mouse driver has been
successfully initialized.
.PP
Note that mouse events will be ignored when input is in cooked mode, and will
@@ -211,14 +246,16 @@ termination.
.SH RETURN VALUE
\fBgetmouse\fR and \fBungetmouse\fR
return the integer \fBERR\fR upon failure or \fBOK\fR
-upon successful completion.
-.RS
+upon successful completion:
+.RS 3
.TP 5
\fBgetmouse\fP
returns an error.
+.bP
If no mouse driver was initialized, or
if the mask parameter is zero,
-it also returns an error if no more events remain in the queue.
+.bP
+It also returns an error if no more events remain in the queue.
.TP 5
\fBungetmouse\fP
returns an error if the FIFO is full.
@@ -239,13 +276,59 @@ on their test result.
These calls were designed for \fBncurses\fR(3X), and are not found in SVr4
curses, 4.4BSD curses, or any other previous version of curses.
.PP
+SVr4 curses had support for the mouse in a variant of \fBxterm\fP.
+It is mentioned in a few places, but with no supporting documentation:
+.bP
+the \*(``libcurses\*('' manual page lists functions for this feature
+which are prototyped in \fBcurses.h\fP:
+.NS
+extern int mouse_set(long int);
+extern int mouse_on(long int);
+extern int mouse_off(long int);
+extern int request_mouse_pos(void);
+extern int map_button(unsigned long);
+extern void wmouse_position(WINDOW *, int *, int *);
+extern unsigned long getmouse(void), getbmap(void);
+.NE
+.bP
+the \*(``terminfo\*('' manual page lists capabilities for the feature
+.NS
+buttons btns BT Number of buttons on the mouse
+get_mouse getm Gm Curses should get button events
+key_mouse kmous Km 0631, Mouse event has occurred
+mouse_info minfo Mi Mouse status information
+req_mouse_pos reqmp RQ Request mouse position report
+.NE
+.bP
+the interface made assumptions (as does ncurses) about the escape sequences
+sent to and received from the terminal.
+.IP
+For instance
+the SVr4 curses library used the \fBget_mouse\fP capability to tell the
+terminal which mouse button events it should send,
+passing the mouse-button bit-mask to the terminal.
+Also, it could ask the terminal
+where the mouse was using the \fBreq_mouse_pos\fP capability.
+.IP
+Those features required a terminal which had been modified to work with curses.
+They were not part of the X Consortium's xterm.
+.PP
+When developing the xterm mouse support for ncurses in September 1995,
+Eric Raymond was uninterested in using the same interface due to its
+lack of documentation.
+Later, in 1998, Mark Hesseling provided support in
+PDCurses 2.3 using the SVr4 interface.
+PDCurses, however, does not use video terminals,
+making it unnecessary to be concerned about compatibility with the
+escape sequences.
+.PP
The feature macro \fBNCURSES_MOUSE_VERSION\fR is provided so the preprocessor
can be used to test whether these features are present.
If the interface is changed, the value of \fBNCURSES_MOUSE_VERSION\fR will be
incremented.
These values for \fBNCURSES_MOUSE_VERSION\fR may be
specified when configuring ncurses:
-.RS
+.RS 3
.TP 3
1
has definitions for reserved events.
@@ -263,13 +346,15 @@ Additional fields may be added to the structure in the future.
Under \fBncurses\fR(3X), these calls are implemented using either
xterm's built-in mouse-tracking API or
platform-specific drivers including
-.RS
+.RS 3
+.bP
Alessandro Rubini's gpm server
-.br
+.bP
FreeBSD sysmouse
-.br
+.bP
OS/2 EMX
.RE
+.PP
If you are using an unsupported configuration,
mouse events will not be visible to
\fBncurses\fR(3X) (and the \fBmousemask\fR function will always
@@ -280,13 +365,27 @@ this is used in the xterm mouse driver to control the
way the terminal is initialized for mouse operation.
The default, if \fBXM\fR is not found,
corresponds to private mode 1000 of xterm:
-.RS
+.PP
+.RS 3
\\E[?1000%?%p1%{1}%=%th%el%;
.RE
-The z member in the event structure is not presently used.
+.PP
+The mouse driver also recognizes a newer xterm private mode 1006, e.g.,
+.PP
+.RS 3
+\\E[?1006;1000%?%p1%{1}%=%th%el%;
+.RE
+.PP
+The \fIz\fP 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.
+.PP
+The \fBALL_MOUSE_EVENTS\fP class does not include \fBREPORT_MOUSE_POSITION\fP.
+They are distinct.
+For example, in xterm,
+wheel/scrolling mice send position reports as a sequence of
+presses of buttons 4 or 5 without matching button-releases.
.SH BUGS
Mouse events under xterm will not in fact be ignored during cooked mode,
if they have been enabled by \fBmousemask\fR.
@@ -295,7 +394,7 @@ report sequence will appear in the string read.
.PP
Mouse events under xterm will not be detected correctly in a window with
its keypad bit off, since they are interpreted as a variety of function key.
-Your terminfo description should have \fBkmous\fR set to "\\E[M"
+Your terminfo description should have \fBkmous\fR set to \*(``\\E[M\*(''
(the beginning of the response from xterm for mouse clicks).
Other values for \fBkmous\fR are permitted,
but under the same assumption,
@@ -303,9 +402,13 @@ i.e., it is the beginning of the response.
.PP
Because there are no standard terminal responses that would serve to identify
terminals which support the xterm mouse protocol, \fBncurses\fR assumes that
-if your $TERM environment variable contains "xterm",
-or \fBkmous\fR is defined in
-the terminal description, then the terminal may send mouse events.
+if \fBkmous\fR is defined in the terminal description,
+or if the terminal description's primary name or aliases
+contain the string \*(``xterm\*('',
+then the terminal may send mouse events.
+The \fBkmous\fP capability is checked first,
+allowing the use of newer xterm mouse protocols
+such as xterm's private mode 1006.
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_kernel\fR(3X),
diff --git a/man/curs_move.3x b/man/curs_move.3x
index 226595cca6d7..02e733eb8e2b 100644
--- a/man/curs_move.3x
+++ b/man/curs_move.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2018 Free 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_move.3x,v 1.14 2010/12/04 18:40:45 tom Exp $
+.\" $Id: curs_move.3x,v 1.17 2018/07/28 21:34:56 tom Exp $
.TH curs_move 3X ""
.na
.hy 0
@@ -44,11 +44,13 @@
.br
.SH DESCRIPTION
These routines move the cursor associated with the window to line \fIy\fR and
-column \fIx\fR. This routine does not move the physical cursor of the terminal
-until \fBrefresh\fR is called. The position specified is relative to the upper
+column \fIx\fR.
+This routine does not move the physical cursor of the terminal
+until \fBrefresh\fR(3X) is called.
+The position specified is relative to the upper
left-hand corner of the window, which is (0,0).
.SH RETURN VALUE
-These routines return \fBERR\fR upon failure and OK (SVr4
+These routines return \fBERR\fR upon failure and \fBOK\fP (SVr4
specifies only "an integer value other than \fBERR\fR") upon successful
completion.
.PP
diff --git a/man/curs_opaque.3x b/man/curs_opaque.3x
index 8c315ddda432..1596bfff4405 100644
--- a/man/curs_opaque.3x
+++ b/man/curs_opaque.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2007-2010,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 2007-2014,2015 Free 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_opaque.3x,v 1.10 2013/07/20 19:42:29 tom Exp $
+.\" $Id: curs_opaque.3x,v 1.13 2015/12/05 20:05:45 tom Exp $
.TH curs_opaque 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
@@ -46,7 +46,10 @@
\fBis_pad\fR,
\fBis_scrollok\fR,
\fBis_subwin\fR,
-\fBis_syncok\fR \- \fBcurses\fR window properties
+\fBis_syncok\fR,
+\fBwgetdelay\fR,
+\fBwgetparent\fR,
+\fBwgetscrreg\fR \- \fBcurses\fR window properties
.ad
.hy
.SH SYNOPSIS
@@ -78,6 +81,8 @@
.br
\fBWINDOW * wgetparent(const WINDOW *win);\fR
.br
+\fBint wgetdelay(const WINDOW *win);\fR
+.br
\fBint wgetscrreg(const WINDOW *win, int *top, int *bottom);\fR
.br
.SH DESCRIPTION
@@ -110,19 +115,22 @@ returns the value set in \fBnodelay\fR
returns the value set in \fBnotimeout\fR
.TP 5
\fBis_pad\fR
-returns TRUE if the window is a pad
+returns \fBTRUE\fP if the window is a pad
i.e., created by \fBnewpad\fP
.TP 5
\fBis_scrollok\fR
returns the value set in \fBscrollok\fR
.TP 5
\fBis_subwin\fR
-returns TRUE if the window is a subwindow,
+returns \fBTRUE\fP if the window is a subwindow,
i.e., created by \fBsubwin\fP or \fBderwin\fP
.TP 5
\fBis_syncok\fR
returns the value set in \fBsyncok\fR
.TP 5
+\fBwgetdelay\fR
+returns the delay timeout as set in \fBwtimeout\fP.
+.TP 5
\fBwgetparent\fR
returns the parent WINDOW pointer for subwindows,
or NULL for windows having no parent.
@@ -131,7 +139,7 @@ or NULL for windows having no parent.
returns the top and bottom rows for the scrolling margin
as set in \fBwsetscrreg\fP.
.SH RETURN VALUE
-These functions all return TRUE or FALSE, except as noted.
+These functions all return \fBTRUE\fP or \fBFALSE\fP, except as noted.
.SH NOTES
Both a macro and a function are provided for each name.
.SH PORTABILITY
diff --git a/man/curs_outopts.3x b/man/curs_outopts.3x
index 52c04cddcf03..828076c22fa4 100644
--- a/man/curs_outopts.3x
+++ b/man/curs_outopts.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2018 Free 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_outopts.3x,v 1.25 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_outopts.3x,v 1.29 2018/07/28 22:59:02 tom Exp $
.TH curs_outopts 3X ""
.na
.hy 0
@@ -46,21 +46,21 @@
.SH SYNOPSIS
\fB#include <curses.h>\fR
.sp
-\fBint clearok(WINDOW *win, bool bf);\fR
+\fBint clearok(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR
.br
-\fBint idlok(WINDOW *win, bool bf);\fR
+\fBint idlok(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR
.br
-\fBvoid idcok(WINDOW *win, bool bf);\fR
+\fBvoid idcok(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR
.br
-\fBvoid immedok(WINDOW *win, bool bf);\fR
+\fBvoid immedok(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR
.br
-\fBint leaveok(WINDOW *win, bool bf);\fR
+\fBint leaveok(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR
.br
-\fBint setscrreg(int top, int bot);\fR
+\fBint setscrreg(int \fP\fItop\fP\fB, int \fP\fIbot\fP\fB);\fR
.br
-\fBint wsetscrreg(WINDOW *win, int top, int bot);\fR
+\fBint wsetscrreg(WINDOW *\fP\fIwin\fP\fB, int \fP\fItop\fP\fB, int \fP\fIbot\fP\fB);\fR
.br
-\fBint scrollok(WINDOW *win, bool bf);\fR
+\fBint scrollok(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR
.br
\fBint nl(void);\fR
.br
@@ -70,7 +70,8 @@
These routines set options that change the style of output within
\fBcurses\fR.
All options are initially \fBFALSE\fR, unless otherwise stated.
-It is not necessary to turn these options off before calling \fBendwin\fR.
+It is not necessary to turn these options off before calling \fBendwin\fR(3X).
+.SS clearok
.PP
If \fBclearok\fR is called with \fBTRUE\fR as argument, the next
call to \fBwrefresh\fR with this window will clear the screen completely and
@@ -81,6 +82,7 @@ If
the \fIwin\fR argument to \fBclearok\fR is the global variable \fBcurscr\fR,
the next call to \fBwrefresh\fR with any window causes the screen to be cleared
and repainted from scratch.
+.SS idlok
.PP
If \fBidlok\fR is called with \fBTRUE\fR as second argument, \fBcurses\fR
considers using the hardware insert/delete line feature of terminals so
@@ -94,6 +96,7 @@ disabled by default because insert/delete line tends to be visually annoying
when used in applications where it is not really needed.
If insert/delete line
cannot be used, \fBcurses\fR redraws the changed portions of all lines.
+.SS idcok
.PP
If \fBidcok\fR is called with \fBFALSE\fR as second argument, \fBcurses\fR
no longer considers using the hardware insert/delete character feature of
@@ -101,6 +104,7 @@ terminals so equipped.
Use of character insert/delete is enabled by default.
Calling \fBidcok\fR with \fBTRUE\fR as second argument re-enables use
of character insertion and deletion.
+.SS immedok
.PP
If \fBimmedok\fR is called with \fBTRUE as argument\fR, any change
in the window image, such as the ones caused by \fBwaddch, wclrtobot, wscrl\fR,
@@ -108,6 +112,7 @@ etc., automatically cause a call to \fBwrefresh\fR.
However, it may
degrade performance considerably, due to repeated calls to \fBwrefresh\fR.
It is disabled by default.
+.SS leaveok
.PP
Normally, the hardware cursor is left at the location of the window cursor
being refreshed.
@@ -115,6 +120,7 @@ The \fBleaveok\fR option allows the cursor to be left
wherever the update happens to leave it.
It is useful for applications where
the cursor is not used, since it reduces the need for cursor motions.
+.SS setscrreg
.PP
The \fBsetscrreg\fR and \fBwsetscrreg\fR routines allow the application
programmer to set a software scrolling region in a window.
@@ -133,6 +139,7 @@ terminal, like that in the VT100.
If \fBidlok\fR is enabled and the terminal
has either a scrolling region or insert/delete line capability, they will
probably be used by the output routines.)
+.SS scrollok
.PP
The \fBscrollok\fR 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
@@ -143,12 +150,13 @@ line.
If enabled, (\fIbf\fR is \fBTRUE\fR), the window is scrolled up one line
(Note that to get the physical scrolling effect on the terminal, it is
also necessary to call \fBidlok\fR).
+.SS nl, nonl
.PP
The \fBnl\fR and \fBnonl\fR routines control whether the underlying display
device translates the return key into newline on input, and whether it
translates newline into return and line-feed on output (in either case, the
call \fBaddch('\\n')\fR does the equivalent of return and line feed on the
-virtual screen).
+\fIvirtual screen\fP).
Initially, these translations do occur.
If you disable them
using \fBnonl\fR, \fBcurses\fR will be able to make better use of the line-feed
@@ -161,7 +169,7 @@ and \fBERR\fR upon failure.
All other routines that return an integer always
return \fBOK\fR.
.PP
-X/Open does not define any error conditions.
+X/Open Curses does not define any error conditions.
.PP
In this implementation, those functions that have a window pointer
will return an error if the window pointer is null.
@@ -181,8 +189,8 @@ if the window pointer is null.
.SH PORTABILITY
These functions are described in the XSI Curses standard, Issue 4.
.PP
-The XSI Curses standard is ambiguous on the question of whether \fBraw\fR()
-should disable the CRLF translations controlled by \fBnl\fR() and \fBnonl\fR().
+The XSI Curses standard is ambiguous on the question of whether \fBraw\fR
+should disable the CRLF translations controlled by \fBnl\fR and \fBnonl\fR.
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
@@ -213,6 +221,7 @@ Note that \fBclearok\fR, \fBleaveok\fR, \fBscrollok\fR, \fBidcok\fR, \fBnl\fR,
The \fBimmedok\fR routine is useful for windows that are used as terminal
emulators.
.SH SEE ALSO
+.na
\fBcurses\fR(3X),
\fBcurs_addch\fR(3X),
\fBcurs_clear\fR(3X),
diff --git a/man/curs_overlay.3x b/man/curs_overlay.3x
index 972a95774b14..e3ed63f89f26 100644
--- a/man/curs_overlay.3x
+++ b/man/curs_overlay.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2013,2015 Free 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_overlay.3x,v 1.17 2013/04/06 23:48:51 tom Exp $
+.\" $Id: curs_overlay.3x,v 1.18 2015/07/21 00:51:31 tom Exp $
.TH curs_overlay 3X ""
.na
.hy 0
@@ -39,20 +39,22 @@
.SH SYNOPSIS
\fB#include <curses.h>\fR
.sp
-\fBint overlay(const WINDOW *srcwin, WINDOW *dstwin);\fR
+\fBint overlay(const WINDOW *\fP\fIsrcwin\fP\fB, WINDOW *\fP\fIdstwin\fP\fB);\fR
.br
-\fBint overwrite(const WINDOW *srcwin, WINDOW *dstwin);\fR
+\fBint overwrite(const WINDOW *\fP\fIsrcwin\fP\fB, WINDOW *\fP\fIdstwin\fP\fB);\fR
.br
-\fBint copywin(const WINDOW *srcwin, WINDOW *dstwin, int sminrow,\fR
- \fBint smincol, int dminrow, int dmincol, int dmaxrow,\fR
- \fBint dmaxcol, int overlay);\fR
+\fBint copywin(const WINDOW *\fP\fIsrcwin\fP\fB, WINDOW *\fP\fIdstwin\fP\fB, int \fP\fIsminrow\fP\fB,\fR
+ \fBint \fP\fIsmincol\fP\fB, int \fP\fIdminrow\fP\fB, int \fP\fIdmincol\fP\fB, int \fP\fIdmaxrow\fP\fB,\fR
+ \fBint \fP\fIdmaxcol\fP\fB, int \fP\fIoverlay\fP\fB);\fR
.SH DESCRIPTION
+.SS overlay, overwrite
The \fBoverlay\fR and \fBoverwrite\fR routines overlay \fIsrcwin\fR on
top of \fIdstwin\fR.
\fIscrwin\fR and \fIdstwin\fR are not required
to be the same size; only text where the two windows overlap is copied.
The difference is that \fBoverlay\fR is non-destructive
(blanks are not copied) whereas \fBoverwrite\fR is destructive.
+.SS copywin
.PP
The \fBcopywin\fR routine provides a finer granularity of control over the
\fBoverlay\fR and \fBoverwrite\fR routines.
diff --git a/man/curs_pad.3x b/man/curs_pad.3x
index 6ce640b7f691..64cf0081f9c5 100644
--- a/man/curs_pad.3x
+++ b/man/curs_pad.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2018 Free 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,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_pad.3x,v 1.17 2010/12/04 18:41:07 tom Exp $
+.\" $Id: curs_pad.3x,v 1.25 2018/07/28 22:20:54 tom Exp $
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.TH curs_pad 3X ""
.na
.hy 0
@@ -42,21 +46,22 @@
.SH SYNOPSIS
\fB#include <curses.h>\fR
.sp
-\fBWINDOW *newpad(int nlines, int ncols);\fR
+\fBWINDOW *newpad(int \fP\fInlines\fP\fB, int \fP\fIncols\fP\fB);\fR
.br
-\fBWINDOW *subpad(WINDOW *orig, int nlines, int ncols,\fR
- \fBint begin_y, int begin_x);\fR
+\fBWINDOW *subpad(WINDOW *\fP\fIorig\fP\fB, int \fP\fInlines\fP\fB, int \fP\fIncols\fP\fB,\fR
+ \fBint \fP\fIbegin_y\fP\fB, int \fP\fIbegin_x\fP\fB);\fR
.br
-\fBint prefresh(WINDOW *pad, int pminrow, int pmincol,\fR
- \fBint sminrow, int smincol, int smaxrow, int smaxcol);\fR
+\fBint prefresh(WINDOW *\fP\fIpad\fP\fB, int \fP\fIpminrow\fP\fB, int \fP\fIpmincol\fP\fB,\fR
+ \fBint \fP\fIsminrow\fP\fB, int \fP\fIsmincol\fP\fB, int \fP\fIsmaxrow\fP\fB, int \fP\fIsmaxcol\fP\fB);\fR
.br
-\fBint pnoutrefresh(WINDOW *pad, int pminrow, int pmincol,\fR
- \fBint sminrow, int smincol, int smaxrow, int smaxcol);\fR
+\fBint pnoutrefresh(WINDOW *\fP\fIpad\fP\fB, int \fP\fIpminrow\fP\fB, int \fP\fIpmincol\fP\fB,\fR
+ \fBint \fP\fIsminrow\fP\fB, int \fP\fIsmincol\fP\fB, int \fP\fIsmaxrow\fP\fB, int \fP\fIsmaxcol\fP\fB);\fR
.br
-\fBint pechochar(WINDOW *pad, chtype ch);\fR
+\fBint pechochar(WINDOW *\fP\fIpad\fP\fB, chtype \fP\fIch\fP\fB);\fR
.br
-\fBint pecho_wchar(WINDOW *pad, const cchar_t *wch);\fR
+\fBint pecho_wchar(WINDOW *\fP\fIpad\fP\fB, const cchar_t *\fP\fIwch\fP\fB);\fR
.SH DESCRIPTION
+.SS newpad
The \fBnewpad\fR routine creates and returns a pointer to a new pad data
structure with the given number of lines, \fInlines\fR, and columns,
\fIncols\fR.
@@ -67,12 +72,14 @@ 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
(e.g., from scrolling or echoing of input) do not occur.
+.PP
It is not
legal to call \fBwrefresh\fR with a \fIpad\fR as an argument; the routines
\fBprefresh\fR or \fBpnoutrefresh\fR 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.
+.SS subpad
.PP
The \fBsubpad\fR routine creates and returns a pointer to a subwindow within a
pad with the given number of lines, \fInlines\fR, and columns, \fIncols\fR.
@@ -84,18 +91,22 @@ affect both windows.
During the use of this routine, it will often be
necessary to call \fBtouchwin\fR or \fBtouchline\fR on \fIorig\fR before
calling \fBprefresh\fR.
+.SS prefresh, pnoutrefresh
.PP
The \fBprefresh\fR and \fBpnoutrefresh\fR routines are analogous to
\fBwrefresh\fR and \fBwnoutrefresh\fR 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.
+.bP
The \fIpminrow\fR and \fIpmincol\fR parameters specify the upper
left-hand corner of the rectangle to be displayed in the pad.
+.bP
The \fIsminrow\fR,
\fIsmincol\fR, \fIsmaxrow\fR, and \fIsmaxcol\fR
parameters specify the edges of the
rectangle to be displayed on the screen.
+.PP
The lower right-hand corner of the
rectangle to be displayed in the pad is calculated from the screen coordinates,
since the rectangles must be the same size.
@@ -104,9 +115,11 @@ contained within their respective structures.
Negative values of
\fIpminrow\fR, \fIpmincol\fR, \fIsminrow\fR, or \fIsmincol\fR are treated as if
they were zero.
+.SS pechochar
.PP
The \fBpechochar\fR routine is functionally equivalent to a call to \fBaddch\fR
-followed by a call to \fBrefresh\fR, a call to \fBwaddch\fR followed by a call
+followed by a call to \fBrefresh\fR(3X),
+a call to \fBwaddch\fR followed by a call
to \fBwrefresh\fR, or a call to \fBwaddch\fR followed by a call to
\fBprefresh\fR.
The knowledge that only a single character is being output is
@@ -115,6 +128,7 @@ performance gain might be seen by using these routines instead of their
equivalents.
In the case of \fBpechochar\fR, the last location of the pad on
the screen is reused for the arguments to \fBprefresh\fR.
+.SS pecho_wchar
.PP
The \fBpecho_wchar\fR function is the analogous wide-character
form of \fBpechochar\fR.
@@ -130,7 +144,7 @@ to \fBENOMEM\fR.
.PP
X/Open does not define any error conditions.
In this implementation
-.RS
+.RS 3
.TP 5
\fBprefresh\fP and \fBpnoutrefresh\fP
return an error
@@ -152,6 +166,76 @@ to \fBwecho_wchar\fP returns an error.
.SH NOTES
Note that \fBpechochar\fR may be a macro.
.SH PORTABILITY
-The XSI Curses standard, Issue 4 describes these functions.
+BSD curses has no \fIpad\fP feature.
+.PP
+SVr2 curses (1986) provided the \fBnewpad\fP and related functions,
+documenting them in a single line each.
+SVr3 (1987) provided more extensive documentation.
+.PP
+The documentation does not explain the term \fIpad\fP.
+However, the Apollo \fIAegis\fP workstation operating system
+supported a graphical \fIpad\fP feature:
+.bP
+These graphical pads could be much larger than the computer's display.
+.bP
+The read-only output from a command could be scrolled back to inspect,
+and select text from the pad.
+.PP
+The two uses may be related.
+.PP
+The XSI Curses standard, Issue 4 describes these functions,
+without significant change from the SVr3 documentation.
+It describes no error conditions.
+The behavior of \fBsubpad\fP if the parent window is not
+a pad is undocumented,
+and is not checked by the vendor Unix implementations:
+.bP
+SVr4 curses sets a flag in the \fBWINDOW\fP structure in \fBnewpad\fP
+which tells if the window is a \fIpad\fP.
+.IP
+However, it uses this information only in
+\fBwaddch\fP (to decide if it should call \fBwrefresh\fP) and
+\fBwscrl\fP (to avoid scrolling a pad),
+and does not check in \fBwrefresh\fP to ensure that the pad
+is refreshed properly.
+.bP
+Solaris X/Open Curses checks if a window is a pad in \fBwnoutrefresh\fP,
+returning \fBERR\fP in that case.
+.IP
+However, it only sets the flag for subwindows if the parent window is a pad.
+Its \fBnewpad\fP function does not set this information.
+Consequently, the check will never fail.
+.IP
+It makes no comparable check in \fBpnoutrefresh\fP,
+though interestingly enough, a comment in the source code
+states that the lack of a check was an MKS extension.
+.bP
+NetBSD 7 curses
+sets a flag in the \fBWINDOW\fP structure for \fBnewpad\fP and \fBsubpad\fP,
+using this to help with the distinction between \fBwnoutrefresh\fP
+and \fBpnoutrefresh\fP.
+.IP
+It does not check for the case where a subwindow is created in
+a pad using \fBsubwin\fP or \fBderwin\fP.
+.IP
+The \fBdupwin\fP function returns a regular window when duplicating a pad.
+Likewise, \fBgetwin\fP always returns a window, even if the saved
+data was from a pad.
+.PP
+This implementation
+.bP
+sets a flag in the \fBWINDOW\fP structure for \fBnewpad\fP and \fBsubpad\fP,
+.bP
+allows a \fBsubwin\fP or \fBderwin\fP call to succeed having a pad parent by
+forcing the subwindow to be a pad,
+.bP
+checks in both \fBwnoutrefresh\fP and \fBpnoutrefresh\fP to ensure
+that pads and windows are handled distinctly, and
+.bP
+ensures that \fBdupwin\fP and \fBgetwin\fP treat
+pads versus windows consistently.
.SH SEE ALSO
-\fBcurses\fR(3X), \fBcurs_refresh\fR(3X), \fBcurs_touch\fR(3X), \fBcurs_addch\fR(3X).
+\fBcurses\fR(3X),
+\fBcurs_refresh\fR(3X),
+\fBcurs_touch\fR(3X),
+\fBcurs_addch\fR(3X).
diff --git a/man/curs_print.3x b/man/curs_print.3x
index 31a453565059..ba793ec3319a 100644
--- a/man/curs_print.3x
+++ b/man/curs_print.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2018 Free 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_print.3x,v 1.10 2010/12/04 18:40:45 tom Exp $
+.\" $Id: curs_print.3x,v 1.13 2018/07/28 21:34:56 tom Exp $
.TH curs_print 3X ""
.SH NAME
\fBmcprint\fR \- ship binary data to printer
@@ -39,16 +39,19 @@ This function uses the \fBmc5p\fR or \fBmc4\fR and \fBmc5\fR capabilities,
if they are present, to ship given data to a printer attached to the terminal.
.PP
Note that the \fBmcprint\fR code has no way to do flow control with the printer
-or to know how much buffering it has. Your application is responsible for
+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
-(typically about half of its nominal cps rating). Dot-matrix printers and
+(typically about half of its nominal cps rating).
+Dot-matrix printers and
6-page-per-minute lasers can typically handle 80cps, so a good conservative
rule of thumb is to sleep for a second after shipping each 80-character line.
.
.SH RETURN VALUE
The \fBmcprint\fR function returns \fBERR\fR if the write operation aborted
-for some reason. In this case, errno will contain either an error associated
-with \fBwrite(2)\fR or one of the following:
+for some reason.
+In this case, errno will contain either an error associated
+with \fBwrite\fP(2) or one of the following:
.TP 5
ENODEV
Capabilities for printer redirection do not exist.
@@ -65,4 +68,4 @@ in SVr4 curses, 4.4BSD curses, or any other previous version of curses.
Padding in the \fBmc5p\fR, \fBmc4\fR and \fBmc5\fR capabilities will not be
interpreted.
.SH SEE ALSO
-\fBcurses\fR(3X)\fR
+\fBcurses\fR(3X)
diff --git a/man/curs_printw.3x b/man/curs_printw.3x
index 9918f9df9a71..bd5ad9a16059 100644
--- a/man/curs_printw.3x
+++ b/man/curs_printw.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +26,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_printw.3x,v 1.20 2010/12/04 18:40:45 tom Exp $
+.\" $Id: curs_printw.3x,v 1.24 2019/11/30 21:06:30 tom Exp $
.TH curs_printw 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.na
.hy 0
.SH NAME
@@ -49,13 +57,15 @@
.br
\fBint mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...);\fR
.br
-\fBint vwprintw(WINDOW *win, const char *fmt, va_list varglist);\fR
-.br
\fBint vw_printw(WINDOW *win, const char *fmt, va_list varglist);\fR
+.sp
+/* obsolete */
.br
+\fBint vwprintw(WINDOW *win, const char *fmt, va_list varglist);\fR
.SH DESCRIPTION
The \fBprintw\fR, \fBwprintw\fR, \fBmvprintw\fR and \fBmvwprintw\fR
-routines are analogous to \fBprintf\fR [see \fBprintf\fR(3)]. In
+routines are analogous to \fBprintf\fR [see \fBprintf\fR(3)].
+In
effect, the string that would be output by \fBprintf\fR is output
instead as though \fBwaddstr\fR were used on the given window.
.PP
@@ -75,18 +85,33 @@ an error may be returned if it cannot allocate enough memory for the
buffer used to format the results.
It will return an error if the window pointer is null.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH PORTABILITY
-The XSI Curses standard, Issue 4 describes these functions. The function
+In this implementation, \fBvw_printw\fP and \fBvwprintw\fP are equivalent,
+to support legacy applications.
+However, the latter (\fBvwprintw\fP) is obsolete:
+.bP
+The XSI Curses standard, Issue 4 described these functions.
+The function
\fBvwprintw\fR is marked TO BE WITHDRAWN, and is to be replaced by a function
\fBvw_printw\fR using the \fB<stdarg.h>\fR interface.
+.bP
The Single Unix Specification, Version 2 states that
\fBvw_printw\fR is preferred to \fBvwprintw\fR since the latter requires
including \fB<varargs.h>\fR, which
cannot be used in the same file as \fB<stdarg.h>\fR.
-This implementation uses \fB<stdarg.h>\fR for both, because that header
-is included in \fB<curses.h\fR>.
+This implementation uses \fB<stdarg.h>\fR for both,
+because that header is included in \fB<curses.h\fR>.
+.bP
+X/Open Curses, Issue 5 (December 2007) marked \fBvwprintw\fP (along with
+\fBvwscanw\fP and the termcap interface) as withdrawn.
.SH SEE ALSO
-\fBcurses\fR(3X), \fBprintf\fR(3), \fBvprintf(3)\fR
+.na
+\fBcurses\fR(3X),
+\fBcurs_addstr\fR(3X),
+\fBcurs_scanw\fR(3X),
+\fBcurs_termcap\fP(3X),
+\fBprintf\fR(3),
+\fBvprintf\fR(3).
diff --git a/man/curs_refresh.3x b/man/curs_refresh.3x
index e1552c37cb48..038206f38561 100644
--- a/man/curs_refresh.3x
+++ b/man/curs_refresh.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +26,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_refresh.3x,v 1.15 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_refresh.3x,v 1.20 2019/11/30 21:06:30 tom Exp $
.TH curs_refresh 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.na
.hy 0
.SH NAME
@@ -55,29 +63,39 @@
\fBint wredrawln(WINDOW *win, int beg_line, int num_lines);\fR
.br
.SH DESCRIPTION
+.SS refresh/wrefresh
The \fBrefresh\fR and \fBwrefresh\fR routines (or \fBwnoutrefresh\fR and
-\fBdoupdate\fR) must be called to get actual output to the terminal, as other
-routines merely manipulate data structures.
+\fBdoupdate\fR) must be called to get actual output to the terminal,
+as other routines merely manipulate data structures.
The routine \fBwrefresh\fR copies
-the named window to the physical terminal screen, taking into account what is
-already there to do optimizations.
+the named window to the \fIphysical screen\fP,
+taking into account what is already there to do optimizations.
The \fBrefresh\fR routine is the
same, using \fBstdscr\fR as the default window.
Unless \fBleaveok\fR has been
enabled, the physical cursor of the terminal is left at the location of the
cursor for that window.
+.SS wnoutrefresh/doupdate
.PP
The \fBwnoutrefresh\fR and \fBdoupdate\fR routines allow multiple updates with
more efficiency than \fBwrefresh\fR alone.
In addition to all the window
structures, \fBcurses\fR keeps two data structures representing the terminal
-screen: a physical screen, describing what is actually on the screen, and a
-virtual screen, describing what the programmer wants to have on the screen.
+screen:
+.bP
+a \fIphysical screen\fP, describing what is actually on the screen, and
+.bP
+a \fIvirtual screen\fP, describing what the programmer wants to have on the screen.
+.PP
+The routine \fBwrefresh\fR works by
+.bP
+first calling \fBwnoutrefresh\fR,
+which copies the named window to the \fIvirtual screen\fP, and
+.bP
+then calling \fBdoupdate\fR, which compares
+the \fIvirtual screen\fP to the \fIphysical screen\fP
+and does the actual update.
.PP
-The routine \fBwrefresh\fR works by first calling \fBwnoutrefresh\fR, which
-copies the named window to the virtual screen, and then calling \fBdoupdate\fR,
-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 \fBwrefresh\fR results in alternating calls to \fBwnoutrefresh\fR
and \fBdoupdate\fR, causing several bursts of output to the screen.
@@ -85,11 +103,14 @@ By first
calling \fBwnoutrefresh\fR for each window, it is then possible to call
\fBdoupdate\fR once, resulting in only one burst of output, with fewer total
characters transmitted and less CPU time used.
+.PP
If the \fIwin\fR argument to
-\fBwrefresh\fR is the global variable \fBcurscr\fR, the screen is immediately
-cleared and repainted from scratch.
+\fBwrefresh\fR is the \fIphysical screen\fP
+(i.e., the global variable \fBcurscr\fR),
+the screen is immediately cleared and repainted from scratch.
.PP
-The phrase "copies the named window to the virtual screen" above is ambiguous.
+The phrase \*(``copies the named window
+to the virtual screen\*('' above is ambiguous.
What actually happens is that all \fItouched\fR (changed) lines in the window
are copied to the virtual screen.
This affects programs that use overlapping
@@ -98,11 +119,12 @@ order and the overlap region will be modified only when it is explicitly
changed.
(But see the section on \fBPORTABILITY\fR below for a warning about
exploiting this behavior.)
+.SS wredrawln/redrawwin
.PP
The \fBwredrawln\fR routine indicates to \fBcurses\fR that some screen lines
are corrupted and should be thrown away before anything is written over them.
It touches the indicated lines (marking them changed).
-The routine \fBredrawwin\fR() touches the entire window.
+The routine \fBredrawwin\fR touches the entire window.
.SH RETURN VALUE
Routines that return an integer return \fBERR\fR upon failure, and \fBOK\fR
(SVr4 only specifies "an integer value other than \fBERR\fR") upon successful
@@ -110,7 +132,7 @@ completion.
.PP
X/Open does not define any error conditions.
In this implementation
-.RS
+.RS 3
.TP 5
\fBwnoutrefresh\fP
returns an error
@@ -126,14 +148,14 @@ Note that \fBrefresh\fR and \fBredrawwin\fR may be macros.
.SH PORTABILITY
The XSI Curses standard, Issue 4 describes these functions.
.PP
-Whether \fBwnoutrefresh()\fR copies to the virtual screen the entire contents
+Whether \fBwnoutrefresh\fR 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 \fBtouchwin()\fR before the
-\fBwnoutrefresh()\fR call to guarantee an entire-contents copy anywhere.
+Instead, you can do an explicit \fBtouchwin\fR before the
+\fBwnoutrefresh\fR call to guarantee an entire-contents copy anywhere.
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_outopts\fR(3X)
diff --git a/man/curs_scanw.3x b/man/curs_scanw.3x
index a3208f5627c8..ccbe8af32bbb 100644
--- a/man/curs_scanw.3x
+++ b/man/curs_scanw.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +26,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_scanw.3x,v 1.17 2010/12/04 18:40:45 tom Exp $
+.\" $Id: curs_scanw.3x,v 1.25 2019/11/30 21:06:30 tom Exp $
.TH curs_scanw 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.SH NAME
\fBscanw\fR,
\fBwscanw\fR,
@@ -37,25 +45,29 @@
.SH SYNOPSIS
\fB#include <curses.h>\fR
.sp
-\fBint scanw(char *fmt, ...);\fR
+\fBint scanw(const char *fmt, ...);\fR
.br
-\fBint wscanw(WINDOW *win, char *fmt, ...);\fR
+\fBint wscanw(WINDOW *win, const char *fmt, ...);\fR
.br
-\fBint mvscanw(int y, int x, char *fmt, ...);\fR
+\fBint mvscanw(int y, int x, const char *fmt, ...);\fR
.br
-\fBint mvwscanw(WINDOW *win, int y, int x, char *fmt, ...);\fR
+\fBint mvwscanw(WINDOW *win, int y, int x, const char *fmt, ...);\fR
.br
-\fBint vw_scanw(WINDOW *win, char *fmt, va_list varglist);\fR
+\fBint vw_scanw(WINDOW *win, const char *fmt, va_list varglist);\fR
+.sp
+/* obsolete */
.br
-\fBint vwscanw(WINDOW *win, char *fmt, va_list varglist);\fR
+\fBint vwscanw(WINDOW *win, const char *fmt, va_list varglist);\fR
.SH DESCRIPTION
The \fBscanw\fR, \fBwscanw\fR and \fBmvscanw\fR routines are analogous to
-\fBscanf\fR [see \fBscanf\fR(3)]. The effect of these routines is as though
+\fBscanf\fR [see \fBscanf\fR(3)].
+The effect of these routines is as though
\fBwgetstr\fR were called on the window, and the resulting line used as input
-for \fBsscanf\fR(3). Fields which do not map to a variable in the \fIfmt\fR
+for \fBsscanf\fR(3).
+Fields which do not map to a variable in the \fIfmt\fR
field are lost.
.PP
-The \fBvwscanw\fR and \fBvw_scanw\fR routines are analogous to \fBvscanf\fR.
+The \fBvwscanw\fR and \fBvw_scanw\fR routines are analogous to \fBvscanf\fR(3).
They perform a \fBwscanw\fR using a variable argument list.
The third argument is a \fIva_list\fR,
a pointer to a list of arguments, as defined in \fB<stdarg.h>\fR.
@@ -67,29 +79,52 @@ Applications may use the return value from the \fBscanw\fR, \fBwscanw\fR,
\fBmvscanw\fR and \fBmvwscanw\fR routines to determine the number of fields
which were mapped in the call.
.PP
-Functions with a "mv" prefix first perform a cursor movement using
+Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH PORTABILITY
-The XSI Curses standard, Issue 4 describes these functions. The function
+In this implementation, \fBvw_scanw\fP and \fBvwscanw\fP are equivalent,
+to support legacy applications.
+However, the latter (\fBvwscanw\fP) is obsolete:
+.bP
+The XSI Curses standard, Issue 4 described these functions,
+noting that the function
\fBvwscanw\fR is marked TO BE WITHDRAWN, and is to be replaced by a function
\fBvw_scanw\fR using the \fB<stdarg.h>\fR interface.
+.bP
The Single Unix Specification, Version 2 states that
\fBvw_scanw\fR is preferred to \fBvwscanw\fR since the latter requires
including \fB<varargs.h>\fR, which
cannot be used in the same file as \fB<stdarg.h>\fR.
This implementation uses \fB<stdarg.h>\fR for both, because that header
is included in \fB<curses.h\fR>.
+.bP
+X/Open Curses, Issue 5 (December 2007) marked \fBvwscanw\fP (along with
+\fBvwprintw\fP and the termcap interface) as withdrawn.
.LP
Both XSI and The Single Unix Specification, Version 2 state that these
-functions return ERR or OK.
-Since the underlying \fBscanf\fR can return the number of items scanned,
+functions return \fBERR\fP or \fBOK\fP.
+.bP
+Since the underlying \fBscanf\fR(3) can return the number of items scanned,
and the SVr4 code was documented to use this feature,
this is probably an editing error which was introduced in XSI,
rather than being done intentionally.
-Portable applications should only test if the return value is ERR,
-since the OK value (zero) is likely to be misleading.
+.bP
+This implementation returns the number of items scanned,
+for compatibility with SVr4 curses.
+As of 2018, NetBSD curses also returns the number of items scanned.
+Both ncurses and NetBSD curses call \fBvsscanf\fP to scan the string,
+which returns \fBEOF\fP on error.
+.bP
+Portable applications should only test if the return value is \fBERR\fP,
+since the \fBOK\fP value (zero) is likely to be misleading.
+.IP
One possible way to get useful results would be to use a "%n" conversion
at the end of the format string to ensure that something was processed.
.SH SEE ALSO
-\fBcurses\fR(3X), \fBcurs_getstr\fR(3X), \fBcurs_printw\fR(3X), \fBscanf\fR(3)
+.na
+\fBcurses\fR(3X),
+\fBcurs_getstr\fR(3X),
+\fBcurs_printw\fR(3X),
+\fBcurs_termcap\fP(3X),
+\fBscanf\fR(3).
diff --git a/man/curs_scr_dump.3x b/man/curs_scr_dump.3x
index df3e79c1ffee..960317541487 100644
--- a/man/curs_scr_dump.3x
+++ b/man/curs_scr_dump.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +26,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_scr_dump.3x,v 1.9 2010/12/04 18:40:45 tom Exp $
+.\" $Id: curs_scr_dump.3x,v 1.14 2019/11/30 21:06:30 tom Exp $
.TH curs_scr_dump 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.na
.hy 0
.SH NAME
@@ -49,24 +57,30 @@
\fBint scr_set(const char *filename);\fR
.br
.SH DESCRIPTION
-The \fBscr_dump\fR routine dumps the current contents of the virtual screen
+The \fBscr_dump\fR routine dumps the current contents
+of the \fIvirtual screen\fP
to the file \fIfilename\fR.
.PP
-The \fBscr_restore\fR routine sets the virtual screen to the contents
-of \fIfilename\fR, which must have been written using \fBscr_dump\fR. The next
-call to \fBdoupdate\fR restores the screen to the way it looked in the dump
-file.
+The \fBscr_restore\fR routine sets the \fIvirtual screen\fP to the contents
+of \fIfilename\fR, which must have been written using \fBscr_dump\fR.
+The next call to \fBdoupdate\fR restores
+the \fIphysical screen\fP to the way it looked in the dump file.
.PP
The \fBscr_init\fR routine reads in the contents of \fIfilename\fR and uses
them to initialize the \fBcurses\fR data structures about what the terminal
-currently has on its screen. If the data is determined to be valid,
+currently has on its screen.
+If the data is determined to be valid,
\fBcurses\fR bases its next update of the screen on this information rather
-than clearing the screen and starting from scratch. \fBscr_init\fR is used
+than clearing the screen and starting from scratch.
+\fBscr_init\fR is used
after \fBinitscr\fR or a \fBsystem\fR call to share
the screen with another process which has done a \fBscr_dump\fR after its
-\fBendwin\fR call. The data is declared invalid if the terminfo capabilities
-\fBrmcup\fR and \fBnrrmc\fR exist; also if the terminal has been written to
-since the preceding \fBscr_dump\fR call.
+\fBendwin\fR(3X) call.
+The data is declared invalid
+.bP
+if the terminfo capabilities \fBrmcup\fR and \fBnrrmc\fR exist, also
+.bP
+if the terminal has been written to since the preceding \fBscr_dump\fR call.
.PP
The \fBscr_set\fR routine is a combination of \fBscr_restore\fR and
\fBscr_init\fR. It tells the program that the information in \fIfilename\fR is
@@ -90,7 +104,11 @@ qualifiers).
.PP
The SVr4 docs merely say under \fBscr_init\fR that the dump data is also
considered invalid "if the time-stamp of the tty is old" but do not define
-"old".
+\*(``old\*(''.
.SH SEE ALSO
-\fBcurses\fR(3X), \fBcurs_initscr\fR(3X), \fBcurs_refresh\fR(3X),
-\fBcurs_util\fR(3X), \fBsystem\fR(3)
+\fBcurses\fR(3X),
+\fBcurs_initscr\fR(3X),
+\fBcurs_refresh\fR(3X),
+\fBcurs_util\fR(3X),
+\fBscr_dump\fR(5),
+\fBsystem\fR(3)
diff --git a/man/curs_scroll.3x b/man/curs_scroll.3x
index 2cb152d865c7..55cfa3fd8eaa 100644
--- a/man/curs_scroll.3x
+++ b/man/curs_scroll.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_scroll.3x,v 1.15 2010/12/04 18:40:45 tom Exp $
+.\" $Id: curs_scroll.3x,v 1.17 2019/11/30 21:06:30 tom Exp $
.TH curs_scroll 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.na
.hy 0
.SH NAME
@@ -50,8 +54,8 @@ The \fBscroll\fR 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.
+region of the window is the entire screen,
+the \fIphysical screen\fP may be scrolled at the same time.
.PP
For positive \fIn\fR, the \fBscrl\fR and \fBwscrl\fR routines scroll the
window up \fIn\fR lines (line \fIi\fR+\fIn\fR becomes \fIi\fR); otherwise
@@ -74,8 +78,8 @@ if scrolling is not enabled in the window, e.g., with \fBscrollok\fP.
Note that \fBscrl\fR and \fBscroll\fR may be macros.
.PP
The SVr4 documentation says that the optimization of physically scrolling
-immediately if the scroll region is the entire screen "is" performed, not
-"may be" performed.
+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, to leave open the possibility of smarter
optimization of multiple scroll actions on the next update.
diff --git a/man/curs_slk.3x b/man/curs_slk.3x
index e8f7afbdbfd9..6d7a2aa37126 100644
--- a/man/curs_slk.3x
+++ b/man/curs_slk.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2020 Free 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,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_slk.3x,v 1.22 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_slk.3x,v 1.35 2020/01/18 22:49:38 tom Exp $
.TH curs_slk 3X ""
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.na
.hy 0
.SH NAME
@@ -47,46 +51,50 @@
\fBslk_attr_set\fR,
\fBslk_attr_off\fR,
\fBslk_attr\fR,
-\fBslk_color\fR \- \fBcurses\fR soft label routines
+\fBslk_color\fR,
+\fBextended_slk_color\fR \- \fBcurses\fR soft label routines
.ad
.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
.sp
-\fBint slk_init(int fmt);\fR
-.br
-\fBint slk_set(int labnum, const char *label, int fmt);\fR
+\fBint slk_init(int \fP\fIfmt\fP\fB);\fR
+.sp
+\fBint slk_set(int \fP\fIlabnum\fP\fB, const char *\fP\fIlabel\fP\fB, int \fP\fIfmt\fP\fB);\fR
.br
+\fBint slk_wset(int \fP\fIlabnum\fP\fB, const wchar_t *\fP\fIlabel\fP\fB, int \fP\fIfmt\fP\fB);\fR
+.sp
+\fBchar *slk_label(int \fP\fIlabnum\fP\fB);\fR
+.sp
\fBint slk_refresh(void);\fR
.br
\fBint slk_noutrefresh(void);\fR
.br
-\fBchar *slk_label(int labnum);\fR
-.br
\fBint slk_clear(void);\fR
.br
\fBint slk_restore(void);\fR
.br
\fBint slk_touch(void);\fR
+.sp
+\fBint slk_attron(const chtype \fP\fIattrs\fP\fB);\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
+\fBint slk_attroff(const chtype \fP\fIattrs\fP\fB);\fR
.br
-\fBint slk_attr_on(attr_t attrs, void* opts);\fR
+\fBint slk_attrset(const chtype \fP\fIattrs\fP\fB);\fR
.br
-\fBint slk_attr_off(const attr_t attrs, void * opts);\fR
+\fBint slk_attr_on(attr_t \fP\fIattrs\fP\fB, void* \fP\fIopts\fP\fB);\fR
.br
-\fBint slk_attr_set(const attr_t attrs, short color_pair, void* opts);\fR
+\fBint slk_attr_off(const attr_t \fP\fIattrs\fP\fB, void * \fP\fIopts\fP\fB);\fR
.br
+\fBint slk_attr_set(const attr_t \fP\fIattrs\fP\fB, short \fP\fIpair\fP\fB, void* \fP\fIopts\fP\fB);\fR
+.sp
\fBattr_t slk_attr(void);\fR
+.sp
+\fBint slk_color(short \fP\fIpair\fP\fB);\fR
.br
-\fBint slk_color(short color_pair);\fR
-.br
-\fBint slk_wset(int labnum, const wchar_t *label, int fmt);\fR
+/* extension */
.br
+\fBint extended_slk_color(int \fP\fIpair\fP\fB);\fR
.SH DESCRIPTION
The slk* functions manipulate the set of soft function-key labels that exist on
many terminals.
@@ -98,18 +106,19 @@ 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 useful for today's PC-like enduser devices.
+This is useful for PC-like enduser devices.
ncurses simulates this mode by taking over up to two lines at
the bottom of the screen;
it does not try to use any hardware support for this
mode.
+.SS Initialization
.PP
The \fBslk_init\fR routine must be called before \fBinitscr\fR or \fBnewterm\fR
is called.
If \fBinitscr\fR eventually uses a line from \fBstdscr\fR to
emulate the soft labels,
then \fIfmt\fR determines how the labels are arranged on the screen:
-.RS
+.RS 3
.TP 3
.B 0
indicates a 3\-2\-3 arrangement of
@@ -126,11 +135,12 @@ 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.
.RE
+.SS Labels
.PP
The \fBslk_set\fR routine
(and the \fBslk_wset\fR routine for the wide-character library)
has three parameters:
-.RS
+.RS 3
.TP 5
.I labnum
is the label number, from \fB1\fR to \fB8\fR
@@ -150,11 +160,12 @@ left-justified, centered, or right-justified, respectively, within the
label.
.RE
.PP
-The \fBslk_refresh\fR and \fBslk_noutrefresh\fR routines correspond to
-the \fBwrefresh\fR and \fBwnoutrefresh\fR routines.
-.PP
The \fBslk_label\fR routine returns the current label for label number
\fIlabnum\fR, with leading and trailing blanks stripped.
+.SS Screen updates
+.PP
+The \fBslk_refresh\fR and \fBslk_noutrefresh\fR routines correspond to
+the \fBwrefresh\fR and \fBwnoutrefresh\fR routines.
.PP
The \fBslk_clear\fR routine clears the soft labels from the screen.
.PP
@@ -163,25 +174,34 @@ after a \fBslk_clear\fR has been performed.
.PP
The \fBslk_touch\fR routine forces all the soft labels to be output
the next time a \fBslk_noutrefresh\fR is performed.
+.SS Video attributes
.PP
-The \fBslk_attron\fR, \fBslk_attrset\fR, \fBslk_attroff\fR and \fBslk_attr\fR
-routines correspond to \fBattron\fR, \fBattrset\fR, \fBattroff\fR and \fBattr_get\fR.
+The
+\fBslk_attron\fR, \fBslk_attrset\fR, \fBslk_attroff\fR and \fBslk_attr\fR
+routines correspond to
+\fBattron\fR, \fBattrset\fR, \fBattroff\fR and \fBattr_get\fR, respectively.
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).
+.SS Colors
.PP
The \fBslk_color\fR routine corresponds to \fBcolor_set\fR.
It has an effect only
if soft labels are simulated on the bottom line of the screen.
+.PP
+Because \fBslk_color\fR accepts only \fBshort\fP (signed 16-bit integer) values,
+this implementation provides
+\fBextended_slk_color\fR which accepts an integer value, e.g., 32-bits.
.
.SH RETURN VALUE
-These routines return \fBERR\fR upon failure and OK (SVr4 specifies only "an
-integer value other than \fBERR\fR") upon successful completion.
+These routines return \fBERR\fR upon failure
+and \fBOK\fP (SVr4 specifies only "an integer value other than \fBERR\fR")
+upon successful completion.
.PP
X/Open defines no error conditions.
In this implementation
-.RS
+.RS 3
.TP 5
\fBslk_attr\fR
returns the attribute used for the soft keys.
@@ -201,8 +221,7 @@ if the terminal or the softkeys were not initialized.
\fBslk_attr_set\fP
returns an error
if the terminal or the softkeys were not initialized, or
-the color pair is outside the range 0..COLOR_PAIRS\-1,
-or opts is not null.
+the color pair is outside the range 0..COLOR_PAIRS\-1.
.TP 5
\fBslk_color\fP
returns an error
@@ -223,17 +242,73 @@ the \fIlabnum\fP parameter is outside the range of label counts, or
if the format parameter is outside the range 0..2, or if
memory for the labels cannot be allocated.
.RE
+.SH HISTORY
+SVr3 introduced these functions:
+ slk_clear
+ slk_init
+ slk_label
+ slk_noutrefresh
+ slk_refresh
+ slk_restore
+ slk_set
+ slk_touch
+.PP
+SVr4 added these functions:
+ slk_attroff
+ slk_attron
+ slk_attrset
+ slk_start
+.PP
+X/Open Curses added these:
+ slk_attr_off
+ slk_attr_on
+ slk_attr_set
+ slk_color
+ slk_wset
+.SH EXTENSIONS
+.PP
+X/Open Curses documents the \fIopts\fP argument as reserved for future use,
+saying that it must be null.
+This implementation
+uses that parameter in ABI 6 for the functions which have a color-pair
+parameter to support extended color pairs.
+.PP
+For functions which modify the color, e.g., \fBslk_attr_set\fP,
+if \fIopts\fP is set it is treated as a pointer to \fBint\fP,
+and used to set the color pair instead of the \fBshort\fP pair parameter.
.SH NOTES
Most applications would use \fBslk_noutrefresh\fR because a
\fBwrefresh\fR is likely to follow soon.
.SH PORTABILITY
-The XSI Curses standard, Issue 4, describes these functions.
-It changes the
-argument type of the attribute-manipulation functions \fBslk_attron\fR,
-\fBslk_attroff\fR, \fBslk_attrset\fR to be \fBattr_t\fR, and adds \fBconst\fR
-qualifiers.
-The format codes \fB2\fR and \fB3\fR for \fBslk_init()\fR and the
+The XSI Curses standard, Issue 4, described the soft-key functions,
+with some differences from SVr4 curses:
+.bP
+It added functions like the SVr4
+attribute-manipulation functions \fBslk_attron\fR,
+\fBslk_attroff\fR, \fBslk_attrset\fR,
+but which use \fBattr_t\fR parameters (rather than \fBchtype\fP),
+along with a reserved \fIopts\fP parameter.
+.IP
+Two of these new functions (unlike the SVr4 functions) have no provision
+for color: \fBslk_attr_on\fP and \fBslk_attr_off\fP.
+.IP
+The third function (\fBslk_attr_set\fP) has a color-pair parameter.
+.bP
+It added \fBconst\fR qualifiers to parameters (unnecessarily), and
+.bP
+It added \fBslk_color\fP.
+.PP
+The format codes \fB2\fR and \fB3\fR for \fBslk_init\fR and the
function \fBslk_attr\fR are specific to ncurses.
+.PP
+X/Open Curses does not specify a limit for the number of colors and
+color pairs which a terminal can support.
+However, in its use of \fBshort\fP for the parameters,
+it carries over SVr4's implementation detail for the compiled
+terminfo database, which uses signed 16-bit numbers.
+This implementation provides extended versions of those functions
+which use \fBshort\fP parameters,
+allowing applications to use larger color- and pair-numbers.
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_attr\fR(3X),
diff --git a/man/curs_sp_funcs.3x b/man/curs_sp_funcs.3x
index c7c55ddb62fe..b369f8001127 100644
--- a/man/curs_sp_funcs.3x
+++ b/man/curs_sp_funcs.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2010,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 2010-2018,2019 Free 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,18 +26,25 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_sp_funcs.3x,v 1.6 2013/06/22 17:53:59 tom Exp $
+.\" $Id: curs_sp_funcs.3x,v 1.17 2019/11/30 21:01:26 tom Exp $
.TH curs_sp_funcs 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.na
.hy 0
.SH NAME
-new_prescr \- \fBcurses\fR screen-pointer extension
+curs_sp_funcs \- \fBcurses\fR screen-pointer extension
.ad
.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
+\fB#include <term.h>\fR
.nf
.sp
+\fBint alloc_pair_sp(SCREEN*, int, int);\fR
+.br
\fBint assume_default_colors_sp(SCREEN*, int, int);\fR
.br
\fBint baudrate_sp(SCREEN*);\fR
@@ -66,9 +73,19 @@ new_prescr \- \fBcurses\fR screen-pointer extension
.br
\fBint endwin_sp(SCREEN*);\fR
.br
-\fBint erasechar_sp(SCREEN*);\fR
+\fBchar erasechar_sp(SCREEN*);\fR
+.br
+\fBint extended_color_content_sp(SCREEN *, int, int *, int *, int *);\fR
+.br
+\fBint extended_pair_content_sp(SCREEN*, int, int *, int *);\fR
+.br
+\fBint extended_slk_color_sp(SCREEN*, int);\fR
+.br
+\fBvoid filter_sp(SCREEN*);\fR
.br
-\fBint filter_sp(SCREEN*);\fR
+\fBint find_pair_sp(SCREEN*, int, int);\fR
+.br
+\fBint free_pair_sp(SCREEN*, int);\fR
.br
\fBint flash_sp(SCREEN*);\fR
.br
@@ -80,7 +97,7 @@ new_prescr \- \fBcurses\fR screen-pointer extension
.br
\fBWINDOW* getwin_sp(SCREEN*, FILE*);\fR
.br
-\fBint halfdelay_sp(SCREEN*);\fR
+\fBint halfdelay_sp(SCREEN*, int);\fR
.br
\fBbool has_colors_sp(SCREEN*);\fR
.br
@@ -94,6 +111,10 @@ new_prescr \- \fBcurses\fR screen-pointer extension
.br
\fBint init_color_sp(SCREEN*, short, short, short, short);\fR
.br
+\fBint init_extended_color_sp(SCREEN*, int, int, int, int);\fR
+.br
+\fBint init_extended_pair_sp(SCREEN*, int, int, int);\fR
+.br
\fBint init_pair_sp(SCREEN*, short, short, short);\fR
.br
\fBint intrflush_sp(SCREEN*, WINDOW*, bool);\fR
@@ -112,6 +133,8 @@ new_prescr \- \fBcurses\fR screen-pointer extension
.br
\fBchar killchar_sp(SCREEN*);\fR
.br
+\fBchar* longname_sp(SCREEN*);\fR
+.br
\fBint mcprint_sp(SCREEN*, char *, int);\fR
.br
\fBint mouseinterval_sp(SCREEN*, int);\fR
@@ -126,7 +149,7 @@ new_prescr \- \fBcurses\fR screen-pointer extension
.br
\fBSCREEN* new_prescr(void);\fR
.br
-\fBSCREEN* newterm_sp(SCREEN*, NCURSES_CONST char *, FILE *, FILE *);\fR
+\fBSCREEN* newterm_sp(SCREEN*, const char *, FILE *, FILE *);\fR
.br
\fBWINDOW* newwin_sp(SCREEN*, int, int, int, int);\fR
.br
@@ -136,7 +159,7 @@ new_prescr \- \fBcurses\fR screen-pointer extension
.br
\fBint noecho_sp(SCREEN*);\fR
.br
-\fBint nofilter_sp(SCREEN*);\fR
+\fBvoid nofilter_sp(SCREEN*);\fR
.br
\fBint nonl_sp(SCREEN*);\fR
.br
@@ -186,7 +209,7 @@ new_prescr \- \fBcurses\fR screen-pointer extension
.br
\fBint slk_attrset_sp(SCREEN*, const chtype);\fR
.br
-\fBint slk_attr_sp(SCREEN*);\fR
+\fBattr_t slk_attr_sp(SCREEN*);\fR
.br
\fBint slk_clear_sp(SCREEN*);\fR
.br
@@ -194,7 +217,7 @@ new_prescr \- \fBcurses\fR screen-pointer extension
.br
\fBint slk_init_sp(SCREEN*, int);\fR
.br
-\fBint slk_label_sp(SCREEN*, int);\fR
+\fBchar* slk_label_sp(SCREEN*, int);\fR
.br
\fBint slk_noutrefresh_sp(SCREEN*);\fR
.br
@@ -228,6 +251,8 @@ new_prescr \- \fBcurses\fR screen-pointer extension
.br
\fBvoid use_env_sp(SCREEN*, bool);\fR
.br
+\fBvoid use_tioctl_sp(SCREEN *, bool);\fR
+.br
\fBint use_legacy_coding_sp(SCREEN*, int);\fR
.br
\fBint vid_attr_sp(SCREEN*, attr_t, short, void *);\fR
@@ -242,19 +267,19 @@ new_prescr \- \fBcurses\fR screen-pointer extension
.sp
\fB#include <form.h>\fR
.sp
-\fBint new_form_sp(SCREEN*, FIELD **);\fR
+\fBFORM* new_form_sp(SCREEN*, FIELD **);\fR
.sp
\fB#include <menu.h>\fR
.sp
-\fBint new_menu_sp(SCREEN*, ITEM **);\fR
+\fBMENU* new_menu_sp(SCREEN*, ITEM **);\fR
.sp
\fB#include <panel.h>\fR
.sp
-\fBint ceiling_panel(SCREEN*);\fR
+\fBPANEL* ceiling_panel(SCREEN*);\fR
.br
\fBPANEL* ground_panel(SCREEN*);\fR
.br
-\fBint update_panels_sp(SCREEN*);\fR
+\fBvoid update_panels_sp(SCREEN*);\fR
.sp
\fB#include <term.h>\fR
.sp
@@ -262,19 +287,19 @@ new_prescr \- \fBcurses\fR screen-pointer extension
.br
\fBint putp_sp(SCREEN*, const char *);\fR
.br
-\fBint tgetflag_sp(SCREEN*, char *, const char *);\fR
+\fBint tgetflag_sp(SCREEN*, const char *);\fR
.br
\fBint tgetent_sp(SCREEN*, char *, const char *);\fR
.br
-\fBint tgetnum_sp(SCREEN*, NCURSES_CONST char *);\fR
+\fBint tgetnum_sp(SCREEN*, const char *);\fR
.br
-\fBchar* tgetstr_sp(SCREEN*, NCURSES_CONST char *, char **);\fR
+\fBchar* tgetstr_sp(SCREEN*, const char *, char **);\fR
.br
-\fBint tigetflag_sp(SCREEN*, NCURSES_CONST char *);\fR
+\fBint tigetflag_sp(SCREEN*, const char *);\fR
.br
-\fBint tigetnum_sp(SCREEN*, NCURSES_CONST char *);\fR
+\fBint tigetnum_sp(SCREEN*, const char *);\fR
.br
-\fBchar* tigetstr_sp(SCREEN*, NCURSES_CONST char *);\fR
+\fBchar* tigetstr_sp(SCREEN*, const char *);\fR
.br
\fBint tputs_sp(SCREEN*, const char *, int, NCURSES_SP_OUTC);\fR
.ad
@@ -328,7 +353,7 @@ to make it useful for checking if the extension is provided.
NCURSES_SP_NAME
The new functions are named using the macro \fINCURSES_SP_NAME\fP,
which hides the actual implementation.
-Currently this adds a "_sp" suffix to the name of the unextended function.
+Currently this adds a \*(``_sp\*('' suffix to the name of the unextended function.
This manual page indexes the extensions showing the full name.
However the proper usage of these functions uses the macro,
to provide for the possibility of changing the naming convention
diff --git a/man/curs_termattrs.3x b/man/curs_termattrs.3x
index 0f0294cd5696..94659a2772f9 100644
--- a/man/curs_termattrs.3x
+++ b/man/curs_termattrs.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2015,2018 Free 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.12 2010/12/04 18:40:45 tom Exp $
+.\" $Id: curs_termattrs.3x,v 1.14 2018/07/28 21:34:06 tom Exp $
.TH curs_termattrs 3X ""
.SH NAME
\fBbaudrate\fR,
@@ -66,9 +66,12 @@
\fBchar *termname(void);\fR
.br
.SH DESCRIPTION
-The \fBbaudrate\fR routine returns the output speed of the terminal. The
+.SS baudrate
+The \fBbaudrate\fR routine returns the output speed of the terminal.
+The
number returned is in bits per second, for example \fB9600\fR, and is an
integer.
+.SS erasechar, erasewchar
.PP
The \fBerasechar\fR routine returns the user's current erase character.
.PP
@@ -76,14 +79,17 @@ The \fBerasewchar\fR routine stores the current erase character
in the location referenced by \fIch\fR.
If no erase character has been defined, the routine fails
and the location referenced by \fIch\fR is not changed.
+.SS has_is, has_il
.PP
The \fBhas_ic\fR routine is true if the terminal has insert- and delete-
character capabilities.
.PP
The \fBhas_il\fR routine is true if the terminal has insert- and delete-line
-capabilities, or can simulate them using scrolling regions. This might
+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 \fBscrollok\fR.
+.SS killchar, killwchar
.PP
The \fBkillchar\fR routine returns the user's current line kill character.
.PP
@@ -91,15 +97,19 @@ The \fBkillwchar\fR routine stores the current line-kill character
in the location referenced by \fIch\fR.
If no line-kill character has been defined,
the routine fails and the location referenced by \fIch\fR is not changed.
+.SS longname
.PP
The \fBlongname\fR 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 characters. It is defined only
+containing a verbose description of the current terminal.
+The maximum
+length of a verbose description is 128 characters.
+It is defined only
after the call to \fBinitscr\fR or \fBnewterm\fR. The area is
overwritten by each call to \fBnewterm\fR and is not restored by
\fBset_term\fR, so the value should be saved between calls to
\fBnewterm\fR if \fBlongname\fR is going to be used with multiple
terminals.
+.SS termattrs, term_attrs
.PP
If a given terminal does not support a video attribute that an
application program is trying to use, \fBcurses\fR may substitute a
@@ -109,6 +119,7 @@ return a logical \fBOR\fR of all video attributes supported by the
terminal using \fIA_\fR and \fIWA_\fR constants respectively.
This information is useful when a \fBcurses\fR program
needs complete control over the appearance of the screen.
+.SS termname
.PP
The \fBtermname\fR routine returns the terminal name used by \fBsetupterm\fR.
.SH RETURN VALUE
@@ -120,7 +131,8 @@ completion.
.SH NOTES
Note that \fBtermattrs\fR may be a macro.
.SH PORTABILITY
-The XSI Curses standard, Issue 4 describes these functions. It changes the
+The XSI Curses standard, Issue 4 describes these functions.
+It changes the
return type of \fBtermattrs\fR to the new type \fBattr_t\fR.
Most versions of curses truncate the result returned by \fBtermname\fR to
14 characters.
diff --git a/man/curs_termcap.3x b/man/curs_termcap.3x
index f8977bebca9c..f56e3569004e 100644
--- a/man/curs_termcap.3x
+++ b/man/curs_termcap.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +26,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_termcap.3x,v 1.30 2013/01/19 15:58:48 tom Exp $
+.\" $Id: curs_termcap.3x,v 1.42 2019/11/30 21:01:40 tom Exp $
.TH curs_termcap 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.na
.hy 0
@@ -62,11 +67,11 @@
.sp
\fBint tgetent(char *bp, const char *name);\fR
.br
-\fBint tgetflag(char *id);\fR
+\fBint tgetflag(const char *id);\fR
.br
-\fBint tgetnum(char *id);\fR
+\fBint tgetnum(const char *id);\fR
.br
-\fBchar *tgetstr(char *id, char **area);\fR
+\fBchar *tgetstr(const char *id, char **area);\fR
.br
\fBchar *tgoto(const char *cap, int col, int row);\fR
.br
@@ -74,8 +79,10 @@
.br
.SH DESCRIPTION
These routines are included as a conversion aid for programs that use
-the \fItermcap\fR library. Their parameters are the same and the
-routines are emulated using the \fIterminfo\fR database. Thus, they
+the \fItermcap\fR library.
+Their parameters are the same and the
+routines are emulated using the \fIterminfo\fR database.
+Thus, they
can only be used to query the capabilities of entries for which a
terminfo entry has been compiled.
.SS INITIALIZATION
@@ -121,9 +128,24 @@ or \-1 if it is not available.
The \fBtgetstr\fR routine returns the string entry for \fIid\fR,
or zero if it is not available.
Use \fBtputs\fR to output the returned string.
-The return value will also be copied to the buffer pointed to by \fIarea\fR,
+The \fIarea\fP parameter is used as follows:
+.RS 3
+.bP
+It is assumed to be the address of a pointer to a buffer managed by the
+calling application.
+.bP
+However, ncurses checks to ensure that \fBarea\fP is not NULL,
+and also that the resulting buffer pointer is not NULL.
+If either check fails, the \fIarea\fP parameter is ignored.
+.bP
+If the checks succeed, ncurses also copies the return value to
+the buffer pointed to by \fIarea\fR,
and the \fIarea\fR value will be updated to point past the null ending
this value.
+.bP
+The return value itself is an address in the terminal description which
+is loaded into memory.
+.RE
.PP
Only the first two characters of the \fBid\fR parameter of
\fBtgetflag\fR,
@@ -131,11 +153,33 @@ Only the first two characters of the \fBid\fR parameter of
\fBtgetstr\fR are compared in lookups.
.SS FORMATTING CAPABILITIES
.PP
-The \fBtgoto\fR routine instantiates the parameters into the given capability.
-The output from this routine is to be passed to \fBtputs\fR.
+The \fBtgoto\fR routine expands the given capability using the parameters.
+.bP
+Because the capability may have padding characters,
+the output of \fBtgoto\fP should be passed to \fBtputs\fR
+rather than some other output function such as \fBprintf\fP.
+.bP
+While \fBtgoto\fP is assumed to be used for the two-parameter
+cursor positioning capability,
+termcap applications also use it for single-parameter capabilities.
+.IP
+Doing this shows a quirk in \fBtgoto\fP: most hardware
+terminals use cursor addressing with \fIrow\fP first,
+but the original developers of the termcap interface chose to
+put the \fIcolumn\fP parameter first.
+The \fBtgoto\fP function swaps the order of parameters.
+It does this also for calls requiring only a single parameter.
+In that case, the first parameter is merely a placeholder.
+.bP
+Normally the ncurses library is compiled with terminfo support.
+In that case, \fBtgoto\fP uses \fBtparm\fP(3X) (a more capable formatter).
+.IP
+However, \fBtparm\fP is not a \fItermcap\fP feature,
+and portable \fItermcap\fP applications should not rely upon its availability.
.PP
The \fBtputs\fR routine is described on the \fBcurs_terminfo\fR(3X) manual
-page. It can retrieve capabilities by either termcap or terminfo name.
+page.
+It can retrieve capabilities by either termcap or terminfo name.
.SS GLOBAL VARIABLES
.PP
The variables
@@ -163,7 +207,8 @@ Routines that return pointers return \fBNULL\fR on error.
.SH BUGS
If you call \fBtgetstr\fR to fetch \fBca\fR 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 will not cause problems if all
+not-quite-compatible termcap notation.
+This will not cause problems if all
you do with it is call \fBtgoto\fR or \fBtparm\fR, which both expand
terminfo-style strings as terminfo.
(The \fBtgoto\fR function, if configured to support termcap, will check
@@ -172,8 +217,9 @@ if the string is indeed terminfo-style by looking for "%p" parameters or
appear to be terminfo).
.PP
Because terminfo conventions for representing padding in string capabilities
-differ from termcap's, \fBtputs("50");\fR will put out a literal "50" rather
-than busy-waiting for 50 milliseconds. Cope with it.
+differ from termcap's, \fBtputs("50");\fR will put out a literal \*(``50\*('' rather
+than busy-waiting for 50 milliseconds.
+Cope with it.
.PP
Note that termcap has nothing analogous to terminfo's \fBsgr\fR string.
One consequence of this is that termcap applications assume \fRme\fR
@@ -181,8 +227,15 @@ One consequence of this is that termcap applications assume \fRme\fR
This implementation checks for, and modifies the data shown to the
termcap interface to accommodate termcap's limitation in this respect.
.SH PORTABILITY
-The XSI Curses standard, Issue 4 describes these functions. However, they
+These functions are provided for supporting legacy applications,
+and should not be used in new programs:
+.bP
+The XSI Curses standard, Issue 4 describes these functions.
+However, they
are marked TO BE WITHDRAWN and may be removed in future versions.
+.bP
+X/Open Curses, Issue 5 (December 2007) marked the termcap interface
+(along with \fBvwprintw\fP and \fBvwscanw\fP) as withdrawn.
.PP
Neither the XSI Curses standard nor the SVr4 man pages documented the return
values of \fBtgetent\fR correctly, though all three were in fact returned ever
@@ -222,4 +275,4 @@ extended capability names which are longer than two characters.
\fBterm_variables\fR(3X),
\fBputc\fR(3).
.sp
-http://invisible-island.net/ncurses/tctest.html
+https://invisible-island.net/ncurses/tctest.html
diff --git a/man/curs_terminfo.3x b/man/curs_terminfo.3x
index 7d440bf53ebc..c6eac6e30536 100644
--- a/man/curs_terminfo.3x
+++ b/man/curs_terminfo.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1999-2011,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 1999-2018,2020 Free 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,14 +26,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_terminfo.3x,v 1.43 2013/07/20 19:29:59 tom Exp $
+.\" $Id: curs_terminfo.3x,v 1.63 2020/01/18 23:55:46 tom Exp $
.TH curs_terminfo 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.ds n 5
.na
@@ -63,23 +64,35 @@
\fB#include <curses.h>\fR
.br
\fB#include <term.h>\fR
-.PP
-\fBint setupterm(char *\fR\fIterm\fR\fB, int \fR\fIfildes\fR\fB, int *\fR\fIerrret\fR\fB);\fR
+.sp
+\fBTERMINAL *cur_term;\fR
+.sp
+\fBconst char * const boolnames[];\fP
+\fBconst char * const boolcodes[];\fP
+\fBconst char * const boolfnames[];\fP
+\fBconst char * const numnames[];\fP
+\fBconst char * const numcodes[];\fP
+\fBconst char * const numfnames[];\fP
+\fBconst char * const strnames[];\fP
+\fBconst char * const strcodes[];\fP
+\fBconst char * const strfnames[];\fP
+.sp
+\fBint setupterm(const char *\fR\fIterm\fR\fB, int \fR\fIfiledes\fR\fB, int *\fR\fIerrret\fR\fB);\fR
.br
-\fBint setterm(char *\fR\fIterm\fR\fB);\fR
+\fBint setterm(const char *\fR\fIterm\fR\fB);\fR
.br
\fBTERMINAL *set_curterm(TERMINAL *\fR\fInterm\fR\fB);\fR
.br
\fBint del_curterm(TERMINAL *\fR\fIoterm\fR\fB);\fR
.br
-\fBint restartterm(char *\fR\fIterm\fR\fB, int \fR\fIfildes\fR\fB, int *\fR\fIerrret\fR\fB);\fR
-.br
-\fBchar *tparm(char *\fR\fIstr\fR\fB, ...);\fR
+\fBint restartterm(const char *\fR\fIterm\fR\fB, int \fR\fIfiledes\fR\fB, int *\fR\fIerrret\fR\fB);\fR
+.sp
+\fBchar *tparm(const char *\fR\fIstr\fR\fB, ...);\fR
.br
\fBint tputs(const char *\fR\fIstr\fR\fB, int \fR\fIaffcnt\fR\fB, int (*\fR\fIputc\fR\fB)(int));\fR
.br
\fBint putp(const char *\fR\fIstr\fR\fB);\fR
-.br
+.sp
\fBint vidputs(chtype \fR\fIattrs\fR\fB, int (*\fR\fIputc\fR\fB)(int));\fR
.br
\fBint vidattr(chtype \fR\fIattrs\fR\fB);\fR
@@ -87,32 +100,34 @@
\fBint vid_puts(attr_t \fR\fIattrs\fR\fB, short \fR\fIpair\fR\fB, void *\fR\fIopts\fR\fB, int (*\fR\fIputc\fR\fB)(int));\fR
.br
\fBint vid_attr(attr_t \fR\fIattrs\fR\fB, short \fR\fIpair\fR\fB, void *\fR\fIopts\fR\fB);\fR
-.br
+.sp
\fBint mvcur(int \fR\fIoldrow\fR\fB, int \fR\fIoldcol\fR\fB, int \fR\fInewrow\fR, int \fR\fInewcol\fR\fB);\fR
+.sp
+\fBint tigetflag(const char *\fR\fIcapname\fR\fB);\fR
.br
-\fBint tigetflag(char *\fR\fIcapname\fR\fB);\fR
-.br
-\fBint tigetnum(char *\fR\fIcapname\fR\fB);\fR
-.br
-\fBchar *tigetstr(char *\fR\fIcapname\fR\fB);\fR
+\fBint tigetnum(const char *\fR\fIcapname\fR\fB);\fR
.br
+\fBchar *tigetstr(const char *\fR\fIcapname\fR\fB);\fR
+.sp
\fBchar *tiparm(const char *\fR\fIstr\fR\fB, ...);\fR
.br
.fi
.SH DESCRIPTION
These low-level routines must be called by programs that have to deal
directly with the \fBterminfo\fR database to handle certain terminal
-capabilities, such as programming function keys. For all other
+capabilities, such as programming function keys.
+For all other
functionality, \fBcurses\fR routines are more suitable and their use is
recommended.
.SS Initialization
.PP
-Initially, \fBsetupterm\fR should be called. Note that
-\fBsetupterm\fR is automatically called by \fBinitscr\fR and
-\fBnewterm\fR. This defines the set of terminal-dependent variables
+Initially, \fBsetupterm\fR should be called.
+The high-level curses functions \fBinitscr\fR and
+\fBnewterm\fR call \fBsetupterm\fP to initialize the
+low-level set of terminal-dependent variables
[listed in \fBterminfo\fR(\*n)].
.PP
-Each initialization routine provides applications with the
+Applications can use the
terminal capabilities either directly (via header definitions),
or by special functions.
The header files \fBcurses.h\fR and \fBterm.h\fR should be included (in this
@@ -126,14 +141,18 @@ If \fBuse_env(FALSE)\fR has been called, values for
\fBlines\fR and \fBcolumns\fR specified in \fBterminfo\fR are used.
.bP
Otherwise, if the environment variables \fBLINES\fR and \fBCOLUMNS\fR
-exist, their values are used. If these environment variables do not
+exist, their values 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
+is used.
+Otherwise, if the environment variables do not exist, the
values for \fBlines\fR and \fBcolumns\fR specified in the
\fBterminfo\fR database are used.
.PP
-Parameterized strings should be passed through \fBtparm\fR to instantiate them.
-All \fBterminfo\fR strings [including the output of \fBtparm\fR] should be printed
+Parameterized strings should be passed through \fBtparm\fR to instantiate them.
+All \fBterminfo\fR strings
+(including the output of \fBtparm\fR)
+should be printed
with \fBtputs\fR or \fBputp\fR.
Call \fBreset_shell_mode\fR to restore the
tty modes before exiting [see \fBcurs_kernel\fR(3X)].
@@ -156,23 +175,35 @@ call \fBreset_prog_mode\fR after returning from the shell.
.PP
The \fBsetupterm\fR routine reads in the \fBterminfo\fR database,
initializing the \fBterminfo\fR structures, but does not set up the
-output virtualization structures used by \fBcurses\fR. The terminal
-type is the character string \fIterm\fR; if \fIterm\fR is null, the
-environment variable \fBTERM\fR is used.
-All output is to file descriptor \fBfildes\fR which is initialized for output.
+output virtualization structures used by \fBcurses\fR.
+These are its parameters:
+.RS 3
+.TP 5
+\fIterm\fP
+is the terminal type, a character string.
+If \fIterm\fR is null, the environment variable \fBTERM\fR is used.
+.TP 5
+\fIfiledes\fP
+is the file descriptor used for all output.
+.TP 5
+\fIerrret\fP
+points to an optional location where an error status can be returned to
+the caller.
If \fIerrret\fR is not null,
then \fBsetupterm\fR returns \fBOK\fR or
\fBERR\fR and stores a status value in the integer pointed to by
\fIerrret\fR.
A return value of \fBOK\fR combined with status of \fB1\fR in \fIerrret\fR
is normal.
+.IP
If \fBERR\fR is returned, examine \fIerrret\fR:
+.RS
.TP 5
.B 1
means that the terminal is hardcopy, cannot be used for curses applications.
.IP
\fBsetupterm\fP determines if the entry is a hardcopy type by
-checking the \fIhc\fP (\fIhardcopy\fP) capability.
+checking the \fBhc\fP (\fBhardcopy\fP) capability.
.TP 5
.B 0
means that the terminal could not be found,
@@ -180,18 +211,21 @@ or that it is a generic type,
having too little information for curses applications to run.
.IP
\fBsetupterm\fP determines if the entry is a generic type by
-checking the \fIgn\fP (\fIgeneric\fP) capability.
+checking the \fBgn\fP (\fBgeneric\fP) capability.
.TP 5
.B \-1
means that the \fBterminfo\fR database could not be found.
-.PP
+.RE
+.IP
If \fIerrret\fR is
null, \fBsetupterm\fR prints an error message upon finding an error
-and exits. Thus, the simplest call is:
+and exits.
+Thus, the simplest call is:
.sp
\fBsetupterm((char *)0, 1, (int *)0);\fR,
.sp
which uses all the defaults and sends the output to \fBstdout\fR.
+.RE
.PP
The \fBsetterm\fR routine was replaced by \fBsetupterm\fR. The call:
.sp
@@ -222,7 +256,8 @@ string variables use the values from \fInterm\fR.
It returns the old value of \fBcur_term\fR.
.PP
The \fBdel_curterm\fR routine frees the space pointed to by
-\fIoterm\fR and makes it available for further use. If \fIoterm\fR is
+\fIoterm\fR and makes it available for further use.
+If \fIoterm\fR is
the same as \fBcur_term\fR, references to any of the \fBterminfo\fR
boolean, numeric, and string variables thereafter may refer to invalid
memory locations until another \fBsetupterm\fR has been called.
@@ -241,6 +276,13 @@ calls \fBsetupterm\fP, and then restores the bits.
The \fBtparm\fR routine instantiates the string \fIstr\fR with
parameters \fIpi\fR. A pointer is returned to the result of \fIstr\fR
with the parameters applied.
+Application developers should keep in mind these quirks of the interface:
+.bP
+Although \fBtparm\fP's actual parameters may be integers or strings,
+the prototype expects \fBlong\fP (integer) values.
+.bP
+Aside from the \fBset_attributes\fP (\fBsgr\fP) capability,
+most terminal capabilities require no more than one or two parameters.
.PP
\fBtiparm\fP is a newer form of \fBtparm\fP which uses \fI<stdarg.h>\fP
rather than a fixed-parameter list.
@@ -249,36 +291,55 @@ Its numeric parameters are integers (int) rather than longs.
.SS Output Functions
.PP
The \fBtputs\fR routine applies padding information to the string
-\fIstr\fR and outputs it. The \fIstr\fR must be a terminfo string
-variable or the return value from \fBtparm\fR, \fBtgetstr\fR, or
-\fBtgoto\fR. \fIaffcnt\fR is the number of lines affected, or 1 if
-not applicable. \fIputc\fR is a \fBputchar\fR-like routine to which
+\fIstr\fR and outputs it:
+.bP
+The \fIstr\fR parameter must be a terminfo string
+variable or the return value from
+\fBtparm\fR, \fBtiparm\fP, \fBtgetstr\fR, or \fBtgoto\fR.
+.IP
+The \fBtgetstr\fP and \fBtgoto\fP functions are part of the \fItermcap\fP
+interface,
+which happens to share this function name with the \fIterminfo\fP interface.
+.bP
+\fIaffcnt\fR is the number of lines affected, or 1 if
+not applicable.
+.bP
+\fIputc\fR is a \fBputchar\fR-like routine to which
the characters are passed, one at a time.
.PP
The \fBputp\fR routine calls \fBtputs(\fR\fIstr\fR\fB, 1, putchar)\fR.
-Note that the output of \fBputp\fR always goes to \fBstdout\fR, not to
-the \fIfildes\fR specified in \fBsetupterm\fR.
+The output of \fBputp\fR always goes to \fBstdout\fR, rather than
+the \fIfiledes\fR specified in \fBsetupterm\fR.
.PP
The \fBvidputs\fR routine displays the string on the terminal in the
video attribute mode \fIattrs\fR, which is any combination of the
-attributes listed in \fBcurses\fR(3X). The characters are passed to
+attributes listed in \fBcurses\fR(3X).
+The characters are passed to
the \fBputchar\fR-like routine \fIputc\fR.
.PP
The \fBvidattr\fR routine is like the \fBvidputs\fR routine, except
that it outputs through \fBputchar\fR.
.PP
-The \fBvid_attr\fR and \fBvid_puts\fR routines correspond to vidattr and vidputs,
-respectively.
+The \fBvid_attr\fR and \fBvid_puts\fR routines correspond
+to vidattr and vidputs, respectively.
They use a set of arguments for representing the video attributes plus color,
i.e.,
-one of type attr_t for the attributes and one of short for
-the color_pair number.
+.bP
+\fIattrs\fP of type \fBattr_t\fP for the attributes and
+.bP
+\fIpair\fP of type \fBshort\fP for the color-pair number.
+.PP
The \fBvid_attr\fR and \fBvid_puts\fR routines
are designed to use the attribute constants with the \fIWA_\fR prefix.
-The opts argument is reserved for future use.
-Currently, applications must provide a null pointer for that argument.
.PP
-The \fBmvcur\fR routine provides low-level cursor motion. It takes
+X/Open Curses reserves the \fIopts\fP argument for future use,
+saying that applications must provide a null pointer for that argument.
+As an extension,
+this implementation allows \fIopts\fP to be used as a pointer to \fBint\fP,
+which overrides the \fIpair\fP (\fBshort\fP) argument.
+.PP
+The \fBmvcur\fR routine provides low-level cursor motion.
+It takes
effect immediately (rather than at the next refresh).
.\" ***************************************************************************
.SS Terminal Capability Functions
@@ -318,27 +379,35 @@ or
if it is canceled or absent from the terminal description.
.\" ***************************************************************************
.SS Terminal Capability Names
+.PP
These null-terminated arrays contain
-the short terminfo names ("codes"),
-the \fBtermcap\fR names, and the long terminfo names ("fnames")
+.bP
+the short terminfo names (\*(``codes\*(''),
+.bP
+the \fBtermcap\fR names (\*(``names\*('', and
+.bP
+the long terminfo names (\*(``fnames\*('')
+.PP
for each of the predefined \fBterminfo\fR variables:
-.RS
-\fBchar *boolnames[]\fR, \fB*boolcodes[]\fR, \fB*boolfnames[]\fR
-.sp
-\fBchar *numnames[]\fR, \fB*numcodes[]\fR, \fB*numfnames[]\fR
.sp
-\fBchar *strnames[]\fR, \fB*strcodes[]\fR, \fB*strfnames[]\fR
+.RS
+\fBconst char *boolnames[]\fR, \fB*boolcodes[]\fR, \fB*boolfnames[]\fR
+.br
+\fBconst char *numnames[]\fR, \fB*numcodes[]\fR, \fB*numfnames[]\fR
+.br
+\fBconst char *strnames[]\fR, \fB*strcodes[]\fR, \fB*strfnames[]\fR
.RE
.SH RETURN VALUE
Routines that return an integer return \fBERR\fR upon failure and \fBOK\fR
-(SVr4 only specifies "an integer value other than \fBERR\fR") upon successful
-completion, unless otherwise noted in the preceding routine descriptions.
+(SVr4 only specifies \*(``an integer value other than \fBERR\fR\*('')
+upon successful completion,
+unless otherwise noted in the preceding routine descriptions.
.PP
Routines that return pointers always return \fBNULL\fR on error.
.PP
X/Open defines no error conditions.
In this implementation
-.RS 5
+.RS 3
.TP 5
\fBdel_curterm\fP
returns an error
@@ -363,40 +432,180 @@ It does not detect I/O errors:
X/Open states that \fBtputs\fP ignores the return value
of the output function \fIputc\fP.
.RE
+.SH HISTORY
+.PP
+SVr2 introduced the terminfo feature.
+Its programming manual mentioned these low-level functions:
+.TS
+l l
+_ _
+l l.
+\fBFunction\fR \fBDescription\fR
+fixterm restore tty to \*(``in curses\*('' state
+gettmode establish current tty modes
+mvcur low level cursor motion
+putp T{
+utility function that uses \fBtputs\fP to send characters via \fBputchar\fP.
+T}
+resetterm set tty modes to \*(``out of curses\*('' state
+resetty reset tty flags to stored value
+saveterm save current modes as \*(``in curses\*('' state
+savetty store current tty flags
+setterm establish terminal with given type
+setupterm establish terminal with given type
+tparm instantiate a string expression with parameters
+tputs apply padding information to a string
+vidattr like \fBvidputs\fP, but outputs through \fBputchar\fP
+vidputs T{
+output a string to put terminal in a specified video attribute mode
+T}
+.TE
+.PP
+The programming manual also mentioned
+functions provided for termcap compatibility
+(commenting that they \*(``may go away at a later date\*(''):
+.TS
+l l
+_ _
+l l.
+\fBFunction\fR \fBDescription\fR
+tgetent look up termcap entry for given \fIname\fP
+tgetflag get boolean entry for given \fIid\fP
+tgetnum get numeric entry for given \fIid\fP
+tgetstr get string entry for given \fIid\fP
+tgoto apply parameters to given capability
+tputs T{
+apply padding to capability, calling a function to put characters
+T}
+.TE
+.PP
+Early terminfo programs obtained capability values from the
+\fBTERMINAL\fP structure initialized by \fBsetupterm\fR.
+.PP
+SVr3 extended terminfo by adding functions to retrieve capability values
+(like the termcap interface),
+and reusing tgoto and tputs:
+.TS
+l l
+_ _
+l l.
+\fBFunction\fR \fBDescription\fR
+tigetflag get boolean entry for given \fIid\fP
+tigetnum get numeric entry for given \fIid\fP
+tigetstr get string entry for given \fIid\fP
+.TE
+.PP
+SVr3 also replaced several of the SVr2 terminfo functions
+which had no counterpart in the termcap interface,
+documenting them as obsolete:
+.TS
+l l
+_ _
+l l.
+\fBFunction\fR \fBReplaced by\fP
+crmode cbreak
+fixterm reset_prog_mode
+gettmode N/A
+nocrmode nocbreak
+resetterm reset_shell_mode
+saveterm def_prog_mode
+setterm setupterm
+.TE
+.PP
+SVr3 kept the \fBmvcur\fP, \fBvidattr\fP and \fBvidputs\fP functions,
+along with \fBputp\fP, \fBtparm\fP and \fBtputs\fP.
+The latter were needed to support padding,
+and handling functions such as \fBvidattr\fP
+(which used more than the two parameters supported by \fBtgoto\fP).
+.PP
+SVr3 introduced the functions for switching between terminal
+descriptions, e.g., \fBset_curterm\fP.
+The various global variables such as \fBboolnames\fP were mentioned
+in the programming manual at this point.
+.PP
+SVr4 added the \fBvid_attr\fP and \fBvid_puts\fP functions.
+.PP
+There are other low-level functions declared in the curses header files
+on Unix systems,
+but none were documented.
+The functions marked \*(``obsolete\*('' remained in use
+by the Unix \fBvi\fP editor.
.SH PORTABILITY
+.SS Legacy functions
+.PP
X/Open notes that \fBvidattr\fR and \fBvidputs\fR may be macros.
.PP
The function \fBsetterm\fR is not described by X/Open and must
be considered non-portable.
All other functions are as described by X/Open.
+.SS Legacy data
.PP
\fBsetupterm\fP copies the terminal name to the array \fBttytype\fP.
This is not part of X/Open Curses, but is assumed by some applications.
.PP
-If configured to use the terminal-driver,
-e.g., for the MinGW port,
-.bP
-\fBsetupterm\fP interprets a missing/empty TERM variable as the
-special value \*(``unknown\*(''.
-.bP
-\fBsetupterm\fP allows explicit use of the
-the windows console driver by checking if $TERM is set to
-\*(``#win32con\*('' or an abbreviation of that string.
+Other implementions may not declare the capability name arrays.
+Some provide them without declaring them.
+X/Open does not specify them.
+.PP
+Extended terminal capability names, e.g., as defined by \fB@TIC@\ \-x\fP,
+are not stored in the arrays described here.
+.SS Output buffering
.PP
Older versions of \fBncurses\fP assumed that the file descriptor passed to
\fBsetupterm\fP from \fBinitscr\fP or \fBnewterm\fP uses buffered I/O,
and would write to the corresponding stream.
In addition to the limitation that the terminal was left in block-buffered
-mode on exit (like SystemV curses),
+mode on exit (like System V curses),
it was problematic because \fBncurses\fP
did not allow a reliable way to cleanup on receiving SIGTSTP.
-The current version uses output buffers managed directly by \fBncurses\fP.
+.PP
+The current version (ncurses6)
+uses output buffers managed directly by \fBncurses\fP.
Some of the low-level functions described in this manual page write
to the standard output.
They are not signal-safe.
The high-level functions in \fBncurses\fP use
alternate versions of these functions
using the more reliable buffering scheme.
+.SS Function prototypes
+.PP
+The X/Open Curses prototypes are based on the SVr4 curses header declarations,
+which were defined at the same time the C language was first standardized in
+the late 1980s.
+.bP
+X/Open Curses uses \fBconst\fP less effectively than a later design might,
+in some cases applying it needlessly to values are already constant,
+and in most cases overlooking parameters which normally would use \fBconst\fP.
+Using constant parameters for functions which do not use \fBconst\fP
+may prevent the program from compiling.
+On the other hand, \fIwritable strings\fP are an obsolescent feature.
+.IP
+As an extension, this implementation can be configured to change the
+function prototypes to use the \fBconst\fP keyword.
+The ncurses ABI 6 enables this feature by default.
+.bP
+X/Open Curses prototypes \fBtparm\fR with a fixed number of parameters,
+rather than a variable argument list.
+.IP
+This implementation uses a variable argument list, but can be
+configured to use the fixed-parameter list.
+Portable applications should provide 9 parameters after the format;
+zeroes are fine for this purpose.
+.IP
+In response to review comments by Thomas E. Dickey,
+X/Open Curses Issue 7 proposed the \fBtiparm\fP function in mid-2009.
+.SS Special TERM treatment
+.PP
+If configured to use the terminal-driver,
+e.g., for the MinGW port,
+.bP
+\fBsetupterm\fP interprets a missing/empty TERM variable as the
+special value \*(``unknown\*(''.
+.bP
+\fBsetupterm\fP allows explicit use of the
+the windows console driver by checking if $TERM is set to
+\*(``#win32con\*('' or an abbreviation of that string.
+.SS Other portability issues
.PP
In System V Release 4, \fBset_curterm\fR has an \fBint\fR return type and
returns \fBOK\fR or \fBERR\fR. We have chosen to implement the X/Open Curses
@@ -406,19 +615,9 @@ In System V Release 4, the third argument of \fBtputs\fR has the type
\fBint (*putc)(char)\fR.
.PP
At least one implementation of X/Open Curses (Solaris) returns a value
-other than OK/ERR from \fBtputs\fP.
+other than \fBOK\fP/\fBERR\fP from \fBtputs\fP.
That returns the length of the string, and does no error-checking.
.PP
-X/Open Curses prototypes \fBtparm\fR with a fixed number of parameters,
-rather than a variable argument list.
-This implementation uses a variable argument list, but can be
-configured to use the fixed-parameter list.
-Portable applications should provide 9 parameters after the format;
-zeroes are fine for this purpose.
-.PP
-In response to comments by Thomas E. Dickey,
-X/Open Curses Issue 7 proposed the \fBtiparm\fP function in mid-2009.
-.PP
X/Open notes that after calling \fBmvcur\fR, the curses state may not match the
actual terminal state, and that an application should touch and refresh
the window before resuming normal curses calls.
@@ -430,13 +629,6 @@ So though it is documented as a terminfo function,
X/Open states that the old location must be given for \fBmvcur\fP.
This implementation allows the caller to use \-1's for the old ordinates.
In that case, the old location is unknown.
-.PP
-Other implementions may not declare the capability name arrays.
-Some provide them without declaring them.
-X/Open does not specify them.
-.PP
-Extended terminal capability names, e.g., as defined by \fB@TIC@\ \-x\fP,
-are not stored in the arrays described here.
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_initscr\fR(3X),
diff --git a/man/curs_threads.3x b/man/curs_threads.3x
index 5732e924c1b5..c2847f96cdf4 100644
--- a/man/curs_threads.3x
+++ b/man/curs_threads.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2008-2010,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 2008-2015,2017 Free 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,16 +26,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_threads.3x,v 1.19 2012/05/26 17:03:26 tom Exp $
+.\" $Id: curs_threads.3x,v 1.24 2017/11/18 23:56:00 tom Exp $
.TH curs_threads 3X ""
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.na
.hy 0
.SH NAME
-\fBuse_screen\fR,
-\fBuse_window\fR \- \fBcurses\fR thread support
+\fBcurs_threads\fR \- \fBcurses\fR thread support
.ad
.hy
.SH SYNOPSIS
@@ -67,7 +67,7 @@ configuration which hide the mutex's needed to prevent concurrent
use of the global variables when configured for threading.
.PP
In addition to forcing access to members of the \fBWINDOW\fP structure
-to be via functions (see \fBcurs_opaque\fP(3x)),
+to be via functions (see \fBcurs_opaque\fP(3X)),
it makes functions of the common global variables,
e.g.,
COLORS,
@@ -540,6 +540,7 @@ wget_wch/screen (input-operation)
wget_wstr/screen (input-operation)
wgetbkgrnd/window
wgetch/screen (input-operation)
+wgetdelay/window
wgetn_wstr/screen (input-operation)
wgetnstr/screen (input-operation)
wgetparent/window
@@ -587,7 +588,7 @@ wvline_set/window
.TE
.\" ***************************************************************************
.SH RETURN VALUE
-These functions all return TRUE or FALSE, except as noted.
+These functions all return \fBTRUE\fP or \fBFALSE\fP, except as noted.
.SH NOTES
Both a macro and a function are provided for each name.
.SH PORTABILITY
diff --git a/man/curs_touch.3x b/man/curs_touch.3x
index 9fa6d370b9a2..1d2bb8ee7a58 100644
--- a/man/curs_touch.3x
+++ b/man/curs_touch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2018 Free 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_touch.3x,v 1.14 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_touch.3x,v 1.21 2018/07/28 21:34:56 tom Exp $
.TH curs_touch 3X ""
.na
.hy 0
@@ -57,10 +57,12 @@
.SH DESCRIPTION
The \fBtouchwin\fR and \fBtouchline\fR routines throw away all
optimization information about which parts of the window have been
-touched, by pretending that the entire window has been drawn on. This
+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
+have been changed in the other window do not reflect the change.
+The
routine \fBtouchline\fR only pretends that \fIcount\fR lines have been
changed, beginning with line \fIstart\fR.
.PP
@@ -84,13 +86,22 @@ preceding routine descriptions.
.PP
X/Open does not define any error conditions.
In this implementation
-.RS
+.RS 3
.TP 5
\fBis_linetouched\fP
returns an error
if the window pointer is null, or
if the line number is outside the window.
-Note that ERR is distinct from TRUE and FALSE, which are the normal return values of this function.
+.IP
+The constant \fBERR\fP is distinct from \fBTRUE\fP and \fBFALSE\fP,
+which are the normal return values of this function.
+Because the function returns a \fBbool\fP,
+returning \fBERR\fP (which is neither \fBTRUE\fP nor \fBFALSE\fP)
+may not be supported by the compiler.
+.IP
+To provide error-checking and also match the X/Open function prototype,
+the \fBERR\fP is provided by a macro named \fBis_linetouched\fP.
+The actual function returns \fBFALSE\fP when it detects an error.
.TP 5
\fBwtouchln\fP
returns an error
@@ -98,14 +109,19 @@ if the window pointer is null, or
if the line number is outside the window.
.RE
.SH PORTABILITY
-The XSI Curses standard, Issue 4 describes these functions.
.PP
-Some historic curses implementations had, as an undocumented feature, the
-ability to do the equivalent of \fBclearok(..., 1)\fR by saying
-\fBtouchwin(stdscr)\fR or \fBclear(stdscr)\fR. This will not work under
-ncurses.
+These functions were introduced by SVr4.
+The Solaris curses header file,
+for instance, defines both an actual function and macro for each.
+The macros give the same result as the actual functions.
+SVr4 curses does not check the window parameter \fIwin\fP to ensure
+that it is not \fBNULL\fP;
+otherwise this implementation behaves the same as SVr4.
+.PP
+The XSI Curses standard, Issue 4 describes these functions,
+but defines no error conditions.
.SH NOTES
-Note that all routines except \fBwtouchln\fR may be macros.
+All of these routines except \fBwtouchln\fR may be macros.
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_refresh\fR(3X),
diff --git a/man/curs_trace.3x b/man/curs_trace.3x
index ef784165e168..186601c9785c 100644
--- a/man/curs_trace.3x
+++ b/man/curs_trace.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2000-2009,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2000-2017,2019 Free 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,145 +26,264 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_trace.3x,v 1.12 2010/12/04 18:40:45 tom Exp $
+.\" $Id: curs_trace.3x,v 1.20 2019/12/07 18:55:02 tom Exp $
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.TH curs_trace 3X ""
.na
.hy 0
.SH NAME
+\fBcurses_trace\fR,
+\fBtrace\fR,
\fB_tracef\fR,
-\fB_tracedump\fR,
\fB_traceattr\fR,
\fB_traceattr2\fR,
-\fB_nc_tracebits\fR,
\fB_tracecchar_t\fR,
\fB_tracecchar_t2\fR,
\fB_tracechar\fR,
\fB_tracechtype\fR,
\fB_tracechtype2\fR,
-\fB_tracemouse\fR,
-\fBtrace\fR \- \fBcurses\fR debugging routines
+\fB_nc_tracebits\fR,
+\fB_tracedump\fR,
+\fB_tracemouse\fR \- \fBcurses\fR debugging routines
.ad
.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
.sp
-\fBvoid _tracef(const char *format, ...);\fR
-.br
-\fBvoid _tracedump(const char *label, WINDOW *win);\fR
-.br
-\fBchar *_traceattr(attr_t attr);\fR
+\fBunsigned curses_trace(const unsigned \fP\fIparam\fP\fB);\fR
+.sp
+\fBvoid _tracef(const char *\fP\fIformat\fP\fB, ...);\fR
+.sp
+\fBchar *_traceattr(attr_t \fP\fIattr\fP\fB);\fR
.br
-\fBchar *_traceattr2(int buffer, chtype ch);\fR
+\fBchar *_traceattr2(int \fP\fIbuffer\fP\fB, chtype \fP\fIch\fP\fB);\fR
.br
-\fBchar *_nc_tracebits(void);\fR
+\fBchar *_tracecchar_t(const cchar_t *\fP\fIstring\fP\fB);\fR
.br
-\fBchar * _tracecchar_t(const cchar_t *string);\fR
+\fBchar *_tracecchar_t2(int \fP\fIbuffer\fP\fB, const cchar_t *\fP\fIstring\fP\fB);\fR
.br
-\fBchar * _tracecchar_t2(int buffer, const cchar_t *string);\fR
+\fBchar *_tracechar(int \fP\fIch\fP\fB);\fR
.br
-\fBchar *_tracechar(int ch);\fR
+\fBchar *_tracechtype(chtype \fP\fIch\fP\fB);\fR
.br
-\fBchar *_tracechtype(chtype ch);\fR
+\fBchar *_tracechtype2(int \fP\fIbuffer\fP\fB, chtype \fP\fIch\fP\fB);\fR
+.sp
+\fBvoid _tracedump(const char *\fP\fIlabel\fP\fB, WINDOW *\fP\fIwin\fP\fB);\fR
.br
-\fBchar *_tracechtype2(int buffer, chtype ch);\fR
+\fBchar *_nc_tracebits(void);\fR
.br
-\fBchar *_tracemouse(const MEVENT *event);\fR
+\fBchar *_tracemouse(const MEVENT *\fP\fIevent\fP\fB);\fR
+.sp
+/* deprecated */
.br
-\fBvoid trace(const unsigned int param);\fR
+\fBvoid trace(const unsigned int \fP\fIparam\fP\fB);\fR
.SH DESCRIPTION
-The \fBtrace\fR routines are used for debugging the ncurses libraries,
+The \fIcurses trace\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,
+Some limitations apply:
+.bP
+Aside from \fBcurses_trace\fP,
+the other functions are normally available only with the debugging library
+e.g., \fIlibncurses_g.a\fR.
+.IP
+All of the trace functions may be compiled into any model (shared, static,
profile) by defining the symbol \fBTRACE\fR.
-Additionally, some functions are only available with the wide-character
-configuration of the libraries.
-.PP
-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.
+.bP
+Additionally, the functions which use \fBcchar_t\fP
+are only available with the wide-character configuration of the libraries.
+.SS Functions
+The principal parts of this interface are
+.bP
+\fBcurses_trace\fR, which selectively enables different tracing features, and
+.bP
+\fB_tracef\fR, which writes formatted data to the \fItrace\fR file.
+.IP
+The other functions either return a pointer to a string-area
+(allocated by the corresponding function), or return no value
+(such as \fB_tracedump\fP,
+which implements the screen dump for \fBTRACE_UPDATE\fP).
+The caller should not free these strings,
+since the allocation is reused on successive calls.
+To work around the problem of a single string-area per function,
+some use a buffer-number parameter, telling the library to allocate
+additional string-areas.
.PP
-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
+The \fBcurses_trace\fR function is always available,
+whether or not the other trace functions are available:
+.bP
+If tracing is available,
+calling \fBcurses_trace\fR with a nonzero parameter
+updates the trace mask,
+and returns the previous trace mask.
+.IP
+When the trace mask is nonzero,
+ncurses creates the file \*(``trace\*('' in the current directory for output.
+If the file already exists, no tracing is done.
+.bP
+If tracing is not available, \fBcurses_trace\fP returns zero (0).
+.SS Trace Parameter
+The trace 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.
+.B TRACE_DISABLE
+turn off tracing by passing a zero parameter.
+.IP
+The library flushes the output file,
+but retains an open file-descriptor to the trace file
+so that it can resume tracing later if a nonzero parameter is passed
+to the \fBcurses_trace\fP function.
.TP 5
-TRACE_TIMES
+.B TRACE_TIMES
trace user and system times of updates.
.TP 5
-TRACE_TPUTS
-trace tputs calls.
+.B TRACE_TPUTS
+trace \fBtputs\fP(3X) calls.
.TP 5
-TRACE_UPDATE
+.B TRACE_UPDATE
trace update actions, old & new screens.
.TP 5
-TRACE_MOVE
+.B TRACE_MOVE
trace cursor movement and scrolling.
.TP 5
-TRACE_CHARPUT
+.B TRACE_CHARPUT
trace all character outputs.
.TP 5
-TRACE_ORDINARY
+.B 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
+.B TRACE_CALLS
trace all curses calls.
The parameters for each call are traced, as well as return values.
.TP 5
-TRACE_VIRTPUT
+.B TRACE_VIRTPUT
trace virtual character puts, i.e., calls to \fBaddch\fR.
.TP 5
-TRACE_IEVENT
+.B TRACE_IEVENT
trace low-level input processing, including timeouts.
.TP 5
-TRACE_BITS
+.B TRACE_BITS
trace state of TTY control bits.
.TP 5
-TRACE_ICALLS
+.B TRACE_ICALLS
trace internal/nested calls.
.TP 5
-TRACE_CCALLS
+.B TRACE_CCALLS
trace per-character calls.
.TP 5
-TRACE_DATABASE
+.B TRACE_DATABASE
trace read/write of terminfo/termcap data.
.TP 5
-TRACE_ATTRS
+.B TRACE_ATTRS
trace changes to video attributes and colors.
.TP 5
-TRACE_MAXIMUM
+.B TRACE_MAXIMUM
maximum trace level, enables all of the separate trace features.
.PP
-Some tracing features are enabled whenever the \fBtrace\fR parameter
-is nonzero. Some features overlap.
+Some tracing features are enabled whenever the \fBcurses_trace\fR parameter
+is nonzero.
+Some features overlap.
The specific names are used as a guideline.
-.PP
+.SS Initialization
These functions check the \fBNCURSES_TRACE\fP environment variable,
-to set the tracing feature as if \fBtrace\fP was called:
-.RS
+to set the tracing feature as if \fBcurses_trace\fP was called:
+.RS 4
+.PP
+.na
+.hy 0
filter,
initscr,
new_prescr,
newterm,
nofilter,
+restartterm,
ripoffline,
setupterm,
slk_init,
-tgetent
+tgetent,
+use_env,
+use_extended_names,
+use_tioctl
+.hy
+.ad
.RE
-
+.SS Command-line Utilities
+.PP
+The command-line utilities such as \fBtic\fP(1) provide a verbose option
+which extends the set of messages written using the \fBcurses_trace\fP function.
+Both of these (\fB\-v\fP and \fBcurses_trace\fP)
+use the same variable (\fB_nc_tracing\fP),
+which determines the messages which are written.
+.PP
+Because the command-line utilities may call initialization functions
+such as \fBsetupterm\fP, \fBtgetent\fP or \fBuse_extended_names\fP,
+some of their debugging output may be directed to the \fItrace\fP file
+if the \fBNCURSES_TRACE\fP environment variable is set:
+.bP
+messages produced in the utility are written to the standard error.
+.bP
+messages produced by the underlying library are written to \fItrace\fP.
+.PP
+If ncurses is built without tracing, none of the latter are produced,
+and fewer diagnostics are provided by the command-line utilities.
.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.
+have similar features,
+but they are not compatible with ncurses:
+.bP
+SVr4 provided \fBtraceon\fP and \fBtraceoff\fP,
+to control whether debugging information was written
+to the \*(``trace\*('' file.
+While the functions were always available,
+this feature was only enabled
+if \fBDEBUG\fP was defined when building the library.
+.IP
+The SVr4 tracing feature is undocumented.
+.bP
+PDCurses provides \fBtraceon\fP and \fBtraceoff\fP,
+which (like SVr4) are always available,
+and enable tracing
+to the \*(``trace\*('' file
+only when a debug-library is built.
+.IP
+PDCurses has a short description of these functions,
+with a note that they are not present in X/Open Curses,
+ncurses or NetBSD.
+It does not mention SVr4,
+but the functions' inclusion in a header file section
+labeled \*(``Quasi-standard\*('' hints at the origin.
+.bP
+NetBSD does not provide functions for enabling/disabling traces.
+It uses environment variables
+\fBCURSES_TRACE_MASK\fP and
+\fBCURSES_TRACE_FILE\fP to determine what is traced,
+and where the results are written.
+This is available only when a debug-library is built.
+.IP
+The NetBSD tracing feature is undocumented.
+.PP
+A few ncurses functions are not provided when symbol versioning is used:
+.RS 4
+.PP
+_nc_tracebits,
+_tracedump,
+_tracemouse
+.RE
+.PP
+The original \fBtrace\fP routine was deprecated because
+it often conflicted with application names.
.SH SEE ALSO
\fBcurses\fR(3X).
diff --git a/man/curs_util.3x b/man/curs_util.3x
index 444f40e2cffb..092b411b8755 100644
--- a/man/curs_util.3x
+++ b/man/curs_util.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,14 +27,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_util.3x,v 1.37 2013/07/20 19:43:45 tom Exp $
+.\" $Id: curs_util.3x,v 1.56 2019/11/30 21:04:02 tom Exp $
.TH curs_util 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.na
.hy 0
@@ -56,13 +57,13 @@
.SH SYNOPSIS
\fB#include <curses.h>\fR
.sp
-\fBchar *unctrl(chtype c);\fR
+\fBconst char *unctrl(chtype c);\fR
.br
\fBwchar_t *wunctrl(cchar_t *c);\fR
.br
-\fBchar *keyname(int c);\fR
+\fBconst char *keyname(int c);\fR
.br
-\fBchar *key_name(wchar_t w);\fR
+\fBconst char *key_name(wchar_t w);\fR
.br
\fBvoid filter(void);\fR
.br
@@ -81,16 +82,18 @@
\fBint flushinp(void);\fR
.br
.SH DESCRIPTION
+.SS unctrl
+.PP
The \fBunctrl\fR routine returns a character string which is a printable
representation of the character \fIc\fR, ignoring attributes.
Control characters are displayed in the \fB^\fR\fIX\fR notation.
Printing characters are displayed as is.
The corresponding \fBwunctrl\fR returns a printable representation of
a wide character.
+.SS keyname/key_name
.PP
The \fBkeyname\fR routine returns a character string
corresponding to the key \fIc\fR:
-.RS 3
.bP
Printable characters are displayed as themselves,
e.g., a one-character string containing the key.
@@ -101,7 +104,7 @@ DEL (character 127) is displayed as \fB^?\fP.
.bP
Values above 128 are either meta characters
(if the screen has not been initialized,
-or if \fBmeta\fP has been called with a TRUE parameter),
+or if \fBmeta\fP(3X) has been called with a \fBTRUE\fP parameter),
shown in the \fBM\-\fR\fIX\fR notation,
or are displayed as themselves.
In the latter case, the values may not be printable;
@@ -111,20 +114,34 @@ Values above 256 may be the names of the names of function keys.
.bP
Otherwise (if there is no corresponding name) the function returns null,
to denote an error.
-X/Open also lists an "UNKNOWN KEY" return value, which some implementations
-return rather than null.
-.RE
+X/Open also lists an \*(``UNKNOWN KEY\*('' return value,
+which some implementations return rather than null.
.LP
The corresponding \fBkey_name\fR returns a character string corresponding
to the wide-character value \fIw\fR.
The two functions do not return the same set of strings;
the latter returns null where the former would display a meta character.
+.SS filter/nofilter
.PP
The \fBfilter\fR routine, if used, must be called before \fBinitscr\fR or
-\fBnewterm\fR are called. The effect is that, during those calls, \fBLINES\fR
-is set to 1; the capabilities \fBclear\fR, \fBcup\fR, \fBcud\fR, \fBcud1\fR,
-\fBcuu1\fR, \fBcuu\fR, \fBvpa\fR are disabled; and the \fBhome\fR string is
-set to the value of \fBcr\fR.
+\fBnewterm\fR are called.
+Calling \fBfilter\fP causes these changes in initialization:
+.bP
+\fBLINES\fR is set to 1;
+.bP
+the capabilities
+\fBclear\fR,
+\fBcud1\fR,
+\fBcud\fR,
+\fBcup\fR,
+\fBcuu1\fR,
+\fBcuu\fR,
+\fBvpa\fR
+are disabled;
+.bP
+the capability \fBed\fP is disabled if \fBbce\fP is set;
+.bP
+and the \fBhome\fR string is set to the value of \fBcr\fR.
.PP
The \fBnofilter\fP routine cancels the effect of a preceding \fBfilter\fP
call.
@@ -132,6 +149,7 @@ That allows the caller to initialize a screen on a different device,
using a different value of \fB$TERM\fP.
The limitation arises because the \fBfilter\fP routine modifies the
in-memory copy of the terminal information.
+.SS use_env
.PP
The \fBuse_env\fR routine, if used,
should be called before \fBinitscr\fR or
@@ -140,38 +158,40 @@ should be called before \fBinitscr\fR or
It modifies the way \fBncurses\fP treats environment variables
when determining the screen size.
.bP
-Normally ncurses looks first at the terminal database for the screen size.
+Normally \fBncurses\fP looks first at the terminal database for the screen size.
.IP
If \fBuse_env\fP was called with \fBFALSE\fP for parameter,
it stops here unless
-If \fBuse_tioctl\fP was also called with \fBTRUE\fP for parameter.
+\fBuse_tioctl\fP was also called with \fBTRUE\fP for parameter.
.bP
Then it asks for the screen size via operating system calls.
If successful,
it overrides the values from the terminal database.
.bP
Finally (unless \fBuse_env\fP was called with \fBFALSE\fP parameter),
-ncurses examines the \fBLINES\fR or \fBCOLUMNS\fR environment variables,
+\fBncurses\fP examines the \fBLINES\fR or \fBCOLUMNS\fR environment variables,
using a value in those to override the results
from the operating system or terminal database.
.IP
-Ncurses also updates the screen size in response to SIGWINCH,
+\fBNcurses\fP also updates the screen size in response to \fBSIGWINCH\fP,
unless overridden by the \fBLINES\fR or \fBCOLUMNS\fR environment variables,
+.SS use_tioctl
.PP
The \fBuse_tioctl\fR routine, if used,
should be called before \fBinitscr\fR or \fBnewterm\fR are called
(because those compute the screen size).
After \fBuse_tioctl\fR is called with \fBTRUE\fR as an argument,
-ncurses modifies the last step in its computation of screen size as follows:
+\fBncurses\fP modifies the last step in its computation
+of screen size as follows:
.bP
checks if the \fBLINES\fR and \fBCOLUMNS\fR environment variables
are set to a number greater than zero.
.bP
-for each, ncurses updates the corresponding environment variable
+for each, \fBncurses\fP updates the corresponding environment variable
with the value that it has obtained via operating system call
or from the terminal database.
.bP
-ncurses re-fetches the value of the environment variables so that
+\fBncurses\fP re-fetches the value of the environment variables so that
it is still the environment variables which set the screen size.
.PP
The \fBuse_env\fP and \fBuse_tioctl\fP routines combine as
@@ -184,33 +204,58 @@ lw7 lw7 lw40.
\fIuse_env\fR/\fIuse_tioctl\fR/\fISummary\fR
TRUE/FALSE/T{
This is the default behavior.
-ncurses uses operating system calls
+\fBncurses\fP uses operating system calls
unless overridden by $LINES or $COLUMNS environment variables.
T}
TRUE/TRUE/T{
-ncurses updates $LINES and $COLUMNS based on operating system calls.
+\fBncurses\fP updates $LINES and $COLUMNS based on operating system calls.
T}
FALSE/TRUE/T{
-ncurses ignores $LINES and $COLUMNS, uses operating system calls to obtain size.
+\fBncurses\fP ignores $LINES and $COLUMNS,
+uses operating system calls to obtain size.
T}
FALSE/FALSE/T{
-ncurses relies on the terminal database to determine size.
+\fBncurses\fP relies on the terminal database to determine size.
T}
.TE
+.SS putwin/getwin
.PP
-The \fBputwin\fR routine writes all data associated with window \fIwin\fR into
-the file to which \fIfilep\fR points. This information can be later retrieved
+The \fBputwin\fR routine writes all data associated
+with window (or pad) \fIwin\fR into
+the file to which \fIfilep\fR points.
+This information can be later retrieved
using the \fBgetwin\fR function.
.PP
The \fBgetwin\fR routine reads window related data stored in the file by
-\fBputwin\fR. The routine then creates and initializes a new window using that
-data. It returns a pointer to the new window.
+\fBputwin\fR.
+The routine then creates and initializes a new window using that
+data.
+It returns a pointer to the new window.
+There are a few caveats:
+.bP
+the data written is a copy of the \fBWINDOW\fP structure,
+and its associated character cells.
+The format differs between the wide-character (\fBncursesw\fP) and
+non-wide (\fBncurses\fP) libraries.
+You can transfer data between the two, however.
+.bP
+the retrieved window is always created as a top-level window (or pad),
+rather than a subwindow.
+.bP
+the window's character cells contain the color pair \fIvalue\fP,
+but not the actual color \fInumbers\fP.
+If cells in the retrieved window use color pairs which have not been
+created in the application using \fBinit_pair\fP,
+they will not be colored when the window is refreshed.
+.SS delay_output
.PP
The \fBdelay_output\fR routine inserts an \fIms\fR millisecond pause
-in output. This routine should not be used extensively because
+in output.
+This routine should not be used extensively because
padding characters are used rather than a CPU pause.
If no padding character is specified,
this uses \fBnapms\fR to perform the delay.
+.SS flushinp
.PP
The \fBflushinp\fR routine throws away any typeahead that has been typed by the
user and has not yet been read by the program.
@@ -228,18 +273,71 @@ In this implementation
\fBflushinp\fR
returns an error if the terminal was not initialized.
.TP 5
-\fBmeta\fR
-returns an error if the terminal was not initialized.
-.TP 5
\fBputwin\fP
returns an error if the associated \fBfwrite\fP calls return an error.
.RE
.SH PORTABILITY
+.SS filter
+.PP
+The SVr4 documentation describes the action of \fBfilter\fR only in the vaguest
+terms.
+The description here is adapted from the XSI Curses standard (which
+erroneously fails to describe the disabling of \fBcuu\fR).
+.SS keyname
+.PP
+The \fBkeyname\fP function may return the names of user-defined
+string capabilities which are defined in the terminfo entry via the \fB\-x\fP
+option of \fB@TIC@\fP.
+This implementation automatically assigns at run-time keycodes to
+user-defined strings which begin with \*(``k\*(''.
+The keycodes start at KEY_MAX, but are not guaranteed to be
+the same value for different runs because user-defined codes are
+merged from all terminal descriptions which have been loaded.
+The \fBuse_extended_names\fP(3X) function controls whether this data is
+loaded when the terminal description is read by the library.
+.SS nofilter/use_tioctl
+.PP
+The \fBnofilter\fP and \fBuse_tioctl\fP routines are specific to \fBncurses\fP.
+They were not supported on Version 7, BSD or System V implementations.
+It is recommended that any code depending on \fBncurses\fP extensions
+be conditioned using NCURSES_VERSION.
+.SS putwin/getwin
+.PP
+The \fBputwin\fP and \fBgetwin\fP functions have several issues with
+portability:
+.bP
+The files written and read by these functions
+use an implementation-specific format.
+Although the format is an obvious target for standardization,
+it has been overlooked.
+.IP
+Interestingly enough, according to the copyright dates in Solaris source,
+the functions (along with \fBscr_init\fP, etc.) originated with
+the University of California, Berkeley (in 1982)
+and were later (in 1988) incorporated into SVr4.
+Oddly, there are no such functions in the 4.3BSD curses sources.
+.bP
+Most implementations simply dump the binary \fBWINDOW\fP structure to the file.
+These include SVr4 curses, NetBSD and PDCurses,
+as well as older \fBncurses\fP versions.
+This implementation
+(as well as the X/Open variant of Solaris curses, dated 1995)
+uses textual dumps.
+.IP
+The implementations which use binary dumps use block-I/O
+(the \fBfwrite\fP and \fBfread\fP functions).
+Those that use textual dumps use buffered-I/O.
+A few applications may happen to write extra data in the file using
+these functions.
+Doing that can run into problems mixing block- and buffered-I/O.
+This implementation reduces the problem on writes by flushing the output.
+However, reading from a file written using mixed schemes may not be successful.
+.SS unctrl/wunctrl
+.PP
The XSI Curses standard, Issue 4 describes these functions.
It states that \fBunctrl\fR and \fBwunctrl\fR will return a null pointer if
unsuccessful, but does not define any error conditions.
This implementation checks for three cases:
-.RS 3
.bP
the parameter is a 7-bit US\-ASCII code.
This is the case that X/Open Curses documented.
@@ -258,17 +356,13 @@ and returns the \*(``~@\*('', etc., values in that case.
.bP
parameter values outside the 0 to 255 range.
\fBunctrl\fP returns a null pointer.
-.RE
-.PP
-The SVr4 documentation describes the action of \fBfilter\fR only in the vaguest
-terms. The description here is adapted from the XSI Curses standard (which
-erroneously fails to describe the disabling of \fBcuu\fR).
.PP
The strings returned by \fBunctrl\fR in this implementation are determined
at compile time,
-showing C1 controls from the upper-128 codes with a `~' prefix rather than `^'.
+showing C1 controls from the upper-128 codes
+with a \*(``~\*('' prefix rather than \*(``^\*(''.
Other implementations have different conventions.
-For example, they may show both sets of control characters with `^',
+For example, they may show both sets of control characters with \*(``^\*('',
and strip the parameter to 7 bits.
Or they may ignore C1 controls and treat all of the upper-128 codes as
printable.
@@ -277,37 +371,37 @@ locale.
The \fBuse_legacy_coding\fP function allows the caller to
change the output of \fBunctrl\fP.
.PP
-Likewise, the \fBmeta\fP function allows the caller to change the
+Likewise, the \fBmeta\fP(3X) function allows the caller to change the
output of \fBkeyname\fP, i.e.,
-it determines whether to use the `M\-' prefix
+it determines whether to use the \*(``M\-\*('' prefix
for \*(``meta\*('' keys (codes in the range 128 to 255).
Both \fBuse_legacy_coding\fP and \fBmeta\fP succeed only after
-curses is initialized.
+curses is initialized.
X/Open Curses does not document the treatment of codes 128 to 159.
When treating them as \*(``meta\*('' keys
(or if \fBkeyname\fP is called before initializing curses),
this implementation returns strings \*(``M\-^@\*('', \*(``M\-^A\*('', etc.
.PP
-The \fBkeyname\fP function may return the names of user-defined
-string capabilities which are defined in the terminfo entry via the \fB\-x\fP
-option of \fB@TIC@\fP.
-This implementation automatically assigns at run-time keycodes to
-user-defined strings which begin with "k".
-The keycodes start at KEY_MAX, but are not guaranteed to be
-the same value for different runs because user-defined codes are
-merged from all terminal descriptions which have been loaded.
-The \fBuse_extended_names\fP function controls whether this data is
-loaded when the terminal description is read by the library.
+X/Open Curses documents \fBunctrl\fP as declared in \fB<unctrl.h>\fP,
+which \fBncurses\fP does.
+However, \fBncurses\fP' \fB<curses.h>\fP includes \fB<unctrl.h>\fP,
+matching the behavior of SVr4 curses.
+Other implementations may not do that.
+.SS use_env/use_tioctl
.PP
-The \fBnofilter\fP and \fBuse_tioctl\fP 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 ncurses extensions
-be conditioned using NCURSES_VERSION.
+If \fBncurses\fP is configured to provide the sp-functions extension,
+the state of \fBuse_env\fP and \fBuse_tioctl\fP may be updated before
+creating each \fIscreen\fP rather than once only
+(\fBcurs_sp_funcs\fR(3X)).
+This feature of \fBuse_env\fP
+is not provided by other implementation of curses.
.SH SEE ALSO
\fBlegacy_coding\fR(3X),
\fBcurses\fR(3X),
\fBcurs_initscr\fR(3X),
+\fBcurs_inopts\fR(3X),
\fBcurs_kernel\fR(3X),
\fBcurs_scr_dump\fR(3X),
+\fBcurs_sp_funcs\fR(3X),
\fBcurs_variables\fR(3X),
\fBlegacy_coding\fR(3X).
diff --git a/man/curs_variables.3x b/man/curs_variables.3x
index efbe192a4882..5d7de8c61553 100644
--- a/man/curs_variables.3x
+++ b/man/curs_variables.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2010,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 2010-2018,2019 Free 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,10 +26,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_variables.3x,v 1.6 2013/12/21 18:41:32 tom Exp $
+.\" $Id: curs_variables.3x,v 1.13 2019/06/01 22:51:21 tom Exp $
.TH curs_variables 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.ds n 5
.na
@@ -99,7 +104,7 @@ This variable holds the number of milliseconds to wait after reading an
escape character,
to distinguish between an individual escape character entered on the
keyboard from escape sequences sent by cursor- and function-keys
-(see curses(3X).
+(see curses(3X)).
.SS LINES
After initializing curses, this variable contains the height of the screen,
i.e., the number of lines.
@@ -110,9 +115,18 @@ when converting a tab character to spaces as it adds the tab to a window
.SS The Current Screen
This implementation of curses uses a special window \fBcurscr\fP to
record its updates to the terminal screen.
+.PP
+This is referred to as the \*(``physical screen\*('' in the
+\fBcurs_refresh\fR(3X) and
+\fBcurs_outopts\fR(3X) manual pages.
.SS The New Screen
This implementation of curses uses a special window \fBnewscr\fP to
hold updates to the terminal screen before applying them to \fBcurscr\fP.
+.PP
+This is referred to as the \*(``virtual screen\*('' in the
+\fBcurs_kernel\fR(3X),
+\fBcurs_refresh\fR(3X) and
+\fBcurs_outopts\fR(3X) manual pages.
.SS The Standard Screen
Upon initializing curses,
a default window called \fBstdscr\fP,
@@ -125,8 +139,45 @@ or \fBnewterm\fR(3X).
If \fBcurses\fP is configured to use separate curses/terminfo libraries,
most of these variables reside in the curses library.
.SH PORTABILITY
-ESCDELAY and TABSIZE are extensions,
-not provided in most other implementations of curses.
+\fBTABSIZE\fP is a feature of SVr4 curses
+which is not documented by X/Open curses.
+.bP
+In SVr4 curses, \fBTABSIZE\fP is initially set from the terminal description's
+\fBinit_tabs\fP capability.
+After that, it can be altered by the applications using SVr4 curses.
+.IP
+SVr4 curses uses the current value of \fBTABSIZE\fP to
+compute the position of tabstops for updating both
+the virtual screen with \fBaddch\fP(3X) as well as
+the physical screen with \fBmvcur\fP(3X).
+.bP
+This implementation uses the current value of \fBTABSIZE\fP only for
+updating the virtual screen.
+It uses the terminal description's \fBit\fP (\fBinit_tabs\fP) capability for
+computing hardware tabs (i.e., tab stops on the physical screen).
+.bP
+Other implementations differ.
+For instance, NetBSD curses allows \fBTABSIZE\fP to be set through
+an environment variable.
+This implementation does not.
+.IP
+NetBSD curses does not support hardware tabs;
+it uses the \fBinit_tabs\fP capability and the \fBTABSIZE\fP variable
+only for updating the virtual screen.
+.PP
+\fBESCDELAY\fP is an extension in AIX curses:
+.bP
+In AIX, the units for \fBESCDELAY\fP are \fIfifths\fP of a millisecond.
+.bP
+The default value for AIX's \fBESCDELAY\fP is 0.1 seconds.
+.bP
+AIX also enforces a limit of 10,000 seconds for \fBESCDELAY\fP;
+this implementation currently has no upper limit.
+.PP
+This implementation has long used \fBESCDELAY\fP with units of milliseconds,
+making it impossible to be completely compatible with AIX.
+Likewise, most users have either decided to override the value,
+or rely upon its default value.
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_opaque\fR(3X),
diff --git a/man/curs_window.3x b/man/curs_window.3x
index 9ef41ff523d1..f53f3d778385 100644
--- a/man/curs_window.3x
+++ b/man/curs_window.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2015,2016 Free 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_window.3x,v 1.17 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_window.3x,v 1.20 2016/10/15 17:26:09 tom Exp $
.TH curs_window 3X ""
.na
.hy 0
@@ -47,81 +47,110 @@
.SH SYNOPSIS
\fB#include <curses.h>\fR
.sp
-\fBWINDOW *newwin(int nlines, int ncols, int begin_y,\fR
- \fBint begin_x);\fR
+\fBWINDOW *newwin(\fR
+ \fBint \fP\fInlines\fP\fB, int \fP\fIncols\fP\fB,\fR
+ \fBint \fP\fIbegin_y\fP\fB, int \fP\fIbegin_x\fP\fB);\fR
.br
-\fBint delwin(WINDOW *win);\fR
+\fBint delwin(WINDOW *\fP\fIwin\fP\fB);\fR
.br
-\fBint mvwin(WINDOW *win, int y, int x);\fR
+\fBint mvwin(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR
.br
-\fBWINDOW *subwin(WINDOW *orig, int nlines, int ncols,\fR
- \fBint begin_y, int begin_x);\fR
+\fBWINDOW *subwin(WINDOW *\fP\fIorig\fP\fB,\fR
+ \fBint \fP\fInlines\fP\fB, int \fP\fIncols\fP\fB,\fR
+ \fBint \fP\fIbegin_y\fP\fB, int \fP\fIbegin_x\fP\fB);\fR
.br
-\fBWINDOW *derwin(WINDOW *orig, int nlines, int ncols,\fR
- \fBint begin_y, int begin_x);\fR
+\fBWINDOW *derwin(WINDOW *\fP\fIorig\fP\fB,\fR
+ \fBint \fP\fInlines\fP\fB, int \fP\fIncols\fP\fB,\fR
+ \fBint \fP\fIbegin_y\fP\fB, int \fP\fIbegin_x\fP\fB);\fR
.br
-\fBint mvderwin(WINDOW *win, int par_y, int par_x);\fR
+\fBint mvderwin(WINDOW *\fP\fIwin\fP\fB, int \fP\fIpar_y\fP\fB, int \fP\fIpar_x\fP\fB);\fR
.br
-\fBWINDOW *dupwin(WINDOW *win);\fR
+\fBWINDOW *dupwin(WINDOW *\fP\fIwin\fP\fB);\fR
.br
-\fBvoid wsyncup(WINDOW *win);\fR
+\fBvoid wsyncup(WINDOW *\fP\fIwin\fP\fB);\fR
.br
-\fBint syncok(WINDOW *win, bool bf);\fR
+\fBint syncok(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR
.br
-\fBvoid wcursyncup(WINDOW *win);\fR
+\fBvoid wcursyncup(WINDOW *\fP\fIwin\fP\fB);\fR
.br
-\fBvoid wsyncdown(WINDOW *win);\fR
+\fBvoid wsyncdown(WINDOW *\fP\fIwin\fP\fB);\fR
.br
.SH DESCRIPTION
+.SS newwin
Calling \fBnewwin\fR creates and returns a pointer to a new window with the
-given number of lines and columns. The upper left-hand corner of the window is
-at line \fIbegin\fR_\fIy\fR, column \fIbegin\fR_\fIx\fR. If either
-\fInlines\fR or \fIncols\fR is zero, they default to \fBLINES \-\fR
-\fIbegin\fR_\fIy\fR and \fBCOLS \-\fR \fIbegin\fR_\fIx\fR. A new full-screen
-window is created by calling \fBnewwin(0,0,0,0)\fR.
+given number of lines and columns.
+The upper left-hand corner of the window is
+at
+.RS
+line \fIbegin\fR_\fIy\fR,
+.br
+column \fIbegin\fR_\fIx\fR
+.RE
+.PP
+If either
+\fInlines\fR or \fIncols\fR is zero, they default to
+.RS
+\fBLINES \-\fR \fIbegin\fR_\fIy\fR and
+.br
+\fBCOLS \-\fR \fIbegin\fR_\fIx\fR.
+.RE
+.PP
+A new full-screen window is created by calling \fBnewwin(0,0,0,0)\fR.
+.SS delwin
.PP
Calling \fBdelwin\fR deletes the named window, freeing all memory
associated with it (it does not actually erase the window's screen
-image). Subwindows must be deleted before the main window can be
-deleted.
+image).
+Subwindows must be deleted before the main window can be deleted.
+.SS mvwin
.PP
Calling \fBmvwin\fR moves the window so that the upper left-hand
-corner is at position (\fIx\fR, \fIy\fR). 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.
+corner is at position (\fIx\fR, \fIy\fR).
+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.
+.SS subwin
.PP
Calling \fBsubwin\fR creates and returns a pointer to a new window
-with the given number of lines, \fInlines\fR, and columns,
-\fIncols\fR. The window is at position (\fIbegin\fR_\fIy\fR,
-\fIbegin\fR_\fIx\fR) on the screen. (This position is relative to the
-screen, and not to the window \fIorig\fR.) The window is made in the
-middle of the window \fIorig\fR, so that changes made to one window
-will affect both windows. The subwindow shares memory with the window
-\fIorig\fR. When using this routine, it is necessary to call
+with the given number of lines, \fInlines\fR, and columns, \fIncols\fR.
+The window is at position (\fIbegin\fR_\fIy\fR,
+\fIbegin\fR_\fIx\fR) on the screen.
+The subwindow shares memory with the window \fIorig\fR,
+so that changes made to one window
+will affect both windows.
+When using this routine, it is necessary to call
\fBtouchwin\fR or \fBtouchline\fR on \fIorig\fR before calling
\fBwrefresh\fR on the subwindow.
+.SS derwin
.PP
Calling \fBderwin\fR is the same as calling \fBsubwin,\fR except that
\fIbegin\fR_\fIy\fR and \fIbegin\fR_\fIx\fR are relative to the origin
-of the window \fIorig\fR rather than the screen. There is no
-difference between the subwindows and the derived windows.
+of the window \fIorig\fR rather than the screen.
+There is no difference between the subwindows and the derived windows.
.PP
Calling \fBmvderwin\fR 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
+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.
+.SS dupwin
.PP
Calling \fBdupwin\fR creates an exact duplicate of the window \fIwin\fR.
+.SS wsyncup
.PP
Calling \fBwsyncup\fR touches all locations in ancestors of \fIwin\fR that are
-changed in \fIwin\fR. If \fBsyncok\fR is called with second argument
+changed in \fIwin\fR.
+If \fBsyncok\fR is called with second argument
\fBTRUE\fR then \fBwsyncup\fR is called automatically whenever there is a
change in the window.
+.SS wsyncdown
.PP
The \fBwsyncdown\fR routine touches each location in \fIwin\fR that has been
-touched in any of its ancestor windows. This routine is called by
+touched in any of its ancestor windows.
+This routine is called by
\fBwrefresh\fR, so it should almost never be necessary to call it manually.
+.SS wcursyncup
.PP
The routine \fBwcursyncup\fR updates the current cursor position of all the
ancestors of the window to reflect the current cursor position of the
@@ -135,11 +164,18 @@ Routines that return pointers return \fBNULL\fR on error.
.PP
X/Open defines no error conditions.
In this implementation
-.RS
.TP 5
\fBdelwin\fR
returns an error if the window pointer is null, or
if the window is the parent of another window.
+.TP 5
+\fBderwin\fP
+returns an error if the parent window pointer is null, or
+if any of its ordinates or dimensions is negative, or
+if the resulting window does not fit inside the parent window.
+.TP 5
+\fBdupwin\fP
+returns an error if the window pointer is null.
.IP
This implementation also maintains a list of windows,
and checks that the pointer passed to \fBdelwin\fP is one that
@@ -156,26 +192,40 @@ if the window pointer is null, or
if the window is really a pad, or
if some part of the window would be placed off-screen.
.TP 5
+\fBnewwin\fP
+will fail if either of its beginning ordinates is negative, or
+if either the number of lines or columns is negative.
+.TP 5
\fBsyncok\fP
returns an error
if the window pointer is null.
-.RE
+.TP 5
+\fBsubwin\fP
+returns an error if the parent window pointer is null, or
+if any of its ordinates or dimensions is negative, or
+if the resulting window does not fit inside the parent window.
+.PP
+The functions which return a window pointer
+may also fail if there is insufficient memory for its data structures.
+Any of these functions will fail if the screen has not been initialized,
+i.e., with \fBinitscr\fP or \fBnewterm\fP.
.SH NOTES
If many small changes are made to the window, the \fBwsyncup\fR option could
degrade performance.
.PP
Note that \fBsyncok\fR may be a macro.
.SH BUGS
-The subwindow functions (\fIsubwin\fR, \fIderwin\fR, \fImvderwin\fR,
+The subwindow functions (\fBsubwin\fR, \fBderwin\fR, \fBmvderwin\fR,
\fBwsyncup\fR, \fBwsyncdown\fR, \fBwcursyncup\fR, \fBsyncok\fR) are flaky,
incompletely implemented, and not well tested.
.PP
The System V curses documentation is very unclear about what \fBwsyncup\fR
-and \fBwsyncdown\fR actually do. It seems to imply that they are only
+and \fBwsyncdown\fR 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 \fBcurses\fR implementation,
-is patterned on the XPG4 curses standard. The weaker XPG4 spec may result
-in slower updates.
+is patterned on the XPG4 curses standard.
+The weaker XPG4 spec may result in slower updates.
.SH PORTABILITY
The XSI Curses standard, Issue 4 describes these functions.
.SH SEE ALSO
diff --git a/man/default_colors.3x b/man/default_colors.3x
index 0b85598eea45..d77022931e5b 100644
--- a/man/default_colors.3x
+++ b/man/default_colors.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -28,8 +28,12 @@
.\"
.\" Author: Thomas E. Dickey 1997,1999,2000,2005
.\"
-.\" $Id: default_colors.3x,v 1.23 2011/01/03 21:52:27 Tim.van.der.Molen Exp $
+.\" $Id: default_colors.3x,v 1.28 2019/11/30 21:06:30 tom Exp $
.TH default_colors 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.SH NAME
\fBuse_default_colors\fR,
\fBassume_default_colors\fR \- use terminal's default colors
@@ -40,10 +44,7 @@
.br
\fBint assume_default_colors(int fg, int bg);\fP
.SH DESCRIPTION
-The
-.I use_default_colors()
-and
-.I assume_default_colors()
+The \fBuse_default_colors\fP and \fBassume_default_colors\fP
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
@@ -55,21 +56,21 @@ 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
+These \*(``color ls\*('' programs do not necessarily modify the background color,
+typically using only the \fBsetaf\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()
+The first function, \fBuse_default_colors\fP
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
+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()
+The other, \fBassume_default_colors\fP
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.
@@ -85,34 +86,36 @@ The following are equivalent:
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.
+successful call of \fBuse_default_colors\fP or \fBassume_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()
+.B use_default_colors
or
-.I assume_default_colors()
+.B assume_default_colors
ncurses will paint a white foreground (text) with black background
for color pair 0.
.SH RETURN VALUE
-These functions return the integer \fBERR\fP upon failure and \fBOK\fP on success.
+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 not found, this causes an
+the \fBorig_pair\fP or \fBorig_colors\fP capability.
+If the \fBinitialize_pair\fP capability is not found, this causes an
error as well.
.SH NOTES
Associated with this extension, the \fBinit_pair\fR function accepts
negative arguments to specify default foreground or background colors.
.PP
-The \fIuse_default_colors()\fP function was added to support \fIded\fP.
+The \fBuse_default_colors\fP function was added to support \fIded\fP.
This is a full-screen application which uses curses to manage only part
-of the screen. The bottom portion of the screen, which is of adjustable
+of the screen.
+The bottom portion of the screen, which is of adjustable
size, is left uncolored to display the results from shell commands.
The top portion of the screen colors filenames using a scheme like the
-"color ls" programs.
+\*(``color ls\*('' programs.
Attempting to manage the background color of the screen for this application
would give unsatisfactory results for a variety of reasons.
This extension was devised after
@@ -120,15 +123,17 @@ noting that color xterm (and similar programs) provides a background color
which does not necessarily correspond to any of the ANSI colors.
While a special terminfo entry could be constructed using nine colors,
there was no mechanism provided within curses to account for the related
-\fIorig_pair\fP and \fIback_color_erase\fP capabilities.
+\fBorig_pair\fP and \fBback_color_erase\fP capabilities.
.PP
-The \fIassume_default_colors()\fP function was added to solve
+The \fBassume_default_colors\fP function was added to solve
a different problem: support for applications which would use
environment variables and other configuration to bypass curses'
notion of the terminal's default colors, setting specific values.
.SH PORTABILITY
-These routines are specific to ncurses. They were not supported on
-Version 7, BSD or System V implementations. It is recommended that
+These routines are specific to ncurses.
+They were not supported on
+Version 7, BSD or System V implementations.
+It is recommended that
any code depending on them be conditioned using NCURSES_VERSION.
.SH SEE ALSO
\fBcurs_color\fR(3X),
diff --git a/man/define_key.3x b/man/define_key.3x
index 18eaff87cb11..e93661fcb32a 100644
--- a/man/define_key.3x
+++ b/man/define_key.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -28,7 +28,7 @@
.\"
.\" Author: Thomas E. Dickey 1997
.\"
-.\" $Id: define_key.3x,v 1.14 2010/12/04 18:49:20 tom Exp $
+.\" $Id: define_key.3x,v 1.16 2018/07/28 21:34:56 tom Exp $
.TH define_key 3X ""
.SH NAME
\fBdefine_key\fP \- define a keycode
@@ -48,13 +48,15 @@ Similarly, if the given keycode is negative or zero, any existing string
for the given definition is removed.
.SH RETURN VALUE
The keycode must be greater than zero, and the string non-null,
-otherwise ERR is returned.
-ERR may also be returned if there is insufficient memory to allocate the
+otherwise \fBERR\fP is returned.
+\fBERR\fP may also be returned if there is insufficient memory to allocate the
data to store the definition.
-If no error is detected, OK is returned.
+If no error is detected, \fBOK\fP is returned.
.SH PORTABILITY
-These routines are specific to ncurses. They were not supported on
-Version 7, BSD or System V implementations. It is recommended that
+These routines are specific to ncurses.
+They were not supported on
+Version 7, BSD or System V implementations.
+It is recommended that
any code depending on them be conditioned using NCURSES_VERSION.
.SH SEE ALSO
\fBkeyok\fR(3X),
diff --git a/man/form.3x b/man/form.3x
index 775c8331c958..32583fe75d3f 100644
--- a/man/form.3x
+++ b/man/form.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +27,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form.3x,v 1.24 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form.3x,v 1.33 2019/11/30 20:51:36 tom Exp $
.TH form 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.SH NAME
\fBform\fR \- curses extension for programming forms
.SH SYNOPSIS
@@ -36,7 +44,8 @@
.br
.SH DESCRIPTION
The \fBform\fR library provides terminal-independent facilities for composing
-form screens on character-cell terminals. The library includes: field
+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 interaction with the
user.
@@ -56,10 +65,12 @@ before using any of these functions.
.
.SS Current Default Values for Field Attributes
.
-The \fBform\fR library maintains a default value for field attributes. You
+The \fBform\fR library maintains a default value for field attributes.
+You
can get or set this default by calling the appropriate \fBset_\fR
or retrieval
-routine with a \fBNULL\fR field pointer. Changing this default with a
+routine with a \fBNULL\fR field pointer.
+Changing this default with a
\fBset_\fR function affects future field creations, but does not change the
rendering of fields already created.
.
@@ -96,6 +107,7 @@ field_term \fBform_hook\fR(3X)
field_type \fBform_field_validation\fR(3X)
field_userptr \fBform_field_userptr\fR(3X)
form_driver \fBform_driver\fR(3X)
+form_driver_w \fBform_driver\fR(3X)*
form_fields \fBform_field\fR(3X)
form_init \fBform_hook\fR(3X)
form_opts \fBform_opts\fR(3X)
@@ -145,6 +157,7 @@ set_form_userptr \fBform_userptr\fR(3X)
set_form_win \fBform_win\fR(3X)
set_max_field \fBform_field_buffer\fR(3X)
set_new_page \fBform_new_page\fR(3X)
+unfocus_current_field \fBform_page\fR(3X)
unpost_form \fBform_post\fR(3X)
.TE
.SH RETURN VALUE
@@ -185,26 +198,44 @@ The form is already posted.
The form driver could not process the request.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_UNKNOWN_COMMAND
The form driver code saw an unknown request code.
-.SH SEE ALSO
-\fBcurses\fR(3X) and related pages whose names begin "form_" for detailed
-descriptions of the entry points.
.SH NOTES
The header file \fB<form.h>\fR automatically includes the header files
\fB<curses.h>\fR and \fB<eti.h>\fR.
.PP
In your library list, libform.a should be before libncurses.a; that is,
-you want to say `\-lform \-lncurses', not the other way around (which would
-give you a link error using most linkers).
+you want to say \*(``\-lform \-lncurses\*('', not the other way around
+(which would give you a link error when using static libraries).
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
+.PP
+The menu facility was documented in SVr4.2 in
+\fICharacter User Interface Programming (UNIX SVR4.2)\fP.
+.PP
+It is not part of X/Open Curses.
+.PP
+Aside from ncurses, there are few implementations:
+.bP
+systems based on SVr4 source code, e.g., Solaris.
+.bP
+NetBSD curses.
+.PP
+A few functions in this implementation are extensions added for ncurses,
+but not provided by other implementations, e.g.,
+\fBform_driver_w\fP,
+\fBunfocus_current_field\fP.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for ncurses by Eric
+Juergen Pfeifer.
+Manual pages and adaptation for ncurses by Eric
S. Raymond.
.SH SEE ALSO
+\fBcurses\fR(3X) and related pages whose names begin \*(``form_\*('' for detailed
+descriptions of the entry points.
+.PP
This describes \fBncurses\fR
version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
diff --git a/man/form_cursor.3x b/man/form_cursor.3x
index ed4b420d29ee..b0073e1fe232 100644
--- a/man/form_cursor.3x
+++ b/man/form_cursor.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_cursor.3x,v 1.8 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_cursor.3x,v 1.11 2019/01/20 20:31:42 tom Exp $
.TH form_cursor 3X ""
.SH NAME
-\fBform_cursor\fR \- position a form window cursor
+\fBpos_form_cursor\fR \- position a form window cursor
.SH SYNOPSIS
\fB#include <form.h>\fR
.br
@@ -38,7 +38,8 @@ int pos_form_cursor(FORM *form);
.br
.SH DESCRIPTION
The function \fBpos_form_cursor\fR restores the cursor to the position required
-for the forms driver to continue processing requests. This is useful after
+for the forms driver to continue processing requests.
+This is useful after
\fBcurses\fR routines have been called to do screen-painting in response to a
form operation.
.SH RETURN VALUE
@@ -54,7 +55,7 @@ Routine detected an incorrect or out-of-range argument.
The form has not been posted.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
@@ -62,8 +63,9 @@ System error occurred (see \fBerrno\fR).
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_data.3x b/man/form_data.3x
index ed39bf5a3ed5..33c5e6ecaac0 100644
--- a/man/form_data.3x
+++ b/man/form_data.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2015,2018 Free 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,10 +27,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_data.3x,v 1.10 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_data.3x,v 1.12 2018/07/28 21:34:06 tom Exp $
.TH form_data 3X ""
.SH NAME
-\fBform_data\fR \- test for off-screen data in given forms
+\fBdata_ahead\fP,
+\fBdata_behind\fR \- test for off-screen data in given forms
.SH SYNOPSIS
\fB#include <form.h>\fR
.br
@@ -40,18 +41,21 @@ bool data_behind(const FORM *form);
.br
.SH DESCRIPTION
The function \fBdata_ahead\fR tests whether there is off-screen data
-ahead in the given form. It returns TRUE (1) or FALSE (0).
+ahead in the given form.
+It returns TRUE (1) or FALSE (0).
.PP
The function \fBdata_behind\fR tests whether there is off-screen data
-behind in the given form. It returns TRUE (1) or FALSE (0).
+behind in the given form.
+It returns TRUE (1) or FALSE (0).
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
.SH NOTES
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_driver.3x b/man/form_driver.3x
index 67a986b006ba..3b8308a92748 100644
--- a/man/form_driver.3x
+++ b/man/form_driver.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,215 +26,146 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_driver.3x,v 1.22 2010/12/04 18:38:55 tom Exp $
+.\" $Id: form_driver.3x,v 1.32 2019/01/20 20:31:42 tom Exp $
.TH form_driver 3X ""
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.SH NAME
-\fBform_driver\fR \- command-processing loop of the form system
+\fBform_driver\fR,
+\fBform_driver_w\fR \- command-processing loop of the form system
.SH SYNOPSIS
\fB#include <form.h>\fR
.br
-int form_driver(FORM *form, int c);
+\fBint form_driver(FORM *\fP\fIform\fP\fB, int \fP\fIc\fP\fB);\fP
+.br
+\fBint form_driver_w(FORM *\fP\fIform\fP\fB, int \fP\fIc\fP\fB, wchar_t \fP\fIwch\fP\fB);\fP
.br
.SH DESCRIPTION
+.SS form_driver
Once a form has been posted (displayed), you should funnel input events to it
through \fBform_driver\fR. This routine has three major input cases:
.bP
The input is a form navigation request.
Navigation request codes are constants defined in \fB<form.h>\fP,
-which are distinct from the key- and character codes returned by \fBwgetch\fP.
+which are distinct from the key- and character codes returned
+by \fBwgetch\fP(3X).
.bP
The input is a printable character.
Printable characters (which must be positive, less than 256) are
checked according to the program's locale settings.
.bP
The input is the KEY_MOUSE special key associated with an mouse event.
+.SS form_driver_w
+.PP
+This extension simplifies the use of the forms library using wide characters.
+The input is either a key code (a request) or a wide character
+returned by \fBget_wch\fP(3X).
+The type must be passed as well,
+to enable the library to determine whether the parameter
+is a wide character or a request.
+.SS Form-driver requests
.PP
The form driver requests are as follows:
-.TP 5
-REQ_NEXT_PAGE
-Move to the next page.
-.TP 5
-REQ_PREV_PAGE
-Move to the previous page.
-.TP 5
-REQ_FIRST_PAGE
-Move to the first page.
-.TP 5
-REQ_LAST_PAGE
-Move to the last field.
-.sp
-.TP 5
-REQ_NEXT_FIELD
-Move to the next field.
-.TP 5
-REQ_PREV_FIELD
-Move to the previous field.
-.TP 5
-REQ_FIRST_FIELD
-Move to the first field.
-.TP 5
-REQ_LAST_FIELD
-Move to the last field.
-.TP 5
-REQ_SNEXT_FIELD
-Move to the sorted next field.
-.TP 5
-REQ_SPREV_FIELD
-Move to the sorted previous field.
-.TP 5
-REQ_SFIRST_FIELD
-Move to the sorted first field.
-.TP 5
-REQ_SLAST_FIELD
-Move to the sorted last field.
-.TP 5
-REQ_LEFT_FIELD
-Move left to a field.
-.TP 5
-REQ_RIGHT_FIELD
-Move right to a field.
-.TP 5
-REQ_UP_FIELD
-Move up to a field.
-.TP 5
-REQ_DOWN_FIELD
-Move down to a field.
-.sp
-.TP 5
-REQ_NEXT_CHAR
-Move to the next char.
-.TP 5
-REQ_PREV_CHAR
-Move to the previous char.
-.TP 5
-REQ_NEXT_LINE
-Move to the next line.
-.TP 5
-REQ_PREV_LINE
-Move to the previous line.
-.TP 5
-REQ_NEXT_WORD
-Move to the next word.
-.TP 5
-REQ_PREV_WORD
-Move to the previous word.
-.TP 5
-REQ_BEG_FIELD
-Move to the beginning of the field.
-.TP 5
-REQ_END_FIELD
-Move to the end of the field.
-.TP 5
-REQ_BEG_LINE
-Move to the beginning of the line.
-.TP 5
-REQ_END_LINE
-Move to the end of the line.
-.TP 5
-REQ_LEFT_CHAR
-Move left in the field.
-.TP 5
-REQ_RIGHT_CHAR
-Move right in the field.
-.TP 5
-REQ_UP_CHAR
-Move up in the field.
-.TP 5
-REQ_DOWN_CHAR
-Move down in the field.
-.sp
-.TP 5
-REQ_NEW_LINE
-Insert or overlay a new line.
-.TP 5
-REQ_INS_CHAR
-Insert a blank at the cursor.
-.TP 5
-REQ_INS_LINE
-Insert a blank line at the cursor.
-.TP 5
-REQ_DEL_CHAR
-Delete character at the cursor.
-.TP 5
-REQ_DEL_PREV
-Delete character before the cursor.
-.TP 5
-REQ_DEL_LINE
-Delete line at the cursor.
-.TP 5
-REQ_DEL_WORD
-Delete blank-delimited word at the cursor.
-.TP 5
-REQ_CLR_EOL
-Clear to end of line from cursor.
-.TP 5
-REQ_CLR_EOF
-Clear to end of field from cursor.
-.TP 5
-REQ_CLR_FIELD
-Clear the entire field.
-.TP 5
-REQ_OVL_MODE
-Enter overlay mode.
-.TP 5
-REQ_INS_MODE
-Enter insert mode.
-.sp
-.TP 5
-REQ_SCR_FLINE
-Scroll the field forward a line.
-.TP 5
-REQ_SCR_BLINE
-Scroll the field backward a line.
-.TP 5
-REQ_SCR_FPAGE
-Scroll the field forward a page.
-.TP 5
-REQ_SCR_BPAGE
-Scroll the field backward a page.
-.TP 5
-REQ_SCR_FHPAGE
-Scroll the field forward half a page.
-.TP 5
-REQ_SCR_BHPAGE
-Scroll the field backward half a page.
-.sp
-.TP 5
-REQ_SCR_FCHAR
-Scroll the field forward a character.
-.TP 5
-REQ_SCR_BCHAR
-Scroll the field backward a character.
-.TP 5
-REQ_SCR_HFLINE
-Horizontal scroll the field forward a line.
-.TP 5
-REQ_SCR_HBLINE
-Horizontal scroll the field backward a line.
-.TP 5
-REQ_SCR_HFHALF
-Horizontal scroll the field forward half a line.
-.TP 5
-REQ_SCR_HBHALF
-Horizontal scroll the field backward half a line.
-.sp
-.TP
-REQ_VALIDATION
-Validate field.
-.TP
-REQ_NEXT_CHOICE
-Display next field choice.
-.TP
-REQ_PREV_CHOICE
-Display previous field choice.
+.TS
+l l
+_ _
+l l.
+\fIName\fR \fIDescription\fR
+REQ_BEG_FIELD Move to the beginning of the field.
+REQ_BEG_LINE Move to the beginning of the line.
+REQ_CLR_EOF Clear to end of field from cursor.
+REQ_CLR_EOL Clear to end of line from cursor.
+REQ_CLR_FIELD Clear the entire field.
+REQ_DEL_CHAR Delete character at the cursor.
+REQ_DEL_LINE Delete line at the cursor.
+REQ_DEL_PREV Delete character before the cursor.
+REQ_DEL_WORD Delete blank-delimited word at the cursor.
+REQ_DOWN_CHAR Move down in the field.
+REQ_DOWN_FIELD Move down to a field.
+REQ_END_FIELD Move to the end of the field.
+REQ_END_LINE Move to the end of the line.
+REQ_FIRST_FIELD Move to the first field.
+REQ_FIRST_PAGE Move to the first page.
+REQ_INS_CHAR Insert a blank at the cursor.
+REQ_INS_LINE Insert a blank line at the cursor.
+REQ_INS_MODE Enter insert mode.
+REQ_LAST_FIELD Move to the last field.
+REQ_LAST_PAGE Move to the last field.
+REQ_LEFT_CHAR Move left in the field.
+REQ_LEFT_FIELD Move left to a field.
+REQ_NEW_LINE Insert or overlay a new line.
+REQ_NEXT_CHAR Move to the next char.
+REQ_NEXT_CHOICE Display next field choice.
+REQ_NEXT_FIELD Move to the next field.
+REQ_NEXT_LINE Move to the next line.
+REQ_NEXT_PAGE Move to the next page.
+REQ_NEXT_PAGE Move to the next page.
+REQ_NEXT_WORD Move to the next word.
+REQ_OVL_MODE Enter overlay mode.
+REQ_PREV_CHAR Move to the previous char.
+REQ_PREV_CHOICE Display previous field choice.
+REQ_PREV_FIELD Move to the previous field.
+REQ_PREV_LINE Move to the previous line.
+REQ_PREV_PAGE Move to the previous page.
+REQ_PREV_WORD Move to the previous word.
+REQ_RIGHT_CHAR Move right in the field.
+REQ_RIGHT_FIELD Move right to a field.
+REQ_SCR_BCHAR Scroll the field backward a character.
+REQ_SCR_BHPAGE Scroll the field backward half a page.
+REQ_SCR_BLINE Scroll the field backward a line.
+REQ_SCR_BPAGE Scroll the field backward a page.
+REQ_SCR_FCHAR Scroll the field forward a character.
+REQ_SCR_FHPAGE Scroll the field forward half a page.
+REQ_SCR_FLINE Scroll the field forward a line.
+REQ_SCR_FPAGE Scroll the field forward a page.
+REQ_SCR_HBHALF Horizontal scroll the field backward half a line.
+REQ_SCR_HBLINE Horizontal scroll the field backward a line.
+REQ_SCR_HFHALF Horizontal scroll the field forward half a line.
+REQ_SCR_HFLINE Horizontal scroll the field forward a line.
+REQ_SFIRST_FIELD Move to the sorted first field.
+REQ_SLAST_FIELD Move to the sorted last field.
+REQ_SNEXT_FIELD Move to the sorted next field.
+REQ_SPREV_FIELD Move to the sorted previous field.
+REQ_UP_CHAR Move up in the field.
+REQ_UP_FIELD Move up to a field.
+REQ_VALIDATION Validate field.
+.TE
.PP
If the second argument is a printable character, the driver places it
-in the current position in the current field. If it is one of the forms
+in the current position in the current field.
+If it is one of the forms
requests listed above, that request is executed.
-.SS MOUSE HANDLING
+.SS Field validation
+The form library makes updates to the window associated
+with form fields rather than directly to the field buffers.
+.PP
+The form driver provides low-level control over updates to the form fields.
+The form driver also provides for validating modified fields
+to ensure that the contents
+meet whatever constraints an application may attach using \fBset_field_type\fP.
+.PP
+.PP
+You can validate a field without making any changes to it using
+\fBREQ_VALIDATION\fP.
+The form driver also validates a field in these cases:
+.bP
+a call to \fBset_current_field\fP attempts to move to a different field.
+.bP
+a call to \fBset_current_page\fP attempts to move
+to a different page of the form.
+.bP
+a request attempts to move to a different field.
+.bP
+a request attempts to move to a different page of the form.
+.PP
+In each case, the move fails if the field is invalid.
+.PP
+If the modified field is valid, the form driver copies the modified
+data from the window associated with the field
+to the field buffer.
+.SS Mouse handling
.PP
If the second argument is the KEY_MOUSE special key, the associated
mouse event is translated into one of the above pre-defined requests.
@@ -279,9 +210,10 @@ If a translation
into a request was done, \fBform_driver\fR returns the result of this request.
.RE
.PP
-If you clicked outside the user window or the mouse event could not be translated
+If you clicked outside the user window
+or the mouse event could not be translated
into a form request an \fBE_REQUEST_DENIED\fR is returned.
-.SS APPLICATION-DEFINED COMMANDS
+.SS Application-defined commands
.PP
If the second argument is neither printable nor one of the above
pre-defined form requests, the driver assumes it is an application-specific
@@ -306,11 +238,14 @@ The form has not been posted.
.B E_INVALID_FIELD
Contents of field is invalid.
.TP 5
+.B E_NOT_CONNECTED
+No fields are connected to the form.
+.TP 5
.B E_REQUEST_DENIED
The form driver could not process the request.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_UNKNOWN_COMMAND
The form driver code saw an unknown request code.
@@ -318,14 +253,18 @@ The form driver code saw an unknown request code.
.SH SEE ALSO
\fBcurses\fR(3X),
\fBform\fR(3X),
+\fBform_field_buffer\fR(3X),
+\fBform_field_validation\fR(3X),
+\fBform_fieldtype\fR(3X),
\fBform_variables\fR(3X),
\fBgetch\fR(3X).
.SH NOTES
The header file \fB<form.h>\fR automatically includes the header files
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_field.3x b/man/form_field.3x
index 19a8b88ef984..cab42679f34f 100644
--- a/man/form_field.3x
+++ b/man/form_field.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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.3x,v 1.11 2012/11/03 23:03:59 tom Exp $
+.\" $Id: form_field.3x,v 1.13 2019/01/20 20:31:42 tom Exp $
.TH form_field 3X ""
.SH NAME
\fBform_field\fR \- make and break connections between fields and forms
@@ -75,18 +75,19 @@ The field is already connected to a form.
The form is already posted.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
.SH NOTES
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.PP
The SVr4 forms library documentation specifies the \fBfield_count\fR error value
as \-1 (which is the value of \fBERR\fR).
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_field_attributes.3x b/man/form_field_attributes.3x
index da3ad793876b..e8c114aeb684 100644
--- a/man/form_field_attributes.3x
+++ b/man/form_field_attributes.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +27,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_field_attributes.3x,v 1.12 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_field_attributes.3x,v 1.15 2019/11/30 21:01:57 tom Exp $
.TH form_field_attributes 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.SH NAME
\fBform_field_attributes\fR \- color and attribute control for form fields
.SH SYNOPSIS
@@ -49,16 +53,20 @@ int field_pad(const FIELD *field);
.SH DESCRIPTION
The function \fBset_field_fore\fR sets the foreground attribute of
\fIfield\fR. This is the highlight used to display the field contents. The
-function \fBfield_fore\fR returns the foreground attribute. The default is
+function \fBfield_fore\fR returns the foreground attribute.
+The default is
\fBA_STANDOUT\fR.
.PP
The function \fBset_field_back\fR sets the background attribute of
\fIform\fR. This is the highlight used to display the extent fields in the
-form. The function \fBfield_back\fR returns the background attribute. The
+form.
+The function \fBfield_back\fR returns the background attribute.
+The
default is \fBA_NORMAL\fR.
.PP
The function \fBset_field_pad\fR sets the character used to fill the field.
-The function \fBfield_pad\fR returns the given form's pad character. The
+The function \fBfield_pad\fR returns the given form's pad character.
+The
default is a blank.
.SH RETURN VALUE
These routines return one of the following:
@@ -70,17 +78,18 @@ The routine succeeded.
Routine detected an incorrect or out-of-range argument.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.
.SH SEE ALSO
-\fBcurses\fR(3X) and related pages whose names begin "form_" for detailed
+\fBcurses\fR(3X) and related pages whose names begin \*(``form_\*('' for detailed
descriptions of the entry points.
.SH NOTES
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_field_buffer.3x b/man/form_field_buffer.3x
index b4ff8cb7665d..93299186675f 100644
--- a/man/form_field_buffer.3x
+++ b/man/form_field_buffer.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_field_buffer.3x,v 1.19 2010/12/04 18:38:55 tom Exp $
+.\" $Id: form_field_buffer.3x,v 1.24 2019/11/30 21:02:22 tom Exp $
.TH form_field_buffer 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.SH NAME
\fBform_field_buffer\fR \- field buffer control
@@ -85,7 +90,8 @@ for long-term storage of form data.
.RE
.PP
The function \fBset_field_status\fR sets the associated status flag of
-\fIfield\fR; \fBfield_status\fR gets the current value. The status flag
+\fIfield\fR; \fBfield_status\fR gets the current value.
+The status flag
is set to a nonzero value whenever the field changes.
.PP
The function \fBset_max_field\fR sets the maximum size for a dynamic field.
@@ -108,12 +114,12 @@ The remaining routines return one of the following:
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.SH SEE ALSO
-\fBcurses\fR(3X) and related pages whose names begin "form_" for detailed
+\fBcurses\fR(3X) and related pages whose names begin \*(``form_\*('' for detailed
descriptions of the entry points.
.SH NOTES
The header file \fB<form.h>\fR automatically includes the header file
@@ -125,8 +131,13 @@ It will be freed on the next call to \fBfield_buffer\fP to return the
same buffer.
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
+.PP
+The \fBset_max_field\fP function checks for an ncurses extension
+\fBO_INPUT_FIELD\fP which allows a dynamic field to shrink if the new
+limit is smaller than the current field size.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_field_info.3x b/man/form_field_info.3x
index 6a1af6c3139b..51e8989af134 100644
--- a/man/form_field_info.3x
+++ b/man/form_field_info.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_field_info.3x,v 1.12 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_field_info.3x,v 1.16 2019/11/30 21:02:29 tom Exp $
.TH form_field_info 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.SH NAME
-\fBform_field_info\fR \- retrieve field characteristics
+\fBdynamic_field_info\fP,
+\fBfield_info\fR \- retrieve field characteristics
.SH SYNOPSIS
\fB#include <form.h>\fR
.br
@@ -41,12 +46,14 @@ int dynamic_field_info(const FIELD *field, int *rows, int *cols, int *max);
.br
.SH DESCRIPTION
The function \fBfield_info\fR returns the sizes and other attributes passed in
-to the field at its creation time. The attributes are: height, width, row of
+to the field at its creation time.
+The attributes are: height, width, row of
upper-left corner, column of upper-left corner, number off-screen rows, and
number of working buffers.
.PP
The function \fBdynamic_field_info\fR returns the actual size of the field, and
-its maximum possible size. If the field has no size limit, the location
+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 \fBO_STATIC\fR option with \fBfield_opts_off\fR.
@@ -57,23 +64,24 @@ These routines return one of the following:
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.SH SEE ALSO
-\fBcurses\fR(3X) and related pages whose names begin "form_" for detailed
+\fBcurses\fR(3X) and related pages whose names begin \*(``form_\*('' for detailed
descriptions of the entry points.
.SH NOTES
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+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.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_field_just.3x b/man/form_field_just.3x
index 2f223e91e7bf..ad8eb3d79f05 100644
--- a/man/form_field_just.3x
+++ b/man/form_field_just.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_field_just.3x,v 1.11 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_field_just.3x,v 1.15 2019/11/30 21:02:36 tom Exp $
.TH form_field_just 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.SH NAME
-\fBform_field_just\fR \- retrieve field characteristics
+\fBset_field_just\fR,
+\fBfield_just\fP \- retrieve field characteristics
.SH SYNOPSIS
\fB#include <form.h>\fR
.br
@@ -54,19 +59,20 @@ The function \fBset_field_just\fR returns one of the following:
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.SH SEE ALSO
-\fBcurses\fR(3X) and related pages whose names begin "form_" for detailed
+\fBcurses\fR(3X) and related pages whose names begin \*(``form_\*('' for detailed
descriptions of the entry points.
.SH NOTES
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_field_new.3x b/man/form_field_new.3x
index 23a351663688..38f34bbe6e39 100644
--- a/man/form_field_new.3x
+++ b/man/form_field_new.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2015,2018 Free 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,10 +27,13 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_field_new.3x,v 1.18 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_field_new.3x,v 1.20 2018/07/28 21:34:06 tom Exp $
.TH form_field_new 3X ""
.SH NAME
-\fBform_field_new\fR \- create and destroy form fields
+\fBnew_field\fR,
+\fBdup_field\fR,
+\fBlink_field\fR,
+\fBfree_field\fR \- create and destroy form fields
.SH SYNOPSIS
\fB#include <form.h>\fR
.br
@@ -49,14 +52,17 @@ The function \fBnew_field\fR allocates a new field and initializes 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.
.PP
-The function \fBdup_field\fR duplicates a field at a new location. Most
+The function \fBdup_field\fR duplicates a field at a new location.
+Most
attributes (including current contents, size, validation type, buffer count,
growth threshold, justification, foreground, background, pad character,
-options, and user pointer) are copied. Field status and the field page bit are
+options, and user pointer) are copied.
+Field status and the field page bit are
not copied.
.PP
The function \fBlink_field\fR acts like \fBdup_field\fR, but the new field
-shares buffers with its parent. Attribute data is separate.
+shares buffers with its parent.
+Attribute data is separate.
.PP
The function \fBfree_field\fR de-allocates storage associated with a field.
.SH RETURN VALUE
@@ -89,12 +95,13 @@ field is connected.
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.PP
It may be unwise to count on the set of attributes copied by
\fBdup_field\fR being portable; the System V forms library documents are
not very explicit about what gets copied and what does not.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_field_opts.3x b/man/form_field_opts.3x
index a33a0414d3e0..d1076722e6b7 100644
--- a/man/form_field_opts.3x
+++ b/man/form_field_opts.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,13 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_field_opts.3x,v 1.16 2010/12/04 18:41:07 tom Exp $
+.\" $Id: form_field_opts.3x,v 1.24 2019/01/20 20:19:03 tom Exp $
.TH form_field_opts 3X ""
.SH NAME
-\fBform_field_opts\fR \- set and get field options
+\fBset_field_opts\fP,
+\fBfield_opts_on\fP,
+\fBfield_opts_off\fP,
+\fBfield_opts\fP \- set and get field options
.SH SYNOPSIS
\fB#include <form.h>\fR
.br
@@ -54,42 +57,68 @@ others alone.
.PP
The function \fBfield_opts\fR returns the field's current option bits.
.PP
-The following options are defined (all are on by default):
-.TP 5
-O_VISIBLE
-The field is displayed. If this option is off, display of the field is
-suppressed.
+The following standard options are defined (all are on by default):
.TP 5
O_ACTIVE
-The field is visited during processing. If this option is off, the field will
-not be reachable by navigation keys. Please notice that an invisible field
+The field is visited during processing.
+If this option is off, the field will
+not be reachable by navigation keys.
+Please notice that an invisible field
appears to be inactive also.
.TP 5
-O_PUBLIC
-The field contents are displayed as data is entered.
-.TP 5
-O_EDIT
-The field can be edited.
-.TP 5
-O_WRAP
-Words that do not fit on a line are wrapped to the next line. Words are
-blank-separated.
+O_AUTOSKIP
+Skip to the next field when this one fills.
.TP 5
O_BLANK
The field is cleared whenever a character is entered at the first position.
.TP 5
-O_AUTOSKIP
-Skip to the next field when this one fills.
+O_EDIT
+The field can be edited.
.TP 5
O_NULLOK
Allow a blank field.
.TP 5
+O_PASSOK
+Validate field only if modified by user.
+.TP 5
+O_PUBLIC
+The field contents are displayed as data is entered.
+.TP 5
O_STATIC
Field buffers are fixed to field's original size.
Turn this option off to create a dynamic field.
.TP 5
-O_PASSOK
-Validate field only if modified by user.
+O_VISIBLE
+The field is displayed.
+If this option is off, display of the field is
+suppressed.
+.TP 5
+O_WRAP
+Words that do not fit on a line are wrapped to the next line.
+Words are
+blank-separated.
+.PP
+These extension options are defined (extensions are off by default):
+.TP 5
+O_DYNAMIC_JUSTIFY
+Permit dynamic fields to be justified, like static fields.
+.TP 5
+O_NO_LEFT_STRIP
+Preserve leading whitespace in the field buffer, which is normally discarded.
+.TP 5
+O_EDGE_INSERT_STAY
+When inserting into a field up to the boundary position,
+optionally delay the scrolling,
+so that the last inserted character remains visible,
+but advance the cursor to reflect the insertion.
+This allows the form library to display the
+inserted character in one-character fields
+as well as allowing the library to maintain consistent state.
+.TP 5
+O_INPUT_FIELD
+The \fBset_max_field\fP function checks for this extension,
+which allows a dynamic field to shrink if the new
+limit is smaller than the current field size.
.SH RETURN VALUE
Except for \fBfield_opts\fR, each routine returns one of the following:
.TP 5
@@ -103,15 +132,18 @@ Routine detected an incorrect or out-of-range argument.
The field is the current field.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.SH SEE ALSO
-\fBcurses\fR(3X), \fBform\fR(3X).
+\fBcurses\fR(3X),
+\fBform\fR(3X).
+\fBform_field_just\fR(3X).
.SH NOTES
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_field_userptr.3x b/man/form_field_userptr.3x
index 898da976f971..41e8fbe504a1 100644
--- a/man/form_field_userptr.3x
+++ b/man/form_field_userptr.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2015,2018 Free 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,10 +27,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_field_userptr.3x,v 1.10 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_field_userptr.3x,v 1.12 2018/07/28 21:34:06 tom Exp $
.TH form_field_userptr 3X ""
.SH NAME
-\fBform_field_userptr\fR \- associate application data with a form field
+\fBset_field_userptr\fR,
+\fBfield_userptr\fR \- associate application data with a form field
.SH SYNOPSIS
\fB#include <form.h>\fR
.br
@@ -40,7 +41,8 @@ void *field_userptr(const FIELD *field);
.br
.SH DESCRIPTION
Every form field has a field that can be used to hold application-specific data
-(that is, the form-driver code leaves it alone). These functions get and set
+(that is, the form-driver code leaves it alone).
+These functions get and set
that field.
.SH RETURN VALUE
The function \fBfield_userptr\fR returns a pointer (which may be \fBNULL\fR).
@@ -53,11 +55,12 @@ The function \fBset_field_userptr\fR returns \fBE_OK\fP (success).
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.PP
The user pointer is a void pointer.
We chose not to leave it as a char pointer for SVr4 compatibility.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_field_validation.3x b/man/form_field_validation.3x
index 3505fdb231b8..2f78fa45ba3c 100644
--- a/man/form_field_validation.3x
+++ b/man/form_field_validation.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +26,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_field_validation.3x,v 1.20 2010/12/04 18:38:55 tom Exp $
+.\" $Id: form_field_validation.3x,v 1.24 2019/01/20 20:31:42 tom Exp $
.TH form_field_validation 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.SH NAME
\fBform_field_validation\fR \- data type validation for fields
.SH SYNOPSIS
@@ -59,70 +67,112 @@ This is the type checked by validation functions.
The predefined types are as follows:
.TP 5
TYPE_ALNUM
-Alphanumeric data. Requires a third \fBint\fR argument, a minimum field width.
+Alphanumeric data.
+Requires a third \fBint\fR argument, a minimum field width.
.TP 5
TYPE_ALPHA
-Character data. Requires a third \fBint\fR argument, a minimum field width.
+Character data.
+Requires a third \fBint\fR argument, a minimum field width.
.TP 5
TYPE_ENUM
-Accept one of a specified set of strings. Requires a third \fB(char **)\fR
-argument pointing to a string list; a fourth \fBint\fR flag argument to enable
-case-sensitivity; and a fifth \fBint\fR 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 notice
-that the string list is copied. So you may use a list that lives in automatic variables on the stack.
+Accept one of a specified set of strings.
+Requires additional parameters:
+.RS
+.bP
+a third \fB(char **)\fR argument pointing to a string list;
+.bP
+a fourth \fBint\fR flag argument to enable case-sensitivity;
+.bP
+and a fifth \fBint\fR 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.
+.IP
+The library copies the string list,
+so you may use a list that lives in automatic variables on the stack.
+.RE
.TP 5
TYPE_INTEGER
-Integer data, parsable to an integer by \fBatoi(3)\fR. Requires a third
-\fBint\fR argument controlling the precision, a fourth \fBlong\fR argument
-constraining minimum value, and a fifth \fBlong\fR constraining maximum value.
+Integer data, parsable to an integer by \fBatoi\fP(3).
+Requires additional parameters:
+.RS
+.bP
+a third \fBint\fR argument controlling the precision,
+.bP
+a fourth \fBlong\fR argument constraining minimum value,
+.bP
+and a fifth \fBlong\fR constraining maximum value.
If the maximum value is less than or equal to the minimum value, the range is
-simply ignored. On return the field buffer is formatted according to the
-\fBprintf\fR format specification ".*ld", where the '*' is replaced by the
-precision argument.
-For details of the precision handling see \fBprintf's\fR man-page.
+simply ignored.
+On return, the field buffer is formatted according to the
+\fBprintf\fR format specification \*(``.*ld\*('',
+where the \*(``*\*('' is replaced by the precision argument.
+.IP
+For details of the precision handling see \fBprintf\fR(3).
+.RE
.TP 5
TYPE_NUMERIC
-Numeric data (may have a decimal-point part). Requires a third
-\fBint\fR argument controlling the precision, a fourth \fBdouble\fR
-argument constraining minimum value, and a fifth \fBdouble\fR constraining
-maximum value. If your system supports locales, the decimal point character
-to be used must be the one specified by your locale.
-If the maximum value is less than or equal to the minimum value, the range is
-simply ignored. On return the field buffer is formatted according to the
-\fBprintf\fR format specification ".*f", where the '*' is replaced by the
-precision argument.
-For details of the precision handling see \fBprintf's\fR man-page.
+Numeric data (may have a decimal-point part).
+This requires additional parameters:
+.RS
+.bP
+a third \fBint\fR argument controlling the precision,
+.bP
+a fourth \fBdouble\fR argument constraining minimum value,
+.bP
+and a fifth \fBdouble\fR constraining maximum value.
+If your system supports locales,
+the decimal point character must be the one specified by your locale.
+If the maximum value is less than or equal to the minimum value,
+the range is simply ignored.
+.IP
+On return, the field buffer is formatted according to the
+\fBprintf\fR format specification \*(``.*f\*('',
+where the \*(``*\*('' is replaced by the precision argument.
+.IP
+For details of the precision handling see \fBprintf\fR(3).
+.RE
.TP 5
TYPE_REGEXP
-Regular expression data. Requires a regular expression \fB(char *)\fR third argument;
-the data is valid if the regular expression matches it. Regular expressions
-are in the format of \fBregcomp\fR and \fBregexec\fR. Please notice
-that the regular expression 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 fill all eight positions with digits. If you want to
-allow fewer digits, you may use for example "^[0\-9]* *$" which is good for
-trailing spaces (up to an empty field), or "^ *[0\-9]* *$" which is good for
+Regular expression data.
+Requires a regular expression \fB(char *)\fR third argument.
+The data is valid if the regular expression matches it.
+.IP
+Regular expressions
+are in the format of \fBregcomp\fR and \fBregexec\fR.
+.IP
+The regular expression 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 fill all eight positions with digits.
+If you want to allow fewer digits,
+you may use for example "^[0\-9]* *$" which is good for
+trailing spaces (up to an empty field),
+or "^ *[0\-9]* *$" which is good for
leading and trailing spaces around the digits.
.TP 5
TYPE_IPV4
-An Internet Protocol Version 4 address. This requires no additional argument. It
-is checked whether or not the buffer has the form a.b.c.d, where a,b,c and d are
-numbers between 0 and 255. Trailing blanks in the buffer are ignored. The address
-itself is not validated. Please note that this is an ncurses extension. This
-field type may not be available in other curses implementations.
+An Internet Protocol Version 4 address.
+This requires no additional argument.
+The library checks whether or not the buffer has the form a.b.c.d,
+where a,b,c and d are numbers between 0 and 255.
+Trailing blanks in the buffer are ignored.
+The address itself is not validated.
+.IP
+This is an ncurses extension;
+this field type may not be available in other curses implementations.
.PP
-It is possible to set up new programmer-defined field types. See the
-\fBform_fieldtype\fR(3X) manual page.
+It is possible to set up new programmer-defined field types.
+See the \fBform_fieldtype\fR(3X) manual page.
.SH RETURN VALUE
-The functions \fBfield_type\fR and \fBfield_arg\fR return \fBNULL\fR on
-error. The function \fBset_field_type\fR returns one of the following:
+The functions \fBfield_type\fR and \fBfield_arg\fR return \fBNULL\fR on error.
+The function \fBset_field_type\fR returns one of the following:
.TP 5
.B E_OK
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.SH SEE ALSO
\fBcurses\fR(3X),
\fBform\fR(3X),
@@ -131,8 +181,9 @@ System error occurred (see \fBerrno\fR).
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_fieldtype.3x b/man/form_fieldtype.3x
index 028e9b0befcc..50f8627842b4 100644
--- a/man/form_fieldtype.3x
+++ b/man/form_fieldtype.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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_fieldtype.3x,v 1.16 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_fieldtype.3x,v 1.19 2019/01/20 20:31:42 tom Exp $
.TH form_fieldtype 3X ""
.SH NAME
\fBform_fieldtype\fR \- define validation-field types
@@ -56,7 +56,8 @@ FIELDTYPE *link_fieldtype(FIELDTYPE *type1,
.br
.SH DESCRIPTION
The function \fBnew_fieldtype\fR creates a new field type usable for data
-validation. You supply it with \fIfield_check\fR, a predicate to check the
+validation.
+You supply it with \fIfield_check\fR, a predicate to check the
validity of an entered data string whenever the user attempts to leave a field.
The (FIELD *) argument is passed in so the validation predicate can see the
field's buffer, sizes and other attributes; the second argument is an
@@ -69,8 +70,8 @@ the character to be checked and a pointer to an argument-block structure.
The function \fBfree_fieldtype\fR frees the space allocated for a given
validation type.
.PP
-The function \fBset_fieldtype_arg\fR associates three storage-management functions
-with a field type.
+The function \fBset_fieldtype_arg\fR associates
+three storage-management functions with a field type.
The \fImake_arg\fR function is automatically applied to the
list of arguments you give \fBset_field_type\fR when attaching validation
to a field; its job is to bundle these into an allocated argument-block
@@ -124,7 +125,7 @@ The field is already connected to a form.
The field is the current field.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
.SH NOTES
@@ -135,8 +136,9 @@ All of the \fB(char *)\fR arguments of these functions should actually be
\fB(void *)\fR. The type has been left uncorrected for strict compatibility
with System V.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_hook.3x b/man/form_hook.3x
index 2943b8804993..803fadd83e57 100644
--- a/man/form_hook.3x
+++ b/man/form_hook.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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_hook.3x,v 1.11 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_hook.3x,v 1.13 2019/01/20 20:31:42 tom Exp $
.TH form_hook 3X ""
.SH NAME
\fBform_hook\fR \- set hooks for automatic invocation by applications
@@ -55,40 +55,46 @@ These functions make it possible to set hook functions to be called at various
points in the automatic processing of input event codes by \fBform_driver\fR.
.PP
The function \fBset_field_init\fR sets a hook to be called at form-post time
-and each time the selected field changes (after the change). \fBfield_init\fR
+and each time the selected field changes (after the change).
+\fBfield_init\fR
returns the current field init hook, if any (\fBNULL\fR if there is no such
hook).
.PP
The function \fBset_field_term\fR sets a hook to be called at form-unpost time
-and each time the selected field changes (before the change). \fBfield_term\fR
+and each time the selected field changes (before the change).
+\fBfield_term\fR
returns the current field term hook, if any (\fBNULL\fR if there is no such
hook).
.PP
The function \fBset_form_init\fR sets a hook to be called at form-post time and
-just after a page change once it is posted. \fBform_init\fR returns the
+just after a page change once it is posted.
+\fBform_init\fR returns the
current form init hook, if any (\fBNULL\fR if there is no such hook).
.PP
The function \fBset_form_term\fR sets a hook to be called at form-unpost time
-and just before a page change once it is posted. \fBform_init\fR
+and just before a page change once it is posted.
+\fBform_init\fR
returns the current form term hook, if any (\fBNULL\fR if there is no such
hook).
.SH RETURN VALUE
-Routines that return pointers return \fBNULL\fR on error. Other routines
+Routines that return pointers return \fBNULL\fR on error.
+Other routines
return one of the following:
.TP 5
.B E_OK
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
.SH NOTES
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_new.3x b/man/form_new.3x
index b69f642b0a91..373fec0e3a8e 100644
--- a/man/form_new.3x
+++ b/man/form_new.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2015,2018 Free 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,10 +27,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_new.3x,v 1.9 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_new.3x,v 1.11 2018/07/28 21:34:06 tom Exp $
.TH form_new 3X ""
.SH NAME
-\fBform_new\fR \- create and destroy forms
+\fBnew_form\fR,
+\fBfree_form\fP \- create and destroy forms
.SH SYNOPSIS
\fB#include <form.h>\fR
.br
@@ -76,8 +77,9 @@ The form has already been posted.
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_new_page.3x b/man/form_new_page.3x
index 635822df2115..8c87e2b12edd 100644
--- a/man/form_new_page.3x
+++ b/man/form_new_page.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_new_page.3x,v 1.10 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_new_page.3x,v 1.14 2019/11/30 21:06:30 tom Exp $
.TH form_new_page 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.SH NAME
-\fBform_new_page\fR \- form pagination functions
+\fBset_new_page\fR,
+\fBnew_page\fR \- form pagination functions
.SH SYNOPSIS
\fB#include <form.h>\fR
.br
@@ -47,25 +52,23 @@ a page beginning on its form.
.SH RETURN VALUE
The function \fBnew_page\fR returns \fBTRUE\fR or \fBFALSE\fR.
.PP
-The function \fBset_new_page\fR return one of the following:
+The function \fBset_new_page\fR returns one of the following:
.TP 5
.B E_OK
The routine succeeded.
.TP 5
-.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
-.TP 5
.B E_CONNECTED
The given field is already connected to a form.
.SH SEE ALSO
-\fBcurses\fR(3X) and related pages whose names begin "form_" for detailed
+\fBcurses\fR(3X) and related pages whose names begin \*(``form_\*('' for detailed
descriptions of the entry points.
.SH NOTES
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_opts.3x b/man/form_opts.3x
index f02cec6d93f3..ba4a6bd438ce 100644
--- a/man/form_opts.3x
+++ b/man/form_opts.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,9 +27,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_opts.3x,v 1.11 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_opts.3x,v 1.14 2019/01/20 20:31:42 tom Exp $
.TH form_opts 3X ""
.SH NAME
+\fBset_form_opts\fP,
+\fBform_opts_on\fP,
+\fBform_opts_off\fP,
\fBform_opts\fR \- set and get form options
.SH SYNOPSIS
\fB#include <form.h>\fR
@@ -70,15 +73,16 @@ Except for \fBform_opts\fR, each routine returns one of the following:
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
.SH NOTES
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_page.3x b/man/form_page.3x
index 2211216d8155..3e10402c5f87 100644
--- a/man/form_page.3x
+++ b/man/form_page.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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_page.3x,v 1.12 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_page.3x,v 1.16 2019/01/20 20:31:42 tom Exp $
.TH form_page 3X ""
.SH NAME
\fBform_page\fR \- set and get form page number
@@ -38,6 +38,8 @@ int set_current_field(FORM *form, FIELD *field);
.br
FIELD *current_field(const FORM *);
.br
+int unfocus_current_field(FORM *form);
+.br
int set_form_page(FORM *form, int n);
.br
int form_page(const FORM *form);
@@ -45,16 +47,21 @@ int form_page(const FORM *form);
int field_index(const FIELD *field);
.br
.SH DESCRIPTION
-The function \fBset_current field\fR sets the current field of the given
+The function \fBset_current_field\fR sets the current field of the given
form; \fBcurrent_field\fR returns the current field of the given form.
.PP
+The function \fBunfocus_current_field\fR removes the focus from the current
+field of the form.
+In such state, inquiries via \fBcurrent_field\fR shall return a NULL pointer.
+.PP
The function \fBset_form_page\fR sets the form's page number (goes to page
\fIn\fR of the form).
.PP
The function \fBform_page\fR returns the form's current page number.
.PP
The function \fBfield_index\fR returns the index of the field in the
-field array of the form it is connected to. It returns \fBERR\fR if
+field array of the form it is connected to.
+It returns \fBERR\fR if
the argument is the null pointer or the field is not connected.
.SH RETURN VALUE
Except for \fBform_page\fR, each routine returns one of the following:
@@ -75,7 +82,7 @@ Contents of a field are not valid.
The form driver could not process the request.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
@@ -83,8 +90,11 @@ System error occurred (see \fBerrno\fR).
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
+.PP
+The \fBunfocus_current_field\fP function is an ncurses extension.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_post.3x b/man/form_post.3x
index 4799d9d1d324..a255af41b3ce 100644
--- a/man/form_post.3x
+++ b/man/form_post.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_post.3x,v 1.9 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_post.3x,v 1.13 2019/01/20 20:31:42 tom Exp $
.TH form_post 3X ""
.SH NAME
-\fBform_post\fR \- write or erase forms from associated subwindows
+\fBpost_form\fR,
+\fBunpost_form\fR \- write or erase forms from associated subwindows
.SH SYNOPSIS
\fB#include <form.h>\fR
.br
@@ -39,8 +40,9 @@ int post_form(FORM *form);
int unpost_form(FORM *form);
.br
.SH DESCRIPTION
-The function \fBpost_form\fR displays a form to its associated subwindow. To
-trigger physical display of the subwindow, use \fBrefresh\fR or some equivalent
+The function \fBpost_form\fR displays a form to its associated subwindow.
+To trigger physical display of the subwindow,
+use \fBrefresh\fR(3X) or some equivalent
\fBcurses\fR routine (the implicit \fBdoupdate\fR triggered by an \fBcurses\fR
input request will do).
.PP
@@ -70,7 +72,7 @@ Form is too large for its window.
The form has already been posted.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
@@ -78,8 +80,9 @@ System error occurred (see \fBerrno\fR).
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_requestname.3x b/man/form_requestname.3x
index 4a4e7eb033e3..4e8ada0f9150 100644
--- a/man/form_requestname.3x
+++ b/man/form_requestname.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2015,2018 Free 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,10 +27,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_requestname.3x,v 1.9 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_requestname.3x,v 1.11 2018/07/28 21:34:06 tom Exp $
.TH form_requestname 3X ""
.SH NAME
-\fBform_requestname\fR \- handle printable form request names
+\fBform_request_by_name\fP,
+\fBform_request_name\fR \- handle printable form request names
.SH SYNOPSIS
\fB#include <form.h>\fR
.br
@@ -43,7 +44,8 @@ The function \fBform_request_name\fR returns the printable name of a form
request code.
.br
The function \fBform_request_by_name\fR searches in the name-table for a request
-with the given name and returns its request code. Otherwise E_NO_MATCH is returned.
+with the given name and returns its request code.
+Otherwise E_NO_MATCH is returned.
.SH RETURN VALUE
\fBform_request_name\fR returns \fBNULL\fR on error and sets errno
to \fBE_BAD_ARGUMENT\fR.
@@ -56,9 +58,11 @@ It does not set errno.
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines are specific to ncurses. They were not supported on
-Version 7, BSD or System V implementations. It is recommended that
+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 AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_userptr.3x b/man/form_userptr.3x
index bd29b542c85b..c450a26befbb 100644
--- a/man/form_userptr.3x
+++ b/man/form_userptr.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2015,2018 Free 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,9 +27,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_userptr.3x,v 1.13 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_userptr.3x,v 1.15 2018/07/28 21:34:06 tom Exp $
.TH form_userptr 3X ""
.SH NAME
+\fBset_form_userptr\fP,
\fBform_userptr\fR \- associate application data with a form item
.SH SYNOPSIS
\fB#include <form.h>\fR
@@ -53,11 +54,12 @@ The function \fBset_form_userptr\fR returns \fBE_OK\fP (success).
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.PP
The user pointer is a void pointer.
We chose not to leave it as a char pointer for SVr4 compatibility.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/form_variables.3x b/man/form_variables.3x
index f4af349b1699..7760de2464b2 100644
--- a/man/form_variables.3x
+++ b/man/form_variables.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2010,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 2010-2013,2017 Free 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,9 +26,8 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_variables.3x,v 1.4 2013/06/22 17:58:32 tom Exp $
+.\" $Id: form_variables.3x,v 1.5 2017/11/20 00:59:21 tom Exp $
.TH form_variables 3X ""
-.ds n 5
.na
.hy 0
.SH NAME
diff --git a/man/form_win.3x b/man/form_win.3x
index 32af49b68040..ecd0a9303ffd 100644
--- a/man/form_win.3x
+++ b/man/form_win.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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_win.3x,v 1.13 2010/12/04 18:38:55 tom Exp $
+.\" $Id: form_win.3x,v 1.15 2019/01/20 20:31:42 tom Exp $
.TH form_win 3X ""
.SH NAME
\fBform_win\fR \- make and break form window and subwindow associations
@@ -45,11 +45,13 @@ WINDOW *form_sub(const FORM *form);
int scale_form(const FORM *form, int *rows, int *columns);
.br
.SH DESCRIPTION
-Every form has an associated pair of \fBcurses\fR windows. The form window
+Every form has an associated pair of \fBcurses\fR 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.
.PP
-The first four functions get and set those windows. It is not necessary to set
+The first four functions get and set those windows.
+It is not necessary to set
either window; by default, the driver code uses \fBstdscr\fR for both.
.PP
In the \fBset_\fR functions, window argument of \fBNULL\fR is treated as though
@@ -59,14 +61,15 @@ to change the system default form window or subwindow.
The function \fBscale_form\fR returns the minimum size required for the
subwindow of \fIform\fR.
.SH RETURN VALUE
-Routines that return pointers return \fBNULL\fR on error. Routines that return
+Routines that return pointers return \fBNULL\fR on error.
+Routines that return
an integer return one of the following error codes:
.TP 5
.B E_OK
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
@@ -84,8 +87,9 @@ No items are connected to the form.
The header file \fB<form.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V forms library. They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/infocmp.1m b/man/infocmp.1m
index 294abe3eb693..cfee79a553eb 100644
--- a/man/infocmp.1m
+++ b/man/infocmp.1m
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,11 +27,30 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: infocmp.1m,v 1.53 2013/02/02 22:07:35 tom Exp $
+.\" $Id: infocmp.1m,v 1.75 2019/07/20 18:42:11 tom Exp $
.TH @INFOCMP@ 1M ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.ds n 5
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
+.de NS
+.ie n .sp
+.el .sp .5
+.ie n .in +4
+.el .in +2
+.nf
+.ft C \" Courier
+..
+.de NE
+.fi
+.ft R
+.ie n .in -4
+.el .in -2
..
.ds d @TERMINFO@
.SH NAME
@@ -50,6 +69,7 @@ L\
T\
U\
V\
+W\
c\
d\
e\
@@ -65,7 +85,7 @@ u\
x\
\fR]
.br
- [\fB\-v\fR \fIn\fR] [\fB\-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR] [\fB\-R \fR\fBsubset\fR]
+ [\fB\-v\fR \fIn\fR] [\fB\-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR] [\fB\-Q\fR \fIn\fR] [\fB\-R \fR\fBsubset\fR]
.br
[\fB\-w\fR\ \fIwidth\fR] [\fB\-A\fR\ \fIdirectory\fR] [\fB\-B\fR\ \fIdirectory\fR]
.br
@@ -88,30 +108,49 @@ the \fB\-d\fR option will be assumed.
\fItermname\fR with each of the descriptions given by the entries for the other
terminal's \fItermnames\fR.
If a capability is defined for only one of the
-terminals, the value returned will depend on the type of the capability:
-\fBF\fR for boolean variables, \fB\-1\fR for integer variables, and \fBNULL\fR
-for string variables.
+terminals, the value returned depends on the type of the capability:
+.bP
+\fBF\fR for missing boolean variables
+.bP
+\fBNULL\fR for missing integer or string variables
.PP
-The \fB\-d\fR 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 different people, for the same or similar terminals.
+Use the \fB\-q\fP option to show the distinction between
+\fIabsent\fP and \fIcancelled\fP capabilities.
.PP
-The \fB\-c\fR option produces a list of each capability that is common between
+These options produce a list which you can use to compare two
+or more terminal descriptions:
+.TP 5
+\fB\-d\fR
+produces a list of each capability that is \fIdifferent\fP
+between two entries.
+Each item in the list shows \*(``:\*('' after the capability name,
+followed by the capability values, separated by a comma.
+.TP
+\fB\-c\fR
+produces a list of each capability that is \fIcommon\fP between
two or more entries.
-Capabilities that are not set are ignored.
-This option can be
-used as a quick check to see if the \fB\-u\fR option is worth using.
-.PP
-The \fB\-n\fR option produces a list of each capability that is in none of
-the given entries.
-If no \fItermnames\fR are given, the environment variable \fBTERM\fR
-will be used for both of the \fItermnames\fR.
-This can be used as a quick
-check to see if anything was left out of a description.
+Missing capabilities are ignored.
+Each item in the list shows \*(``=\*('' after the capability name,
+followed by the capability value.
+.IP
+The \fB\-u\fR option provides a related output,
+showing the first terminal description rewritten to use the second
+as a building block via the \*(``use=\*('' clause.
+.TP
+\fB\-n\fR
+produces a list of each capability that is in \fInone\fP of the given entries.
+Each item in the list shows \*(``!\*('' before the capability name.
+.IP
+Normally only the conventional capabilities are shown.
+Use the \fB\-x\fP option to add the BSD-compatibility
+capabilities (names prefixed with \*(``OT\*('').
+.IP
+If no \fItermnames\fR are given,
+\fB@INFOCMP@\fR uses the environment variable \fBTERM\fR
+for each of the \fItermnames\fR.
.SS Source Listing Options [\-I] [\-L] [\-C] [\-r]
-The \fB\-I\fR, \fB\-L\fR, and \fB\-C\fR options will produce a source listing for
-each terminal named.
+The \fB\-I\fR, \fB\-L\fR, and \fB\-C\fR options will produce
+a source listing for each terminal named.
.
.TS
center tab(/) ;
@@ -137,7 +176,7 @@ These should be edited by hand.
For best results when converting to \fBtermcap\fP format,
you should use both \fB\-C\fP and \fB\-r\fP.
Normally a termcap description is limited to 1023 bytes.
-@INFOCMP@ trims away less essential parts to make it fit.
+\fB@INFOCMP@\fP trims away less essential parts to make it fit.
If you are converting to one of the (rare) termcap implementations
which accept an unlimited size of termcap,
you may want to add the \fB\-T\fP option.
@@ -147,7 +186,7 @@ and trim excess whitespace (use the \fB\-0\fP option for that).
All padding information for strings will be collected together and placed
at the beginning of the string where \fBtermcap\fR expects it.
Mandatory
-padding (padding information with a trailing '/') will become optional.
+padding (padding information with a trailing \*(``/\*('') will become optional.
.PP
All \fBtermcap\fR variables no longer supported by \fBterminfo\fR, but which
are derivable from other \fBterminfo\fR variables, will be output.
@@ -169,9 +208,9 @@ Mandatory padding is not supported.
Because
\fBtermcap\fR strings are not as flexible, it is not always possible to convert
a \fBterminfo\fR string capability into an equivalent \fBtermcap\fR format.
-A subsequent conversion of the \fBtermcap\fR file back into \fBterminfo\fR format
-will not necessarily reproduce the original \fBterminfo\fR
-source.
+A subsequent conversion of the \fBtermcap\fR file
+back into \fBterminfo\fR format
+will not necessarily reproduce the original \fBterminfo\fR source.
.PP
Some common \fBterminfo\fR parameter sequences, their \fBtermcap\fR
equivalents, and some terminal types which commonly have such sequences, are:
@@ -201,7 +240,8 @@ 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 \fB@INFOCMP@\fR will show what can be done to change
+is a full description, using \fB@INFOCMP@\fR
+will show what can be done to change
one description to be relative to the other.
.PP
A capability will get printed with an at-sign (@) if it no longer exists in the
@@ -234,7 +274,7 @@ superfluous.
were not needed.
.SS Changing Databases [\-A \fIdirectory\fR] [\-B \fIdirectory\fR]
Like other \fBncurses\fP utilities,
-@INFOCMP@ looks for the terminal descriptions in several places.
+\fB@INFOCMP@\fP looks for the terminal descriptions in several places.
You can use the \fBTERMINFO\fP and \fBTERMINFO_DIRS\fP environment variables
to override the compiled-in default list of places to search
(see \fBcurses\fP(3X) for details).
@@ -265,12 +305,13 @@ the fields will be printed several to a line to a maximum width
of 60 characters.
.TP
\fB\-a\fR
-tells \fB@INFOCMP@\fP to retain commented-out capabilities rather than discarding
-them.
+tells \fB@INFOCMP@\fP to retain commented-out capabilities
+rather than discarding them.
Capabilities are commented by prefixing them with a period.
.TP
\fB\-D\fR
-tells \fB@INFOCMP@\fP to print the database locations that it knows about, and exit.
+tells \fB@INFOCMP@\fP to print the database locations that it knows about,
+and exit.
.TP 5
\fB\-E\fR
Dump the capabilities of the given terminal as tables, needed in
@@ -319,7 +360,11 @@ rather than their decimal equivalents.
.TP 5
\fB\-i\fR
Analyze the initialization (\fBis1\fR, \fBis2\fR, \fBis3\fR), and reset
-(\fBrs1\fR, \fBrs2\fR, \fBrs3\fR), strings in the entry.
+(\fBrs1\fR, \fBrs2\fR, \fBrs3\fR), strings in the entry,
+as well as those used for starting/stopping cursor-positioning mode
+(\fBsmcup\fP, \fBrmcup\fP) as well as starting/stopping keymap mode
+(\fBsmkx\fP, \fBrmkx\fP).
+.IP
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
@@ -329,9 +374,9 @@ 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 recognized actions
translated into {}-bracketed descriptions.
+.IP
Here is a list of the DEC/ANSI
special sequences recognized:
-i.
.TS
center tab(/) ;
l l
@@ -376,8 +421,14 @@ 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).
-.PP
+All but NORMAL may be prefixed with
+.RS
+.bP
+\*(``+\*('' (turn on) or
+.bP
+\*(``\-\*('' (turn off).
+.RE
+.IP
An SGR0 designates an empty highlight sequence (equivalent to {SGR:NORMAL}).
.TP 5
\fB\-l\fR
@@ -386,9 +437,40 @@ Set output format to terminfo.
\fB\-p\fR
Ignore padding specifications when comparing strings.
.TP 5
+\fB\-Q\fR \fIn\fR
+Rather than show source in terminfo (text) format,
+print the compiled (binary) format in hexadecimal or base64 form,
+depending on the option's value:
+.RS 8
+.TP 3
+1
+hexadecimal
+.TP 3
+2
+base64
+.TP 3
+3
+hexadecimal and base64
+.RE
+.IP
+For example, this prints the compiled terminfo value as a string
+which could be assigned to the \fBTERMINFO\fP environment variable:
+.NS
+@INFOCMP@ -0 -q -Q2
+.NE
+.TP 5
\fB\-q\fR
+This makes the output a little shorter:
+.RS
+.bP
Make the comparison listing shorter by omitting subheadings, and using
-"\-" for absent capabilities, "@" for canceled rather than "NULL".
+\*(``\-\*('' for absent capabilities, \*(``@\*(''
+for canceled rather than \*(``NULL\*(''.
+.bP
+However, show differences between absent and cancelled capabilities.
+.bP
+Omit the \*(``Reconstructed from\*('' comment for source listings.
+.RE
.TP 5
\fB\-R\fR\fIsubset\fR
Restrict output to a given subset.
@@ -396,11 +478,20 @@ 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 incompatible with SVr4/XSI.
+.RS
+.bP
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
+subsets are \*(``SVr1\*('', \*(``Ultrix\*('', \*(``HP\*('', and \*(``AIX\*('';
+see \fBterminfo\fR(\*n) for details.
+.bP
+You can also choose the subset \*(``BSD\*('' which selects only capabilities
with termcap equivalents recognized by 4.4BSD.
+The \fB\-C\fP option sets the \*(``BSD\*('' subset as a side-effect.
+.bP
+If you select any other value for \fB\-R\fP,
+it is the same as no subset, i.e., all capabilities are used.
+The \fB\-I\fP option likewise selects no subset as a side-effect.
+.RE
.TP
\fB\-s \fR\fI[d|i|l|c]\fR
The \fB\-s\fR option sorts the fields within each type according to the argument
@@ -438,7 +529,8 @@ Normally when translating from terminfo to termcap,
untranslatable capabilities are commented-out.
.TP 5
\fB\-U\fR
-tells \fB@INFOCMP@\fP to not post-process the data after parsing the source file.
+tells \fB@INFOCMP@\fP to not post-process the data
+after parsing the source file.
This feature helps when comparing the actual contents of two source files,
since it excludes the inferences that \fB@INFOCMP@\fP makes to fill in missing
data.
@@ -448,19 +540,54 @@ reports the version of ncurses which was used in this program, and exits.
.TP 5
\fB\-v\fR \fIn\fR
prints out tracing information on standard error as the program runs.
-Higher values of n induce greater verbosity.
+.IP
+The optional parameter \fIn\fR is a number from 1 to 10, inclusive,
+indicating the desired level of detail of information.
+If ncurses is built without tracing support, the optional parameter is ignored.
+.TP
+\fB\-W\fR
+By itself, the \fB\-w\fP option will not force long strings to be wrapped.
+Use the \fB\-W\fP option to do this.
.TP 5
\fB\-w\fR \fIwidth\fR
changes the output to \fIwidth\fR characters.
.TP
\fB\-x\fR
-print information for user-defined capabilities.
+print information for user-defined capabilities (see \fBuser_caps(\*n)\fP.
These are extensions to the terminfo repertoire which can be loaded
using the \fB\-x\fR option of \fB@TIC@\fP.
.SH FILES
.TP 20
\*d
Compiled terminal description database.
+.SH HISTORY
+Although System V Release 2 provided a terminfo library,
+it had no documented tool for decompiling the terminal descriptions.
+Tony Hansen (AT&T) wrote the first \fBinfocmp\fP in early 1984,
+for System V Release 3.
+.PP
+Eric Raymond used the AT&T documentation in 1995 to provide an equivalent
+\fB@INFOCMP@\fP for ncurses.
+In addition, he added a few new features such as:
+.bP
+the \fB\-e\fP option, to support \fIfallback\fP
+(compiled-in) terminal descriptions
+.bP
+the \fB\-i\fP option, to help with analysis
+.PP
+Later, Thomas Dickey added the \fB\-x\fP (user-defined capabilities)
+option, and the \fB\-E\fP option to support fallback entries with
+user-defined capabilities.
+.PP
+For a complete list, see the \fIEXTENSIONS\fP section.
+.PP
+In 2010, Roy Marples provided an \fBinfocmp\fP program for NetBSD.
+It is less capable than the SVr4 or ncurses versions
+(e.g., it lacks the sorting options documented in X/Open),
+but does include the \fB\-x\fP option adapted from ncurses.
+.SH PORTABILITY
+X/Open Curses, Issue 7 (2009) provides a description of \fBinfocmp\fP.
+It does not mention the options used for converting to termcap format.
.SH EXTENSIONS
The
\fB\-0\fR,
@@ -468,6 +595,7 @@ The
\fB\-E\fR,
\fB\-F\fR,
\fB\-G\fR,
+\fB\-Q\fR,
\fB\-R\fR,
\fB\-T\fR,
\fB\-V\fR,
@@ -482,7 +610,14 @@ The
\fB\-t\fR
options are not supported in SVr4 curses.
.PP
-The \fB\-r\fR option's notion of `termcap' capabilities is System V Release 4's.
+SVr4 infocmp does not distinguish between absent and cancelled capabilities.
+Also, it shows missing integer capabilities as \fB\-1\fP
+(the internal value used to represent missing integers).
+This implementation shows those as \*(``NULL\*('',
+for consistency with missing strings.
+.PP
+The \fB\-r\fR option's notion of \*(``termcap\*('' capabilities
+is System V Release 4's.
Actual BSD curses versions will have a more restricted set.
To see only the
4.4BSD set, use \fB\-r\fR \fB\-RBSD\fR.
@@ -495,8 +630,9 @@ The \fB\-F\fR option of \fB@INFOCMP@\fR(1M) should be a \fB@TOE@\fR(1M) mode.
\fB@TOE@\fR(1M),
\fBcurses\fR(3X),
\fBterminfo\fR(\*n).
+\fBuser_caps\fR(\*n).
.sp
-http://invisible-island.net/ncurses/tctest.html
+https://invisible-island.net/ncurses/tctest.html
.PP
This describes \fBncurses\fR
version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
diff --git a/man/infotocap.1m b/man/infotocap.1m
index d9b44f0e25b9..2297e3132cd8 100644
--- a/man/infotocap.1m
+++ b/man/infotocap.1m
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1999-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1999-2018,2019 Free 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,14 +27,14 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: infotocap.1m,v 1.11 2010/12/04 18:38:55 tom Exp $
+.\" $Id: infotocap.1m,v 1.15 2019/10/12 21:16:00 tom Exp $
.TH @INFOTOCAP@ 1M ""
.ds n 5
.ds d @TERMINFO@
.SH NAME
\fB@INFOTOCAP@\fR \- convert a \fIterminfo\fR description into a \fItermcap\fR description
.SH SYNOPSIS
-\fB@INFOTOCAP@\fR [\fB\-v\fR\fIn\fR \fIwidth\fR] [\fB\-V\fR] [\fB\-1\fR] [\fB\-w\fR \fIwidth\fR] \fIfile\fR . . .
+\fB@INFOTOCAP@\fR [\fB\-v\fR\fIn\fR \fIwidth\fR] [\fB\-V\fR] [\fB\-1\fR] [\fB\-w\fR \fIwidth\fR] \fIfile\fR ...
.SH DESCRIPTION
\fB@INFOTOCAP@\fR looks in each given text
\fIfile\fR for \fBterminfo\fR descriptions.
@@ -61,8 +61,10 @@ change the output to \fIwidth\fR characters.
\*d
Compiled terminal description database.
.SH NOTES
-This utility is actually a link to \fI@TIC@\fR, running in \fI\-C\fR mode.
-You can use other \fI@TIC@\fR options such as \fB\-f\fR and \fB\-x\fR.
+This utility is actually a link to \fB@TIC@\fR, running in \fI\-C\fR mode.
+You can use other \fB@TIC@\fR options such as \fB\-f\fR and \fB\-x\fR.
+.SH PORTABILITY
+None of X/Open Curses, Issue 7 (2009), SVr4 or NetBSD document this application.
.SH SEE ALSO
\fBcurses\fR(3X),
\fB@TIC@\fR(1M),
diff --git a/man/key_defined.3x b/man/key_defined.3x
index db6c531af0e3..d78b6ffc28a1 100644
--- a/man/key_defined.3x
+++ b/man/key_defined.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2003-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2003-2010,2018 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -28,7 +28,7 @@
.\"
.\" Author: Thomas E. Dickey 2003
.\"
-.\" $Id: key_defined.3x,v 1.6 2010/12/04 18:40:45 tom Exp $
+.\" $Id: key_defined.3x,v 1.8 2018/07/28 22:08:59 tom Exp $
.TH key_defined 3X ""
.SH NAME
\fBkey_defined\fP \- check if a keycode is defined
@@ -43,10 +43,13 @@ to any keycode.
.SH RETURN VALUE
If the string is bound to a keycode, its value (greater than zero) is returned.
If no keycode is bound, zero is returned.
-If the string conflicts with longer strings which are bound to keys, \-1 is returned.
+If the string conflicts with longer strings
+which are bound to keys, \-1 is returned.
.SH PORTABILITY
-These routines are specific to ncurses. They were not supported on
-Version 7, BSD or System V implementations. It is recommended that
+These routines are specific to ncurses.
+They were not supported on
+Version 7, BSD or System V implementations.
+It is recommended that
any code depending on them be conditioned using NCURSES_VERSION.
.SH SEE ALSO
\fBdefine_key\fR(3X).
diff --git a/man/keybound.3x b/man/keybound.3x
index 5dd083afe1ab..ec90c453b199 100644
--- a/man/keybound.3x
+++ b/man/keybound.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1999-2008,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1999-2010,2018 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -28,7 +28,7 @@
.\"
.\" Author: Thomas E. Dickey 1999
.\"
-.\" $Id: keybound.3x,v 1.8 2010/12/04 18:49:20 tom Exp $
+.\" $Id: keybound.3x,v 1.9 2018/07/28 21:34:06 tom Exp $
.TH keybound 3X ""
.SH NAME
\fBkeybound\fP \- return definition of keycode
@@ -48,8 +48,10 @@ through multiple definitions, counting from zero.
When successful,
the function returns a string which must be freed by the caller.
.SH PORTABILITY
-These routines are specific to ncurses. They were not supported on
-Version 7, BSD or System V implementations. It is recommended that
+These routines are specific to ncurses.
+They were not supported on
+Version 7, BSD or System V implementations.
+It is recommended that
any code depending on them be conditioned using NCURSES_VERSION.
.SH SEE ALSO
\fBdefine_key\fR(3X),
diff --git a/man/keyok.3x b/man/keyok.3x
index 8eaf9a3c99cf..d181c1059bd2 100644
--- a/man/keyok.3x
+++ b/man/keyok.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -28,7 +28,7 @@
.\"
.\" Author: Thomas E. Dickey 1997
.\"
-.\" $Id: keyok.3x,v 1.11 2010/12/04 18:40:45 tom Exp $
+.\" $Id: keyok.3x,v 1.13 2018/07/28 21:34:56 tom Exp $
.TH keyok 3X ""
.SH NAME
\fBkeyok\fP \- enable or disable a keycode
@@ -42,14 +42,16 @@ It permits an application to disable specific keycodes, rather than
use the \fIkeypad\fP function to disable all keycodes.
Keys that have been disabled can be re-enabled.
.SH RETURN VALUE
-The keycode must be greater than zero, else ERR is returned.
-If it does not correspond to a defined key, then ERR is returned.
+The keycode must be greater than zero, else \fBERR\fP is returned.
+If it does not correspond to a defined key, then \fBERR\fP is returned.
If the \fIenable\fP parameter is true, then the key must have been disabled,
and vice versa.
-Otherwise, the function returns OK.
+Otherwise, the function returns \fBOK\fP.
.SH PORTABILITY
-These routines are specific to ncurses. They were not supported on
-Version 7, BSD or System V implementations. It is recommended that
+These routines are specific to ncurses.
+They were not supported on
+Version 7, BSD or System V implementations.
+It is recommended that
any code depending on them be conditioned using NCURSES_VERSION.
.SH SEE ALSO
\fBdefine_key\fR(3X).
diff --git a/man/legacy_coding.3x b/man/legacy_coding.3x
index fabb607a572e..b3d7b41e7526 100644
--- a/man/legacy_coding.3x
+++ b/man/legacy_coding.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2005-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2005-2016,2017 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -28,18 +28,16 @@
.\"
.\" Author: Thomas E. Dickey
.\"
-.\" $Id: legacy_coding.3x,v 1.4 2010/12/04 18:49:20 tom Exp $
+.\" $Id: legacy_coding.3x,v 1.6 2017/03/15 08:14:25 tom Exp $
.TH legacy_coding 3X ""
.SH NAME
-\fBuse_legacy_coding\fR \- use terminal's default colors
+\fBuse_legacy_coding\fR \- override locale-encoding checks
.SH SYNOPSIS
\fB#include <curses.h>\fP
.sp
\fBint use_legacy_coding(int level);\fP
.SH DESCRIPTION
-The
-.I use_legacy_coding()
-function is an extension to the curses library.
+The \fBuse_legacy_coding\fP function is an extension to the curses library.
It allows the caller to change the result of \fBunctrl\fP,
and suppress related checks within the library that would normally
cause nonprinting characters to be rendered in visible form.
diff --git a/man/make_sed.sh b/man/make_sed.sh
index f2afac93ebc8..55ba32f528c6 100755
--- a/man/make_sed.sh
+++ b/man/make_sed.sh
@@ -1,7 +1,7 @@
#!/bin/sh
-# $Id: make_sed.sh,v 1.9 2005/07/16 18:15:31 tom Exp $
+# $Id: make_sed.sh,v 1.10 2017/08/12 12:22:06 tom Exp $
##############################################################################
-# Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2005,2017 Free 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"), #
@@ -45,7 +45,7 @@ UPPER=upper$$
SCRIPT=script$$
RESULT=result$$
rm -f $UPPER $SCRIPT $RESULT
-trap "rm -f $COL.* $INPUT $UPPER $SCRIPT $RESULT" 0 1 2 5 15
+trap "rm -f $COL.* $INPUT $UPPER $SCRIPT $RESULT" 0 1 2 3 15
fgrep -v \# $1 | \
sed -e 's/[ ][ ]*/ /g' >$INPUT
diff --git a/man/man_db.renames b/man/man_db.renames
index e98fd69d6251..8299df89020b 100644
--- a/man/man_db.renames
+++ b/man/man_db.renames
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2017,2019 Free 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"), #
@@ -25,7 +25,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: man_db.renames,v 1.47 2010/09/18 15:43:20 tom Exp $
+# $Id: man_db.renames,v 1.55 2019/07/20 10:18:12 Sven.Joachim Exp $
# Manual-page renamings for the man_db program
#
# Files:
@@ -149,11 +149,13 @@ mitem_userptr.3x menu_userptr.3menu
mitem_value.3x menu_value.3menu
mitem_visible.3x menu_visible.3menu
ncurses.3x ncurses.3ncurses
+new_pair.3x new_pair.3ncurses
panel.3x panel.3curses
printf.3s printf.3
putc.3s putc.3
resizeterm.3x resizeterm.3ncurses
scanf.3s scanf.3
+scr_dump.5 scr_dump.5
system.3s system.3
tabs.1 tabs.1
term.5 term.5
@@ -165,7 +167,7 @@ tic.1m tic.1
toe.1m toe.1
tput.1 tput.1
tset.1 tset.1
-vprintf.3s vprintf.3
+user_caps.5 user_caps.5
wresize.3x wresize.3ncurses
#
# Other:
@@ -174,20 +176,24 @@ tack.1m tack.1
getty.1 getty.8
scanf.3 scanf.3
ttys.5 ttys.4
-termio.7 termios.3
system.3 system.3
regcomp.3x regcomp.3
regexec.3x regexec.3
+vprintf.3 vprintf.3
#
-# Generated:
+# The following are pages which may be generated depending on configuration:
adacurses-config.1 adacurses-config.1
+adacurses5-config.1 adacurses5-config.1
+adacurses6-config.1 adacurses6-config.1
#
ncurses5-config.1 ncurses5-config.1
ncursesw5-config.1 ncursesw5-config.1
+ncursest5-config.1 ncursest5-config.1
+ncursestw5-config.1 ncursestw5-config.1
#
ncurses6-config.1 ncurses6-config.1
ncursesw6-config.1 ncursesw6-config.1
ncursest6-config.1 ncursest6-config.1
-ncurseswt6-config.1 ncurseswt6-config.1
+ncursestw6-config.1 ncursestw6-config.1
#
# vile:cfgmode
diff --git a/man/manhtml.aliases b/man/manhtml.aliases
index a4ae047a14c6..6db78f3a14a2 100644
--- a/man/manhtml.aliases
+++ b/man/manhtml.aliases
@@ -1,16 +1,62 @@
-# $Id: manhtml.aliases,v 1.1 2013/12/21 21:44:52 tom Exp $
+# $Id: manhtml.aliases,v 1.13 2019/02/16 23:44:49 tom Exp $
+#***************************************************************************
+# Copyright (c) 2013-2017,2019 Free 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. *
+#***************************************************************************
# Items in this list will be linked to the corresponding manpages by man2html
+assume_default_colors(3X) default_colors(3X)
addch(3X) curs_addch(3X)
+curs_set(3X) curs_kernel(3X)
delscreen(3X) curs_initscr(3X)
+doupdate(3X) curs_refresh(3X)
+endwin(3X) curs_initscr(3X)
filter(3X) curs_util(3X)
-form_fieldtype(3X) form_fieldtype(3X)
+get_wch(3X) curs_get_wch(3X)
getch(3X) curs_getch(3X)
+inch(3X) curs_inch(3X)
infocmp(1) infocmp(1M)
initscr(3X) curs_initscr(3X)
+is_scrollok(3X) curs_opaque(3X)
+keypad(3X) curs_inopts(3X)
+longname(3X) curs_termattrs(3X)
+meta(3X) curs_inopts(3X)
+mvcur(3X) curs_terminfo(3X)
newterm(3X) curs_initscr(3X)
+refresh(3X) curs_refresh(3X)
+reset_shell_mode(3X) curs_kernel(3X)
set_fieldtype(3X) form_fieldtype(3X)
set_term(3X) curs_initscr(3X)
setupterm(3X) curs_terminfo(3X)
+slk_init(3X) curs_slk(3X)
tic(1) tic(1M)
+tigetstr(3X) curs_terminfo(3X)
+tparm(3X) curs_terminfo(3X)
+tputs(3X) curs_terminfo(3X)
use_env(3X) curs_util(3X)
+use_default_colors(3X) default_colors(3X)
+use_extended_names(3X) curs_extend(3X)
vidputs(3X) curs_terminfo(3X)
+wgetch(3X) curs_getch(3X)
diff --git a/man/manhtml.externs b/man/manhtml.externs
index d26b6127a445..8c302540dccf 100644
--- a/man/manhtml.externs
+++ b/man/manhtml.externs
@@ -1,24 +1,64 @@
-# $Id: manhtml.externs,v 1.3 2013/12/21 22:11:29 tom Exp $
+# $Id: manhtml.externs,v 1.12 2019/07/27 11:30:24 tom Exp $
# Items in this list will not be linked by man2html
+#***************************************************************************
+# Copyright (c) 2013-2017,2019 Free 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. *
+#***************************************************************************
+ADACURSES(1)
+COLOR_PAIR(1)
+COLOR_PAIR(2)
+COLOR_PAIR(3)
+atoi(3)
conflict(1)
csh(1)
ded(1)
environ(7)
+errno(3)
+file(1)
getty(1)
+lynx(1)
nvi(1)
+mutt(1)
+od(1)
printf(3)
profile(5)
putc(3)
+putchar(3)
putwc(3)
read(2)
-rogue(1)
scanf(3)
sh(1)
sscanf(3)
stdio(3)
stty(1)
system(3)
-termio(7)
+termios(3)
tty(4)
ttys(5)
+vprintf(3)
+vscanf(3)
wcwidth(3)
+write(2)
diff --git a/man/menu.3x b/man/menu.3x
index ff3a19c04333..2c2b7efa5936 100644
--- a/man/menu.3x
+++ b/man/menu.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +27,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: menu.3x,v 1.21 2010/12/04 18:40:45 tom Exp $
+.\" $Id: menu.3x,v 1.26 2019/01/20 20:32:23 tom Exp $
.TH menu 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.SH NAME
\fBmenu\fR \- curses extension for programming menus
.SH SYNOPSIS
@@ -36,20 +44,24 @@
.br
.SH DESCRIPTION
The \fBmenu\fR library provides terminal-independent facilities for composing
-menu systems on character-cell terminals. The library includes: item routines,
+menu systems on character-cell terminals.
+The library includes: item routines,
which create and modify menu items; and menu routines, which group items into
menus, display menus on the screen, and handle interaction with the user.
.PP
The \fBmenu\fR library uses the \fBcurses\fR libraries, and a curses
initialization routine such as \fBinitscr\fR must be called before using any of
-these functions. To use the \fBmenu\fR library, link with the options
+these functions.
+To use the \fBmenu\fR library, link with the options
\fB\-lmenu \-lcurses\fR.
.
.SS Current Default Values for Item Attributes
.
-The \fBmenu\fR library maintains a default value for item attributes. You can
+The \fBmenu\fR library maintains a default value for item attributes.
+You can
get or set this default by calling the appropriate \fBget_\fR or \fBset_\fR
-routine with a \fBNULL\fR item pointer. Changing this default with a
+routine with a \fBNULL\fR item pointer.
+Changing this default with a
\fBset_\fR function affects future item creations, but does not change the
rendering of items already created.
.
@@ -128,7 +140,8 @@ top_row \fBmitem_current\fR(3X)
unpost_menu \fBmenu_post\fR(3X)
.TE
.SH RETURN VALUE
-Routines that return pointers return \fBNULL\fR on error. Routines that return
+Routines that return pointers return \fBNULL\fR on error.
+Routines that return
an integer return one of the following error codes:
.TP 5
.B E_OK
@@ -162,26 +175,38 @@ The menu is already posted.
The menu driver could not process the request.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_UNKNOWN_COMMAND
The menu driver code saw an unknown request code.
-.SH SEE ALSO
-\fBcurses\fR(3X) and related pages whose names begin "menu_" for detailed
-descriptions of the entry points.
.SH NOTES
The header file \fB<menu.h>\fR automatically includes the header files
\fB<curses.h>\fR and \fB<eti.h>\fR.
.PP
In your library list, libmenu.a should be before libncurses.a; that is,
-you want to say `\-lmenu \-lncurses', not the other way around (which would
-usually give a link-error).
+you should say \*(``\-lmenu \-lncurses\*('', not the other way around
+(which would give a link-error when using static libraries).
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
+.PP
+The menu facility was documented in SVr4.2 in
+\fICharacter User Interface Programming (UNIX SVR4.2)\fP.
+.PP
+It is not part of X/Open Curses.
+.PP
+Aside from ncurses, there are few implementations:
+.bP
+systems based on SVr4 source code, e.g., Solaris.
+.bP
+NetBSD curses.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for ncurses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for ncurses by Eric S. Raymond.
.SH SEE ALSO
+\fBcurses\fR(3X) and related pages whose names begin \*(``menu_\*(''
+for detailed descriptions of the entry points.
+.PP
This describes \fBncurses\fR
version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
diff --git a/man/menu_attributes.3x b/man/menu_attributes.3x
index c33059b9948f..3ba1b87ad310 100644
--- a/man/menu_attributes.3x
+++ b/man/menu_attributes.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,21 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: menu_attributes.3x,v 1.12 2010/12/04 18:40:45 tom Exp $
+.\" $Id: menu_attributes.3x,v 1.16 2019/11/30 21:02:51 tom Exp $
.TH menu_attributes 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.SH NAME
-\fBmenu_attributes\fR \- color and attribute control for menus
+\fBmenu_back\fR,
+\fBmenu_fore\fR,
+\fBmenu_grey\fR,
+\fBmenu_pad\fR,
+\fBset_menu_back\fR,
+\fBset_menu_fore\fR,
+\fBset_menu_grey\fR,
+\fBset_menu_pad\fR \- color and attribute control for menus
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
@@ -53,22 +64,28 @@ int menu_pad(const MENU *menu);
.SH DESCRIPTION
The function \fBset_menu_fore\fR sets the foreground attribute of
\fImenu\fR. This is the highlight used for selected menu items.
-\fBmenu_fore\fR returns the foreground attribute. The default
+\fBmenu_fore\fR returns the foreground attribute.
+The default
is \fBA_REVERSE\fR.
.PP
The function \fBset_menu_back\fR sets the background attribute of
\fImenu\fR. This is the highlight used for selectable (but not currently
-selected) menu items. The function \fBmenu_back\fR returns the background
-attribute. The default is \fBA_NORMAL\fR.
+selected) menu items.
+The function \fBmenu_back\fR returns the background
+attribute.
+The default is \fBA_NORMAL\fR.
.PP
The function \fBset_menu_grey\fR sets the grey attribute of \fImenu\fR. This is
the highlight used for un-selectable menu items in menus that permit more than
-one selection. The function \fBmenu_grey\fR returns the grey attribute.
+one selection.
+The function \fBmenu_grey\fR returns the grey attribute.
The default is \fBA_UNDERLINE\fR.
.PP
The function \fBset_menu_pad\fR sets the character used to fill the space
-between the name and description parts of a menu item. \fBmenu_pad\fR returns
-the given menu's pad character. The default is a blank.
+between the name and description parts of a menu item.
+\fBmenu_pad\fR returns
+the given menu's pad character.
+The default is a blank.
.SH RETURN VALUE
These routines return one of the following:
.TP 5
@@ -76,19 +93,20 @@ These routines return one of the following:
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.SH SEE ALSO
-\fBcurses\fR(3X) and related pages whose names begin "menu_" for detailed
+\fBcurses\fR(3X) and related pages whose names begin \*(``menu_\*('' for detailed
descriptions of the entry points.
.SH NOTES
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/menu_cursor.3x b/man/menu_cursor.3x
index 66a835be58c8..52f46af08b2d 100644
--- a/man/menu_cursor.3x
+++ b/man/menu_cursor.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: menu_cursor.3x,v 1.8 2010/12/04 18:40:45 tom Exp $
+.\" $Id: menu_cursor.3x,v 1.11 2019/01/20 20:32:23 tom Exp $
.TH menu_cursor 3X ""
.SH NAME
-\fBmenu_cursor\fR \- position a menu's cursor
+\fBpos_menu_cursor\fR \- position a menu's cursor
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
@@ -38,7 +38,8 @@ int pos_menu_cursor(const MENU *menu);
.br
.SH DESCRIPTION
The function \fBpos_menu_cursor\fR restores the cursor to the current position
-associated with the menu's selected item. This is useful after \fBcurses\fR
+associated with the menu's selected item.
+This is useful after \fBcurses\fR
routines have been called to do screen-painting in response to a menu select.
.SH RETURN VALUE
This routine returns one of the following:
@@ -47,7 +48,7 @@ This routine returns one of the following:
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
@@ -60,8 +61,9 @@ The menu has not been posted.
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/menu_driver.3x b/man/menu_driver.3x
index 1fe5001fec05..086381f34be1 100644
--- a/man/menu_driver.3x
+++ b/man/menu_driver.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +26,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: menu_driver.3x,v 1.20 2010/12/04 18:38:55 tom Exp $
+.\" $Id: menu_driver.3x,v 1.25 2019/01/20 20:32:23 tom Exp $
.TH menu_driver 3X ""
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.SH NAME
\fBmenu_driver\fR \- command-processing loop of the menu system
@@ -44,7 +45,8 @@ through \fBmenu_driver\fR. This routine has three major input cases:
.bP
The input is a form navigation request.
Navigation request codes are constants defined in \fB<form.h>\fP,
-which are distinct from the key- and character codes returned by \fBwgetch\fP.
+which are distinct from the key- and character codes
+returned by \fBwgetch\fP(3X).
.bP
The input is a printable character.
Printable characters (which must be positive, less than 256) are
@@ -107,7 +109,8 @@ Move to the previous item matching the pattern match.
.PP
If the second argument is a printable 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, \fBmenu_driver\fR returns
+the new pattern.
+If there is no such match, \fBmenu_driver\fR returns
\fBE_NO_MATCH\fR and deletes the appended character from the buffer.
.PP
If the second argument is one of the above pre-defined requests, the
@@ -150,12 +153,14 @@ application specific command should be executed.
If a translation
into a request was done, \fBmenu_driver\fR returns the result of this request.
.PP
-If you clicked outside the user window or the mouse event could not be translated
+If you clicked outside the user window
+or the mouse event could not be translated
into a menu request an \fBE_REQUEST_DENIED\fR is returned.
.SS APPLICATION-DEFINED COMMANDS
.PP
If the second argument is neither printable nor one of the above
-pre-defined menu requests or KEY_MOUSE, the drive assumes it is an application-specific
+pre-defined menu requests or KEY_MOUSE,
+the drive assumes it is an application-specific
command and returns \fBE_UNKNOWN_COMMAND\fR. Application-defined commands
should be defined relative to \fBMAX_COMMAND\fR, the maximum value of these
pre-defined requests.
@@ -166,7 +171,7 @@ pre-defined requests.
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
@@ -193,8 +198,10 @@ The menu driver could not process the request.
The header file \fB<menu.h>\fR automatically includes the header files
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
-Version 7 or BSD versions. The support for mouse events is ncurses specific.
+These routines emulate the System V menu library.
+They were not supported on
+Version 7 or BSD versions.
+The support for mouse events is ncurses specific.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/menu_format.3x b/man/menu_format.3x
index b9a572b01774..b3385e8f49ad 100644
--- a/man/menu_format.3x
+++ b/man/menu_format.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: menu_format.3x,v 1.12 2010/12/04 18:40:45 tom Exp $
+.\" $Id: menu_format.3x,v 1.16 2019/01/20 20:32:23 tom Exp $
.TH menu_format 3X ""
.SH NAME
-\fBmenu_format\fR \- set and get menu sizes
+\fBset_menu_format\fP,
+\fBmenu_format\fP \- set and get menu sizes
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
@@ -40,12 +41,16 @@ void menu_format(const MENU *menu, int *rows, int *cols);
.br
.SH DESCRIPTION
The function \fBset_menu_format\fR 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, \fBpost_menu()\fR will fail.
+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, \fBpost_menu\fR will fail.
.PP
-The default format is 16 rows, 1 column. Calling \fBset_menu_format\fR with a
-null menu pointer will change this default. A zero row or column argument to
+The default format is 16 rows, 1 column.
+Calling \fBset_menu_format\fR with a
+null menu pointer will change this default.
+A zero row or column argument to
\fBset_menu_format\fR is interpreted as a request not to change the current
value.
.PP
@@ -58,7 +63,7 @@ These routines returns one of the following:
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
@@ -74,8 +79,9 @@ No items are connected to the menu.
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/menu_hook.3x b/man/menu_hook.3x
index 1fd74de77935..41d1c74aefa4 100644
--- a/man/menu_hook.3x
+++ b/man/menu_hook.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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: menu_hook.3x,v 1.11 2010/12/04 18:40:45 tom Exp $
+.\" $Id: menu_hook.3x,v 1.13 2019/01/20 20:32:23 tom Exp $
.TH menu_hook 3X ""
.SH NAME
\fBmenu_hook\fR \- set hooks for automatic invocation by applications
@@ -55,17 +55,20 @@ These functions make it possible to set hook functions to be called at various
points in the automatic processing of input event codes by \fBmenu_driver\fR.
.PP
The function \fBset_item_init\fR sets a hook to be called at menu-post time and
-each time the selected item changes (after the change). \fBitem_init\fR
+each time the selected item changes (after the change).
+\fBitem_init\fR
returns the current item init hook, if any (\fBNULL\fR if there is no such
hook).
.PP
The function \fBset_item_term\fR sets a hook to be called at menu-unpost time
-and each time the selected item changes (before the change). \fBitem_term\fR
+and each time the selected item changes (before the change).
+\fBitem_term\fR
returns the current item term hook, if any (\fBNULL\fR if there is no such
hook).
.PP
The function \fBset_menu_init\fR sets a hook to be called at menu-post time and
-just after the top row on the menu changes once it is posted. \fBmenu_init\fR
+just after the top row on the menu changes once it is posted.
+\fBmenu_init\fR
returns the current menu init hook, if any (\fBNULL\fR if there is no such
hook).
.PP
@@ -74,22 +77,25 @@ and just before the top row on the menu changes once it is posted.
\fBmenu_term\fR returns the current menu term hook, if any (\fBNULL\fR if there
is no such hook).
.SH RETURN VALUE
-Routines that return pointers return \fBNULL\fR on error. Other routines
+Routines that return pointers return \fBNULL\fR on error.
+Other routines
return one of the following:
.TP 5
.B E_OK
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric
S. Raymond.
diff --git a/man/menu_items.3x b/man/menu_items.3x
index 04b00ad76772..27f203c7f970 100644
--- a/man/menu_items.3x
+++ b/man/menu_items.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: menu_items.3x,v 1.10 2012/11/03 23:03:59 tom Exp $
+.\" $Id: menu_items.3x,v 1.13 2019/01/20 20:32:23 tom Exp $
.TH menu_items 3X ""
.SH NAME
-\fBmenu_items\fR \- make and break connections between items and menus
+\fBset_menu_items\fR,
+\fBmenu_items\fR,
+\fBitem_count\fP \- make and break connections between items and menus
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
@@ -69,7 +71,7 @@ No items are connected to the menu.
The menu is already posted.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
@@ -77,11 +79,12 @@ System error occurred (see \fBerrno\fR).
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.PP
The SVr4 menu library documentation specifies the \fBitem_count\fR error value
as \-1 (which is the value of \fBERR\fR).
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/menu_mark.3x b/man/menu_mark.3x
index 1425154b8dc4..64e73d0b601a 100644
--- a/man/menu_mark.3x
+++ b/man/menu_mark.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,9 +27,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: menu_mark.3x,v 1.11 2010/12/04 18:40:45 tom Exp $
+.\" $Id: menu_mark.3x,v 1.14 2019/01/20 20:32:23 tom Exp $
.TH menu_mark 3X ""
.SH NAME
+\fBset_menu_mark\fP,
\fBmenu_mark\fR \- get and set the menu mark string
.SH SYNOPSIS
\fB#include <menu.h>\fR
@@ -48,7 +49,8 @@ Calling \fBset_menu_mark\fR 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.
.PP
-The default string is "\-" (a dash). Calling \fBset_menu_mark\fR with
+The default string is "\-" (a dash).
+Calling \fBset_menu_mark\fR with
a non-\fBNULL\fR menu argument will change this default.
.PP
The function \fBmenu_mark\fR returns the menu's mark string (or \fBNULL\fR if
@@ -66,15 +68,16 @@ The routine succeeded.
Routine detected an incorrect or out-of-range argument.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/menu_new.3x b/man/menu_new.3x
index 11976547fc75..9fbab3412f58 100644
--- a/man/menu_new.3x
+++ b/man/menu_new.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: menu_new.3x,v 1.11 2010/12/04 18:40:45 tom Exp $
+.\" $Id: menu_new.3x,v 1.14 2019/01/20 20:32:23 tom Exp $
.TH menu_new 3X ""
.SH NAME
-\fBmenu_new\fR \- create and destroy menus
+\fBnew_menu\fP,
+\fBfree_menu\fR \- create and destroy menus
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
@@ -60,7 +61,7 @@ The function \fBfree_menu\fR returns one of the following:
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
@@ -73,8 +74,9 @@ The menu has already been posted.
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/menu_opts.3x b/man/menu_opts.3x
index 5f4cb0806b3e..fec6eab7c2ca 100644
--- a/man/menu_opts.3x
+++ b/man/menu_opts.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,9 +27,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: menu_opts.3x,v 1.12 2010/12/04 18:40:45 tom Exp $
+.\" $Id: menu_opts.3x,v 1.16 2019/01/20 20:32:23 tom Exp $
.TH menu_opts 3X ""
.SH NAME
+\fBset_menu_opts\fP,
+\fBmenu_opts_on\fP,
+\fBmenu_opts_off\fP,
\fBmenu_opts\fR \- set and get menu options
.SH SYNOPSIS
\fB#include <menu.h>\fR
@@ -74,6 +77,12 @@ Move the cursor to within the item name while pattern-matching.
O_NONCYCLIC
Don't wrap around next-item and previous-item,
requests to the other end of the menu.
+.TP 5
+O_MOUSE_MENU
+If user clicks with the mouse
+and it does not fall on the currently active menu,
+push \fBKEY_MOUSE\fP and the \fBMEVENT\fP data
+back on the queue to allow processing in another part of the calling program.
.SH RETURN VALUE
Except for \fBmenu_opts\fR, each routine returns one of the following:
.TP 5
@@ -81,7 +90,7 @@ Except for \fBmenu_opts\fR, each routine returns one of the following:
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_POSTED
The menu is already posted.
@@ -91,8 +100,9 @@ The menu is already posted.
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/menu_pattern.3x b/man/menu_pattern.3x
index e63a9f73d84c..1905fe1adcc8 100644
--- a/man/menu_pattern.3x
+++ b/man/menu_pattern.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +26,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: menu_pattern.3x,v 1.13 2010/12/04 18:40:45 tom Exp $
+.\" $Id: menu_pattern.3x,v 1.17 2019/01/20 20:32:23 tom Exp $
.TH menu_pattern 3X ""
.SH NAME
-\fBmenu_pattern\fR \- get and set a menu's pattern buffer
+\fBset_menu_pattern\fP,
+\fBmenu_pattern\fR \- set and get a menu's pattern buffer
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
@@ -38,19 +39,23 @@ int set_menu_pattern(MENU *menu, const char *pattern);
char *menu_pattern(const MENU *menu);
.br
.SH DESCRIPTION
-Every menu has an associated pattern match buffer. As input events that are
+Every menu has an associated pattern match buffer.
+As input events that are
printable characters come in, they are appended to this match buffer
and tested for a match, as described in \fBmenu_driver\fR(3X).
.PP
The function \fBset_menu_pattern\fR 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.
+and tries to find the first matching item.
+If it succeeds, that item becomes
+current; if not, the current item does not change.
.PP
The function \fBmenu_pattern\fR returns the pattern buffer of the given
\fImenu\fR.
.SH RETURN VALUE
-The function \fBmenu_pattern\fR returns a pointer, which is \fBNULL\fR if the \fImenu\fP parameter is \fBNULL\fP.
-Otherwise, it is a pointer to a string which is empty if no pattern has been set.
+The function \fBmenu_pattern\fR returns a pointer,
+which is \fBNULL\fR if the \fImenu\fP parameter is \fBNULL\fP.
+Otherwise, it is a pointer to a string which is empty
+if no pattern has been set.
It does not set errno.
.PP
The function \fBset_menu_pattern\fR may return the following error codes:
@@ -71,15 +76,16 @@ No items are connected to menu.
Character failed to match.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/menu_post.3x b/man/menu_post.3x
index d09d0ca4fe88..f2c46344cd3a 100644
--- a/man/menu_post.3x
+++ b/man/menu_post.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: menu_post.3x,v 1.11 2010/12/04 18:40:45 tom Exp $
+.\" $Id: menu_post.3x,v 1.17 2019/01/20 20:32:23 tom Exp $
.TH menu_post 3X ""
.SH NAME
-\fBmenu_post\fR \- write or erase menus from associated subwindows
+\fBpost_menu\fR,
+\fBunpost_menu\fR \- write or erase menus from associated subwindows
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
@@ -39,10 +40,13 @@ int post_menu(MENU *menu);
int unpost_menu(MENU *menu);
.br
.SH DESCRIPTION
-The function \fBpost_menu\fR displays a menu to its associated subwindow. To
-trigger physical display of the subwindow, use \fBrefresh\fR or some equivalent
+The function \fBpost_menu\fR displays a menu to its associated subwindow.
+To
+trigger physical display of the subwindow,
+use \fBrefresh\fR(3X) or some equivalent
\fBcurses\fR routine (the implicit \fBdoupdate\fR triggered by an \fBcurses\fR
-input request will do). \fBpost_menu\fR resets the selection status of all items.
+input request will do).
+\fBpost_menu\fR resets the selection status of all items.
.PP
The function \fBunpost_menu\fR erases menu from its associated subwindow.
.SH RETURN VALUE
@@ -52,7 +56,7 @@ These routines return one of the following:
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
@@ -64,8 +68,8 @@ The menu has already been posted.
Routine was called from an initialization or termination function.
.TP 5
.B E_NO_ROOM
-Menu is too large for its window. You should consider to use
-\fBset_menu_format()\fR to solve the problem.
+Menu is too large for its window.
+You should consider using \fBset_menu_format\fR to solve the problem.
.TP 5
.B E_NOT_POSTED
The menu has not been posted.
@@ -78,8 +82,9 @@ No items are connected to the menu.
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/menu_requestname.3x b/man/menu_requestname.3x
index d1957a2f1cd5..cc2d4c9ed59e 100644
--- a/man/menu_requestname.3x
+++ b/man/menu_requestname.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2015,2018 Free 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,10 +27,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: menu_requestname.3x,v 1.9 2010/12/04 18:40:45 tom Exp $
+.\" $Id: menu_requestname.3x,v 1.11 2018/07/28 21:34:06 tom Exp $
.TH menu_requestname 3X ""
.SH NAME
-\fBmenu_requestname\fR \- handle printable menu request names
+\fBmenu_request_by_name\fP,
+\fBmenu_request_name\fR \- handle printable menu request names
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
@@ -57,9 +58,11 @@ It does not set errno.
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines are specific to ncurses. They were not supported on
-Version 7, BSD or System V implementations. It is recommended that
+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 AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/menu_spacing.3x b/man/menu_spacing.3x
index 9e7c3eabfe92..b3038d5d734d 100644
--- a/man/menu_spacing.3x
+++ b/man/menu_spacing.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: menu_spacing.3x,v 1.12 2010/12/04 18:38:55 tom Exp $
+.\" $Id: menu_spacing.3x,v 1.15 2019/06/01 22:33:45 tom Exp $
.TH menu_spacing 3X ""
.SH NAME
-\fBmenu_spacing\fR \- Control spacing between menu items.
+\fBset_menu_spacing\fP,
+\fBmenu_spacing\fR \- set and get spacing between menu items.
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
@@ -46,21 +47,23 @@ int menu_spacing(const MENU *menu,
.br
.SH DESCRIPTION
The function \fBset_menu_spacing\fR sets the spacing information for the menu.
-Its parameter \fBspc_description\fR controls the number of spaces between an item name and an item
-description.
+Its parameter \fBspc_description\fR controls the number of spaces
+between an item name and an item description.
It must not be larger than \fBTABSIZE\fR.
The menu system puts in the
middle of this spacing area the pad character.
The remaining parts are filled with
spaces.
-The \fBspc_rows\fR parameter controls the number of rows that are used for an item.
+The \fBspc_rows\fR parameter controls the number of rows
+that are used for an item.
It must not be larger than 3.
The menu system inserts the blank lines between item rows, these lines
will contain the pad character in the appropriate positions.
-The \fBspc_columns\fR parameter 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 \fBspc_columns\fR parameter controls
+the number of blanks between columns of items.
+It must not be larger than \fBTABSIZE\fP.
+A value of 0 for all the spacing values resets them to the default,
+which is 1 for all of them.
.br
The function \fBmenu_spacing\fR passes back the spacing info for the menu.
If a
diff --git a/man/menu_userptr.3x b/man/menu_userptr.3x
index 0455fe3a0380..eb8ef99f17ca 100644
--- a/man/menu_userptr.3x
+++ b/man/menu_userptr.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2015,2018 Free 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,9 +27,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: menu_userptr.3x,v 1.10 2010/12/04 18:40:45 tom Exp $
+.\" $Id: menu_userptr.3x,v 1.12 2018/07/28 21:34:06 tom Exp $
.TH menu_userptr 3X ""
.SH NAME
+\fBset_menu_userptr\fP,
\fBmenu_userptr\fR \- associate application data with a menu item
.SH SYNOPSIS
\fB#include <menu.h>\fR
@@ -53,11 +54,12 @@ It does not set errno.
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.PP
The user pointer is a void pointer.
We chose not to leave it as a char pointer for SVr4 compatibility.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/menu_win.3x b/man/menu_win.3x
index 774eafa9fdf5..be1db5738b91 100644
--- a/man/menu_win.3x
+++ b/man/menu_win.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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: menu_win.3x,v 1.11 2010/12/04 18:38:55 tom Exp $
+.\" $Id: menu_win.3x,v 1.13 2019/01/20 20:32:23 tom Exp $
.TH menu_win 3X ""
.SH NAME
\fBmenu_win\fR \- make and break menu window and subwindow associations
@@ -45,11 +45,13 @@ WINDOW *menu_sub(const MENU *menu);
int scale_menu(const MENU *menu, int *rows, int *columns);
.br
.SH DESCRIPTION
-Every menu has an associated pair of \fBcurses\fR windows. The menu window
+Every menu has an associated pair of \fBcurses\fR 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.
.PP
-The first four functions get and set those windows. It is not necessary to set
+The first four functions get and set those windows.
+It is not necessary to set
either window; by default, the driver code uses \fBstdscr\fR for both.
.PP
In the \fBset_\fR functions, window argument of \fBNULL\fR is treated as though
@@ -59,14 +61,15 @@ to change the system default menu window or subwindow.
The function \fBscale_menu\fR returns the minimum size required for the
subwindow of \fImenu\fR.
.SH RETURN VALUE
-Routines that return pointers return \fBNULL\fR on error. Routines that return
+Routines that return pointers return \fBNULL\fR on error.
+Routines that return
an integer return one of the following error codes:
.TP 5
.B E_OK
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
@@ -84,8 +87,9 @@ No items are connected to the menu.
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/mitem_current.3x b/man/mitem_current.3x
index 86c9b4775eaa..00a876ab71cc 100644
--- a/man/mitem_current.3x
+++ b/man/mitem_current.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,14 +27,14 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: mitem_current.3x,v 1.13 2010/12/04 18:40:45 tom Exp $
+.\" $Id: mitem_current.3x,v 1.16 2019/03/23 21:47:36 tom Exp $
.TH mitem_current 3X ""
.SH NAME
\fBmitem_current\fR \- set and get current_menu_item
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
-int set_current_item(MENU *menu, const ITEM *item);
+int set_current_item(MENU *menu, ITEM *item);
.br
ITEM *current_item(const MENU *menu);
.br
@@ -46,13 +46,16 @@ int item_index(const ITEM *item);
.br
.SH DESCRIPTION
The function \fBset_current_item\fR sets the current item (the item on which
-the menu cursor is positioned). \fBcurrent_item\fR returns a pointer to the
+the menu cursor is positioned).
+\fBcurrent_item\fR returns a pointer to the
current item in the given menu.
.PP
The function \fBset_top_row\fR 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
-\fBO_ROWMAJOR\fR option is toggled). The item leftmost on the given row
-becomes current. The function \fBtop_row\fR returns the number of the top menu
+\fBO_ROWMAJOR\fR option is toggled).
+The item leftmost on the given row
+becomes current.
+The function \fBtop_row\fR returns the number of the top menu
row being displayed.
.PP
The function \fBitem_index\fR returns the (zero-origin) index of \fIitem\fR in
@@ -79,18 +82,19 @@ Routine was called from an initialization or termination function.
No items are connected to the menu.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.PP
The SVr4 menu library documentation specifies the \fBtop_row\fR and
\fBindex_item\fR error value as \-1 (which is the value of \fBERR\fR).
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/mitem_name.3x b/man/mitem_name.3x
index ff879e669776..1ea46b236a6b 100644
--- a/man/mitem_name.3x
+++ b/man/mitem_name.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2015,2018 Free 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,10 +27,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: mitem_name.3x,v 1.8 2010/12/04 18:40:45 tom Exp $
+.\" $Id: mitem_name.3x,v 1.10 2018/07/28 21:34:06 tom Exp $
.TH mitem_name 3X ""
.SH NAME
-\fBmitem_name\fR \- get menu item name and description fields
+\fBitem_name\fR,
+\fBitem_description\fR \- get menu item name and description fields
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
@@ -55,5 +56,5 @@ The header file \fB<menu.h>\fR automatically includes the header file
These routines emulate the System V menu library.
They were not supported on Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/mitem_new.3x b/man/mitem_new.3x
index 8e2449e2e208..1e6fd0d872ea 100644
--- a/man/mitem_new.3x
+++ b/man/mitem_new.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: mitem_new.3x,v 1.12 2010/12/04 18:40:45 tom Exp $
+.\" $Id: mitem_new.3x,v 1.15 2019/01/20 20:32:23 tom Exp $
.TH mitem_new 3X ""
.SH NAME
-\fBmitem_new\fR \- create and destroy menu items
+\fBnew_item\fP,
+\fBfree_item\fR \- create and destroy menu items
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
@@ -40,12 +41,16 @@ int free_item(ITEM *item);
.br
.SH DESCRIPTION
The function \fBnew_item\fR allocates a new item and initializes it from the
-\fBname\fR and \fBdescription\fR pointers. Please notice that the item stores
-only the pointers to the name and description. Those pointers must be valid
-during the lifetime of the item. So you should be very careful with names
+\fBname\fR and \fBdescription\fR pointers.
+Please notice that the item stores
+only the pointers to the name and description.
+Those pointers must be valid
+during the lifetime of the item.
+So you should be very careful with names
or descriptions allocated on the stack of some routines.
.br
-The function \fBfree_item\fR de-allocates an item. Please notice that it
+The function \fBfree_item\fR 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.
.SH RETURN VALUE
@@ -70,15 +75,16 @@ Routine detected an incorrect or out-of-range argument.
Item is connected to a menu.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/mitem_opts.3x b/man/mitem_opts.3x
index 37ea552328f6..b7aaff69af1c 100644
--- a/man/mitem_opts.3x
+++ b/man/mitem_opts.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +27,13 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: mitem_opts.3x,v 1.11 2010/12/04 18:40:45 tom Exp $
+.\" $Id: mitem_opts.3x,v 1.14 2019/01/20 20:32:23 tom Exp $
.TH mitem_opts 3X ""
.SH NAME
-\fBmitem_opts\fR \- set and get menu item options
+\fBset_item_opts\fP,
+\fBitem_opts_on\fP,
+\fBitem_opts_off\fP,
+\fBitem_opts\fR \- set and get menu item options
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
@@ -55,7 +58,8 @@ others alone.
The function \fBitem_opts\fR returns the item's current option bits.
.PP
There is only one defined option bit mask, \fBO_SELECTABLE\fR. When this is
-on, the item may be selected during menu processing. This option defaults
+on, the item may be selected during menu processing.
+This option defaults
to on.
.SH RETURN VALUE
Except for \fBitem_opts\fR, each routine returns one of the following:
@@ -64,15 +68,16 @@ Except for \fBitem_opts\fR, each routine returns one of the following:
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/mitem_userptr.3x b/man/mitem_userptr.3x
index 7b51ec50a655..0ddf40de8cf1 100644
--- a/man/mitem_userptr.3x
+++ b/man/mitem_userptr.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2015,2018 Free 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,10 +27,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: mitem_userptr.3x,v 1.11 2010/12/04 18:40:45 tom Exp $
+.\" $Id: mitem_userptr.3x,v 1.13 2018/07/28 21:34:06 tom Exp $
.TH mitem_userptr 3X ""
.SH NAME
-\fBmitem_userptr\fR \- associate application data with a menu item
+\fBset_item_userptr\fP,
+\fBitem_userptr\fR \- associate application data with a menu item
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
@@ -40,7 +41,8 @@ void *item_userptr(const ITEM *item);
.br
.SH DESCRIPTION
Every menu item has a field that can be used to hold application-specific data
-(that is, the menu-driver code leaves it alone). These functions get and set
+(that is, the menu-driver code leaves it alone).
+These functions get and set
that field.
.SH RETURN VALUE
The function \fBitem_userptr\fR returns a pointer (possibly \fBNULL\fR).
@@ -54,11 +56,12 @@ The \fBset_item_userptr\fP always returns \fBE_OK\fP (success).
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.PP
The user pointer is a void pointer.
We chose not to leave it as a char pointer for SVr4 compatibility.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/mitem_value.3x b/man/mitem_value.3x
index 57cfc536750f..061a57411ba6 100644
--- a/man/mitem_value.3x
+++ b/man/mitem_value.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +26,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: mitem_value.3x,v 1.10 2010/12/04 18:40:45 tom Exp $
+.\" $Id: mitem_value.3x,v 1.13 2019/01/20 20:32:23 tom Exp $
.TH mitem_value 3X ""
.SH NAME
-\fBmitem_value\fR \- set and get menu item values
+\fBset_item_value\fP,
+\fBitem_value\fP \- set and get menu item values
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
@@ -53,7 +54,7 @@ The function \fBset_item_value\fR returns one of the following:
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
.TP 5
.B E_REQUEST_DENIED
The menu driver could not process the request.
@@ -63,8 +64,9 @@ The menu driver could not process the request.
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/mitem_visible.3x b/man/mitem_visible.3x
index 4ff9405483c9..ab53c7ec1445 100644
--- a/man/mitem_visible.3x
+++ b/man/mitem_visible.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2010,2018 Free 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: mitem_visible.3x,v 1.7 2010/12/04 18:40:45 tom Exp $
+.\" $Id: mitem_visible.3x,v 1.8 2018/07/28 21:34:06 tom Exp $
.TH mitem_visible 3X ""
.SH NAME
\fBmitem_visible\fR \- check visibility of a menu item
@@ -46,8 +46,9 @@ portion will be smaller than the whole menu).
The header file \fB<menu.h>\fR automatically includes the header file
\fB<curses.h>\fR.
.SH PORTABILITY
-These routines emulate the System V menu library. They were not supported on
+These routines emulate the System V menu library.
+They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
-Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.
diff --git a/man/ncurses.3x b/man/ncurses.3x
index 6a5aa7c0c2fe..289f47c7b6d3 100644
--- a/man/ncurses.3x
+++ b/man/ncurses.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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: ncurses.3x,v 1.112 2013/07/20 19:29:59 tom Exp $
+.\" $Id: ncurses.3x,v 1.143 2019/11/30 20:47:07 tom Exp $
.hy 0
.TH ncurses 3X ""
.ie \n(.g .ds `` \(lq
@@ -35,7 +35,22 @@
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
+.de NS
+.ie n .sp
+.el .sp .5
+.ie n .in +4
+.el .in +2
+.nf
+.ft C \" Courier
+..
+.de NE
+.fi
+.ft R
+.ie n .in -4
+.el .in -2
..
.ds n 5
.ds d @TERMINFO@
@@ -82,12 +97,14 @@ manipulation; output to windows and pads; reading terminal input; control over
terminal and \fBcurses\fR input and output options; environment query
routines; color manipulation; use of soft label keys; terminfo capabilities;
and access to low-level terminal-manipulation routines.
+.SS Initialization
.PP
The library uses the locale which the calling program has initialized.
That is normally done with \fBsetlocale\fP:
-.sp
- \fBsetlocale(LC_ALL, "");\fP
-.sp
+.NS
+\fBsetlocale(LC_ALL, "");\fP
+.NE
+.PP
If the locale is not initialized,
the library assumes that characters are printable as in ISO\-8859\-1,
to work with certain legacy programs.
@@ -98,26 +115,29 @@ The function \fBinitscr\fR or \fBnewterm\fR
must be called to initialize the library
before any of the other routines that deal with windows
and screens are used.
-The routine \fBendwin\fR must be called before exiting.
+The routine \fBendwin\fR(3X) must be called before exiting.
.PP
To get character-at-a-time input without echoing (most
interactive, screen oriented programs want this), the following
sequence should be used:
-.sp
- \fBinitscr(); cbreak(); noecho();\fR
-.sp
+.NS
+\fBinitscr(); cbreak(); noecho();\fR
+.NE
+.PP
Most programs would additionally use the sequence:
-.sp
- \fBnonl();\fR
- \fBintrflush(stdscr, FALSE);\fR
- \fBkeypad(stdscr, TRUE);\fR
-.sp
+.NS
+\fBnonl();\fR
+\fBintrflush(stdscr, FALSE);\fR
+\fBkeypad(stdscr, TRUE);\fR
+.NE
+.PP
Before a \fBcurses\fR program is run, the tab stops of the terminal
should be set and its initialization strings, if defined, must be output.
This can be done by executing the \fB@TPUT@ init\fR command
after the shell environment variable \fBTERM\fR has been exported.
\fB@TSET@(1)\fR is usually responsible for doing this.
[See \fBterminfo\fR(\*n) for further details.]
+.SS Datatypes
.PP
The \fBncurses\fR library permits manipulation of data structures,
called \fIwindows\fR, which can be thought of as two-dimensional
@@ -144,7 +164,7 @@ allowing the user to specify a window.
The routines not beginning
with \fBw\fR affect \fBstdscr\fR.
.PP
-After using routines to manipulate a window, \fBrefresh\fR is called,
+After using routines to manipulate a window, \fBrefresh\fR(3X) is called,
telling \fBcurses\fR to make the user's CRT screen look like
\fBstdscr\fR.
The characters in a window are actually of type
@@ -167,6 +187,7 @@ transmit escape sequences into single values.
The video attributes, line
drawing characters, and input values use names, defined in \fB<curses.h>\fR,
such as \fBA_REVERSE\fR, \fBACS_HLINE\fR, and \fBKEY_LEFT\fR.
+.SS Environment variables
.PP
If the environment variables \fBLINES\fR and \fBCOLUMNS\fR are set, or if the
program is executing in a window environment, line and column information in
@@ -180,19 +201,22 @@ If the environment variable \fBTERMINFO\fR is defined, any program using
standard place.
For example, if \fBTERM\fR is set to \fBatt4424\fR, then the
compiled terminal definition is found in
-.sp
- \fB\*d/a/att4424\fR.
-.sp
+.NS
+\fB\*d/a/att4424\fR.
+.NE
+.PP
(The \fBa\fR is copied from the first letter of \fBatt4424\fR to avoid
creation of huge directories.) However, if \fBTERMINFO\fR is set to
\fB$HOME/myterms\fR, \fBcurses\fR first checks
-.sp
- \fB$HOME/myterms/a/att4424\fR,
-.sp
+.NS
+\fB$HOME/myterms/a/att4424\fR,
+.NE
+.PP
and if that fails, it then checks
-.sp
- \fB\*d/a/att4424\fR.
-.sp
+.NS
+\fB\*d/a/att4424\fR.
+.NE
+.PP
This is useful for developing experimental definitions or when write
permission in \fB\*d\fR is not available.
.PP
@@ -240,10 +264,10 @@ Types used for the terminfo routines such as
This manual page describes functions which may appear in any configuration
of the library.
There are two common configurations of the library:
-.RS
+.RS 3
.TP 5
-ncurses
-the "normal" library, which handles 8-bit characters.
+.I ncurses
+the \*(``normal\*('' library, which handles 8-bit characters.
The normal (8-bit) library stores characters combined with attributes
in \fBchtype\fP data.
.IP
@@ -253,13 +277,14 @@ In either case, the data is stored in something like an integer.
.IP
Each cell (row and column) in a \fBWINDOW\fP is stored as a \fBchtype\fP.
.TP 5
-ncursesw
-the so-called "wide" library, which handles multibyte characters
+.I ncursesw
+the so-called \*(``wide\*('' library, which handles multibyte characters
(see the section on \fBALTERNATE CONFIGURATIONS\fP).
-The "wide" library includes all of the calls from the "normal" library.
+The \*(``wide\*('' library includes all of the calls
+from the \*(``normal\*('' library.
It adds about one third more calls using data types which store
multibyte characters:
-.RS
+.RS 5
.TP 5
.B cchar_t
corresponds to \fBchtype\fP.
@@ -270,9 +295,13 @@ may be more than one character per cell.
The video attributes and color are stored in separate fields of the structure.
.IP
Each cell (row and column) in a \fBWINDOW\fP is stored as a \fBcchar_t\fP.
+.IP
+The \fBsetcchar\fP(3X) and \fBgetcchar\fP(3X)
+functions store and retrieve the data from
+a \fBcchar_t\fP structure.
.TP 5
.B wchar_t
-stores a "wide" character.
+stores a \*(``wide\*('' character.
Like \fBchtype\fP, this may be an integer.
.TP 5
.B wint_t
@@ -280,10 +309,10 @@ stores a \fBwchar_t\fP or \fBWEOF\fP \- not the same, though both may have
the same size.
.RE
.IP
-The "wide" library provides new functions which are analogous to
-functions in the "normal" library.
+The \*(``wide\*('' library provides new functions which are analogous to
+functions in the \*(``normal\*('' library.
There is a naming convention which relates many of the normal/wide variants:
-a "_w" is inserted into the name.
+a \*(``_w\*('' is inserted into the name.
For example, \fBwaddch\fP becomes \fBwadd_wch\fP.
.RE
.PP
@@ -291,7 +320,7 @@ For example, \fBwaddch\fP becomes \fBwadd_wch\fP.
.SS Routine Name Index
The following table lists each \fBcurses\fR routine and the name of
the manual page on which it is described.
-Routines flagged with `*'
+Routines flagged with \*(``*\*(''
are ncurses-specific, not described by XPG4 or present in SVr4.
.PP
.TS
@@ -323,6 +352,7 @@ addnstr/\fBcurs_addstr\fR(3X)
addnwstr/\fBcurs_addwstr\fR(3X)
addstr/\fBcurs_addstr\fR(3X)
addwstr/\fBcurs_addwstr\fR(3X)
+alloc_pair/\fBnew_pair\fR(3X)*
assume_default_colors/\fBdefault_colors\fR(3X)*
attr_get/\fBcurs_attr\fR(3X)
attr_off/\fBcurs_attr\fR(3X)
@@ -372,9 +402,14 @@ endwin/\fBcurs_initscr\fR(3X)
erase/\fBcurs_clear\fR(3X)
erasechar/\fBcurs_termattrs\fR(3X)
erasewchar/\fBcurs_termattrs\fR(3X)
+extended_color_content/\fBcurs_color\fR(3X)*
+extended_pair_content/\fBcurs_color\fR(3X)*
+extended_slk_color/\fBcurs_slk\fR(3X)*
filter/\fBcurs_util\fR(3X)
+find_pair/\fBnew_pair\fR(3X)*
flash/\fBcurs_beep\fR(3X)
flushinp/\fBcurs_util\fR(3X)
+free_pair/\fBnew_pair\fR(3X)*
get_wch/\fBcurs_get_wch\fR(3X)
get_wstr/\fBcurs_get_wstr\fR(3X)
getattrs/\fBcurs_attr\fR(3X)
@@ -417,6 +452,8 @@ inch/\fBcurs_inch\fR(3X)
inchnstr/\fBcurs_inchstr\fR(3X)
inchstr/\fBcurs_inchstr\fR(3X)
init_color/\fBcurs_color\fR(3X)
+init_extended_color/\fBcurs_color\fR(3X)*
+init_extended_pair/\fBcurs_color\fR(3X)*
init_pair/\fBcurs_color\fR(3X)
initscr/\fBcurs_initscr\fR(3X)
innstr/\fBcurs_instr\fR(3X)
@@ -441,7 +478,9 @@ is_leaveok/\fBcurs_opaque\fR(3X)*
is_linetouched/\fBcurs_touch\fR(3X)
is_nodelay/\fBcurs_opaque\fR(3X)*
is_notimeout/\fBcurs_opaque\fR(3X)*
+is_pad/\fBcurs_opaque\fR(3X)*
is_scrollok/\fBcurs_opaque\fR(3X)*
+is_subwin/\fBcurs_opaque\fR(3X)*
is_syncok/\fBcurs_opaque\fR(3X)*
is_term_resized/\fBresizeterm\fR(3X)*
is_wintouched/\fBcurs_touch\fR(3X)
@@ -574,6 +613,7 @@ refresh/\fBcurs_refresh\fR(3X)
reset_prog_mode/\fBcurs_kernel\fR(3X)
reset_shell_mode/\fBcurs_kernel\fR(3X)
resetty/\fBcurs_kernel\fR(3X)
+resize_term/\fBresizeterm\fR(3X)*
resizeterm/\fBresizeterm\fR(3X)*
restartterm/\fBcurs_terminfo\fR(3X)
ripoffline/\fBcurs_kernel\fR(3X)
@@ -627,6 +667,7 @@ tigetflag/\fBcurs_terminfo\fR(3X)
tigetnum/\fBcurs_terminfo\fR(3X)
tigetstr/\fBcurs_terminfo\fR(3X)
timeout/\fBcurs_inopts\fR(3X)
+tiparm/\fBcurs_terminfo\fR(3X)*
touchline/\fBcurs_touch\fR(3X)
touchwin/\fBcurs_touch\fR(3X)
tparm/\fBcurs_terminfo\fR(3X)
@@ -643,7 +684,7 @@ use_default_colors/\fBdefault_colors\fR(3X)*
use_env/\fBcurs_util\fR(3X)
use_extended_names/\fBcurs_extend\fR(3X)*
use_legacy_coding/\fBlegacy_coding\fR(3X)*
-use_tioctl/\fBcurs_util\fR(3X)
+use_tioctl/\fBcurs_util\fR(3X)*
vid_attr/\fBcurs_terminfo\fR(3X)
vid_puts/\fBcurs_terminfo\fR(3X)
vidattr/\fBcurs_terminfo\fR(3X)
@@ -693,8 +734,11 @@ wget_wch/\fBcurs_get_wch\fR(3X)
wget_wstr/\fBcurs_get_wstr\fR(3X)
wgetbkgrnd/\fBcurs_bkgrnd\fR(3X)
wgetch/\fBcurs_getch\fR(3X)
+wgetdelay/\fBcurs_opaque\fR(3X)*
wgetn_wstr/\fBcurs_get_wstr\fR(3X)
wgetnstr/\fBcurs_getstr\fR(3X)
+wgetparent/\fBcurs_opaque\fR(3X)*
+wgetscrreg/\fBcurs_opaque\fR(3X)*
wgetstr/\fBcurs_getstr\fR(3X)
whline/\fBcurs_border\fR(3X)
whline_set/\fBcurs_border_set\fR(3X)
@@ -756,108 +800,109 @@ right-hand side of assignment statements).
.PP
Routines that return pointers return \fBNULL\fR on error.
.SH ENVIRONMENT
+.PP
The following environment symbols are useful for customizing the
runtime behavior of the \fBncurses\fR library.
The most important ones have been already discussed in detail.
-.TP 5
-BAUDRATE
-The debugging library checks this environment variable when the application
-has redirected output to a file.
-The variable's numeric value is used for the baudrate.
-If no value is found, \fBncurses\fR uses 9600.
-This allows testers to construct repeatable test-cases
-that take into account costs that depend on baudrate.
-.TP 5
-CC
+.SS CC command-character
+.PP
When set, change occurrences of the command_character
(i.e., the \fBcmdch\fP capability)
of the loaded terminfo entries to the value of this variable.
Very few terminfo entries provide this feature.
-.IP
+.PP
Because this name is also used in development environments to represent
the C compiler's name, \fBncurses\fR ignores it if it does not happen to
be a single character.
-.TP 5
-COLUMNS
+.SS BAUDRATE
+.PP
+The debugging library checks this environment variable when the application
+has redirected output to a file.
+The variable's numeric value is used for the baudrate.
+If no value is found, \fBncurses\fR uses 9600.
+This allows testers to construct repeatable test-cases
+that take into account costs that depend on baudrate.
+.SS COLUMNS
+.PP
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 \fBCOLUMNS\fP value nor the terminal's screen size is available,
\fBncurses\fR uses the size which may be specified in the terminfo database
(i.e., the \fBcols\fR capability).
-.IP
+.PP
It is important that your application use a correct size for the screen.
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.
However, setting \fBCOLUMNS\fP and/or \fBLINES\fP overrides the library's
use of the screen size obtained from the operating system.
-.IP
+.PP
Either \fBCOLUMNS\fP or \fBLINES\fP symbols may be specified independently.
This is mainly useful to circumvent legacy misfeatures of terminal descriptions,
e.g., xterm which commonly specifies a 65 line screen.
For best results, \fBlines\fR and \fBcols\fR should not be specified in
a terminal description for terminals which are run as emulations.
-.IP
+.PP
Use the \fBuse_env\fR function to disable all use of external environment
(but not including system calls) to determine the screen size.
Use the \fBuse_tioctl\fR function to update \fBCOLUMNS\fP or \fBLINES\fP
to match the screen size obtained from system calls or the terminal database.
-.TP 5
-ESCDELAY
+.SS ESCDELAY
+.PP
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.
-.IP
+.PP
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.
-.IP
+.PP
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.
-.IP
+.PP
In addition to the environment variable,
this implementation provides a global variable with the same name.
Portable applications should not rely upon the presence of ESCDELAY
in either form,
but setting the environment variable rather than the global variable
does not create problems when compiling an application.
-.TP 5
-HOME
+.SS HOME
Tells \fBncurses\fR where your home directory is.
That is where it may read and write auxiliary terminal descriptions:
-.IP
+.NS
$HOME/.termcap
-.br
$HOME/.terminfo
-.TP 5
-LINES
+.NE
+.SS LINES
+.PP
Like COLUMNS, specify the height of the screen in characters.
See COLUMNS for a detailed description.
-.TP 5
-MOUSE_BUTTONS_123
+.SS MOUSE_BUTTONS_123
+.PP
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:
-.sp
+.NS
1 = left
.br
2 = right
.br
3 = middle.
-.sp
+.NE
+.PP
This variable lets you customize the mouse.
The variable must be three numeric digits 1\-3 in any order, e.g., 123 or 321.
If it is not specified, \fBncurses\fR uses 132.
-.TP 5
-NCURSES_ASSUMED_COLORS
+.SS NCURSES_ASSUMED_COLORS
+.PP
Override the compiled-in assumption that the
terminal's default colors are white-on-black
(see \fBdefault_colors\fR(3X)).
@@ -867,35 +912,45 @@ For example, to tell ncurses to not assume anything
about the colors, set this to "\-1,\-1".
To make it green-on-black, set it to "2,0".
Any positive value from zero to the terminfo \fBmax_colors\fR value is allowed.
-.TP 5
-NCURSES_GPM_TERMS
+.SS NCURSES_CONSOLE2
+This applies only to the MinGW port of ncurses.
+.PP
+The \fBConsole2\fP program's handling of the Microsoft Console API call
+\fBCreateConsoleScreenBuffer\fP is defective.
+Applications which use this will hang.
+However, it is possible to simulate the action of this call by
+mapping coordinates,
+explicitly saving and restoring the original screen contents.
+Setting the environment variable \fBNCGDB\fP has the same effect.
+.SS NCURSES_GPM_TERMS
+.PP
This applies only to ncurses configured to use the GPM interface.
-.IP
+.PP
If present,
the environment variable is a list of one or more terminal names
-against which the TERM environment variable is matched.
+against which the \fBTERM\fP environment variable is matched.
Setting it to an empty value disables the GPM interface;
using the built-in support for xterm, etc.
-.IP
+.PP
If the environment variable is absent,
-ncurses will attempt to open GPM if TERM contains "linux".
-.TP 5
-NCURSES_NO_HARD_TABS
+ncurses will attempt to open GPM if \fBTERM\fP contains \*(``linux\*(''.
+.SS NCURSES_NO_HARD_TABS
+.PP
\fBNcurses\fP may use tabs as part of the cursor movement optimization.
In some cases,
your terminal driver may not handle these properly.
Set this environment variable to disable the feature.
You can also adjust your \fBstty\fP settings to avoid the problem.
-.TP 5
-NCURSES_NO_MAGIC_COOKIES
+.SS NCURSES_NO_MAGIC_COOKIE
+.PP
Some terminals use a magic-cookie feature which requires special handling
to make highlighting and other video attributes display properly.
You can suppress the highlighting entirely for these terminals by
setting this environment variable.
-.TP 5
-NCURSES_NO_PADDING
+.SS NCURSES_NO_PADDING
+.PP
Most of the terminal descriptions in the terminfo database are written
-for real "hardware" terminals.
+for real \*(``hardware\*('' terminals.
Many people use terminal emulators
which run in a windowing environment and use curses-based applications.
Terminal emulators can duplicate
@@ -909,29 +964,28 @@ 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.
-.IP
+.PP
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.
-.IP
+.PP
Set the NCURSES_NO_PADDING environment variable to disable all but mandatory
padding.
Mandatory padding is used as a part of special control
sequences such as \fIflash\fR.
-.TP 5
-NCURSES_NO_SETBUF
+.SS NCURSES_NO_SETBUF
This setting is obsolete.
Before changes
-.RS
+.RS 3
.bP
-started with 5.9 patch 20120825
+started with 5.9 patch 20120825
and
.bP
continued
though 5.9 patch 20130126
.RE
-.IP
+.PP
\fBncurses\fR enabled buffered output during terminal initialization.
This was done (as in SVr4 curses) for performance reasons.
For testing purposes, both of \fBncurses\fR and certain applications,
@@ -939,11 +993,11 @@ this feature was made optional.
Setting the NCURSES_NO_SETBUF variable
disabled output buffering, leaving the output in the original (usually
line buffered) mode.
-.IP
+.PP
In the current implementation,
ncurses performs its own buffering and does not require this workaround.
It does not modify the buffering of the standard output.
-.IP
+.PP
The reason for the change was to make the behavior for interrupts and
other signals more robust.
One drawback is that certain nonconventional programs would mix
@@ -953,30 +1007,30 @@ the buffered standard output but its own output (to the same file descriptor).
As a special case, the low-level calls such as \fBputp\fP still use the
standard output.
But high-level curses calls do not.
-.TP 5
-NCURSES_NO_UTF8_ACS
+.SS NCURSES_NO_UTF8_ACS
+.PP
During initialization, the \fBncurses\fR library
checks for special cases where VT100 line-drawing (and the corresponding
alternate character set capabilities) described in the terminfo are known
to be missing.
Specifically, when running in a UTF\-8 locale,
the Linux console emulator and the GNU screen program ignore these.
-Ncurses checks the TERM environment variable for these.
+Ncurses checks the \fBTERM\fP environment variable for these.
For other special cases, you should set this environment variable.
Doing this tells ncurses to use Unicode values which correspond to
the VT100 line-drawing glyphs.
That works for the special cases cited,
and is likely to work for terminal emulators.
-.IP
+.PP
When setting this variable, you should set it to a nonzero value.
Setting it to zero (or to a nonnumber)
-disables the special check for "linux" and "screen".
-.IP
+disables the special check for \*(``linux\*('' and \*(``screen\*(''.
+.PP
As an alternative to the environment variable,
ncurses checks for an extended terminfo capability \fBU8\fP.
This is a numeric capability which can be compiled using \fB@TIC@\ \-x\fP.
For example
-.RS 5
+.RS 3
.ft CW
.sp
.nf
@@ -991,94 +1045,157 @@ xterm-utf8|xterm relying on UTF-8 line-graphics,
.fi
.ft
.RE
-.IP
-The name "U8" is chosen to be two characters,
+.PP
+The name \*(``U8\*('' is chosen to be two characters,
to permit it to be used by applications that use ncurses'
termcap interface.
-.TP 5
-NCURSES_TRACE
+.SS NCURSES_TRACE
+.PP
During initialization, the \fBncurses\fR debugging library
checks the NCURSES_TRACE environment variable.
If it is defined, to a numeric value, \fBncurses\fR calls the \fBtrace\fR
function, using that value as the argument.
-.IP
+.PP
The argument values, which are defined in \fBcurses.h\fR, provide several
types of information.
When running with traces enabled, your application will write the
file \fBtrace\fR to the current directory.
-.TP 5
-TERM
+.PP
+See \fBcurs_trace\fP(3X) for more information.
+.SS TERM
+.PP
Denotes your terminal type.
Each terminal type is distinct, though many are similar.
-.TP 5
-TERMCAP
+.PP
+\fBTERM\fP is commonly set by terminal emulators to help
+applications find a workable terminal description.
+Some of those choose a popular approximation, e.g.,
+\*(``ansi\*('', \*(``vt100\*('', \*(``xterm\*('' rather than an exact fit.
+Not infrequently, your application will have problems with that approach,
+e.g., incorrect function-key definitions.
+.PP
+If you set \fBTERM\fP in your environment,
+it has no effect on the operation of the terminal emulator.
+It only affects the way applications work within the terminal.
+Likewise, as a general rule (\fBxterm\fP being a rare exception),
+terminal emulators which allow you to
+specify \fBTERM\fP as a parameter or configuration value do
+not change their behavior to match that setting.
+.SS TERMCAP
If the \fBncurses\fR library has been configured with \fItermcap\fR
support, \fBncurses\fR will check for a terminal's description in
termcap form if it is not available in the terminfo database.
-.IP
-The TERMCAP environment variable contains either a terminal description (with
-newlines stripped out),
+.PP
+The \fBTERMCAP\fP environment variable contains
+either a terminal description (with newlines stripped out),
or a file name telling where the information denoted by
-the TERM environment variable exists.
+the \fBTERM\fP environment variable exists.
In either case, setting it directs \fBncurses\fR to ignore
the usual place for this information, e.g., /etc/termcap.
-.TP 5
-TERMINFO
-Overrides the directory in which \fBncurses\fR searches for your terminal
+.SS TERMINFO
+.PP
+\fBncurses\fP can be configured to read from multiple terminal databases.
+The \fBTERMINFO\fP variable overrides the location for
+the default terminal database.
+Terminal descriptions (in terminal format) are stored in terminal databases:
+.bP
+Normally these are stored in a directory tree,
+using subdirectories named by the first letter of the terminal names therein.
+.IP
+This is the scheme used in System V, which legacy Unix systems use,
+and the \fBTERMINFO\fP variable is used by \fIcurses\fP applications on those
+systems to override the default location of the terminal database.
+.bP
+If \fBncurses\fP is built to use hashed databases,
+then each entry in this list may be the path of a hashed database file, e.g.,
+.NS
+/usr/share/terminfo.db
+.NE
+.IP
+rather than
+.NS
+/usr/share/terminfo/
+.NE
+.IP
+The hashed database uses less disk-space and is a little faster than the
+directory tree.
+However,
+some applications assume the existence of the directory tree,
+reading it directly
+rather than using the terminfo library calls.
+.bP
+If \fBncurses\fP is built with a support for reading termcap files
+directly, then an entry in this list may be the path of a termcap file.
+.bP
+If the \fBTERMINFO\fP variable begins with
+\*(``hex:\*('' or \*(``b64:\*('',
+\fBncurses\fP uses the remainder of that variable as a compiled terminal
description.
-This is the simplest, but not the only way to change the list of directories.
-The complete list of directories in order follows:
-.RS
+You might produce the base64 format using \fBinfocmp\fP(1M):
+.NS
+TERMINFO="$(infocmp -0 -Q2 -q)"
+export TERMINFO
+.NE
+.IP
+The compiled description is used if it corresponds to the terminal identified
+by the \fBTERM\fP variable.
+.PP
+Setting \fBTERMINFO\fP is the simplest,
+but not the only way to set location of the default terminal database.
+The complete list of database locations in order follows:
+.RS 3
.bP
-the last directory to which \fBncurses\fR wrote, if any, is searched first
+the last terminal database to which \fBncurses\fR wrote,
+if any, is searched first
.bP
-the directory specified by the TERMINFO environment variable
+the location specified by the TERMINFO environment variable
.bP
$HOME/.terminfo
.bP
-directories listed in the TERMINFO_DIRS environment variable
+locations listed in the TERMINFO_DIRS environment variable
.bP
-one or more directories whose names are configured and compiled into the
+one or more locations whose names are configured and compiled into the
ncurses library, i.e.,
-.RS
+.RS 3
.bP
@TERMINFO_DIRS@ (corresponding to the TERMINFO_DIRS variable)
.bP
@TERMINFO@ (corresponding to the TERMINFO variable)
.RE
.RE
-.TP 5
-TERMINFO_DIRS
-Specifies a list of directories to search for terminal descriptions.
+.PP
+.SS TERMINFO_DIRS
+.PP
+Specifies a list of locations to search for terminal descriptions.
+Each location in the list is a terminal database as described in
+the section on the \fBTERMINFO\fP variable.
The list is separated by colons (i.e., ":") on Unix, semicolons on OS/2 EMX.
-.IP
-All of the terminal descriptions are in terminfo form.
-Normally these are stored in a directory tree,
-using subdirectories named by the first letter of the terminal names therein.
-.IP
-If \fBncurses\fP is built with a hashed database,
-then each entry in this list can also be the path of the corresponding
-database file.
-.IP
-If \fBncurses\fP is built with a support for reading termcap files
-directly, then an entry in this list may be the path of a termcap file.
-.TP 5
-TERMPATH
-If TERMCAP does not hold a file name then \fBncurses\fR checks
-the TERMPATH environment variable.
+.PP
+There is no corresponding feature in System V terminfo;
+it is an extension developed for \fBncurses\fP.
+.SS TERMPATH
+.PP
+If \fBTERMCAP\fP does not hold a file name then \fBncurses\fR checks
+the \fBTERMPATH\fP environment variable.
This is a list of filenames separated by spaces or colons (i.e., ":") on Unix,
semicolons on OS/2 EMX.
-.IP
-If the TERMPATH environment variable is not set,
+.PP
+If the \fBTERMPATH\fP environment variable is not set,
\fBncurses\fR looks in the files
-/etc/termcap, /usr/share/misc/termcap and $HOME/.termcap, in that order.
+.NS
+/etc/termcap, /usr/share/misc/termcap and $HOME/.termcap,
+.NE
+.PP
+in that order.
.PP
The library may be configured to disregard the following variables when the
current user is the superuser (root), or if the application uses setuid or
setgid permissions:
-.IP
+.NS
$TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME.
+.NE
.SH ALTERNATE CONFIGURATIONS
+.PP
Several different configurations are possible,
depending on the configure script options used when building \fBncurses\fP.
There are a few main options whose effects are visible to the applications
@@ -1086,19 +1203,17 @@ developer using \fBncurses\fP:
.TP 5
\-\-disable\-overwrite
The standard include for \fBncurses\fP is as noted in \fBSYNOPSIS\fP:
-.RS
-.sp
+.NS
\fB#include <curses.h>\fR
-.RE
+.NE
.IP
This option is used to avoid filename conflicts when \fBncurses\fP
is not the main implementation of curses of the computer.
If \fBncurses\fP is installed disabling overwrite, it puts its headers in
a subdirectory, e.g.,
-.RS
-.sp
+.NS
\fB#include <ncurses/curses.h>\fR
-.RE
+.NE
.IP
It also omits a symbolic link which would allow you to use \fB\-lcurses\fP
to build executables.
@@ -1107,30 +1222,60 @@ to build executables.
The configure script renames the library and
(if the \fB\-\-disable\-overwrite\fP option is used)
puts the header files in a different subdirectory.
-All of the library names have a "w" appended to them,
+All of the library names have a \*(``w\*('' appended to them,
i.e., instead of
-.RS
-.sp
+.NS
\fB\-lncurses\fR
-.RE
+.NE
.IP
you link with
-.RS
-.sp
+.NS
\fB\-lncursesw\fR
+.NE
+.IP
+You must also enable the wide-character features in the header file
+when compiling for the wide-character library
+to use the extended (wide-character) functions.
+The symbol which enables these features has changed since XSI Curses, Issue 4:
+.RS
+.bP
+Originally, the wide-character feature required the symbol
+\fB_XOPEN_SOURCE_EXTENDED\fP
+but that was only valid for XPG4 (1996).
+.bP
+Later, that was deemed conflicting with \fB_XOPEN_SOURCE\fP defined to 500.
+.bP
+As of mid-2018,
+none of the features in this implementation require a \fB_XOPEN_SOURCE\fP
+feature greater than 600.
+However, X/Open Curses, Issue 7 (2009) recommends defining it to 700.
+.bP
+Alternatively, you can enable the feature by defining \fBNCURSES_WIDECHAR\fP
+with the caveat that some other header file than \fBcurses.h\fP
+may require a specific value for \fB_XOPEN_SOURCE\fP
+(or a system-specific symbol).
.RE
.IP
-You must also define \fB_XOPEN_SOURCE_EXTENDED\fP when compiling for the
-wide-character library to use the extended (wide-character) functions.
The \fBcurses.h\fP file which is installed for the wide-character
library is designed to be compatible with the normal library's header.
Only the size of the \fBWINDOW\fP structure differs, and very few
applications require more than a pointer to \fBWINDOW\fPs.
+.IP
If the headers are installed allowing overwrite,
the wide-character library's headers should be installed last,
to allow applications to be built using either library
from the same set of headers.
.TP 5
+\-\-with\-pthread
+The configure script renames the library.
+All of the library names have a \*(``t\*('' appended to them
+(before any \*(``w\*('' added by \fB\-\-enable\-widec\fP).
+.IP
+The global variables such as \fBLINES\fP are replaced by macros to
+allow read-only access.
+At the same time, setter-functions are provided to set these values.
+Some applications (very few) may require changes to work with this convention.
+.TP 5
\-\-with\-shared
.TP
\-\-with\-normal
@@ -1140,8 +1285,8 @@ from the same set of headers.
\-\-with\-profile
The shared and normal (static) library names differ by their suffixes,
e.g., \fBlibncurses.so\fP and \fBlibncurses.a\fP.
-The debug and profiling libraries add a "_g" and a "_p" to the root
-names respectively,
+The debug and profiling libraries add a \*(``_g\*(''
+and a \*(``_p\*('' to the root names respectively,
e.g., \fBlibncurses_g.a\fP and \fBlibncurses_p.a\fP.
.TP 5
\-\-with\-trace
@@ -1157,9 +1302,11 @@ directory containing initialization files for the terminal capability database
terminal capability database
.SH SEE ALSO
\fBterminfo\fR(\*n) and related pages whose names begin
-"curs_" for detailed routine descriptions.
+\*(``curs_\*('' for detailed routine descriptions.
+.br
+\fBcurs_variables\fR(3X)
.br
-\fBcurs_variables\fR(3X)
+\fBuser_caps\fP(5) for user-defined capabilities
.SH EXTENSIONS
The \fBncurses\fR library can be compiled with an option (\fB\-DUSE_GETCAP\fR)
that falls back to the old-style /etc/termcap file if the terminal setup code
@@ -1177,7 +1324,7 @@ The \fBncurses\fR library includes facilities for responding to window
resizing events, e.g., when running in an xterm.
See the \fBresizeterm\fR(3X)
and \fBwresize\fR(3X) manual pages for details.
-In addition, the library may be configured with a SIGWINCH handler.
+In addition, the library may be configured with a \fBSIGWINCH\fP handler.
.PP
The \fBncurses\fR library extends the fixed set of function key capabilities
of terminals by allowing the application designer to define additional
diff --git a/man/new_pair.3x b/man/new_pair.3x
new file mode 100644
index 000000000000..3d2eb0954242
--- /dev/null
+++ b/man/new_pair.3x
@@ -0,0 +1,165 @@
+.\"***************************************************************************
+.\" Copyright (c) 2017,2018 Free 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
+.\"
+.\" $Id: new_pair.3x,v 1.13 2018/07/28 22:19:56 tom Exp $
+.TH new_pair 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
+.de NS
+.ie n .sp
+.el .sp .5
+.ie n .in +4
+.el .in +2
+.nf
+.ft C \" Courier
+..
+.de NE
+.fi
+.ft R
+.ie n .in -4
+.el .in -2
+..
+.SH NAME
+\fBalloc_pair\fP,
+\fBfind_pair\fP,
+\fBfree_pair\fP \- new curses color-pair functions
+.SH SYNOPSIS
+\fB#include <curses.h>\fP
+.sp
+\fBint alloc_pair(int fg, int bg);\fP
+.br
+\fBint find_pair(int fg, int bg);\fP
+.br
+\fBint free_pair(int pair);\fP
+.SH DESCRIPTION
+These functions are an extension to the curses library.
+They permit an application to dynamically allocate a color pair using
+the foreground/background colors rather than assign a fixed color pair number,
+and return an unused pair to the pool.
+.PP
+The number of colors may be related to the number of possible color
+pairs for a given terminal, or it may not:
+.bP
+While almost all terminals allow setting the color \fIattributes\fP
+independently,
+it is unlikely that your terminal allows you to modify the attributes
+of a given character cell without rewriting it.
+That is, the foreground and background colors are applied as a pair.
+.bP
+Color pairs are the curses library's way of managing a color palette
+on a terminal.
+If the library does not keep track of the \fIcombinations\fP of
+colors which are displayed, it will be inefficient.
+.bP
+For simple terminal emulators
+with only a few dozen color combinations,
+it is convenient to use the maximum number of combinations
+as the limit on color pairs:
+.NS
+\fBCOLORS\fP\fI * \fP\fBCOLORS\fP
+.NE
+.bP
+Terminals which support \fIdefault colors\fP distinct
+from \*(``ANSI colors\*(''
+add to the possible combinations, producing this total:
+.NS
+\fI( \fP\fBCOLORS\fP\fI + 1 ) * ( \fP\fBCOLORS\fP\fI + 1 )\fP
+.NE
+.bP
+An application might use up to a few dozen color pairs to
+implement a predefined color scheme.
+.IP
+Beyond that lies in the realm of programs using the foreground
+and background colors for \*(``ASCII art\*(''
+(or some other non-textual application).
+.IP
+Also beyond those few dozen pairs, the required size for a table
+to represent the combinations grows rapidly with an increasing number of colors.
+.IP
+These functions allow a developer to let the screen library
+manage color pairs.
+.SS alloc_pair
+The \fBalloc_pair\fP function accepts parameters for
+foreground and background color, and
+checks if that color combination is already associated with a color pair.
+.bP
+If the combination already exists,
+\fBalloc_pair\fP returns the existing pair.
+.bP
+If the combination does not exist,
+\fBalloc_pair\fP allocates a new color pair and returns that.
+.bP
+If the table fills up, \fBalloc_pair\fP discards the least-recently
+allocated entry using \fBfree_pair\fP and allocates a new color pair.
+.PP
+All of the color pairs are allocated from a table of possible color pairs.
+The size of the table is determined by the terminfo \fIpairs\fP capability.
+The table is shared with \fBinit_pair\fP;
+in fact \fBalloc_pair\fP calls \fBinit_pair\fP after
+updating the ncurses library's fast index to the colors versus color pairs.
+.SS find_pair
+The \fBfind_pair\fP function accepts parameters for
+foreground and background color, and
+checks if that color combination is already associated with a color pair,
+returning the pair number if it has been allocated.
+Otherwise it returns \-1.
+.SS free_pair
+Marks the given color pair as unused,
+i.e., like color pair 0.
+.SH RETURN VALUE
+.PP
+The \fBalloc_pair\fP function returns a color pair number in the range
+1 through \fBCOLOR_PAIRS\fP\-1, unless it encounters an error updating
+its fast index to the color pair values, preventing it from allocating
+a color pair.
+In that case, it returns \-1.
+.PP
+The \fBfind_pair\fP function returns a color pair number if the
+given color combination has been associated with a color pair,
+or \-1 if not.
+.PP
+Likewise, \fBfree_pair\fP returns \fBOK\fP unless it encounters an
+error updating the fast index or if no such color pair is in use.
+.SH PORTABILITY
+These routines are specific to ncurses.
+They were not supported on
+Version 7, BSD or System V implementations.
+It is recommended that
+any code depending on them be conditioned using NCURSES_VERSION.
+.SH SEE ALSO
+\fBcurs_color\fR(3X).
+.SH AUTHOR
+Thomas Dickey.
diff --git a/man/panel.3x b/man/panel.3x
index 25e2348e878d..63babe695521 100644
--- a/man/panel.3x
+++ b/man/panel.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,10 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: panel.3x,v 1.17 2010/10/02 23:22:44 tom Exp $
+.\" $Id: panel.3x,v 1.27 2019/03/23 19:23:01 tom Exp $
.TH panel 3X ""
-.ds n 5
-.ds d @TERMINFO@
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.SH NAME
panel \- panel stack extension for curses
.SH SYNOPSIS
@@ -37,46 +39,49 @@ panel \- panel stack extension for curses
.P
\fBcc [flags] sourcefiles \-lpanel \-lncurses\fR
.P
-\fBPANEL *new_panel(WINDOW *win)\fR
+\fBPANEL *new_panel(WINDOW *win);\fR
.br
-\fBint bottom_panel(PANEL *pan)\fR
+\fBint bottom_panel(PANEL *pan);\fR
.br
-\fBint top_panel(PANEL *pan)\fR
+\fBint top_panel(PANEL *pan);\fR
.br
-\fBint show_panel(PANEL *pan)\fR
+\fBint show_panel(PANEL *pan);\fR
.br
-\fBvoid update_panels();\fR
+\fBvoid update_panels(void);\fR
.br
-\fBint hide_panel(PANEL *pan)\fR
+\fBint hide_panel(PANEL *pan);\fR
.br
-\fBWINDOW *panel_window(const PANEL *pan)\fR
+\fBWINDOW *panel_window(const PANEL *pan);\fR
.br
-\fBint replace_panel(PANEL *pan, WINDOW *window)\fR
+\fBint replace_panel(PANEL *pan, WINDOW *window);\fR
.br
-\fBint move_panel(PANEL *pan, int starty, int startx)\fR
+\fBint move_panel(PANEL *pan, int starty, int startx);\fR
.br
-\fBint panel_hidden(const PANEL *pan)\fR
+\fBint panel_hidden(const PANEL *pan);\fR
.br
-\fBPANEL *panel_above(const PANEL *pan)\fR
+\fBPANEL *panel_above(const PANEL *pan);\fR
.br
-\fBPANEL *panel_below(const PANEL *pan)\fR
+\fBPANEL *panel_below(const PANEL *pan);\fR
.br
-\fBint set_panel_userptr(PANEL *pan, const void *ptr)\fR
+\fBint set_panel_userptr(PANEL *pan, const void *ptr);\fR
.br
-\fBconst void *panel_userptr(const PANEL *pan)\fR
+\fBconst void *panel_userptr(const PANEL *pan);\fR
.br
-\fBint del_panel(PANEL *pan)\fR
+\fBint del_panel(PANEL *pan);\fR
.br
.SH DESCRIPTION
Panels are \fBcurses\fR(3X) windows with the added feature of
-depth. Panel functions allow the use of stacked windows and ensure
+depth.
+Panel functions allow the use of stacked windows and ensure
the proper portions of each window and the curses \fBstdscr\fR window are
hidden or displayed when panels are added, moved, modified or removed.
-The set of currently visible panels is the stack of panels. The
+The set of currently visible panels is the stack of panels.
+The
\fBstdscr\fR window is beneath all panels, and is not considered part
of the stack.
.P
-A window is associated with every panel. The panel routines enable
+A window is associated with every panel.
+The panel routines enable
you to create, move, hide, and show panels, as well as position a
panel at any desired location in the stack.
.P
@@ -90,15 +95,15 @@ allocates a \fBPANEL\fR structure, associates it with
to be displayed above any other panel) and returns a
pointer to the new panel.
.TP
-.B update_panels()
-refreshes the virtual screen to reflect the relations between the
-panels in the stack, but does not call doupdate() to refresh the
-physical screen.
+.B update_panels
+refreshes the \fIvirtual screen\fP to reflect the relations between the
+panels in the stack, but does not call \fBdoupdate\fP to refresh the
+\fIphysical screen\fP.
Use this function and not \fBwrefresh\fP or \fBwnoutrefresh\fP.
.B update_panels
may be called more than once before a call to
-doupdate(), but doupdate() is the function responsible for updating
-the physical screen.
+\fBdoupdate\fP, but \fBdoupdate\fP is the function responsible for updating
+the \fIphysical screen\fP.
.TP
.B del_panel(pan)
removes the given panel from the stack and deallocates the
@@ -106,19 +111,22 @@ removes the given panel from the stack and deallocates the
.TP
.B hide_panel(pan)
removes the given panel from the panel stack and thus hides it from
-view. The \fBPANEL\fR structure is not lost, merely removed from the stack.
+view.
+The \fBPANEL\fR structure is not lost, merely removed from the stack.
.TP
.B panel_hidden(pan)
-returns TRUE if the panel is in the panel stack,
-FALSE if it is not.
-If the panel is a null pointer, return ERR.
+returns \fBTRUE\fP if the panel is in the panel stack,
+\fBFALSE\fP if it is not.
+If the panel is a null pointer, return \fBERR\fP.
.TP
.B show_panel(pan)
makes a hidden panel visible by placing it on top of the panels in the
-panel stack. See COMPATIBILITY below.
+panel stack.
+See COMPATIBILITY below.
.TP
.B top_panel(pan)
-puts the given visible panel on top of all panels in the stack. See
+puts the given visible panel on top of all panels in the stack.
+See
COMPATIBILITY below.
.TP
.B bottom_panel(pan)
@@ -126,8 +134,10 @@ puts panel at the bottom of all panels.
.TP
.B move_panel(pan,starty,startx)
moves the given panel window so that its upper-left corner is at
-\fBstarty\fR, \fBstartx\fR. It does not change the position of the
-panel in the stack. Be sure to use this function, not \fBmvwin()\fR,
+\fBstarty\fR, \fBstartx\fR.
+It does not change the position of the
+panel in the stack.
+Be sure to use this function, not \fBmvwin\fR,
to move a panel window.
.TP
.B replace_panel(pan,window)
@@ -137,11 +147,13 @@ you can call \fBreplace_panel\fR on the output of \fBwresize\fR(3X)).
It does not change the position of the panel in the stack.
.TP
.B panel_above(pan)
-returns a pointer to the panel above pan. If the panel argument is
+returns a pointer to the panel above pan.
+If the panel argument is
\fB(PANEL *)0\fR, it returns a pointer to the bottom panel in the stack.
.TP
.B panel_below(pan)
-returns a pointer to the panel just below pan. If the panel argument
+returns a pointer to the panel just below pan.
+If the panel argument
is \fB(PANEL *)0\fR, it returns a pointer to the top panel in the stack.
.TP
.B set_panel_userptr(pan,ptr)
@@ -154,26 +166,39 @@ returns the user pointer for a given panel.
returns a pointer to the window of the given panel.
.SH DIAGNOSTICS
Each routine that returns a pointer returns \fBNULL\fR if an error
-occurs. Each routine that returns an int value returns \fBOK\fR if it
+occurs.
+Each routine that returns an int value returns \fBOK\fR if it
executes successfully and \fBERR\fR if not.
.SH COMPATIBILITY
Reasonable care has been taken to ensure compatibility
-with the native panel facility introduced in SVr3.2 (inspection of
+with the native panel facility introduced in System V (inspection of
the SVr4 manual pages suggests the programming interface is unchanged).
-The \fBPANEL\fR data structures are merely similar. The programmer
+The \fBPANEL\fR data structures are merely similar.
+The programmer
is cautioned not to directly use \fBPANEL\fR fields.
.P
-The functions \fBshow_panel()\fR and \fBtop_panel()\fR are identical
+The functions \fBshow_panel\fR and \fBtop_panel\fR are identical
in this implementation, and work equally well with displayed or hidden
-panels. In the native System V implementation, \fBshow_panel()\fR is
+panels.
+In the native System V implementation, \fBshow_panel\fR is
intended for making a hidden panel visible (at the top of the stack)
-and \fBtop_panel()\fR is intended for making an already-visible panel
-move to the top of the stack. You are cautioned to use the correct
+and \fBtop_panel\fR 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.
.SH NOTE
In your library list, libpanel.a should be before libncurses.a; that is,
-you want to say `\-lpanel \-lncurses', not the other way around (which would
-usually give a link-error).
+you should say \*(``\-lpanel \-lncurses\*('', not the other way around
+(which would give a link-error with static libraries).
+.SH PORTABILITY
+.PP
+The panel facility was documented in SVr4.2 in
+\fICharacter User Interface Programming (UNIX SVR4.2)\fP.
+.PP
+It is not part of X/Open Curses.
+.PP
+Aside from ncurses, only systems based on SVr4 source code,
+e.g., Solaris provide this library.
.SH FILES
.P
panel.h
@@ -190,4 +215,5 @@ version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
.SH AUTHOR
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.
+panels library.
+Repackaged for ncurses by Zeyd ben-Halim.
diff --git a/man/resizeterm.3x b/man/resizeterm.3x
index 25a760c70a87..55c23fa09393 100644
--- a/man/resizeterm.3x
+++ b/man/resizeterm.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -28,8 +28,12 @@
.\"
.\" Author: Thomas E. Dickey 1996-on
.\"
-.\" $Id: resizeterm.3x,v 1.17 2013/06/22 20:41:54 tom Exp $
+.\" $Id: resizeterm.3x,v 1.26 2019/09/21 23:44:41 tom Exp $
.TH resizeterm 3X ""
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.SH NAME
\fBis_term_resized\fR,
\fBresize_term\fR,
@@ -43,27 +47,44 @@
.br
\fBint resizeterm(int lines, int columns);\fR
.SH DESCRIPTION
+.PP
This is an extension to the curses library.
It provides callers with a hook into the \fBncurses\fR data to resize windows,
primarily for use by programs running in an X Window terminal (e.g., xterm).
+.SS resizeterm
+.PP
The function \fBresizeterm\fR resizes the standard and current windows
to the specified dimensions, and adjusts other bookkeeping data used by
the \fBncurses\fR library that record the window dimensions
such as the \fBLINES\fP and \fBCOLS\fP variables.
-.LP
+.SS resize_term
+.PP
Most of the work is done by the inner function \fBresize_term\fR.
-The outer function \fBresizeterm\fR adds bookkeeping for the SIGWINCH handler.
+The outer function \fBresizeterm\fR adds bookkeeping
+for the \fBSIGWINCH\fP handler,
+as well as repainting the soft-key area (see \fBslk_touch\fP(3X)).
+.PP
When resizing the windows,
\fBresize_term\fR blank-fills the areas that are extended.
The calling application should fill in these areas with appropriate data.
+.PP
The \fBresize_term\fR function attempts to resize all windows.
However, due to the calling convention of pads,
it is not possible to resize these
without additional interaction with the application.
-.LP
+.PP
+When resizing windows, \fBresize_term\fR recursively adjusts subwindows,
+keeping them within the updated parent window's limits.
+If a top-level window happens to extend to the screen's limits,
+then on resizing the window, \fBresize_term\fR will keep the window
+extending to the corresponding limit, regardless of whether the
+screen has shrunk or grown.
+.SS is_term_resized
+.PP
A support function \fBis_term_resized\fR is provided so that applications
can check if the \fBresize_term\fR function would modify the window structures.
-It returns TRUE if the windows would be modified, and FALSE otherwise.
+It returns \fBTRUE\fP if the windows would be modified,
+and \fBFALSE\fP otherwise.
.SH RETURN VALUE
Except as noted, these functions return
the integer \fBERR\fR upon failure and \fBOK\fR on success.
@@ -71,22 +92,48 @@ They will fail if either of the dimensions are less than or equal to zero,
or if an error occurs while (re)allocating memory for the windows.
.SH NOTES
While these functions are intended to be used to support a signal handler
-(i.e., for SIGWINCH), care should be taken to avoid invoking them in a
+(i.e., for \fBSIGWINCH\fP), care should be taken to avoid invoking them in a
context where \fBmalloc\fR or \fBrealloc\fR may have been interrupted,
since it uses those functions.
.PP
-If ncurses is configured to supply its own SIGWINCH handler,
-the \fBresizeterm\fR function \fBungetch\fP's a \fBKEY_RESIZE\fR which
-will be read on the next call to \fBgetch\fR.
-This is used to alert an application that the screen size has changed,
+If ncurses is configured to supply its own \fBSIGWINCH\fP handler,
+.bP
+on receipt of a \fBSIGWINCH\fP, the handler sets a flag
+.bP
+which is tested in \fBwgetch\fP(3X) and \fBdoupdate\fP,
+.bP
+in turn, calling the \fBresizeterm\fR function,
+.bP
+which \fBungetch\fP's a \fBKEY_RESIZE\fR which
+will be read on the next call to \fBwgetch\fR.
+.IP
+The \fBKEY_RESIZE\fP alerts an application that the screen size has changed,
and that it should repaint special features such as pads that cannot
be done automatically.
+.IP
+Calling \fBresizeterm\fP or \fBresize_term\fP
+directly from a signal handler is unsafe.
+This indirect method is used to provide a safe way to resize the ncurses
+data structures.
.PP
If the environment variables \fBLINES\fP or \fBCOLUMNS\fP are set,
this overrides the library's use of the window size obtained from
the operating system.
-Thus, even if a SIGWINCH is received,
+Thus, even if a \fBSIGWINCH\fP is received,
no screen size change may be recorded.
+.SH PORTABILITY
+.PP
+It is possible to resize the screen with SVr4 curses,
+by
+.bP
+exiting curses with \fBendwin\fP(3X) and
+.bP
+resuming using \fBrefresh\fP(3X).
+.PP
+Doing that clears the screen and is visually distracting.
+.PP
+This extension of ncurses was introduced in mid-1995.
+It was adopted in NetBSD curses (2001) and PDCurses (2003).
.SH SEE ALSO
\fBcurs_getch\fR(3X),
\fBcurs_variables\fR(3X),
diff --git a/man/scr_dump.5 b/man/scr_dump.5
new file mode 100644
index 000000000000..81a95aa20b2d
--- /dev/null
+++ b/man/scr_dump.5
@@ -0,0 +1,428 @@
+.\"***************************************************************************
+.\" Copyright (c) 2017,2018 Free 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: scr_dump.5,v 1.15 2018/07/28 21:46:15 tom Exp $
+.TH scr_dump 5
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de NS
+.ie n .sp
+.el .sp .5
+.ie n .in +4
+.el .in +2
+.nf
+.ft C \" Courier
+..
+.de NE
+.fi
+.ft R
+.ie n .in -4
+.el .in -2
+..
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
+.SH NAME
+scr_dump \- format of curses screen-dumps.
+.SH SYNOPSIS
+.B scr_dump
+.SH DESCRIPTION
+.PP
+The curses library provides applications with the ability to write the
+contents of a window to an external file using \fBscr_dump\fP or \fBputwin\fP,
+and read it back using \fBscr_restore\fP or \fBgetwin\fP.
+.PP
+The \fBputwin\fP and \fBgetwin\fP functions do the work;
+while \fBscr_dump\fP and \fBscr_restore\fP conveniently save and restore
+the whole screen, i.e., \fBstdscr\fP.
+.SS ncurses6
+.PP
+A longstanding implementation of screen-dump was
+revised with ncurses6 to remedy problems with the earlier approach:
+.bP
+A \*(``magic number\*('' is written to the beginning of the dump file,
+allowing applications (such as \fBfile\fP(1)) to recognize curses dump files.
+.IP
+Because ncurses6 uses a new format,
+that requires a new magic number
+was unused by other applications.
+This 16-bit number was unused:
+.NS
+0x8888 (octal \*(``\\210\\210\*('')
+.NE
+.IP
+but to be more certain, this 32-bit number was chosen:
+.NS
+0x88888888 (octal \*(``\\210\\210\\210\\210\*('')
+.NE
+.IP
+This is the pattern submitted to the maintainers of the \fBfile\fP program:
+.NS
+#
+# ncurses5 (and before) did not use a magic number,
+# making screen dumps "data".
+#
+# ncurses6 (2015) uses this format, ignoring byte-order
+0 string \\210\\210\\210\\210ncurses ncurses6 screen image
+#
+.NE
+.bP
+The screen dumps are written in textual form,
+so that internal data sizes are not directly related to the dump-format, and
+enabling the library to read dumps from either narrow- or wide-character-
+configurations.
+.IP
+The \fInarrow\fP library configuration holds characters and video attributes
+in a 32-bit \fBchtype\fP, while the \fIwide-character\fP library stores
+this information in the \fBcchar_t\fP structure, which is much larger than
+32-bits.
+.bP
+It is possible to read a screen dump into a terminal with a different
+screen-size,
+because the library truncates or fills the screen as necessary.
+.bP
+The ncurses6 \fBgetwin\fP reads the legacy screen dumps from ncurses5.
+.SS ncurses5 (legacy)
+.PP
+The screen-dump feature was added to ncurses in June 1995.
+While there were fixes and improvements in succeeding years,
+the basic scheme was unchanged:
+.bP
+The \fBWINDOW\fP structure was written in binary form.
+.bP
+The \fBWINDOW\fP structure refers to lines of data,
+which were written as an array of binary data following the \fBWINDOW\fP.
+.bP
+When \fBgetwin\fP restored the window,
+it would keep track of offsets into the array of line-data
+and adjust the \fBWINDOW\fP structure which was read back into memory.
+.PP
+This is similar to Unix SystemV,
+but does not write a \*(``magic number\*('' to identify the file format.
+.SH PORTABILITY
+.PP
+There is no standard format for \fBputwin\fP.
+This section gives a brief description of the existing formats.
+.SS X/Open Curses
+.PP
+Refer to \fIX/Open Curses, Issue 7\fP (2009).
+.PP
+X/Open's documentation for \fIenhanced curses\fP says only:
+.RS 3
+.PP
+The \fIgetwin(\ ) \fPfunction reads window-related data
+stored in the file by \fIputwin(\ )\fP.
+The function
+then creates and initializes a new window using that data.
+.PP
+The \fIputwin(\ )\fP function writes all data associated
+with \fIwin\fP into the \fIstdio\fP stream to which \fIfilep\fP
+points, using an \fBunspecified format\fP.
+This information can be retrieved later using \fIgetwin(\ )\fP.
+.RE
+.PP
+In the mid-1990s when the X/Open Curses document was written,
+there were still systems using older, less capable curses libraries
+(aside from the BSD curses library which was not relevant to X/Open
+because it did not meet the criteria for \fIbase curses\fP).
+The document explained the term \*(``enhanced\*('' as follows:
+.RS 3
+.bP
+Shading is used to identify \fIX/Open Enhanced Curses\fP material,
+relating to interfaces included to provide enhanced capabilities
+for applications originally written to be compiled on systems
+based on the UNIX operating system.
+Therefore, the features described may not be present on systems
+that conform to \fBXPG4 or to earlier XPG releases\fP.
+The relevant reference pages may provide additional
+or more specific portability warnings about use of the material.
+.RE
+.PP
+In the foregoing, emphasis was added to \fBunspecified format\fP
+and to \fBXPG4 or to earlier XPG releases\fP,
+for clarity.
+.SS Unix SystemV
+.PP
+Unix SystemV curses identified the file format by writing a
+\*(``magic number\*('' at the beginning of the dump.
+The \fBWINDOW\fP data and the lines of text follow, all in binary form.
+.PP
+The Solaris curses source has these definitions:
+.NS
+/* terminfo magic number */
+#define MAGNUM 0432
+
+/* curses screen dump magic number */
+#define SVR2_DUMP_MAGIC_NUMBER 0433
+#define SVR3_DUMP_MAGIC_NUMBER 0434
+.NE
+.PP
+That is, the feature was likely introduced in SVr2 (1984),
+and improved in SVr3 (1987).
+The Solaris curses source has no magic number for SVr4 (1989).
+Other operating systems (AIX and HPUX) use a magic number which would
+correspond to this definition:
+.NS
+/* curses screen dump magic number */
+#define SVR4_DUMP_MAGIC_NUMBER 0435
+.NE
+.PP
+That octal number in bytes is 001, 035.
+Because most Unix vendors use big-endian hardware,
+the magic number is written with the high-order byte first, e.g.,
+.NS
+\001\035
+.NE
+.PP
+After the magic number, the \fBWINDOW\fP structure and line-data are
+written in binary format.
+While the magic number used by the Unix systems can be seen using \fBod\fP(1),
+none of the Unix systems documents the format used for screen-dumps.
+.PP
+The Unix systems do not use identical formats.
+While collecting information for for this manual page,
+the \fIsavescreen\fP test-program
+produced dumps of different size
+(all on 64-bit hardware, on 40x80 screens):
+.bP
+AIX (51817 bytes)
+.bP
+HPUX (90093 bytes)
+.bP
+Solaris 10 (13273 bytes)
+.bP
+ncurses5 (12888 bytes)
+.SS Solaris
+.PP
+As noted above, Solaris curses has no magic number corresponding
+to SVr4 curses.
+This is odd since Solaris was the first operating system
+to pass the SVr4 guidelines.
+Solaris has two versions of curses:
+.bP
+The default curses library uses the SVr3 magic number.
+.bP
+There is an alternate curses library in \fB/usr/xpg4\fP.
+This uses a textual format with no magic number.
+.IP
+According to the copyright notice, the \fIxpg4\fP Solaris curses library was
+developed by MKS (Mortice Kern Systems) from 1990 to 1995.
+.IP
+Like ncurses6, there is a file-header with parameters.
+Unlike ncurses6, the contents of the window are written piecemeal,
+with coordinates and attributes for each chunk of text rather
+than writing the whole window from top to bottom.
+.SS PDCurses
+.PP
+PDCurses added support for screen dumps in version 2.7 (2005).
+Like Unix SystemV and ncurses5,
+it writes the \fBWINDOW\fP structure in binary,
+but begins the file with its three-byte identifier \*(``PDC\*('',
+followed by a one-byte version,
+e.g.,
+.NS
+ \*(``PDC\\001\*(''
+.NE
+.SS NetBSD
+.PP
+As of April 2017, NetBSD curses does
+not support \fBscr_dump\fP and \fBscr_restore\fP
+(or \fBscr_init\fP, \fBscr_set\fP),
+although it has \fBputwin\fP and \fBgetwin\fP.
+.PP
+Like ncurses5, NetBSD \fBputwin\fP does not identify its dumps with a
+useful magic number.
+It writes
+.bP
+the curses shared library major and minor versions
+as the first two bytes (e.g., 7 and 1),
+.bP
+followed by a binary dump of the \fBWINDOW\fP,
+.bP
+some data for wide-characters referenced by the \fBWINDOW\fP structure, and
+.bP
+finally, lines as done by other implementations.
+.SH EXAMPLE
+.PP
+Given a simple program which writes text to the screen
+(and for the sake of example, limiting the screen-size to 10x20):
+.NS
+#include <curses.h>
+
+int
+main(void)
+{
+ putenv("LINES=10");
+ putenv("COLUMNS=20");
+ initscr();
+ start_color();
+ init_pair(1, COLOR_WHITE, COLOR_BLUE);
+ init_pair(2, COLOR_RED, COLOR_BLACK);
+ bkgd(COLOR_PAIR(1));
+ move(4, 5);
+ attron(A_BOLD);
+ addstr("Hello");
+ move(5, 5);
+ attroff(A_BOLD);
+ attrset(A_REVERSE | COLOR_PAIR(2));
+ addstr("World!");
+ refresh();
+ scr_dump("foo.out");
+ endwin();
+ return 0;
+}
+.NE
+.PP
+When run using ncurses6, the output looks like this:
+.NS
+\\210\\210\\210\\210ncurses 6.0.20170415
+_cury=5
+_curx=11
+_maxy=9
+_maxx=19
+_flags=14
+_attrs=\\{REVERSE|C2}
+flag=_idcok
+_delay=-1
+_regbottom=9
+_bkgrnd=\\{NORMAL|C1}\\s
+rows:
+1:\\{NORMAL|C1}\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
+2:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
+3:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
+4:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
+5:\\s\\s\\s\\s\\s\\{BOLD}Hello\\{NORMAL}\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
+6:\\s\\s\\s\\s\\s\\{REVERSE|C2}World!\\{NORMAL|C1}\\s\\s\\s\\s\\s\\s\\s\\s\\s
+7:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
+8:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
+9:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
+10:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
+.NE
+.PP
+The first four octal escapes are actually nonprinting characters,
+while the remainder of the file is printable text.
+You may notice:
+.bP
+The actual color pair values are not written to the file.
+.bP
+All characters are shown in printable form; spaces are \*(``\\s\*('' to
+ensure they are not overlooked.
+.bP
+Attributes are written in escaped curly braces, e.g., \*(``\\{BOLD}\*('',
+and may include a color-pair (C1 or C2 in this example).
+.bP
+The parameters in the header are written out only if they are nonzero.
+When reading back, order does not matter.
+.ne 10
+.PP
+Running the same program with Solaris \fIxpg4\fP curses gives this dump:
+.NS
+MAX=10,20
+BEG=0,0
+SCROLL=0,10
+VMIN=1
+VTIME=0
+FLAGS=0x1000
+FG=0,0
+BG=0,0,
+0,0,0,1,
+0,19,0,0,
+1,0,0,1,
+1,19,0,0,
+2,0,0,1,
+2,19,0,0,
+3,0,0,1,
+3,19,0,0,
+4,0,0,1,
+4,5,0x20,0,Hello
+4,10,0,1,
+4,19,0,0,
+5,0,0,1,
+5,5,0x4,2,World!
+5,11,0,1,
+5,19,0,0,
+6,0,0,1,
+6,19,0,0,
+7,0,0,1,
+7,19,0,0,
+8,0,0,1,
+8,19,0,0,
+9,0,0,1,
+9,19,0,0,
+CUR=11,5
+.NE
+.PP
+Solaris \fBgetwin\fP requires that all parameters are present, and
+in the same order.
+The \fIxpg4\fP curses library does not know about the \fBbce\fP
+(back color erase) capability, and does not color the window background.
+.ne 10
+.PP
+On the other hand, the SVr4 curses library does know about the background color.
+However, its screen dumps are in binary.
+Here is the corresponding dump (using \*(``od -t x1\*(''):
+.NS
+0000000 1c 01 c3 d6 f3 58 05 00 0b 00 0a 00 14 00 00 00
+0000020 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00
+0000040 00 00 b8 1a 06 08 cc 1a 06 08 00 00 09 00 10 00
+0000060 00 00 00 80 00 00 20 00 00 00 ff ff ff ff 00 00
+0000100 ff ff ff ff 00 00 00 00 20 80 00 00 20 80 00 00
+0000120 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00
+*
+0000620 20 80 00 00 20 80 00 00 20 80 00 00 48 80 00 04
+0000640 65 80 00 04 6c 80 00 04 6c 80 00 04 6f 80 00 04
+0000660 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00
+*
+0000740 20 80 00 00 20 80 00 00 20 80 00 00 57 00 81 00
+0000760 6f 00 81 00 72 00 81 00 6c 00 81 00 64 00 81 00
+0001000 21 00 81 00 20 80 00 00 20 80 00 00 20 80 00 00
+0001020 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00
+*
+0001540 20 80 00 00 20 80 00 00 00 00 f6 d1 01 00 f6 d1
+0001560 08 00 00 00 40 00 00 00 00 00 00 00 00 00 00 07
+0001600 00 04 00 01 00 01 00 00 00 01 00 00 00 00 00 00
+0001620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+*
+0002371
+.NE
+.SH SEE ALSO
+.PP
+\fBcurs_scr_dump\fR(3X),
+\fBcurs_util\fR(3X).
+.SH AUTHORS
+.PP
+Thomas E. Dickey
+.br
+extended screen-dump format for ncurses 6.0 (2015)
+.sp
+Eric S. Raymond
+.br
+screen dump feature in ncurses 1.9.2d (1995)
diff --git a/man/tabs.1 b/man/tabs.1
index f6b797d777cd..56d49358564d 100644
--- a/man/tabs.1
+++ b/man/tabs.1
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2008-2011,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 2008-2018,2019 Free 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,9 +26,31 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: tabs.1,v 1.11 2013/06/22 18:11:57 tom Exp $
+.\" $Id: tabs.1,v 1.26 2019/06/23 21:01:12 tom Exp $
.TH @TABS@ 1 ""
.ds n 5
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
+.de NS
+.ie n .sp
+.el .sp .5
+.ie n .in +4
+.el .in +2
+.nf
+.ft C \" Courier
+..
+.de NE
+.fi
+.ft R
+.ie n .in -4
+.el .in -2
+..
.SH NAME
\fB@TABS@\fR \- set tabs on a terminal
.SH SYNOPSIS
@@ -39,10 +61,30 @@ The \fB@TABS@\fP program clears and sets tab-stops on the terminal.
This uses the terminfo \fIclear_all_tabs\fP and \fIset_tab\fP capabilities.
If either is absent, \fB@TABS@\fP is unable to clear/set tab-stops.
The terminal should be configured to use hard tabs, e.g.,
-.sp
-.RS
+.NS
stty tab0
-.RE
+.NE
+.PP
+Like \fB@CLEAR@\fR(1), \fB@TABS@\fR writes to the standard output.
+You can redirect the standard output to a file (which prevents
+\fB@TABS@\fR from actually changing the tabstops),
+and later \fBcat\fP the file to the screen, setting tabstops at that point.
+.PP
+These are hardware tabs, which cannot be queried rapidly by applications
+running in the terminal, if at all.
+Curses and other full-screen applications may use hardware tabs
+in optimizing their output to the terminal.
+If the hardware tabstops differ from the information in the terminal
+database, the result is unpredictable.
+Before running curses programs,
+you should either reset tab-stops to the standard interval
+.NS
+tabs -8
+.NE
+.PP
+or use the \fB@RESET@\fP program,
+since the normal initialization sequences do not ensure that tab-stops
+are reset.
.SH OPTIONS
.SS General Options
.TP 5
@@ -68,29 +110,33 @@ The \fB@TABS@\fP program processes a single list of tab stops.
The last option to be processed which defines a list is the one that
determines the list to be processed.
.SS Implicit Lists
-Use a single number as an option, e.g., "\fB\-5\fP" to set tabs at the given
-interval (in this case 1, 6, 11, 16, 21, etc.). Tabs are repeated up to
-the right margin of the screen.
+Use a single number as an option,
+e.g., \*(``\fB\-5\fP\*('' to set tabs at the given
+interval (in this case 1, 6, 11, 16, 21, etc.).
+Tabs are repeated up to the right margin of the screen.
.PP
-Use "\fB\-0\fP" to clear all tabs.
+Use \*(``\fB\-0\fP\*('' to clear all tabs.
.PP
-Use "\fB\-8\fP" to set tabs to the standard interval.
+Use \*(``\fB\-8\fP\*('' to set tabs to the standard interval.
.SS Explicit Lists
-An explicit list can be defined after the options (this does not use a "\-").
-The values in the list must be in increasing numeric order, and greater than
-zero. They are separated by a comma or a blank, for example,
-.sp
-.RS
+An explicit list can be defined after the options
+(this does not use a \*(``\-\*('').
+The values in the list must be in increasing numeric order,
+and greater than zero.
+They are separated by a comma or a blank, for example,
+.NS
tabs 1,6,11,16,21
.br
tabs 1 6 11 16 21
-.RE
-Use a '+' to treat a number as an increment relative to the previous value,
+.NE
+.PP
+Use a \*(``+\*('' to treat a number
+as an increment relative to the previous value,
e.g.,
-.sp
-.RS
+.NS
tabs 1,+5,+5,+5,+5
-.RE
+.NE
+.PP
which is equivalent to the 1,6,11,16,21 example.
.SS Predefined Tab-Stops
X/Open defines several predefined lists of tab stops.
@@ -123,16 +169,64 @@ SNOBOL
UNIVAC 1100 Assembler
.SH PORTABILITY
.PP
-X/Open describes a \fB+m\fP option, to set a terminal's left-margin.
-Very few of the entries in the terminal database provide this capability.
+\fIIEEE Std 1003.1/The Open Group Base Specifications Issue 7\fP (POSIX.1-2008)
+describes a \fBtabs\fP utility.
+However
+.bP
+This standard describes a \fB+m\fP option, to set a terminal's left-margin.
+Very few of the entries in the terminal database provide the
+\fBsmgl\fP (\fBset_left_margin\fP) or
+\fBsmglp\fP (\fBset_left_margin_parm\fP)
+capability needed to support the feature.
+.bP
+There is no counterpart in X/Open Curses Issue 7 for this utility,
+unlike \fB@TPUT@(1)\fP.
.PP
The \fB\-d\fP (debug) and \fB\-n\fP (no-op) options are extensions not provided
by other implementations.
.PP
+A \fBtabs\fP utility appeared in PWB/Unix 1.0 (1977).
+There was a reduced version of the \fBtabs\fP utility
+in Unix 7th edition and in 3BSD (1979).
+The latter supported a single \*(``\-n\*('' option
+(to cause the first tab stop to be set on the left margin).
+That option is not documented by POSIX.
+.PP
+The PWB/Unix \fBtabs\fP utility, which was included in System III (1980),
+used built-in tables rather than the terminal database,
+to support a half-dozen terminal types.
+It also had built-in logic to support the left-margin,
+as well as a feature for copying the tab settings from a file.
+.PP
+Later versions of Unix, e.g., SVr4,
+added support for the terminal database,
+but kept the tables, as a fallback.
+In an earlier development effort,
+the tab-stop initialization provided by \fBtset\fP (1982)
+and incorporated into \fBtput\fP uses the terminal database,
+.PP
+POSIX documents no limits on the number of tab stops.
Documentation for other implementations states that there is a limit on the
-number of tab stops. While some terminals may not accept an arbitrary number
+number of tab stops
+(e.g., 20 in PWB/Unix's \fBtabs\fP utility).
+While some terminals may not accept an arbitrary number
of tab stops, this implementation will attempt to set tab stops up to the
right margin of the screen, if the given list happens to be that long.
+.PP
+The \fIRationale\fP section of the POSIX documentation goes into some
+detail about the ways the committee considered redesigning the
+\fBtabs\fP and \fBtput\fP utilities,
+without proposing an improved solution.
+It comments that
+.RS 5
+.PP
+no known historical version of tabs supports the capability of setting
+arbitrary tab stops.
+.RE
+.PP
+However, the \fIExplicit Lists\fP described in this manual page
+were implemented in PWB/Unix.
+Those provide the capability of setting abitrary tab stops.
.SH SEE ALSO
\fB@TSET@\fR(1),
\fB@INFOCMP@\fR(1M),
diff --git a/man/term.5 b/man/term.5
index a8055e9a63aa..b876fea1b2ce 100644
--- a/man/term.5
+++ b/man/term.5
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +26,30 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: term.5,v 1.21 2010/12/04 18:40:45 tom Exp $
+.\" $Id: term.5,v 1.32 2019/01/12 23:11:08 tom Exp $
.TH term 5
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de NS
+.ie n .sp
+.el .sp .5
+.ie n .in +4
+.el .in +2
+.nf
+.ft C \" Courier
+..
+.de NE
+.fi
+.ft R
+.ie n .in -4
+.el .in -2
+..
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.ds n 5
.ds d @TERMINFO@
.SH NAME
@@ -37,7 +59,7 @@ term \- format of compiled term file.
.SH DESCRIPTION
.SS STORAGE LOCATION
Compiled terminfo descriptions are placed under the directory \fB\*d\fP.
-Two configurations are supported (when building the ncurses libraries):
+Two configurations are supported (when building the \fBncurses\fP libraries):
.TP 5
.B directory tree
A two-level scheme is used to avoid a linear search
@@ -60,23 +82,21 @@ the terminfo's primary name as a key,
and records containing only aliases pointing to the primary name.
.IP
If built to write hashed databases,
-ncurses can still read terminfo databases organized as a directory tree,
+\fBncurses\fP can still read terminfo databases organized as a directory tree,
but cannot write entries into the directory tree.
It can write (or rewrite) entries in the hashed database.
.IP
-ncurses distinguishes the two cases in the TERMINFO and TERMINFO_DIRS
+\fBncurses\fP distinguishes the two cases in the TERMINFO and TERMINFO_DIRS
environment variable by assuming a directory tree for entries that
correspond to an existing directory,
and hashed database otherwise.
-.SS STORAGE FORMAT
+.SS LEGACY STORAGE FORMAT
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.
.PP
-The compiled file is created with the
-.B @TIC@
-program, and read by the routine
-.IR setupterm .
+The compiled file is created with the \fB@TIC@\fP program,
+and read by the routine \fBsetupterm\fP(3X).
The file is divided into six parts:
the header,
terminal names,
@@ -110,7 +130,8 @@ 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
+values are illegal.
+This value generally
means that the corresponding capability is missing from this terminal.
Note that this format corresponds to the hardware of the \s-1VAX\s+1
and \s-1PDP\s+1-11 (that is, little-endian machines).
@@ -120,7 +141,7 @@ 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 various names for the terminal,
-separated by the `|' character.
+separated by the \*(``|\*('' character.
The section is terminated with an \s-1ASCII NUL\s+1 character.
.PP
The boolean flags have one byte for each flag.
@@ -160,12 +181,15 @@ With some minor variations of the offsets (see PORTABILITY),
the same binary format is used in all modern UNIX systems.
Each system uses a predefined set of boolean, number or string capabilities.
.PP
-The ncurses libraries and applications support extended terminfo binary format,
-allowing users to define capabilities which are loaded at runtime. This
+The \fBncurses\fP libraries and applications support
+extended terminfo binary format,
+allowing users to define capabilities which are loaded at runtime.
+This
extension is made possible by using the fact that the other implementations
stop reading the terminfo data when they have reached the end of the size given
in the header.
-ncurses checks the size, and if it exceeds that due to the predefined data,
+\fBncurses\fP checks the size,
+and if it exceeds that due to the predefined data,
continues to parse according to its own scheme.
.PP
First, it reads the extended header (5 short integers):
@@ -181,59 +205,127 @@ count of extended numeric capabilities
count of extended string capabilities
.TP 5
(4)
-size of the extended string table in bytes.
+count of the items in extended string table
.TP 5
(5)
-last offset of the extended string table in bytes.
+size of the extended string table in bytes
.RE
.PP
-Using the counts and sizes, ncurses allocates arrays and reads data
-for the extended capabilties in the same order as the header information.
+The count- and size-values for the extended string table
+include the extended capability \fInames\fP as well as
+extended capability \fIvalues\fP.
+.PP
+Using the counts and sizes, \fBncurses\fP allocates arrays and reads data
+for the extended capabilities in the same order as the header information.
.PP
The extended string table contains values for string capabilities.
After the end of these values, it contains the names for each of
the extended capabilities in order, e.g., booleans, then numbers and
finally strings.
+.PP
+Applications which manipulate terminal data can use the definitions
+described in \fBterm_variables\fP(3X) which associate the long capability
+names with members of a \fBTERMTYPE\fP structure.
.
+.SS EXTENDED NUMBER FORMAT
+.PP
+On occasion, 16-bit signed integers are not large enough.
+With \fBncurses\fP 6.1, a new format was introduced by making a few changes
+to the legacy format:
+.bP
+a different magic number (octal 01036)
+.bP
+changing the type for the \fInumber\fP array from signed 16-bit integers
+to signed 32-bit integers.
+.PP
+To maintain compatibility, the library presents the same data structures
+to direct users of the \fBTERMTYPE\fP structure as in previous formats.
+However, that cannot provide callers with the extended numbers.
+The library uses a similar but hidden data structure \fBTERMTYPE2\fP
+to provide data for the terminfo functions.
.SH PORTABILITY
+.SS setupterm
+.PP
Note that it is possible for
-.I setupterm
+.B setupterm
to expect a different set of capabilities
than are actually present in the file.
Either the database may have been updated since
-.I setupterm
+.B setupterm
has been recompiled
(resulting in extra unrecognized 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
+.B setupterm
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.
+.SS Binary format
+.PP
+X/Open Curses does not specify a format for the terminfo database.
+UNIX System V curses used a directory-tree of binary files,
+one per terminal description.
.PP
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
+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 \fBterminfo\fR(\*n) for detailed
+System V and XSI Curses extensions.
+See \fBterminfo\fR(\*n) for detailed
discussion of terminfo source compatibility issues.
+.PP
+This implementation is by default compatible with the binary
+terminfo format used by Solaris curses,
+except in a few less-used details
+where it was found that the latter did not match X/Open Curses.
+The format used by the other Unix versions
+can be matched by building ncurses
+with different configuration options.
+.SS Magic codes
+.PP
+The magic number in a binary terminfo file is the first 16-bits (two bytes).
+Besides making it more reliable for the library to check that a file
+is terminfo,
+utilities such as \fBfile\fP also use that to tell what the file-format is.
+System V defined more than one magic number,
+with 0433, 0435 as screen-dumps (see \fBscr_dump\fP(5)).
+This implementation uses 01036 as a continuation of that sequence,
+but with a different high-order byte to avoid confusion.
+.SS The TERMTYPE structure
+.PP
+Direct access to the \fBTERMTYPE\fP structure is provided for legacy
+applications.
+Portable applications should use the \fBtigetflag\fP and related functions
+described in \fBcurs_terminfo\fP(3X) for reading terminal capabilities.
+.SS Mixed-case terminal names
+.PP
+A small number of terminal descriptions use uppercase characters in
+their names.
+If the underlying filesystem ignores the difference between
+uppercase and lowercase,
+\fBncurses\fP represents the \*(``first character\*(''
+of the terminal name used as
+the intermediate level of a directory tree in (two-character) hexadecimal form.
.SH EXAMPLE
-As an example, here is a hex dump of the description for the Lear-Siegler
+As an example, here is a description for the Lear-Siegler
ADM\-3, a popular though rather stupid early terminal:
-.nf
-.sp
+.NS
adm3a|lsi adm3a,
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,
-.sp
+.NS
+.PP
+and a hexadecimal dump of the compiled terminal description:
+.NS
.ft CW
\s-20000 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.
@@ -258,11 +350,16 @@ adm3a|lsi adm3a,
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 ........ .\s+2
.ft R
-.fi
+.NE
.sp
.SH LIMITS
-Some limitations: total compiled entries cannot exceed 4096 bytes.
-The name field cannot exceed 128 bytes.
+Some limitations:
+.bP
+total compiled entries cannot exceed 4096 bytes in the legacy format.
+.bP
+total compiled entries cannot exceed 32768 bytes in the extended format.
+.bP
+the name field cannot exceed 128 bytes.
.SH FILES
\*d/*/* compiled terminal capability data base
.SH SEE ALSO
@@ -273,5 +370,9 @@ Thomas E. Dickey
extended terminfo format for ncurses 5.0
.br
hashed database support for ncurses 5.6
+.br
+extended number support for ncurses 6.1
.sp
Eric S. Raymond
+.br
+documented legacy terminfo format, e.g., from pcurses.
diff --git a/man/term.7 b/man/term.7
index cee8a012f85f..24d096ef738f 100644
--- a/man/term.7
+++ b/man/term.7
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: term.7,v 1.23 2011/12/17 23:32:17 tom Exp $
+.\" $Id: term.7,v 1.27 2019/07/13 23:17:23 tom Exp $
.TH term 7
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.ds n 5
.ds d @TERMINFO@
.SH NAME
@@ -35,7 +39,8 @@ term \- conventions for naming terminal types
.SH DESCRIPTION
.PP
The environment variable \fBTERM\fR should normally contain the type name of
-the terminal, console or display-device type you are using. This information
+the terminal, console or display-device type you are using.
+This information
is critical for all screen-oriented programs, including your editor and mailer.
.PP
A default \fBTERM\fR value will be set on a per-line basis by either
@@ -43,19 +48,23 @@ A default \fBTERM\fR value will be set on a per-line basis by either
or \fB/etc/ttys\fR (BSD UNIXes).
This will nearly always suffice for workstation and microcomputer consoles.
.PP
-If you use a dialup line, the type of device attached to it may vary. Older
-UNIX systems pre-set a very dumb terminal type like `dumb' or `dialup' on
-dialup lines. Newer ones may pre-set `vt100', reflecting the prevalence of DEC
+If you use a dialup line, the type of device attached to it may vary.
+Older UNIX systems pre-set a very dumb terminal 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 emulators.
.PP
Modern telnets pass your \fBTERM\fR environment variable from the local side to
-the remote one. There can be problems if the remote terminfo or termcap entry
+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.)
+can almost always be avoided by explicitly exporting \*(``vt100\*(''
+(assuming you are in fact using a VT100-superset console,
+terminal, or terminal emulator.)
.PP
In any case, you are free to override the system \fBTERM\fR setting to your
-taste in your shell profile. The \fB@TSET@\fP(1) utility may be of assistance;
+taste in your shell profile.
+The \fB@TSET@\fP(1) utility may be of assistance;
you can give it a set of rules for deducing or requesting a terminal type based
on the tty device and baud rate.
.PP
@@ -64,11 +73,13 @@ custom entry incorporating options (such as visual bell or reverse-video)
which you wish to override the system default type for your line.
.PP
Terminal type descriptions are stored as files of capability data underneath
-\*d. To browse a list of all terminal names recognized by the system, do
+\*d.
+To browse a list of all terminal names recognized by the system, do
.sp
@TOE@ | more
.sp
-from your shell. These capability files are in a binary format optimized for
+from your shell.
+These capability files are in a binary format optimized for
retrieval speed (unlike the old text-based \fBtermcap\fR format they replace);
to examine an entry, you must use the \fB@INFOCMP@\fR(1M) command.
Invoke it as follows:
@@ -77,30 +88,39 @@ Invoke it as follows:
.sp
where \fIentry_name\fR is the name of the type you wish to examine (and the
name of its capability file the subdirectory of \*d named for its first
-letter). This command dumps a capability file in the text format described by
+letter).
+This command dumps a capability file in the text format described by
\fBterminfo\fR(\*n).
.PP
The first line of a \fBterminfo\fR(\*n) description gives the names by which
-terminfo knows a terminal, separated by `|' (pipe-bar) characters with the last
-name field terminated by a comma. The first name field is the type's
+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
\fIprimary name\fR, and is the one to use when setting \fBTERM\fR. 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
+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.
.PP
There are some conventions for how to choose terminal primary names that help
-keep them informative and unique. Here is a step-by-step guide to naming
+keep them informative and unique.
+Here is a step-by-step guide to naming
terminals that also explains how to parse them:
.PP
-First, choose a root name. The root will consist of a lower-case letter
-followed by up to seven lower-case letters or digits. You need to avoid using
+First, choose a root name.
+The root will consist of a lower-case letter
+followed by up to seven lower-case letters or digits.
+You need to avoid using
punctuation characters in root names, because they are used and interpreted as
filenames and shell meta-characters (such as !, $, *, ?, etc.) embedded in them
-may cause odd and unhelpful behavior. The slash (/), or any other character
+may cause odd and unhelpful behavior.
+The slash (/), or any other character
that may be interpreted by anyone's file system (\e, $, [, ]), 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
+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.
.PP
@@ -127,11 +147,14 @@ Following the root name, you may add any reasonable number of hyphen-separated
feature suffixes.
.TP 5
2p
-Has two pages of memory. Likewise 4p, 8p, etc.
+Has two pages of memory.
+Likewise 4p, 8p, etc.
.TP 5
mc
-Magic-cookie. Some terminals (notably older Wyses) can only support one
-attribute without magic-cookie lossage. Their base entry is usually paired
+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.
.TP 5
@@ -167,19 +190,21 @@ Enable status line.
Use visible bell (flash) rather than beep.
.TP 5
\-w
-Wide; terminal is in 132 column mode.
+Wide; terminal is in 132-column mode.
.PP
Conventionally, if your terminal type is a variant intended to specify a
-line height, that suffix should go first. So, for a hypothetical FuBarCo
+line height, that suffix should go first.
+So, for a hypothetical FuBarCo
model 2317 terminal in 30-line mode with reverse video, best form would be
-\fBfubar\-30\-rv\fR (rather than, say, `fubar\-rv\-30').
+\fBfubar\-30\-rv\fR (rather than, say, \*(``fubar\-rv\-30\*('').
.PP
Terminal types that are written not as standalone entries, but rather as
components to be plugged into other entries via \fBuse\fP capabilities,
are distinguished by using embedded plus signs rather than dashes.
.PP
Commands which use a terminal type to control display often accept a \-T
-option that accepts a terminal name argument. Such programs should fall back
+option that accepts a terminal name argument.
+Such programs should fall back
on the \fBTERM\fR environment variable when no \-T option is specified.
.SH PORTABILITY
For maximum compatibility with older System V UNIXes, names and aliases
diff --git a/man/term_variables.3x b/man/term_variables.3x
index 4cf9a0c89921..fe4ecf549f26 100644
--- a/man/term_variables.3x
+++ b/man/term_variables.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2011,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 2011-2017,2019 Free 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,9 +26,13 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: term_variables.3x,v 1.4 2013/12/21 22:17:39 tom Exp $
+.\" $Id: term_variables.3x,v 1.11 2019/11/30 20:51:36 tom Exp $
.TH term_variables 3X ""
.ds n 5
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.na
.hy 0
.SH NAME
@@ -55,28 +59,30 @@
\fB#include <term.h>\fR
.PP
\fBchtype acs_map[];\fR
-.br
-\fBNCURSES_CONST char * const * boolcodes;\fR
-.br
-\fBNCURSES_CONST char * const * boolfnames;\fR
-.br
-\fBNCURSES_CONST char * const * boolnames;\fR
-.br
+.sp
+\fBSCREEN * SP;\fR
+.sp
\fBTERMINAL * cur_term;\fR
+.sp
+\fBchar ttytype[];\fR
+.sp
+\fBNCURSES_CONST char * const boolcodes[];\fR
.br
-\fBNCURSES_CONST char * const * numcodes;\fR
+\fBNCURSES_CONST char * const boolfnames[];\fR
.br
-\fBNCURSES_CONST char * const * numfnames;\fR
+\fBNCURSES_CONST char * const boolnames[];\fR
+.sp
+\fBNCURSES_CONST char * const numcodes[];\fR
.br
-\fBNCURSES_CONST char * const * numnames;\fR
+\fBNCURSES_CONST char * const numfnames[];\fR
.br
-\fBNCURSES_CONST char * const * strcodes;\fR
+\fBNCURSES_CONST char * const numnames[];\fR
+.sp
+\fBNCURSES_CONST char * const strcodes[];\fR
.br
-\fBNCURSES_CONST char * const * strfnames;\fR
+\fBNCURSES_CONST char * const strfnames[];\fR
.br
-\fBNCURSES_CONST char * const * strnames;\fR
-.br
-\fBchar ttytype[];\fR
+\fBNCURSES_CONST char * const strnames[];\fR
.br
.fi
.SH DESCRIPTION
@@ -95,7 +101,7 @@ the \fBacs_map\fP array holds information used to translate cells
with the \fBA_ALTCHARSET\fP video attribute into line-drawing characters.
.PP
The encoding of the information in this array has changed periodically.
-Application developers need only know that it is used for the "ACS_"
+Application developers need only know that it is used for the \*(``ACS_\*(''
constants in <curses.h>.
.PP
The comparable data for the wide-character library is a private variable.
@@ -108,31 +114,56 @@ and \fBdelscreen\fP(3X).
It is possible to save a value of \fBcur_term\fP for subsequent
use as a parameter to \fBset_term\fP, for switching between screens.
Alternatively, one can save the return value from \fBnewterm\fP
-or \fBsetupterm\fP to reuse in \fBset_term\fP.
+or \fBsetupterm\fP(3X) to reuse in \fBset_term\fP.
.SS Terminfo Names
The \fB@TIC@\fP(1) and \fB@INFOCMP@\fP(1) programs use lookup tables for
the long and short names of terminfo capabilities,
as well as the corresponding names for termcap capabilities.
These are available to other applications,
-though the hash-tables are not available.
+although the hash-tables used by
+the terminfo and termcap functions are not available.
.PP
-The long terminfo capability names use a "l" (ell) in their names:
-boolfnames
-numfnames
-strfnames
+The long terminfo capability names use a \*(``l\*('' (ell) in their names:
+\fBboolfnames\fP,
+\fBnumfnames\fP, and
+\fBstrfnames\fP.
.PP
These are the short names for terminfo capabilities:
-boolnames,
-numnames, and
-strnames.
+\fBboolnames\fP,
+\fBnumnames\fP, and
+\fBstrnames\fP.
.PP
These are the corresponding names used for termcap descriptions:
-boolcodes,
-numcodes, and
-strcodes.
+\fBboolcodes\fP,
+\fBnumcodes\fP, and
+\fBstrcodes\fP.
+.\"
.SS Terminal Type
+A terminal description begins with one or more terminal names
+separated by \*(``|\*('' (vertical bars).
On initialization of the curses or terminfo interfaces,
-\fBsetupterm\fP copies the terminal name to the array \fBttytype\fP.
+\fBsetupterm\fP(3X) copies the terminal names to the array \fBttytype\fP.
+.\"
+.SS Terminfo Names
+.PP
+In addition to the variables, \fB<term.h>\fP also defines a symbol for each
+terminfo capability \fIlong name\fP.
+These are in terms of the symbol \fBCUR\fP,
+which is defined
+.PP
+.nf
+.ft CW
+#define CUR ((TERMTYPE *)(cur_term))->
+.fi
+.ft R
+.PP
+These symbols provide a faster method of accessing terminfo capabilities
+than using \fBtigetstr\fR(3X), etc.
+.PP
+The actual definition of \fBCUR\fP depends upon the implementation,
+but each terminfo library provides these long names defined to point
+into the current terminal description loaded into memory.
+.\"
.SH NOTES
The low-level terminfo interface is initialized using
.hy 0
@@ -140,6 +171,7 @@ The low-level terminfo interface is initialized using
.hy
The upper-level curses interface uses the low-level terminfo interface,
internally.
+.\"
.SH PORTABILITY
X/Open Curses does not describe any of these except for \fBcur_term\fP.
(The inclusion of \fBcur_term\fP appears to be an oversight,
@@ -148,6 +180,10 @@ since other comparable low-level information is omitted by X/Open).
Other implementations may have comparable variables.
Some implementations provide the variables in their libraries,
but omit them from the header files.
+.PP
+All implementations which provide terminfo interfaces add definitions
+as described in the \fBTerminfo Names\fP section.
+Most, but not all, base the definition upon the \fBcur_term\fP variable.
.SH SEE ALSO
.hy 0
\fBcurses\fR(3X),
diff --git a/man/terminfo.head b/man/terminfo.head
index c4cc072baeb0..eb2613573b95 100644
--- a/man/terminfo.head
+++ b/man/terminfo.head
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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: terminfo.head,v 1.21 2013/03/09 22:11:36 tom Exp $
+.\" $Id: terminfo.head,v 1.38 2019/07/27 11:51:04 tom Exp $
.TH terminfo 5 "" "" "File Formats"
.ds n 5
.ds d @TERMINFO@
@@ -35,7 +35,22 @@
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
+.de NS
+.ie n .sp
+.el .sp .5
+.ie n .in +4
+.el .in +2
+.nf
+.ft C \" Courier
+..
+.de NE
+.fi
+.ft R
+.ie n .in -4
+.el .in -2
..
.SH NAME
terminfo \- terminal capability data base
@@ -43,41 +58,72 @@ terminfo \- terminal capability data base
\*d/*/*
.SH DESCRIPTION
.I Terminfo
-is a data base describing terminals, used by screen-oriented programs such as
+is a data base describing terminals,
+used by screen-oriented programs such as
\fBnvi\fR(1),
-\fBrogue\fR(1)
-and libraries such as
-\fBcurses\fR(3X).
+\fBlynx\fR(1),
+\fBmutt\fR(1),
+and other curses applications,
+using high-level calls to libraries such as \fBcurses\fR(3X).
+It is also used via low-level calls by non-curses applications
+which may be screen-oriented (such as \fB@CLEAR@\fP(1))
+or non-screen (such as \fB@TABS@\fP(1)).
+.PP
.I Terminfo
describes terminals by giving a set of capabilities which they
have, by specifying how to perform screen operations, and by
specifying padding requirements and initialization sequences.
-This describes \fBncurses\fR
+.PP
+This manual describes \fBncurses\fR
version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
+.SS Terminfo Entry Syntax
.PP
Entries in
.I terminfo
-consist of a sequence of `,' separated fields (embedded commas may be
-escaped with a backslash or notated as \\054).
-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;
+consist of a sequence of fields:
+.bP
+Each field ends with a comma \*(``,\*(''
+(embedded commas may be
+escaped with a backslash or written as \*(``\\054\*('').
+.bP
+White space between fields is ignored.
+.bP
+The first field in a \fIterminfo\fP entry begins in the first column.
+.bP
+Newlines and leading whitespace (spaces or tabs)
+may be used for formatting entries for readability.
+These are removed from parsed entries.
+.IP
+The \fB@INFOCMP@\fP \fB\-f\fP and \fB\-W\fP options rely on this to
+format if-then-else expressions,
+or to enforce maximum line-width.
+The resulting formatted terminal description can be read by \fB@TIC@\fP.
+.bP
+The first field for each terminal gives the names which are known for the
+terminal, separated by \*(``|\*('' characters.
+.IP
+The first name given is the most common abbreviation for the terminal
+(its primary name),
+the last name given should be a long name fully identifying the terminal
+(see \fBlongname\fP(3X)),
+and all others are treated as synonyms (aliases) for the primary terminal name.
+.IP
+X/Open Curses advises that 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.
-.PP
-Lines beginning with a `#' in the first column are treated as comments.
+.IP
+This implementation is not so strict;
+it allows mixed case in the primary name and aliases.
+If the last name has no embedded blanks,
+it allows that to be both an alias and a verbose name
+(but will warn about this ambiguity).
+.bP
+Lines beginning with a \*(``#\*('' in the first column are treated as comments.
+.IP
While comment lines are legal at any point, the output of \fB@CAPTOINFO@\fP
and \fB@INFOTOCAP@\fP (aliases for \fB@TIC@\fP)
will move comments so they occur only between entries.
.PP
-Newlines and leading tabs may be used for formatting entries for readability.
-These are removed from parsed entries.
-The \fB@INFOCMP@\ \-f\fP option relies on this to format if-then-else expressions:
-the result can be read by \fB@TIC@\fP.
-.PP
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
@@ -85,7 +131,7 @@ have a root name, thus \*(``hp2621\*(''.
This name should not contain hyphens.
Modes that the hardware can be in, or user preferences, should
be indicated by appending a hyphen and a mode suffix.
-Thus, a vt100 in 132 column mode would be vt100\-w.
+Thus, a vt100 in 132-column mode would be vt100\-w.
The following suffixes should be used where possible:
.PP
.TS
@@ -108,7 +154,73 @@ l l l.
\-w Wide mode (> 80 columns, usually 132) vt100\-w
.TE
.PP
-For more on terminal naming conventions, see the \fBterm(7)\fR manual page.
+For more on terminal naming conventions, see the \fBterm\fP(7) manual page.
+.SS Terminfo Capabilities Syntax
+.PP
+The terminfo entry consists of several \fIcapabilities\fP,
+i.e., features that the terminal has,
+or methods for exercising the terminal's features.
+.PP
+After the first field (giving the name(s) of the terminal entry),
+there should be one or more \fIcapability\fP fields.
+These are boolean, numeric or string names with corresponding values:
+.bP
+Boolean capabilities are true when present, false when absent.
+There is no explicit value for boolean capabilities.
+.bP
+Numeric capabilities have a \*(``#\*('' following the name,
+then an unsigned decimal integer value.
+.bP
+String capabilities have a \*(``=\*('' following the name,
+then an string of characters making up the capability value.
+.IP
+String capabilities can be split into multiple lines,
+just as the fields comprising a terminal entry can be
+split into multiple lines.
+While blanks between fields are ignored,
+blanks embedded within a string value are retained,
+except for leading blanks on a line.
+.PP
+Any capability can be \fIcanceled\fP,
+i.e., suppressed from the terminal entry,
+by following its name with \*(``@\*(''
+rather than a capability value.
+.SS Similar Terminals
+.PP
+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:
+.bP
+The capabilities given before
+.B use
+override those in the base type named by
+.BR use .
+.bP
+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.
+.bP
+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
+use reference that imports it, where \fIxx\fP is the capability.
+For example, the entry
+.RS
+.PP
+2621\-nl, smkx@, rmkx@, use=2621,
+.RE
+.PP
+defines a 2621\-nl that does not have the \fBsmkx\fR or \fBrmkx\fR 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.
+.PP
+An entry included via \fBuse\fP can contain canceled capabilities,
+which have the same effect as if those cancels were inline in the
+using terminal entry.
.SS Predefined Capabilities
.\" Head of terminfo man page ends here
.ps -1
diff --git a/man/terminfo.tail b/man/terminfo.tail
index ec076483fe83..7976ff1832c0 100644
--- a/man/terminfo.tail
+++ b/man/terminfo.tail
@@ -1,7 +1,32 @@
-.\" $Id: terminfo.tail,v 1.68 2013/11/09 15:20:48 tom Exp $
-.\" Beginning of terminfo.tail file
-.\" This file is part of ncurses.
-.\" See "terminfo.head" for copyright.
+.\"***************************************************************************
+.\" Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
+.\" *
+.\" Permission is hereby granted, free of charge, to any person obtaining a *
+.\" copy of this software and associated documentation files (the *
+.\" "Software"), to deal in the Software without restriction, including *
+.\" without limitation the rights to use, copy, modify, merge, publish, *
+.\" distribute, distribute with modifications, sublicense, and/or sell *
+.\" copies of the Software, and to permit persons to whom the Software is *
+.\" furnished to do so, subject to the following conditions: *
+.\" *
+.\" The above copyright notice and this permission notice shall be included *
+.\" in all copies or substantial portions of the Software. *
+.\" *
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+.\" *
+.\" Except as contained in this notice, the name(s) of the above copyright *
+.\" holders shall not be used in advertising or otherwise to promote the *
+.\" sale, use or other dealings in this Software without prior written *
+.\" authorization. *
+.\"***************************************************************************
+.\"
+.\" $Id: terminfo.tail,v 1.98 2019/11/30 20:54:32 tom Exp $
.ps +1
.SS User-Defined Capabilities
.
@@ -21,7 +46,7 @@ That is, if \fB@TIC@\fP encounters a capability name
which it does not recognize,
it infers its type (boolean, number or string) from the syntax
and makes an extended table entry for that capability.
-The \fBuse_extended_names\fP function makes this information
+The \fBuse_extended_names\fP(3X) function makes this information
conditionally available to applications.
The ncurses library provides the data leaving most of the behavior
to applications:
@@ -124,12 +149,33 @@ sequence) are given by the two-character code, an \*(``=\*('', and then a string
ending at the next following \*(``,\*(''.
.PP
A number of escape sequences are provided in the string valued capabilities
-for easy encoding of characters there.
+for easy encoding of characters there:
+.bP
Both \fB\eE\fR and \fB\ee\fR
map to an \s-1ESCAPE\s0 character,
-\fB^x\fR maps to a control-x for any appropriate x, and the sequences
-\fB\en \el \er \et \eb \ef \es\fR give
-a newline, line-feed, return, tab, backspace, form-feed, and space.
+.bP
+\fB^x\fR maps to a control-x for any appropriate \fIx\fP, and
+.bP
+the sequences
+.RS 6
+.PP
+\fB\en\fP, \fB\el\fP, \fB\er\fP, \fB\et\fP, \fB\eb\fP, \fB\ef\fP, and \fB\es\fR
+.RE
+.IP
+produce
+.RS 6
+.PP
+\fInewline\fP, \fIline-feed\fP, \fIreturn\fP, \fItab\fP, \fIbackspace\fP, \fIform-feed\fP, and \fIspace\fP,
+.RE
+.IP
+respectively.
+.PP
+X/Open Curses does not say what \*(``appropriate \fIx\fP\*('' might be.
+In practice, that is a printable ASCII graphic character.
+The special case \*(``^?\*('' is interpreted as DEL (127).
+In all other cases, the character value is AND'd with 0x1f,
+mapping to ASCII control codes in the range 0 through 31.
+.PP
Other escapes include
.bP
\fB\e^\fR for \fB^\fR,
@@ -144,7 +190,7 @@ and \fB\e0\fR for null.
.IP
\fB\e0\fR will produce \e200, which does not terminate a string but behaves
as a null character on most terminals, providing CS7 is specified.
-See stty(1).
+See \fBstty\fP(1).
.IP
The reason for this quirk is to maintain binary compatibility of the
compiled terminfo files with other implementations,
@@ -156,20 +202,23 @@ which would not work with other implementations.
Finally, characters may be given as three octal digits after a \fB\e\fR.
.PP
A delay in milliseconds may appear anywhere in a string capability, enclosed in
-$<..> brackets, as in \fBel\fP=\eEK$<5>, and padding characters are supplied by
-.I tputs
+$<..> brackets, as in \fBel\fP=\eEK$<5>,
+and padding characters are supplied by \fBtputs\fP(3X)
to provide this delay.
+.bP
The delay must be a number with at most one decimal
place of precision; it may be followed by suffixes \*(``*\*('' or \*(``/\*('' or both.
+.bP
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
-.IR lines
-affected.) Normally, padding is advisory if the device has the \fBxon\fR
+number of \fIlines\fP affected.)
+.IP
+Normally, padding is advisory if the device has the \fBxon\fR
capability; it is used for cost computation but does not trigger delays.
+.bP
A \*(``/\*(''
suffix indicates that the padding is mandatory and forces a delay of the given
number of milliseconds even on devices for which \fBxon\fR is present to
@@ -205,7 +254,7 @@ Next, if the environment variable TERMINFO_DIRS is set,
as a list of colon-separated directories (or database files) to be searched.
.IP
An empty directory name (i.e., if the variable begins or ends
-with a colon, or contains adacent colons)
+with a colon, or contains adjacent colons)
is interpreted as the system location \fI\*d\fR.
.bP
Finally, \fBncurses\fP searches these compiled-in locations:
@@ -262,7 +311,7 @@ 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
.BR cr .
-(Normally this will be carriage return, control M.)
+(Normally this will be carriage return, control/M.)
If there is a code to produce an audible signal (bell, beep, etc)
give this as
.BR bel .
@@ -346,7 +395,7 @@ it may still be possible to craft a working
.B nel
out of one or both of them.
.PP
-These capabilities suffice to describe hard-copy and \*(lqglass-tty\*(rq terminals.
+These capabilities suffice to describe hard-copy and \*(``glass-tty\*('' terminals.
Thus the model 33 teletype is described as
.PP
.DT
@@ -404,21 +453,21 @@ The \fB%\fR encodings have the following meanings:
outputs \*(``%\*(''
.TP
\fB%\fP\fI[[\fP:\fI]flags][width[.precision]][\fP\fBdoxXs\fP\fI]\fP
-as in \fBprintf\fP, flags are \fI[\-+#]\fP and \fIspace\fP.
+as in \fBprintf\fP(3), flags are \fI[\-+#]\fP and \fIspace\fP.
Use a \*(``:\*('' to allow the next character to be a \*(``\-\*('' flag,
-avoiding interpreting "%\-" as an operator.
+avoiding interpreting \*(``%\-\*('' as an operator.
.TP
\f(CW%c\fP
-print pop() like %c in \fBprintf\fP
+print \fIpop()\fP like %c in \fBprintf\fP
.TP
\fB%s\fP
-print pop() like %s in \fBprintf\fP
+print \fIpop()\fP like %s in \fBprintf\fP
.TP
\fB%p\fP\fI[1\-9]\fP
push \fIi\fP'th parameter
.TP
\fB%P\fP\fI[a\-z]\fP
-set dynamic variable \fI[a\-z]\fP to pop()
+set dynamic variable \fI[a\-z]\fP to \fIpop()\fP
.TP
\fB%g\fP\fI[a\-z]/\fP
get dynamic variable \fI[a\-z]\fP and push it
@@ -429,9 +478,9 @@ set static variable \fI[a\-z]\fP to \fIpop()\fP
\fB%g\fP\fI[A\-Z]\fP
get static variable \fI[a\-z]\fP and push it
.IP
-The terms "static" and "dynamic" are misleading.
+The terms \*(``static\*('' and \*(``dynamic\*('' are misleading.
Historically, these are simply two different sets of variables,
-whose values are not reset between calls to \fBtparm\fP.
+whose values are not reset between calls to \fBtparm\fP(3X).
However, that fact is not documented in other implementations.
Relying on it will adversely impact portability to other implementations.
.TP
@@ -445,7 +494,7 @@ integer constant \fInn\fP
push strlen(pop)
.TP
\fB%+\fP, \fB%\-\fP, \fB%*\fP, \fB%/\fP, \fB%m\fP
-arithmetic (%m is mod): \fIpush(pop() op pop())\fP
+arithmetic (%m is \fImod\fP): \fIpush(pop() op pop())\fP
.TP
\fB%&\fP, \fB%|\fP, \fB%^\fP
bit operations (AND, OR and exclusive-OR): \fIpush(pop() op pop())\fP
@@ -457,7 +506,7 @@ logical operations: \fIpush(pop() op pop())\fP
logical AND and OR operations (for conditionals)
.TP
\fB%!\fP, \fB%~\fP
-unary operations (logical and bit complement): push(op pop())
+unary operations (logical and bit complement): \fIpush(op pop())\fP
.TP
\fB%i\fP
add 1 to first two parameters (for ANSI terminals)
@@ -492,12 +541,12 @@ to be sent \eE&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 digits.
-Thus its \fBcup\fR capability is \*(lqcup=6\eE&%p2%2dc%p1%2dY\*(rq.
+Thus its \fBcup\fR capability is \*(``cup=6\eE&%p2%2dc%p1%2dY\*(''.
.PP
The Microterm \s-1ACT-IV\s0 needs the current row and column sent
preceded by a \fB^T\fR, with the row and column simply encoded in binary,
-\*(lqcup=^T%p1%c%p2%c\*(rq.
-Terminals which use \*(lq%c\*(rq need to be able to
+\*(``cup=^T%p1%c%p2%c\*(''.
+Terminals which use \*(``%c\*('' need to be able to
backspace the cursor (\fBcub1\fR),
and to move the cursor up one line on the screen (\fBcuu1\fR).
This is necessary because it is not always safe to transmit \fB\en\fR
@@ -507,7 +556,7 @@ tabs are never expanded, so \et is safe to send.
This turns out to be essential for the Ann Arbor 4080.)
.PP
A final example is the \s-1LSI ADM\s0-3a, which uses row and column
-offset by a blank character, thus \*(lqcup=\eE=%p1%' '%+%c%p2%' '%+%c\*(rq.
+offset by a blank character, thus \*(``cup=\eE=%p1%' '%+%c%p2%' '%+%c\*(''.
After sending \*(``\eE=\*('', 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 character.
@@ -545,7 +594,7 @@ spaces to the right) these can be given as
.BR cub ,
.BR cuf ,
and
-.BR cuu
+.B cuu
with a single parameter indicating how many spaces to move.
These are primarily useful if the terminal does not have
.BR cup ,
@@ -645,7 +694,7 @@ System V and XSI Curses expect that \fBind\fR, \fBri\fR,
\fBindn\fR, and \fBrin\fR will simulate destructive scrolling; their
documentation cautions you not to define \fBcsr\fR unless this is true.
This \fBcurses\fR implementation is more liberal and will do explicit erases
-after scrolling if \fBndstr\fR is defined.
+after scrolling if \fBndsrc\fR is defined.
.PP
If the terminal has the ability to define a window as part of
memory, which all commands affect,
@@ -676,18 +725,18 @@ 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 \*(lqabc\ \ \ \ def\*(rq using local
-cursor motions (not spaces) between the \*(lqabc\*(rq and the \*(lqdef\*(rq.
-Then position the cursor before the \*(lqabc\*(rq and put the terminal in insert
+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 terminal does
not distinguish between blanks and untyped positions.
-If the \*(lqabc\*(rq
-shifts over to the \*(lqdef\*(rq which then move together around the end of the
+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 \fBin\fR, which stands for
-\*(lqinsert null\*(rq.
+\*(``insert null\*(''.
.PP
While these are two logically separate attributes (one line versus multi-line
insert mode, and special treatment of untyped spaces) we have seen no
@@ -935,7 +984,7 @@ give this sequence as
If there is a way to make the cursor completely invisible, give that as
.BR civis .
The capability
-.BR cnorm
+.B cnorm
should be given which undoes the effects of both of these modes.
.PP
If your terminal correctly generates underlined characters
@@ -1058,13 +1107,17 @@ sequences to make sure that the change becomes visible.
.PP
.SS Tabs and Initialization
.PP
+A few capabilities are used only for tabs:
+.bP
If the terminal has hardware tabs, the command to advance to the next
tab stop can be given as
.B ht
-(usually control I).
+(usually control/I).
+.bP
A \*(``back-tab\*('' command which moves leftward to the preceding tab stop can
be given as
.BR cbt .
+.IP
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
@@ -1073,14 +1126,15 @@ or
.B cbt
even if they are present, since the user may not have the tab stops
properly set.
+.bP
If the terminal has hardware tabs which are initially set every
.I n
spaces when the terminal is powered up,
the numeric parameter
.B it
is given, showing the number of spaces the tabs are set to.
-This is normally used by the
-.IR @TSET@
+.IP
+The \fBit\fP capability is normally used by the \fB@TSET@\fP
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,
@@ -1088,48 +1142,52 @@ the terminfo description can assume that they are properly set.
.PP
Other capabilities
include
+.bP
.BR is1 ,
.BR is2 ,
and
.BR is3 ,
initialization strings for the terminal,
+.bP
.BR iprog ,
the path name of a program to be run to initialize the terminal,
+.bP
and \fBif\fR, the name of a file containing long initialization strings.
+.PP
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
-option of the
-.IR @TPUT@
-program, each time the user logs in.
+option of the \fB@TPUT@\fP program, each time the user logs in.
They will be printed in the following order:
.RS
.TP
run the program
-.BR iprog
+.B iprog
.TP
output
-.BR is1
-.BR is2
+.br
+\fBis1\fP and
+.br
+\fBis2\fP
.TP
set the margins using
-.BR mgc ,
-.BR smgl
-and
-.BR smgr
+\fBmgc\fP or
+.br
+\fBsmglp\fP and \fBsmgrp\fP or
+.br
+\fBsmgl\fP and \fBsmgr\fP
.TP
set tabs using
.B tbc
and
-.BR hts
+.B hts
.TP
print the file
-.BR if
+\fBif\fP
.TP
-and finally
-output
-.BR is3 .
+and finally output
+\fBis3\fP.
.RE
.PP
Most initialization is done with
@@ -1146,7 +1204,7 @@ A set of sequences that does a harder reset from a totally unknown state
can be given as
.BR rs1 ,
.BR rs2 ,
-.BR rf
+.B rf
and
.BR rs3 ,
analogous to
@@ -1154,14 +1212,16 @@ analogous to
.B is2 ,
.B if
and
-.BR is3
+.B is3
respectively.
-These strings are output by the
-.IR reset
-program, which is used when the terminal gets into a wedged state.
+These strings are output
+by \fIreset\fP option of \fB@TPUT@\fP,
+or by the \fB@RESET@\fP program
+(an alias of \fB@TSET@\fP),
+which is used when the terminal gets into a wedged state.
Commands are normally placed in
.BR rs1 ,
-.BR rs2
+.B rs2
.B rs3
and
.B rf
@@ -1171,15 +1231,12 @@ For example, the command to set the vt100 into 80-column mode would
normally be part of
.BR is2 ,
but it causes an annoying glitch of the screen and is not normally
-needed since the terminal is usually already in 80 column mode.
+needed since the terminal is usually already in 80-column mode.
.PP
-The
-.IR reset
-program writes strings
-including
+The \fB@RESET@\fP program writes strings including
.BR iprog ,
etc., in the same order as the
-.IR init
+.I init
program, using
.BR rs1 ,
etc., instead of
@@ -1190,10 +1247,10 @@ If any of
.BR rs2 ,
.BR rs3 ,
or
-.BR rf
-reset capability strings are missing, the
-.IR reset
-program falls back upon the corresponding initialization capability string.
+.B rf
+reset capability strings are missing,
+the \fB@RESET@\fP program
+falls back upon the corresponding initialization capability string.
.PP
If there are commands to set and clear tab stops, they can be given as
.B tbc
@@ -1206,6 +1263,33 @@ described by this, the sequence can be placed in
.B is2
or
.BR if .
+.PP
+The \fB@TPUT@ reset\fP command uses the same capability strings
+as the \fB@RESET@\fP command,
+although the two programs (\fB@TPUT@\fP and \fB@RESET@\fP)
+provide different command-line options.
+.PP
+In practice, these terminfo capabilities are not often used in
+initialization of tabs
+(though they are required for the \fB@TABS@\fP program):
+.bP
+Almost all hardware terminals (at least those which supported tabs)
+initialized those to every \fIeight\fP columns:
+.IP
+The only exception was the AT&T 2300 series,
+which set tabs to every \fIfive\fP columns.
+.bP
+In particular, developers of the hardware terminals which are commonly used
+as models for modern terminal emulators provided documentation demonstrating
+that \fIeight\fP columns were the standard.
+.bP
+Because of this, the terminal initialization programs
+\fB@TPUT@\fP and \fB@TSET@\fP
+use the
+\fBtbc\fP (\fBclear_all_tabs\fP) and
+\fBhts\fP (\fBset_tab\fP) capabilities directly
+only when the \fBit\fP (\fBinit_tabs\fP) capability
+is set to a value other than \fIeight\fP.
.SS Delays and Padding
.PP
Many older and slower terminals do not support either XON/XOFF or DTR
@@ -1274,52 +1358,74 @@ They are documented here in case they ever become important.
.SS Line Graphics
.PP
Many terminals have alternate character sets useful for forms-drawing.
-Terminfo and \fBcurses\fR build in support for the drawing characters
+Terminfo and \fBcurses\fR have built-in support
+for most of the drawing characters
supported by the VT100, with some characters from the AT&T 4410v1 added.
This alternate character set may be specified by the \fBacsc\fR capability.
.PP
.TS H
center expand;
-l l l l
-l l l l
-lw25 lw10 lw6 lw6.
+l l l l l
+l l l l l
+_ _ _ _ _
+lw25 lw10 lw6 lw6 lw6.
.\".TH
-\fBGlyph ACS Ascii VT100\fR
-\fBName Name Default Name\fR
-UK pound sign ACS_STERLING f }
-arrow pointing down ACS_DARROW v .
-arrow pointing left ACS_LARROW < ,
-arrow pointing right ACS_RARROW > +
-arrow pointing up ACS_UARROW ^ \-
-board of squares ACS_BOARD # h
-bullet ACS_BULLET o ~
-checker board (stipple) ACS_CKBOARD : a
-degree symbol ACS_DEGREE \e f
-diamond ACS_DIAMOND + `
-greater-than-or-equal-to ACS_GEQUAL > z
-greek pi ACS_PI * {
-horizontal line ACS_HLINE \- q
-lantern symbol ACS_LANTERN # i
-large plus or crossover ACS_PLUS + n
-less-than-or-equal-to ACS_LEQUAL < y
-lower left corner ACS_LLCORNER + m
-lower right corner ACS_LRCORNER + j
-not-equal ACS_NEQUAL ! |
-plus/minus ACS_PLMINUS # g
-scan line 1 ACS_S1 ~ o
-scan line 3 ACS_S3 \- p
-scan line 7 ACS_S7 \- r
-scan line 9 ACS_S9 \&_ s
-solid square block ACS_BLOCK # 0
-tee pointing down ACS_TTEE + w
-tee pointing left ACS_RTEE + u
-tee pointing right ACS_LTEE + t
-tee pointing up ACS_BTEE + v
-upper left corner ACS_ULCORNER + l
-upper right corner ACS_URCORNER + k
-vertical line ACS_VLINE | x
+\fBGlyph ACS Ascii acsc acsc\fR
+\fBName Name Default Char Value\fR
+arrow pointing right ACS_RARROW > + 0x2b
+arrow pointing left ACS_LARROW < , 0x2c
+arrow pointing up ACS_UARROW ^ \- 0x2d
+arrow pointing down ACS_DARROW v . 0x2e
+solid square block ACS_BLOCK # 0 0x30
+diamond ACS_DIAMOND + ` 0x60
+checker board (stipple) ACS_CKBOARD : a 0x61
+degree symbol ACS_DEGREE \e f 0x66
+plus/minus ACS_PLMINUS # g 0x67
+board of squares ACS_BOARD # h 0x68
+lantern symbol ACS_LANTERN # i 0x69
+lower right corner ACS_LRCORNER + j 0x6a
+upper right corner ACS_URCORNER + k 0x6b
+upper left corner ACS_ULCORNER + l 0x6c
+lower left corner ACS_LLCORNER + m 0x6d
+large plus or crossover ACS_PLUS + n 0x6e
+scan line 1 ACS_S1 ~ o 0x6f
+scan line 3 ACS_S3 \- p 0x70
+horizontal line ACS_HLINE \- q 0x71
+scan line 7 ACS_S7 \- r 0x72
+scan line 9 ACS_S9 \&_ s 0x73
+tee pointing right ACS_LTEE + t 0x74
+tee pointing left ACS_RTEE + u 0x75
+tee pointing up ACS_BTEE + v 0x76
+tee pointing down ACS_TTEE + w 0x77
+vertical line ACS_VLINE | x 0x78
+less-than-or-equal-to ACS_LEQUAL < y 0x79
+greater-than-or-equal-to ACS_GEQUAL > z 0x7a
+greek pi ACS_PI * { 0x7b
+not-equal ACS_NEQUAL ! | 0x7c
+UK pound sign ACS_STERLING f } 0x7d
+bullet ACS_BULLET o ~ 0x7e
.TE
.PP
+A few notes apply to the table itself:
+.bP
+X/Open Curses incorrectly states that the mapping for \fIlantern\fP is
+uppercase \*(``I\*('' although Unix implementations use the
+lowercase \*(``i\*('' mapping.
+.bP
+The DEC VT100 implemented graphics using the alternate character set
+feature, temporarily switching \fImodes\fP and sending characters
+in the range 0x60 (96) to 0x7e (126)
+(the \fBacsc Value\fP column in the table).
+.bP
+The AT&T terminal added graphics characters outside that range.
+.IP
+Some of the characters within the range do not match the VT100;
+presumably they were used in the AT&T terminal:
+\fIboard of squares\fP replaces the VT100 \fInewline\fP symbol, while
+\fIlantern symbol\fP replaces the VT100 \fIvertical tab\fP symbol.
+The other VT100 symbols for control characters (\fIhorizontal tab\fP,
+\fIcarriage return\fP and \fIline-feed\fP) are not (re)used in curses.
+.PP
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 \fBsmacs\fR/\fBrmacs\fR switches) will be rendered
@@ -1329,16 +1435,24 @@ character pairs right to left in sequence; these become the ACSC string.
.PP
.SS Color Handling
.PP
-Most color terminals are either \*(``Tektronix-like\*('' or \*(``HP-like\*(''.
+The curses library functions \fBinit_pair\fP and \fBinit_color\fP
+manipulate the \fIcolor pairs\fP and \fIcolor values\fP discussed in this
+section
+(see \fBcurs_color\fP(3X) for details on these and related functions).
+.PP
+Most color terminals are either \*(``Tektronix-like\*('' or \*(``HP-like\*('':
+.bP
Tektronix-like
-terminals have a predefined set of N colors (where N usually 8), and can set
+terminals have a predefined set of \fIN\fP colors
+(where \fIN\fP is 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
+into \fIN\fP\ *\ \fIN\fP color-pairs.
+.bP
+On HP-like terminals, the user 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.
+Up to \fIM\fP color-pairs may be set up from 2*\fIM\fP different colors.
+ANSI-compatible terminals are Tektronix-like.
.PP
Some basic color capabilities are independent of the color method.
The numeric
@@ -1354,6 +1468,11 @@ terminal emulators) erase screen areas with the current background color rather
than the power-up default background; these should have the boolean capability
\fBbce\fR.
.PP
+While the curses library works with \fIcolor pairs\fP
+(reflecting the inability of some devices to set foreground
+and background colors independently),
+there are separate capabilities for setting these features:
+.bP
To change the current foreground or background color on a Tektronix-type
terminal, use \fBsetaf\fR (set ANSI foreground) and \fBsetab\fR (set ANSI
background) or \fBsetf\fR (set foreground) and \fBsetb\fR (set background).
@@ -1362,12 +1481,12 @@ The SVr4 documentation describes
only \fBsetaf\fR/\fBsetab\fR; the XPG4 draft says that "If the terminal
supports ANSI escape sequences to set background and foreground, they should
be coded as \fBsetaf\fR and \fBsetab\fR, respectively.
+.bP
If the terminal
supports other escape sequences to set background and foreground, they should
be coded as \fBsetf\fR and \fBsetb\fR, respectively.
-The \fIvidputs()\fR
-function and the refresh functions use \fBsetaf\fR and \fBsetab\fR if they are
-defined."
+The \fBvidputs\fR and the \fBrefresh\fP(3X) functions
+use the \fBsetaf\fR and \fBsetab\fR capabilities if they are defined.
.PP
The \fBsetaf\fR/\fBsetab\fR and \fBsetf\fR/\fBsetb\fR capabilities take a
single numeric argument each.
@@ -1416,6 +1535,8 @@ otherwise red/blue will be interchanged on the display.
On an HP-like terminal, use \fBscp\fR with a color-pair number parameter to set
which color pair is current.
.PP
+Some terminals allow the \fIcolor values\fP to be modified:
+.bP
On a Tektronix-like terminal, the capability \fBccc\fR may be present to
indicate that colors can be modified.
If so, the \fBinitc\fR capability will
@@ -1427,7 +1548,7 @@ If the boolean capability \fBhls\fR is present,
they are instead as HLS (Hue, Lightness, Saturation) indices.
The ranges are
terminal-dependent.
-.PP
+.bP
On an HP-like terminal, \fBinitp\fR may give a capability for changing a
color-pair value.
It will take seven parameters; a color-pair number (0 to
@@ -1495,7 +1616,7 @@ and
This is primarily useful for superscripts and subscripts on hard-copy terminals.
If a hard-copy terminal can eject to the next page (form feed), give this as
.B ff
-(usually control L).
+(usually control/L).
.PP
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)
@@ -1608,9 +1729,9 @@ delete and insert line.
The ncurses implementation ignores this glitch.
.PP
The Beehive Superbee, which is unable to correctly transmit the escape
-or control C characters, has
+or control/C characters, has
.BR xsb ,
-indicating that the f1 key is used for escape and f2 for control C.
+indicating 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\*(''.
@@ -1618,36 +1739,6 @@ Note that in older terminfo versions, this capability was called
Other specific terminal problems may be corrected by adding more
capabilities of the form \fBx\fR\fIx\fR.
.PP
-.SS Similar Terminals
-.PP
-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 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
-use reference that imports it, where \fIxx\fP is the capability.
-For example, the entry
-.RS
-.PP
-2621\-nl, smkx@, rmkx@, use=2621,
-.RE
-.PP
-defines a 2621\-nl that does not have the \fBsmkx\fR or \fBrmkx\fR 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.
-.PP
.SS Pitfalls of Long Entries
.PP
Long terminfo entries are unlikely to be a problem; to date, no entry has even
@@ -1656,13 +1747,13 @@ Unfortunately, the termcap
translations are much more strictly limited (to 1023 bytes), thus termcap translations
of long terminfo entries can cause problems.
.PP
-The man pages for 4.3BSD and older versions of \fBtgetent()\fP instruct the user to
+The man pages for 4.3BSD and older versions of \fBtgetent\fP instruct the user to
allocate a 1024-byte buffer for the termcap entry.
The entry gets null-terminated by
the termcap library, so that makes the maximum safe length for a termcap entry
1k\-1 (1023) bytes.
Depending on what the application and the termcap library
-being used does, and where in the termcap file the terminal type that \fBtgetent()\fP
+being used does, and where in the termcap file the terminal type that \fBtgetent\fP
is searching for is, several bad things can happen.
.PP
Some termcap libraries print a warning message or exit if they find an
@@ -1672,18 +1763,18 @@ Some application programs allocate more than
the recommended 1K for the termcap entry; others do not.
.PP
Each termcap entry has two important sizes associated with it: before
-"tc" expansion, and after "tc" expansion.
-"tc" is the capability that
+\*(``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 does not use the "tc"
+If a termcap entry does not use the \*(``tc\*(''
capability, then of course the two lengths are the same.
.PP
-The "before tc expansion" length is the most important one, because it
+The \*(``before tc expansion\*('' length is the most important one, because it
affects more than just users of that particular terminal.
This is the
length of the entry as it exists in /etc/termcap, minus the
-backslash-newline pairs, which \fBtgetent()\fP strips out while reading it.
+backslash-newline pairs, which \fBtgetent\fP strips out while reading it.
Some termcap libraries strip off the final newline, too (GNU termcap does not).
Now suppose:
.bP
@@ -1695,12 +1786,12 @@ 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 is the entry it wants,
.bP
-and \fBtgetent()\fP is searching for a terminal type that either is the
+and \fBtgetent\fP is searching for a terminal type that either is the
long entry, appears in the termcap file after the long entry, or
-does not appear in the file at all (so that \fBtgetent()\fP has to search
+does not appear in the file at all (so that \fBtgetent\fP has to search
the whole termcap file).
.PP
-Then \fBtgetent()\fP will overwrite memory, perhaps its stack, and probably core dump
+Then \fBtgetent\fP 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.
@@ -1711,16 +1802,16 @@ 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.
.PP
-The "after tc expansion" length will have a similar effect to the
+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 \fBtgetent()\fP only does "tc" expansion once it is found the
+type, since \fBtgetent\fP only does \*(``tc\*('' expansion once it is found the
terminal type it was looking for, not while searching.
.PP
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 is too long even before
-"tc" expansion, it will have this effect even for users of some other
+\*(``tc\*('' expansion, it will have this effect even for users of some other
terminal types and users whose TERM variable does not have a termcap
entry.
.PP
@@ -1765,8 +1856,8 @@ They are deduced from the
documentation for the AT&T 505 terminal.
.PP
Be careful assigning the \fBkmous\fR capability.
-The \fBncurses\fR wants to
-interpret it as \fBKEY_MOUSE\fR, for use by terminals and emulators like xterm
+The \fBncurses\fR library wants to interpret it as \fBKEY_MOUSE\fR,
+for use by terminals and emulators like xterm
that can return mouse-tracking information in the keyboard-input stream.
.PP
X/Open Curses does not mention italics.
@@ -1782,30 +1873,30 @@ 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, accurate as of October 1995:
-.PP
+.bP
\fBSVR4, Solaris, ncurses\fR \-\-
These support all SVr4 capabilities.
-.PP
+.bP
\fBSGI\fR \-\-
Supports the SVr4 set, adds one undocumented extended string
capability (\fBset_pglen\fR).
-.PP
+.bP
\fBSVr1, Ultrix\fR \-\-
These support a restricted subset of terminfo capabilities.
The booleans end with \fBxon_xoff\fR;
the numerics with \fBwidth_status_line\fR;
and the strings with \fBprtr_non\fR.
-.PP
+.bP
\fBHP/UX\fR \-\-
Supports the SVr1 subset, plus the SVr[234] numerics \fBnum_labels\fR,
\fBlabel_height\fR, \fBlabel_width\fR, plus function keys 11 through 63, plus
\fBplab_norm\fR, \fBlabel_on\fR, and \fBlabel_off\fR, plus some incompatible
extensions in the string table.
-.PP
+.bP
\fBAIX\fR \-\-
Supports the SVr1 subset, plus function keys 11 through 63, plus a number
of incompatible string table extensions.
-.PP
+.bP
\fBOSF\fR \-\-
Supports both the SVr4 set and the AIX extensions.
.SH FILES
@@ -1813,12 +1904,16 @@ Supports both the SVr4 set and the AIX extensions.
\*d/?/*
files containing terminal descriptions
.SH SEE ALSO
+\fB@TABS@\fR(1),
\fB@TIC@\fR(1M),
\fB@INFOCMP@\fR(1M),
\fBcurses\fR(3X),
+\fBcurs_color\fR(3X),
+\fBcurs_variables\fR(3X),
\fBprintf\fR(3),
\fBterm\fR(\*n).
\fBterm_variables\fR(3X).
+\fBuser_caps\fR(5).
.SH AUTHORS
Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
Based on pcurses by Pavel Curtis.
diff --git a/man/tic.1m b/man/tic.1m
index 5c3a63fa9cbd..dfff794d5f97 100644
--- a/man/tic.1m
+++ b/man/tic.1m
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2018,2019 Free 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.58 2013/07/20 19:31:25 tom Exp $
+.\" $Id: tic.1m,v 1.76 2019/11/30 20:51:55 tom Exp $
.TH @TIC@ 1M ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
@@ -35,7 +35,8 @@
.ds n 5
.ds d @TERMINFO@
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.SH NAME
\fB@TIC@\fR \- the \fIterminfo\fR entry-description compiler
@@ -54,10 +55,12 @@ N\
T\
U\
V\
+W\
a\
c\
f\
g\
+q\
r\
s\
t\
@@ -65,6 +68,7 @@ x\
\fR]
[\fB\-e\fR \fInames\fR]
[\fB\-o\fR \fIdir\fR]
+[\fB\-Q\fR[\fIn\fR]]
[\fB\-R\fR \fIsubset\fR]
[\fB\-v\fR[\fIn\fR]]
[\fB\-w\fR[\fIn\fR]]
@@ -94,7 +98,7 @@ default directory name (only adding a ".db" suffix).
.PP
In either case (directory or hashed database),
\fB@TIC@\fP will create the container if it does not exist.
-For a directory, this would be the "terminfo" leaf,
+For a directory, this would be the \*(``terminfo\*('' leaf,
versus a "terminfo.db" file.
.PP
The results are normally placed in the system terminfo database \fB\*d\fR.
@@ -124,6 +128,14 @@ directories listed in the TERMINFO_DIRS environment variable,
a compiled-in list of directories (@TERMINFO_DIRS@), and
.bP
the system terminfo database (\fI\*d\fR).
+.SS ALIASES
+.PP
+This is the same program as @INFOTOCAP@ and @CAPTOINFO@;
+usually those are linked to, or copied from this program:
+.bP
+When invoked as @INFOTOCAP@, @TIC@ sets the \fB\-I\fP option.
+.bP
+When invoked as @CAPTOINFO@, @TIC@ sets the \fB\-C\fP option.
.SS OPTIONS
.TP
\fB\-0\fR
@@ -152,10 +164,24 @@ but commented out with two preceding dots.
The actual format used incorporates some improvements for escaped characters
from terminfo format.
For a stricter BSD-compatible translation, add the \fB\-K\fR option.
+.IP
+If this is combined with \fB\-c\fR, \fB@TIC@\fR makes additional checks
+to report cases where the terminfo values do not have an exact equivalent
+in termcap form.
+For example:
+.RS
+.bP
+\fBsgr\fP usually will not convert, because termcap lacks the ability to
+work with more than two parameters, and because termcap lacks many of
+the arithmetic/logical operators used in terminfo.
+.bP
+capabilities with more than one delay or with delays before the end of
+the string will not convert completely.
+.RE
.TP
\fB\-c\fR
-tells \fB@TIC@\fP to only check \fIfile\fR for errors, including syntax problems and
-bad use links.
+tells \fB@TIC@\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.
@@ -164,6 +190,11 @@ as well as buggy checking for the buffer length
(and a documented limit in terminfo),
these entries may cause core
dumps with other implementations.
+.IP
+\fB@TIC@\fP checks string capabilities to ensure that those with parameters
+will be valid expressions.
+It does this check only for the predefined string capabilities;
+those which are defined with the \fB\-x\fP option are ignored.
.TP
\fB\-D\fR
tells \fB@TIC@\fP to print the database locations that it knows about, and exit.
@@ -182,7 +213,8 @@ 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 containing the list if it
contains a '/'.
-(Note: depending on how tic was compiled, this option may require \fB\-I\fR or \fB\-C\fR.)
+(Note: depending on how @TIC@ was compiled,
+this option may require \fB\-I\fR or \fB\-C\fR.)
.TP
\fB\-f\fR
Display complex terminfo strings which contain if/then/else/endif expressions
@@ -224,6 +256,25 @@ obsolete capabilities.
Write compiled entries to given database location.
Overrides the TERMINFO environment variable.
.TP
+\fB\-Q\fR\fIn\fR
+Rather than show source in terminfo (text) format,
+print the compiled (binary) format in hexadecimal or base64 form,
+depending on the option's value:
+.RS 8
+.TP 3
+1
+hexadecimal
+.TP 3
+2
+base64
+.TP 3
+3
+hexadecimal and base64
+.RE
+.TP
+\fB\-q\fR
+Suppress comments and blank lines when showing translated source.
+.TP
\fB\-R\fR\fIsubset\fR
Restrict output to a given subset.
This option is for use with archaic
@@ -231,7 +282,8 @@ versions of terminfo like those on SVr1, Ultrix, or HP/UX that do not support
the full set of SVR4/XSI Curses terminfo; and outright broken ports like AIX 3.x
that have their own extensions incompatible with SVr4/XSI.
Available subsets
-are "SVr1", "Ultrix", "HP", "BSD" and "AIX"; see \fBterminfo\fR(\*n) for details.
+are \*(``SVr1\*('', \*(``Ultrix\*('', \*(``HP\*('', \*(``BSD\*('' and \*(``AIX\*('';
+see \fBterminfo\fR(\*n) for details.
.TP
\fB\-r\fR
Force entry resolution (so there are no remaining tc capabilities) even
@@ -266,8 +318,10 @@ reports the version of ncurses which was used in this program, and exits.
\fB\-v\fR\fIn\fR
specifies that (verbose) output be written to standard error trace
information showing \fB@TIC@\fR's progress.
+.IP
The optional parameter \fIn\fR is a number from 1 to 10, inclusive,
indicating the desired level of detail of information.
+If ncurses is built without tracing support, the optional parameter is ignored.
If \fIn\fR is omitted, the default level is 1.
If \fIn\fR is specified and greater than 1, the level of
detail is increased.
@@ -299,13 +353,20 @@ All values computed in construction of the hash table
If the debug level \fIn\fR is not given, it is taken to be one.
.RE
.TP
+\fB\-W\fR
+By itself, the \fB\-w\fP option will not force long strings to be wrapped.
+Use the \fB\-W\fP option to do this.
+.IP
+If you specify both \fB\-f\fP and \fB\-W\fP options,
+the latter is ignored when \fB\-f\fP has already split the line.
+.TP
\fB\-w\fR\fIn\fR
specifies the width of the output.
The parameter is optional.
If it is omitted, it defaults to 60.
.TP
\fB\-x\fR
-Treat unknown capabilities as user-defined.
+Treat unknown capabilities as user-defined (see \fBuser_caps(\*n)\fP).
That is, if you supply a capability name which \fB@TIC@\fP does not recognize,
it will infer its type (boolean, number or string) from the syntax and
make an extended table entry for that.
@@ -347,15 +408,103 @@ 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.
-.SH COMPATIBILITY
+will be truncated to the maximum alias length
+and a warning message will be printed.
+.SH HISTORY
+.PP
+System V Release 2 provided a \fBtic\fP utility.
+It accepted a single option: \fB\-v\fP (optionally followed by a number).
+According to Ross Ridge's comment in \fImytinfo\fP,
+this version of \fBtic\fP was
+unable to represent cancelled capabilities.
+.PP
+System V Release 3 provided a different \fBtic\fP utility,
+written by Pavel Curtis,
+(originally named \*(``compile\*('' in \fIpcurses\fP).
+This added an option \fB\-c\fP to check the file for
+errors, with the caveat that errors in \*(``use=\*('' links
+would not be reported.
+System V Release 3 documented a few warning messages which
+did not appear in \fIpcurses\fP.
+While the program itself was changed little as development
+continued with System V Release 4,
+the table of capabilities grew from 180 (\fIpcurses\fP) to 464 (Solaris).
+.PP
+In early development of ncurses (1993),
+Zeyd Ben-Halim used the table from \fImytinfo\fP to
+extend the \fIpcurses\fP table to 469 capabilities
+(456 matched SVr4, 8 were only in SVr4, 13 were not in SVr4).
+Of those 13, 11 were ultimately discarded
+(perhaps to match the draft of X/Open Curses).
+The exceptions were
+\fBmemory_lock_above\fP and
+\fBmemory_unlock\fP (see \fBuser_caps\fP(5)).
+.PP
+Eric Raymond incorporated parts of \fImytinfo\fP into ncurses
+to implement the termcap-to-terminfo source conversion,
+and extended that to begin development of
+the corresponding terminfo-to-termcap source conversion,
+Thomas Dickey completed that development over the course of several years.
+.PP
+In 1999, Thomas Dickey added the \fB\-x\fP option
+to support user-defined capabilities.
+.PP
+In 2010, Roy Marples provided a \fBtic\fP program
+and terminfo library for NetBSD.
+That implementation adapts several features from ncurses,
+including \fB@TIC@\fP's \fB\-x\fP option.
+.PP
+The \fB\-c\fP option tells \fB@TIC@\fP to check for problems in the
+terminfo source file.
+Continued development provides additional checks:
+.bP
+\fIpcurses\fP had 8 warnings
+.bP
+ncurses in 1996 had 16 warnings
+.bP
+Solaris (SVr4) curses has 28 warnings
+.bP
+NetBSD tic in 2019 has 19 warnings.
+.bP
+ncurses in 2019 has 96 warnings
+.PP
+The checking done in ncurses' \fB@TIC@\fP helps with the conversion to
+termcap, as well as pointing out errors and inconsistencies.
+It is also used to ensure consistency with the user-defined capabilities.
+There are 527 distinct capabilities in ncurses' terminal database;
+128 of those are user-defined.
+.SH PORTABILITY
+.PP
+X/Open Curses, Issue 7 (2009) provides a brief description of \fBtic\fP.
+It lists one option: \fB\-c\fP.
+The omission of \fB\-v\fP is unexpected.
+The change history states that the description is derived from True64 UNIX.
+According to its manual pages, that system also supported the \fB\-v\fP option.
+.PP
+Shortly after Issue 7 was released, Tru64 was discontinued.
+As of 2019, the surviving implementations of \fBtic\fP
+are SVr4 (AIX, HP-UX and Solaris),
+ncurses
+and NetBSD curses.
+The SVr4 \fBtic\fP programs all support the \fB\-v\fP option.
+The NetBSD \fBtic\fP program follows X/Open's documentation,
+omitting the \fB\-v\fP option.
+.PP
+The X/Open rationale states that some implementations of \fBtic\fP
+read terminal descriptions from the standard input if the \fIfile\fP
+parameter is omitted.
+None of these implementations do that.
+Further, it comments that some may choose to read from \*(''./terminfo.src\*(''
+but that is obsolescent behavior from SVr2,
+and is not (for example) a documented feature of SVr3.
+.SS COMPATIBILITY
There is some evidence that historic \fB@TIC@\fR implementations treated
description fields with no whitespace in them as additional aliases or
short names.
This \fB@TIC@\fR does not do that, but it does warn when
description fields may be treated that way and check them for dangerous
characters.
-.SH EXTENSIONS
+.SS EXTENSIONS
Unlike the SVr4 \fB@TIC@\fR command, this implementation can actually
compile termcap sources.
In fact, entries in terminfo and termcap syntax can
@@ -376,28 +525,45 @@ compiled entries.
The error messages from this \fB@TIC@\fR have the same format as GNU C
error messages, and can be parsed by GNU Emacs's compile facility.
.PP
-The
-\fB\-0\fR,
-\fB\-1\fR,
-\fB\-C\fR,
-\fB\-G\fR,
-\fB\-I\fR,
-\fB\-N\fR,
-\fB\-R\fR,
-\fB\-T\fR,
-\fB\-V\fR,
-\fB\-a\fR,
-\fB\-e\fR,
-\fB\-f\fR,
-\fB\-g\fR,
-\fB\-o\fR,
-\fB\-r\fR,
-\fB\-s\fR,
-\fB\-t\fR and
+Aside from \fB\-c\fP and \fB\-v\fP, options are not portable:
+.bP
+Most of @TIC@'s options
+are not supported by SVr4 \fBtic\fP:
+.sp
+.RS
+\fB\-0\fR
+\fB\-1\fR
+\fB\-C\fR
+\fB\-G\fR
+\fB\-I\fR
+\fB\-N\fR
+\fB\-R\fR
+\fB\-T\fR
+\fB\-V\fR
+\fB\-a\fR
+\fB\-e\fR
+\fB\-f\fR
+\fB\-g\fR
+\fB\-o\fR
+\fB\-r\fR
+\fB\-s\fR
+\fB\-t\fR
\fB\-x\fR
-options
-are not supported under SVr4.
-The SVr4 \fB\-c\fR mode does not report bad use links.
+.RE
+.bP
+The NetBSD \fBtic\fP supports a few of the ncurses options
+.sp
+.RS
+\fB\-a\fP
+\fB\-o\fP
+\fB\-x\fP
+.RE
+.IP
+and adds \fB\-S\fP
+(a feature which does the same thing
+as @INFOCMP@'s \fB\-e\fP and \fB\-E\fP options).
+.PP
+The SVr4 \fB\-c\fR mode does not report bad \*(``use=\*('' links.
.PP
System V does not compile entries to or read entries from your
\fI$HOME/.terminfo\fR database unless TERMINFO is explicitly set to it.
@@ -413,6 +579,7 @@ Compiled terminal description database.
\fBcurses\fR(3X),
\fBterm\fR(\*n).
\fBterminfo\fR(\*n).
+\fBuser_caps\fR(\*n).
.PP
This describes \fBncurses\fR
version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
diff --git a/man/toe.1m b/man/toe.1m
index 26af319b66a5..2b449546749f 100644
--- a/man/toe.1m
+++ b/man/toe.1m
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2019 Free 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,8 +26,30 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: toe.1m,v 1.26 2012/01/01 00:40:51 tom Exp $
+.\" $Id: toe.1m,v 1.31 2019/07/20 19:06:44 tom Exp $
.TH @TOE@ 1M ""
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de NS
+.ie n .sp
+.el .sp .5
+.ie n .in +4
+.el .in +2
+.nf
+.ft C \" Courier
+..
+.de NE
+.fi
+.ft R
+.ie n .in -4
+.el .in -2
+..
.ds n 5
.ds d @TERMINFO@
.SH NAME
@@ -58,6 +80,9 @@ adds a column to the report,
showing (like \fBconflict\fP(1)) which entries which
belong to a given terminal database.
An "*" marks entries which differ, and "+" marks equivalent entries.
+.IP
+Without the \fB\-s\fP option, \fB@TOE@\fR does not attempt to merge
+duplicates in its report
.TP
\fB\-s\fR
sort the output by the entry names.
@@ -65,7 +90,7 @@ sort the output by the entry names.
\fB\-u\fR \fIfile\fR
says to write a report to the standard output,
listing dependencies in the given terminfo/termcap source file.
-The report condenses the `use' relation:
+The report condenses the \*(``use\*('' relation:
each line consists of the primary name of a terminal that
has use capabilities,
followed by a colon,
@@ -77,7 +102,7 @@ followed by a newline
\fB\-U\fR \fIfile\fR
says to write a report to the standard output,
listing reverse dependencies in the given terminfo/termcap source file.
-The report reverses the `use' relation:
+The report reverses the \*(``use\*('' relation:
each line consists of the primary name of a
terminal that occurs in use capabilities,
followed by a colon,
@@ -88,16 +113,74 @@ followed by a newline.
\fB\-v\fR\fIn\fR
specifies that (verbose) output be written to standard error,
showing \fB@TOE@\fR's progress.
+.IP
The optional parameter \fIn\fR is a number from 1 to 10,
interpreted as for \fB@TIC@\fR(1M).
+If ncurses is built without tracing support, the optional parameter is ignored.
.TP
\fB\-V\fR
reports the version of ncurses which was used in this program,
and exits.
+.SH EXAMPLES
+.PP
+Without sorting, the \fB\-a\fP option reports all of the names found
+in all of the terminal databases found by the \fBTERMINFO\fP and
+\fBTERMINFO_DIRS\fP environment variables:
+.NS
+MtxOrb162 16x2 Matrix Orbital LCD display
+MtxOrb204 20x4 Matrix Orbital LCD display
+MtxOrb Generic Matrix Orbital LCD display
+qvt101+ qume qvt 101 PLUS product
+qvt119+-25 QVT 119 PLUS with 25 data lines
+qansi-g QNX ANSI
+qvt103 qume qvt 103
+qnxw QNX4 windows
+qansi-w QNX ansi for windows
+qnxm QNX4 with mouse events
+qvt203-25-w QVT 203 PLUS with 25 by 132 columns
+qansi-t QNX ansi without console writes
+\&.\ .\ .
+.NE
+.PP
+Use the \fB\-a\fP and \fB\-s\fP options together to show where each terminal
+description was found:
+.NS
+--> /usr/local/ncurses/share/terminfo
+----> /usr/share/terminfo
+*-+-: 9term Plan9 terminal emulator for X
+*---: Eterm Eterm with xterm-style color support (X Window System)
+*-*-: Eterm-256color Eterm with xterm 256-colors
+*-*-: Eterm-88color Eterm with 88 colors
+*-+-: MtxOrb Generic Matrix Orbital LCD display
+*-+-: MtxOrb162 16x2 Matrix Orbital LCD display
+*-+-: MtxOrb204 20x4 Matrix Orbital LCD display
+*-*-: NCR260VT300WPP NCR 2900_260 vt300 wide mode pc+ kybd
+*-+-: aaa ann arbor ambassador/30 lines
+*-+-: aaa+dec ann arbor ambassador in dec vt100 mode
+*-+-: aaa+rv ann arbor ambassador in reverse video
+\&.\ .\ .
+.NE
.SH FILES
.TP 5
\fB\*d/?/*\fR
Compiled terminal description database.
+.SH HISTORY
+This utility is not provided by other implementations.
+There is no relevant X/Open or POSIX standard for \fB@TOE@\fP.
+.PP
+The program name refers to a developer's pun:
+.bP
+\fBtic\fP,
+.bP
+\fBtac\fP (now \fBtack\fP),
+.bP
+\fBtoe\fP.
+.PP
+It replaced a \fB\-T\fP option which was briefly supported by
+the ncurses \fBinfocmp\fP utility in 1995.
+.PP
+The \fB\-a\fP and \fB\-s\fP options were added to
+\fB@TOE@\fR several years later (2006 and 2011, respectively).
.SH SEE ALSO
\fB@TIC@\fR(1M),
\fB@INFOCMP@\fR(1M),
diff --git a/man/tput.1 b/man/tput.1
index a1b81bcb08c5..9494a94e9df1 100644
--- a/man/tput.1
+++ b/man/tput.1
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2018 Free 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,14 +27,24 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: tput.1,v 1.32 2012/07/14 21:06:45 tom Exp $
+.\" $Id: tput.1,v 1.62 2018/09/30 20:31:59 Sven.Joachim Exp $
.TH @TPUT@ 1 ""
.ds d @TERMINFO@
.ds n 1
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.SH NAME
\fB@TPUT@\fR, \fBreset\fR \- initialize a terminal or query terminfo database
.SH SYNOPSIS
-\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fIcapname\fR [\fIparms\fR ... ]
+\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fIcapname\fR [\fIparameters\fR]
+.br
+\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] [\fB\-x\fP] \fBclear\fR
.br
\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fBinit\fR
.br
@@ -52,7 +62,7 @@ values of terminal-dependent capabilities and information available to
the shell (see \fBsh\fR(1)), to initialize or reset the terminal, or
return the long name of the requested terminal type.
The result depends upon the capability's type:
-.RS
+.RS 3
.TP 5
string
\fB@TPUT@\fR writes the string to the standard output.
@@ -75,6 +85,22 @@ the application should test the exit code
(See the \fBEXIT CODES\fR and \fBDIAGNOSTICS\fR sections.)
For a complete list of capabilities
and the \fIcapname\fR associated with each, see \fBterminfo\fR(5).
+.SS Options
+.TP
+\fB\-S\fR
+allows more than one capability per invocation of \fB@TPUT@\fR. The
+capabilities must be passed to \fB@TPUT@\fR from the standard input
+instead of from the command line (see example).
+Only one \fIcapname\fR is allowed per line.
+The \fB\-S\fR option changes the
+meaning of the \fB0\fR and \fB1\fR boolean and string exit codes (see the
+EXIT CODES section).
+.IP
+Because some capabilities may use
+\fIstring\fP parameters rather than \fInumbers\fP,
+\fB@TPUT@\fR uses a table and the presence of parameters in its input
+to decide whether to use \fBtparm\fR(3X),
+and how to interpret the parameters.
.TP
\fB\-T\fR\fItype\fR
indicates the \fItype\fR of terminal.
@@ -84,83 +110,188 @@ variable \fBTERM\fR.
If \fB\-T\fR is specified, then the shell
variables \fBLINES\fR and \fBCOLUMNS\fR will also be ignored.
.TP
-\fIcapname\fR
-indicates the capability from the \fBterminfo\fR database. When
-\fBtermcap\fR support is compiled in, the \fBtermcap\fR name for
-the capability is also accepted.
+\fB\-V\fR
+reports the version of ncurses which was used in this program, and exits.
.TP
-\fIparms\fR
+.B \-x
+do not attempt to clear the terminal's scrollback buffer
+using the extended \*(``E3\*('' capability.
+.SS Commands
+A few commands (\fBinit\fP, \fBreset\fP and \fBlongname\fP) are
+special; they are defined by the \fB@TPUT@\fP program.
+The others are the names of \fIcapabilities\fP from the terminal database
+(see \fBterminfo\fR(5) for a list).
+Although \fBinit\fP and \fBreset\fP resemble capability names,
+\fB@TPUT@\fP uses several capabilities to perform these special functions.
+.TP
+\fIcapname\fR
+indicates the capability from the terminal database.
+.IP
If the capability is a string that takes parameters, the arguments
-\fIparms\fR will be instantiated into the string.
+following the capability will be used as parameters for the string.
.IP
Most parameters are numbers.
-Only a few terminfo capabilities require string parameters;
+Only a few terminal capabilities require string parameters;
\fB@TPUT@\fR uses a table to decide which to pass as strings.
-Normally \fB@TPUT@\fR uses \fBtparm\fR (3X) to perform the substitution.
+Normally \fB@TPUT@\fR uses \fBtparm\fR(3X) to perform the substitution.
If no parameters are given for the capability,
\fB@TPUT@\fR writes the string without performing the substitution.
.TP
-\fB\-S\fR
-allows more than one capability per invocation of \fB@TPUT@\fR. The
-capabilities must be passed to \fB@TPUT@\fR from the standard input
-instead of from the command line (see example).
-Only one \fIcapname\fR is allowed per line.
-The \fB\-S\fR option changes the
-meaning of the \fB0\fR and \fB1\fR boolean and string exit codes (see the
-EXIT CODES section).
-.IP
-Again, \fB@TPUT@\fR uses a table and the presence of parameters in its input
-to decide whether to use \fBtparm\fR (3X),
-and how to interpret the parameters.
-.TP
-\fB\-V\fR
-reports the version of ncurses which was used in this program, and exits.
-.TP
\fBinit\fR
-If the \fBterminfo\fR database is present and an entry for the user's
+If the terminal database is present and an entry for the user's
terminal exists (see \fB\-T\fR\fItype\fR, above), the following will
occur:
.RS
-.TP
+.TP 5
(1)
-if present, the terminal's initialization strings will be
-output as detailed in the \fBterminfo\fR(5) section on
-.IR "Tabs and Initialization" ,
+first, \fB@TPUT@\fR retrieves the current terminal mode settings
+for your terminal.
+It does this by successively testing
+.RS
+.bP
+the standard error,
+.bP
+standard output,
+.bP
+standard input and
+.bP
+ultimately \*(``/dev/tty\*(''
+.RE
+.IP
+to obtain terminal settings.
+Having retrieved these settings, \fB@TPUT@\fP remembers which
+file descriptor to use when updating settings.
.TP
(2)
-any delays (e.g., newline) specified in the entry will
-be set in the tty driver,
+if the window size cannot be obtained from the operating system,
+but the terminal description (or environment, e.g., \fBLINES\fP
+and \fBCOLUMNS\fP variables specify this),
+update the operating system's notion of the window size.
.TP
(3)
+the terminal modes will be updated:
+.RS
+.bP
+any delays (e.g., newline) specified in the entry will
+be set in the tty driver,
+.bP
tabs expansion will be turned on or off according to
the specification in the entry, and
-.TP
-(4)
+.bP
if tabs are not expanded,
standard tabs will be set (every 8 spaces).
.RE
+.TP
+(4)
+if present, the terminal's initialization strings will be
+output as detailed in the \fBterminfo\fR(5) section on
+.IR "Tabs and Initialization" ,
+.TP
+(5)
+output is flushed.
+.RE
.IP
If an entry does not
-contain the information needed for any of the four above activities,
+contain the information needed for any of these activities,
that activity will silently be skipped.
.TP
\fBreset\fR
-Instead of putting out initialization strings, the terminal's
-reset strings will be output if present (\fBrs1\fR, \fBrs2\fR, \fBrs3\fR, \fBrf\fR).
-If the reset strings are not present, but initialization
-strings are, the initialization strings will be output.
+This is similar to \fBinit\fP, with two differences:
+.RS
+.TP 5
+(1)
+before any other initialization,
+the terminal modes will be reset to a \*(``sane\*('' state:
+.RS
+.bP
+set cooked and echo modes,
+.bP
+turn off cbreak and raw modes,
+.bP
+turn on newline translation and
+.bP
+reset any unset special characters to their default values
+.RE
+.TP 5
+(2)
+Instead of putting out \fIinitialization\fP strings, the terminal's
+\fIreset\fP strings will be output if present
+(\fBrs1\fR, \fBrs2\fR, \fBrs3\fR, \fBrf\fR).
+If the \fIreset\fP strings are not present, but \fIinitialization\fP
+strings are, the \fIinitialization\fP strings will be output.
+.RE
+.IP
Otherwise, \fBreset\fR acts identically to \fBinit\fR.
.TP
\fBlongname\fR
-If the \fBterminfo\fR database is present and an entry for the
+If the terminal database is present and an entry for the
user's terminal exists (see \fB\-T\fR\fItype\fR above), then the long name
-of the terminal will be put out. The long name is the last
+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
\fBterminfo\fR database [see \fBterm\fR(5)].
+.SS Aliases
+\fB@TPUT@\fR handles the \fBclear\fP, \fBinit\fP and \fBreset\fP
+commands specially:
+it allows for the possibility that it is invoked by a link with those names.
.PP
If \fB@TPUT@\fR is invoked by a link named \fBreset\fR, this has the
same effect as \fB@TPUT@ reset\fR.
-See \fB@TSET@\fR for comparison, which has similar behavior.
+The \fB@TSET@\fR(\*n) utility also treats a link named \fBreset\fP specially.
+.PP
+Before ncurses 6.1, the two utilities were different from each other:
+.bP
+\fB@TSET@\fP utility reset the terminal modes and special characters
+(not done with \fB@TPUT@\fP).
+.bP
+On the other hand, \fB@TSET@\fP's repertoire of terminal capabilities for
+resetting the terminal was more limited,
+i.e., only \fBreset_1string\fP, \fBreset_2string\fP and \fBreset_file\fP
+in contrast to the tab-stops and margins which are set by this utility.
+.bP
+The \fBreset\fP program is usually an alias for \fB@TSET@\fP,
+because of this difference with resetting terminal modes and special characters.
+.PP
+With the changes made for ncurses 6.1, the \fIreset\fP feature of the
+two programs is (mostly) the same.
+A few differences remain:
+.bP
+The \fB@TSET@\fP program waits one second when resetting,
+in case it happens to be a hardware terminal.
+.bP
+The two programs write the terminal initialization strings
+to different streams (i.e., the standard error for \fB@TSET@\fP and the
+standard output for \fB@TPUT@\fP).
+.IP
+\fBNote:\fP although these programs write to different streams,
+redirecting their output to a file will capture only part of their actions.
+The changes to the terminal modes are not affected by redirecting the output.
+.PP
+If \fB@TPUT@\fR is invoked by a link named \fBinit\fR, this has the
+same effect as \fB@TPUT@ init\fR.
+Again, you are less likely to use that link because another program
+named \fBinit\fP has a more well-established use.
+.SS Terminal Size
+.PP
+Besides the special commands (e.g., \fBclear\fP),
+@TPUT@ treats certain terminfo capabilities specially:
+\fBlines\fP and \fBcolumns\fP.
+@TPUT@ calls \fBsetupterm\fP(3X) to obtain the terminal size:
+.bP
+first, it gets the size from the terminal database
+(which generally is not provided for terminal emulators
+which do not have a fixed window size)
+.bP
+then it asks the operating system for the terminal's size
+(which generally works, unless connecting via a serial line which
+does not support \fINAWS\fP: negotiations about window size).
+.bP
+finally, it inspects the environment variables \fBLINES\fP and \fBCOLUMNS\fP
+which may override the terminal size.
+.PP
+If the \fB\-T\fP option is given
+@TPUT@ ignores the environment variables by calling \fBuse_tioctl(TRUE)\fP,
+relying upon the operating system (or finally, the terminal database).
.SH EXAMPLES
.TP 5
\fB@TPUT@ init\fR
@@ -176,7 +307,7 @@ terminal in the environmental variable \fBTERM\fR.
.TP 5
\fB@TPUT@ cup 0 0\fR
Send the sequence to move the cursor to row \fB0\fR, column \fB0\fR
-(the upper left corner of the screen, usually known as the "home"
+(the upper left corner of the screen, usually known as the \*(``home\*(''
cursor position).
.TP 5
\fB@TPUT@ clear\fR
@@ -191,7 +322,8 @@ Print the number of columns for the 450 terminal.
\fBbold=`@TPUT@ smso` offbold=`@TPUT@ rmso`\fR
Set the shell variables \fBbold\fR, to begin stand-out mode
sequence, and \fBoffbold\fR, to end standout mode sequence,
-for the current terminal. This might be followed by a
+for the current terminal.
+This might be followed by a
prompt: \fBecho "${bold}Please type in your name: ${offbold}\\c"\fR
.TP 5
\fB@TPUT@ hc\fR
@@ -221,7 +353,8 @@ variable \fBTERM\fR.
.RE
.TP 5
\&
-This example shows \fB@TPUT@\fR processing several capabilities in one invocation.
+This example shows \fB@TPUT@\fR processing several capabilities
+in one invocation.
It clears the screen,
moves the cursor to position 10, 10
and turns on bold (extra bright) mode.
@@ -235,7 +368,8 @@ compiled terminal description database
tab settings for some terminals, in a format
appropriate to be output to the terminal (escape
sequences that set margins and tabs); for more
-information, see the "Tabs and Initialization"
+information, see the
+.IR "Tabs and Initialization" ,
section of \fBterminfo\fR(5)
.SH EXIT CODES
If the \fB\-S\fR option is used,
@@ -244,11 +378,12 @@ and if any errors are found, will set the exit code to 4 plus the
number of lines with errors.
If no errors are found, the exit code is \fB0\fR.
No indication of which line failed can be given so
-exit code \fB1\fR will never appear. Exit codes \fB2\fR, \fB3\fR, and
+exit code \fB1\fR will never appear.
+Exit codes \fB2\fR, \fB3\fR, and
\fB4\fR retain their usual interpretation.
If the \fB\-S\fR option is not used,
the exit code depends on the type of \fIcapname\fR:
-.RS 5
+.RS 3
.TP
.I boolean
a value of \fB0\fR is set for TRUE and \fB1\fR for FALSE.
@@ -296,35 +431,164 @@ T}
\fB>4\fR error occurred in \-S
=
.TE
-.SH PORTABILITY
+.SH HISTORY
+The \fBtput\fP command was begun by Bill Joy in 1980.
+The initial version only cleared the screen.
.PP
-The \fBlongname\fR and \fB\-S\fR options, and the parameter-substitution
-features used in the \fBcup\fR example, are not supported in BSD curses or in
-AT&T/USL curses before SVr4.
+AT&T System V provided a different \fBtput\fP command,
+whose \fBinit\fP and \fBreset\fP subcommands
+(more than half the program) were incorporated from
+the \fBreset\fP feature of BSD \fBtset\fP written by Eric Allman.
.PP
-X/Open documents only the operands for \fBclear\fP, \fBinit\fP and \fBreset\fP.
-In this implementation, \fBclear\fP is part of the \fIcapname\fR support.
-Other implementations of \fB@TPUT@\fP on
-SVr4-based systems such as Solaris, IRIX64 and HPUX
-as well as others such as AIX and Tru64
-provide support for \fIcapname\fR operands.
+Keith Bostic replaced the BSD \fBtput\fP command in 1989
+with a new implementation
+based on the AT&T System V program \fBtput\fP.
+Like the AT&T program, Bostic's version
+accepted some parameters named for \fIterminfo capabilities\fP
+(\fBclear\fP, \fBinit\fP, \fBlongname\fP and \fBreset\fP).
+However (because he had only termcap available),
+it accepted \fItermcap names\fP for other capabilities.
+Also, Bostic's BSD \fBtput\fP did not modify the terminal I/O modes
+as the earlier BSD \fBtset\fP had done.
.PP
-A few platforms such as FreeBSD and NetBSD recognize termcap names rather
-than terminfo capability names in their respective \fB@TPUT@\fP commands.
+At the same time, Bostic added a shell script named \*(``clear\*('',
+which used \fBtput\fP to clear the screen.
+.PP
+Both of these appeared in 4.4BSD,
+becoming the \*(``modern\*('' BSD implementation of \fBtput\fP.
+.PP
+This implementation of \fBtput\fP began from a different source than
+AT&T or BSD: Ross Ridge's \fImytinfo\fP package, published on
+\fIcomp.sources.unix\fP in December 1992.
+Ridge's program made more sophisticated use of the terminal capabilities
+than the BSD program.
+Eric Raymond used that \fBtput\fP program
+(and other parts of \fImytinfo\fP) in ncurses in June 1995.
+Using the portions dealing with terminal capabilities
+almost without change,
+Raymond made improvements to the way the command-line parameters
+were handled.
+.SH PORTABILITY
.PP
+This implementation of \fBtput\fP differs from AT&T \fBtput\fP in
+two important areas:
+.bP
+\fB@TPUT@\fP \fIcapname\fP writes to the standard output.
+That need not be a regular terminal.
+However, the subcommands which manipulate terminal modes
+may not use the standard output.
+.IP
+The AT&T implementation's \fBinit\fP and \fBreset\fP commands
+use the BSD (4.1c) \fBtset\fP source, which manipulates terminal modes.
+It successively tries standard output, standard error, standard input
+before falling back to \*(``/dev/tty\*('' and finally just assumes
+a 1200Bd terminal.
+When updating terminal modes, it ignores errors.
+.IP
+Until changes made after ncurses 6.0,
+\fB@TPUT@\fP did not modify terminal modes.
+\fB@TPUT@\fP now uses a similar scheme,
+using functions shared with \fB@TSET@\fP
+(and ultimately based on the 4.4BSD \fBtset\fP).
+If it is not able to open a terminal, e.g., when running in \fBcron\fP,
+\fB@TPUT@\fP will return an error.
+.bP
+AT&T \fBtput\fP guesses the type of its \fIcapname\fP operands by seeing if
+all of the characters are numeric, or not.
+.IP
Most implementations which provide support for \fIcapname\fR operands
use the \fItparm\fP function to expand parameters in it.
That function expects a mixture of numeric and string parameters,
requiring \fB@TPUT@\fP to know which type to use.
-This implementation uses a table to determine that for
+.IP
+This implementation uses a table to determine the parameter types for
the standard \fIcapname\fR operands, and an internal library
function to analyze nonstandard \fIcapname\fR operands.
-Other implementations may simply guess that an operand containing only digits
-is intended to be a number.
+.PP
+This implementation (unlike others) can accept both \fItermcap\fP
+and \fIterminfo\fP names for the \fIcapname\fP feature,
+if
+\fItermcap\fR support is compiled in.
+However, the predefined \fItermcap\fP and \fIterminfo\fP names have two
+ambiguities in this case (and the \fIterminfo\fP name is assumed):
+.bP
+The \fItermcap\fP name \fBdl\fP corresponds to
+the \fIterminfo\fP name \fBdl1\fP (delete one line).
+.br
+The \fIterminfo\fP name \fBdl\fP corresponds to
+the \fItermcap\fP name \fBDL\fP (delete a given number of lines).
+.bP
+The \fItermcap\fP name \fBed\fP corresponds to
+the \fIterminfo\fP name \fBrmdc\fP (end delete mode).
+.br
+The \fIterminfo\fP name \fBed\fP corresponds to
+the \fItermcap\fP name \fBcd\fP (clear to end of screen).
+.PP
+The \fBlongname\fR and \fB\-S\fR options, and the parameter-substitution
+features used in the \fBcup\fR example,
+were not supported in BSD curses before 4.3reno (1989) or in
+AT&T/USL curses before SVr4 (1988).
+.PP
+IEEE Std 1003.1/The Open Group Base Specifications Issue 7 (POSIX.1-2008)
+documents only the operands for \fBclear\fP, \fBinit\fP and \fBreset\fP.
+There are a few interesting observations to make regarding that:
+.bP
+In this implementation, \fBclear\fP is part of the \fIcapname\fR support.
+The others (\fBinit\fP and \fBlongname\fP) do not correspond to terminal
+capabilities.
+.bP
+Other implementations of \fBtput\fP on
+SVr4-based systems such as Solaris, IRIX64 and HPUX
+as well as others such as AIX and Tru64
+provide support for \fIcapname\fR operands.
+.bP
+A few platforms such as FreeBSD recognize termcap names rather
+than terminfo capability names in their respective \fBtput\fP commands.
+Since 2010, NetBSD's \fBtput\fP uses terminfo names.
+Before that, it (like FreeBSD) recognized termcap names.
+.PP
+Because (apparently) \fIall\fP of the certified Unix systems
+support the full set of capability names, the reasoning for documenting
+only a few may not be apparent.
+.bP
+X/Open Curses Issue 7 documents \fBtput\fP differently, with \fIcapname\fP
+and the other features used in this implementation.
+.bP
+That is, there are two standards for \fBtput\fP:
+POSIX (a subset) and X/Open Curses (the full implementation).
+POSIX documents a subset to avoid the complication of including X/Open Curses
+and the terminal capabilities database.
+.bP
+While it is certainly possible to write a \fBtput\fP program
+without using curses,
+none of the systems which have a curses implementation provide
+a \fBtput\fP utility which does not provide the \fIcapname\fP feature.
+.PP
+X/Open Curses Issue 7 (2009) is the first version to document utilities.
+However that part of X/Open Curses does not follow existing practice
+(i.e., Unix features documented in SVID 3):
+.bP
+It assigns exit code 4 to \*(``invalid operand\*('',
+which may be the same as \fIunknown capability\fP.
+For instance, the source code for Solaris' xcurses uses the term
+\*(``invalid\*('' in this case.
+.bP
+It assigns exit code 255 to a numeric variable that is not specified in
+the terminfo database.
+That likely is a documentation error,
+confusing the \fB\-1\fP written to the standard output for an absent
+or cancelled numeric value versus an (unsigned) exit code.
+.PP
+The various Unix systems (AIX, HPUX, Solaris) use the same exit-codes
+as ncurses.
+.PP
+NetBSD curses documents different exit codes which do not correspond
+to either ncurses or X/Open.
.SH SEE ALSO
-\fB@CLEAR@\fR(1),
+\fB@CLEAR@\fR(\*n),
\fBstty\fR(1),
-\fBtabs\fR(\*n),
+\fB@TABS@\fR(\*n),
+\fB@TSET@\fR(\*n),
\fBterminfo\fR(5),
\fBcurs_termcap\fR(3X).
.PP
diff --git a/man/tset.1 b/man/tset.1
index e151e7532f41..91cceb20571b 100644
--- a/man/tset.1
+++ b/man/tset.1
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2017,2018 Free 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,21 +26,43 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: tset.1,v 1.29 2013/12/21 22:15:53 tom Exp $
+.\" $Id: tset.1,v 1.54 2018/07/28 21:30:27 tom Exp $
.TH @TSET@ 1 ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
.SH NAME
-\fB@TSET@\fR, \fBreset\fR \- terminal initialization
+\fB@TSET@\fR, \fB@RESET@\fR \- terminal initialization
.SH SYNOPSIS
\fB@TSET@\fR [\fB\-IQVcqrsw\fR] [\fB\-\fR] [\fB\-e\fR \fIch\fR] [\fB\-i\fR \fIch\fR] [\fB\-k\fR \fIch\fR] [\fB\-m\fR \fImapping\fR] [\fIterminal\fR]
.br
-\fBreset\fR [\fB\-IQVcqrsw\fR] [\fB\-\fR] [\fB\-e\fR \fIch\fR] [\fB\-i\fR \fIch\fR] [\fB\-k\fR \fIch\fR] [\fB\-m\fR \fImapping\fR] [\fIterminal\fR]
+\fB@RESET@\fR [\fB\-IQVcqrsw\fR] [\fB\-\fR] [\fB\-e\fR \fIch\fR] [\fB\-i\fR \fIch\fR] [\fB\-k\fR \fIch\fR] [\fB\-m\fR \fImapping\fR] [\fIterminal\fR]
.SH DESCRIPTION
-\&\fBTset\fR initializes terminals.
-\fBTset\fR first determines the type of terminal that you are using.
+.SS tset - initialization
+This program initializes terminals.
+.PP
+First, \fB@TSET@\fR retrieves the current terminal mode settings
+for your terminal.
+It does this by successively testing
+.bP
+the standard error,
+.bP
+standard output,
+.bP
+standard input and
+.bP
+ultimately \*(``/dev/tty\*(''
+.PP
+to obtain terminal settings.
+Having retrieved these settings, \fB@TSET@\fP remembers which
+file descriptor to use when updating settings.
+.PP
+Next, \fB@TSET@\fP determines the type of terminal that you are using.
This determination is done as follows, using the first terminal type found.
.PP
1. The \fBterminal\fR argument specified on the command line.
@@ -60,34 +82,67 @@ option mappings are then applied (see the section
.B TERMINAL TYPE MAPPING
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
+user is prompted for confirmation of the terminal type.
+An empty
response confirms 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
+a new type.
+Once the terminal type has been determined,
+the terminal description for the terminal is retrieved.
+If no terminal description is found
for the type, the user is prompted for another terminal type.
.PP
-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 initialization strings are sent to the standard error output.
+Once the terminal description is retrieved,
+.bP
+if the \*(``\fB\-w\fP\*('' option is enabled, \fB@TSET@\fP may update
+the terminal's window size.
+.IP
+If the window size cannot be obtained from the operating system,
+but the terminal description (or environment, e.g., \fBLINES\fP
+and \fBCOLUMNS\fP variables specify this),
+use this to set the operating system's notion of the window size.
+.bP
+if the \*(``\fB\-c\fP\*('' option is enabled,
+the backspace, interrupt and line kill characters
+(among many other things) are set
+.bP
+unless the \*(``\fB\-I\fP\*('' option is enabled,
+the terminal
+and tab \fIinitialization\fP strings are sent to the standard error output,
+and \fB@TSET@\fP waits one second (in case a hardware reset was issued).
+.bP
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.
-Use the \fB\-c\fP or \fB\-w\fP option to select only the window sizing
-versus the other initialization.
-If neither option is given, both are assumed.
-.PP
-When invoked as \fBreset\fR, \fB@TSET@\fR sets cooked and echo modes,
-turns off cbreak and raw modes, turns on newline translation 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,
+.SS reset - reinitialization
+.PP
+When invoked as \fB@RESET@\fR, \fB@TSET@\fR sets the terminal
+modes to \*(``sane\*('' values:
+.bP
+sets cooked and echo modes,
+.bP
+turns off cbreak and raw modes,
+.bP
+turns on newline translation and
+.bP
+resets any unset special characters to their default values
+.PP
+before
+doing the terminal initialization described above.
+Also, rather than using the terminal \fIinitialization\fP strings,
+it uses the terminal \fIreset\fP strings.
+.PP
+The \fB@RESET@\fP command is useful
+after a program dies leaving a terminal in an abnormal state:
+.bP
you may have to type
.sp
- \fB<LF>reset<LF>\fR
+ \fI<LF>\fP\fB@RESET@\fP\fI<LF>\fP
.sp
(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.
+.bP
Also, the terminal will often not echo the command.
+.SH OPTIONS
.PP
The options are as follows:
.TP 5
@@ -119,8 +174,8 @@ differ from the system's default values.
.TP
.B \-q
The terminal type is displayed to the standard output, and the terminal is
-not initialized in any way. The option `\-' by itself is equivalent but
-archaic.
+not initialized in any way.
+The option \*(``\-\*('' by itself is equivalent but archaic.
.TP
.B \-r
Print the terminal type to the standard error output.
@@ -136,13 +191,16 @@ for details.
reports the version of ncurses which was used in this program, and exits.
.TP
.B \-w
-Resize the window to match the size deduced via \fBsetupterm\fP.
+Resize the window to match the size deduced via \fBsetupterm\fP(3X).
Normally this has no effect,
unless \fBsetupterm\fP is not able to detect the window size.
.PP
The arguments for the \fB\-e\fR, \fB\-i\fR, and \fB\-k\fR
-options may either be entered as actual characters or by using the `hat'
+options may either be entered as actual characters
+or by using the \*(``hat\*(''
notation, i.e., control-h may be specified as \*(``^H\*('' or \*(``^h\*(''.
+.PP
+If neither \fB\-c\fP or \fB\-w\fP is given, both options are assumed.
.
.SH SETTING THE ENVIRONMENT
It is often desirable to enter the terminal type and information about
@@ -150,11 +208,13 @@ the terminal's capabilities into the shell's environment.
This is done using the \fB\-s\fR option.
.PP
When the \fB\-s\fR option is specified, the commands to enter the information
-into the shell's environment are written to the standard output. If
+into the shell's environment are written to the standard output.
+If
the \fBSHELL\fR environmental variable ends in \*(``csh\*('', the commands
are for \fBcsh\fR, otherwise, they are for \fBsh\fR.
Note, the \fBcsh\fR commands set and unset the shell variable
-\fBnoglob\fR, leaving it unset. The following line in the \fB.login\fR
+\fBnoglob\fR, leaving it unset.
+The following line in the \fB.login\fR
or \fB.profile\fR files will initialize the environment correctly:
.sp
eval \`@TSET@ \-s options ... \`
@@ -167,7 +227,7 @@ something generic like \fBnetwork\fR, \fBdialup\fR, or \fBunknown\fR.
When \fB@TSET@\fR is used in a startup script it is often desirable to
provide information about the type of terminal used on such ports.
.PP
-The purpose of the \fB\-m\fR option is to map
+The \fB\-m\fR options maps
from some set of conditions to a terminal type, that is, to
tell \fB@TSET@\fR
\*(``If I'm on this port at a particular speed,
@@ -175,7 +235,8 @@ guess that I'm on that kind of terminal\*(''.
.PP
The argument to the \fB\-m\fR option consists of an optional port type, an
optional operator, an optional baud rate specification, an optional
-colon (\*(``:\*('') character and a terminal type. The port type is a
+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
\*(``>\*('',
@@ -191,14 +252,17 @@ of the standard error output (which should be the control terminal).
The terminal type is a string.
.PP
If the terminal type is not specified on the command line, the \fB\-m\fR
-mappings are applied to the terminal type. If the port type and baud
+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
+replaces the current type.
+If more than one mapping is specified, the
first applicable mapping is used.
.PP
For example, consider the following mapping: \fBdialup>9600:vt100\fR.
The port type is dialup , the operator is >, the baud rate
-specification is 9600, and the terminal type is vt100. The result of
+specification is 9600, and the terminal type is vt100.
+The result of
this mapping is to specify that if the terminal type is \fBdialup\fR,
and the baud rate is greater than 9600 baud, a terminal type of
\fBvt100\fR will be used.
@@ -218,27 +282,77 @@ entire \fB\-m\fR option argument be placed within single quote characters,
and that \fBcsh\fR users insert a backslash character (\*(``\e\*('') before
any exclamation marks (\*(``!\*('').
.SH HISTORY
-The \fB@TSET@\fR command appeared in BSD 3.0. The \fBncurses\fR implementation
+.PP
+A \fBreset\fP command appeared in 2BSD (April 1979), written by Kurt Shoens.
+This program set the \fIerase\fP and \fIkill\fP characters
+to \fB^H\fP (backspace) and \fB@\fP respectively.
+Mark Horton improved that in 3BSD (October 1979), adding
+\fIintr\fP, \fIquit\fP, \fIstart\fP/\fIstop\fP and \fIeof\fP characters
+as well as changing the program to avoid modifying any user settings.
+.PP
+Later in 4.1BSD (December 1980),
+Mark Horton added a call to the \fBtset\fP program
+using the \fB\-I\fP and \fB\-Q\fP options, i.e.,
+using that to improve the terminal modes.
+With those options,
+that version of \fBreset\fP did not use the termcap database.
+.PP
+A separate \fBtset\fP command was provided in 2BSD by Eric Allman.
+While the oldest published source (from 1979)
+provides both \fBtset\fP and \fBreset\fP,
+Allman's comments in the 2BSD source code indicate
+that he began work in October 1977,
+continuing development over the next few years.
+.PP
+In September 1980, Eric Allman modified \fBtset\fP,
+adding the code from the existing \*(``reset\*(''
+feature when \fBtset\fP was invoked as \fBreset\fP.
+Rather than simply copying the existing program,
+in this merged version, \fBtset\fP used the termcap database
+to do additional (re)initialization of the terminal.
+This version appeared in 4.1cBSD, late in 1982.
+.PP
+Other developers (e.g., Keith Bostic and Jim Bloom)
+continued to modify \fBtset\fP until 4.4BSD was released in 1993.
+.PP
+The \fBncurses\fR implementation
was lightly adapted from the 4.4BSD sources for a terminfo environment by Eric
S. Raymond <esr@snark.thyrsus.com>.
.SH COMPATIBILITY
-The \fB@TSET@\fR utility has been provided for backward-compatibility with BSD
-environments (under most modern UNIXes, \fB/etc/inittab\fR and \fIgetty\fR(1)
+.PP
+Neither IEEE Std 1003.1/The Open Group Base Specifications Issue 7
+(POSIX.1-2008) nor
+X/Open Curses Issue 7 documents \fB@TSET@\fP or \fB@RESET@\fP.
+.PP
+The AT&T \fBtput\fP utility (AIX, HPUX, Solaris)
+incorporated the terminal-mode manipulation as well as termcap-based features
+such as resetting tabstops from \fBtset\fP in BSD (4.1c),
+presumably with the intention of making \fBtset\fP obsolete.
+However, each of those systems still provides \fBtset\fP.
+In fact, the commonly-used \fBreset\fP utility
+is always an alias for \fBtset\fP.
+.PP
+The \fB@TSET@\fR utility provides for backward-compatibility with BSD
+environments (under most modern UNIXes, \fB/etc/inittab\fR and \fBgetty\fR(1)
can set \fBTERM\fR appropriately for each dial-up line; this obviates what was
-\fB@TSET@\fR's most important use). This implementation behaves like 4.4BSD
-tset, with a few exceptions specified here.
+\fB@TSET@\fR's most important use).
+This implementation behaves like 4.4BSD
+\fBtset\fP, with a few exceptions specified here.
.PP
-The \fB\-S\fR option of BSD tset no longer works;
-it prints an error message to stderr and dies.
+A few options are different
+because the \fBTERMCAP\fR variable
+is no longer supported under terminfo-based \fBncurses\fR:
+.bP
+The \fB\-S\fR option of BSD \fBtset\fP no longer works;
+it prints an error message to the standard error and dies.
+.bP
The \fB\-s\fR option only sets \fBTERM\fR, not \fBTERMCAP\fP.
-Both of these changes are because the \fBTERMCAP\fR variable
-is no longer supported under terminfo-based \fBncurses\fR,
-which makes \fB@TSET@ \-S\fR useless
-(we made it die noisily rather than silently induce lossage).
.PP
-There was an undocumented 4.4BSD feature that invoking tset via a link named
-`TSET` (or via any other name beginning with an upper-case letter) set the
-terminal to use upper-case only. This feature has been omitted.
+There was an undocumented 4.4BSD feature
+that invoking \fBtset\fP via a link named
+\*(``TSET\*('' (or via any other name beginning with an upper-case letter)
+set the terminal to use upper-case only.
+This feature has been omitted.
.PP
The \fB\-A\fR, \fB\-E\fR, \fB\-h\fR, \fB\-u\fR and \fB\-v\fR
options were deleted from the \fB@TSET@\fR
@@ -247,10 +361,17 @@ None of them were documented in 4.3BSD and all are
of limited utility at best.
The \fB\-a\fR, \fB\-d\fR, and \fB\-p\fR 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
+widespread use.
+It is strongly recommended that any usage of these
three options be changed to use the \fB\-m\fR option instead.
-The \fB\-n\fP option remains, but has no effect.
-The \fB\-adnp\fR options are therefore omitted from the usage summary above.
+The \fB\-a\fP, \fB\-d\fP, and \fB\-p\fR options
+are therefore omitted from the usage summary above.
+.PP
+Very old systems, e.g., 3BSD, used a different terminal driver which
+was replaced in 4BSD in the early 1980s.
+To accommodate these older systems, the 4BSD \fB@TSET@\fP provided a
+\fB\-n\fP option to specify that the new terminal driver should be used.
+This implementation does not provide that choice.
.PP
It is still permissible to specify the \fB\-e\fR, \fB\-i\fR,
and \fB\-k\fR options without arguments,
@@ -258,9 +379,34 @@ although it is strongly recommended that such usage be fixed to
explicitly specify the character.
.PP
As of 4.4BSD,
-executing \fB@TSET@\fR as \fBreset\fR no longer implies the \fB\-Q\fR option.
+executing \fB@TSET@\fR as \fB@RESET@\fR no longer implies the \fB\-Q\fR option.
Also, the interaction between the \- option and the \fIterminal\fR
argument in some historic implementations of \fB@TSET@\fR has been removed.
+.PP
+The \fB\-c\fP and \fB\-w\fP options are not found in earlier implementations.
+However, a different window size-change feature was provided in 4.4BSD.
+.bP
+In 4.4BSD, \fBtset\fP uses the window size from the termcap description
+to set the window size if \fBtset\fP is not able to obtain the window
+size from the operating system.
+.bP
+In ncurses, \fB@TSET@\fR obtains the window size using
+\fBsetupterm\fP, which may be from
+the operating system,
+the \fBLINES\fP and \fBCOLUMNS\fP environment variables or
+the terminal description.
+.PP
+Obtaining the window size from the terminal description is common to
+both implementations, but considered obsolescent.
+Its only practical use is for hardware terminals.
+Generally speaking, a window size would be unset only if there were
+some problem obtaining the value from the operating system
+(and \fBsetupterm\fP would still fail).
+For that reason, the \fBLINES\fP and \fBCOLUMNS\fP environment variables
+may be useful for working around window-size problems.
+Those have the drawback that if the window is resized,
+those variables must be recomputed and reassigned.
+To do this more easily, use the \fBresize\fP(1) program.
.SH ENVIRONMENT
The \fB@TSET@\fR command uses these environment variables:
.TP 5
@@ -274,7 +420,7 @@ Each terminal type is distinct, though many are similar.
.TP 5
TERMCAP
may denote the location of a termcap database.
-If it is not an absolute pathname, e.g., begins with a `/',
+If it is not an absolute pathname, e.g., begins with a \*(``/\*('',
\fB@TSET@\fP removes the variable from the environment before looking
for the terminal description.
.SH FILES
@@ -286,14 +432,14 @@ system port name to terminal type mapping database (BSD versions only).
terminal capability database
.SH SEE ALSO
.hy 0
-csh(1),
-sh(1),
-stty(1),
-curs_terminfo(3X),
-tty(4),
-terminfo(5),
-ttys(5),
-environ(7)
+\fBcsh\fP(1),
+\fBsh\fP(1),
+\fBstty\fP(1),
+\fBcurs_terminfo\fP(3X),
+\fBtty\fP(4),
+\fBterminfo\fP(5),
+\fBttys\fP(5),
+\fBenviron\fP(7)
.hy
.PP
This describes \fBncurses\fR
diff --git a/man/user_caps.5 b/man/user_caps.5
new file mode 100644
index 000000000000..b07504c3e9b2
--- /dev/null
+++ b/man/user_caps.5
@@ -0,0 +1,425 @@
+.\"***************************************************************************
+.\" Copyright (c) 2017-2019,2020 Free 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: user_caps.5,v 1.11 2020/01/19 02:01:39 tom Exp $
+.TH user_caps 5
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de NS
+.ie n .sp
+.el .sp .5
+.ie n .in +4
+.el .in +2
+.nf
+.ft C \" Courier
+..
+.de NE
+.fi
+.ft R
+.ie n .in -4
+.el .in -2
+..
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
+.SH NAME
+user_caps \- user-defined terminfo capabilities
+.SH SYNOPSIS
+.B @TIC@ -x, @INFOCMP@ -x
+.SH DESCRIPTION
+.SS Background
+.PP
+Before ncurses 5.0,
+terminfo databases used a \fIfixed repertoire\fP of terminal
+capabilities designed for the SVr2 terminal database in 1984,
+and extended in stages through SVr4 (1989),
+and standardized in the Single Unix Specification beginning in 1995.
+.PP
+Most of the \fIextensions\fP in this fixed repertoire were additions
+to the tables of boolean, numeric and string capabilities.
+Rather than change the meaning of an existing capability, a new name was added.
+The terminfo database uses a binary format; binary compatibility was
+ensured by using a header which gave the number of items in the
+tables for each type of capability.
+The standardization was incomplete:
+.bP
+The \fIbinary format\fP itself is not described
+in the X/Open Curses documentation.
+Only the \fIsource format\fP is described.
+.IP
+Library developers rely upon the SVr4 documentation,
+and reverse-engineering the compiled terminfo files to match the binary format.
+.bP
+Lacking a standard for the binary format, most implementations
+copy the SVr2 binary format, which uses 16-bit signed integers,
+and is limited to 4096-byte entries.
+.IP
+The format cannot represent very large numeric capabilities,
+nor can it represent large numbers of special keyboard definitions.
+.bP
+The tables of capability names differ between implementations.
+.IP
+Although they \fImay\fP provide all of the standard capability names,
+the position in the tables differs because some features were added as needed,
+while others were added (out of order) to comply with X/Open Curses.
+.IP
+While ncurses' repertoire of predefined capabilities is closest to Solaris,
+Solaris's terminfo database has a few differences from
+the list published by X/Open Curses.
+For example, ncurses can be configured with tables which match the
+terminal databases for AIX, HP-UX or OSF/1,
+rather than the default Solaris-like configuration.
+.bP
+In SVr4 curses and ncurses,
+the terminal database is defined at compile-time using a text file
+which lists the different terminal capabilities.
+.IP
+In principle, the text-file can be extended,
+but doing this requires recompiling and reinstalling the library.
+The text-file used in ncurses for terminal capabilities includes
+details for various systems past the documented X/Open Curses features.
+For example, ncurses supports these capabilities in each configuration:
+.RS 8
+.TP 5
+memory_lock
+(meml)
+lock memory above cursor
+.TP 5
+memory_unlock
+(memu)
+unlock memory
+.TP 5
+box_chars_1
+(box1)
+box characters primary set
+.RE
+.IP
+The memory lock/unlock capabilities were included because they were used
+in the X11R6 terminal description for \fBxterm\fP.
+The \fIbox1\fP capability is used in @TIC@ to help with terminal descriptions
+written for AIX.
+.PP
+During the 1990s, some users were reluctant to use terminfo
+in spite of its performance advantages over termcap:
+.bP
+The fixed repertoire prevented users from adding features
+for unanticipated terminal improvements
+(or required them to reuse existing capabilities as a workaround).
+.bP
+The limitation to 16-bit signed integers was also mentioned.
+Because termcap stores everything as a string,
+it could represent larger numbers.
+.PP
+Although termcap's extensibility was rarely used
+(it was never the \fIspeaker\fP who had actually used the feature),
+the criticism had a point.
+ncurses 5.0 provided a way to detect nonstandard capabilities,
+determine their
+type and optionally store and retrieve them in a way which did not interfere
+with other applications.
+These are referred to as \fIuser-defined capabilities\fP because no
+modifications to the toolset's predefined capability names are needed.
+.PP
+The ncurses utilities \fB@TIC@\fP and \fB@INFOCMP@\fP have a command-line
+option \*(``\-x\*('' to control whether the nonstandard capabilities
+are stored or retrieved.
+A library function \fBuse_extended_names\fP
+is provided for the same purpose.
+.PP
+When compiling a terminal database, if \*(``\-x\*('' is set,
+\fB@TIC@\fP will store a user-defined capability if the capability name is not
+one of the predefined names.
+.PP
+Because ncurses provides a termcap library interface,
+these user-defined capabilities may be visible to termcap applications:
+.bP
+The termcap interface (like all implementations of termcap)
+requires that the capability names are 2-characters.
+.IP
+When the capability is simple enough for use in a termcap application,
+it is provided as a 2-character name.
+.bP
+There are other
+user-defined capabilities which refer to features not usable in termcap,
+e.g., parameterized strings that use more than two parameters
+or use more than the trivial expression support provided by termcap.
+For these, the terminfo database should have only capability names with
+3 or more characters.
+.bP
+Some terminals can send distinct strings for special keys (cursor-,
+keypad- or function-keys) depending on modifier keys (shift, control, etc.).
+While terminfo and termcap have a set of 60 predefined function-key names,
+to which a series of keys can be assigned,
+that is insufficient for more than a dozen keys multiplied by more than
+a couple of modifier combinations.
+The ncurses database uses a convention based on \fBxterm\fP to
+provide extended special-key names.
+.IP
+Fitting that into termcap's limitation of 2-character names
+would be pointless.
+These extended keys are available only with terminfo.
+.SS Recognized capabilities
+.PP
+The ncurses library uses the user-definable capabilities.
+While the terminfo database may have other extensions,
+ncurses makes explicit checks for these:
+.RS 3
+.TP 3
+AX
+\fIboolean\fP, asserts that the terminal interprets SGR 39 and SGR 49
+by resetting the foreground and background color, respectively, to the default.
+.IP
+This is a feature recognized by the \fBscreen\fP program as well.
+.TP 3
+E3
+\fIstring\fP, tells how to clear the terminal's scrollback buffer.
+When present, the \fBclear\fP(1) program sends this before clearing
+the terminal.
+.IP
+The command \*(``\fBtput clear\fP\*('' does the same thing.
+.TP 3
+RGB
+\fIboolean\fP, \fInumber\fP \fBor\fP \fIstring\fP,
+to assert that the
+\fBset_a_foreground\fP and
+\fBset_a_background\fP capabilities correspond to \fIdirect colors\fP,
+using an RGB (red/green/blue) convention.
+This capability allows the \fBcolor_content\fP function to
+return appropriate values without requiring the application
+to initialize colors using \fBinit_color\fP.
+.IP
+The capability type determines the values which ncurses sees:
+.RS 3
+.TP 3
+\fIboolean\fP
+implies that the number of bits for red, green and blue are the same.
+Using the maximum number of colors,
+ncurses adds two, divides that sum by three, and assigns the result
+to red, green and blue in that order.
+.IP
+If the number of bits needed for the number of colors is not a multiple
+of three, the blue (and green) components lose in comparison to red.
+.TP 3
+\fInumber\fP
+tells ncurses what result to add to red, green and blue.
+If ncurses runs out of bits,
+blue (and green) lose just as in the \fIboolean\fP case.
+.TP 3
+\fIstring\fP
+explicitly list the number of bits used for red, green and blue components
+as a slash-separated list of decimal integers.
+.RE
+.IP
+Because there are several RGB encodings in use,
+applications which make assumptions about the number of bits per color
+are unlikely to work reliably.
+As a trivial case, for example, one could define \fBRGB#1\fP
+to represent the standard eight ANSI colors, i.e., one bit per color.
+.TP 3
+U8
+\fInumber\fP,
+asserts that ncurses must use Unicode values for line-drawing characters,
+and that it should ignore the alternate character set capabilities
+when the locale uses UTF-8 encoding.
+For more information, see the discussion of
+\fBNCURSES_NO_UTF8_ACS\fP in \fBncurses\fP(3X).
+.IP
+Set this capability to a nonzero value to enable it.
+.TP 3
+XM
+\fIstring\fP,
+override ncurses's built-in string which
+enables/disables \fBxterm\fP mouse mode.
+.IP
+ncurses sends a character sequence to the terminal to initialize mouse mode,
+and when the user clicks the mouse buttons or (in certain modes) moves the
+mouse, handles the characters sent back by the terminal to tell it what
+was done with the mouse.
+.IP
+The mouse protocol is enabled when
+the \fImask\fP passed in the \fBmousemask\fP function is nonzero.
+By default, ncurses handles the responses for the X11 xterm mouse protocol.
+It also knows about the \fISGR 1006\fP xterm mouse protocol,
+but must to be told to look for this specifically.
+It will not be able to guess which mode is used,
+because the responses are enough alike that only confusion would result.
+.IP
+The \fBXM\fP capability has a single parameter.
+If nonzero, the mouse protocol should be enabled.
+If zero, the mouse protocol should be disabled.
+ncurses inspects this capability if it is present,
+to see whether the 1006 protocol is used.
+If so, it expects the responses to use the \fISGR 1006\fP xterm mouse protocol.
+.IP
+The xterm mouse protocol is used by other terminal emulators.
+The terminal database uses building-blocks for the various xterm mouse
+protocols which can be used in customized terminal descriptions.
+.IP
+The terminal database building blocks for this mouse
+feature also have an experimental capability \fIxm\fP.
+The \*(``xm\*('' capability describes the mouse response.
+Currently there is no interpreter which would use this
+information to make the mouse support completely data-driven.
+.IP
+\fIxm\fP shows the format of the mouse responses.
+In this experimental capability, the parameters are
+.RS 5
+.TP 5
+.I p1
+y-ordinate
+.TP 5
+.I p2
+x-ordinate
+.TP 5
+.I p3
+button
+.TP 5
+.I p4
+state, e.g., pressed or released
+.TP 5
+.I p5
+y-ordinate starting region
+.TP 5
+.I p6
+x-ordinate starting region
+.TP 5
+.I p7
+y-ordinate ending region
+.TP 5
+.I p8
+x-ordinate ending region
+.RE
+.IP
+Here are examples from the terminal database for the most commonly used
+xterm mouse protocols:
+.IP
+.nf
+ xterm+x11mouse|X11 xterm mouse protocol,
+ kmous=\\E[M, XM=\\E[?1000%?%p1%{1}%=%th%el%;,
+ xm=\\E[M
+ %?%p4%t%p3%e%{3}%;%'\ '%+%c
+ %p2%'!'%+%c
+ %p1%'!'%+%c,
+
+ xterm+sm+1006|xterm SGR-mouse,
+ kmous=\\E[<, XM=\\E[?1006;1000%?%p1%{1}%=%th%el%;,
+ xm=\\E[<%i%p3%d;
+ %p1%d;
+ %p2%d;
+ %?%p4%tM%em%;,
+.fi
+.
+.SS Extended key-definitions
+.PP
+Several terminals provide the ability to send distinct strings for
+combinations of modified special keys.
+There is no standard for what those keys can send.
+.PP
+Since 1999, \fBxterm\fP has supported
+\fIshift\fP, \fIcontrol\fP, \fIalt\fP, and \fImeta\fP modifiers which produce
+distinct special-key strings.
+In a terminal description, ncurses has no special knowledge of the
+modifiers used.
+Applications can use the \fInaming convention\fP established for \fBxterm\fP
+to find these special keys in the terminal description.
+.PP
+Starting with the curses convention that \fIkey names\fP begin with \*(``k\*(''
+and that shifted special keys are an uppercase name,
+ncurses' terminal database defines these names to which a suffix is added:
+.RS 5
+.TS
+tab(/) ;
+l l .
+\fIName\fR/\fIDescription\fR
+_
+kDC/special form of kdch1 (delete character)
+kDN/special form of kcud1 (cursor down)
+kEND/special form of kend (End)
+kHOM/special form of khome (Home)
+kLFT/special form of kcub1 (cursor-left or cursor-back)
+kNXT/special form of knext (Next, or Page-Down)
+kPRV/special form of kprev (Prev, or Page-Up)
+kRIT/special form of kcuf1 (cursor-right, or cursor-forward)
+kUP/special form of kcuu1 (cursor-up)
+.TE
+.RE
+.PP
+These are the suffixes used to denote the modifiers:
+.RS 5
+.TS
+tab(/) ;
+l l .
+\fIValue\fR/\fIDescription\fR
+_
+2/Shift
+3/Alt
+4/Shift + Alt
+5/Control
+6/Shift + Control
+7/Alt + Control
+8/Shift + Alt + Control
+9/Meta
+10/Meta + Shift
+11/Meta + Alt
+12/Meta + Alt + Shift
+13/Meta + Ctrl
+14/Meta + Ctrl + Shift
+15/Meta + Ctrl + Alt
+16/Meta + Ctrl + Alt + Shift
+.TE
+.RE
+.PP
+None of these are predefined; terminal descriptions can refer to \fInames\fP
+which ncurses will allocate at runtime to \fIkey-codes\fP.
+To use these keys in an ncurses program, an application could do this:
+.bP
+using a list of extended key \fInames\fP,
+ask \fBtigetstr\fP(3X) for their values, and
+.bP
+given the list of values,
+ask \fBkey_defined\fP(3X) for the \fIkey-code\fP which
+would be returned for those keys by \fBwgetch\fP(3X).
+.PP
+.SH PORTABILITY
+.PP
+The \*(``\-x\*('' extension feature of \fB@TIC@\fP and \fB@INFOCMP@\fP
+has been adopted in NetBSD curses.
+That implementation stores user-defined capabilities,
+but makes no use of these capabilities itself.
+.SH SEE ALSO
+.PP
+\fB@TIC@\fR(1M),
+\fB@INFOCMP@\fR(1M).
+.SH AUTHORS
+.PP
+Thomas E. Dickey
+.br
+beginning with ncurses 5.0 (1999)
diff --git a/man/wresize.3x b/man/wresize.3x
index 0832450fa321..aa61fd819c7b 100644
--- a/man/wresize.3x
+++ b/man/wresize.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2015,2018 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -28,7 +28,7 @@
.\"
.\" Author: Thomas E. Dickey 1996
.\"
-.\" $Id: wresize.3x,v 1.13 2010/12/04 18:40:45 tom Exp $
+.\" $Id: wresize.3x,v 1.15 2018/07/28 21:34:06 tom Exp $
.TH wresize 3X ""
.SH NAME
\fBwresize\fR \- resize a curses window
@@ -37,8 +37,8 @@
.sp
\fBint wresize(WINDOW *win, int lines, int columns);\fR
.SH DESCRIPTION
-This is an extension to the curses library.
-It reallocates storage for an \fBncurses\fR
+This is an extension to the curses library.
+It reallocates storage for an \fBncurses\fR
window to adjust its dimensions to the specified values.
If either dimension is larger than the current values, the
window's data is filled with blanks that have the current background rendition
@@ -53,6 +53,12 @@ The dimensions are not compared to \fBcurses\fR screen dimensions to
simplify the logic of \fBresizeterm\fR.
The caller must ensure that the window's dimensions fit within the
actual screen dimensions.
+.SH PORTABILITY
+.PP
+It is not possible to resize windows with SVr4 curses.
+.PP
+This extension of ncurses was introduced in mid-1995.
+It was adopted in NetBSD curses (2001) and PDCurses (2003).
.SH SEE ALSO
\fBresizeterm\fR(3X).
.SH AUTHOR
diff --git a/menu/Makefile.in b/menu/Makefile.in
index ad1f47a22e8d..40d6122a8cff 100644
--- a/menu/Makefile.in
+++ b/menu/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.57 2013/08/04 20:23:27 tom Exp $
+# $Id: Makefile.in,v 1.65 2018/01/15 19:28:45 tom Exp $
##############################################################################
-# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2015,2018 Free 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"), #
@@ -42,7 +42,7 @@
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
@@ -51,6 +51,7 @@ o = .@OBJEXT@
MODEL = @DFT_LWR_MODEL@
DESTDIR = @DESTDIR@
+top_srcdir = @top_srcdir@
srcdir = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
@@ -61,7 +62,10 @@ includesubdir = @includesubdir@
INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
+PACKAGE = @PACKAGE@
+
LIBTOOL = @LIBTOOL@
+LIBTOOL_OPTS = @LIBTOOL_OPTS@ @EXPORT_SYMS@
LIBTOOL_CLEAN = @LIB_CLEAN@
LIBTOOL_COMPILE = @LIB_COMPILE@
LIBTOOL_LINK = @LIB_LINK@
@@ -71,7 +75,7 @@ LT_UNDEF = @LT_UNDEF@
INSTALL = @INSTALL@
INSTALL_LIB = @INSTALL@ @INSTALL_LIB@
-INSTALL_PROG = @INSTALL_PROGRAM@
+INSTALL_PROG = @INSTALL_PROGRAM@ @INSTALL_OPT_S@
INSTALL_DATA = @INSTALL_DATA@
AR = @AR@
@@ -87,7 +91,7 @@ CC = @CC@
CPP = @CPP@
CFLAGS = @CFLAGS@
-CPPFLAGS = -I@top_srcdir@/ncurses -DHAVE_CONFIG_H @CPPFLAGS@
+CPPFLAGS = -I${top_srcdir}/ncurses -DHAVE_CONFIG_H @CPPFLAGS@
CCFLAGS = $(CPPFLAGS) $(CFLAGS)
@@ -103,9 +107,11 @@ LINK = $(LIBTOOL_LINK)
LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
SHLIB_DIRS = -L../lib
-SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
+SHLIB_LIST = $(SHLIB_DIRS) -lncurses@USE_LIB_SUFFIX@ @SHLIB_LIST@
RPATH_LIST = @RPATH_LIST@
+RESULTING_SYMS = @RESULTING_SYMS@
+VERSIONED_SYMS = @VERSIONED_SYMS@
MK_SHARED_LIB = @MK_SHARED_LIB@
NCURSES_MAJOR = @NCURSES_MAJOR@
@@ -165,6 +171,7 @@ mostlyclean ::
clean :: mostlyclean
-rm -f $(AUTO_SRC)
+ -rm -rf .libs *.dSYM
distclean :: clean
-rm -f Makefile
diff --git a/menu/llib-lmenu b/menu/llib-lmenu
index 13ecaf8bdd79..96f067fc678a 100644
--- a/menu/llib-lmenu
+++ b/menu/llib-lmenu
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2015 Free 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 1996-2005,2010 *
+ * Author: Thomas E. Dickey 1996-on *
****************************************************************************/
/* LINTLIBRARY */
diff --git a/menu/llib-lmenut b/menu/llib-lmenut
index 951719f41e6e..a28708905c81 100644
--- a/menu/llib-lmenut
+++ b/menu/llib-lmenut
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2010,2015 Free 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 2010 *
+ * Author: Thomas E. Dickey 2010-on *
****************************************************************************/
/* LINTLIBRARY */
diff --git a/menu/llib-lmenutw b/menu/llib-lmenutw
index 0cd559ebd269..a28708905c81 100644
--- a/menu/llib-lmenutw
+++ b/menu/llib-lmenutw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2010,2015 Free 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 2010 *
+ * Author: Thomas E. Dickey 2010-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -237,8 +237,6 @@ const char *item_description(
/* ./m_item_new.c */
-#include <wctype.h>
-
#undef new_item
ITEM *new_item(
const char *name,
diff --git a/menu/llib-lmenuw b/menu/llib-lmenuw
index 0998f9b0b866..73bfa55e55a6 100644
--- a/menu/llib-lmenuw
+++ b/menu/llib-lmenuw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2010,2015 Free 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 2002-2005,2010 *
+ * Author: Thomas E. Dickey 2002-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -237,8 +237,6 @@ const char *item_description(
/* ./m_item_new.c */
-#include <wctype.h>
-
#undef new_item
ITEM *new_item(
const char *name,
diff --git a/menu/m_driver.c b/menu/m_driver.c
index 1a7a3911bbbf..6db94bf77174 100644
--- a/menu/m_driver.c
+++ b/menu/m_driver.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2020 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_driver.c,v 1.31 2012/03/10 23:43:41 tom Exp $")
+MODULE_ID("$Id: m_driver.c,v 1.33 2020/01/18 17:02:13 tom Exp $")
/* Macros */
@@ -138,7 +138,7 @@ _nc_Match_Next_Character_In_Item_Name
/* we artificially position one item back, because in the do...while
loop we start with the next item. This means, that with a new
pattern search we always start the scan with the actual item. If
- we do a NEXT_PATTERN oder PREV_PATTERN search, we start with the
+ we do a NEXT_PATTERN or PREV_PATTERN search, we start with the
one after or before the actual item. */
if (--idx < 0)
idx = menu->nitems - 1;
@@ -530,7 +530,11 @@ menu_driver(MENU * menu, int c)
}
}
else
- result = E_REQUEST_DENIED;
+ {
+ if (menu->opt & O_MOUSE_MENU)
+ ungetmouse(&event); /* let someone else handle this */
+ result = E_REQUEST_DENIED;
+ }
}
#endif /* NCURSES_MOUSE_VERSION */
else
diff --git a/menu/m_global.c b/menu/m_global.c
index d85f207ed57e..7b4517f36609 100644
--- a/menu/m_global.c
+++ b/menu/m_global.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2014,2020 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_global.c,v 1.27 2012/06/10 00:09:15 tom Exp $")
+MODULE_ID("$Id: m_global.c,v 1.29 2020/01/18 17:05:17 tom Exp $")
static char mark[] = "-";
/* *INDENT-OFF* */
@@ -53,7 +53,7 @@ NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu = {
0, /* length of widest description */
1, /* length of mark */
1, /* length of one item */
- 1, /* Spacing for descriptor */
+ 1, /* Spacing for descriptor */
1, /* Spacing for columns */
1, /* Spacing for rows */
(char *)0, /* buffer used to store match chars */
@@ -68,7 +68,7 @@ NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu = {
0, /* Top row of menu */
(chtype)A_REVERSE, /* Attribute for selection */
(chtype)A_NORMAL, /* Attribute for nonselection */
- (chtype)A_UNDERLINE, /* Attribute for inactive */
+ (chtype)A_UNDERLINE, /* Attribute for inactive */
' ', /* Pad character */
(Menu_Hook)0, /* Menu init */
(Menu_Hook)0, /* Menu term */
@@ -77,7 +77,7 @@ NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu = {
(void *)0, /* userptr */
mark, /* mark */
ALL_MENU_OPTS, /* options */
- 0 /* status */
+ 0 /* status */
};
NCURSES_EXPORT_VAR(ITEM) _nc_Default_Item = {
@@ -98,9 +98,9 @@ NCURSES_EXPORT_VAR(ITEM) _nc_Default_Item = {
/* *INDENT-ON* */
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : static void ComputeMaximum_NameDesc_Lenths(MENU *menu)
-|
+|
| Description : Calculates the maximum name and description lengths
| of the items connected to the menu
|
@@ -132,10 +132,10 @@ ComputeMaximum_NameDesc_Lengths(MENU * menu)
}
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : static void ResetConnectionInfo(MENU *, ITEM **)
-|
-| Description : Reset all informations in the menu and the items in
+|
+| Description : Reset all information in the menu and the items in
| the item array that indicates a connection
|
| Return Values : -
@@ -160,7 +160,7 @@ ResetConnectionInfo(MENU * menu, ITEM ** items)
}
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : bool _nc_Connect_Items(MENU *menu, ITEM **items)
|
| Description : Connect the items in the item array to the menu.
@@ -218,16 +218,16 @@ _nc_Connect_Items(MENU * menu, ITEM ** items)
}
}
- /* If we fall through to this point, we have to reset all items connection
+ /* If we fall through to this point, we have to reset all items connection
and inform about a reject connection */
ResetConnectionInfo(menu, items);
return (FALSE);
}
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : void _nc_Disconnect_Items(MENU *menu)
-|
+|
| Description : Disconnect the menus item array from the menu
|
| Return Values : -
@@ -240,9 +240,9 @@ _nc_Disconnect_Items(MENU * menu)
}
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : int _nc_Calculate_Text_Width(const TEXT * item)
-|
+|
| Description : Calculate the number of columns for a TEXT.
|
| Return Values : the width
@@ -328,9 +328,9 @@ calculate_actual_width(MENU * menu, bool name)
#endif
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : void _nc_Calculate_Item_Length_and_Width(MENU *menu)
-|
+|
| Description : Calculate the length of an item and the width of the
| whole menu.
|
@@ -366,9 +366,9 @@ _nc_Calculate_Item_Length_and_Width(MENU * menu)
}
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : void _nc_Link_Item(MENU *menu)
-|
+|
| Description : Statically calculate for every item its four neighbors.
| This depends on the orientation of the menu. This
| static approach simplifies navigation in the menu a lot.
@@ -495,9 +495,9 @@ _nc_Link_Items(MENU * menu)
}
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : void _nc_Show_Menu(const MENU* menu)
-|
+|
| Description : Update the window that is associated with the menu
|
| Return Values : -
@@ -530,12 +530,12 @@ _nc_Show_Menu(const MENU * menu)
}
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : void _nc_New_TopRow_and_CurrentItem(
-| MENU *menu,
-| int new_toprow,
+| MENU *menu,
+| int new_toprow,
| ITEM *new_current_item)
-|
+|
| Description : Redisplay the menu so that the given row becomes the
| top row and the given item becomes the new current
| item.
@@ -568,7 +568,9 @@ _nc_New_TopRow_and_CurrentItem(
cur_item = menu->curitem;
assert(cur_item);
- menu->toprow = (short)new_toprow;
+ menu->toprow = (short)(((menu->rows - menu->frows) >= 0)
+ ? min(menu->rows - menu->frows, new_toprow)
+ : 0);
menu->curitem = new_current_item;
if (mterm_called)
@@ -590,7 +592,9 @@ _nc_New_TopRow_and_CurrentItem(
}
else
{ /* if we are not posted, this is quite simple */
- menu->toprow = (short)new_toprow;
+ menu->toprow = (short)(((menu->rows - menu->frows) >= 0)
+ ? min(menu->rows - menu->frows, new_toprow)
+ : 0);
menu->curitem = new_current_item;
}
}
diff --git a/menu/m_hook.c b/menu/m_hook.c
index 671fab65e50e..9c8451314752 100644
--- a/menu/m_hook.c
+++ b/menu/m_hook.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,13 +37,14 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_hook.c,v 1.16 2012/03/10 23:43:41 tom Exp $")
+MODULE_ID("$Id: m_hook.c,v 1.18 2018/12/16 00:13:36 tom Exp $")
/* "Template" macro to generate function to set application specific hook */
#define GEN_HOOK_SET_FUNCTION( typ, name ) \
NCURSES_IMPEXP int NCURSES_API set_ ## typ ## _ ## name (MENU *menu, Menu_Hook func )\
{\
- T((T_CALLED("set_" #typ "_" #name "(%p,%p)"), (void *) menu, func));\
+ TR_FUNC_BFR(1);\
+ T((T_CALLED("set_" #typ "_" #name "(%p,%s)"), (void *) menu, TR_FUNC_ARG(0, func)));\
(Normalize_Menu(menu) -> typ ## name = func );\
RETURN(E_OK);\
}
diff --git a/menu/m_item_use.c b/menu/m_item_use.c
index 8cf294bc29e3..7cea30c92ff8 100644
--- a/menu/m_item_use.c
+++ b/menu/m_item_use.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2020 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,14 +37,14 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_item_use.c,v 1.17 2010/01/23 21:20:10 tom Exp $")
+MODULE_ID("$Id: m_item_use.c,v 1.18 2020/01/18 17:02:13 tom Exp $")
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : int set_item_userptr(ITEM *item, void *userptr)
-|
+|
| Description : Set the pointer that is reserved in any item to store
-| application relevant informations.
+| application relevant information.
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
@@ -57,11 +57,11 @@ set_item_userptr(ITEM * item, void *userptr)
}
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : void *item_userptr(const ITEM *item)
-|
+|
| Description : Return the pointer that is reserved in any item to store
-| application relevant informations.
+| application relevant information.
|
| Return Values : Value of the pointer. If no such pointer has been set,
| NULL is returned.
diff --git a/menu/m_req_name.c b/menu/m_req_name.c
index e5f2888ed6f2..cc0066d540b8 100644
--- a/menu/m_req_name.c
+++ b/menu/m_req_name.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2015 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,27 +37,29 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_req_name.c,v 1.22 2012/07/21 23:27:32 tom Exp $")
+MODULE_ID("$Id: m_req_name.c,v 1.23 2015/04/04 18:00:23 tom Exp $")
-static const char *request_names[MAX_MENU_COMMAND - MIN_MENU_COMMAND + 1] =
+#define DATA(s) { s }
+
+static const char request_names[MAX_MENU_COMMAND - MIN_MENU_COMMAND + 1][14] =
{
- "LEFT_ITEM",
- "RIGHT_ITEM",
- "UP_ITEM",
- "DOWN_ITEM",
- "SCR_ULINE",
- "SCR_DLINE",
- "SCR_DPAGE",
- "SCR_UPAGE",
- "FIRST_ITEM",
- "LAST_ITEM",
- "NEXT_ITEM",
- "PREV_ITEM",
- "TOGGLE_ITEM",
- "CLEAR_PATTERN",
- "BACK_PATTERN",
- "NEXT_MATCH",
- "PREV_MATCH"
+ DATA("LEFT_ITEM"),
+ DATA("RIGHT_ITEM"),
+ DATA("UP_ITEM"),
+ DATA("DOWN_ITEM"),
+ DATA("SCR_ULINE"),
+ DATA("SCR_DLINE"),
+ DATA("SCR_DPAGE"),
+ DATA("SCR_UPAGE"),
+ DATA("FIRST_ITEM"),
+ DATA("LAST_ITEM"),
+ DATA("NEXT_ITEM"),
+ DATA("PREV_ITEM"),
+ DATA("TOGGLE_ITEM"),
+ DATA("CLEAR_PATTERN"),
+ DATA("BACK_PATTERN"),
+ DATA("NEXT_MATCH"),
+ DATA("PREV_MATCH")
};
#define A_SIZE (sizeof(request_names)/sizeof(request_names[0]))
diff --git a/menu/m_trace.c b/menu/m_trace.c
index 094ff86c67a9..49ca41884ddc 100644
--- a/menu/m_trace.c
+++ b/menu/m_trace.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2004-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2004-2016,2018 Free 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 "menu.priv.h"
-MODULE_ID("$Id: m_trace.c,v 1.4 2010/01/23 21:20:10 tom Exp $")
+MODULE_ID("$Id: m_trace.c,v 1.6 2018/12/16 00:13:36 tom Exp $")
NCURSES_EXPORT(ITEM *)
_nc_retrace_item(ITEM * code)
@@ -65,7 +65,8 @@ _nc_retrace_menu(MENU * code)
NCURSES_EXPORT(Menu_Hook)
_nc_retrace_menu_hook(Menu_Hook code)
{
- T((T_RETURN("%p"), code));
+ TR_FUNC_BFR(1);
+ T((T_RETURN("%s"), TR_FUNC_ARG(0, code)));
return code;
}
diff --git a/menu/m_userptr.c b/menu/m_userptr.c
index a7359c99d0eb..3172a57fa1aa 100644
--- a/menu/m_userptr.c
+++ b/menu/m_userptr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2020 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,14 +37,14 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_userptr.c,v 1.17 2010/01/23 21:20:10 tom Exp $")
+MODULE_ID("$Id: m_userptr.c,v 1.18 2020/01/18 17:04:37 tom Exp $")
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : int set_menu_userptr(MENU *menu, void *userptr)
-|
+|
| Description : Set the pointer that is reserved in any menu to store
-| application relevant informations.
+| application relevant information.
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
@@ -57,11 +57,11 @@ set_menu_userptr(MENU * menu, void *userptr)
}
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : void *menu_userptr(const MENU *menu)
-|
+|
| Description : Return the pointer that is reserved in any menu to
-| store application relevant informations.
+| store application relevant information.
|
| Return Values : Value of the pointer. If no such pointer has been set,
| NULL is returned
diff --git a/menu/menu.h b/menu/menu.h
index 4eeac018bdb3..476ab3cdbef4 100644
--- a/menu/menu.h
+++ b/menu/menu.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free 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: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
-/* $Id: menu.h,v 1.20 2009/04/05 00:28:07 tom Exp $ */
+/* $Id: menu.h,v 1.23 2017/02/11 16:54:04 tom Exp $ */
#ifndef ETI_MENU
#define ETI_MENU
@@ -56,17 +56,23 @@ typedef int Item_Options;
#define O_IGNORECASE (0x08)
#define O_SHOWMATCH (0x10)
#define O_NONCYCLIC (0x20)
+#define O_MOUSE_MENU (0x40)
/* Item options: */
#define O_SELECTABLE (0x01)
+#if !NCURSES_OPAQUE_MENU
typedef struct
{
const char* str;
unsigned short length;
} TEXT;
+#endif /* !NCURSES_OPAQUE_MENU */
+
+struct tagMENU;
typedef struct tagITEM
+#if !NCURSES_OPAQUE_MENU
{
TEXT name; /* name of menu item */
TEXT description; /* description of item, optional in display */
@@ -83,11 +89,14 @@ typedef struct tagITEM
struct tagITEM *up;
struct tagITEM *down;
-} ITEM;
+}
+#endif /* !NCURSES_OPAQUE_MENU */
+ITEM;
typedef void (*Menu_Hook)(struct tagMENU *);
typedef struct tagMENU
+#if 1 /* not yet: !NCURSES_OPAQUE_MENU */
{
short height; /* Nr. of chars high */
short width; /* Nr. of chars wide */
@@ -128,8 +137,9 @@ typedef struct tagMENU
Menu_Options opt; /* Menu options */
unsigned short status; /* Internal state of menu */
-
-} MENU;
+}
+#endif /* !NCURSES_OPAQUE_MENU */
+MENU;
/* Define keys */
diff --git a/menu/menu.priv.h b/menu/menu.priv.h
index 763ca4a675fd..87b5770e8465 100644
--- a/menu/menu.priv.h
+++ b/menu/menu.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free 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: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
-/* $Id: menu.priv.h,v 1.24 2012/03/10 23:43:41 tom Exp $ */
+/* $Id: menu.priv.h,v 1.27 2017/02/11 16:50:12 tom Exp $ */
/***************************************************************************
* Module menu.priv.h *
@@ -42,6 +42,9 @@
/* *INDENT-OFF* */
#include "curses.priv.h"
+
+#define NCURSES_OPAQUE_MENU 0
+
#include "mf_common.h"
#include "menu.h"
@@ -78,7 +81,8 @@ extern NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu;
O_ROWMAJOR | \
O_IGNORECASE | \
O_SHOWMATCH | \
- O_NONCYCLIC )
+ O_NONCYCLIC | \
+ O_MOUSE_MENU )
#define ALL_ITEM_OPTS (O_SELECTABLE)
@@ -130,12 +134,12 @@ extern NCURSES_EXPORT(int) _nc_menu_cursor_pos (const MENU* menu, const ITEM* i
#ifdef TRACE
-#define returnItem(code) TRACE_RETURN(code,item)
-#define returnItemPtr(code) TRACE_RETURN(code,item_ptr)
-#define returnItemOpts(code) TRACE_RETURN(code,item_opts)
-#define returnMenu(code) TRACE_RETURN(code,menu)
-#define returnMenuHook(code) TRACE_RETURN(code,menu_hook)
-#define returnMenuOpts(code) TRACE_RETURN(code,menu_opts)
+#define returnItem(code) TRACE_RETURN1(code,item)
+#define returnItemPtr(code) TRACE_RETURN1(code,item_ptr)
+#define returnItemOpts(code) TRACE_RETURN1(code,item_opts)
+#define returnMenu(code) TRACE_RETURN1(code,menu)
+#define returnMenuHook(code) TRACE_RETURN1(code,menu_hook)
+#define returnMenuOpts(code) TRACE_RETURN1(code,menu_opts)
extern NCURSES_EXPORT(ITEM *) _nc_retrace_item (ITEM *);
extern NCURSES_EXPORT(ITEM **) _nc_retrace_item_ptr (ITEM **);
diff --git a/misc/Makefile.in b/misc/Makefile.in
index 34c9a5244229..dbe7ff255d92 100644
--- a/misc/Makefile.in
+++ b/misc/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.61 2013/08/04 20:23:20 tom Exp $
+# $Id: Makefile.in,v 1.72 2019/02/02 19:44:52 tom Exp $
##############################################################################
-# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2018,2019 Free 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"), #
@@ -42,7 +42,7 @@
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES :
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
@@ -75,48 +75,80 @@ INSTALL_DATA = @INSTALL_DATA@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
################################################################################
-all : terminfo.tmp
+all \
+sources ::
-depend :
-
-sources :: terminfo.tmp
-
-install : install.data install.libs
+@MAKE_DATABASE@all \
+@MAKE_DATABASE@sources :: terminfo.tmp
-install.data : terminfo.tmp \
- $(DESTDIR)$(libdir) \
- $(DESTDIR)$(datadir) \
- $(DESTDIR)$(tabsetdir)
- DESTDIR=${DESTDIR} \
- prefix=${prefix} \
- exec_prefix=${exec_prefix} \
- bindir=${bindir} \
- top_srcdir=${top_srcdir} \
- srcdir=${srcdir} \
- datadir=${datadir} \
- ticdir=${ticdir} \
- source=terminfo.tmp \
- cross_compiling=@cross_compiling@ \
- $(SHELL) ./run_tic.sh
- @cd $(srcdir)/tabset && \
- $(SHELL) -c 'for i in * ; do \
- if test -f $$i ; then \
- echo installing $$i; \
- $(INSTALL_DATA) $$i $(DESTDIR)$(tabsetdir)/$$i; \
- fi; done'
-
-NCURSES_CONFIG = ncurses@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config
+depend :
+@MAKE_DATABASE@install :: @MISC_INSTALL_DATA@
+
+@MAKE_DATABASE@install.data :: terminfo.tmp \
+@MAKE_DATABASE@ $(DESTDIR)$(libdir) \
+@MAKE_DATABASE@ $(DESTDIR)$(datadir) \
+@MAKE_DATABASE@ $(DESTDIR)$(tabsetdir)
+@MAKE_DATABASE@ DESTDIR=${DESTDIR} \
+@MAKE_DATABASE@ prefix=${prefix} \
+@MAKE_DATABASE@ exec_prefix=${exec_prefix} \
+@MAKE_DATABASE@ bindir=${bindir} \
+@MAKE_DATABASE@ top_srcdir=${top_srcdir} \
+@MAKE_DATABASE@ srcdir=${srcdir} \
+@MAKE_DATABASE@ datadir=${datadir} \
+@MAKE_DATABASE@ ticdir=${ticdir} \
+@MAKE_DATABASE@ source=terminfo.tmp \
+@MAKE_DATABASE@ cross_compiling=@cross_compiling@ \
+@MAKE_DATABASE@ $(SHELL) ./run_tic.sh
+@MAKE_DATABASE@ @cd $(srcdir)/tabset && \
+@MAKE_DATABASE@ $(SHELL) -c 'for i in * ; do \
+@MAKE_DATABASE@ if test -f $$i ; then \
+@MAKE_DATABASE@ echo installing $$i; \
+@MAKE_DATABASE@ $(INSTALL_DATA) $$i $(DESTDIR)$(tabsetdir)/$$i; \
+@MAKE_DATABASE@ fi; done'
+install.data ::
+ @echo "finished $@"
+
+NCURSES_CONFIG = ncurses@DFT_ARG_SUFFIX@@cf_cv_abi_version@@cf_config_suffix@-config
+
+install \
install.libs :: $(DESTDIR)$(bindir) ncurses-config
$(INSTALL_SCRIPT) ncurses-config $(DESTDIR)$(bindir)/$(NCURSES_CONFIG)
-@MAKE_PC_FILES@install.libs :: pc-files $(DESTDIR)$(PKG_CONFIG_LIBDIR)
-@MAKE_PC_FILES@ $(SHELL) -c 'for name in *.pc; do $(INSTALL_DATA) $$name $(DESTDIR)$(PKG_CONFIG_LIBDIR)/$$name; done'
-
+# Make a list of the files that gen-pkgconfig might create:
+@MAKE_PC_FILES@PC_FILES = \
+@MAKE_PC_FILES@ @LIB_NAME@@USE_ARG_SUFFIX@@PC_MODULE_SUFFIX@.pc \
+@MAKE_PC_FILES@ @TINFO_ARG_SUFFIX@@PC_MODULE_SUFFIX@.pc \
+@MAKE_PC_FILES@ @TICS_NAME@@USE_ARG_SUFFIX@@PC_MODULE_SUFFIX@.pc \
+@MAKE_PC_FILES@ @PANEL_NAME@@USE_ARG_SUFFIX@@PC_MODULE_SUFFIX@.pc \
+@MAKE_PC_FILES@ @MENU_NAME@@USE_ARG_SUFFIX@@PC_MODULE_SUFFIX@.pc \
+@MAKE_PC_FILES@ @FORM_NAME@@USE_ARG_SUFFIX@@PC_MODULE_SUFFIX@.pc \
+@MAKE_PC_FILES@ @CXX_NAME@@USE_ARG_SUFFIX@@PC_MODULE_SUFFIX@.pc
+
+# some packagers prefer to be able to construct pc-files on servers where
+# pkg-config is not installed. Work around that by creating the library
+# directory during this rule:
+@MAKE_PC_FILES@install \
+@MAKE_PC_FILES@install.libs :: pc-files
+@MAKE_PC_FILES@ @$(SHELL) -c 'case "x$(DESTDIR)$(PKG_CONFIG_LIBDIR)" in \
+@MAKE_PC_FILES@ (x/*) \
+@MAKE_PC_FILES@ mkdir -p $(DESTDIR)$(PKG_CONFIG_LIBDIR); \
+@MAKE_PC_FILES@ for name in $(PC_FILES); do \
+@MAKE_PC_FILES@ test -f $$name || continue; \
+@MAKE_PC_FILES@ echo installing $$name; \
+@MAKE_PC_FILES@ $(INSTALL_DATA) $$name $(DESTDIR)$(PKG_CONFIG_LIBDIR)/$$name; \
+@MAKE_PC_FILES@ done \
+@MAKE_PC_FILES@ ;; \
+@MAKE_PC_FILES@ (*) \
+@MAKE_PC_FILES@ echo "...skip actual install: no destination was given" ; \
+@MAKE_PC_FILES@ ;; \
+@MAKE_PC_FILES@ esac'
+
+@MAKE_PC_FILES@all \
@MAKE_PC_FILES@sources :: pc-files
@MAKE_PC_FILES@pc-files :
@MAKE_PC_FILES@ $(SHELL) ./gen-pkgconfig
-@MAKE_PC_FILES@ touch $@
+@MAKE_PC_FILES@ -touch $@
terminfo.tmp : run_tic.sed $(source)
echo '** adjusting tabset paths'
@@ -131,11 +163,10 @@ run_tic.sed :
$(DESTDIR)$(bindir) \
$(DESTDIR)$(libdir) \
$(DESTDIR)$(datadir) \
-$(DESTDIR)$(tabsetdir) \
-$(DESTDIR)$(PKG_CONFIG_LIBDIR) :
+$(DESTDIR)$(tabsetdir) :
mkdir -p $@
-uninstall : uninstall.data uninstall.libs
+uninstall : @MISC_UNINSTALL_DATA@ uninstall.libs
uninstall.data :
-test -d $(DESTDIR)$(tabsetdir) && rm -rf $(DESTDIR)$(tabsetdir)
@@ -144,16 +175,24 @@ uninstall.data :
uninstall.libs :
-rm -f $(DESTDIR)$(bindir)/$(NCURSES_CONFIG)
-@MAKE_PC_FILES@ $(SHELL) -c 'for name in *.pc; do rm -f $(DESTDIR)$(PKG_CONFIG_LIBDIR)/$$name; done'
+@MAKE_PC_FILES@ @$(SHELL) -c 'case x$(DESTDIR)$(PKG_CONFIG_LIBDIR) in \
+@MAKE_PC_FILES@ (x/*) \
+@MAKE_PC_FILES@ for name in $(PC_FILES); do \
+@MAKE_PC_FILES@ test -f $$name || continue; \
+@MAKE_PC_FILES@ echo uninstalling $$name; \
+@MAKE_PC_FILES@ rm -f $(DESTDIR)$(PKG_CONFIG_LIBDIR)/$$name; \
+@MAKE_PC_FILES@ done \
+@MAKE_PC_FILES@ ;; \
+@MAKE_PC_FILES@ esac'
tags :
@MAKE_UPPER_TAGS@TAGS :
mostlyclean :
- -rm -f terminfo.tmp
- -rm -f run_tic.sed
-@MAKE_PC_FILES@ -rm -f *.pc pc-files
+@MAKE_DATABASE@ -rm -f terminfo.tmp
+@MAKE_DATABASE@ -rm -f run_tic.sed
+@MAKE_PC_FILES@ -rm -f pc-files $(PC_FILES)
-rm -f core tags TAGS *~ *.bak *.ln *.atac trace
clean :: mostlyclean
diff --git a/misc/emx.src b/misc/emx.src
index 47200661b261..07a5d2d734e6 100644
--- a/misc/emx.src
+++ b/misc/emx.src
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 1998-2003,2006 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2006,2020 Free 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"), #
@@ -25,7 +25,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: emx.src,v 1.9 2006/04/22 21:46:17 tom Exp $
+# $Id: emx.src,v 1.11 2020/01/18 19:04:22 tom Exp $
# This is a reformatted copy of the terminfo source for OS/2 EMX from
# Juan Jose Garcia Ripoll <worm@arrakis.es>.
# http://www.arrakis.es/~worm/
@@ -183,7 +183,7 @@ ansi-mini|any ansi terminal with pessimistic assumptions,
#
# This completely describes the sequences specified in the DOS 2.1 ANSI.SYS
# documentation (except for the keyboard key reassignment feature, which
-# doen't fit the <pfkey> model well). The klone+acs sequences were valid
+# doesn't fit the <pfkey> model well). The klone+acs sequences were valid
# though undocumented. The <pfkey> capability is untested but should work for
# keys F1-F10 (%p1 values outside this range will yield unpredictable results).
# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 7 1995
@@ -330,7 +330,7 @@ emx-base|DOS special keys,
# mb <-> blink turn on blinking
# md <-> bold turn on extra bright (bold) mode
# mr <-> rev turn on reverse video mode
-# me <-> sgr0 turn off all atributes
+# me <-> sgr0 turn off all attributes
#
# On my terminal, \E[4m looks dim.
ansi-emx|ANSI.SYS color,
diff --git a/misc/gen-pkgconfig.in b/misc/gen-pkgconfig.in
index 92fcda68b758..0c0506371f73 100644
--- a/misc/gen-pkgconfig.in
+++ b/misc/gen-pkgconfig.in
@@ -1,7 +1,7 @@
#!@SHELL@
-# $Id: gen-pkgconfig.in,v 1.16 2014/01/18 20:21:45 tom Exp $
+# $Id: gen-pkgconfig.in,v 1.42 2019/12/25 23:09:13 tom Exp $
##############################################################################
-# Copyright (c) 2009-2013,2014 Free Software Foundation, Inc. #
+# Copyright (c) 2009-2018,2019 Free 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"), #
@@ -47,79 +47,143 @@ DFT_DEP_SUFFIX=@DFT_DEP_SUFFIX@
TINFO_ARG_SUFFIX=@TINFO_ARG_SUFFIX@
CXX_LIB_SUFFIX=@CXX_LIB_SUFFIX@
+suffix=@PC_MODULE_SUFFIX@
prefix="@prefix@"
exec_prefix="@exec_prefix@"
includedir="@includedir@@includesubdir@"
libdir="@libdir@"
+RPATH_LIST=@RPATH_LIST@
+PRIVATE_LIBS="@PRIVATE_LIBS@"
+
show_prefix='@prefix@'
show_exec_prefix='@exec_prefix@'
show_includedir='@includedir@@includesubdir@'
show_libdir='@libdir@'
-MAIN_LIBRARY="${LIB_NAME}@DFT_ARG_SUFFIX@"
+MAIN_LIBRARY="${LIB_NAME}@USE_ARG_SUFFIX@"
SUB_LIBRARY="${TINFO_ARG_SUFFIX}"
-PANEL_LIBRARY="${PANEL_NAME}@DFT_ARG_SUFFIX@"
-MENU_LIBRARY="${MENU_NAME}@DFT_ARG_SUFFIX@"
-FORM_LIBRARY="${FORM_NAME}@DFT_ARG_SUFFIX@"
-
-if test "$includedir" = "/usr/include" ; then
- CFLAGS=
-else
- CFLAGS="-I\${includedir}"
+PANEL_LIBRARY="${PANEL_NAME}@USE_ARG_SUFFIX@"
+MENU_LIBRARY="${MENU_NAME}@USE_ARG_SUFFIX@"
+FORM_LIBRARY="${FORM_NAME}@USE_ARG_SUFFIX@"
+
+CFLAGS="@PKG_CFLAGS@"
+if [ "$includedir" != "/usr/include" ]; then
+ includetop=`echo "$includedir" | sed -e 's,/include/[^/]*$,/include,'`
+ [ "$includetop" = "/usr/include" ] && includetop="$includedir"
+ CFLAGS="$CFLAGS -I\${includedir}"
+ if [ "x$includetop" != "x$includedir" ]
+ then
+ CFLAGS="$CFLAGS -I${includetop}"
+ fi
fi
-if test "$libdir" = "/usr/lib" ; then
- LDFLAGS=
-else
- LDFLAGS="-L\${libdir}"
+lib_flags=
+for opt in -L$libdir @LDFLAGS@ @EXTRA_LDFLAGS@ @LIBS@
+do
+ case $opt in
+ -l*) # LIBS is handled specially below
+ continue
+ ;;
+ -specs*) # ignore linker specs-files which were used to build library
+ continue
+ ;;
+ -Wl,-z,*) # ignore flags used to manipulate shared image
+ continue
+ ;;
+ -L*)
+ [ -d ${opt##-L} ] || continue
+ case ${opt##-L} in
+ @LD_SEARCHPATH@) # skip standard libdir
+ continue
+ ;;
+ *)
+ found=no
+ for check in $lib_flags
+ do
+ if [ "x$check" = "x$opt" ]
+ then
+ found=yes
+ break
+ fi
+ done
+ [ $found = yes ] && continue
+ ;;
+ esac
+ ;;
+ esac
+ lib_flags="$lib_flags $opt"
+done
+
+# Check if we should specify the tinfo library explicitly so that terminfo
+# functions or curses variables (which also reside in tinfo) can be linked
+# using the -lncurses option.
+NEED_TINFO=no
+if [ "x@TINFO_LIBS@" != "x" ] && \
+ [ "x$TINFO_ARG_SUFFIX" != "x$MAIN_LIBRARY" ]
+then
+ NEED_TINFO=yes
fi
for name in @PC_MODULES_TO_MAKE@
do
name="${name}"
+ LIBS="-l$name"
desc="ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@"
reqs=
- if test $name = $MAIN_LIBRARY ; then
+ if [ $name = $MAIN_LIBRARY ]; then
desc="$desc library"
- elif test $name = $SUB_LIBRARY ; then
+ [ $NEED_TINFO = yes ] && LIBS="$LIBS -l$TINFO_ARG_SUFFIX"
+ [ -n "@LIBS@" ] && LIBS="$LIBS @LIBS@"
+ elif [ $name = $SUB_LIBRARY ]; then
desc="$desc terminal interface library"
elif expr $name : ".*${CXX_NAME}.*" >/dev/null ; then
- reqs="$PANEL_LIBRARY, $MENU_LIBRARY, $FORM_LIBRARY, $MAIN_LIBRARY"
+ reqs="$PANEL_LIBRARY${suffix}, $MENU_LIBRARY${suffix}, $FORM_LIBRARY${suffix}, $MAIN_LIBRARY${suffix}"
desc="$desc add-on library"
else
- reqs="$MAIN_LIBRARY"
+ reqs="$MAIN_LIBRARY${suffix}"
desc="$desc add-on library"
fi
- if test $name != $SUB_LIBRARY && test $SUB_LIBRARY != $MAIN_LIBRARY ; then
- if test $name != $TINFO_NAME ; then
- test -n "$reqs" && reqs="$reqs, "
- reqs="${reqs}${SUB_LIBRARY}"
- fi
+ if [ $name != $SUB_LIBRARY ] && \
+ [ $SUB_LIBRARY != $MAIN_LIBRARY ] && \
+ [ $name != $TINFO_NAME ] && \
+ [ $NEED_TINFO != yes ] ; then
+ [ -n "$reqs" ] && reqs="$reqs, "
+ reqs="${reqs}${SUB_LIBRARY}${suffix}"
fi
- echo "** creating ${name}.pc"
- cat >${name}.pc <<EOF
+ if [ $name = $MAIN_LIBRARY ]
+ then
+ main_libs="$PRIVATE_LIBS"
+ else
+ main_libs=
+ fi
+
+ echo "** creating ${name}${suffix}.pc"
+ cat >${name}${suffix}.pc <<EOF
+# pkg-config file generated by `basename $0`
+# vile:makemode
+
prefix=$show_prefix
exec_prefix=$show_exec_prefix
libdir=$show_libdir
includedir=$show_includedir
+abi_version=@cf_cv_abi_version@
major_version=@NCURSES_MAJOR@
version=@NCURSES_MAJOR@.@NCURSES_MINOR@.@NCURSES_PATCH@
-Name: $name
+Name: ${name}${suffix}
Description: $desc
Version: \${version}
-URL: http://invisible-island.net/ncurses
+URL: https://invisible-island.net/ncurses
Requires.private: $reqs
-Libs: $LDFLAGS -l$name
-Libs.private: @LIBS@
+Libs: $lib_flags $LIBS
+Libs.private: @LIBS@ $main_libs
Cflags: $CFLAGS
EOF
- #pr -f ${name}.pc
done
-# vile:shmode
+# vile:shmode ts=4 sw=4
diff --git a/misc/magic b/misc/magic
new file mode 100644
index 000000000000..d7c600e796ed
--- /dev/null
+++ b/misc/magic
@@ -0,0 +1,90 @@
+# $Id: magic,v 1.2 2018/01/05 01:42:08 tom Exp $
+##############################################################################
+# Copyright (c) 2015-2017,2018 Free 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. #
+##############################################################################
+# for reference, from file 5.30:
+#------------------------------------------------------------------------------
+# @File: terminfo,v 1.7 2016/03/17 21:02:29 christos Exp @
+# terminfo: file(1) magic for terminfo
+#
+# URL: https://invisible-island.net/ncurses/man/term.5.html
+# URL: https://invisible-island.net/ncurses/man/scr_dump.5.html
+#
+# Workaround for Targa image type by Joerg Jenderek
+# GRR: line below too general as it catches also
+# Targa image type 1 with 26 long identification field
+# and HELP.DSK
+0 string \032\001
+# 5th character of terminal name list, but not Targa image pixel size (15 16 24 32)
+>16 ubyte >32
+# namelist, if more than 1 separated by "|" like "st|stterm| simpleterm 0.4.1"
+>>12 regex \^[a-zA-Z0-9][a-zA-Z0-9.][^|]* Compiled terminfo entry "%-s"
+!:mime application/x-terminfo
+# no extension
+#!:ext
+#
+#------------------------------------------------------------------------------
+# The following was added for ncurses6 development:
+#------------------------------------------------------------------------------
+#
+0 string \036\002
+# imitate the legacy compiled-format, to get the entry-name printed
+>16 ubyte >32
+# namelist, if more than 1 separated by "|" like "st|stterm| simpleterm 0.4.1"
+>>12 regex \^[a-zA-Z0-9][a-zA-Z0-9.][^|]* Compiled 32-bit terminfo entry "%-s"
+!:mime application/x-terminfo2
+#
+# While the compiled terminfo uses little-endian format irregardless of
+# platform, SystemV screen dumps do not. They came later, and that detail was
+# overlooked.
+#
+# AIX and HPUX use the SVr4 big-endian format
+# Solaris uses the SVr3 formats (sparc and x86 differ endian-ness)
+0 beshort 0433 SVr2 curses screen image, big-endian
+0 beshort 0434 SVr3 curses screen image, big-endian
+0 beshort 0435 SVr4 curses screen image, big-endian
+#
+0 leshort 0433 SVr2 curses screen image, little-endian
+0 leshort 0434 SVr3 curses screen image, little-endian
+0 leshort 0435 SVr4 curses screen image, little-endian
+#
+# Rather than SVr4, Solaris "xcurses" writes this header:
+0 regex \^MAX=[0-9]+,[0-9]+$
+>1 regex \^BEG=[0-9]+,[0-9]+$
+>2 regex \^SCROLL=[0-9]+,[0-9]+$
+>3 regex \^VMIN=[0-9]+$
+>4 regex \^VTIME=[0-9]+$
+>5 regex \^FLAGS=0x[[:xdigit:]]+$
+>6 regex \^FG=[0-9],[0-9]+$
+>7 regex \^BG=[0-9]+,[0-9]+, Solaris xcurses screen image
+#
+# ncurses5 (and before) did not use a magic number, making screen dumps "data".
+# ncurses6 (2015) uses this format, ignoring byte-order
+0 string \210\210\210\210ncurses ncurses6 screen image
+#
+# PDCurses added this in 2005
+0 string PDC\001 PDCurses screen image
diff --git a/misc/ncurses-config.in b/misc/ncurses-config.in
index f5e6e7ede45d..9028fc5e10c1 100644
--- a/misc/ncurses-config.in
+++ b/misc/ncurses-config.in
@@ -1,7 +1,7 @@
#!@SHELL@
-# $Id: ncurses-config.in,v 1.30 2012/11/11 00:14:28 tom Exp $
+# $Id: ncurses-config.in,v 1.42 2019/12/25 00:54:55 tom Exp $
##############################################################################
-# Copyright (c) 2006-2011,2012 Free Software Foundation, Inc. #
+# Copyright (c) 2006-2018,2019 Free 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"), #
@@ -45,14 +45,16 @@ datarootdir="@datarootdir@"
datadir="@datadir@"
mandir="@mandir@"
-THIS="@LIB_NAME@@DFT_ARG_SUFFIX@"
+THIS="@LIB_NAME@@USE_LIB_SUFFIX@"
TINFO_LIB="@TINFO_ARG_SUFFIX@"
RPATH_LIST="@RPATH_LIST@"
+includesubdir="@includedir@/${THIS}"
+
# Ensure that RPATH_LIST contains only absolute pathnames, if it is nonempty.
# We cannot filter it out within the build-process since the variable is used
# in some special cases of installation using a relative path.
-if test -n "$RPATH_LIST"
+if [ -n "$RPATH_LIST" ]
then
save_IFS="$IFS"
IFS='@PATH_SEPARATOR@'
@@ -63,7 +65,7 @@ then
./*|../*|*/..|*/../*)
;;
*)
- test -n "$filtered" && filtered="${filtered}@PATH_SEPARATOR@"
+ [ -n "$filtered" ] && filtered="${filtered}@PATH_SEPARATOR@"
filtered="${filtered}${item}"
;;
esac
@@ -76,17 +78,64 @@ fi
# with --disable-overwrite, we installed into a subdirectory, but transformed
# the headers to include like this:
# <ncurses@LIB_SUFFIX@/curses.h>
-if test x@WITH_OVERWRITE@ = xno ; then
+if [ x@WITH_OVERWRITE@ = xno ]; then
case $includedir in
- $prefix/include/ncurses@LIB_SUFFIX@)
+ $prefix/include/ncurses@LIB_SUFFIX@@EXTRA_SUFFIX@)
includedir=`echo "$includedir" | sed -e 's,/[^/]*$,,'`
;;
esac
fi
-test $# = 0 && exec @SHELL@ $0 --error
+LIBS="@LIBS@"
+if [ "@TINFO_NAME@" = "@LIB_NAME@" ]; then
+ LIBS="-l${THIS} $LIBS"
+else
+ LIBS="-l${THIS} -l${TINFO_LIB} $LIBS"
+fi
+
+# Ignore -L options which do not correspond to an actual directory, or which
+# are standard library directories (i.e., the linker is supposed to search
+# those directories).
+#
+# There is no portable way to find the list of standard library directories.
+# Require a POSIX shell anyway, to keep this simple.
+lib_flags=
+for opt in -L$libdir @LDFLAGS@ @EXTRA_LDFLAGS@ $LIBS
+do
+ case $opt in
+ -specs*) # ignore linker specs-files which were used to build library
+ continue
+ ;;
+ -Wl,-z,*) # ignore flags used to manipulate shared image
+ continue
+ ;;
+ -L*)
+ [ -d ${opt##-L} ] || continue
+ case ${opt##-L} in
+ @LD_SEARCHPATH@) # skip standard libdir
+ continue
+ ;;
+ *)
+ found=no
+ for check in $lib_flags
+ do
+ if [ "x$check" = "x$opt" ]
+ then
+ found=yes
+ break
+ fi
+ done
+ [ $found = yes ] && continue
+ ;;
+ esac
+ ;;
+ esac
+ lib_flags="$lib_flags $opt"
+done
+
+[ $# = 0 ] && exec @SHELL@ $0 --error
-while test $# -gt 0; do
+while [ $# -gt 0 ]; do
case "$1" in
# basic configuration
--prefix)
@@ -97,11 +146,11 @@ while test $# -gt 0; do
;;
# compile/link
--cflags)
- INCS=
- if test "x@WITH_OVERWRITE@" = xno ; then
- INCS="$INCS -I${includedir}/${THIS}"
+ INCS="@PKG_CFLAGS@"
+ if [ "x@WITH_OVERWRITE@" = xno ]; then
+ INCS="$INCS -I${includesubdir}"
fi
- if test "${includedir}" != /usr/include ; then
+ if [ "${includedir}" != /usr/include ]; then
INCS="$INCS -I${includedir}"
fi
sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO
@@ -109,21 +158,54 @@ while test $# -gt 0; do
ENDECHO
;;
--libs)
- if test "$libdir" = /usr/lib
- then
- LIBDIR=
- else
- LIBDIR=-L$libdir
- fi
- if test @TINFO_NAME@ = @LIB_NAME@ ; then
- sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO
- $LIBDIR @EXTRA_LDFLAGS@ -l${THIS} @LIBS@
-ENDECHO
- else
- sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO
- $LIBDIR @EXTRA_LDFLAGS@ -l${THIS} -l${TINFO_LIB} @LIBS@
-ENDECHO
- fi
+ OPTS=
+ for opt in $lib_flags
+ do
+ [ -n "$OPTS" ] && OPTS="$OPTS "
+ OPTS="${OPTS}${opt}"
+ done
+ printf "%s\n" "$OPTS"
+ ;;
+ --libs-only-L)
+ OPTS=
+ for opt in $lib_flags
+ do
+ case "x$opt" in
+ x-L*)
+ [ -n "$OPTS" ] && OPTS="$OPTS "
+ OPTS="${OPTS}${opt}"
+ ;;
+ esac
+ done
+ printf "%s\n" "$OPTS"
+ ;;
+ --libs-only-l)
+ OPTS=
+ for opt in $lib_flags
+ do
+ case "x$opt" in
+ x-l*)
+ [ -n "$OPTS" ] && OPTS="$OPTS "
+ OPTS="${OPTS}${opt}"
+ ;;
+ esac
+ done
+ printf "%s\n" "$OPTS"
+ ;;
+ --libs-only-other)
+ OPTS=
+ for opt in $lib_flags
+ do
+ case "x$opt" in
+ x-[lL]*)
+ ;;
+ *)
+ [ -n "$OPTS" ] && OPTS="$OPTS "
+ OPTS="${OPTS}${opt}"
+ ;;
+ esac
+ done
+ printf "%s\n" "$OPTS"
;;
# identification
--version)
@@ -143,7 +225,13 @@ ENDECHO
echo "${datadir}"
;;
--includedir)
- echo "${includedir}"
+ INCS=
+ if [ "x@WITH_OVERWRITE@" = xno ]; then
+ INCS="${includesubdir}"
+ elif [ "${includedir}" != /usr/include ]; then
+ INCS="${includedir}"
+ fi
+ echo $INCS
;;
--libdir)
echo "${libdir}"
@@ -163,7 +251,7 @@ ENDECHO
# general info
--help)
cat <<ENDHELP
-Usage: ${THIS}-config [options]
+Usage: `basename $0` [options]
Options:
--prefix echos the package-prefix of ${THIS}
@@ -172,6 +260,10 @@ Options:
--cflags echos the C compiler flags needed to compile with ${THIS}
--libs echos the libraries needed to link with ${THIS}
+ --libs-only-L echos -L linker options (search path) for ${THIS}
+ --libs-only-l echos -l linker options (libraries) for ${THIS}
+ --libs-only-other echos linker options other than -L/-l
+
--version echos the release+patchdate version of ${THIS}
--abi-version echos the ABI version of ${THIS}
--mouse-version echos the mouse-interface version of ${THIS}
diff --git a/misc/run_tic.in b/misc/run_tic.in
index 784f9f42bff0..6d019decd9d5 100644
--- a/misc/run_tic.in
+++ b/misc/run_tic.in
@@ -1,7 +1,7 @@
#!@SHELL@
-# $Id: run_tic.in,v 1.34 2012/10/06 19:00:51 tom Exp $
+# $Id: run_tic.in,v 1.36 2019/06/30 16:29:23 tom Exp $
##############################################################################
-# Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2017,2019 Free 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,7 +36,7 @@
# Assumes:
# The leaf directory names (lib, tabset, terminfo)
#
-echo '** Building terminfo database, please wait...'
+echo "** Building terminfo database, please wait..."
#
# The script is designed to be run from the misc/Makefile as
# make install.data
@@ -50,7 +50,7 @@ echo '** Building terminfo database, please wait...'
: ${srcdir:=@srcdir@}
: ${datarootdir:=@datarootdir@}
: ${datadir:=@datadir@}
-: ${TIC_PATH:=@TIC_PATH@}
+: ${TIC_PATH:=@TIC@}
: ${ticdir:=@TERMINFO@}
: ${source:=@TERMINFO_SRC@}
: ${LN_S:="@LN_S@"}
@@ -84,7 +84,7 @@ then
fi
elif test "$TIC_PATH" = unknown
then
- echo '? no tic program found'
+ echo "? no tic program found"
exit 1
fi
else
@@ -105,11 +105,12 @@ SHLIB_HOST=@host_os@
export SHLIB_HOST
# don't use user's TERMINFO variable
-TERMINFO=${DESTDIR}$ticdir ; export TERMINFO
+unset TERMINFO_DIRS
+TERMINFO="${DESTDIR}$ticdir" ; export TERMINFO
umask 022
# Construct the name of the old (obsolete) pathname, e.g., /usr/lib/terminfo.
-TICDIR=`echo $TERMINFO | sed -e 's%/share/\([^/]*\)$%/lib/\1%'`
+TICDIR=`echo "$TERMINFO" | sed -e 's%/share/\([^/]*\)$%/lib/\1%'`
# Parent directory may not exist, which would confuse the install for hashed
# database. Fix.
@@ -123,7 +124,13 @@ fi
# would generate a lot of confusing error messages if we tried to overwrite it.
# We explicitly remove its contents rather than the directory itself, in case
# the directory is actually a symbolic link.
-( test -d "$TERMINFO" && cd $TERMINFO && rm -fr ? 2>/dev/null )
+if test -d "$TERMINFO"
+then
+ ( cd "$TERMINFO" && rm -fr ? 2>/dev/null )
+elif test -f "$TERMINFO.db"
+then
+ ( rm -f "$TERMINFO.db" 2>/dev/null )
+fi
if test "$ext_funcs" = 1 ; then
cat <<EOF
@@ -137,11 +144,11 @@ Running $TIC_PATH to install $TERMINFO ...
document, and install the terminfo without the -x option.
EOF
-if ( $TIC_PATH -x -s -o $TERMINFO $source )
+if ( $TIC_PATH -x -s -o "$TERMINFO" $source )
then
- echo '** built new '$TERMINFO
+ echo "** built new $TERMINFO"
else
- echo '? tic could not build '$TERMINFO
+ echo "? tic could not build $TERMINFO"
exit 1
fi
else
@@ -156,11 +163,11 @@ Running $TIC_PATH to install $TERMINFO ...
document, and install the terminfo without the -x option.
EOF
-if ( $TIC_PATH -s -o $TERMINFO $source )
+if ( $TIC_PATH -s -o "$TERMINFO" $source )
then
- echo '** built new '$TERMINFO
+ echo "** built new $TERMINFO"
else
- echo '? tic could not build '$TERMINFO
+ echo "? tic could not build $TERMINFO"
exit 1
fi
fi
@@ -170,12 +177,12 @@ fi
# all systems support symbolic links, and those that do provide a variety
# of options for 'test'.
if test "$TICDIR" != "$TERMINFO" ; then
- ( rm -f $TICDIR 2>/dev/null )
- if ( cd $TICDIR 2>/dev/null )
+ ( rm -f "$TICDIR" 2>/dev/null )
+ if ( cd "$TICDIR" 2>/dev/null )
then
- cd $TICDIR
+ cd "$TICDIR"
TICDIR=`pwd`
- if test $TICDIR != $TERMINFO ; then
+ if test "$TICDIR "!= "$TERMINFO "; then
# Well, we tried. Some systems lie to us, so the
# installer will have to double-check.
echo "Verify if $TICDIR and $TERMINFO are the same."
@@ -190,11 +197,11 @@ if test "$TICDIR" != "$TERMINFO" ; then
if test "$RELATIVE" != "$ticdir" ; then
RELATIVE=../`echo $ticdir|sed -e 's%^'$prefix'/%%' -e 's%^/%%'`
fi
- if ( @LN_S@ $RELATIVE $TICDIR )
+ if ( @LN_S@ "$RELATIVE" "$TICDIR" )
then
- echo '** sym-linked '$TICDIR' for compatibility'
+ echo "** sym-linked $TICDIR for compatibility"
else
- echo '** could not sym-link '$TICDIR' for compatibility'
+ echo "** could not sym-link $TICDIR for compatibility"
fi
fi
fi
diff --git a/misc/shlib b/misc/shlib
index a3ed8101d192..f0eb2afcf9cc 100755
--- a/misc/shlib
+++ b/misc/shlib
@@ -1,6 +1,6 @@
#!/bin/sh
##############################################################################
-# Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2005,2007 Free 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.11 2007/01/13 17:09:52 tom Exp $
+# $Id: shlib,v 1.12 2007/01/13 17:09:52 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,
diff --git a/misc/tdlint b/misc/tdlint
index c0e652b6f44f..4a5a05cfb2ff 100755
--- a/misc/tdlint
+++ b/misc/tdlint
@@ -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: tdlint,v 1.5 2000/10/28 20:53:36 tom Exp $
+# $Id: tdlint,v 1.6 2000/10/28 20:53:36 tom Exp $
#
# Lint-script that allows user's own lint libraries, in addition to the ones
# installed in the system.
diff --git a/misc/terminfo.src b/misc/terminfo.src
index 514feca6281c..70047be7f615 100644
--- a/misc/terminfo.src
+++ b/misc/terminfo.src
@@ -6,8 +6,8 @@
# Report bugs and new terminal descriptions to
# bug-ncurses@gnu.org
#
-# $Revision: 1.484 $
-# $Date: 2014/02/22 21:03:37 $
+# $Revision: 1.779 $
+# $Date: 2020/01/19 01:09:38 $
#
# The original header is preserved below for reference. It is noted that there
# is a "newer" version which differs in some cosmetic details (but actually
@@ -34,6 +34,10 @@
# license from xterm.
#
#------------------------------------------------------------------------------
+# https://invisible-island.net/ncurses/ncurses.faq.html#terminfo_copying
+# https://invisible-island.net/personal/copyrights.html#removing_notes
+#------------------------------------------------------------------------------
+#
# Version 10.2.1
# terminfo syntax
#
@@ -300,22 +304,22 @@
dumb|80-column dumb tty,
am,
cols#80,
- bel=^G, cr=^M, cud1=^J, ind=^J,
+ bel=^G, cr=\r, cud1=\n, ind=\n,
unknown|unknown terminal type,
gn, use=dumb,
lpr|printer|line printer,
OTbs, hc, os,
cols#132, lines#66,
- bel=^G, cr=^M, cub1=^H, cud1=^J, ff=^L, ind=^J,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, ff=^L, ind=\n,
glasstty|classic glass tty interpreting ASCII control characters,
OTbs, am,
cols#80,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, ht=^I, kcub1=^H,
- kcud1=^J, nel=^M^J, .kbs=^H,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, ht=^I, kcub1=^H,
+ kcud1=\n, nel=\r\n, .kbs=^H,
vanilla|dumb tty,
OTbs,
- bel=^G, cr=^M, cud1=^J, ind=^J,
+ bel=^G, cr=\r, cud1=\n, ind=\n,
# This is almost the same as "dumb", but with no prespecified width.
# DEL and ^C are hardcoded to act as kill characters.
@@ -325,7 +329,7 @@ vanilla|dumb tty,
# for compatibility with xterm -TD
9term|Plan9 terminal emulator for X,
am,
- OTnl=^J, bel=^G, cud1=^J,
+ OTnl=\n, bel=^G, cud1=\n,
#### ANSI.SYS/ISO 6429/ECMA-48 Capabilities
#
@@ -334,56 +338,63 @@ vanilla|dumb tty,
# ANSI capabilities are broken up into pieces, so that a terminal
# implementing some ANSI subset can use many of them.
-ansi+local1,
+ansi+local1|ANSI normal-mode cursor-keys,
cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A,
-ansi+local,
+ansi+local|ANSI normal-mode parameterized cursor-keys,
cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
cuu=\E[%p1%dA, use=ansi+local1,
-ansi+tabs,
+ansi+tabs|ANSI tab-stops,
cbt=\E[Z, ht=^I, hts=\EH, tbc=\E[3g,
-ansi+inittabs,
+ansi+inittabs|ANSI initial tab-stops,
it#8, use=ansi+tabs,
-ansi+erase,
+ansi+erase|ANSI clear screen/line,
clear=\E[H\E[J, ed=\E[J, el=\E[K,
-ansi+rca,
+ansi+rca|ANSI relative cursor-addressing,
hpa=\E[%p1%{1}%+%dG, vpa=\E[%p1%{1}%+%dd,
-ansi+cup,
+ansi+cup|ANSI absolute cursor-addressing,
cup=\E[%i%p1%d;%p2%dH, home=\E[H,
-ansi+rep,
+ansi+rep|ANSI repeat-character,
rep=%p1%c\E[%p2%{1}%-%db,
-ansi+idl1,
+ansi+idl1|ANSI insert/delete one line,
dl1=\E[M, il1=\E[L,
-ansi+idl,
+ansi+idl|ANSI insert/delete lines,
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,
+ansi+idc1|ANSI insert/delete one character,
+ dch1=\E[P, ich1=\E[@, rmir=\E[4l, smir=\E[4h,
+ansi+idc|ANSI insert/delete characters,
+ dch=\E[%p1%dP, ich=\E[%p1%d@, use=ansi+idc1,
+ansi+arrows|ANSI normal-mode cursor-keys,
kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
khome=\E[H,
-ansi+sgr|ansi graphic renditions,
+ansi+sgr|ANSI graphic renditions,
blink=\E[5m, invis=\E[8m, rev=\E[7m,
sgr=\E[0%?%p3%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
sgr0=\E[0m,
-ansi+sgrso|ansi standout only,
+ansi+sgrso|ANSI standout only,
rmso=\E[m, smso=\E[7m,
-ansi+sgrul|ansi underline only,
+ansi+sgrul|ANSI underline only,
rmul=\E[m, smul=\E[4m,
-ansi+sgrbold|ansi graphic renditions; assuming terminal has bold; not dim,
+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;%;%?%p7%t8;%;m,
+ sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;
+ %;%?%p7%t8;%;m,
use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul,
-ansi+sgrdim|ansi graphic renditions; assuming terminal has dim; not bold,
+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;%;%?%p7%t8;%;m,
+ sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p5%t2;
+ %;%?%p7%t8;%;m,
use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul,
-ansi+csr|ansi scroll-region plus cursor save & restore,
+
+# ECMA-48 does not specify scroll-regions, but most people consider it to be
+# "ANSI" because it is widely-supported. See ecma+index for the standard form.
+ansi+csr|ANSI scroll-region plus cursor save & restore,
csr=\E[%i%p1%d;%p2%dr, rc=\E8, sc=\E7,
# The normal (ANSI) flavor of "media copy" building block asserts that
# characters sent to the printer do not echo on the screen. DEC terminals
# can also be put into autoprinter mode, where each line is sent to the
# printer as you move off that line, e.g., by a carriage return.
-ansi+pp|ansi printer port,
+ansi+pp|ANSI printer port,
mc5i,
mc0=\E[i, mc4=\E[4i, mc5=\E[5i,
dec+pp|DEC autoprinter mode,
@@ -396,7 +407,9 @@ dec+pp|DEC autoprinter mode,
# will work with any Intel console, they all seem to have inherited \E[11m
# from the ANSI.SYS de-facto standard.
klone+acs|alternate character set for ansi.sys displays,
- acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+ acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
+ \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
+ \301w\302x\263y\363z\362{\343|\330}\234~\376,
rmacs=\E[10m, smacs=\E[11m,
# Highlight controls corresponding to the ANSI.SYS standard. Most
@@ -406,14 +419,16 @@ klone+acs|alternate character set for ansi.sys displays,
klone+sgr|attribute control for ansi.sys displays,
blink=\E[5m, bold=\E[1m, rev=\E[7m, rmpch=\E[10m,
rmso=\E[m, rmul=\E[m,
- sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p9%t;11%;m,
+ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6
+ %t;1%;%?%p9%t;11%;m,
sgr0=\E[0;10m, smpch=\E[11m, smso=\E[7m, smul=\E[4m,
use=klone+acs,
# Most Intel boxes do not treat "invis" (invisible) text.
klone+sgr8|attribute control for ansi.sys displays,
invis=\E[8m,
- sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
+ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6
+ %t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
use=klone+sgr,
# Highlight controls corresponding to the ANSI.SYS standard. *All*
@@ -423,14 +438,18 @@ klone+sgr8|attribute control for ansi.sys displays,
klone+sgr-dumb|attribute control for ansi.sys displays (no ESC [ 11 m),
blink=\E[5m, bold=\E[1m, invis=\E[8m, rev=\E[7m, rmso=\E[m,
rmul=\E[m,
- sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m,
+ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6
+ %t;1%;%?%p7%t;8%;%?%p9%t;12%;m,
sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m,
use=klone+acs,
# KOI8-R (RFC1489) acs (alternate character set)
# From: Qing Long <qinglong@Bolizm.ihep.su>, 24 Feb 1996.
klone+koi8acs|alternate character set for ansi.sys displays with KOI8 charset,
- acsc=+\020\,\021-\036.^_0\215`\004a\237f\234g\232h\222i\220j\205k\203l\202m\204n\212o\213p\216q\0r\217s\214t\206u\207v\210w\211x\201y\230z\231{\267|\274}L~\225,
+ acsc=+\020\,\021-\036.^_0\215`\004a\237f\234g\232h\222i
+ \220j\205k\203l\202m\204n\212o\213p\216q\0r\217s\214t
+ \206u\207v\210w\211x\201y\230z\231{\267|\274}L~
+ \225,
rmacs=\E[10m, smacs=\E[11m,
# ANSI.SYS color control. The setab/setaf caps depend on the coincidence
@@ -451,10 +470,21 @@ ecma+color|color control for ECMA-48-compatible terminals,
colors#8, ncv#3, pairs#64,
op=\E[39;49m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+ecma+italics|ECMA-48 italics,
+ ritm=\E[23m, sitm=\E[3m,
+
# Attribute control for ECMA-48-compatible terminals
ecma+sgr|attribute capabilities for true ECMA-48 terminals,
rmso=\E[27m, rmul=\E[24m, use=klone+sgr8,
+ecma+strikeout|ECMA-48 strikeout/crossed-out,
+ rmxx=\E[29m, smxx=\E[9m,
+
+# ECMA-48 does not include the VT100 indexing and scroll-margins. It has its
+# own variation.
+ecma+index|ECMA-48 scroll up/down,
+ indn=\E[%p1%dS, rin=\E[%p1%dT,
+
# For comparison, here are all the capabilities implied by the Intel
# Binary Compatibility Standard (level 2) that fit within terminfo.
# For more detail on this rather pathetic standard, see the comments
@@ -465,9 +495,8 @@ ibcs2|Intel Binary Compatibility Standard prescriptions,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[1A,
dch=\E[%p1%dP, dispc=\E=%p1%dg, ech=\E[%p1%dX,
hpa=\E[%i%p1%dG, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
- il=\E[%p1%dL, indn=\E[%p1%dS, rc=\E7, rin=\E[%p1%dT,
- rmam=\E[?7l, sc=\E7, smam=\E[?7h, tbc=\E[g,
- vpa=\E[%i%p1%dd,
+ il=\E[%p1%dL, rc=\E7, rmam=\E[?7l, sc=\E7, smam=\E[?7h,
+ tbc=\E[g, vpa=\E[%i%p1%dd, use=ecma+index,
#### ANSI/ECMA-48 terminals and terminal emulators
#
@@ -526,15 +555,15 @@ ansi-mtabs|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,
+ansi77|ANSI 3.64 standard 1977 version,
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,
+ bel=^G, clear=\E[;H\E[2J, cr=\r, 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, rc=\E8, ri=\EM,
+ kf2=\EOR, kf4=\EOS, khome=\E[H, nel=\r\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,
@@ -551,10 +580,10 @@ ansi77|ansi 3.64 standard 1977 version,
pcansi-m|pcansi-mono|ibm-pc terminal programs claiming to be ansi (mono mode),
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,
+ bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=\r, cub1=\E[D,
cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
- hts=\EH, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+ hts=\EH, il1=\E[L, ind=\n, kbs=^H, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, tbc=\E[3g,
use=klone+sgr-dumb,
pcansi-25-m|pcansi25m|ibm-pc terminal programs with 25 lines (mono mode),
@@ -582,12 +611,11 @@ ansi-m|ansi-mono|ANSI X3.64-1979 terminal with ANSI.SYS compatible attributes,
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[%i%p1%dG, ht=\E[I,
- ich=\E[%p1%d@, il=\E[%p1%dL, indn=\E[%p1%dS, kbs=^H,
- kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kich1=\E[L, mc4=\E[4i, mc5=\E[5i, nel=\r\E[S,
- rep=%p1%c\E[%p2%{1}%-%db, rin=\E[%p1%dT, s0ds=\E(B,
- s1ds=\E)B, s2ds=\E*B, s3ds=\E+B, tbc=\E[3g,
- vpa=\E[%i%p1%dd, use=pcansi-m,
+ ich=\E[%p1%d@, il=\E[%p1%dL, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kich1=\E[L, mc4=\E[4i,
+ mc5=\E[5i, nel=\r\E[S, rep=%p1%c\E[%p2%{1}%-%db,
+ s0ds=\E(B, s1ds=\E)B, s2ds=\E*B, s3ds=\E+B, tbc=\E[3g,
+ vpa=\E[%i%p1%dd, use=ecma+index, use=pcansi-m,
ansi+enq|ncurses extension for ANSI ENQ,
u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?%[;0123456789]c,
@@ -606,7 +634,7 @@ ansi|ansi/pc-term compatible with color,
# 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,
+ansi-generic|ansiterm|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,
@@ -626,7 +654,7 @@ ansi.sys-old|ANSI.SYS under PC-DOS 2.1,
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,
+ is2=\E[m\E[?7h, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K,
khome=^^, pfkey=\E[0;%p1%{58}%+%d;%p2"%s"p, 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+sgr8,
@@ -664,7 +692,9 @@ ansi.sys|ANSI.SYS 3.1 and later versions,
kf42=\0m, kf43=\0n, kf44=\0o, kf45=\0p, kf46=\0q,
kf47=\0\213, kf48=\0\214, kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B,
kf9=\0C, khome=\0G, kich1=\0R, knp=\0Q, kpp=\0I,
- pfkey=\E[0;%?%p1%{11}%<%t%'\:'%e%p1%{13}%<%t%'z'%e%p1%{23}%<%t%'G'%e%p1%{25}%<%t%'p'%e%p1%'#'%<%t%'E'%e%p1%'%'%<%t%'f'%e%p1%'/'%<%t%'C'%e%{92}%;%p1%+%d;%p2"%s"p,
+ pfkey=\E[0;%?%p1%{11}%<%t%'\:'%e%p1%{13}%<%t%'z'%e%p1%{23}%<
+ %t%'G'%e%p1%{25}%<%t%'p'%e%p1%'#'%<%t%'E'%e%p1%'%'%<%t
+ %'f'%e%p1%'/'%<%t%'C'%e%{92}%;%p1%+%d;%p2"%s"p,
use=ansi.sys-old,
#
@@ -681,9 +711,12 @@ ansi.sys|ANSI.SYS 3.1 and later versions,
# Consequently the End keypad key could not be set (it is relatively safe and
# actually useful because it sends ^@ O, which beeps and opens a line above).
ansi.sysk|ansisysk|PC-DOS 3.1 ANSI.SYS with keypad redefined for vi,
- is2=U2 PC-DOS 3.1 ANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p,
- rmkx=\E[;71;0;71p\E[;72;0;72p\E[;73;0;73p\E[;77;0;77p\E[;80;0;80p\E[;81;0;81p\E[;82;0;82p\E[;83;0;83p,
- smkx=\E[;71;30p\E[;72;11p\E[;73;27;21p\E[;77;12p\E[;80;10p\E[;81;27;4p\E[;82;27;27;105p\E[;83;127p,
+ is2=U2\sPC-DOS\s3.1\sANSI.SYS\swith\skeypad\sredefined\sfor
+ \svi\s9-29-86\n\E[;75;8p,
+ rmkx=\E[;71;0;71p\E[;72;0;72p\E[;73;0;73p\E[;77;0;77p\E[;80;
+ 0;80p\E[;81;0;81p\E[;82;0;82p\E[;83;0;83p,
+ smkx=\E[;71;30p\E[;72;11p\E[;73;27;21p\E[;77;12p\E[;80;10p
+ \E[;81;27;4p\E[;82;27;27;105p\E[;83;127p,
use=ansi.sys,
#
# Adds ins/del line/character, hence vi reverse scrolls/inserts/deletes nicer.
@@ -695,7 +728,8 @@ nansi.sys|nansisys|PC-DOS Public Domain NANSI.SYS,
# See ansi.sysk and nansi.sys above.
nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi,
dch1=\E[1P, dl1=\E[1M, ich1=\E[1@, il1=\E[1L,
- is2=U4 PC-DOS Public Domain NANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p,
+ is2=U4\sPC-DOS\sPublic\sDomain\sNANSI.SYS\swith\skeypad
+ \sredefined\sfor\svi\s9-29-86\n\E[;75;8p,
use=ansi.sysk,
#### Atari ST terminals
@@ -704,12 +738,16 @@ nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi
#
tw52|tw52-color|Toswin window manager with color,
bce,
- colors#16, pairs#256,
+ colors#16, pairs#0x100,
oc=\Eb?\Ec0, op=\Eb?\Ec0,
- setab=\Ec%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1%{48}%+%c,
- setaf=\Eb%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1%{48}%+%c,
- setb=\Ec%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1%{48}%+%c,
- setf=\Eb%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1%{48}%+%c,
+ setab=\Ec%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1
+ %{48}%+%c,
+ setaf=\Eb%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1
+ %{48}%+%c,
+ setb=\Ec%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1
+ %{48}%+%c,
+ setf=\Eb%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1
+ %{48}%+%c,
use=tw52-m,
tw52-m|Toswin window manager monochrome,
ul,
@@ -722,39 +760,56 @@ tt52|Atari TT medium and high resolution,
lines#30, use=at-color,
st52-color|at-color|atari-color|atari_st-color|Atari ST with color,
bce,
- colors#16, pairs#256,
+ colors#16, pairs#0x100,
is2=\Ev\Eq\Ee\Eb1\Ec0, rs2=\Ev\Eq\Ee\Eb1\Ec0,
- setab=\Ec%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}%=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1%{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:%e%p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=%t6%e?,
- setaf=\Eb%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}%=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1%{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:%e%p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=%t6%e?,
- setb=\Ec%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}%=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1%{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:%e%p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=%t6%e?,
- setf=\Eb%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}%=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1%{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:%e%p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=%t6%e?,
+ setab=\Ec%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}
+ %=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1
+ %{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:
+ %e%p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1
+ %{14}%=%t6%e?,
+ setaf=\Eb%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}
+ %=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1
+ %{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:
+ %e%p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1
+ %{14}%=%t6%e?,
+ setb=\Ec%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}
+ %=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1
+ %{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:%e
+ %p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=
+ %t6%e?,
+ setf=\Eb%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}
+ %=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1
+ %{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:%e
+ %p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=
+ %t6%e?,
use=st52,
st52|st52-m|at|at-m|atari|atari-m|atari_st|atarist-m|Atari ST,
am, eo, mir, npc,
cols#80, it#8, lines#24,
- bel=^G, civis=\Ef, clear=\EE, cnorm=\Ee, cr=^M, cub1=\ED,
+ bel=^G, civis=\Ef, clear=\EE, cnorm=\Ee, cr=\r, cub1=\ED,
cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
cuu1=\EA, dl1=\EM, ed=\EJ, el=\EK, el1=\Eo, home=\EH, ht=^I,
- il1=\EL, ind=^J, is2=\Ev\Eq\Ee, kLFT=\Ed, kRIT=\Ec, kbs=^H,
- kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\177,
+ il1=\EL, ind=\n, is2=\Ev\Eq\Ee, kLFT=\Ed, kRIT=\Ec, kbs=^H,
+ kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=^?,
kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq, kf13=\Er, kf14=\Es,
kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, kf19=\Ex, kf2=\EQ,
kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET, kf6=\EU, kf7=\EV, kf8=\EW,
kf9=\EX, khlp=\EH, khome=\EE, kich1=\EI, knp=\Eb, kpp=\Ea,
- kund=\EK, nel=^M^J, rc=\Ek, rev=\Ep, ri=\EI, rmso=\Eq,
+ kund=\EK, nel=\r\n, rc=\Ek, rev=\Ep, ri=\EI, rmso=\Eq,
rs2=\Ev\Eq\Ee, sc=\Ej, sgr0=\Eq, smso=\Ep,
tw100|toswin vt100 window mgr,
eo, mir, msgr, xon,
colors#8, cols#80, it#8, lines#24, pairs#64, vt#3,
- acsc=++\,\,--..00II``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ acsc=++\,\,--..00II``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxy
+ yzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\Ef,
- clear=\E[2J\E[H, cnorm=\Ee, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+ clear=\E[2J\E[H, cnorm=\Ee, cr=\r, csr=\E[%i%p1%d;%p2%dr,
cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\EB,
cuf=\E[%p1%dC, cuf1=\EC, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\EA, dch1=\Ea, dim=\E[2m, dl=\E[%p1%dM,
dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, ht=^I,
- hts=\EH, ich=\E[%p1%d@, il1=\EL, ind=^J, is2=\E<\E)0, kbs=^H,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\177,
+ hts=\EH, ich=\E[%p1%d@, il1=\EL, ind=\n, is2=\E<\E)0, kbs=^H,
+ kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=^?,
kf1=\EOP, kf10=\EOY, kf11=\Ep, kf12=\Eq, kf13=\Er, kf14=\Es,
kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, kf19=\Ex, kf2=\EOQ,
kf20=\Ey, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV,
@@ -765,8 +820,12 @@ tw100|toswin vt100 window mgr,
rmso=\E[m, rmul=\E[m,
rs1=\E<\E[20l\E[?3;6;9l\E[r\Eq\E(B\017\E)0\E>,
sc=\E7,
- setb=\E[4%p1%'0'%+%Pa%?%ga%'0'%=%t0%e%ga%'1'%=%t4%e%ga%'2'%=%t2%e%ga%'3'%=%t6%e%ga%'4'%=%t1%e%ga%'5'%=%t5%e%ga%'6'%=%t3%e7%;m,
- setf=\E[3%p1%'0'%+%Pa%?%ga%'0'%=%t0%e%ga%'1'%=%t4%e%ga%'2'%=%t2%e%ga%'3'%=%t6%e%ga%'4'%=%t1%e%ga%'5'%=%t5%e%ga%'6'%=%t3%e7%;m,
+ setb=\E[4%p1%'0'%+%Pa%?%ga%'0'%=%t0%e%ga%'1'%=%t4%e%ga%'2'%=
+ %t2%e%ga%'3'%=%t6%e%ga%'4'%=%t1%e%ga%'5'%=%t5%e%ga%'6'
+ %=%t3%e7%;m,
+ setf=\E[3%p1%'0'%+%Pa%?%ga%'0'%=%t0%e%ga%'1'%=%t4%e%ga%'2'%=
+ %t2%e%ga%'3'%=%t6%e%ga%'4'%=%t1%e%ga%'5'%=%t5%e%ga%'6'
+ %=%t3%e7%;m,
sgr0=\E[m, smacs=^N, smcup=\E[?7l, smir=\Eh,
smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
# The entries for stv52 and stv52pc probably need a revision.
@@ -774,11 +833,11 @@ stv52|MiNT virtual console,
am, msgr,
cols#80, it#8, lines#30,
bel=^G, blink=\Er, bold=\EyA, civis=\Ef, clear=\EE,
- cnorm=\E. \Ee, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC,
+ cnorm=\E. \Ee, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E.",
dim=\Em, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL,
ind=\n$<2*/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
- kcuu1=\EA, kdch1=\177, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq,
+ kcuu1=\EA, kdch1=^?, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq,
kf13=\Er, kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew,
kf19=\Ex, kf2=\EQ, kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET,
kf6=\EU, kf7=\EV, kf8=\EW, kf9=\EX, khlp=\EH, khome=\EE,
@@ -789,13 +848,15 @@ stv52|MiNT virtual console,
stv52pc|MiNT virtual console with PC charset,
am, msgr,
cols#80, it#8, lines#30,
- acsc=+\257\,\256-\^.v0\333I\374`\177a\260f\370g\361h\261j\331k\277l\332m\300n\305o\377p-q\304r-s_t+u+v+w+x\263y\363z\362{\343|\366}\234~\371,
+ acsc=+\257\,\256-\^.v0\333I\374`\177a\260f\370g\361h\261j
+ \331k\277l\332m\300n\305o\377p-q\304r-s_t+u+v+w+x\263y
+ \363z\362{\343|\366}\234~\371,
bel=^G, blink=\Er, bold=\EyA, civis=\Ef, clear=\EE,
- cnorm=\E. \Ee, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC,
+ cnorm=\E. \Ee, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E.",
dim=\Em, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL,
ind=\n$<2*/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
- kcuu1=\EA, kdch1=\177, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq,
+ kcuu1=\EA, kdch1=^?, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq,
kf13=\Er, kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew,
kf19=\Ex, kf2=\EQ, kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET,
kf6=\EU, kf7=\EV, kf8=\EW, kf9=\EX, khlp=\EH, khome=\EE,
@@ -816,8 +877,7 @@ atari-old|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
@@ -826,721 +886,37 @@ uniterm|uniterm49|UniTerm VT220 emulator with 49 lines,
st52-old|Atari ST with VT52 emulation,
am, km,
cols#80, lines#25,
- bel=^G, civis=\Ef, clear=\EH\EJ, cnorm=\Ee, cr=^M, cub1=\ED,
+ bel=^G, civis=\Ef, clear=\EH\EJ, cnorm=\Ee, cr=\r, cub1=\ED,
cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
cuu1=\EA, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL,
- ind=^J, ka1=\E#7, ka3=\E#5, kb2=\E#9, kbs=^H, kc1=\E#1,
+ ind=\n, ka1=\E#7, ka3=\E#5, kb2=\E#9, kbs=^H, kc1=\E#1,
kc3=\E#3, kclr=\E#7, kcub1=\E#K, kcud1=\E#P, kcuf1=\E#M,
kcuu1=\E#H, kf0=\E#D, kf1=\E#;, kf2=\E#<, kf3=\E#=, kf4=\E#>,
kf5=\E#?, kf6=\E#@, kf7=\E#A, kf8=\E#B, kf9=\E#C, khome=\E#G,
- kil1=\E#R, kind=\E#2, kri=\E#8, lf0=f10, nel=^M^J, rc=\Ek,
+ kil1=\E#R, kind=\E#2, kri=\E#8, lf0=f10, nel=\r\n, rc=\Ek,
ri=\EI, rmcup=, rmso=\Eq, rs1=\Ez_\Eb@\EcA, sc=\Ej, sgr0=\Eq,
smcup=\Ee, smso=\Ep,
-#### Apple Terminal.app
-
-# nsterm*|Apple_Terminal - AppKit Terminal.app
-#
-# Terminal.app is a Terminal emulator bundled with NeXT's NeXTStep and
-# OPENSTEP/Mach operating systems, and with Apple's Rhapsody, Mac OS X
-# Server and Mac OS X operating systems. There is also a
-# "terminal.app" in GNUStep, but I believe it to be an unrelated
-# codebase and I have not attempted to describe it here.
-#
-# For NeXTStep, OPENSTEP/Mach, Rhapsody and Mac OS X Server 1.0, you
-# are pretty much on your own. Use "nsterm-7-m" and hope for the best.
-# You might also try "nsterm-7" and "nsterm-old" if you suspect your
-# version supports color.
-#
-# To determine the version of Terminal.app you're using by running:
-#
-# echo "$TERM_PROGRAM" "$TERM_PROGRAM_VERSION"
-#
-# For Apple_Terminal v309+, use "nsterm-256color" (or "nsterm-bce")
-#
-# For Apple_Terminal v200+, use "nsterm-16color" (a.k.a. "nsterm")
-#
-# For Apple_Terminal v71+/v100+, use "nsterm-bce".
-#
-# For Apple_Terminal v51+, use "nsterm-7-c" or "nsterm-7-c-s".
-#
-# For Apple_Terminal v41+, use "nsterm-old", or "nsterm-s".
-#
-# For all earlier versions (Apple_Terminal), try "nsterm-7-m"
-# (monochrome) or "nsterm-7" (color); "nsterm-7-m-s" and "nsterm-7-s"
-# might work too, but really you're on your own here since these
-# systems are very obsolete and I can't test them. I do welcome
-# patches, though :).
-
-# Other Terminals:
-#
-# For GNUstep_Terminal, you're probably best off using "linux" or
-# writing your own terminfo.
-
-# For MacTelnet, you're on your own. It's a different codebase, and
-# seems to be somewhere between "vt102", "ncsa" and "xterm-color".
-
-# For iTerm.app, see "iterm".
-
-#
-# The AppKit Terminal.app descriptions all have names beginning with
-# "nsterm". Note that the statusline (-s) versions use the window
-# titlebar as a phony status line, and may produce warnings during
-# compilation as a result ("tsl uses 0 parameters, expected 1".)
-# Ignore these warnings, or even ignore these entries entirely. Apps
-# which need to position the cursor or do other fancy stuff inside the
-# status line won't work with these entries. They're primarily useful
-# for programs like Pine which provide simple notifications in the
-# status line. Please note that non-ASCII characters don't work right
-# in the status line, since Terminal.app incorrectly interprets their
-# Unicode codepoints as MacRoman codepoints (in earlier Mac OS X
-# versions) or only accepts status lines consisting entirely of
-# characters from the first 256 Unicode positions (including C1 but
-# not C0 or DEL.)
-#
-# The Mythology* of AppKit Terminal.app:
-#
-# In the days of NeXTSTep 0.x and 1.x there were two incompatible
-# bundled terminal emulators, Shell and Terminal. Scott Hess wrote a
-# shareware replacement for Terminal called "Stuart" which NeXT bought
-# and used as the basis for the Terminal.app in NeXTstep 2+,
-# OPENSTEP/Mach, Apple Rhapsody, Mac OS X Server 1.0, and Mac OS X. I
-# don't know the TERM_PROGRAM and TERM_PROGRAM_VERSION settings or
-# capabilities for the early versions, but I believe that the
-# TERM_PROGRAM_VERSION may have been reset at some point.
-#
-# The early versions were tailored to the NeXT character set. Sometime
-# after the Apple aquisition the encoding was swiched to MacRoman
-# (initally with serious altcharset bugs due to incomplete conversion
-# of the old NeXT code,) and then later to UTF-8. Alos sometime during
-# or just prior to the early days of Mac OS X, the Terminal grew ANSI
-# 8-color support (initially buggy when combined with attributes, but
-# that was later fixed.) More recently, around Mac OS X version 10.3
-# or so (Terminal.app v100+) xterm-like 16-color support was added. In
-# some versions (for instance 133-1 which shipped with Mac OS X
-# version 10.4) this suffered from the <bce> bug, but that seems to
-# have been fixed in Mac OS X version 10.5 (Terminal.app v240.2+).
-#
-# In the early days of Mac OS X the terminal was fairly buggy and
-# would routinely crash under load. Many of these bugs seem to have
-# been fixed around Mac OS X version 10.3 (Terminal.app v100+) but
-# some may still remain. This change seems to correspond to
-# Terminal.app reporting "xterm-color" as $TERM rather than "vt100" as
-# it did previously.
-#
-# * This may correspond with what actually happened, but I don't
-# know. It is based on guesswork, hearsay, private correspondence,
-# my faulty memory, and the following online sources and references:
-#
-# [1] "Three Scotts and a Duane" by Simson L. Garfinkel
-# http://www.nextcomputers.org/NeXTfiles/Articles/NeXTWORLD/93.8/93.8.Dec.Community1.html
-#
-# [2] NeXTSTEP entry from Wikipedia, the free encyclopedia
-# https://secure.wikimedia.org/wikipedia/en/wiki/Nextstep
-#
-# * Renamed the AppKit Terminal.app entry from "Apple_Terminal" to
-# "nsterm" to comply with the name length and case conventions and
-# limitations of various software packages [notably Solaris terminfo
-# and UNIX.] A single Apple_Terminal alias is retained for
-# backwards-compatbility.
-#
-# * Added function key support (F1-F4). These only work in Terminal.app
-# version 51, hopefully the capabilities won't cause problems for people
-# using version 41.
-#
-# * Added "full color" (-c) entries which support the 16-color mode in
-# version 51.
-#
-# * By default, version 51 uses UTF-8 encoding with broken altcharset
-# support, so "ASCII" (-7) entries without altcharset support were
-# added.
-
-# nsterm - AppKit Terminal.app
-#
-# Apple's Mac OS X includes a Terminal.app derived from the old NeXT
-# Terminal.app. It is a partial VT100 emulation with some xterm-like
-# extensions. This terminfo was written to describe versions 41
-# (shipped with Mac OS X version 10.0) and 51 (shipped with Mac OS X
-# version 10.1) of Terminal.app.
-#
-# Terminal.app runs under the Mac OS X Quartz windowing system (and
-# other AppKit-supported windowing systems.) On the Mac OS X machine I
-# use, the executable for Terminal.app is:
-# /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal
-#
-# If you're looking for a description of the full-screen system
-# console which runs under Apple's Darwin operating system on PowerPC
-# platforms, see the "xnuppc" entry instead.
-#
-# There were no function keys in version 41. In version 51, there are
-# four working function keys (F1, F2, F3 and F4.) The function keys
-# are included in all of these entries.
-#
-# It does not support mouse pointer position reporting. Under some
-# circumstances the cursor can be positioned using option-click; this
-# works by comparing the cursor position and the selected position,
-# and simulating enough cursor-key presses to move the cursor to the
-# selected position. This technique fails in all but the simplest
-# applications.
-#
-# It provides partial ANSI color support (background colors interacted
-# badly with bold in version 41, though, as reflected in :ncv:.) The
-# monochrome (-m) entries are useful if you've disabled color support
-# or use a monochrome monitor. The full color (-c) entries are useful
-# in version 51, which doesn't exhibit the background color bug. They
-# also enable an xterm-compatible 16-color mode.
-#
-# The configurable titlebar is set using xterm-compatible sequences;
-# it is used as a status bar in the statusline (-s) entries. Its width
-# depends on font sizes and window sizes, but 50 characters seems to
-# be the default for an 80x24 window.
-#
-# The MacRoman character encoding is used for some of the alternate
-# characters in the "MacRoman" entries; the "ASCII" (-7) entries
-# disable alternate character set support entirely, and the "VT100"
-# (-acs) entries rely instead on Terminal.app's own buggy VT100
-# graphics emulation, which seems to think the character encoding is
-# the old NeXT charset instead of MacRoman. The "ASCII" (-7) entries
-# are useful in Terminal.app version 51, which supports UTF-8 and
-# other ASCII-compatible character encodings but does not correctly
-# implement VT100 graphics; once VT100 graphics are correctly
-# implemented in Terminal.app, the "VT100" (-acs) entries should be
-# usable in any ASCII-compatible character encoding [except perhaps
-# in UTF-8, where some experts argue for disallowing alternate
-# characters entirely.]
-#
-# Terminal.app reports "vt100" as the terminal type, but exports
-# several environment variables which may aid detection in a shell
-# profile (i.e. .profile or .login):
-#
-# TERM=vt100
-# TERM_PROGRAM=Apple_Terminal
-# TERM_PROGRAM_VERSION=41 # in Terminal.app version 41
-# TERM_PROGRAM_VERSION=51 # in Terminal.app version 51
-#
-# For example, the following Bourne shell script would detect the
-# correct terminal type:
-#
-# if [ :"$TERM" = :"vt100" -a :"$TERM_PROGRAM" = :"Apple_Terminal" ]
-# then
-# export TERM
-# if [ :"$TERM_PROGRAM_VERSION" = :41 ]
-# then
-# TERM="nsterm-old"
-# else
-# TERM="nsterm-c-7"
-# fi
-# fi
-#
-# In a C shell derivative, this would be accomplished by:
-#
-# if ( $?TERM && $?TERM_PROGRAM && $?TERM_PROGRAM_VERSION) then
-# if ( :"$TERM" == :"vt100" && :"$TERM_PROGRAM" == :"Apple_Terminal" ) then
-# if ( :"$TERM_PROGRAM_VERSION" == :41 ) then
-# setenv TERM "nsterm-old"
-# else
-# setenv TERM "nsterm-c-7"
-# endif
-# endif
-# endif
-
-# The '+' entries are building blocks
-nsterm+7|AppKit Terminal.app v41+ basic capabilities w/ASCII charset,
- am, bw, msgr, xenl, xon,
- cols#80, it#8, lines#24,
- 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,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
- home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J,
- invis=\E[8m, kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
- kcuu1=\EOA, kent=\EOM, rc=\E8, rev=\E[7m, ri=\EM,
- rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
- rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
- sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
- smul=\E[4m, tbc=\E[3g, use=vt100+enq, use=vt100+pfkeys,
-
-nsterm+acs|AppKit Terminal.app v41+ basic capabilities w/VT100 alternate-charset,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- enacs=\E(B\E)0, rmacs=^O,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
- sgr0=\E[m\017, smacs=^N, use=nsterm+7,
-
-nsterm+mac|AppKit Terminal.app v41+ basic capabilities w/MacRoman alternate-charset,
- acsc=+\335\,\334-\366.\3770#`\327a\:f\241g\261h#i\360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{\271|\255}\243~\245,
- enacs=\E(B\E)0, rmacs=^O,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
- sgr0=\E[m\017, smacs=^N, use=nsterm+7,
-
-# compare with xterm+sl-twm
-nsterm+s|AppKit Terminal.app v41+ status-line (window titlebar) support,
- wsl#50, use=xterm+sl-twm,
-
-nsterm+c|AppKit Terminal.app v51+ full color support (including 16 colors),
- op=\E[0m, use=ibm+16color,
-
-nsterm+c41|AppKit Terminal.app v41 color support,
- colors#8, ncv#37, pairs#64,
- op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
-
-# These are different combinations of the building blocks
-
-# ASCII charset (-7)
-nsterm-m-7|nsterm-7-m|AppKit Terminal.app v41+ w/ASCII charset (monochrome),
- use=nsterm+7,
-
-nsterm-m-s-7|nsterm-7-m-s|AppKit Terminal.app v41+ w/ASCII charset (monochrome w/statusline),
- use=nsterm+s, use=nsterm+7,
-
-nsterm-7|AppKit Terminal.app v41+ w/ASCII charset (color),
- use=nsterm+c41, use=nsterm+7,
-
-nsterm-7-c|nsterm-c-7|AppKit Terminal.app v51+ w/ASCII charset (full color),
- use=nsterm+c, use=nsterm+7,
-
-nsterm-s-7|nsterm-7-s|AppKit Terminal.app v41+ w/ASCII charset (color w/statusline),
- use=nsterm+s, use=nsterm+c41, use=nsterm+7,
-
-nsterm-c-s-7|nsterm-7-c-s|AppKit Terminal.app v51+ w/ASCII charset (full color w/statusline),
- use=nsterm+s, use=nsterm+c, use=nsterm+7,
-
-# VT100 alternate-charset (-acs)
-nsterm-m-acs|nsterm-acs-m|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome),
- use=nsterm+acs,
-
-nsterm-m-s-acs|nsterm-acs-m-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome w/statusline),
- use=nsterm+s, use=nsterm+acs,
-
-nsterm-acs|AppKit Terminal.app v41+ w/VT100 alternate-charset (color),
- use=nsterm+c41, use=nsterm+acs,
-
-nsterm-c-acs|nsterm-acs-c|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color),
- use=nsterm+c, use=nsterm+acs,
-
-nsterm-s-acs|nsterm-acs-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (color w/statusline),
- use=nsterm+s, use=nsterm+c41, use=nsterm+acs,
-
-nsterm-c-s-acs|nsterm-acs-c-s|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color w/statusline),
- use=nsterm+s, use=nsterm+c, use=nsterm+acs,
-
-# MacRoman charset
-nsterm-m|AppKit Terminal.app v41+ w/MacRoman charset (monochrome),
- use=nsterm+mac,
-
-nsterm-m-s|AppKit Terminal.app v41+ w/MacRoman charset (monochrome w/statusline),
- use=nsterm+s, use=nsterm+mac,
-
-nsterm-old|AppKit Terminal.app v41+ w/MacRoman charset (color),
- use=nsterm+c41, use=nsterm+mac,
-
-nsterm-c|AppKit Terminal.app v51+ w/MacRoman charset (full color),
- use=nsterm+c, use=nsterm+mac,
-
-nsterm-s|AppKit Terminal.app v41+ w/MacRoman charset (color w/statusline),
- use=nsterm+s, use=nsterm+c41, use=nsterm+mac,
-
-nsterm-c-s|AppKit Terminal.app v51+ w/MacRoman charset (full color w/statusline),
- use=nsterm+s, use=nsterm+c, use=nsterm+mac,
-
-# In Mac OS X version 10.5 the format of the preferences has changed
-# and a new, more complex technique is needed, e.g.,
-#
-# python -c 'import sys,objc;NSUserDefaults=objc.lookUpClass(
-# "NSUserDefaults");ud=NSUserDefaults.alloc();
-# ud.init();prefs=ud.persistentDomainForName_(
-# "com.apple.Terminal");prefs["Window Settings"][
-# prefs["Default Window Settings"]]["TerminalType"
-# ]=sys.argv[1];ud.setPersistentDomain_forName_(prefs,
-# "com.apple.Terminal")' nsterm-16color
-#
-# and it is still not settable from the preferences dialog. This is
-# tracked under rdar://problem/7365108 and rdar://problem/7365134
-# in Apple's bug reporter.
-#
-# In OS X 10.7 (Leopard) the TERM which can be set in the preferences dialog
-# defaults to xterm-color. Alternative selections are ansi, dtterm, rxvt,
-# vt52, vt100, vt102 and xterm.
-nsterm-16color|AppKit Terminal.app v240.2+ with Mac OS X version 10.5,
- bw@, mir, npc,
- civis=\E[?25l, cnorm=\E[?25h, dch=\E[%p1%dP, dch1=\E[P,
- flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG,
- ich=\E[%p1%d@, ich1=\E[@, kdch1=\E[3~, kend=\E[F,
- 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[22~, kf19=\E[33~, kf20=\E[34~, kf5=\E[15~,
- kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H,
- knp=\E[6~, kpp=\E[5~, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
- smcup=\E7\E[?47h, smir=\E[4h, vpa=\E[%i%p1%dd,
- kLFT5=\E[5D, kRIT5=\E[5C, use=nsterm-c-s-acs,
-
-# The versions of Terminal.app in Mac OS X version 10.3.x seem to have
-# the background color erase feature. The newer version 240.2 in Mac OS X
-# version 10.5 does not.
-#
-# This entry is based on newsgroup comments by Alain Bench, Christian Ebert,
-# and D P Schreber comparing to nsterm-c-s-acs.
-#
-# In Mac OS X version 10.4 and earlier, D P Schreber notes that $TERM
-# can be set in Terminal.app, e.g.,
-#
-# defaults write com.apple.Terminal TermCapString nsterm-bce
-#
-# and that it is not set in Terminal's preferences dialog.
-#
-# Modified for OS X 10.8, omitting bw based on testing with tack -TD
-#
-# Notes:
-# * The terminal description matches the default settings.
-# * The keyboard is configurable via a dialog.
-# * By default khome, kend, knext and kprev are honored only with a
-# shift-modifier.
-# * There are bindings for control left/right arrow (but not up/down).
-# Added those to nsterm-16color, which is the version used for OS X 10.6
-# * "Allow VT100 application keypage mode" is by default disabled.
-# There is no way to press keypad-comma unless application mode is enabled
-# and used.
-# * 132-column mode stopped working during vttest's tests. Consider it broken.
-# * CHT, REP, SU, SD are buggy.
-# * ECH works (also in Leopard), but is not used here for compatibility.
-# * The terminal preferences dialog replaces xterm-color by xterm-16color and
-# xterm-256color. However, it adds "nsterm", so it is possible to use the
-# nsterm entry from this file to override the MacPorts (20110404) or
-# system (20081102) copy of this file.
-# + In OS X 10.8 (Mountain Lion) the TERM which can be set in the preferences
-# dialog defaults to xterm-256color. Alternative selections are ansi,
-# dtterm, rxvt, vt52, vt100, vt102, xterm and xterm-16color. However,
-# the menu says "Declare terminal as" without promising to actually emulate
-# the corresponding terminals. Indeed, changing TERM does not affect the
-# emulation itself. This means that
-# + the function-keys do not match for dtterm for kf1-kf4 as well as
-# khome/kend
-# + the color model is the same for each setting of TERM (does not match
-# ansi or dtterm).
-# + the shift/control/meta key modifiers from rxvt and xterm variants are not
-# recognised except for a few special cases, i.e., kRIT5 and kLFT5.
-# + the vt52 emulation does not give a usable shell because screen-clearing
-# does not work as expected.
-# + selecting "xterm" or "xterm-16color" sets TERM to "xterm-256color".
-nsterm-bce|AppKit Terminal.app v71+/v100.1.8+ with Mac OS X version 10.3/10.4 (bce),
- bce, use=nsterm-16color,
-
-# This is tested with OS X 10.8 (Mountain Lion), 2012/08/11
-# TERM_PROGRAM_VERSION=309
-# Earlier reports state that these differences also apply to OS X 10.7 (Lion),
-# TERM_PROGRAM_VERSION=303
-nsterm-256color|Terminal.app in OS X 10.8,
- ccc@,
- initc@, use=xterm+256color, use=nsterm-bce,
-
-# This is an alias which should always point to the "current" version
-nsterm|Apple_Terminal|AppKit Terminal.app,
- use=nsterm-256color,
-
-# iTerm.app from http://iterm.sourceforge.net/ is an alternative (and
-# more featureful) terminal emulator for Mac OS X. It is similar
-# enough in capabilities to nsterm-16color that I have derived this
-# description from that one, but as far as I know they share no code.
-# Many of the features are user-configurable, but I attempt only to
-# describe the default configuration.
-#
-# NOTE: When tack tests (csr) + (nel) iTerm.app crashes, so (csr) is
-# disabled.
-iTerm.app|iTerm.app terminal emulator for Mac OS X,
- bce, bw@, ccc@,
- csr@, initc@, kend=\EOF, khome=\EOH, use=xterm+256color,
- use=nsterm-16color,
-
-# xnuppc - Darwin PowerPC Console (a.k.a. "darwin")
-#
-# On PowerPC platforms, Apple's Darwin operating system uses a
-# full-screen system console derived from a NetBSD framebuffer
-# console. It is an ANSI-style terminal, and is not really VT-100
-# compatible.
-#
-# Under Mac OS X, this is the system console driver used while in
-# single-user mode [reachable by holding down Command-S during the
-# boot process] and when logged in using console mode [reachable by
-# typing ">console" at the graphical login prompt.]
-#
-# If you're looking for a description of the Terminal.app terminal
-# emulator which runs under the Mac OS X Quartz windowing system (and
-# other AppKit-supported windowing systems,) see the "nsterm"
-# entry instead.
-#
-# NOTE: Under Mac OS X version 10.1, the default login window does not
-# prompt for user name, instead requiring an icon to be selected from
-# a list of known users. Since the special ">console" login is not in
-# this list, you must make one of two changes in the Login Window
-# panel of the Login section of System Prefs to make the special
-# ">console" login accessible. The first option is to enable 'Show
-# "Other User" in list for network users', which will add a special
-# "Other..." icon to the graphical login panel. Selecting "Other..."
-# will present the regular graphical login prompt. The second option
-# is to change the 'Display Login Window as:' setting to 'Name and
-# password entry fields', which replaces the login panel with a
-# graphical login prompt.
-#
-# There are no function keys, at least not in Darwin 1.3.
-#
-# It has no mouse support.
-#
-# It has full ANSI color support, and color combines correctly with
-# all three supported attributes: bold, inverse-video and underline.
-# However, bold colored text is almost unreadable (bolding is
-# accomplished using shifting and or-ing, and looks smeared) so bold
-# has been excluded from the list of color-compatible attributes
-# [using (ncv)]. The monochrome entry (-m) is useful if you use a
-# monochrome monitor.
-#
-# There is one serious bug with this terminal emulation's color
-# support: repositioning the cursor onto a cell with non-matching
-# colors obliterates that cell's contents, replacing it with a blank
-# and displaying a colored cursor in the "current" colors. There is
-# no complete workaround at present [other than using the monochrome
-# (-m) entries,] but removing the (msgr) capability seemed to help.
-#
-# The "standout" chosen was simple reverse-video, although a colorful
-# standout might be more aesthetically pleasing. Similarly, the bold
-# chosen is the terminal's own smeared bold, although a simple
-# color-change might be more readable. The color-bold (-b) entries
-# uses magenta colored text for bolding instead. The fancy color (-f
-# and -f2) entries use color for bold, standout and underlined text
-# (underlined text is still underlined, though.)
-#
-# Apparently the terminal emulator does support a VT-100-style
-# alternate character set, but all the alternate character set
-# positions have been left blank in the font. For this reason, no
-# alternate character set capabilities have been included in this
-# description. The console driver appears to be ASCII-only, so (enacs)
-# has been excluded [although the VT-100 sequence does work.]
-#
-# The default Mac OS X and Darwin installation reports "vt100" as the
-# terminal type, and exports no helpful environment variables. To fix
-# this, change the "console" entry in /etc/ttys from "vt100" to
-# "xnuppc-WxH", where W and H are the character dimensions of your
-# console (see below.)
-#
-# The font used by the terminal emulator is apparently one originally
-# drawn by Ka-Ping Yee, and uses 8x16-pixel characters. This
-# file includes descriptions for the following geometries:
-#
-# Pixels Characters Entry Name (append -m for monochrome)
-# -------------------------------------------------------------------
-# 640x400 80x25 xnuppc-80x25
-# 640x480 80x30 xnuppc-80x30
-# 720x480 90x30 xnuppc-90x30
-# 800x600 100x37 xnuppc-100x37
-# 896x600 112x37 xnuppc-112x37
-# 1024x640 128x40 xnuppc-128x40
-# 1024x768 128x48 xnuppc-128x48
-# 1152x768 144x48 xnuppc-144x48
-# 1280x1024 160x64 xnuppc-160x64
-# 1600x1024 200x64 xnuppc-200x64
-# 1600x1200 200x75 xnuppc-200x75
-# 2048x1536 256x96 xnuppc-256x96
-#
-# The basic "xnuppc" entry includes no size information, and the
-# emulator includes no reporting capability, so you'll be at the mercy
-# of the TTY device (which reports incorrectly on my hardware.) The
-# color-bold entries do not include size information.
-
-# The '+' entries are building blocks
-xnuppc+basic|Darwin PowerPC Console basic capabilities,
- am, bce, mir, xenl,
- it#8,
- bold=\E[1m, clear=\E[H\E[J, 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, dsl=\E]2;\007, ed=\E[J, el=\E[K,
- el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=\177,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8,
- rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m,
- rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
- sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
- sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
- smul=\E[4m, tbc=\E[3g, use=vt100+keypad,
-
-xnuppc+c|Darwin PowerPC Console ANSI color support,
- colors#8, ncv#32, pairs#64,
- op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
-
-xnuppc+b|Darwin PowerPC Console color-bold support,
- ncv#32,
- bold=\E[35m,
- sgr=\E[0%?%p6%t;35%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
- use=xnuppc+basic,
-
-xnuppc+f|Darwin PowerPC Console fancy color support,
- ncv#35,
- sgr=\E[0%?%p6%t;35%;%?%p2%t;36;4%;%?%p1%t;33;44%;%?%p3%t;7%;m,
- smso=\E[33;44m, smul=\E[36;4m, use=xnuppc+b,
-
-xnuppc+f2|Darwin PowerPC Console alternate fancy color support,
- ncv#35,
- bold=\E[33m,
- sgr=\E[0%?%p6%t;33%;%?%p2%t;34%;%?%p1%t;31;47%;%?%p3%t;7%;m,
- smso=\E[31;47m, smul=\E[34m, use=xnuppc+basic,
-
-# Building blocks for specific screen sizes
-xnuppc+80x25|Darwin PowerPC Console 80x25 support (640x400 pixels),
- cols#80, lines#25,
-
-xnuppc+80x30|Darwin PowerPC Console 80x30 support (640x480 pixels),
- cols#80, lines#30,
-
-xnuppc+90x30|Darwin PowerPC Console 90x30 support (720x480 pixels),
- cols#90, lines#30,
-
-xnuppc+100x37|Darwin PowerPC Console 100x37 support (800x600 pixels),
- cols#100, lines#37,
-
-xnuppc+112x37|Darwin PowerPC Console 112x37 support (896x600 pixels),
- cols#112, lines#37,
-
-xnuppc+128x40|Darwin PowerPC Console 128x40 support (1024x640 pixels),
- cols#128, lines#40,
-
-xnuppc+128x48|Darwin PowerPC Console 128x48 support (1024x768 pixels),
- cols#128, lines#48,
-
-xnuppc+144x48|Darwin PowerPC Console 144x48 support (1152x768 pixels),
- cols#144, lines#48,
-
-xnuppc+160x64|Darwin PowerPC Console 160x64 support (1280x1024 pixels),
- cols#160, lines#64,
-
-xnuppc+200x64|Darwin PowerPC Console 200x64 support (1600x1024 pixels),
- cols#200, lines#64,
-
-xnuppc+200x75|Darwin PowerPC Console 200x75 support (1600x1200 pixels),
- cols#200, lines#75,
-
-xnuppc+256x96|Darwin PowerPC Console 256x96 support (2048x1536 pixels),
- cols#256, lines#96,
-
-# These are different combinations of the building blocks
-
-xnuppc-m|darwin-m|Darwin PowerPC Console (monochrome),
- use=xnuppc+basic,
-
-xnuppc|darwin|Darwin PowerPC Console (color),
- use=xnuppc+c, use=xnuppc+basic,
-
-xnuppc-m-b|darwin-m-b|Darwin PowerPC Console (monochrome w/color-bold),
- use=xnuppc+b,
-
-xnuppc-b|darwin-b|Darwin PowerPC Console (color w/color-bold),
- use=xnuppc+b, use=xnuppc+c,
-
-xnuppc-m-f|darwin-m-f|Darwin PowerPC Console (fancy monochrome),
- use=xnuppc+f,
-
-xnuppc-f|darwin-f|Darwin PowerPC Console (fancy color),
- use=xnuppc+f, use=xnuppc+c,
-
-xnuppc-m-f2|darwin-m-f2|Darwin PowerPC Console (alternate fancy monochrome),
- use=xnuppc+f2,
-
-xnuppc-f2|darwin-f2|Darwin PowerPC Console (alternate fancy color),
- use=xnuppc+f2, use=xnuppc+c,
-
-# Combinations for specific screen sizes
-xnuppc-80x25-m|darwin-80x25-m|Darwin PowerPC Console (monochrome) 80x25,
- use=xnuppc+80x25, use=xnuppc+basic,
-
-xnuppc-80x25|darwin-80x25|Darwin PowerPC Console (color) 80x25,
- use=xnuppc+c, use=xnuppc+80x25, use=xnuppc+basic,
-
-xnuppc-80x30-m|darwin-80x30-m|Darwin PowerPC Console (monochrome) 80x30,
- use=xnuppc+80x30, use=xnuppc+basic,
-
-xnuppc-80x30|darwin-80x30|Darwin PowerPC Console (color) 80x30,
- use=xnuppc+c, use=xnuppc+80x30, use=xnuppc+basic,
-
-xnuppc-90x30-m|darwin-90x30-m|Darwin PowerPC Console (monochrome) 90x30,
- use=xnuppc+90x30, use=xnuppc+basic,
-
-xnuppc-90x30|darwin-90x30|Darwin PowerPC Console (color) 90x30,
- use=xnuppc+c, use=xnuppc+90x30, use=xnuppc+basic,
-
-xnuppc-100x37-m|darwin-100x37-m|Darwin PowerPC Console (monochrome) 100x37,
- use=xnuppc+100x37, use=xnuppc+basic,
-
-xnuppc-100x37|darwin-100x37|Darwin PowerPC Console (color) 100x37,
- use=xnuppc+c, use=xnuppc+100x37, use=xnuppc+basic,
-
-xnuppc-112x37-m|darwin-112x37-m|Darwin PowerPC Console (monochrome) 112x37,
- use=xnuppc+112x37, use=xnuppc+basic,
-
-xnuppc-112x37|darwin-112x37|Darwin PowerPC Console (color) 112x37,
- use=xnuppc+c, use=xnuppc+112x37, use=xnuppc+basic,
-
-xnuppc-128x40-m|darwin-128x40-m|Darwin PowerPC Console (monochrome) 128x40,
- use=xnuppc+128x40, use=xnuppc+basic,
-
-xnuppc-128x40|darwin-128x40|Darwin PowerPC Console (color) 128x40,
- use=xnuppc+c, use=xnuppc+128x40, use=xnuppc+basic,
-
-xnuppc-128x48-m|darwin-128x48-m|Darwin PowerPC Console (monochrome) 128x48,
- use=xnuppc+128x48, use=xnuppc+basic,
-
-xnuppc-128x48|darwin-128x48|Darwin PowerPC Console (color) 128x48,
- use=xnuppc+c, use=xnuppc+128x48, use=xnuppc+basic,
-
-xnuppc-144x48-m|darwin-144x48-m|Darwin PowerPC Console (monochrome) 144x48,
- use=xnuppc+144x48, use=xnuppc+basic,
-
-xnuppc-144x48|darwin-144x48|Darwin PowerPC Console (color) 144x48,
- use=xnuppc+c, use=xnuppc+144x48, use=xnuppc+basic,
-
-xnuppc-160x64-m|darwin-160x64-m|Darwin PowerPC Console (monochrome) 160x64,
- use=xnuppc+160x64, use=xnuppc+basic,
-
-xnuppc-160x64|darwin-160x64|Darwin PowerPC Console (color) 160x64,
- use=xnuppc+c, use=xnuppc+160x64, use=xnuppc+basic,
-
-xnuppc-200x64-m|darwin-200x64-m|Darwin PowerPC Console (monochrome) 200x64,
- use=xnuppc+200x64, use=xnuppc+basic,
-
-xnuppc-200x64|darwin-200x64|Darwin PowerPC Console (color) 200x64,
- use=xnuppc+c, use=xnuppc+200x64, use=xnuppc+basic,
-
-xnuppc-200x75-m|darwin-200x75-m|Darwin PowerPC Console (monochrome) 200x75,
- use=xnuppc+200x75, use=xnuppc+basic,
-
-xnuppc-200x75|darwin-200x75|Darwin PowerPC Console (color) 200x75,
- use=xnuppc+c, use=xnuppc+200x75, use=xnuppc+basic,
-
-xnuppc-256x96-m|darwin-256x96-m|Darwin PowerPC Console (monochrome) 256x96,
- use=xnuppc+256x96, use=xnuppc+basic,
-
-xnuppc-256x96|darwin-256x96|Darwin PowerPC Console (color) 256x96,
- use=xnuppc+c, use=xnuppc+256x96, use=xnuppc+basic,
-
-
#### BeOS
#
# BeOS entry for Terminal program Seems to be almost ANSI
beterm|BeOS Terminal,
am, eo, mir, msgr, xenl, xon,
colors#8, cols#80, it#8, lines#25, ncv#5, pairs#64,
- bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+ bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, 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,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, 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,
+ nel=\r\n, 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,
@@ -1577,25 +953,28 @@ beterm|BeOS Terminal,
linux-basic|linux console,
am, bce, eo, mir, msgr, xenl, xon,
it#8, ncv#18, U8#1,
- 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, 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,
+ 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, clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
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[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J,
- el=\E[K, el1=\E[1K, flash=\E[?5h\E[?5l$<200/>, home=\E[H,
+ el=\E[K, el1=\E[1K, flash=\E[?5h$<200/>\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, kb2=\E[G, kbs=\177,
- kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, kb2=\E[G, kbs=^?, kcbt=\E[Z,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~,
kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D,
kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
- kspd=^Z, nel=^M^J, rc=\E8, rev=\E[7m, ri=\EM, rmam=\E[?7l,
+ kspd=^Z, nel=\r\n, rc=\E8, rev=\E[7m, ri=\EM, rmam=\E[?7l,
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%;%?%p9%t;11%;m,
+ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
+ %t;2%;%?%p6%t;1%;%?%p9%t;11%;m,
smam=\E[?7h, smir=\E[4h, smul=\E[4m, tbc=\E[3g,
vpa=\E[%i%p1%dd, use=vt102+enq, use=klone+sgr,
use=ecma+color,
@@ -1611,12 +990,21 @@ linux-m|Linux console no color,
# 1.9.9.
linux-c-nc|linux console with color-change,
ccc,
- initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x,
+ initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/
+ %02x%p4%{255}%*%{1000}%/%02x,
oc=\E]R, use=linux-basic,
# From: Dennis Henriksen <opus@osrl.dk>, 9 July 1996
linux-c|linux console 1.3.6+ for older ncurses,
ccc,
- initc=\E]P%?%p1%{9}%>%t%p1%{10}%-%'a'%+%c%e%p1%d%;%p2%{255}%*%{1000}%/%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}%*%{1000}%/%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}%*%{1000}%/%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;,
+ initc=\E]P%?%p1%{9}%>%t%p1%{10}%-%'a'%+%c%e%p1%d%;%p2%{255}
+ %*%{1000}%/%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}%*%{1000}%/%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}%*%{1000}
+ %/%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-basic,
# The 2.2.x kernels add a private mode that sets the cursor type; use that to
@@ -1627,24 +1015,30 @@ linux2.2|linux 2.2.x console,
cvvis=\E[?25h\E[?8c, use=linux-c-nc,
# Linux 2.6.x has a fix for SI/SO to work with UTF-8 encoding added here:
-# http://lkml.indiana.edu/hypermail/linux/kernel/0602.2/0868.html
-# Using SI/SO has the drawback that it confuses screen. SCS would work.
-# However, SCS is buggy (see comment in Debian #515609) -TD
-# Further, this breaks longstanding workarounds for Linux console's line
-# drawing (see Debian 665959) -TD
+# http://lkml.iu.edu/hypermail/linux/kernel/0602.2/0738.html
+# Although the kernel has mappings for these, they were not in the default
+# font (tested with Debian and Fedora):
+# '`' diamond
+# '~' scan line 1
+# 'p' scan line 3
+# 'r' scan line 7
+# '_' scan line 9
linux2.6|linux 2.6.x console,
- rmacs=^O,
- sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;m%?%p9%t\016%e\017%;,
+ acsc=++\,\,--..00__``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwx
+ xyyzz{{||}c~~,
+ enacs=\E)0, rmacs=^O,
+ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
+ %t;2%;%?%p6%t;1%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, use=linux2.2,
# The 3.0 kernel adds support for clearing scrollback buffer (capability E3).
# It is the same as xterm's erase-saved-lines feature.
linux3.0|linux 3.0 kernels,
- E3=\E[3;J, use=linux2.6,
+ E3=\E[3J, use=linux2.6,
# This is Linux console for ncurses.
linux|linux console,
- use=linux2.2,
+ use=linux3.0,
# Subject: linux 2.6.26 vt back_color_erase
# Changes to the Linux console driver broke bce model as reported in
@@ -1662,7 +1056,9 @@ linux-nic|linux with ich/ich1 suppressed for non-curses programs,
# 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.
linux-koi8|linux with koi8 alternate character set,
- acsc=+\020\,\021-\030.^Y0\215`\004a\221f\234g\237h\220i\276j\205k\203l\202m\204n\212o~p\0q\0r\0s_t\206u\207v\211w\210x\201y\230z\231{\267|\274~\224,
+ acsc=+\020\,\021-\030.^Y0\215`\004a\221f\234g\237h\220i
+ \276j\205k\203l\202m\204n\212o~p\0q\0r\0s_t\206u\207v
+ \211w\210x\201y\230z\231{\267|\274~\224,
use=linux, use=klone+koi8acs,
# Another entry for KOI8-r with Qing Long's acsc.
@@ -1672,14 +1068,17 @@ linux-koi8r|linux with koi8-r alternate character set,
# 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,
+ 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,
# This uses graphics from VT codeset instead of from cp437.
# reason: cp437 (aka "straight to font") is not functional under luit.
# from: Andrey V Lukyanov <land@long.yar.ru>.
linux-vt|linux console using VT codes for graphics,
- acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz~~,
+ acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
+ yzz~~,
rmacs=\E(K, rmpch@, sgr@, sgr0=\E[0m\E(K\017, smacs=\E(0,
smpch@, use=linux,
@@ -1699,14 +1098,44 @@ kon|kon2|jfbterm|Kanji ON Linux console,
initp@, kcbt@, oc@, op=\E[37;40m, rs1=\Ec, tsl=\E[?T,
use=linux,
+# FbTerm
+# Another variant. There are two parts (src, src/lib) with the latter
+# comprising the escape-sequence parsing. The copyright notice on that
+# says it is based on GTerm by Timothy Miller.
+#
+# The original developer "dragchan" has left, but as of March 2017 there is
+# (still dead) code from May 2015 here:
+# https://github.com/izmntuk/fbterm
+#
+# The acsc string may be incorrect.
+#
+# Not used here, the program recognizes escapes for italic, underline and
+# dim, rendering those as green, cyan and gray respectively.
+fbterm|FbTerm for Linux with framebuffer,
+ colors#0x100, pairs#0x10000,
+ 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,
+ initc=\E[3;%p1%d;%p2%d;%p3%d;%p4%d}, rmacs=\E[10m,
+ setab=\E[2;%p1%d}, setaf=\E[1;%p1%d},
+ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
+ %t;2%;%?%p6%t;1%;%?%p9%t;11%;m,
+ sgr0=\E[0;10m, smacs=\E[11m, use=linux,
+
# 16-color linux console entry; this works with a 256-character
# console font but bright background colors turn into dim ones when
# you use a 512-character console font. This uses bold for bright
# foreground colors and blink for bright background colors.
+#
+# Interestingly, the original version of this entry in 2009 used a documented
+# (but nonstandard) SGR 21, which was supported in the Linux console since 1992
+# as an equivalent for SGR 22. Long after (early 2018), someone modified the
+# console driver to make it ignore SGR 21 because the ECMA-48 standard
+# suggested a different use for that particular code.
linux-16color|linux console with 16 colors,
- colors#16, ncv#63, pairs#256,
+ colors#16, ncv#42, pairs#0x100,
setab=\E[4%p1%{8}%m%d%?%p1%{7}%>%t;5%e;25%;m,
- setaf=\E[3%p1%{8}%m%d%?%p1%{7}%>%t;1%e;21%;m,
+ setaf=\E[3%p1%{8}%m%d%?%p1%{7}%>%t;1%e;22%;m,
use=linux,
# bterm (bogl 0.1.18)
@@ -1720,16 +1149,16 @@ bterm|bogl virtual terminal,
am, bce,
colors#8, cols#80, lines#24, pairs#64,
acsc=aajjkkllmmqqttuuxx, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, cub1=^H, cud1=^J,
- cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, home=\E[H, ind=^J,
- kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
+ clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r, cub1=^H, cud1=\n,
+ cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, home=\E[H, ind=\n,
+ kb2=\E[G, kbs=^?, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\E[[A,
kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, kf20=\E[34~,
kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~,
kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~,
- kmous=\E[M, knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J,
+ kmous=\E[M, knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=\r\n,
op=\E[49m\E[39m, rev=\E[7m, ri=\EM, rmacs=^O, rmso=\E[27m,
rmul=\E[24m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
sgr0=\E[0m, smacs=^N, smso=\E[7m, smul=\E[4m,
@@ -1741,12 +1170,12 @@ bterm|bogl virtual terminal,
mach|Mach Console,
am, km,
cols#80, it#8, lines#25,
- bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=^M,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=\r,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
- el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=^J,
- kbs=\177, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\n,
+ kbs=^?, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kdch1=\E[9, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf2=\EOQ,
kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
kf9=\EOX, khome=\E[H, kich1=\E[@, kll=\E[F, knp=\E[U,
@@ -1765,12 +1194,15 @@ mach-color|Mach Console with ANSI color,
#
# Added nel, hpa, sgr and removed rmacs, smacs based on source -TD
mach-gnu|GNU Mach,
- acsc=+>\,<-\^.v0\333`+a\261f\370g\361h\260i#j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+ acsc=+>\,<-\^.v0\333`+a\261f\370g\361h\260i#j\331k\277l
+ \332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x
+ \263y\363z\362{\343|\330}\234~\376,
dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX,
el1=\E[1K, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ich1=\E[@,
- indn=\E[%p1%dS, invis=\E[8m, nel=\EE, rin=\E[%p1%dT,
- sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m,
- use=mach,
+ invis=\E[8m, nel=\EE,
+ sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;
+ 2%;%?%p6%t;1%;%?%p7%t;8%;m,
+ use=ecma+index, use=mach,
mach-gnu-color|Mach Console with ANSI color,
colors#8, pairs#64,
@@ -1807,32 +1239,33 @@ mach-gnu-color|Mach Console with ANSI color,
hurd|The GNU Hurd console server,
am, bce, bw, eo, km, mir, msgr, xenl, xon,
colors#8, it#8, ncv#18, pairs#64,
- acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
+ yzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\Ec, cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+ clear=\Ec, cnorm=\E[?25h, cr=\r, csr=\E[%i%p1%d;%p2%dr,
cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[34l, dch=\E[%p1%dP,
dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, flash=\Eg,
home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@,
- il=\E[%p1%dL, il1=\E[L, ind=\E[S, indn=\E[%p1%dS,
- invis=\E[8m, kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\EOD,
- kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~,
- kend=\E[4~, 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~,
+ il=\E[%p1%dL, il1=\E[L, ind=\E[S, invis=\E[8m, kb2=\E[G,
+ kbs=^?, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+ kcuu1=\EOA, kdch1=\E[3~, kend=\E[4~, 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~,
- kspd=^Z, nel=^M^J, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\E[T,
- rin=\E[%p1%dT, ritm=\E[23m, rmacs=\E[10m, rmir=\E[4l,
- rmso=\E[27m, rmul=\E[24m, rs1=\EM\E[?1000l, sc=\E7,
- setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- sgr=\E[0%?%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,
- sgr0=\E[0m, sitm=\E[3m, smacs=\E[11m, smir=\E[4h,
- smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd, grbom=\E[>1l,
- gsbom=\E[>1h,
+ kspd=^Z, nel=\r\n, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\E[T,
+ rmacs=\E[10m, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
+ rs1=\EM\E[?1000l, sc=\E7, setab=\E[4%p1%dm,
+ setaf=\E[3%p1%dm,
+ sgr=\E[0%?%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,
+ sgr0=\E[0m, smacs=\E[11m, smir=\E[4h, smso=\E[7m,
+ smul=\E[4m, vpa=\E[%i%p1%dd, grbom=\E[>1l, gsbom=\E[>1h,
+ use=ecma+index, use=ecma+italics,
#### QNX
#
@@ -1848,12 +1281,13 @@ hurd|The GNU Hurd console server,
qnx|qnx4|qnx console,
daisy, km, mir, msgr, xhpa, xt,
colors#8, cols#80, it#4, lines#25, ncv#3, pairs#8,
- acsc=O\333a\261j\331k\277l\332m\300n\305o\337q\304s\334t\303u\264v\301w\302x\263,
+ acsc=O\333a\261j\331k\277l\332m\300n\305o\337q\304s\334t
+ \303u\264v\301w\302x\263,
bel=^G, blink=\E{, bold=\E<, civis=\Ey0, clear=\EH\EJ,
- cnorm=\Ey1, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ cnorm=\Ey1, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ey2,
dch1=\Ef, dl1=\EF, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\Ee,
- il1=\EE, ind=^J, kBEG=\377\356, kCAN=\377\263,
+ il1=\EE, ind=\n, kBEG=\377\356, kCAN=\377\263,
kCMD=\377\267, kCPY=\377\363, kCRT=\377\364,
kDL=\377\366, kEND=\377\301, kEOL=\377\311,
kEXT=\377\367, kFND=\377\370, kHLP=\377\371,
@@ -1937,7 +1371,7 @@ qansi-g|QNX ANSI,
colors#8, cols#80, it#8, lines#25, ncv#19, pairs#64, wsl#80,
acsc=Oa``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[2J\E[H, cnorm=\E[?25h\E[?12l, cr=^M,
+ clear=\E[2J\E[H, cnorm=\E[?25h\E[?12l, cr=\r,
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$<5>, cuu=\E[%p1%dA, cuu1=\E[A,
@@ -1946,7 +1380,7 @@ qansi-g|QNX ANSI,
el=\E[K, el1=\E[1K\E[X, flash=\E[?5h$<200>\E[?5l,
fsl=\E[?6h\E8, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L,
- ind=\E[S, indn=\E[%p1%dS, invis=\E[9m,
+ ind=\E[S, invis=\E[9m,
is2=\E>\E[?1l\E[?7h\E[0;10;39;49m, is3=\E(B\E)0,
kBEG=\ENn, kCAN=\E[s, kCMD=\E[t, kCPY=\ENs, kCRT=\ENt,
kDL=\ENv, kEXT=\ENw, kFND=\ENx, kHLP=\ENy, kHOM=\E[h,
@@ -1970,16 +1404,19 @@ qansi-g|QNX ANSI,
kopt=\ENk, kpp=\E[V, kref=\ENl, kres=\ENp, krfr=\ENg,
kri=\E[b, krpl=\ENr, krst=\ENj, ksav=\ENq, kslt=\E[T,
ktbc=\ENd, kund=\ENu, ll=\E[99H, nel=\EE, op=\E[39;49m,
- rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\E[T,
- rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, rmso=\E[27m,
+ rev=\E[7m, ri=\E[T, rmacs=^O, rmam=\E[?7l, rmso=\E[27m,
rmul=\E[24m, rs1=\017\E[?7h\E[0;39;49m$<2>\E>\E[?1l,
rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
- 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%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;9%;m%?%p9%t\016%e\017%;,
+ 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%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
+ %|%t;7%;%?%p7%t;9%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smso=\E[7m,
smul=\E[4m, tbc=\E[3g,
- tsl=\E7\E1;24r\E[?6l\E[25;%i%p1%dH,
+ tsl=\E7\E1;24r\E[?6l\E[25;%i%p1%dH, use=ansi+rep,
+ use=ecma+index,
#
qansi|QNX ansi with console writes,
daisy, xhpa, use=qansi-g,
@@ -2030,7 +1467,9 @@ qansi-w|QNX ansi for windows,
scoansi-old|SCO Extended ANSI standard crt (5.0.5),
OTbs, am, bce, eo, xon,
colors#8, cols#80, it#8, lines#25, pairs#64,
- acsc=+/\,.-\230.\2310[5566778899\:\:;;<<==>>FFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX`\204a0fxgqh2jYk?lZm@nEqDtCu4vAwBx3yszr{c}\034~\207,
+ acsc=+/\,.-\230.\2310[5566778899\:\:;;<<==>>FFGGHHIIJJKKLLMM
+ NNOOPPQQRRSSTTUUVVWWXX`\204a0fxgqh2jYk?lZm@nEqDtCu4vAwB
+ x3yszr{c}\034~\207,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
civis=\E[=14;12C, clear=\E[H\E[2J, cnorm=\E[=10;12C,
cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
@@ -2039,29 +1478,30 @@ scoansi-old|SCO Extended ANSI standard crt (5.0.5),
dch1=\E[P, dispc=\E[=%p1%dg, dl=\E[%p1%dM, dl1=\E[M,
ed=\E[m\E[J, el=\E[m\E[K, el1=\E[1K, home=\E[H, ht=^I,
hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L,
- ind=\E[S, indn=\E[%p1%dS, invis=\E[8m, kbeg=\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, kf13=\E[Y, kf15=\E[a, kf16=\E[b, kf17=\E[c,
- kf18=\E[d, kf19=\E[e, kf2=\E[N, kf20=\E[f, kf21=\E[g,
- kf22=\E[h, kf23=\E[i, kf24=\E[j, kf25=\E[k, kf26=\E[l,
- kf27=\E[m, kf28=\E[n, kf29=\E[o, kf3=\E[O, kf30=\E[p,
- kf31=\E[q, kf32=\E[r, kf33=\E[s, kf34=\E[t, kf35=\E[u,
- kf36=\E[v, kf37=\E[w, kf38=\E[x, kf39=\E[y, kf4=\E[P,
- kf40=\E[z, kf41=\E[@, kf42=\E[[, kf43=\E[\\, kf44=\E[],
- kf45=\E[\^, kf46=\E[_, kf47=\E[`, kf48=\E[{, kf5=\E[Q,
- kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H,
- kich1=\E[L, knp=\E[G, kpp=\E[I, op=\E[0;37;40m, rc=\E8,
- rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, rmacs=\E[10m,
- rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sc=\E7,
- setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0;10m,
- smacs=\E[12m, smam=\E[?7h, smso=\E[7m, smul=\E[4m,
+ ind=\E[S, invis=\E[8m, kbeg=\E[E, kbs=^H, kcbt=\E[Z,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?,
+ kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X,
+ kf13=\E[Y, kf15=\E[a, kf16=\E[b, kf17=\E[c, kf18=\E[d,
+ kf19=\E[e, kf2=\E[N, kf20=\E[f, kf21=\E[g, kf22=\E[h,
+ kf23=\E[i, kf24=\E[j, kf25=\E[k, kf26=\E[l, kf27=\E[m,
+ kf28=\E[n, kf29=\E[o, kf3=\E[O, kf30=\E[p, kf31=\E[q,
+ kf32=\E[r, kf33=\E[s, kf34=\E[t, kf35=\E[u, kf36=\E[v,
+ kf37=\E[w, kf38=\E[x, kf39=\E[y, kf4=\E[P, kf40=\E[z,
+ kf41=\E[@, kf42=\E[[, kf43=\E[\\, kf44=\E[], kf45=\E[\^,
+ kf46=\E[_, kf47=\E[`, kf48=\E[{, kf5=\E[Q, kf6=\E[R,
+ kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H, kich1=\E[L,
+ knp=\E[G, kpp=\E[I, op=\E[0;37;40m, rc=\E8, rev=\E[7m,
+ ri=\E[T, rmacs=\E[10m, rmam=\E[?7l, rmso=\E[m, rmul=\E[m,
+ sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+ sgr0=\E[0;10m, smacs=\E[12m, smam=\E[?7h, smso=\E[7m,
+ smul=\E[4m, use=ecma+index,
scoansi-new|SCO Extended ANSI standard crt (5.0.6),
km,
civis=\E[=0c, cnorm=\E[=1c, csr=\E[%i%p1%d;%p2%dr,
cvvis=\E[=2c, mgc=\E[=r, oc=\E[51m, op=\E[50m,
rep=\E[%p1%d;%p2%db, rmm=\E[=11L,
- sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%e;10%;m,
+ sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%?
+ %p7%t;8%;%?%p9%t;12%e;10%;m,
smgb=\E[=1;0m, smgbp=\E[=1;%i%p1%dm,
smglp=\E[=2;%i%p1%dm, smgr=\E[=3;0m,
smgrp=\E[=3;%i%p1%dm, smgt=\E[=0;0m,
@@ -2087,7 +1527,7 @@ scoansi|SCO Extended ANSI standard crt,
#
# F1-F12 generate different codes when shift or control modifiers are used.
# For example:
-# F1 \E[001q
+# F1 \E[001q
# shift F1 \E[013q
# control-F1 \E[025q
#
@@ -2111,8 +1551,8 @@ iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100),
am,
cols#80, it#8, lines#40,
bel=^G, bold=\E[1m, clear=\E[H\E[2J,
- cnorm=\E[9/y\E[12/y\E[=6l, cr=^M, cub=\E[%p1%dD,
- cub1=\E[D, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC,
+ cnorm=\E[9/y\E[12/y\E[=6l, cr=\r, cub=\E[%p1%dD,
+ cub1=\E[D, cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC,
cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
cuu1=\E[A, cvvis=\E[10/y\E[=1h\E[=2l\E[=6h,
dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
@@ -2120,15 +1560,15 @@ iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100),
is2=\E[?1l\E>\E[?7h\E[100g\E[0m\E7\E[r\E8, kDC=\E[P,
kEND=\E[147q, kHOM=\E[143q, kLFT=\E[158q, kPRT=\E[210q,
kRIT=\E[167q, kSPD=\E[218q, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177,
- kend=\E[146q, kent=^M, kf1=\E[001q, kf10=\E[010q,
- kf11=\E[011q, kf12=\E[012q, kf2=\E[002q, kf3=\E[003q,
- kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q,
- kf8=\E[008q, kf9=\E[009q, khome=\E[H, kich1=\E[139q,
- knp=\E[154q, kpp=\E[150q, kprt=\E[209q, krmir=\E[146q,
- kspd=\E[217q, nel=\EE, pfkey=\EP101;%p1%d.y%p2%s\E\\,
- rc=\E8, rev=\E[7m, ri=\EM, rmam=\E[?7l, rmso=\E[m, rmul=\E[m,
- sc=\E7, sgr0=\E[m, smam=\E[?7h, smso=\E[1;7m, smul=\E[4m,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?, kend=\E[146q,
+ kent=\r, kf1=\E[001q, kf10=\E[010q, kf11=\E[011q,
+ kf12=\E[012q, kf2=\E[002q, kf3=\E[003q, kf4=\E[004q,
+ kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q,
+ kf9=\E[009q, khome=\E[H, kich1=\E[139q, knp=\E[154q,
+ kpp=\E[150q, kprt=\E[209q, krmir=\E[146q, kspd=\E[217q,
+ nel=\EE, pfkey=\EP101;%p1%d.y%p2%s\E\\, rc=\E8,
+ rev=\E[7m, ri=\EM, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sc=\E7,
+ sgr0=\E[m, smam=\E[?7h, smso=\E[1;7m, smul=\E[4m,
tbc=\E[3g,
iris-ansi-ap|IRIS ANSI in application-keypad mode,
is2=\E[?1l\E=\E[?7h, kent=\EOM, kf10=\E[010q,
@@ -2139,10 +1579,9 @@ iris-ansi-ap|IRIS ANSI in application-keypad mode,
iris-color|xwsh|IRIX ANSI with color,
ncv#33,
csr=\E[%i%p1%d;%p2%dr, dch=\E[%p1%dP, dim=\E[2m,
- ech=\E[%p1%dX, ich=\E[%p1%d@, rc=\E8, ritm=\E[23m,
- rmul=\E[24m, rs1=\Ec,
+ ech=\E[%p1%dX, ich=\E[%p1%d@, rc=\E8, rmul=\E[24m, rs1=\Ec,
rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
- sitm=\E[3m, use=vt100+enq, use=klone+color,
+ use=ecma+italics, use=vt100+enq, use=klone+color,
use=iris-ansi-ap,
#### OpenBSD consoles
@@ -2157,37 +1596,55 @@ iris-color|xwsh|IRIX ANSI with color,
# Added several capabilities to pccon+base, reading wsemul_vt100_subr.c -TD
# Changed kbs to DEL and removed keys that duplicate stty settings -TD
#
+# Notes from testing with vttest:
+# fails wrapping test
+# no 8-bit controls
+# identifies as vt200 with selective erase, but does not implement DECSCA
+# no vt52 mode
+# also lacks these:
+# ESC # 8 DEC Screen Alignment Test (DECALN).
+# CSI ? 5 h Reverse Video (DECSCNM).
+#
pccon+keys|OpenBSD PC keyboard keys,
- kbs=\177, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\E[3~, kend=\E[8~, kent=^M, kf1=\E[11~, kf10=\E[21~,
- kf11=\E[23~, kf12=\E[24~, kf2=\E[12~, kf3=\E[13~,
+ kbs=^?, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[3~, kend=\E[8~, kent=\r, 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~, kf21=\E[35~,
+ kf22=\E[36~, kf23=\E[37~, kf24=\E[38~, 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~, knp=\E[6~, kpp=\E[5~,
krfr=^R,
pccon+sgr+acs0|sgr and simple ASCII pseudographics for OpenBSD PC console,
- acsc=+>\,<-\^.v0#`+a\:f\\h#i#j+k+l+m+n+o~p-q-r-s_t+u+v+w+x|y#z#{*|!}#~o,
- sgr=\E[0%?%p1%p3%|%t;7%;m, sgr0=\E[m,
+ acsc=+>\,<-\^.v0#`+a\:f\\h#i#j+k+l+m+n+o~p-q-r-s_t+u+v+w+x|y
+ #z#{*|!}#~o,
+ sgr=\E[0%?%p1%p3%|%t;7%;%?%p6%t;1%;%?%p2%t;4%;m,
+ sgr0=\E[m,
pccon+sgr+acs|sgr and default ASCII pseudographics for OpenBSD PC console,
- acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
+ yzz{{||}}~~,
enacs=\E)0$<5>, rmacs=\E(B$<5>,
- sgr=\E[0%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<5>,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e
+ \E(B%;$<2>,
sgr0=\E[m\E(B$<5>, smacs=\E(0$<5>,
+# underline renders as color
pccon+colors|ANSI colors for OpenBSD PC console,
bce,
- colors#8, pairs#64,
- op=\E[m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+ colors#8, ncv#2, pairs#64,
+ op=\E[47;30m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
pccon+base|base capabilities for OpenBSD PC console,
am, km, mc5i, msgr, npc, nxon, xenl, xon,
cols#80, it#8, lines#24,
- bel=^G, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
- dch1=\E[P, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
- el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
+ bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n,
+ cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J,
+ el=\E[K, el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
il1=\E[L, ind=\ED, nel=\EE, rev=\E[7m, ri=\EM, rmam=\E[?7l,
- rmso=\E[m, rs2=\Ec$<50>, smam=\E[?7h, smso=\E[7m,
- tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
+ rmso=\E[27m, rmul=\E[24m, rs2=\Ec$<50>, smam=\E[?7h,
+ smso=\E[7m, smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR,
+ u7=\E[6n,
pccon0-m|OpenBSD PC console without colors & with simple ASCII pseudographics,
- use=pccon+base, use=pccon+sgr+acs0, use=pccon+keys,
+ use=pccon+sgr+acs0, use=pccon+base, use=pccon+keys,
pccon0|OpenBSD PC console with simple ASCII pseudographics,
use=pccon0-m, use=pccon+colors,
pccon-m|OpenBSD PC console without colors,
@@ -2211,26 +1668,28 @@ pccon|OpenBSD PC console,
pcvtXX|pcvt vt200 emulator (DEC VT220),
am, km, mir, msgr, xenl,
it#8, vt#3,
- acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz~~,
+ acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
+ yzz~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
+ clear=\E[H\E[J, cnorm=\E[?25h, cr=\r,
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, ed=\E[J,
el=\E[K, el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
- il=\E[%p1%dL, il1=\E[L, ind=\ED, indn=\E[%p1%dS,
- is1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=\177,
+ il=\E[%p1%dL, il1=\E[L, ind=\ED,
+ is1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=^?,
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kdch1=\E[3~, kf1=\E[17~, kf2=\E[18~, kf3=\E[19~,
kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~,
khome=\E[1~, kich1=\E[2~, kll=\E[4~, knp=\E[6~, kpp=\E[5~,
nel=\EE, rc=\E8, rev=\E[7m, rf=/usr/share/tabset/vt100,
- ri=\EM, rin=\E[%p1%dT, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l,
+ ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l,
rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
rs1=\Ec\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, 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,
+ use=ecma+index,
# NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor)
# termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and
@@ -2296,12 +1755,12 @@ arm100|arm100-am|Arm(RiscPC) ncurses compatible (for 640x480),
cols#80, it#8, lines#30,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
- clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
cuf=\E[%p1%dC, cuf1=\E[C$<2>,
cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
- enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J,
+ enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=\n,
invis=\E[8m$<2>, ka1=\E[q, ka3=\E[s, kb2=\E[r, kbs=^H,
kc1=\E[p, kc3=\E[n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
kcuu1=\E[A, kent=\E[M, kf0=\E[y, kf1=\E[P, kf10=\E[x,
@@ -2310,7 +1769,8 @@ arm100|arm100-am|Arm(RiscPC) ncurses compatible (for 640x480),
rmacs=^O, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m$<2>,
rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<2>,
+ 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%;$<2>,
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,
@@ -2319,7 +1779,7 @@ arm100-w|arm100-wam|Arm(RiscPC) ncurses compatible (for 1024x768),
cols#132, lines#50, use=arm100,
# NetBSD/x68k console vt200 emulator. This port runs on a 68K machine
-# manufactured by Sharp for the Japenese market.
+# manufactured by Sharp for the Japanese market.
# From Minoura Makoto <minoura@netlaputa.or.jp>, 12 May 1996
x68k|x68k-ite|NetBSD/x68k ITE,
cols#96, lines#32,
@@ -2332,19 +1792,20 @@ x68k|x68k-ite|NetBSD/x68k ITE,
ofcons|DNARD OpenFirmware console,
bw,
cols#80, lines#30,
- bel=^G, blink=\2335m, bold=\2331m, clear=^L, cr=^M,
+ bel=^G, blink=\2335m, bold=\2331m, clear=^L, cr=\r,
cub=\233%p1%dD, cub1=\233D, cud=\233%p1%dB, cud1=\233B,
cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH,
cuu=\233%p1%dA, cuu1=\233A, dch=\233%p1%dP, dch1=\233P,
dim=\2332m, dl=\233%p1%dM, dl1=\233M, ed=\233J, el=\233K,
flash=^G, ht=^I, ich=\233%p1%d@, ich1=\233@, il=\233%p1%dL,
- il1=\233L, ind=^J, invis=\2338m, kbs=^H, kcub1=\233D,
+ il1=\233L, ind=\n, invis=\2338m, kbs=^H, kcub1=\233D,
kcud1=\233B, kcuf1=\233C, kcuu1=\233A, kdch1=\233P,
kf1=\2330P, kf10=\2330M, kf2=\2330Q, kf3=\2330W,
kf4=\2330x, kf5=\2330t, kf6=\2330u, kf7=\2330q, kf8=\2330r,
- kf9=\2330p, knp=\233/, kpp=\233?, nel=^M^J, rev=\2337m,
+ kf9=\2330p, knp=\233/, kpp=\233?, nel=\r\n, rev=\2337m,
rmso=\2330m, rmul=\2330m,
- sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t2%;%?%p7%t8%;%?%p1%p3%|%t;7%;m,
+ sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t2%;%?%p7%t8
+ %;%?%p1%p3%|%t;7%;m,
sgr0=\2330m, smso=\2337m, smul=\2334m,
# NetBSD "wscons" emulator in vt220 mode.
@@ -2386,14 +1847,14 @@ wsvt25m|NetBSD wscons in 25 line DEC VT220 mode with Meta,
# Attributes do not work with color
# Failed: vpa/hpa
# Failed: kf1-kf4, kf13-kf48, khome, kend
-# (effectively xterm-r6 for function-keys)
+# (effectively xterm-r6 for function-keys)
# None of the function or cursor key-modifiers are encoded.
# Console hangs in the smm/rmm test if TERM=xterm, does not show test
#
# Testing with vttest:
# -------------------
# Identifies as vt220 with selective erase
-# (however, selective erase refers to DECSCA, SPA)
+# (however, selective erase refers to DECSCA, SPA)
# Does not implement vt52
# Uses spaces to simulate double-size characters
# Does not support 8-bit controls
@@ -2403,11 +1864,11 @@ wsvt25m|NetBSD wscons in 25 line DEC VT220 mode with Meta,
# Does not support DECSCA
# Does not support any of the ISO-6429 cursor-movement
# Does not support any of the ISO-6429 miscellaneous tests
-# (SL/SR also leave unexpected char on screen too)
+# (SL/SR also leave unexpected char on screen too)
# Background does not change in menu 11.6.9 (SGR 22-27)
# None of the xterm special features tests work
netbsd6|NetBSD wscons in 25 line DEC VT100 mode,
- kbs=\177, use=wsvt25,
+ kbs=^?, use=wsvt25,
# `rasterconsole' provided by 4.4BSD, NetBSD and OpenBSD on SPARC, and
# DECstation/pmax.
@@ -2423,25 +1884,25 @@ rcons-color|BSD rasterconsole with ANSI color,
# for PocketBSD,PocketLinux,NetBSD/{hpcmips,mac68k}
# -- the setf/setb are probably incorrect, more likely setaf/setab -TD
# -- compare with cons25w
-mgterm,
+mgterm|MGL/MGL2 MobileGear Graphic Library,
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,
+ cr=\r, 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,
+ ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, kb2=\E[E,
+ kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+ kcuu1=\E[A, kdch1=^?, 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, 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, use=ecma+index,
#### FreeBSD console entries
#
@@ -2476,35 +1937,38 @@ cons25w|ansiw|ansi80x25-raw|freebsd console (25-line raw mode),
am, bce, bw, eo, msgr, npc,
colors#8, cols#80, it#8, lines#25, ncv#21, pairs#64,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
- cnorm=\E[=0C, cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB,
+ cnorm=\E[=0C, cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB,
cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
cvvis=\E[=1C, dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m,
dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@,
- ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
- indn=\E[%p1%dS, kb2=\E[E, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, kend=\E[F,
- kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X, kf13=\E[Y,
- kf14=\E[Z, kf15=\E[a, kf16=\E[b, kf17=\E[c, kf18=\E[d,
- kf19=\E[e, kf2=\E[N, kf20=\E[f, kf21=\E[g, kf22=\E[h,
- kf23=\E[i, kf24=\E[j, kf25=\E[k, kf26=\E[l, kf27=\E[m,
- kf28=\E[n, kf29=\E[o, kf3=\E[O, kf30=\E[p, kf31=\E[q,
- kf32=\E[r, kf33=\E[s, kf34=\E[t, kf35=\E[u, kf36=\E[v,
- kf37=\E[w, kf38=\E[x, kf39=\E[y, kf4=\E[P, kf40=\E[z,
- kf41=\E[@, kf42=\E[[, kf43=\E[\\, kf44=\E[], kf45=\E[\^,
- kf46=\E[_, kf47=\E[`, kf48=\E[{, kf5=\E[Q, kf6=\E[R,
- kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H, kich1=\E[L,
- knp=\E[G, kpp=\E[I, 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,
- setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- sgr=\E[0%?%p1%t;2;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;30;1%;%?%p6%t;1%;m,
- sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd,
+ ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, kb2=\E[E,
+ kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+ kcuu1=\E[A, kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V,
+ kf11=\E[W, kf12=\E[X, kf13=\E[Y, kf14=\E[Z, kf15=\E[a,
+ kf16=\E[b, kf17=\E[c, kf18=\E[d, kf19=\E[e, kf2=\E[N,
+ kf20=\E[f, kf21=\E[g, kf22=\E[h, kf23=\E[i, kf24=\E[j,
+ kf25=\E[k, kf26=\E[l, kf27=\E[m, kf28=\E[n, kf29=\E[o,
+ kf3=\E[O, kf30=\E[p, kf31=\E[q, kf32=\E[r, kf33=\E[s,
+ kf34=\E[t, kf35=\E[u, kf36=\E[v, kf37=\E[w, kf38=\E[x,
+ kf39=\E[y, kf4=\E[P, kf40=\E[z, kf41=\E[@, kf42=\E[[,
+ kf43=\E[\\, kf44=\E[], kf45=\E[\^, kf46=\E[_, kf47=\E[`,
+ kf48=\E[{, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U,
+ khome=\E[H, kich1=\E[L, knp=\E[G, kpp=\E[I, nel=\E[E,
+ op=\E[x, rc=\E8, rev=\E[7m, ri=\E[T, rmso=\E[m,
+ rs2=\E[x\E[m\Ec, sc=\E7, setab=\E[4%p1%dm,
+ setaf=\E[3%p1%dm,
+ sgr=\E[0%?%p1%t;2;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;30;1%;%?
+ %p6%t;1%;m,
+ sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd, use=ecma+index,
cons25|ansis|ansi80x25|freebsd console (25-line ansi mode),
- acsc=-\030.^Y0\333`\004a\260f\370g\361h\261i\025j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263y\363z\362~\371,
+ acsc=-\030.^Y0\333`\004a\260f\370g\361h\261i\025j\331k\277l
+ \332m\300n\305q\304t\303u\264v\301w\302x\263y\363z\362~
+ \371,
use=cons25w,
cons25-debian|freebsd console with debian backspace (25-line ansi mode),
- kbs=\177, kdch1=\E[3~, use=cons25,
+ kbs=^?, kdch1=\E[3~, use=cons25,
cons25-m|ansis-mono|ansi80x25-mono|freebsd console (25-line mono ansi mode),
colors@, pairs@,
bold@, dim@, op@, rmul=\E[m, setab@, setaf@,
@@ -2527,12 +1991,15 @@ cons60|ansi80x60|freebsd console (60-line ansi mode),
cons60-m|ansi80x60-mono|freebsd console (60-line mono ansi mode),
lines#60, use=cons25-m,
cons25r|pc3r|ibmpc3r|cons25-koi8-r|freebsd console w/koi8-r cyrillic,
- acsc=-\030.^Y0\215`\004a\220f\234h\221i\025j\205k\203l\202m\204n\212q\0t\206u\207v\211w\210x\201y\230z\231~\225,
+ acsc=-\030.^Y0\215`\004a\220f\234h\221i\025j\205k\203l\202m
+ \204n\212q\0t\206u\207v\211w\210x\201y\230z\231~
+ \225,
use=cons25w,
cons25r-m|pc3r-m|ibmpc3r-mono|cons25-koi8r-m|freebsd console w/koi8-r cyrillic (mono),
colors@, pairs@,
op@, rmul=\E[m, setab@, setaf@,
- sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;30;1%;%?%p6%t;1%;m,
+ sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
+ %t;30;1%;%?%p6%t;1%;m,
smul=\E[4m, use=cons25r,
cons50r|cons50-koi8r|freebsd console w/koi8-r cyrillic (50 lines),
lines#50, use=cons25r,
@@ -2544,7 +2011,9 @@ cons60r-m|cons60-koi8r-m|freebsd console w/koi8-r cyrillic (60-line mono),
lines#60, use=cons25r-m,
# ISO 8859-1 FreeBSD console
cons25l1|cons25-iso8859|freebsd console w/iso 8859-1 chars,
- acsc=+\253\,\273-\030.\031`\201a\202f\207g\210i\247j\213k\214l\215m\216n\217o\220p\221q\222r\223s\224t\225u\226v\227w\230x\231y\232z\233~\237,
+ acsc=+\253\,\273-\030.\031`\201a\202f\207g\210i\247j\213k
+ \214l\215m\216n\217o\220p\221q\222r\223s\224t\225u
+ \226v\227w\230x\231y\232z\233~\237,
use=cons25w,
cons25l1-m|cons25-iso-m|freebsd console w/iso 8859-1 chars (mono),
colors@, pairs@,
@@ -2596,10 +2065,11 @@ cons60l1-m|cons60-iso-m|freebsd console w/iso 8859-1 chars (60-line mono),
# The resulting description provides correct line-drawing and function-keys -TD
teken|syscons with teken,
bw@, mir, xenl,
- acsc=0\333a\260f\370g\361h\261j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263y\363z\362~\371,
+ acsc=0\333a\260f\370g\361h\261j\331k\277l\332m\300n\305q
+ \304t\303u\264v\301w\302x\263y\363z\362~\371,
civis=\E[?25l, cnorm=\E[?25h, cvvis@, hpa=\E[%i%p1%dG,
hts=\EH, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\E[3~, kend=\E[F, kent=^M, kf1=\EOP, kf10=\E[21~,
+ kdch1=\E[3~, kend=\E[F, kent=\r, kf1=\EOP, kf10=\E[21~,
kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, rmir=\E[4l,
@@ -2615,7 +2085,8 @@ teken|syscons with teken,
origpc3|origibmpc3|IBM PC 386BSD Console,
OTbs, am, bw, eo, xon,
cols#80, lines#25,
- acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263,
+ 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,
cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\E[J, el=\E[K,
home=\E[H, ind=\E[S, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
@@ -2627,10 +2098,10 @@ origpc3|origibmpc3|IBM PC 386BSD Console,
oldpc3|oldibmpc3|old IBM PC BSD/386 Console,
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,
+ bel=^G, bold=\E[=15F, cr=\r, cud1=\n, dim=\E[=8F, dl1=\E[M,
+ ht=^I, il1=\E[L, ind=\n, kbs=^H, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L, kll=\E[F,
- knp=\E[G, kpp=\E[I, nel=^M^J, sgr0=\E[=R,
+ knp=\E[G, kpp=\E[I, nel=\r\n, sgr0=\E[=R,
# Description of BSD/OS console emulator in version 1.1, 2.0, 2.1
# Note, the emulator supports many of the additional console features
@@ -2641,7 +2112,8 @@ oldpc3|oldibmpc3|old IBM PC BSD/386 Console,
# (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,
+ 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,
@@ -2650,14 +2122,15 @@ bsdos-pc-nobold|BSD/OS PC console w/o bold,
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,
+ bel=^G, clear=\Ec, cr=\r, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
- il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, kcub1=\E[D,
kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L,
- kll=\E[F, knp=\E[G, kpp=\E[I, nel=^M^J, rc=\E8, sc=\E7,
- sgr=\E[0;10%?%p1%t;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m%?%p5%t\E[=8F%;,
+ kll=\E[F, knp=\E[G, kpp=\E[I, nel=\r\n, 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+sgr8,
# Old names for BSD/OS PC console used in releases before 4.1.
@@ -2696,11 +2169,11 @@ bsdos-ppc|PowerPC BSD/OS Console,
vt52|dec vt52,
OTbs,
cols#80, it#8, lines#24,
- acsc=+h.k0affggolpnqprrss, bel=^G, clear=\EH\EJ, cr=^M,
+ acsc=+h.k0affggolpnqprrss, bel=^G, clear=\EH\EJ, cr=\r,
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,
+ el=\EK, home=\EH, ht=^I, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB,
+ kcuf1=\EC, kcuu1=\EA, nel=\r\n, ri=\EI, rmacs=\EG, smacs=\EF,
#### DEC VT100 and compatibles
#
@@ -2869,7 +2342,7 @@ vt102+enq|ncurses extension for vt102-style ENQ,
# | | | | | | | |
# | | | Auto XON/XOFF 0-Off | | | Power 0-60 Hz
# | | | 1-On | | | 1-50 Hz
-# | | Ansi/VT52 0-VT52 | | Bits Per Char. 0-7 Bits
+# | | ANSI/VT52 0-VT52 | | Bits Per Char. 0-7 Bits
# | | 1-ANSI | | 1-8 Bits
# | Keyclick 0-Off | Parity 0-Off
# | 1-On | 1-On
@@ -2888,29 +2361,39 @@ vt102+enq|ncurses extension for vt102-style ENQ,
#
# (vt100: I added <rmam>/<smam> based on the init string, also <OTbs>. -- esr)
vt100|vt100-am|dec vt100 (w/advanced video),
- OTbs, am, mc5i, msgr, xenl, xon,
- cols#80, it#8, lines#24, vt#3,
+ OTbs, mc5i, xenl, xon,
+ vt#3,
+ csr=\E[%i%p1%d;%p2%dr, kcub1=\EOD, kcud1=\EOB,
+ kcuf1=\EOC, kcuu1=\EOA, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4,
+ mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rmam=\E[?7l,
+ rmkx=\E[?1l\E>, rs2=\E<\E>\E[?3;4;5l\E[?7;8h\E[r,
+ 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%;$<2>,
+ smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m$<2>,
+ use=vt100+4bsd, use=vt100+fnkeys,
+vt100+4bsd|dec vt100 from 4.0BSD,
+ am, msgr,
+ cols#80, it#8, lines#24,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
- clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
- cuf=\E[%p1%dC, cuf1=\E[C$<2>,
+ clear=\E[H\E[J$<50>, cr=\r, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C$<2>,
cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
- enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=^H,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, lf1=pf1,
- lf2=pf2, lf3=pf3, lf4=pf4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
- rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
- rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>,
- rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>,
- 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=vt100+fnkeys,
+ enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^H,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmso=\E[m$<2>,
+ rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
+ %;m%?%p9%t\016%e\017%;$<2>,
+ sgr0=\E[m\017$<2>, smacs=^N, smso=\E[1;7m$<2>,
+ smul=\E[4m$<2>, tbc=\E[3g,
vt100nam|vt100-nam|vt100 no automargins,
- am@, xenl@, use=vt100-am,
+ am@, xenl@,
+ rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt100-am,
vt100-vb|dec vt100 (w/advanced video) & no beep,
- bel@, flash=\E[?5h\E[?5l, use=vt100,
+ bel@, flash=\E[?5h$<100/>\E[?5l, use=vt100,
# Ordinary vt100 in 132 column ("wide") mode.
vt100-w|vt100-w-am|dec vt100 132 cols (w/advanced video),
@@ -2979,13 +2462,13 @@ vt131|dec vt131,
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,
- cub1=^H, cud1=^J, cuf1=\E[C$<2/>,
+ clear=\E[;H\E[2J$<50/>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub1=^H, cud1=\n, 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,
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=^M^J, rc=\E8, rev=\E[7m$<2/>, ri=\EM$<5/>,
+ kf4=\EOS, nel=\r\n, rc=\E8, rev=\E[7m$<2/>, ri=\EM$<5/>,
rmam=\E[?7h, rmkx=\E[?1l\E>, rmso=\E[m$<2/>,
rmul=\E[m$<2/>,
rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
@@ -3012,10 +2495,10 @@ vt132|DEC vt132,
vt220-old|vt200-old|DEC VT220 in vt100 emulation mode,
OTbs, OTpt, am, mir, msgr, xenl, xon,
cols#80, lines#24, vt#3,
- OTnl=^J,
+ OTnl=\n,
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,
+ clear=\E[H\E[2J$<50>, cnorm=\E[?25h, cr=\r,
csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P,
dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
@@ -3029,7 +2512,8 @@ vt220-old|vt200-old|DEC VT220 in vt100 emulation mode,
ri=\EM$<14/>, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l,
rmso=\E[27m, rmul=\E[24m,
rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
+ %p9%t\E(0%e\E(B%;$<2>,
sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
smso=\E[7m, smul=\E[4m,
@@ -3047,9 +2531,9 @@ vt220|vt200|dec vt220,
OTbs, am, 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,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, 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,
@@ -3067,7 +2551,8 @@ vt220|vt200|dec vt220,
nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E(B$<4>,
rmam=\E[?7l, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
rs1=\E[?3l, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
+ %p9%t\E(0%e\E(B%;$<2>,
sgr0=\E[m\E(B, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=ansi+pp,
use=ansi+enq,
@@ -3078,9 +2563,9 @@ 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,
+ bel=^G, blink=\2335m, bold=\2331m, clear=\233H\233J, cr=\r,
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,
+ cud=\233%p1%dB, cud1=\n, 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,
@@ -3099,7 +2584,8 @@ vt220-8bit|vt220-8|vt200-8bit|vt200-8|dec vt220/200 in 8-bit mode,
mc4=\2334i, mc5=\2335i, nel=\EE, rc=\E8, rev=\2337m, ri=\EM,
rmacs=\E(B, rmam=\233?7l, rmir=\2334l, rmso=\23327m,
rmul=\23324m, rs1=\233?3l, sc=\E7,
- sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+ sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m
+ %?%p9%t\E(0%e\E(B%;$<2>,
sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h, smir=\2334h,
smso=\2337m, smul=\2334m, tbc=\2333g,
@@ -3139,13 +2625,14 @@ vt220-nam|v200-nam|VT220 in vt100 mode with no auto margins,
vt200-js|vt220-js|dec vt200 series with jump scroll,
am, msgr,
cols#80,
- bel=^G, 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,
+ bel=^G, clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub1=^H, cud1=\n, 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, il1=\E[L, ind=\ED,
- is2=\E[61"p\E[H\E[?3l\E[?4l\E[?1h\E[?5l\E[?6l\E[?7h\E[?8h\E[?25h\E>\E[m,
+ is2=\E[61"p\E[H\E[?3l\E[?4l\E[?1h\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, rc=\E8,
+ kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\r\ED, rc=\E8,
rf=/usr/share/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, sc=\E7, smdc=,
@@ -3179,15 +2666,15 @@ vt320|vt300|dec vt320 7 bit terminal,
cols#80, lines#24, wsl#80,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+ clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, 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, ht=^I,
hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
- kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ kbs=^?, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kdch1=\E[3~, kel=\E[4~, 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~,
@@ -3199,26 +2686,24 @@ vt320|vt300|dec vt320 7 bit terminal,
rmul=\E[m,
rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
+ %p9%t\E(0%e\E(B%;$<2>,
sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
use=dec+pp, use=vt220+keypad, use=dec+sl, use=ansi+enq,
vt320-nam|vt300-nam|dec vt320 7 bit terminal with no am to make SAS happy,
am@,
is2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H,
- rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H,
- use=vt320,
+ rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, use=vt320,
# We have to init 132-col mode, not 80-col mode.
vt320-w|vt300-w|dec vt320 wide 7 bit terminal,
cols#132, wsl#132,
is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
- rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
- use=vt320,
+ rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, use=vt320,
vt320-w-nam|vt300-w-nam|dec vt320 wide 7 bit terminal with no am,
am@,
is2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H,
- rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H,
- use=vt320-w,
+ rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, use=vt320-w,
# VT330 and VT340 -- These are ReGIS and SIXEL graphics terminals
# which are pretty much a superset of the VT320. They have the
@@ -3245,27 +2730,33 @@ vt340|dec-vt340|vt330|dec-vt330|dec vt340 graphics terminal with 24 line page,
cols#80, it#8, lines#24, vt#3,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
blink=\E[5m, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[J,
- cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ cnorm=\E[?25h, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
dl=\E[%p1%dM, dl1=\E[M, dsl=\E[2$~\r\E[1$}\E[K\E[$},
- ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l$<200/>, fsl=\E[$},
+ ed=\E[J, el=\E[K, flash=\E[?5h$<200/>\E[?5l, fsl=\E[$},
home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL,
il1=\E[L, ind=\ED,
- is2=\E<\E F\E>\E[?1h\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
+ is2=\E<\E\sF\E>\E[?1h\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r
+ \E[24;1H,
kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2,
- lf3=pf3, lf4=pf4, nel=^M\ED, rc=\E8, rev=\E[7m,
+ lf3=pf3, lf4=pf4, nel=\r\ED, rc=\E8, rev=\E[7m,
rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B,
rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
rmul=\E[24m, rs1=\E[?3l, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
+ %p9%t\E(0%e\E(B%;$<2>,
sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
tsl=\E[2$~\E[1$}\E[1;%dH,
+# Left/right margins are supported in xterm since patch #279 (2012/05/10)
+vt420+lrmm|VT420 left/right margins,
+ mgc=\E[?69l, smglr=\E[?69h\E[%i%p1%d;%p2%ds,
+
# DEC doesn't supply a vt400 description, so we add Daniel Glasser's
# (originally written with vt420 as its primary name, and usable for it).
#
@@ -3292,24 +2783,26 @@ vt400|vt400-24|dec-vt400|dec vt400 24x80 column autowrap,
cols#80, it#8, lines#24, vt#3,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[J$<10/>, cnorm=\E[?25h, cr=^M,
+ clear=\E[H\E[J$<10/>, cnorm=\E[?25h, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J$<10/>,
- el=\E[K$<4/>, flash=\E[?5h\E[?5l$<200/>, fsl=\E[$},
+ el=\E[K$<4/>, flash=\E[?5h$<200/>\E[?5l, fsl=\E[$},
home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
il=\E[%p1%dL, il1=\E[L, ind=\ED,
- is2=\E<\E F\E>\E[?1h\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
+ is2=\E<\E\sF\E>\E[?1h\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r
+ \E[24;1H,
kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2,
- lf3=pf3, lf4=pf4, nel=^M\ED, rc=\E8, rev=\E[7m,
+ lf3=pf3, lf4=pf4, nel=\r\ED, rc=\E8, rev=\E[7m,
rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B,
rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
rmul=\E[24m, rs1=\E<\E[?3l\E[!p\E[?7h, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
+ %p9%t\E(0%e\E(B%;$<2>,
sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
tsl=\E[2$~\E[1$}\E[1;%dH, use=dec+sl,
@@ -3322,9 +2815,9 @@ vt420|DEC VT420,
cols#80, it#8, lines#24, vt#3,
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,
+ clear=\E[H\E[2J$<50>, cnorm=\E[?25h, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH$<10>, 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$<50>, el=\E[K$<3>, el1=\E[1K,
@@ -3340,7 +2833,8 @@ vt420|DEC VT420,
ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>,
rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
rmso=\E[27m, rmul=\E[24m, rs3=\E[?67h\E[64;1"p, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
+ %p9%t\E(0%e\E(B%;$<2>,
sgr0=\E[m\E(B$<2>, smacs=\E(0$<2>, smam=\E[?7h,
smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
use=ansi+pp, use=dec+sl, use=ansi+enq,
@@ -3362,33 +2856,35 @@ vt420|DEC VT420,
# application has to know it.
#
vt420pc|DEC VT420 w/PC keyboard,
- kdch1=\177, kend=\E[4~, kf1=\E[11~, kf10=\E[21~,
- kf11=\E[23~, kf12=\E[24~, kf13=\E[11;2~, kf14=\E[12;2~,
- kf15=\E[13;2~, kf16=\E[14;2~, kf17=\E[15;2~,
- kf18=\E[17;2~, kf19=\E[18;2~, kf2=\E[12~, kf20=\E[19;2~,
- kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~,
- kf24=\E[24;2~, kf25=\E[23~, kf26=\E[24~, kf27=\E[25~,
- kf28=\E[26~, kf29=\E[28~, kf3=\E[13~, kf30=\E[29~,
- kf31=\E[31~, kf32=\E[32~, kf33=\E[33~, kf34=\E[34~,
- kf35=\E[35~, kf36=\E[36~, kf37=\E[23;2~, kf38=\E[24;2~,
- kf39=\E[25;2~, kf4=\E[14~, kf40=\E[26;2~, kf41=\E[28;2~,
- kf42=\E[29;2~, kf43=\E[31;2~, kf44=\E[32;2~,
- kf45=\E[33;2~, kf46=\E[34;2~, kf47=\E[35;2~,
- kf48=\E[36;2~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
- kf8=\E[19~, kf9=\E[20~, khome=\E[H,
+ kdch1=^?, kend=\E[4~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
+ kf12=\E[24~, kf13=\E[11;2~, kf14=\E[12;2~, kf15=\E[13;2~,
+ kf16=\E[14;2~, kf17=\E[15;2~, kf18=\E[17;2~,
+ kf19=\E[18;2~, kf2=\E[12~, kf20=\E[19;2~, kf21=\E[20;2~,
+ kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~, kf25=\E[23~,
+ kf26=\E[24~, kf27=\E[25~, kf28=\E[26~, kf29=\E[28~,
+ kf3=\E[13~, kf30=\E[29~, kf31=\E[31~, kf32=\E[32~,
+ kf33=\E[33~, kf34=\E[34~, kf35=\E[35~, kf36=\E[36~,
+ kf37=\E[23;2~, kf38=\E[24;2~, kf39=\E[25;2~, kf4=\E[14~,
+ kf40=\E[26;2~, kf41=\E[28;2~, kf42=\E[29;2~,
+ kf43=\E[31;2~, kf44=\E[32;2~, kf45=\E[33;2~,
+ kf46=\E[34;2~, kf47=\E[35;2~, 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\\,
+ 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=%?%p1%{19}%=%t\E\023\021%e%p1%{32}%<%t\E%p1%c%e%p1%{127}%=%t\E\177%e%p1%c%;,
+ dispc=%?%p1%{19}%=%t\E\023\021%e%p1%{32}%<%t\E%p1%c%e%p1
+ %{127}%=%t\E\177%e%p1%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,
vt420f|DEC VT420 with VT kbd; VT400 mode; F1-F5 used as Fkeys,
- kdch1=\177, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
+ kdch1=^?, 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~,
@@ -3422,8 +2918,18 @@ vt520|DEC VT520,
vt525|DEC VT525,
use=vt520,
-#### VT100 emulations
+# I just got a brand new Boundless VT520 with that company's "ANSI 2011"
+# Keyboard, which replaces the old LK41R-AA keyboard.
#
+# In trying to get the function keys to work, I had to cobble my own
+# terminfo.src entry, since the existing vt520 entry doesn't include most of
+# the function keys. If I blend the entries for "vt420f" and "vt220+keypad"
+# I seem to get them all -Mike Gran
+vt520ansi|Boundless VT520 ANSI,
+ use=ansi+rca, use=vt420f, use=vt220+keypad,
+ use=ansi+tabs,
+
+#### VT100 emulations
# John Hawkinson <jhawk@MIT.EDU> tells us that the EWAN telnet for Windows
# (the best Windows telnet as of September 1995) presents the name `dec-vt100'
@@ -3446,20 +2952,893 @@ dec-vt220|DOS tnvt200 terminal emulator,
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,
- rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H,
- use=vt320-w,
+ rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H, use=vt320-w,
z340-nam|zstem vt340 terminal emulator 132col 42line (no automatic margins),
am@,
is2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H,
- rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H,
- use=z340,
+ rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H, use=z340,
+# expect-5.44.1.15/example/tkterm
+# a minimal subset of a vt100 (compare with "news-unk).
+#
+# The missing "=" in smkx is not a typo (here), but an error in tkterm.
+tt|tkterm|Don Libes' tk text widget terminal emulator,
+ clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
+ cup=\E[%p1%d;%p2%dH, cuu1=\E[A, ind=\n, kf1=\EOP, kf2=\EOQ,
+ kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
+ kf9=\EOX, rmkx=\E[?1l\E>, rmso=\E[m, smkx=\E[?1h\E,
+ smso=\E[7m,
+
+######## APPLE
+
+#### Terminal.app
+
+# nsterm*|Apple_Terminal - AppKit Terminal.app
+#
+# Terminal.app is a Terminal emulator bundled with NeXT's NeXTSTEP and
+# OPENSTEP/Mach operating systems, and with Apple's Rhapsody, Mac OS X
+# Server and Mac OS X operating systems. There is also a
+# "terminal.app" in GNUstep, but I believe it to be an unrelated
+# codebase and I have not attempted to describe it here.
+#
+# For NeXTSTEP, OPENSTEP/Mach, Rhapsody and Mac OS X Server 1.0, you
+# are pretty much on your own. Use "nsterm-7-m" and hope for the best.
+# You might also try "nsterm-7" and "nsterm-old" if you suspect your
+# version supports color.
+#
+# To determine the version of Terminal.app you're using by running:
+#
+# echo "$TERM_PROGRAM" "$TERM_PROGRAM_VERSION"
+#
+# For Apple_Terminal v309+, use "nsterm-256color" (or "nsterm-bce")
+#
+# For Apple_Terminal v200+, use "nsterm-16color" (a.k.a. "nsterm")
+#
+# For Apple_Terminal v71+/v100+, use "nsterm-bce".
+#
+# For Apple_Terminal v51+, use "nsterm-7-c" or "nsterm-7-c-s".
+#
+# For Apple_Terminal v41+, use "nsterm-old", or "nsterm-s".
+#
+# For all earlier versions (Apple_Terminal), try "nsterm-7-m"
+# (monochrome) or "nsterm-7" (color); "nsterm-7-m-s" and "nsterm-7-s"
+# might work too, but really you're on your own here since these
+# systems are very obsolete and I can't test them. I do welcome
+# patches, though :).
+
+# Other Terminals:
+#
+# For GNUstep_Terminal, you're probably best off using "linux" or
+# writing your own terminfo.
+
+# For MacTelnet, you're on your own. It's a different codebase, and
+# seems to be somewhere between "vt102", "ncsa" and "xterm-color".
+
+# For iTerm.app, see "iterm".
+
+#
+# The AppKit Terminal.app descriptions all have names beginning with
+# "nsterm". Note that the statusline (-s) versions use the window
+# titlebar as a phony status line, and may produce warnings during
+# compilation as a result ("tsl uses 0 parameters, expected 1".)
+# Ignore these warnings, or even ignore these entries entirely. Apps
+# which need to position the cursor or do other fancy stuff inside the
+# status line won't work with these entries. They're primarily useful
+# for programs like Pine which provide simple notifications in the
+# status line. Please note that non-ASCII characters don't work right
+# in the status line, since Terminal.app incorrectly interprets their
+# Unicode codepoints as MacRoman codepoints (in earlier Mac OS X
+# versions) or only accepts status lines consisting entirely of
+# characters from the first 256 Unicode positions (including C1 but
+# not C0 or DEL.)
+#
+# The Mythology* of AppKit Terminal.app:
+#
+# In the days of NeXTSTEP 0.x and 1.x there were two incompatible
+# bundled terminal emulators, Shell and Terminal. Scott Hess wrote a
+# shareware replacement for Terminal called "Stuart" which NeXT bought
+# and used as the basis for the Terminal.app in NeXTSTEP 2+,
+# OPENSTEP/Mach, Apple Rhapsody, Mac OS X Server 1.0, and Mac OS X. I
+# don't know the TERM_PROGRAM and TERM_PROGRAM_VERSION settings or
+# capabilities for the early versions, but I believe that the
+# TERM_PROGRAM_VERSION may have been reset at some point.
+#
+# The early versions were tailored to the NeXT character set. Sometime
+# after the Apple acquisition the encoding was switched to MacRoman
+# (initially with serious altcharset bugs due to incomplete conversion
+# of the old NeXT code,) and then later to UTF-8. Also sometime during
+# or just prior to the early days of Mac OS X, the Terminal grew ANSI
+# 8-color support (initially buggy when combined with attributes, but
+# that was later fixed.) More recently, around Mac OS X version 10.3
+# or so (Terminal.app v100+) xterm-like 16-color support was added. In
+# some versions (for instance 133-1 which shipped with Mac OS X
+# version 10.4) this suffered from the <bce> bug, but that seems to
+# have been fixed in Mac OS X version 10.5 (Terminal.app v240.2+).
+#
+# In the early days of Mac OS X the terminal was fairly buggy and
+# would routinely crash under load. Many of these bugs seem to have
+# been fixed around Mac OS X version 10.3 (Terminal.app v100+) but
+# some may still remain. This change seems to correspond to
+# Terminal.app reporting "xterm-color" as $TERM rather than "vt100" as
+# it did previously.
+#
+# * This may correspond with what actually happened, but I don't
+# know. It is based on guesswork, hearsay, private correspondence,
+# my faulty memory, and the following online sources and references:
+#
+# [1] "Three Scotts and a Duane" by Simson L. Garfinkel
+# http://www.nextcomputers.org/NeXTfiles/Articles/NeXTWORLD/93.8/93.8.Dec.Community1.html
+#
+# [2] NeXTSTEP entry from Wikipedia, the free encyclopedia
+# https://secure.wikimedia.org/wikipedia/en/wiki/Nextstep
+#
+# * Renamed the AppKit Terminal.app entry from "Apple_Terminal" to
+# "nsterm" to comply with the name length and case conventions and
+# limitations of various software packages [notably Solaris terminfo
+# and UNIX.] A single Apple_Terminal alias is retained for
+# backwards-compatibility.
+#
+# * Added function key support (F1-F4). These only work in Terminal.app
+# version 51, hopefully the capabilities won't cause problems for people
+# using version 41.
+#
+# * Added "full color" (-c) entries which support the 16-color mode in
+# version 51.
+#
+# * By default, version 51 uses UTF-8 encoding with broken altcharset
+# support, so "ASCII" (-7) entries without altcharset support were
+# added.
+
+# nsterm - AppKit Terminal.app
+#
+# Apple's Mac OS X includes a Terminal.app derived from the old NeXT
+# Terminal.app. It is a partial VT100 emulation with some xterm-like
+# extensions. This terminfo was written to describe versions 41
+# (shipped with Mac OS X version 10.0) and 51 (shipped with Mac OS X
+# version 10.1) of Terminal.app.
+#
+# Terminal.app runs under the Mac OS X Quartz windowing system (and
+# other AppKit-supported windowing systems.) On the Mac OS X machine I
+# use, the executable for Terminal.app is:
+# /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal
+#
+# If you're looking for a description of the full-screen system
+# console which runs under Apple's Darwin operating system on PowerPC
+# platforms, see the "xnuppc" entry instead.
+#
+# There were no function keys in version 41. In version 51, there are
+# four working function keys (F1, F2, F3 and F4.) The function keys
+# are included in all of these entries.
+#
+# It does not support mouse pointer position reporting. Under some
+# circumstances the cursor can be positioned using option-click; this
+# works by comparing the cursor position and the selected position,
+# and simulating enough cursor-key presses to move the cursor to the
+# selected position. This technique fails in all but the simplest
+# applications.
+#
+# It provides partial ANSI color support (background colors interacted
+# badly with bold in version 41, though, as reflected in :ncv:.) The
+# monochrome (-m) entries are useful if you've disabled color support
+# or use a monochrome monitor. The full color (-c) entries are useful
+# in version 51, which doesn't exhibit the background color bug. They
+# also enable an xterm-compatible 16-color mode.
+#
+# The configurable titlebar is set using xterm-compatible sequences;
+# it is used as a status bar in the statusline (-s) entries. Its width
+# depends on font sizes and window sizes, but 50 characters seems to
+# be the default for an 80x24 window.
+#
+# The MacRoman character encoding is used for some of the alternate
+# characters in the "MacRoman" entries; the "ASCII" (-7) entries
+# disable alternate character set support entirely, and the "VT100"
+# (-acs) entries rely instead on Terminal.app's own buggy VT100
+# graphics emulation, which seems to think the character encoding is
+# the old NeXT charset instead of MacRoman. The "ASCII" (-7) entries
+# are useful in Terminal.app version 51, which supports UTF-8 and
+# other ASCII-compatible character encodings but does not correctly
+# implement VT100 graphics; once VT100 graphics are correctly
+# implemented in Terminal.app, the "VT100" (-acs) entries should be
+# usable in any ASCII-compatible character encoding [except perhaps
+# in UTF-8, where some experts argue for disallowing alternate
+# characters entirely.]
+#
+# Terminal.app reports "vt100" as the terminal type, but exports
+# several environment variables which may aid detection in a shell
+# profile (i.e. .profile or .login):
+#
+# TERM=vt100
+# TERM_PROGRAM=Apple_Terminal
+# TERM_PROGRAM_VERSION=41 # in Terminal.app version 41
+# TERM_PROGRAM_VERSION=51 # in Terminal.app version 51
+#
+# For example, the following Bourne shell script would detect the
+# correct terminal type:
+#
+# if [ :"$TERM" = :"vt100" -a :"$TERM_PROGRAM" = :"Apple_Terminal" ]
+# then
+# export TERM
+# if [ :"$TERM_PROGRAM_VERSION" = :41 ]
+# then
+# TERM="nsterm-old"
+# else
+# TERM="nsterm-c-7"
+# fi
+# fi
+#
+# In a C shell derivative, this would be accomplished by:
+#
+# if ( $?TERM && $?TERM_PROGRAM && $?TERM_PROGRAM_VERSION) then
+# if ( :"$TERM" == :"vt100" && :"$TERM_PROGRAM" == :"Apple_Terminal" ) then
+# if ( :"$TERM_PROGRAM_VERSION" == :41 ) then
+# setenv TERM "nsterm-old"
+# else
+# setenv TERM "nsterm-c-7"
+# endif
+# endif
+# endif
+
+# The '+' entries are building blocks
+nsterm+7|AppKit Terminal.app v41+ basic capabilities w/ASCII charset,
+ am, bw, msgr, xenl, xon,
+ cols#80, it#8, lines#24,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
+ el1=\E[1K, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L,
+ ind=\n, invis=\E[8m, kbs=^?, kcub1=\EOD, kcud1=\EOB,
+ kcuf1=\EOC, kcuu1=\EOA, kent=\EOM, rc=\E8, rev=\E[7m, ri=\EM,
+ rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+ rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
+ %p5%t;2%;%?%p7%t;8%;m,
+ sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
+ smul=\E[4m, tbc=\E[3g, use=vt100+enq, use=vt100+pfkeys,
+
+nsterm+acs|AppKit Terminal.app v41+ basic capabilities w/VT100 alternate-charset,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ enacs=\E(B\E)0, rmacs=^O,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
+ %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, use=nsterm+7,
+
+nsterm+mac|AppKit Terminal.app v41+ basic capabilities w/MacRoman alternate-charset,
+ acsc=+\335\,\334-\366.\3770#`\327a\:f\241g\261h#i
+ \360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{
+ \271|\255}\243~\245,
+ enacs=\E(B\E)0, rmacs=^O,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
+ %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, use=nsterm+7,
+
+# compare with xterm+sl-twm
+nsterm+s|AppKit Terminal.app v41+ status-line (window titlebar) support,
+ wsl#50, use=xterm+sl-twm,
+
+nsterm+c|AppKit Terminal.app v51+ full color support (including 16 colors),
+ op=\E[0m, use=ibm+16color,
+
+nsterm+c41|AppKit Terminal.app v41 color support,
+ colors#8, ncv#37, pairs#64,
+ op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+
+# These are different combinations of the building blocks
+
+# ASCII charset (-7)
+nsterm-m-7|nsterm-7-m|AppKit Terminal.app v41+ w/ASCII charset (monochrome),
+ use=nsterm+7,
+
+nsterm-m-s-7|nsterm-7-m-s|AppKit Terminal.app v41+ w/ASCII charset (monochrome w/statusline),
+ use=nsterm+s, use=nsterm+7,
+
+nsterm-7|AppKit Terminal.app v41+ w/ASCII charset (color),
+ use=nsterm+c41, use=nsterm+7,
+
+nsterm-7-c|nsterm-c-7|AppKit Terminal.app v51+ w/ASCII charset (full color),
+ use=nsterm+c, use=nsterm+7,
+
+nsterm-s-7|nsterm-7-s|AppKit Terminal.app v41+ w/ASCII charset (color w/statusline),
+ use=nsterm+s, use=nsterm+c41, use=nsterm+7,
+
+nsterm-c-s-7|nsterm-7-c-s|AppKit Terminal.app v51+ w/ASCII charset (full color w/statusline),
+ use=nsterm+s, use=nsterm+c, use=nsterm+7,
+
+# VT100 alternate-charset (-acs)
+nsterm-m-acs|nsterm-acs-m|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome),
+ use=nsterm+acs,
+
+nsterm-m-s-acs|nsterm-acs-m-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome w/statusline),
+ use=nsterm+s, use=nsterm+acs,
+
+nsterm-acs|AppKit Terminal.app v41+ w/VT100 alternate-charset (color),
+ use=nsterm+c41, use=nsterm+acs,
+
+nsterm-c-acs|nsterm-acs-c|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color),
+ use=nsterm+c, use=nsterm+acs,
+
+nsterm-s-acs|nsterm-acs-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (color w/statusline),
+ use=nsterm+s, use=nsterm+c41, use=nsterm+acs,
+
+nsterm-c-s-acs|nsterm-acs-c-s|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color w/statusline),
+ use=nsterm+s, use=nsterm+c, use=nsterm+acs,
+
+# MacRoman charset
+nsterm-m|AppKit Terminal.app v41+ w/MacRoman charset (monochrome),
+ use=nsterm+mac,
+
+nsterm-m-s|AppKit Terminal.app v41+ w/MacRoman charset (monochrome w/statusline),
+ use=nsterm+s, use=nsterm+mac,
+
+nsterm-old|AppKit Terminal.app v41+ w/MacRoman charset (color),
+ use=nsterm+c41, use=nsterm+mac,
+
+nsterm-c|AppKit Terminal.app v51+ w/MacRoman charset (full color),
+ use=nsterm+c, use=nsterm+mac,
+
+nsterm-s|AppKit Terminal.app v41+ w/MacRoman charset (color w/statusline),
+ use=nsterm+s, use=nsterm+c41, use=nsterm+mac,
+
+nsterm-c-s|AppKit Terminal.app v51+ w/MacRoman charset (full color w/statusline),
+ use=nsterm+s, use=nsterm+c, use=nsterm+mac,
+
+# In Mac OS X version 10.5 the format of the preferences has changed
+# and a new, more complex technique is needed, e.g.,
+#
+# python -c 'import sys,objc;NSUserDefaults=objc.lookUpClass(
+# "NSUserDefaults");ud=NSUserDefaults.alloc();
+# ud.init();prefs=ud.persistentDomainForName_(
+# "com.apple.Terminal");prefs["Window Settings"][
+# prefs["Default Window Settings"]]["TerminalType"
+# ]=sys.argv[1];ud.setPersistentDomain_forName_(prefs,
+# "com.apple.Terminal")' nsterm-16color
+#
+# and it is still not settable from the preferences dialog. This is
+# tracked under rdar://problem/7365108 and rdar://problem/7365134
+# in Apple's bug reporter.
+#
+# In OS X 10.5 (Leopard) the TERM which can be set in the preferences dialog
+# defaults to xterm-color. Alternative selections are ansi, dtterm, rxvt,
+# vt52, vt100, vt102 and xterm.
+nsterm-16color|AppKit Terminal.app v240.2+ with Mac OS X version 10.5,
+ bw@, mir, npc,
+ civis=\E[?25l, cnorm=\E[?25h, dch=\E[%p1%dP, dch1=\E[P,
+ flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG,
+ ich=\E[%p1%d@, ich1=\E[@, kdch1=\E[3~, kend=\E[F,
+ 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[22~, kf19=\E[33~, kf20=\E[34~, kf5=\E[15~,
+ kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H,
+ knp=\E[6~, kpp=\E[5~, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
+ smcup=\E7\E[?47h, smir=\E[4h, vpa=\E[%i%p1%dd,
+ kLFT5=\E[5D, kRIT5=\E[5C, use=nsterm-c-s-acs,
+
+# The versions of Terminal.app in Mac OS X version 10.3.x seem to have
+# the background color erase feature. The newer version 240.2 in Mac OS X
+# version 10.5 does not.
+#
+# This entry is based on newsgroup comments by Alain Bench, Christian Ebert,
+# and D P Schreber comparing to nsterm-c-s-acs.
+#
+# In Mac OS X version 10.4 and earlier, D P Schreber notes that $TERM
+# can be set in Terminal.app, e.g.,
+#
+# defaults write com.apple.Terminal TermCapString nsterm-bce
+#
+# and that it is not set in Terminal's preferences dialog.
+#
+# Modified for OS X 10.8, omitting bw based on testing with tack -TD
+#
+# Notes:
+# * The terminal description matches the default settings.
+# * The keyboard is configurable via a dialog.
+# * By default khome, kend, knext and kprev are honored only with a
+# shift-modifier.
+# * There are bindings for control left/right arrow (but not up/down).
+# Added those to nsterm-16color, which is the version used for OS X 10.6
+# * "Allow VT100 application keypage mode" is by default disabled.
+# There is no way to press keypad-comma unless application mode is enabled
+# and used.
+# * 132-column mode stopped working during vttest's tests. Consider it broken.
+# * CHT, REP, SU, SD are buggy.
+# * ECH works (also in Leopard), but is not used here for compatibility.
+# * The terminal preferences dialog replaces xterm-color by xterm-16color and
+# xterm-256color. However, it adds "nsterm", so it is possible to use the
+# nsterm entry from this file to override the MacPorts (20110404) or
+# system (20081102) copy of this file.
+# + In OS X 10.8 (Mountain Lion) the TERM which can be set in the preferences
+# dialog defaults to xterm-256color. Alternative selections are ansi,
+# dtterm, rxvt, vt52, vt100, vt102, xterm and xterm-16color. However,
+# the menu says "Declare terminal as" without promising to actually emulate
+# the corresponding terminals. Indeed, changing TERM does not affect the
+# emulation itself. This means that
+# + the function-keys do not match for dtterm for kf1-kf4 as well as
+# khome/kend
+# + the color model is the same for each setting of TERM (does not match
+# ansi or dtterm).
+# + the shift/control/meta key modifiers from rxvt and xterm variants are not
+# recognised except for a few special cases, i.e., kRIT5 and kLFT5.
+# + the vt52 emulation does not give a usable shell because screen-clearing
+# does not work as expected.
+# + selecting "xterm" or "xterm-16color" sets TERM to "xterm-256color".
+# + OSX 10.9 (Yosemite) added more extended keys in the default configuration
+# as well as unmasking F10 (which had been used in the window manager). Those
+# keys are listed in this entry.
+nsterm-bce|AppKit Terminal.app v71+/v100.1.8+ with Mac OS X version 10.3/10.4 (bce),
+ bce, use=nsterm-16color,
+
+# This is tested with OS X 10.8 (Mountain Lion), 2012/08/11
+# TERM_PROGRAM_VERSION=309
+# Earlier reports state that these differences also apply to OS X 10.7 (Lion),
+# TERM_PROGRAM_VERSION=303
+nsterm-build309|Terminal.app in OS X 10.8,
+ use=xterm+256setaf, use=nsterm-bce,
+
+# removed bogus kDC7 -TD
+nsterm-build326|Terminal.app in OS X 10.9,
+ kDC=\E[3;2~, kLFT=\E[1;2D, kRIT=\E[1;2C, kcbt=\E[Z,
+ kf18=\E[32~, kDC5=\E[3;5~, kLFT3=\Eb, kLFT5=\E[1;5D,
+ kRIT3=\Ef, kRIT5=\E[1;5C, use=nsterm-build309,
+
+# actually "343.7"
+nsterm-build343|Terminal.app in OS X 10.10,
+ kend=\EOF, khome=\EOH, use=nsterm-build326,
+
+# reviewed Terminal.app in El Capitan (version 2.6 build 361) -TD
+# Using vttest:
+# + no vt52 mode for cursor keys, though vt52 screen works in vttest
+# + f1-f4 map to pf1-pf4
+# + no vt220 support aside from DECTCEM and ECH
+# + there are no protected areas. Forget about anything above vt220.
+# + in ECMA-48 cursor movement, VPR and HPR fail. Others work.
+# + vttest color 11.6.4 and 11.6.5 (bce for ED/EL and ECH/indexing) are bce
+# + but bce fails for 11.6.7.2 (test repeat).
+# + SD (11.6.7.3) also fails, but SL/SR/SU work.
+# + 11.6.6 (test insert/delete char/line with bce) has several failures.
+# + normal (not X10 or Highlight tracking) mouse now works.
+# + mouse any-event works
+# + mouse button-event works
+# + in alternate screen:
+# mode 47/48 work
+# mode 1047 fails to restore cursor position (do not use)
+# mode 1049 fails to restore screen contents (do not use)
+# + dtterm window-modify operations work (some messages are not printed)
+# + dtterm window-report gives size of window in characters/pixels as
+# well as state of window.
+# Using tack:
+# + there is no difference between cnorm/cvvis
+# + has dim/invis/blink (no protect of course)
+# + most function keys with shift/control modifiers give beep
+# (user can configure, but out-of-the-box is what I record)
+# + shift-F5 is \E[25~ through shift-F12 is \E[34~ (skips \E[30~ between
+# F8 and F9).
+# + kLFT5/kRIT5 work, but not up/down with control-modifier
+# + kLFT/kRIT work, but not up/down with shift-modifier
+# + there are a few predefined bindings with Alt, but no clear pattern.
+# + uses alt-key as UTF-8 "meta" something like xterm altSendsEscape
+# Using ncurses test-program with xterm-new:
+# + no italics
+# Using xterm's scripts:
+# + palette for 256-colors is hardcoded.
+# + no support for "dynamic colors"
+# + no support for tcap-query.
+nsterm-build361|Terminal.app in OS X 10.11,
+ XT,
+ kmous=\E[M, use=nsterm-build343,
+
+# reviewed Terminal.app in High Sierra (version 2.8 build 400) -TD
+# Comparing with build361, little has changed, except that italics work.
+# Direct-color is not supported, by the way.
+#
+# Improved rmso/rmul -TD
+nsterm-build400|Terminal.app in OS X 10.13,
+ rmso=\E[27m, rmul=\E[24m, use=xterm+sm+1006,
+ use=ecma+italics, use=nsterm-build361,
+
+# This is an alias which should always point to the "current" version
+nsterm|nsterm-256color|Apple_Terminal|AppKit Terminal.app,
+ use=nsterm-build400,
+
+#### iTerm, iTerm2
+
+# iTerm 0.10
+#
+# iTerm.app from http://iterm.sourceforge.net/ is an alternative (and more
+# featureful) terminal emulator for Mac OS X. It is similar enough in
+# capabilities to nsterm-16color that I have derived this description from that
+# one, but as far as I know they share no code. Many of the features are
+# user-configurable, but I attempt only to describe the default configuration
+# (B. Sittler).
+#
+# According to its documentation, iTerm uses terminfo to obtain function key
+# definitions. For example, if it is started with TERM=xterm, it uses key
+# definitions from that terminal description from the local OSX machine. Those
+# $TERM settings may be augmented using the bookmark and profile dialogs.
+# However, the behavior seen with tack does not agree with either the terminfo
+# description or the function keys in its "xterm" profile.
+#
+# NOTES:
+# with vttest:
+# reports primary DA as VT100 with AVO: \E[?1;2c
+# reports secondary DA as "\E[>0;95;c"
+# supports blink and underline
+# displays bold text as red
+# recognizes all dtterm controls for modifying/querying window
+# resizing via escape sequence is very slow
+# supports X11R5 mouse (no X10) and XFree86 mouse (button- and event-tracking)
+# supports X11R5 alternate screen and XFree86 1049 (no 1047/1048)
+# supports CHA, VPA, VPR, but no other ECMA-48 cursor movement such as HPA
+# with tack:
+# .
+# with ncurses test-program:
+# ncurses 'k' has problem in second screen; light background does not fill
+# with xterm scripts
+# can display/alter xterm-256color cube
+# can display/alter xterm-88color cube
+iTerm.app|iterm|iTerm.app terminal emulator for Mac OS X,
+ am, bce, hs, mir, msgr, npc, xenl, xon,
+ cols#80, it#8, lines#24, wsl#50,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+ clear=\E[H\E[J, cnorm=\E[?25h, cr=\r,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+ el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
+ flash=\E[?5h$<200/>\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=\n, kLFT=\E[1;2D, kRIT=\E[1;2C, kbs=^?,
+ kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ kdch1=\E[3~, kend=\EOF, kent=\EOM, kf1=\EOP, kf10=\E[21~,
+ kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+ kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ khome=\EOH, knp=\E[6~, kpp=\E[5~, op=\E[0m, 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[m, rmul=\E[m,
+ rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?
+ %p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E7\E[?47h,
+ smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+ tbc=\E[3g, vpa=\E[%i%p1%dd, kEND5=\E[1;5F, kHOM5=\E[1;5H,
+ use=ansi+enq, use=xterm+sl-twm, use=vt100+keypad,
+ use=xterm+x11mouse, use=xterm+256setaf,
+
+# iTerm2 3.0.15
+#
+# https://www.iterm2.com/
+# https://github.com/gnachman/iTerm2
+# ~/Library/Preferences/com.googlecode.iterm2.plist
+# "iTerm" stalled in 2009. A different set of developers began "iTerm2".
+#
+# NOTES:
+# with vttest:
+# reports primary DA as VT100 with AVO: \E[?1;2c
+# reports secondary DA as "\E[>0;95;0c"
+# numeric keypad application mode does not work
+# by default, dtterm window-modifications are ignored
+# by default, dtterm window-reports return, but icon as "L", window as "l"
+# supports SD/SU, no REP, SL, SR
+# supports CBT, CHA, VPA, CNL, CPL, VPR (no HPA, CHT, HPR)
+# no improvement to XFree86 1047/1048 modes
+# with tack:
+# in meta-mode, imitates xterm, sending UTF-8
+# special-key modifiers based on xterm use incompatible default for alt/meta
+# with ncurses test-program:
+# no italics
+# no improvement to ncurses 'k'
+# with xterm scripts:
+# acolors.sh works
+#
+# Italic text did not work initially, apparently because upgrading did not
+# add/change that preference (set in Preferences, Profiles, Text). A new
+# install of iTerm 3.0.15 provides italics by default (blinking text is an
+# option in the preferences dialog).
+#
+# 2018/01/21: found xterm+sm+1006 did not work with version 3.1.5
+# 2018/05/19: xterm+sm+1006 seems to work with 3.1.6beta -TD
+iTerm2.app|iterm2|terminal emulator for Mac OS X,
+ blink=\E[5m, cbt=\E[Z, dim=\E[2m, kEND=\E[1;2F,
+ kHOM=\E[1;2H, ka1@, ka3@, kb2@, kc1@, kc3@, kent@, kf13=\E[1;2P,
+ kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~,
+ kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~,
+ kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~,
+ kf24=\E[24;2~, kind=\E[1;2B, kri=\E[1;2A, nel=\EE,
+ op=\E[39;49m, rmso=\E[27m, rmul=\E[24m,
+ rs2=\E[!p\E[?3;4l\E[4l\E>\E[?1000l,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
+ %p5%t;2%;m%?%p9%t\016%e\017%;,
+ kDN3=\E\E[B, kDN4=\E[1;10B, kDN5=\E[1;5B, kDN6=\E[1;6B,
+ kEND3=\E[1;9F, kEND4=\E[1;10F, kEND6=\E[1;6F,
+ kEND7=\E[1;13F, kEND8=\E[1;14F, kHOM3=\E[1;9H,
+ kHOM4=\E[1;10H, kHOM6=\E[1;6H, kHOM7=\E[1;13H,
+ kHOM8=\E[1;14H, kLFT3=\E\E[D, kLFT4=\E[1;10D,
+ kLFT5=\E[1;5D, kLFT6=\E[1;6D, kNXT3=\E\E[6~,
+ kPRV3=\E\E[5~, kRIT3=\E\E[C, kRIT4=\E[1;10C,
+ kRIT5=\E[1;5C, kRIT6=\E[1;6C, kUP3=\E\E[A, kUP4=\E[1;10A,
+ kUP5=\E[1;5A, kUP6=\E[1;6A, use=ecma+index,
+ use=xterm+alt+title, use=ecma+italics, use=iterm,
+
+# xnuppc - Darwin PowerPC Console (a.k.a. "darwin")
+#
+# On PowerPC platforms, Apple's Darwin operating system uses a
+# full-screen system console derived from a NetBSD framebuffer
+# console. It is an ANSI-style terminal, and is not really VT-100
+# compatible.
+#
+# Under Mac OS X, this is the system console driver used while in
+# single-user mode [reachable by holding down Command-S during the
+# boot process] and when logged in using console mode [reachable by
+# typing ">console" at the graphical login prompt.]
+#
+# If you're looking for a description of the Terminal.app terminal
+# emulator which runs under the Mac OS X Quartz windowing system (and
+# other AppKit-supported windowing systems,) see the "nsterm"
+# entry instead.
+#
+# NOTE: Under Mac OS X version 10.1, the default login window does not
+# prompt for user name, instead requiring an icon to be selected from
+# a list of known users. Since the special ">console" login is not in
+# this list, you must make one of two changes in the Login Window
+# panel of the Login section of System Prefs to make the special
+# ">console" login accessible. The first option is to enable 'Show
+# "Other User" in list for network users', which will add a special
+# "Other..." icon to the graphical login panel. Selecting "Other..."
+# will present the regular graphical login prompt. The second option
+# is to change the 'Display Login Window as:' setting to 'Name and
+# password entry fields', which replaces the login panel with a
+# graphical login prompt.
+#
+# There are no function keys, at least not in Darwin 1.3.
+#
+# It has no mouse support.
+#
+# It has full ANSI color support, and color combines correctly with
+# all three supported attributes: bold, inverse-video and underline.
+# However, bold colored text is almost unreadable (bolding is
+# accomplished using shifting and or-ing, and looks smeared) so bold
+# has been excluded from the list of color-compatible attributes
+# [using (ncv)]. The monochrome entry (-m) is useful if you use a
+# monochrome monitor.
+#
+# There is one serious bug with this terminal emulation's color
+# support: repositioning the cursor onto a cell with non-matching
+# colors obliterates that cell's contents, replacing it with a blank
+# and displaying a colored cursor in the "current" colors. There is
+# no complete workaround at present [other than using the monochrome
+# (-m) entries,] but removing the (msgr) capability seemed to help.
+#
+# The "standout" chosen was simple reverse-video, although a colorful
+# standout might be more aesthetically pleasing. Similarly, the bold
+# chosen is the terminal's own smeared bold, although a simple
+# color-change might be more readable. The color-bold (-b) entries
+# uses magenta colored text for bolding instead. The fancy color (-f
+# and -f2) entries use color for bold, standout and underlined text
+# (underlined text is still underlined, though.)
+#
+# Apparently the terminal emulator does support a VT-100-style
+# alternate character set, but all the alternate character set
+# positions have been left blank in the font. For this reason, no
+# alternate character set capabilities have been included in this
+# description. The console driver appears to be ASCII-only, so (enacs)
+# has been excluded [although the VT-100 sequence does work.]
+#
+# The default Mac OS X and Darwin installation reports "vt100" as the
+# terminal type, and exports no helpful environment variables. To fix
+# this, change the "console" entry in /etc/ttys from "vt100" to
+# "xnuppc-WxH", where W and H are the character dimensions of your
+# console (see below.)
+#
+# The font used by the terminal emulator is apparently one originally
+# drawn by Ka-Ping Yee, and uses 8x16-pixel characters. This
+# file includes descriptions for the following geometries:
+#
+# Pixels Characters Entry Name (append -m for monochrome)
+# -------------------------------------------------------------------
+# 640x400 80x25 xnuppc-80x25
+# 640x480 80x30 xnuppc-80x30
+# 720x480 90x30 xnuppc-90x30
+# 800x600 100x37 xnuppc-100x37
+# 896x600 112x37 xnuppc-112x37
+# 1024x640 128x40 xnuppc-128x40
+# 1024x768 128x48 xnuppc-128x48
+# 1152x768 144x48 xnuppc-144x48
+# 1280x1024 160x64 xnuppc-160x64
+# 1600x1024 200x64 xnuppc-200x64
+# 1600x1200 200x75 xnuppc-200x75
+# 2048x1536 256x96 xnuppc-256x96
+#
+# The basic "xnuppc" entry includes no size information, and the
+# emulator includes no reporting capability, so you'll be at the mercy
+# of the TTY device (which reports incorrectly on my hardware.) The
+# color-bold entries do not include size information.
+
+# The '+' entries are building blocks
+xnuppc+basic|Darwin PowerPC Console basic capabilities,
+ am, bce, mir, xenl,
+ it#8,
+ bold=\E[1m, clear=\E[H\E[J, cr=\r, 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, dsl=\E]2;\007, ed=\E[J, el=\E[K,
+ el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^?,
+ kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8,
+ rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m,
+ rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+ sc=\E7,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
+ sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
+ smul=\E[4m, tbc=\E[3g, use=vt100+keypad,
+
+xnuppc+c|Darwin PowerPC Console ANSI color support,
+ colors#8, ncv#32, pairs#64,
+ op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+
+xnuppc+b|Darwin PowerPC Console color-bold support,
+ ncv#32,
+ bold=\E[35m,
+ sgr=\E[0%?%p6%t;35%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
+ use=xnuppc+basic,
+
+xnuppc+f|Darwin PowerPC Console fancy color support,
+ ncv#35,
+ sgr=\E[0%?%p6%t;35%;%?%p2%t;36;4%;%?%p1%t;33;44%;%?%p3%t;7%;
+ m,
+ smso=\E[33;44m, smul=\E[36;4m, use=xnuppc+b,
+
+xnuppc+f2|Darwin PowerPC Console alternate fancy color support,
+ ncv#35,
+ bold=\E[33m,
+ sgr=\E[0%?%p6%t;33%;%?%p2%t;34%;%?%p1%t;31;47%;%?%p3%t;7%;m,
+ smso=\E[31;47m, smul=\E[34m, use=xnuppc+basic,
+
+# Building blocks for specific screen sizes
+xnuppc+80x25|Darwin PowerPC Console 80x25 support (640x400 pixels),
+ cols#80, lines#25,
+
+xnuppc+80x30|Darwin PowerPC Console 80x30 support (640x480 pixels),
+ cols#80, lines#30,
+
+xnuppc+90x30|Darwin PowerPC Console 90x30 support (720x480 pixels),
+ cols#90, lines#30,
+
+xnuppc+100x37|Darwin PowerPC Console 100x37 support (800x600 pixels),
+ cols#100, lines#37,
+
+xnuppc+112x37|Darwin PowerPC Console 112x37 support (896x600 pixels),
+ cols#112, lines#37,
+
+xnuppc+128x40|Darwin PowerPC Console 128x40 support (1024x640 pixels),
+ cols#128, lines#40,
+
+xnuppc+128x48|Darwin PowerPC Console 128x48 support (1024x768 pixels),
+ cols#128, lines#48,
+
+xnuppc+144x48|Darwin PowerPC Console 144x48 support (1152x768 pixels),
+ cols#144, lines#48,
+
+xnuppc+160x64|Darwin PowerPC Console 160x64 support (1280x1024 pixels),
+ cols#160, lines#64,
+
+xnuppc+200x64|Darwin PowerPC Console 200x64 support (1600x1024 pixels),
+ cols#200, lines#64,
+
+xnuppc+200x75|Darwin PowerPC Console 200x75 support (1600x1200 pixels),
+ cols#200, lines#75,
+
+xnuppc+256x96|Darwin PowerPC Console 256x96 support (2048x1536 pixels),
+ cols#0x100, lines#96,
+
+# These are different combinations of the building blocks
+
+xnuppc-m|darwin-m|Darwin PowerPC Console (monochrome),
+ use=xnuppc+basic,
+
+xnuppc|darwin|Darwin PowerPC Console (color),
+ use=xnuppc+c, use=xnuppc+basic,
+
+xnuppc-m-b|darwin-m-b|Darwin PowerPC Console (monochrome w/color-bold),
+ use=xnuppc+b,
+
+xnuppc-b|darwin-b|Darwin PowerPC Console (color w/color-bold),
+ use=xnuppc+b, use=xnuppc+c,
+
+xnuppc-m-f|darwin-m-f|Darwin PowerPC Console (fancy monochrome),
+ use=xnuppc+f,
+
+xnuppc-f|darwin-f|Darwin PowerPC Console (fancy color),
+ use=xnuppc+f, use=xnuppc+c,
+
+xnuppc-m-f2|darwin-m-f2|Darwin PowerPC Console (alternate fancy monochrome),
+ use=xnuppc+f2,
+
+xnuppc-f2|darwin-f2|Darwin PowerPC Console (alternate fancy color),
+ use=xnuppc+f2, use=xnuppc+c,
+
+# Combinations for specific screen sizes
+xnuppc-80x25-m|darwin-80x25-m|Darwin PowerPC Console (monochrome) 80x25,
+ use=xnuppc+80x25, use=xnuppc+basic,
+
+xnuppc-80x25|darwin-80x25|Darwin PowerPC Console (color) 80x25,
+ use=xnuppc+c, use=xnuppc+80x25, use=xnuppc+basic,
+
+xnuppc-80x30-m|darwin-80x30-m|Darwin PowerPC Console (monochrome) 80x30,
+ use=xnuppc+80x30, use=xnuppc+basic,
+
+xnuppc-80x30|darwin-80x30|Darwin PowerPC Console (color) 80x30,
+ use=xnuppc+c, use=xnuppc+80x30, use=xnuppc+basic,
+
+xnuppc-90x30-m|darwin-90x30-m|Darwin PowerPC Console (monochrome) 90x30,
+ use=xnuppc+90x30, use=xnuppc+basic,
+
+xnuppc-90x30|darwin-90x30|Darwin PowerPC Console (color) 90x30,
+ use=xnuppc+c, use=xnuppc+90x30, use=xnuppc+basic,
+
+xnuppc-100x37-m|darwin-100x37-m|Darwin PowerPC Console (monochrome) 100x37,
+ use=xnuppc+100x37, use=xnuppc+basic,
+
+xnuppc-100x37|darwin-100x37|Darwin PowerPC Console (color) 100x37,
+ use=xnuppc+c, use=xnuppc+100x37, use=xnuppc+basic,
+
+xnuppc-112x37-m|darwin-112x37-m|Darwin PowerPC Console (monochrome) 112x37,
+ use=xnuppc+112x37, use=xnuppc+basic,
+
+xnuppc-112x37|darwin-112x37|Darwin PowerPC Console (color) 112x37,
+ use=xnuppc+c, use=xnuppc+112x37, use=xnuppc+basic,
+
+xnuppc-128x40-m|darwin-128x40-m|Darwin PowerPC Console (monochrome) 128x40,
+ use=xnuppc+128x40, use=xnuppc+basic,
+
+xnuppc-128x40|darwin-128x40|Darwin PowerPC Console (color) 128x40,
+ use=xnuppc+c, use=xnuppc+128x40, use=xnuppc+basic,
+
+xnuppc-128x48-m|darwin-128x48-m|Darwin PowerPC Console (monochrome) 128x48,
+ use=xnuppc+128x48, use=xnuppc+basic,
+
+xnuppc-128x48|darwin-128x48|Darwin PowerPC Console (color) 128x48,
+ use=xnuppc+c, use=xnuppc+128x48, use=xnuppc+basic,
+
+xnuppc-144x48-m|darwin-144x48-m|Darwin PowerPC Console (monochrome) 144x48,
+ use=xnuppc+144x48, use=xnuppc+basic,
+
+xnuppc-144x48|darwin-144x48|Darwin PowerPC Console (color) 144x48,
+ use=xnuppc+c, use=xnuppc+144x48, use=xnuppc+basic,
+
+xnuppc-160x64-m|darwin-160x64-m|Darwin PowerPC Console (monochrome) 160x64,
+ use=xnuppc+160x64, use=xnuppc+basic,
+
+xnuppc-160x64|darwin-160x64|Darwin PowerPC Console (color) 160x64,
+ use=xnuppc+c, use=xnuppc+160x64, use=xnuppc+basic,
+
+xnuppc-200x64-m|darwin-200x64-m|Darwin PowerPC Console (monochrome) 200x64,
+ use=xnuppc+200x64, use=xnuppc+basic,
+
+xnuppc-200x64|darwin-200x64|Darwin PowerPC Console (color) 200x64,
+ use=xnuppc+c, use=xnuppc+200x64, use=xnuppc+basic,
+
+xnuppc-200x75-m|darwin-200x75-m|Darwin PowerPC Console (monochrome) 200x75,
+ use=xnuppc+200x75, use=xnuppc+basic,
+
+xnuppc-200x75|darwin-200x75|Darwin PowerPC Console (color) 200x75,
+ use=xnuppc+c, use=xnuppc+200x75, use=xnuppc+basic,
+
+xnuppc-256x96-m|darwin-256x96-m|Darwin PowerPC Console (monochrome) 256x96,
+ use=xnuppc+256x96, use=xnuppc+basic,
+
+xnuppc-256x96|darwin-256x96|Darwin PowerPC Console (color) 256x96,
+ use=xnuppc+c, use=xnuppc+256x96, use=xnuppc+basic,
+
+######## DOS/WINDOWS
# CRT is shareware. It implements some xterm features, including mouse.
crt|crt-vt220|CRT 2.3 emulating VT220,
bce, msgr,
ncv@,
hts=\EH, use=vt100+enq, use=vt220, use=ecma+color,
+#### PuTTY
# PuTTY 0.55 (released 3 August 2004)
# http://www.chiark.greenend.org.uk/~sgtatham/putty/
#
@@ -3482,57 +3861,107 @@ crt|crt-vt220|CRT 2.3 emulating VT220,
#
# Several features such as backspace/delete are optional; this entry documents
# the default behavior -TD
-
+#
+# PuTTY recognizes xterm's 1049 mode for switching to/from alternate screen,
+# but implements it incorrectly as mentioned here:
+# http://stackoverflow.com/questions/24613237/terminal-retains-bg-color-after-closing-vim-using-color-scheme-and-putty-256co/37869114#37869114
+# PuTTY recognized xterm's 1006 mode since late 2015; subsequent release was
+# in 2017 (0.70) -TD
putty|PuTTY terminal emulator,
am, bce, bw, ccc, mir, msgr, xenl, xon, XT,
colors#8, it#8, ncv#22, pairs#64, U8#1,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
+ clear=\E[H\E[J, cnorm=\E[?25h, cr=\r,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
dch=\E[%p1%dP, dch1=\E[P,
- dispc=%?%p1%{8}%=%t\E%%G\342\227\230\E%%@%e%p1%{10}%=%t\E%%G\342\227\231\E%%@%e%p1%{12}%=%t\E%%G\342\231\0\E%%@%e%p1%{13}%=%t\E%%G\342\231\252\E%%@%e%p1%{14}%=%t\E%%G\342\231\253\E%%@%e%p1%{15}%=%t\E%%G\342\230\274\E%%@%e%p1%{27}%=%t\E%%G\342\206\220\E%%@%e%p1%{155}%=%t\E%%G\340\202\242\E%%@%e%p1%c%;,
+ dispc=%?%p1%{8}%=%t\E%%G\342\227\230\E%%@%e%p1%{10}%=%t\E%%G
+ \342\227\231\E%%@%e%p1%{12}%=%t\E%%G\342\231\0\E%%@%e
+ %p1%{13}%=%t\E%%G\342\231\252\E%%@%e%p1%{14}%=%t\E%%G
+ \342\231\253\E%%@%e%p1%{15}%=%t\E%%G\342\230\274\E%%@
+ %e%p1%{27}%=%t\E%%G\342\206\220\E%%@%e%p1%{155}%=%t\E
+ %%G\340\202\242\E%%@%e%p1%c%;,
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, il=\E[%p1%dL, il1=\E[L,
- ind=^J, indn=\E[%p1%dS,
- initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x,
+ 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, il=\E[%p1%dL,
+ il1=\E[L, ind=\n,
+ initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/
+ %02x%p4%{255}%*%{1000}%/%02x,
is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>\E]R,
- kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~,
- kf1=\E[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~,
- khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
- kspd=^Z, nel=^M^J, oc=\E]R, op=\E[39;49m, rc=\E8, rev=\E[7m,
- ri=\EM, rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l,
- rmcup=\E[2J\E[?47l, rmir=\E[4l, rmpch=\E[10m,
- rmso=\E[27m, rmul=\E[24m,
+ kLFT=\E[D, kRIT=\E[C, kb2=\E[G, kbs=^?, kcbt=\E[Z,
+ kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ kdch1=\E[3~, kend=\E[4~, khome=\E[1~, kich1=\E[2~,
+ kind=\E[B, knp=\E[6~, kpp=\E[5~, kri=\E[A, kspd=^Z, nel=\r\n,
+ oc=\E]R, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+ rmam=\E[?7l, rmcup=\E[2J\E[?47l, rmir=\E[4l,
+ rmkx=\E[?1l\E>, rmpch=\E[10m, rmso=\E[27m, rmul=\E[24m,
rs2=\E<\E["p\E[50;6"p\Ec\E[?3l\E]R\E[?1000l,
s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, sc=\E7,
setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+ 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=\E[?47h,
- smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m,
- tbc=\E[3g, vpa=\E[%i%p1%dd, E3=\E[3;J, use=vt102+enq,
- use=xterm+sl,
+ smir=\E[4h, smkx=\E[?1h\E=, smpch=\E[11m, smso=\E[7m,
+ smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, E3=\E[3J,
+ use=ecma+index, use=xterm+sm+1006, use=putty+fnkeys,
+ use=vt102+enq, use=xterm+sl,
vt100-putty|Reset PuTTY to pure vt100,
rs2=\E<\E["p\Ec\E[?3l\E]R\E[40"p\E[61"p\E[50;1;2"p,
use=vt100,
-# palette is hardcoded...
putty-256color|PuTTY 0.58 with xterm 256-colors,
- initc@, use=xterm+256color, use=putty,
+ use=xterm+256setaf, use=putty,
+putty-noapp|putty with cursor keys in normal mode,
+ kLFT=\EOD, kRIT=\EOC, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+ kcuu1=\E[A, kind=\EOB, kri=\EOA, rmkx=\E>, smkx=\E=,
+ use=putty,
# One of the keyboard selections is "VT100+".
# pterm (the X11 port) uses shifted F1-F10 as F11-F20
putty-vt100|VT100+ keyboard layout,
+ use=putty+fnkeys+vt100, use=putty,
+
+putty-sco|putty with SCO function keys,
+ use=putty+fnkeys+sco, use=putty,
+
+# PuTTY has more than one section in its Keyboard configuration:
+# a) backspace/delete, which we ignore since that choice largely depends on
+# whether one matches Unix and BSD or Linux.
+# b) home/end keys, also ignored because the "rxvt" setting sends keys which
+# are unrelated to rxvt's actual settings.
+# c) function keys and keypad - this is the interesting part. None of the
+# selections match any of their respective namesakes, but they are shown
+# here to help users who expect that the selections do what is implied.
+#
+# This is the default setting for PuTTY
+putty+fnkeys|fn-keys for PuTTY,
+ use=putty+fnkeys+esc,
+
+putty+fnkeys+esc|ESC[n~ fn-keys for PuTTY,
+ 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~,
+
+putty+fnkeys+linux|Linux fn-keys for PuTTY,
+ kf1=\E[[A, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E,
+ use=putty+fnkeys+esc,
+
+putty+fnkeys+xterm|Xterm R6 fn-keys for PuTTY,
+ kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+ use=putty+fnkeys+esc,
+
+putty+fnkeys+vt400|VT400 fn-keys for PuTTY,
+ use=putty+fnkeys+esc,
+
+# Shifted F1 is F11. F13-F20 inherit from the defaults, and the last distinct
+# key is F20.
+putty+fnkeys+vt100|VT100+ fn-keys for PuTTY,
kf1=\EOP, kf10=\EOY, kf11=\EOZ, kf12=\EO[, kf2=\EOQ,
kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
- kf9=\EOX, use=putty,
+ kf9=\EOX, use=putty+fnkeys+esc,
# Unlike xterm-sco, this leaves kmous ambiguous with kf1.
#
@@ -3542,9 +3971,9 @@ putty-vt100|VT100+ keyboard layout,
# F25-F36 - control/alt
# F37-F48 - control/shift
#
-putty-sco|putty with SCO function keys,
+putty+fnkeys+sco|SCO fn-keys for PuTTY,
kbeg=\E[E, 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,
+ kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W,
kf12=\E[X, kf13=\E[Y, kf14=\E[Z, kf15=\E[a, kf16=\E[b,
kf17=\E[c, kf18=\E[d, kf19=\E[e, kf2=\E[N, kf20=\E[f,
kf21=\E[g, kf22=\E[h, kf23=\E[i, kf24=\E[j, kf25=\E[k,
@@ -3554,7 +3983,73 @@ putty-sco|putty with SCO function keys,
kf4=\E[P, kf40=\E[z, kf41=\E[@, kf42=\E[[, kf43=\E[\\,
kf44=\E[], kf45=\E[\^, kf46=\E[_, kf47=\E[`, kf48=\E[{,
kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H,
- kich1=\E[L, knp=\E[G, kpp=\E[I, use=putty,
+ kich1=\E[L, knp=\E[G, kpp=\E[I,
+
+#### mintty
+# https://github.com/mintty/mintty
+#
+# Originally a fork (and reduction) of PuTTY, this has grown from 15ksloc in
+# 2013 to 38ksloc in 2019. That is still smaller than PuTTY (160ksloc), but
+# larger than rxvt (31ksloc).
+#
+# Version 3.0 responds to DA as a VT400, however it does not implement the
+# application keypad. The assignment of cursor-keys versus modifiers differs
+# from xterm (alt-left and alt-right send modifier 7, i.e., alt+control).
+#
+# Thomas Wolff suggested these extensions:
+# blink2 turn on rapid blinking
+# blink0 turn off blinking
+# norm turn off bold and half-bright mode
+# opaq turn off blank mode
+# smul2 begin double underline mode
+# smol begin overline mode
+# rmol exit overline mode
+# Font0 use default font
+# Font1 use alternative font 1
+# ...
+# Font10 use alternative font 10
+# setal set (under)line color
+# ol set default (under)line color
+# overs overstrike (print characters over each other)
+#
+# but see vte-2018 (use Smol/Rmol rather than smol/rmol).
+mintty|Cygwin Terminal,
+ setal=\E[5%p1%dm, use=xterm+256color,
+ use=mintty+common,
+mintty-direct|Cygwin Terminal direct-color,
+ setal=\E[%?%p1%{8}%<%t5%p1%d%e58\:2\:\:%p1%{65536}%/%d\:%p1
+ %{256}%/%{255}%&%d\:%p1%{255}%&%d%;m,
+ use=xterm+direct, use=mintty+common,
+mintty+common|shared capabilities for mintty,
+ km@, npc,
+ kcbt=\E[Z, kent=\EOM, rmm@, rmpch=\E[10m,
+ rs1=\Ec\E]104\007, rshm=\E[22m, rsubm=\E[75m,
+ rsupm=\E[75m, smm@, smpch=\E[11m, sshm=\E[1\:2m,
+ ssubm=\E[74m, ssupm=\E[73m, Rmol=\E[55m, Smol=\E[53m,
+ Smulx=\E[4\:%p1%dm, blink2=\E[6m, norm=\E[22m,
+ opaq=\E[28m, smul2=\E[21m, use=ansi+rep,
+ use=ecma+strikeout, use=ecma+index, use=vt420+lrmm,
+ use=xterm+sm+1006, use=xterm+pcfkeys, use=xterm+tmux,
+ use=xterm-basic,
+# 2019-06-09: These capabilities are commented-out for compatibility with
+# existing releases 5.9-6.1, and may be considered for inclusion after the
+# release of ncurses 6.2:
+# Font0=\E[10m,
+# Font1=\E[11m,
+# Font2=\E[12m,
+# Font3=\E[13m,
+# Font4=\E[14m,
+# Font5=\E[15m,
+# Font6=\E[16m,
+# Font7=\E[17m,
+# Font8=\E[18m,
+# Font9=\E[19m,
+# Font10=\E[20m,
+# blink0=\E[25m,
+# ol=\E[59m,
+# overs=\E[8\:7m,
+
+#### TeraTerm
# 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
@@ -3596,14 +4091,16 @@ putty-sco|putty with SCO function keys,
# "resize -s"), though it does not pass SIGWINCH to the application if the
# user resizes the window with the mouse.
teraterm2.3|Tera Term Pro,
- km, xon@,
+ km,
ncv#43, vt@,
- acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+ acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i
+ \316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u
+ \264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
blink=\E[5m, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[J,
cnorm=\E[?25h, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
- flash=\E[?5h\E[?5l$<200/>, hpa=\E[%i%p1%dG,
+ flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG,
il=\E[%p1%dL, il1=\E[L, kdch1=\E[3~, kf1=\E[11~,
kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
@@ -3634,8 +4131,39 @@ teraterm4.59|Tera Term Pro,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
kmous=\E[M, use=teraterm2.3,
+# Version 4.97
+#
+# Testing with tack:
+# - no bell (flash works)
+# - bold is yellow, blink is red.
+# - default keyboard sends ^? for Delete, can be configured for kdch1
+# - no meta mode
+# Testing with vttest:
+# + autowrap has problems...
+# + color-tests for bce feature match xterm's behavior
+# + handles most of xterm's mouse-controls other than highlight-tracking.
+# xterm's SGR 1006 works.
+# + partial support for DEC locator-events
+# + implements ECMA-48 SD/SU, but not REP, SL/SR.
+# + has a "Tek" window, but does not work with vttest's examples
+# + supports the dtterm window modify/report controls
+# + responds to DECRQM and DECRQSS controls, but not consistent with DSR
+# e.g., for VT220
+# + VT220 screen-display tests are ok
+# + no VT52 support
+# Other tests:
+# + recognizes xterm's original direct-colors sequences, but result is
+# poor.
+# + no UTF-8 apparent when UTF-8 is set, with font Lucida Control
+teraterm4.97|Tera Term Pro,
+ XT, use=ecma+color, use=xterm+sm+1006, use=teraterm4.59,
+teraterm-256color|TeraTerm with xterm 256-colors,
+ use=xterm+256setaf, use=teraterm,
+
teraterm|Tera Term,
- use=teraterm4.59,
+ use=teraterm4.97,
+
+#### Command prompt
# Tested with WinNT 4.0, the telnet application assumes the screensize is
# 25x80. This entry uses the 'Terminal' font, to get line-drawing characters.
@@ -3648,7 +4176,9 @@ teraterm|Tera Term,
# c) Recognizes a subset of vt52 controls.
ms-vt100|MS telnet imitating dec vt100,
lines#25,
- acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+ 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,
ka1@, ka3@, kb2@, kc1@, kc3@, kent@, kf0@, kf1@, kf10@, kf2@, kf3@, kf4@,
kf5@, kf6@, kf7@, kf8@, kf9@, tbc@, use=vt102+enq, use=vt100,
@@ -3699,16 +4229,88 @@ ms-vt100+|vt100+|windows XP vt100+ (sic),
ms-vt-utf8|vt-utf8|UTF-8 flavor of vt100+,
use=ms-vt100+,
-# expect-5.44.1.15/example/tkterm
-# a minimal subset of a vt100 (compare with "news-unk).
-#
-# The missing "=" in smkx is not a typo (here), but an error in tkterm.
-tt|tkterm|Don Libes' tk text widget terminal emulator,
- clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
- cup=\E[%p1%d;%p2%dH, cuu1=\E[A, ind=^J, kf1=\EOP, kf2=\EOQ,
- kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
- kf9=\EOX, rmkx=\E[?1l\E>, rmso=\E[m, smkx=\E[?1h\E,
- smso=\E[7m,
+# Windows Terminal (Preview)
+# Windows 10 1903
+# Version 0.2.1831.0
+# https://github.com/microsoft/terminal
+#
+# The task manager shows this as "OpenConsole.exe", which differs
+# from the "Windows Command Processor" used for the command-prompt.
+#
+# The settings dialog does not work (unless the end user expects to open
+# profiles.json in Visual Studio). There is no documentation, of course.
+#
+# Testing via an ssh connection, using openssh:
+# - the program sets TERM to cygwin if the tab is set to PowerShell,
+# and to xterm-256color if "Legacy". However, in the latter, more tests
+# fail in vttest, which does not pay attention to TERM.
+# vttest:
+# - menu 1 (tests for cursor movement) misbehaves like command-prompt
+# - primary DA says this is a vanilla VT100
+# - does not flush response to primary DA, leaving a ^M on the end when
+# the PowerShell tab is used. Both the "Legacy" tab and the command-prompt
+# work properly in this test.
+# - in the generic VT100 tests, there are problems with character sets
+# (diamond shows as a double-width character, DEL as two replacement-chars).
+# - outside of the generic VT100 tests, the program does poorly because most
+# of the features are missing.
+# - ECH does not work properly
+# - a few generic xterm features are supported (set window title), but
+# others are missing (such as the mouse).
+# - the cursor visible/invisible works in the PowerShell tab, not in "Legacy"
+# tack:
+# - blink, dim, bold, invis, protect do not work
+# - bce works (but per vttest, with ED, EL, not ECH)
+# - does not support keypad application mode
+# - implements most of the xterm modified keys; sometimes modifiers are ignored
+# or simply incorrect
+# - sends escape+key rather than implementing meta mode
+# other:
+# - color palette can be altered, but OSC 104 for resetting does not work
+# - crashed with a script used for testing NRCS.
+# - does not recognize either xterm+direct or xterm+indirect escapes.
+ms-terminal|Windows10 terminal,
+ npc,
+ rmkx=\E[?1l, rmm@, smkx=\E[?1h, smm@, use=xterm+256setaf,
+ use=xterm+pcfkeys, use=ansi+rep, use=ecma+index,
+ use=xterm-basic,
+
+#### Visual Studio
+# Visual Studio Code 1.35.1 uses xterm.js (see https://xtermjs.org/).
+# https://code.visualstudio.com/docs/editor/integrated-terminal
+#
+# This sets TERM to xterm-256color, which is a little more successful than
+# Windows Terminal.
+#
+# vttest:
+# - menu 1 (cursor movement) has problems with wrapping
+# - claims to be a VT100 with AVO, but copies xterm #276's secondary response
+# - menu 8 (insert/delete char/line) has problem with delete-character
+# - like Windows Terminal, fails the ECH test: neither supports DECALN
+# However, the bce test with ECH works.
+# - does not support keypad application mode
+# - supports most xterm mode controls (except DEC Locator Events)
+# - REP, SL/SL do not work, but SD/SU work.
+# - the alternate-screen tests fail because it does not support DECALN
+# - window modify/report is not supported
+# - supports some VT320 presentation reports
+# tack:
+# - does not support blinking text
+# - implements most of the xterm modified keys, with some exceptions:
+# - pageup/pagedown do not send escapes
+# - alt cursor left/right send escape-b and escape-f
+# - sends UTF-8 like xterm for meta mode
+# other:
+# - mouse mode is not reset by reset-sequence
+# - supports italics and dim, but not cross-out or double-underline
+# - color-palette cannot be changed
+vscode|xterm.js|Visual Studio Code terminal using xterm.js,
+ npc,
+ kcbt=\E[Z, rmkx=\E[?1l, smkx=\E[?1h, use=xterm+256setaf,
+ use=ecma+index, use=xterm+sm+1006, use=xterm+pcfkeys,
+ use=xterm-basic,
+vscode-direct|Visual Studio Code with direct-colors,
+ use=xterm+indirect, use=vscode,
######## X TERMINAL EMULATORS
#### XTERM
@@ -3732,10 +4334,10 @@ x10term|vs100-x10|xterm terminal emulator (X10 window system),
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,
+ cub1=^H, cud1=\n, 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, ht=^I, il=\E[%p1%dL,
- il1=\E[L, ind=^J, is2=\E\E[m\E[?7h\E[?1;4l, kbs=^H,
+ il1=\E[L, ind=\n, is2=\E\E[m\E[?7h\E[?1;4l, kbs=^H,
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
kf2=\EOQ, kf3=\EOR, kf4=\EOS, rev=\E[7m, ri=\EM, rmam=\E[?7l,
rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
@@ -3749,26 +4351,26 @@ x10term|vs100-x10|xterm terminal emulator (X10 window system),
xterm-r5|xterm R5 version,
OTbs, am, km, msgr, xenl,
cols#80, it#8, lines#24,
- bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
+ bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, 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, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\EOD,
- kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~,
- kdl1=\E[31~, kel=\E[8~, kend=\E[4~, kf0=\EOq, kf1=\E[11~,
- kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\E[12~,
- kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
- kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~,
- kil1=\E[30~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8,
- rev=\E[7m, ri=\EM, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m,
- rmul=\E[m,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, kcub1=\EOD, kcud1=\EOB,
+ kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kdl1=\E[31~,
+ kel=\E[8~, kend=\E[4~, kf0=\EOq, kf1=\E[11~, kf10=\E[21~,
+ kf11=\E[23~, kf12=\E[24~, kf2=\E[12~, kf3=\E[13~,
+ kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
+ kf9=\E[20~, khome=\E[1~, kich1=\E[2~, kil1=\E[30~,
+ kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8, rev=\E[7m, ri=\EM,
+ rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H,
sc=\E7,
- sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
+ 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, use=vt100+enq,
+ smul=\E[4m, tbc=\E[3g, use=vt100+enq, use=xterm+kbs,
# Compatible with the R6 xterm
# (from XFree86 3.2 distribution, <acsc> and <it> added, <blink@> removed)
# added khome/kend, hts based on the R6 xterm code - TD
@@ -3778,14 +4380,14 @@ xterm-r6|xterm X11R6 version,
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,
+ bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, 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, hts=\EH, il=\E[%p1%dL,
- il1=\E[L, ind=^J,
- is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, kbs=^H,
+ il1=\E[L, ind=\n,
+ is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8,
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kdch1=\E[3~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
@@ -3799,9 +4401,18 @@ xterm-r6|xterm X11R6 version,
rs2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, 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,
- use=vt100+enq,
+ use=xterm+kbs, use=vt100+enq,
xterm-old|antique xterm version,
use=xterm-r6,
+# The monochrome version began as a copy of "xtermm" (from Solaris), and was
+# initially part of the xterm sources (in XFree86). But "xterm" continued to
+# grow, while "xterm-mono" had none of the newer features. Additionally,
+# inheriting from "xtermm" runs into several problems, including different
+# function keys as well as the fact that the mouse support is not compatible.
+# This entry restores the original intent, intentionally not an alias to
+# simplify maintenance -TD
+xterm-mono|monochrome xterm,
+ use=xterm-r6,
# 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),
@@ -3809,34 +4420,37 @@ xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System),
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,
+ clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, 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(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,
+ il1=\E[L, ind=\n,
is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>,
- kbeg=\EOE, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
- kcuu1=\EOA, kdch1=\177, kend=\EOF, 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~, khome=\EOH, 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, 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\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, sc=\E7,
- 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%;,
+ kbeg=\EOE, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ kdch1=^?, kend=\EOF, 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~, khome=\EOH, 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, 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\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>,
+ sc=\E7,
+ 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, vpa=\E[%i%p1%dd, use=vt100+enq,
+ tbc=\E[3g, vpa=\E[%i%p1%dd, use=xterm+kbs, use=vt100+enq,
use=ecma+color, use=vt220+keypad,
# This is the stock xterm entry supplied with XFree86 3.3, which uses VT100
@@ -3853,7 +4467,8 @@ xterm-xf86-v333|xterm terminal emulator (XFree86 3.3.3 Window System),
is2=\E[!p\E[?3;4l\E[4l\E>, kdch1=\E[3~, kfnd@, kslt@,
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%;,
+ 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=ansi+pp,
use=xterm-xf86-v33,
@@ -3873,22 +4488,24 @@ xterm-xf86-v40|xterm terminal emulator (XFree86 4.0 Window System),
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,
+ kf48=\E[24;6~, khome=\EOH,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?
+ %p9%t\016%e\017%;,
+ use=xterm+alt1049, use=xterm-xf86-v333,
# This version was released in XFree86 4.3.
xterm-xf86-v43|xterm terminal emulator (XFree86 4.3 Window System),
kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~,
kLFT=\E[1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C,
kbeg@,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
+ %p7%t;8%;m%?%p9%t\016%e\017%;,
use=xterm-xf86-v40,
# This version was released in XFree86 4.4.
xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System),
- cnorm=\E[?12l\E[?25h, cvvis=\E[?12;25h, indn=\E[%p1%dS,
- rin=\E[%p1%dT, use=xterm-xf86-v43,
+ cnorm=\E[?12l\E[?25h, cvvis=\E[?12;25h, use=ecma+index,
+ use=xterm-xf86-v43,
xterm-xfree86|xterm terminal emulator (XFree86),
use=xterm-xf86-v44,
@@ -3896,8 +4513,9 @@ xterm-xfree86|xterm terminal emulator (XFree86),
# This version reflects the current xterm features.
xterm-new|modern xterm terminal emulator,
npc,
- indn=\E[%p1%dS, kb2=\EOE, kcbt=\E[Z, kent=\EOM,
- rin=\E[%p1%dT, use=xterm+pcfkeys, use=xterm+tmux,
+ kcbt=\E[Z, kent=\EOM, use=ecma+index, use=ansi+rep,
+ use=ecma+strikeout, use=xterm+keypad, use=vt420+lrmm,
+ use=xterm+sm+1006, use=xterm+pcfkeys, use=xterm+tmux,
use=xterm-basic,
# This fragment is for people who cannot agree on what the backspace key
@@ -3933,8 +4551,8 @@ xterm+app|fragment with cursor keys in application mode,
khome=\EOH,
#
# The "PC-style" modifier scheme was introduced in xterm patch #94 (1999/3/27)
-# and revised in patch #167 (2002/8/24). Some other terminal emulators copied
-# the earlier scheme, as noted in the "use=" clauses in this file.
+# and revised in xterm patch #167 (2002/8/24). Some other terminal emulators
+# copied the earlier scheme, as noted in the "use=" clauses in this file.
#
# The original assignments from patch #94 for cursor-keys had some technical
# issues:
@@ -3951,6 +4569,18 @@ xterm+app|fragment with cursor keys in application mode,
# compatibility reasons, they are still available as a setting of xterm's
# modifyCursorKeys resource. These fragments list the modified cursor-keys
# that might apply to xterm+pcfkeys with different values of that resource.
+#
+# These entries will have warnings when checking with tic because the kri/kind
+# capabilities duplicate the kUP/kDN extensions. This is intentional, though
+# not part of the original plan. The changes for xterm patch #206 (2005/11/3)
+# show that kri/kind were seen much later as part of a set including kLFT/kRIT:
+#
+# * modify xterm-new terminfo entry to use capabilities for shifted
+# scroll forward/reverse as shifted cursor up/down.
+#
+# In the 1980s when terminfo was defined, the developers made more of
+# a distinction between shifted up/down versus shifted left/right since most
+# terminals can index (scroll up/down), while few can scroll left/right.
xterm+pcc3|fragment with modifyCursorKeys:3,
kLFT=\E[>1;2D, kRIT=\E[>1;2C, kind=\E[>1;2B,
kri=\E[>1;2A, kDN=\E[>1;2B, kDN3=\E[>1;3B, kDN4=\E[>1;4B,
@@ -4054,6 +4684,51 @@ xterm+pc+edit|fragment for pc-style editing keypad,
xterm+vt+edit|fragment for vt220-style editing keypad,
kfnd=\E[1~, kslt=\E[4~,
+# These variations for alternate-screen and title-stacking were introduced by
+# xterm patch #331:
+xterm+noalt|xterm without altscreen,
+ rmcup@, smcup@,
+
+xterm+alt1049|xterm 90 feature,
+ rmcup=\E[?1049l, smcup=\E[?1049h,
+
+xterm+titlestack|xterm 251 feature,
+ rmcup=\E[23;0;0t, smcup=\E[22;0;0t,
+
+xterm+alt+title|xterm 90 and 251 features combined,
+ rmcup=\E[?1049l\E[23;0;0t, smcup=\E[?1049h\E[22;0;0t,
+
+# https://invisible-island.net/xterm/xterm.faq.html#xterm_keypad
+#
+# Xterm's emulation of the VT100 numeric keypad on a PC-keyboard runs into the
+# problem that the keypad layout is different, and that the natural choice for
+# PF1 is NumLock (which happens to be reserved for other use). To work around
+# that, PF1-PF4 are emulated via F1-F4, which leaves the "/", "*" and "+" not
+# directly related to VT100.
+#
+# With the VT220 keypad block that uses the 1-9 keys as suggested in
+# terminfo(5), the other keys can be handled with user-defined capabilities:
+#
+# _______________________________________
+# | NumLock | / | * | - |
+# | | $Oo | $Oj | $OS |
+# |_________|__kpDIV__|__kpMUL__|__kpSUB__|
+# | 7 8 9 | |
+# | $Ow | $Ox | $Oy | + |
+# |_ka1__K1_|_________|_ka3__K3_| $Ok |
+# | 4 | 5 | 6 | kpADD |
+# | $Ot | $Ou | $Ov | |
+# |_________|_kb2__K2_|_________|_________|
+# | 1 | 2 | 3 | |
+# | $Oq | $Or | $Os | |
+# |_kc1__K4_|_________|_kc3__K5_| enter |
+# | 0 | . | $OM |
+# | $Op | $On | |
+# |___________________|_________|_kent_@8_|
+#
+xterm+keypad|xterm emulating VT100/VT220 numeric keypad,
+ kp5=\EOE, kpADD=\EOk, kpCMA=\EOl, kpDIV=\EOo, kpDOT=\EOn,
+ kpMUL=\EOj, kpSUB=\EOm, kpZRO=\EOp, use=vt220+keypad,
#
# Those chunks use the new-style (the xterm oldFunctionKeys resource is false).
# Alternatively, the same scheme with old-style function keys as in xterm-r6
@@ -4073,54 +4748,84 @@ xterm-basic|modern xterm terminal emulator - common,
colors#8, cols#80, it#8, lines#24, pairs#64,
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=^M,
+ clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
- dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
- flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
- ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
- ind=^J, invis=\E[8m, is2=\E[!p\E[?3;4l\E[4l\E>,
- kmous=\E[M, meml=\El, memu=\Em, op=\E[39;49m, rc=\E8,
- rev=\E[7m, ri=\EM, rmacs=\E(B, rmam=\E[?7l,
- rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l\E>,
+ cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+ dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+ el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, home=\E[H,
+ hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m,
+ is2=\E[!p\E[?3;4l\E[4l\E>, kmous=\E[M, meml=\El,
+ memu=\Em, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM,
+ rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>,
rmm=\E[?1034l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec,
rs2=\E[!p\E[?3;4l\E[4l\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=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
- sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smcup=\E[?1049h,
- smir=\E[4h, smkx=\E[?1h\E=, smm=\E[?1034h, smso=\E[7m,
- smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, E3=\E[3;J,
- use=ansi+pp, use=xterm+kbs, use=vt100+enq,
+ 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=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;
+ %?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
+ sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
+ smkx=\E[?1h\E=, smm=\E[?1034h, smso=\E[7m, smul=\E[4m,
+ tbc=\E[3g, vpa=\E[%i%p1%dd, E3=\E[3J, use=ecma+italics,
+ use=ansi+pp, use=xterm+kbs, use=xterm+alt+title,
+ use=ansi+enq,
# From: David J. MacKenzie <djm@va.pubnix.com>, 14 Nov 1997
# In retrospect, something like xterm-r6 was intended here -TD
xterm-xi|xterm on XI Graphics Accelerated X under BSD/OS 3.1,
rmso=\E[m, rmul=\E[m, use=xterm-xf86-v33,
-# 16-colors is one of the variants of XFree86 3.3 xterm, updated for 4.0 (T.Dickey)
+#### XTERM Colors
+
+# 16-colors is one of the variants of XFree86 3.3 xterm, updated for 4.0
+# (T.Dickey)
+#
# If configured to support 88- or 256-colors (which is fairly common in 2009),
# xterm also recognizes the control sequences for initc -TD
xterm-16color|xterm with 16 colors like aixterm,
ccc,
- initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
- use=ibm+16color, use=xterm-new,
+ initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*
+ %{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
+ use=xterm+osc104, use=ibm+16color, use=xterm-new,
# 256-colors is a compile-time feature of XFree86 xterm beginning with
-# patch #111 (1999/7/10) -TD
+# xterm patch #111 (1999/7/10) -TD
xterm+256color|xterm 256-color feature,
ccc,
- colors#256, pairs#32767,
- initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
- setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
- setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
+ colors#0x100, pairs#0x10000,
+ initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*
+ %{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
+ oc=\E]104\007,
+ setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;
+ 5;%p1%d%;m,
+ setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5
+ ;%p1%d%;m,
+ setb@, setf@,
+
+# xterm OSC 104 resets the color palette. Using it as part of xterm+256color
+# has the drawback that some of the xterm-alikes which use that building block
+# require a different approach to rs1 -TD
+xterm+osc104|reset color palette,
+ oc=\E]104\007, rs1=\Ec\E]104\007,
+
+# palette is hardcoded...
+xterm+256setaf|xterm 256-color (set-only),
+ ccc@,
+ colors#0x100, pairs#0x10000,
+ initc@, op=\E[39;49m,
+ setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;
+ 5;%p1%d%;m,
+ setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5
+ ;%p1%d%;m,
setb@, setf@,
# 88-colors is a compile-time feature of XFree86 xterm beginning with
-# patch #115 (1999/9/18) -TD
+# xterm patch #115 (1999/9/18) -TD
#
# Note that the escape sequences used are the same as for 256-colors - xterm
# has a different table of default color resource values. If built for
@@ -4140,22 +4845,88 @@ xterm+88color|xterm 88-color feature,
# These variants of XFree86 3.9.16 xterm are built as a configure option.
xterm-256color|xterm with 256 colors,
- use=xterm+256color, use=xterm-new,
+ use=xterm+osc104, use=xterm+256color, use=xterm-new,
xterm-88color|xterm with 88 colors,
- use=xterm+88color, use=xterm-256color,
-
-# These two are used to demonstrate the any-event mouse support, i.e., by
-# using an extended name "XM" which tells ncurses to put the terminal into
-# a special mode when initializing the xterm mouse.
-xterm+sm+1002|testing xterm-mouse,
- XM=\E[?1002%?%p1%{1}%=%th%el%;, use=xterm-new,
-xterm+sm+1003|testing xterm-mouse,
- XM=\E[?1003%?%p1%{1}%=%th%el%;, use=xterm-new,
-
-xterm-1002|testing xterm-mouse,
- use=xterm+sm+1002, use=xterm-new,
-xterm-1003|testing xterm-mouse,
- use=xterm+sm+1003, use=xterm-new,
+ use=xterm+osc104, use=xterm+88color,
+ use=xterm-256color,
+
+# Emacs 26.1 and later support direct color mode in terminals, using a
+# combination of user-defined capabilities and ncurses-dependent function
+# calls. We will not include that here.
+#
+# Here is a first revision, which (disregarding the reuse of colors 1-7 which
+# is of interest only to the numerically illiterate), is compatible with other
+# terminal descriptions written for curses. It relies upon the extended range
+# for numeric capabilities provided in ncurses 6.1:
+xterm+direct2|xterm with direct-color indexing,
+ RGB,
+ colors#0x1000000, pairs#0x10000,
+ initc@, op=\E[39;49m,
+ setab=\E[%?%p1%{8}%<%t4%p1%d%e48\:2\:%p1%{65536}%/%d\:%p1
+ %{256}%/%{255}%&%d\:%p1%{255}%&%d%;m,
+ setaf=\E[%?%p1%{8}%<%t3%p1%d%e38\:2\:%p1%{65536}%/%d\:%p1
+ %{256}%/%{255}%&%d\:%p1%{255}%&%d%;m,
+ setb@, setf@,
+xterm-direct2|xterm with direct-color indexing (old),
+ use=xterm+direct2, use=xterm+titlestack, use=xterm,
+
+# That in turn had a problem: in the original patch submitted for KDE konsole
+# in 2006, the submitter and the developer alike overlooked a "color space
+# identifier" parameter. This version provides for that parameter:
+xterm+direct|xterm with direct-color indexing,
+ RGB,
+ colors#0x1000000, pairs#0x10000,
+ initc@, op=\E[39;49m,
+ setab=\E[%?%p1%{8}%<%t4%p1%d%e48\:2\:\:%p1%{65536}%/%d\:%p1
+ %{256}%/%{255}%&%d\:%p1%{255}%&%d%;m,
+ setaf=\E[%?%p1%{8}%<%t3%p1%d%e38\:2\:\:%p1%{65536}%/%d\:%p1
+ %{256}%/%{255}%&%d\:%p1%{255}%&%d%;m,
+ setb@, setf@,
+xterm-direct|xterm with direct-color indexing,
+ use=xterm+direct, use=xterm,
+
+# Here are corresponding flavors for terminals which could use the feature:
+iterm2-direct|iTerm2 with direct-color indexing,
+ use=xterm+direct, use=iterm2,
+mlterm-direct|mlterm with direct-color indexing,
+ use=xterm+direct, use=mlterm,
+
+# Meanwhile, in KDE #107487, the patch submitter and the developer both saw
+# that xterm's original implementation should have used colons for the
+# subparameter separators, but chose not to correct this in konsole. As of
+# late 2017, konsole still accepts only the nonstandard semicolon delimiters.
+xterm+indirect|xterm with direct-color indexing (old),
+ RGB,
+ colors#0x1000000, pairs#0x10000,
+ initc@, op=\E[39;49m,
+ setab=\E[%?%p1%{8}%<%t4%p1%d%e48;2;%p1%{65536}%/%d;%p1%{256}
+ %/%{255}%&%d;%p1%{255}%&%d%;m,
+ setaf=\E[%?%p1%{8}%<%t3%p1%d%e38;2;%p1%{65536}%/%d;%p1%{256}
+ %/%{255}%&%d;%p1%{255}%&%d%;m,
+ setb@, setf@,
+konsole-direct|konsole with direct-color indexing,
+ use=xterm+indirect, use=konsole,
+st-direct|st with direct-color indexing,
+ use=xterm+indirect, use=st,
+vte-direct|vte with direct-color indexing,
+ use=xterm+indirect, use=vte,
+# reportedly in Apple's Mohave (fall 2018), but untested -TD
+nsterm-direct|nsterm with direct-color indexing,
+ use=xterm+indirect, use=nsterm,
+
+# As for others:
+# + Apple's Terminal.app does not recognize either form of the direct-color
+# sequences.
+# + Cygwin's mintty recognizes xterm's original implementation, does okay with
+# the colors. Like vte, it is a subset of xterm, although different
+# omissions/reservations of modified-keys are seen in testing.
+# + PuTTY 0.70 seems to recognize xterm's original implementation but does
+# nothing useful with the colors.
+# + Teraterm 4.97, like PuTTY (no good).
+# + terminology 0.91 recognizes xterm's original implementation, but does
+# nothing useful with it.
+
+#### XTERM Features
# This chunk is based on suggestions by Ailin Nemui and Nicholas Marriott, who
# asked for some of xterm's advanced features to be added to its terminfo
@@ -4194,16 +4965,17 @@ xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\2335m, bold=\2331m, cbt=\233Z,
civis=\233?25l, clear=\233H\2332J,
- cnorm=\233?25l\233?25h, cr=^M, csr=\233%i%p1%d;%p2%dr,
- cub=\233%p1%dD, cub1=^H, cud=\233%p1%dB, cud1=^J,
+ cnorm=\233?25l\233?25h, cr=\r, csr=\233%i%p1%d;%p2%dr,
+ cub=\233%p1%dD, cub1=^H, cud=\233%p1%dB, cud1=\n,
cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH,
cuu=\233%p1%dA, cuu1=\233A, cvvis=\233?12;25h,
dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M,
ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K,
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=\E[62"p\E G\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r\E8,
+ il=\233%p1%dL, il1=\233L, ind=\n, invis=\2338m,
+ is2=\E[62"p\E\sG\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r
+ \E8,
ka1=\217w, ka3=\217u, kb2=\217y, kbeg=\217E, kc1=\217q,
kc3=\217s, kcbt=\233Z, kcub1=\217D, kcud1=\217B,
kcuf1=\217C, kcuu1=\217A, kdch1=\2333~, kend=\2334~,
@@ -4218,16 +4990,20 @@ xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
ri=\215, rmacs=\E(B, rmam=\233?7l, rmcup=\233?1049l,
rmir=\2334l, rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m,
rs1=\Ec,
- rs2=\E[62"p\E G\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r\E8,
+ rs2=\E[62"p\E\sG\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r
+ \E8,
sc=\E7, setab=\2334%p1%dm, setaf=\2333%p1%dm,
- setb=\2334%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
- setf=\2333%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
- sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
+ setb=\2334%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1
+ %{6}%=%t3%e%p1%d%;m,
+ setf=\2333%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1
+ %{6}%=%t3%e%p1%d%;m,
+ sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
+ %p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h,
smcup=\233?1049h, smir=\2334h, smkx=\233?1h\E=,
smso=\2337m, smul=\2334m, tbc=\2333g, u6=\233[%i%d;%dR,
- u7=\E[6n, u8=\233[?1;2c, u9=\E[c, vpa=\233%i%p1%dd,
- use=xterm+kbs,
+ u7=\E[6n, u8=\233[?%[;0123456789]c, u9=\E[c,
+ vpa=\233%i%p1%dd, use=xterm+kbs,
xterm-hp|xterm with hpterm function keys,
kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
@@ -4237,7 +5013,7 @@ xterm-hp|xterm with hpterm function keys,
xterm-sco|xterm with SCO function keys,
kbeg=\E[E, 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,
+ kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W,
kf12=\E[X, kf13=\E[Y, kf14=\E[Z, kf15=\E[a, kf16=\E[b,
kf17=\E[c, kf18=\E[d, kf19=\E[e, kf2=\E[N, kf20=\E[f,
kf21=\E[g, kf22=\E[h, kf23=\E[i, kf24=\E[j, kf25=\E[k,
@@ -4272,10 +5048,10 @@ xterm-vt220|xterm emulating vt220,
xterm-vt52|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,
+ bel=^G, clear=\EH\EJ, cr=\r, cub1=\ED, cud1=\EB, cuf1=\EC,
cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, ed=\EJ, el=\EK,
- home=\EH, ht=^I, ind=^J, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
- kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF,
+ home=\EH, ht=^I, ind=\n, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+ kcuu1=\EA, nel=\r\n, ri=\EI, rmacs=\EG, smacs=\EF,
use=xterm+kbs,
xterm-noapp|xterm with cursor keys in normal mode,
@@ -4348,7 +5124,8 @@ dec+sl|DEC VTxx status line,
#
# xterm with bold instead of underline
xterm-bold|xterm terminal emulator (X11R6 Window System) standout w/bold,
- sgr=%?%p9%t\016%e\017%;B\E[0%?%p6%t;1%;%?%p2%t;1%;%?%p1%p3%|%t;7%;m,
+ sgr=%?%p9%t\016%e\017%;B\E[0%?%p6%t;1%;%?%p2%t;1%;%?%p1%p3%|
+ %t;7%;m,
smso=\E[7m, smul=\E[1m, use=xterm-old,
# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
@@ -4358,6 +5135,134 @@ xterm-nic|xterm with ich/ich1 suppressed for non-curses programs,
xterm1|xterm terminal emulator ignoring the alternate screen buffer,
rmcup@, smcup@, use=xterm,
+#### XTERM Mouse
+# The xterm mouse protocol is used by other terminal emulators.
+# In this section, two extended capabilities are used to illustrate the mouse
+# protocol: XM and xm. The "XM" capability is recognized by ncurses to allow
+# enabling/disabling other mouse protocols. The "xm" capability describes the
+# mouse response; currently there is no interpreter which would use this
+# information to make the mouse support completely data-driven.
+
+# Here is the "original" xterm mouse protocol.
+#
+# First seen in X10.3, February 1986, this likely dates from 1985 based on the
+# copyright dates in the sources. A comment in charproc.c notes "MIT bogus
+# sequence", referring to the fact that it does not correspond to a "real"
+# terminal. The mouse responses for the X10 protocol are sent only for
+# button-presses.
+xterm+x10mouse|X10 xterm mouse protocol,
+ kmous=\E[M, XM=\E[?9%?%p1%{1}%=%th%el%;,
+ xm=\E[M%p3%' '%+%c%p2%'!'%+%c%p1%'!'%+%c,
+xterm-x10mouse|X10 xterm mouse,
+ use=xterm+x10mouse, use=xterm,
+
+# Here is the conventional xterm mouse protocol, introduced with X11R1 in
+# September 1987.
+#
+# The mouse responses for the X11 protocol covered button releases, as well as
+# modifiers:
+# shift 4
+# alt/meta 8 (technically the "mod1" mask, because X11 has no such keys)
+# control 16
+#
+# The modifiers are not reflected in this description because as used in xterm
+# they are normally inaccessible because the translations resources assign
+# shift and control to other features. However, they are important because
+# they take up space in the first byte of the response. The other bits of this
+# byte are used to encode the button number for both presses and releases.
+# In the X11 protocol, any button-release is encoded with "3" (the lowest 2
+# bits in the byte). Later work on XFree86 xterm used the remaining 3 bits to
+# provide additional features, e.g., wheel mouse.
+#
+# X11R1's xterm also supported an "emacs" mouse protocol, with final character
+# "t" or "T", which was activated by double-clicking. The "t" response was
+# used when the starting/ending positions were the same.
+#
+# X11R3 (February 1988) added the highlight/tracking mode.
+#
+# X11R4 (December 1989) added the control sequences document, listing the
+# control sequences for the X10/X11 protocols without descriptions. It also
+# mentioned the "emacs" ("T") response. Comments in button.c referred to the
+# X11 protocol as "DEC vt200 compatible", although DEC offered no such terminal.
+#
+# X11R5 (November 1993) gave a description of the mouse protocol.
+#
+# X11R6 (January 1995) moved the control sequences document out of the xterm
+# source-directory to xc/doc/specs/xterm, polishing the formatting but adding
+# no new information.
+xterm+x11mouse|X11 xterm mouse protocol,
+ kmous=\E[M, XM=\E[?1000%?%p1%{1}%=%th%el%;,
+ xm=\E[M%?%p4%t%p3%e%{3}%;%'\s'%+%c%p2%'!'%+%c%p1%'!'%+%c,
+xterm-x11mouse|X11 mouse,
+ use=xterm+x11mouse, use=xterm,
+
+# Here is a suggested description of the xterm highlighting protocol.
+# A more complicated example could be constructed to account for the "t"
+# response.
+xterm+x11hilite|X11 xterm mouse protocol with highlight,
+ kmous=\E[M, XM=\E[?1001%?%p1%{1}%=%th%el%;,
+ xm=\E[%p6%'!'%+%p5%'!'%+%c%p8%'!'%+%c%p7%'!'%+%c%p2%'!'%+%c
+ %p1%'!'%+%cT,
+xterm-x11hilite|X11 mouse with highlight,
+ use=xterm+x11mouse, use=xterm,
+
+# The preceding were the sources from X Consortium. Other sources (or patches)
+# were available. Starting in mid-1995, XFree86 developers collected some of
+# those changes and began improvements, e.g., to support color. This was, by
+# the way, around the same time that rxvt developers began implementing color,
+# though dates (and attributions) are not well documented. I became interested
+# in xterm in late 1995, and involved in early 1996. To complete the picture,
+# CDE's dtterm was introduced around the same time, with no mouse protocol -TD
+
+# xterm patch #83 (1998/10/7), added Jason Bacon's changes to provide an
+# "any-event" mouse mode.
+xterm+sm+1002|xterm any-event mouse,
+ kmous=\E[M, XM=\E[?1002%?%p1%{1}%=%th%el%;,
+xterm-1002|xterm any-event mouse,
+ use=xterm+sm+1002, use=xterm,
+
+xterm+sm+1003|testing xterm-mouse,
+ kmous=\E[M, XM=\E[?1003%?%p1%{1}%=%th%el%;,
+
+xterm-1003|testing xterm-mouse,
+ use=xterm+sm+1003, use=xterm,
+
+# xterm patch #116 (1999/9/25) added Stephen P Wall's changes to support DEC
+# locator mode.
+
+# xterm patch #120 (1999/10/28) added my change to support wheel mouse, by
+# dropping support for the X11 mouse protocol's shift-modifier and using
+# available bits in the first byte of the response to encode buttons 4 and 5.
+# xterm patch #126 (2000/2/8) amended that change to avoid conflicting with
+# older configurations which might have used the obsolete modifiers.
+
+# xterm patch #262 (2010/8/30) added Ryan Johnson's changes to provide a mode
+# where the coordinates in the mouse response would be encoded in UTF-8,
+# thereby extending the range of coordinates past 222=(255-33). This is the
+# "1005" mouse mode.
+xterm+sm+1005|xterm UTF-8 mouse,
+ kmous=\E[M, XM=\E[?1005;1000%?%p1%{1}%=%th%el%;,
+ xm=\E[M%?%p4%t3%e%p3%'\s'%+%c%;%p2%'!'%+%u%p1%'!'%+%u,
+xterm-1005|xterm UTF-8 mouse,
+ use=xterm+sm+1005, use=xterm,
+
+# xterm patch #277 (2012/1/7) provides a mode where the mouse response uses
+# SGR-style parameters.
+#
+# Someone stated that the 1005 mouse mode would not be handled properly in luit.
+# (By the way, this is a problem with the X11 protocol). A more plausible
+# criticism is that the responses provided by the 1005 mode are not distinct
+# from the non-1005 responses.
+#
+# As an alternative (and fixing the longstanding limitation of X11 mouse
+# protocol regarding button-releases), I provided the 1006 mode, referring
+# to it as "SGR 1006" since the replies resemble the SGR control string:
+xterm+sm+1006|xterm SGR-mouse,
+ kmous=\E[<, XM=\E[?1006;1000%?%p1%{1}%=%th%el%;,
+ xm=\E[<%i%p3%d;%p1%d;%p2%d;%?%p4%tM%em%;,
+xterm-1006|xterm SGR-mouse,
+ use=xterm+sm+1006, use=xterm,
+
#### KTERM
# (kterm: this had extension capabilities ":KJ:TY=ascii:" -- esr)
# (kterm should not invoke DEC Graphics as the alternate character set
@@ -4371,28 +5276,30 @@ kterm|kterm kanji terminal emulator (X window system),
acsc=``aajjkkllmmnnooppqqrrssttuuvvwwxx~~,
csr=\E[%i%p1%d;%p2%dr, dsl=\E[?H, enacs=, fsl=\E[?F,
kmous=\E[M, rc=\E8, rmacs=\E(B, rmam=\E[?7l, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e
+ \E(B%;,
sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h,
tsl=\E[?E\E[?%i%p1%dT, use=xterm-r6, use=ecma+color,
kterm-color|kterm-co|kterm with ANSI colors,
ncv@, use=kterm, use=ecma+color,
#### Other XTERM
+
# 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),
+xtermm|xterm terminal emulator (monochrome),
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,
+ bel=^G, blink@, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, getm=\E[%p1%dY,
home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\EOD,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, kcub1=\EOD,
kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[Y, kf0=\EOy,
kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf5=\EOT, kf6=\EOU,
kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H, kmous=\E[^_,
@@ -4400,15 +5307,18 @@ xtermm|xterm terminal emulator (monocrome),
rmacs=^O, rmcup=\E@0\E[?4r, rmso=\E[m,
rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
+ %;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smcup=\E@0\E[?4s\E[?4h\E@1,
smso=\E[7m, tbc=\E[3g, use=vt100+fnkeys,
xtermc|xterm terminal emulator (color),
colors#8, ncv#7, pairs#64,
op=\E[100m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
- setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+ setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
+ %=%t3%e%p1%d%;m,
+ setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
+ %=%t3%e%p1%d%;m,
use=xtermm,
# From: David J. MacKenzie <djm@va.pubnix.com> 20 Apr 1995
@@ -4419,7 +5329,8 @@ xtermc|xterm terminal emulator (color),
xterm-pcolor|xterm with color used for highlights and status line,
wsl#40,
bold=\E[1;43m, rev=\E[7;34m,
- sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1;43%;%?%p2%t;4;42%;%?%p1%t;7;31%;%?%p3%t;7;34%;%?%p4%t;5%;%?%p7%t;8%;m,
+ sgr=%?%p9%t\016%e\017%;\E[0%?%p6%t;1;43%;%?%p2%t;4;42%;%?%p1
+ %t;7;31%;%?%p3%t;7;34%;m,
smso=\E[7;31m, smul=\E[4;42m, use=xterm+sl, use=xterm-r6,
# This describes the capabilities of color_xterm, an xterm variant from
@@ -4432,13 +5343,13 @@ color_xterm|cx|cx100|color_xterm color terminal emulator for X,
OTbs, am, km, mir, msgr, xenl, XT,
cols#80, it#8, lines#65, ncv@,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
+ bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
el=\E[K, el1=\E[1K, enacs=\E(B\E)0, home=\E[H, ht=^I,
- ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+ ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n,
is1=\E[r\E[m\E[?7h\E[?4;6l\E[4l, kbs=^H, kcub1=\EOD,
kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[8~, kf1=\E[11~,
kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\E[12~,
@@ -4449,7 +5360,8 @@ color_xterm|cx|cx100|color_xterm color terminal emulator for X,
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,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+ 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[0m\017, smacs=^N, smam=\E[?7h,
smcup=\E[?1;41s\E[?1;41h\E=, smir=\E[4h, smso=\E[7m,
smul=\E[4m, use=ecma+color, use=vt220+keypad,
@@ -4497,7 +5409,7 @@ xterms-sun|small (80x24) xterm with sunFunctionKeys true,
# this describes the alpha-version of Gnome terminal shipped with Redhat 6.0
gnome-rh62|Gnome terminal,
bce,
- kdch1=\177, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+ kdch1=^?, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
use=xterm-color,
# GNOME Terminal 1.4.0.4 (Redhat 7.2)
@@ -4522,7 +5434,8 @@ gnome-rh72|GNOME Terminal,
bce, km@,
civis=\E[?25l, cnorm=\E[?25h, kdch1=\E[3~, kf1=\EOP,
kf2=\EOQ, kf3=\EOR, kf4=\EOS, rmam=\E[?7l,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\016%e
+ \017%;,
sgr0=\E[0m\017, smam=\E[?7h, tbc@, use=xterm-color,
# GNOME Terminal 2.0.1 (Redhat 8.0)
@@ -4540,7 +5453,7 @@ gnome-rh72|GNOME Terminal,
# that it implements kcbt.
gnome-rh80|GNOME Terminal,
bce@, msgr@,
- ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l, kbs=\177,
+ ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l, kbs=^?,
kcbt=\E^I, op=\E[39;49m, use=gnome-rh72,
# GNOME Terminal 2.2.1 (Redhat 9.0)
@@ -4557,7 +5470,8 @@ gnome-rh90|GNOME Terminal,
# Ed Catmur notes that gnome-terminal has recognized soft-reset since May 2002.
gnome-fc5|GNOME Terminal,
rs1=\Ec,
- rs2=\E7\E[r\E8\E[m\E[?7h\E[!p\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h,
+ rs2=\E7\E[r\E8\E[m\E[?7h\E[!p\E[?1;3;4;6l\E[4l\E>\E[?1000l
+ \E[?25h,
use=ansi+enq, use=xterm+pcc0, use=gnome-rh90,
# GNOME Terminal 2.18.1 (2007 snapshot)
@@ -4592,18 +5506,22 @@ gnome-2008|GNOME Terminal snapshot 2.22.3,
#
# Testing with tack shows that flash does not/has not worked -TD
vte-2012|VTE 0.34.1,
- flash@, ritm=\E[23m, sitm=\E[3m, use=vte-2008,
+ ncv#16,
+ dim=\E[2m, flash@, invis=\E[8m, rmso=\E[27m, rmul=\E[24m,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p5%t;2%;%?%p7%t;8%;%?%p1%p3
+ %|%t;7%;m%?%p9%t\016%e\017%;,
+ use=ecma+italics, use=vte-2008,
# Version 3.6.1 sets TERM to xterm-256color (still hardcoded), which has
# 61 differences from a correct entry for gnome terminal.
gnome-2012|GNOME Terminal 3.6.0,
use=vte-2012,
-# GNOME terminal may automatically use the contents of the "xterm" terminfo to
-# supply key information which is not built into the program. With 2.22.3,
-# this list is built into the program (which addresses the inadvertant use of
-# random terminfo data, though using a set of values which does not correspond
-# to any that xterm produces - still not solving the problem that GNOME
-# terminal hardcodes the $TERM variable as "xterm").
+# Before 2008, GNOME terminal could automatically use the contents of the
+# "xterm" terminfo to supply key information which is not built into the
+# program. With 2.22.3, this list was built into the program (which addressed
+# the inadvertent use of random terminfo data, though using a set of values
+# which did not correspond to any that xterm produced - still not solving the
+# problem that GNOME terminal hardcoded the $TERM variable as "xterm").
#
# terminfo modifier code keys
# kf13-kf24 shift 2 F1 to F12
@@ -4625,16 +5543,54 @@ vte+pcfkeys|VTE's variation on xterm+pcfkeys,
gnome+pcfkeys|VTE's variation on xterm+pcfkeys,
use=vte+pcfkeys,
-vte|VTE aka GNOME Terminal,
- use=vte-2012,
+# deprecated - use "vte" for newer versions
gnome|GNOME Terminal,
- use=vte,
+ use=vte-2012,
+gnome-256color|GNOME Terminal with xterm 256-colors,
+ use=xterm+256color, use=gnome,
+
+# relevant changes were made in January 2014, and later.
+#
+# Originally VTE was promoted as a library able to emulate any terminal by
+# reading its terminal description. In practice, that never got beyond the
+# ability to read definitions of special keys (function-, editing-, cursor).
+#
+# Before 2014, VTE had a termcap reader (originally pointing to a private copy
+# of a termcap file derived from xterm). That was incomplete because it did
+# not have any of the modifier-key information used for xterm's function-,
+# editing-, and cursor-keys. Having its own reader was unnecessary since
+# ncurses provides that information; used since xterm patch #225 in 2007.
+#
+# During April/May 2014, a few bug reports (e.g., gnome #169295, gnome #728900,
+# gnome #730137) dealt with attempts to recast that termcap reader as library
+# calls, then attempting to adapt a chunk of code from ncurses (src/vteti.c),
+# abandoning that and finally constructing a table to match xterm's default
+# behavior, e.g., for "xterm+pcfkeys".
+vte-2014|VTE 0.35.1,
+ ncv@,
+ cbt=\E[Z, el1=\E[1K, flash=\E[?5h$<100/>\E[?5l,
+ ich=\E[%p1%d@, kent=\EOM, use=ecma+index,
+ use=xterm+sm+1006, use=xterm+pcfkeys, use=vte-2012,
+
+# As of January 2018, this was the most recent release,
+# e.g., with gnome-terminal 3.26.2
+vte-2017|VTE 0.50.2,
+ use=ecma+strikeout, use=vte-2014,
+
+# VTE 0.51.2 and gnome-terminal 3.28.2 copied a feature from KovId's TTY
+# late in 2017 for changing the appearance of underlines, which was
+# incorporated into Debian and Fedora testing-packages in February and March
+# 2018, respectively. Overline (Smol/Rmol) has been supported since December
+# 2017.
+vte-2018|VTE 0.51.2,
+ Rmol=\E[55m, Smol=\E[53m, Smulx=\E[4\:%p1%dm,
+ use=vte-2017,
+
+vte|VTE aka GNOME Terminal,
+ use=vte-2018,
-# palette is hardcoded...
vte-256color|VTE with xterm 256-colors,
use=xterm+256color, use=vte,
-gnome-256color|GNOME Terminal with xterm 256-colors,
- use=vte-256color,
# XFCE Terminal 0.2.5.4beta2
#
@@ -4645,22 +5601,68 @@ gnome-256color|GNOME Terminal with xterm 256-colors,
xfce|Xfce Terminal,
use=vte-2008,
+# TERMITE
+#
+# https://github.com/thestinger/termite
+#
+# A review requires install of Arch Linux since Fedora and Debian don't have
+# this program. It uses "vte3-ng" (a conflicting package), which is here:
+# https://github.com/thestinger/vte-ng
+# which (based on the default branch setting) seems to be a fork of vte
+# 0.48.2, and is noted as such in Arch:
+# https://www.archlinux.org/packages/community/x86_64/vte3-ng/
+# It won't be merged:
+# https://bugzilla.gnome.org/show_bug.cgi?id=679658#c10
+# https://bugzilla.gnome.org/show_bug.cgi?id=78291
+# but perhaps made obsolete.
+#
+# The entry as given was mislabeled "xterm-termite" (it is not xterm), and
+# was mostly cut/paste from xterm-256color, but since VTE does not actually
+# implement several of the features in that terminal description, this one is
+# trimmed to eliminate those. Also, since it is a slightly older version of
+# VTE, it lacks a few more features (again, trimmed).
+termite|VTE-based terminal,
+ am, ccc, km, mir, msgr, npc, xenl,
+ cols#80, it#8, lines#24, ncv@,
+ acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
+ yzz{{||}}~~,
+ bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+ clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=\r,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\n, 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, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
+ flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
+ ht=^I, hts=\EH, ind=\n, invis=\E[8m,
+ is2=\E[!p\E[?3;4l\E[4l\E>, kb2=\EOE, kbs=^?, kcbt=\E[Z,
+ kent=\EOM, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E(B,
+ rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
+ rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7,
+ sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
+ %t;7%;%?%p7%t;8%;m,
+ sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smkx=\E[?1h\E=,
+ smso=\E[7m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd,
+ use=xterm+alt1049, use=ecma+index, use=ansi+idc,
+ use=ansi+idl, use=ansi+enq, use=ecma+italics,
+ use=xterm+256color, use=ecma+color, use=xterm+pcfkeys,
+ use=xterm+sl-twm,
+
#### Other GNOME
# Multi-Gnome-Terminal 1.6.2
#
# This does not use VTE, and does have different behavior (compare xfce and
# gnome).
mgt|Multi GNOME Terminal,
- indn=\E[%p1%dS, rin=\E[%p1%dT, use=xterm-xf86-v333,
+ use=ecma+index, use=xterm-xf86-v333,
#### KDE
# 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,
+ kdch1=^?, kend=\E[F, khome=\E[H, use=xterm-color,
-# Konsole 1.0.1
+# Konsole 1.0.1 (2001/11/25)
# (formerly known as kvt)
#
# This program hardcodes $TERM to 'xterm', which is not accurate. However, to
@@ -4694,23 +5696,94 @@ kvt|KDE terminal,
# Updated for konsole 1.6.6:
# add control-key modifiers for function-keys, etc.
#
-# vttest menu 1 shows that both konsole and gnome terminal do wrapping
-# different from xterm (and vt100's). They have the same behavior in this
-# detail, but it is unclear which copies the other.
+# Updated for konsole 2.3 (October 2008):
+# vttest menu 1 shows that both konsole and gnome terminal do wrapping
+# different from xterm (and vt100's). They have the same behavior in
+# this detail, but it is unclear which copies the other.
+#
+# Deferred update for konsole 2.10 (late 2012):
+# add SGR 1006 mouse
+#
+# Updated for konsole 2.12.4 (late 2013):
+# add sitm/ritm
+#
+# Updated for konsole 16.07 (mid 2016):
+# add dim, invis, strikeout
+# (also overline, which is too rarely used to provide as an extension)
+#
+# Updated for konsole 17.12.0 (late 2017):
konsole-base|KDE console window,
bce, km@, npc, XT,
ncv@,
- bel@, blink=\E[5m, civis=\E[?25l, cnorm=\E[?25h,
+ bel@, blink=\E[5m, civis=\E[?25l, cnorm=\E[?25h, dim=\E[2m,
ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l,
- hpa=\E[%i%p1%dG, indn=\E[%p1%dS, kbs=\177, kdch1=\E[3~,
+ hpa=\E[%i%p1%dG, invis=\E[8m, kbs=^?, kdch1=\E[3~,
kend=\E[4~, kf1@, kf10@, kf11@, kf12@, kf13@, kf14@, kf15@, kf16@,
kf17@, kf18@, kf19@, kf2@, kf20@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@,
- kf9@, kfnd@, khome=\E[1~, kslt@, rin=\E[%p1%dT, rmam=\E[?7l,
- rmso=\E[27m, rmul=\E[24m,
+ kf9@, kfnd@, khome=\E[1~, kslt@, rmam=\E[?7l, rmso=\E[27m,
+ rmul=\E[24m, rs1=\Ec,
rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
+ %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
sgr0=\E[0m\017, smam=\E[?7h, vpa=\E[%i%p1%dd,
- use=ecma+color, use=xterm-r6,
+ use=ecma+index, use=xterm+sm+1006, use=ecma+strikeout,
+ use=ecma+italics, use=ecma+color, use=xterm-r6,
+
+# The keytab feature was introduced in 0.9.12 (February 2000) with "linux" and
+# "vt100" key-table files along with a compiled-in default key-table.
+#
+# The main difference between the two keytabs was that the developer equated
+# "vt100" with xterm, and noticed that the Linux console's F1-F5 differed from
+# that. For the same reason, the home/end keys differ. A VT100 had none of
+# that. The otherwise identical keytabs have definitions to model the VT52
+# cursor-keys and the VT100 cursor-keys with application versus normal modes.
+#
+# An "x11r5" keytab (displayed in the menu as "X11 R5") was added in January
+# 2001, and shortly after retitled to "XFree 3.x.x". Both it and "vt100" were
+# dropped from the install in June 2008.
+#
+# The default keytab added in January 2000 was originally titled "X11 R6",
+# and likewise retitled to "XFree 4".
+#
+# A "solaris" keytab was added in Febrary 2005, copying the "vt100" keytab
+# and changing backspace to ^H, removing that keytab's attempt to model the
+# VT100 keypad and VT52 (KDE #20459).
+#
+# The developers made changes to the default and linux keytabs. Comparing
+# the original and 2018 versions using diffstat:
+# default: 119 added, 147 deleted, 28 unchanged
+# linux: 47 added, 28 deleted, 104 unchanged
+#
+# Most of the change for the default keytab was to make konsole act more like
+# xterm. That was a feature named AnyMod which came in May 2005 for KDE #92749
+# (see also Redhat #122815). Later, in June 2007 the compiled-in keytab was
+# made an external file (like "linux" and "solaris"), and some further
+# refinement made. But there are still flaws in the scheme.
+#
+# Essentially AnyMod maps the xterm "PC-style" modifier codes such as 2 for
+# Shift into a placeholder in the table entries. That works well if all of the
+# modified keys are modified in the same way. But xterm does not do that. The
+# first 4 function keys are used in xterm to support the VT100 PF1-PF4 keypad
+# keys. For example, F2 sends \EOQ in both terminals because of this feature.
+# But a shifted F2 (F14=F2+12) differs like this, in infocmp's listing:
+# kf14: '\E[1;2Q', '\EO2Q'.
+#
+# In effect, a quarter of konsole's function-keys are different from xterm.
+#
+# It is not a simple blunder:
+# a) xterm patch #121 (November 1999), providing the first version of the
+# PC-style modifiers would send \EO2Q
+# b) xterm patch #216 (July 2006) amended this and other details, provided
+# better documentation for the modifiers and made the behavior configurable,
+# e.g., using the modifyFunctionKeys resource. The reason why it sends
+# \E[1;2Q is that \E[O2Q is not a legal ECMA-48 control sequence. The
+# changelog points this out as "avoid sending SS3 with parameters".
+# c) That came after AnyMod was introduced, but still early enough that one
+# might expect konsole's developers to followup. Twelve years later that
+# has yet to happen.
+#
+# As of 2018, konsole still provides 3 keyboard profiles ("XFree 4", "linux",
+# "solaris").
konsole-linux|KDE console window with linux keyboard,
kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13@,
kf14@, kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\E[[B, kf20@,
@@ -4718,40 +5791,66 @@ konsole-linux|KDE console window with linux keyboard,
kf8=\E[19~, kf9=\E[20~, use=konsole-base,
konsole-solaris|KDE console window with Solaris keyboard,
kbs=^H, kend=\E[4~, khome=\E[1~, use=konsole-vt100,
-# KDE's "XFree86 3.x.x" keyboard is based on reading the xterm terminfo rather
-# than testing the code.
+
+# Obsolete: x11r5.keymap
+# KDE's "XFree86 3.x.x" keyboard was obviously based on reading the xterm
+# terminfo at the time rather than testing the code.
konsole-xf3x|KDE console window with keyboard for XFree86 3.x xterm,
kend=\E[4~, khome=\E[1~, use=konsole-vt100,
-# The value for kbs reflects local customization rather than the settings used
-# for XFree86 xterm.
+
+# The value for kbs (see konsole-vt100) reflects local customization rather
+# than the settings used for XFree86 xterm.
konsole-xf4x|KDE console window with keyboard for XFree86 4.x xterm,
kend=\EOF, khome=\EOH, use=konsole+pcfkeys,
use=konsole-vt100,
-# Konsole does not implement shifted cursor-keys.
+
konsole+pcfkeys|konsole subset of xterm+pcfkeys,
- kLFT@, kRIT@, kcbt=\E[Z, kind@, kri@, kDN@, kUP@, use=xterm+pcc2,
- use=xterm+pcf0,
+ kcbt=\E[Z, use=xterm+pcc2, use=xterm+pcf0,
+ use=xterm+pce2,
+
+# Obsolete: vt100.keymap
# KDE's "vt100" keyboard has no relationship to any terminal that DEC made, but
-# it is still useful for deriving the other entries.
+# it is still useful for deriving the other entries, since the developer
+# provided function-keys based on xterm.
konsole-vt100|KDE console window with vt100 (sic) keyboard,
- kbs=\177, kdch1=\E[3~, kend=\E[F, kf1=\E[11~, kf10=\E[21~,
+ kbs=^?, kdch1=\E[3~, kend=\E[F, kf1=\E[11~, kf10=\E[21~,
kf11=\E[23~, kf12=\E[24~, kf13@, kf14@, kf15@, kf16@, kf17@,
kf18@, kf19@, kf2=\E[12~, kf20@, kf3=\E[13~, kf4=\E[14~,
kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
khome=\E[H, use=konsole-base,
+
+# Obsolete: vt420pc.keytab was added in June 2000, dropped from the install in
+# September 2008 and removed in June 2016. The developer who removed it stated
+# that it was never installed.
konsole-vt420pc|KDE console window with vt420 pc keyboard,
- kbs=^H, kdch1=\177, use=konsole-vt100,
-konsole-16color|klone of xterm-16color,
- ncv#32, use=ibm+16color, use=konsole,
+ kbs=^H, kdch1=^?, use=konsole-vt100,
+
# make a default entry for konsole
konsole|KDE console window,
use=konsole-xf4x,
-# palette is hardcoded...
+# These were written for ncurses:
+konsole-16color|klone of xterm-16color,
+ ncv#32, use=ibm+16color, use=konsole,
konsole-256color|KDE console window with xterm 256-colors,
- initc@, use=xterm+256color, use=konsole,
+ use=xterm+256setaf, use=konsole,
#### MLTERM
+# http://mlterm.sourceforge.net/
+
+mlterm|multi lingual terminal emulator,
+ use=mlterm3,
+
+# Tested mlterm 3.2.2:
+# mlterm 3.x has made changes, but they are not reflected in the included
+# mlterm.ti; this entry is based on testing with ncurses, tack and vttest -TD
+# 2018/01/21: found xterm+sm+1006 did not work with version 3.3.8
+mlterm3|multi lingual terminal emulator,
+ kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
+ use=ecma+italics, use=xterm+app, use=xterm+pcf0,
+ use=xterm+pcc2, use=xterm+pce2, use=xterm+x11mouse,
+ use=mlterm2,
+
# This is mlterm 2.9.3's mlterm.ti, with some additions/corrections -TD
#
# It is nominally a vt102 emulator, with features borrowed from rxvt and
@@ -4771,34 +5870,36 @@ konsole-256color|KDE console window with xterm 256-colors,
# control/alt kf1 to kf12 \E[11;7~ to \E[24;7~
# control/shift/alt kf1 to kf12 \E[11;8~ to \E[24;8~
#
-mlterm|multi lingual terminal emulator,
+mlterm2|multi lingual terminal emulator,
am, eslok, km, mc5i, mir, msgr, npc, xenl, XT,
colors#8, cols#80, it#8, lines#24, pairs#64,
acsc=00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+ clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, 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=,
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, indn=\E[%p1%dS,
- is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>,
- kbs=\177, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
- kcuu1=\EOA, kdch1=\E[3~, kend=\EOF, kent=\EOM, kfnd=\E[1~,
- khome=\EOH, kich1=\E[2~, kind=\EO1;2B, kmous=\E[M,
- knp=\E[6~, kpp=\E[5~, kri=\EO1;2A, kslt=\E[4~, mc0=\E[i,
- nel=\EE, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM,
- rin=\E[%p1%dT, rmacs=\E(B, rmam=\E[?7l, rmcup=\E[?1049l,
- rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
+ il=\E[%p1%dL, il1=\E[L, ind=\n,
+ is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^?,
+ kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ kdch1=\E[3~, kend=\EOF, kent=\EOM, kfnd=\E[1~, khome=\EOH,
+ kich1=\E[2~, kind=\EO1;2B, kmous=\E[M, knp=\E[6~,
+ kpp=\E[5~, kri=\EO1;2A, kslt=\E[4~, mc0=\E[i, nel=\EE,
+ op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E(B,
+ rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
+ rmul=\E[24m, rs1=\Ec,
rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l,
sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;,
- sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smcup=\E[?1049h,
- 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, use=mlterm+pcfkeys, use=xterm+r6f2,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e
+ \E(B%;,
+ sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, 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, use=xterm+alt1049, use=ecma+index,
+ use=mlterm+pcfkeys, use=xterm+r6f2,
# The insert/delete/home/end keys do not respond to modifiers because mlterm
# looks in its termcap to decide which string to send. If it used terminfo
@@ -4815,7 +5916,7 @@ mlterm+pcfkeys|fragment for PC-style fkeys,
kUP4=\EO1;4A, kUP5=\EO1;5A, kUP6=\EO1;6A, kUP7=\EO1;7A,
mlterm-256color|mlterm 3.0 with xterm 256-colors,
- use=xterm+256color, use=rxvt,
+ use=xterm+256color, use=mlterm,
#### RXVT
# From: Thomas Dickey <dickey@clark.net> 04 Oct 1997
@@ -4844,22 +5945,24 @@ rxvt-basic|rxvt terminal base (X Window System),
cols#80, it#8, lines#24,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+ clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, 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,
+ enacs=\E(B\E)0, flash=\E[?5h$<100/>\E[?5l, home=\E[H,
+ ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
+ ind=\n, is1=\E[?47l\E=\E[?1l,
is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kbs=^H,
kcbt=\E[Z, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E>, rmso=\E[27m,
rmul=\E[24m,
rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
- rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h,
+ rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?
+ 25h,
s0ds=\E(B, s1ds=\E(0, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?
+ %p9%t\016%e\017%;,
sgr0=\E[0m\017, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h,
smkx=\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=vt100+enq,
use=rxvt+pcfkeys, use=vt220+keypad,
@@ -4965,6 +6068,55 @@ rxvt+pcfkeys|fragment for PC-style fkeys,
kLFT5=\EOd, kNXT5=\E[6\^, kNXT6=\E[6@, kPRV5=\E[5\^,
kPRV6=\E[5@, kRIT5=\EOc, kUP=\E[a, kUP5=\EOa,
+# rxvt was originally "xvt", first announced in April 1993:
+# http://www.krsaborio.net/linux-desktops/research/1993/0416.html
+#------------------------------------------------------------------------------
+# Article: 567 of comp.os.linux.announce
+# Path: pavo.csi.cam.ac.uk!warwick!uknet!pipex!uunet!zaphod.mps.ohio-state.edu!
+# caen!batcomputer!theory.TC.Cornell.EDU!mdw
+# From: nation@rocket.sanders.com (Robert Nation)
+# Newsgroups: comp.os.linux.announce
+# Subject: xvt upload
+# Date: 16 Apr 1993 18:13:07 GMT
+# Organization: Cornell Theory Center
+# Lines: 13
+# Approved: linux-announce@tc.cornell.edu (Matt Welsh)
+# Message-ID: <1qmsvj$pvj@fitz.TC.Cornell.EDU>
+# NNTP-Posting-Host: theory.tc.cornell.edu
+# Keywords: xvt, xterm, Xwindows
+# Originator: mdw@theory.TC.Cornell.EDU
+#
+# Rxvt has been uploaded to /pub/Linux/Incoming/rxvt.tar.z and
+# rxvt.README on sunsite.unc.edu.
+#
+# Xvt is an xterm replacement which uses a little less memory, and is
+# suitable for use on machines with small memories. Tek4010 support
+# is removed.
+#
+# Modifications were made by Rob Nation (nation@rocket.sanders.lockheed.com)
+# to make it a little more compact, and to add and remove certain features.
+#
+#
+# --
+# Send submissions for comp.os.linux.announce to: linux-announce@tc.cornell.edu
+#------------------------------------------------------------------------------
+#
+# Though its change-log does not mention this, John Davis has stated that he
+# was the author of the changes to use the bce ("new color model") which was
+# incorporated into rxvt 2.11 (June 15, 1995). The change-log does not give
+# dates, nor give developer's names. Initial color support was added for rxvt
+# "2.0", which was sometime in 1994.
+#
+# rxvt had usable color support with 2.16 (April 2, 1996), with some help by my
+# work on vttest, as well as bug reports to Mark Olesen. For instance, the fix
+# mentioned here
+# https://web.archive.org/web/20141016124430/http://web.archiveorange.com/archive/v/6ETvLb5wHtbbzCaS4S9J
+# was from one of my bug-reports -TD
+#
+# While the color model both for xterm and rxvt was based on Linux console,
+# Olesen (or possibly Davis) diverged in one respect from Linux's bce color
+# behavior: inserting/deleting characters does not fill the newly empty cell
+# with the default background color.
rxvt|rxvt terminal emulator (X Window System),
ncv@,
hpa=\E[%i%p1%dG, kf0=\E[21~, sgr0=\E[m\017,
@@ -4978,15 +6130,19 @@ rxvt-88color|rxvt 2.7.9 with xterm 88-colors,
rxvt-xpm|rxvt terminal emulator (X Window System),
use=rxvt,
rxvt-cygwin|rxvt terminal emulator (X Window System) on cygwin,
- acsc=+\257\,\256-\^0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+ acsc=+\257\,\256-\^0\333`\004a\261f\370g\361h\260j\331k
+ \277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w
+ \302x\263y\363z\362{\343|\330}\234~\376,
use=rxvt,
rxvt-cygwin-native|rxvt terminal emulator (native MS Window System port) on cygwin,
- acsc=+\257\,\256-\^0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330~\376,
+ acsc=+\257\,\256-\^0\333`\004a\261f\370g\361h\260j\331k
+ \277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w
+ \302x\263y\363z\362{\343|\330~\376,
use=rxvt-cygwin,
# This variant is supposed to work with rxvt 2.7.7 when compiled with
# NO_BRIGHTCOLOR defined. rxvt needs more work...
-rxvt-16color|xterm with 16 colors like aixterm,
+rxvt-16color|rxvt with 16 colors like aixterm,
ncv#32, use=ibm+16color, use=rxvt,
#### MRXVT
@@ -4994,6 +6150,23 @@ rxvt-16color|xterm with 16 colors like aixterm,
#
# mrxvt is based on rxvt 2.7.11, but has by default XTERM_FKEYS defined, which
# makes its function-keys different from other flavors of rxvt -TD
+#
+# Testing with tack:
+# + made custom description (below) to work, though it sets TERM=xterm.
+#
+# Testing with vttest:
+# + While "based on" rxvt, some of the basic functionality is broken. The
+# window collapses to a single line when running several of the screens
+# in vttest, e.g., the tests for cursor movement, screen features,
+# double-sized characters.
+# + The vt52 test works properly, but this is an exception. Due to the
+# other bug(s) most of vttest is untestable.
+# + the color test using ECH shows a gap in the bce model, like rxvt.
+#
+# Testing with xterm "vttest" scripts:
+# + resize.pl does not work because mrxvt does implement CSI 18 t
+# (not in rxvt, but not documented by mrxvt) but not CSI 19 t.
+# + none of the "dynamic colors" (OSC colors) scripts work.
mrxvt|multitabbed rxvt,
XT,
kEND=\E[8;2~, kHOM=\E[7;2~, kcub1=\E[D, kcud1=\E[B,
@@ -5023,15 +6196,14 @@ Eterm|Eterm-color|Eterm with xterm-style color support (X Window System),
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,
+ clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r,
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,
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,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, is1=\E[?47l\E>\E[?1l,
is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kNXT@,
kPRV@, ka1=\E[7~, ka3=\E[5~, kb2=\EOu, kbeg=\EOu, kbs=^H,
kc1=\E[8~, kc3=\E[6~, kent=\EOM, khlp=\E[28~, kmous=\E[M,
@@ -5039,9 +6211,11 @@ Eterm|Eterm-color|Eterm with xterm-style color support (X Window System),
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>\E[?1000l\E[?25h,
+ rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?
+ 25h,
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%;,
+ 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,
vpa=\E[%i%p1%dd, use=vt100+enq, use=rxvt+pcfkeys,
@@ -5057,16 +6231,16 @@ Eterm-88color|Eterm with 88 colors,
# Based on rxvt 2.4.8, it has a few differences in key bindings
aterm|AfterStep terminal,
XT,
- kbs=\177, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=rxvt,
+ kbs=^?, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=rxvt,
#### XITERM
# xiterm 0.5-5.2
# This is not based on xterm's source...
# vttest shows several problems with keyboard, cursor-movements.
-# see also http://invisible-island.net/xterm/xterm.faq.html#bug_xiterm
+# see also https://invisible-island.net/xterm/xterm.faq.html#bug_xiterm
xiterm|internationalized terminal emulator for X,
km@,
- kbs=\177, kdch1=\E[3~, use=klone+color, use=xterm-r6,
+ kbs=^?, kdch1=\E[3~, use=klone+color, use=xterm-r6,
#### HPTERM
@@ -5074,12 +6248,12 @@ xiterm|internationalized terminal emulator for X,
# from BSD termcap. (hpterm: added empty <acsc>, we have no idea what ACS
# chars look like --esr)
hpterm|X-hpterm|hp X11 terminal emulator,
- am, da, db, mir, xhp,
+ am, da, db, mir, xhp, xon,
cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, pb#9600, xmc#0,
- acsc=, bel=^G, bold=\E&dB, cbt=\Ei, clear=\E&a0y0C\EJ, cr=^M,
+ acsc=, bel=^G, bold=\E&dB, cbt=\Ei, clear=\E&a0y0C\EJ, cr=\r,
cub1=^H, cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC,
cuu1=\EA, dch1=\EP, dim=\E&dH, dl1=\EM, ed=\EJ$<1>, el=\EK,
- hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL, ind=^J, kbs=^H,
+ hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL, ind=\n, kbs=^H,
kclr=\EJ, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, kf1=\Ep,
kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew,
@@ -5091,9 +6265,11 @@ hpterm|X-hpterm|hp X11 terminal emulator,
pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rev=\E&dB, ri=\ET,
rmacs=^O, rmir=\ER, rmkx=\E&s0A, rmln=\E&j@, rmso=\E&d@,
rmul=\E&d@,
- sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+%p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;,
- sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smln=\E&jB,
- smso=\E&dJ, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
+ sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+
+ %p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;,
+ sgr0=\E&d@\017, smacs=^N, smir=\EQ, smkx=\E&s1A,
+ smln=\E&jB, smso=\E&dJ, smul=\E&dD, tbc=\E3,
+ vpa=\E&a%p1%dY,
# HPUX 11 provides a color version.
hpterm-color|HP X11 terminal emulator with color,
ccc,
@@ -5112,16 +6288,17 @@ hpterm-color|HP X11 terminal emulator with color,
emu|emu native mode,
am, bce, mir, msgr, xon,
colors#15, cols#80, it#8, lines#24, pairs#64, vt#200,
- acsc=61a\202f\260g2j\213k\214l\215m\216n\217o\220q\222s\224t\225u\226v\227w\230x\231~\244,
+ acsc=61a\202f\260g2j\213k\214l\215m\216n\217o\220q\222s
+ \224t\225u\226v\227w\230x\231~\244,
bel=^G, blink=\EW, bold=\EU, civis=\EZ, clear=\EP\EE0;0;,
- cnorm=\Ea, cr=^M, csr=\Ek%p1%d;%p2%d;, cub=\Eq-%p1%d;,
+ cnorm=\Ea, cr=\r, csr=\Ek%p1%d;%p2%d;, cub=\Eq-%p1%d;,
cub1=^H, cud=\Ep%p1%d;, cud1=\EB, cuf=\Eq%p1%d;, cuf1=\EC,
cup=\EE%p1%d;%p2%d;, 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, 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,
+ kcuu1=\EA, kdch1=^?, kent=\r, kf0=\EF00, kf1=\EF01,
kf10=\EF10, kf11=\EF11, kf12=\EF12, kf13=\EF13, kf14=\EF14,
kf15=\EF15, kf16=\EF16, kf17=\EF17, kf18=\EF18, kf19=\EF19,
kf2=\EF02, kf20=\EF20, kf3=\EF03, kf4=\EF04, kf5=\EF05,
@@ -5130,7 +6307,8 @@ emu|emu native mode,
op=\Es0;\Er0;, rev=\ET, ri=\EF, rmir=\EX, rmso=\ES, rmul=\ES,
rs2=\ES\Es0;\Er0;, setab=\Es%i%p1%d;,
setaf=\Er%i%p1%d;,
- sgr=\ES%?%p1%t\ET%;%?%p2%t\EV%;%?%p3%t\ET%;%?%p4%t\EW%;%?%p6%t\EU%;,
+ sgr=\ES%?%p1%t\ET%;%?%p2%t\EV%;%?%p3%t\ET%;%?%p4%t\EW%;%?%p6
+ %t\EU%;,
sgr0=\ES, smir=\EY, smso=\ET, smul=\EV, tbc=\Ej,
# vt220 Terminfo entry for the Emu emulation, corresponds to
@@ -5142,7 +6320,7 @@ emu-220|Emu-220 (vt200-7bit mode),
cols#80, it#8, lines#24, vt#200,
acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
blink=\E[0;5m, bold=\E[0;1m, civis=\E[?25l,
- clear=\E[2J\E[H, cnorm=\E[?25h, cr=^M,
+ clear=\E[2J\E[H, cnorm=\E[?25h, cr=\r,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[1D,
cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[1A,
@@ -5161,8 +6339,9 @@ emu-220|Emu-220 (vt200-7bit mode),
knp=\E[6~, kpp=\E[5~, kslt=\E[4~, rc=\E8, rev=\E[0;7m,
ri=\EM, rmacs=^O, rmcup=\E>, rmkx=\E>, rmso=\E[m, rmul=\E[m,
rs2=\E[4l\E[34l\E[?1l\E[?3l\E[?5l\E[?7h, sc=\E7,
- sgr=\E[0%?%p1%t;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, smacs=^N, smcup=\E[?1l\E=, smkx=\E=,
+ sgr=\E[0%?%p1%t;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, smcup=\E[?1l\E=, smkx=\E=,
smso=\E[0;7m, smul=\E[0;4m, tbc=\E[3g,
#### MVTERM
@@ -5177,17 +6356,17 @@ emu-220|Emu-220 (vt200-7bit mode),
# apparently implements alternate screen like xterm
# does not use padding, of course.
mvterm|vv100|SwitchTerm aka mvTERM,
- am, eslok, hs, km, mir, msgr, xenl,
+ am, eslok, hs, km, mir, msgr, xenl, xon,
colors#8, cols#80, it#8, lines#24, pairs#64,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- 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[2J, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
dsl=\E[?E, ed=\E[J, el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0,
fsl=\E[?F, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
- ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H,
+ ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H,
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOy,
kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw,
op=\E[100m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
@@ -5195,7 +6374,8 @@ mvterm|vv100|SwitchTerm aka mvTERM,
rmul=\E[m,
rs2=\E>\E[1;3;4;5;6l\E[?7h\E[100m\E[m\E[r\E[2J\E[H,
sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
+ %;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smcup=\E7\E[?47h,
smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
tsl=\E[?E\E[?%i%p1%dT, use=vt100+fnkeys,
@@ -5209,26 +6389,26 @@ mterm-ansi|ANSI emulation,
am, bw, mir, msgr,
it#8,
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
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, dch=\E[%p1%dP, dch1=\E[P,
dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J,
el=\E[K, home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=,
- il=\E[%p1%dL, il1=\E[L, ind=\E[S, indn=\E[%p1%dS,
- invis=\E[8m, is2=\E)0\017, kbs=^H, nel=\EE, rev=\E[7m,
- ri=\E[T, rin=\E[%p1%dT, rmacs=^O, rmir=\E[4l, rmso=\E[27m,
- rmul=\E[24m,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
- sgr0=\E[m, smacs=^N, smir=\E[4h, smso=\E[7m, smul=\E[4m,
- vpa=\E[%i%p1%dd,
+ il=\E[%p1%dL, il1=\E[L, ind=\E[S, invis=\E[8m,
+ is2=\E)0\017, kbs=^H, nel=\EE, rev=\E[7m, ri=\E[T, rmacs=^O,
+ rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
+ %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, smir=\E[4h, smso=\E[7m,
+ smul=\E[4m, vpa=\E[%i%p1%dd, use=ecma+index,
# mterm normally sets $TERM to "mterm"
mterm|mouse-sun|Der Mouse term,
am, bw, mir,
it#8,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^N, cuf1=^S,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=^N, cuf1=^S,
cup=\006%p1%d.%p2%d., cuu1=^X, dch1=^Y, dl1=^K, ed=^B, el=^C,
- home=^P, ht=^I, il1=^A, ind=^U, kbs=^H, ll=^R, nel=^M^U, ri=^W,
+ home=^P, ht=^I, il1=^A, ind=^U, kbs=^H, ll=^R, nel=\r^U, ri=^W,
rmir=^O, rmso=^T, smir=^Q, smso=^V,
# "mterm -type decansi" sets $TERM to "decansi"
#
@@ -5238,54 +6418,57 @@ decansi|ANSI emulation with DEC compatibility hacks,
colors#8, it#8, pairs#64,
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
+ clear=\E[H\E[J, cnorm=\E[?25h, cr=\r,
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,
dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, enacs=\E(B\E)0,
home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=, il=\E[%p1%dL,
- il1=\E[L, ind=\E[S, indn=\E[%p1%dS, invis=\E[8m,
- is2=\E)0\E[r\017, kbs=^H, kcub1=\EOD, kcud1=\EOB,
- kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kf1=\E[11~,
- kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
- kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
- kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~,
- kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
- kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~,
- kpp=\E[5~, kslt=\E[4~, nel=\EE, op=\E[0m, rc=\E8, rev=\E[7m,
- ri=\E[T, rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
- rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, sc=\E7,
- setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
- sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h,
+ il1=\E[L, ind=\E[S, invis=\E[8m, is2=\E)0\E[r\017, kbs=^H,
+ kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ kdch1=\E[3~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
+ kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
+ kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+ kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~,
+ kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kslt=\E[4~,
+ nel=\EE, op=\E[0m, rc=\E8, rev=\E[7m, ri=\E[T, rmacs=^O,
+ rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
+ rmul=\E[24m, sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
+ %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, u6=\E[%i%d;%dR,
- u7=\E[6n, vpa=\E[%i%p1%dd,
+ u7=\E[6n, vpa=\E[%i%p1%dd, use=ecma+index,
#### VWM
+# http://vwm.sourceforge.net/
#
-# vwmterm is a terminal emulator written for the VWM console window manager
-#
+# VWM 2.0.2 (2009-05-01)
+# vwmterm is a terminal emulator written for the VWM console window manager.
+# This version is obsolete, replaced by libvterm in 2.1.0 (2009-10-23).
vwmterm|(vwm term),
am, bce, ccc, mir, msgr, npc, xenl, xon,
colors#8, pairs#64,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, cub=\E[%p1%dD,
+ clear=\E[H\E[J, cnorm=\E[?25h, cr=\r, cub=\E[%p1%dD,
cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
cuu1=\E[A, cvvis=\E[?25h, dim=\E[2m, ed=\E[J, el=\E[K,
- home=\E[H, il1=\E[L, ind=^J, invis=\E[8m, kcub1=\E[D,
+ home=\E[H, il1=\E[L, ind=\n, invis=\E[8m, kcub1=\E[D,
kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~,
kend=\E[4~, kf1=\E[[A, kf10=\E[21~, kf11=\E[22~,
kf12=\E[23~, 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~, rev=\E[7m, rmacs=\E[10m,
- rmam=\E[?7l, rmcup=\E[?1049l, rs1=\E[H\E[J\E[m\Ec,
- setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
- sgr0=\E[0;10m, smacs=\E[11m, smam=\E[?7h,
- smcup=\E[?1049h, smso=\E[3m, smul=\E[4m,
+ rmam=\E[?7l, rs1=\E[H\E[J\E[m\Ec, setab=\E[4%p1%dm,
+ setaf=\E[3%p1%dm,
+ sgr=\E[0;10%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
+ %t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
+ sgr0=\E[0;10m, smacs=\E[11m, smam=\E[?7h, smso=\E[3m,
+ smul=\E[4m, use=xterm+alt1049,
#### MGR
#
@@ -5295,15 +6478,15 @@ vwmterm|(vwm term),
#
mgr|Bellcore MGR (non X) window system terminal emulation,
- am, km,
- bel=^G, bold=\E2n, civis=\E9h, clear=^L, cnorm=\Eh, cr=^M,
+ am, km, xon,
+ bel=^G, bold=\E2n, civis=\E9h, clear=^L, cnorm=\Eh, cr=\r,
csr=\E%p1%d;%p2%dt, cub1=^H, cud1=\Ef, cuf1=\Er,
cup=\E%p2%d;%p1%dM, cuu1=\Eu, cvvis=\E0h,
dch=\E%p1%dE$<5>, dch1=\EE, dl=\E%p1%dd$<3*>,
dl1=\Ed$<3>, ed=\EC, el=\Ec, hd=\E1;2f, ht=^I, hu=\E1;2u,
ich=\E%p1%dA$<5>, ich1=\EA, il=\E%p1%da$<3*>,
- il1=\Ea$<3>, ind=^J, kbs=^H, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, nel=^M^J, rev=\E1n, rmam=\E5S,
+ il1=\Ea$<3>, ind=\n, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+ kcuf1=\E[C, kcuu1=\E[A, nel=\r\n, rev=\E1n, rmam=\E5S,
rmso=\E0n, rmul=\E0n, sgr0=\E0n, smam=\E5s, smso=\E1n,
smul=\E4n,
mgr-sun|Mgr window with Sun keyboard,
@@ -5323,6 +6506,140 @@ mgr-linux|Mgr window with Linux keyboard,
#### SIMPLETERM
# st.suckless.org
+
+st|stterm| simpleterm,
+ use=st-0.8,
+
+# Reviewed 0.8.2:
+# In tack,
+# there is some problem turning off line-drawing
+# shift+control function-keys do nothing; shift+control cursor keys work
+# the padding tests make the terminal non-functional.
+# In vttest,
+# SD/SU work
+# SL/SR/REP do not work
+# ECMA-48 cursor movement works, e.g., CHA, CBT, etc.
+#
+# This entry discards the ccc/initc capabilities from st-0.7 because they
+# belong in st-256color.
+st-0.8|simpleterm 0.7,
+ dim=\E[2m, kcbt@, kent@, oc=\E]104\007,
+ sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
+ %t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m,
+ Ms=\E]52;%p1%s;%p2%s\007, kDN3=\E[1;3B, kDN5=\E[1;5B,
+ kLFT3=\E[1;3D, kLFT5=\E[1;5D, kNXT3=\E[6;3~,
+ kNXT5=\E[6;5~, kPRV3=\E[5;3~, kPRV5=\E[5;5~,
+ kRIT3=\E[1;3C, kRIT5=\E[1;5C, kUP3=\E[1;3A, kUP5=\E[1;5A,
+ use=ecma+strikeout, use=st-0.6,
+
+# Reviewed 0.7:
+# dim is intermittent, sometimes works, sometimes does not
+# italics may show up with yellow color
+# has control cursor-keys, alt cursor-keys, still no combinations
+# has control pageup/down
+# tmux extensions, see TERMINFO EXTENSIONS in tmux(1)
+# Se and Ss are implemented in the source-code, but the terminfo
+# provided with the source is incorrect, since Se/Ss are mis-coded
+# as booleans rather than strings.
+st-0.7|simpleterm 0.7,
+ ccc,
+ dim=\E[2m,
+ initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*
+ %{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
+ kcbt@, kent@, oc=\E]104\007,
+ sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
+ %t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m,
+ Ms=\E]52;%p1%s;%p2%s\007, kDN3=\E[1;3B, kDN5=\E[1;5B,
+ kLFT3=\E[1;3D, kLFT5=\E[1;5D, kNXT3=\E[6;3~,
+ kNXT5=\E[6;5~, kPRV3=\E[5;3~, kPRV5=\E[5;5~,
+ kRIT3=\E[1;3C, kRIT5=\E[1;5C, kUP3=\E[1;3A, kUP5=\E[1;5A,
+ use=ecma+strikeout, use=st-0.6,
+
+# st-0.4.1
+#
+# This version uses a table which supports a single modifier (a subset of
+# xterm's keys, using the same scheme). Because it supports only a single
+# modifier in this table, function keys f36-f48 are normally unavailable
+# because they are assigned to modifier-4.
+#
+# The program assigns TERM to match the program name (the upstream source says
+# "st", but Debian renames it to "stterm").
+#
+# The source includes two entries which are not useful here:
+# st-meta| simpleterm with meta key,
+# st-meta-256color| simpleterm with meta key and 256 colors,
+# because st's notion of "meta" does not correspond to the terminfo definition.
+# Rather, it acts like xterm - when the meta feature is disabled.
+#
+# Removed invis -TD
+# Added eo, removed ul -TD
+#
+# Reviewed st 0.5:
+# implements control-modifier, but not control-shift for special keys
+# implements alt-modifier, but not alt-shift for special keys
+#
+# Reviewed st 0.6:
+# http://git.suckless.org/st/log/st.info
+# Tmux unofficial extensions, see TERMINFO EXTENSIONS in tmux(1)
+# still has no function keys past kf36 (no combinations of modifiers)
+# no application keypad mode, e.g, kent.
+st-0.6|simpleterm 0.6,
+ am, bce, hs, mir, msgr, npc, xenl, XT,
+ colors#8, cols#80, it#8, lines#24, pairs#64,
+ acsc=+C\,D-A.B0E``aaffgghFiGjjkkllmmnnooppqqrrssttuuvvwwxxyy
+ zz{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+ clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=\r,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\n, 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)0, flash=\E[?5h$<100/>\E[?5l, fsl=^G, home=\E[H,
+ hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m,
+ is2=\E[4l\E>\E[?1034l, kDC=\E[3;2~, kEND=\E[1;2F,
+ kHOM=\E[1;2H, kIC=\E[2;2~, kLFT=\E[1;2D, kNXT=\E[6;2~,
+ kPRV=\E[5;2~, kRIT=\E[1;2C, ka1=\E[1~, ka3=\E[5~, kb2=\EOu,
+ kbs=^?, kc1=\E[4~, kc3=\E[6~, kcbt=\E[Z, kclr=\E[3;5~,
+ kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ kdch1=\E[3~, kdl1=\E[3;2~, ked=\E[1;5F, kel=\E[1;2F,
+ kend=\E[4~, kent=\EOM, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
+ kf12=\E[24~, kf13=\E[1;2P, kf14=\E[1;2Q, kf15=\E[1;2R,
+ kf16=\E[1;2S, kf17=\E[15;2~, kf18=\E[17;2~,
+ kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~, kf21=\E[20;2~,
+ kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~,
+ kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R, kf28=\E[1;5S,
+ kf29=\E[15;5~, kf3=\EOR, 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=\E[1;6P, kf38=\E[1;6Q,
+ kf39=\E[1;6R, kf4=\EOS, kf40=\E[1;6S, 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~, kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q,
+ kf51=\E[1;3R, kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
+ kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
+ kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
+ kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
+ kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~,
+ kil1=\E[2;5~, kind=\E[1;2B, kmous=\E[M, knp=\E[6~,
+ kpp=\E[5~, kri=\E[1;2A, krmir=\E[2;2~, mc0=\E[i, mc4=\E[4i,
+ mc5=\E[5i, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM,
+ rmacs=\E(B, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
+ rmul=\E[24m, rs1=\Ec, rs2=\E[4l\E>\E[?1034l, 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=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
+ %t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
+ sgr0=\E[0m, smacs=\E(0, 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, Se=\E[2 q,
+ Ss=\E[%p1%d q, use=ecma+index, use=xterm+alt1049,
+ use=xterm+sl, use=ecma+italics,
+#
# st-0.1.1
#
# Note: the original terminfo description uses leading blank to persuade
@@ -5341,40 +6658,47 @@ mgr-linux|Mgr window with Linux keyboard,
# - shifted cursor-keys send sequences like rxvt
# - sgr referred to unimplemented "invis" mode.
# Fixes: add eo and xenl per tack, remove nonworking cbt, hts and tbc, invis
-simpleterm|st| simpleterm,
+simpleterm|old-st| simpleterm 0.1.1,
am, eo, mir, msgr, ul, xenl,
colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[2J,
- cnorm=\E[?12l\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
- cub1=^H, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cnorm=\E[?12l\E[?25h, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub1=^H, cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, kbs=\177,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~,
- kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
- kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^?, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~,
+ kend=\E[4~, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
+ kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\E[15~,
+ kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
khome=\E[1~, knp=\E[6~, kpp=\E[5~, op=\E[37;40m, rc=\E8,
rev=\E[7m, rmacs=\E(B, rmso=\E[m, rmul=\E[m, sc=\E7,
setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
+ sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
+ %t;7%;m,
sgr0=\E[0m, smacs=\E(0, smso=\E[7m, smul=\E[4m,
-st-16color|simpleterm with 16-colors,
- use=ibm+16color, use=simpleterm,
-# 256 colors "works", but when running xterm's test-scripts, some garbage is
-# shown in the titlebar.
-st-256color|simpleterm with 256 colors,
- ccc@,
- initc@, use=xterm+256color, use=simpleterm,
+ use=ecma+index,
+st-16color|stterm-16color|simpleterm with 16-colors,
+ use=ibm+16color, use=st,
+# Tested with st 0.8.2
+# The issue with the titlebar is fixed, though st is very slow.
+# In st 0.7, 256 colors "works", but when running xterm's test-scripts, some
+# garbage is shown in the titlebar.
+#
+# terminal wants to use TERM=stterm-256color, but that is longer than 14
+# characters, making the choice nonportable.
+st-256color|stterm-256color|simpleterm with 256 colors,
+ use=xterm+256color, use=st,
#### TERMINATOR
-# http://software.jessies.org/terminator/
-# Tested using their Debian package org.jessies.terminator 6.104.3256 on 64-bit
+# https://github.com/software-jessies-org/jessies/wiki/Terminator
+#
+# Tested using the Debian package org.jessies.terminator 6.104.3256 on 64-bit
# Debian/current -TD (2011/8/20)
#
-# There are some packaging problems:
+# There were some packaging problems:
# a) using Java, the program starts off using 50Mb, and climbs from there,
# up to 114Mb after testing (no scrollback).
# b) it insists on reinstalling its terminal description in $HOME/.terminfo
@@ -5387,7 +6711,8 @@ st-256color|simpleterm with 256 colors,
# a line.
# b) has xterm-style shifted function-key strings
# meta also is used, but control is ignored.
-# c) has xterm-style modifiers for cursor keys (shift, control, shift+control, meta)
+# c) has xterm-style modifiers for cursor keys (shift, control, shift+control,
+# meta)
# d) some combinations of shift/control send xterm-style sequences for
# insert/delete/home/end.
# e) numeric keypad sends only numbers (compare with vttest).
@@ -5407,36 +6732,402 @@ st-256color|simpleterm with 256 colors,
# c) modified smacs/rmacs to use SCS rather than SI/SO
# d) removed bce
# e) removed km
+#
+# Revisiting in May 2019, the Debian package was no longer available, and a
+# developer-provided ".deb" does not work. However, a usable Windows ".msi"
+# (which relies upon Cygwin) can be tested. The developers provide a terminfo,
+# but some of the features it lists do not work reliably (bce, italics, invis).
+#
+# tack:
+# tbc fails
+# invis attribute fails
+# key-definitions could be expanded, with some work:
+# + supports xterm-style cursor key-modifiers for shift
+# + supports xterm-style function key-modifiers for shift,control,alt
+# + supports xterm-style editing key-modifiers for shift,control,alt
+# (kbs=^?)
+# ncurses test-program:
+# "C" menu shows that bce implementation is incomplete
+# italics did not work
+# dim worked once in tack, but not in ncurses test-program
+# "F" thick-line characters do not display
+# vttest:
+# terminal does not respond to 80/132-column switching
+# wrapping at the right margin is erratic
+# there are several problems in the cursor-movements and screen-features
+# no vt52, no double-sized characters
+# Device attributes response says it is a vanilla VT100
+# does not respond to xterm mouse controls
+# alternate screen tests do not fill the screen, return wrong position
+# window modify/report operations do not work
+# miscellaneous ISO-6429 tests, e.g., REP, do not work
+# CBT, CHT, HPR, CNL,CPL, VPR do not work
+#
+# removed the cancel for "hs", removed cbt, invis, corrected sgr -TD
+# use xterm+256setaf, etc -TD
terminator|Terminator no line wrap,
- eo, mir, msgr, xenl, xon,
- colors#256, cols#80, it#8, lines#24, lm#0, pairs#32767,
+ bce, eo, mir, msgr, xenl, xon,
+ cols#80, it#8, lines#24, lm#0,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bold=\E[1m, civis=\E[?25l, clear=\E[H\E[2J,
- cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ cnorm=\E[?25h, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
- dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
- enacs=\E(B\E)0, flash=^G, home=\E[H, hpa=\E[%i%p1%dG,
- ht=^I, hts=\EH, 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, kbs=^H,
+ dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
+ el1=\E[1K, enacs=\E(B\E)0, flash=^G, home=\E[H,
+ hpa=\E[%i%p1%dG, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L,
+ ind=\n, is1=\E[?47l\E=\E[?1l,
+ is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kbs=^?,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~,
kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
kf15=\E[28~, kf16=\E[29~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
- khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
- op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E(B,
- rmcup=\E[?47l\E8, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
- rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
- rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>,
- s0ds=\E(B, s1ds=\E(0, sc=\E7, setab=\E[48;5;%p1%dm,
- setaf=\E[38;5;%p1%dm,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;,
- sgr0=\E[m\E(B, smacs=\E(0, smcup=\E7\E[?47h, smir=\E[4h,
- smso=\E[7m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd,
- use=xterm+sl-twm,
+ khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, rc=\E8,
+ rev=\E[7m, ri=\EM, rmacs=\E(B, rmir=\E[4l, rmso=\E[27m,
+ rmul=\E[24m, rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>,
+ s0ds=\E(B, s1ds=\E(0, sc=\E7,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p5%t;2%;%?%p1%p3%|%t;7
+ %;m%?%p9%t\E(0%e\E(B%;,
+ sgr0=\E[m\E(B, smacs=\E(0, smir=\E[4h, smso=\E[7m,
+ smul=\E[4m, tbc=\E[3g, tsl=\E]2;%p1, vpa=\E[%i%p1%dd,
+ use=ecma+italics, use=ecma+index, use=xterm+256setaf,
+ use=xterm+sl-twm, use=xterm+alt1049,
+
+#### TERMINOLOGY
+# https://www.enlightenment.org/about-terminology
+#
+# Tested terminology-0.3.0, 0.6.1, using tack and vttest. This is not a vt100
+# emulator, nor is it compatible with xterm, but it uses a few features from
+# both -TD
+#
+# General comments:
+# cursor does not fill on focus
+# there are pervasive problems with clearing/erasing parts of the screen
+# resizing the window causes it to stop listening to the keyboard
+# tack -
+# doesn't understand vt100 CPR needed for resize
+# no CBT
+# no cvvis
+# has invis
+# no blink
+# uses bce model for colors, but (see below) fails the vttest screens
+# has partial support for 256color feature.
+# tack function-keys (a subset of xterm+pcf0), and
+# tack cursor-keys (a subset of xterm+pce2):
+# ctrl+shift (ignored)
+# 2 shift
+# shift-alt modifier -> shift (2)
+# 3 alt
+# 4
+# 5 ctrl
+# tack modifiers did not work for fkeys in 0.3.0; subset works in 0.6.1
+# ctrl + khome/kend works - none of the other modifiers do
+# vttest -
+# spits lots of messages from termptyesc.c especially in vttest.
+# no 132-column mode
+# fails menu 1, 2 (definitely not vt100-compatible)
+# primary (claims vt420 with several options, apparently none work) and
+# secondary report says (perhaps... vt420): \E[>41;285;0c
+# CHA, HPR, VPA, CNL, CPL work
+# BCE with ED/EL - fail
+# BCE with ECH/indexing - fail
+# SD/SU work
+# unlike teken, background light/dark works
+# can set title
+# X10 and Normal mouse work
+# Any-event mouse works
+# Mouse button-event works
+#
+# This description uses xterm+pcf0, which is misleading because the program
+# does not handle combinations of modifiers - but listing them all would
+# involve more effort than its developers spent -TD
+terminology-0.6.1|EFL-based terminal emulator,
+ mc5i@,
+ blink@, ed@, el@, el1@, invis=\E[8m, kLFT=\E[1;2D,
+ kRIT=\E[1;2C, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+ kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ kind=\E[1;2B, kri=\E[1;2A,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p7%t;8
+ %;m%?%p9%t\016%e\017%;$<2>,
+ vpa=\E[%i%p1%dd, kDC3=\E[3;3~, kDC4=\E[3;4~,
+ kDC5=\E[3;5~, kDC6=\E[3;6~, kDC7=\E[3;7~, kDN=\E[1;2B,
+ kDN3=\E[1;3B, kDN4=\E[1;4B, kDN5=\E[1;5B, kDN6=\E[1;6B,
+ kDN7=\E[1;7B, kEND5=\E[1;5F, kHOM5=\E[1;5H,
+ kLFT3=\E[1;3D, kLFT4=\E[1;4D, kLFT5=\E[1;5D,
+ kLFT6=\E[1;6D, kLFT7=\E[1;7D, kRIT3=\E[1;3C,
+ kRIT4=\E[1;4C, kRIT5=\E[1;5C, kRIT6=\E[1;6C,
+ kRIT7=\E[1;7C, kUP=\E[1;2A, use=xterm+pcf0, use=vt100,
+ use=xterm+256setaf,
+
+# Tested terminology 1.0.0
+#
+# tack -
+# Shifted cursor-keys send nothing, but xterm modifiers for control+shift
+# and control+alt were added like xterm+pcc2
+# Editing keys have some features from xterm+pce2
+# Changed from xterm+pcf0 to xterm+pcf2
+#
+# vttest -
+# REP, SL, SR fail
+#
+# Aside from the partial fixes for function/cursor/editing keys, no improvement
+# in other tests versus 0.6.1
+terminology-1.0.0|EFL-based terminal emulator,
+ civis=\E[?25l, cnorm=\E[?12l\E[?25h, dim=\E[2m,
+ flash=\E[?5h$<100/>\E[?5l, kend=\E[OF, khome=\E[OH,
+ rmacs=\E(B,
+ sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;
+ %?%p1%p3%|%t;7%;%?%p7%t;8%;m$<2>,
+ sgr0=\E(B\E[m, smacs=\E(0, use=ecma+italics,
+ use=xterm+x11mouse, use=xterm+pce2, use=xterm+pcf2,
+ use=xterm+pcc2, use=terminology-0.6.1,
+
+terminology|EFL-based terminal emulator,
+ use=terminology-1.0.0,
+
+######## OPENGL CLIENTS
+
+#### Alacritty
+# https://github.com/jwilm/alacritty
+# Version 0.4.0 (2019/11/25)
+# Version 0.3.3 (2019/08/03)
+# Version 0.2.1 (2018/10/03)
+# Project started in 2016/02, uses Rust and OpenGL, and in contrast to (most X
+# terminal programs) is not designed to run with a remote server.
+#
+# Packaged in Arch Linux -
+# vttest:
+# initial screensize 24x80
+# no DECCOLM (does not switch between 80/132 columns)
+# otherwise, passes wrapping test
+# no DECSCNM
+# identifies as a vt102
+# numeric keypad does not send expected codes (seen in 0.4.0)
+# passes bce test
+# vt220:
+# ECH works in 0.3.3 (0.2.1 left text on right margin)
+# no SRM, DECSCA
+# vt320:
+# fails DECXCPR
+# does not implement any of the DECRQM/DECRPM controls
+# does not implement any of the DECRQSS controls
+# vt420:
+# no DECLRMM
+# no DECBI, DECFI
+# other:
+# fails CHT, otherwise ECMA-48 cursor movement ok
+# fails ERM/SPA, SL, SR, passes REP, SD, SU
+# xterm:
+# no X10 mouse
+# has normal and highlight mouse
+# has any-event and button-event mouse
+# + does support SGR-mouse
+# + does not correctly support focus in/out events (seen in 0.4.0)
+# cursor-position wrong after alternate-screen (fixed in 0.4.0)
+# none of the dtterm controls work
+# tack:
+# bell and flash do not work
+# blink does not work
+# italics and crossed-out work (latter did not work in 0.2.1)
+# function-keys work up (tested combinations which window manager allows)
+# treats meta as escape-prefix
+#
+# The program sources include "alacritty" and "alacritty-direct", which are
+# copied from "xterm-256color" and "xterm-direct" (but using semicolon for
+# subparameter delimiter). Refactored here to use ncurses building blocks -TD
+alacritty|alacritty terminal emulator,
+ rs1=\Ec\E]104\007, use=xterm+256color,
+ use=alacritty+common,
+
+alacritty-direct|alacritty with direct color indexing,
+ use=xterm+indirect, use=alacritty+common,
+
+# cancel km, since it is not actually meta mode -TD
+# added ecma+strikeout in 0.3.3 -TD
+# added xterm+sl-twm in 0.3.3 -TD
+alacritty+common|base fragment for alacritty,
+ km@, npc,
+ kb2=\EOE, kbs=^?, kcbt=\E[Z, kent=\EOM, Se=\E[0 q,
+ use=ecma+index, use=xterm+sm+1006, use=xterm-basic,
+ use=xterm+app, use=ansi+rep, use=xterm+tmux,
+ use=ecma+strikeout, use=xterm+sl-twm, use=ecma+italics,
+ use=xterm+pce2, use=xterm+pcc2, use=xterm+pcf2,
+
+#### Kitty
+# https://github.com/kovidgoyal/kitty
+# Version 0.13.3
+# Project started in 2016/10 (see alacritty), but is a Python script rather
+# than Rust, using OpenGL. The same caveats regarding remote connections
+# apply. This is not an X terminal, though (like alacritty), it copies
+# features from xterm.
+#
+# Regarding the name "kitty", that is a pun, reflected in the description.
+# But see
+# http://www.9bis.net/kitty/
+# https://github.com/kovidgoyal/kitty/issues/9
+# https://github.com/kovidgoyal/kitty/issues/1025
+# and
+# http://lists.gnu.org/archive/html/bug-ncurses/2018-09/msg00005.html
+# https://github.com/kovidgoyal/kitty/issues/879
+#
+# Notes:
+# initial screensize 71x22
+# does not respond to "resize -s"
+# resizing with window manager gives no clues
+# vttest
+# does not switch between 80/132 columns
+# fails wrapping test, copying vte/rxvt
+# no reverse-background, no blink
+# claims to be vt200:
+# primary \E[?62;c
+# secondary \E[>1;4000;12c
+# however -
+# no GR in the locking-shifts screen
+# no NRCS or ISO-2022, anyway
+# no VT52
+# VT220:
+# has DECTCEM, ECH, but no SRM and DECSCA
+# has operating condition report, none of the others
+# VT320:
+# has SU/SD
+# DECRQSS ok for DECSTBM, SGR, none of the others
+# no status-line
+# VT420:
+# DECXCPR device status works, none of the others
+# no left/right margins
+# has DECCARA, but not DECERA, DECFRA, DECRARA, DECSERA
+# inside of DECCARA is uncolored
+# line-drawing with DECCARA does not work
+# aside from left/right margins, editing sequences look ok
+# no DECFI, DECBI
+# color:
+# fails ECH test for bce
+# ISO-6429
+# fails REP, SL, SL, but other cursor-movement ok
+# xterm:
+# does not recognize original alternate-screen
+# cursor-position wrong after alternate-screen
+# has normal mouse, any-event, any-button, but
+# no X10 mouse
+# no mouse-highlight tracking
+# no DEC locator
+# dtterm - only supports report-size chars/pixels
+# recognizes tcap-query
+# tack:
+# flash doesn't work
+# italics do not work
+# bce should be set (but see vttest)
+#* developer's terminfo stopped at kf25, but the program continues,
+# copying xterm for the rest of the control+fkey sequence
+# (but only one modifier is supported, like iTerm2).
+#* it omitted shifted pageup/down
+#* control+editing keys work
+# In contrast to function-keys, some additional modifier combinations
+# act like xterm for the editing/cursor-keys, e.g., alt+shift. While
+# the implementation is incomplete, the building-blocks are consistent
+# with what has been implemented -TD
+# DECKPAM does not work -TD
+#* ka1, ka3, kc1, kc3 were bogus (removed)
+#* meta sends escape (removed kmm) -TD
+#* cvvis does not make cursor "more visible" -TD
+kitty|KovId's TTY,
+ use=xterm+256color, use=kitty+common,
+kitty-direct|KovId's TTY using direct colors,
+ oc=\E]104\007, use=xterm+direct2, use=kitty+common,
+kitty+common|KovId's TTY common properties,
+ am, mc5i, mir, msgr, npc, xenl,
+ cols#80, it#8, lines#24,
+ acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
+ yzz{{||}}~~,
+ bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+ clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=\r,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\n, 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[2m, dl=\E[%p1%dM,
+ dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
+ flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
+ ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
+ ind=\n, kbs=^?, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB,
+ kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kend=\EOF, kf1=\EOP,
+ kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[1;2P,
+ kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~,
+ kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~,
+ kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~,
+ kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R,
+ kf28=\E[1;5S, kf29=\E[15;5~, kf3=\EOR, 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~, kf4=\EOS,
+ kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ khome=\EOH, kich1=\E[2~, kind=\E[1;2B, kmous=\E[M,
+ knp=\E[6~, kpp=\E[5~, kri=\E[1;2A, op=\E[39;49m, rc=\E8,
+ rev=\E[7m, ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l,
+ rmkx=\E[?1l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec, sc=\E7,
+ sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;
+ %?%p1%p3%|%t;7%;m,
+ sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
+ smkx=\E[?1h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+ vpa=\E[%i%p1%dd, use=ecma+index, use=xterm+sl-twm,
+ use=ecma+strikeout, use=xterm+pce2, use=xterm+pcc2,
+ use=ecma+italics, use=xterm+alt1049,
+
+######## WEB CLIENTS
+
+#### DomTerm
+# https://domterm.org
+#
+# Quoting its webpage:
+# The domterm command runs a server that manages sessions (usually shell
+# processes). The user interface and terminal emulation is handled by a
+# JavaScript library that can run in a regular web browser or an embedded
+# browser such as Electron, using Web Sockets to talk to the server.
+#
+# it can connect to, and display in, a web browser, or as a standalone Qt
+# application. Either way, it displays in the current desktop session.
+#
+# Testing current code (2019/07/06) with Fedora 30:
+# tack
+# no flash
+# no beep
+# no dim
+# no blink
+# no invis
+# no italics
+# ok smxx/rmxx
+# bce screen shows diagonal lines...
+# kf6 sends nothing
+# kf11 toggles maximize
+# cursor-key application mode works
+# numeric keypad application does not work; keys always send face-codes
+# sends utf-8 for meta, like xterm
+# vttest
+# has problems with menu #1 (wrapping)
+# DA = vt200 with 132 columns, color
+# DA2 = 990, 100300 ("\E[>990;100300;0c")
+# no VT52, no double-size characters
+# vt220 ECH test works, SRM, DECSCA do not
+# S7C1T/S8C1t does not work
+# DECUDK does not work
+# CNL does not work; the other ECMA-48 cursor-movement tests work
+# REP sort-of works (does not match xterm)
+# SD/SU work, but not SL/SR
+# window reporting: works for size in chars/pixels, but not other tests
+# X10 mouse clicks work -- but return 4 rather than 1 for codes
+# any-event mouse mode acts like any-button mode
+# implements SGR mouse-mode
+# other:
+# does not implement initc
+# does accept either colons or semicolon in 38/48 SGR.
+domterm|DomTerm web client,
+ npc,
+ bel@, blink@, dim@, invis@, kcbt=\E[Z, ritm@, rmkx=\E[?1l,
+ sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
+ %t;7%;m,
+ sitm@, smkx=\E[?1h, use=xterm+256setaf, use=ecma+index,
+ use=xterm+sm+1006, use=xterm+pcfkeys, use=xterm-basic,
+ use=xterm-basic,
######## UNIX VIRTUAL TERMINALS, VIRTUAL CONSOLES, AND TELNET CLIENTS
#
@@ -5447,9 +7138,9 @@ terminator|Terminator no line wrap,
cbunix|cb unix virtual terminal,
OTbs, am, da, db,
cols#80, lines#24, lm#0,
- bel=^G, clear=\EL, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ bel=^G, clear=\EL, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\EG%p2%c%p1%c, cuu1=\EA, dch1=\EM, dl1=\EN, ed=\EL,
- el=\EK, ich1=\EO, il1=\EP, ind=^J, kcub1=\ED, kcud1=\EB,
+ el=\EK, ich1=\EO, il1=\EP, ind=\n, kcub1=\ED, kcud1=\EB,
kcuf1=\EC, kcuu1=\EA, khome=\EE, rmso=\Eb^D, rmul=\Eb^A,
smso=\Ea^D, smul=\Ea^A,
# (vremote: removed obsolete ":nl@:" -- esr)
@@ -5463,17 +7154,20 @@ pty|4bsd pseudo teletype,
#### Emacs
+# https://www.emacswiki.org/emacs/AnsiTerm
+# https://github.com/emacs-mirror/emacs/blob/master/lisp/term.el
+#
# The codes supported by the term.el terminal emulation in GNU Emacs 19.30
eterm|gnu emacs term.el terminal emulation,
am, mir, xenl,
cols#80, lines#24,
- bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+ bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, rev=\E[7m,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, rev=\E[7m,
rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
sgr0=\E[m, smcup=\E7\E[?47h, smir=\E[4h, smso=\E[7m,
smul=\E[4m,
@@ -5482,22 +7176,43 @@ eterm|gnu emacs term.el terminal emulation,
eterm-color|Emacs term.el terminal emulator term-protocol-version 0.96,
am, mir, msgr, xenl,
colors#8, cols#80, lines#24, pairs#64,
- bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, kbs=\177,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m, kbs=^?,
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kdch1=\E[3~, kend=\E[4~, khome=\E[1~, kich1=\E[2~,
knp=\E[6~, kpp=\E[5~, op=\E[39;49m, rc=\E8, rev=\E[7m,
ri=\EM, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec,
sc=\E7, setab=\E[%p1%'('%+%dm, setaf=\E[%p1%{30}%+%dm,
- sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m,
+ sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%?
+ %p7%t;8%;m,
sgr0=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
u6=\E[%i%d;%dR, u7=\E[6n,
+# shell.el can "do" color, though not nearly as well.
+#
+# seen here:
+# http://unix.stackexchange.com/questions/237943/changing-colors-used-by-ls-does-not-work-in-emacs-shell-mode
+#
+# and
+# https://lists.gnu.org/archive/html/bug-gnu-emacs/2012-08/msg00481.html
+# https://github.com/emacs-mirror/emacs/blob/master/lisp/shell.el
+# https://github.com/emacs-mirror/emacs/blob/master/lisp/ansi-color.el
+#
+# however, as tested with Emacs 24.5.1, the result is buggy, losing overlays
+# frequently. The contemporaneous term.el aka ansi-term does not "support"
+# italics but does not lose the color information -TD 2017/01/28.
+dumb-emacs-ansi|Emacs dumb terminal with ANSI color codes,
+ am, hc,
+ colors#8, it#8, ncv#13, pairs#64,
+ bold=\E[1m, cud1=\n, ht=^I, ind=\n, op=\E[39;49m,
+ rmul=\E[24m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+ sgr0=\E[m, smul=\E[4m, use=ecma+italics,
+
#### Screen
# Entries for use by the `screen' program by Juergen Weigert,
@@ -5514,39 +7229,97 @@ eterm-color|Emacs term.el terminal emulator term-protocol-version 0.96,
# S0 (str) Switch charset 'G0' to the specified charset.
# E0 (str) Switch charset 'G0' back to standard charset.
#
-# tested with screen 3.09.08
+# Initially tested with screen 3.09.08
+#
+# According to its manual page
+#
+# Screen is a full-screen window manager that multiplexes a physical
+# terminal between several processes (typically interactive shells). Each
+# virtual terminal provides the functions of a DEC VT100 terminal and, in
+# addition, several control functions from the ISO 6429 (ECMA 48, ANSI
+# X3.64) and ISO 2022 standards (e.g. insert/delete line and support for
+# multiple character sets).
+#
+# However, there is a design error in its support for video highlights. The
+# program uses a table (rendlist) which equates the SGR codes to terminal
+# capabilities. That, and color-decoding are hardcoded in screen; its behavior
+# is modified only by the presence or absence of the corresponding capabilities.
+# Not by their values.
+#
+# If screen sets the TERMCAP variable, it uses hardcoded strings which
+# correspond to the rendlist table.
+#
+# The table gives this information:
+#
+# SGR capability
+# --- ---------
+# 1 bold
+# 2 dim
+# 3 standout
+# 4 underline
+# 5 blink
+# - (unused 6)
+# 7 reverse
+# - (unused 8-21)
+# 22 reset bold, standout and dim
+# 23 reset standout
+# 24 reset underline
+# 25 reset blink
+# - (unused 26)
+# 27 reset reverse
+#
+# ECMA-48 differs from this: 3 and 23 set and reset italics, respectively.
+# ECMA-48 does not define "standout" - that is a termcap/terminfo abstraction.
+# Without some redesign of screen, it is not possible to extend the set of
+# capabilities. Substitution would be possible, e.g., sending italics in
+# place of underline.
+#
+# Because screen uses hard-coded parsing, it does not check if two capabilities
+# use the same value. For example, changing standout to be the same as any of
+# the other capabilities will confuse screen. Curses applications which use
+# sgr are not impacted (because that usually resets all capabilities before
+# setting any), but termcap applications do not use sgr -TD
+#
+# The "screen" entry should use ecma+index rather than just indn, but tmux
+# defaults to using "screen". For background, screen supported ecma+index
+# since 1994 (i.e., screen 3.0.5), stating that it was an obscure code used by
+# the (Siemens Nixdorf) 97801 terminal. It was not shown in the termcap or
+# terminfo entries (which list about 60% of the control sequences).
screen|VT 100/ANSI X3.64 virtual terminal,
OTbs, OTpt, am, km, mir, msgr, xenl, G0,
colors#8, cols#80, it#8, lines#24, ncv@, pairs#64, U8#1,
- acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
+ yzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=^M,
+ clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
- cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
- dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
- flash=\Eg, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E)0, kbs=^H, kcbt=\E[Z,
+ cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+ dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+ enacs=\E(B\E)0, flash=\Eg, home=\E[H, hpa=\E[%i%p1%dG,
+ ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
+ ind=\n, indn=\E[%p1%dS, is2=\E)0, kbs=^H, kcbt=\E[Z,
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~,
kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
- nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
- rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m,
- rmul=\E[24m, rs2=\Ec\E[?1000l\E[?25h, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
- sgr0=\E[m\017, smacs=^N, smcup=\E[?1049h, smir=\E[4h,
- smkx=\E[?1h\E=, smso=\E[3m, smul=\E[4m, tbc=\E[3g, E0=\E(B,
- S0=\E(%p1%c, use=ecma+color,
+ nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmir=\E[4l,
+ rmkx=\E[?1l\E>, rmso=\E[23m, rmul=\E[24m,
+ rs2=\Ec\E[?1000l\E[?25h, sc=\E7,
+ sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;
+ 5%;%?%p5%t;2%;m%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, smir=\E[4h, smkx=\E[?1h\E=,
+ smso=\E[3m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd,
+ E0=\E(B, S0=\E(%p1%c, use=xterm+alt1049, use=ecma+color,
# The bce and status-line entries are from screen 3.9.13 (and require some
# changes to .screenrc).
screen-bce|VT 100/ANSI X3.64 virtual terminal with bce,
bce,
- ech@, use=screen,
+ ech@, use=screen4,
screen-s|VT 100/ANSI X3.64 virtual terminal with hardstatus line,
- dsl=\E_\E\\, fsl=\E\\, tsl=\E_, use=screen,
+ dsl=\E_\E\\, fsl=\E\\, tsl=\E_, use=screen4,
# ======================================================================
# Entries for GNU Screen with 16 colors.
@@ -5557,7 +7330,7 @@ screen-s|VT 100/ANSI X3.64 virtual terminal with hardstatus line,
# do all support 16 color palette.
screen-16color|GNU Screen with 16 colors,
- use=ibm+16color, use=screen,
+ use=ibm+16color, use=screen4,
screen-16color-s|GNU Screen with 16 colors and status line,
use=ibm+16color, use=screen-s,
@@ -5565,27 +7338,38 @@ screen-16color-s|GNU Screen with 16 colors and status line,
screen-16color-bce|GNU Screen with 16 colors and BCE,
use=ibm+16color, use=screen-bce,
-screen-16color-bce-s|GNU Screen with 16 colors, BCE, and status line,
+screen-16color-bce-s|GNU Screen with 16 colors using BCE and status line,
bce, use=ibm+16color, use=screen-s,
# ======================================================================
# Entries for GNU Screen 4.02 with --enable-colors256.
screen-256color|GNU Screen with 256 colors,
- ccc@,
- initc@, use=xterm+256color, use=screen,
+ use=xterm+256setaf, use=screen4,
screen-256color-s|GNU Screen with 256 colors and status line,
- ccc@,
- initc@, use=xterm+256color, use=screen-s,
+ use=xterm+256setaf, use=screen-s,
screen-256color-bce|GNU Screen with 256 colors and BCE,
- ccc@,
- initc@, use=xterm+256color, use=screen-bce,
+ bce, use=xterm+256setaf, use=screen-bce,
+
+screen-256color-bce-s|GNU Screen with 256 colors using BCE and status line,
+ bce, use=xterm+256setaf, use=screen-s,
+
+screen.xterm-256color|GNU Screen with xterm using 256 colors,
+ use=xterm+256setaf, use=screen.xterm-new,
+
+screen.konsole-256color|GNU Screen with konsole using 256 colors,
+ use=xterm+256setaf, use=screen.konsole,
+
+screen.vte-256color|GNU Screen with vte using 256 colors,
+ use=xterm+256setaf, use=screen.vte,
-screen-256color-bce-s|GNU Screen with 256 colors, BCE, and status line,
- bce, ccc@,
- initc@, use=xterm+256color, use=screen-s,
+screen.putty-256color|GNU Screen with putty using 256 colors,
+ use=xterm+256setaf, use=screen.putty,
+
+screen.mlterm-256color|GNU Screen with mlterm using 256 colors,
+ use=xterm+256setaf, use=screen.mlterm,
# ======================================================================
@@ -5603,6 +7387,12 @@ screen-256color-bce-s|GNU Screen with 256 colors, BCE, and status line,
screen+fkeys|function-keys according to screen,
kend=\E[4~, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kfnd@,
khome=\E[1~, kslt@,
+
+# See explanation before "screen" entry. Cancel italics so that applications
+# do not assume screen supports the feature. Add this tweak to entries which
+# extend screen for terminals which do support italics.
+screen+italics|screen cannot support italics,
+ ritm@, sitm@,
#
# Here are a few customized entries which are useful -TD
#
@@ -5616,47 +7406,61 @@ screen+fkeys|function-keys according to screen,
# (e) when screen finds one of these customized entries, it sets $TERM to
# match. Hence, no "screen.xterm" entry is provided, since that would
# create heartburn for people running remote xterm's.
+# (f) screen does not support rep.
#
# xterm (-xfree86 or -r6) does not normally support kIC, kNXT and kPRV
# since the default translations override the built-in keycode
# translation. They are suppressed here to show what is tested by tack.
screen.xterm-xfree86|screen.xterm-new|screen customized for modern xterm,
bce@, bw,
- invis@, kIC@, kNXT@, kPRV@, meml@, memu@,
- sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m,
- E3@, use=screen+fkeys, use=xterm-new,
+ invis@, kIC@, kNXT@, kPRV@, meml@, memu@, rep@,
+ sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
+ %t;7%;%?%p4%t;5%;%?%p5%t;2%;m,
+ E3@, use=screen+italics, use=screen+fkeys,
+ use=xterm+x11mouse, use=xterm-new,
+#:screen.xterm|screen for modern xterm,
+#: use=screen.xterm-new,
# xterm-r6 does not really support khome/kend unless it is propped up by
# the translations resource.
screen.xterm-r6|screen customized for X11R6 xterm,
- bw, use=screen+fkeys, use=xterm-r6,
+ bw, use=xterm+x11mouse, use=screen+fkeys, use=xterm-r6,
# Color applications running in screen and TeraTerm do not play well together
# on Solaris because Sun's curses implementation gets confused.
screen.teraterm|disable ncv in teraterm,
ncv#127,
- 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,
- use=screen+fkeys, use=screen,
+ 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,
+ use=screen+fkeys, use=xterm+x11mouse, use=screen4,
# Other terminals
screen.rxvt|screen in rxvt,
bw, XT,
cvvis@, flash@, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
kcuu1=\EOA, use=screen+fkeys, use=vt100+enq,
- use=rxvt+pcfkeys, use=vt220+keypad, use=screen,
+ use=rxvt+pcfkeys, use=xterm+x11mouse, use=vt220+keypad,
+ use=screen4,
screen.Eterm|screen in Eterm,
- use=screen+fkeys, use=Eterm,
+ use=xterm+x11mouse, use=screen+fkeys, use=Eterm,
screen.mrxvt|screen in mrxvt,
- use=screen+fkeys, use=mrxvt,
+ use=xterm+x11mouse, use=screen+fkeys, use=mrxvt,
screen.vte|screen in any VTE-based terminal,
+ use=xterm+x11mouse, use=screen+italics,
use=screen+fkeys, use=vte,
screen.gnome|screen in GNOME Terminal,
+ use=xterm+x11mouse, use=screen+italics,
use=screen+fkeys, use=gnome,
screen.konsole|screen in KDE console window,
+ use=xterm+x11mouse, use=screen+italics,
use=screen+fkeys, use=konsole,
# fix the backspace key
screen.linux|screen in linux console,
bw,
- kbs=\177, kcbt@, use=screen+fkeys, use=screen,
+ kbs=^?, kcbt@, use=xterm+x11mouse, use=screen+fkeys,
+ use=screen4,
screen.mlterm|screen in mlterm,
- use=screen+fkeys, use=mlterm,
+ use=xterm+x11mouse, use=screen+fkeys, use=mlterm,
+screen.putty|screen in putty,
+ use=xterm+x11mouse, use=screen+fkeys, use=putty,
# The default "screen" entry is reasonably portable, but not optimal for the
# most widely-used terminal emulators. The "bce" capability is supported in
@@ -5673,7 +7477,7 @@ screen.mlterm|screen in mlterm,
# defbce on
screen-bce.xterm-new|screen optimized for modern xterm,
bce,
- ech@, use=screen.xterm-new,
+ ech@, use=screen+italics, use=screen.xterm-new,
screen-bce.rxvt|screen optimized for rxvt,
bce,
ech@, use=screen.rxvt,
@@ -5685,31 +7489,28 @@ screen-bce.mrxvt|screen optimized for mrxvt,
ech@, use=screen.mrxvt,
screen-bce.gnome|screen optimized for GNOME-Terminal,
bce,
- ech@, use=screen.gnome,
+ ech@, use=screen+italics, use=screen.gnome,
screen-bce.konsole|screen optimized for KDE console window,
bce,
- ech@, use=screen.konsole,
+ ech@, use=screen+italics, use=screen.konsole,
screen-bce.linux|screen optimized for linux console,
bce,
ech@, use=screen.linux,
-screen-bce.mlterm|screen optimized for mlterm,
- bce,
- ech@, use=screen.mlterm,
screen-w|VT 100/ANSI X3.64 virtual terminal with 132 cols,
- cols#132, use=screen,
+ cols#132, use=screen4,
screen2|old VT 100/ANSI X3.64 virtual terminal,
cols#80, it#8, lines#24,
- cbt=\E[Z, clear=\E[2J\E[H, cr=^M, cub=\E[%p1%dD, cub1=^H,
+ cbt=\E[Z, clear=\E[2J\E[H, cr=\r, 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, ed=\E[J,
el=\E[K, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=, il=\E[%p1%dL,
- il1=\E[L, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+ il1=\E[L, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
kcuu1=\EA, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV,
kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH,
- nel=^M^J, rc=\E8, ri=\EM, rmir=\E[4l, rmso=\E[23m,
+ nel=\r\n, rc=\E8, ri=\EM, rmir=\E[4l, rmso=\E[23m,
rmul=\E[24m, rs1=\Ec, sc=\E7, sgr0=\E[m, smir=\E[4h,
smso=\E[3m, smul=\E[4m, tbc=\E[3g,
# (screen3: removed unknown ":xv:LP:G0:" -- esr)
@@ -5717,18 +7518,133 @@ screen3|older VT 100/ANSI X3.64 virtual terminal,
km, mir, msgr,
cols#80, it#8, lines#24,
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, cuf=\E[%p1%dC, cuf1=\E[C,
+ cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
el=\E[K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E)0, kbs=^H, kcub1=\EOD,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, is2=\E)0, kbs=^H, kcub1=\EOD,
kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ,
kf3=\EOR, kf4=\EOS, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM,
rmir=\E[4l, rmkx=\E>, rmso=\E[23m, rmul=\E[24m, rs1=\Ec,
sc=\E7, sgr0=\E[m, smir=\E[4h, smkx=\E=, smso=\E[3m,
smul=\E[4m, tbc=\E[3g,
+# screen 4.0 was released 2003-07-21, and as of March 2019, its terminfo file
+# was last updated in 2009 to include 256-color support. The most recent
+# release is 4.6.2 (October 2017).
+screen4|VT 100/ANSI X3.64 virtual terminal,
+ use=ecma+index, use=screen,
+
+# As of March 2019, screen 5.0 has not been released.
+#
+# However,
+#
+# https://savannah.gnu.org/bugs/?36676
+#
+# mentions a change to implement italics which should be in a version 5,
+# (implemented 2016-11-05, but merged 2017-07-09). That does away with the
+# longstanding use of SGR 3 for standout, and interprets it as italics.
+#
+# The same development branch has some support for direct-colors, but none
+# of this has been documented.
+screen5|VT 100/ANSI X3.64 virtual terminal (someday),
+ rmso=\E[27m,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
+ %p5%t;2%;m%?%p9%t\016%e\017%;,
+ smso=\E[7m, use=ecma+italics, use=screen4,
+
+#### Tmux
+
+# tmux is mostly compatible with screen, but has support for italics, and some
+# of the xterm cursor bits.
+#
+# However, unlike screen, tmux has no provision for using derived terminal
+# descriptions. When screen starts, it looks for a suitable "inner" terminal
+# such as "screen.$TERM" to correspond to the outer terminal's quirks. The
+# various entries such as screen.xterm-new provide a way to more closely
+# match the terminal.
+tmux|tmux terminal multiplexer,
+ invis=\E[8m, rmso=\E[27m,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
+ %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ smso=\E[7m, E3=\E[3J, Smulx=\E[4\:%p1%dm,
+ use=ecma+italics, use=ecma+strikeout, use=xterm+edit,
+ use=xterm+pcfkeys, use=xterm+sl, use=xterm+tmux,
+ use=screen,
+
+tmux-256color|tmux with 256 colors,
+ use=xterm+256setaf, use=tmux,
+
+#### Dvtm
+
+# dvtwm 0.15
+# http://www.brain-dump.org/projects/dvtm/
+#
+# + This uses ncurses to manage the display, including support for italics and
+# default-colors.
+# + However, default-colors are incomplete: do not set bce.
+# + It does not implement flash (since no \e[?5h)
+# + Do not set XT: dvtm knows about OSC 0 and 2, but not 1.
+# Oddly enough, if $TERM contains "linux", it attempts to set the title.
+# + Some of the program is cut/paste from rxvt-unicode, e.g., the ACS table.
+# + The built-in table of function-keys (based on rxvt) is incomplete (ends
+# with kf22).
+# + It also omits the shifted cursor- and editing-keypad keys.
+# However, it is confused by xterm's shifted cursor- and editing-keypad keys
+# (and passes those through without interpretation)
+# and may simply pass-through rxvt's, making it appear to work.
+# In other cases such as kf23 and up, no pass-through is done.
+# + Most of the mode-settings in the initialization/reset strings are not
+# implemented; dvtm copies its description from rxvt.
+dvtm|dynamic virtual terminal manager,
+ am, eo, mir, msgr, xenl, AX,
+ colors#8, cols#80, it#8, lines#24, ncv@, pairs#64,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+ clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+ enacs=\E(B\E)0, 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=\n,
+ 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$, kIC=\E[2$, kLFT=\E[d,
+ kNXT=\E[6$, kPRV=\E[5$, kRIT=\E[c, ka1=\EOw, ka3=\EOy,
+ kb2=\EOu, kbs=^?, 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~, 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~,
+ kf21=\E[23$, kf22=\E[24$, kf3=\E[13~, kf4=\E[14~,
+ kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ kfnd=\E[1~, khome=\E[7~, kich1=\E[2~, kind=\E[a,
+ kmous=\E[M, knp=\E[6~, kpp=\E[5~, kri=\E[b, kslt=\E[4~,
+ op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+ rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, 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>\E[?1000l\E[?
+ 25h,
+ s0ds=\E(B, s1ds=\E(0, sc=\E7, setab=\E[4%p1%dm,
+ setaf=\E[3%p1%dm,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?
+ %p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h,
+ smso=\E[7m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd,
+ use=ecma+italics,
+
+dvtm-256color|dynamic virtual terminal manager with 256 colors,
+ colors#0x100, pairs#0x10000,
+ setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;
+ 5;%p1%d%;m,
+ setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5
+ ;%p1%d%;m,
+ use=dvtm,
+
#### NCSA Telnet
# Francesco Potorti <F.Potorti@cnuce.cnr.it>:
@@ -5752,7 +7668,7 @@ screen3|older VT 100/ANSI X3.64 virtual terminal,
#
# Other special mappings:
# Apple VT220
-# HELP Find
+# HELP Find
# HOME Insert here
# PAGEUP Remove
# DEL Select
@@ -5769,15 +7685,15 @@ ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
am, km, mir, msgr, xenl,
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+ clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
- el=\E[K, el1=\E[1K, enacs=\E)0, flash=\E[?5h\E[?5l,
- home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
- if=/usr/share/tabset/vt100, il=\E[%p1%dL, il1=\E[L,
- ind=\n$<150*>,
+ el=\E[K, el1=\E[1K, enacs=\E)0,
+ flash=\E[?5h$<100/>\E[?5l, home=\E[H, ht=^I, hts=\EH,
+ ich=\E[%p1%d@, if=/usr/share/tabset/vt100,
+ il=\E[%p1%dL, il1=\E[L, ind=\n$<150*>,
is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, kbs=^H,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kdch1=\E[4~, kend=\E[5~, kf1=\E[17~, kf10=\E[28~,
@@ -5789,7 +7705,8 @@ ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
rmacs=\E(B, rmam=\E[?7l, rmcup=\E[2J\E8, rmir=\E[4l,
rmso=\E[27m, rmul=\E[24m,
rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;4;6l\E[4l\E>, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;,
+ 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\E(B, smacs=\E(0, smam=\E[?7h, smcup=\E7,
smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
u8=\E[?62;1;6c, use=xterm+sl, use=ansi+enq,
@@ -5817,13 +7734,13 @@ ncsa-vt220|NCSA Telnet using vt220-compatible function keys,
#### Pilot Pro Palm-Top
#
# Termcap for Top Gun Telnet and SSH on the Palm Pilot.
-# http://www.ai/~iang/TGssh/
+# https://web.archive.org/web/20051103015726/http://www.ai/~iang/TGssh/
pilot|tgtelnet|Top Gun Telnet on the Palm Pilot Professional,
OTbs, am, xenl,
cols#39, lines#16,
- bel=^G, clear=\Ec, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, clear=\Ec, cr=\r, cub1=^H, cud1=\n,
cup=\Em%p1%{32}%+%c%p2%{32}%+%c, home=\Em\s\s, ht=^I,
- ind=^J, kbs=^H, kcub1=^H, kcud1=^J, knp=^L, kpp=^K, nel=\Em~\s,
+ ind=\n, kbs=^H, kcub1=^H, kcud1=\n, knp=^L, kpp=^K, nel=\Em~\s,
rmso=\EB, smso=\Eb,
# From: Federico Bianchi <bianchi@www.arte.unipi.it>
@@ -5840,8 +7757,8 @@ pilot|tgtelnet|Top Gun Telnet on the Palm Pilot Professional,
elks-glasstty|ELKS glass-TTY capabilities,
OTbs, am,
cols#80, it#8, lines#25,
- bel=^G, cr=^M, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J,
- nel=^M^J,
+ bel=^G, cr=\r, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n,
+ nel=\r\n,
elks-vt52|ELKS vt52 console,
clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC,
@@ -5875,11 +7792,11 @@ sibo|ELKS SIBO console,
pccons|pcconsole|ANSI (mostly) Alpha PC console terminal emulation,
am, xon,
cols#80, lines#25,
- bel=^G, clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+ bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, kbs=^H,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
- nel=^M^J, rev=\E[7m, rmso=\E[m, sgr0=\E[m, smso=\E[7m,
+ nel=\r\n, rev=\E[7m, rmso=\E[m, sgr0=\E[m, smso=\E[7m,
#### Sun consoles
#
@@ -5888,10 +7805,10 @@ pccons|pcconsole|ANSI (mostly) Alpha PC console terminal emulation,
oldsun|Sun Microsystems Workstation console,
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,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\E[B, 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, ht=^I,
- ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+ ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
is1=\E[1r, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H,
rmso=\E[m, sgr0=\E[m, smso=\E[7m,
@@ -5901,12 +7818,12 @@ oldsun|Sun Microsystems Workstation console,
sun-il|Sun Microsystems console with working insert-line,
am, km, msgr,
cols#80, lines#34,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, 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, ht=^I,
- ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+ ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
kb2=\E[218z, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
- kcuu1=\E[A, kdch1=\177, kend=\E[220z, kf1=\E[224z,
+ kcuu1=\E[A, kdch1=^?, kend=\E[220z, 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, khome=\E[214z,
@@ -5947,7 +7864,7 @@ sun-12|Sun 12-line window,
sun-1|Sun 1-line window for sysline,
eslok, hs,
cols#80, lines#1,
- dsl=^L, fsl=\E[K, tsl=^M, use=sun,
+ dsl=^L, fsl=\E[K, tsl=\r, use=sun,
sun-e|sun-nic|sune|Sun Microsystems Workstation without insert character,
ich1@, rmir@, smir@, use=sun,
sun-c|sun-cmd|Sun Microsystems Workstation console with scrollable history,
@@ -5968,7 +7885,7 @@ sun-type4|Sun Workstation console with type 4 keyboard,
# underline and standout.
#
# Since the documentation and terminfo do not agree, see also current code at
-# http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/io/tem_safe.c
+# https://web.archive.org/web/20091231042744/http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/io/tem_safe.c
#
# That (actually a different driver which "supports" sun-color) also supports
# these features:
@@ -5983,8 +7900,10 @@ sun-color|Sun Microsystems Workstation console with color support (IA systems),
bold=\E[1m, cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
cuu=\E[%p1%dA, home=\E[H, op=\E[0m, rs2=\E[s,
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,
+ 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%?%p6%t;1%;%?%p1%p3%|%t;7%;m, sgr0=\E[m,
smso=\E[7m, use=sun,
@@ -6004,7 +7923,7 @@ wsiris|iris40|iris emulating a 40 line visual 50 (approximately),
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,
+ ind=\n, is2=\E7B0\E7F7\E7C2\E7R3, kcub1=\ED, kcud1=\EB,
kcuf1=\EC, kcuu1=\EA, kf0=\E0, kf1=\E1, kf2=\E2, kf3=\E3,
kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8, kf9=\E9, ri=\EI,
rmso=\E0@, rmul=\E7R3\E0@, sgr0=\E7F7, smso=\E9P,
@@ -6059,15 +7978,15 @@ psterm-fast|NeWS psterm fast version (flaky ctrl chars),
next|NeXT console,
am, xt,
cols#80, it#8, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
- ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J,
+ ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n,
rmso=\E[4;1m, sgr0=\E[m, smso=\E[4;2m,
nextshell|NeXT Shell application,
am,
cols#80,
- bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, kbs=^H, kcub1=^H,
- kcud1=^J, nel=^M^J,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, ht=^I, kbs=^H, kcub1=^H,
+ kcud1=\n, nel=\r\n,
#### Sony NEWS workstations
#
@@ -6076,8 +7995,8 @@ nextshell|NeXT Shell application,
news-unk|SONY NEWS vt100 emulator common entry,
OTbs, OTpt, am, xenl,
cols#80,
- 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,
+ OTnl=\n, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J,
+ cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, 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/share/tabset/vt100, il=\E[%p1%dL, il1=\E[L,
@@ -6090,33 +8009,33 @@ news-unk|SONY NEWS vt100 emulator common entry,
sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
#
# (news-29: this had :TY=ascii: --esr)
-news-29,
+news-29|SONY NEWS vt100 emulator with 29 lines,
lines#29, use=news-unk,
# (news-29-euc: this had :TY=euc: --esr)
-news-29-euc,
+news-29-euc|SONY NEWS vt100 emulator with 29 lines and EUC,
use=news-29,
# (news-29-sjis: this had :TY=sjis: --esr)
-news-29-sjis,
+news-29-sjis|SONY NEWS vt100 emulator with 29 lines and SJIS,
use=news-29,
#
# (news-33: this had :TY=ascii: --esr)
-news-33,
+news-33|SONY NEWS vt100 with 33 lines,
lines#33, use=news-unk,
# (news-33-euc: this had :TY=euc: --esr)
-news-33-euc,
+news-33-euc|SONY NEWS vt100 with 33 lines and EUC,
use=news-33,
# (news-33-sjis: this had :TY=sjis: --esr)
-news-33-sjis,
+news-33-sjis|SONY NEWS vt100 with 33 lines and SJIS,
use=news-33,
#
# (news-42: this had :TY=ascii: --esr)
-news-42,
+news-42|SONY NEWS vt100 with 42 lines,
lines#42, use=news-unk,
# (news-42-euc: this had :TY=euc: --esr)
-news-42-euc,
+news-42-euc|SONY NEWS vt100 with 42 lines and EUC,
use=news-42,
# (news-42-sjis: this had :TY=sjis: --esr)
-news-42-sjis,
+news-42-sjis|SONY NEWS vt100 with 42 lines and SJIS,
use=news-42,
#
# NEWS-OS old termcap entry
@@ -6125,8 +8044,8 @@ news-42-sjis,
news-old-unk|SONY NEWS vt100 emulator common entry,
OTbs, OTpt, am, xenl,
cols#80, vt#3,
- 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,
+ OTnl=\n, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J,
+ cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, 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/share/tabset/vt100, kbs=^H,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
@@ -6139,7 +8058,8 @@ news-old-unk|SONY NEWS vt100 emulator common entry,
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,
+ is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40
+ r\E8,
use=news-old-unk,
#
# (nwp512-a: this had :TY=ascii: and the alias vt100-bm --esr)
@@ -6152,14 +8072,16 @@ nwp512-a|nwp514-a|news-a|news42|news40-a|sony vt100 emulator 42 line,
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,
+ is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40
+ r\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,
+ is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31
+ r\E8,
use=news-old-unk,
#
# (nwp513-a: this had :TY=ascii: and :DE=^H:, which I interpret as <OTbs>; --esr)
@@ -6167,27 +8089,31 @@ nwp513|nwp518|nwe501|newscbm|news31|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,
+ is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;33
+ r\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|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,
+ is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31
+ r\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,
+ is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;28
+ r\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,
+ is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;29
+ r\E8,
use=news-old-unk,
#
# (news511: this had :TY=sjis: --esr)
@@ -6230,9 +8156,9 @@ dtterm|CDE desktop terminal,
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,
+ clear=\E[H\E[J, cnorm=\E[?25h, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, 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[2m, dl=\E[%p1%dM,
dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
@@ -6249,7 +8175,8 @@ dtterm|CDE desktop terminal,
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%;,
+ 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, use=ecma+color,
@@ -6275,17 +8202,17 @@ ansi-emx|ANSI.SYS color,
am, bce, eo, mir, msgr, xon,
colors#8, cols#80, it#8, lines#25, pairs#64,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[1;33;44m\E[H\E[J, cnorm=\E[?25h, cr=^M, cub1=^H,
- cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
- dch=\E[%p1%dp, ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l,
- home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, ind=^J,
- kb2=\E[G, kbs=^H, kf0=\0D, kll=\0O, kspd=^Z, nel=^M^J,
- rev=\E[5;37;41m, rmir=\E[4l, rmpch=\E[10m,
- rmso=\E[0;44m\E[1;33m, rmul=\E[0;44m\E[1;33m, rs1=\Ec,
- setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- sgr0=\E[0m\E[1;33;44m, smir=\E[4h, smpch=\E[11m,
- smso=\E[0;31;47m, smul=\E[1;31;44m, tbc=\E[3g, u8=\E[?6c,
- u9=\E[c, use=emx-base,
+ clear=\E[1;33;44m\E[H\E[J, cnorm=\E[?25h, cr=\r, cub1=^H,
+ cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
+ dch=\E[%p1%dp, ed=\E[J, el=\E[K,
+ flash=\E[?5h$<100/>\E[?5l, home=\E[H, ht=^I, hts=\EH,
+ ich=\E[%p1%d@, ich1=\E[@, ind=\n, kb2=\E[G, kbs=^H, kf0=\0D,
+ kll=\0O, kspd=^Z, nel=\r\n, rev=\E[5;37;41m, rmir=\E[4l,
+ rmpch=\E[10m, rmso=\E[0;44m\E[1;33m,
+ rmul=\E[0;44m\E[1;33m, rs1=\Ec, setab=\E[4%p1%dm,
+ setaf=\E[3%p1%dm, sgr0=\E[0m\E[1;33;44m, smir=\E[4h,
+ smpch=\E[11m, smso=\E[0;31;47m, smul=\E[1;31;44m,
+ tbc=\E[3g, u8=\E[?6c, u9=\E[c, use=emx-base,
# nice colors for Emacs (white on blue, mode line white on cyan)
ansi-color-2-emx|ANSI.SYS color 2,
clear=\E[0;37;44m\E[H\E[J, rev=\E[1;37;46m,
@@ -6306,7 +8233,7 @@ mono-emx|stupid monochrome ansi terminal with only one kind of emphasis,
ht=^I, kb2=\E[G, kbs=^H, kcub1=\0K, kcud1=\0P, kcuf1=\0M,
kcuu1=\0H, kf0=\0D, kf1=\0;, kf2=\0<, kf3=\0=, kf4=\0>,
kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B, kf9=\0C, khome=\0G,
- kich1=\0R, kll=\0O, knp=\0Q, kpp=\0I, nel=^M^J, rev=\E[7m,
+ kich1=\0R, kll=\0O, knp=\0Q, kpp=\0I, nel=\r\n, rev=\E[7m,
sgr0=\E[0m,
#### Cygwin
@@ -6314,7 +8241,7 @@ mono-emx|stupid monochrome ansi terminal with only one kind of emphasis,
# Use this for cygwin32 (tested with beta 19.1)
# underline is colored bright magenta
# shifted kf1-kf12 are kf11-kf22
-cygwinB19|ansi emulation for cygwin32,
+cygwinB19|ANSI emulation for cygwin32,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~,
kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
@@ -6361,7 +8288,7 @@ cygwinB19|ansi emulation for cygwin32,
# kPRV [shifted prev key] not implemented
# khome [home key] really is \E[1~ NOT \E[H
# tbc [clear tab stops] not implemented
-# xenl [newline ignnored after 80 cols] messes up last line? Ehud Karni
+# xenl [newline ignored after 80 cols] messes up last line? Ehud Karni
# smpch [Start PC charset] is \E[11m, same as smacs
# rmpch [End PC charset] is \E[10m, same as rmacs
# mir [move in insert mode] fails in tack?
@@ -6375,17 +8302,19 @@ cygwinB19|ansi emulation for cygwin32,
# 2005/11/12 -TD
# Remove cbt since it does not work in current cygwin
# Add 'mir' and 'in' flags based on tack
-cygwin|ansi emulation for Cygwin,
+cygwin|ANSI emulation for Cygwin,
am, hs, mir, msgr, xon,
colors#8, it#8, pairs#64,
- acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
- bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M, cub=\E[%p1%dD,
+ acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
+ \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
+ \301w\302x\263y\363z\362{\343|\330}\234~\376,
+ bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=\r, 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, ed=\E[J, el=\E[K, el1=\E[1K, fsl=^G, home=\E[H,
hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, kb2=\E[G,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m, kb2=\E[G,
kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~,
kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
@@ -6393,11 +8322,12 @@ cygwin|ansi emulation for Cygwin,
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, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM,
+ nel=\r\n, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM,
rmacs=\E[10m, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
rmpch=\E[10m, rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]R,
sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
+ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7
+ %t;8%;%?%p9%t;11%;m,
sgr0=\E[0;10m, smacs=\E[11m, smcup=\E7\E[?47h,
smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m, tsl=\E];,
vpa=\E[%i%p1%dd, use=vt102+enq,
@@ -6411,16 +8341,18 @@ cygwin|ansi emulation for Cygwin,
cygwinDBG|Debug Version for Cygwin,
am, eo, mir, msgr, xon,
colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
- acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+ acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
+ \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
+ \301w\302x\263y\363z\362{\343|\330}\234~\376,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
- cnorm=\E[?25h, cr=^M, cub=\E[%p1%dD, cub1=\E[D,
+ cnorm=\E[?25h, cr=\r, 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,
dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
- flash=\E[?5h\E[?5l$<200/>, home=\E[H, hpa=\E[%i%p1%dG,
+ flash=\E[?5h$<200/>\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, invis=\E[8m, kNXT=\E[6$, kPRV=\E[5$,
+ il1=\E[L, ind=\n, invis=\E[8m, kNXT=\E[6$, kPRV=\E[5$,
kb2=\E[G, kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\E[[A,
kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
@@ -6428,11 +8360,12 @@ cygwinDBG|Debug Version for Cygwin,
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, op=\E[39;49m,
+ knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=\r\n, op=\E[39;49m,
rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m, rmir=\E[4l,
rmso=\E[m, rmul=\E[m, rs1=\Ec\E]R, sc=\E7,
setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m,
+ 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;12%;m,
sgr0=\E[0;10m, smacs=\E[11m, smir=\E[4h, smso=\E[7m,
smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt102+enq,
@@ -6556,53 +8489,56 @@ cygwinDBG|Debug Version for Cygwin,
# Alt-X \E[104~
# Alt-Y \E[105~
# Alt-Z \E[106~
-djgpp|ansi emulation for DJGPP alpha,
+djgpp|ANSI emulation for DJGPP alpha,
am, bce, msgr, xhp, xon, xt,
colors#8, it#8, pairs#64,
- acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+ acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
+ \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
+ \301w\302x\263y\363z\362{\343|\330}\234~\376,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[1v,
- clear=\E[H\E[J, cnorm=\E[v, cr=^M, cub=\E[%p1%dD, cub1=^H,
+ clear=\E[H\E[J, cnorm=\E[v, cr=\r, cub=\E[%p1%dD, cub1=^H,
cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
cvvis=\E[2v, 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, ich=\E[%p1%d@,
- ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
- indn=\E[%p1%dS, invis=\E[8m, kbs=^H, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~,
- kend=\E[4~, kf1=\E[[A, kf10=\E[21~, kf11=\E[23~,
- kf12=\E[24~, 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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, nel=^M^J,
- op=\E[37;40m, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, rmso=\E[m,
+ ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, invis=\E[8m,
+ kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~,
+ kf11=\E[23~, kf12=\E[24~, 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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, nel=\r\n,
+ op=\E[37;40m, rev=\E[7m, ri=\E[T, rmso=\E[m,
setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%e;25%;%?%p6%t;1%;%?%p7%t;8%;m,
+ sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%e;25%;%?
+ %p6%t;1%;%?%p7%t;8%;m,
sgr0=\E[m, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd,
+ use=ecma+index,
djgpp203|Entry for DJGPP 2.03,
OTbs, am,
cols#80, it#8, lines#25,
- bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H,
- kcud1=^J, nel=^M^J,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H,
+ kcud1=\n, nel=\r\n,
djgpp204|Entry for DJGPP 2.04,
OTbs, am, AX,
colors#8, cols#80, it#8, lines#25, ncv#3, pairs#64,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[1v,
- clear=\E[H\E[2J, cnorm=\E[v, cr=^M, cub=\E[%p1%dD,
+ clear=\E[H\E[2J, cnorm=\E[v, cr=\r, 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[2v, dch=\E[%p1%dP, dch1=\E[P,
dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
- il1=\E[L, ind=\E[S, indn=\E[%p1%dS, invis=\E[8m, kbs=^H,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\E[3~, kf0=\E[21~, kf1=\E[[A, kf10=\E[21~, 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~, kich1=\E[2~,
- kll=\E[4~, knp=\E[6~, kpp=\E[5~, nel=^M^J, rev=\E[7m,
- ri=\E[T, rin=\E[%p1%dT, rmso=\E[m, setab=\E[4%p1%dm,
- setaf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+ il1=\E[L, ind=\E[S, invis=\E[8m, kbs=^H, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~,
+ kf0=\E[21~, kf1=\E[[A, kf10=\E[21~, 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~, kich1=\E[2~, kll=\E[4~, knp=\E[6~,
+ kpp=\E[5~, nel=\r\n, rev=\E[7m, ri=\E[T, rmso=\E[m,
+ setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[m,
+ smso=\E[7m, smul=\E[4m, use=ecma+index,
#### U/Win
@@ -6612,17 +8548,19 @@ djgpp204|Entry for DJGPP 2.04,
uwin|U/Win 3.2 console,
am, eo, in, msgr, xenl, xon,
colors#8, it#8, ncv#58, pairs#64,
- 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,
+ 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, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, cub1=^H, cud1=^J,
+ clear=\E[H\E[J, cnorm=\E[?25h, cr=\r, cub1=^H, cud1=\n,
cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX,
ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, ht=^I, hts=\EH,
ich=\E[%p1%d@, ich1=\E[@, kbs=^H, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, kend=\E[Y, kf1=\EOP,
+ kcuf1=\E[C, kcuu1=\E[A, kdch1=^?, kend=\E[Y, kf1=\EOP,
kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf2=\EOQ, kf3=\EOR,
kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX,
- khome=\E[H, kich1=\E[@, nel=^M^J, op=\E[39;49m, rc=\E8,
+ khome=\E[H, kich1=\E[@, nel=\r\n, op=\E[39;49m, rc=\E8,
rev=\E[7m, rmacs=\E[10m, rmir=\E[4l, rmpch=\E[10m,
rmso=\E[27m, rmul=\E[m, rs1=\Ec\E]R, sc=\E7,
setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0;10m,
@@ -6664,7 +8602,7 @@ uwin|U/Win 3.2 console,
ansi-nt|psx_ansi|Microsoft Windows NT console POSIX ANSI mode,
am, bw, msgr,
cols#80, it#8, lines#25,
- bel=^G, clear=\E[2J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+ bel=^G, clear=\E[2J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
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,
@@ -6678,7 +8616,7 @@ 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,
+ clear=\E[;H\E[2J$<50/>, cr=\r, cub1=^H, cud1=\n,
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,
@@ -6692,44 +8630,56 @@ pcmw|PC running Microsoft Works,
# From: Federico Bianchi
# This is the entry for the OpenNT terminal.
-# The ntconsole name is for backward compatability.
+# The ntconsole name is for backward compatibility.
# This is for OpenNT 2.0 and later.
# Later OpenNT was renamed to Interix.
#
# Presently it is distributed by Microsoft as Services For Unix (SFU).
-# The 3.5 beta contains ncurses 4.2 (that is header files and executables,
-# the documentation dates from 1.9.9e) -TD
+# The 3.5 beta contained ncurses 4.2 (that is header files and executables,
+# the documentation dated from 1.9.9e) -TD
+#
+# For a US keyboard, with 12 function-kecbt=\E[Z, ys,
+# kf1-kf12 are unmodifiedcbt=\E[Z, cbt=\E[Z,
+# kf13-kf24 use the shift-key
+# kf25-kf36 use the left alt-key
+# kf37-kf38 use the control-key
+# kf49-kf60 use the shift- and control-keys
+# The shifted cursor keys send the sequences originally used for kf61-kf64:
+# down=\EF+ (kf61)
+# up=\EF- (kf62)
+# left=\EF^ (unassigned)
+# right=\EF$ (kf64)
interix|opennt|opennt-25|ntconsole|ntconsole-25|OpenNT-term compatible with color,
- am, bw, msgr,
- colors#8, cols#80, lines#25, ncv#3, pairs#64,
- acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
- bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[2J, cub=\E[%p1%dD,
- cub1=\E[D, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC,
+ am, bce, msgr,
+ cols#80, it#8, lines#25,
+ acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
+ \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
+ \301w\302x\263y\363z\362{\343|\330}\234~\376,
+ bel=^G, bold=\E[1m, clear=\E[2J, cr=\r, cub=\E[%p1%dD,
+ cub1=\E[D, cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC,
cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
- indn=\E[%p1%dS, kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[M, kend=\E[U, kf0=\EFA,
- kf1=\EF1, kf10=\EFA, kf11=\EFB, kf12=\EFC, kf13=\EFD,
- kf14=\EFE, kf15=\EFF, kf16=\EFG, kf17=\EFH, kf18=\EFI,
- kf19=\EFJ, kf2=\EF2, kf20=\EFK, kf21=\EFL, kf22=\EFM,
- kf23=\EFN, kf24=\EFO, kf25=\EFP, kf26=\EFQ, kf27=\EFR,
- kf28=\EFS, kf29=\EFT, kf3=\EF3, kf30=\EFU, kf31=\EFV,
- kf32=\EFW, kf33=\EFX, kf34=\EFY, kf35=\EFZ, kf36=\EFa,
- kf37=\EFb, kf38=\EFc, kf39=\EFd, kf4=\EF4, kf40=\EFe,
- kf41=\EFf, kf42=\EFg, kf43=\EFh, kf44=\EFi, kf45=\EFj,
- kf46=\EFk, kf47=\EFm, kf48=\EFn, kf49=\EFo, kf5=\EF5,
- kf50=\EFp, kf51=\EFq, kf52=\EFr, kf53=\EFs, kf54=\EFt,
- kf55=\EFu, kf56=\EFv, kf57=\EFw, kf58=\EFx, kf59=\EFy,
- kf6=\EF6, kf60=\EFz, kf61=\EF+, kf62=\EF-,
- kf63=\EF\014 kf64=\EF$, kf7=\EF7, kf8=\EF8, kf9=\EF9,
- kich1=\E[L, kll=\E[U, knp=\E[T, kpp=\E[S, ll=\E[U, nel=^M^J,
- op=\E[m, rc=\E[u, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT,
- rmcup=\E[2b\E[u\r\E[K, rmso=\E[m, rmul=\E[m, rs1=\Ec,
- sc=\E[s, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- setb=\E[%p1%{40}%+%dm, setf=\E[%p1%{30}%+%dm,
- sgr0=\E[0m, smcup=\E[s\E[1b, smso=\E[7m, smul=\E[4m,
+ kLFT=\EF\^, kRIT=\EF$, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?, kend=\E[U,
+ kf0=\EFA, kf1=\EF1, kf10=\EFA, kf11=\EFB, kf12=\EFC,
+ kf13=\EFD, kf14=\EFE, kf15=\EFF, kf16=\EFG, kf17=\EFH,
+ kf18=\EFI, kf19=\EFJ, kf2=\EF2, kf20=\EFK, kf21=\EFL,
+ kf22=\EFM, kf23=\EFN, kf24=\EFO, kf25=\EFP, kf26=\EFQ,
+ kf27=\EFR, kf28=\EFS, kf29=\EFT, kf3=\EF3, kf30=\EFU,
+ kf31=\EFV, kf32=\EFW, kf33=\EFX, kf34=\EFY, kf35=\EFZ,
+ kf36=\EFa, kf37=\EFb, kf38=\EFc, kf39=\EFd, kf4=\EF4,
+ kf40=\EFe, kf41=\EFf, kf42=\EFg, kf43=\EFh, kf44=\EFi,
+ kf45=\EFj, kf46=\EFk, kf47=\EFm, kf48=\EFn, kf49=\EFo,
+ kf5=\EF5, kf50=\EFp, kf51=\EFq, kf52=\EFr, kf53=\EFs,
+ kf54=\EFt, kf55=\EFu, kf56=\EFv, kf57=\EFw, kf58=\EFx,
+ kf59=\EFy, kf6=\EF6, kf60=\EFz, kf7=\EF7, kf8=\EF8, kf9=\EF9,
+ khome=\E[H, kich1=\E[L, kind=\EF+, kll=\E[U, knp=\E[T,
+ kpp=\E[S, kri=\EF-, ll=\E[U, nel=\r\n, op=\E[m, rc=\E[u,
+ rev=\E[7m, ri=\E[T, rmcup=\E[2b\E[u\r\E[K, rmso=\E[m,
+ rmul=\E[m, rs1=\Ec, sc=\E[s, sgr0=\E[0m, smcup=\E[s\E[1b,
+ smso=\E[7m, smul=\E[4m, use=ecma+index, use=klone+color,
opennt-35|ntconsole-35|OpenNT-term35 compatible with color,
lines#35, use=opennt,
@@ -6806,10 +8756,10 @@ opennt-100-nti|ntconsole-100-nti|OpenNT-term100-nti compatible with color,
# :sr: was given as a boolean-- esr)
altos2|alt2|altos-2|altos II,
cols#80, it#8, lines#24, xmc#0,
- clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=\E[1B, cuf1=\E[1C,
+ clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\E[1B, cuf1=\E[1C,
cup=\E[%i%p1%d;%p2%dH, cuu1=\E[1A, dch1=\E[P, dl1=\E[M,
ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@,
- if=/usr/share/tabset/vt100, il1=\E[L, ind=^J,
+ if=/usr/share/tabset/vt100, il1=\E[L, ind=\n,
is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kDL=^Am\r,
kEOL=^An\r, kbs=^H, kcbt=^AK\r, kclr=^AL\r, kcub1=\E[D,
kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^AM\r, kel=^AN\r,
@@ -6818,7 +8768,7 @@ altos2|alt2|altos-2|altos II,
kf38=^Af\r, kf39=^Ag\r, kf4=^AC\r, kf40=^Ah\r, kf41=^Ai\r,
kf42=^Aj\r, kf43=^Ak\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
kf8=^AG\r, kf9=^AH\r, khome=\E[f, kil1=^AJ\r, kind=^AO\r,
- nel=^M^J, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+ nel=\r\n, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
smam=\E[?7h, smso=\E[7m, smul=\E[4m,
# (altos3: had extension capabilities
# :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
@@ -6846,19 +8796,19 @@ altos7|alt7|altos VII,
am, mir,
cols#80, lines#24, xmc#0,
acsc=j5k3l2m1n8q\:t4u9v=w0x6, blink=\EG2, bold=\EGt,
- clear=\E+^^, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ clear=\E+^^, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
dim=\EGp, dl1=\ER, ed=\EY, el=\ET, home=^^, ht=^I, il1=\EE,
- ind=^J, invis=\EG1,
+ ind=\n, invis=\EG1,
is2=\E`\:\Ee(\EO\Ee6\Ec41\E~4\Ec21\Eu\E~2, kDL=^Am\r,
kEOL=^An\r, kbs=^H, kcbt=^AK\r, kclr=^AL\r, kcub1=^H,
- kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=^AM\r, kel=^AN\r,
+ kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=^AM\r, kel=^AN\r,
kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf32=^A`\r,
kf33=^Aa\r, kf34=^Ab\r, kf35=^Ac\r, kf36=^Ad\r, kf37=^Ae\r,
kf38=^Af\r, kf39=^Ag\r, kf4=^AC\r, kf40=^Ah\r, kf41=^Ai\r,
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,
+ knp=\EK, kpp=\EJ, mc4=\EJ, mc5=\Ed#, nel=\r\n, ri=\Ej,
rmir=\Er, smir=\Eq, use=adm+sgr,
altos7pc|alt7pc|altos PC VII,
kend=\ET, use=altos7,
@@ -6882,10 +8832,10 @@ altos7pc|alt7pc|altos PC VII,
hpgeneric|hp|hewlett-packard generic terminal,
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,
+ bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\E&a%p2%dc%p1%dY$<6>, cuu1=\EA, dch1=\EP, dl1=\EM,
ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL,
- ind=^J, kbs=^H, kcbt=\Ei, rmir=\ER, rmso=\E&d@, rmul=\E&d@,
+ ind=\n, kbs=^H, kcbt=\Ei, rmir=\ER, rmso=\E&d@, rmul=\E&d@,
sgr0=\E&d@, smir=\EQ, smso=\E&dJ, smul=\E&dD, tbc=\E3,
vpa=\E&a%p1%dY,
@@ -6922,7 +8872,8 @@ hp262x|HP 262x terminals,
kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh,
kich1=\EQ, kil1=\EL, kind=\ES, knp=\EU, kpp=\EV, kri=\ET,
krmir=\ER, rev=\E&dB, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@,
- sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|%;%?%p4%t%{65}%|%;%c,
+ sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|
+ %;%?%p4%t%{65}%|%;%c,
sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB, smul=\E&dD,
# Note: no <home> on HPs since that homes to top of memory, not screen.
@@ -6992,15 +8943,15 @@ hp2621-nt|hp 2621 w/no tabs,
# NOT set up by the initialization strings.
#
# Port Configuration
-# RecvPace=Xon/Xoff
-# XmitPace=Xon/Xoff
-# StripNulDel=Yes
+# RecvPace=Xon/Xoff
+# XmitPace=Xon/Xoff
+# StripNulDel=Yes
#
# Terminal Configuration
-# InhHndShk=Yes
-# InhDC2=Yes
-# XmitFnctn(A)=No
-# InhEolWrp=No
+# InhHndShk=Yes
+# InhDC2=Yes
+# XmitFnctn(A)=No
+# InhEolWrp=No
#
# Note: the 2624 DOES have a true <home>, believe it or not!
#
@@ -7018,8 +8969,7 @@ 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.
@@ -7060,11 +9010,13 @@ hp2626-s|hp 2626 using only 23 lines,
eslok, hs,
lines#23,
fsl=\E&d@\E&w7f2p1I\E&w4f1I,
- is1=\E&q3t0{0H \E&w0f115n1I \E&w0f1n2I \E&w2f1i0d0u22l0S \E&w2f2i0d23u23l0S \E&w7f2p1I \r,
+ is1=\E&q3t0{0H\s\E&w0f115n1I\s\E&w0f1n2I\s\E&w2f1i0d0u22l0S
+ \s\E&w2f2i0d23u23l0S\s\E&w7f2p1I\s\r,
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,
+ is1=\E&q3t0{0H\s\E&w0f118n1I\s\E&w0f1n2I\s\E&w2f1i0d0u23l0S
+ \s\E&w3f2I\s\E&w7f2p1I\s\r,
use=hp2626,
# Various entries useful for small windows on 2626.
hp2626-12|hewlett-packard 2626 12 lines,
@@ -7080,20 +9032,21 @@ hp2626-12-s|hewlett-packard 2626 11 lines plus status,
# hp2627 color tubes from University of Wisconsin
#
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@,
+ cr=\r, cud1=\n, ht=^I, ind=\n,
+ is2=\E&v0m1a0b0c1x1y1z1i0a0b1c1x1y1z0i0S\E&j@\r\E3
+ \r,
+ kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, rmul=\E&v0S\E&d@,
smul=\E&dD\E&v1S, use=hp2621-nl,
hp2627a|hp 2627 color terminal with no labels,
- cr=^M, cud1=^J, ht=^I, ind=^J,
+ cr=\r, cud1=\n, ht=^I, ind=\n,
is2=\E&v0m1a1b0c1i0a1b1c2i1a0b0c0i0S\E&j@\r\E3\r,
- kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rmso=\E&v0S,
+ kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, rmso=\E&v0S,
rmul=\E&v0S\E&d@, smso=\E&v2S, smul=\E&dD\E&v1S,
use=hp2621-nl,
hp2627c|hp 2627 color (cyan) terminal with no labels,
- cr=^M, cud1=^J, ht=^I, ind=^J,
+ cr=\r, cud1=\n, ht=^I, ind=\n,
is2=\E&v0m1a0b0c2i1a1b0c1i0a1b1c0i0S\E&j@\r\E3\r,
- kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, use=hp2627a,
+ kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, use=hp2627a,
# hp2640a doesn't have the Y cursor addressing feature, and C is
# memory relative instead of screen relative, as we need.
@@ -7108,11 +9061,11 @@ hp2640b|hp2644a|hp 264x series,
hp2641a|hp2645a|hp2647a|HP 264?A series BRL entry,
am, da, db, mir, xhp,
cols#80, lines#24,
- bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\E&a%p2%2dc%p1%2dY, cuu1=\EA, dch1=\EP, dl1=\EM,
ed=\EJ, el=\EK, hpa=\E&a%p1%2dC, ht=^I,
- if=/usr/share/tabset/std, il1=\EL, ind=^J,
- is2=\EE$<500/>, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J,
+ if=/usr/share/tabset/std, il1=\EL, ind=\n,
+ is2=\EE$<500/>, kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n,
rmir=\ER, rmso=\E&d@, smir=\EQ, smso=\E&dB,
vpa=\E&a%p1%2dY,
@@ -7127,7 +9080,8 @@ hp2645|hp45|HP 2645 series,
ked=\EJ, kel=\EK, khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL,
kind=\ES, knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, rev=\E&dB,
rmkx=\E&s0A,
- sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|%;%?%p4%t%{65}%|%;%?%p5%t%{72}%|%;%?%p6%t%{66}%|%;%c,
+ sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|
+ %;%?%p4%t%{65}%|%;%?%p5%t%{72}%|%;%?%p6%t%{66}%|%;%c,
sgr0=\E&d@, smkx=\E&s1A, smul=\E&dD, use=hpgeneric,
# You should use this terminal at 4800 baud or less.
hp2648|hp2648a|HP 2648a graphics terminal,
@@ -7147,9 +9101,13 @@ hp2382a|hp2382|hewlett packard 2382a,
da, db,
lh#1, lm#48,
acsc@,
- pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t %;%p2%s,
+ pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t\s%;%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,
+ 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,
hp2621-a|hp2621a-a|hp2621 with fn as arrows,
@@ -7167,16 +9125,20 @@ newhpkeyboard|generic entry for HP extended keyboard,
newhp|generic entry for new hewlett packard terminals,
am, bw, mir, xhp, xon,
cols#80, lines#24, pb#4800,
- acsc=2[3@4>5I9(\:'JSKWLQMAO#P$Q;R!S"T1U2V4W3X\:Y+Z*dHjGkTlRmFn/q\,t5u6v8w7x.,
- bel=^G, blink=\E&dA, bold=\E&dF, cbt=\Ei, cr=^M, cub1=^H,
- cud1=^J, cuf1=\EC, cuu1=\EA, dch1=\EP$<2>, dim=\E&dH,
- dl1=\EM, ed=\EJ, el=\EK, ht=\011$<2>, hts=\E1, il1=\EL, ind=^J,
- invis=\E&dS, ip=$<2>, is1=\E&jB$<8>, nel=^M^J,
+ acsc=2[3@4>5I9(\:'JSKWLQMAO#P$Q;R!S"T1U2V4W3X\:Y+Z*dHjGkTlRm
+ Fn/q\,t5u6v8w7x.,
+ bel=^G, blink=\E&dA, bold=\E&dF, cbt=\Ei, cr=\r, cub1=^H,
+ cud1=\n, cuf1=\EC, cuu1=\EA, dch1=\EP$<2>, dim=\E&dH,
+ dl1=\EM, ed=\EJ, el=\EK, ht=\011$<2>, hts=\E1, il1=\EL, ind=\n,
+ invis=\E&dS, ip=$<2>, is1=\E&jB$<8>, nel=\r\n,
pfkey=\E&f0a%p1%dk0d%p2%l%dL%p2%s,
pfloc=\E&f1a%p1%dk0d%p2%l%dL%p2%s,
pfx=\E&f2a%p1%dk0d%p2%l%dL%p2%s, rev=\E&dB, ri=\ET,
rmacs=^O, rmir=\ER, rmso=\E&d@, rmul=\E&d@, rs1=\Eg,
- sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}%+%e%{64}%;%;%c%?%p9%t\016%e\017%;,
+ sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga
+ %+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+
+ %Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}
+ %+%e%{64}%;%;%c%?%p9%t\016%e\017%;,
sgr0=\E&d@\017, smacs=^N, smir=\EQ, smso=\E&dJ, smul=\E&dD,
tbc=\E3, use=newhpkeyboard,
@@ -7198,7 +9160,8 @@ scrhp|screen relative addressing for new HP ttys,
hp+labels|"standard" label info for new HP ttys,
lh#2, lw#8, nlab#8,
lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8,
- pln=\E&f2a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t %;%p2%s,
+ pln=\E&f2a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t\s%;%p2
+ %s,
rmln=\E&j@, smln=\E&jB,
hp+printer|"standard" printer info for HP ttys,
@@ -7213,7 +9176,8 @@ hp2621b|hp 2621b with old style keyboard,
lh#1, lm#48, lw#8, nlab#8,
kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh,
kind=\ET, kll=\EF, kri=\ES,
- pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d3L%?%ga%!%t%{32}%c%;%p2%s\E%{111}%p1%+%c\r,
+ pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d3L%?%ga%!%t%{32}%c
+ %;%p2%s\E%{111}%p1%+%c\r,
smln=\E&jB, use=hp2621,
hp2621b-p|hp 2621b with printer,
@@ -7263,8 +9227,12 @@ hp2624b-10p-p|hewlett packard 2624 B w/ extra memory & printer,
hp+color|hp with colors,
ccc,
colors#16, ncv#17, pairs#7,
- initp=\E&v%?%p2%{1000}%=%t1%e.%p2%d%;a%?%p3%{1000}%=%t1%e.%p3%d%;b%?%p4%{1000}%=%t1%e.%p4%d%;c%?%p5%{1000}%=%t1%e.%p5%d%;x%?%p6%{1000}%=%t1%e.%p6%d%;y%?%p7%{1000}%=%t1%e.%p7%d%;z%p1%dI,
- oc=\E&v0m1a1b1c0I\E&v1a1I\E&v1b2I\E&v1a1b3I\E&v1c4I\E&v1a1c5I\E&v1b1c6I\E&v1x1y7I,
+ initp=\E&v%?%p2%{1000}%=%t1%e.%p2%d%;a%?%p3%{1000}%=%t1%e.
+ %p3%d%;b%?%p4%{1000}%=%t1%e.%p4%d%;c%?%p5%{1000}%=%t1
+ %e.%p5%d%;x%?%p6%{1000}%=%t1%e.%p6%d%;y%?%p7%{1000}%=
+ %t1%e.%p7%d%;z%p1%dI,
+ oc=\E&v0m1a1b1c0I\E&v1a1I\E&v1b2I\E&v1a1b3I\E&v1c4I\E&v1a1c5
+ I\E&v1b1c6I\E&v1x1y7I,
op=\E&v0S, scp=\E&v%p1%dS,
# <is2> sets the screen to be 80 columns wide
@@ -7278,21 +9246,22 @@ hp2397a|hp2397|hewlett packard 2397A color terminal,
# PC Character Set YES
# Twenty-Five Line Mode YES
# XON/XOFF @128 or 64 (sc)
-# Keycode Mode NO or YES (sc)
+# Keycode Mode NO or YES (sc)
# Backspace Key BS or BS/DEL
#
-# <is2> sets pcterm; autowrap; 25 lines; pc char set; prog DEL key;
+# <is2> sets pcterm; autowrap; 25 lines; pc char set; prog DEL key;
# \E\\? does not turn off keycode mode
# <smsc> sets alternate start/stop; keycode on
hpansi|hp700|hewlett packard 700/44 in HP-PCterm mode,
am, eo, xenl, xon,
cols#80, lines#25,
- acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263,
+ acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
+ \263,
bel=^G, cbt=\E[Z, civis=\E[?25l, clear=\E[2J\E[H,
- cnorm=\E[?25h, cr=^M, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
+ cnorm=\E[?25h, cr=\r, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L,
- ind=^J,
+ ind=\n,
is2=\E[44"p\E[?7h\E[>10h\E[>12h\EP1;1|3/7F\E\\,
kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
kcuu1=\E[A, kend=\E[4~, kf1=\E[17~, kf10=\E[28~,
@@ -7316,9 +9285,9 @@ hp2392|239x series,
hpsub|hp terminals -- capability subset,
am, da, db, mir, xhp, xon,
lines#24,
- bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC,
+ bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
cuu1=\EA, dch1=\EP, dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC,
- ht=^I, if=/usr/share/tabset/stdcrt, il1=\EL, ind=^J,
+ ht=^I, if=/usr/share/tabset/stdcrt, il1=\EL, ind=\n,
is2=\E&s1A\E<\E&k0\\, kbs=^H, kcub1=\ED, kcud1=\EB,
kcuf1=\EC, kcuu1=\EA, khome=\Eh, rmkx=\E&s0A, rmso=\E&d@,
sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB,
@@ -7328,24 +9297,24 @@ hpsub|hp terminals -- capability subset,
# but has no padding added, so may allow runover in some terminals at high
# baud rates. Will not work for hp2640a or hp2640b terminals, hp98x6 and
# hp98x5 terminal emulators or hp98x6 consoles.
-# Adds xy-cursor addressing, vertical cursor addressing, home,
+# Adds xy-cursor addressing, vertical cursor addressing, home,
# last line, and underline capabilities.
#
# (hpex: removed memory-lock capabilities ":ml=\El:mu=\Em:",
# moved <rmir> here from hpsub -- esr)
-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,
+hpex|hp extended capabilities,
+ cr=\r, cud1=\n, cup=\E&a%p1%dy%p2%dC, ht=^I, ind=\n, kbs=^H,
+ kcub1=^H, kcud1=\n, nel=\r\n, rmir=\ER, rmul=\E&d@, smir=\EQ,
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,
am, da, db, mir, xhp,
cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, xmc#0,
- bel=^G, clear=\E&a0y0C\EJ, cr=^M, cub1=^H, cud1=\EB,
+ bel=^G, clear=\E&a0y0C\EJ, cr=\r, cub1=^H, cud1=\EB,
cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP,
dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1,
- il1=\EL, ind=^J, kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED,
+ il1=\EL, ind=\n, kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED,
kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
ked=\EJ, kel=\EK, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et,
kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, khts=\E1, kich1=\EQ,
@@ -7356,9 +9325,10 @@ hp2|hpex2|hewlett-packard extended capabilities newer version,
pfx=\E&f2a%p1%dk%p2%l%dL%p2%s,
pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rmir=\ER, rmkx=\E&s0A,
rmln=\E&j@, rmso=\E&d@, rmul=\E&d@,
- sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+%p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;,
- sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smln=\E&jB, smso=\E&dB,
- smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
+ sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+
+ %p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;,
+ sgr0=\E&d@\017, smir=\EQ, smkx=\E&s1A, smln=\E&jB,
+ smso=\E&dB, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
# HP 236 console
# From: <ddavis@ic.berkeley.edu>
@@ -7375,10 +9345,10 @@ hp236|hp236 internal terminal emulator,
hp300h|HP Catseye console,
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,
+ bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cr=\r, cub1=^H, cud1=\EB,
cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP,
dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I,
- if=/usr/share/tabset/stdcrt, il1=\EL, ind=^J, kbs=^H,
+ if=/usr/share/tabset/stdcrt, il1=\EL, ind=\n, kbs=^H,
kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh,
rmir=\ER, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@,
smir=\EQ, smkx=\E&s1A, smso=\E&dB, smul=\E&dD, tbc=\E3,
@@ -7390,7 +9360,7 @@ hp9837|hp98720|hp98721|HP 9000/300 workstations,
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,
dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1,
- il1=\EL, ind=^J, is2=\E&v0m1b0i&j@, kbs=^H, kcub1=\ED,
+ il1=\EL, ind=\n, is2=\E&v0m1b0i&j@, kbs=^H, kcub1=\ED,
kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
ked=\EJ, kel=\EK, khome=\Eh, kich1=\EQ, kil1=\EL, knp=\EU,
kpp=\EV, rmir=\ER, rmkx=\E&s0A, rmso=\E&v0S, rmul=\E&d@,
@@ -7412,10 +9382,10 @@ hp98550|hp98550a|HP 9000 Series 300 color console,
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,
+ clear=\EH\EJ, cnorm=\E*dQ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, dim=\E&dH,
dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1,
- if=/usr/share/tabset/std, il1=\EL, ind=^J, invis=\E&ds,
+ if=/usr/share/tabset/std, il1=\EL, ind=\n, invis=\E&ds,
kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, kf1=\Ep,
kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew,
@@ -7430,11 +9400,11 @@ hp98550|hp98550a|HP 9000 Series 300 color console,
hp700-wy|HP700/41 emulating wyse30,
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,
+ cbt=\EI, clear=^Z, cr=\r, cub1=^H, cud1=^V, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
dl1=\ER, ed=\EY, el=\ET$<10/>, home=^^, ht=^I, hts=\E1,
if=/usr/share/tabset/stdcrt, il1=\EE$<0.7*/>,
- is1=\E~"\EC\Er\E(\EG0\003\E`9\E`1, kbs=\177, kcbt=\EI,
+ is1=\E~"\EC\Er\E(\EG0\003\E`9\E`1, kbs=^?, kcbt=\EI,
kclr=^Z, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, ked=\EY,
kel=\ET, khome=^^, khts=\EI, kich1=\Eq, krmir=\Er, ll=^^^K,
ri=\Ej, rmir=\Er, rmso=\EG0$<10/>, rmul=\EG0$<10/>,
@@ -7444,7 +9414,7 @@ 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,
- bold=\E&dB, cbt=\Ei, clear=\E&a0y0C\EJ, cr=^M, cub1=^H,
+ bold=\E&dB, cbt=\Ei, clear=\E&a0y0C\EJ, cr=\r, cub1=^H,
cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA,
dch1=\EP, dim=\E&dH, dl1=\EM, el=\EK, hpa=\E&a%p1%dC, ht=^I,
hts=\E1, il1=\EL, kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED,
@@ -7460,11 +9430,11 @@ hp70092|hp70092a|hp70092A|HP 700/92,
bobcat|sbobcat|HP 9000 model 300 console,
am, da, db, mir, xhp,
cols#128, it#8, lines#47, xmc#0,
- cbt=\Ei, clear=\EH\EJ, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC,
+ cbt=\Ei, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
cup=\E&a%p1%dy%p2%dC$<6/>, cuu1=\EA, dch1=\EP,
dl1=\EM$<10*/>, ed=\EJ, el=\EK, hpa=\E&a%p1%dC$<6/>, ht=^I,
- il1=\EL$<10*/>, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB,
- kcuf1=\EC, kcuu1=\EA, khome=\Eh, nel=^M^J, rmir=\ER,
+ il1=\EL$<10*/>, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB,
+ kcuf1=\EC, kcuu1=\EA, khome=\Eh, nel=\r\n, rmir=\ER,
rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, smir=\EQ,
smkx=\E&s1A, smso=\E&dB, smul=\E&dD, vpa=\E&a%p1%dY$<6/>,
gator-t|HP 9000 model 237 emulating extra-tall AAA,
@@ -7472,12 +9442,12 @@ gator-t|HP 9000 model 237 emulating extra-tall AAA,
gator|HP 9000 model 237 emulating AAA,
bw, km, mir, ul,
cols#128, it#8, lines#47,
- bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n,
cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM,
dch=\E[%p1%dP$<4/>, dch1=\E[P, dl=\E[%p1%dM$<1*/>,
dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%i%p1%d`,
ht=^I, ich=\E[%p1%d@$<4/>, ich1=\E[@, il=\E[%p1%dL$<1*/>,
- il1=\E[L, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J,
+ il1=\E[L, kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n,
rep=%p1%c\E[%p2%db$<1*/>, rev=\E[7m, rmso=\E[m,
rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
gator-52|HP 9000 model 237 emulating VT52,
@@ -7496,10 +9466,10 @@ gator-52t|HP 9000 model 237 emulating extra-tall VT52,
# "keyboard locked" LED.
dku7003-dumb|Honeywell Bull DKU 7003 dumb mode,
cols#80, lines#25,
- clear=^]^_, cr=^M, cub1=^Y, cud1=^K, cuf1=^X,
+ clear=^]^_, cr=\r, cub1=^Y, cud1=^K, cuf1=^X,
cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, ed=^_, el=\E[K,
- flash=\E[2h\E[2l, home=^], ht=^I, ind=^J, kbs=^H, kcub1=^Y,
- kcud1=^K, kcuf1=^X, kcuu1=^Z, khome=^], nel=^M^J,
+ flash=\E[2h\E[2l, home=^], ht=^I, ind=\n, kbs=^H, kcub1=^Y,
+ kcud1=^K, kcuf1=^X, kcuu1=^Z, khome=^], nel=\r\n,
dku7003|Honeywell Bull DKU 7003 all features described,
msgr,
xmc#1,
@@ -7524,21 +9494,21 @@ dku7003|Honeywell Bull DKU 7003 all features described,
adm1a|adm1|lsi adm1a,
am,
cols#80, lines#24,
- bel=^G, clear=\E;$<1>, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=\E;$<1>, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, home=^^,
- ind=^J,
+ ind=\n,
adm2|lsi adm2,
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=\E;, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
- dl1=\ER, ed=\EY, el=\ET, home=^^, ich1=\EQ, il1=\EE, ind=^J,
- kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^,
+ dl1=\ER, ed=\EY, el=\ET, home=^^, ich1=\EQ, il1=\EE, ind=\n,
+ kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^,
# (adm3: removed obsolete ":ma=^K^P:" -- esr)
adm3|lsi adm3,
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, ind=^J,
+ bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, ind=\n,
# The following ADM-3A switch settings are assumed for normal operation:
# SPACE U/L_DISP CLR_SCRN 24_LINE
# CUR_CTL LC_EN AUTO_NL FDX
@@ -7554,16 +9524,16 @@ adm3|lsi adm3,
adm3a|lsi adm3a,
OTbs, am,
cols#80, lines#24,
- 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,
+ OTma=^K^P, OTnl=\n, bel=^G, clear=\032$<1/>, cr=\r, cub1=^H,
+ cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
+ cuu1=^K, home=^^, ind=\n, kcub1=^H, kcud1=\n, 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=^^,
+ bel=^G, cr=\r, cud1=\n, ed=\EY, el=\ET, kbs=^H, khome=^^,
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
@@ -7582,12 +9552,12 @@ adm+sgr|adm style highlight capabilities,
adm11|LSI ADM-11,
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,
+ OTnl=\n, bel=^G, blink=\EG2, clear=\E*, cr=\r, cub1=^H,
+ cud1=\n, 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,
+ kbs=^H, kcub1=^H, kcud1=\n, 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),
+ kf7=^AF\r, kf8=^AG\r, khome=^^, nel=\r\n, 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
@@ -7637,11 +9607,13 @@ adm11|LSI ADM-11,
adm12|lsi adm12,
OTbs, OTpt, am, mir,
OTug#1, cols#80, it#8, lines#24,
- bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, 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=\E0 \E1 \E1 \E1 \E1 \E1 \E1 \E1 \E1,
- kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r,
+ is2=\E0\s\s\s\s\s\s\s\s\E1\s\s\s\s\s\s\s\s\E1\s\s\s\s\s\s\s
+ \s\E1\s\s\s\s\s\s\s\s\E1\s\s\s\s\s\s\s\s\E1\s\s\s\s\s\s
+ \s\s\E1\s\s\s\s\s\s\s\s\E1\s\s\s\s\s\s\s\s\E1,
+ kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r,
kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r,
kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, rmir=\Er, smir=\Eq, tbc=\E0,
use=adm+sgr,
@@ -7649,28 +9621,29 @@ adm12|lsi adm12,
adm20|lear siegler adm20,
OTbs, am,
cols#80, it#8, lines#24,
- bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cuf1=^L,
+ bel=^G, cbt=\EI, clear=^Z, cr=\r, cub1=^H, cuf1=^L,
cup=\E=%i%p2%{31}%+%c%p1%{31}%+%c, cuu1=^K, dch1=\EW,
dl1=\ER, ed=\EY, el=\ET, home=^^, ht=^I, ich1=\EQ, il1=\EE,
kf1=^A, kf2=^B, kf3=^W, kf4=^D, kf5=^E, kf6=^X, kf7=^Z, rmso=\E(,
sgr0=\E(, smso=\E),
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,
+ bel=^G, cr=\r, cud1=\n, dch1=\EW, dl1=\ER$<30*>, ed=\EY,
+ el=\ET, ich1=\EQ, il1=\EE$<30*>, ind=\n, invis@, kbs=^H,
+ kcub1=^H, kcud1=\n, 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,
OTbs, am,
cols#80, lines#24,
- bel=^G, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, cbt=\EI, clear=\E+, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
dl1=\ER, ed=\Ey, el=\Et, home=^^, ht=\Ei, ich1=\EQ, il1=\EE,
- is2=\E%\014\014\014\016\003\0\003\002\003\002\0\0\0\0\0\0\0\0\0\0\0,
- kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r,
+ is2=\E%\014\014\014\016\003\0\003\002\003\002\0\0\0\0\0\0\0
+ \0\0\0\0,
+ kbs=^H, kcub1=^H, kcud1=\n, 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, khome=^^, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5,
lf6=F6, lf7=F7, rmso=\E(, sgr0=\E(, smso=\E),
@@ -7732,7 +9705,7 @@ adm22|lsi adm22,
# on off off Busy active on J5-19, CD disabled - Factory Set.
# on off on Busy active on J5-19, CD enabled
#
-# sw4 Used in conjuction with S4 for comm interface control - Fact 0
+# sw4 Used in conjunction with S4 for comm interface control - Fact 0
#
# sw5 Secondary Channel Control (Hardware implementation only) - Fact 0
#
@@ -7820,10 +9793,10 @@ adm22|lsi adm22,
adm31|lsi adm31 with sw6 set for underline mode,
OTbs, am, mir,
cols#80, lines#24,
- bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=\E*, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
- dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, ind=^J, is2=\Eu\E0,
- kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r,
+ dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, ind=\n, is2=\Eu\E0,
+ kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r,
kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r,
kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, rmir=\Er, rmso=\EG0,
rmul=\EG0, sgr0=\EG0, smir=\Eq, smso=\EG1, smul=\EG1,
@@ -7834,17 +9807,16 @@ adm36|LSI ADM36,
OTbs, OTpt,
OTkn#4,
if=/usr/share/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+4bsd,
# (adm42: removed obsolete ":ma=^K^P:" -- esr)
adm42|lsi adm42,
OTbs, am,
cols#80, lines#24,
- bel=^G, cbt=\EI, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, cbt=\EI, clear=\E;, cr=\r, cub1=^H, cud1=\n, 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@,
+ il1=\EE$<270>, ind=\n, invis@, ip=$<6*>, kcub1=^H, kcud1=\n,
+ kcuf1=^L, kcuu1=^K, khome=^^, pad=^?, rmir=\Er, rmul@,
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
@@ -7863,11 +9835,11 @@ adm42-ns|lsi adm-42 with no system line,
adm1178|1178|lsi adm1178,
am,
cols#80, lines#24, xmc#1,
- bel=^G, bold=\E(, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, bold=\E(, cbt=\EI, clear=\E+, cr=\r, cub1=^H, cud1=\n,
cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
cvvis=\EC\E3 \E3(, dch1=\EW, dl1=\ER, ed=\EY, el=\ET,
- home=^^, ht=^I, il1=\EE, ind=^J, ip=$<6*/>, kbs=^H, kcub1=^H,
- kcud1=^J, nel=^M^J, pad=\177, rev=\EG4, rmso=\EG0, rmul=\EG0,
+ home=^^, ht=^I, il1=\EE, ind=\n, ip=$<6*/>, kbs=^H, kcub1=^H,
+ kcud1=\n, nel=\r\n, pad=^?, rev=\EG4, rmso=\EG0, rmul=\EG0,
sgr0=\E), smso=\EG4, smul=\EG1,
#### Prime
@@ -7885,16 +9857,17 @@ adm1178|1178|lsi adm1178,
pt100|pt200|wren|fenix|prime pt100/pt200,
am, bw, mir, msgr,
cols#80, it#8, lines#24,
- cbt=\E[Z, clear=\E?, cr=^M, cub=\E[%p1%dD, cub1=^H,
+ cbt=\E[Z, clear=\E?, cr=\r, cub=\E[%p1%dD, cub1=^H,
cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E0%p1%{33}%+%c%p2%{33}%+%c, cuu=\E[%p1%dA,
cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl1=\E[M,
ed=\E[J\E[r, el=\E[K\E[t, flash=\E$$<200/>\E$P,
- home=\E$B, ht=^I, il1=\E[L\E[t, ind=^J, kbs=^H, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E$A, nel=^M^J,
+ home=\E$B, ht=^I, il1=\E[L\E[t, ind=\n, kbs=^H, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E$A, nel=\r\n,
rmcup=, rmir=\E[4l, rmkx=\E[>13l, rmso=\E[m, rmul=\E[m,
sgr0=\E[m,
- smcup=\E[>1l\E[>2l\E[>16l\E[4l\E[>9l\E[20l\E[>3l\E[>7h\E[>12l\E[1Q,
+ smcup=\E[>1l\E[>2l\E[>16l\E[4l\E[>9l\E[20l\E[>3l\E[>7h\E[>12
+ l\E[1Q,
smir=\E[4h, smkx=\E[>13h, smso=\E[2;7m, smul=\E[4m,
pt100w|pt200w|wrenw|fenixw|prime pt100/pt200 in 132-column mode,
cols#132,
@@ -7953,12 +9926,12 @@ qvt101|qvt108|qume qvt 101 and QVT 108,
qvt101+|qvt101p|qume qvt 101 PLUS product,
am, bw, hs, ul,
cols#80, lines#24, xmc#0,
- bel=^G, cbt=\EI, clear=^Z, cnorm=\E.4, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, cbt=\EI, clear=^Z, cnorm=\E.4, cr=\r, cub1=^H, cud1=\n,
cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
dch1=\EW, dl1=\ER, dsl=\Eg\Ef\r, ed=\EY, el=\ET,
- flash=\Eb$<200>\Ed, fsl=^M, home=^^, ht=^I, hts=\E1,
- ich1=\EQ, il1=\EE, ind=^J, invis@, kbs=^H, kcbt=\EI, kcub1=^H,
- kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
+ flash=\Eb$<200>\Ed, fsl=\r, home=^^, ht=^I, hts=\E1,
+ ich1=\EQ, il1=\EE, ind=\n, invis@, kbs=^H, kcbt=\EI, kcub1=^H,
+ kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
kel=\ET, 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@,
@@ -7970,17 +9943,18 @@ qvt103|qume qvt 103,
am, xenl, xon,
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,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ clear=\E[H\E[2J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
cuf=\E[%p1%dC, cuf1=\E[C$<2>,
cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
- hts=\EH, ind=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+ hts=\EH, ind=\n, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8,
rev=\E[7m$<2>, ri=\EM$<5>, rmam=\E[?7l, rmkx=\E[?1l\E>,
rmso=\E[m$<2>, rmul=\E[m$<2>,
rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
- sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m$<2>,
+ sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
+ %;m$<2>,
sgr0=\E[m$<2>, smam=\E[?7h, smkx=\E[?1h\E=,
smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
qvt103-w|qume qvt103 132 cols,
@@ -7989,12 +9963,12 @@ qvt103-w|qume qvt103 132 cols,
qvt119+|qvt119p|qvt119|qume qvt 119 and 119PLUS terminals,
am, hs, mir, msgr,
cols#80, lines#24, xmc#0,
- bel=^G, cbt=\EI, clear=\E*1, cnorm=\E.4, cr=^M, cub1=^H,
- cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
+ bel=^G, cbt=\EI, clear=\E*1, cnorm=\E.4, cr=\r, cub1=^H,
+ cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
cuu1=^K, cvvis=\E.2, dch1=\EW, dl1=\ER, dsl=\Eg\Ef\r, ed=\Ey,
- el=\Et, flash=\En0$<200>\En1, fsl=^M, home=^^, ht=^I,
- hts=\E1, il1=\EE, ind=^J, is2=\EDF\EC\EG0\Er\E(\E%EX,
- kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^AI\r,
+ el=\Et, flash=\En0$<200>\En1, fsl=\r, home=^^, ht=^I,
+ hts=\E1, il1=\EE, ind=\n, is2=\EDF\EC\EG0\Er\E(\E%EX,
+ kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, 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=^^,
mc4=\EA, mc5=\E@, ri=\EJ, rmir=\Er, smir=\Eq, smul=\EG8,
@@ -8130,11 +10104,11 @@ tvi803|televideo 803,
tvi910|televideo model 910,
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,
+ bel=^G, cbt=\EI, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET,
- home=\E=\001\001, hpa=\E]%p1%{32}%+%c, ht=^I,
- if=/usr/share/tabset/stdcrt, ind=^J, invis@, kbs=^H,
- kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^AI\r, kf1=^A@\r,
+ home=\E=^A^A, hpa=\E]%p1%{32}%+%c, ht=^I,
+ if=/usr/share/tabset/stdcrt, ind=\n, invis@, kbs=^H,
+ kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, 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=^^,
vpa=\E[%p1%{32}%+%c, use=adm+sgr,
@@ -8179,11 +10153,11 @@ tvi910+|televideo 910+,
tvi912|tvi914|tvi920|old televideo 912/914/920,
OTbs, OTpt, am, msgr,
cols#80, it#8, lines#24, xmc#1,
- bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
dl1=\ER$<33*>, ed=\Ey, el=\ET, flash=\Eb$<50/>\Ed, home=^^,
ht=^I, hts=\E1, ich1=\EQ, if=/usr/share/tabset/stdcrt,
- il1=\EE$<33*>, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L,
+ il1=\EE$<33*>, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L,
kcuu1=^K, 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=^^, rmso=\Ek, rmul=\Em, smso=\Ej, smul=\El,
@@ -8206,7 +10180,7 @@ tvi912cc|tvi912 at cowell college,
# (including some with magic cookies), fancy half-duplex mode, and
# different bugs.
#
-# Some operations reqire truly incredible amounts of padding. The
+# Some operations require truly incredible amounts of padding. The
# insert_line (<il1>) and delete_line (<dl1>) operations in particular
# are so slow as to be nearly unusable.
#
@@ -8321,7 +10295,7 @@ tvi912cc|tvi912 at cowell college,
# 10: 110
#
# S2 UART/Terminal options:
-# Up Down
+# Up Down
# 1: Not used Not allowed
# 2: Alternate character set Standard character set
# 3: Full duplex Half duplex
@@ -8332,10 +10306,10 @@ tvi912cc|tvi912 at cowell college,
# 8: Not used Not allowed on Rev E or lower
# 9: Even parity Odd parity
# 10: Steady cursor Blinking cursor
-# (On Rev E or lower, use W25 instead of switch 10.)
+# (On Rev E or lower, use W25 instead of switch 10.)
#
# S5 UART/Terminal options:
-# Open Closed
+# Open Closed
# 1: P3-6 Not connected DSR received on P3-6
# 2: P3-8 Not connected DCD received on P3-8
#
@@ -8345,8 +10319,8 @@ tvi912cc|tvi912 at cowell college,
# 3 Closed, 4 Closed: Not allowed
#
# 5 Closed: HDX printer (hardware control) Rev. K with extension port off,
-# all data transmitted out of the modem port (P3) will also be
-# transmitted out of the printer port (P4).
+# all data transmitted out of the modem port (P3) will also be
+# transmitted out of the printer port (P4).
#
# 6 Open, 7 Open: Not allowed
# 6 Open, 7 Closed: 20ma current loop input
@@ -8358,12 +10332,12 @@ tvi912cc|tvi912 at cowell college,
# is switched on).
#
# S4/W31: Enables automatic LF upon receipt of CR from
-# remote or keyboard.
+# remote or keyboard.
# S4/W32: Enables transmission of EOT at the end of Send. If not
-# installed, a carriage return is sent.
+# installed, a carriage return is sent.
# S4/W33: Disables automatic carriage return in column 80.
# S4/W34: Selects Page Print Mode as initial condition. If not
-# installed, Extension Mode is selected.
+# installed, Extension Mode is selected.
#
# NON-STANDARD CAPABILITIES
#
@@ -8442,13 +10416,13 @@ tvi912cc|tvi912 at cowell college,
tvi912b-unk|tvi912c-unk|TeleVideo TVI-912B or TVI-912C (no attributes),
OTbs, OTpt, am, bw,
cols#80, it#8, lines#24,
- bel=^G, clear=\032$<50>, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=\032$<50>, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%' '%+%c%p2%' '%+%c, cuu1=^K, dch1=\EW$<30>,
dl1=\ER$<1*>$<100>, ed=\Ey$<2*>$<10>, el=\ET$<15>,
home=^^, ht=^I, hts=\E1, ich1=\EQ$<30>,
if=/usr/share/tabset/stdcrt, il1=\EE$<1*>$<100>,
- ind=\n$<10>, is2=\Ew\EA\E'\E"\E(, kcub1=^H, kcud1=^J,
- kcuf1=^L, kcuu1=^K, kdch1=\177, kent=^M, khome=^^, mc4=\EA,
+ ind=\n$<10>, is2=\Ew\EA\E'\E"\E(, kcub1=^H, kcud1=\n,
+ kcuf1=^L, kcuu1=^K, kdch1=^?, kent=\r, khome=^^, mc4=\EA,
mc5=\E@, rs1=\Ek\010\Em\010\Eq\032, tbc=\E3, u6=%c%c\r,
u7=\E?, u8=%c%c\r, u9=\E?,
@@ -8480,7 +10454,8 @@ tvi912b+mc|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C full magic-cookie a
xmc#1,
blink=\E\^, dim=\E)\s, invis=\E_, rev=\Ej, rmso=\E(\Ek,
rmul=\Em,
- sgr=\E%?%p1%p5%|%t)%e(%; \010\E%?%p1%p3%|%tj%ek%;\010\E%?%p2%tl%em%;\010\E%?%p7%t_%e%?%p4%t\^%eq%;%;,
+ sgr=\E%?%p1%p5%|%t)%e(%;\s\010\E%?%p1%p3%|%tj%ek%;\010\E%?
+ %p2%tl%em%;\010\E%?%p7%t_%e%?%p4%t\^%eq%;%;,
sgr0=\E(\Ek\010\Em\010\Eq, smso=\E)\Ej, smul=\El,
# This uses the second page memory option to save & restore screen
@@ -8590,14 +10565,14 @@ tvi920b-mc|tvi920c-mc|TeleVideo TVI-920B or TVI-920C (magic cookies),
tvi921|televideo model 921 with sysline same as page & real vi function,
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,
+ acsc=, clear=^Z, cnorm=\E.3, cr=\r, cub1=^H, cud1=^V, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<3/>, cuu1=^K,
cvvis=\E.2, dch1=\EW, dl1=\ER$<1*/>, dsl=\Ef\r\Eg, ed=\EY,
el=\ET, fsl=\Eg, home=^^, ht=^I, ich1=\EQ,
- if=/usr/share/tabset/stdcrt, il1=\EE, ind=^J, invis@,
+ if=/usr/share/tabset/stdcrt, il1=\EE, ind=\n, 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%%,
+ ked=\EY, kel=\ET, kich1=\EQ, kil1=\EE, nel=\r\n, rmacs=\E%%,
rmir=, smacs=\E$, smir=, tsl=\Ef\EG0, use=adm+sgr,
# without the beeper
# (tvi92B: removed :ko=bt: before translation, I see no backtab cap;
@@ -8605,15 +10580,15 @@ tvi921|televideo model 921 with sysline same as page & real vi function,
tvi92B|televideo model 921 with sysline same as page & real vi function & no beeper,
am, hs, xenl, xhp,
cols#80, lines#24, xmc#0,
- acsc=, clear=^Z, cnorm=\E.3, cr=^M, cub1=^H, cud1=^V, cuf1=^L,
+ acsc=, clear=^Z, cnorm=\E.3, cr=\r, cub1=^H, cud1=^V, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<3/>, cuu1=^K,
cvvis=\E.2, dch1=\EW, dl1=\ER$<1*/>, dsl=\Ef\r\Eg, ed=\EY,
el=\ET, flash=\Eb$<200/>\Ed, fsl=\Eg, home=^^, ht=^I,
- ich1=\EQ, if=/usr/share/tabset/stdcrt, il1=\EE, ind=^J,
+ ich1=\EQ, if=/usr/share/tabset/stdcrt, il1=\EE, ind=\n,
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=\r\n, 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*/>,
@@ -8627,12 +10602,12 @@ tvi924|televideo tvi924,
am, bw, hs, in, mir, msgr, xenl, xon,
cols#80, it#8, lines#24, wsl#80, xmc#0,
bel=^G, blink=\EG2, cbt=\EI, civis=\E.0, clear=\E*0,
- cnorm=\E.3, cr=^M, csr=\E_%p1%{32}%+%c%p2%{32}%+%c,
+ cnorm=\E.3, cr=\r, csr=\E_%p1%{32}%+%c%p2%{32}%+%c,
cub1=^H, cud1=^V, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, cvvis=\E.1,
dch1=\EW, dl1=\ER, dsl=\Es0\Ef\031, ed=\Ey, el=\Et,
flash=\Eb$<200>\Ed, fsl=\031\Es1, home=^^, ht=^I, hts=\E1,
- ich1=\EQ, if=/usr/share/tabset/stdcrt, il1=\EE, ind=^J,
+ ich1=\EQ, if=/usr/share/tabset/stdcrt, il1=\EE, ind=\n,
invis@, is1=\017\E%\E'\E(\EDF\EC\EG0\EN0\Es0\Ev0,
kbs=^H, kclr=\E*0, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K,
kdch1=\EW, kdl1=\ER, ked=\Ey, kel=\Et, kf0=^A@\r, kf1=^AA\r,
@@ -8686,10 +10661,10 @@ tvi924|televideo tvi924,
# Position Up Dn Description
# --------------------------------------------
# 1 X Local edit
-# X Duplex edit (transmit editing keys)
+# X Duplex edit (transmit editing keys)
# --------------------------------------------
# 2 X 912/920 emulation
-# X 925
+# X 925
# --------------------------------------------
# 3 X
# 4 X No parity
@@ -8712,7 +10687,7 @@ tvi924|televideo tvi924,
# 5 X
# --------------------------------------------
# 6 X White on black display
-# X Black on white display
+# X Black on white display
# --------------------------------------------
# 7 X Half Duplex
# 8 X
@@ -8724,17 +10699,17 @@ tvi924|televideo tvi924,
# 8 X
# --------------------------------------------
# 9 X 50 Hz
-# X 60 Hz
+# X 60 Hz
# --------------------------------------------
# 10 X CR/LF (Auto LF)
-# X CR only
+# X CR only
#
# S3 (internal switch) settings:
#
# Position Up Dn Description
# --------------------------------------------
# 1 X Keyclick off
-# X Keyclick on
+# X Keyclick on
# --------------------------------------------
# 2 X English
# 3 X
@@ -8761,30 +10736,30 @@ tvi924|televideo tvi924,
# 5 X
# --------------------------------------------
# 6 X Screen blanking timer (ON)
-# X Screen blanking timer (OFF)
+# X Screen blanking timer (OFF)
# --------------------------------------------
# 7 X Page attributes
-# X Line attributes
+# X Line attributes
# --------------------------------------------
# 8 X DCD disconnected
-# X DCD connected
+# X DCD connected
# --------------------------------------------
# 9 X DSR disconnected
-# X DSR connected
+# X DSR connected
# --------------------------------------------
# 10 X DTR Disconnected
-# X DTR connected
+# X DTR connected
# --------------------------------------------
#
# (tvi925: BSD has <clear=\E*>. I got <is2> and <ri> from there -- esr)
tvi925|televideo 925,
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,
+ bel=^G, cbt=\EI, clear=^Z, cnorm=\E.4, cr=\r, cub1=^H, cud1=^V,
cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
cvvis=\E.2, dch1=\EW, dl1=\ER, dsl=\Eh, ed=\EY, el=\ET,
- flash=\Eb$<200>\Ed, fsl=^M\Eg, home=^^, ht=^I, hts=\E1,
- ich1=\EQ, il1=\EE, ind=^J, invis@, is2=\El\E", kbs=^H, kclr=^Z,
+ flash=\Eb$<200>\Ed, fsl=\r\Eg, home=^^, ht=^I, hts=\E1,
+ ich1=\EQ, il1=\EE, ind=\n, invis@, is2=\El\E", kbs=^H, kclr=^Z,
kcub1=^H, kcud1=^V, kcuf1=^L, 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,
@@ -8794,7 +10769,7 @@ tvi925|televideo 925,
# to avoid "magic cookie" standout glitch:
tvi925-hi|TeleVideo Model 925 with half intensity standout mode,
xmc@,
- kbs=^H, kcub1=^H, kcud1=^J, rmso=\E(, smso=\E), use=tvi925,
+ kbs=^H, kcub1=^H, kcud1=\n, rmso=\E(, smso=\E), use=tvi925,
# From: Todd Litwin <litwin@litwin.jpl.nasa.gov> 28 May 1993
# Originally Tim Curry, Univ. of Central Fla., <duke!ucf-cs!tim> 5/21/82
@@ -8893,23 +10868,29 @@ tvi925-hi|TeleVideo Model 925 with half intensity standout mode,
# I also inserted <ich1> and <kich1>; the :ko: string indicated that <ich>
# should be present and all tvi native modes use the same string for this.
# Finally, note that BSD has cud1=^V. -- esr)
+#
+# TVI 950 has 11 function-keys -TD
tvi950|televideo 950,
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,
+ acsc=jHkGlFmEnIqKtMuLvOwNxJ, bel=^G, cbt=\EI, clear=\E*,
+ cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
dl1=\ER, dsl=\Eg\Ef\r, ed=\Ey, el=\Et, flash=\Eb$<200/>\Ed,
- fsl=^M, home=^^, ht=^I, hts=\E1, ich1=\EQ, il1=\EE, ind=^J,
+ fsl=\r, home=^^, ht=^I, hts=\E1, ich1=\EQ, il1=\EE, ind=\n,
invis@,
- is2=\EDF\EC\Ed\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\Ef\r,
+ is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee\s\017\011\El
+ \E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0
+ \Ef\r,
kbs=^H, kcbt=\EI, kclr=\E*, kcub1=^H, kcud1=^V, kcuf1=^L,
- kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\Ey, kel=\Et, kf0=^A0\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, mc4=\Ea, mc5=\E`, ri=\Ej, rmacs=^X,
- rmir=\Er, smacs=^U, smir=\Eq, tbc=\E3, tsl=\Eg\Ef,
- use=adm+sgr,
+ kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\Ey, kel=\Et, kf1=^A@\r,
+ kf10=^AI\r, kf11=^AJ\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`, ri=\Ej,
+ rmacs=\E%%, rmir=\Er, smacs=\E$, smir=\Eq, tbc=\E3,
+ tsl=\Eg\Ef, kF1=^A`\r, kF10=^Ai\r, kF11=^Aj\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=adm+sgr,
#
# is for 950 with two pages adds the following:
# set 48 line page (\E\\2)
@@ -8924,7 +10905,9 @@ tvi950|televideo 950,
# set local (no send) edit keys (\Ek) when exiting vi
#
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,
+ is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee\s\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\011,
rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
smkx=\El, use=tvi950,
#
@@ -8938,7 +10921,9 @@ tvi950-2p|televideo950 w/2 pages,
# place cursor at 0,24,1 (\E-07 )
#
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,
+ is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee\s\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\011,
rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
smkx=\El, use=tvi950,
#
@@ -8949,20 +10934,26 @@ 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,
+ is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee\s\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,
+ is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee\s\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,
# 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,
+ is2=\EDF\EC\Eb\EG0\Er\EO\E'\E(\E%\Ew\EX\Ee\s\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,
# From: Andreas Stolcke <stolcke@icsi.berkeley.edu>
@@ -8982,9 +10973,10 @@ tvi955|televideo 955,
civis=\E.0, cnorm=\E.2, cud1=^V, cup=\E[%i%p1%d;%p2%dH,
cvvis=\E.1, dim=\E[=5h, ind@, invis=\EG1,
is2=\E[=3l\EF1\Ed\EG0\E[=5l\E%\El, kctab=\E2, khts=\E1,
- knp=\EK, kpp=\EJ, krmir=\EQ, ktbc=\E3, mc0=\EP, rmacs=\E%%,
+ knp=\EK, kpp=\EJ, krmir=\EQ, ktbc=\E3, mc0=\EP, rmacs=\E%,
rmam=\E[=7l, rmxon=^N,
- rs1=\EDF\EC\Eg\Er\EO\E'\E(\Ew\EX\Ee \017\E0P\E6\0\E0p\E4\0\Ef\r,
+ rs1=\EDF\EC\Eg\Er\EO\E'\E(\Ew\EX\Ee\s\017\E0P\E6\0\E0p\E4\0
+ \Ef\r,
sgr0=\EG0\E[=5l, smacs=\E$, smam=\E[=7h, smxon=^O,
use=tvi950,
tvi955-w|955-w|televideo955 w/132 cols,
@@ -9037,7 +11029,7 @@ tvipt|televideo personal terminal,
cbt=\EI, clear=^Z, cub1=^H, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER$<5*>,
ed=\EY, el=\ET, home=^^, if=/usr/share/tabset/stdcrt,
- il1=\EE$<5*>, is2=\Ev\Eu\EK, kbs=^H, kcub1=^H, kcud1=^J,
+ il1=\EE$<5*>, is2=\Ev\Eu\EK, kbs=^H, kcub1=^H, kcud1=\n,
kcuf1=^L, kcuu1=^K, kf0=^A, kf1=^B, khome=^^, mc4=^T, mc5=^R,
rmso=\EF, rmul=\EF, smso=\EG1@A\EH, smul=\EG1B@\EH,
# From: Nathan Peterson <nathan@sco.com>, 03 Sep 1996
@@ -9047,37 +11039,42 @@ tvi9065|televideo 9065,
wnum#0, wsl#30,
acsc='r0_jhkglfmeniopqksqtmulvownxj, bel=^G,
blink=\EG2, bold=\EG\,, cbt=\EI, civis=\E.0, clear=^Z,
- cnorm=\E.3, cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD,
+ cnorm=\E.3, cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD,
cub1=^H, cud=\E[%p1%dB, cud1=^V, cuf=\E[%p1%dC, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu=\E[%p1%dA,
cuu1=^K, cvvis=\E.2, dch=\E[%p1%dP, dch1=\EW, dim=\EGp,
dl=\E[%p1%dM, dl1=\ER, dsl=\E_30\r, ech=\E[%p1%d@, ed=\EY,
- el=\ET, flash=\Eb$<15>\Ed, fsl=^M, home=^^, ht=^I, hts=\E1,
+ el=\ET, flash=\Eb$<15>\Ed, fsl=\r, home=^^, ht=^I, hts=\E1,
ich=\E[%p1%d@, if=/usr/share/tabset/stdcrt,
- il=\E[%p1%dL, il1=\EE, ind=^J, indn=\E[%p1%dS, invis=\EG1,
- ip=$<3>,
+ il=\E[%p1%dL, il1=\EE, ind=\n, invis=\EG1, ip=$<3>,
is1=\E"\E%\E'\E(\EG@\EO\EX\E[=5l\E[=6l\E[=7h\Ed\Er,
is2=\EF2\EG0\E\\L, is3=\E<\E[=4l\E[=8h, kHOM=\E\s\s\s,
kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K,
kdch1=\EW, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^AK\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=^^, ll=\E[25;1H,
- mc0=\E[0;0i, mc4=\Ea, mc5=\E`, nel=^M^J,
+ mc0=\E[0;0i, mc4=\Ea, mc5=\E`, nel=\r\n,
pfkey=\E|%p1%{48}%+%c3%p2%s\031,
pfloc=\E|%p1%{48}%+%c2%p2%s\031,
pfx=\E|%p1%{48}%+%c1%p2%s\031,
pln=\E_%p1%{63}%+%c%p2%s\r, prot=\E&,
rep=\E[%p2%db%p1%c, rev=\EG4,
- rf=/usr/share/tabset/stdcrt, ri=\Ej, rin=\E[%p1%dT,
- rmacs=\E%%, rmam=\E[=7l, rmcup=\E.3\Er\E[1;25r\E[25;0H,
- rmdc=\0, rmir=\Er, rmln=\E[4;1v, rmso=\EG0, rmul=\EG0,
- rmxon=^N, rs1=\EC\EDF\E[0;0v\E[8;1v\E[=65l,
- rs2=\E.b\E[10;20v\E[14;1v\E[3;0v\E[7;0v\E[=11.h\E[=12.h\E[=13.h\E[=14.h\E[=15l\E[=20h\E[=60l\E[=61h\E[=9l\E[=10l\E[=21l\E[=23l\E[=3l\E_40\E_50\En\Ew\Ee \Ex0\0\0\Ex1\0\0\Ex2\0\0\Ex3\0\0\Ex4\0\0\E1,
- rs3=\E[=19h\E.3\E9\E0O\0\0\0\0\0\E0o\0\0\0\0\0\E0J\177\0\0\0\0,
- sgr=\EG0%?%p1%t\EGt%;%?%p2%t\EG8%;%?%p3%t\EG4%;%?%p4%t\EG2%;%?%p5%t\EGp%;%?%p6%t\EG\,%;%?%p7%t\EG1%;%?%p8%t\E&%;%?%p9%t\E$%e\E%%%;,
+ rf=/usr/share/tabset/stdcrt, ri=\Ej, rmacs=\E%%,
+ rmam=\E[=7l, rmcup=\E.3\Er\E[1;25r\E[25;0H, rmdc=\0,
+ rmir=\Er, rmln=\E[4;1v, rmso=\EG0, rmul=\EG0, rmxon=^N,
+ rs1=\EC\EDF\E[0;0v\E[8;1v\E[=65l,
+ rs2=\E.b\E[10;20v\E[14;1v\E[3;0v\E[7;0v\E[=11.h\E[=12.h\E[=1
+ 3.h\E[=14.h\E[=15l\E[=20h\E[=60l\E[=61h\E[=9l\E[=10l\E[=
+ 21l\E[=23l\E[=3l\E_40\E_50\En\Ew\Ee\s\Ex0\0\0\Ex1\0\0
+ \Ex2\0\0\Ex3\0\0\Ex4\0\0\E1,
+ rs3=\E[=19h\E.3\E9\E0O\0\0\0\0\0\E0o\0\0\0\0\0\E0J\177\0\0
+ \0\0,
+ sgr=\EG0%?%p1%t\EGt%;%?%p2%t\EG8%;%?%p3%t\EG4%;%?%p4%t\EG2%;
+ %?%p5%t\EGp%;%?%p6%t\EG\,%;%?%p7%t\EG1%;%?%p8%t\E&%;%?
+ %p9%t\E$%e\E%%%;,
sgr0=\EG0\E%, smacs=\E$, smam=\E=7h, smcup=\E.2, smdc=\Er,
smir=\Eq, smln=\E[4;2v, smso=\EGt, smul=\EG8, smxon=^O,
- tbc=\E3, tsl=\E[4;1v\E_30, uc=\EG8\EG0,
+ tbc=\E3, tsl=\E[4;1v\E_30, uc=\EG8\EG0, use=ecma+index,
#### Visual (vi)
#
@@ -9105,20 +11102,20 @@ tvi9065|televideo 9065,
vi50|visual 50,
OTbs, OTpt, am, da, db, msgr,
cols#80, it#8, lines#24,
- OTnl=^J, bel=^G, cbt=\Ez$<4/>, clear=\EH\EJ, cr=^M, cub1=^H,
+ OTnl=\n, bel=^G, cbt=\Ez$<4/>, clear=\EH\EJ, cr=\r, 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,
+ ht=^I, il1=\EL, ind=\n, 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,
+ nel=\r\n, 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,
cols#80, it#8, lines#24,
- bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\EM,
- ed=\Ek, el=\EK, home=\EH, ht=^I, il1=\EL, ind=^J, kbs=^H,
+ ed=\Ek, el=\EK, home=\EH, ht=^I, il1=\EL, ind=\n, kbs=^H,
kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH,
rmso=\ET, smso=\EU,
# From: Jeff Siegal <jbs@quiotix.com>
@@ -9126,7 +11123,7 @@ vi55|Visual 55,
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,
+ cud1=\n, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
cuu1=\EA, dch1=\Ew, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I,
il1=\EL, is2=\Ev\E_AX\Eb\EW\E9P\ET, kbs=^H, kcub1=\ED,
kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EI, rmir=\Eb, rmso=\ET,
@@ -9145,18 +11142,18 @@ vi55|Visual 55,
vi200|visual 200,
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,
- el=\Ex, home=\EH, ht=^I, hts=\E1, il1=\EL, ind=^J, invis=\Ea,
- kbs=^H, kclr=\Ev, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
- kcuu1=\EA, kdch1=\EO, kdl1=\EM, ked=\EJ, kel=\Et, kf0=\E?p,
- kf1=\E?q, kf2=\E?r, kf3=\E?s, kf4=\E?t, kf5=\E?u, kf6=\E?v,
- kf7=\E?w, kf8=\E?x, kf9=\E?y, khome=\EH, khts=\E1, kich1=\Ei,
- kil1=\EL, krmir=\Ej, mc0=\EH\E], mc4=\EX, mc5=\EW, ri=\EI,
- rmacs=\EG, rmkx=\E>, rmso=\E3,
- rs1=\E3\Eb\Ej\E\El\EG\Ec\Ek\EX, sgr0=\E3\Eb, smacs=\EF,
- smkx=\E=, smso=\E4, tbc=\Eg,
+ acsc=+h.kffggjmkllsmenbq`tnuovcwdxa}r, bel=^G, cbt=\Ez,
+ clear=\Ev, cnorm=\Ec, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ed,
+ dch1=\EO, dim=\E4, dl1=\EM, ed=\Ey, el=\Ex, home=\EH, ht=^I,
+ hts=\E1, il1=\EL, ind=\n, invis=\Ea, kbs=^H, kclr=\Ev,
+ kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
+ kdch1=\EO, kdl1=\EM, ked=\EJ, kel=\Et, kf0=\E?p, kf1=\E?q,
+ kf2=\E?r, kf3=\E?s, kf4=\E?t, kf5=\E?u, kf6=\E?v, kf7=\E?w,
+ kf8=\E?x, kf9=\E?y, khome=\EH, khts=\E1, kich1=\Ei, kil1=\EL,
+ krmir=\Ej, mc0=\EH\E], mc4=\EX, mc5=\EW, ri=\EI, rmacs=\EG,
+ rmkx=\E>, rmso=\E3, rs1=\E3\Eb\Ej\E\El\EG\Ec\Ek\EX,
+ sgr0=\E3\Eb, smacs=\EF, smkx=\E=, smso=\E4, tbc=\Eg,
# The older Visuals didn't come with function keys. This entry uses
# <smkx> and <rmkx> so that the keypad keys can be used as function keys.
# If your version of vi doesn't support function keys you may want
@@ -9177,10 +11174,10 @@ vi200-rv|visual 200 reverse video,
vi300|visual 300 ansi x3.64,
am, bw, mir, xenl,
cols#80, lines#24,
- bel=^G, cbt=\E[Z, clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=\E[B,
+ bel=^G, cbt=\E[Z, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\E[B,
cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
dch1=\E[P$<40>, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
- il1=\E[L, ind=^J,
+ il1=\E[L, ind=\n,
is2=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[1Q\E[0;1(D\E[8s,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kf1=\E_A\E\\, kf2=\E_B\E\\, kf3=\E_C\E\\, kf4=\E_D\E\\,
@@ -9191,8 +11188,7 @@ vi300|visual 300 ansi x3.64,
# some of the vi300s have older firmware that has the command
# sequence for setting editing extent reversed.
vi300-old|visual 300 with old firmware (set edit extent reversed),
- is2=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[2Q\E[0;1(D\E[8s,
- use=vi300,
+ is2=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[2Q\E[0;1(D\E[8s, use=vi300,
# Visual 500 prototype entry from University of Wisconsin.
# The best place to look for the escape sequences is page A1-1 of the
@@ -9206,15 +11202,15 @@ vi300-old|visual 300 with old firmware (set edit extent reversed),
vi500|visual 500,
am, mir, msgr,
cols#80, it#8, lines#33,
- acsc=, cbt=\Ez$<4/>, clear=\Ev$<6*/>, cr=^M,
+ acsc=, cbt=\Ez$<4/>, clear=\Ev$<6*/>, cr=\r,
csr=\E(%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=\EB,
cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
dch1=\EO$<3*/>, dl1=\EM$<3*/>, ed=\Ey$<3*/>,
el=\Ex$<16/>, home=\EH, ht=\011$<8/>, il1=\EL\Ex$<3*/>,
- ind=^J,
+ ind=\n,
is2=\E3\E\001\E\007\E\003\Ek\EG\Ed\EX\El\E>\Eb\E\\,
kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
- khome=\EH, nel=^M^J, rmacs=^O, rmir=\Ej, rmso=\E^G,
+ khome=\EH, nel=\r\n, rmacs=^O, rmir=\Ej, rmso=\E^G,
rmul=\E^C, smacs=^N, smir=\Ei, smso=\E^H, smul=\E^D,
# The visual 550 is a visual 300 with tektronix graphics,
@@ -9232,8 +11228,8 @@ vi603|visual603|visual 603,
dsl=\EP2;1~\E\\, ed=\E[J, el=\E[K, fsl=\E\\, il1=\E[L,
ind=\ED, is1=\E>\E[?3l\E[?4l\E[?7h\E[?8h\E[1;24r,
rev=\E[7m, ri=\EM, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
- sgr0=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m, tsl=\EP2~,
- use=vt100,
+ sgr0=\E[m\017$<2>, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+ tsl=\EP2~, use=vt100+4bsd,
#### Wyse (wy)
#
@@ -9247,7 +11243,8 @@ vi603|visual603|visual 603,
# Wyse sales can be reached by phone at 1-800-GET-WYSE. Tech support is at
# (800)-800-WYSE (option 5 gets you a human). There's a Web page at the
# obvious address, <http://www.wyse.com>. They keep terminfo entries at
-# <http://www.wyse.co.uk/support/appnotes/idxappnt.htm>.
+# https://web.archive.org/web/19970712022641/http://www.wyse.co.uk/support/appnotes/idxappnt.htm
+#
#
# Wyse bought out Link Technology, Inc. in 1990 and closed it down in 1995.
# They now own the Qume and Amdek brands, too. So these are the people to
@@ -9272,18 +11269,18 @@ wy30|wyse30|Wyse 30,
am, bw, hs, mc5i, mir, msgr, xon,
cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8, wsl#45,
acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, cbt=\EI,
- civis=\E`0, clear=\E+$<80>, cnorm=\E`1, cr=^M, cub1=^H,
- cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
+ civis=\E`0, clear=\E+$<80>, cnorm=\E`1, cr=\r, cub1=^H,
+ cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
cuu1=^K, dch1=\EW$<10>, dim=\E`7\E), dl1=\ER$<1>,
dsl=\EF\r, ed=\EY$<80>, el=\ET, flash=\E`8$<100/>\E`9,
- fsl=^M, home=^^, ht=\011$<1>, hts=\E1, il1=\EE$<2>,
+ fsl=\r, home=^^, ht=\011$<1>, hts=\E1, il1=\EE$<2>,
ind=\n$<2>, ip=$<2>, is2=\E'\E(\E\^3\E`9\016\024,
- kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L,
+ kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, kcud1=\n, kcuf1=^L,
kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET, kent=\E7,
kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, khome=^^, kich1=\EQ,
kil1=\EE, knp=\EK, kpp=\EJ, krpl=\Er, ll=^^^K, mc0=\EP, mc4=^T,
- mc5=^X, nel=^M^J, pfx=\Ez%p1%{63}%+%c%p2%s\177,
+ mc5=^X, nel=\r\n, pfx=\Ez%p1%{63}%+%c%p2%s\177,
pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), ri=\Ej$<3>,
rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(,
sgr=%?%p1%p5%p8%|%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
@@ -9299,7 +11296,9 @@ wy30-mc|wyse30-mc|wyse 30 with magic cookies,
ma@, xmc#1,
blink=\EG2, dim=\EGp, prot=\EG0\E), rmacs=\EG0\EH\003,
rmcup=\EG0, rmso=\EG0,
- sgr=\EG%{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%;,
+ 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,
# The mandatory pause used by <flash> does not work with
@@ -9321,26 +11320,30 @@ wy30-vb|wyse30-vb|wyse 30 visible bell,
wy50|wyse50|Wyse 50,
am, bw, hs, mc5i, mir, msgr, xon,
cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8, wsl#45,
- acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, cbt=\EI,
- civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M, cub1=^H,
- cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
+ acsc=a;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, cbt=\EI,
+ civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=\r, cub1=^H,
+ cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
cuu1=^K, dch1=\EW$<1>, dim=\E`7\E), dl1=\ER, dsl=\EF\r,
- ed=\EY$<20>, el=\ET, flash=\E`8$<100/>\E`9, fsl=^M,
+ ed=\EY$<20>, el=\ET, flash=\E`8$<100/>\E`9, fsl=\r,
home=^^, ht=^I, hts=\E1, il1=\EE, ind=\n$<2>, ip=$<1>,
is1=\E`\:\E`9$<30>, is2=\016\024\E'\E(, kHOM=\E{, kbs=^H,
- kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW,
+ kcbt=\EI, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW,
kdl1=\ER, ked=\EY, kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r,
kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
kf16=^AO\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, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er,
- ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=^M^J,
+ ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=\r\n,
pfx=\Ez%p1%{63}%+%c%p2%s\177,
pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), rev=\E`6\E),
ri=\Ej, rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(,
- sgr=%?%p1%p3%|%t\E`6\E)%e%p5%p8%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
+ sgr=%?%p1%p3%|%t\E`6\E)%e%p5%p8%|%t\E`7\E)%e\E(%;%?%p9%t\EH
+ \002%e\EH\003%;,
sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10,
- smso=\E`6\E), tbc=\E0, tsl=\EF,
+ smso=\E`6\E), tbc=\E0, tsl=\EF, kF1=^A`\r, kF10=^Ai\r,
+ kF11=^Aj\r, kF12=^Ak\r, kF13=^Al\r, kF14=^Am\r, kF15=^An\r,
+ kF16=^Ao\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,
#
# This terminal description uses the non-hidden attribute mode
# (with magic cookie).
@@ -9355,7 +11358,9 @@ wy50-mc|wyse50-mc|wyse 50 with magic cookies,
ma@, xmc#1,
blink=\EG2, dim=\EGp, prot=\EG0\E), rev=\EG4,
rmacs=\EG0\EH\003, rmcup=\EG0, rmso=\EG0,
- sgr=\EG%{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%;,
+ 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,
wy50-vb|wyse50-vb|wyse 50 visible bell,
@@ -9395,25 +11400,31 @@ wy350|wyse350|Wyse 350,
colors#8, cols#80, lh#1, lines#24, lw#8, ncv#55, nlab#8, pairs#8,
wsl#45, xmc#1,
acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2,
- cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M,
- cub1=^H, cud1=^J, cuf1=^L,
+ cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=\r,
+ cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<1>,
dim=\EGp, dl1=\ER, dsl=\EF\r, ed=\EY$<20>, el=\ET,
- flash=\E`8$<100/>\E`9, fsl=^M, home=^^, ht=^I, hts=\E1,
+ flash=\E`8$<100/>\E`9, fsl=\r, home=^^, ht=^I, hts=\E1,
il1=\EE, ind=\n$<2>, ip=$<1>, is1=\E`\:\E`9$<30>,
is2=\016\024\E'\E(, is3=\E%?, kHOM=\E{, kbs=^H, kcbt=\EI,
- kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER,
+ kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER,
ked=\EY, kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r,
kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
kf16=^AO\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, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er,
- ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=^M^J, oc=\E%?, op=\EG0,
+ ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=\r\n, oc=\E%?, op=\EG0,
pfx=\Ez%p1%{63}%+%c%p2%s\177,
pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\EG0\E), ri=\Ej,
rmacs=\EG0\EH\003, rmir=\Er, rmln=\EA11, setb=,
- setf=%?%p1%{0}%=%t%{76}%e%p1%{1}%=%t%{64}%e%p1%{2}%=%t%{8}%e%p1%{3}%=%t%{72}%e%p1%{4}%=%t%{4}%e%p1%{5}%=%t%{68}%e%p1%{6}%=%t%{12}%e%p1%{7}%=%t%{0}%;%PC\EG%gC%gA%+%{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%;,
+ 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,
wy350-vb|wyse350-vb|wyse 350 visible bell,
@@ -9431,10 +11442,10 @@ wy350-wvb|wyse350-wvb|wyse 350 132-column visible bell,
wy100|wyse 100,
hs, mir,
cols#80, lines#24, xmc#1,
- bel=^G, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=\E;, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
- dl1=\ER, dsl=\EA31, ed=\EY, el=\ET, fsl=^M, il1=\EE, ind=^J,
- invis@, is2=\Eu\E0, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L,
+ dl1=\ER, dsl=\EA31, ed=\EY, el=\ET, fsl=\r, il1=\EE, ind=\n,
+ invis@, is2=\Eu\E0, kbs=^H, kcub1=^H, kcud1=\n, 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,
@@ -9450,14 +11461,15 @@ wy120|wyse120|wy150|wyse150|Wyse 120/150,
cols#80, it#8, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45,
acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~,
bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<50>,
- cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ cnorm=\E`1, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<7>,
dim=\EGp, dl1=\ER$<3>, dsl=\EF\r, ed=\EY$<50>, el=\ET$<4>,
- flash=\E`8$<100/>\E`9, fsl=^M, home=^^, ht=\011$<1>,
+ flash=\E`8$<100/>\E`9, fsl=\r, home=^^, ht=\011$<1>,
hts=\E1, il1=\EE$<3>, ind=\n$<3>, ip=$<2>, is1=\EcB0\EcC1,
- is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El,
+ is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016
+ \024\El,
is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
- kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
+ kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
@@ -9470,7 +11482,9 @@ wy120|wyse120|wy150|wyse150|Wyse 120/150,
rmacs=\EcD, rmam=\Ed., rmcup=\Ew1, rmir=\Er, rmln=\EA11,
rmxon=\Ec20, rs1=\E~!\E~4$<30>, rs2=\EeF\E`\:$<70>,
rs3=\EwG\Ee($<100>,
- sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c,
+ sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}
+ %|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t
+ %{64}%|%;%?%p7%t%{1}%|%;%c,
sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/,
smcup=\Ew0, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21,
tbc=\E0, tsl=\EF, use=adm+sgr,
@@ -9529,15 +11543,16 @@ wy60|wyse60|Wyse 60,
cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#45,
acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~,
bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<100>,
- cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ cnorm=\E`1, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
dch1=\EW$<11>, dclk=\E`b, dim=\EGp, dl1=\ER$<5>, dsl=\EF\r,
- ed=\EY$<100>, el=\ET, flash=\E`8$<100/>\E`9, fsl=^M,
+ ed=\EY$<100>, el=\ET, flash=\E`8$<100/>\E`9, fsl=\r,
home=\E{, ht=\011$<1>, hts=\E1, il1=\EE$<4>, ind=\n$<5>,
ip=$<3>, is1=\EcB0\EcC1,
- is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El,
+ is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016
+ \024\El,
is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
- kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
+ kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
@@ -9550,10 +11565,15 @@ wy60|wyse60|Wyse 60,
rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew1, rmir=\Er,
rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<150>,
rs2=\EeG$<150>, rs3=\EwG\Ee($<200>,
- sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c,
+ sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}
+ %|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t
+ %{64}%|%;%?%p7%t%{1}%|%;%c,
sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/,
smcup=\Ew0, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21,
- tbc=\E0, tsl=\EF, use=adm+sgr,
+ tbc=\E0, tsl=\EF, kF1=^A`\r, kF10=^Ai\r, kF11=^Aj\r,
+ kF12=^Ak\r, kF13=^Al\r, kF14=^Am\r, kF15=^An\r, kF16=^Ao\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=adm+sgr,
#
wy60-w|wyse60-w|wyse 60 132-column,
cols#132, lw#7, nlab#16, wsl#97,
@@ -9653,7 +11673,7 @@ wy99-ansi|Wyse WY-99GT in ansi mode (int'l PC keyboard),
cols#80, it#8, lines#25, vt#3,
acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[J$<200>, cnorm=\E[34h\E[?25h, cr=^M,
+ clear=\E[H\E[J$<200>, cnorm=\E[34h\E[?25h, cr=\r,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<1>,
cub1=\010$<1>, cud=\E[%p1%dB, cud1=\ED,
cuf=\E[%p1%dC$<1>, cuf1=\E[C$<1>,
@@ -9663,7 +11683,8 @@ wy99-ansi|Wyse WY-99GT in ansi mode (int'l PC keyboard),
enacs=\E)0, flash=\E[?5h$<30/>\E[?5l, home=\E[H,
hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL,
il1=\E[L, ind=\n$<1>, invis=\E[8m,
- is2=\E7\E[1r\E8\E[2;3;4;13;20;34;39;36l\E[12;16;34h\E[?1;3;4;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[4i,
+ is2=\E7\E[1r\E8\E[2;3;4;13;20;34;39;36l\E[12;16;34h\E[?1;3;4
+ ;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[4i,
kbs=^H, kcbt=\E[z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
kcuu1=\EOA, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
kf12=\E[24~, kf17=\E[K, kf18=\E[31~, kf19=\E[32~, kf2=\EOQ,
@@ -9673,9 +11694,12 @@ wy99-ansi|Wyse WY-99GT in ansi mode (int'l PC keyboard),
mc4=\E[4i, mc5=\E[5i, nel=\EE, prot=\E[1"q, rc=\E8,
rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
rmkx=\E[?1l, rmso=\E[27m, rmul=\E[24m,
- rs2=\E[61"p\E[40h\E[?6l\E[1r\E[2;3;4;13;20;34;39;36l\E[12;16;34h\E[?1;3;4;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[24E\E[4i,
+ rs2=\E[61"p\E[40h\E[?6l\E[1r\E[2;3;4;13;20;34;39;36l\E[12;16
+ ;34h\E[?1;3;4;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[24E
+ \E[4i,
sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%O%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m\E[%?%p8%t1%;"q%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%O%t;7%;%?%p4%t;5%;%?
+ %p5%t;2%;%?%p7%t;8%;m\E[%?%p8%t1%;"q%?%p9%t\016%e\017%;,
sgr0=\E[m\017\E["q, smacs=^N, smam=\E[?7h, smir=\E[4h,
smkx=\E[?1h, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd,
@@ -9698,15 +11722,17 @@ wy99f|wy99fgt|wy-99fgt|Wyse WY-99GT (int'l PC keyboard),
cols#80, it#8, lines#25, wsl#46,
acsc='x+y.w_vi~j(k'l&m%n)o9q*s8t-u.v\,w+x=, bel=^G,
blink=\EG2, cbt=\EI, civis=\E`0, clear=\E'\E(\032,
- cnorm=\E`4\E`1, cr=^M, cub1=^H, cud1=\Ej, cuf1=^L,
+ cnorm=\E`4\E`1, cr=\r, cub1=^H, cud1=\Ej, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
cvvis=\E`2\E`1, dch1=\EW, dim=\EGp, dl1=\ER, dsl=\EF\r,
ed=\EY$<8*>, el=\ET$<8>, enacs=\Ec@1J$<2000>,
- flash=\E\^1$<30/>\E\^0, fsl=^M, home=^^, ht=^I, il1=\EE,
- ind=^J, invis=\EG3,
- is2=\Eu\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E\^0\E`1\E`4\Ee.\E`\:\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"\EcD\024,
+ flash=\E\^1$<30/>\E\^0, fsl=\r, home=^^, ht=^I, il1=\EE,
+ ind=\n, invis=\EG3,
+ is2=\Eu\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E
+ \^0\E`1\E`4\Ee.\E`\:\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er
+ \Ee"\EcD\024,
ka1=^^, ka3=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H,
- kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r,
+ kcud1=\n, kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r,
kf11=^AJ\r, kf12=^AK\r, kf13=^A`\r, kf14=^Aa\r, kf15=^Ab\r,
kf16=^Ac\r, kf17=^Ad\r, kf18=^Ae\r, kf19=^Af\r, kf2=^AA\r,
kf20=^Ag\r, kf21=^Ah\r, kf22=^Ai\r, kf23=^Aj\r, kf24=^Ak\r,
@@ -9714,8 +11740,12 @@ wy99f|wy99fgt|wy-99fgt|Wyse WY-99GT (int'l PC keyboard),
kf8=^AG\r, kf9=^AH\r, kprt=\EP, mc0=\EP, mc4=^T, mc5=\Ed#,
nel=^_, prot=\E), rev=\EG4, ri=\Ej, rmacs=\EcD, rmam=\Ed.,
rmcup=\Ec21\Ec31, rmir=\Er, rmso=\EG0, rmxon=\Ec20\Ec30,
- rs2=\Eu\E~4\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E\^0\E`1\E`4\Ee.\E`\:\Ee)\Ew\EwG\Ew0\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"\Ec@0B\EcD\024,
- sgr=\E(\EG%{48}%?%p1%p3%O%t%{4}%+%;%?%p2%t%{8}%+%;%?%p4%t%{2}%+%;%?%p5%t%{64}%+%;%?%p7%t%{1}%+%;%c%?%p8%t\E)%;%?%p9%t\EcE%e\EcD%;,
+ rs2=\Eu\E~4\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`
+ 9\E\^0\E`1\E`4\Ee.\E`\:\Ee)\Ew\EwG\Ew0\Ee1\EG0\E(\Ed/
+ \Ee4\Ed*\EO\E`I\Er\Ee"\Ec@0B\EcD\024,
+ sgr=\E(\EG%{48}%?%p1%p3%O%t%{4}%+%;%?%p2%t%{8}%+%;%?%p4%t
+ %{2}%+%;%?%p5%t%{64}%+%;%?%p7%t%{1}%+%;%c%?%p8%t\E)%;%?
+ %p9%t\EcE%e\EcD%;,
sgr0=\E(\EG0, smacs=\EcE, smam=\Ed/, smcup=\Ec20\Ec30,
smir=\Eq, smso=\EG4, smxon=\Ec21\Ec31, tsl=\EF,
@@ -9750,14 +11780,15 @@ wy160|wyse160|Wyse 160,
cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#38,
acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~,
bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<30>,
- cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ cnorm=\E`1, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<5>,
dclk=\E`b, dim=\EGp, dl1=\ER$<1>, dsl=\EF\r, ed=\EY$<30>,
- el=\ET$<5>, flash=\E`8$<100/>\E`9, fsl=^M, home=\E{, ht=^I,
+ el=\ET$<5>, flash=\E`8$<100/>\E`9, fsl=\r, home=\E{, ht=^I,
hts=\E1, il1=\EE$<1>, ind=\n$<1>, ip=$<2>, is1=\EcB0\EcC1,
- is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El,
+ is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016
+ \024\El,
is3=\Ew0$<100>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
- kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
+ kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
@@ -9770,7 +11801,9 @@ wy160|wyse160|Wyse 160,
rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew0, rmir=\Er,
rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<70>,
rs2=\E`\:$<100>, rs3=\EwG\Ee($<140>,
- sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c,
+ sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}
+ %|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t
+ %{64}%|%;%?%p7%t%{1}%|%;%c,
sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/,
smcup=\Ew1, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21,
tbc=\E0, tsl=\EF, use=adm+sgr,
@@ -9825,14 +11858,14 @@ wy75|wyse75|wyse 75,
cols#80, lines#24, ma#1, pb#1201, wsl#78,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[J$<30>,
- cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr$<2>,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ cnorm=\E[?25h, cr=\r, csr=\E[%i%p1%d;%p2%dr$<2>,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
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$<3*>,
dch1=\E[P$<3>, dim=\E[0t\E[2m, dl=\E[%p1%dM$<1*>,
dl1=\E[M, dsl=\E[>\,\001\001\E[>-\001\001,
ech=\E[%p1%dX, ed=\E[J$<30>, el=\E[K$<3>, el1=\E[1K$<3>,
- enacs=\E)0, flash=\E[30h\E\,\E[30l$<250>, fsl=^A,
+ enacs=\E)0, flash=\E[30h\E\,$<250/>\E[30l, fsl=^A,
home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
ich=\E[%p1%d@$<1*>, il=\E[%p1%dL$<2*>, il1=\E[L$<2>,
ind=\n$<2>, ip=$<1>,
@@ -9850,7 +11883,9 @@ wy75|wyse75|wyse 75,
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$<80>, rs3=\E[?5l,
sc=\E7,
- sgr=%?%p5%t\E[0t%;%?%p3%p1%|%t\E[1t%;%?%p2%t\E[2t%;%?%p4%t\E[3t%;%?%p1%p2%p3%p4%p5%|%|%|%|%t\E[7m%e\E[m%;%?%p9%t\016%e\017%;,
+ sgr=%?%p5%t\E[0t%;%?%p3%p1%|%t\E[1t%;%?%p2%t\E[2t%;%?%p4%t
+ \E[3t%;%?%p1%p2%p3%p4%p5%|%|%|%|%t\E[7m%e\E[m%;%?%p9%t
+ \016%e\017%;,
sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
smkx=\E[?1l\E[?7h\E=, smso=\E[1t\E[7m, smul=\E[2t\E[4m,
tbc=\E[3g, tsl=\E[>\,\001, use=vt220+keypad,
@@ -9863,7 +11898,9 @@ wy75-mc|wyse75-mc|wyse 75 with magic cookies,
ma@, xmc#1,
blink=\E[2p, dim=\E[1p, invis=\E[4p, is3=\E[m\E[p,
rev=\E[16p, rmacs=\E[0p\017, rmso=\E[0p, rmul=\E[0p,
- sgr=\E[%{0}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{16}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{1}%|%;%?%p7%t%{4}%|%;%dp%?%p9%t\016%e\017%;,
+ sgr=\E[%{0}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{16}%|%;%?
+ %p4%t%{2}%|%;%?%p1%p5%|%t%{1}%|%;%?%p7%t%{4}%|%;%dp%?%p9
+ %t\016%e\017%;,
sgr0=\E[0p\017, smacs=\E[0p\016, smso=\E[17p, smul=\E[8p,
use=wy75,
wy75-vb|wyse75-vb|wyse 75 with visible bell,
@@ -9893,14 +11930,14 @@ wy85|wyse85|wyse 85,
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,
+ clear=\E[H\E[J$<110>, cnorm=\E[?25h, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, 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>,
+ enacs=\E)0, flash=\E[30h\E\,$<300/>\E[30l,
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,
@@ -9917,19 +11954,20 @@ wy85|wyse85|wyse 85,
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%;,
+ 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, use=vt220+keypad,
#
# Wyse 85 with visual bell.
wy85-vb|wyse85-vb|wyse 85 with visible bell,
- bel@, flash=\E[30h\E\,\E[30l$<300>, use=wy85,
+ bel@, flash=\E[30h\E\,$<300/>\E[30l, use=wy85,
#
# Wyse 85 in 132-column mode.
wy85-w|wyse85-w|wyse 85 in 132-column mode,
cols#132, wsl#132,
- rs2=\E[35h\E[?3h$<70>, use=wy85,
+ rs2=\E[35h$<70/>\E[?3h, use=wy85,
#
# Wyse 85 in 132-column mode with visual bell.
wy85-wvb|wyse85-wvb|wyse 85 with visible bell 132-columns,
@@ -9942,22 +11980,22 @@ wy85-wvb|wyse85-wvb|wyse 85 with visible bell 132-columns,
# 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
+# Technical" isn't responding. So there's the question of whether the wy85
+# terminfo should reflect the manufacturer'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,
+ clear=\E[H\E[J$<110>, cnorm=\E[?25h, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, 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>,
+ enacs=\E)0, flash=\E[30h\E\,$<300/>\E[30l,
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,
@@ -9976,7 +12014,8 @@ wy85-8bit|wyse85-8bit|wyse 85 in 8-bit mode,
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%;,
+ 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,
@@ -9996,15 +12035,15 @@ wy185|wyse185|wyse 185,
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$<40>, cnorm=\E[34h\E[?25h, cr=^M,
+ clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=\r,
csr=\E[%i%p1%d;%p2%dr$<20>, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
cvvis=\E[?25h\E[34l, dch=\E[%p1%dP$<3>, dch1=\E[P$<3>,
dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>,
dsl=\E7\E[99;0H\E[K\E8, ech=\E[%p1%dX, ed=\E[J$<40>,
el=\E[K, el1=\E[1K, enacs=\E)0,
- flash=\E[30h\E\,\E[30l$<100>, fsl=\E[1;24r\E8,
+ flash=\E[30h\E\,$<100/>\E[30l, fsl=\E[1;24r\E8,
home=\E[H, hpa=\E[%i%p1%d`, ht=^I, hts=\EH,
ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, il1=\E[L$<3>,
ind=\n$<2>, invis=\E[8m, ip=$<4>, is1=\E[?5W,
@@ -10022,7 +12061,8 @@ wy185|wyse185|wyse 185,
rmkx=\E>, rmso=\E[27m, rmul=\E[24m,
rs1=\E[13l\E[3l\E\\\E[63;1"p\E[!p, rs2=\E[35h\E[?3l,
rs3=\E[?5l\E[47h\E[40l\E[r, 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%;,
+ 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, smcup=\E[ Q,
smir=\E[4h, smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m,
tbc=\E[3g, tsl=\E7\E[99;%i%p1%dH, vpa=\E[%i%p1%dd,
@@ -10058,14 +12098,15 @@ wy325|wyse325|Wyse epc,
cols#80, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45,
acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~,
bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<50>,
- cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ cnorm=\E`1, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<7>,
dim=\EGp, dl1=\ER$<3>, dsl=\EF\r, ed=\EY$<50>, el=\ET$<4>,
- flash=\E`8$<100/>\E`9, fsl=^M, home=^^, ht=^I, hts=\E1,
+ flash=\E`8$<100/>\E`9, fsl=\r, home=^^, ht=^I, hts=\E1,
il1=\EE$<3>, ind=\n$<3>, ip=$<2>, is1=\EcB0\EcC1,
- is2=\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El,
+ is2=\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024
+ \El,
is3=\Ew0$<16>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
- kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
+ kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
@@ -10078,7 +12119,9 @@ wy325|wyse325|Wyse epc,
rmacs=\EcD, rmam=\Ed., rmcup=\Ew0, rmir=\Er, rmln=\EA11,
rs1=\E~!\E~4$<30>, rs2=\EeF\E`\:$<70>,
rs3=\EwG\Ee($<100>,
- sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c,
+ sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}
+ %|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t
+ %{64}%|%;%?%p7%t%{1}%|%;%c,
sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/,
smcup=\Ew1, smir=\Eq, smln=\EA10, smso=\EGt, tbc=\E0,
tsl=\EF, use=adm+sgr,
@@ -10172,30 +12215,36 @@ wy370-nk|wyse 370 without function keys,
colors#64, cols#80, it#8, lines#24, ncv#48, pairs#64, wsl#80,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=^M,
+ clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A,
cvvis=\E[?25h\E[34l, dch=\E[%p1%dP$<1*>, dch1=\E[P$<1>,
dclk=\E[31h, dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>,
dsl=\E[40l, ech=\E[%p1%dX$<.1*>, ed=\E[J$<40>,
el=\E[K$<10>, el1=\E[1K$<12>, enacs=\E)0,
- flash=\E[30h\E\,\E[30l$<300>, fsl=\E[1;24r\E8,
+ flash=\E[30h\E\,$<300/>\E[30l, fsl=\E[1;24r\E8,
home=\E[H, hpa=\E[%i%p1%d`, ht=\011$<1>, hts=\EH,
ich=\E[%p1%d@$<1*>, il=\E[%p1%dL$<2*>, il1=\E[L$<2>,
ind=\n$<2>,
- initc=\E[66;%p1%d;%?%p2%{250}%<%t%{0}%e%p2%{500}%<%t%{16}%e%p2%{750}%<%t%{32}%e%{48}%;%?%p3%{250}%<%t%{0}%e%p3%{500}%<%t%{4}%e%p3%{750}%<%t%{8}%e%{12}%;%?%p4%{250}%<%t%{0}%e%p4%{500}%<%t%{1}%e%p4%{750}%<%t%{2}%e%{3}%;%{1}%+%+%+%dw,
+ initc=\E[66;%p1%d;%?%p2%{250}%<%t%{0}%e%p2%{500}%<%t%{16}%e
+ %p2%{750}%<%t%{32}%e%{48}%;%?%p3%{250}%<%t%{0}%e%p3
+ %{500}%<%t%{4}%e%p3%{750}%<%t%{8}%e%{12}%;%?%p4%{250}
+ %<%t%{0}%e%p4%{500}%<%t%{1}%e%p4%{750}%<%t%{2}%e%{3}%;
+ %{1}%+%+%+%dw,
invis=\E[8m, ip=$<1>, is1=\E[90;1"p\E[?5W$<6>,
is2=\E[2;4;20;30;40l\E[?1;10;16l\E[12h\E[?7;8;25h,
is3=\E>\017\E)0\E(B\E[63;0w\E[m, mc0=\E[0i, mc4=\E[4i,
mc5=\E[5i,
- oc=\E[60w\E[63;0w\E[66;1;4w\E[66;2;13w\E[66;3;16w\E[66;4;49w\E[66;5;51w\E[66;6;61w\E[66;7;64w,
+ oc=\E[60w\E[63;0w\E[66;1;4w\E[66;2;13w\E[66;3;16w\E[66;4;49w
+ \E[66;5;51w\E[66;6;61w\E[66;7;64w,
op=\E[m, rc=\E8, rev=\E[7m, ri=\EM$<2>, rmacs=^O,
rmam=\E[?7l, rmclk=\E[31l, rmcup=\E[ R, rmir=\E[4l,
rmkx=\E>, rmso=\E[27m, rmul=\E[24m,
rs1=\E[13l\E[3l\E!p\E[?4i, rs2=\E[35h\E[?3l$<8>,
rs3=\E[?5l, sc=\E7, setb=\E[62;%p1%dw, setf=\E[61;%p1%dw,
- 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%;,
+ 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, smcup=\E[ Q,
smir=\E[4h, smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m,
tbc=\E[3g, tsl=\E[40l\E[40h\E7\E[99;%i%p1%dH,
@@ -10246,7 +12295,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\,$<300/>\E[30l, use=wy370-w,
wy370-rv|Wyse 370 reverse video,
rs3=\E[32h\E[?5h, use=wy370,
#
@@ -10255,18 +12304,26 @@ wy370-rv|Wyse 370 reverse video,
wy99gt-tek|Wyse 99gt Tektronix 4010/4014 emulator,
am, os,
cols#74, lines#35,
- bel=^G, clear=\E^L, cr=^M, cub1=^H, cud1=^J, cuf1=\s,
- cup=\035%{3040}%{89}%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,
+ bel=^G, clear=\E^L, cr=\r, cub1=^H, cud1=\n, cuf1=\s,
+ cup=\035%{3040}%{89}%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,
cuu1=^K, ff=^L,
- hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\037,
+ hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+ \037,
home=^]7`x @\037,
- hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\037,
- is2=\E8, nel=^M^J, u0=\E~>\E8, u1=\E[42h,
+ hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+ \037,
+ is2=\E8, nel=\r\n, u0=\E~>\E8, u1=\E[42h,
#
# Wyse 160 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,
+ 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,
#
# Wyse 370 Tektronix 4010/4014 emulator,
@@ -10274,14 +12331,18 @@ wy160-tek|Wyse 160 Tektronix 4010/4014 emulator,
wy370-tek|Wyse 370 Tektronix 4010/4014 emulator,
am, os,
cols#80, lines#36,
- bel=^G, clear=\E^L, cr=^M, cub1=^H, cud1=^J, cuf1=\s,
- cup=\035%{775}%{108}%p1%*%{5}%/%-%Py%p2%{64}%*%{4}%+%{5}%/%Px%gy%{32}%/%{31}%&%{32}%+%c%gy%{31}%&%{96}%+%c%gx%{32}%/%{31}%&%{32}%+%c%gx%{31}%&%{64}%+%c\037,
+ bel=^G, clear=\E^L, cr=\r, cub1=^H, cud1=\n, cuf1=\s,
+ cup=\035%{775}%{108}%p1%*%{5}%/%-%Py%p2%{64}%*%{4}%+%{5}%/
+ %Px%gy%{32}%/%{31}%&%{32}%+%c%gy%{31}%&%{96}%+%c%gx%{32}
+ %/%{31}%&%{32}%+%c%gx%{31}%&%{64}%+%c\037,
cuu1=^K, ff=^L,
- hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\037,
+ hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+ \037,
home=^]8g @\037,
- hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\037,
- is2=\E8, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^I, kcuu1=^K,
- nel=^M^J, u0=\E[?38h\E8, u1=\E[?38l\E)0,
+ hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+ \037,
+ is2=\E8, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^I, kcuu1=^K,
+ nel=\r\n, u0=\E[?38h\E8, u1=\E[?38l\E)0,
# Vendor-supplied Wyse entries end here.
@@ -10317,9 +12378,9 @@ wy520|wyse520|wyse 520,
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$<40>, cnorm=\E[34h\E[?25h, cr=^M,
+ clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=\r,
csr=\E[%i%p1%d;%p2%dr$<20>, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
cvvis=\E[?25h\E[34l, dch=\E[%p1%dP$<3>, dch1=\E[P$<30>,
dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>, dsl=\E[0$~,
@@ -10341,7 +12402,8 @@ wy520|wyse520|wyse 520,
rmcup=\E[ R, rmir=\E[4l, rmso=\E[m, rmul=\E[24m,
rs1=\E[13l\E[3l\E\\\E[63;1"p\E[!p, rs2=\E[35h\E[?3l,
rs3=\E[?5l\E[47h\E[40l\E[r, 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%;,
+ 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,
smcup=\E[ Q\E[?67;8h, smir=\E[4h, smso=\E[7m, smul=\E[4m,
tbc=\E[3g, tsl=\E[2$~\E[1$}\E[%i%p1%d`,
@@ -10355,7 +12417,7 @@ wy520-24|wyse520-24|wyse 520 with 24 data lines,
#
# Wyse 520 with visual bell.
wy520-vb|wyse520-vb|wyse 520 with visible bell,
- flash=\E[30h\E\,\E[30l$<100>, use=wy520,
+ flash=\E[30h\E\,$<100/>\E[30l, use=wy520,
#
# Wyse 520 in 132-column mode.
wy520-w|wyse520-w|wyse 520 in 132-column mode,
@@ -10365,7 +12427,7 @@ wy520-w|wyse520-w|wyse 520 in 132-column mode,
#
# 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\,$<100/>\E[30l, use=wy520-w,
#
#
# Wyse 520 emulating a vt420 7 bit mode.
@@ -10378,7 +12440,7 @@ wy520-wvb|wyse520-wvb|wyse 520 with visible bell 132-columns,
# to CTRL-C: stty intr '^c') for it to work since the
# Delete key sends 7FH.
wy520-epc|wyse520-epc|wyse 520 with EPC keyboard,
- kdch1=\177, kel=\E[4~, kend=\E[4~, kf0=\E[21~, kf1=\E[11~,
+ kdch1=^?, kel=\E[4~, kend=\E[4~, kf0=\E[21~, kf1=\E[11~,
kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, khome=\E[H,
use=wy520,
#
@@ -10391,7 +12453,7 @@ wy520-epc-24|wyse520-pc-24|wyse 520 with 24 data lines and EPC keyboard,
#
# Wyse 520 with visual bell.
wy520-epc-vb|wyse520-pc-vb|wyse 520 with visible bell and EPC keyboard,
- flash=\E[30h\E\,\E[30l$<100>, use=wy520-epc,
+ flash=\E[30h\E\,$<100/>\E[30l, use=wy520-epc,
#
# Wyse 520 in 132-column mode.
wy520-epc-w|wyse520-epc-w|wyse 520 in 132-column mode with EPC keyboard,
@@ -10401,7 +12463,7 @@ wy520-epc-w|wyse520-epc-w|wyse 520 in 132-column mode with EPC keyboard,
#
# Wyse 520 in 132-column mode with visual bell.
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,
+ flash=\E[30h\E\,$<100/>\E[30l, use=wy520-epc-w,
#
# Wyse 520 in 80-column, 36 lines
wy520-36|wyse520-36|wyse 520 with 36 data lines,
@@ -10466,11 +12528,11 @@ wy520-48wpc|wyse520-48wpc|wyse 520 with 48 data lines and EPC keyboard,
wyse-vp|Wyse 50 in ADDS Viewpoint emulation mode with "enhance" on,
OTbs, am,
cols#80, it#8, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^F,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EW,
- dl1=\El, ed=\Ek, el=\EK, home=^A, ht=^I, il1=\EM, ind=^J,
- is2=\E`\:\E`9\017\Er, kbs=^H, kcub1=^U, kcud1=^J, kcuf1=^F,
- kcuu1=^Z, khome=^A, ll=^A^Z, nel=^M^J, rmir=\Er, rmso=^O,
+ dl1=\El, ed=\Ek, el=\EK, home=^A, ht=^I, il1=\EM, ind=\n,
+ is2=\E`\:\E`9\017\Er, kbs=^H, kcub1=^U, kcud1=\n, kcuf1=^F,
+ kcuu1=^Z, khome=^A, ll=^A^Z, nel=\r\n, rmir=\Er, rmso=^O,
rmul=^O, rs1=\E`\:\E`9\017\Er, sgr0=^O, smir=\Eq, smso=^N,
smul=^N,
@@ -10484,10 +12546,10 @@ wy75ap|wyse75ap|wy-75ap|wyse-75ap|Wyse WY-75 Applications and Cursor keypad,
wy100q|Wyse 100 for Quotron,
OTbs,
cols#80, lines#24, xmc#1,
- cbt=\EI, clear=^Z, cub1=^H, cud1=^J, cuf1=^L,
+ cbt=\EI, clear=^Z, cub1=^H, cud1=\n, 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,
+ is2=\E`\:\0\EC\EDF\E0\E'\E(\EA21, kcub1=^H, kcud1=\n,
kcuf1=^L, kcuu1=^K, ri=\Ej, rmir=\Er, smir=\Eq, use=adm+sgr,
#### Kermit terminal emulations
@@ -10506,7 +12568,7 @@ kermit|standard kermit,
clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
el=\EK, home=\EH, is2=K0 Standard Kermit 9-25-84\n,
- kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^,
+ kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^,
kermit-am|standard kermit plus auto-margin,
am,
is2=K1 Standard Kermit plus Automatic Margins\n,
@@ -10531,7 +12593,8 @@ pckermit120|UCB IBMPC Kermit 1.20,
it#8, lines#24,
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,
+ is2=\EO\Eq\EJ\EY7\sK3\sUCB\sIBMPC\sKermit\s1.20\s\s12-19-84
+ \n,
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.
@@ -10548,15 +12611,17 @@ msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
cvvis=\EO\Eq\EG\EwK4, dch1=\EN, dl1=\EM, ed=\EJ, el=\EK,
home=\EH, ht=^I, il1=\EL,
- is2=\EO\Eq\EG\Ew\EJ\EY7 K4 MS Kermit 2.27 for the IBMPC 3-17-85\n,
- kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, rc=\Ek,
+ is2=\EO\Eq\EG\Ew\EJ\EY7\sK4\sMS\sKermit\s2.27\sfor\sthe
+ \sIBMPC\s3-17-85\n,
+ kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^, rc=\Ek,
rmir=\EO, rmso=\Eq, sc=\Ej, smir=\E@, smso=\Ep,
# MS-DOS Kermit 2.27 with automatic margins
# From: greg small <gts@populi.berkeley.edu> 3-17-85
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,
+ is2=\EO\Eq\EG\Ev\EJ\EY7\sK5\sMS\sKermit\s2.27\s+automatic
+ \smargins\s3-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.
@@ -10566,7 +12631,8 @@ msk227am|mskermit227am|UCB MS-DOS Kermit 2.27 with automatic margins,
msk22714|mskermit22714|UCB MS-DOS Kermit 2.27 UCB 227.14 IBM PC,
am,
bold=\E[1m, cvvis=\EO\Eq\EG\EvK6,
- is2=\EO\Eq\EG\Ev\EJ\EY7 K6 MS Kermit 2.27 UCB 227.14 IBM PC 3-17-85\n,
+ is2=\EO\Eq\EG\Ev\EJ\EY7\sK6\sMS\sKermit\s2.27\sUCB\s227.14
+ \sIBM\sPC\s3-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,
@@ -10579,23 +12645,25 @@ vt320-k3|MS-Kermit 3.00's vt320 emulation,
cols#80, it#8, lines#49, pb#9600, vt#3,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[J, cmdch=\E, cnorm=\E[?25h, cr=^M,
+ clear=\E[H\E[J, cmdch=\E, cnorm=\E[?25h, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
dsl=\E[0$~, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
- flash=\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l,
+ flash=\E[?5h$<100/>\E[?5l\E[?5h$<100/>\E[?5l\E[?5h$<100/>\E[
+ ?5l,
fsl=\E[0$}, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
- ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+ ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n,
is2=\E>\E F\E[?1h\E[?7h\E[r\E[2$~, kbs=^H, kcub1=\EOD,
kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdl1=\E[3~, kf0=\E[21~,
kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kich1=\E[2~, knp=\E[6~,
- kpp=\E[5~, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, nel=^M^J, rc=\E8,
+ kpp=\E[5~, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, nel=\r\n, 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\E[4i\E[?4i\E[m\E[r\E[2$~,
+ rs1=\E(B\E)B\E>\E\sF\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,
@@ -10607,19 +12675,20 @@ vt320-k311|dec vt320 series as defined by kermit 3.11,
cols#80, it#8, lines#24, vt#3,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[;H\E[2J, cnorm=\E[?25h, cr=^M,
+ clear=\E[;H\E[2J, cnorm=\E[?25h, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J, el=\E[K,
- flash=\E[?5h\E[?5l, fsl=\E[$}, home=\E[H, ht=^I, hts=\EH,
- ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L$<3/>, ind=\ED,
+ flash=\E[?5h$<100/>\E[?5l, fsl=\E[$}, home=\E[H, ht=^I,
+ hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L$<3/>,
+ ind=\ED,
is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2,
- lf3=pf3, lf4=pf4, nel=^M\ED, rc=\E8, rev=\E[7m,
+ lf3=pf3, lf4=pf4, nel=\r\ED, rc=\E8, rev=\E[7m,
rf=/usr/share/tabset/vt100, ri=\EM, rmacs=^O,
rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
rmul=\E[24m, rs1=\E[?3l, sc=\E7, sgr0=\E[m, smacs=^N,
@@ -10634,7 +12703,7 @@ vt320-k311|dec vt320 series as defined by kermit 3.11,
# These entries attempt to describe Avatar, a terminal emulation used with
# MS-DOS bulletin-board systems. It was designed to give ANSI-like
# capabilities, but with cheaper (shorter) control sequences. Messy design,
-# excessively dependent on PC idiosyncracies, but apparently rather popular
+# excessively dependent on PC idiosyncrasies, but apparently rather popular
# in the BBS world.
#
# No color support. Avatar doesn't fit either of the Tektronix or HP color
@@ -10666,7 +12735,7 @@ vt320-k311|dec vt320 series as defined by kermit 3.11,
# (^V^L and ^V^M set the current attribute as a side-effect.)
# ^V ^Y <a> [...] <c> -- repeat pattern. <a> specifies the number of bytes
# in the pattern, <c> the number of times the pattern
-# should be repeated. If either value is 0, no-op.
+# should be repeated. If either value is 0, no-op.
# The pattern can contain Avatar console codes,
# including other ^V ^Y patterns.
# level 1:
@@ -10676,7 +12745,7 @@ vt320-k311|dec vt320 series as defined by kermit 3.11,
# ^V^Q%c -- query the driver
# ^V^R -- driver reset
# ^V^S -- Sound tone (PC-specific)
-# ^V^T -- change highlight at current cursor poition to %c
+# ^V^T -- change highlight at current cursor position to %c
# ^V^U%p1%c%p2%c -- highlight window <a> with attribute <b>
# ^V^V%p1%c%p2%c%p3%c%p4%c%p5%c
# -- define window
@@ -10692,11 +12761,13 @@ vt320-k311|dec vt320 series as defined by kermit 3.11,
avatar0|avatar terminal emulator level 0,
am, bce, msgr,
cols#80, it#8, lines#25,
- blink=^V^B, bold=^V^A^P, cr=^M, cub1=^V^E, cud1=^V^D,
+ blink=^V^B, bold=^V^A^P, cr=\r, cub1=^V^E, cud1=^V^D,
cuf1=^V^F, cup=\026\010%p1%c%p2%c, cuu1=^V^C, el=^V^G,
- ind=^J, invis=^V^A\0, rep=\031%p1%c%p2%c, rev=^V^Ap,
+ ind=\n, invis=^V^A\0, rep=\031%p1%c%p2%c, rev=^V^Ap,
rmacs@, rs2=^L,
- sgr=%?%p1%p2%|%p3%|%p6%|%p7%|%t\026\001%?%p7%t%{128}%e%{0}%?%p1%t%{112}%|%;%?%p2%t%{1}%|%;%?%p3%t%{112}%|%;%?%p6%t%{16}%|%;%;%c%;%?%p4%t\026\002%;,
+ sgr=%?%p1%p2%|%p3%|%p6%|%p7%|%t\026\001%?%p7%t%{128}%e%{0}%?
+ %p1%t%{112}%|%;%?%p2%t%{1}%|%;%?%p3%t%{112}%|%;%?%p6%t
+ %{16}%|%;%;%c%;%?%p4%t\026\002%;,
sgr0=^V^A^G, smacs@, smso=^V^Ap, smul=^V^A^A,
use=klone+acs,
# From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995
@@ -10717,27 +12788,27 @@ rbcomm|IBM PC with RBcomm and EMACS keybindings,
am, bw, mir, msgr, xenl,
cols#80, it#8, lines#25,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=^L, cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+ clear=^L, cnorm=\E[?25h, cr=\r, csr=\E[%i%p1%d;%p2%dr,
cub1=^H, cud1=^C, cuf1=^B,
cup=\037%p2%{32}%+%c%p1%{32}%+%c, cuu1=^^, dch1=^W,
dl=\E[%p1%dM, dl1=^Z, ech=\E[%p1%dX, ed=^F5, el=^P^P, ht=^I,
il=\E[%p1%dL, il1=^K, ind=\ED, invis=\E[8m,
is2=\017\035\E(B\E)0\E[?7h\E[?3l\E[>8g, kbs=^H,
- kcub1=^B, kcud1=^N, kcuf1=^F, kcuu1=^P, khome=^A, nel=^M\ED,
+ kcub1=^B, kcud1=^N, kcuf1=^F, kcuu1=^P, khome=^A, nel=\r\ED,
rc=\E8, rep=\030%p1%c%p2%c, rev=^R, ri=\EM, rmcup=, rmdc=,
rmir=^], rmkx=\E>, rmso=^U, rmul=^U,
rs1=\017\E(B\E)0\025\E[?3l\E[>8g, sc=\E7, sgr0=\E[m,
smcup=, smdc=, smir=^\, smkx=\E=, smso=^R, smul=^T,
rbcomm-nam|IBM PC with RBcomm without autowrap,
am@,
- bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J,
+ bel=^G, cr=\r, cud1=\n, ht=^I, ind=\n,
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=\n, nel=\r\n, use=rbcomm,
rbcomm-w|IBM PC with RBcomm in 132 column mode,
cols#132,
- bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J,
+ bel=^G, cr=\r, cud1=\n, ht=^I, ind=\n,
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=\n, nel=\r\n, use=rbcomm,
######## LCD DISPLAYS
#
@@ -10767,7 +12838,7 @@ rbcomm-w|IBM PC with RBcomm in 132 column mode,
# NOTE: calling 'flash' turns it on and back off (visual bell)
#
MtxOrb|Generic Matrix Orbital LCD display,
- bel=\376B^A, clear=\376X\376C\376R\376K\376T,
+ bel=\376B\001, clear=\376X\376C\376R\376K\376T,
cnorm=\376K\376T, cub1=\376L, cuf1=\376M,
flash=\376B\001$<200>\376F, home=\376H,
MtxOrb204|20x4 Matrix Orbital LCD display,
@@ -10796,12 +12867,12 @@ MtxOrb162|16x2 Matrix Orbital LCD display,
att2300|sv80|AT&T 2300 Video Information Terminal 80 column mode,
am, eo, mir, msgr, xon,
cols#80, it#8, lines#24,
- bel=^G, 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,
+ bel=^G, clear=\E[H\E[J, cr=\r, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcbt=\E[Z, kclr=\E[J,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, kcbt=\E[Z, kclr=\E[J,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
kdl1=\E[M, kf1=\E[1r, kf10=\E[10r, kf11=\E[11r,
kf12=\E[12r, kf13=\E[13r, kf14=\E[14r, kf15=\E[15r,
@@ -10817,8 +12888,8 @@ att2350|AT&T 2350 Video Information Terminal 80 column mode,
# Seems upward compatible with vt100, plus ins/del line/char.
# On sgr, the protection parameter is ignored.
# No check is made to make sure that only 3 parameters are output.
-# standout= reverse + half-intensity = 3 | 5.
-# bold= reverse + underline = 2 | 3.
+# standout= reverse + half-intensity = 3 | 5.
+# bold= reverse + underline = 2 | 3.
# note that half-bright blinking doesn't look different from normal blinking.
# NOTE:you must program the function keys first, label second!
# (att4410: a BSD entry has been seen with the following capabilities:
@@ -10827,22 +12898,31 @@ att2350|AT&T 2350 Video Information Terminal 80 column mode,
att5410v1|att4410v1|tty5410v1|AT&T 4410/5410 80 columns - version 1,
am, hs, mir, msgr, xon,
cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
- acsc=++\,\,--..00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m, bold=\E[2;7m, clear=\E[H\E[J, cr=^M,
+ acsc=++\,\,--..00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyz
+ z{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[2;7m, clear=\E[H\E[J, cr=\r,
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, dim=\E[2m,
dl1=\E[M, ed=\E[J, el=\E[K, fsl=\E8, home=\E[H, ht=^I,
- ich1=\E[@, il1=\E[L, ind=^J, invis=\E[8m, is1=\E[?3l\E)0,
- is3=\E[1;03q f1 \EOP\E[2;03q f2 \EOQ\E[3;03q f3 \EOR\E[4;03q f4 \EOS\E[5;03q f5 \EOT\E[6;03q f6 \EOU\E[7;03q f7 \EOV\E[8;03q f8 \EOW,
+ ich1=\E[@, il1=\E[L, ind=\n, invis=\E[8m, is1=\E[?3l\E)0,
+ is3=\E[1;03q\s\s\sf1\s\s\s\s\s\s\s\s\s\s\s\EOP\E[2;03q\s\s
+ \sf2\s\s\s\s\s\s\s\s\s\s\s\EOQ\E[3;03q\s\s\sf3\s\s\s\s
+ \s\s\s\s\s\s\s\EOR\E[4;03q\s\s\sf4\s\s\s\s\s\s\s\s\s\s
+ \s\EOS\E[5;03q\s\s\sf5\s\s\s\s\s\s\s\s\s\s\s\EOT\E[6;03q
+ \s\s\sf6\s\s\s\s\s\s\s\s\s\s\s\EOU\E[7;03q\s\s\sf7\s\s
+ \s\s\s\s\s\s\s\s\s\EOV\E[8;03q\s\s\sf8\s\s\s\s\s\s\s\s
+ \s\s\s\EOW,
kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT,
kf6=\EOU, kf7=\EOV, kf8=\EOW, khome=\E[H, kll=\E[24;1H,
- ll=\E[24H, nel=^M^J,
- pfx=\E[%p1%1d;%p2%l%2.2dq f%p1%1d %p2%s,
+ ll=\E[24H, nel=\r\n,
+ pfx=\E[%p1%1d;%p2%l%2.2dq\s\s\sf%p1%1d\s\s\s\s\s\s\s\s\s\s
+ \s%p2%s,
pln=\E[%p1%d;00q%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM,
rmacs=^O, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y,
sc=\E7,
- sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
+ %|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smso=\E[7m, smul=\E[4m,
tsl=\E7\E[25;%p1%{1}%+%dH,
@@ -10866,17 +12946,18 @@ v5410|att5410 in terms of a vt100,
cols#80, it#8, lines#24, vt#3,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
- clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
- cub1=^H, cud1=^J, cuf1=\E[C$<2>,
+ clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub1=^H, cud1=\n, cuf1=\E[C$<2>,
cup=\E[%i%p1%d;%p2%dH$<5>, cuu1=\E[A$<2>, dch1=\E[P,
dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ich1=\E[@,
- il1=\E[L, ind=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+ il1=\E[L, ind=\n, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
kcuu1=\EOA, rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O,
rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m$<2>,
rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
+ %;m%?%p9%t\016%e\017%;$<2>,
sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
use=vt100+fnkeys,
@@ -10928,7 +13009,8 @@ att4415|tty5420|att5420|AT&T 4415/5420 80 cols,
flash=\E[?5h$<200>\E[?5l, home=\E[x,
hpa=\E[%p1%{1}%+%dG, hts=\EH, ich=\E[%p1%d@, ich1@,
il=\E[%p1%dL, indn=\E[%p1%dE, is1=\E[?3l$<100>,
- is2=\E[m\017\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h\E[4i\Ex\E[21;1j\212,
+ is2=\E[m\017\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h
+ \E[4i\Ex\E[21;1j\212,
is3=\E[?5l, kbeg=\Et, kcbt=\E[Z, kdch1=\E[P, kdl1=\E[M,
kel=\E[2K, kend=\Ez, kent=\Eent, kf1=\EOc, kf2=\EOd,
kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj,
@@ -10940,7 +13022,8 @@ att4415|tty5420|att5420|AT&T 4415/5420 80 cols,
pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV,
rin=\E[%p1%dF, rmam=\E[?7l, rmir=\E[4l,
rmkx=\E[19;0j\E[21;1j\212, rmln=\E|,
- sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
+ %|%p6%|%t;7%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smam=\E[?7h, smir=\E[4h,
smkx=\E[19;1j\E[21;4j\Eent, smln=\E~, tbc=\E[3g,
tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd,
@@ -10963,7 +13046,8 @@ att4415-w-rv|tty5420-w-rv|att5420-w-rv|AT&T 4415/5420 132 cols/rv,
# user pf keys to make them appear!
att4415+nl|tty5420+nl|att5420+nl|generic AT&T 4415/5420 changes for not changing labels,
kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@,
- pfx=\E[%p1%d;%p2%l%02d;0;1q F%p1%d %p2%s,
+ pfx=\E[%p1%d;%p2%l%02d;0;1q\s\s\sF%p1%d\s\s\s\s\s\s\s\s\s\s
+ \s%p2%s,
pln=\E[%p1%d;0;0;1q%p2%:-16.16s,
att4415-nl|tty5420-nl|att5420-nl|AT&T 4415/5420 without changing labels,
@@ -10994,41 +13078,47 @@ att5420_2|AT&T 5420 model 2 80 cols,
dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%ds\E[%p1%dD, ed=\E[0J,
el=\E[0K, el1=\E[1K, flash=\E[?5h$<200>\E[?5l, fsl=\E8,
home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH,
- ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+ ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
indn=\E[%p1%dE, invis=\E[8m,
- is1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;0j\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,
+ is1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;0j\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,
kbeg=\Et, kbs=^H, kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D,
kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M,
- kel=\E[2K, kend=\Ez, kent=^J, kf1=\EOc, kf2=\EOd, kf3=\EOe,
+ kel=\E[2K, kend=\Ez, kent=\n, kf1=\EOc, kf2=\EOd, kf3=\EOe,
kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, khome=\E[H,
kich1=\E[4h, kil1=\E[L, kind=\E[T, kll=\Eu, knp=\E[U,
kpp=\E[V, kri=\E[S, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5,
lf6=F6, lf7=F7, lf8=F8, ll=\Ew, mc0=\E[?;2i, mc4=\E[4i,
- mc5=\E[5i, mrcup=\E[%i%p1%d;%p2%dt, nel=^M^J,
- pfx=\E[%p1%d;%p2%l%02dq F%p1%d %p2%s\E~,
+ mc5=\E[5i, mrcup=\E[%i%p1%d;%p2%dt, nel=\r\n,
+ pfx=\E[%p1%d;%p2%l%02dq\s\s\sF%p1%d\s\s\s\s\s\s\s\s\s\s\s%p2
+ %s\E~,
pln=\E[%p1%d;0;0;0q%p2%:-16.16s\E~, prot=\EV, rc=\E8,
rev=\E[7m, ri=\EM, rin=\E[%p1%dF, rmacs=^O, rmkx=\E[19;0j,
rmln=\E|, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y,
sc=\E7,
- sgr=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1
+ %|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;%?%p8%t\EV%;,
sgr0=\E[m\017, smacs=^N, smkx=\E[19;1j, smln=\E~,
smso=\E[7m, smul=\E[4m, tbc=\E[3g,
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,
+ 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,
cols#80, lines#24,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m, clear=\E[H\E[2J, cr=^M, cub=\E[%p1%dD,
+ bel=^G, blink=\E[5m, clear=\E[H\E[2J, cr=\r, 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, dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m,
dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[0K, home=\E[H,
- ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=^J,
+ ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=\n,
is1=\E[?3l, is2=\E)0\E?6l\E?5l, kclr=\E[%%, kcub1=\E@,
kcud1=\EU, kcuf1=\EA, kcuu1=\ES, kent=\E[, kf1=\E[h,
kf10=\E[m, kf11=\E[n, kf12=\E[o, kf13=\E[H, kf14=\E[I,
@@ -11057,14 +13147,14 @@ att4420|tty4420|teletype 4420,
# asynchronous keyboard-display terminal. It supports
# the vi editor. The terminal must be set up as follows,
#
-# HIGHLIGHT DEFINITION 3-TONE
-# DISPLAY FUNCTION GROUP III
+# HIGHLIGHT DEFINITION 3-TONE
+# DISPLAY FUNCTION GROUP III
#
# The second entry below provides limited (a la adm3a)
# operation under GROUP II.
#
# This must be used with DISPLAY FUNCTION GROUP I or III
-# and HIGHLIGHT DEFINITION 3-TONE
+# and HIGHLIGHT DEFINITION 3-TONE
# The terminal has either bold or blink, depending on options
#
# (att4424: commented out <smcup>=\E[1m, we don't need bright locked on -- esr)
@@ -11072,18 +13162,19 @@ att4424|tty4424|teletype 4424,
OTbs, am, xon,
cols#80, lines#24,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E3, bold=\E3, cbt=\EO, clear=\E[H\E[2J, cr=^M,
+ bel=^G, blink=\E3, bold=\E3, cbt=\EO, clear=\E[H\E[2J, cr=\r,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
cud=\E[%p1%dB, cud1=\EB, cuf=\E[%p1%dC, cuf1=\EC,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EA,
dch=\E[%p1%dP, dch1=\EP, dim=\EW, dl=\E[%p1%dM, dl1=\EM,
ed=\EJ, el=\Ez, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
- ich1=\E\^, il=\E[%p1%dL, il1=\EL, ind=^J, is2=\E[20l\E[?7h,
+ ich1=\E\^, il=\E[%p1%dL, il1=\EL, ind=\n, is2=\E[20l\E[?7h,
kbs=^H, kclr=\EJ, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
khome=\E[H, nel=\EE, rev=\E}, ri=\ET, rmacs=\E(B, rmso=\E~,
rmul=\EZ,
- sgr=\E[%?%p1%t7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p6%p4%|%t;5%;%?%p5%t;0%;m,
+ sgr=\EX\E~\EZ\E4\E(B%?%p1%p3%|%t\E}%;%?%p2%t\E\\%;%?%p4%p6%|
+ %t\E3%;%?%p5%t\EW%;%?%p9%t\E(0%;,
sgr0=\EX\E~\EZ\E4\E(B, smacs=\E(0, smso=\E}, smul=\E\\,
tbc=\EF,
@@ -11100,12 +13191,12 @@ att4424-1|tty4424-1|teletype 4424 in display function group I,
att4424m|tty4424m|teletype 4424M,
am, da, db, mir,
cols#80, it#8, lines#23,
- bel=^G, clear=\E[2;H\E[J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+ bel=^G, clear=\E[2;H\E[J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
cup=\E[%i%p1%2d;%p2%2dH\E[B, cuu1=\E[A, dch1=\EP,
- dl1=\EM, el=\E[K, ht=^I, ich1=\E\^, il1=\EL, ind=^J, ip=$<2/>,
+ dl1=\EM, el=\E[K, ht=^I, ich1=\E\^, il1=\EL, ind=\n, ip=$<2/>,
is2=\E[m\E[2;24r, kbs=^H, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
- kf4=\EOS, khome=\E[H, nel=^M^J, ri=\ET, rmso=\E[m, rmul=\E[m,
+ kf4=\EOS, khome=\E[H, nel=\r\n, ri=\ET, rmso=\E[m, rmul=\E[m,
sgr0=\E[m, smso=\E[7m, smul=\E[4m,
# The Teletype 5425 is really version 2 of the Teletype 5420. It
@@ -11122,31 +13213,33 @@ att5425|tty5425|att4425|AT&T 4425/5425,
cols#80, it#8, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
- clear=\E[H\E[J, cnorm=\E[12;0j, cr=^M,
+ clear=\E[H\E[J, cnorm=\E[12;0j, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
cvvis=\E[12;1j, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%ds\E[%p1%dD, ed=\E[J,
el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H,
hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dE,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, indn=\E[%p1%dE,
invis=\E[8m, is1=\E<\E[?3l$<100>,
- is2=\E[m\017\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h\E[4i\Ex\E[25;1j\212,
+ is2=\E[m\017\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h
+ \E[4i\Ex\E[25;1j\212,
is3=\E[?5l, kbeg=\Et, kbs=^H, kcbt=\E[Z, kclr=\E[J,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
kdl1=\E[M, kel=\E[2K, kend=\Ez, kent=\Eent, kf1=\EOc,
kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi,
kf8=\EOj, khome=\E[H, kich1=\E[4h, kil1=\E[L, kind=\E[T,
kri=\E[S, ll=\E[24H, mc0=\E[?2i, mc4=\E[?9i, mc5=\E[?4i,
- nel=^M^J,
+ nel=\r\n,
pfx=\E[%p1%d;%p2%l%02dq F%p1%1d %p2%s,
pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV, rc=\E8,
rev=\E[7m, ri=\EM, rin=\E[%p1%dF, rmacs=^O, rmam=\E[?7l,
rmir=\E[4l, rmkx=\E[21;0j\E[25;1j\212, rmln=\E|,
rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, sc=\E7,
- sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6
+ %|%t;7%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
smkx=\E[21;1j\E[25;4j\Eent\E~, smln=\E~, smso=\E[7m,
smul=\E[4m, tbc=\E[3g, tsl=\E7\E[25;%p1%{8}%+%dH,
@@ -11166,21 +13259,20 @@ att4426|tty4426|teletype 4426S,
cols#80, lines#24, lm#48,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, bold=\E[5m, clear=\E[H\E[2J\E[1U\E[H\E[2J\E[1V,
- cr=^M, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
+ cr=\r, 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, dch=\E[%p1%dP, dch1=\EP,
dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[0K, home=\E[H,
hpa=\E[%p1%dG, ht=^I, hts=\E1, ich=\E[%p1%d@, ich1=\E\^,
- il=\E[%p1%dL, il1=\EL, ind=^J, indn=\E[%p1%dS,
- is1=\Ec\E[?7h, is2=\E[m\E[1;24r, kbs=^H, kcbt=\EO,
- kclr=\E[2J, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
- kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU,
- kf7=\EOV, kf8=\EOW, khome=\E[H, kll=\E[24;1H, ll=\E[24H,
- nel=^M^J, rc=\E8, rev=\E[7m, ri=\ET, rin=\E[%p1%dT,
- rmacs=\E(B, rmam=\E[?7l, rmso=\E[m, rmul=\E[m,
- rs2=\Ec\E[?3l\E[2;0y, sc=\E7, sgr0=\E[m\E(B, smacs=\E(0,
- smam=\E[?7h, smso=\E[5m, smul=\E[4m, tbc=\E[3g,
- vpa=\E[%p1%dd,
+ il=\E[%p1%dL, il1=\EL, ind=\n, is1=\Ec\E[?7h,
+ is2=\E[m\E[1;24r, kbs=^H, kcbt=\EO, kclr=\E[2J, kcub1=\ED,
+ kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\EOP, kf2=\EOQ,
+ kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
+ khome=\E[H, kll=\E[24;1H, ll=\E[24H, nel=\r\n, rc=\E8,
+ rev=\E[7m, ri=\ET, rmacs=\E(B, rmam=\E[?7l, rmso=\E[m,
+ rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, sc=\E7, sgr0=\E[m\E(B,
+ smacs=\E(0, smam=\E[?7h, smso=\E[5m, smul=\E[4m, tbc=\E[3g,
+ vpa=\E[%p1%dd, use=ecma+index,
# Terminfo entry for the AT&T 510 A Personal Terminal
# Function keys 9 - 16 are available only after the
@@ -11195,13 +13287,13 @@ att510a|bct510a|AT&T 510A Personal Terminal,
cols#80, lh#2, lines#24, lw#7, nlab#8,
acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
- civis=\E[11;0|, clear=\E[H\E[J, cnorm=\E[11;3|, cr=^M,
+ civis=\E[11;0|, clear=\E[H\E[J, cnorm=\E[11;3|, cr=\r,
cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[11;2|, dch=\E[%p1%dP,
dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J,
el=\E[0K, el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H, ht=^I,
- hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, is1=\E(B\E)1\E[2l,
+ hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\n, is1=\E(B\E)1\E[2l,
is3=\E[21;1|\212, kLFT=\E[u, kRIT=\E[v, kbs=^H, kcbt=\E[Z,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOm,
kf10=\EOd, kf11=\EOe, kf12=\EOf, kf13=\EOg, kf14=\EOh,
@@ -11210,7 +13302,8 @@ att510a|bct510a|AT&T 510A Personal Terminal,
mc0=\E[0i, mc4=\E[?8i, mc5=\E[?4i, nel=\EE,
pln=\E[%p1%dp%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM,
rmacs=^O, rmkx=\E[19;0|, rmso=\E[m, rmul=\E[m, sc=\E7,
- sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;m%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6
+ %|%t;7%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smkx=\E[19;1|, smso=\E[7m,
smul=\E[4m, tbc=\E[3g,
@@ -11228,30 +13321,30 @@ att510d|bct510d|AT&T 510D Personal Terminal,
cols#80, lh#2, lines#24, lm#48, lw#7, nlab#8,
acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
- clear=\E[H\E[J, cnorm=\E[11;3|, cr=^M, cub=\E[%p1%dD,
+ clear=\E[H\E[J, cnorm=\E[11;3|, cr=\r, cub=\E[%p1%dD,
cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
cuu1=\E[A, cvvis=\E[11;2|, dch=\E[%p1%dP, dch1=\E[P,
dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[0K,
el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H,
hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS,
- invis=\E[8m, is1=\E(B\E)1\E[5;0|, is3=\E[21;1|\212,
- kLFT=\E[u, kRIT=\E[v, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOm, kf10=\EOd,
- kf11=\EOe, kf12=\EOf, kf13=\EOg, kf14=\EOh, kf15=\EOi,
- kf16=\EOj, kf2=\EOV, kf3=\EOu, kf4=\ENj, kf5=\ENe, kf6=\ENf,
- kf7=\ENh, kf8=\E[H, kf9=\EOc, kind=\E[S, kri=\E[T, ll=\E#2,
- mc0=\E[0i, mc4=\E[?8i, mc5=\E[?4i, mgc=\E\:, nel=\EE,
- pln=\E[%p1%dp%p2%:-16s, rc=\E8,
- rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM,
- rin=\E[%p1%dT, rmacs=^O, rmir=\E[4l, rmkx=\E[19;0|,
- rmln=\E<, rmso=\E[m, rmul=\E[m, rmxon=\E[29;1|,
- rs2=\E[5;0|, sc=\E7,
- sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m,
+ is1=\E(B\E)1\E[5;0|, is3=\E[21;1|\212, kLFT=\E[u,
+ kRIT=\E[v, kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
+ kcuf1=\E[C, kcuu1=\E[A, kf1=\EOm, kf10=\EOd, kf11=\EOe,
+ kf12=\EOf, kf13=\EOg, kf14=\EOh, kf15=\EOi, kf16=\EOj,
+ kf2=\EOV, kf3=\EOu, kf4=\ENj, kf5=\ENe, kf6=\ENf, kf7=\ENh,
+ kf8=\E[H, kf9=\EOc, kind=\E[S, kri=\E[T, ll=\E#2, mc0=\E[0i,
+ mc4=\E[?8i, mc5=\E[?4i, mgc=\E\:, nel=\EE,
+ pln=\E[%p1%dp%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM,
+ rmacs=^O, rmir=\E[4l, rmkx=\E[19;0|, rmln=\E<, rmso=\E[m,
+ rmul=\E[m, rmxon=\E[29;1|, rs2=\E[5;0|, sc=\E7,
+ sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6
+ %|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smgl=\E4, smgr=\E5, smir=\E[4h,
smkx=\E[19;1|, smln=\E?, smso=\E[7m, smul=\E[4m,
smxon=\E[29;0|, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd,
+ use=ansi+rep, use=ecma+index,
# (att500: I merged this with the att513 entry, att500 just used att513 -- esr)
att500|att513|AT&T 513 using page mode,
@@ -11259,14 +13352,14 @@ att500|att513|AT&T 513 using page mode,
cols#80, lh#2, lines#24, lw#8, nlab#8,
acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
- clear=\E[H\E[J, cnorm=\E[11;0|, cr=^M,
+ clear=\E[H\E[J, cnorm=\E[11;0|, cr=\r,
csr=%i\E[%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
cvvis=\E[11;1|, dch=\E[%p1%dP, dch1=\E[P$<1>, dim=\E[2m,
dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
enacs=\E(B\E)1, home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I,
- hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+ hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n,
indn=\E[%p1%dE, invis=\E[8m,
is1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l,
kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON,
@@ -11287,20 +13380,23 @@ att500|att513|AT&T 513 using page mode,
ksav=\EOo, kslt=\ENI, kspd=\EOp, kund=\EOs, ll=\E#2,
mc0=\E[?98l\E[0i, mc4=\E[?98l\E[?8i, mc5=\E[?98l\E[?4i,
nel=\EE,
- pfkey=\E[%p1%d;%p2%l%d;3;0p F%p1%d %p2%s,
- pfloc=\E[%p1%d;%p2%l%d;2;0p F%p1%d %p2%s,
+ pfkey=\E[%p1%d;%p2%l%d;3;0p\s\s\sF%p1%d\s\s\s\s\s\s\s\s\s\s
+ \s%p2%s,
+ pfloc=\E[%p1%d;%p2%l%d;2;0p\s\s\sF%p1%d\s\s\s\s\s\s\s\s\s\s
+ \s%p2%s,
pfx=\E[%p1%d;%p2%l%d;1;0p F%p1%d %p2%s,
- pln=\E[%p1%dp%p2%:-16s, rc=\E8,
- rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM,
+ pln=\E[%p1%dp%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM,
rin=\E[%p1%dF, rmacs=^O, rmir=\E[4l,
rmkx=\E[19;0|\E[21;1|\212, rmln=\E<, rmso=\E[m,
rmul=\E[m,
- rs1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l\E[2;0|\E[6;1|\E[8;0|\E[19;0|\E[1{\E[?99l,
+ rs1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l\E[2;0|
+ \E[6;1|\E[8;0|\E[19;0|\E[1{\E[?99l,
rs2=\E[5;0|, sc=\E7,
- sgr=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
+ %|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smir=\E[4h,
smkx=\E[19;1|\E[21;4|\Eent, smln=\E?, smso=\E[7m,
- smul=\E[4m, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd,
+ smul=\E[4m, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, use=ansi+rep,
# 01-07-88
# printer must be set to EMUL ANSI to accept ESC codes
@@ -11311,16 +13407,31 @@ att500|att513|AT&T 513 using page mode,
# The <u0> capability sets form length
att5310|att5320|AT&T Model 53210 or 5320 matrix printer,
xhpa, xvpa,
- bufsz#8192, cols#132, cps#120, it#8, lines#66, orc#10,
+ bufsz#0x2000, cols#132, cps#120, it#8, lines#66, orc#10,
orhi#100, orl#12, orvi#72,
- cpi=%?%p1%{10}%=%t\E[w%e%p1%{12}%=%t\E[2w%e%p1%{5}%=%t\E[5w%e%p1%{13}%=%p1%{14}%=%O%t\E[3w%e%p1%{16}%=%p1%{17}%=%O%t\E[4w%e%p1%{6}%=%t\E[6w%e%p1%{7}%=%t\E[7w%e%p1%{8}%=%t\E[8w%;,
- cr=^M,
- csnm=%?%p1%{0}%=%tusascii%e%p1%{1}%=%tenglish%e%p1%{2}%=%tfinnish%e%p1%{3}%=%tjapanese%e%p1%{4}%=%tnorwegian%e%p1%{5}%=%tswedish%e%p1%{6}%=%tgermanic%e%p1%{7}%=%tfrench%e%p1%{8}%=%tcanadian_french%e%p1%{9}%=%titalian%e%p1%{10}%=%tspanish%e%p1%{11}%=%tline%e%p1%{12}%=%tsecurity%e%p1%{13}%=%tebcdic%e%p1%{14}%=%tapl%e%p1%{15}%=%tmosaic%;,
- cud=\E[%p1%de, cud1=^J, cuf=\E[%p1%da, cuf1=\s, cuu1=\EM,
+ cpi=%?%p1%{10}%=%t\E[w%e%p1%{12}%=%t\E[2w%e%p1%{5}%=%t\E[5w
+ %e%p1%{13}%=%p1%{14}%=%O%t\E[3w%e%p1%{16}%=%p1%{17}%=%O
+ %t\E[4w%e%p1%{6}%=%t\E[6w%e%p1%{7}%=%t\E[7w%e%p1%{8}%=%t
+ \E[8w%;,
+ cr=\r,
+ csnm=%?%p1%{0}%=%tusascii%e%p1%{1}%=%tenglish%e%p1%{2}%=%tfi
+ nnish%e%p1%{3}%=%tjapanese%e%p1%{4}%=%tnorwegian%e%p1
+ %{5}%=%tswedish%e%p1%{6}%=%tgermanic%e%p1%{7}%=%tfrench
+ %e%p1%{8}%=%tcanadian_french%e%p1%{9}%=%titalian%e%p1
+ %{10}%=%tspanish%e%p1%{11}%=%tline%e%p1%{12}%=%tsecurit
+ y%e%p1%{13}%=%tebcdic%e%p1%{14}%=%tapl%e%p1%{15}%=%tmos
+ aic%;,
+ cud=\E[%p1%de, cud1=\n, cuf=\E[%p1%da, cuf1=\s, cuu1=\EM,
ff=^L, hpa=\E[%p1%d`, ht=^I, is1=\Ec, is2=\E[20l\r,
- lpi=%?%p1%{2}%=%t\E[4z%e%p1%{3}%=%t\E[5z%e%p1%{4}%=%t\E[6z%e%p1%{6}%=%t\E[z%e%p1%{8}%=%t\E[2z%e%p1%{12}%=%t\E[3z%;,
+ lpi=%?%p1%{2}%=%t\E[4z%e%p1%{3}%=%t\E[5z%e%p1%{4}%=%t\E[6z%e
+ %p1%{6}%=%t\E[z%e%p1%{8}%=%t\E[2z%e%p1%{12}%=%t\E[3z%;,
rshm=\E[m,
- scs=%?%p1%{0}%=%t\E(B%e%p1%{1}%=%t\E(A%e%p1%{2}%=%t\E(C%e%p1%{3}%=%t\E(D%e%p1%{4}%=%t\E(E%e%p1%{5}%=%t\E(H%e%p1%{6}%=%t\E(K%e%p1%{7}%=%t\E(R%e%p1%{8}%=%t\E(Q%e%p1%{9}%=%t\E(Y%e%p1%{10}%=%t\E(Z%e%p1%{11}%=%t\E(0%e%p1%{12}%=%t\E(1%e%p1%{13}%=%t\E(3%e%p1%{14}%=%t\E(8%e%p1%{15}%=%t\E(}%;,
+ scs=%?%p1%{0}%=%t\E(B%e%p1%{1}%=%t\E(A%e%p1%{2}%=%t\E(C%e%p1
+ %{3}%=%t\E(D%e%p1%{4}%=%t\E(E%e%p1%{5}%=%t\E(H%e%p1%{6}
+ %=%t\E(K%e%p1%{7}%=%t\E(R%e%p1%{8}%=%t\E(Q%e%p1%{9}%=%t
+ \E(Y%e%p1%{10}%=%t\E(Z%e%p1%{11}%=%t\E(0%e%p1%{12}%=%t
+ \E(1%e%p1%{13}%=%t\E(3%e%p1%{14}%=%t\E(8%e%p1%{15}%=%t
+ \E(}%;,
smgbp=\E[;%p1%dr, smglp=\E[%{1}%p1%+%ds,
smgrp=\E[;%{1}%p1%+%ds, smgtp=\E[%p1%dr, sshm=\E[5m,
u0=\E[%p1%dt, vpa=\E[%p1%dd,
@@ -11335,14 +13446,13 @@ att5310|att5320|AT&T Model 53210 or 5320 matrix printer,
att5620-1|tty5620-1|dmd1|Teletype 5620 with old ROMs,
am, xon,
cols#88, it#8, lines#70, vt#3,
- bel=^G, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+ bel=^G, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n, 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, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
- il1=\E[L, ind=^J, indn=\E[%p1%dS, kbs=^H, kclr=\E[2J,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
- kll=\E[70;1H, nel=^M^J, rc=\E8, ri=\E[T, rin=\E[%p1%dT,
- rs1=\Ec, sc=\E7,
+ il1=\E[L, ind=\n, kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B,
+ kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kll=\E[70;1H, nel=\r\n,
+ rc=\E8, ri=\E[T, rs1=\Ec, sc=\E7, use=ecma+index,
# 5620 terminfo (2.0 or later ROMS with char attributes)
# The following SET-UP modes are assumed for normal operation:
@@ -11359,16 +13469,16 @@ att5620-1|tty5620-1|dmd1|Teletype 5620 with old ROMs,
att5620|dmd|tty5620|ttydmd|5620|5620 terminal 88 columns,
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,
+ bel=^G, bold=\E[2m, clear=\E[H\E[J, cr=\r, cub1=^H,
cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich=\E[%p1%d@,
- ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
- indn=\E[%p1%dS, kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kll=\E[70;1H, nel=^J,
+ ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, kbs=^H,
+ kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ khome=\E[H, kll=\E[70;1H, nel=\n,
pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8, rev=\E[7m, ri=\E[T,
- rin=\E[%p1%dT, rmso=\E[0m, rmul=\E[0m, rs1=\Ec, sc=\E7,
- sgr0=\E[0m, smso=\E[7m, smul=\E[4m,
+ rmso=\E[0m, rmul=\E[0m, rs1=\Ec, sc=\E7, sgr0=\E[0m,
+ smso=\E[7m, smul=\E[4m, use=ecma+index,
att5620-24|tty5620-24|dmd-24|teletype dmd 5620 in a 24x80 layer,
lines#24, use=att5620,
att5620-34|tty5620-34|dmd-34|teletype dmd 5620 in a 34x80 layer,
@@ -11377,9 +13487,9 @@ att5620-34|tty5620-34|dmd-34|teletype dmd 5620 in a 34x80 layer,
att5620-s|tty5620-s|layer|vitty|5620 S layer,
OTbs, OTpt, am,
cols#80, it#8, lines#72,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n,
cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=^K, dl1=\ED,
- el=\EK, flash=\E^G, ht=^I, il1=\EI, ind=^J, kbs=^H, kclr=\E[2J,
+ el=\EK, flash=\E^G, ht=^I, il1=\EI, ind=\n, kbs=^H, kclr=\E[2J,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
kll=\E[70;1H,
@@ -11392,11 +13502,11 @@ att605|AT&T 605 80 column 102key keyboard,
cols#80, lines#24, lw#8, nlab#8, wsl#80,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
- cr=^M, cub1=^H, cud1=\E[B, cuf1=\E[C,
+ cr=\r, cub1=^H, cud1=\E[B, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
el=\E[K, el1=\E[1K, fsl=\E8, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
- il1=\E[L, ind=^J, invis=\E[8m,
+ il1=\E[L, ind=\n, invis=\E[8m,
is1=\E[8;0|\E[?\E[13;20l\E[?\E[12h, is2=\E[m\017,
kLFT=\E[ A, kRIT=\E[ @, kbs=^H, kcbt=\E[Z, kclr=\E[2J,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
@@ -11419,19 +13529,19 @@ att605|AT&T 605 80 column 102key keyboard,
smir=\E[4h, smln=\E[p, smso=\E[7m, smul=\E[4m,
tsl=\E7\E[25;%i%p1%dx,
att605-pc|ATT 605 in pc term mode,
- acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263,
+ acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
+ \263,
cbt=\E[Z, cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A,
dch1=\E[P, dl1=\E[M, ich1=\E[@, il1=\E[L, kcbt=\E[Z,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
kdl1=\E[M, kend=\E[F, kf1=\E[M, kf10=\E[V, kf2=\E[N,
kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T,
kf9=\E[U, khome=\E[H, 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,
+ rmsc=\E[50;0|$<400>, smsc=\E[?11l\E[50;1|$<250>,
+ xoffc=g, 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
@@ -11441,7 +13551,7 @@ att610|AT&T 610; 80 column; 98key keyboard,
cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M,
+ clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=\r,
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,
@@ -11449,7 +13559,7 @@ att610|AT&T 610; 80 column; 98key keyboard,
dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, ht=^I,
ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
- indn=\E[%p1%dS, invis=\E[8m,
+ invis=\E[8m,
is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0,
is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ @, kRIT=\E[ A, kbs=^H,
kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
@@ -11460,11 +13570,13 @@ att610|AT&T 610; 80 column; 98key keyboard,
nel=\EE,
pfx=\E[%p1%d;%p2%l%02dq F%p1%1d %p2%s,
pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
- ri=\EM, rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
- rmln=\E[2p, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmln=\E[2p,
+ rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l, sc=\E7,
+ sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
+ %|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
smln=\E[p, smso=\E[7m, smul=\E[4m, tsl=\E7\E[25;%i%p1%dx,
+ use=ecma+index,
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,
@@ -11477,7 +13589,7 @@ att610-103k|AT&T 610; 80 column; 103key keyboard,
kOPT=\EOR, kPRT=\EOZ, kPRV=\ENG, kRDO=\EOT, kRES=\EOQ,
kRPL=\EOY, kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9,
kcan=\EOw, kclo=\EOV, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn,
- kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=^M,
+ kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=\r,
kext=\EOk, kf10@, kf11@, kf12@, kf13@, kf14@, kf9@, kfnd=\EOx,
khlp=\EOm, kich1=\ENj, kmov=\ENc, kmrk=\ENi, kmsg=\EOl,
knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr, kpp=\E[V,
@@ -11515,7 +13627,7 @@ att620|AT&T 620; 80 column; 98key keyboard,
cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M,
+ clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=\r,
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,
@@ -11523,7 +13635,7 @@ att620|AT&T 620; 80 column; 98key keyboard,
dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, ht=^I,
ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
- indn=\E[%p1%dS, invis=\E[8m,
+ invis=\E[8m,
is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h,
is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kbs=^H,
kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
@@ -11540,13 +13652,13 @@ att620|AT&T 620; 80 column; 98key keyboard,
mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
pfx=\E[%p1%d;%p2%l%02dq F%p1%1d %p2%s,
pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
- ri=\EM, rin=\E[%p1%dT, rmacs=\E(B\017, rmam=\E[?7l,
- rmir=\E[4l, rmln=\E[2p, rmso=\E[m, rmul=\E[m,
- rs2=\Ec\E[?3l, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\E)0\016%e\E(B\017%;,
+ ri=\EM, rmacs=\E(B\017, rmam=\E[?7l, rmir=\E[4l,
+ rmln=\E[2p, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l, sc=\E7,
+ sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
+ %|%t;7%;%?%p7%t;8%;m%?%p9%t\E)0\016%e\E(B\017%;,
sgr0=\E[m\E(B\017, smacs=\E)0\016, smam=\E[?7h,
smir=\E[4h, smln=\E[p, smso=\E[7m, smul=\E[4m,
- tsl=\E7\E[25;%i%p1%dx,
+ tsl=\E7\E[25;%i%p1%dx, use=ecma+index,
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,
@@ -11558,7 +13670,7 @@ att620-103k|AT&T 620; 80 column; 103key keyboard,
kOPT=\EOR, kPRT=\EOZ, kPRV=\ENG, kRDO=\EOT, kRES=\EOQ,
kRPL=\EOY, kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9,
kcan=\EOw, kclo=\EOV, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn,
- kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=^M,
+ kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=\r,
kext=\EOk, kf10@, kf11@, kf12@, kf13@, kf14@, kf15@, kf16@, kf17@,
kf18@, kf19@, kf20@, kf21@, kf22@, kf23@, kf24@, kf25@, kf26@, kf27@,
kf28@, kf29@, kf30@, kf31@, kf32@, kf33@, kf34@, kf35@, kf36@, kf37@,
@@ -11587,24 +13699,25 @@ att620-103k-w|AT&T 620; 132 column; 103key keyboard,
att630|AT&T 630 windowing terminal,
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,
+ bel=^G, blink=\E[5m, cbt=\E[Z, clear=\E[H\E[J, cr=\r,
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[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
- il=\E[%p1%dL, il1=\E[L, ind=\ED, indn=\E[%p1%dS, is2=\E[m,
- kbs=^H, kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, kent=^M,
- kf10=\ENp, kf11=\ENq, kf12=\ENr, kf13=\ENs, kf14=\ENt,
- kf15=\ENu, kf16=\ENv, kf17=\ENw, kf18=\ENx, kf19=\ENy,
- kf20=\ENz, kf21=\EN{, kf22=\EN|, kf23=\EN}, kf24=\EN~,
- kf9=\ENo, khome=\E[H, kich1=\E[@, kil1=\E[L, mc4=\E[?4i,
- mc5=\E[?5i, nel=^M^J, pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8,
- rev=\E[7m, ri=\EM, rin=\E[%p1%dT, rmir=\E[4l, rmso=\E[m,
- rmul=\E[m, rs2=\Ec, sc=\E7,
- sgr=\E[0%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%p4%|%t;7%;m,
+ il=\E[%p1%dL, il1=\E[L, ind=\ED, is2=\E[m, kbs=^H, kcbt=\E[Z,
+ kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[P, kdl1=\E[M, kent=\r, kf10=\ENp, kf11=\ENq,
+ kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\ENu, kf16=\ENv,
+ kf17=\ENw, kf18=\ENx, kf19=\ENy, kf20=\ENz, kf21=\EN{,
+ kf22=\EN|, kf23=\EN}, kf24=\EN~, kf9=\ENo, khome=\E[H,
+ kich1=\E[@, kil1=\E[L, mc4=\E[?4i, mc5=\E[?5i, nel=\r\n,
+ pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8, rev=\E[7m, ri=\EM,
+ rmir=\E[4l, rmso=\E[m, rmul=\E[m, rs2=\Ec, sc=\E7,
+ sgr=\E[0%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%p4%|%t;7
+ %;m,
sgr0=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+ use=ecma+index,
att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines,
lines#24, use=att630,
@@ -11615,7 +13728,7 @@ att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines,
#
# Here is what's going onm in the init string:
# ESC [ 50;4| set 700 native mode (really is 605)
-# x ESC [ 56;ps| set lines to 24: ps=0; 40: ps=1 (plus status line)
+# x ESC [ 56;ps| set lines to 24: ps=0; 40: ps=1 (plus status line)
# ESC [ 53;0| set GenFlow to Xon/Xoff
# ESC [ 8 ;0| set CR on NL
# x ESC [ ? 3 l/h set workspace: 80 col(l); 132 col(h)
@@ -11690,7 +13803,7 @@ att700|AT&T 700 24x80 column display w/102key keyboard,
cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M,
+ clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=\r,
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,
@@ -11699,7 +13812,8 @@ att700|AT&T 700 24x80 column display w/102key keyboard,
enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fln=4\,4,
fsl=\E8, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
il=\E[%p1%dL, il1=\E[L, ind=\ED, invis=\E[8m,
- is2=\E[50;4|\E[53;0|\E[8;0|\E[?4;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0\E[?31l\E[0m\017,
+ is2=\E[50;4|\E[53;0|\E[8;0|\E[?4;13;15l\E[13;20l\E[?7h\E[12h
+ \E(B\E)0\E[?31l\E[0m\017,
is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kbs=^H, kcbt=\E[Z,
kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kdch1=\E[P, kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp,
@@ -11714,15 +13828,17 @@ att700|AT&T 700 24x80 column display w/102key keyboard,
kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H,
kich1=\E[@, kil1=\E[L, knp=\E[U, kpp=\E[V, ll=\E[24H,
mc0=\E[i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
- pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t F%p1%1d %;%p2%s,
- pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8,
- rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM, rmacs=^O,
- rmir=\E[4l, rmln=\E[2p, rmso=\E[27m, rmul=\E[24m,
- rmxon=\E[53;3|, rs1=\Ec\E[?3;5l\E[56;0|, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t\s\s\sF%p1%1d\s\s\s\s\s
+ \s\s\s\s\s\s%;%p2%s,
+ pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
+ ri=\EM, rmacs=^O, rmir=\E[4l, rmln=\E[2p, rmso=\E[27m,
+ rmul=\E[24m, rmxon=\E[53;3|, rs1=\Ec\E[?3;5l\E[56;0|,
+ sc=\E7,
+ sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
+ %|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smir=\E[4h, smln=\E[p, smso=\E[7m,
smul=\E[4m, smxon=\E[53;0|, tbc=\E[3g,
- tsl=\E7\E[99;%i%p1%dx,
+ tsl=\E7\E[99;%i%p1%dx, use=ansi+rep,
# This entry was modified 3/13/90 by JWE.
# fixes include additions of <enacs>, correcting <rep>, and modification
@@ -11742,7 +13858,7 @@ att730|AT&T 730 windowing terminal,
cols#80, it#8, lh#2, lines#60, lm#0, lw#8, nlab#24, wsl#80,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M,
+ clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=\r,
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,
@@ -11766,24 +13882,25 @@ att730|AT&T 730 windowing terminal,
kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H,
kich1=\E[@, kil1=\E[L, kind=\E[S, kri=\E[T,
mc0=\E[?19h\E[0i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
- pfx=\E[%?%p1%{25}%<%t%p1%e%p1%{24}%-%;%d;%p2%l%02d%?%p1%{25}%<%tq SYS F%p1%:-2d %e;0;3q%;%p2%s,
+ pfx=\E[%?%p1%{25}%<%t%p1%e%p1%{24}%-%;%d;%p2%l%02d%?%p1%{25}
+ %<%tq\s\s\sSYS\s\s\s\s\sF%p1%:-2d\s\s%e;0;3q%;%p2%s,
pfxl=\E[%p1%d;%p2%l%02d;0;0q%p3%:-16.16s%p2%s,
- pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8,
- rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM, rmacs=^O,
- rmam=\E[?7l, rmir=\E[4l, rmln=\E[?13h, rmso=\E[27m,
- rmul=\E[24m, rmxon=\E[?21l, rs2=\Ec\E[?3l, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
+ ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmln=\E[?13h,
+ rmso=\E[27m, rmul=\E[24m, rmxon=\E[?21l, rs2=\Ec\E[?3l,
+ sc=\E7,
+ sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
+ %|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
smln=\E[?13l, smso=\E[7m, smul=\E[4m, smxon=\E[?21h,
- swidm=\E#6, tsl=\E7\E[;%i%p1%dx,
+ swidm=\E#6, tsl=\E7\E[;%i%p1%dx, use=ansi+rep,
att730-41|730MTG-41|AT&T 730-41 windowing terminal Version,
lines#41, use=att730,
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,
@@ -11956,12 +14073,12 @@ att505|pt505|att5430|gs5430|AT&T Personal Terminal 505 or 5430 GETSET terminal,
cols#80, it#8, lines#24,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[2J\E[H,
- cnorm=\E[>l, cr=^M, cub=\E[%p1%dD, cub1=\E[D,
+ cnorm=\E[>l, cr=\r, cub=\E[%p1%dD, cub1=\E[D,
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=\E[2K, home=\E[H, ht=^I,
- il=\E[%p1%dL, il1=\E[L, ind=^J,
+ il=\E[%p1%dL, il1=\E[L, ind=\n,
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,
@@ -11999,19 +14116,19 @@ tt505-22|pt505-22|gs5430-22|AT&T PT505 or 5430 GETSET version 1 22 lines,
ampex80|a80|d80|dialogue|dialogue80|ampex dialogue 80,
OTbs, am, bw, ul,
cols#80, it#8, lines#24,
- bel=^G, cbt=\EI, clear=\E*$<75>, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, cbt=\EI, clear=\E*$<75>, cr=\r, cub1=^H, cud1=\n,
cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
dch1=\EW, dl1=\ER$<5*>, ed=\Ey, el=\Et, ht=^I, hts=\E1,
- ich1=\EQ, il1=\EE$<5*>, ind=^J, is2=\EA, rmso=\Ek, rmul=\Em,
+ ich1=\EQ, il1=\EE$<5*>, ind=\n, is2=\EA, rmso=\Ek, rmul=\Em,
smso=\Ej, smul=\El, tbc=\E3,
# This entry was from somebody anonymous, Tue Aug 9 20:11:37 1983, who wrote:
ampex175|ampex d175,
am,
cols#80, lines#24,
- bel=^G, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=\E+, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
- dl1=\ER, ed=\Ey, el=\Et, home=^^, ich1=\EQ, il1=\EE, ind=^J,
- is2=\EX\EA\EF, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
+ dl1=\ER, ed=\Ey, el=\Et, home=^^, ich1=\EQ, il1=\EE, ind=\n,
+ is2=\EX\EA\EF, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K,
kdch1=\EW, kdl1=\ER, khome=^^, kich1=\EQ, kil1=\EE, ll=^^^K,
rmcup=\EF, rmso=\Ek, rmul=\Em, smcup=\EN, smso=\Ej, smul=\El,
# No backspace key in the main QWERTY cluster. Fortunately, it has a
@@ -12044,11 +14161,11 @@ ampex219|ampex-219|amp219|Ampex with Automargins,
hs, xenl,
cols#80, it#8, lines#24,
bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, cbt=\E[Z,
- clear=\E[H\E[2J$<50>, cnorm=\E[?3l, cr=^M,
+ clear=\E[H\E[2J$<50>, cnorm=\E[?3l, cr=\r,
csr=%i\E[%p1%2d;%p2%2dr, cub1=^H, cud1=\E[B,
cuf1=\E[C$<2>, cup=\E[%i%p1%d;%p2%dH$<5>,
cuu1=\E[A$<2>, cvvis=\E[?3h, dim=\E[1m, ed=\E[J$<50>,
- el=\E[K$<3>, home=\E[H, ht=^I, ind=^J,
+ el=\E[K$<3>, home=\E[H, ht=^I, ind=\n,
is2=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\E[21~,
kf1=\E[7~, kf2=\E[8~, kf3=\E[9~, kf4=\E[10~, kf5=\E[11~,
@@ -12058,7 +14175,7 @@ ampex219|ampex-219|amp219|Ampex with Automargins,
smkx=\E=, smso=\E[7m$<2>, smul=\E[4m$<2>,
ampex219w|ampex-219w|amp219w|Ampex 132 cols,
cols#132, lines#24,
- bel=^G, cr=^M, cud1=^J, ind=^J,
+ bel=^G, cr=\r, cud1=\n, ind=\n,
is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h, use=ampex219,
# (ampex232: removed <if=/usr/share/tabset/ampex>, no file and no <hts> --esr)
ampex232|ampex-232|Ampex Model 232,
@@ -12111,7 +14228,7 @@ ampex232w|Ampex Model 232 / 132 columns,
# Briefly, the settings are for the following modes:
# (values are for bit set/clear with * indicating our preference
# and the value used to test these termcaps)
-# Note that many of these settings are irrelevent to the terminfo
+# Note that many of these settings are irrelevant to the terminfo
# and are just set to the default mode of the terminal as shipped
# by the factory.
#
@@ -12208,18 +14325,19 @@ ampex232w|Ampex Model 232 / 132 columns,
annarbor4080|aa4080|ann arbor 4080,
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,
- cuu1=^N, home=^K, ht=^I, hts=^]^P1, ind=^J, kbs=^^, kcub1=^H,
- kcud1=^J, kcuf1=^_, kcuu1=^N, khome=^K, tbc=^\^P^P,
+ bel=^G, clear=\014$<2>, cr=\r, cub1=^H, cud1=\n, cuf1=^_,
+ cup=\017%p2%{10}%/%{16}%*%p2%{10}%m%+%c%p1%?%p1%{19}%>%t
+ %{12}%+%;%{64}%+%c,
+ cuu1=^N, home=^K, ht=^I, hts=^]^P1, ind=\n, kbs=^^, kcub1=^H,
+ kcud1=\n, kcuf1=^_, kcuu1=^N, khome=^K, tbc=^\^P^P,
# Strange Ann Arbor terminal from BRL
aas1901|Ann Arbor K4080 w/S1901 mod,
am,
cols#80, lines#40,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^_, cuu1=^N,
- home=^K, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, ll=^O\0c,
- nel=^M^J,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^_, cuu1=^N,
+ home=^K, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, ll=^O\0c,
+ nel=\r\n,
# If you're using the GNU termcap library, add
# :cS=\E[%p1%d;%p2%d;%p3%d;%p4%dp:
@@ -12234,7 +14352,7 @@ aaa+unk|aaa-unk|ann arbor ambassador (internal - don't use this directly),
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,
+ clear=\E[H\E[J$<156>, cr=\r, cub=\E[%p1%dD, cub1=^H,
cud=\E[%p1%dB, cud1=^K, 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,
@@ -12249,27 +14367,31 @@ aaa+unk|aaa-unk|ann arbor ambassador (internal - don't use this directly),
kf21=\EOU, kf22=\EOV, kf23=\EOW, kf24=\EOX, kf3=\EOC,
kf4=\EOD, kf5=\EOE, kf6=\EOF, kf7=\EOG, kf8=\EOH, kf9=\EOI,
khome=\E[H, kich1=\E[@, kil1=\E[L, krmir=\E6, mc0=\E[0i,
- mc4=^C, mc5=\E[v, mc5p=\E[%p1%dv, rc=\E8,
- rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m,
- rmkx=\EP`>y~[[J`8xy~[[A`4xy~[[D`6xy~[[C`2xy~[[B\E\\,
+ mc4=^C, mc5=\E[v, mc5p=\E[%p1%dv, rc=\E8, rev=\E[7m,
+ rmkx=\EP`>y~[[J`8xy~[[A`4xy~[[D`6xy~[[C`2xy~[[B\E
+ \\,
rmm=\E[>52l, rmso=\E[m, rmul=\E[m, sc=\E7,
- sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m,
+ sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;
+ %;%?%p7%t8;%;m,
sgr0=\E[m,
- smkx=\EP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\E\\,
+ smkx=\EP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\E
+ \\,
smm=\E[>52h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
- vpa=\E[%p1%{1}%+%dd,
+ vpa=\E[%p1%{1}%+%dd, use=ansi+rep,
aaa+rv|ann arbor ambassador in reverse video,
blink=\E[5;7m, bold=\E[1;7m, invis=\E[7;8m,
is1=\E[7m\E7\E[H\E9\E8, rev=\E[m, rmso=\E[7m, rmul=\E[7m,
rs1=\E[H\E[7m\E[J$<156>,
- sgr=\E[%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p1%p2%|%p3%!%t7;%;%?%p7%t8;%;m\016,
+ sgr=\E[%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p1%p2%|%p3%!%t7;
+ %;%?%p7%t8;%;m\016,
sgr0=\E[7m\016, smso=\E[m, smul=\E[4;7m,
# Ambassador with the DEC option, for partial vt100 compatibility.
aaa+dec|ann arbor ambassador in dec vt100 mode,
acsc=aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}},
csr=\E[%i%p1%d;%p2%dr, enacs=\E(0, rmacs=^N,
- sgr=\E[%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p1%p3%|%!%t7;%;%?%p7%t8;%;m%?%p9%t\017%e\016%;,
+ sgr=\E[%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p1%p3%|%!%t7;%;%?
+ %p7%t8;%;m%?%p9%t\017%e\016%;,
smacs=^O,
aaa-18|ann arbor ambassador/18 lines,
lines#18,
@@ -12436,7 +14558,8 @@ aaa-rv-unk|ann arbor unknown type,
blink=\E[5;7m, bold=\E[1;7m, home=\E[H, invis=\E[7;8m,
is1=\E[7m\E7\E[H\E9\E8, rev=\E[m, rmso=\E[7m, rmul=\E[7m,
rs1=\E[H\E[7m\E[J,
- sgr=\E[%?%p6%t1;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p1%!%t7;%;%?%p7%t8;%;m,
+ sgr=\E[%?%p6%t1;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p1%!%t
+ 7;%;%?%p7%t8;%;m,
sgr0=\E[7m, smso=\E[m, smul=\E[4;7m,
#### Applied Digital Data Systems (adds)
@@ -12464,14 +14587,14 @@ aaa-rv-unk|ann arbor unknown type,
regent|Adds Regent Series,
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,
+ bel=^G, clear=^L, cr=\r, cub1=^U, cud1=\n, cuf1=^F, cuu1=^Z,
+ home=\EY\s\s, ind=\n, ll=^A,
# Regent 100 has a bug where if computer sends escape when user is holding
# down shift key it gets confused, so we avoid escape.
regent100|Adds Regent 100,
xmc#1,
bel=^G,
- cup=\013%p1%' '%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c,
+ cup=\013%p1%'\s'%+%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@,
@@ -12480,30 +14603,34 @@ regent20|Adds Regent 20,
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,
+ bel=^G, kcub1=^U, kcud1=\n, 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,
+ bel=^G, dl1=\El$<2*>, il1=\EM$<2*>, kf1=^B1\r, kf2=^B2\r,
+ kf3=^B3\r, kf4=^B4\r, kf5=^B5\r, kf6=^B6\r, kf7=^B7\r,
+ kf8=^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,
regent40+|Adds Regent 40+,
is2=\EB, use=regent40,
-regent60|regent200|Adds Regent 60,
- dch1=\EE, is2=\EV\EB, kdch1=\EE, kich1=\EF, krmir=\EF,
- rmir=\EF, rmso=\ER\E0@\EV, smir=\EF, smso=\ER\E0P\EV,
+# It uses a different code for mapping acs vs dim/blink.
+regent60|regent200|adds200|Adds Regent 60,
+ acsc=jLkDl@mHnhq`tXuTv\\wPxd, dch1=\EE, ed=\Ek,
+ is2=\EV\EB, kbs=^H, kcbt=\EO, kdch1=\EE, kich1=\EF,
+ krmir=\EF, rmacs=\E2, rmir=\EF, rmso=\ER\E0@\EV, smacs=\E1,
+ smir=\EF, smso=\ER\E0P\EV, kF1=^B!\r, kF2=^B"\r, kF3=^B#\r,
+ kF4=^B$\r, kF5=^B%\r, kF6=^B&\r, kF7=^B'\r, kF8=^B(\r,
use=regent40+,
# 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,
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=^L, cnorm=\017\E0`, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, clear=^L, cnorm=\017\E0`, cr=\r, cub1=^H, cud1=\n,
cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z,
cvvis=\017\E0P, dl1=\El, ed=\Ek$<16.1*>, el=\EK$<16>,
- ind=^J, is2=\017\E0`, kcub1=^U, kcud1=^J, kcuf1=^F, kcuu1=^Z,
+ ind=\n, is2=\017\E0`, kcub1=^U, kcud1=\n, kcuf1=^F, kcuu1=^Z,
kf0=^B1, kf2=^B2, kf3=^B!, kf4=^B", kf5=^B#, khome=^A, ll=^A,
rmso=^O, rmul=^O, sgr0=^O, smso=^N, smul=^N,
# Some viewpoints have bad ROMs that foo up on ^O
@@ -12519,7 +14646,7 @@ screwpoint|adds viewpoint with ^O bug,
#
# Update by TD - 2004:
# Adapted from
-# http://www.cs.utk.edu/~shuford/terminal/adds_viewpoint_news.txt
+# https://web.archive.org/web/19990922005103/http://www.cs.utk.edu/~shuford/terminal/adds_viewpoint_news.txt
#
# COMMANDS ASCII CODE
#
@@ -12533,7 +14660,7 @@ screwpoint|adds viewpoint with ^O bug,
# Cursor forward FF
# Cursor home RS
# Cursor up VT
-# Cursor supress ETB
+# Cursor suppress ETB
# Cursor enable CAN
# Erase to end of line ESC,T
# Erase to end of page ESC,Y
@@ -12568,13 +14695,15 @@ screwpoint|adds viewpoint with ^O bug,
vp3a+|viewpoint3a+|adds viewpoint 3a+,
am, bw,
cols#80, it#8, lines#24,
- blink=\E0B\E), civis=^W, clear=\E*$<80>, cnorm=^X, cr=^M,
- cub1=^H, cud1=^J, cuf1=^L,
+ blink=\E0B\E), civis=^W, clear=\E*$<80>, cnorm=^X, cr=\r,
+ cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dim=\E0A\E),
- ed=\EY$<80>, el=\ET, home=^^, ht=^I, ind=^J, invis=\E0D\E),
- kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^,
- nel=^M^J, rev=\E0P\E), rmso=\E(,
- sgr=%?%p1%p2%|%p3%|%p4%|%p5%|%p7%|%t\E0%{64}%?%p1%t%{17}%|%;%?%p2%t%{32}%|%;%?%p3%t%{16}%|%;%?%p4%t%{2}%|%;%?%p5%t%{1}%|%;%c%?%p7%tD%;\E)%e\E(%;,
+ ed=\EY$<80>, el=\ET, home=^^, ht=^I, ind=\n, invis=\E0D\E),
+ kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^,
+ nel=\r\n, rev=\E0P\E), rmso=\E(,
+ sgr=%?%p1%p2%|%p3%|%p4%|%p5%|%p7%|%t\E0%{64}%?%p1%t%{17}%|%;
+ %?%p2%t%{32}%|%;%?%p3%t%{16}%|%;%?%p4%t%{2}%|%;%?%p5%t
+ %{1}%|%;%c%?%p7%tD%;\E)%e\E(%;,
sgr0=\E(, smso=\E0Q\E), smul=\E0`\E),
vp60|viewpoint60|addsvp60|adds viewpoint60,
use=regent40,
@@ -12592,13 +14721,13 @@ vp60|viewpoint60|addsvp60|adds viewpoint60,
vp90|viewpoint90|adds viewpoint 90,
OTbs, bw, msgr, xhp,
cols#80, lines#24,
- clear=\EG\Ek, cub1=^H, cud1=^J, cuf1=^F,
+ clear=\EG\Ek, cub1=^H, cud1=\n, cuf1=^F,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EE,
dl1=\El, ed=\Ek, el=\EK, home=\EY\s\s, ht=^I,
- ich1=\EF \EF\025, ind=^J, kbs=^H, kcub1=^U, kcud1=^J,
+ ich1=\EF \EF\025, ind=\n, kbs=^H, kcub1=^U, kcud1=\n,
kcuf1=^F, kcuu1=^Z, kf0=^B1\r, kf1=^B2\r, kf10=^B;\r,
kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, kf5=^B6\r, kf6=^B7\r,
- kf7=^B8\r, kf8=^B9\r, kf9=^B\:\r, khome=^A, lf0=F1, lf1=F2,
+ kf7=^B8\r, kf8=^B9\r, kf9=\002\:\r, khome=^A, lf0=F1, lf1=F2,
lf10=F11, lf2=F3, lf3=F4, lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9,
lf9=F10, ll=^A, rmso=\ER\E0@\EV, rmul=\ER\E0@\EV,
sgr0=\ER\E0@\EV, smso=\ER\E0Q\EV, smul=\ER\E0`\EV,
@@ -12607,9 +14736,9 @@ vp90|viewpoint90|adds viewpoint 90,
adds980|a980|adds consul 980,
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=\014$<1>\013@, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, clear=\014$<1>\013@, cr=\r, cub1=^H, cud1=\n,
cuf1=\E^E01, cup=\013%p1%{64}%+%c\E\005%p2%2d,
- dl1=\E\017$<13>, il1=\E\016$<13>, ind=^J, kf0=\E0, kf1=\E1,
+ dl1=\E\017$<13>, il1=\E\016$<13>, ind=\n, kf0=\E0, kf1=\E1,
kf2=\E2, kf3=\E3, kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8,
kf9=\E9, rmso=^O, sgr0=^O, smso=^Y^^^N,
@@ -12626,9 +14755,9 @@ adds980|a980|adds consul 980,
cit80|cit-80|citoh 80,
OTbs, am,
cols#80, lines#24,
- clear=\E[H\EJ, cr=^M, cub1=^H, cud1=\E[B, cuf1=\E[C,
+ clear=\E[H\EJ, cr=\r, cub1=^H, cud1=\E[B, cuf1=\E[C,
cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\EJ, el=\EK, ff=^L,
- ind=^J, is2=\E>, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+ ind=\n, is2=\E>, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
kcuu1=\EOA, rmkx=\E[?1l\E>, smkx=\E[?1h\E=,
# 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)
@@ -12671,8 +14800,8 @@ cit101e|C. Itoh CIT-101e,
# tset or setterm etc.) provided that the terminal has been manually set
# up (and the setup saved with ^S) to be compatible with this termcap. To be
# compatible it should be in ANSI mode (not VT52). A set-up that
-# works is to set all the manually setable stuff to factory defaults
-# by pressing ^D in set-up mode. Then increse the brighness with the
+# works is to set all the manually settable stuff to factory defaults
+# by pressing ^D in set-up mode. Then increase the brightness with the
# up-arrow key since the factory default will likely be dim on an old
# terminal. Then change any options you want (provided that they are
# compatible with the termcap). For my terminal I set: Screen
@@ -12684,33 +14813,34 @@ cit101e-rv|Citoh CIT-101e (sets reverse video),
am, eo, mir, msgr, xenl, xon,
cols#80, it#8, lines#24,
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,
+ civis=\E[1v, clear=\E[H\E[J, cnorm=\E[0;3;4v, cr=\r,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
cvvis=\E[3;5v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
- dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l\E[?5h$<200/>,
+ dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l$<200/>\E[?5h,
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, indn=\E[%p1%dS,
- is2=\E<\E>\E[?1l\E[?3l\E[?4l\E[?5h\E[?7h\E[?8h\E[3g\E[>5g\E(B\E[m\E[20l\E[1;24r\E[24;1H,
- kbs=\177, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
+ is2=\E<\E>\E[?1l\E[?3l\E[?4l\E[?5h\E[?7h\E[?8h\E[3g\E[>5g\E(
+ B\E[m\E[20l\E[1;24r\E[24;1H,
+ kbs=^?, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\EE, rc=\E8,
- rev=\E[7m, ri=\EM, rin=\E[%p1%dT, rmcup=, rmir=\E[4l,
- rmso=\E[m, rmul=\E[m, rs1=\Ec\E[?7h\E[>5g, sc=\E7,
- sgr0=\E[m, smcup=\E[>5g\E[?7h\E[?5h, smir=\E[4h,
- smso=\E[7m, smul=\E[4m, tbc=\E[3g, u6=\E[%i%p1%d;%p2%dR,
- u7=\E[6n, u8=\E[?6c, u9=\E[c,
+ rev=\E[7m, ri=\EM, rmcup=, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
+ rs1=\Ec\E[?7h\E[>5g, sc=\E7, sgr0=\E[m,
+ smcup=\E[>5g\E[?7h\E[?5h, smir=\E[4h, smso=\E[7m,
+ smul=\E[4m, tbc=\E[3g, u6=\E[%i%p1%d;%p2%dR, u7=\E[6n,
+ u8=\E[?6c, u9=\E[c, use=ecma+index,
cit101e-n|CIT-101e w/o am,
am@,
- cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=^J,
+ cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=\n,
use=cit101e,
cit101e-132|CIT-101e with 132 cols,
cols#132,
- kbs=^H, kcub1=^H, kcud1=^J, use=cit101e,
+ kbs=^H, kcub1=^H, kcud1=\n, 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,
+ cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=\n,
use=cit101e,
# CIE Terminals CIT-500 from BRL
# The following SET-UP modes are assumed for normal operation:
@@ -12727,12 +14857,12 @@ cit500|CIE Terminals CIT-500,
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,
+ clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\EM, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
ed=\EJ, el=\EK, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL,
- il1=\E[L, ind=^J, is2=\E<\E)0, kbs=^H, kcbt=\E[Z, kcub1=\EOD,
+ il1=\E[L, ind=\n, is2=\E<\E)0, kbs=^H, kcbt=\E[Z, kcub1=\EOD,
kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[P, kdl1=\E[M,
ked=\EJ, kel=\EK, kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS,
kf4=\EOU, kf5=\EOV, kf6=\EOW, kf7=\EOX, kf8=\EOY, kf9=\EOZ,
@@ -12757,16 +14887,18 @@ citoh-pica|citoh in pica,
citoh-elite|citoh in elite,
cols#96,
is1=\EE,
- is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089.,
+ 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.,
+ 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,
+ cols#0x7fff,
is1=\EP, use=citoh,
citoh-6lpi|citoh in 6 lines per inch mode,
is3=\EA, use=citoh,
@@ -12780,30 +14912,30 @@ citoh-8lpi|citoh in 8 lines per inch mode,
cdc456|cdc 456 terminal,
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=^Y^X, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=^Y^X, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E1%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dl1=\EJ, ed=^X,
- el=^V, home=^Y, il1=\EL, ind=^J,
+ el=^V, home=^Y, il1=\EL, ind=\n,
# Assorted CDC terminals from BRL (improvements by DAG & Ferd Brundick)
cdc721|CDC Viking,
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,
+ cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=\n, kcuf1=^I,
kcuu1=^W, khome=^Y,
-cdc721ll|CDC Vikingll,
+cdc721ll|CDC Viking with long lines,
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,
+ cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=\n, kcuf1=^I,
kcuu1=^W, khome=^Y,
# (cdc752: the BRL entry had :ll=\E1 ^Z: commented out
cdc752|CDC 752,
OTbs, am, bw, xhp,
cols#80, lines#24,
- bel=^G, clear=\030\E1\s\s, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
+ bel=^G, clear=\030\E1\s\s, cr=\r, cub1=^H, cud1=\n, cuf1=^U,
cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z, el=^V,
- home=\E1\s\s, ind=^J, ll=^Y, rs1=\E1 \030\002\003\017,
+ home=\E1\s\s, ind=\n, ll=^Y, rs1=\E1 \030\002\003\017,
# CDC 756
# The following switch/key settings are assumed for normal operation:
# 96 chars SCROLL FULL duplex not BLOCK
@@ -12813,15 +14945,15 @@ cdc752|CDC 752,
cdc756|CDC 756,
OTbs, am, bw,
OTkn#10, cols#80, lines#24,
- bel=^G, clear=^Y^X, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
+ bel=^G, clear=^Y^X, cr=\r, cub1=^H, cud1=\n, 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,
- kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^Z, kdch1=\EI,
+ dl1=\EJ$<6*/>, ed=^X, el=^V, home=^Y, il1=\EL$<6*/>, ind=\n,
+ kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^U, kcuu1=^Z, kdch1=\EI,
kdl1=\EL, ked=^X, kel=^V, kf0=\EA, kf1=\EB, kf2=\EC, kf3=\ED,
kf4=\EE, kf5=\EF, kf6=\EG, kf7=\EH, kf8=\Ea, kf9=\Eb, khome=^Y,
khts=^O, kich1=\EK, kil1=\EL, lf0=F1, lf1=F2, lf2=F3, lf3=F4,
lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, lf9=F10, ll=^Y^Z,
- rs1=\031\030\002\003\017,
+ rs1=^Y^X^B^C^O,
#
# CDC 721 from Robert Viduya, Ga. Tech. <ihnp4!gatech!gitpyr!robert> via BRL.
#
@@ -12841,13 +14973,16 @@ cdc721-esc|Control Data 721,
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,
ich1=^^O, il1=^^R, ind=\036W =\036U, invis=^^^R[,
- is2=\036\022B\003\036\035\017\022\025\035\036E\036\022H\036\022J\036\022L\036\022N\036\022P\036\022Q\036\022\036\022\^\036\022b\036\022i\036W =\036\022Z\036\011C1-` `!k/o,
+ is2=\036\022B\003\036\035\017\022\025\035\036E\036\022H\036
+ \022J\036\022L\036\022N\036\022P\036\022Q\036\022\036
+ \022\^\036\022b\036\022i\036W\s=\036\022Z\036\011C1-`\s`
+ !k/o,
kbs=^H, kcub1=^H, 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=^Y, ll=^B =, rev=^^D,
ri=\036W =\036V, rmir=, rmkx=^^^Rl, rmso=^^E, rmul=^],
- sgr0=\017\025\035\036E\036\022\\, smir=, smkx=^^^Rk,
- smso=^^D, smul=^\, tbc=^^^RY,
+ sgr0=^O^U^]^^E^^^R\\, smir=, smkx=^^^Rk, smso=^^D, smul=^\,
+ tbc=^^^RY,
#### Getronics
#
@@ -12875,23 +15010,23 @@ visa50|geveke visa 50 terminal in ansi 80 character mode,
bw, mir, msgr,
cols#80, lines#25,
acsc=0_aaffggh jjkkllmmnnooqqssttuuvvwwxx, bel=^G,
- blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=^M,
+ blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r,
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,
dch=\E[%p1%dX, dch1=\E[X, dim=\E[2m, dl=\E[%p1%dM,
- dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l, home=\E[H,
- hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m,
+ dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5h$<100/>\E[?5l,
+ home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@,
+ ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m,
is2=\E0;2m\E[1;25r\E[25;1H\E[?3l\E[?7h\E[?8h,
ka1=\E[f, ka3=\EOQ, kb2=\EOP, kbs=^H, kc1=\EOR, kc3=\EOS,
- kcub1=\E[D, kcud1=\E[A, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177,
+ kcub1=\E[D, kcud1=\E[A, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?,
kdl1=\EOS, kf0=\E010, kf1=\E001, kf10=\E011, kf2=\E002,
kf3=\E003, kf4=\E004, kf5=\E005, kf6=\E006, kf7=\E007,
kf8=\E008, kf9=\E009, khome=\E[f, lf2=A delete char,
lf3=A insert line, lf4=A delete line, lf5=A clear,
lf6=A ce of/cf gn, lf7=A print, lf8=A on-line,
- lf9=A funcl0=A send, nel=^M^J, rev=\E[7m, rmacs=\E[3l,
+ lf9=A funcl0=A send, nel=\r\n, rev=\E[7m, rmacs=\E[3l,
rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[0;2m,
rmul=\E[0m, sgr0=\E[0;2m, smacs=\E3h, smam=\E?7h,
smir=\E[4h, smkx=\E=, smso=\E[2;7m, smul=\E[4m, tbc=\E[3g,
@@ -12946,15 +15081,17 @@ visa50|geveke visa 50 terminal in ansi 80 character mode,
# No delays needed on c108 because of ^S/^Q handshaking
#
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,
+ is3=\EU\E\sz"\Ev\001\177\s!p\E\s;"\E\sz\s\Ev\s\s\001\177p
+ \Ep\n,
rmcup=\Ev \001\177p\Ep\r\n, use=c108-4p,
c108-4p|concept108-4p|concept 108 w/4 pages,
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,
+ acsc=jEkTl\\mMqLxU, cnorm=\Ew, cr=\r,
+ cup=\Ea%p1%?%p1%{95}%>%t\001%{96}%-%;%{32}%+%c%p2%?%p2%{95}
+ %>%t\001%{96}%-%;%{32}%+%c,
cvvis=\EW, dch1=\E 1$<16*>, dsl=\E ;\177, fsl=\Ee\E z\s,
- ind=^J, is1=\EK\E!\E F,
+ ind=\n, is1=\EK\E!\E F,
is3=\EU\E z"\Ev\177 !p\E ;"\E z \Ev \001 p\Ep\n,
rmacs=\Ej\s, rmcup=\Ev \001 p\Ep\r\n, smacs=\Ej!,
smcup=\EU\Ev 8p\Ep\r\E\025,
@@ -13012,13 +15149,14 @@ c100|concept100|concept|c104|c100-4p|hds concept 100,
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=,
+ cub1=^H, cud1=\n, cuf1=\E=,
cup=\Ea%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E;,
dch1=\E\021$<16*>, dim=\EE, dl1=\E\002$<3*>,
ed=\E\005$<16*>, el=\E\025$<16>, flash=\Ek$<200>\EK,
- ht=\011$<8>, il1=\E\022$<3*>, ind=^J, invis=\EH, ip=$<16*>,
+ ht=\011$<8>, il1=\E\022$<3*>, ind=\n, invis=\EH, ip=$<16*>,
is1=\EK,
- is2=\EU\Ef\E7\E5\E8\El\ENH\E\0\Eo&\0\Eo'\E\Eo!\0\E\007!\E\010A@ \E4#\:"\E\:a\E4#;"\E\:b\E4#<"\E\:c,
+ is2=\EU\Ef\E7\E5\E8\El\ENH\E\0\Eo&\0\Eo'\E\Eo!\0\E\007!\E
+ \010A@\s\E4#\:"\E\:a\E4#;"\E\:b\E4#<"\E\:c,
is3=\Ev $<6>\Ep\n, kbs=^H, kcbt=\E', kctab=\E_,
kcub1=\E>, kcud1=\E<, kcuf1=\E=, kcuu1=\E;, kdch1=\E^Q,
kdl1=\E^B, ked=\E^C, kel=\E^S, kf1=\E5, kf2=\E6, kf3=\E7,
@@ -13041,7 +15179,7 @@ oc100|oconcept|c100-1p|old 1 page concept 100,
# From: Walter Skorski <walt@genetics1.JMP.TJU.EDU>, 16-oct-1996.
# Lots of notes, originally inline, but ncurses doesn't grok that.
#
-# am: not available in power on mode, but turned on with \E[=107;207h in
+# am: not available in power on mode, but turned on with \E[=107;207h in
# is2=. Also, \E=124l in is2= could have been used to prevent needing
# to specify xenl:, but that would have rendered the last space on the
# last line useless.
@@ -13169,7 +15307,7 @@ oc100|oconcept|c100-1p|old 1 page concept 100,
# there is no way of knowing what it is that the program wants turned
# off.
# smul: The "underline" attribute is reconfigurable to an overline or
-# strikethru, or (as done with \E[;3+} in is2=), to a line at the true
+# strike-through, or (as done with \E[;3+} in is2=), to a line at the true
# bottom of the character cell. This was done to allow for more readable
# underlined characters, and to be able to distinguish between an
# underlined space, an underscore, and an underlined underscore.
@@ -13230,7 +15368,7 @@ oc100|oconcept|c100-1p|old 1 page concept 100,
# %p1%{30}%> ((key; 30) >;
# %p1%{54}%< (key; 54) <
# %A ) AND
-# %O ) OR
+# %O ) OR
# [that is, "IF key < 24 OR (key > 30 AND key < 54)",]
# %t\E[ THEN OUTPUT \E[
# %p1%d OUTPUT (key) as decimal
@@ -13273,7 +15411,7 @@ oc100|oconcept|c100-1p|old 1 page concept 100,
# It's not made clear in the manuals, but based on other ansi/vt type
# terminals, it's a good guess that this terminal is capable of both
# "transparent print" (which doesn't copy data to the screen, and
-# therefore needs mc5i: specified to say so) and "auxilliary print"
+# therefore needs mc5i: specified to say so) and "auxiliary print"
# (which does duplicate printed data on the screen, in which case mc4=
# and mc5= should use the \E[?4i and \E[?5i strings instead).
@@ -13282,7 +15420,7 @@ hds200|Human Designed Systems HDS200,
cols#80, it#8, lines#24, lm#0,
acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
blink=\E[0;5m, bold=\E[0;1m, cbt=\E[Z, civis=\E[6+{,
- clear=\E[H\E[J, cnorm=\E[+{, cr=^M,
+ clear=\E[H\E[J, cnorm=\E[+{, cr=\r,
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,
@@ -13291,25 +15429,31 @@ hds200|Human Designed Systems HDS200,
fsl=\E[!w, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
invis=\E[0;8m,
- is2=\E)0\017\E[m\E[=107;207h\E[90;3u\E[92;3u\E[43;1u\177\E$P\177\E[44;1u\177\E$Q\177\E[45;1u\177\E$R\177\E[46;1u\177\E$S\177\E[200;1u\177\E$A\177\E[201;1u\177\E$B\177\E[202;1u\177\E$C\177\E[203;1u\177\E$D\177\E[204;1u\177\E$H\177\E[212;1u\177\E$I\177\E[213;1u\177\E$\010\177\E[214;1u"\E$\177"\E[2!w\E[25;25w\E[!w\E[2*w\E[2+x\E[;3+},
- kDC=\E$\177, kHOM=\E$H, kLFT=\E$D, kRIT=\E$C, kbs=^H,
+ is2=\E)0\017\E[m\E[=107;207h\E[90;3u\E[92;3u\E[43;1u\177\E$P
+ \177\E[44;1u\177\E$Q\177\E[45;1u\177\E$R\177\E[46;1u
+ \177\E$S\177\E[200;1u\177\E$A\177\E[201;1u\177\E$B\177
+ \E[202;1u\177\E$C\177\E[203;1u\177\E$D\177\E[204;1u\177
+ \E$H\177\E[212;1u\177\E$I\177\E[213;1u\177\E$\010\177\E[
+ 214;1u"\E$\177"\E[2!w\E[25;25w\E[!w\E[2*w\E[2+x\E[;3+},
+ kDC=\E$^?, kHOM=\E$H, kLFT=\E$D, kRIT=\E$C, kbs=^H,
kcbt=\E$I, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\177, kent=^M, kf1=^\001\r, kf10=^\010\r,
- kf11=^\011\r, kf12=^\012\r, kf13=\EOP, kf14=\EOQ,
- kf15=\EOR, kf16=\EOS, kf17=^\017\r, kf18=^\018\r,
- kf19=^\019\r, kf2=^\002\r, kf20=^\020\r, kf21=^\021\r,
- kf22=^\022\r, kf23=^\023\r, kf3=^\003\r, kf31=^\031\r,
- kf32=^\032\r, kf33=^\033\r, kf34=^\034\r, kf35=^\035\r,
- kf36=^\036\r, kf37=^\037\r, kf38=^\038\r, kf39=^\039\r,
- kf4=^\004\r, kf40=^\040\r, kf41=^\041\r, kf42=^\042\r,
- kf43=\E$P, kf44=\E$Q, kf45=\E$R, kf46=\E$S, kf47=^\047\r,
- kf48=^\048\r, kf49=^\049\r, kf5=^\005\r, kf50=^\050\r,
- kf51=^\051\r, kf52=^\052\r, kf53=^\053\r, kf6=^\006\r,
- kf7=^\007\r, kf8=^\008\r, kf9=^\009\r, khome=\E[H,
- kind=\E[T, knp=\E[U, kpp=\E[V, kri=\E[S, ll=\E[H\E[A,
- nel=\E[E, rc=\E8, rev=\E[0;7m, ri=\EM, rmacs=^O, rmir=\E[4l,
- rmso=\E[m\017, rmul=\E[m\017, sc=\E7,
- sgr=\E[0%?%p1%p6%O%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%O%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ kdch1=^?, kent=\r, kf1=^\001\r, kf10=^\010\r, kf11=^\011\r,
+ kf12=^\012\r, kf13=\EOP, kf14=\EOQ, kf15=\EOR, kf16=\EOS,
+ kf17=^\017\r, kf18=^\018\r, kf19=^\019\r, kf2=^\002\r,
+ kf20=^\020\r, kf21=^\021\r, kf22=^\022\r, kf23=^\023\r,
+ kf3=^\003\r, kf31=^\031\r, kf32=^\032\r, kf33=^\033\r,
+ kf34=^\034\r, kf35=^\035\r, kf36=^\036\r, kf37=^\037\r,
+ kf38=^\038\r, kf39=^\039\r, kf4=^\004\r, kf40=^\040\r,
+ kf41=^\041\r, kf42=^\042\r, kf43=\E$P, kf44=\E$Q,
+ kf45=\E$R, kf46=\E$S, kf47=^\047\r, kf48=^\048\r,
+ kf49=^\049\r, kf5=^\005\r, kf50=^\050\r, kf51=^\051\r,
+ kf52=^\052\r, kf53=^\053\r, kf6=^\006\r, kf7=^\007\r,
+ kf8=^\008\r, kf9=^\009\r, khome=\E[H, kind=\E[T, knp=\E[U,
+ kpp=\E[V, kri=\E[S, ll=\E[H\E[A, nel=\E[E, rc=\E8,
+ rev=\E[0;7m, ri=\EM, rmacs=^O, rmir=\E[4l, rmso=\E[m\017,
+ rmul=\E[m\017, sc=\E7,
+ sgr=\E[0%?%p1%p6%O%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%O%t;7
+ %;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smir=\E[4h, smso=\E[0;1;7m,
smul=\E[0;4m, tbc=\E[3g, tsl=\E[2!w\E[%i%p1%dG,
vpa=\E[%i%p1%dd, use=ansi+pp,
@@ -13320,30 +15464,33 @@ avt-ns|concept avt no status line,
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,
+ clear=\E[H\E[J$<38>, cnorm=\E[=119l, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
cvvis=\E[=119h, dch1=\E[P, dim=\E[1!{, dl=\E[%p1%dM$<4*>,
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=\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,
+ 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,
- kf4=\EOS, khome=\E[H, kich1=\E^A\r, kil1=\E^C\r, ll=\E[24H,
- mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
+ kdch1=\E\002\r, ked=\E\004\r, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
+ kf4=\EOS, khome=\E[H, kich1=\E\001\r, kil1=\E\003\r,
+ ll=\E[24H, 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=\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;%;%?%p7%t8;%;%?%p8%t99;%;m%?%p5%t\E[1!{%;%?%p9%t\017%e\016%;$<1>,
+ prot=\E[99m, rc=\E8, rev=\E[7m, 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;
+ %;%?%p7%t8;%;%?%p8%t99;%;m%?%p5%t\E[1!{%;%?%p9%t\017%e
+ \016%;$<1>,
sgr0=\E[m\016$<1>, smacs=\017$<1>,
smcup=\E[=4l\E[1;24w\E2\r, smir=\E[4h,
smkx=\E[1!z\E[0;3u, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
- vpa=\E[%p1%{1}%+%dd,
+ vpa=\E[%p1%{1}%+%dd, use=ansi+rep,
avt-rv-ns|concept avt in reverse video mode/no status line,
flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h,
use=avt-ns,
@@ -13388,11 +15535,11 @@ avt-w-rv|avt-w-rv-s|avt wide+status+rv,
contel300|contel320|c300|Contel Business Systems C-300 or C-320,
am, in, xon,
cols#80, lines#24, xmc#1,
- bel=^G, clear=\EK, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ bel=^G, clear=\EK, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
dch1=\EO$<5.5*>, dl1=\EM$<5.5*>, ed=\EJ$<5.5*>,
el=\EI$<5.5>, flash=\020\002$<200/>\020\003, home=\EH,
- hts=\E1, ich1=\EN, il1=\EL$<5.5*>, ind=^J, ip=$<5.5*>,
+ hts=\E1, ich1=\EN, il1=\EL$<5.5*>, ind=\n, ip=$<5.5*>,
kbs=^H, kf0=\ERJ, kf1=\ERA, kf2=\ERB, kf3=\ERC, kf4=\ERD,
kf5=\ERE, kf6=\ERF, kf7=\ERG, kf8=\ERH, kf9=\ERI, ll=\EH\EA,
rmso=\E!\0, sgr0=\E!\0, smso=\E!\r, tbc=\E3,
@@ -13507,10 +15654,12 @@ dgkeys+15|Private entry describing 15 DG mode special keys,
#
dgunix+fixed|Fixed color info for DG D430C terminals in DG-UNIX mode,
bce,
- colors#16, ncv#53, pairs#256,
+ colors#16, ncv#53, pairs#0x100,
op=\036Ad\036Bd,
- setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
- setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
+ setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1
+ %{4}%&%t%{1}%|%;%;%{48}%+%c,
+ setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1
+ %{4}%&%t%{1}%|%;%;%{48}%+%c,
setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c,
dg+fixed|Fixed color info for DG D430C terminals in DG mode,
@@ -13525,36 +15674,54 @@ dg+color8|Color info for Data General D220 and D230C terminals in ANSI mode,
op=\E[%?%gD%t2;%;%?%gU%t4;%;%?%gB%t5;%;%?%gR%t7;%;m,
setab=\E[4%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
setaf=\E[3%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
- setb=\E[4%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
- setf=\E[3%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+ setb=\E[4%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;
+ %d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+ setf=\E[3%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;
+ %d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
dg+color|Color info for Data General D470C terminals in ANSI mode,
- colors#16, ncv#53, pairs#256,
- setab=\E[%?%p1%{8}%<%t4%p1%e=%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
- setaf=\E[%?%p1%{8}%<%t3%p1%e<%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
- setb=\E[%?%p1%{8}%<%t4%e=%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
- setf=\E[%?%p1%{8}%<%t3%e<%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+ colors#16, ncv#53, pairs#0x100,
+ setab=\E[%?%p1%{8}%<%t4%p1%e=%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;
+ %?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t
+ ;5%;%?%gR%t;7%;m,
+ setaf=\E[%?%p1%{8}%<%t3%p1%e<%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;
+ %?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t
+ ;5%;%?%gR%t;7%;m,
+ setb=\E[%?%p1%{8}%<%t4%e=%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?
+ %p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;
+ %?%gR%t;7%;m,
+ setf=\E[%?%p1%{8}%<%t3%e<%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?
+ %p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;
+ %?%gR%t;7%;m,
use=dg+color8,
dgmode+color8|Color info for Data General D220/D230C terminals in DG mode,
bce,
colors#8, ncv#16, pairs#64,
op=\036Ad\036Bd,
- setab=\036B%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%{48}%+%c,
- setaf=\036A%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%{48}%+%c,
+ setab=\036B%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|
+ %;%{48}%+%c,
+ setaf=\036A%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|
+ %;%{48}%+%c,
setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c,
dgmode+color|Color info for Data General D470C terminals in DG mode,
- colors#16, pairs#256,
- setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
- setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
+ colors#16, pairs#0x100,
+ setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1
+ %{4}%&%t%{1}%|%;%;%{48}%+%c,
+ setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1
+ %{4}%&%t%{1}%|%;%;%{48}%+%c,
use=dgmode+color8,
dgunix+ccc|Configurable color info for DG D430C terminals in DG-UNIX mode,
bce, ccc,
colors#52, ncv#53, pairs#26,
- initp=\036RG0%p1%02X%p2%{255}%*%{1000}%/%02X%p3%{255}%*%{1000}%/%02X%p4%{255}%*%{1000}%/%02X%p5%{255}%*%{1000}%/%02X%p6%{255}%*%{1000}%/%02X%p7%{255}%*%{1000}%/%02X,
- oc=\036RG01A00FF00000000\036RG01B00000000FF00\036RG01C007F00000000\036RG01D000000007F00,
+ initp=\036RG0%p1%02X%p2%{255}%*%{1000}%/%02X%p3%{255}%*
+ %{1000}%/%02X%p4%{255}%*%{1000}%/%02X%p5%{255}%*
+ %{1000}%/%02X%p6%{255}%*%{1000}%/%02X%p7%{255}%*
+ %{1000}%/%02X,
+ oc=\036RG01A00FF00000000\036RG01B00000000FF00
+ \036RG01C007F00000000\036RG01D000000007F00,
op=\036RF4831A\036RF2E31B\036RF1D31C\036RF3F31D,
scp=\036RG2%p1%02X,
@@ -13562,8 +15729,16 @@ dgunix+ccc|Configurable color info for DG D430C terminals in DG-UNIX mode,
dg+ccc|Configurable color info for DG D430C terminals in DG mode,
bce, ccc,
colors#52, ncv#53, pairs#26,
- initp=\036RG0%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c%p2%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p3%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p4%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p5%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p6%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p7%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c,
- oc=\036RG01\:00??00000000\036RG01;00000000??00\036RG01<007?00000000\036RG01=000000007?00,
+ initp=\036RG0%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c%p2%{255}
+ %*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c
+ %p3%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m
+ %{48}%+%c%p4%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga
+ %{16}%m%{48}%+%c%p5%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}
+ %+%c%ga%{16}%m%{48}%+%c%p6%{255}%*%{1000}%/%Pa%ga%{16}
+ %/%{48}%+%c%ga%{16}%m%{48}%+%c%p7%{255}%*%{1000}%/%Pa
+ %ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c,
+ oc=\036RG01\:00??00000000\036RG01;00000000??00\036RG01<007?0
+ 0000000\036RG01=000000007?00,
op=\036RF4831\:\036RF2>31;\036RF1=31<\036RF3?31=,
scp=\036RG2%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c,
@@ -13574,9 +15749,9 @@ dg+ccc|Configurable color info for DG D430C terminals in DG mode,
dg-generic|Generic Data General terminal in DG mode,
am, bw, msgr, xon,
cols#80, lines#24,
- bel=^G, blink=^N, clear=^L, cr=^M, cub1=^Y, cud1=^Z, cuf1=^X,
- cup=\020%p2%c%p1%c, cuu1=^W, dim=^\, el=^K, ind=^J, is1=^R^C,
- mc0=^Q, nel=^J, rmso=^], rmul=^U, sgr0=^O^U^], smso=^\,
+ bel=^G, blink=^N, clear=^L, cr=\r, cub1=^Y, cud1=^Z, cuf1=^X,
+ cup=\020%p2%c%p1%c, cuu1=^W, dim=^\, el=^K, ind=\n, is1=^R^C,
+ mc0=^Q, nel=\n, rmso=^], rmul=^U, sgr0=^O^U^], smso=^\,
smul=^T, use=dgkeys+11,
# According to the 4.4BSD termcap file, the dg200 <cup> should be the
@@ -13587,11 +15762,11 @@ dg-generic|Generic Data General terminal in DG mode,
dg200|data general dasher 200,
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,
+ bel=^G, clear=^L, cr=\r, cub1=^Y, cud1=^Z, cuf1=^X,
+ cup=\020%p2%c%p1%c, cuu1=^W, el=^K, home=^H, ind=\n,
kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, kf0=^^z, kf1=^^q,
kf2=^^r, kf3=^^s, kf4=^^t, kf5=^^u, kf6=^^v, kf7=^^w, kf8=^^x,
- kf9=^^y, khome=^H, lf0=f10, nel=^J, rmso=^^E, rmul=^U,
+ kf9=^^y, khome=^H, lf0=f10, nel=\n, rmso=^^E, rmul=^U,
smso=^^D, smul=^T,
# Data General 210/211 (and 410?) from Lee Pearson (umich!lp) via BRL
@@ -13609,8 +15784,8 @@ dg210|dg-ansi|Data General 210/211,
# I suspect the d200 function keys actually work on the dg211, check it out.)
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,
+ kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, lf0@, nel=\r^Z, rmcup=^L,
+ rmso=\036E$<0/>, smcup=^L^R, smso=\036D$<5/>, use=dg200,
# dg450 from Cornell (not official)
dg450|dg6134|data general 6134,
@@ -13638,7 +15813,8 @@ dg460-ansi|Data General Dasher 460 in ANSI-mode,
kf8=\E[009z, kf9=\E[00\:z, khome=\E[H, lf0=f1, lf1=f2,
lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf9=f10,
mc0=\E[i, rev=\E[7m, ri=\E[T, rmso=\E[m, rmul=\E[05,
- sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m,
+ sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;
+ %?%p1%p3%|%t;7%;m,
sgr0=\E(B\E[m, smso=\E[7m, smul=\E[4m, u6=\E[%d;%dR,
u7=\E[6n, u8=\E[5n, u9=\E[0n,
# From: Wayne Throop <mcnc!rti-sel!rtp47!throopw> (not official)
@@ -13651,7 +15827,7 @@ dg460-ansi|Data General Dasher 460 in ANSI-mode,
dg6053-old|dg100|data general 6053,
OTbs, am, bw, ul,
cols#80, lines#24,
- OTbc=^Y, bel=^G, clear=^L, cnorm=^L, cr=^M, cub1=^Y, cud1=^Z,
+ OTbc=^Y, bel=^G, clear=^L, cnorm=^L, cr=\r, 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,
@@ -13662,14 +15838,14 @@ dg6053-old|dg100|data general 6053,
# (Some performance can be gained over the generic DG terminal type)
dg6053|6053|6053-dg|dg605x|605x|605x-dg|d2|d2-dg|Data General DASHER 6053,
xon@,
- home=^P\0\0, ll=^P\0^W, use=dg-generic,
+ home=\020\0\0, ll=^P\0^W, use=dg-generic,
# Like 6053, but adds reverse video and more keypad and function keys.
d200|d200-dg|Data General DASHER D200,
bold=^^D^T, home@, ll@, rev=^^D, rmso=^^E^],
- sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;,
- sgr0=\017\025\035\036E, smso=^^D^\, use=dgkeys+15,
- use=dg6053,
+ 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=^O^U^]^^E, 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.
@@ -13681,13 +15857,14 @@ d200|d200-dg|Data General DASHER D200,
d210|d214|Data General DASHER D210 series,
am, bw, msgr, xon,
cols#80, lines#24,
- bel=^G, blink=\E[5m, bold=\E[4;7m, clear=\E[2J, cr=^M,
+ bel=^G, blink=\E[5m, bold=\E[4;7m, clear=\E[2J, cr=\r,
cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\E[A, dim=\E[2m, ed=\E[J, el=\E[K,
- el1=\E[1K, home=\E[H, ind=^J, is1=\E[<0;<1;<4l,
- ll=\E[H\E[A, nel=^J, rev=\E[7m, rmso=\E[m, rmul=\E[m,
- sgr=\E[%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;%?%p1%p3%|%p6%|%t7;%;m,
+ el1=\E[1K, home=\E[H, ind=\n, is1=\E[<0;<1;<4l,
+ ll=\E[H\E[A, nel=\n, rev=\E[7m, rmso=\E[m, rmul=\E[m,
+ sgr=\E[%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;%?%p1%p3%|
+ %p6%|%t7;%;m,
sgr0=\E[m, smso=\E[2;7m, smul=\E[4m, use=dgkeys+7b,
# DASHER D210 series terminals in DG mode.
@@ -13743,18 +15920,20 @@ d216-unix|d216e-unix|d216+|d216e+|Data General DASHER D216+ in DG-UNIX mode,
it#8,
acsc=a\177j$k"l!m#n)q+t'u&v(w%x*, blink=^^PI,
clear=^^PH, cub1=^^PD, cud1=^^PB, cuf1=^^PC, cuu1=^^PA,
- el=^^PE, home=^^PF, hpa=\020%p1%c\177, ht=^I, ind=^J,
- is1=\022\003\036P@1, is3=\036Fz0, kHOM=^^Pf, kLFT=^^Pd,
- kPRT=^^P1, kRIT=^^Pc, kclr=^^PH, kcub1=^^PD, kcud1=^^PB,
- kcuf1=^^PC, kcuu1=^^PA, kel=^^PE, khome=^^PF, kprt=^^P0,
- mc0=\036F?9, mc4=^^Fa, mc5=^^F`, rmacs=\036FS00,
+ el=^^PE, home=^^PF, hpa=\020%p1%c\177, ht=^I, ind=\n,
+ is1=^R^C^^P@1, is3=^^Fz0, kHOM=^^Pf, kLFT=^^Pd, kPRT=^^P1,
+ kRIT=^^Pc, kclr=^^PH, kcub1=^^PD, kcud1=^^PB, kcuf1=^^PC,
+ kcuu1=^^PA, kel=^^PE, khome=^^PF, kprt=^^P0, mc0=^^F?9,
+ mc4=^^Fa, mc5=^^F`, rmacs=\036FS00,
rs2=\036N\036FS0E\036O\036FS00,
- sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;\036P%?%p4%tI%eJ%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;,
+ 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%t1
+ 1%e00%;,
sgr0=\036PJ\025\035\036E\036FS00, smacs=\036FS11,
vpa=\020\177%p1%c, use=dgkeys+15, use=d216-dg,
d216-unix-25|d216+25|Data General DASHER D216+ in DG-UNIX mode with 25 lines,
lines#25,
- is3=\036Fz2, use=d216+,
+ is3=^^Fz2, use=d216+,
d217-unix|Data General DASHER D217 in DG-UNIX mode,
use=d216-unix,
@@ -13793,7 +15972,7 @@ 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@,
+ dl1@, home@, il1@, is2@, is3=^^FQ2, ll@, mc4@, mc5@, rs1@,
rs2=\036N\036FS0>\036O\036FS00, use=dgmode+color8,
use=d470c-dg,
@@ -13801,9 +15980,11 @@ d220-dg|Data General DASHER D220 color terminal in DG mode,
# Like the D220 but with minor ANSI compatibility improvements.
#
d230c|d230|Data General DASHER D230C,
- blink=\E[5;50m, bold=\E[4;7;50m, dim=\E[2;50m, nel=^M^J,
+ blink=\E[5;50m, bold=\E[4;7;50m, dim=\E[2;50m, nel=\r\n,
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%;,
+ 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,
@@ -13831,16 +16012,17 @@ d230c-dg|d230-dg|Data General DASHER D230C in DG mode,
#
d400|d400-dg|d450|d450-dg|Data General DASHER D400/D450 series,
mc5i,
- acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\036FQ0,
- cnorm=\036FQ2, dch1=^^K, dl1=^^FI,
- enacs=\036N\036FS11\036O, home=^^FG, hpa=\020%p1%c\177,
- ich1=^^J, il1=^^FH,
- is2=\036FQ2\036FW\036FJ\036F\^\036FX004?\036F]\036O\036FS00,
- ll=\036FG\027, mc4=^^Fa, mc5=^^F`, ri=^^I, rmacs=^^O,
- rs1=^^FA, rs2=\036F]\036FT0,
- sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036%?%p9%tN%eO%;,
- sgr0=\017\025\035\036E\036O, smacs=^^N,
- vpa=\020\177%p1%c, use=d210-dg,
+ acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=^^FQ0, cnorm=^^FQ2,
+ dch1=^^K, dl1=^^FI, enacs=\036N\036FS11\036O, home=^^FG,
+ hpa=\020%p1%c\177, ich1=^^J, il1=^^FH,
+ is2=\036FQ2\036FW\036FJ\036F\^\036FX004?\036F]\036O
+ \036FS00,
+ ll=^^FG^W, mc4=^^Fa, mc5=^^F`, ri=^^I, rmacs=^^O, rs1=^^FA,
+ rs2=\036F]\036FT0,
+ sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4
+ %t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036%?%p9%tN%eO%;,
+ sgr0=^O^U^]^^E^^O, smacs=^^N, vpa=\020\177%p1%c,
+ use=d210-dg,
# DASHER D410/D460 series terminals in ANSI mode.
# These add a large number of intelligent terminal features.
@@ -13889,7 +16071,8 @@ d410|d411|d460|d461|Data General DASHER D410/D460 series,
is2=\E[3;2;2;1;1;1v\E(B\E)4\017, mc4=\E[4i, mc5=\E[5i,
ri=\EM, rmacs=\E)4\017, rs1=\Ec\E[<2h,
rs2=\E[4;0;2;1;1;1v\E(B\E)4,
- sgr=\E[%?%p1%t2;7%;%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p1%p5%|%t2;%;%?%p6%t4;7;%;m\E)%?%p9%t6\016%e4\017%;,
+ sgr=\E[%?%p1%t2;7%;%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p1%p5
+ %|%t2;%;%?%p6%t4;7;%;m\E)%?%p9%t6\016%e4\017%;,
sgr0=\E[m\E)4\017, smacs=\E)6\016, use=d211,
# Initialization string 2 sets:
@@ -13911,13 +16094,16 @@ d410-7b|d411-7b|d460-7b|d461-7b|Data General DASHER D410/D460 series in 7 bit mo
km@,
enacs=\E)6, is2=\E[3;2;2;0;1;0v\E(0\017, rmacs=^O,
rs2=\E[4;0;2;0;1;0v\E(0,
- sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m%?%p9%t\016%e\017%;,
+ sgr=\E[%?%p1%p5%|%t2;%;%?%p2%p6%|%t4;%;%?%p1%p3%|%p6%|%t7;%;
+ %?%p4%t5;%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, use=dgkeys+7b, use=d410,
d410-dg|d460-dg|d411-dg|d461-dg|Data General DASHER D410/D460 series in DG mode,
km,
enacs@, rmacs=\036FS00,
- sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;,
+ sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4
+ %t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e0
+ 0%;,
sgr0=\017\025\035\036E\036FS00, smacs=\036FS11,
use=d400-dg,
@@ -13958,39 +16144,46 @@ d412-dg|d462-dg|d462e-dg|d412+dg|d462+dg|d413-dg|d463-dg|Data General DASHER D41
# These add intelligent features like scrolling regions.
d412-unix|d462-unix|d412+|d462+|Data General DASHER D412+/D462+ series in Unix mode,
- civis=\036FQ0, clear=^^FE, cnorm=\036FQ5,
+ civis=^^FQ0, clear=^^FE, cnorm=^^FQ5,
cup=\036FP%p2%2.2X%p1%2.2X, dch1=^^K, dl1=^^FI,
home=^^FG, hpa=\036FP%p1%2.2XFF, ich1=^^J, il1=^^FH,
- is2=\036FQ5\036FW\036FJ\036F\^\036FX004F\036O\036FS00,
+ is2=\036FQ5\036FW\036FJ\036F\^\036FX004F\036O
+ \036FS00,
ll=\036FG\036PA, mc0=^A, rc=\036F}11, ri=^^I,
- rs1=\036FA\036FT0, rs2=\036P@1, sc=\036F}10,
+ rs1=\036FA\036FT0, rs2=^^P@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,
+ 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,
+ 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,
+ 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,
+ is3=^^Fz2,
+ 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,
+ 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%;,
+ csr=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>
+ %t000%;,
cud1@, cuu1@, ll@, use=d462+,
d413-unix|d463-unix|Data General DASHER D413/D463 series in DG-UNIX mode,
@@ -14059,12 +16252,14 @@ d430c-unix-sr-ccc|d430-unix-sr-ccc|Data General D430C in DG-UNIX mode with scrol
#
d470c|d470|Data General DASHER D470C,
is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h,
- sgr=\E[%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p6%t4;7;%;%?%p1%t2;7;%;%?%p5%t2;%;m\E)%?%p9%t6\016%e4\017%;,
+ sgr=\E[%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p6%t4;7;%;%?%p1%t
+ 2;7;%;%?%p5%t2;%;m\E)%?%p9%t6\016%e4\017%;,
use=dg+color, use=d460,
d470c-7b|d470-7b|Data General DASHER D470C in 7 bit mode,
is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h,
- sgr=\E[%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p6%t4;7;%;%?%p1%t2;7;%;%?%p5%t2;%;m%?%p9%t\016%e\017%;,
+ sgr=\E[%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p6%t4;7;%;%?%p1%t
+ 2;7;%;%?%p5%t2;%;m%?%p9%t\016%e\017%;,
use=dg+color, use=d460-7b,
# Initialization string 2 sets:
@@ -14078,7 +16273,8 @@ d470c-7b|d470-7b|Data General DASHER D470C in 7 bit mode,
# - (should reset scrolling regions, but that glitches the screen)
#
d470c-dg|d470-dg|Data General DASHER D470C in DG mode,
- is2=\036FQ2\036FW\036F\^\036FX004?\036F]\036O\036FS00,
+ is2=\036FQ2\036FW\036F\^\036FX004?\036F]\036O
+ \036FS00,
use=dgmode+color, use=d460-dg,
# DASHER D555 terminal in ANSI mode.
@@ -14140,9 +16336,9 @@ d578-7b|Data General DASHER D578 in 7-bit mode,
cs10|colorscan|Datamedia Color Scan 10,
msgr,
cols#80, lines#24,
- bel=^G, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+ bel=^G, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
cup=\E[%i%p1%02d;%p2%02dH, cuu1=\E[A, ed=\E[J, el=\E[K,
- ind=^J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ ind=\n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rmso=\E[m, rmul=\E[m,
sgr0=\E[m, smso=\E[7m, smul=\E[4m,
cs10-w|Datamedia Color Scan 10 with 132 columns,
@@ -14153,21 +16349,21 @@ cs10-w|Datamedia Color Scan 10 with 132 columns,
dm1520|dm1521|datamedia 1520,
OTbs, am, xenl,
cols#80, it#8, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^\,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^\,
cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
- home=^Y, ht=^I, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^\, kcuu1=^_,
+ home=^Y, ht=^I, ind=\n, kcub1=^H, kcud1=\n, kcuf1=^\, kcuu1=^_,
khome=^Y,
# 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=^\,
+ bel=^G, clear=^^^^^?, cub1=^H, cud1=\n, cuf1=^\,
cup=\014%p2%{96}%^%c%p1%{96}%^%c, cuu1=^Z,
dch1=\020\010\030\035$<10*>,
dl1=\020\032\030\035$<10*>, el=^W, home=^B,
ich1=\020\034\030\035$<10*>,
- il1=\020\n\030\035\030\035$<15>, ind=^J, pad=\377,
+ il1=\020\n\030\035\030\035$<15>, ind=\n, pad=\377,
rmdc=^X^], rmir=\377\377\030\035$<10>, rmso=^X^],
smdc=^P, smir=^P, smso=^N,
# dmchat is like DM2500, but DOES need "all that padding" (jcm 1/31/82)
@@ -14182,10 +16378,10 @@ dmchat|dmchat version of datamedia 2500,
dm3025|datamedia 3025a,
OTbs, km,
cols#80, it#8, lines#24,
- bel=^G, clear=\EM$<2>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ bel=^G, clear=\EM$<2>, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA,
dch1=\010$<6>, dl1=\EP\EA\EQ$<130>, ed=\EJ$<2>, el=\EK,
- home=\EH, ht=^I, il1=\EP\n\EQ$<130>, ind=^J, ip=$<6>,
+ home=\EH, ht=^I, il1=\EP\n\EQ$<130>, ind=\n, ip=$<6>,
is2=\EQ\EU\EV, rmdc=\EQ, rmir=\EQ, rmso=\EO0, smdc=\EP,
smir=\EP, smso=\EO1,
dm3045|datamedia 3045a,
@@ -14193,52 +16389,52 @@ dm3045|datamedia 3045a,
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,
- khome=\EH, pad=\177, rmdc@, rmir=\EP, rmso@, smdc@, smso@,
+ khome=\EH, pad=^?, rmdc@, rmir=\EP, rmso@, smdc@, smso@,
use=dm3025,
# Datamedia DT80 soft switches:
# 1 0=Jump 1=Smooth
-# Autorepeat 0=off 1=on
-# Screen 0=Dark 1=light
-# Cursor 0=u/l 1=block
+# Autorepeat 0=off 1=on
+# Screen 0=Dark 1=light
+# Cursor 0=u/l 1=block
#
# 2 Margin Bell 0=off 1=on
-# Keyclick 0=off 1=on
-# Ansi/VT52 0=VT52 1=Ansi
-# Xon/Xoff 0=Off 1=On
+# Keyclick 0=off 1=on
+# ANSI/VT52 0=VT52 1=ANSI
+# Xon/Xoff 0=Off 1=On
#
# 3 Shift3 0=Hash 1=UK Pound
-# Wrap 0=Off 1=On
-# Newline 0=Off 1=On
-# Interlace 0=Off 1=On
+# Wrap 0=Off 1=On
+# Newline 0=Off 1=On
+# Interlace 0=Off 1=On
#
# 4 Parity 0=Odd 1=Even
-# Parity 0=Off 1=On
-# Bits/Char 0=7 1=8
-# Power 0=60Hz 1=50Hz
+# Parity 0=Off 1=On
+# Bits/Char 0=7 1=8
+# Power 0=60Hz 1=50Hz
#
# 5 Line Interface 0=EIA 1=Loop
-# Aux Interface 0=EIA 1=Loop
-# Local Copy 0=Off 1=On
-# Spare
+# Aux Interface 0=EIA 1=Loop
+# Local Copy 0=Off 1=On
+# Spare
#
# 6 Aux Parity 0=Odd 1=Even
-# Aux Parity 0=Off 1=On
-# Aux Bits/Char 0=7 1=8
-# CRT Saver 0=Off 1=On
+# Aux Parity 0=Off 1=On
+# Aux Bits/Char 0=7 1=8
+# CRT Saver 0=Off 1=On
# dm80/1 is a vt100 lookalike, but it doesn't seem to need any padding.
dm80|dmdt80|dt80|datamedia dt80/1,
- clear=\E[2J\E[H, cud1=^J, cuf1=\E[C,
+ clear=\E[2J\E[H, cud1=\n, cuf1=\E[C,
cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
home=\E[H, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, ri=\EM,
- rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
- use=vt100,
+ rmso=\E[m, rmul=\E[m, sgr0=\E[m\017$<2>, smso=\E[7m,
+ smul=\E[4m, use=vt100+4bsd,
# except in 132 column mode, where it needs a little padding.
# This is still less padding than the vt100, and you can always turn on
# the ^S/^Q handshaking, so you can use vt100 flavors for things like
# reverse video.
dm80w|dmdt80w|dt80w|datamedia dt80/1 in 132 char mode,
cols#132,
- clear=\E[H\E[2J$<50/>, cud1=^J,
+ clear=\E[H\E[2J$<50/>, cud1=\n,
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 <athompso@pangea.ca> Sept 10 1995
@@ -14246,12 +16442,12 @@ dt80-sas|Datamedia DT803/DTX for SAS usage,
am, bw,
cols#80, lines#24,
acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
- bel=^G, clear=^L, cr=^M,
+ bel=^G, clear=^L, cr=\r,
csr=\E=%p1%{32}%+%c%{32}%c\E#1\E=%p2%{32}%+%c%{32}%c\E#2,
cub1=^H, cud1=\EB, cuf1=^\,
cup=\E=%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, dl1=\EM, ed=^K,
el=^], ff=^L, home=^Y, ht=^I, hts=\E'1, il1=\EL, ind=\EB,
- is2=\E)0\E<\EP\E'0\E$2, kclr=^L, kcub1=^H, kcud1=^J,
+ is2=\E)0\E<\EP\E'0\E$2, kclr=^L, kcub1=^H, kcud1=\n,
kcuf1=^\, kcuu1=^_, ked=^K, kel=^], khome=^Y, mc4=^O, mc5=^N,
rev=\E$2\004, ri=\EI, rmacs=\EG, rmso=^X, sgr0=^X, smacs=\EF,
smso=\E$2\004, tbc=\E'0,
@@ -14265,15 +16461,15 @@ dt80-sas|Datamedia DT803/DTX for SAS usage,
# the Excel terminals with the regular datamedia terminals that share
# major characteristics.
excel62|excel64|datamedia Excel 62,
- dch1=\E[P, kbs=^H, kcub1=^H, kcud1=^J, kf5=\EOu, kf6=\EOv,
+ dch1=\E[P, kbs=^H, kcub1=^H, kcud1=\n, kf5=\EOu, kf6=\EOv,
kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, smir=\E[4h,
use=dt80,
excel62-w|excel64-w|datamedia Excel 62 in 132 char mode,
- dch1=\E[P, kbs=^H, kcub1=^H, kcud1=^J, kf5=\EOu, kf6=\EOv,
+ dch1=\E[P, kbs=^H, kcub1=^H, kcud1=\n, kf5=\EOu, kf6=\EOv,
kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, smir=\E[4h,
use=dt80w,
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,
+ dch1=\E[P, flash=\E[?5l\E[?5h, kbs=^H, kcub1=^H, kcud1=\n,
kf5=\EOu, kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l,
smir=\E[4h, use=dt80,
@@ -14296,19 +16492,19 @@ excel62-rv|excel64-rv|datamedia Excel 62 in reverse video mode,
falco|ts1|ts-1|falco ts-1,
OTbs, am,
cols#80, it#8, lines#24,
- bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=\E*, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
dl1=\ER, ed=\EY, el=\ET\EG0\010, home=^^, ht=^I, il1=\EE,
- ind=^J, is2=\Eu\E3, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
+ ind=\n, is2=\Eu\E3, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K,
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,
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,
+ bel=^G, cbt=\EI, clear=\E*, cr=\r, cub1=^H, cud1=\E[B,
cuf1=\E[C, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E[A,
dch1=\EW, dl1=\ER, ed=\EY, el=\ET\EG0\010\Eg0, ht=^I,
- il1=\EE, ind=^J, is2=\EZ\E3\E_c, kcub1=\E[D, kcud1=\E[B,
+ il1=\EE, ind=\n, is2=\EZ\E3\E_c, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, rmcup=\E_b, rmir=\Er,
rmso=\Eg0, rmul=\Eg0, sgr0=\Eg0, smcup=\E_d, smir=\Eq,
smso=\Eg4, smul=\Eg1,
@@ -14318,18 +16514,19 @@ ts100|ts100-sp|falco ts100-sp,
cols#80, it#8, lines#24, vt#3,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
- clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
cuf=\E[%p1%dC, cuf1=\E[C$<2>,
cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
cuu1=\E[A$<2>, dch1=\E~W, dl1=\E~R, ed=\E[J$<50>,
el=\E[K$<3>, el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H,
- ht=^I, hts=\EH, ich1=\E~Q, il1=\E~E, ind=^J, is1=\E~)\E~ea,
+ ht=^I, hts=\EH, ich1=\E~Q, il1=\E~E, ind=\n, is1=\E~)\E~ea,
kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>,
rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
+ %;m%?%p9%t\016%e\017%;$<2>,
sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
use=vt100+fnkeys,
@@ -14349,11 +16546,11 @@ beacon|FCG Beacon System,
am, da, db,
cols#80, lines#32,
bel=\ESTART\r\E37\r\EEND\r$<1>,
- blink=\ESTART\r\E61\,1\r\EEND\r, clear=\EZ$<10>, cr=^M,
- cub1=^H, cud1=^J, cuf1=\EV,
+ blink=\ESTART\r\E61\,1\r\EEND\r, clear=\EZ$<10>, cr=\r,
+ cub1=^H, cud1=\n, cuf1=\EV,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=\EU,
dch1=\EW, dl1=\ER, el=\ET, home=\EH$<10>, ich1=\EQ, il1=\EE,
- ind=^J, rev=\ESTART\r\E59\,1\r\EEND\r, rmcup=,
+ ind=\n, rev=\ESTART\r\E59\,1\r\EEND\r, rmcup=,
rmso=\ESTART\r\E70\,0\r\EEND\r$<20>,
rmul=\ESTART\r\E60\,0\r\EEND\r,
sgr0=\ESTART\r\E78\r\E70\,0\r\EEND\r$<20>,
@@ -14369,7 +16566,7 @@ beacon|FCG Beacon System,
f1720|f1720a|fluke 1720A,
xt,
cols#80, lines#16, xmc#1,
- bel=^G, clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=\E[B,
+ bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\E[B,
cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J,
el=\E[K, ind=\ED, is2=\E[H\E[2J, kcub1=^_, kcud1=^],
kcuf1=^^, kcuu1=^\, ri=\EM, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
@@ -14390,11 +16587,11 @@ f1720|f1720a|fluke 1720A,
f100|freedom|freedom100|freedom model 100,
OTbs, am, bw, hs, mir, msgr, xon,
cols#80, lines#24,
- acsc=, bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^J,
+ acsc=, bel=^G, cbt=\EI, clear=^Z, cr=\r, cub1=^H, cud1=\n,
cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
dch1=\EW, dl1=\ER$<11.5*>, dsl=\Eg\Ef\r, ed=\EY, el=\ET,
- flash=\Eb$<200>\Ed, fsl=^M, home=^^, hpa=\E]%p1%{32}%+%c,
- ht=^I, hts=\E1, il1=\EE$<8.5*>, ind=^J, ip=$<6>,
+ flash=\Eb$<200>\Ed, fsl=\r, home=^^, hpa=\E]%p1%{32}%+%c,
+ ht=^I, hts=\E1, il1=\EE$<8.5*>, ind=\n, ip=$<6>,
is2=\Eg\Ef\r\Ed, kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^V,
kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r, kf2=^AA\r,
kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
@@ -14435,12 +16632,12 @@ f200|freedom200|Liberty Freedom 200,
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,
+ clear=^Z, cnorm=\E.1, cr=\r,
csr=\Em0%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=^V,
cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
dch1=\EW, dim=\EG@, dl1=\ER, dsl=\Ef\r, ed=\EY, el=\ET,
- flash=\Eo$<200/>\En, fsl=^M, home=^^,
- hpa=\E]%p1%{32}%+%c, hts=\E1, il1=\EE, ind=^J, kbs=^H,
+ flash=\Eo$<200/>\En, fsl=\r, home=^^,
+ hpa=\E]%p1%{32}%+%c, hts=\E1, il1=\EE, ind=\n, kbs=^H,
kclr=^^, kcub1=^H, kcud1=^V, kcuf1=^L, 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,
@@ -14453,7 +16650,7 @@ f200-w|Liberty Freedom 200 - 132 cols,
# reprogrammed to ^J (linefeed). This value is remembered in non-volatile RAM,
# so powering the terminal off and on will not cause the change to be lost.
f200vi|Liberty Freedom 200 for vi,
- flash=\Eb$<200/>\Ed, kcud1=^J, use=f200,
+ flash=\Eb$<200/>\Ed, kcud1=\n, use=f200,
f200vi-w|Liberty Freedom 200 - 132 cols for vi,
cols#132, use=f200vi,
@@ -14497,7 +16694,7 @@ go225|go-225|Graphon 225,
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,
+ csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, 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, il1=\E[L, ind=\ED,
is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=^H,
@@ -14578,11 +16775,14 @@ sb1|beehive superbee,
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,
+ cub1=^H, cud1=\n, cuf1=\EC$<3>, cup=\EF%p2%03d%p1%03d,
cuu1=\EA$<3>, dch1=\EP$<3>, dl1=\EM$<100>, ed=\EJ$<3>,
el=\EK$<3>, home=\EH$<1>, ht=^I, hts=\E1,
- il1=\EN\EL$<3>\EQ \EP$<3> \EO\ER\EA$<3>,
- ind=^J, is2=\EE$<3>\EX\EZ\EO\Eb\Eg\ER, kbs=^_, kcub1=\ED,
+ il1=\EN\EL$<3>\EQ\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
+ \s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
+ \s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
+ \s\s\s\s\s\EP$<3>\s\EO\ER\EA$<3>,
+ ind=\n, is2=\EE$<3>\EX\EZ\EO\Eb\Eg\ER, kbs=^_, kcub1=\ED,
kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdl1=\EM, ked=\EJ, kel=\EK,
kf0=\E2, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu,
kf7=\Ev, kf8=\Ew, kf9=\E1, khome=\EH, kich1=\EQ\EO,
@@ -14591,7 +16791,7 @@ 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,
+ cr=\r$<1>, il1=\EN$<1>\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
@@ -14606,7 +16806,7 @@ sbi|superbee|beehive superbee at Indiana U.,
superbee-xsb|beehive super bee,
am, da, db, xsb,
cols#80, it#8, lines#25,
- clear=\EH\EJ$<3>, cnorm=^J, cr=\r$<1000>, cub1=^H, cud1=^J,
+ clear=\EH\EJ$<3>, cnorm=\n, cr=\r$<1000>, cub1=^H, cud1=\n,
cuf1=\EC, cup=\EF%p2%3d%p1%3d, cuu1=\EA$<3>,
dch1=\EP$<3>, dl1=\EM$<100>, ed=\EJ$<3>, el=\EK$<3>,
home=\EH, ht=^I, hts=\E1,
@@ -14652,23 +16852,23 @@ beehive|bee|harris beehive,
beehive3|bh3m|beehiveIIIm|harris beehive 3m,
OTbs, am,
cols#80, it#8, lines#20,
- bel=^G, clear=^E^R, cr=^M, cub1=^H, cud1=^J, cuf1=^L, cuu1=^K,
+ bel=^G, clear=^E^R, cr=\r, cub1=^H, cud1=\n, cuf1=^L, cuu1=^K,
dl1=\021$<350>, ed=^R, el=^P, home=^E, ht=^I, hts=^F,
- il1=\023$<160>, ind=^J, ll=^E^K, rmso=\s^_, smso=^]\s,
+ il1=\023$<160>, ind=\n, ll=^E^K, rmso=\s^_, smso=^]\s,
beehive4|bh4|beehive 4,
am,
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,
+ bel=^G, clear=\EE, cr=\r, cub1=\ED, cud1=\n, cuf1=\EC,
+ cuu1=\EA, ed=\EJ, el=\EK, home=\EH, ind=\n,
# 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,
OTbs, am,
cols#80, it#8, lines#24,
- bel=^G, clear=\EE, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ bel=^G, clear=\EE, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
- el=\EK, ht=^I, ind=^J, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+ el=\EK, ht=^I, ind=\n, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
kcuu1=\EA, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et,
kf6=\Eu, kf7=\Ev, kf8=\Ew, kf9=\Ex, khome=\EH, rmso=\Ed@,
rmul=\Ed@, sgr0=\Ed@, smso=\s\EdP, smul=\Ed`,
@@ -14678,17 +16878,19 @@ microb|microbee|micro bee series,
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,
+ kf16=\Eg, kf2=^P, kf3=^N, kf4=^V, kf5=\n, kf6=^T, kf7=^H, kf8=^?,
+ kf9=\Ee, use=bee,
# (8686: changed k10, k11...k16 to k;, F1...F6; fixed broken continuation
# in :is: -- esr)
ha8686|harris 8686,
- is2=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU\E"*Z01\E"8F35021B7C83#\E"8F45021B7D83#\E"8F55021B7E83#\E"8F65021B7F83#\E"8F75021B7383#\E"8F851BD7#\E"8F95021B7083#\E"8FA5021B7183#\E"8FB5021B7283#,
- kf1=\002\Ep\003, kf10=\Ej, kf11=\EW, kf12=\002\E{\003,
- kf13=\002\E|\003, kf14=\002\E}\003, kf15=\002\E~\003,
- kf16=\002\E\177\003, kf2=\002\Eq\003, kf3=\002\Er\003,
- kf4=\002\Es\003, kf5=\E3, kf6=\EI, kf7=\ER, kf8=\EJ, kf9=\E(,
- use=bee,
+ is2=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU\E"*Z01\E"8F35021B7C83#
+ \E"8F45021B7D83#\E"8F55021B7E83#\E"8F65021B7F83#\E"8F750
+ 21B7383#\E"8F851BD7#\E"8F95021B7083#\E"8FA5021B7183#\E"8
+ FB5021B7283#,
+ kf1=^B\Ep^C, kf10=\Ej, kf11=\EW, kf12=^B\E{^C,
+ kf13=^B\E|^C, kf14=^B\E}^C, kf15=^B\E~^C, kf16=^B\E^?^C,
+ kf2=^B\Eq^C, kf3=^B\Er^C, kf4=^B\Es^C, kf5=\E3, kf6=\EI,
+ kf7=\ER, kf8=\EJ, kf9=\E(, use=bee,
#### Hazeltine
#
@@ -14722,15 +16924,15 @@ ha8686|harris 8686,
hz1000|hazeltine 1000,
OTbs,
cols#80, lines#12,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\s, home=^K,
- ind=^J,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=\s, home=^K,
+ ind=\n,
# From: <cbosg!ucbvax!pur-ee!cincy!chris> Thu Aug 20 09:09:18 1981
hz1420|hazeltine 1420,
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=\E^\, cr=^M, cub1=^H, cud1=^J, cuf1=^P,
+ bel=^G, clear=\E^\, cr=\r, cub1=^H, cud1=\n, cuf1=^P,
cup=\E\021%p2%c%p1%{32}%+%c, cuu1=\E^L, dl1=\E^S,
- ed=\E^X, el=\E^O, ht=^N, il1=\E^Z, ind=^J, rmso=\E^Y,
+ ed=\E^X, el=\E^O, ht=^N, il1=\E^Z, ind=\n, rmso=\E^Y,
smso=\E^_,
# New "safe" cursor movement (11/87) from <cgs@umd5.umd.edu>. Prevents
# freakout with out-of-range args and tn3270. No hz since it needs to
@@ -14738,10 +16940,10 @@ hz1420|hazeltine 1420,
hz1500|hazeltine 1500,
OTbs, am, hz,
cols#80, lines#24,
- bel=^G, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P,
+ bel=^G, clear=~^\, cr=\r, cub1=^H, cud1=~^K, cuf1=^P,
cup=~\021%p2%p2%?%{30}%>%t%{32}%+%;%{96}%+%c%p1%{96}%+%c,
cuu1=~^L, dl1=~\023$<40>, ed=~\030$<10>, el=~^O, home=~^R,
- il1=~\032$<40>, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^P,
+ il1=~\032$<40>, ind=\n, kcub1=^H, kcud1=\n, kcuf1=^P,
kcuu1=~^L, khome=~^R, rmso=~^Y, smso=~^_,
# h1510 assumed to be in sane escape mode. Else use h1500.
# (h1510: early versions of this entry apparently had "<rmso=\E^_>,
@@ -14750,9 +16952,9 @@ hz1500|hazeltine 1500,
hz1510|hazeltine 1510,
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=\E^\, cr=^M, cub1=^H, cud1=\E^K, cuf1=^P,
+ bel=^G, clear=\E^\, cr=\r, cub1=^H, cud1=\E^K, cuf1=^P,
cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, ed=\E^X,
- el=\E^O, il1=\E^Z, ind=^J,
+ el=\E^O, il1=\E^Z, ind=\n,
# Hazeltine 1520
# The following switch settings are assumed for normal operation:
# FULL CR U/L_CASE ESCAPE
@@ -14762,9 +16964,9 @@ hz1510|hazeltine 1510,
hz1520|Hazeltine 1520,
OTbs, am, bw, msgr,
cols#80, lines#24,
- bel=^G, bold=\E^_, clear=\E^\, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, bold=\E^_, clear=\E^\, cr=\r, cub1=^H, cud1=\n,
cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S,
- ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z, ind=^J, kbs=^H,
+ ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z, ind=\n, kbs=^H,
kclr=\E^\, kcub1=^H, kcud1=\E^K, kcuf1=^P, kcuu1=\E^L,
kdl1=\E^S, ked=\E^X, kel=\E^O, khome=\E^R, kil1=\E^Z,
rmso=\E^Y, rs1=\E$\E\005\E?\E\031, sgr0=\E^Y, smso=\E^_,
@@ -14773,25 +16975,25 @@ hz1520|Hazeltine 1520,
hz1520-noesc|hazeltine 1520,
am, hz,
cols#80, lines#24,
- bel=^G, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P,
+ bel=^G, clear=~^\, cr=\r, cub1=^H, cud1=~^K, cuf1=^P,
cup=~\021%p2%c%p1%c$<1>, cuu1=~^L, dl1=~^S, ed=~^X, el=~^O,
- home=~^R, il1=~^Z, ind=^J, rmso=~^Y, smso=~^_,
+ home=~^R, il1=~^Z, ind=\n, rmso=~^Y, smso=~^_,
# Note: the h1552 appears to be the first Hazeltine terminal which
# 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,
+ cud1=\n, dl1=\EO, il1=\EE, kf1=\EP, kf2=\EQ, kf3=\ER, lf1=blue,
lf2=red, lf3=green, use=vt52,
hz1552-rv|hazeltine 1552 reverse video,
- cud1=^J, rmso=\ET, smso=\ES, use=hz1552,
+ cud1=\n, rmso=\ET, smso=\ES, use=hz1552,
# Note: h2000 won't work well because of a clash between upper case and ~'s.
hz2000|hazeltine 2000,
OTbs, OTnc, am,
cols#74, lines#27,
- bel=^G, clear=~\034$<6>, cub1=^H, cud1=^J,
+ bel=^G, clear=~\034$<6>, cub1=^H, cud1=\n,
cup=~\021%p2%c%p1%c, dl1=~\023$<6>, home=~^R,
- il1=~\032$<6>, ind=^J, pad=\177,
+ il1=~\032$<6>, ind=\n, pad=^?,
# Date: Fri Jul 23 10:27:53 1982. Some unknown person wrote:
# I tested this termcap entry for the Hazeltine Esprit with vi. It seems
# to work ok. There is one problem though if one types a lot of garbage
@@ -14803,12 +17005,12 @@ hz2000|hazeltine 2000,
esprit|Hazeltine Esprit I,
OTbs, am, bw,
cols#80, lines#24,
- bel=^G, cbt=\E^T, clear=\E^\, cr=^M, cub1=^H, cud1=\E^K,
+ bel=^G, cbt=\E^T, clear=\E^\, cr=\r, cub1=^H, cud1=\E^K,
cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S,
- ed=\E^W, el=\E^O, home=\E^R, il1=\E^Z, ind=^J, is2=\E?, kbs=^H,
- kcub1=^H, kcud1=\E^K, kcuf1=^P, kcuu1=\E^L, kf0=^B0^J,
- kf1=^B1^J, kf2=^B2^J, kf3=^B3^J, kf4=^B4^J, kf5=^B5^J,
- kf6=^B6^J, kf7=^B7^J, kf8=^B8^J, kf9=^B9^J, khome=\E^R,
+ ed=\E^W, el=\E^O, home=\E^R, il1=\E^Z, ind=\n, is2=\E?, kbs=^H,
+ kcub1=^H, kcud1=\E^K, kcuf1=^P, kcuu1=\E^L, kf0=^B0\n,
+ kf1=^B1\n, kf2=^B2\n, kf3=^B3\n, kf4=^B4\n, kf5=^B5\n,
+ kf6=^B6\n, kf7=^B7\n, kf8=^B8\n, kf9=^B9\n, khome=\E^R,
lf0=0, lf1=1, lf2=2, lf3=3, lf4=4, lf5=5, lf6=6, lf7=7, lf8=8, lf9=9,
rmkx=\E>, rmso=\E^Y, smkx=\E<, smso=\E^_,
esprit-am|hazeltine esprit auto-margin,
@@ -14820,9 +17022,9 @@ esprit-am|hazeltine esprit auto-margin,
hmod1|Hazeltine Modular 1,
OTbs, am, hz,
cols#80, lines#24,
- bel=^G, cbt=~^T, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P,
+ bel=^G, cbt=~^T, clear=~^\, cr=\r, cub1=^H, cud1=~^K, cuf1=^P,
cup=~\021%p2%c%p1%c, cuu1=~^L, dl1=~^S, home=~^R, il1=~^Z,
- ind=^J, kcub1=^H, kcud1=~^K, kcuf1=^P, kcuu1=~^L, khome=~^R,
+ ind=\n, kcub1=^H, kcud1=~^K, kcuf1=^P, kcuu1=~^L, khome=~^R,
rc=~^Q, rmso=~^Y, sc=~^E, sgr0=~^Y, smso=~^_,
#
# Hazeltine Executive 80 Model 30 (1554?)
@@ -14831,9 +17033,9 @@ hmod1|Hazeltine Modular 1,
hazel|exec80|h80|he80|Hazeltine Executive 80,
OTbs, OTpt, am,
cols#80, it#8, lines#24, vt#3,
- 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/>,
+ OTnl=\n, bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
+ clear=\E[;H\E[2J$<50/>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub1=^H, cud1=\n, 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,
is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD, kcud1=\EOB,
@@ -14850,46 +17052,62 @@ hazel|exec80|h80|he80|Hazeltine Executive 80,
ibm327x|line mode IBM 3270 style,
gn,
- clear=^M^J, el=^M, home=^M,
+ clear=\r\n, el=\r, home=\r,
ibm3101|i3101|IBM 3101-10,
OTbs, am, xon,
cols#80, lines#24,
- bel=^G, clear=\EK, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ bel=^G, clear=\EK, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
- el=\EI, home=\EH, hts=\E0, ind=^J, kcub1=\ED, kcud1=\EB,
- kcuf1=\EC, kcuu1=\EA, nel=^M^J, tbc=\EH,
+ el=\EI, home=\EH, hts=\E0, ind=\n, kcub1=\ED, kcud1=\EB,
+ kcuf1=\EC, kcuu1=\EA, nel=\r\n, tbc=\EH,
ibm3151|IBM 3151 display,
is2=\E S, rmacs=\E>B, rmcup=\E>B, rs2=\E S, s0ds=\E>B,
- sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E>B%;,
+ sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;
+ %?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t
+ %{80}%|%;%c%?%p9%t\E>A%e\E>B%;,
sgr0=\E4@\E>B, smacs=\E>A, smcup=\E>B, use=ibm3162,
# From: Mark Easter <marke@fsi-ssd.csg.ssd.fsi.com> 29 Oct 1992
# removed kend, knp, kpp -TD
+#
+# From: Stephen Powell <zlinuxman@wowway.com> 23 Apr 2015
+# Added ich1 (kich1 without ich1 doesn't make sense).
+# Added il1 (kil1 without il1 doesn't make sense).
+# Added xon (terminal uses XON/XOFF flow control).
+#
ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display,
- OTbs, am, mir, msgr,
+ OTbs, am, mir, msgr, xon,
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,
+ acsc=j\352k\353l\354m\355n\356q\361t\364u\365v\366w\367x
+ \370,
+ bel=^G, blink=\E4D, bold=\E4H, clear=\EH\EJ, cr=\r, cub1=\ED,
cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
- cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH, ind=^J,
- invis=\E4P, kbs=^H, kcbt=\E2, kclr=\EL\r, kctab=\E1,
- kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EQ,
- kdl1=\EO, ked=\EJ, kel=\EI, kf1=\Ea\r, kf10=\Ej\r,
- kf11=\Ek\r, kf12=\El\r, kf13=\E!a\r, kf14=\E!b\r,
- kf15=\E!c\r, kf16=\E!d\r, kf17=\E!e\r, kf18=\E!f\r,
- kf19=\E!g\r, kf2=\Eb\r, kf20=\E!h\r, kf21=\E!i\r,
- kf22=\E!j\r, kf23=\E!k\r, kf24=\E!l\r, kf3=\Ec\r,
- kf4=\Ed\r, kf5=\Ee\r, kf6=\Ef\r, kf7=\Eg\r, kf8=\Eh\r,
- kf9=\Ei\r, khome=\EH, khts=\E0, kich1=\EP \010, kil1=\EN,
- ktbc=\E 1, 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<@%;,
+ cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH,
+ ich1=\EP \010, il1=\EN, ind=\n, invis=\E4P, kbs=^H, kcbt=\E2,
+ kclr=\EL\r, kctab=\E1, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+ kcuu1=\EA, kdch1=\EQ, kdl1=\EO, ked=\EJ, kel=\EI, kf1=\Ea\r,
+ kf10=\Ej\r, kf11=\Ek\r, kf12=\El\r, kf13=\E!a\r,
+ kf14=\E!b\r, kf15=\E!c\r, kf16=\E!d\r, kf17=\E!e\r,
+ kf18=\E!f\r, kf19=\E!g\r, kf2=\Eb\r, kf20=\E!h\r,
+ kf21=\E!i\r, kf22=\E!j\r, kf23=\E!k\r, kf24=\E!l\r,
+ kf3=\Ec\r, kf4=\Ed\r, kf5=\Ee\r, kf6=\Ef\r, kf7=\Eg\r,
+ kf8=\Eh\r, kf9=\Ei\r, khome=\EH, khts=\E0, kich1=\EP \010,
+ kil1=\EN, ktbc=\E 1, 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,
+#
+# From: Stephen Powell <zlinuxman@wowway.com> 23 Apr 2015
+# Deleted il1. (il1 will now be inherited from ibm3161-C, which inherits
+# it from ibm3161.
+#
ibm3162|IBM 3162 display,
- blink=\E4$a, bold=\E4(a, il1=\EN, invis=\E40a, rev=\E4!a,
+ blink=\E4$a, bold=\E4(a, invis=\E40a, rev=\E4!a,
rmso=\E4>b, rmul=\E4=b, sgr0=\E4@, smso=\E4!a, smul=\E4"a,
use=ibm3161-C,
@@ -14906,31 +17124,33 @@ ibm3164|i3164|IBM 3164,
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[J, cr=^M,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ 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[J, cr=\r,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM,
dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H,
hpa=\E[%i%p1%dG, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
- indn=\E[%p1%dS, invis=\E[8m, is2=\Ec, kbs=^H, kcbt=\E[Z,
- kclr=\E[144q, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
- kcuu1=\E[A, kdch1=\E[P, ked=\E[148q, kel=\E[142q,
- kend=\E[146q, 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,
+ 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=\E[T,
+ 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,
+ use=ecma+index,
ibmaed|IBM Experimental display,
OTbs, am, eo, msgr,
@@ -14954,21 +17174,27 @@ ibmmono|IBM workstation monochrome,
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,
+ cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n,
+ nel=\r\n, 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%;,
+ 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%;,
ibm+16color|IBM aixterm color definitions,
- colors#16, pairs#256,
+ colors#16, pairs#0x100,
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,
+ 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,
ibm5154|IBM 5154 Color display,
colors#8, ncv@, pairs#64,
bold@, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151,
@@ -14977,11 +17203,11 @@ 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,
+ cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n,
+ nel=\r\n, 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,
+ cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n,
+ nel=\r\n, use=ibmega,
# ibmapa* and ibmmono entries come from ACIS 4.3 distribution
rtpc|ibmapa16|IBM 6155 Extended Monochrome Graphics Display,
lines#32,
@@ -14998,11 +17224,13 @@ ibmapa8c-c|ibm6154-c|IBM 6154 Advanced Color Graphics Display,
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,
+ sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
+ 2%;m,
sgr0=\E[0;10m, use=ibm5154,
ibm6153|IBM 6153 Black & White display,
blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m,
- sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;12%;m,
+ sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
+ 2%;m,
sgr0=\E[0;10m, use=ibm5151,
ibm6153-90|IBM 6153 Black & White display,
cols#90, lines#36,
@@ -15013,7 +17241,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[J, cub1=\E[D, cud1=^J, cuf1=\E[C,
+ clear=\E[H\E[J, cub1=\E[D, cud1=\n, 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,
@@ -15038,10 +17266,10 @@ hft-c-old|HFT with Color PC850,
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,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
+ cub1=^H, cud1=\n, 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,
+ ht=^I, ich1=\E[@, il1=\E[L, ind=\n, 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,
@@ -15053,7 +17281,7 @@ ibm-system1|system1|ibm system/1 computer,
cols#80, lines#24,
bel=^G, clear=^Z, cub1=^H, cuf1=^\,
cup=\005%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, home=^K,
- ind=^J,
+ ind=\n,
# 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
@@ -15061,32 +17289,34 @@ ibm-system1|system1|ibm system/1 computer,
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,
+ 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,
+ cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
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%;,
+ il1=\E[L, ind=\ED, 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, 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,
+ tbc=\E[3g, use=ecma+index,
# "Megapel" refers to the display adapter, which was used with the IBM RT
# aka IBM 6150.
ibm5081|hft|IBM Megapel Color display,
@@ -15105,35 +17335,47 @@ ibm8514|IBM 8514/a color VGA display,
ibm8514-c|IBM 8514 color display with standout and underline,
eslok, hs,
lines#41,
- cr=^M, cud1=^J, dsl=\Ej\EYI \EI\Ek, fsl=\Ek, ht=^I, ind=^J,
- kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, tsl=\Ej\EYI%+ \Eo,
+ cr=\r, cud1=\n, dsl=\Ej\EYI \EI\Ek, fsl=\Ek, ht=^I, ind=\n,
+ kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, tsl=\Ej\EYI%+ \Eo,
use=ibmega-c,
#
# AIX entries. IBM ships these with AIX 3.2.5.
# -- added rc, sc based on manpage -TD
+# -- added rmacs, smacs based on manpage -TD
# Note that we could use ibm+16color, but that is not how IBM defines this one.
aixterm|IBM Aixterm Terminal Emulator,
eslok, hs,
acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E,
- 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,
+ fsl=\E[?F, rc=\E8, ri@, rmacs=\E(B, s0ds=\E(B, s1ds=\E(0,
+ sc=\E7,
+ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7
+ %t;8%;m%?%p9%t\E(0%e\E(B%;,
+ sgr0=\E[0;10m\E(B, smacs=\E(0, 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,
+ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%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=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,
+ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7
+ %t;8%;m,
tsl=\E[?%p1%dT, use=ibm6153,
jaixterm|IBM Kanji Aixterm Terminal Eemulator,
- acsc@, use=aixterm,
+ acsc@, rmacs@,
+ sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7%t;8
+ %;m,
+ sgr0=\E[m, smacs@, use=aixterm,
jaixterm-m|IBM Kanji AIXterm Monochrome Terminal Emulator,
- acsc@, use=aixterm-m,
+ acsc@, rmacs@,
+ sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7%t;8
+ %;m,
+ sgr0=\E[m, smacs@, use=aixterm-m,
# This flavor is adapted from xterm, in turn from aixterm documentation -TD
aixterm-16color|IBM Aixterm Terminal Emulator with 16 colors,
@@ -15146,29 +17388,29 @@ aixterm-16color|IBM Aixterm Terminal Emulator with 16 colors,
i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100),
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, 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,
+ ind=\n, rmso=\Ea, smso=\Eb,
i400|infoton 400,
OTbs, am,
cols#80, lines#25,
- bel=^G, clear=\E[2J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+ bel=^G, clear=\E[2J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
cup=\E[%i%p1%3d;%p2%3dH, cuu1=\E[A,
dch1=\E[4h\E[2Q\E[P\E[4l\E[0Q, dl1=\E[M, el=\E[N,
- il1=\E[L, ind=^J, rmir=\E[4l\E[0Q, smir=\E[4h\E[2Q,
+ il1=\E[L, ind=\n, rmir=\E[4l\E[0Q, smir=\E[4h\E[2Q,
# (addrinfo: removed obsolete ":bc=^Z:" -- esr)
addrinfo,
am,
cols#80, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^Z, cud1=^J, cuf1=^Y,
- cup=\037%p1%c%p2%c, cuu1=^\, ed=^K, home=^H, ind=^J, ll=^H^\,
+ bel=^G, clear=^L, cr=\r, cub1=^Z, cud1=\n, cuf1=^Y,
+ cup=\037%p1%c%p2%c, cuu1=^\, ed=^K, home=^H, ind=\n, ll=^H^\,
# (infoton: used to have the no-ops <lh#0>, <lw#0>, <nlab#0> -- esr)
infoton,
am,
cols#80, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^Z, cud1=^J, cuf1=^Y, cuu1=^\,
- ed=^K, ind=^J, ll=^H^\,
+ bel=^G, clear=^L, cr=\r, cub1=^Z, cud1=\n, cuf1=^Y, cuu1=^\,
+ ed=^K, ind=\n, ll=^H^\,
# The ICL6402 was actually the Kokusai Display System 6402.
# The 6404 was the KDS7372 (color version of the 6402).
@@ -15180,7 +17422,7 @@ infoton,
#ctrl-A set SOM position at cursor position
#ctrl-G Bell
#ctrl-H Backspace
-#ctrl-I Horiz tab
+#ctrl-I Horizontal tab
#ctrl-J Linefeed
#ctrl-K Cursor up
#ctrl-L Cursor right
@@ -15435,15 +17677,16 @@ icl6404|kds7372|icl6402|kds6402|ICL 6404 aka Kokusai Display Systems 7372,
OTbs, am, hs,
cols#80, lines#24,
bel=^G, blink=\E[2ZZ, cbt=\EI, civis=\E.0, clear=\E*,
- cnorm=\E.3, cr=^M,
- csr=\E!%+%p1%{32}%+%p2%{32} cud1=\026, cuf1=^L,
+ cnorm=\E.3, cr=\r, csr=\E!%+%p1%{32}%+%p2%{32}, cub1=^H,
+ cud1=^V, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{80}%m%{32}%+%c%p2%{80}%>%{32}%+%c,
cuu1=^K, cvvis=\E.1, dch1=\EW, dl1=\ER, home=^^, ht=^I,
hts=\E1, il1=\EE, invis=\E[1ZZ,
is1=\EC\E.3\EDF\EV1\Eg\E[0ZZ, nel=^_, rev=\E[4ZZ,
rmir=\Er, rmso=\E[%gh%{4}%^%Ph%gh%dZZ,
rmul=\E[%gh%{8}%^%Ph%gh%dZZ, rs2=\Eo1,
- sgr=\E[%'0'%?%p1%t%'8'%|%;%?%p2%t%'8'%|%;%?%p3%t%'4'%|%;%?%p4%t%'2'%|%;%?%p7%t%'1'%|%;%cZZ,
+ sgr=\E[%'0'%?%p1%t%'8'%|%;%?%p2%t%'8'%|%;%?%p3%t%'4'%|%;%?
+ %p4%t%'2'%|%;%?%p7%t%'1'%|%;%cZZ,
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,
@@ -15461,11 +17704,11 @@ icl6404-w|kds7372-w|ICL 6404 aka Kokusai Display Systems 7372 132 cols,
intext|Interactive Systems Corporation modified owl 1200,
OTbs, am,
cols#80, it#8, lines#24, xmc#1,
- bel=^G, cbt=^Y, clear=\014$<132>, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, cbt=^Y, clear=\014$<132>, cr=\r, cub1=^H, cud1=\n,
cuf1=^^, cup=\017%p1%{32}%+%c%p2%{32}%+%c, cuu1=^\,
dch1=\022$<5.5*>, dl1=\021$<5.5*>, ed=\026J$<5.5*>,
- el=^Kp^R, ht=^I, il1=\020$<5.5*>, ind=^J, ip=$<5.5*>, kbs=^H,
- kcub1=^_, kcud1=^J, kcuf1=^^, kcuu1=^\, kf0=^VJ\r, kf1=^VA\r,
+ el=^Kp^R, ht=^I, il1=\020$<5.5*>, ind=\n, ip=$<5.5*>, kbs=^H,
+ kcub1=^_, kcud1=\n, kcuf1=^^, kcuu1=^\, kf0=^VJ\r, kf1=^VA\r,
kf2=^VB\r, kf3=^VC\r, kf4=^VD\r, kf5=^VE\r, kf6=^VF\r,
kf7=^VG\r, kf8=^VH\r, kf9=^VI\r, khome=^Z, rmir=^V<,
rmkx=^V9, rmso=^V#\s, smir=^V;, smkx=\036\:\264\026%%,
@@ -15473,7 +17716,7 @@ intext|Interactive Systems Corporation modified owl 1200,
intext2|intextii|INTERACTIVE modified owl 1251,
am, bw, ul,
cols#80, lines#24, xmc#0,
- bel=^G, cbt=\E[Z, clear=\E[H\E[2J, cr=^M, cub1=\E[D,
+ bel=^G, cbt=\E[Z, clear=\E[H\E[2J, cr=\r, cub1=\E[D,
cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K,
flash=\E[;;;;;;;;;2;;u$<200/>\E[;;;;;;;;;1;;u,
@@ -15510,12 +17753,12 @@ intext2|intextii|INTERACTIVE modified owl 1251,
abm85|Kimtron ABM 85,
OTbs, am, bw, msgr,
cols#80, it#8, lines#24, xmc#1,
- cbt=\EI, clear=\E*, cub1=^H, cud1=^J, cuf1=^L,
+ cbt=\EI, clear=\E*, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
dl1=\ER, ed=\Ey, el=\Et, ht=^I,
if=/usr/share/tabset/stdcrt, il1=\EE,
is2=\EC\EX\Eg\En\E%\Er\E(\Ek\Em\Eq, kbs=^H, kcub1=^H,
- kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, rmir=\Er, rmso=\Ek,
+ kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^, rmir=\Er, rmso=\Ek,
rmul=\Em, smir=\EQ, smso=\Ej, smul=\El,
# Kimtron ABM 85H added by Dual Systems.
# Some notes about the abm85h entries:
@@ -15543,19 +17786,22 @@ abm85h|Kimtron ABM 85H native mode,
hs,
xmc@,
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,
+ fsl=\r, 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,
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,
+ 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,
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,
+ 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,
# From: <malman@bbn-vax.arpa>
# (kt7: removed obsolete :ma=^V^J^L :" -- esr)
@@ -15579,16 +17825,16 @@ kt7ix|kimtron model kt-7 or 70 in IX mode,
am, bw,
cols#80, it#8, lines#25,
acsc=jYk?lZm@nEqDt4uCvAwBx3, bel=^G, blink=\EG2, cbt=\EI,
- civis=\E.0, clear=\E*, cnorm=\E.3, cr=^M, cub1=^H, cud1=^V,
+ civis=\E.0, clear=\E*, cnorm=\E.3, cr=\r, cub1=^H, cud1=^V,
cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
- dch1=\EW, dim=\EG@, dl1=\ER, dsl=\Ef\r, ed=\EY, el=\ET, fsl=^M,
- home=^^, ht=^I, ich1=\EQ, il1=\EE, ind=^J,
+ dch1=\EW, dim=\EG@, dl1=\ER, dsl=\Ef\r, ed=\EY, el=\ET, fsl=\r,
+ home=^^, ht=^I, ich1=\EQ, il1=\EE, ind=\n,
is2=\EG0\E s\017\E~, kbs=^H, kcbt=\EI, kclr=\E*,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdl1=\ER,
ked=\EY, kel=\ET, kend=\EY, 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, knp=\EJ,
- nel=^M^J, pulse=\EK, rmacs=\E%%, rmir=, rmso=\EG0, rmul=\EG0,
+ nel=\r\n, pulse=\EK, rmacs=\E%%, rmir=, rmso=\EG0, rmul=\EG0,
sgr0=\EG0, smacs=\E$, smir=, smso=\EG4, smul=\EG8, tsl=\Ef,
#### Microdata/MDIS
@@ -15664,11 +17910,13 @@ kt7ix|kimtron model kt-7 or 70 in IX mode,
prism2|MDC Prism-2,
am, bw, msgr,
cols#80, lines#24,
- bel=^G, clear=\014$<20>, cr=^M, cub1=^H, cud1=^J, cuf1=^F,
- cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
+ bel=^G, clear=\014$<20>, cr=\r, cub1=^H, cud1=\n, cuf1=^F,
+ cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?
+ %{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
cuu1=^Z, ed=\EJ, el=\EK, home=^A,
- hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
- ind=^J, kbs=^H, khome=^A, vpa=\013%p1%{32}%+%c,
+ hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc
+ %=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
+ ind=\n, kbs=^H, khome=^A, vpa=\013%p1%{32}%+%c,
# p4: Prism-4
# -----------
@@ -15683,16 +17931,19 @@ prism2|MDC Prism-2,
prism4|p4|P4|MDC Prism-4,
am, bw, hs, mc5i, msgr,
cols#80, lines#24, wsl#72, xmc#1,
- bel=^G, blink=^CB, civis=^]\344, clear=\014$<20>,
- cnorm=^]\342, cr=^M, cub1=^H, cud1=^J, cuf1=^F,
- cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
+ bel=^G, blink=^CB, civis=\035\344, clear=\014$<20>,
+ cnorm=\035\342, cr=\r, cub1=^H, cud1=\n, cuf1=^F,
+ cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?
+ %{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
cuu1=^Z, dim=^CA, dsl=\035\343\035\345, ed=\EJ, el=\EK,
- fsl=^]\345, home=^A,
- hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
- ind=^J, invis=^CH, kbs=^H, khome=^A, mc0=\EU, mc4=\ET, mc5=\ER,
+ fsl=\035\345, home=^A,
+ hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc
+ %=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
+ ind=\n, invis=^CH, kbs=^H, khome=^A, mc0=\EU, mc4=\ET, mc5=\ER,
rev=^CD, rmso=^C\s, rmul=^C\s,
- sgr=\003%{64}%?%p1%p3%|%t%{4}%+%;%?%p2%t%{16}%+%;%?%p4%t%{2}%+%;%?%p5%t%{1}%+%;%?%p7%t%{8}%+%;%c%?%p9%t\016%e\017%;,
- sgr0=^C\s, smso=^CD, smul=^CP, tsl=^]\343,
+ sgr=\003%{64}%?%p1%p3%|%t%{4}%+%;%?%p2%t%{16}%+%;%?%p4%t%{2}
+ %+%;%?%p5%t%{1}%+%;%?%p7%t%{8}%+%;%c%?%p9%t\016%e\017%;,
+ sgr0=^C\s, smso=^CD, smul=^CP, tsl=\035\343,
vpa=\013%p1%{32}%+%c,
# p5: Prism-5
@@ -15763,25 +18014,27 @@ prism9|p9|P9|MDC Prism-9 in ANSII mode,
am, bw, hs, msgr, xenl, xon,
cols#80, it#8, lines#24, vt#3, wsl#72,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[<4l,
- clear=^L, cnorm=\E[<4h, cr=^M, csr=\E[%i%p1%d;%p2%d%%v,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ clear=^L, cnorm=\E[<4h, cr=\r, csr=\E[%i%p1%d;%p2%d%%v,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
dl=\E[%p1%dM, dl1=\E[M, dsl=\E[%}\024, ech=\E[%p1%dX,
ed=\E[J$<10>, el=\E[K, fsl=^T, home=\E[H, hpa=\E[%i%p1%d`,
- ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J,
+ ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\n,
is2=\E[&p\E[<12l\E F, kbs=^H, kclr=^L, kcub1=\E[D,
kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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~, 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[H, nel=^M^J, prot=\E[32%{, rc=\E[%z,
+ khome=\E[H, nel=\r\n, prot=\E[32%{, rc=\E[%z,
rep=\E[%p2%db%p1%c, rev=\E[7m, ri=\E[L, rmir=\E[4l,
rmso=\E[27m, rmul=\E[24m,
- rs2=\E[&p\E[<12l\E F\E[3g\E[9;17;25;33;41;49;57;65;73 N,
+ rs2=\E[&p\E[<12l\E\sF\E[3g\E[9;17;25;33;41;49;57;65;73
+ \sN,
sc=\E[%y,
- sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;m%?%p8%t\E[32%%{%;%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;m%?
+ %p8%t\E[32%%{%;%?%p9%t\016%e\017%;,
sgr0=\E[0m\017, smir=\E[4h, smso=\E[7m, smul=\E[4m,
tbc=\E[3g, tsl=\E[%i%p1%d%%}, vpa=\E[%i%p1%dd,
use=ansi+pp,
@@ -15891,15 +18144,15 @@ prism14-m-w|p14-m-w|P14-M-W|MDC Prism-14 in MDC emulation and 132 column mode,
p8gl|prism8gl|McDonnell-Douglas Prism-8 alternate definition,
am, bw, hs, mir,
cols#80, lines#24, ma#1, wsl#78, xmc#1,
- bel=^G, blink=^CB, clear=^L, cr=^M, cub1=^U, cud1=^J, cuf1=^F,
+ bel=^G, blink=^CB, clear=^L, cr=\r, cub1=^U, cud1=\n, cuf1=^F,
cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, dch1=\s^H, dim=^CA, dl1=^P,
- ed=\EJ, el=\EK, home=^A, ind=^J, invis=^CH, kbs=^H, kcub1=^U,
- kcud1=^J, kcuf1=^F, kcuu1=^Z, kdch1=\s^H, kdl1=^P, ked=\EJ,
+ ed=\EJ, el=\EK, home=^A, ind=\n, invis=^CH, kbs=^H, kcub1=^U,
+ kcud1=\n, kcuf1=^F, kcuu1=^Z, kdch1=\s^H, kdl1=^P, ked=\EJ,
kel=\EK, kf1=^A@\r, kf10=^AI\r, kf12=^AJ\r, kf13=^AK\r,
kf14=^AL\r, kf15=^AM\r, kf16=^AN\r, kf17=^AO\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=^A, lf1=F1, lf10=F10, lf2=F2,
- lf3=F3, lf4=F4, lf5=F5, lf6=F6, lf7=F7, lf8=F8, lf9=F9, nel=^J^M,
+ lf3=F3, lf4=F4, lf5=F5, lf6=F6, lf7=F7, lf8=F8, lf9=F9, nel=\n\r,
pad=\0, rev=^CD, rmso=^C\s, rmul=^C\s, sgr0=^C\s, smso=^CE,
smul=^C0,
@@ -15917,11 +18170,11 @@ p8gl|prism8gl|McDonnell-Douglas Prism-8 alternate definition,
act4|microterm|microterm act iv,
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=\014$<12/>, cr=^M, cub1=^H, cud1=^K, cuf1=^X,
+ bel=^G, clear=\014$<12/>, cr=\r, cub1=^H, cud1=^K, cuf1=^X,
cup=\024%p1%{24}%+%c%p2%p2%?%{47}%>%t%{48}%+%;%{80}%+%c,
cuu1=^Z, dch1=\004$<.1*/>, dl1=\027$<2.3*/>,
ed=\037$<2.2*/>, el=\036$<.1*/>, home=^],
- il1=\001<2.3*/>, ind=^J, kcub1=^H, kcud1=^K, kcuf1=^X,
+ il1=\001<2.3*/>, ind=\n, kcub1=^H, kcud1=^K, kcuf1=^X,
kcuu1=^Z,
# The padding on :sr: and :ta: for act5 and mime is a guess and not final.
# The act 5 has hardware tabs, but they are in columns 8, 16, 24, 32, 41 (!)...
@@ -15941,30 +18194,30 @@ mime-hb|half bright mime1,
mime|mime1|mime2|mimei|mimeii|microterm mime1,
OTbs, am,
cols#80, it#8, lines#24, vt#9,
- bel=^G, clear=^]^C, cr=^M, cub1=^H, cud1=^J, cuf1=^X,
+ bel=^G, clear=^]^C, cr=\r, cub1=^H, cud1=\n, cuf1=^X,
cup=\024%p1%{24}%+%c%p2%p2%?%{32}%>%t%{48}%+%;%{80}%+%c,
cuu1=^Z, dl1=\027$<80>, ed=^_, el=^^, home=^], ht=\011$<2>,
- il1=\001$<80>, ind=^J, is2=^S\E^Q, kcub1=^H, kcud1=^K,
+ il1=\001$<80>, ind=\n, is2=^S\E^Q, kcub1=^H, kcud1=^K,
kcuf1=^X, kcuu1=^Z, ri=\022$<3>, uc=^U,
# 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),
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=\EL, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=\EL, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EI, dch1=\ED,
dl1=\027$<20*>, ed=\EJ$<20*>, el=\EK, home=^^,
- il1=\001$<20*>, ind=^J, ip=$<2>, is2=\E), kcub1=^H, kcud1=^J,
+ il1=\001$<20*>, ind=\n, ip=$<2>, is2=\E), kcub1=^H, kcud1=\n,
kcuf1=^L, kcuu1=^K, ri=\EI, rmir=^Z, rmso=\E;, rmul=\E7,
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,
+ bel=^G, clear=\EL, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=^N,
dl1=\027$<20*>, ed=\EQ$<20*>, el=\EP, home=\EH, ht=^I,
- il1=\001$<20*>, ind=^J, ip=$<2>, is2=^Y, kcub1=\ED,
+ il1=\001$<20*>, ind=\n, ip=$<2>, is2=^Y, kcub1=\ED,
kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EA, rmir=^Z, rmso=\E9,
rmul=\E5, smir=^O, smso=\E8, smul=\E4,
# (mime3a: removed obsolete ":ma=^X ^K^J^Z^P:" -- esr)
@@ -15992,18 +18245,18 @@ mime314|mm314|mime 314,
# Microterm mime 340 from University of Wisconsin
mm340|mime340|mime 340,
cols#80, lines#24,
- clear=\032$<12/>, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ clear=\032$<12/>, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
dch1=\E#$<2.1*/>, dl1=\EV$<49.6/>, ed=\037$<2*/>,
- el=\EL$<2.1/>, ht=^I, il1=\EU$<46/>, ind=^J, is2=\E\,,
- kbs=^H, kcub1=^H, kcud1=^J, kcuu1=^K, nel=^M^J,
+ el=\EL$<2.1/>, ht=^I, il1=\EU$<46/>, ind=\n, is2=\E\,,
+ kbs=^H, kcub1=^H, kcud1=\n, kcuu1=^K, nel=\r\n,
# This came from University of Wisconsin marked "astro termcap for jooss".
# (mt4520-rv: removed obsolete ":kn#4:" and incorrect ":ri=\E[C:";
# also added <rmam>/<smam> based on the init string -- esr)
mt4520-rv|micro-term 4520 reverse video,
am, hs, msgr, xenl, xon,
cols#80, it#8, lines#24, wsl#80,
- bel=^G, clear=\E[H\E[J, cnorm=\E[0V\E8, cr=^M,
+ bel=^G, clear=\E[H\E[J, cnorm=\E[0V\E8, cr=\r,
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,
@@ -16011,7 +18264,8 @@ mt4520-rv|micro-term 4520 reverse video,
dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l$<200/>\E[?5h,
fsl=\E[?5l\E[?5h, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
- is2=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[1;24r\E[24;1H\E[H\E[J,
+ is2=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[1;24r\E[24;1H\E[H
+ \E[J,
kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H,
ll=\E[24;1H, nel=\EE, rc=\E8, rf=/usr/share/tabset/vt100,
@@ -16032,7 +18286,7 @@ mt4520-rv|micro-term 4520 reverse video,
ergo4000|microterm ergo 4000,
da, db, msgr,
cols#80, lines#66,
- bel=^G, clear=\E[H\E[2J$<80>, cr=^M, cub1=^H, cud1=\E[B,
+ bel=^G, clear=\E[H\E[2J$<80>, cr=\r, cub1=^H, cud1=\E[B,
cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
dch1=\E[1P$<80>, dl1=\E[1M$<5*>, ed=\E[0J$<15>,
el=\E[0K$<13>, ht=^I, il1=\E[1L$<5*>, ind=\ED$<20*>,
@@ -16075,7 +18329,7 @@ ncr260intpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard,
colors#8, pairs#64,
op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
use=ncr260vt300pp,
-# The Intecolor emulation of the NCR 2900/260C color terminal is basicly a
+# The Intecolor emulation of the NCR 2900/260C color terminal is basically 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,
@@ -16097,31 +18351,35 @@ ncr260vppp|NCR 2900_260 viewpoint,
cr=\r$<2>, cub1=\010$<2>, cud1=\n$<2>, cuf1=\006$<2>,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5>, cuu1=\032$<2>,
dch1=\EW$<2>, dim=\EGp, dl1=\El$<2>, dsl=\E`c, ed=\Ek$<2>,
- el=\EK$<2>, fsl=^M, home=\036$<2>, ht=^I, hts=\E1,
+ el=\EK$<2>, fsl=\r, home=\036$<2>, ht=^I, hts=\E1,
il1=\EM$<2>, ind=\n$<2>, invis=\EG1,
- is2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
+ is2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0
+ \EcC1\Ee7$<100>,
kDC=\El, kEND=\Ek, kHOM=^A, kPRT=\E7, kRIT=^F, ka1=^A, ka3=\EJ,
- kbs=^H, kc1=\ET, kc3=\EJ, kcub1=^U, kcud1=^J, kcuf1=^F,
- kcuu1=^Z, kdch1=\EW, kend=\EK, kf1=^B1\r, kf10=^B\:\r,
+ kbs=^H, kc1=\ET, kc3=\EJ, kcub1=^U, kcud1=\n, kcuf1=^F,
+ kcuu1=^Z, kdch1=\EW, kend=\EK, kf1=^B1\r, kf10=\002\:\r,
kf11=^B;\r, kf12=^B<\r, kf13=^B=\r, kf14=^B>\r, kf15=^B?\r,
kf16=^B@\r, kf17=^B!\r, kf18=^B"\r, kf19=^B#\r, kf2=^B2\r,
- kf20=^B$\r, kf21=\002%^M, kf22=^B&\r, kf23=^B'\r,
- kf24=^B(\r, kf25=^B)\r, kf26=^B*\r, kf27=^B+\r,
- kf28=^B\,\r, kf29=^B-\r, kf3=^B3\r, kf30=^B.\r, kf31=^B/\r,
- kf32=^B0\r, kf4=^B4\r, kf5=^B5\r, kf6=^B6\r, kf7=^B7\r,
- kf8=^B8\r, kf9=^B9\r, khome=^A, kich1=\Eq, knp=\EJ, kpp=\EJ,
- kprt=\EP, ll=\001$<5>, mc0=\EP$<100>, mc4=^T, mc5=^R,
+ kf20=^B$\r, kf21=^B%^M, kf22=^B&\r, kf23=^B'\r, kf24=^B(\r,
+ kf25=^B)\r, kf26=^B*\r, kf27=^B+\r, kf28=\002\,\r,
+ kf29=^B-\r, kf3=^B3\r, kf30=^B.\r, kf31=^B/\r, kf32=^B0\r,
+ kf4=^B4\r, kf5=^B5\r, kf6=^B6\r, kf7=^B7\r, kf8=^B8\r,
+ kf9=^B9\r, khome=^A, kich1=\Eq, knp=\EJ, kpp=\EJ, kprt=\EP,
+ ll=\001$<5>, mc0=\EP$<100>, mc4=^T, mc5=^R,
mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<5>,
nel=\037$<2>, rev=\EG4, ri=\Ej$<2>, rmacs=\EcB0\EH\003,
rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
- rs2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
+ rs2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0
+ \EcC1\Ee7$<100>,
sgr0=\EG0\EH\003, smacs=\EcB1\EH\002, smir=\Eq,
smso=\EG4, smul=\EG8, smxon=\Ec21, tsl=\EF,
ncr260vpwpp|NCR 2900_260 viewpoint wide mode,
cols#132,
cup=\Ea%i%p1%dR%p2%dC$<30>,
- is2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
- rs2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
+ is2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0
+ \EcC1\Ee7$<100>,
+ rs2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0
+ \EcC1\Ee7$<100>,
use=ncr260vppp,
ncr260vt100an|NCR 2900_260 vt100 with ansi kybd,
am, hs, mir, msgr, xenl, xon,
@@ -16140,37 +18398,46 @@ ncr260vt100an|NCR 2900_260 vt100 with ansi kybd,
hts=\EH, ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>,
il1=\E[L$<5>, ind=\ED$<5>, indn=\E[%p1%dE$<5>,
invis=\E[8m,
- is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
+ 200>,
kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kdch1=\E[3~, kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~,
knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, nel=\EE$<5>,
rc=\E8, rev=\E[7m, ri=\EM$<5>, rmacs=^O, rmir=\E[4l,
rmkx=\E[?1l\E>, rmso=\E[0m, rmul=\E[0m,
- rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
+ 200>,
sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<20>,
+ 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%;$<20>,
sgr0=\E[0m\017$<20>, smacs=^N, smir=\E[4h,
smkx=\E[?1h\E=, smso=\E[1;7m, smul=\E[4m, tbc=\E[3g,
tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, use=vt220+keypad,
ncr260vt100wan|NCR 2900_260 vt100 wide mode ansi kybd,
cols#132,
cup=\E[%i%p1%d;%p2%dH$<30>,
- is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
+ 200>,
+ rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
+ 200>,
use=ncr260vt100an,
ncr260vt100pp|NCR 2900_260 vt100 with PC+ kybd,
- is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
+ 200>,
ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
kend=\E[5~, khome=\E[2~, kich1=\E[1~, knp=\E[6~, kpp=\E[3~,
lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>,
- rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
+ 200>,
smkx=\E=, use=ncr260vt100an,
ncr260vt100wpp|NCR 2900_260 vt100 wide mode pc+ kybd,
cols#132,
cup=\E[%i%p1%d;%p2%dH$<30>,
- is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
+ 200>,
+ rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
+ 200>,
use=ncr260vt100pp,
ncr260vt200an|NCR 2900_260 vt200 with ansi kybd,
am, hs, mir, msgr, xenl, xon,
@@ -16188,7 +18455,8 @@ ncr260vt200an|NCR 2900_260 vt200 with ansi kybd,
fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH,
ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>,
ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m,
- is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
+ 200>,
kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kdch1=\E[3~, kf0=\EOy, kf10=\E[21~, kf11=\E[23~,
kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
@@ -16203,9 +18471,11 @@ ncr260vt200an|NCR 2900_260 vt200 with ansi kybd,
mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m,
ri=\EM$<5>, rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l,
rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
- rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
+ 200>,
sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<20>,
+ 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%;$<20>,
sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>,
@@ -16214,8 +18484,7 @@ ncr260vt200wan|NCR 2900_260 vt200 wide mode ansi kybd,
cols#132,
cup=\E[%i%p1%d;%p2%dH$<30>,
is2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>,
- rs2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>,
- use=ncr260vt200an,
+ rs2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>, use=ncr260vt200an,
ncr260vt200pp|NCR 2900_260 vt200 with pc+ kybd,
ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
@@ -16225,8 +18494,10 @@ ncr260vt200pp|NCR 2900_260 vt200 with pc+ kybd,
ncr260vt200wpp|NCR 2900_260 vt200 wide mode pc+ kybd,
cols#132,
cup=\E[%i%p1%d;%p2%dH$<30>,
- is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
+ 200>,
+ rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
+ 200>,
use=ncr260vt200pp,
ncr260vt300an|NCR 2900_260 vt300 with ansi kybd,
am, hs, mir, msgr, xenl, xon,
@@ -16244,7 +18515,8 @@ ncr260vt300an|NCR 2900_260 vt300 with ansi kybd,
fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH,
ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>,
ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m,
- is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1
+ ;1H\E>$<200>,
kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kdch1=\E[3~, kf0=\EOy, kf10=\E[21~, kf11=\E[23~,
kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
@@ -16259,9 +18531,11 @@ ncr260vt300an|NCR 2900_260 vt300 with ansi kybd,
nel=\EE, rc=\E8, rev=\E[7m, ri=\EM$<5>, rmacs=\017$<20>,
rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
rmul=\E[24m,
- rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1
+ ;1H\E>$<200>,
sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<20>,
+ 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%;$<20>,
sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>,
@@ -16269,8 +18543,10 @@ ncr260vt300an|NCR 2900_260 vt300 with ansi kybd,
ncr260vt300wan|NCR 2900_260 vt300 wide mode ansi kybd,
cols#132,
cup=\E[%i%p1%d;%p2%dH$<30>,
- is2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>,
- rs2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>,
+ is2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1
+ H$<200>,
+ rs2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1
+ H$<200>,
use=ncr260vt300an,
ncr260vt300pp|NCR 2900_260 vt300 with pc+ kybd,
ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
@@ -16281,8 +18557,10 @@ ncr260vt300pp|NCR 2900_260 vt300 with pc+ kybd,
NCR260VT300WPP|ncr260vt300wpp|NCR 2900_260 vt300 wide mode pc+ kybd,
cols#132,
cup=\E[%i%p1%d;%p2%dH$<30>,
- is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1
+ ;1H\E>$<200>,
+ rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1
+ ;1H\E>$<200>,
use=ncr260vt300pp,
# This terminfo file contains color capabilities for the Wyse325 emulation of
# the NCR 2900/260C color terminal. Because of the structure of the command
@@ -16292,26 +18570,27 @@ NCR260VT300WPP|ncr260vt300wpp|NCR 2900_260 vt300 wide mode pc+ kybd,
# 'setf' definition. The escape sequence to set color attributes is
# ESC d y <foreground_color> <background_color> 1
# In addition, the background color can be changed through the desk accessories.
-# The capablitiy 'op' sets colors to green on black (default combination).
+# The capability 'op' sets colors to green on black (default combination).
#
# NOTE: The NCR Unix System Administrator's Shell will not function properly
-# if the 'pairs' capability is defined. Un-Comment the 'pairs'
+# if the 'pairs' capability is defined. Un-Comment the 'pairs'
# capability and recompile if you wish to have it included.
#
ncr260wy325pp|NCR 2900_260 wyse 325,
am, bw, hs, km, mc5i, mir, msgr, xon,
colors#16, cols#80, lines#24, ncv#33, nlab#32,
acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
- cbt=\EI, civis=\E`0, clear=\E*$<10>, cnorm=\E`1, cr=^M,
+ cbt=\EI, civis=\E`0, clear=\E*$<10>, cnorm=\E`1, cr=\r,
cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>,
cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c,
- ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<5>, ht=^I,
+ ed=\Ey$<5>, el=\Et$<5>, fsl=\r, home=\036$<5>, ht=^I,
hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1,
- is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9
+ \Ee7$<100>,
kDC=\ER, kEND=\EY, kHOM=\E{, kNXT=\EK, kPRT=\E7, kPRV=\EJ,
kRIT=^L, ka1=^^, kb2=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI,
- kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kend=\ET,
+ kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kend=\ET,
kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r,
kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r,
kf19=^Ab\r, kf2=^AA\r, kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r,
@@ -16323,17 +18602,25 @@ ncr260wy325pp|NCR 2900_260 wyse 325,
mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>,
nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0,
rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
- rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9
+ \Ee7$<100>,
setb=\s,
- setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{64}%e%p1%{8}%=%t%{57}%e%p1%{9}%=%t%{58}%e%p1%{10}%=%t%{59}%e%p1%{11}%=%t%{60}%e%p1%{12}%=%t%{61}%e%p1%{13}%=%t%{62}%e%p1%{14}%=%t%{63}%e%p1%{15}%=%t%{56}%;\Edy%c11$<100>,
+ setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}
+ %e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}
+ %e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{64}%e%p1%{8}%=%t%{57}
+ %e%p1%{9}%=%t%{58}%e%p1%{10}%=%t%{59}%e%p1%{11}%=%t
+ %{60}%e%p1%{12}%=%t%{61}%e%p1%{13}%=%t%{62}%e%p1%{14}%=
+ %t%{63}%e%p1%{15}%=%t%{56}%;\Edy%c11$<100>,
sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH\002\EcB1, smam=\Ed/,
smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0,
tsl=\EF,
ncr260wy325wpp|NCR 2900_260 wyse 325 wide mode,
cols#132,
cup=\Ea%i%p1%dR%p2%dC$<30>,
- is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
- rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9
+ \Ee7$<100>,
+ rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9
+ \Ee7$<100>,
use=ncr260wy325pp,
# This definition for Wyse 350 supports several attributes. This means
# that it has magic cookies (extra spaces where the attributes begin).
@@ -16348,22 +18635,23 @@ ncr260wy325wpp|NCR 2900_260 wyse 325 wide mode,
# are numbered 0 through 15.
#
# NOTE: The NCR Unix System Administrator's Shell does not function properly
-# with the 'pairs' capability defined as below. If you wish to
+# with the 'pairs' capability defined as below. If you wish to
# have it included, Un-comment it and recompile (using 'tic').
#
ncr260wy350pp|NCR 2900_260 wyse 350,
am, bw, hs, km, mc5i, mir, msgr, xon,
colors#16, cols#80, lines#24, ncv#33, nlab#32, pairs#16, xmc#1,
acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
- cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M,
+ cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=\r,
cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<40>, cuu1=\013$<5>,
cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c,
- ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<10>, ht=^I,
+ ed=\Ey$<5>, el=\Et$<5>, fsl=\r, home=\036$<10>, ht=^I,
hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1,
- is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9
+ \Ee7$<100>,
kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H,
- kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L,
+ kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=\n, kcuf1=^L,
kcuu1=^K, kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r,
kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r,
@@ -16376,17 +18664,25 @@ ncr260wy350pp|NCR 2900_260 wyse 350,
mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<20>,
nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0,
rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
- rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9
+ \Ee7$<100>,
setb=\s,
- setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{102}%e%p1%{8}%=%t%{97}%e%p1%{9}%=%t%{98}%e%p1%{10}%=%t%{99}%e%p1%{11}%=%t%{101}%e%p1%{12}%=%t%{106}%e%p1%{13}%=%t%{110}%e%p1%{14}%=%t%{111}%e%p1%{15}%=%t%{56}%;\Em0%c$<100>,
+ setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}
+ %e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}
+ %e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{102}%e%p1%{8}%=%t%{97}
+ %e%p1%{9}%=%t%{98}%e%p1%{10}%=%t%{99}%e%p1%{11}%=%t
+ %{101}%e%p1%{12}%=%t%{106}%e%p1%{13}%=%t%{110}%e%p1
+ %{14}%=%t%{111}%e%p1%{15}%=%t%{56}%;\Em0%c$<100>,
sgr0=\EG0\EH\003\EcD, smacs=\EH\002\EcB1, smam=\Ed/,
smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0,
tsl=\EF,
ncr260wy350wpp|NCR 2900_260 wyse 350 wide mode,
cols#132,
cup=\Ea%i%p1%dR%p2%dC$<30>,
- is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
- rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
+ is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9
+ \Ee7$<200>,
+ rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9
+ \Ee7$<200>,
use=ncr260wy350pp,
# This definition for Wyse 50+ supports several attributes. This means
# that it has magic cookies (extra spaces where the attributes begin).
@@ -16402,16 +18698,17 @@ ncr260wy50+pp|NCR 2900_260 wyse 50+,
am, bw, hs, km, mc5i, mir, msgr, xon,
cols#80, lines#24, nlab#32, xmc#1,
acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2,
- cbt=\EI$<5>, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M,
+ cbt=\EI$<5>, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=\r,
cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<30>, cuu1=\013$<5>,
cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c,
- ed=\EY$<5>, el=\ET$<5>, fsl=^M, home=\036$<10>,
+ ed=\EY$<5>, el=\ET$<5>, fsl=\r, home=\036$<10>,
ht=\011$<5>, hts=\E1$<5>, il1=\EE$<5>, ind=\n$<5>,
invis=\EG1,
- is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"
+ \Ee4\Ex@\E`9\Ee7$<100>,
kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H,
- kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L,
+ kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=\n, kcuf1=^L,
kcuu1=^K, kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r,
kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r,
@@ -16424,30 +18721,34 @@ ncr260wy50+pp|NCR 2900_260 wyse 50+,
mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>,
nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed.,
rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
- rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"
+ \Ee4\Ex@\E`9\Ee7$<100>,
sgr0=\EG0\EH\003$<15>, smacs=\EH^B, smam=\Ed/, smir=\Eq,
smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<5>, tsl=\EF,
ncr260wy50+wpp|NCR 2900_260 wyse 50+ wide mode,
cols#132,
cup=\Ea%i%p1%dR%p2%dC$<30>,
- is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
- rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
+ is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"
+ \Ee4\Ex@\E`9\Ee7$<200>,
+ rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"
+ \Ee4\Ex@\E`9\Ee7$<200>,
use=ncr260wy50+pp,
ncr260wy60pp|NCR 2900_260 wyse 60,
am, bw, hs, km, mc5i, mir, msgr, xon,
cols#80, lines#24, nlab#32,
acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
cbt=\EI$<15>, civis=\E`0, clear=\E*$<100>, cnorm=\E`1,
- cr=^M, cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
+ cr=\r, cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>,
cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c,
- ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<25>,
+ ed=\Ey$<5>, el=\Et$<5>, fsl=\r, home=\036$<25>,
ht=\011$<15>, hts=\E1$<15>, il1=\EE$<5>, ind=\n$<5>,
invis=\EG1,
- is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"
+ \Ee4\Ex@\E`9\Ee7$<100>,
kDC=\ER, kEND=\EY, kHOM=\E{, kNXT=\EK, kPRT=\E7, kPRV=\EJ,
kRIT=^L, ka1=^^, kb2=\EJ, kbs=^H, kc1=\ET, kc3=\EK,
- kcbt=\EI$<15>, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
+ kcbt=\EI$<15>, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K,
kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r, kf20=^Ac\r,
@@ -16459,15 +18760,18 @@ ncr260wy60pp|NCR 2900_260 wyse 60,
mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<30>,
nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed.,
rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
- rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"
+ \Ee4\Ex@\E`9\Ee7$<100>,
sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH^B, smam=\Ed/,
smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<15>,
tsl=\EF,
ncr260wy60wpp|NCR 2900_260 wyse 60 wide mode,
cols#132,
cup=\Ea%i%p1%dR%p2%dC$<30>,
- is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
- rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"
+ \Ee4\Ex@\E`9\Ee7$<100>,
+ rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"
+ \Ee4\Ex@\E`9\Ee7$<100>,
use=ncr260wy60pp,
ncr160vppp|NCR 2900_160 viewpoint,
use=ncr260vppp,
@@ -16510,7 +18814,7 @@ ncrvt100an|ncrvt100pp|NCR vt100 for the 2900 terminal,
cols#80, it#8, lines#24, nlab#32,
acsc=``aaffgghhiijjkkllmmnnqqttuuvvwwxxyyzz~~,
bel=^G, blink=\E[5m$<30>, bold=\E[1m$<30>,
- clear=\E[2J\E[1;1H$<300>, cr=^M,
+ clear=\E[2J\E[1;1H$<300>, cr=\r,
csr=\E[%i%p1%d;%p2%dr$<100>, cub=\E[%p1%dD$<30>,
cub1=\E[D$<2>, cud=\E[%p1%dB$<30>, cud1=\E[B$<2>,
cuf=\E[%p1%dC$<30>, cuf1=\E[C$<2>,
@@ -16523,20 +18827,23 @@ ncrvt100an|ncrvt100pp|NCR vt100 for the 2900 terminal,
ind=\ED,
is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3l\E(B\E)0$<200>,
kLFT=\E[D, kRIT=\E[C, ka1=\E[H, kbs=^H, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kent=^M, kf1=\EOP,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kent=\r, kf1=\EOP,
kf2=\EOQ, kf3=\EOR, kf4=\EOS, mc0=\E[i$<100>, nel=\EE,
rc=\E8, rev=\E[7m$<30>, ri=\EM$<50>, rmacs=\017$<90>,
rmir=\E[4l$<80>, rmso=\E[0m$<30>, rmul=\E[0m$<30>,
- rs2=\Ec\E[12;31h\E[?3;4;5;10l\E[?6;7;19;25h\E[33;34l\E[0m\E(B\E)0\E%/0n\E[P\031$<200>,
+ rs2=\Ec\E[12;31h\E[?3;4;5;10l\E[?6;7;19;25h\E[33;34l\E[0m\E(
+ B\E)0\E%/0n\E[P\031$<200>,
sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<100>,
+ sgr=%?%p9%t\016%e\017%;\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1
+ %p3%|%t;7%;%?%p4%t;5%;m$<100>,
sgr0=\017\E[0m$<120>, smacs=\016$<90>, smir=\E[4h$<80>,
smso=\E[7m$<30>, smul=\E[4m$<30>, tbc=\E[3g$<40>,
tsl=\E[>+1$<70>,
ncrvt100wan|NCRVT100WPP|ncrvt100wpp|NCR VT100 emulation of the 2900 terminal,
cols#132,
is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3h\E(B\E)0$<200>,
- rs2=\Ec\E[12;31h\E[?4;5;10l\E?3;6;7;19;25h\E[33;34l\E[0m\E(B\E)0\E%/0n\E[P\031$<200>,
+ rs2=\Ec\E[12;31h\E[?4;5;10l\E?3;6;7;19;25h\E[33;34l\E[0m\E(B
+ \E)0\E%/0n\E[P\031$<200>,
use=ncrvt100an,
#
# Vendor-supplied NCR termcaps end here
@@ -16594,25 +18901,26 @@ ncrvt100wan|NCRVT100WPP|ncrvt100wpp|NCR VT100 emulation of the 2900 terminal,
# 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,
+ncr7900i|ncr7900|n7900|ncr 7900 model 1,
am, bw, ul,
cols#80, lines#24, xmc#1,
- bel=^G, blink=\E0B, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F,
- cup=\E1%p2%c%p1%c, cuu1=^Z, dim=\E0A, ed=\Ek, el=\EK, ind=^J,
- is2=\E0@\010\E3\E4\E7, kcub1=^U, kcud1=^J, kcuf1=^F,
+ bel=^G, blink=\E0B, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^F,
+ cup=\E1%p2%c%p1%c, cuu1=^Z, dim=\E0A, ed=\Ek, el=\EK, ind=\n,
+ is2=\E0@\010\E3\E4\E7, kcub1=^U, kcud1=\n, kcuf1=^F,
kcuu1=^Z, khome=^A, ll=^A, mc4=^T, mc5=^R, rev=\E0P, rmso=\E0@,
rmul=\E0@,
- sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c,
+ sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}
+ %*%+%c,
sgr0=\E0@, smso=\E0Q, smul=\E0`,
ncr7900iv|ncr 7900 model 4,
am, bw, eslok, hs,
cols#80, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n,
cup=\013%p1%{64}%+%c\E\005%p2%02d, dl1=\E^O, dsl=\Ey1,
- fsl=\Ek\Ey5, home=\013@\E^E00, il1=\E^N, ind=^J, kbs=^H,
+ fsl=\Ek\Ey5, home=\013@\E^E00, il1=\E^N, ind=\n, kbs=^H,
kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\ES, kf2=\ET,
kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER,
- khome=\EH, lf6=blue, lf7=red, lf8=white, nel=^M^J,
+ khome=\EH, lf6=blue, lf7=red, lf8=white, nel=\r\n,
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.
@@ -16621,14 +18929,15 @@ ncr7900iv|ncr 7900 model 4,
ncr7901|ncr 7901 model,
am, bw, ul,
cols#80, lines#24,
- bel=^G, blink=\E0B, civis=^W, clear=^L, cnorm=^X, cr=^M,
- cub1=^H, cud1=^J, cuf1=^F,
+ bel=^G, blink=\E0B, civis=^W, clear=^L, cnorm=^X, cr=\r,
+ cub1=^H, cud1=\n, cuf1=^F,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dim=\E0A,
ed=\Ek, el=\EK,
- hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c, ind=^J,
- is2=\E4^O, kclr=^L, kcub1=^U, kcud1=^J, kcuf1=^F, kcuu1=^Z,
+ hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c, ind=\n,
+ is2=\E4^O, kclr=^L, kcub1=^U, kcud1=\n, kcuf1=^F, kcuu1=^Z,
khome=^H, ll=^A, mc4=^T, mc5=^R, rev=\E0P, rmso=^O, rmul=^O,
- sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c\016,
+ sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}
+ %*%+%c\016,
sgr0=^O, smso=\E0Q\016, smul=\E0`\016,
vpa=\013%p1%{64}%+%c,
@@ -16659,14 +18968,14 @@ ndr9500|nd9500|Newbury Data 9500,
am, bw, hs, mc5i, mir, msgr, ul, xon,
cols#80, lines#24, wsl#79,
acsc=jDkClBmAnIqKtMuLvOwNxJ, bel=^G, cbt=\EI, civis=\E.0,
- clear=\E;, cnorm=\E.1, cr=^M, cub1=^H, cud1=^V, cuf1=^L,
+ clear=\E;, cnorm=\E.1, cr=\r, cub1=^H, cud1=^V, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
dim=\E), dl1=\ER, dsl=\Eh, ed=\EY, el=\ET,
- flash=\Eb$<50/>\Ed, fsl=^M, home=^^, ht=^I, hts=\E1,
- ich1=\EQ, il1=\EE, ind=^J, is2=\Ew\E'\EDF\El\Er\EO,
+ flash=\Eb$<50/>\Ed, fsl=\r, home=^^, ht=^I, hts=\E1,
+ ich1=\EQ, il1=\EE, ind=\n, is2=\Ew\E'\EDF\El\Er\EO,
kDC=\Er, kDL=\EO, kEOL=\Et, kIC=\Eq, kcbt=\EI, kclr=^Z,
kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER,
- ked=\EY, kel=\ET, kent=^M, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
+ ked=\EY, kel=\ET, kent=\r, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
kf12=^A`\r, kf13=^Aa\r, kf14=^Ab\r, kf15=^Ac\r, kf16=^Ad\r,
kf17=^Ae\r, kf18=^Af\r, kf19=^Ag\r, kf2=^AA\r, kf20=^Ah\r,
kf21=^Ai\r, kf22=^Aj\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
@@ -16694,7 +19003,8 @@ ndr9500-mc|NDR 9500 with magic cookies (enables underline inverse video invisibl
msgr@,
xmc#1,
blink=\EG2, invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0,
- sgr=\E%%\E(%?%p5%p8%|%t\E)%;%?%p9%t\E$%;\EG%{48}%?%p7%t%{1}%+%;%?%p4%t%{2}%+%;%?%p3%p1%|%t%{4}%+%;%?%p2%t%{8}%+%;%c,
+ sgr=\E%%\E(%?%p5%p8%|%t\E)%;%?%p9%t\E$%;\EG%{48}%?%p7%t%{1}
+ %+%;%?%p4%t%{2}%+%;%?%p3%p1%|%t%{4}%+%;%?%p2%t%{8}%+%;%c,
sgr0=\EG0\E%%\E(, smso=\EG4, smul=\EG8, use=ndr9500,
ndr9500-25-mc|NDR 500 with 25 lines and magic cookies,
@@ -16716,47 +19026,47 @@ ndr9500-25-mc-nl|NDR 9500 with 25 lines and magic cookies and no status line,
bantam|pe550|pe6100|perkin elmer 550,
OTbs,
cols#80, lines#24,
- bel=^G, clear=\EK$<20>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ bel=^G, clear=\EK$<20>, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
- el=\EI$<20>, home=\EH, ind=^J, ll=\EH\EA,
+ el=\EI$<20>, home=\EH, ind=\n, ll=\EH\EA,
fox|pe1100|perkin elmer 1100,
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, clear=\EH\EJ$<132>, cr=\r, cub1=^H, cud1=\n,
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,
+ home=\EH, hts=\E1, ind=\n, ll=\EH\EA, tbc=\E3,
owl|pe1200|perkin elmer 1200,
OTbs, am, in,
cols#80, lines#24,
- bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, clear=\EH\EJ$<132>, cr=\r, cub1=^H, cud1=\n,
cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
dch1=\EO$<5.5*>, dl1=\EM$<5.5*>, ed=\EJ$<5.5*>,
el=\EI$<5.5>, flash=\020\002$<200/>\020\003, home=\EH,
- hts=\E1, ich1=\EN, il1=\EL$<5.5*>, ind=^J, ip=$<5.5*>,
+ hts=\E1, ich1=\EN, il1=\EL$<5.5*>, ind=\n, ip=$<5.5*>,
kbs=^H, kf0=\ERJ, kf1=\ERA, kf2=\ERB, kf3=\ERC, kf4=\ERD,
kf5=\ERE, kf6=\ERF, kf7=\ERG, kf8=\ERH, kf9=\ERI, ll=\EH\EA,
rmso=\E!\0, sgr0=\E!\0, smso=\E!^H, tbc=\E3,
pe1251|pe6300|pe6312|perkin elmer 1251,
am,
cols#80, it#8, lines#24, pb#300, vt#8, xmc#1,
- bel=^G, clear=\EK$<332>, cr=^M, cub1=\ED, cud1=\EB, cuf1=\EC,
+ bel=^G, clear=\EK$<332>, cr=\r, cub1=\ED, cud1=\EB, cuf1=\EC,
cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
- ed=\EJ$<20*>, el=\EI$<10*>, home=\EH, hts=\E1, ind=^J,
+ ed=\EJ$<20*>, el=\EI$<10*>, home=\EH, hts=\E1, ind=\n,
kf0=\ERA, kf1=\ERB, kf10=\ERK, kf2=\ERC, kf3=\ERD, kf4=\ERE,
kf5=\ERF, kf6=\ERG, kf7=\ERH, kf8=\ERI, kf9=\ERJ, tbc=\E3,
# (pe7000m: this had
-# rmul=\E!\0, smul=\E!\040,
+# rmul=\E!\0, smul=\E!\040,
# which is probably wrong, it collides with kf0
pe7000m|perkin elmer 7000 series monochrome monitor,
am,
cols#80, lines#24,
- bel=^G, cbt=\E!Y, clear=\EK, cr=^M, cub1=\ED, cud1=\EB,
+ bel=^G, cbt=\E!Y, clear=\EK, cr=\r, cub1=\ED, cud1=\EB,
cuf1=\EC, cup=\ES%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
- ed=\EJ, el=\EI, home=\EH, ind=^J,
+ ed=\EJ, el=\EI, home=\EH, ind=\n,
is1=\E!\0\EW 7o\Egf\ES7\s, kbs=^H, kcub1=\E!V,
kcud1=\E!U, kcuf1=\E!W, kcuu1=\E!T, kf0=\E!\0, kf1=\E!^A,
- kf10=\E!^J, kf2=\E!^B, kf3=\E!^C, kf4=\E!^D, kf5=\E!^E,
+ kf10=\E!\n, kf2=\E!^B, kf3=\E!^C, kf4=\E!^D, kf5=\E!^E,
kf6=\E!^F, kf7=\E!^G, kf8=\E!^H, kf9=\E!^I, khome=\E!S,
ll=\ES7\s, ri=\ER,
pe7000c|perkin elmer 7000 series colour monitor,
@@ -16777,13 +19087,13 @@ uts30|sperry uts30 with cp/m@1R1,
cols#80, lines#24, wsl#40,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\ER, clear=^L,
- cnorm=\ES, cr=^M, csr=\EU%p1%{32}%+%c%p2%{32}%+%c,
+ cnorm=\ES, cr=\r, csr=\EU%p1%{32}%+%c%p2%{32}%+%c,
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=\EM,
- dl=\E[%p1%dM, dl1=\EL, ed=\E[J, el=\E[K, fsl=^M, home=\E[H,
+ dl=\E[%p1%dM, dl1=\EL, ed=\E[J, el=\E[K, fsl=\r, home=\E[H,
ht=^I, ich=\E[%p1%d@, ich1=\EO, il=\E[%p1%dL, il1=\EN,
- ind=^J, indn=\E[%p1%dB, is2=\E[U 7\E[24;1H, kbs=^H,
+ ind=\n, indn=\E[%p1%dB, is2=\E[U 7\E[24;1H, kbs=^H,
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, khome=\E[H,
rc=\EX, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EI,
rin=\E[%p1%dA, rmacs=\Ed, rmam=\E[?7l, rmso=\E[m,
@@ -16810,9 +19120,9 @@ tandem6510|adm3a repackaged by Tandem,
tandem653|t653x|Tandem 653x multipage terminal,
OTbs, am, da, db, hs,
cols#80, lines#24, wsl#64, xmc#1,
- clear=\EI, cub1=^H, cud1=^J, cuf1=\EC,
+ clear=\EI, cub1=^H, cud1=\n, cuf1=\EC,
cup=\023%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dsl=\Eo\r,
- ed=\EJ, el=\EK, fsl=^M, home=\EH, ind=\ES, ri=\ET, rmso=\E6\s,
+ ed=\EJ, el=\EK, fsl=\r, home=\EH, ind=\ES, ri=\ET, rmso=\E6\s,
rmul=\E6\s, sgr0=\E6\s, smso=\E6$, smul=\E60, tsl=\Eo,
#### Tandy/Radio Shack
@@ -16823,7 +19133,7 @@ tandem653|t653x|Tandem 653x multipage terminal,
dmterm|deskmate terminal,
am, bw,
cols#80, lines#24,
- bel=^G, civis=\EG5, clear=\Ej, cnorm=\EG6, cr=^M, cub1=^H,
+ bel=^G, civis=\EG5, clear=\Ej, cnorm=\EG6, cr=\r, cub1=^H,
cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
cuu1=\EA, dch1=\ES, dl1=\ER, ed=\EJ, el=\EK, home=\EH, ht=^I,
ich1=\EQ, il1=\EP, ind=\EX, invis@, kcub1=\ED, kcud1=\EB,
@@ -16836,11 +19146,11 @@ dt100|dt-100|Tandy DT-100 terminal,
xon,
cols#80, lines#24, xmc#1,
acsc=jjkkllmmnnqqttuuvvwwxx, bel=^G, civis=\E[?25l,
- clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+ clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r,
csr=\E[%p1%2d;%p2%2dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
cup=\010\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, is2=\E[?3l\E)0\E(B, kcub1=\E[D,
+ il1=\E[L, ind=\n, is2=\E[?3l\E)0\E(B, kcub1=\E[D,
kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[?3i,
kf10=\E[?5i, kf2=\E[2i, kf3=\E[@, kf4=\E[M, kf5=\E[17~,
kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~, khome=\E[H,
@@ -16853,11 +19163,11 @@ dt110|Tandy DT-110 emulating ansi,
xon,
cols#80, lines#24,
acsc=jjkkllmmnnqqttuuvvwwxx, bel=^G, civis=\E[?25l,
- clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+ clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r,
csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[0P,
dl1=\E[0M, ed=\E[0J, el=\E[0K, enacs=\E(B\E)0, home=\E[H,
- ht=^I, ich1=\E[0@, il1=\E[0L, ind=^J, is2=\E[?3l\E)0\E(B,
+ ht=^I, ich1=\E[0@, il1=\E[0L, ind=\n, is2=\E[?3l\E)0\E(B,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[K,
kf1=\E[1~, kf10=\E[10~, kf2=\E[2~, kf3=\E[3~, kf4=\E[4~,
kf5=\E[5~, kf6=\E[6~, kf7=\E[7~, kf8=\E[8~, kf9=\E[9~,
@@ -16868,7 +19178,7 @@ dt110|Tandy DT-110 emulating ansi,
pt210|TRS-80 PT-210 printing terminal,
hc, os,
cols#80,
- bel=^G, cr=^M, cud1=^J, ind=^J,
+ bel=^G, cr=\r, cud1=\n, ind=\n,
#### Tektronix (tek)
#
@@ -16881,7 +19191,7 @@ pt210|TRS-80 PT-210 printing terminal,
tek|tek4012|tektronix 4012,
OTbs, os,
cols#75, lines#35,
- bel=^G, clear=\E\014$<1000>, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, clear=\E\014$<1000>, cr=\r, cub1=^H, cud1=\n,
ff=\014$<1000>, is2=\E^O,
# (tek4013: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
tek4013|tektronix 4013,
@@ -16910,7 +19220,7 @@ tek4015-sm|tektronix 4015 in small font,
tek4023|tektronix 4023,
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,
+ OTnl=\n, bel=^G, clear=\E\014$<4/>, cr=\r, cub1=^H, cud1=\n,
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;
@@ -16931,21 +19241,24 @@ tek4023|tektronix 4023,
tek4024|tek4025|tek4027|tektronix 4024/4025/4027,
OTbs, am, da, db,
cols#80, it#8, lines#34, lm#0,
- bel=^G, clear=\037era\r\n\n, cmdch=^_, cr=^M,
+ bel=^G, clear=\037era\r\n\n, cmdch=^_, cr=\r,
cub=\037lef %p1%d\r, cub1=^H, cud=\037dow %p1%d\r,
- cud1=^F^J, cuf=\037rig %p1%d\r, cuf1=\037rig\r,
+ cud1=^F\n, cuf=\037rig %p1%d\r, cuf1=\037rig\r,
cuu=\037up %p1%d\r, cuu1=^K, dch1=\037dch\r,
dl=\037dli %p1%d\r\006, dl1=\037dli\r\006,
ed=\037dli 50\r, ht=^I, ich1=\037ich\r \010,
il=\037up\r\037ili %p1%d\r, il1=\037up\r\037ili\r,
- ind=^F^J,
+ ind=^F\n,
is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r,
- rmkx=\037lea p2\r\037lea p4\r\037lea p6\r\037lea p8\r\037lea f5\r,
- smkx=\037lea p4 /h/\r\037lea p8 /k/\r\037lea p6 / /\r\037lea p2 /j/\r\037lea f5 /H/\r,
+ rmkx=\037lea\sp2\r\037lea\sp4\r\037lea\sp6\r\037lea\sp8\r
+ \037lea\sf5\r,
+ smkx=\037lea\sp4\s/h/\r\037lea\sp8\s/k/\r\037lea\sp6\s/\s/
+ \r\037lea\sp2\s/j/\r\037lea\sf5\s/H/\r,
tek4025-17|tek 4025 17 line window,
lines#17, use=tek4025,
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,
+ is2=!com\s31\r\n\037sto\s9\s17\s25\s33\s41\s49\s57\s65\s73
+ \r\037wor\s17\r\037mon\s17\r,
rmcup=\037mon h\r, rmso=\037att s\r, smcup=\037wor h\r,
smso=\037att e\r, use=tek4025-17,
tek4025-ex|tek4027-ex|tek 4025/4027 w/!,
@@ -16975,13 +19288,16 @@ tek4025a|Tektronix 4025A,
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;,
- cud1=^J, cuf=\035rig %p1%d;, cuf1=\035rig;,
+ cr=\r, cub=\035lef %p1%d;, cub1=^H, cud=\035dow %p1%d;,
+ cud1=\n, cuf=\035rig %p1%d;, cuf1=\035rig;,
cuu=\035up %p1%d;, cuu1=^K, dch=\035dch %p1%d;,
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;,
+ il1=\013\035ili;, ind=\n, indn=\035dow %p1%d;,
+ rs2=!com\s29\035del\s0\035rss\st\035buf\035buf\sn\035cle
+ \035dis\035dup\035ech\sr\035eol\035era\sg\035for\sn
+ \035pad\s203\035pad\s209\035sno\sn\035sto\s9\s17\s25
+ \s33\s41\s49\s57\s65\s73\035wor\s0;,
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.
@@ -16992,21 +19308,22 @@ tek4025a|Tektronix 4025A,
tek4025-cr|tek 4025 for curses and rogue,
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,
+ clear=\037era;, cub1=^H, cud1=^F\n, cuf1=\037rig;,
+ cup=\037jum%i%p1%d\,%p2%d;, cuu1=^K, ht=^I, ind=^F\n,
is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r,
rmcup=\037wor 0, smcup=\037wor 33h,
# next two lines commented out since curses only allows 128 chars, sigh.
# :ti=\037lea p1/b/\037lea p2/j/\037lea p3/n/\037lea p4/h/\037lea p5/ /\037lea p6/l/\037lea p7/y/\037lea p8/k/\037lea p9/u/\037lea p./f/\037lea pt/`era w/13\037lea p0/s/\037wor 33h:\
# :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,
+ is2=\037com\s33\r\n!sto\s9\,17\,25\,33\,41\,49\,57\,65\,73
+ \r,
rmcup=\037com 33\r, smcup=!com 31\r, use=tek4025,
tek4105|tektronix 4105,
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, cub1=\E[1D, cud1=\E[1B, cuf1=\E[1C,
+ clear=\E[2J\E[H, cr=\r, cub1=\E[1D, cud1=\E[1B, cuf1=\E[1C,
cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[1A, dch1=\E[1P,
dim=\E[=1;<6m, dl1=\E[1M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
il1=\E[1L, ind=\E[S, invis=\E[=6;<5, is1=\E%!1\E[m,
@@ -17023,17 +19340,18 @@ tek4105-30|4015 emulating 30 line vt100,
cols#80, it#8, lines#30, vt#3,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
- clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
cuf=\E[%p1%dC, cuf1=\E[C$<2>,
cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
- enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=^H,
+ enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^H,
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8,
rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>,
rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
+ %;m%?%p9%t\016%e\017%;$<2>,
sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
use=vt100+fnkeys,
@@ -17064,22 +19382,25 @@ tek4105a|Tektronix 4105,
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,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ cnorm=\E%!0\ETD10\E%!1, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
- il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, is2=\E%!1,
- kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
- kf0=\EOA, kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ,
- 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,
- 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>,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, is2=\E%!1, kbs=^H,
+ kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOA,
+ kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ, 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, rmacs=^O,
+ rmcup=\E%!0\ELBH=\E%!1, 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,
+ use=ecma+index,
#
# Tektronix 4106/4107/4109 from BRL
@@ -17108,22 +19429,25 @@ tek4106brl|tek4107brl|tek4109brl|Tektronix 4106 4107 or 4109,
cols#80, it#8, lines#32, 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,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ cnorm=\E%!0\ETD10\E%!1, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
- il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, is2=\E%!1,
- kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
- kf0=\EOA, kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ,
- kf6=\EOR, kf7=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5,
- lf5=F6, lf6=F8, ll=\E[32;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,
- rs1=\030\E%!0\EKC\E\014\EKR0\EKF0\ENM0\ELBH=\ETF8000010F40\ELI100\ELLB0\ELM0\EKE0\ENF1\EKS0\END0\ERE0\E%!1\Ec\E[?3;5l\E[?7;8h\E[r\E[m\E>,
+ il=\E[%p1%dL, il1=\E[L, ind=\n, is2=\E%!1, kbs=^H,
+ kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOA,
+ kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ, kf6=\EOR,
+ kf7=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, lf5=F6, lf6=F8,
+ ll=\E[32;H, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+ rmcup=\E%!0\ELBH=\E%!1, rmir=\E[4l, rmkx=\E[?1l\E>,
+ rmso=\E[m, rmul=\E[m,
+ rs1=\030\E%!0\EKC\E\014\EKR0\EKF0\ENM0\ELBH=\ETF8000010F40
+ \ELI100\ELLB0\ELM0\EKE0\ENF1\EKS0\END0\ERE0\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[7;42m, smul=\E[4m, tbc=\E[3g,
+ use=ecma+index,
# Tektronix 4107/4109 interpret 4 modes using "\E%!" followed by a code:
# 0 selects Tek mode, i.e., \E%!0
@@ -17138,14 +19462,15 @@ tek4107|tek4109|tektronix terminals 4107 4109,
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,
- cub1=^H, cud1=^J, cuf1=\EC,
+ bold=\E%!1\E[1m$<2>\E%!0, clear=\ELZ, cnorm=\E%!0, cr=\r,
+ cub1=^H, cud1=\n, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E%!3,
- dim=\E%!1\E[<0m$<2>\E%!0, ed=\EJ, el=\EK, ht=^I, ind=^J,
+ dim=\E%!1\E[<0m$<2>\E%!0, ed=\EJ, el=\EK, ht=^I, ind=\n,
kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
rev=\E%!1\E[7m$<2>\E%!0, ri=\EI,
rmso=\E%!1\E[m$<2>\E%!0, rmul=\E%!1\E[m$<2>\E%!0,
- sgr=\E%%!1\E[%?%p1%t;7;5%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t<0%;%?%p6%t;1%;m$<2>\E%%!0,
+ sgr=\E%%!1\E[%?%p1%t;7;5%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;
+ %?%p5%t<0%;%?%p6%t;1%;m$<2>\E%%!0,
sgr0=\E%!1\E[m$<2>\E%!0, smso=\E%!1\E[7;5m$<2>\E%!0,
smul=\E%!1\E[4m$<2>\E%!0,
# Tektronix 4207 with sysline. In the ancestral termcap file this was 4107-s;
@@ -17153,7 +19478,8 @@ tek4107|tek4109|tektronix terminals 4107 4109,
tek4207-s|Tektronix 4207 with sysline but no memory,
eslok, hs,
dsl=\E7\E[?6l\E[2K\E[?6h\E8, fsl=\E[?6h\E8,
- is1=\E%!1\E[2;32r\E[132D\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J,
+ is1=\E%!1\E[2;32r\E[132D\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8
+ C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J,
is2=\E7\E[?6l\E[2K\E[?6h\E8,
tsl=\E7\E[?6l\E[2K\E[;%i%df, use=tek4107,
@@ -17174,7 +19500,7 @@ tek4207-s|Tektronix 4207 with sysline but no memory,
otek4112|o4112-nd|otek4113|otek4114|old tektronix 4110 series,
am,
cols#80, lines#34,
- bel=^G, clear=\E^L, cr=^M, cub1=^H, cud1=^J, cuu1=^K, ind=^J,
+ bel=^G, clear=\E^L, cr=\r, cub1=^H, cud1=\n, cuu1=^K, ind=\n,
rmcup=\EKA1\ELV1, smcup=\EKA0\ELV0\EMG0,
# The 4112 with the ANSI compatibility enhancement
tek4112|tek4114|tektronix 4110 series,
@@ -17198,8 +19524,9 @@ tek4112-5|4112 in 5 line dialog area,
tek4113|tektronix 4113 color graphics with 5 line dialog area,
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,
+ clear=\ELZ, cub1=^H, cud1=\n, cuf1=\ELM1 \ELM0,
+ flash=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4
+ \ERBA4\ERBA4\ERB0,
is2=\EKA1\ELL5\ELV0\ELV1, uc=\010\ELM1_\ELM0,
tek4113-34|tektronix 4113 color graphics with 34 line dialog area,
lines#34,
@@ -17210,9 +19537,10 @@ tek4113-34|tektronix 4113 color graphics with 34 line dialog area,
tek4113-nd|tektronix 4113 color graphics with no dialog area,
OTbs, am, eo,
cols#80, it#8, lines#34,
- clear=\E^L, cub1=^H, cud1=^J, cuf1=^I, cuu1=^K,
+ clear=\E^L, cub1=^H, cud1=\n, cuf1=^I, cuu1=^K,
cvvis=\ELZ\EKA0,
- flash=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0,
+ flash=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4
+ \ERBA4\ERBA4\ERB0,
home=\ELF7l\177 @, ht=^I, is2=\ELZ\EKA0\ELF7l\177 @,
ll=\ELF hl @, rmso=\EMT1, smso=\EMT2, uc=\010\EMG1_\EMG0,
# This entry is from Tek. Inc. (Brian Biehl)
@@ -17226,7 +19554,8 @@ otek4115|Tektronix 4115,
cvvis=\E%!0\ELBB2\E%!1, dch1=\E[P, dl1=\E[M, ed=\E[J,
el=\E[K, home=\E[H, ht=^I, if=/usr/share/tabset/vt100,
il1=\E[L,
- is2=\E%!0\E%\014\ELV0\EKA1\ELBB2\ENU@=\ELLB2\ELM0\ELV1\EKYA?\E%!1\E[<1l\E[?7h\E[?8h\E[34;1H\E[34B\E[m,
+ is2=\E%!0\E%\014\ELV0\EKA1\ELBB2\ENU@=\ELLB2\ELM0\ELV1\EKYA?
+ \E%!1\E[<1l\E[?7h\E[?8h\E[34;1H\E[34B\E[m,
kbs=^H, ri=\EM, rmam=\E[?7l,
rmcup=\E%!0\ELBG8\E%!1\E[34;1H\E[J, rmir=\E[4l,
rmkx=\E>, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smam=\E[?7h,
@@ -17236,18 +19565,18 @@ tek4115|newer tektronix 4115 entry with more ANSI capabilities,
am, xon,
cols#80, lines#34,
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,
+ cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM,
dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%p1%{1}%+%dG,
ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
- il1=\E[L, ind=^J, invis=\E[8m, kbs=^H, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
- rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, rmam=\E[?7l,
- rmso=\E[m, rmul=\E[m,
- sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m,
+ il1=\E[L, ind=\n, invis=\E[8m, kbs=^H, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, rev=\E[7m,
+ rmam=\E[?7l, rmso=\E[m, rmul=\E[m,
+ sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;
+ %;%?%p7%t8;%;m,
sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
- vpa=\E[%p1%{1}%+%dd,
+ vpa=\E[%p1%{1}%+%dd, use=ansi+rep,
# The tek4125 emulates a vt100 incorrectly - the scrolling region
# command is ignored. The following entry replaces <csr> with the needed
# <il>, <il>, and <smir>; removes some cursor pad commands that the tek4125
@@ -17259,8 +19588,10 @@ tek4115|newer tektronix 4115 entry with more ANSI capabilities,
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,
+ 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+4bsd,
# From: <jcoker@ucbic>
# (tek4207: This was the termcap file's entry for the 4107/4207, but SCO
@@ -17271,11 +19602,12 @@ tek4207|Tektronix 4207 graphics terminal with memory,
am, bw, mir, msgr, ul, xenl,
cols#80, it#8, lines#32,
blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J$<156/>,
- cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+ cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu1=\EM, dch1=\E[P$<4/>, dl1=\E[M$<3/>, ed=\E[J,
el=\E[K$<5/>, home=\E[H, ht=^I, ich1=\E[@$<4/>,
il1=\E[L$<3/>, ind=\E[S, invis=\E[=6;<5,
- is2=\E%!0\ELBP0\E%!1\E[H\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J,
+ is2=\E%!0\ELBP0\E%!1\E[H\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8
+ C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J,
kcub1=\E[D, kcud1=\ED, kcuf1=\E[C, kcuu1=\EM, khome=\E[H,
rev=\E[7m, ri=\E[T,
rmcup=\E[?6h\E%!0\ELBP0\E%!1\E[32;1f, rmso=\E[m,
@@ -17289,7 +19621,7 @@ 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,
+ csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[1M,
ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\E[2I, il1=\E[1L,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, rc=\E8,
@@ -17305,10 +19637,10 @@ tek4404|tektronix 4404,
ct8500|tektronix ct8500,
am, bw, da, db,
cols#80, lines#25,
- bel=^G, cbt=\E^I, clear=\E^E, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, cbt=\E^I, clear=\E^E, cr=\r, cub1=^H, cud1=\n,
cuf1=\ES, cup=\E|%p1%{32}%+%c%p2%{32}%+%c, cuu1=\ER,
- dch1=\E^], dl1=\E^M, ed=\E^U, el=\E^T, ht=^I, ich1=\E^\,
- il1=\E^L, ind=^J, is2=\037\EZ\Ek, ri=\E^A, rmso=\E\s,
+ dch1=\E^], dl1=\E\r, ed=\E^U, el=\E^T, ht=^I, ich1=\E^\,
+ il1=\E^L, ind=\n, is2=\037\EZ\Ek, ri=\E^A, rmso=\E\s,
rmul=\E\s, sgr0=\E\s, smso=\E$, smul=\E!,
# Tektronix 4205 terminal.
@@ -17329,23 +19661,37 @@ tek4205|tektronix 4205,
colors#8, cols#80, it#8, lines#30, ncv#49, pairs#63,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[=7;<4m, cbt=\E[Z,
- clear=\E[2J\E[H, cr=^M, cub=\E[%p1%dD, cub1=\E[D,
+ clear=\E[2J\E[H, cr=\r, 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,
dch1=\E[1P, dim=\E[=1;<6m, dl=\E[%p1%dM, dl1=\E[1M,
ech=\E%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
home=\E[H, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[1L,
ind=\ED,
- initc=\E%%!0\ETF4%?%p1%{0}%=%t0%e%p1%{1}%=%t4%e%p1%{2}%=%t3%e%p1%{3}%=%t5%e%p1%{4}%=%t2%e%p1%{5}%=%t6%e%p1%{6}%=%t7%e1%;%?%p2%{125}%<%t0%e%p2%{250}%<%tA2%e%p2%{375}%<%tA?%e%p2%{500}%<%tC8%e%p2%{625}%<%tD4%e%p2%{750}%<%tE1%e%p2%{875}%<%tE\:%eF4%;%?%p3%{125}%<%t0%e%p3%{250}%<%tA2%e%p3%{375}%<%tA?%e%p3%{500}%<%tC8%e%p3%{625}%<%tD4%e%p3%{750}%<%tE1%e%p3%{875}%<%tE\:%eF4%;%?%p4%{125}%<%t0%e%p4%{250}%<%tA2%e%p4%{375}%<%tA?%e%p4%{500}%<%tC8%e%p4%{625}%<%tD4%e%p4%{750}%<%tE1%e%p4%{875}%<%tE\:%eF4%;\E%%!1,
+ initc=\E%%!0\ETF4%?%p1%{0}%=%t0%e%p1%{1}%=%t4%e%p1%{2}%=%t3
+ %e%p1%{3}%=%t5%e%p1%{4}%=%t2%e%p1%{5}%=%t6%e%p1%{6}%=
+ %t7%e1%;%?%p2%{125}%<%t0%e%p2%{250}%<%tA2%e%p2%{375}%<
+ %tA?%e%p2%{500}%<%tC8%e%p2%{625}%<%tD4%e%p2%{750}%<%tE
+ 1%e%p2%{875}%<%tE\:%eF4%;%?%p3%{125}%<%t0%e%p3%{250}%<
+ %tA2%e%p3%{375}%<%tA?%e%p3%{500}%<%tC8%e%p3%{625}%<%tD
+ 4%e%p3%{750}%<%tE1%e%p3%{875}%<%tE\:%eF4%;%?%p4%{125}
+ %<%t0%e%p4%{250}%<%tA2%e%p4%{375}%<%tA?%e%p4%{500}%<%t
+ C8%e%p4%{625}%<%tD4%e%p4%{750}%<%tE1%e%p4%{875}%<%tE\:
+ %eF4%;\E%%!1,
invis=\E[=6;<5, is1=\E%!0\ETM1\E%!1\E[m, kbs=^H,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\EOA,
kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EP, kf5=\EQ, kf6=\ER,
kf7=\ES,
- oc=\E%!0\ETFB000001F4F4F42F40030F404A4C<F450F4F46F40F47F4F40\E%!1,
+ oc=\E%!0\ETFB000001F4F4F42F40030F404A4C<F450F4F46F40F47F4F40
+ \E%!1,
op=\E[39;40m, rev=\E[7m, ri=\EM, rmacs=^O, rmcup=,
rmir=\E[4l, rmso=\E[=0;<1m, rmul=\E[24m,
- setb=\E[=%?%p1%{0}%=%t0m%e%p1%{1}%=%t4m%e%p1%{2}%=%t3m%e%p1%{3}%=%t5m%e%p1%{4}%=%t2m%e%p1%{5}%=%t6m%e%p1%{6}%=%t7m%e1m%;,
- setf=\E[<%?%p1%{0}%=%t0m%e%p1%{1}%=%t4m%e%p1%{2}%=%t3m%e%p1%{3}%=%t5m%e%p1%{4}%=%t2m%e%p1%{5}%=%t6m%e%p1%{6}%=%t7m%e1m%;,
+ setb=\E[=%?%p1%{0}%=%t0m%e%p1%{1}%=%t4m%e%p1%{2}%=%t3m%e%p1
+ %{3}%=%t5m%e%p1%{4}%=%t2m%e%p1%{5}%=%t6m%e%p1%{6}%=%t7m
+ %e1m%;,
+ setf=\E[<%?%p1%{0}%=%t0m%e%p1%{1}%=%t4m%e%p1%{2}%=%t3m%e%p1
+ %{3}%=%t5m%e%p1%{4}%=%t2m%e%p1%{5}%=%t6m%e%p1%{6}%=%t7m
+ %e1m%;,
sgr0=\E[=0;<1m\E[24;25;27m\017, smacs=^N,
smcup=\E%%!1\E[?6l\E[2J, smir=\E[4h, smso=\E[=2;<3m,
smul=\E[4m, tbc=\E[1g,
@@ -17364,11 +19710,11 @@ tek4205|tektronix 4205,
tty33|tty35|model 33 or 35 teletype,
hc, os, xon,
cols#72,
- bel=^G, cr=^M, cud1=^J, ind=^J,
+ bel=^G, cr=\r, cud1=\n, ind=\n,
tty37|model 37 teletype,
OTbs, hc, os, xon,
- bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E7, hd=\E9, hu=\E8,
- ind=^J,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=\E7, hd=\E9, hu=\E8,
+ ind=\n,
# There are known to be at least three flavors of the tty40, all seem more
# like IBM half duplex forms fillers than ASCII terminals. They have lots of
@@ -17393,7 +19739,7 @@ tty40|ds40|ds40-2|dataspeed40|teletype dataspeed 40/2,
tty43|model 43 teletype,
OTbs, am, hc, os, xon,
cols#132,
- bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, kbs=^H,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, ind=\n, kbs=^H,
#### Tymshare
#
@@ -17403,9 +19749,9 @@ tty43|model 43 teletype,
scanset|sc410|sc415|Tymshare Scan Set,
am, bw, msgr,
cols#80, lines#24,
- acsc=j%k4l<m-q\,x5, bel=^G, clear=\EH\EJ, cr=^M, cub1=^H,
- cud1=^J, cuf1=^I, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
- cuu1=^K, ed=\EJ, el=\EK, home=\EH, ind=^J, kcub1=\ED,
+ acsc=j%k4l<m-q\,x5, bel=^G, clear=\EH\EJ, cr=\r, cub1=^H,
+ cud1=\n, cuf1=^I, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+ cuu1=^K, ed=\EJ, el=\EK, home=\EH, ind=\n, kcub1=\ED,
kcud1=\EB, kcuf1=\EC, kcuu1=\EA, mc0=\E;3, mc4=\E;0,
mc5=\E;0, rc=^C, rmacs=^O, rs1=\E>, sc=^B, smacs=^N,
@@ -17422,8 +19768,8 @@ scanset|sc410|sc415|Tymshare Scan Set,
vc303|vc103|vc203|volker-craig 303,
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,
+ bel=^G, clear=\014$<40>, cr=\r, cub1=^H, cud1=\n, cuf1=^I,
+ cuu1=^N, home=\013$<40>, kcub1=^H, kcud1=\n, kcuf1=^I,
kcuu1=^N, ll=\017$<1>W,
vc303a|vc403a|volker-craig 303a,
clear=\030$<40>, cuf1=^U, cuu1=^Z, el=\026$<20>,
@@ -17432,12 +19778,12 @@ vc303a|vc403a|volker-craig 303a,
vc404|volker-craig 404,
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=\030$<40>, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
+ bel=^G, clear=\030$<40>, cr=\r, cub1=^H, cud1=\n, cuf1=^U,
cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z,
- ed=\027$<40>, el=\026$<20>, home=\031$<40>, ind=^J,
- kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^Z,
+ ed=\027$<40>, el=\026$<20>, home=\031$<40>, ind=\n,
+ kcub1=^H, kcud1=\n, kcuf1=^U, kcuu1=^Z,
vc404-s|volker-craig 404 w/standout mode,
- cud1=^J, rmso=^O, smso=^N, use=vc404,
+ cud1=\n, rmso=^O, smso=^N, use=vc404,
# 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.,
@@ -17468,7 +19814,7 @@ vc415|volker-craig 415,
# Steve Jacobson 8/85
pcplot|pc-plot terminal emulation program,
xenl@,
- csr@, dl@, dl1@, il@, il1@, rc@, sc@, use=vt100,
+ csr@, dl@, dl1@, il@, il1@, rc@, sc@, use=vt100+4bsd,
# KayPro II from Richard G Turner <rturner at Darcom-Hq.ARPA>
# I've found that my KayPro II, running MDM730, continues to emulate an
# ADM-3A terminal, just like I was running TERM.COM. On our 4.2 UNIX
@@ -17478,35 +19824,37 @@ pcplot|pc-plot terminal emulation program,
kaypro|kaypro2|kaypro II,
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=\032$<1/>, cr=^M, cud1=^J, cuf1=^L,
+ bel=^G, clear=\032$<1/>, cr=\r, cud1=\n, 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,
+ el=^X, home=^^, il1=\EE, ind=\n, kcud1=\n, kcuf1=^L, kcuu1=^K,
# From IBM, Thu May 5 19:35:27 1983
# (ibmpc: commented out <smir>=\200R because we don't know <rmir> -- esr)
ibm-pc|ibm5051|5051|IBM Personal Computer (no ANSI.SYS),
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=^L^K, cr=^M^^, cub1=^], cud1=^J, cuf1=^\,
+ bel=^G, clear=^L^K, cr=\r^^, cub1=^], cud1=\n, cuf1=^\,
cuu1=^^, home=^K, ind=\n$<10>, kcud1=^_,
ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX,
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,
+ acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
+ \263,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=\r,
cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\E[A, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
home=\E[H, hpa=\E[%i%p1%dG, ind=\E[S\E[B,
indn=\E[%p1%dS\E[%p1%dB, invis=\E[30;40m, kbs=^H,
kcbt=^], kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\177, kend=\E[Y, kf1=\240, kf10=\251, kf2=\241,
- kf3=\242, kf4=\243, kf5=\244, kf6=\245, kf7=\246, kf8=\247,
- kf9=\250, khome=\E[H, kich1=\E[^H, knp=\E[U, 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%;%?%p7%t30;40%;m,
+ kdch1=^?, 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, kpp=\E[V, ll=\E[24;1H,
+ nel=\r, 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
+ %;%?%p7%t30;40%;m,
sgr0=\E[m, smso=\E[7m, smul=\E[4m,
#### Apple II
@@ -17524,10 +19872,10 @@ ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX,
appleIIgs|appleIIe|appleIIc|Apple 80 column firmware interface,
OTbs, am, bw, eo, msgr,
cols#80, it#8, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^\,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^\,
cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
- home=^Y, ht=^I, ind=^W, kbs=^H, kclr=^X, kcub1=^H, kcud1=^J,
- kcuf1=^U, kcuu1=^K, kdch1=\177, nel=^M^W, ri=^V, rmso=^N,
+ home=^Y, ht=^I, ind=^W, kbs=^H, kclr=^X, kcub1=^H, kcud1=\n,
+ kcuf1=^U, kcuu1=^K, kdch1=^?, nel=\r^W, ri=^V, rmso=^N,
smso=^O,
# Apple //e with 80-column card, entry from BRL
# The modem interface is permitted to discard LF (maybe DC1), otherwise
@@ -17540,48 +19888,47 @@ appleIIgs|appleIIe|appleIIc|Apple 80 column firmware interface,
apple2e|Apple //e,
bw, msgr,
cols#80, lines#24,
- bel=^G, clear=\014$<100/>, cub1=^H, cud1=^J, cuu1=^_,
+ bel=^G, clear=\014$<100/>, cub1=^H, cud1=\n, cuu1=^_,
ed=\013$<4*/>, el=\035$<4/>, home=^Y, ht=^I, ind=^W,
- is2=^R^N, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^K,
+ is2=^R^N, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^U, kcuu1=^K,
nel=\r$<100/>, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N,
smso=^O,
# mcvax!vu44!vu45!wilcke uses the "ap" entry together with Ascii Express Pro
# 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=\n, use=apple2e,
# (ASCII Express) MouseTalk "Standard Apple //" emulation from BRL
# Enable DC3/DC1 flow control with "stty ixon -ixany".
apple-ae|ASCII Express,
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,
+ bel=\007$<500/>, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^U,
cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
- home=^Y, ind=^W, is2=^R^N, kclr=^X, kcub1=^H, kcud1=^J,
+ home=^Y, ind=^W, is2=^R^N, kclr=^X, kcub1=^H, kcud1=\n,
kcuf1=^U, kcuu1=^K, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N,
smso=^O,
appleII|apple ii plus,
OTbs, am,
cols#80, it#8, lines#24,
- clear=^L, cnorm=^TC2, cub1=^H, cud1=^J, cuf1=^\,
+ clear=^L, cnorm=^TC2, cub1=^H, cud1=\n, cuf1=^\,
cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, cvvis=^TC6,
ed=^K, el=^], flash=\024G1$<200/>\024T1, home=\E^Y, ht=^I,
- is2=\024T1\016, kcud1=^J, kcuf1=^U, rmso=^N, sgr0=^N,
- smso=^O,
+ is2=^TT1^N, kcud1=\n, kcuf1=^U, rmso=^N, sgr0=^N, smso=^O,
# 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,
OTbs, am, bw,
cols#80, lines#24,
- cbt=^R, clear=\014$<10*/>, cr=\r$<10*/>, cub1=^H, cud1=^J,
+ cbt=^R, clear=\014$<10*/>, cr=\r$<10*/>, cub1=^H, cud1=\n,
cuf1=^\, cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_,
ed=\013$<10*/>, el=\035$<10/>, home=^Y,
apple-soroc|apple emulating soroc 120,
am,
cols#80, lines#24,
- bel=^G, clear=\E*$<300>, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=\E*$<300>, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET,
- home=^^, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
+ home=^^, ind=\n, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K,
# From Peter Harrison, Computer Graphics Lab, San Francisco
# ucbvax!ucsfmis!harrison .....uucp
# ucbvax!ucsfmis!harrison@BERKELEY .......ARPA
@@ -17591,9 +19938,9 @@ apple-soroc|apple emulating soroc 120,
apple-videx|Apple with videx videoterm 80 column board with inverse video,
OTbs, am, xenl,
cols#80, it#8, lines#24,
- clear=\014$<300/>, cub1=^H, cud1=^J, cuf1=^\,
+ clear=\014$<300/>, cub1=^H, cud1=\n, cuf1=^\,
cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
- home=^Y, ht=^I, kcub1=^H, kcud1=^J, kcuf1=^U, khome=^Y,
+ home=^Y, ht=^I, kcub1=^H, kcud1=\n, kcuf1=^U, khome=^Y,
rmso=^Z2, sgr0=^Z2, smso=^Z3,
# My system [for reference] : Apple ][+, 64K, Ultraterm display card,
# Apple Cat ][ 212 modem, + more all
@@ -17646,10 +19993,10 @@ apple80p|80-column apple with Pascal card,
apple-videx2|Apple II+ w/ Videx card (similar to Datamedia h1520),
am, xenl,
cols#80, it#8, lines#24,
- bel=\007$<100/>, clear=\014$<16*/>, cr=^M, cub1=^H,
- cud1=^J, cuf1=^\, cup=\036%p2%{32}%+%c%p1%{32}%+%c,
+ bel=\007$<100/>, clear=\014$<16*/>, cr=\r, cub1=^H,
+ cud1=\n, cuf1=^\, cup=\036%p2%{32}%+%c%p1%{32}%+%c,
cuu1=^_, ed=\013$<16*/>, el=^], home=^Y, ht=\011$<8/>,
- ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^\, kcuu1=^_,
+ ind=\n, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^\, kcuu1=^_,
khome=^Y, rmso=^Z2, smso=^Z3,
apple-videx3|vapple|Apple II with 80 col card,
OTbs, am,
@@ -17706,11 +20053,11 @@ liswb|apple lisa console display (white on black),
lisaterm|Apple Lisa or Lisa/2 running LisaTerm vt100 emulation,
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,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
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,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J,
- el=\E[K, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=^H, kcub1=\EOD,
+ el=\E[K, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^H, kcub1=\EOD,
kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOP, kf1=\EOQ,
kf2=\EOR, kf3=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, rc=\E8,
rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
@@ -17720,7 +20067,7 @@ lisaterm|Apple Lisa or Lisa/2 running LisaTerm vt100 emulation,
# Lisaterm in 132 column ("wide") mode.
lisaterm-w|Apple Lisa with Lisaterm in 132 column mode,
cols#132,
- kbs=^H, kcub1=^H, kcud1=^J, use=lisaterm,
+ kbs=^H, kcub1=^H, kcud1=\n, use=lisaterm,
# Although MacTerminal has insert/delete line, it is commented out here
# since it is much faster and cleaner to use the "lock scrolling region"
# method of inserting and deleting lines due to the MacTerminal implementation.
@@ -17732,7 +20079,7 @@ mac|macintosh|Macintosh with MacTerminal,
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,
+mac-w|macterminal-w|Apple Macintosh with MacTerminal in 132 column mode,
cols#132, use=mac,
#### Radio Shack/Tandy
@@ -17744,19 +20091,19 @@ mac-w|macterminal-w|Apple Macintosh with Macterminal in 132 column mode,
coco3|os9LII|Tandy CoCo3 24*80 OS9 Level II,
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,
+ bel=^G, blink=^_", bold=\E\:\001, civis=^E\s,
+ clear=\014$<5*/>, cnorm=^E!, cub1=^H, cud1=\n, cuf1=^F,
cup=\002%p2%{32}%+%c%p1%{32}%+%c$<2/>, cuu1=^I,
- dl1=^_1, ed=^K, el=^D, home=^A, il1=^_0, kcub1=^H, kcud1=^J,
+ dl1=^_1, ed=^K, el=^D, home=^A, il1=^_0, kcub1=^H, kcud1=\n,
kcuf1=^I, kcuu1=^L, rev=^_\s, rmso=^_!, rmul=^_#,
sgr0=\037!\E\:\0, smso=^_\s, smul=^_",
# (trs2: removed obsolete ":nl=^_:" -- esr)
trs2|trsII|trs80II|Radio Shack Model II using P&T CP/M,
OTbs, am, msgr,
cols#80, it#8, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^_, cuf1=^],
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=^_, cuf1=^],
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, dl1=^K, ed=^B,
- el=^A, home=^F, ht=^I, il1=^D, ind=^J, kbs=^H, kcub1=^\,
+ el=^A, home=^F, ht=^I, il1=^D, ind=\n, kbs=^H, kcub1=^\,
kcud1=^_, kcuf1=^], kcuu1=^^, rmso=^O, sgr0=^O, smso=^N,
# From: Kevin Braunsdorf <ksb@mentor.cc.purdue.edu>
# (This had extension capabilities
@@ -17767,10 +20114,10 @@ trs16|trs-80 model 16 console,
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,
+ cnorm=\ERC, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EP, il1=\EL,
- ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
+ ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
kf0=^A, kf1=^B, kf2=^D, kf3=^L, kf4=^U, kf5=^P, kf6=^N, kf7=^S,
khome=^W, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7,
lf7=f8, mc4=\E]+, mc5=\E]=, rmacs=\ERg, rmso=\ER@, sgr0=\ER@,
@@ -17813,12 +20160,12 @@ 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=\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,
+ 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, rmacs=^O,
+ rmso=\E[m, rmul=\E[m, rs1=\Ec, sgr0=\E[m, smacs=^N,
+ smso=\E[7m, smul=\E[4m, use=ecma+index,
# From: Hans Verkuil <hans@wyst.hobby.nl>, 4 Dec 1995
# (amiga: added empty <acsc> to suppress a warning.
@@ -17828,7 +20175,7 @@ amiga-h|Hans Verkuil's Amiga ANSI,
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,
+ civis=\2330 p, clear=\233H\233J, cnorm=\233 p, cr=\r,
cub=\233%p1%dD, cub1=\233D, cud=\233%p1%dB, cud1=\233B,
cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH,
cuu=\233%p1%dA, cuu1=\233A, dch=\233%p1%dP, dch1=\233P,
@@ -17836,7 +20183,7 @@ amiga-h|Hans Verkuil's Amiga ANSI,
home=\233H, ht=^I, ich=\233%p1%d@, ich1=\233@, ind=\233S,
indn=\233%p1%dS, invis=\2338m, is2=\23320l, kbs=^H,
kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A,
- kdch1=\177, kf0=\2339~, kf1=\2330~, kf2=\2331~, kf3=\2332~,
+ kdch1=^?, kf0=\2339~, kf1=\2330~, kf2=\2331~, kf3=\2332~,
kf4=\2333~, kf5=\2334~, kf6=\2335~, kf7=\2336~, kf8=\2337~,
kf9=\2338~, nel=\233B\r, rev=\2337m, ri=\233T,
rin=\233%p1%dT, rmacs=^O, rmcup=\233?7h, rmso=\2330m,
@@ -17859,58 +20206,58 @@ amiga-8bit|Amiga ANSI using 8-bit controls,
# requires use of appropriate preferences settings.
amiga-vnc|Amiga using VNC console (black on light gray),
am, da, db, msgr, ndscr,
- btns#1, colors#16, cols#80, lines#24, lm#0, ncv#0, pairs#256,
+ btns#1, colors#16, cols#80, lines#24, lm#0, ncv#0, pairs#0x100,
bel=^G, blink=\E[7;2m, bold=\E[1m, civis=\E[0p,
- clear=\E[H\E[J, cnorm=\E[p\E[>?6l, cr=^M,
+ clear=\E[H\E[J, cnorm=\E[p\E[>?6l, cr=\r,
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[>?6h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
dl=\E[%p1%dM, dl1=\E[1M, ed=\E[J, el=\E[K, flash=^G,
ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[1L, ind=\ED,
- indn=\E[%p1%dS, invis=\E8m,
+ invis=\E8m,
is2=\E[>?2;18l\E[>?26;?6;20;>?15;?7;>?22;>?8h,
kbs=^H, kcbt=\233Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
- kcuu1=\E[A, kdch1=\177, kf0=\E[9~, kf1=\E[0~, kf2=\E[1~,
+ kcuu1=\E[A, kdch1=^?, 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~, khlp=\E[?~, khome=\E[44~, kll=\E[45~,
kmous=\E[M, knp=\E[42~, kpp=\E[41~, nel=\EE, oc=\E[0m,
- rev=\E[7m, ri=\EM, rin=\E[%p1%dT, rmcup=\E[?7h\E[r\E[J,
- rmkx=\E[?1l, rmso=\E[21m, rmul=\E[24m, rs1=\Ec,
+ rev=\E[7m, ri=\EM, rmcup=\E[?7h\E[r\E[J, rmkx=\E[?1l,
+ rmso=\E[21m, rmul=\E[24m, rs1=\Ec,
rs2=\E[>?2;18l\E[>?26;?6;20;>?15;?7;>?22;>?8h,
setab=\E[%?%p1%{8}%>%t%'F'%p1%+%d%e4%p1%d%;m,
setaf=\E[%?%p1%{8}%>%t%'2'%p1%+%d%e3%p1%d%;m,
sgr0=\E[0m\017\E[30;85;>15m, smcup=\E[?7h, smkx=\E[?1h,
- smso=\E[1m, smul=\E[4m,
+ smso=\E[1m, smul=\E[4m, use=ecma+index,
# MorphOS on Genesi Pegasos
# By Pavel Fedin <sonic_amiga@rambler.ru>
-morphos,
+morphos|MorphOS on Genesi Pegasos,
acsc=, dl=\233%p1%dM, dl1=\233M, il=\233%p1%dL, il1=\233L,
ind=\204, indn@, kend=\23345~, kf11=\23320~, kf12=\23321~,
khome=\23344~, kich1=\23340~, knp=\23342~, kpp=\23341~,
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
+# I'm trying to write a termcap for a commodore b-128, and I'm
# having a little trouble. I've had to map most of my control characters
# to something that unix will accept (my delete-char is a ctrl-t, etc),
# and create some functions (like cm), but thats life.
-# The problem is with the arrow keys - right, and up work fine, but
+# The problem is with the arrow keys - right, and up work fine, but
# left deletes the previous character and down I just can't figure out.
# Jove knows what I want, but I don't know what it's sending to me (it
# isn't thats bound to next-line in jove).
-# Anybody got any ideas? Here's my termcap.
+# Anybody got any ideas? Here's my termcap.
# DAG -- I changed his "^n" entries to "\n"; see if that works.
#
commodore|b-128|Commodore B-128 micro,
am, bw,
OTdN#20, cols#80, lines#24, pb#150,
- OTbc=^H, OTnl=^M, clear=\E\006$<10/>, cr=^M, cud1=^J,
+ OTbc=^H, OTnl=\r, clear=\E\006$<10/>, cr=\r, cud1=\n,
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=,
+ kcub1=^B, kcud1=\n, kcuf1=^F, kcuu1=^P, khome=\E^E, rmir=,
smir=,
#### North Star
@@ -17940,18 +20287,18 @@ northstar|North Star Advantage,
osborne-w|osborne1-w|osborne I in 104-column mode,
msgr, ul, xt,
cols#104, lines#24,
- bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
- dl1=\ER, el=\ET, ich1=\EQ, il1=\EE, ind=^J, kcub1=^H, kcud1=^J,
+ dl1=\ER, el=\ET, ich1=\EQ, il1=\EE, ind=\n, kcub1=^H, kcud1=\n,
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,
OTbs, am, mir, msgr, ul, xhp,
OTdB#4, cols#80, lines#24,
- clear=^Z, cub1=\010$<4>, cud1=^J, cuf1=^L,
+ clear=^Z, cub1=\010$<4>, cud1=\n, 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,
- kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, rmir=, rmso=\E),
+ kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, rmir=, rmso=\E),
rmul=\Em, smir=\EQ, smso=\E(, smul=\El,
#
# Osborne Executive definition from BRL
@@ -17960,10 +20307,10 @@ osborne|osborne1|osborne I in 80-column mode,
osexec|Osborne executive,
OTbs, am,
OTug#1, cols#80, lines#24, xmc#1,
- OTnl=^J, bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ OTnl=\n, bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, 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,
+ is2=\Eq\Ek\Em\EA\Ex0, kbs=^H, kcub1=^H, kcud1=\n, 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, rmir=, rmso=\Ek, rmul=\Em, smir=, smso=\Ej,
@@ -17984,10 +20331,12 @@ osexec|Osborne executive,
#
# See
-# http://www.minix3.org/manpages/man4/console.4.html
+# https://web.archive.org/web/20120703021949/http://www.minix3.org/manpages/html4/console.html
minix|minix console (v3),
- acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
- kdch1=\177, kend=\E[Y, kf0=\E[21~, kf1=\E[11~, kf10=\E[21~,
+ acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
+ \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
+ \301w\302x\263y\363z\362{\343|\330}\234~\376,
+ kdch1=^?, kend=\E[Y, kf0=\E[21~, kf1=\E[11~, kf10=\E[21~,
kf11=\E[11;2~, kf12=\E[12;2~, kf13=\E[13;2~,
kf14=\E[14;2~, kf15=\E[15;2~, kf16=\E[17;2~,
kf17=\E[18;2~, kf18=\E[19;2~, kf19=\E[20;2~, kf2=\E[12~,
@@ -18006,36 +20355,36 @@ minix-3.0|minix console (v3.0),
use=ecma+color, use=minix-1.7,
# See
-# http://www.minix-vmd.org/pub/Minix-vmd/1.7.0/wwwman/man4/console.4.html
+# https://web.archive.org/web/20030914201935/http://www.minix-vmd.org/pub/Minix-vmd/1.7.0/wwwman/man4/console.4.html
# This is the entry provided with minix 1.7.4, with bogus :ri: removed.
minix-1.7|minix console (v1.7),
am, xenl,
cols#80, it#8, lines#25,
- bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=^M,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=\r,
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, ed=\E[0J, el=\E[K, el1=\E[2K,
home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
- il1=\E[L, ind=^J, is2=\E[0m, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+ il1=\E[L, ind=\n, is2=\E[0m, kbs=^H, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, kf0=\E[Y, kf1=\E[V, kf2=\E[U,
kf3=\E[T, kf4=\E[S, kf5=\E[G, khome=\E[H, lf0=End, lf1=PgUp,
- lf2=PgDn, lf3=Num +, lf4=Num -, lf5=Num 5, nel=^M^J,
+ lf2=PgDn, lf3=Num +, lf4=Num -, lf5=Num 5, nel=\r\n,
rev=\E[7m, ri=\EM, rmso=\E[0m, rmul=\E[0m, sgr0=\E[0m,
smso=\E[7m, smul=\E[4m,
# Corrected Jan 14, 1997 by Vincent Broman <broman@nosc.mil>
minix-old|minix-1.5|minix console (v1.5),
xon,
cols#80, it#8, lines#25,
- bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=^M,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=\r,
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, ed=\E[0J, el=\E[K, home=\E[H, ht=^I,
- ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+ ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kf0=\E[Y, kf1=\E[V, kf2=\E[U, kf3=\E[T, kf4=\E[S, kf5=\E[G,
- khome=\E[H, nel=^M^J, rev=\E[7m, ri=\EM, rmso=\E[0m,
+ khome=\E[H, nel=\r\n, rev=\E[7m, ri=\EM, rmso=\E[0m,
rmul=\E[0m, sgr0=\E[0m, smso=\E[7m, smul=\E[4m,
# The linewrap option can be specified by editing /usr/include/minix/config.h
# before recompiling the minix 1.5 kernel.
@@ -18052,9 +20401,9 @@ pc-minix|minix console on an Intel box,
pc-coherent|pcz19|coherent|IBM PC console running Coherent,
am, mir,
cols#80, it#8, lines#25,
- bel=^G, clear=\EE, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC,
+ bel=^G, clear=\EE, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EN,
- ed=\EJ, el=\EK, home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED,
+ ed=\EJ, el=\EK, home=\EH, ht=^I, ind=\n, kbs=^H, kcub1=\ED,
kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, ri=\EI, rmir=\EO,
rmso=\Eq, sgr0=\Eq, smir=\E@, smso=\Ep,
@@ -18066,9 +20415,9 @@ pc-coherent|pcz19|coherent|IBM PC console running Coherent,
# not described here because this derives from an old termcap entry.
pc-venix|venix|IBM PC console running Venix,
cols#80, it#8, lines#25,
- bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM,
- ed=\EJ, el=\EK, ht=^I, il1=\EL, ind=^J, kbs=^H, kcub1=\EK,
+ ed=\EJ, el=\EK, ht=^I, il1=\EL, ind=\n, kbs=^H, kcub1=\EK,
kcud1=\EP, kcuf1=\EM, kcuu1=\EH, khome=\EG, ri=\EI,
#### Miscellaneous microcomputer consoles
@@ -18088,14 +20437,14 @@ mai|basic4|MAI Basic Four in ansi mode,
am, da, db, mir, msgr,
cols#82, it#8, lines#25,
bel=^G, blink=\E[5m, bold=\E[1m, clear=^]^_, cnorm=\E[?7h,
- cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=^X,
+ cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=^X,
cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, cvvis=\E[?7l, dch1=\E[1P,
dl1=\E[M, ed=^_, el=^^, home=^], ht=^I,
if=/usr/share/tabset/vt100, il1=\E[L, ind=\ED,
is2=\E>\E[?1h\E[?7h\E[?5l\017\E(B\E[m\E[20l\E[1;24r\E[24;1H,
kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU,
- kf7=\EOV, kf8=\EOW, nel=^M\ED, rc=\E8, rev=\E[7m, ri=\E[T,
+ kf7=\EOV, kf8=\EOW, nel=\r\ED, rc=\E8, rev=\E[7m, ri=\E[T,
rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m,
smir=\E[4h, smso=\E[7m, smul=\E[4m,
# basis from Peter Harrison, Computer Graphics Lab, San Francisco
@@ -18116,7 +20465,7 @@ mai|basic4|MAI Basic Four in ansi mode,
# (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),
+ kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, rmso=\E), sgr0=\E),
smso=\E(, use=adm3a,
# luna's BMC terminal emulator
luna|luna68k|LUNA68K Bitmap console,
@@ -18129,9 +20478,9 @@ megatek|pegasus workstation terminal emulator,
xerox820|x820|Xerox 820,
am,
cols#80, lines#24,
- bel=^G, clear=1^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=\032$<1>, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^Q, el=^X,
- home=^^, ind=^J,
+ home=^^, ind=\n,
#### Videotex and teletext
#
@@ -18149,61 +20498,457 @@ m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel 2 mode te'le'infor
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,
- cnorm=\E[<1l, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+ cnorm=\E[<1l, cr=\r, 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, dch=\E[%p1%dP, dch1=\E[P,
- dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, flash=^G, fsl=^J,
- home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=^J, ip=$<7/>,
+ dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, flash=^G, fsl=\n,
+ home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\n, ip=$<7/>,
is1=\E\:1}\Ec\E[?4l\E[12h, is2=\Ec\E[12h\E)0,
- is3=\E[?3l kbs=\010, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B,
+ is3=\E[?3l, kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, kf0=\EOp,
kf1=\EOq, kf10=\EOp, kf2=\EOr, kf3=\EOs, kf4=\EOt, kf5=\EOu,
kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, khome=\E[H,
kich1=\E[4h, kil1=\E[4l, knp=\EOn, kpp=\EOR, ll=\E[24;80H,
- mc0=\E[i, nel=^M^J, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+ mc0=\E[i, nel=\r\n, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
rs1=\Ec\E[?4l\E[12h, rs2=\Ec\E)0, sc=\E7, sgr0=\E[m,
smacs=^N, smir=\E[4h, smso=\E[7m, smul=\E[4m, tsl=^_@A,
u6=\E[%i%d;%dR, u7=\E[6n,
-# From: Alexandre Montaron <canal@mygale.org>, 18 Jun 1998
+# From: Alexandre Montaron <canal@mygale.org>, 18 Jun 1998, updated 19 Sep 2016
#
minitel1|minitel 1,
- am, bw, eslok, hs, hz, msgr,
- colors#8, cols#40, lines#24, pairs#8,
- acsc=+.\,\,./f0g1, bel=^G, blink=\EH, civis=^T, clear=^L,
- cnorm=^Q, cr=^M, cub1=^H, cud1=^J, cuf1=^I,
- cup=\037%p1%{65}%+%c%p2%{65}%+%c, cuu1=^K, el=^X,
- enacs=^Y, fsl=^J, home=^^, ind=^J,
- is2=\E;`ZQ\E\:iC\E\:iE\021, nel=^M^J, op=\EG,
- rep=%p1%c\022%p2%{63}%+%c, rev=\E], ri=^K, rmso=\E\\,
- setf=\E%?%p1%{1}%=%tD%e%p1%{3}%=%tF%e%p1%{4}%=%tA%e%p1%{6}%=%tC%e%p1%{64}%+%c%;,
+ am, bw, eslok, hs, hz, .msgr, G0,
+ colors#8, cols#40, lines#24, pairs#8, .ncv#16,
+ acsc=j+k+l+m+n+o~q`s_t+u+v+w+x|, bel=^G, blink=\EH,
+ civis=^T, clear=^L, cnorm=^Q, cr=\r, cub1=^H, cud1=\n, cuf1=^I,
+ cup=\037%p1%'A'%+%c%p2%'A'%+%c, cuu1=^K,
+ dsl=\037@A\030\n, el=^X,
+ flash=\037@A\EW \177\022\177\022P\r\030\n, fsl=\n,
+ home=^^, ind=\n, is2=\E;`ZQ\E\:iC\E\:iE\021, kbs=^SG,
+ kcan=^SE, kend=^SI, kent=^SA, khlp=^SD, knp=^SH, kpp=^SB,
+ krfr=^SC, nel=\r\n, op=\EG, rep=%p1%c\022%p2%'?'%+%c,
+ rev=\E], ri=^K, rmso=\E\\,
+ rs2=\024\037XA\030\n\030\n\030\n\030\n\030\n\030\n\030\n
+ \030\n\030\n\030\n\030\n\030\n\030\n\030\n\030\n\030\n
+ \030\n\030\n\030\n\030\n\030\n\030\n\030\n\030\014
+ \021,
+ setab=\0, setaf=\E%p1%'@'%+%c, setb=\0,
+ setf=\E%?%p1%{1}%=%tD%e%p1%{3}%=%tF%e%p1%{4}%=%tA%e%p1%{6}%=
+ %tC%e%p1%'@'%+%c%;,
sgr=%?%p1%t\E]%;%?%p3%t\E]%;%?%p4%t\EH%;,
- sgr0=\EI\E\\, smso=\E], tsl=\037@%p1%{65}%+%c,
-# is2=Fnct TE, Fnct MR, Fnct CM et pour finir: curseur ON.
+ sgr0=\EI\E\\\EG, smso=\E], tsl=\037@%p1%'A'%+%c,
+ u6=\037%c%'A'%-%c%'A'%-, u7=\Ea,
+ u8=\001%[BCDEFGHIJKLbcresdfg0123456789]\004, u9=\E9{,
+ .dim=\EB, .hup=\E9g, .rs2=^L, .u8=^ABr4^D,
+ C0=`>a9f!j%k4l<m-n=p#q\,rpt=u5v-w<x5yvzy|l~$, E0=^O,
+ S0=^N,
+ XC=B\031%\,\241!\,\242"\,\243#\,\244$\,\245%\,\246&\,\247'\,
+ \250(\,\253+\,\257P\,\2600\,\2611\,\2622\,\2633\,\2655\,
+ \2677\,\272k\,\273;\,\274<\,\275=\,\276>\,\277?\,\300AA\,
+ \301BA\,\302CA\,\303DA\,\304HA\,\305JA\,\306a\,\307KC\,
+ \310AE\,\311BE\,\312CE\,\313HE\,\314AI\,\315BI\,\316CI\,
+ \317HI\,\320b\,\321DN\,\322AO\,\323BO\,\324CO\,\325DO\,
+ \326HO\,\3274\,\330i\,\331AU\,\332BU\,\333CU\,\334HU\,
+ \335BY\,\336l\,\337{\,\340Aa\,\341Ba\,\342Ca\,\343Da\,
+ \344Ha\,\345Ja\,\346q\,\347Kc\,\350Ae\,\351Be\,\352Ce\,
+ \353He\,\354Ai\,\355Bi\,\356Ci\,\357Hi\,\360r\,\361Dn\,
+ \362Ao\,\363Bo\,\364Co\,\365Do\,\366Ho\,\3678\,\370y\,
+ \371Au\,\372Bu\,\373Cu\,\374Hu\,\375By\,\376|\,\377Hy\,
+ \252c\,\,0\017\031%\016\,}#\,f0\,g1\,\\\,\\\,\,+.\,./\,0
+ \177\,--,
minitel1b|minitel 1-bistandard (in 40cols mode),
mir,
cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
cuu=\E[%p1%dA, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
dl1=\E[M, ed=\E[J, el1=\E[1K, il=\E[%p1%dL, il1=\E[L,
- is1=\E;iYA\E;jYC, kclr=\E[2J, kctab=^I, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M,
- kel=^X, khome=\E[H, kich1=\E[4h, kil1=\E[L, rmir=\E[4l,
- smir=\E[4h, smkx=\E;iYA\E;jYC, use=minitel1,
-# <rmkx> posait des problemes (logout en sortant de vi).
+ is1=\E;iYA\E;jYC, kbs@, kcan@, kclr=\E[2J, kctab=^I,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
+ kdl1=\E[M, kent@, kf1=^SD, kf10=^Y0, kf11=^Y1, kf12=^Y/,
+ kf13=^Y{1, kf14=^Y{2, kf15=^Y{3, kf16=^Y{4, kf17=^Y{5,
+ kf18=^Y{6, kf19=^Y{7, kf2=^SC, kf20=^Y{8, kf21=^Y{9,
+ kf22=^Y{0, kf23=^Y{*, kf24=^Y{#, kf3=^SF, kf4=^SA, kf5=^SG,
+ kf6=^SE, kf7=^Y8, kf8=^Y\,, kf9=^Y., khlp@, khome=\E[H,
+ kich1=\E[4h, kil1=\E[L, krfr@, lf1=Guide, lf2=Repetition,
+ lf3=Sommaire, lf4=Envoi, lf5=Correction, lf6=Annulation,
+ rmir=\E[4l, smir=\E[4h,
+ u8=\001%[ABCPtuvwxyz0123456789\:;<=>?]\004,
+ .ich=\E[%p1%d@, .ich1=\E[@, .kLFT=\E[P, .kRIT=\E[4h,
+ .kb2=^Y{g, .kcbt=^Y{i, .kel=^X, .mc0=\E\:|k, .rmkx=\E;jYA,
+ .rs1=\E[4l\E[2l, .smkx=\E;iYA\E;jYC, .u8=^ACu<^D,
+ use=minitel1,
+# rmkx posait des problemes (logout en sortant de vi).
minitel1b-80|minitel 1-bistandard (standard teleinformatique),
- am@, bw@, hz@,
+ am@, bw@, eslok@, hz@, msgr, G0,
colors@, cols#80, it#8, pairs@,
- blink=\E[5m, bold=\E[1m, civis=\037@A\024\n,
- clear=\E[H\E[2J, cnorm=\037@A\021\n, cuf1=\E[C,
+ acsc@, blink=\E[5m, bold=\E[1m, civis=\037@A\024\n,
+ clear=\E[H\E[J, cnorm=\037@A\021\n, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
- ht=^I, ind=\ED, is1@, is2@, kent=\EOM, kf0=\EOp, kf1=\EOq,
- kf2=\EOr, kf3=\EOs, kf4=\EOt, kf5=\EOu, kf6=\EOv, kf7=\EOw,
- kf8=\EOx, kf9=\EOy, nel=\EE, op@, rc=\E8, rep@, rev=\E[7m,
- ri=\EM, rmkx@, rmso=\E[27m, rmul=\E[24m, sc=\E7, setf@,
- sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m,
- sgr0=\E[m, smkx@, smso=\E[7m, smul=\E[4m, use=minitel1b,
+ ht=^I, ind=\ED, is1@, is2@, kbs=\EOl, kcan=\EOQ, kend=\E)4\r,
+ kent=\EOM, kf1=\EOq, kf10=\EOp, kf11=\EOP1, kf12=\EOP2,
+ kf13=\EOP3, kf14=\EOP4, kf15=\EOP5, kf16=\EOP6, kf17=\EOP7,
+ kf18=\EOP8, kf19=\EOP9, kf2=\EOr, kf20=\EOP0, kf21=\EOP*,
+ kf22=\EOP#, kf23@, kf24@, kf3=\EOs, kf4=\EOt, kf5=\EOu,
+ kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, khlp=\EOm, knp=\EOn,
+ kpp=\EOR, krfr=\EOS, lf1@, lf2@, lf3@, lf4@, lf5@, lf6@, nel=\EE,
+ op@, rc=\E8, rep@, rev=\E[7m, ri=\EM, rmkx@, rmso=\E[27m,
+ rmul=\E[24m,
+ rs2=\036\E[12H\E[2M\E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2M\E[
+ H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2M
+ \E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2
+ M\E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[
+ 2M\E[H\E[J\E[m,
+ sc=\E7, setab@, setaf@, setb@, setf@, sgr@, sgr0=\E[m, smkx@,
+ smso=\E[7m, smul=\E[4m,
+ tsl=\037@%?%p1%{63}%<%t%p1%'A'%+%c%e\177%p1%{62}%-%Pa%?%ga
+ %{1}%&%t\011%;%?%ga%{2}%&%t\011\011%;%?%ga%{4}%&%t\011
+ \011\011\011%;%?%ga%{07}%>%t\011\011\011\011\011\011
+ \011\011%;%?%ga%{15}%>%t\011\011\011\011\011\011\011
+ \011%;%;,
+ u6@, u7@, u8@, u9@, .acsc=}#f[, .enacs=^O, .kb2=\EOPg,
+ .kcbt=\EOPi, .ll=\E[24H, .mc0=\E[i, .rmacs=^O, .rs2=\Ec,
+ .sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1
+ ;%;m,
+ .smacs=^N, C0=}#f[j+k+l+m+n+o~q=s_t+u+v+w+x!0\032,
+ E0=^O, S0=^N,
+ XC=B\016%\017\,\243#\,\247]\,\260[\,\340@\,\347\\\\\,\351{\,
+ \350}\,\371|\,\300A\,\301A\,\302A\,\303A\,\304A\,\305A\,
+ \306E\,\307C\,\310E\,\311E\,\312E\,\313E\,\314I\,\315I\,
+ \316I\,\317I\,\320D\,\321N\,\322O\,\323O\,\324O\,\325O\,
+ \326O\,\331U\,\332U\,\333U\,\334U\,\335Y\,\337s\,\341a\,
+ \342a\,\343a\,\344a\,\345a\,\346e\,\352e\,\353e\,\354i\,
+ \355i\,\356i\,\357i\,\360d\,\361n\,\362o\,\363o\,\364o\,
+ \365o\,\366o\,\372u\,\373u\,\374u\,\375y\,\377y\,\267.\,
+ \327x\,\367/\,\261\E7\E[4m+\E8\E[C\,\,0\017%\016\,x|\,y
+ \E7\E[4m<\E8\E[C\,z\E7\E[4m>\E8\E[C\,g\E7\E[4m+\E8\E[C,
+ use=minitel1b,
+
+minitel1-nb|minitel 1 (40cols) noir & blanc sans couleurs avec bold et dim ...,
+ colors@, pairs@,
+ bold=\EG, clear=^L\EB,
+ cup=\037%p1%'A'%+%c%p2%'A'%+%c\EB, dim=\ED, home=^^\EB,
+ op@, rs2=^L\EB, setab@, setaf@, setb@, setf@,
+ sgr=%?%p1%p3%O%t\E]%;%?%p4%t\EH%;%?%p5%t\ED%;%?%p6%t\EG%;,
+ sgr0=\EI\E\\\EB, tsl=\037@%p1%'A'%+%c\EB, .invis=\E@,
+ use=minitel1,
+
+minitel1b-nb|minitel 1b (40cols) noir & blanc sans couleurs avec bold et dim ...,
+ msgr,
+ colors@, pairs@,
+ acsc=`>a9f!j%k4l<m-n=p#q\,rpt=u5v-w<x5yvzy|l~$,
+ bold=\EG, clear=^L\EB, cup=\E[%i%p1%d;%p2%dH, dim=\ED,
+ home=^^\EB, kend=\E)4\r, kf1=\E$4\r, kf2=\E#4\r,
+ kf3=\E&4\r, kf4=\E!4\r, kf5=\E'4\r, kf6=\E/4\r, knp=\E(4\r,
+ kpp=\E"4\r, op@, rmacs=^O, rs2=^L\EB, setab@, setaf@, setb@,
+ setf@,
+ sgr=%?%p1%p3%O%t\E]%;%?%p4%t\EH%;%?%p5%t\ED%;%?%p6%t\EG%;,
+ sgr0=\EI\E\\\EB, smacs=^N, tsl=\037@%p1%'A'%+%c\EB,
+ u8=\001%[ABCPpqrstuvwxyz{|}~\177]\004\r, .invis=\E@,
+ .u8=\001Cu|\004r, use=minitel1b,
+
+# Note:
+#
+# Faire, Fnct T puis "/" (TS+"?") pour activer les touches en 40cols :
+#
+# TS+Connexion/Fin(Fin),Retour(Page Up),Suite(Page Down),Guide(F1),
+# Repetition(F2),Sommaire(F3),Envoi(F4),Correction(F5),Annulation(F6),
+# Ctrl+7(F7),Ctrl+8(F8),Ctrl+9(F9),Ctrl+0(F10),Ctrl+*(F11),Ctrl+#(F12).
+#
+# Ctrl+Suite-1(F13), Ctrl+Suite-2(F14), Ctrl+Suite-3(F15),
+# Ctrl+Suite-4(F16), Ctrl+Suite-5(F17), Ctrl+Suite-6(F18),
+# Ctrl+Suite-7(F19), Ctrl+Suite-8(F20), Ctrl+Suite-9(F21),
+# Ctrl+Suite-0(F22), Ctrl+Suite-*(F23), Ctrl+Suite-#(F24).
+#
+# Fonctionne par exemple avec Midnight Commander (mc).
+
+minitel2-80|minitel 2 (80cols) avec filets vt100 (DEC),
+ G0,
+ acsc=ffggjjkkllmmnnooqqssttuuvvwwxxyyzz||}},
+ enacs=\E)0, rmacs=^O, smacs=^N, u6=\E[%i%d;%dR,
+ C0=ffggjjkkllmmnnooqqssttuuvvwwxxyyzz||}}, E0=^O,
+ S0=\E)0\016,
+ XC=B%\E(B\,\243\E(3}\,\247\E(R[\,\257\E(3v\,\260\E(3f\,\261
+ \E(3g\,\265\E(3Y\,\267\E(3~\,\274\E(3O\,\275\E(3P\,\276
+ \E(3Q\,\277\E(3Z\,\300A\,\301A\,\302A\,\303A\,\304\E(3R\,
+ \305A\,\306E\,\307C\,\310E\,\311\E(3S\,\312E\,\313E\,
+ \314\E(3T\,\315I\,\316I\,\317I\,\320D\,\321\E(3W\,\322\E(
+ 3U\,\323O\,\324O\,\325O\,\326O\,\327x\,\331U\,\332U\,
+ \333U\,\334\E(3V\,\335Y\,\337\E(3{\,\340\E(3A\,\341a\,
+ \342\E(3B\,\343a\,\344\E(3C\,\345a\,\346e\,\347\E(R\\\\\,
+ \350\E(3E\,\351\E(3D\,\352\E(3F\,\353\E(3G\,\354i\,\355i
+ \,\356\E(3H\,\357\E(3I\,\360d\,\361\E(3X\,\362o\,\363o\,
+ \364\E(3J\,\365o\,\366\E(3K\,\367\E(3h\,\371\E(3L\,\372u
+ \,\373\E(3M\,\374\E(3N\,\375y\,\377y\,\,0\E)3%\E)0\,\\\,m
+ \,+k\,.l\,0\177\,-j,
+ use=minitel12-80,
+
+minitel12-80|minitel 12 (80cols),
+ G0,
+ civis=\E[<1h, cnorm=\E[<1l, is2=\E[12h, u6=\E[%i%d;%dH,
+ u7=\E[6n,
+ .acsc=ffggj+k+l+m+n+ovq-swt+u+v+w+xx}}\,m+k.l-j0
+ \177,
+ .enacs=\E)3, .rmacs=^O, .rs3=\E[?4l, .scs=\E(%p1%c,
+ .smacs=^N,
+ C0=ffggj+k+l+m+n+ovq-swt+u+v+w+xx}}\,m+k.l-j0\177,
+ E0=^O, S0=\E)3\016,
+ XC=B%\E(B\,\243\E(3}\,\247\E(R[\,\257\E(3v\,\260\E(3f\,\261
+ \E(3g\,\267\E(3~\,\274\E(3O\,\275\E(3P\,\276\E(3Q\,\300A
+ \,\301A\,\302A\,\303A\,\304A\,\305A\,\306E\,\307C\,\310E
+ \,\311E\,\312E\,\313E\,\314I\,\315I\,\316I\,\317I\,\320D
+ \,\321N\,\322O\,\323O\,\324O\,\325O\,\326O\,\327x\,\331U
+ \,\332U\,\333U\,\334U\,\335Y\,\337\E(3{\,\340\E(3A\,
+ \341a\,\342\E(3B\,\343a\,\344\E(3C\,\345a\,\346e\,\347\E(
+ R\\\\\,\350\E(3E\,\351\E(3D\,\352\E(3F\,\353\E(3G\,\354i
+ \,\355i\,\356\E(3H\,\357\E(3I\,\360d\,\361n\,\362o\,
+ \363o\,\364\E(3J\,\365o\,\366\E(3K\,\367\E(3h\,\371\E(3L
+ \,\372u\,\373\E(3M\,\374\E(3N\,\375y\,\377y\,\,0\E)3%\E)0
+ \,\\\,m\,+k\,.l\,0\177\,-j,
+ use=minitel1b-80,
+
+#
+# Add these in your ~/.screenrc for inputting some special glyphs like french
+# accentuated chars in 40 cols mode:
+#
+# bindkey ^YA digraph '`' # Saisi accent grave.
+# bindkey ^YB digraph "'" # Saisi accent aigu.
+# bindkey ^YC digraph '^' # Saisi accent circonflexe.
+# bindkey ^YH digraph '"' # Saisi accent trema.
+#
+# bindkey ^Y# stuff \243 # Livre.
+# bindkey "^Y\047" stuff \247 # Paragraphe.
+# bindkey ^Yj stuff \306 # AE
+# bindkey ^Yz stuff \346 # ae
+# bindkey ^YKc stuff \347 # c cedille.
+#
+
+screen.minitel1|Screen specific for minitel1,
+ ncv@,
+ acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
+ yzz||}}~~,
+ bel=\007\E\^ \E\\, bold@, csr@, flash=\Eg\E\^ \E\\, kmous@,
+ rmul@, smul@, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\EZ,
+ use=xterm+x11mouse, use=screen4,
+
+screen.minitel1b|Screen specific for minitel1b,
+ kclr=\E[2J, kdl1=\E[M, kf13=^Y{1, kf14=^Y{2, kf15=^Y{3,
+ kf16=^Y{4, kf17=^Y{5, kf18=^Y{6, kf19=^Y{7, kf20=^Y{8,
+ kf21=^Y{9, kf22=^Y{0, kf23=^Y{*, kf24=^Y{#, kil1=\E[L,
+ use=screen.minitel1,
+
+screen.minitel1b-80|screen.minitel2-80|screen.minitel12-80|Screen specific for minitel1b-80 minitel2-80 and minitel12-80,
+ colors@, ncv@, pairs@,
+ bold=\E[1m, kent=\EOM, kf13@, kf14@, kf15@, kf16@, kf17@, kf18@,
+ kf19@, kf20@, kf21@, kf22@, kf23@, kf24@, khlp=\EOm, op@,
+ rmul=\E[24m, setab@, setaf@, setb@, setf@, smul=\E[4m,
+ use=screen.minitel1b,
+
+screen.minitel1-nb|Screen specific for minitel1-nb,
+ colors@, ncv@, pairs@,
+ bold=\E[1m, dim=\E[2m, op@, setab@, setaf@, setb@, setf@,
+ use=screen.minitel1,
+
+screen.minitel1b-nb|Screen specific for minitel1b-nb,
+ colors@, ncv@, pairs@,
+ bold=\E[1m, dim=\E[2m, op@, setab@, setaf@, setb@, setf@,
+ use=screen.minitel1b,
+
+# From: Alexandre Montaron, 29 Sep 2016
+
+linux-m1|Linux Minitel 1 "like" Couleurs,
+ am, bw@, ccc, mir, msgr, xenl,
+ colors#8, it#8, ncv#16, pairs#64,
+ acsc=a\261f\370g\361h\260j\274k\273l\311m\310n\316q\315t
+ \314u\271v\312w\313x\272y\363z\362{\343|\252~\372,
+ bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+ clear=\E[H\E[J, cnorm=\E[?25h, cr=\r,
+ csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
+ dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
+ ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)U,
+ flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%d`,
+ ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\n,
+ initc=\E]P%p1%{15}%&%X%p2%{255}%&%02X%p3%{255}%&%02X%p4
+ %{255}%&%02X,
+ is2=\E]R\E]P3FFFF80\E[?8c, ka1=\EOw, ka3=\EOy, kb2=\E[G,
+ kbs=^?, kc1=\EOq, kc3=\EOs, kcbt=\E^I, kclr=\E\r, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~,
+ kdl1=\E\E[A, kend=\E[4~, kent=\EOM, kf1=\E[[A, kf10=\E[21~,
+ kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+ kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+ kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D,
+ kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ khome=\E[1~, kich1=\E[2~, kil1=\E\E[B, kmous=\E[M,
+ knp=\E[6~, kpp=\E[5~, nel=\EE, oc=\E]R\E]P3FFFF80,
+ op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+ rmam=\E[?7l, rmir=\E[4l, rmpch=\E[10m, rmso=\E[27m,
+ rs1=\Ec, rs3=\E[37;40m\E[8], sc=\E7, setab=\E[4%p1%dm,
+ setaf=\E[3%p1%dm, sgr0=\E[m, smacs=^N, smam=\E[?7h,
+ smir=\E[4h, smpch=\E[11m, smso=\E[7m, tbc=\E[3g,
+ u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?6c, u9=\EZ,
+ vpa=\E[%i%p1%dd, .VN=\E[?5l, .VR=\E[?5h, .am@,
+ .ich=\E[%p1%d@, .ich1=\E[@, .ll=\E[99H, .rmcup=,
+ .rmul=\E[24m, .smcup=\E]R\E]P3FFFF80\E[?8c,
+ .smul=\E[4m,
+ E3=\E[99H\E[2J\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+ \n\n\n\n\n\n\n\n\n\n,
+
+# 1. Using double-shapes for vt100 graphical chars (eg: mc).
+# 2. Native brown color corrected to good yellow color.
+# 3. Adding "Insert" and "Delete Line" keys as ESC Up and ESC Down arrow keys.
+# 4. Suppressed nonexistent underlined mode (normally as bright).
+# 5. ich/ich1 not filled because of non-curses programs.
+#--
+# 6. Suppressed nonexistent invisible mode.
+#(7.)Adding forgotten "cub/cud/cuf/cuu" sequences deplacement.
+
+linux-m1b|Linux Minitel 1B "like" Monochrome (Gris/Blanc/Noir+Dim),
+ ccc@,
+ colors@, ncv@, pairs@,
+ acsc@, bold=\E[33m, enacs@, initc@,
+ is2=\E]R\E]P1A9A9A9\E]P2A9A9A9\E]P3FFFFFF\E]P4A9A9A9\E]P5A9A
+ 9A9\E]P6A9A9A9\E]P9FFFFFF\E]PAFFFFFF\E]PBFFFFFF\E]PCFFFF
+ FF\E]PDFFFFFF\E]PEFFFFFF\E[?2c,
+ oc@, op@, rmacs@, setab=^A, setaf=^A, smacs@, .setab@, .setaf@,
+ .smcup=\E]R\E]P1A9A9A9\E]P2A9A9A9\E]P3FFFFFF\E]P4A9A9A9\E]P5
+ A9A9A9\E]P6A9A9A9\E]P9FFFFFF\E]PAFFFFFF\E]PBFFFFFF\E]
+ PCFFFFFF\E]PDFFFFFF\E]PEFFFFFF\E[?2c,
+ use=linux-m1,
+
+linux-m2|Linux Minitel 2 "like" Couleurs (Vert/Blanc/Noir+Bleu),
+ ccc@,
+ colors@, ncv@, pairs@,
+ acsc=++\,\,--..00``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttu
+ uvvwwxxyyzz{{||}}~~,
+ bold=\E[33m, cnorm=\E[?2c\E[?25h, cvvis=\E[?8c\E[?25h,
+ enacs=\E)0, initc@,
+ is2=\E]R\E]P100A900\E]P200A900\E]P3FFFFFF\E]P400A900\E]P500A
+ 900\E]P600A900\E]P700A900\E]P80000FF\E]P9FFFFFF\E]PAFFFF
+ FF\E]PBFFFFFF\E]PCFFFFFF\E]PDFFFFFF\E]PEFFFFFF\E]PFFFFFF
+ F\E[;37m,
+ oc@, op@, rmacs=^O, setab=^A, setaf=^A, sgr0=\E[;37m, smacs=^N,
+ .setab@, .setaf@,
+ .smcup=\E]R\E]P100A900\E]P200A900\E]P3FFFFFF\E]P400A900\E]P5
+ 00A900\E]P600A900\E]P700A900\E]P80000FF\E]P9FFFFFF\E]
+ PAFFFFFF\E]PBFFFFFF\E]PCFFFFFF\E]PDFFFFFF\E]PEFFFFFF
+ \E]PFFFFFFF\E[;37m,
+ use=linux-m1,
+
+# Screen entries counterpart :
+
+screen.linux-m1|Linux m1 specific for screen,
+ ncv@,
+ dim=\E[2m, kbs=^?, kclr=\E\r, kdl1=\E\E[A, kf13=\E[25~,
+ kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
+ kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, kil1=\E\E[B, rmul@,
+ smul@, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\EZ,
+ E3=\E[99H\E[2J\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
+ \n\n\n\n\n\n\n\n\n\n,
+ use=xterm+x11mouse, use=screen4,
+
+screen.linux-m1b|Linux m1b specific for screen,
+ colors@, pairs@,
+ op@, setab@, setaf@, setb@, setf@, use=screen.linux-m1,
+
+screen.linux-m2|Linux m2 specific for screen,
+ acsc=++\,\,--..00``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttu
+ uvvwwxxyyzz{{||}}~~,
+ use=screen.linux-m1b,
+
+# Putty :
+
+putty-m1|Putty Minitel 1 "like" Couleurs,
+ hs,
+ dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
+ kf5=\E[15~, rmcup=\E[2J\E[?47l\E8, rmul=\E[24m,
+ smcup=\E7\E[?47h, smul=\E[4m, .E3=\E[300S,
+ .WS=\E[8;%d;%dt, Z0=\E[?3h, Z1=\E[?3l, use=xterm+sl-twm,
+ use=ecma+index, use=linux-m1,
+
+putty-m1b|Putty Minitel 1B "like" Monochrome (Gris/Blanc/Noir),
+ hs,
+ dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
+ kf5=\E[15~, rmcup=\E[2J\E[?47l\E8, rmul=\E[24m,
+ smcup=\E7\E[?47h, smul=\E[4m, .E3=\E[300S,
+ .WS=\E[8;%d;%dt, Z0=\E[?3h, Z1=\E[?3l, use=xterm+sl-twm,
+ use=ecma+index, use=linux-m1b,
+
+putty-m2|Putty Minitel 2 "like" Couleurs (Vert/Blanc/Noir),
+ hs,
+ acsc=``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{
+ {||}}~~,
+ dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
+ kf5=\E[15~, rmcup=\E[2J\E[?47l\E8, rmul=\E[24m,
+ smcup=\E7\E[?47h, smul=\E[4m, .E3=\E[300S,
+ .WS=\E[8;%d;%dt, Z0=\E[?3h, Z1=\E[?3l, use=xterm+sl-twm,
+ use=ecma+index, use=linux-m2,
+
+screen.putty-m1|Putty m1 specific for screen,
+ dim@, rmul=\E[24m, smul=\E[4m, E3@, use=screen.linux-m1,
+
+screen.putty-m1b|Putty m1b specific for screen,
+ colors@, pairs@,
+ op@, setab@, setaf@, setb@, setf@, use=screen.putty-m1,
+
+screen.putty-m2|Putty m2 specific for screen,
+ acsc=++\,\,--..00``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttu
+ uvvwwxxyyzz{{||}}~~,
+ use=screen.putty-m1b,
+# From: Alexandre Montaron, 19 Nov 2015, updated 19 Sep 2016
+#
+# He comments:
+# viewdata lacks a true cup capability,
+# so I achieved it with home and cud1/cuf1 sequences only !
+viewdata|prestel/viewdata terminals,
+ am, bw, eslok, hz,
+ cols#40, lines#24,
+ bel=^G, civis=^T, clear=^L, cnorm=^Q, cr=\r, cub1=^H, cud1=\n,
+ cuf1=^I,
+ cup=\036%?%p1%{07}%>%t\n\n\n\n\n\n\n\n%;%?%p1%{15}%>%t\n\n
+ \n\n\n\n\n\n%;%?%p1%{4}%&%t\n\n\n\n%;%?%p1%{2}%&%t\n\n%;
+ %?%p1%{1}%&%t\n%;%?%p2%{07}%>%t\011\011\011\011\011\011
+ \011\011%;%?%p2%{15}%>%t\011\011\011\011\011\011\011
+ \011%;%?%p2%{23}%>%t\011\011\011\011\011\011\011\011%;%?
+ %p2%{31}%>%t\011\011\011\011\011\011\011\011%;%?%p2%{4}
+ %&%t\011\011\011\011%;%?%p2%{2}%&%t\011\011%;%?%p2%{1}%&
+ %t\011%;,
+ cuu1=^K, home=^^, nel=\r\n, rs2=^L, .el=^X, .ind=\n,
+ .rep=%p1%c\022%p2%'?'%+%c, .ri=^K,
+
+viewdata-o|optimized version of viewdata prestel/viewdata terminals,
+ cup=\036%p1%?%p2%{20}%>%t%?%p1%{23}%=%t%Pa%{1}%e%{1}%+%;%;
+ %Pa%?%ga%{13}%<%t%?%ga%{07}%>%t\n\n\n\n\n\n\n\n%;%?%ga
+ %{4}%&%t\n\n\n\n%;%?%ga%{2}%&%t\n\n%;%?%ga%{1}%&%t\n%;%e
+ %{24}%ga%-%Pa%?%ga%{07}%>%t\013\013\013\013\013\013\013
+ \013%;%?%ga%{4}%&%t\013\013\013\013%;%?%ga%{2}%&%t\013
+ \013%;%?%ga%{1}%&%t\013%;%;%?%p2%{21}%<%t%?%p2%{07}%>%t
+ \011\011\011\011\011\011\011\011%;%?%p2%{15}%>%t\011
+ \011\011\011\011\011\011\011%;%?%p2%{4}%&%t\011\011\011
+ \011%;%?%p2%{2}%&%t\011\011%;%?%p2%{1}%&%t\011%;%e%{40}
+ %p2%-%Pa%?%ga%{07}%>%t\010\010\010\010\010\010\010\010%;
+ %?%ga%{15}%>%t\010\010\010\010\010\010\010\010%;%?%ga
+ %{4}%&%t\010\010\010\010%;%?%ga%{2}%&%t\010\010%;%?%ga
+ %{1}%&%t\010%;%?%p1%{23}%=%t\013%;%;,
+ .ll=^^^K, use=viewdata,
+
+# Samples with TERM=viewdata and TERM=viewdata-rv: http://canal.chez.com/blog/
+
+viewdata-rv|prestel/viewdata terminals with reverse capabilitie (as green),
+ xmc#1,
+ rmso=\EG, smso=\EB, use=viewdata-o,
######## OBSOLETE VDT TYPES
#
@@ -18249,11 +20994,11 @@ abm80|amtek business machines 80,
blit|jerq|blit running teletype rom,
am, eo, ul, xon,
cols#87, it#8, lines#72,
- bel=^G, clear=^L, cr=^M, cub1=\ED, cud1=^J, cuf1=\EC,
+ bel=^G, clear=^L, cr=\r, cub1=\ED, cud1=\n, cuf1=\EC,
cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA,
dch=\Ee%p1%{32}%+%c, dch1=\Ee!, dl=\EE%p1%{32}%+%c,
dl1=\EE!, el=\EK, ht=^I, ich=\Ef%p1%{32}%+%c, ich1=\Ef!,
- il=\EF%p1%{32}%+%c, il1=\EF!, ind=^J, kbs=^H, kcub1=\ED,
+ il=\EF%p1%{32}%+%c, il1=\EF!, ind=\n, kbs=^H, kcub1=\ED,
kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\Ex, kf2=\Ey, kf3=\Ez,
# (cbblit: here's a BSD termcap that says <cud1=\EG> -- esr)
@@ -18266,10 +21011,10 @@ cbblit|fixterm|blit running columbus code,
oblit|ojerq|first version of blit rom,
am, da, db, eo, mir, ul, xon,
cols#88, it#8, lines#72,
- bel=^G, clear=^L, cr=^M, cub1=\ED, cud1=^J, cuf1=\EC,
+ bel=^G, clear=^L, cr=\r, cub1=\ED, cud1=\n, cuf1=\EC,
cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dch1=\EO,
dl=\Ee%p1%{32}%+%c, dl1=\EE, ed=\EJ, el=\EK, flash=\E^G,
- ht=^I, il=\Ef%p1%{32}%+%c, il1=\EF, ind=^J, kbs=^H, rmir=\ER,
+ ht=^I, il=\Ef%p1%{32}%+%c, il1=\EF, ind=\n, kbs=^H, rmir=\ER,
smir=\EQ,
#### Bolt, Beranek & Newman (bbn)
@@ -18311,7 +21056,7 @@ bg2.0rv|bg3.10rv|bbn bitgraph 2.0 (reverse video),
bg2.0|bg3.10|bbn bitgraph 2.0 or later (no init),
OTbs, xenl,
cols#85, lines#64,
- bel=^G, clear=\E[H\E[J$<150>, cr=^M,
+ bel=^G, clear=\E[H\E[J$<150>, cr=\r,
csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, dl1=\E[M$<2*>,
ed=\E[J$<150>, el=\E[K$<2>, ht=^I, il1=\E[L$<2*>,
@@ -18329,7 +21074,7 @@ bg1.25nv|bbn bitgraph 1.25 (normal video),
# (bg1.25: I added <rmam>/<smam> based on the init string -- esr)
bg1.25|bbn bitgraph 1.25,
cols#85, lines#64,
- bel=^G, clear=\E[H\E[J$<150>, cr=^M, cub1=^H, cud1=\E[B,
+ bel=^G, clear=\E[H\E[J$<150>, cr=\r, cub1=^H, cud1=\E[B,
cuf1=\E[C, cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A,
dl1=\E[M$<2*>, ed=\E[J$<150>, el=\E[K$<2>, ht=^I,
il1=\E[L$<2*>, ind=\n$<280>, kcub1=\ED, kcud1=\EB,
@@ -18410,13 +21155,13 @@ tws-generic|dku7102|Bull Questar tws terminals,
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,
+ cnorm=\E[r, cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB,
+ cud1=\n, 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,
+ il1=\E[L, ind=\n, 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,
@@ -18428,7 +21173,8 @@ tws-generic|dku7102|Bull Questar tws terminals,
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%;,
+ 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[3g,
tsl=\EPY99\:98\E\\\E[0;98v\E[2;7m,
@@ -18446,7 +21192,8 @@ dku7102-old|BULL Questar 200 DKU7102 (microcode version < 6),
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,
- sgr=\E[0%?%p1%t;2;4;5;7%;%?%p3%t;7%;%?%p2%t;2%;%?%p4%t;2;4%;%?%p5%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p1%t;2;4;5;7%;%?%p3%t;7%;%?%p2%t;2%;%?%p4%t;2;4%;
+ %?%p5%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
smso=\E[0;4;5;7m, smul=\E[0;2m, use=tws-generic,
#=========================================================#
@@ -18530,7 +21277,7 @@ bq300|Bull vt320 ISO Latin 1 80 columns terminal,
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,
+ clear=\E[H\E[J, cnorm=\E[?25h, cr=\r,
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,
@@ -18540,7 +21287,8 @@ bq300|Bull vt320 ISO Latin 1 80 columns terminal,
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,
+ is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
+ l,
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~,
@@ -18554,22 +21302,26 @@ bq300|Bull vt320 ISO Latin 1 80 columns terminal,
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%;,
+ 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=\E(0, 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$~, use=ansi+pp,
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,
+ is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
+ l,
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,
+ is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
+ l,
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,
+ is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
+ l,
rs2=\E[?3h, use=bq300,
# This entry is used for terminals with vt320 emulation mode
@@ -18631,7 +21383,7 @@ bq300-8|Bull vt320 full 8 bits 80 columns,
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,
+ clear=\233H\233J, cnorm=\233?25h, cr=\r,
csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=\2331D,
cud=\233%p1%dB, cud1=\2331B, cuf=\233%p1%dC, cuf1=\2331C,
cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\2331A,
@@ -18641,7 +21393,8 @@ bq300-8|Bull vt320 full 8 bits 80 columns,
flash=\233?5h$<50>\233?5l, fsl=\2330$}, home=\233H,
ht=^I, hts=\EH, ich=\233%p1%d@, il=\233%p1%dL, il1=\233L,
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,
+ is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
+ l,
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,
@@ -18657,22 +21410,26 @@ bq300-8|Bull vt320 full 8 bits 80 columns,
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%;,
+ 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=\E(0, 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,
+ is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
+ l,
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,
+ is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
+ l,
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,
+ is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
+ l,
rs2=\233?3h, use=bq300-8,
# This entry is used for terminals with vt320 emulation mode
@@ -18689,16 +21446,19 @@ bq300-pc|Questar 303 with PC keyboard ISO Latin 1 80 columns,
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,
+ is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
+ l,
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,
+ is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
+ l,
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,
+ is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
+ l,
rs2=\E[?3h, use=bq300-pc,
# 8 bit ISO Latin Character Set (ISO 8859-1),
# 8 bit Control Characters,
@@ -18713,16 +21473,19 @@ bq300-8-pc|Q306-8-pc|Questar 303 with PC keyboard in full 8 bits 80 columns,
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,
+ is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
+ l,
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,
+ is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
+ l,
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,
+ is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
+ l,
rs2=\E[?3h, use=bq300-8-pc,
#======================================================#
@@ -18739,34 +21502,34 @@ bq300-8-pc-w-rv|Questar 303 with PC keyboard full 8 bits reverse 132 columns,
# CLR clear ^[`
# KBU keyboard unlock (set) ^[[W
# KBL keyboard lock (reset) ^[[X
-# CM character mode (async.) ^[k
+# CM character mode (async.) ^[k
# NEP non echoplex mode (by host) ^[l
-# EP echoplex mode (by host) ^[m
+# 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
+# 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
+# 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
+# TBI tab initialize ^[[N
# TBS tab set (at cursor pos.) ^[p
# PDS print data space ^[[0p
-# PHD print host data ^[[3p
+# 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
+# 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
@@ -18782,11 +21545,11 @@ 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,
+ cbt=\E[Z, clear=\E`, cr=\r, cub1=^H, cud1=\n, 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,
+ hts=\Ep, ich1=\E[I, ind=\n, 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,
@@ -18799,7 +21562,7 @@ vip|Bull Questar 3155-7800,
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,
+ mc5=\E[3p, nel=\r, 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,
@@ -18828,13 +21591,16 @@ vip-Hw|vip7800-Hw|Q310-vip-Hw|Questar 3155-vip7800 wide 72 lines,
cg7900|chromatics|chromatics 7900,
am,
cols#80, lines#40,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^],
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^],
cup=\001M%p2%d\,%p1%d\,, cuu1=^K, dch1=^A<1, dl1=^A<2,
- ed=^Al, el=^A`, home=^\, ich1=^A>1, il1=^A>2, ind=^J, ll=^A|,
- rmcup=\001W0\,40\,85\,48\,\014\001W0\,0\,85\,48\,\001M0\,40\,,
+ ed=^Al, el=^A`, home=^\, ich1=^A>1, il1=^A>2, ind=\n, ll=^A|,
+ rmcup=\001W0\,40\,85\,48\,\014\001W0\,0\,85\,48\,\001M0\,40
+ \,,
rmso=\001C1\,\001c2\,,
- smcup=\001P0\001O1\001R1\001C4\,\001c0\,\014\001M0\,42\,WARNING DOUBLE ENTER ESCAPE and \025\001C1\,\001c2\,\001W0\,0\,79\,39\,,
- smso=\001C4\,\001c7\,, uc=\001\001_\001\0,
+ smcup=\001P0\001O1\001R1\001C4\,\001c0\,\014\001M0\,42\,WARN
+ ING\sDOUBLE\sENTER\sESCAPE\sand\s\025\001C1\,\001c2\,
+ \001W0\,0\,79\,39\,,
+ smso=\001C4\,\001c7\,, uc=^A^A_^A\0,
#### Computer Automation
#
@@ -18842,8 +21608,8 @@ cg7900|chromatics|chromatics 7900,
ca22851|computer automation 22851,
am,
cols#80, lines#24,
- bel=^G, clear=\014$<8>, cr=^M, cub1=^U, cud1=^J, cuf1=^I,
- cup=\002%i%p1%c%p2%c, cuu1=^V, ed=^\, el=^], home=^^, ind=^J,
+ bel=^G, clear=\014$<8>, cr=\r, cub1=^U, cud1=\n, cuf1=^I,
+ cup=\002%i%p1%c%p2%c, cuu1=^V, ed=^\, el=^], home=^^, ind=\n,
kcub1=^U, kcud1=^W, kcuu1=^V, khome=^^,
#### Cybernex
@@ -18853,20 +21619,20 @@ ca22851|computer automation 22851,
cyb83|xl83|cybernex xl-83,
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=\014$<62>, cr=^M, cub1=^H, cud1=^J, cuf1=^I,
+ bel=^G, clear=\014$<62>, cr=\r, cub1=^H, cud1=\n, cuf1=^I,
cup=\027%p1%{32}%+%c%p2%{32}%+%c, cuu1=^N,
- ed=\020$<62>, el=\017$<3>, home=^K, ind=^J, kcub1=^H,
- kcud1=^J, kcuf1=^I, kcuu1=^N, ri=^N,
+ ed=\020$<62>, el=\017$<3>, home=^K, ind=\n, kcub1=^H,
+ kcud1=\n, kcuf1=^I, kcuu1=^N, ri=^N,
# (mdl110: removed obsolete ":ma=^Z^P:" and overridden ":cd=145^NA^W:" -- esr)
cyb110|mdl110|cybernex mdl-110,
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=\030$<70>, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
+ bel=^G, clear=\030$<70>, cr=\r, cub1=^H, cud1=\n, cuf1=^U,
cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z,
dch1=\016A\036$<3.5>, dl1=\016A\016\036$<40>,
ed=\016@\026$<6>, el=\016@\026$<145>, home=^Y,
ht=\011$<43>, ich1=\016A\035$<3.5>,
- il1=\016A\016\035$<65>, ind=^J, rmso=^NG, smso=^NF,
+ il1=\016A\016\035$<65>, ind=\n, rmso=^NG, smso=^NF,
#### Datapoint
#
@@ -18879,8 +21645,8 @@ cyb110|mdl110|cybernex mdl-110,
dp3360|datapoint|datapoint 3360,
OTbs, am,
cols#82, lines#25,
- bel=^G, clear=^]^_, cr=^M, cub1=^H, cud1=^J, cuf1=^X, cuu1=^Z,
- ed=^_, el=^^, home=^], ind=^J,
+ bel=^G, clear=^]^_, cr=\r, cub1=^H, cud1=\n, cuf1=^X, cuu1=^Z,
+ ed=^_, el=^^, home=^], ind=\n,
# From: Jan Willem Stumpel <jw.stumpel@inter.nl.net>, 11 May 1997
# The Datapoint 8242 Workstation was sold at least between 1985
@@ -18912,18 +21678,18 @@ dp3360|datapoint|datapoint 3360,
dp8242|datapoint 8242,
msgr,
cols#80, lines#25,
- bel=^G, civis=^Y, clear=\025\E\004\027\030, cnorm=^X,
- cr=^M, cub1=^H, cud1=^J,
- cup=\011%p2%'\0'%+%c%p1%'\0'%+%c, dl1=\E^Z, ed=^W, el=^V,
- home=^U, ht=^I, il1=\E^T, ind=^C,
+ bel=^G, civis=^Y, clear=^U\E^D^W^X, cnorm=^X, cr=\r, cub1=^H,
+ cud1=\n, cup=\011%p2%'\0'%+%c%p1%'\0'%+%c, dl1=\E^Z,
+ ed=^W, el=^V, home=^U, ht=^I, il1=\E^T, ind=^C,
is1=\E\014\E\016\0\230\0\317\025\027\030\E\004,
kbs=^H, kcub1=^D, kcud1=^B, kcuf1=^F, kcuu1=^E, kf1=^G\Ee,
- kf10=\EK\Ea, kf2=^I\Ed, kf3=^J\Ec, kf4=^J\Eb, kf5=^S\Ea,
- kf6=\EO\Ee, kf7=\EN\Ed, kf8=\EM\Ec, kf9=\EL\Eb, nel=^M^J,
+ kf10=\EK\Ea, kf2=^I\Ed, kf3=\n\Ec, kf4=\n\Eb, kf5=^S\Ea,
+ kf6=\EO\Ee, kf7=\EN\Ed, kf8=\EM\Ec, kf9=\EL\Eb, nel=\r\n,
rep=\E\023%p1%c%p2%c, ri=^K, rmso=\E^D, rmul=\E^D,
rs1=\E\014\E\016\0\230\0\317\025\027\030\E\004,
smso=\E^E, smul=\E^F,
- wind=\E\014\E\016%p1%'\0'%+%c%p2%'\0'%+%c%p3%'\0'%+%c%p4%'\0'%+%c\025,
+ wind=\E\014\E\016%p1%'\0'%+%c%p2%'\0'%+%c%p3%'\0'%+%c%p4%'
+ \0'%+%c\025,
#### DEC terminals (Obsolete types: DECwriter and vt40/42/50)
#
@@ -18936,26 +21702,26 @@ dp8242|datapoint 8242,
gt40|dec gt40,
OTbs, os,
cols#72, lines#30,
- bel=^G, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, cr=\r, cub1=^H, cud1=\n,
gt42|dec gt42,
OTbs, os,
cols#72, lines#40,
- bel=^G, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, cr=\r, cub1=^H, cud1=\n,
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,
+ bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
+ cuu1=\EA, ed=\EJ, el=\EK, ht=^I, ind=\n,
vt50h|dec vt50h,
OTbs,
cols#80, lines#12,
- bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
- el=\EK, ht=^I, ind=^J, ri=\EI,
+ el=\EK, ht=^I, ind=\n, ri=\EI,
# (vt61: there's a BSD termcap that claims <dl1=\EPd>, <il1=\EPf.> <kbs=^H>)
vt61|vt-61|vt61.5|dec vt61,
cols#80, lines#24,
- bel=^G, clear=\EH\EJ$<120>, cr=\r$<20>, cub1=^H, cud1=^J,
+ bel=^G, clear=\EH\EJ$<120>, cr=\r$<20>, cub1=^H, cud1=\n,
cuf1=\EC$<20>, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>,
cuu1=\EA$<20>, ed=\EJ$<120>, el=\EK$<70>, ht=^I,
ind=\n$<20>, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
@@ -18966,10 +21732,10 @@ vt61|vt-61|vt61.5|dec vt61,
gigi|vk100|dec gigi graphics terminal,
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,
+ bel=^G, clear=\E[H\E[2J, cr=\r, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J,
- el=\E[K, ht=^I, ind=^J,
+ el=\E[K, ht=^I, ind=\n,
is2=\E>\E[?3l\E[?4l\E[?5l\E[?20l\E[?7h\E[?8h,
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, ri=\EM,
@@ -18996,14 +21762,14 @@ pro350|decpro|dec pro console,
dw1|decwriter I,
OTbs, hc, os,
cols#72,
- bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, ind=\n,
dw2|decwriter|dw|decwriter II,
OTbs, hc, os,
cols#132,
- bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, kbs=^H,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, ind=\n, kbs=^H,
# \E(B Use U.S. character set (otherwise # => british pound !)
# \E[20l Disable "linefeed newline" mode (else puts \r after \n,\f,\v)
-# \E[w 10 char/in pitch
+# \E[w 10 char/in pitch
# \E[1;132 full width horizontal margins
# \E[2g clear all tab stops
# \E[z 6 lines/in
@@ -19020,27 +21786,28 @@ dw2|decwriter|dw|decwriter II,
dw3|la120|decwriter III,
OTbs, hc, os,
cols#132,
- bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, ht=^I, ind=\n,
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,
+ 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,
OTbs, am, hc, os,
cols#132,
- bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J, is2=\Ec, kbs=^H,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, ht=^I, ind=\n, is2=\Ec, kbs=^H,
kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS,
# These aren't official
ln03|dec ln03 laser printer,
hc,
cols#80, lines#66,
- bel=^G, cr=^M, cud1=^J, hd=\EK, ht=^I, hu=\EL, ind=^J, nel=^M^J,
+ bel=^G, cr=\r, cud1=\n, hd=\EK, ht=^I, hu=\EL, ind=\n, nel=\r\n,
rmso=\E[22m, rmul=\E[24m, sgr0=\E[m, smso=\E[1m,
smul=\E[4m,
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,
+ bel=^G, cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H,
+ kcud1=\n, nel=\r\n, use=ln03,
#### Delta Data (dd)
#
@@ -19052,9 +21819,10 @@ ln03-w|dec ln03 laser printer 132 cols,
delta|dd5000|delta data 5000,
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,
- cuu1=^Z, dch1=^NV, el=^NU, home=^NQ, ind=^J,
+ bel=^G, clear=^NR, cub1=^H, cud1=\n, cuf1=^Y,
+ cup=\017%p1%p1%{16}%m%{2}%*%-%{57}%+%c%p2%p2%{16}%m%{2}%*%-
+ %{57}%+%c,
+ cuu1=^Z, dch1=^NV, el=^NU, home=^NQ, ind=\n,
#### Digital Data Research (ddr)
#
@@ -19065,7 +21833,7 @@ ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator,
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,
- cud1=^J, cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>,
+ cud1=\n, 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, ind=\ED$<5/>, is2=\E[1;24r\E[24;1H, kbs=^H,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
@@ -19085,7 +21853,7 @@ ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator,
# Approximate date of release was 1982 (early 80s, anyway), and it had several
# evolutions including (limited) color versions such as the PS330C. PS300s
# were effectively obsolete by the late 80s, replaced by raster graphics
-# systems, although specialized applications like molecular modelling
+# systems, although specialized applications like molecular modeling
# hung onto them for a while longer. AFAIK all E&S vector graphics systems
# are out of production, though of course E&S is very much alive (in 1996).
# (ps300: changed ":pt@:" to "it@" -- esr)
@@ -19093,7 +21861,7 @@ ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator,
ps300|Picture System 300,
xt,
it@,
- rmso@, rmul@, smso@, smul@, use=vt100,
+ rmso@, rmul@, smso@, smul@, use=vt100+4bsd,
#### General Electric (ge)
#
@@ -19101,7 +21869,7 @@ ps300|Picture System 300,
terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200,
OTbs, hc, os,
cols#120,
- bel=^G, cr=^M, cud1=^J, ind=^J,
+ bel=^G, cr=\r, cud1=\n, ind=\n,
#### Heathkit/Zenith
#
@@ -19144,10 +21912,10 @@ terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200,
h19-a|h19a|heath-ansi|heathkit-a|heathkit h19 ansi mode,
OTbs, am, mir, msgr,
cols#80, it#8, lines#24,
- acsc=, bel=^G, clear=\E[2J, cnorm=\E[>4l, cr=^M, cub1=^H,
+ acsc=, bel=^G, clear=\E[2J, cnorm=\E[>4l, cr=\r, cub1=^H,
cud1=\E[1B, cuf1=\E[1C, cup=\E[%i%p1%d;%p2%dH,
cuu1=\E[1A, cvvis=\E[>4h, dch1=\E[1P, dl1=\E[1M$<1*>,
- ed=\E[J, el=\E[K, home=\E[H, ht=^I, il1=\E[1L$<1*>, ind=^J,
+ ed=\E[J, el=\E[K, home=\E[H, ht=^I, il1=\E[1L$<1*>, ind=\n,
is2=\E<\E[>1;2;3;4;5;6;7;8;9l\E[m\E[11m\E[?7h,
kbs=^H, kcub1=\E[1D, kcud1=\E[1B, kcuf1=\E[1C, kcuu1=\E[1A,
kf1=\EOS, kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP,
@@ -19177,10 +21945,10 @@ h19|heath|h19-b|heathkit|heath-19|z19|zenith|heathkit h19,
OTbs, am, eslok, hs, mir, msgr,
cols#80, it#8, lines#24,
acsc=+h.kaiggjdkclfmenbozqas{tvutvuwsx`~\^, bel=^G,
- clear=\EE, cnorm=\Ey4, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC,
+ clear=\EE, cnorm=\Ey4, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ex4,
- dch1=\EN, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I, ind=^J,
- ip=<1.5/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+ dch1=\EN, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I, ind=\n,
+ ip=$<1.5/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
kcuu1=\EA, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW,
kf6=\EP, kf7=\EQ, kf8=\ER, khome=\EH, lf6=blue, lf7=red,
lf8=white, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq, smacs=\EF,
@@ -19237,7 +22005,7 @@ z29|zenith29|z29b|zenith z29b,
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,
+ cr=\r, 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,
@@ -19253,14 +22021,14 @@ z29|zenith29|z29b|zenith z29b,
# indicated by the name. kc -> key click, nkc -> no key click, uc -> underscore
# cursor, bc -> block cursor.
# From: Mike Meyers
-# (z29a: replaced nonexistent <if=/usr/share/tabset/zenith29> befause <hts>
+# (z29a: replaced nonexistent <if=/usr/share/tabset/zenith29> because <hts>
# looks vt100-compatible -- esr)
z29a|z29a-kc-bc|h29a-kc-bc|heath/zenith 29 in ansi mode,
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,
+ cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\n, 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,
dl1=\E[M, dsl=\E[>1l, ed=\E[J, el=\E[K, fsl=\E[u\E[>5l,
@@ -19269,19 +22037,23 @@ z29a|z29a-kc-bc|h29a-kc-bc|heath/zenith 29 in ansi mode,
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, ked=\E[J,
kf0=\E[~, kf1=\EOS, kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW,
kf6=\EOP, kf7=\EOQ, kf8=\EOR, kf9=\EOX, khome=\E[H, lf0=help,
- mc0=\E#7, nel=^M\ED, rc=\E[r, rev=\E[7m, ri=\EM,
+ mc0=\E#7, nel=\r\ED, rc=\E[r, rev=\E[7m, ri=\EM,
rmcup=\E[?7h, rmso=\E[m, rmul=\E[m,
- rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>4h\E[>1;2;3;5;6;7;8;9l\E[m\E[11m,
+ rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>4h\E[>1;2;3;5;6;7;8;9l\E[m
+ \E[11m,
sc=\E[s, sgr0=\E[m, smcup=\E[?7l, smso=\E[7;2m, smul=\E[4m,
tbc=\E[3g, tsl=\E[s\E[>5;1h\E[25;%i%dH\E[1K,
-z29a-kc-uc|h29a-kc-uc|z29 ansi mode with keyckick and underscore cursor,
- rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>1;2;3;4;5;6;7;8;9l\E[m\E[11m,
+z29a-kc-uc|h29a-kc-uc|z29 ansi mode with keyclick and underscore cursor,
+ rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>1;2;3;4;5;6;7;8;9l\E[m\E[11
+ m,
use=z29a,
z29a-nkc-bc|h29a-nkc-bc|z29 ansi mode with block cursor and no keyclick,
- rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2;4h\E[>1;3;5;6;7;8;9l\E[m\E[11m,
+ rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2;4h\E[>1;3;5;6;7;8;9l\E[m
+ \E[11m,
use=z29a,
z29a-nkc-uc|h29a-nkc-uc|z29 ansi mode with underscore cursor and no keyclick,
- rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2h\E[>1;3;4;5;6;7;8;9l\E[m\E[11m,
+ rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2h\E[>1;3;4;5;6;7;8;9l\E[m
+ \E[11m,
use=z29a,
# From: Jeff Bartig <jeffb@dont.doit.wisc.edu> 31 Mar 1995
z39-a|z39a|zenith39-a|zenith39-ansi|Zenith 39 in ANSI mode,
@@ -19289,14 +22061,14 @@ z39-a|z39a|zenith39-a|zenith39-ansi|Zenith 39 in ANSI mode,
cols#80, lines#24,
acsc=0a``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
blink=\E[5m, bold=\E[1m, cbt=\E[1Z, civis=\E[>5h,
- clear=\E[2J\E[H, cnorm=\E[>5l, cr=^M,
+ clear=\E[2J\E[H, cnorm=\E[>5l, cr=\r,
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[1P, dim=\E[2m, dl=\E[%p1%dM,
dl1=\E[1M, dsl=\E[>1l, ed=\E[0J, el=\E[0K, el1=\E[1K,
fsl=\E[u, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[1L,
- ind=^J, is2=\E<\E[>1;3;5;6;7l\E[0m\E[2J, ka1=\EOw,
+ ind=\n, is2=\E<\E[>1;3;5;6;7l\E[0m\E[2J, ka1=\EOw,
ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D,
kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ked=\E[J, kf1=\EOS,
kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ,
@@ -19330,7 +22102,7 @@ p19|h19-b with il1/dl1,
ztx|ztx11|zt-1|htx11|ztx-1-a|ztx-10 or 11,
OTbs, am, eslok, hs,
cols#80, it#8, lines#24,
- clear=\EE, cub1=^H, cud1=^J, cuf1=\EC,
+ clear=\EE, cub1=^H, cud1=\n, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM,
dsl=\Ey1, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I,
il1=\EL, is2=\Ej\EH\Eq\Ek\Ev\Ey1\Ey5\EG\Ey8\Ey9\Ey>,
@@ -19380,19 +22152,19 @@ ims-ansi|ultima2|ultimaII|IMS Ultima II,
superbrain|intertec superbrain,
OTbs, am, bw,
cols#80, lines#24,
- OTbc=^U, bel=^G, clear=\014$<5*>, cr=^M, cub1=^H, cud1=^J,
+ OTbc=^U, bel=^G, clear=\014$<5*>, cr=\r, cub1=^H, cud1=\n,
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,
+ ed=\E~k<10*>, el=\E~K$<15>, ht=^I, ind=\n, kcub1=^U,
+ kcud1=\n, 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,
OTbs, am,
cols#80, lines#25,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^F,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<50>, cuu1=^Z, home=^A,
- ind=^J, rmso=\E0@, smso=\E0P,
+ ind=\n, rmso=\E0@, smso=\E0P,
# The intertube 2 has the "full duplex" problem like the tek 4025: if you
# are typing and a command comes in, the keystrokes you type get interspersed
# with the command and it messes up
@@ -19426,14 +22198,14 @@ graphos|graphos III,
am, mir,
cols#80, it#8, lines#24,
clear=\E[H\E[2J, cnorm=\Ez56;2;0;0z\Ez73z\Ez4;1;1z,
- cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
+ cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\E[A,
cvvis=\Ez4;2;1z\Ez56;2;80;24z, dch1=\E[P, dl=\E[%p1%dM,
dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL,
il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
- kf4=\EOS, khome=\E[H, nel=^M\ED, rc=\E8, ri=\EM, rmdc=\E[4l,
+ kf4=\EOS, khome=\E[H, nel=\r\ED, rc=\E8, ri=\EM, rmdc=\E[4l,
rmir=\E[4l, rmso=\E[m, sc=\E7, sgr0=\E[m, smdc=\E[4h,
smir=\E[4h, smso=\E[7m,
graphos-30|graphos III with 30 lines,
@@ -19467,8 +22239,10 @@ modgraph|mod24|modgraph terminal emulating vt100,
xenl@,
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,
+ 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+4bsd,
# 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,
@@ -19476,7 +22250,10 @@ modgraph2|modgraph gx-1000 80x24 with keypad not enabled,
clear=\EH\EJ$<50/>, cub1=^H, cud1=\EB$<2/>,
cuf1=\EC$<2/>, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5/>,
cuu1=\EA$<2/>, ed=\EJ$<50/>, el=\EK$<3/>, ht=^I,
- is2=\E<\E\^5;2s\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\E\^12;0s\E\^14;2s\E\^15;9s\E\^25;1s\E\^9;1s\E\^27;1,
+ is2=\E<\E\^5;2s\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;7
+ 3s\E\^11;81s\E\^11;89s\E\^12;0s\E\^14;2s\E\^15;9s\E\^25;
+ 1s\E\^9;1s\E\^27;1,
ri=\EI$<5/>,
#
# Modgraph from Nancy L. Cider <nancyc@brl-tbd>
@@ -19494,8 +22271,8 @@ modgraph2|modgraph gx-1000 80x24 with keypad not enabled,
modgraph48|mod|Modgraph w/48 lines,
OTbs, OTpt, am, xenl,
cols#80, it#8, lines#48, vt#3,
- 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,
+ OTnl=\n, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J,
+ cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, 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,
@@ -19524,13 +22301,13 @@ mt70|mt-70|Morrow MD-70; native Morrow mode,
am, mir, msgr, xon,
cols#80, it#8, lines#24,
acsc=+z\,{-x.yOi`|jGkFlEmDnHqJtLuKvNwMxI, bel=^G,
- cbt=\EI, civis=\E"0, clear=^Z, cnorm=\E"2, cr=^M, cub1=^H,
- cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<1>,
+ cbt=\EI, civis=\E"0, clear=^Z, cnorm=\E"2, cr=\r, cub1=^H,
+ cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<1>,
cuu1=^K, dch1=\EW, dim=\EG2, dl1=\ER, ed=\EY, el=\ET$<10>,
flash=\EK1$<200>\EK0, home=^^, ht=^I, ich1=\EQ, il1=\EE,
- ind=^J, invis@, is1=\E"2\EG0\E], kbs=^H, kcbt=^A^Z\r,
+ ind=\n, invis@, is1=\E"2\EG0\E], kbs=^H, kcbt=^A^Z\r,
kclr=^An\r, kcub1=^AL\r, kcud1=^AK\r, kcuf1=^AM\r,
- kcuu1=^AJ\r, kdch1=\177, kf1=^A@\r, kf10=^AI\r, kf11=^A`\r,
+ kcuu1=^AJ\r, kdch1=^?, kf1=^A@\r, kf10=^AI\r, kf11=^A`\r,
kf12=^Aa\r, kf13=^Ab\r, kf14=^Ac\r, kf15=^Ad\r, kf16=^Ae\r,
kf17=^Af\r, kf18=^Ag\r, kf19=^Ah\r, kf2=^AA\r, kf20=^Ai\r,
kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
@@ -19549,7 +22326,7 @@ ex155|Motorola Exorterm 155,
cbt=\E[, clear=\EX, cub1=\ED, cud1=\EB, cuf1=\EC,
cup=\EE%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\ET,
el=\EU, home=\E@, ht=\EZ, kbs=^H, kcbt=\E[, kclr=\EX, kcub1=^H,
- kcud1=^J, kcuf1=^L, kcuu1=^K, ked=\ET, kel=\EU, khome=\E@,
+ kcud1=\n, kcuf1=^L, kcuu1=^K, ked=\ET, kel=\EU, khome=\E@,
rmso=\Ec\ED, rmul=\Eg\ED, smso=\Eb\ED, smul=\Ef\ED,
#### Omron
@@ -19559,14 +22336,14 @@ ex155|Motorola Exorterm 155,
omron|Omron 8025AG,
OTbs, am, da, db,
cols#80, lines#24,
- bel=^G, clear=\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, cuu1=\EA,
+ bel=^G, clear=\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, cuu1=\EA,
cvvis=\EN, dch1=\EP, dl1=\EM, ed=\ER, el=\EK, home=\EH,
il1=\EL, ind=\ES, ri=\ET, rmso=\E4, smso=\Ef,
#### Ramtek
#
# Ramtek was a vendor of high-end graphics terminals around 1979-1983; they
-# were competition for things like the Tektronics 4025.
+# were competition for things like the Tektronix 4025.
#
# Ramtek 6221 from BRL, probably by Doug Gwyn
@@ -19584,17 +22361,19 @@ rt6221|Ramtek 6221 80x24,
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,
+ clear=\E[1;1H\E[J, cnorm=\E[>5h\E[>9h, cr=\r,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
cud=\E[%p1%dB, cud1=^K, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
cvvis=\E[>7h\E[>9l, ed=\E[J, el=\E[K, home=\E[1;1H, ht=^I,
- hts=\EH, ind=^J, is2=\E)0, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+ hts=\EH, ind=\n, is2=\E)0, kbs=^H, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, kf0=\EOP, kf1=\EOQ, kf2=\EOR,
kf3=\EOS, lf0=PF1, lf1=PF2, lf2=PF3, lf3=PF4, ll=\E[24;1H,
nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmkx=\E>,
rmso=\E[m, rmul=\E[m,
- rs1=\E[1w\E[>37m\E[>39m\E[1v\E[20l\E[?3l\E[?6l\E[>5h\E[>6h\E[>7h\E[>8l\E[>9h\E[>10l\E[1;24r\E[m\E[q\E(B\017\E)0\E#5\E>,
+ rs1=\E[1w\E[>37m\E[>39m\E[1v\E[20l\E[?3l\E[?6l\E[>5h\E[>6h
+ \E[>7h\E[>8l\E[>9h\E[>10l\E[1;24r\E[m\E[q\E(B\017\E)0\E#
+ 5\E>,
sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E=, smso=\E[7m,
smul=\E[4m, tbc=\E[3g,
# [TO DO: Check out: short forms of ho/cl and ll; reset (\Ec)].
@@ -19632,7 +22411,7 @@ hirez100|Selanar HiREZ-100,
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,
+ cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P,
dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
@@ -19642,7 +22421,8 @@ hirez100|Selanar HiREZ-100,
lf3=PF4, ll=\E[48H, mc0=\E[i, mc4=\E[4i\E[?4i,
mc5=\E[?5i\E[5i, nel=\EE, rc=\E8, rev=\E[7m, rmacs=^O,
rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
- rs1=\030\E2\E<\E[4i\E[?4i\E[12h\E[2;4;20l\E[?0;7h\E[?1;3;6;19l\E[r\E[m\E(B\017\E)0\E>,
+ rs1=\030\E2\E<\E[4i\E[?4i\E[12h\E[2;4;20l\E[?0;7h\E[?1;3;6;1
+ 9l\E[r\E[m\E(B\017\E)0\E>,
sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E[?1h\E=, smso=\E[7m,
smul=\E[4m, tbc=\E[3g,
hirez100-w|Selanar HiREZ-100 in 132-column mode,
@@ -19655,9 +22435,9 @@ hirez100-w|Selanar HiREZ-100 in 132-column mode,
vsc|Signetics Vsc Video driver by RMC,
am, msgr,
cols#80, it#8, lines#26,
- clear=\E[;H\E[2J$<50/>, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+ clear=\E[;H\E[2J$<50/>, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
- ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rev=^_\s,
+ ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, rev=^_\s,
rmso=^_!, rmul=^_#, sgr0=^_!, smso=^_\s, smul=^_",
#### Soroc
@@ -19683,18 +22463,18 @@ 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,
+ clear=\E*$<2>, cud1=\n, ed=\EY, el=\ET, kcub1=^H, kcud1=\n,
kcuf1=^L, kcuu1=^K, use=adm3a,
soroc140|iq140|soroc iq140,
OTbs, am, mir,
cols#80, lines#24,
- bel=^G, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, cbt=\EI, clear=\E+, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\Ew,
- dl1=\Er$<.7*>, ed=\Ey, el=\Et, home=^^, il1=\Ee$<1*>, ind=^J,
+ dl1=\Er$<.7*>, ed=\Ey, el=\Et, home=^^, il1=\Ee$<1*>, ind=\n,
kbs=^H, kcuf1=^L, kcuu1=^K, kf0=^A0\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=^^, ll=^^^K, rmir=\E8,
- rmso=\E\177, rmul=\E^A, smir=\E9, smso=\E\177, smul=\E^A,
+ kf8=^AG\r, kf9=^AH\r, khome=^^, ll=^^^K, rmir=\E8, rmso=\E^?,
+ rmul=\E^A, smir=\E9, smso=\E^?, smul=\E^A,
#### Southwest Technical Products
#
@@ -19706,10 +22486,11 @@ soroc140|iq140|soroc iq140,
swtp|ct82|southwest technical products ct82,
am,
cols#82, lines#20,
- bel=^G, clear=^L, cr=^M, cub1=^D, cud1=^J, cuf1=^S,
+ bel=^G, clear=^L, cr=\r, cub1=^D, cud1=\n, cuf1=^S,
cup=\013%p2%c%p1%c, cuu1=^A, dch1=^\^H, dl1=^Z, ed=^V, el=^F,
home=^P, ich1=^\^X, il1=^\^Y, ind=^N,
- is2=\034\022\036\023\036\004\035\027\011\023\036\035\036\017\035\027\022\011,
+ is2=\034\022\036\023\036\004\035\027\011\023\036\035\036
+ \017\035\027\022\011,
ll=^C, ri=^O, rmso=^^^F, smso=^^^V,
#### Synertek
@@ -19778,9 +22559,10 @@ synertek|ktm|synertek380|synertek ktm 3/80 tubeless terminal,
tab132|tab|tab132-15|tab 132/15,
da, db,
OTdN@, cols#80, lines#24, lm#96,
- cud1=^J, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M,
+ cud1=\n, 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+4bsd,
tab132-w|tab132 in wide mode,
cols#132,
is2=\E[?7h\E[?3h\E[?5l, use=tab132,
@@ -19811,21 +22593,22 @@ 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,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, ind=\n,
t3800|teleray 3800 series,
OTbs,
cols#80, it#8, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, 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,
+ home=\EH, ht=^I, ind=\n, ll=\EY7\s,
t1061|teleray|teleray 1061,
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,
+ bel=^G, clear=\014$<1>, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
dl1=\EM$<2*>, ed=\EJ$<1>, el=\EK, home=\EH, ht=^I, hts=\EF,
- ich1=\EP, il1=\EL$<2*>, ind=^J, ip=$<0.4*>,
- is2=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5\EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef,
+ ich1=\EP, il1=\EL$<2*>, ind=\n, ip=$<0.4*>,
+ is2=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5
+ \EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef,
kf1=^Z1, kf2=^Z2, kf3=^Z3, kf4=^Z4, kf5=^Z5, kf6=^Z6, kf7=^Z7,
kf8=^Z8, rmso=\ER@, rmul=\ER@, smso=\s\ERD, smul=\ERH,
tbc=\EG,
@@ -19857,10 +22640,10 @@ t10|teleray 10 special,
t16|teleray 16,
am, da, db, mir, xhp, xt,
cols#80, lines#24,
- bel=^G, clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=\E[B,
+ bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\E[B,
cuf1=\E[C, cup=%i\E[%p1%d;%p2%df, cuu1=\E[A, dch1=\E[P,
dl1=\E[M, ed=\E[0J, el=\E[0K, home=\E[H, ht=^I, il1=\E[L,
- ind=^J, kf1=^Z1, kf10=^Z0, kf2=^Z2, kf3=^Z3, kf4=^Z4, kf5=^Z5,
+ ind=\n, kf1=^Z1, kf10=^Z0, kf2=^Z2, kf3=^Z3, kf4=^Z4, kf5=^Z5,
kf6=^Z6, kf7=^Z7, kf8=^Z8, kf9=^Z9, ri=\E[T,
rmcup=\E[V\E[24;1f\E[?38h, rmir=\E[4l, rmso=\E[m,
rmul=\E[m, sgr0=\E[m, smcup=\E[U\E[?38l, smir=\E[4h,
@@ -19875,7 +22658,27 @@ t16|teleray 16,
ti700|ti733|ti735|ti745|ti800|ti silent 700/733/735/745 or omni 800,
OTbs, hc, os,
cols#80,
- bel=^G, cr=\r$<162>, cub1=^H, cud1=^J, ind=^J,
+ bel=^G, cr=\r$<162>, cub1=^H, cud1=\n, ind=\n,
+
+# Terminal entries for the Texas Instruments 703/707
+# hardcopy terminals.
+#
+# http://www.bitsavers.org/pdf/ti/terminal/silent_700/
+# Refer to:
+# Model 707 Data Terminal User's Manual
+#
+# pages 2-7 and 2-8 say that the model 707 prints 10.2 characters per inch
+# (cpi) (80 characters per line) by default, and can be switched to/from 17.0
+# cpi using an escape sequence. There is no 80/132-column capability in
+# terminfo (only the more general cpi which allows any value).
+ti703|ti707|Texas Instruments Silent 703/707,
+ am, hc, os, xenl,
+ cols#80, it#8,
+ bel=^G, cr=\r$<162>, cub1=^H, cud1=\n, cuf1=\s, ind=\n,
+ is2=\EPC\\, nel=\r\n,
+ti703-w|ti707-w|Texas Instruments Silent 703/707,
+ cols#132,
+ is2=\EPD\\, use=ti703,
#
# Texas Instruments 916 VDT 7 bit control mode
@@ -19890,7 +22693,7 @@ ti916|ti916-220-7|Texas Instruments 916 VDT 8859/1 vt220 mode 7 bit CTRL,
enacs=\E(B\E)0, ff=^L, flash=\E[?5h\E[?5l$<6>,
hpa=\E[%p1%{1}%+%dG, hts=\E[0W, ich=\E[%p1%d@$<250>,
il=\E[%p1%dL$<36>, ip=$<10>, is2=\E[1;24r\E[24;1H,
- kcmd=\E[29~, kdch1=\E[P, kent=^J, kf1=\E[17~, kf10=\E[28~,
+ kcmd=\E[29~, kdch1=\E[P, kent=\n, kf1=\E[17~, kf10=\E[28~,
kf11=\E[29~, kf12=\E[31~, kf2=\E[18~, kf3=\E[19~,
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,
@@ -19902,7 +22705,7 @@ ti916|ti916-220-7|Texas Instruments 916 VDT 8859/1 vt220 mode 7 bit CTRL,
#
ti916-8|ti916-220-8|Texas Instruments 916 VDT 8859/1 8 vt220 mode bit CTRL,
kcmd=\23329~, kcub1=\233D, kcud1=\233B, kcuf1=\233C,
- kcuu1=\233A, kdch1=\233P, kent=^J, kf1=\23317~,
+ kcuu1=\233A, kdch1=\233P, kent=\n, kf1=\23317~,
kf10=\23328~, kf11=\23329~, kf12=\23331~, kf2=\23318~,
kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~,
kf7=\23324~, kf8=\23325~, kf9=\23326~, khome=\233H,
@@ -19921,7 +22724,7 @@ ti924|Texas Instruments 924 VDT 8859/1 7 bit CTRL,
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,
+ clear=\E[2J\E[H, cnorm=\E[?25h, cr=\r,
csr=%i\E[%p1%d;%p2%dr, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E[?31h,
dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
@@ -19935,17 +22738,16 @@ ti924-8|Texas Instruments 924 VDT 8859/1 8 bit CTRL,
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,
+ clear=\E[2J\E[H, cnorm=\E[?25h, cr=\r,
csr=%i\E[%p1%d;%p2%dr, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E[?31h,
dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, kdch1=P$<\233>, kf1=P$<\217>,
- kf2=Q$<\217>, kf3=R$<\217>, kf4=S$<\217>, kf5=~$<\23316>,
- kf6=~$<\23317>, kf7=~$<\23318>, kf8=~$<\23319>,
- kf9=~$<\23320>, kich1=@$<\233>, rc=\E8, rev=\E[7m, ri=\EM,
- rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m, smso=\E[7m,
- smul=\E[4m, tbc=\E[3g,
+ kcuf1=\E[C, kcuu1=\E[A, kdch1=\233P, kf1=\217P, kf2=\217Q,
+ kf3=\217R, kf4=\217S, kf5=\23316~, kf6=\23317~,
+ kf7=\23318~, kf8=\23319~, kf9=\23320~, kich1=\233@, rc=\E8,
+ rev=\E[7m, ri=\EM, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m,
+ smso=\E[7m, smul=\E[4m, tbc=\E[3g,
ti924w|Texas Instruments 924 VDT 7 bit - 132 column mode,
cols#132, use=ti924,
ti924-8w|Texas Instruments 924 VDT 8 bit - 132 column mode,
@@ -19953,7 +22755,7 @@ ti924-8w|Texas Instruments 924 VDT 8 bit - 132 column mode,
ti931|Texas Instruments 931 VDT,
OTbs, am, xon,
cols#80, lines#24,
- bel=^G, blink=\E4P, clear=\EL, cnorm=\E4@, cr=^M, cub1=\ED,
+ bel=^G, blink=\E4P, clear=\EL, cnorm=\E4@, cr=\r, cub1=\ED,
cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH,
ich1=\ER\EP\EM, il1=\EN, ind=\Ea, invis=\E4H,
@@ -19971,7 +22773,7 @@ ti_ansi|basic entry for ti928,
am, bce, eo, xenl, xon,
colors#8, cols#80, it#8, lines#25, pairs#64,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[2J\E[H,
- cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B,
+ cr=\r, 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, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@,
il1=\E[L, ind=\E[S, kbs=^H, kcub1=\E[D, kcud1=\E[B,
@@ -20011,10 +22813,10 @@ ti928-8|Texas Instruments 928 VDT 8859/1 8 bit CTRL,
zen30|z30|zentec 30,
OTbs, am, mir, ul,
cols#80, lines#24,
- bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=\E*, cr=\r, cub1=^H, cud1=\n, 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,
+ il1=\EE$<1.5*>, ind=\n, rmir=\Er, rmul@, smir=\Eq, smso=\EG6,
smul@, use=adm+sgr,
# (zen50: this had extension capabilities
# :BS=^U:CL=^V:CR=^B:
@@ -20026,7 +22828,7 @@ zen50|z50|zentec zephyr,
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=^^,
+ invis@, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^,
rmul@, smul@, use=adm+sgr,
# CCI 4574 (Office Power) from Will Martin <wmartin@BRL.ARPA> via BRL
@@ -20034,7 +22836,7 @@ cci|cci1|z8001|zen8001|CCI Custom Zentec 8001,
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,
+ csr=\ER%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=\n,
cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
cvvis=\EF\EQ\EM \ER 7, dim=\EM!, ed=\EJ, el=\EK, home=\EH,
invis=\EM(, is2=\EM \EF\ET\EP\ER 7, kbs=^H, kcub1=\ED,
@@ -20081,37 +22883,38 @@ att6386|at386|386at|AT&T WGS 6386 console,
cols#80, it#8, lines#25,
acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[=C,
- clear=\E[2J\E[H, cnorm=\E[=1C, cr=^M, cub=\E[%p1%dD,
+ clear=\E[2J\E[H, cnorm=\E[=1C, cr=\r, 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, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
dl=\E[%p1%dM, dl1=\E[1M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
- ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=\E[S,
- indn=\E[%p1%dS, invis=\E[9m, is2=\E[0;10;39m, kbs=^H,
- kcbt=^], kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\E[P, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf11=\EOZ,
- kf12=\EOA, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU,
- kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H, kich1=\E[@,
- knp=\E[U, kpp=\E[V, krmir=\E0, nel=\r\E[S, rc=\E8, rev=\E[7m,
- ri=\E[T, rin=\E[%p1%dT, rmacs=\E[10m, rmso=\E[m, rmul=\E[m,
- sc=\E7,
- sgr=\E[10m\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p9%t;12%e;10%;%?%p7%t;9%;m,
+ ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=\E[S, invis=\E[9m,
+ is2=\E[0;10;39m, kbs=^H, kcbt=^], kcub1=\E[D, kcud1=\E[B,
+ kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kend=\E[Y, kf1=\EOP,
+ kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf2=\EOQ, kf3=\EOR,
+ kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX,
+ khome=\E[H, kich1=\E[@, knp=\E[U, kpp=\E[V, krmir=\E0,
+ nel=\r\E[S, rc=\E8, rev=\E[7m, ri=\E[T, rmacs=\E[10m,
+ rmso=\E[m, rmul=\E[m, sc=\E7,
+ sgr=\E[10m\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;
+ 2%;%?%p6%t;1%;%?%p9%t;12%e;10%;%?%p7%t;9%;m,
sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m,
- tbc=\E[3g, vpa=\E[%i%p1%dd, use=klone+color,
+ tbc=\E[3g, vpa=\E[%i%p1%dd, use=ecma+index,
+ use=klone+color,
# (pc6300plus: removed ":KM=/usr/lib/ua/kmap.s5:"; renamed BO/EE/CI/CV -- esr)
pc6300plus|AT&T 6300 plus,
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,
+ clear=\E[2J\E[H, cnorm=\E[=1C, cr=\r, cub1=^H, cud1=\E[B,
cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A,
dch1=\E[1P, dim=\E[2m, dl1=\E[1M, ed=\E[0J, el=\E[0K,
- home=\E[H, hts=\EH, ich1=\E[1@, il1=\E[1L, ind=^J,
+ home=\E[H, hts=\EH, ich1=\E[1@, il1=\E[1L, ind=\n,
invis=\E[9m, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
kcuu1=\E[A, kf1=\EOc, kf10=\EOu, kf2=\EOd, kf3=\EOe,
kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\EOk,
- nel=^M^J, rev=\E[7m, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+ nel=\r\n, rev=\E[7m, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
smso=\E[7m, smul=\E[4m, tbc=\E[3g,
# From: Benjamin C. W. Sittler <bsittler@nmt.edu>
@@ -20212,7 +23015,7 @@ pc6300plus|AT&T 6300 plus,
# * cfont(1) in the PC 7300 documentation.
# */
#
-# struct altfdata /* structure for alt font data */
+# struct altfdata /* structure for alt font data */
# {
# short altf_slot; /* memory slot number */
# char altf_name[FNSIZE]; /* font name (file name) */
@@ -20235,12 +23038,12 @@ att7300|unixpc|pc7300|3b1|s4|AT&T UNIX PC Model 7300,
am, xon,
cols#80, it#8, lines#24,
bel=^G, blink=\E[9m, bold=\E[1m, cbt=\E^I, civis=\E[=1C,
- clear=\E[2J\E[H, cnorm=\E[=0C, cr=^M, cub=\E[%p1%dD,
+ clear=\E[2J\E[H, cnorm=\E[=0C, cr=\r, 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, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
ed=\E[0J, el=\E[0K, home=\E[H, ich1=\E[@, il=\E[%p1%dL,
- il1=\E[L, ind=^J, invis=\E[9m, is1=\017\E[=1w, kBEG=\ENB,
+ il1=\E[L, ind=\n, invis=\E[9m, is1=\017\E[=1w, kBEG=\ENB,
kCAN=\EOW, kCPY=\END, kCRT=\EON, kDC=\ENF, kDL=\ENE,
kEND=\ENN, kEOL=\EOA, kFND=\EOX, kHLP=\EOM, kHOM=\ENM,
kIC=\ENJ, kLFT=\ENK, kMOV=\ENC, kNXT=\ENH, kOPT=\EOR,
@@ -20270,7 +23073,7 @@ att7300|unixpc|pc7300|3b1|s4|AT&T UNIX PC Model 7300,
aws|Convergent Technologies AWS workstation under UTX and Xenix,
am,
OTug#0, cols#80, lines#28, xmc#0,
- OTbc=^H, OTma=\016h\013j\001k\022l\002m, OTnl=^J, acsc=,
+ OTbc=^H, OTma=\016h\013j\001k\022l\002m, OTnl=\n, 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,
@@ -20300,7 +23103,7 @@ awsc|Convergent Technologies AWS workstation under CTOS,
qdss|qdcons|qdss glass tty,
OTbs, am,
cols#128, lines#57,
- clear=\032$<1/>, cub1=^H, cud1=^J, cuf1=^L,
+ clear=\032$<1/>, cub1=^H, cud1=\n, cuf1=^L,
cup=\E=%p1%c%p2%c, cuu1=^K,
#### Fortune Systems consoles
@@ -20330,22 +23133,22 @@ fos|fortune|Fortune system,
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>,
+ clear=\014$<20>, cnorm=\E\\, cr=\r, cub1=^H, cud1=\n$<3>,
cup=\034C%p1%{32}%+%c%p2%{32}%+%c, cuu1=\013$<3>,
cvvis=\E\:, dch1=\034W$<5>, dl1=\034R$<15>,
ed=\034Y$<3*>, el=^\Z, home=\036$<10>, ht=^Z,
- ich1=\034Q$<5>, il1=\034E$<15>, ind=^J, is2=^_.., kbs=^H,
+ ich1=\034Q$<5>, il1=\034E$<15>, ind=\n, is2=^_.., kbs=^H,
kcub1=^Aw\r, kcud1=^Ay\r, kcuf1=^Az\r, kcuu1=^Ax\r,
kend=^Ak\r, kent=^Aq, kf1=^Aa\r, kf2=^Ab\r, kf3=^Ac\r,
kf4=^Ad\r, kf5=^Ae\r, kf6=^Af\r, kf7=^Ag\r, kf8=^Ah\r,
- khome=^A?\r, knp=^Ao\r, kpp=^An\r, nel=^M^J, rev=\EH,
+ khome=^A?\r, knp=^Ao\r, kpp=^An\r, nel=\r\n, rev=\EH,
rmacs=^O, rmso=^\I`, rmul=^\IP, sgr0=\EI, smacs=\Eo,
smso=^\H`, smul=^\HP,
#### Masscomp consoles
#
-# Masscomp has gone out of business. Their product line was purchased by
-# comany in Georgia (US) called "XS International", parts and service may
+# Masscomp has gone out of business. Their product line was purchased by a
+# company in Georgia (US) called "XS International", parts and service may
# still be available through them.
#
@@ -20370,8 +23173,8 @@ masscomp2|masscomp large screen version 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,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuu1=^K, ht=^I,
+ ind=\n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
#### Other consoles
@@ -20453,18 +23256,27 @@ ctrm|C terminal emulator,
pairs#63, pb#19200, vt#6,
bel=^G, blink=\E&dA%{1}%PA,
bold=%?%gH%{0}%=%t\E&dH%{1}%PH%;, cbt=\Ei,
- clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\E&a%p2%dc%p1%dY, cuu1=\EA, dch1=\EP$<2>, dl1=\EM,
ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=\011$<2>, hts=\E1,
- il1=\EL, ind=^J, ip=$<2>, is2=\E&jA\r, kbs=^H, kcub1=\Eu\r,
+ il1=\EL, ind=\n, ip=$<2>, is2=\E&jA\r, kbs=^H, kcub1=\Eu\r,
kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\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, khome=\Ep\r,
- op=\E&bn\E&bB\E&bG\E&bR%{0}%PX%{0}%PY%{0}%PZ%{1}%PW%{1}%PV%{1}%PU,
+ op=\E&bn\E&bB\E&bG\E&bR%{0}%PX%{0}%PY%{0}%PZ%{1}%PW%{1}%PV
+ %{1}%PU,
rev=%?%gB%{0}%=%t\E&dB%{1}%PB%;, rmir=\ER, rmkx=\E&jA,
- setb=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gU%t\E&bR%;%?%gV%t\E&bG%;%?%gW%t\E&bB%;%?%p1%{1}%&%t\E&bb%{1}%e%{0}%;%PZ%?%p1%{2}%&%t\E&bg%{1}%e%{0}%;%PY%?%p1%{4}%&%t\E&br%{1}%e%{0}%;%PX,
- setf=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gX%t\E&br%;%?%gY%t\E&bg%;%?%gZ%t\E&bb%;%?%p1%{1}%&%t\E&bB%{1}%e%{0}%;%PW%?%p1%{2}%&%t\E&bG%{1}%e%{0}%;%PV%?%p1%{4}%&%t\E&bR%{1}%e%{0}%;%PU,
- sgr=\E&d@%{0}%PA%{0}%PB%{0}%PD%{0}%PH%?%p1%p3%p5%|%|%t\E&dB%{1}%PB%;%?%p4%t\E&dA%{1}%PA%;%?%p6%t\E&dH%{1}%PH%;%?%p2%t\E&dD%;,
+ setb=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gU%t
+ \E&bR%;%?%gV%t\E&bG%;%?%gW%t\E&bB%;%?%p1%{1}%&%t\E&bb
+ %{1}%e%{0}%;%PZ%?%p1%{2}%&%t\E&bg%{1}%e%{0}%;%PY%?%p1
+ %{4}%&%t\E&br%{1}%e%{0}%;%PX,
+ setf=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gX%t
+ \E&br%;%?%gY%t\E&bg%;%?%gZ%t\E&bb%;%?%p1%{1}%&%t\E&bB
+ %{1}%e%{0}%;%PW%?%p1%{2}%&%t\E&bG%{1}%e%{0}%;%PV%?%p1
+ %{4}%&%t\E&bR%{1}%e%{0}%;%PU,
+ sgr=\E&d@%{0}%PA%{0}%PB%{0}%PD%{0}%PH%?%p1%p3%p5%|%|%t\E&dB
+ %{1}%PB%;%?%p4%t\E&dA%{1}%PA%;%?%p6%t\E&dH%{1}%PH%;%?%p2
+ %t\E&dD%;,
sgr0=\E&d@%{0}%PA%{0}%PB%{0}%PH, smir=\EQ, smkx=\E&jB,
smso=\E&dD, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
@@ -20475,13 +23287,14 @@ ctrm|C terminal emulator,
gs6300|emots|AT&T PC6300 with EMOTS terminal emulator,
am, bce, msgr, xon,
colors#8, cols#80, it#8, lines#24, pairs#63,
- acsc=++\,\,--..``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- 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,
+ acsc=++\,\,--..``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyz
+ z{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
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, home=\E[H, ht=^I,
- ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+ ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
is2=\E[m, kbs=^H, kcbt=^R^I, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, kf1=\E[0s, kf2=\E[24s, kf3=\E[1s,
kf4=\E[23s, kf5=\E[2s, kf6=\E[22s, kf7=\E[3s, kf8=\E[21s,
@@ -20502,18 +23315,18 @@ h19k|h19kermit|heathkit emulation provided by Kermit (no auto margin),
# Software (formerly Peripherals Computers & Supplies, Inc) of
# 2457 Perkiomen Ave., Reading, PA 19606, 1-800-876-8376. They can
# also be reached at support@synergy.com.
-versaterm|versaterm vt100 emulator for the macintosh,
+versaterm|versaterm vt100 emulator for the Macintosh,
am, xenl,
cols#80, it#8, lines#24,
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/>,
+ clear=\E[;H\E[2J$<50/>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+ cub1=^H, cud1=\n, cuf1=\E[C$<2/>,
cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>,
dch1=\E[1P$<7/>, dl1=\E[1M$<9/>, ed=\E[J$<50/>,
el=\E[K$<3/>, home=\E[H, ht=^I, ich1=\E[1@$<7/>,
il1=\E[1L$<9/>, 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=^M^J, rc=\E8, rev=\E[7m$<2/>,
+ kf3=\EOR, kf4=\EOS, nel=\r\n, rc=\E8, rev=\E[7m$<2/>,
rf=/usr/share/tabset/vt100, ri=\EM$<5/>,
rmkx=\E>\E[?1l, rmso=\E[m$<2/>, rmul=\E[m$<2/>, rs1=\E>,
sc=\E7, sgr0=\E[m$<2/>, smkx=\E=\E[?1h, smso=\E[7m$<2/>,
@@ -20525,12 +23338,12 @@ xtalk|IBM PC with xtalk communication program (versions up to 3.4),
am, mir, msgr, xon,
cols#80, it#8, lines#24, vt#3, xmc#1,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, clear=\E[H\E[J$<50>, cr=^M, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C$<2>,
+ bel=^G, clear=\E[H\E[J$<50>, cr=\r, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C$<2>,
cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
cuu1=\E[A$<2>, dl1=\E[M$<99>, ed=\E[J$<50>, el=\E[K$<3>,
el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH,
- il1=\E[L$<99>, ind=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB,
+ il1=\E[L$<99>, ind=\n, kbs=^H, kcub1=\EOD, kcud1=\EOB,
kcuf1=\EOC, kcuu1=\EOA, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
rmkx=\E[?1l\E>, rmso=\E[m\s,
rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m,
@@ -20542,9 +23355,9 @@ xtalk|IBM PC with xtalk communication program (versions up to 3.4),
simterm|attpc running simterm,
am,
cols#80, lines#24,
- bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC,
+ bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\ER,
- dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, ind=^J, rmcup=\EVE,
+ dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, ind=\n, rmcup=\EVE,
rmso=\E&d@, sgr0=\E&d@, smcup=\EVS, smso=\E&dB,
#### Daisy wheel printers
@@ -20557,7 +23370,7 @@ simterm|attpc running simterm,
diablo1620|diablo1720|diablo450|ipsi|diablo 1620,
hc, os,
cols#132, it#8,
- cub1=^H, cud1=^J, cuu1=\E^J, hd=\ED, hpa=\E\011%i%p1%c,
+ cub1=^H, cud1=\n, cuu1=\E\n, hd=\ED, hpa=\E\011%i%p1%c,
ht=^I, hts=\E1, hu=\EU, kbs=^H, tbc=\E2,
diablo1620-m8|diablo1640-m8|diablo 1620 w/8 column left margin,
cols#124,
@@ -20589,34 +23402,34 @@ diablo1740-lm|630-lm|1730-lm|x1700-lm|diablo 1740 printer,
dtc382|DTC 382,
am, da, db, xhp,
cols#80, lines#24, lm#96,
- bel=^G, clear=\020\035$<20>, cnorm=^Pb, cr=^P^M, cub1=^H,
+ bel=^G, clear=\020\035$<20>, cnorm=^Pb, cr=^P\r, cub1=^H,
cuf1=^PR, cup=\020\021%p2%c%p1%c, cuu1=^P^L, cvvis=^PB,
- dch1=^X, dl1=^P^S, ed=\020\025\020\023\020\023, el=^P^U,
- home=^P^R, il1=^P^Z, ind=^J, pad=\177, rmcup=, rmir=^Pi,
- rmul=^P \0, smcup=\020\035$<20>, smir=^PI, smul=^P ^P,
+ dch1=^X, dl1=^P^S, ed=^P^U^P^S^P^S, el=^P^U, home=^P^R,
+ il1=^P^Z, ind=\n, pad=^?, rmcup=, rmir=^Pi, rmul=^P \0,
+ smcup=\020\035$<20>, smir=^PI, smul=^P ^P,
dtc300s|DTC 300s,
hc, os,
cols#132,
- bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=^Z, ff=^L, hd=\Eh, ht=^I,
- hts=\E1, hu=\EH, ind=^J, kbs=^H, tbc=\E3,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=^Z, ff=^L, hd=\Eh, ht=^I,
+ hts=\E1, hu=\EH, ind=\n, kbs=^H, tbc=\E3,
gsi|mystery gsi terminal,
hc, os,
cols#132,
- bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=^Z, hd=\Eh, ht=^I, hu=\EH,
- ind=^J,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=^Z, hd=\Eh, ht=^I, hu=\EH,
+ ind=\n,
aj830|aj832|aj|anderson jacobson,
hc, os,
- bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E7, hd=\E9, hu=\E8,
- ind=^J,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=\E7, hd=\E9, hu=\E8,
+ ind=\n,
# From: Chris Torek <chris@gyre.umd.edu> Thu, 7 Nov 85 18:21:58 EST
aj510|Anderson-Jacobson model 510,
am, mir,
cols#80, lines#24,
clear=^L, cub1=^H, cuf1=\EX,
cup=\E#%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EY,
- dch1=.1*\E'D, dl1=\E&D$<2*/>, ed=\E'P, el=\E'L, ich1=,
+ dch1=\E'D$<.1*>, dl1=\E&D$<2*/>, ed=\E'P, el=\E'L, ich1=,
il1=\E&I$<2*/>, ip=$<.1*/>, kcub1=\EW, kcud1=\EZ,
- kcuf1=\EX, kcuu1=\EY, pad=\177, rmcup=\E"N, rmir=\E'J,
+ kcuf1=\EX, kcuu1=\EY, pad=^?, rmcup=\E"N, rmir=\E'J,
rmso=\E"I, rmul=\E"U, smcup=\E"N, smir=\E'I, smso=\E"I,
smul=\E"U,
# From: <cbosg!ucbvax!pur-ee!cincy!chris> Thu Aug 20 09:09:18 1981
@@ -20624,19 +23437,19 @@ aj510|Anderson-Jacobson model 510,
nec5520|nec|spinwriter|nec 5520,
hc, os,
cols#132, it#8,
- bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E9, ff=^L,
- hd=\E]s\n\E]W, ht=^I, hts=\E1, hu=\E]s\E9\E]W, ind=^J,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=\E9, ff=^L,
+ hd=\E]s\n\E]W, ht=^I, hts=\E1, hu=\E]s\E9\E]W, ind=\n,
kbs=^H, tbc=\E3,
qume5|qume|Qume Sprint 5,
hc, os,
cols#80, it#8,
- bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=^Z, ff=^L, hd=\Eh, ht=^I,
- hts=\E1, hu=\EH, ind=^J, kbs=^H, tbc=\E3,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=^Z, ff=^L, hd=\Eh, ht=^I,
+ hts=\E1, hu=\EH, ind=\n, kbs=^H, tbc=\E3,
# I suspect the xerox 1720 is the same as the diablo 1620.
xerox1720|x1720|x1750|xerox 1720,
hc, os,
cols#132, it#8,
- bel=^G, cr=^M, cub1=^H, cud1=^J, ff=^L, ht=^I, hts=\E1, ind=^J,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, ff=^L, ht=^I, hts=\E1, ind=\n,
tbc=\E2,
#### Miscellaneous obsolete terminals, manufacturers unknown
@@ -20657,19 +23470,19 @@ cad68-2|cgc2|cad68 basic monitor transparent mode size 2 chars,
cops10|cops|cops-10|cops 10,
am, bw,
cols#80, lines#24,
- bel=^G, clear=\030$<30/>, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ bel=^G, clear=\030$<30/>, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^W, el=^V,
- ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
+ ind=\n, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K,
khome=^Y,
# (d132: removed duplicate :ic=\E5:,
# merged in capabilities from a BRL entry -- esr)
d132|datagraphix|datagraphix 132a,
da, db, in,
cols#80, lines#30,
- bel=^G, clear=^L, cnorm=\Em\En, cr=^M, cub1=^H, cud1=^J,
+ bel=^G, clear=^L, cnorm=\Em\En, cr=\r, cub1=^H, cud1=\n,
cuf1=\EL, cup=\E8%i%p1%3d%p2%3d, cuu1=\EK, cvvis=\Ex,
- dch1=\E6, home=\ET, ht=^I, ich1=\E5, il1=\E3, ind=^J, kbs=^H,
- kcub1=^H, kcud1=^J, nel=^M^J, ri=\Ew,
+ dch1=\E6, home=\ET, ht=^I, ich1=\E5, il1=\E3, ind=\n, kbs=^H,
+ kcub1=^H, kcud1=\n, nel=\r\n, ri=\Ew,
# The d800 was an early portable terminal from c.1984-85 that looked a lot
# like the original Compaq `lunchbox' portable (but no handle). It had a vt220
# mode (which is what this entry looks like) and several other lesser-known
@@ -20678,8 +23491,8 @@ d800|Direct 800/A,
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,
- cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
+ bel=^G, clear=\E[1;1H\E[2J, cnorm=\E[>12h, cr=\r, cub1=^H,
+ cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
cvvis=\E[>12l, ed=\E[J, el=\E[K, ht=^I, ind=\ED, kcub1=\E[D,
kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ,
kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
@@ -20688,33 +23501,35 @@ d800|Direct 800/A,
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,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, cuf1=^I, cuu1=^O, el=^X,
+ home=^N, ind=\n,
# The DWK was a terminal manufactured in the Soviet Union c.1986
dwk|dwk-vt|dwk terminal,
am,
cols#80, it#8, lines#24,
- acsc=+\^\,Q-S.M0\177`+a\:f'g#h#i#jXkClJmFnNo~qUs_tEuPv\\wKxW~_,
- bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ acsc=+\^\,Q-S.M0\177`+a\:f'g#h#i#jXkClJmFnNo~qUs_tEuPv
+ \\wKxW~_,
+ bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
- ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EQ, ind=^J, kbs=\177,
+ ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EQ, ind=\n, kbs=^?,
kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\Ee,
kf1=\Ef1, kf10=\Ef0, kf2=\Ef2, kf3=\Ef3, kf4=\Ef4, kf5=\Ef5,
kf6=\Ef6, kf7=\Ef7, kf8=\Ef8, kf9=\Ef9, kich1=\Ed, knp=\Eh,
- kpp=\Eg, nel=^M^J, rev=\ET, ri=\ES, rmacs=\EG, rmso=\EX,
+ kpp=\Eg, nel=\r\n, rev=\ET, ri=\ES, rmacs=\EG, rmso=\EX,
sgr0=\EX, smacs=\EF, smso=\ET,
env230|envision230|envision 230 graphics terminal,
xenl@,
enacs@, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rmacs@,
- sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m$<2>,
- sgr0=\E[0m$<2>, smacs@, use=vt100,
+ sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;
+ 1%;m$<2>,
+ sgr0=\E[0m$<2>, smacs@, smso=\E[7m, use=vt100+4bsd,
# 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,
OTbs, am, os,
cols#80,
- bel=^G, cr=^M, cub1=^H, cud1=^J, hd=^\, hu=^^, ind=^J,
+ bel=^G, cr=\r, cub1=^H, cud1=\n, hd=^\, hu=^^, ind=\n,
ep40|ep4000|execuport 4000,
cols#136, use=ep4080,
# Adam Thompson <athompso@pangea.ca> tells us:
@@ -20732,7 +23547,7 @@ ep40|ep4000|execuport 4000,
ifmr|Informer D304,
OTbs, am,
cols#80, lines#24,
- clear=\EZ, cub1=^H, cud1=^J, cuf1=\EC,
+ clear=\EZ, cub1=^H, cud1=\n, cuf1=\EC,
cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dch1=\E\\,
ed=\E/, el=\EQ, home=\EH, ich1=\E[, ri=\En, rmso=\EK, sgr0=\EK,
smso=\EJ,
@@ -20741,13 +23556,15 @@ opus3n1+|Esprit Opus3n1+ in wy60 mode with ANSI arrow keys,
am, bw, hs, km, mir, msgr, ul, xon,
cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#80,
acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2,
- cbt=\EI, civis=\E`0, clear=\E*$<100>, cnorm=\E`1, cr=^M,
- cub1=^H, cud1=^J, cuf1=^L, cup=\Ea%i%p1%dR%p2%dC, cuu1=^K,
+ cbt=\EI, civis=\E`0, clear=\E*$<100>, cnorm=\E`1, cr=\r,
+ cub1=^H, cud1=\n, cuf1=^L, cup=\Ea%i%p1%dR%p2%dC, cuu1=^K,
dch1=\EW$<11>, dim=\EGp, dl1=\ER$<5>, dsl=\Ez(\r,
- ed=\EY$<100>, el=\ET, fsl=^M, home=\036$<2>, ht=\011$<5>,
- hts=\E1, if=/usr/share/tabset/std, il1=\EE$<4>, ind=^J,
+ ed=\EY$<100>, el=\ET, fsl=\r, home=\036$<2>, ht=\011$<5>,
+ hts=\E1, if=/usr/share/tabset/std, il1=\EE$<4>, ind=\n,
ip=$<3>,
- is2=\E`\:\Ee(\EO\Ee6\Ec41\E~4\Ec21\Ed/\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177\Ezz`\E[F\177\EA1*\EZH12,
+ is2=\E`\:\Ee(\EO\Ee6\Ec41\E~4\Ec21\Ed/\Ezz&\E[A\177\Ezz'\E[B
+ \177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177\Ezz`\E[F
+ \177\EA1*\EZH12,
kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, kdch1=\EW, kdl1=\ER, ked=\EY,
kel=\ET, kend=\E[F, kent=\E7, kf1=^A@\r, kf10=^AI\r,
@@ -20762,16 +23579,19 @@ opus3n1+|Esprit Opus3n1+ in wy60 mode with ANSI arrow keys,
rmacs=\EH^C, rmam=\Ed., rmcup=, rmir=\Er, rmln=\EA11,
rmxon=\Ec20, rs1=\E~!\E~4$<150>, rs2=\EeF$<150>,
rs3=\EwG\Ee($<150>,
- sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c,
+ sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;\EG%{48}%?%p2
+ %t%{8}%|%;%?%p1%p3%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|
+ %t%{64}%|%;%?%p7%t%{1}%|%;%c,
sgr0=\E(\EH\003\EG0\EcD, smacs=\EH^B, smam=\Ed/,
- smcup=\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177,
+ 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\EG0, use=adm+sgr,
teletec|Teletec Datascreen,
OTbs, am,
cols#80, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^_, cuu1=^K,
- home=^^, ind=^J,
+ bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^_, cuu1=^K,
+ home=^^, ind=\n,
# From: Mark Dornfeld <romwa@ucbvax.berkeley.edu>
# This description is for the LANPAR Technologies VISION 3220
# terminal from 1984/85. The function key definitions k0-k5 represent the
@@ -20835,7 +23655,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# You can obtain ECMA-48 for free by sending email to helpdesk@ecma.ch
# requesting the standard(s) you want (i.e. ECMA-48, "Control Functions for
# Coded Character Sets"), include your snail-mail address, and you should
-# receive the document in due course. Don't expect an email acknowledgement.
+# receive the document in due course. Don't expect an email acknowledgment.
#
# Related standards include "X3.4-1977: American National Standard Code for
# Information Interchange" (the ASCII standard) and "X3.41.1974:
@@ -20860,8 +23680,8 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# sequences. In the main table, \E stands for an escape (\033) character,
# SPC for space. Pn stands for a single numeric parameter to be inserted
# in decimal ASCII. Ps stands for a list of such parameters separated by
-# semicolons. Parameter meanings for most parametrized sequences are
-# decribed in the notes.
+# semicolons. Parameter meanings for most parameterized sequences are
+# described in the notes.
#
# Sequence Sequence Parameter or
# Mnemonic Name Sequence Value Mode terminfo
@@ -20869,7 +23689,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# APC Applicatn Program Command \E _ - Delim -
# BEL Bell * ^G - - bel
# BPH Break Permitted Here * \E B - * -
-# BS Backpace * ^H - EF -
+# BS BackSpace * ^H - EF -
# CAN Cancel * ^X - - - (A)
# CBT Cursor Backward Tab \E [ Pn Z 1 eF cbt
# CCH Cancel Previous Character \E T - - -
@@ -21047,9 +23867,14 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# (E) ECMA-48 calls this "Active Position Report" but preserves the CPR
# abbreviation.
#
-# (F) CTC parameter values: 0 = set char tab, 1 = set line tab, 2 = clear
-# char tab, 3 = clear line tab, 4 = clear all char tabs on current line,
-# 5 = clear all char tabs, 6 = clear all line tabs.
+# (F) CTC parameter values:
+# 0 = set char tab,
+# 1 = set line tab,
+# 2 = clear char tab,
+# 3 = clear line tab,
+# 4 = clear all char tabs on current line,
+# 5 = clear all char tabs,
+# 6 = clear all line tabs.
#
# (G) CUP and HVP are identical in effect. Some ANSI.SYS versions accept
# HVP, but always allow CUP as an alternate. ECMA-48 calls HVP "Character
@@ -21058,12 +23883,19 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# (H) ECMA calls this "Cursor Line Tabulation" but preserves the CVT
# abbreviation.
#
-# (I) DSR parameter values: 0 = ready, 1 = busy, 2 = busy, will send DSR
-# later, 3 = malfunction, 4 = malfunction, will send DSR later, 5 = request
-# DSR, 6 = request CPR response.
+# (I) DSR parameter values:
+# 0 = ready,
+# 1 = busy,
+# 2 = busy, will send DSR later,
+# 3 = malfunction,
+# 4 = malfunction, will send DSR later,
+# 5 = request DSR,
+# 6 = request CPR response.
#
-# (J) ECMA calls ED "Erase In Page". EA/ED/EL parameters: 0 = clear to end,
-# 1 = clear from beginning, 2 = clear.
+# (J) ECMA calls ED "Erase In Page". EA/ED/EL parameters:
+# 0 = clear to end,
+# 1 = clear from beginning,
+# 2 = clear.
#
# (K) ECMA calls this "End of Guarded Area" but preserves the EPA abbreviation.
#
@@ -21076,20 +23908,57 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# (N) ECMA-48 calls this "Character Tabulation" but retains the HT
# abbreviation.
#
-# (O) SGR parameter values: 0 = default mode (attributes off), 1 = bold,
-# 2 = dim, 3 = italicized, 4 = underlined, 5 = slow blink, 6 = fast blink,
-# 7 = reverse video, 8 = invisible, 9 = crossed-out (marked for deletion),
-# 10 = primary font, 10 + n (n in 1..9) = nth alternative font, 20 = Fraktur,
-# 21 = double underline, 22 = turn off 2, 23 = turn off 3, 24 = turn off 4,
-# 25 = turn off 5, 26 = proportional spacing, 27 = turn off 7, 28 = turn off
-# 8, 29 = turn off 9, 30 = black fg, 31 = red fg, 32 = green fg, 33 = yellow
-# fg, 34 = blue fg, 35 = magenta fg, 36 = cyan fg, 37 = white fg, 38 = set
-# fg color as in CCIT T.416, 39 = set default fg color, 40 = black bg
-# 41 = red bg, 42 = green bg, 43 = yellow bg, 44 = blue bg, 45 = magenta bg,
-# 46 = cyan bg, 47 = white bg, 48 = set bg color as in CCIT T.416, 39 = set
-# default bg color, 50 = turn off 26, 51 = framed, 52 = encircled, 53 =
-# overlined, 54 = turn off 51 & 52, 55 = not overlined, 56-59 = reserved,
-# 61-65 = variable highlights for ideograms.
+# (O) SGR parameter values:
+# 0 = default mode (attributes off),
+# 1 = bold,
+# 2 = dim,
+# 3 = italicized,
+# 4 = underlined,
+# 5 = slow blink,
+# 6 = fast blink,
+# 7 = reverse video,
+# 8 = invisible,
+# 9 = crossed-out (marked for deletion),
+# 10 = primary font,
+# 10 + n (n in 1..9) = nth alternative font,
+# 20 = Fraktur,
+# 21 = double underline,
+# 22 = turn off 2,
+# 23 = turn off 3,
+# 24 = turn off 4,
+# 25 = turn off 5,
+# 26 = proportional spacing,
+# 27 = turn off 7,
+# 28 = turn off 8,
+# 29 = turn off 9,
+# 30 = black fg,
+# 31 = red fg,
+# 32 = green fg,
+# 33 = yellow fg,
+# 34 = blue fg,
+# 35 = magenta fg,
+# 36 = cyan fg,
+# 37 = white fg,
+# 38 = set fg color as in CCITT T.416,
+# 39 = set default fg color,
+# 40 = black bg
+# 41 = red bg,
+# 42 = green bg,
+# 43 = yellow bg,
+# 44 = blue bg,
+# 45 = magenta bg,
+# 46 = cyan bg,
+# 47 = white bg,
+# 48 = set bg color as in CCITT T.416,
+# 49 = set default bg color,
+# 50 = turn off 26,
+# 51 = framed,
+# 52 = encircled,
+# 53 = overlined,
+# 54 = turn off 51 & 52,
+# 55 = not overlined,
+# 56-59 = reserved,
+# 61-65 = variable highlights for ideograms.
#
# (P) SI is also called LSO, Locking Shift Zero.
#
@@ -21099,11 +23968,15 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# use CUD for this function and ignore VPR. ECMA calls it `Line Position
# Absolute' but retains the VPA abbreviation.
#
-# (S) MC parameters: 0 = start xfer to primary aux device, 1 = start xfer from
-# primary aux device, 2 = start xfer to secondary aux device, 3 = start xfer
-# from secondary aux device, 4 = stop relay to primary aux device, 5 =
-# start relay to primary aux device, 6 = stop relay to secondary aux device,
-# 7 = start relay to secondary aux device.
+# (S) MC parameters:
+# 0 = start xfer to primary aux device,
+# 1 = start xfer from primary aux device,
+# 2 = start xfer to secondary aux device,
+# 3 = start xfer from secondary aux device,
+# 4 = stop relay to primary aux device,
+# 5 = start relay to primary aux device,
+# 6 = stop relay to secondary aux device,
+# 7 = start relay to secondary aux device.
#
# (T) ECMA-48 calls this "Partial Line Forward" but retains the PLD
# abbreviation.
@@ -21113,19 +23986,32 @@ v3220|LANPAR Vision II model 3220/3221/3222,
#
# (V) ECMA-48 calls this "Reverse Line Feed" but retains the RI abbreviation.
#
-# (W) RM/SM modes are as follows: 1 = Guarded Area Transfer Mode (GATM),
-# 2 = Keyboard Action Mode (KAM), 3 = Control Representation Mode (CRM),
-# 4 = Insertion Replacement Mode, 5 = Status Report Transfer Mode (SRTM),
-# 6 = Erasure Mode (ERM), 7 = Line Editing Mode (LEM), 8 = Bi-Directional
-# Support Mode (BDSM), 9 = Device Component Select Mode (DCSM),
-# 10 = Character Editing Mode (HEM), 11 = Positioning Unit Mode (PUM),
-# 12 = Send/Receive Mode, 13 = Format Effector Action Mode (FEAM),
-# 14 = Format Effector Transfer Mode (FETM), 15 = Multiple Area Transfer
-# Mode (MATM), 16 = Transfer Termination Mode, 17 = Selected Area Transfer
-# Mode, 18 = Tabulation Stop Mode, 19 = Editing Boundary Mode, 20 = Line Feed
-# New Line Mode (LF/NL), Graphic Rendition Combination Mode (GRCM), 22 =
-# Zero Default Mode (ZDM). The EBM and LF/NL modes have actually been removed
-# from ECMA-48's 5th edition but are listed here for reference.
+# (W) RM/SM modes are as follows:
+# 1 = Guarded Area Transfer Mode (GATM),
+# 2 = Keyboard Action Mode (KAM),
+# 3 = Control Representation Mode (CRM),
+# 4 = Insertion Replacement Mode (IRM),
+# 5 = Status Report Transfer Mode (SRTM),
+# 6 = Erasure Mode (ERM),
+# 7 = Line Editing Mode (LEM),
+# 8 = Bi-Directional Support Mode (BDSM),
+# 9 = Device Component Select Mode (DCSM),
+# 10 = Character Editing Mode (HEM),
+# 11 = Positioning Unit Mode (PUM),
+# 12 = Send/Receive Mode (SRM),
+# 13 = Format Effector Action Mode (FEAM),
+# 14 = Format Effector Transfer Mode (FETM),
+# 15 = Multiple Area Transfer Mode (MATM),
+# 16 = Transfer Termination Mode (TTM),
+# 17 = Selected Area Transfer Mode (SATM),
+# 18 = Tabulation Stop Mode (TSM),
+# 19 = Editing Boundary Mode (EBM),
+# 20 = Line Feed New Line Mode (LF/NL),
+# 21 = Graphic Rendition Combination Mode (GRCM),
+# 22 = Zero Default Mode (ZDM).
+#
+# The EBM and LF/NL modes have actually been removed from ECMA-48's 5th edition
+# but are listed here for reference.
#
# (X) Select Alternate Presentation Variants is used only for non-Latin
# alphabets.
@@ -21286,7 +24172,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# (including the System V console) support an attribute 6 that undoes this
# braindamage (this is required by iBCS2).
#
-# * Some older versions of ANSI.SYS have a bug that causes thems to require
+# * Some older versions of ANSI.SYS have a bug that causes them to require
# ESC [ Pn k as EL rather than the ANSI ESC [ Pn K. (This is not ECMA-48
# compatible.)
@@ -21301,10 +24187,10 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# terminfo entry are followed with the corresponding capability in parens:
#
# CSI <n>k disable (n=0) or enable (n=1) keyclick
-# CSI 2h lock keyboard
-# CSI 2i send screen as input
-# CSI 2l unlock keyboard
-# CSI 6m enable background color intensity
+# CSI 2h lock keyboard
+# CSI 2i send screen as input
+# CSI 2l unlock keyboard
+# CSI 6m enable background color intensity
# CSI <0-2>c reserved
# CSI <0-59>m select graphic rendition
# CSI <n>;<m>H (cup) cursor to line n and column m
@@ -21331,10 +24217,10 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# CSI <n>e cursor down n lines and in first column
# CSI <n>g (cbt) clear all tabs
# CSI <n>z make virtual terminal n active
-# CSI ?7h (smam) turn automargin on
-# CSI ?7l (rmam) turn automargin off
-# CSI s save cursor position
-# CSI u restore cursor position to saved value
+# CSI ?7h (smam) turn automargin on
+# CSI ?7l (rmam) turn automargin off
+# CSI s save cursor position
+# CSI u restore cursor position to saved value
# CSI =<c>A set overscan color
# CSI =<c>F set normal foreground color
# CSI =<c>G set normal background color
@@ -21347,12 +24233,12 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# CSI =<s>;<e>C set cursor parameters
# CSI =<x>D enable/disable intensity of background color
# CSI =<x>E set/clear blink vs. bold background
-# CSI 7 (sc) (sc) save cursor position
-# CSI 8 (rc) (rc) restore cursor position to saved value
+# CSI 7 (sc) (sc) save cursor position
+# CSI 8 (rc) (rc) restore cursor position to saved value
# CSI H (hts) (hts) set tab stop
# CSI Q<n><string> define function key string
# (string must begin and end with delimiter char)
-# CSI c (clear) clear screen
+# CSI c (clear) clear screen
#
# The lack of any specification for attributes in SGR (among other things)
# makes this a wretchedly weak standard. The table above is literally
@@ -21378,22 +24264,22 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# CL key_char_left
# CR key_char_right
# CW key_change_window create_window
-# EN key_end kend
+# EN key_end kend
# HM key_home khome
# HP ??
-# LD key_delete_line kdl1
-# LF key_linefeed label_off
+# LD key_delete_line kdl1
+# LF key_linefeed label_off
# NU key_next_unlocked_cell
-# PD key_page_down knp
+# PD key_page_down knp
# PL ??
# PN start_print mc5
# PR ??
# PS stop_print mc4
-# PU key_page_up kpp pulse
+# PU key_page_up kpp pulse
# RC key_recalc remove_clock
# RF key_toggle_ref req_for_input
-# RT key_return kent
-# UP key_up_arrow kcuu1 parm_up_cursor
+# RT key_return kent
+# UP key_up_arrow kcuu1 parm_up_cursor
# WL key_word_left
# WR key_word_right
#
@@ -21458,7 +24344,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
#
# There is a set of nonstandard terminfos used by IBM's AIX operating system.
# The AIX terminfo library diverged from SVr1 terminfo, and replaces all
-# capabilities following prtr_non with the following special capabilties:
+# capabilities following prtr_non with the following special capabilities:
# box[12], batt[12], colb[0123456789], colf[0123456789], f[01234567], kbtab,
# kdo, kcmd, kcpn, kend, khlp, knl, knpn, kppn, kppn, kquit, ksel, kscl, kscr,
# ktab, kmpf[123456789], apstr, ksf1..ksf10, kf11...kf63, kact, topl, btml,
@@ -21507,12 +24393,13 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# function keys do not use 2-character names, and are available only with
# terminfo.
#
-# As of mid-2012, no other terminfo/termcap implementation than ncurses
-# supports this extension; termcap libraries can as noted above make limited
-# use of the feature.
+# Beginning in 2010, NetBSD curses has also provided a "-x" option for
+# tic/infocmp, and uses this database (with a few changes). There are a few
+# differences, noted in
+# https://invisible-island.net/ncurses/ncurses-netbsd.html
#
-# ncurses makes explicit checks for a few user-definable capabilities: AX, U8,
-# XM.
+# ncurses makes explicit checks for a few user-definable capabilities: AX,
+# RGB, U8, XM, which are documented in the user_caps(5) manual page.
#
#### SCREEN Extensions:
#
@@ -21532,7 +24419,8 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# "default".
#
# XT is harder, since screen's manpage does not give more details. For that,
-# we must read screen's source-code. When XT is set, screen assumes
+# we must read screen's source-code. For example, when XT is set, screen
+# assumes
#
# a) OSC 1 sets the title string, e.g., for the icon. Recent versions of
# screen may also set the terminal's name, which is (for xterm) distinct
@@ -21547,18 +24435,26 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# sequence. However, because screen uses only termcap, the values returned
# by Af/Ab are not usable because they rely on expressions that termcap
# does not support. Therefore, screen uses a hardcoded string to work
-# around the limitation.
+# around the limitation. In a few cases, screen also uses tparm, which
+# is a terminfo function rather than termcap.
# f) all entries named "*xterm*" or "*rxvt*" have the bce flag set.
+# g) screen also uses the feature to decide whether to pay attention to other
+# xterm-related features which are unrelated to the description in the
+# manual page.
+#
+# Since XT is useful only when the outer terminal matches screen's assumptions,
+# it is appropriate to use it in the derived terminal descriptions such as
+# "screen.xterm", but not in the generic "screen", "screen-bce" entries.
#
# The other ISO-2022 features are rarely used, but provided here to make
# screen's termcap features available.
#
#### XTERM Extensions:
#
-# Most of the xterm extensions are for function-keys. Since patch #94 (in
+# Most of the xterm extensions are for function-keys. Since xterm patch #94 (in
# 1999), xterm has supported shift/control/alt/meta modifiers which produce
# additional function-key strings. Some other developers copied the feature,
-# though they did not follow xterm's lead in patch #167 (in 2002), to make
+# though they did not follow xterm's lead in xterm patch #167 (in 2002), to make
# these key definitions less ambiguous.
#
# A few terminals provide similar functionality (sending distinct keys when
@@ -21587,18 +24483,32 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# TS is a string capability which acts like "tsl", but uses no parameter and
# goes to the first column of the "status line".
# XM is a string capability which overrides ncurses's built-in string which
-# enables xterm mouse mode.
+# enables/disables xterm mouse mode.
+# xm shows the format of the mouse responses. Parameters:
+# p1 = y-ordinate
+# p2 = x-ordinate
+# p3 = button
+# p4 = state, e.g., pressed or released
+# p5 = y-ordinate starting region
+# p6 = x-ordinate starting region
+# p7 = y-ordinate ending region
+# p8 = x-ordinate ending region
+# Other extensions, used in xm:
+# %u = UTF-8
#
#### Miscellaneous extensions:
#
# gsbom/grbom are used to enable/disable real bold (not intensity bright) mode.
# This was implemented for the Hurd.
+# rmxx/smxx describes the ECMA-48 strikeout/crossed-out attributes, as an
+# experimental feature of tmux.
# E3 clears the terminal's scrollback buffer. This was implemented in the
# Linux 3.0 kernel as a security feature. It matches a feature which was
# added in xterm patch #107.
# U8 is a numeric capability which denotes a terminal emulator which does not
# support VT100 SI/SO when processing UTF-8 encoding. Set this to a nonzero
# value to enable it.
+# Smulx modifies the appearance of underlines in VTE, December 2017.
#
######## CHANGE HISTORY
#
@@ -21672,7 +24582,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# 9.4.2 (Thu Mar 9 01:45:44 EST 1995):
# * Merged in DEC's official entries for its terminals. The only old
# entry I kept was Doug Gwyn's alternate vt100 (as vt100-avo).
-# * Replaced the translated BBN Bitgraph entries with purpose-built
+# * Replaced the translated BBN BitGraph entries with purpose-built
# ones from AT&T's SVr3.
# * Replaced the AT&T entries with AT&T's official terminfos.
# * Added teleray 16, vc415, cops10.
@@ -21858,7 +24768,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * Corrected hpa/vpa in linux entry. They still fail the worm test.
# * We can handle the HP meml/memu capability now.
# * Added smacs to klone entries, just as documentation.
-# * Carrected ansi.sys and cit-500 entries.
+# * Corrected ansi.sys and cit-500 entries.
# * Added z39, vt320-k311, v220c, and avatar entries.
# * Make pcansi use the ansi.sys invis capability.
# * Added DIP switch descriptions for vt100, adm31, tvi910, tvi920c,
@@ -21952,7 +24862,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# 9.13.0 (Sun Mar 10 00:13:08 EST 1996):
# * Another sweep through the Shuford archive looking for new info.
# * Added dg100 alias to dg6053 based on a comp.terminals posting.
-# * Added st52 from Per Persson.
+# * Added st52 from Per Persson.
# * Added eterm from the GNU Emacs 19.30 distribution.
# * Freeze for 1.9.9.
# 9.13.1 (Fri Mar 29 14:06:46 EST 1996):
@@ -22249,12 +25159,12 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * merge Data General terminfo from Hasufin <hasufin@vidnet.net> - TD
#
# 1998/10/10
-# * update xterm-xfree86 to current (patch 84), for is2/rs2 changes - TD
+# * update xterm-xfree86 to current (xterm patch #84), for is2/rs2 changes - TD
# * correct initialization string in xterm-r5, add misc other features
-# to correspond with xterm patch 84 - TD
+# to correspond with xterm patch #84 - TD
#
# 1998/12/19
-# * update xterm-xfree86 to current (patch 90), smcur/rmcur changes - TD
+# * update xterm-xfree86 to current (xterm patch #90), smcur/rmcur changes - TD
# * add Mathew Vernon's mach console entries
# * corrections for ncsa function-keys (report by Larry Virden)
#
@@ -22278,7 +25188,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * resolve ambiguity of kend/kll/kslt and khome/kfnd/kich1 strings in
# xterm and ncsa entries by removing the unneeded ones. Note that
# some entries will return kend & khome versus kslt and kfnd, for
-# PC-style keyboards versus strict vt220 compatiblity - TD
+# PC-style keyboards versus strict vt220 compatibility - TD
#
# 1999/3/13
# * adjust xterm-xfree86 khome/kend to match default PC-style keyboard
@@ -22291,7 +25201,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# (Jeffrey C Honig)
#
# 1999/3/27
-# * adjust xterm-xfree86 miscellaneous keypad keys, as per patch #94 - TD.
+# * adjust xterm-xfree86 miscellaneous keypad keys, as per xterm patch #94 - TD.
#
# 1999/4/10
# * add linux-lat, from RedHat patches to ncurses 4.2
@@ -22526,7 +25436,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * add entries for mterm (mterm, mterm-ansi, decansi) -TD
# * ncr260wy350pp has only 16 color pairs -TD
# * add sun-type4 from NetBSD -TD
-# * update xterm-xfree86 to current (patch 170) -TD
+# * update xterm-xfree86 to current (xterm patch #170) -TD
# * add screen-bce, screen-s entries -TD
# * add xterm-1002, xterm-1003 entries -TD
#
@@ -22586,7 +25496,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * similar fixups for cvvis/cnorm various entries -TD
#
# 2004-05-22
-# * remove 'ncv' from xterm-256color (patch 188) -TD
+# * remove 'ncv' from xterm-256color (xterm patch #188) -TD
#
# 2004-06-26
# * add mlterm -TD
@@ -22802,7 +25712,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
#
# 2007-11-11
# * use xterm-xf86-v44 for "xterm-xfree86", reflecting changes to
-# xterm starting with patch #216 -TD
+# xterm starting with xterm patch #216 -TD
# * make legacy xterm entries such as xterm-24 inherit from xterm-old,
# to match xterm #230 -TD
# * extend xterm+pccX entries to match xterm #230 -TD
@@ -22871,7 +25781,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
#
# 2009-12-19
# * add bw (auto-left-margin) to nsterm* entries (Benjamin Sittler)
-# * rename minix to minix-1.7, add minix entry for Minux3 -TD
+# * rename minix to minix-1.7, add minix entry for Minix3 -TD
#
# 2009-12-26
# * add bterm (bogl 0.1.18) -TD
@@ -22892,7 +25802,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# FreeMiNT by Guido Flohr (from patch/report by Alan Hourihane).
#
# 2010-06-12
-# * add mlterm+256color entry -TD
+# * add mlterm-256color entry -TD
#
# 2010-07-17
# * add hard-reset for rs2 to wsvt25 to help ensure that reset ends
@@ -23126,4 +26036,403 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * add teken entry to show actual properties of FreeBSD's "xterm"
# console -TD
#
+# 2014-03-22
+# * add terminology entry -TD
+# * add mlterm3 entry, use that as "mlterm" -TD
+# * inherit mlterm-256color from mlterm -TD
+#
+# 2014-03-23
+# * fix typo in "mlterm" entry (report by Gabriele Balducci) -TD
+#
+# 2014-03-30
+# * cancel ccc in putty-256color and konsole-256color for consistency
+# with the cancelled initc capability (patch by Sven Zuhlsdorf).
+# * add xterm+256setaf building block for various terminals which only
+# get the 256-color feature half-implemented -TD
+# * updated "st" entry (leaving the 0.1.1 version as "simpleterm") to
+# 0.4.1 -TD
+#
+# 2014-05-03
+# * add vt520ansi (Mike Gran)
+#
+# 2014-05-24
+# * correct several entries which had termcap-style padding used in
+# terminfo: adm21, aj510, alto-h19, att605-pc, x820 -TD
+# * correct syntax for padding in some entries: dg211, h19 -TD
+# * correct ti924-8 which had confused padding versus octal escapes -TD
+# * correct padding in sbi entry -TD
+#
+# 2014-06-07
+# * update xterm-new to xterm patch #305 -TD
+# + change screen's smso to use SGR 7 (ECMA-80 reverse) rather than SGR 3
+# (italic). This was a long-ago typo in screen 3.1.1 which was
+# overlooked until a few terminal emulators implemented the feature -TD
+#
+# 2014-06-09
+# > fix regression in screen terminfo entries (reports by Christian
+# Ebert, Gabriele Balducci) -TD
+# + revert the change to screen; see notes for why this did not work -TD
+# + cancel sitm/ritm for entries which extend "screen", to work around
+# screen's hardcoded behavior for SGR 3 -TD
+#
+# 2014-06-14
+# + modify sgr for screen.xterm-new to support dim capability -TD
+# + add dim capability to nsterm+7 -TD
+# + cancel dim capability for iterm -TD
+# + add dim, invis capabilities to vte-2012 -TD
+# + add sitm/ritm to konsole-base and mlterm3 -TD
+#
+# 2014-10-06
+# + add xterm-1005 and xterm-1006 entries, with suggested extension
+# capability "xm" -TD
+#
+# 2014-10-07
+# + update test-report for mrxvt -TD
+#
+# 2014-10-11
+# + add xterm-x10mouse, xterm-x11mouse, etc. -TD
+#
+# 2014-10-18
+# + reviewed terminology 0.6.1, add function key definitions. None of
+# the vt100-compatibility issues were improved -TD
+#
+# 2015-04-22
+# + add 'dim' capability to screen entry (report by Leonardo B Schenkel)
+# + add several key definitions to nsterm-bce to match preconfigured
+# keys, e.g., with OSX 10.9 and 10.10 (report by Leonardo B Schenkel)
+#
+# 2015-05-02
+# + remove unnecessary ';' from E3 capabilities -TD
+# + add tmux entry, derived from screen (patch by Nicholas Marriott).
+# + split-out recent change to nsterm-bce as nsterm-build326, and add
+# nsterm-build342 to reflect changes with successive releases of OSX
+# (discussion with Leonardo B Schenkel)
+# + add xon, ich1, il1 to ibm3161 (patch by Stephen Powell,
+# Debian #783806)
+#
+# 2015-05-17
+# + remove screen-bce.mlterm, since mlterm does not do "bce" -TD
+# + add several screen.XXX entries to support the respective variations
+# for 256 colors -TD
+#
+# 2015-05-23
+# + add putty+fnkeys* building-block entries -TD
+#
+# 2015-05-30
+# + remove spurious "%;" from st entry (report by Daniel Pitts) -TD
+# + add vte-2014, update vte to use that -TD
+#
+# 2015-06-27
+# + comment-out "screen.xterm" entry, and inherit screen.xterm-256color
+# from xterm-new (report by Richard Birkett) -TD
+#
+# 2015-07-25
+# + add status line to tmux via xterm+sl (patch by Nicholas Marriott).
+# + fixes for st 0.5 from testing with tack -TD
+#
+# 2015-10-24
+# + updated minitel entries to fix kel problem with emacs, and add
+# minitel1b-nb (Alexandre Montaron).
+# + reviewed/updated nsterm entry Terminal.app in OSX -TD
+# + replace some dead URLs in commands with equivalents from the
+# Internet Archive -TD
+#
+# 2015-11-14
+# + add bold to pccon+sgr+acs and pccon-base (Tati Chevron).
+# + add keys f12-f124 to pccon+keys (Tati Chevron).
+#
+# 2015-11-21
+# + fix some inconsistencies in the pccon* entries -TD
+#
+# 2015-11-28
+# + add viewdata (Alexandre Montaron).
+#
+# 2016-01-16
+# + tidy up comments about hardcoded 256color palette (report by
+# Leonardo Brondani Schenkel) -TD
+# + add putty-noapp entry, and amend putty entry to use application mode
+# for better consistency with xterm (report by Leonardo Brondani
+# Schenkel) -TD
+#
+# 2016-04-23
+# + add 'oc' capability to xterm+256color, allowing palette reset for
+# xterm -TD
+#
+# 2016-05-14
+# + modify linux2.6 entry to improve line-drawing -TD
+# + make linux3.0 entry the default linux entry (Debian #823658) -TD
+#
+# 2016-05-29
+# + modify rs1 for xterm-16color, xterm-88color and xterm-256color to
+# reset palette using "oc" string as in linux -TD
+#
+# 2016-06-11
+# + use ANSI reply for u8 in xterm-new, to reflect vt220-style responses
+# that could be returned -TD
+# + added a few capabilities fixed in recent vte -TD
+#
+# 2016-08-17
+# + correct a typo in interix -TD
+#
+# 2016-09-24
+# + updated minitel entries to use status line with screen(1), as well as
+# printing special G2 videotex chars like french accentuated glyph
+# using special cap XC= (patch by Alexandre Montaron).
+#
+# 2016-10-01
+# + add linux-m1 minitel entries (patch by Alexandre Montaron).
+# + correct rs2 string for vt100-nam -TD
+#
+# 2016-11-26
+# + modify linux-16color to not mask dim, standout or reverse with the
+# ncv capability -TD
+# + add 0.1sec mandatory delay to flash capabilities using the VT100
+# reverse-video control -TD
+# + omit selection of ISO-8859-1 for G0 in enacs capability from linux2.6
+# entry, to avoid conflict with the user-defined mapping. The reset
+# feature will use ISO-8859-1 in any case (Mikulas Patocka).
+#
+# 2016-12-30
+# + merge current st description (report by Harry Gindi) -TD
+#
+# 2016-12-31
+# + modify flash capability for linux and wyse entries to put the delay
+# between the reverse/normal escapes rather than after -TD
+#
+# 2017-01-28
+# + minor comment-fixes to help automate links to bug-urls -TD
+# + add dvtm, dvtm-256color -TD
+# + add settings corresponding to xterm-keys option to tmux entry to
+# reflect upcoming change to make that option "on" by default
+# (patch by Nicholas Marriott).
+# + uncancel Ms in tmux entry (Harry Gindi, Nicholas Marriott).
+# + add dumb-emacs-ansi -TD
+#
+# 2017-03-05
+# + correct a few spelling errors in comments -TD
+# + add fbterm -TD
+#
+# 2017-03-11
+# + add vt100+4bsd building block, use that for older terminals rather
+# than "vt100" which is now mostly used as a building block for
+# terminal emulators -TD
+# + modify vt100 rs2 string to reset vt52 mode and scrolling regions
+# (report/analysis by Robert King) -TD
+#
+# 2017-04-01
+# + minor fixes for vt100+4bsd, e.g., delay in sgr for consistency -TD
+# + add smso for env230, to match sgr -TD
+# + remove p7/protect from sgr in fbterm -TD
+# + drop setf/setb from fbterm; setaf/setab are enough -TD
+# + make xterm-pcolor sgr consistent with other capabilities -TD
+# + add rmxx/smxx ECMA-48 strikeout extension to tmux and xterm-basic
+# (discussion with Nicholas Marriott)
+#
+# 2017-04-22
+# + correct missing comma-separator between string capabilities in
+# icl6402 and m2-nam -TD
+# + update formatting with ncurses 6.0.20170422 -TD
+# + restore rmir/smir in ansi+idc to better match original ansiterm+idc,
+# add alias ansiterm (report by Robert King).
+#
+# 2017-05-13
+# + reformatted using hexadecimal numbers to improve readability -TD
+#
+# 2017-07-29
+# + update interix entry using tack and SFU on Windows 7 Ultimate -TD
+# + use ^? for kdch1 in interix (reported by Jonathan de Boyne Pollard)
+# + add "rep" to xterm-new, available since 1997/01/26 -TD
+# + move SGR 24 and 27 from vte-2014 to vte-2012 (request by Alain
+# Williams) -TD
+#
+# 2017-08-16
+# + update "iterm" entry -TD
+# + add "iterm2" entry (report by Leonardo Brondani Schenkel) -TD
+#
+# 2017-08-18
+# + update notes on user-defined capabilities -TD
+#
+# 2017-08-26
+# + fixes for "iterm2" (report by Leonardo Brondani Schenkel) -TD
+#
+# 2017-11-11
+# + add "op" to xterm+256setaf -TD
+# + reviewed terminology 1.0.0 -TD
+# + reviewed st 0.7 -TD
+#
+# 2017-11-18
+# + modify old terminology entry and a few other terminal emulators to
+# account for xon -TD
+# + correct sgr string for tmux, which used screen's "standout" code
+# rather than the standard code (patch by Roman Kagan)
+# + correct sgr/sgr0 strings in a few other cases reported by tic, making
+# those correspond to the non-sgr settings where they differ, but
+# otherwise use ECMA-48 consistently:
+# jaixterm, aixterm, att5420_2, att4424, att500, decansi, d410-7b,
+# dm80, hpterm, emu-220, hp2, iTerm2.app, mterm-ansi, ncrvt100an,
+# st-0.7, vi603, vwmterm -TD
+#
+# 2017-12-30
+# + add xterm+noalt, xterm+titlestack, xterm+alt1049, xterm+alt+title
+# blocks from xterm #331 -TD
+# + add xterm+direct, xterm+indirect, xterm-direct entries from xterm
+# #331 -TD
+# + modify xterm+256color and xterm+256setaf to use correct number of
+# color pairs, for ncurses 6.1 -TD
+# + add rs1 capability to xterm-256color -TD
+# + modify xterm-r5, xterm-r6 and xterm-xf86-v32 to use xterm+kbs to
+# match xterm #272, reflecting packager's changes -TD
+# + remove "boolean" Se, Ss from st-0.7 -TD
+#
+# 2018-01-04
+# + add konsole-direct and st-direct -TD
+# + remove unsupported "Tc" capability from st-0.7; use st-direct if
+# direct-colors are wanted -TD
+#
+# 2018-01-17
+# + add vte-direct -TD
+# + add XT, hpa, indn, and vpa to screen, and invis, E3 to tmux (patch by
+# Pierre Carru)
+#
+# 2018-01-21
+# + use xterm+sm+1006 in xterm-new, vte-2014 -TD
+# + use xterm+x11mouse in iterm, iterm2, mlterm3 because xterm's 1006
+# mode does not work with those programs. konsole is debatable -TD
+# + add "termite" entry (report by Markus Pfeiffer) -TD
+#
+# 2018-01-27
+# + trim "XT" from screen entry -TD
+# + modify iterm to use xterm+sl-twm building block -TD
+# + mark konsole-420pc, konsole-vt100, konsole-xf3x obsolete reflecting
+# konsole's removal in 2008 -TD
+# + expanded the history section of konsole to explain its flawed
+# imitation of xterm's keyboard -TD
+# + use xterm+x11mouse in screen.* entries because screen does not yet
+# support xterm's 1006 mode -TD
+# + add nsterm-build400 for macOS 10.13 -TD
+# + add ansi+idc1, use that in ansi+idc adding dch for consistency -TD
+# + update vte to vte-2017 -TD
+# + add ecma+strikeout to vte-2017 -TD
+# + add iterm2-direct -TD
+# + updated teraterm, added teraterm-256color -TD
+# + add mlterm-direct -TD
+# + add descriptions for ANSI building-blocks -TD
+#
+# 2018-02-24
+# + correct Ss/Ms interchange in st-0.7 entry (tmux #1264) -TD
+# + fix remaining flash capabilities with trailing mandatory delays -TD
+#
+# 2018-03-17
+# + trim some redundant capabilities from st-0.7 -TD
+# + trim unnecessary setf/setb from interix -TD
+#
+# 2018-05-19
+# + trim spurious whitespace from tmux in 2018-02-24 changes;
+# fix some inconsistencies in/between tmux- and iterm2-entries for SGR
+# (report by C Anthony Risinger)
+# + improve iterm2 using some xterm features which it has adapted -TD
+#
+# 2018-06-30
+# + add acsc string to vi200 (Nibby Nebbulous)
+# add right/down-arrow to vi200's acsc -TD
+#
+# 2018-07-21
+# + corrected acsc for wy50 -TD
+# + add wy50 and wy60 shifted function-keys as kF1 to kF16 -TD
+# + remove ansi+rep mis-added to interix in 2018-02-23 -TD
+#
+# 2018-07-28
+# + fix typo in tvi955 -TD
+# + corrected acsc for regent60 -TD
+# + add alias n7900 -TD
+#
+# 2018-09-29
+# + corrected acsc for tvi950 -TD
+# + remove bogus kf0 from tvi950 -TD
+# + added function-key definitions to agree with Televideo 950 manual -TD
+# + add bel to tvi950 -TD
+# + add shifted function-keys to regent60 -TD
+# + renumber regent40 function-keys to match manual -TD
+# + add cd (clr_eos) to adds200 -TD
+#
+# 2018-10-27
+# + add OpenGL clients alacritty and kitty -TD
+# + add Smulx for tmux, vte-2018 -Nicholas Marriott
+#
+# 2018-12-15
+# + fix a typo in comments (Aaron Gyes).
+# + add nsterm-build309 to replace nsterm-256color, assigning the latter
+# as an alias of nsterm, to make mouse work with nsterm-256color -TD
+# + base gnome-256color entry on "gnome", not "vte", for consistency -TD
+#
+# 2019-01-12
+# + add nsterm-direct -TD
+# + use SGR 1006 mouse for konsole-base -TD
+# + use SGR 1006 mouse for putty -TD
+# + add ti703/ti707, ti703-w/ti707-w (Robert Clausecker)
+#
+# 2019-02-23
+# + fix typo in adds200 -TD
+#
+# 2019-03-30
+# + add "screen5", to mention italics (report by Stefan Assmann)
+# + modify description of xterm+x11hilite to eliminate unused p5 -TD
+#
+# 2019-05-18
+# + update xterm-new to xterm patch #345 -TD
+# + add/use xterm+keypad in xterm-new (report by Alain D D Williams) -TD
+# + update terminator entry -TD
+# + remove hard-tabs from ti703 (report by Robert Clausecker)
+# + add Smol/Rmol for tmux, vte-2018 -Nicholas Marriott
+#
+# 2019-06-01
+# + add rs1 to konsole, mlterm -TD
+#
+# 2019-06-08
+# + add mintty, mintty-direct (Thomas Wolff)
+# 2019-06-09
+# + comment-out some user-defined capabilities in mintty+common to allow
+# builds with existing releases 5.9-6.1 -TD
+#
+# 2019-06-30
+# + add ms-terminal -TD
+# + add vscode, vscode-direct -TD
+# + use ecma+index in screen, st -TD
+#
+# 2019-07-06
+# + add domterm -TD
+# + improve comments for recent changes, add alias xterm.js -TD
+#
+# 2019-08-03
+# + amend the change to screen, because tmux relies upon that entry
+# and does not support that feature (Debian #933572) -TD
+# + updated ms-terminal entry & notes -TD
+# + updated kitty entry & notes -TD
+# + updated alacritty+common entry & notes -TD
+# + use xterm+sl-twm for consistency -TD
+#
+# 2019-09-22
+# + correct a comment -TD
+#
+# 2019-10-26
+# + modify linux-16color to accommodate Linux console driver change in
+# early 2018 (report by Dino Petrucci).
+#
+# 2019-11-02
+# + add "xterm-mono" to help packagers (report by Sven Joachim) -TD
+#
+# 2019-11-09
+# + drop ich1 from rxvt-basic, Eterm and mlterm to improve compatibility
+# with old non-curses programs -TD
+# + reviewed st 0.8.2, updated some details -TD
+# + use ansi+rep several places -TD
+#
+# 2020-01-12
+# + update alacritty entries for 0.4.0 (prompted by patch by
+# Christian Durr) -TD
+#
+# 2020-01-18
+# + spelling fixes per codespell -TD
+# + improve xm example for xterm+x11mouse, xterm+sm+1006 -TD
+#
######## SHANTIH! SHANTIH! SHANTIH!
diff --git a/mk-1st.awk b/mk-1st.awk
index da40cc64cefc..e374594108ca 100644
--- a/mk-1st.awk
+++ b/mk-1st.awk
@@ -1,6 +1,6 @@
-# $Id: mk-1st.awk,v 1.96 2013/09/07 17:54:05 Alexey.Pavlov Exp $
+# $Id: mk-1st.awk,v 1.105 2018/08/18 16:03:51 tom Exp $
##############################################################################
-# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2017,2018 Free 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 @@
# TermlibRoot ("tinfo" or other root for libterm.so)
# TermlibSuffix (".so" or other suffix for libterm.so)
# ReLink ("yes", or "no", flag to rebuild shared libs on install)
+# ReRanlib ("yes", or "no", flag to rerun ranlib for installing static)
# DoLinks ("yes", "reverse" or "no", flag to add symbolic links)
# rmSoLocs ("yes" or "no", flag to add extra clean target)
# ldconfig (path for this tool, if used)
@@ -170,7 +171,7 @@ function removelinks(directory) {
}
}
function make_shlib(objs, shlib_list) {
- printf "\t$(MK_SHARED_LIB) $(%s_OBJS) $(%s) $(LDFLAGS)\n", objs, shlib_list
+ printf "\t$(MK_SHARED_LIB) $(%s_OBJS) $(%s)\n", objs, shlib_list
}
function sharedlinks(directory) {
if ( ShlibVer != "auto" && ShlibVer != "cygdll" && ShlibVer != "msysdll" && ShlibVer != "mingw" ) {
@@ -205,7 +206,6 @@ function termlib_end_of() {
function shlib_build(directory) {
dst_libs = sprintf("%s/%s", directory, end_name);
printf "%s : \\\n", dst_libs
- printf "\t\t%s \\\n", directory
if (subset == "ticlib" && driver == "yes" ) {
base = name;
sub(/^tic/, "ncurses", base); # workaround for "w"
@@ -220,8 +220,12 @@ function shlib_build(directory) {
printf "\t\t%s/%s \\\n", directory, termlib_end_of();
suffix = save_suffix
}
- printf "\t\t$(%s_OBJS)\n", OBJS
+ printf "\t\t$(RESULTING_SYMS) $(%s_OBJS)\n", OBJS
printf "\t@echo linking $@\n"
+ printf "\t@mkdir -p %s\n", directory
+ if ( ReLink != "yes" ) {
+ printf "\t@sleep 1\n"
+ }
if ( is_ticlib() ) {
make_shlib(OBJS, "TICS_LIST")
} else if ( is_termlib() ) {
@@ -290,6 +294,7 @@ BEGIN {
printf "# TermlibRoot: %s\n", TermlibRoot
printf "# TermlibSuffix: %s\n", TermlibSuffix
printf "# ReLink: %s\n", ReLink
+ printf "# ReRanlib: %s\n", ReRanlib
printf "# DoLinks: %s\n", DoLinks
printf "# rmSoLocs: %s\n", rmSoLocs
printf "# ldconfig: %s\n", ldconfig
@@ -448,7 +453,7 @@ END {
}
printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) $(%s) \\\n", CC_NAME, CC_FLAG;
printf "\t\t-o %s $(%s_OBJS:$o=.lo) \\\n", lib_name, OBJS;
- printf "\t\t-rpath $(DESTDIR)$(libdir) \\\n";
+ printf "\t\t-rpath $(libdir) \\\n";
printf "\t\t%s $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(%s) $(LDFLAGS)\n", libtool_version, which_list;
print ""
print "install \\"
@@ -467,6 +472,12 @@ END {
{
end_name = lib_name;
printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS
+ # workaround: binutils' ranlib tries to be clever with
+ # timestamps, by pretending its update took no time, confusing
+ # the make utility.
+ if ( ReLink != "yes" ) {
+ printf "\t@sleep 1\n"
+ }
printf "\t$(%sAR) $(%sARFLAGS) $@ $?\n", TOOL_PREFIX, TOOL_PREFIX;
printf "\t$(RANLIB) $@\n"
if ( host == "vxworks" )
@@ -487,7 +498,10 @@ END {
symlink("libncurses.a", "libcurses.a")
printf ")\n"
}
- printf "\t$(RANLIB) $(DESTDIR)$(libdir)/%s\n", lib_name
+ if ( ReRanlib == "yes" )
+ {
+ printf "\t$(RANLIB) $(DESTDIR)$(libdir)/%s\n", lib_name
+ }
if ( host == "vxworks" )
{
printf "\t@echo installing ../lib/lib%s$o as $(DESTDIR)$(libdir)/lib%s$o\n", name, name
diff --git a/ncurses/Makefile.in b/ncurses/Makefile.in
index f08bafb2b10f..27f7689b7124 100644
--- a/ncurses/Makefile.in
+++ b/ncurses/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.139 2013/08/04 20:20:45 tom Exp $
+# $Id: Makefile.in,v 1.164 2019/11/16 20:42:40 tom Exp $
##############################################################################
-# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2018,2019 Free 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"), #
@@ -45,7 +45,7 @@
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
@@ -70,7 +70,10 @@ includesubdir = @includesubdir@
INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
+PACKAGE = @PACKAGE@
+
LIBTOOL = @LIBTOOL@
+LIBTOOL_OPTS = @LIBTOOL_OPTS@ @EXPORT_SYMS@
LIBTOOL_CLEAN = @LIB_CLEAN@
LIBTOOL_COMPILE = @LIB_COMPILE@
LIBTOOL_LINK = @LIB_LINK@
@@ -80,7 +83,7 @@ LT_UNDEF = @LT_UNDEF@
INSTALL = @INSTALL@
INSTALL_LIB = @INSTALL@ @INSTALL_LIB@
-INSTALL_PROG = @INSTALL_PROGRAM@
+INSTALL_PROG = @INSTALL_PROGRAM@ @INSTALL_OPT_S@
INSTALL_DATA = @INSTALL_DATA@
AR = @AR@
@@ -98,13 +101,13 @@ CPP = @CPP@
CFLAGS = @CFLAGS@
INCDIR = $(srcdir)/../include
-CPPFLAGS = -DHAVE_CONFIG_H -I../ncurses -I$(srcdir) @CPPFLAGS@
+CPPFLAGS = -DHAVE_CONFIG_H -I../ncurses @CPPFLAGS@
CCFLAGS = $(CPPFLAGS) $(CFLAGS)
-BUILD_CPPFLAGS = -I../include -DUSE_BUILD_CC @BUILD_CPPFLAGS@
+BUILD_CPPFLAGS = -DHAVE_CONFIG_H -DUSE_BUILD_CC -I../ncurses -I$(srcdir) -I../include -I$(INCDIR) @BUILD_CPPFLAGS@
BUILD_CC = @BUILD_CC@
-BUILD_CCFLAGS = -DHAVE_CONFIG_H -I../ncurses -I$(srcdir) -I$(INCDIR) $(BUILD_CPPFLAGS) @BUILD_CFLAGS@
+BUILD_CCFLAGS = @BUILD_CFLAGS@
BUILD_LDFLAGS = @BUILD_LDFLAGS@
BUILD_LIBS = @BUILD_LIBS@
@@ -123,14 +126,16 @@ CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@
CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
LINK = $(LIBTOOL)
-LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
+LDFLAGS = @LDFLAGS@ @LD_MODEL@
SHLIB_DIRS = -L../lib
-SHLIB_LIST = $(SHLIB_DIRS) @SHLIB_LIST@
-TINFO_LIST = $(SHLIB_DIRS) @TINFO_LIST@
-TICS_LIST = $(SHLIB_DIRS) @TICS_LIST@
+SHLIB_LIST = $(SHLIB_DIRS) @SHLIB_LIST@ @LIBS@
+TINFO_LIST = $(SHLIB_DIRS) @TINFO_LIST@ @LIBS@
+TICS_LIST = $(SHLIB_DIRS) @TICS_LIST@ @LIBS@
RPATH_LIST = @RPATH_LIST@
+RESULTING_SYMS = @RESULTING_SYMS@
+VERSIONED_SYMS = @VERSIONED_SYMS@
MK_SHARED_LIB = @MK_SHARED_LIB@
NCURSES_MAJOR = @NCURSES_MAJOR@
@@ -150,14 +155,17 @@ FALLBACK_LIST = @FALLBACK_LIST@
USE_BIG_STRINGS = @USE_BIG_STRINGS@
TERMINFO_CAPS = $(top_srcdir)/include/@TERMINFO_CAPS@
+CAPLIST = $(TERMINFO_CAPS) $(top_srcdir)/include/Caps-ncurses
TERMINFO = @TERMINFO@
TERMINFO_SRC = @TERMINFO_SRC@
-TIC_PATH = @TIC_PATH@
+TIC_PATH = @TIC@
+INFOCMP_PATH = @INFOCMP@
AUTO_SRC = \
./codes.c \
./comp_captab.c \
+ ./comp_userdefs.c \
./expanded.c \
./fallback.c \
./lib_gen.c \
@@ -191,6 +199,8 @@ TEST_PROGS = \
hashmap$x \
lib_mvcur$x
+LOCAL_LIBDIR = @top_builddir@/lib
+
base = $(srcdir)/base
serial = $(srcdir)/tty
tinfo = $(srcdir)/tinfo
@@ -199,8 +209,9 @@ wide = $(srcdir)/widechar
win32con = $(srcdir)/win32con
################################################################################
-all \
-libs :: $(AUTO_SRC) ../lib $(LIBRARIES)
+all libs :: $(AUTO_SRC) ../lib $(LIBRARIES)
+
+@CHECK_BUILD@all libs :: report_offsets$(BUILD_EXEEXT)
sources: $(AUTO_SRC)
@@ -211,45 +222,59 @@ $(DESTDIR)$(libdir) :
../lib : ; mkdir $@
./fallback.c : $(tinfo)/MKfallback.sh
- sh -e $(tinfo)/MKfallback.sh $(TERMINFO) $(TERMINFO_SRC) $(TIC_PATH) $(FALLBACK_LIST) >$@
+ $(SHELL) -e $(tinfo)/MKfallback.sh $(TERMINFO) $(TERMINFO_SRC) $(TIC_PATH) $(INFOCMP_PATH) $(FALLBACK_LIST) >$@
./lib_gen.c : $(base)/MKlib_gen.sh ../include/curses.h
- sh -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" generated <../include/curses.h >$@
+ $(SHELL) -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" generated <../include/curses.h >$@
init_keytry.h: make_keys$(BUILD_EXEEXT) keys.list
./make_keys$(BUILD_EXEEXT) keys.list > $@
keys.list : $(tinfo)/MKkeys_list.sh
- AWK=$(AWK) sh $(tinfo)/MKkeys_list.sh $(TERMINFO_CAPS) | sort >$@
+ AWK=$(AWK) $(SHELL) $(tinfo)/MKkeys_list.sh $(CAPLIST) | LC_ALL=C sort >$@
make_keys$(BUILD_EXEEXT) : \
+ build.priv.h \
$(tinfo)/make_keys.c \
names.c
- $(BUILD_CC) -o $@ $(BUILD_CCFLAGS) $(tinfo)/make_keys.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
+ $(BUILD_CC) -o $@ $(BUILD_CPPFLAGS) $(BUILD_CCFLAGS) $(tinfo)/make_keys.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
make_hash$(BUILD_EXEEXT) : \
+ build.priv.h \
$(tinfo)/make_hash.c \
../include/hashsize.h
- $(BUILD_CC) -o $@ $(BUILD_CCFLAGS) $(tinfo)/make_hash.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
+ $(BUILD_CC) -o $@ $(BUILD_CPPFLAGS) $(BUILD_CCFLAGS) $(tinfo)/make_hash.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
+
+report_offsets$(BUILD_EXEEXT) : \
+ $(srcdir)/curses.priv.h \
+ $(srcdir)/report_offsets.c
+ $(BUILD_CC) -o $@ $(BUILD_CPPFLAGS) $(BUILD_CCFLAGS) $(srcdir)/report_offsets.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
+ ./report_offsets$(BUILD_EXEEXT)
./expanded.c : $(srcdir)/curses.priv.h $(serial)/MKexpanded.sh
- sh -e $(serial)/MKexpanded.sh "$(CPP)" $(CPPFLAGS) > $@
+ $(SHELL) -e $(serial)/MKexpanded.sh "$(CPP)" $(CPPFLAGS) > $@
./comp_captab.c: \
make_hash$(BUILD_EXEEXT) \
../include/hashsize.h \
$(tinfo)/MKcaptab.sh \
$(tinfo)/MKcaptab.awk
- sh -e $(tinfo)/MKcaptab.sh $(AWK) $(USE_BIG_STRINGS) $(tinfo)/MKcaptab.awk $(srcdir)/../include/@TERMINFO_CAPS@ > $@
+ $(SHELL) -e $(tinfo)/MKcaptab.sh $(AWK) $(USE_BIG_STRINGS) $(tinfo)/MKcaptab.awk $(CAPLIST) > $@
+
+./comp_userdefs.c: \
+ make_hash$(BUILD_EXEEXT) \
+ ../include/hashsize.h \
+ $(tinfo)/MKuserdefs.sh
+ $(SHELL) -e $(tinfo)/MKuserdefs.sh $(AWK) $(USE_BIG_STRINGS) $(CAPLIST) > $@
./lib_keyname.c: keys.list $(base)/MKkeyname.awk
$(AWK) -f $(base)/MKkeyname.awk bigstrings=$(USE_BIG_STRINGS) keys.list > $@
./codes.c: $(tinfo)/MKcodes.awk
- $(AWK) -f $(tinfo)/MKcodes.awk bigstrings=$(USE_BIG_STRINGS) $(srcdir)/../include/@TERMINFO_CAPS@ >$@
+ $(AWK) -f $(tinfo)/MKcodes.awk bigstrings=$(USE_BIG_STRINGS) $(CAPLIST) >$@
./names.c: $(tinfo)/MKnames.awk
- $(AWK) -f $(tinfo)/MKnames.awk bigstrings=$(USE_BIG_STRINGS) $(srcdir)/../include/@TERMINFO_CAPS@ >$@
+ $(AWK) -f $(tinfo)/MKnames.awk bigstrings=$(USE_BIG_STRINGS) $(CAPLIST) >$@
./unctrl.c: $(base)/MKunctrl.awk
echo | $(AWK) -f $(base)/MKunctrl.awk bigstrings=$(USE_BIG_STRINGS) >$@
@@ -260,17 +285,16 @@ tags:
@MAKE_UPPER_TAGS@TAGS:
@MAKE_UPPER_TAGS@ $(ETAGS) *.[ch] */*.[ch]
-ncurses.map : $(LIBRARIES)
- $(NM) -p $(LIBRARIES) >$@
-
mostlyclean ::
- -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace
+ -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac
+ -test -d trace || rm -f trace
-rm -f $(TEST_PROGS)
clean :: mostlyclean
-rm -f $(AUTO_SRC)
-rm -f make_keys$(BUILD_EXEEXT)
-rm -f make_hash$(BUILD_EXEEXT)
+ -rm -f report_offsets$(BUILD_EXEEXT)
-rm -rf .libs *.dSYM *.map
distclean :: clean
@@ -288,7 +312,7 @@ realclean :: distclean
test_progs : $(TEST_PROGS)
./link_test.c : $(base)/MKlib_gen.sh ../include/curses.h
- sh -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" implemented <../include/curses.h >$@
+ $(SHELL) -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" implemented <../include/curses.h >$@
captoinfo$x : $(tinfo)/captoinfo.c $(TEST_DEPS)
@ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DMAIN $(tinfo)/captoinfo.c $(TEST_LDFLAGS)
diff --git a/ncurses/README.IZ b/ncurses/README.IZ
index 78206cdfd712..aad1710d7eb1 100644
--- a/ncurses/README.IZ
+++ b/ncurses/README.IZ
@@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
--- Copyright (c) 2002,2006 Free Software Foundation, Inc. --
+-- Copyright (c) 2002-2006,2020 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -25,11 +25,11 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: README.IZ,v 1.2 2006/04/22 23:13:05 tom Exp $
+-- $Id: README.IZ,v 1.3 2020/01/18 17:02:13 tom Exp $
---------------------------------------------------------------------
Here is the patch. I did no testing whatsoever with event watching
-requests present (I need some applications which exersize this before
+requests present (I need some applications which exercise this before
this, probably lynx ;-), but the code looks working "the normal way".
I had no way to test that the poll() branch compiles/works...
diff --git a/ncurses/SigAction.h b/ncurses/SigAction.h
index 5dfde643f6a1..4467fc6289d2 100644
--- a/ncurses/SigAction.h
+++ b/ncurses/SigAction.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2000,2005 Free 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 @@
****************************************************************************/
/*
- * $Id: SigAction.h,v 1.8 2005/08/06 20:05:32 tom Exp $
+ * $Id: SigAction.h,v 1.9 2005/08/06 20:05:32 tom Exp $
*
* This file exists to handle non-POSIX systems which don't have <unistd.h>,
* and usually no sigaction() nor <termios.h>
diff --git a/ncurses/base/MKkeyname.awk b/ncurses/base/MKkeyname.awk
index 790161193169..e133858f2835 100644
--- a/ncurses/base/MKkeyname.awk
+++ b/ncurses/base/MKkeyname.awk
@@ -1,6 +1,6 @@
-# $Id: MKkeyname.awk,v 1.48 2013/08/24 17:37:22 tom Exp $
+# $Id: MKkeyname.awk,v 1.50 2017/04/11 01:18:08 tom Exp $
##############################################################################
-# Copyright (c) 1999-2012,2013 Free Software Foundation, Inc. #
+# Copyright (c) 1999-2016,2017 Free 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"), #
@@ -70,14 +70,13 @@ END {
print "NCURSES_EXPORT(NCURSES_CONST char *)"
print "safe_keyname (SCREEN *sp, int c)"
print "{"
- print " int i;"
print " char name[20];"
- print " char *p;"
print " NCURSES_CONST char *result = 0;"
print ""
print " if (c == -1) {"
print " result = \"-1\";"
print " } else {"
+ print " int i;"
if (bigstrings) {
print " for (i = 0; _nc_key_names[i].offset != -1; i++) {"
print " if (_nc_key_names[i].code == c) {"
@@ -114,7 +113,7 @@ END {
print " /* create and cache result as needed */"
print " if (MyTable[c] == 0) {"
print " int cc = c;"
- print " p = name;"
+ print " char *p = name;"
print "#define P_LIMIT (sizeof(name) - (size_t) (p - name))"
print " if (cc >= 128 && m_prefix) {"
print " _nc_STRCPY(p, \"M-\", P_LIMIT);"
@@ -135,7 +134,7 @@ END {
print " } else if (result == 0 && HasTerminal(sp)) {"
print " int j, k;"
print " char * bound;"
- print " TERMTYPE *tp = &(TerminalOf(sp)->type);"
+ print " TERMTYPE2 *tp = &TerminalType(TerminalOf(sp));"
print " unsigned save_trace = _nc_tracing;"
print ""
print " _nc_tracing = 0; /* prevent recursion via keybound() */"
@@ -166,8 +165,8 @@ END {
print "#if NO_LEAKS"
print "void _nc_keyname_leaks(void)"
print "{"
- print " int j;"
print " if (MyTable != 0) {"
+ print " int j;"
print " for (j = 0; j < SIZEOF_TABLE; ++j) {"
print " FreeIfNeeded(MyTable[j]);"
print " }"
diff --git a/ncurses/base/MKlib_gen.sh b/ncurses/base/MKlib_gen.sh
index d8cc3c9751fa..a1587c424452 100755
--- a/ncurses/base/MKlib_gen.sh
+++ b/ncurses/base/MKlib_gen.sh
@@ -2,10 +2,10 @@
#
# MKlib_gen.sh -- generate sources from curses.h macro definitions
#
-# ($Id: MKlib_gen.sh,v 1.46 2011/06/04 19:14:08 tom Exp $)
+# ($Id: MKlib_gen.sh,v 1.62 2018/06/09 19:27:00 tom Exp $)
#
##############################################################################
-# Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2017,2018 Free 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"), #
@@ -62,10 +62,27 @@ if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
if test "${LC_COLLATE+set}" = set; then LC_COLLATE=C; export LC_COLLATE; fi
-preprocessor="$1 -DNCURSES_INTERNALS -I../include"
+preprocessor="$1 -DNCURSES_WATTR_MACROS -DNCURSES_INTERNALS -I../include"
AWK="$2"
USE="$3"
+# A patch discussed here:
+# https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html
+# introduces spurious #line markers into the preprocessor output. The result
+# appears in gcc 5.0 and (with modification) in 5.1, making it necessary to
+# determine if we are using gcc, and if so, what version because the proposed
+# solution uses a nonstandard option.
+PRG=`echo "$1" | $AWK '{ sub(/^[ ]*/,""); sub(/[ ].*$/, ""); print; }' || exit 0`
+FSF=`"$PRG" --version 2>/dev/null || exit 0 | fgrep "Free Software Foundation" | head -n 1`
+ALL=`"$PRG" -dumpversion 2>/dev/null || exit 0`
+ONE=`echo "$ALL" | sed -e 's/\..*$//'`
+if test -n "$FSF" && test -n "$ALL" && test -n "$ONE" ; then
+ if test $ONE -ge 5 ; then
+ echo ".. adding -P option to work around $PRG $ALL" >&2
+ preprocessor="$preprocessor -P"
+ fi
+fi
+
PID=$$
ED1=sed1_${PID}.sed
ED2=sed2_${PID}.sed
@@ -74,7 +91,7 @@ ED4=sed4_${PID}.sed
AW1=awk1_${PID}.awk
AW2=awk2_${PID}.awk
TMP=gen__${PID}.c
-trap "rm -f $ED1 $ED2 $ED3 $ED4 $AW1 $AW2 $TMP" 0 1 2 5 15
+trap "rm -f $ED1 $ED2 $ED3 $ED4 $AW1 $AW2 $TMP" 0 1 2 3 15
ALL=$USE
if test "$USE" = implemented ; then
@@ -82,6 +99,7 @@ if test "$USE" = implemented ; then
cat >$ED1 <<EOF1
/^extern.*implemented/{
h
+ s/GCC_DEPRECATED([^)]*)//
s/NCURSES_SP_NAME(\([^)]*\))/NCURSES_SP_NAME___\1/
h
s/^.*implemented:\([^ *]*\).*/P_POUNDCif_USE_\1_SUPPORT/p
@@ -160,6 +178,7 @@ EOF3
if test "$USE" = generated ; then
cat >$ED4 <<EOF
s/^\(.*\) \(.*\) (\(.*\))\$/NCURSES_EXPORT(\1) (\2) (\3)/
+ /attr_[sg]et.* z)/s,z),z GCC_UNUSED),
EOF
else
cat >$ED4 <<EOF
@@ -213,7 +232,7 @@ $0 !~ /^P_/ {
} else if ( $first == "bool" || $first == "NCURSES_BOOL" ) {
returnType = "Bool";
} else if ( $second == "*" ) {
- returnType = "Ptr";
+ returnType = ($1 == "NCURSES_CONST") ? "CPtr" : "Ptr";
} else {
returnType = "Code";
}
@@ -224,6 +243,9 @@ $0 !~ /^P_/ {
break;
}
}
+ if (using == "implemented") {
+ printf "#undef %s\n", $myfunc;
+ }
print $0;
print "{";
argcount = 1;
@@ -256,6 +278,11 @@ $0 !~ /^P_/ {
dotrace = 0;
}
+ do_getstr = 0;
+ if ($myfunc ~ /get[n]?str/) {
+ do_getstr = 1;
+ }
+
call = "@@T((T_CALLED(\""
args = ""
comma = ""
@@ -292,7 +319,11 @@ $0 !~ /^P_/ {
call = call "%s"
} else if (pointer) {
if ( argtype == "char" ) {
- call = call "%s"
+ if (do_getstr) {
+ call = call "%p"
+ } else {
+ call = call "%s"
+ }
comma = comma "_nc_visbuf2(" num ","
pointer = 0;
} else {
@@ -342,7 +373,7 @@ $0 !~ /^P_/ {
call = call ")); "
if (dotrace)
- printf "%s", call
+ printf "%s\n\t@@", call
if (match($0, "^void")) {
call = ""
@@ -381,9 +412,10 @@ EOF1
cat >$AW2 <<EOF1
BEGIN {
+ printf "/* This file was generated by $0 $USE */\n"
+ print ""
print "/*"
print " * DO NOT EDIT THIS FILE BY HAND!"
- printf " * It is generated by $0 %s.\n", "$USE"
if ( "$USE" == "generated" ) {
print " *"
print " * This is a file of trivial functions generated from macro"
@@ -403,11 +435,6 @@ BEGIN {
print ""
print "#include <curses.priv.h>"
print ""
- print "#undef vw_scanw"
- print "#undef vwscanw"
- print ""
- print "#undef vw_printw"
- print "#undef vwprintw"
}
/^DECLARATIONS/ {start = 1; next;}
{
@@ -432,16 +459,16 @@ END {
for (n = 1; n < start; ++n) {
value = calls[n];
if ( value !~ /P_POUNDC/ ) {
- gsub(/[[:blank:]]+/," ",value);
- sub(/^[[:alnum:]_]+ /,"",value);
+ gsub(/[ \t]+/," ",value);
+ sub(/^[0-9a-zA-Z_]+ /,"",value);
sub(/^\* /,"",value);
- gsub(/[[:alnum:]_]+ \* /,"",value);
+ gsub(/[0-9a-zA-Z_]+ \* /,"",value);
gsub(/ (const) /," ",value);
gsub(/ (int|short|attr_t|chtype|wchar_t|NCURSES_BOOL|NCURSES_OUTC|NCURSES_OUTC_sp|va_list) /," ",value);
gsub(/ void /,"",value);
sub(/^/,"call_",value);
- gsub(/ (a[[:digit:]]|z) /, " 0 ", value);
- gsub(/ int[[:blank:]]*[(][^)]+[)][(][^)]+[)]/, "0", value);
+ gsub(/ (a[0-9]|z) /, " 0 ", value);
+ gsub(/ int[ \t]*[(][^)]+[)][(][^)]+[)]/, "0", value);
printf "\t%s;\n", value;
} else {
print value;
diff --git a/ncurses/base/MKunctrl.awk b/ncurses/base/MKunctrl.awk
index 51ceb6343920..0b505d0ce912 100644
--- a/ncurses/base/MKunctrl.awk
+++ b/ncurses/base/MKunctrl.awk
@@ -1,6 +1,6 @@
-# $Id: MKunctrl.awk,v 1.27 2012/06/09 20:29:33 tom Exp $
+# $Id: MKunctrl.awk,v 1.28 2017/02/11 17:30:48 tom Exp $
##############################################################################
-# Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2012,2017 Free 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"), #
@@ -143,6 +143,7 @@ END {
print "\tint check = (int) ChCharOf(ch);"
print "\tconst char *result;"
print ""
+ print "(void) sp;"
print "\tif (check >= 0 && check < (int)SIZEOF(unctrl_table)) {"
print "#if NCURSES_EXT_FUNCS"
print "\t\tif ((sp != 0)"
diff --git a/ncurses/base/define_key.c b/ncurses/base/define_key.c
index a49b094279c8..c78375a72c25 100644
--- a/ncurses/base/define_key.c
+++ b/ncurses/base/define_key.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -33,7 +33,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: define_key.c,v 1.20 2009/11/28 22:53:17 tom Exp $")
+MODULE_ID("$Id: define_key.c,v 1.21 2014/03/08 20:32:59 tom Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(define_key) (NCURSES_SP_DCLx const char *str, int keycode)
@@ -47,7 +47,7 @@ NCURSES_SP_NAME(define_key) (NCURSES_SP_DCLx const char *str, int keycode)
unsigned ukey = (unsigned) keycode;
#ifdef USE_TERM_DRIVER
-#define CallHasKey(keycode) CallDriver_1(SP_PARM, kyExist, keycode)
+#define CallHasKey(keycode) CallDriver_1(SP_PARM, td_kyExist, keycode)
#else
#define CallHasKey(keycode) NCURSES_SP_NAME(has_key)(NCURSES_SP_ARGx keycode)
#endif
diff --git a/ncurses/base/keyok.c b/ncurses/base/keyok.c
index 00e936dacde9..180c54aa191c 100644
--- a/ncurses/base/keyok.c
+++ b/ncurses/base/keyok.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2014,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -33,7 +33,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: keyok.c,v 1.13 2012/11/18 02:14:35 tom Exp $")
+MODULE_ID("$Id: keyok.c,v 1.15 2019/12/21 22:40:32 tom Exp $")
/*
* Enable (or disable) ncurses' interpretation of a keycode by adding (or
@@ -53,9 +53,8 @@ NCURSES_SP_NAME(keyok) (NCURSES_SP_DCLx int c, bool flag)
if (HasTerminal(SP_PARM)) {
T((T_CALLED("keyok(%p, %d,%d)"), (void *) SP_PARM, c, flag));
#ifdef USE_TERM_DRIVER
- code = CallDriver_2(sp, kyOk, c, flag);
+ code = CallDriver_2(sp, td_kyOk, c, flag);
#else
- T((T_CALLED("keyok(%d,%d)"), c, flag));
if (c >= 0) {
int count = 0;
char *s;
diff --git a/ncurses/base/lib_addch.c b/ncurses/base/lib_addch.c
index a7d498b490a0..fdb26415b205 100644
--- a/ncurses/base/lib_addch.c
+++ b/ncurses/base/lib_addch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -36,7 +36,7 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_addch.c,v 1.128 2014/02/23 01:21:08 tom Exp $")
+MODULE_ID("$Id: lib_addch.c,v 1.133 2019/05/11 19:51:02 tom Exp $")
static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT);
@@ -51,7 +51,7 @@ static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT);
*/
/* Return bit mask for clearing color pair number if given ch has color */
-#define COLOR_MASK(ch) (~(attr_t)((ch) & A_COLOR ? A_COLOR : 0))
+#define COLOR_MASK(ch) (~(attr_t)(((ch) & A_COLOR) ? A_COLOR : 0))
static NCURSES_INLINE NCURSES_CH_T
render_char(WINDOW *win, NCURSES_CH_T ch)
@@ -117,14 +117,18 @@ _nc_render(WINDOW *win, NCURSES_CH_T ch)
#endif
static bool
-newline_forces_scroll(WINDOW *win, NCURSES_SIZE_T * ypos)
+newline_forces_scroll(WINDOW *win, NCURSES_SIZE_T *ypos)
{
bool result = FALSE;
- if (*ypos >= win->_regtop && *ypos == win->_regbottom) {
- *ypos = win->_regbottom;
- result = TRUE;
- } else {
+ if (*ypos >= win->_regtop && *ypos <= win->_regbottom) {
+ if (*ypos == win->_regbottom) {
+ *ypos = win->_regbottom;
+ result = TRUE;
+ } else if (*ypos < win->_maxy) {
+ *ypos = (NCURSES_SIZE_T) (*ypos + 1);
+ }
+ } else if (*ypos < win->_maxy) {
*ypos = (NCURSES_SIZE_T) (*ypos + 1);
}
return result;
@@ -270,11 +274,11 @@ waddch_literal(WINDOW *win, NCURSES_CH_T ch)
/* handle EILSEQ (i.e., when len >= -1) */
if (len == -1 && is8bits(CharOf(ch))) {
- int rc = OK;
const char *s = NCURSES_SP_NAME(unctrl)
(NCURSES_SP_ARGx (chtype) CharOf(ch));
if (s[1] != '\0') {
+ int rc = OK;
while (*s != '\0') {
rc = waddch(win, UChar(*s) | attr);
if (rc != OK)
@@ -299,7 +303,7 @@ waddch_literal(WINDOW *win, NCURSES_CH_T ch)
* adjustments.
*/
if_WIDEC({
- int len = wcwidth(CharOf(ch));
+ int len = _nc_wacs_width(CharOf(ch));
int i;
int j;
wchar_t *chars;
@@ -339,6 +343,7 @@ waddch_literal(WINDOW *win, NCURSES_CH_T ch)
return ERR;
x = win->_curx;
y = win->_cury;
+ CHECK_POSITION(win, x, y);
line = win->_line + y;
}
/*
@@ -427,7 +432,7 @@ waddch_nosync(WINDOW *win, const NCURSES_CH_T ch)
s[1] == 0
)
|| (
- (isprint((int)t) && !iscntrl((int)t))
+ (isprint((int) t) && !iscntrl((int) t))
#if USE_WIDEC_SUPPORT
|| ((sp == 0 || !sp->_legacy_coding) &&
(WINDOW_EXT(win, addch_used)
@@ -443,6 +448,7 @@ waddch_nosync(WINDOW *win, const NCURSES_CH_T ch)
*/
x = win->_curx;
y = win->_cury;
+ CHECK_POSITION(win, x, y);
switch (t) {
case '\t':
@@ -501,7 +507,7 @@ waddch_nosync(WINDOW *win, const NCURSES_CH_T ch)
default:
while (*s) {
NCURSES_CH_T sch;
- SetChar(sch, *s++, AttrOf(ch));
+ SetChar(sch, UChar(*s++), AttrOf(ch));
if_EXT_COLORS(SetPair(sch, GetPair(ch)));
if (waddch_literal(win, sch) == ERR)
return ERR;
diff --git a/ncurses/base/lib_addstr.c b/ncurses/base/lib_addstr.c
index a1a55cb8bfd8..55dc440b0047 100644
--- a/ncurses/base/lib_addstr.c
+++ b/ncurses/base/lib_addstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -44,7 +44,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_addstr.c,v 1.52 2011/05/28 23:02:09 tom Exp $")
+MODULE_ID("$Id: lib_addstr.c,v 1.55 2019/05/04 20:46:24 tom Exp $")
NCURSES_EXPORT(int)
waddnstr(WINDOW *win, const char *astr, int n)
@@ -87,7 +87,7 @@ waddchnstr(WINDOW *win, const chtype *astr, int n)
T((T_CALLED("waddchnstr(%p,%p,%d)"), (void *) win, (const void *) astr, n));
- if (!win)
+ if (!win || !astr)
returnCode(ERR);
y = win->_cury;
@@ -183,7 +183,7 @@ wadd_wchnstr(WINDOW *win, const cchar_t *astr, int n)
if (isWidecExt(astr[i]))
continue;
- len = wcwidth(CharOf(astr[i]));
+ len = _nc_wacs_width(CharOf(astr[i]));
if (x + len - 1 <= win->_maxx) {
line->text[x] = _nc_render(win, astr[i]);
@@ -194,6 +194,8 @@ wadd_wchnstr(WINDOW *win, const cchar_t *astr, int n)
}
SetWidecExt(line->text[x + j], j);
}
+ } else {
+ len = 1;
}
x = (NCURSES_SIZE_T) (x + len);
end += len - 1;
diff --git a/ncurses/base/lib_beep.c b/ncurses/base/lib_beep.c
index 4e14cb74a2bf..b775d56e8001 100644
--- a/ncurses/base/lib_beep.c
+++ b/ncurses/base/lib_beep.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -46,7 +46,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_beep.c,v 1.16 2013/01/12 17:26:25 tom Exp $")
+MODULE_ID("$Id: lib_beep.c,v 1.17 2014/03/08 20:32:59 tom Exp $")
/*
* beep()
@@ -65,7 +65,7 @@ NCURSES_SP_NAME(beep) (NCURSES_SP_DCL0)
#ifdef USE_TERM_DRIVER
if (SP_PARM != 0)
- res = CallDriver_1(SP_PARM, doBeepOrFlash, TRUE);
+ res = CallDriver_1(SP_PARM, td_doBeepOrFlash, TRUE);
#else
/* FIXME: should make sure that we are not in altchar mode */
if (cur_term == 0) {
diff --git a/ncurses/base/lib_bkgd.c b/ncurses/base/lib_bkgd.c
index 7bcd3ffb5a3f..aa1db21e4fa8 100644
--- a/ncurses/base/lib_bkgd.c
+++ b/ncurses/base/lib_bkgd.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -36,7 +36,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_bkgd.c,v 1.48 2012/12/09 01:01:19 tom Exp $")
+MODULE_ID("$Id: lib_bkgd.c,v 1.53 2019/08/17 20:59:41 tom Exp $")
/*
* Set the window's background information.
@@ -117,29 +117,98 @@ static NCURSES_INLINE int
#endif
wbkgrnd(WINDOW *win, const ARG_CH_T ch)
{
+#undef SP_PARM
+#define SP_PARM SP /* to use Charable() */
int code = ERR;
- int x, y;
T((T_CALLED("wbkgd(%p,%s)"), (void *) win, _tracech_t(ch)));
- if (win) {
+ if (SP == 0) {
+ ;
+ } else if (win) {
NCURSES_CH_T new_bkgd = CHDEREF(ch);
- NCURSES_CH_T old_bkgrnd;
+ NCURSES_CH_T old_bkgd;
+ int y;
+ NCURSES_CH_T old_char;
+ attr_t old_attr;
+ int old_pair;
+ NCURSES_CH_T new_char;
+ attr_t new_attr;
+ int new_pair;
+
+ /* SVr4 trims color info if non-color terminal */
+ if (!SP->_pair_limit) {
+ RemAttr(new_bkgd, A_COLOR);
+ SetPair(new_bkgd, 0);
+ }
+
+ memset(&old_bkgd, 0, sizeof(old_bkgd));
+ (void) wgetbkgrnd(win, &old_bkgd);
+
+ if (!memcmp(&old_bkgd, &new_bkgd, sizeof(new_bkgd))) {
+ T(("...unchanged"));
+ returnCode(OK);
+ }
- memset(&old_bkgrnd, 0, sizeof(old_bkgrnd));
- wgetbkgrnd(win, &old_bkgrnd);
+ old_char = old_bkgd;
+ RemAttr(old_char, ~A_CHARTEXT);
+ old_attr = AttrOf(old_bkgd);
+ old_pair = GetPair(old_bkgd);
+
+ if (!(old_attr & A_COLOR)) {
+ old_pair = 0;
+ }
+ T(("... old background char %s, attr %s, pair %d",
+ _tracechar(CharOf(old_char)), _traceattr(old_attr), old_pair));
+
+ new_char = new_bkgd;
+ RemAttr(new_char, ~A_CHARTEXT);
+ new_attr = AttrOf(new_bkgd);
+ new_pair = GetPair(new_bkgd);
+
+ /* SVr4 limits background character to printable 7-bits */
+ if (!Charable(new_bkgd)) {
+ new_char = old_char;
+ }
+ if (!(new_attr & A_COLOR)) {
+ new_pair = 0;
+ }
+ T(("... new background char %s, attr %s, pair %d",
+ _tracechar(CharOf(new_char)), _traceattr(new_attr), new_pair));
(void) wbkgrndset(win, CHREF(new_bkgd));
- (void) wattrset(win, (int) AttrOf(win->_nc_bkgd));
+
+ /* SVr4 updates color pair if old/new match, otherwise just attrs */
+ if ((new_pair != 0) && (new_pair == old_pair)) {
+ WINDOW_ATTRS(win) = new_attr;
+ SET_WINDOW_PAIR(win, new_pair);
+ } else {
+ WINDOW_ATTRS(win) = new_attr;
+ }
for (y = 0; y <= win->_maxy; y++) {
+ int x;
+
for (x = 0; x <= win->_maxx; x++) {
- if (CharEq(win->_line[y].text[x], old_bkgrnd)) {
- win->_line[y].text[x] = win->_nc_bkgd;
+ NCURSES_CH_T *cp = &(win->_line[y].text[x]);
+ int tmp_pair = GetPair(*cp);
+ attr_t tmp_attr = AttrOf(*cp);
+
+ if (CharEq(*cp, old_bkgd)) {
+ SetChar2(*cp, CharOf(new_char));
+ }
+ if (tmp_pair != 0) {
+ if (tmp_pair == old_pair) {
+ SetAttr(*cp, (tmp_attr & ~old_attr) | new_attr);
+ SetPair(*cp, new_pair);
+ } else {
+ SetAttr(*cp,
+ (tmp_attr & (~old_attr | A_COLOR))
+ | (new_attr & ALL_BUT_COLOR));
+ }
} else {
- NCURSES_CH_T wch = win->_line[y].text[x];
- RemAttr(wch, (~(A_ALTCHARSET | A_CHARTEXT)));
- win->_line[y].text[x] = _nc_render(win, wch);
+ SetAttr(*cp, (tmp_attr & ~old_attr) | new_attr);
+ SetPair(*cp, new_pair);
}
}
}
diff --git a/ncurses/base/lib_box.c b/ncurses/base/lib_box.c
index 6f17c97a5b07..dccb8e12d61c 100644
--- a/ncurses/base/lib_box.c
+++ b/ncurses/base/lib_box.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_box.c,v 1.24 2010/04/24 23:51:57 tom Exp $")
+MODULE_ID("$Id: lib_box.c,v 1.25 2017/10/27 21:56:17 tom Exp $")
#if USE_WIDEC_SUPPORT
static NCURSES_INLINE chtype
@@ -114,10 +114,20 @@ wborder(WINDOW *win,
win->_line[endy].lastchar = win->_line[0].lastchar = endx;
for (i = 0; i <= endy; i++) {
+#if USE_WIDEC_SUPPORT
+ if (endx > 0 && isWidecExt(win->_line[i].text[endx])) {
+ SetChar2(win->_line[i].text[endx - 1], ' ');
+ }
+#endif
SetChar2(win->_line[i].text[0], wls);
SetChar2(win->_line[i].text[endx], wrs);
win->_line[i].firstchar = 0;
win->_line[i].lastchar = endx;
+#if USE_WIDEC_SUPPORT
+ if (isWidecExt(win->_line[i].text[1])) {
+ SetChar2(win->_line[i].text[1], ' ');
+ }
+#endif
}
SetChar2(win->_line[0].text[0], wtl);
SetChar2(win->_line[0].text[endx], wtr);
diff --git a/ncurses/base/lib_chgat.c b/ncurses/base/lib_chgat.c
index 1eb1f59e2385..e969d69bebb7 100644
--- a/ncurses/base/lib_chgat.c
+++ b/ncurses/base/lib_chgat.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,35 +42,38 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_chgat.c,v 1.10 2014/02/01 22:13:31 tom Exp $")
+MODULE_ID("$Id: lib_chgat.c,v 1.12 2017/03/16 23:45:20 tom Exp $")
NCURSES_EXPORT(int)
wchgat(WINDOW *win,
int n,
attr_t attr,
- NCURSES_PAIRS_T color,
+ NCURSES_PAIRS_T pair_arg,
const void *opts GCC_UNUSED)
{
- int i;
+ int code = ERR;
+ int color_pair = pair_arg;
T((T_CALLED("wchgat(%p,%d,%s,%d)"),
(void *) win,
n,
_traceattr(attr),
- (int) color));
+ color_pair));
+ set_extended_pair(opts, color_pair);
if (win) {
struct ldat *line = &(win->_line[win->_cury]);
+ int i;
- toggle_attr_on(attr, ColorPair(color));
+ toggle_attr_on(attr, ColorPair(color_pair));
for (i = win->_curx; i <= win->_maxx && (n == -1 || (n-- > 0)); i++) {
SetAttr(line->text[i], attr);
- SetPair(line->text[i], color);
+ SetPair(line->text[i], color_pair);
CHANGED_CELL(line, i);
}
- returnCode(OK);
- } else
- returnCode(ERR);
+ code = OK;
+ }
+ returnCode(code);
}
diff --git a/ncurses/base/lib_color.c b/ncurses/base/lib_color.c
index 9f7250ddafff..e2958051e6b8 100644
--- a/ncurses/base/lib_color.c
+++ b/ncurses/base/lib_color.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -38,14 +38,17 @@
* Handles color emulation of SYS V curses
*/
+#define NEW_PAIR_INTERNAL 1
+
#include <curses.priv.h>
+#include <new_pair.h>
#include <tic.h>
#ifndef CUR
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_color.c,v 1.109 2014/02/01 22:22:30 tom Exp $")
+MODULE_ID("$Id: lib_color.c,v 1.142 2019/12/22 00:57:53 tom Exp $")
#ifdef USE_TERM_DRIVER
#define CanChange InfoOf(SP_PARM).canchange
@@ -137,13 +140,6 @@ NCURSES_EXPORT_VAR(const color_t*) _nc_hls_palette = hls_palette;
/* *INDENT-ON* */
-/*
- * Ensure that we use color pairs only when colors have been started, and also
- * that the index is within the limits of the table which we allocated.
- */
-#define ValidPair(pair) \
- ((SP_PARM != 0) && (pair >= 0) && (pair < SP_PARM->_pair_limit) && SP_PARM->_coloron)
-
#if NCURSES_EXT_FUNCS
/*
* These are called from _nc_do_color(), which in turn is called from
@@ -188,7 +184,7 @@ static void
set_background_color(NCURSES_SP_DCLx int bg, NCURSES_SP_OUTC outc)
{
#ifdef USE_TERM_DRIVER
- CallDriver_3(SP_PARM, color, FALSE, bg, outc);
+ CallDriver_3(SP_PARM, td_color, FALSE, bg, outc);
#else
if (set_a_background) {
TPUTS_TRACE("set_a_background");
@@ -208,7 +204,7 @@ static void
set_foreground_color(NCURSES_SP_DCLx int fg, NCURSES_SP_OUTC outc)
{
#ifdef USE_TERM_DRIVER
- CallDriver_3(SP_PARM, color, TRUE, fg, outc);
+ CallDriver_3(SP_PARM, td_color, TRUE, fg, outc);
#else
if (set_a_foreground) {
TPUTS_TRACE("set_a_foreground");
@@ -251,6 +247,60 @@ init_color_table(NCURSES_SP_DCL0)
}
}
+static bool
+init_direct_colors(NCURSES_SP_DCL0)
+{
+ static NCURSES_CONST char name[] = "RGB";
+
+ int n;
+ const char *s;
+ int width;
+ rgb_bits_t *result = &(SP_PARM->_direct_color);
+
+ result->value = 0;
+
+ if (COLORS >= 8) {
+ /* find the number of bits needed for the maximum color value */
+ for (width = 0; (1 << width) - 1 < (COLORS - 1); ++width) {
+ ;
+ }
+
+ if ((n = tigetflag(name)) > 0) {
+ n = (width + 2) / 3;
+ result->bits.red = UChar(n);
+ result->bits.green = UChar(n);
+ result->bits.blue = UChar(width - (2 * n));
+ } else if ((n = tigetnum(name)) > 0) {
+ result->bits.red = UChar(n);
+ result->bits.green = UChar(n);
+ result->bits.blue = UChar(n);
+ } else if ((s = tigetstr(name)) != 0 && VALID_STRING(s)) {
+ int red = n;
+ int green = n;
+ int blue = width - (2 * n);
+
+ switch (sscanf(s, "%d/%d/%d", &red, &green, &blue)) {
+ default:
+ blue = width - (2 * n);
+ /* FALLTHRU */
+ case 1:
+ green = n;
+ /* FALLTHRU */
+ case 2:
+ red = n;
+ /* FALLTHRU */
+ case 3:
+ /* okay */
+ break;
+ }
+ result->bits.red = UChar(red);
+ result->bits.green = UChar(green);
+ result->bits.blue = UChar(blue);
+ }
+ }
+ return (result->value != 0);
+}
+
/*
* Reset the color pair, e.g., to whatever color pair 0 is.
*/
@@ -258,7 +308,7 @@ static bool
reset_color_pair(NCURSES_SP_DCL0)
{
#ifdef USE_TERM_DRIVER
- return CallDriver(SP_PARM, rescol);
+ return CallDriver(SP_PARM, td_rescol);
#else
bool result = FALSE;
@@ -288,7 +338,7 @@ NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_DCL0)
result = TRUE;
#ifdef USE_TERM_DRIVER
- result = CallDriver(SP_PARM, rescolors);
+ result = CallDriver(SP_PARM, td_rescolors);
#else
if (orig_colors != 0) {
NCURSES_PUTP2("orig_colors", orig_colors);
@@ -346,7 +396,10 @@ NCURSES_SP_NAME(start_color) (NCURSES_SP_DCL0)
* allow for default-color as a component of a color-pair.
*/
SP_PARM->_pair_limit += (1 + (2 * maxcolors));
+#if !NCURSES_EXT_COLORS
+ SP_PARM->_pair_limit = limit_PAIRS(SP_PARM->_pair_limit);
#endif
+#endif /* NCURSES_EXT_FUNCS */
SP_PARM->_pair_count = maxpairs;
SP_PARM->_color_count = maxcolors;
#if !USE_REENTRANT
@@ -354,19 +407,26 @@ NCURSES_SP_NAME(start_color) (NCURSES_SP_DCL0)
COLORS = maxcolors;
#endif
- SP_PARM->_color_pairs = TYPE_CALLOC(colorpair_t, SP_PARM->_pair_limit);
+ ReservePairs(SP_PARM, 16);
if (SP_PARM->_color_pairs != 0) {
- SP_PARM->_color_table = TYPE_CALLOC(color_t, maxcolors);
- if (SP_PARM->_color_table != 0) {
- SP_PARM->_color_pairs[0] = PAIR_OF(default_fg(NCURSES_SP_ARG),
- default_bg(NCURSES_SP_ARG));
- init_color_table(NCURSES_SP_ARG);
-
+ if (init_direct_colors(NCURSES_SP_ARG)) {
+ result = OK;
+ } else {
+ SP_PARM->_color_table = TYPE_CALLOC(color_t, maxcolors);
+ if (SP_PARM->_color_table != 0) {
+ MakeColorPair(SP_PARM->_color_pairs[0],
+ default_fg(NCURSES_SP_ARG),
+ default_bg(NCURSES_SP_ARG));
+ init_color_table(NCURSES_SP_ARG);
+
+ result = OK;
+ }
+ }
+ if (result == OK) {
T(("started color: COLORS = %d, COLOR_PAIRS = %d",
COLORS, COLOR_PAIRS));
SP_PARM->_coloron = 1;
- result = OK;
} else if (SP_PARM->_color_pairs != 0) {
FreeAndNull(SP_PARM->_color_pairs);
}
@@ -388,7 +448,7 @@ start_color(void)
/* This function was originally written by Daniel Weaver <danw@znyx.com> */
static void
-rgb2hls(int r, int g, int b, NCURSES_COLOR_T *h, NCURSES_COLOR_T *l, NCURSES_COLOR_T *s)
+rgb2hls(int r, int g, int b, int *h, int *l, int *s)
/* convert RGB to HLS system */
{
int min, max, t;
@@ -399,7 +459,7 @@ rgb2hls(int r, int g, int b, NCURSES_COLOR_T *h, NCURSES_COLOR_T *l, NCURSES_COL
max = b;
/* calculate lightness */
- *l = (NCURSES_COLOR_T) ((min + max) / 20);
+ *l = ((min + max) / 20);
if (min == max) { /* black, white and all shades of gray */
*h = 0;
@@ -409,19 +469,88 @@ rgb2hls(int r, int g, int b, NCURSES_COLOR_T *h, NCURSES_COLOR_T *l, NCURSES_COL
/* calculate saturation */
if (*l < 50)
- *s = (NCURSES_COLOR_T) (((max - min) * 100) / (max + min));
+ *s = (((max - min) * 100) / (max + min));
else
- *s = (NCURSES_COLOR_T) (((max - min) * 100) / (2000 - max - min));
+ *s = (((max - min) * 100) / (2000 - max - min));
/* calculate hue */
if (r == max)
- t = (NCURSES_COLOR_T) (120 + ((g - b) * 60) / (max - min));
+ t = (120 + ((g - b) * 60) / (max - min));
else if (g == max)
- t = (NCURSES_COLOR_T) (240 + ((b - r) * 60) / (max - min));
+ t = (240 + ((b - r) * 60) / (max - min));
else
- t = (NCURSES_COLOR_T) (360 + ((r - g) * 60) / (max - min));
+ t = (360 + ((r - g) * 60) / (max - min));
+
+ *h = (t % 360);
+}
+
+/*
+ * Change all cells which use(d) a given color pair to force a repaint.
+ */
+NCURSES_EXPORT(void)
+_nc_change_pair(SCREEN *sp, int pair)
+{
+ int y, x;
+
+ if (CurScreen(sp)->_clear)
+ return;
+#if NO_LEAKS
+ if (_nc_globals.leak_checking)
+ return;
+#endif
+
+ for (y = 0; y <= CurScreen(sp)->_maxy; y++) {
+ struct ldat *ptr = &(CurScreen(sp)->_line[y]);
+ bool changed = FALSE;
+ for (x = 0; x <= CurScreen(sp)->_maxx; x++) {
+ if (GetPair(ptr->text[x]) == pair) {
+ /* Set the old cell to zero to ensure it will be
+ updated on the next doupdate() */
+ SetChar(ptr->text[x], 0, 0);
+ CHANGED_CELL(ptr, x);
+ changed = TRUE;
+ }
+ }
+ if (changed)
+ NCURSES_SP_NAME(_nc_make_oldhash) (NCURSES_SP_ARGx y);
+ }
+}
- *h = (NCURSES_COLOR_T) (t % 360);
+NCURSES_EXPORT(void)
+_nc_reserve_pairs(SCREEN *sp, int want)
+{
+ int have = sp->_pair_alloc;
+
+ if (have == 0)
+ have = 1;
+ while (have <= want)
+ have *= 2;
+ if (have > sp->_pair_limit)
+ have = sp->_pair_limit;
+
+ if (sp->_color_pairs == 0) {
+ sp->_color_pairs = TYPE_CALLOC(colorpair_t, have);
+ } else if (have > sp->_pair_alloc) {
+#if NCURSES_EXT_COLORS
+ colorpair_t *next;
+
+ if ((next = typeCalloc(colorpair_t, have)) == 0)
+ _nc_err_abort(MSG_NO_MEMORY);
+ memcpy(next, sp->_color_pairs, (size_t) sp->_pair_alloc * sizeof(*next));
+ _nc_copy_pairs(sp, next, sp->_color_pairs, sp->_pair_alloc);
+ free(sp->_color_pairs);
+ sp->_color_pairs = next;
+#else
+ TYPE_REALLOC(colorpair_t, have, sp->_color_pairs);
+ if (sp->_color_pairs != 0) {
+ memset(sp->_color_pairs + sp->_pair_alloc, 0,
+ sizeof(colorpair_t) * (size_t) (have - sp->_pair_alloc));
+ }
+#endif
+ }
+ if (sp->_color_pairs != 0) {
+ sp->_pair_alloc = have;
+ }
}
/*
@@ -429,32 +558,27 @@ rgb2hls(int r, int g, int b, NCURSES_COLOR_T *h, NCURSES_COLOR_T *l, NCURSES_COL
* values.
*/
NCURSES_EXPORT(int)
-NCURSES_SP_NAME(init_pair) (NCURSES_SP_DCLx
- NCURSES_PAIRS_T pair,
- NCURSES_COLOR_T f,
- NCURSES_COLOR_T b)
+_nc_init_pair(SCREEN *sp, int pair, int f, int b)
{
- colorpair_t result;
+ static colorpair_t null_pair;
+ colorpair_t result = null_pair;
colorpair_t previous;
int maxcolors;
- T((T_CALLED("init_pair(%p,%d,%d,%d)"),
- (void *) SP_PARM,
- (int) pair,
- (int) f,
- (int) b));
+ T((T_CALLED("init_pair(%p,%d,%d,%d)"), (void *) sp, pair, f, b));
- if (!ValidPair(pair))
+ if (!ValidPair(sp, pair))
returnCode(ERR);
maxcolors = MaxColors;
- previous = SP_PARM->_color_pairs[pair];
+ ReservePairs(sp, pair);
+ previous = sp->_color_pairs[pair];
#if NCURSES_EXT_FUNCS
- if (SP_PARM->_default_color || SP_PARM->_assumed_color) {
+ if (sp->_default_color || sp->_assumed_color) {
bool isDefault = FALSE;
bool wasDefault = FALSE;
- int default_pairs = SP_PARM->_default_pairs;
+ int default_pairs = sp->_default_pairs;
/*
* Map caller's color number, e.g., -1, 0, 1, .., 7, etc., into
@@ -479,8 +603,8 @@ NCURSES_SP_NAME(init_pair) (NCURSES_SP_DCLx
* Check if the table entry that we are going to init/update used
* default colors.
*/
- if ((FORE_OF(previous) == COLOR_DEFAULT)
- || (BACK_OF(previous) == COLOR_DEFAULT))
+ if (isDefaultColor(FORE_OF(previous))
+ || isDefaultColor(BACK_OF(previous)))
wasDefault = TRUE;
/*
@@ -501,10 +625,10 @@ NCURSES_SP_NAME(init_pair) (NCURSES_SP_DCLx
* that does not will decrement the count - and possibly interfere
* with sequentially adding new pairs.
*/
- if (pair > (SP_PARM->_pair_count + default_pairs)) {
+ if (pair > (sp->_pair_count + default_pairs)) {
returnCode(ERR);
}
- SP_PARM->_default_pairs = default_pairs;
+ sp->_default_pairs = default_pairs;
} else
#endif
{
@@ -520,34 +644,22 @@ NCURSES_SP_NAME(init_pair) (NCURSES_SP_DCLx
* initialized before a screen update is performed replacing original
* pair colors with the new ones).
*/
- result = PAIR_OF(f, b);
- if (previous != 0
- && previous != result) {
- int y, x;
-
- for (y = 0; y <= CurScreen(SP_PARM)->_maxy; y++) {
- struct ldat *ptr = &(CurScreen(SP_PARM)->_line[y]);
- bool changed = FALSE;
- for (x = 0; x <= CurScreen(SP_PARM)->_maxx; x++) {
- if (GetPair(ptr->text[x]) == pair) {
- /* Set the old cell to zero to ensure it will be
- updated on the next doupdate() */
- SetChar(ptr->text[x], 0, 0);
- CHANGED_CELL(ptr, x);
- changed = TRUE;
- }
- }
- if (changed)
- NCURSES_SP_NAME(_nc_make_oldhash) (NCURSES_SP_ARGx y);
- }
+ MakeColorPair(result, f, b);
+ if ((FORE_OF(previous) != 0
+ || BACK_OF(previous) != 0)
+ && !isSamePair(previous, result)) {
+ _nc_change_pair(sp, pair);
}
- SP_PARM->_color_pairs[pair] = result;
- if (GET_SCREEN_PAIR(SP_PARM) == pair)
- SET_SCREEN_PAIR(SP_PARM, (chtype) (~0)); /* force attribute update */
+ _nc_reset_color_pair(sp, pair, &result);
+ sp->_color_pairs[pair] = result;
+ _nc_set_color_pair(sp, pair, cpINIT);
+
+ if (GET_SCREEN_PAIR(sp) == pair)
+ SET_SCREEN_PAIR(sp, (int) (~0)); /* force attribute update */
#ifdef USE_TERM_DRIVER
- CallDriver_3(SP_PARM, initpair, pair, f, b);
+ CallDriver_3(sp, td_initpair, pair, f, b);
#else
if (initialize_pair && InPalette(f) && InPalette(b)) {
const color_t *tp = DefaultPalette;
@@ -573,6 +685,15 @@ NCURSES_SP_NAME(init_pair) (NCURSES_SP_DCLx
returnCode(OK);
}
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(init_pair) (NCURSES_SP_DCLx
+ NCURSES_PAIRS_T pair,
+ NCURSES_COLOR_T f,
+ NCURSES_COLOR_T b)
+{
+ return _nc_init_pair(SP_PARM, pair, f, b);
+}
+
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
init_pair(NCURSES_COLOR_T pair, NCURSES_COLOR_T f, NCURSES_COLOR_T b)
@@ -584,59 +705,65 @@ init_pair(NCURSES_COLOR_T pair, NCURSES_COLOR_T f, NCURSES_COLOR_T b)
#define okRGB(n) ((n) >= 0 && (n) <= 1000)
NCURSES_EXPORT(int)
-NCURSES_SP_NAME(init_color) (NCURSES_SP_DCLx
- NCURSES_COLOR_T color,
- NCURSES_COLOR_T r,
- NCURSES_COLOR_T g,
- NCURSES_COLOR_T b)
+_nc_init_color(SCREEN *sp, int color, int r, int g, int b)
{
int result = ERR;
int maxcolors;
T((T_CALLED("init_color(%p,%d,%d,%d,%d)"),
- (void *) SP_PARM,
+ (void *) sp,
color,
r, g, b));
- if (SP_PARM == 0)
+ if (sp == 0 || sp->_direct_color.value)
returnCode(result);
maxcolors = MaxColors;
if (InitColor
- && SP_PARM->_coloron
+ && sp->_coloron
&& (color >= 0 && OkColorHi(color))
&& (okRGB(r) && okRGB(g) && okRGB(b))) {
- SP_PARM->_color_table[color].init = 1;
- SP_PARM->_color_table[color].r = r;
- SP_PARM->_color_table[color].g = g;
- SP_PARM->_color_table[color].b = b;
+ sp->_color_table[color].init = 1;
+ sp->_color_table[color].r = r;
+ sp->_color_table[color].g = g;
+ sp->_color_table[color].b = b;
if (UseHlsPalette) {
rgb2hls(r, g, b,
- &SP_PARM->_color_table[color].red,
- &SP_PARM->_color_table[color].green,
- &SP_PARM->_color_table[color].blue);
+ &sp->_color_table[color].red,
+ &sp->_color_table[color].green,
+ &sp->_color_table[color].blue);
} else {
- SP_PARM->_color_table[color].red = r;
- SP_PARM->_color_table[color].green = g;
- SP_PARM->_color_table[color].blue = b;
+ sp->_color_table[color].red = r;
+ sp->_color_table[color].green = g;
+ sp->_color_table[color].blue = b;
}
#ifdef USE_TERM_DRIVER
- CallDriver_4(SP_PARM, initcolor, color, r, g, b);
+ CallDriver_4(sp, td_initcolor, color, r, g, b);
#else
NCURSES_PUTP2("initialize_color",
TPARM_4(initialize_color, color, r, g, b));
#endif
- SP_PARM->_color_defs = max(color + 1, SP_PARM->_color_defs);
+ sp->_color_defs = max(color + 1, sp->_color_defs);
result = OK;
}
returnCode(result);
}
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(init_color) (NCURSES_SP_DCLx
+ NCURSES_COLOR_T color,
+ NCURSES_COLOR_T r,
+ NCURSES_COLOR_T g,
+ NCURSES_COLOR_T b)
+{
+ return _nc_init_color(SP_PARM, color, r, g, b);
+}
+
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
init_color(NCURSES_COLOR_T color,
@@ -676,7 +803,7 @@ NCURSES_SP_NAME(has_colors) (NCURSES_SP_DCL0)
int code = FALSE;
(void) SP_PARM;
- T((T_CALLED("has_colors()")));
+ T((T_CALLED("has_colors(%p)"), (void *) SP_PARM));
if (HasTerminal(SP_PARM)) {
#ifdef USE_TERM_DRIVER
code = HasColor;
@@ -700,34 +827,54 @@ has_colors(void)
}
#endif
-NCURSES_EXPORT(int)
-NCURSES_SP_NAME(color_content) (NCURSES_SP_DCLx
- NCURSES_COLOR_T color,
- NCURSES_COLOR_T *r,
- NCURSES_COLOR_T *g,
- NCURSES_COLOR_T *b)
+static int
+_nc_color_content(SCREEN *sp, int color, int *r, int *g, int *b)
{
int result = ERR;
int maxcolors;
T((T_CALLED("color_content(%p,%d,%p,%p,%p)"),
- (void *) SP_PARM,
+ (void *) sp,
color,
(void *) r,
(void *) g,
(void *) b));
- if (SP_PARM == 0)
+ if (sp == 0)
returnCode(result);
maxcolors = MaxColors;
- if (color < 0 || !OkColorHi(color) || !SP_PARM->_coloron) {
+ if (color < 0 || !OkColorHi(color) || !sp->_coloron) {
result = ERR;
} else {
- NCURSES_COLOR_T c_r = SP_PARM->_color_table[color].red;
- NCURSES_COLOR_T c_g = SP_PARM->_color_table[color].green;
- NCURSES_COLOR_T c_b = SP_PARM->_color_table[color].blue;
+ int c_r, c_g, c_b;
+
+ if (sp->_direct_color.value) {
+ rgb_bits_t *work = &(sp->_direct_color);
+
+#define max_direct_color(name) ((1 << work->bits.name) - 1)
+#define value_direct_color(max) (1000 * ((color >> bitoff) & max)) / max
+
+ int max_r = max_direct_color(red);
+ int max_g = max_direct_color(green);
+ int max_b = max_direct_color(blue);
+
+ int bitoff = 0;
+
+ c_b = value_direct_color(max_b);
+ bitoff += work->bits.blue;
+
+ c_g = value_direct_color(max_g);
+ bitoff += work->bits.green;
+
+ c_r = value_direct_color(max_r);
+
+ } else {
+ c_r = sp->_color_table[color].red;
+ c_g = sp->_color_table[color].green;
+ c_b = sp->_color_table[color].blue;
+ }
if (r)
*r = c_r;
@@ -743,6 +890,23 @@ NCURSES_SP_NAME(color_content) (NCURSES_SP_DCLx
returnCode(result);
}
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(color_content) (NCURSES_SP_DCLx
+ NCURSES_COLOR_T color,
+ NCURSES_COLOR_T *r,
+ NCURSES_COLOR_T *g,
+ NCURSES_COLOR_T *b)
+{
+ int my_r, my_g, my_b;
+ int rc = _nc_color_content(SP_PARM, color, &my_r, &my_g, &my_b);
+ if (rc == OK) {
+ *r = limit_COLOR(my_r);
+ *g = limit_COLOR(my_g);
+ *b = limit_COLOR(my_b);
+ }
+ return rc;
+}
+
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
color_content(NCURSES_COLOR_T color,
@@ -755,29 +919,29 @@ color_content(NCURSES_COLOR_T color,
#endif
NCURSES_EXPORT(int)
-NCURSES_SP_NAME(pair_content) (NCURSES_SP_DCLx
- NCURSES_PAIRS_T pair,
- NCURSES_COLOR_T *f,
- NCURSES_COLOR_T *b)
+_nc_pair_content(SCREEN *sp, int pair, int *f, int *b)
{
int result;
T((T_CALLED("pair_content(%p,%d,%p,%p)"),
- (void *) SP_PARM,
+ (void *) sp,
(int) pair,
(void *) f,
(void *) b));
- if (!ValidPair(pair)) {
+ if (!ValidPair(sp, pair)) {
result = ERR;
} else {
- NCURSES_COLOR_T fg = (NCURSES_COLOR_T) FORE_OF(SP_PARM->_color_pairs[pair]);
- NCURSES_COLOR_T bg = (NCURSES_COLOR_T) BACK_OF(SP_PARM->_color_pairs[pair]);
+ int fg;
+ int bg;
+ ReservePairs(sp, pair);
+ fg = FORE_OF(sp->_color_pairs[pair]);
+ bg = BACK_OF(sp->_color_pairs[pair]);
#if NCURSES_EXT_FUNCS
- if (fg == COLOR_DEFAULT)
+ if (isDefaultColor(fg))
fg = -1;
- if (bg == COLOR_DEFAULT)
+ if (isDefaultColor(bg))
bg = -1;
#endif
@@ -787,7 +951,7 @@ NCURSES_SP_NAME(pair_content) (NCURSES_SP_DCLx
*b = bg;
TR(TRACE_ATTRS, ("...pair_content(%p,%d,%d,%d)",
- (void *) SP_PARM,
+ (void *) sp,
(int) pair,
(int) fg, (int) bg));
result = OK;
@@ -795,6 +959,21 @@ NCURSES_SP_NAME(pair_content) (NCURSES_SP_DCLx
returnCode(result);
}
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(pair_content) (NCURSES_SP_DCLx
+ NCURSES_PAIRS_T pair,
+ NCURSES_COLOR_T *f,
+ NCURSES_COLOR_T *b)
+{
+ int my_f, my_b;
+ int rc = _nc_pair_content(SP_PARM, pair, &my_f, &my_b);
+ if (rc == OK) {
+ *f = limit_COLOR(my_f);
+ *b = limit_COLOR(my_b);
+ }
+ return rc;
+}
+
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
pair_content(NCURSES_COLOR_T pair, NCURSES_COLOR_T *f, NCURSES_COLOR_T *b)
@@ -811,14 +990,14 @@ NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_DCLx
NCURSES_SP_OUTC outc)
{
#ifdef USE_TERM_DRIVER
- CallDriver_4(SP_PARM, docolor, old_pair, pair, reverse, outc);
+ CallDriver_4(SP_PARM, td_docolor, old_pair, pair, reverse, outc);
#else
- NCURSES_COLOR_T fg = COLOR_DEFAULT;
- NCURSES_COLOR_T bg = COLOR_DEFAULT;
- NCURSES_COLOR_T old_fg = -1;
- NCURSES_COLOR_T old_bg = -1;
+ int fg = COLOR_DEFAULT;
+ int bg = COLOR_DEFAULT;
+ int old_fg = -1;
+ int old_bg = -1;
- if (!ValidPair(pair)) {
+ if (!ValidPair(SP_PARM, pair)) {
return;
} else if (pair != 0) {
if (set_color_pair) {
@@ -828,14 +1007,14 @@ NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_DCLx
1, outc);
return;
} else if (SP_PARM != 0) {
- if (pair_content((NCURSES_COLOR_T) pair, &fg, &bg) == ERR)
+ if (_nc_pair_content(SP_PARM, pair, &fg, &bg) == ERR)
return;
}
}
if (old_pair >= 0
&& SP_PARM != 0
- && pair_content((NCURSES_COLOR_T) old_pair, &old_fg, &old_bg) != ERR) {
+ && _nc_pair_content(SP_PARM, old_pair, &old_fg, &old_bg) != ERR) {
if ((isDefaultColor(fg) && !isDefaultColor(old_fg))
|| (isDefaultColor(bg) && !isDefaultColor(old_bg))) {
#if NCURSES_EXT_FUNCS
@@ -858,19 +1037,19 @@ NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_DCLx
}
} else {
reset_color_pair(NCURSES_SP_ARG);
- if (old_pair < 0)
+ if (old_pair < 0 && pair <= 0)
return;
}
#if NCURSES_EXT_FUNCS
if (isDefaultColor(fg))
- fg = (NCURSES_COLOR_T) default_fg(NCURSES_SP_ARG);
+ fg = default_fg(NCURSES_SP_ARG);
if (isDefaultColor(bg))
- bg = (NCURSES_COLOR_T) default_bg(NCURSES_SP_ARG);
+ bg = default_bg(NCURSES_SP_ARG);
#endif
if (reverse) {
- NCURSES_COLOR_T xx = fg;
+ int xx = fg;
fg = bg;
bg = xx;
}
@@ -899,3 +1078,87 @@ _nc_do_color(int old_pair, int pair, int reverse, NCURSES_OUTC outc)
_nc_outc_wrapper);
}
#endif
+
+#if NCURSES_EXT_COLORS
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(init_extended_pair) (NCURSES_SP_DCLx int pair, int f, int b)
+{
+ return _nc_init_pair(SP_PARM, pair, f, b);
+}
+
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(init_extended_color) (NCURSES_SP_DCLx
+ int color,
+ int r, int g, int b)
+{
+ return _nc_init_color(SP_PARM, color, r, g, b);
+}
+
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(extended_color_content) (NCURSES_SP_DCLx
+ int color,
+ int *r, int *g, int *b)
+{
+ return _nc_color_content(SP_PARM, color, r, g, b);
+}
+
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(extended_pair_content) (NCURSES_SP_DCLx
+ int pair,
+ int *f, int *b)
+{
+ return _nc_pair_content(SP_PARM, pair, f, b);
+}
+
+NCURSES_EXPORT(void)
+NCURSES_SP_NAME(reset_color_pairs) (NCURSES_SP_DCL0)
+{
+ if (SP_PARM != 0) {
+ if (SP_PARM->_color_pairs) {
+ _nc_free_ordered_pairs(SP_PARM);
+ free(SP_PARM->_color_pairs);
+ SP_PARM->_color_pairs = 0;
+ SP_PARM->_pair_alloc = 0;
+ ReservePairs(SP_PARM, 16);
+ clearok(CurScreen(SP_PARM), TRUE);
+ touchwin(StdScreen(SP_PARM));
+ }
+ }
+}
+
+#if NCURSES_SP_FUNCS
+NCURSES_EXPORT(int)
+init_extended_pair(int pair, int f, int b)
+{
+ return NCURSES_SP_NAME(init_extended_pair) (CURRENT_SCREEN, pair, f, b);
+}
+
+NCURSES_EXPORT(int)
+init_extended_color(int color, int r, int g, int b)
+{
+ return NCURSES_SP_NAME(init_extended_color) (CURRENT_SCREEN,
+ color,
+ r, g, b);
+}
+
+NCURSES_EXPORT(int)
+extended_color_content(int color, int *r, int *g, int *b)
+{
+ return NCURSES_SP_NAME(extended_color_content) (CURRENT_SCREEN,
+ color,
+ r, g, b);
+}
+
+NCURSES_EXPORT(int)
+extended_pair_content(int pair, int *f, int *b)
+{
+ return NCURSES_SP_NAME(extended_pair_content) (CURRENT_SCREEN, pair, f, b);
+}
+
+NCURSES_EXPORT(void)
+reset_color_pairs(void)
+{
+ NCURSES_SP_NAME(reset_color_pairs) (CURRENT_SCREEN);
+}
+#endif /* NCURSES_SP_FUNCS */
+#endif /* NCURSES_EXT_COLORS */
diff --git a/ncurses/base/lib_colorset.c b/ncurses/base/lib_colorset.c
index e9354860ad0d..f3aef7e39110 100644
--- a/ncurses/base/lib_colorset.c
+++ b/ncurses/base/lib_colorset.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,2017 Free 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,22 +41,23 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_colorset.c,v 1.14 2014/02/01 22:10:42 tom Exp $")
+MODULE_ID("$Id: lib_colorset.c,v 1.15 2017/03/16 23:45:30 tom Exp $")
NCURSES_EXPORT(int)
-wcolor_set(WINDOW *win, NCURSES_PAIRS_T color_pair_number, void *opts)
+wcolor_set(WINDOW *win, NCURSES_PAIRS_T pair_arg, void *opts)
{
int code = ERR;
+ int color_pair = pair_arg;
- T((T_CALLED("wcolor_set(%p,%d)"), (void *) win, (int) color_pair_number));
+ T((T_CALLED("wcolor_set(%p,%d)"), (void *) win, color_pair));
+ set_extended_pair(opts, color_pair);
if (win
- && !opts
&& (SP != 0)
- && (color_pair_number >= 0)
- && (color_pair_number < SP->_pair_limit)) {
+ && (color_pair >= 0)
+ && (color_pair < SP->_pair_limit)) {
TR(TRACE_ATTRS, ("... current %ld", (long) GET_WINDOW_PAIR(win)));
- SET_WINDOW_PAIR(win, color_pair_number);
- if_EXT_COLORS(win->_color = color_pair_number);
+ SET_WINDOW_PAIR(win, color_pair);
+ if_EXT_COLORS(win->_color = color_pair);
code = OK;
}
returnCode(code);
diff --git a/ncurses/base/lib_dft_fgbg.c b/ncurses/base/lib_dft_fgbg.c
index 00cbafb39730..d5fd1a03a8d6 100644
--- a/ncurses/base/lib_dft_fgbg.c
+++ b/ncurses/base/lib_dft_fgbg.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2014,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_dft_fgbg.c,v 1.26 2011/04/23 18:28:18 tom Exp $")
+MODULE_ID("$Id: lib_dft_fgbg.c,v 1.29 2017/03/25 21:00:49 tom Exp $")
/*
* Modify the behavior of color-pair 0 so that the library doesn't assume that
@@ -68,26 +68,27 @@ NCURSES_SP_NAME(assume_default_colors) (NCURSES_SP_DCLx int fg, int bg)
int code = ERR;
T((T_CALLED("assume_default_colors(%p,%d,%d)"), (void *) SP_PARM, fg, bg));
+ if (SP_PARM != 0) {
#ifdef USE_TERM_DRIVER
- if (sp != 0)
- code = CallDriver_2(sp, defaultcolors, fg, bg);
+ code = CallDriver_2(SP_PARM, td_defaultcolors, fg, bg);
#else
- if ((orig_pair || orig_colors) && !initialize_pair) {
+ if ((orig_pair || orig_colors) && !initialize_pair) {
- SP_PARM->_default_color = isDefaultColor(fg) || isDefaultColor(bg);
- SP_PARM->_has_sgr_39_49 = (tigetflag("AX") == TRUE);
- SP_PARM->_default_fg = isDefaultColor(fg) ? COLOR_DEFAULT : (fg & C_MASK);
- SP_PARM->_default_bg = isDefaultColor(bg) ? COLOR_DEFAULT : (bg & C_MASK);
- if (SP_PARM->_color_pairs != 0) {
- bool save = SP_PARM->_default_color;
- SP_PARM->_assumed_color = TRUE;
- SP_PARM->_default_color = TRUE;
- init_pair(0, (short) fg, (short) bg);
- SP_PARM->_default_color = save;
+ SP_PARM->_default_color = isDefaultColor(fg) || isDefaultColor(bg);
+ SP_PARM->_has_sgr_39_49 = (tigetflag("AX") == TRUE);
+ SP_PARM->_default_fg = isDefaultColor(fg) ? COLOR_DEFAULT : fg;
+ SP_PARM->_default_bg = isDefaultColor(bg) ? COLOR_DEFAULT : bg;
+ if (SP_PARM->_color_pairs != 0) {
+ bool save = SP_PARM->_default_color;
+ SP_PARM->_assumed_color = TRUE;
+ SP_PARM->_default_color = TRUE;
+ init_pair(0, (short) fg, (short) bg);
+ SP_PARM->_default_color = save;
+ }
+ code = OK;
}
- code = OK;
- }
#endif
+ }
returnCode(code);
}
diff --git a/ncurses/base/lib_driver.c b/ncurses/base/lib_driver.c
index 6301a5887d64..6211b70bec19 100644
--- a/ncurses/base/lib_driver.c
+++ b/ncurses/base/lib_driver.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2008-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2014,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -33,7 +33,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_driver.c,v 1.4 2012/09/22 19:32:46 tom Exp $")
+MODULE_ID("$Id: lib_driver.c,v 1.7 2018/06/24 00:06:37 tom Exp $")
typedef struct DriverEntry {
const char *name;
@@ -42,8 +42,8 @@ typedef struct DriverEntry {
static DRIVER_ENTRY DriverTable[] =
{
-#ifdef __MINGW32__
- {"win32con", &_nc_WIN_DRIVER},
+#ifdef _WIN32
+ {"win32console", &_nc_WIN_DRIVER},
#endif
{"tinfo", &_nc_TINFO_DRIVER} /* must be last */
};
@@ -63,24 +63,12 @@ _nc_get_driver(TERMINAL_CONTROL_BLOCK * TCB, const char *name, int *errret)
for (i = 0; i < SIZEOF(DriverTable); i++) {
res = DriverTable[i].driver;
- /*
- * Use "#" (a character which cannot begin a terminal's name) to
- * select specific driver from the table.
- *
- * In principle, we could have more than one non-terminfo driver,
- * e.g., "win32gui".
- */
- if (name != 0 && *name == '#') {
- size_t n = strlen(name + 1);
- if (n != 0
- && strncmp(name + 1, DriverTable[i].name, n)) {
- continue;
+ if (strcmp(DriverTable[i].name, res->td_name(TCB)) == 0) {
+ if (res->td_CanHandle(TCB, name, errret)) {
+ use = res;
+ break;
}
}
- if (res->CanHandle(TCB, name, errret)) {
- use = res;
- break;
- }
}
if (use != 0) {
TCB->drv = use;
@@ -93,7 +81,7 @@ NCURSES_EXPORT(int)
NCURSES_SP_NAME(has_key) (SCREEN *sp, int keycode)
{
T((T_CALLED("has_key(%p, %d)"), (void *) sp, keycode));
- returnCode(IsValidTIScreen(sp) ? CallDriver_1(sp, kyExist, keycode) : FALSE);
+ returnCode(IsValidTIScreen(sp) ? CallDriver_1(sp, td_kyExist, keycode) : FALSE);
}
NCURSES_EXPORT(int)
@@ -108,7 +96,7 @@ NCURSES_SP_NAME(_nc_mcprint) (SCREEN *sp, char *data, int len)
int code = ERR;
if (0 != TerminalOf(sp))
- code = CallDriver_2(sp, print, data, len);
+ code = CallDriver_2(sp, td_print, data, len);
return (code);
}
@@ -126,7 +114,7 @@ NCURSES_SP_NAME(doupdate) (SCREEN *sp)
T((T_CALLED("doupdate(%p)"), (void *) sp));
if (IsValidScreen(sp))
- code = CallDriver(sp, update);
+ code = CallDriver(sp, td_update);
returnCode(code);
}
@@ -144,7 +132,7 @@ NCURSES_SP_NAME(mvcur) (SCREEN *sp, int yold, int xold, int ynew, int xnew)
TR(TRACE_CALLS | TRACE_MOVE, (T_CALLED("mvcur(%p,%d,%d,%d,%d)"),
(void *) sp, yold, xold, ynew, xnew));
if (HasTerminal(sp)) {
- code = CallDriver_4(sp, hwcur, yold, xold, ynew, xnew);
+ code = CallDriver_4(sp, td_hwcur, yold, xold, ynew, xnew);
}
returnCode(code);
}
diff --git a/ncurses/base/lib_endwin.c b/ncurses/base/lib_endwin.c
index 4596d0749633..c3ba37a65232 100644
--- a/ncurses/base/lib_endwin.c
+++ b/ncurses/base/lib_endwin.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2014,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_endwin.c,v 1.22 2009/10/24 22:02:14 tom Exp $")
+MODULE_ID("$Id: lib_endwin.c,v 1.24 2017/07/22 23:29:40 tom Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(endwin) (NCURSES_SP_DCL0)
@@ -55,11 +55,11 @@ NCURSES_SP_NAME(endwin) (NCURSES_SP_DCL0)
#ifdef USE_TERM_DRIVER
TERMINAL_CONTROL_BLOCK *TCB = TCBOf(SP_PARM);
- SP_PARM->_endwin = TRUE;
- if (TCB && TCB->drv && TCB->drv->scexit)
- TCB->drv->scexit(SP_PARM);
+ SP_PARM->_endwin = ewSuspend;
+ if (TCB && TCB->drv && TCB->drv->td_scexit)
+ TCB->drv->td_scexit(SP_PARM);
#else
- SP_PARM->_endwin = TRUE;
+ SP_PARM->_endwin = ewSuspend;
SP_PARM->_mouse_wrap(SP_PARM);
_nc_screen_wrap();
_nc_mvcur_wrap(); /* wrap up cursor addressing */
diff --git a/ncurses/base/lib_erase.c b/ncurses/base/lib_erase.c
index bbf10ef81b92..6bac1ba10178 100644
--- a/ncurses/base/lib_erase.c
+++ b/ncurses/base/lib_erase.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2005,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2016 Free 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,21 +41,25 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_erase.c,v 1.17 2009/10/24 22:32:29 tom Exp $")
+MODULE_ID("$Id: lib_erase.c,v 1.18 2016/05/28 23:11:26 tom Exp $")
NCURSES_EXPORT(int)
werase(WINDOW *win)
{
int code = ERR;
- int y;
NCURSES_CH_T blank;
- NCURSES_CH_T *sp, *end, *start;
+ NCURSES_CH_T *start;
T((T_CALLED("werase(%p)"), (void *) win));
if (win) {
+ NCURSES_CH_T *sp;
+ int y;
+
blank = win->_nc_bkgd;
for (y = 0; y <= win->_maxy; y++) {
+ NCURSES_CH_T *end;
+
start = win->_line[y].text;
end = &start[win->_maxx];
diff --git a/ncurses/base/lib_flash.c b/ncurses/base/lib_flash.c
index 3520177ea33f..7f25038cea51 100644
--- a/ncurses/base/lib_flash.c
+++ b/ncurses/base/lib_flash.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -46,7 +46,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_flash.c,v 1.13 2013/01/12 17:26:07 tom Exp $")
+MODULE_ID("$Id: lib_flash.c,v 1.14 2014/03/08 20:32:59 tom Exp $")
/*
* flash()
@@ -64,7 +64,7 @@ NCURSES_SP_NAME(flash) (NCURSES_SP_DCL0)
T((T_CALLED("flash(%p)"), (void *) SP_PARM));
#ifdef USE_TERM_DRIVER
if (SP_PARM != 0)
- res = CallDriver_1(SP_PARM, doBeepOrFlash, FALSE);
+ res = CallDriver_1(SP_PARM, td_doBeepOrFlash, FALSE);
#else
if (HasTerminal(SP_PARM)) {
/* FIXME: should make sure that we are not in altchar mode */
diff --git a/ncurses/base/lib_freeall.c b/ncurses/base/lib_freeall.c
index 031374924f00..4e29ec0f632f 100644
--- a/ncurses/base/lib_freeall.c
+++ b/ncurses/base/lib_freeall.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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 @@
extern int malloc_errfd; /* FIXME */
#endif
-MODULE_ID("$Id: lib_freeall.c,v 1.62 2012/11/17 23:53:03 tom Exp $")
+MODULE_ID("$Id: lib_freeall.c,v 1.71 2019/12/15 00:30:49 tom Exp $")
/*
* Free all ncurses data. This is used for testing only (there's no practical
@@ -48,11 +48,11 @@ MODULE_ID("$Id: lib_freeall.c,v 1.62 2012/11/17 23:53:03 tom Exp $")
NCURSES_EXPORT(void)
NCURSES_SP_NAME(_nc_freeall) (NCURSES_SP_DCL0)
{
- WINDOWLIST *p, *q;
static va_list empty_va;
T((T_CALLED("_nc_freeall()")));
#if NO_LEAKS
+ _nc_globals.leak_checking = TRUE;
if (SP_PARM != 0) {
if (SP_PARM->_oldnum_list != 0) {
FreeAndNull(SP_PARM->_oldnum_list);
@@ -60,12 +60,16 @@ NCURSES_SP_NAME(_nc_freeall) (NCURSES_SP_DCL0)
if (SP_PARM->_panelHook.destroy != 0) {
SP_PARM->_panelHook.destroy(SP_PARM->_panelHook.stdscr_pseudo_panel);
}
+#if NCURSES_EXT_COLORS
+ _nc_new_pair_leaks(SP_PARM);
+#endif
}
#endif
if (SP_PARM != 0) {
_nc_lock_global(curses);
while (WindowList(SP_PARM) != 0) {
+ WINDOWLIST *p, *q;
bool deleted = FALSE;
/* Delete only windows that're not a parent */
@@ -73,8 +77,19 @@ NCURSES_SP_NAME(_nc_freeall) (NCURSES_SP_DCL0)
WINDOW *p_win = &(p->win);
bool found = FALSE;
+#ifndef USE_SP_WINDOWLIST
+ if (p->screen != SP_PARM)
+ continue;
+#endif
+
for (each_window(SP_PARM, q)) {
WINDOW *q_win = &(q->win);
+
+#ifndef USE_SP_WINDOWLIST
+ if (q->screen != SP_PARM)
+ continue;
+#endif
+
if ((p != q)
&& (q_win->_flags & _SUBWIN)
&& (p_win == q_win->_parent)) {
@@ -131,22 +146,20 @@ _nc_freeall(void)
NCURSES_EXPORT(void)
NCURSES_SP_NAME(_nc_free_and_exit) (NCURSES_SP_DCLx int code)
{
- char *last_buffer = (SP_PARM != 0) ? SP_PARM->out_buffer : 0;
-
+ T((T_CALLED("_nc_free_and_exit(%d)"), code));
NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
NCURSES_SP_NAME(_nc_freeall) (NCURSES_SP_ARG);
#ifdef TRACE
- trace(0); /* close trace file, freeing its setbuf */
+ curses_trace(0); /* close trace file, freeing its setbuf */
{
static va_list fake;
free(_nc_varargs("?", fake));
}
#endif
- FreeIfNeeded(last_buffer);
exit(code);
}
-#else
+#else /* !HAVE_NC_FREEALL */
NCURSES_EXPORT(void)
_nc_freeall(void)
{
@@ -162,7 +175,7 @@ NCURSES_SP_NAME(_nc_free_and_exit) (NCURSES_SP_DCLx int code)
}
exit(code);
}
-#endif
+#endif /* HAVE_NC_FREEALL */
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(void)
@@ -171,3 +184,16 @@ _nc_free_and_exit(int code)
NCURSES_SP_NAME(_nc_free_and_exit) (CURRENT_SCREEN, code);
}
#endif
+
+NCURSES_EXPORT(void)
+exit_curses(int code)
+{
+#if NO_LEAKS
+#if NCURSES_SP_FUNCS
+ NCURSES_SP_NAME(_nc_free_and_exit) (CURRENT_SCREEN, code);
+#else
+ _nc_free_and_exit(code); /* deprecated... */
+#endif
+#endif
+ exit(code);
+}
diff --git a/ncurses/base/lib_getch.c b/ncurses/base/lib_getch.c
index 0a04ef5a6e1b..66c9f87e57d6 100644
--- a/ncurses/base/lib_getch.c
+++ b/ncurses/base/lib_getch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_getch.c,v 1.126 2013/02/16 18:30:37 tom Exp $")
+MODULE_ID("$Id: lib_getch.c,v 1.138 2019/11/03 00:11:16 tom Exp $")
#include <fifo_defs.h>
@@ -69,16 +69,20 @@ NCURSES_EXPORT(int)
NCURSES_SP_NAME(set_escdelay) (NCURSES_SP_DCLx int value)
{
int code = OK;
-#if USE_REENTRANT
- if (SP_PARM) {
- SET_ESCDELAY(value);
- } else {
+ if (value < 0) {
code = ERR;
- }
+ } else {
+#if USE_REENTRANT
+ if (SP_PARM) {
+ SET_ESCDELAY(value);
+ } else {
+ code = ERR;
+ }
#else
- (void) SP_PARM;
- ESCDELAY = value;
+ (void) SP_PARM;
+ ESCDELAY = value;
#endif
+ }
return code;
}
@@ -87,12 +91,16 @@ NCURSES_EXPORT(int)
set_escdelay(int value)
{
int code;
+ if (value < 0) {
+ code = ERR;
+ } else {
#if USE_REENTRANT
- code = NCURSES_SP_NAME(set_escdelay) (CURRENT_SCREEN, value);
+ code = NCURSES_SP_NAME(set_escdelay) (CURRENT_SCREEN, value);
#else
- ESCDELAY = value;
- code = OK;
+ ESCDELAY = value;
+ code = OK;
#endif
+ }
return code;
}
#endif
@@ -124,6 +132,17 @@ _nc_use_meta(WINDOW *win)
return (sp ? sp->_use_meta : 0);
}
+#ifdef USE_TERM_DRIVER
+# ifdef _WIN32
+static HANDLE
+_nc_get_handle(int fd)
+{
+ intptr_t value = _get_osfhandle(fd);
+ return (HANDLE) value;
+}
+# endif
+#endif
+
/*
* Check for mouse activity, returning nonzero if we find any.
*/
@@ -133,7 +152,16 @@ check_mouse_activity(SCREEN *sp, int delay EVENTLIST_2nd(_nc_eventlist * evl))
int rc;
#ifdef USE_TERM_DRIVER
- rc = TCBOf(sp)->drv->testmouse(TCBOf(sp), delay EVENTLIST_2nd(evl));
+ TERMINAL_CONTROL_BLOCK *TCB = TCBOf(sp);
+ rc = TCBOf(sp)->drv->td_testmouse(TCBOf(sp), delay EVENTLIST_2nd(evl));
+# ifdef _WIN32
+ /* if we emulate terminfo on console, we have to use the console routine */
+ if (IsTermInfoOnConsole(sp)) {
+ HANDLE fd = _nc_get_handle(sp->_ifd);
+ rc = _nc_mingw_testmouse(sp, fd, delay EVENTLIST_2nd(evl));
+ } else
+# endif
+ rc = TCB->drv->td_testmouse(TCB, delay EVENTLIST_2nd(evl));
#else
#if USE_SYSMOUSE
if ((sp->_mouse_type == M_SYSMOUSE)
@@ -204,11 +232,6 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl))
if (tail < 0)
return ERR;
-#ifdef HIDE_EINTR
- again:
- errno = 0;
-#endif
-
#ifdef NCURSES_WGETCH_EVENTS
if (evl
#if USE_GPM_SUPPORT || USE_EMX_MOUSE || USE_SYSMOUSE
@@ -259,7 +282,7 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl))
} else
#endif
#if USE_KLIBC_KBD
- if (isatty(sp->_ifd) && sp->_cbreak) {
+ if (NC_ISATTY(sp->_ifd) && sp->_cbreak) {
ch = _read_kbd(0, 1, !sp->_raw);
n = (ch == -1) ? -1 : 1;
sp->_extended_key = (ch == 0);
@@ -268,7 +291,14 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl))
{ /* Can block... */
#ifdef USE_TERM_DRIVER
int buf;
- n = CallDriver_1(sp, read, &buf);
+#ifdef _WIN32
+ if (NC_ISATTY(sp->_ifd) && IsTermInfoOnConsole(sp) && sp->_cbreak)
+ n = _nc_mingw_console_read(sp,
+ _nc_get_handle(sp->_ifd),
+ &buf);
+ else
+#endif
+ n = CallDriver_1(sp, td_read, &buf);
ch = buf;
#else
unsigned char c2 = 0;
@@ -286,24 +316,6 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl))
#endif
}
-#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
-# if USE_PTHREADS_EINTR
- && (_nc_globals.have_sigwinch == 0)
-# endif
- )
- goto again;
-#endif
-
if ((n == -1) || (n == 0)) {
TR(TRACE_IEVENT, ("read(%d,&ch,1)=%d, errno=%d", sp->_ifd, n, errno));
ch = ERR;
@@ -333,7 +345,7 @@ fifo_clear(SCREEN *sp)
tail = peek = 0;
}
-static int kgetch(SCREEN *EVENTLIST_2nd(_nc_eventlist * evl));
+static int kgetch(SCREEN *, bool EVENTLIST_2nd(_nc_eventlist *));
static void
recur_wrefresh(WINDOW *win)
@@ -399,7 +411,7 @@ _nc_wgetch(WINDOW *win,
int ch;
int rc = 0;
#ifdef NCURSES_WGETCH_EVENTS
- long event_delay = -1;
+ int event_delay = -1;
#endif
T((T_CALLED("_nc_wgetch(%p)"), (void *) win));
@@ -510,7 +522,7 @@ _nc_wgetch(WINDOW *win,
int runcount = 0;
do {
- ch = kgetch(sp EVENTLIST_2nd(evl));
+ ch = kgetch(sp, win->_notimeout EVENTLIST_2nd(evl));
if (ch == KEY_MOUSE) {
++runcount;
if (sp->_mouse_inline(sp))
@@ -622,7 +634,7 @@ wgetch_events(WINDOW *win, _nc_eventlist * evl)
int code;
int value;
- T((T_CALLED("wgetch_events(%p,%p)"), win, evl));
+ T((T_CALLED("wgetch_events(%p,%p)"), (void *) win, (void *) evl));
code = _nc_wgetch(win,
&value,
_nc_use_meta(win)
@@ -665,11 +677,11 @@ wgetch(WINDOW *win)
*/
static int
-kgetch(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl))
+kgetch(SCREEN *sp, bool forever EVENTLIST_2nd(_nc_eventlist * evl))
{
TRIES *ptr;
int ch = 0;
- int timeleft = GetEscdelay(sp);
+ int timeleft = forever ? 9999999 : GetEscdelay(sp);
TR(TRACE_IEVENT, ("kgetch() called"));
diff --git a/ncurses/base/lib_getstr.c b/ncurses/base/lib_getstr.c
index 0e446349ca17..fc18e40fcaa4 100644
--- a/ncurses/base/lib_getstr.c
+++ b/ncurses/base/lib_getstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -40,7 +40,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_getstr.c,v 1.30 2011/10/22 16:31:35 tom Exp $")
+MODULE_ID("$Id: lib_getstr.c,v 1.33 2018/09/01 20:18:09 tom Exp $")
/*
* This wipes out the last character, no matter whether it was a tab, control
@@ -85,9 +85,11 @@ wgetnstr_events(WINDOW *win,
T((T_CALLED("wgetnstr(%p,%p,%d)"), (void *) win, (void *) str, maxlen));
- if (!win)
+ if (!win || !str)
returnCode(ERR);
+ maxlen = _nc_getstr_limit(maxlen);
+
NCURSES_SP_NAME(_nc_get_tty_mode) (NCURSES_SP_ARGx &buf);
oldnl = sp->_nl;
@@ -142,7 +144,7 @@ wgetnstr_events(WINDOW *win,
str = WipeOut(win, y, x, oldstr, str, oldecho);
}
} else if (ch >= KEY_MIN
- || (maxlen >= 0 && str - oldstr >= maxlen)) {
+ || (str - oldstr >= maxlen)) {
NCURSES_SP_NAME(beep) (NCURSES_SP_ARG);
} else {
*str++ = (char) ch;
diff --git a/ncurses/base/lib_hline.c b/ncurses/base/lib_hline.c
index 1f0380830ddc..0fac51de74fb 100644
--- a/ncurses/base/lib_hline.c
+++ b/ncurses/base/lib_hline.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free 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,6 +29,8 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996-on *
+ * and: Sven Verdoolaege 2001 *
****************************************************************************/
/*
@@ -40,23 +42,21 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_hline.c,v 1.13 2010/12/19 01:48:39 tom Exp $")
+MODULE_ID("$Id: lib_hline.c,v 1.15 2017/10/28 19:57:42 tom Exp $")
NCURSES_EXPORT(int)
whline(WINDOW *win, chtype ch, int n)
{
int code = ERR;
- int start;
- int end;
T((T_CALLED("whline(%p,%s,%d)"), (void *) win, _tracechtype(ch), n));
if (win) {
struct ldat *line = &(win->_line[win->_cury]);
NCURSES_CH_T wch;
+ int start = win->_curx;
+ int end = start + n - 1;
- start = win->_curx;
- end = start + n - 1;
if (end > win->_maxx)
end = win->_maxx;
@@ -68,6 +68,14 @@ whline(WINDOW *win, chtype ch, int n)
SetChar2(wch, ch);
wch = _nc_render(win, wch);
+#if USE_WIDEC_SUPPORT
+ if (start > 0 && isWidecExt(line->text[start])) {
+ SetChar2(line->text[start - 1], ' ');
+ }
+ if (end < win->_maxx && isWidecExt(line->text[end + 1])) {
+ SetChar2(line->text[end + 1], ' ');
+ }
+#endif
while (end >= start) {
line->text[end] = wch;
end--;
diff --git a/ncurses/base/lib_inchstr.c b/ncurses/base/lib_inchstr.c
index aebb6d625d5c..bf30e3ce2663 100644
--- a/ncurses/base/lib_inchstr.c
+++ b/ncurses/base/lib_inchstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2017 Free 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>
-MODULE_ID("$Id: lib_inchstr.c,v 1.12 2010/12/20 01:37:41 tom Exp $")
+MODULE_ID("$Id: lib_inchstr.c,v 1.16 2017/04/30 00:10:25 tom Exp $")
NCURSES_EXPORT(int)
winchnstr(WINDOW *win, chtype *str, int n)
@@ -50,16 +50,19 @@ winchnstr(WINDOW *win, chtype *str, int n)
T((T_CALLED("winchnstr(%p,%p,%d)"), (void *) win, (void *) str, n));
- if (!str)
- returnCode(0);
+ if (!win || !str) {
+ i = ERR;
+ } else {
+ int row = win->_cury;
+ int col = win->_curx;
+ NCURSES_CH_T *text = win->_line[row].text;
- if (win) {
- for (; (n < 0 || (i < n)) && (win->_curx + i <= win->_maxx); i++)
- str[i] =
- (chtype) CharOf(win->_line[win->_cury].text[win->_curx + i]) |
- AttrOf(win->_line[win->_cury].text[win->_curx + i]);
+ for (; (n < 0 || (i < n)) && (col + i <= win->_maxx); i++) {
+ str[i] = (((chtype) CharOf(text[col + i]) & A_CHARTEXT) |
+ AttrOf(text[col + i]));
+ }
+ str[i] = (chtype) 0;
}
- str[i] = (chtype) 0;
returnCode(i);
}
diff --git a/ncurses/base/lib_initscr.c b/ncurses/base/lib_initscr.c
index 334682fab71d..60f5e4d0d393 100644
--- a/ncurses/base/lib_initscr.c
+++ b/ncurses/base/lib_initscr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
- * and: Thomas E. Dickey 1996-2003 *
+ * and: Thomas E. Dickey 1996-on *
****************************************************************************/
/*
@@ -45,15 +45,13 @@
#include <sys/termio.h> /* needed for ISC */
#endif
-MODULE_ID("$Id: lib_initscr.c,v 1.39 2009/02/14 20:55:49 tom Exp $")
+MODULE_ID("$Id: lib_initscr.c,v 1.44 2019/06/22 00:02:01 tom Exp $")
NCURSES_EXPORT(WINDOW *)
initscr(void)
{
WINDOW *result;
- NCURSES_CONST char *name;
-
START_TRACE();
T((T_CALLED("initscr()")));
@@ -62,11 +60,19 @@ initscr(void)
/* Portable applications must not call initscr() more than once */
if (!_nc_globals.init_screen) {
+ const char *env;
+ char *name;
+
_nc_globals.init_screen = TRUE;
- if ((name = getenv("TERM")) == 0
- || *name == '\0')
- name = "unknown";
+ if ((env = getenv("TERM")) == 0
+ || *env == '\0') {
+ env = "unknown";
+ }
+ if ((name = strdup(env)) == NULL) {
+ fprintf(stderr, "Error opening allocating $TERM.\n");
+ ExitProgram(EXIT_FAILURE);
+ }
#ifdef __CYGWIN__
/*
* 2002/9/21
@@ -75,9 +81,9 @@ initscr(void)
* core when attempting to write to stdout. Opening /dev/tty
* explicitly seems to fix the problem.
*/
- if (isatty(fileno(stdout))) {
+ if (NC_ISATTY(fileno(stdout))) {
FILE *fp = fopen("/dev/tty", "w");
- if (fp != 0 && isatty(fileno(fp))) {
+ if (fp != 0 && NC_ISATTY(fileno(fp))) {
fclose(stdout);
dup2(fileno(fp), STDOUT_FILENO);
stdout = fdopen(STDOUT_FILENO, "w");
@@ -86,7 +92,7 @@ initscr(void)
#endif
if (newterm(name, stdout, stdin) == 0) {
fprintf(stderr, "Error opening terminal: %s.\n", name);
- exit(EXIT_FAILURE);
+ ExitProgram(EXIT_FAILURE);
}
/* def_shell_mode - done in newterm/_nc_setupscreen */
@@ -95,6 +101,7 @@ initscr(void)
#else
def_prog_mode();
#endif
+ free(name);
}
result = stdscr;
_nc_unlock_global(curses);
diff --git a/ncurses/base/lib_insch.c b/ncurses/base/lib_insch.c
index 32eaed739443..1ec70e3af83d 100644
--- a/ncurses/base/lib_insch.c
+++ b/ncurses/base/lib_insch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2016 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,7 +43,7 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_insch.c,v 1.35 2013/05/18 21:58:56 tom Exp $")
+MODULE_ID("$Id: lib_insch.c,v 1.36 2016/05/28 23:11:26 tom Exp $")
/*
* Insert the given character, updating the current location to simplify
@@ -56,7 +56,6 @@ _nc_insert_ch(SCREEN *sp, WINDOW *win, chtype ch)
int ch8 = (int) ChCharOf(ch);
NCURSES_CH_T wch;
int count;
- NCURSES_CONST char *s;
int tabsize = (
#if USE_REENTRANT
sp->_TABSIZE
@@ -102,6 +101,7 @@ _nc_insert_ch(SCREEN *sp, WINDOW *win, chtype ch)
win->_curx++;
}
} else if (iscntrl(ch8)) {
+ NCURSES_CONST char *s;
s = NCURSES_SP_NAME(unctrl) (NCURSES_SP_ARGx (chtype) ch8);
while (*s != '\0') {
code = _nc_insert_ch(sp, win, ChAttrOf(ch) | UChar(*s));
@@ -121,6 +121,7 @@ _nc_insert_ch(SCREEN *sp, WINDOW *win, chtype ch)
if (count > 0) {
code = _nc_insert_wch(win, &wch);
} else if (count == -1) {
+ NCURSES_CONST char *s;
/* handle EILSEQ */
s = NCURSES_SP_NAME(unctrl) (NCURSES_SP_ARGx (chtype) ch8);
if (strlen(s) > 1) {
@@ -145,15 +146,13 @@ _nc_insert_ch(SCREEN *sp, WINDOW *win, chtype ch)
NCURSES_EXPORT(int)
winsch(WINDOW *win, chtype c)
{
- NCURSES_SIZE_T oy;
- NCURSES_SIZE_T ox;
int code = ERR;
T((T_CALLED("winsch(%p, %s)"), (void *) win, _tracechtype(c)));
if (win != 0) {
- oy = win->_cury;
- ox = win->_curx;
+ NCURSES_SIZE_T oy = win->_cury;
+ NCURSES_SIZE_T ox = win->_curx;
code = _nc_insert_ch(_nc_screen_of(win), win, c);
diff --git a/ncurses/base/lib_insnstr.c b/ncurses/base/lib_insnstr.c
index ce03e64be002..8ee26a8091c1 100644
--- a/ncurses/base/lib_insnstr.c
+++ b/ncurses/base/lib_insnstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2004,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 2004-2016,2018 Free 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,31 +40,55 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_insnstr.c,v 1.3 2009/10/24 22:04:35 tom Exp $")
+MODULE_ID("$Id: lib_insnstr.c,v 1.6 2018/03/10 20:13:59 Gyorgy.Jeney Exp $")
NCURSES_EXPORT(int)
winsnstr(WINDOW *win, const char *s, int n)
{
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)"), (void *) win, _nc_visbufn(s, n), n));
if (win != 0 && str != 0) {
SCREEN *sp = _nc_screen_of(win);
+#if USE_WIDEC_SUPPORT
+ /*
+ * If the output contains "wide" (multibyte) characters, we will not
+ * really know the width of a character until we get the last byte
+ * of the character. Since the preceding byte(s) may use more columns
+ * on the screen than the final character, it is best to route the
+ * call to the wins_nwstr() function.
+ */
+ if (sp->_screen_unicode) {
+ size_t nn = (n > 0) ? (size_t) n : strlen(s);
+ wchar_t *buffer = typeMalloc(wchar_t, nn + 1);
+ if (buffer != 0) {
+ mbstate_t state;
+ size_t n3;
+ init_mb(state);
+ n3 = mbstowcs(buffer, s, nn);
+ if (n3 != (size_t) (-1)) {
+ code = wins_nwstr(win, buffer, (int) n3);
+ }
+ free(buffer);
+ }
+ }
+ if (code == ERR)
+#endif
+ {
+ NCURSES_SIZE_T oy = win->_cury;
+ NCURSES_SIZE_T ox = win->_curx;
+ const unsigned char *cp;
- oy = win->_cury;
- ox = win->_curx;
- for (cp = str; *cp && (n <= 0 || (cp - str) < n); cp++) {
- _nc_insert_ch(sp, win, (chtype) UChar(*cp));
+ for (cp = str; (n <= 0 || (cp - str) < n) && *cp; cp++) {
+ _nc_insert_ch(sp, win, (chtype) UChar(*cp));
+ }
+ win->_curx = ox;
+ win->_cury = oy;
+ _nc_synchook(win);
+ code = OK;
}
- win->_curx = ox;
- win->_cury = oy;
- _nc_synchook(win);
- code = OK;
}
returnCode(code);
}
diff --git a/ncurses/base/lib_instr.c b/ncurses/base/lib_instr.c
index f708ecc51e4a..dbd2a020ac61 100644
--- a/ncurses/base/lib_instr.c
+++ b/ncurses/base/lib_instr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free 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,41 +41,44 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_instr.c,v 1.21 2014/02/01 22:09:27 tom Exp $")
+MODULE_ID("$Id: lib_instr.c,v 1.23 2017/04/29 21:16:20 tom Exp $")
NCURSES_EXPORT(int)
winnstr(WINDOW *win, char *str, int n)
{
- int i = 0, row, col;
+ int i = 0;
T((T_CALLED("winnstr(%p,%p,%d)"), (void *) win, str, n));
- if (!str)
- returnCode(0);
-
- if (win) {
- getyx(win, row, col);
+ if (!win || !str) {
+ i = ERR;
+ } else {
+ int row = win->_cury;
+ int col = win->_curx;
+ NCURSES_CH_T *text = win->_line[row].text;
if (n < 0)
- n = win->_maxx - win->_curx + 1;
+ n = win->_maxx - col + 1;
for (; i < n;) {
#if USE_WIDEC_SUPPORT
- cchar_t *cell = &(win->_line[row].text[col]);
- wchar_t *wch;
+ cchar_t *cell = &(text[col]);
attr_t attrs;
NCURSES_PAIRS_T pair;
- int n2;
- bool done = FALSE;
mbstate_t state;
- size_t i3, n3;
char *tmp;
if (!isWidecExt(*cell)) {
+ wchar_t *wch;
+ int n2;
+
n2 = getcchar(cell, 0, 0, 0, 0);
if (n2 > 0
&& (wch = typeCalloc(wchar_t, (unsigned) n2 + 1)) != 0) {
+ bool done = FALSE;
+
if (getcchar(cell, wch, &attrs, &pair, 0) == OK) {
+ size_t n3;
init_mb(state);
n3 = wcstombs(0, wch, (size_t) 0);
@@ -89,6 +92,8 @@ winnstr(WINDOW *win, char *str, int n)
} else if ((tmp = typeCalloc(char, need)) == 0) {
done = TRUE;
} else {
+ size_t i3;
+
init_mb(state);
wcstombs(tmp, wch, n3);
for (i3 = 0; i3 < n3; ++i3)
@@ -103,14 +108,14 @@ winnstr(WINDOW *win, char *str, int n)
}
}
#else
- str[i++] = (char) CharOf(win->_line[row].text[col]);
+ str[i++] = (char) CharOf(text[col]);
#endif
if (++col > win->_maxx) {
break;
}
}
+ str[i] = '\0'; /* SVr4 does not seem to count the null */
}
- str[i] = '\0'; /* SVr4 does not seem to count the null */
T(("winnstr returns %s", _nc_visbuf(str)));
returnCode(i);
}
diff --git a/ncurses/base/lib_isendwin.c b/ncurses/base/lib_isendwin.c
index 923e35bf122f..d8507fa35cfa 100644
--- a/ncurses/base/lib_isendwin.c
+++ b/ncurses/base/lib_isendwin.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2000,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,14 +42,14 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_isendwin.c,v 1.7 2009/02/15 00:36:24 tom Exp $")
+MODULE_ID("$Id: lib_isendwin.c,v 1.8 2017/07/22 23:29:49 tom Exp $")
NCURSES_EXPORT(bool)
NCURSES_SP_NAME(isendwin) (NCURSES_SP_DCL0)
{
if (SP_PARM == NULL)
return FALSE;
- return SP_PARM->_endwin;
+ return (SP_PARM->_endwin == ewSuspend);
}
#if NCURSES_SP_FUNCS
diff --git a/ncurses/base/lib_mouse.c b/ncurses/base/lib_mouse.c
index b0e0f613ebc3..34723f08941a 100644
--- a/ncurses/base/lib_mouse.c
+++ b/ncurses/base/lib_mouse.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -84,7 +84,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_mouse.c,v 1.141 2013/09/21 19:09:19 tom Exp $")
+MODULE_ID("$Id: lib_mouse.c,v 1.183 2019/08/10 17:11:50 tom Exp $")
#include <tic.h>
@@ -225,7 +225,7 @@ write_event(SCREEN *sp, int down, int button, int x, int y)
char buf[6];
unsigned long ignore;
- strcpy(buf, "\033[M"); /* should be the same as key_mouse */
+ _nc_STRCPY(buf, "\033[M", sizeof(buf)); /* should be the same as key_mouse */
buf[3] = ' ' + (button - 1) + (down ? 0 : 0x40);
buf[4] = ' ' + x - LEFT_COL + 1;
buf[5] = ' ' + y - TOP_ROW + 1;
@@ -376,9 +376,46 @@ static void
init_xterm_mouse(SCREEN *sp)
{
sp->_mouse_type = M_XTERM;
+ sp->_mouse_format = MF_X10;
sp->_mouse_xtermcap = tigetstr("XM");
- if (!VALID_STRING(sp->_mouse_xtermcap))
+ if (VALID_STRING(sp->_mouse_xtermcap)) {
+ char *code = strstr(sp->_mouse_xtermcap, "[?");
+ if (code != 0) {
+ code += 2;
+ while ((*code >= '0') && (*code <= '9')) {
+ char *next = code;
+ while ((*next >= '0') && (*next <= '9')) {
+ ++next;
+ }
+ if (!strncmp(code, "1006", (size_t) (next - code))) {
+ sp->_mouse_format = MF_SGR1006;
+ }
+#ifdef EXP_XTERM_1005
+ if (!strncmp(code, "1005", (size_t) (next - code))) {
+ sp->_mouse_format = MF_XTERM_1005;
+ }
+#endif
+ if (*next == ';') {
+ while (*next == ';') {
+ ++next;
+ }
+ code = next;
+ } else {
+ break;
+ }
+ }
+ }
+ } else {
+ int code = tigetnum("XM");
+ switch (code) {
+ case 1006:
+ break;
+ default:
+ code = 1000;
+ break;
+ }
sp->_mouse_xtermcap = "\033[?1000%?%p1%{1}%=%th%el%;";
+ }
}
#endif
@@ -395,22 +432,22 @@ enable_xterm_mouse(SCREEN *sp, int enable)
#if USE_GPM_SUPPORT
static bool
-allow_gpm_mouse(SCREEN *sp)
+allow_gpm_mouse(SCREEN *sp GCC_UNUSED)
{
bool result = FALSE;
#if USE_WEAK_SYMBOLS
/* Danger Robinson: do not use dlopen for libgpm if already loaded */
- if ((Gpm_Wgetch)) {
+ if ((Gpm_Wgetch) != 0) {
if (!sp->_mouse_gpm_loaded) {
T(("GPM library was already dlopen'd, not by us"));
}
} else
#endif
/* GPM does printf's without checking if stdout is a terminal */
- if (isatty(fileno(stdout))) {
- char *list = getenv("NCURSES_GPM_TERMS");
- char *env = getenv("TERM");
+ if (NC_ISATTY(fileno(stdout))) {
+ const char *list = getenv("NCURSES_GPM_TERMS");
+ const char *env = getenv("TERM");
if (list != 0) {
if (env != 0) {
result = _nc_name_match(list, env, "|:");
@@ -449,10 +486,17 @@ load_gpm_library(SCREEN *sp)
{
sp->_mouse_gpm_found = FALSE;
if ((sp->_dlopen_gpm = dlopen(LIBGPM_SONAME, my_RTLD)) != 0) {
+#if (defined(__GNUC__) && (__GNUC__ >= 5)) || defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic"
+#endif
if (GET_DLSYM(gpm_fd) == 0 ||
GET_DLSYM(Gpm_Open) == 0 ||
GET_DLSYM(Gpm_Close) == 0 ||
GET_DLSYM(Gpm_GetEvent) == 0) {
+#if (defined(__GNUC__) && (__GNUC__ >= 5)) || defined(__clang__)
+#pragma GCC diagnostic pop
+#endif
T(("GPM initialization failed: %s", dlerror()));
unload_gpm_library(sp);
} else {
@@ -560,8 +604,8 @@ initialize_mousetype(SCREEN *sp)
/* OS/2 VIO */
#if USE_EMX_MOUSE
if (!sp->_emxmouse_thread
- && strstr(TerminalOf(sp)->type.term_names, "xterm") == 0
- && key_mouse) {
+ && strstr(SP_TERMTYPE term_names, "xterm") == 0
+ && NonEmpty(key_mouse)) {
int handles[2];
if (pipe(handles) < 0) {
@@ -571,7 +615,7 @@ initialize_mousetype(SCREEN *sp)
int rc;
if (!sp->_emxmouse_buttons[0]) {
- char *s = getenv("MOUSE_BUTTONS_123");
+ const char *s = getenv("MOUSE_BUTTONS_123");
sp->_emxmouse_buttons[0] = 1;
if (s && strlen(s) >= 3) {
@@ -604,13 +648,14 @@ initialize_mousetype(SCREEN *sp)
#if USE_SYSMOUSE
{
+ static char dev_tty[] = "/dev/tty";
struct mouse_info the_mouse;
char *the_device = 0;
- if (isatty(sp->_ifd))
+ if (NC_ISATTY(sp->_ifd))
the_device = ttyname(sp->_ifd);
if (the_device == 0)
- the_device = "/dev/tty";
+ the_device = dev_tty;
sp->_mouse_fd = open(the_device, O_RDWR);
@@ -668,15 +713,12 @@ initialize_mousetype(SCREEN *sp)
#endif /* USE_SYSMOUSE */
#ifdef USE_TERM_DRIVER
- CallDriver(sp, initmouse);
+ CallDriver(sp, td_initmouse);
#else
/* we know how to recognize mouse events under "xterm" */
- if (key_mouse != 0) {
- if (!strcmp(key_mouse, xterm_kmous)
- || strstr(TerminalOf(sp)->type.term_names, "xterm") != 0) {
- init_xterm_mouse(sp);
- }
- } else if (strstr(TerminalOf(sp)->type.term_names, "xterm") != 0) {
+ if (NonEmpty(key_mouse)) {
+ init_xterm_mouse(sp);
+ } else if (strstr(SP_TERMTYPE term_names, "xterm") != 0) {
if (_nc_add_to_try(&(sp->_keytry), xterm_kmous, KEY_MOUSE) == OK)
init_xterm_mouse(sp);
}
@@ -690,10 +732,11 @@ _nc_mouse_init(SCREEN *sp)
/* initialize the mouse */
{
bool result = FALSE;
- int i;
if (sp != 0) {
if (!sp->_mouse_initialized) {
+ int i;
+
sp->_mouse_initialized = TRUE;
TR(MY_TRACE, ("_nc_mouse_init() called"));
@@ -846,173 +889,431 @@ _nc_mouse_event(SCREEN *sp)
return result; /* true if we found an event */
}
+#if USE_EMX_MOUSE
+#define PRESS_POSITION(n) \
+ do { \
+ eventp->bstate = MASK_PRESS(n); \
+ sp->_mouse_bstate |= MASK_PRESS(n); \
+ if (button & 0x40) { \
+ eventp->bstate = MASK_RELEASE(n); \
+ sp->_mouse_bstate &= ~MASK_PRESS(n); \
+ } \
+ } while (0)
+#else
+#define PRESS_POSITION(n) \
+ do { \
+ eventp->bstate = (mmask_t) ((sp->_mouse_bstate & MASK_PRESS(n)) \
+ ? REPORT_MOUSE_POSITION \
+ : MASK_PRESS(n)); \
+ sp->_mouse_bstate |= MASK_PRESS(n); \
+ } while (0)
+#endif
+
static bool
-_nc_mouse_inline(SCREEN *sp)
-/* mouse report received in the keyboard stream -- parse its info */
+handle_wheel(SCREEN *sp, MEVENT * eventp, int button, int wheel)
{
- int b;
- bool result = FALSE;
- MEVENT *eventp = sp->_mouse_eventp;
+ bool result = TRUE;
+
+ switch (button & 3) {
+ case 0:
+ if (wheel) {
+ eventp->bstate = MASK_PRESS(4);
+ /* Do not record in sp->_mouse_bstate; there will be no
+ * corresponding release event.
+ */
+ } else {
+ PRESS_POSITION(1);
+ }
+ break;
+ case 1:
+ if (wheel) {
+#if NCURSES_MOUSE_VERSION == 2
+ eventp->bstate = MASK_PRESS(5);
+ /* See comment above for button 4 */
+#else
+ /* Ignore this event as it is not a true press of the button */
+ eventp->bstate = REPORT_MOUSE_POSITION;
+#endif
+ } else {
+ PRESS_POSITION(2);
+ }
+ break;
+ case 2:
+ PRESS_POSITION(3);
+ break;
+ default:
+ result = FALSE;
+ break;
+ }
+ return result;
+}
- TR(MY_TRACE, ("_nc_mouse_inline() called"));
+static bool
+decode_X10_bstate(SCREEN *sp, MEVENT * eventp, unsigned intro)
+{
+ bool result;
- if (sp->_mouse_type == M_XTERM) {
- unsigned char kbuf[4];
- size_t grabbed;
- int res;
+ eventp->bstate = 0;
+
+ if (!handle_wheel(sp, eventp, (int) intro, (intro & 96) == 96)) {
- /* This code requires that your xterm entry contain the kmous
- * capability and that it be set to the \E[M documented in the
- * Xterm Control Sequences reference. This is how we
- * arrange for mouse events to be reported via a KEY_MOUSE
- * return value from wgetch(). After this value is received,
- * _nc_mouse_inline() gets called and is immediately
- * responsible for parsing the mouse status information
- * following the prefix.
- *
- * The following quotes from the ctrlseqs.ms document in the
- * X distribution, describing the X mouse tracking feature:
- *
- * Parameters for all mouse tracking escape sequences
- * generated by xterm encode numeric parameters in a single
- * character as value+040. For example, ! is 1.
- *
- * On button press or release, xterm sends ESC [ M CbCxCy.
- * The low two bits of Cb encode button information: 0=MB1
- * pressed, 1=MB2 pressed, 2=MB3 pressed, 3=release. The
- * upper bits encode what modifiers were down when the
- * button was pressed and are added together. 4=Shift,
- * 8=Meta, 16=Control. Cx and Cy are the x and y coordinates
- * of the mouse event. The upper left corner is (1,1).
- *
- * (End quote) By the time we get here, we've eaten the
- * key prefix. FYI, the loop below is necessary because
- * mouse click info isn't guaranteed to present as a
- * single clist item.
- *
- * Wheel mice may return buttons 4 and 5 when the wheel is turned.
- * We encode those as button presses.
+ /*
+ * Release events aren't reported for individual buttons, just for
+ * the button set as a whole. However, because there are normally
+ * no mouse events under xterm that intervene between press and
+ * release, we can infer the button actually released by looking at
+ * the previous event.
*/
+ if (sp->_mouse_bstate & BUTTON_PRESSED) {
+ int b;
+
+ eventp->bstate = BUTTON_RELEASED;
+ for (b = 1; b <= MAX_BUTTONS; ++b) {
+ if (!(sp->_mouse_bstate & MASK_PRESS(b)))
+ eventp->bstate &= ~MASK_RELEASE(b);
+ }
+ sp->_mouse_bstate = 0;
+ } else {
+ /*
+ * xterm will return a stream of release-events to let the
+ * application know where the mouse is going, if private mode
+ * 1002 or 1003 is enabled.
+ */
+ eventp->bstate = REPORT_MOUSE_POSITION;
+ }
+ }
+
+ if (intro & 4) {
+ eventp->bstate |= BUTTON_SHIFT;
+ }
+ if (intro & 8) {
+ eventp->bstate |= BUTTON_ALT;
+ }
+ if (intro & 16) {
+ eventp->bstate |= BUTTON_CTRL;
+ }
+ result = (eventp->bstate & REPORT_MOUSE_POSITION) ? TRUE : FALSE;
+ return result;
+}
+
+/* This code requires that your xterm entry contain the kmous capability and
+ * that it be set to the \E[M documented in the Xterm Control Sequences
+ * reference. This is how we arrange for mouse events to be reported via a
+ * KEY_MOUSE return value from wgetch(). After this value is received,
+ * _nc_mouse_inline() gets called and is immediately responsible for parsing
+ * the mouse status information following the prefix.
+ *
+ * The following quotes from the ctlseqs.ms document in the XTerm distribution,
+ * describing the mouse tracking feature:
+ *
+ * Parameters for all mouse tracking escape sequences generated by xterm encode
+ * numeric parameters in a single character as value+040. For example, ! is
+ * 1.
+ *
+ * On button press or release, xterm sends ESC [ M CbCxCy. The low two bits of
+ * Cb encode button information: 0=MB1 pressed, 1=MB2 pressed, 2=MB3 pressed,
+ * 3=release. The upper bits encode what modifiers were down when the button
+ * was pressed and are added together. 4=Shift, 8=Meta, 16=Control. Cx and Cy
+ * are the x and y coordinates of the mouse event. The upper left corner is
+ * (1,1).
+ *
+ * (End quote) By the time we get here, we've eaten the key prefix. FYI, the
+ * loop below is necessary because mouse click info isn't guaranteed to present
+ * as a single clist item.
+ *
+ * Wheel mice may return buttons 4 and 5 when the wheel is turned. We encode
+ * those as button presses.
+ */
+static bool
+decode_xterm_X10(SCREEN *sp, MEVENT * eventp)
+{
+#define MAX_KBUF 3
+ unsigned char kbuf[MAX_KBUF + 1];
+ size_t grabbed;
+ int res;
+ bool result;
+
# if USE_PTHREADS_EINTR
# if USE_WEAK_SYMBOLS
- if ((pthread_self) && (pthread_kill) && (pthread_equal))
+ if ((pthread_self) && (pthread_kill) && (pthread_equal))
# endif
- _nc_globals.read_thread = pthread_self();
+ _nc_globals.read_thread = pthread_self();
# endif
- for (grabbed = 0; grabbed < 3; grabbed += (size_t) res) {
+ for (grabbed = 0; grabbed < MAX_KBUF; grabbed += (size_t) 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. */
+ res = (int) read(
#if USE_EMX_MOUSE
- res = (int) read(M_FD(sp) >= 0 ? M_FD(sp) : sp->_ifd, &kbuf, 3);
+ (M_FD(sp) >= 0) ? M_FD(sp) : sp->_ifd,
#else
- res = (int) read(sp->_ifd, kbuf + grabbed, 3 - grabbed);
+ sp->_ifd,
#endif
- if (res == -1)
- break;
- }
+ kbuf + grabbed, (size_t) (MAX_KBUF - (int) grabbed));
+ if (res == -1)
+ break;
+ }
#if USE_PTHREADS_EINTR
- _nc_globals.read_thread = 0;
+ _nc_globals.read_thread = 0;
#endif
- kbuf[3] = '\0';
+ kbuf[MAX_KBUF] = '\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));
- /* there's only one mouse... */
- eventp->id = NORMAL_EVENT;
+ /* there's only one mouse... */
+ eventp->id = NORMAL_EVENT;
- /* processing code goes here */
- eventp->bstate = 0;
+ result = decode_X10_bstate(sp, eventp, kbuf[0]);
+ eventp->x = (kbuf[1] - ' ') - 1;
+ eventp->y = (kbuf[2] - ' ') - 1;
+
+ return result;
+}
+
+#ifdef EXP_XTERM_1005
+/*
+ * This is identical to X10/X11 responses except that there are two UTF-8
+ * characters storing the ordinates instead of two bytes.
+ */
+static bool
+decode_xterm_1005(SCREEN *sp, MEVENT * eventp)
+{
+ char kbuf[80];
+ size_t grabbed;
+ size_t limit = (sizeof(kbuf) - 1);
+ unsigned coords[2];
+ bool result;
+
+ coords[0] = 0;
+ coords[1] = 0;
+
+# if USE_PTHREADS_EINTR
+# if USE_WEAK_SYMBOLS
+ if ((pthread_self) && (pthread_kill) && (pthread_equal))
+# endif
+ _nc_globals.read_thread = pthread_self();
+# endif
+ for (grabbed = 0; grabbed < limit;) {
+ int res;
+
+ res = (int) read(
#if USE_EMX_MOUSE
-#define PRESS_POSITION(n) \
- do { \
- eventp->bstate = MASK_PRESS(n); \
- sp->_mouse_bstate |= MASK_PRESS(n); \
- if (kbuf[0] & 0x40) { \
- eventp->bstate = MASK_RELEASE(n); \
- sp->_mouse_bstate &= ~MASK_PRESS(n); \
- } \
- } while (0)
+ (M_FD(sp) >= 0) ? M_FD(sp) : sp->_ifd,
#else
-#define PRESS_POSITION(n) \
- do { \
- eventp->bstate = (mmask_t) (sp->_mouse_bstate & MASK_PRESS(n) \
- ? REPORT_MOUSE_POSITION \
- : MASK_PRESS(n)); \
- sp->_mouse_bstate |= MASK_PRESS(n); \
- } while (0)
+ sp->_ifd,
#endif
+ (kbuf + grabbed), (size_t) 1);
+ if (res == -1)
+ break;
+ grabbed += (size_t) res;
+ if (grabbed > 1) {
+ size_t check = 1;
+ int n;
- switch (kbuf[0] & 0x3) {
- case 0x0:
- if ((kbuf[0] & 96) == 96) {
- eventp->bstate = MASK_PRESS(4);
- /* Do not record in sp->_mouse_bstate; there will be no
- * corresponding release event.
- */
- } else {
- PRESS_POSITION(1);
+ for (n = 0; n < 2; ++n) {
+ int rc;
+
+ if (check >= grabbed)
+ break;
+ rc = _nc_conv_to_utf32(&coords[n], kbuf + check, (unsigned)
+ (grabbed - check));
+ if (!rc)
+ break;
+ check += (size_t) rc;
}
- break;
+ if (n >= 2)
+ break;
+ }
+ }
+#if USE_PTHREADS_EINTR
+ _nc_globals.read_thread = 0;
+#endif
- case 0x1:
- if ((kbuf[0] & 96) == 96) {
-#if NCURSES_MOUSE_VERSION == 2
- eventp->bstate = MASK_PRESS(5);
- /* See comment above for button 4 */
+ TR(TRACE_IEVENT,
+ ("_nc_mouse_inline sees the following xterm data: %s",
+ _nc_visbufn(kbuf, (int) grabbed)));
+
+ /* there's only one mouse... */
+ eventp->id = NORMAL_EVENT;
+
+ result = decode_X10_bstate(sp, eventp, UChar(kbuf[0]));
+
+ eventp->x = (int) (coords[0] - ' ') - 1;
+ eventp->y = (int) (coords[1] - ' ') - 1;
+
+ return result;
+}
+#endif /* EXP_XTERM_1005 */
+
+/*
+ * ECMA-48 section 5.4
+ */
+#define isInter(c) ((c) >= 0x20 && (c) <= 0x2f)
+#define isParam(c) ((c) >= 0x30 && (c) <= 0x3f)
+#define isFinal(c) ((c) >= 0x40 && (c) <= 0x7e)
+
+#define MAX_PARAMS 9
+
+typedef struct {
+ int nerror; /* nonzero if there are unexpected chars */
+ int nparam; /* number of numeric parameters */
+ int params[MAX_PARAMS];
+ int final; /* the final-character */
+} SGR_DATA;
+
+static bool
+read_SGR(SCREEN *sp, SGR_DATA * result)
+{
+ char kbuf[80]; /* bigger than any possible mouse response */
+ int grabbed = 0;
+ int ch = 0;
+ int now = -1;
+ int marker = 1;
+
+ memset(result, 0, sizeof(*result));
+# if USE_PTHREADS_EINTR
+# if USE_WEAK_SYMBOLS
+ if ((pthread_self) && (pthread_kill) && (pthread_equal))
+# endif
+ _nc_globals.read_thread = pthread_self();
+# endif
+
+ do {
+ int res;
+
+ res = (int) read(
+#if USE_EMX_MOUSE
+ (M_FD(sp) >= 0) ? M_FD(sp) : sp->_ifd,
#else
- /* Ignore this event as it is not a true press of the button */
- eventp->bstate = REPORT_MOUSE_POSITION;
+ sp->_ifd,
#endif
- } else {
- PRESS_POSITION(2);
+ (kbuf + grabbed), (size_t) 1);
+ if (res == -1)
+ break;
+ if ((grabbed + MAX_KBUF) >= (int) sizeof(kbuf)) {
+ result->nerror++;
+ break;
+ }
+ ch = UChar(kbuf[grabbed]);
+ kbuf[grabbed + 1] = 0;
+ switch (ch) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ if (marker) {
+ ++now;
+ result->nparam = (now + 1);
}
+ marker = 0;
+ result->params[now] = (result->params[now] * 10) + (ch - '0');
break;
-
- case 0x2:
- PRESS_POSITION(3);
+ case ';':
+ if (marker) {
+ ++now;
+ result->nparam = (now + 1);
+ }
+ marker = 1;
break;
-
- case 0x3:
- /*
- * Release events aren't reported for individual buttons, just for
- * the button set as a whole. However, because there are normally
- * no mouse events under xterm that intervene between press and
- * release, we can infer the button actually released by looking at
- * the previous event.
- */
- if (sp->_mouse_bstate & BUTTON_PRESSED) {
- eventp->bstate = BUTTON_RELEASED;
- for (b = 1; b <= MAX_BUTTONS; ++b) {
- if (!(sp->_mouse_bstate & MASK_PRESS(b)))
- eventp->bstate &= ~MASK_RELEASE(b);
- }
- sp->_mouse_bstate = 0;
- } else {
+ default:
+ if (ch < 32 || ch > 126) {
/*
- * XFree86 xterm will return a stream of release-events to
- * let the application know where the mouse is going, if the
- * private mode 1002 or 1003 is enabled.
+ * Technically other characters could be interspersed in the
+ * response. Ignore those for now.
*/
- eventp->bstate = REPORT_MOUSE_POSITION;
+ result->nerror++;
+ continue;
+ } else if (isFinal(ch)) {
+ if (marker) {
+ result->nparam++;
+ }
+ result->final = ch;
+ } else {
+ result->nerror++;
}
break;
}
- result = (eventp->bstate & REPORT_MOUSE_POSITION) ? TRUE : FALSE;
+ ++grabbed;
+ } while (!isFinal(ch));
+#if USE_PTHREADS_EINTR
+ _nc_globals.read_thread = 0;
+#endif
- if (kbuf[0] & 4) {
+ kbuf[++grabbed] = 0;
+ TR(TRACE_IEVENT,
+ ("_nc_mouse_inline sees the following xterm data: '%s'", kbuf));
+ return (grabbed > 0) && (result->nerror == 0);
+}
+
+static bool
+decode_xterm_SGR1006(SCREEN *sp, MEVENT * eventp)
+{
+ SGR_DATA data;
+ bool result = FALSE;
+ if (read_SGR(sp, &data)) {
+ int b = data.params[0];
+ int b3 = 1 + (b & 3);
+
+ eventp->id = NORMAL_EVENT;
+ if (data.final == 'M') {
+ (void) handle_wheel(sp, eventp, b, (b & 64) == 64);
+ } else {
+ mmask_t pressed = (mmask_t) NCURSES_MOUSE_MASK(b3, NCURSES_BUTTON_PRESSED);
+ mmask_t release = (mmask_t) NCURSES_MOUSE_MASK(b3, NCURSES_BUTTON_RELEASED);
+ if (sp->_mouse_bstate & pressed) {
+ eventp->bstate = release;
+ sp->_mouse_bstate &= ~pressed;
+ } else {
+ eventp->bstate = REPORT_MOUSE_POSITION;
+ }
+ }
+ if (b & 4) {
eventp->bstate |= BUTTON_SHIFT;
}
- if (kbuf[0] & 8) {
+ if (b & 8) {
eventp->bstate |= BUTTON_ALT;
}
- if (kbuf[0] & 16) {
+ if (b & 16) {
eventp->bstate |= BUTTON_CTRL;
}
+ result = (eventp->bstate & REPORT_MOUSE_POSITION) ? TRUE : FALSE;
+ eventp->x = (data.params[1] ? (data.params[1] - 1) : 0);
+ eventp->y = (data.params[2] ? (data.params[2] - 1) : 0);
+ }
+ return result;
+}
+
+static bool
+_nc_mouse_inline(SCREEN *sp)
+/* mouse report received in the keyboard stream -- parse its info */
+{
+ bool result = FALSE;
+ MEVENT *eventp = sp->_mouse_eventp;
+
+ TR(MY_TRACE, ("_nc_mouse_inline() called"));
+
+ if (sp->_mouse_type == M_XTERM) {
+ switch (sp->_mouse_format) {
+ case MF_X10:
+ result = decode_xterm_X10(sp, eventp);
+ break;
+ case MF_SGR1006:
+ result = decode_xterm_SGR1006(sp, eventp);
+ break;
+#ifdef EXP_XTERM_1005
+ case MF_XTERM_1005:
+ result = decode_xterm_1005(sp, eventp);
+ break;
+#endif
+ }
- eventp->x = (kbuf[1] - ' ') - 1;
- eventp->y = (kbuf[2] - ' ') - 1;
TR(MY_TRACE,
("_nc_mouse_inline: primitive mouse-event %s has slot %ld",
_nc_tracemouse(sp, eventp),
@@ -1020,9 +1321,23 @@ _nc_mouse_inline(SCREEN *sp)
/* bump the next-free pointer into the circular list */
sp->_mouse_eventp = NEXT(eventp);
-#if 0 /* this return would be needed for QNX's mods to lib_getch.c */
- return (TRUE);
-#endif
+
+ if (!result) {
+ /* If this event is from a wheel-mouse, treat it like position
+ * reports and avoid waiting for the release-events which will
+ * never come.
+ */
+ if (eventp->bstate & BUTTON_PRESSED) {
+ int b;
+
+ for (b = 4; b <= MAX_BUTTONS; ++b) {
+ if ((eventp->bstate & MASK_PRESS(b))) {
+ result = TRUE;
+ break;
+ }
+ }
+ }
+ }
}
return (result);
@@ -1445,11 +1760,14 @@ NCURSES_EXPORT(int)
NCURSES_SP_NAME(getmouse) (NCURSES_SP_DCLx MEVENT * aevent)
{
int result = ERR;
+ MEVENT *eventp;
T((T_CALLED("getmouse(%p,%p)"), (void *) SP_PARM, (void *) aevent));
- if ((aevent != 0) && (SP_PARM != 0) && (SP_PARM->_mouse_type != M_NONE)) {
- MEVENT *eventp = SP_PARM->_mouse_eventp;
+ if ((aevent != 0) &&
+ (SP_PARM != 0) &&
+ (SP_PARM->_mouse_type != M_NONE) &&
+ (eventp = SP_PARM->_mouse_eventp) != 0) {
/* compute the current-event pointer */
MEVENT *prev = PREV(eventp);
@@ -1498,11 +1816,13 @@ NCURSES_EXPORT(int)
NCURSES_SP_NAME(ungetmouse) (NCURSES_SP_DCLx MEVENT * aevent)
{
int result = ERR;
+ MEVENT *eventp;
T((T_CALLED("ungetmouse(%p,%p)"), (void *) SP_PARM, (void *) aevent));
- if (aevent != 0 && SP_PARM != 0) {
- MEVENT *eventp = SP_PARM->_mouse_eventp;
+ if (aevent != 0 &&
+ SP_PARM != 0 &&
+ (eventp = SP_PARM->_mouse_eventp) != 0) {
/* stick the given event in the next-free slot */
*eventp = *aevent;
@@ -1530,7 +1850,6 @@ NCURSES_SP_NAME(mousemask) (NCURSES_SP_DCLx mmask_t newmask, mmask_t * oldmask)
/* set the mouse event mask */
{
mmask_t result = 0;
- int b;
T((T_CALLED("mousemask(%p,%#lx,%p)"),
(void *) SP_PARM,
@@ -1543,7 +1862,10 @@ NCURSES_SP_NAME(mousemask) (NCURSES_SP_DCLx mmask_t newmask, mmask_t * oldmask)
if (newmask || SP_PARM->_mouse_initialized) {
_nc_mouse_init(SP_PARM);
+
if (SP_PARM->_mouse_type != M_NONE) {
+ int b;
+
result = newmask &
(REPORT_MOUSE_POSITION
| BUTTON_ALT
diff --git a/ncurses/base/lib_newterm.c b/ncurses/base/lib_newterm.c
index 435763d096ea..84963db46f2c 100644
--- a/ncurses/base/lib_newterm.c
+++ b/ncurses/base/lib_newterm.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -48,7 +48,7 @@
#include <tic.h>
-MODULE_ID("$Id: lib_newterm.c,v 1.90 2013/09/28 21:02:56 tom Exp $")
+MODULE_ID("$Id: lib_newterm.c,v 1.101 2018/04/07 20:36:22 tom Exp $")
#ifdef USE_TERM_DRIVER
#define NumLabels InfoOf(SP_PARM).numlabels
@@ -76,6 +76,7 @@ _nc_initscr(NCURSES_SP_DCL0)
/* for extended XPG4 conformance requires cbreak() at this point */
/* (SVr4 curses does this anyway) */
+ T((T_CALLED("_nc_initscr(%p) ->term %p"), (void *) SP_PARM, (void *) term));
if (NCURSES_SP_NAME(cbreak) (NCURSES_SP_ARG) == OK) {
TTY buf;
@@ -93,7 +94,7 @@ _nc_initscr(NCURSES_SP_DCL0)
if (result == OK)
term->Nttyb = buf;
}
- return result;
+ returnCode(result);
}
/*
@@ -162,20 +163,16 @@ nofilter(void)
NCURSES_EXPORT(SCREEN *)
NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
- NCURSES_CONST char *name,
+ const char *name,
FILE *ofp,
FILE *ifp)
{
- int value;
int errret;
SCREEN *result = 0;
SCREEN *current;
TERMINAL *its_term;
FILE *_ofp = ofp ? ofp : stdout;
FILE *_ifp = ifp ? ifp : stdin;
- int cols;
- int slk_format;
- int filter_mode;
TERMINAL *new_term = 0;
START_TRACE();
@@ -200,11 +197,10 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
INIT_TERM_DRIVER();
/* this loads the capability entry, then sets LINES and COLS */
if (
-#if NCURSES_SP_FUNCS
- SP_PARM->_prescreen &&
-#endif
TINFO_SETUP_TERM(&new_term, name,
fileno(_ofp), &errret, FALSE) != ERR) {
+ int slk_format;
+ int filter_mode;
_nc_set_screen(0);
#ifdef USE_TERM_DRIVER
@@ -235,6 +231,9 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
_nc_set_screen(current);
result = 0;
} else {
+ int value;
+ int cols;
+
#ifdef USE_TERM_DRIVER
TERMINAL_CONTROL_BLOCK *TCB;
#elif !NCURSES_SP_FUNCS
@@ -268,7 +267,11 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
/* allow user to set maximum escape delay from the environment */
if ((value = _nc_getenv_num("ESCDELAY")) >= 0) {
+#if NCURSES_EXT_FUNCS
NCURSES_SP_NAME(set_escdelay) (NCURSES_SP_ARGx value);
+#else
+ ESCDELAY = value;
+#endif
}
/* if the terminal type has real soft labels, set those up */
@@ -284,7 +287,7 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
#else
SP_PARM->_use_meta = FALSE;
#endif
- SP_PARM->_endwin = FALSE;
+ SP_PARM->_endwin = ewInitial;
#ifndef USE_TERM_DRIVER
/*
* Check whether we can optimize scrolling under dumb terminals in
@@ -306,7 +309,7 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
/* compute movement costs so we can do better move optimization */
#ifdef USE_TERM_DRIVER
- TCBOf(SP_PARM)->drv->scinit(SP_PARM);
+ TCBOf(SP_PARM)->drv->td_scinit(SP_PARM);
#else /* ! USE_TERM_DRIVER */
/*
* Check for mismatched graphic-rendition capabilities. Most SVr4
@@ -344,8 +347,14 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(SCREEN *)
-newterm(NCURSES_CONST char *name, FILE *ofp, FILE *ifp)
+newterm(const char *name, FILE *ofp, FILE *ifp)
{
- return NCURSES_SP_NAME(newterm) (CURRENT_SCREEN_PRE, name, ofp, ifp);
+ SCREEN *rc;
+ _nc_lock_global(prescreen);
+ START_TRACE();
+ rc = NCURSES_SP_NAME(newterm) (CURRENT_SCREEN_PRE, name, ofp, ifp);
+ _nc_forget_prescr();
+ _nc_unlock_global(prescreen);
+ return rc;
}
#endif
diff --git a/ncurses/base/lib_newwin.c b/ncurses/base/lib_newwin.c
index a6c64beaaf4a..5d48107a3003 100644
--- a/ncurses/base/lib_newwin.c
+++ b/ncurses/base/lib_newwin.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,7 +43,7 @@
#include <curses.priv.h>
#include <stddef.h>
-MODULE_ID("$Id: lib_newwin.c,v 1.71 2011/05/28 21:32:51 tom Exp $")
+MODULE_ID("$Id: lib_newwin.c,v 1.74 2017/05/13 23:17:29 tom Exp $")
#define window_is(name) ((sp)->_##name == win)
@@ -91,8 +91,6 @@ remove_window_from_screen(WINDOW *win)
NCURSES_EXPORT(int)
_nc_freewin(WINDOW *win)
{
- WINDOWLIST *p, *q;
- int i;
int result = ERR;
#ifdef USE_SP_WINDOWLIST
SCREEN *sp = _nc_screen_of(win); /* pretend this is parameter */
@@ -101,17 +99,23 @@ _nc_freewin(WINDOW *win)
T((T_CALLED("_nc_freewin(%p)"), (void *) win));
if (win != 0) {
+
if (_nc_nonsp_try_global(curses) == 0) {
+ WINDOWLIST *p, *q;
+
q = 0;
- for (each_window(SP_PARM, p)) {
+ for (each_window(sp, p)) {
+
if (&(p->win) == win) {
remove_window_from_screen(win);
if (q == 0)
- WindowList(SP_PARM) = p->next;
+ WindowList(sp) = p->next;
else
q->next = p->next;
if (!(win->_flags & _SUBWIN)) {
+ int i;
+
for (i = 0; i <= win->_maxy; i++)
FreeIfNeeded(win->_line[i].text);
}
@@ -384,18 +388,18 @@ NCURSES_SP_NAME(_nc_makenew) (NCURSES_SP_DCLx
NCURSES_EXPORT(WINDOW *)
_nc_curscr_of(SCREEN *sp)
{
- return sp == 0 ? 0 : CurScreen(sp);
+ return (sp == 0) ? NULL : CurScreen(sp);
}
NCURSES_EXPORT(WINDOW *)
_nc_newscr_of(SCREEN *sp)
{
- return sp == 0 ? 0 : NewScreen(sp);
+ return (sp == 0) ? NULL : NewScreen(sp);
}
NCURSES_EXPORT(WINDOW *)
_nc_stdscr_of(SCREEN *sp)
{
- return sp == 0 ? 0 : StdScreen(sp);
+ return (sp == 0) ? NULL : StdScreen(sp);
}
#endif
diff --git a/ncurses/base/lib_overlay.c b/ncurses/base/lib_overlay.c
index a206248a1e74..64356ff1c8c6 100644
--- a/ncurses/base/lib_overlay.c
+++ b/ncurses/base/lib_overlay.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2016 Free 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,21 +40,19 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_overlay.c,v 1.31 2013/04/06 23:47:13 tom Exp $")
+MODULE_ID("$Id: lib_overlay.c,v 1.32 2016/05/28 23:11:26 tom Exp $")
static int
overlap(const WINDOW *const src, WINDOW *const dst, int const flag)
{
int rc = ERR;
- int sx1, sy1, sx2, sy2;
- int dx1, dy1, dx2, dy2;
- int sminrow, smincol;
- int dminrow, dmincol;
- int dmaxrow, dmaxcol;
T((T_CALLED("overlap(%p,%p,%d)"), (const void *) src, (void *) dst, flag));
if (src != 0 && dst != 0) {
+ int sx1, sy1, sx2, sy2;
+ int dx1, dy1, dx2, dy2;
+
_nc_lock_global(curses);
T(("src : begy %ld, begx %ld, maxy %ld, maxx %ld",
@@ -79,12 +77,12 @@ overlap(const WINDOW *const src, WINDOW *const dst, int const flag)
dy2 = dy1 + dst->_maxy;
if (dx2 >= sx1 && dx1 <= sx2 && dy2 >= sy1 && dy1 <= sy2) {
- sminrow = max(sy1, dy1) - sy1;
- smincol = max(sx1, dx1) - sx1;
- dminrow = max(sy1, dy1) - dy1;
- dmincol = max(sx1, dx1) - dx1;
- dmaxrow = min(sy2, dy2) - dy1;
- dmaxcol = min(sx2, dx2) - dx1;
+ int sminrow = max(sy1, dy1) - sy1;
+ int smincol = max(sx1, dx1) - sx1;
+ int dminrow = max(sy1, dy1) - dy1;
+ int dmincol = max(sx1, dx1) - dx1;
+ int dmaxrow = min(sy2, dy2) - dy1;
+ int dmaxcol = min(sx2, dx2) - dx1;
rc = copywin(src, dst,
sminrow, smincol,
@@ -139,10 +137,6 @@ copywin(const WINDOW *src, WINDOW *dst,
int over)
{
int rc = ERR;
- int sx, sy, dx, dy;
- bool touched;
- attr_t bk;
- attr_t mask;
T((T_CALLED("copywin(%p, %p, %d, %d, %d, %d, %d, %d, %d)"),
(const void *) src,
@@ -155,6 +149,9 @@ copywin(const WINDOW *src, WINDOW *dst,
&& dst != 0
&& dmaxrow >= dminrow
&& dmaxcol >= dmincol) {
+ attr_t bk;
+ attr_t mask;
+
_nc_lock_global(curses);
bk = AttrOf(dst->_nc_bkgd);
@@ -163,18 +160,20 @@ copywin(const WINDOW *src, WINDOW *dst,
/* make sure rectangle exists in source */
if ((sminrow + dmaxrow - dminrow) <= (src->_maxy + 1) &&
(smincol + dmaxcol - dmincol) <= (src->_maxx + 1)) {
- bool copied = FALSE;
T(("rectangle exists in source"));
/* make sure rectangle fits in destination */
if (dmaxrow <= dst->_maxy && dmaxcol <= dst->_maxx) {
+ int sx, sy, dx, dy;
+ bool copied = FALSE;
T(("rectangle fits in destination"));
for (dy = dminrow, sy = sminrow;
dy <= dmaxrow;
sy++, dy++) {
+ bool touched;
if (dy < 0 || sy < 0)
continue;
diff --git a/ncurses/base/lib_pad.c b/ncurses/base/lib_pad.c
index b87498b500cd..8c7e5af01c9c 100644
--- a/ncurses/base/lib_pad.c
+++ b/ncurses/base/lib_pad.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_pad.c,v 1.46 2010/04/24 23:50:45 tom Exp $")
+MODULE_ID("$Id: lib_pad.c,v 1.47 2017/10/22 19:57:26 tom Exp $")
NCURSES_EXPORT(WINDOW *)
NCURSES_SP_NAME(newpad) (NCURSES_SP_DCLx int l, int c)
@@ -188,6 +188,12 @@ pnoutrefresh(WINDOW *win,
T(("pad being refreshed"));
+#ifdef TRACE
+ if (USE_TRACEF(TRACE_UPDATE)) {
+ _tracedump("...pad", win);
+ _nc_unlock_global(tracef);
+ }
+#endif /* TRACE */
#if USE_SCROLL_HINTS
if (win->_pad._pad_y >= 0) {
displaced = pminrow - win->_pad._pad_y
diff --git a/ncurses/base/lib_printw.c b/ncurses/base/lib_printw.c
index 56528f6bc7a7..41bd2f98946e 100644
--- a/ncurses/base/lib_printw.c
+++ b/ncurses/base/lib_printw.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,10 +39,10 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_printw.c,v 1.23 2012/09/03 17:55:28 tom Exp $")
+MODULE_ID("$Id: lib_printw.c,v 1.27 2019/01/19 15:46:25 tom Exp $")
NCURSES_EXPORT(int)
-printw(const char *fmt,...)
+printw(const char *fmt, ...)
{
va_list argp;
int code;
@@ -56,14 +56,14 @@ printw(const char *fmt,...)
#endif
va_start(argp, fmt);
- code = vwprintw(stdscr, fmt, argp);
+ code = vw_printw(stdscr, fmt, argp);
va_end(argp);
returnCode(code);
}
NCURSES_EXPORT(int)
-wprintw(WINDOW *win, const char *fmt,...)
+wprintw(WINDOW *win, const char *fmt, ...)
{
va_list argp;
int code;
@@ -77,16 +77,15 @@ wprintw(WINDOW *win, const char *fmt,...)
#endif
va_start(argp, fmt);
- code = vwprintw(win, fmt, argp);
+ code = vw_printw(win, fmt, argp);
va_end(argp);
returnCode(code);
}
NCURSES_EXPORT(int)
-mvprintw(int y, int x, const char *fmt,...)
+mvprintw(int y, int x, const char *fmt, ...)
{
- va_list argp;
int code;
#ifdef TRACE
@@ -98,17 +97,18 @@ mvprintw(int y, int x, const char *fmt,...)
#endif
if ((code = move(y, x)) != ERR) {
+ va_list argp;
+
va_start(argp, fmt);
- code = vwprintw(stdscr, fmt, argp);
+ code = vw_printw(stdscr, fmt, argp);
va_end(argp);
}
returnCode(code);
}
NCURSES_EXPORT(int)
-mvwprintw(WINDOW *win, int y, int x, const char *fmt,...)
+mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...)
{
- va_list argp;
int code;
#ifdef TRACE
@@ -120,8 +120,10 @@ mvwprintw(WINDOW *win, int y, int x, const char *fmt,...)
#endif
if ((code = wmove(win, y, x)) != ERR) {
+ va_list argp;
+
va_start(argp, fmt);
- code = vwprintw(win, fmt, argp);
+ code = vw_printw(win, fmt, argp);
va_end(argp);
}
returnCode(code);
@@ -144,3 +146,21 @@ vwprintw(WINDOW *win, const char *fmt, va_list argp)
}
returnCode(code);
}
+
+NCURSES_EXPORT(int)
+vw_printw(WINDOW *win, const char *fmt, va_list argp)
+{
+ char *buf;
+ int code = ERR;
+#if NCURSES_SP_FUNCS
+ SCREEN *sp = _nc_screen_of(win);
+#endif
+
+ T((T_CALLED("vw_printw(%p,%s,va_list)"), (void *) win, _nc_visbuf(fmt)));
+
+ buf = NCURSES_SP_NAME(_nc_printf_string) (NCURSES_SP_ARGx fmt, argp);
+ if (buf != 0) {
+ code = waddstr(win, buf);
+ }
+ returnCode(code);
+}
diff --git a/ncurses/base/lib_restart.c b/ncurses/base/lib_restart.c
index 3a3756e385e8..5bfb0788266d 100644
--- a/ncurses/base/lib_restart.c
+++ b/ncurses/base/lib_restart.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2015 Free 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>
-MODULE_ID("$Id: lib_restart.c,v 1.15 2012/12/08 20:40:06 tom Exp $")
+MODULE_ID("$Id: lib_restart.c,v 1.16 2015/06/27 18:12:15 tom Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(restartterm) (NCURSES_SP_DCLx
@@ -54,6 +54,7 @@ NCURSES_SP_NAME(restartterm) (NCURSES_SP_DCLx
TERMINAL *new_term = 0;
#endif
+ START_TRACE();
T((T_CALLED("restartterm(%p,%s,%d,%p)"),
(void *) SP_PARM,
termp,
@@ -110,6 +111,7 @@ NCURSES_SP_NAME(restartterm) (NCURSES_SP_DCLx
NCURSES_EXPORT(int)
restartterm(NCURSES_CONST char *termp, int filenum, int *errret)
{
+ START_TRACE();
return NCURSES_SP_NAME(restartterm) (CURRENT_SCREEN, termp, filenum, errret);
}
#endif
diff --git a/ncurses/base/lib_scanw.c b/ncurses/base/lib_scanw.c
index 637aa46ece01..26a47d1abf55 100644
--- a/ncurses/base/lib_scanw.c
+++ b/ncurses/base/lib_scanw.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,21 +40,40 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_scanw.c,v 1.13 2011/10/22 16:31:35 tom Exp $")
+MODULE_ID("$Id: lib_scanw.c,v 1.18 2019/01/19 15:46:25 tom Exp $")
NCURSES_EXPORT(int)
-vwscanw(WINDOW *win, NCURSES_CONST char *fmt, va_list argp)
+vwscanw(WINDOW *win, const char *fmt, va_list argp)
{
char buf[BUFSIZ];
+ int code = ERR;
- if (wgetnstr(win, buf, (int) sizeof(buf) - 1) == ERR)
- return (ERR);
+ if (wgetnstr(win, buf, (int) sizeof(buf) - 1) != ERR) {
+ if ((code = vsscanf(buf, fmt, argp)) == EOF) {
+ code = ERR;
+ }
+ }
- return (vsscanf(buf, fmt, argp));
+ return code;
}
NCURSES_EXPORT(int)
-scanw(NCURSES_CONST char *fmt,...)
+vw_scanw(WINDOW *win, const char *fmt, va_list argp)
+{
+ char buf[BUFSIZ];
+ int code = ERR;
+
+ if (wgetnstr(win, buf, (int) sizeof(buf) - 1) != ERR) {
+ if ((code = vsscanf(buf, fmt, argp)) == EOF) {
+ code = ERR;
+ }
+ }
+
+ return code;
+}
+
+NCURSES_EXPORT(int)
+scanw(const char *fmt, ...)
{
int code;
va_list ap;
@@ -62,13 +81,13 @@ scanw(NCURSES_CONST char *fmt,...)
T(("scanw(\"%s\",...) called", fmt));
va_start(ap, fmt);
- code = vwscanw(stdscr, fmt, ap);
+ code = vw_scanw(stdscr, fmt, ap);
va_end(ap);
return (code);
}
NCURSES_EXPORT(int)
-wscanw(WINDOW *win, NCURSES_CONST char *fmt,...)
+wscanw(WINDOW *win, const char *fmt, ...)
{
int code;
va_list ap;
@@ -76,31 +95,31 @@ wscanw(WINDOW *win, NCURSES_CONST char *fmt,...)
T(("wscanw(%p,\"%s\",...) called", (void *) win, fmt));
va_start(ap, fmt);
- code = vwscanw(win, fmt, ap);
+ code = vw_scanw(win, fmt, ap);
va_end(ap);
return (code);
}
NCURSES_EXPORT(int)
-mvscanw(int y, int x, NCURSES_CONST char *fmt,...)
+mvscanw(int y, int x, const char *fmt, ...)
{
int code;
va_list ap;
va_start(ap, fmt);
- code = (move(y, x) == OK) ? vwscanw(stdscr, fmt, ap) : ERR;
+ code = (move(y, x) == OK) ? vw_scanw(stdscr, fmt, ap) : ERR;
va_end(ap);
return (code);
}
NCURSES_EXPORT(int)
-mvwscanw(WINDOW *win, int y, int x, NCURSES_CONST char *fmt,...)
+mvwscanw(WINDOW *win, int y, int x, const char *fmt, ...)
{
int code;
va_list ap;
va_start(ap, fmt);
- code = (wmove(win, y, x) == OK) ? vwscanw(win, fmt, ap) : ERR;
+ code = (wmove(win, y, x) == OK) ? vw_scanw(win, fmt, ap) : ERR;
va_end(ap);
return (code);
}
diff --git a/ncurses/base/lib_screen.c b/ncurses/base/lib_screen.c
index 695ed30e7e10..9e942eaf8494 100644
--- a/ncurses/base/lib_screen.c
+++ b/ncurses/base/lib_screen.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,32 +35,509 @@
#include <curses.priv.h>
+#include <ctype.h>
+
#ifndef CUR
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_screen.c,v 1.41 2011/10/22 15:03:11 tom Exp $")
+MODULE_ID("$Id: lib_screen.c,v 1.96 2019/07/20 20:23:21 tom Exp $")
#define MAX_SIZE 0x3fff /* 16k is big enough for a window or pad */
+#define MARKER '\\'
+#define APPEND '+'
+#define GUTTER '|'
+#define L_CURL '{'
+#define R_CURL '}'
+
+#if USE_STRING_HACKS && HAVE_SNPRINTF
+#define ARG_SLIMIT(name) size_t name,
+#else
+#define ARG_SLIMIT(name) /* nothing */
+#endif
+
+#define CUR_SLIMIT _nc_SLIMIT(limit - (target - base))
+#define TOP_SLIMIT _nc_SLIMIT(sizeof(buffer))
+
+/*
+ * Use 0x888888 as the magic number for new-format files, since it cannot be
+ * mistaken for the _cury/_curx pair of 16-bit numbers which start the old
+ * format. It happens to be unused in the file 5.22 database (2015/03/07).
+ */
+static const char my_magic[] =
+{'\210', '\210', '\210', '\210'};
+
+#if NCURSES_EXT_PUTWIN
+typedef enum {
+ pINT /* int */
+ ,pSHORT /* short */
+ ,pBOOL /* bool */
+ ,pATTR /* attr_t */
+ ,pCHAR /* chtype */
+ ,pSIZE /* NCURSES_SIZE_T */
+#if NCURSES_WIDECHAR
+ ,pCCHAR /* cchar_t */
+#endif
+} PARAM_TYPE;
+
+typedef struct {
+ const char name[11];
+ attr_t attr;
+} SCR_ATTRS;
+
+typedef struct {
+ const char name[17];
+ PARAM_TYPE type;
+ size_t size;
+ size_t offset;
+} SCR_PARAMS;
+
+#define DATA(name) { { #name }, A_##name }
+static const SCR_ATTRS scr_attrs[] =
+{
+ DATA(NORMAL),
+ DATA(STANDOUT),
+ DATA(UNDERLINE),
+ DATA(REVERSE),
+ DATA(BLINK),
+ DATA(DIM),
+ DATA(BOLD),
+ DATA(ALTCHARSET),
+ DATA(INVIS),
+ DATA(PROTECT),
+ DATA(HORIZONTAL),
+ DATA(LEFT),
+ DATA(LOW),
+ DATA(RIGHT),
+ DATA(TOP),
+ DATA(VERTICAL),
+
+#ifdef A_ITALIC
+ DATA(ITALIC),
+#endif
+};
+#undef DATA
+
+#define sizeof2(type,name) sizeof(((type *)0)->name)
+#define DATA(name, type) { { #name }, type, sizeof2(WINDOW, name), offsetof(WINDOW, name) }
+
+static const SCR_PARAMS scr_params[] =
+{
+ DATA(_cury, pSIZE),
+ DATA(_curx, pSIZE),
+ DATA(_maxy, pSIZE),
+ DATA(_maxx, pSIZE),
+ DATA(_begy, pSIZE),
+ DATA(_begx, pSIZE),
+ DATA(_flags, pSHORT),
+ DATA(_attrs, pATTR),
+ DATA(_bkgd, pCHAR),
+ DATA(_notimeout, pBOOL),
+ DATA(_clear, pBOOL),
+ DATA(_leaveok, pBOOL),
+ DATA(_scroll, pBOOL),
+ DATA(_idlok, pBOOL),
+ DATA(_idcok, pBOOL),
+ DATA(_immed, pBOOL),
+ DATA(_sync, pBOOL),
+ DATA(_use_keypad, pBOOL),
+ DATA(_delay, pINT),
+ DATA(_regtop, pSIZE),
+ DATA(_regbottom, pSIZE),
+ DATA(_pad._pad_y, pSIZE),
+ DATA(_pad._pad_x, pSIZE),
+ DATA(_pad._pad_top, pSIZE),
+ DATA(_pad._pad_left, pSIZE),
+ DATA(_pad._pad_bottom, pSIZE),
+ DATA(_pad._pad_right, pSIZE),
+ DATA(_yoffset, pSIZE),
+#if NCURSES_WIDECHAR
+ DATA(_bkgrnd, pCCHAR),
+#if NCURSES_EXT_COLORS
+ DATA(_color, pINT),
+#endif
+#endif
+};
+#undef DATA
+
+static const NCURSES_CH_T blank = NewChar(BLANK_TEXT);
+
+/*
+ * Allocate and read a line of text. Caller must free it.
+ */
+static char *
+read_txt(FILE *fp)
+{
+ size_t limit = 1024;
+ char *result = malloc(limit);
+ char *buffer;
+
+ if (result != 0) {
+ int ch = 0;
+ size_t used = 0;
+
+ clearerr(fp);
+ result[used] = '\0';
+ do {
+ if (used + 2 >= limit) {
+ limit += 1024;
+ buffer = realloc(result, limit);
+ if (buffer == 0) {
+ free(result);
+ result = 0;
+ break;
+ }
+ result = buffer;
+ }
+ ch = fgetc(fp);
+ if (ch == EOF)
+ break;
+ result[used++] = (char) ch;
+ result[used] = '\0';
+ } while (ch != '\n');
+
+ if (ch == '\n') {
+ result[--used] = '\0';
+ T(("READ:%s", result));
+ } else if (used == 0) {
+ free(result);
+ result = 0;
+ }
+ }
+ return result;
+}
+
+static char *
+decode_attr(char *source, attr_t *target, int *color)
+{
+ bool found = FALSE;
+
+ T(("decode_attr '%s'", source));
+
+ while (*source) {
+ if (source[0] == MARKER && source[1] == L_CURL) {
+ source += 2;
+ found = TRUE;
+ } else if (source[0] == R_CURL) {
+ source++;
+ found = FALSE;
+ } else if (found) {
+ size_t n;
+ char *next = source;
+
+ if (source[0] == GUTTER) {
+ ++next;
+ } else if (*next == 'C') {
+ int value = 0;
+ unsigned pair;
+ next++;
+ while (isdigit(UChar(*next))) {
+ value = value * 10 + (*next++ - '0');
+ }
+ *target &= ~A_COLOR;
+ pair = (unsigned) ((value > 256)
+ ? COLOR_PAIR(255)
+ : COLOR_PAIR(value));
+ *target |= pair;
+ *color = value;
+ } else {
+ while (isalnum(UChar(*next))) {
+ ++next;
+ }
+ for (n = 0; n < SIZEOF(scr_attrs); ++n) {
+ if ((size_t) (next - source) == strlen(scr_attrs[n].name)) {
+ if (scr_attrs[n].attr) {
+ *target |= scr_attrs[n].attr;
+ } else {
+ *target = A_NORMAL;
+ }
+ break;
+ }
+ }
+ }
+ source = next;
+ } else {
+ break;
+ }
+ }
+ return source;
+}
+
+static char *
+decode_char(char *source, int *target)
+{
+ int limit = 0;
+ int base = 16;
+ const char digits[] = "0123456789abcdef";
+
+ T(("decode_char '%s'", source));
+ *target = ' ';
+ switch (*source) {
+ case MARKER:
+ switch (*++source) {
+ case APPEND:
+ break;
+ case MARKER:
+ *target = MARKER;
+ ++source;
+ break;
+ case 's':
+ *target = ' ';
+ ++source;
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ base = 8;
+ limit = 3;
+ break;
+ case 'u':
+ limit = 4;
+ ++source;
+ break;
+ case 'U':
+ limit = 8;
+ ++source;
+ break;
+ }
+ if (limit) {
+ *target = 0;
+ while (limit-- > 0) {
+ char *find = strchr(digits, *source++);
+ int ch = (find != 0) ? (int) (find - digits) : -1;
+ *target *= base;
+ if (ch >= 0 && ch < base) {
+ *target += ch;
+ }
+ }
+ }
+ break;
+ default:
+ *target = *source++;
+ break;
+ }
+ return source;
+}
+
+static char *
+decode_chtype(char *source, chtype fillin, chtype *target)
+{
+ attr_t attr = ChAttrOf(fillin);
+ int color = PAIR_NUMBER((int) attr);
+ int value;
+
+ T(("decode_chtype '%s'", source));
+ source = decode_attr(source, &attr, &color);
+ source = decode_char(source, &value);
+ *target = (ChCharOf(value) | attr | (chtype) COLOR_PAIR(color));
+ /* FIXME - ignore combining characters */
+ return source;
+}
+
+#if NCURSES_WIDECHAR
+static char *
+decode_cchar(char *source, cchar_t *fillin, cchar_t *target)
+{
+ int color;
+ attr_t attr = fillin->attr;
+ wchar_t chars[CCHARW_MAX];
+ int append = 0;
+ int value = 0;
+
+ T(("decode_cchar '%s'", source));
+ *target = blank;
+#if NCURSES_EXT_COLORS
+ color = fillin->ext_color;
+#else
+ color = (int) PAIR_NUMBER(attr);
+#endif
+ source = decode_attr(source, &attr, &color);
+ memset(chars, 0, sizeof(chars));
+ source = decode_char(source, &value);
+ chars[0] = (wchar_t) value;
+ /* handle combining characters */
+ while (source[0] == MARKER && source[1] == APPEND) {
+ source += 2;
+ source = decode_char(source, &value);
+ if (++append < CCHARW_MAX) {
+ chars[append] = (wchar_t) value;
+ }
+ }
+ setcchar(target, chars, attr, (short) color, &color);
+ return source;
+}
+#endif
+
+static int
+read_win(WINDOW *win, FILE *fp)
+{
+ int code = ERR;
+ size_t n;
+ int color;
+#if NCURSES_WIDECHAR
+ NCURSES_CH_T prior;
+#endif
+ chtype prior2;
+
+ memset(win, 0, sizeof(WINDOW));
+ for (;;) {
+ char *name;
+ char *value;
+ char *txt = read_txt(fp);
+
+ if (txt == 0)
+ break;
+ if (!strcmp(txt, "rows:")) {
+ free(txt);
+ code = OK;
+ break;
+ }
+ if ((value = strchr(txt, '=')) == 0) {
+ free(txt);
+ continue;
+ }
+ *value++ = '\0';
+ name = !strcmp(txt, "flag") ? value : txt;
+ for (n = 0; n < SIZEOF(scr_params); ++n) {
+ if (!strcmp(name, scr_params[n].name)) {
+ void *data = (void *) ((char *) win + scr_params[n].offset);
+
+ switch (scr_params[n].type) {
+ case pATTR:
+ (void) decode_attr(value, data, &color);
+ break;
+ case pBOOL:
+ *(bool *) data = TRUE;
+ break;
+ case pCHAR:
+ prior2 = ' ';
+ decode_chtype(value, prior2, data);
+ break;
+ case pINT:
+ *(int *) data = atoi(value);
+ break;
+ case pSHORT:
+ *(short *) data = (short) atoi(value);
+ break;
+ case pSIZE:
+ *(NCURSES_SIZE_T *) data = (NCURSES_SIZE_T) atoi(value);
+ break;
+#if NCURSES_WIDECHAR
+ case pCCHAR:
+ prior = blank;
+ decode_cchar(value, &prior, data);
+ break;
+#endif
+ }
+ break;
+ }
+ }
+ free(txt);
+ }
+ return code;
+}
+
+static int
+read_row(char *source, NCURSES_CH_T * prior, NCURSES_CH_T * target, int length)
+{
+ while (*source != '\0' && length > 0) {
+#if NCURSES_WIDECHAR
+ int len;
+
+ source = decode_cchar(source, prior, target);
+ len = _nc_wacs_width(target->chars[0]);
+ if (len > 1) {
+ int n;
+
+ SetWidecExt(CHDEREF(target), 0);
+ for (n = 1; n < len; ++n) {
+ target[n] = target[0];
+ SetWidecExt(CHDEREF(target), n);
+ }
+ target += (len - 1);
+ length -= (len - 1);
+ }
+#else
+ source = decode_chtype(source, *prior, target);
+#endif
+ *prior = *target;
+ ++target;
+ --length;
+ }
+ while (length-- > 0) {
+ *target++ = blank;
+ }
+ /* FIXME - see what error conditions should apply if I need to return ERR */
+ return 0;
+}
+#endif /* NCURSES_EXT_PUTWIN */
+
+/*
+ * Originally, getwin/putwin used fread/fwrite, because they used binary data.
+ * The new format uses printable ASCII, which does not have as predictable
+ * sizes. Consequently, we use buffered I/O, e.g., fgetc/fprintf, which need
+ * special handling if we want to read screen dumps from an older library.
+ */
+static int
+read_block(void *target, size_t length, FILE *fp)
+{
+ int result = 0;
+ char *buffer = target;
+
+ clearerr(fp);
+ while (length-- != 0) {
+ int ch = fgetc(fp);
+ if (ch == EOF) {
+ result = -1;
+ break;
+ }
+ *buffer++ = (char) ch;
+ }
+ return result;
+}
+
NCURSES_EXPORT(WINDOW *)
NCURSES_SP_NAME(getwin) (NCURSES_SP_DCLx FILE *filep)
{
WINDOW tmp, *nwin;
- int n;
+ bool old_format = FALSE;
T((T_CALLED("getwin(%p)"), (void *) filep));
if (filep == 0) {
returnWin(0);
}
- clearerr(filep);
- if (fread(&tmp, (size_t) 1, sizeof(WINDOW), filep) < sizeof(WINDOW)
- || ferror(filep)
- || tmp._maxy == 0
- || tmp._maxy > MAX_SIZE
- || tmp._maxx == 0
- || tmp._maxx > MAX_SIZE) {
+
+ /*
+ * Read the first 4 bytes to determine first if this is an old-format
+ * screen-dump, or new-format.
+ */
+ if (read_block(&tmp, (size_t) 4, filep) < 0) {
+ returnWin(0);
+ }
+ /*
+ * If this is a new-format file, and we do not support it, give up.
+ */
+ if (!memcmp(&tmp, my_magic, (size_t) 4)) {
+#if NCURSES_EXT_PUTWIN
+ if (read_win(&tmp, filep) < 0)
+#endif
+ returnWin(0);
+ } else if (read_block(((char *) &tmp) + 4, sizeof(WINDOW) - 4, filep) < 0) {
+ returnWin(0);
+ } else {
+ old_format = TRUE;
+ }
+
+ /*
+ * Check the window-size:
+ */
+ if (tmp._maxy == 0 ||
+ tmp._maxy > MAX_SIZE ||
+ tmp._maxx == 0 ||
+ tmp._maxx > MAX_SIZE) {
returnWin(0);
}
@@ -80,6 +557,7 @@ NCURSES_SP_NAME(getwin) (NCURSES_SP_DCLx FILE *filep)
* made sense is probably gone.
*/
if (nwin != 0) {
+ int n;
size_t linesize = sizeof(NCURSES_CH_T) * (size_t) (tmp._maxx + 1);
nwin->_curx = tmp._curx;
@@ -111,14 +589,55 @@ NCURSES_SP_NAME(getwin) (NCURSES_SP_DCLx FILE *filep)
if (tmp._flags & _ISPAD)
nwin->_pad = tmp._pad;
- for (n = 0; n <= nwin->_maxy; n++) {
- clearerr(filep);
- if (fread(nwin->_line[n].text, (size_t) 1, linesize, filep) < linesize
- || ferror(filep)) {
+ if (old_format) {
+ T(("reading old-format screen dump"));
+ for (n = 0; n <= nwin->_maxy; n++) {
+ if (read_block(nwin->_line[n].text, linesize, filep) < 0) {
+ delwin(nwin);
+ returnWin(0);
+ }
+ }
+ }
+#if NCURSES_EXT_PUTWIN
+ else {
+ char *txt = 0;
+ bool success = TRUE;
+ NCURSES_CH_T prior = blank;
+
+ T(("reading new-format screen dump"));
+ for (n = 0; n <= nwin->_maxy; n++) {
+ long row;
+ char *next;
+
+ if ((txt = read_txt(filep)) == 0) {
+ T(("...failed to read string for row %d", n + 1));
+ success = FALSE;
+ break;
+ }
+ row = strtol(txt, &next, 10);
+ if (row != (n + 1) || *next != ':') {
+ T(("...failed to read row-number %d", n + 1));
+ success = FALSE;
+ break;
+ }
+
+ if (read_row(++next, &prior, nwin->_line[n].text, tmp._maxx
+ + 1) < 0) {
+ T(("...failed to read cells for row %d", n + 1));
+ success = FALSE;
+ break;
+ }
+ free(txt);
+ txt = 0;
+ }
+
+ if (!success) {
+ free(txt);
delwin(nwin);
returnWin(0);
}
}
+#endif
touchwin(nwin);
}
returnWin(nwin);
@@ -132,24 +651,283 @@ getwin(FILE *filep)
}
#endif
+#if NCURSES_EXT_PUTWIN
+static void
+encode_attr(char *target, ARG_SLIMIT(limit)
+ attr_t source,
+ attr_t prior,
+ int source_color,
+ int prior_color)
+{
+#if USE_STRING_HACKS && HAVE_SNPRINTF
+ char *base = target;
+#endif
+ source &= ~A_CHARTEXT;
+ prior &= ~A_CHARTEXT;
+
+ *target = '\0';
+ if ((source != prior) || (source_color != prior_color)) {
+ size_t n;
+ bool first = TRUE;
+
+ *target++ = MARKER;
+ *target++ = L_CURL;
+
+ for (n = 0; n < SIZEOF(scr_attrs); ++n) {
+ if ((source & scr_attrs[n].attr) != 0 ||
+ ((source & ALL_BUT_COLOR) == 0 &&
+ (scr_attrs[n].attr == A_NORMAL))) {
+ if (first) {
+ first = FALSE;
+ } else {
+ *target++ = '|';
+ }
+ _nc_STRCPY(target, scr_attrs[n].name, limit);
+ target += strlen(target);
+ }
+ }
+ if (source_color != prior_color) {
+ if (!first)
+ *target++ = '|';
+ _nc_SPRINTF(target, CUR_SLIMIT "C%d", source_color);
+ target += strlen(target);
+ }
+
+ *target++ = R_CURL;
+ *target = '\0';
+ }
+}
+
+static void
+encode_cell(char *target, ARG_SLIMIT(limit) CARG_CH_T source, CARG_CH_T previous)
+{
+#if USE_STRING_HACKS && HAVE_SNPRINTF
+ char *base = target;
+#endif
+#if NCURSES_WIDECHAR
+ size_t n;
+ int source_pair = GetPair(*source);
+ int previous_pair = GetPair(*previous);
+
+ *target = '\0';
+ if ((previous->attr != source->attr) || (previous_pair != source_pair)) {
+ encode_attr(target, CUR_SLIMIT
+ source->attr,
+ previous->attr,
+ source_pair,
+ previous_pair);
+ }
+ target += strlen(target);
+#if NCURSES_EXT_COLORS
+ if (previous->ext_color != source->ext_color) {
+ _nc_SPRINTF(target, CUR_SLIMIT
+ "%c%cC%d%c", MARKER, L_CURL, source->ext_color, R_CURL);
+ }
+#endif
+ for (n = 0; n < SIZEOF(source->chars); ++n) {
+ unsigned uch = (unsigned) source->chars[n];
+ if (uch == 0)
+ continue;
+ if (n) {
+ *target++ = MARKER;
+ *target++ = APPEND;
+ }
+ *target++ = MARKER;
+ if (uch > 0xffff) {
+ _nc_SPRINTF(target, CUR_SLIMIT "U%08x", uch);
+ } else if (uch > 0xff) {
+ _nc_SPRINTF(target, CUR_SLIMIT "u%04x", uch);
+ } else if (uch < 32 || uch >= 127) {
+ _nc_SPRINTF(target, CUR_SLIMIT "%03o", uch & 0xff);
+ } else {
+ switch (uch) {
+ case ' ':
+ _nc_STRCPY(target, "s", limit);
+ break;
+ case MARKER:
+ *target++ = MARKER;
+ *target = '\0';
+ break;
+ default:
+ --target;
+ _nc_SPRINTF(target, CUR_SLIMIT "%c", uch);
+ break;
+ }
+ }
+ target += strlen(target);
+ }
+#else
+ chtype ch = CharOfD(source);
+
+ *target = '\0';
+ if (AttrOfD(previous) != AttrOfD(source)) {
+ encode_attr(target, CUR_SLIMIT
+ AttrOfD(source),
+ AttrOfD(previous),
+ GetPair(source),
+ GetPair(previous));
+ }
+ target += strlen(target);
+ *target++ = MARKER;
+ if (ch < 32 || ch >= 127) {
+ _nc_SPRINTF(target, CUR_SLIMIT "%03o", UChar(ch));
+ } else {
+ switch (ch) {
+ case ' ':
+ _nc_STRCPY(target, "s", limit);
+ break;
+ case MARKER:
+ *target++ = MARKER;
+ *target = '\0';
+ break;
+ default:
+ --target;
+ _nc_SPRINTF(target, CUR_SLIMIT "%c", UChar(ch));
+ break;
+ }
+ }
+#endif
+}
+#endif
+
NCURSES_EXPORT(int)
putwin(WINDOW *win, FILE *filep)
{
int code = ERR;
- int n;
T((T_CALLED("putwin(%p,%p)"), (void *) win, (void *) filep));
+#if NCURSES_EXT_PUTWIN
+ if (win != 0) {
+ const char *version = curses_version();
+ char buffer[1024];
+ NCURSES_CH_T last_cell;
+ int y;
+
+ memset(&last_cell, 0, sizeof(last_cell));
+
+ clearerr(filep);
+
+ /*
+ * Our magic number is technically nonprinting, but aside from that,
+ * all of the file is printable ASCII.
+ */
+#define PUTS(s) if (fputs(s, filep) == EOF || ferror(filep)) returnCode(code)
+ PUTS(my_magic);
+ PUTS(version);
+ PUTS("\n");
+ for (y = 0; y < (int) SIZEOF(scr_params); ++y) {
+ const char *name = scr_params[y].name;
+ const char *data = (char *) win + scr_params[y].offset;
+ const void *dp = (const void *) data;
+ attr_t attr;
+
+ *buffer = '\0';
+ if (!strncmp(name, "_pad.", (size_t) 5) && !(win->_flags & _ISPAD)) {
+ continue;
+ }
+ switch (scr_params[y].type) {
+ case pATTR:
+ attr = (*(const attr_t *) dp) & ~A_CHARTEXT;
+ encode_attr(buffer, TOP_SLIMIT
+ (*(const attr_t *) dp) & ~A_CHARTEXT,
+ A_NORMAL,
+ COLOR_PAIR((int) attr),
+ 0);
+ break;
+ case pBOOL:
+ if (!(*(const bool *) data)) {
+ continue;
+ }
+ _nc_STRCPY(buffer, name, sizeof(buffer));
+ name = "flag";
+ break;
+ case pCHAR:
+ attr = (*(const attr_t *) dp);
+ encode_attr(buffer, TOP_SLIMIT
+ * (const attr_t *) dp,
+ A_NORMAL,
+ COLOR_PAIR((int) attr),
+ 0);
+ break;
+ case pINT:
+ if (!(*(const int *) dp))
+ continue;
+ _nc_SPRINTF(buffer, TOP_SLIMIT
+ "%d", *(const int *) dp);
+ break;
+ case pSHORT:
+ if (!(*(const short *) dp))
+ continue;
+ _nc_SPRINTF(buffer, TOP_SLIMIT
+ "%d", *(const short *) dp);
+ break;
+ case pSIZE:
+ if (!(*(const NCURSES_SIZE_T *) dp))
+ continue;
+ _nc_SPRINTF(buffer, TOP_SLIMIT
+ "%d", *(const NCURSES_SIZE_T *) dp);
+ break;
+#if NCURSES_WIDECHAR
+ case pCCHAR:
+ encode_cell(buffer, TOP_SLIMIT
+ (CARG_CH_T) dp, CHREF(last_cell));
+ break;
+#endif
+ }
+ /*
+ * Only write non-default data.
+ */
+ if (*buffer != '\0') {
+ if (fprintf(filep, "%s=%s\n", name, buffer) <= 0
+ || ferror(filep))
+ returnCode(code);
+ }
+ }
+ /* Write row-data */
+ fprintf(filep, "rows:\n");
+ for (y = 0; y <= win->_maxy; y++) {
+ NCURSES_CH_T *data = win->_line[y].text;
+ int x;
+ if (fprintf(filep, "%d:", y + 1) <= 0
+ || ferror(filep))
+ returnCode(code);
+ for (x = 0; x <= win->_maxx; x++) {
+#if NCURSES_WIDECHAR
+ int len = _nc_wacs_width(data[x].chars[0]);
+ encode_cell(buffer, TOP_SLIMIT CHREF(data[x]), CHREF(last_cell));
+ last_cell = data[x];
+ PUTS(buffer);
+ if (len > 1)
+ x += (len - 1);
+#else
+ encode_cell(buffer, TOP_SLIMIT CHREF(data[x]), CHREF(last_cell));
+ last_cell = data[x];
+ PUTS(buffer);
+#endif
+ }
+ PUTS("\n");
+ }
+ code = OK;
+ }
+#else
+ /*
+ * This is the original putwin():
+ * A straight binary dump is simple, but its format can depend on whether
+ * ncurses is compiled with wide-character support, and also may depend
+ * on the version of ncurses, e.g., if the WINDOW structure is extended.
+ */
if (win != 0) {
size_t len = (size_t) (win->_maxx + 1);
+ int y;
clearerr(filep);
if (fwrite(win, sizeof(WINDOW), (size_t) 1, filep) != 1
|| ferror(filep))
returnCode(code);
- for (n = 0; n <= win->_maxy; n++) {
- if (fwrite(win->_line[n].text,
+ for (y = 0; y <= win->_maxy; y++) {
+ if (fwrite(win->_line[y].text,
sizeof(NCURSES_CH_T), len, filep) != len
|| ferror(filep)) {
returnCode(code);
@@ -157,6 +935,7 @@ putwin(WINDOW *win, FILE *filep)
}
code = OK;
}
+#endif
returnCode(code);
}
@@ -164,21 +943,23 @@ NCURSES_EXPORT(int)
NCURSES_SP_NAME(scr_restore) (NCURSES_SP_DCLx const char *file)
{
FILE *fp = 0;
+ int code = ERR;
T((T_CALLED("scr_restore(%p,%s)"), (void *) SP_PARM, _nc_visbuf(file)));
- if (_nc_access(file, R_OK) < 0
- || (fp = fopen(file, "rb")) == 0) {
- returnCode(ERR);
- } else {
+ if (_nc_access(file, R_OK) >= 0
+ && (fp = fopen(file, BIN_R)) != 0) {
delwin(NewScreen(SP_PARM));
NewScreen(SP_PARM) = getwin(fp);
#if !USE_REENTRANT
newscr = NewScreen(SP_PARM);
#endif
(void) fclose(fp);
- returnCode(OK);
+ if (NewScreen(SP_PARM) != 0) {
+ code = OK;
+ }
}
+ returnCode(code);
}
#if NCURSES_SP_FUNCS
@@ -198,7 +979,7 @@ scr_dump(const char *file)
T((T_CALLED("scr_dump(%s)"), _nc_visbuf(file)));
if (_nc_access(file, W_OK) < 0
- || (fp = fopen(file, "wb")) == 0) {
+ || (fp = fopen(file, BIN_W)) == 0) {
result = ERR;
} else {
(void) putwin(newscr, fp);
@@ -211,7 +992,6 @@ scr_dump(const char *file)
NCURSES_EXPORT(int)
NCURSES_SP_NAME(scr_init) (NCURSES_SP_DCLx const char *file)
{
- FILE *fp = 0;
int code = ERR;
T((T_CALLED("scr_init(%p,%s)"), (void *) SP_PARM, _nc_visbuf(file)));
@@ -223,15 +1003,19 @@ NCURSES_SP_NAME(scr_init) (NCURSES_SP_DCLx const char *file)
!(exit_ca_mode && non_rev_rmcup)
#endif
) {
+ FILE *fp = 0;
+
if (_nc_access(file, R_OK) >= 0
- && (fp = fopen(file, "rb")) != 0) {
+ && (fp = fopen(file, BIN_R)) != 0) {
delwin(CurScreen(SP_PARM));
CurScreen(SP_PARM) = getwin(fp);
#if !USE_REENTRANT
curscr = CurScreen(SP_PARM);
#endif
(void) fclose(fp);
- code = OK;
+ if (CurScreen(SP_PARM) != 0) {
+ code = OK;
+ }
}
}
returnCode(code);
@@ -248,18 +1032,21 @@ scr_init(const char *file)
NCURSES_EXPORT(int)
NCURSES_SP_NAME(scr_set) (NCURSES_SP_DCLx const char *file)
{
+ int code = ERR;
+
T((T_CALLED("scr_set(%p,%s)"), (void *) SP_PARM, _nc_visbuf(file)));
- if (NCURSES_SP_NAME(scr_init) (NCURSES_SP_ARGx file) == ERR) {
- returnCode(ERR);
- } else {
+ if (NCURSES_SP_NAME(scr_init) (NCURSES_SP_ARGx file) == OK) {
delwin(NewScreen(SP_PARM));
NewScreen(SP_PARM) = dupwin(curscr);
#if !USE_REENTRANT
newscr = NewScreen(SP_PARM);
#endif
- returnCode(OK);
+ if (NewScreen(SP_PARM) != 0) {
+ code = OK;
+ }
}
+ returnCode(code);
}
#if NCURSES_SP_FUNCS
diff --git a/ncurses/base/lib_scroll.c b/ncurses/base/lib_scroll.c
index 8684e2519294..000f128fb0d6 100644
--- a/ncurses/base/lib_scroll.c
+++ b/ncurses/base/lib_scroll.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,7 +43,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_scroll.c,v 1.29 2011/10/22 16:34:50 tom Exp $")
+MODULE_ID("$Id: lib_scroll.c,v 1.31 2019/08/03 22:27:55 tom Exp $")
NCURSES_EXPORT(void)
_nc_scroll_window(WINDOW *win,
@@ -77,11 +77,13 @@ _nc_scroll_window(WINDOW *win,
* setup cost. So there is no point in trying to be excessively
* clever -- esr.
*/
+#define BottomLimit(n) ((n) >= 0 && (n) >= top)
+#define TopLimit(n) ((n) <= win->_maxy && (n) <= bottom)
/* shift n lines downwards */
if (n < 0) {
limit = top - n;
- for (line = bottom; line >= limit && line >= 0; line--) {
+ for (line = bottom; line >= limit && BottomLimit(line); line--) {
TR(TRACE_MOVE, ("...copying %d to %d", line + n, line));
memcpy(win->_line[line].text,
win->_line[line + n].text,
@@ -89,7 +91,7 @@ _nc_scroll_window(WINDOW *win,
if_USE_SCROLL_HINTS(win->_line[line].oldindex =
win->_line[line + n].oldindex);
}
- for (line = top; line < limit && line <= win->_maxy; line++) {
+ for (line = top; line < limit && TopLimit(line); line++) {
TR(TRACE_MOVE, ("...filling %d", line));
for (j = 0; j <= win->_maxx; j++)
win->_line[line].text[j] = blank;
@@ -100,14 +102,14 @@ _nc_scroll_window(WINDOW *win,
/* shift n lines upwards */
if (n > 0) {
limit = bottom - n;
- for (line = top; line <= limit && line <= win->_maxy; line++) {
+ for (line = top; line <= limit && TopLimit(line); 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 > limit && line >= 0; line--) {
+ for (line = bottom; line > limit && BottomLimit(line); line--) {
for (j = 0; j <= win->_maxx; j++)
win->_line[line].text[j] = blank;
if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX);
diff --git a/ncurses/base/lib_set_term.c b/ncurses/base/lib_set_term.c
index acf6bc1f71cd..fb0465a940a6 100644
--- a/ncurses/base/lib_set_term.c
+++ b/ncurses/base/lib_set_term.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,11 +43,10 @@
#include <curses.priv.h>
#include <tic.h>
-#ifndef CUR
+#undef CUR
#define CUR SP_TERMTYPE
-#endif
-MODULE_ID("$Id: lib_set_term.c,v 1.148 2013/08/31 13:33:06 tom Exp $")
+MODULE_ID("$Id: lib_set_term.c,v 1.168 2018/12/15 23:49:43 tom Exp $")
#ifdef USE_TERM_DRIVER
#define MaxColors InfoOf(sp).maxcolors
@@ -134,7 +133,6 @@ delink_screen(SCREEN *sp)
NCURSES_EXPORT(void)
delscreen(SCREEN *sp)
{
- int i;
T((T_CALLED("delscreen(%p)"), (void *) sp));
@@ -159,7 +157,10 @@ delscreen(SCREEN *sp)
(void) _nc_freewin(StdScreen(sp));
if (sp->_slk != 0) {
+
if (sp->_slk->ent != 0) {
+ int i;
+
for (i = 0; i < sp->_slk->labcnt; ++i) {
FreeIfNeeded(sp->_slk->ent[i].ent_text);
FreeIfNeeded(sp->_slk->ent[i].form_text);
@@ -181,6 +182,7 @@ delscreen(SCREEN *sp)
FreeIfNeeded(sp->_color_table);
FreeIfNeeded(sp->_color_pairs);
+ FreeIfNeeded(sp->_oldnum_list);
FreeIfNeeded(sp->oldhash);
FreeIfNeeded(sp->newhash);
FreeIfNeeded(sp->hashtab);
@@ -190,6 +192,10 @@ delscreen(SCREEN *sp)
NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
NCURSES_SP_NAME(del_curterm) (NCURSES_SP_ARGx sp->_term);
+ FreeIfNeeded(sp->out_buffer);
+ if (_nc_find_prescr() == sp) {
+ _nc_forget_prescr();
+ }
free(sp);
/*
@@ -206,6 +212,12 @@ delscreen(SCREEN *sp)
COLOR_PAIRS = 0;
#endif
_nc_set_screen(0);
+#if USE_WIDEC_SUPPORT
+ if (SP == 0) {
+ FreeIfNeeded(_nc_wacs);
+ _nc_wacs = 0;
+ }
+#endif
}
}
_nc_unlock_global(curses);
@@ -242,16 +254,17 @@ no_mouse_wrap(SCREEN *sp GCC_UNUSED)
}
#if NCURSES_EXT_FUNCS && USE_COLORFGBG
-static char *
-extract_fgbg(char *src, int *result)
+static const char *
+extract_fgbg(const char *src, int *result)
{
- char *dst = 0;
- long value = strtol(src, &dst, 0);
+ const char *dst = 0;
+ char *tmp = 0;
+ long value = strtol(src, &tmp, 0);
- if (dst == 0) {
+ if ((dst = tmp) == 0) {
dst = src;
} else if (value >= 0) {
- *result = value;
+ *result = (int) value;
}
while (*dst != 0 && *dst != ';')
dst++;
@@ -261,7 +274,7 @@ extract_fgbg(char *src, int *result)
}
#endif
-#define ReturnScreenError() { _nc_set_screen(0); \
+#define ReturnScreenError() do { _nc_set_screen(0); \
returnCode(ERR); } while (0)
/* OS-independent screen initializations */
@@ -276,9 +289,11 @@ NCURSES_SP_NAME(_nc_setupscreen) (
int filtered,
int slk_format)
{
+#ifndef USE_TERM_DRIVER
+ static const TTY null_TTY; /* all zeros iff uninitialized */
+#endif
char *env;
int bottom_stolen = 0;
- ripoff_t *rop;
SCREEN *sp;
#ifndef USE_TERM_DRIVER
bool support_cookies = USE_XMC_SUPPORT;
@@ -295,6 +310,7 @@ NCURSES_SP_NAME(_nc_setupscreen) (
if (!sp) {
sp = _nc_alloc_screen_sp();
+ T(("_nc_alloc_screen_sp %p", (void *) sp));
*spp = sp;
}
if (!sp
@@ -351,15 +367,21 @@ NCURSES_SP_NAME(_nc_setupscreen) (
slines = 1;
SET_LINES(slines);
#ifdef USE_TERM_DRIVER
- CallDriver(sp, setfilter);
+ CallDriver(sp, td_setfilter);
#else
- clear_screen = 0;
- cursor_down = parm_down_cursor = 0;
- cursor_address = 0;
- cursor_up = parm_up_cursor = 0;
- row_address = 0;
+ /* *INDENT-EQLS* */
+ clear_screen = ABSENT_STRING;
+ cursor_address = ABSENT_STRING;
+ cursor_down = ABSENT_STRING;
+ cursor_up = ABSENT_STRING;
+ parm_down_cursor = ABSENT_STRING;
+ parm_up_cursor = ABSENT_STRING;
+ row_address = ABSENT_STRING;
+ cursor_home = carriage_return;
+
+ if (back_color_erase)
+ clr_eos = ABSENT_STRING;
- cursor_home = carriage_return;
#endif
T(("filter screensize %dx%d", slines, scolumns));
}
@@ -411,8 +433,8 @@ NCURSES_SP_NAME(_nc_setupscreen) (
sp->_default_fg = COLOR_WHITE;
sp->_default_bg = COLOR_BLACK;
#else
- sp->_default_fg = C_MASK;
- sp->_default_bg = C_MASK;
+ sp->_default_fg = COLOR_DEFAULT;
+ sp->_default_bg = COLOR_DEFAULT;
#endif
/*
@@ -424,9 +446,9 @@ NCURSES_SP_NAME(_nc_setupscreen) (
char sep1, sep2;
int count = sscanf(env, "%d%c%d%c", &fg, &sep1, &bg, &sep2);
if (count >= 1) {
- sp->_default_fg = ((fg >= 0 && fg < MaxColors) ? fg : C_MASK);
+ sp->_default_fg = ((fg >= 0 && fg < MaxColors) ? fg : COLOR_DEFAULT);
if (count >= 3) {
- sp->_default_bg = ((bg >= 0 && bg < MaxColors) ? bg : C_MASK);
+ sp->_default_bg = ((bg >= 0 && bg < MaxColors) ? bg : COLOR_DEFAULT);
}
TR(TRACE_CHARPUT | TRACE_MOVE,
("from environment assumed fg=%d, bg=%d",
@@ -442,7 +464,7 @@ NCURSES_SP_NAME(_nc_setupscreen) (
* decide later if it is worth having default attributes as well.
*/
if (getenv("COLORFGBG") != 0) {
- char *p = getenv("COLORFGBG");
+ const char *p = getenv("COLORFGBG");
TR(TRACE_CHARPUT | TRACE_MOVE, ("decoding COLORFGBG %s", p));
p = extract_fgbg(p, &(sp->_default_fg));
p = extract_fgbg(p, &(sp->_default_bg));
@@ -453,7 +475,7 @@ NCURSES_SP_NAME(_nc_setupscreen) (
if (sp->_default_fg >= MaxColors) {
if (set_a_foreground != ABSENT_STRING
&& !strcmp(set_a_foreground, "\033[3%p1%dm")) {
- set_a_foreground = "\033[3%?%p1%{8}%>%t9%e%p1%d%;m";
+ set_a_foreground = strdup("\033[3%?%p1%{8}%>%t9%e%p1%d%;m");
} else {
sp->_default_fg %= MaxColors;
}
@@ -461,7 +483,7 @@ NCURSES_SP_NAME(_nc_setupscreen) (
if (sp->_default_bg >= MaxColors) {
if (set_a_background != ABSENT_STRING
&& !strcmp(set_a_background, "\033[4%p1%dm")) {
- set_a_background = "\033[4%?%p1%{8}%>%t9%e%p1%d%;m";
+ set_a_background = strdup("\033[4%?%p1%{8}%>%t9%e%p1%d%;m");
} else {
sp->_default_bg %= MaxColors;
}
@@ -573,7 +595,9 @@ NCURSES_SP_NAME(_nc_setupscreen) (
NCURSES_SP_NAME(_nc_init_acs) (NCURSES_SP_ARG);
#if USE_WIDEC_SUPPORT
sp->_screen_unicode = _nc_unicode_locale();
- _nc_init_wacs();
+ if (_nc_wacs == 0) {
+ _nc_init_wacs();
+ }
if (_nc_wacs == 0) {
ReturnScreenError();
}
@@ -617,10 +641,22 @@ NCURSES_SP_NAME(_nc_setupscreen) (
NewScreen(sp)->_clear = TRUE;
CurScreen(sp)->_clear = FALSE;
- NCURSES_SP_NAME(def_shell_mode) (NCURSES_SP_ARG);
- NCURSES_SP_NAME(def_prog_mode) (NCURSES_SP_ARG);
+ /*
+ * Get the current tty-modes. setupterm() may already have done this,
+ * unless we use the term-driver.
+ */
+#ifndef USE_TERM_DRIVER
+ if (cur_term != 0 &&
+ !memcmp(&cur_term->Ottyb, &null_TTY, sizeof(TTY)))
+#endif
+ {
+ NCURSES_SP_NAME(def_shell_mode) (NCURSES_SP_ARG);
+ NCURSES_SP_NAME(def_prog_mode) (NCURSES_SP_ARG);
+ }
if (safe_ripoff_sp && safe_ripoff_sp != safe_ripoff_stack) {
+ ripoff_t *rop;
+
for (rop = safe_ripoff_stack;
rop != safe_ripoff_sp && (rop - safe_ripoff_stack) < N_RIPS;
rop++) {
@@ -714,9 +750,12 @@ NCURSES_SP_NAME(_nc_ripoffline) (NCURSES_SP_DCLx
int (*init) (WINDOW *, int))
{
int code = ERR;
+ TR_FUNC_BFR(1);
START_TRACE();
- T((T_CALLED("ripoffline(%p,%d,%p)"), (void *) SP_PARM, line, init));
+ T((T_CALLED("ripoffline(%p,%d,%s)"),
+ (void *) SP_PARM, line,
+ TR_FUNC_ARG(0, init)));
#if NCURSES_SP_FUNCS
if (SP_PARM != 0 && SP_PARM->_prescreen)
@@ -725,12 +764,15 @@ NCURSES_SP_NAME(_nc_ripoffline) (NCURSES_SP_DCLx
if (line == 0) {
code = OK;
} else {
- if (safe_ripoff_sp == 0)
+ if (safe_ripoff_sp == 0) {
safe_ripoff_sp = safe_ripoff_stack;
+ }
if (safe_ripoff_sp < safe_ripoff_stack + N_RIPS) {
safe_ripoff_sp->line = line;
safe_ripoff_sp->hook = init;
(safe_ripoff_sp)++;
+ T(("ripped-off %d:%d chunks",
+ (int) (safe_ripoff_sp - safe_ripoff_stack), N_RIPS));
code = OK;
}
}
@@ -743,7 +785,12 @@ NCURSES_SP_NAME(_nc_ripoffline) (NCURSES_SP_DCLx
NCURSES_EXPORT(int)
_nc_ripoffline(int line, int (*init) (WINDOW *, int))
{
- return NCURSES_SP_NAME(_nc_ripoffline) (CURRENT_SCREEN_PRE, line, init);
+ int rc;
+ _nc_lock_global(prescreen);
+ START_TRACE();
+ rc = NCURSES_SP_NAME(_nc_ripoffline) (CURRENT_SCREEN_PRE, line, init);
+ _nc_unlock_global(prescreen);
+ return rc;
}
#endif
@@ -762,6 +809,11 @@ NCURSES_SP_NAME(ripoffline) (NCURSES_SP_DCLx
NCURSES_EXPORT(int)
ripoffline(int line, int (*init) (WINDOW *, int))
{
- return NCURSES_SP_NAME(ripoffline) (CURRENT_SCREEN_PRE, line, init);
+ int rc;
+ _nc_lock_global(prescreen);
+ START_TRACE();
+ rc = NCURSES_SP_NAME(ripoffline) (CURRENT_SCREEN_PRE, line, init);
+ _nc_unlock_global(prescreen);
+ return rc;
}
#endif
diff --git a/ncurses/base/lib_slkatr_set.c b/ncurses/base/lib_slkatr_set.c
index a3132e9ced1a..fa701f0b1008 100644
--- a/ncurses/base/lib_slkatr_set.c
+++ b/ncurses/base/lib_slkatr_set.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -38,30 +38,31 @@
*/
#include <curses.priv.h>
-MODULE_ID("$Id: lib_slkatr_set.c,v 1.15 2014/02/01 22:10:42 tom Exp $")
+MODULE_ID("$Id: lib_slkatr_set.c,v 1.16 2017/03/16 23:45:36 tom Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(slk_attr_set) (NCURSES_SP_DCLx
const attr_t attr,
- NCURSES_PAIRS_T color_pair_number,
+ NCURSES_PAIRS_T pair_arg,
void *opts)
{
int code = ERR;
+ int color_pair = pair_arg;
T((T_CALLED("slk_attr_set(%p,%s,%d)"),
(void *) SP_PARM,
_traceattr(attr),
- (int) color_pair_number));
+ color_pair));
+ set_extended_pair(opts, color_pair);
if (SP_PARM != 0
&& SP_PARM->_slk != 0
- && !opts
- && color_pair_number >= 0
- && color_pair_number < SP_PARM->_pair_limit) {
+ && color_pair >= 0
+ && color_pair < SP_PARM->_pair_limit) {
TR(TRACE_ATTRS, ("... current %s", _tracech_t(CHREF(SP_PARM->_slk->attr))));
SetAttr(SP_PARM->_slk->attr, attr);
- if (color_pair_number > 0) {
- SetPair(SP_PARM->_slk->attr, color_pair_number);
+ if (color_pair > 0) {
+ SetPair(SP_PARM->_slk->attr, color_pair);
}
TR(TRACE_ATTRS, ("new attribute is %s", _tracech_t(CHREF(SP_PARM->_slk->attr))));
code = OK;
@@ -71,9 +72,9 @@ NCURSES_SP_NAME(slk_attr_set) (NCURSES_SP_DCLx
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-slk_attr_set(const attr_t attr, NCURSES_COLOR_T color_pair_number, void *opts)
+slk_attr_set(const attr_t attr, NCURSES_COLOR_T pair_arg, void *opts)
{
return NCURSES_SP_NAME(slk_attr_set) (CURRENT_SCREEN, attr,
- color_pair_number, opts);
+ pair_arg, opts);
}
#endif
diff --git a/ncurses/base/lib_slkcolor.c b/ncurses/base/lib_slkcolor.c
index 2cf9e5d7f121..7edbe1afcc93 100644
--- a/ncurses/base/lib_slkcolor.c
+++ b/ncurses/base/lib_slkcolor.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -38,31 +38,53 @@
*/
#include <curses.priv.h>
-MODULE_ID("$Id: lib_slkcolor.c,v 1.17 2014/02/01 22:10:42 tom Exp $")
+MODULE_ID("$Id: lib_slkcolor.c,v 1.19 2018/03/01 15:02:12 tom Exp $")
-NCURSES_EXPORT(int)
-NCURSES_SP_NAME(slk_color) (NCURSES_SP_DCLx NCURSES_PAIRS_T color_pair_number)
+static int
+_nc_slk_color(SCREEN *sp, int pair_arg)
{
int code = ERR;
- T((T_CALLED("slk_color(%p,%d)"), (void *) SP_PARM, (int) color_pair_number));
+ T((T_CALLED("slk_color(%p,%d)"), (void *) sp, pair_arg));
- if (SP_PARM != 0
- && SP_PARM->_slk != 0
- && color_pair_number >= 0
- && color_pair_number < SP_PARM->_pair_limit) {
- TR(TRACE_ATTRS, ("... current is %s", _tracech_t(CHREF(SP_PARM->_slk->attr))));
- SetPair(SP_PARM->_slk->attr, color_pair_number);
- TR(TRACE_ATTRS, ("new attribute is %s", _tracech_t(CHREF(SP_PARM->_slk->attr))));
+ if (sp != 0
+ && sp->_slk != 0
+ && pair_arg >= 0
+ && pair_arg < sp->_pair_limit) {
+ TR(TRACE_ATTRS, ("... current is %s", _tracech_t(CHREF(sp->_slk->attr))));
+ SetPair(sp->_slk->attr, pair_arg);
+ TR(TRACE_ATTRS, ("new attribute is %s", _tracech_t(CHREF(sp->_slk->attr))));
code = OK;
}
returnCode(code);
}
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(slk_color) (NCURSES_SP_DCLx NCURSES_PAIRS_T pair_arg)
+{
+ return _nc_slk_color(SP_PARM, pair_arg);
+}
+
+#if NCURSES_SP_FUNCS
+NCURSES_EXPORT(int)
+slk_color(NCURSES_PAIRS_T pair_arg)
+{
+ return NCURSES_SP_NAME(slk_color) (CURRENT_SCREEN, pair_arg);
+}
+#endif
+
+#if NCURSES_EXT_COLORS
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(extended_slk_color) (NCURSES_SP_DCLx int pair_arg)
+{
+ return _nc_slk_color(SP_PARM, pair_arg);
+}
+
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-slk_color(NCURSES_PAIRS_T color_pair_number)
+extended_slk_color(int pair_arg)
{
- return NCURSES_SP_NAME(slk_color) (CURRENT_SCREEN, color_pair_number);
+ return NCURSES_SP_NAME(extended_slk_color) (CURRENT_SCREEN, pair_arg);
}
#endif
+#endif
diff --git a/ncurses/base/lib_slkinit.c b/ncurses/base/lib_slkinit.c
index 9cbdfea98430..11bbdef6ccf7 100644
--- a/ncurses/base/lib_slkinit.c
+++ b/ncurses/base/lib_slkinit.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -40,7 +40,7 @@
*/
#include <curses.priv.h>
-MODULE_ID("$Id: lib_slkinit.c,v 1.13 2009/10/31 00:10:46 tom Exp $")
+MODULE_ID("$Id: lib_slkinit.c,v 1.14 2017/06/30 11:47:34 tom Exp $")
#ifdef USE_SP_RIPOFF
#define SoftkeyFormat SP_PARM->slk_format
@@ -75,6 +75,11 @@ NCURSES_SP_NAME(slk_init) (NCURSES_SP_DCLx int format)
NCURSES_EXPORT(int)
slk_init(int format)
{
- return NCURSES_SP_NAME(slk_init) (CURRENT_SCREEN_PRE, format);
+ int rc;
+ _nc_lock_global(prescreen);
+ START_TRACE();
+ rc = NCURSES_SP_NAME(slk_init) (CURRENT_SCREEN_PRE, format);
+ _nc_unlock_global(prescreen);
+ return rc;
}
#endif
diff --git a/ncurses/base/lib_slkrefr.c b/ncurses/base/lib_slkrefr.c
index 6d9fcd63507c..382f9c4b00f7 100644
--- a/ncurses/base/lib_slkrefr.c
+++ b/ncurses/base/lib_slkrefr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,7 +43,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_slkrefr.c,v 1.29 2013/01/12 17:25:48 tom Exp $")
+MODULE_ID("$Id: lib_slkrefr.c,v 1.30 2014/03/08 20:32:59 tom Exp $")
#ifdef USE_TERM_DRIVER
#define NumLabels InfoOf(SP_PARM).numlabels
@@ -97,7 +97,7 @@ slk_intern_refresh(SCREEN *sp)
if (slk->ent[i].visible) {
if (numlab > 0 && SLK_STDFMT(fmt)) {
#ifdef USE_TERM_DRIVER
- CallDriver_2(sp, hwlabel, i + 1, slk->ent[i].form_text);
+ CallDriver_2(sp, td_hwlabel, i + 1, slk->ent[i].form_text);
#else
if (i < num_labels) {
NCURSES_PUTP2("plab_norm",
@@ -125,7 +125,7 @@ slk_intern_refresh(SCREEN *sp)
if (numlab > 0) {
#ifdef USE_TERM_DRIVER
- CallDriver_1(sp, hwlabelOnOff, slk->hidden ? FALSE : TRUE);
+ CallDriver_1(sp, td_hwlabelOnOff, slk->hidden ? FALSE : TRUE);
#else
if (slk->hidden) {
NCURSES_PUTP2("label_off", label_off);
diff --git a/ncurses/base/lib_slkset.c b/ncurses/base/lib_slkset.c
index 9091e001a91d..66a4d043a687 100644
--- a/ncurses/base/lib_slkset.c
+++ b/ncurses/base/lib_slkset.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -44,7 +44,7 @@
#endif
#endif
-MODULE_ID("$Id: lib_slkset.c,v 1.24 2012/12/08 23:09:25 tom Exp $")
+MODULE_ID("$Id: lib_slkset.c,v 1.25 2019/05/04 20:46:24 tom Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(slk_set) (NCURSES_SP_DCLx int i, const char *astr, int format)
@@ -89,9 +89,9 @@ NCURSES_SP_NAME(slk_set) (NCURSES_SP_DCLx int i, const char *astr, int format)
mbrtowc(&wc, p, need, &state);
if (!iswprint((wint_t) wc))
break;
- if (wcwidth(wc) + numcols > limit)
+ if (_nc_wacs_width(wc) + numcols > limit)
break;
- numcols += wcwidth(wc);
+ numcols += _nc_wacs_width(wc);
p += need;
}
numchrs = (int) (p - str);
diff --git a/ncurses/base/lib_touch.c b/ncurses/base/lib_touch.c
index 20ac9450f15f..451606483b86 100644
--- a/ncurses/base/lib_touch.c
+++ b/ncurses/base/lib_touch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,16 +43,19 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_touch.c,v 1.12 2012/06/09 20:29:33 tom Exp $")
+MODULE_ID("$Id: lib_touch.c,v 1.15 2017/11/21 00:14:26 tom Exp $")
+
+#undef is_linetouched
NCURSES_EXPORT(bool)
is_linetouched(WINDOW *win, int line)
{
T((T_CALLED("is_linetouched(%p,%d)"), (void *) win, line));
- /* XSI doesn't define any error */
- if (!win || (line > win->_maxy) || (line < 0))
- returnCode((bool) ERR);
+ /* XSI doesn't define any error, and gcc ultimately made it impossible */
+ if (!win || (line > win->_maxy) || (line < 0)) {
+ returnCode(FALSE);
+ }
returnCode(win->_line[line].firstchar != _NOCHANGE ? TRUE : FALSE);
}
@@ -60,14 +63,15 @@ is_linetouched(WINDOW *win, int line)
NCURSES_EXPORT(bool)
is_wintouched(WINDOW *win)
{
- int i;
-
T((T_CALLED("is_wintouched(%p)"), (void *) win));
- if (win)
+ if (win) {
+ int i;
+
for (i = 0; i <= win->_maxy; i++)
if (win->_line[i].firstchar != _NOCHANGE)
returnCode(TRUE);
+ }
returnCode(FALSE);
}
diff --git a/ncurses/base/lib_vline.c b/ncurses/base/lib_vline.c
index 2f3148eca77c..acb5dfd125f8 100644
--- a/ncurses/base/lib_vline.c
+++ b/ncurses/base/lib_vline.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free 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,6 +29,8 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996-on *
+ * and: Sven Verdoolaege 2001 *
****************************************************************************/
/*
@@ -40,22 +42,21 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_vline.c,v 1.12 2010/12/19 01:22:58 tom Exp $")
+MODULE_ID("$Id: lib_vline.c,v 1.14 2017/10/28 19:55:44 tom Exp $")
NCURSES_EXPORT(int)
wvline(WINDOW *win, chtype ch, int n)
{
int code = ERR;
- int row, col;
- int end;
T((T_CALLED("wvline(%p,%s,%d)"), (void *) win, _tracechtype(ch), n));
if (win) {
NCURSES_CH_T wch;
- row = win->_cury;
- col = win->_curx;
- end = row + n - 1;
+ int row = win->_cury;
+ int col = win->_curx;
+ int end = row + n - 1;
+
if (end > win->_maxy)
end = win->_maxy;
@@ -67,6 +68,14 @@ wvline(WINDOW *win, chtype ch, int n)
while (end >= row) {
struct ldat *line = &(win->_line[end]);
+#if USE_WIDEC_SUPPORT
+ if (col > 0 && isWidecExt(line->text[col])) {
+ SetChar2(line->text[col - 1], ' ');
+ }
+ if (col < win->_maxx && isWidecExt(line->text[col + 1])) {
+ SetChar2(line->text[col + 1], ' ');
+ }
+#endif
line->text[col] = wch;
CHANGED_CELL(line, col);
end--;
diff --git a/ncurses/base/lib_window.c b/ncurses/base/lib_window.c
index 4baa36943c44..d755e88d66a3 100644
--- a/ncurses/base/lib_window.c
+++ b/ncurses/base/lib_window.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2016 Free 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 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_window.c,v 1.29 2010/12/19 01:47:22 tom Exp $")
+MODULE_ID("$Id: lib_window.c,v 1.30 2016/05/28 23:11:26 tom Exp $")
NCURSES_EXPORT(void)
_nc_synchook(WINDOW *win)
@@ -56,7 +56,6 @@ mvderwin(WINDOW *win, int y, int x)
/* move a derived window */
{
WINDOW *orig;
- int i;
int rc = ERR;
T((T_CALLED("mvderwin(%p,%d,%d)"), (void *) win, y, x));
@@ -66,6 +65,8 @@ mvderwin(WINDOW *win, int y, int x)
&& (x >= 0 && y >= 0)
&& (x + getmaxx(win) <= getmaxx(orig))
&& (y + getmaxy(win) <= getmaxy(orig))) {
+ int i;
+
wsyncup(win);
win->_parx = x;
win->_pary = y;
@@ -177,8 +178,6 @@ dupwin(WINDOW *win)
/* make an exact duplicate of the given window */
{
WINDOW *nwin = 0;
- size_t linesize;
- int i;
T((T_CALLED("dupwin(%p)"), (void *) win));
@@ -200,6 +199,8 @@ dupwin(WINDOW *win)
}
if (nwin != 0) {
+ int i;
+ size_t linesize;
nwin->_curx = win->_curx;
nwin->_cury = win->_cury;
diff --git a/ncurses/base/new_pair.c b/ncurses/base/new_pair.c
new file mode 100644
index 000000000000..2c3c2fb82a2d
--- /dev/null
+++ b/ncurses/base/new_pair.c
@@ -0,0 +1,385 @@
+/****************************************************************************
+ * Copyright (c) 2017-2018,2019 Free 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 *
+ ****************************************************************************/
+
+/* new_pair.c
+ *
+ * New color-pair functions, alloc_pair and free_pair
+ */
+
+#define NEW_PAIR_INTERNAL 1
+#include <curses.priv.h>
+
+#ifndef CUR
+#define CUR SP_TERMTYPE
+#endif
+
+#ifdef USE_TERM_DRIVER
+#define MaxColors InfoOf(SP_PARM).maxcolors
+#else
+#define MaxColors max_colors
+#endif
+
+#if NCURSES_EXT_COLORS
+
+/* fix redefinition versys tic.h */
+#undef entry
+#define entry my_entry
+#undef ENTRY
+#define ENTRY my_ENTRY
+
+#include <search.h>
+
+#endif
+
+MODULE_ID("$Id: new_pair.c,v 1.18 2019/01/21 14:54:47 tom Exp $")
+
+#if NCURSES_EXT_COLORS
+
+#ifdef NEW_PAIR_DEBUG
+
+static int
+prev_len(SCREEN *sp, int pair)
+{
+ int result = 1;
+ int base = pair;
+ colorpair_t *list = sp->_color_pairs;
+ while (list[pair].prev != base) {
+ result++;
+ pair = list[pair].prev;
+ }
+ return result;
+}
+
+static int
+next_len(SCREEN *sp, int pair)
+{
+ int result = 1;
+ int base = pair;
+ colorpair_t *list = sp->_color_pairs;
+ while (list[pair].next != base) {
+ result++;
+ pair = list[pair].next;
+ }
+ return result;
+}
+
+/*
+ * Trace the contents of LRU color-pairs.
+ */
+static void
+dumpit(SCREEN *sp, int pair, const char *tag)
+{
+ colorpair_t *list = sp->_color_pairs;
+ char bigbuf[256 * 20];
+ char *p = bigbuf;
+ int n;
+ size_t have = sizeof(bigbuf);
+
+ _nc_STRCPY(p, tag, have);
+ for (n = 0; n < sp->_pair_limit; ++n) {
+ if (list[n].mode != cpFREE) {
+ p += strlen(p);
+ if ((size_t) (p - bigbuf) + 50 > have)
+ break;
+ _nc_SPRINTF(p, _nc_SLIMIT(have - (p - bigbuf))
+ " %d%c(%d,%d)",
+ n, n == pair ? '@' : ':', list[n].next, list[n].prev);
+ }
+ }
+ T(("(%d/%d) %ld - %s",
+ next_len(sp, 0),
+ prev_len(sp, 0),
+ strlen(bigbuf), bigbuf));
+
+ if (next_len(sp, 0) != prev_len(sp, 0)) {
+ endwin();
+ ExitProgram(EXIT_FAILURE);
+ }
+}
+#else
+#define dumpit(sp, pair, tag) /* nothing */
+#endif
+
+static int
+compare_data(const void *a, const void *b)
+{
+ const colorpair_t *p = (const colorpair_t *) a;
+ const colorpair_t *q = (const colorpair_t *) b;
+ return ((p->fg == q->fg)
+ ? (p->bg - q->bg)
+ : (p->fg - q->fg));
+}
+
+static int
+_nc_find_color_pair(SCREEN *sp, int fg, int bg)
+{
+ colorpair_t find;
+ int result;
+ void *pp;
+
+ find.fg = fg;
+ find.bg = bg;
+ if (sp != 0 &&
+ (pp = tfind(&find, &sp->_ordered_pairs, compare_data)) != 0) {
+ colorpair_t *temp = *(colorpair_t **) pp;
+ result = (int) (temp - sp->_color_pairs);
+ } else {
+ result = -1;
+ }
+ return result;
+}
+
+static void
+delink_color_pair(SCREEN *sp, int pair)
+{
+ colorpair_t *list = sp->_color_pairs;
+ int prev = list[pair].prev;
+ int next = list[pair].next;
+
+ /* delink this from its current location */
+ if (list[prev].next == pair &&
+ list[next].prev == pair) {
+ list[prev].next = next;
+ list[next].prev = prev;
+ dumpit(sp, pair, "delinked");
+ }
+}
+
+/*
+ * Discard all nodes in the fast-index.
+ */
+NCURSES_EXPORT(void)
+_nc_free_ordered_pairs(SCREEN *sp)
+{
+ if (sp && sp->_ordered_pairs && sp->_pair_alloc) {
+ int n;
+ for (n = 0; n < sp->_pair_alloc; ++n) {
+ tdelete(&sp->_color_pairs[n], &sp->_ordered_pairs, compare_data);
+ }
+ }
+}
+
+/*
+ * Use this call to update the fast-index when modifying an entry in the color
+ * pair table.
+ */
+NCURSES_EXPORT(void)
+_nc_reset_color_pair(SCREEN *sp, int pair, colorpair_t * next)
+{
+ colorpair_t *last;
+ if (ValidPair(sp, pair)) {
+ ReservePairs(sp, pair);
+ last = &(sp->_color_pairs[pair]);
+ delink_color_pair(sp, pair);
+ if (last->mode > cpFREE &&
+ (last->fg != next->fg || last->bg != next->bg)) {
+ /* remove the old entry from fast index */
+ tdelete(last, &sp->_ordered_pairs, compare_data);
+ /* create a new entry in fast index */
+ *last = *next;
+ tsearch(last, &sp->_ordered_pairs, compare_data);
+ }
+ }
+}
+
+/*
+ * Use this call to relink the newest pair to the front of the list, keeping
+ * "0" first.
+ */
+NCURSES_EXPORT(void)
+_nc_set_color_pair(SCREEN *sp, int pair, int mode)
+{
+ if (ValidPair(sp, pair)) {
+ colorpair_t *list = sp->_color_pairs;
+ dumpit(sp, pair, "SET_PAIR");
+ list[0].mode = cpKEEP;
+ if (list[pair].mode <= cpFREE)
+ sp->_pairs_used++;
+ list[pair].mode = mode;
+ if (list[0].next != pair) {
+ /* link it at the front of the list */
+ list[pair].next = list[0].next;
+ list[list[pair].next].prev = pair;
+ list[pair].prev = 0;
+ list[0].next = pair;
+ }
+ dumpit(sp, pair, "...after");
+ }
+}
+
+/*
+ * If we reallocate the color-pair array, we have to adjust the fast-index.
+ */
+NCURSES_EXPORT(void)
+_nc_copy_pairs(SCREEN *sp, colorpair_t * target, colorpair_t * source, int length)
+{
+ int n;
+ for (n = 0; n < length; ++n) {
+ void *find = tfind(source + n, &sp->_ordered_pairs, compare_data);
+ if (find != 0) {
+ tdelete(source + n, &sp->_ordered_pairs, compare_data);
+ tsearch(target + n, &sp->_ordered_pairs, compare_data);
+ }
+ }
+}
+
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(alloc_pair) (NCURSES_SP_DCLx int fg, int bg)
+{
+ int pair;
+
+ T((T_CALLED("alloc_pair(%d,%d)"), fg, bg));
+ if (SP_PARM == 0) {
+ pair = -1;
+ } else if ((pair = _nc_find_color_pair(SP_PARM, fg, bg)) < 0) {
+ /*
+ * Check if all of the slots have been used. If not, find one and
+ * use that.
+ */
+ if (SP_PARM->_pairs_used + 1 < SP_PARM->_pair_limit) {
+ bool found = FALSE;
+ int hint = SP_PARM->_recent_pair;
+
+ /*
+ * The linear search is done to allow mixing calls to init_pair()
+ * and alloc_pair(). The former can make gaps...
+ */
+ for (pair = hint + 1; pair < SP_PARM->_pair_alloc; pair++) {
+ if (SP_PARM->_color_pairs[pair].mode == cpFREE) {
+ T(("found gap %d", pair));
+ found = TRUE;
+ break;
+ }
+ }
+ if (!found && (SP_PARM->_pair_alloc < SP_PARM->_pair_limit)) {
+ pair = SP_PARM->_pair_alloc;
+ ReservePairs(SP_PARM, pair);
+ if (SP_PARM->_color_pairs == 0) {
+ pair = -1;
+ } else {
+ found = TRUE;
+ }
+ }
+ if (!found) {
+ for (pair = 1; pair <= hint; pair++) {
+ if (SP_PARM->_color_pairs[pair].mode == cpFREE) {
+ T(("found gap %d", pair));
+ found = TRUE;
+ break;
+ }
+ }
+ }
+ if (found) {
+ SP_PARM->_recent_pair = pair;
+ } else {
+ pair = ERR;
+ }
+ } else {
+ /* reuse the oldest one */
+ pair = SP_PARM->_color_pairs[0].prev;
+ T(("reusing %d", pair));
+ }
+
+ if (_nc_init_pair(SP_PARM, pair, fg, bg) == ERR)
+ pair = ERR;
+ }
+ returnCode(pair);
+}
+
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(find_pair) (NCURSES_SP_DCLx int fg, int bg)
+{
+ int pair;
+
+ T((T_CALLED("find_pair(%d,%d)"), fg, bg));
+ pair = _nc_find_color_pair(SP_PARM, fg, bg);
+ returnCode(pair);
+}
+
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(free_pair) (NCURSES_SP_DCLx int pair)
+{
+ int result = ERR;
+ T((T_CALLED("free_pair(%d)"), pair));
+ if (ValidPair(SP_PARM, pair) && pair < SP_PARM->_pair_alloc) {
+ colorpair_t *cp = &(SP_PARM->_color_pairs[pair]);
+ if (pair != 0) {
+ _nc_change_pair(SP_PARM, pair);
+ delink_color_pair(SP_PARM, pair);
+ tdelete(cp, &SP_PARM->_ordered_pairs, compare_data);
+ cp->mode = cpFREE;
+ result = OK;
+ SP_PARM->_pairs_used--;
+ }
+ }
+ returnCode(result);
+}
+
+#if NCURSES_SP_FUNCS
+NCURSES_EXPORT(int)
+alloc_pair(int f, int b)
+{
+ return NCURSES_SP_NAME(alloc_pair) (CURRENT_SCREEN, f, b);
+}
+
+NCURSES_EXPORT(int)
+find_pair(int f, int b)
+{
+ return NCURSES_SP_NAME(find_pair) (CURRENT_SCREEN, f, b);
+}
+
+NCURSES_EXPORT(int)
+free_pair(int pair)
+{
+ return NCURSES_SP_NAME(free_pair) (CURRENT_SCREEN, pair);
+}
+#endif
+
+#if NO_LEAKS
+NCURSES_EXPORT(void)
+_nc_new_pair_leaks(SCREEN *sp)
+{
+ if (sp->_color_pairs) {
+ while (sp->_color_pairs[0].next) {
+ free_pair(sp->_color_pairs[0].next);
+ }
+ }
+}
+#endif
+
+#else
+void _nc_new_pair(void);
+void
+_nc_new_pair(void)
+{
+}
+#endif /* NCURSES_EXT_COLORS */
diff --git a/ncurses/base/resizeterm.c b/ncurses/base/resizeterm.c
index 03d52a448b09..c99109a69dff 100644
--- a/ncurses/base/resizeterm.c
+++ b/ncurses/base/resizeterm.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2016 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -45,7 +45,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: resizeterm.c,v 1.45 2012/07/07 17:07:23 tom Exp $")
+MODULE_ID("$Id: resizeterm.c,v 1.49 2016/05/28 23:11:26 tom Exp $")
/*
* If we're trying to be reentrant, do not want any local statics.
@@ -62,6 +62,12 @@ static int current_cols;
#define EXTRA_DCLS /* nothing */
#endif
+#if NCURSES_SP_FUNCS && !defined(USE_SP_WINDOWLIST)
+#define UNUSED_SP (void) sp
+#else
+#define UNUSED_SP /* nothing */
+#endif
+
#ifdef TRACE
static void
show_window_sizes(const char *name)
@@ -140,9 +146,10 @@ static int
ripped_bottom(WINDOW *win)
{
int result = 0;
- ripoff_t *rop;
if (win != 0) {
+ ripoff_t *rop;
+
#ifdef USE_SP_RIPOFF
SCREEN *sp = _nc_screen_of(win);
#endif
@@ -276,6 +283,7 @@ decrease_size(NCURSES_SP_DCLx int ToLines, int ToCols, int stolen EXTRA_DCLS)
WINDOWLIST *wp;
T((T_CALLED("decrease_size(%p, %d, %d)"), (void *) SP_PARM, ToLines, ToCols));
+ UNUSED_SP;
do {
found = FALSE;
@@ -310,6 +318,7 @@ increase_size(NCURSES_SP_DCLx int ToLines, int ToCols, int stolen EXTRA_DCLS)
WINDOWLIST *wp;
T((T_CALLED("increase_size(%p, %d, %d)"), (void *) SP_PARM, ToLines, ToCols));
+ UNUSED_SP;
do {
found = FALSE;
@@ -347,7 +356,7 @@ NCURSES_SP_NAME(resize_term) (NCURSES_SP_DCLx int ToLines, int ToCols)
(SP_PARM == 0) ? -1 : screen_lines(SP_PARM),
(SP_PARM == 0) ? -1 : screen_columns(SP_PARM)));
- if (SP_PARM == 0) {
+ if (SP_PARM == 0 || ToLines <= 0 || ToCols <= 0) {
returnCode(ERR);
}
@@ -397,7 +406,7 @@ NCURSES_SP_NAME(resize_term) (NCURSES_SP_DCLx int ToLines, int ToCols)
screen_columns(SP_PARM) = (NCURSES_SIZE_T) ToCols;
#ifdef USE_TERM_DRIVER
- CallDriver_2(SP_PARM, setsize, ToLines, ToCols);
+ CallDriver_2(SP_PARM, td_setsize, ToLines, ToCols);
#else
lines = (NCURSES_SIZE_T) ToLines;
columns = (NCURSES_SIZE_T) ToCols;
@@ -440,7 +449,7 @@ NCURSES_SP_NAME(resize_term) (NCURSES_SP_DCLx int ToLines, int ToCols)
NCURSES_EXPORT(int)
resize_term(int ToLines, int ToCols)
{
- int res = ERR;
+ int res;
_nc_sp_lock_global(curses);
res = NCURSES_SP_NAME(resize_term) (CURRENT_SCREEN, ToLines, ToCols);
_nc_sp_unlock_global(curses);
@@ -466,7 +475,7 @@ NCURSES_SP_NAME(resizeterm) (NCURSES_SP_DCLx int ToLines, int ToCols)
(SP_PARM == 0) ? -1 : screen_lines(SP_PARM),
(SP_PARM == 0) ? -1 : screen_columns(SP_PARM)));
- if (SP_PARM != 0) {
+ if (SP_PARM != 0 && ToLines > 0 && ToCols > 0) {
result = OK;
SP_PARM->_sig_winch = FALSE;
diff --git a/ncurses/base/safe_sprintf.c b/ncurses/base/safe_sprintf.c
index 34abd2f8cf47..e41da4ac27d1 100644
--- a/ncurses/base/safe_sprintf.c
+++ b/ncurses/base/safe_sprintf.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -33,7 +33,7 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: safe_sprintf.c,v 1.27 2013/01/20 01:04:32 tom Exp $")
+MODULE_ID("$Id: safe_sprintf.c,v 1.32 2018/12/15 22:26:38 tom Exp $")
#if USE_SAFE_SPRINTF
@@ -41,7 +41,7 @@ typedef enum {
Flags, Width, Prec, Type, Format
} PRINTF;
-#define VA_INTGR(type) ival = va_arg(ap, type)
+#define VA_INTGR(type) ival = (int) va_arg(ap, type)
#define VA_FLOAT(type) fval = va_arg(ap, type)
#define VA_POINT(type) pval = (void *)va_arg(ap, type)
@@ -157,9 +157,9 @@ _nc_printf_length(const char *fmt, va_list ap)
case 's':
VA_POINT(char *);
if (prec < 0)
- prec = strlen(pval);
+ prec = (int) strlen(pval);
if (prec > (int) length) {
- length = length + prec;
+ length = length + (size_t) prec;
buffer = typeRealloc(char, length, buffer);
if (buffer == 0) {
free(format);
@@ -224,7 +224,7 @@ NCURSES_SP_NAME(_nc_printf_string) (NCURSES_SP_DCLx
{
char *result = 0;
- if (fmt != 0) {
+ if (SP_PARM != 0 && fmt != 0) {
#if USE_SAFE_SPRINTF
va_list ap2;
int len;
@@ -234,7 +234,7 @@ NCURSES_SP_NAME(_nc_printf_string) (NCURSES_SP_DCLx
end_va_copy(ap2);
if ((int) my_length < len + 1) {
- my_length = 2 * (len + 1);
+ my_length = (size_t) (2 * (len + 1));
my_buffer = typeRealloc(char, my_length, my_buffer);
}
if (my_buffer != 0) {
@@ -259,9 +259,9 @@ NCURSES_SP_NAME(_nc_printf_string) (NCURSES_SP_DCLx
if (my_buffer != 0) {
# if HAVE_VSNPRINTF
- vsnprintf(my_buffer, my_length, fmt, ap); /* GNU extension */
+ vsnprintf(my_buffer, my_length, fmt, ap); /* SUSv2, 1997 */
# else
- vsprintf(my_buffer, fmt, ap); /* ANSI */
+ vsprintf(my_buffer, fmt, ap); /* ISO/ANSI C, 1989 */
# endif
result = my_buffer;
}
diff --git a/ncurses/base/use_window.c b/ncurses/base/use_window.c
index 8eb733919848..c3a5b7237e61 100644
--- a/ncurses/base/use_window.c
+++ b/ncurses/base/use_window.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2007-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2016,2018 Free 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,14 +32,19 @@
#include <curses.priv.h>
-MODULE_ID("$Id: use_window.c,v 1.9 2009/10/24 22:40:24 tom Exp $")
+MODULE_ID("$Id: use_window.c,v 1.12 2018/12/15 23:53:20 tom Exp $")
NCURSES_EXPORT(int)
use_window(WINDOW *win, NCURSES_WINDOW_CB func, void *data)
{
int code = OK;
+ TR_FUNC_BFR(1);
+
+ T((T_CALLED("use_window(%p,%s,%p)"),
+ (void *) win,
+ TR_FUNC_ARG(0, func),
+ data));
- T((T_CALLED("use_window(%p,%p,%p)"), (void *) win, func, data));
_nc_lock_global(curses);
code = func(win, data);
_nc_unlock_global(curses);
diff --git a/ncurses/base/wresize.c b/ncurses/base/wresize.c
index bc6b5732ea41..ee0594034d37 100644
--- a/ncurses/base/wresize.c
+++ b/ncurses/base/wresize.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2019 Free 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,13 +33,13 @@
#include <curses.priv.h>
-MODULE_ID("$Id: wresize.c,v 1.35 2011/05/21 18:55:07 tom Exp $")
+MODULE_ID("$Id: wresize.c,v 1.38 2019/05/11 20:15:15 tom Exp $")
static int
cleanup_lines(struct ldat *data, int length)
{
while (--length >= 0)
- free(data[length].text);
+ FreeAndNull(data[length].text);
free(data);
return ERR;
}
@@ -65,15 +65,29 @@ repair_subwindows(WINDOW *cmp)
if (tst->_parent == cmp) {
- if (tst->_pary > cmp->_maxy)
- tst->_pary = cmp->_maxy;
- if (tst->_parx > cmp->_maxx)
- tst->_parx = cmp->_maxx;
+#define REPAIR1(field, limit) \
+ if (tst->field > cmp->limit) \
+ tst->field = cmp->limit
- if (tst->_maxy + tst->_pary > cmp->_maxy)
- tst->_maxy = (NCURSES_SIZE_T) (cmp->_maxy - tst->_pary);
- if (tst->_maxx + tst->_parx > cmp->_maxx)
- tst->_maxx = (NCURSES_SIZE_T) (cmp->_maxx - tst->_parx);
+ REPAIR1(_pary, _maxy);
+ REPAIR1(_parx, _maxx);
+
+#define REPAIR2(field, limit) \
+ if (tst->limit + tst->field > cmp->limit) \
+ tst->limit = (NCURSES_SIZE_T) (cmp->limit - tst->field)
+
+ REPAIR2(_pary, _maxy);
+ REPAIR2(_parx, _maxx);
+
+#define REPAIR3(field, limit) \
+ if (tst->field > tst->limit) \
+ tst->field = tst->limit
+
+ REPAIR3(_cury, _maxy);
+ REPAIR3(_curx, _maxx);
+
+ REPAIR3(_regtop, _maxy);
+ REPAIR3(_regbottom, _maxy);
for (row = 0; row <= tst->_maxy; ++row) {
tst->_line[row].text = &pline[tst->_pary + row].text[tst->_parx];
@@ -204,16 +218,16 @@ wresize(WINDOW *win, int ToLines, int ToCols)
if (!(win->_flags & _SUBWIN)) {
if (ToCols == size_x) {
for (row = ToLines + 1; row <= size_y; row++) {
- free(win->_line[row].text);
+ FreeAndNull(win->_line[row].text);
}
} else {
for (row = 0; row <= size_y; row++) {
- free(win->_line[row].text);
+ FreeAndNull(win->_line[row].text);
}
}
}
- free(win->_line);
+ FreeAndNull(win->_line);
win->_line = new_lines;
/*
diff --git a/ncurses/build.priv.h b/ncurses/build.priv.h
index 096a4431bc1e..b175faf781c7 100644
--- a/ncurses/build.priv.h
+++ b/ncurses/build.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2010-2019,2020 Free 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,11 +31,11 @@
****************************************************************************/
/*
- * $Id: build.priv.h,v 1.9 2012/02/22 22:17:02 tom Exp $
+ * $Id: build.priv.h,v 1.11 2020/01/18 17:03:32 tom Exp $
*
* build.priv.h
*
- * This is a reduced version of curses.priv.h, for build-time utilties.
+ * This is a reduced version of curses.priv.h, for build-time utilities.
* Because it has fewer dependencies, this simplifies cross-compiling.
*
*/
@@ -54,7 +54,7 @@ extern "C" {
#if USE_RCS_IDS
#define MODULE_ID(id) static const char Ident[] = id;
#else
-#define MODULE_ID(id) /*nothing*/
+#define MODULE_ID(id) /*nothing */
#endif
#include <stdlib.h>
@@ -66,7 +66,7 @@ extern "C" {
#include <errno.h>
-#include <curses.h> /* we'll use -Ipath directive to get the right one! */
+#include <curses.h> /* we'll use -Ipath directive to get the right one! */
/* usually in <unistd.h> */
#ifndef EXIT_SUCCESS
@@ -77,7 +77,7 @@ extern "C" {
#define EXIT_FAILURE 1
#endif
-#define FreeAndNull(p) free(p); p = 0
+#define FreeAndNull(p) do { free(p); p = 0; } while (0)
#define UChar(c) ((unsigned char)(c))
#define SIZEOF(v) (sizeof(v) / sizeof(v[0]))
@@ -89,20 +89,19 @@ extern "C" {
#define NCURSES_ARRAY(name) \
NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, name)
-NCURSES_ARRAY(boolnames);
-NCURSES_ARRAY(boolfnames);
-NCURSES_ARRAY(numnames);
-NCURSES_ARRAY(numfnames);
-NCURSES_ARRAY(strnames);
-NCURSES_ARRAY(strfnames);
+ NCURSES_ARRAY(boolnames);
+ NCURSES_ARRAY(boolfnames);
+ NCURSES_ARRAY(numnames);
+ NCURSES_ARRAY(numfnames);
+ NCURSES_ARRAY(strnames);
+ NCURSES_ARRAY(strfnames);
#endif
#if NO_LEAKS
-NCURSES_EXPORT(void) _nc_names_leaks(void);
+ NCURSES_EXPORT(void) _nc_names_leaks(void);
#endif
#ifdef __cplusplus
}
#endif
-
-#endif /* CURSES_PRIV_H */
+#endif /* CURSES_PRIV_H */
diff --git a/ncurses/curses.priv.h b/ncurses/curses.priv.h
index 7deffad5ea68..2c0ef2122790 100644
--- a/ncurses/curses.priv.h
+++ b/ncurses/curses.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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 @@
****************************************************************************/
/*
- * $Id: curses.priv.h,v 1.530 2014/02/01 22:09:27 tom Exp $
+ * $Id: curses.priv.h,v 1.627 2019/12/14 22:36:12 tom Exp $
*
* curses.priv.h
*
@@ -71,7 +71,7 @@ extern "C" {
#include <unistd.h>
#endif
-#if HAVE_SYS_BSDTYPES_H
+#if HAVE_SYS_BSDTYPES_H && !(defined(_WIN32) || defined(_WIN64))
#include <sys/bsdtypes.h> /* needed for ISC */
#endif
@@ -180,6 +180,18 @@ extern int errno;
#endif
/*
+ * When building in the MSYS2 environment, the automatic discovery of
+ * the path separator in configure doesn't work properly. So, if building
+ * for MinGW, we enforce the correct Windows PATH separator
+ */
+#ifdef _WIN32
+# ifdef NCURSES_PATHSEP
+# undef NCURSES_PATHSEP
+# endif
+# define NCURSES_PATHSEP ';'
+#endif
+
+/*
* If desired, one can configure this, disabling environment variables that
* point to custom terminfo/termcap locations.
*/
@@ -228,6 +240,18 @@ extern NCURSES_EXPORT(void *) _nc_memmove (void *, const void *, size_t);
#endif
/*
+ * POSIX ignores the "b", which c89 specified. Some very old systems do not
+ * accept it.
+ */
+#if USE_FOPEN_BIN_R
+#define BIN_R "rb"
+#define BIN_W "wb"
+#else
+#define BIN_R "r"
+#define BIN_W "w"
+#endif
+
+/*
* Scroll hints are useless when hashmap is used
*/
#if !USE_SCROLL_HINTS
@@ -302,7 +326,7 @@ typedef TRIES {
#undef _XOPEN_SOURCE_EXTENDED
#undef _XPG5
#define _nc_bkgd _bkgd
-#define wgetbkgrnd(win, wch) *wch = win->_bkgd
+#define wgetbkgrnd(win, wch) ((*wch = win->_bkgd) != 0 ? OK : ERR)
#define wbkgrnd wbkgd
#endif
@@ -314,12 +338,21 @@ typedef TRIES {
typedef struct
{
- NCURSES_COLOR_T red, green, blue; /* what color_content() returns */
- NCURSES_COLOR_T r, g, b; /* params to init_color() */
+ int red, green, blue; /* what color_content() returns */
+ int r, g, b; /* params to init_color() */
int init; /* true if we called init_color() */
}
color_t;
+typedef union {
+ struct {
+ unsigned char red;
+ unsigned char green;
+ unsigned char blue;
+ } bits; /* bits per color-value in RGB */
+ unsigned value;
+} rgb_bits_t;
+
/*
* If curses.h did not expose the SCREEN-functions, then we do not need the
* parameter in the corresponding unextended functions.
@@ -346,6 +379,9 @@ color_t;
#include <nc_panel.h>
+#include <term.h>
+#include <nc_termios.h>
+
#define IsPreScreen(sp) (((sp) != 0) && sp->_prescreen)
#define HasTerminal(sp) (((sp) != 0) && (0 != ((sp)->_term)))
#define IsValidScreen(sp) (HasTerminal(sp) && !IsPreScreen(sp))
@@ -362,8 +398,31 @@ color_t;
#define TerminalOf(sp) CurTerm
#endif
-#include <term.h>
-#include <nc_termios.h>
+/*
+ * The legacy layout for TERMTYPE uses "short" for all of the numbers. Moving
+ * past that, numeric capabilities can be "int" by using a TERMTYPE2 structure
+ * in TERMINAL, and doing most of the internal work using TERMTYPE2. There are
+ * a few places (mostly to expose the legacy layout) where the distinction
+ * needs attention.
+ */
+#if NCURSES_EXT_COLORS && HAVE_INIT_EXTENDED_COLOR
+#define NCURSES_EXT_NUMBERS 1
+#define NCURSES_INT2 int
+#define SIZEOF_INT2 4
+#define TerminalType(tp) (tp)->type2
+#else
+#define NCURSES_EXT_NUMBERS 0
+#define NCURSES_INT2 short
+#define SIZEOF_INT2 2
+#define TerminalType(tp) (tp)->type
+#endif
+
+#define SIZEOF_SHORT 2
+
+#ifdef CUR
+#undef CUR
+#define CUR TerminalType(cur_term).
+#endif
/*
* Reduce dependency on cur_term global by using terminfo data from SCREEN's
@@ -373,7 +432,7 @@ color_t;
#undef CUR
#endif
-#define SP_TERMTYPE TerminalOf(sp)->type.
+#define SP_TERMTYPE TerminalType(TerminalOf(sp)).
#include <term_entry.h>
@@ -382,10 +441,11 @@ color_t;
/*
* Simplify ifdef's for the "*_ATTR" macros in case italics are not configured.
*/
-#ifdef A_ITALIC
+#if defined(A_ITALIC) && defined(exit_italics_mode)
#define USE_ITALIC 1
#else
#define USE_ITALIC 0
+#undef A_ITALIC
#define A_ITALIC 0
#endif
@@ -394,7 +454,7 @@ color_t;
* option for compiling the tracing into the library.
*/
#if 1
-#define ColorPair(n) NCURSES_BITS(n, 0)
+#define ColorPair(n) (NCURSES_BITS(n, 0) & A_COLOR)
#define PairNumber(a) (NCURSES_CAST(int,(((unsigned long)(a) & A_COLOR) >> NCURSES_ATTR_SHIFT)))
#else
#define ColorPair(pair) COLOR_PAIR(pair)
@@ -414,7 +474,7 @@ color_t;
#define if_EXT_COLORS(stmt) stmt
#define SetPair(value,p) SetPair2((value).ext_color, AttrOf(value), p)
#define SetPair2(c,a,p) c = (p), \
- a = (unColor2(a) | (A_COLOR & (unsigned) ColorPair(oldColor(c))))
+ a = (unColor2(a) | ColorPair(oldColor(c)))
#define GetPair(value) GetPair2((value).ext_color, AttrOf(value))
#define GetPair2(c,a) ((c) ? (c) : PairNumber(a))
#define oldColor(p) (((p) > 255) ? 255 : (p))
@@ -422,20 +482,27 @@ color_t;
#define SET_WINDOW_PAIR(w,p) (w)->_color = (p)
#define SameAttrOf(a,b) (AttrOf(a) == AttrOf(b) && GetPair(a) == GetPair(b))
-#define VIDATTR(sp,attr,pair) NCURSES_SP_NAME(vid_puts)(NCURSES_SP_ARGx attr, (short) pair, 0, NCURSES_OUTC_FUNC)
+#define VIDPUTS(sp,attr,pair) do { \
+ int vid_pair = pair; \
+ NCURSES_SP_NAME(vid_puts)( \
+ NCURSES_SP_ARGx attr, \
+ (NCURSES_PAIRS_T) pair, \
+ &vid_pair, \
+ NCURSES_OUTC_FUNC); \
+ } while (0)
#else /* !NCURSES_EXT_COLORS */
#define if_EXT_COLORS(stmt) /* nothing */
#define SetPair(value,p) RemAttr(value, A_COLOR), \
- SetAttr(value, AttrOf(value) | (A_COLOR & (attr_t) ColorPair(p)))
+ SetAttr(value, AttrOf(value) | ColorPair(p))
#define GetPair(value) PairNumber(AttrOf(value))
#define GET_WINDOW_PAIR(w) PairNumber(WINDOW_ATTRS(w))
#define SET_WINDOW_PAIR(w,p) WINDOW_ATTRS(w) &= ALL_BUT_COLOR, \
- WINDOW_ATTRS(w) |= (A_COLOR & (attr_t) ColorPair(p))
+ WINDOW_ATTRS(w) |= ColorPair(p)
#define SameAttrOf(a,b) (AttrOf(a) == AttrOf(b))
-#define VIDATTR(sp,attr,pair) NCURSES_SP_NAME(vidputs)(NCURSES_SP_ARGx attr, NCURSES_OUTC_FUNC)
+#define VIDPUTS(sp,attr,pair) NCURSES_SP_NAME(vidputs)(NCURSES_SP_ARGx attr, NCURSES_OUTC_FUNC)
#endif /* NCURSES_EXT_COLORS */
@@ -491,6 +558,8 @@ NCURSES_EXPORT(int *) _nc_ptr_Escdelay (SCREEN *);
#endif
+#define HasHardTabs() (NonEmpty(clear_all_tabs) && NonEmpty(set_tab))
+
#define TR_MUTEX(data) _tracef("%s@%d: me:%08lX COUNT:%2u/%2d/%6d/%2d/%s%9u: " #data, \
__FILE__, __LINE__, \
(unsigned long) (pthread_self()), \
@@ -549,7 +618,10 @@ weak_symbol(pthread_mutexattr_settype);
weak_symbol(pthread_mutexattr_init);
extern NCURSES_EXPORT(int) _nc_sigprocmask(int, const sigset_t *, sigset_t *);
# undef sigprocmask
-# define sigprocmask _nc_sigprocmask
+# define sigprocmask(a, b, c) _nc_sigprocmask(a, b, c)
+# define GetThreadID() (((pthread_self)) ? pthread_self() : (pthread_t) getpid())
+# else
+# define GetThreadID() pthread_self()
# endif
#endif
@@ -569,7 +641,7 @@ weak_symbol(pthread_self);
weak_symbol(pthread_equal);
extern NCURSES_EXPORT(int) _nc_sigprocmask(int, const sigset_t *, sigset_t *);
# undef sigprocmask
-# define sigprocmask _nc_sigprocmask
+# define sigprocmask(a, b, c) _nc_sigprocmask(a, b, c)
# endif
#endif /* USE_PTHREADS_EINTR */
@@ -623,15 +695,13 @@ extern NCURSES_EXPORT(int) _nc_sigprocmask(int, const sigset_t *, sigset_t *);
/*
* Definitions for color pairs
*/
-typedef unsigned colorpair_t; /* type big enough to store PAIR_OF() */
-#define C_SHIFT 9 /* we need more bits than there are colors */
-#define C_MASK ((1 << C_SHIFT) - 1)
-#define PAIR_OF(fg, bg) (colorpair_t) ((((fg) & C_MASK) << C_SHIFT) | ((bg) & C_MASK))
-#define FORE_OF(c) (((c) >> C_SHIFT) & C_MASK)
-#define BACK_OF(c) ((c) & C_MASK)
-#define isDefaultColor(c) ((c) >= COLOR_DEFAULT || (c) < 0)
-#define COLOR_DEFAULT C_MASK
+#define MAX_OF_TYPE(t) (int)(((unsigned t)(~0))>>1)
+
+#include <new_pair.h>
+
+#define isDefaultColor(c) ((c) < 0)
+#define COLOR_DEFAULT -1
#if defined(USE_BUILD_CC) || (defined(USE_TERMLIB) && !defined(NEED_NCURSES_CH_T))
@@ -664,6 +734,14 @@ typedef enum {
#endif
} MouseType;
+typedef enum {
+ MF_X10 = 0 /* conventional 3-byte format */
+ , MF_SGR1006 /* xterm private mode 1006, SGR-style */
+#ifdef EXP_XTERM_1005
+ , MF_XTERM_1005 /* xterm UTF-8 private mode 1005 */
+#endif
+} MouseFormat;
+
/*
* Structures for scrolling.
*/
@@ -748,6 +826,16 @@ typedef struct {
#define TGETENT_MAX 4
/*
+ * When converting from terminfo to termcap, check for cases where we can trim
+ * octal escapes down to 2-character form. It is useful for terminfo format
+ * also, but not as important.
+ */
+#define MAX_TC_FIXUPS 10
+#define MIN_TC_FIXUPS 4
+
+#define isoctal(c) ((c) >= '0' && (c) <= '7')
+
+/*
* State of tparm().
*/
#define STACKSIZE 20
@@ -763,9 +851,6 @@ typedef struct {
#define NUM_VARS 26
typedef struct {
-#ifdef TRACE
- const char *tname;
-#endif
const char *tparam_base;
STACK_FRAME stack[STACKSIZE];
@@ -780,6 +865,9 @@ typedef struct {
int dynamic_var[NUM_VARS];
int static_vars[NUM_VARS];
+#ifdef TRACE
+ const char *tname;
+#endif
} TPARM_STATE;
typedef struct {
@@ -849,6 +937,8 @@ typedef struct {
int slk_format;
+ int getstr_limit; /* getstr_limit based on POSIX LINE_MAX */
+
char *safeprint_buf;
size_t safeprint_used;
@@ -862,6 +952,10 @@ typedef struct {
time_t dbd_time; /* cache last updated */
ITERATOR_VARS dbd_vars[dbdLAST];
+#ifdef USE_TERM_DRIVER
+ int (*term_driver)(struct DriverTCB*, const char*, int*);
+#endif
+
#ifndef USE_SP_WINDOWLIST
WINDOWLIST *_nc_windowlist;
#define WindowList(sp) _nc_globals._nc_windowlist
@@ -876,15 +970,30 @@ typedef struct {
int safeprint_rows;
#endif
-#ifdef USE_TERM_DRIVER
- int (*term_driver)(struct DriverTCB*, const char*, int*);
+#ifdef USE_PTHREADS
+ pthread_mutex_t mutex_curses;
+ pthread_mutex_t mutex_prescreen;
+ pthread_mutex_t mutex_screen;
+ pthread_mutex_t mutex_update;
+ pthread_mutex_t mutex_tst_tracef;
+ pthread_mutex_t mutex_tracef;
+ int nested_tracef;
+ int use_pthreads;
+#define _nc_use_pthreads _nc_globals.use_pthreads
+#if USE_PTHREADS_EINTR
+ pthread_t read_thread; /* The reading thread */
+#endif
+#endif
+#if USE_WIDEC_SUPPORT
+ char key_name[MB_LEN_MAX + 1];
#endif
#ifdef TRACE
- bool init_trace;
+ bool trace_opened;
char trace_fname[PATH_MAX];
int trace_level;
FILE *trace_fp;
+ int trace_fd;
char *tracearg_buf;
size_t tracearg_used;
@@ -908,16 +1017,8 @@ typedef struct {
#endif
#endif /* TRACE */
-#ifdef USE_PTHREADS
- pthread_mutex_t mutex_curses;
- pthread_mutex_t mutex_tst_tracef;
- pthread_mutex_t mutex_tracef;
- int nested_tracef;
- int use_pthreads;
-#define _nc_use_pthreads _nc_globals.use_pthreads
-#endif
-#if USE_PTHREADS_EINTR
- pthread_t read_thread; /* The reading thread */
+#if NO_LEAKS
+ bool leak_checking;
#endif
} NCURSES_GLOBALS;
@@ -925,24 +1026,47 @@ extern NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals;
#define N_RIPS 5
+/* The limit reserves one byte for a terminating NUL */
+#define my_getstr_limit (_nc_globals.getstr_limit - 1)
+#define _nc_getstr_limit(n) \
+ (((n) < 0) \
+ ? my_getstr_limit \
+ : (((n) > my_getstr_limit) \
+ ? my_getstr_limit \
+ : (n)))
+
+#ifdef USE_PTHREADS
+typedef struct _prescreen_list {
+ struct _prescreen_list *next;
+ pthread_t id;
+ struct screen *sp;
+} PRESCREEN_LIST;
+#endif
+
/*
* Global data which can be swept up into a SCREEN when one is created.
* It may be modified before the next SCREEN is created.
*/
typedef struct {
+#ifdef USE_PTHREADS
+ PRESCREEN_LIST *allocated;
+#else
+ struct screen * allocated;
+#endif
bool use_env;
bool filter_mode;
attr_t previous_attr;
+ TPARM_STATE tparm_state;
+ TTY *saved_tty; /* savetty/resetty information */
+ bool use_tioctl;
+ NCURSES_SP_OUTC _outch; /* output handler if not putc */
#ifndef USE_SP_RIPOFF
ripoff_t rippedoff[N_RIPS];
ripoff_t *rsp;
#endif
- TPARM_STATE tparm_state;
- TTY *saved_tty; /* savetty/resetty information */
#if NCURSES_NO_PADDING
bool _no_padding; /* flag to set if padding disabled */
#endif
- NCURSES_SP_OUTC _outch; /* output handler if not putc */
#if BROKEN_LINKER || USE_REENTRANT
chtype *real_acs_map;
int _LINES;
@@ -950,12 +1074,13 @@ typedef struct {
int _TABSIZE;
int _ESCDELAY;
TERMINAL *_cur_term;
+#endif
#ifdef TRACE
+#if BROKEN_LINKER || USE_REENTRANT
long _outchars;
const char *_tputs_trace;
#endif
#endif
- bool use_tioctl;
} NCURSES_PRESCREEN;
/*
@@ -971,6 +1096,12 @@ typedef struct {
extern NCURSES_EXPORT_VAR(NCURSES_PRESCREEN) _nc_prescreen;
+typedef enum {
+ ewInitial = 0,
+ ewRunning,
+ ewSuspend
+} ENDWIN;
+
/*
* The SCREEN structure.
*/
@@ -1031,18 +1162,11 @@ struct screen {
struct _SLK *_slk; /* ptr to soft key struct / NULL */
int slk_format; /* selected format for this screen */
/* cursor movement costs; units are 10ths of milliseconds */
-#if NCURSES_NO_PADDING
- bool _no_padding; /* flag to set if padding disabled */
-#endif
int _char_padding; /* cost of character put */
int _cr_cost; /* cost of (carriage_return) */
int _cup_cost; /* cost of (cursor_address) */
int _home_cost; /* cost of (cursor_home) */
int _ll_cost; /* cost of (cursor_to_ll) */
-#if USE_HARD_TABS
- int _ht_cost; /* cost of (tab) */
- int _cbt_cost; /* cost of (backtab) */
-#endif /* USE_HARD_TABS */
int _cub1_cost; /* cost of (cursor_left) */
int _cuf1_cost; /* cost of (cursor_right) */
int _cud1_cost; /* cost of (cursor_down) */
@@ -1076,19 +1200,13 @@ struct screen {
int _scrolling; /* 1 if terminal's smart enough to */
/* used in lib_color.c */
+ rgb_bits_t _direct_color; /* RGB overrides color-table */
color_t *_color_table; /* screen's color palette */
int _color_count; /* count of colors in palette */
colorpair_t *_color_pairs; /* screen's color pair list */
- int _pair_count; /* count of color pairs */
+ int _pair_count; /* same as COLOR_PAIRS */
int _pair_limit; /* actual limit of color-pairs */
-#if NCURSES_EXT_FUNCS
- bool _assumed_color; /* use assumed colors */
- 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 */
- int _default_pairs; /* count pairs using default color */
-#endif
+ int _pair_alloc; /* current table-size of color-pairs */
chtype _ok_attributes; /* valid attributes for terminal */
chtype _xmc_suppress; /* attributes to suppress if xmc */
chtype _xmc_triggers; /* attributes to process if xmc */
@@ -1099,13 +1217,6 @@ struct screen {
/* used in lib_vidattr.c */
bool _use_rmso; /* true if we may use 'rmso' */
bool _use_rmul; /* true if we may use 'rmul' */
-#if USE_ITALIC
- bool _use_ritm; /* true if we may use 'ritm' */
-#endif
-
-#if USE_KLIBC_KBD
- bool _extended_key; /* true if an extended key */
-#endif
/*
* These data correspond to the state of the idcok() and idlok()
@@ -1133,10 +1244,65 @@ struct screen {
mmask_t _mouse_mask; /* set via mousemask() */
mmask_t _mouse_mask2; /* OR's in press/release bits */
mmask_t _mouse_bstate;
+ MouseFormat _mouse_format; /* type of xterm mouse protocol */
NCURSES_CONST char *_mouse_xtermcap; /* string to enable/disable mouse */
MEVENT _mouse_events[EV_MAX]; /* hold the last mouse event seen */
MEVENT *_mouse_eventp; /* next free slot in event queue */
+ /*
+ * These are data that support the proper handling of the panel stack on an
+ * per screen basis.
+ */
+ struct panelhook _panelHook;
+
+ bool _sig_winch;
+ SCREEN *_next_screen;
+
+ /* hashes for old and new lines */
+ unsigned long *oldhash, *newhash;
+ HASHMAP *hashtab;
+ int hashtab_len;
+ int *_oldnum_list;
+ int _oldnum_size;
+
+ NCURSES_SP_OUTC _outch; /* output handler if not putc */
+ NCURSES_OUTC jump;
+
+ ripoff_t rippedoff[N_RIPS];
+ ripoff_t *rsp;
+
+ int _legacy_coding; /* see use_legacy_coding() */
+
+#if NCURSES_NO_PADDING
+ bool _no_padding; /* flag to set if padding disabled */
+#endif
+
+#if USE_HARD_TABS
+ int _ht_cost; /* cost of (tab) */
+ int _cbt_cost; /* cost of (backtab) */
+#endif /* USE_HARD_TABS */
+
+ /* used in lib_vidattr.c */
+#if USE_ITALIC
+ bool _use_ritm; /* true if we may use 'ritm' */
+#endif
+
+ /* used in getch/twait */
+#if USE_KLIBC_KBD
+ bool _extended_key; /* true if an extended key */
+#endif
+
+ /* used in lib_color.c */
+#if NCURSES_EXT_FUNCS
+ bool _assumed_color; /* use assumed colors */
+ 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 */
+ int _default_pairs; /* count pairs using default color */
+#endif
+
+ /* system-dependent mouse data */
#if USE_GPM_SUPPORT
bool _mouse_gpm_loaded;
bool _mouse_gpm_found;
@@ -1182,25 +1348,10 @@ struct screen {
int (*_ungetch)(SCREEN *, int);
#endif
- /*
- * These are data that support the proper handling of the panel stack on an
- * per screen basis.
- */
- struct panelhook _panelHook;
-
- bool _sig_winch;
- SCREEN *_next_screen;
-
- /* hashes for old and new lines */
- unsigned long *oldhash, *newhash;
- HASHMAP *hashtab;
- int hashtab_len;
- int *_oldnum_list;
- int _oldnum_size;
-
- NCURSES_SP_OUTC _outch; /* output handler if not putc */
-
- int _legacy_coding; /* see use_legacy_coding() */
+#ifdef USE_SP_WINDOWLIST
+ WINDOWLIST* _windowlist;
+#define WindowList(sp) (sp)->_windowlist
+#endif
#if USE_REENTRANT
char _ttytype[NAMESIZE];
@@ -1208,24 +1359,11 @@ struct screen {
int _TABSIZE;
int _LINES;
int _COLS;
-#ifdef TRACE
- long _outchars;
- const char *_tputs_trace;
-#endif
#endif
-#ifdef TRACE
- char tracechr_buf[40];
- char tracemse_buf[TRACEMSE_MAX];
-#endif
-#ifdef USE_SP_WINDOWLIST
- WINDOWLIST* _windowlist;
-#define WindowList(sp) (sp)->_windowlist
+#if NCURSES_SP_FUNCS
+ bool use_tioctl;
#endif
- NCURSES_OUTC jump;
-
- ripoff_t rippedoff[N_RIPS];
- ripoff_t *rsp;
/*
* ncurses/ncursesw are the same up to this point.
@@ -1238,7 +1376,20 @@ struct screen {
bool _screen_unicode;
#endif
- bool _use_tioctl;
+#if NCURSES_EXT_FUNCS && NCURSES_EXT_COLORS
+ void *_ordered_pairs; /* index used by alloc_pair() */
+ int _pairs_used; /* actual number of color-pairs used */
+ int _recent_pair; /* number for most recent free-pair */
+#endif
+
+#ifdef TRACE
+ char tracechr_buf[40];
+ char tracemse_buf[TRACEMSE_MAX];
+#if USE_REENTRANT
+ long _outchars;
+ const char *_tputs_trace;
+#endif
+#endif
};
extern NCURSES_EXPORT_VAR(SCREEN *) _nc_screen_chain;
@@ -1258,6 +1409,12 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
#define WINDOW_EXT(w,m) (((WINDOWLIST *)((void *)((char *)(w) - offsetof(WINDOWLIST, win))))->m)
+#ifdef USE_SP_WINDOWLIST
+#define SP_INIT_WINDOWLIST(sp) WindowList(sp) = 0
+#else
+#define SP_INIT_WINDOWLIST(sp) /* nothing */
+#endif
+
#define SP_PRE_INIT(sp) \
sp->_cursrow = -1; \
sp->_curscol = -1; \
@@ -1266,9 +1423,9 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
sp->_cbreak = 0; \
sp->_echo = TRUE; \
sp->_fifohead = -1; \
- sp->_endwin = TRUE; \
+ sp->_endwin = ewSuspend; \
sp->_cursor = -1; \
- WindowList(sp) = 0; \
+ SP_INIT_WINDOWLIST(sp); \
sp->_outch = NCURSES_OUTC_FUNC; \
sp->jump = 0 \
@@ -1350,6 +1507,8 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
#define ChCharOf(c) ((chtype)(c) & (chtype)A_CHARTEXT)
#define ChAttrOf(c) ((chtype)(c) & (chtype)A_ATTRIBUTES)
+#define TR_PUTC(c) TR(TRACE_CHARPUT, ("PUTC %#x", UChar(c)))
+
#ifndef MB_LEN_MAX
#define MB_LEN_MAX 8 /* should be >= MB_CUR_MAX, but that may be a function */
#endif
@@ -1384,6 +1543,8 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
&& (a).chars[3] == (b).chars[3] \
&& (a).chars[4] == (b).chars[4] \
if_EXT_COLORS(&& (a).ext_color == (b).ext_color))
+#elif CCHARW_MAX > 0
+#error Inconsistent values for CCHARW_MAX
#else
#define CharEq(a,b) (!memcmp(&(a), &(b), sizeof(a)))
#endif
@@ -1404,23 +1565,27 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
#define PUTC_INIT init_mb (PUT_st)
#define PUTC(ch) do { if(!isWidecExt(ch)) { \
if (Charable(ch)) { \
- NCURSES_OUTC_FUNC (NCURSES_SP_ARGx CharOf(ch)); \
+ TR_PUTC(CharOf(ch)); \
+ NCURSES_OUTC_FUNC (NCURSES_SP_ARGx CharOf(ch)); \
COUNT_OUTCHARS(1); \
} else { \
- PUTC_INIT; \
for (PUTC_i = 0; PUTC_i < CCHARW_MAX; ++PUTC_i) { \
PUTC_ch = (ch).chars[PUTC_i]; \
if (PUTC_ch == L'\0') \
break; \
+ PUTC_INIT; \
PUTC_n = (int) wcrtomb(PUTC_buf, \
(ch).chars[PUTC_i], &PUT_st); \
if (PUTC_n <= 0) { \
- if (PUTC_ch && is8bits(PUTC_ch) && PUTC_i == 0) \
+ if (PUTC_ch && is8bits(PUTC_ch) && PUTC_i == 0) { \
+ TR_PUTC(CharOf(ch)); \
NCURSES_OUTC_FUNC (NCURSES_SP_ARGx CharOf(ch)); \
+ } \
break; \
} else { \
int PUTC_j; \
for (PUTC_j = 0; PUTC_j < PUTC_n; ++PUTC_j) { \
+ TR_PUTC(PUTC_buf[PUTC_j]); \
NCURSES_OUTC_FUNC (NCURSES_SP_ARGx PUTC_buf[PUTC_j]); \
} \
} \
@@ -1446,11 +1611,11 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
AttrOf(dst) |= (attr_t) (ext + 1)
#define if_WIDEC(code) code
-#define Charable(ch) ((SP_PARM->_legacy_coding) \
+#define Charable(ch) (((SP_PARM->_legacy_coding) \
|| (AttrOf(ch) & A_ALTCHARSET) \
- || (!isWidecExt(ch) && \
+ || (!isWidecExt(ch))) && \
(ch).chars[1] == L'\0' && \
- _nc_is_charable(CharOf(ch))))
+ _nc_is_charable(CharOf(ch)))
#define L(ch) L ## ch
#else /* }{ */
@@ -1468,7 +1633,10 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
#define ARG_CH_T NCURSES_CH_T
#define CARG_CH_T NCURSES_CH_T
#define PUTC_DATA /* nothing */
-#define PUTC(ch) NCURSES_OUTC_FUNC (NCURSES_SP_ARGx (int) ch)
+#define PUTC(ch) { \
+ TR_PUTC(ch); \
+ NCURSES_OUTC_FUNC (NCURSES_SP_ARGx (int) ch); \
+ }
#define BLANK (' '|A_NORMAL)
#define ZEROS ('\0'|A_NORMAL)
@@ -1477,6 +1645,7 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
#define isWidecExt(ch) (0)
#define if_WIDEC(code) /* nothing */
+#define Charable(ch) ((ch) >= ' ' && (ch) <= '~')
#define L(ch) ch
#endif /* } */
@@ -1523,7 +1692,7 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
/* 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
+#define FreeAndNull(p) do { free(p); p = 0; } while (0)
#include <nc_alloc.h>
@@ -1532,14 +1701,18 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
* tries to limp along after a failure.
*/
#define TYPE_MALLOC(type, size, name) \
- name = typeMalloc(type, size); \
- if (name == 0) \
- _nc_err_abort(MSG_NO_MEMORY)
+ do { \
+ name = typeMalloc(type, size); \
+ if (name == 0) \
+ _nc_err_abort(MSG_NO_MEMORY); \
+ } while (0)
#define TYPE_REALLOC(type, size, name) \
- name = typeRealloc(type, size, name); \
- if (name == 0) \
- _nc_err_abort(MSG_NO_MEMORY)
+ do { \
+ name = typeRealloc(type, size, name); \
+ if (name == 0) \
+ _nc_err_abort(MSG_NO_MEMORY); \
+ } while (0)
/*
* TTY bit definition for converting tabs to spaces.
@@ -1558,6 +1731,14 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
# endif
#endif
+#ifdef __TANDEM
+#define ROOT_UID 65535
+#endif
+
+#ifndef ROOT_UID
+#define ROOT_UID 0
+#endif
+
/*
* Standardize/simplify common loops
*/
@@ -1574,6 +1755,9 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
#define T_CREATE(fmt) "create :" fmt
#define T_RETURN(fmt) "return }" fmt
+#define NonNull(s) ((s) != 0 ? s : "<null>")
+#define NonEmpty(s) ((s) != 0 && *(s) != '\0')
+
#ifdef TRACE
#if USE_REENTRANT
@@ -1582,12 +1766,16 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
#define TPUTS_TRACE(s) _nc_tputs_trace = s;
#endif
+#ifdef HAVE_CONSISTENT_GETENV
#define START_TRACE() \
if ((_nc_tracing & TRACE_MAXIMUM) == 0) { \
int t = _nc_getenv_num("NCURSES_TRACE"); \
if (t >= 0) \
- trace((unsigned) t); \
+ curses_trace((unsigned) t); \
}
+#else
+#define START_TRACE() /* nothing */
+#endif
/*
* Many of the _tracef() calls use static buffers; lock the trace state before
@@ -1604,27 +1792,34 @@ extern NCURSES_EXPORT(void) _nc_locked_tracef (const char *, ...) GCC_PRINTFLIKE
#define TR(n, a) if (USE_TRACEF(n)) _nc_locked_tracef a
#define T(a) TR(TRACE_CALLS, a)
-#define TRACE_RETURN(value,type) return _nc_retrace_##type(value)
+#define TRACE_RETURN(value,type) return _nc_retrace_##type((type)(value))
+#define TRACE_RETURN1(value,dst) return _nc_retrace_##dst(value)
#define TRACE_RETURN2(value,dst,src) return _nc_retrace_##dst##_##src(value)
#define TRACE_RETURN_SP(value,type) return _nc_retrace_##type(SP_PARM, value)
-#define NonNull(s) ((s) != 0 ? s : "<null>")
+typedef void VoidFunc(void);
+
+#define TR_FUNC_LEN ((sizeof(void *) + sizeof(void (*)(void))) * 2 + 4)
+#define TR_FUNC_BFR(max) char tr_func_data[max][TR_FUNC_LEN]
+#define TR_FUNC_ARG(num,func) _nc_fmt_funcptr(&tr_func_data[num][0], (const char *)&(func), sizeof((func)))
#define returnAttr(code) TRACE_RETURN(code,attr_t)
#define returnBits(code) TRACE_RETURN(code,unsigned)
#define returnBool(code) TRACE_RETURN(code,bool)
-#define returnCPtr(code) TRACE_RETURN(code,cptr)
-#define returnCVoidPtr(code) TRACE_RETURN(code,cvoid_ptr)
+#define returnCPtr(code) TRACE_RETURN1(code,cptr)
+#define returnCVoidPtr(code) TRACE_RETURN1(code,cvoid_ptr)
#define returnChar(code) TRACE_RETURN(code,char)
#define returnChtype(code) TRACE_RETURN(code,chtype)
#define returnCode(code) TRACE_RETURN(code,int)
#define returnIntAttr(code) TRACE_RETURN2(code,int,attr_t)
#define returnMMask(code) TRACE_RETURN_SP(code,mmask_t)
-#define returnPtr(code) TRACE_RETURN(code,ptr)
-#define returnSP(code) TRACE_RETURN(code,sp)
+#define returnPtr(code) TRACE_RETURN1(code,ptr)
+#define returnSP(code) TRACE_RETURN1(code,sp)
#define returnVoid T((T_RETURN(""))); return
-#define returnVoidPtr(code) TRACE_RETURN(code,void_ptr)
-#define returnWin(code) TRACE_RETURN(code,win)
+#define returnVoidPtr(code) TRACE_RETURN1(code,void_ptr)
+#define returnWin(code) TRACE_RETURN1(code,win)
+
+#define returnDB(rc) do { TR(TRACE_DATABASE,(T_RETURN("code %d"), (rc))); return (rc); } while (0)
extern NCURSES_EXPORT(NCURSES_BOOL) _nc_retrace_bool (int);
extern NCURSES_EXPORT(NCURSES_CONST void *) _nc_retrace_cvoid_ptr (NCURSES_CONST void *);
@@ -1645,6 +1840,8 @@ extern NCURSES_EXPORT(unsigned) _nc_retrace_unsigned (unsigned);
extern NCURSES_EXPORT(void *) _nc_retrace_void_ptr (void *);
extern NCURSES_EXPORT(void) _nc_fifo_dump (SCREEN *);
+extern NCURSES_EXPORT(char *) _nc_fmt_funcptr(char *, const char *, size_t);
+
#if USE_REENTRANT
NCURSES_WRAPPED_VAR(long, _nc_outchars);
NCURSES_WRAPPED_VAR(const char *, _nc_tputs_trace);
@@ -1659,6 +1856,10 @@ extern NCURSES_EXPORT_VAR(long) _nc_outchars;
extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing;
+extern NCURSES_EXPORT(char *) _nc_tracebits (void);
+extern NCURSES_EXPORT(char *) _tracemouse (const MEVENT *);
+extern NCURSES_EXPORT(void) _tracedump (const char *, WINDOW *);
+
#if USE_WIDEC_SUPPORT
extern NCURSES_EXPORT(const char *) _nc_viswbuf2 (int, const wchar_t *);
extern NCURSES_EXPORT(const char *) _nc_viswbufn (const wchar_t *, int);
@@ -1674,6 +1875,7 @@ extern NCURSES_EXPORT(const char *) _nc_viscbuf (const NCURSES_CH_T *, int);
#define T(a)
#define TR(n, a)
#define TPUTS_TRACE(s)
+#define TR_FUNC_BFR(max)
#define returnAttr(code) return code
#define returnBits(code) return code
@@ -1691,6 +1893,8 @@ extern NCURSES_EXPORT(const char *) _nc_viscbuf (const NCURSES_CH_T *, int);
#define returnVoidPtr(code) return code
#define returnWin(code) return code
+#define returnDB(code) return code
+
#endif /* TRACE/!TRACE */
/*
@@ -1758,7 +1962,7 @@ extern NCURSES_EXPORT(void) name (void); \
#if USE_XMC_SUPPORT
#define UpdateAttrs(sp,c) if (!SameAttrOf(SCREEN_ATTRS(sp), c)) { \
attr_t chg = AttrOf(SCREEN_ATTRS(sp)); \
- VIDATTR(sp, AttrOf(c), GetPair(c)); \
+ VIDPUTS(sp, AttrOf(c), GetPair(c)); \
if (magic_cookie_glitch > 0 \
&& XMC_CHANGES((chg ^ AttrOf(SCREEN_ATTRS(sp))))) { \
T(("%s @%d before glitch %d,%d", \
@@ -1770,7 +1974,7 @@ extern NCURSES_EXPORT(void) name (void); \
}
#else
#define UpdateAttrs(sp,c) if (!SameAttrOf(SCREEN_ATTRS(sp), c)) { \
- VIDATTR(sp, AttrOf(c), GetPair(c)); \
+ VIDPUTS(sp, AttrOf(c), GetPair(c)); \
}
#endif
@@ -1837,6 +2041,20 @@ extern NCURSES_EXPORT(void) _nc_expanded (void);
#define getcwd(buf,len) getwd(buf)
#endif
+#define save_ttytype(termp) \
+ if (TerminalType(termp).term_names != 0) { \
+ _nc_STRNCPY(ttytype, \
+ TerminalType(termp).term_names, \
+ NAMESIZE - 1); \
+ ttytype[NAMESIZE - 1] = '\0'; \
+ }
+
+#if !NCURSES_WCWIDTH_GRAPHICS
+extern NCURSES_EXPORT(int) _nc_wacs_width(unsigned);
+#else
+#define _nc_wacs_width(ch) wcwidth(ch)
+#endif
+
/* charable.c */
#if USE_WIDEC_SUPPORT
extern NCURSES_EXPORT(bool) _nc_is_charable(wchar_t);
@@ -1859,6 +2077,16 @@ typedef struct
short source;
} alias_table_data;
+/* comp_userdefs.c */
+typedef struct {
+ short ute_name; /* offset of name to hash on */
+ unsigned ute_type; /* mask (BOOLEAN, NUMBER, STRING) */
+ unsigned ute_argc; /* number of parameters */
+ unsigned ute_args; /* bit-mask for string parameters */
+ short ute_index; /* index of associated variable in its array */
+ short ute_link; /* index in table of next hash, or -1 */
+} user_table_data;
+
/* doupdate.c */
#if USE_XMC_SUPPORT
extern NCURSES_EXPORT(void) _nc_do_xmc_glitch (attr_t);
@@ -1884,7 +2112,16 @@ extern NCURSES_EXPORT(int) _nc_wchstrlen(const cchar_t *);
#endif
/* lib_color.c */
+extern NCURSES_EXPORT(int) _nc_init_color(SCREEN *, int, int, int, int);
+extern NCURSES_EXPORT(int) _nc_init_pair(SCREEN *, int, int, int);
+extern NCURSES_EXPORT(int) _nc_pair_content(SCREEN *, int, int *, int *);
extern NCURSES_EXPORT(bool) _nc_reset_colors(void);
+extern NCURSES_EXPORT(void) _nc_reserve_pairs(SCREEN *, int);
+extern NCURSES_EXPORT(void) _nc_change_pair(SCREEN *, int);
+
+#define ReservePairs(sp,want) \
+ if ((sp->_color_pairs == 0) || (want >= sp->_pair_alloc)) \
+ _nc_reserve_pairs(sp, want)
/* lib_getch.c */
extern NCURSES_EXPORT(int) _nc_wgetch(WINDOW *, int *, int EVENTLIST_2nd(_nc_eventlist *));
@@ -1918,29 +2155,43 @@ extern NCURSES_EXPORT(bool) _nc_has_mouse (SCREEN *);
extern NCURSES_EXPORT(char *) _nc_get_locale(void);
extern NCURSES_EXPORT(int) _nc_unicode_locale(void);
extern NCURSES_EXPORT(int) _nc_locale_breaks_acs(TERMINAL *);
-extern NCURSES_EXPORT(int) _nc_setupterm(NCURSES_CONST char *, int, int *, int);
+extern NCURSES_EXPORT(int) _nc_setupterm(const char *, int, int *, int);
extern NCURSES_EXPORT(void) _nc_tinfo_cmdch(TERMINAL *, int);
+#ifdef USE_PTHREADS
+extern NCURSES_EXPORT(SCREEN *) _nc_find_prescr(void);
+extern NCURSES_EXPORT(void) _nc_forget_prescr(void);
+#else
+#define _nc_find_prescr() _nc_prescreen.allocated
+#define _nc_forget_prescr() _nc_prescreen.allocated = 0
+#endif
+
/* lib_set_term.c */
extern NCURSES_EXPORT(int) _nc_ripoffline(int, int(*)(WINDOW*, int));
/* lib_setup.c */
-#define ret_error(code, fmt, arg) if (errret) {\
- *errret = code;\
- returnCode(ERR);\
+#define ExitTerminfo(code) exit_terminfo(code)
+
+#define SETUP_FAIL ERR
+
+#define ret_error(rc, fmt, p, q) if (errret) {\
+ *errret = rc;\
+ q;\
+ returnCode(SETUP_FAIL);\
} else {\
- fprintf(stderr, fmt, arg);\
- exit(EXIT_FAILURE);\
+ fprintf(stderr, fmt, p);\
+ q;\
+ ExitTerminfo(EXIT_FAILURE);\
}
-#define ret_error1(code, fmt, arg) ret_error(code, "'%s': " fmt, arg)
+#define ret_error1(rc, fmt, p, q) ret_error(rc, "'%s': " fmt, p, q)
-#define ret_error0(code, msg) if (errret) {\
- *errret = code;\
- returnCode(ERR);\
+#define ret_error0(rc, msg) if (errret) {\
+ *errret = rc;\
+ returnCode(SETUP_FAIL);\
} else {\
fprintf(stderr, msg);\
- exit(EXIT_FAILURE);\
+ ExitTerminfo(EXIT_FAILURE);\
}
/* lib_tstp.c */
@@ -1984,7 +2235,6 @@ extern NCURSES_EXPORT(int) _nc_remove_key (TRIES **, unsigned);
extern NCURSES_EXPORT(int) _nc_remove_string (TRIES **, const char *);
/* elsewhere ... */
-extern NCURSES_EXPORT(ENTRY *) _nc_delink_entry (ENTRY *, TERMTYPE *);
extern NCURSES_EXPORT(SCREEN *) _nc_screen_of (WINDOW *);
extern NCURSES_EXPORT(TERMINAL*) _nc_get_cur_term (void);
extern NCURSES_EXPORT(WINDOW *) _nc_makenew (int, int, int, int, int);
@@ -1992,6 +2242,7 @@ extern NCURSES_EXPORT(char *) _nc_trace_buf (int, size_t);
extern NCURSES_EXPORT(char *) _nc_trace_bufcat (int, const char *);
extern NCURSES_EXPORT(char *) _nc_tracechar (SCREEN *, int);
extern NCURSES_EXPORT(char *) _nc_tracemouse (SCREEN *, MEVENT const *);
+extern NCURSES_EXPORT(char *) _nc_trace_mmask_t (SCREEN *, mmask_t);
extern NCURSES_EXPORT(int) _nc_access (const char *, int);
extern NCURSES_EXPORT(int) _nc_baudrate (int);
extern NCURSES_EXPORT(int) _nc_freewin (WINDOW *);
@@ -2002,14 +2253,14 @@ extern NCURSES_EXPORT(int) _nc_outch (int);
extern NCURSES_EXPORT(int) _nc_putchar (int);
extern NCURSES_EXPORT(int) _nc_putp(const char *, const char *);
extern NCURSES_EXPORT(int) _nc_putp_flush(const char *, const char *);
-extern NCURSES_EXPORT(int) _nc_read_termcap_entry (const char *const, TERMTYPE *const);
-extern NCURSES_EXPORT(int) _nc_setup_tinfo(const char *, TERMTYPE *);
+extern NCURSES_EXPORT(int) _nc_read_termcap_entry (const char *const, TERMTYPE2 *const);
+extern NCURSES_EXPORT(int) _nc_setup_tinfo(const char *, TERMTYPE2 *);
extern NCURSES_EXPORT(int) _nc_setupscreen (int, int, FILE *, int, int);
extern NCURSES_EXPORT(int) _nc_timed_wait (SCREEN *, int, int, int * EVENTLIST_2nd(_nc_eventlist *));
+extern NCURSES_EXPORT(void) _nc_init_termtype (TERMTYPE2 *const);
extern NCURSES_EXPORT(void) _nc_do_color (int, int, int, NCURSES_OUTC);
extern NCURSES_EXPORT(void) _nc_flush (void);
-extern NCURSES_EXPORT(void) _nc_free_and_exit (int) GCC_NORETURN;
-extern NCURSES_EXPORT(void) _nc_free_entry (ENTRY *, TERMTYPE *);
+extern NCURSES_EXPORT(void) _nc_free_entry (ENTRY *, TERMTYPE2 *);
extern NCURSES_EXPORT(void) _nc_freeall (void);
extern NCURSES_EXPORT(void) _nc_hash_map (void);
extern NCURSES_EXPORT(void) _nc_init_keytry (SCREEN *);
@@ -2023,6 +2274,23 @@ extern NCURSES_EXPORT(void) _nc_signal_handler (int);
extern NCURSES_EXPORT(void) _nc_synchook (WINDOW *);
extern NCURSES_EXPORT(void) _nc_trace_tries (TRIES *);
+#if NCURSES_EXT_NUMBERS
+extern NCURSES_EXPORT(const TERMTYPE2 *) _nc_fallback2 (const char *);
+#else
+#define _nc_fallback2(tp) _nc_fallback(tp)
+#endif
+
+#if NCURSES_EXT_NUMBERS
+extern NCURSES_EXPORT(void) _nc_copy_termtype2 (TERMTYPE2 *, const TERMTYPE2 *);
+extern NCURSES_EXPORT(void) _nc_export_termtype2(TERMTYPE *, const TERMTYPE2 *);
+#else
+#define _nc_copy_termtype2(dst,src) _nc_copy_termtype((dst),(src))
+#define _nc_export_termtype2(dst,src) /* nothing */
+#define _nc_free_termtype2(t) _nc_free_termtype(t)
+/* also... */
+#define _nc_read_entry2 _nc_read_entry
+#endif
+
#if NO_LEAKS
extern NCURSES_EXPORT(void) _nc_alloc_entry_leaks(void);
extern NCURSES_EXPORT(void) _nc_captoinfo_leaks(void);
@@ -2030,9 +2298,11 @@ extern NCURSES_EXPORT(void) _nc_codes_leaks(void);
extern NCURSES_EXPORT(void) _nc_comp_captab_leaks(void);
extern NCURSES_EXPORT(void) _nc_comp_error_leaks(void);
extern NCURSES_EXPORT(void) _nc_comp_scan_leaks(void);
+extern NCURSES_EXPORT(void) _nc_comp_userdefs_leaks(void);
extern NCURSES_EXPORT(void) _nc_db_iterator_leaks(void);
extern NCURSES_EXPORT(void) _nc_keyname_leaks(void);
extern NCURSES_EXPORT(void) _nc_names_leaks(void);
+extern NCURSES_EXPORT(void) _nc_tgetent_leak(TERMINAL *);
extern NCURSES_EXPORT(void) _nc_tgetent_leaks(void);
#endif
@@ -2072,7 +2342,7 @@ extern NCURSES_EXPORT(int) _nc_eventlist_timeout(_nc_eventlist *);
*/
#if USE_WIDEC_SUPPORT
-#if defined(__MINGW32__)
+#if defined(_WIN32)
/*
* MinGW has wide-character functions, but they do not work correctly.
*/
@@ -2087,7 +2357,7 @@ extern int __MINGW_NOTHROW _nc_mbtowc(wchar_t *, const char *, size_t);
extern int __MINGW_NOTHROW _nc_mblen(const char *, size_t);
#define mblen(s,n) _nc_mblen(s, n)
-#endif /* __MINGW32__ */
+#endif /* _WIN32 */
#if HAVE_MBTOWC && HAVE_MBLEN
#define reset_mbytes(state) IGNORE_RC(mblen(NULL, (size_t) 0)), IGNORE_RC(mbtowc(NULL, NULL, (size_t) 0))
@@ -2118,9 +2388,7 @@ extern NCURSES_EXPORT_VAR(int *) _nc_oldnums;
#define USE_SETBUF_0 0
-#define NC_BUFFERED(sp,flag) NCURSES_SP_NAME(_nc_set_buffer)(NCURSES_SP_ARGx sp->_ofp, flag)
-
-#define NC_OUTPUT(sp) ((sp != 0) ? sp->_ofp : stdout)
+#define NC_OUTPUT(sp) ((sp != 0 && sp->_ofp != 0) ? sp->_ofp : stdout)
/*
* On systems with a broken linker, define 'SP' as a function to force the
@@ -2202,7 +2470,6 @@ extern NCURSES_EXPORT(int) _nc_get_tty_mode(TTY *);
sp->jump = outc
#ifdef USE_TERM_DRIVER
-typedef void* TERM_HANDLE;
typedef struct _termInfo
{
@@ -2228,48 +2495,47 @@ typedef struct _termInfo
typedef struct term_driver {
bool isTerminfo;
- bool (*CanHandle)(struct DriverTCB*, const char*, int*);
- void (*init)(struct DriverTCB*);
- void (*release)(struct DriverTCB*);
- int (*size)(struct DriverTCB*, int* Line, int *Cols);
- int (*sgmode)(struct DriverTCB*, int setFlag, TTY*);
- chtype (*conattr)(struct DriverTCB*);
- int (*hwcur)(struct DriverTCB*, int yold, int xold, int y, int x);
- int (*mode)(struct DriverTCB*, int progFlag, int defFlag);
- bool (*rescol)(struct DriverTCB*);
- bool (*rescolors)(struct DriverTCB*);
- void (*color)(struct DriverTCB*, int fore, int color, int(*)(SCREEN*, int));
- int (*doBeepOrFlash)(struct DriverTCB*, int);
- void (*initpair)(struct DriverTCB*, int, int, int);
- void (*initcolor)(struct DriverTCB*, int, int, int, int);
- void (*docolor)(struct DriverTCB*, int, int, int, int(*)(SCREEN*, int));
- void (*initmouse)(struct DriverTCB*);
- int (*testmouse)(struct DriverTCB*, int EVENTLIST_2nd(_nc_eventlist*));
- void (*setfilter)(struct DriverTCB*);
- void (*hwlabel)(struct DriverTCB*, int, char*);
- void (*hwlabelOnOff)(struct DriverTCB*, int);
- int (*update)(struct DriverTCB*);
- int (*defaultcolors)(struct DriverTCB*, int, int);
- int (*print)(struct DriverTCB*, char*, int);
- int (*getsize)(struct DriverTCB*, int*, int*);
- int (*setsize)(struct DriverTCB*, int, int);
- void (*initacs)(struct DriverTCB*, chtype*, chtype*);
- void (*scinit)(SCREEN *);
- void (*scexit)(SCREEN *);
- int (*twait)(struct DriverTCB*, int, int, int* EVENTLIST_2nd(_nc_eventlist*));
- int (*read)(struct DriverTCB*, int*);
- int (*nap)(struct DriverTCB*, int);
- int (*kpad)(struct DriverTCB*, int);
- int (*kyOk)(struct DriverTCB*, int, int);
- bool (*kyExist)(struct DriverTCB*, int);
+ const char* (*td_name)(struct DriverTCB*);
+ bool (*td_CanHandle)(struct DriverTCB*, const char*, int*);
+ void (*td_init)(struct DriverTCB*);
+ void (*td_release)(struct DriverTCB*);
+ int (*td_size)(struct DriverTCB*, int* Line, int *Cols);
+ int (*td_sgmode)(struct DriverTCB*, int setFlag, TTY*);
+ chtype (*td_conattr)(struct DriverTCB*);
+ int (*td_hwcur)(struct DriverTCB*, int yold, int xold, int y, int x);
+ int (*td_mode)(struct DriverTCB*, int progFlag, int defFlag);
+ bool (*td_rescol)(struct DriverTCB*);
+ bool (*td_rescolors)(struct DriverTCB*);
+ void (*td_color)(struct DriverTCB*, int fore, int color, int(*)(SCREEN*, int));
+ int (*td_doBeepOrFlash)(struct DriverTCB*, int);
+ void (*td_initpair)(struct DriverTCB*, int, int, int);
+ void (*td_initcolor)(struct DriverTCB*, int, int, int, int);
+ void (*td_docolor)(struct DriverTCB*, int, int, int, int(*)(SCREEN*, int));
+ void (*td_initmouse)(struct DriverTCB*);
+ int (*td_testmouse)(struct DriverTCB*, int EVENTLIST_2nd(_nc_eventlist*));
+ void (*td_setfilter)(struct DriverTCB*);
+ void (*td_hwlabel)(struct DriverTCB*, int, char*);
+ void (*td_hwlabelOnOff)(struct DriverTCB*, int);
+ int (*td_update)(struct DriverTCB*);
+ int (*td_defaultcolors)(struct DriverTCB*, int, int);
+ int (*td_print)(struct DriverTCB*, char*, int);
+ int (*td_getsize)(struct DriverTCB*, int*, int*);
+ int (*td_setsize)(struct DriverTCB*, int, int);
+ void (*td_initacs)(struct DriverTCB*, chtype*, chtype*);
+ void (*td_scinit)(SCREEN *);
+ void (*td_scexit)(SCREEN *);
+ int (*td_twait)(struct DriverTCB*, int, int, int* EVENTLIST_2nd(_nc_eventlist*));
+ int (*td_read)(struct DriverTCB*, int*);
+ int (*td_nap)(struct DriverTCB*, int);
+ int (*td_kpad)(struct DriverTCB*, int);
+ int (*td_kyOk)(struct DriverTCB*, int, int);
+ bool (*td_kyExist)(struct DriverTCB*, int);
+ int (*td_cursorSet)(struct DriverTCB*, int);
} TERM_DRIVER;
typedef struct DriverTCB
{
TERMINAL term; /* needs to be the first Element !!! */
- TERM_HANDLE inp; /* The input handle of the Terminal */
- TERM_HANDLE out; /* The output handle of the Terminal in shell mode */
- TERM_HANDLE hdl; /* The output handle of the Terminal in prog mode */
TERM_DRIVER* drv; /* The driver for that Terminal */
SCREEN* csp; /* The screen that owns that Terminal */
TerminalInfo info; /* Driver independent core capabilities of the Terminal */
@@ -2318,7 +2584,7 @@ extern NCURSES_EXPORT(int) TINFO_MVCUR(SCREEN*, int, int, int, int);
*/
#ifdef USE_TERM_DRIVER
extern NCURSES_EXPORT(void) _nc_get_screensize(SCREEN *, TERMINAL *, int *, int *);
-extern NCURSES_EXPORT(int) _nc_setupterm_ex(TERMINAL **, NCURSES_CONST char *, int , int *, int);
+extern NCURSES_EXPORT(int) _nc_setupterm_ex(TERMINAL **, const char *, int , int *, int);
#define TINFO_GET_SIZE(sp, tp, lp, cp) \
_nc_get_screensize(sp, tp, lp, cp)
#define TINFO_SET_CURTERM(sp, tp) \
@@ -2336,19 +2602,42 @@ extern NCURSES_EXPORT(void) _nc_get_screensize(SCREEN *, int *, int *);
#endif /* !USE_TERM_DRIVER */
#ifdef USE_TERM_DRIVER
-#ifdef __MINGW32__
+#if defined(USE_WIN32CON_DRIVER)
#include <nc_mingw.h>
extern NCURSES_EXPORT_VAR(TERM_DRIVER) _nc_WIN_DRIVER;
+extern NCURSES_EXPORT(int) _nc_mingw_isatty(int fd);
+extern NCURSES_EXPORT(int) _nc_mingw_isconsole(int fd);
+extern NCURSES_EXPORT(int) _nc_mingw_console_read(
+ SCREEN *sp,
+ HANDLE fd,
+ int *buf);
+extern NCURSES_EXPORT(int) _nc_mingw_testmouse(
+ SCREEN * sp,
+ HANDLE fd,
+ int delay EVENTLIST_2nd(_nc_eventlist*));
+#else
#endif
extern NCURSES_EXPORT_VAR(TERM_DRIVER) _nc_TINFO_DRIVER;
#endif
+#if defined(USE_TERM_DRIVER) && defined(USE_WIN32CON_DRIVER)
+#define NC_ISATTY(fd) _nc_mingw_isatty(fd)
+#else
+#define NC_ISATTY(fd) isatty(fd)
+#endif
+
#ifdef USE_TERM_DRIVER
-#define IsTermInfo(sp) ((TCBOf(sp) != 0) && ((TCBOf(sp)->drv->isTerminfo)))
-#define HasTInfoTerminal(sp) ((0 != TerminalOf(sp)) && IsTermInfo(sp))
+# define IsTermInfo(sp) ((TCBOf(sp) != 0) && ((TCBOf(sp)->drv->isTerminfo)))
+# define HasTInfoTerminal(sp) ((0 != TerminalOf(sp)) && IsTermInfo(sp))
+# if defined(USE_WIN32CON_DRIVER)
+# define IsTermInfoOnConsole(sp) (IsTermInfo(sp)&&_nc_mingw_isconsole(TerminalOf(sp)->Filedes))
#else
-#define IsTermInfo(sp) TRUE
-#define HasTInfoTerminal(sp) (0 != TerminalOf(sp))
+# define IsTermInfoOnConsole(sp) FALSE
+# endif
+#else
+# define IsTermInfo(sp) TRUE
+# define HasTInfoTerminal(sp) (0 != TerminalOf(sp))
+# define IsTermInfoOnConsole(sp) FALSE
#endif
#define IsValidTIScreen(sp) (HasTInfoTerminal(sp))
@@ -2380,7 +2669,6 @@ extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(_nc_makenew) (SCREEN*, int, int,
extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(_nc_reset_colors)(SCREEN*);
extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(_nc_printf_string)(SCREEN*, const char *, va_list);
extern NCURSES_EXPORT(chtype) NCURSES_SP_NAME(_nc_acs_char)(SCREEN*,int);
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_curs_set)(SCREEN*,int);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_get_tty_mode)(SCREEN*,TTY*);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_mcprint)(SCREEN*,char*, int);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_msec_cost)(SCREEN*, const char *, int);
@@ -2389,19 +2677,11 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_outch)(SCREEN*, int);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_putchar)(SCREEN*, int);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_putp)(SCREEN*, const char *, const char*);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_putp_flush)(SCREEN*, const char *, const char *);
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_resetty)(SCREEN*);
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_resize_term)(SCREEN*,int,int);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_ripoffline)(SCREEN*, int, int (*)(WINDOW *,int));
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_savetty)(SCREEN*);
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_scr_init)(SCREEN*,const char*);
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_scr_restore)(SCREEN*, const char*);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_scrolln)(SCREEN*, int, int, int, int);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_set_tty_mode)(SCREEN*, TTY*);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_setupscreen)(SCREEN**, int, int, FILE *, int, int);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_tgetent)(SCREEN*,char*,const char *);
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_tigetnum)(SCREEN*,NCURSES_CONST char*);
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_vid_attr)(SCREEN *, attr_t, NCURSES_COLOR_T, void *);
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_vidputs)(SCREEN*,chtype,int(*) (SCREEN*, int));
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_do_color)(SCREEN*, int, int, int, NCURSES_SP_OUTC);
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_do_xmc_glitch)(SCREEN*, attr_t);
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_flush)(SCREEN*);
@@ -2450,6 +2730,11 @@ extern NCURSES_EXPORT(NCURSES_CONST char *) _nc_unctrl (SCREEN *, chtype);
#endif
+#ifdef EXP_XTERM_1005
+NCURSES_EXPORT(int) _nc_conv_to_utf8(unsigned char *, unsigned, unsigned);
+NCURSES_EXPORT(int) _nc_conv_to_utf32(unsigned *, const char *, unsigned);
+#endif
+
#ifdef __cplusplus
}
#endif
diff --git a/ncurses/fifo_defs.h b/ncurses/fifo_defs.h
index c0c795a81634..d0e21fafe871 100644
--- a/ncurses/fifo_defs.h
+++ b/ncurses/fifo_defs.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2016 Free 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 @@
/*
* Common macros for lib_getch.c, lib_ungetch.c
*
- * $Id: fifo_defs.h,v 1.7 2012/08/04 15:59:17 tom Exp $
+ * $Id: fifo_defs.h,v 1.8 2016/09/10 21:59:25 tom Exp $
*/
#ifndef FIFO_DEFS_H
@@ -82,6 +82,4 @@
#define cooked_key_in_fifo() ((head >= 0) && (peek != head))
#define raw_key_in_fifo() ((head >= 0) && (peek != tail))
-#undef HIDE_EINTR
-
#endif /* FIFO_DEFS_H */
diff --git a/ncurses/llib-lncurses b/ncurses/llib-lncurses
index d98dcd596326..1b291dd7729e 100644
--- a/ncurses/llib-lncurses
+++ b/ncurses/llib-lncurses
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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 1996-on *
+ * Author: Thomas E. Dickey 1996-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -182,7 +182,7 @@ int wchgat(
WINDOW *win,
int n,
attr_t attr,
- short color,
+ short pair_arg,
const void *opts)
{ return(*(int *)0); }
@@ -240,6 +240,26 @@ int start_color_sp(
int start_color(void)
{ return(*(int *)0); }
+#undef _nc_change_pair
+void _nc_change_pair(
+ SCREEN *sp,
+ int pair)
+ { /* void */ }
+
+#undef _nc_reserve_pairs
+void _nc_reserve_pairs(
+ SCREEN *sp,
+ int want)
+ { /* void */ }
+
+#undef _nc_init_pair
+int _nc_init_pair(
+ SCREEN *sp,
+ int pair,
+ int f,
+ int b)
+ { return(*(int *)0); }
+
#undef init_pair_sp
int init_pair_sp(
SCREEN *sp,
@@ -255,6 +275,15 @@ int init_pair(
short b)
{ return(*(int *)0); }
+#undef _nc_init_color
+int _nc_init_color(
+ SCREEN *sp,
+ int color,
+ int r,
+ int g,
+ int b)
+ { return(*(int *)0); }
+
#undef init_color_sp
int init_color_sp(
SCREEN *sp,
@@ -307,6 +336,14 @@ int color_content(
short *b)
{ return(*(int *)0); }
+#undef _nc_pair_content
+int _nc_pair_content(
+ SCREEN *sp,
+ int pair,
+ int *f,
+ int *b)
+ { return(*(int *)0); }
+
#undef pair_content_sp
int pair_content_sp(
SCREEN *sp,
@@ -344,7 +381,7 @@ void _nc_do_color(
#undef wcolor_set
int wcolor_set(
WINDOW *win,
- short color_pair_number,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
@@ -1023,20 +1060,6 @@ int (vline)(
int z)
{ return(*(int *)0); }
-#undef vw_printw
-int (vw_printw)(
- WINDOW *a1,
- const char *a2,
- va_list z)
- { return(*(int *)0); }
-
-#undef vw_scanw
-int (vw_scanw)(
- WINDOW *a1,
- char *a2,
- va_list z)
- { return(*(int *)0); }
-
#undef waddchstr
int (waddchstr)(
WINDOW *a1,
@@ -1237,6 +1260,11 @@ NCURSES_BOOL (is_syncok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
+#undef wgetdelay
+int (wgetdelay)(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
#undef wgetscrreg
int (wgetscrreg)(
const WINDOW *a1,
@@ -1586,14 +1614,14 @@ void nofilter(void)
#undef newterm_sp
SCREEN *newterm_sp(
SCREEN *sp,
- char *name,
+ const char *name,
FILE *ofp,
FILE *ifp)
{ return(*(SCREEN **)0); }
#undef newterm
SCREEN *newterm(
- char *name,
+ const char *name,
FILE *ofp,
FILE *ifp)
{ return(*(SCREEN **)0); }
@@ -1803,6 +1831,13 @@ int vwprintw(
va_list argp)
{ return(*(int *)0); }
+#undef vw_printw
+int vw_printw(
+ WINDOW *win,
+ const char *fmt,
+ va_list argp)
+ { return(*(int *)0); }
+
/* ./base/lib_redrawln.c */
#undef wredrawln
@@ -1829,14 +1864,14 @@ int wnoutrefresh(
#undef restartterm_sp
int restartterm_sp(
SCREEN *sp,
- char *termp,
+ const char *termp,
int filenum,
int *errret)
{ return(*(int *)0); }
#undef restartterm
int restartterm(
- char *termp,
+ const char *termp,
int filenum,
int *errret)
{ return(*(int *)0); }
@@ -1846,20 +1881,27 @@ int restartterm(
#undef vwscanw
int vwscanw(
WINDOW *win,
- char *fmt,
+ const char *fmt,
+ va_list argp)
+ { return(*(int *)0); }
+
+#undef vw_scanw
+int vw_scanw(
+ WINDOW *win,
+ const char *fmt,
va_list argp)
{ return(*(int *)0); }
#undef scanw
int scanw(
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
#undef wscanw
int wscanw(
WINDOW *win,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -1867,7 +1909,7 @@ int wscanw(
int mvscanw(
int y,
int x,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -1876,7 +1918,7 @@ int mvwscanw(
WINDOW *win,
int y,
int x,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -2065,14 +2107,14 @@ int slk_restore(void)
int slk_attr_set_sp(
SCREEN *sp,
const attr_t attr,
- short color_pair_number,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
#undef slk_attr_set
int slk_attr_set(
const attr_t attr,
- short color_pair_number,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
@@ -2142,12 +2184,12 @@ int slk_clear(void)
#undef slk_color_sp
int slk_color_sp(
SCREEN *sp,
- short color_pair_number)
+ short pair_arg)
{ return(*(int *)0); }
#undef slk_color
int slk_color(
- short color_pair_number)
+ short pair_arg)
{ return(*(int *)0); }
/* ./base/lib_slkinit.c */
@@ -2255,6 +2297,12 @@ void _tracedump(
/* ./trace/lib_tracemse.c */
+#undef _nc_trace_mmask_t
+char *_nc_trace_mmask_t(
+ SCREEN *sp,
+ mmask_t code)
+ { return(*(char **)0); }
+
#undef _nc_tracemouse
char *_nc_tracemouse(
SCREEN *sp,
@@ -2500,10 +2548,6 @@ void _nc_do_xmc_glitch(
/* ./trace/varargs.c */
-typedef enum {
- atUnknown = 0, atInteger, atFloat, atPoint, atString
-} ARGTYPE;
-
#undef _nc_varargs
char *_nc_varargs(
const char *fmt,
@@ -2533,6 +2577,11 @@ void _nc_free_and_exit(
int code)
{ /* void */ }
+#undef exit_curses
+void exit_curses(
+ int code)
+ { /* void */ }
+
/* ./expanded.c */
#undef _nc_toggle_attr_on
@@ -2632,6 +2681,12 @@ int mcprint(
int len)
{ return(*(int *)0); }
+/* ./base/new_pair.c */
+
+#undef _nc_new_pair
+void _nc_new_pair(void)
+ { /* void */ }
+
/* ./base/resizeterm.c */
#undef is_term_resized_sp
@@ -2762,8 +2817,8 @@ int _nc_add_to_try(
#undef _nc_align_termtype
void _nc_align_termtype(
- TERMTYPE *to,
- TERMTYPE *from)
+ TERMTYPE2 *to,
+ TERMTYPE2 *from)
{ /* void */ }
#undef _nc_copy_termtype
@@ -2775,11 +2830,11 @@ void _nc_copy_termtype(
/* ./codes.c */
#undef boolcodes
-char *const boolcodes[] = {0};
+const char *const boolcodes[] = {0};
#undef numcodes
-char *const numcodes[] = {0};
+const char *const numcodes[] = {0};
#undef strcodes
-char *const strcodes[] = {0};
+const char *const strcodes[] = {0};
/* ./comp_captab.c */
@@ -2864,6 +2919,21 @@ struct name_table_entry const *_nc_find_type_entry(
NCURSES_BOOL termcap)
{ return(*(struct name_table_entry const **)0); }
+#undef _nc_find_user_entry
+struct user_table_entry const *_nc_find_user_entry(
+ const char *string)
+ { return(*(struct user_table_entry const **)0); }
+
+/* ./comp_userdefs.c */
+
+#undef _nc_get_userdefs_table
+const struct user_table_entry *_nc_get_userdefs_table(void)
+ { return(*(const struct user_table_entry **)0); }
+
+#undef _nc_get_hash_user
+const HashData *_nc_get_hash_user(void)
+ { return(*(const HashData **)0); }
+
/* ./tinfo/db_iterator.c */
#undef _nc_tic_dir
@@ -2910,7 +2980,7 @@ ENTRY *_nc_tail;
#undef _nc_free_entry
void _nc_free_entry(
ENTRY *headp,
- TERMTYPE *tterm)
+ TERMTYPE2 *tterm)
{ /* void */ }
#undef _nc_free_entries
@@ -2918,22 +2988,21 @@ void _nc_free_entries(
ENTRY *headp)
{ /* void */ }
-#undef _nc_delink_entry
-ENTRY *_nc_delink_entry(
- ENTRY *headp,
- TERMTYPE *tterm)
- { return(*(ENTRY **)0); }
-
#undef _nc_leaks_tinfo
void _nc_leaks_tinfo(void)
{ /* void */ }
+#undef exit_terminfo
+void exit_terminfo(
+ int code)
+ { /* void */ }
+
/* ./fallback.c */
#undef _nc_fallback
-const TERMTYPE *_nc_fallback(
+const TERMTYPE2 *_nc_fallback(
const char *name)
- { return(*(const TERMTYPE **)0); }
+ { return(*(const TERMTYPE2 **)0); }
/* ./tinfo/free_ttype.c */
@@ -2993,8 +3062,8 @@ void _nc_init_acs(void)
/* ./tinfo/lib_baudrate.c */
struct speed {
- int s;
- int sp;
+ int given_speed;
+ int actual_speed;
};
#undef _nc_baudrate
@@ -3119,18 +3188,23 @@ int flushinp(void)
struct kn { short offset; int code; };
#undef keyname_sp
-char *keyname_sp(
+const char *keyname_sp(
SCREEN *sp,
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef keyname
-char *keyname(
+const char *keyname(
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./tinfo/lib_longname.c */
+#undef longname_sp
+char *longname_sp(
+ SCREEN *sp)
+ { return(*(char **)0); }
+
#undef longname
char *longname(void)
{ return(*(char **)0); }
@@ -3382,7 +3456,7 @@ void _nc_update_screensize(
#undef _nc_setup_tinfo
int _nc_setup_tinfo(
const char *const tn,
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
#undef _nc_tinfo_cmdch
@@ -3406,7 +3480,7 @@ int _nc_locale_breaks_acs(
#undef _nc_setupterm
int _nc_setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret,
int reuse)
@@ -3418,7 +3492,7 @@ SCREEN *new_prescr(void)
#undef setupterm
int setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret)
{ return(*(int *)0); }
@@ -3446,35 +3520,35 @@ int tgetent(
#undef tgetflag_sp
int tgetflag_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetflag
int tgetflag(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum_sp
int tgetnum_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum
int tgetnum(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetstr_sp
char *tgetstr_sp(
SCREEN *sp,
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
#undef tgetstr
char *tgetstr(
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
@@ -3503,34 +3577,34 @@ char *tgoto(
#undef tigetflag_sp
int tigetflag_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetflag
int tigetflag(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum_sp
int tigetnum_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum
int tigetnum(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetstr_sp
char *tigetstr_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(char **)0); }
#undef tigetstr
char *tigetstr(
- char *str)
+ const char *str)
{ return(*(char **)0); }
/* ./tinfo/lib_tparm.c */
@@ -3547,7 +3621,7 @@ int _nc_tparm_analyze(
#undef tparm
char *tparm(
- char *string,
+ const char *string,
...)
{ return(*(char **)0); }
@@ -3668,6 +3742,11 @@ const char *_nc_tputs_trace = {0};
#undef _nc_outchars
long _nc_outchars;
+#undef curses_trace
+unsigned curses_trace(
+ unsigned tracelevel)
+ { return(*(unsigned *)0); }
+
#undef trace
void trace(
const unsigned int tracelevel)
@@ -3710,9 +3789,9 @@ const char *_nc_retrace_cptr(
{ return(*(const char **)0); }
#undef _nc_retrace_cvoid_ptr
-void *_nc_retrace_cvoid_ptr(
- void *code)
- { return(*(void **)0); }
+const void *_nc_retrace_cvoid_ptr(
+ const void *code)
+ { return(*(const void **)0); }
#undef _nc_retrace_void_ptr
void *_nc_retrace_void_ptr(
@@ -3729,6 +3808,13 @@ WINDOW *_nc_retrace_win(
WINDOW *code)
{ return(*(WINDOW **)0); }
+#undef _nc_fmt_funcptr
+char *_nc_fmt_funcptr(
+ char *target,
+ const char *source,
+ size_t size)
+ { return(*(char **)0); }
+
/* ./trace/lib_traceatr.c */
#undef _traceattr2
@@ -3776,11 +3862,6 @@ chtype _nc_retrace_chtype(
/* ./trace/lib_tracebits.c */
-typedef struct {
- unsigned int val;
- const char *name;
-} BITNAMES;
-
#undef _nc_trace_ttymode
char *_nc_trace_ttymode(
struct termios *tty)
@@ -3908,17 +3989,17 @@ int _nc_name_match(
/* ./names.c */
#undef boolnames
-char *const boolnames[] = {0};
+const char *const boolnames[] = {0};
#undef boolfnames
-char *const boolfnames[] = {0};
+const char *const boolfnames[] = {0};
#undef numnames
-char *const numnames[] = {0};
+const char *const numnames[] = {0};
#undef numfnames
-char *const numfnames[] = {0};
+const char *const numfnames[] = {0};
#undef strnames
-char *const strnames[] = {0};
+const char *const strnames[] = {0};
#undef strfnames
-char *const strfnames[] = {0};
+const char *const strfnames[] = {0};
/* ./tinfo/obsolete.c */
@@ -3939,12 +4020,12 @@ void _nc_set_buffer(
#undef _nc_init_termtype
void _nc_init_termtype(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
#undef _nc_read_termtype
int _nc_read_termtype(
- TERMTYPE *ptr,
+ TERMTYPE2 *ptr,
char *buffer,
int limit)
{ return(*(int *)0); }
@@ -3952,21 +4033,23 @@ int _nc_read_termtype(
#undef _nc_read_file_entry
int _nc_read_file_entry(
const char *const filename,
- TERMTYPE *ptr)
+ TERMTYPE2 *ptr)
{ return(*(int *)0); }
#undef _nc_read_entry
int _nc_read_entry(
const char *const name,
char *const filename,
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
/* ./tinfo/read_termcap.c */
-#undef _nc_read_termcap
-void _nc_read_termcap(void)
- { /* void */ }
+#undef _nc_read_termcap_entry
+int _nc_read_termcap_entry(
+ const char *const tn,
+ TERMTYPE2 *const tp)
+ { return(*(int *)0); }
/* ./tinfo/strings.c */
@@ -4048,21 +4131,21 @@ int _nc_remove_string(
#undef _nc_trim_sgr0
char *_nc_trim_sgr0(
- TERMTYPE *tp)
+ TERMTYPE2 *tp)
{ return(*(char **)0); }
/* ./unctrl.c */
#undef unctrl_sp
-char *unctrl_sp(
+const char *unctrl_sp(
SCREEN *sp,
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef unctrl
-char *unctrl(
+const char *unctrl(
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./trace/visbuf.c */
@@ -4100,7 +4183,7 @@ const char *_nc_viscbuf(
#undef _nc_init_entry
void _nc_init_entry(
- TERMTYPE *const tp)
+ ENTRY *const tp)
{ /* void */ }
#undef _nc_copy_entry
@@ -4121,8 +4204,8 @@ void _nc_wrap_entry(
#undef _nc_merge_entry
void _nc_merge_entry(
- TERMTYPE *const to,
- TERMTYPE *const from)
+ ENTRY *const target,
+ ENTRY *const source)
{ /* void */ }
/* ./tinfo/captoinfo.c */
@@ -4154,11 +4237,8 @@ char *_nc_tic_expand(
#undef _nc_check_termtype2
void (*_nc_check_termtype2)(
- TERMTYPE *p1,
+ TERMTYPE2 *p1,
NCURSES_BOOL p2);
-#undef _nc_check_termtype
-void (*_nc_check_termtype)(
- TERMTYPE *p1);
#undef _nc_entry_match
NCURSES_BOOL _nc_entry_match(
@@ -4182,11 +4262,6 @@ int _nc_resolve_uses2(
NCURSES_BOOL literal)
{ return(*(int *)0); }
-#undef _nc_resolve_uses
-int _nc_resolve_uses(
- NCURSES_BOOL fullresolve)
- { return(*(int *)0); }
-
/* ./tinfo/comp_scan.c */
#undef _nc_syntax
@@ -4237,7 +4312,7 @@ void _nc_panic_mode(
#undef _nc_parse_entry
int _nc_parse_entry(
- struct entry *entryp,
+ ENTRY *entryp,
int literal,
NCURSES_BOOL silent)
{ return(*(int *)0); }
@@ -4248,23 +4323,26 @@ int _nc_capcmp(
const char *t)
{ return(*(int *)0); }
-typedef struct {
- const char *from;
- const char *to;
-} assoc;
-
/* ./tinfo/write_entry.c */
#undef _nc_set_writedir
void _nc_set_writedir(
- char *dir)
+ const char *dir)
{ /* void */ }
#undef _nc_write_entry
void _nc_write_entry(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
+#undef _nc_write_object
+int _nc_write_object(
+ TERMTYPE2 *tp,
+ char *buffer,
+ unsigned *offset,
+ unsigned limit)
+ { return(*(int *)0); }
+
#undef _nc_tic_written
int _nc_tic_written(void)
{ return(*(int *)0); }
diff --git a/ncurses/llib-lncursest b/ncurses/llib-lncursest
index 3401ad363cbc..eb43bfd35b23 100644
--- a/ncurses/llib-lncursest
+++ b/ncurses/llib-lncursest
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2008-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2017,2019 Free 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 2008-on *
+ * Author: Thomas E. Dickey 2008-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -95,8 +95,6 @@ void _nc_scroll_oldhash(
/* ./base/lib_addch.c */
-#include <ctype.h>
-
#undef _nc_render
chtype _nc_render(
WINDOW *win,
@@ -184,7 +182,7 @@ int wchgat(
WINDOW *win,
int n,
attr_t attr,
- short color,
+ short pair_arg,
const void *opts)
{ return(*(int *)0); }
@@ -219,8 +217,6 @@ int wclrtoeol(
/* ./base/lib_color.c */
-#include <tic.h>
-
#undef _nc_COLOR_PAIRS
int _nc_COLOR_PAIRS(void)
{ return(*(int *)0); }
@@ -247,6 +243,26 @@ int start_color_sp(
int start_color(void)
{ return(*(int *)0); }
+#undef _nc_change_pair
+void _nc_change_pair(
+ SCREEN *sp,
+ int pair)
+ { /* void */ }
+
+#undef _nc_reserve_pairs
+void _nc_reserve_pairs(
+ SCREEN *sp,
+ int want)
+ { /* void */ }
+
+#undef _nc_init_pair
+int _nc_init_pair(
+ SCREEN *sp,
+ int pair,
+ int f,
+ int b)
+ { return(*(int *)0); }
+
#undef init_pair_sp
int init_pair_sp(
SCREEN *sp,
@@ -262,6 +278,15 @@ int init_pair(
short b)
{ return(*(int *)0); }
+#undef _nc_init_color
+int _nc_init_color(
+ SCREEN *sp,
+ int color,
+ int r,
+ int g,
+ int b)
+ { return(*(int *)0); }
+
#undef init_color_sp
int init_color_sp(
SCREEN *sp,
@@ -314,6 +339,14 @@ int color_content(
short *b)
{ return(*(int *)0); }
+#undef _nc_pair_content
+int _nc_pair_content(
+ SCREEN *sp,
+ int pair,
+ int *f,
+ int *b)
+ { return(*(int *)0); }
+
#undef pair_content_sp
int pair_content_sp(
SCREEN *sp,
@@ -351,7 +384,7 @@ void _nc_do_color(
#undef wcolor_set
int wcolor_set(
WINDOW *win,
- short color_pair_number,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
@@ -420,8 +453,6 @@ int flash(void)
/* ./lib_gen.c */
-#include <ncurses_cfg.h>
-
#undef addch
int (addch)(
const chtype z)
@@ -451,17 +482,17 @@ int (addstr)(
#undef attroff
int (attroff)(
- int z)
+ NCURSES_ATTR_T z)
{ return(*(int *)0); }
#undef attron
int (attron)(
- int z)
+ NCURSES_ATTR_T z)
{ return(*(int *)0); }
#undef attrset
int (attrset)(
- int z)
+ NCURSES_ATTR_T z)
{ return(*(int *)0); }
#undef attr_get
@@ -1032,20 +1063,6 @@ int (vline)(
int z)
{ return(*(int *)0); }
-#undef vw_printw
-int (vw_printw)(
- WINDOW *a1,
- const char *a2,
- va_list z)
- { return(*(int *)0); }
-
-#undef vw_scanw
-int (vw_scanw)(
- WINDOW *a1,
- char *a2,
- va_list z)
- { return(*(int *)0); }
-
#undef waddchstr
int (waddchstr)(
WINDOW *a1,
@@ -1246,6 +1263,11 @@ NCURSES_BOOL (is_syncok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
+#undef wgetdelay
+int (wgetdelay)(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
#undef wgetscrreg
int (wgetscrreg)(
const WINDOW *a1,
@@ -1262,8 +1284,6 @@ NCURSES_BOOL (mouse_trafo)(
/* ./base/lib_getch.c */
-#include <fifo_defs.h>
-
#undef _nc_ESCDELAY
int _nc_ESCDELAY(void)
{ return(*(int *)0); }
@@ -1603,22 +1623,20 @@ void nofilter(void)
#undef newterm_sp
SCREEN *newterm_sp(
SCREEN *sp,
- char *name,
+ const char *name,
FILE *ofp,
FILE *ifp)
{ return(*(SCREEN **)0); }
#undef newterm
SCREEN *newterm(
- char *name,
+ const char *name,
FILE *ofp,
FILE *ifp)
{ return(*(SCREEN **)0); }
/* ./base/lib_newwin.c */
-#include "/usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stddef.h"
-
#undef _nc_freewin
int _nc_freewin(
WINDOW *win)
@@ -1822,6 +1840,13 @@ int vwprintw(
va_list argp)
{ return(*(int *)0); }
+#undef vw_printw
+int vw_printw(
+ WINDOW *win,
+ const char *fmt,
+ va_list argp)
+ { return(*(int *)0); }
+
/* ./base/lib_redrawln.c */
#undef wredrawln
@@ -1848,14 +1873,14 @@ int wnoutrefresh(
#undef restartterm_sp
int restartterm_sp(
SCREEN *sp,
- char *termp,
+ const char *termp,
int filenum,
int *errret)
{ return(*(int *)0); }
#undef restartterm
int restartterm(
- char *termp,
+ const char *termp,
int filenum,
int *errret)
{ return(*(int *)0); }
@@ -1865,20 +1890,27 @@ int restartterm(
#undef vwscanw
int vwscanw(
WINDOW *win,
- char *fmt,
+ const char *fmt,
+ va_list argp)
+ { return(*(int *)0); }
+
+#undef vw_scanw
+int vw_scanw(
+ WINDOW *win,
+ const char *fmt,
va_list argp)
{ return(*(int *)0); }
#undef scanw
int scanw(
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
#undef wscanw
int wscanw(
WINDOW *win,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -1886,7 +1918,7 @@ int wscanw(
int mvscanw(
int y,
int x,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -1895,7 +1927,7 @@ int mvwscanw(
WINDOW *win,
int y,
int x,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -2084,14 +2116,14 @@ int slk_restore(void)
int slk_attr_set_sp(
SCREEN *sp,
const attr_t attr,
- short color_pair_number,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
#undef slk_attr_set
int slk_attr_set(
const attr_t attr,
- short color_pair_number,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
@@ -2161,12 +2193,12 @@ int slk_clear(void)
#undef slk_color_sp
int slk_color_sp(
SCREEN *sp,
- short color_pair_number)
+ short pair_arg)
{ return(*(int *)0); }
#undef slk_color
int slk_color(
- short color_pair_number)
+ short pair_arg)
{ return(*(int *)0); }
/* ./base/lib_slkinit.c */
@@ -2274,6 +2306,12 @@ void _tracedump(
/* ./trace/lib_tracemse.c */
+#undef _nc_trace_mmask_t
+char *_nc_trace_mmask_t(
+ SCREEN *sp,
+ mmask_t code)
+ { return(*(char **)0); }
+
#undef _nc_tracemouse
char *_nc_tracemouse(
SCREEN *sp,
@@ -2293,8 +2331,6 @@ char *_tracemouse(
/* ./tty/lib_tstp.c */
-#include <SigAction.h>
-
#undef _nc_signal_handler
void _nc_signal_handler(
int enable)
@@ -2455,9 +2491,6 @@ char *_nc_printf_string(
/* ./tty/tty_update.c */
-#include <sys/time.h>
-#include <sys/times.h>
-
#undef doupdate_sp
int doupdate_sp(
SCREEN *sp)
@@ -2524,10 +2557,6 @@ void _nc_do_xmc_glitch(
/* ./trace/varargs.c */
-typedef enum {
- atUnknown = 0, atInteger, atFloat, atPoint, atString
-} ARGTYPE;
-
#undef _nc_varargs
char *_nc_varargs(
const char *fmt,
@@ -2557,6 +2586,11 @@ void _nc_free_and_exit(
int code)
{ /* void */ }
+#undef exit_curses
+void exit_curses(
+ int code)
+ { /* void */ }
+
/* ./expanded.c */
#undef _nc_toggle_attr_on
@@ -2656,6 +2690,12 @@ int mcprint(
int len)
{ return(*(int *)0); }
+/* ./base/new_pair.c */
+
+#undef _nc_new_pair
+void _nc_new_pair(void)
+ { /* void */ }
+
/* ./base/resizeterm.c */
#undef is_term_resized_sp
@@ -2786,8 +2826,8 @@ int _nc_add_to_try(
#undef _nc_align_termtype
void _nc_align_termtype(
- TERMTYPE *to,
- TERMTYPE *from)
+ TERMTYPE2 *to,
+ TERMTYPE2 *from)
{ /* void */ }
#undef _nc_copy_termtype
@@ -2799,21 +2839,19 @@ void _nc_copy_termtype(
/* ./codes.c */
#undef _nc_boolcodes
-char *const *_nc_boolcodes(void)
- { return(*(char **)0); }
+const char *const *_nc_boolcodes(void)
+ { return(*(const char **)0); }
#undef _nc_numcodes
-char *const *_nc_numcodes(void)
- { return(*(char **)0); }
+const char *const *_nc_numcodes(void)
+ { return(*(const char **)0); }
#undef _nc_strcodes
-char *const *_nc_strcodes(void)
- { return(*(char **)0); }
+const char *const *_nc_strcodes(void)
+ { return(*(const char **)0); }
/* ./comp_captab.c */
-#include <hashsize.h>
-
#undef _nc_get_table
const struct name_table_entry *_nc_get_table(
NCURSES_BOOL termcap)
@@ -2895,9 +2933,22 @@ struct name_table_entry const *_nc_find_type_entry(
NCURSES_BOOL termcap)
{ return(*(struct name_table_entry const **)0); }
-/* ./tinfo/db_iterator.c */
+#undef _nc_find_user_entry
+struct user_table_entry const *_nc_find_user_entry(
+ const char *string)
+ { return(*(struct user_table_entry const **)0); }
+
+/* ./comp_userdefs.c */
+
+#undef _nc_get_userdefs_table
+const struct user_table_entry *_nc_get_userdefs_table(void)
+ { return(*(const struct user_table_entry **)0); }
-#include <time.h>
+#undef _nc_get_hash_user
+const HashData *_nc_get_hash_user(void)
+ { return(*(const HashData **)0); }
+
+/* ./tinfo/db_iterator.c */
#undef _nc_tic_dir
const char *_nc_tic_dir(
@@ -2943,7 +2994,7 @@ ENTRY *_nc_tail;
#undef _nc_free_entry
void _nc_free_entry(
ENTRY *headp,
- TERMTYPE *tterm)
+ TERMTYPE2 *tterm)
{ /* void */ }
#undef _nc_free_entries
@@ -2951,22 +3002,21 @@ void _nc_free_entries(
ENTRY *headp)
{ /* void */ }
-#undef _nc_delink_entry
-ENTRY *_nc_delink_entry(
- ENTRY *headp,
- TERMTYPE *tterm)
- { return(*(ENTRY **)0); }
-
#undef _nc_leaks_tinfo
void _nc_leaks_tinfo(void)
{ /* void */ }
+#undef exit_terminfo
+void exit_terminfo(
+ int code)
+ { /* void */ }
+
/* ./fallback.c */
#undef _nc_fallback
-const TERMTYPE *_nc_fallback(
+const TERMTYPE2 *_nc_fallback(
const char *name)
- { return(*(const TERMTYPE **)0); }
+ { return(*(const TERMTYPE2 **)0); }
/* ./tinfo/free_ttype.c */
@@ -3004,15 +3054,6 @@ char *_nc_home_terminfo(void)
/* ./tinfo/init_keytry.c */
-#if 0
-
-#include <init_keytry.h>
-
-#undef _nc_tinfo_fkeys
-const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0};
-
-#endif
-
#undef _nc_init_keytry
void _nc_init_keytry(
SCREEN *sp)
@@ -3035,11 +3076,9 @@ void _nc_init_acs(void)
/* ./tinfo/lib_baudrate.c */
-#include <termcap.h>
-
struct speed {
- int s;
- int sp;
+ int given_speed;
+ int actual_speed;
};
#undef _nc_baudrate
@@ -3204,15 +3243,15 @@ int flushinp(void)
struct kn { short offset; int code; };
#undef keyname_sp
-char *keyname_sp(
+const char *keyname_sp(
SCREEN *sp,
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef keyname
-char *keyname(
+const char *keyname(
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./tinfo/lib_longname.c */
@@ -3410,10 +3449,6 @@ int intrflush(
/* ./tinfo/lib_setup.c */
-#include <locale.h>
-#include <sys/ioctl.h>
-#include <langinfo.h>
-
#undef _nc_ttytype
char *_nc_ttytype(void)
{ return(*(char **)0); }
@@ -3498,7 +3533,7 @@ void _nc_update_screensize(
#undef _nc_setup_tinfo
int _nc_setup_tinfo(
const char *const tn,
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
#undef _nc_tinfo_cmdch
@@ -3522,19 +3557,27 @@ int _nc_locale_breaks_acs(
#undef _nc_setupterm
int _nc_setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret,
int reuse)
{ return(*(int *)0); }
+#undef _nc_find_prescr
+SCREEN *_nc_find_prescr(void)
+ { return(*(SCREEN **)0); }
+
+#undef _nc_forget_prescr
+void _nc_forget_prescr(void)
+ { /* void */ }
+
#undef new_prescr
SCREEN *new_prescr(void)
{ return(*(SCREEN **)0); }
#undef setupterm
int setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret)
{ return(*(int *)0); }
@@ -3553,12 +3596,6 @@ int tgetent_sp(
const char *name)
{ return(*(int *)0); }
-#if 0
-
-#include <capdefaults.c>
-
-#endif
-
#undef tgetent
int tgetent(
char *bufp,
@@ -3568,35 +3605,35 @@ int tgetent(
#undef tgetflag_sp
int tgetflag_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetflag
int tgetflag(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum_sp
int tgetnum_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum
int tgetnum(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetstr_sp
char *tgetstr_sp(
SCREEN *sp,
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
#undef tgetstr
char *tgetstr(
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
@@ -3625,34 +3662,34 @@ char *tgoto(
#undef tigetflag_sp
int tigetflag_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetflag
int tigetflag(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum_sp
int tigetnum_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum
int tigetnum(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetstr_sp
char *tigetstr_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(char **)0); }
#undef tigetstr
char *tigetstr(
- char *str)
+ const char *str)
{ return(*(char **)0); }
/* ./tinfo/lib_tparm.c */
@@ -3669,7 +3706,7 @@ int _nc_tparm_analyze(
#undef tparm
char *tparm(
- char *string,
+ const char *string,
...)
{ return(*(char **)0); }
@@ -3804,6 +3841,11 @@ void _nc_count_outchars(
long increment)
{ /* void */ }
+#undef curses_trace
+unsigned curses_trace(
+ unsigned tracelevel)
+ { return(*(unsigned *)0); }
+
#undef trace
void trace(
const unsigned int tracelevel)
@@ -3846,9 +3888,9 @@ const char *_nc_retrace_cptr(
{ return(*(const char **)0); }
#undef _nc_retrace_cvoid_ptr
-void *_nc_retrace_cvoid_ptr(
- void *code)
- { return(*(void **)0); }
+const void *_nc_retrace_cvoid_ptr(
+ const void *code)
+ { return(*(const void **)0); }
#undef _nc_retrace_void_ptr
void *_nc_retrace_void_ptr(
@@ -3865,6 +3907,13 @@ WINDOW *_nc_retrace_win(
WINDOW *code)
{ return(*(WINDOW **)0); }
+#undef _nc_fmt_funcptr
+char *_nc_fmt_funcptr(
+ char *target,
+ const char *source,
+ size_t size)
+ { return(*(char **)0); }
+
#undef _nc_use_tracef
int _nc_use_tracef(
unsigned mask)
@@ -3923,11 +3972,6 @@ chtype _nc_retrace_chtype(
/* ./trace/lib_tracebits.c */
-typedef struct {
- unsigned int val;
- const char *name;
-} BITNAMES;
-
#undef _nc_trace_ttymode
char *_nc_trace_ttymode(
struct termios *tty)
@@ -4055,28 +4099,28 @@ int _nc_name_match(
/* ./names.c */
#undef _nc_boolnames
-char *const *_nc_boolnames(void)
- { return(*(char **)0); }
+const char *const *_nc_boolnames(void)
+ { return(*(const char **)0); }
#undef _nc_boolfnames
-char *const *_nc_boolfnames(void)
- { return(*(char **)0); }
+const char *const *_nc_boolfnames(void)
+ { return(*(const char **)0); }
#undef _nc_numnames
-char *const *_nc_numnames(void)
- { return(*(char **)0); }
+const char *const *_nc_numnames(void)
+ { return(*(const char **)0); }
#undef _nc_numfnames
-char *const *_nc_numfnames(void)
- { return(*(char **)0); }
+const char *const *_nc_numfnames(void)
+ { return(*(const char **)0); }
#undef _nc_strnames
-char *const *_nc_strnames(void)
- { return(*(char **)0); }
+const char *const *_nc_strnames(void)
+ { return(*(const char **)0); }
#undef _nc_strfnames
-char *const *_nc_strfnames(void)
- { return(*(char **)0); }
+const char *const *_nc_strfnames(void)
+ { return(*(const char **)0); }
/* ./tinfo/obsolete.c */
@@ -4095,16 +4139,14 @@ void _nc_set_buffer(
/* ./tinfo/read_entry.c */
-#include <hashed_db.h>
-
#undef _nc_init_termtype
void _nc_init_termtype(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
#undef _nc_read_termtype
int _nc_read_termtype(
- TERMTYPE *ptr,
+ TERMTYPE2 *ptr,
char *buffer,
int limit)
{ return(*(int *)0); }
@@ -4112,23 +4154,23 @@ int _nc_read_termtype(
#undef _nc_read_file_entry
int _nc_read_file_entry(
const char *const filename,
- TERMTYPE *ptr)
+ TERMTYPE2 *ptr)
{ return(*(int *)0); }
#undef _nc_read_entry
int _nc_read_entry(
const char *const name,
char *const filename,
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
/* ./tinfo/read_termcap.c */
-#include <sys/types.h>
-
-#undef _nc_read_termcap
-void _nc_read_termcap(void)
- { /* void */ }
+#undef _nc_read_termcap_entry
+int _nc_read_termcap_entry(
+ const char *const tn,
+ TERMTYPE2 *const tp)
+ { return(*(int *)0); }
/* ./tinfo/strings.c */
@@ -4210,21 +4252,21 @@ int _nc_remove_string(
#undef _nc_trim_sgr0
char *_nc_trim_sgr0(
- TERMTYPE *tp)
+ TERMTYPE2 *tp)
{ return(*(char **)0); }
/* ./unctrl.c */
#undef unctrl_sp
-char *unctrl_sp(
+const char *unctrl_sp(
SCREEN *sp,
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef unctrl
-char *unctrl(
+const char *unctrl(
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./trace/visbuf.c */
@@ -4262,7 +4304,7 @@ const char *_nc_viscbuf(
#undef _nc_init_entry
void _nc_init_entry(
- TERMTYPE *const tp)
+ ENTRY *const tp)
{ /* void */ }
#undef _nc_copy_entry
@@ -4283,8 +4325,8 @@ void _nc_wrap_entry(
#undef _nc_merge_entry
void _nc_merge_entry(
- TERMTYPE *const to,
- TERMTYPE *const from)
+ ENTRY *const target,
+ ENTRY *const source)
{ /* void */ }
/* ./tinfo/captoinfo.c */
@@ -4316,11 +4358,8 @@ char *_nc_tic_expand(
#undef _nc_check_termtype2
void (*_nc_check_termtype2)(
- TERMTYPE *p1,
+ TERMTYPE2 *p1,
NCURSES_BOOL p2);
-#undef _nc_check_termtype
-void (*_nc_check_termtype)(
- TERMTYPE *p1);
#undef _nc_entry_match
NCURSES_BOOL _nc_entry_match(
@@ -4344,11 +4383,6 @@ int _nc_resolve_uses2(
NCURSES_BOOL literal)
{ return(*(int *)0); }
-#undef _nc_resolve_uses
-int _nc_resolve_uses(
- NCURSES_BOOL fullresolve)
- { return(*(int *)0); }
-
/* ./tinfo/comp_scan.c */
#undef _nc_syntax
@@ -4399,7 +4433,7 @@ void _nc_panic_mode(
#undef _nc_parse_entry
int _nc_parse_entry(
- struct entry *entryp,
+ ENTRY *entryp,
int literal,
NCURSES_BOOL silent)
{ return(*(int *)0); }
@@ -4410,23 +4444,26 @@ int _nc_capcmp(
const char *t)
{ return(*(int *)0); }
-typedef struct {
- const char *from;
- const char *to;
-} assoc;
-
/* ./tinfo/write_entry.c */
#undef _nc_set_writedir
void _nc_set_writedir(
- char *dir)
+ const char *dir)
{ /* void */ }
#undef _nc_write_entry
void _nc_write_entry(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
+#undef _nc_write_object
+int _nc_write_object(
+ TERMTYPE2 *tp,
+ char *buffer,
+ unsigned *offset,
+ unsigned limit)
+ { return(*(int *)0); }
+
#undef _nc_tic_written
int _nc_tic_written(void)
{ return(*(int *)0); }
diff --git a/ncurses/llib-lncursestw b/ncurses/llib-lncursestw
index b1919c43e822..40a9f5ed87ac 100644
--- a/ncurses/llib-lncursestw
+++ b/ncurses/llib-lncursestw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2009-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2009-2018,2019 Free 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 2009-on *
+ * Author: Thomas E. Dickey 2009-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -95,8 +95,6 @@ void _nc_scroll_oldhash(
/* ./base/lib_addch.c */
-#include <ctype.h>
-
#undef _nc_render
cchar_t _nc_render(
WINDOW *win,
@@ -221,7 +219,7 @@ int wchgat(
WINDOW *win,
int n,
attr_t attr,
- short color,
+ short pair_arg,
const void *opts)
{ return(*(int *)0); }
@@ -256,8 +254,6 @@ int wclrtoeol(
/* ./base/lib_color.c */
-#include <tic.h>
-
#undef _nc_COLOR_PAIRS
int _nc_COLOR_PAIRS(void)
{ return(*(int *)0); }
@@ -284,6 +280,26 @@ int start_color_sp(
int start_color(void)
{ return(*(int *)0); }
+#undef _nc_change_pair
+void _nc_change_pair(
+ SCREEN *sp,
+ int pair)
+ { /* void */ }
+
+#undef _nc_reserve_pairs
+void _nc_reserve_pairs(
+ SCREEN *sp,
+ int want)
+ { /* void */ }
+
+#undef _nc_init_pair
+int _nc_init_pair(
+ SCREEN *sp,
+ int pair,
+ int f,
+ int b)
+ { return(*(int *)0); }
+
#undef init_pair_sp
int init_pair_sp(
SCREEN *sp,
@@ -299,6 +315,15 @@ int init_pair(
short b)
{ return(*(int *)0); }
+#undef _nc_init_color
+int _nc_init_color(
+ SCREEN *sp,
+ int color,
+ int r,
+ int g,
+ int b)
+ { return(*(int *)0); }
+
#undef init_color_sp
int init_color_sp(
SCREEN *sp,
@@ -351,6 +376,14 @@ int color_content(
short *b)
{ return(*(int *)0); }
+#undef _nc_pair_content
+int _nc_pair_content(
+ SCREEN *sp,
+ int pair,
+ int *f,
+ int *b)
+ { return(*(int *)0); }
+
#undef pair_content_sp
int pair_content_sp(
SCREEN *sp,
@@ -383,12 +416,85 @@ void _nc_do_color(
NCURSES_OUTC outc)
{ /* void */ }
+#undef init_extended_pair_sp
+int init_extended_pair_sp(
+ SCREEN *sp,
+ int pair,
+ int f,
+ int b)
+ { return(*(int *)0); }
+
+#undef init_extended_color_sp
+int init_extended_color_sp(
+ SCREEN *sp,
+ int color,
+ int r,
+ int g,
+ int b)
+ { return(*(int *)0); }
+
+#undef extended_color_content_sp
+int extended_color_content_sp(
+ SCREEN *sp,
+ int color,
+ int *r,
+ int *g,
+ int *b)
+ { return(*(int *)0); }
+
+#undef extended_pair_content_sp
+int extended_pair_content_sp(
+ SCREEN *sp,
+ int pair,
+ int *f,
+ int *b)
+ { return(*(int *)0); }
+
+#undef reset_color_pairs_sp
+void reset_color_pairs_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef init_extended_pair
+int init_extended_pair(
+ int pair,
+ int f,
+ int b)
+ { return(*(int *)0); }
+
+#undef init_extended_color
+int init_extended_color(
+ int color,
+ int r,
+ int g,
+ int b)
+ { return(*(int *)0); }
+
+#undef extended_color_content
+int extended_color_content(
+ int color,
+ int *r,
+ int *g,
+ int *b)
+ { return(*(int *)0); }
+
+#undef extended_pair_content
+int extended_pair_content(
+ int pair,
+ int *f,
+ int *b)
+ { return(*(int *)0); }
+
+#undef reset_color_pairs
+void reset_color_pairs(void)
+ { /* void */ }
+
/* ./base/lib_colorset.c */
#undef wcolor_set
int wcolor_set(
WINDOW *win,
- short color_pair_number,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
@@ -457,8 +563,6 @@ int flash(void)
/* ./lib_gen.c */
-#include <ncurses_cfg.h>
-
#undef addch
int (addch)(
const chtype z)
@@ -488,17 +592,17 @@ int (addstr)(
#undef attroff
int (attroff)(
- int z)
+ NCURSES_ATTR_T z)
{ return(*(int *)0); }
#undef attron
int (attron)(
- int z)
+ NCURSES_ATTR_T z)
{ return(*(int *)0); }
#undef attrset
int (attrset)(
- int z)
+ NCURSES_ATTR_T z)
{ return(*(int *)0); }
#undef attr_get
@@ -1081,20 +1185,6 @@ int (vline)(
int z)
{ return(*(int *)0); }
-#undef vw_printw
-int (vw_printw)(
- WINDOW *a1,
- const char *a2,
- va_list z)
- { return(*(int *)0); }
-
-#undef vw_scanw
-int (vw_scanw)(
- WINDOW *a1,
- char *a2,
- va_list z)
- { return(*(int *)0); }
-
#undef waddchstr
int (waddchstr)(
WINDOW *a1,
@@ -1295,6 +1385,11 @@ NCURSES_BOOL (is_syncok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
+#undef wgetdelay
+int (wgetdelay)(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
#undef wgetscrreg
int (wgetscrreg)(
const WINDOW *a1,
@@ -1770,8 +1865,6 @@ NCURSES_BOOL (mouse_trafo)(
/* ./base/lib_getch.c */
-#include <fifo_defs.h>
-
#undef _nc_ESCDELAY
int _nc_ESCDELAY(void)
{ return(*(int *)0); }
@@ -2111,22 +2204,20 @@ void nofilter(void)
#undef newterm_sp
SCREEN *newterm_sp(
SCREEN *sp,
- char *name,
+ const char *name,
FILE *ofp,
FILE *ifp)
{ return(*(SCREEN **)0); }
#undef newterm
SCREEN *newterm(
- char *name,
+ const char *name,
FILE *ofp,
FILE *ifp)
{ return(*(SCREEN **)0); }
/* ./base/lib_newwin.c */
-#include "/usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stddef.h"
-
#undef _nc_freewin
int _nc_freewin(
WINDOW *win)
@@ -2330,6 +2421,13 @@ int vwprintw(
va_list argp)
{ return(*(int *)0); }
+#undef vw_printw
+int vw_printw(
+ WINDOW *win,
+ const char *fmt,
+ va_list argp)
+ { return(*(int *)0); }
+
/* ./base/lib_redrawln.c */
#undef wredrawln
@@ -2356,14 +2454,14 @@ int wnoutrefresh(
#undef restartterm_sp
int restartterm_sp(
SCREEN *sp,
- char *termp,
+ const char *termp,
int filenum,
int *errret)
{ return(*(int *)0); }
#undef restartterm
int restartterm(
- char *termp,
+ const char *termp,
int filenum,
int *errret)
{ return(*(int *)0); }
@@ -2373,20 +2471,27 @@ int restartterm(
#undef vwscanw
int vwscanw(
WINDOW *win,
- char *fmt,
+ const char *fmt,
+ va_list argp)
+ { return(*(int *)0); }
+
+#undef vw_scanw
+int vw_scanw(
+ WINDOW *win,
+ const char *fmt,
va_list argp)
{ return(*(int *)0); }
#undef scanw
int scanw(
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
#undef wscanw
int wscanw(
WINDOW *win,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -2394,7 +2499,7 @@ int wscanw(
int mvscanw(
int y,
int x,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -2403,7 +2508,7 @@ int mvwscanw(
WINDOW *win,
int y,
int x,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -2592,14 +2697,14 @@ int slk_restore(void)
int slk_attr_set_sp(
SCREEN *sp,
const attr_t attr,
- short color_pair_number,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
#undef slk_attr_set
int slk_attr_set(
const attr_t attr,
- short color_pair_number,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
@@ -2669,12 +2774,23 @@ int slk_clear(void)
#undef slk_color_sp
int slk_color_sp(
SCREEN *sp,
- short color_pair_number)
+ short pair_arg)
{ return(*(int *)0); }
#undef slk_color
int slk_color(
- short color_pair_number)
+ short pair_arg)
+ { return(*(int *)0); }
+
+#undef extended_slk_color_sp
+int extended_slk_color_sp(
+ SCREEN *sp,
+ int pair_arg)
+ { return(*(int *)0); }
+
+#undef extended_slk_color
+int extended_slk_color(
+ int pair_arg)
{ return(*(int *)0); }
/* ./base/lib_slkinit.c */
@@ -2725,8 +2841,6 @@ int slk_refresh(void)
/* ./base/lib_slkset.c */
-#include <wctype.h>
-
#undef slk_set_sp
int slk_set_sp(
SCREEN *sp,
@@ -2784,6 +2898,12 @@ void _tracedump(
/* ./trace/lib_tracemse.c */
+#undef _nc_trace_mmask_t
+char *_nc_trace_mmask_t(
+ SCREEN *sp,
+ mmask_t code)
+ { return(*(char **)0); }
+
#undef _nc_tracemouse
char *_nc_tracemouse(
SCREEN *sp,
@@ -2803,8 +2923,6 @@ char *_tracemouse(
/* ./tty/lib_tstp.c */
-#include <SigAction.h>
-
#undef _nc_signal_handler
void _nc_signal_handler(
int enable)
@@ -2965,9 +3083,6 @@ char *_nc_printf_string(
/* ./tty/tty_update.c */
-#include <sys/time.h>
-#include <sys/times.h>
-
#undef doupdate_sp
int doupdate_sp(
SCREEN *sp)
@@ -3034,10 +3149,6 @@ void _nc_do_xmc_glitch(
/* ./trace/varargs.c */
-typedef enum {
- atUnknown = 0, atInteger, atFloat, atPoint, atString
-} ARGTYPE;
-
#undef _nc_varargs
char *_nc_varargs(
const char *fmt,
@@ -3067,6 +3178,11 @@ void _nc_free_and_exit(
int code)
{ /* void */ }
+#undef exit_curses
+void exit_curses(
+ int code)
+ { /* void */ }
+
/* ./widechar/charable.c */
#undef _nc_is_charable
@@ -3120,7 +3236,7 @@ int setcchar(
cchar_t *wcval,
const wchar_t *wch,
const attr_t attrs,
- short color_pair,
+ short pair_arg,
const void *opts)
{ return(*(int *)0); }
@@ -3129,7 +3245,7 @@ int getcchar(
const cchar_t *wcval,
wchar_t *wch,
attr_t *attrs,
- short *color_pair,
+ short *pair_arg,
void *opts)
{ return(*(int *)0); }
@@ -3227,9 +3343,9 @@ int winwstr(
/* ./widechar/lib_key_name.c */
#undef key_name
-char *key_name(
+const char *key_name(
wchar_t c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./widechar/lib_pecho_wchar.c */
@@ -3274,7 +3390,7 @@ int unget_wch(
int vid_puts_sp(
SCREEN *sp,
attr_t newmode,
- short pair,
+ short pair_arg,
void *opts,
NCURSES_OUTC_sp outc)
{ return(*(int *)0); }
@@ -3282,7 +3398,7 @@ int vid_puts_sp(
#undef vid_puts
int vid_puts(
attr_t newmode,
- short pair,
+ short pair_arg,
void *opts,
NCURSES_OUTC outc)
{ return(*(int *)0); }
@@ -3291,14 +3407,14 @@ int vid_puts(
int vid_attr_sp(
SCREEN *sp,
attr_t newmode,
- short pair,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
#undef vid_attr
int vid_attr(
attr_t newmode,
- short pair,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
@@ -3441,6 +3557,72 @@ int mcprint(
int len)
{ return(*(int *)0); }
+/* ./base/new_pair.c */
+
+#undef _nc_free_ordered_pairs
+void _nc_free_ordered_pairs(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef _nc_reset_color_pair
+void _nc_reset_color_pair(
+ SCREEN *sp,
+ int pair,
+ colorpair_t *next)
+ { /* void */ }
+
+#undef _nc_set_color_pair
+void _nc_set_color_pair(
+ SCREEN *sp,
+ int pair,
+ int mode)
+ { /* void */ }
+
+#undef _nc_copy_pairs
+void _nc_copy_pairs(
+ SCREEN *sp,
+ colorpair_t *target,
+ colorpair_t *source,
+ int length)
+ { /* void */ }
+
+#undef alloc_pair_sp
+int alloc_pair_sp(
+ SCREEN *sp,
+ int fg,
+ int bg)
+ { return(*(int *)0); }
+
+#undef find_pair_sp
+int find_pair_sp(
+ SCREEN *sp,
+ int fg,
+ int bg)
+ { return(*(int *)0); }
+
+#undef free_pair_sp
+int free_pair_sp(
+ SCREEN *sp,
+ int pair)
+ { return(*(int *)0); }
+
+#undef alloc_pair
+int alloc_pair(
+ int f,
+ int b)
+ { return(*(int *)0); }
+
+#undef find_pair
+int find_pair(
+ int f,
+ int b)
+ { return(*(int *)0); }
+
+#undef free_pair
+int free_pair(
+ int pair)
+ { return(*(int *)0); }
+
/* ./base/resizeterm.c */
#undef is_term_resized_sp
@@ -3571,8 +3753,8 @@ int _nc_add_to_try(
#undef _nc_align_termtype
void _nc_align_termtype(
- TERMTYPE *to,
- TERMTYPE *from)
+ TERMTYPE2 *to,
+ TERMTYPE2 *from)
{ /* void */ }
#undef _nc_copy_termtype
@@ -3581,24 +3763,34 @@ void _nc_copy_termtype(
const TERMTYPE *src)
{ /* void */ }
+#undef _nc_copy_termtype2
+void _nc_copy_termtype2(
+ TERMTYPE2 *dst,
+ const TERMTYPE2 *src)
+ { /* void */ }
+
+#undef _nc_export_termtype2
+void _nc_export_termtype2(
+ TERMTYPE *dst,
+ const TERMTYPE2 *src)
+ { /* void */ }
+
/* ./codes.c */
#undef _nc_boolcodes
-char *const *_nc_boolcodes(void)
- { return(*(char **)0); }
+const char *const *_nc_boolcodes(void)
+ { return(*(const char **)0); }
#undef _nc_numcodes
-char *const *_nc_numcodes(void)
- { return(*(char **)0); }
+const char *const *_nc_numcodes(void)
+ { return(*(const char **)0); }
#undef _nc_strcodes
-char *const *_nc_strcodes(void)
- { return(*(char **)0); }
+const char *const *_nc_strcodes(void)
+ { return(*(const char **)0); }
/* ./comp_captab.c */
-#include <hashsize.h>
-
#undef _nc_get_table
const struct name_table_entry *_nc_get_table(
NCURSES_BOOL termcap)
@@ -3680,9 +3872,22 @@ struct name_table_entry const *_nc_find_type_entry(
NCURSES_BOOL termcap)
{ return(*(struct name_table_entry const **)0); }
-/* ./tinfo/db_iterator.c */
+#undef _nc_find_user_entry
+struct user_table_entry const *_nc_find_user_entry(
+ const char *string)
+ { return(*(struct user_table_entry const **)0); }
-#include <time.h>
+/* ./comp_userdefs.c */
+
+#undef _nc_get_userdefs_table
+const struct user_table_entry *_nc_get_userdefs_table(void)
+ { return(*(const struct user_table_entry **)0); }
+
+#undef _nc_get_hash_user
+const HashData *_nc_get_hash_user(void)
+ { return(*(const HashData **)0); }
+
+/* ./tinfo/db_iterator.c */
#undef _nc_tic_dir
const char *_nc_tic_dir(
@@ -3728,7 +3933,7 @@ ENTRY *_nc_tail;
#undef _nc_free_entry
void _nc_free_entry(
ENTRY *headp,
- TERMTYPE *tterm)
+ TERMTYPE2 *tterm)
{ /* void */ }
#undef _nc_free_entries
@@ -3736,18 +3941,22 @@ void _nc_free_entries(
ENTRY *headp)
{ /* void */ }
-#undef _nc_delink_entry
-ENTRY *_nc_delink_entry(
- ENTRY *headp,
- TERMTYPE *tterm)
- { return(*(ENTRY **)0); }
-
#undef _nc_leaks_tinfo
void _nc_leaks_tinfo(void)
{ /* void */ }
+#undef exit_terminfo
+void exit_terminfo(
+ int code)
+ { /* void */ }
+
/* ./fallback.c */
+#undef _nc_fallback2
+const TERMTYPE2 *_nc_fallback2(
+ const char *name)
+ { return(*(const TERMTYPE2 **)0); }
+
#undef _nc_fallback
const TERMTYPE *_nc_fallback(
const char *name)
@@ -3760,6 +3969,11 @@ void _nc_free_termtype(
TERMTYPE *ptr)
{ /* void */ }
+#undef _nc_free_termtype2
+void _nc_free_termtype2(
+ TERMTYPE2 *ptr)
+ { /* void */ }
+
#undef _nc_user_definable
NCURSES_BOOL _nc_user_definable;
@@ -3789,15 +4003,6 @@ char *_nc_home_terminfo(void)
/* ./tinfo/init_keytry.c */
-#if 0
-
-#include <init_keytry.h>
-
-#undef _nc_tinfo_fkeys
-const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0};
-
-#endif
-
#undef _nc_init_keytry
void _nc_init_keytry(
SCREEN *sp)
@@ -3820,11 +4025,9 @@ void _nc_init_acs(void)
/* ./tinfo/lib_baudrate.c */
-#include <termcap.h>
-
struct speed {
- int s;
- int sp;
+ int given_speed;
+ int actual_speed;
};
#undef _nc_baudrate
@@ -3989,15 +4192,15 @@ int flushinp(void)
struct kn { short offset; int code; };
#undef keyname_sp
-char *keyname_sp(
+const char *keyname_sp(
SCREEN *sp,
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef keyname
-char *keyname(
+const char *keyname(
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./tinfo/lib_longname.c */
@@ -4195,10 +4398,6 @@ int intrflush(
/* ./tinfo/lib_setup.c */
-#include <locale.h>
-#include <sys/ioctl.h>
-#include <langinfo.h>
-
#undef _nc_ttytype
char *_nc_ttytype(void)
{ return(*(char **)0); }
@@ -4283,7 +4482,7 @@ void _nc_update_screensize(
#undef _nc_setup_tinfo
int _nc_setup_tinfo(
const char *const tn,
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
#undef _nc_tinfo_cmdch
@@ -4307,19 +4506,27 @@ int _nc_locale_breaks_acs(
#undef _nc_setupterm
int _nc_setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret,
int reuse)
{ return(*(int *)0); }
+#undef _nc_find_prescr
+SCREEN *_nc_find_prescr(void)
+ { return(*(SCREEN **)0); }
+
+#undef _nc_forget_prescr
+void _nc_forget_prescr(void)
+ { /* void */ }
+
#undef new_prescr
SCREEN *new_prescr(void)
{ return(*(SCREEN **)0); }
#undef setupterm
int setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret)
{ return(*(int *)0); }
@@ -4338,12 +4545,6 @@ int tgetent_sp(
const char *name)
{ return(*(int *)0); }
-#if 0
-
-#include <capdefaults.c>
-
-#endif
-
#undef tgetent
int tgetent(
char *bufp,
@@ -4353,35 +4554,35 @@ int tgetent(
#undef tgetflag_sp
int tgetflag_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetflag
int tgetflag(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum_sp
int tgetnum_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum
int tgetnum(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetstr_sp
char *tgetstr_sp(
SCREEN *sp,
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
#undef tgetstr
char *tgetstr(
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
@@ -4410,34 +4611,34 @@ char *tgoto(
#undef tigetflag_sp
int tigetflag_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetflag
int tigetflag(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum_sp
int tigetnum_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum
int tigetnum(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetstr_sp
char *tigetstr_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(char **)0); }
#undef tigetstr
char *tigetstr(
- char *str)
+ const char *str)
{ return(*(char **)0); }
/* ./tinfo/lib_tparm.c */
@@ -4454,7 +4655,7 @@ int _nc_tparm_analyze(
#undef tparm
char *tparm(
- char *string,
+ const char *string,
...)
{ return(*(char **)0); }
@@ -4589,6 +4790,11 @@ void _nc_count_outchars(
long increment)
{ /* void */ }
+#undef curses_trace
+unsigned curses_trace(
+ unsigned tracelevel)
+ { return(*(unsigned *)0); }
+
#undef trace
void trace(
const unsigned int tracelevel)
@@ -4631,9 +4837,9 @@ const char *_nc_retrace_cptr(
{ return(*(const char **)0); }
#undef _nc_retrace_cvoid_ptr
-void *_nc_retrace_cvoid_ptr(
- void *code)
- { return(*(void **)0); }
+const void *_nc_retrace_cvoid_ptr(
+ const void *code)
+ { return(*(const void **)0); }
#undef _nc_retrace_void_ptr
void *_nc_retrace_void_ptr(
@@ -4650,6 +4856,13 @@ WINDOW *_nc_retrace_win(
WINDOW *code)
{ return(*(WINDOW **)0); }
+#undef _nc_fmt_funcptr
+char *_nc_fmt_funcptr(
+ char *target,
+ const char *source,
+ size_t size)
+ { return(*(char **)0); }
+
#undef _nc_use_tracef
int _nc_use_tracef(
unsigned mask)
@@ -4719,11 +4932,6 @@ char *_tracecchar_t(
/* ./trace/lib_tracebits.c */
-typedef struct {
- unsigned int val;
- const char *name;
-} BITNAMES;
-
#undef _nc_trace_ttymode
char *_nc_trace_ttymode(
struct termios *tty)
@@ -4851,28 +5059,28 @@ int _nc_name_match(
/* ./names.c */
#undef _nc_boolnames
-char *const *_nc_boolnames(void)
- { return(*(char **)0); }
+const char *const *_nc_boolnames(void)
+ { return(*(const char **)0); }
#undef _nc_boolfnames
-char *const *_nc_boolfnames(void)
- { return(*(char **)0); }
+const char *const *_nc_boolfnames(void)
+ { return(*(const char **)0); }
#undef _nc_numnames
-char *const *_nc_numnames(void)
- { return(*(char **)0); }
+const char *const *_nc_numnames(void)
+ { return(*(const char **)0); }
#undef _nc_numfnames
-char *const *_nc_numfnames(void)
- { return(*(char **)0); }
+const char *const *_nc_numfnames(void)
+ { return(*(const char **)0); }
#undef _nc_strnames
-char *const *_nc_strnames(void)
- { return(*(char **)0); }
+const char *const *_nc_strnames(void)
+ { return(*(const char **)0); }
#undef _nc_strfnames
-char *const *_nc_strfnames(void)
- { return(*(char **)0); }
+const char *const *_nc_strfnames(void)
+ { return(*(const char **)0); }
/* ./tinfo/obsolete.c */
@@ -4891,16 +5099,14 @@ void _nc_set_buffer(
/* ./tinfo/read_entry.c */
-#include <hashed_db.h>
-
#undef _nc_init_termtype
void _nc_init_termtype(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
#undef _nc_read_termtype
int _nc_read_termtype(
- TERMTYPE *ptr,
+ TERMTYPE2 *ptr,
char *buffer,
int limit)
{ return(*(int *)0); }
@@ -4908,7 +5114,14 @@ int _nc_read_termtype(
#undef _nc_read_file_entry
int _nc_read_file_entry(
const char *const filename,
- TERMTYPE *ptr)
+ TERMTYPE2 *ptr)
+ { return(*(int *)0); }
+
+#undef _nc_read_entry2
+int _nc_read_entry2(
+ const char *const name,
+ char *const filename,
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
#undef _nc_read_entry
@@ -4920,11 +5133,11 @@ int _nc_read_entry(
/* ./tinfo/read_termcap.c */
-#include <sys/types.h>
-
-#undef _nc_read_termcap
-void _nc_read_termcap(void)
- { /* void */ }
+#undef _nc_read_termcap_entry
+int _nc_read_termcap_entry(
+ const char *const tn,
+ TERMTYPE2 *const tp)
+ { return(*(int *)0); }
/* ./tinfo/strings.c */
@@ -5006,21 +5219,21 @@ int _nc_remove_string(
#undef _nc_trim_sgr0
char *_nc_trim_sgr0(
- TERMTYPE *tp)
+ TERMTYPE2 *tp)
{ return(*(char **)0); }
/* ./unctrl.c */
#undef unctrl_sp
-char *unctrl_sp(
+const char *unctrl_sp(
SCREEN *sp,
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef unctrl
-char *unctrl(
+const char *unctrl(
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./trace/visbuf.c */
@@ -5080,7 +5293,7 @@ const char *_nc_viscbuf(
#undef _nc_init_entry
void _nc_init_entry(
- TERMTYPE *const tp)
+ ENTRY *const tp)
{ /* void */ }
#undef _nc_copy_entry
@@ -5101,8 +5314,8 @@ void _nc_wrap_entry(
#undef _nc_merge_entry
void _nc_merge_entry(
- TERMTYPE *const to,
- TERMTYPE *const from)
+ ENTRY *const target,
+ ENTRY *const source)
{ /* void */ }
/* ./tinfo/captoinfo.c */
@@ -5134,11 +5347,8 @@ char *_nc_tic_expand(
#undef _nc_check_termtype2
void (*_nc_check_termtype2)(
- TERMTYPE *p1,
+ TERMTYPE2 *p1,
NCURSES_BOOL p2);
-#undef _nc_check_termtype
-void (*_nc_check_termtype)(
- TERMTYPE *p1);
#undef _nc_entry_match
NCURSES_BOOL _nc_entry_match(
@@ -5162,11 +5372,6 @@ int _nc_resolve_uses2(
NCURSES_BOOL literal)
{ return(*(int *)0); }
-#undef _nc_resolve_uses
-int _nc_resolve_uses(
- NCURSES_BOOL fullresolve)
- { return(*(int *)0); }
-
/* ./tinfo/comp_scan.c */
#undef _nc_syntax
@@ -5217,7 +5422,7 @@ void _nc_panic_mode(
#undef _nc_parse_entry
int _nc_parse_entry(
- struct entry *entryp,
+ ENTRY *entryp,
int literal,
NCURSES_BOOL silent)
{ return(*(int *)0); }
@@ -5228,23 +5433,26 @@ int _nc_capcmp(
const char *t)
{ return(*(int *)0); }
-typedef struct {
- const char *from;
- const char *to;
-} assoc;
-
/* ./tinfo/write_entry.c */
#undef _nc_set_writedir
void _nc_set_writedir(
- char *dir)
+ const char *dir)
{ /* void */ }
#undef _nc_write_entry
void _nc_write_entry(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
+#undef _nc_write_object
+int _nc_write_object(
+ TERMTYPE2 *tp,
+ char *buffer,
+ unsigned *offset,
+ unsigned limit)
+ { return(*(int *)0); }
+
#undef _nc_tic_written
int _nc_tic_written(void)
{ return(*(int *)0); }
diff --git a/ncurses/llib-lncursesw b/ncurses/llib-lncursesw
index be768d716b9c..ae5581160f50 100644
--- a/ncurses/llib-lncursesw
+++ b/ncurses/llib-lncursesw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2001-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2018,2019 Free 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 2001-on *
+ * Author: Thomas E. Dickey 2001-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -95,8 +95,6 @@ void _nc_scroll_oldhash(
/* ./base/lib_addch.c */
-#include <ctype.h>
-
#undef _nc_render
cchar_t _nc_render(
WINDOW *win,
@@ -221,7 +219,7 @@ int wchgat(
WINDOW *win,
int n,
attr_t attr,
- short color,
+ short pair_arg,
const void *opts)
{ return(*(int *)0); }
@@ -256,8 +254,6 @@ int wclrtoeol(
/* ./base/lib_color.c */
-#include <tic.h>
-
#undef COLOR_PAIRS
int COLOR_PAIRS;
#undef COLORS
@@ -281,6 +277,26 @@ int start_color_sp(
int start_color(void)
{ return(*(int *)0); }
+#undef _nc_change_pair
+void _nc_change_pair(
+ SCREEN *sp,
+ int pair)
+ { /* void */ }
+
+#undef _nc_reserve_pairs
+void _nc_reserve_pairs(
+ SCREEN *sp,
+ int want)
+ { /* void */ }
+
+#undef _nc_init_pair
+int _nc_init_pair(
+ SCREEN *sp,
+ int pair,
+ int f,
+ int b)
+ { return(*(int *)0); }
+
#undef init_pair_sp
int init_pair_sp(
SCREEN *sp,
@@ -296,6 +312,15 @@ int init_pair(
short b)
{ return(*(int *)0); }
+#undef _nc_init_color
+int _nc_init_color(
+ SCREEN *sp,
+ int color,
+ int r,
+ int g,
+ int b)
+ { return(*(int *)0); }
+
#undef init_color_sp
int init_color_sp(
SCREEN *sp,
@@ -348,6 +373,14 @@ int color_content(
short *b)
{ return(*(int *)0); }
+#undef _nc_pair_content
+int _nc_pair_content(
+ SCREEN *sp,
+ int pair,
+ int *f,
+ int *b)
+ { return(*(int *)0); }
+
#undef pair_content_sp
int pair_content_sp(
SCREEN *sp,
@@ -380,12 +413,85 @@ void _nc_do_color(
NCURSES_OUTC outc)
{ /* void */ }
+#undef init_extended_pair_sp
+int init_extended_pair_sp(
+ SCREEN *sp,
+ int pair,
+ int f,
+ int b)
+ { return(*(int *)0); }
+
+#undef init_extended_color_sp
+int init_extended_color_sp(
+ SCREEN *sp,
+ int color,
+ int r,
+ int g,
+ int b)
+ { return(*(int *)0); }
+
+#undef extended_color_content_sp
+int extended_color_content_sp(
+ SCREEN *sp,
+ int color,
+ int *r,
+ int *g,
+ int *b)
+ { return(*(int *)0); }
+
+#undef extended_pair_content_sp
+int extended_pair_content_sp(
+ SCREEN *sp,
+ int pair,
+ int *f,
+ int *b)
+ { return(*(int *)0); }
+
+#undef reset_color_pairs_sp
+void reset_color_pairs_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef init_extended_pair
+int init_extended_pair(
+ int pair,
+ int f,
+ int b)
+ { return(*(int *)0); }
+
+#undef init_extended_color
+int init_extended_color(
+ int color,
+ int r,
+ int g,
+ int b)
+ { return(*(int *)0); }
+
+#undef extended_color_content
+int extended_color_content(
+ int color,
+ int *r,
+ int *g,
+ int *b)
+ { return(*(int *)0); }
+
+#undef extended_pair_content
+int extended_pair_content(
+ int pair,
+ int *f,
+ int *b)
+ { return(*(int *)0); }
+
+#undef reset_color_pairs
+void reset_color_pairs(void)
+ { /* void */ }
+
/* ./base/lib_colorset.c */
#undef wcolor_set
int wcolor_set(
WINDOW *win,
- short color_pair_number,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
@@ -454,8 +560,6 @@ int flash(void)
/* ./lib_gen.c */
-#include <ncurses_cfg.h>
-
#undef addch
int (addch)(
const chtype z)
@@ -485,17 +589,17 @@ int (addstr)(
#undef attroff
int (attroff)(
- int z)
+ NCURSES_ATTR_T z)
{ return(*(int *)0); }
#undef attron
int (attron)(
- int z)
+ NCURSES_ATTR_T z)
{ return(*(int *)0); }
#undef attrset
int (attrset)(
- int z)
+ NCURSES_ATTR_T z)
{ return(*(int *)0); }
#undef attr_get
@@ -1078,20 +1182,6 @@ int (vline)(
int z)
{ return(*(int *)0); }
-#undef vw_printw
-int (vw_printw)(
- WINDOW *a1,
- const char *a2,
- va_list z)
- { return(*(int *)0); }
-
-#undef vw_scanw
-int (vw_scanw)(
- WINDOW *a1,
- char *a2,
- va_list z)
- { return(*(int *)0); }
-
#undef waddchstr
int (waddchstr)(
WINDOW *a1,
@@ -1292,6 +1382,11 @@ NCURSES_BOOL (is_syncok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
+#undef wgetdelay
+int (wgetdelay)(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
#undef wgetscrreg
int (wgetscrreg)(
const WINDOW *a1,
@@ -1767,8 +1862,6 @@ NCURSES_BOOL (mouse_trafo)(
/* ./base/lib_getch.c */
-#include <fifo_defs.h>
-
#undef ESCDELAY
int ESCDELAY;
@@ -2102,22 +2195,20 @@ void nofilter(void)
#undef newterm_sp
SCREEN *newterm_sp(
SCREEN *sp,
- char *name,
+ const char *name,
FILE *ofp,
FILE *ifp)
{ return(*(SCREEN **)0); }
#undef newterm
SCREEN *newterm(
- char *name,
+ const char *name,
FILE *ofp,
FILE *ifp)
{ return(*(SCREEN **)0); }
/* ./base/lib_newwin.c */
-#include "/usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stddef.h"
-
#undef _nc_freewin
int _nc_freewin(
WINDOW *win)
@@ -2321,6 +2412,13 @@ int vwprintw(
va_list argp)
{ return(*(int *)0); }
+#undef vw_printw
+int vw_printw(
+ WINDOW *win,
+ const char *fmt,
+ va_list argp)
+ { return(*(int *)0); }
+
/* ./base/lib_redrawln.c */
#undef wredrawln
@@ -2347,14 +2445,14 @@ int wnoutrefresh(
#undef restartterm_sp
int restartterm_sp(
SCREEN *sp,
- char *termp,
+ const char *termp,
int filenum,
int *errret)
{ return(*(int *)0); }
#undef restartterm
int restartterm(
- char *termp,
+ const char *termp,
int filenum,
int *errret)
{ return(*(int *)0); }
@@ -2364,20 +2462,27 @@ int restartterm(
#undef vwscanw
int vwscanw(
WINDOW *win,
- char *fmt,
+ const char *fmt,
+ va_list argp)
+ { return(*(int *)0); }
+
+#undef vw_scanw
+int vw_scanw(
+ WINDOW *win,
+ const char *fmt,
va_list argp)
{ return(*(int *)0); }
#undef scanw
int scanw(
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
#undef wscanw
int wscanw(
WINDOW *win,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -2385,7 +2490,7 @@ int wscanw(
int mvscanw(
int y,
int x,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -2394,7 +2499,7 @@ int mvwscanw(
WINDOW *win,
int y,
int x,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -2583,14 +2688,14 @@ int slk_restore(void)
int slk_attr_set_sp(
SCREEN *sp,
const attr_t attr,
- short color_pair_number,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
#undef slk_attr_set
int slk_attr_set(
const attr_t attr,
- short color_pair_number,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
@@ -2660,12 +2765,23 @@ int slk_clear(void)
#undef slk_color_sp
int slk_color_sp(
SCREEN *sp,
- short color_pair_number)
+ short pair_arg)
{ return(*(int *)0); }
#undef slk_color
int slk_color(
- short color_pair_number)
+ short pair_arg)
+ { return(*(int *)0); }
+
+#undef extended_slk_color_sp
+int extended_slk_color_sp(
+ SCREEN *sp,
+ int pair_arg)
+ { return(*(int *)0); }
+
+#undef extended_slk_color
+int extended_slk_color(
+ int pair_arg)
{ return(*(int *)0); }
/* ./base/lib_slkinit.c */
@@ -2716,8 +2832,6 @@ int slk_refresh(void)
/* ./base/lib_slkset.c */
-#include <wctype.h>
-
#undef slk_set_sp
int slk_set_sp(
SCREEN *sp,
@@ -2775,6 +2889,12 @@ void _tracedump(
/* ./trace/lib_tracemse.c */
+#undef _nc_trace_mmask_t
+char *_nc_trace_mmask_t(
+ SCREEN *sp,
+ mmask_t code)
+ { return(*(char **)0); }
+
#undef _nc_tracemouse
char *_nc_tracemouse(
SCREEN *sp,
@@ -2794,8 +2914,6 @@ char *_tracemouse(
/* ./tty/lib_tstp.c */
-#include <SigAction.h>
-
#undef _nc_signal_handler
void _nc_signal_handler(
int enable)
@@ -2956,9 +3074,6 @@ char *_nc_printf_string(
/* ./tty/tty_update.c */
-#include <sys/time.h>
-#include <sys/times.h>
-
#undef doupdate_sp
int doupdate_sp(
SCREEN *sp)
@@ -3025,10 +3140,6 @@ void _nc_do_xmc_glitch(
/* ./trace/varargs.c */
-typedef enum {
- atUnknown = 0, atInteger, atFloat, atPoint, atString
-} ARGTYPE;
-
#undef _nc_varargs
char *_nc_varargs(
const char *fmt,
@@ -3058,6 +3169,11 @@ void _nc_free_and_exit(
int code)
{ /* void */ }
+#undef exit_curses
+void exit_curses(
+ int code)
+ { /* void */ }
+
/* ./widechar/charable.c */
#undef _nc_is_charable
@@ -3111,7 +3227,7 @@ int setcchar(
cchar_t *wcval,
const wchar_t *wch,
const attr_t attrs,
- short color_pair,
+ short pair_arg,
const void *opts)
{ return(*(int *)0); }
@@ -3120,7 +3236,7 @@ int getcchar(
const cchar_t *wcval,
wchar_t *wch,
attr_t *attrs,
- short *color_pair,
+ short *pair_arg,
void *opts)
{ return(*(int *)0); }
@@ -3218,9 +3334,9 @@ int winwstr(
/* ./widechar/lib_key_name.c */
#undef key_name
-char *key_name(
+const char *key_name(
wchar_t c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./widechar/lib_pecho_wchar.c */
@@ -3265,7 +3381,7 @@ int unget_wch(
int vid_puts_sp(
SCREEN *sp,
attr_t newmode,
- short pair,
+ short pair_arg,
void *opts,
NCURSES_OUTC_sp outc)
{ return(*(int *)0); }
@@ -3273,7 +3389,7 @@ int vid_puts_sp(
#undef vid_puts
int vid_puts(
attr_t newmode,
- short pair,
+ short pair_arg,
void *opts,
NCURSES_OUTC outc)
{ return(*(int *)0); }
@@ -3282,14 +3398,14 @@ int vid_puts(
int vid_attr_sp(
SCREEN *sp,
attr_t newmode,
- short pair,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
#undef vid_attr
int vid_attr(
attr_t newmode,
- short pair,
+ short pair_arg,
void *opts)
{ return(*(int *)0); }
@@ -3432,6 +3548,72 @@ int mcprint(
int len)
{ return(*(int *)0); }
+/* ./base/new_pair.c */
+
+#undef _nc_free_ordered_pairs
+void _nc_free_ordered_pairs(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef _nc_reset_color_pair
+void _nc_reset_color_pair(
+ SCREEN *sp,
+ int pair,
+ colorpair_t *next)
+ { /* void */ }
+
+#undef _nc_set_color_pair
+void _nc_set_color_pair(
+ SCREEN *sp,
+ int pair,
+ int mode)
+ { /* void */ }
+
+#undef _nc_copy_pairs
+void _nc_copy_pairs(
+ SCREEN *sp,
+ colorpair_t *target,
+ colorpair_t *source,
+ int length)
+ { /* void */ }
+
+#undef alloc_pair_sp
+int alloc_pair_sp(
+ SCREEN *sp,
+ int fg,
+ int bg)
+ { return(*(int *)0); }
+
+#undef find_pair_sp
+int find_pair_sp(
+ SCREEN *sp,
+ int fg,
+ int bg)
+ { return(*(int *)0); }
+
+#undef free_pair_sp
+int free_pair_sp(
+ SCREEN *sp,
+ int pair)
+ { return(*(int *)0); }
+
+#undef alloc_pair
+int alloc_pair(
+ int f,
+ int b)
+ { return(*(int *)0); }
+
+#undef find_pair
+int find_pair(
+ int f,
+ int b)
+ { return(*(int *)0); }
+
+#undef free_pair
+int free_pair(
+ int pair)
+ { return(*(int *)0); }
+
/* ./base/resizeterm.c */
#undef is_term_resized_sp
@@ -3562,8 +3744,8 @@ int _nc_add_to_try(
#undef _nc_align_termtype
void _nc_align_termtype(
- TERMTYPE *to,
- TERMTYPE *from)
+ TERMTYPE2 *to,
+ TERMTYPE2 *from)
{ /* void */ }
#undef _nc_copy_termtype
@@ -3572,19 +3754,29 @@ void _nc_copy_termtype(
const TERMTYPE *src)
{ /* void */ }
+#undef _nc_copy_termtype2
+void _nc_copy_termtype2(
+ TERMTYPE2 *dst,
+ const TERMTYPE2 *src)
+ { /* void */ }
+
+#undef _nc_export_termtype2
+void _nc_export_termtype2(
+ TERMTYPE *dst,
+ const TERMTYPE2 *src)
+ { /* void */ }
+
/* ./codes.c */
#undef boolcodes
-char *const boolcodes[] = {0};
+const char *const boolcodes[] = {0};
#undef numcodes
-char *const numcodes[] = {0};
+const char *const numcodes[] = {0};
#undef strcodes
-char *const strcodes[] = {0};
+const char *const strcodes[] = {0};
/* ./comp_captab.c */
-#include <hashsize.h>
-
#undef _nc_get_table
const struct name_table_entry *_nc_get_table(
NCURSES_BOOL termcap)
@@ -3666,9 +3858,22 @@ struct name_table_entry const *_nc_find_type_entry(
NCURSES_BOOL termcap)
{ return(*(struct name_table_entry const **)0); }
-/* ./tinfo/db_iterator.c */
+#undef _nc_find_user_entry
+struct user_table_entry const *_nc_find_user_entry(
+ const char *string)
+ { return(*(struct user_table_entry const **)0); }
-#include <time.h>
+/* ./comp_userdefs.c */
+
+#undef _nc_get_userdefs_table
+const struct user_table_entry *_nc_get_userdefs_table(void)
+ { return(*(const struct user_table_entry **)0); }
+
+#undef _nc_get_hash_user
+const HashData *_nc_get_hash_user(void)
+ { return(*(const HashData **)0); }
+
+/* ./tinfo/db_iterator.c */
#undef _nc_tic_dir
const char *_nc_tic_dir(
@@ -3714,7 +3919,7 @@ ENTRY *_nc_tail;
#undef _nc_free_entry
void _nc_free_entry(
ENTRY *headp,
- TERMTYPE *tterm)
+ TERMTYPE2 *tterm)
{ /* void */ }
#undef _nc_free_entries
@@ -3722,18 +3927,22 @@ void _nc_free_entries(
ENTRY *headp)
{ /* void */ }
-#undef _nc_delink_entry
-ENTRY *_nc_delink_entry(
- ENTRY *headp,
- TERMTYPE *tterm)
- { return(*(ENTRY **)0); }
-
#undef _nc_leaks_tinfo
void _nc_leaks_tinfo(void)
{ /* void */ }
+#undef exit_terminfo
+void exit_terminfo(
+ int code)
+ { /* void */ }
+
/* ./fallback.c */
+#undef _nc_fallback2
+const TERMTYPE2 *_nc_fallback2(
+ const char *name)
+ { return(*(const TERMTYPE2 **)0); }
+
#undef _nc_fallback
const TERMTYPE *_nc_fallback(
const char *name)
@@ -3746,6 +3955,11 @@ void _nc_free_termtype(
TERMTYPE *ptr)
{ /* void */ }
+#undef _nc_free_termtype2
+void _nc_free_termtype2(
+ TERMTYPE2 *ptr)
+ { /* void */ }
+
#undef _nc_user_definable
NCURSES_BOOL _nc_user_definable;
@@ -3775,15 +3989,6 @@ char *_nc_home_terminfo(void)
/* ./tinfo/init_keytry.c */
-#if 0
-
-#include <init_keytry.h>
-
-#undef _nc_tinfo_fkeys
-const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0};
-
-#endif
-
#undef _nc_init_keytry
void _nc_init_keytry(
SCREEN *sp)
@@ -3805,11 +4010,9 @@ void _nc_init_acs(void)
/* ./tinfo/lib_baudrate.c */
-#include <termcap.h>
-
struct speed {
- int s;
- int sp;
+ int given_speed;
+ int actual_speed;
};
#undef _nc_baudrate
@@ -3934,18 +4137,23 @@ int flushinp(void)
struct kn { short offset; int code; };
#undef keyname_sp
-char *keyname_sp(
+const char *keyname_sp(
SCREEN *sp,
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef keyname
-char *keyname(
+const char *keyname(
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./tinfo/lib_longname.c */
+#undef longname_sp
+char *longname_sp(
+ SCREEN *sp)
+ { return(*(char **)0); }
+
#undef longname
char *longname(void)
{ return(*(char **)0); }
@@ -4135,10 +4343,6 @@ int intrflush(
/* ./tinfo/lib_setup.c */
-#include <locale.h>
-#include <sys/ioctl.h>
-#include <langinfo.h>
-
#undef ttytype
char ttytype[256];
#undef LINES
@@ -4201,7 +4405,7 @@ void _nc_update_screensize(
#undef _nc_setup_tinfo
int _nc_setup_tinfo(
const char *const tn,
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
#undef _nc_tinfo_cmdch
@@ -4225,7 +4429,7 @@ int _nc_locale_breaks_acs(
#undef _nc_setupterm
int _nc_setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret,
int reuse)
@@ -4237,7 +4441,7 @@ SCREEN *new_prescr(void)
#undef setupterm
int setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret)
{ return(*(int *)0); }
@@ -4256,12 +4460,6 @@ int tgetent_sp(
const char *name)
{ return(*(int *)0); }
-#if 0
-
-#include <capdefaults.c>
-
-#endif
-
#undef tgetent
int tgetent(
char *bufp,
@@ -4271,35 +4469,35 @@ int tgetent(
#undef tgetflag_sp
int tgetflag_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetflag
int tgetflag(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum_sp
int tgetnum_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum
int tgetnum(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetstr_sp
char *tgetstr_sp(
SCREEN *sp,
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
#undef tgetstr
char *tgetstr(
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
@@ -4328,34 +4526,34 @@ char *tgoto(
#undef tigetflag_sp
int tigetflag_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetflag
int tigetflag(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum_sp
int tigetnum_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum
int tigetnum(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetstr_sp
char *tigetstr_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(char **)0); }
#undef tigetstr
char *tigetstr(
- char *str)
+ const char *str)
{ return(*(char **)0); }
/* ./tinfo/lib_tparm.c */
@@ -4372,7 +4570,7 @@ int _nc_tparm_analyze(
#undef tparm
char *tparm(
- char *string,
+ const char *string,
...)
{ return(*(char **)0); }
@@ -4493,6 +4691,11 @@ const char *_nc_tputs_trace = {0};
#undef _nc_outchars
long _nc_outchars;
+#undef curses_trace
+unsigned curses_trace(
+ unsigned tracelevel)
+ { return(*(unsigned *)0); }
+
#undef trace
void trace(
const unsigned int tracelevel)
@@ -4535,9 +4738,9 @@ const char *_nc_retrace_cptr(
{ return(*(const char **)0); }
#undef _nc_retrace_cvoid_ptr
-void *_nc_retrace_cvoid_ptr(
- void *code)
- { return(*(void **)0); }
+const void *_nc_retrace_cvoid_ptr(
+ const void *code)
+ { return(*(const void **)0); }
#undef _nc_retrace_void_ptr
void *_nc_retrace_void_ptr(
@@ -4554,6 +4757,13 @@ WINDOW *_nc_retrace_win(
WINDOW *code)
{ return(*(WINDOW **)0); }
+#undef _nc_fmt_funcptr
+char *_nc_fmt_funcptr(
+ char *target,
+ const char *source,
+ size_t size)
+ { return(*(char **)0); }
+
/* ./trace/lib_traceatr.c */
#undef _traceattr2
@@ -4612,11 +4822,6 @@ char *_tracecchar_t(
/* ./trace/lib_tracebits.c */
-typedef struct {
- unsigned int val;
- const char *name;
-} BITNAMES;
-
#undef _nc_trace_ttymode
char *_nc_trace_ttymode(
struct termios *tty)
@@ -4744,17 +4949,17 @@ int _nc_name_match(
/* ./names.c */
#undef boolnames
-char *const boolnames[] = {0};
+const char *const boolnames[] = {0};
#undef boolfnames
-char *const boolfnames[] = {0};
+const char *const boolfnames[] = {0};
#undef numnames
-char *const numnames[] = {0};
+const char *const numnames[] = {0};
#undef numfnames
-char *const numfnames[] = {0};
+const char *const numfnames[] = {0};
#undef strnames
-char *const strnames[] = {0};
+const char *const strnames[] = {0};
#undef strfnames
-char *const strfnames[] = {0};
+const char *const strfnames[] = {0};
/* ./tinfo/obsolete.c */
@@ -4773,16 +4978,14 @@ void _nc_set_buffer(
/* ./tinfo/read_entry.c */
-#include <hashed_db.h>
-
#undef _nc_init_termtype
void _nc_init_termtype(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
#undef _nc_read_termtype
int _nc_read_termtype(
- TERMTYPE *ptr,
+ TERMTYPE2 *ptr,
char *buffer,
int limit)
{ return(*(int *)0); }
@@ -4790,7 +4993,14 @@ int _nc_read_termtype(
#undef _nc_read_file_entry
int _nc_read_file_entry(
const char *const filename,
- TERMTYPE *ptr)
+ TERMTYPE2 *ptr)
+ { return(*(int *)0); }
+
+#undef _nc_read_entry2
+int _nc_read_entry2(
+ const char *const name,
+ char *const filename,
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
#undef _nc_read_entry
@@ -4802,11 +5012,11 @@ int _nc_read_entry(
/* ./tinfo/read_termcap.c */
-#include <sys/types.h>
-
-#undef _nc_read_termcap
-void _nc_read_termcap(void)
- { /* void */ }
+#undef _nc_read_termcap_entry
+int _nc_read_termcap_entry(
+ const char *const tn,
+ TERMTYPE2 *const tp)
+ { return(*(int *)0); }
/* ./tinfo/strings.c */
@@ -4888,21 +5098,21 @@ int _nc_remove_string(
#undef _nc_trim_sgr0
char *_nc_trim_sgr0(
- TERMTYPE *tp)
+ TERMTYPE2 *tp)
{ return(*(char **)0); }
/* ./unctrl.c */
#undef unctrl_sp
-char *unctrl_sp(
+const char *unctrl_sp(
SCREEN *sp,
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef unctrl
-char *unctrl(
+const char *unctrl(
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./trace/visbuf.c */
@@ -4962,7 +5172,7 @@ const char *_nc_viscbuf(
#undef _nc_init_entry
void _nc_init_entry(
- TERMTYPE *const tp)
+ ENTRY *const tp)
{ /* void */ }
#undef _nc_copy_entry
@@ -4983,8 +5193,8 @@ void _nc_wrap_entry(
#undef _nc_merge_entry
void _nc_merge_entry(
- TERMTYPE *const to,
- TERMTYPE *const from)
+ ENTRY *const target,
+ ENTRY *const source)
{ /* void */ }
/* ./tinfo/captoinfo.c */
@@ -5016,11 +5226,8 @@ char *_nc_tic_expand(
#undef _nc_check_termtype2
void (*_nc_check_termtype2)(
- TERMTYPE *p1,
+ TERMTYPE2 *p1,
NCURSES_BOOL p2);
-#undef _nc_check_termtype
-void (*_nc_check_termtype)(
- TERMTYPE *p1);
#undef _nc_entry_match
NCURSES_BOOL _nc_entry_match(
@@ -5044,11 +5251,6 @@ int _nc_resolve_uses2(
NCURSES_BOOL literal)
{ return(*(int *)0); }
-#undef _nc_resolve_uses
-int _nc_resolve_uses(
- NCURSES_BOOL fullresolve)
- { return(*(int *)0); }
-
/* ./tinfo/comp_scan.c */
#undef _nc_syntax
@@ -5099,7 +5301,7 @@ void _nc_panic_mode(
#undef _nc_parse_entry
int _nc_parse_entry(
- struct entry *entryp,
+ ENTRY *entryp,
int literal,
NCURSES_BOOL silent)
{ return(*(int *)0); }
@@ -5110,23 +5312,26 @@ int _nc_capcmp(
const char *t)
{ return(*(int *)0); }
-typedef struct {
- const char *from;
- const char *to;
-} assoc;
-
/* ./tinfo/write_entry.c */
#undef _nc_set_writedir
void _nc_set_writedir(
- char *dir)
+ const char *dir)
{ /* void */ }
#undef _nc_write_entry
void _nc_write_entry(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
+#undef _nc_write_object
+int _nc_write_object(
+ TERMTYPE2 *tp,
+ char *buffer,
+ unsigned *offset,
+ unsigned limit)
+ { return(*(int *)0); }
+
#undef _nc_tic_written
int _nc_tic_written(void)
{ return(*(int *)0); }
diff --git a/ncurses/llib-ltic b/ncurses/llib-ltic
index 981bb196706a..15b010c508cb 100644
--- a/ncurses/llib-ltic
+++ b/ncurses/llib-ltic
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2012-2016,2017 Free 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,18 +27,17 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey 2012 *
+ * Author: Thomas E. Dickey 2012-on *
****************************************************************************/
/* LINTLIBRARY */
/* ./tinfo/alloc_entry.c */
#include <curses.priv.h>
-#include <tic.h>
#undef _nc_init_entry
void _nc_init_entry(
- TERMTYPE *const tp)
+ ENTRY *const tp)
{ /* void */ }
#undef _nc_copy_entry
@@ -59,14 +58,12 @@ void _nc_wrap_entry(
#undef _nc_merge_entry
void _nc_merge_entry(
- TERMTYPE *const to,
- TERMTYPE *const from)
+ ENTRY *const target,
+ ENTRY *const source)
{ /* void */ }
/* ./tinfo/captoinfo.c */
-#include <ctype.h>
-
#undef _nc_captoinfo
char *_nc_captoinfo(
const char *cap,
@@ -94,11 +91,8 @@ char *_nc_tic_expand(
#undef _nc_check_termtype2
void (*_nc_check_termtype2)(
- TERMTYPE *p1,
+ TERMTYPE2 *p1,
NCURSES_BOOL p2);
-#undef _nc_check_termtype
-void (*_nc_check_termtype)(
- TERMTYPE *p1);
#undef _nc_entry_match
NCURSES_BOOL _nc_entry_match(
@@ -122,11 +116,6 @@ int _nc_resolve_uses2(
NCURSES_BOOL literal)
{ return(*(int *)0); }
-#undef _nc_resolve_uses
-int _nc_resolve_uses(
- NCURSES_BOOL fullresolve)
- { return(*(int *)0); }
-
/* ./tinfo/comp_scan.c */
#undef _nc_syntax
@@ -177,7 +166,7 @@ void _nc_panic_mode(
#undef _nc_parse_entry
int _nc_parse_entry(
- struct entry *entryp,
+ ENTRY *entryp,
int literal,
NCURSES_BOOL silent)
{ return(*(int *)0); }
@@ -188,25 +177,26 @@ int _nc_capcmp(
const char *t)
{ return(*(int *)0); }
-typedef struct {
- const char *from;
- const char *to;
-} assoc;
-
/* ./tinfo/write_entry.c */
-#include <hashed_db.h>
-
#undef _nc_set_writedir
void _nc_set_writedir(
- char *dir)
+ const char *dir)
{ /* void */ }
#undef _nc_write_entry
void _nc_write_entry(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
+#undef _nc_write_object
+int _nc_write_object(
+ TERMTYPE2 *tp,
+ char *buffer,
+ unsigned *offset,
+ unsigned limit)
+ { return(*(int *)0); }
+
#undef _nc_tic_written
int _nc_tic_written(void)
{ return(*(int *)0); }
diff --git a/ncurses/llib-ltict b/ncurses/llib-ltict
index 8371c1824876..db275ea8b9f7 100644
--- a/ncurses/llib-ltict
+++ b/ncurses/llib-ltict
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2013-2016,2017 Free 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,18 +27,17 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey 2013 *
+ * Author: Thomas E. Dickey 2013-on *
****************************************************************************/
/* LINTLIBRARY */
/* ./tinfo/alloc_entry.c */
#include <curses.priv.h>
-#include <tic.h>
#undef _nc_init_entry
void _nc_init_entry(
- TERMTYPE *const tp)
+ ENTRY *const tp)
{ /* void */ }
#undef _nc_copy_entry
@@ -59,14 +58,12 @@ void _nc_wrap_entry(
#undef _nc_merge_entry
void _nc_merge_entry(
- TERMTYPE *const to,
- TERMTYPE *const from)
+ ENTRY *const target,
+ ENTRY *const source)
{ /* void */ }
/* ./tinfo/captoinfo.c */
-#include <ctype.h>
-
#undef _nc_captoinfo
char *_nc_captoinfo(
const char *cap,
@@ -94,11 +91,8 @@ char *_nc_tic_expand(
#undef _nc_check_termtype2
void (*_nc_check_termtype2)(
- TERMTYPE *p1,
+ TERMTYPE2 *p1,
NCURSES_BOOL p2);
-#undef _nc_check_termtype
-void (*_nc_check_termtype)(
- TERMTYPE *p1);
#undef _nc_entry_match
NCURSES_BOOL _nc_entry_match(
@@ -122,11 +116,6 @@ int _nc_resolve_uses2(
NCURSES_BOOL literal)
{ return(*(int *)0); }
-#undef _nc_resolve_uses
-int _nc_resolve_uses(
- NCURSES_BOOL fullresolve)
- { return(*(int *)0); }
-
/* ./tinfo/comp_scan.c */
#undef _nc_syntax
@@ -177,7 +166,7 @@ void _nc_panic_mode(
#undef _nc_parse_entry
int _nc_parse_entry(
- struct entry *entryp,
+ ENTRY *entryp,
int literal,
NCURSES_BOOL silent)
{ return(*(int *)0); }
@@ -188,25 +177,26 @@ int _nc_capcmp(
const char *t)
{ return(*(int *)0); }
-typedef struct {
- const char *from;
- const char *to;
-} assoc;
-
/* ./tinfo/write_entry.c */
-#include <hashed_db.h>
-
#undef _nc_set_writedir
void _nc_set_writedir(
- char *dir)
+ const char *dir)
{ /* void */ }
#undef _nc_write_entry
void _nc_write_entry(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
+#undef _nc_write_object
+int _nc_write_object(
+ TERMTYPE2 *tp,
+ char *buffer,
+ unsigned *offset,
+ unsigned limit)
+ { return(*(int *)0); }
+
#undef _nc_tic_written
int _nc_tic_written(void)
{ return(*(int *)0); }
diff --git a/ncurses/llib-ltictw b/ncurses/llib-ltictw
index 981bb196706a..15b010c508cb 100644
--- a/ncurses/llib-ltictw
+++ b/ncurses/llib-ltictw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2012-2016,2017 Free 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,18 +27,17 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey 2012 *
+ * Author: Thomas E. Dickey 2012-on *
****************************************************************************/
/* LINTLIBRARY */
/* ./tinfo/alloc_entry.c */
#include <curses.priv.h>
-#include <tic.h>
#undef _nc_init_entry
void _nc_init_entry(
- TERMTYPE *const tp)
+ ENTRY *const tp)
{ /* void */ }
#undef _nc_copy_entry
@@ -59,14 +58,12 @@ void _nc_wrap_entry(
#undef _nc_merge_entry
void _nc_merge_entry(
- TERMTYPE *const to,
- TERMTYPE *const from)
+ ENTRY *const target,
+ ENTRY *const source)
{ /* void */ }
/* ./tinfo/captoinfo.c */
-#include <ctype.h>
-
#undef _nc_captoinfo
char *_nc_captoinfo(
const char *cap,
@@ -94,11 +91,8 @@ char *_nc_tic_expand(
#undef _nc_check_termtype2
void (*_nc_check_termtype2)(
- TERMTYPE *p1,
+ TERMTYPE2 *p1,
NCURSES_BOOL p2);
-#undef _nc_check_termtype
-void (*_nc_check_termtype)(
- TERMTYPE *p1);
#undef _nc_entry_match
NCURSES_BOOL _nc_entry_match(
@@ -122,11 +116,6 @@ int _nc_resolve_uses2(
NCURSES_BOOL literal)
{ return(*(int *)0); }
-#undef _nc_resolve_uses
-int _nc_resolve_uses(
- NCURSES_BOOL fullresolve)
- { return(*(int *)0); }
-
/* ./tinfo/comp_scan.c */
#undef _nc_syntax
@@ -177,7 +166,7 @@ void _nc_panic_mode(
#undef _nc_parse_entry
int _nc_parse_entry(
- struct entry *entryp,
+ ENTRY *entryp,
int literal,
NCURSES_BOOL silent)
{ return(*(int *)0); }
@@ -188,25 +177,26 @@ int _nc_capcmp(
const char *t)
{ return(*(int *)0); }
-typedef struct {
- const char *from;
- const char *to;
-} assoc;
-
/* ./tinfo/write_entry.c */
-#include <hashed_db.h>
-
#undef _nc_set_writedir
void _nc_set_writedir(
- char *dir)
+ const char *dir)
{ /* void */ }
#undef _nc_write_entry
void _nc_write_entry(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
+#undef _nc_write_object
+int _nc_write_object(
+ TERMTYPE2 *tp,
+ char *buffer,
+ unsigned *offset,
+ unsigned limit)
+ { return(*(int *)0); }
+
#undef _nc_tic_written
int _nc_tic_written(void)
{ return(*(int *)0); }
diff --git a/ncurses/llib-lticw b/ncurses/llib-lticw
index 981bb196706a..15b010c508cb 100644
--- a/ncurses/llib-lticw
+++ b/ncurses/llib-lticw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2012-2016,2017 Free 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,18 +27,17 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey 2012 *
+ * Author: Thomas E. Dickey 2012-on *
****************************************************************************/
/* LINTLIBRARY */
/* ./tinfo/alloc_entry.c */
#include <curses.priv.h>
-#include <tic.h>
#undef _nc_init_entry
void _nc_init_entry(
- TERMTYPE *const tp)
+ ENTRY *const tp)
{ /* void */ }
#undef _nc_copy_entry
@@ -59,14 +58,12 @@ void _nc_wrap_entry(
#undef _nc_merge_entry
void _nc_merge_entry(
- TERMTYPE *const to,
- TERMTYPE *const from)
+ ENTRY *const target,
+ ENTRY *const source)
{ /* void */ }
/* ./tinfo/captoinfo.c */
-#include <ctype.h>
-
#undef _nc_captoinfo
char *_nc_captoinfo(
const char *cap,
@@ -94,11 +91,8 @@ char *_nc_tic_expand(
#undef _nc_check_termtype2
void (*_nc_check_termtype2)(
- TERMTYPE *p1,
+ TERMTYPE2 *p1,
NCURSES_BOOL p2);
-#undef _nc_check_termtype
-void (*_nc_check_termtype)(
- TERMTYPE *p1);
#undef _nc_entry_match
NCURSES_BOOL _nc_entry_match(
@@ -122,11 +116,6 @@ int _nc_resolve_uses2(
NCURSES_BOOL literal)
{ return(*(int *)0); }
-#undef _nc_resolve_uses
-int _nc_resolve_uses(
- NCURSES_BOOL fullresolve)
- { return(*(int *)0); }
-
/* ./tinfo/comp_scan.c */
#undef _nc_syntax
@@ -177,7 +166,7 @@ void _nc_panic_mode(
#undef _nc_parse_entry
int _nc_parse_entry(
- struct entry *entryp,
+ ENTRY *entryp,
int literal,
NCURSES_BOOL silent)
{ return(*(int *)0); }
@@ -188,25 +177,26 @@ int _nc_capcmp(
const char *t)
{ return(*(int *)0); }
-typedef struct {
- const char *from;
- const char *to;
-} assoc;
-
/* ./tinfo/write_entry.c */
-#include <hashed_db.h>
-
#undef _nc_set_writedir
void _nc_set_writedir(
- char *dir)
+ const char *dir)
{ /* void */ }
#undef _nc_write_entry
void _nc_write_entry(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
+#undef _nc_write_object
+int _nc_write_object(
+ TERMTYPE2 *tp,
+ char *buffer,
+ unsigned *offset,
+ unsigned limit)
+ { return(*(int *)0); }
+
#undef _nc_tic_written
int _nc_tic_written(void)
{ return(*(int *)0); }
diff --git a/ncurses/llib-ltinfo b/ncurses/llib-ltinfo
index 79ac2293e370..b438d5f7f2b5 100644
--- a/ncurses/llib-ltinfo
+++ b/ncurses/llib-ltinfo
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2012-2017,2019 Free 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,15 +27,13 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey 2012 *
+ * Author: Thomas E. Dickey 2012-on *
****************************************************************************/
/* LINTLIBRARY */
/* ./tinfo/access.c */
#include <curses.priv.h>
-#include <ctype.h>
-#include <tic.h>
#undef _nc_rootname
char *_nc_rootname(
@@ -90,8 +88,8 @@ int _nc_add_to_try(
#undef _nc_align_termtype
void _nc_align_termtype(
- TERMTYPE *to,
- TERMTYPE *from)
+ TERMTYPE2 *to,
+ TERMTYPE2 *from)
{ /* void */ }
#undef _nc_copy_termtype
@@ -103,16 +101,14 @@ void _nc_copy_termtype(
/* ./codes.c */
#undef boolcodes
-char *const boolcodes[] = {0};
+const char *const boolcodes[] = {0};
#undef numcodes
-char *const numcodes[] = {0};
+const char *const numcodes[] = {0};
#undef strcodes
-char *const strcodes[] = {0};
+const char *const strcodes[] = {0};
/* ./comp_captab.c */
-#include <hashsize.h>
-
#undef _nc_get_table
const struct name_table_entry *_nc_get_table(
NCURSES_BOOL termcap)
@@ -194,9 +190,22 @@ struct name_table_entry const *_nc_find_type_entry(
NCURSES_BOOL termcap)
{ return(*(struct name_table_entry const **)0); }
-/* ./tinfo/db_iterator.c */
+#undef _nc_find_user_entry
+struct user_table_entry const *_nc_find_user_entry(
+ const char *string)
+ { return(*(struct user_table_entry const **)0); }
+
+/* ./comp_userdefs.c */
+
+#undef _nc_get_userdefs_table
+const struct user_table_entry *_nc_get_userdefs_table(void)
+ { return(*(const struct user_table_entry **)0); }
+
+#undef _nc_get_hash_user
+const HashData *_nc_get_hash_user(void)
+ { return(*(const HashData **)0); }
-#include <time.h>
+/* ./tinfo/db_iterator.c */
#undef _nc_tic_dir
const char *_nc_tic_dir(
@@ -242,7 +251,7 @@ ENTRY *_nc_tail;
#undef _nc_free_entry
void _nc_free_entry(
ENTRY *headp,
- TERMTYPE *tterm)
+ TERMTYPE2 *tterm)
{ /* void */ }
#undef _nc_free_entries
@@ -250,12 +259,6 @@ void _nc_free_entries(
ENTRY *headp)
{ /* void */ }
-#undef _nc_delink_entry
-ENTRY *_nc_delink_entry(
- ENTRY *headp,
- TERMTYPE *tterm)
- { return(*(ENTRY **)0); }
-
#undef _nc_leaks_tinfo
void _nc_leaks_tinfo(void)
{ /* void */ }
@@ -263,9 +266,9 @@ void _nc_leaks_tinfo(void)
/* ./fallback.c */
#undef _nc_fallback
-const TERMTYPE *_nc_fallback(
+const TERMTYPE2 *_nc_fallback(
const char *name)
- { return(*(const TERMTYPE **)0); }
+ { return(*(const TERMTYPE2 **)0); }
/* ./tinfo/free_ttype.c */
@@ -303,15 +306,6 @@ char *_nc_home_terminfo(void)
/* ./tinfo/init_keytry.c */
-#if 0
-
-#include <init_keytry.h>
-
-#undef _nc_tinfo_fkeys
-const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0};
-
-#endif
-
#undef _nc_init_keytry
void _nc_init_keytry(
SCREEN *sp)
@@ -333,11 +327,9 @@ void _nc_init_acs(void)
/* ./tinfo/lib_baudrate.c */
-#include <termcap.h>
-
struct speed {
- int s;
- int sp;
+ int given_speed;
+ int actual_speed;
};
#undef _nc_baudrate
@@ -462,26 +454,29 @@ int flushinp(void)
struct kn { short offset; int code; };
#undef keyname_sp
-char *keyname_sp(
+const char *keyname_sp(
SCREEN *sp,
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef keyname
-char *keyname(
+const char *keyname(
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./tinfo/lib_longname.c */
+#undef longname_sp
+char *longname_sp(
+ SCREEN *sp)
+ { return(*(char **)0); }
+
#undef longname
char *longname(void)
{ return(*(char **)0); }
/* ./tinfo/lib_napms.c */
-#include <sys/time.h>
-
#undef napms_sp
int napms_sp(
SCREEN *sp,
@@ -665,10 +660,6 @@ int intrflush(
/* ./tinfo/lib_setup.c */
-#include <locale.h>
-#include <sys/ioctl.h>
-#include <langinfo.h>
-
#undef ttytype
char ttytype[256];
#undef LINES
@@ -731,7 +722,7 @@ void _nc_update_screensize(
#undef _nc_setup_tinfo
int _nc_setup_tinfo(
const char *const tn,
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
#undef _nc_tinfo_cmdch
@@ -755,7 +746,7 @@ int _nc_locale_breaks_acs(
#undef _nc_setupterm
int _nc_setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret,
int reuse)
@@ -767,7 +758,7 @@ SCREEN *new_prescr(void)
#undef setupterm
int setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret)
{ return(*(int *)0); }
@@ -786,12 +777,6 @@ int tgetent_sp(
const char *name)
{ return(*(int *)0); }
-#if 0
-
-#include <capdefaults.c>
-
-#endif
-
#undef tgetent
int tgetent(
char *bufp,
@@ -801,35 +786,35 @@ int tgetent(
#undef tgetflag_sp
int tgetflag_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetflag
int tgetflag(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum_sp
int tgetnum_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum
int tgetnum(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetstr_sp
char *tgetstr_sp(
SCREEN *sp,
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
#undef tgetstr
char *tgetstr(
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
@@ -858,34 +843,34 @@ char *tgoto(
#undef tigetflag_sp
int tigetflag_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetflag
int tigetflag(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum_sp
int tigetnum_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum
int tigetnum(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetstr_sp
char *tigetstr_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(char **)0); }
#undef tigetstr
char *tigetstr(
- char *str)
+ const char *str)
{ return(*(char **)0); }
/* ./tinfo/lib_tparm.c */
@@ -902,7 +887,7 @@ int _nc_tparm_analyze(
#undef tparm
char *tparm(
- char *string,
+ const char *string,
...)
{ return(*(char **)0); }
@@ -1065,9 +1050,9 @@ const char *_nc_retrace_cptr(
{ return(*(const char **)0); }
#undef _nc_retrace_cvoid_ptr
-void *_nc_retrace_cvoid_ptr(
- void *code)
- { return(*(void **)0); }
+const void *_nc_retrace_cvoid_ptr(
+ const void *code)
+ { return(*(const void **)0); }
#undef _nc_retrace_void_ptr
void *_nc_retrace_void_ptr(
@@ -1084,6 +1069,13 @@ WINDOW *_nc_retrace_win(
WINDOW *code)
{ return(*(WINDOW **)0); }
+#undef _nc_fmt_funcptr
+char *_nc_fmt_funcptr(
+ char *target,
+ const char *source,
+ size_t size)
+ { return(*(char **)0); }
+
/* ./trace/lib_traceatr.c */
#undef _traceattr2
@@ -1131,11 +1123,6 @@ chtype _nc_retrace_chtype(
/* ./trace/lib_tracebits.c */
-typedef struct {
- unsigned int val;
- const char *name;
-} BITNAMES;
-
#undef _nc_trace_ttymode
char *_nc_trace_ttymode(
struct termios *tty)
@@ -1263,17 +1250,17 @@ int _nc_name_match(
/* ./names.c */
#undef boolnames
-char *const boolnames[] = {0};
+const char *const boolnames[] = {0};
#undef boolfnames
-char *const boolfnames[] = {0};
+const char *const boolfnames[] = {0};
#undef numnames
-char *const numnames[] = {0};
+const char *const numnames[] = {0};
#undef numfnames
-char *const numfnames[] = {0};
+const char *const numfnames[] = {0};
#undef strnames
-char *const strnames[] = {0};
+const char *const strnames[] = {0};
#undef strfnames
-char *const strfnames[] = {0};
+const char *const strfnames[] = {0};
/* ./tinfo/obsolete.c */
@@ -1292,16 +1279,14 @@ void _nc_set_buffer(
/* ./tinfo/read_entry.c */
-#include <hashed_db.h>
-
#undef _nc_init_termtype
void _nc_init_termtype(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
#undef _nc_read_termtype
int _nc_read_termtype(
- TERMTYPE *ptr,
+ TERMTYPE2 *ptr,
char *buffer,
int limit)
{ return(*(int *)0); }
@@ -1309,20 +1294,18 @@ int _nc_read_termtype(
#undef _nc_read_file_entry
int _nc_read_file_entry(
const char *const filename,
- TERMTYPE *ptr)
+ TERMTYPE2 *ptr)
{ return(*(int *)0); }
#undef _nc_read_entry
int _nc_read_entry(
const char *const name,
char *const filename,
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
/* ./tinfo/read_termcap.c */
-#include <sys/types.h>
-
#undef _nc_read_termcap
void _nc_read_termcap(void)
{ /* void */ }
@@ -1407,21 +1390,21 @@ int _nc_remove_string(
#undef _nc_trim_sgr0
char *_nc_trim_sgr0(
- TERMTYPE *tp)
+ TERMTYPE2 *tp)
{ return(*(char **)0); }
/* ./unctrl.c */
#undef unctrl_sp
-char *unctrl_sp(
+const char *unctrl_sp(
SCREEN *sp,
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef unctrl
-char *unctrl(
+const char *unctrl(
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./trace/visbuf.c */
diff --git a/ncurses/llib-ltinfot b/ncurses/llib-ltinfot
index 4f66f6a057d2..e33aefbb2a1c 100644
--- a/ncurses/llib-ltinfot
+++ b/ncurses/llib-ltinfot
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2013-2017,2019 Free 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,15 +27,13 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey 2013 *
+ * Author: Thomas E. Dickey 2013-on *
****************************************************************************/
/* LINTLIBRARY */
/* ./tinfo/access.c */
#include <curses.priv.h>
-#include <ctype.h>
-#include <tic.h>
#undef _nc_rootname
char *_nc_rootname(
@@ -90,8 +88,8 @@ int _nc_add_to_try(
#undef _nc_align_termtype
void _nc_align_termtype(
- TERMTYPE *to,
- TERMTYPE *from)
+ TERMTYPE2 *to,
+ TERMTYPE2 *from)
{ /* void */ }
#undef _nc_copy_termtype
@@ -103,21 +101,19 @@ void _nc_copy_termtype(
/* ./codes.c */
#undef _nc_boolcodes
-char *const *_nc_boolcodes(void)
- { return(*(char **)0); }
+const char *const *_nc_boolcodes(void)
+ { return(*(const char **)0); }
#undef _nc_numcodes
-char *const *_nc_numcodes(void)
- { return(*(char **)0); }
+const char *const *_nc_numcodes(void)
+ { return(*(const char **)0); }
#undef _nc_strcodes
-char *const *_nc_strcodes(void)
- { return(*(char **)0); }
+const char *const *_nc_strcodes(void)
+ { return(*(const char **)0); }
/* ./comp_captab.c */
-#include <hashsize.h>
-
#undef _nc_get_table
const struct name_table_entry *_nc_get_table(
NCURSES_BOOL termcap)
@@ -199,9 +195,22 @@ struct name_table_entry const *_nc_find_type_entry(
NCURSES_BOOL termcap)
{ return(*(struct name_table_entry const **)0); }
-/* ./tinfo/db_iterator.c */
+#undef _nc_find_user_entry
+struct user_table_entry const *_nc_find_user_entry(
+ const char *string)
+ { return(*(struct user_table_entry const **)0); }
-#include <time.h>
+/* ./comp_userdefs.c */
+
+#undef _nc_get_userdefs_table
+const struct user_table_entry *_nc_get_userdefs_table(void)
+ { return(*(const struct user_table_entry **)0); }
+
+#undef _nc_get_hash_user
+const HashData *_nc_get_hash_user(void)
+ { return(*(const HashData **)0); }
+
+/* ./tinfo/db_iterator.c */
#undef _nc_tic_dir
const char *_nc_tic_dir(
@@ -247,7 +256,7 @@ ENTRY *_nc_tail;
#undef _nc_free_entry
void _nc_free_entry(
ENTRY *headp,
- TERMTYPE *tterm)
+ TERMTYPE2 *tterm)
{ /* void */ }
#undef _nc_free_entries
@@ -255,12 +264,6 @@ void _nc_free_entries(
ENTRY *headp)
{ /* void */ }
-#undef _nc_delink_entry
-ENTRY *_nc_delink_entry(
- ENTRY *headp,
- TERMTYPE *tterm)
- { return(*(ENTRY **)0); }
-
#undef _nc_leaks_tinfo
void _nc_leaks_tinfo(void)
{ /* void */ }
@@ -268,9 +271,9 @@ void _nc_leaks_tinfo(void)
/* ./fallback.c */
#undef _nc_fallback
-const TERMTYPE *_nc_fallback(
+const TERMTYPE2 *_nc_fallback(
const char *name)
- { return(*(const TERMTYPE **)0); }
+ { return(*(const TERMTYPE2 **)0); }
/* ./tinfo/free_ttype.c */
@@ -308,15 +311,6 @@ char *_nc_home_terminfo(void)
/* ./tinfo/init_keytry.c */
-#if 0
-
-#include <init_keytry.h>
-
-#undef _nc_tinfo_fkeys
-const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0};
-
-#endif
-
#undef _nc_init_keytry
void _nc_init_keytry(
SCREEN *sp)
@@ -339,11 +333,9 @@ void _nc_init_acs(void)
/* ./tinfo/lib_baudrate.c */
-#include <termcap.h>
-
struct speed {
- int s;
- int sp;
+ int given_speed;
+ int actual_speed;
};
#undef _nc_baudrate
@@ -508,15 +500,15 @@ int flushinp(void)
struct kn { short offset; int code; };
#undef keyname_sp
-char *keyname_sp(
+const char *keyname_sp(
SCREEN *sp,
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef keyname
-char *keyname(
+const char *keyname(
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./tinfo/lib_longname.c */
@@ -714,10 +706,6 @@ int intrflush(
/* ./tinfo/lib_setup.c */
-#include <locale.h>
-#include <sys/ioctl.h>
-#include <langinfo.h>
-
#undef _nc_ttytype
char *_nc_ttytype(void)
{ return(*(char **)0); }
@@ -802,7 +790,7 @@ void _nc_update_screensize(
#undef _nc_setup_tinfo
int _nc_setup_tinfo(
const char *const tn,
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
#undef _nc_tinfo_cmdch
@@ -826,19 +814,27 @@ int _nc_locale_breaks_acs(
#undef _nc_setupterm
int _nc_setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret,
int reuse)
{ return(*(int *)0); }
+#undef _nc_find_prescr
+SCREEN *_nc_find_prescr(void)
+ { return(*(SCREEN **)0); }
+
+#undef _nc_forget_prescr
+void _nc_forget_prescr(void)
+ { /* void */ }
+
#undef new_prescr
SCREEN *new_prescr(void)
{ return(*(SCREEN **)0); }
#undef setupterm
int setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret)
{ return(*(int *)0); }
@@ -857,12 +853,6 @@ int tgetent_sp(
const char *name)
{ return(*(int *)0); }
-#if 0
-
-#include <capdefaults.c>
-
-#endif
-
#undef tgetent
int tgetent(
char *bufp,
@@ -872,35 +862,35 @@ int tgetent(
#undef tgetflag_sp
int tgetflag_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetflag
int tgetflag(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum_sp
int tgetnum_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum
int tgetnum(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetstr_sp
char *tgetstr_sp(
SCREEN *sp,
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
#undef tgetstr
char *tgetstr(
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
@@ -929,34 +919,34 @@ char *tgoto(
#undef tigetflag_sp
int tigetflag_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetflag
int tigetflag(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum_sp
int tigetnum_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum
int tigetnum(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetstr_sp
char *tigetstr_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(char **)0); }
#undef tigetstr
char *tigetstr(
- char *str)
+ const char *str)
{ return(*(char **)0); }
/* ./tinfo/lib_tparm.c */
@@ -973,7 +963,7 @@ int _nc_tparm_analyze(
#undef tparm
char *tparm(
- char *string,
+ const char *string,
...)
{ return(*(char **)0); }
@@ -1150,9 +1140,9 @@ const char *_nc_retrace_cptr(
{ return(*(const char **)0); }
#undef _nc_retrace_cvoid_ptr
-void *_nc_retrace_cvoid_ptr(
- void *code)
- { return(*(void **)0); }
+const void *_nc_retrace_cvoid_ptr(
+ const void *code)
+ { return(*(const void **)0); }
#undef _nc_retrace_void_ptr
void *_nc_retrace_void_ptr(
@@ -1169,6 +1159,13 @@ WINDOW *_nc_retrace_win(
WINDOW *code)
{ return(*(WINDOW **)0); }
+#undef _nc_fmt_funcptr
+char *_nc_fmt_funcptr(
+ char *target,
+ const char *source,
+ size_t size)
+ { return(*(char **)0); }
+
#undef _nc_use_tracef
int _nc_use_tracef(
unsigned mask)
@@ -1227,11 +1224,6 @@ chtype _nc_retrace_chtype(
/* ./trace/lib_tracebits.c */
-typedef struct {
- unsigned int val;
- const char *name;
-} BITNAMES;
-
#undef _nc_trace_ttymode
char *_nc_trace_ttymode(
struct termios *tty)
@@ -1334,8 +1326,6 @@ int resetty(void)
/* ./tty/lib_twait.c */
-#include <sys/time.h>
-
#undef _nc_timed_wait
int _nc_timed_wait(
SCREEN *sp,
@@ -1361,28 +1351,28 @@ int _nc_name_match(
/* ./names.c */
#undef _nc_boolnames
-char *const *_nc_boolnames(void)
- { return(*(char **)0); }
+const char *const *_nc_boolnames(void)
+ { return(*(const char **)0); }
#undef _nc_boolfnames
-char *const *_nc_boolfnames(void)
- { return(*(char **)0); }
+const char *const *_nc_boolfnames(void)
+ { return(*(const char **)0); }
#undef _nc_numnames
-char *const *_nc_numnames(void)
- { return(*(char **)0); }
+const char *const *_nc_numnames(void)
+ { return(*(const char **)0); }
#undef _nc_numfnames
-char *const *_nc_numfnames(void)
- { return(*(char **)0); }
+const char *const *_nc_numfnames(void)
+ { return(*(const char **)0); }
#undef _nc_strnames
-char *const *_nc_strnames(void)
- { return(*(char **)0); }
+const char *const *_nc_strnames(void)
+ { return(*(const char **)0); }
#undef _nc_strfnames
-char *const *_nc_strfnames(void)
- { return(*(char **)0); }
+const char *const *_nc_strfnames(void)
+ { return(*(const char **)0); }
/* ./tinfo/obsolete.c */
@@ -1401,16 +1391,14 @@ void _nc_set_buffer(
/* ./tinfo/read_entry.c */
-#include <hashed_db.h>
-
#undef _nc_init_termtype
void _nc_init_termtype(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
#undef _nc_read_termtype
int _nc_read_termtype(
- TERMTYPE *ptr,
+ TERMTYPE2 *ptr,
char *buffer,
int limit)
{ return(*(int *)0); }
@@ -1418,20 +1406,18 @@ int _nc_read_termtype(
#undef _nc_read_file_entry
int _nc_read_file_entry(
const char *const filename,
- TERMTYPE *ptr)
+ TERMTYPE2 *ptr)
{ return(*(int *)0); }
#undef _nc_read_entry
int _nc_read_entry(
const char *const name,
char *const filename,
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
/* ./tinfo/read_termcap.c */
-#include <sys/types.h>
-
#undef _nc_read_termcap
void _nc_read_termcap(void)
{ /* void */ }
@@ -1516,21 +1502,21 @@ int _nc_remove_string(
#undef _nc_trim_sgr0
char *_nc_trim_sgr0(
- TERMTYPE *tp)
+ TERMTYPE2 *tp)
{ return(*(char **)0); }
/* ./unctrl.c */
#undef unctrl_sp
-char *unctrl_sp(
+const char *unctrl_sp(
SCREEN *sp,
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef unctrl
-char *unctrl(
+const char *unctrl(
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./trace/visbuf.c */
diff --git a/ncurses/llib-ltinfotw b/ncurses/llib-ltinfotw
index ec9b63d443ff..10a8fddb2e8a 100644
--- a/ncurses/llib-ltinfotw
+++ b/ncurses/llib-ltinfotw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2012-2018,2019 Free 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,15 +27,13 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey 2012 *
+ * Author: Thomas E. Dickey 2012-on *
****************************************************************************/
/* LINTLIBRARY */
/* ./tinfo/access.c */
#include <curses.priv.h>
-#include <ctype.h>
-#include <tic.h>
#undef _nc_rootname
char *_nc_rootname(
@@ -90,8 +88,8 @@ int _nc_add_to_try(
#undef _nc_align_termtype
void _nc_align_termtype(
- TERMTYPE *to,
- TERMTYPE *from)
+ TERMTYPE2 *to,
+ TERMTYPE2 *from)
{ /* void */ }
#undef _nc_copy_termtype
@@ -100,24 +98,34 @@ void _nc_copy_termtype(
const TERMTYPE *src)
{ /* void */ }
+#undef _nc_copy_termtype2
+void _nc_copy_termtype2(
+ TERMTYPE2 *dst,
+ const TERMTYPE2 *src)
+ { /* void */ }
+
+#undef _nc_export_termtype2
+void _nc_export_termtype2(
+ TERMTYPE *dst,
+ const TERMTYPE2 *src)
+ { /* void */ }
+
/* ./codes.c */
#undef _nc_boolcodes
-char *const *_nc_boolcodes(void)
- { return(*(char **)0); }
+const char *const *_nc_boolcodes(void)
+ { return(*(const char **)0); }
#undef _nc_numcodes
-char *const *_nc_numcodes(void)
- { return(*(char **)0); }
+const char *const *_nc_numcodes(void)
+ { return(*(const char **)0); }
#undef _nc_strcodes
-char *const *_nc_strcodes(void)
- { return(*(char **)0); }
+const char *const *_nc_strcodes(void)
+ { return(*(const char **)0); }
/* ./comp_captab.c */
-#include <hashsize.h>
-
#undef _nc_get_table
const struct name_table_entry *_nc_get_table(
NCURSES_BOOL termcap)
@@ -199,9 +207,22 @@ struct name_table_entry const *_nc_find_type_entry(
NCURSES_BOOL termcap)
{ return(*(struct name_table_entry const **)0); }
-/* ./tinfo/db_iterator.c */
+#undef _nc_find_user_entry
+struct user_table_entry const *_nc_find_user_entry(
+ const char *string)
+ { return(*(struct user_table_entry const **)0); }
+
+/* ./comp_userdefs.c */
-#include <time.h>
+#undef _nc_get_userdefs_table
+const struct user_table_entry *_nc_get_userdefs_table(void)
+ { return(*(const struct user_table_entry **)0); }
+
+#undef _nc_get_hash_user
+const HashData *_nc_get_hash_user(void)
+ { return(*(const HashData **)0); }
+
+/* ./tinfo/db_iterator.c */
#undef _nc_tic_dir
const char *_nc_tic_dir(
@@ -247,7 +268,7 @@ ENTRY *_nc_tail;
#undef _nc_free_entry
void _nc_free_entry(
ENTRY *headp,
- TERMTYPE *tterm)
+ TERMTYPE2 *tterm)
{ /* void */ }
#undef _nc_free_entries
@@ -255,18 +276,17 @@ void _nc_free_entries(
ENTRY *headp)
{ /* void */ }
-#undef _nc_delink_entry
-ENTRY *_nc_delink_entry(
- ENTRY *headp,
- TERMTYPE *tterm)
- { return(*(ENTRY **)0); }
-
#undef _nc_leaks_tinfo
void _nc_leaks_tinfo(void)
{ /* void */ }
/* ./fallback.c */
+#undef _nc_fallback2
+const TERMTYPE2 *_nc_fallback2(
+ const char *name)
+ { return(*(const TERMTYPE2 **)0); }
+
#undef _nc_fallback
const TERMTYPE *_nc_fallback(
const char *name)
@@ -279,6 +299,11 @@ void _nc_free_termtype(
TERMTYPE *ptr)
{ /* void */ }
+#undef _nc_free_termtype2
+void _nc_free_termtype2(
+ TERMTYPE2 *ptr)
+ { /* void */ }
+
#undef _nc_user_definable
NCURSES_BOOL _nc_user_definable;
@@ -308,15 +333,6 @@ char *_nc_home_terminfo(void)
/* ./tinfo/init_keytry.c */
-#if 0
-
-#include <init_keytry.h>
-
-#undef _nc_tinfo_fkeys
-const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0};
-
-#endif
-
#undef _nc_init_keytry
void _nc_init_keytry(
SCREEN *sp)
@@ -339,11 +355,9 @@ void _nc_init_acs(void)
/* ./tinfo/lib_baudrate.c */
-#include <termcap.h>
-
struct speed {
- int s;
- int sp;
+ int given_speed;
+ int actual_speed;
};
#undef _nc_baudrate
@@ -508,15 +522,15 @@ int flushinp(void)
struct kn { short offset; int code; };
#undef keyname_sp
-char *keyname_sp(
+const char *keyname_sp(
SCREEN *sp,
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef keyname
-char *keyname(
+const char *keyname(
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./tinfo/lib_longname.c */
@@ -714,10 +728,6 @@ int intrflush(
/* ./tinfo/lib_setup.c */
-#include <locale.h>
-#include <sys/ioctl.h>
-#include <langinfo.h>
-
#undef _nc_ttytype
char *_nc_ttytype(void)
{ return(*(char **)0); }
@@ -802,7 +812,7 @@ void _nc_update_screensize(
#undef _nc_setup_tinfo
int _nc_setup_tinfo(
const char *const tn,
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
#undef _nc_tinfo_cmdch
@@ -826,19 +836,27 @@ int _nc_locale_breaks_acs(
#undef _nc_setupterm
int _nc_setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret,
int reuse)
{ return(*(int *)0); }
+#undef _nc_find_prescr
+SCREEN *_nc_find_prescr(void)
+ { return(*(SCREEN **)0); }
+
+#undef _nc_forget_prescr
+void _nc_forget_prescr(void)
+ { /* void */ }
+
#undef new_prescr
SCREEN *new_prescr(void)
{ return(*(SCREEN **)0); }
#undef setupterm
int setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret)
{ return(*(int *)0); }
@@ -857,12 +875,6 @@ int tgetent_sp(
const char *name)
{ return(*(int *)0); }
-#if 0
-
-#include <capdefaults.c>
-
-#endif
-
#undef tgetent
int tgetent(
char *bufp,
@@ -872,35 +884,35 @@ int tgetent(
#undef tgetflag_sp
int tgetflag_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetflag
int tgetflag(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum_sp
int tgetnum_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum
int tgetnum(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetstr_sp
char *tgetstr_sp(
SCREEN *sp,
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
#undef tgetstr
char *tgetstr(
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
@@ -929,34 +941,34 @@ char *tgoto(
#undef tigetflag_sp
int tigetflag_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetflag
int tigetflag(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum_sp
int tigetnum_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum
int tigetnum(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetstr_sp
char *tigetstr_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(char **)0); }
#undef tigetstr
char *tigetstr(
- char *str)
+ const char *str)
{ return(*(char **)0); }
/* ./tinfo/lib_tparm.c */
@@ -973,7 +985,7 @@ int _nc_tparm_analyze(
#undef tparm
char *tparm(
- char *string,
+ const char *string,
...)
{ return(*(char **)0); }
@@ -1150,9 +1162,9 @@ const char *_nc_retrace_cptr(
{ return(*(const char **)0); }
#undef _nc_retrace_cvoid_ptr
-void *_nc_retrace_cvoid_ptr(
- void *code)
- { return(*(void **)0); }
+const void *_nc_retrace_cvoid_ptr(
+ const void *code)
+ { return(*(const void **)0); }
#undef _nc_retrace_void_ptr
void *_nc_retrace_void_ptr(
@@ -1169,6 +1181,13 @@ WINDOW *_nc_retrace_win(
WINDOW *code)
{ return(*(WINDOW **)0); }
+#undef _nc_fmt_funcptr
+char *_nc_fmt_funcptr(
+ char *target,
+ const char *source,
+ size_t size)
+ { return(*(char **)0); }
+
#undef _nc_use_tracef
int _nc_use_tracef(
unsigned mask)
@@ -1238,11 +1257,6 @@ char *_tracecchar_t(
/* ./trace/lib_tracebits.c */
-typedef struct {
- unsigned int val;
- const char *name;
-} BITNAMES;
-
#undef _nc_trace_ttymode
char *_nc_trace_ttymode(
struct termios *tty)
@@ -1345,8 +1359,6 @@ int resetty(void)
/* ./tty/lib_twait.c */
-#include <sys/time.h>
-
#undef _nc_timed_wait
int _nc_timed_wait(
SCREEN *sp,
@@ -1372,28 +1384,28 @@ int _nc_name_match(
/* ./names.c */
#undef _nc_boolnames
-char *const *_nc_boolnames(void)
- { return(*(char **)0); }
+const char *const *_nc_boolnames(void)
+ { return(*(const char **)0); }
#undef _nc_boolfnames
-char *const *_nc_boolfnames(void)
- { return(*(char **)0); }
+const char *const *_nc_boolfnames(void)
+ { return(*(const char **)0); }
#undef _nc_numnames
-char *const *_nc_numnames(void)
- { return(*(char **)0); }
+const char *const *_nc_numnames(void)
+ { return(*(const char **)0); }
#undef _nc_numfnames
-char *const *_nc_numfnames(void)
- { return(*(char **)0); }
+const char *const *_nc_numfnames(void)
+ { return(*(const char **)0); }
#undef _nc_strnames
-char *const *_nc_strnames(void)
- { return(*(char **)0); }
+const char *const *_nc_strnames(void)
+ { return(*(const char **)0); }
#undef _nc_strfnames
-char *const *_nc_strfnames(void)
- { return(*(char **)0); }
+const char *const *_nc_strfnames(void)
+ { return(*(const char **)0); }
/* ./tinfo/obsolete.c */
@@ -1412,16 +1424,14 @@ void _nc_set_buffer(
/* ./tinfo/read_entry.c */
-#include <hashed_db.h>
-
#undef _nc_init_termtype
void _nc_init_termtype(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
#undef _nc_read_termtype
int _nc_read_termtype(
- TERMTYPE *ptr,
+ TERMTYPE2 *ptr,
char *buffer,
int limit)
{ return(*(int *)0); }
@@ -1429,7 +1439,14 @@ int _nc_read_termtype(
#undef _nc_read_file_entry
int _nc_read_file_entry(
const char *const filename,
- TERMTYPE *ptr)
+ TERMTYPE2 *ptr)
+ { return(*(int *)0); }
+
+#undef _nc_read_entry2
+int _nc_read_entry2(
+ const char *const name,
+ char *const filename,
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
#undef _nc_read_entry
@@ -1441,8 +1458,6 @@ int _nc_read_entry(
/* ./tinfo/read_termcap.c */
-#include <sys/types.h>
-
#undef _nc_read_termcap
void _nc_read_termcap(void)
{ /* void */ }
@@ -1527,21 +1542,21 @@ int _nc_remove_string(
#undef _nc_trim_sgr0
char *_nc_trim_sgr0(
- TERMTYPE *tp)
+ TERMTYPE2 *tp)
{ return(*(char **)0); }
/* ./unctrl.c */
#undef unctrl_sp
-char *unctrl_sp(
+const char *unctrl_sp(
SCREEN *sp,
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef unctrl
-char *unctrl(
+const char *unctrl(
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./trace/visbuf.c */
diff --git a/ncurses/llib-ltinfow b/ncurses/llib-ltinfow
index f219698304bc..9142d8aee9e4 100644
--- a/ncurses/llib-ltinfow
+++ b/ncurses/llib-ltinfow
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2012-2018,2019 Free 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,15 +27,13 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey 2012 *
+ * Author: Thomas E. Dickey 2012-on *
****************************************************************************/
/* LINTLIBRARY */
/* ./tinfo/access.c */
#include <curses.priv.h>
-#include <ctype.h>
-#include <tic.h>
#undef _nc_rootname
char *_nc_rootname(
@@ -90,8 +88,8 @@ int _nc_add_to_try(
#undef _nc_align_termtype
void _nc_align_termtype(
- TERMTYPE *to,
- TERMTYPE *from)
+ TERMTYPE2 *to,
+ TERMTYPE2 *from)
{ /* void */ }
#undef _nc_copy_termtype
@@ -100,19 +98,29 @@ void _nc_copy_termtype(
const TERMTYPE *src)
{ /* void */ }
+#undef _nc_copy_termtype2
+void _nc_copy_termtype2(
+ TERMTYPE2 *dst,
+ const TERMTYPE2 *src)
+ { /* void */ }
+
+#undef _nc_export_termtype2
+void _nc_export_termtype2(
+ TERMTYPE *dst,
+ const TERMTYPE2 *src)
+ { /* void */ }
+
/* ./codes.c */
#undef boolcodes
-char *const boolcodes[] = {0};
+const char *const boolcodes[] = {0};
#undef numcodes
-char *const numcodes[] = {0};
+const char *const numcodes[] = {0};
#undef strcodes
-char *const strcodes[] = {0};
+const char *const strcodes[] = {0};
/* ./comp_captab.c */
-#include <hashsize.h>
-
#undef _nc_get_table
const struct name_table_entry *_nc_get_table(
NCURSES_BOOL termcap)
@@ -194,9 +202,22 @@ struct name_table_entry const *_nc_find_type_entry(
NCURSES_BOOL termcap)
{ return(*(struct name_table_entry const **)0); }
-/* ./tinfo/db_iterator.c */
+#undef _nc_find_user_entry
+struct user_table_entry const *_nc_find_user_entry(
+ const char *string)
+ { return(*(struct user_table_entry const **)0); }
-#include <time.h>
+/* ./comp_userdefs.c */
+
+#undef _nc_get_userdefs_table
+const struct user_table_entry *_nc_get_userdefs_table(void)
+ { return(*(const struct user_table_entry **)0); }
+
+#undef _nc_get_hash_user
+const HashData *_nc_get_hash_user(void)
+ { return(*(const HashData **)0); }
+
+/* ./tinfo/db_iterator.c */
#undef _nc_tic_dir
const char *_nc_tic_dir(
@@ -242,7 +263,7 @@ ENTRY *_nc_tail;
#undef _nc_free_entry
void _nc_free_entry(
ENTRY *headp,
- TERMTYPE *tterm)
+ TERMTYPE2 *tterm)
{ /* void */ }
#undef _nc_free_entries
@@ -250,18 +271,17 @@ void _nc_free_entries(
ENTRY *headp)
{ /* void */ }
-#undef _nc_delink_entry
-ENTRY *_nc_delink_entry(
- ENTRY *headp,
- TERMTYPE *tterm)
- { return(*(ENTRY **)0); }
-
#undef _nc_leaks_tinfo
void _nc_leaks_tinfo(void)
{ /* void */ }
/* ./fallback.c */
+#undef _nc_fallback2
+const TERMTYPE2 *_nc_fallback2(
+ const char *name)
+ { return(*(const TERMTYPE2 **)0); }
+
#undef _nc_fallback
const TERMTYPE *_nc_fallback(
const char *name)
@@ -274,6 +294,11 @@ void _nc_free_termtype(
TERMTYPE *ptr)
{ /* void */ }
+#undef _nc_free_termtype2
+void _nc_free_termtype2(
+ TERMTYPE2 *ptr)
+ { /* void */ }
+
#undef _nc_user_definable
NCURSES_BOOL _nc_user_definable;
@@ -303,15 +328,6 @@ char *_nc_home_terminfo(void)
/* ./tinfo/init_keytry.c */
-#if 0
-
-#include <init_keytry.h>
-
-#undef _nc_tinfo_fkeys
-const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0};
-
-#endif
-
#undef _nc_init_keytry
void _nc_init_keytry(
SCREEN *sp)
@@ -333,11 +349,9 @@ void _nc_init_acs(void)
/* ./tinfo/lib_baudrate.c */
-#include <termcap.h>
-
struct speed {
- int s;
- int sp;
+ int given_speed;
+ int actual_speed;
};
#undef _nc_baudrate
@@ -462,26 +476,29 @@ int flushinp(void)
struct kn { short offset; int code; };
#undef keyname_sp
-char *keyname_sp(
+const char *keyname_sp(
SCREEN *sp,
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef keyname
-char *keyname(
+const char *keyname(
int c)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./tinfo/lib_longname.c */
+#undef longname_sp
+char *longname_sp(
+ SCREEN *sp)
+ { return(*(char **)0); }
+
#undef longname
char *longname(void)
{ return(*(char **)0); }
/* ./tinfo/lib_napms.c */
-#include <sys/time.h>
-
#undef napms_sp
int napms_sp(
SCREEN *sp,
@@ -665,10 +682,6 @@ int intrflush(
/* ./tinfo/lib_setup.c */
-#include <locale.h>
-#include <sys/ioctl.h>
-#include <langinfo.h>
-
#undef ttytype
char ttytype[256];
#undef LINES
@@ -731,7 +744,7 @@ void _nc_update_screensize(
#undef _nc_setup_tinfo
int _nc_setup_tinfo(
const char *const tn,
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
#undef _nc_tinfo_cmdch
@@ -755,7 +768,7 @@ int _nc_locale_breaks_acs(
#undef _nc_setupterm
int _nc_setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret,
int reuse)
@@ -767,7 +780,7 @@ SCREEN *new_prescr(void)
#undef setupterm
int setupterm(
- char *tname,
+ const char *tname,
int Filedes,
int *errret)
{ return(*(int *)0); }
@@ -786,12 +799,6 @@ int tgetent_sp(
const char *name)
{ return(*(int *)0); }
-#if 0
-
-#include <capdefaults.c>
-
-#endif
-
#undef tgetent
int tgetent(
char *bufp,
@@ -801,35 +808,35 @@ int tgetent(
#undef tgetflag_sp
int tgetflag_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetflag
int tgetflag(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum_sp
int tgetnum_sp(
SCREEN *sp,
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetnum
int tgetnum(
- char *id)
+ const char *id)
{ return(*(int *)0); }
#undef tgetstr_sp
char *tgetstr_sp(
SCREEN *sp,
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
#undef tgetstr
char *tgetstr(
- char *id,
+ const char *id,
char **area)
{ return(*(char **)0); }
@@ -858,34 +865,34 @@ char *tgoto(
#undef tigetflag_sp
int tigetflag_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetflag
int tigetflag(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum_sp
int tigetnum_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetnum
int tigetnum(
- char *str)
+ const char *str)
{ return(*(int *)0); }
#undef tigetstr_sp
char *tigetstr_sp(
SCREEN *sp,
- char *str)
+ const char *str)
{ return(*(char **)0); }
#undef tigetstr
char *tigetstr(
- char *str)
+ const char *str)
{ return(*(char **)0); }
/* ./tinfo/lib_tparm.c */
@@ -902,7 +909,7 @@ int _nc_tparm_analyze(
#undef tparm
char *tparm(
- char *string,
+ const char *string,
...)
{ return(*(char **)0); }
@@ -1065,9 +1072,9 @@ const char *_nc_retrace_cptr(
{ return(*(const char **)0); }
#undef _nc_retrace_cvoid_ptr
-void *_nc_retrace_cvoid_ptr(
- void *code)
- { return(*(void **)0); }
+const void *_nc_retrace_cvoid_ptr(
+ const void *code)
+ { return(*(const void **)0); }
#undef _nc_retrace_void_ptr
void *_nc_retrace_void_ptr(
@@ -1084,6 +1091,13 @@ WINDOW *_nc_retrace_win(
WINDOW *code)
{ return(*(WINDOW **)0); }
+#undef _nc_fmt_funcptr
+char *_nc_fmt_funcptr(
+ char *target,
+ const char *source,
+ size_t size)
+ { return(*(char **)0); }
+
/* ./trace/lib_traceatr.c */
#undef _traceattr2
@@ -1142,11 +1156,6 @@ char *_tracecchar_t(
/* ./trace/lib_tracebits.c */
-typedef struct {
- unsigned int val;
- const char *name;
-} BITNAMES;
-
#undef _nc_trace_ttymode
char *_nc_trace_ttymode(
struct termios *tty)
@@ -1274,17 +1283,17 @@ int _nc_name_match(
/* ./names.c */
#undef boolnames
-char *const boolnames[] = {0};
+const char *const boolnames[] = {0};
#undef boolfnames
-char *const boolfnames[] = {0};
+const char *const boolfnames[] = {0};
#undef numnames
-char *const numnames[] = {0};
+const char *const numnames[] = {0};
#undef numfnames
-char *const numfnames[] = {0};
+const char *const numfnames[] = {0};
#undef strnames
-char *const strnames[] = {0};
+const char *const strnames[] = {0};
#undef strfnames
-char *const strfnames[] = {0};
+const char *const strfnames[] = {0};
/* ./tinfo/obsolete.c */
@@ -1303,16 +1312,14 @@ void _nc_set_buffer(
/* ./tinfo/read_entry.c */
-#include <hashed_db.h>
-
#undef _nc_init_termtype
void _nc_init_termtype(
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{ /* void */ }
#undef _nc_read_termtype
int _nc_read_termtype(
- TERMTYPE *ptr,
+ TERMTYPE2 *ptr,
char *buffer,
int limit)
{ return(*(int *)0); }
@@ -1320,7 +1327,14 @@ int _nc_read_termtype(
#undef _nc_read_file_entry
int _nc_read_file_entry(
const char *const filename,
- TERMTYPE *ptr)
+ TERMTYPE2 *ptr)
+ { return(*(int *)0); }
+
+#undef _nc_read_entry2
+int _nc_read_entry2(
+ const char *const name,
+ char *const filename,
+ TERMTYPE2 *const tp)
{ return(*(int *)0); }
#undef _nc_read_entry
@@ -1332,8 +1346,6 @@ int _nc_read_entry(
/* ./tinfo/read_termcap.c */
-#include <sys/types.h>
-
#undef _nc_read_termcap
void _nc_read_termcap(void)
{ /* void */ }
@@ -1418,21 +1430,21 @@ int _nc_remove_string(
#undef _nc_trim_sgr0
char *_nc_trim_sgr0(
- TERMTYPE *tp)
+ TERMTYPE2 *tp)
{ return(*(char **)0); }
/* ./unctrl.c */
#undef unctrl_sp
-char *unctrl_sp(
+const char *unctrl_sp(
SCREEN *sp,
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
#undef unctrl
-char *unctrl(
+const char *unctrl(
chtype ch)
- { return(*(char **)0); }
+ { return(*(const char **)0); }
/* ./trace/visbuf.c */
diff --git a/ncurses/modules b/ncurses/modules
index b3b973210fc4..2772225e0a1b 100644
--- a/ncurses/modules
+++ b/ncurses/modules
@@ -1,6 +1,6 @@
-# $Id: modules,v 1.120 2013/01/26 22:17:55 tom Exp $
+# $Id: modules,v 1.123 2019/03/09 21:36:58 tom Exp $
##############################################################################
-# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2017,2019 Free 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"), #
@@ -44,7 +44,7 @@ lib_clear lib $(base) $(HEADER_DEPS)
lib_clearok lib $(base) $(HEADER_DEPS)
lib_clrbot lib $(base) $(HEADER_DEPS)
lib_clreol lib $(base) $(HEADER_DEPS)
-lib_color lib $(base) $(HEADER_DEPS) $(INCDIR)/tic.h
+lib_color lib $(base) $(HEADER_DEPS) $(INCDIR)/tic.h $(srcdir)/new_pair.h
lib_colorset lib $(base) $(HEADER_DEPS)
lib_delch lib $(base) $(HEADER_DEPS)
lib_delwin lib $(base) $(HEADER_DEPS)
@@ -125,7 +125,7 @@ lib_freeall lib $(base) $(HEADER_DEPS) $(INCDIR)/tic.h
charable lib $(wide) $(HEADER_DEPS)
lib_add_wch lib $(wide) $(HEADER_DEPS)
lib_box_set lib $(wide) $(HEADER_DEPS)
-lib_cchar lib $(wide) $(HEADER_DEPS)
+lib_cchar lib $(wide) $(HEADER_DEPS) $(srcdir)/new_pair.h
lib_erasewchar lib $(wide) $(HEADER_DEPS)
lib_get_wch lib $(wide) $(HEADER_DEPS)
lib_get_wstr lib $(wide) $(HEADER_DEPS)
@@ -149,6 +149,7 @@ expanded lib . $(HEADER_DEPS)
legacy_coding lib $(base) $(HEADER_DEPS)
lib_dft_fgbg lib $(base) $(HEADER_DEPS)
lib_print lib $(tinfo) $(HEADER_DEPS)
+new_pair lib $(base) $(HEADER_DEPS) $(srcdir)/new_pair.h
resizeterm lib $(base) $(HEADER_DEPS)
trace_xnames lib $(trace) $(HEADER_DEPS)
use_screen lib $(tinfo) $(HEADER_DEPS)
@@ -164,6 +165,7 @@ codes lib . $(HEADER_DEPS)
comp_captab lib . $(HEADER_DEPS) $(INCDIR)/tic.h ../include/hashsize.h
comp_error lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h
comp_hash lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h ../include/hashsize.h
+comp_userdefs lib . $(HEADER_DEPS) $(INCDIR)/tic.h ../include/hashsize.h
db_iterator lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h
doalloc lib $(tinfo) $(HEADER_DEPS)
entries lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h
diff --git a/ncurses/new_pair.h b/ncurses/new_pair.h
new file mode 100644
index 000000000000..49828d4a7725
--- /dev/null
+++ b/ncurses/new_pair.h
@@ -0,0 +1,130 @@
+/****************************************************************************
+ * Copyright (c) 2017,2018 Free 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 *
+ ****************************************************************************/
+
+/*
+ * Common type definitions and macros for new_pair.c, lib_color.c
+ *
+ * $Id: new_pair.h,v 1.9 2018/03/01 15:02:12 tom Exp $
+ */
+
+#ifndef NEW_PAIR_H
+#define NEW_PAIR_H 1
+/* *INDENT-OFF* */
+
+#define LIMIT_TYPED(n,t) \
+ (t)(((n) > MAX_OF_TYPE(t)) \
+ ? MAX_OF_TYPE(t) \
+ : ((n) < -MAX_OF_TYPE(t)) \
+ ? -MAX_OF_TYPE(t) \
+ : (n))
+
+#define limit_COLOR(n) LIMIT_TYPED(n,NCURSES_COLOR_T)
+#define limit_PAIRS(n) LIMIT_TYPED(n,NCURSES_PAIRS_T)
+
+#define MAX_XCURSES_PAIR MAX_OF_TYPE(NCURSES_PAIRS_T)
+
+#if NCURSES_EXT_COLORS
+#define OPTIONAL_PAIR GCC_UNUSED
+#define get_extended_pair(opts, color_pair) \
+ if ((opts) != NULL) { \
+ *(int*)(opts) = color_pair; \
+ }
+#define set_extended_pair(opts, color_pair) \
+ if ((opts) != NULL) { \
+ color_pair = *(const int*)(opts); \
+ }
+#else
+#define OPTIONAL_PAIR /* nothing */
+#define get_extended_pair(opts, color_pair) /* nothing */
+#define set_extended_pair(opts, color_pair) \
+ if ((opts) != NULL) { \
+ color_pair = -1; \
+ }
+#endif
+
+#ifdef NEW_PAIR_INTERNAL
+
+typedef enum {
+ cpKEEP = -1, /* color pair 0 */
+ cpFREE = 0, /* free for use */
+ cpINIT = 1, /* init_pair() */
+ cpAUTO = 1 /* alloc_pair() */
+} CPMODE;
+
+typedef struct _color_pairs
+{
+ int fg;
+ int bg;
+#if NCURSES_EXT_COLORS
+ int mode; /* tells if the entry is allocated or free */
+ int prev; /* index of previous item */
+ int next; /* index of next item */
+#endif
+}
+colorpair_t;
+
+#define MakeColorPair(target,f,b) target.fg = f, target.bg = b
+#define isSamePair(a,b) ((a).fg == (b).fg && (a).bg == (b).bg)
+#define FORE_OF(c) (c).fg
+#define BACK_OF(c) (c).bg
+
+/*
+ * Ensure that we use color pairs only when colors have been started, and also
+ * that the index is within the limits of the table which we allocated.
+ */
+#define ValidPair(sp,pair) \
+ ((sp != 0) && (pair >= 0) && (pair < sp->_pair_limit) && sp->_coloron)
+
+#if NCURSES_EXT_COLORS
+extern NCURSES_EXPORT(void) _nc_copy_pairs(SCREEN*, colorpair_t*, colorpair_t*, int);
+extern NCURSES_EXPORT(void) _nc_free_ordered_pairs(SCREEN*);
+extern NCURSES_EXPORT(void) _nc_reset_color_pair(SCREEN*, int, colorpair_t*);
+extern NCURSES_EXPORT(void) _nc_set_color_pair(SCREEN*, int, int);
+#else
+#define _nc_free_ordered_pairs(sp) /* nothing */
+#define _nc_reset_color_pair(sp, pair, data) /* nothing */
+#define _nc_set_color_pair(sp, pair, mode) /* nothing */
+#endif
+
+#else
+
+typedef struct _color_pairs colorpair_t;
+
+#endif /* NEW_PAIR_INTERNAL */
+
+#if NO_LEAKS
+extern NCURSES_EXPORT(void) _nc_new_pair_leaks(SCREEN*);
+#endif
+
+/* *INDENT-ON* */
+
+#endif /* NEW_PAIR_H */
diff --git a/ncurses/report_offsets.c b/ncurses/report_offsets.c
new file mode 100644
index 000000000000..a0b5ba5e1860
--- /dev/null
+++ b/ncurses/report_offsets.c
@@ -0,0 +1,228 @@
+/****************************************************************************
+ * Copyright (c) 2017,2018 Free 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 *
+ ****************************************************************************/
+
+#include <curses.priv.h>
+
+MODULE_ID("$Id: report_offsets.c,v 1.20 2018/07/07 19:25:40 tom Exp $")
+
+#define show_size(type) \
+ flag = 0; \
+ last = 0; \
+ printf("%5lu " #type "\n", (unsigned long)sizeof(type))
+#define show_offset(type,member) \
+ next = (unsigned long)offsetof(type,member); \
+ if (last > next) \
+ printf("?? incorrect order for " #type "." #member "\n"); \
+ printf("%5lu %c " #type "." #member "\n", next, flag ? *flag : ' '); \
+ last = next; \
+ flag = 0
+
+#if NCURSES_WIDECHAR && NCURSES_EXT_COLORS
+#define show_COLORS(type,member) { flag = "c"; show_offset(type,member); }
+#else
+#define show_COLORS(type,member) /* nothing */
+#endif
+
+#ifdef USE_TERM_DRIVER
+#define show_DRIVER(type,member) { flag = "d"; show_offset(type,member); }
+#else
+#define show_DRIVER(type,member) /* nothing */
+#endif
+
+#if NO_LEAKS
+#define show_MLEAKS(type,member) { flag = "L"; show_offset(type,member); }
+#else
+#define show_MLEAKS(type,member) /* nothing */
+#endif
+
+#ifdef USE_TERM_DRIVER
+#define show_NORMAL(type,member) /* nothing */
+#else
+#define show_NORMAL(type,member) { flag = "n"; show_offset(type,member); }
+#endif
+
+#define show_OPTION(type,member) { flag = "+"; show_offset(type,member); }
+
+#if USE_REENTRANT
+#define show_REENTR(type,member) { flag = "r"; show_offset(type,member); }
+#else
+#define show_REENTR(type,member) /* nothing */
+#endif
+
+#if NCURSES_SP_FUNCS
+#define show_SPFUNC(type,member) { flag = "s"; show_offset(type,member); }
+#else
+#define show_SPFUNC(type,member) /* nothing */
+#endif
+
+#ifdef USE_PTHREADS
+#define show_THREAD(type,member) { flag = "t"; show_offset(type,member); }
+#else
+#define show_THREAD(type,member) /* nothing */
+#endif
+
+#ifdef TRACE
+#define show_TRACES(type,member) { flag = "T"; show_offset(type,member); }
+#else
+#define show_TRACES(type,member) /* nothing */
+#endif
+
+#if USE_WIDEC_SUPPORT
+#define show_WIDECH(type,member) { flag = "w"; show_offset(type,member); }
+#else
+#define show_WIDECH(type,member) /* nothing */
+#endif
+
+int
+main(void)
+{
+ const char *flag = 0;
+ unsigned long last, next;
+
+ printf("Size/offsets of data structures:\n");
+
+ show_size(attr_t);
+ show_size(chtype);
+#if USE_WIDEC_SUPPORT
+ show_size(cchar_t);
+#endif
+ show_size(mmask_t);
+ show_size(MEVENT);
+ show_size(NCURSES_BOOL);
+
+ printf("\n");
+ show_size(SCREEN);
+ show_offset(SCREEN, _ifd);
+ show_offset(SCREEN, _fifo);
+ show_offset(SCREEN, _fifohead);
+ show_offset(SCREEN, _direct_color);
+ show_offset(SCREEN, _panelHook);
+ show_offset(SCREEN, jump);
+ show_offset(SCREEN, rsp);
+#if NCURSES_NO_PADDING
+ show_OPTION(SCREEN, _no_padding);
+#endif
+#if USE_HARD_TABS
+ show_OPTION(SCREEN, _ht_cost);
+#endif
+#if USE_ITALIC
+ show_OPTION(SCREEN, _use_ritm);
+#endif
+#if USE_KLIBC_KBD
+ show_OPTION(SCREEN, _extended_key);
+#endif
+#if NCURSES_EXT_FUNCS
+ show_OPTION(SCREEN, _assumed_color);
+#endif
+#if USE_GPM_SUPPORT
+ show_OPTION(SCREEN, _mouse_gpm_loaded);
+#ifdef HAVE_LIBDL
+ show_OPTION(SCREEN, _dlopen_gpm);
+#endif
+#endif
+#if USE_EMX_MOUSE
+ show_OPTION(SCREEN, _emxmouse_wfd);
+#endif
+#if USE_SYSMOUSE
+ show_OPTION(SCREEN, _sysmouse_fifo);
+#endif
+ show_DRIVER(SCREEN, _drv_mouse_fifo);
+#if USE_SIZECHANGE
+ show_OPTION(SCREEN, _resize);
+#endif
+ show_DRIVER(SCREEN, _windowlist);
+ show_REENTR(SCREEN, _ttytype);
+ show_SPFUNC(SCREEN, use_tioctl);
+ show_WIDECH(SCREEN, _screen_acs_fix);
+ show_COLORS(SCREEN, _ordered_pairs);
+ show_TRACES(SCREEN, tracechr_buf);
+
+ printf("\n");
+ show_size(TERMINAL);
+ show_offset(TERMINAL, type);
+ show_offset(TERMINAL, Filedes);
+ show_offset(TERMINAL, Ottyb);
+ show_offset(TERMINAL, Nttyb);
+ show_offset(TERMINAL, _baudrate);
+ show_offset(TERMINAL, _termname);
+#if HAVE_INIT_EXTENDED_COLOR
+ show_COLORS(TERMINAL, type2);
+#endif
+
+ printf("\n");
+ show_size(TERMTYPE);
+#if NCURSES_XNAMES
+ show_OPTION(TERMTYPE, ext_str_table);
+ show_OPTION(TERMTYPE, ext_Strings);
+#endif
+
+ printf("\n");
+ show_size(WINDOW);
+ show_WIDECH(WINDOW, _bkgrnd);
+ show_COLORS(WINDOW, _color);
+
+ printf("\n");
+ show_size(NCURSES_GLOBALS);
+ show_offset(NCURSES_GLOBALS, init_signals);
+ show_DRIVER(NCURSES_GLOBALS, term_driver);
+ show_NORMAL(NCURSES_GLOBALS, _nc_windowlist);
+#if USE_HOME_TERMINFO
+ show_OPTION(NCURSES_GLOBALS, home_terminfo);
+#endif
+#if !USE_SAFE_SPRINTF
+ show_OPTION(NCURSES_GLOBALS, safeprint_rows);
+#endif
+ show_THREAD(NCURSES_GLOBALS, mutex_curses);
+#if USE_PTHREADS_EINTR
+ show_THREAD(NCURSES_GLOBALS, read_thread);
+#endif
+ show_WIDECH(NCURSES_GLOBALS, key_name);
+ show_TRACES(NCURSES_GLOBALS, trace_opened);
+ show_MLEAKS(NCURSES_GLOBALS, leak_checking);
+
+ printf("\n");
+ show_size(NCURSES_PRESCREEN);
+ show_offset(NCURSES_PRESCREEN, saved_tty);
+ show_offset(NCURSES_PRESCREEN, use_tioctl);
+ show_offset(NCURSES_PRESCREEN, _outch);
+ show_NORMAL(NCURSES_PRESCREEN, rippedoff);
+#if NCURSES_NO_PADDING
+ show_OPTION(NCURSES_PRESCREEN, _no_padding);
+#endif
+#if BROKEN_LINKER
+ show_offset(NCURSES_PRESCREEN, real_acs_map);
+#else
+ show_REENTR(NCURSES_PRESCREEN, real_acs_map);
+#endif
+
+ return EXIT_SUCCESS;
+}
diff --git a/ncurses/tinfo/MKcaptab.sh b/ncurses/tinfo/MKcaptab.sh
index 20c94a639b9a..f1e989c637f0 100644
--- a/ncurses/tinfo/MKcaptab.sh
+++ b/ncurses/tinfo/MKcaptab.sh
@@ -1,6 +1,6 @@
#!/bin/sh
##############################################################################
-# Copyright (c) 2007-2010,2011 Free Software Foundation, Inc. #
+# Copyright (c) 2007-2011,2019 Free 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"), #
@@ -26,11 +26,28 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: MKcaptab.sh,v 1.14 2011/10/22 16:34:50 tom Exp $
-AWK=${1-awk}
-OPT1=${2-0}
-OPT2=${3-tinfo/MKcaptab.awk}
-DATA=${4-../include/Caps}
+# $Id: MKcaptab.sh,v 1.15 2019/04/06 21:53:49 tom Exp $
+
+if test $# != 0
+then
+ AWK="$1"; shift 1
+else
+ AWK=awk
+fi
+
+if test $# != 0
+then
+ OPT1="$1"; shift 1
+else
+ OPT1="-0"
+fi
+
+if test $# != 0
+then
+ OPT2="$1"; shift 1
+else
+ OPT2="tinfo/MKcaptab.awk"
+fi
cat <<EOF
/*
@@ -52,12 +69,12 @@ cat <<'EOF'
EOF
-./make_hash 1 info $OPT1 <$DATA
-./make_hash 3 cap $OPT1 <$DATA
+cat "$@" |./make_hash 1 info $OPT1
+cat "$@" |./make_hash 3 cap $OPT1
-$AWK -f $OPT2 bigstrings=$OPT1 tablename=capalias <$DATA
+cat "$@" |$AWK -f $OPT2 bigstrings=$OPT1 tablename=capalias
-$AWK -f $OPT2 bigstrings=$OPT1 tablename=infoalias <$DATA
+cat "$@" |$AWK -f $OPT2 bigstrings=$OPT1 tablename=infoalias
cat <<EOF
diff --git a/ncurses/tinfo/MKcodes.awk b/ncurses/tinfo/MKcodes.awk
index 97e5131ba07c..f0dc7b303bf6 100644
--- a/ncurses/tinfo/MKcodes.awk
+++ b/ncurses/tinfo/MKcodes.awk
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2010,2019 Free 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"), #
@@ -25,7 +25,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: MKcodes.awk,v 1.9 2010/01/23 17:57:43 tom Exp $
+# $Id: MKcodes.awk,v 1.10 2019/03/09 16:43:37 tom Exp $
function large_item(value) {
result = sprintf("%d,", offset);
offset = offset + length(value) + 1;
@@ -79,7 +79,9 @@ BEGIN {
}
$1 ~ /^#/ {next;}
+$1 ~ /^(cap|info)alias/ {next;}
+$1 == "userdef" {next;}
$1 == "SKIPWARN" {next;}
$3 == "bool" {
diff --git a/ncurses/tinfo/MKfallback.sh b/ncurses/tinfo/MKfallback.sh
index 11f1d2ead138..33b973eee88e 100755
--- a/ncurses/tinfo/MKfallback.sh
+++ b/ncurses/tinfo/MKfallback.sh
@@ -1,6 +1,6 @@
#!/bin/sh
##############################################################################
-# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2017,2019 Free 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"), #
@@ -26,7 +26,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: MKfallback.sh,v 1.15 2010/08/07 20:32:34 tom Exp $
+# $Id: MKfallback.sh,v 1.22 2019/06/30 10:44:15 tom Exp $
#
# MKfallback.sh -- create fallback table for entry reads
#
@@ -45,6 +45,9 @@ shift
tic_path=$1
shift
+infocmp_path=$1
+shift
+
case $tic_path in #(vi
/*)
tic_head=`echo "$tic_path" | sed -e 's,/[^/]*$,,'`
@@ -69,8 +72,10 @@ else
fi
cat <<EOF
+/* This file was generated by $0 */
+
/*
- * DO NOT EDIT THIS FILE BY HAND! It is generated by MKfallback.sh.
+ * DO NOT EDIT THIS FILE BY HAND!
*/
#include <curses.priv.h>
@@ -87,18 +92,18 @@ EOF
for x in $*
do
echo "/* $x */"
- infocmp -E $x
+ $infocmp_path -E $x | sed -e 's/\<short\>/NCURSES_INT2/g'
done
cat <<EOF
-static const TERMTYPE fallbacks[$#] =
+static const TERMTYPE2 fallbacks[$#] =
{
EOF
comma=""
for x in $*
do
echo "$comma /* $x */"
- infocmp -e $x
+ $infocmp_path -e $x
comma=","
done
@@ -109,28 +114,51 @@ EOF
fi
cat <<EOF
-NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *name GCC_UNUSED)
+NCURSES_EXPORT(const TERMTYPE2 *)
+_nc_fallback2 (const char *name GCC_UNUSED)
{
EOF
if [ "$*" ]
then
cat <<EOF
- const TERMTYPE *tp;
+ const TERMTYPE2 *tp;
for (tp = fallbacks;
- tp < fallbacks + sizeof(fallbacks)/sizeof(TERMTYPE);
- tp++)
- if (_nc_name_match(tp->term_names, name, "|"))
+ tp < fallbacks + sizeof(fallbacks)/sizeof(TERMTYPE2);
+ tp++) {
+ if (_nc_name_match(tp->term_names, name, "|")) {
return(tp);
+ }
+ }
EOF
else
echo " /* the fallback list is empty */";
fi
cat <<EOF
- return((TERMTYPE *)0);
+ return((const TERMTYPE2 *)0);
+}
+
+#if NCURSES_EXT_NUMBERS
+#undef _nc_fallback
+
+/*
+ * This entrypoint is used by tack.
+ */
+NCURSES_EXPORT(const TERMTYPE *)
+_nc_fallback (const char *name)
+{
+ const TERMTYPE2 *tp = _nc_fallback2(name);
+ const TERMTYPE *result = 0;
+ if (tp != 0) {
+ static TERMTYPE temp;
+ _nc_export_termtype2(&temp, tp);
+ result = &temp;
+ }
+ return result;
}
+#endif
EOF
if test -n "$tmp_info" ; then
diff --git a/ncurses/tinfo/MKkeys_list.sh b/ncurses/tinfo/MKkeys_list.sh
index 14017b016896..158e34d25538 100755
--- a/ncurses/tinfo/MKkeys_list.sh
+++ b/ncurses/tinfo/MKkeys_list.sh
@@ -1,7 +1,7 @@
#! /bin/sh
-# $Id: MKkeys_list.sh,v 1.4 2003/10/25 16:19:54 tom Exp $
+# $Id: MKkeys_list.sh,v 1.6 2019/03/02 22:47:33 tom Exp $
##############################################################################
-# Copyright (c) 2001,2003 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2017,2019 Free 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"), #
@@ -35,11 +35,16 @@
# Extract function-key names from the Caps file
#
: ${AWK-awk}
-DATA=${1-../../include/Caps}
+if test $# != 0
+then
+ DATA="$*"
+else
+ DATA=../../include/Caps
+fi
data=data$$
-trap 'rm -f $data' 0 1 2 5 15
-sed -e 's/[ ][ ]*/ /g' < $DATA >$data
+trap 'rm -f $data' EXIT INT QUIT TERM HUP
+cat $DATA | sed -e 's/[ ][ ]*/ /g' >$data
cat <<EOF
# These definitions were generated by $0 $DATA
@@ -53,6 +58,7 @@ ${AWK-awk} <$data '
/^#/ {next;}
/^capalias/ {next;}
/^infoalias/ {next;}
+/^userdef/ {next;}
$5 != "-" {
if (substr($5, 1, 4) == "KEY_" ) {
diff --git a/ncurses/tinfo/MKnames.awk b/ncurses/tinfo/MKnames.awk
index 7685d1831ef0..b8dd4b93c624 100644
--- a/ncurses/tinfo/MKnames.awk
+++ b/ncurses/tinfo/MKnames.awk
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2007-2008,2009 Free Software Foundation, Inc. #
+# Copyright (c) 2007-2009,2019 Free 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"), #
@@ -25,7 +25,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: MKnames.awk,v 1.22 2009/03/21 21:03:39 tom Exp $
+# $Id: MKnames.awk,v 1.23 2019/03/09 16:49:06 tom Exp $
function large_item(value) {
result = sprintf("%d,", offset);
offset = offset + length(value) + 1;
@@ -79,7 +79,9 @@ BEGIN {
}
$1 ~ /^#/ {next;}
+$1 ~ /^(cap|info)alias/ {next;}
+$1 == "userdef" {next;}
$1 == "SKIPWARN" {next;}
$3 == "bool" {
diff --git a/ncurses/tinfo/MKuserdefs.sh b/ncurses/tinfo/MKuserdefs.sh
new file mode 100755
index 000000000000..7bd7369ffef8
--- /dev/null
+++ b/ncurses/tinfo/MKuserdefs.sh
@@ -0,0 +1,146 @@
+#!/bin/sh
+##############################################################################
+# Copyright (c) 2019 Free 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: MKuserdefs.sh,v 1.9 2019/07/28 19:12:18 tom Exp $
+AWK=${1-awk}; shift 1
+OPT1=${1-0}; shift 1
+
+cat <<EOF
+/*
+ * generated by $0
+ */
+
+EOF
+
+cat <<'EOF'
+/*
+ * comp_userdefs.c -- The names of widely used user-defined capabilities
+ * indexed via a hash table for the compiler.
+ *
+ */
+
+#include <curses.priv.h>
+#include <tic.h>
+#include <hashsize.h>
+
+#if NCURSES_XNAMES
+EOF
+
+cat "$@" | ./make_hash 1 user $OPT1
+
+cat <<EOF
+
+#define USERTABSIZE SIZEOF(user_names_data)
+
+#if $OPT1
+static void
+next_string(const char *strings, unsigned *offset)
+{
+ *offset += (unsigned) strlen(strings + *offset) + 1;
+}
+
+static const struct user_table_entry *
+_nc_build_names(struct user_table_entry **actual,
+ const user_table_data *source,
+ const char *strings)
+{
+ if (*actual == 0) {
+ *actual = typeCalloc(struct user_table_entry, USERTABSIZE);
+ if (*actual != 0) {
+ unsigned n;
+ unsigned len = 0;
+ for (n = 0; n < USERTABSIZE; ++n) {
+ (*actual)[n].ute_name = strings + len;
+ (*actual)[n].ute_type = (int) source[n].ute_type;
+ (*actual)[n].ute_argc = source[n].ute_argc;
+ (*actual)[n].ute_args = source[n].ute_args;
+ (*actual)[n].ute_index = source[n].ute_index;
+ (*actual)[n].ute_link = source[n].ute_link;
+ next_string(strings, &len);
+ }
+ }
+ }
+ return *actual;
+}
+
+#define build_names(root) _nc_build_names(&_nc_##root##_table, \\
+ root##_names_data, \\
+ root##_names_text)
+#else
+#define build_names(root) _nc_ ## root ## _table
+#endif
+
+NCURSES_EXPORT(const struct user_table_entry *) _nc_get_userdefs_table (void)
+{
+ return build_names(user) ;
+}
+
+static HashValue
+info_hash(const char *string)
+{
+ long sum = 0;
+
+ DEBUG(9, ("hashing %s", string));
+ while (*string) {
+ sum += (long) (*string + (*(string + 1) << 8));
+ string++;
+ }
+
+ DEBUG(9, ("sum is %ld", sum));
+ return (HashValue) (sum % HASHTABSIZE);
+}
+
+static int
+compare_info_names(const char *a, const char *b)
+{
+ return !strcmp(a, b);
+}
+
+static const HashData hash_data[] = {
+ { HASHTABSIZE, _nc_user_hash_table, info_hash, compare_info_names }
+};
+
+NCURSES_EXPORT(const HashData *) _nc_get_hash_user (void)
+{
+ return hash_data;
+}
+
+#if NO_LEAKS
+NCURSES_EXPORT(void) _nc_comp_userdefs_leaks(void)
+{
+#if $OPT1
+ FreeIfNeeded(_nc_user_table);
+#endif
+}
+#endif /* NO_LEAKS */
+
+#else /*! NCURSES_XNAMES */
+NCURSES_EXPORT(void) _nc_comp_userdefs(void);
+NCURSES_EXPORT(void) _nc_comp_userdefs(void) { }
+#endif /* NCURSES_XNAMES */
+EOF
diff --git a/ncurses/tinfo/access.c b/ncurses/tinfo/access.c
index d9876875382d..e086bd0c6695 100644
--- a/ncurses/tinfo/access.c
+++ b/ncurses/tinfo/access.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2019 Free 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,15 +36,7 @@
#include <tic.h>
-MODULE_ID("$Id: access.c,v 1.23 2012/09/01 19:21:29 tom Exp $")
-
-#ifdef __TANDEM
-#define ROOT_UID 65535
-#endif
-
-#ifndef ROOT_UID
-#define ROOT_UID 0
-#endif
+MODULE_ID("$Id: access.c,v 1.24 2019/01/19 15:38:07 tom Exp $")
#define LOWERCASE(c) ((isalpha(UChar(c)) && isupper(UChar(c))) ? tolower(UChar(c)) : (c))
diff --git a/ncurses/tinfo/add_tries.c b/ncurses/tinfo/add_tries.c
index 29a1a60045b5..f9a4cce680a2 100644
--- a/ncurses/tinfo/add_tries.c
+++ b/ncurses/tinfo/add_tries.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2019 Free 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 @@
#include <curses.priv.h>
-MODULE_ID("$Id: add_tries.c,v 1.10 2010/12/19 01:31:14 tom Exp $")
+MODULE_ID("$Id: add_tries.c,v 1.11 2019/07/27 22:59:11 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))
@@ -109,6 +109,7 @@ _nc_add_to_try(TRIES ** tree, const char *str, unsigned code)
savedptr = ptr->child;
free(ptr);
}
+ *tree = NULL;
returnCode(ERR);
}
diff --git a/ncurses/tinfo/alloc_entry.c b/ncurses/tinfo/alloc_entry.c
index 14ea39118837..5fd33e76ee8d 100644
--- a/ncurses/tinfo/alloc_entry.c
+++ b/ncurses/tinfo/alloc_entry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,7 +47,7 @@
#include <tic.h>
-MODULE_ID("$Id: alloc_entry.c,v 1.58 2013/08/17 19:20:38 tom Exp $")
+MODULE_ID("$Id: alloc_entry.c,v 1.63 2019/06/08 14:29:28 tom Exp $")
#define ABSENT_OFFSET -1
#define CANCELLED_OFFSET -2
@@ -58,7 +58,7 @@ static char *stringbuf; /* buffer for string capabilities */
static size_t next_free; /* next free character in stringbuf */
NCURSES_EXPORT(void)
-_nc_init_entry(TERMTYPE *const tp)
+_nc_init_entry(ENTRY * const tp)
/* initialize a terminal type data block */
{
#if NO_LEAKS
@@ -75,7 +75,7 @@ _nc_init_entry(TERMTYPE *const tp)
next_free = 0;
- _nc_init_termtype(tp);
+ _nc_init_termtype(&(tp->tterm));
}
NCURSES_EXPORT(ENTRY *)
@@ -85,7 +85,7 @@ _nc_copy_entry(ENTRY * oldp)
if (newp != 0) {
*newp = *oldp;
- _nc_copy_termtype(&(newp->tterm), &(oldp->tterm));
+ _nc_copy_termtype2(&(newp->tterm), &(oldp->tterm));
}
return newp;
}
@@ -96,7 +96,11 @@ _nc_save_str(const char *const string)
{
char *result = 0;
size_t old_next_free = next_free;
- size_t len = strlen(string) + 1;
+ size_t len;
+
+ if (!VALID_STRING(string))
+ return _nc_save_str("");
+ len = strlen(string) + 1;
if (len == 1 && next_free != 0) {
/*
@@ -126,7 +130,7 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings)
int useoffsets[MAX_USES];
unsigned i, n;
unsigned nuses = ep->nuses;
- TERMTYPE *tp = &(ep->tterm);
+ TERMTYPE2 *tp = &(ep->tterm);
if (copy_strings) {
next_free = 0; /* clear static storage */
@@ -218,12 +222,22 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings)
}
NCURSES_EXPORT(void)
-_nc_merge_entry(TERMTYPE *const to, TERMTYPE *const from)
+_nc_merge_entry(ENTRY * const target, ENTRY * const source)
/* merge capabilities from `from' entry into `to' entry */
{
+ TERMTYPE2 *to = &(target->tterm);
+ TERMTYPE2 *from = &(source->tterm);
+#if NCURSES_XNAMES
+ TERMTYPE2 copy;
+#endif
unsigned i;
+ if (source == 0 || from == 0 || target == 0 || to == 0)
+ return;
+
#if NCURSES_XNAMES
+ _nc_copy_termtype2(&copy, from);
+ from = &copy;
_nc_align_termtype(to, from);
#endif
for_each_boolean(i, from) {
@@ -233,18 +247,18 @@ _nc_merge_entry(TERMTYPE *const to, TERMTYPE *const from)
if (mergebool == CANCELLED_BOOLEAN)
to->Booleans[i] = FALSE;
else if (mergebool == TRUE)
- to->Booleans[i] = (char) mergebool;
+ to->Booleans[i] = (NCURSES_SBOOL) mergebool;
}
}
for_each_number(i, from) {
if (to->Numbers[i] != CANCELLED_NUMERIC) {
- short mergenum = from->Numbers[i];
+ int mergenum = from->Numbers[i];
if (mergenum == CANCELLED_NUMERIC)
to->Numbers[i] = ABSENT_NUMERIC;
else if (mergenum != ABSENT_NUMERIC)
- to->Numbers[i] = mergenum;
+ to->Numbers[i] = (NCURSES_INT2) mergenum;
}
}
@@ -263,6 +277,16 @@ _nc_merge_entry(TERMTYPE *const to, TERMTYPE *const from)
to->Strings[i] = mergestring;
}
}
+#if NCURSES_XNAMES
+ /* Discard the data allocated in _nc_copy_termtype2, but do not use
+ * _nc_free_termtype2 because that frees the string-table (which is
+ * not allocated by _nc_copy_termtype2).
+ */
+ free(copy.Booleans);
+ free(copy.Numbers);
+ free(copy.Strings);
+ free(copy.ext_Names);
+#endif
}
#if NO_LEAKS
diff --git a/ncurses/tinfo/alloc_ttype.c b/ncurses/tinfo/alloc_ttype.c
index 35c92dd8c2b9..49169a13ee3f 100644
--- a/ncurses/tinfo/alloc_ttype.c
+++ b/ncurses/tinfo/alloc_ttype.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <tic.h>
-MODULE_ID("$Id: alloc_ttype.c,v 1.27 2013/06/08 16:54:50 tom Exp $")
+MODULE_ID("$Id: alloc_ttype.c,v 1.31 2019/04/27 23:28:31 tom Exp $")
#if NCURSES_XNAMES
/*
@@ -61,7 +61,7 @@ merge_names(char **dst, char **a, int na, char **b, int nb)
} else if (cmp > 0) {
dst[n++] = *b++;
nb--;
- } else if (cmp == 0) {
+ } else {
dst[n++] = *a;
a++, b++;
na--, nb--;
@@ -78,37 +78,59 @@ merge_names(char **dst, char **a, int na, char **b, int nb)
}
static bool
-find_name(char **table, int length, char *name)
+find_name(char **table, int item, int length, const char *name)
{
- while (length-- > 0) {
- if (!strcmp(*table++, name)) {
- DEBUG(4, ("found name '%s'", name));
- return TRUE;
+ int n;
+ int result = -1;
+
+ for (n = item; n < length; ++n) {
+ if (!strcmp(table[n], name)) {
+ DEBUG(4, ("found name '%s' @%d", name, n));
+ result = n;
+ break;
}
}
- DEBUG(4, ("did not find name '%s'", name));
- return FALSE;
+ if (result < 0) {
+ DEBUG(4, ("did not find name '%s'", name));
+ }
+ return (result >= 0);
}
#define EXTEND_NUM(num, ext) \
+ DEBUG(4, ("extending " #num " from %d to %d", \
+ to->num, (unsigned short) (to->num + (ext - to->ext)))); \
to->num = (unsigned short) (to->num + (ext - to->ext))
static void
-realign_data(TERMTYPE *to, char **ext_Names,
+realign_data(TERMTYPE2 *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);
+ int to_Booleans = to->ext_Booleans;
+ int to_Numbers = to->ext_Numbers;
+ int to_Strings = to->ext_Strings;
+ int to1, to2, from;
+
+ DEBUG(4, ("realign_data %d/%d/%d vs %d/%d/%d",
+ ext_Booleans,
+ ext_Numbers,
+ ext_Strings,
+ to->ext_Booleans,
+ to->ext_Numbers,
+ to->ext_Strings));
if (to->ext_Booleans != ext_Booleans) {
+ to1 = 0;
+ to2 = to_Booleans + to1;
+ from = 0;
EXTEND_NUM(num_Booleans, ext_Booleans);
TYPE_REALLOC(NCURSES_SBOOL, to->num_Booleans, to->Booleans);
for (n = to->ext_Booleans - 1,
m = ext_Booleans - 1,
base = to->num_Booleans - (m + 1); m >= 0; m--) {
- if (find_name(to->ext_Names, limit, ext_Names[m])) {
+ if (find_name(to->ext_Names, to1, to2, ext_Names[m + from])) {
to->Booleans[base + m] = to->Booleans[base + n--];
} else {
to->Booleans[base + m] = FALSE;
@@ -118,12 +140,15 @@ realign_data(TERMTYPE *to, char **ext_Names,
}
if (to->ext_Numbers != ext_Numbers) {
+ to1 = to_Booleans;
+ to2 = to_Numbers + to1;
+ from = ext_Booleans;
EXTEND_NUM(num_Numbers, ext_Numbers);
- TYPE_REALLOC(short, to->num_Numbers, to->Numbers);
+ TYPE_REALLOC(NCURSES_INT2, 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])) {
+ if (find_name(to->ext_Names, to1, to2, ext_Names[m + from])) {
to->Numbers[base + m] = to->Numbers[base + n--];
} else {
to->Numbers[base + m] = ABSENT_NUMERIC;
@@ -131,13 +156,17 @@ realign_data(TERMTYPE *to, char **ext_Names,
}
to->ext_Numbers = UShort(ext_Numbers);
}
+
if (to->ext_Strings != ext_Strings) {
+ to1 = to_Booleans + to_Numbers;
+ to2 = to_Strings + to1;
+ from = ext_Booleans + ext_Numbers;
EXTEND_NUM(num_Strings, ext_Strings);
TYPE_REALLOC(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])) {
+ if (find_name(to->ext_Names, to1, to2, ext_Names[m + from])) {
to->Strings[base + m] = to->Strings[base + n--];
} else {
to->Strings[base + m] = ABSENT_STRING;
@@ -151,7 +180,7 @@ realign_data(TERMTYPE *to, char **ext_Names,
* Returns the first index in ext_Names[] for the given token-type
*/
static unsigned
-_nc_first_ext_name(TERMTYPE *tp, int token_type)
+_nc_first_ext_name(TERMTYPE2 *tp, int token_type)
{
unsigned first;
@@ -176,7 +205,7 @@ _nc_first_ext_name(TERMTYPE *tp, int token_type)
* Returns the last index in ext_Names[] for the given token-type
*/
static unsigned
-_nc_last_ext_name(TERMTYPE *tp, int token_type)
+_nc_last_ext_name(TERMTYPE2 *tp, int token_type)
{
unsigned last;
@@ -199,7 +228,7 @@ _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)
+_nc_find_ext_name(TERMTYPE2 *tp, char *name, int token_type)
{
unsigned j;
unsigned first = _nc_first_ext_name(tp, token_type);
@@ -218,7 +247,7 @@ _nc_find_ext_name(TERMTYPE *tp, char *name, int token_type)
* (e.g., Booleans[]).
*/
static int
-_nc_ext_data_index(TERMTYPE *tp, int n, int token_type)
+_nc_ext_data_index(TERMTYPE2 *tp, int n, int token_type)
{
switch (token_type) {
case BOOLEAN:
@@ -241,13 +270,14 @@ _nc_ext_data_index(TERMTYPE *tp, int n, int token_type)
* data.
*/
static bool
-_nc_del_ext_name(TERMTYPE *tp, char *name, int token_type)
+_nc_del_ext_name(TERMTYPE2 *tp, char *name, int token_type)
{
- int j;
- int first, last;
+ int first;
if ((first = _nc_find_ext_name(tp, name, token_type)) >= 0) {
- last = (int) NUM_EXT_NAMES(tp) - 1;
+ int j;
+ int last = (int) NUM_EXT_NAMES(tp) - 1;
+
for (j = first; j < last; j++) {
tp->ext_Names[j] = tp->ext_Names[j + 1];
}
@@ -285,7 +315,7 @@ _nc_del_ext_name(TERMTYPE *tp, char *name, int token_type)
* index into the corresponding data array is returned.
*/
static int
-_nc_ins_ext_name(TERMTYPE *tp, char *name, int token_type)
+_nc_ins_ext_name(TERMTYPE2 *tp, char *name, int token_type)
{
unsigned first = _nc_first_ext_name(tp, token_type);
unsigned last = _nc_last_ext_name(tp, token_type);
@@ -319,7 +349,7 @@ _nc_ins_ext_name(TERMTYPE *tp, char *name, int token_type)
case NUMBER:
tp->ext_Numbers++;
tp->num_Numbers++;
- TYPE_REALLOC(short, tp->num_Numbers, tp->Numbers);
+ TYPE_REALLOC(NCURSES_INT2, tp->num_Numbers, tp->Numbers);
for (k = (unsigned) (tp->num_Numbers - 1); k > j; k--)
tp->Numbers[k] = tp->Numbers[k - 1];
break;
@@ -340,7 +370,7 @@ _nc_ins_ext_name(TERMTYPE *tp, char *name, int token_type)
* cancellation of a name that is inherited from another entry.
*/
static void
-adjust_cancels(TERMTYPE *to, TERMTYPE *from)
+adjust_cancels(TERMTYPE2 *to, TERMTYPE2 *from)
{
int first = to->ext_Booleans + to->ext_Numbers;
int last = first + to->ext_Strings;
@@ -385,24 +415,30 @@ adjust_cancels(TERMTYPE *to, TERMTYPE *from)
}
NCURSES_EXPORT(void)
-_nc_align_termtype(TERMTYPE *to, TERMTYPE *from)
+_nc_align_termtype(TERMTYPE2 *to, TERMTYPE2 *from)
{
- int na = (int) NUM_EXT_NAMES(to);
- int nb = (int) NUM_EXT_NAMES(from);
- int n;
- bool same;
+ int na;
+ int nb;
char **ext_Names;
- int ext_Booleans, ext_Numbers, ext_Strings;
- bool used_ext_Names = FALSE;
- DEBUG(2, ("align_termtype to(%d:%s), from(%d:%s)", na, to->term_names,
- nb, from->term_names));
+ na = to ? ((int) NUM_EXT_NAMES(to)) : 0;
+ nb = from ? ((int) NUM_EXT_NAMES(from)) : 0;
+
+ DEBUG(2, ("align_termtype to(%d:%s), from(%d:%s)",
+ na, to ? NonNull(to->term_names) : "?",
+ nb, from ? NonNull(from->term_names) : "?"));
if (na != 0 || nb != 0) {
+ int ext_Booleans, ext_Numbers, ext_Strings;
+ bool used_ext_Names = FALSE;
+
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)) {
+ int n;
+ bool same;
+
for (n = 0, same = TRUE; n < na; n++) {
if (strcmp(to->ext_Names[n], from->ext_Names[n])) {
same = FALSE;
@@ -473,29 +509,80 @@ _nc_align_termtype(TERMTYPE *to, TERMTYPE *from)
}
#endif
-NCURSES_EXPORT(void)
-_nc_copy_termtype(TERMTYPE *dst, const TERMTYPE *src)
+#define srcINT 1
+#define dstINT 2
+
+/*
+ * TERMTYPE and TERMTYPE2 differ only with regard to the values in Numbers.
+ * Use 'mode' to decide which to use.
+ */
+static void
+copy_termtype(TERMTYPE2 *dst, const TERMTYPE2 *src, int mode)
{
-#if NCURSES_XNAMES
+#if NCURSES_XNAMES || NCURSES_EXT_NUMBERS
unsigned i;
#endif
+#if NCURSES_EXT_NUMBERS
+ short *oldptr = 0;
+ int *newptr = 0;
+#endif
+ DEBUG(2, ("copy_termtype"));
*dst = *src; /* ...to copy the sizes and string-tables */
TYPE_MALLOC(NCURSES_SBOOL, NUM_BOOLEANS(dst), dst->Booleans);
- TYPE_MALLOC(short, NUM_NUMBERS(dst), dst->Numbers);
TYPE_MALLOC(char *, NUM_STRINGS(dst), dst->Strings);
memcpy(dst->Booleans,
src->Booleans,
NUM_BOOLEANS(dst) * sizeof(dst->Booleans[0]));
- memcpy(dst->Numbers,
- src->Numbers,
- NUM_NUMBERS(dst) * sizeof(dst->Numbers[0]));
memcpy(dst->Strings,
src->Strings,
NUM_STRINGS(dst) * sizeof(dst->Strings[0]));
+#if NCURSES_EXT_NUMBERS
+ if ((mode & dstINT) == 0) {
+ DEBUG(2, ("...convert int ->short"));
+ TYPE_MALLOC(short, NUM_NUMBERS(dst), oldptr);
+ ((TERMTYPE *) dst)->Numbers = oldptr;
+ } else {
+ DEBUG(2, ("...copy without changing size"));
+ TYPE_MALLOC(int, NUM_NUMBERS(dst), newptr);
+ dst->Numbers = newptr;
+ }
+ if ((mode == srcINT) && (oldptr != 0)) {
+ DEBUG(2, ("...copy int ->short"));
+ for (i = 0; i < NUM_NUMBERS(dst); ++i) {
+ if (src->Numbers[i] > MAX_OF_TYPE(short)) {
+ oldptr[i] = MAX_OF_TYPE(short);
+ } else {
+ oldptr[i] = (short) src->Numbers[i];
+ }
+ }
+ } else if ((mode == dstINT) && (newptr != 0)) {
+ DEBUG(2, ("...copy short ->int"));
+ for (i = 0; i < NUM_NUMBERS(dst); ++i) {
+ newptr[i] = ((const short *) (src->Numbers))[i];
+ }
+ } else {
+ DEBUG(2, ("...copy %s without change",
+ (mode & dstINT)
+ ? "int"
+ : "short"));
+ memcpy(dst->Numbers,
+ src->Numbers,
+ NUM_NUMBERS(dst) * ((mode & dstINT)
+ ? sizeof(int)
+ : sizeof(short)));
+ }
+#else
+ (void) mode;
+ TYPE_MALLOC(short, NUM_NUMBERS(dst), dst->Numbers);
+ memcpy(dst->Numbers,
+ src->Numbers,
+ NUM_NUMBERS(dst) * sizeof(dst->Numbers[0]));
+#endif
+
/* FIXME: we probably should also copy str_table and ext_str_table,
* but tic and infocmp are not written to exploit that (yet).
*/
@@ -509,3 +596,33 @@ _nc_copy_termtype(TERMTYPE *dst, const TERMTYPE *src)
}
#endif
}
+
+/*
+ * This entrypoint is used by tack.
+ */
+NCURSES_EXPORT(void)
+_nc_copy_termtype(TERMTYPE *dst, const TERMTYPE *src)
+{
+ DEBUG(2, ("_nc_copy_termtype..."));
+ copy_termtype((TERMTYPE2 *) dst, (const TERMTYPE2 *) src, 0);
+}
+
+#if NCURSES_EXT_NUMBERS
+NCURSES_EXPORT(void)
+_nc_copy_termtype2(TERMTYPE2 *dst, const TERMTYPE2 *src)
+{
+ DEBUG(2, ("_nc_copy_termtype2..."));
+ copy_termtype(dst, src, srcINT | dstINT);
+}
+
+/*
+ * Use this for exporting the internal TERMTYPE2 to the legacy format used via
+ * the CUR macro by applications.
+ */
+NCURSES_EXPORT(void)
+_nc_export_termtype2(TERMTYPE *dst, const TERMTYPE2 *src)
+{
+ DEBUG(2, ("_nc_export_termtype2..."));
+ copy_termtype((TERMTYPE2 *) dst, src, srcINT);
+}
+#endif /* NCURSES_EXT_NUMBERS */
diff --git a/ncurses/tinfo/captoinfo.c b/ncurses/tinfo/captoinfo.c
index e02e622b0de3..a9eb1e53454d 100644
--- a/ncurses/tinfo/captoinfo.c
+++ b/ncurses/tinfo/captoinfo.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,12 +33,16 @@
****************************************************************************/
/*
- * captoinfo.c --- conversion between termcap and terminfo formats
+ * captoinfo.c
+ *
+ * Provide conversion in both directions between termcap and terminfo.
+ *
+ * cap-to-info --- conversion between termcap and terminfo formats
*
* The captoinfo() code was swiped from Ross Ridge's mytinfo package,
* adapted to fit ncurses by Eric S. Raymond <esr@snark.thyrsus.com>.
*
- * There is just one entry point:
+ * It has just one entry point:
*
* char *_nc_captoinfo(n, s, parameterized)
*
@@ -93,7 +97,13 @@
#include <ctype.h>
#include <tic.h>
-MODULE_ID("$Id: captoinfo.c,v 1.77 2012/12/30 00:50:40 tom Exp $")
+MODULE_ID("$Id: captoinfo.c,v 1.97 2019/10/15 23:13:35 tom Exp $")
+
+#if 0
+#define DEBUG_THIS(p) DEBUG(9, p)
+#else
+#define DEBUG_THIS(p) /* nothing */
+#endif
#define MAX_PUSHED 16 /* max # args we can push onto the stack */
@@ -181,7 +191,7 @@ cvtchar(register const char *sp)
case '$':
case '\\':
case '%':
- c = (unsigned char) (*sp);
+ c = UChar(*sp);
len = 2;
break;
case '\0':
@@ -194,29 +204,33 @@ cvtchar(register const char *sp)
case '3':
len = 1;
while (isdigit(UChar(*sp))) {
- c = (unsigned char) (8 * c + (*sp++ - '0'));
+ c = UChar(8 * c + (*sp++ - '0'));
len++;
}
break;
default:
- c = (unsigned char) (*sp);
- len = 2;
+ c = UChar(*sp);
+ len = (c != '\0') ? 2 : 1;
break;
}
break;
case '^':
- c = (unsigned char) (*++sp & 0x1f);
+ c = UChar(*++sp);
+ if (c == '?')
+ c = 127;
+ else
+ c &= 0x1f;
len = 2;
break;
default:
- c = (unsigned char) (*sp);
- len = 1;
+ c = UChar(*sp);
+ len = (c != '\0') ? 1 : 0;
}
if (isgraph(c) && c != ',' && c != '\'' && c != '\\' && c != ':') {
dp = save_string(dp, "%\'");
dp = save_char(dp, c);
dp = save_char(dp, '\'');
- } else {
+ } else if (c != '\0') {
dp = save_string(dp, "%{");
if (c > 99)
dp = save_char(dp, c / 100 + '0');
@@ -232,6 +246,8 @@ static void
getparm(int parm, int n)
/* push n copies of param on the terminfo stack if not already there */
{
+ int nn;
+
if (seenr) {
if (parm == 1)
parm = 2;
@@ -239,7 +255,7 @@ getparm(int parm, int n)
parm = 1;
}
- while (n--) {
+ for (nn = 0; nn < n; ++nn) {
dp = save_string(dp, "%p");
dp = save_char(dp, '0' + parm);
}
@@ -248,7 +264,7 @@ getparm(int parm, int n)
if (n > 1) {
_nc_warning("string may not be optimal");
dp = save_string(dp, "%Pa");
- while (n--) {
+ while (n-- > 0) {
dp = save_string(dp, "%ga");
}
}
@@ -288,6 +304,8 @@ _nc_captoinfo(const char *cap, const char *s, int const parameterized)
seenr = 0;
param = 1;
+ DEBUG_THIS(("_nc_captoinfo params %d, %s", parameterized, s));
+
dp = init_string();
/* skip the initial padding (if we haven't been told not to) */
@@ -295,7 +313,7 @@ _nc_captoinfo(const char *cap, const char *s, int const parameterized)
if (s == 0)
s = "";
if (parameterized >= 0 && isdigit(UChar(*s)))
- for (capstart = s;; s++)
+ for (capstart = s; *s != '\0'; s++)
if (!(isdigit(UChar(*s)) || *s == '*' || *s == '.'))
break;
@@ -309,7 +327,7 @@ _nc_captoinfo(const char *cap, const char *s, int const parameterized)
}
switch (*s++) {
case '%':
- dp = save_char(dp, '%');
+ dp = save_string(dp, "%%");
break;
case 'r':
if (seenr++ == 1) {
@@ -342,13 +360,18 @@ _nc_captoinfo(const char *cap, const char *s, int const parameterized)
dp = save_string(dp, "%{2}%*%-");
break;
case '>':
- getparm(param, 2);
/* %?%{x}%>%t%{y}%+%; */
- dp = save_string(dp, "%?");
- s += cvtchar(s);
- dp = save_string(dp, "%>%t");
- s += cvtchar(s);
- dp = save_string(dp, "%+%;");
+ if (s[0] && s[1]) {
+ getparm(param, 2);
+ dp = save_string(dp, "%?");
+ s += cvtchar(s);
+ dp = save_string(dp, "%>%t");
+ s += cvtchar(s);
+ dp = save_string(dp, "%+%;");
+ } else {
+ _nc_warning("expected two characters after %%>");
+ dp = save_string(dp, "%>");
+ }
break;
case 'a':
if ((*s == '=' || *s == '+' || *s == '-'
@@ -429,12 +452,17 @@ _nc_captoinfo(const char *cap, const char *s, int const parameterized)
pop();
break;
case '0': /* not clear any of the historical termcaps did this */
- if (*s == '3')
+ if (*s == '3') {
+ ++s;
goto see03;
- else if (*s != '2')
- goto invalid;
- /* FALLTHRU */
+ }
+ if (*s == '2') {
+ ++s;
+ goto see02;
+ }
+ goto invalid;
case '2':
+ see02:
getparm(param, 1);
dp = save_string(dp, "%2d");
pop();
@@ -469,7 +497,8 @@ _nc_captoinfo(const char *cap, const char *s, int const parameterized)
}
break;
default:
- dp = save_char(dp, *s++);
+ if (*s != '\0')
+ dp = save_char(dp, *s++);
break;
}
}
@@ -480,7 +509,7 @@ _nc_captoinfo(const char *cap, const char *s, int const parameterized)
*/
if (capstart) {
dp = save_string(dp, "$<");
- for (s = capstart;; s++)
+ for (s = capstart; *s != '\0'; s++)
if (isdigit(UChar(*s)) || *s == '*' || *s == '.')
dp = save_char(dp, *s);
else
@@ -489,6 +518,9 @@ _nc_captoinfo(const char *cap, const char *s, int const parameterized)
}
(void) save_char(dp, '\0');
+
+ DEBUG_THIS(("... _nc_captoinfo %s", NonNull(my_string)));
+
return (my_string);
}
@@ -525,13 +557,13 @@ bcd_expression(const char *str)
static char *
save_tc_char(char *bufptr, int c1)
{
- char temp[80];
-
if (is7bits(c1) && isprint(c1)) {
if (c1 == ':' || c1 == '\\')
bufptr = save_char(bufptr, '\\');
bufptr = save_char(bufptr, c1);
} else {
+ char temp[80];
+
if (c1 == (c1 & 0x1f)) { /* iscntrl() returns T on 255 */
_nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
"%.20s", unctrl((chtype) c1));
@@ -554,6 +586,8 @@ save_tc_inequality(char *bufptr, int c1, int c2)
}
/*
+ * info-to-cap --- conversion between terminfo and termcap formats
+ *
* Here are the capabilities infotocap assumes it can translate to:
*
* %% output `%'
@@ -571,6 +605,8 @@ save_tc_inequality(char *bufptr, int c1, int c2)
* %m exclusive-or all parameters with 0177 (not in 4.4BSD)
*/
+#define octal_fixup(n, c) fixups[n].ch = ((fixups[n].ch << 3) | ((c) - '0'))
+
/*
* Convert a terminfo string to termcap format. Parameters are as in
* _nc_captoinfo().
@@ -586,7 +622,15 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
char *bufptr = init_string();
char octal[4];
int len;
+ int digits;
bool syntax_error = FALSE;
+ int myfix = 0;
+ struct {
+ int ch;
+ int offset;
+ } fixups[MAX_TC_FIXUPS];
+
+ DEBUG_THIS(("_nc_infotocap params %d, %s", parameterized, str));
/* we may have to move some trailing mandatory padding up front */
padding = str + strlen(str) - 1;
@@ -603,7 +647,9 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
bufptr = save_char(bufptr, *padding++);
}
- for (; *str && ((trimmed == 0) || (str < trimmed)); str++) {
+ for (; !syntax_error &&
+ *str &&
+ ((trimmed == 0) || (str < trimmed)); str++) {
int c1, c2;
char *cp = 0;
@@ -611,6 +657,14 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
if (str[1] == '\0' || (str + 1) == trimmed) {
bufptr = save_string(bufptr, "\\136");
++str;
+ } else if (str[1] == '?') {
+ /*
+ * Although the 4.3BSD termcap file has an instance of "kb=^?",
+ * that appears to be just cut/paste since neither 4.3BSD nor
+ * 4.4BSD termcap interprets "^?" as DEL.
+ */
+ bufptr = save_string(bufptr, "\\177");
+ ++str;
} else {
bufptr = save_char(bufptr, *str++);
bufptr = save_char(bufptr, *str);
@@ -625,17 +679,20 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
} else if (str[1] == ',') {
bufptr = save_char(bufptr, *++str);
} else {
- int xx1, xx2;
+ int xx1;
bufptr = save_char(bufptr, *str++);
xx1 = *str;
if (_nc_strict_bsd) {
- if (isdigit(UChar(xx1))) {
+
+ if (isoctal(UChar(xx1))) {
int pad = 0;
+ int xx2;
+ int fix = 0;
- if (!isdigit(UChar(str[1])))
+ if (!isoctal(UChar(str[1])))
pad = 2;
- else if (str[1] && !isdigit(UChar(str[2])))
+ else if (str[1] && !isoctal(UChar(str[2])))
pad = 1;
/*
@@ -650,10 +707,31 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
xx2 = '0';
pad = 0; /* FIXME - optionally pad to 3 digits */
}
+ if (myfix < MAX_TC_FIXUPS) {
+ fix = 3 - pad;
+ fixups[myfix].ch = 0;
+ fixups[myfix].offset = (int) (bufptr
+ - my_string
+ - 1);
+ }
while (pad-- > 0) {
bufptr = save_char(bufptr, xx2);
+ if (myfix < MAX_TC_FIXUPS) {
+ fixups[myfix].ch <<= 3;
+ fixups[myfix].ch |= (xx2 - '0');
+ }
xx2 = '0';
}
+ if (myfix < MAX_TC_FIXUPS) {
+ int n;
+ for (n = 0; n < fix; ++n) {
+ fixups[myfix].ch <<= 3;
+ fixups[myfix].ch |= (str[n] - '0');
+ }
+ if (fixups[myfix].ch < 32) {
+ ++myfix;
+ }
+ }
} else if (strchr("E\\nrtbf", xx1) == 0) {
switch (xx1) {
case 'e':
@@ -689,6 +767,24 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
break;
}
}
+ } else {
+ if (myfix < MAX_TC_FIXUPS && isoctal(UChar(xx1))) {
+ bool will_fix = TRUE;
+ int n;
+
+ fixups[myfix].ch = 0;
+ fixups[myfix].offset = (int) (bufptr - my_string - 1);
+ for (n = 0; n < 3; ++n) {
+ if (isoctal(str[n])) {
+ octal_fixup(myfix, str[n]);
+ } else {
+ will_fix = FALSE;
+ break;
+ }
+ }
+ if (will_fix && (fixups[myfix].ch < 32))
+ ++myfix;
+ }
}
bufptr = save_char(bufptr, xx1);
}
@@ -735,8 +831,9 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
} 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)
+ } else if ((sscanf(str, "%%{%d}%%+%%%c", &c1, &ch2) == 2
+ || sscanf(str, "%%'%c'%%+%%%c", &ch1, &ch2) == 2)
+ && ch2 == 'c'
&& (cp = strchr(str, '+'))) {
str = cp + 2;
bufptr = save_string(bufptr, "%+");
@@ -779,26 +876,46 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
bufptr = save_char(bufptr, '%');
ch1 = 0;
ch2 = 0;
+ digits = 0;
while (isdigit(UChar(*str))) {
+ if (++digits > 2) {
+ syntax_error = TRUE;
+ break;
+ }
ch2 = ch1;
ch1 = *str++;
- if (_nc_strict_bsd) {
- if (ch1 > '3')
- return 0;
+ if (digits == 2 && ch2 != '0') {
+ syntax_error = TRUE;
+ break;
+ } else if (_nc_strict_bsd) {
+ if (ch1 > '3') {
+ syntax_error = TRUE;
+ break;
+ }
} else {
bufptr = save_char(bufptr, ch1);
}
}
+ if (syntax_error)
+ break;
+ /*
+ * Convert %02 to %2 and %03 to %3
+ */
+ if (ch2 == '0' && !_nc_strict_bsd) {
+ ch2 = 0;
+ bufptr[-2] = bufptr[-1];
+ *--bufptr = 0;
+ }
if (_nc_strict_bsd) {
- if (ch2 != 0 && ch2 != '0')
- return 0;
- if (ch1 < '2')
+ if (ch2 != 0 && ch2 != '0') {
+ syntax_error = TRUE;
+ } else if (ch1 < '2') {
ch1 = 'd';
+ }
bufptr = save_char(bufptr, ch1);
}
- if (strchr("doxX.", *str)) {
- if (*str != 'd') /* termcap doesn't have octal, hex */
- return 0;
+ if (strchr("oxX.", *str)) {
+ syntax_error = TRUE; /* termcap doesn't have octal, hex */
}
break;
@@ -816,9 +933,11 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
* termcap notation.
*/
case 's':
- if (_nc_strict_bsd)
- return 0;
- bufptr = save_string(bufptr, "%s");
+ if (_nc_strict_bsd) {
+ syntax_error = TRUE;
+ } else {
+ bufptr = save_string(bufptr, "%s");
+ }
break;
case 'p':
@@ -830,8 +949,9 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
bufptr = save_string(bufptr, "%r");
seentwo++;
}
- } else if (*str >= '3')
- return (0);
+ } else if (*str >= '3') {
+ syntax_error = TRUE;
+ }
break;
case 'i':
@@ -855,6 +975,24 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
} /* endwhile (*str) */
+ if (!syntax_error &&
+ myfix > 0 &&
+ ((int) strlen(my_string) - (4 * myfix)) < MIN_TC_FIXUPS) {
+ while (--myfix >= 0) {
+ char *p = fixups[myfix].offset + my_string;
+ *p++ = '^';
+ *p++ = (char) (fixups[myfix].ch | '@');
+ while ((p[0] = p[2]) != '\0') {
+ ++p;
+ }
+ }
+ }
+
+ DEBUG_THIS(("... _nc_infotocap %s",
+ syntax_error
+ ? "<ERR>"
+ : _nc_visbuf(my_string)));
+
return (syntax_error ? NULL : my_string);
}
diff --git a/ncurses/tinfo/comp_error.c b/ncurses/tinfo/comp_error.c
index ff0acc799815..48ab9777a2c7 100644
--- a/ncurses/tinfo/comp_error.c
+++ b/ncurses/tinfo/comp_error.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2019 Free 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 <tic.h>
-MODULE_ID("$Id: comp_error.c,v 1.36 2012/02/22 22:34:31 tom Exp $")
+MODULE_ID("$Id: comp_error.c,v 1.39 2019/01/20 02:31:22 tom Exp $")
NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings = FALSE;
NCURSES_EXPORT_VAR(int) _nc_curr_line = 0; /* current line # in input */
@@ -66,12 +66,14 @@ _nc_set_source(const char *const name)
NCURSES_EXPORT(void)
_nc_set_type(const char *const name)
{
+#define MY_SIZE (size_t) MAX_NAME_SIZE
if (TermType == 0)
- TermType = typeMalloc(char, MAX_NAME_SIZE + 1);
+ TermType = typeMalloc(char, MY_SIZE + 1);
if (TermType != 0) {
TermType[0] = '\0';
- if (name)
- strncat(TermType, name, (size_t) MAX_NAME_SIZE);
+ if (name) {
+ _nc_STRNCAT(TermType, name, MY_SIZE, MY_SIZE);
+ }
}
}
@@ -103,7 +105,7 @@ where_is_problem(void)
}
NCURSES_EXPORT(void)
-_nc_warning(const char *const fmt,...)
+_nc_warning(const char *const fmt, ...)
{
va_list argp;
@@ -118,7 +120,7 @@ _nc_warning(const char *const fmt,...)
}
NCURSES_EXPORT(void)
-_nc_err_abort(const char *const fmt,...)
+_nc_err_abort(const char *const fmt, ...)
{
va_list argp;
@@ -131,7 +133,7 @@ _nc_err_abort(const char *const fmt,...)
}
NCURSES_EXPORT(void)
-_nc_syserr_abort(const char *const fmt,...)
+_nc_syserr_abort(const char *const fmt, ...)
{
va_list argp;
@@ -141,16 +143,18 @@ _nc_syserr_abort(const char *const fmt,...)
fprintf(stderr, "\n");
va_end(argp);
+#if defined(TRACE) || !defined(NDEBUG)
/* If we're debugging, try to show where the problem occurred - this
* will dump core.
*/
-#if defined(TRACE) || !defined(NDEBUG)
- abort();
-#else
+#ifndef USE_ROOT_ENVIRON
+ if (getuid() != ROOT_UID)
+#endif
+ abort();
+#endif
/* Dumping core in production code is not a good idea.
*/
exit(EXIT_FAILURE);
-#endif
}
#if NO_LEAKS
diff --git a/ncurses/tinfo/comp_expand.c b/ncurses/tinfo/comp_expand.c
index 2ab06ebabc89..07715579ee8e 100644
--- a/ncurses/tinfo/comp_expand.c
+++ b/ncurses/tinfo/comp_expand.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free 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> 1998 *
+ * Author: Thomas E. Dickey 1998 *
****************************************************************************/
#include <curses.priv.h>
@@ -35,7 +35,13 @@
#include <ctype.h>
#include <tic.h>
-MODULE_ID("$Id: comp_expand.c,v 1.25 2012/03/24 18:37:17 tom Exp $")
+MODULE_ID("$Id: comp_expand.c,v 1.31 2017/04/20 08:55:08 tom Exp $")
+
+#if 0
+#define DEBUG_THIS(p) DEBUG(9, p)
+#else
+#define DEBUG_THIS(p) /* nothing */
+#endif
static int
trailing_spaces(const char *src)
@@ -46,10 +52,9 @@ trailing_spaces(const char *src)
}
/* this deals with differences over whether 0x7f and 0x80..0x9f are controls */
-#define REALCTL(s) (UChar(*(s)) < 127 && iscntrl(UChar(*(s))))
#define REALPRINT(s) (UChar(*(s)) < 127 && isprint(UChar(*(s))))
-#define P_LIMIT(p) (length - (size_t)(p))
+#define P_LIMIT(p) (length - (size_t)(p))
NCURSES_EXPORT(char *)
_nc_tic_expand(const char *srcp, bool tic_format, int numbers)
@@ -59,9 +64,13 @@ _nc_tic_expand(const char *srcp, bool tic_format, int numbers)
int bufp;
const char *str = VALID_STRING(srcp) ? srcp : "\0\0";
- bool islong = (strlen(str) > 3);
size_t need = (2 + strlen(str)) * 4;
int ch;
+ int octals = 0;
+ struct {
+ int ch;
+ int offset;
+ } fixups[MAX_TC_FIXUPS];
if (srcp == 0) {
#if NO_LEAKS
@@ -77,6 +86,7 @@ _nc_tic_expand(const char *srcp, bool tic_format, int numbers)
return 0;
}
+ DEBUG_THIS(("_nc_tic_expand %s", _nc_visbuf(srcp)));
bufp = 0;
while ((ch = UChar(*str)) != 0) {
if (ch == '%' && REALPRINT(str + 1)) {
@@ -133,6 +143,8 @@ _nc_tic_expand(const char *srcp, bool tic_format, int numbers)
}
break;
default:
+ if (*str == ',') /* minitel1 uses this */
+ buffer[bufp++] = '\\';
buffer[bufp++] = *str;
break;
}
@@ -158,34 +170,28 @@ _nc_tic_expand(const char *srcp, bool tic_format, int numbers)
&& !(ch == '!' && !tic_format)
&& ch != '^'))
buffer[bufp++] = (char) ch;
-#if 0 /* FIXME: this would be more readable (in fact the whole 'islong' logic should be removed) */
- else if (ch == '\b') {
- buffer[bufp++] = '\\';
- buffer[bufp++] = 'b';
- } else if (ch == '\f') {
- buffer[bufp++] = '\\';
- buffer[bufp++] = 'f';
- } else if (ch == '\t' && islong) {
- buffer[bufp++] = '\\';
- buffer[bufp++] = 't';
- }
-#endif
- else if (ch == '\r' && (islong || (strlen(srcp) > 2 && str[1] == '\0'))) {
+ else if (ch == '\r') {
buffer[bufp++] = '\\';
buffer[bufp++] = 'r';
- } else if (ch == '\n' && islong) {
+ } else if (ch == '\n') {
buffer[bufp++] = '\\';
buffer[bufp++] = 'n';
}
#define UnCtl(c) ((c) + '@')
- else if (REALCTL(str) && ch != '\\'
- && (!islong || isdigit(UChar(str[1])))) {
+ else if (UChar(ch) < 32
+ && isdigit(UChar(str[1]))) {
_nc_SPRINTF(&buffer[bufp], _nc_SLIMIT(P_LIMIT(bufp))
"^%c", UnCtl(ch));
bufp += 2;
} else {
_nc_SPRINTF(&buffer[bufp], _nc_SLIMIT(P_LIMIT(bufp))
"\\%03o", ch);
+ if ((octals < MAX_TC_FIXUPS) &&
+ ((tic_format && (ch == 127)) || ch < 32)) {
+ fixups[octals].ch = UChar(ch);
+ fixups[octals].offset = bufp;
+ ++octals;
+ }
bufp += 4;
}
@@ -193,5 +199,26 @@ _nc_tic_expand(const char *srcp, bool tic_format, int numbers)
}
buffer[bufp] = '\0';
+
+ /*
+ * If most of a short string is ASCII control characters, reformat the
+ * string to show those in up-arrow format. For longer strings, it's
+ * more likely that the characters are just binary coding.
+ *
+ * If we're formatting termcap, just use the shorter format (up-arrows).
+ */
+ if (octals != 0 && (!tic_format || (bufp - (4 * octals)) < MIN_TC_FIXUPS)) {
+ while (--octals >= 0) {
+ char *p = buffer + fixups[octals].offset;
+ *p++ = '^';
+ *p++ = (char) ((fixups[octals].ch == 127)
+ ? '?'
+ : (fixups[octals].ch + (int) '@'));
+ while ((p[0] = p[2]) != 0) {
+ ++p;
+ }
+ }
+ }
+ DEBUG_THIS(("... %s", _nc_visbuf(buffer)));
return (buffer);
}
diff --git a/ncurses/tinfo/comp_hash.c b/ncurses/tinfo/comp_hash.c
index 959c6e156431..a62d38f9dc8d 100644
--- a/ncurses/tinfo/comp_hash.c
+++ b/ncurses/tinfo/comp_hash.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -44,7 +44,7 @@
#include <tic.h>
#include <hashsize.h>
-MODULE_ID("$Id: comp_hash.c,v 1.48 2009/08/08 17:36:21 tom Exp $")
+MODULE_ID("$Id: comp_hash.c,v 1.51 2019/10/12 16:32:13 tom Exp $")
/*
* Finds the entry for the given string in the hash table if present.
@@ -63,7 +63,9 @@ _nc_find_entry(const char *string,
hashvalue = data->hash_of(string);
- if (data->table_data[hashvalue] >= 0) {
+ if (hashvalue >= 0
+ && (unsigned) hashvalue < data->table_size
+ && data->table_data[hashvalue] >= 0) {
real_table = _nc_get_table(termcap);
ptr = real_table + data->table_data[hashvalue];
@@ -96,7 +98,9 @@ _nc_find_type_entry(const char *string,
const HashData *data = _nc_get_hash_info(termcap);
int hashvalue = data->hash_of(string);
- if (data->table_data[hashvalue] >= 0) {
+ if (hashvalue >= 0
+ && (unsigned) hashvalue < data->table_size
+ && data->table_data[hashvalue] >= 0) {
const struct name_table_entry *const table = _nc_get_table(termcap);
ptr = table + data->table_data[hashvalue];
@@ -112,3 +116,34 @@ _nc_find_type_entry(const char *string,
return ptr;
}
+
+#if NCURSES_XNAMES
+NCURSES_EXPORT(struct user_table_entry const *)
+_nc_find_user_entry(const char *string)
+{
+ const HashData *data = _nc_get_hash_user();
+ int hashvalue;
+ struct user_table_entry const *ptr = 0;
+ struct user_table_entry const *real_table;
+
+ hashvalue = data->hash_of(string);
+
+ if (hashvalue >= 0
+ && (unsigned) hashvalue < data->table_size
+ && data->table_data[hashvalue] >= 0) {
+
+ real_table = _nc_get_userdefs_table();
+ ptr = real_table + data->table_data[hashvalue];
+ while (!data->compare_names(ptr->ute_name, string)) {
+ if (ptr->ute_link < 0) {
+ ptr = 0;
+ break;
+ }
+ ptr = real_table + (ptr->ute_link
+ + data->table_data[data->table_size]);
+ }
+ }
+
+ return (ptr);
+}
+#endif /* NCURSES_XNAMES */
diff --git a/ncurses/tinfo/comp_parse.c b/ncurses/tinfo/comp_parse.c
index 82a61a52e35d..82c3fa2c950a 100644
--- a/ncurses/tinfo/comp_parse.c
+++ b/ncurses/tinfo/comp_parse.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,16 +47,12 @@
#include <tic.h>
-MODULE_ID("$Id: comp_parse.c,v 1.90 2013/08/31 15:22:31 tom Exp $")
+MODULE_ID("$Id: comp_parse.c,v 1.108 2019/12/14 22:34:35 tom Exp $")
-static void sanity_check2(TERMTYPE *, bool);
-NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype2) (TERMTYPE *, bool) = sanity_check2;
+static void sanity_check2(TERMTYPE2 *, bool);
+NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype2) (TERMTYPE2 *, bool) = sanity_check2;
-/* obsolete: 20040705 */
-static void sanity_check(TERMTYPE *);
-NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype) (TERMTYPE *) = sanity_check;
-
-static void fixup_acsc(TERMTYPE *, int);
+static void fixup_acsc(TERMTYPE2 *, int);
static void
enqueue(ENTRY * ep)
@@ -75,6 +71,8 @@ enqueue(ENTRY * ep)
newp->last->next = newp;
}
+#define NAMEBUFFER_SIZE (MAX_NAME_SIZE + 2)
+
static char *
force_bar(char *dst, char *src)
{
@@ -82,8 +80,8 @@ force_bar(char *dst, char *src)
size_t len = strlen(src);
if (len > MAX_NAME_SIZE)
len = MAX_NAME_SIZE;
- (void) strncpy(dst, src, len);
- _nc_STRCPY(dst + len, "|", MAX_NAME_SIZE);
+ _nc_STRNCPY(dst, src, MAX_NAME_SIZE);
+ _nc_STRCPY(dst + len, "|", NAMEBUFFER_SIZE - len);
src = dst;
}
return src;
@@ -107,8 +105,8 @@ static bool
check_collisions(char *n1, char *n2, int counter)
{
char *pstart, *qstart, *pend, *qend;
- char nc1[MAX_NAME_SIZE + 2];
- char nc2[MAX_NAME_SIZE + 2];
+ char nc1[NAMEBUFFER_SIZE];
+ char nc2[NAMEBUFFER_SIZE];
n1 = ForceBar(nc1, n1);
n2 = ForceBar(nc2, n2);
@@ -182,11 +180,11 @@ remove_collision(char *n1, char *n2)
++qend;
while ((*qstart++ = *qend++) != '\0') ;
fprintf(stderr, "...now\t%s\n", p2);
+ removed = TRUE;
} else {
fprintf(stderr, "Cannot remove alias '%.*s'\n",
(int) (qend - qstart), qstart);
}
- removed = TRUE;
break;
}
}
@@ -267,6 +265,126 @@ _nc_read_entry_source(FILE *fp, char *buf,
_nc_suppress_warnings = oldsuppress;
}
+#if NCURSES_XNAMES
+static unsigned
+find_capname(TERMTYPE2 *p, const char *name)
+{
+ unsigned num_names = NUM_EXT_NAMES(p);
+ unsigned n;
+ if (name != 0) {
+ for (n = 0; n < num_names; ++n) {
+ if (!strcmp(p->ext_Names[n], name))
+ break;
+ }
+ } else {
+ n = num_names + 1;
+ }
+ return n;
+}
+
+static int
+extended_captype(TERMTYPE2 *p, unsigned which)
+{
+ int result = UNDEF;
+ unsigned limit = 0;
+ limit += p->ext_Booleans;
+ if (limit != 0 && which < limit) {
+ result = BOOLEAN;
+ } else {
+ limit += p->ext_Numbers;
+ if (limit != 0 && which < limit) {
+ result = NUMBER;
+ } else {
+ limit += p->ext_Strings;
+ if (limit != 0 && which < limit) {
+ result = STRING;
+ } else if (which >= limit) {
+ result = CANCEL;
+ }
+ }
+ }
+ return result;
+}
+
+static const char *
+name_of_captype(int which)
+{
+ const char *result = "?";
+ switch (which) {
+ case BOOLEAN:
+ result = "boolean";
+ break;
+ case NUMBER:
+ result = "number";
+ break;
+ case STRING:
+ result = "string";
+ break;
+ }
+ return result;
+}
+
+#define valid_TERMTYPE2(p) \
+ ((p) != 0 && \
+ (p)->term_names != 0 && \
+ (p)->ext_Names != 0)
+
+/*
+ * Disallow changing the type of an extended capability when doing a "use"
+ * if one or the other is a string.
+ */
+static int
+invalid_merge(TERMTYPE2 *to, TERMTYPE2 *from)
+{
+ int rc = FALSE;
+ if (valid_TERMTYPE2(to)
+ && valid_TERMTYPE2(from)) {
+ char *to_name = _nc_first_name(to->term_names);
+ char *from_name = strdup(_nc_first_name(from->term_names));
+ unsigned num_names = NUM_EXT_NAMES(from);
+ unsigned n;
+
+ for (n = 0; n < num_names; ++n) {
+ const char *capname = from->ext_Names[n];
+ int tt = extended_captype(to, find_capname(to, capname));
+ int tf = extended_captype(from, n);
+
+ if (tt <= STRING
+ && tf <= STRING
+ && (tt == STRING) != (tf == STRING)) {
+ if (from_name != 0 && strcmp(to_name, from_name)) {
+ DEBUG(2,
+ ("merge of %s to %s changes type of %s from %s to %s",
+ from_name,
+ to_name,
+ from->ext_Names[n],
+ name_of_captype(tf),
+ name_of_captype(tt)));
+ } else {
+ DEBUG(2, ("merge of %s changes type of %s from %s to %s",
+ to_name,
+ from->ext_Names[n],
+ name_of_captype(tf),
+ name_of_captype(tt)));
+ }
+ _nc_warning("merge changes type of %s from %s to %s",
+ from->ext_Names[n],
+ name_of_captype(tf),
+ name_of_captype(tt));
+ rc = TRUE;
+ }
+ }
+ free(from_name);
+ }
+ return rc;
+}
+#define validate_merge(p, q) \
+ if (invalid_merge(&((p)->tterm), &((q)->tterm))) \
+ return FALSE
+#else
+#define validate_merge(p, q) /* nothing */
+#endif
+
NCURSES_EXPORT(int)
_nc_resolve_uses2(bool fullresolve, bool literal)
/* try to resolve all use capabilities */
@@ -319,6 +437,9 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
char *lookfor = qp->uses[i].name;
long lookline = qp->uses[i].line;
+ if (lookfor == 0)
+ continue;
+
foundit = FALSE;
_nc_set_type(child);
@@ -337,11 +458,11 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
/* if that didn't work, try to merge in a compiled entry */
if (!foundit) {
- TERMTYPE thisterm;
+ TERMTYPE2 thisterm;
char filename[PATH_MAX];
memset(&thisterm, 0, sizeof(thisterm));
- if (_nc_read_entry(lookfor, filename, &thisterm) == 1) {
+ if (_nc_read_entry2(lookfor, filename, &thisterm) == 1) {
DEBUG(2, ("%s: resolving use=%s (compiled)",
child, lookfor));
@@ -382,7 +503,7 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
*/
if (fullresolve) {
do {
- TERMTYPE merged;
+ ENTRY merged;
keepgoing = FALSE;
@@ -396,7 +517,8 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
* subsequent pass.
*/
for (i = 0; i < qp->nuses; i++)
- if (qp->uses[i].link->nuses) {
+ if (qp->uses[i].link
+ && qp->uses[i].link->nuses) {
DEBUG(2, ("%s: use entry %d unresolved",
_nc_first_name(qp->tterm.term_names), i));
goto incomplete;
@@ -408,20 +530,24 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
* the merged entry the name field and string
* table pointer.
*/
- _nc_copy_termtype(&merged, &(qp->tterm));
+ _nc_copy_termtype2(&(merged.tterm), &(qp->tterm));
/*
* Now merge in each use entry in the proper
* (reverse) order.
*/
- for (; qp->nuses; qp->nuses--)
+ for (; qp->nuses; qp->nuses--) {
+ validate_merge(&merged,
+ qp->uses[qp->nuses - 1].link);
_nc_merge_entry(&merged,
- &qp->uses[qp->nuses - 1].link->tterm);
+ qp->uses[qp->nuses - 1].link);
+ }
/*
* Now merge in the original entry.
*/
- _nc_merge_entry(&merged, &qp->tterm);
+ validate_merge(&merged, qp);
+ _nc_merge_entry(&merged, qp);
/*
* Replace the original entry with the merged one.
@@ -432,7 +558,7 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
#if NCURSES_XNAMES
FreeIfNeeded(qp->tterm.ext_Names);
#endif
- qp->tterm = merged;
+ qp->tterm = merged.tterm;
_nc_wrap_entry(qp, TRUE);
/*
@@ -459,54 +585,46 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
DEBUG(2, ("RESOLUTION FINISHED"));
- if (fullresolve)
- if (_nc_check_termtype != 0) {
- _nc_curr_col = -1;
- for_entry_list(qp) {
- _nc_curr_line = (int) qp->startline;
- _nc_set_type(_nc_first_name(qp->tterm.term_names));
+ if (fullresolve) {
+ _nc_curr_col = -1;
+ for_entry_list(qp) {
+ _nc_curr_line = (int) qp->startline;
+ _nc_set_type(_nc_first_name(qp->tterm.term_names));
+ /*
+ * tic overrides this function pointer to provide more verbose
+ * checking.
+ */
+ if (_nc_check_termtype2 != sanity_check2) {
+ SCREEN *save_SP = SP;
+ SCREEN fake_sp;
+ TERMINAL fake_tm;
+ TERMINAL *save_tm = cur_term;
+
/*
- * tic overrides this function pointer to provide more verbose
- * checking.
+ * Setup so that tic can use ordinary terminfo interface to
+ * obtain capability information.
*/
- if (_nc_check_termtype2 != sanity_check2) {
- SCREEN *save_SP = SP;
- SCREEN fake_sp;
- TERMINAL fake_tm;
- TERMINAL *save_tm = cur_term;
-
- /*
- * Setup so that tic can use ordinary terminfo interface
- * to obtain capability information.
- */
- memset(&fake_sp, 0, sizeof(fake_sp));
- memset(&fake_tm, 0, sizeof(fake_tm));
- fake_sp._term = &fake_tm;
- fake_tm.type = qp->tterm;
- _nc_set_screen(&fake_sp);
- set_curterm(&fake_tm);
-
- _nc_check_termtype2(&qp->tterm, literal);
-
- _nc_set_screen(save_SP);
- set_curterm(save_tm);
- } else {
- fixup_acsc(&qp->tterm, literal);
- }
+ memset(&fake_sp, 0, sizeof(fake_sp));
+ memset(&fake_tm, 0, sizeof(fake_tm));
+ fake_sp._term = &fake_tm;
+ TerminalType(&fake_tm) = qp->tterm;
+ _nc_set_screen(&fake_sp);
+ set_curterm(&fake_tm);
+
+ _nc_check_termtype2(&qp->tterm, literal);
+
+ _nc_set_screen(save_SP);
+ set_curterm(save_tm);
+ } else {
+ fixup_acsc(&qp->tterm, literal);
}
- DEBUG(2, ("SANITY CHECK FINISHED"));
}
+ DEBUG(2, ("SANITY CHECK FINISHED"));
+ }
return (TRUE);
}
-/* obsolete: 20040705 */
-NCURSES_EXPORT(int)
-_nc_resolve_uses(bool fullresolve)
-{
- return _nc_resolve_uses2(fullresolve, FALSE);
-}
-
/*
* This bit of legerdemain turns all the terminfo variable names into
* references to locations in the arrays Booleans, Numbers, and Strings ---
@@ -517,18 +635,18 @@ _nc_resolve_uses(bool fullresolve)
#define CUR tp->
static void
-fixup_acsc(TERMTYPE *tp, int literal)
+fixup_acsc(TERMTYPE2 *tp, int literal)
{
if (!literal) {
- if (acs_chars == 0
- && enter_alt_charset_mode != 0
- && exit_alt_charset_mode != 0)
+ if (acs_chars == ABSENT_STRING
+ && PRESENT(enter_alt_charset_mode)
+ && PRESENT(exit_alt_charset_mode))
acs_chars = strdup(VT_ACSC);
}
}
static void
-sanity_check2(TERMTYPE *tp, bool literal)
+sanity_check2(TERMTYPE2 *tp, bool literal)
{
if (!PRESENT(exit_attribute_mode)) {
#ifdef __UNUSED__ /* this casts too wide a net */
@@ -547,7 +665,9 @@ sanity_check2(TERMTYPE *tp, bool literal)
#endif /* __UNUSED__ */
PAIRED(enter_standout_mode, exit_standout_mode);
PAIRED(enter_underline_mode, exit_underline_mode);
+#if defined(enter_italics_mode) && defined(exit_italics_mode)
PAIRED(enter_italics_mode, exit_italics_mode);
+#endif
}
/* we do this check/fix in postprocess_termcap(), but some packagers
@@ -578,23 +698,18 @@ sanity_check2(TERMTYPE *tp, bool literal)
PAIRED(enter_xon_mode, exit_xon_mode);
PAIRED(enter_am_mode, exit_am_mode);
ANDMISSING(label_off, label_on);
-#ifdef remove_clock
+#if defined(display_clock) && defined(remove_clock)
PAIRED(display_clock, remove_clock);
#endif
ANDMISSING(set_color_pair, initialize_pair);
}
-/* obsolete: 20040705 */
-static void
-sanity_check(TERMTYPE *tp)
-{
- sanity_check2(tp, FALSE);
-}
-
#if NO_LEAKS
NCURSES_EXPORT(void)
_nc_leaks_tic(void)
{
+ T((T_CALLED("_nc_free_tic()")));
+ _nc_globals.leak_checking = TRUE;
_nc_alloc_entry_leaks();
_nc_captoinfo_leaks();
_nc_comp_scan_leaks();
@@ -609,6 +724,6 @@ NCURSES_EXPORT(void)
_nc_free_tic(int code)
{
_nc_leaks_tic();
- _nc_free_tinfo(code);
+ exit_terminfo(code);
}
#endif
diff --git a/ncurses/tinfo/comp_scan.c b/ncurses/tinfo/comp_scan.c
index fe6e8e7631ce..b2072577a499 100644
--- a/ncurses/tinfo/comp_scan.c
+++ b/ncurses/tinfo/comp_scan.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -50,7 +50,7 @@
#include <ctype.h>
#include <tic.h>
-MODULE_ID("$Id: comp_scan.c,v 1.102 2013/11/16 19:57:50 tom Exp $")
+MODULE_ID("$Id: comp_scan.c,v 1.108 2017/08/25 22:57:21 tom Exp $")
/*
* Maximum length of string capability we'll accept before raising an error.
@@ -168,6 +168,8 @@ next_char(void)
if (result != 0) {
FreeAndNull(result);
FreeAndNull(pushname);
+ bufptr = 0;
+ bufstart = 0;
allocated = 0;
}
/*
@@ -189,12 +191,11 @@ next_char(void)
* quite hard to get completely right. Try it and see. If you
* succeed, don't forget to hack push_back() correspondingly.
*/
- size_t used;
size_t len;
do {
+ size_t used = 0;
bufstart = 0;
- used = 0;
do {
if (used + (LEXBUFSIZ / 4) >= allocated) {
allocated += (allocated + LEXBUFSIZ);
@@ -223,6 +224,8 @@ next_char(void)
}
if ((bufptr = bufstart) != 0) {
used = strlen(bufptr);
+ if (used == 0)
+ return (EOF);
while (iswhite(*bufptr)) {
if (*bufptr == '\t') {
_nc_curr_col = (_nc_curr_col | 7) + 1;
@@ -669,7 +672,15 @@ _nc_get_token(bool silent)
if (numchk == numbuf)
_nc_warning("no value given for `%s'", tok_buf);
if ((*numchk != '\0') || (ch != separator))
- _nc_warning("Missing separator");
+ _nc_warning("Missing separator for `%s'", tok_buf);
+ if (number < 0)
+ _nc_warning("value of `%s' cannot be negative", tok_buf);
+ if (number > MAX_OF_TYPE(NCURSES_INT2)) {
+ _nc_warning("limiting value of `%s' from %#lx to %#x",
+ tok_buf,
+ number, MAX_OF_TYPE(NCURSES_INT2));
+ number = MAX_OF_TYPE(NCURSES_INT2);
+ }
}
_nc_curr_token.tk_name = tok_buf;
_nc_curr_token.tk_valnumber = (int) number;
@@ -810,8 +821,6 @@ _nc_trans_string(char *ptr, char *last)
}
if (c == '?' && (_nc_syntax != SYN_TERMCAP)) {
*(ptr++) = '\177';
- if (_nc_tracing)
- _nc_warning("Allow ^? as synonym for \\177");
} else {
if ((c &= 037) == 0)
c = 128;
@@ -824,8 +833,6 @@ _nc_trans_string(char *ptr, char *last)
if (c == EOF)
_nc_err_abort(MSG_NO_INPUTS);
-#define isoctal(c) ((c) >= '0' && (c) <= '7')
-
if (isoctal(c) || (strict_bsd && isdigit(c))) {
number = c - '0';
for (i = 0; i < 2; i++) {
@@ -990,10 +997,8 @@ _nc_push_token(int tokclass)
NCURSES_EXPORT(void)
_nc_panic_mode(char ch)
{
- int c;
-
for (;;) {
- c = next_char();
+ int c = next_char();
if (c == ch)
return;
if (c == EOF)
diff --git a/ncurses/tinfo/db_iterator.c b/ncurses/tinfo/db_iterator.c
index a14fb2161e01..a9d4e7bbfed0 100644
--- a/ncurses/tinfo/db_iterator.c
+++ b/ncurses/tinfo/db_iterator.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2006-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2006-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,7 +43,7 @@
#include <hashed_db.h>
#endif
-MODULE_ID("$Id: db_iterator.c,v 1.38 2013/12/14 21:23:20 tom Exp $")
+MODULE_ID("$Id: db_iterator.c,v 1.47 2018/11/24 22:42:01 tom Exp $")
#define HaveTicDirectory _nc_globals.have_tic_directory
#define KeepTicDirectory _nc_globals.keep_tic_directory
@@ -72,15 +72,18 @@ check_existence(const char *name, struct stat *sb)
{
bool result = FALSE;
- if (stat(name, sb) == 0
- && (S_ISDIR(sb->st_mode) || S_ISREG(sb->st_mode))) {
+ if (quick_prefix(name)) {
+ result = TRUE;
+ } else if (stat(name, sb) == 0
+ && (S_ISDIR(sb->st_mode)
+ || (S_ISREG(sb->st_mode) && sb->st_size))) {
result = TRUE;
}
#if USE_HASHED_DB
else if (strlen(name) < PATH_MAX - sizeof(DBM_SUFFIX)) {
char temp[PATH_MAX];
_nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "%s%s", name, DBM_SUFFIX);
- if (stat(temp, sb) == 0 && S_ISREG(sb->st_mode)) {
+ if (stat(temp, sb) == 0 && S_ISREG(sb->st_mode) && sb->st_size) {
result = TRUE;
}
}
@@ -89,6 +92,27 @@ check_existence(const char *name, struct stat *sb)
}
/*
+ * Trim newlines (and backslashes preceding those) and tab characters to
+ * help simplify scripting of the quick-dump feature. Leave spaces and
+ * other backslashes alone.
+ */
+static void
+trim_formatting(char *source)
+{
+ char *target = source;
+ char ch;
+
+ while ((ch = *source++) != '\0') {
+ if (ch == '\\' && *source == '\n')
+ continue;
+ if (ch == '\n' || ch == '\t')
+ continue;
+ *target++ = ch;
+ }
+ *target = '\0';
+}
+
+/*
* Store the latest value of an environment variable in my_vars[] so we can
* detect if one changes, invalidating the cached search-list.
*/
@@ -99,19 +123,21 @@ update_getenv(const char *name, DBDIRS which)
if (which < dbdLAST) {
char *value;
+ char *cached_value = my_vars[which].value;
+ bool same_value;
- if ((value = getenv(name)) == 0 || (value = strdup(value)) == 0) {
- ;
- } else if (my_vars[which].name == 0 || strcmp(my_vars[which].name, name)) {
- FreeIfNeeded(my_vars[which].value);
- my_vars[which].name = name;
- my_vars[which].value = value;
- result = TRUE;
- } else if ((my_vars[which].value != 0) ^ (value != 0)) {
- FreeIfNeeded(my_vars[which].value);
- my_vars[which].value = value;
- result = TRUE;
- } else if (value != 0 && strcmp(value, my_vars[which].value)) {
+ if ((value = getenv(name)) != 0) {
+ value = strdup(value);
+ }
+ same_value = ((value == 0 && cached_value == 0) ||
+ (value != 0 &&
+ cached_value != 0 &&
+ strcmp(value, cached_value) == 0));
+
+ /* Set variable name to enable checks in cache_expired(). */
+ my_vars[which].name = name;
+
+ if (!same_value) {
FreeIfNeeded(my_vars[which].value);
my_vars[which].value = value;
result = TRUE;
@@ -122,6 +148,7 @@ update_getenv(const char *name, DBDIRS which)
return result;
}
+#if NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP
static char *
cache_getenv(const char *name, DBDIRS which)
{
@@ -133,6 +160,7 @@ cache_getenv(const char *name, DBDIRS which)
}
return result;
}
+#endif
/*
* The cache expires if at least a second has passed since the initial lookup,
@@ -187,7 +215,7 @@ _nc_tic_dir(const char *path)
HaveTicDirectory = TRUE;
} else if (HaveTicDirectory == 0) {
if (use_terminfo_vars()) {
- char *envp;
+ const char *envp;
if ((envp = getenv("TERMINFO")) != 0)
return _nc_tic_dir(envp);
}
@@ -251,7 +279,7 @@ _nc_first_db(DBDIRS * state, int *offset)
*state = dbdTIC;
*offset = 0;
- T(("_nc_first_db"));
+ T((T_CALLED("_nc_first_db")));
/* build a blob containing all of the strings we will use for a lookup
* table.
@@ -260,7 +288,7 @@ _nc_first_db(DBDIRS * state, int *offset)
size_t blobsize = 0;
const char *values[dbdLAST];
struct stat *my_stat;
- int j, k;
+ int j;
if (cache_has_expired)
free_cache();
@@ -330,10 +358,12 @@ _nc_first_db(DBDIRS * state, int *offset)
my_list = typeCalloc(char *, blobsize);
my_stat = typeCalloc(struct stat, blobsize);
if (my_list != 0 && my_stat != 0) {
- k = 0;
+ int k = 0;
my_list[k++] = my_blob;
for (j = 0; my_blob[j] != '\0'; ++j) {
- if (my_blob[j] == NCURSES_PATHSEP) {
+ if (my_blob[j] == NCURSES_PATHSEP
+ && ((&my_blob[j] - my_list[k - 1]) != 3
+ || !quick_prefix(my_list[k - 1]))) {
my_blob[j] = '\0';
my_list[k++] = &my_blob[j + 1];
}
@@ -347,8 +377,10 @@ _nc_first_db(DBDIRS * state, int *offset)
if (*my_list[j] == '\0')
my_list[j] = strdup(TERMINFO);
#endif
+ trim_formatting(my_list[j]);
for (k = 0; k < j; ++k) {
if (!strcmp(my_list[j], my_list[k])) {
+ T(("duplicate %s", my_list[j]));
k = j - 1;
while ((my_list[j] = my_list[j + 1]) != 0) {
++j;
@@ -377,6 +409,7 @@ _nc_first_db(DBDIRS * state, int *offset)
}
#endif
if (!found) {
+ T(("not found %s", my_list[j]));
k = j;
while ((my_list[k] = my_list[k + 1]) != 0) {
++k;
@@ -392,6 +425,7 @@ _nc_first_db(DBDIRS * state, int *offset)
free(my_stat);
}
}
+ returnVoid;
}
#if NO_LEAKS
diff --git a/ncurses/tinfo/entries.c b/ncurses/tinfo/entries.c
index e84033d47f1d..794c519b8884 100644
--- a/ncurses/tinfo/entries.c
+++ b/ncurses/tinfo/entries.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2006-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2006-2017,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include <tic.h>
-MODULE_ID("$Id: entries.c,v 1.21 2012/05/05 20:33:44 tom Exp $")
+MODULE_ID("$Id: entries.c,v 1.29 2019/12/15 00:18:03 tom Exp $")
/****************************************************************************
*
@@ -63,30 +63,8 @@ MODULE_ID("$Id: entries.c,v 1.21 2012/05/05 20:33:44 tom Exp $")
NCURSES_EXPORT_VAR(ENTRY *) _nc_head = 0;
NCURSES_EXPORT_VAR(ENTRY *) _nc_tail = 0;
-NCURSES_EXPORT(void)
-_nc_free_entry(ENTRY * headp, TERMTYPE *tterm)
-/* free the allocated storage consumed by the given list entry */
-{
- ENTRY *ep;
-
- if ((ep = _nc_delink_entry(headp, tterm)) != 0) {
- free(ep);
- }
-}
-
-NCURSES_EXPORT(void)
-_nc_free_entries(ENTRY * headp)
-/* free the allocated storage consumed by list entries */
-{
- (void) headp; /* unused - _nc_head is altered here! */
-
- while (_nc_head != 0) {
- _nc_free_termtype(&(_nc_head->tterm));
- }
-}
-
-NCURSES_EXPORT(ENTRY *)
-_nc_delink_entry(ENTRY * headp, TERMTYPE *tterm)
+static ENTRY *
+_nc_delink_entry(ENTRY * headp, TERMTYPE2 *tterm)
/* delink the allocated storage for the given list entry */
{
ENTRY *ep, *last;
@@ -112,6 +90,28 @@ _nc_delink_entry(ENTRY * headp, TERMTYPE *tterm)
}
NCURSES_EXPORT(void)
+_nc_free_entry(ENTRY * headp, TERMTYPE2 *tterm)
+/* free the allocated storage consumed by the given list entry */
+{
+ ENTRY *ep;
+
+ if ((ep = _nc_delink_entry(headp, tterm)) != 0) {
+ free(ep);
+ }
+}
+
+NCURSES_EXPORT(void)
+_nc_free_entries(ENTRY * headp)
+/* free the allocated storage consumed by list entries */
+{
+ (void) headp; /* unused - _nc_head is altered here! */
+
+ while (_nc_head != 0) {
+ _nc_free_termtype2(&(_nc_head->tterm));
+ }
+}
+
+NCURSES_EXPORT(void)
_nc_leaks_tinfo(void)
{
#if NO_LEAKS
@@ -120,14 +120,17 @@ _nc_leaks_tinfo(void)
T((T_CALLED("_nc_free_tinfo()")));
#if NO_LEAKS
+ _nc_globals.leak_checking = TRUE;
_nc_free_tparm();
_nc_tgetent_leaks();
if (TerminalOf(CURRENT_SCREEN) != 0) {
del_curterm(TerminalOf(CURRENT_SCREEN));
}
+ _nc_forget_prescr();
_nc_comp_captab_leaks();
+ _nc_comp_userdefs_leaks();
_nc_free_entries(_nc_head);
_nc_get_type(0);
_nc_first_name(0);
@@ -144,7 +147,8 @@ _nc_leaks_tinfo(void)
free(s);
#ifdef TRACE
- trace(0);
+ T((T_RETURN("")));
+ curses_trace(0);
_nc_trace_buf(-1, (size_t) 0);
#endif
@@ -160,3 +164,12 @@ _nc_free_tinfo(int code)
exit(code);
}
#endif
+
+NCURSES_EXPORT(void)
+exit_terminfo(int code)
+{
+#if NO_LEAKS
+ _nc_leaks_tinfo();
+#endif
+ exit(code);
+}
diff --git a/ncurses/tinfo/free_ttype.c b/ncurses/tinfo/free_ttype.c
index ad056ba4545b..351cda933c75 100644
--- a/ncurses/tinfo/free_ttype.c
+++ b/ncurses/tinfo/free_ttype.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2011,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,25 +42,46 @@
#include <tic.h>
-MODULE_ID("$Id: free_ttype.c,v 1.15 2011/02/06 01:08:31 tom Exp $")
+MODULE_ID("$Id: free_ttype.c,v 1.17 2017/04/13 01:06:04 tom Exp $")
-NCURSES_EXPORT(void)
-_nc_free_termtype(TERMTYPE *ptr)
+static void
+really_free_termtype(TERMTYPE2 *ptr, bool freeStrings)
{
T(("_nc_free_termtype(%s)", ptr->term_names));
- FreeIfNeeded(ptr->str_table);
+ if (freeStrings) {
+ FreeIfNeeded(ptr->str_table);
+ }
FreeIfNeeded(ptr->Booleans);
FreeIfNeeded(ptr->Numbers);
FreeIfNeeded(ptr->Strings);
#if NCURSES_XNAMES
- FreeIfNeeded(ptr->ext_str_table);
+ if (freeStrings) {
+ FreeIfNeeded(ptr->ext_str_table);
+ }
FreeIfNeeded(ptr->ext_Names);
#endif
memset(ptr, 0, sizeof(TERMTYPE));
_nc_free_entry(_nc_head, ptr);
}
+/*
+ * This entrypoint is used by tack.
+ */
+NCURSES_EXPORT(void)
+_nc_free_termtype(TERMTYPE *ptr)
+{
+ really_free_termtype((TERMTYPE2 *) ptr, !NCURSES_EXT_NUMBERS);
+}
+
+#if NCURSES_EXT_NUMBERS
+NCURSES_EXPORT(void)
+_nc_free_termtype2(TERMTYPE2 *ptr)
+{
+ really_free_termtype(ptr, TRUE);
+}
+#endif
+
#if NCURSES_XNAMES
NCURSES_EXPORT_VAR(bool) _nc_user_definable = TRUE;
diff --git a/ncurses/tinfo/getenv_num.c b/ncurses/tinfo/getenv_num.c
index d5e35cb46638..d3d257221cd7 100644
--- a/ncurses/tinfo/getenv_num.c
+++ b/ncurses/tinfo/getenv_num.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -36,7 +36,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: getenv_num.c,v 1.6 2013/09/28 20:25:08 tom Exp $")
+MODULE_ID("$Id: getenv_num.c,v 1.7 2018/06/30 19:54:49 tom Exp $")
NCURSES_EXPORT(int)
_nc_getenv_num(const char *name)
@@ -68,6 +68,8 @@ _nc_setenv_num(const char *name, int value)
_nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) "%s=%d", name, value);
if ((s = strdup(buffer)) != 0)
putenv(s);
+#else
+#error expected setenv/putenv functions
#endif
}
}
diff --git a/ncurses/tinfo/hashed_db.c b/ncurses/tinfo/hashed_db.c
index b59420585eac..cc8c9d4893cd 100644
--- a/ncurses/tinfo/hashed_db.c
+++ b/ncurses/tinfo/hashed_db.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2006-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2006-2013,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -36,7 +36,7 @@
#if USE_HASHED_DB
-MODULE_ID("$Id: hashed_db.c,v 1.17 2013/12/15 00:33:01 tom Exp $")
+MODULE_ID("$Id: hashed_db.c,v 1.18 2019/01/21 17:34:49 tom Exp $")
#if HASHED_DB_API >= 2
static DBC *cursor;
@@ -273,7 +273,7 @@ _nc_db_next(DB * db, DBT * key, DBT * data)
result = -1;
}
#else
- result = db->seq(db, key, data, 0);
+ result = db->seq(db, key, data, R_NEXT);
#endif
return result;
}
diff --git a/ncurses/tinfo/home_terminfo.c b/ncurses/tinfo/home_terminfo.c
index e77f71c2aeb1..5c2869d4800f 100644
--- a/ncurses/tinfo/home_terminfo.c
+++ b/ncurses/tinfo/home_terminfo.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2016 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include <curses.priv.h>
#include <tic.h>
-MODULE_ID("$Id: home_terminfo.c,v 1.15 2012/10/27 21:49:14 tom Exp $")
+MODULE_ID("$Id: home_terminfo.c,v 1.16 2016/05/28 23:22:52 tom Exp $")
/* ncurses extension...fall back on user's private directory */
@@ -48,10 +48,11 @@ _nc_home_terminfo(void)
{
char *result = 0;
#if USE_HOME_TERMINFO
- char *home;
-
if (use_terminfo_vars()) {
+
if (MyBuffer == 0) {
+ char *home;
+
if ((home = getenv("HOME")) != 0) {
size_t want = (strlen(home) + sizeof(PRIVATE_INFO));
TYPE_MALLOC(char, want, MyBuffer);
diff --git a/ncurses/tinfo/init_keytry.c b/ncurses/tinfo/init_keytry.c
index ea47b382b493..4853ea120172 100644
--- a/ncurses/tinfo/init_keytry.c
+++ b/ncurses/tinfo/init_keytry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2010,2016 Free 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 @@
#include <curses.priv.h>
#include <tic.h> /* struct tinfo_fkeys */
-MODULE_ID("$Id: init_keytry.c,v 1.17 2010/04/24 22:29:56 tom Exp $")
+MODULE_ID("$Id: init_keytry.c,v 1.18 2016/05/28 23:22:52 tom Exp $")
/*
** _nc_init_keytry()
@@ -66,14 +66,14 @@ _nc_tinfo_fkeysf(void)
NCURSES_EXPORT(void)
_nc_init_keytry(SCREEN *sp)
{
- unsigned n;
-
/* The sp->_keytry value is initialized in newterm(), where the sp
* structure is created, because we can not tell where keypad() or
* mouse_activate() (which will call keyok()) are first called.
*/
if (sp != 0) {
+ unsigned n;
+
for (n = 0; _nc_tinfo_fkeys[n].code; n++) {
if (_nc_tinfo_fkeys[n].offset < STRCOUNT) {
(void) _nc_add_to_try(&(sp->_keytry),
diff --git a/ncurses/tinfo/lib_acs.c b/ncurses/tinfo/lib_acs.c
index 704eda5c9a29..9e74f9f7dd65 100644
--- a/ncurses/tinfo/lib_acs.c
+++ b/ncurses/tinfo/lib_acs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_acs.c,v 1.44 2013/01/12 17:24:42 tom Exp $")
+MODULE_ID("$Id: lib_acs.c,v 1.49 2019/06/23 16:22:10 tom Exp $")
#if BROKEN_LINKER || USE_REENTRANT
#define MyBuffer _nc_prescreen.real_acs_map
@@ -166,12 +166,12 @@ NCURSES_SP_NAME(_nc_init_acs) (NCURSES_SP_DCL0)
real_map['E'] = '+'; /* large plus or crossover */
#ifdef USE_TERM_DRIVER
- CallDriver_2(SP_PARM, initacs, real_map, fake_map);
+ CallDriver_2(SP_PARM, td_initacs, real_map, fake_map);
#else
if (ena_acs != NULL) {
NCURSES_PUTP2("ena_acs", ena_acs);
}
-#if NCURSES_EXT_FUNCS
+#if NCURSES_EXT_FUNCS && defined(enter_pc_charset_mode) && defined(exit_pc_charset_mode)
/*
* Linux console "supports" the "PC ROM" character set by the coincidence
* that smpch/rmpch and smacs/rmacs have the same values. ncurses has
@@ -205,8 +205,13 @@ NCURSES_SP_NAME(_nc_init_acs) (NCURSES_SP_DCL0)
while (i + 1 < length) {
if (acs_chars[i] != 0 && UChar(acs_chars[i]) < ACS_LEN) {
real_map[UChar(acs_chars[i])] = UChar(acs_chars[i + 1]) | A_ALTCHARSET;
- if (SP != 0)
+ T(("#%d real_map[%s] = %s",
+ (int) i,
+ _tracechar(UChar(acs_chars[i])),
+ _tracechtype(real_map[UChar(acs_chars[i])])));
+ if (SP != 0) {
SP->_screen_acs_map[UChar(acs_chars[i])] = TRUE;
+ }
}
i += 2;
}
@@ -249,3 +254,72 @@ _nc_init_acs(void)
NCURSES_SP_NAME(_nc_init_acs) (CURRENT_SCREEN);
}
#endif
+
+#if !NCURSES_WCWIDTH_GRAPHICS
+NCURSES_EXPORT(int)
+_nc_wacs_width(unsigned ch)
+{
+ int result;
+ switch (ch) {
+ case 0x00a3: /* FALLTHRU - ncurses pound-sterling symbol */
+ case 0x00b0: /* FALLTHRU - VT100 degree symbol */
+ case 0x00b1: /* FALLTHRU - VT100 plus/minus */
+ case 0x00b7: /* FALLTHRU - VT100 bullet */
+ case 0x03c0: /* FALLTHRU - ncurses greek pi */
+ case 0x2190: /* FALLTHRU - Teletype arrow pointing left */
+ case 0x2191: /* FALLTHRU - Teletype arrow pointing up */
+ case 0x2192: /* FALLTHRU - Teletype arrow pointing right */
+ case 0x2193: /* FALLTHRU - Teletype arrow pointing down */
+ case 0x2260: /* FALLTHRU - ncurses not-equal */
+ case 0x2264: /* FALLTHRU - ncurses less-than-or-equal-to */
+ case 0x2265: /* FALLTHRU - ncurses greater-than-or-equal-to */
+ case 0x23ba: /* FALLTHRU - VT100 scan line 1 */
+ case 0x23bb: /* FALLTHRU - ncurses scan line 3 */
+ case 0x23bc: /* FALLTHRU - ncurses scan line 7 */
+ case 0x23bd: /* FALLTHRU - VT100 scan line 9 */
+ case 0x2500: /* FALLTHRU - VT100 horizontal line */
+ case 0x2501: /* FALLTHRU - thick horizontal line */
+ case 0x2502: /* FALLTHRU - VT100 vertical line */
+ case 0x2503: /* FALLTHRU - thick vertical line */
+ case 0x250c: /* FALLTHRU - VT100 upper left corner */
+ case 0x250f: /* FALLTHRU - thick upper left corner */
+ case 0x2510: /* FALLTHRU - VT100 upper right corner */
+ case 0x2513: /* FALLTHRU - thick upper right corner */
+ case 0x2514: /* FALLTHRU - VT100 lower left corner */
+ case 0x2517: /* FALLTHRU - thick lower left corner */
+ case 0x2518: /* FALLTHRU - VT100 lower right corner */
+ case 0x251b: /* FALLTHRU - thick lower right corner */
+ case 0x251c: /* FALLTHRU - VT100 tee pointing left */
+ case 0x2523: /* FALLTHRU - thick tee pointing left */
+ case 0x2524: /* FALLTHRU - VT100 tee pointing right */
+ case 0x252b: /* FALLTHRU - thick tee pointing right */
+ case 0x252c: /* FALLTHRU - VT100 tee pointing down */
+ case 0x2533: /* FALLTHRU - thick tee pointing down */
+ case 0x2534: /* FALLTHRU - VT100 tee pointing up */
+ case 0x253b: /* FALLTHRU - thick tee pointing up */
+ case 0x253c: /* FALLTHRU - VT100 large plus or crossover */
+ case 0x254b: /* FALLTHRU - thick large plus or crossover */
+ case 0x2550: /* FALLTHRU - double horizontal line */
+ case 0x2551: /* FALLTHRU - double vertical line */
+ case 0x2554: /* FALLTHRU - double upper left corner */
+ case 0x2557: /* FALLTHRU - double upper right corner */
+ case 0x255a: /* FALLTHRU - double lower left corner */
+ case 0x255d: /* FALLTHRU - double lower right corner */
+ case 0x2560: /* FALLTHRU - double tee pointing right */
+ case 0x2563: /* FALLTHRU - double tee pointing left */
+ case 0x2566: /* FALLTHRU - double tee pointing down */
+ case 0x2569: /* FALLTHRU - double tee pointing up */
+ case 0x256c: /* FALLTHRU - double large plus or crossover */
+ case 0x2592: /* FALLTHRU - VT100 checker board (stipple) */
+ case 0x25ae: /* FALLTHRU - Teletype solid square block */
+ case 0x25c6: /* FALLTHRU - VT100 diamond */
+ case 0x2603: /* FALLTHRU - Teletype lantern symbol */
+ result = 1;
+ break;
+ default:
+ result = wcwidth(ch);
+ break;
+ }
+ return result;
+}
+#endif /* !NCURSES_WCWIDTH_GRAPHICS */
diff --git a/ncurses/tinfo/lib_baudrate.c b/ncurses/tinfo/lib_baudrate.c
index 252d03c593d8..d91e8aa98fc0 100644
--- a/ncurses/tinfo/lib_baudrate.c
+++ b/ncurses/tinfo/lib_baudrate.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free 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 @@
#include <curses.priv.h>
#include <termcap.h> /* ospeed */
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__OpenBSD__)
#include <sys/param.h>
#endif
@@ -49,7 +49,11 @@
* of the indices up to B115200 fit nicely in a 'short', allowing us to retain
* ospeed's type for compatibility.
*/
-#if NCURSES_OSPEED_COMPAT && ((defined(__FreeBSD__) && (__FreeBSD_version < 700000)) || defined(__NetBSD__) || defined(__OpenBSD__))
+#if NCURSES_OSPEED_COMPAT && \
+ ((defined(__FreeBSD__) && (__FreeBSD_version < 700000)) || \
+ defined(__NetBSD__) || \
+ ((defined(__OpenBSD__) && OpenBSD < 201510)) || \
+ defined(__APPLE__))
#undef B0
#undef B50
#undef B75
@@ -79,7 +83,7 @@
#undef USE_OLD_TTY
#endif /* USE_OLD_TTY */
-MODULE_ID("$Id: lib_baudrate.c,v 1.34 2013/12/15 01:29:02 tom Exp $")
+MODULE_ID("$Id: lib_baudrate.c,v 1.43 2017/03/31 17:19:30 tom Exp $")
/*
* int
@@ -90,8 +94,8 @@ MODULE_ID("$Id: lib_baudrate.c,v 1.34 2013/12/15 01:29:02 tom Exp $")
*/
struct speed {
- NCURSES_OSPEED s; /* values for 'ospeed' */
- int sp; /* the actual speed */
+ int given_speed; /* values for 'ospeed' */
+ int actual_speed; /* the actual speed */
};
#define DATA(number) { B##number, number }
@@ -117,6 +121,9 @@ static struct speed const speeds[] =
#elif defined(EXTA)
{EXTA, 19200},
#endif
+#ifdef B28800
+ DATA(28800),
+#endif
#ifdef B38400
DATA(38400),
#elif defined(EXTB)
@@ -127,18 +134,57 @@ static struct speed const speeds[] =
#endif
/* ifdef to prevent overflow when OLD_TTY is not available */
#if !(NCURSES_OSPEED_COMPAT && defined(__FreeBSD__) && (__FreeBSD_version > 700000))
+#ifdef B76800
+ DATA(76800),
+#endif
#ifdef B115200
DATA(115200),
#endif
+#ifdef B153600
+ DATA(153600),
+#endif
#ifdef B230400
DATA(230400),
#endif
+#ifdef B307200
+ DATA(307200),
+#endif
#ifdef B460800
DATA(460800),
#endif
+#ifdef B500000
+ DATA(500000),
+#endif
+#ifdef B576000
+ DATA(576000),
+#endif
#ifdef B921600
DATA(921600),
#endif
+#ifdef B1000000
+ DATA(1000000),
+#endif
+#ifdef B1152000
+ DATA(1152000),
+#endif
+#ifdef B1500000
+ DATA(1500000),
+#endif
+#ifdef B2000000
+ DATA(2000000),
+#endif
+#ifdef B2500000
+ DATA(2500000),
+#endif
+#ifdef B3000000
+ DATA(3000000),
+#endif
+#ifdef B3500000
+ DATA(3500000),
+#endif
+#ifdef B4000000
+ DATA(4000000),
+#endif
#endif
};
@@ -151,8 +197,11 @@ _nc_baudrate(int OSpeed)
#endif
int result = ERR;
- unsigned i;
+ if (OSpeed < 0)
+ OSpeed = (NCURSES_OSPEED) OSpeed;
+ if (OSpeed < 0)
+ OSpeed = (unsigned short) OSpeed;
#if !USE_REENTRANT
if (OSpeed == last_OSpeed) {
result = last_baudrate;
@@ -160,9 +209,14 @@ _nc_baudrate(int OSpeed)
#endif
if (result == ERR) {
if (OSpeed >= 0) {
+ unsigned i;
+
for (i = 0; i < SIZEOF(speeds); i++) {
- if (speeds[i].s == OSpeed) {
- result = speeds[i].sp;
+ if (speeds[i].given_speed > OSpeed) {
+ break;
+ }
+ if (speeds[i].given_speed == OSpeed) {
+ result = speeds[i].actual_speed;
break;
}
}
@@ -181,12 +235,13 @@ NCURSES_EXPORT(int)
_nc_ospeed(int BaudRate)
{
int result = 1;
- unsigned i;
if (BaudRate >= 0) {
+ unsigned i;
+
for (i = 0; i < SIZEOF(speeds); i++) {
- if (speeds[i].sp == BaudRate) {
- result = speeds[i].s;
+ if (speeds[i].actual_speed == BaudRate) {
+ result = speeds[i].given_speed;
break;
}
}
@@ -208,7 +263,7 @@ NCURSES_SP_NAME(baudrate) (NCURSES_SP_DCL0)
*/
#ifdef TRACE
if (IsValidTIScreen(SP_PARM)
- && !isatty(fileno(SP_PARM ? SP_PARM->_ofp : stdout))
+ && !NC_ISATTY(fileno((SP_PARM && SP_PARM->_ofp) ? SP_PARM->_ofp : stdout))
&& getenv("BAUDRATE") != 0) {
int ret;
if ((ret = _nc_getenv_num("BAUDRATE")) <= 0)
diff --git a/ncurses/tinfo/lib_cur_term.c b/ncurses/tinfo/lib_cur_term.c
index eaaacbcbe51f..e5cd76bf22a5 100644
--- a/ncurses/tinfo/lib_cur_term.c
+++ b/ncurses/tinfo/lib_cur_term.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free 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,10 +39,10 @@
#include <curses.priv.h>
#include <termcap.h> /* ospeed */
-MODULE_ID("$Id: lib_cur_term.c,v 1.32 2013/10/28 00:10:27 tom Exp $")
+MODULE_ID("$Id: lib_cur_term.c,v 1.41 2017/06/17 22:21:35 tom Exp $")
#undef CUR
-#define CUR termp->type.
+#define CUR TerminalType(termp).
#if USE_REENTRANT
@@ -76,7 +76,7 @@ NCURSES_EXPORT_VAR(TERMINAL *) cur_term = 0;
#endif
NCURSES_EXPORT(TERMINAL *)
-NCURSES_SP_NAME(set_curterm) (NCURSES_SP_DCLx TERMINAL * termp)
+NCURSES_SP_NAME(set_curterm) (NCURSES_SP_DCLx TERMINAL *termp)
{
TERMINAL *oldterm;
@@ -95,16 +95,21 @@ NCURSES_SP_NAME(set_curterm) (NCURSES_SP_DCLx TERMINAL * termp)
#ifdef USE_TERM_DRIVER
TERMINAL_CONTROL_BLOCK *TCB = (TERMINAL_CONTROL_BLOCK *) termp;
ospeed = (NCURSES_OSPEED) _nc_ospeed(termp->_baudrate);
- if (TCB->drv->isTerminfo && termp->type.Strings) {
+ if (TCB->drv &&
+ TCB->drv->isTerminfo &&
+ TerminalType(termp).Strings) {
PC = (char) ((pad_char != NULL) ? pad_char[0] : 0);
}
TCB->csp = SP_PARM;
#else
ospeed = (NCURSES_OSPEED) _nc_ospeed(termp->_baudrate);
- if (termp->type.Strings) {
+ if (TerminalType(termp).Strings) {
PC = (char) ((pad_char != NULL) ? pad_char[0] : 0);
}
#endif
+#if !USE_REENTRANT
+ save_ttytype(termp);
+#endif
}
_nc_unlock_global(curses);
@@ -114,14 +119,14 @@ NCURSES_SP_NAME(set_curterm) (NCURSES_SP_DCLx TERMINAL * termp)
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(TERMINAL *)
-set_curterm(TERMINAL * termp)
+set_curterm(TERMINAL *termp)
{
return NCURSES_SP_NAME(set_curterm) (CURRENT_SCREEN, termp);
}
#endif
NCURSES_EXPORT(int)
-NCURSES_SP_NAME(del_curterm) (NCURSES_SP_DCLx TERMINAL * termp)
+NCURSES_SP_NAME(del_curterm) (NCURSES_SP_DCLx TERMINAL *termp)
{
int rc = ERR;
@@ -139,7 +144,10 @@ NCURSES_SP_NAME(del_curterm) (NCURSES_SP_DCLx TERMINAL * termp)
#endif
);
- _nc_free_termtype(&(termp->type));
+#if NCURSES_EXT_NUMBERS
+ _nc_free_termtype(&termp->type);
+#endif
+ _nc_free_termtype2(&TerminalType(termp));
if (termp == cur)
NCURSES_SP_NAME(set_curterm) (NCURSES_SP_ARGx 0);
@@ -151,7 +159,11 @@ NCURSES_SP_NAME(del_curterm) (NCURSES_SP_DCLx TERMINAL * termp)
#endif
#ifdef USE_TERM_DRIVER
if (TCB->drv)
- TCB->drv->release(TCB);
+ TCB->drv->td_release(TCB);
+#endif
+#if NO_LEAKS
+ /* discard memory used in tgetent's cache for this terminal */
+ _nc_tgetent_leak(termp);
#endif
free(termp);
@@ -162,9 +174,9 @@ NCURSES_SP_NAME(del_curterm) (NCURSES_SP_DCLx TERMINAL * termp)
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-del_curterm(TERMINAL * termp)
+del_curterm(TERMINAL *termp)
{
- int rc = ERR;
+ int rc;
_nc_lock_global(curses);
rc = NCURSES_SP_NAME(del_curterm) (CURRENT_SCREEN, termp);
diff --git a/ncurses/tinfo/lib_data.c b/ncurses/tinfo/lib_data.c
index 06b6f88077e4..860c247f84f4 100644
--- a/ncurses/tinfo/lib_data.c
+++ b/ncurses/tinfo/lib_data.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_data.c,v 1.66 2013/08/24 17:28:24 tom Exp $")
+MODULE_ID("$Id: lib_data.c,v 1.79 2018/09/01 19:36:39 tom Exp $")
/*
* OS/2's native linker complains if we don't initialize public data when
@@ -94,7 +94,9 @@ _nc_screen(void)
NCURSES_EXPORT(int)
_nc_alloc_screen(void)
{
- return ((my_screen = _nc_alloc_screen_sp()) != 0);
+ my_screen = _nc_alloc_screen_sp();
+ T(("_nc_alloc_screen_sp %p", my_screen));
+ return (my_screen != 0);
}
NCURSES_EXPORT(void)
@@ -137,6 +139,8 @@ NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals = {
0, /* slk_format */
+ 2048, /* getstr_limit */
+
NULL, /* safeprint_buf */
0, /* safeprint_used */
@@ -150,6 +154,10 @@ NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals = {
0, /* dbd_time */
{ { 0, 0 } }, /* dbd_vars */
+#ifdef USE_TERM_DRIVER
+ 0, /* term_driver */
+#endif
+
#ifndef USE_SP_WINDOWLIST
0, /* _nc_windowlist */
#endif
@@ -163,15 +171,28 @@ NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals = {
0, /* safeprint_rows */
#endif
-#ifdef USE_TERM_DRIVER
- 0, /* term_driver */
+#ifdef USE_PTHREADS
+ PTHREAD_MUTEX_INITIALIZER, /* mutex_curses */
+ PTHREAD_MUTEX_INITIALIZER, /* mutex_prescreen */
+ PTHREAD_MUTEX_INITIALIZER, /* mutex_screen */
+ PTHREAD_MUTEX_INITIALIZER, /* mutex_update */
+ PTHREAD_MUTEX_INITIALIZER, /* mutex_tst_tracef */
+ PTHREAD_MUTEX_INITIALIZER, /* mutex_tracef */
+ 0, /* nested_tracef */
+ 0, /* use_pthreads */
+#if USE_PTHREADS_EINTR
+ 0, /* read_thread */
+#endif
+#endif
+#if USE_WIDEC_SUPPORT
+ CHARS_0s, /* key_name */
#endif
-
#ifdef TRACE
- FALSE, /* init_trace */
+ FALSE, /* trace_opened */
CHARS_0s, /* trace_fname */
0, /* trace_level */
NULL, /* trace_fp */
+ -1, /* trace_fd */
NULL, /* tracearg_buf */
0, /* tracearg_used */
@@ -194,15 +215,8 @@ NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals = {
0, /* nested_tracef */
#endif
#endif /* TRACE */
-#ifdef USE_PTHREADS
- PTHREAD_MUTEX_INITIALIZER, /* mutex_curses */
- PTHREAD_MUTEX_INITIALIZER, /* mutex_tst_tracef */
- PTHREAD_MUTEX_INITIALIZER, /* mutex_tracef */
- 0, /* nested_tracef */
- 0, /* use_pthreads */
-#endif
-#if USE_PTHREADS_EINTR
- 0, /* read_thread */
+#if NO_LEAKS
+ FALSE, /* leak_checking */
#endif
};
@@ -214,17 +228,11 @@ NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals = {
#define RIPOFF_0s { RIPOFF_0 }
NCURSES_EXPORT_VAR(NCURSES_PRESCREEN) _nc_prescreen = {
+ NULL, /* allocated */
TRUE, /* use_env */
FALSE, /* filter_mode */
A_NORMAL, /* previous_attr */
-#ifndef USE_SP_RIPOFF
- RIPOFF_0s, /* ripoff */
- NULL, /* rsp */
-#endif
{ /* tparm_state */
-#ifdef TRACE
- NULL, /* tname */
-#endif
NULL, /* tparam_base */
STACK_FRAME_0s, /* stack */
@@ -239,12 +247,20 @@ NCURSES_EXPORT_VAR(NCURSES_PRESCREEN) _nc_prescreen = {
NUM_VARS_0s, /* dynamic_var */
NUM_VARS_0s, /* static_vars */
+#ifdef TRACE
+ NULL, /* tname */
+#endif
},
NULL, /* saved_tty */
+ FALSE, /* use_tioctl */
+ 0, /* _outch */
+#ifndef USE_SP_RIPOFF
+ RIPOFF_0s, /* ripoff */
+ NULL, /* rsp */
+#endif
#if NCURSES_NO_PADDING
FALSE, /* flag to set if padding disabled */
#endif
- 0, /* _outch */
#if BROKEN_LINKER || USE_REENTRANT
NULL, /* real_acs_map */
0, /* LINES */
@@ -252,12 +268,13 @@ NCURSES_EXPORT_VAR(NCURSES_PRESCREEN) _nc_prescreen = {
8, /* TABSIZE */
1000, /* ESCDELAY */
0, /* cur_term */
+#endif
#ifdef TRACE
+#if BROKEN_LINKER || USE_REENTRANT
0L, /* _outchars */
NULL, /* _tputs_trace */
#endif
#endif
- FALSE, /* use_tioctl */
};
/* *INDENT-ON* */
@@ -287,6 +304,9 @@ init_global_mutexes(void)
if (!initialized) {
initialized = TRUE;
_nc_mutex_init(&_nc_globals.mutex_curses);
+ _nc_mutex_init(&_nc_globals.mutex_prescreen);
+ _nc_mutex_init(&_nc_globals.mutex_screen);
+ _nc_mutex_init(&_nc_globals.mutex_update);
_nc_mutex_init(&_nc_globals.mutex_tst_tracef);
_nc_mutex_init(&_nc_globals.mutex_tracef);
}
@@ -371,7 +391,7 @@ _nc_sigprocmask(int how, const sigset_t * newmask, sigset_t * oldmask)
if ((pthread_sigmask))
return pthread_sigmask(how, newmask, oldmask);
else
- return sigprocmask(how, newmask, oldmask);
+ return (sigprocmask) (how, newmask, oldmask);
}
#endif
#endif /* USE_PTHREADS */
diff --git a/ncurses/tinfo/lib_longname.c b/ncurses/tinfo/lib_longname.c
index 14903175b322..fa231b88def8 100644
--- a/ncurses/tinfo/lib_longname.c
+++ b/ncurses/tinfo/lib_longname.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2015 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_longname.c,v 1.12 2010/12/20 00:31:26 tom Exp $")
+MODULE_ID("$Id: lib_longname.c,v 1.13 2015/07/25 20:08:14 tom Exp $")
#if USE_REENTRANT
NCURSES_EXPORT(char *)
@@ -74,6 +74,17 @@ longname(void)
#endif
#else
+
+/* a dummy entrypoint is simpler than generating a conditional in curses.h */
+#if NCURSES_SP_FUNCS
+NCURSES_EXPORT(char *)
+NCURSES_SP_NAME(longname) (NCURSES_SP_DCL0)
+{
+ (void) SP_PARM;
+ return longname();
+}
+#endif
+
NCURSES_EXPORT(char *)
longname(void)
{
diff --git a/ncurses/tinfo/lib_napms.c b/ncurses/tinfo/lib_napms.c
index 36f1d25b8057..e1a0587028ed 100644
--- a/ncurses/tinfo/lib_napms.c
+++ b/ncurses/tinfo/lib_napms.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2014,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -51,7 +51,7 @@
#endif
#endif
-MODULE_ID("$Id: lib_napms.c,v 1.23 2012/06/30 22:08:24 tom Exp $")
+MODULE_ID("$Id: lib_napms.c,v 1.25 2017/07/01 21:05:56 tom Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(napms) (NCURSES_SP_DCLx int ms)
@@ -59,9 +59,7 @@ NCURSES_SP_NAME(napms) (NCURSES_SP_DCLx int ms)
T((T_CALLED("napms(%d)"), ms));
#ifdef USE_TERM_DRIVER
- if (HasTerminal(SP_PARM)) {
- CallDriver_1(SP_PARM, nap, ms);
- }
+ CallDriver_1(SP_PARM, td_nap, ms);
#else /* !USE_TERM_DRIVER */
#if NCURSES_SP_FUNCS
(void) sp;
diff --git a/ncurses/tinfo/lib_options.c b/ncurses/tinfo/lib_options.c
index e1cda4ebb61a..826737bdd0ca 100644
--- a/ncurses/tinfo/lib_options.c
+++ b/ncurses/tinfo/lib_options.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2014,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -46,7 +46,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_options.c,v 1.76 2013/12/14 22:23:58 tom Exp $")
+MODULE_ID("$Id: lib_options.c,v 1.80 2017/06/24 23:13:09 tom Exp $")
NCURSES_EXPORT(int)
idlok(WINDOW *win, bool flag)
@@ -87,7 +87,7 @@ NCURSES_SP_NAME(halfdelay) (NCURSES_SP_DCLx int t)
{
T((T_CALLED("halfdelay(%p,%d)"), (void *) SP_PARM, t));
- if (t < 1 || t > 255 || !IsValidTIScreen(SP_PARM))
+ if (t < 1 || t > 255 || !SP_PARM || !IsValidTIScreen(SP_PARM))
returnCode(ERR);
NCURSES_SP_NAME(cbreak) (NCURSES_SP_ARG);
@@ -196,11 +196,13 @@ NCURSES_SP_NAME(curs_set) (NCURSES_SP_DCLx int vis)
if (SP_PARM != 0 && vis >= 0 && vis <= 2) {
int cursor = SP_PARM->_cursor;
- bool bBuiltIn = !IsTermInfo(SP_PARM);
if (vis == cursor) {
code = cursor;
} else {
- if (!bBuiltIn) {
+#ifdef USE_TERM_DRIVER
+ code = CallDriver_1(SP_PARM, td_cursorSet, vis);
+#else
+ if (IsValidTIScreen(SP_PARM)) {
switch (vis) {
case 2:
code = NCURSES_PUTP2_FLUSH("cursor_visible",
@@ -215,8 +217,10 @@ NCURSES_SP_NAME(curs_set) (NCURSES_SP_DCLx int vis)
cursor_invisible);
break;
}
- } else
+ } else {
code = ERR;
+ }
+#endif
if (code != ERR)
code = (cursor == -1 ? 1 : cursor);
SP_PARM->_cursor = vis;
@@ -237,7 +241,7 @@ NCURSES_EXPORT(int)
NCURSES_SP_NAME(typeahead) (NCURSES_SP_DCLx int fd)
{
T((T_CALLED("typeahead(%p, %d)"), (void *) SP_PARM, fd));
- if (IsValidTIScreen(SP_PARM)) {
+ if (SP_PARM && IsValidTIScreen(SP_PARM)) {
SP_PARM->_checkfd = fd;
returnCode(OK);
} else {
@@ -350,7 +354,7 @@ _nc_keypad(SCREEN *sp, int flag)
#endif
{
#ifdef USE_TERM_DRIVER
- rc = CallDriver_1(sp, kpad, flag);
+ rc = CallDriver_1(sp, td_kpad, flag);
if (rc == OK)
sp->_keypad_on = flag;
#else
diff --git a/ncurses/tinfo/lib_print.c b/ncurses/tinfo/lib_print.c
index 0dab4d459115..280fdfc0bdf8 100644
--- a/ncurses/tinfo/lib_print.c
+++ b/ncurses/tinfo/lib_print.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2018 Free 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 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_print.c,v 1.23 2012/02/22 22:34:31 tom Exp $")
+MODULE_ID("$Id: lib_print.c,v 1.24 2018/06/24 00:06:37 tom Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(mcprint) (NCURSES_SP_DCLx char *data, int len)
@@ -95,7 +95,7 @@ NCURSES_SP_NAME(mcprint) (NCURSES_SP_DCLx char *data, int len)
* kernel will ship the contiguous clist items from the last write
* immediately.
*/
-#ifndef __MINGW32__
+#ifndef _WIN32
(void) sleep(0);
#endif
free(mybuf);
diff --git a/ncurses/tinfo/lib_raw.c b/ncurses/tinfo/lib_raw.c
index 928692b0cb27..173b3a36551a 100644
--- a/ncurses/tinfo/lib_raw.c
+++ b/ncurses/tinfo/lib_raw.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -49,7 +49,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_raw.c,v 1.21 2012/01/21 19:21:29 KO.Myung-Hun Exp $")
+MODULE_ID("$Id: lib_raw.c,v 1.23 2017/04/15 22:24:45 tom Exp $")
#if HAVE_SYS_TERMIO_H
#include <sys/termio.h> /* needed for ISC */
@@ -112,8 +112,10 @@ NCURSES_SP_NAME(raw) (NCURSES_SP_DCL0)
kbdinfo.fsMask |= KEYBOARD_BINARY_MODE;
KbdSetStatus(&kbdinfo, 0);
#endif
- SP_PARM->_raw = TRUE;
- SP_PARM->_cbreak = 1;
+ if (SP_PARM) {
+ SP_PARM->_raw = TRUE;
+ SP_PARM->_cbreak = 1;
+ }
termp->Nttyb = buf;
}
AFTER("raw");
@@ -154,7 +156,9 @@ NCURSES_SP_NAME(cbreak) (NCURSES_SP_DCL0)
#endif
result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
if (result == OK) {
- SP_PARM->_cbreak = 1;
+ if (SP_PARM) {
+ SP_PARM->_cbreak = 1;
+ }
termp->Nttyb = buf;
}
AFTER("cbreak");
@@ -177,12 +181,12 @@ cbreak(void)
NCURSES_EXPORT(void)
NCURSES_SP_NAME(qiflush) (NCURSES_SP_DCL0)
{
- int result = ERR;
TERMINAL *termp;
T((T_CALLED("qiflush(%p)"), (void *) SP_PARM));
if ((termp = TerminalOf(SP_PARM)) != 0) {
TTY buf;
+ int result;
BEFORE("qiflush");
buf = termp->Nttyb;
@@ -190,6 +194,7 @@ NCURSES_SP_NAME(qiflush) (NCURSES_SP_DCL0)
buf.c_lflag &= (unsigned) ~(NOFLSH);
result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
#else
+ result = ERR;
/* FIXME */
#endif
if (result == OK)
@@ -241,8 +246,10 @@ NCURSES_SP_NAME(noraw) (NCURSES_SP_DCL0)
kbdinfo.fsMask |= KEYBOARD_ASCII_MODE;
KbdSetStatus(&kbdinfo, 0);
#endif
- SP_PARM->_raw = FALSE;
- SP_PARM->_cbreak = 0;
+ if (SP_PARM) {
+ SP_PARM->_raw = FALSE;
+ SP_PARM->_cbreak = 0;
+ }
termp->Nttyb = buf;
}
AFTER("noraw");
@@ -280,7 +287,9 @@ NCURSES_SP_NAME(nocbreak) (NCURSES_SP_DCL0)
#endif
result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
if (result == OK) {
- SP_PARM->_cbreak = 0;
+ if (SP_PARM) {
+ SP_PARM->_cbreak = 0;
+ }
termp->Nttyb = buf;
}
AFTER("nocbreak");
@@ -299,12 +308,12 @@ nocbreak(void)
NCURSES_EXPORT(void)
NCURSES_SP_NAME(noqiflush) (NCURSES_SP_DCL0)
{
- int result = ERR;
TERMINAL *termp;
T((T_CALLED("noqiflush(%p)"), (void *) SP_PARM));
if ((termp = TerminalOf(SP_PARM)) != 0) {
TTY buf;
+ int result;
BEFORE("noqiflush");
buf = termp->Nttyb;
@@ -313,6 +322,7 @@ NCURSES_SP_NAME(noqiflush) (NCURSES_SP_DCL0)
result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
#else
/* FIXME */
+ result = ERR;
#endif
if (result == OK)
termp->Nttyb = buf;
diff --git a/ncurses/tinfo/lib_setup.c b/ncurses/tinfo/lib_setup.c
index 946342da41db..04ce4e465f32 100644
--- a/ncurses/tinfo/lib_setup.c
+++ b/ncurses/tinfo/lib_setup.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -48,7 +48,7 @@
#include <locale.h>
#endif
-MODULE_ID("$Id: lib_setup.c,v 1.158 2013/06/22 19:59:08 tom Exp $")
+MODULE_ID("$Id: lib_setup.c,v 1.206 2019/11/03 00:07:45 tom Exp $")
/****************************************************************************
*
@@ -98,7 +98,7 @@ MODULE_ID("$Id: lib_setup.c,v 1.158 2013/06/22 19:59:08 tom Exp $")
* Reduce explicit use of "cur_term" global variable.
*/
#undef CUR
-#define CUR termp->type.
+#define CUR TerminalType(termp).
/*
* Wrap global variables in this module.
@@ -115,12 +115,12 @@ NCURSES_PUBLIC_VAR(ttytype) (void)
if (CURRENT_SCREEN) {
TERMINAL *termp = TerminalOf(CURRENT_SCREEN);
if (termp != 0) {
- result = termp->type.term_names;
+ result = TerminalType(termp).term_names;
}
}
#else
if (cur_term != 0) {
- result = cur_term->type.term_names;
+ result = TerminalType(cur_term).term_names;
}
#endif
return result;
@@ -173,16 +173,20 @@ NCURSES_EXPORT(int)
NCURSES_SP_NAME(set_tabsize) (NCURSES_SP_DCLx int value)
{
int code = OK;
-#if USE_REENTRANT
- if (SP_PARM) {
- SP_PARM->_TABSIZE = value;
- } else {
+ if (value <= 0) {
code = ERR;
- }
+ } else {
+#if USE_REENTRANT
+ if (SP_PARM) {
+ SP_PARM->_TABSIZE = value;
+ } else {
+ code = ERR;
+ }
#else
- (void) SP_PARM;
- TABSIZE = value;
+ (void) SP_PARM;
+ TABSIZE = value;
#endif
+ }
return code;
}
@@ -220,9 +224,9 @@ _nc_handle_sigwinch(SCREEN *sp)
NCURSES_EXPORT(void)
NCURSES_SP_NAME(use_env) (NCURSES_SP_DCLx bool f)
{
+ START_TRACE();
T((T_CALLED("use_env(%p,%d)"), (void *) SP_PARM, (int) f));
#if NCURSES_SP_FUNCS
- START_TRACE();
if (IsPreScreen(SP_PARM)) {
SP_PARM->_use_env = f;
}
@@ -235,11 +239,11 @@ NCURSES_SP_NAME(use_env) (NCURSES_SP_DCLx bool f)
NCURSES_EXPORT(void)
NCURSES_SP_NAME(use_tioctl) (NCURSES_SP_DCLx bool f)
{
+ START_TRACE();
T((T_CALLED("use_tioctl(%p,%d)"), (void *) SP_PARM, (int) f));
#if NCURSES_SP_FUNCS
- START_TRACE();
if (IsPreScreen(SP_PARM)) {
- SP_PARM->_use_tioctl = f;
+ SP_PARM->use_tioctl = f;
}
#else
_nc_prescreen.use_tioctl = f;
@@ -251,8 +255,8 @@ NCURSES_SP_NAME(use_tioctl) (NCURSES_SP_DCLx bool f)
NCURSES_EXPORT(void)
use_env(bool f)
{
- T((T_CALLED("use_env(%d)"), (int) f));
START_TRACE();
+ T((T_CALLED("use_env(%d)"), (int) f));
_nc_prescreen.use_env = f;
returnVoid;
}
@@ -260,8 +264,8 @@ use_env(bool f)
NCURSES_EXPORT(void)
use_tioctl(bool f)
{
- T((T_CALLED("use_tioctl(%d)"), (int) f));
START_TRACE();
+ T((T_CALLED("use_tioctl(%d)"), (int) f));
_nc_prescreen.use_tioctl = f;
returnVoid;
}
@@ -270,7 +274,7 @@ use_tioctl(bool f)
NCURSES_EXPORT(void)
_nc_get_screensize(SCREEN *sp,
#ifdef USE_TERM_DRIVER
- TERMINAL * termp,
+ TERMINAL *termp,
#endif
int *linep, int *colp)
/* Obtain lines/columns values from the environment and/or terminfo entry */
@@ -283,7 +287,7 @@ _nc_get_screensize(SCREEN *sp,
TCB = (TERMINAL_CONTROL_BLOCK *) termp;
my_tabsize = TCB->info.tabsize;
- TCB->drv->size(TCB, linep, colp);
+ TCB->drv->td_size(TCB, linep, colp);
#if USE_REENTRANT
if (sp != 0) {
@@ -297,6 +301,8 @@ _nc_get_screensize(SCREEN *sp,
#else /* !USE_TERM_DRIVER */
TERMINAL *termp = cur_term;
int my_tabsize;
+ bool useEnv = _nc_prescreen.use_env;
+ bool useTioctl = _nc_prescreen.use_tioctl;
/* figure out the size of the screen */
T(("screen size: terminfo lines = %d columns = %d", lines, columns));
@@ -304,9 +310,14 @@ _nc_get_screensize(SCREEN *sp,
*linep = (int) lines;
*colp = (int) columns;
- if (_nc_prescreen.use_env || _nc_prescreen.use_tioctl) {
- int value;
+#if NCURSES_SP_FUNCS
+ if (sp) {
+ useEnv = sp->_use_env;
+ useTioctl = sp->use_tioctl;
+ }
+#endif
+ if (useEnv || useTioctl) {
#ifdef __EMX__
{
int screendata[2];
@@ -321,7 +332,7 @@ _nc_get_screensize(SCREEN *sp,
#endif
#if HAVE_SIZECHANGE
/* try asking the OS */
- if (isatty(cur_term->Filedes)) {
+ if (NC_ISATTY(cur_term->Filedes)) {
STRUCT_WINSIZE size;
errno = 0;
@@ -340,8 +351,10 @@ _nc_get_screensize(SCREEN *sp,
}
#endif /* HAVE_SIZECHANGE */
- if (_nc_prescreen.use_env) {
- if (_nc_prescreen.use_tioctl) {
+ if (useEnv) {
+ int value;
+
+ if (useTioctl) {
/*
* If environment variables are used, update them.
*/
@@ -389,8 +402,14 @@ _nc_get_screensize(SCREEN *sp,
* 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);
+ lines = (NCURSES_INT2) (*linep);
+ columns = (NCURSES_INT2) (*colp);
+#if NCURSES_EXT_NUMBERS
+#define OldNumber(termp,name) \
+ (termp)->type.Numbers[(&name - (termp)->type2.Numbers)]
+ OldNumber(termp, lines) = (short) (*linep);
+ OldNumber(termp, columns) = (short) (*colp);
+#endif
}
T(("screen size is %dx%d", *linep, *colp));
@@ -423,7 +442,7 @@ _nc_update_screensize(SCREEN *sp)
assert(sp != 0);
- CallDriver_2(sp, getsize, &old_lines, &old_cols);
+ CallDriver_2(sp, td_getsize, &old_lines, &old_cols);
#else
TERMINAL *termp = cur_term;
@@ -431,23 +450,24 @@ _nc_update_screensize(SCREEN *sp)
int old_cols = columns;
#endif
- TINFO_GET_SIZE(sp, sp->_term, &new_lines, &new_cols);
-
- /*
- * See is_term_resized() and resizeterm().
- * We're doing it this way because those functions belong to the upper
- * ncurses library, while this resides in the lower terminfo library.
- */
- if (sp != 0 && sp->_resize != 0) {
- if ((new_lines != old_lines) || (new_cols != old_cols)) {
- sp->_resize(NCURSES_SP_ARGx new_lines, new_cols);
- } else if (sp->_sig_winch && (sp->_ungetch != 0)) {
- sp->_ungetch(SP_PARM, KEY_RESIZE); /* so application can know this */
+ if (sp != 0) {
+ TINFO_GET_SIZE(sp, sp->_term, &new_lines, &new_cols);
+ /*
+ * See is_term_resized() and resizeterm().
+ * We're doing it this way because those functions belong to the upper
+ * ncurses library, while this resides in the lower terminfo library.
+ */
+ if (sp->_resize != 0) {
+ if ((new_lines != old_lines) || (new_cols != old_cols)) {
+ sp->_resize(NCURSES_SP_ARGx new_lines, new_cols);
+ } else if (sp->_sig_winch && (sp->_ungetch != 0)) {
+ sp->_ungetch(SP_PARM, KEY_RESIZE); /* so application can know this */
+ }
+ sp->_sig_winch = FALSE;
}
- sp->_sig_winch = FALSE;
}
}
-#endif
+#endif /* USE_SIZECHANGE */
/****************************************************************************
*
@@ -461,10 +481,10 @@ _nc_update_screensize(SCREEN *sp)
* just like tgetent().
*/
int
-_nc_setup_tinfo(const char *const tn, TERMTYPE *const tp)
+_nc_setup_tinfo(const char *const tn, TERMTYPE2 *const tp)
{
char filename[PATH_MAX];
- int status = _nc_read_entry(tn, filename, tp);
+ int status = _nc_read_entry2(tn, filename, tp);
/*
* If we have an entry, force all of the cancelled strings to null
@@ -492,10 +512,8 @@ _nc_setup_tinfo(const char *const tn, TERMTYPE *const tp)
** and substitute it in for the prototype given in 'command_character'.
*/
void
-_nc_tinfo_cmdch(TERMINAL * termp, int proto)
+_nc_tinfo_cmdch(TERMINAL *termp, int proto)
{
- unsigned i;
- char CC;
char *tmp;
/*
@@ -504,7 +522,9 @@ _nc_tinfo_cmdch(TERMINAL * termp, int proto)
* name as an environment variable - using the same symbol.
*/
if ((tmp = getenv("CC")) != 0 && strlen(tmp) == 1) {
- CC = *tmp;
+ unsigned i;
+ char CC = *tmp;
+
for_each_string(i, &(termp->type)) {
for (tmp = termp->type.Strings[i]; tmp && *tmp; tmp++) {
if (UChar(*tmp) == proto)
@@ -528,9 +548,9 @@ _nc_get_locale(void)
*/
env = setlocale(LC_CTYPE, 0);
#else
- if (((env = getenv("LC_ALL")) != 0 && *env != '\0')
+ if (((env = getenv("LANG")) != 0 && *env != '\0')
|| ((env = getenv("LC_CTYPE")) != 0 && *env != '\0')
- || ((env = getenv("LANG")) != 0 && *env != '\0')) {
+ || ((env = getenv("LC_ALL")) != 0 && *env != '\0')) {
;
}
#endif
@@ -545,7 +565,7 @@ NCURSES_EXPORT(int)
_nc_unicode_locale(void)
{
int result = 0;
-#if defined(__MINGW32__) && USE_WIDEC_SUPPORT
+#if defined(_WIN32) && USE_WIDEC_SUPPORT
result = 1;
#elif HAVE_LANGINFO_CODESET
char *env = nl_langinfo(CODESET);
@@ -571,13 +591,14 @@ _nc_unicode_locale(void)
* character set.
*/
NCURSES_EXPORT(int)
-_nc_locale_breaks_acs(TERMINAL * termp)
+_nc_locale_breaks_acs(TERMINAL *termp)
{
const char *env_name = "NCURSES_NO_UTF8_ACS";
- char *env;
+ const char *env;
int value;
int result = 0;
+ T((T_CALLED("_nc_locale_breaks_acs:%d"), result));
if (getenv(env_name) != 0) {
result = _nc_getenv_num(env_name);
} else if ((value = tigetnum("U8")) >= 0) {
@@ -597,23 +618,22 @@ _nc_locale_breaks_acs(TERMINAL * termp)
}
}
}
- return result;
+ returnCode(result);
}
NCURSES_EXPORT(int)
-TINFO_SETUP_TERM(TERMINAL ** tp,
- NCURSES_CONST char *tname,
+TINFO_SETUP_TERM(TERMINAL **tp,
+ const char *tname,
int Filedes,
int *errret,
int reuse)
{
#ifdef USE_TERM_DRIVER
TERMINAL_CONTROL_BLOCK *TCB = 0;
-#else
- int status;
#endif
TERMINAL *termp;
SCREEN *sp = 0;
+ char *myname;
int code = ERR;
START_TRACE();
@@ -642,20 +662,22 @@ TINFO_SETUP_TERM(TERMINAL ** tp,
#endif
}
}
+ myname = strdup(tname);
- if (strlen(tname) > MAX_NAME_SIZE) {
+ if (strlen(myname) > MAX_NAME_SIZE) {
ret_error(TGETENT_ERR,
"TERM environment must be <= %d characters.\n",
- MAX_NAME_SIZE);
+ MAX_NAME_SIZE,
+ free(myname));
}
- T(("your terminal name is %s", tname));
+ T(("your terminal name is %s", myname));
/*
* 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))
+ if (Filedes == STDOUT_FILENO && !NC_ISATTY(Filedes))
Filedes = STDERR_FILENO;
/*
@@ -678,8 +700,8 @@ TINFO_SETUP_TERM(TERMINAL ** tp,
&& (termp != 0)
&& termp->Filedes == Filedes
&& termp->_termname != 0
- && !strcmp(termp->_termname, tname)
- && _nc_name_match(termp->type.term_names, tname, "|")) {
+ && !strcmp(termp->_termname, myname)
+ && _nc_name_match(TerminalType(termp).term_names, myname, "|")) {
T(("reusing existing terminal information and mode-settings"));
code = OK;
#ifdef USE_TERM_DRIVER
@@ -688,39 +710,65 @@ TINFO_SETUP_TERM(TERMINAL ** tp,
} else {
#ifdef USE_TERM_DRIVER
TERMINAL_CONTROL_BLOCK *my_tcb;
- my_tcb = typeCalloc(TERMINAL_CONTROL_BLOCK, 1);
- termp = &(my_tcb->term);
+ termp = 0;
+ if ((my_tcb = typeCalloc(TERMINAL_CONTROL_BLOCK, 1)) != 0)
+ termp = &(my_tcb->term);
#else
+ int status;
+
termp = typeCalloc(TERMINAL, 1);
#endif
if (termp == 0) {
- ret_error0(TGETENT_ERR,
- "Not enough memory to create terminal structure.\n");
+ ret_error1(TGETENT_ERR,
+ "Not enough memory to create terminal structure.\n",
+ myname, free(myname));
}
+#if HAVE_SYSCONF
+ {
+ long limit;
+#ifdef LINE_MAX
+ limit = LINE_MAX;
+#else
+ limit = _nc_globals.getstr_limit;
+#endif
+#ifdef _SC_LINE_MAX
+ if (limit < sysconf(_SC_LINE_MAX))
+ limit = sysconf(_SC_LINE_MAX);
+#endif
+ if (_nc_globals.getstr_limit < (int) limit)
+ _nc_globals.getstr_limit = (int) limit;
+ }
+#endif /* HAVE_SYSCONF */
+ T(("using %d for getstr limit", _nc_globals.getstr_limit));
+
#ifdef USE_TERM_DRIVER
INIT_TERM_DRIVER();
TCB = (TERMINAL_CONTROL_BLOCK *) termp;
- code = _nc_globals.term_driver(TCB, tname, errret);
+ code = _nc_globals.term_driver(TCB, myname, errret);
if (code == OK) {
termp->Filedes = (short) Filedes;
- termp->_termname = strdup(tname);
+ termp->_termname = strdup(myname);
} else {
- ret_error0(TGETENT_ERR,
- "Could not find any driver to handle this terminal.\n");
+ ret_error1(errret ? *errret : TGETENT_ERR,
+ "Could not find any driver to handle terminal.\n",
+ myname, free(myname));
}
#else
#if NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP
- status = _nc_setup_tinfo(tname, &termp->type);
+ status = _nc_setup_tinfo(myname, &TerminalType(termp));
+ T(("_nc_setup_tinfo returns %d", status));
#else
+ T(("no database available"));
status = TGETENT_NO;
#endif
/* try fallback list if entry on disk */
if (status != TGETENT_YES) {
- const TERMTYPE *fallback = _nc_fallback(tname);
+ const TERMTYPE2 *fallback = _nc_fallback2(myname);
if (fallback) {
- _nc_copy_termtype(&(termp->type), fallback);
+ T(("found fallback entry"));
+ _nc_copy_termtype2(&(TerminalType(termp)), fallback);
status = TGETENT_YES;
}
}
@@ -728,18 +776,24 @@ TINFO_SETUP_TERM(TERMINAL ** tp,
if (status != TGETENT_YES) {
del_curterm(termp);
if (status == TGETENT_ERR) {
+ free(myname);
ret_error0(status, "terminals database is inaccessible\n");
} else if (status == TGETENT_NO) {
- ret_error1(status, "unknown terminal type.\n", tname);
+ ret_error1(status, "unknown terminal type.\n",
+ myname, free(myname));
+ } else {
+ ret_error0(status, "unexpected return-code\n");
}
}
+#if NCURSES_EXT_NUMBERS
+ _nc_export_termtype2(&termp->type, &TerminalType(termp));
+#endif
#if !USE_REENTRANT
- strncpy(ttytype, termp->type.term_names, (size_t) (NAMESIZE - 1));
- ttytype[NAMESIZE - 1] = '\0';
+ save_ttytype(termp);
#endif
termp->Filedes = (short) Filedes;
- termp->_termname = strdup(tname);
+ termp->_termname = strdup(myname);
set_curterm(termp);
@@ -750,10 +804,11 @@ TINFO_SETUP_TERM(TERMINAL ** tp,
* If an application calls setupterm() rather than initscr() or
* newterm(), we will not have the def_prog_mode() call in
* _nc_setupscreen(). Do it now anyway, so we can initialize the
- * baudrate.
+ * baudrate. Also get the shell-mode so that erasechar() works.
*/
- if (isatty(Filedes)) {
- def_prog_mode();
+ if (NC_ISATTY(Filedes)) {
+ NCURSES_SP_NAME(def_shell_mode) (NCURSES_SP_ARG);
+ NCURSES_SP_NAME(def_prog_mode) (NCURSES_SP_ARG);
baudrate();
}
code = OK;
@@ -763,7 +818,7 @@ TINFO_SETUP_TERM(TERMINAL ** tp,
#ifdef USE_TERM_DRIVER
*tp = termp;
NCURSES_SP_NAME(set_curterm) (sp, termp);
- TCB->drv->init(TCB);
+ TCB->drv->td_init(TCB);
#else
sp = SP;
#endif
@@ -785,36 +840,97 @@ TINFO_SETUP_TERM(TERMINAL ** tp,
if ((VALID_STRING(cursor_address)
|| (VALID_STRING(cursor_down) && VALID_STRING(cursor_home)))
&& VALID_STRING(clear_screen)) {
- ret_error1(TGETENT_YES, "terminal is not really generic.\n", tname);
+ ret_error1(TGETENT_YES, "terminal is not really generic.\n",
+ myname, free(myname));
} else {
del_curterm(termp);
- ret_error1(TGETENT_NO, "I need something more specific.\n", tname);
+ ret_error1(TGETENT_NO, "I need something more specific.\n",
+ myname, free(myname));
}
} else if (hard_copy) {
- ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", tname);
+ ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n",
+ myname, free(myname));
}
#endif
+ free(myname);
returnCode(code);
}
+#ifdef USE_PTHREADS
+/*
+ * Returns a non-null pointer unless a new screen should be allocated because
+ * no match was found in the pre-screen cache.
+ */
+NCURSES_EXPORT(SCREEN *)
+_nc_find_prescr(void)
+{
+ SCREEN *result = 0;
+ PRESCREEN_LIST *p;
+ pthread_t id = GetThreadID();
+ for (p = _nc_prescreen.allocated; p != 0; p = p->next) {
+ if (p->id == id) {
+ result = p->sp;
+ break;
+ }
+ }
+ return result;
+}
+
+/*
+ * Tells ncurses to forget that this thread was associated with the pre-screen
+ * cache. It does not modify the pre-screen cache itself, since that is used
+ * for creating new screens.
+ */
+NCURSES_EXPORT(void)
+_nc_forget_prescr(void)
+{
+ PRESCREEN_LIST *p, *q;
+ pthread_t id = GetThreadID();
+ for (p = _nc_prescreen.allocated, q = 0; p != 0; q = p, p = p->next) {
+ if (p->id == id) {
+ if (q) {
+ q->next = p->next;
+ } else {
+ _nc_prescreen.allocated = p->next;
+ }
+ free(p);
+ break;
+ }
+ }
+}
+#endif /* USE_PTHREADS */
+
#if NCURSES_SP_FUNCS
/*
* In case of handling multiple screens, we need to have a screen before
- * initialization in setupscreen takes place. This is to extend the substitute
- * for some of the stuff in _nc_prescreen, especially for slk and ripoff
- * handling which should be done per screen.
+ * initialization in _nc_setupscreen takes place. This is to extend the
+ * substitute for some of the stuff in _nc_prescreen, especially for slk and
+ * ripoff handling which should be done per screen.
*/
NCURSES_EXPORT(SCREEN *)
new_prescr(void)
{
- static SCREEN *sp;
+ SCREEN *sp;
START_TRACE();
T((T_CALLED("new_prescr()")));
- if (sp == 0) {
+ _nc_lock_global(screen);
+ if ((sp = _nc_find_prescr()) == 0) {
sp = _nc_alloc_screen_sp();
+ T(("_nc_alloc_screen_sp %p", (void *) sp));
if (sp != 0) {
+#ifdef USE_PTHREADS
+ PRESCREEN_LIST *p = typeCalloc(PRESCREEN_LIST, 1);
+ if (p != 0) {
+ p->id = GetThreadID();
+ p->sp = sp;
+ p->next = _nc_prescreen.allocated;
+ _nc_prescreen.allocated = p;
+ }
+#else
+ _nc_prescreen.allocated = sp;
+#endif
sp->rsp = sp->rippedoff;
sp->_filtered = _nc_prescreen.filter_mode;
sp->_use_env = _nc_prescreen.use_env;
@@ -830,7 +946,10 @@ new_prescr(void)
sp->_ESCDELAY = _nc_prescreen._ESCDELAY;
#endif
}
+ } else {
+ T(("_nc_alloc_screen_sp %p (reuse)", (void *) sp));
}
+ _nc_unlock_global(screen);
returnSP(sp);
}
#endif
@@ -841,17 +960,24 @@ new_prescr(void)
* the same TERMINAL data (see comment).
*/
NCURSES_EXPORT(int)
-_nc_setupterm(NCURSES_CONST char *tname,
+_nc_setupterm(const char *tname,
int Filedes,
int *errret,
int reuse)
{
- int res;
+ int rc = ERR;
TERMINAL *termp = 0;
- res = TINFO_SETUP_TERM(&termp, tname, Filedes, errret, reuse);
- if (ERR != res)
- NCURSES_SP_NAME(set_curterm) (CURRENT_SCREEN_PRE, termp);
- return res;
+
+ _nc_lock_global(prescreen);
+ START_TRACE();
+ if (TINFO_SETUP_TERM(&termp, tname, Filedes, errret, reuse) == OK) {
+ _nc_forget_prescr();
+ if (NCURSES_SP_NAME(set_curterm) (CURRENT_SCREEN_PRE, termp) != 0) {
+ rc = OK;
+ }
+ }
+ _nc_unlock_global(prescreen);
+ return rc;
}
#endif
@@ -862,7 +988,8 @@ _nc_setupterm(NCURSES_CONST char *tname,
* Make cur_term point to the structure.
*/
NCURSES_EXPORT(int)
-setupterm(NCURSES_CONST char *tname, int Filedes, int *errret)
+setupterm(const char *tname, int Filedes, int *errret)
{
+ START_TRACE();
return _nc_setupterm(tname, Filedes, errret, FALSE);
}
diff --git a/ncurses/tinfo/lib_termcap.c b/ncurses/tinfo/lib_termcap.c
index fdfc4946ec72..07d73b689726 100644
--- a/ncurses/tinfo/lib_termcap.c
+++ b/ncurses/tinfo/lib_termcap.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -48,7 +48,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_termcap.c,v 1.80 2013/06/08 16:48:47 tom Exp $")
+MODULE_ID("$Id: lib_termcap.c,v 1.87 2018/04/07 21:11:15 tom Exp $")
NCURSES_EXPORT_VAR(char *) UP = 0;
NCURSES_EXPORT_VAR(char *) BC = 0;
@@ -100,8 +100,7 @@ NCURSES_SP_NAME(tgetent) (NCURSES_SP_DCLx char *bufp, const char *name)
START_TRACE();
T((T_CALLED("tgetent()")));
- TINFO_SETUP_TERM(&termp, (NCURSES_CONST char *) name,
- STDOUT_FILENO, &rc, TRUE);
+ TINFO_SETUP_TERM(&termp, name, STDOUT_FILENO, &rc, TRUE);
#ifdef USE_TERM_DRIVER
if (termp == 0 ||
@@ -153,8 +152,12 @@ NCURSES_SP_NAME(tgetent) (NCURSES_SP_DCLx char *bufp, const char *name)
}
CacheInx = best;
}
- LAST_TRM = TerminalOf(SP_PARM);
- LAST_SEQ = ++CacheSeq;
+ if (rc == 1) {
+ LAST_TRM = TerminalOf(SP_PARM);
+ LAST_SEQ = ++CacheSeq;
+ } else {
+ LAST_TRM = 0;
+ }
PC = 0;
UP = 0;
@@ -175,7 +178,8 @@ NCURSES_SP_NAME(tgetent) (NCURSES_SP_DCLx char *bufp, const char *name)
if (backspace_if_not_bs != NULL)
BC = backspace_if_not_bs;
- if ((FIX_SGR0 = _nc_trim_sgr0(&(TerminalOf(SP_PARM)->type))) != 0) {
+ if ((FIX_SGR0 = _nc_trim_sgr0(&TerminalType(TerminalOf(SP_PARM))))
+ != 0) {
if (!strcmp(FIX_SGR0, exit_attribute_mode)) {
if (FIX_SGR0 != exit_attribute_mode) {
free(FIX_SGR0);
@@ -230,15 +234,15 @@ same_tcname(const char *a, const char *b)
***************************************************************************/
NCURSES_EXPORT(int)
-NCURSES_SP_NAME(tgetflag) (NCURSES_SP_DCLx NCURSES_CONST char *id)
+NCURSES_SP_NAME(tgetflag) (NCURSES_SP_DCLx const char *id)
{
int result = 0; /* Solaris returns zero for missing flag */
- int j = -1;
T((T_CALLED("tgetflag(%p, %s)"), (void *) SP_PARM, id));
if (HasTInfoTerminal(SP_PARM) && ValidCap(id)) {
- TERMTYPE *tp = &(TerminalOf(SP_PARM)->type);
+ TERMTYPE2 *tp = &TerminalType(TerminalOf(SP_PARM));
struct name_table_entry const *entry_ptr;
+ int j = -1;
entry_ptr = _nc_find_type_entry(id, BOOLEAN, TRUE);
if (entry_ptr != 0) {
@@ -266,7 +270,7 @@ NCURSES_SP_NAME(tgetflag) (NCURSES_SP_DCLx NCURSES_CONST char *id)
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-tgetflag(NCURSES_CONST char *id)
+tgetflag(const char *id)
{
return NCURSES_SP_NAME(tgetflag) (CURRENT_SCREEN, id);
}
@@ -282,15 +286,15 @@ tgetflag(NCURSES_CONST char *id)
***************************************************************************/
NCURSES_EXPORT(int)
-NCURSES_SP_NAME(tgetnum) (NCURSES_SP_DCLx NCURSES_CONST char *id)
+NCURSES_SP_NAME(tgetnum) (NCURSES_SP_DCLx const char *id)
{
int result = ABSENT_NUMERIC;
- int j = -1;
T((T_CALLED("tgetnum(%p, %s)"), (void *) SP_PARM, id));
if (HasTInfoTerminal(SP_PARM) && ValidCap(id)) {
- TERMTYPE *tp = &(TerminalOf(SP_PARM)->type);
+ TERMTYPE2 *tp = &TerminalType(TerminalOf(SP_PARM));
struct name_table_entry const *entry_ptr;
+ int j = -1;
entry_ptr = _nc_find_type_entry(id, NUMBER, TRUE);
if (entry_ptr != 0) {
@@ -318,7 +322,7 @@ NCURSES_SP_NAME(tgetnum) (NCURSES_SP_DCLx NCURSES_CONST char *id)
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-tgetnum(NCURSES_CONST char *id)
+tgetnum(const char *id)
{
return NCURSES_SP_NAME(tgetnum) (CURRENT_SCREEN, id);
}
@@ -334,15 +338,15 @@ tgetnum(NCURSES_CONST char *id)
***************************************************************************/
NCURSES_EXPORT(char *)
-NCURSES_SP_NAME(tgetstr) (NCURSES_SP_DCLx NCURSES_CONST char *id, char **area)
+NCURSES_SP_NAME(tgetstr) (NCURSES_SP_DCLx const char *id, char **area)
{
char *result = NULL;
- int j = -1;
T((T_CALLED("tgetstr(%s,%p)"), id, (void *) area));
if (HasTInfoTerminal(SP_PARM) && ValidCap(id)) {
- TERMTYPE *tp = &(TerminalOf(SP_PARM)->type);
+ TERMTYPE2 *tp = &TerminalType(TerminalOf(SP_PARM));
struct name_table_entry const *entry_ptr;
+ int j = -1;
entry_ptr = _nc_find_type_entry(id, STRING, TRUE);
if (entry_ptr != 0) {
@@ -384,20 +388,41 @@ NCURSES_SP_NAME(tgetstr) (NCURSES_SP_DCLx NCURSES_CONST char *id, char **area)
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(char *)
-tgetstr(NCURSES_CONST char *id, char **area)
+tgetstr(const char *id, char **area)
{
return NCURSES_SP_NAME(tgetstr) (CURRENT_SCREEN, id, area);
}
#endif
#if NO_LEAKS
+#undef CacheInx
+#define CacheInx num
+NCURSES_EXPORT(void)
+_nc_tgetent_leak(TERMINAL *termp)
+{
+ if (termp != 0) {
+ int num;
+ for (CacheInx = 0; CacheInx < TGETENT_MAX; ++CacheInx) {
+ if (LAST_TRM == termp) {
+ FreeAndNull(FIX_SGR0);
+ if (LAST_TRM != 0) {
+ LAST_TRM = 0;
+ }
+ break;
+ }
+ }
+ }
+}
+
NCURSES_EXPORT(void)
_nc_tgetent_leaks(void)
{
+ int num;
for (CacheInx = 0; CacheInx < TGETENT_MAX; ++CacheInx) {
- FreeIfNeeded(FIX_SGR0);
- if (LAST_TRM != 0)
+ if (LAST_TRM != 0) {
del_curterm(LAST_TRM);
+ _nc_tgetent_leak(LAST_TRM);
+ }
}
}
#endif
diff --git a/ncurses/tinfo/lib_tgoto.c b/ncurses/tinfo/lib_tgoto.c
index 31daf443624f..4173d74efcdd 100644
--- a/ncurses/tinfo/lib_tgoto.c
+++ b/ncurses/tinfo/lib_tgoto.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2000-2008,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2000-2018,2019 Free 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 <ctype.h>
#include <termcap.h>
-MODULE_ID("$Id: lib_tgoto.c,v 1.16 2012/02/24 02:08:08 tom Exp $")
+MODULE_ID("$Id: lib_tgoto.c,v 1.18 2019/10/26 22:43:48 tom Exp $")
#if !PURE_TERMINFO
static bool
@@ -125,7 +125,14 @@ tgoto_internal(const char *string, int x, int y)
*value += 1;
need_BC = TRUE;
} else {
- *value = 0200; /* tputs will treat this as \0 */
+ /* tputs will pretend this is \0, which will almost
+ * always work since ANSI-compatible terminals ignore
+ * the character. ECMA-48 does not document a C1
+ * control for this value. A few (obsolete) terminals
+ * can use this value in special cases, such as cursor
+ * addressing using single-byte coordinates.
+ */
+ *value = 0200;
}
}
result[used++] = (char) *value++;
@@ -199,6 +206,6 @@ tgoto(const char *string, int x, int y)
result = tgoto_internal(string, x, y);
else
#endif
- result = TPARM_2((NCURSES_CONST char *) string, y, x);
+ result = TPARM_2(string, y, x);
returnPtr(result);
}
diff --git a/ncurses/tinfo/lib_ti.c b/ncurses/tinfo/lib_ti.c
index e9ae74623cf5..bf8fc9cc3944 100644
--- a/ncurses/tinfo/lib_ti.c
+++ b/ncurses/tinfo/lib_ti.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -36,7 +36,7 @@
#include <tic.h>
-MODULE_ID("$Id: lib_ti.c,v 1.30 2013/06/08 16:55:05 tom Exp $")
+MODULE_ID("$Id: lib_ti.c,v 1.33 2018/04/07 20:36:41 tom Exp $")
#if 0
static bool
@@ -50,16 +50,16 @@ same_name(const char *a, const char *b)
#endif
NCURSES_EXPORT(int)
-NCURSES_SP_NAME(tigetflag) (NCURSES_SP_DCLx NCURSES_CONST char *str)
+NCURSES_SP_NAME(tigetflag) (NCURSES_SP_DCLx const char *str)
{
int result = ABSENT_BOOLEAN;
- int j = -1;
T((T_CALLED("tigetflag(%p, %s)"), (void *) SP_PARM, str));
if (HasTInfoTerminal(SP_PARM)) {
- TERMTYPE *tp = &(TerminalOf(SP_PARM)->type);
+ TERMTYPE2 *tp = &TerminalType(TerminalOf(SP_PARM));
struct name_table_entry const *entry_ptr;
+ int j = -1;
entry_ptr = _nc_find_type_entry(str, BOOLEAN, FALSE);
if (entry_ptr != 0) {
@@ -88,23 +88,23 @@ NCURSES_SP_NAME(tigetflag) (NCURSES_SP_DCLx NCURSES_CONST char *str)
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-tigetflag(NCURSES_CONST char *str)
+tigetflag(const char *str)
{
return NCURSES_SP_NAME(tigetflag) (CURRENT_SCREEN, str);
}
#endif
NCURSES_EXPORT(int)
-NCURSES_SP_NAME(tigetnum) (NCURSES_SP_DCLx NCURSES_CONST char *str)
+NCURSES_SP_NAME(tigetnum) (NCURSES_SP_DCLx const char *str)
{
- int j = -1;
int result = CANCELLED_NUMERIC; /* Solaris returns a -1 on error */
T((T_CALLED("tigetnum(%p, %s)"), (void *) SP_PARM, str));
if (HasTInfoTerminal(SP_PARM)) {
- TERMTYPE *tp = &(TerminalOf(SP_PARM)->type);
+ TERMTYPE2 *tp = &TerminalType(TerminalOf(SP_PARM));
struct name_table_entry const *entry_ptr;
+ int j = -1;
entry_ptr = _nc_find_type_entry(str, NUMBER, FALSE);
if (entry_ptr != 0) {
@@ -135,23 +135,23 @@ NCURSES_SP_NAME(tigetnum) (NCURSES_SP_DCLx NCURSES_CONST char *str)
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-tigetnum(NCURSES_CONST char *str)
+tigetnum(const char *str)
{
return NCURSES_SP_NAME(tigetnum) (CURRENT_SCREEN, str);
}
#endif
NCURSES_EXPORT(char *)
-NCURSES_SP_NAME(tigetstr) (NCURSES_SP_DCLx NCURSES_CONST char *str)
+NCURSES_SP_NAME(tigetstr) (NCURSES_SP_DCLx const char *str)
{
char *result = CANCELLED_STRING;
- int j = -1;
T((T_CALLED("tigetstr(%p, %s)"), (void *) SP_PARM, str));
if (HasTInfoTerminal(SP_PARM)) {
- TERMTYPE *tp = &(TerminalOf(SP_PARM)->type);
+ TERMTYPE2 *tp = &TerminalType(TerminalOf(SP_PARM));
struct name_table_entry const *entry_ptr;
+ int j = -1;
entry_ptr = _nc_find_type_entry(str, STRING, FALSE);
if (entry_ptr != 0) {
@@ -180,7 +180,7 @@ NCURSES_SP_NAME(tigetstr) (NCURSES_SP_DCLx NCURSES_CONST char *str)
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(char *)
-tigetstr(NCURSES_CONST char *str)
+tigetstr(const char *str)
{
return NCURSES_SP_NAME(tigetstr) (CURRENT_SCREEN, str);
}
diff --git a/ncurses/tinfo/lib_tparm.c b/ncurses/tinfo/lib_tparm.c
index 439115b01e83..a98cfd86afbf 100644
--- a/ncurses/tinfo/lib_tparm.c
+++ b/ncurses/tinfo/lib_tparm.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <ctype.h>
#include <tic.h>
-MODULE_ID("$Id: lib_tparm.c,v 1.90 2013/11/09 14:53:05 tom Exp $")
+MODULE_ID("$Id: lib_tparm.c,v 1.107 2019/01/19 15:46:25 tom Exp $")
/*
* char *
@@ -253,6 +253,9 @@ parse_format(const char *s, char *format, int *len)
case 'x': /* FALLTHRU */
case 'X': /* FALLTHRU */
case 's':
+#ifdef EXP_XTERM_1005
+ case 'u':
+#endif
*format++ = *s;
done = TRUE;
break;
@@ -323,6 +326,7 @@ parse_format(const char *s, char *format, int *len)
#define isUPPER(c) ((c) >= 'A' && (c) <= 'Z')
#define isLOWER(c) ((c) >= 'a' && (c) <= 'z')
+#define tc_BUMP() if (level < 0 && number < 2) number++
/*
* Analyze the string to see how many parameters we need from the varargs list,
@@ -343,14 +347,15 @@ _nc_tparm_analyze(const char *string, char *p_is_s[NUM_PARM], int *popcount)
int lastpop = -1;
int len;
int number = 0;
+ int level = -1;
const char *cp = string;
static char dummy[] = "";
if (cp == 0)
return 0;
- if ((len2 = strlen(cp)) > TPS(fmt_size)) {
- TPS(fmt_size) = len2 + TPS(fmt_size) + 2;
+ if ((len2 = strlen(cp)) + 2 > TPS(fmt_size)) {
+ TPS(fmt_size) += len2 + 2;
TPS(fmt_buff) = typeRealloc(char, TPS(fmt_size), TPS(fmt_buff));
if (TPS(fmt_buff) == 0)
return 0;
@@ -372,22 +377,30 @@ _nc_tparm_analyze(const char *string, char *p_is_s[NUM_PARM], int *popcount)
case 'x': /* FALLTHRU */
case 'X': /* FALLTHRU */
case 'c': /* FALLTHRU */
- if (lastpop <= 0)
- number++;
+#ifdef EXP_XTERM_1005
+ case 'u':
+#endif
+ if (lastpop <= 0) {
+ tc_BUMP();
+ }
+ level -= 1;
lastpop = -1;
break;
case 'l':
case 's':
- if (lastpop > 0)
+ if (lastpop > 0) {
+ level -= 1;
p_is_s[lastpop - 1] = dummy;
- ++number;
+ }
+ tc_BUMP();
break;
case 'p':
cp++;
i = (UChar(*cp) - '0');
if (i >= 0 && i <= NUM_PARM) {
+ ++level;
lastpop = i;
if (lastpop > *popcount)
*popcount = lastpop;
@@ -395,20 +408,22 @@ _nc_tparm_analyze(const char *string, char *p_is_s[NUM_PARM], int *popcount)
break;
case 'P':
- ++number;
++cp;
break;
case 'g':
+ ++level;
cp++;
break;
case S_QUOTE:
+ ++level;
cp += 2;
lastpop = -1;
break;
case L_BRACE:
+ ++level;
cp++;
while (isdigit(UChar(*cp))) {
cp++;
@@ -428,14 +443,15 @@ _nc_tparm_analyze(const char *string, char *p_is_s[NUM_PARM], int *popcount)
case '=':
case '<':
case '>':
+ tc_BUMP();
+ level -= 1; /* pop 2, operate, push 1 */
lastpop = -1;
- number += 2;
break;
case '!':
case '~':
+ tc_BUMP();
lastpop = -1;
- ++number;
break;
case 'i':
@@ -466,9 +482,13 @@ tparam_internal(int use_TPARM_ARG, const char *string, va_list ap)
int i;
const char *cp = string;
size_t len2;
+ bool termcap_hack;
+ bool incremented_two;
- if (cp == NULL)
+ if (cp == NULL) {
+ TR(TRACE_CALLS, ("%s: format is null", TPS(tname)));
return NULL;
+ }
TPS(out_used) = 0;
len2 = strlen(cp);
@@ -479,8 +499,12 @@ tparam_internal(int use_TPARM_ARG, const char *string, va_list ap)
* variable-length argument list.
*/
number = _nc_tparm_analyze(cp, p_is_s, &popcount);
- if (TPS(fmt_buff) == 0)
+ if (TPS(fmt_buff) == 0) {
+ TR(TRACE_CALLS, ("%s: error in analysis", TPS(tname)));
return NULL;
+ }
+
+ incremented_two = FALSE;
if (number > NUM_PARM)
number = NUM_PARM;
@@ -514,8 +538,9 @@ tparam_internal(int use_TPARM_ARG, const char *string, va_list ap)
* style, which means tparam() will expand termcap strings OK.
*/
TPS(stack_ptr) = 0;
+ termcap_hack = FALSE;
if (popcount == 0) {
- popcount = number;
+ termcap_hack = TRUE;
for (i = number - 1; i >= 0; i--) {
if (p_is_s[i])
spush(p_is_s[i]);
@@ -526,10 +551,16 @@ tparam_internal(int use_TPARM_ARG, const char *string, va_list ap)
#ifdef TRACE
if (USE_TRACEF(TRACE_CALLS)) {
for (i = 0; i < num_args; i++) {
- if (p_is_s[i] != 0)
+ if (p_is_s[i] != 0) {
save_text(", %s", _nc_visbuf(p_is_s[i]), 0);
- else
+ } else if ((long) param[i] > MAX_OF_TYPE(NCURSES_INT2) ||
+ (long) param[i] < 0) {
+ _tracef("BUG: problem with tparm parameter #%d of %d",
+ i + 1, num_args);
+ break;
+ } else {
save_number(", %d", (int) param[i], 0);
+ }
}
_tracef(T_CALLED("%s(%s%s)"), TPS(tname), _nc_visbuf(cp), TPS(out_buff));
TPS(out_used) = 0;
@@ -561,6 +592,20 @@ tparam_internal(int use_TPARM_ARG, const char *string, va_list ap)
save_char(npop());
break;
+#ifdef EXP_XTERM_1005
+ case 'u':
+ {
+ unsigned char target[10];
+ unsigned source = (unsigned) npop();
+ int rc = _nc_conv_to_utf8(target, source, (unsigned)
+ sizeof(target));
+ int n;
+ for (n = 0; n < rc; ++n) {
+ save_char(target[n]);
+ }
+ }
+ break;
+#endif
case 'l':
npush((int) strlen(spop()));
break;
@@ -573,10 +618,11 @@ tparam_internal(int use_TPARM_ARG, const char *string, va_list ap)
cp++;
i = (UChar(*cp) - '1');
if (i >= 0 && i < NUM_PARM) {
- if (p_is_s[i])
+ if (p_is_s[i]) {
spush(p_is_s[i]);
- else
+ } else {
npush((int) param[i]);
+ }
}
break;
@@ -645,11 +691,15 @@ tparam_internal(int use_TPARM_ARG, const char *string, va_list ap)
break;
case 'A':
- npush(npop() && npop());
+ y = npop();
+ x = npop();
+ npush(y && x);
break;
case 'O':
- npush(npop() || npop());
+ y = npop();
+ x = npop();
+ npush(y || x);
break;
case '&':
@@ -691,10 +741,26 @@ tparam_internal(int use_TPARM_ARG, const char *string, va_list ap)
break;
case 'i':
- if (p_is_s[0] == 0)
- param[0]++;
- if (p_is_s[1] == 0)
- param[1]++;
+ /*
+ * Increment the first two parameters -- if they are numbers
+ * rather than strings. As a side effect, assign into the
+ * stack; if this is termcap, then the stack was populated
+ * using the termcap hack above rather than via the terminfo
+ * 'p' case.
+ */
+ if (!incremented_two) {
+ incremented_two = TRUE;
+ if (p_is_s[0] == 0) {
+ param[0]++;
+ if (termcap_hack)
+ TPS(stack)[0].data.num = (int) param[0];
+ }
+ if (p_is_s[1] == 0) {
+ param[1]++;
+ if (termcap_hack)
+ TPS(stack)[1].data.num = (int) param[1];
+ }
+ }
break;
case '?':
@@ -774,7 +840,7 @@ tparam_internal(int use_TPARM_ARG, const char *string, va_list ap)
#endif
NCURSES_EXPORT(char *)
-tparm_varargs(NCURSES_CONST char *string,...)
+tparm_varargs(const char *string, ...)
{
va_list ap;
char *result;
@@ -791,7 +857,7 @@ tparm_varargs(NCURSES_CONST char *string,...)
#if !NCURSES_TPARM_VARARGS
NCURSES_EXPORT(char *)
-tparm_proto(NCURSES_CONST char *string,
+tparm_proto(const char *string,
TPARM_ARG a1,
TPARM_ARG a2,
TPARM_ARG a3,
@@ -807,7 +873,7 @@ tparm_proto(NCURSES_CONST char *string,
#endif /* NCURSES_TPARM_VARARGS */
NCURSES_EXPORT(char *)
-tiparm(const char *string,...)
+tiparm(const char *string, ...)
{
va_list ap;
char *result;
diff --git a/ncurses/tinfo/lib_tputs.c b/ncurses/tinfo/lib_tputs.c
index 523678210da6..3f24a53d63b2 100644
--- a/ncurses/tinfo/lib_tputs.c
+++ b/ncurses/tinfo/lib_tputs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -51,7 +51,7 @@
#include <termcap.h> /* ospeed */
#include <tic.h>
-MODULE_ID("$Id: lib_tputs.c,v 1.93 2013/01/12 20:57:32 tom Exp $")
+MODULE_ID("$Id: lib_tputs.c,v 1.102 2019/03/17 21:57:04 tom Exp $")
NCURSES_EXPORT_VAR(char) PC = 0; /* used by termcap library */
NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed = 0; /* used by termcap library */
@@ -121,14 +121,29 @@ NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_DCL0)
{
if (SP_PARM != 0 && SP_PARM->_ofd >= 0) {
if (SP_PARM->out_inuse) {
+ char *buf = SP_PARM->out_buffer;
size_t amount = SP->out_inuse;
- /*
- * Help a little, if the write is interrupted, by first resetting
- * our amount.
- */
+
SP->out_inuse = 0;
- IGNORE_RC(write(SP_PARM->_ofd, SP_PARM->out_buffer, amount));
+ TR(TRACE_CHARPUT, ("flushing %ld bytes", (unsigned long) amount));
+ while (amount) {
+ ssize_t res = write(SP_PARM->_ofd, buf, amount);
+
+ if (res > 0) {
+ /* if the write was incomplete, try again */
+ amount -= (size_t) res;
+ buf += res;
+ } else if (errno == EAGAIN) {
+ continue;
+ } else if (errno == EINTR) {
+ continue;
+ } else {
+ break; /* an error we can not recover from */
+ }
+ }
}
+ } else {
+ fflush(stdout);
}
}
@@ -258,13 +273,16 @@ NCURSES_SP_NAME(tputs) (NCURSES_SP_DCLx
#endif /* BSD_TPUTS */
#ifdef TRACE
- char addrbuf[32];
-
if (USE_TRACEF(TRACE_TPUTS)) {
- if (outc == NCURSES_SP_NAME(_nc_outch))
+ char addrbuf[32];
+ TR_FUNC_BFR(1);
+
+ if (outc == NCURSES_SP_NAME(_nc_outch)) {
_nc_STRCPY(addrbuf, "_nc_outch", sizeof(addrbuf));
- else
- _nc_SPRINTF(addrbuf, _nc_SLIMIT(sizeof(addrbuf)) "%p", outc);
+ } else {
+ _nc_SPRINTF(addrbuf, _nc_SLIMIT(sizeof(addrbuf)) "%s",
+ TR_FUNC_ARG(0, outc));
+ }
if (_nc_tputs_trace) {
_tracef("tputs(%s = %s, %d, %s) called", _nc_tputs_trace,
_nc_visbuf(string), affcnt, addrbuf);
@@ -412,7 +430,7 @@ NCURSES_EXPORT(int)
_nc_outc_wrapper(SCREEN *sp, int c)
{
if (0 == sp) {
- return (ERR);
+ return fputc(c, stdout);
} else {
return sp->jump(c);
}
diff --git a/ncurses/tinfo/lib_ttyflags.c b/ncurses/tinfo/lib_ttyflags.c
index 700ec481271f..cf065cb68a8b 100644
--- a/ncurses/tinfo/lib_ttyflags.c
+++ b/ncurses/tinfo/lib_ttyflags.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free 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,42 +41,42 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_ttyflags.c,v 1.28 2012/01/21 19:21:29 KO.Myung-Hun Exp $")
+MODULE_ID("$Id: lib_ttyflags.c,v 1.33 2017/04/02 14:30:26 tom Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(_nc_get_tty_mode) (NCURSES_SP_DCLx TTY * buf)
{
+ TERMINAL *termp = TerminalOf(SP_PARM);
int result = OK;
- if (buf == 0 || SP_PARM == 0) {
+ if (buf == 0 || termp == 0) {
result = ERR;
} else {
- TERMINAL *termp = TerminalOf(SP_PARM);
- if (0 == termp) {
- result = ERR;
- } else {
#ifdef USE_TERM_DRIVER
- result = CallDriver_2(SP_PARM, sgmode, FALSE, buf);
+ if (SP_PARM != 0) {
+ result = CallDriver_2(SP_PARM, td_sgmode, FALSE, buf);
+ } else {
+ result = ERR;
+ }
#else
- for (;;) {
- if (GET_TTY(termp->Filedes, buf) != 0) {
- if (errno == EINTR)
- continue;
- result = ERR;
- }
- break;
+ for (;;) {
+ if (GET_TTY(termp->Filedes, buf) != 0) {
+ if (errno == EINTR)
+ continue;
+ result = ERR;
}
-#endif
+ break;
}
-
- if (result == ERR)
- memset(buf, 0, sizeof(*buf));
+#endif
TR(TRACE_BITS, ("_nc_get_tty_mode(%d): %s",
termp ? termp->Filedes : -1,
_nc_trace_ttymode(buf)));
}
+ if (result == ERR && buf != 0)
+ memset(buf, 0, sizeof(*buf));
+
return (result);
}
@@ -102,12 +102,12 @@ NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_DCLx TTY * buf)
result = ERR;
} else {
#ifdef USE_TERM_DRIVER
- result = CallDriver_2(SP_PARM, sgmode, TRUE, buf);
+ result = CallDriver_2(SP_PARM, td_sgmode, TRUE, buf);
#else
for (;;) {
if ((SET_TTY(termp->Filedes, buf) != 0)
#if USE_KLIBC_KBD
- && !isatty(termp->Filedes)
+ && !NC_ISATTY(termp->Filedes)
#endif
) {
if (errno == EINTR)
@@ -141,11 +141,12 @@ NCURSES_SP_NAME(def_shell_mode) (NCURSES_SP_DCL0)
int rc = ERR;
TERMINAL *termp = TerminalOf(SP_PARM);
- T((T_CALLED("def_shell_mode(%p)"), (void *) SP_PARM));
+ T((T_CALLED("def_shell_mode(%p) ->term %p"),
+ (void *) SP_PARM, (void *) termp));
if (termp != 0) {
#ifdef USE_TERM_DRIVER
- rc = CallDriver_2(SP_PARM, mode, FALSE, TRUE);
+ rc = CallDriver_2(SP_PARM, td_mode, FALSE, TRUE);
#else
/*
* If XTABS was on, remove the tab and backtab capabilities.
@@ -179,11 +180,11 @@ NCURSES_SP_NAME(def_prog_mode) (NCURSES_SP_DCL0)
int rc = ERR;
TERMINAL *termp = TerminalOf(SP_PARM);
- T((T_CALLED("def_prog_mode(%p)"), (void *) SP_PARM));
+ T((T_CALLED("def_prog_mode(%p) ->term %p"), (void *) SP_PARM, (void *) termp));
if (termp != 0) {
#ifdef USE_TERM_DRIVER
- rc = CallDriver_2(SP_PARM, mode, TRUE, TRUE);
+ rc = CallDriver_2(SP_PARM, td_mode, TRUE, TRUE);
#else
/*
* Turn off the XTABS bit in the tty structure if it was on.
@@ -215,17 +216,16 @@ NCURSES_SP_NAME(reset_prog_mode) (NCURSES_SP_DCL0)
int rc = ERR;
TERMINAL *termp = TerminalOf(SP_PARM);
- T((T_CALLED("reset_prog_mode(%p)"), (void *) SP_PARM));
+ T((T_CALLED("reset_prog_mode(%p) ->term %p"), (void *) SP_PARM, (void *) termp));
if (termp != 0) {
#ifdef USE_TERM_DRIVER
- rc = CallDriver_2(SP_PARM, mode, TRUE, FALSE);
+ rc = CallDriver_2(SP_PARM, td_mode, TRUE, FALSE);
#else
if (_nc_set_tty_mode(&termp->Nttyb) == OK) {
if (SP_PARM) {
if (SP_PARM->_keypad_on)
_nc_keypad(SP_PARM, TRUE);
- NC_BUFFERED(SP_PARM, TRUE);
}
rc = OK;
}
@@ -248,16 +248,16 @@ NCURSES_SP_NAME(reset_shell_mode) (NCURSES_SP_DCL0)
int rc = ERR;
TERMINAL *termp = TerminalOf(SP_PARM);
- T((T_CALLED("reset_shell_mode(%p)"), (void *) SP_PARM));
+ T((T_CALLED("reset_shell_mode(%p) ->term %p"),
+ (void *) SP_PARM, (void *) termp));
if (termp != 0) {
#ifdef USE_TERM_DRIVER
- rc = CallDriver_2(SP_PARM, mode, FALSE, FALSE);
+ rc = CallDriver_2(SP_PARM, td_mode, FALSE, FALSE);
#else
if (SP_PARM) {
_nc_keypad(SP_PARM, FALSE);
_nc_flush();
- NC_BUFFERED(SP_PARM, FALSE);
}
rc = _nc_set_tty_mode(&termp->Ottyb);
#endif
diff --git a/ncurses/tinfo/make_hash.c b/ncurses/tinfo/make_hash.c
index 37ac7651424c..11a10546a925 100644
--- a/ncurses/tinfo/make_hash.c
+++ b/ncurses/tinfo/make_hash.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2019,2020 Free 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,6 @@
/*
* make_hash.c --- build-time program for constructing comp_captab.c
- *
*/
#include <build.priv.h>
@@ -44,14 +43,14 @@
#include <ctype.h>
-MODULE_ID("$Id: make_hash.c,v 1.13 2013/09/28 20:55:47 tom Exp $")
+MODULE_ID("$Id: make_hash.c,v 1.30 2020/01/18 17:02:38 tom Exp $")
/*
* _nc_make_hash_table()
*
* Takes the entries in table[] and hashes them into hash_table[]
- * by name. There are CAPTABSIZE entries in table[] and HASHTABSIZE
- * slots in hash_table[].
+ * by name. There are CAPTABSIZE entries in the predefined table[]
+ * and HASHTABSIZE slots in hash_table[].
*
*/
@@ -59,6 +58,14 @@ MODULE_ID("$Id: make_hash.c,v 1.13 2013/09/28 20:55:47 tom Exp $")
#define MODULE_ID(id) /*nothing */
#include <tinfo/doalloc.c>
+#define L_PAREN "("
+#define R_PAREN ")"
+#define L_BRACE "{"
+#define R_BRACE "}"
+
+static const char *typenames[] =
+{"BOOLEAN", "NUMBER", "STRING"};
+
static void
failed(const char *s)
{
@@ -82,7 +89,7 @@ strmalloc(char *s)
*
* Computes the hashing function on the given string.
*
- * The current hash function is the sum of each consectutive pair
+ * The current hash function is the sum of each consecutive pair
* of characters, taken as two-byte integers, mod HASHTABSIZE.
*
*/
@@ -101,28 +108,29 @@ hash_function(const char *string)
}
static void
-_nc_make_hash_table(struct name_table_entry *table,
- HashValue * hash_table)
+_nc_make_hash_table(struct user_table_entry *table,
+ HashValue * hash_table,
+ unsigned tablesize)
{
- short i;
+ unsigned i;
int hashvalue;
int collisions = 0;
for (i = 0; i < HASHTABSIZE; i++) {
hash_table[i] = -1;
}
- for (i = 0; i < CAPTABSIZE; i++) {
- hashvalue = hash_function(table[i].nte_name);
+ for (i = 0; i < tablesize; i++) {
+ hashvalue = hash_function(table[i].ute_name);
if (hash_table[hashvalue] >= 0)
collisions++;
if (hash_table[hashvalue] != 0)
- table[i].nte_link = hash_table[hashvalue];
- hash_table[hashvalue] = i;
+ table[i].ute_link = hash_table[hashvalue];
+ hash_table[hashvalue] = (HashValue) i;
}
- printf("/* %d collisions out of %d entries */\n", collisions, CAPTABSIZE);
+ printf("/* %d collisions out of %d entries */\n", collisions, tablesize);
}
/*
@@ -156,10 +164,18 @@ parse_columns(char *buffer)
int col = 0;
- if (list == 0 && (list = typeCalloc(char *, (MAX_COLUMNS + 1))) == 0)
- return (0);
+ if (buffer == 0) {
+ free(list);
+ list = 0;
+ return 0;
+ }
if (*buffer != '#') {
+ if (list == 0) {
+ list = typeCalloc(char *, (MAX_COLUMNS + 1));
+ if (list == 0)
+ return (0);
+ }
while (*buffer != '\0') {
char *s;
for (s = buffer; (*s != '\0') && !isspace(UChar(*s)); s++)
@@ -188,21 +204,58 @@ parse_columns(char *buffer)
return col ? list : 0;
}
+#define SetType(n,t) \
+ if (is_user) \
+ name_table[n].ute_type |= (int)(1 << (t)); \
+ else \
+ name_table[n].ute_type = (t)
+
+#define GetType(n) \
+ (is_user \
+ ? get_type(name_table[n].ute_type) \
+ : typenames[name_table[n].ute_type])
+
+static char *
+get_type(int type_mask)
+{
+ static char result[80];
+ unsigned n;
+ _nc_STRCPY(result, L_PAREN, sizeof(result));
+ for (n = 0; n < 3; ++n) {
+ if ((1 << n) & type_mask) {
+ size_t want = 5 + strlen(typenames[n]);
+ if (want > sizeof(result)) {
+ fprintf(stderr, "Buffer is not large enough for %s + %s\n",
+ result, typenames[n]);
+ exit(EXIT_FAILURE);
+ }
+ if (result[1])
+ _nc_STRCAT(result, "|", sizeof(result));
+ _nc_STRCAT(result, "1<<", sizeof(result));
+ _nc_STRCAT(result, typenames[n], sizeof(result));
+ }
+ }
+ _nc_STRCAT(result, R_PAREN, sizeof(result));
+ return result;
+}
+
int
main(int argc, char **argv)
{
- struct name_table_entry *name_table = typeCalloc(struct
- name_table_entry, CAPTABSIZE);
+ unsigned tablesize = CAPTABSIZE;
+ struct user_table_entry *name_table = typeCalloc(struct
+ user_table_entry, tablesize);
HashValue *hash_table = typeCalloc(HashValue, HASHTABSIZE);
const char *root_name = "";
int column = 0;
int bigstring = 0;
- int n;
+ unsigned n;
+ unsigned nn;
+ unsigned tableused = 0;
+ bool is_user;
+ const char *table_name;
char buffer[BUFSIZ];
- static const char *typenames[] =
- {"BOOLEAN", "NUMBER", "STRING"};
-
short BoolCount = 0;
short NumCount = 0;
short StrCount = 0;
@@ -220,42 +273,80 @@ main(int argc, char **argv)
fprintf(stderr, "usage: make_hash column root_name bigstring\n");
exit(EXIT_FAILURE);
}
+ is_user = (*root_name == 'u');
+ table_name = (is_user ? "user" : "name");
/*
* Read the table into our arrays.
*/
- for (n = 0; (n < CAPTABSIZE) && fgets(buffer, BUFSIZ, stdin);) {
- char **list, *nlp = strchr(buffer, '\n');
+ for (n = 0; (n < tablesize) && fgets(buffer, BUFSIZ, stdin);) {
+ char **list;
+ char *nlp = strchr(buffer, '\n');
if (nlp)
*nlp = '\0';
+ else
+ buffer[sizeof(buffer) - 2] = '\0';
list = parse_columns(buffer);
if (list == 0) /* blank or comment */
continue;
- if (column > count_columns(list)) {
+ if (is_user) {
+ if (strcmp(list[0], "userdef"))
+ continue;
+ } else if (!strcmp(list[0], "userdef")) {
+ continue;
+ }
+ if (column < 0 || column > count_columns(list)) {
fprintf(stderr, "expected %d columns, have %d:\n%s\n",
column,
count_columns(list),
buffer);
exit(EXIT_FAILURE);
}
- name_table[n].nte_link = -1; /* end-of-hash */
- name_table[n].nte_name = strmalloc(list[column]);
+ nn = tableused;
+ if (is_user) {
+ unsigned j;
+ for (j = 0; j < tableused; ++j) {
+ if (!strcmp(list[column], name_table[j].ute_name)) {
+ nn = j;
+ break;
+ }
+ }
+ }
+ if (nn == tableused) {
+ name_table[nn].ute_link = -1; /* end-of-hash */
+ name_table[nn].ute_name = strmalloc(list[column]);
+ ++tableused;
+ }
+
if (!strcmp(list[2], "bool")) {
- name_table[n].nte_type = BOOLEAN;
- name_table[n].nte_index = BoolCount++;
+ SetType(nn, BOOLEAN);
+ name_table[nn].ute_index = BoolCount++;
} else if (!strcmp(list[2], "num")) {
- name_table[n].nte_type = NUMBER;
- name_table[n].nte_index = NumCount++;
+ SetType(nn, NUMBER);
+ name_table[nn].ute_index = NumCount++;
} else if (!strcmp(list[2], "str")) {
- name_table[n].nte_type = STRING;
- name_table[n].nte_index = StrCount++;
+ SetType(nn, STRING);
+ name_table[nn].ute_index = StrCount++;
+ if (is_user) {
+ if (*list[3] != '-') {
+ unsigned j;
+ name_table[nn].ute_argc = (unsigned) strlen(list[3]);
+ for (j = 0; j < name_table[nn].ute_argc; ++j) {
+ if (list[3][j] == 's') {
+ name_table[nn].ute_args |= (1U << j);
+ }
+ }
+ }
+ }
} else {
fprintf(stderr, "Unknown type: %s\n", list[2]);
exit(EXIT_FAILURE);
}
n++;
}
- _nc_make_hash_table(name_table, hash_table);
+ if (tablesize > tableused)
+ tablesize = tableused;
+ _nc_make_hash_table(name_table, hash_table, tablesize);
/*
* Write the compiled tables to standard output
@@ -265,66 +356,86 @@ main(int argc, char **argv)
int nxt;
printf("static const char %s_names_text[] = \\\n", root_name);
- for (n = 0; n < CAPTABSIZE; n++) {
- nxt = (int) strlen(name_table[n].nte_name) + 5;
+ for (n = 0; n < tablesize; n++) {
+ nxt = (int) strlen(name_table[n].ute_name) + 5;
if (nxt + len > 72) {
printf("\\\n");
len = 0;
}
- printf("\"%s\\0\" ", name_table[n].nte_name);
+ printf("\"%s\\0\" ", name_table[n].ute_name);
len += nxt;
}
printf(";\n\n");
len = 0;
- printf("static name_table_data const %s_names_data[] =\n",
+ printf("static %s_table_data const %s_names_data[] =\n",
+ table_name,
root_name);
- printf("{\n");
- for (n = 0; n < CAPTABSIZE; n++) {
- printf("\t{ %15d,\t%10s,\t%3d, %3d }%c\n",
- len,
- typenames[name_table[n].nte_type],
- name_table[n].nte_index,
- name_table[n].nte_link,
- n < CAPTABSIZE - 1 ? ',' : ' ');
- len += (int) strlen(name_table[n].nte_name) + 1;
+ printf("%s\n", L_BRACE);
+ for (n = 0; n < tablesize; n++) {
+ printf("\t%s %15d,\t%10s,", L_BRACE, len, GetType(n));
+ if (is_user)
+ printf("\t%d,%d,",
+ name_table[n].ute_argc,
+ name_table[n].ute_args);
+ printf("\t%3d, %3d %s%c\n",
+ name_table[n].ute_index,
+ name_table[n].ute_link,
+ R_BRACE,
+ n < tablesize - 1 ? ',' : ' ');
+ len += (int) strlen(name_table[n].ute_name) + 1;
}
- printf("};\n\n");
- printf("static struct name_table_entry *_nc_%s_table = 0;\n\n", root_name);
+ printf("%s;\n\n", R_BRACE);
+ printf("static struct %s_table_entry *_nc_%s_table = 0;\n\n",
+ table_name,
+ root_name);
} else {
- printf("static struct name_table_entry const _nc_%s_table[] =\n",
+ printf("static struct %s_table_entry const _nc_%s_table[] =\n",
+ table_name,
root_name);
- printf("{\n");
- for (n = 0; n < CAPTABSIZE; n++) {
+ printf("%s\n", L_BRACE);
+ for (n = 0; n < tablesize; n++) {
_nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) "\"%s\"",
- name_table[n].nte_name);
- printf("\t{ %15s,\t%10s,\t%3d, %3d }%c\n",
- buffer,
- typenames[name_table[n].nte_type],
- name_table[n].nte_index,
- name_table[n].nte_link,
- n < CAPTABSIZE - 1 ? ',' : ' ');
+ name_table[n].ute_name);
+ printf("\t%s %15s,\t%10s,", L_BRACE, buffer, GetType(n));
+ if (is_user)
+ printf("\t%d,%d,",
+ name_table[n].ute_argc,
+ name_table[n].ute_args);
+ printf("\t%3d, %3d %s%c\n",
+ name_table[n].ute_index,
+ name_table[n].ute_link,
+ R_BRACE,
+ n < tablesize - 1 ? ',' : ' ');
}
- printf("};\n\n");
+ printf("%s;\n\n", R_BRACE);
}
printf("static const HashValue _nc_%s_hash_table[%d] =\n",
root_name,
HASHTABSIZE + 1);
- printf("{\n");
+ printf("%s\n", L_BRACE);
for (n = 0; n < HASHTABSIZE; n++) {
printf("\t%3d,\n", hash_table[n]);
}
printf("\t0\t/* base-of-table */\n");
- printf("};\n\n");
-
- printf("#if (BOOLCOUNT!=%d)||(NUMCOUNT!=%d)||(STRCOUNT!=%d)\n",
- BoolCount, NumCount, StrCount);
- printf("#error\t--> term.h and comp_captab.c disagree about the <--\n");
- printf("#error\t--> numbers of booleans, numbers and/or strings <--\n");
- printf("#endif\n\n");
+ printf("%s;\n\n", R_BRACE);
+
+ if (!is_user) {
+ printf("#if (BOOLCOUNT!=%d)||(NUMCOUNT!=%d)||(STRCOUNT!=%d)\n",
+ BoolCount, NumCount, StrCount);
+ printf("#error\t--> term.h and comp_captab.c disagree about the <--\n");
+ printf("#error\t--> numbers of booleans, numbers and/or strings <--\n");
+ printf("#endif\n\n");
+ }
free(hash_table);
+ for (n = 0; (n < tablesize); ++n) {
+ free((void *) name_table[n].ute_name);
+ }
+ free(name_table);
+ parse_columns(0);
+
return EXIT_SUCCESS;
}
diff --git a/ncurses/tinfo/make_keys.c b/ncurses/tinfo/make_keys.c
index f44f7c77ff7e..fa0c2f2706e0 100644
--- a/ncurses/tinfo/make_keys.c
+++ b/ncurses/tinfo/make_keys.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2015 Free 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,11 +39,26 @@
#define USE_TERMLIB 1
#include <build.priv.h>
-MODULE_ID("$Id: make_keys.c,v 1.20 2011/10/22 16:34:50 tom Exp $")
+MODULE_ID("$Id: make_keys.c,v 1.21 2015/07/16 01:10:03 tom Exp $")
#include <names.c>
-#define UNKNOWN (unsigned) (SIZEOF(strnames) + SIZEOF(strfnames))
+static unsigned
+unknown(void)
+{
+ static unsigned result = 0;
+
+ if (result == 0) {
+ unsigned n;
+ for (n = 0; strnames[n] != 0; n++) {
+ ++result;
+ }
+ for (n = 0; strfnames[n] != 0; n++) {
+ ++result;
+ }
+ }
+ return result;
+}
static unsigned
lookup(const char *name)
@@ -64,7 +79,7 @@ lookup(const char *name)
}
}
}
- return found ? n : UNKNOWN;
+ return found ? n : unknown();
}
static void
@@ -73,6 +88,7 @@ make_keys(FILE *ifp, FILE *ofp)
char buffer[BUFSIZ];
char from[256];
char to[256];
+ unsigned ignore = unknown();
unsigned maxlen = 16;
int scanned;
@@ -86,7 +102,7 @@ make_keys(FILE *ifp, FILE *ofp)
scanned = sscanf(buffer, "%255s %255s", to, from);
if (scanned == 2) {
unsigned code = lookup(from);
- if (code == UNKNOWN)
+ if (code == ignore)
continue;
if (strlen(from) > maxlen)
maxlen = (unsigned) strlen(from);
diff --git a/ncurses/tinfo/name_match.c b/ncurses/tinfo/name_match.c
index c648535526d2..376e68df4229 100644
--- a/ncurses/tinfo/name_match.c
+++ b/ncurses/tinfo/name_match.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2013,2016 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -33,7 +33,7 @@
#include <curses.priv.h>
#include <tic.h>
-MODULE_ID("$Id: name_match.c,v 1.23 2013/05/25 20:20:08 tom Exp $")
+MODULE_ID("$Id: name_match.c,v 1.24 2016/05/28 23:22:52 tom Exp $")
#define FirstName _nc_globals.first_name
@@ -58,8 +58,6 @@ skip_index(const char *name)
NCURSES_EXPORT(char *)
_nc_first_name(const char *const sp)
{
- unsigned n;
-
#if NO_LEAKS
if (sp == 0) {
if (FirstName != 0) {
@@ -72,6 +70,7 @@ _nc_first_name(const char *const sp)
FirstName = typeMalloc(char, MAX_NAME_SIZE + 1);
if (FirstName != 0) {
+ unsigned n;
const char *src = sp;
#if NCURSES_USE_TERMCAP && NCURSES_XNAMES
src = skip_index(sp);
@@ -93,11 +92,13 @@ _nc_first_name(const char *const sp)
NCURSES_EXPORT(int)
_nc_name_match(const char *const namelst, const char *const name, const char *const delim)
{
- const char *s, *d, *t;
- int code, found;
+ const char *s;
if ((s = namelst) != 0) {
while (*s != '\0') {
+ const char *d, *t;
+ int code, found;
+
for (d = name; *d != '\0'; d++) {
if (*s != *d)
break;
diff --git a/ncurses/tinfo/obsolete.c b/ncurses/tinfo/obsolete.c
index 9b62917d7ccf..37f9de34b147 100644
--- a/ncurses/tinfo/obsolete.c
+++ b/ncurses/tinfo/obsolete.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2013-2016,2020 Free 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,19 +27,19 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey 2013 *
+ * Author: Thomas E. Dickey 2013-on *
****************************************************************************/
/*
-** Support for obsolete features.
+** Support for obsolete/unusual features.
*/
#include <curses.priv.h>
-MODULE_ID("$Id: obsolete.c,v 1.1 2013/01/26 22:07:51 tom Exp $")
+MODULE_ID("$Id: obsolete.c,v 1.5 2020/01/18 17:02:38 tom Exp $")
/*
- * Obsolete entrypoint retained for binary compatbility.
+ * Obsolete entrypoint retained for binary compatibility.
*/
NCURSES_EXPORT(void)
NCURSES_SP_NAME(_nc_set_buffer) (NCURSES_SP_DCLx FILE *ofp, int buffered)
@@ -68,7 +68,7 @@ _nc_strdup(const char *s)
size_t need = strlen(s);
result = malloc(need + 1);
if (result != 0) {
- strcpy(result, s);
+ _nc_STRCPY(result, s, need);
}
}
return result;
@@ -100,3 +100,140 @@ _nc_memmove(void *s1, const void *s2, size_t n)
return s1;
}
#endif /* USE_MY_MEMMOVE */
+
+#ifdef EXP_XTERM_1005
+NCURSES_EXPORT(int)
+_nc_conv_to_utf8(unsigned char *target, unsigned source, unsigned limit)
+{
+#define CH(n) UChar((source) >> ((n) * 8))
+ int rc = 0;
+
+ if (source <= 0x0000007f)
+ rc = 1;
+ else if (source <= 0x000007ff)
+ rc = 2;
+ else if (source <= 0x0000ffff)
+ rc = 3;
+ else if (source <= 0x001fffff)
+ rc = 4;
+ else if (source <= 0x03ffffff)
+ rc = 5;
+ else /* (source <= 0x7fffffff) */
+ rc = 6;
+
+ if ((unsigned) rc > limit) { /* whatever it is, we cannot decode it */
+ rc = 0;
+ }
+
+ if (target != 0) {
+ switch (rc) {
+ case 1:
+ target[0] = CH(0);
+ break;
+
+ case 2:
+ target[1] = UChar(0x80 | (CH(0) & 0x3f));
+ target[0] = UChar(0xc0 | (CH(0) >> 6) | ((CH(1) & 0x07) << 2));
+ break;
+
+ case 3:
+ target[2] = UChar(0x80 | (CH(0) & 0x3f));
+ target[1] = UChar(0x80 | (CH(0) >> 6) | ((CH(1) & 0x0f) << 2));
+ target[0] = UChar(0xe0 | ((int) (CH(1) & 0xf0) >> 4));
+ break;
+
+ case 4:
+ target[3] = UChar(0x80 | (CH(0) & 0x3f));
+ target[2] = UChar(0x80 | (CH(0) >> 6) | ((CH(1) & 0x0f) << 2));
+ target[1] = UChar(0x80 |
+ ((int) (CH(1) & 0xf0) >> 4) |
+ ((int) (CH(2) & 0x03) << 4));
+ target[0] = UChar(0xf0 | ((int) (CH(2) & 0x1f) >> 2));
+ break;
+
+ case 5:
+ target[4] = UChar(0x80 | (CH(0) & 0x3f));
+ target[3] = UChar(0x80 | (CH(0) >> 6) | ((CH(1) & 0x0f) << 2));
+ target[2] = UChar(0x80 |
+ ((int) (CH(1) & 0xf0) >> 4) |
+ ((int) (CH(2) & 0x03) << 4));
+ target[1] = UChar(0x80 | (CH(2) >> 2));
+ target[0] = UChar(0xf8 | (CH(3) & 0x03));
+ break;
+
+ case 6:
+ target[5] = UChar(0x80 | (CH(0) & 0x3f));
+ target[4] = UChar(0x80 | (CH(0) >> 6) | ((CH(1) & 0x0f) << 2));
+ target[3] = UChar(0x80 | (CH(1) >> 4) | ((CH(2) & 0x03) << 4));
+ target[2] = UChar(0x80 | (CH(2) >> 2));
+ target[1] = UChar(0x80 | (CH(3) & 0x3f));
+ target[0] = UChar(0xfc | ((int) (CH(3) & 0x40) >> 6));
+ break;
+ }
+ }
+
+ return rc; /* number of bytes needed in target */
+#undef CH
+}
+
+NCURSES_EXPORT(int)
+_nc_conv_to_utf32(unsigned *target, const char *source, unsigned limit)
+{
+#define CH(n) UChar((*target) >> ((n) * 8))
+ int rc = 0;
+ int j;
+ unsigned mask = 0;
+
+ /*
+ * Find the number of bytes we will need from the source.
+ */
+ if ((*source & 0x80) == 0) {
+ rc = 1;
+ mask = (unsigned) *source;
+ } else if ((*source & 0xe0) == 0xc0) {
+ rc = 2;
+ mask = (unsigned) (*source & 0x1f);
+ } else if ((*source & 0xf0) == 0xe0) {
+ rc = 3;
+ mask = (unsigned) (*source & 0x0f);
+ } else if ((*source & 0xf8) == 0xf0) {
+ rc = 4;
+ mask = (unsigned) (*source & 0x07);
+ } else if ((*source & 0xfc) == 0xf8) {
+ rc = 5;
+ mask = (unsigned) (*source & 0x03);
+ } else if ((*source & 0xfe) == 0xfc) {
+ rc = 6;
+ mask = (unsigned) (*source & 0x01);
+ }
+
+ if ((unsigned) rc > limit) { /* whatever it is, we cannot decode it */
+ rc = 0;
+ }
+
+ /*
+ * sanity-check.
+ */
+ if (rc > 1) {
+ for (j = 1; j < rc; j++) {
+ if ((source[j] & 0xc0) != 0x80)
+ break;
+ }
+ if (j != rc) {
+ rc = 0;
+ }
+ }
+
+ if (target != 0) {
+ int shift = 0;
+ *target = 0;
+ for (j = 1; j < rc; j++) {
+ *target |= (unsigned) (source[rc - j] & 0x3f) << shift;
+ shift += 6;
+ }
+ *target |= mask << shift;
+ }
+ return rc;
+#undef CH
+}
+#endif /* EXP_XTERM_1005 */
diff --git a/ncurses/tinfo/parse_entry.c b/ncurses/tinfo/parse_entry.c
index 2936a64369a8..064376c5e699 100644
--- a/ncurses/tinfo/parse_entry.c
+++ b/ncurses/tinfo/parse_entry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,7 +47,7 @@
#include <ctype.h>
#include <tic.h>
-MODULE_ID("$Id: parse_entry.c,v 1.79 2012/10/27 21:43:45 tom Exp $")
+MODULE_ID("$Id: parse_entry.c,v 1.98 2019/10/12 00:50:31 tom Exp $")
#ifdef LINT
static short const parametrized[] =
@@ -56,17 +56,17 @@ static short const parametrized[] =
#include <parametrized.h>
#endif
-static void postprocess_termcap(TERMTYPE *, bool);
-static void postprocess_terminfo(TERMTYPE *);
+static void postprocess_termcap(TERMTYPE2 *, bool);
+static void postprocess_terminfo(TERMTYPE2 *);
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)
+_nc_extend_names(ENTRY * entryp, const char *name, int token_type)
{
static struct name_table_entry temp;
- TERMTYPE *tp = &(entryp->tterm);
+ TERMTYPE2 *tp = &(entryp->tterm);
unsigned offset = 0;
unsigned actual;
unsigned tindex;
@@ -152,7 +152,7 @@ _nc_extend_names(ENTRY * entryp, char *name, int token_type)
case NUMBER:
tp->ext_Numbers++;
tp->num_Numbers++;
- TYPE_REALLOC(short, tp->num_Numbers, tp->Numbers);
+ TYPE_REALLOC(NCURSES_INT2, tp->num_Numbers, tp->Numbers);
for_each_value(tp->num_Numbers)
tp->Numbers[last] = tp->Numbers[last - 1];
break;
@@ -178,8 +178,55 @@ _nc_extend_names(ENTRY * entryp, char *name, int token_type)
return &temp;
}
+
+static const char *
+usertype2s(int mask)
+{
+ const char *result = "unknown";
+ if (mask & (1 << BOOLEAN)) {
+ result = "boolean";
+ } else if (mask & (1 << NUMBER)) {
+ result = "number";
+ } else if (mask & (1 << STRING)) {
+ result = "string";
+ }
+ return result;
+}
+
+static bool
+expected_type(const char *name, int token_type, bool silent)
+{
+ struct user_table_entry const *entry = _nc_find_user_entry(name);
+ bool result = TRUE;
+ if ((entry != 0) && (token_type != CANCEL)) {
+ int have_type = (1 << token_type);
+ if (!(entry->ute_type & have_type)) {
+ if (!silent)
+ _nc_warning("expected %s-type for %s, have %s",
+ usertype2s(entry->ute_type),
+ name,
+ usertype2s(have_type));
+ result = FALSE;
+ }
+ }
+ return result;
+}
#endif /* NCURSES_XNAMES */
+static bool
+valid_entryname(const char *name)
+{
+ bool result = TRUE;
+ int ch;
+ while ((ch = UChar(*name++)) != '\0') {
+ if (ch <= ' ' || ch > '~' || ch == '/') {
+ result = FALSE;
+ break;
+ }
+ }
+ return result;
+}
+
/*
* int
* _nc_parse_entry(entry, literal, silent)
@@ -203,14 +250,15 @@ _nc_extend_names(ENTRY * entryp, char *name, int token_type)
{ bad_tc_usage = TRUE; \
_nc_warning("Legacy termcap allows only a trailing tc= clause"); }
-#define MAX_NUMBER 0x7fff /* positive shorts only */
+#define MAX_NUMBER MAX_OF_TYPE(NCURSES_INT2)
NCURSES_EXPORT(int)
-_nc_parse_entry(struct entry *entryp, int literal, bool silent)
+_nc_parse_entry(ENTRY * entryp, int literal, bool silent)
{
int token_type;
struct name_table_entry const *entry_ptr;
char *ptr, *base;
+ const char *name;
bool bad_tc_usage = FALSE;
token_type = _nc_get_token(silent);
@@ -220,7 +268,7 @@ _nc_parse_entry(struct entry *entryp, int literal, bool silent)
if (token_type != NAMES)
_nc_err_abort("Entry does not start with terminal names in column one");
- _nc_init_entry(&entryp->tterm);
+ _nc_init_entry(entryp);
entryp->cstart = _nc_comment_start;
entryp->cend = _nc_comment_end;
@@ -236,13 +284,14 @@ _nc_parse_entry(struct entry *entryp, int literal, bool silent)
* implemented it. Note that the resulting terminal type was never the
* 2-character name, but was instead the first alias after that.
*/
+#define ok_TC2(s) (isgraph(UChar(s)) && (s) != '|')
ptr = _nc_curr_token.tk_name;
if (_nc_syntax == SYN_TERMCAP
#if NCURSES_XNAMES
&& !_nc_user_definable
#endif
) {
- if (ptr[2] == '|') {
+ if (ok_TC2(ptr[0]) && ok_TC2(ptr[1]) && (ptr[2] == '|')) {
ptr += 3;
_nc_curr_token.tk_name[2] = '\0';
}
@@ -260,7 +309,12 @@ _nc_parse_entry(struct entry *entryp, int literal, bool silent)
* results in the terminal type getting prematurely set to correspond
* to that of the next entry.
*/
- _nc_set_type(_nc_first_name(entryp->tterm.term_names));
+ name = _nc_first_name(entryp->tterm.term_names);
+ if (!valid_entryname(name)) {
+ _nc_warning("invalid entry name \"%s\"", name);
+ name = "invalid";
+ }
+ _nc_set_type(name);
/* check for overly-long names and aliases */
for (base = entryp->tterm.term_names; (ptr = strchr(base, '|')) != 0;
@@ -282,6 +336,19 @@ _nc_parse_entry(struct entry *entryp, int literal, bool silent)
bool is_use = (strcmp(_nc_curr_token.tk_name, "use") == 0);
bool is_tc = !is_use && (strcmp(_nc_curr_token.tk_name, "tc") == 0);
if (is_use || is_tc) {
+ if (!VALID_STRING(_nc_curr_token.tk_valstring)
+ || _nc_curr_token.tk_valstring[0] == '\0') {
+ _nc_warning("missing name for use-clause");
+ continue;
+ } else if (!valid_entryname(_nc_curr_token.tk_valstring)) {
+ _nc_warning("invalid name for use-clause \"%s\"",
+ _nc_curr_token.tk_valstring);
+ continue;
+ } else if (entryp->nuses >= MAX_USES) {
+ _nc_warning("too many use-clauses, ignored \"%s\"",
+ _nc_curr_token.tk_valstring);
+ continue;
+ }
entryp->uses[entryp->nuses].name = _nc_save_str(_nc_curr_token.tk_valstring);
entryp->uses[entryp->nuses].line = _nc_curr_line;
entryp->nuses++;
@@ -351,12 +418,20 @@ _nc_parse_entry(struct entry *entryp, int literal, bool silent)
* 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) {
- if (_nc_tracing >= DEBUG_LEVEL(1))
- _nc_warning("extended capability '%s'", _nc_curr_token.tk_name);
+ && _nc_user_definable) {
+ if (expected_type(_nc_curr_token.tk_name, token_type, silent)) {
+ if ((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);
+ }
+ }
+ } else {
+ /* ignore it: we have already printed error message */
+ continue;
+ }
}
#endif /* NCURSES_XNAMES */
@@ -369,7 +444,16 @@ _nc_parse_entry(struct entry *entryp, int literal, bool silent)
}
/* deal with bad type/value combinations. */
- if (token_type != CANCEL && entry_ptr->nte_type != token_type) {
+ if (token_type == CANCEL) {
+ /*
+ * Prefer terminfo in this (long-obsolete) ambiguity:
+ */
+ if (!strcmp("ma", _nc_curr_token.tk_name)) {
+ entry_ptr = _nc_find_type_entry("ma", NUMBER,
+ _nc_syntax != 0);
+ assert(entry_ptr != 0);
+ }
+ } else if (entry_ptr->nte_type != token_type) {
/*
* Nasty special cases here handle situations in which type
* information can resolve name clashes. Normal lookup
@@ -446,11 +530,14 @@ _nc_parse_entry(struct entry *entryp, int literal, bool silent)
break;
case NUMBER:
+#if !NCURSES_EXT_NUMBERS
if (_nc_curr_token.tk_valnumber > MAX_NUMBER) {
entryp->tterm.Numbers[entry_ptr->nte_index] = MAX_NUMBER;
- } else {
+ } else
+#endif
+ {
entryp->tterm.Numbers[entry_ptr->nte_index] =
- (short) _nc_curr_token.tk_valnumber;
+ (NCURSES_INT2) _nc_curr_token.tk_valnumber;
}
break;
@@ -486,23 +573,26 @@ _nc_parse_entry(struct entry *entryp, int literal, bool silent)
if (!literal) {
if (_nc_syntax == SYN_TERMCAP) {
bool has_base_entry = FALSE;
- unsigned i;
/*
* Don't insert defaults if this is a `+' entry meant only
* for inclusion in other entries (not sure termcap ever
* had these, actually).
*/
- if (strchr(entryp->tterm.term_names, '+'))
+ if (strchr(entryp->tterm.term_names, '+')) {
has_base_entry = TRUE;
- else
+ } else {
+ unsigned i;
/*
* Otherwise, look for a base entry that will already
* have picked up defaults via translation.
*/
- for (i = 0; i < entryp->nuses; i++)
- if (!strchr((char *) entryp->uses[i].name, '+'))
+ for (i = 0; i < entryp->nuses; i++) {
+ if (entryp->uses[i].name != 0
+ && !strchr(entryp->uses[i].name, '+'))
has_base_entry = TRUE;
+ }
+ }
postprocess_termcap(&entryp->tterm, has_base_entry);
} else
@@ -517,52 +607,59 @@ NCURSES_EXPORT(int)
_nc_capcmp(const char *s, const char *t)
/* compare two string capabilities, stripping out padding */
{
- if (!VALID_STRING(s) && !VALID_STRING(t))
- return (0);
- else if (!VALID_STRING(s) || !VALID_STRING(t))
- return (1);
-
- for (;;) {
- if (s[0] == '$' && s[1] == '<') {
- for (s += 2;; s++)
- if (!(isdigit(UChar(*s))
- || *s == '.'
- || *s == '*'
- || *s == '/'
- || *s == '>'))
- break;
- }
+ bool ok_s = VALID_STRING(s);
+ bool ok_t = VALID_STRING(t);
+
+ if (ok_s && ok_t) {
+ for (;;) {
+ if (s[0] == '$' && s[1] == '<') {
+ for (s += 2;; s++) {
+ if (!(isdigit(UChar(*s))
+ || *s == '.'
+ || *s == '*'
+ || *s == '/'
+ || *s == '>')) {
+ break;
+ }
+ }
+ }
- if (t[0] == '$' && t[1] == '<') {
- for (t += 2;; t++)
- if (!(isdigit(UChar(*t))
- || *t == '.'
- || *t == '*'
- || *t == '/'
- || *t == '>'))
- break;
- }
+ if (t[0] == '$' && t[1] == '<') {
+ for (t += 2;; t++) {
+ if (!(isdigit(UChar(*t))
+ || *t == '.'
+ || *t == '*'
+ || *t == '/'
+ || *t == '>')) {
+ break;
+ }
+ }
+ }
- /* we've now pushed s and t past any padding they were pointing at */
+ /* we've now pushed s and t past any padding they pointed at */
- if (*s == '\0' && *t == '\0')
- return (0);
+ if (*s == '\0' && *t == '\0')
+ return (0);
- if (*s != *t)
- return (*t - *s);
+ if (*s != *t)
+ return (*t - *s);
- /* else *s == *t but one is not NUL, so continue */
- s++, t++;
+ /* else *s == *t but one is not NUL, so continue */
+ s++, t++;
+ }
+ } else if (ok_s || ok_t) {
+ return 1;
}
+ return 0;
}
static void
-append_acs0(string_desc * dst, int code, int src)
+append_acs0(string_desc * dst, int code, char *src, size_t off)
{
- if (src != 0) {
+ if (src != 0 && off < strlen(src)) {
char temp[3];
temp[0] = (char) code;
- temp[1] = (char) src;
+ temp[1] = src[off];
temp[2] = 0;
_nc_safe_strcat(dst, temp);
}
@@ -571,8 +668,8 @@ append_acs0(string_desc * dst, int code, int src)
static void
append_acs(string_desc * dst, int code, char *src)
{
- if (src != 0 && strlen(src) == 1) {
- append_acs0(dst, code, *src);
+ if (VALID_STRING(src) && strlen(src) == 1) {
+ append_acs0(dst, code, src, 0);
}
}
@@ -581,32 +678,32 @@ append_acs(string_desc * dst, int code, char *src)
* list. For each capability, we may assume there is a keycap that sends the
* string which is the value of that capability.
*/
+#define DATA(from, to) { { from }, { to } }
typedef struct {
- const char *from;
- const char *to;
+ const char from[3];
+ const char to[6];
} 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},
+ DATA("al", "kil1"), /* insert line key -> KEY_IL */
+ DATA("bt", "kcbt"), /* back tab -> KEY_BTAB */
+ DATA("cd", "ked"), /* clear-to-eos key -> KEY_EOL */
+ DATA("ce", "kel"), /* clear-to-eol key -> KEY_EOS */
+ DATA("cl", "kclr"), /* clear key -> KEY_CLEAR */
+ DATA("ct", "tbc"), /* clear all tabs -> KEY_CATAB */
+ DATA("dc", "kdch1"), /* delete char -> KEY_DC */
+ DATA("dl", "kdl1"), /* delete line -> KEY_DL */
+ DATA("do", "kcud1"), /* down key -> KEY_DOWN */
+ DATA("ei", "krmir"), /* exit insert key -> KEY_EIC */
+ DATA("ho", "khome"), /* home key -> KEY_HOME */
+ DATA("ic", "kich1"), /* insert char key -> KEY_IC */
+ DATA("im", "kIC"), /* insert-mode key -> KEY_SIC */
+ DATA("le", "kcub1"), /* le key -> KEY_LEFT */
+ DATA("nd", "kcuf1"), /* nd key -> KEY_RIGHT */
+ DATA("nl", "kent"), /* new line key -> KEY_ENTER */
+ DATA("st", "khts"), /* set-tab key -> KEY_STAB */
+ DATA("ta", ""),
+ DATA("up", "kcuu1"), /* up-arrow key -> KEY_UP */
};
/*
@@ -621,13 +718,6 @@ static const char C_BS[] = "\b";
static const char C_HT[] = "\t";
/*
- * Note that WANTED and PRESENT are not simple inverses! If a capability
- * has been explicitly cancelled, it's not considered WANTED.
- */
-#define WANTED(s) ((s) == ABSENT_STRING)
-#define PRESENT(s) (((s) != ABSENT_STRING) && ((s) != CANCELLED_STRING))
-
-/*
* This bit of legerdemain turns all the terminfo variable names into
* references to locations in the arrays Booleans, Numbers, and Strings ---
* precisely what's needed.
@@ -637,7 +727,7 @@ static const char C_HT[] = "\t";
#define CUR tp->
static void
-postprocess_termcap(TERMTYPE *tp, bool has_base)
+postprocess_termcap(TERMTYPE2 *tp, bool has_base)
{
char buf[MAX_LINE * 2 + 2];
string_desc result;
@@ -652,10 +742,10 @@ postprocess_termcap(TERMTYPE *tp, bool has_base)
/* if there was a tc entry, assume we picked up defaults via that */
if (!has_base) {
- if (WANTED(init_3string) && termcap_init2)
+ if (WANTED(init_3string) && PRESENT(termcap_init2))
init_3string = _nc_save_str(termcap_init2);
- if (WANTED(reset_2string) && termcap_reset)
+ if (WANTED(reset_2string) && PRESENT(termcap_reset))
reset_2string = _nc_save_str(termcap_reset);
if (WANTED(carriage_return)) {
@@ -770,7 +860,7 @@ postprocess_termcap(TERMTYPE *tp, bool has_base)
if (init_tabs != 8 && init_tabs != ABSENT_NUMERIC)
_nc_warning("hardware tabs with a width other than 8: %d", init_tabs);
else {
- if (tab && _nc_capcmp(tab, C_HT))
+ if (PRESENT(tab) && _nc_capcmp(tab, C_HT))
_nc_warning("hardware tabs with a non-^I tab string %s",
_nc_visbuf(tab));
else {
@@ -789,7 +879,6 @@ postprocess_termcap(TERMTYPE *tp, bool has_base)
char *bp, *cp, *dp;
struct name_table_entry const *from_ptr;
struct name_table_entry const *to_ptr;
- assoc const *ap;
char buf2[MAX_TERMINFO_LENGTH];
bool foundim;
@@ -802,17 +891,21 @@ postprocess_termcap(TERMTYPE *tp, bool has_base)
(cp = strchr(base, ',')) != 0;
base = cp + 1) {
size_t len = (unsigned) (cp - base);
+ size_t n;
+ assoc const *ap = 0;
- for (ap = ko_xlate; ap->from; ap++) {
- if (len == strlen(ap->from)
- && strncmp(ap->from, base, len) == 0)
+ for (n = 0; n < SIZEOF(ko_xlate); ++n) {
+ if (len == strlen(ko_xlate[n].from)
+ && strncmp(ko_xlate[n].from, base, len) == 0) {
+ ap = ko_xlate + n;
break;
+ }
}
- if (!(ap->from && ap->to)) {
+ if (ap == 0) {
_nc_warning("unknown capability `%.*s' in ko string",
(int) len, base);
continue;
- } else if (ap->to == CANCELLED_STRING) /* ignore it */
+ } else if (ap->to[0] == '\0') /* ignore it */
continue;
/* now we know we found a match in ko_table, so... */
@@ -829,15 +922,14 @@ postprocess_termcap(TERMTYPE *tp, bool has_base)
}
if (tp->Strings[to_ptr->nte_index]) {
+ const char *s = tp->Strings[from_ptr->nte_index];
+ const char *t = 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.
*/
- if (strcmp(
- tp->Strings[from_ptr->nte_index],
- tp->Strings[to_ptr->nte_index]) != 0)
+ if (VALID_STRING(s) && VALID_STRING(t) && strcmp(s, t) != 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, t);
continue;
}
@@ -845,17 +937,22 @@ postprocess_termcap(TERMTYPE *tp, bool has_base)
* The magic moment -- copy the mapped key string over,
* stripping out padding.
*/
- for (dp = buf2, bp = tp->Strings[from_ptr->nte_index]; *bp; bp++) {
- if (bp[0] == '$' && bp[1] == '<') {
- while (*bp && *bp != '>') {
- ++bp;
- }
- } else
- *dp++ = *bp;
- }
- *dp = '\0';
+ bp = tp->Strings[from_ptr->nte_index];
+ if (VALID_STRING(bp)) {
+ for (dp = buf2; *bp; bp++) {
+ if (bp[0] == '$' && bp[1] == '<') {
+ while (*bp && *bp != '>') {
+ ++bp;
+ }
+ } else
+ *dp++ = *bp;
+ }
+ *dp = '\0';
- tp->Strings[to_ptr->nte_index] = _nc_save_str(buf2);
+ tp->Strings[to_ptr->nte_index] = _nc_save_str(buf2);
+ } else {
+ tp->Strings[to_ptr->nte_index] = bp;
+ }
}
/*
@@ -864,7 +961,7 @@ 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) && PRESENT(key_sic)) {
key_ic = key_sic;
key_sic = ABSENT_STRING;
}
@@ -916,15 +1013,15 @@ postprocess_termcap(TERMTYPE *tp, bool has_base)
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) {
+ } else if (acs_chars == ABSENT_STRING
+ && PRESENT(enter_alt_charset_mode)
+ && PRESENT(exit_alt_charset_mode)) {
acs_chars = _nc_save_str(VT_ACSC);
}
}
static void
-postprocess_terminfo(TERMTYPE *tp)
+postprocess_terminfo(TERMTYPE2 *tp)
{
/*
* TERMINFO-TO-TERMINFO MAPPINGS FOR SOURCE TRANSLATION
@@ -941,17 +1038,17 @@ postprocess_terminfo(TERMTYPE *tp)
_nc_str_init(&result, buf2, sizeof(buf2));
_nc_safe_strcat(&result, acs_chars);
- append_acs0(&result, 'l', box_chars_1[0]); /* ACS_ULCORNER */
- append_acs0(&result, 'q', box_chars_1[1]); /* ACS_HLINE */
- append_acs0(&result, 'k', box_chars_1[2]); /* ACS_URCORNER */
- append_acs0(&result, 'x', box_chars_1[3]); /* ACS_VLINE */
- append_acs0(&result, 'j', box_chars_1[4]); /* ACS_LRCORNER */
- append_acs0(&result, 'm', box_chars_1[5]); /* ACS_LLCORNER */
- append_acs0(&result, 'w', box_chars_1[6]); /* ACS_TTEE */
- append_acs0(&result, 'u', box_chars_1[7]); /* ACS_RTEE */
- append_acs0(&result, 'v', box_chars_1[8]); /* ACS_BTEE */
- append_acs0(&result, 't', box_chars_1[9]); /* ACS_LTEE */
- append_acs0(&result, 'n', box_chars_1[10]); /* ACS_PLUS */
+ append_acs0(&result, 'l', box_chars_1, 0); /* ACS_ULCORNER */
+ append_acs0(&result, 'q', box_chars_1, 1); /* ACS_HLINE */
+ append_acs0(&result, 'k', box_chars_1, 2); /* ACS_URCORNER */
+ append_acs0(&result, 'x', box_chars_1, 3); /* ACS_VLINE */
+ append_acs0(&result, 'j', box_chars_1, 4); /* ACS_LRCORNER */
+ append_acs0(&result, 'm', box_chars_1, 5); /* ACS_LLCORNER */
+ append_acs0(&result, 'w', box_chars_1, 6); /* ACS_TTEE */
+ append_acs0(&result, 'u', box_chars_1, 7); /* ACS_RTEE */
+ append_acs0(&result, 'v', box_chars_1, 8); /* ACS_BTEE */
+ append_acs0(&result, 't', box_chars_1, 9); /* ACS_LTEE */
+ append_acs0(&result, 'n', box_chars_1, 10); /* ACS_PLUS */
if (buf2[0]) {
acs_chars = _nc_save_str(buf2);
diff --git a/ncurses/tinfo/read_entry.c b/ncurses/tinfo/read_entry.c
index 435b0b5d4aef..7102a5f2a276 100644
--- a/ncurses/tinfo/read_entry.c
+++ b/ncurses/tinfo/read_entry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,13 +41,89 @@
#include <tic.h>
-MODULE_ID("$Id: read_entry.c,v 1.126 2013/12/15 00:35:36 tom Exp $")
+MODULE_ID("$Id: read_entry.c,v 1.155 2019/07/20 20:23:11 tom Exp $")
#define TYPE_CALLOC(type,elts) typeCalloc(type, (unsigned)(elts))
+#define MyNumber(n) (short) LOW_MSB(n)
+
+#define SIZEOF_32BITS 4
+
#if NCURSES_USE_DATABASE
-static void
-convert_shorts(char *buf, short *Numbers, int count)
+#if NCURSES_EXT_NUMBERS
+static size_t
+convert_16bits(char *buf, NCURSES_INT2 *Numbers, int count)
+{
+ int i;
+ size_t j;
+ size_t size = SIZEOF_SHORT;
+ for (i = 0; i < count; i++) {
+ unsigned mask = 0xff;
+ unsigned char ch = 0;
+ Numbers[i] = 0;
+ for (j = 0; j < size; ++j) {
+ ch = UChar(*buf++);
+ Numbers[i] |= (ch << (8 * j));
+ mask <<= 8;
+ }
+ if (ch & 0x80) {
+ while (mask != 0) {
+ Numbers[i] |= (int) mask;
+ mask <<= 8;
+ }
+ }
+ TR(TRACE_DATABASE, ("get Numbers[%d]=%d", i, Numbers[i]));
+ }
+ return size;
+}
+
+static size_t
+convert_32bits(char *buf, NCURSES_INT2 *Numbers, int count)
+{
+ int i;
+ size_t j;
+ size_t size = SIZEOF_INT2;
+ unsigned char ch;
+
+ assert(sizeof(NCURSES_INT2) == size);
+ for (i = 0; i < count; i++) {
+ Numbers[i] = 0;
+ for (j = 0; j < size; ++j) {
+ ch = UChar(*buf++);
+ Numbers[i] |= (ch << (8 * j));
+ }
+ /* "unsigned" and NCURSES_INT2 are the same size - no sign-extension */
+ TR(TRACE_DATABASE, ("get Numbers[%d]=%d", i, Numbers[i]));
+ }
+ return size;
+}
+#else
+static size_t
+convert_32bits(char *buf, NCURSES_INT2 *Numbers, int count)
+{
+ int i, j;
+ unsigned char ch;
+ for (i = 0; i < count; i++) {
+ int value = 0;
+ for (j = 0; j < SIZEOF_32BITS; ++j) {
+ ch = UChar(*buf++);
+ value |= (ch << (8 * j));
+ }
+ if (value == -1)
+ Numbers[i] = ABSENT_NUMERIC;
+ else if (value == -2)
+ Numbers[i] = CANCELLED_NUMERIC;
+ else if (value > MAX_OF_TYPE(NCURSES_INT2))
+ Numbers[i] = MAX_OF_TYPE(NCURSES_INT2);
+ else
+ Numbers[i] = (short) value;
+ TR(TRACE_DATABASE, ("get Numbers[%d]=%d", i, Numbers[i]));
+ }
+ return SIZEOF_SHORT;
+}
+
+static size_t
+convert_16bits(char *buf, NCURSES_INT2 *Numbers, int count)
{
int i;
for (i = 0; i < count; i++) {
@@ -56,10 +132,12 @@ convert_shorts(char *buf, short *Numbers, int count)
else if (IS_NEG2(buf + 2 * i))
Numbers[i] = CANCELLED_NUMERIC;
else
- Numbers[i] = (short) LOW_MSB(buf + 2 * i);
+ Numbers[i] = MyNumber(buf + 2 * i);
TR(TRACE_DATABASE, ("get Numbers[%d]=%d", i, Numbers[i]));
}
+ return SIZEOF_SHORT;
}
+#endif
static void
convert_strings(char *buf, char **Strings, int count, int size, char *table)
@@ -72,10 +150,10 @@ convert_strings(char *buf, char **Strings, int count, int size, char *table)
Strings[i] = ABSENT_STRING;
} else if (IS_NEG2(buf + 2 * i)) {
Strings[i] = CANCELLED_STRING;
- } else if ((int) LOW_MSB(buf + 2 * i) > size) {
+ } else if (MyNumber(buf + 2 * i) > size) {
Strings[i] = ABSENT_STRING;
} else {
- Strings[i] = (LOW_MSB(buf + 2 * i) + table);
+ Strings[i] = (MyNumber(buf + 2 * i) + table);
TR(TRACE_DATABASE, ("Strings[%d] = %s", i, _nc_visbuf(Strings[i])));
}
@@ -110,13 +188,17 @@ fake_read(char *src, int *offset, int limit, char *dst, unsigned want)
#define Read(buf, count) fake_read(buffer, &offset, limit, (char *) buf, (unsigned) count)
#define read_shorts(buf, count) \
- (Read(buf, (count)*2) == (int) (count)*2)
+ (Read(buf, (count)*SIZEOF_SHORT) == (int) (count)*SIZEOF_SHORT)
+
+#define read_numbers(buf, count) \
+ (Read(buf, (count)*(unsigned)size_of_numbers) == (int) (count)*size_of_numbers)
#define even_boundary(value) \
if ((value) % 2 != 0) Read(buf, 1)
+#endif
NCURSES_EXPORT(void)
-_nc_init_termtype(TERMTYPE *const tp)
+_nc_init_termtype(TERMTYPE2 *const tp)
{
unsigned i;
@@ -131,7 +213,7 @@ _nc_init_termtype(TERMTYPE *const tp)
if (tp->Booleans == 0)
TYPE_MALLOC(NCURSES_SBOOL, BOOLCOUNT, tp->Booleans);
if (tp->Numbers == 0)
- TYPE_MALLOC(short, NUMCOUNT, tp->Numbers);
+ TYPE_MALLOC(NCURSES_INT2, NUMCOUNT, tp->Numbers);
if (tp->Strings == 0)
TYPE_MALLOC(char *, STRCOUNT, tp->Strings);
@@ -145,11 +227,28 @@ _nc_init_termtype(TERMTYPE *const tp)
tp->Strings[i] = ABSENT_STRING;
}
+#if NCURSES_USE_DATABASE
+#if NCURSES_XNAMES
+static bool
+valid_shorts(char *buffer, int limit)
+{
+ bool result = FALSE;
+ int n;
+ for (n = 0; n < limit; ++n) {
+ if (MyNumber(buffer + (n * 2)) > 0) {
+ result = TRUE;
+ break;
+ }
+ }
+ return result;
+}
+#endif
+
/*
* Return TGETENT_YES if read, TGETENT_NO if not found or garbled.
*/
NCURSES_EXPORT(int)
-_nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
+_nc_read_termtype(TERMTYPE2 *ptr, char *buffer, int limit)
{
int offset = 0;
int name_size, bool_count, num_count, str_count, str_size;
@@ -157,6 +256,14 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
char buf[MAX_ENTRY_SIZE + 2];
char *string_table;
unsigned want, have;
+ bool need_ints;
+ size_t (*convert_numbers) (char *, NCURSES_INT2 *, int);
+ int size_of_numbers;
+ int max_entry_size = MAX_ENTRY_SIZE;
+
+ TR(TRACE_DATABASE,
+ (T_CALLED("_nc_read_termtype(ptr=%p, buffer=%p, limit=%d)"),
+ (void *) ptr, buffer, limit));
TR(TRACE_DATABASE, ("READ termtype header @%d", offset));
@@ -165,14 +272,33 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
/* grab the header */
if (!read_shorts(buf, 6)
|| !IS_TIC_MAGIC(buf)) {
- return (TGETENT_NO);
+ returnDB(TGETENT_NO);
}
+#if NCURSES_EXT_NUMBERS
+ if ((need_ints = (LOW_MSB(buf) == MAGIC2))) {
+ convert_numbers = convert_32bits;
+ size_of_numbers = SIZEOF_INT2;
+ } else {
+ max_entry_size = MAX_ENTRY_SIZE1;
+ convert_numbers = convert_16bits;
+ size_of_numbers = SIZEOF_SHORT;
+ }
+#else
+ if ((need_ints = (LOW_MSB(buf) == MAGIC2))) {
+ convert_numbers = convert_32bits;
+ size_of_numbers = SIZEOF_32BITS;
+ } else {
+ convert_numbers = convert_16bits;
+ size_of_numbers = SIZEOF_INT2;
+ }
+#endif
- 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);
+ /* *INDENT-EQLS* */
+ name_size = MyNumber(buf + 2);
+ bool_count = MyNumber(buf + 4);
+ num_count = MyNumber(buf + 6);
+ str_count = MyNumber(buf + 8);
+ str_size = MyNumber(buf + 10);
TR(TRACE_DATABASE,
("TERMTYPE name_size=%d, bool=%d/%d, num=%d/%d str=%d/%d(%d)",
@@ -183,21 +309,14 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
|| num_count < 0
|| str_count < 0
|| str_size < 0) {
- return (TGETENT_NO);
+ returnDB(TGETENT_NO);
}
want = (unsigned) (str_size + name_size + 1);
- if (str_size) {
- /* try to allocate space for the string table */
- if (str_count * 2 >= MAX_ENTRY_SIZE
- || (string_table = typeMalloc(char, want)) == 0) {
- return (TGETENT_NO);
- }
- } else {
- str_count = 0;
- if ((string_table = typeMalloc(char, want)) == 0) {
- return (TGETENT_NO);
- }
+ /* try to allocate space for the string table */
+ if (str_count * SIZEOF_SHORT >= max_entry_size
+ || (string_table = typeMalloc(char, want)) == 0) {
+ returnDB(TGETENT_NO);
}
/* grab the name (a null-terminated string) */
@@ -217,7 +336,7 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
if ((ptr->Booleans = TYPE_CALLOC(NCURSES_SBOOL,
max(BOOLCOUNT, bool_count))) == 0
|| Read(ptr->Booleans, (unsigned) bool_count) < bool_count) {
- return (TGETENT_NO);
+ returnDB(TGETENT_NO);
}
/*
@@ -229,23 +348,25 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
even_boundary(name_size + bool_count);
/* grab the numbers */
- if ((ptr->Numbers = TYPE_CALLOC(short, max(NUMCOUNT, num_count))) == 0
- || !read_shorts(buf, num_count)) {
- return (TGETENT_NO);
+ if (!(ptr->Numbers = TYPE_CALLOC(NCURSES_INT2, max(NUMCOUNT, num_count)))
+ || !read_numbers(buf, num_count)) {
+ returnDB(TGETENT_NO);
}
- convert_shorts(buf, ptr->Numbers, num_count);
+ convert_numbers(buf, ptr->Numbers, num_count);
- if ((ptr->Strings = TYPE_CALLOC(char *, max(STRCOUNT, str_count))) == 0)
- return (TGETENT_NO);
+ if ((ptr->Strings = TYPE_CALLOC(char *, max(STRCOUNT, str_count))) == 0) {
+ returnDB(TGETENT_NO);
+ }
if (str_count) {
/* grab the string offsets */
if (!read_shorts(buf, str_count)) {
- return (TGETENT_NO);
+ returnDB(TGETENT_NO);
}
/* finally, grab the string table itself */
- if (Read(string_table, (unsigned) str_size) != str_size)
- return (TGETENT_NO);
+ if (Read(string_table, (unsigned) str_size) != str_size) {
+ returnDB(TGETENT_NO);
+ }
convert_strings(buf, ptr->Strings, str_count, str_size, string_table);
}
#if NCURSES_XNAMES
@@ -259,77 +380,93 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
*/
even_boundary(str_size);
TR(TRACE_DATABASE, ("READ extended_header @%d", offset));
- if (_nc_user_definable && read_shorts(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);
+ if (_nc_user_definable && read_shorts(buf, 5) && valid_shorts(buf, 5)) {
+ int ext_bool_count = MyNumber(buf + 0);
+ int ext_num_count = MyNumber(buf + 2);
+ int ext_str_count = MyNumber(buf + 4);
+ int ext_str_usage = MyNumber(buf + 6);
+ int ext_str_limit = MyNumber(buf + 8);
unsigned need = (unsigned) (ext_bool_count + ext_num_count + ext_str_count);
int base = 0;
- if (need >= (MAX_ENTRY_SIZE / 2)
- || ext_str_size >= MAX_ENTRY_SIZE
- || ext_str_limit >= MAX_ENTRY_SIZE
+ if ((int) need >= (max_entry_size / 2)
+ || ext_str_usage >= max_entry_size
+ || ext_str_limit >= max_entry_size
|| ext_bool_count < 0
|| ext_num_count < 0
|| ext_str_count < 0
- || ext_str_size < 0
- || ext_str_limit < 0)
- return (TGETENT_NO);
+ || ext_str_usage < 0
+ || ext_str_limit < 0) {
+ returnDB(TGETENT_NO);
+ }
ptr->num_Booleans = UShort(BOOLCOUNT + ext_bool_count);
ptr->num_Numbers = UShort(NUMCOUNT + ext_num_count);
ptr->num_Strings = UShort(STRCOUNT + ext_str_count);
TYPE_REALLOC(NCURSES_SBOOL, ptr->num_Booleans, ptr->Booleans);
- TYPE_REALLOC(short, ptr->num_Numbers, ptr->Numbers);
+ TYPE_REALLOC(NCURSES_INT2, ptr->num_Numbers, ptr->Numbers);
TYPE_REALLOC(char *, ptr->num_Strings, ptr->Strings);
- 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));
+ TR(TRACE_DATABASE, ("extended header: "
+ "bool %d, "
+ "number %d, "
+ "string %d(%d:%d)",
+ ext_bool_count,
+ ext_num_count,
+ ext_str_count,
+ ext_str_usage,
+ ext_str_limit));
TR(TRACE_DATABASE, ("READ %d extended-booleans @%d",
ext_bool_count, offset));
if ((ptr->ext_Booleans = UShort(ext_bool_count)) != 0) {
if (Read(ptr->Booleans + BOOLCOUNT, (unsigned)
- ext_bool_count) != ext_bool_count)
- return (TGETENT_NO);
+ ext_bool_count) != ext_bool_count) {
+ returnDB(TGETENT_NO);
+ }
}
even_boundary(ext_bool_count);
TR(TRACE_DATABASE, ("READ %d extended-numbers @%d",
ext_num_count, offset));
if ((ptr->ext_Numbers = UShort(ext_num_count)) != 0) {
- if (!read_shorts(buf, ext_num_count))
- return (TGETENT_NO);
+ if (!read_numbers(buf, ext_num_count)) {
+ returnDB(TGETENT_NO);
+ }
TR(TRACE_DATABASE, ("Before converting extended-numbers"));
- convert_shorts(buf, ptr->Numbers + NUMCOUNT, ext_num_count);
+ convert_numbers(buf, ptr->Numbers + NUMCOUNT, ext_num_count);
}
TR(TRACE_DATABASE, ("READ extended-offsets @%d", offset));
- if ((unsigned) (ext_str_count + (int) need) >= (MAX_ENTRY_SIZE / 2))
- return (TGETENT_NO);
+ if ((ext_str_count + (int) need) >= (max_entry_size / 2)) {
+ returnDB(TGETENT_NO);
+ }
if ((ext_str_count || need)
- && !read_shorts(buf, ext_str_count + (int) need))
- return (TGETENT_NO);
+ && !read_shorts(buf, ext_str_count + (int) need)) {
+ returnDB(TGETENT_NO);
+ }
TR(TRACE_DATABASE, ("READ %d bytes of extended-strings @%d",
ext_str_limit, offset));
if (ext_str_limit) {
ptr->ext_str_table = typeMalloc(char, (size_t) ext_str_limit);
- if (ptr->ext_str_table == 0)
- return (TGETENT_NO);
- if (Read(ptr->ext_str_table, (unsigned) ext_str_limit) != ext_str_limit)
- return (TGETENT_NO);
+ if (ptr->ext_str_table == 0) {
+ returnDB(TGETENT_NO);
+ }
+ if (Read(ptr->ext_str_table, (unsigned) ext_str_limit) != ext_str_limit) {
+ returnDB(TGETENT_NO);
+ }
TR(TRACE_DATABASE, ("first extended-string is %s", _nc_visbuf(ptr->ext_str_table)));
}
if ((ptr->ext_Strings = UShort(ext_str_count)) != 0) {
+ int check = (ext_bool_count + ext_num_count + ext_str_count);
+
TR(TRACE_DATABASE,
- ("Before computing extended-string capabilities str_count=%d, ext_str_count=%d",
+ ("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);
@@ -338,19 +475,31 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
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]))
+ if (VALID_STRING(ptr->Strings[i + STRCOUNT])) {
base += (int) (strlen(ptr->Strings[i + STRCOUNT]) + 1);
+ ++check;
+ }
TR(TRACE_DATABASE, ("... to [%d] %s",
i + STRCOUNT,
_nc_visbuf(ptr->Strings[i + STRCOUNT])));
}
+ TR(TRACE_DATABASE, ("Check table-size: %d/%d", check, ext_str_usage));
+#if 0
+ /*
+ * Phasing in a proper check will be done "later".
+ */
+ if (check != ext_str_usage)
+ returnDB(TGETENT_NO);
+#endif
}
if (need) {
- if (ext_str_count >= (MAX_ENTRY_SIZE / 2))
- return (TGETENT_NO);
- if ((ptr->ext_Names = TYPE_CALLOC(char *, need)) == 0)
- return (TGETENT_NO);
+ if (ext_str_count >= (max_entry_size / 2)) {
+ returnDB(TGETENT_NO);
+ }
+ if ((ptr->ext_Names = TYPE_CALLOC(char *, need)) == 0) {
+ returnDB(TGETENT_NO);
+ }
TR(TRACE_DATABASE,
("ext_NAMES starting @%d in extended_strings, first = %s",
base, _nc_visbuf(ptr->ext_str_table + base)));
@@ -384,7 +533,7 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
for (i = str_count; i < STRCOUNT; i++)
ptr->Strings[i] = ABSENT_STRING;
- return (TGETENT_YES);
+ returnDB(TGETENT_YES);
}
/*
@@ -396,25 +545,26 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
* table.
*/
NCURSES_EXPORT(int)
-_nc_read_file_entry(const char *const filename, TERMTYPE *ptr)
+_nc_read_file_entry(const char *const filename, TERMTYPE2 *ptr)
/* return 1 if read, 0 if not found or garbled */
{
FILE *fp = 0;
int code;
- int limit;
- char buffer[MAX_ENTRY_SIZE + 1];
if (_nc_access(filename, R_OK) < 0
- || (fp = fopen(filename, "rb")) == 0) {
+ || (fp = fopen(filename, BIN_R)) == 0) {
TR(TRACE_DATABASE, ("cannot open terminfo %s (errno=%d)", filename, errno));
code = TGETENT_NO;
} else {
+ int limit;
+ char buffer[MAX_ENTRY_SIZE + 1];
+
if ((limit = (int) fread(buffer, sizeof(char), sizeof(buffer), fp))
> 0) {
TR(TRACE_DATABASE, ("read terminfo %s", filename));
if ((code = _nc_read_termtype(ptr, buffer, limit)) == TGETENT_NO) {
- _nc_free_termtype(ptr);
+ _nc_free_termtype2(ptr);
}
} else {
code = TGETENT_NO;
@@ -477,6 +627,106 @@ make_dir_filename(char *filename,
return result;
}
+static int
+lookup_b64(int *target, const char **source)
+{
+ int result = 3;
+ int j;
+ /*
+ * ncurses' quickdump writes only RFC 4648 "url/filename-safe" encoding,
+ * but accepts RFC-3548
+ */
+ for (j = 0; j < 4; ++j) {
+ int ch = UChar(**source);
+ *source += 1;
+ if (ch >= 'A' && ch <= 'Z') {
+ target[j] = (ch - 'A');
+ } else if (ch >= 'a' && ch <= 'z') {
+ target[j] = 26 + (ch - 'a');
+ } else if (ch >= '0' && ch <= '9') {
+ target[j] = 52 + (ch - '0');
+ } else if (ch == '-' || ch == '+') {
+ target[j] = 62;
+ } else if (ch == '_' || ch == '/') {
+ target[j] = 63;
+ } else if (ch == '=') {
+ target[j] = 64;
+ result--;
+ } else {
+ result = -1;
+ break;
+ }
+ }
+ return result;
+}
+
+static int
+decode_hex(const char **source)
+{
+ int result = 0;
+ int nibble;
+ int ch;
+
+ for (nibble = 0; nibble < 2; ++nibble) {
+ result <<= 4;
+ ch = UChar(**source);
+ *source += 1;
+ if (ch >= '0' && ch <= '9') {
+ ch -= '0';
+ } else if (ch >= 'A' && ch <= 'F') {
+ ch -= 'A';
+ ch += 10;
+ } else if (ch >= 'a' && ch <= 'f') {
+ ch -= 'a';
+ ch += 10;
+ } else {
+ result = -1;
+ break;
+ }
+ result |= ch;
+ }
+ return result;
+}
+
+static int
+decode_quickdump(char *target, const char *source)
+{
+ char *base = target;
+ int result = 0;
+
+ if (!strncmp(source, "b64:", (size_t) 4)) {
+ source += 4;
+ while (*source != '\0') {
+ int bits[4];
+ int ch = lookup_b64(bits, &source);
+ if (ch < 0 || (ch + target - base) >= MAX_ENTRY_SIZE) {
+ result = 0;
+ break;
+ }
+ result += ch;
+ *target++ = (char) ((bits[0] << 2) | (bits[1] >> 4));
+ if (bits[2] < 64) {
+ *target++ = (char) ((bits[1] << 4) | (bits[2] >> 2));
+ if (bits[3] < 64) {
+ *target++ = (char) ((bits[2] << 6) | bits[3]);
+ }
+ }
+ }
+ } else if (!strncmp(source, "hex:", (size_t) 4)) {
+ source += 4;
+ while (*source != '\0') {
+ int ch = decode_hex(&source);
+ if (ch < 0 || (target - base) >= MAX_ENTRY_SIZE) {
+ result = 0;
+ break;
+ }
+ *target++ = (char) ch;
+ ++result;
+ }
+ }
+ return result;
+}
+
/*
* Build a terminfo pathname and try to read the data. Returns TGETENT_YES on
* success, TGETENT_NO on failure.
@@ -486,15 +736,31 @@ _nc_read_tic_entry(char *filename,
unsigned limit,
const char *const path,
const char *name,
- TERMTYPE *const tp)
+ TERMTYPE2 *const tp)
{
int code = TGETENT_NO;
-
#if USE_HASHED_DB
DB *capdbp;
+#endif
+ char buffer[MAX_ENTRY_SIZE + 1];
+ int used;
+
+ TR(TRACE_DATABASE,
+ (T_CALLED("_nc_read_tic_entry(file=%p, path=%s, name=%s)"),
+ filename, path, name));
- if (make_db_filename(filename, limit, path)
- && (capdbp = _nc_db_open(filename, FALSE)) != 0) {
+ assert(TGETENT_YES == TRUE); /* simplify call for _nc_name_match */
+
+ if ((used = decode_quickdump(buffer, path)) != 0
+ && (code = _nc_read_termtype(tp, buffer, used)) == TGETENT_YES
+ && (code = _nc_name_match(tp->term_names, name, "|")) == TGETENT_YES) {
+ TR(TRACE_DATABASE, ("loaded quick-dump for %s", name));
+ /* shorten name shown by infocmp */
+ _nc_STRCPY(filename, "$TERMINFO", limit);
+ } else
+#if USE_HASHED_DB
+ if (make_db_filename(filename, limit, path)
+ && (capdbp = _nc_db_open(filename, FALSE)) != 0) {
DBT key, data;
int reccnt = 0;
@@ -520,15 +786,15 @@ _nc_read_tic_entry(char *filename,
* (source/binary) by checking the lengths.
*/
while (_nc_db_get(capdbp, &key, &data) == 0) {
- int used = (int) data.size - 1;
char *have = (char *) data.data;
+ used = (int) data.size - 1;
if (*have++ == 0) {
if (data.size > key.size
&& IS_TIC_MAGIC(have)) {
code = _nc_read_termtype(tp, have, used);
if (code == TGETENT_NO) {
- _nc_free_termtype(tp);
+ _nc_free_termtype2(tp);
}
}
break;
@@ -555,30 +821,29 @@ _nc_read_tic_entry(char *filename,
code = _nc_read_file_entry(filename, tp);
}
#if NCURSES_USE_TERMCAP
- else if (code != TGETENT_YES) {
+ if (code != TGETENT_YES) {
code = _nc_read_termcap_entry(name, tp);
_nc_SPRINTF(filename, _nc_SLIMIT(PATH_MAX)
"%.*s", PATH_MAX - 1, _nc_get_source());
}
#endif
- return code;
+ returnDB(code);
}
#endif /* NCURSES_USE_DATABASE */
/*
- * _nc_read_entry(char *name, char *filename, TERMTYPE *tp)
- *
- * Find and read the compiled entry for a given terminal type,
- * if it exists. We take pains here to make sure no combination
- * of environment variables and terminal type name can be used to
- * overrun the file buffer.
+ * Find and read the compiled entry for a given terminal type, if it exists.
+ * We take pains here to make sure no combination of environment variables and
+ * terminal type name can be used to overrun the file buffer.
*/
-
NCURSES_EXPORT(int)
-_nc_read_entry(const char *const name, char *const filename, TERMTYPE *const tp)
+_nc_read_entry2(const char *const name, char *const filename, TERMTYPE2 *const tp)
{
int code = TGETENT_NO;
+ if (name == 0)
+ return _nc_read_entry2("", filename, tp);
+
_nc_SPRINTF(filename, _nc_SLIMIT(PATH_MAX)
"%.*s", PATH_MAX - 1, name);
@@ -595,8 +860,8 @@ _nc_read_entry(const char *const name, char *const filename, TERMTYPE *const tp)
const char *path;
_nc_first_db(&state, &offset);
+ code = TGETENT_ERR;
while ((path = _nc_next_db(&state, &offset)) != 0) {
- TR(TRACE_DATABASE, ("_nc_read_tic_entry path=%s, name=%s", path, name));
code = _nc_read_tic_entry(filename, PATH_MAX, path, name, tp);
if (code == TGETENT_YES) {
_nc_last_db();
@@ -613,3 +878,19 @@ _nc_read_entry(const char *const name, char *const filename, TERMTYPE *const tp)
}
return code;
}
+
+#if NCURSES_EXT_NUMBERS
+/*
+ * This entrypoint is used by tack.
+ */
+NCURSES_EXPORT(int)
+_nc_read_entry(const char *const name, char *const filename, TERMTYPE *const tp)
+{
+ TERMTYPE2 dummy;
+ int rc;
+ rc = _nc_read_entry2(name, filename, &dummy);
+ if (rc == TGETENT_YES)
+ _nc_export_termtype2(tp, &dummy);
+ return rc;
+}
+#endif
diff --git a/ncurses/tinfo/read_termcap.c b/ncurses/tinfo/read_termcap.c
index 6bfb23cdc643..ecf76d9be751 100644
--- a/ncurses/tinfo/read_termcap.c
+++ b/ncurses/tinfo/read_termcap.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -56,7 +56,7 @@
#include <sys/types.h>
#include <tic.h>
-MODULE_ID("$Id: read_termcap.c,v 1.89 2013/12/15 00:32:43 tom Exp $")
+MODULE_ID("$Id: read_termcap.c,v 1.97 2019/01/26 20:07:30 tom Exp $")
#if !PURE_TERMINFO
@@ -66,10 +66,10 @@ MODULE_ID("$Id: read_termcap.c,v 1.89 2013/12/15 00:32:43 tom Exp $")
#define TC_REF_LOOP -3
#define TC_UNRESOLVED -4 /* this is not returned by BSD cgetent */
-static NCURSES_CONST char *
+static const char *
get_termpath(void)
{
- NCURSES_CONST char *result;
+ const char *result;
if (!use_terminfo_vars() || (result = getenv("TERMPATH")) == 0)
result = TERMPATH;
@@ -364,7 +364,7 @@ _nc_getent(
if (bp >= b_end) {
int n;
- n = read(fd, buf, sizeof(buf));
+ n = (int) read(fd, buf, sizeof(buf));
if (n <= 0) {
if (myfd)
(void) close(fd);
@@ -393,7 +393,7 @@ _nc_getent(
|| *(rp - 1) != '\\')
break;
}
- *rp++ = c;
+ *rp++ = (char) c;
/*
* Enforce loop invariant: if no room
@@ -404,8 +404,8 @@ _nc_getent(
unsigned pos;
size_t newsize;
- pos = rp - record;
- newsize = r_end - record + BFRAG;
+ pos = (unsigned) (rp - record);
+ newsize = (size_t) (r_end - record + BFRAG);
record = DOALLOC(newsize);
if (record == 0) {
if (myfd)
@@ -492,14 +492,14 @@ _nc_getent(
}
}
tcstart = tc - 3;
- tclen = s - tcstart;
+ tclen = (int) (s - tcstart);
tcend = s;
icap = 0;
iret = _nc_getent(&icap, &ilen, &oline, current, db_array, fd,
tc, depth + 1, 0);
newicap = icap; /* Put into a register. */
- newilen = ilen;
+ newilen = (int) ilen;
if (iret != TC_SUCCESS) {
/* an error */
if (iret < TC_NOT_FOUND) {
@@ -523,7 +523,7 @@ _nc_getent(
/* not interested in name field of tc'ed record */
s = newicap;
while (*s != '\0' && *s++ != ':') ;
- newilen -= s - newicap;
+ newilen -= (int) (s - newicap);
newicap = s;
/* make sure interpolated record is `:'-terminated */
@@ -542,10 +542,10 @@ _nc_getent(
unsigned pos, tcpos, tcposend;
size_t newsize;
- pos = rp - record;
- newsize = r_end - record + diff + BFRAG;
- tcpos = tcstart - record;
- tcposend = tcend - record;
+ pos = (unsigned) (rp - record);
+ newsize = (size_t) (r_end - record + diff + BFRAG);
+ tcpos = (unsigned) (tcstart - record);
+ tcposend = (unsigned) (tcend - record);
record = DOALLOC(newsize);
if (record == 0) {
if (myfd)
@@ -583,7 +583,7 @@ _nc_getent(
*/
if (myfd)
(void) close(fd);
- *len = rp - record - 1; /* don't count NUL */
+ *len = (unsigned) (rp - record - 1); /* don't count NUL */
if (r_end > rp) {
if ((record = DOALLOC((size_t) (rp - record))) == 0) {
errno = ENOMEM;
@@ -791,7 +791,7 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
int i;
char pathbuf[PBUFSIZ]; /* holds raw path of filenames */
CGETENT_CONST char *pathvec[PVECSIZ]; /* point to names in pathbuf */
- NCURSES_CONST char *termpath;
+ const char *termpath;
string_desc desc;
*lineno = 1;
@@ -956,7 +956,7 @@ add_tc(char *termpaths[], char *path, int count)
#endif /* !USE_GETCAP */
NCURSES_EXPORT(int)
-_nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
+_nc_read_termcap_entry(const char *const tn, TERMTYPE2 *const tp)
{
int found = TGETENT_NO;
ENTRY *ep;
@@ -965,6 +965,8 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
#endif
#if USE_GETCAP
char *p, tc[TBUFSIZ];
+ char *tc_buf = 0;
+#define MY_SIZE sizeof(tc) - 1
int status;
static char *source;
static int lineno;
@@ -982,8 +984,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
if (use_terminfo_vars() && (p = getenv("TERMCAP")) != 0
&& !_nc_is_abs_path(p) && _nc_name_match(p, tn, "|:")) {
/* TERMCAP holds a termcap entry */
- strncpy(tc, p, sizeof(tc) - 1);
- tc[sizeof(tc) - 1] = '\0';
+ tc_buf = strdup(p);
_nc_set_source("TERMCAP");
} else {
/* we're using getcap(3) */
@@ -992,8 +993,13 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
_nc_curr_line = lineno;
_nc_set_source(source);
+ tc_buf = tc;
}
- _nc_read_entry_source((FILE *) 0, tc, FALSE, TRUE, NULLHOOK);
+ if (tc_buf == 0)
+ return (TGETENT_ERR);
+ _nc_read_entry_source((FILE *) 0, tc_buf, FALSE, TRUE, NULLHOOK);
+ if (tc_buf != tc)
+ free(tc_buf);
#else
/*
* Here is what the 4.4BSD termcap(3) page prescribes:
@@ -1027,7 +1033,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
int j, k;
bool use_buffer = FALSE;
bool normal = TRUE;
- char tc_buf[1024];
+ char *tc_buf = 0;
char pathbuf[PATH_MAX];
char *copied = 0;
char *cp;
@@ -1039,10 +1045,8 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
ADD_TC(tc, 0);
normal = FALSE;
} else if (_nc_name_match(tc, tn, "|:")) { /* treat as a capability file */
- use_buffer = TRUE;
- _nc_SPRINTF(tc_buf,
- _nc_SLIMIT(sizeof(tc_buf))
- "%.*s\n", (int) sizeof(tc_buf) - 2, tc);
+ tc_buf = strdup(tc);
+ use_buffer = (tc_buf != 0);
normal = FALSE;
}
}
@@ -1111,6 +1115,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
* 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);
+ free(tc_buf);
} else {
int i;
@@ -1140,7 +1145,8 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
return (TGETENT_ERR);
/* resolve all use references */
- _nc_resolve_uses2(TRUE, FALSE);
+ if (_nc_resolve_uses2(TRUE, FALSE) != TRUE)
+ return (TGETENT_ERR);
/* find a terminal matching tn, if we can */
#if USE_GETCAP_CACHE
diff --git a/ncurses/tinfo/strings.c b/ncurses/tinfo/strings.c
index 393d8e7cab3e..10ec6c8d8ac9 100644
--- a/ncurses/tinfo/strings.c
+++ b/ncurses/tinfo/strings.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2000-2007,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2000-2012,2017 Free 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,8 +35,9 @@
**/
#include <curses.priv.h>
+#include <tic.h>
-MODULE_ID("$Id: strings.c,v 1.8 2012/02/22 22:34:31 tom Exp $")
+MODULE_ID("$Id: strings.c,v 1.9 2017/08/26 13:16:11 tom Exp $")
/****************************************************************************
* Useful string functions (especially for mvcur)
@@ -105,7 +106,7 @@ _nc_str_copy(string_desc * dst, string_desc * src)
NCURSES_EXPORT(bool)
_nc_safe_strcat(string_desc * dst, const char *src)
{
- if (src != 0) {
+ if (PRESENT(src)) {
size_t len = strlen(src);
if (len < dst->s_size) {
@@ -126,7 +127,7 @@ _nc_safe_strcat(string_desc * dst, const char *src)
NCURSES_EXPORT(bool)
_nc_safe_strcpy(string_desc * dst, const char *src)
{
- if (src != 0) {
+ if (PRESENT(src)) {
size_t len = strlen(src);
if (len < dst->s_size) {
diff --git a/ncurses/tinfo/tinfo_driver.c b/ncurses/tinfo/tinfo_driver.c
index 11431996f802..450cded0561e 100644
--- a/ncurses/tinfo/tinfo_driver.c
+++ b/ncurses/tinfo/tinfo_driver.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2008-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,12 +28,13 @@
/****************************************************************************
* Author: Juergen Pfeifer *
- * *
+ * and: Thomas E. Dickey *
****************************************************************************/
#include <curses.priv.h>
-#define CUR ((TERMINAL*)TCB)->type.
+#define CUR TerminalType((TERMINAL*)TCB).
#include <tic.h>
+#include <termcap.h> /* ospeed */
#if HAVE_NANOSLEEP
#include <time.h>
@@ -50,7 +51,7 @@
# endif
#endif
-MODULE_ID("$Id: tinfo_driver.c,v 1.32 2013/08/31 15:22:46 tom Exp $")
+MODULE_ID("$Id: tinfo_driver.c,v 1.66 2019/08/10 18:36:08 tom Exp $")
/*
* SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS,
@@ -106,6 +107,45 @@ drv_doupdate(TERMINAL_CONTROL_BLOCK * TCB)
return TINFO_DOUPDATE(TCB->csp);
}
+static const char *
+drv_Name(TERMINAL_CONTROL_BLOCK * TCB)
+{
+ (void) TCB;
+ return "tinfo";
+}
+
+static void
+get_baudrate(TERMINAL *termp)
+{
+ int my_ospeed;
+ int result;
+ if (GET_TTY(termp->Filedes, &termp->Nttyb) == OK) {
+#ifdef TERMIOS
+ termp->Nttyb.c_oflag &= (unsigned) (~OFLAGS_TABS);
+#else
+ termp->Nttyb.sg_flags &= (unsigned) (~XTABS);
+#endif
+ }
+#ifdef USE_OLD_TTY
+ result = (int) cfgetospeed(&(termp->Nttyb));
+ my_ospeed = (NCURSES_OSPEED) _nc_ospeed(result);
+#else /* !USE_OLD_TTY */
+#ifdef TERMIOS
+ my_ospeed = (NCURSES_OSPEED) cfgetospeed(&(termp->Nttyb));
+#else
+ my_ospeed = (NCURSES_OSPEED) termp->Nttyb.sg_ospeed;
+#endif
+ result = _nc_baudrate(my_ospeed);
+#endif
+ termp->_baudrate = result;
+ ospeed = (NCURSES_OSPEED) my_ospeed;
+}
+
+#undef SETUP_FAIL
+#define SETUP_FAIL FALSE
+
+#define NO_COPY {}
+
static bool
drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
{
@@ -114,23 +154,29 @@ drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
TERMINAL *termp;
SCREEN *sp;
+ START_TRACE();
+ T((T_CALLED("tinfo::drv_CanHandle(%p)"), (void *) TCB));
+
assert(TCB != 0 && tname != 0);
termp = (TERMINAL *) TCB;
sp = TCB->csp;
TCB->magic = TCBMAGIC;
#if (NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP)
- status = _nc_setup_tinfo(tname, &termp->type);
+ status = _nc_setup_tinfo(tname, &TerminalType(termp));
+ T(("_nc_setup_tinfo returns %d", status));
#else
+ T(("no database available"));
status = TGETENT_NO;
#endif
/* try fallback list if entry on disk */
if (status != TGETENT_YES) {
- const TERMTYPE *fallback = _nc_fallback(tname);
+ const TERMTYPE2 *fallback = _nc_fallback2(tname);
if (fallback) {
- termp->type = *fallback;
+ T(("found fallback entry"));
+ TerminalType(termp) = *fallback;
status = TGETENT_YES;
}
}
@@ -140,18 +186,41 @@ drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
if (status == TGETENT_ERR) {
ret_error0(status, "terminals database is inaccessible\n");
} else if (status == TGETENT_NO) {
- ret_error1(status, "unknown terminal type.\n", tname);
+ ret_error1(status, "unknown terminal type.\n",
+ tname, NO_COPY);
+ } else {
+ ret_error0(status, "unexpected return-code\n");
}
}
result = TRUE;
+#if NCURSES_EXT_NUMBERS
+ _nc_export_termtype2(&termp->type, &TerminalType(termp));
+#endif
#if !USE_REENTRANT
- strncpy(ttytype, termp->type.term_names, (size_t) NAMESIZE - 1);
- ttytype[NAMESIZE - 1] = '\0';
+ save_ttytype(termp);
#endif
if (command_character)
_nc_tinfo_cmdch(termp, *command_character);
+ /*
+ * If an application calls setupterm() rather than initscr() or
+ * newterm(), we will not have the def_prog_mode() call in
+ * _nc_setupscreen(). Do it now anyway, so we can initialize the
+ * baudrate.
+ */
+ if (sp == 0 && NC_ISATTY(termp->Filedes)) {
+ get_baudrate(termp);
+ }
+#if NCURSES_EXT_NUMBERS
+#define cleanup_termtype() \
+ _nc_free_termtype2(&TerminalType(termp)); \
+ _nc_free_termtype(&termp->type)
+#else
+#define cleanup_termtype() \
+ _nc_free_termtype2(&TerminalType(termp))
+#endif
+
if (generic_type) {
/*
* BSD 4.3's termcap contains mis-typed "gn" for wy99. Do a sanity
@@ -160,16 +229,22 @@ drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
if ((VALID_STRING(cursor_address)
|| (VALID_STRING(cursor_down) && VALID_STRING(cursor_home)))
&& VALID_STRING(clear_screen)) {
- ret_error1(TGETENT_YES, "terminal is not really generic.\n", tname);
+ cleanup_termtype();
+ ret_error1(TGETENT_YES, "terminal is not really generic.\n",
+ tname, NO_COPY);
} else {
- ret_error1(TGETENT_NO, "I need something more specific.\n", tname);
+ cleanup_termtype();
+ ret_error1(TGETENT_NO, "I need something more specific.\n",
+ tname, NO_COPY);
}
}
if (hard_copy) {
- ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", tname);
+ cleanup_termtype();
+ ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n",
+ tname, NO_COPY);
}
- return result;
+ returnBool(result);
}
static int
@@ -248,8 +323,8 @@ drv_defaultcolors(TERMINAL_CONTROL_BLOCK * TCB, int fg, int bg)
sp->_has_sgr_39_49 = (NCURSES_SP_NAME(tigetflag) (NCURSES_SP_ARGx
"AX")
== TRUE);
- sp->_default_fg = isDefaultColor(fg) ? COLOR_DEFAULT : (fg & C_MASK);
- sp->_default_bg = isDefaultColor(bg) ? COLOR_DEFAULT : (bg & C_MASK);
+ sp->_default_fg = isDefaultColor(fg) ? COLOR_DEFAULT : fg;
+ sp->_default_bg = isDefaultColor(bg) ? COLOR_DEFAULT : bg;
if (sp->_color_pairs != 0) {
bool save = sp->_default_color;
sp->_default_color = TRUE;
@@ -345,7 +420,7 @@ drv_size(TERMINAL_CONTROL_BLOCK * TCB, int *linep, int *colp)
if (sp) {
useEnv = sp->_use_env;
- useTioctl = sp->_use_tioctl;
+ useTioctl = sp->use_tioctl;
} else {
useEnv = _nc_prescreen.use_env;
useTioctl = _nc_prescreen.use_tioctl;
@@ -376,7 +451,7 @@ drv_size(TERMINAL_CONTROL_BLOCK * TCB, int *linep, int *colp)
/* try asking the OS */
{
TERMINAL *termp = (TERMINAL *) TCB;
- if (isatty(termp->Filedes)) {
+ if (NC_ISATTY(termp->Filedes)) {
STRUCT_WINSIZE size;
errno = 0;
@@ -537,7 +612,6 @@ drv_mode(TERMINAL_CONTROL_BLOCK * TCB, int progFlag, int defFlag)
if (sp) {
if (sp->_keypad_on)
_nc_keypad(sp, TRUE);
- NC_BUFFERED(sp, TRUE);
}
code = OK;
}
@@ -563,7 +637,6 @@ drv_mode(TERMINAL_CONTROL_BLOCK * TCB, int progFlag, int defFlag)
if (sp) {
_nc_keypad(sp, FALSE);
NCURSES_SP_NAME(_nc_flush) (sp);
- NC_BUFFERED(sp, FALSE);
}
code = drv_sgmode(TCB, TRUE, &(_term->Ottyb));
}
@@ -664,8 +737,8 @@ drv_init(TERMINAL_CONTROL_BLOCK * TCB)
* _nc_setupscreen(). Do it now anyway, so we can initialize the
* baudrate.
*/
- if (isatty(trm->Filedes)) {
- TCB->drv->mode(TCB, TRUE, TRUE);
+ if (NC_ISATTY(trm->Filedes)) {
+ TCB->drv->td_mode(TCB, TRUE, TRUE);
}
}
@@ -738,9 +811,9 @@ drv_do_color(TERMINAL_CONTROL_BLOCK * TCB,
NCURSES_SP_OUTC outc)
{
SCREEN *sp = TCB->csp;
- NCURSES_COLOR_T fg = COLOR_DEFAULT;
- NCURSES_COLOR_T bg = COLOR_DEFAULT;
- NCURSES_COLOR_T old_fg, old_bg;
+ int fg = COLOR_DEFAULT;
+ int bg = COLOR_DEFAULT;
+ int old_fg, old_bg;
AssertTCB();
if (sp == 0)
@@ -755,19 +828,13 @@ drv_do_color(TERMINAL_CONTROL_BLOCK * TCB,
TPARM_1(set_color_pair, pair), 1, outc);
return;
} else if (sp != 0) {
- NCURSES_SP_NAME(pair_content) (NCURSES_SP_ARGx
- (short) pair,
- &fg,
- &bg);
+ _nc_pair_content(SP_PARM, pair, &fg, &bg);
}
}
if (old_pair >= 0
&& sp != 0
- && NCURSES_SP_NAME(pair_content) (NCURSES_SP_ARGx
- (short) old_pair,
- &old_fg,
- &old_bg) !=ERR) {
+ && _nc_pair_content(SP_PARM, old_pair, &old_fg, &old_bg) != ERR) {
if ((isDefaultColor(fg) && !isDefaultColor(old_fg))
|| (isDefaultColor(bg) && !isDefaultColor(old_bg))) {
#if NCURSES_EXT_FUNCS
@@ -796,13 +863,13 @@ drv_do_color(TERMINAL_CONTROL_BLOCK * TCB,
#if NCURSES_EXT_FUNCS
if (isDefaultColor(fg))
- fg = (NCURSES_COLOR_T) default_fg(sp);
+ fg = default_fg(sp);
if (isDefaultColor(bg))
- bg = (NCURSES_COLOR_T) default_bg(sp);
+ bg = default_bg(sp);
#endif
if (reverse) {
- NCURSES_COLOR_T xx = fg;
+ int xx = fg;
fg = bg;
bg = xx;
}
@@ -838,12 +905,9 @@ drv_initmouse(TERMINAL_CONTROL_BLOCK * TCB)
/* we know how to recognize mouse events under "xterm" */
if (sp != 0) {
- if (key_mouse != 0) {
- if (!strcmp(key_mouse, xterm_kmous)
- || strstr(TerminalOf(sp)->type.term_names, "xterm") != 0) {
- init_xterm_mouse(sp);
- }
- } else if (strstr(TerminalOf(sp)->type.term_names, "xterm") != 0) {
+ if (NonEmpty(key_mouse)) {
+ init_xterm_mouse(sp);
+ } else if (strstr(SP_TERMTYPE term_names, "xterm") != 0) {
if (_nc_add_to_try(&(sp->_keytry), xterm_kmous, KEY_MOUSE) == OK)
init_xterm_mouse(sp);
}
@@ -868,11 +932,11 @@ drv_testmouse(TERMINAL_CONTROL_BLOCK * TCB,
} else
#endif
{
- rc = TCBOf(sp)->drv->twait(TCBOf(sp),
- TWAIT_MASK,
- delay,
- (int *) 0
- EVENTLIST_2nd(evl));
+ rc = TCBOf(sp)->drv->td_twait(TCBOf(sp),
+ TWAIT_MASK,
+ delay,
+ (int *) 0
+ EVENTLIST_2nd(evl));
#if USE_SYSMOUSE
if ((sp->_mouse_type == M_SYSMOUSE)
&& (sp->_sysmouse_head < sp->_sysmouse_tail)
@@ -968,12 +1032,18 @@ drv_setfilter(TERMINAL_CONTROL_BLOCK * TCB)
{
AssertTCB();
- 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;
+ /* *INDENT-EQLS* */
+ clear_screen = ABSENT_STRING;
+ cursor_address = ABSENT_STRING;
+ cursor_down = ABSENT_STRING;
+ cursor_up = ABSENT_STRING;
+ parm_down_cursor = ABSENT_STRING;
+ parm_up_cursor = ABSENT_STRING;
+ row_address = ABSENT_STRING;
+ cursor_home = carriage_return;
+
+ if (back_color_erase)
+ clr_eos = ABSENT_STRING;
}
static void
@@ -1003,7 +1073,7 @@ drv_initacs(TERMINAL_CONTROL_BLOCK * TCB, chtype *real_map, chtype *fake_map)
size_t i;
for (i = 1; i < ACS_LEN; ++i) {
if (real_map[i] == 0) {
- real_map[i] = i;
+ real_map[i] = (chtype) i;
if (real_map != fake_map) {
if (sp != 0)
sp->_screen_acs_map[i] = TRUE;
@@ -1020,8 +1090,13 @@ drv_initacs(TERMINAL_CONTROL_BLOCK * TCB, chtype *real_map, chtype *fake_map)
while (i + 1 < length) {
if (acs_chars[i] != 0 && UChar(acs_chars[i]) < ACS_LEN) {
real_map[UChar(acs_chars[i])] = UChar(acs_chars[i + 1]) | A_ALTCHARSET;
- if (sp != 0)
+ T(("#%d real_map[%s] = %s",
+ (int) i,
+ _tracechar(UChar(acs_chars[i])),
+ _tracechtype(real_map[UChar(acs_chars[i])])));
+ if (sp != 0) {
sp->_screen_acs_map[UChar(acs_chars[i])] = TRUE;
+ }
}
i += 2;
}
@@ -1051,7 +1126,6 @@ drv_initacs(TERMINAL_CONTROL_BLOCK * TCB, chtype *real_map, chtype *fake_map)
? "DIFF"
: "SAME"),
_nc_visbuf(show));
-
_nc_unlock_global(tracef);
}
#endif /* TRACE */
@@ -1179,7 +1253,7 @@ drv_read(TERMINAL_CONTROL_BLOCK * TCB, int *buf)
if ((pthread_self) && (pthread_kill) && (pthread_equal))
_nc_globals.read_thread = pthread_self();
# endif
- n = read(sp->_ifd, &c2, (size_t) 1);
+ n = (int) read(sp->_ifd, &c2, (size_t) 1);
#if USE_PTHREADS_EINTR
_nc_globals.read_thread = 0;
#endif
@@ -1268,29 +1342,64 @@ drv_keyok(TERMINAL_CONTROL_BLOCK * TCB, int c, int flag)
unsigned ch = (unsigned) c;
if (flag) {
while ((s = _nc_expand_try(sp->_key_ok,
- ch, &count, (size_t) 0)) != 0
- && _nc_remove_key(&(sp->_key_ok), ch)) {
- code = _nc_add_to_try(&(sp->_keytry), s, ch);
- free(s);
- count = 0;
- if (code != OK)
- break;
+ ch, &count, (size_t) 0)) != 0) {
+ if (_nc_remove_key(&(sp->_key_ok), ch)) {
+ code = _nc_add_to_try(&(sp->_keytry), s, ch);
+ free(s);
+ count = 0;
+ if (code != OK)
+ break;
+ } else {
+ free(s);
+ }
}
} else {
while ((s = _nc_expand_try(sp->_keytry,
- ch, &count, (size_t) 0)) != 0
- && _nc_remove_key(&(sp->_keytry), ch)) {
- code = _nc_add_to_try(&(sp->_key_ok), s, ch);
- free(s);
- count = 0;
- if (code != OK)
- break;
+ ch, &count, (size_t) 0)) != 0) {
+ if (_nc_remove_key(&(sp->_keytry), ch)) {
+ code = _nc_add_to_try(&(sp->_key_ok), s, ch);
+ free(s);
+ count = 0;
+ if (code != OK)
+ break;
+ } else {
+ free(s);
+ }
}
}
}
return (code);
}
+static int
+drv_cursorSet(TERMINAL_CONTROL_BLOCK * TCB, int vis)
+{
+ SCREEN *sp;
+ int code = ERR;
+
+ AssertTCB();
+ SetSP();
+
+ T((T_CALLED("tinfo:drv_cursorSet(%p,%d)"), (void *) SP_PARM, vis));
+
+ if (SP_PARM != 0 && IsTermInfo(SP_PARM)) {
+ switch (vis) {
+ case 2:
+ code = NCURSES_PUTP2_FLUSH("cursor_visible", cursor_visible);
+ break;
+ case 1:
+ code = NCURSES_PUTP2_FLUSH("cursor_normal", cursor_normal);
+ break;
+ case 0:
+ code = NCURSES_PUTP2_FLUSH("cursor_invisible", cursor_invisible);
+ break;
+ }
+ } else {
+ code = ERR;
+ }
+ returnCode(code);
+}
+
static bool
drv_kyExist(TERMINAL_CONTROL_BLOCK * TCB, int key)
{
@@ -1305,6 +1414,7 @@ drv_kyExist(TERMINAL_CONTROL_BLOCK * TCB, int key)
NCURSES_EXPORT_VAR (TERM_DRIVER) _nc_TINFO_DRIVER = {
TRUE,
+ drv_Name, /* Name */
drv_CanHandle, /* CanHandle */
drv_init, /* init */
drv_release, /* release */
@@ -1338,5 +1448,6 @@ NCURSES_EXPORT_VAR (TERM_DRIVER) _nc_TINFO_DRIVER = {
drv_nap, /* nap */
drv_kpad, /* kpad */
drv_keyok, /* kyOk */
- drv_kyExist /* kyExist */
+ drv_kyExist, /* kyExist */
+ drv_cursorSet /* cursorSet */
};
diff --git a/ncurses/tinfo/trim_sgr0.c b/ncurses/tinfo/trim_sgr0.c
index ec5e2b78dbf0..4d92d1571fd9 100644
--- a/ncurses/tinfo/trim_sgr0.c
+++ b/ncurses/tinfo/trim_sgr0.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2005-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2005-2012,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -36,7 +36,7 @@
#include <tic.h>
-MODULE_ID("$Id: trim_sgr0.c,v 1.15 2012/12/15 20:57:17 tom Exp $")
+MODULE_ID("$Id: trim_sgr0.c,v 1.17 2017/08/26 14:54:16 tom Exp $")
#undef CUR
#define CUR tp->
@@ -46,7 +46,7 @@ MODULE_ID("$Id: trim_sgr0.c,v 1.15 2012/12/15 20:57:17 tom Exp $")
#define L_BRACK '['
static char *
-set_attribute_9(TERMTYPE *tp, int flag)
+set_attribute_9(TERMTYPE2 *tp, int flag)
{
const char *value;
char *result;
@@ -232,7 +232,7 @@ compare_part(const char *part, const char *full)
* an error occurs, or the original sgr0 if no change is needed.
*/
NCURSES_EXPORT(char *)
-_nc_trim_sgr0(TERMTYPE *tp)
+_nc_trim_sgr0(TERMTYPE2 *tp)
{
char *result = exit_attribute_mode;
@@ -263,7 +263,7 @@ _nc_trim_sgr0(TERMTYPE *tp)
/*
* If rmacs is a substring of sgr(0), remove that chunk.
*/
- if (exit_alt_charset_mode != 0) {
+ if (PRESENT(exit_alt_charset_mode)) {
TR(TRACE_DATABASE, ("scan for rmacs %s", _nc_visbuf(exit_alt_charset_mode)));
j = strlen(off);
k = strlen(exit_alt_charset_mode);
diff --git a/ncurses/tinfo/use_screen.c b/ncurses/tinfo/use_screen.c
index 6a0297cebd51..00d7147e1726 100644
--- a/ncurses/tinfo/use_screen.c
+++ b/ncurses/tinfo/use_screen.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2007-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2016,2018 Free 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,15 +32,19 @@
#include <curses.priv.h>
-MODULE_ID("$Id: use_screen.c,v 1.8 2009/10/24 22:40:20 tom Exp $")
+MODULE_ID("$Id: use_screen.c,v 1.11 2018/12/15 23:53:26 tom Exp $")
NCURSES_EXPORT(int)
use_screen(SCREEN *screen, NCURSES_SCREEN_CB func, void *data)
{
SCREEN *save_SP;
int code = OK;
+ TR_FUNC_BFR(1);
- T((T_CALLED("use_screen(%p,%p,%p)"), (void *) screen, func, (void *) data));
+ T((T_CALLED("use_screen(%p,%s,%p)"),
+ (void *) screen,
+ TR_FUNC_ARG(0, func),
+ (void *) data));
/*
* FIXME - add a flag so a given thread can check if _it_ has already
diff --git a/ncurses/tinfo/write_entry.c b/ncurses/tinfo/write_entry.c
index 77f90cb5ffc7..1949f0702110 100644
--- a/ncurses/tinfo/write_entry.c
+++ b/ncurses/tinfo/write_entry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,38 +43,62 @@
#if 1
#define TRACE_OUT(p) DEBUG(2, p)
+#define TRACE_NUM(n) if (VALID_NUMERIC(Numbers[n])) { \
+ TRACE_OUT(("put Numbers[%u]=%d", (unsigned) (n), Numbers[n])); }
#else
#define TRACE_OUT(p) /*nothing */
+#define TRACE_NUM(n) /* nothing */
#endif
-MODULE_ID("$Id: write_entry.c,v 1.91 2013/12/14 21:29:42 tom Exp $")
+MODULE_ID("$Id: write_entry.c,v 1.114 2019/06/29 23:07:18 tom Exp $")
static int total_written;
+static int total_parts;
+static int total_size;
static int make_db_root(const char *);
-static int write_object(TERMTYPE *, char *, unsigned *, unsigned);
#if !USE_HASHED_DB
static void
-write_file(char *filename, TERMTYPE *tp)
+write_file(char *filename, TERMTYPE2 *tp)
{
char buffer[MAX_ENTRY_SIZE];
unsigned limit = sizeof(buffer);
unsigned offset = 0;
- 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 (_nc_write_object(tp, buffer, &offset, limit) == ERR) {
+ _nc_warning("entry is larger than %u bytes", limit);
+ } else {
+ FILE *fp = ((_nc_access(filename, W_OK) == 0)
+ ? fopen(filename, BIN_W)
+ : 0);
+ size_t actual;
+
+ if (fp == 0) {
+ perror(filename);
+ _nc_syserr_abort("can't open %s/%s", _nc_tic_dir(0), filename);
+ }
- if (write_object(tp, buffer, &offset, limit) == ERR
- || fwrite(buffer, sizeof(char), (size_t) offset, fp) != offset) {
- _nc_syserr_abort("error writing %s/%s", _nc_tic_dir(0), filename);
+ actual = fwrite(buffer, sizeof(char), (size_t) offset, fp);
+ if (actual != offset) {
+ int myerr = ferror(fp) ? errno : 0;
+ if (myerr) {
+ _nc_syserr_abort("error writing %s/%s: %s",
+ _nc_tic_dir(0),
+ filename,
+ strerror(myerr));
+ } else {
+ _nc_syserr_abort("error writing %s/%s: %u bytes vs actual %lu",
+ _nc_tic_dir(0),
+ filename,
+ offset,
+ (unsigned long) actual);
+ }
+ } else {
+ fclose(fp);
+ DEBUG(1, ("Created %s", filename));
+ }
}
-
- fclose(fp);
}
/*
@@ -167,7 +191,7 @@ make_db_root(const char *path)
if ((rc = stat(path, &statbuf)) < 0) {
rc = mkdir(path
-#if !defined(__MINGW32__)
+#if !defined(_WIN32)
,0777
#endif
);
@@ -185,7 +209,7 @@ make_db_root(const char *path)
* Set the write directory for compiled entries.
*/
NCURSES_EXPORT(void)
-_nc_set_writedir(char *dir)
+_nc_set_writedir(const char *dir)
{
const char *destination;
char actual[PATH_MAX];
@@ -247,7 +271,7 @@ _nc_set_writedir(char *dir)
*/
NCURSES_EXPORT(void)
-_nc_write_entry(TERMTYPE *const tp)
+_nc_write_entry(TERMTYPE2 *const tp)
{
#if USE_HASHED_DB
@@ -268,6 +292,9 @@ _nc_write_entry(TERMTYPE *const tp)
#endif
#endif /* USE_SYMLINKS */
+ unsigned limit2 = sizeof(filename) - (2 + LEAF_LEN);
+ char saved = '\0';
+
static int call_count;
static time_t start_time; /* time at start of writes */
@@ -316,7 +343,7 @@ _nc_write_entry(TERMTYPE *const tp)
_nc_set_type(first_name);
#if USE_HASHED_DB
- if (write_object(tp, buffer + 1, &offset, limit - 1) != ERR) {
+ if (_nc_write_object(tp, buffer + 1, &offset, limit - 1) != ERR) {
DB *capdb = _nc_db_open(_nc_tic_dir(0), TRUE);
DBT key, data;
@@ -343,6 +370,8 @@ _nc_write_entry(TERMTYPE *const tp)
sizeof(buffer) - 1);
data.size = name_size + 1;
+ total_size += data.size;
+ total_parts++;
_nc_db_put(capdb, &key, &data);
while (*other_names != '\0') {
@@ -357,6 +386,8 @@ _nc_write_entry(TERMTYPE *const tp)
key.data = ptr;
key.size = strlen(ptr);
+ total_size += data.size;
+ total_parts++;
_nc_db_put(capdb, &key, &data);
}
}
@@ -366,11 +397,19 @@ _nc_write_entry(TERMTYPE *const tp)
start_time = 0;
}
- if (strlen(first_name) >= sizeof(filename) - (2 + LEAF_LEN))
+ if (strlen(first_name) >= limit2) {
_nc_warning("terminal name too long.");
+ saved = first_name[limit2];
+ first_name[limit2] = '\0';
+ }
_nc_SPRINTF(filename, _nc_SLIMIT(sizeof(filename))
- LEAF_FMT "/%s", first_name[0], first_name);
+ LEAF_FMT "/%.*s", UChar(first_name[0]),
+ (int) (sizeof(filename) - (LEAF_LEN + 2)),
+ first_name);
+
+ if (saved)
+ first_name[limit2] = saved;
/*
* Has this primary name been written since the first call to
@@ -427,7 +466,8 @@ _nc_write_entry(TERMTYPE *const tp)
check_writeable(ptr[0]);
_nc_SPRINTF(linkname, _nc_SLIMIT(sizeof(linkname))
- LEAF_FMT "/%s", ptr[0], ptr);
+ LEAF_FMT "/%.*s", ptr[0],
+ (int) sizeof(linkname) - (2 + LEAF_LEN), ptr);
if (strcmp(filename, linkname) == 0) {
_nc_warning("self-synonym ignored");
@@ -439,13 +479,14 @@ _nc_write_entry(TERMTYPE *const tp)
{
int code;
#if USE_SYMLINKS
- if (first_name[0] == linkname[0])
- strncpy(symlinkname, first_name, sizeof(symlinkname) - 1);
- else {
- _nc_STRCPY(symlinkname, "../", sizeof(suymlinkname));
- strncat(symlinkname, filename, sizeof(symlinkname) - 4);
+#define MY_SIZE sizeof(symlinkname) - 1
+ if (first_name[0] == linkname[0]) {
+ _nc_STRNCPY(symlinkname, first_name, MY_SIZE);
+ } else {
+ _nc_STRCPY(symlinkname, "../", sizeof(symlinkname));
+ _nc_STRNCPY(symlinkname + 3, filename, MY_SIZE - 3);
}
- symlinkname[sizeof(symlinkname) - 1] = '\0';
+ symlinkname[MY_SIZE] = '\0';
#endif /* USE_SYMLINKS */
#if HAVE_REMOVE
code = remove(linkname);
@@ -542,7 +583,7 @@ compute_offsets(char **Strings, size_t strmax, short *offsets)
return nextfree;
}
-static void
+static size_t
convert_shorts(unsigned char *buf, short *Numbers, size_t count)
{
size_t i;
@@ -557,14 +598,49 @@ convert_shorts(unsigned char *buf, short *Numbers, size_t count)
TRACE_OUT(("put Numbers[%u]=%d", (unsigned) i, Numbers[i]));
}
}
+ return SIZEOF_SHORT;
+}
+
+#if NCURSES_EXT_NUMBERS
+static size_t
+convert_16bit(unsigned char *buf, NCURSES_INT2 *Numbers, size_t count)
+{
+ size_t i, j;
+ size_t size = SIZEOF_SHORT;
+ for (i = 0; i < count; i++) {
+ unsigned value = (unsigned) Numbers[i];
+ TRACE_NUM(i);
+ for (j = 0; j < size; ++j) {
+ *buf++ = value & 0xff;
+ value >>= 8;
+ }
+ }
+ return size;
}
+static size_t
+convert_32bit(unsigned char *buf, NCURSES_INT2 *Numbers, size_t count)
+{
+ size_t i, j;
+ size_t size = SIZEOF_INT2;
+ for (i = 0; i < count; i++) {
+ unsigned value = (unsigned) Numbers[i];
+ TRACE_NUM(i);
+ for (j = 0; j < size; ++j) {
+ *buf++ = value & 0xff;
+ value >>= 8;
+ }
+ }
+ return size;
+}
+#endif
+
#define even_boundary(value) \
((value) % 2 != 0 && Write(&zero, sizeof(char), 1) != 1)
#if NCURSES_XNAMES
static unsigned
-extended_Booleans(TERMTYPE *tp)
+extended_Booleans(TERMTYPE2 *tp)
{
unsigned result = 0;
unsigned i;
@@ -577,7 +653,7 @@ extended_Booleans(TERMTYPE *tp)
}
static unsigned
-extended_Numbers(TERMTYPE *tp)
+extended_Numbers(TERMTYPE2 *tp)
{
unsigned result = 0;
unsigned i;
@@ -590,7 +666,7 @@ extended_Numbers(TERMTYPE *tp)
}
static unsigned
-extended_Strings(TERMTYPE *tp)
+extended_Strings(TERMTYPE2 *tp)
{
unsigned short result = 0;
unsigned short i;
@@ -607,7 +683,7 @@ extended_Strings(TERMTYPE *tp)
* clause - discard the unneeded data.
*/
static bool
-extended_object(TERMTYPE *tp)
+extended_object(TERMTYPE2 *tp)
{
bool result = FALSE;
@@ -620,11 +696,11 @@ extended_object(TERMTYPE *tp)
}
#endif
-static int
-write_object(TERMTYPE *tp, char *buffer, unsigned *offset, unsigned limit)
+NCURSES_EXPORT(int)
+_nc_write_object(TERMTYPE2 *tp, char *buffer, unsigned *offset, unsigned limit)
{
char *namelist;
- size_t namelen, boolmax, nummax, strmax;
+ size_t namelen, boolmax, nummax, strmax, numlen;
char zero = '\0';
size_t i;
int nextfree;
@@ -633,6 +709,12 @@ write_object(TERMTYPE *tp, char *buffer, unsigned *offset, unsigned limit)
unsigned last_bool = BOOLWRITE;
unsigned last_num = NUMWRITE;
unsigned last_str = STRWRITE;
+#if NCURSES_EXT_NUMBERS
+ bool need_ints = FALSE;
+ size_t (*convert_numbers) (unsigned char *, NCURSES_INT2 *, size_t) = convert_32bit;
+#else
+#define convert_numbers convert_shorts
+#endif
#if NCURSES_XNAMES
/*
@@ -653,14 +735,21 @@ write_object(TERMTYPE *tp, char *buffer, unsigned *offset, unsigned limit)
boolmax = 0;
for (i = 0; i < last_bool; i++) {
- if (tp->Booleans[i] == TRUE)
+ if (tp->Booleans[i] == TRUE) {
boolmax = i + 1;
+ }
}
nummax = 0;
for (i = 0; i < last_num; i++) {
- if (tp->Numbers[i] != ABSENT_NUMERIC)
+ if (tp->Numbers[i] != ABSENT_NUMERIC) {
nummax = i + 1;
+#if NCURSES_EXT_NUMBERS
+ if (tp->Numbers[i] > MAX_OF_TYPE(NCURSES_COLOR_T)) {
+ need_ints = TRUE;
+ }
+#endif
+ }
}
strmax = 0;
@@ -672,7 +761,17 @@ write_object(TERMTYPE *tp, char *buffer, unsigned *offset, unsigned limit)
nextfree = compute_offsets(tp->Strings, strmax, offsets);
/* fill in the header */
+#if NCURSES_EXT_NUMBERS
+ if (need_ints) {
+ convert_numbers = convert_32bit;
+ LITTLE_ENDIAN(buf, MAGIC2);
+ } else {
+ convert_numbers = convert_16bit;
+ LITTLE_ENDIAN(buf, MAGIC);
+ }
+#else
LITTLE_ENDIAN(buf, MAGIC);
+#endif
LITTLE_ENDIAN(buf + 2, min(namelen, MAX_NAME_SIZE + 1));
LITTLE_ENDIAN(buf + 4, boolmax);
LITTLE_ENDIAN(buf + 6, nummax);
@@ -682,62 +781,81 @@ write_object(TERMTYPE *tp, char *buffer, unsigned *offset, unsigned limit)
/* write out the header */
TRACE_OUT(("Header of %s @%d", namelist, *offset));
if (Write(buf, 12, 1) != 1
- || Write(namelist, sizeof(char), namelen) != namelen)
- return (ERR);
+ || Write(namelist, sizeof(char), namelen) != namelen) {
+ return (ERR);
+ }
- for (i = 0; i < boolmax; i++)
- if (tp->Booleans[i] == TRUE)
+ for (i = 0; i < boolmax; i++) {
+ if (tp->Booleans[i] == TRUE) {
buf[i] = TRUE;
- else
+ } else {
buf[i] = FALSE;
- if (Write(buf, sizeof(char), boolmax) != boolmax)
- return (ERR);
+ }
+ }
+ if (Write(buf, sizeof(char), boolmax) != boolmax) {
+ return (ERR);
+ }
- if (even_boundary(namelen + boolmax))
+ if (even_boundary(namelen + boolmax)) {
return (ERR);
+ }
TRACE_OUT(("Numerics begin at %04x", *offset));
/* the numerics */
- convert_shorts(buf, tp->Numbers, nummax);
- if (Write(buf, 2, nummax) != nummax)
+ numlen = convert_numbers(buf, tp->Numbers, nummax);
+ if (Write(buf, numlen, nummax) != nummax) {
return (ERR);
+ }
TRACE_OUT(("String offsets begin at %04x", *offset));
/* the string offsets */
convert_shorts(buf, offsets, strmax);
- if (Write(buf, 2, strmax) != strmax)
+ if (Write(buf, SIZEOF_SHORT, strmax) != strmax) {
return (ERR);
+ }
TRACE_OUT(("String table begins at %04x", *offset));
/* the strings */
- for (i = 0; i < strmax; i++)
- if (VALID_STRING(tp->Strings[i]))
- if (!WRITE_STRING(tp->Strings[i]))
+ for (i = 0; i < strmax; i++) {
+ if (VALID_STRING(tp->Strings[i])) {
+ if (!WRITE_STRING(tp->Strings[i])) {
return (ERR);
+ }
+ }
+ }
#if NCURSES_XNAMES
if (extended_object(tp)) {
- unsigned extcnt = (unsigned) NUM_EXT_NAMES(tp);
+ unsigned ext_total = (unsigned) NUM_EXT_NAMES(tp);
+ unsigned ext_usage = ext_total;
- if (even_boundary(nextfree))
+ if (even_boundary(nextfree)) {
return (ERR);
+ }
nextfree = compute_offsets(tp->Strings + STRCOUNT,
(size_t) tp->ext_Strings,
offsets);
TRACE_OUT(("after extended string capabilities, nextfree=%d", nextfree));
- if (tp->ext_Strings >= SIZEOF(offsets))
+ if (tp->ext_Strings >= SIZEOF(offsets)) {
return (ERR);
+ }
nextfree += compute_offsets(tp->ext_Names,
- (size_t) extcnt,
+ (size_t) ext_total,
offsets + tp->ext_Strings);
TRACE_OUT(("after extended capnames, nextfree=%d", nextfree));
- strmax = tp->ext_Strings + extcnt;
+ strmax = tp->ext_Strings + ext_total;
+ for (i = 0; i < tp->ext_Strings; ++i) {
+ if (VALID_STRING(tp->Strings[i + STRCOUNT])) {
+ ext_usage++;
+ }
+ }
+ TRACE_OUT(("will write %u/%lu strings", ext_usage, (unsigned long) strmax));
/*
* Write the extended header
@@ -745,26 +863,30 @@ write_object(TERMTYPE *tp, char *buffer, unsigned *offset, unsigned limit)
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 + 6, ext_usage);
LITTLE_ENDIAN(buf + 8, nextfree);
TRACE_OUT(("WRITE extended-header @%d", *offset));
- if (Write(buf, 10, 1) != 1)
+ if (Write(buf, 10, 1) != 1) {
return (ERR);
+ }
TRACE_OUT(("WRITE %d booleans @%d", tp->ext_Booleans, *offset));
if (tp->ext_Booleans
&& Write(tp->Booleans + BOOLCOUNT, sizeof(char),
- tp->ext_Booleans) != tp->ext_Booleans)
- return (ERR);
+ tp->ext_Booleans) != tp->ext_Booleans) {
+ return (ERR);
+ }
- if (even_boundary(tp->ext_Booleans))
+ if (even_boundary(tp->ext_Booleans)) {
return (ERR);
+ }
TRACE_OUT(("WRITE %d numbers @%d", tp->ext_Numbers, *offset));
if (tp->ext_Numbers) {
- convert_shorts(buf, tp->Numbers + NUMCOUNT, (size_t) tp->ext_Numbers);
- if (Write(buf, 2, tp->ext_Numbers) != tp->ext_Numbers)
+ numlen = convert_numbers(buf, tp->Numbers + NUMCOUNT, (size_t) tp->ext_Numbers);
+ if (Write(buf, numlen, tp->ext_Numbers) != tp->ext_Numbers) {
return (ERR);
+ }
}
/*
@@ -773,8 +895,9 @@ write_object(TERMTYPE *tp, char *buffer, unsigned *offset, unsigned limit)
*/
convert_shorts(buf, offsets, strmax);
TRACE_OUT(("WRITE offsets @%d", *offset));
- if (Write(buf, 2, strmax) != strmax)
+ if (Write(buf, SIZEOF_SHORT, strmax) != strmax) {
return (ERR);
+ }
/*
* Write the string table after the offset tables so we do not
@@ -784,24 +907,28 @@ write_object(TERMTYPE *tp, char *buffer, unsigned *offset, unsigned limit)
if (VALID_STRING(tp->Strings[i + STRCOUNT])) {
TRACE_OUT(("WRITE ext_Strings[%d]=%s", (int) i,
_nc_visbuf(tp->Strings[i + STRCOUNT])));
- if (!WRITE_STRING(tp->Strings[i + STRCOUNT]))
+ if (!WRITE_STRING(tp->Strings[i + STRCOUNT])) {
return (ERR);
+ }
}
}
/*
* Write the extended names
*/
- for (i = 0; i < extcnt; i++) {
+ for (i = 0; i < ext_total; i++) {
TRACE_OUT(("WRITE ext_Names[%d]=%s", (int) i, tp->ext_Names[i]));
- if (!WRITE_STRING(tp->ext_Names[i]))
+ if (!WRITE_STRING(tp->ext_Names[i])) {
return (ERR);
+ }
}
}
#endif /* NCURSES_XNAMES */
total_written++;
+ total_parts++;
+ total_size = total_size + (int) (*offset + 1);
return (OK);
}
@@ -811,5 +938,7 @@ write_object(TERMTYPE *tp, char *buffer, unsigned *offset, unsigned limit)
NCURSES_EXPORT(int)
_nc_tic_written(void)
{
+ TR(TRACE_DATABASE, ("_nc_tic_written %d entries, %d parts, %d size",
+ total_written, total_parts, total_size));
return total_written;
}
diff --git a/ncurses/trace/lib_trace.c b/ncurses/trace/lib_trace.c
index cec01de517f8..7e2ca854e656 100644
--- a/ncurses/trace/lib_trace.c
+++ b/ncurses/trace/lib_trace.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,7 +47,7 @@
#include <ctype.h>
-MODULE_ID("$Id: lib_trace.c,v 1.82 2013/07/06 19:42:09 tom Exp $")
+MODULE_ID("$Id: lib_trace.c,v 1.94 2019/12/07 22:32:36 tom Exp $")
NCURSES_EXPORT_VAR(unsigned) _nc_tracing = 0; /* always define this */
@@ -85,60 +85,83 @@ NCURSES_EXPORT_VAR(const char *) _nc_tputs_trace = "";
NCURSES_EXPORT_VAR(long) _nc_outchars = 0;
#endif
-#define TraceFP _nc_globals.trace_fp
-#define TracePath _nc_globals.trace_fname
-#define TraceLevel _nc_globals.trace_level
+#define MyFP _nc_globals.trace_fp
+#define MyFD _nc_globals.trace_fd
+#define MyInit _nc_globals.trace_opened
+#define MyPath _nc_globals.trace_fname
+#define MyLevel _nc_globals.trace_level
+#define MyNested _nc_globals.nested_tracef
+#endif /* TRACE */
-NCURSES_EXPORT(void)
-trace(const unsigned int tracelevel)
+NCURSES_EXPORT(unsigned)
+curses_trace(unsigned tracelevel)
{
- if ((TraceFP == 0) && tracelevel) {
- const char *mode = _nc_globals.init_trace ? "ab" : "wb";
-
- if (TracePath[0] == '\0') {
- size_t size = sizeof(TracePath) - 12;
- if (getcwd(TracePath, size) == 0) {
- perror("curses: Can't get working directory");
- exit(EXIT_FAILURE);
+ unsigned result;
+#if defined(TRACE)
+ result = _nc_tracing;
+ if ((MyFP == 0) && tracelevel) {
+ MyInit = TRUE;
+ if (MyFD >= 0) {
+ MyFP = fdopen(MyFD, BIN_W);
+ } else {
+ if (MyPath[0] == '\0') {
+ size_t size = sizeof(MyPath) - 12;
+ if (getcwd(MyPath, size) == 0) {
+ perror("curses: Can't get working directory");
+ exit(EXIT_FAILURE);
+ }
+ MyPath[size] = '\0';
+ assert(strlen(MyPath) <= size);
+ _nc_STRCAT(MyPath, "/trace", sizeof(MyPath));
+ if (_nc_is_dir_path(MyPath)) {
+ _nc_STRCAT(MyPath, ".log", sizeof(MyPath));
+ }
}
- TracePath[size] = '\0';
- assert(strlen(TracePath) <= size);
- _nc_STRCAT(TracePath, "/trace", sizeof(TracePath));
- if (_nc_is_dir_path(TracePath)) {
- _nc_STRCAT(TracePath, ".log", sizeof(TracePath));
+ if (_nc_access(MyPath, W_OK) < 0
+ || (MyFD = open(MyPath, O_CREAT | O_EXCL | O_RDWR, 0600)) < 0
+ || (MyFP = fdopen(MyFD, BIN_W)) == 0) {
+ ; /* EMPTY */
}
}
-
- _nc_globals.init_trace = TRUE;
_nc_tracing = tracelevel;
- if (_nc_access(TracePath, W_OK) < 0
- || (TraceFP = fopen(TracePath, mode)) == 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 (MyFP != 0) {
#if HAVE_SETVBUF /* ANSI */
- (void) setvbuf(TraceFP, (char *) 0, _IOLBF, (size_t) 0);
+ (void) setvbuf(MyFP, (char *) 0, _IOLBF, (size_t) 0);
#elif HAVE_SETBUF /* POSIX */
- (void) setbuffer(TraceFP, (char *) 0);
+ (void) setbuffer(MyFP, (char *) 0);
#endif
+ }
_tracef("TRACING NCURSES version %s.%d (tracelevel=%#x)",
NCURSES_VERSION,
NCURSES_VERSION_PATCH,
tracelevel);
} else if (tracelevel == 0) {
- if (TraceFP != 0) {
- fclose(TraceFP);
- TraceFP = 0;
+ if (MyFP != 0) {
+ MyFD = dup(MyFD); /* allow reopen of same file */
+ fclose(MyFP);
+ MyFP = 0;
}
_nc_tracing = tracelevel;
} else if (_nc_tracing != tracelevel) {
_nc_tracing = tracelevel;
_tracef("tracelevel=%#x", tracelevel);
}
+#else
+ (void) tracelevel;
+ result = 0;
+#endif
+ return result;
+}
+
+#if defined(TRACE)
+NCURSES_EXPORT(void)
+trace(const unsigned int tracelevel)
+{
+ curses_trace(tracelevel);
}
static void
@@ -151,16 +174,23 @@ _nc_va_tracef(const char *fmt, va_list ap)
bool after = FALSE;
unsigned doit = _nc_tracing;
int save_err = errno;
+ FILE *fp = MyFP;
+
+#ifdef TRACE
+ /* verbose-trace in the command-line utilities relies on this */
+ if (fp == 0 && !MyInit && _nc_tracing >= DEBUG_LEVEL(1))
+ fp = stderr;
+#endif
if (strlen(fmt) >= sizeof(Called) - 1) {
if (!strncmp(fmt, Called, sizeof(Called) - 1)) {
before = TRUE;
- TraceLevel++;
+ MyLevel++;
} else if (!strncmp(fmt, Return, sizeof(Return) - 1)) {
after = TRUE;
}
if (before || after) {
- if ((TraceLevel <= 1)
+ if ((MyLevel <= 1)
|| (doit & TRACE_ICALLS) != 0)
doit &= (TRACE_CALLS | TRACE_CCALLS);
else
@@ -168,9 +198,7 @@ _nc_va_tracef(const char *fmt, va_list ap)
}
}
- if (doit != 0) {
- if (TraceFP == 0)
- TraceFP = stderr;
+ if (doit != 0 && fp != 0) {
#ifdef USE_PTHREADS
/*
* TRACE_ICALLS is "really" needed to show normal use with threaded
@@ -184,30 +212,30 @@ _nc_va_tracef(const char *fmt, va_list ap)
# if USE_WEAK_SYMBOLS
if ((pthread_self))
# endif
-#ifdef __MINGW32__
- fprintf(TraceFP, "%#lx:", (long) (intptr_t) pthread_self().p);
+#ifdef _WIN32
+ fprintf(fp, "%#lx:", (long) (intptr_t) pthread_self().p);
#else
- fprintf(TraceFP, "%#lx:", (long) (intptr_t) pthread_self());
+ fprintf(fp, "%#lx:", (long) (intptr_t) pthread_self());
#endif
#endif
if (before || after) {
int n;
- for (n = 1; n < TraceLevel; n++)
- fputs("+ ", TraceFP);
+ for (n = 1; n < MyLevel; n++)
+ fputs("+ ", fp);
}
- vfprintf(TraceFP, fmt, ap);
- fputc('\n', TraceFP);
- fflush(TraceFP);
+ vfprintf(fp, fmt, ap);
+ fputc('\n', fp);
+ fflush(fp);
}
- if (after && TraceLevel)
- TraceLevel--;
+ if (after && MyLevel)
+ MyLevel--;
errno = save_err;
}
NCURSES_EXPORT(void)
-_tracef(const char *fmt,...)
+_tracef(const char *fmt, ...)
{
va_list ap;
@@ -296,6 +324,39 @@ _nc_retrace_win(WINDOW *code)
return code;
}
+NCURSES_EXPORT(char *)
+_nc_fmt_funcptr(char *target, const char *source, size_t size)
+{
+ size_t n;
+ char *dst = target;
+ bool leading = TRUE;
+
+ union {
+ int value;
+ char bytes[sizeof(int)];
+ } byteorder;
+
+ byteorder.value = 0x1234;
+
+ *dst++ = '0';
+ *dst++ = 'x';
+
+ for (n = 0; n < size; ++n) {
+ unsigned ch = ((byteorder.bytes[0] == 0x34)
+ ? UChar(source[size - n - 1])
+ : UChar(source[n]));
+ if (ch != 0 || (n + 1) >= size)
+ leading = FALSE;
+ if (!leading) {
+ _nc_SPRINTF(dst, _nc_SLIMIT(TR_FUNC_LEN - (dst - target))
+ "%02x", ch & 0xff);
+ dst += 2;
+ }
+ }
+ *dst = '\0';
+ return target;
+}
+
#if USE_REENTRANT
/*
* Check if the given trace-mask is enabled.
@@ -310,13 +371,13 @@ _nc_use_tracef(unsigned mask)
bool result = FALSE;
_nc_lock_global(tst_tracef);
- if (!_nc_globals.nested_tracef++) {
+ if (!MyNested++) {
if ((result = (_nc_tracing & (mask))) != 0
&& _nc_try_global(tracef) == 0) {
/* we will call _nc_locked_tracef(), no nesting so far */
} else {
/* we will not call _nc_locked_tracef() */
- _nc_globals.nested_tracef = 0;
+ MyNested = 0;
}
} else {
/* we may call _nc_locked_tracef(), but with nested_tracef > 0 */
@@ -331,7 +392,7 @@ _nc_use_tracef(unsigned mask)
* the tracef mutex.
*/
NCURSES_EXPORT(void)
-_nc_locked_tracef(const char *fmt,...)
+_nc_locked_tracef(const char *fmt, ...)
{
va_list ap;
@@ -339,7 +400,7 @@ _nc_locked_tracef(const char *fmt,...)
_nc_va_tracef(fmt, ap);
va_end(ap);
- if (--(_nc_globals.nested_tracef) == 0) {
+ if (--(MyNested) == 0) {
_nc_unlock_global(tracef);
}
}
diff --git a/ncurses/trace/lib_traceatr.c b/ncurses/trace/lib_traceatr.c
index 5fb0df95f4fd..31312c233e6e 100644
--- a/ncurses/trace/lib_traceatr.c
+++ b/ncurses/trace/lib_traceatr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,7 +43,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_traceatr.c,v 1.81 2014/02/01 22:09:27 tom Exp $")
+MODULE_ID("$Id: lib_traceatr.c,v 1.93 2019/05/04 20:46:24 tom Exp $")
#define COLOR_OF(c) ((c < 0) ? "default" : (c > 7 ? color_of(c) : colors[c].name))
@@ -67,7 +67,7 @@ color_of(int c)
if (c != my_cached) {
my_cached = c;
my_select = !my_select;
- if (c == COLOR_DEFAULT)
+ if (isDefaultColor(c))
_nc_STRCPY(my_buffer[my_select], "default",
COLOR_BUF_SIZE(my_select));
else
@@ -85,53 +85,48 @@ color_of(int c)
NCURSES_EXPORT(char *)
_traceattr2(int bufnum, chtype newmode)
{
+#define DATA(name) { name, { #name } }
static const struct {
unsigned int val;
- const char *name;
+ const char name[14];
} names[] =
{
- /* *INDENT-OFF* */
- { A_STANDOUT, "A_STANDOUT" },
- { A_UNDERLINE, "A_UNDERLINE" },
- { A_REVERSE, "A_REVERSE" },
- { A_BLINK, "A_BLINK" },
- { A_DIM, "A_DIM" },
- { A_BOLD, "A_BOLD" },
- { A_ALTCHARSET, "A_ALTCHARSET" },
- { A_INVIS, "A_INVIS" },
- { A_PROTECT, "A_PROTECT" },
- { A_CHARTEXT, "A_CHARTEXT" },
- { A_NORMAL, "A_NORMAL" },
- { A_COLOR, "A_COLOR" },
+ DATA(A_STANDOUT),
+ DATA(A_UNDERLINE),
+ DATA(A_REVERSE),
+ DATA(A_BLINK),
+ DATA(A_DIM),
+ DATA(A_BOLD),
+ DATA(A_ALTCHARSET),
+ DATA(A_INVIS),
+ DATA(A_PROTECT),
+ DATA(A_CHARTEXT),
+ DATA(A_NORMAL),
+ DATA(A_COLOR),
#if USE_ITALIC
- { A_ITALIC, "A_ITALIC" },
+ DATA(A_ITALIC),
#endif
- /* *INDENT-ON* */
-
}
#ifndef USE_TERMLIB
,
colors[] =
{
- /* *INDENT-OFF* */
- { COLOR_BLACK, "COLOR_BLACK" },
- { COLOR_RED, "COLOR_RED" },
- { COLOR_GREEN, "COLOR_GREEN" },
- { COLOR_YELLOW, "COLOR_YELLOW" },
- { COLOR_BLUE, "COLOR_BLUE" },
- { COLOR_MAGENTA, "COLOR_MAGENTA" },
- { COLOR_CYAN, "COLOR_CYAN" },
- { COLOR_WHITE, "COLOR_WHITE" },
- /* *INDENT-ON* */
-
+ DATA(COLOR_BLACK),
+ DATA(COLOR_RED),
+ DATA(COLOR_GREEN),
+ DATA(COLOR_YELLOW),
+ DATA(COLOR_BLUE),
+ DATA(COLOR_MAGENTA),
+ DATA(COLOR_CYAN),
+ DATA(COLOR_WHITE),
}
#endif /* !USE_TERMLIB */
;
- size_t n;
- char temp[80];
+#undef DATA
char *result = _nc_trace_buf(bufnum, (size_t) BUFSIZ);
if (result != 0) {
+ size_t n;
unsigned save_nc_tracing = _nc_tracing;
_nc_tracing = 0;
@@ -139,12 +134,14 @@ _traceattr2(int bufnum, chtype newmode)
_nc_STRCPY(result, l_brace, TRACE_BUF_SIZE(bufnum));
for (n = 0; n < SIZEOF(names); n++) {
+
if ((newmode & names[n].val) != 0) {
if (result[1] != '\0')
(void) _nc_trace_bufcat(bufnum, "|");
result = _nc_trace_bufcat(bufnum, names[n].name);
if (names[n].val == A_COLOR) {
+ char temp[80];
short pairnum = (short) PairNumber(newmode);
#ifdef USE_TERMLIB
/* pair_content lives in libncurses */
@@ -205,49 +202,50 @@ _nc_retrace_attr_t(attr_t code)
const char *
_nc_altcharset_name(attr_t attr, chtype ch)
{
+#define DATA(code, name) { code, { #name } }
typedef struct {
unsigned int val;
- const char *name;
+ const char name[13];
} ALT_NAMES;
#if NCURSES_SP_FUNCS
SCREEN *sp = CURRENT_SCREEN;
#endif
static const ALT_NAMES names[] =
{
- {'l', "ACS_ULCORNER"}, /* upper left corner */
- {'m', "ACS_LLCORNER"}, /* lower left corner */
- {'k', "ACS_URCORNER"}, /* upper right corner */
- {'j', "ACS_LRCORNER"}, /* lower right corner */
- {'t', "ACS_LTEE"}, /* tee pointing right */
- {'u', "ACS_RTEE"}, /* tee pointing left */
- {'v', "ACS_BTEE"}, /* tee pointing up */
- {'w', "ACS_TTEE"}, /* tee pointing down */
- {'q', "ACS_HLINE"}, /* horizontal line */
- {'x', "ACS_VLINE"}, /* vertical line */
- {'n', "ACS_PLUS"}, /* large plus or crossover */
- {'o', "ACS_S1"}, /* scan line 1 */
- {'s', "ACS_S9"}, /* scan line 9 */
- {'`', "ACS_DIAMOND"}, /* diamond */
- {'a', "ACS_CKBOARD"}, /* checker board (stipple) */
- {'f', "ACS_DEGREE"}, /* degree symbol */
- {'g', "ACS_PLMINUS"}, /* plus/minus */
- {'~', "ACS_BULLET"}, /* bullet */
- {',', "ACS_LARROW"}, /* arrow pointing left */
- {'+', "ACS_RARROW"}, /* arrow pointing right */
- {'.', "ACS_DARROW"}, /* arrow pointing down */
- {'-', "ACS_UARROW"}, /* arrow pointing up */
- {'h', "ACS_BOARD"}, /* board of squares */
- {'i', "ACS_LANTERN"}, /* lantern symbol */
- {'0', "ACS_BLOCK"}, /* solid square block */
- {'p', "ACS_S3"}, /* scan line 3 */
- {'r', "ACS_S7"}, /* scan line 7 */
- {'y', "ACS_LEQUAL"}, /* less/equal */
- {'z', "ACS_GEQUAL"}, /* greater/equal */
- {'{', "ACS_PI"}, /* Pi */
- {'|', "ACS_NEQUAL"}, /* not equal */
- {'}', "ACS_STERLING"}, /* UK pound sign */
- {'\0', (char *) 0}
+ DATA('l', ACS_ULCORNER), /* upper left corner */
+ DATA('m', ACS_LLCORNER), /* lower left corner */
+ DATA('k', ACS_URCORNER), /* upper right corner */
+ DATA('j', ACS_LRCORNER), /* lower right corner */
+ DATA('t', ACS_LTEE), /* tee pointing right */
+ DATA('u', ACS_RTEE), /* tee pointing left */
+ DATA('v', ACS_BTEE), /* tee pointing up */
+ DATA('w', ACS_TTEE), /* tee pointing down */
+ DATA('q', ACS_HLINE), /* horizontal line */
+ DATA('x', ACS_VLINE), /* vertical line */
+ DATA('n', ACS_PLUS), /* large plus or crossover */
+ DATA('o', ACS_S1), /* scan line 1 */
+ DATA('s', ACS_S9), /* scan line 9 */
+ DATA('`', ACS_DIAMOND), /* diamond */
+ DATA('a', ACS_CKBOARD), /* checker board (stipple) */
+ DATA('f', ACS_DEGREE), /* degree symbol */
+ DATA('g', ACS_PLMINUS), /* plus/minus */
+ DATA('~', ACS_BULLET), /* bullet */
+ DATA(',', ACS_LARROW), /* arrow pointing left */
+ DATA('+', ACS_RARROW), /* arrow pointing right */
+ DATA('.', ACS_DARROW), /* arrow pointing down */
+ DATA('-', ACS_UARROW), /* arrow pointing up */
+ DATA('h', ACS_BOARD), /* board of squares */
+ DATA('i', ACS_LANTERN), /* lantern symbol */
+ DATA('0', ACS_BLOCK), /* solid square block */
+ DATA('p', ACS_S3), /* scan line 3 */
+ DATA('r', ACS_S7), /* scan line 7 */
+ DATA('y', ACS_LEQUAL), /* less/equal */
+ DATA('z', ACS_GEQUAL), /* greater/equal */
+ DATA('{', ACS_PI), /* Pi */
+ DATA('|', ACS_NEQUAL), /* not equal */
+ DATA('}', ACS_STERLING), /* UK pound sign */
};
+#undef DATA
const char *result = 0;
@@ -257,7 +255,6 @@ _nc_altcharset_name(attr_t attr, chtype ch)
if (SP_PARM != 0 && (attr & A_ALTCHARSET) && (acs_chars != 0)) {
char *cp;
char *found = 0;
- const ALT_NAMES *strp;
for (cp = acs_chars; cp[0] && cp[1]; cp += 2) {
if (ChCharOf(UChar(cp[1])) == ChCharOf(ch)) {
@@ -267,12 +264,15 @@ _nc_altcharset_name(attr_t attr, chtype ch)
}
if (found != 0) {
+ size_t n;
+
ch = ChCharOf(UChar(*found));
- for (strp = names; strp->val; strp++)
- if (strp->val == ch) {
- result = strp->name;
+ for (n = 0; n < SIZEOF(names); ++n) {
+ if (names[n].val == ch) {
+ result = names[n].name;
break;
}
+ }
}
}
return result;
@@ -281,22 +281,25 @@ _nc_altcharset_name(attr_t attr, chtype ch)
NCURSES_EXPORT(char *)
_tracechtype2(int bufnum, chtype ch)
{
- const char *found;
char *result = _nc_trace_buf(bufnum, (size_t) BUFSIZ);
if (result != 0) {
+ const char *found;
+ attr_t attr = ChAttrOf(ch);
+
_nc_STRCPY(result, l_brace, TRACE_BUF_SIZE(bufnum));
- if ((found = _nc_altcharset_name(ChAttrOf(ch), ch)) != 0) {
+ if ((found = _nc_altcharset_name(attr, ch)) != 0) {
(void) _nc_trace_bufcat(bufnum, found);
+ attr &= ~A_ALTCHARSET;
} else
(void) _nc_trace_bufcat(bufnum,
_nc_tracechar(CURRENT_SCREEN,
(int) ChCharOf(ch)));
- if (ChAttrOf(ch) != A_NORMAL) {
+ if (attr != A_NORMAL) {
(void) _nc_trace_bufcat(bufnum, " | ");
(void) _nc_trace_bufcat(bufnum,
- _traceattr2(bufnum + 20, ChAttrOf(ch)));
+ _traceattr2(bufnum + 20, attr));
}
result = _nc_trace_bufcat(bufnum, r_brace);
@@ -323,13 +326,13 @@ NCURSES_EXPORT(char *)
_tracecchar_t2(int bufnum, const cchar_t *ch)
{
char *result = _nc_trace_buf(bufnum, (size_t) BUFSIZ);
- attr_t attr;
- const char *found;
if (result != 0) {
_nc_STRCPY(result, l_brace, TRACE_BUF_SIZE(bufnum));
if (ch != 0) {
- attr = AttrOfD(ch);
+ const char *found;
+ attr_t attr = AttrOfD(ch);
+
if ((found = _nc_altcharset_name(attr, (chtype) CharOfD(ch))) != 0) {
(void) _nc_trace_bufcat(bufnum, found);
attr &= ~A_ALTCHARSET;
@@ -340,7 +343,6 @@ _tracecchar_t2(int bufnum, const cchar_t *ch)
PUTC_DATA;
int n;
- PUTC_INIT;
(void) _nc_trace_bufcat(bufnum, "{ ");
for (PUTC_i = 0; PUTC_i < CCHARW_MAX; ++PUTC_i) {
PUTC_ch = ch->chars[PUTC_i];
@@ -349,6 +351,7 @@ _tracecchar_t2(int bufnum, const cchar_t *ch)
(void) _nc_trace_bufcat(bufnum, "\\000");
break;
}
+ PUTC_INIT;
PUTC_n = (int) wcrtomb(PUTC_buf, ch->chars[PUTC_i], &PUT_st);
if (PUTC_n <= 0) {
if (PUTC_ch != L'\0') {
@@ -358,6 +361,14 @@ _tracecchar_t2(int bufnum, const cchar_t *ch)
UChar(ch->chars[PUTC_i])));
}
break;
+ } else if (ch->chars[PUTC_i] > 255) {
+ char temp[80];
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "{%d:\\u%lx}",
+ _nc_wacs_width(ch->chars[PUTC_i]),
+ (unsigned long) ch->chars[PUTC_i]);
+ (void) _nc_trace_bufcat(bufnum, temp);
+ break;
}
for (n = 0; n < PUTC_n; n++) {
if (n)
@@ -373,6 +384,18 @@ _tracecchar_t2(int bufnum, const cchar_t *ch)
(void) _nc_trace_bufcat(bufnum, " | ");
(void) _nc_trace_bufcat(bufnum, _traceattr2(bufnum + 20, attr));
}
+#if NCURSES_EXT_COLORS
+ /*
+ * Just in case the extended color is different from the chtype
+ * value, trace both.
+ */
+ if (ch->ext_color != PairNumber(attr)) {
+ char temp[80];
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ " X_COLOR{%d:%d}", ch->ext_color, PairNumber(attr));
+ (void) _nc_trace_bufcat(bufnum, temp);
+ }
+#endif
}
result = _nc_trace_bufcat(bufnum, r_brace);
diff --git a/ncurses/trace/lib_tracebits.c b/ncurses/trace/lib_tracebits.c
index 7d8325a828f4..43b29a9496e0 100644
--- a/ncurses/trace/lib_tracebits.c
+++ b/ncurses/trace/lib_tracebits.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2019 Free 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 <curses.priv.h>
-MODULE_ID("$Id: lib_tracebits.c,v 1.23 2012/06/09 19:55:46 tom Exp $")
+MODULE_ID("$Id: lib_tracebits.c,v 1.27 2019/02/16 22:12:08 tom Exp $")
#if HAVE_SYS_TERMIO_H
#include <sys/termio.h> /* needed for ISC */
@@ -73,7 +73,7 @@ MODULE_ID("$Id: lib_tracebits.c,v 1.23 2012/06/09 19:55:46 tom Exp $")
typedef struct {
unsigned int val;
- const char *name;
+ const char name[8];
} BITNAMES;
#define TRACE_BUF_SIZE(num) (_nc_globals.tracebuf_ptr[num].size)
@@ -85,7 +85,7 @@ lookup_bits(char *buf, const BITNAMES * table, const char *label, unsigned int v
_nc_STRCAT(buf, label, TRACE_BUF_SIZE(0));
_nc_STRCAT(buf, ": {", TRACE_BUF_SIZE(0));
- for (sp = table; sp->name; sp++)
+ for (sp = table; sp->name[0]; sp++)
if (sp->val != 0
&& (val & sp->val) == sp->val) {
_nc_STRCAT(buf, sp->name, TRACE_BUF_SIZE(0));
@@ -103,56 +103,59 @@ _nc_trace_ttymode(TTY * tty)
char *buf;
#ifdef TERMIOS
+#define DATA(name) { name, { #name } }
+#define DATA2(name,name2) { name, { #name2 } }
+#define DATAX() { 0, { "" } }
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}
+ DATA(BRKINT),
+ DATA(IGNBRK),
+ DATA(IGNPAR),
+ DATA(PARMRK),
+ DATA(INPCK),
+ DATA(ISTRIP),
+ DATA(INLCR),
+ DATA(IGNCR),
+ DATA(ICRNL),
+ DATA(IXON),
+ DATA(IXOFF),
+ DATAX()
#define ALLIN (BRKINT|IGNBRK|IGNPAR|PARMRK|INPCK|ISTRIP|INLCR|IGNCR|ICRNL|IXON|IXOFF)
}, oflags[] =
{
- {OPOST, "OPOST"},
- {OFLAGS_TABS, "XTABS"},
- {ONLCR, "ONLCR"},
- {OCRNL, "OCRNL"},
- {ONOCR, "ONOCR"},
- {ONLRET, "ONLRET"},
- {0, NULL}
-#define ALLOUT (OPOST|OFLAGS_TABS|ONLCR|OCRNL|ONOCR|ONLRET)
+ DATA(OPOST),
+ DATA2(OFLAGS_TABS, XTABS),
+ DATA(ONLCR),
+ DATA(OCRNL),
+ DATA(ONOCR),
+ DATA(ONLRET),
+ DATAX()
+#define ALLOUT (OPOST|OFLAGS_TABS|ONLCR|OCRNL|ONOCR|ONLRET|OFLAGS_TABS)
}, cflags[] =
{
- {CLOCAL, "CLOCAL"},
- {CREAD, "CREAD"},
- {CSTOPB, "CSTOPB"},
+ DATA(CLOCAL),
+ DATA(CREAD),
+ DATA(CSTOPB),
#if !defined(CS5) || !defined(CS8)
- {CSIZE, "CSIZE"},
+ DATA(CSIZE),
#endif
- {HUPCL, "HUPCL"},
- {PARENB, "PARENB"},
- {PARODD | PARENB, "PARODD"}, /* concession to readability */
- {0, NULL}
+ DATA(HUPCL),
+ DATA(PARENB),
+ DATA2(PARODD | PARENB, PARODD),
+ DATAX()
#define ALLCTRL (CLOCAL|CREAD|CSIZE|CSTOPB|HUPCL|PARENB|PARODD)
}, 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}
+ DATA(ECHO),
+ DATA2(ECHOE | ECHO, ECHOE),
+ DATA2(ECHOK | ECHO, ECHOK),
+ DATA(ECHONL),
+ DATA(ICANON),
+ DATA(ISIG),
+ DATA(NOFLSH),
+ DATA(TOSTOP),
+ DATA(IEXTEN),
+ DATAX()
#define ALLLOCAL (ECHO|ECHONL|ICANON|ISIG|NOFLSH|TOSTOP|IEXTEN)
};
@@ -175,11 +178,11 @@ _nc_trace_ttymode(TTY * tty)
#if defined(CS5) && defined(CS8)
{
- static struct {
+ static const struct {
int value;
- const char *name;
+ const char name[5];
} csizes[] = {
-#define CS_DATA(name) { name, #name " " }
+#define CS_DATA(name) { name, { #name " " } }
CS_DATA(CS5),
#ifdef CS6
CS_DATA(CS6),
@@ -228,17 +231,17 @@ _nc_trace_ttymode(TTY * tty)
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}
+ DATA(CBREAK),
+ DATA(CRMOD),
+ DATA(ECHO),
+ DATA(EVENP),
+ DATA(LCASE),
+ DATA(LLITOUT),
+ DATA(ODDP),
+ DATA(RAW),
+ DATA(TANDEM),
+ DATA(XTABS),
+ DATAX()
#define ALLCTRL (CBREAK|CRMOD|ECHO|EVENP|LCASE|LLITOUT|ODDP|RAW|TANDEM|XTABS)
};
diff --git a/ncurses/trace/lib_tracedmp.c b/ncurses/trace/lib_tracedmp.c
index 0fda15b252e6..c8b7b05c2035 100644
--- a/ncurses/trace/lib_tracedmp.c
+++ b/ncurses/trace/lib_tracedmp.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2016 Free 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 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_tracedmp.c,v 1.34 2012/10/27 20:54:42 tom Exp $")
+MODULE_ID("$Id: lib_tracedmp.c,v 1.35 2016/05/28 23:30:01 tom Exp $")
#ifdef TRACE
@@ -76,7 +76,7 @@ _tracedump(const char *name, WINDOW *win)
for (n = 0; n <= win->_maxy; ++n) {
char *ep = my_buffer;
- bool haveattrs, havecolors;
+ bool havecolors;
/*
* Dump A_CHARTEXT part. It is more important to make the grid line up
@@ -156,8 +156,8 @@ _tracedump(const char *name, WINDOW *win)
for (i = 0; i < 4; ++i) {
const char *hex = " 123456789ABCDEF";
attr_t mask = (attr_t) (0xf << ((i + 4) * 4));
+ bool haveattrs = FALSE;
- haveattrs = FALSE;
for (j = 0; j < width; ++j)
if (AttrOf(win->_line[n].text[j]) & mask) {
haveattrs = TRUE;
diff --git a/ncurses/trace/lib_tracemse.c b/ncurses/trace/lib_tracemse.c
index 51ffa2ef7634..c62b71a0658b 100644
--- a/ncurses/trace/lib_tracemse.c
+++ b/ncurses/trace/lib_tracemse.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -38,19 +38,21 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_tracemse.c,v 1.21 2012/12/15 23:51:19 tom Exp $")
+MODULE_ID("$Id: lib_tracemse.c,v 1.22 2014/10/10 09:06:26 tom Exp $")
#ifdef TRACE
#define my_buffer sp->tracemse_buf
-static char *
-_trace_mmask_t(SCREEN *sp, mmask_t code)
+NCURSES_EXPORT(char *)
+_nc_trace_mmask_t(SCREEN *sp, mmask_t code)
{
#define SHOW(m, s) \
if ((code & m) == m) { \
- _nc_STRCAT(my_buffer, s, sizeof(my_buffer)); \
+ size_t n = strlen(my_buffer); \
+ if (n && (my_buffer[n-1] != '{')) \
_nc_STRCAT(my_buffer, ", ", sizeof(my_buffer)); \
+ _nc_STRCAT(my_buffer, s, sizeof(my_buffer)); \
}
SHOW(BUTTON1_RELEASED, "release-1");
@@ -125,7 +127,7 @@ _nc_tracemouse(SCREEN *sp, MEVENT const *ep)
ep->z,
(unsigned long) ep->bstate);
- (void) _trace_mmask_t(sp, ep->bstate);
+ (void) _nc_trace_mmask_t(sp, ep->bstate);
_nc_STRCAT(my_buffer, "}", sizeof(my_buffer));
result = (my_buffer);
}
@@ -137,7 +139,7 @@ _nc_retrace_mmask_t(SCREEN *sp, mmask_t code)
{
if (sp != 0) {
*my_buffer = '\0';
- T((T_RETURN("{%s}"), _trace_mmask_t(sp, code)));
+ T((T_RETURN("{%s}"), _nc_trace_mmask_t(sp, code)));
} else {
T((T_RETURN("{?}")));
}
diff --git a/ncurses/trace/trace_xnames.c b/ncurses/trace/trace_xnames.c
index 38a48730ccdc..8d0eefb9d4f0 100644
--- a/ncurses/trace/trace_xnames.c
+++ b/ncurses/trace/trace_xnames.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999-2000,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2010,2016 Free 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 <curses.priv.h>
-MODULE_ID("$Id: trace_xnames.c,v 1.6 2010/01/23 17:59:27 tom Exp $")
+MODULE_ID("$Id: trace_xnames.c,v 1.7 2016/05/28 23:30:01 tom Exp $")
NCURSES_EXPORT(void)
_nc_trace_xnames(TERMTYPE *tp GCC_UNUSED)
@@ -43,8 +43,9 @@ _nc_trace_xnames(TERMTYPE *tp GCC_UNUSED)
#ifdef TRACE
#if NCURSES_XNAMES
int limit = tp->ext_Booleans + tp->ext_Numbers + tp->ext_Strings;
- int n, m;
+
if (limit) {
+ int n;
int begin_num = tp->ext_Booleans;
int begin_str = tp->ext_Booleans + tp->ext_Numbers;
@@ -53,7 +54,10 @@ _nc_trace_xnames(TERMTYPE *tp GCC_UNUSED)
limit,
tp->ext_Booleans, tp->ext_Numbers, tp->ext_Strings,
tp->num_Booleans, tp->num_Numbers, tp->num_Strings);
+
for (n = 0; n < limit; n++) {
+ int m;
+
if ((m = n - begin_str) >= 0) {
_tracef("[%d] %s = %s", n,
tp->ext_Names[n],
diff --git a/ncurses/trace/visbuf.c b/ncurses/trace/visbuf.c
index effa84352b7d..4f78139f3fcc 100644
--- a/ncurses/trace/visbuf.c
+++ b/ncurses/trace/visbuf.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2001-2012,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2017,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,12 +42,12 @@
#include <tic.h>
#include <ctype.h>
-MODULE_ID("$Id: visbuf.c,v 1.43 2014/02/23 01:21:08 tom Exp $")
+MODULE_ID("$Id: visbuf.c,v 1.51 2019/05/04 20:31:31 tom Exp $")
#define NUM_VISBUFS 4
#define NormalLen(len) (size_t) (((size_t)(len) + 1) * 4)
-#define WideLen(len) (size_t) (((size_t)(len) + 1) * 4 * MB_CUR_MAX)
+#define WideLen(len) (size_t) (((size_t)(len) + 1) * 4 * (size_t) MB_CUR_MAX)
#ifdef TRACE
static const char d_quote[] = StringOf(D_QUOTE);
@@ -69,7 +69,7 @@ _nc_vischar(char *tp, unsigned c LIMIT_ARG)
if (c == '"' || c == '\\') {
*tp++ = '\\';
*tp++ = (char) c;
- } else if (is7bits((int)c) && (isgraph((int)c) || c == ' ')) {
+ } else if (is7bits((int) c) && (isgraph((int) c) || c == ' ')) {
*tp++ = (char) c;
} else if (c == '\n') {
*tp++ = '\\';
@@ -80,6 +80,9 @@ _nc_vischar(char *tp, unsigned c LIMIT_ARG)
} else if (c == '\b') {
*tp++ = '\\';
*tp++ = 'b';
+ } else if (c == '\t') {
+ *tp++ = '\\';
+ *tp++ = 't';
} else if (c == '\033') {
*tp++ = '\\';
*tp++ = 'e';
@@ -105,7 +108,6 @@ _nc_visbuf2n(int bufnum, const char *buf, int len)
{
const char *vbuf = 0;
char *tp;
- int c;
int count;
if (buf == 0)
@@ -122,6 +124,8 @@ _nc_visbuf2n(int bufnum, const char *buf, int len)
#else
{
static char *mybuf[NUM_VISBUFS];
+ int c;
+
if (bufnum < 0) {
for (c = 0; c < NUM_VISBUFS; ++c) {
FreeAndNull(mybuf[c]);
@@ -134,6 +138,8 @@ _nc_visbuf2n(int bufnum, const char *buf, int len)
}
#endif
if (tp != 0) {
+ int c;
+
*tp++ = D_QUOTE;
while ((--count >= 0) && (c = *buf++) != '\0') {
tp = VisChar(tp, UChar(c), NormalLen(len));
@@ -185,7 +191,6 @@ _nc_viswbuf2n(int bufnum, const wchar_t *buf, int len)
{
const char *vbuf;
char *tp;
- wchar_t c;
int count;
if (buf == 0)
@@ -205,6 +210,8 @@ _nc_viswbuf2n(int bufnum, const wchar_t *buf, int len)
}
#endif
if (tp != 0) {
+ wchar_t c;
+
*tp++ = D_QUOTE;
while ((--count >= 0) && (c = *buf++) != '\0') {
char temp[CCHARW_MAX + 80];
@@ -278,10 +285,10 @@ NCURSES_EXPORT(const char *)
_nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len)
{
char *result = _nc_trace_buf(bufnum, (size_t) BUFSIZ);
- int first;
- const char *found;
if (result != 0) {
+ int first = 0;
+
#if USE_WIDEC_SUPPORT
if (len < 0)
len = _nc_wchstrlen(buf);
@@ -290,7 +297,6 @@ _nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len)
/*
* Display one or more strings followed by attributes.
*/
- first = 0;
while (first < len) {
attr_t attr = AttrOf(buf[first]);
int last = len - 1;
@@ -306,7 +312,8 @@ _nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len)
(void) _nc_trace_bufcat(bufnum, l_brace);
(void) _nc_trace_bufcat(bufnum, d_quote);
for (j = first; j <= last; ++j) {
- found = _nc_altcharset_name(attr, (chtype) CharOf(buf[j]));
+ const char *found = _nc_altcharset_name(attr, (chtype)
+ CharOf(buf[j]));
if (found != 0) {
(void) _nc_trace_bufcat(bufnum, found);
attr &= ~A_ALTCHARSET;
@@ -315,9 +322,9 @@ _nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len)
if (!isWidecExt(buf[j])) {
PUTC_DATA;
- PUTC_INIT;
for (PUTC_i = 0; PUTC_i < CCHARW_MAX; ++PUTC_i) {
int k;
+ char temp[80];
PUTC_ch = buf[j].chars[PUTC_i];
if (PUTC_ch == L'\0') {
@@ -325,12 +332,18 @@ _nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len)
(void) _nc_trace_bufcat(bufnum, "\\000");
break;
}
+ PUTC_INIT;
PUTC_n = (int) wcrtomb(PUTC_buf,
buf[j].chars[PUTC_i], &PUT_st);
- if (PUTC_n <= 0)
+ if (PUTC_n <= 0 || buf[j].chars[PUTC_i] > 255) {
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "{%d:\\u%lx}",
+ _nc_wacs_width(buf[j].chars[PUTC_i]),
+ (unsigned long) buf[j].chars[PUTC_i]);
+ (void) _nc_trace_bufcat(bufnum, temp);
break;
+ }
for (k = 0; k < PUTC_n; k++) {
- char temp[80];
VisChar(temp, UChar(PUTC_buf[k]), sizeof(temp));
(void) _nc_trace_bufcat(bufnum, temp);
}
diff --git a/ncurses/tty/MKexpanded.sh b/ncurses/tty/MKexpanded.sh
index 7a5f5993c487..89e747416d01 100755
--- a/ncurses/tty/MKexpanded.sh
+++ b/ncurses/tty/MKexpanded.sh
@@ -1,6 +1,6 @@
#! /bin/sh
##############################################################################
-# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2017,2019 Free 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, 1997-on
#
-# $Id: MKexpanded.sh,v 1.17 2010/01/23 17:57:43 tom Exp $
+# $Id: MKexpanded.sh,v 1.21 2019/03/02 22:47:55 tom Exp $
#
# Script to generate 'expanded.c', a dummy source that contains functions
# corresponding to complex macros used in this library. By making functions,
@@ -48,7 +48,7 @@ else
fi
TMP=gen$$.c
-trap "rm -f $TMP" 0 1 2 5 15
+trap "rm -f $TMP" EXIT INT QUIT TERM HUP
cat <<EOF
/* generated by MKexpanded.sh */
@@ -125,7 +125,7 @@ _nc_UpdateAttrs (CARG_CH_T c)
EOF
$preprocessor $TMP 2>/dev/null | \
- sed -e '1,/^IGNORE$/d' -e 's/^@/#/' -e 's/^#if_/#if /'
+ sed -e '1,/^IGNORE$/d' -e 's/^@/#/' -e 's/^#[ ]*if_/#if /' -e "s,$TMP,expanded.c,"
cat <<EOF
#else /* ! NCURSES_EXPANDED */
diff --git a/ncurses/tty/hardscroll.c b/ncurses/tty/hardscroll.c
index 4ec168a0028e..f7c9e0d46f52 100644
--- a/ncurses/tty/hardscroll.c
+++ b/ncurses/tty/hardscroll.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2015,2016 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -147,7 +147,7 @@ AUTHOR
#include <curses.priv.h>
-MODULE_ID("$Id: hardscroll.c,v 1.51 2012/10/17 09:01:10 tom Exp $")
+MODULE_ID("$Id: hardscroll.c,v 1.53 2016/05/28 23:32:40 tom Exp $")
#if defined(SCROLLDEBUG) || defined(HASHDEBUG)
@@ -300,11 +300,12 @@ NCURSES_EXPORT(void)
NCURSES_SP_NAME(_nc_linedump) (NCURSES_SP_DCL0)
/* dump the state of the real and virtual oldnum fields */
{
- int n;
char *buf = 0;
size_t want = ((size_t) screen_lines(SP_PARM) + 1) * 4;
+ (void) SP_PARM;
if ((buf = typeMalloc(char, want)) != 0) {
+ int n;
*buf = '\0';
for (n = 0; n < screen_lines(SP_PARM); n++)
@@ -339,7 +340,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
for (;;) {
int n;
- for (n = 0; n < screen_lines; n++)
+ for (n = 0; n < screen_lines(sp); n++)
oldnums[n] = _NEWINDEX;
/* grab the test vector */
diff --git a/ncurses/tty/hashmap.c b/ncurses/tty/hashmap.c
index 4a723865a4fd..75f6004d4510 100644
--- a/ncurses/tty/hashmap.c
+++ b/ncurses/tty/hashmap.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -73,19 +73,23 @@ AUTHOR
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: hashmap.c,v 1.63 2011/10/22 16:34:50 tom Exp $")
+MODULE_ID("$Id: hashmap.c,v 1.67 2019/12/15 00:57:15 tom Exp $")
#ifdef HASHDEBUG
# define _tracef printf
# undef TR
+# ifdef TRACE
# define TR(n, a) if (_nc_tracing & (n)) { _tracef a ; putchar('\n'); }
+# else
+# define TR(n, a) { _tracef a ; putchar('\n'); }
+# endif
# undef screen_lines
-# define screen_lines MAXLINES
-# define TEXTWIDTH 1
+# define screen_lines(sp) MAXLINES
+# define TEXTWIDTH(sp) 1
int oldnums[MAXLINES], reallines[MAXLINES];
-static NCURSES_CH_T oldtext[MAXLINES][TEXTWIDTH];
-static NCURSES_CH_T newtext[MAXLINES][TEXTWIDTH];
+static NCURSES_CH_T oldtext[MAXLINES][TEXTWIDTH(sp)];
+static NCURSES_CH_T newtext[MAXLINES][TEXTWIDTH(sp)];
# define OLDNUM(sp,n) oldnums[n]
# define OLDTEXT(sp,n) oldtext[n]
# define NEWTEXT(sp,m) newtext[m]
@@ -115,11 +119,13 @@ static NCURSES_CH_T newtext[MAXLINES][TEXTWIDTH];
static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT);
static NCURSES_INLINE unsigned long
-hash(SCREEN *sp, NCURSES_CH_T * text)
+hash(SCREEN *sp, NCURSES_CH_T *text)
{
int i;
NCURSES_CH_T ch;
unsigned long result = 0;
+ (void) sp;
+
for (i = TEXTWIDTH(sp); i > 0; i--) {
ch = *text++;
result += (result << 5) + (unsigned long) HASH_VAL(ch);
@@ -129,10 +135,11 @@ hash(SCREEN *sp, NCURSES_CH_T * text)
/* approximate update cost */
static int
-update_cost(SCREEN *sp, NCURSES_CH_T * from, NCURSES_CH_T * to)
+update_cost(SCREEN *sp, NCURSES_CH_T *from, NCURSES_CH_T *to)
{
int cost = 0;
int i;
+ (void) sp;
for (i = TEXTWIDTH(sp); i > 0; i--, from++, to++)
if (!(CharEq(*from, *to)))
@@ -142,11 +149,12 @@ update_cost(SCREEN *sp, NCURSES_CH_T * from, NCURSES_CH_T * to)
}
static int
-update_cost_from_blank(SCREEN *sp, NCURSES_CH_T * to)
+update_cost_from_blank(SCREEN *sp, NCURSES_CH_T *to)
{
int cost = 0;
int i;
NCURSES_CH_T blank = blankchar;
+ (void) sp;
if (back_color_erase)
SetPair(blank, GetPair(stdscr->_nc_bkgd));
@@ -190,9 +198,8 @@ cost_effective(SCREEN *sp, const int from, const int to, const int blank)
static void
grow_hunks(SCREEN *sp)
{
- int start, end, shift;
- int back_limit, forward_limit; /* limits for cells to fill */
- int back_ref_limit, forward_ref_limit; /* limits for refrences */
+ int back_limit; /* limits for cells to fill */
+ int back_ref_limit; /* limit for references */
int i;
int next_hunk;
@@ -207,8 +214,11 @@ grow_hunks(SCREEN *sp)
while (i < screen_lines(sp) && OLDNUM(sp, i) == _NEWINDEX)
i++;
for (; i < screen_lines(sp); i = next_hunk) {
- start = i;
- shift = OLDNUM(sp, i) - i;
+ int forward_limit;
+ int forward_ref_limit;
+ int end;
+ int start = i;
+ int shift = OLDNUM(sp, i) - i;
/* get forward limit */
i = start + 1;
@@ -277,7 +287,6 @@ NCURSES_SP_NAME(_nc_hash_map) (NCURSES_SP_DCL0)
{
HASHMAP *hsp;
register int i;
- int start, shift, size;
if (screen_lines(SP_PARM) > lines_alloc(SP_PARM)) {
if (hashtab(SP_PARM))
@@ -379,6 +388,8 @@ NCURSES_SP_NAME(_nc_hash_map) (NCURSES_SP_DCL0)
* more than carry.
*/
for (i = 0; i < screen_lines(SP_PARM);) {
+ int start, shift, size;
+
while (i < screen_lines(SP_PARM) && OLDNUM(SP_PARM, i) == _NEWINDEX)
i++;
if (i >= screen_lines(SP_PARM))
@@ -486,13 +497,13 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
return EXIT_FAILURE;
(void) _nc_alloc_screen();
- for (n = 0; n < screen_lines; n++) {
+ for (n = 0; n < screen_lines(sp); n++) {
reallines[n] = n;
oldnums[n] = _NEWINDEX;
CharOf(oldtext[n][0]) = CharOf(newtext[n][0]) = '.';
}
- if (isatty(fileno(stdin)))
+ if (NC_ISATTY(fileno(stdin)))
usage();
#ifdef TRACE
@@ -509,7 +520,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
break;
case 'l': /* get initial line number vector */
- for (n = 0; n < screen_lines; n++) {
+ for (n = 0; n < screen_lines(sp); n++) {
reallines[n] = n;
oldnums[n] = _NEWINDEX;
}
@@ -522,9 +533,9 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
break;
case 'n': /* use following letters as text of new lines */
- for (n = 0; n < screen_lines; n++)
+ for (n = 0; n < screen_lines(sp); n++)
CharOf(newtext[n][0]) = '.';
- for (n = 0; n < screen_lines; n++)
+ for (n = 0; n < screen_lines(sp); n++)
if (line[n + 1] == '\n')
break;
else
@@ -532,9 +543,9 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
break;
case 'o': /* use following letters as text of old lines */
- for (n = 0; n < screen_lines; n++)
+ for (n = 0; n < screen_lines(sp); n++)
CharOf(oldtext[n][0]) = '.';
- for (n = 0; n < screen_lines; n++)
+ for (n = 0; n < screen_lines(sp); n++)
if (line[n + 1] == '\n')
break;
else
@@ -546,12 +557,12 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
_nc_linedump();
#endif
(void) fputs("Old lines: [", stdout);
- for (n = 0; n < screen_lines; n++)
+ for (n = 0; n < screen_lines(sp); n++)
putchar(CharOf(oldtext[n][0]));
putchar(']');
putchar('\n');
(void) fputs("New lines: [", stdout);
- for (n = 0; n < screen_lines; n++)
+ for (n = 0; n < screen_lines(sp); n++)
putchar(CharOf(newtext[n][0]));
putchar(']');
putchar('\n');
@@ -572,11 +583,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
break;
}
}
-#if NO_LEAKS
- _nc_free_and_exit(EXIT_SUCCESS);
-#else
- return EXIT_SUCCESS;
-#endif
+ exit_curses(EXIT_SUCCESS);
}
#endif /* HASHDEBUG */
diff --git a/ncurses/tty/lib_mvcur.c b/ncurses/tty/lib_mvcur.c
index 2ea04c58a8f2..c4847c720589 100644
--- a/ncurses/tty/lib_mvcur.c
+++ b/ncurses/tty/lib_mvcur.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -159,7 +159,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_mvcur.c,v 1.133 2013/05/25 23:59:41 tom Exp $")
+MODULE_ID("$Id: lib_mvcur.c,v 1.150 2019/06/01 23:42:09 tom Exp $")
#define WANT_CHAR(sp, y, x) NewScreen(sp)->_line[y].text[x] /* desired state */
@@ -327,7 +327,7 @@ NCURSES_EXPORT(void)
NCURSES_SP_NAME(_nc_mvcur_init) (NCURSES_SP_DCL0)
/* initialize the cost structure */
{
- if (SP_PARM->_ofp && isatty(fileno(SP_PARM->_ofp))) {
+ if (SP_PARM->_ofp && NC_ISATTY(fileno(SP_PARM->_ofp))) {
SP_PARM->_char_padding = ((BAUDBYTE * 1000 * 10)
/ (BAUDRATE(SP_PARM) > 0
? BAUDRATE(SP_PARM)
@@ -344,7 +344,9 @@ NCURSES_SP_NAME(_nc_mvcur_init) (NCURSES_SP_DCL0)
SP_PARM->_home_cost = CostOf(cursor_home, 0);
SP_PARM->_ll_cost = CostOf(cursor_to_ll, 0);
#if USE_HARD_TABS
- if (getenv("NCURSES_NO_HARD_TABS") == 0) {
+ if (getenv("NCURSES_NO_HARD_TABS") == 0
+ && dest_tabs_magic_smso == 0
+ && HasHardTabs()) {
SP_PARM->_ht_cost = CostOf(tab, 0);
SP_PARM->_cbt_cost = CostOf(back_tab, 0);
} else {
@@ -450,8 +452,8 @@ NCURSES_SP_NAME(_nc_mvcur_init) (NCURSES_SP_DCL0)
/*
* A different, possibly better way to arrange this would be to set the
- * SCREEN's _endwin to TRUE at window initialization time and let this be
- * called by doupdate's return-from-shellout code.
+ * SCREEN's _endwin at window initialization time and let this be called by
+ * doupdate's return-from-shellout code.
*/
NCURSES_SP_NAME(_nc_mvcur_resume) (NCURSES_SP_ARG);
}
@@ -935,6 +937,7 @@ onscreen_mvcur(NCURSES_SP_DCLx
#endif /* MAIN */
if (usecost != INFINITY) {
+ TR(TRACE_MOVE, ("mvcur tactic %d", tactic));
TPUTS_TRACE("mvcur");
NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
buffer, 1, myOutCh);
@@ -988,14 +991,14 @@ _nc_real_mvcur(NCURSES_SP_DCLx
TR(TRACE_CHARPUT, ("turning off (%#lx) %s before move",
(unsigned long) AttrOf(oldattr),
_traceattr(AttrOf(oldattr))));
- (void) VIDATTR(SP_PARM, A_NORMAL, 0);
+ VIDPUTS(SP_PARM, A_NORMAL, 0);
}
if (xold >= screen_columns(SP_PARM)) {
- int l;
if (SP_PARM->_nl) {
- l = (xold + 1) / screen_columns(SP_PARM);
+ int l = (xold + 1) / screen_columns(SP_PARM);
+
yold += l;
if (yold >= screen_lines(SP_PARM))
l -= (yold - screen_lines(SP_PARM) - 1);
@@ -1042,7 +1045,7 @@ _nc_real_mvcur(NCURSES_SP_DCLx
TR(TRACE_CHARPUT, ("turning on (%#lx) %s after move",
(unsigned long) AttrOf(oldattr),
_traceattr(AttrOf(oldattr))));
- (void) VIDATTR(SP_PARM, AttrOf(oldattr), GetPair(oldattr));
+ VIDPUTS(SP_PARM, AttrOf(oldattr), GetPair(oldattr));
}
}
returnCode(code);
@@ -1056,9 +1059,18 @@ NCURSES_SP_NAME(_nc_mvcur) (NCURSES_SP_DCLx
int yold, int xold,
int ynew, int xnew)
{
- return _nc_real_mvcur(NCURSES_SP_ARGx yold, xold, ynew, xnew,
- NCURSES_SP_NAME(_nc_outch),
- TRUE);
+ int rc;
+ rc = _nc_real_mvcur(NCURSES_SP_ARGx yold, xold, ynew, xnew,
+ NCURSES_SP_NAME(_nc_outch),
+ TRUE);
+ /*
+ * With the terminal-driver, we cannot distinguish between internal and
+ * external calls. Flush the output if the screen has not been
+ * initialized, e.g., when used from low-level terminfo programs.
+ */
+ if ((SP_PARM != 0) && (SP_PARM->_endwin == ewInitial))
+ NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
+ return rc;
}
#if NCURSES_SP_FUNCS
@@ -1077,11 +1089,16 @@ _nc_mvcur(int yold, int xold,
NCURSES_EXPORT(int)
TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew)
{
- return _nc_real_mvcur(NCURSES_SP_ARGx
- yold, xold,
- ynew, xnew,
- NCURSES_SP_NAME(_nc_outch),
- TRUE);
+ int rc;
+ rc = _nc_real_mvcur(NCURSES_SP_ARGx
+ yold, xold,
+ ynew, xnew,
+ NCURSES_SP_NAME(_nc_outch),
+ TRUE);
+ if ((SP_PARM != 0) && (SP_PARM->_endwin == ewInitial))
+ NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
+ NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
+ return rc;
}
#else /* !USE_TERM_DRIVER */
@@ -1181,13 +1198,12 @@ roll(int n)
int
main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
{
- strcpy(tname, getenv("TERM"));
+ _nc_STRCPY(tname, getenv("TERM"), sizeof(tname));
load_term();
_nc_setupscreen(lines, columns, stdout, FALSE, 0);
baudrate();
_nc_mvcur_init();
- NC_BUFFERED(FALSE);
(void) puts("The mvcur tester. Type ? for help");
@@ -1198,27 +1214,26 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
int fy, fx, ty, tx, n, i;
char buf[BUFSIZ], capname[BUFSIZ];
- (void) fputs("> ", stdout);
- (void) fgets(buf, sizeof(buf), stdin);
+ if (fputs("> ", stdout) == EOF)
+ break;
+ if (fgets(buf, sizeof(buf), stdin) == 0)
+ break;
+#define PUTS(s) (void) puts(s)
+#define PUTF(s,t) (void) printf(s,t)
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");
+ PUTS("? -- display this help message");
+ PUTS("fy fx ty tx -- (4 numbers) display (fy,fx)->(ty,tx) move");
+ PUTS("s[croll] n t b m -- display scrolling sequence");
+ PUTF("r[eload] -- reload terminal info for %s\n",
+ termname());
+ PUTS("l[oad] <term> -- load terminal info for type <term>");
+ PUTS("d[elete] <cap> -- delete named capability");
+ PUTS("i[nspect] -- display terminal capabilities");
+ PUTS("c[ost] -- dump cursor-optimization cost table");
+ PUTS("o[optimize] -- toggle movement optimization");
+ PUTS("t[orture] <num> -- torture-test with <num> random moves");
+ PUTS("q[uit] -- quit the program");
} else if (sscanf(buf, "%d %d %d %d", &fy, &fx, &ty, &tx) == 4) {
struct timeval before, after;
@@ -1246,7 +1261,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
before.tv_sec)
* 1000000));
} else if (buf[0] == 'r') {
- (void) strcpy(tname, termname());
+ _nc_STRCPY(tname, termname(), sizeof(tname));
load_term();
} else if (sscanf(buf, "l %s", tname) == 1) {
load_term();
@@ -1279,8 +1294,9 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
}
}
} else if (buf[0] == 'i') {
- dump_init((char *) NULL, F_TERMINFO, S_TERMINFO, 70, 0, FALSE);
- dump_entry(&cur_term->type, FALSE, TRUE, 0, 0);
+ dump_init(NULL, F_TERMINFO, S_TERMINFO,
+ FALSE, 70, 0, 0, FALSE, FALSE, 0);
+ dump_entry(&TerminalType(cur_term), FALSE, TRUE, 0, 0);
putchar('\n');
} else if (buf[0] == 'o') {
if (_nc_optimize_enable & OPTIMIZE_MVCUR) {
diff --git a/ncurses/tty/lib_tstp.c b/ncurses/tty/lib_tstp.c
index b6955c456248..42d5ccb41522 100644
--- a/ncurses/tty/lib_tstp.c
+++ b/ncurses/tty/lib_tstp.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2014,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <SigAction.h>
-MODULE_ID("$Id: lib_tstp.c,v 1.47 2013/04/27 19:50:17 tom Exp $")
+MODULE_ID("$Id: lib_tstp.c,v 1.49 2017/07/22 23:29:58 tom Exp $")
#if defined(SIGTSTP) && (HAVE_SIGACTION || HAVE_SIGVEC)
#define USE_SIGTSTP 1
@@ -155,8 +155,10 @@ handle_SIGTSTP(int dummy GCC_UNUSED)
* taken ownership of the tty and modified the settings when our
* parent was stopped before us, and we would likely pick up the
* settings already modified by the shell.
+ *
+ * Don't do this if we're not in curses -
*/
- if (sp != 0 && !sp->_endwin) /* don't do this if we're not in curses */
+ if (sp != 0 && (sp->_endwin == ewRunning))
#if HAVE_TCGETPGRP
if (tcgetpgrp(STDIN_FILENO) == getpgrp())
#endif
@@ -267,13 +269,13 @@ handle_SIGINT(int sig)
SCREEN *scan;
for (each_screen(scan)) {
if (scan->_ofp != 0
- && isatty(fileno(scan->_ofp))) {
+ && NC_ISATTY(fileno(scan->_ofp))) {
scan->_outch = NCURSES_SP_NAME(_nc_outch);
}
set_term(scan);
NCURSES_SP_NAME(endwin) (NCURSES_SP_ARG);
if (sp)
- sp->_endwin = FALSE; /* in case of reuse */
+ sp->_endwin = ewInitial; /* in case of reuse */
}
}
}
diff --git a/ncurses/tty/lib_twait.c b/ncurses/tty/lib_twait.c
index 2f70550fb578..ffdd4932183e 100644
--- a/ncurses/tty/lib_twait.c
+++ b/ncurses/tty/lib_twait.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -70,12 +70,12 @@
# include <sys/select.h>
# endif
#endif
-#ifdef __MINGW32__
+#ifdef _WIN32
# include <sys/time.h>
#endif
#undef CUR
-MODULE_ID("$Id: lib_twait.c,v 1.67 2013/02/18 09:22:27 tom Exp $")
+MODULE_ID("$Id: lib_twait.c,v 1.73 2018/06/23 21:35:06 tom Exp $")
static long
_nc_gettime(TimeType * t0, int first)
@@ -102,7 +102,7 @@ _nc_gettime(TimeType * t0, int first)
if (first) {
*t0 = t1;
}
- res = (t1 - *t0) * 1000;
+ res = (long) ((t1 - *t0) * 1000);
#endif
TR(TRACE_IEVENT, ("%s time: %ld msec", first ? "get" : "elapsed", res));
return res;
@@ -113,15 +113,15 @@ NCURSES_EXPORT(int)
_nc_eventlist_timeout(_nc_eventlist * evl)
{
int event_delay = -1;
- int n;
if (evl != 0) {
+ int n;
for (n = 0; n < evl->count; ++n) {
_nc_event *ev = evl->events[n];
if (ev->type == _NC_EVENT_TIMEOUT_MSEC) {
- event_delay = ev->data.timeout_msec;
+ event_delay = (int) ev->data.timeout_msec;
if (event_delay < 0)
event_delay = INT_MAX; /* FIXME Is this defined? */
}
@@ -197,6 +197,10 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED,
long starttime, returntime;
+#ifdef NCURSES_WGETCH_EVENTS
+ (void) timeout_is_event;
+#endif
+
TR(TRACE_IEVENT, ("start twait: %d milliseconds, mode: %d",
milliseconds, mode));
@@ -230,7 +234,8 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED,
#ifdef NCURSES_WGETCH_EVENTS
if ((mode & TW_EVENT) && evl) {
- fds = typeMalloc(struct pollfd, MIN_FDS + evl->count);
+ if (fds == fd_list)
+ fds = typeMalloc(struct pollfd, MIN_FDS + evl->count);
if (fds == 0)
return TW_NONE;
}
diff --git a/ncurses/tty/lib_vidattr.c b/ncurses/tty/lib_vidattr.c
index 0846d8485f42..49e754782597 100644
--- a/ncurses/tty/lib_vidattr.c
+++ b/ncurses/tty/lib_vidattr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -69,17 +69,24 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_vidattr.c,v 1.67 2013/08/31 20:08:59 tom Exp $")
+MODULE_ID("$Id: lib_vidattr.c,v 1.74 2019/04/13 22:40:54 tom Exp $")
#define doPut(mode) \
TPUTS_TRACE(#mode); \
NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc)
#define TurnOn(mask, mode) \
- if ((turn_on & mask) && mode) { doPut(mode); }
+ if ((turn_on & mask) && mode) { \
+ TPUTS_TRACE(#mode); \
+ NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc); \
+ }
#define TurnOff(mask, mode) \
- if ((turn_off & mask) && mode) { doPut(mode); turn_off &= ~mask; }
+ if ((turn_off & mask) && mode) { \
+ TPUTS_TRACE(#mode); \
+ NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc); \
+ turn_off &= ~mask; \
+ }
/* if there is no current screen, assume we *can* do color */
#define SetColorsIf(why, old_attr) \
@@ -117,7 +124,7 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx
T((T_CALLED("vidputs(%p,%s)"), (void *) SP_PARM, _traceattr(newmode)));
- if (!IsTermInfo(SP_PARM))
+ if (!IsValidTIScreen(SP_PARM))
returnCode(ERR);
/* this allows us to go on whether or not newterm() has been called */
@@ -213,7 +220,7 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx
}
turn_off = (~newmode & PreviousAttr) & ALL_BUT_COLOR;
- turn_on = (newmode & ~PreviousAttr) & ALL_BUT_COLOR;
+ turn_on = (newmode & ~(PreviousAttr & TPARM_ATTR)) & ALL_BUT_COLOR;
SetColorsIf(((pair == 0) && !fix_pair0), PreviousAttr);
@@ -308,7 +315,7 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx
#if USE_ITALIC
TurnOn(A_ITALIC, enter_italics_mode);
#endif
-#if USE_WIDEC_SUPPORT
+#if USE_WIDEC_SUPPORT && defined(enter_horizontal_hl_mode)
TurnOn(A_HORIZONTAL, enter_horizontal_hl_mode);
TurnOn(A_LEFT, enter_left_hl_mode);
TurnOn(A_LOW, enter_low_hl_mode);
@@ -368,7 +375,7 @@ NCURSES_SP_NAME(termattrs) (NCURSES_SP_DCL0)
if (HasTerminal(SP_PARM)) {
#ifdef USE_TERM_DRIVER
- attrs = CallDriver(SP_PARM, conattr);
+ attrs = CallDriver(SP_PARM, td_conattr);
#else /* ! USE_TERM_DRIVER */
if (enter_alt_charset_mode)
diff --git a/ncurses/tty/tty_update.c b/ncurses/tty/tty_update.c
index 8a110ee92125..162303433c30 100644
--- a/ncurses/tty/tty_update.c
+++ b/ncurses/tty/tty_update.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,6 +43,8 @@
*
*-----------------------------------------------------------------*/
+#define NEW_PAIR_INTERNAL 1
+
#include <curses.priv.h>
#ifndef CUR
@@ -82,7 +84,7 @@
#include <ctype.h>
-MODULE_ID("$Id: tty_update.c,v 1.277 2014/02/01 22:09:27 tom Exp $")
+MODULE_ID("$Id: tty_update.c,v 1.304 2019/06/23 16:22:17 tom Exp $")
/*
* This define controls the line-breakout optimization. Every once in a
@@ -179,7 +181,7 @@ position_check(NCURSES_SP_DCLx int expected_y, int expected_x, char *legend)
}
}
#else
-#define position_check(sp, expected_y, expected_x, legend) /* nothing */
+#define position_check(expected_y, expected_x, legend) /* nothing */
#endif /* POSITION_DEBUG */
/****************************************************************************
@@ -194,15 +196,23 @@ GoTo(NCURSES_SP_DCLx int const row, int const col)
TR(TRACE_MOVE, ("GoTo(%p, %d, %d) from (%d, %d)",
(void *) SP_PARM, row, col, SP_PARM->_cursrow, SP_PARM->_curscol));
- position_check(SP_PARM, SP_PARM->_cursrow, SP_PARM->_curscol, "GoTo");
+ position_check(NCURSES_SP_ARGx
+ SP_PARM->_cursrow,
+ SP_PARM->_curscol, "GoTo");
TINFO_MVCUR(NCURSES_SP_ARGx
SP_PARM->_cursrow,
SP_PARM->_curscol,
row, col);
- position_check(SP_PARM, SP_PARM->_cursrow, SP_PARM->_curscol, "GoTo2");
+ position_check(NCURSES_SP_ARGx
+ SP_PARM->_cursrow,
+ SP_PARM->_curscol, "GoTo2");
}
+#if !NCURSES_WCWIDTH_GRAPHICS
+#define is_wacs_value(ch) (_nc_wacs_width(ch) == 1 && wcwidth(ch) > 1)
+#endif /* !NCURSES_WCWIDTH_GRAPHICS */
+
static NCURSES_INLINE void
PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch)
{
@@ -229,7 +239,7 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch)
* Determine the number of character cells which the 'ch' value will use
* on the screen. It should be at least one.
*/
- if ((chlen = wcwidth(CharOf(CHDEREF(ch)))) <= 0) {
+ if ((chlen = _nc_wacs_width(CharOf(CHDEREF(ch)))) <= 0) {
static const NCURSES_CH_T blank = NewChar(BLANK_TEXT);
/*
@@ -264,8 +274,14 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch)
if ((AttrOf(attr) & A_ALTCHARSET)
&& SP_PARM->_acs_map != 0
- && CharOfD(ch) < ACS_LEN) {
+ && ((CharOfD(ch) < ACS_LEN)
+#if !NCURSES_WCWIDTH_GRAPHICS
+ || is_wacs_value(CharOfD(ch))
+#endif
+ )) {
+ int c8;
my_ch = CHDEREF(ch); /* work around const param */
+ c8 = CharOf(my_ch);
#if USE_WIDEC_SUPPORT
/*
* This is crude & ugly, but works most of the time. It checks if the
@@ -273,17 +289,39 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch)
* character, and uses the wide-character mapping when we expect the
* normal one to be broken (by mis-design ;-).
*/
- if (SP_PARM->_screen_acs_fix
- && SP_PARM->_screen_acs_map[CharOf(my_ch)]) {
- RemAttr(attr, A_ALTCHARSET);
- my_ch = _nc_wacs[CharOf(my_ch)];
- } else if (SP_PARM->_screen_unicode
- && !SP_PARM->_screen_acs_map[CharOf(my_ch)]
- && _nc_wacs[CharOf(my_ch)].chars[0]) {
- RemAttr(attr, A_ALTCHARSET);
- my_ch = _nc_wacs[CharOf(my_ch)];
- }
+ if (SP_PARM->_screen_unicode
+ && _nc_wacs[CharOf(my_ch)].chars[0]) {
+ if (SP_PARM->_screen_acs_map[CharOf(my_ch)]) {
+ if (SP_PARM->_screen_acs_fix) {
+ RemAttr(attr, A_ALTCHARSET);
+ my_ch = _nc_wacs[CharOf(my_ch)];
+ }
+ } else {
+ RemAttr(attr, A_ALTCHARSET);
+ my_ch = _nc_wacs[CharOf(my_ch)];
+ }
+#if !NCURSES_WCWIDTH_GRAPHICS
+ if (!(AttrOf(attr) & A_ALTCHARSET)) {
+ chlen = 1;
+ }
+#endif /* !NCURSES_WCWIDTH_GRAPHICS */
+ } else
#endif
+ if (!SP_PARM->_screen_acs_map[c8]) {
+ /*
+ * If we found no mapping for a given alternate-character set item
+ * in the terminal description, attempt to use the ASCII fallback
+ * code which is populated in the _acs_map[] array. If that did
+ * not correspond to a line-drawing, etc., graphics character, the
+ * array entry would be empty.
+ */
+ chtype temp = UChar(SP_PARM->_acs_map[c8]);
+ if (temp) {
+ RemAttr(attr, A_ALTCHARSET);
+ SetChar(my_ch, temp, AttrOf(attr));
+ }
+ }
+
/*
* If we (still) have alternate character set, it is the normal 8bit
* flavor. The _screen_acs_map[] array tells if the character was
@@ -303,6 +341,11 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch)
}
ch = CHREF(my_ch);
}
+#if USE_WIDEC_SUPPORT && !NCURSES_WCWIDTH_GRAPHICS
+ else if (chlen > 1 && is_wacs_value(CharOfD(ch))) {
+ chlen = 1;
+ }
+#endif
if (tilde_glitch && (CharOfD(ch) == L('~'))) {
SetChar(tilde, L('`'), AttrOf(attr));
ch = CHREF(tilde);
@@ -390,7 +433,7 @@ PutCharLR(NCURSES_SP_DCLx const ARG_CH_T ch)
PutAttrChar(NCURSES_SP_ARGx ch);
SP_PARM->_curscol--;
- position_check(SP_PARM,
+ position_check(NCURSES_SP_ARGx
SP_PARM->_cursrow,
SP_PARM->_curscol,
"exit_am_mode");
@@ -444,12 +487,12 @@ wrap_cursor(NCURSES_SP_DCL0)
TR(TRACE_CHARPUT, ("turning off (%#lx) %s before wrapping",
(unsigned long) AttrOf(SCREEN_ATTRS(SP_PARM)),
_traceattr(AttrOf(SCREEN_ATTRS(SP_PARM)))));
- (void) VIDATTR(SP_PARM, A_NORMAL, 0);
+ VIDPUTS(SP_PARM, A_NORMAL, 0);
}
} else {
SP_PARM->_curscol--;
}
- position_check(SP_PARM,
+ position_check(NCURSES_SP_ARGx
SP_PARM->_cursrow,
SP_PARM->_curscol,
"wrap_cursor");
@@ -469,7 +512,9 @@ PutChar(NCURSES_SP_DCLx const ARG_CH_T ch)
if (SP_PARM->_curscol >= screen_columns(SP_PARM))
wrap_cursor(NCURSES_SP_ARG);
- position_check(SP_PARM, SP_PARM->_cursrow, SP_PARM->_curscol, "PutChar");
+ position_check(NCURSES_SP_ARGx
+ SP_PARM->_cursrow,
+ SP_PARM->_curscol, "PutChar");
}
/*
@@ -487,14 +532,15 @@ can_clear_with(NCURSES_SP_DCLx ARG_CH_T ch)
if (!SP_PARM->_default_color)
return FALSE;
- if (SP_PARM->_default_fg != C_MASK || SP_PARM->_default_bg != C_MASK)
+ if (!(isDefaultColor(SP_PARM->_default_fg) &&
+ isDefaultColor(SP_PARM->_default_bg)))
return FALSE;
if ((pair = GetPair(CHDEREF(ch))) != 0) {
NCURSES_COLOR_T fg, bg;
if (NCURSES_SP_NAME(pair_content) (NCURSES_SP_ARGx
(short) pair,
&fg, &bg) == ERR
- || (fg != C_MASK || bg != C_MASK)) {
+ || !(isDefaultColor(fg) && isDefaultColor(bg))) {
return FALSE;
}
}
@@ -572,7 +618,15 @@ EmitRange(NCURSES_SP_DCLx const NCURSES_CH_T * ntext, int num)
} else {
return 1; /* cursor stays in the middle */
}
- } else if (repeat_char && runcount > SP_PARM->_rep_cost) {
+ } else if (repeat_char != 0 &&
+#if USE_WIDEC_SUPPORT
+ (!SP_PARM->_screen_unicode &&
+ (CharOf(ntext0) < ((AttrOf(ntext0) & A_ALTCHARSET)
+ ? ACS_LEN
+ : 256))) &&
+#endif
+ runcount > SP_PARM->_rep_cost) {
+ NCURSES_CH_T temp;
bool wrap_possible = (SP_PARM->_curscol + runcount >=
screen_columns(SP_PARM));
int rep_count = runcount;
@@ -581,11 +635,19 @@ EmitRange(NCURSES_SP_DCLx const NCURSES_CH_T * ntext, int num)
rep_count--;
UpdateAttrs(SP_PARM, ntext0);
+ temp = ntext0;
+ if ((AttrOf(temp) & A_ALTCHARSET) &&
+ SP_PARM->_acs_map != 0 &&
+ (SP_PARM->_acs_map[CharOf(temp)] & A_CHARTEXT) != 0) {
+ SetChar(temp,
+ (SP_PARM->_acs_map[CharOf(ntext0)] & A_CHARTEXT),
+ AttrOf(ntext0) | A_ALTCHARSET);
+ }
NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
TPARM_2(repeat_char,
- CharOf(ntext0),
+ CharOf(temp),
rep_count),
- rep_count,
+ 1,
NCURSES_SP_NAME(_nc_outch));
SP_PARM->_curscol += rep_count;
@@ -621,7 +683,7 @@ PutRange(NCURSES_SP_DCLx
int row,
int first, int last)
{
- int i, j, same;
+ int rc;
TR(TRACE_CHARPUT, ("PutRange(%p, %p, %p, %d, %d, %d)",
(void *) SP_PARM,
@@ -631,6 +693,8 @@ PutRange(NCURSES_SP_DCLx
if (otext != ntext
&& (last - first + 1) > SP_PARM->_inline_cost) {
+ int i, j, same;
+
for (j = first, same = 0; j <= last; j++) {
if (!same && isWidecExt(otext[j]))
continue;
@@ -649,9 +713,11 @@ PutRange(NCURSES_SP_DCLx
* Always return 1 for the next GoTo() after a PutRange() if we found
* identical characters at end of interval
*/
- return (same == 0 ? i : 1);
+ rc = (same == 0 ? i : 1);
+ } else {
+ rc = EmitRange(NCURSES_SP_ARGx ntext + first, last - first + 1);
}
- return EmitRange(NCURSES_SP_ARGx ntext + first, last - first + 1);
+ return rc;
}
/* leave unbracketed here so 'indent' works */
@@ -671,9 +737,12 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0)
T((T_CALLED("_nc_tinfo:doupdate(%p)"), (void *) SP_PARM));
- if (SP_PARM == 0)
- returnCode(ERR);
+ _nc_lock_global(update);
+ if (SP_PARM == 0) {
+ _nc_unlock_global(update);
+ returnCode(ERR);
+ }
#if !USE_REENTRANT
/*
* It is "legal" but unlikely that an application could assign a new
@@ -694,9 +763,10 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0)
if (CurScreen(SP_PARM) == 0
|| NewScreen(SP_PARM) == 0
- || StdScreen(SP_PARM) == 0)
+ || StdScreen(SP_PARM) == 0) {
+ _nc_unlock_global(update);
returnCode(ERR);
-
+ }
#ifdef TRACE
if (USE_TRACEF(TRACE_UPDATE)) {
if (CurScreen(SP_PARM)->_clear)
@@ -714,7 +784,8 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0)
SP_PARM->_fifohold--;
#if USE_SIZECHANGE
- if (SP_PARM->_endwin || _nc_handle_sigwinch(SP_PARM)) {
+ if ((SP_PARM->_endwin == ewSuspend)
+ || _nc_handle_sigwinch(SP_PARM)) {
/*
* This is a transparent extension: XSI does not address it,
* and applications need not know that ncurses can do it.
@@ -727,7 +798,7 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0)
}
#endif
- if (SP_PARM->_endwin) {
+ if (SP_PARM->_endwin == ewSuspend) {
T(("coming back from shell mode"));
NCURSES_SP_NAME(reset_prog_mode) (NCURSES_SP_ARG);
@@ -736,7 +807,7 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0)
NCURSES_SP_NAME(_nc_screen_resume) (NCURSES_SP_ARG);
SP_PARM->_mouse_resume(SP_PARM);
- SP_PARM->_endwin = FALSE;
+ SP_PARM->_endwin = ewRunning;
}
#if USE_TRACE_TIMES
/* zero the metering machinery */
@@ -1004,6 +1075,7 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0)
_nc_signal_handler(TRUE);
+ _nc_unlock_global(update);
returnCode(OK);
}
@@ -1075,10 +1147,10 @@ ClrUpdate(NCURSES_SP_DCL0)
static void
ClrToEOL(NCURSES_SP_DCLx NCURSES_CH_T blank, int needclear)
{
- int j;
-
if (CurScreen(SP_PARM) != 0
&& SP_PARM->_cursrow >= 0) {
+ int j;
+
for (j = SP_PARM->_curscol; j < screen_columns(SP_PARM); j++) {
if (j >= 0) {
NCURSES_CH_T *cp =
@@ -1149,16 +1221,17 @@ ClrToEOS(NCURSES_SP_DCLx NCURSES_CH_T blank)
static int
ClrBottom(NCURSES_SP_DCLx int total)
{
- int row;
- int col;
int top = total;
int last = min(screen_columns(SP_PARM), NewScreen(SP_PARM)->_maxx + 1);
NCURSES_CH_T blank = NewScreen(SP_PARM)->_line[total - 1].text[last - 1];
- bool ok;
if (clr_eos && can_clear_with(NCURSES_SP_ARGx CHREF(blank))) {
+ int row;
for (row = total - 1; row >= 0; row--) {
+ int col;
+ bool ok;
+
for (col = 0, ok = TRUE; ok && col < last; col++) {
ok = (CharEq(NewScreen(SP_PARM)->_line[row].text[col], blank));
}
@@ -1249,8 +1322,8 @@ TransformLine(NCURSES_SP_DCLx int const lineno)
&& unColor(oldLine[n]) == unColor(newLine[n])) {
if (oldPair < SP_PARM->_pair_limit
&& newPair < SP_PARM->_pair_limit
- && (SP_PARM->_color_pairs[oldPair] ==
- SP_PARM->_color_pairs[newPair])) {
+ && (isSamePair(SP_PARM->_color_pairs[oldPair],
+ SP_PARM->_color_pairs[newPair]))) {
SetPair(oldLine[n], GetPair(newLine[n]));
}
}
@@ -1486,9 +1559,17 @@ TransformLine(NCURSES_SP_DCLx int const lineno)
if (oLastChar < nLastChar) {
int m = max(nLastNonblank, oLastNonblank);
#if USE_WIDEC_SUPPORT
- while (isWidecExt(newLine[n + 1]) && n) {
- --n;
- --oLastChar;
+ if (n) {
+ while (isWidecExt(newLine[n + 1]) && n) {
+ --n;
+ --oLastChar; /* increase cost */
+ }
+ } else if (n >= firstChar &&
+ isWidecBase(newLine[n])) {
+ while (isWidecExt(newLine[n + 1])) {
+ ++n;
+ ++oLastChar; /* decrease cost */
+ }
}
#endif
GoTo(NCURSES_SP_ARGx lineno, n + 1);
@@ -1508,8 +1589,9 @@ TransformLine(NCURSES_SP_DCLx int const lineno)
if (DelCharCost(SP_PARM, oLastChar - nLastChar)
> SP_PARM->_el_cost + nLastNonblank - (n + 1)) {
if (PutRange(NCURSES_SP_ARGx oldLine, newLine, lineno,
- n + 1, nLastNonblank))
- GoTo(NCURSES_SP_ARGx lineno, nLastNonblank + 1);
+ n + 1, nLastNonblank)) {
+ GoTo(NCURSES_SP_ARGx lineno, nLastNonblank + 1);
+ }
ClrToEOL(NCURSES_SP_ARGx blank, FALSE);
} else {
/*
@@ -1570,7 +1652,7 @@ ClearScreen(NCURSES_SP_DCLx NCURSES_CH_T blank)
UpdateAttrs(SP_PARM, blank);
NCURSES_PUTP2("clear_screen", clear_screen);
SP_PARM->_cursrow = SP_PARM->_curscol = 0;
- position_check(SP_PARM,
+ position_check(NCURSES_SP_ARGx
SP_PARM->_cursrow,
SP_PARM->_curscol,
"ClearScreen");
@@ -1631,16 +1713,16 @@ InsStr(NCURSES_SP_DCLx NCURSES_CH_T * line, int count)
TPUTS_TRACE("parm_ich");
NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
TPARM_1(parm_ich, count),
- count,
+ 1,
NCURSES_SP_NAME(_nc_outch));
- while (count) {
+ while (count > 0) {
PutAttrChar(NCURSES_SP_ARGx CHREF(*line));
line++;
count--;
}
} else if (enter_insert_mode && exit_insert_mode) {
NCURSES_PUTP2("enter_insert_mode", enter_insert_mode);
- while (count) {
+ while (count > 0) {
PutAttrChar(NCURSES_SP_ARGx CHREF(*line));
if (insert_padding) {
NCURSES_PUTP2("insert_padding", insert_padding);
@@ -1650,7 +1732,7 @@ InsStr(NCURSES_SP_DCLx NCURSES_CH_T * line, int count)
}
NCURSES_PUTP2("exit_insert_mode", exit_insert_mode);
} else {
- while (count) {
+ while (count > 0) {
NCURSES_PUTP2("insert_character", insert_character);
PutAttrChar(NCURSES_SP_ARGx CHREF(*line));
if (insert_padding) {
@@ -1660,7 +1742,9 @@ InsStr(NCURSES_SP_DCLx NCURSES_CH_T * line, int count)
count--;
}
}
- position_check(SP_PARM, SP_PARM->_cursrow, SP_PARM->_curscol, "InsStr");
+ position_check(NCURSES_SP_ARGx
+ SP_PARM->_cursrow,
+ SP_PARM->_curscol, "InsStr");
}
/*
@@ -1673,8 +1757,6 @@ InsStr(NCURSES_SP_DCLx NCURSES_CH_T * line, int count)
static void
DelChar(NCURSES_SP_DCLx int count)
{
- int n;
-
TR(TRACE_UPDATE, ("DelChar(%p, %d) called, position = (%ld,%ld)",
(void *) SP_PARM, count,
(long) NewScreen(SP_PARM)->_cury,
@@ -1684,9 +1766,11 @@ DelChar(NCURSES_SP_DCLx int count)
TPUTS_TRACE("parm_dch");
NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
TPARM_1(parm_dch, count),
- count,
+ 1,
NCURSES_SP_NAME(_nc_outch));
} else {
+ int n;
+
for (n = 0; n < count; n++) {
NCURSES_PUTP2("delete_character", delete_character);
}
@@ -2065,16 +2149,16 @@ NCURSES_SP_NAME(_nc_screen_resume) (NCURSES_SP_DCL0)
NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_ARG);
/* restore user-defined colors, if any */
- if (SP_PARM->_color_defs < 0) {
+ if (SP_PARM->_color_defs < 0 && !SP_PARM->_direct_color.value) {
int n;
SP_PARM->_color_defs = -(SP_PARM->_color_defs);
for (n = 0; n < SP_PARM->_color_defs; ++n) {
if (SP_PARM->_color_table[n].init) {
- NCURSES_SP_NAME(init_color) (NCURSES_SP_ARGx
- (short) n,
- SP_PARM->_color_table[n].r,
- SP_PARM->_color_table[n].g,
- SP_PARM->_color_table[n].b);
+ _nc_init_color(SP_PARM,
+ n,
+ SP_PARM->_color_table[n].r,
+ SP_PARM->_color_table[n].g,
+ SP_PARM->_color_table[n].b);
}
}
}
diff --git a/ncurses/widechar/charable.c b/ncurses/widechar/charable.c
index 91ceb32ff738..104f59dd8560 100644
--- a/ncurses/widechar/charable.c
+++ b/ncurses/widechar/charable.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2003-2005,2008 Free Software Foundation, Inc. *
+ * Copyright (c) 2003-2008,2018 Free 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: charable.c,v 1.5 2008/07/05 20:51:41 tom Exp $")
+MODULE_ID("$Id: charable.c,v 1.7 2018/06/30 20:46:25 tom Exp $")
NCURSES_EXPORT(bool) _nc_is_charable(wchar_t ch)
{
@@ -57,6 +57,8 @@ NCURSES_EXPORT(int) _nc_to_char(wint_t ch)
result = UChar(temp[0]);
else
result = -1;
+#else
+#error expected either wctob/wctomb
#endif
return result;
}
@@ -75,6 +77,8 @@ NCURSES_EXPORT(wint_t) _nc_to_widechar(int ch)
result = convert;
else
result = WEOF;
+#else
+#error expected either btowc/mbtowc
#endif
return result;
}
diff --git a/ncurses/widechar/lib_add_wch.c b/ncurses/widechar/lib_add_wch.c
index 38d3130a54c4..c780466f72a9 100644
--- a/ncurses/widechar/lib_add_wch.c
+++ b/ncurses/widechar/lib_add_wch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2004-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2004-2016,2019 Free 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 @@
#include <wctype.h>
#endif
-MODULE_ID("$Id: lib_add_wch.c,v 1.12 2011/03/22 09:31:15 Petr.Pavlu Exp $")
+MODULE_ID("$Id: lib_add_wch.c,v 1.15 2019/05/04 20:31:31 tom Exp $")
/* clone/adapt lib_addch.c */
static const cchar_t blankchar = NewChar(BLANK_TEXT);
@@ -55,7 +55,7 @@ static const cchar_t blankchar = NewChar(BLANK_TEXT);
*/
/* Return bit mask for clearing color pair number if given ch has color */
-#define COLOR_MASK(ch) (~(attr_t)((ch) & A_COLOR ? A_COLOR : 0))
+#define COLOR_MASK(ch) (~(attr_t)(((ch) & A_COLOR) ? A_COLOR : 0))
static NCURSES_INLINE cchar_t
render_char(WINDOW *win, cchar_t ch)
@@ -114,7 +114,7 @@ render_char(WINDOW *win, cchar_t ch)
#endif
static bool
-newline_forces_scroll(WINDOW *win, NCURSES_SIZE_T * ypos)
+newline_forces_scroll(WINDOW *win, NCURSES_SIZE_T *ypos)
{
bool result = FALSE;
@@ -195,7 +195,7 @@ wadd_wch_literal(WINDOW *win, cchar_t ch)
* adjustments.
*/
{
- int len = wcwidth(CharOf(ch));
+ int len = _nc_wacs_width(CharOf(ch));
int i;
int j;
wchar_t *chars;
diff --git a/ncurses/widechar/lib_cchar.c b/ncurses/widechar/lib_cchar.c
index 654bebb46d36..58a3b9401420 100644
--- a/ncurses/widechar/lib_cchar.c
+++ b/ncurses/widechar/lib_cchar.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2001-2012,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2017,2019 Free 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 <curses.priv.h>
-MODULE_ID("$Id: lib_cchar.c,v 1.27 2014/02/01 22:10:42 tom Exp $")
+MODULE_ID("$Id: lib_cchar.c,v 1.32 2019/05/04 20:46:24 tom Exp $")
/*
* The SuSv2 description leaves some room for interpretation. We'll assume wch
@@ -47,22 +47,25 @@ NCURSES_EXPORT(int)
setcchar(cchar_t *wcval,
const wchar_t *wch,
const attr_t attrs,
- NCURSES_PAIRS_T color_pair,
+ NCURSES_PAIRS_T pair_arg,
const void *opts)
{
- unsigned i;
- unsigned len;
int code = OK;
+ int color_pair = pair_arg;
+ unsigned len;
TR(TRACE_CCALLS, (T_CALLED("setcchar(%p,%s,%lu,%d,%p)"),
(void *) wcval, _nc_viswbuf(wch),
- (unsigned long) attrs, (int) color_pair, opts));
+ (unsigned long) attrs, color_pair, opts));
- if (opts != NULL
- || wch == NULL
- || ((len = (unsigned) wcslen(wch)) > 1 && wcwidth(wch[0]) < 0)) {
+ set_extended_pair(opts, color_pair);
+ if (wch == NULL
+ || ((len = (unsigned) wcslen(wch)) > 1 && _nc_wacs_width(wch[0]) < 0)
+ || color_pair < 0) {
code = ERR;
} else {
+ unsigned i;
+
if (len > CCHARW_MAX)
len = CCHARW_MAX;
@@ -71,7 +74,7 @@ setcchar(cchar_t *wcval,
* are only interested in adding non-spacing characters.
*/
for (i = 1; i < len; ++i) {
- if (wcwidth(wch[i]) != 0) {
+ if (_nc_wacs_width(wch[i]) != 0) {
len = i;
break;
}
@@ -96,21 +99,23 @@ NCURSES_EXPORT(int)
getcchar(const cchar_t *wcval,
wchar_t *wch,
attr_t *attrs,
- NCURSES_PAIRS_T *color_pair,
+ NCURSES_PAIRS_T *pair_arg,
void *opts)
{
- wchar_t *wp;
- int len;
int code = ERR;
+ int color_pair;
TR(TRACE_CCALLS, (T_CALLED("getcchar(%p,%p,%p,%p,%p)"),
(const void *) wcval,
(void *) wch,
(void *) attrs,
- (void *) color_pair,
+ (void *) pair_arg,
opts));
if (opts == NULL && wcval != NULL) {
+ wchar_t *wp;
+ int len;
+
len = ((wp = wmemchr(wcval->chars, L'\0', (size_t) CCHARW_MAX))
? (int) (wp - wcval->chars)
: CCHARW_MAX);
@@ -121,14 +126,17 @@ getcchar(const cchar_t *wcval,
* If the value is not a null, return the length plus 1 for null.
*/
code = (len < CCHARW_MAX) ? (len + 1) : CCHARW_MAX;
- } else if (attrs == 0 || color_pair == 0) {
+ } else if (attrs == 0 || pair_arg == 0) {
code = ERR;
} else if (len >= 0) {
*attrs = AttrOf(*wcval) & A_ATTRIBUTES;
- *color_pair = (NCURSES_PAIRS_T) GetPair(*wcval);
+ color_pair = GetPair(*wcval);
+ get_extended_pair(opts, color_pair);
+ *pair_arg = limit_PAIRS(color_pair);
wmemcpy(wch, wcval->chars, (size_t) len);
wch[len] = L'\0';
- code = OK;
+ if (*pair_arg >= 0)
+ code = OK;
}
}
diff --git a/ncurses/widechar/lib_get_wch.c b/ncurses/widechar/lib_get_wch.c
index 71d560367d73..689101732fde 100644
--- a/ncurses/widechar/lib_get_wch.c
+++ b/ncurses/widechar/lib_get_wch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2011,2016 Free 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,16 +40,13 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_get_wch.c,v 1.23 2011/05/28 23:00:29 tom Exp $")
+MODULE_ID("$Id: lib_get_wch.c,v 1.24 2016/05/28 23:36:34 tom Exp $")
NCURSES_EXPORT(int)
wget_wch(WINDOW *win, wint_t *result)
{
SCREEN *sp;
int code;
- char buffer[(MB_LEN_MAX * 9) + 1]; /* allow some redundant shifts */
- int status;
- size_t count = 0;
int value = 0;
wchar_t wch;
#ifndef state_unused
@@ -64,8 +61,13 @@ wget_wch(WINDOW *win, wint_t *result)
*/
_nc_lock_global(curses);
sp = _nc_screen_of(win);
+
if (sp != 0) {
+ size_t count = 0;
+
for (;;) {
+ char buffer[(MB_LEN_MAX * 9) + 1]; /* allow some redundant shifts */
+
T(("reading %d of %d", (int) count + 1, (int) sizeof(buffer)));
code = _nc_wgetch(win, &value, TRUE EVENTLIST_2nd((_nc_eventlist
*) 0));
@@ -89,6 +91,8 @@ wget_wch(WINDOW *win, wint_t *result)
code = ERR;
break;
} else {
+ int status;
+
buffer[count++] = (char) UChar(value);
reset_mbytes(state);
status = count_mbytes(buffer, count, state);
diff --git a/ncurses/widechar/lib_get_wstr.c b/ncurses/widechar/lib_get_wstr.c
index 27cdae0c1fd8..ce88023d1423 100644
--- a/ncurses/widechar/lib_get_wstr.c
+++ b/ncurses/widechar/lib_get_wstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2009,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2011,2018 Free 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 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_get_wstr.c,v 1.13 2011/10/22 16:31:35 tom Exp $")
+MODULE_ID("$Id: lib_get_wstr.c,v 1.15 2018/09/01 20:13:00 tom Exp $")
static int
wadd_wint(WINDOW *win, wint_t *src)
@@ -100,6 +100,8 @@ wgetn_wstr(WINDOW *win, wint_t *str, int maxlen)
if (!win)
returnCode(ERR);
+ maxlen = _nc_getstr_limit(maxlen);
+
_nc_get_tty_mode(&buf);
oldnl = sp->_nl;
@@ -164,7 +166,7 @@ wgetn_wstr(WINDOW *win, wint_t *str, int maxlen)
} else {
beep();
}
- } else if (maxlen >= 0 && tmpstr - oldstr >= maxlen) {
+ } else if (tmpstr - oldstr >= maxlen) {
beep();
} else {
*tmpstr++ = ch;
diff --git a/ncurses/widechar/lib_hline_set.c b/ncurses/widechar/lib_hline_set.c
index da92b834f1c3..26813ae8e49c 100644
--- a/ncurses/widechar/lib_hline_set.c
+++ b/ncurses/widechar/lib_hline_set.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2010,2016 Free 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,23 +39,21 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_hline_set.c,v 1.4 2010/12/19 01:45:03 tom Exp $")
+MODULE_ID("$Id: lib_hline_set.c,v 1.5 2016/05/28 23:36:34 tom Exp $")
NCURSES_EXPORT(int)
whline_set(WINDOW *win, const cchar_t *ch, int n)
{
int code = ERR;
- int start;
- int end;
T((T_CALLED("whline_set(%p,%s,%d)"), (void *) win, _tracecchar_t(ch), n));
if (win) {
struct ldat *line = &(win->_line[win->_cury]);
NCURSES_CH_T wch;
+ int start = win->_curx;
+ int end = start + n - 1;
- start = win->_curx;
- end = start + n - 1;
if (end > win->_maxx)
end = win->_maxx;
diff --git a/ncurses/widechar/lib_in_wch.c b/ncurses/widechar/lib_in_wch.c
index b2396508ba25..a665145c6b98 100644
--- a/ncurses/widechar/lib_in_wch.c
+++ b/ncurses/widechar/lib_in_wch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2006,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2009,2016 Free 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,17 +39,19 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_in_wch.c,v 1.5 2009/10/24 22:37:55 tom Exp $")
+MODULE_ID("$Id: lib_in_wch.c,v 1.6 2016/05/28 23:36:34 tom Exp $")
NCURSES_EXPORT(int)
win_wch(WINDOW *win, cchar_t *wcval)
{
- int row, col;
int code = OK;
TR(TRACE_CCALLS, (T_CALLED("win_wch(%p,%p)"), (void *) win, (void *) wcval));
+
if (win != 0
&& wcval != 0) {
+ int row, col;
+
getyx(win, row, col);
*wcval = win->_line[row].text[col];
diff --git a/ncurses/widechar/lib_ins_wch.c b/ncurses/widechar/lib_ins_wch.c
index 2aa71a506639..12dc19c2a7ee 100644
--- a/ncurses/widechar/lib_ins_wch.c
+++ b/ncurses/widechar/lib_ins_wch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2017,2019 Free 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 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_ins_wch.c,v 1.17 2011/10/22 16:34:50 tom Exp $")
+MODULE_ID("$Id: lib_ins_wch.c,v 1.23 2019/05/04 20:46:24 tom Exp $")
/*
* Insert the given character, updating the current location to simplify
@@ -48,8 +48,7 @@ MODULE_ID("$Id: lib_ins_wch.c,v 1.17 2011/10/22 16:34:50 tom Exp $")
NCURSES_EXPORT(int)
_nc_insert_wch(WINDOW *win, const cchar_t *wch)
{
- int cells = wcwidth(CharOf(CHDEREF(wch)));
- int cell;
+ int cells = _nc_wacs_width(CharOf(CHDEREF(wch)));
int code = OK;
if (cells < 0) {
@@ -59,6 +58,7 @@ _nc_insert_wch(WINDOW *win, const cchar_t *wch)
cells = 1;
if (win->_curx <= win->_maxx) {
+ int cell;
struct ldat *line = &(win->_line[win->_cury]);
NCURSES_CH_T *end = &(line->text[win->_curx]);
NCURSES_CH_T *temp1 = &(line->text[win->_maxx]);
@@ -73,7 +73,7 @@ _nc_insert_wch(WINDOW *win, const cchar_t *wch)
SetWidecExt(temp1[cell], cell);
}
- win->_curx++;
+ win->_curx = (NCURSES_SIZE_T) (win->_curx + cells);
}
}
return code;
@@ -82,15 +82,13 @@ _nc_insert_wch(WINDOW *win, const cchar_t *wch)
NCURSES_EXPORT(int)
wins_wch(WINDOW *win, const cchar_t *wch)
{
- NCURSES_SIZE_T oy;
- NCURSES_SIZE_T ox;
int code = ERR;
T((T_CALLED("wins_wch(%p, %s)"), (void *) win, _tracecchar_t(wch)));
if (win != 0) {
- oy = win->_cury;
- ox = win->_curx;
+ NCURSES_SIZE_T oy = win->_cury;
+ NCURSES_SIZE_T ox = win->_curx;
code = _nc_insert_wch(win, wch);
@@ -105,9 +103,6 @@ NCURSES_EXPORT(int)
wins_nwstr(WINDOW *win, const wchar_t *wstr, int n)
{
int code = ERR;
- NCURSES_SIZE_T oy;
- NCURSES_SIZE_T ox;
- const wchar_t *cp;
T((T_CALLED("wins_nwstr(%p,%s,%d)"),
(void *) win, _nc_viswbufn(wstr, n), n));
@@ -117,13 +112,15 @@ wins_nwstr(WINDOW *win, const wchar_t *wstr, int n)
if (n < 1)
n = (int) wcslen(wstr);
code = OK;
+
if (n > 0) {
+ const wchar_t *cp;
SCREEN *sp = _nc_screen_of(win);
+ NCURSES_SIZE_T oy = win->_cury;
+ NCURSES_SIZE_T ox = win->_curx;
- oy = win->_cury;
- ox = win->_curx;
- for (cp = wstr; *cp && ((cp - wstr) < n); cp++) {
- int len = wcwidth(*cp);
+ for (cp = wstr; ((cp - wstr) < n) && *cp; cp++) {
+ int len = _nc_wacs_width(*cp);
if ((len >= 0 && len != 1) || !is7bits(*cp)) {
cchar_t tmp_cchar;
diff --git a/ncurses/widechar/lib_inwstr.c b/ncurses/widechar/lib_inwstr.c
index a4f5b8ea2040..3443ec6cbcac 100644
--- a/ncurses/widechar/lib_inwstr.c
+++ b/ncurses/widechar/lib_inwstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2009,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2016,2017 Free 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,31 +39,39 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_inwstr.c,v 1.6 2011/05/28 22:49:49 tom Exp $")
+MODULE_ID("$Id: lib_inwstr.c,v 1.8 2017/10/29 00:03:29 tom Exp $")
NCURSES_EXPORT(int)
winnwstr(WINDOW *win, wchar_t *wstr, int n)
{
- int row, col, inx;
int count = 0;
- int last = 0;
cchar_t *text;
- wchar_t wch;
T((T_CALLED("winnwstr(%p,%p,%d)"), (void *) win, (void *) wstr, n));
if (wstr != 0) {
if (win) {
+ int row, col;
+ int last = 0;
+ bool done = FALSE;
+
getyx(win, row, col);
text = win->_line[row].text;
- while (count < n && count != ERR) {
+ while (count < n && !done && count != ERR) {
+
if (!isWidecExt(text[col])) {
+ int inx;
+ wchar_t wch;
+
for (inx = 0; (inx < CCHARW_MAX)
&& ((wch = text[col].chars[inx]) != 0);
++inx) {
if (count + 1 > n) {
- if ((count = last) == 0) {
+ done = TRUE;
+ if (last == 0) {
count = ERR; /* error if we store nothing */
+ } else {
+ count = last; /* only store complete chars */
}
break;
}
diff --git a/ncurses/widechar/lib_key_name.c b/ncurses/widechar/lib_key_name.c
index da65f219c266..daf4ab022ae9 100644
--- a/ncurses/widechar/lib_key_name.c
+++ b/ncurses/widechar/lib_key_name.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2007 Free Software Foundation, Inc. *
+ * Copyright (c) 2007,2017 Free 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,9 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_key_name.c,v 1.3 2008/10/11 20:15:14 tom Exp $")
+MODULE_ID("$Id: lib_key_name.c,v 1.4 2017/01/07 19:50:17 tom Exp $")
+
+#define MyData _nc_globals.key_name
NCURSES_EXPORT(NCURSES_CONST char *)
key_name(wchar_t c)
@@ -44,19 +46,16 @@ key_name(wchar_t c)
wchar_t *my_wchars;
size_t len;
- /* FIXME: move to _nc_globals */
- static char result[MB_LEN_MAX + 1];
-
memset(&my_cchar, 0, sizeof(my_cchar));
my_cchar.chars[0] = c;
my_cchar.chars[1] = L'\0';
my_wchars = wunctrl(&my_cchar);
- len = wcstombs(result, my_wchars, sizeof(result) - 1);
+ len = wcstombs(MyData, my_wchars, sizeof(MyData) - 1);
if (isEILSEQ(len) || (len == 0)) {
return 0;
}
- result[len] = '\0';
- return result;
+ MyData[len] = '\0';
+ return MyData;
}
diff --git a/ncurses/widechar/lib_slk_wset.c b/ncurses/widechar/lib_slk_wset.c
index 89275567557b..d3a148b13942 100644
--- a/ncurses/widechar/lib_slk_wset.c
+++ b/ncurses/widechar/lib_slk_wset.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2003-2002,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2003-2011,2016 Free 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,23 +40,26 @@
#include <wctype.h>
#endif
-MODULE_ID("$Id: lib_slk_wset.c,v 1.13 2011/10/22 15:52:20 tom Exp $")
+MODULE_ID("$Id: lib_slk_wset.c,v 1.14 2016/05/28 23:36:34 tom Exp $")
NCURSES_EXPORT(int)
slk_wset(int i, const wchar_t *astr, int format)
{
int result = ERR;
- size_t arglen;
const wchar_t *str;
- char *mystr;
mbstate_t state;
T((T_CALLED("slk_wset(%d, %s, %d)"), i, _nc_viswbuf(astr), format));
if (astr != 0) {
+ size_t arglen;
+
init_mb(state);
str = astr;
+
if ((arglen = wcsrtombs(NULL, &str, (size_t) 0, &state)) != (size_t) -1) {
+ char *mystr;
+
if ((mystr = (char *) _nc_doalloc(0, arglen + 1)) != 0) {
str = astr;
if (wcsrtombs(mystr, &str, arglen, &state) != (size_t) -1) {
diff --git a/ncurses/widechar/lib_unget_wch.c b/ncurses/widechar/lib_unget_wch.c
index d5ae608e36ed..6a2346d570a3 100644
--- a/ncurses/widechar/lib_unget_wch.c
+++ b/ncurses/widechar/lib_unget_wch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2011,2016 Free 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 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_unget_wch.c,v 1.15 2011/10/22 16:34:50 tom Exp $")
+MODULE_ID("$Id: lib_unget_wch.c,v 1.16 2016/05/28 23:36:34 tom Exp $")
/*
* Wrapper for wcrtomb() which obtains the length needed for the given
@@ -70,7 +70,6 @@ NCURSES_SP_NAME(unget_wch) (NCURSES_SP_DCLx const wchar_t wch)
int result = OK;
mbstate_t state;
size_t length;
- int n;
T((T_CALLED("unget_wch(%p, %#lx)"), (void *) SP_PARM, (unsigned long) wch));
@@ -82,6 +81,8 @@ NCURSES_SP_NAME(unget_wch) (NCURSES_SP_DCLx const wchar_t wch)
char *string;
if ((string = (char *) malloc(length)) != 0) {
+ int n;
+
init_mb(state);
/* ignore the result, since we already validated the character */
IGNORE_RC((int) wcrtomb(string, wch, &state));
diff --git a/ncurses/widechar/lib_vid_attr.c b/ncurses/widechar/lib_vid_attr.c
index 0be2b195c3d2..b0dfb6be9f82 100644
--- a/ncurses/widechar/lib_vid_attr.c
+++ b/ncurses/widechar/lib_vid_attr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2018,2019 Free 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,27 +36,34 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_vid_attr.c,v 1.22 2014/02/01 22:09:27 tom Exp $")
+MODULE_ID("$Id: lib_vid_attr.c,v 1.27 2019/04/13 22:40:48 tom Exp $")
#define doPut(mode) \
TPUTS_TRACE(#mode); \
NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc)
#define TurnOn(mask, mode) \
- if ((turn_on & mask) && mode) { doPut(mode); }
+ if ((turn_on & mask) && mode) { \
+ TPUTS_TRACE(#mode); \
+ NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc); \
+ }
#define TurnOff(mask, mode) \
- if ((turn_off & mask) && mode) { doPut(mode); turn_off &= ~mask; }
+ if ((turn_off & mask) && mode) { \
+ TPUTS_TRACE(#mode); \
+ NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc); \
+ turn_off &= ~mask; \
+ }
/* if there is no current screen, assume we *can* do color */
#define SetColorsIf(why, old_attr, old_pair) \
if (can_color && (why)) { \
- TR(TRACE_ATTRS, ("old pair = %d -- new pair = %d", old_pair, pair)); \
- if ((pair != old_pair) \
- || (fix_pair0 && (pair == 0)) \
+ TR(TRACE_ATTRS, ("old pair = %d -- new pair = %d", old_pair, color_pair)); \
+ if ((color_pair != old_pair) \
+ || (fix_pair0 && (color_pair == 0)) \
|| (reverse ^ ((old_attr & A_REVERSE) != 0))) { \
NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_ARGx \
- old_pair, pair, \
+ old_pair, color_pair, \
reverse, outc); \
} \
}
@@ -68,10 +75,11 @@ MODULE_ID("$Id: lib_vid_attr.c,v 1.22 2014/02/01 22:09:27 tom Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
attr_t newmode,
- NCURSES_PAIRS_T pair,
- void *opts GCC_UNUSED,
+ NCURSES_PAIRS_T pair_arg,
+ void *opts OPTIONAL_PAIR,
NCURSES_SP_OUTC outc)
{
+ int color_pair = pair_arg;
#if NCURSES_EXT_COLORS
static attr_t previous_attr = A_NORMAL;
static int previous_pair = 0;
@@ -85,8 +93,12 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
#define fix_pair0 FALSE
#endif
+ if (!IsValidTIScreen(SP_PARM))
+ returnCode(ERR);
+
newmode &= A_ATTRIBUTES;
- T((T_CALLED("vid_puts(%s,%d)"), _traceattr(newmode), pair));
+ set_extended_pair(opts, color_pair);
+ T((T_CALLED("vid_puts(%s,%d)"), _traceattr(newmode), color_pair));
/* this allows us to go on whether or not newterm() has been called */
if (SP_PARM) {
@@ -107,7 +119,7 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
* If we have a terminal that cannot combine color with video
* attributes, use the colors in preference.
*/
- if ((pair != 0
+ if ((color_pair != 0
|| fix_pair0)
&& (no_color_video > 0)) {
/*
@@ -136,7 +148,7 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
}
if (newmode == previous_attr
- && pair == previous_pair)
+ && color_pair == previous_pair)
returnCode(OK);
if (reverse) {
@@ -144,9 +156,9 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
}
turn_off = (~newmode & previous_attr) & ALL_BUT_COLOR;
- turn_on = (newmode & ~previous_attr) & ALL_BUT_COLOR;
+ turn_on = (newmode & ~(previous_attr & TPARM_ATTR)) & ALL_BUT_COLOR;
- SetColorsIf(((pair == 0) && !fix_pair0), previous_attr, previous_pair);
+ SetColorsIf(((color_pair == 0) && !fix_pair0), previous_attr, previous_pair);
if (newmode == A_NORMAL) {
if ((previous_attr & A_ALTCHARSET) && exit_alt_charset_mode) {
@@ -173,7 +185,7 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
previous_pair = 0;
}
- SetColorsIf((pair != 0) || fix_pair0, previous_attr, previous_pair);
+ SetColorsIf((color_pair != 0) || fix_pair0, previous_attr, previous_pair);
} else if (set_attributes) {
if (turn_on || turn_off) {
TPUTS_TRACE("set_attributes");
@@ -201,7 +213,7 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
}
}
#endif
- SetColorsIf((pair != 0) || fix_pair0, previous_attr, previous_pair);
+ SetColorsIf((color_pair != 0) || fix_pair0, previous_attr, previous_pair);
} else {
TR(TRACE_ATTRS, ("turning %s off", _traceattr(turn_off)));
@@ -226,7 +238,7 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
previous_attr &= ALL_BUT_COLOR;
previous_pair = 0;
}
- SetColorsIf((pair != 0) || fix_pair0, previous_attr, previous_pair);
+ SetColorsIf((color_pair != 0) || fix_pair0, previous_attr, previous_pair);
TR(TRACE_ATTRS, ("turning %s on", _traceattr(turn_on)));
/* *INDENT-OFF* */
@@ -242,7 +254,7 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
#if USE_ITALIC
TurnOn(A_ITALIC, enter_italics_mode);
#endif
-#if USE_WIDEC_SUPPORT
+#if USE_WIDEC_SUPPORT && defined(enter_horizontal_hl_mode)
TurnOn(A_HORIZONTAL, enter_horizontal_hl_mode);
TurnOn(A_LEFT, enter_left_hl_mode);
TurnOn(A_LOW, enter_low_hl_mode);
@@ -259,16 +271,17 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
if (SP_PARM) {
SetAttr(SCREEN_ATTRS(SP_PARM), newmode);
- SetPair(SCREEN_ATTRS(SP_PARM), pair);
+ SetPair(SCREEN_ATTRS(SP_PARM), color_pair);
} else {
previous_attr = newmode;
- previous_pair = pair;
+ previous_pair = color_pair;
}
returnCode(OK);
#else
- T((T_CALLED("vid_puts(%s,%d)"), _traceattr(newmode), (int) pair));
- set_color(newmode, pair);
+ T((T_CALLED("vid_puts(%s,%d)"), _traceattr(newmode), color_pair));
+ (void) opts;
+ set_color(newmode, color_pair);
returnCode(NCURSES_SP_NAME(vidputs) (NCURSES_SP_ARGx newmode, outc));
#endif
}
@@ -276,14 +289,14 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
vid_puts(attr_t newmode,
- NCURSES_PAIRS_T pair,
+ NCURSES_PAIRS_T pair_arg,
void *opts GCC_UNUSED,
NCURSES_OUTC outc)
{
SetSafeOutcWrapper(outc);
return NCURSES_SP_NAME(vid_puts) (CURRENT_SCREEN,
newmode,
- pair,
+ pair_arg,
opts,
_nc_outc_wrapper);
}
@@ -293,22 +306,22 @@ vid_puts(attr_t newmode,
NCURSES_EXPORT(int)
NCURSES_SP_NAME(vid_attr) (NCURSES_SP_DCLx
attr_t newmode,
- NCURSES_PAIRS_T pair,
+ NCURSES_PAIRS_T pair_arg,
void *opts)
{
- T((T_CALLED("vid_attr(%s,%d)"), _traceattr(newmode), (int) pair));
+ T((T_CALLED("vid_attr(%s,%d)"), _traceattr(newmode), (int) pair_arg));
returnCode(NCURSES_SP_NAME(vid_puts) (NCURSES_SP_ARGx
newmode,
- pair,
+ pair_arg,
opts,
NCURSES_SP_NAME(_nc_putchar)));
}
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-vid_attr(attr_t newmode, NCURSES_PAIRS_T pair, void *opts)
+vid_attr(attr_t newmode, NCURSES_PAIRS_T pair_arg, void *opts)
{
- return NCURSES_SP_NAME(vid_attr) (CURRENT_SCREEN, newmode, pair, opts);
+ return NCURSES_SP_NAME(vid_attr) (CURRENT_SCREEN, newmode, pair_arg, opts);
}
#endif
@@ -325,6 +338,7 @@ NCURSES_SP_NAME(term_attrs) (NCURSES_SP_DCL0)
if (SP_PARM) {
attrs = NCURSES_SP_NAME(termattrs) (NCURSES_SP_ARG);
+#if USE_WIDEC_SUPPORT && defined(enter_horizontal_hl_mode)
/* these are only supported for wide-character mode */
if (enter_horizontal_hl_mode)
attrs |= WA_HORIZONTAL;
@@ -338,6 +352,7 @@ NCURSES_SP_NAME(term_attrs) (NCURSES_SP_DCL0)
attrs |= WA_TOP;
if (enter_vertical_hl_mode)
attrs |= WA_VERTICAL;
+#endif
}
returnAttr(attrs);
diff --git a/ncurses/widechar/lib_vline_set.c b/ncurses/widechar/lib_vline_set.c
index 917caac44b44..585447aebcb2 100644
--- a/ncurses/widechar/lib_vline_set.c
+++ b/ncurses/widechar/lib_vline_set.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2010,2016 Free 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,22 +39,21 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_vline_set.c,v 1.4 2010/12/19 01:50:50 tom Exp $")
+MODULE_ID("$Id: lib_vline_set.c,v 1.5 2016/05/28 23:36:34 tom Exp $")
NCURSES_EXPORT(int)
wvline_set(WINDOW *win, const cchar_t *ch, int n)
{
int code = ERR;
- int row, col;
- int end;
T((T_CALLED("wvline(%p,%s,%d)"), (void *) win, _tracecchar_t(ch), n));
if (win) {
NCURSES_CH_T wch;
- row = win->_cury;
- col = win->_curx;
- end = row + n - 1;
+ int row = win->_cury;
+ int col = win->_curx;
+ int end = row + n - 1;
+
if (end > win->_maxy)
end = win->_maxy;
diff --git a/ncurses/widechar/lib_wacs.c b/ncurses/widechar/lib_wacs.c
index dc3af21e11b2..da5b93e5495a 100644
--- a/ncurses/widechar/lib_wacs.c
+++ b/ncurses/widechar/lib_wacs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2016,2018 Free 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: lib_wacs.c,v 1.14 2014/02/23 01:21:08 tom Exp $")
+MODULE_ID("$Id: lib_wacs.c,v 1.19 2018/05/05 17:26:44 tom Exp $")
NCURSES_EXPORT_VAR(cchar_t) * _nc_wacs = 0;
@@ -106,7 +106,6 @@ _nc_init_wacs(void)
};
/* *INDENT-ON* */
- unsigned n, m;
int active = _nc_unicode_locale();
/*
@@ -120,9 +119,15 @@ _nc_init_wacs(void)
active ? "" : " not"));
if ((_nc_wacs = typeCalloc(cchar_t, ACS_LEN)) != 0) {
+ unsigned n;
for (n = 0; n < SIZEOF(table); ++n) {
+ unsigned m;
+#if NCURSES_WCWIDTH_GRAPHICS
int wide = wcwidth((wchar_t) table[n].value[active]);
+#else
+ int wide = 1;
+#endif
m = table[n].map;
if (active && (wide == 1)) {
@@ -133,9 +138,9 @@ _nc_init_wacs(void)
SetChar(_nc_wacs[m], table[n].value[0], A_NORMAL);
}
- T(("#%d, SetChar(%c, %#04x) = %s",
- n, m,
- table[n].value[active],
+ T(("#%d, width:%d SetChar(%c, %s) = %s",
+ n, wide, m,
+ _tracechar(table[n].value[active]),
_tracecchar_t(&_nc_wacs[m])));
}
}
diff --git a/ncurses/widechar/widechars.c b/ncurses/widechar/widechars.c
index 6951e2863fa0..28c362aa628c 100644
--- a/ncurses/widechar/widechars.c
+++ b/ncurses/widechar/widechars.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2012-2013,2018 Free 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,9 +30,9 @@
#if USE_WIDEC_SUPPORT
-MODULE_ID("$Id: widechars.c,v 1.5 2013/03/02 18:55:51 tom Exp $")
+MODULE_ID("$Id: widechars.c,v 1.6 2018/06/24 00:06:37 tom Exp $")
-#if defined(__MINGW32__)
+#if defined(_WIN32)
/*
* MinGW has wide-character functions, but they do not work correctly.
*/
@@ -147,6 +147,6 @@ _nc_wctomb(char *s, wchar_t wc)
return result;
}
-#endif /* __MINGW32__ */
+#endif /* _WIN32 */
#endif /* USE_WIDEC_SUPPORT */
diff --git a/ncurses/win32con/gettimeofday.c b/ncurses/win32con/gettimeofday.c
index e1ef3401de34..867041f885e4 100644
--- a/ncurses/win32con/gettimeofday.c
+++ b/ncurses/win32con/gettimeofday.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2010,2014 Free 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,13 +26,16 @@
* authorization. *
****************************************************************************/
+#ifdef WINVER
+# undef WINVER
+#endif
#define WINVER 0x0501
#include <curses.priv.h>
#include <windows.h>
-MODULE_ID("$Id: gettimeofday.c,v 1.2 2010/01/16 15:18:51 tom Exp $")
+MODULE_ID("$Id: gettimeofday.c,v 1.3 2014/04/26 19:41:34 juergen Exp $")
#define JAN1970 116444736000000000LL /* the value for 01/01/1970 00:00 */
diff --git a/ncurses/win32con/win_driver.c b/ncurses/win32con/win_driver.c
index c664d92387cc..1b38f6a4bc06 100644
--- a/ncurses/win32con/win_driver.c
+++ b/ncurses/win32con/win_driver.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2020 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,31 +28,61 @@
/****************************************************************************
* Author: Juergen Pfeifer *
+ * and: Thomas E. Dickey *
****************************************************************************/
/*
* TODO - GetMousePos(POINT * result) from ntconio.c
* TODO - implement nodelay
- * TODO - when $NCGDB is set, implement non-buffered output, like PDCurses
+ * TODO - improve screen-repainting performance, using implied wraparound to reduce write's
+ * TODO - make it optional whether screen is restored or not when non-buffered
*/
#include <curses.priv.h>
-#define CUR my_term.type.
-MODULE_ID("$Id: win_driver.c,v 1.24 2014/02/23 01:23:29 tom Exp $")
+#ifdef _WIN32
+#include <tchar.h>
+#else
+#include <windows.h>
+#include <wchar.h>
+#endif
+
+#include <io.h>
+
+#define PSAPI_VERSION 2
+#include <psapi.h>
+
+#define CUR TerminalType(my_term).
+
+MODULE_ID("$Id: win_driver.c,v 1.62 2020/01/18 17:02:38 tom Exp $")
+
+#ifndef __GNUC__
+# error We need GCC to compile for MinGW
+#endif
#define WINMAGIC NCDRV_MAGIC(NCDRV_WINCONSOLE)
#define EXP_OPTIMIZE 0
-#define okConsoleHandle(TCB) (TCB != 0 && !InvalidConsoleHandle(TCB->hdl))
+#define array_length(a) (sizeof(a)/sizeof(a[0]))
+
+static bool InitConsole(void);
+static bool okConsoleHandle(TERMINAL_CONTROL_BLOCK *);
#define AssertTCB() assert(TCB != 0 && (TCB->magic == WINMAGIC))
#define SetSP() assert(TCB->csp != 0); sp = TCB->csp; (void) sp
#define GenMap(vKey,key) MAKELONG(key, vKey)
-#define AdjustY(p) ((p)->buffered ? 0 : (int) (p)->SBI.srWindow.Top)
+#define AdjustY() (CON.buffered ? 0 : (int) CON.SBI.srWindow.Top)
+
+#if USE_WIDEC_SUPPORT
+#define write_screen WriteConsoleOutputW
+#define read_screen ReadConsoleOutputW
+#else
+#define write_screen WriteConsoleOutput
+#define read_screen ReadConsoleOutput
+#endif
static const LONG keylist[] =
{
@@ -67,35 +97,54 @@ static const LONG keylist[] =
GenMap(VK_DELETE, KEY_DC),
GenMap(VK_INSERT, KEY_IC)
};
-#define N_INI ((int)(sizeof(keylist)/sizeof(keylist[0])))
+static const LONG ansi_keys[] =
+{
+ GenMap(VK_PRIOR, 'I'),
+ GenMap(VK_NEXT, 'Q'),
+ GenMap(VK_END, 'O'),
+ GenMap(VK_HOME, 'H'),
+ GenMap(VK_LEFT, 'K'),
+ GenMap(VK_UP, 'H'),
+ GenMap(VK_RIGHT, 'M'),
+ GenMap(VK_DOWN, 'P'),
+ GenMap(VK_DELETE, 'S'),
+ GenMap(VK_INSERT, 'R')
+};
+#define N_INI ((int)array_length(keylist))
#define FKEYS 24
#define MAPSIZE (FKEYS + N_INI)
#define NUMPAIRS 64
-typedef struct props {
- CONSOLE_SCREEN_BUFFER_INFO SBI;
- bool progMode;
- TERM_HANDLE lastOut;
+/* A process can only have a single console, so it's safe
+ to maintain all the information about it in a single
+ static structure.
+ */
+static struct {
+ BOOL initialized;
+ BOOL buffered;
+ BOOL window_only;
+ BOOL progMode;
+ BOOL isMinTTY;
+ BOOL isTermInfoConsole;
+ HANDLE out;
+ HANDLE inp;
+ HANDLE hdl;
+ HANDLE lastOut;
+ int numButtons;
+ DWORD ansi_map[MAPSIZE];
DWORD map[MAPSIZE];
DWORD rmap[MAPSIZE];
WORD pairs[NUMPAIRS];
- bool buffered;
COORD origin;
CHAR_INFO *save_screen;
-} Properties;
-
-#define PropOf(TCB) ((Properties*)TCB->prop)
+ COORD save_size;
+ SMALL_RECT save_region;
+ CONSOLE_SCREEN_BUFFER_INFO SBI;
+ CONSOLE_SCREEN_BUFFER_INFO save_SBI;
+ CONSOLE_CURSOR_INFO save_CI;
+} CON;
-int
-_nc_mingw_ioctl(int fd GCC_UNUSED,
- long int request GCC_UNUSED,
- struct termios *arg GCC_UNUSED)
-{
- return 0;
- endwin();
- fprintf(stderr, "TERMINFO currently not supported on Windows.\n");
- exit(1);
-}
+static BOOL console_initialized = FALSE;
static WORD
MapColor(bool fore, int color)
@@ -112,29 +161,32 @@ MapColor(bool fore, int color)
return (WORD) a;
}
+#define RevAttr(attr) \
+ (WORD) (((attr) & 0xff00) | \
+ ((((attr) & 0x07) << 4) | \
+ (((attr) & 0x70) >> 4)))
+
static WORD
-MapAttr(TERMINAL_CONTROL_BLOCK * TCB, WORD res, attr_t ch)
+MapAttr(WORD res, attr_t ch)
{
if (ch & A_COLOR) {
int p;
- SCREEN *sp;
- AssertTCB();
- SetSP();
p = PairNumber(ch);
- if (p > 0 && p < NUMPAIRS && TCB != 0 && sp != 0) {
+ if (p > 0 && p < NUMPAIRS) {
WORD a;
- a = PropOf(TCB)->pairs[p];
- res = (res & 0xff00) | a;
+ a = CON.pairs[p];
+ res = (WORD) ((res & 0xff00) | a);
}
}
- if (ch & A_REVERSE)
- res = ((res & 0xff00) | (((res & 0x07) << 4) | ((res & 0x70) >> 4)));
+ if (ch & A_REVERSE) {
+ res = RevAttr(res);
+ }
- if (ch & A_STANDOUT)
- res = ((res & 0xff00) | (((res & 0x07) << 4) | ((res & 0x70) >> 4))
- | BACKGROUND_INTENSITY);
+ if (ch & A_STANDOUT) {
+ res = RevAttr(res) | BACKGROUND_INTENSITY;
+ }
if (ch & A_BOLD)
res |= FOREGROUND_INTENSITY;
@@ -145,12 +197,64 @@ MapAttr(TERMINAL_CONTROL_BLOCK * TCB, WORD res, attr_t ch)
return res;
}
+#if 0 /* def TRACE */
+static void
+dump_screen(const char *fn, int ln)
+{
+ int max_cells = (CON.SBI.dwSize.Y * (1 + CON.SBI.dwSize.X)) + 1;
+ char output[max_cells];
+ CHAR_INFO save_screen[max_cells];
+ COORD save_size;
+ SMALL_RECT save_region;
+ COORD bufferCoord;
+
+ T(("dump_screen %s@%d", fn, ln));
+
+ save_region.Top = CON.SBI.srWindow.Top;
+ save_region.Left = CON.SBI.srWindow.Left;
+ save_region.Bottom = CON.SBI.srWindow.Bottom;
+ save_region.Right = CON.SBI.srWindow.Right;
+
+ save_size.X = (SHORT) (save_region.Right - save_region.Left + 1);
+ save_size.Y = (SHORT) (save_region.Bottom - save_region.Top + 1);
+
+ bufferCoord.X = bufferCoord.Y = 0;
+
+ if (read_screen(CON.hdl,
+ save_screen,
+ save_size,
+ bufferCoord,
+ &save_region)) {
+ int i, j;
+ int ij = 0;
+ int k = 0;
+
+ for (i = save_region.Top; i <= save_region.Bottom; ++i) {
+ for (j = save_region.Left; j <= save_region.Right; ++j) {
+ output[k++] = save_screen[ij++].Char.AsciiChar;
+ }
+ output[k++] = '\n';
+ }
+ output[k] = 0;
+
+ T(("DUMP: %d,%d - %d,%d",
+ save_region.Top,
+ save_region.Left,
+ save_region.Bottom,
+ save_region.Right));
+ T(("%s", output));
+ }
+}
+
+#else
+#define dump_screen(fn,ln) /* nothing */
+#endif
+
#if USE_WIDEC_SUPPORT
/*
* TODO: support surrogate pairs
* TODO: support combining characters
* TODO: support acsc
- * TODO: check wcwidth of base character, fill if needed for double-width
* TODO: _nc_wacs should be part of sp.
*/
static BOOL
@@ -163,10 +267,8 @@ con_write16(TERMINAL_CONTROL_BLOCK * TCB, int y, int x, cchar_t *str, int limit)
int i;
cchar_t ch;
SCREEN *sp;
- Properties *p = PropOf(TCB);
AssertTCB();
-
SetSP();
for (i = actual = 0; i < limit; i++) {
@@ -174,8 +276,7 @@ con_write16(TERMINAL_CONTROL_BLOCK * TCB, int y, int x, cchar_t *str, int limit)
if (isWidecExt(ch))
continue;
ci[actual].Char.UnicodeChar = CharOf(ch);
- ci[actual].Attributes = MapAttr(TCB,
- PropOf(TCB)->SBI.wAttributes,
+ ci[actual].Attributes = MapAttr(CON.SBI.wAttributes,
AttrOf(ch));
if (AttrOf(ch) & A_ALTCHARSET) {
if (_nc_wacs) {
@@ -192,17 +293,17 @@ con_write16(TERMINAL_CONTROL_BLOCK * TCB, int y, int x, cchar_t *str, int limit)
++actual;
}
- loc.X = (short) 0;
- loc.Y = (short) 0;
- siz.X = (short) actual;
+ loc.X = (SHORT) 0;
+ loc.Y = (SHORT) 0;
+ siz.X = (SHORT) actual;
siz.Y = 1;
- rec.Left = (short) x;
- rec.Top = (SHORT) (y + AdjustY(p));
- rec.Right = (short) (x + limit - 1);
+ rec.Left = (SHORT) x;
+ rec.Top = (SHORT) (y + AdjustY());
+ rec.Right = (SHORT) (x + limit - 1);
rec.Bottom = rec.Top;
- return WriteConsoleOutputW(TCB->hdl, ci, siz, loc, &rec);
+ return write_screen(CON.hdl, ci, siz, loc, &rec);
}
#define con_write(tcb, y, x, str, n) con_write16(tcb, y, x, str, n)
#else
@@ -217,14 +318,12 @@ con_write8(TERMINAL_CONTROL_BLOCK * TCB, int y, int x, chtype *str, int n)
SCREEN *sp;
AssertTCB();
-
SetSP();
for (i = 0; i < n; i++) {
ch = str[i];
ci[i].Char.AsciiChar = ChCharOf(ch);
- ci[i].Attributes = MapAttr(TCB,
- PropOf(TCB)->SBI.wAttributes,
+ ci[i].Attributes = MapAttr(CON.SBI.wAttributes,
ChAttrOf(ch));
if (ChAttrOf(ch) & A_ALTCHARSET) {
if (sp->_acs_map)
@@ -243,7 +342,7 @@ con_write8(TERMINAL_CONTROL_BLOCK * TCB, int y, int x, chtype *str, int n)
rec.Right = (short) (x + n - 1);
rec.Bottom = rec.Top;
- return WriteConsoleOutput(TCB->hdl, ci, siz, loc, &rec);
+ return write_screen(CON.hdl, ci, siz, loc, &rec);
}
#define con_write(tcb, y, x, str, n) con_write8(tcb, y, x, str, n)
#endif
@@ -328,31 +427,85 @@ find_next_change(SCREEN *sp, int row, int col)
win->_line[row].lastchar = _NOCHANGE
static void
-selectActiveHandle(TERMINAL_CONTROL_BLOCK * TCB)
+selectActiveHandle(void)
{
- if (PropOf(TCB)->lastOut != TCB->hdl) {
- PropOf(TCB)->lastOut = TCB->hdl;
- SetConsoleActiveScreenBuffer(PropOf(TCB)->lastOut);
+ if (CON.lastOut != CON.hdl) {
+ CON.lastOut = CON.hdl;
+ SetConsoleActiveScreenBuffer(CON.lastOut);
}
}
+static bool
+restore_original_screen(void)
+{
+ COORD bufferCoord;
+ bool result = FALSE;
+ SMALL_RECT save_region = CON.save_region;
+
+ T(("... restoring %s", CON.window_only ? "window" : "entire buffer"));
+
+ bufferCoord.X = (SHORT) (CON.window_only ? CON.SBI.srWindow.Left : 0);
+ bufferCoord.Y = (SHORT) (CON.window_only ? CON.SBI.srWindow.Top : 0);
+
+ if (write_screen(CON.hdl,
+ CON.save_screen,
+ CON.save_size,
+ bufferCoord,
+ &save_region)) {
+ result = TRUE;
+ mvcur(-1, -1, LINES - 2, 0);
+ T(("... restore original screen contents ok %dx%d (%d,%d - %d,%d)",
+ CON.save_size.Y,
+ CON.save_size.X,
+ save_region.Top,
+ save_region.Left,
+ save_region.Bottom,
+ save_region.Right));
+ } else {
+ T(("... restore original screen contents err"));
+ }
+ return result;
+}
+
+static const char *
+wcon_name(TERMINAL_CONTROL_BLOCK * TCB)
+{
+ (void) TCB;
+ return "win32console";
+}
+
static int
-drv_doupdate(TERMINAL_CONTROL_BLOCK * TCB)
+wcon_doupdate(TERMINAL_CONTROL_BLOCK * TCB)
{
int result = ERR;
int y, nonempty, n, x0, x1, Width, Height;
SCREEN *sp;
- AssertTCB();
- SetSP();
-
- T((T_CALLED("win32con::drv_doupdate(%p)"), TCB));
+ T((T_CALLED("win32con::wcon_doupdate(%p)"), TCB));
if (okConsoleHandle(TCB)) {
+ SetSP();
Width = screen_columns(sp);
Height = screen_lines(sp);
nonempty = min(Height, NewScreen(sp)->_maxy + 1);
+ T(("... %dx%d clear cur:%d new:%d",
+ Height, Width,
+ CurScreen(sp)->_clear,
+ NewScreen(sp)->_clear));
+
+ if (SP_PARM->_endwin == ewSuspend) {
+
+ T(("coming back from shell mode"));
+ NCURSES_SP_NAME(reset_prog_mode) (NCURSES_SP_ARG);
+
+ NCURSES_SP_NAME(_nc_mvcur_resume) (NCURSES_SP_ARG);
+ NCURSES_SP_NAME(_nc_screen_resume) (NCURSES_SP_ARG);
+ SP_PARM->_mouse_resume(SP_PARM);
+
+ SP_PARM->_endwin = ewRunning;
+ }
+
if ((CurScreen(sp)->_clear || NewScreen(sp)->_clear)) {
int x;
#if USE_WIDEC_SUPPORT
@@ -380,6 +533,8 @@ drv_doupdate(TERMINAL_CONTROL_BLOCK * TCB)
CurScreen(sp)->_clear = FALSE;
NewScreen(sp)->_clear = FALSE;
touchwin(NewScreen(sp));
+ T(("... cleared %dx%d lines @%d of screen", nonempty, Width,
+ AdjustY()));
}
for (y = 0; y < nonempty; y++) {
@@ -446,83 +601,127 @@ drv_doupdate(TERMINAL_CONTROL_BLOCK * TCB)
CurScreen(sp)->_curx = NewScreen(sp)->_curx;
CurScreen(sp)->_cury = NewScreen(sp)->_cury;
- TCB->drv->hwcur(TCB,
- 0, 0,
- CurScreen(sp)->_cury, CurScreen(sp)->_curx);
+ TCB->drv->td_hwcur(TCB,
+ 0, 0,
+ CurScreen(sp)->_cury, CurScreen(sp)->_curx);
}
- selectActiveHandle(TCB);
+ selectActiveHandle();
result = OK;
}
returnCode(result);
}
static bool
-drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB,
- const char *tname,
- int *errret GCC_UNUSED)
+wcon_CanHandle(TERMINAL_CONTROL_BLOCK * TCB,
+ const char *tname,
+ int *errret GCC_UNUSED)
{
bool code = FALSE;
- T((T_CALLED("win32con::drv_CanHandle(%p)"), TCB));
+ T((T_CALLED("win32con::wcon_CanHandle(%p)"), TCB));
- assert(TCB != 0);
- assert(tname != 0);
+ assert((TCB != 0) && (tname != 0));
TCB->magic = WINMAGIC;
- if (*tname == 0 || *tname == 0 || *tname == '#') {
- code = TRUE;
- } else {
- TERMINAL my_term;
- int status;
- code = FALSE;
-#if (NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP)
- status = _nc_setup_tinfo(tname, &my_term.type);
-#else
- status = TGETENT_NO;
-#endif
- if (status != TGETENT_YES) {
- const TERMTYPE *fallback = _nc_fallback(tname);
-
- if (fallback) {
- my_term.type = *fallback;
- status = TGETENT_YES;
- } else if (!strcmp(tname, "unknown")) {
- code = TRUE;
- }
- }
- if (status == TGETENT_YES) {
- if (generic_type || hard_copy)
- code = TRUE;
+ if (tname == 0 || *tname == 0)
+ code = TRUE;
+ else if (tname != 0 && *tname == '#') {
+ /*
+ * Use "#" (a character which cannot begin a terminal's name) to
+ * select specific driver from the table.
+ *
+ * In principle, we could have more than one non-terminfo driver,
+ * e.g., "win32gui".
+ */
+ size_t n = strlen(tname + 1);
+ if (n != 0
+ && ((strncmp(tname + 1, "win32console", n) == 0)
+ || (strncmp(tname + 1, "win32con", n) == 0))) {
+ code = TRUE;
}
+ } else if (tname != 0 && stricmp(tname, "unknown") == 0) {
+ code = TRUE;
}
- if (code) {
- if ((TCB->term.type.Booleans) == 0) {
- _nc_init_termtype(&(TCB->term.type));
- }
+ /*
+ * This is intentional, to avoid unnecessary breakage of applications
+ * using <term.h> symbols.
+ */
+ if (code && (TerminalType(&TCB->term).Booleans == 0)) {
+ _nc_init_termtype(&TerminalType(&TCB->term));
+#if NCURSES_EXT_NUMBERS
+ _nc_export_termtype2(&TCB->term.type, &TerminalType(&TCB->term));
+#endif
}
+ if (!code) {
+ if (_nc_mingw_isconsole(0))
+ CON.isTermInfoConsole = TRUE;
+ }
returnBool(code);
}
static int
-drv_dobeepflash(TERMINAL_CONTROL_BLOCK * TCB,
- int beepFlag GCC_UNUSED)
+wcon_dobeepflash(TERMINAL_CONTROL_BLOCK * TCB,
+ int beepFlag)
{
SCREEN *sp;
int res = ERR;
- AssertTCB();
- SetSP();
+ int high = (CON.SBI.srWindow.Bottom - CON.SBI.srWindow.Top + 1);
+ int wide = (CON.SBI.srWindow.Right - CON.SBI.srWindow.Left + 1);
+ int max_cells = (high * wide);
+ int i;
+
+ CHAR_INFO this_screen[max_cells];
+ CHAR_INFO that_screen[max_cells];
+ COORD this_size;
+ SMALL_RECT this_region;
+ COORD bufferCoord;
+
+ if (okConsoleHandle(TCB)) {
+ SetSP();
+ this_region.Top = CON.SBI.srWindow.Top;
+ this_region.Left = CON.SBI.srWindow.Left;
+ this_region.Bottom = CON.SBI.srWindow.Bottom;
+ this_region.Right = CON.SBI.srWindow.Right;
+ this_size.X = (SHORT) wide;
+ this_size.Y = (SHORT) high;
+
+ bufferCoord.X = this_region.Left;
+ bufferCoord.Y = this_region.Top;
+
+ if (!beepFlag &&
+ read_screen(CON.hdl,
+ this_screen,
+ this_size,
+ bufferCoord,
+ &this_region)) {
+
+ memcpy(that_screen, this_screen, sizeof(that_screen));
+
+ for (i = 0; i < max_cells; i++) {
+ that_screen[i].Attributes = RevAttr(that_screen[i].Attributes);
+ }
+
+ write_screen(CON.hdl, that_screen, this_size, bufferCoord, &this_region);
+ Sleep(200);
+ write_screen(CON.hdl, this_screen, this_size, bufferCoord, &this_region);
+
+ } else {
+ MessageBeep(MB_ICONWARNING); /* MB_OK might be better */
+ }
+ res = OK;
+ }
return res;
}
static int
-drv_print(TERMINAL_CONTROL_BLOCK * TCB,
- char *data GCC_UNUSED,
- int len GCC_UNUSED)
+wcon_print(TERMINAL_CONTROL_BLOCK * TCB,
+ char *data GCC_UNUSED,
+ int len GCC_UNUSED)
{
SCREEN *sp;
@@ -533,9 +732,9 @@ drv_print(TERMINAL_CONTROL_BLOCK * TCB,
}
static int
-drv_defaultcolors(TERMINAL_CONTROL_BLOCK * TCB,
- int fg GCC_UNUSED,
- int bg GCC_UNUSED)
+wcon_defaultcolors(TERMINAL_CONTROL_BLOCK * TCB,
+ int fg GCC_UNUSED,
+ int bg GCC_UNUSED)
{
SCREEN *sp;
int code = ERR;
@@ -547,32 +746,31 @@ drv_defaultcolors(TERMINAL_CONTROL_BLOCK * TCB,
}
static bool
-get_SBI(TERMINAL_CONTROL_BLOCK * TCB)
+get_SBI(void)
{
bool rc = FALSE;
- Properties *p = PropOf(TCB);
- if (GetConsoleScreenBufferInfo(TCB->hdl, &(p->SBI))) {
+ if (GetConsoleScreenBufferInfo(CON.hdl, &(CON.SBI))) {
T(("GetConsoleScreenBufferInfo"));
T(("... buffer(X:%d Y:%d)",
- p->SBI.dwSize.X,
- p->SBI.dwSize.Y));
+ CON.SBI.dwSize.X,
+ CON.SBI.dwSize.Y));
T(("... window(X:%d Y:%d)",
- p->SBI.dwMaximumWindowSize.X,
- p->SBI.dwMaximumWindowSize.Y));
+ CON.SBI.dwMaximumWindowSize.X,
+ CON.SBI.dwMaximumWindowSize.Y));
T(("... cursor(X:%d Y:%d)",
- p->SBI.dwCursorPosition.X,
- p->SBI.dwCursorPosition.Y));
+ CON.SBI.dwCursorPosition.X,
+ CON.SBI.dwCursorPosition.Y));
T(("... display(Top:%d Bottom:%d Left:%d Right:%d)",
- p->SBI.srWindow.Top,
- p->SBI.srWindow.Bottom,
- p->SBI.srWindow.Left,
- p->SBI.srWindow.Right));
- if (p->buffered) {
- p->origin.X = 0;
- p->origin.Y = 0;
+ CON.SBI.srWindow.Top,
+ CON.SBI.srWindow.Bottom,
+ CON.SBI.srWindow.Left,
+ CON.SBI.srWindow.Right));
+ if (CON.buffered) {
+ CON.origin.X = 0;
+ CON.origin.Y = 0;
} else {
- p->origin.X = p->SBI.srWindow.Left;
- p->origin.Y = p->SBI.srWindow.Top;
+ CON.origin.X = CON.SBI.srWindow.Left;
+ CON.origin.Y = CON.SBI.srWindow.Top;
}
rc = TRUE;
} else {
@@ -582,39 +780,35 @@ get_SBI(TERMINAL_CONTROL_BLOCK * TCB)
}
static void
-drv_setcolor(TERMINAL_CONTROL_BLOCK * TCB,
- int fore,
- int color,
- int (*outc) (SCREEN *, int) GCC_UNUSED)
+wcon_setcolor(TERMINAL_CONTROL_BLOCK * TCB,
+ int fore,
+ int color,
+ int (*outc) (SCREEN *, int) GCC_UNUSED)
{
- AssertTCB();
-
- if (okConsoleHandle(TCB) &&
- PropOf(TCB) != 0) {
+ if (okConsoleHandle(TCB)) {
WORD a = MapColor(fore, color);
- a |= (WORD) ((PropOf(TCB)->SBI.wAttributes) & (fore ? 0xfff8 : 0xff8f));
- SetConsoleTextAttribute(TCB->hdl, a);
- get_SBI(TCB);
+ a |= (WORD) ((CON.SBI.wAttributes) & (fore ? 0xfff8 : 0xff8f));
+ SetConsoleTextAttribute(CON.hdl, a);
+ get_SBI();
}
}
static bool
-drv_rescol(TERMINAL_CONTROL_BLOCK * TCB)
+wcon_rescol(TERMINAL_CONTROL_BLOCK * TCB)
{
bool res = FALSE;
- AssertTCB();
if (okConsoleHandle(TCB)) {
WORD a = FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN;
- SetConsoleTextAttribute(TCB->hdl, a);
- get_SBI(TCB);
+ SetConsoleTextAttribute(CON.hdl, a);
+ get_SBI();
res = TRUE;
}
return res;
}
static bool
-drv_rescolors(TERMINAL_CONTROL_BLOCK * TCB)
+wcon_rescolors(TERMINAL_CONTROL_BLOCK * TCB)
{
int result = FALSE;
SCREEN *sp;
@@ -626,26 +820,23 @@ drv_rescolors(TERMINAL_CONTROL_BLOCK * TCB)
}
static int
-drv_size(TERMINAL_CONTROL_BLOCK * TCB, int *Lines, int *Cols)
+wcon_size(TERMINAL_CONTROL_BLOCK * TCB, int *Lines, int *Cols)
{
int result = ERR;
- AssertTCB();
-
- T((T_CALLED("win32con::drv_size(%p)"), TCB));
+ T((T_CALLED("win32con::wcon_size(%p)"), TCB));
if (okConsoleHandle(TCB) &&
- PropOf(TCB) != 0 &&
Lines != NULL &&
Cols != NULL) {
- if (PropOf(TCB)->buffered) {
- *Lines = (int) (PropOf(TCB)->SBI.dwSize.Y);
- *Cols = (int) (PropOf(TCB)->SBI.dwSize.X);
+ if (CON.buffered) {
+ *Lines = (int) (CON.SBI.dwSize.Y);
+ *Cols = (int) (CON.SBI.dwSize.X);
} else {
- *Lines = (int) (PropOf(TCB)->SBI.srWindow.Bottom + 1 -
- PropOf(TCB)->SBI.srWindow.Top);
- *Cols = (int) (PropOf(TCB)->SBI.srWindow.Right + 1 -
- PropOf(TCB)->SBI.srWindow.Left);
+ *Lines = (int) (CON.SBI.srWindow.Bottom + 1 -
+ CON.SBI.srWindow.Top);
+ *Cols = (int) (CON.SBI.srWindow.Right + 1 -
+ CON.SBI.srWindow.Left);
}
result = OK;
}
@@ -653,139 +844,229 @@ drv_size(TERMINAL_CONTROL_BLOCK * TCB, int *Lines, int *Cols)
}
static int
-drv_setsize(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED,
- int l GCC_UNUSED,
- int c GCC_UNUSED)
+wcon_setsize(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED,
+ int l GCC_UNUSED,
+ int c GCC_UNUSED)
{
AssertTCB();
return ERR;
}
static int
-drv_sgmode(TERMINAL_CONTROL_BLOCK * TCB, int setFlag, TTY * buf)
+wcon_sgmode(TERMINAL_CONTROL_BLOCK * TCB, int setFlag, TTY * buf)
{
DWORD dwFlag = 0;
tcflag_t iflag;
tcflag_t lflag;
+ int result = ERR;
- AssertTCB();
+ if (buf != NULL && okConsoleHandle(TCB)) {
+
+ if (setFlag) {
+ iflag = buf->c_iflag;
+ lflag = buf->c_lflag;
+
+ GetConsoleMode(CON.inp, &dwFlag);
+
+ if (lflag & ICANON)
+ dwFlag |= ENABLE_LINE_INPUT;
+ else
+ dwFlag &= (DWORD) (~ENABLE_LINE_INPUT);
+
+ if (lflag & ECHO)
+ dwFlag |= ENABLE_ECHO_INPUT;
+ else
+ dwFlag &= (DWORD) (~ENABLE_ECHO_INPUT);
+
+ if (iflag & BRKINT)
+ dwFlag |= ENABLE_PROCESSED_INPUT;
+ else
+ dwFlag &= (DWORD) (~ENABLE_PROCESSED_INPUT);
+
+ dwFlag |= ENABLE_MOUSE_INPUT;
- if (TCB == 0 || buf == NULL)
- return ERR;
+ buf->c_iflag = iflag;
+ buf->c_lflag = lflag;
+ SetConsoleMode(CON.inp, dwFlag);
+ TCB->term.Nttyb = *buf;
+ } else {
+ iflag = TCB->term.Nttyb.c_iflag;
+ lflag = TCB->term.Nttyb.c_lflag;
+ GetConsoleMode(CON.inp, &dwFlag);
- if (setFlag) {
- iflag = buf->c_iflag;
- lflag = buf->c_lflag;
+ if (dwFlag & ENABLE_LINE_INPUT)
+ lflag |= ICANON;
+ else
+ lflag &= (tcflag_t) (~ICANON);
- GetConsoleMode(TCB->inp, &dwFlag);
+ if (dwFlag & ENABLE_ECHO_INPUT)
+ lflag |= ECHO;
+ else
+ lflag &= (tcflag_t) (~ECHO);
- if (lflag & ICANON)
- dwFlag |= ENABLE_LINE_INPUT;
- else
- dwFlag &= (DWORD) (~ENABLE_LINE_INPUT);
+ if (dwFlag & ENABLE_PROCESSED_INPUT)
+ iflag |= BRKINT;
+ else
+ iflag &= (tcflag_t) (~BRKINT);
- if (lflag & ECHO)
- dwFlag |= ENABLE_ECHO_INPUT;
- else
- dwFlag &= (DWORD) (~ENABLE_ECHO_INPUT);
+ TCB->term.Nttyb.c_iflag = iflag;
+ TCB->term.Nttyb.c_lflag = lflag;
- if (iflag & BRKINT)
- dwFlag |= ENABLE_PROCESSED_INPUT;
- else
- dwFlag &= (DWORD) (~ENABLE_PROCESSED_INPUT);
+ *buf = TCB->term.Nttyb;
+ }
+ result = OK;
+ }
+ return result;
+}
- dwFlag |= ENABLE_MOUSE_INPUT;
+#define MIN_WIDE 80
+#define MIN_HIGH 24
- buf->c_iflag = iflag;
- buf->c_lflag = lflag;
- SetConsoleMode(TCB->inp, dwFlag);
- TCB->term.Nttyb = *buf;
+/*
+ * In "normal" mode, reset the buffer- and window-sizes back to their original values.
+ */
+static void
+set_scrollback(bool normal, CONSOLE_SCREEN_BUFFER_INFO * info)
+{
+ SMALL_RECT rect;
+ COORD coord;
+ bool changed = FALSE;
+
+ T((T_CALLED("win32con::set_scrollback(%s)"),
+ (normal
+ ? "normal"
+ : "application")));
+
+ T(("... SBI.srWindow %d,%d .. %d,%d",
+ info->srWindow.Top,
+ info->srWindow.Left,
+ info->srWindow.Bottom,
+ info->srWindow.Right));
+ T(("... SBI.dwSize %dx%d",
+ info->dwSize.Y,
+ info->dwSize.X));
+
+ if (normal) {
+ rect = info->srWindow;
+ coord = info->dwSize;
+ if (memcmp(info, &CON.SBI, sizeof(*info)) != 0) {
+ changed = TRUE;
+ CON.SBI = *info;
+ }
} else {
- iflag = TCB->term.Nttyb.c_iflag;
- lflag = TCB->term.Nttyb.c_lflag;
- GetConsoleMode(TCB->inp, &dwFlag);
+ int high = info->srWindow.Bottom - info->srWindow.Top + 1;
+ int wide = info->srWindow.Right - info->srWindow.Left + 1;
- if (dwFlag & ENABLE_LINE_INPUT)
- lflag |= ICANON;
- else
- lflag &= (tcflag_t) (~ICANON);
+ if (high < MIN_HIGH) {
+ T(("... height %d < %d", high, MIN_HIGH));
+ high = MIN_HIGH;
+ changed = TRUE;
+ }
+ if (wide < MIN_WIDE) {
+ T(("... width %d < %d", wide, MIN_WIDE));
+ wide = MIN_WIDE;
+ changed = TRUE;
+ }
- if (dwFlag & ENABLE_ECHO_INPUT)
- lflag |= ECHO;
- else
- lflag &= (tcflag_t) (~ECHO);
+ rect.Left =
+ rect.Top = 0;
+ rect.Right = (SHORT) (wide - 1);
+ rect.Bottom = (SHORT) (high - 1);
- if (dwFlag & ENABLE_PROCESSED_INPUT)
- iflag |= BRKINT;
- else
- iflag &= (tcflag_t) (~BRKINT);
+ coord.X = (SHORT) wide;
+ coord.Y = (SHORT) high;
- TCB->term.Nttyb.c_iflag = iflag;
- TCB->term.Nttyb.c_lflag = lflag;
+ if (info->dwSize.Y != high ||
+ info->dwSize.X != wide ||
+ info->srWindow.Top != 0 ||
+ info->srWindow.Left != 0) {
+ changed = TRUE;
+ }
- *buf = TCB->term.Nttyb;
}
- return OK;
+
+ if (changed) {
+ T(("... coord %d,%d", coord.Y, coord.X));
+ T(("... rect %d,%d - %d,%d",
+ rect.Top, rect.Left,
+ rect.Bottom, rect.Right));
+ SetConsoleScreenBufferSize(CON.hdl, coord); /* dwSize */
+ SetConsoleWindowInfo(CON.hdl, TRUE, &rect); /* srWindow */
+ get_SBI();
+ }
+ returnVoid;
}
static int
-drv_mode(TERMINAL_CONTROL_BLOCK * TCB, int progFlag, int defFlag)
+wcon_mode(TERMINAL_CONTROL_BLOCK * TCB, int progFlag, int defFlag)
{
SCREEN *sp;
TERMINAL *_term = (TERMINAL *) TCB;
int code = ERR;
- AssertTCB();
- sp = TCB->csp;
+ if (okConsoleHandle(TCB)) {
+ sp = TCB->csp;
+
+ T((T_CALLED("win32con::wcon_mode(%p, prog=%d, def=%d)"),
+ TCB, progFlag, defFlag));
- PropOf(TCB)->progMode = progFlag;
- PropOf(TCB)->lastOut = progFlag ? TCB->hdl : TCB->out;
- SetConsoleActiveScreenBuffer(PropOf(TCB)->lastOut);
+ CON.progMode = progFlag;
+ CON.lastOut = progFlag ? CON.hdl : CON.out;
+ SetConsoleActiveScreenBuffer(CON.lastOut);
- if (progFlag) /* prog mode */ {
- if (defFlag) {
- if ((drv_sgmode(TCB, FALSE, &(_term->Nttyb)) == OK)) {
- _term->Nttyb.c_oflag &= (tcflag_t) (~OFLAGS_TABS);
- code = OK;
+ if (progFlag) /* prog mode */ {
+ if (defFlag) {
+ if ((wcon_sgmode(TCB, FALSE, &(_term->Nttyb)) == OK)) {
+ _term->Nttyb.c_oflag &= (tcflag_t) (~OFLAGS_TABS);
+ code = OK;
+ }
+ } else {
+ /* reset_prog_mode */
+ if (wcon_sgmode(TCB, TRUE, &(_term->Nttyb)) == OK) {
+ if (sp) {
+ if (sp->_keypad_on)
+ _nc_keypad(sp, TRUE);
+ }
+ if (!CON.buffered) {
+ set_scrollback(FALSE, &CON.SBI);
+ }
+ code = OK;
+ }
}
- } else {
- /* reset_prog_mode */
- if (drv_sgmode(TCB, TRUE, &(_term->Nttyb)) == OK) {
+ T(("... buffered:%d, clear:%d", CON.buffered, CurScreen(sp)->_clear));
+ } else { /* shell mode */
+ if (defFlag) {
+ /* def_shell_mode */
+ if (wcon_sgmode(TCB, FALSE, &(_term->Ottyb)) == OK) {
+ code = OK;
+ }
+ } else {
+ /* reset_shell_mode */
if (sp) {
- if (sp->_keypad_on)
- _nc_keypad(sp, TRUE);
- NC_BUFFERED(sp, TRUE);
+ _nc_keypad(sp, FALSE);
+ NCURSES_SP_NAME(_nc_flush) (sp);
}
- code = OK;
- }
- }
- } else { /* shell mode */
- if (defFlag) {
- /* def_shell_mode */
- if (drv_sgmode(TCB, FALSE, &(_term->Ottyb)) == OK) {
- code = OK;
- }
- } else {
- /* reset_shell_mode */
- if (sp) {
- _nc_keypad(sp, FALSE);
- NCURSES_SP_NAME(_nc_flush) (sp);
- NC_BUFFERED(sp, FALSE);
+ code = wcon_sgmode(TCB, TRUE, &(_term->Ottyb));
+ if (!CON.buffered) {
+ set_scrollback(TRUE, &CON.save_SBI);
+ if (!restore_original_screen())
+ code = ERR;
+ }
+ SetConsoleCursorInfo(CON.hdl, &CON.save_CI);
}
- code = drv_sgmode(TCB, TRUE, &(_term->Ottyb));
}
- }
- return (code);
+ }
+ returnCode(code);
}
static void
-drv_screen_init(SCREEN *sp GCC_UNUSED)
+wcon_screen_init(SCREEN *sp GCC_UNUSED)
{
}
static void
-drv_wrap(SCREEN *sp GCC_UNUSED)
+wcon_wrap(SCREEN *sp GCC_UNUSED)
{
}
@@ -808,17 +1089,38 @@ keycompare(const void *el1, const void *el2)
}
static int
-MapKey(TERMINAL_CONTROL_BLOCK * TCB, WORD vKey)
+MapKey(WORD vKey)
{
WORD nKey = 0;
void *res;
LONG key = GenMap(vKey, 0);
int code = -1;
- AssertTCB();
+ res = bsearch(&key,
+ CON.map,
+ (size_t) (N_INI + FKEYS),
+ sizeof(keylist[0]),
+ keycompare);
+ if (res) {
+ key = *((LONG *) res);
+ nKey = LOWORD(key);
+ code = (int) (nKey & 0x7fff);
+ if (nKey & 0x8000)
+ code = -code;
+ }
+ return code;
+}
+
+static int
+AnsiKey(WORD vKey)
+{
+ WORD nKey = 0;
+ void *res;
+ LONG key = GenMap(vKey, 0);
+ int code = -1;
res = bsearch(&key,
- PropOf(TCB)->map,
+ CON.ansi_map,
(size_t) (N_INI + FKEYS),
sizeof(keylist[0]),
keycompare);
@@ -833,9 +1135,9 @@ MapKey(TERMINAL_CONTROL_BLOCK * TCB, WORD vKey)
}
static void
-drv_release(TERMINAL_CONTROL_BLOCK * TCB)
+wcon_release(TERMINAL_CONTROL_BLOCK * TCB)
{
- T((T_CALLED("win32con::drv_release(%p)"), TCB));
+ T((T_CALLED("win32con::wcon_release(%p)"), TCB));
AssertTCB();
if (TCB->prop)
@@ -844,138 +1146,96 @@ drv_release(TERMINAL_CONTROL_BLOCK * TCB)
returnVoid;
}
-/*
- * Attempt to save the screen contents. PDCurses does this if
- * PDC_RESTORE_SCREEN is set, giving the same visual appearance on restoration
- * as if the library had allocated a console buffer.
- */
static bool
-save_original_screen(TERMINAL_CONTROL_BLOCK * TCB)
+read_screen_data(void)
{
bool result = FALSE;
- Properties *p = PropOf(TCB);
- COORD bufferSize;
COORD bufferCoord;
- SMALL_RECT readRegion;
size_t want;
- bufferSize.X = p->SBI.dwSize.X;
- bufferSize.Y = p->SBI.dwSize.Y;
- want = (size_t) (bufferSize.X * bufferSize.Y);
+ CON.save_size.X = (SHORT) (CON.save_region.Right
+ - CON.save_region.Left + 1);
+ CON.save_size.Y = (SHORT) (CON.save_region.Bottom
+ - CON.save_region.Top + 1);
- if ((p->save_screen = malloc(want * sizeof(CHAR_INFO))) != 0) {
- bufferCoord.X = bufferCoord.Y = 0;
+ want = (size_t) (CON.save_size.X * CON.save_size.Y);
- readRegion.Top = 0;
- readRegion.Left = 0;
- readRegion.Bottom = (SHORT) (bufferSize.Y - 1);
- readRegion.Right = (SHORT) (bufferSize.X - 1);
+ if ((CON.save_screen = malloc(want * sizeof(CHAR_INFO))) != 0) {
+ bufferCoord.X = (SHORT) (CON.window_only ? CON.SBI.srWindow.Left : 0);
+ bufferCoord.Y = (SHORT) (CON.window_only ? CON.SBI.srWindow.Top : 0);
- T(("... reading console buffer %dx%d into %d,%d - %d,%d at %d,%d",
- bufferSize.Y, bufferSize.X,
- readRegion.Top,
- readRegion.Left,
- readRegion.Bottom,
- readRegion.Right,
+ T(("... reading console %s %dx%d into %d,%d - %d,%d at %d,%d",
+ CON.window_only ? "window" : "buffer",
+ CON.save_size.Y, CON.save_size.X,
+ CON.save_region.Top,
+ CON.save_region.Left,
+ CON.save_region.Bottom,
+ CON.save_region.Right,
bufferCoord.Y,
bufferCoord.X));
- if (ReadConsoleOutput(TCB->hdl,
- p->save_screen,
- bufferSize,
- bufferCoord,
- &readRegion)) {
+ if (read_screen(CON.hdl,
+ CON.save_screen,
+ CON.save_size,
+ bufferCoord,
+ &CON.save_region)) {
result = TRUE;
} else {
T((" error %#lx", (unsigned long) GetLastError()));
- FreeAndNull(p->save_screen);
-
- bufferSize.X = (SHORT) (p->SBI.srWindow.Right
- - p->SBI.srWindow.Left + 1);
- bufferSize.Y = (SHORT) (p->SBI.srWindow.Bottom
- - p->SBI.srWindow.Top + 1);
- want = (size_t) (bufferSize.X * bufferSize.Y);
-
- if ((p->save_screen = malloc(want * sizeof(CHAR_INFO))) != 0) {
- bufferCoord.X = bufferCoord.Y = 0;
-
- readRegion.Top = p->SBI.srWindow.Top;
- readRegion.Left = p->SBI.srWindow.Left;
- readRegion.Bottom = p->SBI.srWindow.Bottom;
- readRegion.Right = p->SBI.srWindow.Right;
-
- T(("... reading console window %dx%d into %d,%d - %d,%d at %d,%d",
- bufferSize.Y, bufferSize.X,
- readRegion.Top,
- readRegion.Left,
- readRegion.Bottom,
- readRegion.Right,
- bufferCoord.Y,
- bufferCoord.X));
-
- if (ReadConsoleOutput(TCB->hdl,
- p->save_screen,
- bufferSize,
- bufferCoord,
- &readRegion)) {
- result = TRUE;
- } else {
- T((" error %#lx", (unsigned long) GetLastError()));
- }
- }
+ FreeAndNull(CON.save_screen);
}
}
- T(("... save original screen contents %s", result ? "ok" : "err"));
return result;
}
-static void
-drv_init(TERMINAL_CONTROL_BLOCK * TCB)
+/*
+ * Attempt to save the screen contents. PDCurses does this if
+ * PDC_RESTORE_SCREEN is set, giving the same visual appearance on
+ * restoration as if the library had allocated a console buffer. MSDN
+ * says that the data which can be read is limited to 64Kb (and may be
+ * less).
+ */
+static bool
+save_original_screen(void)
{
- DWORD num_buttons;
-
- T((T_CALLED("win32con::drv_init(%p)"), TCB));
+ bool result = FALSE;
- AssertTCB();
+ CON.save_region.Top = 0;
+ CON.save_region.Left = 0;
+ CON.save_region.Bottom = (SHORT) (CON.SBI.dwSize.Y - 1);
+ CON.save_region.Right = (SHORT) (CON.SBI.dwSize.X - 1);
- if (TCB) {
- BOOL b = AllocConsole();
- WORD a;
- int i;
- bool buffered = TRUE;
+ if (read_screen_data()) {
+ result = TRUE;
+ } else {
- if (!b)
- b = AttachConsole(ATTACH_PARENT_PROCESS);
+ CON.save_region.Top = CON.SBI.srWindow.Top;
+ CON.save_region.Left = CON.SBI.srWindow.Left;
+ CON.save_region.Bottom = CON.SBI.srWindow.Bottom;
+ CON.save_region.Right = CON.SBI.srWindow.Right;
- TCB->inp = GetStdHandle(STD_INPUT_HANDLE);
- TCB->out = GetStdHandle(STD_OUTPUT_HANDLE);
+ CON.window_only = TRUE;
- if (getenv("NCGDB")) {
- TCB->hdl = TCB->out;
- buffered = FALSE;
- } else {
- TCB->hdl = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE,
- 0,
- NULL,
- CONSOLE_TEXTMODE_BUFFER,
- NULL);
+ if (read_screen_data()) {
+ result = TRUE;
}
+ }
+
+ T(("... save original screen contents %s", result ? "ok" : "err"));
+ return result;
+}
+
+static void
+wcon_init(TERMINAL_CONTROL_BLOCK * TCB)
+{
+ T((T_CALLED("win32con::wcon_init(%p)"), TCB));
+
+ AssertTCB();
- if (InvalidConsoleHandle(TCB->hdl)) {
+ if (TCB) {
+ if (!InitConsole()) {
returnVoid;
- } else if ((TCB->prop = typeCalloc(Properties, 1)) != 0) {
- PropOf(TCB)->buffered = buffered;
- if (!get_SBI(TCB)) {
- FreeAndNull(TCB->prop); /* force error in drv_size */
- returnVoid;
- }
- if (!buffered) {
- if (!save_original_screen(TCB)) {
- FreeAndNull(TCB->prop); /* force error in drv_size */
- returnVoid;
- }
- }
}
TCB->info.initcolor = TRUE;
@@ -991,61 +1251,37 @@ drv_init(TERMINAL_CONTROL_BLOCK * TCB)
TCB->info.nocolorvideo = 1;
TCB->info.tabsize = 8;
- if (GetNumberOfConsoleMouseButtons(&num_buttons)) {
- T(("mouse has %ld buttons", num_buttons));
- TCB->info.numbuttons = (int) num_buttons;
- } else {
- TCB->info.numbuttons = 1;
- }
-
+ TCB->info.numbuttons = CON.numButtons;
TCB->info.defaultPalette = _nc_cga_palette;
- for (i = 0; i < (N_INI + FKEYS); i++) {
- if (i < N_INI)
- PropOf(TCB)->rmap[i] = PropOf(TCB)->map[i] = (DWORD) keylist[i];
- else
- PropOf(TCB)->rmap[i] = PropOf(TCB)->map[i] =
- GenMap((VK_F1 + (i - N_INI)), (KEY_F(1) + (i - N_INI)));
- }
- qsort(PropOf(TCB)->map,
- (size_t) (MAPSIZE),
- sizeof(keylist[0]),
- keycompare);
- qsort(PropOf(TCB)->rmap,
- (size_t) (MAPSIZE),
- sizeof(keylist[0]),
- rkeycompare);
-
- a = MapColor(true, COLOR_WHITE) | MapColor(false, COLOR_BLACK);
- for (i = 0; i < NUMPAIRS; i++)
- PropOf(TCB)->pairs[i] = a;
}
returnVoid;
}
static void
-drv_initpair(TERMINAL_CONTROL_BLOCK * TCB,
- int pair,
- int f,
- int b)
+wcon_initpair(TERMINAL_CONTROL_BLOCK * TCB,
+ int pair,
+ int f,
+ int b)
{
SCREEN *sp;
- AssertTCB();
- SetSP();
+ if (okConsoleHandle(TCB)) {
+ SetSP();
- if ((pair > 0) && (pair < NUMPAIRS) && (f >= 0) && (f < 8)
- && (b >= 0) && (b < 8)) {
- PropOf(TCB)->pairs[pair] = MapColor(true, f) | MapColor(false, b);
+ if ((pair > 0) && (pair < NUMPAIRS) && (f >= 0) && (f < 8)
+ && (b >= 0) && (b < 8)) {
+ CON.pairs[pair] = MapColor(true, f) | MapColor(false, b);
+ }
}
}
static void
-drv_initcolor(TERMINAL_CONTROL_BLOCK * TCB,
- int color GCC_UNUSED,
- int r GCC_UNUSED,
- int g GCC_UNUSED,
- int b GCC_UNUSED)
+wcon_initcolor(TERMINAL_CONTROL_BLOCK * TCB,
+ int color GCC_UNUSED,
+ int r GCC_UNUSED,
+ int g GCC_UNUSED,
+ int b GCC_UNUSED)
{
SCREEN *sp;
@@ -1054,11 +1290,11 @@ drv_initcolor(TERMINAL_CONTROL_BLOCK * TCB,
}
static void
-drv_do_color(TERMINAL_CONTROL_BLOCK * TCB,
- int old_pair GCC_UNUSED,
- int pair GCC_UNUSED,
- int reverse GCC_UNUSED,
- int (*outc) (SCREEN *, int) GCC_UNUSED
+wcon_do_color(TERMINAL_CONTROL_BLOCK * TCB,
+ int old_pair GCC_UNUSED,
+ int pair GCC_UNUSED,
+ int reverse GCC_UNUSED,
+ int (*outc) (SCREEN *, int) GCC_UNUSED
)
{
SCREEN *sp;
@@ -1068,59 +1304,62 @@ drv_do_color(TERMINAL_CONTROL_BLOCK * TCB,
}
static void
-drv_initmouse(TERMINAL_CONTROL_BLOCK * TCB)
+wcon_initmouse(TERMINAL_CONTROL_BLOCK * TCB)
{
SCREEN *sp;
- AssertTCB();
- SetSP();
+ if (okConsoleHandle(TCB)) {
+ SetSP();
- sp->_mouse_type = M_TERM_DRIVER;
+ sp->_mouse_type = M_TERM_DRIVER;
+ }
}
static int
-drv_testmouse(TERMINAL_CONTROL_BLOCK * TCB, int delay)
+wcon_testmouse(TERMINAL_CONTROL_BLOCK * TCB,
+ int delay
+ EVENTLIST_2nd(_nc_eventlist * evl))
{
int rc = 0;
SCREEN *sp;
- AssertTCB();
- SetSP();
+ if (okConsoleHandle(TCB)) {
+ SetSP();
- if (sp->_drv_mouse_head < sp->_drv_mouse_tail) {
- rc = TW_MOUSE;
- } else {
- rc = TCBOf(sp)->drv->twait(TCBOf(sp),
- TWAIT_MASK,
- delay,
- (int *) 0
- EVENTLIST_2nd(evl));
+ if (sp->_drv_mouse_head < sp->_drv_mouse_tail) {
+ rc = TW_MOUSE;
+ } else {
+ rc = TCBOf(sp)->drv->td_twait(TCBOf(sp),
+ TWAIT_MASK,
+ delay,
+ (int *) 0
+ EVENTLIST_2nd(evl));
+ }
}
return rc;
}
static int
-drv_mvcur(TERMINAL_CONTROL_BLOCK * TCB,
- int yold GCC_UNUSED, int xold GCC_UNUSED,
- int y, int x)
+wcon_mvcur(TERMINAL_CONTROL_BLOCK * TCB,
+ int yold GCC_UNUSED, int xold GCC_UNUSED,
+ int y, int x)
{
int ret = ERR;
if (okConsoleHandle(TCB)) {
- Properties *p = PropOf(TCB);
COORD loc;
loc.X = (short) x;
- loc.Y = (short) (y + AdjustY(p));
- SetConsoleCursorPosition(TCB->hdl, loc);
+ loc.Y = (short) (y + AdjustY());
+ SetConsoleCursorPosition(CON.hdl, loc);
ret = OK;
}
return ret;
}
static void
-drv_hwlabel(TERMINAL_CONTROL_BLOCK * TCB,
- int labnum GCC_UNUSED,
- char *text GCC_UNUSED)
+wcon_hwlabel(TERMINAL_CONTROL_BLOCK * TCB,
+ int labnum GCC_UNUSED,
+ char *text GCC_UNUSED)
{
SCREEN *sp;
@@ -1129,8 +1368,8 @@ drv_hwlabel(TERMINAL_CONTROL_BLOCK * TCB,
}
static void
-drv_hwlabelOnOff(TERMINAL_CONTROL_BLOCK * TCB,
- int OnFlag GCC_UNUSED)
+wcon_hwlabelOnOff(TERMINAL_CONTROL_BLOCK * TCB,
+ int OnFlag GCC_UNUSED)
{
SCREEN *sp;
@@ -1139,7 +1378,7 @@ drv_hwlabelOnOff(TERMINAL_CONTROL_BLOCK * TCB,
}
static chtype
-drv_conattr(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED)
+wcon_conattr(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED)
{
chtype res = A_NORMAL;
res |= (A_BOLD | A_DIM | A_REVERSE | A_STANDOUT | A_COLOR);
@@ -1147,7 +1386,7 @@ drv_conattr(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED)
}
static void
-drv_setfilter(TERMINAL_CONTROL_BLOCK * TCB)
+wcon_setfilter(TERMINAL_CONTROL_BLOCK * TCB)
{
SCREEN *sp;
@@ -1156,9 +1395,9 @@ drv_setfilter(TERMINAL_CONTROL_BLOCK * TCB)
}
static void
-drv_initacs(TERMINAL_CONTROL_BLOCK * TCB,
- chtype *real_map GCC_UNUSED,
- chtype *fake_map GCC_UNUSED)
+wcon_initacs(TERMINAL_CONTROL_BLOCK * TCB,
+ chtype *real_map GCC_UNUSED,
+ chtype *fake_map GCC_UNUSED)
{
#define DATA(a,b) { a, b }
static struct {
@@ -1192,13 +1431,14 @@ drv_initacs(TERMINAL_CONTROL_BLOCK * TCB,
unsigned n;
SCREEN *sp;
- AssertTCB();
- SetSP();
+ if (okConsoleHandle(TCB)) {
+ SetSP();
- for (n = 0; n < SIZEOF(table); ++n) {
- real_map[table[n].acs_code] = (chtype) table[n].use_code | A_ALTCHARSET;
- if (sp != 0)
- sp->_screen_acs_map[table[n].acs_code] = TRUE;
+ for (n = 0; n < SIZEOF(table); ++n) {
+ real_map[table[n].acs_code] = (chtype) table[n].use_code | A_ALTCHARSET;
+ if (sp != 0)
+ sp->_screen_acs_map[table[n].acs_code] = TRUE;
+ }
}
}
@@ -1221,11 +1461,11 @@ tdiff(FILETIME fstart, FILETIME fend)
static int
Adjust(int milliseconds, int diff)
{
- if (milliseconds == INFINITY)
- return milliseconds;
- milliseconds -= diff;
- if (milliseconds < 0)
- milliseconds = 0;
+ if (milliseconds != INFINITY) {
+ milliseconds -= diff;
+ if (milliseconds < 0)
+ milliseconds = 0;
+ }
return milliseconds;
}
@@ -1236,13 +1476,12 @@ Adjust(int milliseconds, int diff)
RIGHTMOST_BUTTON_PRESSED)
static int
-decode_mouse(TERMINAL_CONTROL_BLOCK * TCB, int mask)
+decode_mouse(SCREEN *sp, int mask)
{
- SCREEN *sp;
int result = 0;
- AssertTCB();
- SetSP();
+ (void) sp;
+ assert(sp && console_initialized);
if (mask & FROM_LEFT_1ST_BUTTON_PRESSED)
result |= BUTTON1_PRESSED;
@@ -1254,7 +1493,7 @@ decode_mouse(TERMINAL_CONTROL_BLOCK * TCB, int mask)
result |= BUTTON4_PRESSED;
if (mask & RIGHTMOST_BUTTON_PRESSED) {
- switch (TCB->info.numbuttons) {
+ switch (CON.numButtons) {
case 1:
result |= BUTTON1_PRESSED;
break;
@@ -1274,13 +1513,14 @@ decode_mouse(TERMINAL_CONTROL_BLOCK * TCB, int mask)
}
static int
-drv_twait(TERMINAL_CONTROL_BLOCK * TCB,
- int mode,
- int milliseconds,
- int *timeleft
- EVENTLIST_2nd(_nc_eventlist * evl))
+console_twait(
+ SCREEN *sp,
+ HANDLE fd,
+ int mode,
+ int milliseconds,
+ int *timeleft
+ EVENTLIST_2nd(_nc_eventlist * evl))
{
- SCREEN *sp;
INPUT_RECORD inp_rec;
BOOL b;
DWORD nRead = 0, rc = (DWORD) (-1);
@@ -1290,10 +1530,13 @@ drv_twait(TERMINAL_CONTROL_BLOCK * TCB,
int diff;
bool isImmed = (milliseconds == 0);
-#define CONSUME() ReadConsoleInput(TCB->inp,&inp_rec,1,&nRead)
+#ifdef NCURSES_WGETCH_EVENTS
+ (void) evl; /* TODO: implement wgetch-events */
+#endif
- AssertTCB();
- SetSP();
+#define CONSUME() ReadConsoleInput(fd,&inp_rec,1,&nRead)
+
+ assert(sp);
TR(TRACE_IEVENT, ("start twait: %d milliseconds, mode: %d",
milliseconds, mode));
@@ -1305,19 +1548,19 @@ drv_twait(TERMINAL_CONTROL_BLOCK * TCB,
while (true) {
GetSystemTimeAsFileTime(&fstart);
- rc = WaitForSingleObject(TCB->inp, (DWORD) milliseconds);
+ rc = WaitForSingleObject(fd, (DWORD) milliseconds);
GetSystemTimeAsFileTime(&fend);
diff = (int) tdiff(fstart, fend);
milliseconds = Adjust(milliseconds, diff);
- if (!isImmed && milliseconds == 0)
+ if (!isImmed && milliseconds <= 0)
break;
if (rc == WAIT_OBJECT_0) {
if (mode) {
- b = GetNumberOfConsoleInputEvents(TCB->inp, &nRead);
+ b = GetNumberOfConsoleInputEvents(fd, &nRead);
if (b && nRead > 0) {
- b = PeekConsoleInput(TCB->inp, &inp_rec, 1, &nRead);
+ b = PeekConsoleInput(fd, &inp_rec, 1, &nRead);
if (b && nRead > 0) {
switch (inp_rec.EventType) {
case KEY_EVENT:
@@ -1327,8 +1570,8 @@ drv_twait(TERMINAL_CONTROL_BLOCK * TCB,
if (inp_rec.Event.KeyEvent.bKeyDown) {
if (0 == ch) {
- int nKey = MapKey(TCB, vk);
- if ((nKey < 0) || FALSE == sp->_keypad_on) {
+ int nKey = MapKey(vk);
+ if (nKey < 0) {
CONSUME();
continue;
}
@@ -1341,7 +1584,7 @@ drv_twait(TERMINAL_CONTROL_BLOCK * TCB,
}
continue;
case MOUSE_EVENT:
- if (decode_mouse(TCB,
+ if (decode_mouse(sp,
(inp_rec.Event.MouseEvent.dwButtonState
& BUTTON_MASK)) == 0) {
CONSUME();
@@ -1350,8 +1593,10 @@ drv_twait(TERMINAL_CONTROL_BLOCK * TCB,
goto end;
}
continue;
+ /* e.g., FOCUS_EVENT */
default:
- selectActiveHandle(TCB);
+ CONSUME();
+ selectActiveHandle();
continue;
}
}
@@ -1379,15 +1624,35 @@ drv_twait(TERMINAL_CONTROL_BLOCK * TCB,
return code;
}
-static bool
-handle_mouse(TERMINAL_CONTROL_BLOCK * TCB, MOUSE_EVENT_RECORD mer)
+static int
+wcon_twait(TERMINAL_CONTROL_BLOCK * TCB,
+ int mode,
+ int milliseconds,
+ int *timeleft
+ EVENTLIST_2nd(_nc_eventlist * evl))
{
SCREEN *sp;
+ int code = 0;
+
+ if (okConsoleHandle(TCB)) {
+ SetSP();
+
+ code = console_twait(sp,
+ CON.inp,
+ mode,
+ milliseconds,
+ timeleft EVENTLIST_2nd(evl));
+ }
+ return code;
+}
+
+static bool
+handle_mouse(SCREEN *sp, MOUSE_EVENT_RECORD mer)
+{
MEVENT work;
bool result = FALSE;
- AssertTCB();
- SetSP();
+ assert(sp);
sp->_drv_mouse_old_buttons = sp->_drv_mouse_new_buttons;
sp->_drv_mouse_new_buttons = mer.dwButtonState & BUTTON_MASK;
@@ -1397,18 +1662,17 @@ handle_mouse(TERMINAL_CONTROL_BLOCK * TCB, MOUSE_EVENT_RECORD mer)
* FIXME: implement continuous event-tracking.
*/
if (sp->_drv_mouse_new_buttons != sp->_drv_mouse_old_buttons) {
- Properties *p = PropOf(TCB);
memset(&work, 0, sizeof(work));
if (sp->_drv_mouse_new_buttons) {
- work.bstate |= (mmask_t) decode_mouse(TCB, sp->_drv_mouse_new_buttons);
+ work.bstate |= (mmask_t) decode_mouse(sp, sp->_drv_mouse_new_buttons);
} else {
/* cf: BUTTON_PRESSED, BUTTON_RELEASED */
- work.bstate |= (mmask_t) (decode_mouse(TCB,
+ work.bstate |= (mmask_t) (decode_mouse(sp,
sp->_drv_mouse_old_buttons)
>> 1);
@@ -1416,7 +1680,7 @@ handle_mouse(TERMINAL_CONTROL_BLOCK * TCB, MOUSE_EVENT_RECORD mer)
}
work.x = mer.dwMousePosition.X;
- work.y = mer.dwMousePosition.Y - AdjustY(p);
+ work.y = mer.dwMousePosition.Y - AdjustY();
sp->_drv_mouse_fifo[sp->_drv_mouse_tail] = work;
sp->_drv_mouse_tail += 1;
@@ -1426,78 +1690,64 @@ handle_mouse(TERMINAL_CONTROL_BLOCK * TCB, MOUSE_EVENT_RECORD mer)
}
static int
-drv_read(TERMINAL_CONTROL_BLOCK * TCB, int *buf)
+wcon_read(TERMINAL_CONTROL_BLOCK * TCB, int *buf)
{
SCREEN *sp;
- int n = 1;
- INPUT_RECORD inp_rec;
- BOOL b;
- DWORD nRead;
- WORD vk;
+ int n = -1;
- AssertTCB();
- assert(buf);
- SetSP();
+ T((T_CALLED("win32con::wcon_read(%p)"), TCB));
- memset(&inp_rec, 0, sizeof(inp_rec));
+ assert(buf);
+ if (okConsoleHandle(TCB)) {
+ SetSP();
- T((T_CALLED("win32con::drv_read(%p)"), TCB));
- while ((b = ReadConsoleInput(TCB->inp, &inp_rec, 1, &nRead))) {
- if (b && nRead > 0) {
- if (inp_rec.EventType == KEY_EVENT) {
- if (!inp_rec.Event.KeyEvent.bKeyDown)
- continue;
- *buf = (int) inp_rec.Event.KeyEvent.uChar.AsciiChar;
- vk = inp_rec.Event.KeyEvent.wVirtualKeyCode;
- if (*buf == 0) {
- if (sp->_keypad_on) {
- *buf = MapKey(TCB, vk);
- if (0 > (*buf))
- continue;
- else
- break;
- } else
- continue;
- } else { /* *buf != 0 */
- break;
- }
- } else if (inp_rec.EventType == MOUSE_EVENT) {
- if (handle_mouse(TCB, inp_rec.Event.MouseEvent)) {
- *buf = KEY_MOUSE;
- break;
- }
- }
- continue;
- }
+ n = _nc_mingw_console_read(sp, CON.inp, buf);
}
returnCode(n);
}
static int
-drv_nap(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, int ms)
+wcon_nap(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, int ms)
{
- T((T_CALLED("win32con::drv_nap(%p, %d)"), TCB, ms));
+ T((T_CALLED("win32con::wcon_nap(%p, %d)"), TCB, ms));
Sleep((DWORD) ms);
returnCode(OK);
}
+static int
+wcon_cursorSet(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, int mode)
+{
+ int res = -1;
+
+ T((T_CALLED("win32con:wcon_cursorSet(%d)"), mode));
+ if (okConsoleHandle(TCB)) {
+ CONSOLE_CURSOR_INFO this_CI = CON.save_CI;
+ switch (mode) {
+ case 0:
+ this_CI.bVisible = FALSE;
+ break;
+ case 1:
+ break;
+ case 2:
+ this_CI.dwSize = 100;
+ break;
+ }
+ SetConsoleCursorInfo(CON.hdl, &this_CI);
+ }
+ returnCode(res);
+}
+
static bool
-drv_kyExist(TERMINAL_CONTROL_BLOCK * TCB, int keycode)
+wcon_kyExist(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, int keycode)
{
- SCREEN *sp;
WORD nKey;
void *res;
bool found = FALSE;
LONG key = GenMap(0, (WORD) keycode);
- AssertTCB();
- SetSP();
-
- AssertTCB();
-
- T((T_CALLED("win32con::drv_kyExist(%p, %d)"), TCB, keycode));
+ T((T_CALLED("win32con::wcon_kyExist(%d)"), keycode));
res = bsearch(&key,
- PropOf(TCB)->rmap,
+ CON.rmap,
(size_t) (N_INI + FKEYS),
sizeof(keylist[0]),
rkeycompare);
@@ -1511,23 +1761,27 @@ drv_kyExist(TERMINAL_CONTROL_BLOCK * TCB, int keycode)
}
static int
-drv_kpad(TERMINAL_CONTROL_BLOCK * TCB, int flag GCC_UNUSED)
+wcon_kpad(TERMINAL_CONTROL_BLOCK * TCB, int flag GCC_UNUSED)
{
SCREEN *sp;
int code = ERR;
- AssertTCB();
- sp = TCB->csp;
+ T((T_CALLED("win32con::wcon_kpad(%p, %d)"), TCB, flag));
+
+ if (okConsoleHandle(TCB)) {
+ SetSP();
- T((T_CALLED("win32con::drv_kpad(%p, %d)"), TCB, flag));
- if (sp) {
- code = OK;
+ if (sp) {
+ code = OK;
+ }
}
returnCode(code);
}
static int
-drv_keyok(TERMINAL_CONTROL_BLOCK * TCB, int keycode, int flag)
+wcon_keyok(TERMINAL_CONTROL_BLOCK * TCB,
+ int keycode,
+ int flag)
{
int code = ERR;
SCREEN *sp;
@@ -1536,23 +1790,25 @@ drv_keyok(TERMINAL_CONTROL_BLOCK * TCB, int keycode, int flag)
void *res;
LONG key = GenMap(0, (WORD) keycode);
- AssertTCB();
- SetSP();
+ T((T_CALLED("win32con::wcon_keyok(%p, %d, %d)"), TCB, keycode, flag));
+
+ if (okConsoleHandle(TCB)) {
+ SetSP();
- T((T_CALLED("win32con::drv_keyok(%p, %d, %d)"), TCB, keycode, flag));
- if (sp) {
- res = bsearch(&key,
- PropOf(TCB)->rmap,
- (size_t) (N_INI + FKEYS),
- sizeof(keylist[0]),
- rkeycompare);
- if (res) {
- key = *((LONG *) res);
- vKey = HIWORD(key);
- nKey = (LOWORD(key)) & 0x7fff;
- if (!flag)
- nKey |= 0x8000;
- *(LONG *) res = GenMap(vKey, nKey);
+ if (sp) {
+ res = bsearch(&key,
+ CON.rmap,
+ (size_t) (N_INI + FKEYS),
+ sizeof(keylist[0]),
+ rkeycompare);
+ if (res) {
+ key = *((LONG *) res);
+ vKey = HIWORD(key);
+ nKey = (LOWORD(key)) & 0x7fff;
+ if (!flag)
+ nKey |= 0x8000;
+ *(LONG *) res = GenMap(vKey, nKey);
+ }
}
}
returnCode(code);
@@ -1560,38 +1816,459 @@ drv_keyok(TERMINAL_CONTROL_BLOCK * TCB, int keycode, int flag)
NCURSES_EXPORT_VAR (TERM_DRIVER) _nc_WIN_DRIVER = {
FALSE,
- drv_CanHandle, /* CanHandle */
- drv_init, /* init */
- drv_release, /* release */
- drv_size, /* size */
- drv_sgmode, /* sgmode */
- drv_conattr, /* conattr */
- drv_mvcur, /* hwcur */
- drv_mode, /* mode */
- drv_rescol, /* rescol */
- drv_rescolors, /* rescolors */
- drv_setcolor, /* color */
- drv_dobeepflash, /* DoBeepFlash */
- drv_initpair, /* initpair */
- drv_initcolor, /* initcolor */
- drv_do_color, /* docolor */
- drv_initmouse, /* initmouse */
- drv_testmouse, /* testmouse */
- drv_setfilter, /* setfilter */
- drv_hwlabel, /* hwlabel */
- drv_hwlabelOnOff, /* hwlabelOnOff */
- drv_doupdate, /* update */
- drv_defaultcolors, /* defaultcolors */
- drv_print, /* print */
- drv_size, /* getsize */
- drv_setsize, /* setsize */
- drv_initacs, /* initacs */
- drv_screen_init, /* scinit */
- drv_wrap, /* scexit */
- drv_twait, /* twait */
- drv_read, /* read */
- drv_nap, /* nap */
- drv_kpad, /* kpad */
- drv_keyok, /* kyOk */
- drv_kyExist /* kyExist */
+ wcon_name, /* Name */
+ wcon_CanHandle, /* CanHandle */
+ wcon_init, /* init */
+ wcon_release, /* release */
+ wcon_size, /* size */
+ wcon_sgmode, /* sgmode */
+ wcon_conattr, /* conattr */
+ wcon_mvcur, /* hwcur */
+ wcon_mode, /* mode */
+ wcon_rescol, /* rescol */
+ wcon_rescolors, /* rescolors */
+ wcon_setcolor, /* color */
+ wcon_dobeepflash, /* DoBeepFlash */
+ wcon_initpair, /* initpair */
+ wcon_initcolor, /* initcolor */
+ wcon_do_color, /* docolor */
+ wcon_initmouse, /* initmouse */
+ wcon_testmouse, /* testmouse */
+ wcon_setfilter, /* setfilter */
+ wcon_hwlabel, /* hwlabel */
+ wcon_hwlabelOnOff, /* hwlabelOnOff */
+ wcon_doupdate, /* update */
+ wcon_defaultcolors, /* defaultcolors */
+ wcon_print, /* print */
+ wcon_size, /* getsize */
+ wcon_setsize, /* setsize */
+ wcon_initacs, /* initacs */
+ wcon_screen_init, /* scinit */
+ wcon_wrap, /* scexit */
+ wcon_twait, /* twait */
+ wcon_read, /* read */
+ wcon_nap, /* nap */
+ wcon_kpad, /* kpad */
+ wcon_keyok, /* kyOk */
+ wcon_kyExist, /* kyExist */
+ wcon_cursorSet /* cursorSet */
};
+
+/* --------------------------------------------------------- */
+
+static HANDLE
+get_handle(int fd)
+{
+ intptr_t value = _get_osfhandle(fd);
+ return (HANDLE) value;
+}
+
+#if WINVER >= 0x0600
+/* This function tests, whether or not the ncurses application
+ is running as a descendant of MSYS2/cygwin mintty terminal
+ application. mintty doesn't use Windows Console for it's screen
+ I/O, so the native Windows _isatty doesn't recognize it as
+ character device. But we can discover we are at the end of an
+ Pipe and can query to server side of the pipe, looking whether
+ or not this is mintty.
+ */
+static int
+_ismintty(int fd, LPHANDLE pMinTTY)
+{
+ HANDLE handle = get_handle(fd);
+ DWORD dw;
+ int code = 0;
+
+ T((T_CALLED("win32con::_ismintty(%d, %p)"), fd, pMinTTY));
+
+ if (handle != INVALID_HANDLE_VALUE) {
+ dw = GetFileType(handle);
+ if (dw == FILE_TYPE_PIPE) {
+ if (GetNamedPipeInfo(handle, 0, 0, 0, 0)) {
+ ULONG pPid;
+ /* Requires NT6 */
+ if (GetNamedPipeServerProcessId(handle, &pPid)) {
+ TCHAR buf[MAX_PATH];
+ DWORD len = 0;
+ /* These security attributes may allow us to
+ create a remote thread in mintty to manipulate
+ the terminal state remotely */
+ HANDLE pHandle = OpenProcess(
+ PROCESS_CREATE_THREAD
+ | PROCESS_QUERY_INFORMATION
+ | PROCESS_VM_OPERATION
+ | PROCESS_VM_WRITE
+ | PROCESS_VM_READ,
+ FALSE,
+ pPid);
+ if (pMinTTY)
+ *pMinTTY = INVALID_HANDLE_VALUE;
+ if (pHandle != INVALID_HANDLE_VALUE) {
+ if ((len = GetProcessImageFileName(
+ pHandle,
+ buf,
+ (DWORD)
+ array_length(buf)))) {
+ TCHAR *pos = _tcsrchr(buf, _T('\\'));
+ if (pos) {
+ pos++;
+ if (_tcsnicmp(pos, _TEXT("mintty.exe"), 10)
+ == 0) {
+ if (pMinTTY)
+ *pMinTTY = pHandle;
+ code = 1;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ returnCode(code);
+}
+#endif
+
+/* Borrowed from ansicon project.
+ Check whether or not an I/O handle is associated with
+ a Windows console.
+*/
+static BOOL
+IsConsoleHandle(HANDLE hdl)
+{
+ DWORD dwFlag = 0;
+ BOOL result;
+
+ if (!GetConsoleMode(hdl, &dwFlag)) {
+ result = (int) WriteConsoleA(hdl, NULL, 0, &dwFlag, NULL);
+ } else {
+ result = (int) (dwFlag & ENABLE_PROCESSED_OUTPUT);
+ }
+ return result;
+}
+
+/* Our replacement for the systems _isatty to include also
+ a test for mintty. This is called from the NC_ISATTY macro
+ defined in curses.priv.h
+ */
+int
+_nc_mingw_isatty(int fd)
+{
+ int result = 0;
+
+#ifdef __MING32__
+#define SysISATTY(fd) _isatty(fd)
+#else
+#define SysISATTY(fd) isatty(fd)
+#endif
+ if (SysISATTY(fd)) {
+ result = 1;
+ } else {
+#if WINVER >= 0x0600
+ result = _ismintty(fd, NULL);
+#endif
+ }
+ return result;
+}
+
+/* This is used when running in terminfo mode to discover,
+ whether or not the "terminal" is actually a Windows
+ Console. It's the responsibility of the console to deal
+ with the terminal escape sequences that are sent by
+ terminfo.
+ */
+int
+_nc_mingw_isconsole(int fd)
+{
+ HANDLE hdl = get_handle(fd);
+ int code = 0;
+
+ T((T_CALLED("win32con::_nc_mingw_isconsole(%d)"), fd));
+
+ code = (int) IsConsoleHandle(hdl);
+
+ returnCode(code);
+}
+
+#define TC_PROLOGUE(fd) \
+ SCREEN *sp; \
+ TERMINAL *term = 0; \
+ int code = ERR; \
+ if (_nc_screen_chain == 0) \
+ return 0; \
+ for (each_screen(sp)) { \
+ if (sp->_term && (sp->_term->Filedes == fd)) { \
+ term = sp->_term; \
+ break; \
+ } \
+ } \
+ assert(term != 0)
+
+int
+_nc_mingw_tcsetattr(
+ int fd,
+ int optional_action GCC_UNUSED,
+ const struct termios *arg)
+{
+ TC_PROLOGUE(fd);
+
+ if (_nc_mingw_isconsole(fd)) {
+ DWORD dwFlag = 0;
+ HANDLE ofd = get_handle(fd);
+ if (ofd != INVALID_HANDLE_VALUE) {
+ if (arg) {
+ if (arg->c_lflag & ICANON)
+ dwFlag |= ENABLE_LINE_INPUT;
+ else
+ dwFlag = dwFlag & (DWORD) (~ENABLE_LINE_INPUT);
+
+ if (arg->c_lflag & ECHO)
+ dwFlag = dwFlag | ENABLE_ECHO_INPUT;
+ else
+ dwFlag = dwFlag & (DWORD) (~ENABLE_ECHO_INPUT);
+
+ if (arg->c_iflag & BRKINT)
+ dwFlag |= ENABLE_PROCESSED_INPUT;
+ else
+ dwFlag = dwFlag & (DWORD) (~ENABLE_PROCESSED_INPUT);
+ }
+ dwFlag |= ENABLE_MOUSE_INPUT;
+ SetConsoleMode(ofd, dwFlag);
+ code = OK;
+ }
+ }
+ if (arg)
+ term->Nttyb = *arg;
+
+ return code;
+}
+
+int
+_nc_mingw_tcgetattr(int fd, struct termios *arg)
+{
+ TC_PROLOGUE(fd);
+
+ if (_nc_mingw_isconsole(fd)) {
+ if (arg)
+ *arg = term->Nttyb;
+ }
+ return code;
+}
+
+int
+_nc_mingw_tcflush(int fd, int queue)
+{
+ TC_PROLOGUE(fd);
+ (void) term;
+
+ if (_nc_mingw_isconsole(fd)) {
+ if (queue == TCIFLUSH) {
+ BOOL b = FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
+ if (!b)
+ return (int) GetLastError();
+ }
+ }
+ return code;
+}
+
+int
+_nc_mingw_testmouse(
+ SCREEN *sp,
+ HANDLE fd,
+ int delay
+ EVENTLIST_2nd(_nc_eventlist * evl))
+{
+ int rc = 0;
+
+ assert(sp);
+
+ if (sp->_drv_mouse_head < sp->_drv_mouse_tail) {
+ rc = TW_MOUSE;
+ } else {
+ rc = console_twait(sp,
+ fd,
+ TWAIT_MASK,
+ delay,
+ (int *) 0
+ EVENTLIST_2nd(evl));
+ }
+ return rc;
+}
+
+int
+_nc_mingw_console_read(
+ SCREEN *sp,
+ HANDLE fd,
+ int *buf)
+{
+ int rc = -1;
+ INPUT_RECORD inp_rec;
+ BOOL b;
+ DWORD nRead;
+ WORD vk;
+
+ assert(sp);
+ assert(buf);
+
+ memset(&inp_rec, 0, sizeof(inp_rec));
+
+ T((T_CALLED("_nc_mingw_console_read(%p)"), sp));
+
+ while ((b = ReadConsoleInput(fd, &inp_rec, 1, &nRead))) {
+ if (b && nRead > 0) {
+ if (rc < 0)
+ rc = 0;
+ rc = rc + (int) nRead;
+ if (inp_rec.EventType == KEY_EVENT) {
+ if (!inp_rec.Event.KeyEvent.bKeyDown)
+ continue;
+ *buf = (int) inp_rec.Event.KeyEvent.uChar.AsciiChar;
+ vk = inp_rec.Event.KeyEvent.wVirtualKeyCode;
+ /*
+ * There are 24 virtual function-keys, and typically
+ * 12 function-keys on a keyboard. Use the shift-modifier
+ * to provide the remaining 12 keys.
+ */
+ if (vk >= VK_F1 && vk <= VK_F12) {
+ if (inp_rec.Event.KeyEvent.dwControlKeyState & SHIFT_PRESSED) {
+ vk = (WORD) (vk + 12);
+ }
+ }
+ if (*buf == 0) {
+ int key = MapKey(vk);
+ if (key < 0)
+ continue;
+ if (sp->_keypad_on) {
+ *buf = key;
+ } else {
+ ungetch('\0');
+ *buf = AnsiKey(vk);
+ }
+ }
+ break;
+ } else if (inp_rec.EventType == MOUSE_EVENT) {
+ if (handle_mouse(sp,
+ inp_rec.Event.MouseEvent)) {
+ *buf = KEY_MOUSE;
+ break;
+ }
+ }
+ continue;
+ }
+ }
+ returnCode(rc);
+}
+
+static bool
+InitConsole(void)
+{
+ /* initialize once, or not at all */
+ if (!console_initialized) {
+ int i;
+ DWORD num_buttons;
+ WORD a;
+ BOOL buffered = TRUE;
+ BOOL b;
+
+ START_TRACE();
+ if (_nc_mingw_isatty(0)) {
+ CON.isMinTTY = TRUE;
+ }
+
+ for (i = 0; i < (N_INI + FKEYS); i++) {
+ if (i < N_INI) {
+ CON.rmap[i] = CON.map[i] =
+ (DWORD) keylist[i];
+ CON.ansi_map[i] = (DWORD) ansi_keys[i];
+ } else {
+ CON.rmap[i] = CON.map[i] =
+ (DWORD) GenMap((VK_F1 + (i - N_INI)),
+ (KEY_F(1) + (i - N_INI)));
+ CON.ansi_map[i] =
+ (DWORD) GenMap((VK_F1 + (i - N_INI)),
+ (';' + (i - N_INI)));
+ }
+ }
+ qsort(CON.ansi_map,
+ (size_t) (MAPSIZE),
+ sizeof(keylist[0]),
+ keycompare);
+ qsort(CON.map,
+ (size_t) (MAPSIZE),
+ sizeof(keylist[0]),
+ keycompare);
+ qsort(CON.rmap,
+ (size_t) (MAPSIZE),
+ sizeof(keylist[0]),
+ rkeycompare);
+
+ if (GetNumberOfConsoleMouseButtons(&num_buttons)) {
+ CON.numButtons = (int) num_buttons;
+ } else {
+ CON.numButtons = 1;
+ }
+
+ a = MapColor(true, COLOR_WHITE) | MapColor(false, COLOR_BLACK);
+ for (i = 0; i < NUMPAIRS; i++)
+ CON.pairs[i] = a;
+
+ CON.inp = GetStdHandle(STD_INPUT_HANDLE);
+ CON.out = GetStdHandle(STD_OUTPUT_HANDLE);
+
+ b = AllocConsole();
+
+ if (!b)
+ b = AttachConsole(ATTACH_PARENT_PROCESS);
+
+ if (getenv("NCGDB") || getenv("NCURSES_CONSOLE2")) {
+ T(("... will not buffer console"));
+ buffered = FALSE;
+ CON.hdl = CON.out;
+ } else {
+ T(("... creating console buffer"));
+ CON.hdl = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE,
+ 0,
+ NULL,
+ CONSOLE_TEXTMODE_BUFFER,
+ NULL);
+ }
+
+ if (CON.hdl != INVALID_HANDLE_VALUE) {
+ CON.buffered = buffered;
+ get_SBI();
+ CON.save_SBI = CON.SBI;
+ if (!buffered) {
+ save_original_screen();
+ set_scrollback(FALSE, &CON.SBI);
+ }
+ GetConsoleCursorInfo(CON.hdl, &CON.save_CI);
+ T(("... initial cursor is %svisible, %d%%",
+ (CON.save_CI.bVisible ? "" : "not-"),
+ (int) CON.save_CI.dwSize));
+ }
+
+ console_initialized = TRUE;
+ }
+ return (CON.hdl != INVALID_HANDLE_VALUE);
+}
+
+static bool
+okConsoleHandle(TERMINAL_CONTROL_BLOCK * TCB)
+{
+ return ((TCB != 0) &&
+ (TCB->magic == WINMAGIC) &&
+ InitConsole());
+}
+
+/*
+ * While a constructor would ensure that this module is initialized, that will
+ * interfere with applications that may combine this with GUI interfaces.
+ */
+#if 0
+static
+__attribute__((constructor))
+ void _enter_console(void)
+{
+ (void) InitConsole();
+}
+#endif
diff --git a/package/debian-mingw/changelog b/package/debian-mingw/changelog
index bda20d7c9b43..cbd950df9e58 100644
--- a/package/debian-mingw/changelog
+++ b/package/debian-mingw/changelog
@@ -1,8 +1,8 @@
-ncurses6 (5.9-20140222) unstable; urgency=low
+ncurses6 (6.1+20200118) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 22 Feb 2014 11:55:12 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 18 Jan 2020 05:27:03 -0500
ncurses6 (5.9-20131005) unstable; urgency=low
diff --git a/package/debian-mingw/compat b/package/debian-mingw/compat
index 7ed6ff82de6b..ec635144f600 100644
--- a/package/debian-mingw/compat
+++ b/package/debian-mingw/compat
@@ -1 +1 @@
-5
+9
diff --git a/package/debian-mingw/control b/package/debian-mingw/control
index b32a33ebc825..7ad33dcc546b 100644
--- a/package/debian-mingw/control
+++ b/package/debian-mingw/control
@@ -2,7 +2,7 @@ Source: ncurses6
Section: libdevel
Priority: optional
Maintainer: Thomas E. Dickey <dickey@invisible-island.net>
-Homepage: http://invisible-island.net/ncurses/
+Homepage: https://invisible-island.net/ncurses/
Build-Depends: debhelper (>= 7)
Standards-Version: 3.8.2
diff --git a/package/debian-mingw/copyright b/package/debian-mingw/copyright
index 2b279046d6ee..1ce70990e929 100644
--- a/package/debian-mingw/copyright
+++ b/package/debian-mingw/copyright
@@ -1,112 +1,99 @@
+Upstream source https://invisible-island.net/ncurses/ncurses.html
This package is used for testing builds of ncurses.
-Copyright (c) 1998-2013,2014 Free Software Foundation, Inc.
-Copyright © 2001 by Pradeep Padala
-
-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.
-
-
-Copyright (C) 1994 X Consortium
-
-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, 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
-X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the X Consortium shall not
-be used in advertising or otherwise to promote the sale, use or other deal-
-ings in this Software without prior written authorization from the X Consor-
-tium.
-
-
-Copyright (c) 1980, 1991, 1992, 1993
- The Regents of the University of California. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-
-Copyright 1996-2013,2014 by Thomas E. Dickey
-
- All Rights Reserved
-
-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, 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 LISTED COPYRIGHT HOLDER(S) 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.
+Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
+
+-------------------------------------------------------------------------------
+Files: *
+Copyright: 1998-2019,2020 Free Software Foundation, Inc.
+Licence: X11
+
+Files: aclocal.m4 package
+Copyright: 1996-2019,2020 by Thomas E. Dickey
+Licence: X11
+
+Files: doc/html/NCURSES-Programming-HOWTO.html
+Copyright: 2001 by Pradeep Padala
+Licence: X11
+
+ 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.
+
+-------------------------------------------------------------------------------
+Files: install-sh
+Copyright: 1994 X Consortium
+Licence: X11
+
+ 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, 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
+ X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+ TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of the X Consortium shall not
+ be used in advertising or otherwise to promote the sale, use or other deal-
+ ings in this Software without prior written authorization from the X Consor-
+ tium.
+
+-------------------------------------------------------------------------------
+Files: progs/tset.c ncurses/tinfo/read_termcap.c
+Copyright: 1980,1991,1992,1993 The Regents of the University of California.
+License: BSD
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
-- vile: txtmode file-encoding=utf-8
diff --git a/package/debian-mingw/mingw32-ncurses6.lintian-overrides b/package/debian-mingw/mingw32-ncurses6.lintian-overrides
new file mode 100644
index 000000000000..ed565e43aa0c
--- /dev/null
+++ b/package/debian-mingw/mingw32-ncurses6.lintian-overrides
@@ -0,0 +1,7 @@
+mingw32-ncurses6: latest-debian-changelog-entry-changed-to-native
+
+mingw32-ncurses6: non-standard-dir-in-usr
+mingw32-ncurses6: file-in-unusual-dir
+
+mingw32-ncurses6: binary-without-manpage
+mingw32-ncurses6: executable-not-elf-or-script
diff --git a/package/debian-mingw/rules b/package/debian-mingw/rules
index 35dacc04eaa3..4aa7cb957ac9 100755
--- a/package/debian-mingw/rules
+++ b/package/debian-mingw/rules
@@ -11,40 +11,48 @@
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+MY_ABI=6
+
BUILD_CC = gcc
CC_NORMAL = -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion
CC_STRICT = $(CC_NORMAL) -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic
TARGET = i686-w64-mingw32
+MINGW_BIN = /usr/bin
MINGW_TOP = /usr/$(TARGET)
-MINGW_TMP = $(CURDIR)/debian/mingw32-ncurses6
+MINGW_TMP = $(CURDIR)/debian/mingw32-ncurses$(MY_ABI)
CFLAGS = $(CC_NORMAL)
+verbose = # -v
+
CONFIG_OPTIONS = \
- --disable-echo \
--disable-db-install \
+ --disable-echo \
--disable-getcap \
--disable-hard-tabs \
--disable-leaks \
--disable-macros \
--disable-overwrite \
--disable-termcap \
- --enable-const \
- --enable-ext-colors \
- --enable-ext-mouse \
--enable-interop \
- --enable-sp-funcs \
+ --enable-opaque-curses \
+ --enable-opaque-form \
+ --enable-opaque-menu \
+ --enable-opaque-panel \
+ --enable-pc-files \
--enable-term-driver \
--enable-warnings \
--enable-widec \
--verbose \
+ --with-abi-version=$(MY_ABI) \
--with-cxx-shared \
--with-develop \
--with-fallbacks=unknown,rxvt \
+ --with-tic-path=/usr/bin/tic$(MY_ABI) \
+ --with-infocmp-path=/usr/bin/infocmp$(MY_ABI) \
--with-shared \
- --with-tparm-arg=intptr_t \
--with-trace \
--with-xterm-kbs=DEL \
--without-ada \
@@ -75,6 +83,8 @@ configure-stamp:
--target=$(TARGET) \
--prefix=$(MINGW_TOP) \
--with-build-cc=$(BUILD_CC) \
+ --with-pc-suffix=$(MY_ABI) \
+ --with-pkg-config-libdir=/usr/$(TARGET)/lib/pkgconfig \
$(CONFIG_OPTIONS)
touch configure-stamp
@@ -102,10 +112,17 @@ install-stamp: build-stamp
dh_testdir
dh_testroot
dh_clean -k
- dh_installdirs
+ dh_installdirs $(verbose)
$(MAKE) install.libs DESTDIR=$(MINGW_TMP)
+ mkdir -p $(MINGW_TMP)$(MINGW_BIN)
+ for name in $(MINGW_TMP)$(MINGW_TOP)/bin/*-config; \
+ do \
+ base=`basename $$name`; \
+ ln -v $$name $(MINGW_TMP)$(MINGW_BIN)/$(TARGET)-$$base; \
+ done
+
touch install-stamp
# Build architecture-independent files here.
@@ -115,16 +132,18 @@ binary-indep: build install
# Build architecture-dependent files here.
binary-arch: build install
dh_testdir
- dh_testroot
- dh_installchangelogs NEWS
+ dh_testroot $(verbose)
+ dh_lintian $(verbose)
+ dh_installdocs $(verbose)
+ dh_installchangelogs $(verbose) NEWS
# dh_strip
- dh_compress
- dh_fixperms
- dh_installdeb
- dh_shlibdeps
- dh_gencontrol
- dh_md5sums
- dh_builddeb
+ dh_compress $(verbose)
+ dh_fixperms $(verbose)
+ dh_installdeb $(verbose)
+ dh_shlibdeps $(verbose)
+ dh_gencontrol $(verbose)
+ dh_md5sums $(verbose)
+ dh_builddeb $(verbose)
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install install-stamp
diff --git a/package/debian-mingw/source/format b/package/debian-mingw/source/format
index 163aaf8d82b6..89ae9db8f88b 100644
--- a/package/debian-mingw/source/format
+++ b/package/debian-mingw/source/format
@@ -1 +1 @@
-3.0 (quilt)
+3.0 (native)
diff --git a/package/debian-mingw/watch b/package/debian-mingw/watch
index 945a9962419f..f6b3987e0dda 100644
--- a/package/debian-mingw/watch
+++ b/package/debian-mingw/watch
@@ -1,4 +1,4 @@
version=3
-opts=passive ftp://invisible-island.net/ncurses/current/ncurses\.tar.gz \
+opts=passive ftp://ftp.invisible-island.net/ncurses/current/ncurses\.tar.gz \
debian uupdate
diff --git a/package/debian-mingw64/changelog b/package/debian-mingw64/changelog
index bda20d7c9b43..cbd950df9e58 100644
--- a/package/debian-mingw64/changelog
+++ b/package/debian-mingw64/changelog
@@ -1,8 +1,8 @@
-ncurses6 (5.9-20140222) unstable; urgency=low
+ncurses6 (6.1+20200118) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 22 Feb 2014 11:55:12 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 18 Jan 2020 05:27:03 -0500
ncurses6 (5.9-20131005) unstable; urgency=low
diff --git a/package/debian-mingw64/compat b/package/debian-mingw64/compat
index 7ed6ff82de6b..ec635144f600 100644
--- a/package/debian-mingw64/compat
+++ b/package/debian-mingw64/compat
@@ -1 +1 @@
-5
+9
diff --git a/package/debian-mingw64/control b/package/debian-mingw64/control
index a17ed1fc81a3..fa1bd716f2c8 100644
--- a/package/debian-mingw64/control
+++ b/package/debian-mingw64/control
@@ -2,7 +2,7 @@ Source: ncurses6
Section: libdevel
Priority: optional
Maintainer: Thomas E. Dickey <dickey@invisible-island.net>
-Homepage: http://invisible-island.net/ncurses/
+Homepage: https://invisible-island.net/ncurses/
Build-Depends: debhelper (>= 7)
Standards-Version: 3.8.2
diff --git a/package/debian-mingw64/copyright b/package/debian-mingw64/copyright
index 2b279046d6ee..1ce70990e929 100644
--- a/package/debian-mingw64/copyright
+++ b/package/debian-mingw64/copyright
@@ -1,112 +1,99 @@
+Upstream source https://invisible-island.net/ncurses/ncurses.html
This package is used for testing builds of ncurses.
-Copyright (c) 1998-2013,2014 Free Software Foundation, Inc.
-Copyright © 2001 by Pradeep Padala
-
-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.
-
-
-Copyright (C) 1994 X Consortium
-
-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, 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
-X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the X Consortium shall not
-be used in advertising or otherwise to promote the sale, use or other deal-
-ings in this Software without prior written authorization from the X Consor-
-tium.
-
-
-Copyright (c) 1980, 1991, 1992, 1993
- The Regents of the University of California. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-
-Copyright 1996-2013,2014 by Thomas E. Dickey
-
- All Rights Reserved
-
-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, 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 LISTED COPYRIGHT HOLDER(S) 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.
+Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
+
+-------------------------------------------------------------------------------
+Files: *
+Copyright: 1998-2019,2020 Free Software Foundation, Inc.
+Licence: X11
+
+Files: aclocal.m4 package
+Copyright: 1996-2019,2020 by Thomas E. Dickey
+Licence: X11
+
+Files: doc/html/NCURSES-Programming-HOWTO.html
+Copyright: 2001 by Pradeep Padala
+Licence: X11
+
+ 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.
+
+-------------------------------------------------------------------------------
+Files: install-sh
+Copyright: 1994 X Consortium
+Licence: X11
+
+ 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, 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
+ X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+ TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of the X Consortium shall not
+ be used in advertising or otherwise to promote the sale, use or other deal-
+ ings in this Software without prior written authorization from the X Consor-
+ tium.
+
+-------------------------------------------------------------------------------
+Files: progs/tset.c ncurses/tinfo/read_termcap.c
+Copyright: 1980,1991,1992,1993 The Regents of the University of California.
+License: BSD
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
-- vile: txtmode file-encoding=utf-8
diff --git a/package/debian-mingw64/mingw64-ncurses6.lintian-overrides b/package/debian-mingw64/mingw64-ncurses6.lintian-overrides
new file mode 100644
index 000000000000..9e8f85445e1a
--- /dev/null
+++ b/package/debian-mingw64/mingw64-ncurses6.lintian-overrides
@@ -0,0 +1,7 @@
+mingw64-ncurses6: latest-debian-changelog-entry-changed-to-native
+
+mingw64-ncurses6: non-standard-dir-in-usr
+mingw64-ncurses6: file-in-unusual-dir
+
+mingw64-ncurses6: binary-without-manpage
+mingw64-ncurses6: executable-not-elf-or-script
diff --git a/package/debian-mingw64/rules b/package/debian-mingw64/rules
index 864ff654f8ad..b2ebb8832140 100755
--- a/package/debian-mingw64/rules
+++ b/package/debian-mingw64/rules
@@ -11,40 +11,48 @@
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+MY_ABI=6
+
BUILD_CC = gcc
CC_NORMAL = -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion
CC_STRICT = $(CC_NORMAL) -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic
TARGET = x86_64-w64-mingw32
+MINGW_BIN = /usr/bin
MINGW_TOP = /usr/$(TARGET)
-MINGW_TMP = $(CURDIR)/debian/mingw64-ncurses6
+MINGW_TMP = $(CURDIR)/debian/mingw64-ncurses$(MY_ABI)
CFLAGS = $(CC_NORMAL)
+verbose = # -v
+
CONFIG_OPTIONS = \
- --disable-echo \
--disable-db-install \
+ --disable-echo \
--disable-getcap \
--disable-hard-tabs \
--disable-leaks \
--disable-macros \
--disable-overwrite \
--disable-termcap \
- --enable-const \
- --enable-ext-colors \
- --enable-ext-mouse \
--enable-interop \
- --enable-sp-funcs \
+ --enable-opaque-curses \
+ --enable-opaque-form \
+ --enable-opaque-menu \
+ --enable-opaque-panel \
+ --enable-pc-files \
--enable-term-driver \
--enable-warnings \
--enable-widec \
--verbose \
+ --with-abi-version=$(MY_ABI) \
--with-cxx-shared \
--with-develop \
--with-fallbacks=unknown,rxvt \
+ --with-tic-path=/usr/bin/tic$(MY_ABI) \
+ --with-infocmp-path=/usr/bin/infocmp$(MY_ABI) \
--with-shared \
- --with-tparm-arg=intptr_t \
--with-trace \
--with-xterm-kbs=DEL \
--without-ada \
@@ -75,6 +83,8 @@ configure-stamp:
--target=$(TARGET) \
--prefix=$(MINGW_TOP) \
--with-build-cc=$(BUILD_CC) \
+ --with-pc-suffix=$(MY_ABI) \
+ --with-pkg-config-libdir=/usr/$(TARGET)/lib/pkgconfig \
$(CONFIG_OPTIONS)
touch configure-stamp
@@ -102,10 +112,17 @@ install-stamp: build-stamp
dh_testdir
dh_testroot
dh_clean -k
- dh_installdirs
+ dh_installdirs $(verbose)
$(MAKE) install.libs DESTDIR=$(MINGW_TMP)
+ mkdir -p $(MINGW_TMP)$(MINGW_BIN)
+ for name in $(MINGW_TMP)$(MINGW_TOP)/bin/*-config; \
+ do \
+ base=`basename $$name`; \
+ ln -v $$name $(MINGW_TMP)$(MINGW_BIN)/$(TARGET)-$$base; \
+ done
+
touch install-stamp
# Build architecture-independent files here.
@@ -115,16 +132,18 @@ binary-indep: build install
# Build architecture-dependent files here.
binary-arch: build install
dh_testdir
- dh_testroot
- dh_installchangelogs NEWS
+ dh_testroot $(verbose)
+ dh_lintian $(verbose)
+ dh_installdocs $(verbose)
+ dh_installchangelogs $(verbose) NEWS
# dh_strip
- dh_compress
- dh_fixperms
- dh_installdeb
- dh_shlibdeps
- dh_gencontrol
- dh_md5sums
- dh_builddeb
+ dh_compress $(verbose)
+ dh_fixperms $(verbose)
+ dh_installdeb $(verbose)
+ dh_shlibdeps $(verbose)
+ dh_gencontrol $(verbose)
+ dh_md5sums $(verbose)
+ dh_builddeb $(verbose)
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install install-stamp
diff --git a/package/debian-mingw64/source/format b/package/debian-mingw64/source/format
index 163aaf8d82b6..89ae9db8f88b 100644
--- a/package/debian-mingw64/source/format
+++ b/package/debian-mingw64/source/format
@@ -1 +1 @@
-3.0 (quilt)
+3.0 (native)
diff --git a/package/debian-mingw64/watch b/package/debian-mingw64/watch
index 945a9962419f..f6b3987e0dda 100644
--- a/package/debian-mingw64/watch
+++ b/package/debian-mingw64/watch
@@ -1,4 +1,4 @@
version=3
-opts=passive ftp://invisible-island.net/ncurses/current/ncurses\.tar.gz \
+opts=passive ftp://ftp.invisible-island.net/ncurses/current/ncurses\.tar.gz \
debian uupdate
diff --git a/package/debian/changelog b/package/debian/changelog
index 019318ddf19a..2a30cabe341c 100644
--- a/package/debian/changelog
+++ b/package/debian/changelog
@@ -1,8 +1,8 @@
-ncurses6 (5.9-20140222) unstable; urgency=low
+ncurses6 (6.1+20200118) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 22 Feb 2014 11:55:12 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 18 Jan 2020 05:27:03 -0500
ncurses6 (5.9-20120608) unstable; urgency=low
diff --git a/package/debian/compat b/package/debian/compat
index 7ed6ff82de6b..ec635144f600 100644
--- a/package/debian/compat
+++ b/package/debian/compat
@@ -1 +1 @@
-5
+9
diff --git a/package/debian/control b/package/debian/control
index 8f80f25c78c1..fcd4dac31f2a 100644
--- a/package/debian/control
+++ b/package/debian/control
@@ -2,15 +2,43 @@ Source: ncurses6
Section: libdevel
Priority: optional
Maintainer: Thomas E. Dickey <dickey@invisible-island.net>
-Homepage: http://invisible-island.net/ncurses/
+Homepage: https://invisible-island.net/ncurses/
Build-Depends: debhelper (>= 7)
Standards-Version: 3.8.2
Package: ncurses6
Architecture: any
-Depends: ${misc:Depends}
+Depends: ${misc:Depends}, libc6 (>= 2.4)
Description: shared libraries for terminal handling
The ncurses library routines are a terminal-independent method of
updating character screens with reasonable optimization.
.
This package is used for testing ABI 6.
+
+Package: ncursest6
+Architecture: any
+Depends: ${misc:Depends}, libc6 (>= 2.4)
+Description: shared libraries for terminal handling
+ The ncurses library routines are a terminal-independent method of
+ updating character screens with reasonable optimization.
+ .
+ This package is used for testing ABI 6 with pthreads.
+
+Package: ncurses6-doc
+Section: doc
+Architecture: all
+Depends: groff-base
+Description: shared libraries for terminal handling
+ The ncurses library routines are a terminal-independent method of
+ updating character screens with reasonable optimization.
+ .
+ This package is used for testing ncurses6 document packaging.
+
+Package: ncurses6-doc-html
+Section: doc
+Architecture: all
+Description: shared libraries for terminal handling
+ The ncurses library routines are a terminal-independent method of
+ updating character screens with reasonable optimization.
+ .
+ This package is used for testing ncurses6 document packaging.
diff --git a/package/debian/copyright b/package/debian/copyright
index 2b279046d6ee..1ce70990e929 100644
--- a/package/debian/copyright
+++ b/package/debian/copyright
@@ -1,112 +1,99 @@
+Upstream source https://invisible-island.net/ncurses/ncurses.html
This package is used for testing builds of ncurses.
-Copyright (c) 1998-2013,2014 Free Software Foundation, Inc.
-Copyright © 2001 by Pradeep Padala
-
-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.
-
-
-Copyright (C) 1994 X Consortium
-
-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, 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
-X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the X Consortium shall not
-be used in advertising or otherwise to promote the sale, use or other deal-
-ings in this Software without prior written authorization from the X Consor-
-tium.
-
-
-Copyright (c) 1980, 1991, 1992, 1993
- The Regents of the University of California. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-
-Copyright 1996-2013,2014 by Thomas E. Dickey
-
- All Rights Reserved
-
-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, 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 LISTED COPYRIGHT HOLDER(S) 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.
+Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
+
+-------------------------------------------------------------------------------
+Files: *
+Copyright: 1998-2019,2020 Free Software Foundation, Inc.
+Licence: X11
+
+Files: aclocal.m4 package
+Copyright: 1996-2019,2020 by Thomas E. Dickey
+Licence: X11
+
+Files: doc/html/NCURSES-Programming-HOWTO.html
+Copyright: 2001 by Pradeep Padala
+Licence: X11
+
+ 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.
+
+-------------------------------------------------------------------------------
+Files: install-sh
+Copyright: 1994 X Consortium
+Licence: X11
+
+ 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, 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
+ X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+ TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of the X Consortium shall not
+ be used in advertising or otherwise to promote the sale, use or other deal-
+ ings in this Software without prior written authorization from the X Consor-
+ tium.
+
+-------------------------------------------------------------------------------
+Files: progs/tset.c ncurses/tinfo/read_termcap.c
+Copyright: 1980,1991,1992,1993 The Regents of the University of California.
+License: BSD
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
-- vile: txtmode file-encoding=utf-8
diff --git a/package/debian/ncurses6.lintian-overrides b/package/debian/ncurses6.lintian-overrides
new file mode 100644
index 000000000000..759fa7666eb3
--- /dev/null
+++ b/package/debian/ncurses6.lintian-overrides
@@ -0,0 +1,15 @@
+# This is intentional.
+ncurses6: package-name-doesnt-match-sonames libformw6-6 libmenuw6-6 libncurses++w6-6 libncursesw6-6 libpanelw6-6 libticw6-6 libtinfow6-6
+
+# This works around a bug in Debian's build-scripts.
+ncurses6: latest-debian-changelog-entry-changed-to-native
+
+ncurses6: hardening-no-fortify-functions usr/lib/libncurses++w6.so.6.1
+
+# This is intentional.
+ncurses6: binary-without-manpage
+ncurses6: non-dev-pkg-with-shlib-symlink
+ncurses6: embedded-library usr/lib/libtinfow6.so.6.1: ncurses
+ncurses6: postinst-must-call-ldconfig usr/lib/libtinfow6.so.6.1
+
+# vile: confmode
diff --git a/package/debian/ncurses6.triggers b/package/debian/ncurses6.triggers
new file mode 100644
index 000000000000..dd8660367847
--- /dev/null
+++ b/package/debian/ncurses6.triggers
@@ -0,0 +1 @@
+activate-noawait ldconfig
diff --git a/package/debian/ncursest6.lintian-overrides b/package/debian/ncursest6.lintian-overrides
new file mode 100644
index 000000000000..e8de0d6a718f
--- /dev/null
+++ b/package/debian/ncursest6.lintian-overrides
@@ -0,0 +1,15 @@
+# This is intentional.
+ncursest6: package-name-doesnt-match-sonames libformtw6-6 libmenutw6-6 libncurses++tw6-6 libncursestw6-6 libpaneltw6-6 libtictw6-6 libtinfotw6-6
+
+# This works around a bug in Debian's build-scripts.
+ncursest6: latest-debian-changelog-entry-changed-to-native
+
+ncursest6: hardening-no-fortify-functions usr/lib/libncurses++tw6.so.6.1
+
+# This is intentional.
+ncursest6: binary-without-manpage
+ncursest6: non-dev-pkg-with-shlib-symlink
+ncursest6: embedded-library usr/lib/libtinfotw6.so.6.1: ncurses
+ncursest6: postinst-must-call-ldconfig usr/lib/libtinfotw6.so.6.1
+
+# vile: confmode
diff --git a/package/debian/ncursest6.triggers b/package/debian/ncursest6.triggers
new file mode 100644
index 000000000000..dd8660367847
--- /dev/null
+++ b/package/debian/ncursest6.triggers
@@ -0,0 +1 @@
+activate-noawait ldconfig
diff --git a/package/debian/rules b/package/debian/rules
index e4cb1090f769..06c088ab3296 100755
--- a/package/debian/rules
+++ b/package/debian/rules
@@ -1,11 +1,15 @@
#!/usr/bin/make -f
-# MAde with the aid of dh_make, by Craig Small
+# Made with the aid of dh_make, by Craig Small
# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
# Some lines taken from debmake, by Cristoph Lameter.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
+# packages
+PACKAGES.indep = ncurses6-doc ncurses6-doc-html
+PACKAGES.arch = ncurses6 ncursest6
+
# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
@@ -14,11 +18,24 @@ DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
CC_NORMAL = -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion
CC_STRICT = $(CC_NORMAL) -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic
-MY_DIR=/usr/local/ncurses6
+MY_ABI=6
+MY_DIR=/usr
MYDATA=/usr/local/ncurses/share/terminfo
-BUILD_DIR=$(CURDIR)/debian/ncurses6
+NORMAL_DIR=$(CURDIR)/debian/ncurses$(MY_ABI)
+THREAD_DIR=$(CURDIR)/debian/ncursest$(MY_ABI)
+
+CFLAGS = $(shell dpkg-buildflags --get CFLAGS) $(CC_NORMAL)
+CXXFLAGS = $(shell dpkg-buildflags --get CXXFLAGS)
+CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS)
+LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS)
-CFLAGS = $(CC_NORMAL)
+ifneq ($(MY_DIR),/usr)
+ RPATH_ENV = RPATH_LIST=../lib:$(MY_DIR)/lib
+ RPATH_OPT = --enable-rpath
+else
+ RPATH_ENV =
+ RPATH_OPT = --disable-rpath --disable-rpath-hack
+endif
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
@@ -29,95 +46,203 @@ ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
INSTALL_PROGRAM += -s
endif
+verbose = # -v
-configure: configure-stamp
-configure-stamp:
- dh_testdir
-
- RPATH_LIST=../lib:$(MY_DIR)/lib \
- CFLAGS="$(CFLAGS)" ./configure \
+configure = \
+ $(RPATH_ENV) \
+ CFLAGS="$(CFLAGS)" \
+ CPPFLAGS="$(CPPFLAGS)" \
+ LDFLAGS="$(LDFLAGS)" ../../configure $(RPATH_OPT) \
--host=$(DEB_HOST_GNU_TYPE) \
--build=$(DEB_BUILD_GNU_TYPE) \
--prefix=$(MY_DIR) \
- --with-default-terminfo-dir=$(MYDATA) \
- --with-terminfo-dirs=$(MYDATA):/usr/share/terminfo \
--disable-echo \
--disable-getcap \
--disable-leaks \
--disable-macros \
+ --disable-overwrite \
+ --disable-relink \
--disable-termcap \
- --enable-const \
- --enable-ext-colors \
- --enable-ext-mouse \
--enable-hard-tabs \
- --enable-interop \
- --enable-rpath \
- --enable-sp-funcs \
+ --enable-opaque-curses \
+ --enable-opaque-form \
+ --enable-opaque-menu \
+ --enable-opaque-panel \
+ --enable-pc-files \
--enable-warnings \
+ --enable-wgetch-events \
--enable-widec \
+ --enable-xmc-glitch \
+ --program-suffix=$(MY_ABI) \
--verbose \
+ --with-abi-version=$(MY_ABI) \
+ --with-config-suffix=dev \
+ --with-cxx-shared \
+ --with-default-terminfo-dir=$(MYDATA) \
--with-develop \
+ --with-extra-suffix=$(MY_ABI) \
--with-shared \
+ --with-terminfo-dirs=$(MYDATA):/lib/terminfo:/usr/share/terminfo \
--with-termlib \
--with-ticlib \
--with-trace \
- --with-cxx-shared \
+ --with-versioned-syms \
--with-xterm-kbs=DEL \
--without-ada \
--without-debug \
--without-normal
- touch configure-stamp
+NCURSES6_DIR = $(CURDIR)/debian/ncurses6
+NCURSEST6_DIR = $(CURDIR)/debian/ncursest6
+
+.PHONY: all config build install binary clean config-indep config-arch \
+ build-indep build-arch install-indep install-arch binary-indep \
+ binary-arch
-build: build-stamp
-build-stamp: configure-stamp
+all: build
+
+config: config-indep config-arch
+build: build-indep build-arch
+install: install-indep install-arch
+binary: binary-indep binary-arch
+clean:
dh_testdir
+ dh_testroot
+ dh_clean $(verbose)
+ rm -rf t
- $(MAKE)
+config-indep: $(PACKAGES.indep:%=config-%-stamp)
+config-arch: $(PACKAGES.arch:%=config-%-stamp)
- touch build-stamp
+build-indep: $(PACKAGES.indep:%=build-%-stamp)
+build-arch: $(PACKAGES.arch:%=build-%-stamp)
-clean:
+install-indep: $(PACKAGES.indep:%=install-%-stamp)
+install-arch: $(PACKAGES.arch:%=install-%-stamp)
+
+config-ncurses6-stamp:
+ dh_testdir
+ rm -rf t/ncurses6
+ mkdir -p t/ncurses6
+ cd t/ncurses6; $(configure)
+ touch $@
+
+config-ncursest6-stamp:
+ dh_testdir
+ rm -rf t/ncursest6
+ mkdir -p t/ncursest6
+ cd t/ncursest6; $(configure) \
+ --enable-interop \
+ --enable-sp-funcs \
+ --program-suffix=t$(MY_ABI) \
+ --with-pthread
+ touch $@
+
+config-ncurses6-doc-stamp \
+config-ncurses6-doc-html-stamp: config-ncurses6-stamp
+ touch $@
+
+build-ncurses6-stamp: config-ncurses6-stamp
+ dh_testdir
+
+ $(MAKE) -C t/ncurses6
+
+ touch $@
+
+build-ncursest6-stamp: config-ncursest6-stamp
+ dh_testdir
+
+ $(MAKE) -C t/ncursest6
+
+ touch $@
+
+build-ncurses6-doc-stamp \
+build-ncurses6-doc-html-stamp: build-ncurses6-stamp
+ touch $@
+
+install-ncurses6-stamp: build-ncurses6-stamp
dh_testdir
dh_testroot
+ dh_installdirs $(verbose)
+ dh_prep $(verbose) -pncurses6
- [ ! -f makefile ] || $(MAKE) distclean
+ $(MAKE) -C t/ncurses6 install.libs install.progs DESTDIR=$(NCURSES6_DIR)
+ $(MAKE) -C t/ncurses6/test ncurses LOCAL_LIBDIR=$(MY_DIR)/lib
- rm -f configure-stamp build-stamp install-stamp
+ mv t/ncurses6/test/ncurses $(NCURSES6_DIR)$(MY_DIR)/bin/ncurses$(MY_ABI)
- dh_clean
+ touch $@
-install: install-stamp
-install-stamp: build-stamp
+install-ncursest6-stamp: build-ncursest6-stamp
dh_testdir
dh_testroot
- dh_clean -k
- dh_installdirs
+ dh_installdirs $(verbose)
+ dh_prep $(verbose) -pncursest6
+
+ $(MAKE) -C t/ncursest6 install.libs install.progs DESTDIR=$(NCURSEST6_DIR)
+ $(MAKE) -C t/ncursest6/test ncurses LOCAL_LIBDIR=$(MY_DIR)/lib
- $(MAKE) install.libs install.progs DESTDIR=$(BUILD_DIR)
+ mv t/ncursest6/test/ncurses $(NCURSEST6_DIR)$(MY_DIR)/bin/ncursest$(MY_ABI)
- ( cd test && make ncurses LOCAL_LIBDIR=$(MY_DIR)/lib )
- mv test/ncurses $(BUILD_DIR)$(MY_DIR)/bin/ncurses6
+ touch $@
+
+install-ncurses6-doc-stamp: build-ncurses6-stamp
+ dh_testdir
+ dh_testroot
+ dh_installdirs $(verbose)
+ dh_prep $(verbose) -pncurses6-doc
- touch install-stamp
+ $(MAKE) -C t/ncurses6 install.man DESTDIR=$(NCURSES6_DIR)-doc
+
+ touch $@
+
+HTML_DESTDIR=$(NCURSES6_DIR)-doc-html/usr/share/ncurses6-doc-html
+install-ncurses6-doc-html-stamp: build-ncurses6-stamp
+ dh_testdir
+ dh_testroot
+ dh_installdirs $(verbose)
+ dh_prep $(verbose) -pncurses6-doc-html
+
+ cd doc/html && find * -type d | sort | xargs -I{} mkdir -p -v $(HTML_DESTDIR)/{}
+ cd doc/html && find * -type f -name '*.html' | sort | xargs -I{} install -m 644 -p -v -T {} $(HTML_DESTDIR)/{}
+
+ touch $@
# Build architecture-independent files here.
-binary-indep: build install
-# No binary-indep target.
+binary-indep: install-indep
+ifneq ($(PACKAGES.indep),)
+ rm -f $(PACKAGES.indep:%=install-%-stamp)
+ dh_testdir
+ dh_testroot
+ dh_lintian $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_installdocs $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_installman $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_installexamples $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_installchangelogs $(verbose) $(PACKAGES.indep:%=-p%) NEWS
+ dh_compress $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_fixperms $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_installdeb $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_gencontrol $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_md5sums $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_builddeb $(verbose) $(PACKAGES.indep:%=-p%)
+endif
# Build architecture-dependent files here.
-binary-arch: build install
+binary-arch: install-arch
+ifneq ($(PACKAGES.arch),)
+ rm -f $(PACKAGES.arch:%=install-%-stamp)
dh_testdir
dh_testroot
- dh_installchangelogs NEWS
- dh_strip
- dh_compress
- dh_fixperms
- dh_installdeb
- dh_shlibdeps
- dh_gencontrol
- dh_md5sums
- dh_builddeb
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install install-stamp
+ dh_lintian $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_installdocs $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_installchangelogs $(verbose) $(PACKAGES.arch:%=-p%) NEWS
+ dh_strip $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_compress $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_fixperms $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_installdeb $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_makeshlibs $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_shlibdeps $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_gencontrol $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_md5sums $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_builddeb $(verbose) $(PACKAGES.arch:%=-p%)
+endif
diff --git a/package/debian/source/format b/package/debian/source/format
index 163aaf8d82b6..89ae9db8f88b 100644
--- a/package/debian/source/format
+++ b/package/debian/source/format
@@ -1 +1 @@
-3.0 (quilt)
+3.0 (native)
diff --git a/package/debian/watch b/package/debian/watch
index 945a9962419f..f6b3987e0dda 100644
--- a/package/debian/watch
+++ b/package/debian/watch
@@ -1,4 +1,4 @@
version=3
-opts=passive ftp://invisible-island.net/ncurses/current/ncurses\.tar.gz \
+opts=passive ftp://ftp.invisible-island.net/ncurses/current/ncurses\.tar.gz \
debian uupdate
diff --git a/package/mingw-ncurses.nsi b/package/mingw-ncurses.nsi
index 81463c7d3606..0c89bccc321b 100644
--- a/package/mingw-ncurses.nsi
+++ b/package/mingw-ncurses.nsi
@@ -1,4 +1,4 @@
-; $Id: mingw-ncurses.nsi,v 1.28 2014/02/22 16:55:12 tom Exp $
+; $Id: mingw-ncurses.nsi,v 1.370 2020/01/18 10:27:03 tom Exp $
; TODO add examples
; TODO bump ABI to 6
@@ -7,10 +7,10 @@
!define APPNAME "ncurses"
!define EXENAME "ncurses.exe"
-!define VERSION_MAJOR "5"
-!define VERSION_MINOR "9"
-!define VERSION_YYYY "2014"
-!define VERSION_MMDD "0222"
+!define VERSION_MAJOR "6"
+!define VERSION_MINOR "1"
+!define VERSION_YYYY "2020"
+!define VERSION_MMDD "0118"
!define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
!define MY_ABI "5"
diff --git a/package/mingw-ncurses.spec b/package/mingw-ncurses.spec
index 2e86c17f368e..e663c489e8a6 100644
--- a/package/mingw-ncurses.spec
+++ b/package/mingw-ncurses.spec
@@ -2,12 +2,12 @@
Summary: shared libraries for terminal handling
Name: mingw32-ncurses6
-Version: 5.9
-Release: 20140222
+Version: 6.1
+Release: 20200118
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz
-# URL: http://invisible-island.net/ncurses/
+# URL: https://invisible-island.net/ncurses/
BuildRequires: mingw32-filesystem >= 95
BuildRequires: mingw32-gcc
@@ -17,6 +17,8 @@ BuildRequires: mingw64-filesystem >= 95
BuildRequires: mingw64-gcc
BuildRequires: mingw64-binutils
+%global MY_ABI 6
+
%define CC_NORMAL -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion
%define CC_STRICT %{CC_NORMAL} -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic
@@ -37,38 +39,46 @@ Cross-compiling support for ncurses to mingw64.
The ncurses library routines are a terminal-independent method of
updating character screens with reasonable optimization.
-This package is used for testing ABI 6 with cross-compiles to MinGW.
+This package is used for testing ABI %{MY_ABI} with cross-compiles to MinGW.
%prep
%define CFG_OPTS \\\
- --disable-echo \\\
--disable-db-install \\\
+ --disable-echo \\\
--disable-getcap \\\
--disable-hard-tabs \\\
--disable-leaks \\\
--disable-macros \\\
--disable-overwrite \\\
--disable-termcap \\\
- --enable-const \\\
- --enable-ext-colors \\\
- --enable-ext-mouse \\\
--enable-interop \\\
+ --enable-opaque-curses \\\
+ --enable-opaque-form \\\
+ --enable-opaque-menu \\\
+ --enable-opaque-panel \\\
+ --enable-pc-files \\\
--enable-sp-funcs \\\
--enable-term-driver \\\
--enable-warnings \\\
+ --enable-wgetch-events \\\
--enable-widec \\\
+ --with-config-suffix=dev \\\
--verbose \\\
--with-cxx-shared \\\
--with-develop \\\
- --with-fallbacks=unknown,rxvt \\\
+ --with-fallbacks=unknown,xterm \\\
+ --with-tic-path=/usr/bin/tic%{MY_ABI} \\\
+ --with-infocmp-path=/usr/bin/infocmp%{MY_ABI} \\\
+ --with-install-prefix=$RPM_BUILD_ROOT \\\
+ --with-pc-suffix=%{MY_ABI} \\\
+ --with-pcre2 \\\
--with-shared \\\
--with-tparm-arg=intptr_t \\\
--with-trace \\\
--with-xterm-kbs=DEL \\\
--without-ada \\\
--without-debug \\\
- --with-install-prefix=$RPM_BUILD_ROOT \\\
--without-manpages \\\
--without-progs \\\
--without-tests
@@ -81,7 +91,8 @@ mkdir BUILD-W32
pushd BUILD-W32
CFLAGS="%{CC_NORMAL}" \
CC=%{mingw32_cc} \
-%mingw32_configure %{CFG_OPTS}
+%mingw32_configure %{CFG_OPTS} \
+ --with-pkg-config-libdir=%{mingw32_libdir}/pkgconfig
make
popd
@@ -89,38 +100,64 @@ mkdir BUILD-W64
pushd BUILD-W64
CFLAGS="%{CC_NORMAL}" \
CC=%{mingw64_cc} \
-%mingw64_configure %{CFG_OPTS}
+%mingw64_configure %{CFG_OPTS} \
+ --with-pkg-config-libdir=%{mingw64_libdir}/pkgconfig
make
popd
%install
rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT%{_bindir}
+
pushd BUILD-W32
-%{mingw32_make} install
+%{mingw32_make} install.libs
+for name in $RPM_BUILD_ROOT%{mingw32_bindir}/*-config; \
+ do \
+ base=`basename $name`; \
+ ln -v $name $RPM_BUILD_ROOT%{_bindir}/%{mingw32_target}-$base; \
+ done
popd
pushd BUILD-W64
-%{mingw64_make} install
+%{mingw64_make} install.libs
+for name in $RPM_BUILD_ROOT%{mingw64_bindir}/*-config; \
+ do \
+ base=`basename $name`; \
+ ln -v $name $RPM_BUILD_ROOT%{_bindir}/%{mingw64_target}-$base; \
+ done
popd
%clean
rm -rf $RPM_BUILD_ROOT
-%files
-%defattr(-,root,root,-)
-
%files -n mingw32-ncurses6
+%defattr(-,root,root,-)
+%{_bindir}/%{mingw32_target}-*
%{mingw32_bindir}/*
%{mingw32_includedir}/*
%{mingw32_libdir}/*
%files -n mingw64-ncurses6
+%defattr(-,root,root,-)
+%{_bindir}/%{mingw64_target}-*
%{mingw64_bindir}/*
%{mingw64_includedir}/*
%{mingw64_libdir}/*
%changelog
+* Sun Jun 30 2019 Thomas E. Dickey
+- use tic-path and infocmp-path options for fallbacks
+
+* Sat Feb 10 2018 Thomas E. Dickey
+- add several development features
+
+* Tue Dec 26 2017 Thomas E. Dickey
+- add --with-config-suffix option
+
+* Sat Sep 20 2014 Thomas E. Dickey
+- adjust install-rules for ncurses*-config
+
* Sat Aug 03 2013 Thomas E. Dickey
- initial version, using mingw-pdcurses package as a guide.
diff --git a/package/ncurses.map b/package/ncurses.map
new file mode 100644
index 000000000000..c3360dc3a9ba
--- /dev/null
+++ b/package/ncurses.map
@@ -0,0 +1,1211 @@
+# $Id: ncurses.map,v 1.50 2019/12/14 23:28:36 tom Exp $
+# script for shared library symbol-versioning using ld
+#
+# This file was generated by ncu-mapsyms
+# Configure options (5.0.19991023)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.1.20000708)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.2.20001021)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.3.20021019)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.4.20040208)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.5.20051010)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.6.20061217)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.7.20081102)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.8.20110226)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20110404)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20150530)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace
+# Configure options (6.0.current)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace
+
+NCURSES_5.0.19991023 {
+ global:
+ COLORS;
+ COLOR_PAIR;
+ COLOR_PAIRS;
+ ESCDELAY;
+ PAIR_NUMBER;
+ TYPE_ALNUM;
+ TYPE_ALPHA;
+ TYPE_ENUM;
+ TYPE_INTEGER;
+ TYPE_IPV4;
+ TYPE_NUMERIC;
+ TYPE_REGEXP;
+ _nc_Default_Field; # deprecated in ABI6
+ _nc_Default_Form; # deprecated in ABI6
+ _nc_free_and_exit;
+ _nc_has_mouse; # deprecated in ABI6
+ _nc_panelhook;
+ _nc_ripoffline;
+ addch;
+ addchnstr;
+ addchstr;
+ addnstr;
+ addstr;
+ attr_get;
+ attr_off;
+ attr_on;
+ attr_set;
+ attroff;
+ attron;
+ attrset;
+ beep;
+ bkgd;
+ bkgdset;
+ border;
+ bottom_panel;
+ box;
+ can_change_color;
+ chgat;
+ clear;
+ clearok;
+ clrtobot;
+ clrtoeol;
+ color_content;
+ color_set;
+ copywin;
+ current_field;
+ current_item;
+ data_ahead;
+ data_behind;
+ del_panel;
+ delch;
+ deleteln;
+ delscreen;
+ delwin;
+ derwin;
+ doupdate;
+ dup_field;
+ dupwin;
+ dynamic_field_info;
+ echo;
+ echochar;
+ endwin;
+ field_arg;
+ field_back;
+ field_buffer;
+ field_count;
+ field_fore;
+ field_index;
+ field_info;
+ field_init;
+ field_just;
+ field_opts;
+ field_opts_off;
+ field_opts_on;
+ field_pad;
+ field_status;
+ field_term;
+ field_type;
+ field_userptr;
+ filter;
+ flash;
+ form_driver;
+ form_fields;
+ form_init;
+ form_opts;
+ form_opts_off;
+ form_opts_on;
+ form_page;
+ form_request_by_name;
+ form_request_name;
+ form_sub;
+ form_term;
+ form_userptr;
+ form_win;
+ free_field;
+ free_fieldtype;
+ free_form;
+ free_item;
+ free_menu;
+ getbkgd;
+ getch;
+ getmouse;
+ getnstr;
+ getstr;
+ getwin;
+ has_colors;
+ hide_panel;
+ hline;
+ immedok;
+ inch;
+ inchnstr;
+ inchstr;
+ init_color;
+ init_pair;
+ initscr;
+ innstr;
+ insch;
+ insdelln;
+ insertln;
+ insnstr;
+ insstr;
+ instr;
+ is_linetouched;
+ is_wintouched;
+ isendwin;
+ item_count;
+ item_description;
+ item_index;
+ item_init;
+ item_name;
+ item_opts;
+ item_opts_off;
+ item_opts_on;
+ item_term;
+ item_userptr;
+ item_value;
+ item_visible;
+ leaveok;
+ link_field;
+ link_fieldtype;
+ mcprint;
+ menu_back;
+ menu_driver;
+ menu_fore;
+ menu_format;
+ menu_grey;
+ menu_init;
+ menu_items;
+ menu_mark;
+ menu_opts;
+ menu_opts_off;
+ menu_opts_on;
+ menu_pad;
+ menu_pattern;
+ menu_request_by_name;
+ menu_request_name;
+ menu_spacing;
+ menu_sub;
+ menu_term;
+ menu_userptr;
+ menu_win;
+ mouse_trafo;
+ mouseinterval;
+ mousemask;
+ move;
+ move_field;
+ move_panel;
+ mvaddch;
+ mvaddchnstr;
+ mvaddchstr;
+ mvaddnstr;
+ mvaddstr;
+ mvchgat;
+ mvcur;
+ mvdelch;
+ mvderwin;
+ mvgetch;
+ mvgetnstr;
+ mvgetstr;
+ mvhline;
+ mvinch;
+ mvinchnstr;
+ mvinchstr;
+ mvinnstr;
+ mvinsch;
+ mvinsnstr;
+ mvinsstr;
+ mvinstr;
+ mvprintw;
+ mvscanw;
+ mvvline;
+ mvwaddch;
+ mvwaddchnstr;
+ mvwaddchstr;
+ mvwaddnstr;
+ mvwaddstr;
+ mvwchgat;
+ mvwdelch;
+ mvwgetch;
+ mvwgetnstr;
+ mvwgetstr;
+ mvwhline;
+ mvwin;
+ mvwinch;
+ mvwinchnstr;
+ mvwinchstr;
+ mvwinnstr;
+ mvwinsch;
+ mvwinsnstr;
+ mvwinsstr;
+ mvwinstr;
+ mvwprintw;
+ mvwscanw;
+ mvwvline;
+ new_field;
+ new_fieldtype;
+ new_form;
+ new_item;
+ new_menu;
+ new_page;
+ new_panel;
+ newpad;
+ newterm;
+ newwin;
+ nl;
+ noecho;
+ nonl;
+ overlay;
+ overwrite;
+ pair_content;
+ panel_above;
+ panel_below;
+ panel_hidden;
+ panel_userptr;
+ panel_window;
+ pechochar;
+ pnoutrefresh;
+ pos_form_cursor;
+ pos_menu_cursor;
+ post_form;
+ post_menu;
+ prefresh;
+ printw;
+ putwin;
+ redrawwin;
+ refresh;
+ replace_panel;
+ resizeterm;
+ restartterm;
+ ripoffline;
+ scale_form;
+ scale_menu;
+ scanw;
+ scr_dump;
+ scr_init;
+ scr_restore;
+ scr_set;
+ scrl;
+ scroll;
+ scrollok;
+ set_current_field;
+ set_current_item;
+ set_field_back;
+ set_field_buffer;
+ set_field_fore;
+ set_field_init;
+ set_field_just;
+ set_field_opts;
+ set_field_pad;
+ set_field_status;
+ set_field_term;
+ set_field_type;
+ set_field_userptr;
+ set_fieldtype_arg;
+ set_fieldtype_choice;
+ set_form_fields;
+ set_form_init;
+ set_form_opts;
+ set_form_page;
+ set_form_sub;
+ set_form_term;
+ set_form_userptr;
+ set_form_win;
+ set_item_init;
+ set_item_opts;
+ set_item_term;
+ set_item_userptr;
+ set_item_value;
+ set_max_field;
+ set_menu_back;
+ set_menu_fore;
+ set_menu_format;
+ set_menu_grey;
+ set_menu_init;
+ set_menu_items;
+ set_menu_mark;
+ set_menu_opts;
+ set_menu_pad;
+ set_menu_pattern;
+ set_menu_spacing;
+ set_menu_sub;
+ set_menu_term;
+ set_menu_userptr;
+ set_menu_win;
+ set_new_page;
+ set_panel_userptr;
+ set_term;
+ set_top_row;
+ setscrreg;
+ show_panel;
+ slk_attr;
+ slk_attr_off;
+ slk_attr_on;
+ slk_attr_set;
+ slk_attroff;
+ slk_attron;
+ slk_attrset;
+ slk_clear;
+ slk_color;
+ slk_init;
+ slk_label;
+ slk_noutrefresh;
+ slk_refresh;
+ slk_restore;
+ slk_set;
+ slk_touch;
+ standend;
+ standout;
+ start_color;
+ subpad;
+ subwin;
+ syncok;
+ termattrs;
+ timeout;
+ top_panel;
+ top_row;
+ ungetch;
+ ungetmouse;
+ unpost_form;
+ unpost_menu;
+ untouchwin;
+ update_panels;
+ use_default_colors;
+ vid_attr;
+ vidattr;
+ vidputs;
+ vline;
+ vw_printw;
+ vw_scanw;
+ vwprintw;
+ vwscanw;
+ waddch;
+ waddchnstr;
+ waddchstr;
+ waddnstr;
+ waddstr;
+ wattr_get;
+ wattr_off;
+ wattr_on;
+ wattr_set;
+ wattroff;
+ wattron;
+ wattrset;
+ wbkgd;
+ wbkgdset;
+ wborder;
+ wchgat;
+ wclear;
+ wclrtobot;
+ wclrtoeol;
+ wcolor_set;
+ wcursyncup;
+ wdelch;
+ wdeleteln;
+ wechochar;
+ wenclose;
+ werase;
+ wgetch;
+ wgetnstr;
+ wgetstr;
+ whline;
+ winch;
+ winchnstr;
+ winchstr;
+ winnstr;
+ winsch;
+ winsdelln;
+ winsertln;
+ winsnstr;
+ winsstr;
+ winstr;
+ wmouse_trafo;
+ wmove;
+ wnoutrefresh;
+ wprintw;
+ wredrawln;
+ wrefresh;
+ wresize;
+ wscanw;
+ wscrl;
+ wsetscrreg;
+ wstandend;
+ wstandout;
+ wsyncdown;
+ wsyncup;
+ wtouchln;
+ wvline;
+ local:
+ _nc_Calculate_Item_Length_and_Width;
+ _nc_Connect_Items;
+ _nc_Copy_Argument;
+ _nc_Copy_Type;
+ _nc_Default_FieldType;
+ _nc_Default_Item;
+ _nc_Default_Menu;
+ _nc_Disconnect_Items;
+ _nc_Draw_Menu;
+ _nc_First_Active_Field;
+ _nc_Free_Argument;
+ _nc_Free_Type;
+ _nc_Internal_Validation;
+ _nc_Link_Items;
+ _nc_Make_Argument;
+ _nc_Match_Next_Character_In_Item_Name;
+ _nc_New_TopRow_and_CurrentItem;
+ _nc_Position_Form_Cursor;
+ _nc_Post_Item;
+ _nc_Refresh_Current_Field;
+ _nc_Set_Current_Field;
+ _nc_Set_Form_Page;
+ _nc_Show_Menu;
+ _nc_Synchronize_Attributes;
+ _nc_Synchronize_Options;
+ _nc_background;
+ _nc_do_color;
+ _nc_expanded;
+ _nc_freewin;
+ _nc_hash_map;
+ _nc_lib_traceatr;
+ _nc_lib_tracedmp;
+ _nc_lib_tracemouse;
+ _nc_make_oldhash;
+ _nc_makenew;
+ _nc_memmove;
+ _nc_menu_cursor_pos;
+ _nc_msec_cost;
+ _nc_mvcur_init;
+ _nc_mvcur_resume;
+ _nc_mvcur_wrap;
+ _nc_oldnums;
+ _nc_outstr;
+ _nc_printf_string;
+ _nc_render;
+ _nc_screen_init;
+ _nc_screen_resume;
+ _nc_screen_wrap;
+ _nc_scroll_oldhash;
+ _nc_scroll_optimize;
+ _nc_scroll_window;
+ _nc_scrolln;
+ _nc_setupscreen;
+ _nc_sigaction;
+ _nc_signal_handler;
+ _nc_slk_format;
+ _nc_slk_initialize;
+ _nc_synchook;
+ _nc_trace_xnames;
+ _nc_vsscanf;
+ _nc_waddch_nosync;
+};
+
+NCURSES_5.1.20000708 {
+ global:
+ assume_default_colors;
+ erase;
+ touchline;
+ touchwin;
+} NCURSES_5.0.19991023;
+
+NCURSES_5.3.20021019 {
+ global:
+ is_term_resized;
+ resize_term;
+ local:
+ _nc_reset_colors;
+ _nc_varargs;
+ _nc_wgetch;
+} NCURSES_5.1.20000708;
+
+NCURSES_5.4.20040208 {
+ global:
+ _nc_optimize_enable;
+ local:
+ _nc_Touchline;
+ _nc_Touchpan;
+ _nc_Wnoutrefresh;
+ _nc_dPanel;
+ _nc_dStack;
+ _nc_fifo_dump;
+ _nc_insert_ch;
+ _nc_linedump;
+ _nc_my_visbuf;
+ _tracedump;
+ _tracemouse;
+} NCURSES_5.3.20021019;
+
+NCURSES_5.5.20051010 {
+ local:
+ _nc_Calculate_Text_Width;
+ _nc_retrace_field;
+ _nc_retrace_field_ptr;
+ _nc_retrace_field_type;
+ _nc_retrace_form;
+ _nc_retrace_form_hook;
+ _nc_retrace_item;
+ _nc_retrace_item_opts;
+ _nc_retrace_item_ptr;
+ _nc_retrace_menu;
+ _nc_retrace_menu_hook;
+ _nc_retrace_menu_opts;
+ _nc_retrace_panel;
+} NCURSES_5.4.20040208;
+
+NCURSES_5.6.20061217 {
+ global:
+ getbegx;
+ getbegy;
+ getcurx;
+ getcury;
+ getmaxx;
+ getmaxy;
+ getparx;
+ getpary;
+ nofilter;
+ use_legacy_coding;
+ wgetch_events;
+ wgetnstr_events;
+} NCURSES_5.5.20051010;
+
+NCURSES_5.7.20081102 {
+ global:
+ getattrs;
+ is_cleared;
+ is_idcok;
+ is_idlok;
+ is_immedok;
+ is_keypad;
+ is_leaveok;
+ is_nodelay;
+ is_notimeout;
+ is_scrollok;
+ is_syncok;
+ set_escdelay;
+ use_screen;
+ use_window;
+ wgetparent;
+ wgetscrreg;
+ local:
+ _nc_tracemouse;
+ _nc_ungetch;
+} NCURSES_5.6.20061217;
+
+NCURSES_5.8.20110226 {
+ global:
+ _nc_panelhook_sp;
+ assume_default_colors_sp;
+ beep_sp;
+ can_change_color_sp;
+ ceiling_panel;
+ color_content_sp;
+ doupdate_sp;
+ echo_sp;
+ endwin_sp;
+ filter_sp;
+ flash_sp;
+ get_escdelay;
+ get_escdelay_sp;
+ getmouse_sp;
+ getwin_sp;
+ ground_panel;
+ has_colors_sp;
+ has_mouse;
+ has_mouse_sp;
+ init_color_sp;
+ init_pair_sp;
+ is_pad;
+ is_subwin;
+ is_term_resized_sp;
+ isendwin_sp;
+ mcprint_sp;
+ mouseinterval_sp;
+ mousemask_sp;
+ mvcur_sp;
+ new_form_sp;
+ new_menu_sp;
+ newpad_sp;
+ newterm_sp;
+ newwin_sp;
+ nl_sp;
+ noecho_sp;
+ nofilter_sp;
+ nonl_sp;
+ pair_content_sp;
+ resize_term_sp;
+ resizeterm_sp;
+ restartterm_sp;
+ ripoffline_sp;
+ scr_init_sp;
+ scr_restore_sp;
+ scr_set_sp;
+ set_escdelay_sp;
+ slk_attr_set_sp;
+ slk_attr_sp;
+ slk_attroff_sp;
+ slk_attron_sp;
+ slk_attrset_sp;
+ slk_clear_sp;
+ slk_color_sp;
+ slk_init_sp;
+ slk_label_sp;
+ slk_noutrefresh_sp;
+ slk_refresh_sp;
+ slk_restore_sp;
+ slk_set_sp;
+ slk_touch_sp;
+ start_color_sp;
+ termattrs_sp;
+ ungetch_sp;
+ ungetmouse_sp;
+ update_panels_sp;
+ use_default_colors_sp;
+ use_legacy_coding_sp;
+ vidattr_sp;
+ vidputs_sp;
+ local:
+ _nc_TYPE_ALNUM;
+ _nc_TYPE_ALPHA;
+ _nc_TYPE_ENUM;
+ _nc_TYPE_INTEGER;
+ _nc_TYPE_IPV4;
+ _nc_TYPE_NUMERIC;
+ _nc_TYPE_REGEXP;
+ _nc_curscr_of;
+ _nc_do_color_sp;
+ _nc_form_cursor;
+ _nc_format_slks;
+ _nc_free_and_exit_sp;
+ _nc_freeall_sp;
+ _nc_fty_generic;
+ _nc_generic_fieldtype;
+ _nc_get_fieldbuffer;
+ _nc_hash_map_sp;
+ _nc_linedump_sp;
+ _nc_make_oldhash_sp;
+ _nc_makenew_sp;
+ _nc_msec_cost_sp;
+ _nc_mvcur_init_sp;
+ _nc_mvcur_resume_sp;
+ _nc_mvcur_wrap_sp;
+ _nc_newscr_of;
+ _nc_printf_string_sp;
+ _nc_reset_colors_sp;
+ _nc_retrace_mmask_t;
+ _nc_ripoffline_sp;
+ _nc_screen_init_sp;
+ _nc_screen_resume_sp;
+ _nc_screen_wrap_sp;
+ _nc_scroll_oldhash_sp;
+ _nc_scroll_optimize_sp;
+ _nc_scrolln_sp;
+ _nc_set_generic_fieldtype;
+ _nc_setupscreen_sp;
+ _nc_stdscr_of;
+} NCURSES_5.7.20081102;
+
+NCURSES_5.9.20150530 {
+ global:
+ wgetdelay;
+ local:
+ _nc_mvcur;
+ _nc_mvcur_sp;
+ _nc_trace_mmask_t;
+} NCURSES_5.8.20110226;
+
+NCURSES_6.1.20171230 {
+ global:
+ alloc_pair;
+ alloc_pair_sp;
+ extended_color_content;
+ extended_color_content_sp;
+ extended_pair_content;
+ extended_pair_content_sp;
+ find_pair;
+ find_pair_sp;
+ free_pair;
+ free_pair_sp;
+ init_extended_color;
+ init_extended_color_sp;
+ init_extended_pair;
+ init_extended_pair_sp;
+ reset_color_pairs;
+ reset_color_pairs_sp;
+ unfocus_current_field;
+ local:
+ _nc_Unset_Current_Field;
+ _nc_change_pair;
+ _nc_init_color;
+ _nc_init_pair;
+ _nc_pair_content;
+ _nc_reset_color_pair;
+ _nc_set_color_pair;
+} NCURSES_5.9.20150530;
+
+NCURSES_6.1.current {
+ global:
+ exit_curses;
+ local:
+ _*;
+} NCURSES_6.1.20171230;
+
+NCURSES_TIC_5.0.19991023 {
+ global:
+ _nc_capcmp;
+ _nc_check_termtype;
+ _nc_entry_match;
+ _nc_infotocap;
+ _nc_read_entry_source;
+ _nc_reset_input;
+ _nc_resolve_uses;
+ _nc_set_writedir;
+ _nc_syntax;
+ _nc_tic_expand;
+ _nc_tic_written;
+ _nc_trans_string;
+ _nc_write_entry;
+ local:
+ _nc_captoinfo;
+ _nc_comment_end;
+ _nc_comment_start;
+ _nc_copy_entry;
+ _nc_curr_file_pos;
+ _nc_curr_token;
+ _nc_get_token;
+ _nc_init_entry;
+ _nc_merge_entry;
+ _nc_panic_mode;
+ _nc_parse_entry;
+ _nc_push_token;
+ _nc_save_str;
+ _nc_start_line;
+ _nc_wrap_entry;
+};
+
+NCURSES_TIC_5.1.20000708 {
+ global:
+ _nc_disable_period;
+} NCURSES_TIC_5.0.19991023;
+
+NCURSES_TIC_5.5.20051010 {
+ global:
+ _nc_alloc_entry_leaks;
+ _nc_captoinfo_leaks;
+ _nc_check_termtype2;
+ _nc_comp_scan_leaks;
+ _nc_resolve_uses2;
+} NCURSES_TIC_5.1.20000708;
+
+NCURSES_TIC_5.7.20081102 {
+ global:
+ _nc_free_tic;
+ local:
+ _nc_comp_captab_leaks;
+ _nc_leaks_tic;
+} NCURSES_TIC_5.5.20051010;
+
+NCURSES_TIC_5.9.20150530 {
+ global:
+ _nc_strict_bsd;
+} NCURSES_TIC_5.7.20081102;
+
+NCURSES_TIC_6.1.20171230 {
+ global:
+ _nc_read_entry2;
+ _nc_write_object;
+ local:
+ _*;
+} NCURSES_TIC_5.9.20150530;
+
+NCURSES_TINFO_5.0.19991023 {
+ global:
+ BC;
+ COLS;
+ LINES;
+ PC;
+ SP;
+ TABSIZE;
+ UP;
+ _nc_access;
+ _nc_add_to_try;
+ _nc_copy_termtype;
+ _nc_curr_col;
+ _nc_curr_line;
+ _nc_doalloc;
+ _nc_err_abort;
+ _nc_fallback;
+ _nc_find_entry;
+ _nc_find_type_entry;
+ _nc_first_name;
+ _nc_free_entries;
+ _nc_free_termtype;
+ _nc_free_tparm;
+ _nc_freeall;
+ _nc_get_hash_table;
+ _nc_get_table;
+ _nc_get_tty_mode;
+ _nc_get_type;
+ _nc_getenv_num;
+ _nc_head;
+ _nc_home_terminfo;
+ _nc_info_hash_table;
+ _nc_init_acs;
+ _nc_keep_tic_dir;
+ _nc_keypad;
+ _nc_name_match;
+ _nc_outch;
+ _nc_read_entry;
+ _nc_read_file_entry;
+ _nc_screen_chain;
+ _nc_set_buffer;
+ _nc_set_source;
+ _nc_set_tty_mode;
+ _nc_set_type;
+ _nc_suppress_warnings;
+ _nc_syserr_abort;
+ _nc_tail;
+ _nc_tic_dir;
+ _nc_timed_wait;
+ _nc_tinfo_fkeysf;
+ _nc_trace_buf;
+ _nc_tracing;
+ _nc_update_screensize;
+ _nc_visbuf;
+ _nc_visbuf2;
+ _nc_warning;
+ _tracechar;
+ acs_map;
+ baudrate;
+ boolcodes;
+ boolfnames;
+ boolnames;
+ cbreak;
+ cur_term;
+ curs_set;
+ curscr;
+ curses_version;
+ def_prog_mode;
+ def_shell_mode;
+ define_key;
+ del_curterm;
+ delay_output;
+ erasechar;
+ flushinp;
+ halfdelay;
+ has_ic;
+ has_il;
+ has_key;
+ idcok;
+ idlok;
+ intrflush;
+ keybound;
+ keyname;
+ keyok;
+ keypad;
+ killchar;
+ longname;
+ meta;
+ napms;
+ newscr;
+ nocbreak;
+ nodelay;
+ noqiflush;
+ noraw;
+ notimeout;
+ numcodes;
+ numfnames;
+ numnames;
+ ospeed;
+ putp;
+ qiflush;
+ raw;
+ reset_prog_mode;
+ reset_shell_mode;
+ resetty;
+ savetty;
+ set_curterm;
+ setupterm;
+ stdscr;
+ strcodes;
+ strfnames;
+ strnames;
+ termname;
+ tgetent;
+ tgetflag;
+ tgetnum;
+ tgetstr;
+ tgoto;
+ tigetflag;
+ tigetnum;
+ tigetstr;
+ tparm;
+ tputs;
+ trace;
+ ttytype;
+ typeahead;
+ unctrl;
+ use_env;
+ wtimeout;
+ local:
+ _nc_baudrate;
+ _nc_cap_hash_table;
+ _nc_capalias_table;
+ _nc_expand_try;
+ _nc_infoalias_table;
+ _nc_init_keytry;
+ _nc_key_names;
+ _nc_nulls_sent;
+ _nc_ospeed;
+ _nc_read_termcap;
+ _nc_read_termcap_entry;
+ _nc_remove_key;
+ _nc_remove_string;
+ _nc_trace_tries;
+ _nc_tracebits;
+};
+
+NCURSES_TINFO_5.1.20000708 {
+ global:
+ _nc_align_termtype;
+ _nc_flush;
+ _nc_tinfo_fkeys;
+ _nc_user_definable;
+ use_extended_names;
+} NCURSES_TINFO_5.0.19991023;
+
+NCURSES_TINFO_5.2.20001021 {
+ global:
+ _nc_basename;
+ _nc_env_access;
+ _nc_safe_strcat;
+ _nc_safe_strcpy;
+ _nc_str_copy;
+ _nc_str_init;
+ _nc_str_null;
+} NCURSES_TINFO_5.1.20000708;
+
+NCURSES_TINFO_5.3.20021019 {
+ global:
+ _nc_rootname;
+ _nc_tparm_err;
+ _nc_visbufn;
+} NCURSES_TINFO_5.2.20001021;
+
+NCURSES_TINFO_5.4.20040208 {
+ global:
+ _nc_get_locale;
+ _nc_locale_breaks_acs;
+ _nc_outchars;
+ _nc_pathlast;
+ _nc_retrace_attr_t;
+ _nc_retrace_bool;
+ _nc_retrace_chtype;
+ _nc_retrace_int;
+ _nc_retrace_ptr;
+ _nc_retrace_sp;
+ _nc_retrace_unsigned;
+ _nc_retrace_win;
+ _nc_tparm_analyze;
+ _nc_tputs_trace;
+ _nc_trace_bufcat;
+ _nc_unicode_locale;
+ _traceattr;
+ _traceattr2;
+ _tracechtype;
+ _tracechtype2;
+ _tracef;
+ key_defined;
+ local:
+ _nc_altcharset_name;
+ _nc_trace_ttymode;
+} NCURSES_TINFO_5.3.20021019;
+
+NCURSES_TINFO_5.5.20051010 {
+ global:
+ _nc_get_source;
+ _nc_retrace_cptr;
+ _nc_retrace_cvoid_ptr;
+ _nc_retrace_void_ptr;
+ _nc_setupterm;
+ _nc_trim_sgr0;
+ local:
+ _nc_delink_entry;
+ _nc_free_entry;
+} NCURSES_TINFO_5.4.20040208;
+
+NCURSES_TINFO_5.6.20061217 {
+ global:
+ _nc_db_close;
+ _nc_db_first;
+ _nc_db_have_data;
+ _nc_db_next;
+ _nc_db_open;
+ _nc_db_put;
+ _nc_eventlist_timeout;
+ _nc_first_db;
+ _nc_handle_sigwinch;
+ _nc_is_abs_path;
+ _nc_is_dir_path;
+ _nc_is_file_path;
+ _nc_keyname_leaks;
+ _nc_last_db;
+ _nc_next_db;
+ _nc_read_termtype;
+ _nc_tgetent_leaks;
+ _nc_viscbuf;
+ local:
+ _nc_db_get;
+ _nc_db_have_index;
+ _nc_hashed_db;
+ _nc_viscbuf2;
+} NCURSES_TINFO_5.5.20051010;
+
+NCURSES_TINFO_5.7.20081102 {
+ global:
+ _nc_free_tinfo;
+ _nc_get_alias_table;
+ _nc_get_screensize;
+ _nc_globals;
+ _nc_leaks_tinfo;
+ _nc_prescreen;
+ _nc_screen_of;
+ _nc_set_no_padding;
+ _nc_tracechar;
+ set_tabsize;
+ local:
+ _nc_keyname;
+ _nc_unctrl;
+} NCURSES_TINFO_5.6.20061217;
+
+NCURSES_TINFO_5.8.20110226 {
+ global:
+ _nc_flush_sp;
+ _nc_get_tty_mode_sp;
+ _nc_init_acs_sp;
+ _nc_outc_wrapper;
+ _nc_outch_sp;
+ _nc_putp;
+ _nc_putp_flush;
+ _nc_putp_flush_sp;
+ _nc_putp_sp;
+ _nc_retrace_int_attr_t;
+ _nc_set_buffer_sp;
+ _nc_set_tty_mode_sp;
+ baudrate_sp;
+ cbreak_sp;
+ curs_set_sp;
+ def_prog_mode_sp;
+ def_shell_mode_sp;
+ define_key_sp;
+ del_curterm_sp;
+ delay_output_sp;
+ erasechar_sp;
+ flushinp_sp;
+ halfdelay_sp;
+ has_ic_sp;
+ has_il_sp;
+ has_key_sp;
+ intrflush_sp;
+ key_defined_sp;
+ keybound_sp;
+ keyname_sp;
+ keyok_sp;
+ killchar_sp;
+ longname_sp;
+ napms_sp;
+ new_prescr;
+ nocbreak_sp;
+ noqiflush_sp;
+ noraw_sp;
+ putp_sp;
+ qiflush_sp;
+ raw_sp;
+ reset_prog_mode_sp;
+ reset_shell_mode_sp;
+ resetty_sp;
+ savetty_sp;
+ set_curterm_sp;
+ set_tabsize_sp;
+ termname_sp;
+ tgetent_sp;
+ tgetflag_sp;
+ tgetnum_sp;
+ tgetstr_sp;
+ tigetflag_sp;
+ tigetnum_sp;
+ tigetstr_sp;
+ tiparm;
+ tputs_sp;
+ typeahead_sp;
+ unctrl_sp;
+ use_env_sp;
+ local:
+ _nc_get_hash_info;
+ _nc_retrace_char;
+ _nc_setup_tinfo;
+ _nc_tinfo_cmdch;
+} NCURSES_TINFO_5.7.20081102;
+
+NCURSES_TINFO_5.9.20150530 {
+ global:
+ _nc_init_termtype;
+ _nc_putchar;
+ _nc_putchar_sp;
+ use_tioctl;
+ use_tioctl_sp;
+ local:
+ _nc_comp_error_leaks;
+ _nc_db_iterator_leaks;
+ _nc_setenv_num;
+} NCURSES_TINFO_5.8.20110226;
+
+NCURSES_TINFO_6.1.20171230 {
+ global:
+ _nc_copy_termtype2;
+ _nc_export_termtype2;
+ _nc_fallback2;
+ _nc_free_termtype2;
+} NCURSES_TINFO_5.9.20150530;
+
+NCURSES_TINFO_6.1.current {
+ global:
+ _nc_find_user_entry;
+ _nc_fmt_funcptr;
+ _nc_wacs_width;
+ curses_trace;
+ exit_terminfo;
+ local:
+ _*;
+} NCURSES_TINFO_6.1.20171230;
diff --git a/package/ncurses.spec b/package/ncurses.spec
index d786d6e3818b..b030cab6ac11 100644
--- a/package/ncurses.spec
+++ b/package/ncurses.spec
@@ -1,66 +1,107 @@
Summary: shared libraries for terminal handling
Name: ncurses6
-Version: 5.9
-Release: 20140222
+Version: 6.1
+Release: 20200118
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz
-# URL: http://invisible-island.net/ncurses/
+# URL: https://invisible-island.net/ncurses/
-%define CC_NORMAL -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion
-%define CC_STRICT %{CC_NORMAL} -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic
+%global MY_ABI 6
-%define _prefix /usr/local/ncurses6
+# save value before redefining
+%global sys_libdir %{_libdir}
+
+# was redefined...
+#global _prefix /usr/local/ncurses#{MY_ABI}
+
+%global MY_PKG %{sys_libdir}/pkgconfig
%define MYDATA /usr/local/ncurses/share/terminfo
%description
The ncurses library routines are a terminal-independent method of
updating character screens with reasonable optimization.
-This package is used for testing ABI 6.
+This package is used for testing ABI %{MY_ABI}.
%prep
+%global is_mandriva %(test -f /etc/mandriva-release && echo 1 || echo 0)
+%global is_redhat %(test -f /etc/redhat-release && echo 1 || echo 0)
+%global is_suse %(test -f /etc/SuSE-release && echo 1 || echo 0)
+
+%if %{is_redhat}
+# generate debug/debug-source packages.
+%else
%define debug_package %{nil}
+%endif
+
+%if %{is_mandriva}
+%define _disable_ld_as_needed 1
+%define _disable_ld_no_undefined 1
+# libtool is not used here...
+%define _disable_libtoolize 1
+%define _disable_ld_build_id 1
+%endif
+
+%if %{is_redhat}
+# workaround for toolset breakage in Fedora 28
+%define _test_relink --enable-relink
+%else
+%define _test_relink --disable-relink
+%endif
+
%setup -q -n ncurses-%{version}-%{release}
%build
-CFLAGS="%{CC_NORMAL}" \
-RPATH_LIST=../lib:%{_prefix}/lib \
-%configure \
- --target %{_target_platform} \
- --prefix=%{_prefix} \
- --includedir='${prefix}/include' \
- --with-default-terminfo-dir=%{MYDATA} \
- --with-install-prefix=$RPM_BUILD_ROOT \
- --with-terminfo-dirs=%{MYDATA}:/usr/share/terminfo \
- --disable-echo \
- --disable-getcap \
- --disable-leaks \
- --disable-macros \
- --disable-overwrite \
- --disable-termcap \
- --enable-const \
- --enable-ext-colors \
- --enable-ext-mouse \
- --enable-hard-tabs \
- --enable-interop \
- --enable-rpath \
- --enable-sp-funcs \
- --enable-warnings \
- --enable-widec \
- --verbose \
- --with-develop \
- --with-shared \
- --with-termlib \
- --with-ticlib \
- --with-trace \
- --with-cxx-shared \
- --with-xterm-kbs=DEL \
- --without-ada \
- --without-debug \
+%define CFG_OPTS \\\
+ --target %{_target_platform} \\\
+ --prefix=%{_prefix} \\\
+ --bindir=%{_bindir} \\\
+ --includedir=%{_includedir} \\\
+ --libdir=%{_libdir} \\\
+ --includedir='${prefix}/include' \\\
+ --disable-echo \\\
+ --disable-getcap \\\
+ --disable-leaks \\\
+ --disable-macros \\\
+ --disable-overwrite \\\
+ %{_test_relink} \\\
+ --disable-termcap \\\
+ --enable-hard-tabs \\\
+ --enable-opaque-curses \\\
+ --enable-opaque-form \\\
+ --enable-opaque-menu \\\
+ --enable-opaque-panel \\\
+ --enable-pc-files \\\
+ --enable-rpath \\\
+ --enable-warnings \\\
+ --enable-wgetch-events \\\
+ --enable-widec \\\
+ --enable-xmc-glitch \\\
+ --program-suffix=%{MY_ABI} \\\
+ --verbose \\\
+ --with-abi-version=%{MY_ABI} \\\
+ --with-config-suffix=dev \\\
+ --with-cxx-shared \\\
+ --with-default-terminfo-dir=%{MYDATA} \\\
+ --with-develop \\\
+ --with-extra-suffix=%{MY_ABI} \\\
+ --with-install-prefix=$RPM_BUILD_ROOT \\\
+ --with-pkg-config-libdir=%{MY_PKG} \\\
+ --with-shared \\\
+ --with-terminfo-dirs=%{MYDATA}:/usr/share/terminfo \\\
+ --with-termlib \\\
+ --with-ticlib \\\
+ --with-trace \\\
+ --with-versioned-syms \\\
+ --with-xterm-kbs=DEL \\\
+ --without-ada \\\
+ --without-debug \\\
--without-normal
+%configure %{CFG_OPTS}
+
make
%install
@@ -68,20 +109,64 @@ rm -rf $RPM_BUILD_ROOT
make install.libs install.progs
rm -f test/ncurses
-( cd test && make ncurses LOCAL_LIBDIR=%{_libdir} && mv ncurses $RPM_BUILD_ROOT/%{_bindir}/ncurses6 )
+( cd test && make ncurses LOCAL_LIBDIR=%{_libdir} && mv ncurses $RPM_BUILD_ROOT/%{_bindir}/ncurses%{MY_ABI} )
+
+%if %{is_redhat}
+%ldconfig_scriptlets libs
+%ldconfig_scriptlets c++-libs
+%endif
%clean
-rm -rf $RPM_BUILD_ROOT
+if rm -rf $RPM_BUILD_ROOT; then
+ echo OK
+else
+ find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1
+fi
+exit 0
%files
%defattr(-,root,root,-)
%{_bindir}/*
%{_includedir}/*
%{_libdir}/*
-#%{_datadir}/*
%changelog
+* Tue Dec 24 2019 Thomas Dickey
+- drop custom CC_NORMAL warning flags because setting CFLAGS interferes with
+ matching Fedora's PIE/PIC configuration. Also, generate debug/debug-source
+ packages.
+
+* Sat Nov 16 2019 Thomas Dickey
+- modify clean-rule to work around Fedora NFS bugs.
+
+* Sat Aug 25 2018 Thomas E. Dickey
+- split spec-file into ncurses6 and ncursest6 to work around toolset breakage
+ in Fedora 28
+
+* Sat Jun 02 2018 Thomas E. Dickey
+- build-fix for Mageia
+
+* Sat May 26 2018 Thomas E. Dickey
+- use predefined configure-macro
+- separate ncurses6/ncursest6 packages
+
+* Sat Feb 10 2018 Thomas E. Dickey
+- add ncursest6 package
+- add several development features
+
+* Mon Jan 01 2018 Thomas E. Dickey
+- drop redundant files pattern for "*.pc"
+
+* Tue Dec 26 2017 Thomas E. Dickey
+- add --with-config-suffix option
+
+* Sun Apr 26 2015 Thomas E. Dickey
+- move package to /usr
+
+* Sun Apr 12 2015 Thomas E. Dickey
+- factor-out MY_ABI
+
* Sat Mar 09 2013 Thomas E. Dickey
- add --with-cxx-shared option to demonstrate c++ binding as shared library
diff --git a/package/ncurses.sym b/package/ncurses.sym
new file mode 100644
index 000000000000..d9f8b937d67c
--- /dev/null
+++ b/package/ncurses.sym
@@ -0,0 +1,886 @@
+# $Id: ncurses.sym,v 1.35 2019/12/14 22:40:34 tom Exp $
+# script for shared library symbol-visibility using libtool
+#
+# This file was generated by ncu-mapsyms
+# Configure options (5.0.19991023)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.1.20000708)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.2.20001021)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.3.20021019)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.4.20040208)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.5.20051010)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.6.20061217)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.7.20081102)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.8.20110226)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20110404)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20150530)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace
+# Configure options (6.0.20161029)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace
+BC
+COLORS
+COLOR_PAIR
+COLOR_PAIRS
+COLS
+ESCDELAY
+LINES
+PAIR_NUMBER
+PC
+SP
+TABSIZE
+TYPE_ALNUM
+TYPE_ALPHA
+TYPE_ENUM
+TYPE_INTEGER
+TYPE_IPV4
+TYPE_NUMERIC
+TYPE_REGEXP
+UP
+_nc_Default_Field
+_nc_Default_Form
+_nc_access
+_nc_add_to_try
+_nc_align_termtype
+_nc_alloc_entry_leaks
+_nc_basename
+_nc_capcmp
+_nc_captoinfo_leaks
+_nc_check_termtype
+_nc_check_termtype2
+_nc_comp_scan_leaks
+_nc_copy_termtype
+_nc_copy_termtype2
+_nc_curr_col
+_nc_curr_line
+_nc_db_close
+_nc_db_first
+_nc_db_have_data
+_nc_db_next
+_nc_db_open
+_nc_db_put
+_nc_disable_period
+_nc_doalloc
+_nc_entry_match
+_nc_env_access
+_nc_err_abort
+_nc_eventlist_timeout
+_nc_export_termtype2
+_nc_fallback
+_nc_fallback2
+_nc_find_entry
+_nc_find_type_entry
+_nc_find_user_entry
+_nc_first_db
+_nc_first_name
+_nc_flush
+_nc_flush_sp
+_nc_fmt_funcptr
+_nc_free_and_exit
+_nc_free_entries
+_nc_free_termtype
+_nc_free_termtype2
+_nc_free_tic
+_nc_free_tinfo
+_nc_free_tparm
+_nc_freeall
+_nc_get_alias_table
+_nc_get_hash_table
+_nc_get_locale
+_nc_get_screensize
+_nc_get_source
+_nc_get_table
+_nc_get_tty_mode
+_nc_get_tty_mode_sp
+_nc_get_type
+_nc_getenv_num
+_nc_globals
+_nc_handle_sigwinch
+_nc_has_mouse
+_nc_head
+_nc_home_terminfo
+_nc_info_hash_table
+_nc_infotocap
+_nc_init_acs
+_nc_init_acs_sp
+_nc_init_termtype
+_nc_is_abs_path
+_nc_is_dir_path
+_nc_is_file_path
+_nc_keep_tic_dir
+_nc_keyname_leaks
+_nc_keypad
+_nc_last_db
+_nc_leaks_tinfo
+_nc_locale_breaks_acs
+_nc_name_match
+_nc_next_db
+_nc_optimize_enable
+_nc_outc_wrapper
+_nc_outch
+_nc_outch_sp
+_nc_outchars
+_nc_panelhook
+_nc_panelhook_sp
+_nc_pathlast
+_nc_prescreen
+_nc_putchar
+_nc_putchar_sp
+_nc_putp
+_nc_putp_flush
+_nc_putp_flush_sp
+_nc_putp_sp
+_nc_read_entry
+_nc_read_entry2
+_nc_read_entry_source
+_nc_read_file_entry
+_nc_read_termtype
+_nc_reset_input
+_nc_resolve_uses
+_nc_resolve_uses2
+_nc_retrace_attr_t
+_nc_retrace_bool
+_nc_retrace_chtype
+_nc_retrace_cptr
+_nc_retrace_cvoid_ptr
+_nc_retrace_int
+_nc_retrace_int_attr_t
+_nc_retrace_ptr
+_nc_retrace_sp
+_nc_retrace_unsigned
+_nc_retrace_void_ptr
+_nc_retrace_win
+_nc_ripoffline
+_nc_rootname
+_nc_safe_strcat
+_nc_safe_strcpy
+_nc_screen_chain
+_nc_screen_of
+_nc_set_buffer
+_nc_set_buffer_sp
+_nc_set_no_padding
+_nc_set_source
+_nc_set_tty_mode
+_nc_set_tty_mode_sp
+_nc_set_type
+_nc_set_writedir
+_nc_setupterm
+_nc_str_copy
+_nc_str_init
+_nc_str_null
+_nc_strict_bsd
+_nc_suppress_warnings
+_nc_syntax
+_nc_syserr_abort
+_nc_tail
+_nc_tgetent_leaks
+_nc_tic_dir
+_nc_tic_expand
+_nc_tic_written
+_nc_timed_wait
+_nc_tinfo_fkeys
+_nc_tinfo_fkeysf
+_nc_tparm_analyze
+_nc_tparm_err
+_nc_tputs_trace
+_nc_trace_buf
+_nc_trace_bufcat
+_nc_tracechar
+_nc_tracing
+_nc_trans_string
+_nc_trim_sgr0
+_nc_unicode_locale
+_nc_update_screensize
+_nc_user_definable
+_nc_visbuf
+_nc_visbuf2
+_nc_visbufn
+_nc_viscbuf
+_nc_wacs_width
+_nc_warning
+_nc_write_entry
+_nc_write_object
+_traceattr
+_traceattr2
+_tracechar
+_tracechtype
+_tracechtype2
+_tracef
+acs_map
+addch
+addchnstr
+addchstr
+addnstr
+addstr
+alloc_pair
+alloc_pair_sp
+assume_default_colors
+assume_default_colors_sp
+attr_get
+attr_off
+attr_on
+attr_set
+attroff
+attron
+attrset
+baudrate
+baudrate_sp
+beep
+beep_sp
+bkgd
+bkgdset
+boolcodes
+boolfnames
+boolnames
+border
+bottom_panel
+box
+can_change_color
+can_change_color_sp
+cbreak
+cbreak_sp
+ceiling_panel
+chgat
+clear
+clearok
+clrtobot
+clrtoeol
+color_content
+color_content_sp
+color_set
+copywin
+cur_term
+current_field
+current_item
+curs_set
+curs_set_sp
+curscr
+curses_trace
+curses_version
+data_ahead
+data_behind
+def_prog_mode
+def_prog_mode_sp
+def_shell_mode
+def_shell_mode_sp
+define_key
+define_key_sp
+del_curterm
+del_curterm_sp
+del_panel
+delay_output
+delay_output_sp
+delch
+deleteln
+delscreen
+delwin
+derwin
+doupdate
+doupdate_sp
+dup_field
+dupwin
+dynamic_field_info
+echo
+echo_sp
+echochar
+endwin
+endwin_sp
+erase
+erasechar
+erasechar_sp
+exit_curses
+exit_terminfo
+extended_color_content
+extended_color_content_sp
+extended_pair_content
+extended_pair_content_sp
+field_arg
+field_back
+field_buffer
+field_count
+field_fore
+field_index
+field_info
+field_init
+field_just
+field_opts
+field_opts_off
+field_opts_on
+field_pad
+field_status
+field_term
+field_type
+field_userptr
+filter
+filter_sp
+find_pair
+find_pair_sp
+flash
+flash_sp
+flushinp
+flushinp_sp
+form_driver
+form_fields
+form_init
+form_opts
+form_opts_off
+form_opts_on
+form_page
+form_request_by_name
+form_request_name
+form_sub
+form_term
+form_userptr
+form_win
+free_field
+free_fieldtype
+free_form
+free_item
+free_menu
+free_pair
+free_pair_sp
+get_escdelay
+get_escdelay_sp
+getattrs
+getbegx
+getbegy
+getbkgd
+getch
+getcurx
+getcury
+getmaxx
+getmaxy
+getmouse
+getmouse_sp
+getnstr
+getparx
+getpary
+getstr
+getwin
+getwin_sp
+ground_panel
+halfdelay
+halfdelay_sp
+has_colors
+has_colors_sp
+has_ic
+has_ic_sp
+has_il
+has_il_sp
+has_key
+has_key_sp
+has_mouse
+has_mouse_sp
+hide_panel
+hline
+idcok
+idlok
+immedok
+inch
+inchnstr
+inchstr
+init_color
+init_color_sp
+init_extended_color
+init_extended_color_sp
+init_extended_pair
+init_extended_pair_sp
+init_pair
+init_pair_sp
+initscr
+innstr
+insch
+insdelln
+insertln
+insnstr
+insstr
+instr
+intrflush
+intrflush_sp
+is_cleared
+is_idcok
+is_idlok
+is_immedok
+is_keypad
+is_leaveok
+is_linetouched
+is_nodelay
+is_notimeout
+is_pad
+is_scrollok
+is_subwin
+is_syncok
+is_term_resized
+is_term_resized_sp
+is_wintouched
+isendwin
+isendwin_sp
+item_count
+item_description
+item_index
+item_init
+item_name
+item_opts
+item_opts_off
+item_opts_on
+item_term
+item_userptr
+item_value
+item_visible
+key_defined
+key_defined_sp
+keybound
+keybound_sp
+keyname
+keyname_sp
+keyok
+keyok_sp
+keypad
+killchar
+killchar_sp
+leaveok
+link_field
+link_fieldtype
+longname
+longname_sp
+mcprint
+mcprint_sp
+menu_back
+menu_driver
+menu_fore
+menu_format
+menu_grey
+menu_init
+menu_items
+menu_mark
+menu_opts
+menu_opts_off
+menu_opts_on
+menu_pad
+menu_pattern
+menu_request_by_name
+menu_request_name
+menu_spacing
+menu_sub
+menu_term
+menu_userptr
+menu_win
+meta
+mouse_trafo
+mouseinterval
+mouseinterval_sp
+mousemask
+mousemask_sp
+move
+move_field
+move_panel
+mvaddch
+mvaddchnstr
+mvaddchstr
+mvaddnstr
+mvaddstr
+mvchgat
+mvcur
+mvcur_sp
+mvdelch
+mvderwin
+mvgetch
+mvgetnstr
+mvgetstr
+mvhline
+mvinch
+mvinchnstr
+mvinchstr
+mvinnstr
+mvinsch
+mvinsnstr
+mvinsstr
+mvinstr
+mvprintw
+mvscanw
+mvvline
+mvwaddch
+mvwaddchnstr
+mvwaddchstr
+mvwaddnstr
+mvwaddstr
+mvwchgat
+mvwdelch
+mvwgetch
+mvwgetnstr
+mvwgetstr
+mvwhline
+mvwin
+mvwinch
+mvwinchnstr
+mvwinchstr
+mvwinnstr
+mvwinsch
+mvwinsnstr
+mvwinsstr
+mvwinstr
+mvwprintw
+mvwscanw
+mvwvline
+napms
+napms_sp
+new_field
+new_fieldtype
+new_form
+new_form_sp
+new_item
+new_menu
+new_menu_sp
+new_page
+new_panel
+new_prescr
+newpad
+newpad_sp
+newscr
+newterm
+newterm_sp
+newwin
+newwin_sp
+nl
+nl_sp
+nocbreak
+nocbreak_sp
+nodelay
+noecho
+noecho_sp
+nofilter
+nofilter_sp
+nonl
+nonl_sp
+noqiflush
+noqiflush_sp
+noraw
+noraw_sp
+notimeout
+numcodes
+numfnames
+numnames
+ospeed
+overlay
+overwrite
+pair_content
+pair_content_sp
+panel_above
+panel_below
+panel_hidden
+panel_userptr
+panel_window
+pechochar
+pnoutrefresh
+pos_form_cursor
+pos_menu_cursor
+post_form
+post_menu
+prefresh
+printw
+putp
+putp_sp
+putwin
+qiflush
+qiflush_sp
+raw
+raw_sp
+redrawwin
+refresh
+replace_panel
+reset_color_pairs
+reset_color_pairs_sp
+reset_prog_mode
+reset_prog_mode_sp
+reset_shell_mode
+reset_shell_mode_sp
+resetty
+resetty_sp
+resize_term
+resize_term_sp
+resizeterm
+resizeterm_sp
+restartterm
+restartterm_sp
+ripoffline
+ripoffline_sp
+savetty
+savetty_sp
+scale_form
+scale_menu
+scanw
+scr_dump
+scr_init
+scr_init_sp
+scr_restore
+scr_restore_sp
+scr_set
+scr_set_sp
+scrl
+scroll
+scrollok
+set_current_field
+set_current_item
+set_curterm
+set_curterm_sp
+set_escdelay
+set_escdelay_sp
+set_field_back
+set_field_buffer
+set_field_fore
+set_field_init
+set_field_just
+set_field_opts
+set_field_pad
+set_field_status
+set_field_term
+set_field_type
+set_field_userptr
+set_fieldtype_arg
+set_fieldtype_choice
+set_form_fields
+set_form_init
+set_form_opts
+set_form_page
+set_form_sub
+set_form_term
+set_form_userptr
+set_form_win
+set_item_init
+set_item_opts
+set_item_term
+set_item_userptr
+set_item_value
+set_max_field
+set_menu_back
+set_menu_fore
+set_menu_format
+set_menu_grey
+set_menu_init
+set_menu_items
+set_menu_mark
+set_menu_opts
+set_menu_pad
+set_menu_pattern
+set_menu_spacing
+set_menu_sub
+set_menu_term
+set_menu_userptr
+set_menu_win
+set_new_page
+set_panel_userptr
+set_tabsize
+set_tabsize_sp
+set_term
+set_top_row
+setscrreg
+setupterm
+show_panel
+slk_attr
+slk_attr_off
+slk_attr_on
+slk_attr_set
+slk_attr_set_sp
+slk_attr_sp
+slk_attroff
+slk_attroff_sp
+slk_attron
+slk_attron_sp
+slk_attrset
+slk_attrset_sp
+slk_clear
+slk_clear_sp
+slk_color
+slk_color_sp
+slk_init
+slk_init_sp
+slk_label
+slk_label_sp
+slk_noutrefresh
+slk_noutrefresh_sp
+slk_refresh
+slk_refresh_sp
+slk_restore
+slk_restore_sp
+slk_set
+slk_set_sp
+slk_touch
+slk_touch_sp
+standend
+standout
+start_color
+start_color_sp
+stdscr
+strcodes
+strfnames
+strnames
+subpad
+subwin
+syncok
+termattrs
+termattrs_sp
+termname
+termname_sp
+tgetent
+tgetent_sp
+tgetflag
+tgetflag_sp
+tgetnum
+tgetnum_sp
+tgetstr
+tgetstr_sp
+tgoto
+tigetflag
+tigetflag_sp
+tigetnum
+tigetnum_sp
+tigetstr
+tigetstr_sp
+timeout
+tiparm
+top_panel
+top_row
+touchline
+touchwin
+tparm
+tputs
+tputs_sp
+trace
+ttytype
+typeahead
+typeahead_sp
+unctrl
+unctrl_sp
+unfocus_current_field
+ungetch
+ungetch_sp
+ungetmouse
+ungetmouse_sp
+unpost_form
+unpost_menu
+untouchwin
+update_panels
+update_panels_sp
+use_default_colors
+use_default_colors_sp
+use_env
+use_env_sp
+use_extended_names
+use_legacy_coding
+use_legacy_coding_sp
+use_screen
+use_tioctl
+use_tioctl_sp
+use_window
+vid_attr
+vidattr
+vidattr_sp
+vidputs
+vidputs_sp
+vline
+vw_printw
+vw_scanw
+vwprintw
+vwscanw
+waddch
+waddchnstr
+waddchstr
+waddnstr
+waddstr
+wattr_get
+wattr_off
+wattr_on
+wattr_set
+wattroff
+wattron
+wattrset
+wbkgd
+wbkgdset
+wborder
+wchgat
+wclear
+wclrtobot
+wclrtoeol
+wcolor_set
+wcursyncup
+wdelch
+wdeleteln
+wechochar
+wenclose
+werase
+wgetch
+wgetch_events
+wgetdelay
+wgetnstr
+wgetnstr_events
+wgetparent
+wgetscrreg
+wgetstr
+whline
+winch
+winchnstr
+winchstr
+winnstr
+winsch
+winsdelln
+winsertln
+winsnstr
+winsstr
+winstr
+wmouse_trafo
+wmove
+wnoutrefresh
+wprintw
+wredrawln
+wrefresh
+wresize
+wscanw
+wscrl
+wsetscrreg
+wstandend
+wstandout
+wsyncdown
+wsyncup
+wtimeout
+wtouchln
+wvline
diff --git a/package/ncursest.map b/package/ncursest.map
new file mode 100644
index 000000000000..120fbea45b43
--- /dev/null
+++ b/package/ncursest.map
@@ -0,0 +1,1177 @@
+# $Id: ncursest.map,v 1.48 2019/12/14 23:28:54 tom Exp $
+# script for shared library symbol-versioning using ld
+#
+# This file was generated by ncu-mapsyms
+# Configure options (5.7.20081102)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.8.20110226)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20110404)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20150530)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace
+# Configure options (6.0.current)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace
+
+NCURSES_TIC_5.0.19991023 {
+ global:
+ _nc_capcmp;
+ _nc_check_termtype;
+ _nc_entry_match;
+ _nc_infotocap;
+ _nc_read_entry_source;
+ _nc_reset_input;
+ _nc_resolve_uses;
+ _nc_screen;
+ _nc_set_writedir;
+ _nc_syntax;
+ _nc_tic_expand;
+ _nc_tic_written;
+ _nc_trans_string;
+ _nc_write_entry;
+ local:
+ _nc_captoinfo;
+ _nc_comment_end;
+ _nc_comment_start;
+ _nc_copy_entry;
+ _nc_curr_file_pos;
+ _nc_curr_token;
+ _nc_get_token;
+ _nc_init_entry;
+ _nc_merge_entry;
+ _nc_panic_mode;
+ _nc_parse_entry;
+ _nc_push_token;
+ _nc_save_str;
+ _nc_start_line;
+ _nc_wrap_entry;
+};
+
+NCURSES_TIC_5.1.20000708 {
+ global:
+ _nc_disable_period;
+} NCURSES_TIC_5.0.19991023;
+
+NCURSES_TIC_5.5.20051010 {
+ global:
+ _nc_alloc_entry_leaks;
+ _nc_captoinfo_leaks;
+ _nc_check_termtype2;
+ _nc_comp_scan_leaks;
+ _nc_resolve_uses2;
+} NCURSES_TIC_5.1.20000708;
+
+NCURSES_TIC_5.7.20081102 {
+ global:
+ _nc_free_tic;
+ local:
+ _nc_comp_captab_leaks;
+ _nc_leaks_tic;
+} NCURSES_TIC_5.5.20051010;
+
+NCURSES_TIC_5.9.20150530 {
+ global:
+ _nc_strict_bsd;
+} NCURSES_TIC_5.7.20081102;
+
+NCURSES_TIC_6.1.20171230 {
+ global:
+ _nc_read_entry2;
+ _nc_write_object;
+ local:
+ _*;
+} NCURSES_TIC_5.9.20150530;
+
+NCURSES_TINFO_5.0.19991023 {
+ global:
+ BC;
+ PC;
+ SP;
+ UP;
+ _nc_access;
+ _nc_add_to_try;
+ _nc_copy_termtype;
+ _nc_curr_col;
+ _nc_curr_line;
+ _nc_doalloc;
+ _nc_err_abort;
+ _nc_fallback;
+ _nc_find_entry;
+ _nc_find_type_entry;
+ _nc_first_name;
+ _nc_free_entries;
+ _nc_free_termtype;
+ _nc_free_tparm;
+ _nc_freeall;
+ _nc_get_hash_table;
+ _nc_get_table;
+ _nc_get_tty_mode;
+ _nc_get_type;
+ _nc_getenv_num;
+ _nc_head;
+ _nc_home_terminfo;
+ _nc_init_acs;
+ _nc_keep_tic_dir;
+ _nc_keypad;
+ _nc_name_match;
+ _nc_outch;
+ _nc_read_entry;
+ _nc_read_file_entry;
+ _nc_screen_chain;
+ _nc_set_buffer;
+ _nc_set_source;
+ _nc_set_tty_mode;
+ _nc_set_type;
+ _nc_suppress_warnings;
+ _nc_syserr_abort;
+ _nc_tail;
+ _nc_tic_dir;
+ _nc_timed_wait;
+ _nc_tinfo_fkeysf;
+ _nc_trace_buf;
+ _nc_tracing;
+ _nc_update_screensize;
+ _nc_visbuf;
+ _nc_visbuf2;
+ _nc_warning;
+ _tracechar;
+ baudrate;
+ cbreak;
+ curs_set;
+ curses_version;
+ def_prog_mode;
+ def_shell_mode;
+ define_key;
+ del_curterm;
+ delay_output;
+ erasechar;
+ flushinp;
+ halfdelay;
+ has_ic;
+ has_il;
+ has_key;
+ idcok;
+ idlok;
+ intrflush;
+ keybound;
+ keyname;
+ keyok;
+ keypad;
+ killchar;
+ longname;
+ meta;
+ napms;
+ nocbreak;
+ nodelay;
+ noqiflush;
+ noraw;
+ notimeout;
+ ospeed;
+ putp;
+ qiflush;
+ raw;
+ reset_prog_mode;
+ reset_shell_mode;
+ resetty;
+ savetty;
+ set_curterm;
+ setupterm;
+ termname;
+ tgetent;
+ tgetflag;
+ tgetnum;
+ tgetstr;
+ tgoto;
+ tigetflag;
+ tigetnum;
+ tigetstr;
+ tparm;
+ tputs;
+ trace;
+ typeahead;
+ unctrl;
+ use_env;
+ wtimeout;
+ local:
+ _nc_baudrate;
+ _nc_expand_try;
+ _nc_init_keytry;
+ _nc_nulls_sent;
+ _nc_ospeed;
+ _nc_read_termcap;
+ _nc_read_termcap_entry;
+ _nc_remove_key;
+ _nc_remove_string;
+ _nc_trace_tries;
+ _nc_tracebits;
+};
+
+NCURSES_TINFO_5.1.20000708 {
+ global:
+ _nc_align_termtype;
+ _nc_flush;
+ _nc_tinfo_fkeys;
+ _nc_user_definable;
+ use_extended_names;
+} NCURSES_TINFO_5.0.19991023;
+
+NCURSES_TINFO_5.2.20001021 {
+ global:
+ _nc_basename;
+ _nc_env_access;
+ _nc_safe_strcat;
+ _nc_safe_strcpy;
+ _nc_str_copy;
+ _nc_str_init;
+ _nc_str_null;
+} NCURSES_TINFO_5.1.20000708;
+
+NCURSES_TINFO_5.3.20021019 {
+ global:
+ _nc_rootname;
+ _nc_tparm_err;
+ _nc_visbufn;
+} NCURSES_TINFO_5.2.20001021;
+
+NCURSES_TINFO_5.4.20040208 {
+ global:
+ _nc_get_locale;
+ _nc_locale_breaks_acs;
+ _nc_pathlast;
+ _nc_retrace_attr_t;
+ _nc_retrace_bool;
+ _nc_retrace_chtype;
+ _nc_retrace_int;
+ _nc_retrace_ptr;
+ _nc_retrace_sp;
+ _nc_retrace_unsigned;
+ _nc_retrace_win;
+ _nc_tparm_analyze;
+ _nc_trace_bufcat;
+ _nc_unicode_locale;
+ _traceattr;
+ _traceattr2;
+ _tracechtype;
+ _tracechtype2;
+ _tracef;
+ key_defined;
+ local:
+ _nc_altcharset_name;
+ _nc_trace_ttymode;
+} NCURSES_TINFO_5.3.20021019;
+
+NCURSES_TINFO_5.5.20051010 {
+ global:
+ _nc_get_source;
+ _nc_retrace_cptr;
+ _nc_retrace_cvoid_ptr;
+ _nc_retrace_void_ptr;
+ _nc_setupterm;
+ _nc_trim_sgr0;
+ local:
+ _nc_delink_entry;
+ _nc_free_entry;
+} NCURSES_TINFO_5.4.20040208;
+
+NCURSES_TINFO_5.6.20061217 {
+ global:
+ _nc_db_close;
+ _nc_db_first;
+ _nc_db_have_data;
+ _nc_db_next;
+ _nc_db_open;
+ _nc_db_put;
+ _nc_eventlist_timeout;
+ _nc_first_db;
+ _nc_handle_sigwinch;
+ _nc_is_abs_path;
+ _nc_is_dir_path;
+ _nc_is_file_path;
+ _nc_keyname_leaks;
+ _nc_last_db;
+ _nc_next_db;
+ _nc_read_termtype;
+ _nc_tgetent_leaks;
+ _nc_viscbuf;
+ local:
+ _nc_db_get;
+ _nc_db_have_index;
+ _nc_hashed_db;
+ _nc_viscbuf2;
+} NCURSES_TINFO_5.5.20051010;
+
+NCURSES_TINFO_5.7.20081102 {
+ global:
+ _nc_COLS;
+ _nc_LINES;
+ _nc_TABSIZE;
+ _nc__nc_outchars;
+ _nc_acs_map;
+ _nc_boolcodes;
+ _nc_boolfnames;
+ _nc_boolnames;
+ _nc_codes_leaks;
+ _nc_count_outchars;
+ _nc_cur_term;
+ _nc_curscr;
+ _nc_free_tinfo;
+ _nc_get_alias_table;
+ _nc_get_screensize;
+ _nc_globals;
+ _nc_init_pthreads;
+ _nc_leaks_tinfo;
+ _nc_locked_tracef;
+ _nc_mutex_lock;
+ _nc_mutex_trylock;
+ _nc_mutex_unlock;
+ _nc_names_leaks;
+ _nc_newscr;
+ _nc_numcodes;
+ _nc_numfnames;
+ _nc_numnames;
+ _nc_prescreen;
+ _nc_ptr_Cols;
+ _nc_ptr_Lines;
+ _nc_screen_of;
+ _nc_set_no_padding;
+ _nc_set_tputs_trace;
+ _nc_stdscr;
+ _nc_strcodes;
+ _nc_strfnames;
+ _nc_strnames;
+ _nc_tracechar;
+ _nc_ttytype;
+ _nc_use_tracef;
+ set_tabsize;
+ local:
+ _nc__nc_tputs_trace;
+ _nc_keyname;
+ _nc_mutex_init;
+ _nc_unctrl;
+} NCURSES_TINFO_5.6.20061217;
+
+NCURSES_TINFO_5.8.20110226 {
+ global:
+ _nc_flush_sp;
+ _nc_get_tty_mode_sp;
+ _nc_init_acs_sp;
+ _nc_outc_wrapper;
+ _nc_outch_sp;
+ _nc_putp;
+ _nc_putp_flush;
+ _nc_putp_flush_sp;
+ _nc_putp_sp;
+ _nc_retrace_int_attr_t;
+ _nc_set_buffer_sp;
+ _nc_set_tty_mode_sp;
+ _nc_sigprocmask;
+ baudrate_sp;
+ cbreak_sp;
+ curs_set_sp;
+ def_prog_mode_sp;
+ def_shell_mode_sp;
+ define_key_sp;
+ del_curterm_sp;
+ delay_output_sp;
+ erasechar_sp;
+ flushinp_sp;
+ halfdelay_sp;
+ has_ic_sp;
+ has_il_sp;
+ has_key_sp;
+ intrflush_sp;
+ key_defined_sp;
+ keybound_sp;
+ keyname_sp;
+ keyok_sp;
+ killchar_sp;
+ longname_sp;
+ napms_sp;
+ new_prescr;
+ nocbreak_sp;
+ noqiflush_sp;
+ noraw_sp;
+ putp_sp;
+ qiflush_sp;
+ raw_sp;
+ reset_prog_mode_sp;
+ reset_shell_mode_sp;
+ resetty_sp;
+ savetty_sp;
+ set_curterm_sp;
+ set_tabsize_sp;
+ termname_sp;
+ tgetent_sp;
+ tgetflag_sp;
+ tgetnum_sp;
+ tgetstr_sp;
+ tigetflag_sp;
+ tigetnum_sp;
+ tigetstr_sp;
+ tiparm;
+ tputs_sp;
+ typeahead_sp;
+ unctrl_sp;
+ use_env_sp;
+ local:
+ _nc_get_cur_term;
+ _nc_get_cur_term_sp;
+ _nc_get_hash_info;
+ _nc_ptr_Tabsize;
+ _nc_retrace_char;
+ _nc_setup_tinfo;
+ _nc_tinfo_cmdch;
+} NCURSES_TINFO_5.7.20081102;
+
+NCURSES_TINFO_5.9.20150530 {
+ global:
+ _nc_init_termtype;
+ _nc_putchar;
+ _nc_putchar_sp;
+ use_tioctl;
+ use_tioctl_sp;
+ local:
+ _nc_comp_error_leaks;
+ _nc_db_iterator_leaks;
+ _nc_setenv_num;
+} NCURSES_TINFO_5.8.20110226;
+
+NCURSES_TINFO_6.1.20171230 {
+ global:
+ _nc_copy_termtype2;
+ _nc_export_termtype2;
+ _nc_fallback2;
+ _nc_find_prescr;
+ _nc_forget_prescr;
+ _nc_free_termtype2;
+} NCURSES_TINFO_5.9.20150530;
+
+NCURSES_TINFO_6.1.current {
+ global:
+ _nc_find_user_entry;
+ _nc_fmt_funcptr;
+ _nc_wacs_width;
+ curses_trace;
+ exit_terminfo;
+ local:
+ _*;
+} NCURSES_TINFO_6.1.20171230;
+
+NCURSEST_5.7.20081102 {
+ global:
+ COLOR_PAIR;
+ PAIR_NUMBER;
+ TYPE_ALNUM;
+ TYPE_ALPHA;
+ TYPE_ENUM;
+ TYPE_INTEGER;
+ TYPE_IPV4;
+ TYPE_NUMERIC;
+ TYPE_REGEXP;
+ _nc_COLORS;
+ _nc_COLOR_PAIRS;
+ _nc_Default_Field; # deprecated in ABI6
+ _nc_Default_Form; # deprecated in ABI6
+ _nc_ESCDELAY;
+ _nc_free_and_exit;
+ _nc_has_mouse; # deprecated in ABI6
+ _nc_optimize_enable;
+ _nc_panelhook;
+ _nc_ripoffline;
+ addch;
+ addchnstr;
+ addchstr;
+ addnstr;
+ addstr;
+ assume_default_colors;
+ attr_get;
+ attr_off;
+ attr_on;
+ attr_set;
+ attroff;
+ attron;
+ attrset;
+ beep;
+ bkgd;
+ bkgdset;
+ border;
+ bottom_panel;
+ box;
+ can_change_color;
+ chgat;
+ clear;
+ clearok;
+ clrtobot;
+ clrtoeol;
+ color_content;
+ color_set;
+ copywin;
+ current_field;
+ current_item;
+ data_ahead;
+ data_behind;
+ del_panel;
+ delch;
+ deleteln;
+ delscreen;
+ delwin;
+ derwin;
+ doupdate;
+ dup_field;
+ dupwin;
+ dynamic_field_info;
+ echo;
+ echochar;
+ endwin;
+ erase;
+ field_arg;
+ field_back;
+ field_buffer;
+ field_count;
+ field_fore;
+ field_index;
+ field_info;
+ field_init;
+ field_just;
+ field_opts;
+ field_opts_off;
+ field_opts_on;
+ field_pad;
+ field_status;
+ field_term;
+ field_type;
+ field_userptr;
+ filter;
+ flash;
+ form_driver;
+ form_fields;
+ form_init;
+ form_opts;
+ form_opts_off;
+ form_opts_on;
+ form_page;
+ form_request_by_name;
+ form_request_name;
+ form_sub;
+ form_term;
+ form_userptr;
+ form_win;
+ free_field;
+ free_fieldtype;
+ free_form;
+ free_item;
+ free_menu;
+ getattrs;
+ getbegx;
+ getbegy;
+ getbkgd;
+ getch;
+ getcurx;
+ getcury;
+ getmaxx;
+ getmaxy;
+ getmouse;
+ getnstr;
+ getparx;
+ getpary;
+ getstr;
+ getwin;
+ has_colors;
+ hide_panel;
+ hline;
+ immedok;
+ inch;
+ inchnstr;
+ inchstr;
+ init_color;
+ init_pair;
+ initscr;
+ innstr;
+ insch;
+ insdelln;
+ insertln;
+ insnstr;
+ insstr;
+ instr;
+ is_cleared;
+ is_idcok;
+ is_idlok;
+ is_immedok;
+ is_keypad;
+ is_leaveok;
+ is_linetouched;
+ is_nodelay;
+ is_notimeout;
+ is_scrollok;
+ is_syncok;
+ is_term_resized;
+ is_wintouched;
+ isendwin;
+ item_count;
+ item_description;
+ item_index;
+ item_init;
+ item_name;
+ item_opts;
+ item_opts_off;
+ item_opts_on;
+ item_term;
+ item_userptr;
+ item_value;
+ item_visible;
+ leaveok;
+ link_field;
+ link_fieldtype;
+ mcprint;
+ menu_back;
+ menu_driver;
+ menu_fore;
+ menu_format;
+ menu_grey;
+ menu_init;
+ menu_items;
+ menu_mark;
+ menu_opts;
+ menu_opts_off;
+ menu_opts_on;
+ menu_pad;
+ menu_pattern;
+ menu_request_by_name;
+ menu_request_name;
+ menu_spacing;
+ menu_sub;
+ menu_term;
+ menu_userptr;
+ menu_win;
+ mouse_trafo;
+ mouseinterval;
+ mousemask;
+ move;
+ move_field;
+ move_panel;
+ mvaddch;
+ mvaddchnstr;
+ mvaddchstr;
+ mvaddnstr;
+ mvaddstr;
+ mvchgat;
+ mvcur;
+ mvdelch;
+ mvderwin;
+ mvgetch;
+ mvgetnstr;
+ mvgetstr;
+ mvhline;
+ mvinch;
+ mvinchnstr;
+ mvinchstr;
+ mvinnstr;
+ mvinsch;
+ mvinsnstr;
+ mvinsstr;
+ mvinstr;
+ mvprintw;
+ mvscanw;
+ mvvline;
+ mvwaddch;
+ mvwaddchnstr;
+ mvwaddchstr;
+ mvwaddnstr;
+ mvwaddstr;
+ mvwchgat;
+ mvwdelch;
+ mvwgetch;
+ mvwgetnstr;
+ mvwgetstr;
+ mvwhline;
+ mvwin;
+ mvwinch;
+ mvwinchnstr;
+ mvwinchstr;
+ mvwinnstr;
+ mvwinsch;
+ mvwinsnstr;
+ mvwinsstr;
+ mvwinstr;
+ mvwprintw;
+ mvwscanw;
+ mvwvline;
+ new_field;
+ new_fieldtype;
+ new_form;
+ new_item;
+ new_menu;
+ new_page;
+ new_panel;
+ newpad;
+ newterm;
+ newwin;
+ nl;
+ noecho;
+ nofilter;
+ nonl;
+ overlay;
+ overwrite;
+ pair_content;
+ panel_above;
+ panel_below;
+ panel_hidden;
+ panel_userptr;
+ panel_window;
+ pechochar;
+ pnoutrefresh;
+ pos_form_cursor;
+ pos_menu_cursor;
+ post_form;
+ post_menu;
+ prefresh;
+ printw;
+ putwin;
+ redrawwin;
+ refresh;
+ replace_panel;
+ resize_term;
+ resizeterm;
+ restartterm;
+ ripoffline;
+ scale_form;
+ scale_menu;
+ scanw;
+ scr_dump;
+ scr_init;
+ scr_restore;
+ scr_set;
+ scrl;
+ scroll;
+ scrollok;
+ set_current_field;
+ set_current_item;
+ set_escdelay;
+ set_field_back;
+ set_field_buffer;
+ set_field_fore;
+ set_field_init;
+ set_field_just;
+ set_field_opts;
+ set_field_pad;
+ set_field_status;
+ set_field_term;
+ set_field_type;
+ set_field_userptr;
+ set_fieldtype_arg;
+ set_fieldtype_choice;
+ set_form_fields;
+ set_form_init;
+ set_form_opts;
+ set_form_page;
+ set_form_sub;
+ set_form_term;
+ set_form_userptr;
+ set_form_win;
+ set_item_init;
+ set_item_opts;
+ set_item_term;
+ set_item_userptr;
+ set_item_value;
+ set_max_field;
+ set_menu_back;
+ set_menu_fore;
+ set_menu_format;
+ set_menu_grey;
+ set_menu_init;
+ set_menu_items;
+ set_menu_mark;
+ set_menu_opts;
+ set_menu_pad;
+ set_menu_pattern;
+ set_menu_spacing;
+ set_menu_sub;
+ set_menu_term;
+ set_menu_userptr;
+ set_menu_win;
+ set_new_page;
+ set_panel_userptr;
+ set_term;
+ set_top_row;
+ setscrreg;
+ show_panel;
+ slk_attr;
+ slk_attr_set;
+ slk_attroff;
+ slk_attron;
+ slk_attrset;
+ slk_clear;
+ slk_color;
+ slk_init;
+ slk_label;
+ slk_noutrefresh;
+ slk_refresh;
+ slk_restore;
+ slk_set;
+ slk_touch;
+ standend;
+ standout;
+ start_color;
+ subpad;
+ subwin;
+ syncok;
+ termattrs;
+ timeout;
+ top_panel;
+ top_row;
+ touchline;
+ touchwin;
+ ungetch;
+ ungetmouse;
+ unpost_form;
+ unpost_menu;
+ untouchwin;
+ update_panels;
+ use_default_colors;
+ use_legacy_coding;
+ use_screen;
+ use_window;
+ vidattr;
+ vidputs;
+ vline;
+ vw_printw;
+ vw_scanw;
+ vwprintw;
+ vwscanw;
+ waddch;
+ waddchnstr;
+ waddchstr;
+ waddnstr;
+ waddstr;
+ wattr_get;
+ wattr_off;
+ wattr_on;
+ wattr_set;
+ wattroff;
+ wattron;
+ wattrset;
+ wbkgd;
+ wbkgdset;
+ wborder;
+ wchgat;
+ wclear;
+ wclrtobot;
+ wclrtoeol;
+ wcolor_set;
+ wcursyncup;
+ wdelch;
+ wdeleteln;
+ wechochar;
+ wenclose;
+ werase;
+ wgetch;
+ wgetch_events;
+ wgetnstr;
+ wgetnstr_events;
+ wgetparent;
+ wgetscrreg;
+ wgetstr;
+ whline;
+ winch;
+ winchnstr;
+ winchstr;
+ winnstr;
+ winsch;
+ winsdelln;
+ winsertln;
+ winsnstr;
+ winsstr;
+ winstr;
+ wmouse_trafo;
+ wmove;
+ wnoutrefresh;
+ wprintw;
+ wredrawln;
+ wrefresh;
+ wresize;
+ wscanw;
+ wscrl;
+ wsetscrreg;
+ wstandend;
+ wstandout;
+ wsyncdown;
+ wsyncup;
+ wtouchln;
+ wvline;
+ local:
+ _nc_Calculate_Item_Length_and_Width;
+ _nc_Calculate_Text_Width;
+ _nc_Connect_Items;
+ _nc_Copy_Argument;
+ _nc_Copy_Type;
+ _nc_Default_FieldType;
+ _nc_Default_Item;
+ _nc_Default_Menu;
+ _nc_Disconnect_Items;
+ _nc_Draw_Menu;
+ _nc_First_Active_Field;
+ _nc_Free_Argument;
+ _nc_Free_Type;
+ _nc_Internal_Validation;
+ _nc_Link_Items;
+ _nc_Make_Argument;
+ _nc_Match_Next_Character_In_Item_Name;
+ _nc_New_TopRow_and_CurrentItem;
+ _nc_Position_Form_Cursor;
+ _nc_Post_Item;
+ _nc_Refresh_Current_Field;
+ _nc_Set_Current_Field;
+ _nc_Set_Form_Page;
+ _nc_Show_Menu;
+ _nc_Synchronize_Attributes;
+ _nc_Synchronize_Options;
+ _nc_Touchline;
+ _nc_Touchpan;
+ _nc_Wnoutrefresh;
+ _nc_dPanel;
+ _nc_dStack;
+ _nc_do_color;
+ _nc_expanded;
+ _nc_fifo_dump;
+ _nc_freewin;
+ _nc_hash_map;
+ _nc_insert_ch;
+ _nc_linedump;
+ _nc_make_oldhash;
+ _nc_makenew;
+ _nc_memmove;
+ _nc_menu_cursor_pos;
+ _nc_msec_cost;
+ _nc_mvcur_init;
+ _nc_mvcur_resume;
+ _nc_mvcur_wrap;
+ _nc_my_visbuf;
+ _nc_oldnums;
+ _nc_printf_string;
+ _nc_render;
+ _nc_reset_colors;
+ _nc_retrace_field;
+ _nc_retrace_field_ptr;
+ _nc_retrace_field_type;
+ _nc_retrace_form;
+ _nc_retrace_form_hook;
+ _nc_retrace_item;
+ _nc_retrace_item_opts;
+ _nc_retrace_item_ptr;
+ _nc_retrace_menu;
+ _nc_retrace_menu_hook;
+ _nc_retrace_menu_opts;
+ _nc_retrace_panel;
+ _nc_screen_init;
+ _nc_screen_resume;
+ _nc_screen_wrap;
+ _nc_scroll_oldhash;
+ _nc_scroll_optimize;
+ _nc_scroll_window;
+ _nc_scrolln;
+ _nc_setupscreen;
+ _nc_signal_handler;
+ _nc_slk_initialize;
+ _nc_synchook;
+ _nc_trace_xnames;
+ _nc_tracemouse;
+ _nc_ungetch;
+ _nc_varargs;
+ _nc_vsscanf;
+ _nc_waddch_nosync;
+ _nc_wgetch;
+ _tracedump;
+ _tracemouse;
+};
+
+NCURSEST_5.8.20110226 {
+ global:
+ _nc_panelhook_sp;
+ assume_default_colors_sp;
+ beep_sp;
+ can_change_color_sp;
+ ceiling_panel;
+ color_content_sp;
+ doupdate_sp;
+ echo_sp;
+ endwin_sp;
+ filter_sp;
+ flash_sp;
+ get_escdelay;
+ get_escdelay_sp;
+ getmouse_sp;
+ getwin_sp;
+ ground_panel;
+ has_colors_sp;
+ has_mouse;
+ has_mouse_sp;
+ init_color_sp;
+ init_pair_sp;
+ is_pad;
+ is_subwin;
+ is_term_resized_sp;
+ isendwin_sp;
+ mcprint_sp;
+ mouseinterval_sp;
+ mousemask_sp;
+ mvcur_sp;
+ new_form_sp;
+ new_menu_sp;
+ newpad_sp;
+ newterm_sp;
+ newwin_sp;
+ nl_sp;
+ noecho_sp;
+ nofilter_sp;
+ nonl_sp;
+ pair_content_sp;
+ resize_term_sp;
+ resizeterm_sp;
+ restartterm_sp;
+ ripoffline_sp;
+ scr_init_sp;
+ scr_restore_sp;
+ scr_set_sp;
+ set_escdelay_sp;
+ slk_attr_set_sp;
+ slk_attr_sp;
+ slk_attroff_sp;
+ slk_attron_sp;
+ slk_attrset_sp;
+ slk_clear_sp;
+ slk_color_sp;
+ slk_init_sp;
+ slk_label_sp;
+ slk_noutrefresh_sp;
+ slk_refresh_sp;
+ slk_restore_sp;
+ slk_set_sp;
+ slk_touch_sp;
+ start_color_sp;
+ termattrs_sp;
+ ungetch_sp;
+ ungetmouse_sp;
+ update_panels_sp;
+ use_default_colors_sp;
+ use_legacy_coding_sp;
+ vidattr_sp;
+ vidputs_sp;
+ local:
+ _nc_TYPE_ALNUM;
+ _nc_TYPE_ALPHA;
+ _nc_TYPE_ENUM;
+ _nc_TYPE_INTEGER;
+ _nc_TYPE_IPV4;
+ _nc_TYPE_NUMERIC;
+ _nc_TYPE_REGEXP;
+ _nc_curscr_of;
+ _nc_do_color_sp;
+ _nc_form_cursor;
+ _nc_format_slks;
+ _nc_free_and_exit_sp;
+ _nc_freeall_sp;
+ _nc_fty_generic;
+ _nc_generic_fieldtype;
+ _nc_get_fieldbuffer;
+ _nc_hash_map_sp;
+ _nc_linedump_sp;
+ _nc_make_oldhash_sp;
+ _nc_makenew_sp;
+ _nc_msec_cost_sp;
+ _nc_mvcur_init_sp;
+ _nc_mvcur_resume_sp;
+ _nc_mvcur_wrap_sp;
+ _nc_newscr_of;
+ _nc_printf_string_sp;
+ _nc_ptr_Escdelay;
+ _nc_reset_colors_sp;
+ _nc_retrace_mmask_t;
+ _nc_ripoffline_sp;
+ _nc_screen_init_sp;
+ _nc_screen_resume_sp;
+ _nc_screen_wrap_sp;
+ _nc_scroll_oldhash_sp;
+ _nc_scroll_optimize_sp;
+ _nc_scrolln_sp;
+ _nc_set_generic_fieldtype;
+ _nc_setupscreen_sp;
+ _nc_stdscr_of;
+} NCURSEST_5.7.20081102;
+
+NCURSEST_5.9.20150530 {
+ global:
+ wgetdelay;
+ local:
+ _nc_mvcur;
+ _nc_mvcur_sp;
+ _nc_trace_mmask_t;
+} NCURSEST_5.8.20110226;
+
+NCURSEST_6.1.20171230 {
+ global:
+ alloc_pair;
+ alloc_pair_sp;
+ extended_color_content;
+ extended_color_content_sp;
+ extended_pair_content;
+ extended_pair_content_sp;
+ find_pair;
+ find_pair_sp;
+ free_pair;
+ free_pair_sp;
+ init_extended_color;
+ init_extended_color_sp;
+ init_extended_pair;
+ init_extended_pair_sp;
+ reset_color_pairs;
+ reset_color_pairs_sp;
+ unfocus_current_field;
+ local:
+ _nc_Unset_Current_Field;
+ _nc_change_pair;
+ _nc_init_color;
+ _nc_init_pair;
+ _nc_pair_content;
+ _nc_reset_color_pair;
+ _nc_set_color_pair;
+} NCURSEST_5.9.20150530;
+
+NCURSEST_6.1.current {
+ global:
+ exit_curses;
+ local:
+ _*;
+} NCURSEST_6.1.20171230;
+
diff --git a/package/ncursest.spec b/package/ncursest.spec
new file mode 100644
index 000000000000..1aca0c673410
--- /dev/null
+++ b/package/ncursest.spec
@@ -0,0 +1,180 @@
+Summary: Curses library with POSIX thread support.
+Name: ncursest6
+Version: 6.1
+Release: 20200118
+License: X11
+Group: Development/Libraries
+Source: ncurses-%{version}-%{release}.tgz
+# URL: https://invisible-island.net/ncurses/
+
+%global MY_ABI 6
+
+# save value before redefining
+%global sys_libdir %{_libdir}
+
+# was redefined...
+#global _prefix /usr/local/ncurses#{MY_ABI}
+
+%global MY_PKG %{sys_libdir}/pkgconfig
+%define MYDATA /usr/local/ncurses/share/terminfo
+
+%description
+The ncurses library routines are a terminal-independent method of
+updating character screens with reasonable optimization.
+
+This package is used for testing ABI %{MY_ABI} with POSIX threads.
+
+%prep
+
+%global is_mandriva %(test -f /etc/mandriva-release && echo 1 || echo 0)
+%global is_redhat %(test -f /etc/redhat-release && echo 1 || echo 0)
+%global is_suse %(test -f /etc/SuSE-release && echo 1 || echo 0)
+
+%if %{is_redhat}
+# generate debug/debug-source packages.
+%else
+%define debug_package %{nil}
+%endif
+
+%if %{is_mandriva}
+%define _disable_ld_as_needed 1
+%define _disable_ld_no_undefined 1
+# libtool is not used here...
+%define _disable_libtoolize 1
+%define _disable_ld_build_id 1
+%endif
+
+%if %{is_redhat}
+# workaround for toolset breakage in Fedora 28
+%define _test_relink --enable-relink
+%else
+%define _test_relink --disable-relink
+%endif
+
+%setup -q -n ncurses-%{version}-%{release}
+
+%build
+%define CFG_OPTS \\\
+ --target %{_target_platform} \\\
+ --prefix=%{_prefix} \\\
+ --bindir=%{_bindir} \\\
+ --includedir=%{_includedir} \\\
+ --libdir=%{_libdir} \\\
+ --includedir='${prefix}/include' \\\
+ --disable-echo \\\
+ --disable-getcap \\\
+ --disable-leaks \\\
+ --disable-macros \\\
+ --disable-overwrite \\\
+ %{_test_relink} \\\
+ --disable-termcap \\\
+ --enable-hard-tabs \\\
+ --enable-opaque-curses \\\
+ --enable-opaque-form \\\
+ --enable-opaque-menu \\\
+ --enable-opaque-panel \\\
+ --enable-pc-files \\\
+ --enable-rpath \\\
+ --enable-warnings \\\
+ --enable-wgetch-events \\\
+ --enable-widec \\\
+ --enable-xmc-glitch \\\
+ --program-suffix=%{MY_ABI} \\\
+ --verbose \\\
+ --with-abi-version=%{MY_ABI} \\\
+ --with-config-suffix=dev \\\
+ --with-cxx-shared \\\
+ --with-default-terminfo-dir=%{MYDATA} \\\
+ --with-develop \\\
+ --with-extra-suffix=%{MY_ABI} \\\
+ --with-install-prefix=$RPM_BUILD_ROOT \\\
+ --with-pkg-config-libdir=%{MY_PKG} \\\
+ --with-shared \\\
+ --with-terminfo-dirs=%{MYDATA}:/usr/share/terminfo \\\
+ --with-termlib \\\
+ --with-ticlib \\\
+ --with-trace \\\
+ --with-versioned-syms \\\
+ --with-xterm-kbs=DEL \\\
+ --without-ada \\\
+ --without-debug \\\
+ --without-normal
+
+%configure %{CFG_OPTS} \
+ --enable-interop \
+ --enable-sp-funcs \
+ --program-suffix=t%{MY_ABI} \
+ --with-pthread
+make
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+make install.libs install.progs
+rm -f test/ncurses
+( cd test && make ncurses LOCAL_LIBDIR=%{_libdir} && mv ncurses $RPM_BUILD_ROOT/%{_bindir}/ncursest%{MY_ABI} )
+
+%if %{is_redhat}
+%ldconfig_scriptlets libs
+%ldconfig_scriptlets c++-libs
+%endif
+
+%clean
+if rm -rf $RPM_BUILD_ROOT; then
+ echo OK
+else
+ find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1
+fi
+exit 0
+
+%files
+%defattr(-,root,root,-)
+%{_bindir}/*
+%{_includedir}/*
+%{_libdir}/*
+
+%changelog
+
+* Tue Dec 24 2019 Thomas Dickey
+- drop custom CC_NORMAL warning flags because setting CFLAGS interferes with
+ matching Fedora's PIE/PIC configuration. Also, generate debug/debug-source
+ packages.
+
+* Sat Nov 16 2019 Thomas Dickey
+- modify clean-rule to work around Fedora NFS bugs.
+
+* Sat Aug 25 2018 Thomas E. Dickey
+- split spec-file into ncurses6 and ncursest6 to work around toolset breakage
+ in Fedora 28
+
+* Sat Jun 02 2018 Thomas E. Dickey
+- build-fix for Mageia
+
+* Sat May 26 2018 Thomas E. Dickey
+- use predefined configure-macro
+- separate ncurses6/ncursest6 packages
+
+* Sat Feb 10 2018 Thomas E. Dickey
+- add ncursest6 package
+- add several development features
+
+* Mon Jan 01 2018 Thomas E. Dickey
+- drop redundant files pattern for "*.pc"
+
+* Tue Dec 26 2017 Thomas E. Dickey
+- add --with-config-suffix option
+
+* Sun Apr 26 2015 Thomas E. Dickey
+- move package to /usr
+
+* Sun Apr 12 2015 Thomas E. Dickey
+- factor-out MY_ABI
+
+* Sat Mar 09 2013 Thomas E. Dickey
+- add --with-cxx-shared option to demonstrate c++ binding as shared library
+
+* Sat Oct 27 2012 Thomas E. Dickey
+- add ncurses program as "ncurses6" to provide demonstration.
+
+* Fri Jun 08 2012 Thomas E. Dickey
+- initial version.
diff --git a/package/ncursest.sym b/package/ncursest.sym
new file mode 100644
index 000000000000..021b81918d17
--- /dev/null
+++ b/package/ncursest.sym
@@ -0,0 +1,883 @@
+# $Id: ncursest.sym,v 1.39 2019/12/14 22:42:32 tom Exp $
+# script for shared library symbol-visibility using libtool
+#
+# This file was generated by ncu-mapsyms
+# Configure options (5.7.20081102)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.8.20110226)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20110404)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20150530)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace
+# Configure options (6.0.20161029)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace
+BC
+COLOR_PAIR
+PAIR_NUMBER
+PC
+SP
+TYPE_ALNUM
+TYPE_ALPHA
+TYPE_ENUM
+TYPE_INTEGER
+TYPE_IPV4
+TYPE_NUMERIC
+TYPE_REGEXP
+UP
+_nc_COLORS
+_nc_COLOR_PAIRS
+_nc_COLS
+_nc_Default_Field
+_nc_Default_Form
+_nc_ESCDELAY
+_nc_LINES
+_nc_TABSIZE
+_nc__nc_outchars
+_nc_access
+_nc_acs_map
+_nc_add_to_try
+_nc_align_termtype
+_nc_alloc_entry_leaks
+_nc_basename
+_nc_boolcodes
+_nc_boolfnames
+_nc_boolnames
+_nc_capcmp
+_nc_captoinfo_leaks
+_nc_check_termtype
+_nc_check_termtype2
+_nc_codes_leaks
+_nc_comp_scan_leaks
+_nc_copy_termtype
+_nc_copy_termtype2
+_nc_count_outchars
+_nc_cur_term
+_nc_curr_col
+_nc_curr_line
+_nc_curscr
+_nc_db_close
+_nc_db_first
+_nc_db_have_data
+_nc_db_next
+_nc_db_open
+_nc_db_put
+_nc_disable_period
+_nc_doalloc
+_nc_entry_match
+_nc_env_access
+_nc_err_abort
+_nc_eventlist_timeout
+_nc_export_termtype2
+_nc_fallback
+_nc_fallback2
+_nc_find_entry
+_nc_find_prescr
+_nc_find_type_entry
+_nc_find_user_entry
+_nc_first_db
+_nc_first_name
+_nc_flush
+_nc_flush_sp
+_nc_fmt_funcptr
+_nc_forget_prescr
+_nc_free_and_exit
+_nc_free_entries
+_nc_free_termtype
+_nc_free_termtype2
+_nc_free_tic
+_nc_free_tinfo
+_nc_free_tparm
+_nc_freeall
+_nc_get_alias_table
+_nc_get_hash_table
+_nc_get_locale
+_nc_get_screensize
+_nc_get_source
+_nc_get_table
+_nc_get_tty_mode
+_nc_get_tty_mode_sp
+_nc_get_type
+_nc_getenv_num
+_nc_globals
+_nc_handle_sigwinch
+_nc_has_mouse
+_nc_head
+_nc_home_terminfo
+_nc_infotocap
+_nc_init_acs
+_nc_init_acs_sp
+_nc_init_pthreads
+_nc_init_termtype
+_nc_is_abs_path
+_nc_is_dir_path
+_nc_is_file_path
+_nc_keep_tic_dir
+_nc_keyname_leaks
+_nc_keypad
+_nc_last_db
+_nc_leaks_tinfo
+_nc_locale_breaks_acs
+_nc_locked_tracef
+_nc_mutex_lock
+_nc_mutex_trylock
+_nc_mutex_unlock
+_nc_name_match
+_nc_names_leaks
+_nc_newscr
+_nc_next_db
+_nc_numcodes
+_nc_numfnames
+_nc_numnames
+_nc_optimize_enable
+_nc_outc_wrapper
+_nc_outch
+_nc_outch_sp
+_nc_panelhook
+_nc_panelhook_sp
+_nc_pathlast
+_nc_prescreen
+_nc_ptr_Cols
+_nc_ptr_Lines
+_nc_putchar
+_nc_putchar_sp
+_nc_putp
+_nc_putp_flush
+_nc_putp_flush_sp
+_nc_putp_sp
+_nc_read_entry
+_nc_read_entry2
+_nc_read_entry_source
+_nc_read_file_entry
+_nc_read_termtype
+_nc_reset_input
+_nc_resolve_uses
+_nc_resolve_uses2
+_nc_retrace_attr_t
+_nc_retrace_bool
+_nc_retrace_chtype
+_nc_retrace_cptr
+_nc_retrace_cvoid_ptr
+_nc_retrace_int
+_nc_retrace_int_attr_t
+_nc_retrace_ptr
+_nc_retrace_sp
+_nc_retrace_unsigned
+_nc_retrace_void_ptr
+_nc_retrace_win
+_nc_ripoffline
+_nc_rootname
+_nc_safe_strcat
+_nc_safe_strcpy
+_nc_screen
+_nc_screen_chain
+_nc_screen_of
+_nc_set_buffer
+_nc_set_buffer_sp
+_nc_set_no_padding
+_nc_set_source
+_nc_set_tputs_trace
+_nc_set_tty_mode
+_nc_set_tty_mode_sp
+_nc_set_type
+_nc_set_writedir
+_nc_setupterm
+_nc_sigprocmask
+_nc_stdscr
+_nc_str_copy
+_nc_str_init
+_nc_str_null
+_nc_strcodes
+_nc_strfnames
+_nc_strict_bsd
+_nc_strnames
+_nc_suppress_warnings
+_nc_syntax
+_nc_syserr_abort
+_nc_tail
+_nc_tgetent_leaks
+_nc_tic_dir
+_nc_tic_expand
+_nc_tic_written
+_nc_timed_wait
+_nc_tinfo_fkeys
+_nc_tinfo_fkeysf
+_nc_tparm_analyze
+_nc_tparm_err
+_nc_trace_buf
+_nc_trace_bufcat
+_nc_tracechar
+_nc_tracing
+_nc_trans_string
+_nc_trim_sgr0
+_nc_ttytype
+_nc_unicode_locale
+_nc_update_screensize
+_nc_use_tracef
+_nc_user_definable
+_nc_visbuf
+_nc_visbuf2
+_nc_visbufn
+_nc_viscbuf
+_nc_wacs_width
+_nc_warning
+_nc_write_entry
+_nc_write_object
+_traceattr
+_traceattr2
+_tracechar
+_tracechtype
+_tracechtype2
+_tracef
+addch
+addchnstr
+addchstr
+addnstr
+addstr
+alloc_pair
+alloc_pair_sp
+assume_default_colors
+assume_default_colors_sp
+attr_get
+attr_off
+attr_on
+attr_set
+attroff
+attron
+attrset
+baudrate
+baudrate_sp
+beep
+beep_sp
+bkgd
+bkgdset
+border
+bottom_panel
+box
+can_change_color
+can_change_color_sp
+cbreak
+cbreak_sp
+ceiling_panel
+chgat
+clear
+clearok
+clrtobot
+clrtoeol
+color_content
+color_content_sp
+color_set
+copywin
+current_field
+current_item
+curs_set
+curs_set_sp
+curses_trace
+curses_version
+data_ahead
+data_behind
+def_prog_mode
+def_prog_mode_sp
+def_shell_mode
+def_shell_mode_sp
+define_key
+define_key_sp
+del_curterm
+del_curterm_sp
+del_panel
+delay_output
+delay_output_sp
+delch
+deleteln
+delscreen
+delwin
+derwin
+doupdate
+doupdate_sp
+dup_field
+dupwin
+dynamic_field_info
+echo
+echo_sp
+echochar
+endwin
+endwin_sp
+erase
+erasechar
+erasechar_sp
+exit_curses
+exit_terminfo
+extended_color_content
+extended_color_content_sp
+extended_pair_content
+extended_pair_content_sp
+field_arg
+field_back
+field_buffer
+field_count
+field_fore
+field_index
+field_info
+field_init
+field_just
+field_opts
+field_opts_off
+field_opts_on
+field_pad
+field_status
+field_term
+field_type
+field_userptr
+filter
+filter_sp
+find_pair
+find_pair_sp
+flash
+flash_sp
+flushinp
+flushinp_sp
+form_driver
+form_fields
+form_init
+form_opts
+form_opts_off
+form_opts_on
+form_page
+form_request_by_name
+form_request_name
+form_sub
+form_term
+form_userptr
+form_win
+free_field
+free_fieldtype
+free_form
+free_item
+free_menu
+free_pair
+free_pair_sp
+get_escdelay
+get_escdelay_sp
+getattrs
+getbegx
+getbegy
+getbkgd
+getch
+getcurx
+getcury
+getmaxx
+getmaxy
+getmouse
+getmouse_sp
+getnstr
+getparx
+getpary
+getstr
+getwin
+getwin_sp
+ground_panel
+halfdelay
+halfdelay_sp
+has_colors
+has_colors_sp
+has_ic
+has_ic_sp
+has_il
+has_il_sp
+has_key
+has_key_sp
+has_mouse
+has_mouse_sp
+hide_panel
+hline
+idcok
+idlok
+immedok
+inch
+inchnstr
+inchstr
+init_color
+init_color_sp
+init_extended_color
+init_extended_color_sp
+init_extended_pair
+init_extended_pair_sp
+init_pair
+init_pair_sp
+initscr
+innstr
+insch
+insdelln
+insertln
+insnstr
+insstr
+instr
+intrflush
+intrflush_sp
+is_cleared
+is_idcok
+is_idlok
+is_immedok
+is_keypad
+is_leaveok
+is_linetouched
+is_nodelay
+is_notimeout
+is_pad
+is_scrollok
+is_subwin
+is_syncok
+is_term_resized
+is_term_resized_sp
+is_wintouched
+isendwin
+isendwin_sp
+item_count
+item_description
+item_index
+item_init
+item_name
+item_opts
+item_opts_off
+item_opts_on
+item_term
+item_userptr
+item_value
+item_visible
+key_defined
+key_defined_sp
+keybound
+keybound_sp
+keyname
+keyname_sp
+keyok
+keyok_sp
+keypad
+killchar
+killchar_sp
+leaveok
+link_field
+link_fieldtype
+longname
+longname_sp
+mcprint
+mcprint_sp
+menu_back
+menu_driver
+menu_fore
+menu_format
+menu_grey
+menu_init
+menu_items
+menu_mark
+menu_opts
+menu_opts_off
+menu_opts_on
+menu_pad
+menu_pattern
+menu_request_by_name
+menu_request_name
+menu_spacing
+menu_sub
+menu_term
+menu_userptr
+menu_win
+meta
+mouse_trafo
+mouseinterval
+mouseinterval_sp
+mousemask
+mousemask_sp
+move
+move_field
+move_panel
+mvaddch
+mvaddchnstr
+mvaddchstr
+mvaddnstr
+mvaddstr
+mvchgat
+mvcur
+mvcur_sp
+mvdelch
+mvderwin
+mvgetch
+mvgetnstr
+mvgetstr
+mvhline
+mvinch
+mvinchnstr
+mvinchstr
+mvinnstr
+mvinsch
+mvinsnstr
+mvinsstr
+mvinstr
+mvprintw
+mvscanw
+mvvline
+mvwaddch
+mvwaddchnstr
+mvwaddchstr
+mvwaddnstr
+mvwaddstr
+mvwchgat
+mvwdelch
+mvwgetch
+mvwgetnstr
+mvwgetstr
+mvwhline
+mvwin
+mvwinch
+mvwinchnstr
+mvwinchstr
+mvwinnstr
+mvwinsch
+mvwinsnstr
+mvwinsstr
+mvwinstr
+mvwprintw
+mvwscanw
+mvwvline
+napms
+napms_sp
+new_field
+new_fieldtype
+new_form
+new_form_sp
+new_item
+new_menu
+new_menu_sp
+new_page
+new_panel
+new_prescr
+newpad
+newpad_sp
+newterm
+newterm_sp
+newwin
+newwin_sp
+nl
+nl_sp
+nocbreak
+nocbreak_sp
+nodelay
+noecho
+noecho_sp
+nofilter
+nofilter_sp
+nonl
+nonl_sp
+noqiflush
+noqiflush_sp
+noraw
+noraw_sp
+notimeout
+ospeed
+overlay
+overwrite
+pair_content
+pair_content_sp
+panel_above
+panel_below
+panel_hidden
+panel_userptr
+panel_window
+pechochar
+pnoutrefresh
+pos_form_cursor
+pos_menu_cursor
+post_form
+post_menu
+prefresh
+printw
+putp
+putp_sp
+putwin
+qiflush
+qiflush_sp
+raw
+raw_sp
+redrawwin
+refresh
+replace_panel
+reset_color_pairs
+reset_color_pairs_sp
+reset_prog_mode
+reset_prog_mode_sp
+reset_shell_mode
+reset_shell_mode_sp
+resetty
+resetty_sp
+resize_term
+resize_term_sp
+resizeterm
+resizeterm_sp
+restartterm
+restartterm_sp
+ripoffline
+ripoffline_sp
+savetty
+savetty_sp
+scale_form
+scale_menu
+scanw
+scr_dump
+scr_init
+scr_init_sp
+scr_restore
+scr_restore_sp
+scr_set
+scr_set_sp
+scrl
+scroll
+scrollok
+set_current_field
+set_current_item
+set_curterm
+set_curterm_sp
+set_escdelay
+set_escdelay_sp
+set_field_back
+set_field_buffer
+set_field_fore
+set_field_init
+set_field_just
+set_field_opts
+set_field_pad
+set_field_status
+set_field_term
+set_field_type
+set_field_userptr
+set_fieldtype_arg
+set_fieldtype_choice
+set_form_fields
+set_form_init
+set_form_opts
+set_form_page
+set_form_sub
+set_form_term
+set_form_userptr
+set_form_win
+set_item_init
+set_item_opts
+set_item_term
+set_item_userptr
+set_item_value
+set_max_field
+set_menu_back
+set_menu_fore
+set_menu_format
+set_menu_grey
+set_menu_init
+set_menu_items
+set_menu_mark
+set_menu_opts
+set_menu_pad
+set_menu_pattern
+set_menu_spacing
+set_menu_sub
+set_menu_term
+set_menu_userptr
+set_menu_win
+set_new_page
+set_panel_userptr
+set_tabsize
+set_tabsize_sp
+set_term
+set_top_row
+setscrreg
+setupterm
+show_panel
+slk_attr
+slk_attr_set
+slk_attr_set_sp
+slk_attr_sp
+slk_attroff
+slk_attroff_sp
+slk_attron
+slk_attron_sp
+slk_attrset
+slk_attrset_sp
+slk_clear
+slk_clear_sp
+slk_color
+slk_color_sp
+slk_init
+slk_init_sp
+slk_label
+slk_label_sp
+slk_noutrefresh
+slk_noutrefresh_sp
+slk_refresh
+slk_refresh_sp
+slk_restore
+slk_restore_sp
+slk_set
+slk_set_sp
+slk_touch
+slk_touch_sp
+standend
+standout
+start_color
+start_color_sp
+subpad
+subwin
+syncok
+termattrs
+termattrs_sp
+termname
+termname_sp
+tgetent
+tgetent_sp
+tgetflag
+tgetflag_sp
+tgetnum
+tgetnum_sp
+tgetstr
+tgetstr_sp
+tgoto
+tigetflag
+tigetflag_sp
+tigetnum
+tigetnum_sp
+tigetstr
+tigetstr_sp
+timeout
+tiparm
+top_panel
+top_row
+touchline
+touchwin
+tparm
+tputs
+tputs_sp
+trace
+typeahead
+typeahead_sp
+unctrl
+unctrl_sp
+unfocus_current_field
+ungetch
+ungetch_sp
+ungetmouse
+ungetmouse_sp
+unpost_form
+unpost_menu
+untouchwin
+update_panels
+update_panels_sp
+use_default_colors
+use_default_colors_sp
+use_env
+use_env_sp
+use_extended_names
+use_legacy_coding
+use_legacy_coding_sp
+use_screen
+use_tioctl
+use_tioctl_sp
+use_window
+vidattr
+vidattr_sp
+vidputs
+vidputs_sp
+vline
+vw_printw
+vw_scanw
+vwprintw
+vwscanw
+waddch
+waddchnstr
+waddchstr
+waddnstr
+waddstr
+wattr_get
+wattr_off
+wattr_on
+wattr_set
+wattroff
+wattron
+wattrset
+wbkgd
+wbkgdset
+wborder
+wchgat
+wclear
+wclrtobot
+wclrtoeol
+wcolor_set
+wcursyncup
+wdelch
+wdeleteln
+wechochar
+wenclose
+werase
+wgetch
+wgetch_events
+wgetdelay
+wgetnstr
+wgetnstr_events
+wgetparent
+wgetscrreg
+wgetstr
+whline
+winch
+winchnstr
+winchstr
+winnstr
+winsch
+winsdelln
+winsertln
+winsnstr
+winsstr
+winstr
+wmouse_trafo
+wmove
+wnoutrefresh
+wprintw
+wredrawln
+wrefresh
+wresize
+wscanw
+wscrl
+wsetscrreg
+wstandend
+wstandout
+wsyncdown
+wsyncup
+wtimeout
+wtouchln
+wvline
diff --git a/package/ncursestw.map b/package/ncursestw.map
new file mode 100644
index 000000000000..d6d7941bdd36
--- /dev/null
+++ b/package/ncursestw.map
@@ -0,0 +1,1297 @@
+# $Id: ncursestw.map,v 1.50 2019/12/14 23:28:20 tom Exp $
+# script for shared library symbol-versioning using ld
+#
+# This file was generated by ncu-mapsyms
+# Configure options (5.7.20081102)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.8.20110226)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20110404)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20150530)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace
+# Configure options (6.0.current)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace
+
+NCURSES_TIC_5.0.19991023 {
+ global:
+ _nc_capcmp;
+ _nc_check_termtype;
+ _nc_entry_match;
+ _nc_infotocap;
+ _nc_read_entry_source;
+ _nc_reset_input;
+ _nc_resolve_uses;
+ _nc_screen;
+ _nc_set_writedir;
+ _nc_syntax;
+ _nc_tic_expand;
+ _nc_tic_written;
+ _nc_trans_string;
+ _nc_write_entry;
+ local:
+ _nc_captoinfo;
+ _nc_comment_end;
+ _nc_comment_start;
+ _nc_copy_entry;
+ _nc_curr_file_pos;
+ _nc_curr_token;
+ _nc_get_token;
+ _nc_init_entry;
+ _nc_merge_entry;
+ _nc_panic_mode;
+ _nc_parse_entry;
+ _nc_push_token;
+ _nc_save_str;
+ _nc_start_line;
+ _nc_wrap_entry;
+};
+
+NCURSES_TIC_5.1.20000708 {
+ global:
+ _nc_disable_period;
+} NCURSES_TIC_5.0.19991023;
+
+NCURSES_TIC_5.5.20051010 {
+ global:
+ _nc_alloc_entry_leaks;
+ _nc_captoinfo_leaks;
+ _nc_check_termtype2;
+ _nc_comp_scan_leaks;
+ _nc_resolve_uses2;
+} NCURSES_TIC_5.1.20000708;
+
+NCURSES_TIC_5.7.20081102 {
+ global:
+ _nc_free_tic;
+ local:
+ _nc_comp_captab_leaks;
+ _nc_leaks_tic;
+} NCURSES_TIC_5.5.20051010;
+
+NCURSES_TIC_5.9.20150530 {
+ global:
+ _nc_strict_bsd;
+} NCURSES_TIC_5.7.20081102;
+
+NCURSES_TIC_6.1.20171230 {
+ global:
+ _nc_read_entry2;
+ _nc_write_object;
+ local:
+ _*;
+} NCURSES_TIC_5.9.20150530;
+
+NCURSES_TINFO_5.0.19991023 {
+ global:
+ BC;
+ PC;
+ SP;
+ UP;
+ _nc_access;
+ _nc_add_to_try;
+ _nc_copy_termtype;
+ _nc_curr_col;
+ _nc_curr_line;
+ _nc_doalloc;
+ _nc_err_abort;
+ _nc_fallback;
+ _nc_find_entry;
+ _nc_find_type_entry;
+ _nc_first_name;
+ _nc_free_entries;
+ _nc_free_termtype;
+ _nc_free_tparm;
+ _nc_freeall;
+ _nc_get_hash_table;
+ _nc_get_table;
+ _nc_get_tty_mode;
+ _nc_get_type;
+ _nc_getenv_num;
+ _nc_head;
+ _nc_home_terminfo;
+ _nc_init_acs;
+ _nc_keep_tic_dir;
+ _nc_keypad;
+ _nc_name_match;
+ _nc_outch;
+ _nc_read_entry;
+ _nc_read_file_entry;
+ _nc_screen_chain;
+ _nc_set_buffer;
+ _nc_set_source;
+ _nc_set_tty_mode;
+ _nc_set_type;
+ _nc_suppress_warnings;
+ _nc_syserr_abort;
+ _nc_tail;
+ _nc_tic_dir;
+ _nc_timed_wait;
+ _nc_tinfo_fkeysf;
+ _nc_trace_buf;
+ _nc_tracing;
+ _nc_update_screensize;
+ _nc_visbuf;
+ _nc_visbuf2;
+ _nc_warning;
+ _tracechar;
+ baudrate;
+ cbreak;
+ curs_set;
+ curses_version;
+ def_prog_mode;
+ def_shell_mode;
+ define_key;
+ del_curterm;
+ delay_output;
+ erasechar;
+ flushinp;
+ halfdelay;
+ has_ic;
+ has_il;
+ has_key;
+ idcok;
+ idlok;
+ intrflush;
+ keybound;
+ keyname;
+ keyok;
+ keypad;
+ killchar;
+ longname;
+ meta;
+ napms;
+ nocbreak;
+ nodelay;
+ noqiflush;
+ noraw;
+ notimeout;
+ ospeed;
+ putp;
+ qiflush;
+ raw;
+ reset_prog_mode;
+ reset_shell_mode;
+ resetty;
+ savetty;
+ set_curterm;
+ setupterm;
+ termname;
+ tgetent;
+ tgetflag;
+ tgetnum;
+ tgetstr;
+ tgoto;
+ tigetflag;
+ tigetnum;
+ tigetstr;
+ tparm;
+ tputs;
+ trace;
+ typeahead;
+ unctrl;
+ use_env;
+ wtimeout;
+ local:
+ _nc_baudrate;
+ _nc_expand_try;
+ _nc_init_keytry;
+ _nc_nulls_sent;
+ _nc_ospeed;
+ _nc_read_termcap;
+ _nc_read_termcap_entry;
+ _nc_remove_key;
+ _nc_remove_string;
+ _nc_trace_tries;
+ _nc_tracebits;
+};
+
+NCURSES_TINFO_5.1.20000708 {
+ global:
+ _nc_align_termtype;
+ _nc_flush;
+ _nc_tinfo_fkeys;
+ _nc_user_definable;
+ use_extended_names;
+} NCURSES_TINFO_5.0.19991023;
+
+NCURSES_TINFO_5.2.20001021 {
+ global:
+ _nc_basename;
+ _nc_env_access;
+ _nc_safe_strcat;
+ _nc_safe_strcpy;
+ _nc_str_copy;
+ _nc_str_init;
+ _nc_str_null;
+} NCURSES_TINFO_5.1.20000708;
+
+NCURSES_TINFO_5.3.20021019 {
+ global:
+ _nc_rootname;
+ _nc_tparm_err;
+ _nc_visbufn;
+} NCURSES_TINFO_5.2.20001021;
+
+NCURSES_TINFO_5.4.20040208 {
+ global:
+ _nc_get_locale;
+ _nc_locale_breaks_acs;
+ _nc_pathlast;
+ _nc_retrace_attr_t;
+ _nc_retrace_bool;
+ _nc_retrace_chtype;
+ _nc_retrace_int;
+ _nc_retrace_ptr;
+ _nc_retrace_sp;
+ _nc_retrace_unsigned;
+ _nc_retrace_win;
+ _nc_tparm_analyze;
+ _nc_trace_bufcat;
+ _nc_unicode_locale;
+ _traceattr;
+ _traceattr2;
+ _tracechtype;
+ _tracechtype2;
+ _tracef;
+ key_defined;
+ local:
+ _nc_altcharset_name;
+ _nc_trace_ttymode;
+} NCURSES_TINFO_5.3.20021019;
+
+NCURSES_TINFO_5.5.20051010 {
+ global:
+ _nc_get_source;
+ _nc_retrace_cptr;
+ _nc_retrace_cvoid_ptr;
+ _nc_retrace_void_ptr;
+ _nc_setupterm;
+ _nc_trim_sgr0;
+ local:
+ _nc_delink_entry;
+ _nc_free_entry;
+} NCURSES_TINFO_5.4.20040208;
+
+NCURSES_TINFO_5.6.20061217 {
+ global:
+ _nc_db_close;
+ _nc_db_first;
+ _nc_db_have_data;
+ _nc_db_next;
+ _nc_db_open;
+ _nc_db_put;
+ _nc_eventlist_timeout;
+ _nc_first_db;
+ _nc_handle_sigwinch;
+ _nc_is_abs_path;
+ _nc_is_dir_path;
+ _nc_is_file_path;
+ _nc_keyname_leaks;
+ _nc_last_db;
+ _nc_next_db;
+ _nc_read_termtype;
+ _nc_tgetent_leaks;
+ _nc_viscbuf;
+ local:
+ _nc_db_get;
+ _nc_db_have_index;
+ _nc_hashed_db;
+ _nc_viscbuf2;
+} NCURSES_TINFO_5.5.20051010;
+
+NCURSES_TINFO_5.7.20081102 {
+ global:
+ _nc_COLS;
+ _nc_LINES;
+ _nc_TABSIZE;
+ _nc__nc_outchars;
+ _nc_acs_map;
+ _nc_boolcodes;
+ _nc_boolfnames;
+ _nc_boolnames;
+ _nc_codes_leaks;
+ _nc_count_outchars;
+ _nc_cur_term;
+ _nc_curscr;
+ _nc_free_tinfo;
+ _nc_get_alias_table;
+ _nc_get_screensize;
+ _nc_globals;
+ _nc_init_pthreads;
+ _nc_leaks_tinfo;
+ _nc_locked_tracef;
+ _nc_mutex_lock;
+ _nc_mutex_trylock;
+ _nc_mutex_unlock;
+ _nc_names_leaks;
+ _nc_newscr;
+ _nc_numcodes;
+ _nc_numfnames;
+ _nc_numnames;
+ _nc_prescreen;
+ _nc_ptr_Cols;
+ _nc_ptr_Lines;
+ _nc_screen_of;
+ _nc_set_no_padding;
+ _nc_set_tputs_trace;
+ _nc_stdscr;
+ _nc_strcodes;
+ _nc_strfnames;
+ _nc_strnames;
+ _nc_tracechar;
+ _nc_ttytype;
+ _nc_use_tracef;
+ _nc_viswbuf;
+ _nc_viswbufn;
+ _nc_viswibuf;
+ _tracecchar_t;
+ _tracecchar_t2;
+ set_tabsize;
+ local:
+ _nc__nc_tputs_trace;
+ _nc_keyname;
+ _nc_mutex_init;
+ _nc_unctrl;
+ _nc_viswbuf2;
+} NCURSES_TINFO_5.6.20061217;
+
+NCURSES_TINFO_5.8.20110226 {
+ global:
+ _nc_flush_sp;
+ _nc_get_tty_mode_sp;
+ _nc_init_acs_sp;
+ _nc_outc_wrapper;
+ _nc_outch_sp;
+ _nc_putp;
+ _nc_putp_flush;
+ _nc_putp_flush_sp;
+ _nc_putp_sp;
+ _nc_retrace_int_attr_t;
+ _nc_set_buffer_sp;
+ _nc_set_tty_mode_sp;
+ _nc_sigprocmask;
+ baudrate_sp;
+ cbreak_sp;
+ curs_set_sp;
+ def_prog_mode_sp;
+ def_shell_mode_sp;
+ define_key_sp;
+ del_curterm_sp;
+ delay_output_sp;
+ erasechar_sp;
+ flushinp_sp;
+ halfdelay_sp;
+ has_ic_sp;
+ has_il_sp;
+ has_key_sp;
+ intrflush_sp;
+ key_defined_sp;
+ keybound_sp;
+ keyname_sp;
+ keyok_sp;
+ killchar_sp;
+ longname_sp;
+ napms_sp;
+ new_prescr;
+ nocbreak_sp;
+ noqiflush_sp;
+ noraw_sp;
+ putp_sp;
+ qiflush_sp;
+ raw_sp;
+ reset_prog_mode_sp;
+ reset_shell_mode_sp;
+ resetty_sp;
+ savetty_sp;
+ set_curterm_sp;
+ set_tabsize_sp;
+ termname_sp;
+ tgetent_sp;
+ tgetflag_sp;
+ tgetnum_sp;
+ tgetstr_sp;
+ tigetflag_sp;
+ tigetnum_sp;
+ tigetstr_sp;
+ tiparm;
+ tputs_sp;
+ typeahead_sp;
+ unctrl_sp;
+ use_env_sp;
+ local:
+ _nc_get_cur_term;
+ _nc_get_cur_term_sp;
+ _nc_get_hash_info;
+ _nc_ptr_Tabsize;
+ _nc_retrace_char;
+ _nc_setup_tinfo;
+ _nc_tinfo_cmdch;
+} NCURSES_TINFO_5.7.20081102;
+
+NCURSES_TINFO_5.9.20150530 {
+ global:
+ _nc_init_termtype;
+ _nc_putchar;
+ _nc_putchar_sp;
+ use_tioctl;
+ use_tioctl_sp;
+ local:
+ _nc_comp_error_leaks;
+ _nc_db_iterator_leaks;
+ _nc_setenv_num;
+} NCURSES_TINFO_5.8.20110226;
+
+NCURSES_TINFO_6.1.20171230 {
+ global:
+ _nc_copy_termtype2;
+ _nc_export_termtype2;
+ _nc_fallback2;
+ _nc_find_prescr;
+ _nc_forget_prescr;
+ _nc_free_termtype2;
+} NCURSES_TINFO_5.9.20150530;
+
+NCURSES_TINFO_6.1.current {
+ global:
+ _nc_find_user_entry;
+ _nc_fmt_funcptr;
+ _nc_wacs_width;
+ curses_trace;
+ exit_terminfo;
+ local:
+ _*;
+} NCURSES_TINFO_6.1.20171230;
+
+NCURSESTW_5.7.20081102 {
+ global:
+ COLOR_PAIR;
+ PAIR_NUMBER;
+ TYPE_ALNUM;
+ TYPE_ALPHA;
+ TYPE_ENUM;
+ TYPE_INTEGER;
+ TYPE_IPV4;
+ TYPE_NUMERIC;
+ TYPE_REGEXP;
+ _nc_COLORS;
+ _nc_COLOR_PAIRS;
+ _nc_Default_Field; # deprecated in ABI6
+ _nc_Default_Form; # deprecated in ABI6
+ _nc_ESCDELAY;
+ _nc_free_and_exit;
+ _nc_has_mouse; # deprecated in ABI6
+ _nc_optimize_enable;
+ _nc_panelhook;
+ _nc_ripoffline;
+ _nc_wacs;
+ _nc_wcrtomb;
+ add_wch;
+ add_wchnstr;
+ add_wchstr;
+ addch;
+ addchnstr;
+ addchstr;
+ addnstr;
+ addnwstr;
+ addstr;
+ addwstr;
+ assume_default_colors;
+ attr_get;
+ attr_off;
+ attr_on;
+ attr_set;
+ attroff;
+ attron;
+ attrset;
+ beep;
+ bkgd;
+ bkgdset;
+ bkgrnd;
+ bkgrndset;
+ border;
+ border_set;
+ bottom_panel;
+ box;
+ box_set;
+ can_change_color;
+ chgat;
+ clear;
+ clearok;
+ clrtobot;
+ clrtoeol;
+ color_content;
+ color_set;
+ copywin;
+ current_field;
+ current_item;
+ data_ahead;
+ data_behind;
+ del_panel;
+ delch;
+ deleteln;
+ delscreen;
+ delwin;
+ derwin;
+ doupdate;
+ dup_field;
+ dupwin;
+ dynamic_field_info;
+ echo;
+ echo_wchar;
+ echochar;
+ endwin;
+ erase;
+ erasewchar;
+ field_arg;
+ field_back;
+ field_buffer;
+ field_count;
+ field_fore;
+ field_index;
+ field_info;
+ field_init;
+ field_just;
+ field_opts;
+ field_opts_off;
+ field_opts_on;
+ field_pad;
+ field_status;
+ field_term;
+ field_type;
+ field_userptr;
+ filter;
+ flash;
+ form_driver;
+ form_fields;
+ form_init;
+ form_opts;
+ form_opts_off;
+ form_opts_on;
+ form_page;
+ form_request_by_name;
+ form_request_name;
+ form_sub;
+ form_term;
+ form_userptr;
+ form_win;
+ free_field;
+ free_fieldtype;
+ free_form;
+ free_item;
+ free_menu;
+ get_wch;
+ get_wstr;
+ getattrs;
+ getbegx;
+ getbegy;
+ getbkgd;
+ getbkgrnd;
+ getcchar;
+ getch;
+ getcurx;
+ getcury;
+ getmaxx;
+ getmaxy;
+ getmouse;
+ getn_wstr;
+ getnstr;
+ getparx;
+ getpary;
+ getstr;
+ getwin;
+ has_colors;
+ hide_panel;
+ hline;
+ hline_set;
+ immedok;
+ in_wch;
+ in_wchnstr;
+ in_wchstr;
+ inch;
+ inchnstr;
+ inchstr;
+ init_color;
+ init_pair;
+ initscr;
+ innstr;
+ innwstr;
+ ins_nwstr;
+ ins_wch;
+ ins_wstr;
+ insch;
+ insdelln;
+ insertln;
+ insnstr;
+ insstr;
+ instr;
+ inwstr;
+ is_cleared;
+ is_idcok;
+ is_idlok;
+ is_immedok;
+ is_keypad;
+ is_leaveok;
+ is_linetouched;
+ is_nodelay;
+ is_notimeout;
+ is_scrollok;
+ is_syncok;
+ is_term_resized;
+ is_wintouched;
+ isendwin;
+ item_count;
+ item_description;
+ item_index;
+ item_init;
+ item_name;
+ item_opts;
+ item_opts_off;
+ item_opts_on;
+ item_term;
+ item_userptr;
+ item_value;
+ item_visible;
+ key_name;
+ killwchar;
+ leaveok;
+ link_field;
+ link_fieldtype;
+ mcprint;
+ menu_back;
+ menu_driver;
+ menu_fore;
+ menu_format;
+ menu_grey;
+ menu_init;
+ menu_items;
+ menu_mark;
+ menu_opts;
+ menu_opts_off;
+ menu_opts_on;
+ menu_pad;
+ menu_pattern;
+ menu_request_by_name;
+ menu_request_name;
+ menu_spacing;
+ menu_sub;
+ menu_term;
+ menu_userptr;
+ menu_win;
+ mouse_trafo;
+ mouseinterval;
+ mousemask;
+ move;
+ move_field;
+ move_panel;
+ mvadd_wch;
+ mvadd_wchnstr;
+ mvadd_wchstr;
+ mvaddch;
+ mvaddchnstr;
+ mvaddchstr;
+ mvaddnstr;
+ mvaddnwstr;
+ mvaddstr;
+ mvaddwstr;
+ mvchgat;
+ mvcur;
+ mvdelch;
+ mvderwin;
+ mvget_wch;
+ mvget_wstr;
+ mvgetch;
+ mvgetn_wstr;
+ mvgetnstr;
+ mvgetstr;
+ mvhline;
+ mvhline_set;
+ mvin_wch;
+ mvin_wchnstr;
+ mvin_wchstr;
+ mvinch;
+ mvinchnstr;
+ mvinchstr;
+ mvinnstr;
+ mvinnwstr;
+ mvins_nwstr;
+ mvins_wch;
+ mvins_wstr;
+ mvinsch;
+ mvinsnstr;
+ mvinsstr;
+ mvinstr;
+ mvinwstr;
+ mvprintw;
+ mvscanw;
+ mvvline;
+ mvvline_set;
+ mvwadd_wch;
+ mvwadd_wchnstr;
+ mvwadd_wchstr;
+ mvwaddch;
+ mvwaddchnstr;
+ mvwaddchstr;
+ mvwaddnstr;
+ mvwaddnwstr;
+ mvwaddstr;
+ mvwaddwstr;
+ mvwchgat;
+ mvwdelch;
+ mvwget_wch;
+ mvwget_wstr;
+ mvwgetch;
+ mvwgetn_wstr;
+ mvwgetnstr;
+ mvwgetstr;
+ mvwhline;
+ mvwhline_set;
+ mvwin;
+ mvwin_wch;
+ mvwin_wchnstr;
+ mvwin_wchstr;
+ mvwinch;
+ mvwinchnstr;
+ mvwinchstr;
+ mvwinnstr;
+ mvwinnwstr;
+ mvwins_nwstr;
+ mvwins_wch;
+ mvwins_wstr;
+ mvwinsch;
+ mvwinsnstr;
+ mvwinsstr;
+ mvwinstr;
+ mvwinwstr;
+ mvwprintw;
+ mvwscanw;
+ mvwvline;
+ mvwvline_set;
+ new_field;
+ new_fieldtype;
+ new_form;
+ new_item;
+ new_menu;
+ new_page;
+ new_panel;
+ newpad;
+ newterm;
+ newwin;
+ nl;
+ noecho;
+ nofilter;
+ nonl;
+ overlay;
+ overwrite;
+ pair_content;
+ panel_above;
+ panel_below;
+ panel_hidden;
+ panel_userptr;
+ panel_window;
+ pecho_wchar;
+ pechochar;
+ pnoutrefresh;
+ pos_form_cursor;
+ pos_menu_cursor;
+ post_form;
+ post_menu;
+ prefresh;
+ printw;
+ putwin;
+ redrawwin;
+ refresh;
+ replace_panel;
+ resize_term;
+ resizeterm;
+ restartterm;
+ ripoffline;
+ scale_form;
+ scale_menu;
+ scanw;
+ scr_dump;
+ scr_init;
+ scr_restore;
+ scr_set;
+ scrl;
+ scroll;
+ scrollok;
+ set_current_field;
+ set_current_item;
+ set_escdelay;
+ set_field_back;
+ set_field_buffer;
+ set_field_fore;
+ set_field_init;
+ set_field_just;
+ set_field_opts;
+ set_field_pad;
+ set_field_status;
+ set_field_term;
+ set_field_type;
+ set_field_userptr;
+ set_fieldtype_arg;
+ set_fieldtype_choice;
+ set_form_fields;
+ set_form_init;
+ set_form_opts;
+ set_form_page;
+ set_form_sub;
+ set_form_term;
+ set_form_userptr;
+ set_form_win;
+ set_item_init;
+ set_item_opts;
+ set_item_term;
+ set_item_userptr;
+ set_item_value;
+ set_max_field;
+ set_menu_back;
+ set_menu_fore;
+ set_menu_format;
+ set_menu_grey;
+ set_menu_init;
+ set_menu_items;
+ set_menu_mark;
+ set_menu_opts;
+ set_menu_pad;
+ set_menu_pattern;
+ set_menu_spacing;
+ set_menu_sub;
+ set_menu_term;
+ set_menu_userptr;
+ set_menu_win;
+ set_new_page;
+ set_panel_userptr;
+ set_term;
+ set_top_row;
+ setcchar;
+ setscrreg;
+ show_panel;
+ slk_attr;
+ slk_attr_off;
+ slk_attr_on;
+ slk_attr_set;
+ slk_attroff;
+ slk_attron;
+ slk_attrset;
+ slk_clear;
+ slk_color;
+ slk_init;
+ slk_label;
+ slk_noutrefresh;
+ slk_refresh;
+ slk_restore;
+ slk_set;
+ slk_touch;
+ slk_wset;
+ standend;
+ standout;
+ start_color;
+ subpad;
+ subwin;
+ syncok;
+ term_attrs;
+ termattrs;
+ timeout;
+ top_panel;
+ top_row;
+ touchline;
+ touchwin;
+ unget_wch;
+ ungetch;
+ ungetmouse;
+ unpost_form;
+ unpost_menu;
+ untouchwin;
+ update_panels;
+ use_default_colors;
+ use_legacy_coding;
+ use_screen;
+ use_window;
+ vid_attr;
+ vid_puts;
+ vidattr;
+ vidputs;
+ vline;
+ vline_set;
+ vw_printw;
+ vw_scanw;
+ vwprintw;
+ vwscanw;
+ wadd_wch;
+ wadd_wchnstr;
+ wadd_wchstr;
+ waddch;
+ waddchnstr;
+ waddchstr;
+ waddnstr;
+ waddnwstr;
+ waddstr;
+ waddwstr;
+ wattr_get;
+ wattr_off;
+ wattr_on;
+ wattr_set;
+ wattroff;
+ wattron;
+ wattrset;
+ wbkgd;
+ wbkgdset;
+ wbkgrnd;
+ wbkgrndset;
+ wborder;
+ wborder_set;
+ wchgat;
+ wclear;
+ wclrtobot;
+ wclrtoeol;
+ wcolor_set;
+ wcursyncup;
+ wdelch;
+ wdeleteln;
+ wecho_wchar;
+ wechochar;
+ wenclose;
+ werase;
+ wget_wch;
+ wget_wstr;
+ wgetbkgrnd;
+ wgetch;
+ wgetch_events;
+ wgetn_wstr;
+ wgetnstr;
+ wgetnstr_events;
+ wgetparent;
+ wgetscrreg;
+ wgetstr;
+ whline;
+ whline_set;
+ win_wch;
+ win_wchnstr;
+ win_wchstr;
+ winch;
+ winchnstr;
+ winchstr;
+ winnstr;
+ winnwstr;
+ wins_nwstr;
+ wins_wch;
+ wins_wstr;
+ winsch;
+ winsdelln;
+ winsertln;
+ winsnstr;
+ winsstr;
+ winstr;
+ winwstr;
+ wmouse_trafo;
+ wmove;
+ wnoutrefresh;
+ wprintw;
+ wredrawln;
+ wrefresh;
+ wresize;
+ wscanw;
+ wscrl;
+ wsetscrreg;
+ wstandend;
+ wstandout;
+ wsyncdown;
+ wsyncup;
+ wtouchln;
+ wunctrl;
+ wvline;
+ wvline_set;
+ local:
+ _nc_Calculate_Item_Length_and_Width;
+ _nc_Calculate_Text_Width;
+ _nc_Connect_Items;
+ _nc_Copy_Argument;
+ _nc_Copy_Type;
+ _nc_Default_FieldType;
+ _nc_Default_Item;
+ _nc_Default_Menu;
+ _nc_Disconnect_Items;
+ _nc_Draw_Menu;
+ _nc_First_Active_Field;
+ _nc_Free_Argument;
+ _nc_Free_Type;
+ _nc_Internal_Validation;
+ _nc_Link_Items;
+ _nc_Make_Argument;
+ _nc_Match_Next_Character_In_Item_Name;
+ _nc_New_TopRow_and_CurrentItem;
+ _nc_Position_Form_Cursor;
+ _nc_Post_Item;
+ _nc_Refresh_Current_Field;
+ _nc_Set_Current_Field;
+ _nc_Set_Form_Page;
+ _nc_Show_Menu;
+ _nc_Synchronize_Attributes;
+ _nc_Synchronize_Options;
+ _nc_Touchline;
+ _nc_Touchpan;
+ _nc_Widen_String;
+ _nc_Wnoutrefresh;
+ _nc_build_wch;
+ _nc_dPanel;
+ _nc_dStack;
+ _nc_do_color;
+ _nc_expanded;
+ _nc_fifo_dump;
+ _nc_freewin;
+ _nc_hash_map;
+ _nc_init_wacs;
+ _nc_insert_ch;
+ _nc_is_charable;
+ _nc_linedump;
+ _nc_make_oldhash;
+ _nc_makenew;
+ _nc_memmove;
+ _nc_menu_cursor_pos;
+ _nc_msec_cost;
+ _nc_mvcur_init;
+ _nc_mvcur_resume;
+ _nc_mvcur_wrap;
+ _nc_my_visbuf;
+ _nc_oldnums;
+ _nc_printf_string;
+ _nc_render;
+ _nc_reset_colors;
+ _nc_retrace_field;
+ _nc_retrace_field_ptr;
+ _nc_retrace_field_type;
+ _nc_retrace_form;
+ _nc_retrace_form_hook;
+ _nc_retrace_item;
+ _nc_retrace_item_opts;
+ _nc_retrace_item_ptr;
+ _nc_retrace_menu;
+ _nc_retrace_menu_hook;
+ _nc_retrace_menu_opts;
+ _nc_retrace_panel;
+ _nc_screen_init;
+ _nc_screen_resume;
+ _nc_screen_wrap;
+ _nc_scroll_oldhash;
+ _nc_scroll_optimize;
+ _nc_scroll_window;
+ _nc_scrolln;
+ _nc_setupscreen;
+ _nc_signal_handler;
+ _nc_slk_initialize;
+ _nc_synchook;
+ _nc_to_char;
+ _nc_to_widechar;
+ _nc_trace_xnames;
+ _nc_tracemouse;
+ _nc_ungetch;
+ _nc_varargs;
+ _nc_vsscanf;
+ _nc_waddch_nosync;
+ _nc_wchstrlen;
+ _nc_wgetch;
+ _tracedump;
+ _tracemouse;
+};
+
+NCURSESTW_5.8.20110226 {
+ global:
+ _nc_panelhook_sp;
+ assume_default_colors_sp;
+ beep_sp;
+ can_change_color_sp;
+ ceiling_panel;
+ color_content_sp;
+ doupdate_sp;
+ echo_sp;
+ endwin_sp;
+ filter_sp;
+ flash_sp;
+ get_escdelay;
+ get_escdelay_sp;
+ getmouse_sp;
+ getwin_sp;
+ ground_panel;
+ has_colors_sp;
+ has_mouse;
+ has_mouse_sp;
+ init_color_sp;
+ init_pair_sp;
+ is_pad;
+ is_subwin;
+ is_term_resized_sp;
+ isendwin_sp;
+ mcprint_sp;
+ mouseinterval_sp;
+ mousemask_sp;
+ mvcur_sp;
+ new_form_sp;
+ new_menu_sp;
+ newpad_sp;
+ newterm_sp;
+ newwin_sp;
+ nl_sp;
+ noecho_sp;
+ nofilter_sp;
+ nonl_sp;
+ pair_content_sp;
+ resize_term_sp;
+ resizeterm_sp;
+ restartterm_sp;
+ ripoffline_sp;
+ scr_init_sp;
+ scr_restore_sp;
+ scr_set_sp;
+ set_escdelay_sp;
+ slk_attr_set_sp;
+ slk_attr_sp;
+ slk_attroff_sp;
+ slk_attron_sp;
+ slk_attrset_sp;
+ slk_clear_sp;
+ slk_color_sp;
+ slk_init_sp;
+ slk_label_sp;
+ slk_noutrefresh_sp;
+ slk_refresh_sp;
+ slk_restore_sp;
+ slk_set_sp;
+ slk_touch_sp;
+ start_color_sp;
+ term_attrs_sp;
+ termattrs_sp;
+ unget_wch_sp;
+ ungetch_sp;
+ ungetmouse_sp;
+ update_panels_sp;
+ use_default_colors_sp;
+ use_legacy_coding_sp;
+ vid_attr_sp;
+ vid_puts_sp;
+ vidattr_sp;
+ vidputs_sp;
+ wunctrl_sp;
+ local:
+ _nc_TYPE_ALNUM;
+ _nc_TYPE_ALPHA;
+ _nc_TYPE_ENUM;
+ _nc_TYPE_INTEGER;
+ _nc_TYPE_IPV4;
+ _nc_TYPE_NUMERIC;
+ _nc_TYPE_REGEXP;
+ _nc_curscr_of;
+ _nc_do_color_sp;
+ _nc_form_cursor;
+ _nc_format_slks;
+ _nc_free_and_exit_sp;
+ _nc_freeall_sp;
+ _nc_fty_generic;
+ _nc_generic_fieldtype;
+ _nc_get_fieldbuffer;
+ _nc_hash_map_sp;
+ _nc_insert_wch;
+ _nc_linedump_sp;
+ _nc_make_oldhash_sp;
+ _nc_makenew_sp;
+ _nc_msec_cost_sp;
+ _nc_mvcur_init_sp;
+ _nc_mvcur_resume_sp;
+ _nc_mvcur_wrap_sp;
+ _nc_newscr_of;
+ _nc_printf_string_sp;
+ _nc_ptr_Escdelay;
+ _nc_reset_colors_sp;
+ _nc_retrace_mmask_t;
+ _nc_ripoffline_sp;
+ _nc_screen_init_sp;
+ _nc_screen_resume_sp;
+ _nc_screen_wrap_sp;
+ _nc_scroll_oldhash_sp;
+ _nc_scroll_optimize_sp;
+ _nc_scrolln_sp;
+ _nc_set_generic_fieldtype;
+ _nc_setupscreen_sp;
+ _nc_stdscr_of;
+} NCURSESTW_5.7.20081102;
+
+NCURSESTW_5.9.20150530 {
+ global:
+ form_driver_w;
+ wgetdelay;
+ local:
+ _nc_mvcur;
+ _nc_mvcur_sp;
+ _nc_trace_mmask_t;
+} NCURSESTW_5.8.20110226;
+
+NCURSESTW_6.1.20171230 {
+ global:
+ alloc_pair;
+ alloc_pair_sp;
+ extended_color_content;
+ extended_color_content_sp;
+ extended_pair_content;
+ extended_pair_content_sp;
+ extended_slk_color;
+ extended_slk_color_sp;
+ find_pair;
+ find_pair_sp;
+ free_pair;
+ free_pair_sp;
+ init_extended_color;
+ init_extended_color_sp;
+ init_extended_pair;
+ init_extended_pair_sp;
+ reset_color_pairs;
+ reset_color_pairs_sp;
+ unfocus_current_field;
+ local:
+ _nc_Unset_Current_Field;
+ _nc_change_pair;
+ _nc_init_color;
+ _nc_init_pair;
+ _nc_pair_content;
+ _nc_reset_color_pair;
+ _nc_set_color_pair;
+} NCURSESTW_5.9.20150530;
+
+NCURSESTW_6.1.current {
+ global:
+ exit_curses;
+ local:
+ _*;
+} NCURSESTW_6.1.20171230;
diff --git a/package/ncursestw.sym b/package/ncursestw.sym
new file mode 100644
index 000000000000..5d12a533b88b
--- /dev/null
+++ b/package/ncursestw.sym
@@ -0,0 +1,995 @@
+# $Id: ncursestw.sym,v 1.38 2019/12/14 22:44:31 tom Exp $
+# script for shared library symbol-visibility using libtool
+#
+# This file was generated by ncu-mapsyms
+# Configure options (5.7.20081102)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.8.20110226)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20110404)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20150530)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace
+# Configure options (6.0.20161029)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace
+BC
+COLOR_PAIR
+PAIR_NUMBER
+PC
+SP
+TYPE_ALNUM
+TYPE_ALPHA
+TYPE_ENUM
+TYPE_INTEGER
+TYPE_IPV4
+TYPE_NUMERIC
+TYPE_REGEXP
+UP
+_nc_COLORS
+_nc_COLOR_PAIRS
+_nc_COLS
+_nc_Default_Field
+_nc_Default_Form
+_nc_ESCDELAY
+_nc_LINES
+_nc_TABSIZE
+_nc__nc_outchars
+_nc_access
+_nc_acs_map
+_nc_add_to_try
+_nc_align_termtype
+_nc_alloc_entry_leaks
+_nc_basename
+_nc_boolcodes
+_nc_boolfnames
+_nc_boolnames
+_nc_capcmp
+_nc_captoinfo_leaks
+_nc_check_termtype
+_nc_check_termtype2
+_nc_codes_leaks
+_nc_comp_scan_leaks
+_nc_copy_termtype
+_nc_copy_termtype2
+_nc_count_outchars
+_nc_cur_term
+_nc_curr_col
+_nc_curr_line
+_nc_curscr
+_nc_db_close
+_nc_db_first
+_nc_db_have_data
+_nc_db_next
+_nc_db_open
+_nc_db_put
+_nc_disable_period
+_nc_doalloc
+_nc_entry_match
+_nc_env_access
+_nc_err_abort
+_nc_eventlist_timeout
+_nc_export_termtype2
+_nc_fallback
+_nc_fallback2
+_nc_find_entry
+_nc_find_prescr
+_nc_find_type_entry
+_nc_find_user_entry
+_nc_first_db
+_nc_first_name
+_nc_flush
+_nc_flush_sp
+_nc_fmt_funcptr
+_nc_forget_prescr
+_nc_free_and_exit
+_nc_free_entries
+_nc_free_termtype
+_nc_free_termtype2
+_nc_free_tic
+_nc_free_tinfo
+_nc_free_tparm
+_nc_freeall
+_nc_get_alias_table
+_nc_get_hash_table
+_nc_get_locale
+_nc_get_screensize
+_nc_get_source
+_nc_get_table
+_nc_get_tty_mode
+_nc_get_tty_mode_sp
+_nc_get_type
+_nc_getenv_num
+_nc_globals
+_nc_handle_sigwinch
+_nc_has_mouse
+_nc_head
+_nc_home_terminfo
+_nc_infotocap
+_nc_init_acs
+_nc_init_acs_sp
+_nc_init_pthreads
+_nc_init_termtype
+_nc_is_abs_path
+_nc_is_dir_path
+_nc_is_file_path
+_nc_keep_tic_dir
+_nc_keyname_leaks
+_nc_keypad
+_nc_last_db
+_nc_leaks_tinfo
+_nc_locale_breaks_acs
+_nc_locked_tracef
+_nc_mutex_lock
+_nc_mutex_trylock
+_nc_mutex_unlock
+_nc_name_match
+_nc_names_leaks
+_nc_newscr
+_nc_next_db
+_nc_numcodes
+_nc_numfnames
+_nc_numnames
+_nc_optimize_enable
+_nc_outc_wrapper
+_nc_outch
+_nc_outch_sp
+_nc_panelhook
+_nc_panelhook_sp
+_nc_pathlast
+_nc_prescreen
+_nc_ptr_Cols
+_nc_ptr_Lines
+_nc_putchar
+_nc_putchar_sp
+_nc_putp
+_nc_putp_flush
+_nc_putp_flush_sp
+_nc_putp_sp
+_nc_read_entry
+_nc_read_entry2
+_nc_read_entry_source
+_nc_read_file_entry
+_nc_read_termtype
+_nc_reset_input
+_nc_resolve_uses
+_nc_resolve_uses2
+_nc_retrace_attr_t
+_nc_retrace_bool
+_nc_retrace_chtype
+_nc_retrace_cptr
+_nc_retrace_cvoid_ptr
+_nc_retrace_int
+_nc_retrace_int_attr_t
+_nc_retrace_ptr
+_nc_retrace_sp
+_nc_retrace_unsigned
+_nc_retrace_void_ptr
+_nc_retrace_win
+_nc_ripoffline
+_nc_rootname
+_nc_safe_strcat
+_nc_safe_strcpy
+_nc_screen
+_nc_screen_chain
+_nc_screen_of
+_nc_set_buffer
+_nc_set_buffer_sp
+_nc_set_no_padding
+_nc_set_source
+_nc_set_tputs_trace
+_nc_set_tty_mode
+_nc_set_tty_mode_sp
+_nc_set_type
+_nc_set_writedir
+_nc_setupterm
+_nc_sigprocmask
+_nc_stdscr
+_nc_str_copy
+_nc_str_init
+_nc_str_null
+_nc_strcodes
+_nc_strfnames
+_nc_strict_bsd
+_nc_strnames
+_nc_suppress_warnings
+_nc_syntax
+_nc_syserr_abort
+_nc_tail
+_nc_tgetent_leaks
+_nc_tic_dir
+_nc_tic_expand
+_nc_tic_written
+_nc_timed_wait
+_nc_tinfo_fkeys
+_nc_tinfo_fkeysf
+_nc_tparm_analyze
+_nc_tparm_err
+_nc_trace_buf
+_nc_trace_bufcat
+_nc_tracechar
+_nc_tracing
+_nc_trans_string
+_nc_trim_sgr0
+_nc_ttytype
+_nc_unicode_locale
+_nc_update_screensize
+_nc_use_tracef
+_nc_user_definable
+_nc_visbuf
+_nc_visbuf2
+_nc_visbufn
+_nc_viscbuf
+_nc_viswbuf
+_nc_viswbufn
+_nc_viswibuf
+_nc_wacs
+_nc_wacs_width
+_nc_warning
+_nc_wcrtomb
+_nc_write_entry
+_nc_write_object
+_traceattr
+_traceattr2
+_tracecchar_t
+_tracecchar_t2
+_tracechar
+_tracechtype
+_tracechtype2
+_tracef
+add_wch
+add_wchnstr
+add_wchstr
+addch
+addchnstr
+addchstr
+addnstr
+addnwstr
+addstr
+addwstr
+alloc_pair
+alloc_pair_sp
+assume_default_colors
+assume_default_colors_sp
+attr_get
+attr_off
+attr_on
+attr_set
+attroff
+attron
+attrset
+baudrate
+baudrate_sp
+beep
+beep_sp
+bkgd
+bkgdset
+bkgrnd
+bkgrndset
+border
+border_set
+bottom_panel
+box
+box_set
+can_change_color
+can_change_color_sp
+cbreak
+cbreak_sp
+ceiling_panel
+chgat
+clear
+clearok
+clrtobot
+clrtoeol
+color_content
+color_content_sp
+color_set
+copywin
+current_field
+current_item
+curs_set
+curs_set_sp
+curses_trace
+curses_version
+data_ahead
+data_behind
+def_prog_mode
+def_prog_mode_sp
+def_shell_mode
+def_shell_mode_sp
+define_key
+define_key_sp
+del_curterm
+del_curterm_sp
+del_panel
+delay_output
+delay_output_sp
+delch
+deleteln
+delscreen
+delwin
+derwin
+doupdate
+doupdate_sp
+dup_field
+dupwin
+dynamic_field_info
+echo
+echo_sp
+echo_wchar
+echochar
+endwin
+endwin_sp
+erase
+erasechar
+erasechar_sp
+erasewchar
+exit_curses
+exit_terminfo
+extended_color_content
+extended_color_content_sp
+extended_pair_content
+extended_pair_content_sp
+extended_slk_color
+extended_slk_color_sp
+field_arg
+field_back
+field_buffer
+field_count
+field_fore
+field_index
+field_info
+field_init
+field_just
+field_opts
+field_opts_off
+field_opts_on
+field_pad
+field_status
+field_term
+field_type
+field_userptr
+filter
+filter_sp
+find_pair
+find_pair_sp
+flash
+flash_sp
+flushinp
+flushinp_sp
+form_driver
+form_driver_w
+form_fields
+form_init
+form_opts
+form_opts_off
+form_opts_on
+form_page
+form_request_by_name
+form_request_name
+form_sub
+form_term
+form_userptr
+form_win
+free_field
+free_fieldtype
+free_form
+free_item
+free_menu
+free_pair
+free_pair_sp
+get_escdelay
+get_escdelay_sp
+get_wch
+get_wstr
+getattrs
+getbegx
+getbegy
+getbkgd
+getbkgrnd
+getcchar
+getch
+getcurx
+getcury
+getmaxx
+getmaxy
+getmouse
+getmouse_sp
+getn_wstr
+getnstr
+getparx
+getpary
+getstr
+getwin
+getwin_sp
+ground_panel
+halfdelay
+halfdelay_sp
+has_colors
+has_colors_sp
+has_ic
+has_ic_sp
+has_il
+has_il_sp
+has_key
+has_key_sp
+has_mouse
+has_mouse_sp
+hide_panel
+hline
+hline_set
+idcok
+idlok
+immedok
+in_wch
+in_wchnstr
+in_wchstr
+inch
+inchnstr
+inchstr
+init_color
+init_color_sp
+init_extended_color
+init_extended_color_sp
+init_extended_pair
+init_extended_pair_sp
+init_pair
+init_pair_sp
+initscr
+innstr
+innwstr
+ins_nwstr
+ins_wch
+ins_wstr
+insch
+insdelln
+insertln
+insnstr
+insstr
+instr
+intrflush
+intrflush_sp
+inwstr
+is_cleared
+is_idcok
+is_idlok
+is_immedok
+is_keypad
+is_leaveok
+is_linetouched
+is_nodelay
+is_notimeout
+is_pad
+is_scrollok
+is_subwin
+is_syncok
+is_term_resized
+is_term_resized_sp
+is_wintouched
+isendwin
+isendwin_sp
+item_count
+item_description
+item_index
+item_init
+item_name
+item_opts
+item_opts_off
+item_opts_on
+item_term
+item_userptr
+item_value
+item_visible
+key_defined
+key_defined_sp
+key_name
+keybound
+keybound_sp
+keyname
+keyname_sp
+keyok
+keyok_sp
+keypad
+killchar
+killchar_sp
+killwchar
+leaveok
+link_field
+link_fieldtype
+longname
+longname_sp
+mcprint
+mcprint_sp
+menu_back
+menu_driver
+menu_fore
+menu_format
+menu_grey
+menu_init
+menu_items
+menu_mark
+menu_opts
+menu_opts_off
+menu_opts_on
+menu_pad
+menu_pattern
+menu_request_by_name
+menu_request_name
+menu_spacing
+menu_sub
+menu_term
+menu_userptr
+menu_win
+meta
+mouse_trafo
+mouseinterval
+mouseinterval_sp
+mousemask
+mousemask_sp
+move
+move_field
+move_panel
+mvadd_wch
+mvadd_wchnstr
+mvadd_wchstr
+mvaddch
+mvaddchnstr
+mvaddchstr
+mvaddnstr
+mvaddnwstr
+mvaddstr
+mvaddwstr
+mvchgat
+mvcur
+mvcur_sp
+mvdelch
+mvderwin
+mvget_wch
+mvget_wstr
+mvgetch
+mvgetn_wstr
+mvgetnstr
+mvgetstr
+mvhline
+mvhline_set
+mvin_wch
+mvin_wchnstr
+mvin_wchstr
+mvinch
+mvinchnstr
+mvinchstr
+mvinnstr
+mvinnwstr
+mvins_nwstr
+mvins_wch
+mvins_wstr
+mvinsch
+mvinsnstr
+mvinsstr
+mvinstr
+mvinwstr
+mvprintw
+mvscanw
+mvvline
+mvvline_set
+mvwadd_wch
+mvwadd_wchnstr
+mvwadd_wchstr
+mvwaddch
+mvwaddchnstr
+mvwaddchstr
+mvwaddnstr
+mvwaddnwstr
+mvwaddstr
+mvwaddwstr
+mvwchgat
+mvwdelch
+mvwget_wch
+mvwget_wstr
+mvwgetch
+mvwgetn_wstr
+mvwgetnstr
+mvwgetstr
+mvwhline
+mvwhline_set
+mvwin
+mvwin_wch
+mvwin_wchnstr
+mvwin_wchstr
+mvwinch
+mvwinchnstr
+mvwinchstr
+mvwinnstr
+mvwinnwstr
+mvwins_nwstr
+mvwins_wch
+mvwins_wstr
+mvwinsch
+mvwinsnstr
+mvwinsstr
+mvwinstr
+mvwinwstr
+mvwprintw
+mvwscanw
+mvwvline
+mvwvline_set
+napms
+napms_sp
+new_field
+new_fieldtype
+new_form
+new_form_sp
+new_item
+new_menu
+new_menu_sp
+new_page
+new_panel
+new_prescr
+newpad
+newpad_sp
+newterm
+newterm_sp
+newwin
+newwin_sp
+nl
+nl_sp
+nocbreak
+nocbreak_sp
+nodelay
+noecho
+noecho_sp
+nofilter
+nofilter_sp
+nonl
+nonl_sp
+noqiflush
+noqiflush_sp
+noraw
+noraw_sp
+notimeout
+ospeed
+overlay
+overwrite
+pair_content
+pair_content_sp
+panel_above
+panel_below
+panel_hidden
+panel_userptr
+panel_window
+pecho_wchar
+pechochar
+pnoutrefresh
+pos_form_cursor
+pos_menu_cursor
+post_form
+post_menu
+prefresh
+printw
+putp
+putp_sp
+putwin
+qiflush
+qiflush_sp
+raw
+raw_sp
+redrawwin
+refresh
+replace_panel
+reset_color_pairs
+reset_color_pairs_sp
+reset_prog_mode
+reset_prog_mode_sp
+reset_shell_mode
+reset_shell_mode_sp
+resetty
+resetty_sp
+resize_term
+resize_term_sp
+resizeterm
+resizeterm_sp
+restartterm
+restartterm_sp
+ripoffline
+ripoffline_sp
+savetty
+savetty_sp
+scale_form
+scale_menu
+scanw
+scr_dump
+scr_init
+scr_init_sp
+scr_restore
+scr_restore_sp
+scr_set
+scr_set_sp
+scrl
+scroll
+scrollok
+set_current_field
+set_current_item
+set_curterm
+set_curterm_sp
+set_escdelay
+set_escdelay_sp
+set_field_back
+set_field_buffer
+set_field_fore
+set_field_init
+set_field_just
+set_field_opts
+set_field_pad
+set_field_status
+set_field_term
+set_field_type
+set_field_userptr
+set_fieldtype_arg
+set_fieldtype_choice
+set_form_fields
+set_form_init
+set_form_opts
+set_form_page
+set_form_sub
+set_form_term
+set_form_userptr
+set_form_win
+set_item_init
+set_item_opts
+set_item_term
+set_item_userptr
+set_item_value
+set_max_field
+set_menu_back
+set_menu_fore
+set_menu_format
+set_menu_grey
+set_menu_init
+set_menu_items
+set_menu_mark
+set_menu_opts
+set_menu_pad
+set_menu_pattern
+set_menu_spacing
+set_menu_sub
+set_menu_term
+set_menu_userptr
+set_menu_win
+set_new_page
+set_panel_userptr
+set_tabsize
+set_tabsize_sp
+set_term
+set_top_row
+setcchar
+setscrreg
+setupterm
+show_panel
+slk_attr
+slk_attr_off
+slk_attr_on
+slk_attr_set
+slk_attr_set_sp
+slk_attr_sp
+slk_attroff
+slk_attroff_sp
+slk_attron
+slk_attron_sp
+slk_attrset
+slk_attrset_sp
+slk_clear
+slk_clear_sp
+slk_color
+slk_color_sp
+slk_init
+slk_init_sp
+slk_label
+slk_label_sp
+slk_noutrefresh
+slk_noutrefresh_sp
+slk_refresh
+slk_refresh_sp
+slk_restore
+slk_restore_sp
+slk_set
+slk_set_sp
+slk_touch
+slk_touch_sp
+slk_wset
+standend
+standout
+start_color
+start_color_sp
+subpad
+subwin
+syncok
+term_attrs
+term_attrs_sp
+termattrs
+termattrs_sp
+termname
+termname_sp
+tgetent
+tgetent_sp
+tgetflag
+tgetflag_sp
+tgetnum
+tgetnum_sp
+tgetstr
+tgetstr_sp
+tgoto
+tigetflag
+tigetflag_sp
+tigetnum
+tigetnum_sp
+tigetstr
+tigetstr_sp
+timeout
+tiparm
+top_panel
+top_row
+touchline
+touchwin
+tparm
+tputs
+tputs_sp
+trace
+typeahead
+typeahead_sp
+unctrl
+unctrl_sp
+unfocus_current_field
+unget_wch
+unget_wch_sp
+ungetch
+ungetch_sp
+ungetmouse
+ungetmouse_sp
+unpost_form
+unpost_menu
+untouchwin
+update_panels
+update_panels_sp
+use_default_colors
+use_default_colors_sp
+use_env
+use_env_sp
+use_extended_names
+use_legacy_coding
+use_legacy_coding_sp
+use_screen
+use_tioctl
+use_tioctl_sp
+use_window
+vid_attr
+vid_attr_sp
+vid_puts
+vid_puts_sp
+vidattr
+vidattr_sp
+vidputs
+vidputs_sp
+vline
+vline_set
+vw_printw
+vw_scanw
+vwprintw
+vwscanw
+wadd_wch
+wadd_wchnstr
+wadd_wchstr
+waddch
+waddchnstr
+waddchstr
+waddnstr
+waddnwstr
+waddstr
+waddwstr
+wattr_get
+wattr_off
+wattr_on
+wattr_set
+wattroff
+wattron
+wattrset
+wbkgd
+wbkgdset
+wbkgrnd
+wbkgrndset
+wborder
+wborder_set
+wchgat
+wclear
+wclrtobot
+wclrtoeol
+wcolor_set
+wcursyncup
+wdelch
+wdeleteln
+wecho_wchar
+wechochar
+wenclose
+werase
+wget_wch
+wget_wstr
+wgetbkgrnd
+wgetch
+wgetch_events
+wgetdelay
+wgetn_wstr
+wgetnstr
+wgetnstr_events
+wgetparent
+wgetscrreg
+wgetstr
+whline
+whline_set
+win_wch
+win_wchnstr
+win_wchstr
+winch
+winchnstr
+winchstr
+winnstr
+winnwstr
+wins_nwstr
+wins_wch
+wins_wstr
+winsch
+winsdelln
+winsertln
+winsnstr
+winsstr
+winstr
+winwstr
+wmouse_trafo
+wmove
+wnoutrefresh
+wprintw
+wredrawln
+wrefresh
+wresize
+wscanw
+wscrl
+wsetscrreg
+wstandend
+wstandout
+wsyncdown
+wsyncup
+wtimeout
+wtouchln
+wunctrl
+wunctrl_sp
+wvline
+wvline_set
diff --git a/package/ncursesw.map b/package/ncursesw.map
new file mode 100644
index 000000000000..77f0c7bea444
--- /dev/null
+++ b/package/ncursesw.map
@@ -0,0 +1,1318 @@
+# $Id: ncursesw.map,v 1.53 2019/12/14 23:28:02 tom Exp $
+# script for shared library symbol-versioning using ld
+#
+# This file was generated by ncu-mapsyms
+# Configure options (5.1.20000708)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.2.20001021)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.3.20021019)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.4.20040208)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.5.20051010)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.6.20061217)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.7.20081102)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.8.20110226)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20110404)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20150530)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace
+# Configure options (6.0.current)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace
+
+NCURSES_TIC_5.0.19991023 {
+ global:
+ _nc_capcmp;
+ _nc_check_termtype;
+ _nc_entry_match;
+ _nc_infotocap;
+ _nc_read_entry_source;
+ _nc_reset_input;
+ _nc_resolve_uses;
+ _nc_set_writedir;
+ _nc_syntax;
+ _nc_tic_expand;
+ _nc_tic_written;
+ _nc_trans_string;
+ _nc_write_entry;
+ local:
+ _nc_captoinfo;
+ _nc_comment_end;
+ _nc_comment_start;
+ _nc_copy_entry;
+ _nc_curr_file_pos;
+ _nc_curr_token;
+ _nc_get_token;
+ _nc_init_entry;
+ _nc_merge_entry;
+ _nc_panic_mode;
+ _nc_parse_entry;
+ _nc_push_token;
+ _nc_save_str;
+ _nc_start_line;
+ _nc_wrap_entry;
+};
+
+NCURSES_TIC_5.1.20000708 {
+ global:
+ _nc_disable_period;
+} NCURSES_TIC_5.0.19991023;
+
+NCURSES_TIC_5.5.20051010 {
+ global:
+ _nc_alloc_entry_leaks;
+ _nc_captoinfo_leaks;
+ _nc_check_termtype2;
+ _nc_comp_scan_leaks;
+ _nc_resolve_uses2;
+} NCURSES_TIC_5.1.20000708;
+
+NCURSES_TIC_5.7.20081102 {
+ global:
+ _nc_free_tic;
+ local:
+ _nc_comp_captab_leaks;
+ _nc_leaks_tic;
+} NCURSES_TIC_5.5.20051010;
+
+NCURSES_TIC_5.9.20150530 {
+ global:
+ _nc_strict_bsd;
+} NCURSES_TIC_5.7.20081102;
+
+NCURSES_TIC_6.1.20171230 {
+ global:
+ _nc_read_entry2;
+ _nc_write_object;
+ local:
+ _*;
+} NCURSES_TIC_5.9.20150530;
+
+NCURSES_TINFO_5.0.19991023 {
+ global:
+ BC;
+ COLS;
+ LINES;
+ PC;
+ SP;
+ TABSIZE;
+ UP;
+ _nc_access;
+ _nc_add_to_try;
+ _nc_copy_termtype;
+ _nc_curr_col;
+ _nc_curr_line;
+ _nc_doalloc;
+ _nc_err_abort;
+ _nc_fallback;
+ _nc_find_entry;
+ _nc_find_type_entry;
+ _nc_first_name;
+ _nc_free_entries;
+ _nc_free_termtype;
+ _nc_free_tparm;
+ _nc_freeall;
+ _nc_get_hash_table;
+ _nc_get_table;
+ _nc_get_tty_mode;
+ _nc_get_type;
+ _nc_getenv_num;
+ _nc_head;
+ _nc_home_terminfo;
+ _nc_info_hash_table;
+ _nc_init_acs;
+ _nc_keep_tic_dir;
+ _nc_keypad;
+ _nc_name_match;
+ _nc_outch;
+ _nc_read_entry;
+ _nc_read_file_entry;
+ _nc_screen_chain;
+ _nc_set_buffer;
+ _nc_set_source;
+ _nc_set_tty_mode;
+ _nc_set_type;
+ _nc_suppress_warnings;
+ _nc_syserr_abort;
+ _nc_tail;
+ _nc_tic_dir;
+ _nc_timed_wait;
+ _nc_trace_buf;
+ _nc_tracing;
+ _nc_update_screensize;
+ _nc_visbuf;
+ _nc_visbuf2;
+ _nc_warning;
+ _tracechar;
+ acs_map;
+ baudrate;
+ boolcodes;
+ boolfnames;
+ boolnames;
+ cbreak;
+ cur_term;
+ curs_set;
+ curscr;
+ curses_version;
+ def_prog_mode;
+ def_shell_mode;
+ define_key;
+ del_curterm;
+ delay_output;
+ erasechar;
+ flushinp;
+ halfdelay;
+ has_ic;
+ has_il;
+ has_key;
+ idcok;
+ idlok;
+ intrflush;
+ keybound;
+ keyname;
+ keyok;
+ keypad;
+ killchar;
+ longname;
+ meta;
+ napms;
+ newscr;
+ nocbreak;
+ nodelay;
+ noqiflush;
+ noraw;
+ notimeout;
+ numcodes;
+ numfnames;
+ numnames;
+ ospeed;
+ putp;
+ qiflush;
+ raw;
+ reset_prog_mode;
+ reset_shell_mode;
+ resetty;
+ savetty;
+ set_curterm;
+ setupterm;
+ stdscr;
+ strcodes;
+ strfnames;
+ strnames;
+ termname;
+ tgetent;
+ tgetflag;
+ tgetnum;
+ tgetstr;
+ tgoto;
+ tigetflag;
+ tigetnum;
+ tigetstr;
+ tparm;
+ tputs;
+ trace;
+ ttytype;
+ typeahead;
+ unctrl;
+ use_env;
+ wtimeout;
+ local:
+ _nc_baudrate;
+ _nc_cap_hash_table;
+ _nc_capalias_table;
+ _nc_expand_try;
+ _nc_infoalias_table;
+ _nc_init_keytry;
+ _nc_key_names;
+ _nc_nulls_sent;
+ _nc_ospeed;
+ _nc_read_termcap;
+ _nc_read_termcap_entry;
+ _nc_remove_key;
+ _nc_remove_string;
+ _nc_trace_tries;
+ _nc_tracebits;
+};
+
+NCURSES_TINFO_5.1.20000708 {
+ global:
+ _nc_align_termtype;
+ _nc_flush;
+ _nc_tinfo_fkeys;
+ _nc_user_definable;
+ _nc_utf8_outch;
+ use_extended_names;
+} NCURSES_TINFO_5.0.19991023;
+
+NCURSES_TINFO_5.2.20001021 {
+ global:
+ _nc_basename;
+ _nc_env_access;
+ _nc_safe_strcat;
+ _nc_safe_strcpy;
+ _nc_str_copy;
+ _nc_str_init;
+ _nc_str_null;
+} NCURSES_TINFO_5.1.20000708;
+
+NCURSES_TINFO_5.3.20021019 {
+ global:
+ _nc_rootname;
+ _nc_tparm_err;
+ _nc_visbufn;
+} NCURSES_TINFO_5.2.20001021;
+
+NCURSES_TINFO_5.4.20040208 {
+ global:
+ _nc_altcharset_name;
+ _nc_get_locale;
+ _nc_locale_breaks_acs;
+ _nc_outchars;
+ _nc_pathlast;
+ _nc_retrace_attr_t;
+ _nc_retrace_bool;
+ _nc_retrace_chtype;
+ _nc_retrace_int;
+ _nc_retrace_ptr;
+ _nc_retrace_sp;
+ _nc_retrace_unsigned;
+ _nc_retrace_win;
+ _nc_tparm_analyze;
+ _nc_tputs_trace;
+ _nc_trace_bufcat;
+ _nc_unicode_locale;
+ _nc_viswbuf;
+ _nc_viswbufn;
+ _traceattr;
+ _traceattr2;
+ _tracecchar_t;
+ _tracecchar_t2;
+ _tracechtype;
+ _tracechtype2;
+ _tracef;
+ key_defined;
+ local:
+ _nc_trace_ttymode;
+ _nc_viswbuf2;
+} NCURSES_TINFO_5.3.20021019;
+
+NCURSES_TINFO_5.5.20051010 {
+ global:
+ _nc_get_source;
+ _nc_retrace_cptr;
+ _nc_retrace_cvoid_ptr;
+ _nc_retrace_void_ptr;
+ _nc_setupterm;
+ _nc_trim_sgr0;
+ _nc_viswibuf;
+ local:
+ _nc_delink_entry;
+ _nc_free_entry;
+} NCURSES_TINFO_5.4.20040208;
+
+NCURSES_TINFO_5.6.20061217 {
+ global:
+ _nc_db_close;
+ _nc_db_first;
+ _nc_db_have_data;
+ _nc_db_next;
+ _nc_db_open;
+ _nc_db_put;
+ _nc_eventlist_timeout;
+ _nc_first_db;
+ _nc_handle_sigwinch;
+ _nc_is_abs_path;
+ _nc_is_dir_path;
+ _nc_is_file_path;
+ _nc_keyname_leaks;
+ _nc_last_db;
+ _nc_next_db;
+ _nc_read_termtype;
+ _nc_tgetent_leaks;
+ _nc_viscbuf;
+ local:
+ _nc_db_get;
+ _nc_db_have_index;
+ _nc_hashed_db;
+ _nc_viscbuf2;
+} NCURSES_TINFO_5.5.20051010;
+
+NCURSES_TINFO_5.7.20081102 {
+ global:
+ _nc_free_tinfo;
+ _nc_get_alias_table;
+ _nc_get_screensize;
+ _nc_globals;
+ _nc_leaks_tinfo;
+ _nc_prescreen;
+ _nc_screen_of;
+ _nc_set_no_padding;
+ _nc_tracechar;
+ set_tabsize;
+ local:
+ _nc_keyname;
+ _nc_unctrl;
+} NCURSES_TINFO_5.6.20061217;
+
+NCURSES_TINFO_5.8.20110226 {
+ global:
+ _nc_flush_sp;
+ _nc_get_tty_mode_sp;
+ _nc_init_acs_sp;
+ _nc_outc_wrapper;
+ _nc_outch_sp;
+ _nc_putp;
+ _nc_putp_flush;
+ _nc_putp_flush_sp;
+ _nc_putp_sp;
+ _nc_retrace_int_attr_t;
+ _nc_set_buffer_sp;
+ _nc_set_tty_mode_sp;
+ baudrate_sp;
+ cbreak_sp;
+ curs_set_sp;
+ def_prog_mode_sp;
+ def_shell_mode_sp;
+ define_key_sp;
+ del_curterm_sp;
+ delay_output_sp;
+ erasechar_sp;
+ flushinp_sp;
+ halfdelay_sp;
+ has_ic_sp;
+ has_il_sp;
+ has_key_sp;
+ intrflush_sp;
+ key_defined_sp;
+ keybound_sp;
+ keyname_sp;
+ keyok_sp;
+ killchar_sp;
+ longname_sp;
+ napms_sp;
+ new_prescr;
+ nocbreak_sp;
+ noqiflush_sp;
+ noraw_sp;
+ putp_sp;
+ qiflush_sp;
+ raw_sp;
+ reset_prog_mode_sp;
+ reset_shell_mode_sp;
+ resetty_sp;
+ savetty_sp;
+ set_curterm_sp;
+ set_tabsize_sp;
+ termname_sp;
+ tgetent_sp;
+ tgetflag_sp;
+ tgetnum_sp;
+ tgetstr_sp;
+ tigetflag_sp;
+ tigetnum_sp;
+ tigetstr_sp;
+ tiparm;
+ tputs_sp;
+ typeahead_sp;
+ unctrl_sp;
+ use_env_sp;
+ local:
+ _nc_get_hash_info;
+ _nc_retrace_char;
+ _nc_setup_tinfo;
+ _nc_tinfo_cmdch;
+} NCURSES_TINFO_5.7.20081102;
+
+NCURSES_TINFO_5.9.20150530 {
+ global:
+ _nc_init_termtype;
+ _nc_putchar;
+ _nc_putchar_sp;
+ use_tioctl;
+ use_tioctl_sp;
+ local:
+ _nc_comp_error_leaks;
+ _nc_db_iterator_leaks;
+ _nc_setenv_num;
+} NCURSES_TINFO_5.8.20110226;
+
+NCURSES_TINFO_6.1.20171230 {
+ global:
+ _nc_copy_termtype2;
+ _nc_export_termtype2;
+ _nc_fallback2;
+ _nc_free_termtype2;
+} NCURSES_TINFO_5.9.20150530;
+
+NCURSES_TINFO_6.1.current {
+ global:
+ _nc_find_user_entry;
+ _nc_fmt_funcptr;
+ _nc_wacs_width;
+ curses_trace;
+ exit_terminfo;
+ local:
+ _*;
+} NCURSES_TINFO_6.1.20171230;
+
+NCURSESW_5.1.20000708 {
+ global:
+ COLORS;
+ COLOR_PAIR;
+ COLOR_PAIRS;
+ ESCDELAY;
+ PAIR_NUMBER;
+ TYPE_ALNUM;
+ TYPE_ALPHA;
+ TYPE_ENUM;
+ TYPE_INTEGER;
+ TYPE_IPV4;
+ TYPE_NUMERIC;
+ TYPE_REGEXP;
+ _nc_Default_Field; # deprecated in ABI6
+ _nc_Default_Form; # deprecated in ABI6
+ _nc_free_and_exit;
+ _nc_has_mouse; # deprecated in ABI6
+ _nc_panelhook;
+ _nc_ripoffline;
+ addch;
+ addchnstr;
+ addchstr;
+ addnstr;
+ addstr;
+ assume_default_colors;
+ attr_get;
+ attr_off;
+ attr_on;
+ attr_set;
+ attroff;
+ attron;
+ attrset;
+ beep;
+ bkgd;
+ bkgdset;
+ border;
+ bottom_panel;
+ box;
+ can_change_color;
+ chgat;
+ clear;
+ clearok;
+ clrtobot;
+ clrtoeol;
+ color_content;
+ color_set;
+ copywin;
+ current_field;
+ current_item;
+ data_ahead;
+ data_behind;
+ del_panel;
+ delch;
+ deleteln;
+ delscreen;
+ delwin;
+ derwin;
+ doupdate;
+ dup_field;
+ dupwin;
+ dynamic_field_info;
+ echo;
+ echochar;
+ endwin;
+ erase;
+ field_arg;
+ field_back;
+ field_buffer;
+ field_count;
+ field_fore;
+ field_index;
+ field_info;
+ field_init;
+ field_just;
+ field_opts;
+ field_opts_off;
+ field_opts_on;
+ field_pad;
+ field_status;
+ field_term;
+ field_type;
+ field_userptr;
+ filter;
+ flash;
+ form_driver;
+ form_fields;
+ form_init;
+ form_opts;
+ form_opts_off;
+ form_opts_on;
+ form_page;
+ form_request_by_name;
+ form_request_name;
+ form_sub;
+ form_term;
+ form_userptr;
+ form_win;
+ free_field;
+ free_fieldtype;
+ free_form;
+ free_item;
+ free_menu;
+ getbkgd;
+ getch;
+ getmouse;
+ getnstr;
+ getstr;
+ getwin;
+ has_colors;
+ hide_panel;
+ hline;
+ immedok;
+ inch;
+ inchnstr;
+ inchstr;
+ init_color;
+ init_pair;
+ initscr;
+ innstr;
+ insch;
+ insdelln;
+ insertln;
+ insnstr;
+ insstr;
+ instr;
+ is_linetouched;
+ is_wintouched;
+ isendwin;
+ item_count;
+ item_description;
+ item_index;
+ item_init;
+ item_name;
+ item_opts;
+ item_opts_off;
+ item_opts_on;
+ item_term;
+ item_userptr;
+ item_value;
+ item_visible;
+ leaveok;
+ link_field;
+ link_fieldtype;
+ mcprint;
+ menu_back;
+ menu_driver;
+ menu_fore;
+ menu_format;
+ menu_grey;
+ menu_init;
+ menu_items;
+ menu_mark;
+ menu_opts;
+ menu_opts_off;
+ menu_opts_on;
+ menu_pad;
+ menu_pattern;
+ menu_request_by_name;
+ menu_request_name;
+ menu_spacing;
+ menu_sub;
+ menu_term;
+ menu_userptr;
+ menu_win;
+ mouse_trafo;
+ mouseinterval;
+ mousemask;
+ move;
+ move_field;
+ move_panel;
+ mvaddch;
+ mvaddchnstr;
+ mvaddchstr;
+ mvaddnstr;
+ mvaddstr;
+ mvchgat;
+ mvcur;
+ mvdelch;
+ mvderwin;
+ mvgetch;
+ mvgetnstr;
+ mvgetstr;
+ mvhline;
+ mvinch;
+ mvinchnstr;
+ mvinchstr;
+ mvinnstr;
+ mvinsch;
+ mvinsnstr;
+ mvinsstr;
+ mvinstr;
+ mvprintw;
+ mvscanw;
+ mvvline;
+ mvwaddch;
+ mvwaddchnstr;
+ mvwaddchstr;
+ mvwaddnstr;
+ mvwaddstr;
+ mvwchgat;
+ mvwdelch;
+ mvwgetch;
+ mvwgetnstr;
+ mvwgetstr;
+ mvwhline;
+ mvwin;
+ mvwinch;
+ mvwinchnstr;
+ mvwinchstr;
+ mvwinnstr;
+ mvwinsch;
+ mvwinsnstr;
+ mvwinsstr;
+ mvwinstr;
+ mvwprintw;
+ mvwscanw;
+ mvwvline;
+ new_field;
+ new_fieldtype;
+ new_form;
+ new_item;
+ new_menu;
+ new_page;
+ new_panel;
+ newpad;
+ newterm;
+ newwin;
+ nl;
+ noecho;
+ nonl;
+ overlay;
+ overwrite;
+ pair_content;
+ panel_above;
+ panel_below;
+ panel_hidden;
+ panel_userptr;
+ panel_window;
+ pechochar;
+ pnoutrefresh;
+ pos_form_cursor;
+ pos_menu_cursor;
+ post_form;
+ post_menu;
+ prefresh;
+ printw;
+ putwin;
+ redrawwin;
+ refresh;
+ replace_panel;
+ resizeterm;
+ restartterm;
+ ripoffline;
+ scale_form;
+ scale_menu;
+ scanw;
+ scr_dump;
+ scr_init;
+ scr_restore;
+ scr_set;
+ scrl;
+ scroll;
+ scrollok;
+ set_current_field;
+ set_current_item;
+ set_field_back;
+ set_field_buffer;
+ set_field_fore;
+ set_field_init;
+ set_field_just;
+ set_field_opts;
+ set_field_pad;
+ set_field_status;
+ set_field_term;
+ set_field_type;
+ set_field_userptr;
+ set_fieldtype_arg;
+ set_fieldtype_choice;
+ set_form_fields;
+ set_form_init;
+ set_form_opts;
+ set_form_page;
+ set_form_sub;
+ set_form_term;
+ set_form_userptr;
+ set_form_win;
+ set_item_init;
+ set_item_opts;
+ set_item_term;
+ set_item_userptr;
+ set_item_value;
+ set_max_field;
+ set_menu_back;
+ set_menu_fore;
+ set_menu_format;
+ set_menu_grey;
+ set_menu_init;
+ set_menu_items;
+ set_menu_mark;
+ set_menu_opts;
+ set_menu_pad;
+ set_menu_pattern;
+ set_menu_spacing;
+ set_menu_sub;
+ set_menu_term;
+ set_menu_userptr;
+ set_menu_win;
+ set_new_page;
+ set_panel_userptr;
+ set_term;
+ set_top_row;
+ setscrreg;
+ show_panel;
+ slk_attr;
+ slk_attr_off;
+ slk_attr_on;
+ slk_attr_set;
+ slk_attroff;
+ slk_attron;
+ slk_attrset;
+ slk_clear;
+ slk_color;
+ slk_init;
+ slk_label;
+ slk_noutrefresh;
+ slk_refresh;
+ slk_restore;
+ slk_set;
+ slk_touch;
+ standend;
+ standout;
+ start_color;
+ subpad;
+ subwin;
+ syncok;
+ termattrs;
+ timeout;
+ top_panel;
+ top_row;
+ touchline;
+ touchwin;
+ ungetch;
+ ungetmouse;
+ unpost_form;
+ unpost_menu;
+ untouchwin;
+ update_panels;
+ use_default_colors;
+ vid_attr;
+ vidattr;
+ vidputs;
+ vline;
+ vw_printw;
+ vw_scanw;
+ vwprintw;
+ vwscanw;
+ waddch;
+ waddchnstr;
+ waddchstr;
+ waddnstr;
+ waddstr;
+ wattr_get;
+ wattr_off;
+ wattr_on;
+ wattr_set;
+ wattroff;
+ wattron;
+ wattrset;
+ wbkgd;
+ wbkgdset;
+ wborder;
+ wchgat;
+ wclear;
+ wclrtobot;
+ wclrtoeol;
+ wcolor_set;
+ wcursyncup;
+ wdelch;
+ wdeleteln;
+ wechochar;
+ wenclose;
+ werase;
+ wgetch;
+ wgetnstr;
+ wgetstr;
+ whline;
+ winch;
+ winchnstr;
+ winchstr;
+ winnstr;
+ winsch;
+ winsdelln;
+ winsertln;
+ winsnstr;
+ winsstr;
+ winstr;
+ wmouse_trafo;
+ wmove;
+ wnoutrefresh;
+ wprintw;
+ wredrawln;
+ wrefresh;
+ wresize;
+ wscanw;
+ wscrl;
+ wsetscrreg;
+ wstandend;
+ wstandout;
+ wsyncdown;
+ wsyncup;
+ wtouchln;
+ wvline;
+ local:
+ _nc_Calculate_Item_Length_and_Width;
+ _nc_Connect_Items;
+ _nc_Copy_Argument;
+ _nc_Copy_Type;
+ _nc_Default_FieldType;
+ _nc_Default_Item;
+ _nc_Default_Menu;
+ _nc_Disconnect_Items;
+ _nc_Draw_Menu;
+ _nc_First_Active_Field;
+ _nc_Free_Argument;
+ _nc_Free_Type;
+ _nc_Internal_Validation;
+ _nc_Link_Items;
+ _nc_Make_Argument;
+ _nc_Match_Next_Character_In_Item_Name;
+ _nc_New_TopRow_and_CurrentItem;
+ _nc_Position_Form_Cursor;
+ _nc_Post_Item;
+ _nc_Refresh_Current_Field;
+ _nc_Set_Current_Field;
+ _nc_Set_Form_Page;
+ _nc_Show_Menu;
+ _nc_Synchronize_Attributes;
+ _nc_Synchronize_Options;
+ _nc_background;
+ _nc_do_color;
+ _nc_expanded;
+ _nc_freewin;
+ _nc_hash_map;
+ _nc_make_oldhash;
+ _nc_makenew;
+ _nc_memmove;
+ _nc_menu_cursor_pos;
+ _nc_msec_cost;
+ _nc_mvcur_init;
+ _nc_mvcur_resume;
+ _nc_mvcur_wrap;
+ _nc_oldnums;
+ _nc_outstr;
+ _nc_printf_string;
+ _nc_render;
+ _nc_screen_init;
+ _nc_screen_resume;
+ _nc_screen_wrap;
+ _nc_scroll_oldhash;
+ _nc_scroll_optimize;
+ _nc_scroll_window;
+ _nc_scrolln;
+ _nc_setupscreen;
+ _nc_sigaction;
+ _nc_signal_handler;
+ _nc_slk_format;
+ _nc_slk_initialize;
+ _nc_synchook;
+ _nc_vsscanf;
+ _nc_waddch_nosync;
+};
+
+NCURSESW_5.3.20021019 {
+ global:
+ _nc_wacs;
+ _nc_wchstrlen;
+ add_wch;
+ add_wchnstr;
+ add_wchstr;
+ addnwstr;
+ addwstr;
+ bkgrnd;
+ bkgrndset;
+ border_set;
+ box_set;
+ echo_wchar;
+ erasewchar;
+ get_wch;
+ get_wstr;
+ getbkgrnd;
+ getcchar;
+ getn_wstr;
+ hline_set;
+ in_wch;
+ in_wchnstr;
+ in_wchstr;
+ innwstr;
+ ins_nwstr;
+ ins_wch;
+ ins_wstr;
+ inwstr;
+ is_term_resized;
+ key_name;
+ killwchar;
+ mvadd_wch;
+ mvadd_wchnstr;
+ mvadd_wchstr;
+ mvaddnwstr;
+ mvaddwstr;
+ mvget_wch;
+ mvget_wstr;
+ mvgetn_wstr;
+ mvhline_set;
+ mvin_wch;
+ mvin_wchnstr;
+ mvin_wchstr;
+ mvinnwstr;
+ mvins_nwstr;
+ mvins_wch;
+ mvins_wstr;
+ mvinwstr;
+ mvvline_set;
+ mvwadd_wch;
+ mvwadd_wchnstr;
+ mvwadd_wchstr;
+ mvwaddnwstr;
+ mvwaddwstr;
+ mvwget_wch;
+ mvwget_wstr;
+ mvwgetn_wstr;
+ mvwhline_set;
+ mvwin_wch;
+ mvwin_wchnstr;
+ mvwin_wchstr;
+ mvwinnwstr;
+ mvwins_nwstr;
+ mvwins_wch;
+ mvwins_wstr;
+ mvwinwstr;
+ mvwvline_set;
+ resize_term;
+ setcchar;
+ term_attrs;
+ unget_wch;
+ vid_puts;
+ vline_set;
+ wadd_wch;
+ wadd_wchnstr;
+ wadd_wchstr;
+ waddnwstr;
+ waddwstr;
+ wbkgrnd;
+ wbkgrndset;
+ wborder_set;
+ wecho_wchar;
+ wget_wch;
+ wget_wstr;
+ wgetn_wstr;
+ whline_set;
+ win_wch;
+ win_wchnstr;
+ win_wchstr;
+ winnwstr;
+ wins_nwstr;
+ wins_wch;
+ wins_wstr;
+ winwstr;
+ wunctrl;
+ wvline_set;
+ local:
+ _nc_init_wacs;
+ _nc_reset_colors;
+ _nc_varargs;
+ _nc_wgetch;
+} NCURSESW_5.1.20000708;
+
+NCURSESW_5.4.20040208 {
+ global:
+ _nc_optimize_enable;
+ pecho_wchar;
+ slk_wset;
+ local:
+ _nc_Touchline;
+ _nc_Touchpan;
+ _nc_Wnoutrefresh;
+ _nc_dPanel;
+ _nc_dStack;
+ _nc_fifo_dump;
+ _nc_insert_ch;
+ _nc_is_charable;
+ _nc_linedump;
+ _nc_my_visbuf;
+ _nc_to_char;
+ _nc_to_widechar;
+ _nc_trace_xnames;
+ _tracedump;
+ _tracemouse;
+} NCURSESW_5.3.20021019;
+
+NCURSESW_5.5.20051010 {
+ global:
+ _nc_wcrtomb;
+ local:
+ _nc_Calculate_Text_Width;
+ _nc_Widen_String;
+ _nc_build_wch;
+ _nc_retrace_field;
+ _nc_retrace_field_ptr;
+ _nc_retrace_field_type;
+ _nc_retrace_form;
+ _nc_retrace_form_hook;
+ _nc_retrace_item;
+ _nc_retrace_item_opts;
+ _nc_retrace_item_ptr;
+ _nc_retrace_menu;
+ _nc_retrace_menu_hook;
+ _nc_retrace_menu_opts;
+ _nc_retrace_panel;
+} NCURSESW_5.4.20040208;
+
+NCURSESW_5.6.20061217 {
+ global:
+ getbegx;
+ getbegy;
+ getcurx;
+ getcury;
+ getmaxx;
+ getmaxy;
+ getparx;
+ getpary;
+ nofilter;
+ use_legacy_coding;
+ wgetbkgrnd;
+ wgetch_events;
+ wgetnstr_events;
+} NCURSESW_5.5.20051010;
+
+NCURSESW_5.7.20081102 {
+ global:
+ getattrs;
+ is_cleared;
+ is_idcok;
+ is_idlok;
+ is_immedok;
+ is_keypad;
+ is_leaveok;
+ is_nodelay;
+ is_notimeout;
+ is_scrollok;
+ is_syncok;
+ set_escdelay;
+ use_screen;
+ use_window;
+ wgetparent;
+ wgetscrreg;
+ local:
+ _nc_tracemouse;
+ _nc_ungetch;
+} NCURSESW_5.6.20061217;
+
+NCURSESW_5.8.20110226 {
+ global:
+ _nc_panelhook_sp;
+ assume_default_colors_sp;
+ beep_sp;
+ can_change_color_sp;
+ ceiling_panel;
+ color_content_sp;
+ doupdate_sp;
+ echo_sp;
+ endwin_sp;
+ filter_sp;
+ flash_sp;
+ get_escdelay;
+ get_escdelay_sp;
+ getmouse_sp;
+ getwin_sp;
+ ground_panel;
+ has_colors_sp;
+ has_mouse;
+ has_mouse_sp;
+ init_color_sp;
+ init_pair_sp;
+ is_pad;
+ is_subwin;
+ is_term_resized_sp;
+ isendwin_sp;
+ mcprint_sp;
+ mouseinterval_sp;
+ mousemask_sp;
+ mvcur_sp;
+ new_form_sp;
+ new_menu_sp;
+ newpad_sp;
+ newterm_sp;
+ newwin_sp;
+ nl_sp;
+ noecho_sp;
+ nofilter_sp;
+ nonl_sp;
+ pair_content_sp;
+ resize_term_sp;
+ resizeterm_sp;
+ restartterm_sp;
+ ripoffline_sp;
+ scr_init_sp;
+ scr_restore_sp;
+ scr_set_sp;
+ set_escdelay_sp;
+ slk_attr_set_sp;
+ slk_attr_sp;
+ slk_attroff_sp;
+ slk_attron_sp;
+ slk_attrset_sp;
+ slk_clear_sp;
+ slk_color_sp;
+ slk_init_sp;
+ slk_label_sp;
+ slk_noutrefresh_sp;
+ slk_refresh_sp;
+ slk_restore_sp;
+ slk_set_sp;
+ slk_touch_sp;
+ start_color_sp;
+ term_attrs_sp;
+ termattrs_sp;
+ unget_wch_sp;
+ ungetch_sp;
+ ungetmouse_sp;
+ update_panels_sp;
+ use_default_colors_sp;
+ use_legacy_coding_sp;
+ vid_attr_sp;
+ vid_puts_sp;
+ vidattr_sp;
+ vidputs_sp;
+ wunctrl_sp;
+ local:
+ _nc_TYPE_ALNUM;
+ _nc_TYPE_ALPHA;
+ _nc_TYPE_ENUM;
+ _nc_TYPE_INTEGER;
+ _nc_TYPE_IPV4;
+ _nc_TYPE_NUMERIC;
+ _nc_TYPE_REGEXP;
+ _nc_curscr_of;
+ _nc_do_color_sp;
+ _nc_form_cursor;
+ _nc_format_slks;
+ _nc_free_and_exit_sp;
+ _nc_freeall_sp;
+ _nc_fty_generic;
+ _nc_generic_fieldtype;
+ _nc_get_fieldbuffer;
+ _nc_hash_map_sp;
+ _nc_insert_wch;
+ _nc_linedump_sp;
+ _nc_make_oldhash_sp;
+ _nc_makenew_sp;
+ _nc_msec_cost_sp;
+ _nc_mvcur_init_sp;
+ _nc_mvcur_resume_sp;
+ _nc_mvcur_wrap_sp;
+ _nc_newscr_of;
+ _nc_printf_string_sp;
+ _nc_reset_colors_sp;
+ _nc_retrace_mmask_t;
+ _nc_ripoffline_sp;
+ _nc_screen_init_sp;
+ _nc_screen_resume_sp;
+ _nc_screen_wrap_sp;
+ _nc_scroll_oldhash_sp;
+ _nc_scroll_optimize_sp;
+ _nc_scrolln_sp;
+ _nc_set_generic_fieldtype;
+ _nc_setupscreen_sp;
+ _nc_stdscr_of;
+} NCURSESW_5.7.20081102;
+
+NCURSESW_5.9.20150530 {
+ global:
+ form_driver_w;
+ wgetdelay;
+ local:
+ _nc_mvcur;
+ _nc_mvcur_sp;
+ _nc_trace_mmask_t;
+} NCURSESW_5.8.20110226;
+
+NCURSESW_6.1.20171230 {
+ global:
+ alloc_pair;
+ alloc_pair_sp;
+ extended_color_content;
+ extended_color_content_sp;
+ extended_pair_content;
+ extended_pair_content_sp;
+ extended_slk_color;
+ extended_slk_color_sp;
+ find_pair;
+ find_pair_sp;
+ free_pair;
+ free_pair_sp;
+ init_extended_color;
+ init_extended_color_sp;
+ init_extended_pair;
+ init_extended_pair_sp;
+ reset_color_pairs;
+ reset_color_pairs_sp;
+ unfocus_current_field;
+ local:
+ _nc_Unset_Current_Field;
+ _nc_change_pair;
+ _nc_init_color;
+ _nc_init_pair;
+ _nc_pair_content;
+ _nc_reset_color_pair;
+ _nc_set_color_pair;
+} NCURSESW_5.9.20150530;
+
+NCURSESW_6.1.current {
+ global:
+ exit_curses;
+ local:
+ _*;
+} NCURSESW_6.1.20171230;
diff --git a/package/ncursesw.sym b/package/ncursesw.sym
new file mode 100644
index 000000000000..d8d3fd8f11b8
--- /dev/null
+++ b/package/ncursesw.sym
@@ -0,0 +1,992 @@
+# $Id: ncursesw.sym,v 1.37 2019/12/14 22:45:41 tom Exp $
+# script for shared library symbol-visibility using libtool
+#
+# This file was generated by ncu-mapsyms
+# Configure options (5.1.20000708)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.2.20001021)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.3.20021019)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.4.20040208)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.5.20051010)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.6.20061217)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.7.20081102)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.8.20110226)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20110404)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding
+# Configure options (5.9.20150530)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace
+# Configure options (6.0.20161029)
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace
+# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace
+BC
+COLORS
+COLOR_PAIR
+COLOR_PAIRS
+COLS
+ESCDELAY
+LINES
+PAIR_NUMBER
+PC
+SP
+TABSIZE
+TYPE_ALNUM
+TYPE_ALPHA
+TYPE_ENUM
+TYPE_INTEGER
+TYPE_IPV4
+TYPE_NUMERIC
+TYPE_REGEXP
+UP
+_nc_Default_Field
+_nc_Default_Form
+_nc_access
+_nc_add_to_try
+_nc_align_termtype
+_nc_alloc_entry_leaks
+_nc_altcharset_name
+_nc_basename
+_nc_capcmp
+_nc_captoinfo_leaks
+_nc_check_termtype
+_nc_check_termtype2
+_nc_comp_scan_leaks
+_nc_copy_termtype
+_nc_copy_termtype2
+_nc_curr_col
+_nc_curr_line
+_nc_db_close
+_nc_db_first
+_nc_db_have_data
+_nc_db_next
+_nc_db_open
+_nc_db_put
+_nc_disable_period
+_nc_doalloc
+_nc_entry_match
+_nc_env_access
+_nc_err_abort
+_nc_eventlist_timeout
+_nc_export_termtype2
+_nc_fallback
+_nc_fallback2
+_nc_find_entry
+_nc_find_type_entry
+_nc_find_user_entry
+_nc_first_db
+_nc_first_name
+_nc_flush
+_nc_flush_sp
+_nc_fmt_funcptr
+_nc_free_and_exit
+_nc_free_entries
+_nc_free_termtype
+_nc_free_termtype2
+_nc_free_tic
+_nc_free_tinfo
+_nc_free_tparm
+_nc_freeall
+_nc_get_alias_table
+_nc_get_hash_table
+_nc_get_locale
+_nc_get_screensize
+_nc_get_source
+_nc_get_table
+_nc_get_tty_mode
+_nc_get_tty_mode_sp
+_nc_get_type
+_nc_getenv_num
+_nc_globals
+_nc_handle_sigwinch
+_nc_has_mouse
+_nc_head
+_nc_home_terminfo
+_nc_info_hash_table
+_nc_infotocap
+_nc_init_acs
+_nc_init_acs_sp
+_nc_init_termtype
+_nc_is_abs_path
+_nc_is_dir_path
+_nc_is_file_path
+_nc_keep_tic_dir
+_nc_keyname_leaks
+_nc_keypad
+_nc_last_db
+_nc_leaks_tinfo
+_nc_locale_breaks_acs
+_nc_name_match
+_nc_next_db
+_nc_optimize_enable
+_nc_outc_wrapper
+_nc_outch
+_nc_outch_sp
+_nc_outchars
+_nc_panelhook
+_nc_panelhook_sp
+_nc_pathlast
+_nc_prescreen
+_nc_putchar
+_nc_putchar_sp
+_nc_putp
+_nc_putp_flush
+_nc_putp_flush_sp
+_nc_putp_sp
+_nc_read_entry
+_nc_read_entry2
+_nc_read_entry_source
+_nc_read_file_entry
+_nc_read_termtype
+_nc_reset_input
+_nc_resolve_uses
+_nc_resolve_uses2
+_nc_retrace_attr_t
+_nc_retrace_bool
+_nc_retrace_chtype
+_nc_retrace_cptr
+_nc_retrace_cvoid_ptr
+_nc_retrace_int
+_nc_retrace_int_attr_t
+_nc_retrace_ptr
+_nc_retrace_sp
+_nc_retrace_unsigned
+_nc_retrace_void_ptr
+_nc_retrace_win
+_nc_ripoffline
+_nc_rootname
+_nc_safe_strcat
+_nc_safe_strcpy
+_nc_screen_chain
+_nc_screen_of
+_nc_set_buffer
+_nc_set_buffer_sp
+_nc_set_no_padding
+_nc_set_source
+_nc_set_tty_mode
+_nc_set_tty_mode_sp
+_nc_set_type
+_nc_set_writedir
+_nc_setupterm
+_nc_str_copy
+_nc_str_init
+_nc_str_null
+_nc_strict_bsd
+_nc_suppress_warnings
+_nc_syntax
+_nc_syserr_abort
+_nc_tail
+_nc_tgetent_leaks
+_nc_tic_dir
+_nc_tic_expand
+_nc_tic_written
+_nc_timed_wait
+_nc_tinfo_fkeys
+_nc_tparm_analyze
+_nc_tparm_err
+_nc_tputs_trace
+_nc_trace_buf
+_nc_trace_bufcat
+_nc_tracechar
+_nc_tracing
+_nc_trans_string
+_nc_trim_sgr0
+_nc_unicode_locale
+_nc_update_screensize
+_nc_user_definable
+_nc_utf8_outch
+_nc_visbuf
+_nc_visbuf2
+_nc_visbufn
+_nc_viscbuf
+_nc_wacs_width
+_nc_viswbuf
+_nc_viswbufn
+_nc_viswibuf
+_nc_wacs
+_nc_warning
+_nc_wchstrlen
+_nc_wcrtomb
+_nc_write_entry
+_nc_write_object
+_traceattr
+_traceattr2
+_tracecchar_t
+_tracecchar_t2
+_tracechar
+_tracechtype
+_tracechtype2
+_tracef
+acs_map
+add_wch
+add_wchnstr
+add_wchstr
+addch
+addchnstr
+addchstr
+addnstr
+addnwstr
+addstr
+addwstr
+alloc_pair
+alloc_pair_sp
+assume_default_colors
+assume_default_colors_sp
+attr_get
+attr_off
+attr_on
+attr_set
+attroff
+attron
+attrset
+baudrate
+baudrate_sp
+beep
+beep_sp
+bkgd
+bkgdset
+bkgrnd
+bkgrndset
+boolcodes
+boolfnames
+boolnames
+border
+border_set
+bottom_panel
+box
+box_set
+can_change_color
+can_change_color_sp
+cbreak
+cbreak_sp
+ceiling_panel
+chgat
+clear
+clearok
+clrtobot
+clrtoeol
+color_content
+color_content_sp
+color_set
+copywin
+cur_term
+current_field
+current_item
+curs_set
+curs_set_sp
+curscr
+curses_trace
+curses_version
+data_ahead
+data_behind
+def_prog_mode
+def_prog_mode_sp
+def_shell_mode
+def_shell_mode_sp
+define_key
+define_key_sp
+del_curterm
+del_curterm_sp
+del_panel
+delay_output
+delay_output_sp
+delch
+deleteln
+delscreen
+delwin
+derwin
+doupdate
+doupdate_sp
+dup_field
+dupwin
+dynamic_field_info
+echo
+echo_sp
+echo_wchar
+echochar
+endwin
+endwin_sp
+erase
+erasechar
+erasechar_sp
+erasewchar
+exit_curses
+exit_terminfo
+extended_color_content
+extended_color_content_sp
+extended_pair_content
+extended_pair_content_sp
+extended_slk_color
+extended_slk_color_sp
+field_arg
+field_back
+field_buffer
+field_count
+field_fore
+field_index
+field_info
+field_init
+field_just
+field_opts
+field_opts_off
+field_opts_on
+field_pad
+field_status
+field_term
+field_type
+field_userptr
+filter
+filter_sp
+find_pair
+find_pair_sp
+flash
+flash_sp
+flushinp
+flushinp_sp
+form_driver
+form_driver_w
+form_fields
+form_init
+form_opts
+form_opts_off
+form_opts_on
+form_page
+form_request_by_name
+form_request_name
+form_sub
+form_term
+form_userptr
+form_win
+free_field
+free_fieldtype
+free_form
+free_item
+free_menu
+free_pair
+free_pair_sp
+get_escdelay
+get_escdelay_sp
+get_wch
+get_wstr
+getattrs
+getbegx
+getbegy
+getbkgd
+getbkgrnd
+getcchar
+getch
+getcurx
+getcury
+getmaxx
+getmaxy
+getmouse
+getmouse_sp
+getn_wstr
+getnstr
+getparx
+getpary
+getstr
+getwin
+getwin_sp
+ground_panel
+halfdelay
+halfdelay_sp
+has_colors
+has_colors_sp
+has_ic
+has_ic_sp
+has_il
+has_il_sp
+has_key
+has_key_sp
+has_mouse
+has_mouse_sp
+hide_panel
+hline
+hline_set
+idcok
+idlok
+immedok
+in_wch
+in_wchnstr
+in_wchstr
+inch
+inchnstr
+inchstr
+init_color
+init_color_sp
+init_extended_color
+init_extended_color_sp
+init_extended_pair
+init_extended_pair_sp
+init_pair
+init_pair_sp
+initscr
+innstr
+innwstr
+ins_nwstr
+ins_wch
+ins_wstr
+insch
+insdelln
+insertln
+insnstr
+insstr
+instr
+intrflush
+intrflush_sp
+inwstr
+is_cleared
+is_idcok
+is_idlok
+is_immedok
+is_keypad
+is_leaveok
+is_linetouched
+is_nodelay
+is_notimeout
+is_pad
+is_scrollok
+is_subwin
+is_syncok
+is_term_resized
+is_term_resized_sp
+is_wintouched
+isendwin
+isendwin_sp
+item_count
+item_description
+item_index
+item_init
+item_name
+item_opts
+item_opts_off
+item_opts_on
+item_term
+item_userptr
+item_value
+item_visible
+key_defined
+key_defined_sp
+key_name
+keybound
+keybound_sp
+keyname
+keyname_sp
+keyok
+keyok_sp
+keypad
+killchar
+killchar_sp
+killwchar
+leaveok
+link_field
+link_fieldtype
+longname
+longname_sp
+mcprint
+mcprint_sp
+menu_back
+menu_driver
+menu_fore
+menu_format
+menu_grey
+menu_init
+menu_items
+menu_mark
+menu_opts
+menu_opts_off
+menu_opts_on
+menu_pad
+menu_pattern
+menu_request_by_name
+menu_request_name
+menu_spacing
+menu_sub
+menu_term
+menu_userptr
+menu_win
+meta
+mouse_trafo
+mouseinterval
+mouseinterval_sp
+mousemask
+mousemask_sp
+move
+move_field
+move_panel
+mvadd_wch
+mvadd_wchnstr
+mvadd_wchstr
+mvaddch
+mvaddchnstr
+mvaddchstr
+mvaddnstr
+mvaddnwstr
+mvaddstr
+mvaddwstr
+mvchgat
+mvcur
+mvcur_sp
+mvdelch
+mvderwin
+mvget_wch
+mvget_wstr
+mvgetch
+mvgetn_wstr
+mvgetnstr
+mvgetstr
+mvhline
+mvhline_set
+mvin_wch
+mvin_wchnstr
+mvin_wchstr
+mvinch
+mvinchnstr
+mvinchstr
+mvinnstr
+mvinnwstr
+mvins_nwstr
+mvins_wch
+mvins_wstr
+mvinsch
+mvinsnstr
+mvinsstr
+mvinstr
+mvinwstr
+mvprintw
+mvscanw
+mvvline
+mvvline_set
+mvwadd_wch
+mvwadd_wchnstr
+mvwadd_wchstr
+mvwaddch
+mvwaddchnstr
+mvwaddchstr
+mvwaddnstr
+mvwaddnwstr
+mvwaddstr
+mvwaddwstr
+mvwchgat
+mvwdelch
+mvwget_wch
+mvwget_wstr
+mvwgetch
+mvwgetn_wstr
+mvwgetnstr
+mvwgetstr
+mvwhline
+mvwhline_set
+mvwin
+mvwin_wch
+mvwin_wchnstr
+mvwin_wchstr
+mvwinch
+mvwinchnstr
+mvwinchstr
+mvwinnstr
+mvwinnwstr
+mvwins_nwstr
+mvwins_wch
+mvwins_wstr
+mvwinsch
+mvwinsnstr
+mvwinsstr
+mvwinstr
+mvwinwstr
+mvwprintw
+mvwscanw
+mvwvline
+mvwvline_set
+napms
+napms_sp
+new_field
+new_fieldtype
+new_form
+new_form_sp
+new_item
+new_menu
+new_menu_sp
+new_page
+new_panel
+new_prescr
+newpad
+newpad_sp
+newscr
+newterm
+newterm_sp
+newwin
+newwin_sp
+nl
+nl_sp
+nocbreak
+nocbreak_sp
+nodelay
+noecho
+noecho_sp
+nofilter
+nofilter_sp
+nonl
+nonl_sp
+noqiflush
+noqiflush_sp
+noraw
+noraw_sp
+notimeout
+numcodes
+numfnames
+numnames
+ospeed
+overlay
+overwrite
+pair_content
+pair_content_sp
+panel_above
+panel_below
+panel_hidden
+panel_userptr
+panel_window
+pecho_wchar
+pechochar
+pnoutrefresh
+pos_form_cursor
+pos_menu_cursor
+post_form
+post_menu
+prefresh
+printw
+putp
+putp_sp
+putwin
+qiflush
+qiflush_sp
+raw
+raw_sp
+redrawwin
+refresh
+replace_panel
+reset_color_pairs
+reset_color_pairs_sp
+reset_prog_mode
+reset_prog_mode_sp
+reset_shell_mode
+reset_shell_mode_sp
+resetty
+resetty_sp
+resize_term
+resize_term_sp
+resizeterm
+resizeterm_sp
+restartterm
+restartterm_sp
+ripoffline
+ripoffline_sp
+savetty
+savetty_sp
+scale_form
+scale_menu
+scanw
+scr_dump
+scr_init
+scr_init_sp
+scr_restore
+scr_restore_sp
+scr_set
+scr_set_sp
+scrl
+scroll
+scrollok
+set_current_field
+set_current_item
+set_curterm
+set_curterm_sp
+set_escdelay
+set_escdelay_sp
+set_field_back
+set_field_buffer
+set_field_fore
+set_field_init
+set_field_just
+set_field_opts
+set_field_pad
+set_field_status
+set_field_term
+set_field_type
+set_field_userptr
+set_fieldtype_arg
+set_fieldtype_choice
+set_form_fields
+set_form_init
+set_form_opts
+set_form_page
+set_form_sub
+set_form_term
+set_form_userptr
+set_form_win
+set_item_init
+set_item_opts
+set_item_term
+set_item_userptr
+set_item_value
+set_max_field
+set_menu_back
+set_menu_fore
+set_menu_format
+set_menu_grey
+set_menu_init
+set_menu_items
+set_menu_mark
+set_menu_opts
+set_menu_pad
+set_menu_pattern
+set_menu_spacing
+set_menu_sub
+set_menu_term
+set_menu_userptr
+set_menu_win
+set_new_page
+set_panel_userptr
+set_tabsize
+set_tabsize_sp
+set_term
+set_top_row
+setcchar
+setscrreg
+setupterm
+show_panel
+slk_attr
+slk_attr_off
+slk_attr_on
+slk_attr_set
+slk_attr_set_sp
+slk_attr_sp
+slk_attroff
+slk_attroff_sp
+slk_attron
+slk_attron_sp
+slk_attrset
+slk_attrset_sp
+slk_clear
+slk_clear_sp
+slk_color
+slk_color_sp
+slk_init
+slk_init_sp
+slk_label
+slk_label_sp
+slk_noutrefresh
+slk_noutrefresh_sp
+slk_refresh
+slk_refresh_sp
+slk_restore
+slk_restore_sp
+slk_set
+slk_set_sp
+slk_touch
+slk_touch_sp
+slk_wset
+standend
+standout
+start_color
+start_color_sp
+stdscr
+strcodes
+strfnames
+strnames
+subpad
+subwin
+syncok
+term_attrs
+term_attrs_sp
+termattrs
+termattrs_sp
+termname
+termname_sp
+tgetent
+tgetent_sp
+tgetflag
+tgetflag_sp
+tgetnum
+tgetnum_sp
+tgetstr
+tgetstr_sp
+tgoto
+tigetflag
+tigetflag_sp
+tigetnum
+tigetnum_sp
+tigetstr
+tigetstr_sp
+timeout
+tiparm
+top_panel
+top_row
+touchline
+touchwin
+tparm
+tputs
+tputs_sp
+trace
+ttytype
+typeahead
+typeahead_sp
+unctrl
+unctrl_sp
+unfocus_current_field
+unget_wch
+unget_wch_sp
+ungetch
+ungetch_sp
+ungetmouse
+ungetmouse_sp
+unpost_form
+unpost_menu
+untouchwin
+update_panels
+update_panels_sp
+use_default_colors
+use_default_colors_sp
+use_env
+use_env_sp
+use_extended_names
+use_legacy_coding
+use_legacy_coding_sp
+use_screen
+use_tioctl
+use_tioctl_sp
+use_window
+vid_attr
+vid_attr_sp
+vid_puts
+vid_puts_sp
+vidattr
+vidattr_sp
+vidputs
+vidputs_sp
+vline
+vline_set
+vw_printw
+vw_scanw
+vwprintw
+vwscanw
+wadd_wch
+wadd_wchnstr
+wadd_wchstr
+waddch
+waddchnstr
+waddchstr
+waddnstr
+waddnwstr
+waddstr
+waddwstr
+wattr_get
+wattr_off
+wattr_on
+wattr_set
+wattroff
+wattron
+wattrset
+wbkgd
+wbkgdset
+wbkgrnd
+wbkgrndset
+wborder
+wborder_set
+wchgat
+wclear
+wclrtobot
+wclrtoeol
+wcolor_set
+wcursyncup
+wdelch
+wdeleteln
+wecho_wchar
+wechochar
+wenclose
+werase
+wget_wch
+wget_wstr
+wgetbkgrnd
+wgetch
+wgetch_events
+wgetdelay
+wgetn_wstr
+wgetnstr
+wgetnstr_events
+wgetparent
+wgetscrreg
+wgetstr
+whline
+whline_set
+win_wch
+win_wchnstr
+win_wchstr
+winch
+winchnstr
+winchstr
+winnstr
+winnwstr
+wins_nwstr
+wins_wch
+wins_wstr
+winsch
+winsdelln
+winsertln
+winsnstr
+winsstr
+winstr
+winwstr
+wmouse_trafo
+wmove
+wnoutrefresh
+wprintw
+wredrawln
+wrefresh
+wresize
+wscanw
+wscrl
+wsetscrreg
+wstandend
+wstandout
+wsyncdown
+wsyncup
+wtimeout
+wtouchln
+wunctrl
+wunctrl_sp
+wvline
+wvline_set
diff --git a/panel/Makefile.in b/panel/Makefile.in
index baa080b3c7b0..953e55243f47 100644
--- a/panel/Makefile.in
+++ b/panel/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.62 2013/08/04 20:23:32 tom Exp $
+# $Id: Makefile.in,v 1.70 2018/01/15 19:28:45 tom Exp $
##############################################################################
-# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2015,2018 Free 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"), #
@@ -42,7 +42,7 @@
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
@@ -51,6 +51,7 @@ o = .@OBJEXT@
MODEL = @DFT_LWR_MODEL@
DESTDIR = @DESTDIR@
+top_srcdir = @top_srcdir@
srcdir = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
@@ -63,7 +64,10 @@ includesubdir = @includesubdir@
INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
+PACKAGE = @PACKAGE@
+
LIBTOOL = @LIBTOOL@
+LIBTOOL_OPTS = @LIBTOOL_OPTS@ @EXPORT_SYMS@
LIBTOOL_CLEAN = @LIB_CLEAN@
LIBTOOL_COMPILE = @LIB_COMPILE@
LIBTOOL_LINK = @LIB_LINK@
@@ -73,7 +77,7 @@ LT_UNDEF = @LT_UNDEF@
INSTALL = @INSTALL@
INSTALL_LIB = @INSTALL@ @INSTALL_LIB@
-INSTALL_PROG = @INSTALL_PROGRAM@
+INSTALL_PROG = @INSTALL_PROGRAM@ @INSTALL_OPT_S@
INSTALL_DATA = @INSTALL_DATA@
AR = @AR@
@@ -89,7 +93,7 @@ CC = @CC@
CPP = @CPP@
CFLAGS = @CFLAGS@
-CPPFLAGS = -I@top_srcdir@/ncurses -DHAVE_CONFIG_H @CPPFLAGS@
+CPPFLAGS = -I${top_srcdir}/ncurses -DHAVE_CONFIG_H @CPPFLAGS@
CCFLAGS = $(CPPFLAGS) $(CFLAGS)
@@ -105,9 +109,11 @@ LINK = $(LIBTOOL_LINK)
LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
SHLIB_DIRS = -L../lib
-SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
+SHLIB_LIST = $(SHLIB_DIRS) -lncurses@USE_LIB_SUFFIX@ @SHLIB_LIST@
RPATH_LIST = @RPATH_LIST@
+RESULTING_SYMS = @RESULTING_SYMS@
+VERSIONED_SYMS = @VERSIONED_SYMS@
MK_SHARED_LIB = @MK_SHARED_LIB@
NCURSES_MAJOR = @NCURSES_MAJOR@
@@ -158,6 +164,7 @@ mostlyclean ::
clean :: mostlyclean
-rm -f $(AUTO_SRC)
+ -rm -rf .libs *.dSYM
distclean :: clean
-rm -f Makefile
diff --git a/panel/llib-lpanel b/panel/llib-lpanel
index 85371ec73e06..02e105468ebb 100644
--- a/panel/llib-lpanel
+++ b/panel/llib-lpanel
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2015 Free 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 1997,2005,2010 *
+ * Author: Thomas E. Dickey 1996-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -181,13 +181,13 @@ void update_panels(void)
#undef set_panel_userptr
int set_panel_userptr(
PANEL *pan,
- void *uptr)
+ const void *uptr)
{ return(*(int *)0); }
#undef panel_userptr
-void *panel_userptr(
+const void *panel_userptr(
const PANEL *pan)
- { return(*(void **)0); }
+ { return(*(const void **)0); }
/* ./p_win.c */
diff --git a/panel/llib-lpanelt b/panel/llib-lpanelt
index 8fcd42c9b6de..2877dbafd0c1 100644
--- a/panel/llib-lpanelt
+++ b/panel/llib-lpanelt
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2010,2015 Free 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 2010 *
+ * Author: Thomas E. Dickey 2010-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -181,13 +181,13 @@ void update_panels(void)
#undef set_panel_userptr
int set_panel_userptr(
PANEL *pan,
- void *uptr)
+ const void *uptr)
{ return(*(int *)0); }
#undef panel_userptr
-void *panel_userptr(
+const void *panel_userptr(
const PANEL *pan)
- { return(*(void **)0); }
+ { return(*(const void **)0); }
/* ./p_win.c */
diff --git a/panel/llib-lpaneltw b/panel/llib-lpaneltw
index 1d3cd8d84c8f..2877dbafd0c1 100644
--- a/panel/llib-lpaneltw
+++ b/panel/llib-lpaneltw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2010,2015 Free 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 2010 *
+ * Author: Thomas E. Dickey 2010-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -181,13 +181,13 @@ void update_panels(void)
#undef set_panel_userptr
int set_panel_userptr(
PANEL *pan,
- void *uptr)
+ const void *uptr)
{ return(*(int *)0); }
#undef panel_userptr
-void *panel_userptr(
+const void *panel_userptr(
const PANEL *pan)
- { return(*(void **)0); }
+ { return(*(const void **)0); }
/* ./p_win.c */
diff --git a/panel/llib-lpanelw b/panel/llib-lpanelw
index 503b34345ba8..4d6688e5e13e 100644
--- a/panel/llib-lpanelw
+++ b/panel/llib-lpanelw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2010,2015 Free 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 2002-2005,2010 *
+ * Author: Thomas E. Dickey 2002-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -181,13 +181,13 @@ void update_panels(void)
#undef set_panel_userptr
int set_panel_userptr(
PANEL *pan,
- void *uptr)
+ const void *uptr)
{ return(*(int *)0); }
#undef panel_userptr
-void *panel_userptr(
+const void *panel_userptr(
const PANEL *pan)
- { return(*(void **)0); }
+ { return(*(const void **)0); }
/* ./p_win.c */
diff --git a/panel/panel.h b/panel/panel.h
index 6ed2061d1ff8..7135e7e5fbd1 100644
--- a/panel/panel.h
+++ b/panel/panel.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2017 Free 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 @@
* and: Juergen Pfeifer 1996-1999,2008 *
****************************************************************************/
-/* $Id: panel.h,v 1.11 2009/04/11 19:50:40 tom Exp $ */
+/* $Id: panel.h,v 1.12 2017/02/11 16:50:28 tom Exp $ */
/* panel.h -- interface file for panels library */
@@ -42,12 +42,15 @@
#include <curses.h>
typedef struct panel
+#if !NCURSES_OPAQUE_PANEL
{
WINDOW *win;
struct panel *below;
struct panel *above;
NCURSES_CONST void *user;
-} PANEL;
+}
+#endif /* !NCURSES_OPAQUE_PANEL */
+PANEL;
#if defined(__cplusplus)
extern "C" {
diff --git a/panel/panel.priv.h b/panel/panel.priv.h
index 76607fb2c0ca..7934018ff6b2 100644
--- a/panel/panel.priv.h
+++ b/panel/panel.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2014,2017 Free 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,10 +26,11 @@
* authorization. *
****************************************************************************/
-/* $Id: panel.priv.h,v 1.25 2012/12/15 23:57:43 tom Exp $ */
+/* $Id: panel.priv.h,v 1.27 2017/02/11 16:50:43 tom Exp $ */
#ifndef NCURSES_PANEL_PRIV_H
#define NCURSES_PANEL_PRIV_H 1
+/* *INDENT-OFF* */
#if HAVE_CONFIG_H
# include <ncurses_cfg.h>
@@ -42,15 +43,10 @@
struct screen; /* forward declaration */
#include "curses.priv.h" /* includes nc_panel.h */
-#include "panel.h"
-
-#if USE_RCS_IDS
-# define MODULE_ID(id) static const char Ident[] = id;
-#else
-# define MODULE_ID(id) /*nothing*/
-#endif
+#define NCURSES_OPAQUE_PANEL 0
+#include "panel.h"
#ifdef TRACE
extern NCURSES_EXPORT(const char *) _nc_my_visbuf (const void *);
@@ -60,7 +56,7 @@ struct screen; /* forward declaration */
# define USER_PTR(ptr) _nc_my_visbuf((const char *)ptr)
# endif
-# define returnPanel(code) TRACE_RETURN(code,panel)
+# define returnPanel(code) TRACE_RETURN1(code,panel)
extern NCURSES_EXPORT(PANEL *) _nc_retrace_panel (PANEL *);
extern NCURSES_EXPORT(void) _nc_dPanel (const char*, const PANEL*);
@@ -210,5 +206,6 @@ struct screen; /* forward declaration */
/* These may become later renamed and part of panel.h and the public API */
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_update_panels)(SCREEN*);
#endif
+/* *INDENT-ON* */
#endif /* NCURSES_PANEL_PRIV_H */
diff --git a/progs/MKtermsort.sh b/progs/MKtermsort.sh
index 2247f14ef2e8..60aaaedf7325 100755
--- a/progs/MKtermsort.sh
+++ b/progs/MKtermsort.sh
@@ -1,10 +1,10 @@
#!/bin/sh
-# $Id: MKtermsort.sh,v 1.10 2008/07/12 20:22:54 tom Exp $
+# $Id: MKtermsort.sh,v 1.12 2017/08/12 12:22:06 tom Exp $
#
# MKtermsort.sh -- generate indirection vectors for the various sort methods
#
##############################################################################
-# Copyright (c) 1998-2003,2008 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2015,2017 Free 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,7 +46,7 @@ AWK=${1-awk}
DATA=${2-../include/Caps}
data=data$$
-trap 'rm -f $data' 1 2 5 15
+trap 'rm -f $data' 1 2 3 15
sed -e 's/[ ][ ]*/ /g' < $DATA >$data
DATA=$data
@@ -139,24 +139,30 @@ echo "";
echo "static const bool bool_from_termcap[] = {";
$AWK <$DATA '
-$3 == "bool" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */";}
-$3 == "bool" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */";}
+BEGIN { count = 0; valid = 0; }
+$3 == "bool" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */"; count++; }
+$3 == "bool" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */"; valid = count++; }
+END { printf "#define OK_bool_from_termcap %d\n", valid; }
'
echo "};";
echo "";
echo "static const bool num_from_termcap[] = {";
$AWK <$DATA '
-$3 == "num" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */";}
-$3 == "num" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */";}
+BEGIN { count = 0; valid = 0; }
+$3 == "num" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */"; count++; }
+$3 == "num" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */"; valid = count++; }
+END { printf "#define OK_num_from_termcap %d\n", valid; }
'
echo "};";
echo "";
echo "static const bool str_from_termcap[] = {";
$AWK <$DATA '
-$3 == "str" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */";}
-$3 == "str" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */";}
+BEGIN { count = 0; valid = 0; }
+$3 == "str" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */"; count++; }
+$3 == "str" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */"; valid = count++; }
+END { printf "#define OK_str_from_termcap %d\n", valid; }
'
echo "};";
echo "";
diff --git a/progs/Makefile.in b/progs/Makefile.in
index a9161b16cbca..b55057d88ef9 100644
--- a/progs/Makefile.in
+++ b/progs/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.90 2013/08/04 20:23:20 tom Exp $
+# $Id: Makefile.in,v 1.102 2018/01/15 19:28:45 tom Exp $
##############################################################################
-# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2016,2018 Free 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"), #
@@ -42,7 +42,7 @@
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
@@ -67,7 +67,10 @@ includesubdir = @includesubdir@
INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
+PACKAGE = @PACKAGE@
+
LIBTOOL = @LIBTOOL@
+LIBTOOL_OPTS = @LIBTOOL_OPTS@
LIBTOOL_CLEAN = @LIB_CLEAN@
LIBTOOL_COMPILE = @LIB_COMPILE@
LIBTOOL_LINK = @LIB_LINK@
@@ -75,7 +78,7 @@ LIBTOOL_INSTALL = @LIB_INSTALL@
LIBTOOL_UNINSTALL = @LIB_UNINSTALL@
INSTALL = @INSTALL@
-INSTALL_PROG = @INSTALL_PROGRAM@
+INSTALL_PROG = @INSTALL_PROGRAM@ @INSTALL_OPT_S@
transform = @program_transform_name@
AWK = @AWK@
@@ -89,7 +92,7 @@ CPP = @CPP@
CFLAGS = @CFLAGS@
INCDIR = $(top_srcdir)/include
-CPPFLAGS = -I../progs -I$(srcdir) -DHAVE_CONFIG_H @CPPFLAGS@
+CPPFLAGS = -DHAVE_CONFIG_H -I../progs @CPPFLAGS@
CCFLAGS = $(CPPFLAGS) $(CFLAGS)
@@ -176,6 +179,7 @@ actual_tset = `echo tset$x| $(TRANSFORM)`
# transformed names for comparing at runtime
define_captoinfo = `echo captoinfo| $(TRANSFORM)`
+define_clear = `echo clear| $(TRANSFORM)`
define_infotocap = `echo infotocap| $(TRANSFORM)`
define_init = `echo init| $(TRANSFORM)`
define_reset = `echo reset| $(TRANSFORM)`
@@ -185,9 +189,10 @@ transform.h :
echo "#define __TRANSFORM_H 1" >>$@
echo "#include <progs.priv.h>" >>$@
echo "extern bool same_program(const char *, const char *);" >>$@
- -sh -c 'if test -n "$x" ; then echo "#define SUFFIX_IGNORED \"$x\"">>$@; fi'
+ -$(SHELL) -c 'if test -n "$x" ; then echo "#define SUFFIX_IGNORED \"$x\"">>$@; fi'
echo "#define PROG_CAPTOINFO \"$(define_captoinfo)\"" >>$@
echo "#define PROG_INFOTOCAP \"$(define_infotocap)\"" >>$@
+ echo "#define PROG_CLEAR \"$(define_clear)\"" >>$@
echo "#define PROG_RESET \"$(define_reset)\"" >>$@
echo "#define PROG_INIT \"$(define_init)\"" >>$@
echo "#endif /* __TRANSFORM_H */" >>$@
@@ -232,6 +237,7 @@ $(DESTDIR)$(bindir) :
DEPS_TIC = \
$(MODEL)/tic$o \
$(MODEL)/dump_entry$o \
+ $(MODEL)/tparm_type$o \
$(MODEL)/transform$o
tic$x: $(DEPS_TIC) $(DEPS_CURSES) transform.h
@@ -244,20 +250,27 @@ toe$x: $(DEPS_TOE) $(DEPS_CURSES)
@ECHO_LD@ $(LINK) $(DEPS_TOE) $(LDFLAGS_TIC) -o $@
DEPS_CLEAR = \
- $(MODEL)/clear$o
+ $(MODEL)/clear$o \
+ $(MODEL)/clear_cmd$o \
+ $(MODEL)/tty_settings$o
clear$x: $(DEPS_CLEAR) $(DEPS_CURSES)
@ECHO_LD@ $(LINK) $(DEPS_CLEAR) $(LDFLAGS_TINFO) -o $@
DEPS_TABS = \
- $(MODEL)/tabs$o
+ $(MODEL)/tabs$o \
+ $(MODEL)/tty_settings$o
tabs$x: $(DEPS_TABS) $(DEPS_TABS)
@ECHO_LD@ $(LINK) $(DEPS_TABS) $(LDFLAGS_TINFO) -o $@
DEPS_TPUT = \
$(MODEL)/tput$o \
- $(MODEL)/transform$o
+ $(MODEL)/clear_cmd$o \
+ $(MODEL)/reset_cmd$o \
+ $(MODEL)/tparm_type$o \
+ $(MODEL)/transform$o \
+ $(MODEL)/tty_settings$o
tput$x: $(DEPS_TPUT) $(DEPS_CURSES) transform.h
@ECHO_LD@ $(LINK) $(DEPS_TPUT) $(LDFLAGS_TINFO) -o $@
@@ -271,13 +284,15 @@ infocmp$x: $(DEPS_INFOCMP) $(DEPS_CURSES)
DEPS_TSET = \
$(MODEL)/tset$o \
- $(MODEL)/transform$o
+ $(MODEL)/reset_cmd$o \
+ $(MODEL)/transform$o \
+ $(MODEL)/tty_settings$o
tset$x: $(DEPS_TSET) $(DEPS_CURSES) transform.h
@ECHO_LD@ $(LINK) $(DEPS_TSET) $(LDFLAGS_TINFO) -o $@
termsort.c: $(srcdir)/MKtermsort.sh
- sh $(srcdir)/MKtermsort.sh $(AWK) $(srcdir)/../include/@TERMINFO_CAPS@ >$@
+ $(SHELL) $(srcdir)/MKtermsort.sh $(AWK) $(srcdir)/../include/@TERMINFO_CAPS@ >$@
#
# Utility productions start here
@@ -293,10 +308,10 @@ mostlyclean ::
-rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace
clean :: mostlyclean
- -sh -c "if test -n '$x' ; then $(MAKE) clean x=''; fi"
+ -$(SHELL) -c "if test -n '$x' ; then $(MAKE) clean x=''; fi"
-rm -f $(AUTO_SRC)
-rm -f $(PROGS)
- -rm -rf .libs
+ -rm -rf .libs *.dSYM
distclean :: clean
-rm -f Makefile
diff --git a/progs/capconvert b/progs/capconvert
index eb382e0bc86c..a3535bd4a570 100755
--- a/progs/capconvert
+++ b/progs/capconvert
@@ -1,6 +1,6 @@
#!/bin/sh
##############################################################################
-# Copyright (c) 1998-2006,2011 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2019,2020 Free 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"), #
@@ -26,7 +26,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: capconvert,v 1.5 2011/11/12 23:28:07 Robert.Millan Exp $
+# $Id: capconvert,v 1.8 2020/01/18 17:02:38 tom Exp $
#
# capconvert -- automated conversion from termcap to terminfo
#
@@ -179,7 +179,7 @@ else
echo "I am going to assume this is the terminfo source included with"
echo "the ncurses distribution. If this assumption is wrong, please"
echo "interrupt me now! OK to continue?"
- read ans;
+ read answer;
;;
2)
echo "I see more than one possible terminfo source. Here they are:"
@@ -205,14 +205,14 @@ echo "OK, now I will make your private terminfo tree. This may take a bit..."
#
# Kluge alert: we compile terminfo.src in two pieces because a lot of machines
# with < 16MB RAM choke on tic's core-hog habits.
-trap "rm -f tsplit$$.*" 0 1 2 5 15
+trap "rm -f tsplit$$.*" EXIT INT QUIT TERM HUP
sed -n $master \
-e '1,/SPLIT HERE/w 'tsplit$$.01 \
-e '/SPLIT HERE/,$w 'tsplit$$.02 \
2>/dev/null
for x in tsplit$$.*; do eval $TIC $x; done
rm tsplit$$.*
-trap 0 1 2 5 15
+trap EXIT INT QUIT TERM HUP
#
echo "You now have a private tree under $HOME/.terminfo;"
echo "the ncurses library will automatically read from it,"
@@ -251,7 +251,7 @@ else
echo "Done."
echo "Note that editing TERMCAP will no longer change the data curses sees."
fi
-echo "To do that, decompile the terminal decription you want with infocmp(1),"
+echo "To do that, decompile the terminal description you want with infocmp(1),"
echo "edit to taste, and recompile using tic(1)."
# capconvert ends here
diff --git a/progs/clear.c b/progs/clear.c
index 4ac503ed3641..2ffdf9530948 100644
--- a/progs/clear.c
+++ b/progs/clear.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2007,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,14 +37,29 @@
*/
#define USE_LIBTINFO
-#include <progs.priv.h>
+#include <clear_cmd.h>
+#include <tty_settings.h>
-MODULE_ID("$Id: clear.c,v 1.13 2013/06/22 22:20:54 tom Exp $")
+MODULE_ID("$Id: clear.c,v 1.22 2017/10/07 21:48:32 tom Exp $")
-static int
-putch(int c)
+const char *_nc_progname = "clear";
+
+static void
+usage(void)
{
- return putchar(c);
+#define KEEP(s) s "\n"
+ static const char msg[] =
+ {
+ KEEP("")
+ KEEP("Options:")
+ KEEP(" -T TERM use this instead of $TERM")
+ KEEP(" -V print curses-version")
+ KEEP(" -x do not try to clear scrollback")
+ };
+#undef KEEP
+ (void) fprintf(stderr, "Usage: %s [options]\n", _nc_progname);
+ fputs(msg, stderr);
+ ExitProgram(EXIT_FAILURE);
}
int
@@ -52,16 +67,41 @@ main(
int argc GCC_UNUSED,
char *argv[]GCC_UNUSED)
{
- char *E3;
+ TTY tty_settings;
+ int fd;
+ int c;
+ char *term;
+ bool opt_x = FALSE; /* clear scrollback if possible */
+
+ _nc_progname = _nc_rootname(argv[0]);
+ term = getenv("TERM");
+
+ while ((c = getopt(argc, argv, "T:Vx")) != -1) {
+ switch (c) {
+ case 'T':
+ use_env(FALSE);
+ use_tioctl(TRUE);
+ term = optarg;
+ break;
+ case 'V':
+ puts(curses_version());
+ ExitProgram(EXIT_SUCCESS);
+ case 'x': /* do not try to clear scrollback */
+ opt_x = TRUE;
+ break;
+ default:
+ usage();
+ /* NOTREACHED */
+ }
+ }
+ if (optind < argc)
+ usage();
- setupterm((char *) 0, STDOUT_FILENO, (int *) 0);
+ fd = save_tty_settings(&tty_settings, FALSE);
- /* Clear the scrollback buffer if possible. */
- E3 = tigetstr("E3");
- if (E3)
- (void) tputs(E3, lines > 0 ? lines : 1, putch);
+ setupterm(term, fd, (int *) 0);
- ExitProgram((tputs(clear_screen, lines > 0 ? lines : 1, putch) == ERR)
+ ExitProgram((clear_cmd(opt_x) == ERR)
? EXIT_FAILURE
: EXIT_SUCCESS);
}
diff --git a/progs/clear_cmd.c b/progs/clear_cmd.c
new file mode 100644
index 000000000000..ef404a444d6e
--- /dev/null
+++ b/progs/clear_cmd.c
@@ -0,0 +1,59 @@
+/****************************************************************************
+ * Copyright (c) 2016-2017,2018 Free 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 *
+ ****************************************************************************/
+
+/*
+ * clear.c -- clears the terminal's screen
+ */
+
+#define USE_LIBTINFO
+#include <clear_cmd.h>
+
+MODULE_ID("$Id: clear_cmd.c,v 1.4 2018/08/04 18:43:22 Nicholas.Marriott Exp $")
+
+static int
+putch(int c)
+{
+ return putchar(c);
+}
+
+int
+clear_cmd(bool legacy)
+{
+ int retval = tputs(clear_screen, lines > 0 ? lines : 1, putch);
+ if (!legacy) {
+ /* Clear the scrollback buffer if possible. */
+ char *E3 = tigetstr("E3");
+ if (E3)
+ (void) tputs(E3, lines > 0 ? lines : 1, putch);
+ }
+ return retval;
+}
diff --git a/progs/clear_cmd.h b/progs/clear_cmd.h
new file mode 100644
index 000000000000..7ccd44c8c8fb
--- /dev/null
+++ b/progs/clear_cmd.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ * Copyright (c) 2016,2017 Free 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 *
+ ****************************************************************************/
+
+/*
+ * $Id: clear_cmd.h,v 1.2 2017/08/19 13:37:38 tom Exp $
+ *
+ * Utility functions for clearing terminal.
+ */
+#ifndef CLEAR_CMD_H
+#define CLEAR_CMD_H 1
+
+#include <progs.priv.h>
+extern int clear_cmd(bool);
+
+#endif /* CLEAR_CMD_H */
diff --git a/progs/dump_entry.c b/progs/dump_entry.c
index 65de9f9bc1f1..8a47084a28bf 100644
--- a/progs/dump_entry.c
+++ b/progs/dump_entry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,13 +39,14 @@
#include "termsort.c" /* this C file is generated */
#include <parametrized.h> /* so is this */
-MODULE_ID("$Id: dump_entry.c,v 1.111 2013/12/15 01:05:20 tom Exp $")
+MODULE_ID("$Id: dump_entry.c,v 1.175 2019/10/12 15:59:07 tom Exp $")
-#define INDENT 8
#define DISCARD(string) string = ABSENT_STRING
#define PRINTF (void) printf
+#define WRAPPED 32
#define OkIndex(index,array) ((int)(index) >= 0 && (int)(index) < (int) SIZEOF(array))
+#define TcOutput() (outform == F_TERMCAP || outform == F_TCONVERR)
typedef struct {
char *text;
@@ -61,6 +62,10 @@ static int height = 65535; /* max number of lines for listings */
static int column; /* current column, limited by 'width' */
static int oldcol; /* last value of column before wrap */
static bool pretty; /* true if we format if-then-else strings */
+static bool wrapped; /* true if we wrap too-long strings */
+static bool did_wrap; /* true if last wrap_concat did wrapping */
+static bool checking; /* true if we are checking for tic */
+static int quickdump; /* true if we are dumping compiled data */
static char *save_sgr;
@@ -74,6 +79,7 @@ static NCURSES_CONST char *const *num_names;
static NCURSES_CONST char *const *str_names;
static const char *separator = "", *trailer = "";
+static int indent = 8;
/* cover various ports and variants of terminfo */
#define V_ALLCAPS 0 /* all capabilities (SVr4, XSI, ncurses) */
@@ -88,7 +94,7 @@ static const char *separator = "", *trailer = "";
#define OBSOLETE(n) (n[0] == 'O' && n[1] == 'T')
#endif
-#define isObsolete(f,n) ((f == F_TERMINFO || f == F_VARIABLE) && OBSOLETE(n))
+#define isObsolete(f,n) ((f == F_TERMINFO || f == F_VARIABLE) && (sortmode != S_VARIABLE) && OBSOLETE(n))
#if NCURSES_XNAMES
#define BoolIndirect(j) ((j >= BOOLCOUNT) ? (j) : ((sortmode == S_NOSORT) ? j : bool_indirect[j]))
@@ -119,7 +125,7 @@ strncpy_DYN(DYNBUF * dst, const char *src, size_t need)
if (dst->text == 0)
failed("strncpy_DYN");
}
- (void) strncpy(dst->text + dst->used, src, need);
+ _nc_STRNCPY(dst->text + dst->used, src, need + 1);
dst->used += need;
dst->text[dst->used] = 0;
}
@@ -155,17 +161,17 @@ _nc_leaks_dump_entry(void)
#endif
#define NameTrans(check,result) \
- if (OkIndex(np->nte_index, check) \
+ if ((np->nte_index <= OK_ ## check) \
&& check[np->nte_index]) \
return (result[np->nte_index])
NCURSES_CONST char *
nametrans(const char *name)
-/* translate a capability name from termcap to terminfo */
+/* translate a capability name to termcap from terminfo */
{
const struct name_table_entry *np;
- if ((np = _nc_find_entry(name, _nc_get_hash_table(0))) != 0)
+ if ((np = _nc_find_entry(name, _nc_get_hash_table(0))) != 0) {
switch (np->nte_type) {
case BOOLEAN:
NameTrans(bool_from_termcap, boolcodes);
@@ -179,6 +185,7 @@ nametrans(const char *name)
NameTrans(str_from_termcap, strcodes);
break;
}
+ }
return (0);
}
@@ -187,15 +194,23 @@ void
dump_init(const char *version,
int mode,
int sort,
+ bool wrap_strings,
int twidth,
int theight,
unsigned traceval,
- bool formatted)
+ bool formatted,
+ bool check,
+ int quick)
/* set up for entry display */
{
width = twidth;
height = theight;
pretty = formatted;
+ wrapped = wrap_strings;
+ checking = check;
+ quickdump = (quick & 3);
+
+ did_wrap = (width <= 0);
/* versions */
if (version == 0)
@@ -240,6 +255,7 @@ dump_init(const char *version,
trailer = "\\\n\t:";
break;
}
+ indent = 8;
/* implement sort modes */
switch (sortmode = sort) {
@@ -283,7 +299,7 @@ dump_init(const char *version,
_nc_progname, width, tversion, outform);
}
-static TERMTYPE *cur_type;
+static TERMTYPE2 *cur_type;
static int
dump_predicate(PredType type, PredIdx idx)
@@ -306,7 +322,7 @@ dump_predicate(PredType type, PredIdx idx)
return (FALSE); /* pacify compiler */
}
-static void set_obsolete_termcaps(TERMTYPE *tp);
+static void set_obsolete_termcaps(TERMTYPE2 *tp);
/* is this the index of a function key string? */
#define FNKEY(i) \
@@ -409,22 +425,254 @@ force_wrap(void)
oldcol = column;
trim_trailing();
strcpy_DYN(&outbuf, trailer);
- column = INDENT;
+ column = indent;
}
-static void
-wrap_concat(const char *src)
+static int
+op_length(const char *src, int offset)
+{
+ int result = 0;
+ int ch;
+ if (offset > 0 && src[offset - 1] == '\\') {
+ result = 0;
+ } else {
+ result++; /* for '%' mark */
+ ch = src[offset + result];
+ if (TcOutput()) {
+ if (ch == '>') {
+ result += 3;
+ } else if (ch == '+') {
+ result += 2;
+ } else {
+ result++;
+ }
+ } else if (ch == '\'') {
+ result += 3;
+ } else if (ch == L_CURL[0]) {
+ int n = result;
+ while ((ch = src[offset + n]) != '\0') {
+ if (ch == R_CURL[0]) {
+ result = ++n;
+ break;
+ }
+ n++;
+ }
+ } else if (strchr("pPg", ch) != 0) {
+ result += 2;
+ } else {
+ result++; /* ordinary operator */
+ }
+ }
+ return result;
+}
+
+/*
+ * When wrapping too-long strings, avoid splitting a backslash sequence, or
+ * a terminfo '%' operator. That will leave things a little ragged, but avoids
+ * a stray backslash at the end of the line, as well as making the result a
+ * little more readable.
+ */
+static int
+find_split(const char *src, int step, int size)
+{
+ int result = size;
+ int n;
+ if (size > 0) {
+ /* check if that would split a backslash-sequence */
+ int mark = size;
+ for (n = size - 1; n > 0; --n) {
+ int ch = UChar(src[step + n]);
+ if (ch == '\\') {
+ if (n > 0 && src[step + n - 1] == ch)
+ --n;
+ mark = n;
+ break;
+ } else if (!isalnum(ch)) {
+ break;
+ }
+ }
+ if (mark < size) {
+ result = mark;
+ } else {
+ /* check if that would split a backslash-sequence */
+ for (n = size - 1; n > 0; --n) {
+ int ch = UChar(src[step + n]);
+ if (ch == '%') {
+ int need = op_length(src, step + n);
+ if ((n + need) > size) {
+ mark = n;
+ }
+ break;
+ }
+ }
+ if (mark < size) {
+ result = mark;
+ }
+ }
+ }
+ return result;
+}
+
+/*
+ * If we are going to wrap lines, we cannot leave literal spaces because that
+ * would be ambiguous if we split on that space.
+ */
+static char *
+fill_spaces(const char *src)
{
+ const char *fill = "\\s";
size_t need = strlen(src);
- size_t want = strlen(separator) + need;
+ size_t size = strlen(fill);
+ char *result = 0;
+ int pass;
+ int s, d;
+ for (pass = 0; pass < 2; ++pass) {
+ for (s = d = 0; src[s] != '\0'; ++s) {
+ if (src[s] == ' ') {
+ if (pass) {
+ _nc_STRCPY(&result[d], fill, need + 1 - d);
+ d += (int) size;
+ } else {
+ need += size;
+ }
+ } else {
+ if (pass) {
+ result[d++] = src[s];
+ } else {
+ ++d;
+ }
+ }
+ }
+ if (pass) {
+ result[d] = '\0';
+ } else {
+ result = malloc(need + 1);
+ if (result == 0)
+ failed("fill_spaces");
+ }
+ }
+ return result;
+}
+
+typedef enum {
+ wOFF = 0
+ ,w1ST = 1
+ ,w2ND = 2
+ ,wEND = 4
+ ,wERR = 8
+} WRAPMODE;
+
+#define wrap_1ST(mode) ((mode)&w1ST)
+#define wrap_END(mode) ((mode)&wEND)
+#define wrap_ERR(mode) ((mode)&wERR)
+
+static void
+wrap_concat(const char *src, int need, unsigned mode)
+{
+ int gaps = (int) strlen(separator);
+ int want = gaps + need;
+
+ did_wrap = (width <= 0);
+ if (wrap_1ST(mode)
+ && column > indent
+ && column + want > width) {
+ force_wrap();
+ }
+ if ((wrap_END(mode) && !wrap_ERR(mode)) &&
+ wrapped &&
+ (width >= 0) &&
+ (column + want) > width) {
+ int step = 0;
+ int used = width > WRAPPED ? width : WRAPPED;
+ int size;
+ int base = 0;
+ char *p, align[9];
+ const char *my_t = trailer;
+ char *fill = fill_spaces(src);
+ int last = (int) strlen(fill);
+
+ need = last;
+
+ if (TcOutput())
+ trailer = "\\\n\t ";
+
+ if (!TcOutput() && (p = strchr(fill, '=')) != 0) {
+ base = (int) (p + 1 - fill);
+ if (base > 8)
+ base = 8;
+ _nc_SPRINTF(align, _nc_SLIMIT(align) "%*s", base, " ");
+ } else if (column > 8) {
+ base = column - 8;
+ if (base > 8)
+ base = 8;
+ _nc_SPRINTF(align, _nc_SLIMIT(align) "%*s", base, " ");
+ } else {
+ align[base] = '\0';
+ }
+ /* "pretty" overrides wrapping if it already split the line */
+ if (!pretty || strchr(fill, '\n') == 0) {
+ int tag = 0;
+
+ if (TcOutput() && outbuf.used && !wrap_1ST(mode)) {
+ tag = 3;
+ }
- if (column > INDENT
- && column + (int) want > width) {
+ while ((column + (need + gaps)) > used) {
+ size = used - tag;
+ if (step) {
+ strcpy_DYN(&outbuf, align);
+ size -= base;
+ }
+ if (size > (last - step)) {
+ size = (last - step);
+ }
+ size = find_split(fill, step, size);
+ strncpy_DYN(&outbuf, fill + step, (size_t) size);
+ step += size;
+ need -= size;
+ if (need > 0) {
+ force_wrap();
+ did_wrap = TRUE;
+ tag = 0;
+ }
+ }
+ }
+ if (need > 0) {
+ if (step)
+ strcpy_DYN(&outbuf, align);
+ strcpy_DYN(&outbuf, fill + step);
+ }
+ if (wrap_END(mode))
+ strcpy_DYN(&outbuf, separator);
+ trailer = my_t;
force_wrap();
+
+ free(fill);
+ } else {
+ strcpy_DYN(&outbuf, src);
+ if (wrap_END(mode))
+ strcpy_DYN(&outbuf, separator);
+ column += (int) strlen(src);
}
- strcpy_DYN(&outbuf, src);
- strcpy_DYN(&outbuf, separator);
- column += (int) need;
+}
+
+static void
+wrap_concat1(const char *src)
+{
+ int need = (int) strlen(src);
+ wrap_concat(src, need, w1ST | wEND);
+}
+
+static void
+wrap_concat3(const char *name, const char *eqls, const char *value)
+{
+ int nlen = (int) strlen(name);
+ int elen = (int) strlen(eqls);
+ int vlen = (int) strlen(value);
+
+ wrap_concat(name, nlen + elen + vlen, w1ST);
+ wrap_concat(eqls, elen + vlen, w2ND);
+ wrap_concat(value, vlen, wEND);
}
#define IGNORE_SEP_TRAIL(first,last,sep_trail) \
@@ -470,7 +718,34 @@ indent_DYN(DYNBUF * buffer, int level)
strncpy_DYN(buffer, "\t", (size_t) 1);
}
+/*
+ * Check if the current line which was begun consists only of a tab and the
+ * given leading text.
+ */
static bool
+leading_DYN(DYNBUF * buffer, const char *leading)
+{
+ bool result = FALSE;
+ size_t need = strlen(leading);
+ if (buffer->used > need) {
+ need = buffer->used - need;
+ if (!strcmp(buffer->text + need, leading)) {
+ result = TRUE;
+ while (--need != 0) {
+ if (buffer->text[need] == '\n') {
+ break;
+ }
+ if (buffer->text[need] != '\t') {
+ result = FALSE;
+ break;
+ }
+ }
+ }
+ }
+ return result;
+}
+
+bool
has_params(const char *src)
{
bool result = FALSE;
@@ -495,13 +770,17 @@ has_params(const char *src)
}
static char *
-fmt_complex(TERMTYPE *tterm, const char *capability, char *src, int level)
+fmt_complex(TERMTYPE2 *tterm, const char *capability, char *src, int level)
{
bool percent = FALSE;
bool params = has_params(src);
while (*src != '\0') {
switch (*src) {
+ case '^':
+ percent = FALSE;
+ strncpy_DYN(&tmpbuf, src++, (size_t) 1);
+ break;
case '\\':
percent = FALSE;
strncpy_DYN(&tmpbuf, src++, (size_t) 1);
@@ -537,9 +816,10 @@ fmt_complex(TERMTYPE *tterm, const char *capability, char *src, int level)
indent_DYN(&tmpbuf, level + 1);
}
} else if (level == 1) {
- _nc_warning("%s: %%%c without %%? in %s",
- _nc_first_name(tterm->term_names),
- *src, capability);
+ if (checking)
+ _nc_warning("%s: %%%c without %%? in %s",
+ _nc_first_name(tterm->term_names),
+ *src, capability);
}
}
continue;
@@ -561,13 +841,14 @@ fmt_complex(TERMTYPE *tterm, const char *capability, char *src, int level)
}
return src;
}
- _nc_warning("%s: %%; without %%? in %s",
- _nc_first_name(tterm->term_names),
- capability);
+ if (checking)
+ _nc_warning("%s: %%; without %%? in %s",
+ _nc_first_name(tterm->term_names),
+ capability);
}
break;
case 'p':
- if (percent && params) {
+ if (percent && params && !leading_DYN(&tmpbuf, "%")) {
tmpbuf.text[tmpbuf.used - 1] = '\n';
indent_DYN(&tmpbuf, level + 1);
strncpy_DYN(&tmpbuf, "%", (size_t) 1);
@@ -588,11 +869,35 @@ fmt_complex(TERMTYPE *tterm, const char *capability, char *src, int level)
return src;
}
+/*
+ * Make "large" numbers a little easier to read by showing them in hexadecimal
+ * if they are "close" to a power of two.
+ */
+static const char *
+number_format(int value)
+{
+ const char *result = "%d";
+ if ((outform != F_TERMCAP) && (value > 255)) {
+ unsigned long lv = (unsigned long) value;
+ unsigned long mm;
+ int bits = sizeof(unsigned long) * 8;
+ int nn;
+ for (nn = 8; nn < bits; ++nn) {
+ mm = 1UL << nn;
+ if ((mm - 16) <= lv && (mm + 16) > lv) {
+ result = "%#x";
+ break;
+ }
+ }
+ }
+ return result;
+}
+
#define SAME_CAP(n,cap) (&tterm->Strings[n] == &cap)
#define EXTRA_CAP 20
int
-fmt_entry(TERMTYPE *tterm,
+fmt_entry(TERMTYPE2 *tterm,
PredFunc pred,
int content_only,
int suppress_untranslatable,
@@ -609,9 +914,8 @@ fmt_entry(TERMTYPE *tterm,
PredIdx num_strings = 0;
bool outcount = 0;
-#define WRAP_CONCAT \
- wrap_concat(buffer); \
- outcount = TRUE
+#define WRAP_CONCAT1(s) wrap_concat1(s); outcount = TRUE
+#define WRAP_CONCAT WRAP_CONCAT1(buffer)
len = 12; /* terminfo file-header */
@@ -622,7 +926,7 @@ fmt_entry(TERMTYPE *tterm,
strcpy_DYN(&outbuf, 0);
if (content_only) {
- column = INDENT; /* FIXME: workaround to prevent empty lines */
+ column = indent; /* FIXME: workaround to prevent empty lines */
} else {
strcpy_DYN(&outbuf, tterm->term_names);
@@ -665,7 +969,7 @@ fmt_entry(TERMTYPE *tterm,
}
}
- if (column != INDENT && height > 1)
+ if (column != indent && height > 1)
force_wrap();
for_each_number(j, tterm) {
@@ -684,8 +988,13 @@ fmt_entry(TERMTYPE *tterm,
_nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
"%s@", name);
} else {
+ size_t nn;
_nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
- "%s#%d", name, tterm->Numbers[i]);
+ "%s#", name);
+ nn = strlen(buffer);
+ _nc_SPRINTF(buffer + nn, _nc_SLIMIT(sizeof(buffer) - nn)
+ number_format(tterm->Numbers[i]),
+ tterm->Numbers[i]);
if (i + 1 > num_values)
num_values = i + 1;
}
@@ -693,7 +1002,7 @@ fmt_entry(TERMTYPE *tterm,
}
}
- if (column != INDENT && height > 1)
+ if (column != indent && height > 1)
force_wrap();
len += (int) (num_bools
@@ -705,12 +1014,12 @@ fmt_entry(TERMTYPE *tterm,
#undef CUR
#define CUR tterm->
if (outform == F_TERMCAP) {
- if (termcap_reset != ABSENT_STRING) {
- if (init_3string != ABSENT_STRING
+ if (VALID_STRING(termcap_reset)) {
+ if (VALID_STRING(init_3string)
&& !strcmp(init_3string, termcap_reset))
DISCARD(init_3string);
- if (reset_2string != ABSENT_STRING
+ if (VALID_STRING(reset_2string)
&& !strcmp(reset_2string, termcap_reset))
DISCARD(reset_2string);
}
@@ -770,8 +1079,12 @@ fmt_entry(TERMTYPE *tterm,
set_attributes = save_sgr;
trimmed_sgr0 = _nc_trim_sgr0(tterm);
- if (strcmp(capability, trimmed_sgr0))
+ if (strcmp(capability, trimmed_sgr0)) {
capability = trimmed_sgr0;
+ } else {
+ if (trimmed_sgr0 != exit_attribute_mode)
+ free(trimmed_sgr0);
+ }
set_attributes = my_sgr;
}
@@ -782,7 +1095,7 @@ fmt_entry(TERMTYPE *tterm,
buffer[0] = '\0';
if (predval != FAIL) {
- if (capability != ABSENT_STRING
+ if (VALID_STRING(capability)
&& i + 1 > num_strings)
num_strings = i + 1;
@@ -790,11 +1103,13 @@ fmt_entry(TERMTYPE *tterm,
_nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
"%s@", name);
WRAP_CONCAT;
- } else if (outform == F_TERMCAP || outform == F_TCONVERR) {
+ } else if (TcOutput()) {
+ char *srccap = _nc_tic_expand(capability, TRUE, numbers);
int params = ((i < (int) SIZEOF(parametrized))
? parametrized[i]
- : 0);
- char *srccap = _nc_tic_expand(capability, TRUE, numbers);
+ : ((*srccap == 'k')
+ ? 0
+ : has_params(srccap)));
char *cv = _nc_infotocap(name, srccap, params);
if (cv == 0) {
@@ -802,28 +1117,45 @@ fmt_entry(TERMTYPE *tterm,
_nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
"%s=!!! %s WILL NOT CONVERT !!!",
name, srccap);
+ WRAP_CONCAT;
} else if (suppress_untranslatable) {
continue;
} else {
char *s = srccap, *d = buffer;
- _nc_SPRINTF(d, _nc_SLIMIT(sizeof(buffer)) "..%s=", name);
- d += strlen(d);
+ int need = 3 + (int) strlen(name);
while ((*d = *s++) != 0) {
+ if ((d - buffer + 1) >= (int) sizeof(buffer)) {
+ fprintf(stderr,
+ "%s: value for %s is too long\n",
+ _nc_progname,
+ name);
+ *d = '\0';
+ break;
+ }
if (*d == ':') {
*d++ = '\\';
*d = ':';
} else if (*d == '\\') {
- *++d = *s++;
+ if ((*++d = *s++) == '\0')
+ break;
}
d++;
+ *d = '\0';
}
+ need += (int) (d - buffer);
+ wrap_concat("..", need, w1ST | wERR);
+ need -= 2;
+ wrap_concat(name, need, wOFF | wERR);
+ need -= (int) strlen(name);
+ wrap_concat("=", need, w2ND | wERR);
+ need -= 1;
+ wrap_concat(buffer, need, wEND | wERR);
+ outcount = TRUE;
}
} else {
- _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
- "%s=%s", name, cv);
+ wrap_concat3(name, "=", cv);
}
len += (int) strlen(capability) + 1;
- WRAP_CONCAT;
} else {
char *src = _nc_tic_expand(capability,
outform == F_TERMINFO, numbers);
@@ -839,13 +1171,11 @@ fmt_entry(TERMTYPE *tterm,
strcpy_DYN(&tmpbuf, src);
}
len += (int) strlen(capability) + 1;
- wrap_concat(tmpbuf.text);
- outcount = TRUE;
+ WRAP_CONCAT1(tmpbuf.text);
}
}
/* e.g., trimmed_sgr0 */
- if (capability != ABSENT_STRING &&
- capability != CANCELLED_STRING &&
+ if (VALID_STRING(capability) &&
capability != tterm->Strings[i])
free(capability);
}
@@ -934,9 +1264,11 @@ fmt_entry(TERMTYPE *tterm,
if (outcount) {
bool trimmed = FALSE;
j = (PredIdx) outbuf.used;
- if (j >= 2
- && outbuf.text[j - 1] == '\t'
- && outbuf.text[j - 2] == '\n') {
+ if (wrapped && did_wrap) {
+ /* EMPTY */ ;
+ } else if (j >= 2
+ && outbuf.text[j - 1] == '\t'
+ && outbuf.text[j - 2] == '\n') {
outbuf.used -= 2;
trimmed = TRUE;
} else if (j >= 4
@@ -971,7 +1303,7 @@ fmt_entry(TERMTYPE *tterm,
}
static bool
-kill_string(TERMTYPE *tterm, char *cap)
+kill_string(TERMTYPE2 *tterm, char *cap)
{
unsigned n;
for (n = 0; n < NUM_STRINGS(tterm); ++n) {
@@ -984,7 +1316,7 @@ kill_string(TERMTYPE *tterm, char *cap)
}
static char *
-find_string(TERMTYPE *tterm, char *name)
+find_string(TERMTYPE2 *tterm, char *name)
{
PredIdx n;
for (n = 0; n < NUM_STRINGS(tterm); ++n) {
@@ -1005,7 +1337,7 @@ find_string(TERMTYPE *tterm, char *name)
* make it smaller.
*/
static int
-kill_labels(TERMTYPE *tterm, int target)
+kill_labels(TERMTYPE2 *tterm, int target)
{
int n;
int result = 0;
@@ -1014,7 +1346,8 @@ kill_labels(TERMTYPE *tterm, int target)
for (n = 0; n <= 10; ++n) {
_nc_SPRINTF(name, _nc_SLIMIT(sizeof(name)) "lf%d", n);
- if ((cap = find_string(tterm, name)) != ABSENT_STRING
+ cap = find_string(tterm, name);
+ if (VALID_STRING(cap)
&& kill_string(tterm, cap)) {
target -= (int) (strlen(cap) + 5);
++result;
@@ -1030,7 +1363,7 @@ kill_labels(TERMTYPE *tterm, int target)
* make it smaller.
*/
static int
-kill_fkeys(TERMTYPE *tterm, int target)
+kill_fkeys(TERMTYPE2 *tterm, int target)
{
int n;
int result = 0;
@@ -1039,7 +1372,8 @@ kill_fkeys(TERMTYPE *tterm, int target)
for (n = 60; n >= 0; --n) {
_nc_SPRINTF(name, _nc_SLIMIT(sizeof(name)) "kf%d", n);
- if ((cap = find_string(tterm, name)) != ABSENT_STRING
+ cap = find_string(tterm, name);
+ if (VALID_STRING(cap)
&& kill_string(tterm, cap)) {
target -= (int) (strlen(cap) + 5);
++result;
@@ -1061,9 +1395,9 @@ one_one_mapping(const char *mapping)
{
bool result = TRUE;
- if (mapping != ABSENT_STRING) {
+ if (VALID_STRING(mapping)) {
int n = 0;
- while (mapping[n] != '\0') {
+ while (mapping[n] != '\0' && mapping[n + 1] != '\0') {
if (isLine(mapping[n]) &&
mapping[n] != mapping[n + 1]) {
result = FALSE;
@@ -1084,7 +1418,7 @@ one_one_mapping(const char *mapping)
#define SHOW_WHY PRINTF
static bool
-purged_acs(TERMTYPE *tterm)
+purged_acs(TERMTYPE2 *tterm)
{
bool result = FALSE;
@@ -1099,22 +1433,99 @@ purged_acs(TERMTYPE *tterm)
return result;
}
+static void
+encode_b64(char *target, char *source, unsigned state, int *saved)
+{
+ /* RFC-4648 */
+ static const char data[] =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz"
+ "0123456789" "-_";
+ int ch = UChar(source[state]);
+
+ switch (state % 3) {
+ case 0:
+ *target++ = data[(ch >> 2) & 077];
+ *saved = (ch << 4);
+ break;
+ case 1:
+ *target++ = data[((ch >> 4) | *saved) & 077];
+ *saved = (ch << 2);
+ break;
+ case 2:
+ *target++ = data[((ch >> 6) | *saved) & 077];
+ *target++ = data[ch & 077];
+ *saved = 0;
+ break;
+ }
+ *target = '\0';
+}
+
/*
* Dump a single entry.
*/
void
-dump_entry(TERMTYPE *tterm,
+dump_entry(TERMTYPE2 *tterm,
int suppress_untranslatable,
int limited,
int numbers,
PredFunc pred)
{
- TERMTYPE save_tterm;
+ TERMTYPE2 save_tterm;
int len, critlen;
const char *legend;
bool infodump;
- if (outform == F_TERMCAP || outform == F_TCONVERR) {
+ if (quickdump) {
+ char bigbuf[65536];
+ unsigned n;
+ unsigned offset = 0;
+ separator = "";
+ trailer = "\n";
+ indent = 0;
+ if (_nc_write_object(tterm, bigbuf, &offset, sizeof(bigbuf)) == OK) {
+ char numbuf[80];
+ if (quickdump & 1) {
+ if (outbuf.used)
+ wrap_concat1("\n");
+ wrap_concat1("hex:");
+ for (n = 0; n < offset; ++n) {
+ _nc_SPRINTF(numbuf, _nc_SLIMIT(sizeof(numbuf))
+ "%02X", UChar(bigbuf[n]));
+ wrap_concat1(numbuf);
+ }
+ }
+ if (quickdump & 2) {
+ static char padding[] =
+ {0, 0};
+ int value = 0;
+ if (outbuf.used)
+ wrap_concat1("\n");
+ wrap_concat1("b64:");
+ for (n = 0; n < offset; ++n) {
+ encode_b64(numbuf, bigbuf, n, &value);
+ wrap_concat1(numbuf);
+ }
+ switch (n % 3) {
+ case 0:
+ break;
+ case 1:
+ encode_b64(numbuf, padding, 1, &value);
+ wrap_concat1(numbuf);
+ wrap_concat1("==");
+ break;
+ case 2:
+ encode_b64(numbuf, padding, 1, &value);
+ wrap_concat1(numbuf);
+ wrap_concat1("=");
+ break;
+ }
+ }
+ }
+ return;
+ }
+
+ if (TcOutput()) {
critlen = MAX_TERMCAP_LENGTH;
legend = "older termcap";
infodump = FALSE;
@@ -1203,7 +1614,8 @@ dump_entry(TERMTYPE *tterm,
}
if (len > critlen) {
(void) fprintf(stderr,
- "warning: %s entry is %d bytes long\n",
+ "%s: %s entry is %d bytes long\n",
+ _nc_progname,
_nc_first_name(tterm->term_names),
len);
SHOW_WHY("# WARNING: this entry, %d bytes long, may core-dump %s libraries!\n",
@@ -1229,11 +1641,11 @@ dump_uses(const char *name, bool infodump)
{
char buffer[MAX_TERMINFO_LENGTH];
- if (outform == F_TERMCAP || outform == F_TCONVERR)
+ if (TcOutput())
trim_trailing();
_nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
"%s%s", infodump ? "use=" : "tc=", name);
- wrap_concat(buffer);
+ wrap_concat1(buffer);
}
int
@@ -1243,7 +1655,7 @@ show_entry(void)
* Trim any remaining whitespace.
*/
if (outbuf.used != 0) {
- bool infodump = (outform != F_TERMCAP && outform != F_TCONVERR);
+ bool infodump = !TcOutput();
char delim = (char) (infodump ? ',' : ':');
int j;
@@ -1263,14 +1675,16 @@ show_entry(void)
}
outbuf.text[outbuf.used] = '\0';
}
- (void) fputs(outbuf.text, stdout);
- putchar('\n');
+ if (outbuf.text != 0) {
+ (void) fputs(outbuf.text, stdout);
+ putchar('\n');
+ }
return (int) outbuf.used;
}
void
compare_entry(PredHook hook,
- TERMTYPE *tp GCC_UNUSED,
+ TERMTYPE2 *tp GCC_UNUSED,
bool quiet)
/* compare two entries */
{
@@ -1329,7 +1743,7 @@ compare_entry(PredHook hook,
#define CUR tp->
static void
-set_obsolete_termcaps(TERMTYPE *tp)
+set_obsolete_termcaps(TERMTYPE2 *tp)
{
#include "capdefaults.c"
}
@@ -1339,7 +1753,7 @@ set_obsolete_termcaps(TERMTYPE *tp)
* unique.
*/
void
-repair_acsc(TERMTYPE *tp)
+repair_acsc(TERMTYPE2 *tp)
{
if (VALID_STRING(acs_chars)) {
size_t n, m;
diff --git a/progs/dump_entry.h b/progs/dump_entry.h
index cb2a44fe7d4f..1d0b01d8acbe 100644
--- a/progs/dump_entry.h
+++ b/progs/dump_entry.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free 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: dump_entry.h,v 1.33 2013/12/15 01:08:03 tom Exp $
+ * $Id: dump_entry.h,v 1.41 2018/05/26 15:22:30 tom Exp $
*
* Dump control definitions and variables
*/
@@ -41,6 +41,11 @@
#ifndef DUMP_ENTRY_H
#define DUMP_ENTRY_H 1
+#define NCURSES_OPAQUE 0
+#define NCURSES_INTERNALS 1
+#include <curses.h>
+#include <term.h>
+
/* capability output formats */
#define F_TERMINFO 0 /* use terminfo names */
#define F_VARIABLE 1 /* use C variable names */
@@ -67,13 +72,18 @@ typedef int (*PredFunc) (PredType, PredIdx);
typedef void (*PredHook) (PredType, PredIdx, const char *);
extern NCURSES_CONST char *nametrans(const char *);
-extern int fmt_entry(TERMTYPE *, PredFunc, int, int, int, int);
+extern bool has_params(const char *src);
+extern int fmt_entry(TERMTYPE2 *, PredFunc, int, int, int, int);
extern int show_entry(void);
-extern void compare_entry(PredHook, TERMTYPE *, bool);
-extern void dump_entry(TERMTYPE *, int, int, int, PredFunc);
-extern void dump_init(const char *, int, int, int, int, unsigned, bool);
+extern void compare_entry(PredHook, TERMTYPE2 *, bool);
+extern void dump_entry(TERMTYPE2 *, int, int, int, PredFunc);
+extern void dump_init(const char *, int, int, bool, int, int, unsigned, bool,
+ bool, int);
extern void dump_uses(const char *, bool);
-extern void repair_acsc(TERMTYPE *tp);
+extern void repair_acsc(TERMTYPE2 *tp);
+
+#define L_CURL "{"
+#define R_CURL "}"
#define FAIL -1
diff --git a/progs/infocmp.c b/progs/infocmp.c
index 587cbc3449be..82c48419a047 100644
--- a/progs/infocmp.c
+++ b/progs/infocmp.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,10 +42,7 @@
#include <dump_entry.h>
-MODULE_ID("$Id: infocmp.c,v 1.129 2014/02/01 22:11:03 tom Exp $")
-
-#define L_CURL "{"
-#define R_CURL "}"
+MODULE_ID("$Id: infocmp.c,v 1.143 2017/04/05 09:27:51 tom Exp $")
#define MAX_STRING 1024 /* maximum formatted string */
@@ -139,6 +136,33 @@ canonical_name(char *ptr, char *buf)
return (buf);
}
+static bool
+no_boolean(int value)
+{
+ bool result = (value == ABSENT_BOOLEAN);
+ if (!strcmp(s_absent, s_cancel))
+ result = !VALID_BOOLEAN(value);
+ return result;
+}
+
+static bool
+no_numeric(int value)
+{
+ bool result = (value == ABSENT_NUMERIC);
+ if (!strcmp(s_absent, s_cancel))
+ result = !VALID_NUMERIC(value);
+ return result;
+}
+
+static bool
+no_string(char *value)
+{
+ bool result = (value == ABSENT_STRING);
+ if (!strcmp(s_absent, s_cancel))
+ result = !VALID_STRING(value);
+ return result;
+}
+
/***************************************************************************
*
* Predicates for dump function
@@ -271,7 +295,7 @@ useeq(ENTRY * e1, ENTRY * e2)
}
static bool
-entryeq(TERMTYPE *t1, TERMTYPE *t2)
+entryeq(TERMTYPE2 *t1, TERMTYPE2 *t2)
/* are two entries equivalent? */
{
unsigned i;
@@ -329,7 +353,7 @@ dump_boolean(int val)
static void
dump_numeric(int val, char *buf)
-/* display the value of a boolean capability */
+/* display the value of a numeric capability */
{
switch (val) {
case ABSENT_NUMERIC:
@@ -437,7 +461,7 @@ compare_predicate(PredType type, PredIdx idx, const char *name)
switch (compare) {
case C_DIFFERENCE:
b2 = next_entry->Booleans[idx];
- if (!(b1 == ABSENT_BOOLEAN && b2 == ABSENT_BOOLEAN) && b1 != b2)
+ if (!(no_boolean(b1) && no_boolean(b2)) && (b1 != b2))
(void) printf("\t%s: %s%s%s.\n",
name,
dump_boolean(b1),
@@ -485,7 +509,7 @@ compare_predicate(PredType type, PredIdx idx, const char *name)
switch (compare) {
case C_DIFFERENCE:
n2 = next_entry->Numbers[idx];
- if (!((n1 == ABSENT_NUMERIC && n2 == ABSENT_NUMERIC)) && n1 != n2) {
+ if (!(no_numeric(n1) && no_numeric(n2)) && n1 != n2) {
dump_numeric(n1, buf1);
dump_numeric(n2, buf2);
(void) printf("\t%s: %s, %s.\n", name, buf1, buf2);
@@ -533,7 +557,7 @@ compare_predicate(PredType type, PredIdx idx, const char *name)
switch (compare) {
case C_DIFFERENCE:
s2 = next_entry->Strings[idx];
- if (capcmp(idx, s1, s2)) {
+ if (!(no_string(s1) && no_string(s2)) && capcmp(idx, s1, s2)) {
dump_string(s1, buf1);
dump_string(s2, buf2);
if (strcmp(buf1, buf2))
@@ -631,99 +655,104 @@ compare_predicate(PredType type, PredIdx idx, const char *name)
*
***************************************************************************/
+#define DATA(from, to) { { from }, { to } }
+#define DATAX() DATA("", "")
+
typedef struct {
- const char *from;
- const char *to;
+ const char from[4];
+ const char to[12];
} 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 */
+ DATA("\033c", "RIS"), /* full reset */
+ DATA("\0337", "SC"), /* save cursor */
+ DATA("\0338", "RC"), /* restore cursor */
+ DATA("\033[r", "RSR"), /* not an X.364 mnemonic */
+ DATA("\033[m", "SGR0"), /* not an X.364 mnemonic */
+ DATA("\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 */
+ DATA("\033(0", "ISO DEC G0"), /* enable DEC graphics for G0 */
+ DATA("\033(A", "ISO UK G0"), /* enable UK chars for G0 */
+ DATA("\033(B", "ISO US G0"), /* enable US chars for G0 */
+ DATA("\033)0", "ISO DEC G1"), /* enable DEC graphics for G1 */
+ DATA("\033)A", "ISO UK G1"), /* enable UK chars for G1 */
+ DATA("\033)B", "ISO US G1"), /* enable US chars for G1 */
/* these are DEC private controls widely supported by emulators */
- {"\033=", "DECPAM"}, /* application keypad mode */
- {"\033>", "DECPNM"}, /* normal keypad mode */
- {"\033<", "DECANSI"}, /* enter ANSI mode */
- {"\033[!p", "DECSTR"}, /* soft reset */
- {"\033 F", "S7C1T"}, /* 7-bit controls */
+ DATA("\033=", "DECPAM"), /* application keypad mode */
+ DATA("\033>", "DECPNM"), /* normal keypad mode */
+ DATA("\033<", "DECANSI"), /* enter ANSI mode */
+ DATA("\033[!p", "DECSTR"), /* soft reset */
+ DATA("\033 F", "S7C1T"), /* 7-bit controls */
- {(char *) 0, (char *) 0}
+ DATAX()
};
static const assoc std_modes[] =
/* ECMA \E[ ... [hl] modes recognized by many emulators */
{
- {"2", "AM"}, /* keyboard action mode */
- {"4", "IRM"}, /* insert/replace mode */
- {"12", "SRM"}, /* send/receive mode */
- {"20", "LNM"}, /* linefeed mode */
- {(char *) 0, (char *) 0}
+ DATA("2", "AM"), /* keyboard action mode */
+ DATA("4", "IRM"), /* insert/replace mode */
+ DATA("12", "SRM"), /* send/receive mode */
+ DATA("20", "LNM"), /* linefeed mode */
+ DATAX()
};
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}
+ DATA("1", "CKM"), /* application cursor keys */
+ DATA("2", "ANM"), /* set VT52 mode */
+ DATA("3", "COLM"), /* 132-column mode */
+ DATA("4", "SCLM"), /* smooth scroll */
+ DATA("5", "SCNM"), /* reverse video mode */
+ DATA("6", "OM"), /* origin mode */
+ DATA("7", "AWM"), /* wraparound mode */
+ DATA("8", "ARM"), /* auto-repeat mode */
+ DATAX()
};
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}
+ DATA("0", "NORMAL"), /* normal */
+ DATA("1", "+BOLD"), /* bold on */
+ DATA("2", "+DIM"), /* dim on */
+ DATA("3", "+ITALIC"), /* italic on */
+ DATA("4", "+UNDERLINE"), /* underline on */
+ DATA("5", "+BLINK"), /* blink on */
+ DATA("6", "+FASTBLINK"), /* fastblink on */
+ DATA("7", "+REVERSE"), /* reverse on */
+ DATA("8", "+INVISIBLE"), /* invisible on */
+ DATA("9", "+DELETED"), /* deleted on */
+ DATA("10", "MAIN-FONT"), /* select primary font */
+ DATA("11", "ALT-FONT-1"), /* select alternate font 1 */
+ DATA("12", "ALT-FONT-2"), /* select alternate font 2 */
+ DATA("13", "ALT-FONT-3"), /* select alternate font 3 */
+ DATA("14", "ALT-FONT-4"), /* select alternate font 4 */
+ DATA("15", "ALT-FONT-5"), /* select alternate font 5 */
+ DATA("16", "ALT-FONT-6"), /* select alternate font 6 */
+ DATA("17", "ALT-FONT-7"), /* select alternate font 7 */
+ DATA("18", "ALT-FONT-1"), /* select alternate font 1 */
+ DATA("19", "ALT-FONT-1"), /* select alternate font 1 */
+ DATA("20", "FRAKTUR"), /* Fraktur font */
+ DATA("21", "DOUBLEUNDER"), /* double underline */
+ DATA("22", "-DIM"), /* dim off */
+ DATA("23", "-ITALIC"), /* italic off */
+ DATA("24", "-UNDERLINE"), /* underline off */
+ DATA("25", "-BLINK"), /* blink off */
+ DATA("26", "-FASTBLINK"), /* fastblink off */
+ DATA("27", "-REVERSE"), /* reverse off */
+ DATA("28", "-INVISIBLE"), /* invisible off */
+ DATA("29", "-DELETED"), /* deleted off */
+ DATAX()
};
+#undef DATA
+
static int
skip_csi(const char *cap)
{
@@ -757,7 +786,7 @@ lookup_params(const assoc * table, char *dst, char *src)
do {
bool found = FALSE;
- for (ap = table; ap->from; ap++) {
+ for (ap = table; ap->from[0]; ap++) {
size_t tlen = strlen(ap->from);
if (same_param(ap->from, ep, tlen)) {
@@ -781,7 +810,7 @@ lookup_params(const assoc * table, char *dst, char *src)
}
static void
-analyze_string(const char *name, const char *cap, TERMTYPE *tp)
+analyze_string(const char *name, const char *cap, TERMTYPE2 *tp)
{
char buf2[MAX_TERMINFO_LENGTH];
const char *sp;
@@ -812,7 +841,7 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp)
cp[0] != '\0' &&
cp != cap) {
len = strlen(cp);
- (void) strncpy(buf2, sp, len);
+ _nc_STRNCPY(buf2, sp, len);
buf2[len] = '\0';
if (_nc_capcmp(cp, buf2))
@@ -839,7 +868,7 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp)
/* now check the standard capabilities */
if (!expansion) {
csi = skip_csi(sp);
- for (ap = std_caps; ap->from; ap++) {
+ for (ap = std_caps; ap->from[0]; ap++) {
size_t adj = (size_t) (csi ? 2 : 0);
len = strlen(ap->from);
@@ -868,7 +897,7 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp)
? "ECMA+"
: "ECMA-"),
sizeof(buf2));
- (void) strncpy(buf3, sp + csi, len);
+ _nc_STRNCPY(buf3, sp + csi, len);
buf3[len] = '\0';
len += (size_t) csi + 1;
@@ -889,7 +918,7 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp)
? "DEC+"
: "DEC-"),
sizeof(buf2));
- (void) strncpy(buf3, sp + csi + 1, len);
+ _nc_STRNCPY(buf3, sp + csi + 1, len);
buf3[len] = '\0';
len += (size_t) csi + 2;
@@ -905,7 +934,7 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp)
&& sp[next] == 'm') {
_nc_STRCPY(buf2, "SGR:", sizeof(buf2));
- (void) strncpy(buf3, sp + csi, len);
+ _nc_STRNCPY(buf3, sp + csi, len);
buf3[len] = '\0';
len += (size_t) csi + 1;
@@ -984,7 +1013,8 @@ file_comparison(int argc, char *argv[])
int i, n;
memset(heads, 0, sizeof(heads));
- dump_init((char *) 0, F_LITERAL, S_TERMINFO, 0, 65535, itrace, FALSE);
+ dump_init((char *) 0, F_LITERAL, S_TERMINFO,
+ FALSE, 0, 65535, itrace, FALSE, FALSE, FALSE);
for (n = 0; n < argc && n < MAXCOMPARE; n++) {
if (freopen(argv[n], "r", stdin) == 0)
@@ -1155,37 +1185,45 @@ file_comparison(int argc, char *argv[])
static void
usage(void)
{
- static const char *tbl[] =
+#define DATA(s) s "\n"
+ static const char head[] =
+ {
+ DATA("Usage: infocmp [options] [-A directory] [-B directory] [termname...]")
+ DATA("")
+ DATA("Options:")
+ };
+#undef DATA
+#define DATA(s) s
+ static const char options[][45] =
{
- "Usage: infocmp [options] [-A directory] [-B directory] [termname...]"
- ,""
- ,"Options:"
- ," -0 print single-row"
+ " -0 print single-row"
," -1 print single-column"
- ," -K use termcap-names and BSD syntax"
," -C use termcap-names"
+ ," -D print database locations"
+ ," -E format output as C tables"
," -F compare terminfo-files"
+ ," -G format %{number} to %'char'"
," -I use terminfo-names"
+ ," -K use termcap-names and BSD syntax"
," -L use long names"
," -R subset (see manpage)"
," -T eliminate size limits (test)"
- ," -U eliminate post-processing of entries"
- ," -D print database locations"
+ ," -U do not post-process entries"
," -V print version"
+ ," -W wrap long strings per -w[n]"
#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 number dump compiled description"
," -q brief listing, removes headers"
," -r with -C, output in termcap form"
," -r with -F, resolve use-references"
@@ -1197,20 +1235,21 @@ usage(void)
," -v number (verbose)"
," -w number (width)"
#if NCURSES_XNAMES
- ," -x treat unknown capabilities as user-defined"
+ ," -x unknown capabilities are user-defined"
#endif
};
- const size_t first = 3;
- const size_t last = SIZEOF(tbl);
- const size_t left = (last - first + 1) / 2 + first;
+#undef DATA
+ const size_t last = SIZEOF(options);
+ const size_t left = (last + 1) / 2;
size_t n;
+ fputs(head, stderr);
for (n = 0; n < left; n++) {
- size_t m = (n < first) ? last : n + left - first;
+ size_t m = n + left;
if (m < last)
- fprintf(stderr, "%-40.40s%s\n", tbl[n], tbl[m]);
+ fprintf(stderr, "%-40.40s%s\n", options[n], options[m]);
else
- fprintf(stderr, "%s\n", tbl[n]);
+ fprintf(stderr, "%s\n", options[n]);
}
ExitProgram(EXIT_FAILURE);
}
@@ -1255,7 +1294,7 @@ string_variable(const char *type)
/* dump C initializers for the terminal type */
static void
-dump_initializers(TERMTYPE *term)
+dump_initializers(TERMTYPE2 *term)
{
unsigned n;
const char *str = 0;
@@ -1379,7 +1418,7 @@ dump_initializers(TERMTYPE *term)
/* dump C initializers for the terminal type */
static void
-dump_termtype(TERMTYPE *term)
+dump_termtype(TERMTYPE2 *term)
{
(void) printf("\t%s\n\t\t%s,\n", L_CURL, name_initializer("alias"));
(void) printf("\t\t(char *)0,\t/* pointer to string table */\n");
@@ -1494,6 +1533,8 @@ main(int argc, char *argv[])
int initdump = 0;
bool init_analyze = FALSE;
bool suppress_untranslatable = FALSE;
+ int quickdump = 0;
+ bool wrap_strings = FALSE;
/* where is the terminfo database location going to default to? */
restdir = firstdir = 0;
@@ -1515,7 +1556,7 @@ main(int argc, char *argv[])
while ((c = getopt(argc,
argv,
- "01A:aB:CcDdEeFfGgIiKLlnpqR:rs:TtUuVv:w:x")) != -1) {
+ "01A:aB:CcDdEeFfGgIiKLlnpQ:qR:rs:TtUuVv:Ww:x")) != -1) {
switch (c) {
case '0':
mwidth = 65535;
@@ -1616,6 +1657,10 @@ main(int argc, char *argv[])
ignorepads = TRUE;
break;
+ case 'Q':
+ quickdump = optarg_to_number();
+ break;
+
case 'q':
quiet = TRUE;
s_absent = "-";
@@ -1676,6 +1721,10 @@ main(int argc, char *argv[])
set_trace_level(itrace);
break;
+ case 'W':
+ wrap_strings = TRUE;
+ break;
+
case 'w':
mwidth = optarg_to_number();
break;
@@ -1738,7 +1787,9 @@ main(int argc, char *argv[])
}
/* set up for display */
- dump_init(tversion, outform, sortmode, mwidth, mheight, itrace, formatted);
+ dump_init(tversion, outform, sortmode,
+ wrap_strings, mwidth, mheight, itrace,
+ formatted, FALSE, quickdump);
if (!filecompare) {
/* grab the entries */
@@ -1782,7 +1833,7 @@ main(int argc, char *argv[])
_nc_progname,
tname[termcount]);
- status = _nc_read_entry(tname[termcount],
+ status = _nc_read_entry2(tname[termcount],
tfile[termcount],
&entries[termcount].tterm);
}
@@ -1824,6 +1875,8 @@ main(int argc, char *argv[])
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);
+ analyze_string("smkx", keypad_xmit, &entries[0].tterm);
+ analyze_string("rmkx", keypad_local, &entries[0].tterm);
#undef CUR
} else {
@@ -1837,8 +1890,10 @@ main(int argc, char *argv[])
"%s: about to dump %s\n",
_nc_progname,
tname[0]);
- (void) printf("#\tReconstructed via infocmp from file: %s\n",
- tfile[0]);
+ if (!quiet)
+ (void)
+ printf("#\tReconstructed via infocmp from file: %s\n",
+ tfile[0]);
dump_entry(&entries[0].tterm,
suppress_untranslatable,
limited,
diff --git a/progs/modules b/progs/modules
index 55d7a9fb9694..dc7d61cf4a74 100644
--- a/progs/modules
+++ b/progs/modules
@@ -1,7 +1,7 @@
-# $Id: modules,v 1.17 2010/01/23 17:47:23 tom Exp $
+# $Id: modules,v 1.21 2016/12/24 17:33:59 tom Exp $
# Program modules (some are in ncurses lib!)
##############################################################################
-# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2014,2016 Free 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"), #
@@ -32,14 +32,18 @@
#
@ base
-clear progs $(srcdir) $(HEADER_DEPS)
-tic progs $(srcdir) $(HEADER_DEPS) transform.h $(srcdir)/dump_entry.h
+clear progs $(srcdir) $(HEADER_DEPS) tty_settings.h
+tic progs $(srcdir) $(HEADER_DEPS) transform.h $(srcdir)/dump_entry.h $(srcdir)/tparm_type.h
toe progs $(srcdir) $(HEADER_DEPS) $(INCDIR)/hashed_db.h
+clear_cmd progs $(srcdir) $(HEADER_DEPS) clear_cmd.h
dump_entry progs $(srcdir) $(HEADER_DEPS) $(srcdir)/dump_entry.h ../include/parametrized.h $(INCDIR)/capdefaults.c termsort.c
infocmp progs $(srcdir) $(HEADER_DEPS) $(srcdir)/dump_entry.h
+reset_cmd progs $(srcdir) $(HEADER_DEPS) reset_cmd.h tty_settings.h
tabs progs $(srcdir) $(HEADER_DEPS)
-tput progs $(srcdir) $(HEADER_DEPS) transform.h $(srcdir)/dump_entry.h termsort.c
-tset progs $(srcdir) $(HEADER_DEPS) transform.h $(srcdir)/dump_entry.h ../include/termcap.h
+tparm_type progs $(srcdir) $(HEADER_DEPS) $(srcdir)/tparm_type.h
+tput progs $(srcdir) $(HEADER_DEPS) transform.h $(srcdir)/dump_entry.h $(srcdir)/tparm_type.h termsort.c reset_cmd.h tty_settings.h
+tset progs $(srcdir) $(HEADER_DEPS) transform.h $(srcdir)/dump_entry.h ../include/termcap.h reset_cmd.h tty_settings.h
transform progs $(srcdir) $(HEADER_DEPS) transform.h
+tty_settings progs $(srcdir) $(HEADER_DEPS) tty_settings.h
# vile:makemode
diff --git a/progs/progs.priv.h b/progs/progs.priv.h
index 3ead89f85d20..da34790275f3 100644
--- a/progs/progs.priv.h
+++ b/progs/progs.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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,13 +30,16 @@
* Author: Thomas E. Dickey 1997-on *
****************************************************************************/
/*
- * $Id: progs.priv.h,v 1.39 2012/02/22 22:11:27 tom Exp $
+ * $Id: progs.priv.h,v 1.47 2019/12/14 23:53:12 tom Exp $
*
* progs.priv.h
*
* Header file for curses utility programs
*/
+#ifndef PROGS_PRIV_H
+#define PROGS_PRIV_H 1
+
#include <ncurses_cfg.h>
#if USE_RCS_IDS
@@ -115,6 +118,9 @@ extern char *optarg;
extern int optind;
#endif /* HAVE_GETOPT_H */
+#define NCURSES_INTERNALS 1
+#define NCURSES_OPAQUE 0
+
#include <curses.h>
#include <term_entry.h>
#include <nc_termios.h>
@@ -123,15 +129,30 @@ extern int optind;
#include <nc_string.h>
#include <nc_alloc.h>
+
#if HAVE_NC_FREEALL
#undef ExitProgram
#ifdef USE_LIBTINFO
-#define ExitProgram(code) _nc_free_tinfo(code)
+#define ExitProgram(code) exit_terminfo(code)
#else
#define ExitProgram(code) _nc_free_tic(code)
#endif
#endif
+#define VtoTrace(opt) (unsigned) ((opt > 0) ? opt : (opt == 0))
+
+/* error-returns for tput */
+#define ErrUsage 2
+#define ErrTermType 3
+#define ErrCapName 4
+#define ErrSystem(n) (4 + (n))
+
+#if defined(__GNUC__) && defined(_FORTIFY_SOURCE)
+#define IGNORE_RC(func) errno = (int) func
+#else
+#define IGNORE_RC(func) (void) func
+#endif /* gcc workarounds */
+
/* usually in <unistd.h> */
#ifndef STDOUT_FILENO
#define STDOUT_FILENO 1
@@ -200,3 +221,13 @@ extern int optind;
#define UChar(c) ((unsigned char)(c))
#define SIZEOF(v) (sizeof(v)/sizeof(v[0]))
+
+#define NCURSES_EXT_NUMBERS (NCURSES_EXT_COLORS && HAVE_INIT_EXTENDED_COLOR)
+
+#if NCURSES_EXT_NUMBERS
+#else
+#define _nc_free_termtype2(t) _nc_free_termtype(t)
+#define _nc_read_entry2(n,f,t) _nc_read_entry(n,f,t)
+#endif
+
+#endif /* PROGS_PRIV_H */
diff --git a/progs/reset_cmd.c b/progs/reset_cmd.c
new file mode 100644
index 000000000000..28829e72fe25
--- /dev/null
+++ b/progs/reset_cmd.c
@@ -0,0 +1,634 @@
+/****************************************************************************
+ * Copyright (c) 2016-2017,2019 Free 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 *
+ ****************************************************************************/
+
+#include <reset_cmd.h>
+#include <tty_settings.h>
+
+#include <errno.h>
+#include <stdio.h>
+#include <fcntl.h>
+
+#if HAVE_SIZECHANGE
+# if !defined(sun) || !TERMIOS
+# if HAVE_SYS_IOCTL_H
+# include <sys/ioctl.h>
+# endif
+# endif
+#endif
+
+#if NEED_PTEM_H
+/* they neglected to define struct winsize in termios.h -- it's only
+ in termio.h */
+#include <sys/stream.h>
+#include <sys/ptem.h>
+#endif
+
+MODULE_ID("$Id: reset_cmd.c,v 1.18 2019/07/13 21:35:13 tom Exp $")
+
+/*
+ * SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS,
+ * Solaris, IRIX) define TIOCGWINSZ and struct winsize.
+ */
+#ifdef TIOCGSIZE
+# define IOCTL_GET_WINSIZE TIOCGSIZE
+# define IOCTL_SET_WINSIZE TIOCSSIZE
+# define STRUCT_WINSIZE struct ttysize
+# define WINSIZE_ROWS(n) n.ts_lines
+# define WINSIZE_COLS(n) n.ts_cols
+#else
+# ifdef TIOCGWINSZ
+# define IOCTL_GET_WINSIZE TIOCGWINSZ
+# define IOCTL_SET_WINSIZE TIOCSWINSZ
+# define STRUCT_WINSIZE struct winsize
+# define WINSIZE_ROWS(n) n.ws_row
+# define WINSIZE_COLS(n) n.ws_col
+# endif
+#endif
+
+static FILE *my_file;
+
+static bool use_reset = FALSE; /* invoked as reset */
+static bool use_init = FALSE; /* invoked as init */
+
+static void
+failed(const char *msg)
+{
+ int code = errno;
+
+ (void) fprintf(stderr, "%s: %s: %s\n", _nc_progname, msg, strerror(code));
+ restore_tty_settings();
+ (void) fprintf(my_file, "\n");
+ fflush(my_file);
+ ExitProgram(ErrSystem(code));
+ /* NOTREACHED */
+}
+
+static bool
+cat_file(char *file)
+{
+ FILE *fp;
+ size_t nr;
+ char buf[BUFSIZ];
+ bool sent = FALSE;
+
+ if (file != 0) {
+ if ((fp = fopen(file, "r")) == 0)
+ failed(file);
+
+ while ((nr = fread(buf, sizeof(char), sizeof(buf), fp)) != 0) {
+ if (fwrite(buf, sizeof(char), nr, my_file) != nr) {
+ failed(file);
+ }
+ sent = TRUE;
+ }
+ fclose(fp);
+ }
+ return sent;
+}
+
+static int
+out_char(int c)
+{
+ return putc(c, my_file);
+}
+
+/**************************************************************************
+ * Mode-setting logic
+ **************************************************************************/
+
+/* some BSD systems have these built in, some systems are missing
+ * one or more definitions. The safest solution is to override unless the
+ * commonly-altered ones are defined.
+ */
+#if !(defined(CERASE) && defined(CINTR) && defined(CKILL) && defined(CQUIT))
+#undef CEOF
+#undef CERASE
+#undef CINTR
+#undef CKILL
+#undef CLNEXT
+#undef CRPRNT
+#undef CQUIT
+#undef CSTART
+#undef CSTOP
+#undef CSUSP
+#endif
+
+/* control-character defaults */
+#ifndef CEOF
+#define CEOF CTRL('D')
+#endif
+#ifndef CERASE
+#define CERASE CTRL('H')
+#endif
+#ifndef CINTR
+#define CINTR 127 /* ^? */
+#endif
+#ifndef CKILL
+#define CKILL CTRL('U')
+#endif
+#ifndef CLNEXT
+#define CLNEXT CTRL('v')
+#endif
+#ifndef CRPRNT
+#define CRPRNT CTRL('r')
+#endif
+#ifndef CQUIT
+#define CQUIT CTRL('\\')
+#endif
+#ifndef CSTART
+#define CSTART CTRL('Q')
+#endif
+#ifndef CSTOP
+#define CSTOP CTRL('S')
+#endif
+#ifndef CSUSP
+#define CSUSP CTRL('Z')
+#endif
+
+#if defined(_POSIX_VDISABLE)
+#define DISABLED(val) (((_POSIX_VDISABLE != -1) \
+ && ((val) == _POSIX_VDISABLE)) \
+ || ((val) <= 0))
+#else
+#define DISABLED(val) ((int)(val) <= 0)
+#endif
+
+#define CHK(val, dft) (unsigned char) (DISABLED(val) ? dft : val)
+
+#define reset_char(item, value) \
+ tty_settings->c_cc[item] = CHK(tty_settings->c_cc[item], value)
+
+/*
+ * Reset the terminal mode bits to a sensible state. Very useful after
+ * a child program dies in raw mode.
+ */
+void
+reset_tty_settings(int fd, TTY * tty_settings)
+{
+ GET_TTY(fd, tty_settings);
+
+#ifdef TERMIOS
+#if defined(VDISCARD) && defined(CDISCARD)
+ reset_char(VDISCARD, CDISCARD);
+#endif
+ reset_char(VEOF, CEOF);
+ reset_char(VERASE, CERASE);
+#if defined(VFLUSH) && defined(CFLUSH)
+ reset_char(VFLUSH, CFLUSH);
+#endif
+ reset_char(VINTR, CINTR);
+ reset_char(VKILL, CKILL);
+#if defined(VLNEXT) && defined(CLNEXT)
+ reset_char(VLNEXT, CLNEXT);
+#endif
+ reset_char(VQUIT, CQUIT);
+#if defined(VREPRINT) && defined(CRPRNT)
+ reset_char(VREPRINT, CRPRNT);
+#endif
+#if defined(VSTART) && defined(CSTART)
+ reset_char(VSTART, CSTART);
+#endif
+#if defined(VSTOP) && defined(CSTOP)
+ reset_char(VSTOP, CSTOP);
+#endif
+#if defined(VSUSP) && defined(CSUSP)
+ reset_char(VSUSP, CSUSP);
+#endif
+#if defined(VWERASE) && defined(CWERASE)
+ reset_char(VWERASE, CWERASE);
+#endif
+
+ tty_settings->c_iflag &= ~((unsigned) (IGNBRK
+ | PARMRK
+ | INPCK
+ | ISTRIP
+ | INLCR
+ | IGNCR
+#ifdef IUCLC
+ | IUCLC
+#endif
+#ifdef IXANY
+ | IXANY
+#endif
+ | IXOFF));
+
+ tty_settings->c_iflag |= (BRKINT
+ | IGNPAR
+ | ICRNL
+ | IXON
+#ifdef IMAXBEL
+ | IMAXBEL
+#endif
+ );
+
+ tty_settings->c_oflag &= ~((unsigned) (0
+#ifdef OLCUC
+ | OLCUC
+#endif
+#ifdef OCRNL
+ | OCRNL
+#endif
+#ifdef ONOCR
+ | ONOCR
+#endif
+#ifdef ONLRET
+ | ONLRET
+#endif
+#ifdef OFILL
+ | OFILL
+#endif
+#ifdef OFDEL
+ | OFDEL
+#endif
+#ifdef NLDLY
+ | NLDLY
+#endif
+#ifdef CRDLY
+ | CRDLY
+#endif
+#ifdef TABDLY
+ | TABDLY
+#endif
+#ifdef BSDLY
+ | BSDLY
+#endif
+#ifdef VTDLY
+ | VTDLY
+#endif
+#ifdef FFDLY
+ | FFDLY
+#endif
+ ));
+
+ tty_settings->c_oflag |= (OPOST
+#ifdef ONLCR
+ | ONLCR
+#endif
+ );
+
+ tty_settings->c_cflag &= ~((unsigned) (CSIZE
+ | CSTOPB
+ | PARENB
+ | PARODD
+ | CLOCAL));
+ tty_settings->c_cflag |= (CS8 | CREAD);
+ tty_settings->c_lflag &= ~((unsigned) (ECHONL
+ | NOFLSH
+#ifdef TOSTOP
+ | TOSTOP
+#endif
+#ifdef ECHOPTR
+ | ECHOPRT
+#endif
+#ifdef XCASE
+ | XCASE
+#endif
+ ));
+
+ tty_settings->c_lflag |= (ISIG
+ | ICANON
+ | ECHO
+ | ECHOE
+ | ECHOK
+#ifdef ECHOCTL
+ | ECHOCTL
+#endif
+#ifdef ECHOKE
+ | ECHOKE
+#endif
+ );
+#endif
+
+ SET_TTY(fd, tty_settings);
+}
+
+/*
+ * Returns a "good" value for the erase character. This is loosely based on
+ * the BSD4.4 logic.
+ */
+static int
+default_erase(void)
+{
+ int result;
+
+ if (over_strike
+ && VALID_STRING(key_backspace)
+ && strlen(key_backspace) == 1) {
+ result = key_backspace[0];
+ } else {
+ result = CERASE;
+ }
+
+ return result;
+}
+
+/*
+ * Update the values of the erase, interrupt, and kill characters in the TTY
+ * parameter.
+ *
+ * SVr4 tset (e.g., Solaris 2.5) only modifies the intr, quit or erase
+ * characters if they're unset, or if we specify them as options. This differs
+ * from BSD 4.4 tset, which always sets erase.
+ */
+void
+set_control_chars(TTY * tty_settings, int my_erase, int my_intr, int my_kill)
+{
+ if (DISABLED(tty_settings->c_cc[VERASE]) || my_erase >= 0) {
+ tty_settings->c_cc[VERASE] = UChar((my_erase >= 0)
+ ? my_erase
+ : default_erase());
+ }
+
+ if (DISABLED(tty_settings->c_cc[VINTR]) || my_intr >= 0) {
+ tty_settings->c_cc[VINTR] = UChar((my_intr >= 0)
+ ? my_intr
+ : CINTR);
+ }
+
+ if (DISABLED(tty_settings->c_cc[VKILL]) || my_kill >= 0) {
+ tty_settings->c_cc[VKILL] = UChar((my_kill >= 0)
+ ? my_kill
+ : CKILL);
+ }
+}
+
+/*
+ * Set up various conversions in the TTY parameter, including parity, tabs,
+ * returns, echo, and case, according to the termcap entry.
+ */
+void
+set_conversions(TTY * tty_settings)
+{
+#ifdef ONLCR
+ tty_settings->c_oflag |= ONLCR;
+#endif
+ tty_settings->c_iflag |= ICRNL;
+ tty_settings->c_lflag |= ECHO;
+#ifdef OXTABS
+ tty_settings->c_oflag |= OXTABS;
+#endif /* OXTABS */
+
+ /* test used to be tgetflag("NL") */
+ if (VALID_STRING(newline) && newline[0] == '\n' && !newline[1]) {
+ /* Newline, not linefeed. */
+#ifdef ONLCR
+ tty_settings->c_oflag &= ~((unsigned) ONLCR);
+#endif
+ tty_settings->c_iflag &= ~((unsigned) ICRNL);
+ }
+#ifdef OXTABS
+ /* test used to be tgetflag("pt") */
+ if (VALID_STRING(set_tab) && VALID_STRING(clear_all_tabs))
+ tty_settings->c_oflag &= ~OXTABS;
+#endif /* OXTABS */
+ tty_settings->c_lflag |= (ECHOE | ECHOK);
+}
+
+static bool
+sent_string(const char *s)
+{
+ bool sent = FALSE;
+ if (VALID_STRING(s)) {
+ tputs(s, 0, out_char);
+ sent = TRUE;
+ }
+ return sent;
+}
+
+static bool
+to_left_margin(void)
+{
+ if (VALID_STRING(carriage_return)) {
+ sent_string(carriage_return);
+ } else {
+ out_char('\r');
+ }
+ return TRUE;
+}
+
+/*
+ * Set the hardware tabs on the terminal, using the 'ct' (clear all tabs),
+ * 'st' (set one tab) and 'ch' (horizontal cursor addressing) capabilities.
+ * This is done before 'if' and 'is', so they can recover in case of error.
+ *
+ * Return TRUE if we set any tab stops, FALSE if not.
+ */
+static bool
+reset_tabstops(int wide)
+{
+ if ((init_tabs != 8)
+ && VALID_NUMERIC(init_tabs)
+ && VALID_STRING(set_tab)
+ && VALID_STRING(clear_all_tabs)) {
+ int c;
+
+ to_left_margin();
+ tputs(clear_all_tabs, 0, out_char);
+ if (init_tabs > 1) {
+ if (init_tabs > wide)
+ init_tabs = (short) wide;
+ for (c = init_tabs; c < wide; c += init_tabs) {
+ fprintf(my_file, "%*s", init_tabs, " ");
+ tputs(set_tab, 0, out_char);
+ }
+ to_left_margin();
+ }
+ return (TRUE);
+ }
+ return (FALSE);
+}
+
+/* Output startup string. */
+bool
+send_init_strings(int fd GCC_UNUSED, TTY * old_settings)
+{
+ int i;
+ bool need_flush = FALSE;
+
+ (void) old_settings;
+#ifdef TAB3
+ if (old_settings != 0 &&
+ old_settings->c_oflag & (TAB3 | ONLCR | OCRNL | ONLRET)) {
+ old_settings->c_oflag &= (TAB3 | ONLCR | OCRNL | ONLRET);
+ SET_TTY(fd, old_settings);
+ }
+#endif
+ if (use_reset || use_init) {
+ if (VALID_STRING(init_prog)) {
+ IGNORE_RC(system(init_prog));
+ }
+
+ need_flush |= sent_string((use_reset && (reset_1string != 0))
+ ? reset_1string
+ : init_1string);
+
+ need_flush |= sent_string((use_reset && (reset_2string != 0))
+ ? reset_2string
+ : init_2string);
+
+ if (VALID_STRING(clear_margins)) {
+ need_flush |= sent_string(clear_margins);
+ } else
+#if defined(set_lr_margin)
+ if (VALID_STRING(set_lr_margin)) {
+ need_flush |= sent_string(TPARM_2(set_lr_margin, 0,
+ columns - 1));
+ } else
+#endif
+#if defined(set_left_margin_parm) && defined(set_right_margin_parm)
+ if (VALID_STRING(set_left_margin_parm)
+ && VALID_STRING(set_right_margin_parm)) {
+ need_flush |= sent_string(TPARM_1(set_left_margin_parm, 0));
+ need_flush |= sent_string(TPARM_1(set_right_margin_parm,
+ columns - 1));
+ } else
+#endif
+ if (VALID_STRING(set_left_margin)
+ && VALID_STRING(set_right_margin)) {
+ need_flush |= to_left_margin();
+ need_flush |= sent_string(set_left_margin);
+ if (VALID_STRING(parm_right_cursor)) {
+ need_flush |= sent_string(TPARM_1(parm_right_cursor,
+ columns - 1));
+ } else {
+ for (i = 0; i < columns - 1; i++) {
+ out_char(' ');
+ need_flush = TRUE;
+ }
+ }
+ need_flush |= sent_string(set_right_margin);
+ need_flush |= to_left_margin();
+ }
+
+ need_flush |= reset_tabstops(columns);
+
+ need_flush |= cat_file((use_reset && reset_file) ? reset_file : init_file);
+
+ need_flush |= sent_string((use_reset && (reset_3string != 0))
+ ? reset_3string
+ : init_3string);
+ }
+
+ return need_flush;
+}
+
+/*
+ * Tell the user if a control key has been changed from the default value.
+ */
+static void
+show_tty_change(TTY * old_settings,
+ TTY * new_settings,
+ const char *name,
+ int which,
+ unsigned def)
+{
+ unsigned older, newer;
+ char *p;
+
+ newer = new_settings->c_cc[which];
+ older = old_settings->c_cc[which];
+
+ if (older == newer && older == def)
+ return;
+
+ (void) fprintf(stderr, "%s %s ", name, older == newer ? "is" : "set to");
+
+ if (DISABLED(newer)) {
+ (void) fprintf(stderr, "undef.\n");
+ /*
+ * Check 'delete' before 'backspace', since the key_backspace value
+ * is ambiguous.
+ */
+ } else 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", UChar(newer), UChar(newer));
+ } else
+ (void) fprintf(stderr, "%c.\n", UChar(newer));
+}
+
+/**************************************************************************
+ * Miscellaneous.
+ **************************************************************************/
+
+void
+reset_start(FILE *fp, bool is_reset, bool is_init)
+{
+ my_file = fp;
+ use_reset = is_reset;
+ use_init = is_init;
+}
+
+void
+reset_flush(void)
+{
+ if (my_file != 0)
+ fflush(my_file);
+}
+
+void
+print_tty_chars(TTY * old_settings, TTY * new_settings)
+{
+ show_tty_change(old_settings, new_settings, "Erase", VERASE, CERASE);
+ show_tty_change(old_settings, new_settings, "Kill", VKILL, CKILL);
+ show_tty_change(old_settings, new_settings, "Interrupt", VINTR, CINTR);
+}
+
+#if HAVE_SIZECHANGE
+/*
+ * Set window size if not set already, but update our copy of the values if the
+ * size was set.
+ */
+void
+set_window_size(int fd, short *high, short *wide)
+{
+ STRUCT_WINSIZE win;
+ (void) ioctl(fd, IOCTL_GET_WINSIZE, &win);
+ if (WINSIZE_ROWS(win) == 0 &&
+ WINSIZE_COLS(win) == 0) {
+ if (*high > 0 && *wide > 0) {
+ WINSIZE_ROWS(win) = (unsigned short) *high;
+ WINSIZE_COLS(win) = (unsigned short) *wide;
+ (void) ioctl(fd, IOCTL_SET_WINSIZE, &win);
+ }
+ } else if (WINSIZE_ROWS(win) > 0 &&
+ WINSIZE_COLS(win) > 0) {
+ *high = (short) WINSIZE_ROWS(win);
+ *wide = (short) WINSIZE_COLS(win);
+ }
+}
+#endif
diff --git a/progs/reset_cmd.h b/progs/reset_cmd.h
new file mode 100644
index 000000000000..f5426eb8d04b
--- /dev/null
+++ b/progs/reset_cmd.h
@@ -0,0 +1,65 @@
+/****************************************************************************
+ * Copyright (c) 2016 Free 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 *
+ ****************************************************************************/
+
+/*
+ * $Id: reset_cmd.h,v 1.7 2016/12/24 18:08:48 tom Exp $
+ *
+ * Utility functions for resetting terminal.
+ */
+#ifndef RESET_CMD_H
+#define RESET_CMD_H 1
+/* *INDENT-OFF* */
+
+#define USE_LIBTINFO
+#define __INTERNAL_CAPS_VISIBLE /* we need to see has_hardware_tabs */
+#include <progs.priv.h>
+
+#undef CTRL
+#define CTRL(x) ((x) & 0x1f)
+
+extern bool send_init_strings(int /* fd */, TTY * /* old_settings */);
+extern void print_tty_chars(TTY * /* old_settings */, TTY * /* new_settings */);
+extern void reset_flush(void);
+extern void reset_start(FILE * /* fp */, bool /* is_reset */, bool /* is_init */ );
+extern void reset_tty_settings(int /* fd */, TTY * /* tty_settings */);
+extern void set_control_chars(TTY * /* tty_settings */, int /* erase */, int /* intr */, int /* kill */);
+extern void set_conversions(TTY * /* tty_settings */);
+
+#if HAVE_SIZECHANGE
+extern void set_window_size(int /* fd */, short * /* high */, short * /* wide */);
+#endif
+
+extern const char *_nc_progname;
+
+/* *INDENT-ON* */
+
+#endif /* RESET_CMD_H */
diff --git a/progs/tabs.c b/progs/tabs.c
index 7ed3007549d8..01325c329cb9 100644
--- a/progs/tabs.c
+++ b/progs/tabs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2008-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2016,2017 Free 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,12 +36,13 @@
#define USE_LIBTINFO
#include <progs.priv.h>
+#include <tty_settings.h>
-MODULE_ID("$Id: tabs.c,v 1.34 2013/06/11 08:18:27 tom Exp $")
+MODULE_ID("$Id: tabs.c,v 1.41 2017/10/12 22:42:08 tom Exp $")
static void usage(void) GCC_NORETURN;
-static char *prg_name;
+const char *_nc_progname;
static int max_cols;
static void
@@ -79,7 +80,7 @@ do_tabs(int *tab_list)
break;
}
}
- putchar('\n');
+ putchar('\r');
}
static int *
@@ -103,7 +104,7 @@ decode_tabs(const char *tab_list)
if (n > 0 && result[n] <= result[n - 1]) {
fprintf(stderr,
"%s: tab-stops are not in increasing order: %d %d\n",
- prg_name, value, result[n - 1]);
+ _nc_progname, value, result[n - 1]);
free(result);
result = 0;
break;
@@ -288,6 +289,7 @@ add_to_tab_list(char **append, const char *value)
*append = result;
}
+ free(copied);
return result;
}
@@ -307,17 +309,17 @@ legal_tab_list(const char *tab_list)
if (!(isdigit(ch) || ch == ',' || ch == '+')) {
fprintf(stderr,
"%s: unexpected character found '%c'\n",
- prg_name, ch);
+ _nc_progname, ch);
result = FALSE;
break;
}
}
} else {
- fprintf(stderr, "%s: trailing comma found '%s'\n", prg_name, tab_list);
+ fprintf(stderr, "%s: trailing comma found '%s'\n", _nc_progname, tab_list);
result = FALSE;
}
} else {
- fprintf(stderr, "%s: no tab-list given\n", prg_name);
+ fprintf(stderr, "%s: no tab-list given\n", _nc_progname);
result = FALSE;
}
return result;
@@ -338,36 +340,35 @@ skip_list(char *value)
static void
usage(void)
{
- static const char *msg[] =
+#define DATA(s) s "\n"
+ static const char msg[] =
{
- "Usage: tabs [options] [tabstop-list]"
- ,""
- ,"Options:"
- ," -0 reset tabs"
- ," -8 set tabs to standard interval"
- ," -a Assembler, IBM S/370, first format"
- ," -a2 Assembler, IBM S/370, second format"
- ," -c COBOL, normal format"
- ," -c2 COBOL compact format"
- ," -c3 COBOL compact format extended"
- ," -d debug (show ruler with expected/actual tab positions)"
- ," -f FORTRAN"
- ," -n no-op (do not modify terminal settings)"
- ," -p PL/I"
- ," -s SNOBOL"
- ," -u UNIVAC 1100 Assembler"
- ," -T name use terminal type 'name'"
- ," -V print version"
- ,""
- ,"A tabstop-list is an ordered list of column numbers, e.g., 1,11,21"
- ,"or 1,+10,+10 which is the same."
+ DATA("Usage: tabs [options] [tabstop-list]")
+ DATA("")
+ DATA("Options:")
+ DATA(" -0 reset tabs")
+ DATA(" -8 set tabs to standard interval")
+ DATA(" -a Assembler, IBM S/370, first format")
+ DATA(" -a2 Assembler, IBM S/370, second format")
+ DATA(" -c COBOL, normal format")
+ DATA(" -c2 COBOL compact format")
+ DATA(" -c3 COBOL compact format extended")
+ DATA(" -d debug (show ruler with expected/actual tab positions)")
+ DATA(" -f FORTRAN")
+ DATA(" -n no-op (do not modify terminal settings)")
+ DATA(" -p PL/I")
+ DATA(" -s SNOBOL")
+ DATA(" -u UNIVAC 1100 Assembler")
+ DATA(" -T name use terminal type 'name'")
+ DATA(" -V print version")
+ DATA("")
+ DATA("A tabstop-list is an ordered list of column numbers, e.g., 1,11,21")
+ DATA("or 1,+10,+10 which is the same.")
};
- unsigned n;
+#undef DATA
fflush(stdout);
- for (n = 0; n < SIZEOF(msg); ++n) {
- fprintf(stderr, "%s\n", msg[n]);
- }
+ fputs(msg, stderr);
ExitProgram(EXIT_FAILURE);
}
@@ -381,8 +382,12 @@ main(int argc, char *argv[])
NCURSES_CONST char *term_name = 0;
char *append = 0;
const char *tab_list = 0;
+ TTY tty_settings;
+ int fd;
+
+ _nc_progname = _nc_rootname(argv[0]);
- prg_name = _nc_rootname(argv[0]);
+ fd = save_tty_settings(&tty_settings, FALSE);
if ((term_name = getenv("TERM")) == 0)
term_name = "ansi+tabs";
@@ -453,7 +458,7 @@ main(int argc, char *argv[])
if (*++option != '\0') {
term_name = option;
} else {
- term_name = argv[n++];
+ term_name = argv[n];
option--;
}
option += ((int) strlen(option)) - 1;
@@ -506,18 +511,18 @@ main(int argc, char *argv[])
}
}
- setupterm(term_name, STDOUT_FILENO, (int *) 0);
+ setupterm(term_name, fd, (int *) 0);
max_cols = (columns > 0) ? columns : 80;
if (!VALID_STRING(clear_all_tabs)) {
fprintf(stderr,
"%s: terminal type '%s' cannot reset tabs\n",
- prg_name, term_name);
+ _nc_progname, term_name);
} else if (!VALID_STRING(set_tab)) {
fprintf(stderr,
"%s: terminal type '%s' cannot set tabs\n",
- prg_name, term_name);
+ _nc_progname, term_name);
} else if (legal_tab_list(tab_list)) {
int *list = decode_tabs(tab_list);
diff --git a/progs/tic.c b/progs/tic.c
index fef78ee0745e..c66a4ef4cdb9 100644
--- a/progs/tic.c
+++ b/progs/tic.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,10 +43,12 @@
#include <sys/stat.h>
#include <dump_entry.h>
+#include <tparm_type.h>
#include <hashed_db.h>
+#include <parametrized.h>
#include <transform.h>
-MODULE_ID("$Id: tic.c,v 1.189 2013/11/16 19:58:09 tom Exp $")
+MODULE_ID("$Id: tic.c,v 1.281 2019/11/09 18:51:36 tom Exp $")
#define STDIN_NAME "<stdin>"
@@ -57,11 +59,16 @@ static FILE *tmp_fp;
static bool capdump = FALSE; /* running as infotocap? */
static bool infodump = FALSE; /* running as captoinfo? */
static bool showsummary = FALSE;
+static unsigned debug_level;
static char **namelst = 0;
static const char *to_remove;
-static void (*save_check_termtype) (TERMTYPE *, bool);
-static void check_termtype(TERMTYPE *tt, bool);
+#if NCURSES_XNAMES
+static bool using_extensions = FALSE;
+#endif
+
+static void (*save_check_termtype) (TERMTYPE2 *, bool);
+static void check_termtype(TERMTYPE2 *tt, bool);
static const char usage_string[] = "\
[-e names] \
@@ -112,6 +119,7 @@ cleanup(void)
#if NO_LEAKS
free_namelist(namelst);
+ _nc_leaks_dump_entry();
#endif
if (tmp_fp != 0)
fclose(tmp_fp);
@@ -136,50 +144,52 @@ failed(const char *msg)
static void
usage(void)
{
- static const char *const tbl[] =
+#define DATA(s) s "\n"
+ static const char options_string[] =
{
- "Options:",
- " -1 format translation output one capability per line",
+ DATA("Options:")
+ DATA(" -0 format translation output all capabilities on one line")
+ DATA(" -1 format translation output one capability per line")
#if NCURSES_XNAMES
- " -a retain commented-out capabilities (sets -x also)",
+ DATA(" -a retain commented-out capabilities (sets -x also)")
#endif
- " -K translate entries to termcap source form with BSD syntax",
- " -C translate entries to termcap source form",
- " -D print list of tic's database locations (first must be writable)",
- " -c check only, validate input without compiling or translating",
- " -e<names> translate/compile only entries named by comma-separated list",
- " -f format complex strings for readability",
- " -G format %{number} to %'char'",
- " -g format %'char' to %{number}",
- " -I translate entries to terminfo source form",
- " -L translate entries to full terminfo source form",
- " -N disable smart defaults for source translation",
- " -o<dir> set output directory for compiled entry writes",
- " -R<name> restrict translation to given terminfo/termcap version",
- " -r force resolution of all use entries in source translation",
- " -s print summary statistics",
- " -T remove size-restrictions on compiled description",
+ DATA(" -C translate entries to termcap source form")
+ DATA(" -D print list of tic's database locations (first must be writable)")
+ DATA(" -c check only, validate input without compiling or translating")
+ DATA(" -e<names> translate/compile only entries named by comma-separated list")
+ DATA(" -f format complex strings for readability")
+ DATA(" -G format %{number} to %'char'")
+ DATA(" -g format %'char' to %{number}")
+ DATA(" -I translate entries to terminfo source form")
+ DATA(" -K translate entries to termcap source form with BSD syntax")
+ DATA(" -L translate entries to full terminfo source form")
+ DATA(" -N disable smart defaults for source translation")
+ DATA(" -o<dir> set output directory for compiled entry writes")
+ DATA(" -Q[n] dump compiled description")
+ DATA(" -q brief listing, removes headers")
+ DATA(" -R<name> restrict translation to given terminfo/termcap version")
+ DATA(" -r force resolution of all use entries in source translation")
+ DATA(" -s print summary statistics")
+ DATA(" -T remove size-restrictions on compiled description")
#if NCURSES_XNAMES
- " -t suppress commented-out capabilities",
+ DATA(" -t suppress commented-out capabilities")
#endif
- " -U suppress post-processing of entries",
- " -V print version",
- " -v[n] set verbosity level",
- " -w[n] set format width for translation output",
+ DATA(" -U suppress post-processing of entries")
+ DATA(" -V print version")
+ DATA(" -W wrap long strings according to -w[n] option")
+ DATA(" -v[n] set verbosity level")
+ DATA(" -w[n] set format width for translation output")
#if NCURSES_XNAMES
- " -x treat unknown capabilities as user-defined",
+ DATA(" -x treat unknown capabilities as user-defined")
#endif
- "",
- "Parameters:",
- " <file> file to translate or compile"
+ DATA("")
+ DATA("Parameters:")
+ DATA(" <file> file to translate or compile")
};
- size_t j;
+#undef DATA
fprintf(stderr, "Usage: %s %s\n", _nc_progname, usage_string);
- for (j = 0; j < SIZEOF(tbl); j++) {
- fputs(tbl[j], stderr);
- putc('\n', stderr);
- }
+ fputs(options_string, stderr);
ExitProgram(EXIT_FAILURE);
}
@@ -208,7 +218,8 @@ write_it(ENTRY * ep)
while ((ch = *t++) != 0) {
*d++ = (char) ch;
if (ch == '\\') {
- *d++ = *t++;
+ if ((*d++ = *t++) == '\0')
+ break;
} else if ((ch == '%')
&& (*t == L_BRACE)) {
char *v = 0;
@@ -450,7 +461,7 @@ open_input(const char *filename, char *alt_file)
fprintf(stderr, "%s: %s %s\n", _nc_progname, filename, strerror(errno));
ExitProgram(EXIT_FAILURE);
} else if ((mode = (sb.st_mode & S_IFMT)) == S_IFDIR
- || (mode != S_IFREG && mode != S_IFCHR)) {
+ || (mode != S_IFREG && mode != S_IFCHR && mode != S_IFIFO)) {
fprintf(stderr, "%s: %s is not a file\n", _nc_progname, filename);
ExitProgram(EXIT_FAILURE);
} else {
@@ -659,7 +670,11 @@ show_databases(const char *outdir)
}
}
-#define VtoTrace(opt) (unsigned) ((opt > 0) ? opt : (opt == 0))
+static void
+add_digit(int *target, int source)
+{
+ *target = (*target * 10) + (source - '0');
+}
int
main(int argc, char *argv[])
@@ -667,7 +682,6 @@ main(int argc, char *argv[])
char my_tmpname[PATH_MAX];
char my_altfile[PATH_MAX];
int v_opt = -1;
- unsigned debug_level;
int smart_defaults = TRUE;
char *termcap;
ENTRY *qp;
@@ -689,6 +703,9 @@ main(int argc, char *argv[])
char *outdir = (char *) NULL;
bool check_only = FALSE;
bool suppress_untranslatable = FALSE;
+ int quickdump = 0;
+ bool quiet = FALSE;
+ bool wrap_strings = FALSE;
log_fp = stderr;
@@ -714,14 +731,17 @@ main(int argc, char *argv[])
* be optional.
*/
while ((this_opt = getopt(argc, argv,
- "0123456789CDIKLNR:TUVace:fGgo:rstvwx")) != -1) {
+ "0123456789CDIKLNQR:TUVWace:fGgo:qrstvwx")) != -1) {
if (isdigit(this_opt)) {
switch (last_opt) {
+ case 'Q':
+ add_digit(&quickdump, this_opt);
+ break;
case 'v':
- v_opt = (v_opt * 10) + (this_opt - '0');
+ add_digit(&v_opt, this_opt);
break;
case 'w':
- width = (width * 10) + (this_opt - '0');
+ add_digit(&width, this_opt);
break;
default:
switch (this_opt) {
@@ -772,6 +792,9 @@ main(int argc, char *argv[])
smart_defaults = FALSE;
literal = TRUE;
break;
+ case 'Q':
+ quickdump = 0;
+ break;
case 'R':
tversion = optarg;
break;
@@ -784,6 +807,9 @@ main(int argc, char *argv[])
case 'V':
puts(curses_version());
ExitProgram(EXIT_SUCCESS);
+ case 'W':
+ wrap_strings = TRUE;
+ break;
case 'c':
check_only = TRUE;
break;
@@ -802,6 +828,9 @@ main(int argc, char *argv[])
case 'o':
outdir = optarg;
break;
+ case 'q':
+ quiet = TRUE;
+ break;
case 'r':
forceresolve = TRUE;
break;
@@ -824,6 +853,7 @@ main(int argc, char *argv[])
/* FALLTHRU */
case 'x':
use_extended_names(TRUE);
+ using_extensions = TRUE;
break;
#endif
default:
@@ -907,16 +937,20 @@ main(int argc, char *argv[])
}
}
- if (infodump) {
+ if (infodump || check_only) {
dump_init(tversion,
- smart_defaults
- ? outform
- : F_LITERAL,
- sortmode, width, height, debug_level, formatted);
+ (smart_defaults
+ ? outform
+ : F_LITERAL),
+ sortmode,
+ wrap_strings, width, height,
+ debug_level, formatted || check_only, check_only, quickdump);
} else if (capdump) {
dump_init(tversion,
outform,
- sortmode, width, height, debug_level, FALSE);
+ sortmode,
+ wrap_strings, width, height,
+ debug_level, FALSE, FALSE, FALSE);
}
/* parse entries out of the source file */
@@ -939,14 +973,15 @@ main(int argc, char *argv[])
}
/* length check */
- if (check_only && (capdump || infodump)) {
+ if (check_only && limited && (capdump || infodump)) {
for_entry_list(qp) {
if (matches(namelst, qp->tterm.term_names)) {
int len = fmt_entry(&qp->tterm, NULL, FALSE, TRUE, infodump, numbers);
if (len > (infodump ? MAX_TERMINFO_LENGTH : MAX_TERMCAP_LENGTH))
(void) fprintf(stderr,
- "warning: resolved %s entry is %d bytes long\n",
+ "%s: resolved %s entry is %d bytes long\n",
+ _nc_progname,
_nc_first_name(qp->tterm.term_names),
len);
}
@@ -954,7 +989,21 @@ main(int argc, char *argv[])
}
/* write or dump all entries */
- if (!check_only) {
+ if (check_only) {
+ /* 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)) {
+ /* this is in case infotocap() generates warnings */
+ _nc_set_type(_nc_first_name(qp->tterm.term_names));
+ _nc_curr_line = (int) qp->startline;
+ repair_acsc(&qp->tterm);
+ dump_entry(&qp->tterm, suppress_untranslatable,
+ limited, numbers, NULL);
+ }
+ }
+ } else {
if (!infodump && !capdump) {
_nc_set_writedir(outdir);
for_entry_list(qp) {
@@ -973,12 +1022,18 @@ main(int argc, char *argv[])
/* 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-- > 0) {
- if (infodump)
- (void) putchar(fgetc(tmp_fp));
- else
- put_translate(fgetc(tmp_fp));
+ if (!quiet) {
+ (void) fseek(tmp_fp, qp->cstart, SEEK_SET);
+ while (j-- > 0) {
+ int ch = fgetc(tmp_fp);
+ if (ch == EOF || ferror(tmp_fp)) {
+ break;
+ } else if (infodump) {
+ (void) putchar(ch);
+ } else {
+ put_translate(ch);
+ }
+ }
}
repair_acsc(&qp->tterm);
@@ -991,7 +1046,7 @@ main(int argc, char *argv[])
printf("# length=%d\n", len);
}
}
- if (!namelst && _nc_tail) {
+ if (!namelst && _nc_tail && !quiet) {
int c, oldc = '\0';
bool in_comment = FALSE;
bool trailing_comment = FALSE;
@@ -1043,8 +1098,52 @@ main(int argc, char *argv[])
* Check if the alternate character-set capabilities are consistent.
*/
static void
-check_acs(TERMTYPE *tp)
+check_acs(TERMTYPE2 *tp)
{
+ int vt100_smacs = 0;
+ int vt100_rmacs = 0;
+ int vt100_enacs = 0;
+
+ /*
+ * ena_acs is not always necessary, but if it is present, the enter/exit
+ * capabilities should be.
+ */
+ ANDMISSING(ena_acs, enter_alt_charset_mode);
+ ANDMISSING(ena_acs, exit_alt_charset_mode);
+ PAIRED(exit_alt_charset_mode, exit_alt_charset_mode);
+
+ /*
+ * vt100-like is frequently used, but perhaps ena_acs is missing, etc.
+ */
+ if (VALID_STRING(enter_alt_charset_mode)) {
+ vt100_smacs = (!strcmp("\033(0", enter_alt_charset_mode)
+ ? 2
+ : (!strcmp("\016", enter_alt_charset_mode)
+ ? 1
+ : 0));
+ }
+ if (VALID_STRING(exit_alt_charset_mode)) {
+ vt100_rmacs = (!strcmp("\033(B", exit_alt_charset_mode)
+ ? 2
+ : (!strcmp("\017", exit_alt_charset_mode)
+ ? 1
+ : 0));
+ }
+ if (VALID_STRING(ena_acs)) {
+ vt100_enacs = (!strcmp("\033(B\033)0", ena_acs)
+ ? 2
+ : 0);
+ }
+ if (vt100_rmacs && vt100_smacs && (vt100_rmacs != vt100_smacs)) {
+ _nc_warning("rmacs/smacs are inconsistent");
+ }
+ if ((vt100_rmacs == 2) && (vt100_smacs == 2) && vt100_enacs) {
+ _nc_warning("rmacs/smacs make enacs redundant");
+ }
+ if ((vt100_rmacs == 1) && (vt100_smacs == 1) && !vt100_enacs) {
+ _nc_warning("VT100-style rmacs/smacs require enacs");
+ }
+
if (VALID_STRING(acs_chars)) {
const char *boxes = "lmkjtuvwqxn";
char mapped[256];
@@ -1079,12 +1178,35 @@ check_acs(TERMTYPE *tp)
}
}
+static bool
+same_color(NCURSES_CONST char *oldcap, NCURSES_CONST char *newcap, int limit)
+{
+ bool result = FALSE;
+ if (limit > 16)
+ limit = 16;
+ if (limit >= 8) {
+ int n;
+ int same;
+ for (n = same = 0; n < limit; ++n) {
+ char *oldvalue = strdup(TPARM_1(oldcap, n));
+ char *newvalue = strdup(TPARM_1(newcap, n));
+ same += !strcmp(oldvalue, newvalue);
+ free(oldvalue);
+ free(newvalue);
+ }
+ result = (same == limit);
+ }
+ return result;
+}
+
/*
* Check if the color capabilities are consistent
*/
static void
-check_colors(TERMTYPE *tp)
+check_colors(TERMTYPE2 *tp)
{
+ char *value;
+
if ((max_colors > 0) != (max_pairs > 0)
|| ((max_colors > max_pairs) && (initialize_pair == 0)))
_nc_warning("inconsistent values for max_colors (%d) and max_pairs (%d)",
@@ -1095,25 +1217,66 @@ check_colors(TERMTYPE *tp)
PAIRED(set_color_pair, initialize_pair);
if (VALID_STRING(set_foreground)
- && VALID_STRING(set_a_foreground)
- && !_nc_capcmp(set_foreground, set_a_foreground))
- _nc_warning("expected setf/setaf to be different");
+ && VALID_STRING(set_a_foreground)) {
+ if (!_nc_capcmp(set_foreground, set_a_foreground)) {
+ _nc_warning("expected setf/setaf to be different");
+ } else if (same_color(set_foreground, set_a_foreground, max_colors)) {
+ _nc_warning("setf/setaf are equivalent");
+ }
+ }
if (VALID_STRING(set_background)
- && VALID_STRING(set_a_background)
- && !_nc_capcmp(set_background, set_a_background))
- _nc_warning("expected setb/setab to be different");
+ && VALID_STRING(set_a_background)) {
+ if (!_nc_capcmp(set_background, set_a_background)) {
+ _nc_warning("expected setb/setab to be different");
+ } else if (same_color(set_background, set_a_background, max_colors)) {
+ _nc_warning("setb/setab are equivalent");
+ }
+ }
/* see: has_colors() */
if (VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs)
- && (((set_foreground != NULL)
- && (set_background != NULL))
- || ((set_a_foreground != NULL)
- && (set_a_background != NULL))
+ && ((VALID_STRING(set_foreground)
+ && VALID_STRING(set_background))
+ || (VALID_STRING(set_a_foreground)
+ && VALID_STRING(set_a_background))
|| set_color_pair)) {
if (!VALID_STRING(orig_pair) && !VALID_STRING(orig_colors))
_nc_warning("expected either op/oc string for resetting colors");
}
+ if (can_change) {
+ if (!VALID_STRING(initialize_pair) &&
+ !VALID_STRING(initialize_color)) {
+ _nc_warning("expected initc or initp because ccc is given");
+ }
+ } else {
+ if (VALID_STRING(initialize_pair) ||
+ VALID_STRING(initialize_color)) {
+ _nc_warning("expected ccc because initc is given");
+ }
+ }
+ value = tigetstr("RGB");
+ if (VALID_STRING(value)) {
+ int r, g, b;
+ char bad;
+ int code = sscanf(value, "%d/%d/%d%c", &r, &g, &b, &bad);
+ if (code != 3 || r <= 0 || g <= 0 || b <= 0) {
+ _nc_warning("unexpected value for RGB capability: %s", value);
+ }
+ }
+}
+
+static int
+csi_length(const char *value)
+{
+ int result = 0;
+
+ if (value[0] == '\033' && value[1] == '[') {
+ result = 2;
+ } else if (UChar(value[0]) == 0x9a) {
+ result = 1;
+ }
+ return result;
}
static char
@@ -1158,7 +1321,6 @@ check_ansi_cursor(char *list[4])
{
int j, k;
int want;
- size_t prefix = 0;
size_t suffix;
bool skip[4];
bool repeated = FALSE;
@@ -1176,16 +1338,8 @@ check_ansi_cursor(char *list[4])
}
if (!repeated) {
char *up = list[1];
+ size_t prefix = (size_t) csi_length(up);
- if (UChar(up[0]) == '\033') {
- if (up[1] == '[') {
- prefix = 2;
- } else {
- prefix = 1;
- }
- } else if (UChar(up[0]) == UChar('\233')) {
- prefix = 1;
- }
if (prefix) {
suffix = prefix;
while (up[suffix] && isdigit(UChar(up[suffix])))
@@ -1227,7 +1381,7 @@ check_ansi_cursor(char *list[4])
#define UNEXPECTED(name) if (PRESENT(name)) _nc_warning("unexpected " #name ", for %s", why)
static void
-check_noaddress(TERMTYPE *tp, const char *why)
+check_noaddress(TERMTYPE2 *tp, const char *why)
{
UNEXPECTED(column_address);
UNEXPECTED(cursor_address);
@@ -1239,7 +1393,7 @@ check_noaddress(TERMTYPE *tp, const char *why)
}
static void
-check_cursor(TERMTYPE *tp)
+check_cursor(TERMTYPE2 *tp)
{
int count;
char *list[4];
@@ -1358,7 +1512,7 @@ check_cursor(TERMTYPE *tp)
* is mapped inconsistently.
*/
static void
-check_keypad(TERMTYPE *tp)
+check_keypad(TERMTYPE2 *tp)
{
char show[80];
@@ -1468,31 +1622,67 @@ check_keypad(TERMTYPE *tp)
}
static void
-check_printer(TERMTYPE *tp)
+check_printer(TERMTYPE2 *tp)
{
+ (void) tp;
+#if defined(enter_doublewide_mode) && defined(exit_doublewide_mode)
PAIRED(enter_doublewide_mode, exit_doublewide_mode);
+#endif
+#if defined(enter_italics_mode) && defined(exit_italics_mode)
PAIRED(enter_italics_mode, exit_italics_mode);
+#endif
+#if defined(enter_leftward_mode) && defined(exit_leftward_mode)
PAIRED(enter_leftward_mode, exit_leftward_mode);
+#endif
+#if defined(enter_micro_mode) && defined(exit_micro_mode)
PAIRED(enter_micro_mode, exit_micro_mode);
+#endif
+#if defined(enter_shadow_mode) && defined(exit_shadow_mode)
PAIRED(enter_shadow_mode, exit_shadow_mode);
+#endif
+#if defined(enter_subscript_mode) && defined(exit_subscript_mode)
PAIRED(enter_subscript_mode, exit_subscript_mode);
+#endif
+#if defined(enter_superscript_mode) && defined(exit_superscript_mode)
PAIRED(enter_superscript_mode, exit_superscript_mode);
+#endif
+#if defined(enter_upward_mode) && defined(exit_upward_mode)
PAIRED(enter_upward_mode, exit_upward_mode);
+#endif
+#if defined(start_char_set_def) && defined(stop_char_set_def)
ANDMISSING(start_char_set_def, stop_char_set_def);
+#endif
/* if we have a parameterized form, then the non-parameterized is easy */
+#if defined(set_bottom_margin_parm) && defined(set_bottom_margin)
ANDMISSING(set_bottom_margin_parm, set_bottom_margin);
+#endif
+#if defined(set_left_margin_parm) && defined(set_left_margin)
ANDMISSING(set_left_margin_parm, set_left_margin);
+#endif
+#if defined(set_right_margin_parm) && defined(set_right_margin)
ANDMISSING(set_right_margin_parm, set_right_margin);
+#endif
+#if defined(set_top_margin_parm) && defined(set_top_margin)
ANDMISSING(set_top_margin_parm, set_top_margin);
+#endif
+#if defined(parm_down_micro) && defined(micro_down)
ANDMISSING(parm_down_micro, micro_down);
+#endif
+#if defined(parm_left_micro) && defined(micro_left)
ANDMISSING(parm_left_micro, micro_left);
+#endif
+#if defined(parm_right_micro) && defined(micro_right)
ANDMISSING(parm_right_micro, micro_right);
+#endif
+#if defined(parm_up_micro) && defined(micro_up)
ANDMISSING(parm_up_micro, micro_up);
+#endif
}
+#if NCURSES_XNAMES
static bool
uses_SGR_39_49(const char *value)
{
@@ -1504,9 +1694,8 @@ uses_SGR_39_49(const char *value)
* Check consistency of termcap extensions related to "screen".
*/
static void
-check_screen(TERMTYPE *tp)
+check_screen(TERMTYPE2 *tp)
{
-#if NCURSES_XNAMES
if (_nc_user_definable) {
int have_XT = tigetflag("XT");
int have_XM = tigetflag("XM");
@@ -1514,6 +1703,9 @@ check_screen(TERMTYPE *tp)
bool have_kmouse = FALSE;
bool use_sgr_39_49 = FALSE;
char *name = _nc_first_name(tp->term_names);
+ bool is_screen = !strncmp(name, "screen", 6);
+ bool screen_base = (is_screen
+ && strchr(name, '.') == 0);
if (!VALID_BOOLEAN(have_bce)) {
have_bce = FALSE;
@@ -1534,32 +1726,35 @@ check_screen(TERMTYPE *tp)
}
if (have_XM && have_XT) {
- _nc_warning("Screen's XT capability conflicts with XM");
- } else if (have_XT
- && strstr(name, "screen") != 0
- && strchr(name, '.') != 0) {
- _nc_warning("Screen's \"screen\" entries should not have XT set");
+ _nc_warning("screen's XT capability conflicts with XM");
+ } else if (have_XT && screen_base) {
+ _nc_warning("screen's \"screen\" entries should not have XT set");
} else if (have_XT) {
- if (!have_kmouse && have_bce) {
+ if (!have_kmouse && is_screen) {
if (VALID_STRING(key_mouse)) {
- _nc_warning("Value of kmous inconsistent with screen's usage");
+ _nc_warning("value of kmous inconsistent with screen's usage");
} else {
- _nc_warning("Expected kmous capability with XT");
+ _nc_warning("expected kmous capability with XT");
}
}
if (!have_bce && max_colors > 0)
- _nc_warning("Expected bce capability with XT");
+ _nc_warning("expected bce capability with XT");
if (!use_sgr_39_49 && have_bce && max_colors > 0)
- _nc_warning("Expected orig_colors capability with XT to have 39/49 parameters");
+ _nc_warning("expected orig_colors capability with XT to have 39/49 parameters");
if (VALID_STRING(to_status_line))
_nc_warning("\"tsl\" capability is redundant, given XT");
} else {
- if (have_kmouse && !have_XM)
- _nc_warning("Expected XT to be set, given kmous");
+ if (have_kmouse
+ && !have_XM
+ && !screen_base && strchr(name, '+') == 0) {
+ _nc_warning("expected XT to be set, given kmous");
+ }
}
}
-#endif
}
+#else
+#define check_screen(tp) /* nothing */
+#endif
/*
* Returns the expected number of parameters for the given capability.
@@ -1567,78 +1762,81 @@ check_screen(TERMTYPE *tp)
static int
expected_params(const char *name)
{
+#define DATA(name,count) { { name }, count }
/* *INDENT-OFF* */
static const struct {
- const char *name;
+ const char name[9];
int count;
} table[] = {
- { "S0", 1 }, /* 'screen' extension */
- { "birep", 2 },
- { "chr", 1 },
- { "colornm", 1 },
- { "cpi", 1 },
- { "csnm", 1 },
- { "csr", 2 },
- { "cub", 1 },
- { "cud", 1 },
- { "cuf", 1 },
- { "cup", 2 },
- { "cuu", 1 },
- { "cvr", 1 },
- { "cwin", 5 },
- { "dch", 1 },
- { "defc", 3 },
- { "dial", 1 },
- { "dispc", 1 },
- { "dl", 1 },
- { "ech", 1 },
- { "getm", 1 },
- { "hpa", 1 },
- { "ich", 1 },
- { "il", 1 },
- { "indn", 1 },
- { "initc", 4 },
- { "initp", 7 },
- { "lpi", 1 },
- { "mc5p", 1 },
- { "mrcup", 2 },
- { "mvpa", 1 },
- { "pfkey", 2 },
- { "pfloc", 2 },
- { "pfx", 2 },
- { "pfxl", 3 },
- { "pln", 2 },
- { "qdial", 1 },
- { "rcsd", 1 },
- { "rep", 2 },
- { "rin", 1 },
- { "sclk", 3 },
- { "scp", 1 },
- { "scs", 1 },
- { "scsd", 2 },
- { "setab", 1 },
- { "setaf", 1 },
- { "setb", 1 },
- { "setcolor", 1 },
- { "setf", 1 },
- { "sgr", 9 },
- { "sgr1", 6 },
- { "slength", 1 },
- { "slines", 1 },
- { "smgbp", 1 }, /* 2 if smgtp is not given */
- { "smglp", 1 },
- { "smglr", 2 },
- { "smgrp", 1 },
- { "smgtb", 2 },
- { "smgtp", 1 },
- { "tsl", 1 },
- { "u6", -1 },
- { "vpa", 1 },
- { "wind", 4 },
- { "wingo", 1 },
+ DATA( "S0", 1 ), /* 'screen' extension */
+ DATA( "birep", 2 ),
+ DATA( "chr", 1 ),
+ DATA( "colornm", 1 ),
+ DATA( "cpi", 1 ),
+ DATA( "csnm", 1 ),
+ DATA( "csr", 2 ),
+ DATA( "cub", 1 ),
+ DATA( "cud", 1 ),
+ DATA( "cuf", 1 ),
+ DATA( "cup", 2 ),
+ DATA( "cuu", 1 ),
+ DATA( "cvr", 1 ),
+ DATA( "cwin", 5 ),
+ DATA( "dch", 1 ),
+ DATA( "defc", 3 ),
+ DATA( "dial", 1 ),
+ DATA( "dispc", 1 ),
+ DATA( "dl", 1 ),
+ DATA( "ech", 1 ),
+ DATA( "getm", 1 ),
+ DATA( "hpa", 1 ),
+ DATA( "ich", 1 ),
+ DATA( "il", 1 ),
+ DATA( "indn", 1 ),
+ DATA( "initc", 4 ),
+ DATA( "initp", 7 ),
+ DATA( "lpi", 1 ),
+ DATA( "mc5p", 1 ),
+ DATA( "mrcup", 2 ),
+ DATA( "mvpa", 1 ),
+ DATA( "pfkey", 2 ),
+ DATA( "pfloc", 2 ),
+ DATA( "pfx", 2 ),
+ DATA( "pfxl", 3 ),
+ DATA( "pln", 2 ),
+ DATA( "qdial", 1 ),
+ DATA( "rcsd", 1 ),
+ DATA( "rep", 2 ),
+ DATA( "rin", 1 ),
+ DATA( "sclk", 3 ),
+ DATA( "scp", 1 ),
+ DATA( "scs", 1 ),
+ DATA( "scsd", 2 ),
+ DATA( "setab", 1 ),
+ DATA( "setaf", 1 ),
+ DATA( "setb", 1 ),
+ DATA( "setcolor", 1 ),
+ DATA( "setf", 1 ),
+ DATA( "sgr", 9 ),
+ DATA( "sgr1", 6 ),
+ DATA( "slength", 1 ),
+ DATA( "slines", 1 ),
+ DATA( "smgbp", 1 ), /* 2 if smgtp is not given */
+ DATA( "smglp", 1 ),
+ DATA( "smglr", 2 ),
+ DATA( "smgrp", 1 ),
+ DATA( "smgtb", 2 ),
+ DATA( "smgtp", 1 ),
+ DATA( "tsl", 1 ),
+ DATA( "u6", -1 ),
+ DATA( "vpa", 1 ),
+ DATA( "wind", 4 ),
+ DATA( "wingo", 1 ),
};
/* *INDENT-ON* */
+#undef DATA
+
unsigned n;
int result = 0; /* function-keys, etc., use none */
@@ -1653,17 +1851,65 @@ expected_params(const char *name)
}
/*
+ * Check for user-capabilities that happen to be used in ncurses' terminal
+ * database.
+ */
+#if NCURSES_XNAMES
+static struct user_table_entry const *
+lookup_user_capability(const char *name)
+{
+ struct user_table_entry const *result = 0;
+ if (*name != 'k') {
+ result = _nc_find_user_entry(name);
+ }
+ return result;
+}
+#endif
+
+/*
+ * If a given name is likely to be a user-capability, return the number of
+ * parameters it would be used with. If not, return -1.
+ *
+ * ncurses assumes that u6 could be used for getting the cursor-position, but
+ * that is not implemented. Make a special case for that, to quiet needless
+ * warnings.
+ *
+ * The other string-capability extensions (see terminfo.src) which could have
+ * parameters such as "Ss", "%u", are not used by ncurses. But we check those
+ * anyway, to validate the terminfo database.
+ */
+static int
+is_user_capability(const char *name)
+{
+ int result = -1;
+ if (name[0] == 'u' &&
+ (name[1] >= '0' && name[1] <= '9') &&
+ name[2] == '\0') {
+ result = (name[1] == '6') ? 2 : 0;
+ }
+#if NCURSES_XNAMES
+ else if (using_extensions) {
+ struct user_table_entry const *p = lookup_user_capability(name);
+ if (p != 0) {
+ result = (int) p->ute_argc;
+ }
+ }
+#endif
+ return result;
+}
+
+/*
* Make a quick sanity check for the parameters which are used in the given
* strings. If there are no "%p" tokens, then there should be no other "%"
* markers.
*/
static void
-check_params(TERMTYPE *tp, const char *name, char *value)
+check_params(TERMTYPE2 *tp, const char *name, char *value, int extended)
{
int expected = expected_params(name);
int actual = 0;
int n;
- bool params[10];
+ bool params[NUM_PARM];
char *s = value;
#ifdef set_top_margin_parm
@@ -1672,7 +1918,7 @@ check_params(TERMTYPE *tp, const char *name, char *value)
expected = 2;
#endif
- for (n = 0; n < 10; n++)
+ for (n = 0; n < NUM_PARM; n++)
params[n] = FALSE;
while (*s != 0) {
@@ -1695,6 +1941,22 @@ check_params(TERMTYPE *tp, const char *name, char *value)
s++;
}
+#if NCURSES_XNAMES
+ if (extended) {
+ int check = is_user_capability(name);
+ if (check != actual && (check >= 0 && actual >= 0)) {
+ _nc_warning("extended %s capability has %d parameters, expected %d",
+ name, actual, check);
+ } else if (debug_level > 1) {
+ _nc_warning("extended %s capability has %d parameters, as expected",
+ name, actual);
+ }
+ expected = actual;
+ }
+#else
+ (void) extended;
+#endif
+
if (params[0]) {
_nc_warning("%s refers to parameter 0 (%%p0), which is not allowed", name);
}
@@ -1708,6 +1970,422 @@ check_params(TERMTYPE *tp, const char *name, char *value)
_nc_warning("%s omits parameter %d", name, n);
}
}
+
+ /*
+ * Counting "%p" markers does not account for termcap expressions which
+ * may not have been fully translated. Also, tparm does its own analysis.
+ * Report differences here.
+ */
+ if (actual >= 0) {
+ char *p_is_s[NUM_PARM];
+ int popcount;
+ int analyzed = _nc_tparm_analyze(value, p_is_s, &popcount);
+ if (analyzed < popcount) {
+ analyzed = popcount;
+ }
+ if (actual != analyzed && expected != analyzed) {
+#if NCURSES_XNAMES
+ int user_cap = is_user_capability(name);
+ if ((user_cap == analyzed) && using_extensions) {
+ ; /* ignore */
+ } else if (user_cap >= 0) {
+ _nc_warning("tparm will use %d parameters for %s, expected %d",
+ analyzed, name, user_cap);
+ } else
+#endif
+ {
+ _nc_warning("tparm analyzed %d parameters for %s, expected %d",
+ analyzed, name, actual);
+ }
+ }
+ }
+}
+
+static bool
+line_capability(const char *name)
+{
+ bool result = FALSE;
+ static const char *table[] =
+ {
+ "csr", /* change_scroll_region */
+ "clear", /* clear_screen */
+ "ed", /* clr_eos */
+ "cwin", /* create_window */
+ "cup", /* cursor_address */
+ "cud1", /* cursor_down */
+ "home", /* cursor_home */
+ "mrcup", /* cursor_mem_address */
+ "ll", /* cursor_to_ll */
+ "cuu1", /* cursor_up */
+ "dl1", /* delete_line */
+ "hd", /* down_half_line */
+ "flash", /* flash_screen */
+ "ff", /* form_feed */
+ "il1", /* insert_line */
+ "nel", /* newline */
+ "dl", /* parm_delete_line */
+ "cud", /* parm_down_cursor */
+ "indn", /* parm_index */
+ "il", /* parm_insert_line */
+ "rin", /* parm_rindex */
+ "cuu", /* parm_up_cursor */
+ "mc0", /* print_screen */
+ "vpa", /* row_address */
+ "ind", /* scroll_forward */
+ "ri", /* scroll_reverse */
+ "hu", /* up_half_line */
+ };
+ size_t n;
+ for (n = 0; n < SIZEOF(table); ++n) {
+ if (!strcmp(name, table[n])) {
+ result = TRUE;
+ break;
+ }
+ }
+ return result;
+}
+
+/*
+ * Check for DEC VT100 private mode for reverse video.
+ */
+static const char *
+skip_DECSCNM(const char *value, int *flag)
+{
+ *flag = -1;
+ if (value != 0) {
+ int skip = csi_length(value);
+ if (skip > 0 &&
+ value[skip++] == '?' &&
+ value[skip++] == '5') {
+ if (value[skip] == 'h') {
+ *flag = 1;
+ } else if (value[skip] == 'l') {
+ *flag = 0;
+ }
+ value += skip + 1;
+ }
+ }
+ return value;
+}
+
+static void
+check_delays(TERMTYPE2 *tp, const char *name, const char *value)
+{
+ const char *p, *q;
+ const char *first = 0;
+ const char *last = 0;
+
+ for (p = value; *p != '\0'; ++p) {
+ if (p[0] == '$' && p[1] == '<') {
+ const char *base = p + 2;
+ const char *mark = 0;
+ bool maybe = TRUE;
+ bool mixed = FALSE;
+ int proportional = 0;
+ int mandatory = 0;
+
+ first = p;
+
+ for (q = base; *q != '\0'; ++q) {
+ if (*q == '>') {
+ if (mark == 0)
+ mark = q;
+ break;
+ } else if (*q == '*' || *q == '/') {
+ if (*q == '*')
+ ++proportional;
+ if (*q == '/')
+ ++mandatory;
+ if (mark == 0)
+ mark = q;
+ } else if (!(isalnum(UChar(*q)) || strchr("+-.", *q) != 0)) {
+ maybe = FALSE;
+ break;
+ } else if (proportional || mandatory) {
+ mixed = TRUE;
+ }
+ }
+ last = *q ? (q + 1) : q;
+ if (*q == '\0') {
+ maybe = FALSE; /* just an isolated "$<" */
+ } else if (maybe) {
+ float check_f;
+ char check_c;
+ int rc = sscanf(base, "%f%c", &check_f, &check_c);
+ if ((rc != 2) || (check_c != *mark) || mixed) {
+ _nc_warning("syntax error in %s delay '%.*s'", name,
+ (int) (q - base), base);
+ } else if (*name == 'k') {
+ _nc_warning("function-key %s has delay", name);
+ } else if (proportional && !line_capability(name)) {
+ _nc_warning("non-line capability using proportional delay: %s", name);
+ } else if (!xon_xoff &&
+ !mandatory &&
+ strchr(_nc_first_name(tp->term_names), '+') == 0) {
+ _nc_warning("%s in %s is used since no xon/xoff",
+ (proportional
+ ? "proportional delay"
+ : "delay"),
+ name);
+ }
+ } else {
+ p = q - 1; /* restart scan */
+ }
+ }
+ }
+
+ if (!strcmp(name, "flash") ||
+ !strcmp(name, "beep")) {
+
+ if (first != 0) {
+ if (first == value || *last == 0) {
+ /*
+ * Delay is on one end or the other.
+ */
+ _nc_warning("expected delay embedded within %s", name);
+ }
+ } else {
+ int flag;
+
+ /*
+ * Check for missing delay when using VT100 reverse-video.
+ * A real VT100 might not need this, but terminal emulators do.
+ */
+ if ((p = skip_DECSCNM(value, &flag)) != 0 &&
+ flag > 0 &&
+ (q = skip_DECSCNM(p, &flag)) != 0 &&
+ flag == 0) {
+ _nc_warning("expected a delay in %s", name);
+ }
+ }
+ }
+}
+
+static char *
+check_1_infotocap(const char *name, NCURSES_CONST char *value, int count)
+{
+ int k;
+ int ignored;
+ long numbers[1 + NUM_PARM];
+ char *strings[1 + NUM_PARM];
+ char *p_is_s[NUM_PARM];
+ char *result;
+ char blob[NUM_PARM * 10];
+ char *next = blob;
+
+ *next++ = '\0';
+ for (k = 1; k <= NUM_PARM; k++) {
+ numbers[k] = count;
+ _nc_SPRINTF(next,
+ _nc_SLIMIT(sizeof(blob) - (size_t) (next - blob))
+ "XYZ%d", count);
+ strings[k] = next;
+ next += strlen(next) + 1;
+ }
+
+ switch (tparm_type(name)) {
+ case Num_Str:
+ result = TPARM_2(value, numbers[1], strings[2]);
+ break;
+ case Num_Str_Str:
+ result = TPARM_3(value, numbers[1], strings[2], strings[3]);
+ break;
+ case Numbers:
+ default:
+ (void) _nc_tparm_analyze(value, p_is_s, &ignored);
+#define myParam(n) (p_is_s[n - 1] != 0 ? ((TPARM_ARG) strings[n]) : numbers[n])
+ result = TPARM_9(value,
+ myParam(1),
+ myParam(2),
+ myParam(3),
+ myParam(4),
+ myParam(5),
+ myParam(6),
+ myParam(7),
+ myParam(8),
+ myParam(9));
+ break;
+ }
+ return strdup(result);
+}
+
+#define IsDelay(ch) ((ch) == '.' || isdigit(UChar(ch)))
+
+static const char *
+parse_delay_value(const char *src, double *delays, int *always)
+{
+ int star = 0;
+
+ *delays = 0.0;
+ if (always)
+ *always = 0;
+
+ while (isdigit(UChar(*src))) {
+ (*delays) = (*delays) * 10 + (*src++ - '0');
+ }
+ if (*src == '.') {
+ int gotdot = 1;
+
+ ++src;
+ while (isdigit(UChar(*src))) {
+ gotdot *= 10;
+ (*delays) += (*src++ - '0') / gotdot;
+ }
+ }
+ while (*src == '*' || *src == '/') {
+ if (always == 0 && *src == '/')
+ break;
+ if (*src++ == '*') {
+ star = 1;
+ } else {
+ *always = 1;
+ }
+ }
+ if (star)
+ *delays = -(*delays);
+ return src;
+}
+
+static const char *
+parse_ti_delay(const char *ti, double *delays)
+{
+ *delays = 0.0;
+ while (*ti != '\0') {
+ if (*ti == '\\') {
+ ++ti;
+ }
+ if (ti[0] == '$'
+ && ti[1] == '<'
+ && IsDelay(UChar(ti[2]))) {
+ int ignored;
+ const char *last = parse_delay_value(ti + 2, delays, &ignored);
+ if (*last == '>') {
+ ti = last;
+ }
+ } else {
+ ++ti;
+ }
+ }
+ return ti;
+}
+
+static const char *
+parse_tc_delay(const char *tc, double *delays)
+{
+ return parse_delay_value(tc, delays, (int *) 0);
+}
+
+/*
+ * Compare terminfo- and termcap-strings, factoring out delays.
+ */
+static bool
+same_ti_tc(const char *ti, const char *tc, bool * embedded)
+{
+ bool same = TRUE;
+ double ti_delay = 0.0;
+ double tc_delay = 0.0;
+ const char *ti_last;
+
+ *embedded = FALSE;
+ ti_last = parse_ti_delay(ti, &ti_delay);
+ tc = parse_tc_delay(tc, &tc_delay);
+
+ while ((ti < ti_last) && *tc) {
+ if (*ti == '\\' && ispunct(UChar(ti[1]))) {
+ ++ti;
+ if ((*ti == '^') && !strncmp(tc, "\\136", 4)) {
+ ti += 1;
+ tc += 4;
+ continue;
+ }
+ } else if (ti[0] == '$' && ti[1] == '<') {
+ double no_delay;
+ const char *ss = parse_ti_delay(ti, &no_delay);
+ if (ss != ti) {
+ *embedded = TRUE;
+ ti = ss;
+ continue;
+ }
+ }
+ if (*tc == '\\' && ispunct(UChar(tc[1]))) {
+ ++tc;
+ }
+ if (*ti++ != *tc++) {
+ same = FALSE;
+ break;
+ }
+ }
+
+ if (*embedded) {
+ if (same) {
+ same = FALSE;
+ } else {
+ *embedded = FALSE; /* report only one problem */
+ }
+ }
+
+ return same;
+}
+
+/*
+ * Check terminfo to termcap translation.
+ */
+static void
+check_infotocap(TERMTYPE2 *tp, int i, const char *value)
+{
+ const char *name = ExtStrname(tp, i, strnames);
+ int params = ((i < (int) SIZEOF(parametrized))
+ ? parametrized[i]
+ : ((*value == 'k')
+ ? 0
+ : has_params(value)));
+ int to_char = 0;
+ char *ti_value;
+ char *tc_value;
+ bool embedded;
+
+ assert(SIZEOF(parametrized) == STRCOUNT);
+ if ((ti_value = _nc_tic_expand(value, TRUE, to_char)) == ABSENT_STRING) {
+ _nc_warning("tic-expansion of %s failed", name);
+ } else if ((tc_value = _nc_infotocap(name, ti_value, params)) == ABSENT_STRING) {
+ _nc_warning("tic-conversion of %s failed", name);
+ } else if (params > 0) {
+ int limit = 5;
+ int count;
+ bool first = TRUE;
+
+ if (!strcmp(name, "setf")
+ || !strcmp(name, "setb")
+ || !strcmp(name, "setaf")
+ || !strcmp(name, "setab")) {
+ if ((limit = max_colors) > 16)
+ limit = 16;
+ }
+ for (count = 0; count < limit; ++count) {
+ char *ti_check = check_1_infotocap(name, ti_value, count);
+ char *tc_check = check_1_infotocap(name, tc_value, count);
+
+ if (strcmp(ti_check, tc_check)) {
+ if (first) {
+ fprintf(stderr, "check_infotocap(%s)\n", name);
+ fprintf(stderr, "...ti '%s'\n", ti_value);
+ fprintf(stderr, "...tc '%s'\n", tc_value);
+ first = FALSE;
+ }
+ _nc_warning("tparm-conversion of %s(%d) differs between\n\tterminfo %s\n\ttermcap %s",
+ name, count, ti_check, tc_check);
+ }
+ free(ti_check);
+ free(tc_check);
+ }
+ } else if (params == 0 && !same_ti_tc(ti_value, tc_value, &embedded)) {
+ if (embedded) {
+ _nc_warning("termcap equivalent of %s cannot use embedded delay", name);
+ } else {
+ _nc_warning("tic-conversion of %s changed value\n\tfrom %s\n\tto %s",
+ name, ti_value, tc_value);
+ }
+ }
}
static char *
@@ -1755,6 +2433,23 @@ ignore_delays(char *s)
return s;
}
+#define DATA(name) { #name }
+static const char sgr_names[][11] =
+{
+ DATA(none),
+ DATA(standout),
+ DATA(underline),
+ DATA(reverse),
+ DATA(blink),
+ DATA(dim),
+ DATA(bold),
+ DATA(invis),
+ DATA(protect),
+ DATA(altcharset),
+ ""
+};
+#undef DATA
+
/*
* An sgr string may contain several settings other than the one we're
* interested in, essentially sgr0 + rmacs + whatever. As long as the
@@ -1764,19 +2459,6 @@ ignore_delays(char *s)
static bool
similar_sgr(int num, char *a, char *b)
{
- static const char *names[] =
- {
- "none"
- ,"standout"
- ,"underline"
- ,"reverse"
- ,"blink"
- ,"dim"
- ,"bold"
- ,"invis"
- ,"protect"
- ,"altcharset"
- };
char *base_a = a;
char *base_b = b;
int delaying = 0;
@@ -1784,12 +2466,14 @@ similar_sgr(int num, char *a, char *b)
while (*b != 0) {
while (*a != *b) {
if (*a == 0) {
- if (b[0] == '$'
- && b[1] == '<') {
- _nc_warning("Did not find delay %s", _nc_visbuf(b));
+ if (num < 0) {
+ ;
+ } else if (b[0] == '$'
+ && b[1] == '<') {
+ _nc_warning("did not find delay %s", _nc_visbuf(b));
} else {
_nc_warning("checking sgr(%s) %s\n\tcompare to %s\n\tunmatched %s",
- names[num], _nc_visbuf2(1, base_a),
+ sgr_names[num], _nc_visbuf2(1, base_a),
_nc_visbuf2(2, base_b),
_nc_visbuf2(3, b));
}
@@ -1825,7 +2509,7 @@ similar_sgr(int num, char *a, char *b)
}
static char *
-check_sgr(TERMTYPE *tp, char *zero, int num, char *cap, const char *name)
+check_sgr(TERMTYPE2 *tp, char *zero, int num, char *cap, const char *name)
{
char *test;
@@ -1891,12 +2575,12 @@ typedef struct {
} NAME_VALUE;
static NAME_VALUE *
-get_fkey_list(TERMTYPE *tp)
+get_fkey_list(TERMTYPE2 *tp)
{
NAME_VALUE *result = typeMalloc(NAME_VALUE, NUM_STRINGS(tp) + 1);
const struct tinfo_fkeys *all_fkeys = _nc_tinfo_fkeys;
int used = 0;
- int j;
+ unsigned j;
if (result == 0)
failed("get_fkey_list");
@@ -1912,7 +2596,7 @@ get_fkey_list(TERMTYPE *tp)
}
#if NCURSES_XNAMES
for (j = STRCOUNT; j < NUM_STRINGS(tp); ++j) {
- const char *name = ExtStrname(tp, j, strnames);
+ const char *name = ExtStrname(tp, (int) j, strnames);
if (*name == 'k') {
result[used].keycode = -1;
result[used].name = name;
@@ -1936,41 +2620,45 @@ show_fkey_name(NAME_VALUE * data)
}
}
-/* other sanity-checks (things that we don't want in the normal
- * logic that reads a terminfo entry)
+/*
+ * 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).
*/
static void
-check_termtype(TERMTYPE *tp, bool literal)
+check_conflict(TERMTYPE2 *tp)
{
bool conflict = FALSE;
unsigned j, k;
- /*
- * 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).
- */
if (!(_nc_syntax == SYN_TERMCAP && capdump)) {
char *check = calloc((size_t) (NUM_STRINGS(tp) + 1), sizeof(char));
NAME_VALUE *given = get_fkey_list(tp);
if (check == 0)
- failed("check_termtype");
+ failed("check_conflict");
for (j = 0; given[j].keycode; ++j) {
const char *a = given[j].value;
bool first = TRUE;
+ if (!VALID_STRING(a))
+ continue;
+
for (k = j + 1; given[k].keycode; k++) {
const char *b = given[k].value;
+
+ if (!VALID_STRING(b))
+ continue;
if (check[k])
continue;
+
if (!_nc_capcmp(a, b)) {
check[j] = 1;
check[k] = 1;
if (first) {
if (!conflict) {
- _nc_warning("Conflicting key definitions (using the last)");
+ _nc_warning("conflicting key definitions (using the last)");
conflict = TRUE;
}
fprintf(stderr, "...");
@@ -1987,15 +2675,258 @@ check_termtype(TERMTYPE *tp, bool literal)
if (!first)
fprintf(stderr, "\n");
}
+#if NCURSES_XNAMES
+ if (using_extensions) {
+ /* *INDENT-OFF* */
+ static struct {
+ const char *xcurses;
+ const char *shifted;
+ } table[] = {
+ { "kDC", NULL },
+ { "kDN", "kind" },
+ { "kEND", NULL },
+ { "kHOM", NULL },
+ { "kLFT", NULL },
+ { "kNXT", NULL },
+ { "kPRV", NULL },
+ { "kRIT", NULL },
+ { "kUP", "kri" },
+ { NULL, NULL },
+ };
+ /* *INDENT-ON* */
+
+ /*
+ * SVr4 curses defines the "xcurses" names listed above except for
+ * the special cases in the "shifted" column. When using these
+ * names for xterm's extensions, that was confusing, and resulted
+ * in adding extended capabilities with "2" (shift) suffix. This
+ * check warns about unnecessary use of extensions for this quirk.
+ */
+ for (j = 0; given[j].keycode; ++j) {
+ const char *find = given[j].name;
+ int value;
+ char ch;
+
+ if (!VALID_STRING(given[j].value))
+ continue;
+
+ for (k = 0; table[k].xcurses; ++k) {
+ const char *test = table[k].xcurses;
+ size_t size = strlen(test);
+
+ if (!strncmp(find, test, size) && strcmp(find, test)) {
+ switch (sscanf(find + size, "%d%c", &value, &ch)) {
+ case 1:
+ if (value == 2) {
+ _nc_warning("expected '%s' rather than '%s'",
+ (table[k].shifted
+ ? table[k].shifted
+ : test), find);
+ } else if (value < 2 || value > 15) {
+ _nc_warning("expected numeric 2..15 '%s'", find);
+ }
+ break;
+ default:
+ _nc_warning("expected numeric suffix for '%s'", find);
+ break;
+ }
+ break;
+ }
+ }
+ }
+ }
+#endif
free(given);
free(check);
}
+}
+
+/*
+ * Exiting a video mode should not duplicate sgr0
+ */
+static void
+check_exit_attribute(const char *name, char *test, char *trimmed, char *untrimmed)
+{
+ if (VALID_STRING(test) && (trimmed != 0)) {
+ if (similar_sgr(-1, trimmed, test) ||
+ similar_sgr(-1, untrimmed, test)) {
+ _nc_warning("%s matches exit_attribute_mode", name);
+ }
+ }
+}
+
+/*
+ * Returns true if the string looks like a standard SGR string.
+ */
+static bool
+is_sgr_string(char *value)
+{
+ bool result = FALSE;
+
+ if (VALID_STRING(value)) {
+ int skip = csi_length(value);
+
+ if (skip) {
+ int ch;
+
+ result = TRUE;
+ value += skip;
+ while ((ch = UChar(*value++)) != '\0') {
+ if (isdigit(ch) || ch == ';') {
+ ;
+ } else if (ch == 'm' && *value == '\0') {
+ ;
+ } else {
+ result = FALSE;
+ break;
+ }
+ }
+ }
+ }
+ return result;
+}
+
+/*
+ * Check if the given capability contains a given SGR attribute.
+ */
+static void
+check_sgr_param(TERMTYPE2 *tp, int code, const char *name, char *value)
+{
+ if (VALID_STRING(value)) {
+ int ncv = ((code != 0) ? (1 << (code - 1)) : 0);
+ char *test = tgoto(value, 0, 0);
+ if (is_sgr_string(test)) {
+ int param = 0;
+ int count = 0;
+ int skips = 0;
+ int color = (value == set_a_foreground ||
+ value == set_a_background ||
+ value == set_foreground ||
+ value == set_background);
+ while (*test != 0) {
+ if (isdigit(UChar(*test))) {
+ param = 10 * param + (*test - '0');
+ ++count;
+ } else {
+ if (count) {
+ /*
+ * Avoid unnecessary warning for xterm 256color codes.
+ */
+ if (color && (param == 38 || param == 48))
+ skips = 3;
+ if ((skips-- <= 0) && (param == code))
+ break;
+ }
+ count = 0;
+ param = 0;
+ }
+ ++test;
+ }
+ if (count != 0 && param == code) {
+ if (code == 0 ||
+ no_color_video < 0 ||
+ !(no_color_video & ncv)) {
+ _nc_warning("\"%s\" SGR-attribute used in %s",
+ sgr_names[code],
+ name);
+ }
+ }
+ }
+ }
+}
+
+#if NCURSES_XNAMES
+static int
+standard_type(const char *name)
+{
+ int result = -1;
+ const struct name_table_entry *np;
+
+ if ((np = _nc_find_entry(name, _nc_get_hash_table(0))) != 0) {
+ result = np->nte_type;
+ }
+ return result;
+}
+
+static const char *
+name_of_type(int type)
+{
+ const char *result = "unknown";
+ switch (type) {
+ case BOOLEAN:
+ result = "boolean";
+ break;
+ case NUMBER:
+ result = "number";
+ break;
+ case STRING:
+ result = "string";
+ break;
+ }
+ return result;
+}
+
+static void
+check_user_capability_type(const char *name, int actual)
+{
+ if (lookup_user_capability(name) == 0) {
+ int expected = standard_type(name);
+ if (expected >= 0) {
+ _nc_warning("expected %s to be %s, but actually %s",
+ name,
+ name_of_type(actual),
+ name_of_type(expected)
+ );
+ } else if (*name != 'k') {
+ _nc_warning("undocumented %s capability %s",
+ name_of_type(actual),
+ name);
+ }
+ }
+}
+#endif
+
+/* other sanity-checks (things that we don't want in the normal
+ * logic that reads a terminfo entry)
+ */
+static void
+check_termtype(TERMTYPE2 *tp, bool literal)
+{
+ unsigned j;
+
+ check_conflict(tp);
for_each_string(j, tp) {
char *a = tp->Strings[j];
- if (VALID_STRING(a))
- check_params(tp, ExtStrname(tp, (int) j, strnames), a);
+ if (VALID_STRING(a)) {
+ const char *name = ExtStrname(tp, (int) j, strnames);
+ /*
+ * If we expect parameters, or if there might be parameters,
+ * check for consistent number of parameters.
+ */
+ if (j >= SIZEOF(parametrized) ||
+ is_user_capability(name) >= 0 ||
+ parametrized[j] > 0) {
+ check_params(tp, name, a, (j >= STRCOUNT));
+ }
+ check_delays(tp, ExtStrname(tp, (int) j, strnames), a);
+ if (capdump) {
+ check_infotocap(tp, (int) j, a);
+ }
+ }
+ }
+#if NCURSES_XNAMES
+ /* in extended mode, verify that each extension is expected type */
+ for_each_ext_boolean(j, tp) {
+ check_user_capability_type(ExtBoolname(tp, (int) j, strnames), BOOLEAN);
+ }
+ for_each_ext_number(j, tp) {
+ check_user_capability_type(ExtNumname(tp, (int) j, strnames), NUMBER);
+ }
+ for_each_ext_string(j, tp) {
+ check_user_capability_type(ExtStrname(tp, (int) j, strnames), STRING);
}
+#endif /* NCURSES_XNAMES */
check_acs(tp);
check_colors(tp);
@@ -2005,6 +2936,12 @@ check_termtype(TERMTYPE *tp, bool literal)
check_screen(tp);
/*
+ * These are probably both or none.
+ */
+ PAIRED(parm_index, parm_rindex);
+ PAIRED(parm_ich, parm_dch);
+
+ /*
* These may be mismatched because the terminal description relies on
* restoring the cursor visibility by resetting it.
*/
@@ -2059,7 +2996,7 @@ check_termtype(TERMTYPE *tp, bool literal)
if (_nc_syntax == SYN_TERMINFO)
_nc_warning("missing sgr string");
}
-
+#define CHECK_SGR0(name) check_exit_attribute(#name, name, check_sgr0, exit_attribute_mode)
if (PRESENT(exit_attribute_mode)) {
char *check_sgr0 = _nc_trim_sgr0(tp);
@@ -2072,13 +3009,27 @@ check_termtype(TERMTYPE *tp, bool literal)
("will trim sgr0\n\toriginal sgr0=%s\n\ttrimmed sgr0=%s",
_nc_visbuf2(1, exit_attribute_mode),
_nc_visbuf2(2, check_sgr0)));
- free(check_sgr0);
} else {
DEBUG(2,
("will not trim sgr0\n\toriginal sgr0=%s",
_nc_visbuf(exit_attribute_mode)));
}
}
+#if defined(exit_italics_mode)
+ CHECK_SGR0(exit_italics_mode);
+#endif
+ CHECK_SGR0(exit_standout_mode);
+ CHECK_SGR0(exit_underline_mode);
+ if (check_sgr0 != exit_attribute_mode) {
+ free(check_sgr0);
+ }
+ }
+#define CHECK_SGR_PARAM(code, name) check_sgr_param(tp, (int)code, #name, name)
+ for (j = 0; *sgr_names[j] != '\0'; ++j) {
+ CHECK_SGR_PARAM(j, set_a_foreground);
+ CHECK_SGR_PARAM(j, set_a_background);
+ CHECK_SGR_PARAM(j, set_foreground);
+ CHECK_SGR_PARAM(j, set_background);
}
#ifdef TRACE
show_where(2);
@@ -2105,7 +3056,7 @@ check_termtype(TERMTYPE *tp, bool literal)
* ncurses handles it.
*/
if ((PRESENT(enter_insert_mode) || PRESENT(exit_insert_mode))
- && PRESENT(parm_ich)) {
+ && PRESENT(insert_character)) {
_nc_warning("non-curses applications may be confused by ich1 with smir/rmir");
}
diff --git a/progs/toe.c b/progs/toe.c
index 0d299b457dfb..7b9f79ad6d8d 100644
--- a/progs/toe.c
+++ b/progs/toe.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -44,7 +44,7 @@
#include <hashed_db.h>
#endif
-MODULE_ID("$Id: toe.c,v 1.74 2013/12/15 01:08:28 tom Exp $")
+MODULE_ID("$Id: toe.c,v 1.78 2018/11/17 22:41:46 tom Exp $")
#define isDotname(name) (!strcmp(name, ".") || !strcmp(name, ".."))
@@ -252,10 +252,10 @@ make_db_name(char *dst, const char *src, unsigned limit)
typedef void (DescHook) (int /* db_index */ ,
int /* db_limit */ ,
const char * /* term_name */ ,
- TERMTYPE * /* term */ );
+ TERMTYPE2 * /* term */ );
static const char *
-term_description(TERMTYPE *tp)
+term_description(TERMTYPE2 *tp)
{
const char *desc;
@@ -270,7 +270,7 @@ term_description(TERMTYPE *tp)
/* display a description for the type */
static void
-deschook(int db_index, int db_limit, const char *term_name, TERMTYPE *tp)
+deschook(int db_index, int db_limit, const char *term_name, TERMTYPE2 *tp)
{
(void) db_index;
(void) db_limit;
@@ -294,7 +294,7 @@ string_sum(const char *value)
}
static unsigned long
-checksum_of(TERMTYPE *tp)
+checksum_of(TERMTYPE2 *tp)
{
unsigned long result = string_sum(tp->term_names);
unsigned i;
@@ -313,7 +313,7 @@ checksum_of(TERMTYPE *tp)
/* collect data, to sort before display */
static void
-sorthook(int db_index, int db_limit, const char *term_name, TERMTYPE *tp)
+sorthook(int db_index, int db_limit, const char *term_name, TERMTYPE2 *tp)
{
TERMDATA *data = new_termdata();
@@ -327,7 +327,7 @@ sorthook(int db_index, int db_limit, const char *term_name, TERMTYPE *tp)
static void
show_termcap(int db_index, int db_limit, char *buffer, DescHook hook)
{
- TERMTYPE data;
+ TERMTYPE2 data;
char *next = strchr(buffer, ':');
char *last;
char *list = buffer;
@@ -424,7 +424,7 @@ typelist(int eargc, char *eargv[],
}
while ((entry = readdir(entrydir)) != 0) {
char *name_2;
- TERMTYPE lterm;
+ TERMTYPE2 lterm;
char *cn;
int status;
@@ -440,11 +440,8 @@ typelist(int eargc, char *eargv[],
(void) fprintf(stderr,
"%s: couldn't open terminfo file %s.\n",
_nc_progname, name_2);
- free(cwd_buf);
free(name_2);
- closedir(entrydir);
- closedir(termdir);
- return (EXIT_FAILURE);
+ continue;
}
/* only visit things once, by primary name */
@@ -453,7 +450,7 @@ typelist(int eargc, char *eargv[],
/* apply the selected hook function */
hook(i, eargc, cn, &lterm);
}
- _nc_free_termtype(&lterm);
+ _nc_free_termtype2(&lterm);
free(name_2);
}
closedir(entrydir);
@@ -478,7 +475,7 @@ typelist(int eargc, char *eargv[],
code = _nc_db_first(capdbp, &key, &data);
while (code == 0) {
- TERMTYPE lterm;
+ TERMTYPE2 lterm;
int used;
char *have;
char *cn;
@@ -489,7 +486,7 @@ typelist(int eargc, char *eargv[],
cn = _nc_first_name(lterm.term_names);
/* apply the selected hook function */
hook(i, eargc, cn, &lterm);
- _nc_free_termtype(&lterm);
+ _nc_free_termtype2(&lterm);
}
}
code = _nc_db_next(capdbp, &key, &data);
@@ -500,8 +497,8 @@ typelist(int eargc, char *eargv[],
}
}
}
-#endif
-#endif
+#endif /* USE_HASHED_DB */
+#endif /* NCURSES_USE_DATABASE */
#if NCURSES_USE_TERMCAP
#if HAVE_BSD_CGETENT
{
@@ -703,6 +700,8 @@ main(int argc, char *argv[])
_nc_first_db(&state, &offset);
while ((path = _nc_next_db(&state, &offset)) != 0) {
+ if (quick_prefix(path))
+ continue;
if (pass) {
eargv[count] = strmalloc(path);
}
@@ -728,7 +727,8 @@ main(int argc, char *argv[])
failed("eargv");
_nc_first_db(&state, &offset);
if ((path = _nc_next_db(&state, &offset)) != 0) {
- eargv[count++] = strmalloc(path);
+ if (!quick_prefix(path))
+ eargv[count++] = strmalloc(path);
}
code = typelist((int) count, eargv, header, hook);
diff --git a/progs/tparm_type.c b/progs/tparm_type.c
new file mode 100644
index 000000000000..125e43c26179
--- /dev/null
+++ b/progs/tparm_type.c
@@ -0,0 +1,71 @@
+/****************************************************************************
+ * Copyright (c) 1998-2013,2015 Free 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 *
+ ****************************************************************************/
+
+#include <tparm_type.h>
+
+MODULE_ID("$Id: tparm_type.c,v 1.2 2015/04/04 15:01:13 tom Exp $")
+
+/*
+ * Lookup the type of call we should make to tparm(). This ignores the actual
+ * terminfo capability (bad, because it is not extensible), but makes this
+ * code portable to platforms where sizeof(int) != sizeof(char *).
+ */
+TParams
+tparm_type(const char *name)
+{
+#define TD(code, longname, ti, tc) \
+ {code, {longname} }, \
+ {code, {ti} }, \
+ {code, {tc} }
+ TParams result = Numbers;
+ /* *INDENT-OFF* */
+ static const struct {
+ TParams code;
+ const char name[12];
+ } table[] = {
+ TD(Num_Str, "pkey_key", "pfkey", "pk"),
+ TD(Num_Str, "pkey_local", "pfloc", "pl"),
+ TD(Num_Str, "pkey_xmit", "pfx", "px"),
+ TD(Num_Str, "plab_norm", "pln", "pn"),
+ TD(Num_Str_Str, "pkey_plab", "pfxl", "xl"),
+ };
+ /* *INDENT-ON* */
+
+ unsigned n;
+ for (n = 0; n < SIZEOF(table); n++) {
+ if (!strcmp(name, table[n].name)) {
+ result = table[n].code;
+ break;
+ }
+ }
+ return result;
+}
diff --git a/progs/tparm_type.h b/progs/tparm_type.h
new file mode 100644
index 000000000000..d1431683ad45
--- /dev/null
+++ b/progs/tparm_type.h
@@ -0,0 +1,52 @@
+/****************************************************************************
+ * Copyright (c) 2014 Free 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 *
+ ****************************************************************************/
+
+/*
+ * $Id: tparm_type.h,v 1.1 2014/05/21 16:57:56 tom Exp $
+ *
+ * determine expected/actual number of parameters to setup for tparm
+ */
+#ifndef TPARM_TYPE_H
+#define TPARM_TYPE_H 1
+
+#define USE_LIBTINFO
+#include <progs.priv.h>
+
+typedef enum {
+ Numbers = 0
+ ,Num_Str
+ ,Num_Str_Str
+} TParams;
+
+extern TParams tparm_type(const char *name);
+
+#endif /* TPARM_TYPE_H */
diff --git a/progs/tput.c b/progs/tput.c
index 6652d3450a2d..da90dcf07be2 100644
--- a/progs/tput.c
+++ b/progs/tput.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,6 +29,7 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996-on *
****************************************************************************/
/*
@@ -38,30 +39,27 @@
* Ross Ridge's mytinfo package.
*/
-#define USE_LIBTINFO
-#include <progs.priv.h>
+#include <tparm_type.h>
+#include <clear_cmd.h>
+#include <reset_cmd.h>
#if !PURE_TERMINFO
#include <dump_entry.h>
#include <termsort.c>
#endif
#include <transform.h>
+#include <tty_settings.h>
-MODULE_ID("$Id: tput.c,v 1.49 2013/09/28 20:57:25 tom Exp $")
+MODULE_ID("$Id: tput.c,v 1.80 2019/07/28 18:18:41 tom Exp $")
#define PUTS(s) fputs(s, stdout)
-#define PUTCHAR(c) putchar(c)
-#define FLUSH fflush(stdout)
-typedef enum {
- Numbers = 0
- ,Num_Str
- ,Num_Str_Str
-} TParams;
+const char *_nc_progname = "tput";
static char *prg_name;
static bool is_init = FALSE;
static bool is_reset = FALSE;
+static bool is_clear = FALSE;
static void
quit(int status, const char *fmt,...)
@@ -79,47 +77,42 @@ quit(int status, const char *fmt,...)
static void
usage(void)
{
- fprintf(stderr, "usage: %s [-V] [-S] [-T term] capname\n", prg_name);
- ExitProgram(EXIT_FAILURE);
+#define KEEP(s) s "\n"
+ static const char msg[] =
+ {
+ KEEP("")
+ KEEP("Options:")
+ KEEP(" -S << read commands from standard input")
+ KEEP(" -T TERM use this instead of $TERM")
+ KEEP(" -V print curses-version")
+ KEEP(" -x do not try to clear scrollback")
+ KEEP("")
+ KEEP("Commands:")
+ KEEP(" clear clear the screen")
+ KEEP(" init initialize the terminal")
+ KEEP(" reset reinitialize the terminal")
+ KEEP(" capname unlike clear/init/reset, print value for capability \"capname\"")
+ };
+#undef KEEP
+ (void) fprintf(stderr, "Usage: %s [options] [command]\n", prg_name);
+ fputs(msg, stderr);
+ ExitProgram(ErrUsage);
}
-static void
-check_aliases(const char *name)
+static char *
+check_aliases(char *name, bool program)
{
- is_init = same_program(name, PROG_INIT);
- is_reset = same_program(name, PROG_RESET);
-}
-
-/*
- * Lookup the type of call we should make to tparm(). This ignores the actual
- * terminfo capability (bad, because it is not extensible), but makes this
- * code portable to platforms where sizeof(int) != sizeof(char *).
- */
-static TParams
-tparm_type(const char *name)
-{
-#define TD(code, longname, ti, tc) {code,longname},{code,ti},{code,tc}
- TParams result = Numbers;
- /* *INDENT-OFF* */
- static const struct {
- TParams code;
- const char *name;
- } table[] = {
- TD(Num_Str, "pkey_key", "pfkey", "pk"),
- TD(Num_Str, "pkey_local", "pfloc", "pl"),
- TD(Num_Str, "pkey_xmit", "pfx", "px"),
- TD(Num_Str, "plab_norm", "pln", "pn"),
- TD(Num_Str_Str, "pkey_plab", "pfxl", "xl"),
- };
- /* *INDENT-ON* */
-
- unsigned n;
- for (n = 0; n < SIZEOF(table); n++) {
- if (!strcmp(name, table[n].name)) {
- result = table[n].code;
- break;
- }
- }
+ static char my_init[] = "init";
+ static char my_reset[] = "reset";
+ static char my_clear[] = "clear";
+
+ char *result = name;
+ if ((is_init = same_program(name, program ? PROG_INIT : my_init)))
+ result = my_init;
+ if ((is_reset = same_program(name, program ? PROG_RESET : my_reset)))
+ result = my_reset;
+ if ((is_clear = same_program(name, program ? PROG_CLEAR : my_clear)))
+ result = my_clear;
return result;
}
@@ -142,121 +135,46 @@ exit_code(int token, int value)
return result;
}
+/*
+ * Returns nonzero on error.
+ */
static int
-tput(int argc, char *argv[])
+tput_cmd(int fd, TTY * saved_settings, bool opt_x, int argc, char *argv[])
{
NCURSES_CONST char *name;
char *s;
- int i, j, c;
int status;
- FILE *f;
#if !PURE_TERMINFO
bool termcap = FALSE;
#endif
- if ((name = argv[0]) == 0)
- name = "";
- check_aliases(name);
+ name = check_aliases(argv[0], FALSE);
if (is_reset || is_init) {
- if (init_prog != 0) {
- system(init_prog);
- }
- FLUSH;
+ TTY oldmode;
- if (is_reset && reset_1string != 0) {
- PUTS(reset_1string);
- } else if (init_1string != 0) {
- PUTS(init_1string);
- }
- FLUSH;
+ int terasechar = -1; /* new erase character */
+ int intrchar = -1; /* new interrupt character */
+ int tkillchar = -1; /* new kill character */
- if (is_reset && reset_2string != 0) {
- PUTS(reset_2string);
- } else if (init_2string != 0) {
- PUTS(init_2string);
+ if (is_reset) {
+ reset_start(stdout, TRUE, FALSE);
+ reset_tty_settings(fd, saved_settings);
+ } else {
+ reset_start(stdout, FALSE, TRUE);
}
- FLUSH;
-#ifdef set_lr_margin
- if (set_lr_margin != 0) {
- PUTS(TPARM_2(set_lr_margin, 0, columns - 1));
- } else
+#if HAVE_SIZECHANGE
+ set_window_size(fd, &lines, &columns);
+#else
+ (void) fd;
#endif
-#ifdef set_left_margin_parm
- if (set_left_margin_parm != 0
- && set_right_margin_parm != 0) {
- PUTS(TPARM_1(set_left_margin_parm, 0));
- PUTS(TPARM_1(set_right_margin_parm, columns - 1));
- } else
-#endif
- 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_1(parm_right_cursor, columns - 1));
- } else {
- for (i = 0; i < columns - 1; i++) {
- PUTCHAR(' ');
- }
- }
- 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_1(parm_right_cursor, 8));
- } else {
- for (j = 0; j < 8; j++)
- PUTCHAR(' ');
- }
- PUTS(set_tab);
- }
- FLUSH;
- }
+ set_control_chars(saved_settings, terasechar, intrchar, tkillchar);
+ set_conversions(saved_settings);
+ if (send_init_strings(fd, &oldmode)) {
+ reset_flush();
}
- if (is_reset && reset_file != 0) {
- f = fopen(reset_file, "r");
- if (f == 0) {
- quit(4 + 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(4 + errno, "Can't open init_file: '%s'", init_file);
- }
- while ((c = fgetc(f)) != EOF) {
- PUTCHAR(c);
- }
- fclose(f);
- }
- FLUSH;
-
- if (is_reset && reset_3string != 0) {
- PUTS(reset_3string);
- } else if (init_3string != 0) {
- PUTS(init_3string);
- }
- FLUSH;
+ update_tty_settings(&oldmode, saved_settings);
return 0;
}
@@ -267,7 +185,9 @@ tput(int argc, char *argv[])
#if !PURE_TERMINFO
retry:
#endif
- if ((status = tigetflag(name)) != -1) {
+ if (strcmp(name, "clear") == 0) {
+ return (clear_cmd(opt_x) == ERR) ? ErrUsage : 0;
+ } else if ((status = tigetflag(name)) != -1) {
return exit_code(BOOLEAN, status);
} else if ((status = tigetnum(name)) != CANCELLED_NUMERIC) {
(void) printf("%d\n", status);
@@ -281,26 +201,23 @@ tput(int argc, char *argv[])
if ((np = _nc_find_entry(name, _nc_get_hash_table(termcap))) != 0) {
switch (np->nte_type) {
case BOOLEAN:
- if (bool_from_termcap[np->nte_index])
- name = boolnames[np->nte_index];
+ name = boolnames[np->nte_index];
break;
case NUMBER:
- if (num_from_termcap[np->nte_index])
- name = numnames[np->nte_index];
+ name = numnames[np->nte_index];
break;
case STRING:
- if (str_from_termcap[np->nte_index])
- name = strnames[np->nte_index];
+ name = strnames[np->nte_index];
break;
}
goto retry;
}
}
#endif
- quit(4, "unknown terminfo capability '%s'", name);
- } else if (s != ABSENT_STRING) {
+ quit(ErrCapName, "unknown terminfo capability '%s'", name);
+ } else if (VALID_STRING(s)) {
if (argc > 1) {
int k;
int ignored;
@@ -313,7 +230,7 @@ tput(int argc, char *argv[])
* representations
*/
- for (k = 1; k < argc; k++) {
+ for (k = 1; (k < argc) && (k < NUM_PARM); k++) {
char *tmp = 0;
strings[k] = argv[k];
numbers[k] = strtol(argv[k], &tmp, 0);
@@ -366,33 +283,48 @@ main(int argc, char **argv)
int c;
char buf[BUFSIZ];
int result = 0;
+ int fd;
+ TTY tty_settings;
+ bool opt_x = FALSE; /* clear scrollback if possible */
+ bool is_alias;
+ bool need_tty;
- check_aliases(prg_name = _nc_rootname(argv[0]));
+ prg_name = check_aliases(_nc_rootname(argv[0]), TRUE);
term = getenv("TERM");
- while ((c = getopt(argc, argv, "ST:V")) != -1) {
+ while ((c = getopt(argc, argv, "ST:Vx")) != -1) {
switch (c) {
case 'S':
cmdline = FALSE;
break;
case 'T':
use_env(FALSE);
+ use_tioctl(TRUE);
term = optarg;
break;
case 'V':
puts(curses_version());
ExitProgram(EXIT_SUCCESS);
+ case 'x': /* do not try to clear scrollback */
+ opt_x = TRUE;
+ break;
default:
usage();
/* NOTREACHED */
}
}
+ is_alias = (is_clear || is_reset || is_init);
+ need_tty = ((is_reset || is_init) ||
+ (optind < argc &&
+ (!strcmp(argv[optind], "reset") ||
+ !strcmp(argv[optind], "init"))));
+
/*
* Modify the argument list to omit the options we processed.
*/
- if (is_reset || is_init) {
+ if (is_alias) {
if (optind-- < argc) {
argc -= optind;
argv += optind;
@@ -404,15 +336,17 @@ main(int argc, char **argv)
}
if (term == 0 || *term == '\0')
- quit(2, "No value for $TERM and no -T specified");
+ quit(ErrUsage, "No value for $TERM and no -T specified");
+
+ fd = save_tty_settings(&tty_settings, need_tty);
- if (setupterm(term, STDOUT_FILENO, &errret) != OK && errret <= 0)
- quit(3, "unknown terminal \"%s\"", term);
+ if (setupterm(term, fd, &errret) != OK && errret <= 0)
+ quit(ErrTermType, "unknown terminal \"%s\"", term);
if (cmdline) {
- if ((argc <= 0) && !is_reset && !is_init)
+ if ((argc <= 0) && !is_alias)
usage();
- ExitProgram(tput(argc, argv));
+ ExitProgram(tput_cmd(fd, &tty_settings, opt_x, argc, argv));
}
while (fgets(buf, sizeof(buf), stdin) != 0) {
@@ -433,9 +367,9 @@ main(int argc, char **argv)
argvec[argnum] = 0;
if (argnum != 0
- && tput(argnum, argvec) != 0) {
+ && tput_cmd(fd, &tty_settings, opt_x, argnum, argvec) != 0) {
if (result == 0)
- result = 4; /* will return value >4 */
+ result = ErrSystem(0); /* will return value >4 */
++result;
}
}
diff --git a/progs/tset.c b/progs/tset.c
index f01acd721091..10696e9da2d9 100644
--- a/progs/tset.c
+++ b/progs/tset.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -85,14 +85,10 @@
* SUCH DAMAGE.
*/
-#define USE_LIBTINFO
-#define __INTERNAL_CAPS_VISIBLE /* we need to see has_hardware_tabs */
-#include <progs.priv.h>
-
-#include <errno.h>
-#include <stdio.h>
+#include <reset_cmd.h>
#include <termcap.h>
-#include <fcntl.h>
+#include <transform.h>
+#include <tty_settings.h>
#if HAVE_GETTTYNAM && HAVE_TTYENT_H
#include <ttyent.h>
@@ -101,76 +97,18 @@
char *ttyname(int fd);
#endif
-#if HAVE_SIZECHANGE
-# if !defined(sun) || !TERMIOS
-# if HAVE_SYS_IOCTL_H
-# include <sys/ioctl.h>
-# endif
-# endif
-#endif
-
-#if NEED_PTEM_H
-/* they neglected to define struct winsize in termios.h -- it's only
- in termio.h */
-#include <sys/stream.h>
-#include <sys/ptem.h>
-#endif
-
-#include <dump_entry.h>
-#include <transform.h>
-
-MODULE_ID("$Id: tset.c,v 1.93 2013/12/15 01:05:56 tom Exp $")
-
-/*
- * SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS,
- * Solaris, IRIX) define TIOCGWINSZ and struct winsize.
- */
-#ifdef TIOCGSIZE
-# define IOCTL_GET_WINSIZE TIOCGSIZE
-# define IOCTL_SET_WINSIZE TIOCSSIZE
-# define STRUCT_WINSIZE struct ttysize
-# define WINSIZE_ROWS(n) n.ts_lines
-# define WINSIZE_COLS(n) n.ts_cols
-#else
-# ifdef TIOCGWINSZ
-# define IOCTL_GET_WINSIZE TIOCGWINSZ
-# define IOCTL_SET_WINSIZE TIOCSWINSZ
-# define STRUCT_WINSIZE struct winsize
-# define WINSIZE_ROWS(n) n.ws_row
-# define WINSIZE_COLS(n) n.ws_col
-# endif
-#endif
+MODULE_ID("$Id: tset.c,v 1.120 2017/10/08 00:01:29 tom Exp $")
#ifndef environ
extern char **environ;
#endif
-#undef CTRL
-#define CTRL(x) ((x) & 0x1f)
-
-static void failed(const char *) GCC_NORETURN;
-static void exit_error(void) GCC_NORETURN;
-static void err(const char *,...) GCC_NORETURN;
-
const char *_nc_progname = "tset";
-static TTY mode, oldmode, original;
-
-static bool opt_c; /* set control-chars */
-static bool opt_w; /* set window-size */
-
-static bool can_restore = FALSE;
-static bool isreset = FALSE; /* invoked as reset */
-static int terasechar = -1; /* new erase character */
-static int intrchar = -1; /* new interrupt character */
-static int tkillchar = -1; /* new kill character */
-
-#if HAVE_SIZECHANGE
-static int tlines, tcolumns; /* window size */
-#endif
-
#define LOWERCASE(c) ((isalpha(UChar(c)) && isupper(UChar(c))) ? tolower(UChar(c)) : (c))
+static void exit_error(void) GCC_NORETURN;
+
static int
CaselessCmp(const char *a, const char *b)
{ /* strcasecmp isn't portable */
@@ -186,8 +124,7 @@ CaselessCmp(const char *a, const char *b)
static void
exit_error(void)
{
- if (can_restore)
- SET_TTY(STDERR_FILENO, &original);
+ restore_tty_settings();
(void) fprintf(stderr, "\n");
fflush(stderr);
ExitProgram(EXIT_FAILURE);
@@ -218,33 +155,12 @@ failed(const char *msg)
} else {
_nc_STRCPY(temp, "tset: ", sizeof(temp));
}
- perror(strncat(temp, msg, sizeof(temp) - strlen(temp) - 2));
+ _nc_STRNCAT(temp, msg, sizeof(temp), sizeof(temp) - strlen(temp) - 2);
+ perror(temp);
exit_error();
/* NOTREACHED */
}
-static void
-cat(char *file)
-{
- FILE *fp;
- size_t nr;
- char buf[BUFSIZ];
-
- if ((fp = fopen(file, "r")) == 0)
- failed(file);
-
- while ((nr = fread(buf, sizeof(char), sizeof(buf), fp)) != 0)
- if (fwrite(buf, sizeof(char), nr, stderr) != nr)
- failed("write to stderr");
- fclose(fp);
-}
-
-static int
-outc(int c)
-{
- return putc(c, stderr);
-}
-
/* Prompt the user for a terminal type. */
static const char *
askuser(const char *dflt)
@@ -307,87 +223,135 @@ typedef struct map {
static MAP *cur, *maplist;
+#define DATA(name,value) { { name }, value }
+
typedef struct speeds {
- const char *string;
+ const char string[7];
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},
+ DATA("0", B0),
+ DATA("50", B50),
+ DATA("75", B75),
+ DATA("110", B110),
+ DATA("134", B134),
+ DATA("134.5", B134),
+ DATA("150", B150),
+ DATA("200", B200),
+ DATA("300", B300),
+ DATA("600", B600),
+ DATA("1200", B1200),
+ DATA("1800", B1800),
+ DATA("2400", B2400),
+ DATA("4800", B4800),
+ DATA("9600", B9600),
/* sgttyb may define up to this point */
#ifdef B19200
- {"19200", B19200},
+ DATA("19200", B19200),
#endif
#ifdef B38400
- {"38400", B38400},
+ DATA("38400", B38400),
#endif
#ifdef B19200
- {"19200", B19200},
+ DATA("19200", B19200),
#endif
#ifdef B38400
- {"38400", B38400},
+ DATA("38400", B38400),
#endif
#ifdef B19200
- {"19200", B19200},
+ DATA("19200", B19200),
#else
#ifdef EXTA
- {"19200", EXTA},
+ DATA("19200", EXTA),
#endif
#endif
#ifdef B38400
- {"38400", B38400},
+ DATA("38400", B38400),
#else
#ifdef EXTB
- {"38400", EXTB},
+ DATA("38400", EXTB),
#endif
#endif
#ifdef B57600
- {"57600", B57600},
+ DATA("57600", B57600),
+#endif
+#ifdef B76800
+ DATA("76800", B57600),
#endif
#ifdef B115200
- {"115200", B115200},
+ DATA("115200", B115200),
+#endif
+#ifdef B153600
+ DATA("153600", B153600),
#endif
#ifdef B230400
- {"230400", B230400},
+ DATA("230400", B230400),
+#endif
+#ifdef B307200
+ DATA("307200", B307200),
#endif
#ifdef B460800
- {"460800", B460800},
+ DATA("460800", B460800),
+#endif
+#ifdef B500000
+ DATA("500000", B500000),
+#endif
+#ifdef B576000
+ DATA("576000", B576000),
+#endif
+#ifdef B921600
+ DATA("921600", B921600),
+#endif
+#ifdef B1000000
+ DATA("1000000", B1000000),
+#endif
+#ifdef B1152000
+ DATA("1152000", B1152000),
+#endif
+#ifdef B1500000
+ DATA("1500000", B1500000),
+#endif
+#ifdef B2000000
+ DATA("2000000", B2000000),
+#endif
+#ifdef B2500000
+ DATA("2500000", B2500000),
+#endif
+#ifdef B3000000
+ DATA("3000000", B3000000),
+#endif
+#ifdef B3500000
+ DATA("3500000", B3500000),
+#endif
+#ifdef B4000000
+ DATA("4000000", B4000000),
#endif
- {(char *) 0, 0}
};
+#undef DATA
static int
tbaudrate(char *rate)
{
- const SPEEDS *sp;
- int found = FALSE;
+ const SPEEDS *sp = 0;
+ size_t n;
/* 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;
+ for (n = 0; n < SIZEOF(speeds); ++n) {
+ if (n > 0 && (speeds[n].speed <= speeds[n - 1].speed)) {
+ /* if the speeds are not increasing, likely a numeric overflow */
+ break;
+ }
+ if (!CaselessCmp(rate, speeds[n].string)) {
+ sp = speeds + n;
break;
}
}
- if (!found)
+ if (sp == 0)
err("unknown baud rate %s", rate);
return (sp->speed);
}
@@ -566,7 +530,7 @@ mapped(const char *type)
* its termcap entry.
*/
static const char *
-get_termcap_entry(char *userarg)
+get_termcap_entry(int fd, char *userarg)
{
int errret;
char *p;
@@ -578,6 +542,8 @@ get_termcap_entry(char *userarg)
#endif
char *ttypath;
+ (void) fd;
+
if (userarg) {
ttype = userarg;
goto found;
@@ -587,7 +553,7 @@ get_termcap_entry(char *userarg)
if ((ttype = getenv("TERM")) != 0)
goto map;
- if ((ttypath = ttyname(STDERR_FILENO)) != 0) {
+ if ((ttypath = ttyname(fd)) != 0) {
p = _nc_basename(ttypath);
#if HAVE_GETTTYNAM
/*
@@ -662,7 +628,7 @@ get_termcap_entry(char *userarg)
ttype = askuser(0);
}
/* Find the terminfo entry. If it doesn't exist, ask the user. */
- while (setupterm((NCURSES_CONST char *) ttype, STDOUT_FILENO, &errret)
+ while (setupterm((NCURSES_CONST char *) ttype, fd, &errret)
!= OK) {
if (errret == 0) {
(void) fprintf(stderr, "%s: unknown terminal type %s\n",
@@ -684,453 +650,11 @@ get_termcap_entry(char *userarg)
/**************************************************************************
*
- * Mode-setting logic
- *
- **************************************************************************/
-
-/* some BSD systems have these built in, some systems are missing
- * one or more definitions. The safest solution is to override unless the
- * commonly-altered ones are defined.
- */
-#if !(defined(CERASE) && defined(CINTR) && defined(CKILL) && defined(CQUIT))
-#undef CEOF
-#undef CERASE
-#undef CINTR
-#undef CKILL
-#undef CLNEXT
-#undef CRPRNT
-#undef CQUIT
-#undef CSTART
-#undef CSTOP
-#undef CSUSP
-#endif
-
-/* control-character defaults */
-#ifndef CEOF
-#define CEOF CTRL('D')
-#endif
-#ifndef CERASE
-#define CERASE CTRL('H')
-#endif
-#ifndef CINTR
-#define CINTR 127 /* ^? */
-#endif
-#ifndef CKILL
-#define CKILL CTRL('U')
-#endif
-#ifndef CLNEXT
-#define CLNEXT CTRL('v')
-#endif
-#ifndef CRPRNT
-#define CRPRNT CTRL('r')
-#endif
-#ifndef CQUIT
-#define CQUIT CTRL('\\')
-#endif
-#ifndef CSTART
-#define CSTART CTRL('Q')
-#endif
-#ifndef CSTOP
-#define CSTOP CTRL('S')
-#endif
-#ifndef CSUSP
-#define CSUSP CTRL('Z')
-#endif
-
-#if defined(_POSIX_VDISABLE)
-#define DISABLED(val) (((_POSIX_VDISABLE != -1) \
- && ((val) == _POSIX_VDISABLE)) \
- || ((val) <= 0))
-#else
-#define DISABLED(val) ((int)(val) <= 0)
-#endif
-
-#define CHK(val, dft) (DISABLED(val) ? dft : val)
-
-static bool set_tabs(void);
-
-/*
- * Reset the terminal mode bits to a sensible state. Very useful after
- * a child program dies in raw mode.
- */
-static void
-reset_mode(void)
-{
-#ifdef TERMIOS
- tcgetattr(STDERR_FILENO, &mode);
-#else
- stty(STDERR_FILENO, &mode);
-#endif
-
-#ifdef TERMIOS
-#if defined(VDISCARD) && defined(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);
-#if defined(VFLUSH) && defined(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);
-#if defined(VLNEXT) && defined(CLNEXT)
- mode.c_cc[VLNEXT] = CHK(mode.c_cc[VLNEXT], CLNEXT);
-#endif
- 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);
-#endif
-#if defined(VSTART) && defined(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);
-#endif
-#if defined(VSUSP) && defined(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);
-#endif
-
- mode.c_iflag &= ~((unsigned) (IGNBRK | PARMRK | INPCK | ISTRIP | INLCR | IGNCR
-#ifdef IUCLC
- | IUCLC
-#endif
-#ifdef IXANY
- | IXANY
-#endif
- | IXOFF));
-
- mode.c_iflag |= (BRKINT | IGNPAR | ICRNL | IXON
-#ifdef IMAXBEL
- | IMAXBEL
-#endif
- );
-
- mode.c_oflag &= ~((unsigned) (0
-#ifdef OLCUC
- | OLCUC
-#endif
-#ifdef OCRNL
- | OCRNL
-#endif
-#ifdef ONOCR
- | ONOCR
-#endif
-#ifdef ONLRET
- | ONLRET
-#endif
-#ifdef OFILL
- | OFILL
-#endif
-#ifdef OFDEL
- | OFDEL
-#endif
-#ifdef NLDLY
- | NLDLY
-#endif
-#ifdef CRDLY
- | CRDLY
-#endif
-#ifdef TABDLY
- | TABDLY
-#endif
-#ifdef BSDLY
- | BSDLY
-#endif
-#ifdef VTDLY
- | VTDLY
-#endif
-#ifdef FFDLY
- | FFDLY
-#endif
- ));
-
- mode.c_oflag |= (OPOST
-#ifdef ONLCR
- | ONLCR
-#endif
- );
-
- mode.c_cflag &= ~((unsigned) (CSIZE | CSTOPB | PARENB | PARODD | CLOCAL));
- mode.c_cflag |= (CS8 | CREAD);
- mode.c_lflag &= ~((unsigned) (ECHONL | NOFLSH
-#ifdef TOSTOP
- | TOSTOP
-#endif
-#ifdef ECHOPTR
- | ECHOPRT
-#endif
-#ifdef XCASE
- | XCASE
-#endif
- ));
-
- mode.c_lflag |= (ISIG | ICANON | ECHO | ECHOE | ECHOK
-#ifdef ECHOCTL
- | ECHOCTL
-#endif
-#ifdef ECHOKE
- | ECHOKE
-#endif
- );
-#endif
-
- SET_TTY(STDERR_FILENO, &mode);
-}
-
-/*
- * Returns a "good" value for the erase character. This is loosely based on
- * the BSD4.4 logic.
- */
-#ifdef TERMIOS
-static int
-default_erase(void)
-{
- int result;
-
- if (over_strike
- && key_backspace != 0
- && strlen(key_backspace) == 1)
- result = key_backspace[0];
- else
- result = CERASE;
-
- return result;
-}
-#endif
-
-/*
- * Update the values of the erase, interrupt, and kill characters in 'mode'.
- *
- * SVr4 tset (e.g., Solaris 2.5) only modifies the intr, quit or erase
- * characters if they're unset, or if we specify them as options. This differs
- * from BSD 4.4 tset, which always sets erase.
- */
-static void
-set_control_chars(void)
-{
-#ifdef TERMIOS
- if (DISABLED(mode.c_cc[VERASE]) || terasechar >= 0) {
- mode.c_cc[VERASE] = UChar((terasechar >= 0)
- ? terasechar
- : default_erase());
- }
-
- if (DISABLED(mode.c_cc[VINTR]) || intrchar >= 0) {
- mode.c_cc[VINTR] = UChar((intrchar >= 0)
- ? intrchar
- : CINTR);
- }
-
- if (DISABLED(mode.c_cc[VKILL]) || tkillchar >= 0) {
- mode.c_cc[VKILL] = UChar((tkillchar >= 0)
- ? tkillchar
- : CKILL);
- }
-#endif
-}
-
-/*
- * Set up various conversions in 'mode', including parity, tabs, returns,
- * echo, and case, according to the termcap entry. If the program we're
- * running was named with a leading upper-case character, map external
- * uppercase to internal lowercase.
- */
-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")) {
-#ifdef IUCLC
- mode.c_iflag |= IUCLC;
- mode.c_oflag |= OLCUC;
-#endif
- } else if (tgetflag("LC")) {
-#ifdef IUCLC
- 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;
- }
-#endif /* __OBSOLETE__ */
-
-#ifdef TERMIOS
-#ifdef ONLCR
- mode.c_oflag |= ONLCR;
-#endif
- mode.c_iflag |= ICRNL;
- mode.c_lflag |= ECHO;
-#ifdef 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. */
-#ifdef ONLCR
- mode.c_oflag &= ~((unsigned) ONLCR);
-#endif
- mode.c_iflag &= ~((unsigned) ICRNL);
- }
-#ifdef __OBSOLETE__
- 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;
-#endif /* OXTABS */
- mode.c_lflag |= (ECHOE | ECHOK);
-#endif
-}
-
-/* Output startup string. */
-static void
-set_init(void)
-{
- char *p;
- bool settle;
-
-#ifdef __OBSOLETE__
- 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);
- SET_TTY(STDERR_FILENO, &oldmode);
- }
-#endif
- 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 (settle) {
- (void) putc('\r', stderr);
- (void) fflush(stderr);
- (void) napms(1000); /* Settle the terminal. */
- }
-}
-
-/*
- * Set the hardware tabs on the terminal, using the ct (clear all tabs),
- * st (set one tab) and ch (horizontal cursor addressing) capabilities.
- * This is done before if and is, so they can patch in case we blow this.
- * Return TRUE if we set any tab stops, FALSE if not.
- */
-static bool
-set_tabs(void)
-{
- if (set_tab && clear_all_tabs) {
- int c;
- int lim =
-#if HAVE_SIZECHANGE
- tcolumns
-#else
- columns
-#endif
- ;
-
- (void) putc('\r', stderr); /* Force to left margin. */
- tputs(clear_all_tabs, 0, outc);
-
- for (c = 8; c < lim; 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 than .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);
- }
- return (FALSE);
-}
-
-/**************************************************************************
- *
* Main sequence
*
**************************************************************************/
/*
- * Tell the user if a control key has been changed from the default value.
- */
-#ifdef TERMIOS
-static void
-report(const char *name, int which, unsigned def)
-{
- 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");
-
- if (DISABLED(newer))
- (void) fprintf(stderr, "undef.\n");
- /*
- * Check 'delete' before 'backspace', since the key_backspace value
- * is ambiguous.
- */
- else 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", UChar(newer), UChar(newer));
- } else
- (void) fprintf(stderr, "%c.\n", UChar(newer));
-}
-#endif
-
-/*
* Convert the obsolete argument forms into something that getopt can handle.
* This means that -e, -i and -k get default arguments supplied for them.
*/
@@ -1165,29 +689,58 @@ obsolete(char **argv)
}
static void
+print_shell_commands(const char *ttype)
+{
+ const char *p;
+ int len;
+ char *var;
+ char *leaf;
+ /*
+ * Figure out what shell we're using. A hack, we look for an
+ * environmental variable SHELL ending in "csh".
+ */
+ if ((var = getenv("SHELL")) != 0
+ && ((len = (int) strlen(leaf = _nc_basename(var))) >= 3)
+ && !strcmp(leaf + len - 3, "csh"))
+ p = "set noglob;\nsetenv TERM %s;\nunset noglob;\n";
+ else
+ p = "TERM=%s;\n";
+ (void) printf(p, ttype);
+}
+
+static void
usage(void)
{
- static const char *tbl[] =
+#define SKIP(s) /* nothing */
+#define KEEP(s) s "\n"
+ static const char msg[] =
{
- ""
- ,"Options:"
- ," -c set control characters"
- ," -e ch erase character"
- ," -I no initialization strings"
- ," -i ch interrupt character"
- ," -k ch kill character"
- ," -m mapping map identifier to type"
- ," -Q do not output control key settings"
- ," -r display term on stderr"
- ," -s output TERM set command"
- ," -V print curses-version"
- ," -w set window-size"
+ KEEP("")
+ KEEP("Options:")
+ SKIP(" -a arpanet (obsolete)")
+ KEEP(" -c set control characters")
+ SKIP(" -d dialup (obsolete)")
+ KEEP(" -e ch erase character")
+ KEEP(" -I no initialization strings")
+ KEEP(" -i ch interrupt character")
+ KEEP(" -k ch kill character")
+ KEEP(" -m mapping map identifier to type")
+ SKIP(" -p plugboard (obsolete)")
+ KEEP(" -Q do not output control key settings")
+ KEEP(" -q display term only, do no changes")
+ KEEP(" -r display term on stderr")
+ SKIP(" -S (obsolete)")
+ KEEP(" -s output TERM set command")
+ KEEP(" -V print curses-version")
+ KEEP(" -w set window-size")
+ KEEP("")
+ KEEP("If neither -c/-w are given, both are assumed.")
};
- unsigned n;
+#undef KEEP
+#undef SKIP
(void) fprintf(stderr, "Usage: %s [options] [terminal]\n", _nc_progname);
- for (n = 0; n < sizeof(tbl) / sizeof(tbl[0]); ++n)
- fprintf(stderr, "%s\n", tbl[n]);
- exit_error();
+ fputs(msg, stderr);
+ ExitProgram(EXIT_FAILURE);
/* NOTREACHED */
}
@@ -1203,12 +756,19 @@ int
main(int argc, char **argv)
{
int ch, noinit, noset, quiet, Sflag, sflag, showterm;
- const char *p;
const char *ttype;
-
+ int terasechar = -1; /* new erase character */
+ int intrchar = -1; /* new interrupt character */
+ int tkillchar = -1; /* new kill character */
+ int my_fd;
+ bool opt_c = FALSE; /* set control-chars */
+ bool opt_w = FALSE; /* set window-size */
+ TTY mode, oldmode;
+
+ my_fd = STDERR_FILENO;
obsolete(argv);
noinit = noset = quiet = Sflag = sflag = showterm = 0;
- while ((ch = getopt(argc, argv, "a:cd:e:Ii:k:m:np:qQSrsVw")) != -1) {
+ while ((ch = getopt(argc, argv, "a:cd:e:Ii:k:m:p:qQrSsVw")) != -1) {
switch (ch) {
case 'c': /* set control-chars */
opt_c = TRUE;
@@ -1234,8 +794,6 @@ main(int argc, char **argv)
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;
@@ -1276,10 +834,8 @@ main(int argc, char **argv)
if (!opt_c && !opt_w)
opt_c = opt_w = TRUE;
- if (GET_TTY(STDERR_FILENO, &mode) < 0)
- failed("standard error");
- can_restore = TRUE;
- original = oldmode = mode;
+ my_fd = save_tty_settings(&mode, TRUE);
+ oldmode = mode;
#ifdef TERMIOS
ospeed = (NCURSES_OSPEED) cfgetospeed(&mode);
#else
@@ -1287,83 +843,55 @@ main(int argc, char **argv)
#endif
if (same_program(_nc_progname, PROG_RESET)) {
- isreset = TRUE;
- reset_mode();
+ reset_start(stderr, TRUE, FALSE);
+ reset_tty_settings(my_fd, &mode);
+ } else {
+ reset_start(stderr, FALSE, TRUE);
}
- (void) get_termcap_entry(*argv);
+ ttype = get_termcap_entry(my_fd, *argv);
if (!noset) {
#if HAVE_SIZECHANGE
- tcolumns = columns;
- tlines = lines;
-
if (opt_w) {
- STRUCT_WINSIZE win;
- /* Set window size if not set already */
- (void) ioctl(STDERR_FILENO, IOCTL_GET_WINSIZE, &win);
- if (WINSIZE_ROWS(win) == 0 &&
- WINSIZE_COLS(win) == 0 &&
- tlines > 0 && tcolumns > 0) {
- WINSIZE_ROWS(win) = tlines;
- WINSIZE_COLS(win) = tcolumns;
- (void) ioctl(STDERR_FILENO, IOCTL_SET_WINSIZE, &win);
- }
+ set_window_size(my_fd, &lines, &columns);
}
#endif
if (opt_c) {
- set_control_chars();
- set_conversions();
-
- if (!noinit)
- set_init();
-
- /* Set the modes if they've changed. */
- if (memcmp(&mode, &oldmode, sizeof(mode))) {
- SET_TTY(STDERR_FILENO, &mode);
+ set_control_chars(&mode, terasechar, intrchar, tkillchar);
+ set_conversions(&mode);
+
+ if (!noinit) {
+ if (send_init_strings(my_fd, &oldmode)) {
+ (void) putc('\r', stderr);
+ (void) fflush(stderr);
+ (void) napms(1000); /* Settle the terminal. */
+ }
}
+
+ update_tty_settings(&oldmode, &mode);
}
}
- /* Get the terminal name from the entry. */
- ttype = _nc_first_name(cur_term->type.term_names);
-
- if (noset)
+ if (noset) {
(void) printf("%s\n", ttype);
- else {
+ } 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.
*/
-#ifdef TERMIOS
if (!quiet) {
- report("Erase", VERASE, CERASE);
- report("Kill", VKILL, CKILL);
- report("Interrupt", VINTR, CINTR);
+ print_tty_chars(&oldmode, &mode);
}
-#endif
}
if (Sflag)
err("The -S option is not supported under terminfo.");
if (sflag) {
- int len;
- char *var;
- char *leaf;
- /*
- * Figure out what shell we're using. A hack, we look for an
- * environmental variable SHELL ending in "csh".
- */
- if ((var = getenv("SHELL")) != 0
- && ((len = (int) strlen(leaf = _nc_basename(var))) >= 3)
- && !strcmp(leaf + len - 3, "csh"))
- p = "set noglob;\nsetenv TERM %s;\nunset noglob;\n";
- else
- p = "TERM=%s;\n";
- (void) printf(p, ttype);
+ print_shell_commands(ttype);
}
ExitProgram(EXIT_SUCCESS);
diff --git a/progs/tty_settings.c b/progs/tty_settings.c
new file mode 100644
index 000000000000..23daefa07ac8
--- /dev/null
+++ b/progs/tty_settings.c
@@ -0,0 +1,104 @@
+/****************************************************************************
+ * Copyright (c) 2016,2017 Free 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 *
+ ****************************************************************************/
+
+#define USE_LIBTINFO
+#include <tty_settings.h>
+
+#include <fcntl.h>
+
+MODULE_ID("$Id: tty_settings.c,v 1.5 2017/10/07 20:55:57 tom Exp $")
+
+static int my_fd;
+static TTY original_settings;
+static bool can_restore = FALSE;
+
+static void
+failed(const char *msg)
+{
+ int code = errno;
+
+ (void) fprintf(stderr, "%s: %s: %s\n", _nc_progname, msg, strerror(code));
+ restore_tty_settings();
+ (void) fprintf(stderr, "\n");
+ ExitProgram(ErrSystem(code));
+ /* NOTREACHED */
+}
+
+static bool
+get_tty_settings(int fd, TTY * tty_settings)
+{
+ bool success = TRUE;
+ my_fd = fd;
+ if (fd < 0 || GET_TTY(my_fd, tty_settings) < 0) {
+ success = FALSE;
+ }
+ return success;
+}
+
+/*
+ * Open a file descriptor on the current terminal, to obtain its settings.
+ * stderr is less likely to be redirected than stdout; try that first.
+ */
+int
+save_tty_settings(TTY * tty_settings, bool need_tty)
+{
+ if (!get_tty_settings(STDERR_FILENO, tty_settings) &&
+ !get_tty_settings(STDOUT_FILENO, tty_settings) &&
+ !get_tty_settings(STDIN_FILENO, tty_settings) &&
+ !get_tty_settings(open("/dev/tty", O_RDWR), tty_settings)) {
+ if (need_tty) {
+ failed("terminal attributes");
+ } else {
+ my_fd = fileno(stdout);
+ }
+ } else {
+ can_restore = TRUE;
+ original_settings = *tty_settings;
+ }
+ return my_fd;
+}
+
+void
+restore_tty_settings(void)
+{
+ if (can_restore)
+ SET_TTY(my_fd, &original_settings);
+}
+
+/* Set the modes if they've changed. */
+void
+update_tty_settings(TTY * old_settings, TTY * new_settings)
+{
+ if (memcmp(new_settings, old_settings, sizeof(TTY))) {
+ SET_TTY(my_fd, new_settings);
+ }
+}
diff --git a/progs/tty_settings.h b/progs/tty_settings.h
new file mode 100644
index 000000000000..b0731078a3d4
--- /dev/null
+++ b/progs/tty_settings.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+ * Copyright (c) 2016,2017 Free 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 *
+ ****************************************************************************/
+
+/*
+ * $Id: tty_settings.h,v 1.2 2017/10/07 19:11:31 tom Exp $
+ *
+ * Utility functions for saving/restoring terminal settings.
+ */
+#ifndef TTY_SETTINGS_H
+#define TTY_SETTINGS_H 1
+/* *INDENT-OFF* */
+
+#include <progs.priv.h>
+
+extern int save_tty_settings(TTY * /* tty_settings */, bool /* need_tty */ );
+extern void restore_tty_settings(void);
+extern void update_tty_settings(TTY * /* old_settings */, TTY * /* new_settings */ );
+
+/* *INDENT-ON* */
+
+#endif /* TTY_SETTINGS_H */
diff --git a/test/Makefile.in b/test/Makefile.in
index 6600cd788254..90f8ecd1906f 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.111 2013/10/05 23:46:10 tom Exp $
+# $Id: Makefile.in,v 1.120 2018/01/15 19:28:45 tom Exp $
##############################################################################
-# Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2017,2018 Free 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"), #
@@ -34,7 +34,7 @@
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
-SHELL = /bin/sh
+SHELL = @SHELL@
VPATH = @srcdir@
@SET_MAKE@
@@ -44,6 +44,7 @@ x = @EXEEXT@
o = .@OBJEXT@
MODEL = ../@DFT_OBJ_SUBDIR@
+top_srcdir = @top_srcdir@
srcdir = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
@@ -53,18 +54,26 @@ bindir = @bindir@
libdir = @libdir@
includedir = @includedir@
includesubdir = @includesubdir@
+datarootdir = @datarootdir@
+datadir = @datadir@
BINDIR = $(DESTDIR)$(bindir)
LIBDIR = $(DESTDIR)$(libdir)
INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
+DATADIR = $(DESTDIR)$(datadir)
+
+PACKAGE = @PACKAGE@
LIBTOOL = @LIBTOOL@
+LIBTOOL_OPTS = @LIBTOOL_OPTS@
LIBTOOL_CLEAN = @LIB_CLEAN@
LIBTOOL_COMPILE = @LIB_COMPILE@
LIBTOOL_LINK = @LIB_LINK@
-INSTALL = @INSTALL@
-INSTALL_PROG = @INSTALL_PROGRAM@
+INSTALL = @INSTALL@ @INSTALL_OPT_O@
+INSTALL_PROG = @INSTALL_PROGRAM@ @INSTALL_OPT_S@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_DATA = @INSTALL_DATA@
transform = @program_transform_name@
TRANSFORM = sed 's/$x$$//'|sed '$(transform)'|sed 's/$$/$x/'
@@ -75,7 +84,7 @@ CC = @CC@
CPP = @CPP@
CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
-CPPFLAGS = -I. -I$(srcdir) -I../test -DHAVE_CONFIG_H @CPPFLAGS@
+CPPFLAGS = -I. -I$(srcdir) -I../test -DHAVE_CONFIG_H -DDATA_DIR=\"$(datadir)\" @CPPFLAGS@
CCFLAGS = $(CPPFLAGS) $(CFLAGS)
diff --git a/test/README b/test/README
index 62b6dff3e683..135c31cf1e4d 100644
--- a/test/README
+++ b/test/README
@@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -25,31 +25,47 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: README,v 1.48 2013/01/19 21:30:38 tom Exp $
+-- $Id: README,v 1.68 2019/01/21 14:18:33 tom Exp $
-------------------------------------------------------------------------------
-The programs in this directory are designed to test your newest toy :-)
-Check the sources for any further details.
+The programs in this directory are used to test and demonstrate ncurses.
+Some are interesting in themselves, while others merely show how some of
+the library calls are used. Some date back to the initial releases of
+ncurses during the mid-1990s, such as:
-blue - Blue Moon, a nifty solitaire (uses color)
-bs.c - the game of Battleships (uses color)
-firework.c - multi-colored fireworks (uses color)
-gdc.c - Great Digital Clock (uses color)
-hanoi.c - the game of hanoi (uses color essentially)
-knight.c - the game of Knight's Tour (uses color)
-lrtest.c - test of access to the lower-right corner
-ncurses.c - multi-test program (uses color)
-newdemo.c - another test from PDCurses (uses color)
-rain.c - rain drops keep falling on my head...
-tclock.c - analog/digital clock
-testcurs.c - a test from the PDCurses people (uses color)
-worm.c - worms run all over your screen (uses color)
-xmas.c - Xmas greeting card
+ blue - Blue Moon, a nifty solitaire (uses color)
+ bs.c - the game of Battleships (uses color)
+ firework.c - multi-colored fireworks (uses color)
+ gdc.c - Great Digital Clock (uses color)
+ hanoi.c - the game of hanoi (uses color essentially)
+ knight.c - the game of Knight's Tour (uses color)
+ lrtest.c - test of access to the lower-right corner
+ ncurses.c - multi-test program (uses color)
+ newdemo.c - another test from PDCurses (uses color)
+ rain.c - rain drops keep falling on my head...
+ tclock.c - analog/digital clock
+ testcurs.c - a test from the PDCurses people (uses color)
+ tracemunch - Perl script to make trace scripts easier to read
+ worm.c - worms run all over your screen (uses color)
+ xmas.c - Xmas greeting card
-The bs and knight games demonstrate processing of mouse events under xterm.
-This directory also contains:
+Besides being built as part of ncurses, the programs are also packaged as
+"ncurses-examples". Despite the name, the programs have been adjusted to
+allow them to build with other curses implementations, to provide a way to
+compare those with ncurses.
-tracemunch - Perl script to crunch trace scripts to make them easier to read
+You can build the programs by
+
+ ./configure
+ make
+
+The configure script has several options which allow you to tell it more
+about the curses implementation for which you are building the examples.
+Use
+
+ ./configure --help
+
+to list the options.
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
@@ -57,6 +73,7 @@ tracemunch - Perl script to crunch trace scripts to make them easier to read
These programs provide examples of use, but do not comprise a complete set of
tests. Here is a list of library externals, noting those that are used:
+
libform:
-------
TYPE_ALNUM test: demo_forms
@@ -72,23 +89,24 @@ data_behind test: demo_forms
dup_field -
dynamic_field_info test: demo_forms
field_arg test: demo_forms
-field_back test: demo_forms
-field_buffer test: cardfile demo_forms edit_field ncurses
+field_back test: demo_forms edit_field
+field_buffer test: cardfile demo_forms ncurses
field_count test: demo_forms
field_fore test: demo_forms
field_index test: demo_forms
-field_info test: ncurses
+field_info test: edit_field ncurses
field_init -
field_just -
field_opts test: demo_forms ncurses
-field_opts_off test: cardfile demo_forms
+field_opts_off test: cardfile demo_forms form_driver_w
field_opts_on test: demo_forms
field_pad test: demo_forms
field_status test: demo_forms
field_term -
field_type test: demo_forms
-field_userptr test: demo_forms edit_field ncurses
+field_userptr test: edit_field ncurses
form_driver test: cardfile demo_forms edit_field ncurses
+form_driver_w test: form_driver_w
form_fields test: cardfile demo_forms
form_init -
form_opts -
@@ -100,23 +118,23 @@ form_request_name test: edit_field
form_sub test: cardfile demo_forms ncurses
form_term -
form_userptr -
-form_win test: cardfile demo_forms edit_field ncurses
-free_field test: cardfile demo_forms ncurses
+form_win test: cardfile demo_forms edit_field form_driver_w ncurses
+free_field test: cardfile demo_forms form_driver_w ncurses
free_fieldtype test: ncurses
-free_form test: cardfile demo_forms ncurses
+free_form test: cardfile demo_forms form_driver_w ncurses
link_field -
link_fieldtype -
move_field -
-new_field test: cardfile demo_forms ncurses
+new_field test: cardfile demo_forms form_driver_w ncurses
new_fieldtype test: ncurses
-new_form test: cardfile demo_forms ncurses
+new_form test: cardfile demo_forms form_driver_w ncurses
new_form_sp -
new_page test: demo_forms
pos_form_cursor -
-post_form test: cardfile demo_forms ncurses
+post_form test: cardfile demo_forms form_driver_w ncurses
scale_form test: demo_forms ncurses
set_current_field test: demo_forms
-set_field_back test: cardfile demo_forms edit_field ncurses
+set_field_back test: cardfile demo_forms edit_field form_driver_w ncurses
set_field_buffer test: cardfile demo_forms edit_field ncurses
set_field_fore test: demo_forms
set_field_init -
@@ -126,7 +144,7 @@ set_field_pad test: demo_forms
set_field_status test: demo_forms
set_field_term -
set_field_type test: demo_forms ncurses
-set_field_userptr test: demo_forms ncurses
+set_field_userptr test: edit_field ncurses
set_fieldtype_arg -
set_fieldtype_choice -
set_form_fields -
@@ -139,7 +157,8 @@ set_form_userptr -
set_form_win test: cardfile demo_forms ncurses
set_max_field test: demo_forms
set_new_page test: demo_forms
-unpost_form test: cardfile demo_forms ncurses
+unfocus_current_field -
+unpost_form test: cardfile demo_forms form_driver_w ncurses
libmenu:
-------
@@ -155,7 +174,7 @@ item_opts -
item_opts_off -
item_opts_on -
item_term -
-item_userptr -
+item_userptr test: demo_menus
item_value test: demo_menus ncurses
item_visible -
menu_back -
@@ -185,16 +204,16 @@ pos_menu_cursor lib: menu
post_menu test: demo_menus ncurses
scale_menu test: demo_menus ncurses
set_current_item -
-set_item_init -
+set_item_init test: demo_menus
set_item_opts -
-set_item_term -
-set_item_userptr -
+set_item_term test: demo_menus
+set_item_userptr test: demo_menus
set_item_value test: demo_menus ncurses
set_menu_back test: demo_menus
set_menu_fore test: demo_menus
set_menu_format test: demo_menus ncurses
set_menu_grey -
-set_menu_init -
+set_menu_init test: demo_menus
set_menu_items -
set_menu_mark test: demo_menus
set_menu_opts -
@@ -202,7 +221,7 @@ set_menu_pad -
set_menu_pattern -
set_menu_spacing -
set_menu_sub test: demo_menus ncurses
-set_menu_term -
+set_menu_term test: demo_menus
set_menu_userptr -
set_menu_win test: demo_menus ncurses
set_top_row -
@@ -211,43 +230,45 @@ unpost_menu test: demo_menus ncurses
libncurses:
----------
-BC -
-COLORS test: echochar ncurses savescreen xmas
-COLOR_PAIR test: background blue bs cardfile clip_printw demo_forms demo_menus demo_panels echochar filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas
-COLOR_PAIRS test: echochar ncurses newdemo savescreen
-COLS test: cardfile demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto echochar edit_field firework foldkeys hashtest inch_wide inchs ins_wide inserts lrtest movewindow ncurses newdemo rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm
+BC test: demo_termcap
+COLORS test: color_content demo_new_pair dots_curses dots_xcurses echochar ncurses pair_content picsmap savescreen xmas
+COLOR_PAIR test: background blue bs cardfile clip_printw demo_forms demo_menus demo_panels dots_curses echochar filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo padview picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas
+COLOR_PAIRS test: demo_new_pair dots_curses dots_xcurses echochar ncurses newdemo pair_content
+COLS test: cardfile demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto dots_curses dots_xcurses echochar filter firework foldkeys hashtest inch_wide inchs ins_wide inserts lrtest movewindow ncurses newdemo padview picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm
ESCDELAY test: test_opaque
-LINES test: cardfile demo_defkey demo_keyok demo_menus demo_panels ditto echochar edit_field firework hanoi hashtest inch_wide inchs ins_wide inserts lrtest movewindow ncurses newdemo rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas
-PAIR_NUMBER test: ncurses
-PC lib: ncurses
+LINES test: cardfile demo_defkey demo_keyok demo_menus demo_panels ditto dots_curses dots_xcurses echochar firework hanoi hashtest inch_wide inchs ins_wide inserts lrtest movewindow ncurses newdemo padview picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas
+PAIR_NUMBER test: dump_window ncurses
+PC test: demo_termcap
SP lib: form
TABSIZE test: test_opaque
-UP -
-acs_map test: background gdc ins_wide inserts knight movewindow ncurses newdemo test_add_wchstr test_addchstr test_addstr test_addwstr testcurs
-add_wch test: demo_panels ncurses test_add_wchstr test_addwstr
+UP test: demo_termcap
+acs_map test: background gdc ins_wide inserts knight movewindow ncurses newdemo savescreen test_add_wchstr test_addchstr test_addstr test_addwstr testcurs
+add_wch test: demo_new_pair demo_panels ncurses picsmap savescreen test_add_wchstr test_addwstr
add_wchnstr test: test_add_wchstr
add_wchstr test: test_add_wchstr view
-addch test: background blue bs echochar hashtest ncurses savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_opaque testaddch view worm
+addch test: background blue bs color_content dots_curses echochar hashtest ncurses padview pair_content picsmap savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_opaque testaddch view worm
addchnstr test: test_addchstr
addchstr test: test_addchstr
addnstr test: test_addstr
-addnwstr test: ncurses test_addwstr
-addstr test: blue bs cardfile gdc hanoi lrtest ncurses savescreen test_addstr
-addwstr test: ncurses test_addwstr
+addnwstr test: dots_xcurses ncurses test_addwstr
+addstr test: blue bs cardfile filter gdc hanoi lrtest ncurses test_addstr
+addwstr test: blue test_addwstr
+alloc_pair test: demo_new_pair dots_xcurses
+alloc_pair_sp -
assume_default_colors test: background ncurses
assume_default_colors_sp -
-attr_get test: ncurses
-attr_off test: ncurses
-attr_on test: ncurses
+attr_get -
+attr_off test: dots_xcurses ncurses
+attr_on test: dots_xcurses ncurses
attr_set test: ncurses
-attroff test: echochar filter gdc ncurses tclock
-attron test: bs echochar filter gdc ncurses
-attrset test: bs firework gdc hanoi insdelln ncurses rain tclock testaddch testcurs
-baudrate lib: ncurses
-baudrate_sp lib: ncurses
-beep test: blue bs cardfile chgat clip_printw demo_forms demo_menus demo_panels edit_field hanoi inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view xmas
+attroff test: blue dots_curses echochar filter gdc ncurses tclock
+attron test: blue bs dots_curses echochar filter gdc ncurses
+attrset test: bs filter firework gdc hanoi insdelln ncurses picsmap rain tclock testaddch testcurs
+baudrate test: ncurses
+baudrate_sp test: sp_tinfo
+beep test: blue bs cardfile chgat clip_printw demo_forms demo_menus demo_new_pair demo_panels edit_field firstlast hanoi inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses padview popup_msg rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view xmas
beep_sp lib: ncurses
-bkgd test: background cardfile demo_forms ncurses savescreen tclock view
+bkgd test: background cardfile demo_forms ncurses padview savescreen tclock view
bkgdset test: background ncurses testaddch
bkgrnd test: ncurses
bkgrndset test: ncurses
@@ -256,76 +277,86 @@ boolfnames test: demo_terminfo test_arrays progs: dump_entry
boolnames test: demo_terminfo test_arrays progs: dump_entry infocmp
border -
border_set -
-box test: cardfile chgat clip_printw demo_forms demo_menus demo_panels ditto edit_field inch_wide inchs ins_wide insdelln inserts lrtest ncurses newdemo redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
+box test: cardfile chgat clip_printw demo_forms demo_menus demo_panels ditto inch_wide inchs ins_wide insdelln inserts lrtest ncurses newdemo popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
box_set test: ncurses
-can_change_color test: ncurses
-can_change_color_sp -
-cbreak test: background blue bs cardfile chgat clip_printw color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto filter firework foldkeys gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest movewindow ncurses newdemo savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas
-cbreak_sp lib: ncurses
+can_change_color test: color_content extended_color ncurses
+can_change_color_sp test: extended_color
+cbreak test: background blue bs cardfile chgat clip_printw color_content color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels ditto extended_color filter firework foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest movewindow ncurses newdemo padview pair_content picsmap savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas
+cbreak_sp test: sp_tinfo
chgat test: chgat
-clear test: blue bs gdc ncurses testcurs xmas
+clear test: blue bs filter gdc ncurses padview testcurs xmas
clearok test: bs knight
-clrtobot test: demo_menus ncurses
-clrtoeol test: blue bs demo_altkeys demo_menus foldkeys hanoi hashtest movewindow ncurses view
-color_content test: ncurses
+clrtobot test: demo_menus ncurses view
+clrtoeol test: blue bs demo_altkeys filter foldkeys form_driver_w hanoi hashtest movewindow ncurses padview view
+color_content test: color_content ncurses picsmap
color_content_sp -
-color_set test: color_set ncurses
+color_set test: color_set dots_xcurses extended_color ncurses
copywin test: ncurses testcurs
-cur_term test: demo_terminfo dots dots_mvcur lrtest test_vid_puts test_vidputs progs: clear tabs tput tset
-curs_set test: echochar firework gdc hanoi lrtest ncurses newdemo rain savescreen tclock testcurs worm xmas
-curs_set_sp lib: ncurses
-curscr test: demo_panels edit_field knight lrtest ncurses savescreen tclock view
-curses_version test: ncurses progs: infocmp tic toe tput tset
+cur_term test: demo_termcap demo_terminfo dots dots_mvcur filter list_keys lrtest sp_tinfo test_sgr test_vid_puts test_vidputs progs: clear_cmd reset_cmd tabs tput tset
+curs_set test: demo_new_pair echochar firework gdc hanoi lrtest ncurses newdemo picsmap rain savescreen tclock testcurs worm xmas
+curs_set_sp test: sp_tinfo
+curscr test: demo_panels knight lrtest ncurses popup_msg savescreen tclock
+curses_version test: ncurses progs: clear infocmp tabs tic toe tput tset
def_prog_mode test: bs ncurses
-def_prog_mode_sp lib: ncurses
+def_prog_mode_sp test: sp_tinfo
def_shell_mode -
-def_shell_mode_sp lib: ncurses
+def_shell_mode_sp test: sp_tinfo
define_key test: demo_altkeys demo_defkey foldkeys
-define_key_sp -
-del_curterm lib: ncurses
+define_key_sp test: sp_tinfo
+del_curterm test: demo_terminfo sp_tinfo test_sgr
del_curterm_sp lib: ncurses
delay_output test: newdemo
-delay_output_sp -
+delay_output_sp test: sp_tinfo
delch -
deleteln test: insdelln
delscreen test: ditto dots_mvcur
-delwin test: cardfile chgat clip_printw demo_forms demo_panels edit_field inch_wide inchs ins_wide insdelln inserts movewindow ncurses newdemo redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
+delwin test: cardfile chgat clip_printw demo_forms demo_panels inch_wide inchs ins_wide insdelln inserts ncurses newdemo popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view
derwin test: cardfile chgat clip_printw demo_forms demo_menus ditto inch_wide inchs ins_wide insdelln inserts movewindow ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque
-doupdate test: cardfile demo_menus demo_panels ditto edit_field ins_wide inserts knight movewindow ncurses redraw savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr
+doupdate test: cardfile demo_menus demo_panels ditto ins_wide inserts knight movewindow ncurses padview popup_msg redraw savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr
doupdate_sp lib: ncurses
-dupwin test: edit_field
+dupwin test: popup_msg
echo test: bs hanoi ncurses test_get_wstr test_getstr testcurs testscanw
echo_sp lib: ncurses
echo_wchar test: ncurses
echochar test: echochar ncurses
-endwin test: background blue bs cardfile chgat clip_printw color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto dots_mvcur echochar filter firework firstlast foldkeys gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest movewindow ncurses newdemo rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testaddch testcurs testscanw view worm xmas
+endwin test: background blue bs cardfile chgat clip_printw color_content color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels ditto dots_curses dots_mvcur dots_xcurses echochar extended_color filter firework firstlast foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest movewindow ncurses newdemo padview pair_content picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testaddch testcurs testscanw view worm xmas
endwin_sp lib: ncurses
-erase test: cardfile demo_menus filter firework firstlast hanoi lrtest ncurses tclock test_opaque testcurs
-erasechar lib: ncurses
-erasechar_sp lib: ncurses
-erasewchar -
+erase test: cardfile demo_menus filter firework firstlast hanoi lrtest ncurses picsmap tclock test_opaque testcurs
+erasechar test: ncurses
+erasechar_sp test: sp_tinfo
+erasewchar test: ncurses
+extended_color_content test: color_content extended_color
+extended_color_content_sp test: extended_color
+extended_pair_content test: extended_color pair_content
+extended_pair_content_sp test: extended_color
+extended_slk_color test: extended_color
+extended_slk_color_sp test: extended_color
filter test: filter
filter_sp -
-flash test: cardfile lrtest movewindow ncurses tclock testcurs
+find_pair test: demo_new_pair
+find_pair_sp -
+flash test: cardfile filter lrtest movewindow ncurses tclock testcurs
flash_sp -
flushinp test: ncurses newdemo testcurs
-flushinp_sp lib: ncurses
+flushinp_sp test: sp_tinfo
+free_pair test: demo_new_pair
+free_pair_sp -
get_escdelay -
get_escdelay_sp -
-get_wch -
+get_wch test: form_driver_w
get_wstr test: test_get_wstr
getattrs -
-getbegx test: chgat clip_printw demo_menus demo_panels insdelln movewindow ncurses newdemo redraw testcurs
-getbegy test: chgat clip_printw demo_menus demo_panels insdelln movewindow ncurses newdemo redraw testcurs
+getbegx test: chgat clip_printw demo_menus demo_panels dump_window insdelln movewindow ncurses newdemo redraw testcurs
+getbegy test: chgat clip_printw demo_menus demo_panels dump_window insdelln movewindow ncurses newdemo redraw testcurs
getbkgd test: ncurses
getbkgrnd test: ncurses
-getcchar test: ncurses view
-getch test: background blue bs chgat color_set demo_altkeys filter firework firstlast foldkeys hanoi hashtest insdelln lrtest savescreen tclock test_opaque testaddch testcurs view xmas
-getcurx test: bs chgat clip_printw demo_altkeys demo_defkey demo_panels firstlast foldkeys insdelln movewindow ncurses redraw savescreen test_get_wstr test_getstr test_opaque testcurs
-getcury test: bs chgat clip_printw demo_altkeys demo_defkey demo_panels edit_field firstlast foldkeys insdelln movewindow ncurses redraw savescreen test_opaque testcurs
-getmaxx test: chgat clip_printw demo_panels inch_wide inchs insdelln movewindow ncurses newdemo redraw test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
-getmaxy test: chgat clip_printw demo_forms demo_panels inch_wide inchs insdelln movewindow ncurses newdemo redraw test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
-getmouse test: bs knight movewindow ncurses
+getcchar test: ncurses savescreen view
+getch test: background blue bs chgat color_content color_set demo_altkeys demo_new_pair extended_color filter firework firstlast foldkeys hanoi hashtest insdelln lrtest padview pair_content picsmap savescreen tclock test_opaque testaddch testcurs view xmas
+getcurx test: bs chgat clip_printw demo_altkeys demo_defkey demo_panels dump_window extended_color filter firstlast foldkeys insdelln movewindow ncurses redraw savescreen test_get_wstr test_getstr test_opaque testcurs view
+getcury test: bs chgat clip_printw demo_altkeys demo_defkey demo_panels dump_window extended_color filter firstlast foldkeys insdelln movewindow ncurses popup_msg redraw savescreen test_opaque testcurs view
+getmaxx test: chgat clip_printw demo_panels dump_window firstlast inch_wide inchs insdelln movewindow ncurses newdemo popup_msg redraw test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
+getmaxy test: chgat clip_printw demo_forms demo_panels dump_window firstlast inch_wide inchs insdelln movewindow ncurses newdemo popup_msg redraw test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
+getmouse test: bs demo_menus knight movewindow ncurses testcurs
getmouse_sp -
getn_wstr test: test_get_wstr
getnstr test: filter ncurses test_getstr
@@ -334,22 +365,22 @@ getpary test: movewindow
getstr test: test_getstr
getwin test: ncurses
getwin_sp -
-halfdelay test: view
-halfdelay_sp -
-has_colors test: background bs cardfile chgat clip_printw color_set demo_forms demo_menus demo_panels echochar filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testcurs view worm xmas
+halfdelay test: padview view
+halfdelay_sp test: sp_tinfo
+has_colors test: background bs cardfile chgat clip_printw color_content color_set demo_forms demo_menus demo_new_pair demo_panels dots_curses dots_xcurses echochar extended_color filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo padview pair_content picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testcurs view worm xmas
has_colors_sp lib: ncurses
-has_ic test: lrtest
-has_ic_sp lib: ncurses
-has_il -
-has_il_sp lib: ncurses
+has_ic test: lrtest ncurses
+has_ic_sp test: sp_tinfo
+has_il test: ncurses
+has_il_sp test: sp_tinfo
has_key -
-has_key_sp lib: ncurses
+has_key_sp test: sp_tinfo
has_mouse -
has_mouse_sp -
hline test: gdc ncurses
hline_set -
idcok test: test_opaque
-idlok test: ncurses test_opaque testscanw view
+idlok test: ncurses padview test_opaque testscanw view
immedok test: test_opaque
in_wch test: inch_wide
in_wchnstr test: inch_wide
@@ -357,11 +388,15 @@ in_wchstr test: inch_wide
inch test: inchs
inchnstr test: inchs
inchstr test: inchs
-init_color test: ncurses
-init_color_sp lib: ncurses
-init_pair test: background blue bs cardfile chgat clip_printw color_set demo_forms demo_menus demo_panels echochar filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas
+init_color test: color_content ncurses
+init_color_sp -
+init_extended_color test: color_content extended_color
+init_extended_color_sp test: extended_color
+init_extended_pair test: extended_color ncurses pair_content picsmap
+init_extended_pair_sp test: extended_color
+init_pair test: background blue bs cardfile chgat clip_printw color_set demo_forms demo_menus demo_new_pair demo_panels dots_curses dots_xcurses echochar filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo padview pair_content picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas
init_pair_sp -
-initscr test: background blue bs cardfile chgat clip_printw color_set demo_defkey demo_forms demo_keyok demo_menus demo_panels echochar filter firework firstlast gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest movewindow ncurses newdemo rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testaddch testcurs testscanw view worm xmas
+initscr test: background blue bs cardfile chgat clip_printw color_content color_set demo_defkey demo_forms demo_keyok demo_menus demo_panels dots_curses dots_xcurses echochar filter firework firstlast form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest movewindow ncurses newdemo padview pair_content picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testaddch testcurs testscanw view worm xmas
innstr test: test_instr
innwstr test: test_inwstr
ins_nwstr test: ins_wide
@@ -374,19 +409,19 @@ insnstr test: inserts
insstr test: inserts
instr test: test_instr
intrflush test: demo_forms movewindow
-intrflush_sp -
+intrflush_sp test: sp_tinfo
inwstr test: test_inwstr
is_cleared test: test_opaque
is_idcok test: test_opaque
is_idlok test: test_opaque
is_immedok test: test_opaque
-is_keypad test: test_opaque
+is_keypad test: ncurses test_opaque
is_leaveok test: test_opaque
is_linetouched lib: form
is_nodelay test: test_opaque
is_notimeout test: test_opaque
is_pad -
-is_scrollok test: test_opaque
+is_scrollok test: ncurses test_opaque
is_subwin -
is_syncok test: test_opaque
is_term_resized -
@@ -395,29 +430,30 @@ is_wintouched lib: ncurses
isendwin -
isendwin_sp -
key_defined test: demo_defkey foldkeys
-key_defined_sp lib: ncurses
+key_defined_sp test: sp_tinfo
key_name test: key_names ncurses
keybound test: demo_altkeys demo_defkey
-keybound_sp lib: ncurses
-keyname test: demo_altkeys demo_defkey demo_keyok demo_menus edit_field foldkeys keynames movewindow ncurses redraw test_getstr testcurs view progs: tic
-keyname_sp lib: ncurses
+keybound_sp test: sp_tinfo
+keyname test: demo_altkeys demo_defkey demo_keyok demo_menus edit_field foldkeys keynames movewindow ncurses padview redraw test_getstr testcurs view progs: tic
+keyname_sp test: sp_tinfo
keyok test: demo_keyok foldkeys
-keyok_sp lib: ncurses
-keypad test: bs cardfile chgat clip_printw demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto edit_field filter firework foldkeys hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest movewindow ncurses redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs testscanw view
-killchar lib: ncurses
-killchar_sp lib: ncurses
-killwchar -
+keyok_sp test: sp_tinfo
+keypad test: bs cardfile chgat clip_printw demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels ditto filter firework foldkeys form_driver_w hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest movewindow ncurses padview popup_msg redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs testscanw view
+killchar test: ncurses
+killchar_sp test: sp_tinfo
+killwchar test: ncurses
leaveok test: hanoi test_opaque
-longname test: testcurs progs: tput
+longname test: ncurses testcurs progs: tput
+longname_sp test: sp_tinfo
mcprint -
mcprint_sp -
meta test: key_names keynames ncurses
-mouse_trafo -
+mouse_trafo lib: form
mouseinterval -
mouseinterval_sp -
-mousemask test: bs demo_forms demo_menus knight movewindow ncurses
+mousemask test: bs demo_forms demo_menus knight movewindow ncurses testcurs
mousemask_sp -
-move test: blue bs cardfile chgat demo_altkeys demo_menus echochar foldkeys gdc hanoi hashtest inch_wide inchs ins_wide inserts knight lrtest movewindow ncurses savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testscanw view xmas
+move test: blue bs cardfile chgat demo_altkeys demo_menus demo_new_pair dots_curses dots_xcurses echochar filter foldkeys gdc hanoi hashtest inch_wide inchs ins_wide inserts knight lrtest movewindow ncurses picsmap savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testscanw view xmas
mvadd_wch test: ncurses test_add_wchstr test_addwstr
mvadd_wchnstr test: test_add_wchstr
mvadd_wchstr test: test_add_wchstr
@@ -457,14 +493,14 @@ mvinsnstr test: inserts
mvinsstr test: inserts
mvinstr test: test_instr
mvinwstr test: test_inwstr
-mvprintw test: background bs demo_menus firework hanoi ncurses tclock view
+mvprintw test: background bs firework form_driver_w hanoi ncurses padview savescreen tclock view
mvscanw -
mvvline test: ncurses
mvvline_set test: ncurses
mvwadd_wch test: test_add_wchstr test_addwstr
mvwadd_wchnstr test: test_add_wchstr
mvwadd_wchstr test: inch_wide test_add_wchstr
-mvwaddch test: movewindow newdemo test_add_wchstr test_addchstr test_addstr test_addwstr testcurs xmas
+mvwaddch test: movewindow ncurses newdemo test_add_wchstr test_addchstr test_addstr test_addwstr testcurs xmas
mvwaddchnstr test: test_addchstr
mvwaddchstr test: inchs test_addchstr
mvwaddnstr test: newdemo test_addstr testcurs
@@ -479,13 +515,13 @@ mvwgetch test: inch_wide inchs test_get_wstr test_getstr test_instr test_inwst
mvwgetn_wstr test: test_get_wstr
mvwgetnstr test: test_getstr
mvwgetstr test: test_getstr
-mvwhline test: movewindow
+mvwhline test: movewindow ncurses
mvwhline_set -
-mvwin test: cardfile demo_menus movewindow testcurs xmas
+mvwin test: cardfile demo_menus movewindow ncurses testcurs xmas
mvwin_wch test: inch_wide
mvwin_wchnstr test: inch_wide
mvwin_wchstr test: inch_wide
-mvwinch test: inchs newdemo testcurs
+mvwinch test: dump_window inchs newdemo testcurs
mvwinchnstr test: inchs
mvwinchstr test: inchs
mvwinnstr test: test_instr testcurs
@@ -498,74 +534,76 @@ mvwinsnstr test: inserts
mvwinsstr test: inserts testcurs
mvwinstr test: test_instr
mvwinwstr test: test_inwstr
-mvwprintw test: chgat clip_printw demo_panels inch_wide inchs insdelln ncurses test_instr test_inwstr testcurs
+mvwprintw test: demo_menus demo_panels inch_wide inchs ncurses test_instr test_inwstr testcurs
mvwscanw test: testcurs
-mvwvline test: ins_wide inserts movewindow test_add_wchstr test_addchstr test_addstr test_addwstr
+mvwvline test: ins_wide inserts movewindow ncurses test_add_wchstr test_addchstr test_addstr test_addwstr
mvwvline_set -
-napms test: demo_panels ditto dots dots_mvcur echochar firework gdc hanoi lrtest ncurses railroad rain tclock test_opaque testcurs view worm xmas progs: tset
-napms_sp -
-new_prescr lib: ncurses
-newpad test: edit_field ncurses testcurs
+napms test: demo_panels ditto dots dots_curses dots_mvcur dots_xcurses echochar extended_color firework firstlast gdc hanoi lrtest ncurses padview picsmap railroad rain tclock test_opaque testcurs view worm xmas progs: tset
+napms_sp test: sp_tinfo
+new_prescr test: sp_tinfo
+newpad test: ncurses padview popup_msg testcurs
newpad_sp lib: ncurses
newscr lib: ncurses
-newterm test: demo_altkeys ditto dots_mvcur filter foldkeys gdc key_names keynames
+newterm test: demo_altkeys demo_new_pair ditto dots_mvcur extended_color filter foldkeys gdc key_names keynames redraw test_setupterm test_termattrs
newterm_sp -
-newwin test: cardfile chgat clip_printw demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto edit_field firstlast inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses newdemo redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs xmas
+newwin test: cardfile chgat clip_printw demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto firstlast inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses newdemo popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view xmas
newwin_sp lib: ncurses
nl test: demo_forms ncurses rain testcurs
nl_sp lib: ncurses
nocbreak test: testcurs
-nocbreak_sp lib: ncurses
-nodelay test: ditto firework gdc lrtest ncurses newdemo rain tclock test_opaque view worm xmas
-noecho test: background bs cardfile chgat clip_printw color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto firework firstlast foldkeys gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest movewindow ncurses rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas
+nocbreak_sp test: sp_tinfo
+nodelay test: demo_new_pair ditto extended_color firework gdc lrtest ncurses newdemo padview rain tclock test_opaque view worm xmas
+noecho test: background bs cardfile chgat clip_printw color_content color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels ditto extended_color firework firstlast foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest movewindow ncurses padview pair_content picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas
noecho_sp lib: ncurses
nofilter -
nofilter_sp -
-nonl test: bs demo_forms hashtest movewindow ncurses view worm xmas
+nonl test: bs demo_forms hashtest movewindow ncurses padview view worm xmas
nonl_sp lib: ncurses
noqiflush -
-noqiflush_sp -
+noqiflush_sp test: sp_tinfo
noraw test: demo_forms demo_menus ncurses testcurs
-noraw_sp lib: ncurses
-notimeout test: test_opaque
+noraw_sp test: sp_tinfo
+notimeout test: ncurses test_opaque
numcodes test: demo_termcap test_arrays progs: dump_entry
numfnames test: demo_terminfo test_arrays progs: dump_entry
numnames test: demo_terminfo test_arrays progs: dump_entry infocmp
-ospeed progs: tset
+ospeed test: demo_termcap progs: tset
overlay test: ncurses testcurs xmas
overwrite test: ncurses savescreen
-pair_content test: background color_set
+pair_content test: background color_set pair_content
pair_content_sp lib: ncurses
pecho_wchar -
pechochar -
-pnoutrefresh test: edit_field ncurses
+pnoutrefresh test: ncurses padview popup_msg
prefresh test: testcurs
-printw test: background blue bs color_set demo_altkeys demo_defkey demo_keyok demo_menus filter foldkeys ncurses savescreen testcurs testscanw view
-putp progs: tput
-putp_sp -
+printw test: background blue bs color_content color_set demo_altkeys demo_defkey demo_keyok extended_color filter foldkeys ncurses pair_content savescreen testcurs testscanw view
+putp test: filter test_sgr progs: tput
+putp_sp test: sp_tinfo
putwin test: ncurses
qiflush -
-qiflush_sp -
+qiflush_sp test: sp_tinfo
raw test: demo_forms ncurses redraw testcurs
-raw_sp lib: ncurses
-redrawwin test: redraw view
-refresh test: blue bs demo_defkey demo_forms demo_keyok demo_menus demo_panels echochar filter firstlast gdc hanoi hashtest lrtest movewindow ncurses savescreen tclock testcurs view xmas
+raw_sp test: sp_tinfo
+redrawwin test: padview redraw view
+refresh test: blue bs color_content demo_defkey demo_forms demo_keyok demo_menus demo_panels dots_curses dots_mvcur dots_xcurses echochar filter firstlast form_driver_w gdc hanoi hashtest lrtest movewindow ncurses pair_content picsmap savescreen tclock testcurs view xmas
+reset_color_pairs test: picsmap
+reset_color_pairs_sp -
reset_prog_mode test: filter ncurses
-reset_prog_mode_sp lib: ncurses
-reset_shell_mode test: bs filter savescreen
-reset_shell_mode_sp lib: ncurses
+reset_prog_mode_sp test: sp_tinfo
+reset_shell_mode test: bs filter savescreen test_setupterm
+reset_shell_mode_sp test: sp_tinfo
resetty -
-resetty_sp -
-resize_term test: view
+resetty_sp test: sp_tinfo
+resize_term -
resize_term_sp -
resizeterm -
resizeterm_sp lib: ncurses
-restartterm -
+restartterm test: test_setupterm
restartterm_sp -
ripoffline test: demo_menus ncurses
ripoffline_sp -
savetty -
-savetty_sp -
+savetty_sp test: sp_tinfo
scanw test: testcurs testscanw
scr_dump test: savescreen
scr_init test: savescreen
@@ -576,17 +614,17 @@ scr_set test: savescreen
scr_set_sp -
scrl test: view
scroll test: testcurs
-scrollok test: clip_printw demo_altkeys demo_defkey demo_keyok demo_panels ditto foldkeys hashtest knight ncurses redraw test_opaque testcurs testscanw view
-set_curterm lib: ncurses
-set_curterm_sp -
+scrollok test: clip_printw color_content demo_altkeys demo_defkey demo_keyok demo_new_pair demo_panels ditto foldkeys hashtest knight ncurses pair_content picsmap redraw test_opaque testcurs testscanw view
+set_curterm test: list_keys sp_tinfo
+set_curterm_sp test: sp_tinfo
set_escdelay test: test_opaque
set_escdelay_sp lib: ncurses
set_tabsize test: test_opaque
-set_tabsize_sp -
+set_tabsize_sp test: sp_tinfo
set_term lib: ncurses
-setcchar test: demo_panels ins_wide ncurses test_add_wchstr test_addwstr view
+setcchar test: demo_new_pair demo_panels ins_wide ncurses picsmap savescreen test_add_wchstr test_addwstr
setscrreg test: view
-setupterm test: demo_termcap demo_terminfo dots test_vid_puts test_vidputs progs: clear tabs tput tset
+setupterm test: demo_terminfo dots list_keys sp_tinfo test_setupterm test_sgr test_termattrs test_vid_puts test_vidputs progs: clear tabs tput tset
slk_attr -
slk_attr_off -
slk_attr_on -
@@ -597,122 +635,122 @@ slk_attroff lib: ncurses
slk_attroff_sp -
slk_attron lib: ncurses
slk_attron_sp -
-slk_attrset test: ncurses
+slk_attrset test: extended_color ncurses
slk_attrset_sp -
slk_clear test: ncurses
slk_clear_sp -
slk_color test: ncurses
slk_color_sp -
-slk_init test: ncurses
+slk_init test: extended_color ncurses
slk_init_sp -
slk_label test: ncurses
slk_label_sp -
-slk_noutrefresh test: ncurses
+slk_noutrefresh test: extended_color ncurses
slk_noutrefresh_sp -
slk_refresh test: ncurses
slk_refresh_sp lib: ncurses
slk_restore test: ncurses
slk_restore_sp lib: ncurses
-slk_set test: ncurses
+slk_set test: extended_color ncurses
slk_set_sp -
-slk_touch test: ncurses
+slk_touch test: extended_color ncurses
slk_touch_sp lib: ncurses
slk_wset test: ncurses
standend test: blue gdc ncurses
standout test: blue ncurses
-start_color test: background blue bs cardfile chgat clip_printw color_set demo_forms demo_menus demo_panels echochar filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas
+start_color test: background blue bs cardfile chgat clip_printw color_content color_set demo_forms demo_menus demo_new_pair demo_panels dots_curses dots_xcurses echochar extended_color filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo padview pair_content picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas
start_color_sp -
-stdscr test: bs chgat clip_printw demo_altkeys demo_forms demo_menus demo_panels ditto filter firework foldkeys gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest movewindow ncurses rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs testscanw view worm xmas
+stdscr test: background bs chgat clip_printw color_content demo_altkeys demo_forms demo_menus demo_new_pair demo_panels ditto edit_field extended_color filter firework foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest movewindow ncurses padview pair_content picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs testscanw view worm xmas
strcodes test: demo_termcap test_arrays progs: dump_entry
-strfnames test: demo_terminfo test_arrays progs: dump_entry
-strnames test: demo_terminfo foldkeys test_arrays progs: dump_entry infocmp tic
+strfnames test: demo_terminfo list_keys test_arrays progs: dump_entry
+strnames test: demo_terminfo foldkeys list_keys test_arrays progs: dump_entry infocmp tic
subpad test: testcurs
subwin test: movewindow ncurses newdemo testcurs
syncok test: test_opaque
-term_attrs test: ncurses
+term_attrs test: ncurses test_termattrs
term_attrs_sp -
-termattrs test: ncurses testcurs
+termattrs test: ncurses test_termattrs testcurs
termattrs_sp lib: ncurses
-termname test: testcurs
-termname_sp lib: ncurses
-tgetent test: demo_termcap railroad
-tgetent_sp -
+termname test: list_keys ncurses testcurs
+termname_sp test: sp_tinfo
+tgetent test: demo_termcap dots_termcap railroad
+tgetent_sp test: sp_tinfo
tgetflag test: demo_termcap
-tgetflag_sp -
-tgetnum test: demo_termcap railroad
-tgetnum_sp -
-tgetstr test: demo_termcap railroad
-tgetstr_sp -
-tgoto test: railroad
-tigetflag test: demo_terminfo progs: tic tput
-tigetflag_sp -
-tigetnum test: demo_terminfo ncurses progs: tput
-tigetnum_sp -
-tigetstr test: demo_defkey demo_terminfo foldkeys testcurs progs: tput
-tigetstr_sp -
-timeout test: rain savescreen
+tgetflag_sp test: sp_tinfo
+tgetnum test: demo_termcap dots_termcap railroad
+tgetnum_sp test: sp_tinfo
+tgetstr test: demo_termcap dots_termcap railroad
+tgetstr_sp test: sp_tinfo
+tgoto test: dots_termcap railroad progs: tic
+tigetflag test: demo_terminfo savescreen progs: tic tput
+tigetflag_sp test: sp_tinfo
+tigetnum test: demo_terminfo dots dots_mvcur ncurses savescreen progs: tput
+tigetnum_sp test: sp_tinfo
+tigetstr test: blue demo_defkey demo_new_pair demo_terminfo foldkeys list_keys savescreen test_sgr testcurs progs: clear_cmd tput
+tigetstr_sp test: sp_tinfo
+timeout test: filter rain savescreen
tiparm -
touchline test: chgat clip_printw insdelln
-touchwin test: chgat clip_printw demo_menus edit_field filter firstlast inch_wide inchs ins_wide insdelln inserts movewindow ncurses redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque xmas
-tparm test: dots dots_mvcur progs: tabs tic tput
-tputs test: dots dots_mvcur railroad test_vid_puts test_vidputs progs: clear tabs tset
-tputs_sp lib: ncurses
-trace test: demo_menus hashtest lrtest ncurses testcurs view worm
-ttytype lib: ncurses
+touchwin test: chgat clip_printw demo_menus filter firstlast inch_wide inchs ins_wide insdelln inserts movewindow ncurses popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque xmas
+tparm test: dots dots_mvcur test_sgr progs: reset_cmd tabs tic tput
+tputs test: dots dots_mvcur dots_termcap railroad test_vid_puts test_vidputs progs: clear_cmd reset_cmd tabs
+tputs_sp test: sp_tinfo
+trace test: demo_menus hashtest lrtest ncurses padview redraw test_sgr test_termattrs test_vid_puts test_vidputs testcurs view worm
+ttytype test: demo_terminfo test_sgr
typeahead test: testcurs
-typeahead_sp lib: ncurses
+typeahead_sp test: sp_tinfo
unctrl test: ncurses redraw test_add_wchstr test_addchstr testcurs
-unctrl_sp lib: ncurses
+unctrl_sp test: sp_tinfo
unget_wch -
unget_wch_sp -
ungetch test: bs knight
ungetch_sp lib: ncurses
-ungetmouse -
+ungetmouse lib: menu
ungetmouse_sp -
untouchwin lib: form
-use_default_colors test: background filter firework gdc hanoi knight ncurses rain tclock worm xmas
+use_default_colors test: background dots_curses dots_xcurses filter firework gdc hanoi knight ncurses picsmap rain tclock worm xmas
use_default_colors_sp -
-use_env test: ncurses progs: tput
-use_env_sp -
-use_extended_names test: demo_termcap demo_terminfo progs: infocmp tic
+use_env test: dots dots_curses dots_mvcur dots_xcurses ncurses progs: clear tput
+use_env_sp test: sp_tinfo
+use_extended_names test: demo_termcap demo_terminfo list_keys progs: infocmp tic
use_legacy_coding -
use_legacy_coding_sp -
use_screen test: ditto
-use_tioctl test: ncurses
-use_tioctl_sp -
+use_tioctl test: ncurses progs: clear tput
+use_tioctl_sp test: sp_tinfo
use_window test: rain worm
vid_attr test: test_vid_puts
vid_attr_sp -
vid_puts test: test_vid_puts
-vid_puts_sp -
+vid_puts_sp lib: ncurses
vidattr test: test_vidputs
vidattr_sp -
vidputs test: test_vidputs
-vidputs_sp lib: ncurses
+vidputs_sp -
vline test: gdc ncurses
vline_set -
-vw_printw test: clip_printw
+vw_printw test: clip_printw movewindow
vw_scanw -
-vwprintw test: movewindow
-vwscanw lib: ncurses
-wadd_wch test: inch_wide test_add_wchstr test_addwstr
-wadd_wchnstr test: test_add_wchstr
+vwprintw -
+vwscanw -
+wadd_wch test: inch_wide ncurses test_add_wchstr test_addwstr
+wadd_wchnstr test: savescreen test_add_wchstr
wadd_wchstr test: test_add_wchstr
-waddch test: demo_forms demo_panels ditto firstlast inch_wide inchs knight ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque worm
+waddch test: demo_forms demo_panels ditto firstlast inch_wide inchs knight ncurses padview popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque view worm
waddchnstr test: test_addchstr
waddchstr test: test_addchstr
-waddnstr test: test_addstr
+waddnstr test: demo_forms test_addstr
waddnwstr test: ncurses test_addwstr
-waddstr test: chgat clip_printw demo_forms demo_panels edit_field firstlast ins_wide insdelln knight ncurses redraw test_add_wchstr test_addstr test_addwstr testcurs
-waddwstr test: ins_wide test_add_wchstr test_addwstr test_get_wstr
-wattr_get -
+waddstr test: chgat clip_printw demo_forms demo_panels firstlast ins_wide insdelln knight ncurses popup_msg redraw test_add_wchstr test_addstr test_addwstr testcurs
+waddwstr test: ins_wide ncurses padview test_add_wchstr test_addwstr test_get_wstr view
+wattr_get test: ncurses
wattr_off lib: ncurses
wattr_on lib: ncurses
-wattr_set -
+wattr_set test: ncurses
wattroff test: demo_forms ncurses testcurs xmas
wattron test: testcurs xmas
-wattrset test: clip_printw demo_forms insdelln ncurses newdemo test_get_wstr test_getstr testcurs xmas
-wbkgd test: cardfile demo_forms demo_menus ncurses newdemo testcurs
+wattrset test: clip_printw demo_forms insdelln ncurses newdemo padview test_get_wstr test_getstr testcurs xmas
+wbkgd test: cardfile demo_forms demo_menus ncurses newdemo padview testcurs
wbkgdset test: demo_panels ins_wide inserts ncurses test_add_wchstr test_addchstr test_addstr test_addwstr
wbkgrnd lib: ncurses
wbkgrndset lib: ncurses
@@ -721,7 +759,7 @@ wborder_set test: ncurses
wchgat test: chgat test_get_wstr test_getstr view
wclear test: ncurses test_opaque testcurs
wclrtobot test: firstlast inch_wide inchs ncurses test_instr test_inwstr testcurs
-wclrtoeol test: chgat clip_printw demo_defkey demo_keyok demo_panels firstlast inch_wide inchs ins_wide insdelln inserts knight ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_instr test_inwstr testcurs
+wclrtoeol test: chgat clip_printw demo_defkey demo_keyok demo_menus demo_panels firstlast inch_wide inchs ins_wide insdelln inserts knight ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_instr test_inwstr testcurs
wcolor_set lib: ncurses
wcursyncup lib: form
wdelch test: ncurses testcurs
@@ -729,11 +767,12 @@ wdeleteln test: insdelln testcurs
wecho_wchar lib: ncurses
wechochar lib: ncurses
wenclose test: ncurses
-werase test: cardfile demo_forms demo_menus demo_panels edit_field firstlast knight ncurses newdemo test_get_wstr test_getstr test_opaque testcurs xmas
+werase test: cardfile demo_forms demo_menus demo_panels firstlast knight ncurses newdemo popup_msg test_get_wstr test_getstr test_opaque testcurs view xmas
wget_wch test: ins_wide ncurses test_add_wchstr test_addwstr
wget_wstr test: test_get_wstr
wgetbkgrnd lib: ncurses
-wgetch test: cardfile chgat clip_printw demo_defkey demo_keyok demo_menus demo_panels ditto edit_field gdc insdelln inserts knight movewindow ncurses newdemo rain redraw test_addchstr test_addstr test_opaque testcurs worm
+wgetch test: cardfile chgat clip_printw demo_defkey demo_keyok demo_menus demo_panels ditto dump_window edit_field gdc insdelln inserts knight movewindow ncurses newdemo popup_msg rain redraw test_addchstr test_addstr test_opaque testcurs worm
+wgetdelay -
wgetn_wstr test: ncurses test_get_wstr
wgetnstr test: ncurses test_getstr
wgetparent test: test_opaque
@@ -741,8 +780,8 @@ wgetscrreg test: test_opaque
wgetstr test: test_getstr
whline test: testcurs
whline_set lib: ncurses
-win_wch test: inch_wide
-win_wchnstr test: inch_wide
+win_wch test: inch_wide savescreen
+win_wchnstr test: inch_wide view
win_wchstr test: inch_wide
winch test: inchs knight testcurs
winchnstr test: inchs
@@ -760,12 +799,12 @@ winsstr test: inserts
winstr test: test_instr
winwstr test: test_inwstr
wmouse_trafo test: ncurses
-wmove test: chgat clip_printw demo_altkeys demo_defkey demo_keyok demo_menus demo_panels firstlast foldkeys inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses newdemo redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs worm
-wnoutrefresh test: demo_menus ditto edit_field inch_wide inchs ins_wide inserts knight movewindow ncurses redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque
-wprintw test: chgat clip_printw demo_defkey demo_forms demo_keyok demo_menus demo_panels edit_field inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
+wmove test: chgat clip_printw demo_altkeys demo_defkey demo_keyok demo_menus demo_panels dump_window extended_color firstlast foldkeys inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses newdemo padview picsmap redraw savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm
+wnoutrefresh test: demo_menus ditto inch_wide inchs ins_wide inserts knight movewindow ncurses padview popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque
+wprintw test: chgat clip_printw demo_defkey demo_forms demo_keyok demo_menus demo_panels inch_wide inchs ins_wide insdelln inserts knight ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
wredrawln test: redraw
-wrefresh test: chgat clip_printw demo_forms demo_keyok demo_menus demo_panels edit_field firstlast ins_wide insdelln inserts knight lrtest movewindow ncurses newdemo redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testcurs view worm xmas
-wresize test: cardfile ncurses
+wrefresh test: chgat clip_printw demo_forms demo_keyok demo_menus demo_panels firstlast ins_wide insdelln inserts knight lrtest movewindow ncurses newdemo popup_msg redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testcurs worm xmas
+wresize test: cardfile demo_menus ncurses
wscanw test: testcurs
wscrl test: ncurses testcurs
wsetscrreg test: ncurses testcurs
@@ -800,3 +839,5 @@ show_panel test: demo_panels ncurses
top_panel test: cardfile demo_panels ncurses
update_panels test: cardfile demo_panels ncurses
update_panels_sp -
+
+-- vile:txtmode
diff --git a/test/aclocal.m4 b/test/aclocal.m4
index 86d3ee45d712..423744872bee 100644
--- a/test/aclocal.m4
+++ b/test/aclocal.m4
@@ -1,5 +1,5 @@
dnl***************************************************************************
-dnl Copyright (c) 2003-2013,2014 Free Software Foundation, Inc. *
+dnl Copyright (c) 2003-2019,2020 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 *
@@ -26,7 +26,7 @@ dnl sale, use or other dealings in this Software without prior written *
dnl authorization. *
dnl***************************************************************************
dnl
-dnl $Id: aclocal.m4,v 1.94 2014/02/10 00:43:27 tom Exp $
+dnl $Id: aclocal.m4,v 1.172 2020/01/18 17:30:44 tom Exp $
dnl
dnl Author: Thomas E. Dickey
dnl
@@ -36,11 +36,36 @@ dnl These macros are maintained separately from NCURSES. The copyright on
dnl this file applies to the aggregation of macros and does not affect use of
dnl these macros in other applications.
dnl
-dnl See http://invisible-island.net/autoconf/ for additional information.
+dnl See these pages for additional information:
+dnl https://invisible-island.net/autoconf/
+dnl https://invisible-island.net/autoconf/my-autoconf.html
dnl
dnl ---------------------------------------------------------------------------
dnl ---------------------------------------------------------------------------
-dnl CF_ACVERSION_CHECK version: 4 updated: 2013/03/04 19:52:56
+dnl AM_LANGINFO_CODESET version: 4 updated: 2015/04/18 08:56:57
+dnl -------------------
+dnl Inserted as requested by gettext 0.10.40
+dnl File from /usr/share/aclocal
+dnl codeset.m4
+dnl ====================
+dnl serial AM1
+dnl
+dnl From Bruno Haible.
+AC_DEFUN([AM_LANGINFO_CODESET],
+[
+AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
+ [AC_TRY_LINK([#include <langinfo.h>],
+ [char* cs = nl_langinfo(CODESET);],
+ am_cv_langinfo_codeset=yes,
+ am_cv_langinfo_codeset=no)
+ ])
+ if test $am_cv_langinfo_codeset = yes; then
+ AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
+ [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
+ fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49
dnl ------------------
dnl Conditionally generate script according to whether we're using a given autoconf.
dnl
@@ -49,7 +74,7 @@ dnl $2 = code to use if AC_ACVERSION is at least as high as $1.
dnl $3 = code to use if AC_ACVERSION is older than $1.
define([CF_ACVERSION_CHECK],
[
-ifdef([AC_ACVERSION], ,[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])dnl
+ifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl
ifdef([m4_version_compare],
[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])],
[CF_ACVERSION_COMPARE(
@@ -66,7 +91,7 @@ define([CF_ACVERSION_COMPARE],
[ifelse([$8], , ,[$8])],
[ifelse([$9], , ,[$9])])])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ADD_CFLAGS version: 10 updated: 2010/05/26 05:38:42
+dnl CF_ADD_CFLAGS version: 13 updated: 2017/02/25 18:57:40
dnl -------------
dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
dnl The second parameter if given makes this macro verbose.
@@ -84,51 +109,51 @@ cf_new_extra_cppflags=
for cf_add_cflags in $1
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags)
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags)
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+ CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags)
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+ CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[[^"]]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -137,24 +162,24 @@ done
if test -n "$cf_new_cflags" ; then
ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
- CFLAGS="$CFLAGS $cf_new_cflags"
+ CF_APPEND_TEXT(CFLAGS,$cf_new_cflags)
fi
if test -n "$cf_new_cppflags" ; then
ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags)
fi
if test -n "$cf_new_extra_cppflags" ; then
ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)])
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags)
fi
AC_SUBST(EXTRA_CPPFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ADD_INCDIR version: 13 updated: 2010/05/26 16:44:57
+dnl CF_ADD_INCDIR version: 15 updated: 2018/06/20 20:23:13
dnl -------------
dnl Add an include-directory to $CPPFLAGS. Don't add /usr/include, since it's
dnl redundant. We don't normally need to add -I/usr/local/include for gcc,
@@ -185,7 +210,7 @@ if test -n "$1" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+ CF_APPEND_TEXT(CPPFLAGS,-I$cf_add_incdir)
AC_TRY_COMPILE([#include <stdio.h>],
[printf("Hello")],
[],
@@ -205,6 +230,8 @@ if test -n "$1" ; then
else
break
fi
+ else
+ break
fi
done
done
@@ -219,7 +246,7 @@ dnl $1 = library to add, without the "-l"
dnl $2 = variable to update (default $LIBS)
AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ADD_LIBDIR version: 9 updated: 2010/05/26 16:44:57
+dnl CF_ADD_LIBDIR version: 10 updated: 2015/04/18 08:56:57
dnl -------------
dnl Adds to the library-path
dnl
@@ -231,37 +258,55 @@ dnl
AC_DEFUN([CF_ADD_LIBDIR],
[
if test -n "$1" ; then
- for cf_add_libdir in $1
- do
- if test $cf_add_libdir = /usr/lib ; then
- :
- elif test -d $cf_add_libdir
- then
- cf_have_libdir=no
- if test -n "$LDFLAGS$LIBS" ; then
- # a loop is needed to ensure we can add subdirs of existing dirs
- for cf_test_libdir in $LDFLAGS $LIBS ; do
- if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
- cf_have_libdir=yes; break
- fi
- done
- fi
- if test "$cf_have_libdir" = no ; then
- CF_VERBOSE(adding $cf_add_libdir to library-path)
- ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])"
- fi
- fi
- done
+ for cf_add_libdir in $1
+ do
+ if test $cf_add_libdir = /usr/lib ; then
+ :
+ elif test -d $cf_add_libdir
+ then
+ cf_have_libdir=no
+ if test -n "$LDFLAGS$LIBS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_libdir in $LDFLAGS $LIBS ; do
+ if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
+ cf_have_libdir=yes; break
+ fi
+ done
+ fi
+ if test "$cf_have_libdir" = no ; then
+ CF_VERBOSE(adding $cf_add_libdir to library-path)
+ ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])"
+ fi
+ fi
+ done
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ADD_LIBS version: 1 updated: 2010/06/02 05:03:05
+dnl CF_ADD_LIBS version: 3 updated: 2019/11/02 16:47:33
dnl -----------
-dnl Add one or more libraries, used to enforce consistency.
+dnl Add one or more libraries, used to enforce consistency. Libraries are
+dnl prepended to an existing list, since their dependencies are assumed to
+dnl already exist in the list.
dnl
dnl $1 = libraries to add, with the "-l", etc.
dnl $2 = variable to update (default $LIBS)
-AC_DEFUN([CF_ADD_LIBS],[ifelse($2,,LIBS,[$2])="$1 [$]ifelse($2,,LIBS,[$2])"])dnl
+AC_DEFUN([CF_ADD_LIBS],[
+cf_add_libs="[$]ifelse($2,,LIBS,[$2])"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $1; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+ifelse($2,,LIBS,[$2])="$cf_add_libs"
+])dnl
dnl ---------------------------------------------------------------------------
dnl CF_ADD_LIB_AFTER version: 3 updated: 2013/07/09 21:27:22
dnl ----------------
@@ -298,6 +343,16 @@ ifelse([$5],NONE,,[(test -z "$5" || test x$5 = xNONE || test "x$4" != "x$5") &&]
}
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55
+dnl --------------
+dnl use this macro for appending text without introducing an extra blank at
+dnl the beginning
+define([CF_APPEND_TEXT],
+[
+ test -n "[$]$1" && $1="[$]$1 "
+ $1="[$]{$1}$2"
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
dnl --------------
dnl Allow user to disable a normally-on option.
@@ -310,7 +365,7 @@ dnl Allow user to enable a normally-off option.
AC_DEFUN([CF_ARG_ENABLE],
[CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ARG_OPTION version: 4 updated: 2010/05/26 05:38:42
+dnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14
dnl -------------
dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus
dnl values.
@@ -323,37 +378,75 @@ dnl $4 = action if perform if option is default
dnl $5 = default option value (either 'yes' or 'no')
AC_DEFUN([CF_ARG_OPTION],
[AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes)
- if test "$enableval" != "$5" ; then
+ if test "$enableval" != "$5" ; then
ifelse([$3],,[ :]dnl
,[ $3]) ifelse([$4],,,[
- else
- $4])
- fi],[enableval=$5 ifelse([$4],,,[
- $4
+ else
+ $4])
+ fi],[enableval=$5 ifelse([$4],,,[
+ $4
])dnl
- ])])dnl
+])])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CC_ENV_FLAGS version: 1 updated: 2012/10/03 05:25:49
+dnl CF_CC_ENV_FLAGS version: 9 updated: 2018/07/29 18:03:26
dnl ---------------
dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
-dnl into CC. This will not help with broken scripts that wrap the compiler with
-dnl options, but eliminates a more common category of user confusion.
+dnl into CC. This will not help with broken scripts that wrap the compiler
+dnl with options, but eliminates a more common category of user confusion.
+dnl
+dnl In particular, it addresses the problem of being able to run the C
+dnl preprocessor in a consistent manner.
+dnl
+dnl Caveat: this also disallows blanks in the pathname for the compiler, but
+dnl the nuisance of having inconsistent settings for compiler and preprocessor
+dnl outweighs that limitation.
AC_DEFUN([CF_CC_ENV_FLAGS],
[
# This should have been defined by AC_PROG_CC
: ${CC:=cc}
+AC_MSG_CHECKING(\$CFLAGS variable)
+case "x$CFLAGS" in
+(*-[[IUD]]*)
+ AC_MSG_RESULT(broken)
+ AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options)
+ cf_flags="$CFLAGS"
+ CFLAGS=
+ for cf_arg in $cf_flags
+ do
+ CF_ADD_CFLAGS($cf_arg)
+ done
+ ;;
+(*)
+ AC_MSG_RESULT(ok)
+ ;;
+esac
+
AC_MSG_CHECKING(\$CC variable)
-case "$CC" in #(vi
-*[[\ \ ]]-[[IUD]]*)
+case "$CC" in
+(*[[\ \ ]]-*)
AC_MSG_RESULT(broken)
- AC_MSG_WARN(your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options)
+ AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
# humor him...
- cf_flags=`echo "$CC" | sed -e 's/^[[^ ]]*[[ ]]//'`
- CC=`echo "$CC" | sed -e 's/[[ ]].*//'`
- CF_ADD_CFLAGS($cf_flags)
+ cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
+ cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'`
+ CC="$cf_prog"
+ for cf_arg in $cf_flags
+ do
+ case "x$cf_arg" in
+ (x-[[IUDfgOW]]*)
+ CF_ADD_CFLAGS($cf_arg)
+ ;;
+ (*)
+ CC="$CC $cf_arg"
+ ;;
+ esac
+ done
+ CF_VERBOSE(resulting CC: '$CC')
+ CF_VERBOSE(resulting CFLAGS: '$CFLAGS')
+ CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS')
;;
-*)
+(*)
AC_MSG_RESULT(ok)
;;
esac
@@ -394,7 +487,7 @@ if test ".$system_name" != ".$cf_cv_system_name" ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_CFLAGS version: 2 updated: 2001/12/30 19:09:58
+dnl CF_CHECK_CFLAGS version: 3 updated: 2014/07/22 05:32:57
dnl ---------------
dnl Conditionally add to $CFLAGS and $CPPFLAGS values which are derived from
dnl a build-configuration such as imake. These have the pitfall that they
@@ -406,16 +499,73 @@ CF_VERBOSE(checking additions to CFLAGS)
cf_check_cflags="$CFLAGS"
cf_check_cppflags="$CPPFLAGS"
CF_ADD_CFLAGS($1,yes)
-if test "$cf_check_cflags" != "$CFLAGS" ; then
+if test "x$cf_check_cflags" != "x$CFLAGS" ; then
AC_TRY_LINK([#include <stdio.h>],[printf("Hello world");],,
[CF_VERBOSE(test-compile failed. Undoing change to \$CFLAGS)
- if test "$cf_check_cppflags" != "$CPPFLAGS" ; then
+ if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then
CF_VERBOSE(but keeping change to \$CPPFLAGS)
fi
CFLAGS="$cf_check_flags"])
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_CHECK_CURSES_LIB version: 2 updated: 2018/01/03 04:47:33
+dnl -------------------
+dnl $1 = nominal library name, used also for header lookup
+dnl $2 = suffix to append to library name
+dnl $3 = function to check for using AC_CHECK_LIB
+dnl $4 = optional parameter list for $3
+AC_DEFUN([CF_CHECK_CURSES_LIB],
+[
+AC_REQUIRE([CF_PKG_CONFIG])
+
+cf_have_curses_lib=no
+
+: ${NCURSES_CONFIG_PKG:=none}
+if test "x${NCURSES_CONFIG_PKG}" = xnone; then
+ :
+elif test "x${PKG_CONFIG:=none}" != xnone; then
+ AC_MSG_CHECKING(pkg-config for $1$2)
+ if "$PKG_CONFIG" --exists $1$2 ; then
+ AC_MSG_RESULT(yes)
+
+ AC_MSG_CHECKING(if the $1$2 package files work)
+
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_save_LIBS="$LIBS"
+
+ CF_ADD_CFLAGS(`$PKG_CONFIG --cflags $1$2`)
+ CF_ADD_LIBS(`$PKG_CONFIG --libs $1$2`)
+
+ AC_TRY_LINK([#include <$1.h>],
+ [(void) $3 ( ]ifelse([$4],,,[[$4]])[ );],
+ [AC_TRY_RUN([#include <$1.h>
+ int main(void)
+ { (void) $3 ( ]ifelse([$4],,,[[$4]])[ ); return 0; }],
+ [cf_have_curses_lib=yes],
+ [cf_have_curses_lib=no],
+ [cf_have_curses_lib=maybe])],
+ [cf_have_curses_lib=no])
+ AC_MSG_RESULT($cf_have_curses_lib)
+ test "$cf_have_curses_lib" = maybe && cf_have_curses_lib=yes
+ if test "$cf_have_curses_lib" != "yes"
+ then
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ else
+ CF_UPPER(cf_upper,have_lib$1)
+ AC_DEFINE_UNQUOTED($cf_upper,1)
+ fi
+ fi
+fi
+if test "$cf_have_curses_lib" = no; then
+ AC_CHECK_LIB($1$2,$3,[
+ CF_UPPER(cf_upper,have_lib$1)
+ CF_ADD_LIBS(-l$1$2)
+ AC_DEFINE_UNQUOTED($cf_upper,1)])
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_CLANG_COMPILER version: 2 updated: 2013/11/19 19:23:35
dnl -----------------
dnl Check if the given compiler is really clang. clang's C driver defines
@@ -449,6 +599,66 @@ cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
fi
])
dnl ---------------------------------------------------------------------------
+dnl CF_CONST_X_STRING version: 3 updated: 2020/01/11 18:39:22
+dnl -----------------
+dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
+dnl character-strings.
+dnl
+dnl It is ambiguous because the specification accommodated the pre-ANSI
+dnl compilers bundled by more than one vendor in lieu of providing a standard C
+dnl compiler other than by costly add-ons. Because of this, the specification
+dnl did not take into account the use of const for telling the compiler that
+dnl string literals would be in readonly memory.
+dnl
+dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to
+dnl let the compiler decide how to represent Xt's strings which were #define'd.
+dnl That does not solve the problem of using the block of Xt's strings which
+dnl are compiled into the library (and is less efficient than one might want).
+dnl
+dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both
+dnl when compiling the library and compiling using the library, to tell the
+dnl compiler that String is const.
+AC_DEFUN([CF_CONST_X_STRING],
+[
+AC_REQUIRE([AC_PATH_XTRA])
+
+CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING])
+
+AC_TRY_COMPILE(
+[
+#include <stdlib.h>
+#include <X11/Intrinsic.h>
+],
+[String foo = malloc(1)],[
+
+AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
+ AC_TRY_COMPILE(
+ [
+#define _CONST_X_STRING /* X11R7.8 (perhaps) */
+#undef XTSTRINGDEFINES /* X11R5 and later */
+#include <stdlib.h>
+#include <X11/Intrinsic.h>
+ ],[String foo = malloc(1); *foo = 0],[
+ cf_cv_const_x_string=no
+ ],[
+ cf_cv_const_x_string=yes
+ ])
+])
+
+CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING])
+
+case $cf_cv_const_x_string in
+(no)
+ CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES)
+ ;;
+(*)
+ CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING)
+ ;;
+esac
+
+])
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_CURSES_ACS_MAP version: 7 updated: 2012/10/06 16:39:58
dnl -----------------
dnl Check for likely values of acs_map[]:
@@ -470,48 +680,60 @@ done
test "$cf_cv_curses_acs_map" != unknown && AC_DEFINE_UNQUOTED(CURSES_ACS_ARRAY,$cf_cv_curses_acs_map,[Define as needed to override ncurses prefix _nc_])
])
dnl ---------------------------------------------------------------------------
-dnl CF_CURSES_CHECK_DATA version: 4 updated: 2011/01/15 16:39:24
+dnl CF_CURSES_CHECK_DATA version: 7 updated: 2018/01/03 04:47:33
dnl --------------------
dnl Check if curses.h defines the given data/variable.
dnl Use this after CF_NCURSES_CONFIG or CF_CURSES_CONFIG.
+dnl
+dnl $1 = data item(s) to check for
+dnl $2 = action on success, e.g., "break" to quit checking a series of choices
AC_DEFUN([CF_CURSES_CHECK_DATA],
[
-AC_MSG_CHECKING(for data $1 declaration in ${cf_cv_ncurses_header:-curses.h})
+for cf_data in $1
+do
+AC_MSG_CHECKING(for data $cf_data declaration in ${cf_cv_ncurses_header:-curses.h})
AC_TRY_COMPILE(CF__CURSES_HEAD,[
-void *foo = &($1)
-],cf_result=yes,cf_result=no)
+void *foo = &($cf_data)
+],[cf_result=yes
+],[cf_result=no])
AC_MSG_RESULT($cf_result)
if test $cf_result = yes ; then
- CF_UPPER(cf_result,have_curses_data_$1)
+ CF_UPPER(cf_result,have_curses_data_$cf_data)
AC_DEFINE_UNQUOTED($cf_result)
+ ifelse($2,,,[$2])
else
- AC_MSG_CHECKING(for data $1 in library)
+ AC_MSG_CHECKING(for data $cf_data in library)
# BSD linkers insist on making weak linkage, but resolve at runtime.
AC_TRY_RUN(CF__CURSES_HEAD
[
-extern char $1;
+extern char $cf_data;
int main(void)
{
- void *foo = &($1);
+ void *foo = &($cf_data);
+ fprintf(stderr, "testing linkage of $cf_data:%p\n", (void *)foo);
${cf_cv_main_return:-return}(foo == 0);
-}],[cf_result=yes],[cf_result=no],[
+}],[cf_result=yes
+],[cf_result=no],[
# cross-compiling
AC_TRY_LINK(CF__CURSES_HEAD
-[extern char $1;],[
+[extern char $cf_data;],[
do {
- void *foo = &($1);
+ void *foo = &($cf_data);
+ fprintf(stderr, "testing linkage of $cf_data:%p\n", (void *)foo);
${cf_cv_main_return:-return}(foo == 0);
} while (0)
],[cf_result=yes],[cf_result=no])
])
AC_MSG_RESULT($cf_result)
if test $cf_result = yes ; then
- CF_UPPER(cf_result,decl_curses_data_$1)
+ CF_UPPER(cf_result,decl_curses_data_$cf_data)
AC_DEFINE_UNQUOTED($cf_result)
+ # do not exit loop here, since we prefer system's declarations
fi
fi
+done
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_CURSES_CHECK_TYPE version: 4 updated: 2012/10/06 16:39:58
@@ -548,22 +770,22 @@ CF_NCURSES_VERSION
CF_CURSES_LIBS
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CURSES_CPPFLAGS version: 11 updated: 2011/04/09 14:51:08
+dnl CF_CURSES_CPPFLAGS version: 13 updated: 2018/06/20 20:23:13
dnl ------------------
dnl Look for the curses headers.
AC_DEFUN([CF_CURSES_CPPFLAGS],[
AC_CACHE_CHECK(for extra include directories,cf_cv_curses_incdir,[
cf_cv_curses_incdir=no
-case $host_os in #(vi
-hpux10.*) #(vi
+case $host_os in
+(hpux10.*)
if test "x$cf_cv_screen" = "xcurses_colr"
then
test -d /usr/include/curses_colr && \
cf_cv_curses_incdir="-I/usr/include/curses_colr"
fi
;;
-sunos3*|sunos4*)
+(sunos3*|sunos4*)
if test "x$cf_cv_screen" = "xcurses_5lib"
then
test -d /usr/5lib && \
@@ -573,13 +795,16 @@ sunos3*|sunos4*)
;;
esac
])
-test "$cf_cv_curses_incdir" != no && CPPFLAGS="$CPPFLAGS $cf_cv_curses_incdir"
+if test "$cf_cv_curses_incdir" != no
+then
+ CF_APPEND_TEXT(CPPFLAGS,$cf_cv_curses_incdir)
+fi
CF_CURSES_HEADER
CF_TERM_HEADER
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CURSES_FUNCS version: 17 updated: 2011/05/14 16:07:29
+dnl CF_CURSES_FUNCS version: 19 updated: 2018/01/03 04:47:33
dnl ---------------
dnl Curses-functions are a little complicated, since a lot of them are macros.
AC_DEFUN([CF_CURSES_FUNCS],
@@ -600,8 +825,9 @@ do
[
#ifndef ${cf_func}
long foo = (long)(&${cf_func});
-if (foo + 1234 > 5678)
- ${cf_cv_main_return:-return}(foo);
+fprintf(stderr, "testing linkage of $cf_func:%p\n", (void *)foo);
+if (foo + 1234L > 5678L)
+ ${cf_cv_main_return:-return}(foo != 0);
#endif
],
[cf_result=yes],
@@ -618,7 +844,7 @@ if (foo + 1234 > 5678)
done
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CURSES_HEADER version: 3 updated: 2011/05/01 19:47:45
+dnl CF_CURSES_HEADER version: 5 updated: 2015/04/23 20:35:30
dnl ----------------
dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common
dnl variations of ncurses' installs.
@@ -627,11 +853,9 @@ dnl $1 = ncurses when looking for ncurses, or is empty
AC_DEFUN([CF_CURSES_HEADER],[
AC_CACHE_CHECK(if we have identified curses headers,cf_cv_ncurses_header,[
cf_cv_ncurses_header=none
-for cf_header in ifelse($1,,,[ \
- $1/ncurses.h \
- $1/curses.h]) \
- ncurses.h \
- curses.h ifelse($1,,[ncurses/ncurses.h ncurses/curses.h])
+for cf_header in \
+ ncurses.h ifelse($1,,,[$1/ncurses.h]) \
+ curses.h ifelse($1,,,[$1/curses.h]) ifelse($1,,[ncurses/ncurses.h ncurses/curses.h])
do
AC_TRY_COMPILE([#include <${cf_header}>],
[initscr(); tgoto("?", 0,0)],
@@ -647,7 +871,7 @@ fi
AC_CHECK_HEADERS($cf_cv_ncurses_header)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CURSES_LIBS version: 37 updated: 2013/02/09 17:33:50
+dnl CF_CURSES_LIBS version: 42 updated: 2018/06/20 20:23:13
dnl --------------
dnl Look for the curses libraries. Older curses implementations may require
dnl termcap/termlib to be linked as well. Call CF_CURSES_CPPFLAGS first.
@@ -656,17 +880,17 @@ AC_DEFUN([CF_CURSES_LIBS],[
AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
AC_MSG_CHECKING(if we have identified curses libraries)
AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
- [initscr(); tgoto("?", 0,0)],
- cf_result=yes,
- cf_result=no)
+ [initscr(); tgoto("?", 0,0)],
+ cf_result=yes,
+ cf_result=no)
AC_MSG_RESULT($cf_result)
if test "$cf_result" = no ; then
-case $host_os in #(vi
-freebsd*) #(vi
- AC_CHECK_LIB(mytinfo,tgoto,[CF_ADD_LIBS(-lmytinfo)])
- ;;
-hpux10.*) #(vi
+case $host_os in
+(freebsd*)
+ AC_CHECK_LIB(mytinfo,tgoto,[CF_ADD_LIBS(-lmytinfo)])
+ ;;
+(hpux10.*)
# Looking at HPUX 10.20, the Hcurses library is the oldest (1997), cur_colr
# next (1998), and xcurses "newer" (2000). There is no header file for
# Hcurses; the subdirectory curses_colr has the headers (curses.h and
@@ -680,14 +904,14 @@ hpux10.*) #(vi
AC_CHECK_LIB(Hcurses,initscr,[
# HP's header uses __HP_CURSES, but user claims _HP_CURSES.
CF_ADD_LIBS(-lHcurses)
- CPPFLAGS="$CPPFLAGS -D__HP_CURSES -D_HP_CURSES"
+ CF_APPEND_TEXT(CPPFLAGS,-D__HP_CURSES -D_HP_CURSES)
ac_cv_func_initscr=yes
])])
fi
;;
-linux*)
+(linux*)
case `arch 2>/dev/null` in
- x86_64)
+ (x86_64)
if test -d /lib64
then
CF_ADD_LIBDIR(/lib64)
@@ -695,21 +919,21 @@ linux*)
CF_ADD_LIBDIR(/lib)
fi
;;
- *)
+ (*)
CF_ADD_LIBDIR(/lib)
;;
esac
;;
-sunos3*|sunos4*)
+(sunos3*|sunos4*)
if test "x$cf_cv_screen" = "xcurses_5lib"
then
if test -d /usr/5lib ; then
CF_ADD_LIBDIR(/usr/5lib)
CF_ADD_LIBS(-lcurses -ltermcap)
fi
- fi
- ac_cv_func_initscr=yes
- ;;
+ fi
+ ac_cv_func_initscr=yes
+ ;;
esac
if test ".$ac_cv_func_initscr" != .yes ; then
@@ -729,7 +953,10 @@ if test ".$ac_cv_func_initscr" != .yes ; then
AC_CHECK_FUNC(tgoto,[cf_term_lib=predefined],[
for cf_term_lib in $cf_check_list otermcap termcap tinfo termlib unknown
do
- AC_CHECK_LIB($cf_term_lib,tgoto,[break])
+ AC_CHECK_LIB($cf_term_lib,tgoto,[
+ : ${cf_nculib_root:=$cf_term_lib}
+ break
+ ])
done
])
fi
@@ -740,42 +967,41 @@ if test ".$ac_cv_func_initscr" != .yes ; then
then
for cf_curs_lib in $cf_check_list xcurses jcurses pdcurses unknown
do
- AC_CHECK_LIB($cf_curs_lib,initscr,[break])
+ LIBS="-l$cf_curs_lib $cf_save_LIBS"
+ if test "$cf_term_lib" = unknown || test "$cf_term_lib" = "$cf_curs_lib" ; then
+ AC_MSG_CHECKING(if we can link with $cf_curs_lib library)
+ AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
+ [initscr()],
+ [cf_result=yes],
+ [cf_result=no])
+ AC_MSG_RESULT($cf_result)
+ test $cf_result = yes && break
+ elif test "$cf_curs_lib" = "$cf_term_lib" ; then
+ cf_result=no
+ elif test "$cf_term_lib" != predefined ; then
+ AC_MSG_CHECKING(if we need both $cf_curs_lib and $cf_term_lib libraries)
+ AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
+ [initscr(); tgoto((char *)0, 0, 0);],
+ [cf_result=no],
+ [
+ LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS"
+ AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
+ [initscr()],
+ [cf_result=yes],
+ [cf_result=error])
+ ])
+ AC_MSG_RESULT($cf_result)
+ test $cf_result != error && break
+ fi
done
fi
test $cf_curs_lib = unknown && AC_MSG_ERROR(no curses library found)
-
- LIBS="-l$cf_curs_lib $cf_save_LIBS"
- if test "$cf_term_lib" = unknown ; then
- AC_MSG_CHECKING(if we can link with $cf_curs_lib library)
- AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
- [initscr()],
- [cf_result=yes],
- [cf_result=no])
- AC_MSG_RESULT($cf_result)
- test $cf_result = no && AC_MSG_ERROR(Cannot link curses library)
- elif test "$cf_curs_lib" = "$cf_term_lib" ; then
- :
- elif test "$cf_term_lib" != predefined ; then
- AC_MSG_CHECKING(if we need both $cf_curs_lib and $cf_term_lib libraries)
- AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
- [initscr(); tgoto((char *)0, 0, 0);],
- [cf_result=no],
- [
- LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS"
- AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
- [initscr()],
- [cf_result=yes],
- [cf_result=error])
- ])
- AC_MSG_RESULT($cf_result)
- fi
fi
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CURSES_TERM_H version: 10 updated: 2012/10/06 08:57:51
+dnl CF_CURSES_TERM_H version: 11 updated: 2015/04/15 19:08:48
dnl ----------------
dnl SVr4 curses should have term.h as well (where it puts the definitions of
dnl the low-level interface). This may not be true in old/broken implementations,
@@ -792,8 +1018,8 @@ AC_CACHE_CHECK(for term.h, cf_cv_term_header,[
cf_header_list="term.h ncurses/term.h ncursesw/term.h"
-case ${cf_cv_ncurses_header:-curses.h} in #(vi
-*/*)
+case ${cf_cv_ncurses_header:-curses.h} in
+(*/*)
cf_header_item=`echo ${cf_cv_ncurses_header:-curses.h} | sed -e 's%\..*%%' -e 's%/.*%/%'`term.h
cf_header_list="$cf_header_item $cf_header_list"
;;
@@ -810,8 +1036,8 @@ do
[cf_cv_term_header=no])
done
-case $cf_cv_term_header in #(vi
-no)
+case $cf_cv_term_header in
+(no)
# If curses is ncurses, some packagers still mess it up by trying to make
# us use GNU termcap. This handles the most common case.
for cf_header in ncurses/term.h ncursesw/term.h
@@ -832,20 +1058,20 @@ make an error
esac
])
-case $cf_cv_term_header in #(vi
-term.h) #(vi
+case $cf_cv_term_header in
+(term.h)
AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h])
;;
-ncurses/term.h) #(vi
+(ncurses/term.h)
AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h])
;;
-ncursesw/term.h)
+(ncursesw/term.h)
AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h])
;;
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CURSES_UNCTRL_H version: 3 updated: 2013/11/03 06:26:10
+dnl CF_CURSES_UNCTRL_H version: 4 updated: 2015/04/15 19:08:48
dnl ------------------
dnl Any X/Open curses implementation must have unctrl.h, but ncurses packages
dnl may put it in a subdirectory (along with ncurses' other headers, of
@@ -862,8 +1088,8 @@ AC_CACHE_CHECK(for unctrl.h, cf_cv_unctrl_header,[
cf_header_list="unctrl.h ncurses/unctrl.h ncursesw/unctrl.h"
-case ${cf_cv_ncurses_header:-curses.h} in #(vi
-*/*)
+case ${cf_cv_ncurses_header:-curses.h} in
+(*/*)
cf_header_item=`echo ${cf_cv_ncurses_header:-curses.h} | sed -e 's%\..*%%' -e 's%/.*%/%'`unctrl.h
cf_header_list="$cf_header_item $cf_header_list"
;;
@@ -881,20 +1107,20 @@ do
done
])
-case $cf_cv_unctrl_header in #(vi
-no)
+case $cf_cv_unctrl_header in
+(no)
AC_MSG_WARN(unctrl.h header not found)
;;
esac
-case $cf_cv_unctrl_header in #(vi
-unctrl.h) #(vi
+case $cf_cv_unctrl_header in
+(unctrl.h)
AC_DEFINE(HAVE_UNCTRL_H,1,[Define to 1 if we have unctrl.h])
;;
-ncurses/unctrl.h) #(vi
+(ncurses/unctrl.h)
AC_DEFINE(HAVE_NCURSES_UNCTRL_H,1,[Define to 1 if we have ncurses/unctrl.h])
;;
-ncursesw/unctrl.h)
+(ncursesw/unctrl.h)
AC_DEFINE(HAVE_NCURSESW_UNCTRL_H,1,[Define to 1 if we have ncursesw/unctrl.h])
;;
esac
@@ -962,7 +1188,7 @@ dnl ----------
dnl "dirname" is not portable, so we fake it with a shell script.
AC_DEFUN([CF_DIRNAME],[$1=`echo $2 | sed -e 's%/[[^/]]*$%%'`])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_DISABLE_ECHO version: 12 updated: 2012/10/06 16:30:28
+dnl CF_DISABLE_ECHO version: 13 updated: 2015/04/18 08:56:57
dnl ---------------
dnl You can always use "make -n" to see the actual options, but it's hard to
dnl pick out/analyze warning messages when the compile-line is long.
@@ -979,17 +1205,17 @@ AC_MSG_CHECKING(if you want to see long compiling messages)
CF_ARG_DISABLE(echo,
[ --disable-echo do not display "compiling" commands],
[
- ECHO_LT='--silent'
- ECHO_LD='@echo linking [$]@;'
- RULE_CC='@echo compiling [$]<'
- SHOW_CC='@echo compiling [$]@'
- ECHO_CC='@'
+ ECHO_LT='--silent'
+ ECHO_LD='@echo linking [$]@;'
+ RULE_CC='@echo compiling [$]<'
+ SHOW_CC='@echo compiling [$]@'
+ ECHO_CC='@'
],[
- ECHO_LT=''
- ECHO_LD=''
- RULE_CC=''
- SHOW_CC=''
- ECHO_CC=''
+ ECHO_LT=''
+ ECHO_LD=''
+ RULE_CC=''
+ SHOW_CC=''
+ ECHO_CC=''
])
AC_MSG_RESULT($enableval)
AC_SUBST(ECHO_LT)
@@ -1041,7 +1267,47 @@ if test "$cf_disable_rpath_hack" = no ; then
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_ENABLE_WARNINGS version: 4 updated: 2009/07/26 17:53:03
+dnl CF_ENABLE_STRING_HACKS version: 5 updated: 2016/10/08 17:34:11
+dnl ----------------------
+dnl On a few platforms, the compiler and/or loader nags with untruthful
+dnl comments stating that "most" uses of strcat/strcpy/sprintf are incorrect,
+dnl and implying that most uses of the recommended alternatives are correct.
+dnl
+dnl Factually speaking, no one has actually counted the number of uses of these
+dnl functions versus the total of incorrect uses. Samples of a few thousand
+dnl instances are meaningless compared to the hundreds of millions of lines of
+dnl existing C code.
+dnl
+dnl strlcat/strlcpy are (as of 2012) non-standard, and are available on some
+dnl platforms, in implementations of varying quality. Likewise, snprintf is
+dnl standard - but evolved through phases, and older implementations are likely
+dnl to yield surprising results, as documented in manpages on various systems.
+AC_DEFUN([CF_ENABLE_STRING_HACKS],
+[
+AC_MSG_CHECKING(if you want to work around bogus compiler/loader warnings)
+AC_ARG_ENABLE(string-hacks,
+ [ --enable-string-hacks work around bogus compiler/loader warnings],
+ [with_string_hacks=$enableval],
+ [with_string_hacks=no])
+AC_MSG_RESULT($with_string_hacks)
+
+if test "x$with_string_hacks" = "xyes"; then
+ AC_DEFINE(USE_STRING_HACKS,1,[Define to 1 to work around bogus compiler/loader warnings])
+ AC_MSG_WARN(enabling string-hacks to work around bogus compiler/loader warnings)
+ AC_CHECK_FUNC(strlcat,[
+ AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
+ ],[
+ AC_CHECK_LIB(bsd,strlcat,[
+ CF_ADD_LIB(bsd)
+ AC_CHECK_HEADERS(bsd/string.h)
+ AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
+ ])
+ ])
+ AC_CHECK_FUNCS( strlcpy snprintf )
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_ENABLE_WARNINGS version: 5 updated: 2017/09/29 20:01:16
dnl ------------------
dnl Configure-option to enable gcc warnings
AC_DEFUN([CF_ENABLE_WARNINGS],[
@@ -1056,7 +1322,7 @@ AC_MSG_RESULT($with_warnings)
if test "$with_warnings" = "yes"
then
CF_GCC_ATTRIBUTES
- CF_GCC_WARNINGS
+ CF_GCC_WARNINGS($1)
fi
fi
])dnl
@@ -1111,7 +1377,7 @@ fi
])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_FIND_LINKAGE version: 19 updated: 2010/05/29 16:31:02
+dnl CF_FIND_LINKAGE version: 21 updated: 2018/06/20 20:23:13
dnl ---------------
dnl Find a library (specifically the linkage used in the code fragment),
dnl searching for it if it is not already in the library path.
@@ -1159,73 +1425,74 @@ AC_TRY_LINK([$1],[$2],[
cf_cv_find_linkage_$3=no
LIBS="$cf_save_LIBS"
- CF_VERBOSE(find linkage for $3 library)
- CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)])
-
- cf_save_CPPFLAGS="$CPPFLAGS"
- cf_test_CPPFLAGS="$CPPFLAGS"
-
- CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6]))
- for cf_cv_header_path_$3 in $cf_search
- do
- if test -d $cf_cv_header_path_$3 ; then
- CF_VERBOSE(... testing $cf_cv_header_path_$3)
- CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_$3"
- AC_TRY_COMPILE([$1],[$2],[
- CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3)
- cf_cv_find_linkage_$3=maybe
- cf_test_CPPFLAGS="$CPPFLAGS"
- break],[
- CPPFLAGS="$cf_save_CPPFLAGS"
- ])
- fi
- done
-
- if test "$cf_cv_find_linkage_$3" = maybe ; then
-
- CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)])
-
- cf_save_LIBS="$LIBS"
- cf_save_LDFLAGS="$LDFLAGS"
-
- ifelse([$6],,,[
- CPPFLAGS="$cf_test_CPPFLAGS"
- LIBS="-l$3 $7 $cf_save_LIBS"
- AC_TRY_LINK([$1],[$2],[
- CF_VERBOSE(... found $3 library in system)
- cf_cv_find_linkage_$3=yes])
- CPPFLAGS="$cf_save_CPPFLAGS"
- LIBS="$cf_save_LIBS"
- ])
-
- if test "$cf_cv_find_linkage_$3" != yes ; then
- CF_LIBRARY_PATH(cf_search,$3)
- for cf_cv_library_path_$3 in $cf_search
- do
- if test -d $cf_cv_library_path_$3 ; then
- CF_VERBOSE(... testing $cf_cv_library_path_$3)
- CPPFLAGS="$cf_test_CPPFLAGS"
- LIBS="-l$3 $7 $cf_save_LIBS"
- LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3"
- AC_TRY_LINK([$1],[$2],[
- CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3)
- cf_cv_find_linkage_$3=yes
- cf_cv_library_file_$3="-l$3"
- break],[
- CPPFLAGS="$cf_save_CPPFLAGS"
- LIBS="$cf_save_LIBS"
- LDFLAGS="$cf_save_LDFLAGS"
- ])
- fi
- done
- CPPFLAGS="$cf_save_CPPFLAGS"
- LDFLAGS="$cf_save_LDFLAGS"
- fi
-
- else
- cf_cv_find_linkage_$3=no
- fi
- ],$7)
+ CF_VERBOSE(find linkage for $3 library)
+ CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)])
+
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_test_CPPFLAGS="$CPPFLAGS"
+
+ CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6]))
+ for cf_cv_header_path_$3 in $cf_search
+ do
+ if test -d $cf_cv_header_path_$3 ; then
+ CF_VERBOSE(... testing $cf_cv_header_path_$3)
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ CF_APPEND_TEXT(CPPFLAGS,-I$cf_cv_header_path_$3)
+ AC_TRY_COMPILE([$1],[$2],[
+ CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3)
+ cf_cv_find_linkage_$3=maybe
+ cf_test_CPPFLAGS="$CPPFLAGS"
+ break],[
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ ])
+ fi
+ done
+
+ if test "$cf_cv_find_linkage_$3" = maybe ; then
+
+ CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)])
+
+ cf_save_LIBS="$LIBS"
+ cf_save_LDFLAGS="$LDFLAGS"
+
+ ifelse([$6],,,[
+ CPPFLAGS="$cf_test_CPPFLAGS"
+ LIBS="-l$3 $7 $cf_save_LIBS"
+ AC_TRY_LINK([$1],[$2],[
+ CF_VERBOSE(... found $3 library in system)
+ cf_cv_find_linkage_$3=yes])
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ ])
+
+ if test "$cf_cv_find_linkage_$3" != yes ; then
+ CF_LIBRARY_PATH(cf_search,$3)
+ for cf_cv_library_path_$3 in $cf_search
+ do
+ if test -d $cf_cv_library_path_$3 ; then
+ CF_VERBOSE(... testing $cf_cv_library_path_$3)
+ CPPFLAGS="$cf_test_CPPFLAGS"
+ LIBS="-l$3 $7 $cf_save_LIBS"
+ LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3"
+ AC_TRY_LINK([$1],[$2],[
+ CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3)
+ cf_cv_find_linkage_$3=yes
+ cf_cv_library_file_$3="-l$3"
+ break],[
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ LDFLAGS="$cf_save_LDFLAGS"
+ ])
+ fi
+ done
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LDFLAGS="$cf_save_LDFLAGS"
+ fi
+
+ else
+ cf_cv_find_linkage_$3=no
+ fi
+ ],$7)
])
LIBS="$cf_save_LIBS"
@@ -1241,7 +1508,7 @@ ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5])
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_CURSES_VERSION version: 6 updated: 2012/10/06 16:39:58
+dnl CF_FUNC_CURSES_VERSION version: 7 updated: 2017/05/10 18:31:29
dnl ----------------------
dnl Solaris has a data item 'curses_version', which confuses AC_CHECK_FUNCS.
dnl It's a character string "SVR4", not documented.
@@ -1250,7 +1517,7 @@ AC_DEFUN([CF_FUNC_CURSES_VERSION],
AC_CACHE_CHECK(for function curses_version, cf_cv_func_curses_version,[
AC_TRY_RUN([
#include <${cf_cv_ncurses_header:-curses.h}>
-int main()
+int main(void)
{
char temp[1024];
sprintf(temp, "%s\n", curses_version());
@@ -1263,7 +1530,35 @@ rm -f core])
test "$cf_cv_func_curses_version" = yes && AC_DEFINE(HAVE_CURSES_VERSION,1,[Define to 1 if we have curses_version function])
])
dnl ---------------------------------------------------------------------------
-dnl CF_GCC_ATTRIBUTES version: 16 updated: 2012/10/02 20:55:03
+dnl CF_FUNC_OPENPTY version: 5 updated: 2015/09/12 14:46:50
+dnl ---------------
+dnl Check for openpty() function, along with <pty.h> header. It may need the
+dnl "util" library as well.
+AC_DEFUN([CF_FUNC_OPENPTY],
+[
+AC_CHECK_LIB(util,openpty,cf_cv_lib_util=yes,cf_cv_lib_util=no)
+AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[
+ cf_save_LIBS="$LIBS"
+ test $cf_cv_lib_util = yes && { CF_ADD_LIB(util) }
+ for cf_header in pty.h libutil.h util.h
+ do
+ AC_TRY_LINK([
+#include <$cf_header>
+],[
+ int x = openpty((int *)0, (int *)0, (char *)0,
+ (struct termios *)0, (struct winsize *)0);
+],[
+ cf_cv_func_openpty=$cf_header
+ break
+],[
+ cf_cv_func_openpty=no
+])
+ done
+ LIBS="$cf_save_LIBS"
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_GCC_ATTRIBUTES version: 17 updated: 2015/04/12 15:39:00
dnl -----------------
dnl Test for availability of useful gcc __attribute__ directives to quiet
dnl compiler warnings. Though useful, not all are supported -- and contrary
@@ -1317,20 +1612,20 @@ EOF
cf_directive="__attribute__(($cf_attribute))"
echo "checking for $CC $cf_directive" 1>&AC_FD_CC
- case $cf_attribute in #(vi
- printf) #(vi
+ case $cf_attribute in
+ (printf)
cf_printf_attribute=yes
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE 1
EOF
;;
- scanf) #(vi
+ (scanf)
cf_scanf_attribute=yes
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE 1
EOF
;;
- *) #(vi
+ (*)
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE $cf_directive
EOF
@@ -1340,11 +1635,11 @@ EOF
if AC_TRY_EVAL(ac_compile); then
test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
cat conftest.h >>confdefs.h
- case $cf_attribute in #(vi
- noreturn) #(vi
+ case $cf_attribute in
+ (noreturn)
AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc])
;;
- printf) #(vi
+ (printf)
cf_value='/* nothing */'
if test "$cf_printf_attribute" != no ; then
cf_value='__attribute__((format(printf,fmt,var)))'
@@ -1352,7 +1647,7 @@ EOF
fi
AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc])
;;
- scanf) #(vi
+ (scanf)
cf_value='/* nothing */'
if test "$cf_scanf_attribute" != no ; then
cf_value='__attribute__((format(scanf,fmt,var)))'
@@ -1360,7 +1655,7 @@ EOF
fi
AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc])
;;
- unused) #(vi
+ (unused)
AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc])
;;
esac
@@ -1373,9 +1668,10 @@ rm -rf conftest*
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GCC_VERSION version: 7 updated: 2012/10/18 06:46:33
+dnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36
dnl --------------
-dnl Find version of gcc
+dnl Find version of gcc, and (because icc/clang pretend to be gcc without being
+dnl compatible), attempt to determine if icc/clang is actually used.
AC_DEFUN([CF_GCC_VERSION],[
AC_REQUIRE([AC_PROG_CC])
GCC_VERSION=none
@@ -1385,14 +1681,17 @@ if test "$GCC" = yes ; then
test -z "$GCC_VERSION" && GCC_VERSION=unknown
AC_MSG_RESULT($GCC_VERSION)
fi
+CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
+CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GCC_WARNINGS version: 31 updated: 2013/11/19 19:23:35
+dnl CF_GCC_WARNINGS version: 37 updated: 2020/01/05 20:04:12
dnl ---------------
dnl Check if the compiler supports useful warning options. There's a few that
dnl we don't use, simply because they're too noisy:
dnl
dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
+dnl -Winline (usually not worthwhile)
dnl -Wredundant-decls (system headers make this too noisy)
dnl -Wtraditional (combines too many unrelated messages, only a few useful)
dnl -Wwrite-strings (too noisy, but should review occasionally). This
@@ -1409,14 +1708,11 @@ dnl
AC_DEFUN([CF_GCC_WARNINGS],
[
AC_REQUIRE([CF_GCC_VERSION])
-CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
-CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
-
+if test "x$have_x" = xyes; then CF_CONST_X_STRING fi
cat > conftest.$ac_ext <<EOF
#line __oline__ "${as_me:-configure}"
int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
EOF
-
if test "$INTEL_COMPILER" = yes
then
# The "-wdXXX" options suppress warnings:
@@ -1451,8 +1747,7 @@ then
fi
done
CFLAGS="$cf_save_CFLAGS"
-
-elif test "$GCC" = yes
+elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
then
AC_CHECKING([for $CC warning options])
cf_save_CFLAGS="$CFLAGS"
@@ -1474,25 +1769,22 @@ then
Wpointer-arith \
Wshadow \
Wstrict-prototypes \
- Wundef $cf_gcc_warnings $cf_warn_CONST $1
+ Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1
do
CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
if AC_TRY_EVAL(ac_compile); then
test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
- case $cf_opt in #(vi
- Wcast-qual) #(vi
- CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES"
- ;;
- Winline) #(vi
+ case $cf_opt in
+ (Winline)
case $GCC_VERSION in
- [[34]].*)
+ ([[34]].*)
CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
continue;;
esac
;;
- Wpointer-arith) #(vi
+ (Wpointer-arith)
case $GCC_VERSION in
- [[12]].*)
+ ([[12]].*)
CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
continue;;
esac
@@ -1508,7 +1800,7 @@ rm -rf conftest*
AC_SUBST(EXTRA_CFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GETOPT_HEADER version: 5 updated: 2012/10/06 16:39:58
+dnl CF_GETOPT_HEADER version: 6 updated: 2014/07/22 14:45:54
dnl ----------------
dnl Check for getopt's variables which are commonly defined in stdlib.h,
dnl unistd.h or (nonstandard) in getopt.h
@@ -1527,11 +1819,14 @@ AC_TRY_COMPILE([
done
])
if test $cf_cv_getopt_header != none ; then
- AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if we need to include getopt.h])
+ AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if getopt variables are declared in header])
+fi
+if test $cf_cv_getopt_header = getopt.h ; then
+ AC_DEFINE(NEED_GETOPT_H,1,[Define to 1 if we must include getopt.h])
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GNU_SOURCE version: 6 updated: 2005/07/09 13:23:07
+dnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41
dnl -------------
dnl Check if we must define _GNU_SOURCE to get a reasonable value for
dnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect
@@ -1539,29 +1834,110 @@ dnl (or misfeature) of glibc2, which breaks portability of many applications,
dnl since it is interwoven with GNU extensions.
dnl
dnl Well, yes we could work around it...
+dnl
+dnl Parameters:
+dnl $1 is the nominal value for _XOPEN_SOURCE
AC_DEFUN([CF_GNU_SOURCE],
[
-AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
+cf_gnu_xopen_source=ifelse($1,,500,$1)
+
+AC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[
AC_TRY_COMPILE([#include <sys/types.h>],[
-#ifndef _XOPEN_SOURCE
-make an error
-#endif],
- [cf_cv_gnu_source=no],
- [cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
- AC_TRY_COMPILE([#include <sys/types.h>],[
-#ifdef _XOPEN_SOURCE
-make an error
-#endif],
- [cf_cv_gnu_source=no],
- [cf_cv_gnu_source=yes])
- CPPFLAGS="$cf_save"
- ])
+ #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0
+ return 0;
+ #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0
+ return 0;
+ #else
+ # error not GNU C library
+ #endif],
+ [cf_cv_gnu_library=yes],
+ [cf_cv_gnu_library=no])
])
-test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+
+if test x$cf_cv_gnu_library = xyes; then
+
+ # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
+ # was changed to help a little. newlib incorporated the change about 4
+ # years later.
+ AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[
+ cf_save="$CPPFLAGS"
+ CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2)
+ return 0;
+ #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3)
+ return 0;
+ #else
+ # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old
+ #endif],
+ [cf_cv_gnu_library_219=yes],
+ [cf_cv_gnu_library_219=no])
+ CPPFLAGS="$cf_save"
+ ])
+
+ if test "x$cf_cv_gnu_library_219" = xyes; then
+ cf_save="$CPPFLAGS"
+ AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[
+ CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source)
+ AC_TRY_COMPILE([
+ #include <limits.h>
+ #include <sys/types.h>
+ ],[
+ #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1)
+ return 0;
+ #else
+ # error GNU C library is too old
+ #endif],
+ [cf_cv_gnu_dftsrc_219=yes],
+ [cf_cv_gnu_dftsrc_219=no])
+ ])
+ test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
+ else
+ cf_cv_gnu_dftsrc_219=maybe
+ fi
+
+ if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
+
+ AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+ #ifndef _XOPEN_SOURCE
+ #error expected _XOPEN_SOURCE to be defined
+ #endif],
+ [cf_cv_gnu_source=no],
+ [cf_save="$CPPFLAGS"
+ CF_ADD_CFLAGS(-D_GNU_SOURCE)
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+ #ifdef _XOPEN_SOURCE
+ #error expected _XOPEN_SOURCE to be undefined
+ #endif],
+ [cf_cv_gnu_source=no],
+ [cf_cv_gnu_source=yes])
+ CPPFLAGS="$cf_save"
+ ])
+ ])
+
+ if test "$cf_cv_gnu_source" = yes
+ then
+ AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[
+ CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE)
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+ #ifdef _DEFAULT_SOURCE
+ #error expected _DEFAULT_SOURCE to be undefined
+ #endif],
+ [cf_cv_default_source=no],
+ [cf_cv_default_source=yes])
+ ])
+ if test "$cf_cv_default_source" = yes
+ then
+ CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
+ fi
+ fi
+ fi
+
+fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_HEADER_PATH version: 12 updated: 2010/05/05 05:22:40
+dnl CF_HEADER_PATH version: 13 updated: 2015/04/15 19:08:48
dnl --------------
dnl Construct a search-list of directories for a nonstandard header-file
dnl
@@ -1577,8 +1953,8 @@ cf_header_path_list=""
if test -n "${CFLAGS}${CPPFLAGS}" ; then
for cf_header_path in $CPPFLAGS $CFLAGS
do
- case $cf_header_path in #(vi
- -I*)
+ case $cf_header_path in
+ (-I*)
cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE)
cf_header_path_list="$cf_header_path_list [$]$1"
@@ -1607,11 +1983,12 @@ test -d "$oldincludedir" && {
$1="[$]$1 $cf_header_path_list"
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_HELP_MESSAGE version: 3 updated: 1998/01/14 10:56:23
+dnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54
dnl ---------------
dnl Insert text into the help-message, for readability, from AC_ARG_WITH.
AC_DEFUN([CF_HELP_MESSAGE],
-[AC_DIVERT_HELP([$1])dnl
+[CF_ACVERSION_CHECK(2.53,[],[
+AC_DIVERT_HELP($1)])dnl
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_INHERIT_SCRIPT version: 2 updated: 2003/03/01 23:50:42
@@ -1622,7 +1999,101 @@ AC_DEFUN([CF_INHERIT_SCRIPT],
test -f $1 || ( test -f ../$1 && cp ../$1 ./ )
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_INTEL_COMPILER version: 5 updated: 2013/02/10 10:41:05
+dnl CF_INSTALL_OPTS version: 2 updated: 2018/08/18 12:19:21
+dnl ---------------
+dnl prompt for/fill-in useful install-program options
+AC_DEFUN([CF_INSTALL_OPTS],
+[
+CF_INSTALL_OPT_S
+CF_INSTALL_OPT_P
+CF_INSTALL_OPT_O
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INSTALL_OPT_O version: 2 updated: 2015/05/15 19:45:35
+dnl ----------------
+dnl Almost all "install" programs default to the current user's ownership.
+dnl Almost - MINIX is an exception.
+AC_DEFUN([CF_INSTALL_OPT_O],
+[
+AC_MSG_CHECKING(if install needs to be told about ownership)
+case `$ac_config_guess` in
+(*minix)
+ with_install_o=yes
+ ;;
+(*)
+ with_install_o=no
+ ;;
+esac
+
+AC_MSG_RESULT($with_install_o)
+if test "x$with_install_o" = xyes
+then
+ INSTALL_OPT_O=`id root|sed -e 's/uid=[[0-9]]*(/ -o /' -e 's/gid=[[0-9]]*(/ -g /' -e 's/ [[^=[:space:]]][[^=[:space:]]]*=.*/ /' -e 's/)//g'`
+else
+ INSTALL_OPT_O=
+fi
+
+AC_SUBST(INSTALL_OPT_O)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INSTALL_OPT_P version: 1 updated: 2018/08/18 12:19:21
+dnl ----------------
+dnl Some install-programs accept a "-p" option to preserve file modification
+dnl timestamps. That can be useful as an install option, as well as a way to
+dnl avoid the need for ranlib after copying a static archive.
+AC_DEFUN([CF_INSTALL_OPT_P],
+[
+: ${INSTALL:=install}
+AC_CACHE_CHECK(if install accepts -p option, cf_cv_install_p,[
+ rm -rf conftest*
+ date >conftest.in
+ mkdir conftest.out
+ sleep 3
+ if $INSTALL -p conftest.in conftest.out 2>/dev/null
+ then
+ if test -f conftest.out/conftest.in
+ then
+ test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \
+ test conftest.out/conftest.in -nt conftest.in 2>conftest.err
+ if test -s conftest.err
+ then
+ cf_cv_install_p=no
+ else
+ cf_cv_install_p=yes
+ fi
+ else
+ cf_cv_install_p=no
+ fi
+ else
+ cf_cv_install_p=no
+ fi
+ rm -rf conftest*
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INSTALL_OPT_S version: 2 updated: 2018/08/18 12:19:21
+dnl ----------------
+dnl By default, we should strip executables which are installed, but leave the
+dnl ability to suppress that for unit-testing.
+AC_DEFUN([CF_INSTALL_OPT_S],
+[
+AC_MSG_CHECKING(if you want to install stripped executables)
+CF_ARG_DISABLE(stripping,
+ [ --disable-stripping do not strip (debug info) installed executables],
+ [with_stripping=no],
+ [with_stripping=yes])
+AC_MSG_RESULT($with_stripping)
+
+if test "$with_stripping" = yes
+then
+ INSTALL_OPT_S="-s"
+else
+ INSTALL_OPT_S=
+fi
+AC_SUBST(INSTALL_OPT_S)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INTEL_COMPILER version: 7 updated: 2015/04/12 15:39:00
dnl -----------------
dnl Check if the given compiler is really the Intel compiler for Linux. It
dnl tries to imitate gcc, but does not return an error when it finds a mismatch
@@ -1641,7 +2112,7 @@ ifelse([$2],,INTEL_COMPILER,[$2])=no
if test "$ifelse([$1],,[$1],GCC)" = yes ; then
case $host_os in
- linux*|gnu*)
+ (linux*|gnu*)
AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler)
cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc"
@@ -1651,7 +2122,7 @@ if test "$ifelse([$1],,[$1],GCC)" = yes ; then
make an error
#endif
],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
-cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
+cf_save_CFLAGS="$cf_save_CFLAGS -we147"
],[])
ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
@@ -1660,7 +2131,7 @@ cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LD_RPATH_OPT version: 5 updated: 2011/07/17 14:48:41
+dnl CF_LD_RPATH_OPT version: 8 updated: 2018/08/18 16:36:35
dnl ---------------
dnl For the given system and compiler, find the compiler flags to pass to the
dnl loader to use the "rpath" feature.
@@ -1669,52 +2140,55 @@ AC_DEFUN([CF_LD_RPATH_OPT],
AC_REQUIRE([CF_CHECK_CACHE])
LD_RPATH_OPT=
-AC_MSG_CHECKING(for an rpath option)
-case $cf_cv_system_name in #(vi
-irix*) #(vi
- if test "$GCC" = yes; then
+if test "x$cf_cv_enable_rpath" != xno
+then
+ AC_MSG_CHECKING(for an rpath option)
+ case $cf_cv_system_name in
+ (irix*)
+ if test "$GCC" = yes; then
+ LD_RPATH_OPT="-Wl,-rpath,"
+ else
+ LD_RPATH_OPT="-rpath "
+ fi
+ ;;
+ (linux*|gnu*|k*bsd*-gnu|freebsd*)
LD_RPATH_OPT="-Wl,-rpath,"
- else
+ ;;
+ (openbsd[[2-9]].*|mirbsd*)
+ LD_RPATH_OPT="-Wl,-rpath,"
+ ;;
+ (dragonfly*)
LD_RPATH_OPT="-rpath "
- fi
- ;;
-linux*|gnu*|k*bsd*-gnu) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-openbsd[[2-9]].*|mirbsd*) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-dragonfly*|freebsd*) #(vi
- LD_RPATH_OPT="-rpath "
- ;;
-netbsd*) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-osf*|mls+*) #(vi
- LD_RPATH_OPT="-rpath "
- ;;
-solaris2*) #(vi
- LD_RPATH_OPT="-R"
- ;;
-*)
- ;;
-esac
-AC_MSG_RESULT($LD_RPATH_OPT)
+ ;;
+ (netbsd*)
+ LD_RPATH_OPT="-Wl,-rpath,"
+ ;;
+ (osf*|mls+*)
+ LD_RPATH_OPT="-rpath "
+ ;;
+ (solaris2*)
+ LD_RPATH_OPT="-R"
+ ;;
+ (*)
+ ;;
+ esac
+ AC_MSG_RESULT($LD_RPATH_OPT)
-case "x$LD_RPATH_OPT" in #(vi
-x-R*)
- AC_MSG_CHECKING(if we need a space after rpath option)
- cf_save_LIBS="$LIBS"
- CF_ADD_LIBS(${LD_RPATH_OPT}$libdir)
- AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes)
- LIBS="$cf_save_LIBS"
- AC_MSG_RESULT($cf_rpath_space)
- test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
- ;;
-esac
+ case "x$LD_RPATH_OPT" in
+ (x-R*)
+ AC_MSG_CHECKING(if we need a space after rpath option)
+ cf_save_LIBS="$LIBS"
+ CF_ADD_LIBS(${LD_RPATH_OPT}$libdir)
+ AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes)
+ LIBS="$cf_save_LIBS"
+ AC_MSG_RESULT($cf_rpath_space)
+ test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
+ ;;
+ esac
+fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LIBRARY_PATH version: 9 updated: 2010/03/28 12:52:50
+dnl CF_LIBRARY_PATH version: 10 updated: 2015/04/15 19:08:48
dnl ---------------
dnl Construct a search-list of directories for a nonstandard library-file
dnl
@@ -1728,8 +2202,8 @@ cf_library_path_list=""
if test -n "${LDFLAGS}${LIBS}" ; then
for cf_library_path in $LDFLAGS $LIBS
do
- case $cf_library_path in #(vi
- -L*)
+ case $cf_library_path in
+ (-L*)
cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE)
cf_library_path_list="$cf_library_path_list [$]$1"
@@ -1780,7 +2254,7 @@ AC_SUBST(MAKE_UPPER_TAGS)
AC_SUBST(MAKE_LOWER_TAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MATH_LIB version: 8 updated: 2010/05/29 16:31:02
+dnl CF_MATH_LIB version: 9 updated: 2017/01/21 11:06:25
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
@@ -1791,6 +2265,7 @@ AC_CACHE_CHECK(if -lm needed for math functions,
cf_cv_need_libm,[
AC_TRY_LINK([
#include <stdio.h>
+ #include <stdlib.h>
#include <math.h>
],
[double x = rand(); printf("result = %g\n", ]ifelse([$2],,sin(x),$2)[)],
@@ -1804,7 +2279,7 @@ ifelse($1,,[
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_MIXEDCASE_FILENAMES version: 6 updated: 2013/10/08 17:47:05
+dnl CF_MIXEDCASE_FILENAMES version: 7 updated: 2015/04/12 15:39:00
dnl ----------------------
dnl Check if the file-system supports mixed-case filenames. If we're able to
dnl create a lowercase name and see it as uppercase, it doesn't support that.
@@ -1812,11 +2287,11 @@ AC_DEFUN([CF_MIXEDCASE_FILENAMES],
[
AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
if test "$cross_compiling" = yes ; then
- case $target_alias in #(vi
- *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*) #(vi
+ case $target_alias in
+ (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*)
cf_cv_mixedcase=no
;;
- *)
+ (*)
cf_cv_mixedcase=yes
;;
esac
@@ -1875,46 +2350,97 @@ printf("old\n");
,[$1=no])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_NCURSES_CONFIG version: 10 updated: 2012/10/06 08:57:51
+dnl CF_NCURSES_CONFIG version: 21 updated: 2018/06/20 20:23:13
dnl -----------------
-dnl Tie together the configure-script macros for ncurses.
-dnl Prefer the "-config" script from ncurses 6.x, to simplify analysis.
-dnl Allow that to be overridden using the $NCURSES_CONFIG environment variable.
+dnl Tie together the configure-script macros for ncurses, preferring these in
+dnl order:
+dnl a) ".pc" files for pkg-config, using $NCURSES_CONFIG_PKG
+dnl b) the "-config" script from ncurses, using $NCURSES_CONFIG
+dnl c) just plain libraries
dnl
dnl $1 is the root library name (default: "ncurses")
-AC_DEFUN([CF_NCURSES_CONFIG],
-[
+AC_DEFUN([CF_NCURSES_CONFIG],[
+AC_REQUIRE([CF_PKG_CONFIG])
cf_ncuconfig_root=ifelse($1,,ncurses,$1)
+cf_have_ncuconfig=no
-echo "Looking for ${cf_ncuconfig_root}-config"
+if test "x${PKG_CONFIG:=none}" != xnone; then
+ AC_MSG_CHECKING(pkg-config for $cf_ncuconfig_root)
+ if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
+ AC_MSG_RESULT(yes)
-CF_ACVERSION_CHECK(2.52,
- [AC_CHECK_TOOLS(NCURSES_CONFIG, ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)],
- [AC_PATH_PROGS(NCURSES_CONFIG, ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)])
+ AC_MSG_CHECKING(if the $cf_ncuconfig_root package files work)
+ cf_have_ncuconfig=unknown
+
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_save_LIBS="$LIBS"
+
+ CF_ADD_CFLAGS(`$PKG_CONFIG --cflags $cf_ncuconfig_root`)
+ CF_ADD_LIBS(`$PKG_CONFIG --libs $cf_ncuconfig_root`)
+
+ AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
+ [initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);],
+ [AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}>
+ int main(void)
+ { char *xx = curses_version(); return (xx == 0); }],
+ [cf_have_ncuconfig=yes],
+ [cf_have_ncuconfig=no],
+ [cf_have_ncuconfig=maybe])],
+ [cf_have_ncuconfig=no])
+ AC_MSG_RESULT($cf_have_ncuconfig)
+ test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
+ if test "$cf_have_ncuconfig" != "yes"
+ then
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ NCURSES_CONFIG_PKG=none
+ else
+ AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
+ NCURSES_CONFIG_PKG=$cf_ncuconfig_root
+ CF_TERM_HEADER
+ fi
+
+ else
+ AC_MSG_RESULT(no)
+ NCURSES_CONFIG_PKG=none
+ fi
+else
+ NCURSES_CONFIG_PKG=none
+fi
-if test "$NCURSES_CONFIG" != none ; then
+if test "x$cf_have_ncuconfig" = "xno"; then
+ cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}"
-CPPFLAGS="$CPPFLAGS `$NCURSES_CONFIG --cflags`"
-CF_ADD_LIBS(`$NCURSES_CONFIG --libs`)
+ CF_ACVERSION_CHECK(2.52,
+ [AC_CHECK_TOOLS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)],
+ [AC_PATH_PROGS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)])
-# even with config script, some packages use no-override for curses.h
-CF_CURSES_HEADER(ifelse($1,,ncurses,$1))
+ if test "$NCURSES_CONFIG" != none ; then
-dnl like CF_NCURSES_CPPFLAGS
-AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
+ CF_ADD_CFLAGS(`$NCURSES_CONFIG --cflags`)
+ CF_ADD_LIBS(`$NCURSES_CONFIG --libs`)
-dnl like CF_NCURSES_LIBS
-CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_ncuconfig_root)
-AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
+ # even with config script, some packages use no-override for curses.h
+ CF_CURSES_HEADER(ifelse($1,,ncurses,$1))
-dnl like CF_NCURSES_VERSION
-cf_cv_ncurses_version=`$NCURSES_CONFIG --version`
+ dnl like CF_NCURSES_CPPFLAGS
+ AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
-else
+ dnl like CF_NCURSES_LIBS
+ CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_ncuconfig_root)
+ AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
+
+ dnl like CF_NCURSES_VERSION
+ cf_cv_ncurses_version=`$NCURSES_CONFIG --version`
-CF_NCURSES_CPPFLAGS(ifelse($1,,ncurses,$1))
-CF_NCURSES_LIBS(ifelse($1,,ncurses,$1))
+ else
+
+ CF_NCURSES_CPPFLAGS(ifelse($1,,ncurses,$1))
+ CF_NCURSES_LIBS(ifelse($1,,ncurses,$1))
+ fi
+else
+ NCURSES_CONFIG=none
fi
])dnl
dnl ---------------------------------------------------------------------------
@@ -2004,7 +2530,7 @@ AC_TRY_LINK([
test "$cf_cv_ncurses_ext_funcs" = yes && AC_DEFINE(NCURSES_EXT_FUNCS,1,[Define to 1 if we have ncurses extensions])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_NCURSES_HEADER version: 3 updated: 2012/10/06 08:57:51
+dnl CF_NCURSES_HEADER version: 4 updated: 2015/04/15 19:08:48
dnl -----------------
dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common
dnl variations of ncurses' installs.
@@ -2053,24 +2579,24 @@ fi
# Set definitions to allow ifdef'ing for ncurses.h
-case $cf_cv_ncurses_header in # (vi
-*ncurses.h)
+case $cf_cv_ncurses_header in
+(*ncurses.h)
AC_DEFINE(HAVE_NCURSES_H,1,[Define to 1 if we have ncurses.h])
;;
esac
-case $cf_cv_ncurses_header in # (vi
-ncurses/curses.h|ncurses/ncurses.h)
+case $cf_cv_ncurses_header in
+(ncurses/curses.h|ncurses/ncurses.h)
AC_DEFINE(HAVE_NCURSES_NCURSES_H,1,[Define to 1 if we have ncurses/ncurses.h])
;;
-ncursesw/curses.h|ncursesw/ncurses.h)
+(ncursesw/curses.h|ncursesw/ncurses.h)
AC_DEFINE(HAVE_NCURSESW_NCURSES_H,1,[Define to 1 if we have ncursesw/ncurses.h])
;;
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_NCURSES_LIBS version: 16 updated: 2010/11/20 17:02:38
+dnl CF_NCURSES_LIBS version: 17 updated: 2015/04/15 19:08:48
dnl ---------------
dnl Look for the ncurses library. This is a little complicated on Linux,
dnl because it may be linked with the gpm (general purpose mouse) library.
@@ -2096,8 +2622,8 @@ AC_CHECK_LIB(gpm,Gpm_Open,
[LIBS="$cf_ncurses_SAVE"],
[cf_ncurses_LIBS="-lgpm"])])
-case $host_os in #(vi
-freebsd*)
+case $host_os in
+(freebsd*)
# This is only necessary if you are linking against an obsolete
# version of ncurses (but it should do no harm, since it's static).
if test "$cf_nculib_root" = ncurses ; then
@@ -2138,7 +2664,22 @@ CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_nculib_root)
AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_NCURSES_VERSION version: 14 updated: 2012/10/06 08:57:51
+dnl CF_NCURSES_PTHREADS version: 2 updated: 2016/04/22 05:07:41
+dnl -------------------
+dnl Use this followup check to ensure that we link with pthreads if ncurses
+dnl uses it.
+AC_DEFUN([CF_NCURSES_PTHREADS],[
+: ${cf_nculib_root:=ifelse($1,,ncurses,$1)}
+AC_CHECK_LIB($cf_nculib_root,_nc_init_pthreads,
+ cf_cv_ncurses_pthreads=yes,
+ cf_cv_ncurses_pthreads=no)
+if test "$cf_cv_ncurses_pthreads" = yes
+then
+ CF_ADD_LIBS(-lpthread)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_NCURSES_VERSION version: 15 updated: 2017/05/09 19:26:10
dnl ------------------
dnl Check for the version of ncurses, to aid in reporting bugs, etc.
dnl Call CF_CURSES_CPPFLAGS first, or CF_NCURSES_CPPFLAGS. We don't use
@@ -2153,7 +2694,7 @@ AC_CACHE_CHECK(for ncurses version, cf_cv_ncurses_version,[
AC_TRY_RUN([
#include <${cf_cv_ncurses_header:-curses.h}>
#include <stdio.h>
-int main()
+int main(void)
{
FILE *fp = fopen("$cf_tempfile", "w");
#ifdef NCURSES_VERSION
@@ -2255,7 +2796,7 @@ AC_TRY_COMPILE([
test "$cf_cv_netbsd_menu_h" = yes && AC_DEFINE(HAVE_NETBSD_MENU_H,1,[Define to 1 if we appear to be using NetBSD menu.h])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_NO_LEAKS_OPTION version: 5 updated: 2012/10/02 20:55:03
+dnl CF_NO_LEAKS_OPTION version: 6 updated: 2015/04/12 15:39:00
dnl ------------------
dnl see CF_WITH_NO_LEAKS
AC_DEFUN([CF_NO_LEAKS_OPTION],[
@@ -2271,12 +2812,12 @@ AC_ARG_WITH($1,
[with_$1=])
AC_MSG_RESULT(${with_$1:-no})
-case .$with_cflags in #(vi
-.*-g*)
- case .$CFLAGS in #(vi
- .*-g*) #(vi
+case .$with_cflags in
+(.*-g*)
+ case .$CFLAGS in
+ (.*-g*)
;;
- *)
+ (*)
CF_ADD_CFLAGS([-g])
;;
esac
@@ -2284,7 +2825,7 @@ case .$with_cflags in #(vi
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PATH_SYNTAX version: 14 updated: 2012/06/19 20:58:54
+dnl CF_PATH_SYNTAX version: 16 updated: 2015/04/18 08:56:57
dnl --------------
dnl Check the argument to see that it looks like a pathname. Rewrite it if it
dnl begins with one of the prefix/exec_prefix variables, and then again if the
@@ -2292,36 +2833,36 @@ dnl result begins with 'NONE'. This is necessary to work around autoconf's
dnl delayed evaluation of those symbols.
AC_DEFUN([CF_PATH_SYNTAX],[
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
-fi
-
-case ".[$]$1" in #(vi
-.\[$]\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[[a-zA-Z]]:[[\\/]]*) #(vi OS/2 EMX
- ;;
-.\[$]{*prefix}*|.\[$]{*dir}*) #(vi
- eval $1="[$]$1"
- case ".[$]$1" in #(vi
- .NONE/*)
- $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
- ;;
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".[$]$1" in
+(.\[$]\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX
+ ;;
+(.\[$]{*prefix}*|.\[$]{*dir}*)
+ eval $1="[$]$1"
+ case ".[$]$1" in
+ (.NONE/*)
+ $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
+ ;;
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PDCURSES_X11 version: 13 updated: 2012/10/06 16:39:58
+dnl CF_PDCURSES_X11 version: 14 updated: 2018/06/20 20:23:13
dnl ---------------
dnl Configure for PDCurses' X11 library
AC_DEFUN([CF_PDCURSES_X11],[
@@ -2333,7 +2874,7 @@ CF_ACVERSION_CHECK(2.52,
if test "$XCURSES_CONFIG" != none ; then
-CPPFLAGS="$CPPFLAGS `$XCURSES_CONFIG --cflags`"
+CF_ADD_CFLAGS(`$XCURSES_CONFIG --cflags`)
CF_ADD_LIBS(`$XCURSES_CONFIG --libs`)
cf_cv_lib_XCurses=yes
@@ -2366,7 +2907,7 @@ else
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PKG_CONFIG version: 7 updated: 2011/04/29 04:53:22
+dnl CF_PKG_CONFIG version: 10 updated: 2015/04/26 18:06:58
dnl -------------
dnl Check for the package-config program, unless disabled by command-line.
AC_DEFUN([CF_PKG_CONFIG],
@@ -2378,16 +2919,16 @@ AC_ARG_WITH(pkg-config,
[cf_pkg_config=yes])
AC_MSG_RESULT($cf_pkg_config)
-case $cf_pkg_config in #(vi
-no) #(vi
+case $cf_pkg_config in
+(no)
PKG_CONFIG=none
;;
-yes) #(vi
+(yes)
CF_ACVERSION_CHECK(2.52,
[AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)],
[AC_PATH_PROG(PKG_CONFIG, pkg-config, none)])
;;
-*)
+(*)
PKG_CONFIG=$withval
;;
esac
@@ -2395,12 +2936,14 @@ esac
test -z "$PKG_CONFIG" && PKG_CONFIG=none
if test "$PKG_CONFIG" != none ; then
CF_PATH_SYNTAX(PKG_CONFIG)
+elif test "x$cf_pkg_config" != xno ; then
+ AC_MSG_WARN(pkg-config is not installed)
fi
AC_SUBST(PKG_CONFIG)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_POSIX_C_SOURCE version: 8 updated: 2010/05/26 05:38:42
+dnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17
dnl -----------------
dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
dnl
@@ -2415,7 +2958,10 @@ dnl
dnl Parameters:
dnl $1 is the nominal value for _POSIX_C_SOURCE
AC_DEFUN([CF_POSIX_C_SOURCE],
-[
+[AC_REQUIRE([CF_POSIX_VISIBLE])dnl
+
+if test "$cf_cv_posix_visible" = no; then
+
cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
cf_save_CFLAGS="$CFLAGS"
@@ -2432,15 +2978,15 @@ make an error
#endif],
[cf_cv_posix_c_source=no],
[cf_want_posix_source=no
- case .$cf_POSIX_C_SOURCE in #(vi
- .[[12]]??*) #(vi
+ case .$cf_POSIX_C_SOURCE in
+ (.[[12]]??*)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
;;
- .2) #(vi
+ (.2)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
cf_want_posix_source=yes
;;
- .*)
+ (.*)
cf_want_posix_source=yes
;;
esac
@@ -2453,7 +2999,8 @@ make an error
fi
CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
CFLAGS="$cf_trim_CFLAGS"
- CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+ CPPFLAGS="$cf_trim_CPPFLAGS"
+ CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source)
CF_MSG_LOG(if the second compile does not leave our definition intact error)
AC_TRY_COMPILE([#include <sys/types.h>],[
#ifndef _POSIX_C_SOURCE
@@ -2471,6 +3018,35 @@ if test "$cf_cv_posix_c_source" != no ; then
CF_ADD_CFLAGS($cf_cv_posix_c_source)
fi
+fi # cf_cv_posix_visible
+
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17
+dnl ----------------
+dnl POSIX documents test-macros which an application may set before any system
+dnl headers are included to make features available.
+dnl
+dnl Some BSD platforms (originally FreeBSD, but copied by a few others)
+dnl diverged from POSIX in 2002 by setting symbols which make all of the most
+dnl recent features visible in the system header files unless the application
+dnl overrides the corresponding test-macros. Doing that introduces portability
+dnl problems.
+dnl
+dnl This macro makes a special check for the symbols used for this, to avoid a
+dnl conflicting definition.
+AC_DEFUN([CF_POSIX_VISIBLE],
+[
+AC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[
+AC_TRY_COMPILE([#include <stdio.h>],[
+#if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
+ && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
+ && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
+ && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
+#error conflicting symbols found
+#endif
+],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes])
+])
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_PRG_RULES version: 1 updated: 2006/06/03 11:45:08
@@ -2497,20 +3073,24 @@ done
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_CC version: 3 updated: 2012/10/06 15:31:55
+dnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54
dnl ----------
dnl standard check for CC, plus followup sanity checks
dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
AC_DEFUN([CF_PROG_CC],[
+CF_ACVERSION_CHECK(2.53,
+ [AC_MSG_WARN(this will incorrectly handle gnatgcc choice)
+ AC_REQUIRE([AC_PROG_CC])],
+ [])
ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
CF_GCC_VERSION
CF_ACVERSION_CHECK(2.52,
[AC_PROG_CC_STDC],
[CF_ANSI_CC_REQD])
-CF_CC_ENV_FLAGS
+CF_CC_ENV_FLAGS
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_INSTALL version: 5 updated: 2002/12/21 22:46:07
+dnl CF_PROG_INSTALL version: 7 updated: 2015/04/18 08:56:57
dnl ---------------
dnl Force $INSTALL to be an absolute-path. Otherwise, edit_man.sh and the
dnl misc/tabset install won't work properly. Usually this happens only when
@@ -2518,21 +3098,26 @@ dnl using the fallback mkinstalldirs script
AC_DEFUN([CF_PROG_INSTALL],
[AC_PROG_INSTALL
case $INSTALL in
-/*)
- ;;
-*)
- CF_DIRNAME(cf_dir,$INSTALL)
- test -z "$cf_dir" && cf_dir=.
- INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
- ;;
+(/*)
+ ;;
+(*)
+ CF_DIRNAME(cf_dir,$INSTALL)
+ test -z "$cf_dir" && cf_dir=.
+ INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
+ ;;
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_LINT version: 2 updated: 2009/08/12 04:43:14
+dnl CF_PROG_LINT version: 4 updated: 2019/11/20 18:55:37
dnl ------------
AC_DEFUN([CF_PROG_LINT],
[
-AC_CHECK_PROGS(LINT, tdlint lint alint splint lclint)
+AC_CHECK_PROGS(LINT, lint cppcheck splint)
+case "x$LINT" in
+(xcppcheck|x*/cppcheck)
+ test -z "$LINT_OPTS" && LINT_OPTS="--enable=all"
+ ;;
+esac
AC_SUBST(LINT_OPTS)
])dnl
dnl ---------------------------------------------------------------------------
@@ -2553,6 +3138,17 @@ $1=`echo "$2" | \
-e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'`
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45
+dnl ---------------------
+dnl Restore flags saved in CF_SAVE_XTRA_FLAGS
+dnl $1 = name of current macro
+define([CF_RESTORE_XTRA_FLAGS],
+[
+LIBS="$cf_save_LIBS_$1"
+CFLAGS="$cf_save_CFLAGS_$1"
+CPPFLAGS="$cf_save_CPPFLAGS_$1"
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_RPATH_HACK version: 11 updated: 2013/09/01 13:02:00
dnl -------------
AC_DEFUN([CF_RPATH_HACK],
@@ -2610,7 +3206,7 @@ fi
AC_SUBST(EXTRA_LDFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_RPATH_HACK_2 version: 6 updated: 2010/04/17 16:31:24
+dnl CF_RPATH_HACK_2 version: 7 updated: 2015/04/12 15:39:00
dnl ---------------
dnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to
dnl EXTRA_LDFLAGS for each -L option found.
@@ -2626,8 +3222,8 @@ CF_VERBOSE(...checking $1 [$]$1)
cf_rpath_dst=
for cf_rpath_src in [$]$1
do
- case $cf_rpath_src in #(vi
- -L*) #(vi
+ case $cf_rpath_src in
+ (-L*)
# check if this refers to a directory which we will ignore
cf_rpath_skip=no
@@ -2670,9 +3266,93 @@ CF_VERBOSE(...checked $1 [$]$1)
AC_SUBST(EXTRA_LDFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SIG_ATOMIC_T version: 3 updated: 2012/10/04 20:12:20
+dnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44
+dnl ------------------
+dnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers
+dnl and libraries which do not update those variables.
+dnl
+dnl $1 = name of current macro
+define([CF_SAVE_XTRA_FLAGS],
+[
+cf_save_LIBS_$1="$LIBS"
+cf_save_CFLAGS_$1="$CFLAGS"
+cf_save_CPPFLAGS_$1="$CPPFLAGS"
+LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
+for cf_X_CFLAGS in $X_CFLAGS
+do
+ case "x$cf_X_CFLAGS" in
+ x-[[IUD]]*)
+ CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
+ ;;
+ *)
+ CFLAGS="$CFLAGS $cf_X_CFLAGS"
+ ;;
+ esac
+done
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_SIGWINCH version: 2 updated: 2019/03/23 19:54:44
+dnl -----------
+dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all
+dnl programs need this test).
+dnl
+dnl This is really a Mac OS X 10.4.3 workaround. Defining _POSIX_C_SOURCE
+dnl forces SIGWINCH to be undefined (breaks xterm, ncurses). Oddly, the struct
+dnl winsize declaration is left alone - we may revisit this if Apple choose to
+dnl break that part of the interface as well.
+AC_DEFUN([CF_SIGWINCH],
+[
+AC_CACHE_CHECK(if SIGWINCH is defined,cf_cv_define_sigwinch,[
+ AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/signal.h>
+],[int x = SIGWINCH],
+ [cf_cv_define_sigwinch=yes],
+ [AC_TRY_COMPILE([
+#undef _XOPEN_SOURCE
+#undef _POSIX_SOURCE
+#undef _POSIX_C_SOURCE
+#include <sys/types.h>
+#include <sys/signal.h>
+],[int x = SIGWINCH],
+ [cf_cv_define_sigwinch=maybe],
+ [cf_cv_define_sigwinch=no])
+])
+])
+
+if test "$cf_cv_define_sigwinch" = maybe ; then
+AC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[
+cf_cv_fixup_sigwinch=unknown
+cf_sigwinch=32
+while test $cf_sigwinch != 1
+do
+ AC_TRY_COMPILE([
+#undef _XOPEN_SOURCE
+#undef _POSIX_SOURCE
+#undef _POSIX_C_SOURCE
+#include <sys/types.h>
+#include <sys/signal.h>
+],[
+#if SIGWINCH != $cf_sigwinch
+make an error
+#endif
+int x = SIGWINCH],
+ [cf_cv_fixup_sigwinch=$cf_sigwinch
+ break])
+
+cf_sigwinch=`expr $cf_sigwinch - 1`
+done
+])
+
+ if test "$cf_cv_fixup_sigwinch" != unknown ; then
+ CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch"
+ fi
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_SIG_ATOMIC_T version: 4 updated: 2020/01/18 12:30:44
dnl ---------------
-dnl signal handler, but there are some gcc depedencies in that recommendation.
+dnl signal handler, but there are some gcc dependencies in that recommendation.
dnl Try anyway.
AC_DEFUN([CF_SIG_ATOMIC_T],
[
@@ -2705,7 +3385,7 @@ AC_MSG_RESULT($cf_cv_sig_atomic_t)
test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SUBDIR_PATH version: 6 updated: 2010/04/21 06:20:50
+dnl CF_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06
dnl --------------
dnl Construct a search-list for a nonstandard header/lib-file
dnl $1 = the variable to return as result
@@ -2715,14 +3395,21 @@ AC_DEFUN([CF_SUBDIR_PATH],
[
$1=
-CF_ADD_SUBDIR_PATH($1,$2,$3,/usr,$prefix)
CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE)
-CF_ADD_SUBDIR_PATH($1,$2,$3,/usr/local,$prefix)
-CF_ADD_SUBDIR_PATH($1,$2,$3,/opt,$prefix)
-CF_ADD_SUBDIR_PATH($1,$2,$3,[$]HOME,$prefix)
+
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ [$]HOME
+do
+ CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix)
+done
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SYS_TIME_SELECT version: 5 updated: 2012/10/04 05:24:07
+dnl CF_SYS_TIME_SELECT version: 6 updated: 2015/04/18 08:56:57
dnl ------------------
dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on
dnl older SCO configurations.
@@ -2739,24 +3426,24 @@ AC_TRY_COMPILE([
#include <sys/select.h>
#endif
],[],[cf_cv_sys_time_select=yes],
- [cf_cv_sys_time_select=no])
- ])
+ [cf_cv_sys_time_select=no])
+ ])
AC_MSG_RESULT($cf_cv_sys_time_select)
test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT,1,[Define to 1 if we can include <sys/time.h> with <sys/select.h>])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_TERM_HEADER version: 3 updated: 2012/10/06 08:57:51
+dnl CF_TERM_HEADER version: 4 updated: 2015/04/15 19:08:48
dnl --------------
dnl Look for term.h, which is part of X/Open curses. It defines the interface
dnl to terminfo database. Usually it is in the same include-path as curses.h,
dnl but some packagers change this, breaking various applications.
AC_DEFUN([CF_TERM_HEADER],[
AC_CACHE_CHECK(for terminfo header, cf_cv_term_header,[
-case ${cf_cv_ncurses_header} in #(vi
-*/ncurses.h|*/ncursesw.h) #(vi
+case ${cf_cv_ncurses_header} in
+(*/ncurses.h|*/ncursesw.h)
cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[[^.]]*\.h$%term.h%'`
;;
-*)
+(*)
cf_term_header=term.h
;;
esac
@@ -2776,17 +3463,17 @@ done
# Set definitions to allow ifdef'ing to accommodate subdirectories
-case $cf_cv_term_header in # (vi
-*term.h)
+case $cf_cv_term_header in
+(*term.h)
AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h])
;;
esac
-case $cf_cv_term_header in # (vi
-ncurses/term.h) #(vi
+case $cf_cv_term_header in
+(ncurses/term.h)
AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h])
;;
-ncursesw/term.h)
+(ncursesw/term.h)
AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h])
;;
esac
@@ -2801,7 +3488,7 @@ top_builddir=ifelse($1,,`pwd`,$1)
AC_SUBST(top_builddir)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_TPUTS_PROTO version: 2 updated: 2011/04/23 19:25:50
+dnl CF_TPUTS_PROTO version: 3 updated: 2015/04/17 21:26:14
dnl --------------
dnl Check for type of function-pointer passed to tputs. Some old
dnl implementations used functions that had different prototypes, making it
@@ -2827,7 +3514,7 @@ then
static $cf_ret outc($cf_arg value) { $cf_return; }
],[
- tputs("hello", 0, outc);
+ tputs("hello", 0, outc);
${cf_cv_main_return:-return}(0);
],[
CF_VERBOSE([prototype $cf_ret func($cf_arg value)])
@@ -2845,7 +3532,7 @@ EOF
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_TRIM_X_LIBS version: 2 updated: 2013/07/09 21:27:22
+dnl CF_TRIM_X_LIBS version: 3 updated: 2015/04/12 15:39:00
dnl --------------
dnl Trim extra base X libraries added as a workaround for inconsistent library
dnl dependencies returned by "new" pkg-config files.
@@ -2853,7 +3540,7 @@ AC_DEFUN([CF_TRIM_X_LIBS],[
for cf_trim_lib in Xmu Xt X11
do
case "$LIBS" in
- *-l$cf_trim_lib\ *-l$cf_trim_lib*)
+ (*-l$cf_trim_lib\ *-l$cf_trim_lib*)
LIBS=`echo "$LIBS " | sed -e 's/ / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'`
CF_VERBOSE(..trimmed $LIBS)
;;
@@ -2888,7 +3575,7 @@ else
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_TRY_XOPEN_SOURCE version: 1 updated: 2011/10/30 17:09:50
+dnl CF_TRY_XOPEN_SOURCE version: 2 updated: 2018/06/20 20:23:13
dnl -------------------
dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
dnl can define it successfully.
@@ -2904,7 +3591,7 @@ make an error
#endif],
[cf_cv_xopen_source=no],
[cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+ CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE)
AC_TRY_COMPILE([
#include <stdlib.h>
#include <string.h>
@@ -3074,7 +3761,7 @@ if test "$with_dmalloc" = yes ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_NCURSES_ETC version: 2 updated: 2012/01/13 10:49:00
+dnl CF_WITH_NCURSES_ETC version: 5 updated: 2016/02/20 19:23:20
dnl -------------------
dnl Use this macro for programs which use any variant of "curses", e.g.,
dnl "ncurses", and "PDCurses". Programs that can use curses and some unrelated
@@ -3088,6 +3775,10 @@ CF_WITH_CURSES_DIR
cf_cv_screen=curses
AC_MSG_CHECKING(for specified curses library type)
+AC_ARG_WITH(screen,
+ [ --with-screen=XXX use specified curses-libraries],
+ [cf_cv_screen=$withval],[
+
AC_ARG_WITH(ncursesw,
[ --with-ncursesw use wide ncurses-libraries],
[cf_cv_screen=ncursesw],[
@@ -3106,26 +3797,31 @@ AC_ARG_WITH(curses-colr,
AC_ARG_WITH(curses-5lib,
[ --with-curses-5lib compile/link with SunOS 5lib curses],
- [cf_cv_screen=curses_5lib])])])])])
+ [cf_cv_screen=curses_5lib])])])])])])
AC_MSG_RESULT($cf_cv_screen)
-case $cf_cv_screen in #(vi
-curses|curses_*) #(vi
+case $cf_cv_screen in
+(curses|curses_*)
CF_CURSES_CONFIG
;;
-ncurses) #(vi
- CF_NCURSES_CONFIG
- ;;
-ncursesw) #(vi
+(ncursesw*)
CF_UTF8_LIB
- CF_NCURSES_CONFIG(ncursesw)
+ CF_NCURSES_CONFIG($cf_cv_screen)
+ ;;
+(ncurses*)
+ CF_NCURSES_CONFIG($cf_cv_screen)
;;
-pdcurses)
+(pdcurses)
CF_PDCURSES_X11
;;
+(*)
+ AC_MSG_ERROR(unexpected screen-value: $cf_cv_screen)
+ ;;
esac
+CF_NCURSES_PTHREADS($cf_cv_screen)
+
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
@@ -3136,7 +3832,93 @@ CF_NO_LEAKS_OPTION(valgrind,
[USE_VALGRIND])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_XOPEN_CURSES version: 11 updated: 2011/01/18 18:15:30
+dnl CF_WITH_X11_RGB version: 2 updated: 2019/12/31 08:53:54
+dnl ---------------
+dnl Handle configure option "--with-x11-rgb", setting these shell
+dnl variables:
+dnl
+dnl $RGB_PATH is the option value, used for finding the X11 rgb file.
+dnl $no_x11_rgb is a "#" (comment) if "--without-x11-rgb" is given.
+dnl
+dnl Most Linux's use this:
+dnl /usr/share/X11/rgb.txt
+dnl Debian uses this:
+dnl /etc/X11/rgb.txt
+dnl DragonFlyBSD ports uses this:
+dnl /usr/pkg/lib/X11/rgb.txt
+dnl FreeBSD ports use these:
+dnl /usr/local/lib/X11/rgb.txt
+dnl /usr/local/share/X11/rgb.txt
+dnl Mandriva has these:
+dnl /usr/lib/X11/rgb.txt
+dnl /usr/lib64/X11/rgb.txt
+dnl NetBSD has these
+dnl /usr/X11R7/lib/X11/rgb.txt
+dnl OpenSolaris uses
+dnl 32-bit:
+dnl /usr/X11/etc/X11/rgb.txt
+dnl /usr/X11/share/X11/rgb.txt
+dnl /usr/X11/lib/X11/rgb.txt
+dnl OSX uses
+dnl /opt/local/share/X11/rgb.txt (MacPorts)
+dnl /opt/X11/share/X11/rgb.txt (non-ports)
+dnl 64-bit:
+dnl /usr/X11/etc/X11/rgb.txt
+dnl /usr/X11/share/X11/rgb.txt (perhaps)
+dnl /usr/X11/lib/amd64/X11/rgb.txt
+dnl Solaris10 uses (in this order):
+dnl /usr/openwin/lib/X11/rgb.txt
+dnl /usr/X11/lib/X11/rgb.txt
+AC_DEFUN([CF_WITH_X11_RGB],[
+AC_MSG_CHECKING(for X11 rgb file)
+AC_ARG_WITH(x11-rgb,
+ [ --with-x11-rgb=FILE file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)],
+ [RGB_PATH=$withval],
+ [RGB_PATH=auto])
+
+if test "x[$]RGB_PATH" = xauto
+then
+ RGB_PATH='${exec_prefix}/lib/X11/rgb.txt'
+ for cf_path in \
+ /opt/local/share/X11/rgb.txt \
+ /opt/X11/share/X11/rgb.txt \
+ /usr/share/X11/rgb.txt \
+ /usr/X11/share/X11/rgb.txt \
+ /usr/X11/lib/X11/rgb.txt \
+ /usr/lib/X11/rgb.txt \
+ /etc/X11/rgb.txt \
+ /usr/pkg/lib/X11/rgb.txt \
+ /usr/X11R7/lib/X11/rgb.txt \
+ /usr/X11R6/lib/X11/rgb.txt \
+ /usr/X11R5/lib/X11/rgb.txt \
+ /usr/X11R4/lib/X11/rgb.txt \
+ /usr/local/lib/X11/rgb.txt \
+ /usr/local/share/X11/rgb.txt \
+ /usr/lib64/X11/rgb.txt
+ do
+ if test -f "$cf_path" ; then
+ RGB_PATH="$cf_path"
+ break
+ fi
+ done
+else
+ cf_path=$RGB_PATH
+ CF_PATH_SYNTAX(cf_path)
+fi
+
+AC_MSG_RESULT($RGB_PATH)
+AC_SUBST(RGB_PATH)
+AC_DEFINE_UNQUOTED(RGB_PATH,"$cf_path",[Define to the full pathname of rgb.txt])
+
+no_x11_rgb=
+if test "$RGB_PATH" = no
+then
+ no_x11_rgb="#"
+fi
+AC_SUBST(no_x11_rgb)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_XOPEN_CURSES version: 14 updated: 2018/06/20 20:23:13
dnl ---------------
dnl Test if we should define X/Open source for curses, needed on Digital Unix
dnl 4.x, to see the extended functions, but breaks on IRIX 6.x.
@@ -3146,7 +3928,8 @@ dnl as getbegy(). The latter is better design, but the former is standard.
AC_DEFUN([CF_XOPEN_CURSES],
[
AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
-AC_CACHE_CHECK(if we must define _XOPEN_SOURCE_EXTENDED,cf_cv_need_xopen_extension,[
+AC_CACHE_CHECK(definition to turn on extended curses functions,cf_cv_need_xopen_extension,[
+cf_cv_need_xopen_extension=unknown
AC_TRY_LINK([
#include <stdlib.h>
#include <${cf_cv_ncurses_header:-curses.h}>],[
@@ -3155,14 +3938,6 @@ AC_TRY_LINK([
make an error
#endif
#endif
- long x = winnstr(stdscr, "", 0);
- int x1, y1;
- getbegyx(stdscr, y1, x1)],
- [cf_cv_need_xopen_extension=no],
- [AC_TRY_LINK([
-#define _XOPEN_SOURCE_EXTENDED
-#include <stdlib.h>
-#include <${cf_cv_ncurses_header:-curses.h}>],[
#ifdef NCURSES_VERSION
cchar_t check;
int check2 = curs_set((int)sizeof(check));
@@ -3170,12 +3945,35 @@ AC_TRY_LINK([
long x = winnstr(stdscr, "", 0);
int x1, y1;
getbegyx(stdscr, y1, x1)],
- [cf_cv_need_xopen_extension=yes],
- [cf_cv_need_xopen_extension=unknown])])])
-test $cf_cv_need_xopen_extension = yes && CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
+ [cf_cv_need_xopen_extension=none],
+ [
+ for cf_try_xopen_extension in _XOPEN_SOURCE_EXTENDED NCURSES_WIDECHAR
+ do
+ AC_TRY_LINK([
+#define $cf_try_xopen_extension 1
+#include <stdlib.h>
+#include <${cf_cv_ncurses_header:-curses.h}>],[
+#ifdef NCURSES_VERSION
+ cchar_t check;
+ int check2 = curs_set((int)sizeof(check));
+#endif
+ long x = winnstr(stdscr, "", 0);
+ int x1, y1;
+ getbegyx(stdscr, y1, x1)],
+ [cf_cv_need_xopen_extension=$cf_try_xopen_extension; break])
+ done
+ ])
+])
+
+case $cf_cv_need_xopen_extension in
+(*_*)
+ CF_APPEND_TEXT(CPPFLAGS,-D$cf_cv_need_xopen_extension)
+ ;;
+esac
+
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_XOPEN_SOURCE version: 46 updated: 2014/02/09 19:30:15
+dnl CF_XOPEN_SOURCE version: 55 updated: 2018/12/31 20:46:17
dnl ---------------
dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
dnl or adapt to the vendor's definitions to get equivalent functionality,
@@ -3186,26 +3984,29 @@ dnl $1 is the nominal value for _XOPEN_SOURCE
dnl $2 is the nominal value for _POSIX_C_SOURCE
AC_DEFUN([CF_XOPEN_SOURCE],[
AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([CF_POSIX_VISIBLE])
+
+if test "$cf_cv_posix_visible" = no; then
cf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
cf_xopen_source=
-case $host_os in #(vi
-aix[[4-7]]*) #(vi
+case $host_os in
+(aix[[4-7]]*)
cf_xopen_source="-D_ALL_SOURCE"
;;
-cygwin|msys) #(vi
+(msys)
cf_XOPEN_SOURCE=600
;;
-darwin[[0-8]].*) #(vi
+(darwin[[0-8]].*)
cf_xopen_source="-D_APPLE_C_SOURCE"
;;
-darwin*) #(vi
+(darwin*)
cf_xopen_source="-D_DARWIN_C_SOURCE"
cf_XOPEN_SOURCE=
;;
-freebsd*|dragonfly*) #(vi
+(freebsd*|dragonfly*|midnightbsd*)
# 5.x headers associate
# _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
# _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
@@ -3213,56 +4014,63 @@ freebsd*|dragonfly*) #(vi
cf_XOPEN_SOURCE=600
cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
;;
-hpux11*) #(vi
+(hpux11*)
cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
;;
-hpux*) #(vi
+(hpux*)
cf_xopen_source="-D_HPUX_SOURCE"
;;
-irix[[56]].*) #(vi
+(irix[[56]].*)
cf_xopen_source="-D_SGI_SOURCE"
cf_XOPEN_SOURCE=
;;
-linux*|gnu*|mint*|k*bsd*-gnu) #(vi
- CF_GNU_SOURCE
+(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
+ CF_GNU_SOURCE($cf_XOPEN_SOURCE)
;;
-mirbsd*) #(vi
+(minix*)
+ cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
+ ;;
+(mirbsd*)
# setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
cf_XOPEN_SOURCE=
CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
;;
-netbsd*) #(vi
+(netbsd*)
cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
;;
-openbsd[[4-9]]*) #(vi
+(openbsd[[4-9]]*)
# setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
cf_xopen_source="-D_BSD_SOURCE"
cf_XOPEN_SOURCE=600
;;
-openbsd*) #(vi
+(openbsd*)
# setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
;;
-osf[[45]]*) #(vi
+(osf[[45]]*)
cf_xopen_source="-D_OSF_SOURCE"
;;
-nto-qnx*) #(vi
+(nto-qnx*)
cf_xopen_source="-D_QNX_SOURCE"
;;
-sco*) #(vi
+(sco*)
# setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
;;
-solaris2.*) #(vi
+(solaris2.*)
cf_xopen_source="-D__EXTENSIONS__"
cf_cv_xopen_source=broken
;;
-*)
+(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
+ cf_XOPEN_SOURCE=
+ cf_POSIX_C_SOURCE=
+ ;;
+(*)
CF_TRY_XOPEN_SOURCE
CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
;;
esac
if test -n "$cf_xopen_source" ; then
- CF_ADD_CFLAGS($cf_xopen_source)
+ CF_ADD_CFLAGS($cf_xopen_source,true)
fi
dnl In anything but the default case, we may have system-specific setting
@@ -3293,9 +4101,10 @@ make an error
CF_TRY_XOPEN_SOURCE
fi
fi
+fi # cf_cv_posix_visible
])
dnl ---------------------------------------------------------------------------
-dnl CF_X_ATHENA version: 21 updated: 2013/07/06 21:27:06
+dnl CF_X_ATHENA version: 23 updated: 2015/04/12 15:39:00
dnl -----------
dnl Check for Xaw (Athena) libraries
dnl
@@ -3315,6 +4124,17 @@ else
AC_MSG_RESULT(no)
fi
+AC_MSG_CHECKING(if you want to link with Xaw 3d xft library)
+withval=
+AC_ARG_WITH(Xaw3dxft,
+ [ --with-Xaw3dxft link with Xaw 3d xft library])
+if test "$withval" = yes ; then
+ cf_x_athena=Xaw3dxft
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+
AC_MSG_CHECKING(if you want to link with neXT Athena library)
withval=
AC_ARG_WITH(neXtaw,
@@ -3366,10 +4186,10 @@ int check = XmuCompareISOLatin1("big", "small")
if test "$cf_cv_xaw_compat" = no
then
# workaround for broken ".pc" files...
- case "$cf_x_athena_lib" in #(vi
- *-lXmu*) #(vi
+ case "$cf_x_athena_lib" in
+ (*-lXmu*)
;;
- *)
+ (*)
CF_VERBOSE(work around broken package)
cf_save_xmu="$LIBS"
cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^[ ][ ]*//' -e 's/ .*//'`
@@ -3396,12 +4216,13 @@ if test -z "$cf_x_athena_lib" ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_X_ATHENA_CPPFLAGS version: 5 updated: 2010/05/26 17:35:30
+dnl CF_X_ATHENA_CPPFLAGS version: 8 updated: 2020/01/16 05:21:56
dnl --------------------
dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of
dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw.
AC_DEFUN([CF_X_ATHENA_CPPFLAGS],
[
+AC_REQUIRE([AC_PATH_XTRA])
cf_x_athena_root=ifelse([$1],,Xaw,[$1])
cf_x_athena_inc=""
@@ -3412,10 +4233,10 @@ for cf_path in default \
/usr/local
do
if test -z "$cf_x_athena_inc" ; then
- cf_save="$CPPFLAGS"
+ CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS])
cf_test=X11/$cf_x_athena_root/SimpleMenu.h
if test $cf_path != default ; then
- CPPFLAGS="$cf_save -I$cf_path/include"
+ CF_APPEND_TEXT(CPPFLAGS,-I$cf_path/include)
AC_MSG_CHECKING(for $cf_test in $cf_path)
else
AC_MSG_CHECKING(for $cf_test)
@@ -3426,24 +4247,23 @@ do
[cf_result=yes],
[cf_result=no])
AC_MSG_RESULT($cf_result)
+ CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS])
if test "$cf_result" = yes ; then
- cf_x_athena_inc=$cf_path
+ test "$cf_path" = default && cf_x_athena_inc=default
+ test "$cf_path" != default && cf_x_athena_inc=$cf_path/include
break
- else
- CPPFLAGS="$cf_save"
fi
fi
done
if test -z "$cf_x_athena_inc" ; then
- AC_MSG_WARN(
-[Unable to successfully find Athena header files with test program])
+ AC_MSG_WARN([Unable to find Athena header files])
elif test "$cf_x_athena_inc" != default ; then
- CPPFLAGS="$CPPFLAGS -I$cf_x_athena_inc"
+ CF_APPEND_TEXT(CPPFLAGS,-I$cf_x_athena_inc)
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_X_ATHENA_LIBS version: 12 updated: 2011/07/17 19:55:02
+dnl CF_X_ATHENA_LIBS version: 13 updated: 2020/01/11 18:16:10
dnl ----------------
dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of
dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw.
@@ -3468,29 +4288,26 @@ do
"-l$cf_lib -lXpm -lXmu" \
"-l${cf_lib}_s -lXmu_s"
do
- if test -z "$cf_x_athena_lib" ; then
- cf_save="$LIBS"
- cf_test=XawSimpleMenuAddGlobalActions
- if test $cf_path != default ; then
- CF_ADD_LIBS(-L$cf_path/lib $cf_libs)
- AC_MSG_CHECKING(for $cf_libs in $cf_path)
- else
- CF_ADD_LIBS($cf_libs)
- AC_MSG_CHECKING(for $cf_test in $cf_libs)
- fi
- AC_TRY_LINK([
+ test -n "$cf_x_athena_lib" && break
+
+ CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_LIBS])
+ cf_test=XawSimpleMenuAddGlobalActions
+ test "$cf_path" != default && cf_libs="-L$cf_path/lib $cf_libs"
+ CF_ADD_LIBS($cf_libs)
+ AC_MSG_CHECKING(for $cf_test in $cf_libs)
+ AC_TRY_LINK([
#include <X11/Intrinsic.h>
#include <X11/$cf_x_athena_root/SimpleMenu.h>
],[
$cf_test((XtAppContext) 0)],
- [cf_result=yes],
- [cf_result=no])
- AC_MSG_RESULT($cf_result)
- if test "$cf_result" = yes ; then
- cf_x_athena_lib="$cf_libs"
- break
- fi
- LIBS="$cf_save"
+ [cf_result=yes],
+ [cf_result=no])
+ AC_MSG_RESULT($cf_result)
+ CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_LIBS])
+
+ if test "$cf_result" = yes ; then
+ cf_x_athena_lib="$cf_libs"
+ break
fi
done # cf_libs
test -n "$cf_x_athena_lib" && break
@@ -3502,6 +4319,7 @@ if test -z "$cf_x_athena_lib" ; then
[Unable to successfully link Athena library (-l$cf_x_athena_root) with test program])
fi
+CF_ADD_LIBS($cf_x_athena_lib)
CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena)
AC_DEFINE_UNQUOTED($cf_x_athena_LIBS)
])
@@ -3514,23 +4332,36 @@ CF_TRY_PKG_CONFIG(Xext,,[
[CF_ADD_LIB(Xext)])])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_X_TOOLKIT version: 21 updated: 2012/10/04 06:57:36
+dnl CF_X_TOOLKIT version: 24 updated: 2019/03/23 19:54:44
dnl ------------
dnl Check for X Toolkit libraries
-dnl
AC_DEFUN([CF_X_TOOLKIT],
[
AC_REQUIRE([AC_PATH_XTRA])
AC_REQUIRE([CF_CHECK_CACHE])
+# OSX is schizoid about who owns /usr/X11 (old) versus /opt/X11 (new) (and
+# in some cases has installed dummy files in the former, other cases replaced
+# it with a link to the new location). This complicates the configure script.
+# Check for that pitfall, and recover using pkg-config
+#
+# If none of these are set, the configuration is almost certainly broken.
+if test -z "${X_CFLAGS}${X_PRE_LIBS}${X_LIBS}${X_EXTRA_LIBS}"
+then
+ CF_TRY_PKG_CONFIG(x11,,[AC_MSG_WARN(unable to find X11 library)])
+ CF_TRY_PKG_CONFIG(ice,,[AC_MSG_WARN(unable to find ICE library)])
+ CF_TRY_PKG_CONFIG(sm,,[AC_MSG_WARN(unable to find SM library)])
+ CF_TRY_PKG_CONFIG(xt,,[AC_MSG_WARN(unable to find Xt library)])
+fi
+
cf_have_X_LIBS=no
CF_TRY_PKG_CONFIG(xt,[
- case "x$LIBS" in #(vi
- *-lX11*) #(vi
+ case "x$LIBS" in
+ (*-lX11*)
;;
- *)
+ (*)
# we have an "xt" package, but it may omit Xt's dependency on X11
AC_CACHE_CHECK(for usable X dependency,cf_cv_xt_x11_compat,[
AC_TRY_LINK([
@@ -3559,12 +4390,12 @@ AC_TRY_LINK([
if test "$cf_cv_xt_ice_compat" = no
then
# workaround for broken ".pc" files used for X Toolkit.
- case "x$X_PRE_LIBS" in #(vi
- *-lICE*)
- case "x$LIBS" in #(vi
- *-lICE*) #(vi
+ case "x$X_PRE_LIBS" in
+ (*-lICE*)
+ case "x$LIBS" in
+ (*-lICE*)
;;
- *)
+ (*)
CF_VERBOSE(work around broken ICE dependency)
CF_TRY_PKG_CONFIG(ice,
[CF_TRY_PKG_CONFIG(sm)],
diff --git a/test/background.c b/test/background.c
index 6c5ad996c5ba..0abf99ca47cf 100644
--- a/test/background.c
+++ b/test/background.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2003-2012,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 2003-2017,2018 Free 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,12 +26,13 @@
* authorization. *
****************************************************************************/
/*
- * $Id: background.c,v 1.14 2014/02/01 22:10:42 tom Exp $
+ * $Id: background.c,v 1.18 2018/11/24 20:28:45 tom Exp $
*/
#define NEED_COLOR_CODE 1
#define NEED_COLOR_NAME 1
#include <color_name.h>
+#include <dump_window.h>
static int default_bg = COLOR_BLACK;
static int default_fg = COLOR_WHITE;
@@ -48,24 +49,24 @@ test_background(void)
} else {
printw("pair 0 contains (%d,%d)\n", (int) f, (int) b);
}
- getch();
+ dump_window(stdscr);
printw("Initializing pair 1 to red/%s\n", color_name(default_bg));
init_pair(1, COLOR_RED, (NCURSES_COLOR_T) default_bg);
bkgdset((chtype) (' ' | COLOR_PAIR(1)));
printw("RED/BLACK\n");
- getch();
+ dump_window(stdscr);
printw("Initializing pair 2 to %s/blue\n", color_name(default_fg));
init_pair(2, (NCURSES_COLOR_T) default_fg, COLOR_BLUE);
bkgdset((chtype) (' ' | COLOR_PAIR(2)));
printw("This line should be %s/blue\n", color_name(default_fg));
- getch();
+ dump_window(stdscr);
printw("Initializing pair 3 to %s/cyan (ACS_HLINE)\n", color_name(default_fg));
init_pair(3, (NCURSES_COLOR_T) default_fg, COLOR_CYAN);
printw("...and drawing a box which should be followed by lines\n");
- bkgdset(ACS_HLINE | COLOR_PAIR(3));
+ bkgdset(ACS_HLINE | (chtype) COLOR_PAIR(3));
/*
* Characters from vt100 line-drawing should be mapped to line-drawing,
* since A_ALTCHARSET is set in the background, and the character part
@@ -80,50 +81,50 @@ test_background(void)
row = 7;
mvprintw(row++, 10, "l");
for (chr = 0; chr < 32; ++chr)
- addch(' ');
+ AddCh(' ');
printw("x\n");
chr = 32;
while (chr < 128) {
if ((chr % 32) == 0)
mvprintw(row++, 10, "x");
- addch((chtype) ((chr == 127) ? ' ' : chr));
+ AddCh((chr == 127) ? ' ' : chr);
if ((++chr % 32) == 0)
printw("x\n");
}
mvprintw(row++, 10, "m");
for (chr = 0; chr < 32; ++chr)
- addch(' ');
+ AddCh(' ');
printw("j\n");
- getch();
+ dump_window(stdscr);
bkgdset((chtype) (' ' | COLOR_PAIR(0)));
printw("Default Colors\n");
- getch();
+ dump_window(stdscr);
printw("Resetting colors to pair 1\n");
bkgdset((chtype) (' ' | COLOR_PAIR(1)));
printw("This line should be red/%s\n", color_name(default_bg));
- getch();
+ dump_window(stdscr);
printw("Setting screen to pair 0\n");
bkgd((chtype) (' ' | COLOR_PAIR(0)));
- getch();
+ dump_window(stdscr);
printw("Setting screen to pair 1\n");
bkgd((chtype) (' ' | COLOR_PAIR(1)));
- getch();
+ dump_window(stdscr);
printw("Setting screen to pair 2\n");
bkgd((chtype) (' ' | COLOR_PAIR(2)));
- getch();
+ dump_window(stdscr);
printw("Setting screen to pair 3\n");
bkgd((chtype) (' ' | COLOR_PAIR(3)));
- getch();
+ dump_window(stdscr);
printw("Setting screen to pair 0\n");
bkgd((chtype) (' ' | COLOR_PAIR(0)));
- getch();
+ dump_window(stdscr);
}
static void
@@ -164,7 +165,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
setlocale(LC_ALL, "");
- while ((n = getopt(argc, argv, "ab:df:")) != -1) {
+ while ((n = getopt(argc, argv, "ab:df:l:")) != -1) {
switch (n) {
#if HAVE_ASSUME_DEFAULT_COLORS
case 'a':
@@ -182,6 +183,10 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
case 'f':
default_fg = color_code(optarg);
break;
+ case 'l':
+ if (!open_dump(optarg))
+ usage();
+ break;
default:
usage();
}
@@ -230,6 +235,6 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
getch();
}
endwin();
-
+ close_dump();
ExitProgram(EXIT_SUCCESS);
}
diff --git a/test/blue.c b/test/blue.c
index 50d48b1d5b84..0889ff06c228 100644
--- a/test/blue.c
+++ b/test/blue.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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,17 +36,17 @@
*****************************************************************************/
/*
- * Compile this with the command `cc -O blue.c -lcurses -o blue'. For best
- * results, use the ncurses(3) library. On non-Intel machines, SVr4 curses is
- * just as good.
- *
- * $Id: blue.c,v 1.35 2013/04/27 19:46:53 tom Exp $
+ * $Id: blue.c,v 1.52 2019/08/17 21:49:19 tom Exp $
*/
#include <test.priv.h>
#include <time.h>
+#if HAVE_LANGINFO_CODESET
+#include <langinfo.h>
+#endif
+
#define NOCARD (-1)
#define ACE 0
@@ -97,40 +97,38 @@ static chtype ranks[SUIT_LENGTH][2] =
{' ', 'K'}
};
-/* Please note, that this is a bad example.
- Color values should not be or'ed in. This
- only works, because the characters used here
- are plain and have no color attribute themselves. */
-#ifdef COLOR_PAIR
-#define OR_COLORS(value,pair) ((value) | COLOR_PAIR(pair))
-#else
-#define OR_COLORS(value,pair) (value)
-#endif
+static int letters[4] =
+{
+ 'h', /* hearts */
+ 's', /* spades */
+ 'd', /* diamonds */
+ 'c', /* clubs */
+};
-#define PC_COLORS(value,pair) (OR_COLORS(value,pair) | A_ALTCHARSET)
+#if HAVE_LANGINFO_CODESET
-static chtype letters[4] =
+#if HAVE_TIGETSTR
+static int glyphs[] =
{
- OR_COLORS('h', RED_ON_WHITE), /* hearts */
- OR_COLORS('s', BLACK_ON_WHITE), /* spades */
- OR_COLORS('d', RED_ON_WHITE), /* diamonds */
- OR_COLORS('c', BLACK_ON_WHITE), /* clubs */
+ '\003', /* hearts */
+ '\006', /* spades */
+ '\004', /* diamonds */
+ '\005', /* clubs */
};
+#endif
-#if defined(__i386__) && defined(A_ALTCHARSET) && HAVE_TIGETSTR
-static chtype glyphs[] =
+#if USE_WIDEC_SUPPORT
+static int uglyphs[] =
{
- PC_COLORS('\003', RED_ON_WHITE), /* hearts */
- PC_COLORS('\006', BLACK_ON_WHITE), /* spades */
- PC_COLORS('\004', RED_ON_WHITE), /* diamonds */
- PC_COLORS('\005', BLACK_ON_WHITE), /* clubs */
+ 0x2665, /* hearts */
+ 0x2660, /* spades */
+ 0x2666, /* diamonds */
+ 0x2663 /* clubs */
};
-#define USE_CP437 1
-#else
-#define USE_CP437 0
-#endif /* __i386__ */
+#endif
+#endif /* HAVE_LANGINFO_CODESET */
-static chtype *suits = letters; /* this may change to glyphs below */
+static int *suits = letters; /* this may change to glyphs below */
static void
die(int onsig)
@@ -155,14 +153,14 @@ init_vars(void)
static void
shuffle(int size)
{
- int i, j, numswaps, swapnum, temp;
+ int numswaps, swapnum;
numswaps = size * 10; /* an arbitrary figure */
for (swapnum = 0; swapnum < numswaps; swapnum++) {
- i = rand() % size;
- j = rand() % size;
- temp = deck[i];
+ int i = rand() % size;
+ int j = rand() % size;
+ int temp = deck[i];
deck[i] = deck[j];
deck[j] = temp;
}
@@ -171,11 +169,11 @@ shuffle(int size)
static void
deal_cards(void)
{
- int ptr, card = 0, value, csuit, crank, suit, aces[4];
+ int card = 0, value, csuit, crank, suit, aces[4];
memset(aces, 0, sizeof(aces));
for (suit = HEARTS; suit <= CLUBS; suit++) {
- ptr = freeptr[suit];
+ int ptr = freeptr[suit];
grid[ptr++] = NOCARD; /* 1st card space is blank */
while ((ptr % GRID_WIDTH) != 0) {
value = deck[card++];
@@ -198,15 +196,41 @@ deal_cards(void)
static void
printcard(int value)
{
- (void) addch(' ');
- if (value == NOCARD)
+ AddCh(' ');
+ if (value == NOCARD) {
(void) addstr(" ");
- else {
- addch(ranks[value % SUIT_LENGTH][0] | (chtype) COLOR_PAIR(BLUE_ON_WHITE));
- addch(ranks[value % SUIT_LENGTH][1] | (chtype) COLOR_PAIR(BLUE_ON_WHITE));
- addch(suits[value / SUIT_LENGTH]);
+ } else {
+ int which = (value / SUIT_LENGTH);
+ int isuit = (value % SUIT_LENGTH);
+ chtype color = (chtype) COLOR_PAIR(((which % 2) == 0)
+ ? RED_ON_WHITE
+ : BLACK_ON_WHITE);
+
+ AddCh(ranks[isuit][0] | (chtype) COLOR_PAIR(BLUE_ON_WHITE));
+ AddCh(ranks[isuit][1] | (chtype) COLOR_PAIR(BLUE_ON_WHITE));
+
+#ifdef NCURSES_VERSION
+ (attron) ((int) color); /* quieter compiler warnings */
+#else
+ attron(color); /* PDCurses, etc., either no macro or wrong */
+#endif
+#if USE_WIDEC_SUPPORT
+ {
+ wchar_t values[2];
+ values[0] = (wchar_t) suits[which];
+ values[1] = 0;
+ addwstr(values);
+ }
+#else
+ AddCh(suits[which]);
+#endif
+#ifdef NCURSES_VERSION
+ (attroff) ((int) color);
+#else
+ attroff(color);
+#endif
}
- (void) addch(' ');
+ AddCh(' ');
}
static void
@@ -315,16 +339,16 @@ play_game(void)
} else {
char buf[BUFSIZ];
- (void) sprintf(buf,
- "Type [%s] to move, r to redraw, q or INTR to quit: ",
- live);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "Type [%s] to move, r to redraw, q or INTR to quit: ",
+ live);
do {
move(PROMPTROW, 0);
(void) addstr(buf);
move(PROMPTROW, (int) strlen(buf));
clrtoeol();
- (void) addch(' ');
+ AddCh(' ');
} while
(((c = (char) getch()) < 'a' || c > 'd')
&& (c != 'r')
@@ -364,10 +388,10 @@ play_game(void)
static int
collect_discards(void)
{
- int row, col, cardno = 0, finish, gridno;
+ int row, col, cardno = 0, gridno;
for (row = HEARTS; row <= CLUBS; row++) {
- finish = 0;
+ int finish = 0;
for (col = 1; col < GRID_WIDTH; col++) {
gridno = row * GRID_WIDTH + col;
@@ -402,41 +426,58 @@ game_finished(int deal)
refresh();
}
+#if HAVE_LANGINFO_CODESET
+/*
+ * This program first appeared in ncurses in January 1995. At that point, the
+ * Linux console was able to display CP437 graphic characters, e.g., in the
+ * range 0-31. As of 2016, most Linux consoles are running with the UTF-8
+ * (partial) support. Incidentally, that makes all of the cards diamonds.
+ */
+static void
+use_pc_display(void)
+{
+ char *check = nl_langinfo(CODESET);
+ if (!strcmp(check, "UTF-8")) {
+#if USE_WIDEC_SUPPORT
+ suits = uglyphs;
+#endif
+ } else {
+#if HAVE_TIGETSTR
+ if (!strcmp(check, "IBM437") ||
+ !strcmp(check, "CP437") ||
+ !strcmp(check, "IBM850") ||
+ !strcmp(check, "CP850")) {
+ char *smacs = tigetstr("smacs");
+ char *smpch = tigetstr("smpch");
+ /*
+ * The ncurses library makes this check to decide whether to allow
+ * the alternate character set for the (normally) nonprinting codes.
+ */
+ if (smacs != 0 && smpch != 0 && !strcmp(smacs, smpch)) {
+ suits = glyphs;
+ }
+ }
+#endif
+ }
+}
+#else
+#define use_pc_display() /* nothing */
+#endif /* HAVE_LANGINFO_CODESET */
+
int
main(int argc, char *argv[])
{
- CATCHALL(die);
-
setlocale(LC_ALL, "");
- initscr();
+ use_pc_display();
+
+ InitAndCatch(initscr(), die);
- /*
- * We use COLOR_GREEN because COLOR_BLACK is wired to the wrong thing.
- */
start_color();
init_pair(RED_ON_WHITE, COLOR_RED, COLOR_WHITE);
init_pair(BLUE_ON_WHITE, COLOR_BLUE, COLOR_WHITE);
init_pair(BLACK_ON_WHITE, COLOR_BLACK, COLOR_WHITE);
-#ifndef COLOR_PAIR
- letters[0] = OR_COLORS('h', RED_ON_WHITE); /* hearts */
- letters[1] = OR_COLORS('s', BLACK_ON_WHITE); /* spades */
- letters[2] = OR_COLORS('d', RED_ON_WHITE); /* diamonds */
- letters[3] = OR_COLORS('c', BLACK_ON_WHITE); /* clubs */
-#if USE_CP437
- glyphs[0] = PC_COLORS('\003', RED_ON_WHITE); /* hearts */
- glyphs[1] = PC_COLORS('\006', BLACK_ON_WHITE); /* spades */
- glyphs[2] = PC_COLORS('\004', RED_ON_WHITE); /* diamonds */
- glyphs[3] = PC_COLORS('\005', BLACK_ON_WHITE); /* clubs */
-#endif
-#endif
-
-#if USE_CP437
- if (tigetstr("smpch"))
- suits = glyphs;
-#endif /* USE_CP437 */
-
cbreak();
if (argc == 2)
diff --git a/test/bs.c b/test/bs.c
index c158cbb07251..4de4dbc7f987 100644
--- a/test/bs.c
+++ b/test/bs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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 @@
* v2.0 featuring strict ANSI/POSIX conformance, November 1993.
* v2.1 with ncurses mouse support, September 1995
*
- * $Id: bs.c,v 1.62 2013/11/16 19:57:56 tom Exp $
+ * $Id: bs.c,v 1.74 2019/08/17 21:49:19 tom Exp $
*/
#include <test.priv.h>
@@ -64,6 +64,8 @@ static int getcoord(int);
#define CTRLC '\003' /* used as terminate command */
#define FF '\014' /* used as redraw command */
+#define is_QUIT(c) ((c) == CTRLC || (c) == QUIT)
+
/* coordinate handling */
#define BWIDTH 10
#define BDEPTH 10
@@ -114,17 +116,20 @@ static char *your_name;
static char dftname[] = "stranger";
/* direction constants */
-#define E 0
-#define SE 1
-#define S 2
-#define SW 3
-#define W 4
-#define NW 5
-#define N 6
-#define NE 7
-static int xincr[8] =
+typedef enum {
+ dir_E = 0
+ ,dir_SE
+ ,dir_S
+ ,dir_SW
+ ,dir_W
+ ,dir_NW
+ ,dir_N
+ ,dir_NE
+ ,dir_MAX
+} DIRECTIONS;
+static int xincr[dir_MAX + 2] =
{1, 1, 0, -1, -1, -1, 0, 1};
-static int yincr[8] =
+static int yincr[dir_MAX + 2] =
{0, 1, 1, 1, 0, -1, -1, -1};
/* current ship position and direction */
@@ -145,6 +150,7 @@ static bool checkplace(int b, ship_t * ss, int vis);
#define SHIPIT(name, symbol, length) { name, 0, symbol, length, 0,0, 0, FALSE }
+/* "ply=player", "cpu=computer" */
static ship_t plyship[SHIPTYPES] =
{
SHIPIT(carrier, 'A', 5),
@@ -185,6 +191,7 @@ uninitgame(int sig GCC_UNUSED)
(void) reset_shell_mode();
(void) echo();
(void) endwin();
+ free(your_name);
ExitProgram(sig ? EXIT_FAILURE : EXIT_SUCCESS);
}
@@ -214,20 +221,19 @@ announceopts(void)
static void
intro(void)
{
- char *tmpname;
+ const char *tmpname;
srand((unsigned) (time(0L) + getpid())); /* Kick the random number generator */
- CATCHALL(uninitgame);
+ InitAndCatch(initscr(), uninitgame);
if ((tmpname = getlogin()) != 0 &&
(your_name = strdup(tmpname)) != 0) {
your_name[0] = (char) toupper(UChar(your_name[0]));
} else {
- your_name = dftname;
+ your_name = strdup(dftname);
}
- (void) initscr();
keypad(stdscr, TRUE);
(void) def_prog_mode();
(void) nonl();
@@ -306,7 +312,7 @@ placeship(int b, ship_t * ss, int vis)
board[b][newx][newy] = ss->symbol;
if (vis) {
pgoto(newy, newx);
- (void) addch((chtype) ss->symbol);
+ AddCh(ss->symbol);
}
}
ss->hits = 0;
@@ -324,9 +330,9 @@ randomplace(int b, ship_t * ss)
{
do {
- ss->dir = rnd(2) ? E : S;
- ss->x = rnd(BWIDTH - (ss->dir == E ? ss->length : 0));
- ss->y = rnd(BDEPTH - (ss->dir == S ? ss->length : 0));
+ ss->dir = rnd(2) ? dir_E : dir_S;
+ ss->x = rnd(BWIDTH - (ss->dir == dir_E ? ss->length : 0));
+ ss->y = rnd(BDEPTH - (ss->dir == dir_S ? ss->length : 0));
} while
(!checkplace(b, ss, FALSE));
}
@@ -369,16 +375,16 @@ initgame(void)
MvAddCh(PYBASE + i, PXBASE - 3, (chtype) (i + 'A'));
#ifdef A_COLOR
if (has_colors())
- attron((attr_t) COLOR_PAIR(COLOR_BLUE));
+ attron(COLOR_PAIR(COLOR_BLUE));
#endif /* A_COLOR */
- (void) addch(' ');
+ AddCh(' ');
for (j = 0; j < BWIDTH; j++)
(void) addstr(" . ");
#ifdef A_COLOR
(void) attrset(0);
#endif /* A_COLOR */
- (void) addch(' ');
- (void) addch((chtype) (i + 'A'));
+ AddCh(' ');
+ AddCh(i + 'A');
}
MvAddStr(PYBASE + BDEPTH, PXBASE - 3, numbers);
MvAddStr(CYBASE - 2, CXBASE + 7, "Hit/Miss Board");
@@ -387,16 +393,16 @@ initgame(void)
MvAddCh(CYBASE + i, CXBASE - 3, (chtype) (i + 'A'));
#ifdef A_COLOR
if (has_colors())
- attron((attr_t) COLOR_PAIR(COLOR_BLUE));
+ attron(COLOR_PAIR(COLOR_BLUE));
#endif /* A_COLOR */
- (void) addch(' ');
+ AddCh(' ');
for (j = 0; j < BWIDTH; j++)
(void) addstr(" . ");
#ifdef A_COLOR
(void) attrset(0);
#endif /* A_COLOR */
- (void) addch(' ');
- (void) addch((chtype) (i + 'A'));
+ AddCh(' ');
+ AddCh(i + 'A');
}
MvAddStr(CYBASE + BDEPTH, CXBASE - 3, numbers);
@@ -461,9 +467,11 @@ initgame(void)
do {
c = (char) getch();
} while
- (!(strchr("hjkl8462rR", c) || c == FF));
+ (!(strchr("hjkl8462rR", c) || c == FF || is_QUIT(c)));
- if (c == FF) {
+ if (is_QUIT(c)) {
+ uninitgame(0);
+ } else if (c == FF) {
(void) clearok(stdscr, TRUE);
(void) refresh();
} else if (ss == 0) {
@@ -490,19 +498,19 @@ initgame(void)
switch (c) {
case 'k':
case '8':
- ss->dir = N;
+ ss->dir = dir_N;
break;
case 'j':
case '2':
- ss->dir = S;
+ ss->dir = dir_S;
break;
case 'h':
case '4':
- ss->dir = W;
+ ss->dir = dir_W;
break;
case 'l':
case '6':
- ss->dir = E;
+ ss->dir = dir_E;
break;
}
@@ -540,14 +548,15 @@ initgame(void)
static int
getcoord(int atcpu)
{
- int ny, nx, c;
-
if (atcpu)
cgoto(cury, curx);
else
pgoto(cury, curx);
(void) refresh();
+
for (;;) {
+ int ny, nx, c;
+
if (atcpu) {
MvPrintw(CYBASE + BDEPTH + 1, CXBASE + 11, "(%d, %c)",
curx, 'A' + cury);
@@ -660,7 +669,7 @@ collidecheck(int b, int y, int x)
if (!closepack) {
int i;
- for (i = 0; i < 8; i++) {
+ for (i = 0; i < dir_MAX; i++) {
int xend, yend;
yend = y + yincr[i];
@@ -723,10 +732,9 @@ static int
awinna(void)
{
int i, j;
- ship_t *ss;
for (i = 0; i < 2; ++i) {
- ss = (i) ? cpuship : plyship;
+ ship_t *ss = (i) ? cpuship : plyship;
for (j = 0; j < SHIPTYPES; ++j, ++ss)
if (ss->length > ss->hits)
break;
@@ -753,12 +761,14 @@ hitship(int x, int y)
if (++ss->hits < ss->length) /* still afloat? */
return ((ship_t *) NULL);
else { /* sunk! */
- int i, j;
+ int i;
+
+ if (!closepack) {
+ int j;
- if (!closepack)
for (j = -1; j <= 1; j++) {
- int bx = ss->x + j * xincr[(ss->dir + 2) % 8];
- int by = ss->y + j * yincr[(ss->dir + 2) % 8];
+ int bx = ss->x + j * xincr[(ss->dir + 2) % dir_MAX];
+ int by = ss->y + j * yincr[(ss->dir + 2) % dir_MAX];
for (i = -1; i <= ss->length; ++i) {
int x1, y1;
@@ -771,19 +781,20 @@ hitship(int x, int y)
cgoto(y1, x1);
#ifdef A_COLOR
if (has_colors())
- attron((attr_t) COLOR_PAIR(COLOR_GREEN));
+ attron(COLOR_PAIR(COLOR_GREEN));
#endif /* A_COLOR */
- (void) addch(MARK_MISS);
+ AddCh(MARK_MISS);
#ifdef A_COLOR
(void) attrset(0);
#endif /* A_COLOR */
} else {
pgoto(y1, x1);
- (void) addch(SHOWSPLASH);
+ AddCh(SHOWSPLASH);
}
}
}
}
+ }
for (i = 0; i < ss->length; ++i) {
int x1 = ss->x + i * xincr[ss->dir];
@@ -792,14 +803,14 @@ hitship(int x, int y)
hits[turn][x1][y1] = ss->symbol;
if (turn % 2 == PLAYER) {
cgoto(y1, x1);
- (void) addch((chtype) (ss->symbol));
+ AddCh(ss->symbol);
} else {
pgoto(y1, x1);
#ifdef A_COLOR
if (has_colors())
- attron((attr_t) COLOR_PAIR(COLOR_RED));
+ attron(COLOR_PAIR(COLOR_RED));
#endif /* A_COLOR */
- (void) addch(SHOWHIT);
+ AddCh(SHOWHIT);
#ifdef A_COLOR
(void) attrset(0);
#endif /* A_COLOR */
@@ -836,12 +847,12 @@ plyturn(void)
#ifdef A_COLOR
if (has_colors()) {
if (hit)
- attron((attr_t) COLOR_PAIR(COLOR_RED));
+ attron(COLOR_PAIR(COLOR_RED));
else
- attron((attr_t) COLOR_PAIR(COLOR_GREEN));
+ attron(COLOR_PAIR(COLOR_GREEN));
}
#endif /* A_COLOR */
- (void) addch((chtype) hits[PLAYER][curx][cury]);
+ AddCh(hits[PLAYER][curx][cury]);
#ifdef A_COLOR
(void) attrset(0);
#endif /* A_COLOR */
@@ -876,20 +887,20 @@ plyturn(void)
static int
sgetc(const char *s)
{
- const char *s1;
- int ch;
-
(void) refresh();
+
for (;;) {
- ch = getch();
+ int ch = getch();
+ const char *s1;
+
if (islower(ch))
ch = toupper(ch);
- if (ch == CTRLC)
+ if (is_QUIT(ch))
uninitgame(0);
for (s1 = s; *s1 && ch != *s1; ++s1)
continue;
if (*s1) {
- (void) addch((chtype) ch);
+ AddCh(ch);
(void) refresh();
return (ch);
}
@@ -969,12 +980,12 @@ cpufire(int x, int y)
#ifdef A_COLOR
if (has_colors()) {
if (hit)
- attron((attr_t) COLOR_PAIR(COLOR_RED));
+ attron(COLOR_PAIR(COLOR_RED));
else
- attron((attr_t) COLOR_PAIR(COLOR_GREEN));
+ attron(COLOR_PAIR(COLOR_GREEN));
}
#endif /* A_COLOR */
- (void) addch((chtype) (hit ? SHOWHIT : SHOWSPLASH));
+ AddCh((hit ? SHOWHIT : SHOWSPLASH));
#ifdef A_COLOR
(void) attrset(0);
#endif /* A_COLOR */
@@ -1002,7 +1013,7 @@ cputurn(void)
#define REVERSE_JUMP 4
#define SECOND_PASS 5
static int next = RANDOM_FIRE;
- static bool used[4];
+ static bool used[5];
static ship_t ts;
int navail, x, y, d, n;
int hit = S_MISS;
@@ -1022,11 +1033,14 @@ cputurn(void)
break;
case RANDOM_HIT: /* last shot was random and hit */
- used[E / 2] = used[S / 2] = used[W / 2] = used[N / 2] = FALSE;
+ used[dir_E / 2] =
+ used[dir_S / 2] =
+ used[dir_W / 2] =
+ used[dir_N / 2] = FALSE;
/* FALLTHROUGH */
case HUNT_DIRECT: /* last shot hit, we're looking for ship's long axis */
- for (d = navail = 0; d < 4; d++) {
+ for (d = navail = 0; d < (dir_MAX) / 2; d++) {
x = ts.x + xincr[d * 2];
y = ts.y + yincr[d * 2];
if (!used[d] && POSSIBLE(x, y))
@@ -1038,13 +1052,13 @@ cputurn(void)
goto refire; /* ...so we must random-fire */
else {
n = rnd(navail) + 1;
- for (d = 0; used[d]; d++) ;
+ for (d = 0; d < (dir_MAX) / 2 && used[d]; d++) ;
/* used[d] is first that == 0 */
for (; n > 1; n--)
- while (used[++d]) ;
+ while (d < (dir_MAX) / 2 && used[++d]) ;
/* used[d] is next that == 0 */
- assert(d < 4);
+ assert(d < (dir_MAX) / 2);
assert(used[d] == FALSE);
used[d] = TRUE;
@@ -1078,7 +1092,7 @@ cputurn(void)
break;
case REVERSE_JUMP: /* nail down the ship's other end */
- d = (ts.dir + 4) % 8;
+ d = (ts.dir + (dir_MAX) / 2) % dir_MAX;
x = ts.x + ts.hits * xincr[d];
y = ts.y + ts.hits * yincr[d];
if (POSSIBLE(x, y) && (hit = cpufire(x, y))) {
@@ -1127,7 +1141,7 @@ playagain(void)
for (ss = cpuship; ss < cpuship + SHIPTYPES; ss++)
for (j = 0; j < ss->length; j++) {
cgoto(ss->y + j * yincr[ss->dir], ss->x + j * xincr[ss->dir]);
- (void) addch((chtype) ss->symbol);
+ AddCh(ss->symbol);
}
if (awinna())
@@ -1150,14 +1164,14 @@ playagain(void)
static void
do_options(int c, char *op[])
{
- register int i;
-
if (c > 1) {
+ int i;
+
for (i = 1; i < c; i++) {
switch (op[i][0]) {
default:
case '?':
- (void) fprintf(stderr, "Usage: battle [-s | -b] [-c]\n");
+ (void) fprintf(stderr, "Usage: bs [-s | -b] [-c]\n");
(void) fprintf(stderr, "\tWhere the options are:\n");
(void) fprintf(stderr, "\t-s : play a salvo game\n");
(void) fprintf(stderr, "\t-b : play a blitz game\n");
diff --git a/test/bulgarian-utf8-tabs.txt b/test/bulgarian-utf8-tabs.txt
new file mode 100644
index 000000000000..65e42bb14dc6
--- /dev/null
+++ b/test/bulgarian-utf8-tabs.txt
@@ -0,0 +1,6 @@
+Показване на помощна информация -- 1
+Създаване на дялове -- 2
+Избор на дял и форматиране -- 3
+Записване в избрания дял -- 4
+Инсталиране на LILO -- 5
+Изход от програмата -- 6
diff --git a/test/cardfile.c b/test/cardfile.c
index b75024143c6e..a782342e226b 100644
--- a/test/cardfile.c
+++ b/test/cardfile.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2017,2019 Free 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
*
- * $Id: cardfile.c,v 1.42 2013/09/28 22:02:17 tom Exp $
+ * $Id: cardfile.c,v 1.46 2019/08/17 21:49:40 tom Exp $
*
* File format: text beginning in column 1 is a title; other text is content.
*/
@@ -125,15 +125,19 @@ add_title(const char *title)
static void
add_content(CARD * card, const char *content)
{
- size_t total, offset;
+ size_t total;
content = skip(content);
if ((total = strlen(content)) != 0) {
+ size_t offset;
+
if (card->content != 0 && (offset = strlen(card->content)) != 0) {
total += 1 + offset;
card->content = typeRealloc(char, total + 1, card->content);
- if (card->content)
- strcpy(card->content + offset++, " ");
+ if (card->content) {
+ _nc_STRCPY(card->content + offset, " ", total + 1 - offset);
+ offset++;
+ }
} else {
offset = 0;
if (card->content != 0)
@@ -141,7 +145,7 @@ add_content(CARD * card, const char *content)
card->content = typeMalloc(char, total + 1);
}
if (card->content)
- strcpy(card->content + offset, content);
+ _nc_STRCPY(card->content + offset, content, total + 1 - offset);
else
failed("add_content");
}
@@ -171,10 +175,11 @@ static void
read_data(char *fname)
{
FILE *fp;
- CARD *card = 0;
- char buffer[BUFSIZ];
if ((fp = fopen(fname, "r")) != 0) {
+ CARD *card = 0;
+ char buffer[BUFSIZ];
+
while (fgets(buffer, sizeof(buffer), fp)) {
trim(buffer);
if (isspace(UChar(*buffer))) {
@@ -195,15 +200,17 @@ static void
write_data(const char *fname)
{
FILE *fp;
- CARD *p = 0;
- int n;
if (!strcmp(fname, default_name))
fname = "cardfile.out";
if ((fp = fopen(fname, "w")) != 0) {
+ CARD *p = 0;
+
for (p = all_cards; p != 0; p = p->link) {
FIELD **f = form_fields(p->form);
+ int n;
+
for (n = 0; f[n] != 0; n++) {
char *s = field_buffer(f[n], 0);
if (s != 0
@@ -363,7 +370,7 @@ show_legend(void)
#if (defined(KEY_RESIZE) && HAVE_WRESIZE) || NO_LEAKS
static void
-free_form_fields(FIELD ** f)
+free_form_fields(FIELD **f)
{
int n;
@@ -389,7 +396,6 @@ cardfile(char *fname)
int form_high;
int y;
int x;
- int ch = ERR;
int finished = FALSE;
show_legend();
@@ -430,6 +436,8 @@ cardfile(char *fname)
order_cards(top_card, visible_cards);
while (!finished) {
+ int ch = ERR;
+
update_panels();
doupdate();
@@ -520,13 +528,11 @@ cardfile(char *fname)
}
#if NO_LEAKS
while (all_cards != 0) {
- FIELD **f;
-
p = all_cards;
all_cards = all_cards->link;
if (isVisible(p)) {
- f = form_fields(p->form);
+ FIELD **f = form_fields(p->form);
unpost_form(p->form); /* ...so we can free it */
free_form(p->form); /* this also disconnects the fields */
@@ -547,7 +553,7 @@ usage(void)
{
static const char *msg[] =
{
- "Usage: view [options] file"
+ "Usage: cardfile [options] file"
,""
,"Options:"
," -c use color if terminal supports it"
diff --git a/test/chgat.c b/test/chgat.c
index 919b5c9e3b98..5c82aee366fb 100644
--- a/test/chgat.c
+++ b/test/chgat.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2006-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2006-2017,2019 Free 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,12 +26,13 @@
* authorization. *
****************************************************************************/
/*
- * $Id: chgat.c,v 1.12 2012/11/18 01:55:35 tom Exp $
+ * $Id: chgat.c,v 1.18 2019/08/17 21:49:19 tom Exp $
*
* test-driver for chgat/wchgat/mvchgat/mvwchgat
*/
#include <test.priv.h>
+#include <popup_msg.h>
#if HAVE_CHGAT
@@ -45,10 +46,10 @@
#endif
typedef struct {
- unsigned c;
- unsigned v;
+ size_t c;
+ size_t v;
short pair;
- unsigned attr;
+ attr_t attr;
int count;
int ch;
const char *c_msg;
@@ -60,7 +61,7 @@ typedef struct {
} STATUS;
static const char *
-color_params(unsigned state, short *pair)
+color_params(size_t state, short *pair)
{
/* *INDENT-OFF* */
static struct {
@@ -74,12 +75,13 @@ color_params(unsigned state, short *pair)
};
/* *INDENT-ON* */
- static bool first = TRUE;
const char *result = 0;
if (has_colors()) {
+ static bool first = TRUE;
+
if (first) {
- unsigned n;
+ size_t n;
start_color();
for (n = 0; n < SIZEOF(table); ++n) {
@@ -95,18 +97,18 @@ color_params(unsigned state, short *pair)
}
static const char *
-video_params(unsigned state, unsigned *attr)
+video_params(size_t state, attr_t *attr)
{
/* *INDENT-OFF* */
static struct {
- unsigned attr;
+ attr_t attr;
const char *msg;
} table[] = {
- { A_NORMAL, "normal" },
- { A_BOLD, "bold" },
- { A_REVERSE, "reverse" },
- { A_UNDERLINE, "underline" },
- { A_BLINK, "blink" },
+ { WA_NORMAL, "normal" },
+ { WA_BOLD, "bold" },
+ { WA_REVERSE, "reverse" },
+ { WA_UNDERLINE, "underline" },
+ { WA_BLINK, "blink" },
};
/* *INDENT-ON* */
@@ -200,7 +202,7 @@ init_status(WINDOW *win, STATUS * sp)
static void
show_help(WINDOW *win)
{
- static const char *table[] =
+ static const char *msgs[] =
{
"Basic commands:"
,"Use h/j/k/l or arrow keys to move the cursor."
@@ -214,19 +216,10 @@ show_help(WINDOW *win)
,"= resets count to zero."
,"- negates count."
,"? shows this help-window"
- ,""
- ,""
+ ,0
};
- int y_max, x_max;
- int row;
-
- getmaxyx(win, y_max, x_max);
- for (row = 0; row < (int) SIZEOF(table) && row < y_max; ++row) {
- MvWPrintw(win, row, 0, "%.*s", x_max, table[row]);
- }
- while (wgetch(win) != 'q')
- beep();
+ popup_msg(win, msgs);
}
static void
@@ -280,8 +273,8 @@ update_status(WINDOW *win, STATUS * sp)
sp->count = -(sp->count);
show_status(win, sp);
break;
- case '?':
- do_subwindow(win, sp, show_help);
+ case HELP_KEY_1:
+ show_help(win);
break;
default:
if (isdigit(sp->ch)) {
diff --git a/test/clip_printw.c b/test/clip_printw.c
index 6d6d590241ae..f7689e6f0218 100644
--- a/test/clip_printw.c
+++ b/test/clip_printw.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2008-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2017,2019 Free 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,12 +26,13 @@
* authorization. *
****************************************************************************/
/*
- * $Id: clip_printw.c,v 1.9 2012/11/18 00:39:48 tom Exp $
+ * $Id: clip_printw.c,v 1.16 2019/08/17 21:49:40 tom Exp $
*
* demonstrate how to use printw without wrapping.
*/
#include <test.priv.h>
+#include <popup_msg.h>
#ifdef HAVE_VW_PRINTW
@@ -55,7 +56,7 @@ typedef struct {
} STATUS;
static int
-clip_wprintw(WINDOW *win, NCURSES_CONST char *fmt,...)
+clip_wprintw(WINDOW *win, NCURSES_CONST char *fmt, ...)
{
int y0, x0, y1, x1, width;
WINDOW *sub;
@@ -102,10 +103,11 @@ color_params(unsigned state, int *pair)
};
/* *INDENT-ON* */
- static bool first = TRUE;
const char *result = 0;
if (has_colors()) {
+ static bool first = TRUE;
+
if (first) {
unsigned n;
@@ -132,11 +134,11 @@ video_params(unsigned state, attr_t *attr)
attr_t attr;
const char *msg;
} table[] = {
- { A_NORMAL, "normal" },
- { A_BOLD, "bold" },
- { A_REVERSE, "reverse" },
- { A_UNDERLINE, "underline" },
- { A_BLINK, "blink" },
+ { WA_NORMAL, "normal" },
+ { WA_BOLD, "bold" },
+ { WA_REVERSE, "reverse" },
+ { WA_UNDERLINE, "underline" },
+ { WA_BLINK, "blink" },
};
/* *INDENT-ON* */
@@ -231,7 +233,7 @@ init_status(WINDOW *win, STATUS * sp)
static void
show_help(WINDOW *win)
{
- static const char *table[] =
+ static const char *msgs[] =
{
"Basic commands:"
,"Use h/j/k/l or arrow keys to move the cursor."
@@ -240,21 +242,13 @@ show_help(WINDOW *win)
,"Other commands:"
,"space toggles through the set of video attributes and colors."
,"t touches (forces repaint) of the current line."
- ,". calls clip_wprintw at the current position with the given count."
+ ,". calls vw_printw at the current position with the given count."
,"= resets count to zero."
,"? shows this help-window"
- ,""
+ ,0
};
- int y_max, x_max;
- int row;
-
- getmaxyx(win, y_max, x_max);
- for (row = 0; row < (int) SIZEOF(table) && row < y_max; ++row) {
- MvWPrintw(win, row, 0, "%.*s", x_max, table[row]);
- }
- while (wgetch(win) != 'q')
- beep();
+ popup_msg(win, msgs);
}
static void
@@ -304,8 +298,8 @@ update_status(WINDOW *win, STATUS * sp)
sp->count = 0;
show_status(win, sp);
break;
- case '?':
- do_subwindow(win, sp, show_help);
+ case HELP_KEY_1:
+ show_help(win);
break;
default:
if (isdigit(sp->ch)) {
@@ -331,13 +325,13 @@ test_clipping(WINDOW *win)
do {
switch (st.ch) {
case '.': /* change from current position */
- (void) wattrset(win, (int) (st.attr | (chtype) COLOR_PAIR(st.pair)));
+ (void) wattrset(win, AttrArg(COLOR_PAIR(st.pair), st.attr));
if (st.count > 0) {
need = (unsigned) st.count + 1;
- sprintf(fmt, "%%c%%%ds%%c", st.count);
+ _nc_SPRINTF(fmt, _nc_SLIMIT(sizeof(fmt)) "%%c%%%ds%%c", st.count);
} else {
need = (unsigned) getmaxx(win) - 1;
- strcpy(fmt, "%c%s%c");
+ _nc_STRCPY(fmt, "%c%s%c", sizeof(fmt));
}
if ((buffer = typeMalloc(char, need + 1)) != 0) {
for (j = 0; j < need; ++j) {
diff --git a/test/color_content.c b/test/color_content.c
new file mode 100644
index 000000000000..8b11982a2bbc
--- /dev/null
+++ b/test/color_content.c
@@ -0,0 +1,331 @@
+/****************************************************************************
+ * Copyright (c) 2018,2019 Free 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: color_content.c,v 1.11 2019/08/17 21:29:13 tom Exp $
+ */
+
+#define NEED_TIME_H
+#include <test.priv.h>
+
+#if USE_EXTENDED_COLOR
+typedef int my_color_t;
+#else
+typedef NCURSES_COLOR_T my_color_t;
+#endif
+
+typedef struct {
+ my_color_t r;
+ my_color_t g;
+ my_color_t b;
+} MYCOLOR;
+
+static int f_opt;
+static int i_opt;
+static int l_opt;
+static int n_opt;
+static int p_opt;
+static int r_opt;
+static int s_opt;
+
+#if USE_EXTENDED_COLOR
+static int x_opt;
+#endif
+
+static MYCOLOR *expected;
+
+#if HAVE_GETTIMEOFDAY
+static struct timeval initial_time;
+static struct timeval finish_time;
+#endif
+
+static void
+failed(const char *msg)
+{
+ printw("%s", msg);
+ getch();
+ endwin();
+ ExitProgram(EXIT_FAILURE);
+}
+
+#if USE_EXTENDED_COLOR
+static int
+InitColor(int pair, int r, int g, int b)
+{
+ int rc;
+ if (x_opt) {
+ rc = init_extended_color(pair, r, g, b);
+ } else {
+ rc = init_color((NCURSES_PAIRS_T) pair,
+ (NCURSES_COLOR_T) r,
+ (NCURSES_COLOR_T) g,
+ (NCURSES_COLOR_T) b);
+ }
+ return rc;
+}
+
+static int
+ColorContent(int color, int *rp, int *gp, int *bp)
+{
+ int rc;
+ if (x_opt) {
+ rc = extended_color_content(color, rp, gp, bp);
+ } else {
+ NCURSES_COLOR_T r, g, b;
+ if ((rc = color_content((NCURSES_COLOR_T) color, &r, &g, &b)) == OK) {
+ *rp = r;
+ *gp = g;
+ *bp = b;
+ }
+ }
+ return rc;
+}
+#else
+#define InitColor(color,r,g,b) init_color((NCURSES_COLOR_T)color,(NCURSES_COLOR_T)r,(NCURSES_COLOR_T)g,(NCURSES_COLOR_T)b)
+#define ColorContent(color,rp,gp,bp) color_content((NCURSES_COLOR_T)color,rp,gp,bp)
+#endif
+
+static my_color_t
+random_color(void)
+{
+ return (my_color_t) (rand() % 1000);
+}
+
+static void
+setup_test(void)
+{
+ initscr();
+ cbreak();
+ noecho();
+ scrollok(stdscr, TRUE);
+ if (has_colors()) {
+ start_color();
+ if (!can_change_color() && !p_opt)
+ failed("this terminal cannot initialize colors");
+
+ if (!f_opt)
+ f_opt = 0;
+ if (!l_opt)
+ l_opt = COLORS;
+ if (l_opt <= 0)
+ failed("color limit must be greater than zero");
+
+ if (!n_opt) {
+ int color;
+ size_t need = (size_t) ((l_opt > COLORS) ? l_opt : COLORS) + 1;
+
+ expected = typeCalloc(MYCOLOR, need);
+ if (s_opt) {
+ int r;
+ int g;
+ int b;
+ color = f_opt;
+ for (r = 0; r < 1000; ++r) {
+ for (g = 0; g < 1000; ++g) {
+ for (b = 0; b < 1000; ++b) {
+ if (color < l_opt) {
+ InitColor(color, r, g, b);
+ expected[color].r = (my_color_t) r;
+ expected[color].g = (my_color_t) g;
+ expected[color].b = (my_color_t) b;
+ ++color;
+ } else {
+ break;
+ }
+ }
+ }
+ }
+ } else {
+ for (color = f_opt; color < l_opt; ++color) {
+ expected[color].r = random_color();
+ expected[color].g = random_color();
+ expected[color].b = random_color();
+ InitColor(color,
+ expected[color].r,
+ expected[color].g,
+ expected[color].b);
+ }
+ }
+ }
+ } else {
+ failed("This demo requires a color terminal");
+ }
+#if HAVE_GETTIMEOFDAY
+ gettimeofday(&initial_time, 0);
+#endif
+}
+
+static void
+run_test(void)
+{
+ int color;
+ bool success = TRUE;
+ for (color = f_opt; color < l_opt; ++color) {
+ my_color_t r;
+ my_color_t g;
+ my_color_t b;
+ if (ColorContent(color, &r, &g, &b) == OK) {
+ if (expected != 0) {
+ if (r != expected[color].r)
+ success = FALSE;
+ if (g != expected[color].g)
+ success = FALSE;
+ if (b != expected[color].b)
+ success = FALSE;
+ }
+ }
+ }
+ if (i_opt) {
+ addch(success ? '.' : '?');
+ refresh();
+ }
+}
+
+static void
+finish_test(void)
+{
+ getch();
+ endwin();
+}
+
+#if HAVE_GETTIMEOFDAY
+static double
+seconds(struct timeval *mark)
+{
+ double result = (double) mark->tv_sec;
+ result += ((double) mark->tv_usec / 1e6);
+ return result;
+}
+#endif
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: color_content [options]"
+ ,""
+ ,"Options:"
+ ," -f COLOR first color value to test (default: 0)"
+ ," -i interactive, showing test-progress"
+ ," -l COLOR last color value to test (default: max_colors-1)"
+ ," -n do not initialize color pairs"
+ ," -p print data for color content instead of testing"
+ ," -r COUNT repeat for given count"
+ ," -s initialize pairs sequentially rather than random"
+#if USE_EXTENDED_COLOR
+ ," -x use extended color pairs/values"
+#endif
+ };
+ size_t n;
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+ ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+{
+ int i;
+
+ while ((i = getopt(argc, argv, "f:il:npr:sx")) != -1) {
+ switch (i) {
+ case 'f':
+ if ((f_opt = atoi(optarg)) <= 0)
+ usage();
+ break;
+ case 'i':
+ i_opt = 1;
+ break;
+ case 'l':
+ if ((l_opt = atoi(optarg)) <= 0)
+ usage();
+ break;
+ case 'n':
+ n_opt = 1;
+ break;
+ case 'p':
+ p_opt = 1;
+ break;
+ case 'r':
+ if ((r_opt = atoi(optarg)) <= 0)
+ usage();
+ break;
+ case 's':
+ s_opt = 1;
+ break;
+#if USE_EXTENDED_COLOR
+ case 'x':
+ x_opt = 1;
+ break;
+#endif
+ default:
+ usage();
+ }
+ }
+ if (optind < argc)
+ usage();
+ if (r_opt <= 0)
+ r_opt = 1;
+
+ setup_test();
+ if (p_opt) {
+ endwin();
+ for (i = 0; i < COLORS; ++i) {
+ my_color_t r, g, b;
+ if (ColorContent(i, &r, &g, &b) == OK) {
+ printf("%d: %d %d %d\n", i, r, g, b);
+ } else {
+ printf("%d: ? ?\n", i);
+ }
+ }
+ } else {
+ int repeat;
+
+ for (repeat = 0; repeat < r_opt; ++repeat) {
+ run_test();
+ if (i_opt) {
+ addch('.');
+ refresh();
+ }
+ }
+
+ if (i_opt) {
+ addch('\n');
+ }
+ printw("DONE: ");
+#if HAVE_GETTIMEOFDAY
+ gettimeofday(&finish_time, 0);
+ printw("%.03f seconds",
+ seconds(&finish_time)
+ - seconds(&initial_time));
+#endif
+ finish_test();
+ }
+
+ ExitProgram(EXIT_SUCCESS);
+}
diff --git a/test/color_name.h b/test/color_name.h
index 81a3b3125759..5ec4dcbf990e 100644
--- a/test/color_name.h
+++ b/test/color_name.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2011-2016,2018 Free 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: color_name.h,v 1.4 2012/11/18 01:59:32 tom Exp $
+ * $Id: color_name.h,v 1.6 2018/12/29 15:19:30 tom Exp $
*/
#ifndef __COLORNAME_H
@@ -79,7 +79,7 @@ color_code(const char *color)
}
return result;
}
-#endif /* NEED_COLOR_NAME */
+#endif /* NEED_COLOR_CODE */
#ifdef NEED_COLOR_NAME
static const char *
@@ -89,7 +89,7 @@ color_name(int color)
const char *result = 0;
if (color >= (int) SIZEOF(the_color_names)) {
- sprintf(temp, "%d", color);
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(result)) "%d", color);
result = temp;
} else if (color < 0) {
result = "default";
diff --git a/test/color_set.c b/test/color_set.c
index 477d049c8b5e..cfe3755bd7de 100644
--- a/test/color_set.c
+++ b/test/color_set.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2003-2012,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 2003-2014,2019 Free 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: color_set.c,v 1.8 2014/02/01 22:10:42 tom Exp $
+ * $Id: color_set.c,v 1.9 2019/08/17 21:49:19 tom Exp $
*/
#include <test.priv.h>
@@ -39,13 +39,14 @@ int
main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
{
NCURSES_COLOR_T f, b;
- int i;
initscr();
cbreak();
noecho();
if (has_colors()) {
+ int i;
+
start_color();
(void) pair_content(0, &f, &b);
diff --git a/test/configure b/test/configure
index 3fb46e8f8c84..23502348ba6d 100755
--- a/test/configure
+++ b/test/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by Autoconf 2.52.20121002.
+# Generated by Autoconf 2.52.20200111.
#
# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc.
@@ -139,6 +139,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
libdir='${exec_prefix}/lib'
includedir='${prefix}/include'
oldincludedir='/usr/include'
@@ -281,6 +282,15 @@ do
| --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
localstatedir=$ac_optarg ;;
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst \
+ | --runs | --run | --ru)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* \
+ | --runs=* | --run=* | --ru=*)
+ runstatedir=$ac_optarg ;;
+
-mandir | --mandir | --mandi | --mand | --man | --ma | --m)
ac_prev=mandir ;;
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
@@ -618,6 +628,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR extra definition of runtime data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -646,30 +657,38 @@ if test -n "$ac_init_help"; then
cat <<\EOF
-Optional Packages:
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
-
Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+
General Options:
+ --disable-stripping do not strip (debug info) installed executables
+ --enable-string-hacks work around bogus compiler/loader warnings
--with-pkg-config{=path} enable/disable use of pkg-config
--disable-echo do not display "compiling" commands
Curses Version-dependent Options:
--with-ncurses-wrap-prefix naming-prefix for ncurses wrapped-variables
--disable-widec disable checks for wide-character functions
--with-curses-dir=DIR directory in which (n)curses is installed
+ --with-screen=XXX use specified curses-libraries
--with-ncursesw use wide ncurses-libraries
--with-ncurses use ncurses-libraries
--with-pdcurses compile/link with pdcurses X11 library
--with-curses-colr compile/link with HPUX 10.x color-curses
--with-curses-5lib compile/link with SunOS 5lib curses
--with-Xaw3d link with Xaw 3d library
+ --with-Xaw3dxft link with Xaw 3d xft library
--with-neXtaw link with neXT Athena library
--with-XawPlus link with Athena-Plus library
--with-x use the X Window System
+ --with-x11-rgb=FILE file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)
+ --disable-panel disable checks for panel functions
+ --disable-menu disable checks for menu functions
+ --disable-form disable checks for form functions
Testing/development Options:
--enable-warnings test: turn on gcc compiler warnings
--with-dmalloc test: use Gray Watson's dmalloc library
@@ -746,7 +765,7 @@ This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by $as_me, which was
-generated by GNU Autoconf 2.52.20121002. Invocation command line was
+generated by GNU Autoconf 2.52.20200111. Invocation command line was
$ $0 $@
@@ -870,7 +889,7 @@ if test -z "$CONFIG_SITE"; then
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
- { echo "$as_me:873: loading site script $ac_site_file" >&5
+ { echo "$as_me:892: loading site script $ac_site_file" >&5
echo "$as_me: loading site script $ac_site_file" >&6;}
cat "$ac_site_file" >&5
. "$ac_site_file"
@@ -881,7 +900,7 @@ if test -r "$cache_file"; then
# Some versions of bash will fail to source /dev/null (special
# files actually), so we avoid doing that.
if test -f "$cache_file"; then
- { echo "$as_me:884: loading cache $cache_file" >&5
+ { echo "$as_me:903: loading cache $cache_file" >&5
echo "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . $cache_file;;
@@ -889,7 +908,7 @@ echo "$as_me: loading cache $cache_file" >&6;}
esac
fi
else
- { echo "$as_me:892: creating cache $cache_file" >&5
+ { echo "$as_me:911: creating cache $cache_file" >&5
echo "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
@@ -905,21 +924,21 @@ for ac_var in `(set) 2>&1 |
eval ac_new_val="\$ac_env_${ac_var}_value"
case $ac_old_set,$ac_new_set in
set,)
- { echo "$as_me:908: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+ { echo "$as_me:927: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
ac_cache_corrupted=: ;;
,set)
- { echo "$as_me:912: error: \`$ac_var' was not set in the previous run" >&5
+ { echo "$as_me:931: error: \`$ac_var' was not set in the previous run" >&5
echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_cache_corrupted=: ;;
,);;
*)
if test "x$ac_old_val" != "x$ac_new_val"; then
- { echo "$as_me:918: error: \`$ac_var' has changed since the previous run:" >&5
+ { echo "$as_me:937: error: \`$ac_var' has changed since the previous run:" >&5
echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- { echo "$as_me:920: former value: $ac_old_val" >&5
+ { echo "$as_me:939: former value: $ac_old_val" >&5
echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:922: current value: $ac_new_val" >&5
+ { echo "$as_me:941: current value: $ac_new_val" >&5
echo "$as_me: current value: $ac_new_val" >&2;}
ac_cache_corrupted=:
fi;;
@@ -938,9 +957,9 @@ echo "$as_me: current value: $ac_new_val" >&2;}
fi
done
if $ac_cache_corrupted; then
- { echo "$as_me:941: error: changes in the environment can compromise the build" >&5
+ { echo "$as_me:960: error: changes in the environment can compromise the build" >&5
echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { echo "$as_me:943: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+ { { echo "$as_me:962: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -952,19 +971,19 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
- *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T=' ' ;;
+case `echo "testing\c" 2>/dev/null; echo 1,2,3`,`echo -n testing 2>/dev/null; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C= # newlines do not sed ;-) only broken shells would use this case anyway
+ ECHO_T=' ' ;;
*c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
*) ECHO_N= ECHO_C='\c' ECHO_T= ;;
esac
echo "#! $SHELL" >conftest.sh
echo "exit 0" >>conftest.sh
chmod +x conftest.sh
-if { (echo "$as_me:964: PATH=\".;.\"; conftest.sh") >&5
+if { (echo "$as_me:983: PATH=\".;.\"; conftest.sh") >&5
(PATH=".;."; conftest.sh) 2>&5
ac_status=$?
- echo "$as_me:967: \$? = $ac_status" >&5
+ echo "$as_me:986: \$? = $ac_status" >&5
(exit $ac_status); }; then
ac_path_separator=';'
else
@@ -996,7 +1015,7 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
fi
done
if test -z "$ac_aux_dir"; then
- { { echo "$as_me:999: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+ { { echo "$as_me:1018: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -1006,11 +1025,11 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
# Make sure we can run config.sub.
$ac_config_sub sun4 >/dev/null 2>&1 ||
- { { echo "$as_me:1009: error: cannot run $ac_config_sub" >&5
+ { { echo "$as_me:1028: error: cannot run $ac_config_sub" >&5
echo "$as_me: error: cannot run $ac_config_sub" >&2;}
{ (exit 1); exit 1; }; }
-echo "$as_me:1013: checking build system type" >&5
+echo "$as_me:1032: checking build system type" >&5
echo $ECHO_N "checking build system type... $ECHO_C" >&6
if test "${ac_cv_build+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1019,16 +1038,16 @@ else
test -z "$ac_cv_build_alias" &&
ac_cv_build_alias=`$ac_config_guess`
test -z "$ac_cv_build_alias" &&
- { { echo "$as_me:1022: error: cannot guess build type; you must specify one" >&5
+ { { echo "$as_me:1041: error: cannot guess build type; you must specify one" >&5
echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
{ (exit 1); exit 1; }; }
ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
- { { echo "$as_me:1026: error: $ac_config_sub $ac_cv_build_alias failed." >&5
+ { { echo "$as_me:1045: error: $ac_config_sub $ac_cv_build_alias failed." >&5
echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
{ (exit 1); exit 1; }; }
fi
-echo "$as_me:1031: result: $ac_cv_build" >&5
+echo "$as_me:1050: result: $ac_cv_build" >&5
echo "${ECHO_T}$ac_cv_build" >&6
build=$ac_cv_build
build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1036,7 +1055,7 @@ build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
- echo "$as_me:1039: checking host system type" >&5
+ echo "$as_me:1058: checking host system type" >&5
echo $ECHO_N "checking host system type... $ECHO_C" >&6
if test "${ac_cv_host+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1045,12 +1064,12 @@ else
test -z "$ac_cv_host_alias" &&
ac_cv_host_alias=$ac_cv_build_alias
ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
- { { echo "$as_me:1048: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+ { { echo "$as_me:1067: error: $ac_config_sub $ac_cv_host_alias failed" >&5
echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
{ (exit 1); exit 1; }; }
fi
-echo "$as_me:1053: result: $ac_cv_host" >&5
+echo "$as_me:1072: result: $ac_cv_host" >&5
echo "${ECHO_T}$ac_cv_host" >&6
host=$ac_cv_host
host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1076,13 +1095,13 @@ else
fi
test -z "$system_name" && system_name="$cf_cv_system_name"
-test -n "$cf_cv_system_name" && echo "$as_me:1079: result: Configuring for $cf_cv_system_name" >&5
+test -n "$cf_cv_system_name" && echo "$as_me:1098: result: Configuring for $cf_cv_system_name" >&5
echo "${ECHO_T}Configuring for $cf_cv_system_name" >&6
if test ".$system_name" != ".$cf_cv_system_name" ; then
- echo "$as_me:1083: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
+ echo "$as_me:1102: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
echo "${ECHO_T}Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&6
- { { echo "$as_me:1085: error: \"Please remove config.cache and try again.\"" >&5
+ { { echo "$as_me:1104: error: \"Please remove config.cache and try again.\"" >&5
echo "$as_me: error: \"Please remove config.cache and try again.\"" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -1100,7 +1119,7 @@ _ACEOF
program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
rm conftest.sed
-echo "$as_me:1103: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "$as_me:1122: checking whether ${MAKE-make} sets \${MAKE}" >&5
echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
@@ -1120,11 +1139,11 @@ fi
rm -f conftest.make
fi
if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
- echo "$as_me:1123: result: yes" >&5
+ echo "$as_me:1142: result: yes" >&5
echo "${ECHO_T}yes" >&6
SET_MAKE=
else
- echo "$as_me:1127: result: no" >&5
+ echo "$as_me:1146: result: no" >&5
echo "${ECHO_T}no" >&6
SET_MAKE="MAKE=${MAKE-make}"
fi
@@ -1138,7 +1157,7 @@ ac_main_return=return
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2
-echo "$as_me:1141: checking for $ac_word" >&5
+echo "$as_me:1160: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_CC+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1153,7 +1172,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_CC="${ac_tool_prefix}gcc"
-echo "$as_me:1156: found $ac_dir/$ac_word" >&5
+echo "$as_me:1175: found $ac_dir/$ac_word" >&5
break
done
@@ -1161,10 +1180,10 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- echo "$as_me:1164: result: $CC" >&5
+ echo "$as_me:1183: result: $CC" >&5
echo "${ECHO_T}$CC" >&6
else
- echo "$as_me:1167: result: no" >&5
+ echo "$as_me:1186: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -1173,7 +1192,7 @@ if test -z "$ac_cv_prog_CC"; then
ac_ct_CC=$CC
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
-echo "$as_me:1176: checking for $ac_word" >&5
+echo "$as_me:1195: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1188,7 +1207,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_CC="gcc"
-echo "$as_me:1191: found $ac_dir/$ac_word" >&5
+echo "$as_me:1210: found $ac_dir/$ac_word" >&5
break
done
@@ -1196,10 +1215,10 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- echo "$as_me:1199: result: $ac_ct_CC" >&5
+ echo "$as_me:1218: result: $ac_ct_CC" >&5
echo "${ECHO_T}$ac_ct_CC" >&6
else
- echo "$as_me:1202: result: no" >&5
+ echo "$as_me:1221: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -1212,7 +1231,7 @@ if test -z "$CC"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
set dummy ${ac_tool_prefix}cc; ac_word=$2
-echo "$as_me:1215: checking for $ac_word" >&5
+echo "$as_me:1234: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_CC+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1227,7 +1246,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_CC="${ac_tool_prefix}cc"
-echo "$as_me:1230: found $ac_dir/$ac_word" >&5
+echo "$as_me:1249: found $ac_dir/$ac_word" >&5
break
done
@@ -1235,10 +1254,10 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- echo "$as_me:1238: result: $CC" >&5
+ echo "$as_me:1257: result: $CC" >&5
echo "${ECHO_T}$CC" >&6
else
- echo "$as_me:1241: result: no" >&5
+ echo "$as_me:1260: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -1247,7 +1266,7 @@ if test -z "$ac_cv_prog_CC"; then
ac_ct_CC=$CC
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
-echo "$as_me:1250: checking for $ac_word" >&5
+echo "$as_me:1269: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1262,7 +1281,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_CC="cc"
-echo "$as_me:1265: found $ac_dir/$ac_word" >&5
+echo "$as_me:1284: found $ac_dir/$ac_word" >&5
break
done
@@ -1270,10 +1289,10 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- echo "$as_me:1273: result: $ac_ct_CC" >&5
+ echo "$as_me:1292: result: $ac_ct_CC" >&5
echo "${ECHO_T}$ac_ct_CC" >&6
else
- echo "$as_me:1276: result: no" >&5
+ echo "$as_me:1295: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -1286,7 +1305,7 @@ fi
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
-echo "$as_me:1289: checking for $ac_word" >&5
+echo "$as_me:1308: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_CC+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1306,7 +1325,7 @@ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
continue
fi
ac_cv_prog_CC="cc"
-echo "$as_me:1309: found $ac_dir/$ac_word" >&5
+echo "$as_me:1328: found $ac_dir/$ac_word" >&5
break
done
@@ -1328,10 +1347,10 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- echo "$as_me:1331: result: $CC" >&5
+ echo "$as_me:1350: result: $CC" >&5
echo "${ECHO_T}$CC" >&6
else
- echo "$as_me:1334: result: no" >&5
+ echo "$as_me:1353: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -1342,7 +1361,7 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:1345: checking for $ac_word" >&5
+echo "$as_me:1364: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_CC+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1357,7 +1376,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-echo "$as_me:1360: found $ac_dir/$ac_word" >&5
+echo "$as_me:1379: found $ac_dir/$ac_word" >&5
break
done
@@ -1365,10 +1384,10 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- echo "$as_me:1368: result: $CC" >&5
+ echo "$as_me:1387: result: $CC" >&5
echo "${ECHO_T}$CC" >&6
else
- echo "$as_me:1371: result: no" >&5
+ echo "$as_me:1390: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -1381,7 +1400,7 @@ if test -z "$CC"; then
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 "$as_me:1384: checking for $ac_word" >&5
+echo "$as_me:1403: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1396,7 +1415,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_CC="$ac_prog"
-echo "$as_me:1399: found $ac_dir/$ac_word" >&5
+echo "$as_me:1418: found $ac_dir/$ac_word" >&5
break
done
@@ -1404,10 +1423,10 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- echo "$as_me:1407: result: $ac_ct_CC" >&5
+ echo "$as_me:1426: result: $ac_ct_CC" >&5
echo "${ECHO_T}$ac_ct_CC" >&6
else
- echo "$as_me:1410: result: no" >&5
+ echo "$as_me:1429: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -1419,36 +1438,36 @@ fi
fi
-test -z "$CC" && { { echo "$as_me:1422: error: no acceptable cc found in \$PATH" >&5
+test -z "$CC" && { { echo "$as_me:1441: error: no acceptable cc found in \$PATH" >&5
echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
{ (exit 1); exit 1; }; }
# Provide some information about the compiler.
-echo "$as_me:1427:" \
+echo "$as_me:1446:" \
"checking for C compiler version" >&5
ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:1430: \"$ac_compiler --version </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1449: \"$ac_compiler --version </dev/null >&5\"") >&5
(eval $ac_compiler --version </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:1433: \$? = $ac_status" >&5
+ echo "$as_me:1452: \$? = $ac_status" >&5
(exit $ac_status); }
-{ (eval echo "$as_me:1435: \"$ac_compiler -v </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1454: \"$ac_compiler -v </dev/null >&5\"") >&5
(eval $ac_compiler -v </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:1438: \$? = $ac_status" >&5
+ echo "$as_me:1457: \$? = $ac_status" >&5
(exit $ac_status); }
-{ (eval echo "$as_me:1440: \"$ac_compiler -V </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1459: \"$ac_compiler -V </dev/null >&5\"") >&5
(eval $ac_compiler -V </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:1443: \$? = $ac_status" >&5
+ echo "$as_me:1462: \$? = $ac_status" >&5
(exit $ac_status); }
cat >conftest.$ac_ext <<_ACEOF
-#line 1447 "configure"
+#line 1466 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
;
@@ -1460,13 +1479,13 @@ ac_clean_files="$ac_clean_files a.out a.exe"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-echo "$as_me:1463: checking for C compiler default output" >&5
+echo "$as_me:1482: checking for C compiler default output" >&5
echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-if { (eval echo "$as_me:1466: \"$ac_link_default\"") >&5
+if { (eval echo "$as_me:1485: \"$ac_link_default\"") >&5
(eval $ac_link_default) 2>&5
ac_status=$?
- echo "$as_me:1469: \$? = $ac_status" >&5
+ echo "$as_me:1488: \$? = $ac_status" >&5
(exit $ac_status); }; then
# Find the output, starting from the most likely. This scheme is
# not robust to junk in `.', hence go to wildcards (a.*) only as a last
@@ -1489,34 +1508,34 @@ done
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-{ { echo "$as_me:1492: error: C compiler cannot create executables" >&5
+{ { echo "$as_me:1511: error: C compiler cannot create executables" >&5
echo "$as_me: error: C compiler cannot create executables" >&2;}
{ (exit 77); exit 77; }; }
fi
ac_exeext=$ac_cv_exeext
-echo "$as_me:1498: result: $ac_file" >&5
+echo "$as_me:1517: result: $ac_file" >&5
echo "${ECHO_T}$ac_file" >&6
# Check the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-echo "$as_me:1503: checking whether the C compiler works" >&5
+echo "$as_me:1522: checking whether the C compiler works" >&5
echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
# If not cross compiling, check that we can run a simple program.
if test "$cross_compiling" != yes; then
if { ac_try='./$ac_file'
- { (eval echo "$as_me:1509: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1528: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1512: \$? = $ac_status" >&5
+ echo "$as_me:1531: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cross_compiling=no
else
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
- { { echo "$as_me:1519: error: cannot run C compiled programs.
+ { { echo "$as_me:1538: error: cannot run C compiled programs.
If you meant to cross compile, use \`--host'." >&5
echo "$as_me: error: cannot run C compiled programs.
If you meant to cross compile, use \`--host'." >&2;}
@@ -1524,24 +1543,24 @@ If you meant to cross compile, use \`--host'." >&2;}
fi
fi
fi
-echo "$as_me:1527: result: yes" >&5
+echo "$as_me:1546: result: yes" >&5
echo "${ECHO_T}yes" >&6
rm -f a.out a.exe conftest$ac_cv_exeext
ac_clean_files=$ac_clean_files_save
# Check the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-echo "$as_me:1534: checking whether we are cross compiling" >&5
+echo "$as_me:1553: checking whether we are cross compiling" >&5
echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-echo "$as_me:1536: result: $cross_compiling" >&5
+echo "$as_me:1555: result: $cross_compiling" >&5
echo "${ECHO_T}$cross_compiling" >&6
-echo "$as_me:1539: checking for executable suffix" >&5
+echo "$as_me:1558: checking for executable suffix" >&5
echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
-if { (eval echo "$as_me:1541: \"$ac_link\"") >&5
+if { (eval echo "$as_me:1560: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:1544: \$? = $ac_status" >&5
+ echo "$as_me:1563: \$? = $ac_status" >&5
(exit $ac_status); }; then
# If both `conftest.exe' and `conftest' are `present' (well, observable)
# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
@@ -1557,29 +1576,29 @@ for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
esac
done
else
- { { echo "$as_me:1560: error: cannot compute EXEEXT: cannot compile and link" >&5
+ { { echo "$as_me:1579: error: cannot compute EXEEXT: cannot compile and link" >&5
echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
{ (exit 1); exit 1; }; }
fi
rm -f conftest$ac_cv_exeext
-echo "$as_me:1566: result: $ac_cv_exeext" >&5
+echo "$as_me:1585: result: $ac_cv_exeext" >&5
echo "${ECHO_T}$ac_cv_exeext" >&6
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
ac_exeext=$EXEEXT
-echo "$as_me:1572: checking for object suffix" >&5
+echo "$as_me:1591: checking for object suffix" >&5
echo $ECHO_N "checking for object suffix... $ECHO_C" >&6
if test "${ac_cv_objext+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 1578 "configure"
+#line 1597 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
;
@@ -1587,10 +1606,10 @@ main ()
}
_ACEOF
rm -f conftest.o conftest.obj
-if { (eval echo "$as_me:1590: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1609: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1593: \$? = $ac_status" >&5
+ echo "$as_me:1612: \$? = $ac_status" >&5
(exit $ac_status); }; then
for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
case $ac_file in
@@ -1602,28 +1621,28 @@ done
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-{ { echo "$as_me:1605: error: cannot compute OBJEXT: cannot compile" >&5
+{ { echo "$as_me:1624: error: cannot compute OBJEXT: cannot compile" >&5
echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
{ (exit 1); exit 1; }; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
-echo "$as_me:1612: result: $ac_cv_objext" >&5
+echo "$as_me:1631: result: $ac_cv_objext" >&5
echo "${ECHO_T}$ac_cv_objext" >&6
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
-echo "$as_me:1616: checking whether we are using the GNU C compiler" >&5
+echo "$as_me:1635: checking whether we are using the GNU C compiler" >&5
echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
if test "${ac_cv_c_compiler_gnu+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 1622 "configure"
+#line 1641 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
#ifndef __GNUC__
choke me
@@ -1634,16 +1653,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1637: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1656: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1640: \$? = $ac_status" >&5
+ echo "$as_me:1659: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1643: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1662: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1646: \$? = $ac_status" >&5
+ echo "$as_me:1665: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_compiler_gnu=yes
else
@@ -1655,23 +1674,23 @@ rm -f conftest.$ac_objext conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
-echo "$as_me:1658: result: $ac_cv_c_compiler_gnu" >&5
+echo "$as_me:1677: result: $ac_cv_c_compiler_gnu" >&5
echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
GCC=`test $ac_compiler_gnu = yes && echo yes`
ac_test_CFLAGS=${CFLAGS+set}
ac_save_CFLAGS=$CFLAGS
CFLAGS="-g"
-echo "$as_me:1664: checking whether $CC accepts -g" >&5
+echo "$as_me:1683: checking whether $CC accepts -g" >&5
echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
if test "${ac_cv_prog_cc_g+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 1670 "configure"
+#line 1689 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
;
@@ -1679,16 +1698,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1682: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1701: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1685: \$? = $ac_status" >&5
+ echo "$as_me:1704: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1688: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1707: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1691: \$? = $ac_status" >&5
+ echo "$as_me:1710: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_prog_cc_g=yes
else
@@ -1698,7 +1717,7 @@ ac_cv_prog_cc_g=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:1701: result: $ac_cv_prog_cc_g" >&5
+echo "$as_me:1720: result: $ac_cv_prog_cc_g" >&5
echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
if test "$ac_test_CFLAGS" = set; then
CFLAGS=$ac_save_CFLAGS
@@ -1725,16 +1744,16 @@ cat >conftest.$ac_ext <<_ACEOF
#endif
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1728: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1747: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1731: \$? = $ac_status" >&5
+ echo "$as_me:1750: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1734: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1753: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1737: \$? = $ac_status" >&5
+ echo "$as_me:1756: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
for ac_declaration in \
''\
@@ -1746,12 +1765,12 @@ if { (eval echo "$as_me:1728: \"$ac_compile\"") >&5
'void exit (int);'
do
cat >conftest.$ac_ext <<_ACEOF
-#line 1749 "configure"
+#line 1768 "configure"
#include "confdefs.h"
#include <stdlib.h>
$ac_declaration
int
-main ()
+main (void)
{
exit (42);
;
@@ -1759,16 +1778,16 @@ exit (42);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1762: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1781: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1765: \$? = $ac_status" >&5
+ echo "$as_me:1784: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1768: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1787: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1771: \$? = $ac_status" >&5
+ echo "$as_me:1790: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -1778,11 +1797,11 @@ continue
fi
rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line 1781 "configure"
+#line 1800 "configure"
#include "confdefs.h"
$ac_declaration
int
-main ()
+main (void)
{
exit (42);
;
@@ -1790,16 +1809,16 @@ exit (42);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1793: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1812: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1796: \$? = $ac_status" >&5
+ echo "$as_me:1815: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1799: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1818: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1802: \$? = $ac_status" >&5
+ echo "$as_me:1821: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -1829,15 +1848,117 @@ ac_main_return=return
GCC_VERSION=none
if test "$GCC" = yes ; then
- echo "$as_me:1832: checking version of $CC" >&5
+ echo "$as_me:1851: checking version of $CC" >&5
echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
test -z "$GCC_VERSION" && GCC_VERSION=unknown
- echo "$as_me:1836: result: $GCC_VERSION" >&5
+ echo "$as_me:1855: result: $GCC_VERSION" >&5
echo "${ECHO_T}$GCC_VERSION" >&6
fi
-echo "$as_me:1840: checking for $CC option to accept ANSI C" >&5
+INTEL_COMPILER=no
+
+if test "$GCC" = yes ; then
+ case $host_os in
+ (linux*|gnu*)
+ echo "$as_me:1864: checking if this is really Intel C compiler" >&5
+echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6
+ cf_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -no-gcc"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 1869 "configure"
+#include "confdefs.h"
+
+int
+main (void)
+{
+
+#ifdef __INTEL_COMPILER
+#else
+make an error
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1886: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:1889: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:1892: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:1895: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ INTEL_COMPILER=yes
+cf_save_CFLAGS="$cf_save_CFLAGS -we147"
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$cf_save_CFLAGS"
+ echo "$as_me:1906: result: $INTEL_COMPILER" >&5
+echo "${ECHO_T}$INTEL_COMPILER" >&6
+ ;;
+ esac
+fi
+
+CLANG_COMPILER=no
+
+if test "$GCC" = yes ; then
+ echo "$as_me:1915: checking if this is really Clang C compiler" >&5
+echo $ECHO_N "checking if this is really Clang C compiler... $ECHO_C" >&6
+ cf_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Qunused-arguments"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 1920 "configure"
+#include "confdefs.h"
+
+int
+main (void)
+{
+
+#ifdef __clang__
+#else
+make an error
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1937: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:1940: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:1943: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:1946: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ CLANG_COMPILER=yes
+cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$cf_save_CFLAGS"
+ echo "$as_me:1957: result: $CLANG_COMPILER" >&5
+echo "${ECHO_T}$CLANG_COMPILER" >&6
+fi
+
+echo "$as_me:1961: checking for $CC option to accept ANSI C" >&5
echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
if test "${ac_cv_prog_cc_stdc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1845,7 +1966,7 @@ else
ac_cv_prog_cc_stdc=no
ac_save_CC=$CC
cat >conftest.$ac_ext <<_ACEOF
-#line 1848 "configure"
+#line 1969 "configure"
#include "confdefs.h"
#include <stdarg.h>
#include <stdio.h>
@@ -1876,7 +1997,7 @@ int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, i
int argc;
char **argv;
int
-main ()
+main (void)
{
return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
;
@@ -1894,16 +2015,16 @@ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIO
do
CC="$ac_save_CC $ac_arg"
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1897: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2018: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1900: \$? = $ac_status" >&5
+ echo "$as_me:2021: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1903: \"$ac_try\"") >&5
+ { (eval echo "$as_me:2024: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1906: \$? = $ac_status" >&5
+ echo "$as_me:2027: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_prog_cc_stdc=$ac_arg
break
@@ -1920,10 +2041,10 @@ fi
case "x$ac_cv_prog_cc_stdc" in
x|xno)
- echo "$as_me:1923: result: none needed" >&5
+ echo "$as_me:2044: result: none needed" >&5
echo "${ECHO_T}none needed" >&6 ;;
*)
- echo "$as_me:1926: result: $ac_cv_prog_cc_stdc" >&5
+ echo "$as_me:2047: result: $ac_cv_prog_cc_stdc" >&5
echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
CC="$CC $ac_cv_prog_cc_stdc" ;;
esac
@@ -1931,52 +2052,182 @@ esac
# This should have been defined by AC_PROG_CC
: ${CC:=cc}
-echo "$as_me:1934: checking \$CC variable" >&5
+echo "$as_me:2055: checking \$CFLAGS variable" >&5
+echo $ECHO_N "checking \$CFLAGS variable... $ECHO_C" >&6
+case "x$CFLAGS" in
+(*-[IUD]*)
+ echo "$as_me:2059: result: broken" >&5
+echo "${ECHO_T}broken" >&6
+ { echo "$as_me:2061: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&5
+echo "$as_me: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&2;}
+ cf_flags="$CFLAGS"
+ CFLAGS=
+ for cf_arg in $cf_flags
+ do
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_arg
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+ done
+ ;;
+(*)
+ echo "$as_me:2169: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+ ;;
+esac
+
+echo "$as_me:2174: checking \$CC variable" >&5
echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6
-case "$CC" in #(vi
-*[\ \ ]-[IUD]*)
- echo "$as_me:1938: result: broken" >&5
+case "$CC" in
+(*[\ \ ]-*)
+ echo "$as_me:2178: result: broken" >&5
echo "${ECHO_T}broken" >&6
- { echo "$as_me:1940: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
-echo "$as_me: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;}
+ { echo "$as_me:2180: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
+echo "$as_me: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;}
# humor him...
- cf_flags=`echo "$CC" | sed -e 's/^[^ ]*[ ]//'`
- CC=`echo "$CC" | sed -e 's/[ ].*//'`
+ cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[ ]* / /g' -e 's/[ ]*[ ]-[^ ].*//'`
+ cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", substr($0,1+length(prog))); }'`
+ CC="$cf_prog"
+ for cf_arg in $cf_flags
+ do
+ case "x$cf_arg" in
+ (x-[IUDfgOW]*)
cf_fix_cppflags=no
cf_new_cflags=
cf_new_cppflags=
cf_new_extra_cppflags=
-for cf_add_cflags in $cf_flags
+for cf_add_cflags in $cf_arg
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -1985,21 +2236,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -2008,33 +2267,109 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
+ ;;
+ (*)
+ CC="$CC $cf_arg"
+ ;;
+ esac
+ done
+ test -n "$verbose" && echo " resulting CC: '$CC'" 1>&6
+
+echo "${as_me:-configure}:2297: testing resulting CC: '$CC' ..." 1>&5
+
+ test -n "$verbose" && echo " resulting CFLAGS: '$CFLAGS'" 1>&6
+
+echo "${as_me:-configure}:2301: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5
+
+ test -n "$verbose" && echo " resulting CPPFLAGS: '$CPPFLAGS'" 1>&6
+
+echo "${as_me:-configure}:2305: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5
+
;;
-*)
- echo "$as_me:2026: result: ok" >&5
+(*)
+ echo "$as_me:2309: result: ok" >&5
echo "${ECHO_T}ok" >&6
;;
esac
+echo "$as_me:2314: checking for inline" >&5
+echo $ECHO_N "checking for inline... $ECHO_C" >&6
+if test "${ac_cv_c_inline+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+ cat >conftest.$ac_ext <<_ACEOF
+#line 2322 "configure"
+#include "confdefs.h"
+#ifndef __cplusplus
+static $ac_kw int static_foo () {return 0; }
+$ac_kw int foo () {return 0; }
+#endif
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2331: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:2334: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:2337: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:2340: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_inline=$ac_kw; break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+
+fi
+echo "$as_me:2351: result: $ac_cv_c_inline" >&5
+echo "${ECHO_T}$ac_cv_c_inline" >&6
+case $ac_cv_c_inline in
+ inline | yes) ;;
+ no)
+cat >>confdefs.h <<\EOF
+#define inline
+EOF
+ ;;
+ *) cat >>confdefs.h <<EOF
+#define inline $ac_cv_c_inline
+EOF
+ ;;
+esac
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
-echo "$as_me:2037: checking how to run the C preprocessor" >&5
+echo "$as_me:2372: checking how to run the C preprocessor" >&5
echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
@@ -2055,18 +2390,18 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line 2058 "configure"
+#line 2393 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax error
_ACEOF
-if { (eval echo "$as_me:2063: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2398: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:2069: \$? = $ac_status" >&5
+ echo "$as_me:2404: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2089,17 +2424,17 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line 2092 "configure"
+#line 2427 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
_ACEOF
-if { (eval echo "$as_me:2096: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2431: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:2102: \$? = $ac_status" >&5
+ echo "$as_me:2437: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2136,7 +2471,7 @@ fi
else
ac_cv_prog_CPP=$CPP
fi
-echo "$as_me:2139: result: $CPP" >&5
+echo "$as_me:2474: result: $CPP" >&5
echo "${ECHO_T}$CPP" >&6
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
@@ -2146,18 +2481,18 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line 2149 "configure"
+#line 2484 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax error
_ACEOF
-if { (eval echo "$as_me:2154: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2489: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:2160: \$? = $ac_status" >&5
+ echo "$as_me:2495: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2180,17 +2515,17 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line 2183 "configure"
+#line 2518 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
_ACEOF
-if { (eval echo "$as_me:2187: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2522: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:2193: \$? = $ac_status" >&5
+ echo "$as_me:2528: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2218,7 +2553,7 @@ rm -f conftest.err conftest.$ac_ext
if $ac_preproc_ok; then
:
else
- { { echo "$as_me:2221: error: C preprocessor \"$CPP\" fails sanity check" >&5
+ { { echo "$as_me:2556: error: C preprocessor \"$CPP\" fails sanity check" >&5
echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -2234,7 +2569,7 @@ for ac_prog in mawk gawk nawk awk
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 "$as_me:2237: checking for $ac_word" >&5
+echo "$as_me:2572: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_AWK+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2249,7 +2584,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_AWK="$ac_prog"
-echo "$as_me:2252: found $ac_dir/$ac_word" >&5
+echo "$as_me:2587: found $ac_dir/$ac_word" >&5
break
done
@@ -2257,10 +2592,10 @@ fi
fi
AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
- echo "$as_me:2260: result: $AWK" >&5
+ echo "$as_me:2595: result: $AWK" >&5
echo "${ECHO_T}$AWK" >&6
else
- echo "$as_me:2263: result: no" >&5
+ echo "$as_me:2598: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2279,7 +2614,7 @@ done
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:2282: checking for a BSD compatible install" >&5
+echo "$as_me:2617: checking for a BSD compatible install" >&5
echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
if test -z "$INSTALL"; then
if test "${ac_cv_path_install+set}" = set; then
@@ -2328,7 +2663,7 @@ fi
INSTALL=$ac_install_sh
fi
fi
-echo "$as_me:2331: result: $INSTALL" >&5
+echo "$as_me:2666: result: $INSTALL" >&5
echo "${ECHO_T}$INSTALL" >&6
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
@@ -2340,20 +2675,102 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
case $INSTALL in
-/*)
- ;;
-*)
- cf_dir=`echo $INSTALL | sed -e 's%/[^/]*$%%'`
- test -z "$cf_dir" && cf_dir=.
- INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
- ;;
+(/*)
+ ;;
+(*)
+ cf_dir=`echo $INSTALL | sed -e 's%/[^/]*$%%'`
+ test -z "$cf_dir" && cf_dir=.
+ INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
+ ;;
esac
-for ac_prog in tdlint lint alint splint lclint
+echo "$as_me:2687: checking if you want to install stripped executables" >&5
+echo $ECHO_N "checking if you want to install stripped executables... $ECHO_C" >&6
+
+# Check whether --enable-stripping or --disable-stripping was given.
+if test "${enable_stripping+set}" = set; then
+ enableval="$enable_stripping"
+ test "$enableval" != no && enableval=yes
+ if test "$enableval" != "yes" ; then
+ with_stripping=no
+ else
+ with_stripping=yes
+ fi
+else
+ enableval=yes
+ with_stripping=yes
+
+fi;
+echo "$as_me:2704: result: $with_stripping" >&5
+echo "${ECHO_T}$with_stripping" >&6
+
+if test "$with_stripping" = yes
+then
+ INSTALL_OPT_S="-s"
+else
+ INSTALL_OPT_S=
+fi
+
+: ${INSTALL:=install}
+echo "$as_me:2715: checking if install accepts -p option" >&5
+echo $ECHO_N "checking if install accepts -p option... $ECHO_C" >&6
+if test "${cf_cv_install_p+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ rm -rf conftest*
+ date >conftest.in
+ mkdir conftest.out
+ sleep 3
+ if $INSTALL -p conftest.in conftest.out 2>/dev/null
+ then
+ if test -f conftest.out/conftest.in
+ then
+ test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \
+ test conftest.out/conftest.in -nt conftest.in 2>conftest.err
+ if test -s conftest.err
+ then
+ cf_cv_install_p=no
+ else
+ cf_cv_install_p=yes
+ fi
+ else
+ cf_cv_install_p=no
+ fi
+ else
+ cf_cv_install_p=no
+ fi
+ rm -rf conftest*
+
+fi
+echo "$as_me:2746: result: $cf_cv_install_p" >&5
+echo "${ECHO_T}$cf_cv_install_p" >&6
+
+echo "$as_me:2749: checking if install needs to be told about ownership" >&5
+echo $ECHO_N "checking if install needs to be told about ownership... $ECHO_C" >&6
+case `$ac_config_guess` in
+(*minix)
+ with_install_o=yes
+ ;;
+(*)
+ with_install_o=no
+ ;;
+esac
+
+echo "$as_me:2760: result: $with_install_o" >&5
+echo "${ECHO_T}$with_install_o" >&6
+if test "x$with_install_o" = xyes
+then
+ INSTALL_OPT_O=`id root|sed -e 's/uid=[0-9]*(/ -o /' -e 's/gid=[0-9]*(/ -g /' -e 's/ [^=[:space:]][^=[:space:]]*=.*/ /' -e 's/)//g'`
+else
+ INSTALL_OPT_O=
+fi
+
+for ac_prog in lint cppcheck splint
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 "$as_me:2356: checking for $ac_word" >&5
+echo "$as_me:2773: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_LINT+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2368,7 +2785,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_LINT="$ac_prog"
-echo "$as_me:2371: found $ac_dir/$ac_word" >&5
+echo "$as_me:2788: found $ac_dir/$ac_word" >&5
break
done
@@ -2376,28 +2793,34 @@ fi
fi
LINT=$ac_cv_prog_LINT
if test -n "$LINT"; then
- echo "$as_me:2379: result: $LINT" >&5
+ echo "$as_me:2796: result: $LINT" >&5
echo "${ECHO_T}$LINT" >&6
else
- echo "$as_me:2382: result: no" >&5
+ echo "$as_me:2799: result: no" >&5
echo "${ECHO_T}no" >&6
fi
test -n "$LINT" && break
done
-echo "$as_me:2389: checking if filesystem supports mixed-case filenames" >&5
+case "x$LINT" in
+(xcppcheck|x*/cppcheck)
+ test -z "$LINT_OPTS" && LINT_OPTS="--enable=all"
+ ;;
+esac
+
+echo "$as_me:2812: checking if filesystem supports mixed-case filenames" >&5
echo $ECHO_N "checking if filesystem supports mixed-case filenames... $ECHO_C" >&6
if test "${cf_cv_mixedcase+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test "$cross_compiling" = yes ; then
- case $target_alias in #(vi
- *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*) #(vi
+ case $target_alias in
+ (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*)
cf_cv_mixedcase=no
;;
- *)
+ (*)
cf_cv_mixedcase=yes
;;
esac
@@ -2413,7 +2836,7 @@ else
fi
fi
-echo "$as_me:2416: result: $cf_cv_mixedcase" >&5
+echo "$as_me:2839: result: $cf_cv_mixedcase" >&5
echo "${ECHO_T}$cf_cv_mixedcase" >&6
test "$cf_cv_mixedcase" = yes &&
cat >>confdefs.h <<\EOF
@@ -2424,7 +2847,7 @@ for ac_prog in exctags ctags
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 "$as_me:2427: checking for $ac_word" >&5
+echo "$as_me:2850: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_CTAGS+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2439,7 +2862,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_CTAGS="$ac_prog"
-echo "$as_me:2442: found $ac_dir/$ac_word" >&5
+echo "$as_me:2865: found $ac_dir/$ac_word" >&5
break
done
@@ -2447,10 +2870,10 @@ fi
fi
CTAGS=$ac_cv_prog_CTAGS
if test -n "$CTAGS"; then
- echo "$as_me:2450: result: $CTAGS" >&5
+ echo "$as_me:2873: result: $CTAGS" >&5
echo "${ECHO_T}$CTAGS" >&6
else
- echo "$as_me:2453: result: no" >&5
+ echo "$as_me:2876: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2461,7 +2884,7 @@ for ac_prog in exetags etags
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 "$as_me:2464: checking for $ac_word" >&5
+echo "$as_me:2887: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ETAGS+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2476,7 +2899,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ETAGS="$ac_prog"
-echo "$as_me:2479: found $ac_dir/$ac_word" >&5
+echo "$as_me:2902: found $ac_dir/$ac_word" >&5
break
done
@@ -2484,10 +2907,10 @@ fi
fi
ETAGS=$ac_cv_prog_ETAGS
if test -n "$ETAGS"; then
- echo "$as_me:2487: result: $ETAGS" >&5
+ echo "$as_me:2910: result: $ETAGS" >&5
echo "${ECHO_T}$ETAGS" >&6
else
- echo "$as_me:2490: result: no" >&5
+ echo "$as_me:2913: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2496,7 +2919,7 @@ done
# Extract the first word of "${CTAGS:-ctags}", so it can be a program name with args.
set dummy ${CTAGS:-ctags}; ac_word=$2
-echo "$as_me:2499: checking for $ac_word" >&5
+echo "$as_me:2922: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_MAKE_LOWER_TAGS+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2511,7 +2934,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_MAKE_LOWER_TAGS="yes"
-echo "$as_me:2514: found $ac_dir/$ac_word" >&5
+echo "$as_me:2937: found $ac_dir/$ac_word" >&5
break
done
@@ -2520,17 +2943,17 @@ fi
fi
MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS
if test -n "$MAKE_LOWER_TAGS"; then
- echo "$as_me:2523: result: $MAKE_LOWER_TAGS" >&5
+ echo "$as_me:2946: result: $MAKE_LOWER_TAGS" >&5
echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6
else
- echo "$as_me:2526: result: no" >&5
+ echo "$as_me:2949: result: no" >&5
echo "${ECHO_T}no" >&6
fi
if test "$cf_cv_mixedcase" = yes ; then
# Extract the first word of "${ETAGS:-etags}", so it can be a program name with args.
set dummy ${ETAGS:-etags}; ac_word=$2
-echo "$as_me:2533: checking for $ac_word" >&5
+echo "$as_me:2956: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_MAKE_UPPER_TAGS+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2545,7 +2968,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_MAKE_UPPER_TAGS="yes"
-echo "$as_me:2548: found $ac_dir/$ac_word" >&5
+echo "$as_me:2971: found $ac_dir/$ac_word" >&5
break
done
@@ -2554,10 +2977,10 @@ fi
fi
MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS
if test -n "$MAKE_UPPER_TAGS"; then
- echo "$as_me:2557: result: $MAKE_UPPER_TAGS" >&5
+ echo "$as_me:2980: result: $MAKE_UPPER_TAGS" >&5
echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6
else
- echo "$as_me:2560: result: no" >&5
+ echo "$as_me:2983: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2577,21 +3000,22 @@ else
MAKE_LOWER_TAGS="#"
fi
-echo "$as_me:2580: checking if -lm needed for math functions" >&5
+echo "$as_me:3003: checking if -lm needed for math functions" >&5
echo $ECHO_N "checking if -lm needed for math functions... $ECHO_C" >&6
if test "${cf_cv_need_libm+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 2587 "configure"
+#line 3010 "configure"
#include "confdefs.h"
#include <stdio.h>
+ #include <stdlib.h>
#include <math.h>
int
-main ()
+main (void)
{
double x = rand(); printf("result = %g\n", pow(sin(x),x))
;
@@ -2599,16 +3023,16 @@ double x = rand(); printf("result = %g\n", pow(sin(x),x))
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:2602: \"$ac_link\"") >&5
+if { (eval echo "$as_me:3026: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:2605: \$? = $ac_status" >&5
+ echo "$as_me:3029: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:2608: \"$ac_try\"") >&5
+ { (eval echo "$as_me:3032: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2611: \$? = $ac_status" >&5
+ echo "$as_me:3035: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_need_libm=no
else
@@ -2618,7 +3042,7 @@ cf_cv_need_libm=yes
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:2621: result: $cf_cv_need_libm" >&5
+echo "$as_me:3045: result: $cf_cv_need_libm" >&5
echo "${ECHO_T}$cf_cv_need_libm" >&6
if test "$cf_cv_need_libm" = yes
then
@@ -2639,11 +3063,13 @@ LDFLAGS_STATIC=""
LD_MODEL=""
LD_SHARED_OPTS=""
LIBTOOL=""
+LIBTOOL_OPTS=""
LIB_CLEAN=""
LIB_COMPILE=""
LIB_LINK='${CC}'
LINK_TESTS=""
LOCAL_LDFLAGS=""
+PACKAGE="ncurses-examples"
PTHREAD="-lm"
TEST_ARGS=""
TEST_DEPS=""
@@ -2675,10 +3101,10 @@ cat > conftest.i <<EOF
EOF
if test "$GCC" = yes
then
- { echo "$as_me:2678: checking for $CC __attribute__ directives..." >&5
+ { echo "$as_me:3104: checking for $CC __attribute__ directives..." >&5
echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
cat > conftest.$ac_ext <<EOF
-#line 2681 "${as_me:-configure}"
+#line 3107 "${as_me:-configure}"
#include "confdefs.h"
#include "conftest.h"
#include "conftest.i"
@@ -2707,43 +3133,43 @@ cf_ATTRIBUTE=`echo "$cf_attribute" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFG
cf_directive="__attribute__(($cf_attribute))"
echo "checking for $CC $cf_directive" 1>&5
- case $cf_attribute in #(vi
- printf) #(vi
+ case $cf_attribute in
+ (printf)
cf_printf_attribute=yes
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE 1
EOF
;;
- scanf) #(vi
+ (scanf)
cf_scanf_attribute=yes
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE 1
EOF
;;
- *) #(vi
+ (*)
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE $cf_directive
EOF
;;
esac
- if { (eval echo "$as_me:2730: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:3156: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:2733: \$? = $ac_status" >&5
+ echo "$as_me:3159: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:2735: result: ... $cf_attribute" >&5
+ test -n "$verbose" && echo "$as_me:3161: result: ... $cf_attribute" >&5
echo "${ECHO_T}... $cf_attribute" >&6
cat conftest.h >>confdefs.h
- case $cf_attribute in #(vi
- noreturn) #(vi
+ case $cf_attribute in
+ (noreturn)
cat >>confdefs.h <<EOF
#define GCC_NORETURN $cf_directive
EOF
;;
- printf) #(vi
+ (printf)
cf_value='/* nothing */'
if test "$cf_printf_attribute" != no ; then
cf_value='__attribute__((format(printf,fmt,var)))'
@@ -2759,7 +3185,7 @@ cat >>confdefs.h <<EOF
EOF
;;
- scanf) #(vi
+ (scanf)
cf_value='/* nothing */'
if test "$cf_scanf_attribute" != no ; then
cf_value='__attribute__((format(scanf,fmt,var)))'
@@ -2775,7 +3201,7 @@ cat >>confdefs.h <<EOF
EOF
;;
- unused) #(vi
+ (unused)
cat >>confdefs.h <<EOF
#define GCC_UNUSED $cf_directive
@@ -2791,25 +3217,357 @@ fi
rm -rf conftest*
fi
-cf_XOPEN_SOURCE=500
+echo "$as_me:3220: checking if you want to work around bogus compiler/loader warnings" >&5
+echo $ECHO_N "checking if you want to work around bogus compiler/loader warnings... $ECHO_C" >&6
+
+# Check whether --enable-string-hacks or --disable-string-hacks was given.
+if test "${enable_string_hacks+set}" = set; then
+ enableval="$enable_string_hacks"
+ with_string_hacks=$enableval
+else
+ with_string_hacks=no
+fi;
+echo "$as_me:3230: result: $with_string_hacks" >&5
+echo "${ECHO_T}$with_string_hacks" >&6
+
+if test "x$with_string_hacks" = "xyes"; then
+
+cat >>confdefs.h <<\EOF
+#define USE_STRING_HACKS 1
+EOF
+
+ { echo "$as_me:3239: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&5
+echo "$as_me: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&2;}
+ echo "$as_me:3241: checking for strlcat" >&5
+echo $ECHO_N "checking for strlcat... $ECHO_C" >&6
+if test "${ac_cv_func_strlcat+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 3247 "configure"
+#include "confdefs.h"
+#define strlcat autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef strlcat
+
+#ifdef __cplusplus
+extern "C"
+#endif
+
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char strlcat (void);
+
+int
+main (void)
+{
+
+/* The GNU C library defines stubs 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_strlcat) || defined (__stub___strlcat)
+#error found stub for strlcat
+#endif
+
+ return strlcat ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3278: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:3281: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:3284: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:3287: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_strlcat=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_strlcat=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:3297: result: $ac_cv_func_strlcat" >&5
+echo "${ECHO_T}$ac_cv_func_strlcat" >&6
+if test $ac_cv_func_strlcat = yes; then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_STRLCAT 1
+EOF
+
+else
+
+ echo "$as_me:3307: checking for strlcat in -lbsd" >&5
+echo $ECHO_N "checking for strlcat in -lbsd... $ECHO_C" >&6
+if test "${ac_cv_lib_bsd_strlcat+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 3315 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char strlcat ();
+int
+main (void)
+{
+strlcat ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3334: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:3337: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:3340: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:3343: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_bsd_strlcat=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_bsd_strlcat=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:3354: result: $ac_cv_lib_bsd_strlcat" >&5
+echo "${ECHO_T}$ac_cv_lib_bsd_strlcat" >&6
+if test $ac_cv_lib_bsd_strlcat = yes; then
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lbsd; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+for ac_header in bsd/string.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:3377: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 3383 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:3387: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:3393: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:3412: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+cat >>confdefs.h <<\EOF
+#define HAVE_STRLCAT 1
+EOF
+
+fi
+
+fi
+
+for ac_func in strlcpy snprintf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:3433: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 3439 "configure"
+#include "confdefs.h"
+#define $ac_func autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef $ac_func
+
+#ifdef __cplusplus
+extern "C"
+#endif
+
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func (void);
+
+int
+main (void)
+{
+
+/* The GNU C library defines stubs for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+#error found stub for $ac_func
+#endif
+
+ return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3470: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:3473: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:3476: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:3479: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:3489: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+fi
+
+echo "$as_me:3501: checking if the POSIX test-macros are already defined" >&5
+echo $ECHO_N "checking if the POSIX test-macros are already defined... $ECHO_C" >&6
+if test "${cf_cv_posix_visible+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 3508 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int
+main (void)
+{
+
+#if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
+ && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
+ && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
+ && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
+#error conflicting symbols found
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3527: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:3530: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:3533: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:3536: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_posix_visible=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_posix_visible=yes
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:3547: result: $cf_cv_posix_visible" >&5
+echo "${ECHO_T}$cf_cv_posix_visible" >&6
+
+if test "$cf_cv_posix_visible" = no; then
+
+cf_XOPEN_SOURCE=600
cf_POSIX_C_SOURCE=199506L
cf_xopen_source=
-case $host_os in #(vi
-aix[4-7]*) #(vi
+case $host_os in
+(aix[4-7]*)
cf_xopen_source="-D_ALL_SOURCE"
;;
-cygwin|msys) #(vi
+(msys)
cf_XOPEN_SOURCE=600
;;
-darwin[0-8].*) #(vi
+(darwin[0-8].*)
cf_xopen_source="-D_APPLE_C_SOURCE"
;;
-darwin*) #(vi
+(darwin*)
cf_xopen_source="-D_DARWIN_C_SOURCE"
cf_XOPEN_SOURCE=
;;
-freebsd*|dragonfly*) #(vi
+(freebsd*|dragonfly*|midnightbsd*)
# 5.x headers associate
# _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
# _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
@@ -2817,83 +3575,448 @@ freebsd*|dragonfly*) #(vi
cf_XOPEN_SOURCE=600
cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
;;
-hpux11*) #(vi
+(hpux11*)
cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
;;
-hpux*) #(vi
+(hpux*)
cf_xopen_source="-D_HPUX_SOURCE"
;;
-irix[56].*) #(vi
+(irix[56].*)
cf_xopen_source="-D_SGI_SOURCE"
cf_XOPEN_SOURCE=
;;
-linux*|gnu*|mint*|k*bsd*-gnu) #(vi
+(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
+
+cf_gnu_xopen_source=$cf_XOPEN_SOURCE
+
+echo "$as_me:3592: checking if this is the GNU C library" >&5
+echo $ECHO_N "checking if this is the GNU C library... $ECHO_C" >&6
+if test "${cf_cv_gnu_library+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 3599 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main (void)
+{
+
+ #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0
+ return 0;
+ #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0
+ return 0;
+ #else
+ # error not GNU C library
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3618: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:3621: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:3624: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:3627: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_gnu_library=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_gnu_library=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:3638: result: $cf_cv_gnu_library" >&5
+echo "${ECHO_T}$cf_cv_gnu_library" >&6
+
+if test x$cf_cv_gnu_library = xyes; then
+
+ # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
+ # was changed to help a little. newlib incorporated the change about 4
+ # years later.
+ echo "$as_me:3646: checking if _DEFAULT_SOURCE can be used as a basis" >&5
+echo $ECHO_N "checking if _DEFAULT_SOURCE can be used as a basis... $ECHO_C" >&6
+if test "${cf_cv_gnu_library_219+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cf_save="$CPPFLAGS"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 3658 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main (void)
+{
+
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2)
+ return 0;
+ #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3)
+ return 0;
+ #else
+ # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3677: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:3680: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:3683: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:3686: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_gnu_library_219=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_gnu_library_219=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS="$cf_save"
+
+fi
+echo "$as_me:3698: result: $cf_cv_gnu_library_219" >&5
+echo "${ECHO_T}$cf_cv_gnu_library_219" >&6
+
+ if test "x$cf_cv_gnu_library_219" = xyes; then
+ cf_save="$CPPFLAGS"
+ echo "$as_me:3703: checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE" >&5
+echo $ECHO_N "checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_gnu_dftsrc_219+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
-echo "$as_me:2832: checking if we must define _GNU_SOURCE" >&5
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 3808 "configure"
+#include "confdefs.h"
+
+ #include <limits.h>
+ #include <sys/types.h>
+
+int
+main (void)
+{
+
+ #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1)
+ return 0;
+ #else
+ # error GNU C library is too old
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3828: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:3831: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:3834: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:3837: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_gnu_dftsrc_219=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_gnu_dftsrc_219=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:3848: result: $cf_cv_gnu_dftsrc_219" >&5
+echo "${ECHO_T}$cf_cv_gnu_dftsrc_219" >&6
+ test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
+ else
+ cf_cv_gnu_dftsrc_219=maybe
+ fi
+
+ if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
+
+ echo "$as_me:3857: checking if we must define _GNU_SOURCE" >&5
echo $ECHO_N "checking if we must define _GNU_SOURCE... $ECHO_C" >&6
if test "${cf_cv_gnu_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-cat >conftest.$ac_ext <<_ACEOF
-#line 2839 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 3864 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
-#ifndef _XOPEN_SOURCE
-make an error
-#endif
+ #ifndef _XOPEN_SOURCE
+ #error expected _XOPEN_SOURCE to be defined
+ #endif
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2854: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:3879: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:2857: \$? = $ac_status" >&5
+ echo "$as_me:3882: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2860: \"$ac_try\"") >&5
+ { (eval echo "$as_me:3885: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2863: \$? = $ac_status" >&5
+ echo "$as_me:3888: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_gnu_source=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
- cat >conftest.$ac_ext <<_ACEOF
-#line 2872 "configure"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in -D_GNU_SOURCE
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 3995 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
-#ifdef _XOPEN_SOURCE
-make an error
-#endif
+ #ifdef _XOPEN_SOURCE
+ #error expected _XOPEN_SOURCE to be undefined
+ #endif
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2887: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4010: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:2890: \$? = $ac_status" >&5
+ echo "$as_me:4013: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2893: \"$ac_try\"") >&5
+ { (eval echo "$as_me:4016: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2896: \$? = $ac_status" >&5
+ echo "$as_me:4019: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_gnu_source=no
else
@@ -2902,21 +4025,86 @@ cat conftest.$ac_ext >&5
cf_cv_gnu_source=yes
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- CPPFLAGS="$cf_save"
+ CPPFLAGS="$cf_save"
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:2911: result: $cf_cv_gnu_source" >&5
+echo "$as_me:4034: result: $cf_cv_gnu_source" >&5
echo "${ECHO_T}$cf_cv_gnu_source" >&6
-test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+ if test "$cf_cv_gnu_source" = yes
+ then
+ echo "$as_me:4039: checking if we should also define _DEFAULT_SOURCE" >&5
+echo $ECHO_N "checking if we should also define _DEFAULT_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_default_source+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_GNU_SOURCE"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4049 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main (void)
+{
+
+ #ifdef _DEFAULT_SOURCE
+ #error expected _DEFAULT_SOURCE to be undefined
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4064: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4067: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:4070: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4073: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_default_source=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_default_source=yes
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:4084: result: $cf_cv_default_source" >&5
+echo "${ECHO_T}$cf_cv_default_source" >&6
+ if test "$cf_cv_default_source" = yes
+ then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE"
+
+ fi
+ fi
+ fi
+
+fi
+
+ ;;
+(minix*)
+ cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
;;
-mirbsd*) #(vi
+(mirbsd*)
# setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
cf_XOPEN_SOURCE=
+if test "$cf_cv_posix_visible" = no; then
+
cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE
cf_save_CFLAGS="$CFLAGS"
@@ -2930,20 +4118,20 @@ cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
-e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'`
-echo "$as_me:2933: checking if we should define _POSIX_C_SOURCE" >&5
+echo "$as_me:4121: checking if we should define _POSIX_C_SOURCE" >&5
echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
if test "${cf_cv_posix_c_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-echo "${as_me:-configure}:2939: testing if the symbol is already defined go no further ..." 1>&5
+echo "${as_me:-configure}:4127: testing if the symbol is already defined go no further ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 2942 "configure"
+#line 4130 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _POSIX_C_SOURCE
@@ -2954,41 +4142,41 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2957: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4145: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:2960: \$? = $ac_status" >&5
+ echo "$as_me:4148: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2963: \"$ac_try\"") >&5
+ { (eval echo "$as_me:4151: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2966: \$? = $ac_status" >&5
+ echo "$as_me:4154: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_posix_c_source=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_want_posix_source=no
- case .$cf_POSIX_C_SOURCE in #(vi
- .[12]??*) #(vi
+ case .$cf_POSIX_C_SOURCE in
+ (.[12]??*)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
;;
- .2) #(vi
+ (.2)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
cf_want_posix_source=yes
;;
- .*)
+ (.*)
cf_want_posix_source=yes
;;
esac
if test "$cf_want_posix_source" = yes ; then
cat >conftest.$ac_ext <<_ACEOF
-#line 2987 "configure"
+#line 4175 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifdef _POSIX_SOURCE
@@ -2999,16 +4187,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3002: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4190: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3005: \$? = $ac_status" >&5
+ echo "$as_me:4193: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3008: \"$ac_try\"") >&5
+ { (eval echo "$as_me:4196: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3011: \$? = $ac_status" >&5
+ echo "$as_me:4199: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -3019,19 +4207,22 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "${as_me:-configure}:3022: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+echo "${as_me:-configure}:4210: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
CFLAGS="$cf_trim_CFLAGS"
- CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+ CPPFLAGS="$cf_trim_CPPFLAGS"
-echo "${as_me:-configure}:3027: testing if the second compile does not leave our definition intact error ..." 1>&5
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source"
+
+echo "${as_me:-configure}:4218: testing if the second compile does not leave our definition intact error ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 3030 "configure"
+#line 4221 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _POSIX_C_SOURCE
@@ -3042,16 +4233,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3045: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4236: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3048: \$? = $ac_status" >&5
+ echo "$as_me:4239: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3051: \"$ac_try\"") >&5
+ { (eval echo "$as_me:4242: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3054: \$? = $ac_status" >&5
+ echo "$as_me:4245: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -3067,7 +4258,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:3070: result: $cf_cv_posix_c_source" >&5
+echo "$as_me:4261: result: $cf_cv_posix_c_source" >&5
echo "${ECHO_T}$cf_cv_posix_c_source" >&6
if test "$cf_cv_posix_c_source" != no ; then
@@ -3082,32 +4273,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_cv_posix_c_source
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -3116,21 +4313,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -3139,56 +4344,68 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
fi
+fi # cf_cv_posix_visible
+
;;
-netbsd*) #(vi
+(netbsd*)
cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
;;
-openbsd[4-9]*) #(vi
+(openbsd[4-9]*)
# setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
cf_xopen_source="-D_BSD_SOURCE"
cf_XOPEN_SOURCE=600
;;
-openbsd*) #(vi
+(openbsd*)
# setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
;;
-osf[45]*) #(vi
+(osf[45]*)
cf_xopen_source="-D_OSF_SOURCE"
;;
-nto-qnx*) #(vi
+(nto-qnx*)
cf_xopen_source="-D_QNX_SOURCE"
;;
-sco*) #(vi
+(sco*)
# setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
;;
-solaris2.*) #(vi
+(solaris2.*)
cf_xopen_source="-D__EXTENSIONS__"
cf_cv_xopen_source=broken
;;
-*)
+(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
+ cf_XOPEN_SOURCE=
+ cf_POSIX_C_SOURCE=
+ ;;
+(*)
-echo "$as_me:3184: checking if we should define _XOPEN_SOURCE" >&5
+echo "$as_me:4401: checking if we should define _XOPEN_SOURCE" >&5
echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
if test "${cf_cv_xopen_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 3191 "configure"
+#line 4408 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -3196,7 +4413,7 @@ else
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _XOPEN_SOURCE
@@ -3207,25 +4424,28 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3210: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4427: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3213: \$? = $ac_status" >&5
+ echo "$as_me:4430: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3216: \"$ac_try\"") >&5
+ { (eval echo "$as_me:4433: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3219: \$? = $ac_status" >&5
+ echo "$as_me:4436: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xopen_source=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 3228 "configure"
+#line 4448 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -3233,7 +4453,7 @@ cf_save="$CPPFLAGS"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifdef _XOPEN_SOURCE
@@ -3244,16 +4464,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3247: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4467: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3250: \$? = $ac_status" >&5
+ echo "$as_me:4470: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3253: \"$ac_try\"") >&5
+ { (eval echo "$as_me:4473: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3256: \$? = $ac_status" >&5
+ echo "$as_me:4476: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xopen_source=no
else
@@ -3268,7 +4488,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:3271: result: $cf_cv_xopen_source" >&5
+echo "$as_me:4491: result: $cf_cv_xopen_source" >&5
echo "${ECHO_T}$cf_cv_xopen_source" >&6
if test "$cf_cv_xopen_source" != no ; then
@@ -3291,32 +4511,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_temp_xopen_source
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -3325,21 +4551,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -3348,21 +4582,29 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
fi
+if test "$cf_cv_posix_visible" = no; then
+
cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE
cf_save_CFLAGS="$CFLAGS"
@@ -3376,20 +4618,20 @@ cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
-e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'`
-echo "$as_me:3379: checking if we should define _POSIX_C_SOURCE" >&5
+echo "$as_me:4621: checking if we should define _POSIX_C_SOURCE" >&5
echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
if test "${cf_cv_posix_c_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-echo "${as_me:-configure}:3385: testing if the symbol is already defined go no further ..." 1>&5
+echo "${as_me:-configure}:4627: testing if the symbol is already defined go no further ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 3388 "configure"
+#line 4630 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _POSIX_C_SOURCE
@@ -3400,41 +4642,41 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3403: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4645: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3406: \$? = $ac_status" >&5
+ echo "$as_me:4648: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3409: \"$ac_try\"") >&5
+ { (eval echo "$as_me:4651: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3412: \$? = $ac_status" >&5
+ echo "$as_me:4654: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_posix_c_source=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_want_posix_source=no
- case .$cf_POSIX_C_SOURCE in #(vi
- .[12]??*) #(vi
+ case .$cf_POSIX_C_SOURCE in
+ (.[12]??*)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
;;
- .2) #(vi
+ (.2)
cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
cf_want_posix_source=yes
;;
- .*)
+ (.*)
cf_want_posix_source=yes
;;
esac
if test "$cf_want_posix_source" = yes ; then
cat >conftest.$ac_ext <<_ACEOF
-#line 3433 "configure"
+#line 4675 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifdef _POSIX_SOURCE
@@ -3445,16 +4687,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3448: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4690: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3451: \$? = $ac_status" >&5
+ echo "$as_me:4693: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3454: \"$ac_try\"") >&5
+ { (eval echo "$as_me:4696: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3457: \$? = $ac_status" >&5
+ echo "$as_me:4699: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -3465,19 +4707,22 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "${as_me:-configure}:3468: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+echo "${as_me:-configure}:4710: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
CFLAGS="$cf_trim_CFLAGS"
- CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+ CPPFLAGS="$cf_trim_CPPFLAGS"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source"
-echo "${as_me:-configure}:3473: testing if the second compile does not leave our definition intact error ..." 1>&5
+echo "${as_me:-configure}:4718: testing if the second compile does not leave our definition intact error ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 3476 "configure"
+#line 4721 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _POSIX_C_SOURCE
@@ -3488,16 +4733,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3491: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4736: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3494: \$? = $ac_status" >&5
+ echo "$as_me:4739: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3497: \"$ac_try\"") >&5
+ { (eval echo "$as_me:4742: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3500: \$? = $ac_status" >&5
+ echo "$as_me:4745: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -3513,7 +4758,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:3516: result: $cf_cv_posix_c_source" >&5
+echo "$as_me:4761: result: $cf_cv_posix_c_source" >&5
echo "${ECHO_T}$cf_cv_posix_c_source" >&6
if test "$cf_cv_posix_c_source" != no ; then
@@ -3528,32 +4773,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_cv_posix_c_source
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -3562,21 +4813,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -3585,21 +4844,29 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
fi
+fi # cf_cv_posix_visible
+
;;
esac
@@ -3613,32 +4880,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_xopen_source
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -3647,21 +4920,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -3669,31 +4950,46 @@ esac
done
if test -n "$cf_new_cflags" ; then
+ test -n "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6
+
+echo "${as_me:-configure}:4955: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
- CFLAGS="$CFLAGS $cf_new_cflags"
fi
if test -n "$cf_new_cppflags" ; then
+ test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6
+
+echo "${as_me:-configure}:4965: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
fi
if test -n "$cf_new_extra_cppflags" ; then
+ test -n "$verbose" && echo " add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags" 1>&6
+
+echo "${as_me:-configure}:4975: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
fi
fi
if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
- echo "$as_me:3689: checking if _XOPEN_SOURCE really is set" >&5
+ echo "$as_me:4985: checking if _XOPEN_SOURCE really is set" >&5
echo $ECHO_N "checking if _XOPEN_SOURCE really is set... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 3692 "configure"
+#line 4988 "configure"
#include "confdefs.h"
#include <stdlib.h>
int
-main ()
+main (void)
{
#ifndef _XOPEN_SOURCE
@@ -3704,16 +5000,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3707: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5003: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3710: \$? = $ac_status" >&5
+ echo "$as_me:5006: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3713: \"$ac_try\"") >&5
+ { (eval echo "$as_me:5009: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3716: \$? = $ac_status" >&5
+ echo "$as_me:5012: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_XOPEN_SOURCE_set=yes
else
@@ -3722,16 +5018,16 @@ cat conftest.$ac_ext >&5
cf_XOPEN_SOURCE_set=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- echo "$as_me:3725: result: $cf_XOPEN_SOURCE_set" >&5
+ echo "$as_me:5021: result: $cf_XOPEN_SOURCE_set" >&5
echo "${ECHO_T}$cf_XOPEN_SOURCE_set" >&6
if test $cf_XOPEN_SOURCE_set = yes
then
cat >conftest.$ac_ext <<_ACEOF
-#line 3730 "configure"
+#line 5026 "configure"
#include "confdefs.h"
#include <stdlib.h>
int
-main ()
+main (void)
{
#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
@@ -3742,16 +5038,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3745: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5041: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3748: \$? = $ac_status" >&5
+ echo "$as_me:5044: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3751: \"$ac_try\"") >&5
+ { (eval echo "$as_me:5047: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3754: \$? = $ac_status" >&5
+ echo "$as_me:5050: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_XOPEN_SOURCE_set_ok=yes
else
@@ -3762,19 +5058,19 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
if test $cf_XOPEN_SOURCE_set_ok = no
then
- { echo "$as_me:3765: WARNING: _XOPEN_SOURCE is lower than requested" >&5
+ { echo "$as_me:5061: WARNING: _XOPEN_SOURCE is lower than requested" >&5
echo "$as_me: WARNING: _XOPEN_SOURCE is lower than requested" >&2;}
fi
else
-echo "$as_me:3770: checking if we should define _XOPEN_SOURCE" >&5
+echo "$as_me:5066: checking if we should define _XOPEN_SOURCE" >&5
echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
if test "${cf_cv_xopen_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 3777 "configure"
+#line 5073 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -3782,7 +5078,7 @@ else
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifndef _XOPEN_SOURCE
@@ -3793,25 +5089,28 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3796: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5092: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3799: \$? = $ac_status" >&5
+ echo "$as_me:5095: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3802: \"$ac_try\"") >&5
+ { (eval echo "$as_me:5098: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3805: \$? = $ac_status" >&5
+ echo "$as_me:5101: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xopen_source=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 3814 "configure"
+#line 5113 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -3819,7 +5118,7 @@ cf_save="$CPPFLAGS"
#include <sys/types.h>
int
-main ()
+main (void)
{
#ifdef _XOPEN_SOURCE
@@ -3830,16 +5129,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3833: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5132: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3836: \$? = $ac_status" >&5
+ echo "$as_me:5135: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3839: \"$ac_try\"") >&5
+ { (eval echo "$as_me:5138: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3842: \$? = $ac_status" >&5
+ echo "$as_me:5141: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xopen_source=no
else
@@ -3854,7 +5153,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:3857: result: $cf_cv_xopen_source" >&5
+echo "$as_me:5156: result: $cf_cv_xopen_source" >&5
echo "${ECHO_T}$cf_cv_xopen_source" >&6
if test "$cf_cv_xopen_source" != no ; then
@@ -3877,32 +5176,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_temp_xopen_source
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -3911,21 +5216,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -3934,25 +5247,32 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
fi
fi
fi
+fi # cf_cv_posix_visible
-echo "$as_me:3955: checking for signal global datatype" >&5
+echo "$as_me:5275: checking for signal global datatype" >&5
echo $ECHO_N "checking for signal global datatype... $ECHO_C" >&6
if test "${cf_cv_sig_atomic_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3964,7 +5284,7 @@ else
"int"
do
cat >conftest.$ac_ext <<_ACEOF
-#line 3967 "configure"
+#line 5287 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -3978,7 +5298,7 @@ static void handler(int sig)
x = 5;
}
int
-main ()
+main (void)
{
signal(SIGINT, handler);
x = 1
@@ -3987,16 +5307,16 @@ signal(SIGINT, handler);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3990: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5310: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3993: \$? = $ac_status" >&5
+ echo "$as_me:5313: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3996: \"$ac_try\"") >&5
+ { (eval echo "$as_me:5316: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3999: \$? = $ac_status" >&5
+ echo "$as_me:5319: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_sig_atomic_t=$cf_type
else
@@ -4010,14 +5330,213 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:4013: result: $cf_cv_sig_atomic_t" >&5
+echo "$as_me:5333: result: $cf_cv_sig_atomic_t" >&5
echo "${ECHO_T}$cf_cv_sig_atomic_t" >&6
test "$cf_cv_sig_atomic_t" != no &&
cat >>confdefs.h <<EOF
#define SIG_ATOMIC_T $cf_cv_sig_atomic_t
EOF
-echo "$as_me:4020: checking if you want to use pkg-config" >&5
+# Work around breakage on OS X
+
+echo "$as_me:5342: checking if SIGWINCH is defined" >&5
+echo $ECHO_N "checking if SIGWINCH is defined... $ECHO_C" >&6
+if test "${cf_cv_define_sigwinch+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5349 "configure"
+#include "confdefs.h"
+
+#include <sys/types.h>
+#include <sys/signal.h>
+
+int
+main (void)
+{
+int x = SIGWINCH
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5364: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:5367: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:5370: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5373: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_define_sigwinch=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cat >conftest.$ac_ext <<_ACEOF
+#line 5380 "configure"
+#include "confdefs.h"
+
+#undef _XOPEN_SOURCE
+#undef _POSIX_SOURCE
+#undef _POSIX_C_SOURCE
+#include <sys/types.h>
+#include <sys/signal.h>
+
+int
+main (void)
+{
+int x = SIGWINCH
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5398: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:5401: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:5404: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5407: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_define_sigwinch=maybe
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_define_sigwinch=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:5421: result: $cf_cv_define_sigwinch" >&5
+echo "${ECHO_T}$cf_cv_define_sigwinch" >&6
+
+if test "$cf_cv_define_sigwinch" = maybe ; then
+echo "$as_me:5425: checking for actual SIGWINCH definition" >&5
+echo $ECHO_N "checking for actual SIGWINCH definition... $ECHO_C" >&6
+if test "${cf_cv_fixup_sigwinch+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cf_cv_fixup_sigwinch=unknown
+cf_sigwinch=32
+while test $cf_sigwinch != 1
+do
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5436 "configure"
+#include "confdefs.h"
+
+#undef _XOPEN_SOURCE
+#undef _POSIX_SOURCE
+#undef _POSIX_C_SOURCE
+#include <sys/types.h>
+#include <sys/signal.h>
+
+int
+main (void)
+{
+
+#if SIGWINCH != $cf_sigwinch
+make an error
+#endif
+int x = SIGWINCH
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5458: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:5461: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:5464: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5467: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_fixup_sigwinch=$cf_sigwinch
+ break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+cf_sigwinch=`expr $cf_sigwinch - 1`
+done
+
+fi
+echo "$as_me:5481: result: $cf_cv_fixup_sigwinch" >&5
+echo "${ECHO_T}$cf_cv_fixup_sigwinch" >&6
+
+ if test "$cf_cv_fixup_sigwinch" != unknown ; then
+ CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch"
+ fi
+fi
+
+# Checks for CODESET support.
+
+echo "$as_me:5491: checking for nl_langinfo and CODESET" >&5
+echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6
+if test "${am_cv_langinfo_codeset+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5497 "configure"
+#include "confdefs.h"
+#include <langinfo.h>
+int
+main (void)
+{
+char* cs = nl_langinfo(CODESET);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5509: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5512: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:5515: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5518: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ am_cv_langinfo_codeset=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+am_cv_langinfo_codeset=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+
+fi
+echo "$as_me:5529: result: $am_cv_langinfo_codeset" >&5
+echo "${ECHO_T}$am_cv_langinfo_codeset" >&6
+ if test $am_cv_langinfo_codeset = yes; then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_LANGINFO_CODESET 1
+EOF
+
+ fi
+
+echo "$as_me:5539: checking if you want to use pkg-config" >&5
echo $ECHO_N "checking if you want to use pkg-config... $ECHO_C" >&6
# Check whether --with-pkg-config or --without-pkg-config was given.
@@ -4027,19 +5546,19 @@ if test "${with_pkg_config+set}" = set; then
else
cf_pkg_config=yes
fi;
-echo "$as_me:4030: result: $cf_pkg_config" >&5
+echo "$as_me:5549: result: $cf_pkg_config" >&5
echo "${ECHO_T}$cf_pkg_config" >&6
-case $cf_pkg_config in #(vi
-no) #(vi
+case $cf_pkg_config in
+(no)
PKG_CONFIG=none
;;
-yes) #(vi
+(yes)
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-echo "$as_me:4042: checking for $ac_word" >&5
+echo "$as_me:5561: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4056,7 +5575,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if $as_executable_p "$ac_dir/$ac_word"; then
ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word"
- echo "$as_me:4059: found $ac_dir/$ac_word" >&5
+ echo "$as_me:5578: found $ac_dir/$ac_word" >&5
break
fi
done
@@ -4067,10 +5586,10 @@ fi
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
if test -n "$PKG_CONFIG"; then
- echo "$as_me:4070: result: $PKG_CONFIG" >&5
+ echo "$as_me:5589: result: $PKG_CONFIG" >&5
echo "${ECHO_T}$PKG_CONFIG" >&6
else
- echo "$as_me:4073: result: no" >&5
+ echo "$as_me:5592: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4079,7 +5598,7 @@ if test -z "$ac_cv_path_PKG_CONFIG"; then
ac_pt_PKG_CONFIG=$PKG_CONFIG
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
-echo "$as_me:4082: checking for $ac_word" >&5
+echo "$as_me:5601: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4096,7 +5615,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if $as_executable_p "$ac_dir/$ac_word"; then
ac_cv_path_ac_pt_PKG_CONFIG="$ac_dir/$ac_word"
- echo "$as_me:4099: found $ac_dir/$ac_word" >&5
+ echo "$as_me:5618: found $ac_dir/$ac_word" >&5
break
fi
done
@@ -4108,10 +5627,10 @@ fi
ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
if test -n "$ac_pt_PKG_CONFIG"; then
- echo "$as_me:4111: result: $ac_pt_PKG_CONFIG" >&5
+ echo "$as_me:5630: result: $ac_pt_PKG_CONFIG" >&5
echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6
else
- echo "$as_me:4114: result: no" >&5
+ echo "$as_me:5633: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4121,7 +5640,7 @@ else
fi
;;
-*)
+(*)
PKG_CONFIG=$withval
;;
esac
@@ -4130,76 +5649,79 @@ test -z "$PKG_CONFIG" && PKG_CONFIG=none
if test "$PKG_CONFIG" != none ; then
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
+ cf_path_syntax="$ac_default_prefix"
fi
-case ".$PKG_CONFIG" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*|.\${*dir}*) #(vi
- eval PKG_CONFIG="$PKG_CONFIG"
- case ".$PKG_CONFIG" in #(vi
- .NONE/*)
- PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- { { echo "$as_me:4157: error: expected a pathname, not \"$PKG_CONFIG\"" >&5
+case ".$PKG_CONFIG" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval PKG_CONFIG="$PKG_CONFIG"
+ case ".$PKG_CONFIG" in
+ (.NONE/*)
+ PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:5676: error: expected a pathname, not \"$PKG_CONFIG\"" >&5
echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG\"" >&2;}
{ (exit 1); exit 1; }; }
- ;;
+ ;;
esac
+elif test "x$cf_pkg_config" != xno ; then
+ { echo "$as_me:5683: WARNING: pkg-config is not installed" >&5
+echo "$as_me: WARNING: pkg-config is not installed" >&2;}
fi
-echo "$as_me:4165: checking if you want to see long compiling messages" >&5
+echo "$as_me:5687: checking if you want to see long compiling messages" >&5
echo $ECHO_N "checking if you want to see long compiling messages... $ECHO_C" >&6
# Check whether --enable-echo or --disable-echo was given.
if test "${enable_echo+set}" = set; then
enableval="$enable_echo"
test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
+ if test "$enableval" != "yes" ; then
- ECHO_LT='--silent'
- ECHO_LD='@echo linking $@;'
- RULE_CC='@echo compiling $<'
- SHOW_CC='@echo compiling $@'
- ECHO_CC='@'
+ ECHO_LT='--silent'
+ ECHO_LD='@echo linking $@;'
+ RULE_CC='@echo compiling $<'
+ SHOW_CC='@echo compiling $@'
+ ECHO_CC='@'
- else
+ else
- ECHO_LT=''
- ECHO_LD=''
- RULE_CC=''
- SHOW_CC=''
- ECHO_CC=''
+ ECHO_LT=''
+ ECHO_LD=''
+ RULE_CC=''
+ SHOW_CC=''
+ ECHO_CC=''
- fi
+ fi
else
enableval=yes
- ECHO_LT=''
- ECHO_LD=''
- RULE_CC=''
- SHOW_CC=''
- ECHO_CC=''
+ ECHO_LT=''
+ ECHO_LD=''
+ RULE_CC=''
+ SHOW_CC=''
+ ECHO_CC=''
fi;
-echo "$as_me:4199: result: $enableval" >&5
+echo "$as_me:5721: result: $enableval" >&5
echo "${ECHO_T}$enableval" >&6
-echo "$as_me:4202: checking for ncurses wrap-prefix" >&5
+echo "$as_me:5724: checking for ncurses wrap-prefix" >&5
echo $ECHO_N "checking for ncurses wrap-prefix... $ECHO_C" >&6
# Check whether --with-ncurses-wrap-prefix or --without-ncurses-wrap-prefix was given.
@@ -4209,30 +5731,30 @@ if test "${with_ncurses_wrap_prefix+set}" = set; then
else
NCURSES_WRAP_PREFIX=_nc_
fi;
-echo "$as_me:4212: result: $NCURSES_WRAP_PREFIX" >&5
+echo "$as_me:5734: result: $NCURSES_WRAP_PREFIX" >&5
echo "${ECHO_T}$NCURSES_WRAP_PREFIX" >&6
-echo "$as_me:4215: checking if you want to check for wide-character functions" >&5
+echo "$as_me:5737: checking if you want to check for wide-character functions" >&5
echo $ECHO_N "checking if you want to check for wide-character functions... $ECHO_C" >&6
# Check whether --enable-widec or --disable-widec was given.
if test "${enable_widec+set}" = set; then
enableval="$enable_widec"
test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
+ if test "$enableval" != "yes" ; then
cf_enable_widec=no
- else
- cf_enable_widec=yes
- fi
+ else
+ cf_enable_widec=yes
+ fi
else
enableval=yes
- cf_enable_widec=yes
+ cf_enable_widec=yes
fi;
-echo "$as_me:4232: result: $cf_enable_widec" >&5
+echo "$as_me:5754: result: $cf_enable_widec" >&5
echo "${ECHO_T}$cf_enable_widec" >&6
-echo "$as_me:4235: checking for specific curses-directory" >&5
+echo "$as_me:5757: checking for specific curses-directory" >&5
echo $ECHO_N "checking for specific curses-directory... $ECHO_C" >&6
# Check whether --with-curses-dir or --without-curses-dir was given.
@@ -4242,41 +5764,41 @@ if test "${with_curses_dir+set}" = set; then
else
cf_cv_curses_dir=no
fi;
-echo "$as_me:4245: result: $cf_cv_curses_dir" >&5
+echo "$as_me:5767: result: $cf_cv_curses_dir" >&5
echo "${ECHO_T}$cf_cv_curses_dir" >&6
if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" )
then
if test "x$prefix" != xNONE; then
- cf_path_syntax="$prefix"
+ cf_path_syntax="$prefix"
else
- cf_path_syntax="$ac_default_prefix"
+ cf_path_syntax="$ac_default_prefix"
fi
-case ".$withval" in #(vi
-.\$\(*\)*|.\'*\'*) #(vi
- ;;
-..|./*|.\\*) #(vi
- ;;
-.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
- ;;
-.\${*prefix}*|.\${*dir}*) #(vi
- eval withval="$withval"
- case ".$withval" in #(vi
- .NONE/*)
- withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
- ;;
- esac
- ;; #(vi
-.no|.NONE/*)
- withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
- ;;
-*)
- { { echo "$as_me:4276: error: expected a pathname, not \"$withval\"" >&5
+case ".$withval" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval withval="$withval"
+ case ".$withval" in
+ (.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:5798: error: expected a pathname, not \"$withval\"" >&5
echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
{ (exit 1); exit 1; }; }
- ;;
+ ;;
esac
if test -d "$cf_cv_curses_dir"
@@ -4304,13 +5826,16 @@ if test -n "$cf_cv_curses_dir/include" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 4309 "configure"
+#line 5834 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -4318,16 +5843,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4321: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5846: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:4324: \$? = $ac_status" >&5
+ echo "$as_me:5849: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4327: \"$ac_try\"") >&5
+ { (eval echo "$as_me:5852: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4330: \$? = $ac_status" >&5
+ echo "$as_me:5855: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -4344,7 +5869,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:4347: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:5872: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -4354,36 +5879,38 @@ echo "${as_me:-configure}:4347: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
fi
if test -n "$cf_cv_curses_dir/lib" ; then
- for cf_add_libdir in $cf_cv_curses_dir/lib
- do
- if test $cf_add_libdir = /usr/lib ; then
- :
- elif test -d $cf_add_libdir
- then
- cf_have_libdir=no
- if test -n "$LDFLAGS$LIBS" ; then
- # a loop is needed to ensure we can add subdirs of existing dirs
- for cf_test_libdir in $LDFLAGS $LIBS ; do
- if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
- cf_have_libdir=yes; break
- fi
- done
- fi
- if test "$cf_have_libdir" = no ; then
- test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
+ for cf_add_libdir in $cf_cv_curses_dir/lib
+ do
+ if test $cf_add_libdir = /usr/lib ; then
+ :
+ elif test -d $cf_add_libdir
+ then
+ cf_have_libdir=no
+ if test -n "$LDFLAGS$LIBS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_libdir in $LDFLAGS $LIBS ; do
+ if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
+ cf_have_libdir=yes; break
+ fi
+ done
+ fi
+ if test "$cf_have_libdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
-echo "${as_me:-configure}:4381: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:5908: testing adding $cf_add_libdir to library-path ..." 1>&5
- LDFLAGS="-L$cf_add_libdir $LDFLAGS"
- fi
- fi
- done
+ LDFLAGS="-L$cf_add_libdir $LDFLAGS"
+ fi
+ fi
+ done
fi
fi
@@ -4391,9 +5918,15 @@ fi
cf_cv_screen=curses
-echo "$as_me:4394: checking for specified curses library type" >&5
+echo "$as_me:5921: checking for specified curses library type" >&5
echo $ECHO_N "checking for specified curses library type... $ECHO_C" >&6
+# Check whether --with-screen or --without-screen was given.
+if test "${with_screen+set}" = set; then
+ withval="$with_screen"
+ cf_cv_screen=$withval
+else
+
# Check whether --with-ncursesw or --without-ncursesw was given.
if test "${with_ncursesw+set}" = set; then
withval="$with_ncursesw"
@@ -4427,29 +5960,30 @@ fi;
fi;
fi;
fi;
+fi;
-echo "$as_me:4431: result: $cf_cv_screen" >&5
+echo "$as_me:5965: result: $cf_cv_screen" >&5
echo "${ECHO_T}$cf_cv_screen" >&6
-case $cf_cv_screen in #(vi
-curses|curses_*) #(vi
+case $cf_cv_screen in
+(curses|curses_*)
-echo "$as_me:4437: checking for extra include directories" >&5
+echo "$as_me:5971: checking for extra include directories" >&5
echo $ECHO_N "checking for extra include directories... $ECHO_C" >&6
if test "${cf_cv_curses_incdir+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cf_cv_curses_incdir=no
-case $host_os in #(vi
-hpux10.*) #(vi
+case $host_os in
+(hpux10.*)
if test "x$cf_cv_screen" = "xcurses_colr"
then
test -d /usr/include/curses_colr && \
cf_cv_curses_incdir="-I/usr/include/curses_colr"
fi
;;
-sunos3*|sunos4*)
+(sunos3*|sunos4*)
if test "x$cf_cv_screen" = "xcurses_5lib"
then
test -d /usr/5lib && \
@@ -4460,27 +5994,33 @@ sunos3*|sunos4*)
esac
fi
-echo "$as_me:4463: result: $cf_cv_curses_incdir" >&5
+echo "$as_me:5997: result: $cf_cv_curses_incdir" >&5
echo "${ECHO_T}$cf_cv_curses_incdir" >&6
-test "$cf_cv_curses_incdir" != no && CPPFLAGS="$CPPFLAGS $cf_cv_curses_incdir"
+if test "$cf_cv_curses_incdir" != no
+then
-echo "$as_me:4467: checking if we have identified curses headers" >&5
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_cv_curses_incdir"
+
+fi
+
+echo "$as_me:6007: checking if we have identified curses headers" >&5
echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6
if test "${cf_cv_ncurses_header+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cf_cv_ncurses_header=none
-for cf_header in \
- ncurses.h \
- curses.h ncurses/ncurses.h ncurses/curses.h
+for cf_header in \
+ ncurses.h \
+ curses.h ncurses/ncurses.h ncurses/curses.h
do
cat >conftest.$ac_ext <<_ACEOF
-#line 4479 "configure"
+#line 6019 "configure"
#include "confdefs.h"
#include <${cf_header}>
int
-main ()
+main (void)
{
initscr(); tgoto("?", 0,0)
;
@@ -4488,16 +6028,16 @@ initscr(); tgoto("?", 0,0)
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4491: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:6031: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:4494: \$? = $ac_status" >&5
+ echo "$as_me:6034: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4497: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6037: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4500: \$? = $ac_status" >&5
+ echo "$as_me:6040: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_header=$cf_header; break
else
@@ -4508,11 +6048,11 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:4511: result: $cf_cv_ncurses_header" >&5
+echo "$as_me:6051: result: $cf_cv_ncurses_header" >&5
echo "${ECHO_T}$cf_cv_ncurses_header" >&6
if test "$cf_cv_ncurses_header" = none ; then
- { { echo "$as_me:4515: error: No curses header-files found" >&5
+ { { echo "$as_me:6055: error: No curses header-files found" >&5
echo "$as_me: error: No curses header-files found" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -4522,23 +6062,23 @@ fi
for ac_header in $cf_cv_ncurses_header
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:4525: checking for $ac_header" >&5
+echo "$as_me:6065: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 4531 "configure"
+#line 6071 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:4535: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:6075: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:4541: \$? = $ac_status" >&5
+ echo "$as_me:6081: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -4557,7 +6097,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:4560: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:6100: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -4567,17 +6107,17 @@ EOF
fi
done
-echo "$as_me:4570: checking for terminfo header" >&5
+echo "$as_me:6110: checking for terminfo header" >&5
echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
if test "${cf_cv_term_header+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-case ${cf_cv_ncurses_header} in #(vi
-*/ncurses.h|*/ncursesw.h) #(vi
+case ${cf_cv_ncurses_header} in
+(*/ncurses.h|*/ncursesw.h)
cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'`
;;
-*)
+(*)
cf_term_header=term.h
;;
esac
@@ -4585,14 +6125,14 @@ esac
for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
do
cat >conftest.$ac_ext <<_ACEOF
-#line 4588 "configure"
+#line 6128 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <${cf_cv_ncurses_header:-curses.h}>
#include <$cf_test>
int
-main ()
+main (void)
{
int x = auto_left_margin
;
@@ -4600,16 +6140,16 @@ int x = auto_left_margin
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:4603: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:6143: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:4606: \$? = $ac_status" >&5
+ echo "$as_me:6146: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:4609: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6149: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4612: \$? = $ac_status" >&5
+ echo "$as_me:6152: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_term_header="$cf_test"
@@ -4625,13 +6165,13 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:4628: result: $cf_cv_term_header" >&5
+echo "$as_me:6168: result: $cf_cv_term_header" >&5
echo "${ECHO_T}$cf_cv_term_header" >&6
# Set definitions to allow ifdef'ing to accommodate subdirectories
-case $cf_cv_term_header in # (vi
-*term.h)
+case $cf_cv_term_header in
+(*term.h)
cat >>confdefs.h <<\EOF
#define HAVE_TERM_H 1
@@ -4640,15 +6180,15 @@ EOF
;;
esac
-case $cf_cv_term_header in # (vi
-ncurses/term.h) #(vi
+case $cf_cv_term_header in
+(ncurses/term.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSES_TERM_H 1
EOF
;;
-ncursesw/term.h)
+(ncursesw/term.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSESW_TERM_H 1
@@ -4657,7 +6197,7 @@ EOF
;;
esac
-echo "$as_me:4660: checking for ncurses version" >&5
+echo "$as_me:6200: checking for ncurses version" >&5
echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6
if test "${cf_cv_ncurses_version+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4683,10 +6223,10 @@ Autoconf "old"
#endif
EOF
cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
- { (eval echo "$as_me:4686: \"$cf_try\"") >&5
+ { (eval echo "$as_me:6226: \"$cf_try\"") >&5
(eval $cf_try) 2>&5
ac_status=$?
- echo "$as_me:4689: \$? = $ac_status" >&5
+ echo "$as_me:6229: \$? = $ac_status" >&5
(exit $ac_status); }
if test -f conftest.out ; then
cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'`
@@ -4696,12 +6236,12 @@ EOF
else
cat >conftest.$ac_ext <<_ACEOF
-#line 4699 "configure"
+#line 6239 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
#include <stdio.h>
-int main()
+int main(void)
{
FILE *fp = fopen("$cf_tempfile", "w");
#ifdef NCURSES_VERSION
@@ -4721,15 +6261,15 @@ int main()
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:4724: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6264: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:4727: \$? = $ac_status" >&5
+ echo "$as_me:6267: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:4729: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6269: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4732: \$? = $ac_status" >&5
+ echo "$as_me:6272: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_version=`cat $cf_tempfile`
@@ -4743,21 +6283,21 @@ fi
rm -f $cf_tempfile
fi
-echo "$as_me:4746: result: $cf_cv_ncurses_version" >&5
+echo "$as_me:6286: result: $cf_cv_ncurses_version" >&5
echo "${ECHO_T}$cf_cv_ncurses_version" >&6
test "$cf_cv_ncurses_version" = no ||
cat >>confdefs.h <<\EOF
#define NCURSES 1
EOF
-echo "$as_me:4753: checking if we have identified curses libraries" >&5
+echo "$as_me:6293: checking if we have identified curses libraries" >&5
echo $ECHO_N "checking if we have identified curses libraries... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 4756 "configure"
+#line 6296 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
initscr(); tgoto("?", 0,0)
;
@@ -4765,16 +6305,16 @@ initscr(); tgoto("?", 0,0)
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4768: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6308: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:4771: \$? = $ac_status" >&5
+ echo "$as_me:6311: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4774: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6314: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4777: \$? = $ac_status" >&5
+ echo "$as_me:6317: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=yes
else
@@ -4783,13 +6323,13 @@ cat conftest.$ac_ext >&5
cf_result=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-echo "$as_me:4786: result: $cf_result" >&5
+echo "$as_me:6326: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
if test "$cf_result" = no ; then
-case $host_os in #(vi
-freebsd*) #(vi
- echo "$as_me:4792: checking for tgoto in -lmytinfo" >&5
+case $host_os in
+(freebsd*)
+ echo "$as_me:6332: checking for tgoto in -lmytinfo" >&5
echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6
if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4797,7 +6337,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lmytinfo $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 4800 "configure"
+#line 6340 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -4808,7 +6348,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char tgoto ();
int
-main ()
+main (void)
{
tgoto ();
;
@@ -4816,16 +6356,16 @@ tgoto ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4819: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6359: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:4822: \$? = $ac_status" >&5
+ echo "$as_me:6362: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4825: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6365: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4828: \$? = $ac_status" >&5
+ echo "$as_me:6368: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_mytinfo_tgoto=yes
else
@@ -4836,21 +6376,37 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:4839: result: $ac_cv_lib_mytinfo_tgoto" >&5
+echo "$as_me:6379: result: $ac_cv_lib_mytinfo_tgoto" >&5
echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6
if test $ac_cv_lib_mytinfo_tgoto = yes; then
- LIBS="-lmytinfo $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lmytinfo; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
fi
- ;;
-hpux10.*) #(vi
+ ;;
+(hpux10.*)
# Looking at HPUX 10.20, the Hcurses library is the oldest (1997), cur_colr
# next (1998), and xcurses "newer" (2000). There is no header file for
# Hcurses; the subdirectory curses_colr has the headers (curses.h and
# term.h) for cur_colr
if test "x$cf_cv_screen" = "xcurses_colr"
then
- echo "$as_me:4853: checking for initscr in -lcur_colr" >&5
+ echo "$as_me:6409: checking for initscr in -lcur_colr" >&5
echo $ECHO_N "checking for initscr in -lcur_colr... $ECHO_C" >&6
if test "${ac_cv_lib_cur_colr_initscr+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4858,7 +6414,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lcur_colr $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 4861 "configure"
+#line 6417 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -4869,7 +6425,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char initscr ();
int
-main ()
+main (void)
{
initscr ();
;
@@ -4877,16 +6433,16 @@ initscr ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4880: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6436: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:4883: \$? = $ac_status" >&5
+ echo "$as_me:6439: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4886: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6442: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4889: \$? = $ac_status" >&5
+ echo "$as_me:6445: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_cur_colr_initscr=yes
else
@@ -4897,16 +6453,31 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:4900: result: $ac_cv_lib_cur_colr_initscr" >&5
+echo "$as_me:6456: result: $ac_cv_lib_cur_colr_initscr" >&5
echo "${ECHO_T}$ac_cv_lib_cur_colr_initscr" >&6
if test $ac_cv_lib_cur_colr_initscr = yes; then
- LIBS="-lcur_colr $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lcur_colr; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
ac_cv_func_initscr=yes
else
- echo "$as_me:4909: checking for initscr in -lHcurses" >&5
+ echo "$as_me:6480: checking for initscr in -lHcurses" >&5
echo $ECHO_N "checking for initscr in -lHcurses... $ECHO_C" >&6
if test "${ac_cv_lib_Hcurses_initscr+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4914,7 +6485,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lHcurses $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 4917 "configure"
+#line 6488 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -4925,7 +6496,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char initscr ();
int
-main ()
+main (void)
{
initscr ();
;
@@ -4933,16 +6504,16 @@ initscr ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4936: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6507: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:4939: \$? = $ac_status" >&5
+ echo "$as_me:6510: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4942: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6513: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4945: \$? = $ac_status" >&5
+ echo "$as_me:6516: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_Hcurses_initscr=yes
else
@@ -4953,13 +6524,31 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:4956: result: $ac_cv_lib_Hcurses_initscr" >&5
+echo "$as_me:6527: result: $ac_cv_lib_Hcurses_initscr" >&5
echo "${ECHO_T}$ac_cv_lib_Hcurses_initscr" >&6
if test $ac_cv_lib_Hcurses_initscr = yes; then
# HP's header uses __HP_CURSES, but user claims _HP_CURSES.
- LIBS="-lHcurses $LIBS"
- CPPFLAGS="$CPPFLAGS -D__HP_CURSES -D_HP_CURSES"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lHcurses; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D__HP_CURSES -D_HP_CURSES"
+
ac_cv_func_initscr=yes
fi
@@ -4968,139 +6557,154 @@ fi
fi
;;
-linux*)
+(linux*)
case `arch 2>/dev/null` in
- x86_64)
+ (x86_64)
if test -d /lib64
then
if test -n "/lib64" ; then
- for cf_add_libdir in /lib64
- do
- if test $cf_add_libdir = /usr/lib ; then
- :
- elif test -d $cf_add_libdir
- then
- cf_have_libdir=no
- if test -n "$LDFLAGS$LIBS" ; then
- # a loop is needed to ensure we can add subdirs of existing dirs
- for cf_test_libdir in $LDFLAGS $LIBS ; do
- if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
- cf_have_libdir=yes; break
- fi
- done
- fi
- if test "$cf_have_libdir" = no ; then
- test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
+ for cf_add_libdir in /lib64
+ do
+ if test $cf_add_libdir = /usr/lib ; then
+ :
+ elif test -d $cf_add_libdir
+ then
+ cf_have_libdir=no
+ if test -n "$LDFLAGS$LIBS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_libdir in $LDFLAGS $LIBS ; do
+ if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
+ cf_have_libdir=yes; break
+ fi
+ done
+ fi
+ if test "$cf_have_libdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
-echo "${as_me:-configure}:4996: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:6585: testing adding $cf_add_libdir to library-path ..." 1>&5
- LDFLAGS="-L$cf_add_libdir $LDFLAGS"
- fi
- fi
- done
+ LDFLAGS="-L$cf_add_libdir $LDFLAGS"
+ fi
+ fi
+ done
fi
else
if test -n "/lib" ; then
- for cf_add_libdir in /lib
- do
- if test $cf_add_libdir = /usr/lib ; then
- :
- elif test -d $cf_add_libdir
- then
- cf_have_libdir=no
- if test -n "$LDFLAGS$LIBS" ; then
- # a loop is needed to ensure we can add subdirs of existing dirs
- for cf_test_libdir in $LDFLAGS $LIBS ; do
- if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
- cf_have_libdir=yes; break
- fi
- done
- fi
- if test "$cf_have_libdir" = no ; then
- test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
+ for cf_add_libdir in /lib
+ do
+ if test $cf_add_libdir = /usr/lib ; then
+ :
+ elif test -d $cf_add_libdir
+ then
+ cf_have_libdir=no
+ if test -n "$LDFLAGS$LIBS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_libdir in $LDFLAGS $LIBS ; do
+ if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
+ cf_have_libdir=yes; break
+ fi
+ done
+ fi
+ if test "$cf_have_libdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
-echo "${as_me:-configure}:5025: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:6614: testing adding $cf_add_libdir to library-path ..." 1>&5
- LDFLAGS="-L$cf_add_libdir $LDFLAGS"
- fi
- fi
- done
+ LDFLAGS="-L$cf_add_libdir $LDFLAGS"
+ fi
+ fi
+ done
fi
fi
;;
- *)
+ (*)
if test -n "/lib" ; then
- for cf_add_libdir in /lib
- do
- if test $cf_add_libdir = /usr/lib ; then
- :
- elif test -d $cf_add_libdir
- then
- cf_have_libdir=no
- if test -n "$LDFLAGS$LIBS" ; then
- # a loop is needed to ensure we can add subdirs of existing dirs
- for cf_test_libdir in $LDFLAGS $LIBS ; do
- if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
- cf_have_libdir=yes; break
- fi
- done
- fi
- if test "$cf_have_libdir" = no ; then
- test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
+ for cf_add_libdir in /lib
+ do
+ if test $cf_add_libdir = /usr/lib ; then
+ :
+ elif test -d $cf_add_libdir
+ then
+ cf_have_libdir=no
+ if test -n "$LDFLAGS$LIBS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_libdir in $LDFLAGS $LIBS ; do
+ if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
+ cf_have_libdir=yes; break
+ fi
+ done
+ fi
+ if test "$cf_have_libdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
-echo "${as_me:-configure}:5056: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:6645: testing adding $cf_add_libdir to library-path ..." 1>&5
- LDFLAGS="-L$cf_add_libdir $LDFLAGS"
- fi
- fi
- done
+ LDFLAGS="-L$cf_add_libdir $LDFLAGS"
+ fi
+ fi
+ done
fi
;;
esac
;;
-sunos3*|sunos4*)
+(sunos3*|sunos4*)
if test "x$cf_cv_screen" = "xcurses_5lib"
then
if test -d /usr/5lib ; then
if test -n "/usr/5lib" ; then
- for cf_add_libdir in /usr/5lib
- do
- if test $cf_add_libdir = /usr/lib ; then
- :
- elif test -d $cf_add_libdir
- then
- cf_have_libdir=no
- if test -n "$LDFLAGS$LIBS" ; then
- # a loop is needed to ensure we can add subdirs of existing dirs
- for cf_test_libdir in $LDFLAGS $LIBS ; do
- if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
- cf_have_libdir=yes; break
- fi
- done
- fi
- if test "$cf_have_libdir" = no ; then
- test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
+ for cf_add_libdir in /usr/5lib
+ do
+ if test $cf_add_libdir = /usr/lib ; then
+ :
+ elif test -d $cf_add_libdir
+ then
+ cf_have_libdir=no
+ if test -n "$LDFLAGS$LIBS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_libdir in $LDFLAGS $LIBS ; do
+ if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
+ cf_have_libdir=yes; break
+ fi
+ done
+ fi
+ if test "$cf_have_libdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
-echo "${as_me:-configure}:5091: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:6680: testing adding $cf_add_libdir to library-path ..." 1>&5
- LDFLAGS="-L$cf_add_libdir $LDFLAGS"
- fi
- fi
- done
+ LDFLAGS="-L$cf_add_libdir $LDFLAGS"
+ fi
+ fi
+ done
fi
- LIBS="-lcurses -ltermcap $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lcurses -ltermcap; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
fi
- fi
- ac_cv_func_initscr=yes
- ;;
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ fi
+ fi
+ ac_cv_func_initscr=yes
+ ;;
esac
if test ".$ac_cv_func_initscr" != .yes ; then
@@ -5117,53 +6721,53 @@ if test ".$ac_cv_func_initscr" != .yes ; then
# because it may be needed to link the test-case for initscr.
if test "x$cf_term_lib" = x
then
- echo "$as_me:5120: checking for tgoto" >&5
+ echo "$as_me:6724: checking for tgoto" >&5
echo $ECHO_N "checking for tgoto... $ECHO_C" >&6
if test "${ac_cv_func_tgoto+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 5126 "configure"
+#line 6730 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char tgoto (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define tgoto autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef tgoto
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char tgoto ();
-char (*f) ();
+char tgoto (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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_tgoto) || defined (__stub___tgoto)
-choke me
-#else
-f = tgoto; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for tgoto
#endif
+ return tgoto ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5157: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6761: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5160: \$? = $ac_status" >&5
+ echo "$as_me:6764: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5163: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6767: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5166: \$? = $ac_status" >&5
+ echo "$as_me:6770: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_tgoto=yes
else
@@ -5173,7 +6777,7 @@ ac_cv_func_tgoto=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:5176: result: $ac_cv_func_tgoto" >&5
+echo "$as_me:6780: result: $ac_cv_func_tgoto" >&5
echo "${ECHO_T}$ac_cv_func_tgoto" >&6
if test $ac_cv_func_tgoto = yes; then
cf_term_lib=predefined
@@ -5182,7 +6786,7 @@ else
for cf_term_lib in $cf_check_list otermcap termcap tinfo termlib unknown
do
as_ac_Lib=`echo "ac_cv_lib_$cf_term_lib''_tgoto" | $as_tr_sh`
-echo "$as_me:5185: checking for tgoto in -l$cf_term_lib" >&5
+echo "$as_me:6789: checking for tgoto in -l$cf_term_lib" >&5
echo $ECHO_N "checking for tgoto in -l$cf_term_lib... $ECHO_C" >&6
if eval "test \"\${$as_ac_Lib+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5190,7 +6794,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-l$cf_term_lib $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 5193 "configure"
+#line 6797 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -5201,7 +6805,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char tgoto ();
int
-main ()
+main (void)
{
tgoto ();
;
@@ -5209,16 +6813,16 @@ tgoto ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5212: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6816: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5215: \$? = $ac_status" >&5
+ echo "$as_me:6819: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5218: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6822: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5221: \$? = $ac_status" >&5
+ echo "$as_me:6825: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_Lib=yes"
else
@@ -5229,10 +6833,13 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:5232: result: `eval echo '${'$as_ac_Lib'}'`" >&5
+echo "$as_me:6836: result: `eval echo '${'$as_ac_Lib'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
if test `eval echo '${'$as_ac_Lib'}'` = yes; then
- break
+
+ : ${cf_nculib_root:=$cf_term_lib}
+ break
+
fi
done
@@ -5247,76 +6854,85 @@ fi
then
for cf_curs_lib in $cf_check_list xcurses jcurses pdcurses unknown
do
- as_ac_Lib=`echo "ac_cv_lib_$cf_curs_lib''_initscr" | $as_tr_sh`
-echo "$as_me:5251: checking for initscr in -l$cf_curs_lib" >&5
-echo $ECHO_N "checking for initscr in -l$cf_curs_lib... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Lib+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-l$cf_curs_lib $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line 5259 "configure"
+ LIBS="-l$cf_curs_lib $cf_save_LIBS"
+ if test "$cf_term_lib" = unknown || test "$cf_term_lib" = "$cf_curs_lib" ; then
+ echo "$as_me:6859: checking if we can link with $cf_curs_lib library" >&5
+echo $ECHO_N "checking if we can link with $cf_curs_lib library... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6862 "configure"
#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char initscr ();
+#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
-initscr ();
+initscr()
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5278: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6874: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5281: \$? = $ac_status" >&5
+ echo "$as_me:6877: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5284: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6880: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5287: \$? = $ac_status" >&5
+ echo "$as_me:6883: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- eval "$as_ac_Lib=yes"
+ cf_result=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-eval "$as_ac_Lib=no"
+cf_result=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:5298: result: `eval echo '${'$as_ac_Lib'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
-if test `eval echo '${'$as_ac_Lib'}'` = yes; then
- break
-fi
-
- done
- fi
- test $cf_curs_lib = unknown && { { echo "$as_me:5306: error: no curses library found" >&5
-echo "$as_me: error: no curses library found" >&2;}
- { (exit 1); exit 1; }; }
+ echo "$as_me:6892: result: $cf_result" >&5
+echo "${ECHO_T}$cf_result" >&6
+ test $cf_result = yes && break
+ elif test "$cf_curs_lib" = "$cf_term_lib" ; then
+ cf_result=no
+ elif test "$cf_term_lib" != predefined ; then
+ echo "$as_me:6898: checking if we need both $cf_curs_lib and $cf_term_lib libraries" >&5
+echo $ECHO_N "checking if we need both $cf_curs_lib and $cf_term_lib libraries... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6901 "configure"
+#include "confdefs.h"
+#include <${cf_cv_ncurses_header:-curses.h}>
+int
+main (void)
+{
+initscr(); tgoto((char *)0, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:6913: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:6916: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:6919: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6922: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_result=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
- LIBS="-l$cf_curs_lib $cf_save_LIBS"
- if test "$cf_term_lib" = unknown ; then
- echo "$as_me:5312: checking if we can link with $cf_curs_lib library" >&5
-echo $ECHO_N "checking if we can link with $cf_curs_lib library... $ECHO_C" >&6
- cat >conftest.$ac_ext <<_ACEOF
-#line 5315 "configure"
+ LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6931 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
initscr()
;
@@ -5324,117 +6940,915 @@ initscr()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5327: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6943: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5330: \$? = $ac_status" >&5
+ echo "$as_me:6946: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5333: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6949: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5336: \$? = $ac_status" >&5
+ echo "$as_me:6952: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-cf_result=no
+cf_result=error
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- echo "$as_me:5345: result: $cf_result" >&5
+ echo "$as_me:6964: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
- test $cf_result = no && { { echo "$as_me:5347: error: Cannot link curses library" >&5
-echo "$as_me: error: Cannot link curses library" >&2;}
+ test $cf_result != error && break
+ fi
+ done
+ fi
+ test $cf_curs_lib = unknown && { { echo "$as_me:6970: error: no curses library found" >&5
+echo "$as_me: error: no curses library found" >&2;}
{ (exit 1); exit 1; }; }
- elif test "$cf_curs_lib" = "$cf_term_lib" ; then
- :
- elif test "$cf_term_lib" != predefined ; then
- echo "$as_me:5353: checking if we need both $cf_curs_lib and $cf_term_lib libraries" >&5
-echo $ECHO_N "checking if we need both $cf_curs_lib and $cf_term_lib libraries... $ECHO_C" >&6
- cat >conftest.$ac_ext <<_ACEOF
-#line 5356 "configure"
+fi
+fi
+
+ ;;
+(ncursesw*)
+
+echo "$as_me:6979: checking for multibyte character support" >&5
+echo $ECHO_N "checking for multibyte character support... $ECHO_C" >&6
+if test "${cf_cv_utf8_lib+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cf_save_LIBS="$LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6987 "configure"
#include "confdefs.h"
-#include <${cf_cv_ncurses_header:-curses.h}>
+
+#include <stdlib.h>
int
-main ()
+main (void)
{
-initscr(); tgoto((char *)0, 0, 0);
+putwc(0,0);
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5368: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7000: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5371: \$? = $ac_status" >&5
+ echo "$as_me:7003: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5374: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7006: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5377: \$? = $ac_status" >&5
+ echo "$as_me:7009: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- cf_result=no
+ cf_cv_utf8_lib=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS"
+# If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these
+# will be set on completion of the AC_TRY_LINK below.
+cf_cv_header_path_utf8=
+cf_cv_library_path_utf8=
+
+echo "${as_me:-configure}:7021: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5
+
+cf_save_LIBS="$LIBS"
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 7026 "configure"
+#include "confdefs.h"
+
+#include <libutf8.h>
+int
+main (void)
+{
+putwc(0,0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:7039: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:7042: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:7045: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7048: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ cf_cv_find_linkage_utf8=yes
+ cf_cv_header_path_utf8=/usr/include
+ cf_cv_library_path_utf8=/usr/lib
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+LIBS="-lutf8 $cf_save_LIBS"
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 7062 "configure"
+#include "confdefs.h"
+
+#include <libutf8.h>
+int
+main (void)
+{
+putwc(0,0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:7075: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:7078: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:7081: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7084: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ cf_cv_find_linkage_utf8=yes
+ cf_cv_header_path_utf8=/usr/include
+ cf_cv_library_path_utf8=/usr/lib
+ cf_cv_library_file_utf8="-lutf8"
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+ cf_cv_find_linkage_utf8=no
+ LIBS="$cf_save_LIBS"
+
+ test -n "$verbose" && echo " find linkage for utf8 library" 1>&6
+
+echo "${as_me:-configure}:7101: testing find linkage for utf8 library ..." 1>&5
+
+echo "${as_me:-configure}:7103: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5
+
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_test_CPPFLAGS="$CPPFLAGS"
+
+cf_search=
+
+# collect the current set of include-directories from compiler flags
+cf_header_path_list=""
+if test -n "${CFLAGS}${CPPFLAGS}" ; then
+ for cf_header_path in $CPPFLAGS $CFLAGS
+ do
+ case $cf_header_path in
+ (-I*)
+ cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
+
+test "x$cf_header_path" != "xNONE" && \
+test -d "$cf_header_path" && \
+ {
+ test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path"
+ test -d $cf_header_path/include && cf_search="$cf_search $cf_header_path/include"
+ test -d $cf_header_path/include/utf8 && cf_search="$cf_search $cf_header_path/include/utf8"
+ test -d $cf_header_path/include/utf8/include && cf_search="$cf_search $cf_header_path/include/utf8/include"
+ test -d $cf_header_path/utf8/include && cf_search="$cf_search $cf_header_path/utf8/include"
+ test -d $cf_header_path/utf8/include/utf8 && cf_search="$cf_search $cf_header_path/utf8/include/utf8"
+}
+
+ cf_header_path_list="$cf_header_path_list $cf_search"
+ ;;
+ esac
+ done
+fi
+
+# add the variations for the package we are looking for
+
+cf_search=
+
+test "x$prefix" != "xNONE" && \
+test -d "$prefix" && \
+ {
+ test -n "$verbose" && echo " ... testing for include-directories under $prefix"
+ test -d $prefix/include && cf_search="$cf_search $prefix/include"
+ test -d $prefix/include/utf8 && cf_search="$cf_search $prefix/include/utf8"
+ test -d $prefix/include/utf8/include && cf_search="$cf_search $prefix/include/utf8/include"
+ test -d $prefix/utf8/include && cf_search="$cf_search $prefix/utf8/include"
+ test -d $prefix/utf8/include/utf8 && cf_search="$cf_search $prefix/utf8/include/utf8"
+}
+
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
+
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/include && cf_search="$cf_search $cf_subdir_prefix/include"
+ test -d $cf_subdir_prefix/include/utf8 && cf_search="$cf_search $cf_subdir_prefix/include/utf8"
+ test -d $cf_subdir_prefix/include/utf8/include && cf_search="$cf_search $cf_subdir_prefix/include/utf8/include"
+ test -d $cf_subdir_prefix/utf8/include && cf_search="$cf_search $cf_subdir_prefix/utf8/include"
+ test -d $cf_subdir_prefix/utf8/include/utf8 && cf_search="$cf_search $cf_subdir_prefix/utf8/include/utf8"
+}
+
+done
+
+test "$includedir" != NONE && \
+test "$includedir" != "/usr/include" && \
+test -d "$includedir" && {
+ test -d $includedir && cf_search="$cf_search $includedir"
+ test -d $includedir/utf8 && cf_search="$cf_search $includedir/utf8"
+}
+
+test "$oldincludedir" != NONE && \
+test "$oldincludedir" != "/usr/include" && \
+test -d "$oldincludedir" && {
+ test -d $oldincludedir && cf_search="$cf_search $oldincludedir"
+ test -d $oldincludedir/utf8 && cf_search="$cf_search $oldincludedir/utf8"
+}
+
+cf_search="$cf_search $cf_header_path_list"
+
+ for cf_cv_header_path_utf8 in $cf_search
+ do
+ if test -d $cf_cv_header_path_utf8 ; then
+ test -n "$verbose" && echo " ... testing $cf_cv_header_path_utf8" 1>&6
+
+echo "${as_me:-configure}:7194: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5
+
+ CPPFLAGS="$cf_save_CPPFLAGS"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_cv_header_path_utf8"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 5386 "configure"
+#line 7202 "configure"
#include "confdefs.h"
-#include <${cf_cv_ncurses_header:-curses.h}>
+
+#include <libutf8.h>
int
-main ()
+main (void)
{
-initscr()
+putwc(0,0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7215: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7218: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7221: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7224: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ test -n "$verbose" && echo " ... found utf8 headers in $cf_cv_header_path_utf8" 1>&6
+
+echo "${as_me:-configure}:7229: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5
+
+ cf_cv_find_linkage_utf8=maybe
+ cf_test_CPPFLAGS="$CPPFLAGS"
+ break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+ CPPFLAGS="$cf_save_CPPFLAGS"
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ fi
+ done
+
+ if test "$cf_cv_find_linkage_utf8" = maybe ; then
+
+echo "${as_me:-configure}:7247: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5
+
+ cf_save_LIBS="$LIBS"
+ cf_save_LDFLAGS="$LDFLAGS"
+
+ if test "$cf_cv_find_linkage_utf8" != yes ; then
+
+cf_search=
+cf_library_path_list=""
+if test -n "${LDFLAGS}${LIBS}" ; then
+ for cf_library_path in $LDFLAGS $LIBS
+ do
+ case $cf_library_path in
+ (-L*)
+ cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
+
+test "x$cf_library_path" != "xNONE" && \
+test -d "$cf_library_path" && \
+ {
+ test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path"
+ test -d $cf_library_path/lib && cf_search="$cf_search $cf_library_path/lib"
+ test -d $cf_library_path/lib/utf8 && cf_search="$cf_search $cf_library_path/lib/utf8"
+ test -d $cf_library_path/lib/utf8/lib && cf_search="$cf_search $cf_library_path/lib/utf8/lib"
+ test -d $cf_library_path/utf8/lib && cf_search="$cf_search $cf_library_path/utf8/lib"
+ test -d $cf_library_path/utf8/lib/utf8 && cf_search="$cf_search $cf_library_path/utf8/lib/utf8"
+}
+
+ cf_library_path_list="$cf_library_path_list $cf_search"
+ ;;
+ esac
+ done
+fi
+
+cf_search=
+
+test "x$prefix" != "xNONE" && \
+test -d "$prefix" && \
+ {
+ test -n "$verbose" && echo " ... testing for lib-directories under $prefix"
+ test -d $prefix/lib && cf_search="$cf_search $prefix/lib"
+ test -d $prefix/lib/utf8 && cf_search="$cf_search $prefix/lib/utf8"
+ test -d $prefix/lib/utf8/lib && cf_search="$cf_search $prefix/lib/utf8/lib"
+ test -d $prefix/utf8/lib && cf_search="$cf_search $prefix/utf8/lib"
+ test -d $prefix/utf8/lib/utf8 && cf_search="$cf_search $prefix/utf8/lib/utf8"
+}
+
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
+
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/lib && cf_search="$cf_search $cf_subdir_prefix/lib"
+ test -d $cf_subdir_prefix/lib/utf8 && cf_search="$cf_search $cf_subdir_prefix/lib/utf8"
+ test -d $cf_subdir_prefix/lib/utf8/lib && cf_search="$cf_search $cf_subdir_prefix/lib/utf8/lib"
+ test -d $cf_subdir_prefix/utf8/lib && cf_search="$cf_search $cf_subdir_prefix/utf8/lib"
+ test -d $cf_subdir_prefix/utf8/lib/utf8 && cf_search="$cf_search $cf_subdir_prefix/utf8/lib/utf8"
+}
+
+done
+
+cf_search="$cf_library_path_list $cf_search"
+
+ for cf_cv_library_path_utf8 in $cf_search
+ do
+ if test -d $cf_cv_library_path_utf8 ; then
+ test -n "$verbose" && echo " ... testing $cf_cv_library_path_utf8" 1>&6
+
+echo "${as_me:-configure}:7322: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5
+
+ CPPFLAGS="$cf_test_CPPFLAGS"
+ LIBS="-lutf8 $cf_save_LIBS"
+ LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_utf8"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 7328 "configure"
+#include "confdefs.h"
+
+#include <libutf8.h>
+int
+main (void)
+{
+putwc(0,0);
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5398: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7341: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5401: \$? = $ac_status" >&5
+ echo "$as_me:7344: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5404: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7347: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5407: \$? = $ac_status" >&5
+ echo "$as_me:7350: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- cf_result=yes
+
+ test -n "$verbose" && echo " ... found utf8 library in $cf_cv_library_path_utf8" 1>&6
+
+echo "${as_me:-configure}:7355: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5
+
+ cf_cv_find_linkage_utf8=yes
+ cf_cv_library_file_utf8="-lutf8"
+ break
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-cf_result=error
+
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ LDFLAGS="$cf_save_LDFLAGS"
+
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ fi
+ done
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LDFLAGS="$cf_save_LDFLAGS"
+ fi
+
+ else
+ cf_cv_find_linkage_utf8=no
+ fi
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- echo "$as_me:5419: result: $cf_result" >&5
-echo "${ECHO_T}$cf_result" >&6
- fi
+
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+
+LIBS="$cf_save_LIBS"
+
+if test "$cf_cv_find_linkage_utf8" = yes ; then
+cf_cv_utf8_lib=add-on
+else
+cf_cv_utf8_lib=no
+fi
+
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:7397: result: $cf_cv_utf8_lib" >&5
+echo "${ECHO_T}$cf_cv_utf8_lib" >&6
+
+# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
+# ncurses/ncursesw:
+if test "$cf_cv_utf8_lib" = "add-on" ; then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_LIBUTF8_H 1
+EOF
+
+if test -n "$cf_cv_header_path_utf8" ; then
+ for cf_add_incdir in $cf_cv_header_path_utf8
+ do
+ while test $cf_add_incdir != /usr/include
+ do
+ if test -d $cf_add_incdir
+ then
+ cf_have_incdir=no
+ if test -n "$CFLAGS$CPPFLAGS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_incdir in $CFLAGS $CPPFLAGS ; do
+ if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then
+ cf_have_incdir=yes; break
+ fi
+ done
+ fi
+
+ if test "$cf_have_incdir" = no ; then
+ if test "$cf_add_incdir" = /usr/local/include ; then
+ if test "$GCC" = yes
+ then
+ cf_save_CPPFLAGS=$CPPFLAGS
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 7435 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int
+main (void)
+{
+printf("Hello")
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7447: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7450: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7453: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7456: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_incdir=yes
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS=$cf_save_CPPFLAGS
+ fi
+ fi
+ fi
+
+ if test "$cf_have_incdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
+
+echo "${as_me:-configure}:7473: testing adding $cf_add_incdir to include-path ..." 1>&5
+
+ CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'`
+ test "$cf_top_incdir" = "$cf_add_incdir" && break
+ cf_add_incdir="$cf_top_incdir"
+ else
+ break
+ fi
+ else
+ break
+ fi
+ done
+ done
+fi
+
+if test -n "$cf_cv_library_path_utf8" ; then
+ for cf_add_libdir in $cf_cv_library_path_utf8
+ do
+ if test $cf_add_libdir = /usr/lib ; then
+ :
+ elif test -d $cf_add_libdir
+ then
+ cf_have_libdir=no
+ if test -n "$LDFLAGS$LIBS" ; then
+ # a loop is needed to ensure we can add subdirs of existing dirs
+ for cf_test_libdir in $LDFLAGS $LIBS ; do
+ if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
+ cf_have_libdir=yes; break
+ fi
+ done
+ fi
+ if test "$cf_have_libdir" = no ; then
+ test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
+
+echo "${as_me:-configure}:7509: testing adding $cf_add_libdir to library-path ..." 1>&5
+
+ LDFLAGS="-L$cf_add_libdir $LDFLAGS"
+ fi
+ fi
+ done
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_cv_library_file_utf8; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+fi
+
+cf_ncuconfig_root=$cf_cv_screen
+cf_have_ncuconfig=no
+
+if test "x${PKG_CONFIG:=none}" != xnone; then
+ echo "$as_me:7539: checking pkg-config for $cf_ncuconfig_root" >&5
+echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6
+ if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
+ echo "$as_me:7542: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+ echo "$as_me:7545: checking if the $cf_ncuconfig_root package files work" >&5
+echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6
+ cf_have_ncuconfig=unknown
+
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_save_LIBS="$LIBS"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in `$PKG_CONFIG --cflags $cf_ncuconfig_root`
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in `$PKG_CONFIG --libs $cf_ncuconfig_root`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 7667 "configure"
+#include "confdefs.h"
+#include <${cf_cv_ncurses_header:-curses.h}>
+int
+main (void)
+{
+initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:7679: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:7682: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:7685: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7688: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ if test "$cross_compiling" = yes; then
+ cf_have_ncuconfig=maybe
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 7694 "configure"
+#include "confdefs.h"
+#include <${cf_cv_ncurses_header:-curses.h}>
+ int main(void)
+ { char *xx = curses_version(); return (xx == 0); }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:7701: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:7704: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:7706: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7709: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_have_ncuconfig=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_ncuconfig=no
fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_ncuconfig=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ echo "$as_me:7726: result: $cf_have_ncuconfig" >&5
+echo "${ECHO_T}$cf_have_ncuconfig" >&6
+ test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
+ if test "$cf_have_ncuconfig" != "yes"
+ then
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ NCURSES_CONFIG_PKG=none
+ else
+
+cat >>confdefs.h <<\EOF
+#define NCURSES 1
+EOF
+
+ NCURSES_CONFIG_PKG=$cf_ncuconfig_root
+
+echo "$as_me:7742: checking for terminfo header" >&5
+echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
+if test "${cf_cv_term_header+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+case ${cf_cv_ncurses_header} in
+(*/ncurses.h|*/ncursesw.h)
+ cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'`
+ ;;
+(*)
+ cf_term_header=term.h
+ ;;
+esac
+
+for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
+do
+cat >conftest.$ac_ext <<_ACEOF
+#line 7760 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+#include <${cf_cv_ncurses_header:-curses.h}>
+#include <$cf_test>
+
+int
+main (void)
+{
+int x = auto_left_margin
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7775: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7778: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7781: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7784: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ cf_cv_term_header="$cf_test"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+ cf_cv_term_header=unknown
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ test "$cf_cv_term_header" != unknown && break
+done
+
+fi
+echo "$as_me:7800: result: $cf_cv_term_header" >&5
+echo "${ECHO_T}$cf_cv_term_header" >&6
+
+# Set definitions to allow ifdef'ing to accommodate subdirectories
+
+case $cf_cv_term_header in
+(*term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_TERM_H 1
+EOF
+
+ ;;
+esac
+
+case $cf_cv_term_header in
+(ncurses/term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSES_TERM_H 1
+EOF
;;
-ncurses) #(vi
+(ncursesw/term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSESW_TERM_H 1
+EOF
-cf_ncuconfig_root=ncurses
+ ;;
+esac
-echo "Looking for ${cf_ncuconfig_root}-config"
+ fi
+
+ else
+ echo "$as_me:7835: result: no" >&5
+echo "${ECHO_T}no" >&6
+ NCURSES_CONFIG_PKG=none
+ fi
+else
+ NCURSES_CONFIG_PKG=none
+fi
+
+if test "x$cf_have_ncuconfig" = "xno"; then
+ cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}"
if test -n "$ac_tool_prefix"; then
- for ac_prog in ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
+ for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:5437: checking for $ac_word" >&5
+echo "$as_me:7851: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5449,7 +7863,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_NCURSES_CONFIG="$ac_tool_prefix$ac_prog"
-echo "$as_me:5452: found $ac_dir/$ac_word" >&5
+echo "$as_me:7866: found $ac_dir/$ac_word" >&5
break
done
@@ -5457,10 +7871,10 @@ fi
fi
NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG
if test -n "$NCURSES_CONFIG"; then
- echo "$as_me:5460: result: $NCURSES_CONFIG" >&5
+ echo "$as_me:7874: result: $NCURSES_CONFIG" >&5
echo "${ECHO_T}$NCURSES_CONFIG" >&6
else
- echo "$as_me:5463: result: no" >&5
+ echo "$as_me:7877: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -5469,11 +7883,11 @@ fi
fi
if test -z "$NCURSES_CONFIG"; then
ac_ct_NCURSES_CONFIG=$NCURSES_CONFIG
- for ac_prog in ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
+ for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
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 "$as_me:5476: checking for $ac_word" >&5
+echo "$as_me:7890: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5488,7 +7902,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_prog"
-echo "$as_me:5491: found $ac_dir/$ac_word" >&5
+echo "$as_me:7905: found $ac_dir/$ac_word" >&5
break
done
@@ -5496,10 +7910,10 @@ fi
fi
ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG
if test -n "$ac_ct_NCURSES_CONFIG"; then
- echo "$as_me:5499: result: $ac_ct_NCURSES_CONFIG" >&5
+ echo "$as_me:7913: result: $ac_ct_NCURSES_CONFIG" >&5
echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6
else
- echo "$as_me:5502: result: no" >&5
+ echo "$as_me:7916: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -5510,32 +7924,141 @@ test -n "$ac_ct_NCURSES_CONFIG" || ac_ct_NCURSES_CONFIG="none"
NCURSES_CONFIG=$ac_ct_NCURSES_CONFIG
fi
-if test "$NCURSES_CONFIG" != none ; then
+ if test "$NCURSES_CONFIG" != none ; then
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in `$NCURSES_CONFIG --cflags`
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
-CPPFLAGS="$CPPFLAGS `$NCURSES_CONFIG --cflags`"
-LIBS="`$NCURSES_CONFIG --libs` $LIBS"
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
-# even with config script, some packages use no-override for curses.h
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
-echo "$as_me:5520: checking if we have identified curses headers" >&5
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in `$NCURSES_CONFIG --libs`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ # even with config script, some packages use no-override for curses.h
+
+echo "$as_me:8045: checking if we have identified curses headers" >&5
echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6
if test "${cf_cv_ncurses_header+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cf_cv_ncurses_header=none
-for cf_header in \
- ncurses/ncurses.h \
- ncurses/curses.h \
- ncurses.h \
- curses.h
+for cf_header in \
+ ncurses.h $cf_cv_screen/ncurses.h \
+ curses.h $cf_cv_screen/curses.h
do
cat >conftest.$ac_ext <<_ACEOF
-#line 5534 "configure"
+#line 8057 "configure"
#include "confdefs.h"
#include <${cf_header}>
int
-main ()
+main (void)
{
initscr(); tgoto("?", 0,0)
;
@@ -5543,16 +8066,16 @@ initscr(); tgoto("?", 0,0)
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5546: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8069: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5549: \$? = $ac_status" >&5
+ echo "$as_me:8072: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5552: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8075: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5555: \$? = $ac_status" >&5
+ echo "$as_me:8078: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_header=$cf_header; break
else
@@ -5563,11 +8086,11 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:5566: result: $cf_cv_ncurses_header" >&5
+echo "$as_me:8089: result: $cf_cv_ncurses_header" >&5
echo "${ECHO_T}$cf_cv_ncurses_header" >&6
if test "$cf_cv_ncurses_header" = none ; then
- { { echo "$as_me:5570: error: No curses header-files found" >&5
+ { { echo "$as_me:8093: error: No curses header-files found" >&5
echo "$as_me: error: No curses header-files found" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -5577,23 +8100,23 @@ fi
for ac_header in $cf_cv_ncurses_header
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:5580: checking for $ac_header" >&5
+echo "$as_me:8103: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 5586 "configure"
+#line 8109 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:5590: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:8113: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:5596: \$? = $ac_status" >&5
+ echo "$as_me:8119: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -5612,7 +8135,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:5615: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:8138: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -5628,15 +8151,15 @@ EOF
cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-cat >>confdefs.h <<EOF
+ cat >>confdefs.h <<EOF
#define $cf_nculib_ROOT 1
EOF
-cf_cv_ncurses_version=`$NCURSES_CONFIG --version`
+ cf_cv_ncurses_version=`$NCURSES_CONFIG --version`
-else
+ else
-cf_ncuhdr_root=ncurses
+cf_ncuhdr_root=$cf_cv_screen
test -n "$cf_cv_curses_dir" && \
test "$cf_cv_curses_dir" != "no" && { \
@@ -5663,13 +8186,16 @@ if test -n "$cf_cv_curses_dir/include/$cf_ncuhdr_root" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 5668 "configure"
+#line 8194 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -5677,16 +8203,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5680: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8206: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5683: \$? = $ac_status" >&5
+ echo "$as_me:8209: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5686: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8212: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5689: \$? = $ac_status" >&5
+ echo "$as_me:8215: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -5703,7 +8229,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:5706: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:8232: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -5713,6 +8239,8 @@ echo "${as_me:-configure}:5706: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
@@ -5720,7 +8248,7 @@ fi
}
-echo "$as_me:5723: checking for $cf_ncuhdr_root header in include-path" >&5
+echo "$as_me:8251: checking for $cf_ncuhdr_root header in include-path" >&5
echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6
if test "${cf_cv_ncurses_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5732,12 +8260,12 @@ else
do
cat >conftest.$ac_ext <<_ACEOF
-#line 5735 "configure"
+#line 8263 "configure"
#include "confdefs.h"
#include <$cf_header>
int
-main ()
+main (void)
{
#ifdef NCURSES_VERSION
@@ -5756,16 +8284,16 @@ printf("old\n");
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5759: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8287: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5762: \$? = $ac_status" >&5
+ echo "$as_me:8290: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5765: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8293: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5768: \$? = $ac_status" >&5
+ echo "$as_me:8296: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_h=$cf_header
@@ -5780,14 +8308,14 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:5783: result: $cf_cv_ncurses_h" >&5
+echo "$as_me:8311: result: $cf_cv_ncurses_h" >&5
echo "${ECHO_T}$cf_cv_ncurses_h" >&6
if test "$cf_cv_ncurses_h" != no ; then
cf_cv_ncurses_header=$cf_cv_ncurses_h
else
-echo "$as_me:5790: checking for $cf_ncuhdr_root include-path" >&5
+echo "$as_me:8318: checking for $cf_ncuhdr_root include-path" >&5
echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6
if test "${cf_cv_ncurses_h2+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5802,8 +8330,8 @@ cf_header_path_list=""
if test -n "${CFLAGS}${CPPFLAGS}" ; then
for cf_header_path in $CPPFLAGS $CFLAGS
do
- case $cf_header_path in #(vi
- -I*)
+ case $cf_header_path in
+ (-I*)
cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
test "x$cf_header_path" != "xNONE" && \
@@ -5827,17 +8355,6 @@ fi
cf_search=
-test "x/usr" != "x$prefix" && \
-test -d "/usr" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /usr"
- test -d /usr/include && cf_search="$cf_search /usr/include"
- test -d /usr/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/include/$cf_ncuhdr_root"
- test -d /usr/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/include/$cf_ncuhdr_root/include"
- test -d /usr/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/$cf_ncuhdr_root/include"
- test -d /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
-}
-
test "x$prefix" != "xNONE" && \
test -d "$prefix" && \
{
@@ -5849,38 +8366,27 @@ test -d "$prefix" && \
test -d $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
}
-test "x/usr/local" != "x$prefix" && \
-test -d "/usr/local" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /usr/local"
- test -d /usr/local/include && cf_search="$cf_search /usr/local/include"
- test -d /usr/local/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root"
- test -d /usr/local/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root/include"
- test -d /usr/local/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include"
- test -d /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
-}
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
-test "x/opt" != "x$prefix" && \
-test -d "/opt" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /opt"
- test -d /opt/include && cf_search="$cf_search /opt/include"
- test -d /opt/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/include/$cf_ncuhdr_root"
- test -d /opt/include/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/include/$cf_ncuhdr_root/include"
- test -d /opt/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/$cf_ncuhdr_root/include"
- test -d /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/include && cf_search="$cf_search $cf_subdir_prefix/include"
+ test -d $cf_subdir_prefix/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root"
+ test -d $cf_subdir_prefix/include/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root/include"
+ test -d $cf_subdir_prefix/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include"
+ test -d $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
}
-test "x$HOME" != "x$prefix" && \
-test -d "$HOME" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under $HOME"
- test -d $HOME/include && cf_search="$cf_search $HOME/include"
- test -d $HOME/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root"
- test -d $HOME/include/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root/include"
- test -d $HOME/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include"
- test -d $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
-}
+done
test "$includedir" != NONE && \
test "$includedir" != "/usr/include" && \
@@ -5925,13 +8431,16 @@ if test -n "$cf_incdir" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 5930 "configure"
+#line 8439 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -5939,16 +8448,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5942: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8451: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5945: \$? = $ac_status" >&5
+ echo "$as_me:8454: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5948: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8457: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5951: \$? = $ac_status" >&5
+ echo "$as_me:8460: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -5965,7 +8474,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:5968: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:8477: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -5975,6 +8484,8 @@ echo "${as_me:-configure}:5968: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
@@ -5986,12 +8497,12 @@ fi
do
cat >conftest.$ac_ext <<_ACEOF
-#line 5989 "configure"
+#line 8500 "configure"
#include "confdefs.h"
#include <$cf_header>
int
-main ()
+main (void)
{
#ifdef NCURSES_VERSION
@@ -6010,16 +8521,16 @@ printf("old\n");
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6013: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8524: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:6016: \$? = $ac_status" >&5
+ echo "$as_me:8527: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6019: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8530: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6022: \$? = $ac_status" >&5
+ echo "$as_me:8533: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_h2=$cf_header
@@ -6040,12 +8551,12 @@ rm -f conftest.$ac_objext conftest.$ac_ext
CPPFLAGS="$cf_save2_CPPFLAGS"
test "$cf_cv_ncurses_h2" != no && break
done
- test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:6043: error: not found" >&5
+ test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:8554: error: not found" >&5
echo "$as_me: error: not found" >&2;}
{ (exit 1); exit 1; }; }
fi
-echo "$as_me:6048: result: $cf_cv_ncurses_h2" >&5
+echo "$as_me:8559: result: $cf_cv_ncurses_h2" >&5
echo "${ECHO_T}$cf_cv_ncurses_h2" >&6
cf_1st_incdir=`echo $cf_cv_ncurses_h2 | sed -e 's%/[^/]*$%%'`
@@ -6076,13 +8587,16 @@ if test -n "$cf_1st_incdir" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 6081 "configure"
+#line 8595 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -6090,16 +8604,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6093: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8607: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:6096: \$? = $ac_status" >&5
+ echo "$as_me:8610: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6099: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8613: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6102: \$? = $ac_status" >&5
+ echo "$as_me:8616: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -6116,7 +8630,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:6119: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:8633: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -6126,6 +8640,8 @@ echo "${as_me:-configure}:6119: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
@@ -6135,8 +8651,8 @@ fi
# Set definitions to allow ifdef'ing for ncurses.h
-case $cf_cv_ncurses_header in # (vi
-*ncurses.h)
+case $cf_cv_ncurses_header in
+(*ncurses.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSES_H 1
@@ -6145,15 +8661,15 @@ EOF
;;
esac
-case $cf_cv_ncurses_header in # (vi
-ncurses/curses.h|ncurses/ncurses.h)
+case $cf_cv_ncurses_header in
+(ncurses/curses.h|ncurses/ncurses.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSES_NCURSES_H 1
EOF
;;
-ncursesw/curses.h|ncursesw/ncurses.h)
+(ncursesw/curses.h|ncursesw/ncurses.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSESW_NCURSES_H 1
@@ -6162,17 +8678,17 @@ EOF
;;
esac
-echo "$as_me:6165: checking for terminfo header" >&5
+echo "$as_me:8681: checking for terminfo header" >&5
echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
if test "${cf_cv_term_header+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-case ${cf_cv_ncurses_header} in #(vi
-*/ncurses.h|*/ncursesw.h) #(vi
+case ${cf_cv_ncurses_header} in
+(*/ncurses.h|*/ncursesw.h)
cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'`
;;
-*)
+(*)
cf_term_header=term.h
;;
esac
@@ -6180,14 +8696,14 @@ esac
for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
do
cat >conftest.$ac_ext <<_ACEOF
-#line 6183 "configure"
+#line 8699 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <${cf_cv_ncurses_header:-curses.h}>
#include <$cf_test>
int
-main ()
+main (void)
{
int x = auto_left_margin
;
@@ -6195,16 +8711,16 @@ int x = auto_left_margin
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:6198: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8714: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:6201: \$? = $ac_status" >&5
+ echo "$as_me:8717: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:6204: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8720: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6207: \$? = $ac_status" >&5
+ echo "$as_me:8723: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_term_header="$cf_test"
@@ -6220,13 +8736,13 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:6223: result: $cf_cv_term_header" >&5
+echo "$as_me:8739: result: $cf_cv_term_header" >&5
echo "${ECHO_T}$cf_cv_term_header" >&6
# Set definitions to allow ifdef'ing to accommodate subdirectories
-case $cf_cv_term_header in # (vi
-*term.h)
+case $cf_cv_term_header in
+(*term.h)
cat >>confdefs.h <<\EOF
#define HAVE_TERM_H 1
@@ -6235,15 +8751,15 @@ EOF
;;
esac
-case $cf_cv_term_header in # (vi
-ncurses/term.h) #(vi
+case $cf_cv_term_header in
+(ncurses/term.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSES_TERM_H 1
EOF
;;
-ncursesw/term.h)
+(ncursesw/term.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSESW_TERM_H 1
@@ -6258,7 +8774,7 @@ cat >>confdefs.h <<\EOF
#define NCURSES 1
EOF
-echo "$as_me:6261: checking for ncurses version" >&5
+echo "$as_me:8777: checking for ncurses version" >&5
echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6
if test "${cf_cv_ncurses_version+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6284,10 +8800,10 @@ Autoconf "old"
#endif
EOF
cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
- { (eval echo "$as_me:6287: \"$cf_try\"") >&5
+ { (eval echo "$as_me:8803: \"$cf_try\"") >&5
(eval $cf_try) 2>&5
ac_status=$?
- echo "$as_me:6290: \$? = $ac_status" >&5
+ echo "$as_me:8806: \$? = $ac_status" >&5
(exit $ac_status); }
if test -f conftest.out ; then
cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'`
@@ -6297,12 +8813,12 @@ EOF
else
cat >conftest.$ac_ext <<_ACEOF
-#line 6300 "configure"
+#line 8816 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
#include <stdio.h>
-int main()
+int main(void)
{
FILE *fp = fopen("$cf_tempfile", "w");
#ifdef NCURSES_VERSION
@@ -6322,15 +8838,15 @@ int main()
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:6325: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8841: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6328: \$? = $ac_status" >&5
+ echo "$as_me:8844: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:6330: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8846: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6333: \$? = $ac_status" >&5
+ echo "$as_me:8849: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_version=`cat $cf_tempfile`
@@ -6344,20 +8860,20 @@ fi
rm -f $cf_tempfile
fi
-echo "$as_me:6347: result: $cf_cv_ncurses_version" >&5
+echo "$as_me:8863: result: $cf_cv_ncurses_version" >&5
echo "${ECHO_T}$cf_cv_ncurses_version" >&6
test "$cf_cv_ncurses_version" = no ||
cat >>confdefs.h <<\EOF
#define NCURSES 1
EOF
-cf_nculib_root=ncurses
+cf_nculib_root=$cf_cv_screen
# This works, except for the special case where we find gpm, but
# ncurses is in a nonstandard location via $LIBS, and we really want
# to link gpm.
cf_ncurses_LIBS=""
cf_ncurses_SAVE="$LIBS"
-echo "$as_me:6360: checking for Gpm_Open in -lgpm" >&5
+echo "$as_me:8876: checking for Gpm_Open in -lgpm" >&5
echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6
if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6365,7 +8881,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgpm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 6368 "configure"
+#line 8884 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -6376,7 +8892,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char Gpm_Open ();
int
-main ()
+main (void)
{
Gpm_Open ();
;
@@ -6384,16 +8900,16 @@ Gpm_Open ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6387: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8903: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6390: \$? = $ac_status" >&5
+ echo "$as_me:8906: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6393: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8909: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6396: \$? = $ac_status" >&5
+ echo "$as_me:8912: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_gpm_Gpm_Open=yes
else
@@ -6404,10 +8920,10 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:6407: result: $ac_cv_lib_gpm_Gpm_Open" >&5
+echo "$as_me:8923: result: $ac_cv_lib_gpm_Gpm_Open" >&5
echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6
if test $ac_cv_lib_gpm_Gpm_Open = yes; then
- echo "$as_me:6410: checking for initscr in -lgpm" >&5
+ echo "$as_me:8926: checking for initscr in -lgpm" >&5
echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6
if test "${ac_cv_lib_gpm_initscr+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6415,7 +8931,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgpm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 6418 "configure"
+#line 8934 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -6426,7 +8942,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char initscr ();
int
-main ()
+main (void)
{
initscr ();
;
@@ -6434,16 +8950,16 @@ initscr ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6437: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8953: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6440: \$? = $ac_status" >&5
+ echo "$as_me:8956: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6443: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8959: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6446: \$? = $ac_status" >&5
+ echo "$as_me:8962: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_gpm_initscr=yes
else
@@ -6454,7 +8970,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:6457: result: $ac_cv_lib_gpm_initscr" >&5
+echo "$as_me:8973: result: $ac_cv_lib_gpm_initscr" >&5
echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6
if test $ac_cv_lib_gpm_initscr = yes; then
LIBS="$cf_ncurses_SAVE"
@@ -6464,12 +8980,12 @@ fi
fi
-case $host_os in #(vi
-freebsd*)
+case $host_os in
+(freebsd*)
# This is only necessary if you are linking against an obsolete
# version of ncurses (but it should do no harm, since it's static).
if test "$cf_nculib_root" = ncurses ; then
- echo "$as_me:6472: checking for tgoto in -lmytinfo" >&5
+ echo "$as_me:8988: checking for tgoto in -lmytinfo" >&5
echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6
if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6477,7 +8993,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lmytinfo $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 6480 "configure"
+#line 8996 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -6488,7 +9004,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char tgoto ();
int
-main ()
+main (void)
{
tgoto ();
;
@@ -6496,16 +9012,16 @@ tgoto ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6499: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9015: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6502: \$? = $ac_status" >&5
+ echo "$as_me:9018: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6505: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9021: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6508: \$? = $ac_status" >&5
+ echo "$as_me:9024: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_mytinfo_tgoto=yes
else
@@ -6516,7 +9032,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:6519: result: $ac_cv_lib_mytinfo_tgoto" >&5
+echo "$as_me:9035: result: $ac_cv_lib_mytinfo_tgoto" >&5
echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6
if test $ac_cv_lib_mytinfo_tgoto = yes; then
cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"
@@ -6526,62 +9042,92 @@ fi
;;
esac
-LIBS="$cf_ncurses_LIBS $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_ncurses_LIBS; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" )
then
- LIBS="-l$cf_nculib_root $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_nculib_root; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
else
eval 'cf_cv_have_lib_'$cf_nculib_root'=no'
cf_libdir=""
- echo "$as_me:6538: checking for initscr" >&5
+ echo "$as_me:9084: checking for initscr" >&5
echo $ECHO_N "checking for initscr... $ECHO_C" >&6
if test "${ac_cv_func_initscr+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 6544 "configure"
+#line 9090 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char initscr (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define initscr autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef initscr
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char initscr ();
-char (*f) ();
+char initscr (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_initscr) || defined (__stub___initscr)
-choke me
-#else
-f = initscr; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for initscr
#endif
+ return initscr ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6575: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9121: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6578: \$? = $ac_status" >&5
+ echo "$as_me:9124: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6581: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9127: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6584: \$? = $ac_status" >&5
+ echo "$as_me:9130: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_initscr=yes
else
@@ -6591,22 +9137,22 @@ ac_cv_func_initscr=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:6594: result: $ac_cv_func_initscr" >&5
+echo "$as_me:9140: result: $ac_cv_func_initscr" >&5
echo "${ECHO_T}$ac_cv_func_initscr" >&6
if test $ac_cv_func_initscr = yes; then
eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
else
cf_save_LIBS="$LIBS"
- echo "$as_me:6601: checking for initscr in -l$cf_nculib_root" >&5
+ echo "$as_me:9147: checking for initscr in -l$cf_nculib_root" >&5
echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6
LIBS="-l$cf_nculib_root $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 6605 "configure"
+#line 9151 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
initscr()
;
@@ -6614,25 +9160,25 @@ initscr()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6617: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9163: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6620: \$? = $ac_status" >&5
+ echo "$as_me:9166: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6623: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9169: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6626: \$? = $ac_status" >&5
+ echo "$as_me:9172: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- echo "$as_me:6628: result: yes" >&5
+ echo "$as_me:9174: result: yes" >&5
echo "${ECHO_T}yes" >&6
eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-echo "$as_me:6635: result: no" >&5
+echo "$as_me:9181: result: no" >&5
echo "${ECHO_T}no" >&6
cf_search=
@@ -6640,8 +9186,8 @@ cf_library_path_list=""
if test -n "${LDFLAGS}${LIBS}" ; then
for cf_library_path in $LDFLAGS $LIBS
do
- case $cf_library_path in #(vi
- -L*)
+ case $cf_library_path in
+ (-L*)
cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
test "x$cf_library_path" != "xNONE" && \
@@ -6663,17 +9209,6 @@ fi
cf_search=
-test "x/usr" != "x$prefix" && \
-test -d "/usr" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /usr"
- test -d /usr/lib && cf_search="$cf_search /usr/lib"
- test -d /usr/lib/$cf_nculib_root && cf_search="$cf_search /usr/lib/$cf_nculib_root"
- test -d /usr/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/lib/$cf_nculib_root/lib"
- test -d /usr/$cf_nculib_root/lib && cf_search="$cf_search /usr/$cf_nculib_root/lib"
- test -d /usr/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/$cf_nculib_root/lib/$cf_nculib_root"
-}
-
test "x$prefix" != "xNONE" && \
test -d "$prefix" && \
{
@@ -6685,52 +9220,41 @@ test -d "$prefix" && \
test -d $prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root"
}
-test "x/usr/local" != "x$prefix" && \
-test -d "/usr/local" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /usr/local"
- test -d /usr/local/lib && cf_search="$cf_search /usr/local/lib"
- test -d /usr/local/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/lib/$cf_nculib_root"
- test -d /usr/local/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/lib/$cf_nculib_root/lib"
- test -d /usr/local/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/$cf_nculib_root/lib"
- test -d /usr/local/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/$cf_nculib_root/lib/$cf_nculib_root"
-}
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
-test "x/opt" != "x$prefix" && \
-test -d "/opt" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /opt"
- test -d /opt/lib && cf_search="$cf_search /opt/lib"
- test -d /opt/lib/$cf_nculib_root && cf_search="$cf_search /opt/lib/$cf_nculib_root"
- test -d /opt/lib/$cf_nculib_root/lib && cf_search="$cf_search /opt/lib/$cf_nculib_root/lib"
- test -d /opt/$cf_nculib_root/lib && cf_search="$cf_search /opt/$cf_nculib_root/lib"
- test -d /opt/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /opt/$cf_nculib_root/lib/$cf_nculib_root"
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/lib && cf_search="$cf_search $cf_subdir_prefix/lib"
+ test -d $cf_subdir_prefix/lib/$cf_nculib_root && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root"
+ test -d $cf_subdir_prefix/lib/$cf_nculib_root/lib && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root/lib"
+ test -d $cf_subdir_prefix/$cf_nculib_root/lib && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib"
+ test -d $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root"
}
-test "x$HOME" != "x$prefix" && \
-test -d "$HOME" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under $HOME"
- test -d $HOME/lib && cf_search="$cf_search $HOME/lib"
- test -d $HOME/lib/$cf_nculib_root && cf_search="$cf_search $HOME/lib/$cf_nculib_root"
- test -d $HOME/lib/$cf_nculib_root/lib && cf_search="$cf_search $HOME/lib/$cf_nculib_root/lib"
- test -d $HOME/$cf_nculib_root/lib && cf_search="$cf_search $HOME/$cf_nculib_root/lib"
- test -d $HOME/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $HOME/$cf_nculib_root/lib/$cf_nculib_root"
-}
+done
cf_search="$cf_library_path_list $cf_search"
for cf_libdir in $cf_search
do
- echo "$as_me:6725: checking for -l$cf_nculib_root in $cf_libdir" >&5
+ echo "$as_me:9249: checking for -l$cf_nculib_root in $cf_libdir" >&5
echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6
LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 6729 "configure"
+#line 9253 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
initscr()
;
@@ -6738,25 +9262,25 @@ initscr()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6741: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9265: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6744: \$? = $ac_status" >&5
+ echo "$as_me:9268: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6747: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9271: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6750: \$? = $ac_status" >&5
+ echo "$as_me:9274: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- echo "$as_me:6752: result: yes" >&5
+ echo "$as_me:9276: result: yes" >&5
echo "${ECHO_T}yes" >&6
eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
break
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-echo "$as_me:6759: result: no" >&5
+echo "$as_me:9283: result: no" >&5
echo "${ECHO_T}no" >&6
LIBS="$cf_save_LIBS"
fi
@@ -6771,7 +9295,7 @@ fi
eval 'cf_found_library=$cf_cv_have_lib_'$cf_nculib_root
if test $cf_found_library = no ; then
- { { echo "$as_me:6774: error: Cannot link $cf_nculib_root library" >&5
+ { { echo "$as_me:9298: error: Cannot link $cf_nculib_root library" >&5
echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -6779,7 +9303,7 @@ fi
fi
if test -n "$cf_ncurses_LIBS" ; then
- echo "$as_me:6782: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
+ echo "$as_me:9306: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6
cf_ncurses_SAVE="$LIBS"
for p in $cf_ncurses_LIBS ; do
@@ -6789,11 +9313,11 @@ echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS..
fi
done
cat >conftest.$ac_ext <<_ACEOF
-#line 6792 "configure"
+#line 9316 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
;
@@ -6801,23 +9325,23 @@ initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6804: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9328: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6807: \$? = $ac_status" >&5
+ echo "$as_me:9331: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6810: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9334: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6813: \$? = $ac_status" >&5
+ echo "$as_me:9337: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- echo "$as_me:6815: result: yes" >&5
+ echo "$as_me:9339: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-echo "$as_me:6820: result: no" >&5
+echo "$as_me:9344: result: no" >&5
echo "${ECHO_T}no" >&6
LIBS="$cf_ncurses_SAVE"
fi
@@ -6830,597 +9354,331 @@ cat >>confdefs.h <<EOF
#define $cf_nculib_ROOT 1
EOF
+ fi
+else
+ NCURSES_CONFIG=none
fi
;;
-ncursesw) #(vi
+(ncurses*)
-echo "$as_me:6838: checking for multibyte character support" >&5
-echo $ECHO_N "checking for multibyte character support... $ECHO_C" >&6
-if test "${cf_cv_utf8_lib+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+cf_ncuconfig_root=$cf_cv_screen
+cf_have_ncuconfig=no
- cf_save_LIBS="$LIBS"
- cat >conftest.$ac_ext <<_ACEOF
-#line 6846 "configure"
-#include "confdefs.h"
+if test "x${PKG_CONFIG:=none}" != xnone; then
+ echo "$as_me:9369: checking pkg-config for $cf_ncuconfig_root" >&5
+echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6
+ if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
+ echo "$as_me:9372: result: yes" >&5
+echo "${ECHO_T}yes" >&6
-#include <stdlib.h>
-int
-main ()
-{
-putwc(0,0);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6859: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6862: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6865: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6868: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_utf8_lib=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
+ echo "$as_me:9375: checking if the $cf_ncuconfig_root package files work" >&5
+echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6
+ cf_have_ncuconfig=unknown
-# If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these
-# will be set on completion of the AC_TRY_LINK below.
-cf_cv_header_path_utf8=
-cf_cv_library_path_utf8=
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_save_LIBS="$LIBS"
-echo "${as_me:-configure}:6880: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
-cf_save_LIBS="$LIBS"
+for cf_add_cflags in `$PKG_CONFIG --cflags $cf_ncuconfig_root`
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
-cat >conftest.$ac_ext <<_ACEOF
-#line 6885 "configure"
-#include "confdefs.h"
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
-#include <libutf8.h>
-int
-main ()
-{
-putwc(0,0);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6898: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6901: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6904: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6907: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+ if test $cf_fix_cppflags = yes ; then
- cf_cv_find_linkage_utf8=yes
- cf_cv_header_path_utf8=/usr/include
- cf_cv_library_path_utf8=/usr/lib
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
-LIBS="-lutf8 $cf_save_LIBS"
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
-cat >conftest.$ac_ext <<_ACEOF
-#line 6921 "configure"
-#include "confdefs.h"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
-#include <libutf8.h>
-int
-main ()
-{
-putwc(0,0);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6934: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:6937: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6940: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:6943: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
- cf_cv_find_linkage_utf8=yes
- cf_cv_header_path_utf8=/usr/include
- cf_cv_library_path_utf8=/usr/lib
- cf_cv_library_file_utf8="-lutf8"
+ ;;
+ esac
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
- cf_cv_find_linkage_utf8=no
- LIBS="$cf_save_LIBS"
+ ;;
+ esac
+ ;;
+ (*)
- test -n "$verbose" && echo " find linkage for utf8 library" 1>&6
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
-echo "${as_me:-configure}:6960: testing find linkage for utf8 library ..." 1>&5
+ ;;
+ esac
+ ;;
+(yes)
-echo "${as_me:-configure}:6962: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
- cf_save_CPPFLAGS="$CPPFLAGS"
- cf_test_CPPFLAGS="$CPPFLAGS"
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
-cf_search=
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
-# collect the current set of include-directories from compiler flags
-cf_header_path_list=""
-if test -n "${CFLAGS}${CPPFLAGS}" ; then
- for cf_header_path in $CPPFLAGS $CFLAGS
- do
- case $cf_header_path in #(vi
- -I*)
- cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
+if test -n "$cf_new_cflags" ; then
-test "x$cf_header_path" != "xNONE" && \
-test -d "$cf_header_path" && \
- {
- test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path"
- test -d $cf_header_path/include && cf_search="$cf_search $cf_header_path/include"
- test -d $cf_header_path/include/utf8 && cf_search="$cf_search $cf_header_path/include/utf8"
- test -d $cf_header_path/include/utf8/include && cf_search="$cf_search $cf_header_path/include/utf8/include"
- test -d $cf_header_path/utf8/include && cf_search="$cf_search $cf_header_path/utf8/include"
- test -d $cf_header_path/utf8/include/utf8 && cf_search="$cf_search $cf_header_path/utf8/include/utf8"
-}
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
- cf_header_path_list="$cf_header_path_list $cf_search"
- ;;
- esac
- done
fi
-# add the variations for the package we are looking for
-
-cf_search=
-
-test "x/usr" != "x$prefix" && \
-test -d "/usr" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /usr"
- test -d /usr/include && cf_search="$cf_search /usr/include"
- test -d /usr/include/utf8 && cf_search="$cf_search /usr/include/utf8"
- test -d /usr/include/utf8/include && cf_search="$cf_search /usr/include/utf8/include"
- test -d /usr/utf8/include && cf_search="$cf_search /usr/utf8/include"
- test -d /usr/utf8/include/utf8 && cf_search="$cf_search /usr/utf8/include/utf8"
-}
-
-test "x$prefix" != "xNONE" && \
-test -d "$prefix" && \
- {
- test -n "$verbose" && echo " ... testing for include-directories under $prefix"
- test -d $prefix/include && cf_search="$cf_search $prefix/include"
- test -d $prefix/include/utf8 && cf_search="$cf_search $prefix/include/utf8"
- test -d $prefix/include/utf8/include && cf_search="$cf_search $prefix/include/utf8/include"
- test -d $prefix/utf8/include && cf_search="$cf_search $prefix/utf8/include"
- test -d $prefix/utf8/include/utf8 && cf_search="$cf_search $prefix/utf8/include/utf8"
-}
-
-test "x/usr/local" != "x$prefix" && \
-test -d "/usr/local" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /usr/local"
- test -d /usr/local/include && cf_search="$cf_search /usr/local/include"
- test -d /usr/local/include/utf8 && cf_search="$cf_search /usr/local/include/utf8"
- test -d /usr/local/include/utf8/include && cf_search="$cf_search /usr/local/include/utf8/include"
- test -d /usr/local/utf8/include && cf_search="$cf_search /usr/local/utf8/include"
- test -d /usr/local/utf8/include/utf8 && cf_search="$cf_search /usr/local/utf8/include/utf8"
-}
-
-test "x/opt" != "x$prefix" && \
-test -d "/opt" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /opt"
- test -d /opt/include && cf_search="$cf_search /opt/include"
- test -d /opt/include/utf8 && cf_search="$cf_search /opt/include/utf8"
- test -d /opt/include/utf8/include && cf_search="$cf_search /opt/include/utf8/include"
- test -d /opt/utf8/include && cf_search="$cf_search /opt/utf8/include"
- test -d /opt/utf8/include/utf8 && cf_search="$cf_search /opt/utf8/include/utf8"
-}
+if test -n "$cf_new_cppflags" ; then
-test "x$HOME" != "x$prefix" && \
-test -d "$HOME" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under $HOME"
- test -d $HOME/include && cf_search="$cf_search $HOME/include"
- test -d $HOME/include/utf8 && cf_search="$cf_search $HOME/include/utf8"
- test -d $HOME/include/utf8/include && cf_search="$cf_search $HOME/include/utf8/include"
- test -d $HOME/utf8/include && cf_search="$cf_search $HOME/utf8/include"
- test -d $HOME/utf8/include/utf8 && cf_search="$cf_search $HOME/utf8/include/utf8"
-}
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
-test "$includedir" != NONE && \
-test "$includedir" != "/usr/include" && \
-test -d "$includedir" && {
- test -d $includedir && cf_search="$cf_search $includedir"
- test -d $includedir/utf8 && cf_search="$cf_search $includedir/utf8"
-}
+fi
-test "$oldincludedir" != NONE && \
-test "$oldincludedir" != "/usr/include" && \
-test -d "$oldincludedir" && {
- test -d $oldincludedir && cf_search="$cf_search $oldincludedir"
- test -d $oldincludedir/utf8 && cf_search="$cf_search $oldincludedir/utf8"
-}
+if test -n "$cf_new_extra_cppflags" ; then
-cf_search="$cf_search $cf_header_path_list"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
- for cf_cv_header_path_utf8 in $cf_search
- do
- if test -d $cf_cv_header_path_utf8 ; then
- test -n "$verbose" && echo " ... testing $cf_cv_header_path_utf8" 1>&6
+fi
-echo "${as_me:-configure}:7075: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in `$PKG_CONFIG --libs $cf_ncuconfig_root`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
- CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_utf8"
- cat >conftest.$ac_ext <<_ACEOF
-#line 7079 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 9497 "configure"
#include "confdefs.h"
-
-#include <libutf8.h>
+#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
-putwc(0,0);
+initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7092: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:9509: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:7095: \$? = $ac_status" >&5
+ echo "$as_me:9512: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7098: \"$ac_try\"") >&5
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:9515: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7101: \$? = $ac_status" >&5
+ echo "$as_me:9518: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
-
- test -n "$verbose" && echo " ... found utf8 headers in $cf_cv_header_path_utf8" 1>&6
-
-echo "${as_me:-configure}:7106: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5
-
- cf_cv_find_linkage_utf8=maybe
- cf_test_CPPFLAGS="$CPPFLAGS"
- break
+ if test "$cross_compiling" = yes; then
+ cf_have_ncuconfig=maybe
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-
- CPPFLAGS="$cf_save_CPPFLAGS"
-
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- fi
- done
-
- if test "$cf_cv_find_linkage_utf8" = maybe ; then
-
-echo "${as_me:-configure}:7124: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5
-
- cf_save_LIBS="$LIBS"
- cf_save_LDFLAGS="$LDFLAGS"
-
- if test "$cf_cv_find_linkage_utf8" != yes ; then
-
-cf_search=
-cf_library_path_list=""
-if test -n "${LDFLAGS}${LIBS}" ; then
- for cf_library_path in $LDFLAGS $LIBS
- do
- case $cf_library_path in #(vi
- -L*)
- cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
-
-test "x$cf_library_path" != "xNONE" && \
-test -d "$cf_library_path" && \
- {
- test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path"
- test -d $cf_library_path/lib && cf_search="$cf_search $cf_library_path/lib"
- test -d $cf_library_path/lib/utf8 && cf_search="$cf_search $cf_library_path/lib/utf8"
- test -d $cf_library_path/lib/utf8/lib && cf_search="$cf_search $cf_library_path/lib/utf8/lib"
- test -d $cf_library_path/utf8/lib && cf_search="$cf_search $cf_library_path/utf8/lib"
- test -d $cf_library_path/utf8/lib/utf8 && cf_search="$cf_search $cf_library_path/utf8/lib/utf8"
-}
-
- cf_library_path_list="$cf_library_path_list $cf_search"
- ;;
- esac
- done
-fi
-
-cf_search=
-
-test "x/usr" != "x$prefix" && \
-test -d "/usr" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /usr"
- test -d /usr/lib && cf_search="$cf_search /usr/lib"
- test -d /usr/lib/utf8 && cf_search="$cf_search /usr/lib/utf8"
- test -d /usr/lib/utf8/lib && cf_search="$cf_search /usr/lib/utf8/lib"
- test -d /usr/utf8/lib && cf_search="$cf_search /usr/utf8/lib"
- test -d /usr/utf8/lib/utf8 && cf_search="$cf_search /usr/utf8/lib/utf8"
-}
-
-test "x$prefix" != "xNONE" && \
-test -d "$prefix" && \
- {
- test -n "$verbose" && echo " ... testing for lib-directories under $prefix"
- test -d $prefix/lib && cf_search="$cf_search $prefix/lib"
- test -d $prefix/lib/utf8 && cf_search="$cf_search $prefix/lib/utf8"
- test -d $prefix/lib/utf8/lib && cf_search="$cf_search $prefix/lib/utf8/lib"
- test -d $prefix/utf8/lib && cf_search="$cf_search $prefix/utf8/lib"
- test -d $prefix/utf8/lib/utf8 && cf_search="$cf_search $prefix/utf8/lib/utf8"
-}
-
-test "x/usr/local" != "x$prefix" && \
-test -d "/usr/local" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /usr/local"
- test -d /usr/local/lib && cf_search="$cf_search /usr/local/lib"
- test -d /usr/local/lib/utf8 && cf_search="$cf_search /usr/local/lib/utf8"
- test -d /usr/local/lib/utf8/lib && cf_search="$cf_search /usr/local/lib/utf8/lib"
- test -d /usr/local/utf8/lib && cf_search="$cf_search /usr/local/utf8/lib"
- test -d /usr/local/utf8/lib/utf8 && cf_search="$cf_search /usr/local/utf8/lib/utf8"
-}
-
-test "x/opt" != "x$prefix" && \
-test -d "/opt" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /opt"
- test -d /opt/lib && cf_search="$cf_search /opt/lib"
- test -d /opt/lib/utf8 && cf_search="$cf_search /opt/lib/utf8"
- test -d /opt/lib/utf8/lib && cf_search="$cf_search /opt/lib/utf8/lib"
- test -d /opt/utf8/lib && cf_search="$cf_search /opt/utf8/lib"
- test -d /opt/utf8/lib/utf8 && cf_search="$cf_search /opt/utf8/lib/utf8"
-}
-
-test "x$HOME" != "x$prefix" && \
-test -d "$HOME" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under $HOME"
- test -d $HOME/lib && cf_search="$cf_search $HOME/lib"
- test -d $HOME/lib/utf8 && cf_search="$cf_search $HOME/lib/utf8"
- test -d $HOME/lib/utf8/lib && cf_search="$cf_search $HOME/lib/utf8/lib"
- test -d $HOME/utf8/lib && cf_search="$cf_search $HOME/utf8/lib"
- test -d $HOME/utf8/lib/utf8 && cf_search="$cf_search $HOME/utf8/lib/utf8"
-}
-
-cf_search="$cf_library_path_list $cf_search"
-
- for cf_cv_library_path_utf8 in $cf_search
- do
- if test -d $cf_cv_library_path_utf8 ; then
- test -n "$verbose" && echo " ... testing $cf_cv_library_path_utf8" 1>&6
-
-echo "${as_me:-configure}:7221: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5
-
- CPPFLAGS="$cf_test_CPPFLAGS"
- LIBS="-lutf8 $cf_save_LIBS"
- LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_utf8"
- cat >conftest.$ac_ext <<_ACEOF
-#line 7227 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 9524 "configure"
#include "confdefs.h"
-
-#include <libutf8.h>
-int
-main ()
-{
-putwc(0,0);
- ;
- return 0;
-}
+#include <${cf_cv_ncurses_header:-curses.h}>
+ int main(void)
+ { char *xx = curses_version(); return (xx == 0); }
_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7240: \"$ac_link\"") >&5
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:9531: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:7243: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7246: \"$ac_try\"") >&5
+ echo "$as_me:9534: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:9536: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7249: \$? = $ac_status" >&5
+ echo "$as_me:9539: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
-
- test -n "$verbose" && echo " ... found utf8 library in $cf_cv_library_path_utf8" 1>&6
-
-echo "${as_me:-configure}:7254: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5
-
- cf_cv_find_linkage_utf8=yes
- cf_cv_library_file_utf8="-lutf8"
- break
+ cf_have_ncuconfig=yes
else
- echo "$as_me: failed program was:" >&5
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-
- CPPFLAGS="$cf_save_CPPFLAGS"
- LIBS="$cf_save_LIBS"
- LDFLAGS="$cf_save_LDFLAGS"
-
+cf_have_ncuconfig=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- fi
- done
- CPPFLAGS="$cf_save_CPPFLAGS"
- LDFLAGS="$cf_save_LDFLAGS"
- fi
-
- else
- cf_cv_find_linkage_utf8=no
- fi
-
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-LIBS="$cf_save_LIBS"
-
-if test "$cf_cv_find_linkage_utf8" = yes ; then
-cf_cv_utf8_lib=add-on
else
-cf_cv_utf8_lib=no
-fi
-
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_ncuconfig=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:7296: result: $cf_cv_utf8_lib" >&5
-echo "${ECHO_T}$cf_cv_utf8_lib" >&6
-
-# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
-# ncurses/ncursesw:
-if test "$cf_cv_utf8_lib" = "add-on" ; then
+ echo "$as_me:9556: result: $cf_have_ncuconfig" >&5
+echo "${ECHO_T}$cf_have_ncuconfig" >&6
+ test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
+ if test "$cf_have_ncuconfig" != "yes"
+ then
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ NCURSES_CONFIG_PKG=none
+ else
cat >>confdefs.h <<\EOF
-#define HAVE_LIBUTF8_H 1
+#define NCURSES 1
EOF
-if test -n "$cf_cv_header_path_utf8" ; then
- for cf_add_incdir in $cf_cv_header_path_utf8
- do
- while test $cf_add_incdir != /usr/include
- do
- if test -d $cf_add_incdir
- then
- cf_have_incdir=no
- if test -n "$CFLAGS$CPPFLAGS" ; then
- # a loop is needed to ensure we can add subdirs of existing dirs
- for cf_test_incdir in $CFLAGS $CPPFLAGS ; do
- if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then
- cf_have_incdir=yes; break
- fi
- done
- fi
+ NCURSES_CONFIG_PKG=$cf_ncuconfig_root
- if test "$cf_have_incdir" = no ; then
- if test "$cf_add_incdir" = /usr/local/include ; then
- if test "$GCC" = yes
- then
- cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
- cat >conftest.$ac_ext <<_ACEOF
-#line 7331 "configure"
+echo "$as_me:9572: checking for terminfo header" >&5
+echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
+if test "${cf_cv_term_header+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+case ${cf_cv_ncurses_header} in
+(*/ncurses.h|*/ncursesw.h)
+ cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'`
+ ;;
+(*)
+ cf_term_header=term.h
+ ;;
+esac
+
+for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
+do
+cat >conftest.$ac_ext <<_ACEOF
+#line 9590 "configure"
#include "confdefs.h"
#include <stdio.h>
+#include <${cf_cv_ncurses_header:-curses.h}>
+#include <$cf_test>
+
int
-main ()
+main (void)
{
-printf("Hello")
+int x = auto_left_margin
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7343: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9605: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7346: \$? = $ac_status" >&5
+ echo "$as_me:9608: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7349: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9611: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7352: \$? = $ac_status" >&5
+ echo "$as_me:9614: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- :
+
+ cf_cv_term_header="$cf_test"
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-cf_have_incdir=yes
+
+ cf_cv_term_header=unknown
+
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- CPPFLAGS=$cf_save_CPPFLAGS
- fi
- fi
- fi
+ test "$cf_cv_term_header" != unknown && break
+done
- if test "$cf_have_incdir" = no ; then
- test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
+fi
+echo "$as_me:9630: result: $cf_cv_term_header" >&5
+echo "${ECHO_T}$cf_cv_term_header" >&6
-echo "${as_me:-configure}:7369: testing adding $cf_add_incdir to include-path ..." 1>&5
+# Set definitions to allow ifdef'ing to accommodate subdirectories
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+case $cf_cv_term_header in
+(*term.h)
- cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'`
- test "$cf_top_incdir" = "$cf_add_incdir" && break
- cf_add_incdir="$cf_top_incdir"
- else
- break
- fi
- fi
- done
- done
-fi
+cat >>confdefs.h <<\EOF
+#define HAVE_TERM_H 1
+EOF
-if test -n "$cf_cv_library_path_utf8" ; then
- for cf_add_libdir in $cf_cv_library_path_utf8
- do
- if test $cf_add_libdir = /usr/lib ; then
- :
- elif test -d $cf_add_libdir
- then
- cf_have_libdir=no
- if test -n "$LDFLAGS$LIBS" ; then
- # a loop is needed to ensure we can add subdirs of existing dirs
- for cf_test_libdir in $LDFLAGS $LIBS ; do
- if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
- cf_have_libdir=yes; break
- fi
- done
- fi
- if test "$cf_have_libdir" = no ; then
- test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
+ ;;
+esac
-echo "${as_me:-configure}:7403: testing adding $cf_add_libdir to library-path ..." 1>&5
+case $cf_cv_term_header in
+(ncurses/term.h)
- LDFLAGS="-L$cf_add_libdir $LDFLAGS"
- fi
- fi
- done
-fi
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSES_TERM_H 1
+EOF
- LIBS="$cf_cv_library_file_utf8 $LIBS"
-fi
+ ;;
+(ncursesw/term.h)
+
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSESW_TERM_H 1
+EOF
-cf_ncuconfig_root=ncursesw
+ ;;
+esac
+
+ fi
+
+ else
+ echo "$as_me:9665: result: no" >&5
+echo "${ECHO_T}no" >&6
+ NCURSES_CONFIG_PKG=none
+ fi
+else
+ NCURSES_CONFIG_PKG=none
+fi
-echo "Looking for ${cf_ncuconfig_root}-config"
+if test "x$cf_have_ncuconfig" = "xno"; then
+ cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}"
if test -n "$ac_tool_prefix"; then
- for ac_prog in ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
+ for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:7423: checking for $ac_word" >&5
+echo "$as_me:9681: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7435,7 +9693,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_NCURSES_CONFIG="$ac_tool_prefix$ac_prog"
-echo "$as_me:7438: found $ac_dir/$ac_word" >&5
+echo "$as_me:9696: found $ac_dir/$ac_word" >&5
break
done
@@ -7443,10 +9701,10 @@ fi
fi
NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG
if test -n "$NCURSES_CONFIG"; then
- echo "$as_me:7446: result: $NCURSES_CONFIG" >&5
+ echo "$as_me:9704: result: $NCURSES_CONFIG" >&5
echo "${ECHO_T}$NCURSES_CONFIG" >&6
else
- echo "$as_me:7449: result: no" >&5
+ echo "$as_me:9707: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -7455,11 +9713,11 @@ fi
fi
if test -z "$NCURSES_CONFIG"; then
ac_ct_NCURSES_CONFIG=$NCURSES_CONFIG
- for ac_prog in ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
+ for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config
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 "$as_me:7462: checking for $ac_word" >&5
+echo "$as_me:9720: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7474,7 +9732,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_prog"
-echo "$as_me:7477: found $ac_dir/$ac_word" >&5
+echo "$as_me:9735: found $ac_dir/$ac_word" >&5
break
done
@@ -7482,10 +9740,10 @@ fi
fi
ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG
if test -n "$ac_ct_NCURSES_CONFIG"; then
- echo "$as_me:7485: result: $ac_ct_NCURSES_CONFIG" >&5
+ echo "$as_me:9743: result: $ac_ct_NCURSES_CONFIG" >&5
echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6
else
- echo "$as_me:7488: result: no" >&5
+ echo "$as_me:9746: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -7496,32 +9754,141 @@ test -n "$ac_ct_NCURSES_CONFIG" || ac_ct_NCURSES_CONFIG="none"
NCURSES_CONFIG=$ac_ct_NCURSES_CONFIG
fi
-if test "$NCURSES_CONFIG" != none ; then
+ if test "$NCURSES_CONFIG" != none ; then
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in `$NCURSES_CONFIG --cflags`
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
-CPPFLAGS="$CPPFLAGS `$NCURSES_CONFIG --cflags`"
-LIBS="`$NCURSES_CONFIG --libs` $LIBS"
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
-# even with config script, some packages use no-override for curses.h
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
-echo "$as_me:7506: checking if we have identified curses headers" >&5
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in `$NCURSES_CONFIG --libs`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ # even with config script, some packages use no-override for curses.h
+
+echo "$as_me:9875: checking if we have identified curses headers" >&5
echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6
if test "${cf_cv_ncurses_header+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cf_cv_ncurses_header=none
-for cf_header in \
- ncursesw/ncurses.h \
- ncursesw/curses.h \
- ncurses.h \
- curses.h
+for cf_header in \
+ ncurses.h $cf_cv_screen/ncurses.h \
+ curses.h $cf_cv_screen/curses.h
do
cat >conftest.$ac_ext <<_ACEOF
-#line 7520 "configure"
+#line 9887 "configure"
#include "confdefs.h"
#include <${cf_header}>
int
-main ()
+main (void)
{
initscr(); tgoto("?", 0,0)
;
@@ -7529,16 +9896,16 @@ initscr(); tgoto("?", 0,0)
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7532: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9899: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7535: \$? = $ac_status" >&5
+ echo "$as_me:9902: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7538: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9905: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7541: \$? = $ac_status" >&5
+ echo "$as_me:9908: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_header=$cf_header; break
else
@@ -7549,11 +9916,11 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:7552: result: $cf_cv_ncurses_header" >&5
+echo "$as_me:9919: result: $cf_cv_ncurses_header" >&5
echo "${ECHO_T}$cf_cv_ncurses_header" >&6
if test "$cf_cv_ncurses_header" = none ; then
- { { echo "$as_me:7556: error: No curses header-files found" >&5
+ { { echo "$as_me:9923: error: No curses header-files found" >&5
echo "$as_me: error: No curses header-files found" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -7563,23 +9930,23 @@ fi
for ac_header in $cf_cv_ncurses_header
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:7566: checking for $ac_header" >&5
+echo "$as_me:9933: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 7572 "configure"
+#line 9939 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:7576: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:9943: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:7582: \$? = $ac_status" >&5
+ echo "$as_me:9949: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -7598,7 +9965,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:7601: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:9968: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -7614,15 +9981,15 @@ EOF
cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-cat >>confdefs.h <<EOF
+ cat >>confdefs.h <<EOF
#define $cf_nculib_ROOT 1
EOF
-cf_cv_ncurses_version=`$NCURSES_CONFIG --version`
+ cf_cv_ncurses_version=`$NCURSES_CONFIG --version`
-else
+ else
-cf_ncuhdr_root=ncursesw
+cf_ncuhdr_root=$cf_cv_screen
test -n "$cf_cv_curses_dir" && \
test "$cf_cv_curses_dir" != "no" && { \
@@ -7649,13 +10016,16 @@ if test -n "$cf_cv_curses_dir/include/$cf_ncuhdr_root" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 7654 "configure"
+#line 10024 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -7663,16 +10033,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7666: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10036: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7669: \$? = $ac_status" >&5
+ echo "$as_me:10039: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7672: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10042: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7675: \$? = $ac_status" >&5
+ echo "$as_me:10045: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -7689,7 +10059,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:7692: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:10062: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -7699,6 +10069,8 @@ echo "${as_me:-configure}:7692: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
@@ -7706,7 +10078,7 @@ fi
}
-echo "$as_me:7709: checking for $cf_ncuhdr_root header in include-path" >&5
+echo "$as_me:10081: checking for $cf_ncuhdr_root header in include-path" >&5
echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6
if test "${cf_cv_ncurses_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7718,24 +10090,16 @@ else
do
cat >conftest.$ac_ext <<_ACEOF
-#line 7721 "configure"
+#line 10093 "configure"
#include "confdefs.h"
-#define _XOPEN_SOURCE_EXTENDED
-#undef HAVE_LIBUTF8_H /* in case we used CF_UTF8_LIB */
-#define HAVE_LIBUTF8_H /* to force ncurses' header file to use cchar_t */
-
#include <$cf_header>
int
-main ()
+main (void)
{
#ifdef NCURSES_VERSION
-#ifndef WACS_BSSB
- make an error
-#endif
-
printf("%s\n", NCURSES_VERSION);
#else
#ifdef __NCURSES_H
@@ -7750,16 +10114,16 @@ printf("old\n");
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7753: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10117: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7756: \$? = $ac_status" >&5
+ echo "$as_me:10120: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7759: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10123: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7762: \$? = $ac_status" >&5
+ echo "$as_me:10126: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_h=$cf_header
@@ -7774,14 +10138,14 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:7777: result: $cf_cv_ncurses_h" >&5
+echo "$as_me:10141: result: $cf_cv_ncurses_h" >&5
echo "${ECHO_T}$cf_cv_ncurses_h" >&6
if test "$cf_cv_ncurses_h" != no ; then
cf_cv_ncurses_header=$cf_cv_ncurses_h
else
-echo "$as_me:7784: checking for $cf_ncuhdr_root include-path" >&5
+echo "$as_me:10148: checking for $cf_ncuhdr_root include-path" >&5
echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6
if test "${cf_cv_ncurses_h2+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7796,8 +10160,8 @@ cf_header_path_list=""
if test -n "${CFLAGS}${CPPFLAGS}" ; then
for cf_header_path in $CPPFLAGS $CFLAGS
do
- case $cf_header_path in #(vi
- -I*)
+ case $cf_header_path in
+ (-I*)
cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
test "x$cf_header_path" != "xNONE" && \
@@ -7821,17 +10185,6 @@ fi
cf_search=
-test "x/usr" != "x$prefix" && \
-test -d "/usr" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /usr"
- test -d /usr/include && cf_search="$cf_search /usr/include"
- test -d /usr/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/include/$cf_ncuhdr_root"
- test -d /usr/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/include/$cf_ncuhdr_root/include"
- test -d /usr/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/$cf_ncuhdr_root/include"
- test -d /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
-}
-
test "x$prefix" != "xNONE" && \
test -d "$prefix" && \
{
@@ -7843,38 +10196,27 @@ test -d "$prefix" && \
test -d $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
}
-test "x/usr/local" != "x$prefix" && \
-test -d "/usr/local" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /usr/local"
- test -d /usr/local/include && cf_search="$cf_search /usr/local/include"
- test -d /usr/local/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root"
- test -d /usr/local/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root/include"
- test -d /usr/local/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include"
- test -d /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
-}
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
-test "x/opt" != "x$prefix" && \
-test -d "/opt" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under /opt"
- test -d /opt/include && cf_search="$cf_search /opt/include"
- test -d /opt/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/include/$cf_ncuhdr_root"
- test -d /opt/include/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/include/$cf_ncuhdr_root/include"
- test -d /opt/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/$cf_ncuhdr_root/include"
- test -d /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/include && cf_search="$cf_search $cf_subdir_prefix/include"
+ test -d $cf_subdir_prefix/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root"
+ test -d $cf_subdir_prefix/include/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root/include"
+ test -d $cf_subdir_prefix/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include"
+ test -d $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
}
-test "x$HOME" != "x$prefix" && \
-test -d "$HOME" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for include-directories under $HOME"
- test -d $HOME/include && cf_search="$cf_search $HOME/include"
- test -d $HOME/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root"
- test -d $HOME/include/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root/include"
- test -d $HOME/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include"
- test -d $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
-}
+done
test "$includedir" != NONE && \
test "$includedir" != "/usr/include" && \
@@ -7919,13 +10261,16 @@ if test -n "$cf_incdir" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 7924 "configure"
+#line 10269 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -7933,16 +10278,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7936: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10281: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7939: \$? = $ac_status" >&5
+ echo "$as_me:10284: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7942: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10287: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7945: \$? = $ac_status" >&5
+ echo "$as_me:10290: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -7959,7 +10304,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:7962: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:10307: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -7969,6 +10314,8 @@ echo "${as_me:-configure}:7962: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
@@ -7980,12 +10327,12 @@ fi
do
cat >conftest.$ac_ext <<_ACEOF
-#line 7983 "configure"
+#line 10330 "configure"
#include "confdefs.h"
#include <$cf_header>
int
-main ()
+main (void)
{
#ifdef NCURSES_VERSION
@@ -8004,16 +10351,16 @@ printf("old\n");
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8007: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10354: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8010: \$? = $ac_status" >&5
+ echo "$as_me:10357: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8013: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10360: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8016: \$? = $ac_status" >&5
+ echo "$as_me:10363: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_h2=$cf_header
@@ -8034,12 +10381,12 @@ rm -f conftest.$ac_objext conftest.$ac_ext
CPPFLAGS="$cf_save2_CPPFLAGS"
test "$cf_cv_ncurses_h2" != no && break
done
- test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:8037: error: not found" >&5
+ test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:10384: error: not found" >&5
echo "$as_me: error: not found" >&2;}
{ (exit 1); exit 1; }; }
fi
-echo "$as_me:8042: result: $cf_cv_ncurses_h2" >&5
+echo "$as_me:10389: result: $cf_cv_ncurses_h2" >&5
echo "${ECHO_T}$cf_cv_ncurses_h2" >&6
cf_1st_incdir=`echo $cf_cv_ncurses_h2 | sed -e 's%/[^/]*$%%'`
@@ -8070,13 +10417,16 @@ if test -n "$cf_1st_incdir" ; then
if test "$GCC" = yes
then
cf_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 8075 "configure"
+#line 10425 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello")
;
@@ -8084,16 +10434,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8087: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10437: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8090: \$? = $ac_status" >&5
+ echo "$as_me:10440: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8093: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10443: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8096: \$? = $ac_status" >&5
+ echo "$as_me:10446: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -8110,7 +10460,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:8113: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:10463: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -8120,6 +10470,8 @@ echo "${as_me:-configure}:8113: testing adding $cf_add_incdir to include-path ..
else
break
fi
+ else
+ break
fi
done
done
@@ -8129,8 +10481,8 @@ fi
# Set definitions to allow ifdef'ing for ncurses.h
-case $cf_cv_ncurses_header in # (vi
-*ncurses.h)
+case $cf_cv_ncurses_header in
+(*ncurses.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSES_H 1
@@ -8139,15 +10491,15 @@ EOF
;;
esac
-case $cf_cv_ncurses_header in # (vi
-ncurses/curses.h|ncurses/ncurses.h)
+case $cf_cv_ncurses_header in
+(ncurses/curses.h|ncurses/ncurses.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSES_NCURSES_H 1
EOF
;;
-ncursesw/curses.h|ncursesw/ncurses.h)
+(ncursesw/curses.h|ncursesw/ncurses.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSESW_NCURSES_H 1
@@ -8156,17 +10508,17 @@ EOF
;;
esac
-echo "$as_me:8159: checking for terminfo header" >&5
+echo "$as_me:10511: checking for terminfo header" >&5
echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
if test "${cf_cv_term_header+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-case ${cf_cv_ncurses_header} in #(vi
-*/ncurses.h|*/ncursesw.h) #(vi
+case ${cf_cv_ncurses_header} in
+(*/ncurses.h|*/ncursesw.h)
cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'`
;;
-*)
+(*)
cf_term_header=term.h
;;
esac
@@ -8174,14 +10526,14 @@ esac
for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
do
cat >conftest.$ac_ext <<_ACEOF
-#line 8177 "configure"
+#line 10529 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <${cf_cv_ncurses_header:-curses.h}>
#include <$cf_test>
int
-main ()
+main (void)
{
int x = auto_left_margin
;
@@ -8189,16 +10541,16 @@ int x = auto_left_margin
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8192: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10544: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8195: \$? = $ac_status" >&5
+ echo "$as_me:10547: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8198: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10550: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8201: \$? = $ac_status" >&5
+ echo "$as_me:10553: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_term_header="$cf_test"
@@ -8214,13 +10566,13 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:8217: result: $cf_cv_term_header" >&5
+echo "$as_me:10569: result: $cf_cv_term_header" >&5
echo "${ECHO_T}$cf_cv_term_header" >&6
# Set definitions to allow ifdef'ing to accommodate subdirectories
-case $cf_cv_term_header in # (vi
-*term.h)
+case $cf_cv_term_header in
+(*term.h)
cat >>confdefs.h <<\EOF
#define HAVE_TERM_H 1
@@ -8229,15 +10581,15 @@ EOF
;;
esac
-case $cf_cv_term_header in # (vi
-ncurses/term.h) #(vi
+case $cf_cv_term_header in
+(ncurses/term.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSES_TERM_H 1
EOF
;;
-ncursesw/term.h)
+(ncursesw/term.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSESW_TERM_H 1
@@ -8252,7 +10604,7 @@ cat >>confdefs.h <<\EOF
#define NCURSES 1
EOF
-echo "$as_me:8255: checking for ncurses version" >&5
+echo "$as_me:10607: checking for ncurses version" >&5
echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6
if test "${cf_cv_ncurses_version+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8278,10 +10630,10 @@ Autoconf "old"
#endif
EOF
cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
- { (eval echo "$as_me:8281: \"$cf_try\"") >&5
+ { (eval echo "$as_me:10633: \"$cf_try\"") >&5
(eval $cf_try) 2>&5
ac_status=$?
- echo "$as_me:8284: \$? = $ac_status" >&5
+ echo "$as_me:10636: \$? = $ac_status" >&5
(exit $ac_status); }
if test -f conftest.out ; then
cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'`
@@ -8291,12 +10643,12 @@ EOF
else
cat >conftest.$ac_ext <<_ACEOF
-#line 8294 "configure"
+#line 10646 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
#include <stdio.h>
-int main()
+int main(void)
{
FILE *fp = fopen("$cf_tempfile", "w");
#ifdef NCURSES_VERSION
@@ -8316,15 +10668,15 @@ int main()
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:8319: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10671: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8322: \$? = $ac_status" >&5
+ echo "$as_me:10674: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:8324: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10676: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8327: \$? = $ac_status" >&5
+ echo "$as_me:10679: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_version=`cat $cf_tempfile`
@@ -8338,20 +10690,20 @@ fi
rm -f $cf_tempfile
fi
-echo "$as_me:8341: result: $cf_cv_ncurses_version" >&5
+echo "$as_me:10693: result: $cf_cv_ncurses_version" >&5
echo "${ECHO_T}$cf_cv_ncurses_version" >&6
test "$cf_cv_ncurses_version" = no ||
cat >>confdefs.h <<\EOF
#define NCURSES 1
EOF
-cf_nculib_root=ncursesw
+cf_nculib_root=$cf_cv_screen
# This works, except for the special case where we find gpm, but
# ncurses is in a nonstandard location via $LIBS, and we really want
# to link gpm.
cf_ncurses_LIBS=""
cf_ncurses_SAVE="$LIBS"
-echo "$as_me:8354: checking for Gpm_Open in -lgpm" >&5
+echo "$as_me:10706: checking for Gpm_Open in -lgpm" >&5
echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6
if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8359,7 +10711,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgpm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 8362 "configure"
+#line 10714 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -8370,7 +10722,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char Gpm_Open ();
int
-main ()
+main (void)
{
Gpm_Open ();
;
@@ -8378,16 +10730,16 @@ Gpm_Open ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8381: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10733: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8384: \$? = $ac_status" >&5
+ echo "$as_me:10736: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8387: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10739: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8390: \$? = $ac_status" >&5
+ echo "$as_me:10742: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_gpm_Gpm_Open=yes
else
@@ -8398,10 +10750,10 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:8401: result: $ac_cv_lib_gpm_Gpm_Open" >&5
+echo "$as_me:10753: result: $ac_cv_lib_gpm_Gpm_Open" >&5
echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6
if test $ac_cv_lib_gpm_Gpm_Open = yes; then
- echo "$as_me:8404: checking for initscr in -lgpm" >&5
+ echo "$as_me:10756: checking for initscr in -lgpm" >&5
echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6
if test "${ac_cv_lib_gpm_initscr+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8409,7 +10761,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgpm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 8412 "configure"
+#line 10764 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -8420,7 +10772,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char initscr ();
int
-main ()
+main (void)
{
initscr ();
;
@@ -8428,16 +10780,16 @@ initscr ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8431: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10783: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8434: \$? = $ac_status" >&5
+ echo "$as_me:10786: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8437: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10789: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8440: \$? = $ac_status" >&5
+ echo "$as_me:10792: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_gpm_initscr=yes
else
@@ -8448,7 +10800,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:8451: result: $ac_cv_lib_gpm_initscr" >&5
+echo "$as_me:10803: result: $ac_cv_lib_gpm_initscr" >&5
echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6
if test $ac_cv_lib_gpm_initscr = yes; then
LIBS="$cf_ncurses_SAVE"
@@ -8458,12 +10810,12 @@ fi
fi
-case $host_os in #(vi
-freebsd*)
+case $host_os in
+(freebsd*)
# This is only necessary if you are linking against an obsolete
# version of ncurses (but it should do no harm, since it's static).
if test "$cf_nculib_root" = ncurses ; then
- echo "$as_me:8466: checking for tgoto in -lmytinfo" >&5
+ echo "$as_me:10818: checking for tgoto in -lmytinfo" >&5
echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6
if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8471,7 +10823,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lmytinfo $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 8474 "configure"
+#line 10826 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -8482,7 +10834,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char tgoto ();
int
-main ()
+main (void)
{
tgoto ();
;
@@ -8490,16 +10842,16 @@ tgoto ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8493: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10845: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8496: \$? = $ac_status" >&5
+ echo "$as_me:10848: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8499: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10851: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8502: \$? = $ac_status" >&5
+ echo "$as_me:10854: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_mytinfo_tgoto=yes
else
@@ -8510,7 +10862,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:8513: result: $ac_cv_lib_mytinfo_tgoto" >&5
+echo "$as_me:10865: result: $ac_cv_lib_mytinfo_tgoto" >&5
echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6
if test $ac_cv_lib_mytinfo_tgoto = yes; then
cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"
@@ -8520,62 +10872,92 @@ fi
;;
esac
-LIBS="$cf_ncurses_LIBS $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_ncurses_LIBS; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" )
then
- LIBS="-l$cf_nculib_root $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -l$cf_nculib_root; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
else
eval 'cf_cv_have_lib_'$cf_nculib_root'=no'
cf_libdir=""
- echo "$as_me:8532: checking for initscr" >&5
+ echo "$as_me:10914: checking for initscr" >&5
echo $ECHO_N "checking for initscr... $ECHO_C" >&6
if test "${ac_cv_func_initscr+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 8538 "configure"
+#line 10920 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char initscr (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define initscr autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef initscr
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char initscr ();
-char (*f) ();
+char initscr (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_initscr) || defined (__stub___initscr)
-choke me
-#else
-f = initscr; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for initscr
#endif
+ return initscr ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8569: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10951: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8572: \$? = $ac_status" >&5
+ echo "$as_me:10954: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8575: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10957: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8578: \$? = $ac_status" >&5
+ echo "$as_me:10960: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_initscr=yes
else
@@ -8585,22 +10967,22 @@ ac_cv_func_initscr=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:8588: result: $ac_cv_func_initscr" >&5
+echo "$as_me:10970: result: $ac_cv_func_initscr" >&5
echo "${ECHO_T}$ac_cv_func_initscr" >&6
if test $ac_cv_func_initscr = yes; then
eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
else
cf_save_LIBS="$LIBS"
- echo "$as_me:8595: checking for initscr in -l$cf_nculib_root" >&5
+ echo "$as_me:10977: checking for initscr in -l$cf_nculib_root" >&5
echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6
LIBS="-l$cf_nculib_root $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 8599 "configure"
+#line 10981 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
initscr()
;
@@ -8608,25 +10990,25 @@ initscr()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8611: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10993: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8614: \$? = $ac_status" >&5
+ echo "$as_me:10996: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8617: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10999: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8620: \$? = $ac_status" >&5
+ echo "$as_me:11002: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- echo "$as_me:8622: result: yes" >&5
+ echo "$as_me:11004: result: yes" >&5
echo "${ECHO_T}yes" >&6
eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-echo "$as_me:8629: result: no" >&5
+echo "$as_me:11011: result: no" >&5
echo "${ECHO_T}no" >&6
cf_search=
@@ -8634,8 +11016,8 @@ cf_library_path_list=""
if test -n "${LDFLAGS}${LIBS}" ; then
for cf_library_path in $LDFLAGS $LIBS
do
- case $cf_library_path in #(vi
- -L*)
+ case $cf_library_path in
+ (-L*)
cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
test "x$cf_library_path" != "xNONE" && \
@@ -8657,17 +11039,6 @@ fi
cf_search=
-test "x/usr" != "x$prefix" && \
-test -d "/usr" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /usr"
- test -d /usr/lib && cf_search="$cf_search /usr/lib"
- test -d /usr/lib/$cf_nculib_root && cf_search="$cf_search /usr/lib/$cf_nculib_root"
- test -d /usr/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/lib/$cf_nculib_root/lib"
- test -d /usr/$cf_nculib_root/lib && cf_search="$cf_search /usr/$cf_nculib_root/lib"
- test -d /usr/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/$cf_nculib_root/lib/$cf_nculib_root"
-}
-
test "x$prefix" != "xNONE" && \
test -d "$prefix" && \
{
@@ -8679,52 +11050,41 @@ test -d "$prefix" && \
test -d $prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root"
}
-test "x/usr/local" != "x$prefix" && \
-test -d "/usr/local" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /usr/local"
- test -d /usr/local/lib && cf_search="$cf_search /usr/local/lib"
- test -d /usr/local/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/lib/$cf_nculib_root"
- test -d /usr/local/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/lib/$cf_nculib_root/lib"
- test -d /usr/local/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/$cf_nculib_root/lib"
- test -d /usr/local/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/$cf_nculib_root/lib/$cf_nculib_root"
-}
+for cf_subdir_prefix in \
+ /usr \
+ /usr/local \
+ /usr/pkg \
+ /opt \
+ /opt/local \
+ $HOME
+do
-test "x/opt" != "x$prefix" && \
-test -d "/opt" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under /opt"
- test -d /opt/lib && cf_search="$cf_search /opt/lib"
- test -d /opt/lib/$cf_nculib_root && cf_search="$cf_search /opt/lib/$cf_nculib_root"
- test -d /opt/lib/$cf_nculib_root/lib && cf_search="$cf_search /opt/lib/$cf_nculib_root/lib"
- test -d /opt/$cf_nculib_root/lib && cf_search="$cf_search /opt/$cf_nculib_root/lib"
- test -d /opt/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /opt/$cf_nculib_root/lib/$cf_nculib_root"
+test "x$cf_subdir_prefix" != "x$prefix" && \
+test -d "$cf_subdir_prefix" && \
+(test -z "$prefix" || test x$prefix = xNONE || test "x$cf_subdir_prefix" != "x$prefix") && {
+ test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix"
+ test -d $cf_subdir_prefix/lib && cf_search="$cf_search $cf_subdir_prefix/lib"
+ test -d $cf_subdir_prefix/lib/$cf_nculib_root && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root"
+ test -d $cf_subdir_prefix/lib/$cf_nculib_root/lib && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root/lib"
+ test -d $cf_subdir_prefix/$cf_nculib_root/lib && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib"
+ test -d $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root"
}
-test "x$HOME" != "x$prefix" && \
-test -d "$HOME" && \
-(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
- test -n "$verbose" && echo " ... testing for lib-directories under $HOME"
- test -d $HOME/lib && cf_search="$cf_search $HOME/lib"
- test -d $HOME/lib/$cf_nculib_root && cf_search="$cf_search $HOME/lib/$cf_nculib_root"
- test -d $HOME/lib/$cf_nculib_root/lib && cf_search="$cf_search $HOME/lib/$cf_nculib_root/lib"
- test -d $HOME/$cf_nculib_root/lib && cf_search="$cf_search $HOME/$cf_nculib_root/lib"
- test -d $HOME/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $HOME/$cf_nculib_root/lib/$cf_nculib_root"
-}
+done
cf_search="$cf_library_path_list $cf_search"
for cf_libdir in $cf_search
do
- echo "$as_me:8719: checking for -l$cf_nculib_root in $cf_libdir" >&5
+ echo "$as_me:11079: checking for -l$cf_nculib_root in $cf_libdir" >&5
echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6
LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 8723 "configure"
+#line 11083 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
initscr()
;
@@ -8732,25 +11092,25 @@ initscr()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8735: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11095: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8738: \$? = $ac_status" >&5
+ echo "$as_me:11098: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8741: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11101: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8744: \$? = $ac_status" >&5
+ echo "$as_me:11104: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- echo "$as_me:8746: result: yes" >&5
+ echo "$as_me:11106: result: yes" >&5
echo "${ECHO_T}yes" >&6
eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
break
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-echo "$as_me:8753: result: no" >&5
+echo "$as_me:11113: result: no" >&5
echo "${ECHO_T}no" >&6
LIBS="$cf_save_LIBS"
fi
@@ -8765,7 +11125,7 @@ fi
eval 'cf_found_library=$cf_cv_have_lib_'$cf_nculib_root
if test $cf_found_library = no ; then
- { { echo "$as_me:8768: error: Cannot link $cf_nculib_root library" >&5
+ { { echo "$as_me:11128: error: Cannot link $cf_nculib_root library" >&5
echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -8773,7 +11133,7 @@ fi
fi
if test -n "$cf_ncurses_LIBS" ; then
- echo "$as_me:8776: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
+ echo "$as_me:11136: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6
cf_ncurses_SAVE="$LIBS"
for p in $cf_ncurses_LIBS ; do
@@ -8783,11 +11143,11 @@ echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS..
fi
done
cat >conftest.$ac_ext <<_ACEOF
-#line 8786 "configure"
+#line 11146 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
;
@@ -8795,23 +11155,23 @@ initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8798: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11158: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8801: \$? = $ac_status" >&5
+ echo "$as_me:11161: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8804: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11164: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8807: \$? = $ac_status" >&5
+ echo "$as_me:11167: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- echo "$as_me:8809: result: yes" >&5
+ echo "$as_me:11169: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-echo "$as_me:8814: result: no" >&5
+echo "$as_me:11174: result: no" >&5
echo "${ECHO_T}no" >&6
LIBS="$cf_ncurses_SAVE"
fi
@@ -8824,11 +11184,14 @@ cat >>confdefs.h <<EOF
#define $cf_nculib_ROOT 1
EOF
+ fi
+else
+ NCURSES_CONFIG=none
fi
;;
-pdcurses)
- echo "$as_me:8831: checking for X" >&5
+(pdcurses)
+ echo "$as_me:11194: checking for X" >&5
echo $ECHO_N "checking for X... $ECHO_C" >&6
# Check whether --with-x or --without-x was given.
@@ -8888,21 +11251,28 @@ fi
# Check X11 before X11Rn because it is often a symlink to the current release.
ac_x_header_dirs='
/usr/X11/include
+/usr/X11R7/include
/usr/X11R6/include
/usr/X11R5/include
/usr/X11R4/include
+/opt/local/include
+/opt/X11/include
+
/usr/include/X11
+/usr/include/X11R7
/usr/include/X11R6
/usr/include/X11R5
/usr/include/X11R4
/usr/local/X11/include
+/usr/local/X11R7/include
/usr/local/X11R6/include
/usr/local/X11R5/include
/usr/local/X11R4/include
/usr/local/include/X11
+/usr/local/include/X11R7
/usr/local/include/X11R6
/usr/local/include/X11R5
/usr/local/include/X11R4
@@ -8925,17 +11295,17 @@ if test "$ac_x_includes" = no; then
# Guess where to find include files, by looking for Intrinsic.h.
# First, try using that file with no special directory specified.
cat >conftest.$ac_ext <<_ACEOF
-#line 8928 "configure"
+#line 11298 "configure"
#include "confdefs.h"
#include <X11/Intrinsic.h>
_ACEOF
-if { (eval echo "$as_me:8932: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:11302: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:8938: \$? = $ac_status" >&5
+ echo "$as_me:11308: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -8968,11 +11338,11 @@ if test "$ac_x_libraries" = no; then
ac_save_LIBS=$LIBS
LIBS="-lXt $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 8971 "configure"
+#line 11341 "configure"
#include "confdefs.h"
#include <X11/Intrinsic.h>
int
-main ()
+main (void)
{
XtMalloc (0)
;
@@ -8980,16 +11350,16 @@ XtMalloc (0)
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8983: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11353: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8986: \$? = $ac_status" >&5
+ echo "$as_me:11356: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8989: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11359: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8992: \$? = $ac_status" >&5
+ echo "$as_me:11362: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
LIBS=$ac_save_LIBS
# We can link X programs with no special library path.
@@ -9027,7 +11397,7 @@ fi
fi # $with_x != no
if test "$have_x" != yes; then
- echo "$as_me:9030: result: $have_x" >&5
+ echo "$as_me:11400: result: $have_x" >&5
echo "${ECHO_T}$have_x" >&6
no_x=yes
else
@@ -9037,7 +11407,7 @@ else
# Update the cache value to reflect the command line values.
ac_cv_have_x="have_x=yes \
ac_x_includes=$x_includes ac_x_libraries=$x_libraries"
- echo "$as_me:9040: result: libraries $x_libraries, headers $x_includes" >&5
+ echo "$as_me:11410: result: libraries $x_libraries, headers $x_includes" >&5
echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6
fi
@@ -9061,15 +11431,15 @@ else
# others require no space. Words are not sufficient . . . .
case `(uname -sr) 2>/dev/null` in
"SunOS 5"*)
- echo "$as_me:9064: checking whether -R must be followed by a space" >&5
+ echo "$as_me:11434: checking whether -R must be followed by a space" >&5
echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6
ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
cat >conftest.$ac_ext <<_ACEOF
-#line 9068 "configure"
+#line 11438 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
;
@@ -9077,16 +11447,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9080: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11450: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9083: \$? = $ac_status" >&5
+ echo "$as_me:11453: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9086: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11456: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9089: \$? = $ac_status" >&5
+ echo "$as_me:11459: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_R_nospace=yes
else
@@ -9096,17 +11466,17 @@ ac_R_nospace=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
if test $ac_R_nospace = yes; then
- echo "$as_me:9099: result: no" >&5
+ echo "$as_me:11469: result: no" >&5
echo "${ECHO_T}no" >&6
X_LIBS="$X_LIBS -R$x_libraries"
else
LIBS="$ac_xsave_LIBS -R $x_libraries"
cat >conftest.$ac_ext <<_ACEOF
-#line 9105 "configure"
+#line 11475 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
;
@@ -9114,16 +11484,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9117: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11487: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9120: \$? = $ac_status" >&5
+ echo "$as_me:11490: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9123: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11493: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9126: \$? = $ac_status" >&5
+ echo "$as_me:11496: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_R_space=yes
else
@@ -9133,11 +11503,11 @@ ac_R_space=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
if test $ac_R_space = yes; then
- echo "$as_me:9136: result: yes" >&5
+ echo "$as_me:11506: result: yes" >&5
echo "${ECHO_T}yes" >&6
X_LIBS="$X_LIBS -R $x_libraries"
else
- echo "$as_me:9140: result: neither works" >&5
+ echo "$as_me:11510: result: neither works" >&5
echo "${ECHO_T}neither works" >&6
fi
fi
@@ -9157,7 +11527,7 @@ echo "${ECHO_T}neither works" >&6
# the Alpha needs dnet_stub (dnet does not exist).
ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
cat >conftest.$ac_ext <<_ACEOF
-#line 9160 "configure"
+#line 11530 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -9168,7 +11538,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char XOpenDisplay ();
int
-main ()
+main (void)
{
XOpenDisplay ();
;
@@ -9176,22 +11546,22 @@ XOpenDisplay ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9179: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11549: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9182: \$? = $ac_status" >&5
+ echo "$as_me:11552: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9185: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11555: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9188: \$? = $ac_status" >&5
+ echo "$as_me:11558: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-echo "$as_me:9194: checking for dnet_ntoa in -ldnet" >&5
+echo "$as_me:11564: checking for dnet_ntoa in -ldnet" >&5
echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6
if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9199,7 +11569,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldnet $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 9202 "configure"
+#line 11572 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -9210,7 +11580,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char dnet_ntoa ();
int
-main ()
+main (void)
{
dnet_ntoa ();
;
@@ -9218,16 +11588,16 @@ dnet_ntoa ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9221: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11591: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9224: \$? = $ac_status" >&5
+ echo "$as_me:11594: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9227: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11597: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9230: \$? = $ac_status" >&5
+ echo "$as_me:11600: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_dnet_dnet_ntoa=yes
else
@@ -9238,14 +11608,14 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:9241: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+echo "$as_me:11611: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6
if test $ac_cv_lib_dnet_dnet_ntoa = yes; then
X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
fi
if test $ac_cv_lib_dnet_dnet_ntoa = no; then
- echo "$as_me:9248: checking for dnet_ntoa in -ldnet_stub" >&5
+ echo "$as_me:11618: checking for dnet_ntoa in -ldnet_stub" >&5
echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6
if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9253,7 +11623,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldnet_stub $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 9256 "configure"
+#line 11626 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -9264,7 +11634,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char dnet_ntoa ();
int
-main ()
+main (void)
{
dnet_ntoa ();
;
@@ -9272,16 +11642,16 @@ dnet_ntoa ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9275: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11645: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9278: \$? = $ac_status" >&5
+ echo "$as_me:11648: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9281: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11651: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9284: \$? = $ac_status" >&5
+ echo "$as_me:11654: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_dnet_stub_dnet_ntoa=yes
else
@@ -9292,7 +11662,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:9295: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+echo "$as_me:11665: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6
if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then
X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
@@ -9311,53 +11681,53 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
# on Irix 5.2, according to T.E. Dickey.
# The functions gethostbyname, getservbyname, and inet_addr are
# in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
- echo "$as_me:9314: checking for gethostbyname" >&5
+ echo "$as_me:11684: checking for gethostbyname" >&5
echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6
if test "${ac_cv_func_gethostbyname+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 9320 "configure"
+#line 11690 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char gethostbyname (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define gethostbyname autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef gethostbyname
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char gethostbyname ();
-char (*f) ();
+char gethostbyname (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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_gethostbyname) || defined (__stub___gethostbyname)
-choke me
-#else
-f = gethostbyname; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for gethostbyname
#endif
+ return gethostbyname ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9351: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11721: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9354: \$? = $ac_status" >&5
+ echo "$as_me:11724: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9357: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11727: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9360: \$? = $ac_status" >&5
+ echo "$as_me:11730: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_gethostbyname=yes
else
@@ -9367,11 +11737,11 @@ ac_cv_func_gethostbyname=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:9370: result: $ac_cv_func_gethostbyname" >&5
+echo "$as_me:11740: result: $ac_cv_func_gethostbyname" >&5
echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6
if test $ac_cv_func_gethostbyname = no; then
- echo "$as_me:9374: checking for gethostbyname in -lnsl" >&5
+ echo "$as_me:11744: checking for gethostbyname in -lnsl" >&5
echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6
if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9379,7 +11749,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lnsl $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 9382 "configure"
+#line 11752 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -9390,7 +11760,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char gethostbyname ();
int
-main ()
+main (void)
{
gethostbyname ();
;
@@ -9398,16 +11768,16 @@ gethostbyname ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9401: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11771: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9404: \$? = $ac_status" >&5
+ echo "$as_me:11774: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9407: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11777: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9410: \$? = $ac_status" >&5
+ echo "$as_me:11780: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_nsl_gethostbyname=yes
else
@@ -9418,14 +11788,14 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:9421: result: $ac_cv_lib_nsl_gethostbyname" >&5
+echo "$as_me:11791: result: $ac_cv_lib_nsl_gethostbyname" >&5
echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6
if test $ac_cv_lib_nsl_gethostbyname = yes; then
X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
fi
if test $ac_cv_lib_nsl_gethostbyname = no; then
- echo "$as_me:9428: checking for gethostbyname in -lbsd" >&5
+ echo "$as_me:11798: checking for gethostbyname in -lbsd" >&5
echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6
if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9433,7 +11803,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lbsd $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 9436 "configure"
+#line 11806 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -9444,7 +11814,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char gethostbyname ();
int
-main ()
+main (void)
{
gethostbyname ();
;
@@ -9452,16 +11822,16 @@ gethostbyname ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9455: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11825: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9458: \$? = $ac_status" >&5
+ echo "$as_me:11828: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9461: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11831: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9464: \$? = $ac_status" >&5
+ echo "$as_me:11834: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_bsd_gethostbyname=yes
else
@@ -9472,7 +11842,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:9475: result: $ac_cv_lib_bsd_gethostbyname" >&5
+echo "$as_me:11845: result: $ac_cv_lib_bsd_gethostbyname" >&5
echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6
if test $ac_cv_lib_bsd_gethostbyname = yes; then
X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
@@ -9488,53 +11858,53 @@ fi
# variants that don't use the nameserver (or something). -lsocket
# must be given before -lnsl if both are needed. We assume that
# if connect needs -lnsl, so does gethostbyname.
- echo "$as_me:9491: checking for connect" >&5
+ echo "$as_me:11861: checking for connect" >&5
echo $ECHO_N "checking for connect... $ECHO_C" >&6
if test "${ac_cv_func_connect+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 9497 "configure"
+#line 11867 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char connect (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define connect autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef connect
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char connect ();
-char (*f) ();
+char connect (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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_connect) || defined (__stub___connect)
-choke me
-#else
-f = connect; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for connect
#endif
+ return connect ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9528: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11898: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9531: \$? = $ac_status" >&5
+ echo "$as_me:11901: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9534: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11904: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9537: \$? = $ac_status" >&5
+ echo "$as_me:11907: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_connect=yes
else
@@ -9544,11 +11914,11 @@ ac_cv_func_connect=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:9547: result: $ac_cv_func_connect" >&5
+echo "$as_me:11917: result: $ac_cv_func_connect" >&5
echo "${ECHO_T}$ac_cv_func_connect" >&6
if test $ac_cv_func_connect = no; then
- echo "$as_me:9551: checking for connect in -lsocket" >&5
+ echo "$as_me:11921: checking for connect in -lsocket" >&5
echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6
if test "${ac_cv_lib_socket_connect+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9556,7 +11926,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 9559 "configure"
+#line 11929 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -9567,7 +11937,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char connect ();
int
-main ()
+main (void)
{
connect ();
;
@@ -9575,16 +11945,16 @@ connect ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9578: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11948: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9581: \$? = $ac_status" >&5
+ echo "$as_me:11951: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9584: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11954: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9587: \$? = $ac_status" >&5
+ echo "$as_me:11957: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_socket_connect=yes
else
@@ -9595,7 +11965,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:9598: result: $ac_cv_lib_socket_connect" >&5
+echo "$as_me:11968: result: $ac_cv_lib_socket_connect" >&5
echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6
if test $ac_cv_lib_socket_connect = yes; then
X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
@@ -9604,53 +11974,53 @@ fi
fi
# Guillermo Gomez says -lposix is necessary on A/UX.
- echo "$as_me:9607: checking for remove" >&5
+ echo "$as_me:11977: checking for remove" >&5
echo $ECHO_N "checking for remove... $ECHO_C" >&6
if test "${ac_cv_func_remove+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 9613 "configure"
+#line 11983 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char remove (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define remove autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef remove
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char remove ();
-char (*f) ();
+char remove (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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_remove) || defined (__stub___remove)
-choke me
-#else
-f = remove; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for remove
#endif
+ return remove ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9644: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12014: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9647: \$? = $ac_status" >&5
+ echo "$as_me:12017: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9650: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12020: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9653: \$? = $ac_status" >&5
+ echo "$as_me:12023: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_remove=yes
else
@@ -9660,11 +12030,11 @@ ac_cv_func_remove=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:9663: result: $ac_cv_func_remove" >&5
+echo "$as_me:12033: result: $ac_cv_func_remove" >&5
echo "${ECHO_T}$ac_cv_func_remove" >&6
if test $ac_cv_func_remove = no; then
- echo "$as_me:9667: checking for remove in -lposix" >&5
+ echo "$as_me:12037: checking for remove in -lposix" >&5
echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6
if test "${ac_cv_lib_posix_remove+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9672,7 +12042,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lposix $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 9675 "configure"
+#line 12045 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -9683,7 +12053,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char remove ();
int
-main ()
+main (void)
{
remove ();
;
@@ -9691,16 +12061,16 @@ remove ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9694: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12064: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9697: \$? = $ac_status" >&5
+ echo "$as_me:12067: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9700: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12070: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9703: \$? = $ac_status" >&5
+ echo "$as_me:12073: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_posix_remove=yes
else
@@ -9711,7 +12081,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:9714: result: $ac_cv_lib_posix_remove" >&5
+echo "$as_me:12084: result: $ac_cv_lib_posix_remove" >&5
echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6
if test $ac_cv_lib_posix_remove = yes; then
X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
@@ -9720,53 +12090,53 @@ fi
fi
# BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
- echo "$as_me:9723: checking for shmat" >&5
+ echo "$as_me:12093: checking for shmat" >&5
echo $ECHO_N "checking for shmat... $ECHO_C" >&6
if test "${ac_cv_func_shmat+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 9729 "configure"
+#line 12099 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char shmat (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define shmat autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef shmat
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char shmat ();
-char (*f) ();
+char shmat (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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_shmat) || defined (__stub___shmat)
-choke me
-#else
-f = shmat; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for shmat
#endif
+ return shmat ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9760: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12130: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9763: \$? = $ac_status" >&5
+ echo "$as_me:12133: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9766: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12136: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9769: \$? = $ac_status" >&5
+ echo "$as_me:12139: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_shmat=yes
else
@@ -9776,11 +12146,11 @@ ac_cv_func_shmat=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:9779: result: $ac_cv_func_shmat" >&5
+echo "$as_me:12149: result: $ac_cv_func_shmat" >&5
echo "${ECHO_T}$ac_cv_func_shmat" >&6
if test $ac_cv_func_shmat = no; then
- echo "$as_me:9783: checking for shmat in -lipc" >&5
+ echo "$as_me:12153: checking for shmat in -lipc" >&5
echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6
if test "${ac_cv_lib_ipc_shmat+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9788,7 +12158,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lipc $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 9791 "configure"
+#line 12161 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -9799,7 +12169,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char shmat ();
int
-main ()
+main (void)
{
shmat ();
;
@@ -9807,16 +12177,16 @@ shmat ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9810: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12180: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9813: \$? = $ac_status" >&5
+ echo "$as_me:12183: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9816: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12186: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9819: \$? = $ac_status" >&5
+ echo "$as_me:12189: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_ipc_shmat=yes
else
@@ -9827,7 +12197,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:9830: result: $ac_cv_lib_ipc_shmat" >&5
+echo "$as_me:12200: result: $ac_cv_lib_ipc_shmat" >&5
echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6
if test $ac_cv_lib_ipc_shmat = yes; then
X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
@@ -9845,7 +12215,7 @@ fi
# These have to be linked with before -lX11, unlike the other
# libraries we check for below, so use a different variable.
# John Interrante, Karl Berry
- echo "$as_me:9848: checking for IceConnectionNumber in -lICE" >&5
+ echo "$as_me:12218: checking for IceConnectionNumber in -lICE" >&5
echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6
if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9853,7 +12223,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lICE $X_EXTRA_LIBS $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 9856 "configure"
+#line 12226 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -9864,7 +12234,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char IceConnectionNumber ();
int
-main ()
+main (void)
{
IceConnectionNumber ();
;
@@ -9872,16 +12242,16 @@ IceConnectionNumber ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9875: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12245: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9878: \$? = $ac_status" >&5
+ echo "$as_me:12248: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9881: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12251: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9884: \$? = $ac_status" >&5
+ echo "$as_me:12254: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_ICE_IceConnectionNumber=yes
else
@@ -9892,7 +12262,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:9895: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+echo "$as_me:12265: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6
if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
@@ -9904,7 +12274,7 @@ fi
cf_x_athena=${cf_x_athena:-Xaw}
-echo "$as_me:9907: checking if you want to link with Xaw 3d library" >&5
+echo "$as_me:12277: checking if you want to link with Xaw 3d library" >&5
echo $ECHO_N "checking if you want to link with Xaw 3d library... $ECHO_C" >&6
withval=
@@ -9915,14 +12285,32 @@ if test "${with_Xaw3d+set}" = set; then
fi;
if test "$withval" = yes ; then
cf_x_athena=Xaw3d
- echo "$as_me:9918: result: yes" >&5
+ echo "$as_me:12288: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me:12291: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+echo "$as_me:12295: checking if you want to link with Xaw 3d xft library" >&5
+echo $ECHO_N "checking if you want to link with Xaw 3d xft library... $ECHO_C" >&6
+withval=
+
+# Check whether --with-Xaw3dxft or --without-Xaw3dxft was given.
+if test "${with_Xaw3dxft+set}" = set; then
+ withval="$with_Xaw3dxft"
+
+fi;
+if test "$withval" = yes ; then
+ cf_x_athena=Xaw3dxft
+ echo "$as_me:12306: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
- echo "$as_me:9921: result: no" >&5
+ echo "$as_me:12309: result: no" >&5
echo "${ECHO_T}no" >&6
fi
-echo "$as_me:9925: checking if you want to link with neXT Athena library" >&5
+echo "$as_me:12313: checking if you want to link with neXT Athena library" >&5
echo $ECHO_N "checking if you want to link with neXT Athena library... $ECHO_C" >&6
withval=
@@ -9933,14 +12321,14 @@ if test "${with_neXtaw+set}" = set; then
fi;
if test "$withval" = yes ; then
cf_x_athena=neXtaw
- echo "$as_me:9936: result: yes" >&5
+ echo "$as_me:12324: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
- echo "$as_me:9939: result: no" >&5
+ echo "$as_me:12327: result: no" >&5
echo "${ECHO_T}no" >&6
fi
-echo "$as_me:9943: checking if you want to link with Athena-Plus library" >&5
+echo "$as_me:12331: checking if you want to link with Athena-Plus library" >&5
echo $ECHO_N "checking if you want to link with Athena-Plus library... $ECHO_C" >&6
withval=
@@ -9951,10 +12339,10 @@ if test "${with_XawPlus+set}" = set; then
fi;
if test "$withval" = yes ; then
cf_x_athena=XawPlus
- echo "$as_me:9954: result: yes" >&5
+ echo "$as_me:12342: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
- echo "$as_me:9957: result: no" >&5
+ echo "$as_me:12345: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -9974,17 +12362,17 @@ if test "$PKG_CONFIG" != none ; then
if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists $cf_athena_pkg; then
test -n "$verbose" && echo " found package $cf_athena_pkg" 1>&6
-echo "${as_me:-configure}:9977: testing found package $cf_athena_pkg ..." 1>&5
+echo "${as_me:-configure}:12365: testing found package $cf_athena_pkg ..." 1>&5
cf_pkgconfig_incs="`$PKG_CONFIG --cflags $cf_athena_pkg 2>/dev/null`"
cf_pkgconfig_libs="`$PKG_CONFIG --libs $cf_athena_pkg 2>/dev/null`"
test -n "$verbose" && echo " package $cf_athena_pkg CFLAGS: $cf_pkgconfig_incs" 1>&6
-echo "${as_me:-configure}:9983: testing package $cf_athena_pkg CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:12371: testing package $cf_athena_pkg CFLAGS: $cf_pkgconfig_incs ..." 1>&5
test -n "$verbose" && echo " package $cf_athena_pkg LIBS: $cf_pkgconfig_libs" 1>&6
-echo "${as_me:-configure}:9987: testing package $cf_athena_pkg LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:12375: testing package $cf_athena_pkg LIBS: $cf_pkgconfig_libs ..." 1>&5
cf_fix_cppflags=no
cf_new_cflags=
@@ -9994,32 +12382,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_pkgconfig_incs
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -10028,21 +12422,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -10051,20 +12453,40 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
- LIBS="$cf_pkgconfig_libs $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
cf_x_athena_lib="$cf_pkgconfig_libs"
@@ -10077,30 +12499,30 @@ EOF
for cf_trim_lib in Xmu Xt X11
do
case "$LIBS" in
- *-l$cf_trim_lib\ *-l$cf_trim_lib*)
+ (*-l$cf_trim_lib\ *-l$cf_trim_lib*)
LIBS=`echo "$LIBS " | sed -e 's/ / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'`
test -n "$verbose" && echo " ..trimmed $LIBS" 1>&6
-echo "${as_me:-configure}:10084: testing ..trimmed $LIBS ..." 1>&5
+echo "${as_me:-configure}:12506: testing ..trimmed $LIBS ..." 1>&5
;;
esac
done
-echo "$as_me:10090: checking for usable $cf_x_athena/Xmu package" >&5
+echo "$as_me:12512: checking for usable $cf_x_athena/Xmu package" >&5
echo $ECHO_N "checking for usable $cf_x_athena/Xmu package... $ECHO_C" >&6
if test "${cf_cv_xaw_compat+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10097 "configure"
+#line 12519 "configure"
#include "confdefs.h"
#include <X11/Xmu/CharSet.h>
int
-main ()
+main (void)
{
int check = XmuCompareISOLatin1("big", "small")
@@ -10110,16 +12532,16 @@ int check = XmuCompareISOLatin1("big", "small")
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10113: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12535: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:10116: \$? = $ac_status" >&5
+ echo "$as_me:12538: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10119: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12541: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10122: \$? = $ac_status" >&5
+ echo "$as_me:12544: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xaw_compat=yes
else
@@ -10129,19 +12551,19 @@ cf_cv_xaw_compat=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:10132: result: $cf_cv_xaw_compat" >&5
+echo "$as_me:12554: result: $cf_cv_xaw_compat" >&5
echo "${ECHO_T}$cf_cv_xaw_compat" >&6
if test "$cf_cv_xaw_compat" = no
then
# workaround for broken ".pc" files...
- case "$cf_x_athena_lib" in #(vi
- *-lXmu*) #(vi
+ case "$cf_x_athena_lib" in
+ (*-lXmu*)
;;
- *)
+ (*)
test -n "$verbose" && echo " work around broken package" 1>&6
-echo "${as_me:-configure}:10144: testing work around broken package ..." 1>&5
+echo "${as_me:-configure}:12566: testing work around broken package ..." 1>&5
cf_save_xmu="$LIBS"
cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^ *//' -e 's/ .*//'`
@@ -10149,17 +12571,17 @@ echo "${as_me:-configure}:10144: testing work around broken package ..." 1>&5
if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xmu; then
test -n "$verbose" && echo " found package xmu" 1>&6
-echo "${as_me:-configure}:10152: testing found package xmu ..." 1>&5
+echo "${as_me:-configure}:12574: testing found package xmu ..." 1>&5
cf_pkgconfig_incs="`$PKG_CONFIG --cflags xmu 2>/dev/null`"
cf_pkgconfig_libs="`$PKG_CONFIG --libs xmu 2>/dev/null`"
test -n "$verbose" && echo " package xmu CFLAGS: $cf_pkgconfig_incs" 1>&6
-echo "${as_me:-configure}:10158: testing package xmu CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:12580: testing package xmu CFLAGS: $cf_pkgconfig_incs ..." 1>&5
test -n "$verbose" && echo " package xmu LIBS: $cf_pkgconfig_libs" 1>&6
-echo "${as_me:-configure}:10162: testing package xmu LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:12584: testing package xmu LIBS: $cf_pkgconfig_libs ..." 1>&5
cf_fix_cppflags=no
cf_new_cflags=
@@ -10169,32 +12591,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_pkgconfig_incs
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -10203,21 +12631,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -10226,31 +12662,51 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
- LIBS="$cf_pkgconfig_libs $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
LIBS="$cf_save_xmu"
test -n "$verbose" && echo " ...before $LIBS" 1>&6
-echo "${as_me:-configure}:10248: testing ...before $LIBS ..." 1>&5
+echo "${as_me:-configure}:12704: testing ...before $LIBS ..." 1>&5
LIBS=`echo "$LIBS" | sed -e "s/[ ][ ]*/ /g" -e "s%$cf_first_lib %$cf_first_lib $cf_pkgconfig_libs %" -e 's% % %g'`
test -n "$verbose" && echo " ...after $LIBS" 1>&6
-echo "${as_me:-configure}:10253: testing ...after $LIBS ..." 1>&5
+echo "${as_me:-configure}:12709: testing ...after $LIBS ..." 1>&5
else
cf_pkgconfig_incs=
@@ -10258,23 +12714,23 @@ else
test -n "$verbose" && echo " ...before $LIBS" 1>&6
-echo "${as_me:-configure}:10261: testing ...before $LIBS ..." 1>&5
+echo "${as_me:-configure}:12717: testing ...before $LIBS ..." 1>&5
LIBS=`echo "$LIBS" | sed -e "s/[ ][ ]*/ /g" -e "s%$cf_first_lib %$cf_first_lib -lXmu %" -e 's% % %g'`
test -n "$verbose" && echo " ...after $LIBS" 1>&6
-echo "${as_me:-configure}:10266: testing ...after $LIBS ..." 1>&5
+echo "${as_me:-configure}:12722: testing ...after $LIBS ..." 1>&5
fi
for cf_trim_lib in Xmu Xt X11
do
case "$LIBS" in
- *-l$cf_trim_lib\ *-l$cf_trim_lib*)
+ (*-l$cf_trim_lib\ *-l$cf_trim_lib*)
LIBS=`echo "$LIBS " | sed -e 's/ / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'`
test -n "$verbose" && echo " ..trimmed $LIBS" 1>&6
-echo "${as_me:-configure}:10277: testing ..trimmed $LIBS ..." 1>&5
+echo "${as_me:-configure}:12733: testing ..trimmed $LIBS ..." 1>&5
;;
esac
@@ -10299,17 +12755,17 @@ if test -z "$cf_x_athena_lib" ; then
if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists Xext; then
test -n "$verbose" && echo " found package Xext" 1>&6
-echo "${as_me:-configure}:10302: testing found package Xext ..." 1>&5
+echo "${as_me:-configure}:12758: testing found package Xext ..." 1>&5
cf_pkgconfig_incs="`$PKG_CONFIG --cflags Xext 2>/dev/null`"
cf_pkgconfig_libs="`$PKG_CONFIG --libs Xext 2>/dev/null`"
test -n "$verbose" && echo " package Xext CFLAGS: $cf_pkgconfig_incs" 1>&6
-echo "${as_me:-configure}:10308: testing package Xext CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:12764: testing package Xext CFLAGS: $cf_pkgconfig_incs ..." 1>&5
test -n "$verbose" && echo " package Xext LIBS: $cf_pkgconfig_libs" 1>&6
-echo "${as_me:-configure}:10312: testing package Xext LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:12768: testing package Xext LIBS: $cf_pkgconfig_libs ..." 1>&5
cf_fix_cppflags=no
cf_new_cflags=
@@ -10319,32 +12775,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_pkgconfig_incs
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -10353,21 +12815,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -10376,26 +12846,47 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
- LIBS="$cf_pkgconfig_libs $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
:
else
cf_pkgconfig_incs=
cf_pkgconfig_libs=
- echo "$as_me:10398: checking for XextCreateExtension in -lXext" >&5
+ echo "$as_me:12889: checking for XextCreateExtension in -lXext" >&5
echo $ECHO_N "checking for XextCreateExtension in -lXext... $ECHO_C" >&6
if test "${ac_cv_lib_Xext_XextCreateExtension+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10403,7 +12894,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lXext $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 10406 "configure"
+#line 12897 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -10414,7 +12905,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char XextCreateExtension ();
int
-main ()
+main (void)
{
XextCreateExtension ();
;
@@ -10422,16 +12913,16 @@ XextCreateExtension ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10425: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12916: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:10428: \$? = $ac_status" >&5
+ echo "$as_me:12919: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10431: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12922: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10434: \$? = $ac_status" >&5
+ echo "$as_me:12925: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_Xext_XextCreateExtension=yes
else
@@ -10442,10 +12933,585 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:10445: result: $ac_cv_lib_Xext_XextCreateExtension" >&5
+echo "$as_me:12936: result: $ac_cv_lib_Xext_XextCreateExtension" >&5
echo "${ECHO_T}$ac_cv_lib_Xext_XextCreateExtension" >&6
if test $ac_cv_lib_Xext_XextCreateExtension = yes; then
- LIBS="-lXext $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lXext; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+fi
+
+fi
+
+# OSX is schizoid about who owns /usr/X11 (old) versus /opt/X11 (new) (and
+# in some cases has installed dummy files in the former, other cases replaced
+# it with a link to the new location). This complicates the configure script.
+# Check for that pitfall, and recover using pkg-config
+#
+# If none of these are set, the configuration is almost certainly broken.
+if test -z "${X_CFLAGS}${X_PRE_LIBS}${X_LIBS}${X_EXTRA_LIBS}"
+then
+
+if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists x11; then
+ test -n "$verbose" && echo " found package x11" 1>&6
+
+echo "${as_me:-configure}:12972: testing found package x11 ..." 1>&5
+
+ cf_pkgconfig_incs="`$PKG_CONFIG --cflags x11 2>/dev/null`"
+ cf_pkgconfig_libs="`$PKG_CONFIG --libs x11 2>/dev/null`"
+ test -n "$verbose" && echo " package x11 CFLAGS: $cf_pkgconfig_incs" 1>&6
+
+echo "${as_me:-configure}:12978: testing package x11 CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+
+ test -n "$verbose" && echo " package x11 LIBS: $cf_pkgconfig_libs" 1>&6
+
+echo "${as_me:-configure}:12982: testing package x11 LIBS: $cf_pkgconfig_libs ..." 1>&5
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_pkgconfig_incs
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ :
+else
+ cf_pkgconfig_incs=
+ cf_pkgconfig_libs=
+ { echo "$as_me:13102: WARNING: unable to find X11 library" >&5
+echo "$as_me: WARNING: unable to find X11 library" >&2;}
+fi
+
+if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists ice; then
+ test -n "$verbose" && echo " found package ice" 1>&6
+
+echo "${as_me:-configure}:13109: testing found package ice ..." 1>&5
+
+ cf_pkgconfig_incs="`$PKG_CONFIG --cflags ice 2>/dev/null`"
+ cf_pkgconfig_libs="`$PKG_CONFIG --libs ice 2>/dev/null`"
+ test -n "$verbose" && echo " package ice CFLAGS: $cf_pkgconfig_incs" 1>&6
+
+echo "${as_me:-configure}:13115: testing package ice CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+
+ test -n "$verbose" && echo " package ice LIBS: $cf_pkgconfig_libs" 1>&6
+
+echo "${as_me:-configure}:13119: testing package ice LIBS: $cf_pkgconfig_libs ..." 1>&5
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_pkgconfig_incs
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ :
+else
+ cf_pkgconfig_incs=
+ cf_pkgconfig_libs=
+ { echo "$as_me:13239: WARNING: unable to find ICE library" >&5
+echo "$as_me: WARNING: unable to find ICE library" >&2;}
+fi
+
+if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists sm; then
+ test -n "$verbose" && echo " found package sm" 1>&6
+
+echo "${as_me:-configure}:13246: testing found package sm ..." 1>&5
+
+ cf_pkgconfig_incs="`$PKG_CONFIG --cflags sm 2>/dev/null`"
+ cf_pkgconfig_libs="`$PKG_CONFIG --libs sm 2>/dev/null`"
+ test -n "$verbose" && echo " package sm CFLAGS: $cf_pkgconfig_incs" 1>&6
+
+echo "${as_me:-configure}:13252: testing package sm CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+
+ test -n "$verbose" && echo " package sm LIBS: $cf_pkgconfig_libs" 1>&6
+
+echo "${as_me:-configure}:13256: testing package sm LIBS: $cf_pkgconfig_libs ..." 1>&5
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_pkgconfig_incs
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ :
+else
+ cf_pkgconfig_incs=
+ cf_pkgconfig_libs=
+ { echo "$as_me:13376: WARNING: unable to find SM library" >&5
+echo "$as_me: WARNING: unable to find SM library" >&2;}
+fi
+
+if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xt; then
+ test -n "$verbose" && echo " found package xt" 1>&6
+
+echo "${as_me:-configure}:13383: testing found package xt ..." 1>&5
+
+ cf_pkgconfig_incs="`$PKG_CONFIG --cflags xt 2>/dev/null`"
+ cf_pkgconfig_libs="`$PKG_CONFIG --libs xt 2>/dev/null`"
+ test -n "$verbose" && echo " package xt CFLAGS: $cf_pkgconfig_incs" 1>&6
+
+echo "${as_me:-configure}:13389: testing package xt CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+
+ test -n "$verbose" && echo " package xt LIBS: $cf_pkgconfig_libs" 1>&6
+
+echo "${as_me:-configure}:13393: testing package xt LIBS: $cf_pkgconfig_libs ..." 1>&5
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_pkgconfig_incs
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ :
+else
+ cf_pkgconfig_incs=
+ cf_pkgconfig_libs=
+ { echo "$as_me:13513: WARNING: unable to find Xt library" >&5
+echo "$as_me: WARNING: unable to find Xt library" >&2;}
fi
fi
@@ -10455,17 +13521,17 @@ cf_have_X_LIBS=no
if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xt; then
test -n "$verbose" && echo " found package xt" 1>&6
-echo "${as_me:-configure}:10458: testing found package xt ..." 1>&5
+echo "${as_me:-configure}:13524: testing found package xt ..." 1>&5
cf_pkgconfig_incs="`$PKG_CONFIG --cflags xt 2>/dev/null`"
cf_pkgconfig_libs="`$PKG_CONFIG --libs xt 2>/dev/null`"
test -n "$verbose" && echo " package xt CFLAGS: $cf_pkgconfig_incs" 1>&6
-echo "${as_me:-configure}:10464: testing package xt CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:13530: testing package xt CFLAGS: $cf_pkgconfig_incs ..." 1>&5
test -n "$verbose" && echo " package xt LIBS: $cf_pkgconfig_libs" 1>&6
-echo "${as_me:-configure}:10468: testing package xt LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:13534: testing package xt LIBS: $cf_pkgconfig_libs ..." 1>&5
cf_fix_cppflags=no
cf_new_cflags=
@@ -10475,32 +13541,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_pkgconfig_incs
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -10509,21 +13581,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -10532,40 +13612,60 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
- LIBS="$cf_pkgconfig_libs $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
- case "x$LIBS" in #(vi
- *-lX11*) #(vi
+ case "x$LIBS" in
+ (*-lX11*)
;;
- *)
+ (*)
# we have an "xt" package, but it may omit Xt's dependency on X11
-echo "$as_me:10555: checking for usable X dependency" >&5
+echo "$as_me:13655: checking for usable X dependency" >&5
echo $ECHO_N "checking for usable X dependency... $ECHO_C" >&6
if test "${cf_cv_xt_x11_compat+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10562 "configure"
+#line 13662 "configure"
#include "confdefs.h"
#include <X11/Xlib.h>
int
-main ()
+main (void)
{
int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0);
@@ -10578,16 +13678,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10581: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13681: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:10584: \$? = $ac_status" >&5
+ echo "$as_me:13684: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10587: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13687: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10590: \$? = $ac_status" >&5
+ echo "$as_me:13690: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xt_x11_compat=yes
else
@@ -10597,30 +13697,30 @@ cf_cv_xt_x11_compat=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:10600: result: $cf_cv_xt_x11_compat" >&5
+echo "$as_me:13700: result: $cf_cv_xt_x11_compat" >&5
echo "${ECHO_T}$cf_cv_xt_x11_compat" >&6
if test "$cf_cv_xt_x11_compat" = no
then
test -n "$verbose" && echo " work around broken X11 dependency" 1>&6
-echo "${as_me:-configure}:10606: testing work around broken X11 dependency ..." 1>&5
+echo "${as_me:-configure}:13706: testing work around broken X11 dependency ..." 1>&5
# 2010/11/19 - good enough until a working Xt on Xcb is delivered.
if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists x11; then
test -n "$verbose" && echo " found package x11" 1>&6
-echo "${as_me:-configure}:10613: testing found package x11 ..." 1>&5
+echo "${as_me:-configure}:13713: testing found package x11 ..." 1>&5
cf_pkgconfig_incs="`$PKG_CONFIG --cflags x11 2>/dev/null`"
cf_pkgconfig_libs="`$PKG_CONFIG --libs x11 2>/dev/null`"
test -n "$verbose" && echo " package x11 CFLAGS: $cf_pkgconfig_incs" 1>&6
-echo "${as_me:-configure}:10619: testing package x11 CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:13719: testing package x11 CFLAGS: $cf_pkgconfig_incs ..." 1>&5
test -n "$verbose" && echo " package x11 LIBS: $cf_pkgconfig_libs" 1>&6
-echo "${as_me:-configure}:10623: testing package x11 LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:13723: testing package x11 LIBS: $cf_pkgconfig_libs ..." 1>&5
cf_fix_cppflags=no
cf_new_cflags=
@@ -10630,32 +13730,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_pkgconfig_incs
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -10664,21 +13770,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -10687,20 +13801,41 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
- LIBS="$cf_pkgconfig_libs $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
:
else
cf_pkgconfig_incs=
@@ -10708,12 +13843,12 @@ else
test -n "$verbose" && echo " ...before $LIBS" 1>&6
-echo "${as_me:-configure}:10711: testing ...before $LIBS ..." 1>&5
+echo "${as_me:-configure}:13846: testing ...before $LIBS ..." 1>&5
LIBS=`echo "$LIBS" | sed -e "s/[ ][ ]*/ /g" -e "s%-lXt %-lXt -lX11 %" -e 's% % %g'`
test -n "$verbose" && echo " ...after $LIBS" 1>&6
-echo "${as_me:-configure}:10716: testing ...after $LIBS ..." 1>&5
+echo "${as_me:-configure}:13851: testing ...after $LIBS ..." 1>&5
fi
@@ -10721,20 +13856,20 @@ fi
;;
esac
-echo "$as_me:10724: checking for usable X Toolkit package" >&5
+echo "$as_me:13859: checking for usable X Toolkit package" >&5
echo $ECHO_N "checking for usable X Toolkit package... $ECHO_C" >&6
if test "${cf_cv_xt_ice_compat+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10731 "configure"
+#line 13866 "configure"
#include "confdefs.h"
#include <X11/Shell.h>
int
-main ()
+main (void)
{
int num = IceConnectionNumber(0)
@@ -10743,16 +13878,16 @@ int num = IceConnectionNumber(0)
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10746: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13881: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:10749: \$? = $ac_status" >&5
+ echo "$as_me:13884: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10752: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13887: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10755: \$? = $ac_status" >&5
+ echo "$as_me:13890: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xt_ice_compat=yes
else
@@ -10762,36 +13897,36 @@ cf_cv_xt_ice_compat=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:10765: result: $cf_cv_xt_ice_compat" >&5
+echo "$as_me:13900: result: $cf_cv_xt_ice_compat" >&5
echo "${ECHO_T}$cf_cv_xt_ice_compat" >&6
if test "$cf_cv_xt_ice_compat" = no
then
# workaround for broken ".pc" files used for X Toolkit.
- case "x$X_PRE_LIBS" in #(vi
- *-lICE*)
- case "x$LIBS" in #(vi
- *-lICE*) #(vi
+ case "x$X_PRE_LIBS" in
+ (*-lICE*)
+ case "x$LIBS" in
+ (*-lICE*)
;;
- *)
+ (*)
test -n "$verbose" && echo " work around broken ICE dependency" 1>&6
-echo "${as_me:-configure}:10779: testing work around broken ICE dependency ..." 1>&5
+echo "${as_me:-configure}:13914: testing work around broken ICE dependency ..." 1>&5
if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists ice; then
test -n "$verbose" && echo " found package ice" 1>&6
-echo "${as_me:-configure}:10784: testing found package ice ..." 1>&5
+echo "${as_me:-configure}:13919: testing found package ice ..." 1>&5
cf_pkgconfig_incs="`$PKG_CONFIG --cflags ice 2>/dev/null`"
cf_pkgconfig_libs="`$PKG_CONFIG --libs ice 2>/dev/null`"
test -n "$verbose" && echo " package ice CFLAGS: $cf_pkgconfig_incs" 1>&6
-echo "${as_me:-configure}:10790: testing package ice CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:13925: testing package ice CFLAGS: $cf_pkgconfig_incs ..." 1>&5
test -n "$verbose" && echo " package ice LIBS: $cf_pkgconfig_libs" 1>&6
-echo "${as_me:-configure}:10794: testing package ice LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:13929: testing package ice LIBS: $cf_pkgconfig_libs ..." 1>&5
cf_fix_cppflags=no
cf_new_cflags=
@@ -10801,32 +13936,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_pkgconfig_incs
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -10835,21 +13976,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -10858,35 +14007,55 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
- LIBS="$cf_pkgconfig_libs $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists sm; then
test -n "$verbose" && echo " found package sm" 1>&6
-echo "${as_me:-configure}:10879: testing found package sm ..." 1>&5
+echo "${as_me:-configure}:14048: testing found package sm ..." 1>&5
cf_pkgconfig_incs="`$PKG_CONFIG --cflags sm 2>/dev/null`"
cf_pkgconfig_libs="`$PKG_CONFIG --libs sm 2>/dev/null`"
test -n "$verbose" && echo " package sm CFLAGS: $cf_pkgconfig_incs" 1>&6
-echo "${as_me:-configure}:10885: testing package sm CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:14054: testing package sm CFLAGS: $cf_pkgconfig_incs ..." 1>&5
test -n "$verbose" && echo " package sm LIBS: $cf_pkgconfig_libs" 1>&6
-echo "${as_me:-configure}:10889: testing package sm LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:14058: testing package sm LIBS: $cf_pkgconfig_libs ..." 1>&5
cf_fix_cppflags=no
cf_new_cflags=
@@ -10896,32 +14065,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $cf_pkgconfig_incs
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -10930,21 +14105,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -10953,20 +14136,41 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
- LIBS="$cf_pkgconfig_libs $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
:
else
cf_pkgconfig_incs=
@@ -10980,12 +14184,12 @@ else
test -n "$verbose" && echo " ...before $LIBS" 1>&6
-echo "${as_me:-configure}:10983: testing ...before $LIBS ..." 1>&5
+echo "${as_me:-configure}:14187: testing ...before $LIBS ..." 1>&5
LIBS=`echo "$LIBS" | sed -e "s/[ ][ ]*/ /g" -e "s%-lXt %-lXt $X_PRE_LIBS %" -e 's% % %g'`
test -n "$verbose" && echo " ...after $LIBS" 1>&6
-echo "${as_me:-configure}:10988: testing ...after $LIBS ..." 1>&5
+echo "${as_me:-configure}:14192: testing ...after $LIBS ..." 1>&5
fi
@@ -11005,7 +14209,7 @@ else
test -n "$verbose" && echo " checking additions to CFLAGS" 1>&6
-echo "${as_me:-configure}:11008: testing checking additions to CFLAGS ..." 1>&5
+echo "${as_me:-configure}:14212: testing checking additions to CFLAGS ..." 1>&5
cf_check_cflags="$CFLAGS"
cf_check_cppflags="$CPPFLAGS"
@@ -11018,32 +14222,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $X_CFLAGS
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -11052,21 +14262,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -11076,34 +14294,40 @@ done
if test -n "$cf_new_cflags" ; then
test -n "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6
-echo "${as_me:-configure}:11079: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
+echo "${as_me:-configure}:14297: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
- CFLAGS="$CFLAGS $cf_new_cflags"
fi
if test -n "$cf_new_cppflags" ; then
test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6
-echo "${as_me:-configure}:11087: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
+echo "${as_me:-configure}:14307: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
fi
if test -n "$cf_new_extra_cppflags" ; then
test -n "$verbose" && echo " add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags" 1>&6
-echo "${as_me:-configure}:11095: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
+echo "${as_me:-configure}:14317: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
fi
-if test "$cf_check_cflags" != "$CFLAGS" ; then
+if test "x$cf_check_cflags" != "x$CFLAGS" ; then
cat >conftest.$ac_ext <<_ACEOF
-#line 11102 "configure"
+#line 14326 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello world");
;
@@ -11111,16 +14335,16 @@ printf("Hello world");
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11114: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14338: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11117: \$? = $ac_status" >&5
+ echo "$as_me:14341: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11120: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14344: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11123: \$? = $ac_status" >&5
+ echo "$as_me:14347: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -11128,12 +14352,12 @@ else
cat conftest.$ac_ext >&5
test -n "$verbose" && echo " test-compile failed. Undoing change to \$CFLAGS" 1>&6
-echo "${as_me:-configure}:11131: testing test-compile failed. Undoing change to \$CFLAGS ..." 1>&5
+echo "${as_me:-configure}:14355: testing test-compile failed. Undoing change to \$CFLAGS ..." 1>&5
- if test "$cf_check_cppflags" != "$CPPFLAGS" ; then
+ if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then
test -n "$verbose" && echo " but keeping change to \$CPPFLAGS" 1>&6
-echo "${as_me:-configure}:11136: testing but keeping change to \$CPPFLAGS ..." 1>&5
+echo "${as_me:-configure}:14360: testing but keeping change to \$CPPFLAGS ..." 1>&5
fi
CFLAGS="$cf_check_flags"
@@ -11141,53 +14365,53 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
- echo "$as_me:11144: checking for XOpenDisplay" >&5
+ echo "$as_me:14368: checking for XOpenDisplay" >&5
echo $ECHO_N "checking for XOpenDisplay... $ECHO_C" >&6
if test "${ac_cv_func_XOpenDisplay+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 11150 "configure"
+#line 14374 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char XOpenDisplay (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define XOpenDisplay autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef XOpenDisplay
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char XOpenDisplay ();
-char (*f) ();
+char XOpenDisplay (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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_XOpenDisplay) || defined (__stub___XOpenDisplay)
-choke me
-#else
-f = XOpenDisplay; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for XOpenDisplay
#endif
+ return XOpenDisplay ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11181: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14405: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11184: \$? = $ac_status" >&5
+ echo "$as_me:14408: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11187: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14411: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11190: \$? = $ac_status" >&5
+ echo "$as_me:14414: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_XOpenDisplay=yes
else
@@ -11197,13 +14421,13 @@ ac_cv_func_XOpenDisplay=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:11200: result: $ac_cv_func_XOpenDisplay" >&5
+echo "$as_me:14424: result: $ac_cv_func_XOpenDisplay" >&5
echo "${ECHO_T}$ac_cv_func_XOpenDisplay" >&6
if test $ac_cv_func_XOpenDisplay = yes; then
:
else
- echo "$as_me:11206: checking for XOpenDisplay in -lX11" >&5
+ echo "$as_me:14430: checking for XOpenDisplay in -lX11" >&5
echo $ECHO_N "checking for XOpenDisplay in -lX11... $ECHO_C" >&6
if test "${ac_cv_lib_X11_XOpenDisplay+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11211,7 +14435,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 11214 "configure"
+#line 14438 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -11222,7 +14446,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char XOpenDisplay ();
int
-main ()
+main (void)
{
XOpenDisplay ();
;
@@ -11230,16 +14454,16 @@ XOpenDisplay ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11233: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14457: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11236: \$? = $ac_status" >&5
+ echo "$as_me:14460: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11239: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14463: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11242: \$? = $ac_status" >&5
+ echo "$as_me:14466: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_X11_XOpenDisplay=yes
else
@@ -11250,61 +14474,77 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:11253: result: $ac_cv_lib_X11_XOpenDisplay" >&5
+echo "$as_me:14477: result: $ac_cv_lib_X11_XOpenDisplay" >&5
echo "${ECHO_T}$ac_cv_lib_X11_XOpenDisplay" >&6
if test $ac_cv_lib_X11_XOpenDisplay = yes; then
- LIBS="-lX11 $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lX11; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
fi
fi
- echo "$as_me:11261: checking for XtAppInitialize" >&5
+ echo "$as_me:14501: checking for XtAppInitialize" >&5
echo $ECHO_N "checking for XtAppInitialize... $ECHO_C" >&6
if test "${ac_cv_func_XtAppInitialize+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 11267 "configure"
+#line 14507 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char XtAppInitialize (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define XtAppInitialize autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef XtAppInitialize
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char XtAppInitialize ();
-char (*f) ();
+char XtAppInitialize (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs 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_XtAppInitialize) || defined (__stub___XtAppInitialize)
-choke me
-#else
-f = XtAppInitialize; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for XtAppInitialize
#endif
+ return XtAppInitialize ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11298: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14538: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11301: \$? = $ac_status" >&5
+ echo "$as_me:14541: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11304: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14544: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11307: \$? = $ac_status" >&5
+ echo "$as_me:14547: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_XtAppInitialize=yes
else
@@ -11314,13 +14554,13 @@ ac_cv_func_XtAppInitialize=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:11317: result: $ac_cv_func_XtAppInitialize" >&5
+echo "$as_me:14557: result: $ac_cv_func_XtAppInitialize" >&5
echo "${ECHO_T}$ac_cv_func_XtAppInitialize" >&6
if test $ac_cv_func_XtAppInitialize = yes; then
:
else
- echo "$as_me:11323: checking for XtAppInitialize in -lXt" >&5
+ echo "$as_me:14563: checking for XtAppInitialize in -lXt" >&5
echo $ECHO_N "checking for XtAppInitialize in -lXt... $ECHO_C" >&6
if test "${ac_cv_lib_Xt_XtAppInitialize+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11328,7 +14568,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 11331 "configure"
+#line 14571 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -11339,7 +14579,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char XtAppInitialize ();
int
-main ()
+main (void)
{
XtAppInitialize ();
;
@@ -11347,16 +14587,16 @@ XtAppInitialize ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11350: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14590: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11353: \$? = $ac_status" >&5
+ echo "$as_me:14593: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11356: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14596: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11359: \$? = $ac_status" >&5
+ echo "$as_me:14599: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_Xt_XtAppInitialize=yes
else
@@ -11367,7 +14607,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:11370: result: $ac_cv_lib_Xt_XtAppInitialize" >&5
+echo "$as_me:14610: result: $ac_cv_lib_Xt_XtAppInitialize" >&5
echo "${ECHO_T}$ac_cv_lib_Xt_XtAppInitialize" >&6
if test $ac_cv_lib_Xt_XtAppInitialize = yes; then
@@ -11384,7 +14624,7 @@ fi
fi
if test $cf_have_X_LIBS = no ; then
- { echo "$as_me:11387: WARNING: Unable to successfully link X Toolkit library (-lXt) with
+ { echo "$as_me:14627: WARNING: Unable to successfully link X Toolkit library (-lXt) with
test program. You will have to check and add the proper libraries by hand
to makefile." >&5
echo "$as_me: WARNING: Unable to successfully link X Toolkit library (-lXt) with
@@ -11402,24 +14642,43 @@ for cf_path in default \
/usr/local
do
if test -z "$cf_x_athena_inc" ; then
- cf_save="$CPPFLAGS"
+
+cf_save_LIBS_CF_X_ATHENA_CPPFLAGS="$LIBS"
+cf_save_CFLAGS_CF_X_ATHENA_CPPFLAGS="$CFLAGS"
+cf_save_CPPFLAGS_CF_X_ATHENA_CPPFLAGS="$CPPFLAGS"
+LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
+for cf_X_CFLAGS in $X_CFLAGS
+do
+ case "x$cf_X_CFLAGS" in
+ x-[IUD]*)
+ CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
+ ;;
+ *)
+ CFLAGS="$CFLAGS $cf_X_CFLAGS"
+ ;;
+ esac
+done
+
cf_test=X11/$cf_x_athena_root/SimpleMenu.h
if test $cf_path != default ; then
- CPPFLAGS="$cf_save -I$cf_path/include"
- echo "$as_me:11409: checking for $cf_test in $cf_path" >&5
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_path/include"
+
+ echo "$as_me:14668: checking for $cf_test in $cf_path" >&5
echo $ECHO_N "checking for $cf_test in $cf_path... $ECHO_C" >&6
else
- echo "$as_me:11412: checking for $cf_test" >&5
+ echo "$as_me:14671: checking for $cf_test" >&5
echo $ECHO_N "checking for $cf_test... $ECHO_C" >&6
fi
cat >conftest.$ac_ext <<_ACEOF
-#line 11416 "configure"
+#line 14675 "configure"
#include "confdefs.h"
#include <X11/Intrinsic.h>
#include <$cf_test>
int
-main ()
+main (void)
{
;
@@ -11427,16 +14686,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:11430: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14689: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:11433: \$? = $ac_status" >&5
+ echo "$as_me:14692: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:11436: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14695: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11439: \$? = $ac_status" >&5
+ echo "$as_me:14698: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=yes
else
@@ -11445,22 +14704,29 @@ cat conftest.$ac_ext >&5
cf_result=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- echo "$as_me:11448: result: $cf_result" >&5
+ echo "$as_me:14707: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
+
+LIBS="$cf_save_LIBS_CF_X_ATHENA_CPPFLAGS"
+CFLAGS="$cf_save_CFLAGS_CF_X_ATHENA_CPPFLAGS"
+CPPFLAGS="$cf_save_CPPFLAGS_CF_X_ATHENA_CPPFLAGS"
+
if test "$cf_result" = yes ; then
- cf_x_athena_inc=$cf_path
+ test "$cf_path" = default && cf_x_athena_inc=default
+ test "$cf_path" != default && cf_x_athena_inc=$cf_path/include
break
- else
- CPPFLAGS="$cf_save"
fi
fi
done
if test -z "$cf_x_athena_inc" ; then
- { echo "$as_me:11460: WARNING: Unable to successfully find Athena header files with test program" >&5
-echo "$as_me: WARNING: Unable to successfully find Athena header files with test program" >&2;}
+ { echo "$as_me:14723: WARNING: Unable to find Athena header files" >&5
+echo "$as_me: WARNING: Unable to find Athena header files" >&2;}
elif test "$cf_x_athena_inc" != default ; then
- CPPFLAGS="$CPPFLAGS -I$cf_x_athena_inc"
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-I$cf_x_athena_inc"
+
fi
cf_x_athena_root=$cf_x_athena
@@ -11482,27 +14748,54 @@ do
"-l$cf_lib -lXpm -lXmu" \
"-l${cf_lib}_s -lXmu_s"
do
- if test -z "$cf_x_athena_lib" ; then
- cf_save="$LIBS"
- cf_test=XawSimpleMenuAddGlobalActions
- if test $cf_path != default ; then
- LIBS="-L$cf_path/lib $cf_libs $LIBS"
- echo "$as_me:11490: checking for $cf_libs in $cf_path" >&5
-echo $ECHO_N "checking for $cf_libs in $cf_path... $ECHO_C" >&6
- else
- LIBS="$cf_libs $LIBS"
- echo "$as_me:11494: checking for $cf_test in $cf_libs" >&5
+ test -n "$cf_x_athena_lib" && break
+
+cf_save_LIBS_CF_X_ATHENA_LIBS="$LIBS"
+cf_save_CFLAGS_CF_X_ATHENA_LIBS="$CFLAGS"
+cf_save_CPPFLAGS_CF_X_ATHENA_LIBS="$CPPFLAGS"
+LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
+for cf_X_CFLAGS in $X_CFLAGS
+do
+ case "x$cf_X_CFLAGS" in
+ x-[IUD]*)
+ CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
+ ;;
+ *)
+ CFLAGS="$CFLAGS $cf_X_CFLAGS"
+ ;;
+ esac
+done
+
+ cf_test=XawSimpleMenuAddGlobalActions
+ test "$cf_path" != default && cf_libs="-L$cf_path/lib $cf_libs"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ echo "$as_me:14788: checking for $cf_test in $cf_libs" >&5
echo $ECHO_N "checking for $cf_test in $cf_libs... $ECHO_C" >&6
- fi
- cat >conftest.$ac_ext <<_ACEOF
-#line 11498 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14791 "configure"
#include "confdefs.h"
#include <X11/Intrinsic.h>
#include <X11/$cf_x_athena_root/SimpleMenu.h>
int
-main ()
+main (void)
{
$cf_test((XtAppContext) 0)
@@ -11511,16 +14804,16 @@ $cf_test((XtAppContext) 0)
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11514: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14807: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11517: \$? = $ac_status" >&5
+ echo "$as_me:14810: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11520: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14813: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11523: \$? = $ac_status" >&5
+ echo "$as_me:14816: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=yes
else
@@ -11529,13 +14822,16 @@ cat conftest.$ac_ext >&5
cf_result=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- echo "$as_me:11532: result: $cf_result" >&5
+ echo "$as_me:14825: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
- if test "$cf_result" = yes ; then
- cf_x_athena_lib="$cf_libs"
- break
- fi
- LIBS="$cf_save"
+
+LIBS="$cf_save_LIBS_CF_X_ATHENA_LIBS"
+CFLAGS="$cf_save_CFLAGS_CF_X_ATHENA_LIBS"
+CPPFLAGS="$cf_save_CPPFLAGS_CF_X_ATHENA_LIBS"
+
+ if test "$cf_result" = yes ; then
+ cf_x_athena_lib="$cf_libs"
+ break
fi
done # cf_libs
test -n "$cf_x_athena_lib" && break
@@ -11543,11 +14839,27 @@ echo "${ECHO_T}$cf_result" >&6
done
if test -z "$cf_x_athena_lib" ; then
- { { echo "$as_me:11546: error: Unable to successfully link Athena library (-l$cf_x_athena_root) with test program" >&5
+ { { echo "$as_me:14842: error: Unable to successfully link Athena library (-l$cf_x_athena_root) with test program" >&5
echo "$as_me: error: Unable to successfully link Athena library (-l$cf_x_athena_root) with test program" >&2;}
{ (exit 1); exit 1; }; }
fi
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in $cf_x_athena_lib; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
cf_x_athena_LIBS=`echo "HAVE_LIB_$cf_x_athena" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
cat >>confdefs.h <<EOF
@@ -11561,7 +14873,7 @@ if test -n "$ac_tool_prefix"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:11564: checking for $ac_word" >&5
+echo "$as_me:14876: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_XCURSES_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11576,7 +14888,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_XCURSES_CONFIG="$ac_tool_prefix$ac_prog"
-echo "$as_me:11579: found $ac_dir/$ac_word" >&5
+echo "$as_me:14891: found $ac_dir/$ac_word" >&5
break
done
@@ -11584,10 +14896,10 @@ fi
fi
XCURSES_CONFIG=$ac_cv_prog_XCURSES_CONFIG
if test -n "$XCURSES_CONFIG"; then
- echo "$as_me:11587: result: $XCURSES_CONFIG" >&5
+ echo "$as_me:14899: result: $XCURSES_CONFIG" >&5
echo "${ECHO_T}$XCURSES_CONFIG" >&6
else
- echo "$as_me:11590: result: no" >&5
+ echo "$as_me:14902: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -11600,7 +14912,7 @@ if test -z "$XCURSES_CONFIG"; then
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 "$as_me:11603: checking for $ac_word" >&5
+echo "$as_me:14915: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ac_ct_XCURSES_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11615,7 +14927,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_XCURSES_CONFIG="$ac_prog"
-echo "$as_me:11618: found $ac_dir/$ac_word" >&5
+echo "$as_me:14930: found $ac_dir/$ac_word" >&5
break
done
@@ -11623,10 +14935,10 @@ fi
fi
ac_ct_XCURSES_CONFIG=$ac_cv_prog_ac_ct_XCURSES_CONFIG
if test -n "$ac_ct_XCURSES_CONFIG"; then
- echo "$as_me:11626: result: $ac_ct_XCURSES_CONFIG" >&5
+ echo "$as_me:14938: result: $ac_ct_XCURSES_CONFIG" >&5
echo "${ECHO_T}$ac_ct_XCURSES_CONFIG" >&6
else
- echo "$as_me:11629: result: no" >&5
+ echo "$as_me:14941: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -11639,8 +14951,119 @@ fi
if test "$XCURSES_CONFIG" != none ; then
-CPPFLAGS="$CPPFLAGS `$XCURSES_CONFIG --cflags`"
-LIBS="`$XCURSES_CONFIG --libs` $LIBS"
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in `$XCURSES_CONFIG --cflags`
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in `$XCURSES_CONFIG --libs`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
cf_cv_lib_XCurses=yes
@@ -11650,7 +15073,7 @@ LDFLAGS="$LDFLAGS $X_LIBS"
test -n "$verbose" && echo " checking additions to CFLAGS" 1>&6
-echo "${as_me:-configure}:11653: testing checking additions to CFLAGS ..." 1>&5
+echo "${as_me:-configure}:15076: testing checking additions to CFLAGS ..." 1>&5
cf_check_cflags="$CFLAGS"
cf_check_cppflags="$CPPFLAGS"
@@ -11663,32 +15086,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in $X_CFLAGS
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -11697,21 +15126,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -11721,34 +15158,40 @@ done
if test -n "$cf_new_cflags" ; then
test -n "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6
-echo "${as_me:-configure}:11724: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
+echo "${as_me:-configure}:15161: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
- CFLAGS="$CFLAGS $cf_new_cflags"
fi
if test -n "$cf_new_cppflags" ; then
test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6
-echo "${as_me:-configure}:11732: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
+echo "${as_me:-configure}:15171: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
fi
if test -n "$cf_new_extra_cppflags" ; then
test -n "$verbose" && echo " add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags" 1>&6
-echo "${as_me:-configure}:11740: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
+echo "${as_me:-configure}:15181: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
fi
-if test "$cf_check_cflags" != "$CFLAGS" ; then
+if test "x$cf_check_cflags" != "x$CFLAGS" ; then
cat >conftest.$ac_ext <<_ACEOF
-#line 11747 "configure"
+#line 15190 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello world");
;
@@ -11756,16 +15199,16 @@ printf("Hello world");
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11759: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15202: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11762: \$? = $ac_status" >&5
+ echo "$as_me:15205: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11765: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15208: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11768: \$? = $ac_status" >&5
+ echo "$as_me:15211: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -11773,12 +15216,12 @@ else
cat conftest.$ac_ext >&5
test -n "$verbose" && echo " test-compile failed. Undoing change to \$CFLAGS" 1>&6
-echo "${as_me:-configure}:11776: testing test-compile failed. Undoing change to \$CFLAGS ..." 1>&5
+echo "${as_me:-configure}:15219: testing test-compile failed. Undoing change to \$CFLAGS ..." 1>&5
- if test "$cf_check_cppflags" != "$CPPFLAGS" ; then
+ if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then
test -n "$verbose" && echo " but keeping change to \$CPPFLAGS" 1>&6
-echo "${as_me:-configure}:11781: testing but keeping change to \$CPPFLAGS ..." 1>&5
+echo "${as_me:-configure}:15224: testing but keeping change to \$CPPFLAGS ..." 1>&5
fi
CFLAGS="$cf_check_flags"
@@ -11786,7 +15229,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:11789: checking for XOpenDisplay in -lX11" >&5
+echo "$as_me:15232: checking for XOpenDisplay in -lX11" >&5
echo $ECHO_N "checking for XOpenDisplay in -lX11... $ECHO_C" >&6
if test "${ac_cv_lib_X11_XOpenDisplay+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11794,7 +15237,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 11797 "configure"
+#line 15240 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -11805,7 +15248,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char XOpenDisplay ();
int
-main ()
+main (void)
{
XOpenDisplay ();
;
@@ -11813,16 +15256,16 @@ XOpenDisplay ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11816: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15259: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11819: \$? = $ac_status" >&5
+ echo "$as_me:15262: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11822: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15265: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11825: \$? = $ac_status" >&5
+ echo "$as_me:15268: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_X11_XOpenDisplay=yes
else
@@ -11833,28 +15276,59 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:11836: result: $ac_cv_lib_X11_XOpenDisplay" >&5
+echo "$as_me:15279: result: $ac_cv_lib_X11_XOpenDisplay" >&5
echo "${ECHO_T}$ac_cv_lib_X11_XOpenDisplay" >&6
if test $ac_cv_lib_X11_XOpenDisplay = yes; then
- LIBS="-lX11 $LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lX11; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
fi
-echo "$as_me:11842: checking for XCurses library" >&5
+echo "$as_me:15301: checking for XCurses library" >&5
echo $ECHO_N "checking for XCurses library... $ECHO_C" >&6
if test "${cf_cv_lib_XCurses+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-LIBS="-lXCurses $LIBS"
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lXCurses; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 11850 "configure"
+#line 15324 "configure"
#include "confdefs.h"
#include <xcurses.h>
char *XCursesProgramName = "test";
int
-main ()
+main (void)
{
XCursesExit();
;
@@ -11862,16 +15336,16 @@ XCursesExit();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11865: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15339: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11868: \$? = $ac_status" >&5
+ echo "$as_me:15342: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11871: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15345: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11874: \$? = $ac_status" >&5
+ echo "$as_me:15348: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_lib_XCurses=yes
else
@@ -11882,7 +15356,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:11885: result: $cf_cv_lib_XCurses" >&5
+echo "$as_me:15359: result: $cf_cv_lib_XCurses" >&5
echo "${ECHO_T}$cf_cv_lib_XCurses" >&6
fi
@@ -11897,23 +15371,23 @@ cat >>confdefs.h <<\EOF
#define XCURSES 1
EOF
- echo "$as_me:11900: checking for xcurses.h" >&5
+ echo "$as_me:15374: checking for xcurses.h" >&5
echo $ECHO_N "checking for xcurses.h... $ECHO_C" >&6
if test "${ac_cv_header_xcurses_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 11906 "configure"
+#line 15380 "configure"
#include "confdefs.h"
#include <xcurses.h>
_ACEOF
-if { (eval echo "$as_me:11910: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:15384: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:11916: \$? = $ac_status" >&5
+ echo "$as_me:15390: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -11932,7 +15406,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:11935: result: $ac_cv_header_xcurses_h" >&5
+echo "$as_me:15409: result: $ac_cv_header_xcurses_h" >&5
echo "${ECHO_T}$ac_cv_header_xcurses_h" >&6
if test $ac_cv_header_xcurses_h = yes; then
@@ -11943,87 +15417,571 @@ EOF
fi
else
- { { echo "$as_me:11946: error: Cannot link with XCurses" >&5
+ { { echo "$as_me:15420: error: Cannot link with XCurses" >&5
echo "$as_me: error: Cannot link with XCurses" >&2;}
{ (exit 1); exit 1; }; }
fi
;;
+(*)
+ { { echo "$as_me:15427: error: unexpected screen-value: $cf_cv_screen" >&5
+echo "$as_me: error: unexpected screen-value: $cf_cv_screen" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
esac
-case $cf_cv_screen in
-curses|curses_*)
-
-echo "$as_me:11957: checking for NetBSD form.h" >&5
-echo $ECHO_N "checking for NetBSD form.h... $ECHO_C" >&6
-if test "${cf_cv_netbsd_form_h+set}" = set; then
+: ${cf_nculib_root:=$cf_cv_screen}
+as_ac_Lib=`echo "ac_cv_lib_$cf_nculib_root''__nc_init_pthreads" | $as_tr_sh`
+echo "$as_me:15435: checking for _nc_init_pthreads in -l$cf_nculib_root" >&5
+echo $ECHO_N "checking for _nc_init_pthreads in -l$cf_nculib_root... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Lib+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$cf_nculib_root $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 11964 "configure"
+#line 15443 "configure"
#include "confdefs.h"
-#include <${cf_cv_ncurses_header:-curses.h}>
-#include <form.h>
-
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char _nc_init_pthreads ();
int
-main ()
+main (void)
{
+_nc_init_pthreads ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:15462: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:15465: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:15468: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:15471: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Lib=yes"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_Lib=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:15482: result: `eval echo '${'$as_ac_Lib'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
+if test `eval echo '${'$as_ac_Lib'}'` = yes; then
+ cf_cv_ncurses_pthreads=yes
+else
+ cf_cv_ncurses_pthreads=no
+fi
- FORM *form;
- int y = current_field(form)->cursor_ypos;
- int x = current_field(form)->cursor_xpos;
+if test "$cf_cv_ncurses_pthreads" = yes
+then
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lpthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+fi
+
+case $cf_cv_screen in
+(ncurses*)
+ cf_cv_libtype=`echo "$cf_cv_screen" | sed -e 's/^ncurses//'`
+ ;;
+esac
+
+echo "$as_me:15517: checking for X11 rgb file" >&5
+echo $ECHO_N "checking for X11 rgb file... $ECHO_C" >&6
+
+# Check whether --with-x11-rgb or --without-x11-rgb was given.
+if test "${with_x11_rgb+set}" = set; then
+ withval="$with_x11_rgb"
+ RGB_PATH=$withval
+else
+ RGB_PATH=auto
+fi;
+
+if test "x$RGB_PATH" = xauto
+then
+ RGB_PATH='${exec_prefix}/lib/X11/rgb.txt'
+ for cf_path in \
+ /opt/local/share/X11/rgb.txt \
+ /opt/X11/share/X11/rgb.txt \
+ /usr/share/X11/rgb.txt \
+ /usr/X11/share/X11/rgb.txt \
+ /usr/X11/lib/X11/rgb.txt \
+ /usr/lib/X11/rgb.txt \
+ /etc/X11/rgb.txt \
+ /usr/pkg/lib/X11/rgb.txt \
+ /usr/X11R7/lib/X11/rgb.txt \
+ /usr/X11R6/lib/X11/rgb.txt \
+ /usr/X11R5/lib/X11/rgb.txt \
+ /usr/X11R4/lib/X11/rgb.txt \
+ /usr/local/lib/X11/rgb.txt \
+ /usr/local/share/X11/rgb.txt \
+ /usr/lib64/X11/rgb.txt
+ do
+ if test -f "$cf_path" ; then
+ RGB_PATH="$cf_path"
+ break
+ fi
+ done
+else
+ cf_path=$RGB_PATH
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$cf_path" in
+(.\$\(*\)*|.\'*\'*)
+ ;;
+(..|./*|.\\*)
+ ;;
+(.[a-zA-Z]:[\\/]*) # OS/2 EMX
+ ;;
+(.\${*prefix}*|.\${*dir}*)
+ eval cf_path="$cf_path"
+ case ".$cf_path" in
+ (.NONE/*)
+ cf_path=`echo $cf_path | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;;
+(.no|.NONE/*)
+ cf_path=`echo $cf_path | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+(*)
+ { { echo "$as_me:15581: error: expected a pathname, not \"$cf_path\"" >&5
+echo "$as_me: error: expected a pathname, not \"$cf_path\"" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+esac
+
+fi
+
+echo "$as_me:15589: result: $RGB_PATH" >&5
+echo "${ECHO_T}$RGB_PATH" >&6
+
+cat >>confdefs.h <<EOF
+#define RGB_PATH "$cf_path"
+EOF
+
+no_x11_rgb=
+if test "$RGB_PATH" = no
+then
+ no_x11_rgb="#"
+fi
+
+cf_curses_headers=
+
+case $cf_cv_screen in
+(pdcurses)
+ cf_default_panel=no
+ cf_default_form=no
+ cf_default_menu=no
+ cf_default_tinfo=no
+ ;;
+(xcurses|bsdcurses)
+ cf_default_panel=no
+ cf_default_form=no
+ cf_default_menu=no
+ cf_default_tinfo=yes
+ ;;
+(*)
+ cf_default_panel=yes
+ cf_default_form=yes
+ cf_default_menu=yes
+ cf_default_tinfo=yes
+ case $cf_cv_screen in
+ (ncurses*)
+ cf_curses_headers="nc_alloc.h nomacros.h term_entry.h"
+ ;;
+ esac
+ ;;
+esac
+
+echo "$as_me:15630: checking if you want to check for panel functions" >&5
+echo $ECHO_N "checking if you want to check for panel functions... $ECHO_C" >&6
+
+# Check whether --enable-panel or --disable-panel was given.
+if test "${enable_panel+set}" = set; then
+ enableval="$enable_panel"
+ test "$enableval" != no && enableval=yes
+ if test "$enableval" != "yes" ; then
+ cf_enable_panel=no
+ else
+ cf_enable_panel=$cf_default_panel
+ fi
+else
+ enableval=yes
+ cf_enable_panel=$cf_default_panel
+
+fi;
+echo "$as_me:15647: result: $cf_enable_panel" >&5
+echo "${ECHO_T}$cf_enable_panel" >&6
+if test $cf_enable_panel = yes
+then
+cf_have_curses_lib=no
+
+: ${NCURSES_CONFIG_PKG:=none}
+if test "x${NCURSES_CONFIG_PKG}" = xnone; then
+ :
+elif test "x${PKG_CONFIG:=none}" != xnone; then
+ echo "$as_me:15658: checking pkg-config for panel$cf_cv_libtype" >&5
+echo $ECHO_N "checking pkg-config for panel$cf_cv_libtype... $ECHO_C" >&6
+ if "$PKG_CONFIG" --exists panel$cf_cv_libtype ; then
+ echo "$as_me:15661: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+ echo "$as_me:15664: checking if the panel$cf_cv_libtype package files work" >&5
+echo $ECHO_N "checking if the panel$cf_cv_libtype package files work... $ECHO_C" >&6
+
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_save_LIBS="$LIBS"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in `$PKG_CONFIG --cflags panel$cf_cv_libtype`
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in `$PKG_CONFIG --libs panel$cf_cv_libtype`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 15785 "configure"
+#include "confdefs.h"
+#include <panel.h>
+int
+main (void)
+{
+(void) new_panel ( 0 );
;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:11983: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:15797: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11986: \$? = $ac_status" >&5
+ echo "$as_me:15800: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:11989: \"$ac_try\"") >&5
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:15803: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11992: \$? = $ac_status" >&5
+ echo "$as_me:15806: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- cf_cv_netbsd_form_h=yes
-
+ if test "$cross_compiling" = yes; then
+ cf_have_curses_lib=maybe
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 15812 "configure"
+#include "confdefs.h"
+#include <panel.h>
+ int main(void)
+ { (void) new_panel ( 0 ); return 0; }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:15819: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:15822: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:15824: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:15827: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_have_curses_lib=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_curses_lib=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-cf_cv_netbsd_form_h=no
+cf_have_curses_lib=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ echo "$as_me:15844: result: $cf_have_curses_lib" >&5
+echo "${ECHO_T}$cf_have_curses_lib" >&6
+ test "$cf_have_curses_lib" = maybe && cf_have_curses_lib=yes
+ if test "$cf_have_curses_lib" != "yes"
+ then
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ else
+
+cf_upper=`echo "have_libpanel" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+ cat >>confdefs.h <<EOF
+#define $cf_upper 1
+EOF
+
+ fi
+ fi
fi
-echo "$as_me:12004: result: $cf_cv_netbsd_form_h" >&5
-echo "${ECHO_T}$cf_cv_netbsd_form_h" >&6
+if test "$cf_have_curses_lib" = no; then
+ as_ac_Lib=`echo "ac_cv_lib_panel$cf_cv_libtype''_new_panel" | $as_tr_sh`
+echo "$as_me:15864: checking for new_panel in -lpanel$cf_cv_libtype" >&5
+echo $ECHO_N "checking for new_panel in -lpanel$cf_cv_libtype... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Lib+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpanel$cf_cv_libtype $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 15872 "configure"
+#include "confdefs.h"
-test "$cf_cv_netbsd_form_h" = yes &&
-cat >>confdefs.h <<\EOF
-#define HAVE_NETBSD_FORM_H 1
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char new_panel ();
+int
+main (void)
+{
+new_panel ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:15891: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:15894: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:15897: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:15900: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Lib=yes"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_Lib=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:15911: result: `eval echo '${'$as_ac_Lib'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
+if test `eval echo '${'$as_ac_Lib'}'` = yes; then
+
+cf_upper=`echo "have_libpanel" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lpanel$cf_cv_libtype; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ cat >>confdefs.h <<EOF
+#define $cf_upper 1
EOF
-echo "$as_me:12012: checking for NetBSD menu.h" >&5
+fi
+
+fi
+
+ cf_curses_headers="$cf_curses_headers panel.h"
+fi
+
+echo "$as_me:15944: checking if you want to check for menu functions" >&5
+echo $ECHO_N "checking if you want to check for menu functions... $ECHO_C" >&6
+
+# Check whether --enable-menu or --disable-menu was given.
+if test "${enable_menu+set}" = set; then
+ enableval="$enable_menu"
+ test "$enableval" != no && enableval=yes
+ if test "$enableval" != "yes" ; then
+ cf_enable_menu=no
+ else
+ cf_enable_menu=$cf_default_menu
+ fi
+else
+ enableval=yes
+ cf_enable_menu=$cf_default_menu
+
+fi;
+echo "$as_me:15961: result: $cf_enable_menu" >&5
+echo "${ECHO_T}$cf_enable_menu" >&6
+if test $cf_enable_menu = yes
+then
+ case $cf_cv_screen in
+ (ncurses*)
+ ;;
+ (curses*)
+
+echo "$as_me:15970: checking for NetBSD menu.h" >&5
echo $ECHO_N "checking for NetBSD menu.h... $ECHO_C" >&6
if test "${cf_cv_netbsd_menu_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 12019 "configure"
+#line 15977 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
#include <menu.h>
int
-main ()
+main (void)
{
MENU *menu;
@@ -12034,16 +15992,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:12037: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15995: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12040: \$? = $ac_status" >&5
+ echo "$as_me:15998: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:12043: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16001: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12046: \$? = $ac_status" >&5
+ echo "$as_me:16004: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_netbsd_menu_h=yes
@@ -12055,7 +16013,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:12058: result: $cf_cv_netbsd_menu_h" >&5
+echo "$as_me:16016: result: $cf_cv_netbsd_menu_h" >&5
echo "${ECHO_T}$cf_cv_netbsd_menu_h" >&6
test "$cf_cv_netbsd_menu_h" = yes &&
@@ -12063,31 +16021,230 @@ cat >>confdefs.h <<\EOF
#define HAVE_NETBSD_MENU_H 1
EOF
+ ;;
+ esac
+
+cf_have_curses_lib=no
+
+: ${NCURSES_CONFIG_PKG:=none}
+if test "x${NCURSES_CONFIG_PKG}" = xnone; then
+ :
+elif test "x${PKG_CONFIG:=none}" != xnone; then
+ echo "$as_me:16033: checking pkg-config for menu$cf_cv_libtype" >&5
+echo $ECHO_N "checking pkg-config for menu$cf_cv_libtype... $ECHO_C" >&6
+ if "$PKG_CONFIG" --exists menu$cf_cv_libtype ; then
+ echo "$as_me:16036: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+ echo "$as_me:16039: checking if the menu$cf_cv_libtype package files work" >&5
+echo $ECHO_N "checking if the menu$cf_cv_libtype package files work... $ECHO_C" >&6
+
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_save_LIBS="$LIBS"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in `$PKG_CONFIG --cflags menu$cf_cv_libtype`
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
;;
-ncursesw)
- cf_cv_libtype=w
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
;;
esac
+done
-case $cf_cv_screen in #(vi
-pdcurses) #(vi
- ;;
-*)
- # look for curses-related libraries
- : ${cf_panel_lib:=panel}
- : ${cf_menu_lib:=menu}
- : ${cf_form_lib:=form}
-
-as_ac_Lib=`echo "ac_cv_lib_$cf_panel_lib$cf_cv_libtype''_new_panel" | $as_tr_sh`
-echo "$as_me:12082: checking for new_panel in -l$cf_panel_lib$cf_cv_libtype" >&5
-echo $ECHO_N "checking for new_panel in -l$cf_panel_lib$cf_cv_libtype... $ECHO_C" >&6
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in `$PKG_CONFIG --libs menu$cf_cv_libtype`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 16160 "configure"
+#include "confdefs.h"
+#include <menu.h>
+int
+main (void)
+{
+(void) menu_driver ( 0,0 );
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:16172: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:16175: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:16178: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:16181: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ if test "$cross_compiling" = yes; then
+ cf_have_curses_lib=maybe
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 16187 "configure"
+#include "confdefs.h"
+#include <menu.h>
+ int main(void)
+ { (void) menu_driver ( 0,0 ); return 0; }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:16194: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:16197: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:16199: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:16202: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_have_curses_lib=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_curses_lib=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_curses_lib=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ echo "$as_me:16219: result: $cf_have_curses_lib" >&5
+echo "${ECHO_T}$cf_have_curses_lib" >&6
+ test "$cf_have_curses_lib" = maybe && cf_have_curses_lib=yes
+ if test "$cf_have_curses_lib" != "yes"
+ then
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ else
+
+cf_upper=`echo "have_libmenu" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+
+ cat >>confdefs.h <<EOF
+#define $cf_upper 1
+EOF
+
+ fi
+ fi
+fi
+if test "$cf_have_curses_lib" = no; then
+ as_ac_Lib=`echo "ac_cv_lib_menu$cf_cv_libtype''_menu_driver" | $as_tr_sh`
+echo "$as_me:16239: checking for menu_driver in -lmenu$cf_cv_libtype" >&5
+echo $ECHO_N "checking for menu_driver in -lmenu$cf_cv_libtype... $ECHO_C" >&6
if eval "test \"\${$as_ac_Lib+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-l$cf_panel_lib$cf_cv_libtype $LIBS"
+LIBS="-lmenu$cf_cv_libtype $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 12090 "configure"
+#line 16247 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -12096,26 +16253,26 @@ extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char new_panel ();
+char menu_driver ();
int
-main ()
+main (void)
{
-new_panel ();
+menu_driver ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12109: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16266: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12112: \$? = $ac_status" >&5
+ echo "$as_me:16269: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12115: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16272: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12118: \$? = $ac_status" >&5
+ echo "$as_me:16275: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_Lib=yes"
else
@@ -12126,86 +16283,344 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:12129: result: `eval echo '${'$as_ac_Lib'}'`" >&5
+echo "$as_me:16286: result: `eval echo '${'$as_ac_Lib'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
if test `eval echo '${'$as_ac_Lib'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_LIB$cf_panel_lib$cf_cv_libtype" | $as_tr_cpp` 1
+
+cf_upper=`echo "have_libmenu" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lmenu$cf_cv_libtype; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ cat >>confdefs.h <<EOF
+#define $cf_upper 1
EOF
- LIBS="-l$cf_panel_lib$cf_cv_libtype $LIBS"
+fi
fi
-as_ac_Lib=`echo "ac_cv_lib_$cf_menu_lib$cf_cv_libtype''_menu_driver" | $as_tr_sh`
-echo "$as_me:12141: checking for menu_driver in -l$cf_menu_lib$cf_cv_libtype" >&5
-echo $ECHO_N "checking for menu_driver in -l$cf_menu_lib$cf_cv_libtype... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Lib+set}\" = set"; then
+ cf_curses_headers="$cf_curses_headers menu.h"
+fi
+
+echo "$as_me:16319: checking if you want to check for form functions" >&5
+echo $ECHO_N "checking if you want to check for form functions... $ECHO_C" >&6
+
+# Check whether --enable-form or --disable-form was given.
+if test "${enable_form+set}" = set; then
+ enableval="$enable_form"
+ test "$enableval" != no && enableval=yes
+ if test "$enableval" != "yes" ; then
+ cf_enable_form=no
+ else
+ cf_enable_form=$cf_default_form
+ fi
+else
+ enableval=yes
+ cf_enable_form=$cf_default_form
+
+fi;
+echo "$as_me:16336: result: $cf_enable_form" >&5
+echo "${ECHO_T}$cf_enable_form" >&6
+if test $cf_enable_form = yes
+then
+ case $cf_cv_screen in
+ (ncurses*)
+ ;;
+ (curses*)
+
+echo "$as_me:16345: checking for NetBSD form.h" >&5
+echo $ECHO_N "checking for NetBSD form.h... $ECHO_C" >&6
+if test "${cf_cv_netbsd_form_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-l$cf_menu_lib$cf_cv_libtype $LIBS"
+
cat >conftest.$ac_ext <<_ACEOF
-#line 12149 "configure"
+#line 16352 "configure"
#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char menu_driver ();
+#include <${cf_cv_ncurses_header:-curses.h}>
+#include <form.h>
+
int
-main ()
+main (void)
{
-menu_driver ();
+
+ FORM *form;
+ int y = current_field(form)->cursor_ypos;
+ int x = current_field(form)->cursor_xpos;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:16371: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:16374: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:16377: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:16380: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_netbsd_form_h=yes
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_netbsd_form_h=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:16392: result: $cf_cv_netbsd_form_h" >&5
+echo "${ECHO_T}$cf_cv_netbsd_form_h" >&6
+
+test "$cf_cv_netbsd_form_h" = yes &&
+cat >>confdefs.h <<\EOF
+#define HAVE_NETBSD_FORM_H 1
+EOF
+
+ ;;
+ esac
+
+cf_have_curses_lib=no
+
+: ${NCURSES_CONFIG_PKG:=none}
+if test "x${NCURSES_CONFIG_PKG}" = xnone; then
+ :
+elif test "x${PKG_CONFIG:=none}" != xnone; then
+ echo "$as_me:16409: checking pkg-config for form$cf_cv_libtype" >&5
+echo $ECHO_N "checking pkg-config for form$cf_cv_libtype... $ECHO_C" >&6
+ if "$PKG_CONFIG" --exists form$cf_cv_libtype ; then
+ echo "$as_me:16412: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+ echo "$as_me:16415: checking if the form$cf_cv_libtype package files work" >&5
+echo $ECHO_N "checking if the form$cf_cv_libtype package files work... $ECHO_C" >&6
+
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ cf_save_LIBS="$LIBS"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in `$PKG_CONFIG --cflags form$cf_cv_libtype`
+do
+case $cf_fix_cppflags in
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ (*$cf_add_cflags)
+ ;;
+ (*)
+ case $cf_add_cflags in
+ (-D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
+ ;;
+ esac
+ ;;
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
+fi
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in `$PKG_CONFIG --libs form$cf_cv_libtype`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 16536 "configure"
+#include "confdefs.h"
+#include <form.h>
+int
+main (void)
+{
+(void) form_driver ( 0,0 );
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12168: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16548: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12171: \$? = $ac_status" >&5
+ echo "$as_me:16551: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12174: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16554: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12177: \$? = $ac_status" >&5
+ echo "$as_me:16557: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- eval "$as_ac_Lib=yes"
+ if test "$cross_compiling" = yes; then
+ cf_have_curses_lib=maybe
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 16563 "configure"
+#include "confdefs.h"
+#include <form.h>
+ int main(void)
+ { (void) form_driver ( 0,0 ); return 0; }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:16570: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:16573: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:16575: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:16578: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_have_curses_lib=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_have_curses_lib=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-eval "$as_ac_Lib=no"
+cf_have_curses_lib=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:12188: result: `eval echo '${'$as_ac_Lib'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
-if test `eval echo '${'$as_ac_Lib'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_LIB$cf_menu_lib$cf_cv_libtype" | $as_tr_cpp` 1
-EOF
+ echo "$as_me:16595: result: $cf_have_curses_lib" >&5
+echo "${ECHO_T}$cf_have_curses_lib" >&6
+ test "$cf_have_curses_lib" = maybe && cf_have_curses_lib=yes
+ if test "$cf_have_curses_lib" != "yes"
+ then
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ LIBS="$cf_save_LIBS"
+ else
- LIBS="-l$cf_menu_lib$cf_cv_libtype $LIBS"
+cf_upper=`echo "have_libform" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-fi
+ cat >>confdefs.h <<EOF
+#define $cf_upper 1
+EOF
-as_ac_Lib=`echo "ac_cv_lib_$cf_form_lib$cf_cv_libtype''_form_driver" | $as_tr_sh`
-echo "$as_me:12200: checking for form_driver in -l$cf_form_lib$cf_cv_libtype" >&5
-echo $ECHO_N "checking for form_driver in -l$cf_form_lib$cf_cv_libtype... $ECHO_C" >&6
+ fi
+ fi
+fi
+if test "$cf_have_curses_lib" = no; then
+ as_ac_Lib=`echo "ac_cv_lib_form$cf_cv_libtype''_form_driver" | $as_tr_sh`
+echo "$as_me:16615: checking for form_driver in -lform$cf_cv_libtype" >&5
+echo $ECHO_N "checking for form_driver in -lform$cf_cv_libtype... $ECHO_C" >&6
if eval "test \"\${$as_ac_Lib+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-l$cf_form_lib$cf_cv_libtype $LIBS"
+LIBS="-lform$cf_cv_libtype $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 12208 "configure"
+#line 16623 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -12216,7 +16631,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char form_driver ();
int
-main ()
+main (void)
{
form_driver ();
;
@@ -12224,16 +16639,16 @@ form_driver ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12227: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16642: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12230: \$? = $ac_status" >&5
+ echo "$as_me:16645: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12233: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16648: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12236: \$? = $ac_status" >&5
+ echo "$as_me:16651: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_Lib=yes"
else
@@ -12244,46 +16659,61 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:12247: result: `eval echo '${'$as_ac_Lib'}'`" >&5
+echo "$as_me:16662: result: `eval echo '${'$as_ac_Lib'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
if test `eval echo '${'$as_ac_Lib'}'` = yes; then
- cat >>confdefs.h <<EOF
-#define `echo "HAVE_LIB$cf_form_lib$cf_cv_libtype" | $as_tr_cpp` 1
+
+cf_upper=`echo "have_libform" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lform$cf_cv_libtype; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ cat >>confdefs.h <<EOF
+#define $cf_upper 1
EOF
- LIBS="-l$cf_form_lib$cf_cv_libtype $LIBS"
+fi
fi
- # look for curses-related headers
+ cf_curses_headers="$cf_curses_headers form.h"
+fi
-for ac_header in \
- nc_alloc.h \
- nomacros.h \
- form.h \
- menu.h \
- panel.h \
- term_entry.h \
+# look for curses-related headers
+for ac_header in $cf_curses_headers
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:12270: checking for $ac_header" >&5
+echo "$as_me:16700: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 12276 "configure"
+#line 16706 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:12280: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:16710: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:12286: \$? = $ac_status" >&5
+ echo "$as_me:16716: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -12302,7 +16732,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:12305: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:16735: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -12312,16 +16742,13 @@ EOF
fi
done
- ;;
-esac
-
-echo "$as_me:12318: checking for ANSI C header files" >&5
+echo "$as_me:16745: checking for ANSI C header files" >&5
echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
if test "${ac_cv_header_stdc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 12324 "configure"
+#line 16751 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -12329,13 +16756,13 @@ else
#include <float.h>
_ACEOF
-if { (eval echo "$as_me:12332: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:16759: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:12338: \$? = $ac_status" >&5
+ echo "$as_me:16765: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -12357,7 +16784,7 @@ rm -f conftest.err conftest.$ac_ext
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat >conftest.$ac_ext <<_ACEOF
-#line 12360 "configure"
+#line 16787 "configure"
#include "confdefs.h"
#include <string.h>
@@ -12375,7 +16802,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 <<_ACEOF
-#line 12378 "configure"
+#line 16805 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -12396,7 +16823,7 @@ if test $ac_cv_header_stdc = yes; then
:
else
cat >conftest.$ac_ext <<_ACEOF
-#line 12399 "configure"
+#line 16826 "configure"
#include "confdefs.h"
#include <ctype.h>
#if ((' ' & 0x0FF) == 0x020)
@@ -12411,7 +16838,7 @@ else
#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
int
-main ()
+main (void)
{
int i;
for (i = 0; i < 256; i++)
@@ -12422,15 +16849,15 @@ main ()
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:12425: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16852: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12428: \$? = $ac_status" >&5
+ echo "$as_me:16855: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:12430: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16857: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12433: \$? = $ac_status" >&5
+ echo "$as_me:16860: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -12443,7 +16870,7 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
fi
-echo "$as_me:12446: result: $ac_cv_header_stdc" >&5
+echo "$as_me:16873: result: $ac_cv_header_stdc" >&5
echo "${ECHO_T}$ac_cv_header_stdc" >&6
if test $ac_cv_header_stdc = yes; then
@@ -12453,20 +16880,20 @@ EOF
fi
-echo "$as_me:12456: checking whether time.h and sys/time.h may both be included" >&5
+echo "$as_me:16883: checking whether time.h and sys/time.h may both be included" >&5
echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
if test "${ac_cv_header_time+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 12462 "configure"
+#line 16889 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
#include <time.h>
int
-main ()
+main (void)
{
if ((struct tm *) 0)
return 0;
@@ -12475,16 +16902,16 @@ return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:12478: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:16905: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12481: \$? = $ac_status" >&5
+ echo "$as_me:16908: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:12484: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16911: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12487: \$? = $ac_status" >&5
+ echo "$as_me:16914: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_header_time=yes
else
@@ -12494,7 +16921,7 @@ ac_cv_header_time=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:12497: result: $ac_cv_header_time" >&5
+echo "$as_me:16924: result: $ac_cv_header_time" >&5
echo "${ECHO_T}$ac_cv_header_time" >&6
if test $ac_cv_header_time = yes; then
@@ -12509,6 +16936,7 @@ getopt.h \
locale.h \
math.h \
stdarg.h \
+stdint.h \
sys/ioctl.h \
sys/select.h \
sys/time.h \
@@ -12517,23 +16945,23 @@ unistd.h \
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:12520: checking for $ac_header" >&5
+echo "$as_me:16948: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 12526 "configure"
+#line 16954 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:12530: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:16958: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:12536: \$? = $ac_status" >&5
+ echo "$as_me:16964: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -12552,7 +16980,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:12555: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:16983: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -12565,23 +16993,23 @@ done
for ac_header in unistd.h getopt.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:12568: checking for $ac_header" >&5
+echo "$as_me:16996: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 12574 "configure"
+#line 17002 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:12578: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:17006: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:12584: \$? = $ac_status" >&5
+ echo "$as_me:17012: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -12600,7 +17028,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:12603: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:17031: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -12610,7 +17038,7 @@ EOF
fi
done
-echo "$as_me:12613: checking for header declaring getopt variables" >&5
+echo "$as_me:17041: checking for header declaring getopt variables" >&5
echo $ECHO_N "checking for header declaring getopt variables... $ECHO_C" >&6
if test "${cf_cv_getopt_header+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -12620,12 +17048,12 @@ cf_cv_getopt_header=none
for cf_header in stdio.h stdlib.h unistd.h getopt.h
do
cat >conftest.$ac_ext <<_ACEOF
-#line 12623 "configure"
+#line 17051 "configure"
#include "confdefs.h"
#include <$cf_header>
int
-main ()
+main (void)
{
int x = optind; char *y = optarg
;
@@ -12633,16 +17061,16 @@ int x = optind; char *y = optarg
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:12636: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17064: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12639: \$? = $ac_status" >&5
+ echo "$as_me:17067: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:12642: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17070: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12645: \$? = $ac_status" >&5
+ echo "$as_me:17073: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_getopt_header=$cf_header
break
@@ -12654,7 +17082,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:12657: result: $cf_cv_getopt_header" >&5
+echo "$as_me:17085: result: $cf_cv_getopt_header" >&5
echo "${ECHO_T}$cf_cv_getopt_header" >&6
if test $cf_cv_getopt_header != none ; then
@@ -12663,59 +17091,69 @@ cat >>confdefs.h <<\EOF
EOF
fi
+if test $cf_cv_getopt_header = getopt.h ; then
+
+cat >>confdefs.h <<\EOF
+#define NEED_GETOPT_H 1
+EOF
+
+fi
for ac_func in \
+getopt \
gettimeofday \
+strstr \
+tsearch \
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:12672: checking for $ac_func" >&5
+echo "$as_me:17110: checking for $ac_func" >&5
echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 12678 "configure"
+#line 17116 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define $ac_func autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef $ac_func
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+char $ac_func (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for $ac_func
#endif
+ return $ac_func ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12709: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17147: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12712: \$? = $ac_status" >&5
+ echo "$as_me:17150: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12715: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17153: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12718: \$? = $ac_status" >&5
+ echo "$as_me:17156: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_var=yes"
else
@@ -12725,7 +17163,7 @@ eval "$as_ac_var=no"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:12728: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "$as_me:17166: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
if test `eval echo '${'$as_ac_var'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -12735,6 +17173,126 @@ EOF
fi
done
+# use a compile-check to work with ncurses*-config and subdirectory includes
+echo "$as_me:17177: checking if we can use termcap.h" >&5
+echo $ECHO_N "checking if we can use termcap.h... $ECHO_C" >&6
+if test "${cf_cv_have_termcap_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 17184 "configure"
+#include "confdefs.h"
+
+#include <curses.h>
+#ifdef NCURSES_VERSION
+#undef NCURSES_VERSION
+#endif
+#include <termcap.h>
+#ifndef NCURSES_VERSION
+#error wrong header
+#endif
+
+int
+main (void)
+{
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:17205: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:17208: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:17211: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:17214: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_have_termcap_h=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_have_termcap_h=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:17224: result: $cf_cv_have_termcap_h" >&5
+echo "${ECHO_T}$cf_cv_have_termcap_h" >&6
+if test "x$cf_cv_have_termcap_h" = xyes
+then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_TERMCAP_H 1
+EOF
+
+else
+echo "$as_me:17234: checking if we can use ncurses/termcap.h" >&5
+echo $ECHO_N "checking if we can use ncurses/termcap.h... $ECHO_C" >&6
+if test "${cf_cv_have_ncurses_termcap_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 17241 "configure"
+#include "confdefs.h"
+
+#include <ncurses/curses.h>
+#ifdef NCURSES_VERSION
+#undef NCURSES_VERSION
+#endif
+#include <ncurses/termcap.h>
+#ifndef NCURSES_VERSION
+#error wrong header
+#endif
+
+int
+main (void)
+{
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:17262: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:17265: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:17268: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:17271: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_have_ncurses_termcap_h=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_have_ncurses_termcap_h=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:17281: result: $cf_cv_have_ncurses_termcap_h" >&5
+echo "${ECHO_T}$cf_cv_have_ncurses_termcap_h" >&6
+test "x$cf_cv_have_ncurses_termcap_h" = xyes &&
+cat >>confdefs.h <<\EOF
+#define HAVE_NCURSES_TERMCAP_H 1
+EOF
+
+fi
+
+if test "x$ac_cv_func_getopt" = xno; then
+ { { echo "$as_me:17291: error: getopt is required for building programs" >&5
+echo "$as_me: error: getopt is required for building programs" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
if test "$cf_enable_widec" = yes; then
for ac_func in \
@@ -12749,53 +17307,53 @@ wcstombs \
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:12752: checking for $ac_func" >&5
+echo "$as_me:17310: checking for $ac_func" >&5
echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 12758 "configure"
+#line 17316 "configure"
#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
+#define $ac_func autoconf_temporary
+#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef $ac_func
+
#ifdef __cplusplus
extern "C"
#endif
+
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char $ac_func ();
-char (*f) ();
+char $ac_func (void);
int
-main ()
+main (void)
{
-/* The GNU C library defines this for functions which it implements
+
+/* The GNU C library defines stubs for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#error found stub for $ac_func
#endif
+ return $ac_func ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12789: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17347: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12792: \$? = $ac_status" >&5
+ echo "$as_me:17350: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12795: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17353: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12798: \$? = $ac_status" >&5
+ echo "$as_me:17356: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_var=yes"
else
@@ -12805,7 +17363,7 @@ eval "$as_ac_var=no"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:12808: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "$as_me:17366: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
if test `eval echo '${'$as_ac_var'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -12817,20 +17375,21 @@ done
fi
-echo "$as_me:12820: checking if we must define _XOPEN_SOURCE_EXTENDED" >&5
-echo $ECHO_N "checking if we must define _XOPEN_SOURCE_EXTENDED... $ECHO_C" >&6
+echo "$as_me:17378: checking definition to turn on extended curses functions" >&5
+echo $ECHO_N "checking definition to turn on extended curses functions... $ECHO_C" >&6
if test "${cf_cv_need_xopen_extension+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
+cf_cv_need_xopen_extension=unknown
cat >conftest.$ac_ext <<_ACEOF
-#line 12827 "configure"
+#line 17386 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
#if defined(NCURSES_VERSION_PATCH)
@@ -12838,6 +17397,10 @@ main ()
make an error
#endif
#endif
+#ifdef NCURSES_VERSION
+ cchar_t check;
+ int check2 = curs_set((int)sizeof(check));
+#endif
long x = winnstr(stdscr, "", 0);
int x1, y1;
getbegyx(stdscr, y1, x1)
@@ -12846,70 +17409,83 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12849: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17412: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12852: \$? = $ac_status" >&5
+ echo "$as_me:17415: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12855: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17418: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12858: \$? = $ac_status" >&5
+ echo "$as_me:17421: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- cf_cv_need_xopen_extension=no
+ cf_cv_need_xopen_extension=none
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-cat >conftest.$ac_ext <<_ACEOF
-#line 12865 "configure"
+
+ for cf_try_xopen_extension in _XOPEN_SOURCE_EXTENDED NCURSES_WIDECHAR
+ do
+ cat >conftest.$ac_ext <<_ACEOF
+#line 17431 "configure"
#include "confdefs.h"
-#define _XOPEN_SOURCE_EXTENDED
+#define $cf_try_xopen_extension 1
#include <stdlib.h>
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
#ifdef NCURSES_VERSION
- cchar_t check;
- int check2 = curs_set((int)sizeof(check));
+ cchar_t check;
+ int check2 = curs_set((int)sizeof(check));
#endif
- long x = winnstr(stdscr, "", 0);
- int x1, y1;
- getbegyx(stdscr, y1, x1)
+ long x = winnstr(stdscr, "", 0);
+ int x1, y1;
+ getbegyx(stdscr, y1, x1)
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12887: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17453: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12890: \$? = $ac_status" >&5
+ echo "$as_me:17456: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12893: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17459: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12896: \$? = $ac_status" >&5
+ echo "$as_me:17462: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- cf_cv_need_xopen_extension=yes
+ cf_cv_need_xopen_extension=$cf_try_xopen_extension; break
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-cf_cv_need_xopen_extension=unknown
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ done
+
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+
fi
-echo "$as_me:12908: result: $cf_cv_need_xopen_extension" >&5
+echo "$as_me:17476: result: $cf_cv_need_xopen_extension" >&5
echo "${ECHO_T}$cf_cv_need_xopen_extension" >&6
-test $cf_cv_need_xopen_extension = yes && CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
-echo "$as_me:12912: checking for term.h" >&5
+case $cf_cv_need_xopen_extension in
+(*_*)
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D$cf_cv_need_xopen_extension"
+
+ ;;
+esac
+
+echo "$as_me:17488: checking for term.h" >&5
echo $ECHO_N "checking for term.h... $ECHO_C" >&6
if test "${cf_cv_term_header+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -12920,8 +17496,8 @@ else
cf_header_list="term.h ncurses/term.h ncursesw/term.h"
-case ${cf_cv_ncurses_header:-curses.h} in #(vi
-*/*)
+case ${cf_cv_ncurses_header:-curses.h} in
+(*/*)
cf_header_item=`echo ${cf_cv_ncurses_header:-curses.h} | sed -e 's%\..*%%' -e 's%/.*%/%'`term.h
cf_header_list="$cf_header_item $cf_header_list"
;;
@@ -12930,13 +17506,13 @@ esac
for cf_header in $cf_header_list
do
cat >conftest.$ac_ext <<_ACEOF
-#line 12933 "configure"
+#line 17509 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
#include <${cf_header}>
int
-main ()
+main (void)
{
WINDOW *x
;
@@ -12944,16 +17520,16 @@ WINDOW *x
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:12947: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17523: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12950: \$? = $ac_status" >&5
+ echo "$as_me:17526: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:12953: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17529: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12956: \$? = $ac_status" >&5
+ echo "$as_me:17532: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_term_header=$cf_header
break
@@ -12965,14 +17541,14 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
done
-case $cf_cv_term_header in #(vi
-no)
+case $cf_cv_term_header in
+(no)
# If curses is ncurses, some packagers still mess it up by trying to make
# us use GNU termcap. This handles the most common case.
for cf_header in ncurses/term.h ncursesw/term.h
do
cat >conftest.$ac_ext <<_ACEOF
-#line 12975 "configure"
+#line 17551 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
@@ -12982,7 +17558,7 @@ no)
make an error
#endif
int
-main ()
+main (void)
{
WINDOW *x
;
@@ -12990,16 +17566,16 @@ WINDOW *x
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:12993: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17569: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12996: \$? = $ac_status" >&5
+ echo "$as_me:17572: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:12999: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17575: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13002: \$? = $ac_status" >&5
+ echo "$as_me:17578: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_term_header=$cf_header
break
@@ -13014,25 +17590,25 @@ rm -f conftest.$ac_objext conftest.$ac_ext
esac
fi
-echo "$as_me:13017: result: $cf_cv_term_header" >&5
+echo "$as_me:17593: result: $cf_cv_term_header" >&5
echo "${ECHO_T}$cf_cv_term_header" >&6
-case $cf_cv_term_header in #(vi
-term.h) #(vi
+case $cf_cv_term_header in
+(term.h)
cat >>confdefs.h <<\EOF
#define HAVE_TERM_H 1
EOF
;;
-ncurses/term.h) #(vi
+(ncurses/term.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSES_TERM_H 1
EOF
;;
-ncursesw/term.h)
+(ncursesw/term.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSESW_TERM_H 1
@@ -13041,7 +17617,7 @@ EOF
;;
esac
-echo "$as_me:13044: checking for unctrl.h" >&5
+echo "$as_me:17620: checking for unctrl.h" >&5
echo $ECHO_N "checking for unctrl.h... $ECHO_C" >&6
if test "${cf_cv_unctrl_header+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13052,8 +17628,8 @@ else
cf_header_list="unctrl.h ncurses/unctrl.h ncursesw/unctrl.h"
-case ${cf_cv_ncurses_header:-curses.h} in #(vi
-*/*)
+case ${cf_cv_ncurses_header:-curses.h} in
+(*/*)
cf_header_item=`echo ${cf_cv_ncurses_header:-curses.h} | sed -e 's%\..*%%' -e 's%/.*%/%'`unctrl.h
cf_header_list="$cf_header_item $cf_header_list"
;;
@@ -13062,13 +17638,13 @@ esac
for cf_header in $cf_header_list
do
cat >conftest.$ac_ext <<_ACEOF
-#line 13065 "configure"
+#line 17641 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
#include <${cf_header}>
int
-main ()
+main (void)
{
WINDOW *x
;
@@ -13076,16 +17652,16 @@ WINDOW *x
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13079: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17655: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:13082: \$? = $ac_status" >&5
+ echo "$as_me:17658: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13085: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17661: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13088: \$? = $ac_status" >&5
+ echo "$as_me:17664: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_unctrl_header=$cf_header
break
@@ -13098,32 +17674,32 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:13101: result: $cf_cv_unctrl_header" >&5
+echo "$as_me:17677: result: $cf_cv_unctrl_header" >&5
echo "${ECHO_T}$cf_cv_unctrl_header" >&6
-case $cf_cv_unctrl_header in #(vi
-no)
- { echo "$as_me:13106: WARNING: unctrl.h header not found" >&5
+case $cf_cv_unctrl_header in
+(no)
+ { echo "$as_me:17682: WARNING: unctrl.h header not found" >&5
echo "$as_me: WARNING: unctrl.h header not found" >&2;}
;;
esac
-case $cf_cv_unctrl_header in #(vi
-unctrl.h) #(vi
+case $cf_cv_unctrl_header in
+(unctrl.h)
cat >>confdefs.h <<\EOF
#define HAVE_UNCTRL_H 1
EOF
;;
-ncurses/unctrl.h) #(vi
+(ncurses/unctrl.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSES_UNCTRL_H 1
EOF
;;
-ncursesw/unctrl.h)
+(ncursesw/unctrl.h)
cat >>confdefs.h <<\EOF
#define HAVE_NCURSESW_UNCTRL_H 1
@@ -13133,9 +17709,14 @@ EOF
esac
for cf_func in \
+alloc_pair \
assume_default_colors \
chgat \
+color_content \
color_set \
+copywin \
+delscreen \
+dupwin \
filter \
getbegx \
getcurx \
@@ -13143,12 +17724,19 @@ getmaxx \
getnstr \
getparx \
getwin \
+halfdelay \
+init_extended_color \
+mvderwin \
mvvline \
+mvwin \
mvwvline \
napms \
+newpad \
putwin \
+reset_color_pairs \
resize_term \
resizeterm \
+restartterm \
ripoffline \
scr_dump \
setupterm \
@@ -13158,25 +17746,32 @@ termattrs \
tgetent \
tigetnum \
tigetstr \
+tputs_sp \
typeahead \
use_default_colors \
+use_env \
+use_extended_names \
use_screen \
use_window \
+vid_puts \
+vidputs \
vsscanf \
vw_printw \
wchgat \
+winsdelln \
winsstr \
wresize \
wsyncdown \
+_tracef \
do
cf_tr_func=`echo "$cf_func" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
- echo "$as_me:13176: checking for ${cf_func}" >&5
+ echo "$as_me:17771: checking for ${cf_func}" >&5
echo $ECHO_N "checking for ${cf_func}... $ECHO_C" >&6
-echo "${as_me:-configure}:13179: testing ${cf_func} ..." 1>&5
+echo "${as_me:-configure}:17774: testing ${cf_func} ..." 1>&5
if eval "test \"\${cf_cv_func_$cf_func+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13185,7 +17780,7 @@ else
eval cf_result='$ac_cv_func_'$cf_func
if test ".$cf_result" != ".no"; then
cat >conftest.$ac_ext <<_ACEOF
-#line 13188 "configure"
+#line 17783 "configure"
#include "confdefs.h"
#ifdef HAVE_XCURSES
@@ -13203,13 +17798,14 @@ char * XCursesProgramName = "test";
#endif
int
-main ()
+main (void)
{
#ifndef ${cf_func}
long foo = (long)(&${cf_func});
-if (foo + 1234 > 5678)
- ${cf_cv_main_return:-return}(foo);
+fprintf(stderr, "testing linkage of $cf_func:%p\n", (void *)foo);
+if (foo + 1234L > 5678L)
+ ${cf_cv_main_return:-return}(foo != 0);
#endif
;
@@ -13217,16 +17813,16 @@ if (foo + 1234 > 5678)
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13220: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17816: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13223: \$? = $ac_status" >&5
+ echo "$as_me:17819: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13226: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17822: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13229: \$? = $ac_status" >&5
+ echo "$as_me:17825: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=yes
else
@@ -13242,7 +17838,7 @@ fi
# use the computed/retrieved cache-value:
eval 'cf_result=$cf_cv_func_'$cf_func
- echo "$as_me:13245: result: $cf_result" >&5
+ echo "$as_me:17841: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
if test $cf_result != no; then
cat >>confdefs.h <<EOF
@@ -13257,10 +17853,10 @@ do
cf_tr_func=`echo "$cf_func" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
- echo "$as_me:13260: checking for ${cf_func}" >&5
+ echo "$as_me:17856: checking for ${cf_func}" >&5
echo $ECHO_N "checking for ${cf_func}... $ECHO_C" >&6
-echo "${as_me:-configure}:13263: testing ${cf_func} ..." 1>&5
+echo "${as_me:-configure}:17859: testing ${cf_func} ..." 1>&5
if eval "test \"\${cf_cv_func_$cf_func+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13269,7 +17865,7 @@ else
eval cf_result='$ac_cv_func_'$cf_func
if test ".$cf_result" != ".no"; then
cat >conftest.$ac_ext <<_ACEOF
-#line 13272 "configure"
+#line 17868 "configure"
#include "confdefs.h"
#ifdef HAVE_XCURSES
@@ -13287,13 +17883,14 @@ char * XCursesProgramName = "test";
#endif
int
-main ()
+main (void)
{
#ifndef ${cf_func}
long foo = (long)(&${cf_func});
-if (foo + 1234 > 5678)
- ${cf_cv_main_return:-return}(foo);
+fprintf(stderr, "testing linkage of $cf_func:%p\n", (void *)foo);
+if (foo + 1234L > 5678L)
+ ${cf_cv_main_return:-return}(foo != 0);
#endif
;
@@ -13301,16 +17898,16 @@ if (foo + 1234 > 5678)
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13304: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17901: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13307: \$? = $ac_status" >&5
+ echo "$as_me:17904: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13310: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17907: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13313: \$? = $ac_status" >&5
+ echo "$as_me:17910: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=yes
else
@@ -13326,7 +17923,7 @@ fi
# use the computed/retrieved cache-value:
eval 'cf_result=$cf_cv_func_'$cf_func
- echo "$as_me:13329: result: $cf_result" >&5
+ echo "$as_me:17926: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
if test $cf_result != no; then
cat >>confdefs.h <<EOF
@@ -13350,7 +17947,7 @@ then
cf_return="return value"
fi
cat >conftest.$ac_ext <<_ACEOF
-#line 13353 "configure"
+#line 17950 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
@@ -13359,7 +17956,7 @@ then
static $cf_ret outc($cf_arg value) { $cf_return; }
int
-main ()
+main (void)
{
tputs("hello", 0, outc);
@@ -13370,21 +17967,21 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13373: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17970: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:13376: \$? = $ac_status" >&5
+ echo "$as_me:17973: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13379: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17976: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13382: \$? = $ac_status" >&5
+ echo "$as_me:17979: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
test -n "$verbose" && echo " prototype $cf_ret func($cf_arg value)" 1>&6
-echo "${as_me:-configure}:13387: testing prototype $cf_ret func($cf_arg value) ..." 1>&5
+echo "${as_me:-configure}:17984: testing prototype $cf_ret func($cf_arg value) ..." 1>&5
cat >>confdefs.h <<EOF
#define TPUTS_ARG $cf_arg
@@ -13404,19 +18001,19 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:13407: checking for ncurses extended functions" >&5
+echo "$as_me:18004: checking for ncurses extended functions" >&5
echo $ECHO_N "checking for ncurses extended functions... $ECHO_C" >&6
if test "${cf_cv_ncurses_ext_funcs+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13414 "configure"
+#line 18011 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
int x = NCURSES_EXT_FUNCS
@@ -13426,16 +18023,16 @@ int x = NCURSES_EXT_FUNCS
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13429: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18026: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:13432: \$? = $ac_status" >&5
+ echo "$as_me:18029: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13435: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18032: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13438: \$? = $ac_status" >&5
+ echo "$as_me:18035: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_ext_funcs=defined
else
@@ -13443,12 +18040,12 @@ else
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 13446 "configure"
+#line 18043 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
(void) assume_default_colors (0, 0);
@@ -13468,16 +18065,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13471: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18068: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13474: \$? = $ac_status" >&5
+ echo "$as_me:18071: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13477: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18074: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13480: \$? = $ac_status" >&5
+ echo "$as_me:18077: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ncurses_ext_funcs=yes
else
@@ -13491,7 +18088,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:13494: result: $cf_cv_ncurses_ext_funcs" >&5
+echo "$as_me:18091: result: $cf_cv_ncurses_ext_funcs" >&5
echo "${ECHO_T}$cf_cv_ncurses_ext_funcs" >&6
test "$cf_cv_ncurses_ext_funcs" = yes &&
cat >>confdefs.h <<\EOF
@@ -13505,16 +18102,16 @@ then
if test -n "$cf_cv_ncurses_version" && test "x$cf_cv_ncurses_version" != xno
then
cf_define_xpg5=no
- echo "$as_me:13508: checking if _XPG5 should be defined to enable wide-characters" >&5
+ echo "$as_me:18105: checking if _XPG5 should be defined to enable wide-characters" >&5
echo $ECHO_N "checking if _XPG5 should be defined to enable wide-characters... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 13512 "configure"
+#line 18109 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
int x = _XPG5
;
@@ -13522,16 +18119,16 @@ int x = _XPG5
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13525: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18122: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:13528: \$? = $ac_status" >&5
+ echo "$as_me:18125: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13531: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18128: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13534: \$? = $ac_status" >&5
+ echo "$as_me:18131: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -13540,12 +18137,12 @@ cat conftest.$ac_ext >&5
cf_save_cppflags="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -D_XPG5"
cat >conftest.$ac_ext <<_ACEOF
-#line 13543 "configure"
+#line 18140 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
int x = _XPG5
;
@@ -13553,16 +18150,16 @@ int x = _XPG5
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13556: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18153: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:13559: \$? = $ac_status" >&5
+ echo "$as_me:18156: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13562: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18159: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13565: \$? = $ac_status" >&5
+ echo "$as_me:18162: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_define_xpg5=yes
else
@@ -13573,7 +18170,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
CPPFLAGS="$cf_save_cppflags"
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- echo "$as_me:13576: result: $cf_define_xpg5" >&5
+ echo "$as_me:18173: result: $cf_define_xpg5" >&5
echo "${ECHO_T}$cf_define_xpg5" >&6
if test "$cf_define_xpg5" = yes
@@ -13582,19 +18179,19 @@ echo "${ECHO_T}$cf_define_xpg5" >&6
fi
fi
- echo "$as_me:13585: checking for wide-character functions" >&5
+ echo "$as_me:18182: checking for wide-character functions" >&5
echo $ECHO_N "checking for wide-character functions... $ECHO_C" >&6
if test "${cf_cv_widechar_funcs+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13592 "configure"
+#line 18189 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
static wchar_t src_wchar[2];
@@ -13606,16 +18203,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13609: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18206: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13612: \$? = $ac_status" >&5
+ echo "$as_me:18209: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13615: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18212: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13618: \$? = $ac_status" >&5
+ echo "$as_me:18215: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_widechar_funcs=yes
else
@@ -13626,7 +18223,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:13629: result: $cf_cv_widechar_funcs" >&5
+echo "$as_me:18226: result: $cf_cv_widechar_funcs" >&5
echo "${ECHO_T}$cf_cv_widechar_funcs" >&6
if test "$cf_cv_widechar_funcs" != no ; then
@@ -13647,14 +18244,66 @@ EOF
fi
-echo "$as_me:13650: checking if sys/time.h works with sys/select.h" >&5
+echo "$as_me:18247: checking if $cf_cv_screen library uses pthreads" >&5
+echo $ECHO_N "checking if $cf_cv_screen library uses pthreads... $ECHO_C" >&6
+if test "${cf_cv_use_pthreads+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 18254 "configure"
+#include "confdefs.h"
+
+#include <${cf_cv_ncurses_header:-curses.h}>
+extern void _nc_init_pthreads(void);
+
+int
+main (void)
+{
+
+ initscr();
+ _nc_init_pthreads();
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:18272: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:18275: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:18278: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:18281: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_use_pthreads=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_use_pthreads=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+
+fi
+echo "$as_me:18292: result: $cf_cv_use_pthreads" >&5
+echo "${ECHO_T}$cf_cv_use_pthreads" >&6
+test $cf_cv_use_pthreads = yes &&
+cat >>confdefs.h <<\EOF
+#define USE_PTHREADS 1
+EOF
+
+echo "$as_me:18299: checking if sys/time.h works with sys/select.h" >&5
echo $ECHO_N "checking if sys/time.h works with sys/select.h... $ECHO_C" >&6
if test "${cf_cv_sys_time_select+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13657 "configure"
+#line 18306 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -13666,7 +18315,7 @@ cat >conftest.$ac_ext <<_ACEOF
#endif
int
-main ()
+main (void)
{
;
@@ -13674,16 +18323,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13677: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18326: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:13680: \$? = $ac_status" >&5
+ echo "$as_me:18329: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13683: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18332: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13686: \$? = $ac_status" >&5
+ echo "$as_me:18335: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_sys_time_select=yes
else
@@ -13695,14 +18344,176 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:13698: result: $cf_cv_sys_time_select" >&5
+echo "$as_me:18347: result: $cf_cv_sys_time_select" >&5
echo "${ECHO_T}$cf_cv_sys_time_select" >&6
test "$cf_cv_sys_time_select" = yes &&
cat >>confdefs.h <<\EOF
#define HAVE_SYS_TIME_SELECT 1
EOF
-echo "$as_me:13705: checking for function curses_version" >&5
+# special check for test/ditto.c
+
+echo "$as_me:18356: checking for openpty in -lutil" >&5
+echo $ECHO_N "checking for openpty in -lutil... $ECHO_C" >&6
+if test "${ac_cv_lib_util_openpty+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lutil $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 18364 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char openpty ();
+int
+main (void)
+{
+openpty ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:18383: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:18386: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:18389: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:18392: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_util_openpty=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_util_openpty=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:18403: result: $ac_cv_lib_util_openpty" >&5
+echo "${ECHO_T}$ac_cv_lib_util_openpty" >&6
+if test $ac_cv_lib_util_openpty = yes; then
+ cf_cv_lib_util=yes
+else
+ cf_cv_lib_util=no
+fi
+
+echo "$as_me:18411: checking for openpty header" >&5
+echo $ECHO_N "checking for openpty header... $ECHO_C" >&6
+if test "${cf_cv_func_openpty+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cf_save_LIBS="$LIBS"
+ test $cf_cv_lib_util = yes && {
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lutil; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+ }
+ for cf_header in pty.h libutil.h util.h
+ do
+ cat >conftest.$ac_ext <<_ACEOF
+#line 18438 "configure"
+#include "confdefs.h"
+
+#include <$cf_header>
+
+int
+main (void)
+{
+
+ int x = openpty((int *)0, (int *)0, (char *)0,
+ (struct termios *)0, (struct winsize *)0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:18455: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:18458: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:18461: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:18464: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ cf_cv_func_openpty=$cf_header
+ break
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+ cf_cv_func_openpty=no
+
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ done
+ LIBS="$cf_save_LIBS"
+
+fi
+echo "$as_me:18482: result: $cf_cv_func_openpty" >&5
+echo "${ECHO_T}$cf_cv_func_openpty" >&6
+
+if test "$cf_cv_func_openpty" != no ; then
+
+cat >>confdefs.h <<EOF
+#define USE_OPENPTY_HEADER <$cf_cv_func_openpty>
+EOF
+
+cat >>confdefs.h <<\EOF
+#define USE_XTERM_PTY 1
+EOF
+
+ if test "x$cf_cv_lib_util" = xyes ; then
+
+cf_add_libs="$TEST_LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lutil; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+TEST_LIBS="$cf_add_libs"
+
+ fi
+fi
+
+echo "$as_me:18516: checking for function curses_version" >&5
echo $ECHO_N "checking for function curses_version... $ECHO_C" >&6
if test "${cf_cv_func_curses_version+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13712,11 +18523,11 @@ if test "$cross_compiling" = yes; then
cf_cv_func_curses_version=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13715 "configure"
+#line 18526 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
-int main()
+int main(void)
{
char temp[1024];
sprintf(temp, "%s\n", curses_version());
@@ -13725,15 +18536,15 @@ int main()
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:13728: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18539: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13731: \$? = $ac_status" >&5
+ echo "$as_me:18542: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:13733: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18544: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13736: \$? = $ac_status" >&5
+ echo "$as_me:18547: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_func_curses_version=yes
@@ -13748,14 +18559,14 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
rm -f core
fi
-echo "$as_me:13751: result: $cf_cv_func_curses_version" >&5
+echo "$as_me:18562: result: $cf_cv_func_curses_version" >&5
echo "${ECHO_T}$cf_cv_func_curses_version" >&6
test "$cf_cv_func_curses_version" = yes &&
cat >>confdefs.h <<\EOF
#define HAVE_CURSES_VERSION 1
EOF
-echo "$as_me:13758: checking for alternate character set array" >&5
+echo "$as_me:18569: checking for alternate character set array" >&5
echo $ECHO_N "checking for alternate character set array... $ECHO_C" >&6
if test "${cf_cv_curses_acs_map+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13765,13 +18576,13 @@ cf_cv_curses_acs_map=unknown
for name in acs_map _acs_map __acs_map ${NCURSES_WRAP_PREFIX}acs_map
do
cat >conftest.$ac_ext <<_ACEOF
-#line 13768 "configure"
+#line 18579 "configure"
#include "confdefs.h"
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
$name['k'] = ACS_PLUS
@@ -13781,16 +18592,16 @@ $name['k'] = ACS_PLUS
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13784: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18595: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13787: \$? = $ac_status" >&5
+ echo "$as_me:18598: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13790: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18601: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13793: \$? = $ac_status" >&5
+ echo "$as_me:18604: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_curses_acs_map=$name; break
else
@@ -13801,7 +18612,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
done
fi
-echo "$as_me:13804: result: $cf_cv_curses_acs_map" >&5
+echo "$as_me:18615: result: $cf_cv_curses_acs_map" >&5
echo "${ECHO_T}$cf_cv_curses_acs_map" >&6
test "$cf_cv_curses_acs_map" != unknown &&
@@ -13811,7 +18622,7 @@ EOF
if test "$cf_enable_widec" = yes; then
-echo "$as_me:13814: checking for wide alternate character set array" >&5
+echo "$as_me:18625: checking for wide alternate character set array" >&5
echo $ECHO_N "checking for wide alternate character set array... $ECHO_C" >&6
if test "${cf_cv_curses_wacs_map+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13821,7 +18632,7 @@ else
for name in wacs_map _wacs_map __wacs_map _nc_wacs _wacs_char
do
cat >conftest.$ac_ext <<_ACEOF
-#line 13824 "configure"
+#line 18635 "configure"
#include "confdefs.h"
#ifndef _XOPEN_SOURCE_EXTENDED
@@ -13829,7 +18640,7 @@ else
#endif
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
void *foo = &($name['k'])
;
@@ -13837,16 +18648,16 @@ void *foo = &($name['k'])
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13840: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18651: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13843: \$? = $ac_status" >&5
+ echo "$as_me:18654: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13846: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18657: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13849: \$? = $ac_status" >&5
+ echo "$as_me:18660: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_curses_wacs_map=$name
break
@@ -13857,7 +18668,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
done
fi
-echo "$as_me:13860: result: $cf_cv_curses_wacs_map" >&5
+echo "$as_me:18671: result: $cf_cv_curses_wacs_map" >&5
echo "${ECHO_T}$cf_cv_curses_wacs_map" >&6
test "$cf_cv_curses_wacs_map" != unknown &&
@@ -13865,7 +18676,7 @@ cat >>confdefs.h <<EOF
#define CURSES_WACS_ARRAY $cf_cv_curses_wacs_map
EOF
-echo "$as_me:13868: checking for wide alternate character constants" >&5
+echo "$as_me:18679: checking for wide alternate character constants" >&5
echo $ECHO_N "checking for wide alternate character constants... $ECHO_C" >&6
if test "${cf_cv_curses_wacs_symbols+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13875,7 +18686,7 @@ cf_cv_curses_wacs_symbols=no
if test "$cf_cv_curses_wacs_map" != unknown
then
cat >conftest.$ac_ext <<_ACEOF
-#line 13878 "configure"
+#line 18689 "configure"
#include "confdefs.h"
#ifndef _XOPEN_SOURCE_EXTENDED
@@ -13883,7 +18694,7 @@ then
#endif
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
cchar_t *foo = WACS_PLUS;
$cf_cv_curses_wacs_map['k'] = *WACS_PLUS
@@ -13892,16 +18703,16 @@ cchar_t *foo = WACS_PLUS;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13895: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18706: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13898: \$? = $ac_status" >&5
+ echo "$as_me:18709: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13901: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18712: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13904: \$? = $ac_status" >&5
+ echo "$as_me:18715: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_curses_wacs_symbols=yes
else
@@ -13911,7 +18722,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13914 "configure"
+#line 18725 "configure"
#include "confdefs.h"
#ifndef _XOPEN_SOURCE_EXTENDED
@@ -13919,7 +18730,7 @@ else
#endif
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
cchar_t *foo = WACS_PLUS
;
@@ -13927,16 +18738,16 @@ cchar_t *foo = WACS_PLUS
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13930: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18741: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13933: \$? = $ac_status" >&5
+ echo "$as_me:18744: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13936: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18747: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13939: \$? = $ac_status" >&5
+ echo "$as_me:18750: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_curses_wacs_symbols=yes
else
@@ -13947,7 +18758,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
fi
-echo "$as_me:13950: result: $cf_cv_curses_wacs_symbols" >&5
+echo "$as_me:18761: result: $cf_cv_curses_wacs_symbols" >&5
echo "${ECHO_T}$cf_cv_curses_wacs_symbols" >&6
test "$cf_cv_curses_wacs_symbols" != no &&
@@ -13957,10 +18768,10 @@ EOF
fi
-echo "$as_me:13960: checking for type attr_t in ${cf_cv_ncurses_header:-curses.h}" >&5
+echo "$as_me:18771: checking for type attr_t in ${cf_cv_ncurses_header:-curses.h}" >&5
echo $ECHO_N "checking for type attr_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 13963 "configure"
+#line 18774 "configure"
#include "confdefs.h"
#ifndef _XOPEN_SOURCE_EXTENDED
@@ -13968,7 +18779,7 @@ cat >conftest.$ac_ext <<_ACEOF
#endif
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
attr_t foo
@@ -13978,16 +18789,16 @@ attr_t foo
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13981: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18792: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:13984: \$? = $ac_status" >&5
+ echo "$as_me:18795: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13987: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18798: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13990: \$? = $ac_status" >&5
+ echo "$as_me:18801: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=yes
else
@@ -13996,7 +18807,7 @@ cat conftest.$ac_ext >&5
cf_result=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:13999: result: $cf_result" >&5
+echo "$as_me:18810: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
if test $cf_result = yes ; then
@@ -14017,14 +18828,14 @@ fi
if test "$cf_enable_widec" = yes; then
# This is needed on Tru64 5.0 to declare mbstate_t
-echo "$as_me:14020: checking if we must include wchar.h to declare mbstate_t" >&5
+echo "$as_me:18831: checking if we must include wchar.h to declare mbstate_t" >&5
echo $ECHO_N "checking if we must include wchar.h to declare mbstate_t... $ECHO_C" >&6
if test "${cf_cv_mbstate_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14027 "configure"
+#line 18838 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -14034,7 +18845,7 @@ cat >conftest.$ac_ext <<_ACEOF
#include <libutf8.h>
#endif
int
-main ()
+main (void)
{
mbstate_t state
;
@@ -14042,23 +18853,23 @@ mbstate_t state
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14045: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18856: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14048: \$? = $ac_status" >&5
+ echo "$as_me:18859: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14051: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18862: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14054: \$? = $ac_status" >&5
+ echo "$as_me:18865: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_mbstate_t=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 14061 "configure"
+#line 18872 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -14069,7 +18880,7 @@ cat >conftest.$ac_ext <<_ACEOF
#include <libutf8.h>
#endif
int
-main ()
+main (void)
{
mbstate_t value
;
@@ -14077,16 +18888,16 @@ mbstate_t value
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14080: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18891: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14083: \$? = $ac_status" >&5
+ echo "$as_me:18894: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14086: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18897: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14089: \$? = $ac_status" >&5
+ echo "$as_me:18900: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_mbstate_t=yes
else
@@ -14098,7 +18909,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:14101: result: $cf_cv_mbstate_t" >&5
+echo "$as_me:18912: result: $cf_cv_mbstate_t" >&5
echo "${ECHO_T}$cf_cv_mbstate_t" >&6
if test "$cf_cv_mbstate_t" = yes ; then
@@ -14121,14 +18932,14 @@ if test "$cf_cv_mbstate_t" != unknown ; then
fi
# This is needed on Tru64 5.0 to declare wchar_t
-echo "$as_me:14124: checking if we must include wchar.h to declare wchar_t" >&5
+echo "$as_me:18935: checking if we must include wchar.h to declare wchar_t" >&5
echo $ECHO_N "checking if we must include wchar.h to declare wchar_t... $ECHO_C" >&6
if test "${cf_cv_wchar_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14131 "configure"
+#line 18942 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -14138,7 +18949,7 @@ cat >conftest.$ac_ext <<_ACEOF
#include <libutf8.h>
#endif
int
-main ()
+main (void)
{
wchar_t state
;
@@ -14146,23 +18957,23 @@ wchar_t state
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14149: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18960: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14152: \$? = $ac_status" >&5
+ echo "$as_me:18963: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14155: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18966: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14158: \$? = $ac_status" >&5
+ echo "$as_me:18969: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_wchar_t=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 14165 "configure"
+#line 18976 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -14173,7 +18984,7 @@ cat >conftest.$ac_ext <<_ACEOF
#include <libutf8.h>
#endif
int
-main ()
+main (void)
{
wchar_t value
;
@@ -14181,16 +18992,16 @@ wchar_t value
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14184: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18995: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14187: \$? = $ac_status" >&5
+ echo "$as_me:18998: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14190: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19001: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14193: \$? = $ac_status" >&5
+ echo "$as_me:19004: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_wchar_t=yes
else
@@ -14202,7 +19013,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:14205: result: $cf_cv_wchar_t" >&5
+echo "$as_me:19016: result: $cf_cv_wchar_t" >&5
echo "${ECHO_T}$cf_cv_wchar_t" >&6
if test "$cf_cv_wchar_t" = yes ; then
@@ -14225,14 +19036,14 @@ if test "$cf_cv_wchar_t" != unknown ; then
fi
# This is needed on Tru64 5.0 to declare wint_t
-echo "$as_me:14228: checking if we must include wchar.h to declare wint_t" >&5
+echo "$as_me:19039: checking if we must include wchar.h to declare wint_t" >&5
echo $ECHO_N "checking if we must include wchar.h to declare wint_t... $ECHO_C" >&6
if test "${cf_cv_wint_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14235 "configure"
+#line 19046 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -14242,7 +19053,7 @@ cat >conftest.$ac_ext <<_ACEOF
#include <libutf8.h>
#endif
int
-main ()
+main (void)
{
wint_t state
;
@@ -14250,23 +19061,23 @@ wint_t state
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14253: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19064: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14256: \$? = $ac_status" >&5
+ echo "$as_me:19067: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14259: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19070: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14262: \$? = $ac_status" >&5
+ echo "$as_me:19073: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_wint_t=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 14269 "configure"
+#line 19080 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -14277,7 +19088,7 @@ cat >conftest.$ac_ext <<_ACEOF
#include <libutf8.h>
#endif
int
-main ()
+main (void)
{
wint_t value
;
@@ -14285,16 +19096,16 @@ wint_t value
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14288: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19099: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14291: \$? = $ac_status" >&5
+ echo "$as_me:19102: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14294: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19105: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14297: \$? = $ac_status" >&5
+ echo "$as_me:19108: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_wint_t=yes
else
@@ -14306,7 +19117,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:14309: result: $cf_cv_wint_t" >&5
+echo "$as_me:19120: result: $cf_cv_wint_t" >&5
echo "${ECHO_T}$cf_cv_wint_t" >&6
if test "$cf_cv_wint_t" = yes ; then
@@ -14330,10 +19141,10 @@ fi
if test "$NCURSES_OK_MBSTATE_T" = 0 ; then
-echo "$as_me:14333: checking for type mbstate_t in ${cf_cv_ncurses_header:-curses.h}" >&5
+echo "$as_me:19144: checking for type mbstate_t in ${cf_cv_ncurses_header:-curses.h}" >&5
echo $ECHO_N "checking for type mbstate_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 14336 "configure"
+#line 19147 "configure"
#include "confdefs.h"
#ifndef _XOPEN_SOURCE_EXTENDED
@@ -14341,7 +19152,7 @@ cat >conftest.$ac_ext <<_ACEOF
#endif
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
mbstate_t foo
@@ -14351,16 +19162,16 @@ mbstate_t foo
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14354: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19165: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14357: \$? = $ac_status" >&5
+ echo "$as_me:19168: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14360: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19171: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14363: \$? = $ac_status" >&5
+ echo "$as_me:19174: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=yes
else
@@ -14369,7 +19180,7 @@ cat conftest.$ac_ext >&5
cf_result=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:14372: result: $cf_result" >&5
+echo "$as_me:19183: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
if test $cf_result = yes ; then
@@ -14391,10 +19202,10 @@ fi
if test "$NCURSES_OK_WCHAR_T" = 0 ; then
-echo "$as_me:14394: checking for type wchar_t in ${cf_cv_ncurses_header:-curses.h}" >&5
+echo "$as_me:19205: checking for type wchar_t in ${cf_cv_ncurses_header:-curses.h}" >&5
echo $ECHO_N "checking for type wchar_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 14397 "configure"
+#line 19208 "configure"
#include "confdefs.h"
#ifndef _XOPEN_SOURCE_EXTENDED
@@ -14402,7 +19213,7 @@ cat >conftest.$ac_ext <<_ACEOF
#endif
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
wchar_t foo
@@ -14412,16 +19223,16 @@ wchar_t foo
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14415: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19226: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14418: \$? = $ac_status" >&5
+ echo "$as_me:19229: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14421: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19232: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14424: \$? = $ac_status" >&5
+ echo "$as_me:19235: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=yes
else
@@ -14430,7 +19241,7 @@ cat conftest.$ac_ext >&5
cf_result=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:14433: result: $cf_result" >&5
+echo "$as_me:19244: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
if test $cf_result = yes ; then
@@ -14452,10 +19263,10 @@ fi
if test "$NCURSES_OK_WINT_T" = 0 ; then
-echo "$as_me:14455: checking for type wint_t in ${cf_cv_ncurses_header:-curses.h}" >&5
+echo "$as_me:19266: checking for type wint_t in ${cf_cv_ncurses_header:-curses.h}" >&5
echo $ECHO_N "checking for type wint_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 14458 "configure"
+#line 19269 "configure"
#include "confdefs.h"
#ifndef _XOPEN_SOURCE_EXTENDED
@@ -14463,7 +19274,7 @@ cat >conftest.$ac_ext <<_ACEOF
#endif
#include <${cf_cv_ncurses_header:-curses.h}>
int
-main ()
+main (void)
{
wint_t foo
@@ -14473,16 +19284,16 @@ wint_t foo
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14476: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19287: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14479: \$? = $ac_status" >&5
+ echo "$as_me:19290: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14482: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19293: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14485: \$? = $ac_status" >&5
+ echo "$as_me:19296: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=yes
else
@@ -14491,7 +19302,7 @@ cat conftest.$ac_ext >&5
cf_result=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:14494: result: $cf_result" >&5
+echo "$as_me:19305: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
if test $cf_result = yes ; then
@@ -14512,11 +19323,19 @@ fi
fi
fi
-echo "$as_me:14515: checking for data boolnames declaration in ${cf_cv_ncurses_header:-curses.h}" >&5
-echo $ECHO_N "checking for data boolnames declaration in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
+for cf_data in \
+TABSIZE \
+curscr \
+ospeed \
+boolnames \
+boolfnames \
+ttytype
+do
+echo "$as_me:19334: checking for data $cf_data declaration in ${cf_cv_ncurses_header:-curses.h}" >&5
+echo $ECHO_N "checking for data $cf_data declaration in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 14519 "configure"
+#line 19338 "configure"
#include "confdefs.h"
#ifdef HAVE_XCURSES
@@ -14534,233 +19353,55 @@ char * XCursesProgramName = "test";
#endif
int
-main ()
+main (void)
{
-void *foo = &(boolnames)
+void *foo = &($cf_data)
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14547: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19366: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14550: \$? = $ac_status" >&5
+ echo "$as_me:19369: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14553: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19372: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14556: \$? = $ac_status" >&5
+ echo "$as_me:19375: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_result=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:14565: result: $cf_result" >&5
-echo "${ECHO_T}$cf_result" >&6
-
-if test $cf_result = yes ; then
-
-cf_result=`echo "have_curses_data_boolnames" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-
- cat >>confdefs.h <<EOF
-#define $cf_result 1
-EOF
else
- echo "$as_me:14577: checking for data boolnames in library" >&5
-echo $ECHO_N "checking for data boolnames in library... $ECHO_C" >&6
- # BSD linkers insist on making weak linkage, but resolve at runtime.
- if test "$cross_compiling" = yes; then
-
- # cross-compiling
- cat >conftest.$ac_ext <<_ACEOF
-#line 14584 "configure"
-#include "confdefs.h"
-
-#ifdef HAVE_XCURSES
-#include <xcurses.h>
-char * XCursesProgramName = "test";
-#else
-#include <${cf_cv_ncurses_header:-curses.h}>
-#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H)
-#include <ncursesw/term.h>
-#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H)
-#include <ncurses/term.h>
-#elif defined(HAVE_TERM_H)
-#include <term.h>
-#endif
-#endif
-
-extern char boolnames;
-int
-main ()
-{
-
- do {
- void *foo = &(boolnames);
- ${cf_cv_main_return:-return}(foo == 0);
- } while (0)
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14616: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:14619: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14622: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14625: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_result=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_result=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 14637 "configure"
-#include "confdefs.h"
-
-#ifdef HAVE_XCURSES
-#include <xcurses.h>
-char * XCursesProgramName = "test";
-#else
-#include <${cf_cv_ncurses_header:-curses.h}>
-#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H)
-#include <ncursesw/term.h>
-#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H)
-#include <ncurses/term.h>
-#elif defined(HAVE_TERM_H)
-#include <term.h>
-#endif
-#endif
-
-extern char boolnames;
-int main(void)
-{
- void *foo = &(boolnames);
- ${cf_cv_main_return:-return}(foo == 0);
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:14662: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:14665: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:14667: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14670: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_result=yes
-else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-cf_result=no
-fi
-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
- echo "$as_me:14681: result: $cf_result" >&5
-echo "${ECHO_T}$cf_result" >&6
- if test $cf_result = yes ; then
-
-cf_result=`echo "decl_curses_data_boolnames" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-
- cat >>confdefs.h <<EOF
-#define $cf_result 1
-EOF
-
- fi
-fi
-
-echo "$as_me:14694: checking for data boolfnames declaration in ${cf_cv_ncurses_header:-curses.h}" >&5
-echo $ECHO_N "checking for data boolfnames declaration in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
-
-cat >conftest.$ac_ext <<_ACEOF
-#line 14698 "configure"
-#include "confdefs.h"
-
-#ifdef HAVE_XCURSES
-#include <xcurses.h>
-char * XCursesProgramName = "test";
-#else
-#include <${cf_cv_ncurses_header:-curses.h}>
-#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H)
-#include <ncursesw/term.h>
-#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H)
-#include <ncurses/term.h>
-#elif defined(HAVE_TERM_H)
-#include <term.h>
-#endif
-#endif
-
-int
-main ()
-{
-
-void *foo = &(boolfnames)
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14726: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:14729: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14732: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:14735: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_result=yes
-else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cf_result=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:14744: result: $cf_result" >&5
+echo "$as_me:19385: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
if test $cf_result = yes ; then
-cf_result=`echo "have_curses_data_boolfnames" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+cf_result=`echo "have_curses_data_$cf_data" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
cat >>confdefs.h <<EOF
#define $cf_result 1
EOF
else
- echo "$as_me:14756: checking for data boolfnames in library" >&5
-echo $ECHO_N "checking for data boolfnames in library... $ECHO_C" >&6
+ echo "$as_me:19397: checking for data $cf_data in library" >&5
+echo $ECHO_N "checking for data $cf_data in library... $ECHO_C" >&6
# BSD linkers insist on making weak linkage, but resolve at runtime.
if test "$cross_compiling" = yes; then
# cross-compiling
cat >conftest.$ac_ext <<_ACEOF
-#line 14763 "configure"
+#line 19404 "configure"
#include "confdefs.h"
#ifdef HAVE_XCURSES
@@ -14777,13 +19418,14 @@ char * XCursesProgramName = "test";
#endif
#endif
-extern char boolfnames;
+extern char $cf_data;
int
-main ()
+main (void)
{
do {
- void *foo = &(boolfnames);
+ void *foo = &($cf_data);
+ fprintf(stderr, "testing linkage of $cf_data:%p\n", (void *)foo);
${cf_cv_main_return:-return}(foo == 0);
} while (0)
@@ -14792,16 +19434,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14795: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19437: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14798: \$? = $ac_status" >&5
+ echo "$as_me:19440: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14801: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19443: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14804: \$? = $ac_status" >&5
+ echo "$as_me:19446: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=yes
else
@@ -14813,7 +19455,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14816 "configure"
+#line 19458 "configure"
#include "confdefs.h"
#ifdef HAVE_XCURSES
@@ -14830,25 +19472,27 @@ char * XCursesProgramName = "test";
#endif
#endif
-extern char boolfnames;
+extern char $cf_data;
int main(void)
{
- void *foo = &(boolfnames);
+ void *foo = &($cf_data);
+ fprintf(stderr, "testing linkage of $cf_data:%p\n", (void *)foo);
${cf_cv_main_return:-return}(foo == 0);
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:14841: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19484: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14844: \$? = $ac_status" >&5
+ echo "$as_me:19487: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:14846: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19489: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14849: \$? = $ac_status" >&5
+ echo "$as_me:19492: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=yes
+
else
echo "$as_me: program exited with status $ac_status" >&5
echo "$as_me: failed program was:" >&5
@@ -14857,39 +19501,41 @@ cf_result=no
fi
rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
- echo "$as_me:14860: result: $cf_result" >&5
+ echo "$as_me:19504: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
if test $cf_result = yes ; then
-cf_result=`echo "decl_curses_data_boolfnames" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+cf_result=`echo "decl_curses_data_$cf_data" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
cat >>confdefs.h <<EOF
#define $cf_result 1
EOF
+ # do not exit loop here, since we prefer system's declarations
fi
fi
+done
if ( test "$GCC" = yes || test "$GXX" = yes )
then
-echo "$as_me:14875: checking if you want to turn on gcc warnings" >&5
+echo "$as_me:19521: checking if you want to turn on gcc warnings" >&5
echo $ECHO_N "checking if you want to turn on gcc warnings... $ECHO_C" >&6
# Check whether --enable-warnings or --disable-warnings was given.
if test "${enable_warnings+set}" = set; then
enableval="$enable_warnings"
test "$enableval" != yes && enableval=no
- if test "$enableval" != "no" ; then
+ if test "$enableval" != "no" ; then
with_warnings=yes
- else
- with_warnings=no
- fi
+ else
+ with_warnings=no
+ fi
else
enableval=no
- with_warnings=no
+ with_warnings=no
fi;
-echo "$as_me:14892: result: $with_warnings" >&5
+echo "$as_me:19538: result: $with_warnings" >&5
echo "${ECHO_T}$with_warnings" >&6
if test "$with_warnings" = "yes"
then
@@ -14912,10 +19558,10 @@ cat > conftest.i <<EOF
EOF
if test "$GCC" = yes
then
- { echo "$as_me:14915: checking for $CC __attribute__ directives..." >&5
+ { echo "$as_me:19561: checking for $CC __attribute__ directives..." >&5
echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
cat > conftest.$ac_ext <<EOF
-#line 14918 "${as_me:-configure}"
+#line 19564 "${as_me:-configure}"
#include "confdefs.h"
#include "conftest.h"
#include "conftest.i"
@@ -14944,43 +19590,43 @@ cf_ATTRIBUTE=`echo "$cf_attribute" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFG
cf_directive="__attribute__(($cf_attribute))"
echo "checking for $CC $cf_directive" 1>&5
- case $cf_attribute in #(vi
- printf) #(vi
+ case $cf_attribute in
+ (printf)
cf_printf_attribute=yes
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE 1
EOF
;;
- scanf) #(vi
+ (scanf)
cf_scanf_attribute=yes
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE 1
EOF
;;
- *) #(vi
+ (*)
cat >conftest.h <<EOF
#define GCC_$cf_ATTRIBUTE $cf_directive
EOF
;;
esac
- if { (eval echo "$as_me:14967: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:19613: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14970: \$? = $ac_status" >&5
+ echo "$as_me:19616: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:14972: result: ... $cf_attribute" >&5
+ test -n "$verbose" && echo "$as_me:19618: result: ... $cf_attribute" >&5
echo "${ECHO_T}... $cf_attribute" >&6
cat conftest.h >>confdefs.h
- case $cf_attribute in #(vi
- noreturn) #(vi
+ case $cf_attribute in
+ (noreturn)
cat >>confdefs.h <<EOF
#define GCC_NORETURN $cf_directive
EOF
;;
- printf) #(vi
+ (printf)
cf_value='/* nothing */'
if test "$cf_printf_attribute" != no ; then
cf_value='__attribute__((format(printf,fmt,var)))'
@@ -14996,7 +19642,7 @@ cat >>confdefs.h <<EOF
EOF
;;
- scanf) #(vi
+ (scanf)
cf_value='/* nothing */'
if test "$cf_scanf_attribute" != no ; then
cf_value='__attribute__((format(scanf,fmt,var)))'
@@ -15012,7 +19658,7 @@ cat >>confdefs.h <<EOF
EOF
;;
- unused) #(vi
+ (unused)
cat >>confdefs.h <<EOF
#define GCC_UNUSED $cf_directive
@@ -15028,113 +19674,132 @@ fi
rm -rf conftest*
fi
-INTEL_COMPILER=no
+if test "x$have_x" = xyes; then
-if test "$GCC" = yes ; then
- case $host_os in
- linux*|gnu*)
- echo "$as_me:15036: checking if this is really Intel C compiler" >&5
-echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6
- cf_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -no-gcc"
- cat >conftest.$ac_ext <<_ACEOF
-#line 15041 "configure"
+cf_save_LIBS_CF_CONST_X_STRING="$LIBS"
+cf_save_CFLAGS_CF_CONST_X_STRING="$CFLAGS"
+cf_save_CPPFLAGS_CF_CONST_X_STRING="$CPPFLAGS"
+LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
+for cf_X_CFLAGS in $X_CFLAGS
+do
+ case "x$cf_X_CFLAGS" in
+ x-[IUD]*)
+ CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
+ ;;
+ *)
+ CFLAGS="$CFLAGS $cf_X_CFLAGS"
+ ;;
+ esac
+done
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 19696 "configure"
#include "confdefs.h"
+#include <stdlib.h>
+#include <X11/Intrinsic.h>
+
int
-main ()
+main (void)
{
-
-#ifdef __INTEL_COMPILER
-#else
-make an error
-#endif
-
+String foo = malloc(1)
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15058: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19711: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15061: \$? = $ac_status" >&5
+ echo "$as_me:19714: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15064: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19717: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15067: \$? = $ac_status" >&5
+ echo "$as_me:19720: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- INTEL_COMPILER=yes
-cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
+echo "$as_me:19723: checking for X11/Xt const-feature" >&5
+echo $ECHO_N "checking for X11/Xt const-feature... $ECHO_C" >&6
+if test "${cf_cv_const_x_string+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$cf_save_CFLAGS"
- echo "$as_me:15078: result: $INTEL_COMPILER" >&5
-echo "${ECHO_T}$INTEL_COMPILER" >&6
- ;;
- esac
-fi
-CLANG_COMPILER=no
-
-if test "$GCC" = yes ; then
- echo "$as_me:15087: checking if this is really Clang C compiler" >&5
-echo $ECHO_N "checking if this is really Clang C compiler... $ECHO_C" >&6
- cf_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -Qunused-arguments"
cat >conftest.$ac_ext <<_ACEOF
-#line 15092 "configure"
+#line 19730 "configure"
#include "confdefs.h"
+#define _CONST_X_STRING /* X11R7.8 (perhaps) */
+#undef XTSTRINGDEFINES /* X11R5 and later */
+#include <stdlib.h>
+#include <X11/Intrinsic.h>
+
int
-main ()
+main (void)
{
-
-#ifdef __clang__
-#else
-make an error
-#endif
-
+String foo = malloc(1); *foo = 0
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15109: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19747: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15112: \$? = $ac_status" >&5
+ echo "$as_me:19750: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15115: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19753: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15118: \$? = $ac_status" >&5
+ echo "$as_me:19756: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- CLANG_COMPILER=yes
-cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
+
+ cf_cv_const_x_string=no
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
+
+ cf_cv_const_x_string=yes
+
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$cf_save_CFLAGS"
- echo "$as_me:15129: result: $CLANG_COMPILER" >&5
-echo "${ECHO_T}$CLANG_COMPILER" >&6
+
fi
+echo "$as_me:19771: result: $cf_cv_const_x_string" >&5
+echo "${ECHO_T}$cf_cv_const_x_string" >&6
+
+LIBS="$cf_save_LIBS_CF_CONST_X_STRING"
+CFLAGS="$cf_save_CFLAGS_CF_CONST_X_STRING"
+CPPFLAGS="$cf_save_CPPFLAGS_CF_CONST_X_STRING"
+
+case $cf_cv_const_x_string in
+(no)
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-DXTSTRINGDEFINES"
+ ;;
+(*)
+
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}-D_CONST_X_STRING"
+
+ ;;
+esac
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ fi
cat > conftest.$ac_ext <<EOF
-#line 15134 "${as_me:-configure}"
+#line 19800 "${as_me:-configure}"
int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
EOF
-
if test "$INTEL_COMPILER" = yes
then
# The "-wdXXX" options suppress warnings:
@@ -15148,7 +19813,7 @@ then
# remark #981: operands are evaluated in unspecified order
# warning #279: controlling expression is constant
- { echo "$as_me:15151: checking for $CC warning options..." >&5
+ { echo "$as_me:19816: checking for $CC warning options..." >&5
echo "$as_me: checking for $CC warning options..." >&6;}
cf_save_CFLAGS="$CFLAGS"
EXTRA_CFLAGS="-Wall"
@@ -15164,21 +19829,20 @@ echo "$as_me: checking for $CC warning options..." >&6;}
wd981
do
CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
- if { (eval echo "$as_me:15167: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:19832: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15170: \$? = $ac_status" >&5
+ echo "$as_me:19835: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:15172: result: ... -$cf_opt" >&5
+ test -n "$verbose" && echo "$as_me:19837: result: ... -$cf_opt" >&5
echo "${ECHO_T}... -$cf_opt" >&6
EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
fi
done
CFLAGS="$cf_save_CFLAGS"
-
-elif test "$GCC" = yes
+elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
then
- { echo "$as_me:15181: checking for $CC warning options..." >&5
+ { echo "$as_me:19845: checking for $CC warning options..." >&5
echo "$as_me: checking for $CC warning options..." >&6;}
cf_save_CFLAGS="$CFLAGS"
EXTRA_CFLAGS=
@@ -15199,36 +19863,33 @@ echo "$as_me: checking for $CC warning options..." >&6;}
Wpointer-arith \
Wshadow \
Wstrict-prototypes \
- Wundef $cf_gcc_warnings $cf_warn_CONST
+ Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST Wno-unknown-pragmas
do
CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
- if { (eval echo "$as_me:15205: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:19869: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15208: \$? = $ac_status" >&5
+ echo "$as_me:19872: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:15210: result: ... -$cf_opt" >&5
+ test -n "$verbose" && echo "$as_me:19874: result: ... -$cf_opt" >&5
echo "${ECHO_T}... -$cf_opt" >&6
- case $cf_opt in #(vi
- Wcast-qual) #(vi
- CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES"
- ;;
- Winline) #(vi
+ case $cf_opt in
+ (Winline)
case $GCC_VERSION in
- [34].*)
+ ([34].*)
test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6
-echo "${as_me:-configure}:15221: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
+echo "${as_me:-configure}:19882: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
continue;;
esac
;;
- Wpointer-arith) #(vi
+ (Wpointer-arith)
case $GCC_VERSION in
- [12].*)
+ ([12].*)
test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6
-echo "${as_me:-configure}:15231: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
+echo "${as_me:-configure}:19892: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
continue;;
esac
@@ -15244,7 +19905,7 @@ rm -rf conftest*
fi
fi
-echo "$as_me:15247: checking if you want to use dmalloc for testing" >&5
+echo "$as_me:19908: checking if you want to use dmalloc for testing" >&5
echo $ECHO_N "checking if you want to use dmalloc for testing... $ECHO_C" >&6
# Check whether --with-dmalloc or --without-dmalloc was given.
@@ -15261,15 +19922,15 @@ EOF
else
with_dmalloc=
fi;
-echo "$as_me:15264: result: ${with_dmalloc:-no}" >&5
+echo "$as_me:19925: result: ${with_dmalloc:-no}" >&5
echo "${ECHO_T}${with_dmalloc:-no}" >&6
-case .$with_cflags in #(vi
-.*-g*)
- case .$CFLAGS in #(vi
- .*-g*) #(vi
+case .$with_cflags in
+(.*-g*)
+ case .$CFLAGS in
+ (.*-g*)
;;
- *)
+ (*)
cf_fix_cppflags=no
cf_new_cflags=
@@ -15279,32 +19940,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in -g
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -15313,21 +19980,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -15336,17 +20011,23 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
;;
@@ -15355,23 +20036,23 @@ fi
esac
if test "$with_dmalloc" = yes ; then
- echo "$as_me:15358: checking for dmalloc.h" >&5
+ echo "$as_me:20039: checking for dmalloc.h" >&5
echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6
if test "${ac_cv_header_dmalloc_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15364 "configure"
+#line 20045 "configure"
#include "confdefs.h"
#include <dmalloc.h>
_ACEOF
-if { (eval echo "$as_me:15368: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:20049: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:15374: \$? = $ac_status" >&5
+ echo "$as_me:20055: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -15390,11 +20071,11 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:15393: result: $ac_cv_header_dmalloc_h" >&5
+echo "$as_me:20074: result: $ac_cv_header_dmalloc_h" >&5
echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6
if test $ac_cv_header_dmalloc_h = yes; then
-echo "$as_me:15397: checking for dmalloc_debug in -ldmalloc" >&5
+echo "$as_me:20078: checking for dmalloc_debug in -ldmalloc" >&5
echo $ECHO_N "checking for dmalloc_debug in -ldmalloc... $ECHO_C" >&6
if test "${ac_cv_lib_dmalloc_dmalloc_debug+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -15402,7 +20083,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldmalloc $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 15405 "configure"
+#line 20086 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -15413,7 +20094,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char dmalloc_debug ();
int
-main ()
+main (void)
{
dmalloc_debug ();
;
@@ -15421,16 +20102,16 @@ dmalloc_debug ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15424: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20105: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15427: \$? = $ac_status" >&5
+ echo "$as_me:20108: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15430: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20111: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15433: \$? = $ac_status" >&5
+ echo "$as_me:20114: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_dmalloc_dmalloc_debug=yes
else
@@ -15441,7 +20122,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:15444: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5
+echo "$as_me:20125: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5
echo "${ECHO_T}$ac_cv_lib_dmalloc_dmalloc_debug" >&6
if test $ac_cv_lib_dmalloc_dmalloc_debug = yes; then
cat >>confdefs.h <<EOF
@@ -15456,7 +20137,7 @@ fi
fi
-echo "$as_me:15459: checking if you want to use dbmalloc for testing" >&5
+echo "$as_me:20140: checking if you want to use dbmalloc for testing" >&5
echo $ECHO_N "checking if you want to use dbmalloc for testing... $ECHO_C" >&6
# Check whether --with-dbmalloc or --without-dbmalloc was given.
@@ -15473,15 +20154,15 @@ EOF
else
with_dbmalloc=
fi;
-echo "$as_me:15476: result: ${with_dbmalloc:-no}" >&5
+echo "$as_me:20157: result: ${with_dbmalloc:-no}" >&5
echo "${ECHO_T}${with_dbmalloc:-no}" >&6
-case .$with_cflags in #(vi
-.*-g*)
- case .$CFLAGS in #(vi
- .*-g*) #(vi
+case .$with_cflags in
+(.*-g*)
+ case .$CFLAGS in
+ (.*-g*)
;;
- *)
+ (*)
cf_fix_cppflags=no
cf_new_cflags=
@@ -15491,32 +20172,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in -g
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -15525,21 +20212,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -15548,17 +20243,23 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
;;
@@ -15567,23 +20268,23 @@ fi
esac
if test "$with_dbmalloc" = yes ; then
- echo "$as_me:15570: checking for dbmalloc.h" >&5
+ echo "$as_me:20271: checking for dbmalloc.h" >&5
echo $ECHO_N "checking for dbmalloc.h... $ECHO_C" >&6
if test "${ac_cv_header_dbmalloc_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15576 "configure"
+#line 20277 "configure"
#include "confdefs.h"
#include <dbmalloc.h>
_ACEOF
-if { (eval echo "$as_me:15580: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:20281: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:15586: \$? = $ac_status" >&5
+ echo "$as_me:20287: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -15602,11 +20303,11 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:15605: result: $ac_cv_header_dbmalloc_h" >&5
+echo "$as_me:20306: result: $ac_cv_header_dbmalloc_h" >&5
echo "${ECHO_T}$ac_cv_header_dbmalloc_h" >&6
if test $ac_cv_header_dbmalloc_h = yes; then
-echo "$as_me:15609: checking for debug_malloc in -ldbmalloc" >&5
+echo "$as_me:20310: checking for debug_malloc in -ldbmalloc" >&5
echo $ECHO_N "checking for debug_malloc in -ldbmalloc... $ECHO_C" >&6
if test "${ac_cv_lib_dbmalloc_debug_malloc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -15614,7 +20315,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldbmalloc $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 15617 "configure"
+#line 20318 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -15625,7 +20326,7 @@ extern "C"
builtin and then its argument prototype would still apply. */
char debug_malloc ();
int
-main ()
+main (void)
{
debug_malloc ();
;
@@ -15633,16 +20334,16 @@ debug_malloc ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15636: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20337: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15639: \$? = $ac_status" >&5
+ echo "$as_me:20340: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15642: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20343: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15645: \$? = $ac_status" >&5
+ echo "$as_me:20346: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_dbmalloc_debug_malloc=yes
else
@@ -15653,7 +20354,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:15656: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5
+echo "$as_me:20357: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5
echo "${ECHO_T}$ac_cv_lib_dbmalloc_debug_malloc" >&6
if test $ac_cv_lib_dbmalloc_debug_malloc = yes; then
cat >>confdefs.h <<EOF
@@ -15668,7 +20369,7 @@ fi
fi
-echo "$as_me:15671: checking if you want to use valgrind for testing" >&5
+echo "$as_me:20372: checking if you want to use valgrind for testing" >&5
echo $ECHO_N "checking if you want to use valgrind for testing... $ECHO_C" >&6
# Check whether --with-valgrind or --without-valgrind was given.
@@ -15685,15 +20386,15 @@ EOF
else
with_valgrind=
fi;
-echo "$as_me:15688: result: ${with_valgrind:-no}" >&5
+echo "$as_me:20389: result: ${with_valgrind:-no}" >&5
echo "${ECHO_T}${with_valgrind:-no}" >&6
-case .$with_cflags in #(vi
-.*-g*)
- case .$CFLAGS in #(vi
- .*-g*) #(vi
+case .$with_cflags in
+(.*-g*)
+ case .$CFLAGS in
+ (.*-g*)
;;
- *)
+ (*)
cf_fix_cppflags=no
cf_new_cflags=
@@ -15703,32 +20404,38 @@ cf_new_extra_cppflags=
for cf_add_cflags in -g
do
case $cf_fix_cppflags in
-no)
- case $cf_add_cflags in #(vi
- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+(no)
+ case $cf_add_cflags in
+ (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
case $cf_add_cflags in
- -D*)
+ (-D*)
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=yes
if test $cf_fix_cppflags = yes ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
elif test "${cf_tst_cflags}" = "\"'" ; then
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+
continue
fi
;;
esac
case "$CPPFLAGS" in
- *$cf_add_cflags) #(vi
+ (*$cf_add_cflags)
;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
+ (*)
+ case $cf_add_cflags in
+ (-D*)
cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
CPPFLAGS=`echo "$CPPFLAGS" | \
@@ -15737,21 +20444,29 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
;;
esac
- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+
+ test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+ cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+
;;
esac
;;
- *)
- cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ (*)
+
+ test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+ cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+
;;
esac
;;
-yes)
- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+(yes)
+
+ test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+ cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
- test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
&& test -z "${cf_tst_cflags}" \
&& cf_fix_cppflags=no
;;
@@ -15760,17 +20475,23 @@ done
if test -n "$cf_new_cflags" ; then
- CFLAGS="$CFLAGS $cf_new_cflags"
+ test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+ CFLAGS="${CFLAGS}$cf_new_cflags"
+
fi
if test -n "$cf_new_cppflags" ; then
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+ CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+
fi
if test -n "$cf_new_extra_cppflags" ; then
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+ test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+ EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+
fi
;;
@@ -15778,7 +20499,7 @@ fi
;;
esac
-echo "$as_me:15781: checking if you want to perform memory-leak testing" >&5
+echo "$as_me:20502: checking if you want to perform memory-leak testing" >&5
echo $ECHO_N "checking if you want to perform memory-leak testing... $ECHO_C" >&6
# Check whether --enable-leaks or --disable-leaks was given.
@@ -15788,7 +20509,7 @@ if test "${enable_leaks+set}" = set; then
else
: ${with_no_leaks:=no}
fi;
-echo "$as_me:15791: result: $with_no_leaks" >&5
+echo "$as_me:20512: result: $with_no_leaks" >&5
echo "${ECHO_T}$with_no_leaks" >&6
if test "$with_no_leaks" = yes ; then
@@ -15804,52 +20525,70 @@ EOF
fi
LD_RPATH_OPT=
-echo "$as_me:15807: checking for an rpath option" >&5
+if test "x$cf_cv_enable_rpath" != xno
+then
+ echo "$as_me:20530: checking for an rpath option" >&5
echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6
-case $cf_cv_system_name in #(vi
-irix*) #(vi
- if test "$GCC" = yes; then
+ case $cf_cv_system_name in
+ (irix*)
+ if test "$GCC" = yes; then
+ LD_RPATH_OPT="-Wl,-rpath,"
+ else
+ LD_RPATH_OPT="-rpath "
+ fi
+ ;;
+ (linux*|gnu*|k*bsd*-gnu|freebsd*)
LD_RPATH_OPT="-Wl,-rpath,"
- else
+ ;;
+ (openbsd[2-9].*|mirbsd*)
+ LD_RPATH_OPT="-Wl,-rpath,"
+ ;;
+ (dragonfly*)
LD_RPATH_OPT="-rpath "
- fi
- ;;
-linux*|gnu*|k*bsd*-gnu) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-openbsd[2-9].*|mirbsd*) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-dragonfly*|freebsd*) #(vi
- LD_RPATH_OPT="-rpath "
- ;;
-netbsd*) #(vi
- LD_RPATH_OPT="-Wl,-rpath,"
- ;;
-osf*|mls+*) #(vi
- LD_RPATH_OPT="-rpath "
- ;;
-solaris2*) #(vi
- LD_RPATH_OPT="-R"
- ;;
-*)
- ;;
-esac
-echo "$as_me:15838: result: $LD_RPATH_OPT" >&5
+ ;;
+ (netbsd*)
+ LD_RPATH_OPT="-Wl,-rpath,"
+ ;;
+ (osf*|mls+*)
+ LD_RPATH_OPT="-rpath "
+ ;;
+ (solaris2*)
+ LD_RPATH_OPT="-R"
+ ;;
+ (*)
+ ;;
+ esac
+ echo "$as_me:20561: result: $LD_RPATH_OPT" >&5
echo "${ECHO_T}$LD_RPATH_OPT" >&6
-case "x$LD_RPATH_OPT" in #(vi
-x-R*)
- echo "$as_me:15843: checking if we need a space after rpath option" >&5
+ case "x$LD_RPATH_OPT" in
+ (x-R*)
+ echo "$as_me:20566: checking if we need a space after rpath option" >&5
echo $ECHO_N "checking if we need a space after rpath option... $ECHO_C" >&6
- cf_save_LIBS="$LIBS"
- LIBS="${LD_RPATH_OPT}$libdir $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
-#line 15848 "configure"
+ cf_save_LIBS="$LIBS"
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in ${LD_RPATH_OPT}$libdir; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+ for cf_add_2lib in $cf_add_libs; do
+ if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+ cf_add_1lib=
+ break
+ fi
+ done
+ test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 20587 "configure"
#include "confdefs.h"
int
-main ()
+main (void)
{
;
@@ -15857,16 +20596,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15860: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20599: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15863: \$? = $ac_status" >&5
+ echo "$as_me:20602: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15866: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20605: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15869: \$? = $ac_status" >&5
+ echo "$as_me:20608: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_rpath_space=no
else
@@ -15875,45 +20614,46 @@ cat conftest.$ac_ext >&5
cf_rpath_space=yes
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- LIBS="$cf_save_LIBS"
- echo "$as_me:15879: result: $cf_rpath_space" >&5
+ LIBS="$cf_save_LIBS"
+ echo "$as_me:20618: result: $cf_rpath_space" >&5
echo "${ECHO_T}$cf_rpath_space" >&6
- test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
- ;;
-esac
+ test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
+ ;;
+ esac
+fi
-echo "$as_me:15885: checking if rpath-hack should be disabled" >&5
+echo "$as_me:20625: checking if rpath-hack should be disabled" >&5
echo $ECHO_N "checking if rpath-hack should be disabled... $ECHO_C" >&6
# Check whether --enable-rpath-hack or --disable-rpath-hack was given.
if test "${enable_rpath_hack+set}" = set; then
enableval="$enable_rpath_hack"
test "$enableval" != no && enableval=yes
- if test "$enableval" != "yes" ; then
+ if test "$enableval" != "yes" ; then
cf_disable_rpath_hack=yes
- else
- cf_disable_rpath_hack=no
- fi
+ else
+ cf_disable_rpath_hack=no
+ fi
else
enableval=yes
- cf_disable_rpath_hack=no
+ cf_disable_rpath_hack=no
fi;
-echo "$as_me:15902: result: $cf_disable_rpath_hack" >&5
+echo "$as_me:20642: result: $cf_disable_rpath_hack" >&5
echo "${ECHO_T}$cf_disable_rpath_hack" >&6
if test "$cf_disable_rpath_hack" = no ; then
-echo "$as_me:15906: checking for updated LDFLAGS" >&5
+echo "$as_me:20646: checking for updated LDFLAGS" >&5
echo $ECHO_N "checking for updated LDFLAGS... $ECHO_C" >&6
if test -n "$LD_RPATH_OPT" ; then
- echo "$as_me:15909: result: maybe" >&5
+ echo "$as_me:20649: result: maybe" >&5
echo "${ECHO_T}maybe" >&6
for ac_prog in ldd
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 "$as_me:15916: checking for $ac_word" >&5
+echo "$as_me:20656: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_cf_ldd_prog+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -15928,7 +20668,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_cf_ldd_prog="$ac_prog"
-echo "$as_me:15931: found $ac_dir/$ac_word" >&5
+echo "$as_me:20671: found $ac_dir/$ac_word" >&5
break
done
@@ -15936,10 +20676,10 @@ fi
fi
cf_ldd_prog=$ac_cv_prog_cf_ldd_prog
if test -n "$cf_ldd_prog"; then
- echo "$as_me:15939: result: $cf_ldd_prog" >&5
+ echo "$as_me:20679: result: $cf_ldd_prog" >&5
echo "${ECHO_T}$cf_ldd_prog" >&6
else
- echo "$as_me:15942: result: no" >&5
+ echo "$as_me:20682: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -15953,11 +20693,11 @@ test -n "$cf_ldd_prog" || cf_ldd_prog="no"
cf_rpath_oops=
cat >conftest.$ac_ext <<_ACEOF
-#line 15956 "configure"
+#line 20696 "configure"
#include "confdefs.h"
#include <stdio.h>
int
-main ()
+main (void)
{
printf("Hello");
;
@@ -15965,16 +20705,16 @@ printf("Hello");
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15968: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20708: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15971: \$? = $ac_status" >&5
+ echo "$as_me:20711: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15974: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20714: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15977: \$? = $ac_status" >&5
+ echo "$as_me:20717: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_rpath_oops=`$cf_ldd_prog conftest$ac_exeext | fgrep ' not found' | sed -e 's% =>.*$%%' |sort | uniq`
cf_rpath_list=`$cf_ldd_prog conftest$ac_exeext | fgrep / | sed -e 's%^.*[ ]/%/%' -e 's%/[^/][^/]*$%%' |sort | uniq`
@@ -16002,7 +20742,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
then
test -n "$verbose" && echo " ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src" 1>&6
-echo "${as_me:-configure}:16005: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5
+echo "${as_me:-configure}:20745: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5
LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib"
break
@@ -16014,17 +20754,17 @@ echo "${as_me:-configure}:16005: testing ...adding -L$cf_rpath_dir/lib to LDFLAG
test -n "$verbose" && echo " ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6
-echo "${as_me:-configure}:16017: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:20757: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
test -n "$verbose" && echo " ...checking LDFLAGS $LDFLAGS" 1>&6
-echo "${as_me:-configure}:16021: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:20761: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5
cf_rpath_dst=
for cf_rpath_src in $LDFLAGS
do
- case $cf_rpath_src in #(vi
- -L*) #(vi
+ case $cf_rpath_src in
+ (-L*)
# check if this refers to a directory which we will ignore
cf_rpath_skip=no
@@ -16055,7 +20795,7 @@ do
then
test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6
-echo "${as_me:-configure}:16058: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
+echo "${as_me:-configure}:20798: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
fi
@@ -16068,17 +20808,17 @@ LDFLAGS=$cf_rpath_dst
test -n "$verbose" && echo " ...checked LDFLAGS $LDFLAGS" 1>&6
-echo "${as_me:-configure}:16071: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:20811: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5
test -n "$verbose" && echo " ...checking LIBS $LIBS" 1>&6
-echo "${as_me:-configure}:16075: testing ...checking LIBS $LIBS ..." 1>&5
+echo "${as_me:-configure}:20815: testing ...checking LIBS $LIBS ..." 1>&5
cf_rpath_dst=
for cf_rpath_src in $LIBS
do
- case $cf_rpath_src in #(vi
- -L*) #(vi
+ case $cf_rpath_src in
+ (-L*)
# check if this refers to a directory which we will ignore
cf_rpath_skip=no
@@ -16109,7 +20849,7 @@ do
then
test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6
-echo "${as_me:-configure}:16112: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
+echo "${as_me:-configure}:20852: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
fi
@@ -16122,14 +20862,14 @@ LIBS=$cf_rpath_dst
test -n "$verbose" && echo " ...checked LIBS $LIBS" 1>&6
-echo "${as_me:-configure}:16125: testing ...checked LIBS $LIBS ..." 1>&5
+echo "${as_me:-configure}:20865: testing ...checked LIBS $LIBS ..." 1>&5
test -n "$verbose" && echo " ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6
-echo "${as_me:-configure}:16129: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:20869: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
else
- echo "$as_me:16132: result: no" >&5
+ echo "$as_me:20872: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -16219,7 +20959,7 @@ DEFS=-DHAVE_CONFIG_H
: ${CONFIG_STATUS=./config.status}
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:16222: creating $CONFIG_STATUS" >&5
+{ echo "$as_me:20962: creating $CONFIG_STATUS" >&5
echo "$as_me: creating $CONFIG_STATUS" >&6;}
cat >$CONFIG_STATUS <<_ACEOF
#! $SHELL
@@ -16351,7 +21091,7 @@ EOF
cat >>$CONFIG_STATUS <<EOF
ac_cs_version="\\
config.status
-configured by $0, generated by GNU Autoconf 2.52.20121002,
+configured by $0, generated by GNU Autoconf 2.52.20200111,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
@@ -16395,7 +21135,7 @@ cat >>$CONFIG_STATUS <<\EOF
echo "$ac_cs_version"; exit 0 ;;
--he | --h)
# Conflict between --help and --header
- { { echo "$as_me:16398: error: ambiguous option: $1
+ { { echo "$as_me:21138: error: ambiguous option: $1
Try \`$0 --help' for more information." >&5
echo "$as_me: error: ambiguous option: $1
Try \`$0 --help' for more information." >&2;}
@@ -16414,7 +21154,7 @@ Try \`$0 --help' for more information." >&2;}
ac_need_defaults=false;;
# This is an error.
- -*) { { echo "$as_me:16417: error: unrecognized option: $1
+ -*) { { echo "$as_me:21157: error: unrecognized option: $1
Try \`$0 --help' for more information." >&5
echo "$as_me: error: unrecognized option: $1
Try \`$0 --help' for more information." >&2;}
@@ -16433,7 +21173,7 @@ cat >&5 << _ACEOF
## Running config.status. ##
## ----------------------- ##
-This file was extended by $as_me 2.52.20121002, executed with
+This file was extended by $as_me 2.52.20200111, executed with
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
CONFIG_LINKS = $CONFIG_LINKS
@@ -16464,7 +21204,7 @@ do
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
"ncurses_cfg.h" ) CONFIG_HEADERS="$CONFIG_HEADERS ncurses_cfg.h:ncurses_tst.hin" ;;
- *) { { echo "$as_me:16467: error: invalid argument: $ac_config_target" >&5
+ *) { { echo "$as_me:21207: error: invalid argument: $ac_config_target" >&5
echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
{ (exit 1); exit 1; }; };;
esac
@@ -16528,6 +21268,7 @@ s,@datadir@,$datadir,;t t
s,@sysconfdir@,$sysconfdir,;t t
s,@sharedstatedir@,$sharedstatedir,;t t
s,@localstatedir@,$localstatedir,;t t
+s,@runstatedir@,$runstatedir,;t t
s,@libdir@,$libdir,;t t
s,@includedir@,$includedir,;t t
s,@oldincludedir@,$oldincludedir,;t t
@@ -16569,6 +21310,8 @@ s,@AWK@,$AWK,;t t
s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@INSTALL_OPT_S@,$INSTALL_OPT_S,;t t
+s,@INSTALL_OPT_O@,$INSTALL_OPT_O,;t t
s,@LINT@,$LINT,;t t
s,@LINT_OPTS@,$LINT_OPTS,;t t
s,@CTAGS@,$CTAGS,;t t
@@ -16588,11 +21331,13 @@ s,@LDFLAGS_STATIC@,$LDFLAGS_STATIC,;t t
s,@LD_MODEL@,$LD_MODEL,;t t
s,@LD_SHARED_OPTS@,$LD_SHARED_OPTS,;t t
s,@LIBTOOL@,$LIBTOOL,;t t
+s,@LIBTOOL_OPTS@,$LIBTOOL_OPTS,;t t
s,@LIB_CLEAN@,$LIB_CLEAN,;t t
s,@LIB_COMPILE@,$LIB_COMPILE,;t t
s,@LIB_LINK@,$LIB_LINK,;t t
s,@LINK_TESTS@,$LINK_TESTS,;t t
s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t
+s,@PACKAGE@,$PACKAGE,;t t
s,@PTHREAD@,$PTHREAD,;t t
s,@TEST_ARGS@,$TEST_ARGS,;t t
s,@TEST_DEPS@,$TEST_DEPS,;t t
@@ -16618,6 +21363,8 @@ s,@X_LIBS@,$X_LIBS,;t t
s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t
s,@XCURSES_CONFIG@,$XCURSES_CONFIG,;t t
s,@ac_ct_XCURSES_CONFIG@,$ac_ct_XCURSES_CONFIG,;t t
+s,@RGB_PATH@,$RGB_PATH,;t t
+s,@no_x11_rgb@,$no_x11_rgb,;t t
s,@EXTRA_CFLAGS@,$EXTRA_CFLAGS,;t t
s,@cf_ldd_prog@,$cf_ldd_prog,;t t
s,@EXTRA_LDFLAGS@,$EXTRA_LDFLAGS,;t t
@@ -16649,10 +21396,28 @@ EOF
# These are the two extra sed commands mentioned above.
(echo ':t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ # It is possible to make a multiline substitution using escaped newlines.
+ # Ensure that we do not split the substitution between script fragments.
+ ac_BEG=$ac_end
+ ac_END=`expr $ac_end + $ac_max_sed_lines`
+ sed "1,${ac_BEG}d; ${ac_END}p; q" $tmp/subs.sed >$tmp/subs.next
+ if test -s $tmp/subs.next; then
+ grep '^s,@[^@,][^@,]*@,.*\\$' $tmp/subs.next >$tmp/subs.edit
+ if test ! -s $tmp/subs.edit; then
+ grep "^s,@[^@,][^@,]*@,.*,;t t$" $tmp/subs.next >$tmp/subs.edit
+ if test ! -s $tmp/subs.edit; then
+ if test $ac_beg -gt 1; then
+ ac_end=`expr $ac_end - 1`
+ continue
+ fi
+ fi
+ fi
+ fi
+
if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
else
- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
fi
ac_sed_frag=`expr $ac_sed_frag + 1`
ac_beg=$ac_end
@@ -16735,7 +21500,7 @@ done; }
esac
if test x"$ac_file" != x-; then
- { echo "$as_me:16738: creating $ac_file" >&5
+ { echo "$as_me:21503: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
rm -f "$ac_file"
fi
@@ -16753,7 +21518,7 @@ echo "$as_me: creating $ac_file" >&6;}
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:16756: error: cannot find input file: $f" >&5
+ test -f "$f" || { { echo "$as_me:21521: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
@@ -16766,7 +21531,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
echo $srcdir/$f
else
# /dev/null tree
- { { echo "$as_me:16769: error: cannot find input file: $f" >&5
+ { { echo "$as_me:21534: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
@@ -16782,7 +21547,7 @@ cat >>$CONFIG_STATUS <<\EOF
if test -n "$ac_seen"; then
ac_used=`grep '@datarootdir@' $ac_item`
if test -z "$ac_used"; then
- { echo "$as_me:16785: WARNING: datarootdir was used implicitly but not set:
+ { echo "$as_me:21550: WARNING: datarootdir was used implicitly but not set:
$ac_seen" >&5
echo "$as_me: WARNING: datarootdir was used implicitly but not set:
$ac_seen" >&2;}
@@ -16791,7 +21556,7 @@ $ac_seen" >&2;}
fi
ac_seen=`grep '${datarootdir}' $ac_item`
if test -n "$ac_seen"; then
- { echo "$as_me:16794: WARNING: datarootdir was used explicitly but not set:
+ { echo "$as_me:21559: WARNING: datarootdir was used explicitly but not set:
$ac_seen" >&5
echo "$as_me: WARNING: datarootdir was used explicitly but not set:
$ac_seen" >&2;}
@@ -16828,7 +21593,7 @@ s,@INSTALL@,$ac_INSTALL,;t t
ac_init=`egrep '[ ]*'$ac_name'[ ]*=' $ac_file`
if test -z "$ac_init"; then
ac_seen=`echo "$ac_seen" |sed -e 's,^,'$ac_file':,'`
- { echo "$as_me:16831: WARNING: Variable $ac_name is used but was not set:
+ { echo "$as_me:21596: WARNING: Variable $ac_name is used but was not set:
$ac_seen" >&5
echo "$as_me: WARNING: Variable $ac_name is used but was not set:
$ac_seen" >&2;}
@@ -16839,7 +21604,7 @@ $ac_seen" >&2;}
egrep -n '@[A-Z_][A-Z_0-9]+@' $ac_file >>$tmp/out
if test -s $tmp/out; then
ac_seen=`sed -e 's,^,'$ac_file':,' < $tmp/out`
- { echo "$as_me:16842: WARNING: Some variables may not be substituted:
+ { echo "$as_me:21607: WARNING: Some variables may not be substituted:
$ac_seen" >&5
echo "$as_me: WARNING: Some variables may not be substituted:
$ac_seen" >&2;}
@@ -16888,7 +21653,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
* ) ac_file_in=$ac_file.in ;;
esac
- test x"$ac_file" != x- && { echo "$as_me:16891: creating $ac_file" >&5
+ test x"$ac_file" != x- && { echo "$as_me:21656: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
# First look for the input files in the build tree, otherwise in the
@@ -16899,7 +21664,7 @@ echo "$as_me: creating $ac_file" >&6;}
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:16902: error: cannot find input file: $f" >&5
+ test -f "$f" || { { echo "$as_me:21667: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
@@ -16912,7 +21677,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
echo $srcdir/$f
else
# /dev/null tree
- { { echo "$as_me:16915: error: cannot find input file: $f" >&5
+ { { echo "$as_me:21680: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
@@ -16970,7 +21735,7 @@ cat >>$CONFIG_STATUS <<\EOF
rm -f $tmp/in
if test x"$ac_file" != x-; then
if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
- { echo "$as_me:16973: $ac_file is unchanged" >&5
+ { echo "$as_me:21738: $ac_file is unchanged" >&5
echo "$as_me: $ac_file is unchanged" >&6;}
else
ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
@@ -17047,7 +21812,7 @@ do
\$(srcdir)/test.priv.h \\
ncurses_cfg.h
$SHOW_CC
- $ECHO_CC\$(CC) -c \$(CFLAGS_DEFAULT) \$(srcdir)/$N.c
+ $ECHO_CC\$(CC) -c \$(CFLAGS_DEFAULT) -DMODULE_NAME="$N" \$(srcdir)/$N.c
TEST_EOF
done
diff --git a/test/configure.in b/test/configure.in
index c9938372e959..fcfc9a289cae 100644
--- a/test/configure.in
+++ b/test/configure.in
@@ -1,5 +1,5 @@
dnl***************************************************************************
-dnl Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+dnl Copyright (c) 1998-2019,2020 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 *
@@ -26,9 +26,9 @@ dnl sale, use or other dealings in this Software without prior written *
dnl authorization. *
dnl***************************************************************************
dnl
-dnl Author: Thomas E. Dickey 1996, etc.
+dnl Author: Thomas E. Dickey 1996-on
dnl
-dnl $Id: configure.in,v 1.113 2013/10/19 21:03:17 tom Exp $
+dnl $Id: configure.in,v 1.156 2020/01/12 00:00:16 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)
@@ -36,9 +36,12 @@ dnl
dnl If you're configuring ncurses, you shouldn't need to use this script.
dnl It's only for testing purposes.
dnl
-dnl See http://invisible-island.net/autoconf/ for additional information.
+dnl For additional information, see
+dnl https://invisible-island.net/autoconf/
+dnl https://invisible-island.net/autoconf/my-autoconf.html
+dnl https://invisible-island.net/ncurses/ncurses-examples.html
dnl ---------------------------------------------------------------------------
-AC_PREREQ(2.52.20030208)
+AC_PREREQ(2.52.20200111)
AC_INIT(ncurses.c)
AC_CONFIG_HEADER(ncurses_cfg.h:ncurses_tst.hin)
@@ -48,11 +51,15 @@ CF_CHECK_CACHE
AC_ARG_PROGRAM
+CF_HELP_MESSAGE(General Options:)
+
AC_PROG_MAKE_SET
CF_PROG_CC
+AC_C_INLINE
AC_PROG_CPP
AC_PROG_AWK
CF_PROG_INSTALL
+CF_INSTALL_OPTS
CF_PROG_LINT
CF_MAKE_TAGS
@@ -73,11 +80,13 @@ LDFLAGS_STATIC="" AC_SUBST(LDFLAGS_STATIC)
LD_MODEL="" AC_SUBST(LD_MODEL)
LD_SHARED_OPTS="" AC_SUBST(LD_SHARED_OPTS)
LIBTOOL="" AC_SUBST(LIBTOOL)
+LIBTOOL_OPTS="" AC_SUBST(LIBTOOL_OPTS)
LIB_CLEAN="" AC_SUBST(LIB_CLEAN)
LIB_COMPILE="" AC_SUBST(LIB_COMPILE)
LIB_LINK='${CC}' AC_SUBST(LIB_LINK)
LINK_TESTS="" AC_SUBST(LINK_TESTS)
LOCAL_LDFLAGS="" AC_SUBST(LOCAL_LDFLAGS)
+PACKAGE="ncurses-examples" AC_SUBST(PACKAGE)
PTHREAD="-lm" AC_SUBST(PTHREAD)
TEST_ARGS="" AC_SUBST(TEST_ARGS)
TEST_DEPS="" AC_SUBST(TEST_DEPS)
@@ -95,11 +104,17 @@ AC_EXEEXT
AC_OBJEXT
CF_GCC_ATTRIBUTES
-CF_XOPEN_SOURCE
+CF_ENABLE_STRING_HACKS
+CF_XOPEN_SOURCE(600)
CF_SIG_ATOMIC_T
+# Work around breakage on OS X
+CF_SIGWINCH
+
+# Checks for CODESET support.
+AM_LANGINFO_CODESET
+
dnl ---------------------------------------------------------------------------
-CF_HELP_MESSAGE(General Options:)
CF_PKG_CONFIG
CF_DISABLE_ECHO
@@ -120,44 +135,102 @@ CF_HELP_MESSAGE(Curses Version-dependent Options:)
CF_WITH_NCURSES_ETC
case $cf_cv_screen in
-curses|curses_*)
- CF_NETBSD_FORM_H
- CF_NETBSD_MENU_H
- ;;
-ncursesw)
- cf_cv_libtype=w
+(ncurses*)
+ cf_cv_libtype=`echo "$cf_cv_screen" | sed -e 's/^ncurses//'`
;;
esac
+CF_WITH_X11_RGB
+
dnl If we've not specified a library, assume we're using sysvr4 libraries
dnl installed conventionally (e.g., SunOS 5.x - solaris).
dnl Autoconf builds up the $LIBS in reverse order
-case $cf_cv_screen in #(vi
-pdcurses) #(vi
+cf_curses_headers=
+
+case $cf_cv_screen in
+(pdcurses)
+ cf_default_panel=no
+ cf_default_form=no
+ cf_default_menu=no
+ cf_default_tinfo=no
;;
-*)
- # look for curses-related libraries
- : ${cf_panel_lib:=panel}
- : ${cf_menu_lib:=menu}
- : ${cf_form_lib:=form}
- AC_CHECK_LIB($cf_panel_lib$cf_cv_libtype,new_panel)
- AC_CHECK_LIB($cf_menu_lib$cf_cv_libtype,menu_driver)
- AC_CHECK_LIB($cf_form_lib$cf_cv_libtype,form_driver)
-
- # look for curses-related headers
- AC_CHECK_HEADERS( \
- nc_alloc.h \
- nomacros.h \
- form.h \
- menu.h \
- panel.h \
- term_entry.h \
- )
+(xcurses|bsdcurses)
+ cf_default_panel=no
+ cf_default_form=no
+ cf_default_menu=no
+ cf_default_tinfo=yes
+ ;;
+(*)
+ cf_default_panel=yes
+ cf_default_form=yes
+ cf_default_menu=yes
+ cf_default_tinfo=yes
+ case $cf_cv_screen in
+ (ncurses*)
+ cf_curses_headers="nc_alloc.h nomacros.h term_entry.h"
+ ;;
+ esac
;;
esac
+AC_MSG_CHECKING(if you want to check for panel functions)
+CF_ARG_DISABLE(panel,
+ [ --disable-panel disable checks for panel functions],
+ cf_enable_panel=no,
+ cf_enable_panel=$cf_default_panel,
+ yes)
+AC_MSG_RESULT($cf_enable_panel)
+if test $cf_enable_panel = yes
+then
+ CF_CHECK_CURSES_LIB(panel,$cf_cv_libtype,new_panel,0)
+ cf_curses_headers="$cf_curses_headers panel.h"
+fi
+
+AC_MSG_CHECKING(if you want to check for menu functions)
+CF_ARG_DISABLE(menu,
+ [ --disable-menu disable checks for menu functions],
+ cf_enable_menu=no,
+ cf_enable_menu=$cf_default_menu,
+ yes)
+AC_MSG_RESULT($cf_enable_menu)
+if test $cf_enable_menu = yes
+then
+ case $cf_cv_screen in
+ (ncurses*)
+ ;;
+ (curses*)
+ CF_NETBSD_MENU_H
+ ;;
+ esac
+ CF_CHECK_CURSES_LIB(menu,$cf_cv_libtype,menu_driver,[0,0])
+ cf_curses_headers="$cf_curses_headers menu.h"
+fi
+
+AC_MSG_CHECKING(if you want to check for form functions)
+CF_ARG_DISABLE(form,
+ [ --disable-form disable checks for form functions],
+ cf_enable_form=no,
+ cf_enable_form=$cf_default_form,
+ yes)
+AC_MSG_RESULT($cf_enable_form)
+if test $cf_enable_form = yes
+then
+ case $cf_cv_screen in
+ (ncurses*)
+ ;;
+ (curses*)
+ CF_NETBSD_FORM_H
+ ;;
+ esac
+ CF_CHECK_CURSES_LIB(form,$cf_cv_libtype,form_driver,[0,0])
+ cf_curses_headers="$cf_curses_headers form.h"
+fi
+
+# look for curses-related headers
+AC_CHECK_HEADERS( $cf_curses_headers )
+
AC_STDC_HEADERS
AC_HEADER_TIME
AC_CHECK_HEADERS( \
@@ -165,6 +238,7 @@ getopt.h \
locale.h \
math.h \
stdarg.h \
+stdint.h \
sys/ioctl.h \
sys/select.h \
sys/time.h \
@@ -175,9 +249,52 @@ unistd.h \
CF_GETOPT_HEADER
AC_CHECK_FUNCS( \
+getopt \
gettimeofday \
+strstr \
+tsearch \
)
+# use a compile-check to work with ncurses*-config and subdirectory includes
+AC_CACHE_CHECK(if we can use termcap.h,cf_cv_have_termcap_h,[
+ AC_TRY_COMPILE([
+#include <curses.h>
+#ifdef NCURSES_VERSION
+#undef NCURSES_VERSION
+#endif
+#include <termcap.h>
+#ifndef NCURSES_VERSION
+#error wrong header
+#endif
+],
+ [return 0;],
+ [cf_cv_have_termcap_h=yes],
+ [cf_cv_have_termcap_h=no])])
+if test "x$cf_cv_have_termcap_h" = xyes
+then
+ AC_DEFINE(HAVE_TERMCAP_H,1,[Define to 1 if we can use termcap.h])
+else
+AC_CACHE_CHECK(if we can use ncurses/termcap.h,cf_cv_have_ncurses_termcap_h,[
+ AC_TRY_COMPILE([
+#include <ncurses/curses.h>
+#ifdef NCURSES_VERSION
+#undef NCURSES_VERSION
+#endif
+#include <ncurses/termcap.h>
+#ifndef NCURSES_VERSION
+#error wrong header
+#endif
+],
+ [return 0;],
+ [cf_cv_have_ncurses_termcap_h=yes],
+ [cf_cv_have_ncurses_termcap_h=no])])
+test "x$cf_cv_have_ncurses_termcap_h" = xyes && AC_DEFINE(HAVE_NCURSES_TERMCAP_H,1,[Define to 1 if we can use ncurses/termcap.h])
+fi
+
+if test "x$ac_cv_func_getopt" = xno; then
+ AC_MSG_ERROR(getopt is required for building programs)
+fi
+
if test "$cf_enable_widec" = yes; then
AC_CHECK_FUNCS( \
mblen \
@@ -192,9 +309,14 @@ wcstombs \
fi
CF_CURSES_FUNCS( \
+alloc_pair \
assume_default_colors \
chgat \
+color_content \
color_set \
+copywin \
+delscreen \
+dupwin \
filter \
getbegx \
getcurx \
@@ -202,12 +324,19 @@ getmaxx \
getnstr \
getparx \
getwin \
+halfdelay \
+init_extended_color \
+mvderwin \
mvvline \
+mvwin \
mvwvline \
napms \
+newpad \
putwin \
+reset_color_pairs \
resize_term \
resizeterm \
+restartterm \
ripoffline \
scr_dump \
setupterm \
@@ -217,16 +346,23 @@ termattrs \
tgetent \
tigetnum \
tigetstr \
+tputs_sp \
typeahead \
use_default_colors \
+use_env \
+use_extended_names \
use_screen \
use_window \
+vid_puts \
+vidputs \
vsscanf \
vw_printw \
wchgat \
+winsdelln \
winsstr \
wresize \
wsyncdown \
+_tracef \
)
CF_TPUTS_PROTO
@@ -279,7 +415,32 @@ else
AC_DEFINE(USE_WIDEC_SUPPORT,0)
fi
+AC_CACHE_CHECK(if $cf_cv_screen library uses pthreads,cf_cv_use_pthreads,[
+AC_TRY_LINK([
+#include <${cf_cv_ncurses_header:-curses.h}>
+extern void _nc_init_pthreads(void);
+],
+[
+ initscr();
+ _nc_init_pthreads();
+ ],
+ [cf_cv_use_pthreads=yes],
+ [cf_cv_use_pthreads=no])
+])
+test $cf_cv_use_pthreads = yes && AC_DEFINE(USE_PTHREADS,1,[Define to 1 if $cf_cv_screen library uses pthreads])
+
CF_SYS_TIME_SELECT
+
+# special check for test/ditto.c
+CF_FUNC_OPENPTY
+if test "$cf_cv_func_openpty" != no ; then
+ AC_DEFINE_UNQUOTED(USE_OPENPTY_HEADER,<$cf_cv_func_openpty>,[Define to actual header for openpty function])
+ AC_DEFINE(USE_XTERM_PTY,1,[Define to 1 if we should assume xterm pseudoterminal interface])
+ if test "x$cf_cv_lib_util" = xyes ; then
+ CF_ADD_LIB(util,TEST_LIBS)
+ fi
+fi
+
CF_FUNC_CURSES_VERSION
CF_CURSES_ACS_MAP
@@ -308,12 +469,17 @@ if test "$cf_enable_widec" = yes; then
fi
fi
-CF_CURSES_CHECK_DATA(boolnames)
-CF_CURSES_CHECK_DATA(boolfnames)
+CF_CURSES_CHECK_DATA(\
+TABSIZE \
+curscr \
+ospeed \
+boolnames \
+boolfnames \
+ttytype)
dnl ---------------------------------------------------------------------------
CF_HELP_MESSAGE(Testing/development Options:)
-CF_ENABLE_WARNINGS
+CF_ENABLE_WARNINGS(Wno-unknown-pragmas)
CF_DISABLE_LEAKS
CF_DISABLE_RPATH_HACK
@@ -340,7 +506,7 @@ do
\$(srcdir)/test.priv.h \\
ncurses_cfg.h
$SHOW_CC
- $ECHO_CC\$(CC) -c \$(CFLAGS_DEFAULT) \$(srcdir)/$N.c
+ $ECHO_CC\$(CC) -c \$(CFLAGS_DEFAULT) -DMODULE_NAME="$N" \$(srcdir)/$N.c
TEST_EOF
done
diff --git a/test/demo_altkeys.c b/test/demo_altkeys.c
index f2b07b1c8c90..d85bac48bce2 100644
--- a/test/demo_altkeys.c
+++ b/test/demo_altkeys.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2005-2006,2008 Free Software Foundation, Inc. *
+ * Copyright (c) 2005-2018,2019 Free 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,27 +26,17 @@
* authorization. *
****************************************************************************/
/*
- * $Id: demo_altkeys.c,v 1.9 2010/11/14 00:59:26 tom Exp $
+ * $Id: demo_altkeys.c,v 1.13 2019/08/17 21:49:40 tom Exp $
*
* Demonstrate the define_key() function.
* Thomas Dickey - 2005/10/22
*/
+#define NEED_TIME_H
#include <test.priv.h>
#if defined(NCURSES_VERSION) && NCURSES_EXT_FUNCS
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-
#define MY_LOGFILE "demo_altkeys.log"
#define MY_KEYS (KEY_MAX + 1)
@@ -57,11 +47,12 @@ static void
log_last_line(WINDOW *win)
{
FILE *fp;
- int y, x, n;
- char temp[256];
if ((fp = fopen(MY_LOGFILE, "a")) != 0) {
+ char temp[256];
+ int y, x, n;
int need = sizeof(temp) - 1;
+
if (need > COLS)
need = COLS;
getyx(win, y, x);
@@ -85,13 +76,15 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
int n;
int ch;
#if HAVE_GETTIMEOFDAY
- int secs, msecs;
- struct timeval current, previous;
+ struct timeval previous;
#endif
unlink(MY_LOGFILE);
- newterm(0, stdout, stdin);
+ if (newterm(0, stdout, stdin) == 0) {
+ fprintf(stderr, "Cannot initialize terminal\n");
+ ExitProgram(EXIT_FAILURE);
+ }
(void) cbreak(); /* take input chars one at a time, no wait for \n */
(void) noecho(); /* don't echo input */
@@ -104,14 +97,15 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
*/
for (n = 0; n < 255; ++n) {
char temp[10];
- sprintf(temp, "\033%c", n);
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "\033%c", n);
define_key(temp, n + MY_KEYS);
}
for (n = KEY_MIN; n < KEY_MAX; ++n) {
char *value;
if ((value = keybound(n, 0)) != 0) {
- char *temp = typeMalloc(char, strlen(value) + 2);
- sprintf(temp, "\033%s", value);
+ size_t need = strlen(value) + 2;
+ char *temp = typeMalloc(char, need);
+ _nc_SPRINTF(temp, _nc_SLIMIT(need) "\033%s", value);
define_key(temp, n + MY_KEYS);
free(temp);
free(value);
@@ -125,8 +119,10 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
while ((ch = getch()) != ERR) {
bool escaped = (ch >= MY_KEYS);
const char *name = keyname(escaped ? (ch - MY_KEYS) : ch);
-
#if HAVE_GETTIMEOFDAY
+ int secs, msecs;
+ struct timeval current;
+
gettimeofday(&current, 0);
secs = (int) (current.tv_sec - previous.tv_sec);
msecs = (int) ((current.tv_usec - previous.tv_usec) / 1000);
diff --git a/test/demo_defkey.c b/test/demo_defkey.c
index 045c2c7bd3e8..e5bb9c2680e0 100644
--- a/test/demo_defkey.c
+++ b/test/demo_defkey.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2018,2019 Free 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: demo_defkey.c,v 1.22 2013/09/28 22:02:17 tom Exp $
+ * $Id: demo_defkey.c,v 1.29 2019/08/17 21:49:19 tom Exp $
*
* Demonstrate the define_key() function.
* Thomas Dickey - 2002/11/23
@@ -45,10 +45,10 @@ static void
log_last_line(WINDOW *win)
{
FILE *fp;
- int y, x, n;
- char temp[256];
if ((fp = fopen(MY_LOGFILE, "a")) != 0) {
+ char temp[256];
+ int y, x, n;
int need = sizeof(temp) - 1;
if (need > COLS)
need = COLS;
@@ -78,15 +78,15 @@ visichar(int ch)
ch = UChar(ch);
assert(ch >= 0 && ch < 256);
if (ch == '\\') {
- strcpy(temp, "\\\\");
+ _nc_STRCPY(temp, "\\\\", sizeof(temp));
} else if (ch == '\033') {
- strcpy(temp, "\\E");
+ _nc_STRCPY(temp, "\\E", sizeof(temp));
} else if (ch < ' ') {
- sprintf(temp, "\\%03o", ch);
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "\\%03o", ch);
} else if (ch >= 127) {
- sprintf(temp, "\\%03o", ch);
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "\\%03o", ch);
} else {
- sprintf(temp, "%c", ch);
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "%c", ch);
}
return temp;
}
@@ -98,19 +98,21 @@ static char *
visible(const char *string)
{
char *result = 0;
- size_t need = 1;
- int pass;
- int n;
if (string != 0 && *string != '\0') {
+ int pass;
+ int n;
+ size_t need = 1;
+
for (pass = 0; pass < 2; ++pass) {
for (n = 0; string[n] != '\0'; ++n) {
char temp[80];
- strncpy(temp, visichar(string[n]), sizeof(temp) - 2);
- if (pass)
- strcat(result, temp);
- else
+ _nc_STRNCPY(temp, visichar(string[n]), sizeof(temp) - 2);
+ if (pass) {
+ _nc_STRCAT(result, temp, need);
+ } else {
need += strlen(temp);
+ }
}
if (!pass)
result = typeCalloc(char, need);
@@ -131,7 +133,7 @@ really_define_key(WINDOW *win, const char *new_string, int code)
char temp[80];
if (code_name == 0) {
- sprintf(temp, "Keycode %d", code);
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "Keycode %d", code);
code_name = temp;
}
@@ -184,15 +186,16 @@ duplicate(WINDOW *win, NCURSES_CONST char *name, int code)
if (value != 0) {
const char *prefix = 0;
- char temp[BUFSIZ];
- if (!strncmp(value, "\033[", (size_t) 2)) {
+ if (!(strncmp) (value, "\033[", (size_t) 2)) {
prefix = "\033O";
- } else if (!strncmp(value, "\033O", (size_t) 2)) {
+ } else if (!(strncmp) (value, "\033O", (size_t) 2)) {
prefix = "\033[";
}
if (prefix != 0) {
- sprintf(temp, "%s%s", prefix, value + 2);
+ char temp[BUFSIZ];
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "%s%s", prefix, value + 2);
really_define_key(win, temp, code);
}
}
@@ -239,7 +242,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
*/
for (n = 0; n < 12; ++n) {
char name[10];
- sprintf(name, "kf%d", n + 1);
+ _nc_SPRINTF(name, _nc_SLIMIT(sizeof(name)) "kf%d", n + 1);
fkeys[n] = tigetstr(name);
}
for (n = 0; n < 12; ++n) {
@@ -270,7 +273,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
break;
}
endwin();
- ExitProgram(EXIT_FAILURE);
+ ExitProgram(EXIT_SUCCESS);
}
#else
int
diff --git a/test/demo_forms.c b/test/demo_forms.c
index 1e6806d2e523..ccfb86e311fe 100644
--- a/test/demo_forms.c
+++ b/test/demo_forms.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2003-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2003-2018,2019 Free 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,14 +26,12 @@
* authorization. *
****************************************************************************/
/*
- * $Id: demo_forms.c,v 1.46 2013/09/28 21:55:54 tom Exp $
+ * $Id: demo_forms.c,v 1.56 2019/08/17 21:49:19 tom Exp $
*
* Demonstrate a variety of functions from the form library.
* Thomas Dickey - 2003/4/26
*/
/*
-TYPE_ENUM -
-TYPE_REGEXP -
dup_field -
field_init -
field_just -
@@ -149,8 +147,8 @@ read_data(const char *filename)
char *value = typeRealloc(char, need, prior);
if (value == 0)
failed("realloc");
- strcat(value, "\n");
- strcat(value, buffer);
+ _nc_STRCAT(value, "\n", need);
+ _nc_STRCAT(value, buffer, need);
my_data[more - 1].value = value;
} else {
more = 0;
@@ -172,6 +170,7 @@ read_data(const char *filename)
failed("expected a colon");
}
}
+ fclose(fp);
} else {
failed(filename);
}
@@ -208,7 +207,7 @@ make_field(const char *label, int frow, int fcol, int rows, int cols)
if (d_option) {
if (has_colors()) {
set_field_fore(f, (chtype) COLOR_PAIR(2));
- set_field_back(f, A_UNDERLINE | COLOR_PAIR(3));
+ set_field_back(f, (A_UNDERLINE | (chtype) COLOR_PAIR(3)));
} else {
set_field_fore(f, A_BOLD);
}
@@ -226,7 +225,7 @@ make_field(const char *label, int frow, int fcol, int rows, int cols)
}
static void
-display_form(FORM * f)
+display_form(FORM *f)
{
WINDOW *w;
int rows, cols;
@@ -249,7 +248,7 @@ display_form(FORM * f)
}
static void
-erase_form(FORM * f)
+erase_form(FORM *f)
{
WINDOW *w = form_win(f);
WINDOW *s = form_sub(f);
@@ -272,7 +271,7 @@ show_insert_mode(bool insert_mode)
#define O_SELECTABLE (O_ACTIVE | O_VISIBLE)
static FIELD *
-another_field(FORM * form, FIELD * field)
+another_field(FORM *form, FIELD *field)
{
FIELD **f = form_fields(form);
FIELD *result = 0;
@@ -289,7 +288,7 @@ another_field(FORM * form, FIELD * field)
}
static int
-my_form_driver(FORM * form, int c)
+my_form_driver(FORM *form, int c)
{
static bool insert_mode = TRUE;
FIELD *field;
@@ -336,12 +335,9 @@ my_form_driver(FORM * form, int c)
}
static void
-show_current_field(WINDOW *win, FORM * form)
+show_current_field(WINDOW *win, FORM *form)
{
FIELD *field;
- FIELDTYPE *type;
- char *buffer;
- int nbuf;
int field_rows, field_cols, field_max;
int currow, curcol;
@@ -356,7 +352,11 @@ show_current_field(WINDOW *win, FORM * form)
if (data_behind(form))
waddstr(win, " behind");
waddch(win, '\n');
+
if ((field = current_field(form)) != 0) {
+ FIELDTYPE *type;
+ int nbuf;
+
wprintw(win, "Page %d%s, Field %d/%d%s:",
form_page(form),
new_page(field) ? "*" : "",
@@ -398,13 +398,13 @@ show_current_field(WINDOW *win, FORM * form)
}
waddch(win, ' ');
- (void) wattrset(win, (int) field_fore(field));
+ (void) wattrset(win, AttrArg(field_fore(field), 0));
waddstr(win, "fore");
wattroff(win, (int) field_fore(field));
waddch(win, '/');
- (void) wattrset(win, (int) field_back(field));
+ (void) wattrset(win, AttrArg(field_back(field), 0));
waddstr(win, "back");
wattroff(win, (int) field_back(field));
@@ -412,6 +412,7 @@ show_current_field(WINDOW *win, FORM * form)
waddstr(win, "\n");
for (nbuf = 0; nbuf <= 2; ++nbuf) {
+ char *buffer;
if ((buffer = field_buffer(field, nbuf)) != 0) {
wprintw(win, "buffer %d:", nbuf);
(void) wattrset(win, A_REVERSE);
@@ -431,14 +432,14 @@ show_current_field(WINDOW *win, FORM * form)
static void
demo_forms(void)
{
- WINDOW *w;
FORM *form;
FIELD *f[100]; /* will memset to zero */
- int finished = 0, c;
+ int c;
unsigned n = 0;
int pg;
- WINDOW *also;
const char *fname;
+ static const char *my_enum[] =
+ {"first", "second", "third", 0};
#ifdef NCURSES_MOUSE_VERSION
mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0);
@@ -455,7 +456,8 @@ demo_forms(void)
memset(f, 0, sizeof(f));
for (pg = 0; pg < 4; ++pg) {
char label[80];
- sprintf(label, "Sample Form Page %d", pg + 1);
+ _nc_SPRINTF(label, _nc_SLIMIT(sizeof(label))
+ "Sample Form Page %d", pg + 1);
f[n++] = make_label(label, 0, 15);
set_new_page(f[n - 1], TRUE);
@@ -476,23 +478,30 @@ demo_forms(void)
f[n++] = make_field(fname, 3, 34, 1, 12);
set_field_type(f[n - 1], TYPE_ALPHA, 1);
break;
+
case 1:
fname = "Last Name";
f[n++] = make_label(fname, 2, 0);
- f[n++] = make_field(fname, 3, 0, 1, 18);
+ f[n++] = make_field(fname, 3, 0, 1, 12);
set_field_type(f[n - 1], TYPE_ALPHA, 1);
fname = "First Name";
- f[n++] = make_label(fname, 2, 20);
- f[n++] = make_field(fname, 3, 20, 1, 12);
+ f[n++] = make_label(fname, 2, 14);
+ f[n++] = make_field(fname, 3, 14, 1, 12);
set_field_type(f[n - 1], TYPE_ALPHA, 1);
fname = "MI";
- f[n++] = make_label(fname, 2, 34);
- f[n++] = make_field(fname, 3, 34, 1, 1);
+ f[n++] = make_label(fname, 2, 28);
+ f[n++] = make_field(fname, 3, 28, 1, 1);
set_field_pad(f[n - 1], '?');
set_field_type(f[n - 1], TYPE_ALPHA, 1);
+
+ fname = "First/Second/Third";
+ f[n++] = make_label(fname, 2, 32);
+ f[n++] = make_field(fname, 3, 32, 1, 12);
+ set_field_type(f[n - 1], TYPE_ENUM, my_enum, 0, 0);
break;
+
case 2:
fname = "Host Name";
f[n++] = make_label(fname, 2, 0);
@@ -505,20 +514,24 @@ demo_forms(void)
f[n++] = make_field(fname, 3, 26, 1, 16);
set_field_type(f[n - 1], TYPE_IPV4, 1);
#endif
-
break;
case 3:
fname = "Four digits";
f[n++] = make_label(fname, 2, 0);
- f[n++] = make_field(fname, 3, 0, 1, 18);
+ f[n++] = make_field(fname, 3, 0, 1, 10);
set_field_type(f[n - 1], TYPE_INTEGER, 4, 0, 0);
fname = "Numeric";
- f[n++] = make_label(fname, 2, 20);
- f[n++] = make_field(fname, 3, 20, 1, 12);
+ f[n++] = make_label(fname, 2, 13);
+ f[n++] = make_field(fname, 3, 13, 1, 12);
set_field_type(f[n - 1], TYPE_NUMERIC, 3, -10000.0, 100000000.0);
+ fname = "Phone number";
+ f[n++] = make_label(fname, 2, 27);
+ f[n++] = make_field(fname, 3, 27, 1, 16);
+ set_field_type(f[n - 1], TYPE_REGEXP,
+ "^([0-9]-)?[0-9]{3}-[0-9]{3}-[0-9]{4} *$");;
break;
}
@@ -531,6 +544,9 @@ demo_forms(void)
f[n] = (FIELD *) 0;
if ((form = new_form(f)) != 0) {
+ WINDOW *w;
+ WINDOW *also;
+ int finished = 0;
display_form(form);
@@ -557,8 +573,7 @@ demo_forms(void)
free_form(form);
}
for (c = 0; f[c] != 0; c++) {
- void *ptr = field_userptr(f[c]);
- free(ptr);
+ free_edit_field(f[c]);
free_field(f[c]);
}
noraw();
diff --git a/test/demo_keyok.c b/test/demo_keyok.c
index 8724d9819ea0..ea9604efe8d2 100644
--- a/test/demo_keyok.c
+++ b/test/demo_keyok.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2003,2006 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2006,2017 Free 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: demo_keyok.c,v 1.5 2006/11/04 20:09:51 tom Exp $
+ * $Id: demo_keyok.c,v 1.6 2017/04/10 00:37:08 tom Exp $
*
* Demonstrate the keyok() function.
* Thomas Dickey - 2002/11/23
@@ -39,6 +39,7 @@ int
main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
{
int lastch = ERR;
+ int prior = ERR;
int ch;
WINDOW *win;
@@ -57,6 +58,9 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
while ((ch = wgetch(win)) != ERR) {
const char *name = keyname(ch);
+ if (ch == ESCAPE && prior == ch)
+ break;
+ prior = ch;
wprintw(win, "Keycode %d, name %s\n",
ch,
name != 0 ? name : "<null>");
diff --git a/test/demo_menus.c b/test/demo_menus.c
index c742223f0375..765732338122 100644
--- a/test/demo_menus.c
+++ b/test/demo_menus.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2005-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2005-2017,2019 Free 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: demo_menus.c,v 1.52 2013/09/28 21:55:02 tom Exp $
+ * $Id: demo_menus.c,v 1.70 2019/12/07 18:06:12 tom Exp $
*
* Demonstrate a variety of functions from the menu library.
* Thomas Dickey - 2005/4/9
@@ -75,11 +75,8 @@ top_row -
#ifdef NCURSES_VERSION
#ifdef TRACE
static unsigned save_trace = TRACE_ORDINARY | TRACE_CALLS;
-extern unsigned _nc_tracing;
static MENU *mpTrace;
#endif
-#else
-#undef TRACE
#endif
typedef enum {
@@ -97,7 +94,7 @@ typedef enum {
#define MENU_Y 1
typedef struct {
- const char *name;
+ NCURSES_CONST char *name;
void (*func) (int);
unsigned mask;
} MENU_DATA;
@@ -112,6 +109,20 @@ static WINDOW *status;
static bool loaded_file = FALSE;
+static char empty[1];
+
+#ifdef TRACE
+static void failed(const char *s) GCC_NORETURN;
+
+static void
+failed(const char *s)
+{
+ perror(s);
+ endwin();
+ ExitProgram(EXIT_FAILURE);
+}
+#endif
+
/* Common function to allow ^T to toggle trace-mode in the middle of a test
* so that trace-files can be made smaller.
*/
@@ -128,7 +139,7 @@ wGetchar(WINDOW *win)
} else {
_nc_tracing = save_trace;
}
- trace(_nc_tracing);
+ curses_trace(_nc_tracing);
if (_nc_tracing)
Trace(("TOGGLE-TRACING ON"));
}
@@ -184,9 +195,9 @@ menu_offset(MenuNo number)
int result = 0;
if (okMenuNo(number)) {
- int spc_desc, spc_rows, spc_cols;
-
+ int spc_rows;
#ifdef NCURSES_VERSION
+ int spc_desc, spc_cols;
menu_spacing(mpBanner, &spc_desc, &spc_rows, &spc_cols);
#else
spc_rows = 0;
@@ -268,13 +279,6 @@ menu_create(ITEM ** items, int count, int ncols, MenuNo number)
if (mcols + (2 * margin + x) >= COLS)
mcols = COLS - (2 * margin + x);
-#ifdef TRACE
- if (number == eTrace)
- menu_opts_off(result, O_ONEVALUE);
- else
- menu_opts_on(result, O_ONEVALUE);
-#endif
-
menuwin = newwin(mrows + (2 * margin), mcols + (2 * margin), y, x);
set_menu_win(result, menuwin);
keypad(menuwin, TRUE);
@@ -283,6 +287,16 @@ menu_create(ITEM ** items, int count, int ncols, MenuNo number)
set_menu_sub(result, derwin(menuwin, mrows, mcols, margin, margin));
+#ifdef TRACE
+ if (number == eTrace)
+ menu_opts_off(result, O_ONEVALUE);
+ else
+ menu_opts_on(result, O_ONEVALUE);
+#endif
+#if defined(NCURSES_MOUSE_VERSION) && defined(O_MOUSE_MENU)
+ menu_opts_on(result, O_MOUSE_MENU);
+#endif
+
post_menu(result);
set_menu_init(result, my_menu_init);
@@ -295,12 +309,11 @@ menu_create(ITEM ** items, int count, int ncols, MenuNo number)
static void
menu_destroy(MENU * m)
{
- int count;
-
Trace(("menu_destroy %p", (void *) m));
if (m != 0) {
ITEM **items = menu_items(m);
const char *blob = 0;
+ int count;
count = item_count(m);
Trace(("menu_destroy %p count %d", (void *) m, count));
@@ -315,7 +328,7 @@ menu_destroy(MENU * m)
if ((count > 0) && (m == mpSelect)) {
if (blob && loaded_file) {
Trace(("freeing blob %p", blob));
- free((char *) blob);
+ free((void *) blob);
}
free(items);
items = 0;
@@ -356,8 +369,8 @@ build_file_menu(MenuNo number)
int n;
for (n = 0; table[n].name != 0; ++n) {
- *ip = new_item(table[n].name, "");
- set_item_userptr(*ip, &table[n]);
+ *ip = new_item(table[n].name, empty);
+ set_item_userptr(*ip, (void *) &table[n]);
++ip;
}
*ip = (ITEM *) 0;
@@ -415,7 +428,6 @@ build_select_menu(MenuNo number, char *filename)
&& (sb.st_mode & S_IFMT) == S_IFREG
&& sb.st_size != 0) {
size_t size = (size_t) sb.st_size;
- unsigned j, k;
char *blob = typeMalloc(char, size + 1);
MENU_DATA *list = typeCalloc(MENU_DATA, size + 1);
@@ -428,6 +440,7 @@ build_select_menu(MenuNo number, char *filename)
if (fp != 0) {
if (fread(blob, sizeof(char), size, fp) == size) {
bool mark = TRUE;
+ unsigned j, k;
for (j = k = 0; j < size; ++j) {
if (mark) {
list[k++].name = blob + j;
@@ -464,8 +477,8 @@ build_select_menu(MenuNo number, char *filename)
for (i = 0; ap[i].name != 0; ++i) {
ap[i].func = call_select;
ap[i].mask = (unsigned) i;
- *ip = new_item(ap[i].name, "");
- set_item_userptr(*ip, &table[i]);
+ *ip = new_item(ap[i].name, empty);
+ set_item_userptr(*ip, (void *) &table[i]);
++ip;
}
*ip = 0;
@@ -526,8 +539,8 @@ build_trace_menu(MenuNo number)
int n;
for (n = 0; t_tbl[n].name != 0; n++) {
- *ip = new_item(t_tbl[n].name, "");
- set_item_userptr(*ip, &t_tbl[n]);
+ *ip = new_item(t_tbl[n].name, empty);
+ set_item_userptr(*ip, (void *) &t_tbl[n]);
++ip;
}
*ip = (ITEM *) 0;
@@ -539,27 +552,31 @@ static char *
tracetrace(unsigned tlevel)
{
static char *buf;
+ static size_t need = 12;
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 = typeMalloc(char, need);
+ if (!buf)
+ failed("tracetrace");
}
- sprintf(buf, "0x%02x = {", tlevel);
+ _nc_SPRINTF(buf, _nc_SLIMIT(need) "0x%02x = {", tlevel);
if (tlevel == 0) {
- sprintf(buf + strlen(buf), "%s, ", t_tbl[0].name);
+ _nc_STRCAT(buf, t_tbl[0].name, need);
+ _nc_STRCAT(buf, ", ", need);
} else {
for (n = 1; t_tbl[n].name != 0; n++)
if ((tlevel & t_tbl[n].mask) == t_tbl[n].mask) {
- strcat(buf, t_tbl[n].name);
- strcat(buf, ", ");
+ _nc_STRCAT(buf, t_tbl[n].name, need);
+ _nc_STRCAT(buf, ", ", need);
}
}
if (buf[strlen(buf) - 2] == ',')
buf[strlen(buf) - 2] = '\0';
- return (strcat(buf, "}"));
+ _nc_STRCAT(buf, "}", need);
+ return buf;
}
/* fake a dynamically reconfigurable menu using the 0th entry to deselect
@@ -569,13 +586,14 @@ static bool
update_trace_menu(MENU * m)
{
ITEM **items;
- ITEM *i, **p;
+ ITEM *i;
bool changed = FALSE;
items = menu_items(m);
i = current_item(m);
if (i == items[0]) {
if (item_value(i)) {
+ ITEM **p;
for (p = items + 1; *p != 0; p++)
if (item_value(*p)) {
set_item_value(*p, FALSE);
@@ -591,7 +609,6 @@ perform_trace_menu(int cmd)
/* interactively set the trace level */
{
ITEM **ip;
- unsigned newtrace;
int result;
for (ip = menu_items(mpTrace); *ip; ip++) {
@@ -607,14 +624,14 @@ perform_trace_menu(int cmd)
if (result == E_OK) {
if (update_trace_menu(mpTrace) || cmd == REQ_TOGGLE_ITEM) {
- newtrace = 0;
+ unsigned newtrace = 0;
for (ip = menu_items(mpTrace); *ip; ip++) {
if (item_value(*ip)) {
MENU_DATA *td = (MENU_DATA *) item_userptr(*ip);
newtrace |= td->mask;
}
}
- trace(newtrace);
+ curses_trace(newtrace);
Trace(("trace level interactively set to %s", tracetrace(_nc_tracing)));
MvWPrintw(status, 1, 0,
@@ -683,8 +700,8 @@ build_menus(char *filename)
int n;
for (n = 0; table[n].name != 0; ++n) {
- *ip = new_item(table[n].name, "");
- set_item_userptr(*ip, &table[n]);
+ *ip = new_item(table[n].name, empty);
+ set_item_userptr(*ip, (void *) &table[n]);
++ip;
}
*ip = (ITEM *) 0;
@@ -749,6 +766,36 @@ move_menus(MENU * current, int by_y, int by_x)
}
}
+#if defined(KEY_RESIZE) && NCURSES_EXT_FUNCS
+static void
+resize_menu(MENU ** menu)
+{
+#if 0
+ WINDOW *win = menu_win(*menu);
+ WINDOW *sub = menu_sub(*menu);
+#endif
+ (void) menu;
+}
+
+static void
+resize_menus(MENU * current)
+{
+ (void) current;
+
+ werase(status);
+ wnoutrefresh(status);
+ wresize(status, 1, COLS);
+ mvwin(status, LINES - 1, 0);
+
+ resize_menu(&mpBanner);
+ resize_menu(&mpFile);
+ resize_menu(&mpSelect);
+#ifdef TRACE
+ resize_menu(&mpTrace);
+#endif
+}
+#endif /* defined(KEY_RESIZE) && NCURSES_EXT_FUNCS */
+
static void
show_status(int ch, MENU * menu)
{
@@ -772,7 +819,7 @@ perform_menus(void)
int ch = ERR;
#ifdef NCURSES_MOUSE_VERSION
- mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0);
+ mousemask(BUTTON1_CLICKED, (mmask_t *) 0);
#endif
menu_display(last_menu);
@@ -801,6 +848,11 @@ perform_menus(void)
case KEY_SRIGHT:
move_menus(last_menu, 0, 1);
continue;
+#if defined(KEY_RESIZE) && NCURSES_EXT_FUNCS
+ case KEY_RESIZE:
+ resize_menus(last_menu);
+ continue;
+#endif
}
cmd = menu_virtualize(ch);
@@ -834,9 +886,17 @@ perform_menus(void)
#endif
}
+#if defined(NCURSES_MOUSE_VERSION) && defined(O_MOUSE_MENU)
if ((code == E_REQUEST_DENIED) && (cmd == KEY_MOUSE)) {
+ (void) menu_getc(mpBanner);
code = menu_driver(mpBanner, cmd);
+ if (code == E_REQUEST_DENIED) {
+ MEVENT event;
+ if (menu_getc(mpBanner) == KEY_MOUSE)
+ getmouse(&event); /* give up */
+ }
}
+#endif
break;
}
@@ -866,10 +926,6 @@ perform_menus(void)
beep();
continue;
}
-
-#ifdef NCURSES_MOUSE_VERSION
- mousemask(0, (mmask_t *) 0);
-#endif
}
static void
@@ -948,7 +1004,7 @@ main(int argc, char *argv[])
setlocale(LC_ALL, "");
- while ((c = getopt(argc, argv, "a:de:fhmp:s:t:")) != -1) {
+ while ((c = getopt(argc, argv, "fht:")) != -1) {
switch (c) {
#if HAVE_RIPOFFLINE
case 'f':
@@ -960,7 +1016,7 @@ main(int argc, char *argv[])
#endif /* HAVE_RIPOFFLINE */
#ifdef TRACE
case 't':
- trace((unsigned) strtoul(optarg, 0, 0));
+ curses_trace((unsigned) strtoul(optarg, 0, 0));
break;
#endif
default:
diff --git a/test/demo_new_pair.c b/test/demo_new_pair.c
new file mode 100644
index 000000000000..c5ec9d3946e7
--- /dev/null
+++ b/test/demo_new_pair.c
@@ -0,0 +1,355 @@
+/****************************************************************************
+ * Copyright (c) 2017-2018,2019 Free 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: demo_new_pair.c,v 1.20 2019/12/14 23:26:09 tom Exp $
+ *
+ * Demonstrate the alloc_pair() function.
+ */
+
+#include <test.priv.h>
+#include <time.h>
+#include <popup_msg.h>
+
+#if HAVE_ALLOC_PAIR && USE_WIDEC_SUPPORT
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#define MAX_BITS 8 /* all but A_ALTCHARSET */
+#define MAX_ATTR ((1<<MAX_BITS)-1)
+
+static bool
+valid_cap(NCURSES_CONST char *name)
+{
+ char *value = tigetstr(name);
+ return (value != 0 && value != (char *) -1) ? TRUE : FALSE;
+}
+
+static attr_t
+next_attr(int now)
+{
+ static bool init = FALSE;
+ static attr_t table[MAX_BITS * MAX_BITS];
+ static int limit = 0;
+
+ if (!init) {
+ int j, k;
+ attr_t bits[MAX_BITS];
+
+ init = TRUE;
+ bits[limit++] = WA_NORMAL;
+ if (valid_cap("smso"))
+ bits[limit++] = WA_STANDOUT;
+ if (valid_cap("smul"))
+ bits[limit++] = WA_UNDERLINE;
+ if (valid_cap("rev"))
+ bits[limit++] = WA_REVERSE;
+ if (valid_cap("blink"))
+ bits[limit++] = WA_BLINK;
+ if (valid_cap("dim"))
+ bits[limit++] = WA_DIM;
+ if (valid_cap("bold"))
+ bits[limit++] = WA_BOLD;
+ for (j = 0; j < limit; ++j) {
+ for (k = 0; k < limit; ++k) {
+ table[j * limit + k] = bits[j] | bits[k];
+ }
+ }
+ }
+ return table[now % limit];
+}
+
+static void
+our_content(int pair, int *fg, int *bg)
+{
+ pair %= COLOR_PAIRS;
+ *fg = (pair / COLORS) % COLORS;
+ *bg = (pair % COLORS);
+}
+
+static int
+make_color(int now)
+{
+ int fg, bg;
+ our_content(now, &fg, &bg);
+ return alloc_pair(fg, bg);
+}
+
+static int
+next_color(int now)
+{
+ int result = 0;
+ if ((short) now > 0) {
+ if (now < COLOR_PAIRS) {
+ int fg, bg;
+ our_content(now, &fg, &bg);
+ if (init_pair((short) now, (short) fg, (short) bg) != OK)
+ now = ERR;
+ } else {
+ now %= COLOR_PAIRS;
+ }
+ result = now;
+ }
+ return result;
+}
+
+static time_t
+now(void)
+{
+ return time((time_t *) 0);
+}
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: demo_new_pair [options]",
+ "",
+ "Repeatedly print using all possible color combinations.",
+ "",
+ "Options:",
+ " -i use init_pair rather than alloc_pair",
+ " -p start in paged-mode",
+ " -s start in single-step mode",
+ " -w print a wide-character cell",
+ };
+ unsigned n;
+ for (n = 0; n < SIZEOF(msg); ++n) {
+ fprintf(stderr, "%s\n", msg[n]);
+ }
+ ExitProgram(EXIT_FAILURE);
+}
+
+#define use_pages() \
+ paged_mode = TRUE, single_mode = TRUE
+
+#define use_single() \
+ paged_mode = FALSE, single_mode = TRUE
+
+#define update_modes() \
+ scrollok(stdscr, !paged_mode); \
+ nodelay(stdscr, !single_mode || paged_mode)
+
+int
+main(int argc, char *argv[])
+{
+ static const char *help[] =
+ {
+ "This program iterates over the possible color combinations,",
+ "allocating or initializing color pairs. For best results,",
+ "choose screen-width dividing evenly into the number of colors,",
+ "e.g.,",
+ "",
+ " 32x64,32x128 256 colors",
+ " 24x44,24x88 88 colors",
+ " 32x64,24x128 16 colors",
+ "",
+ "Keys:",
+ " c toggle between coloring and de-coloring cells",
+ " p show one page at a time",
+ " s show one character at a time",
+ " <space> display char/page without pausing",
+ " v/V cycle through video attributes",
+ " w toggle between \"#\" and a double-width equivalent",
+ " ? print this screen (exit on any character).",
+ "",
+ "To exit this program, press ^Q, ^[ or \"q\".",
+ 0
+ };
+
+ bool done = FALSE;
+ bool clobber = FALSE;
+ bool hascolor = FALSE;
+ bool use_init = FALSE;
+ bool use_wide = FALSE;
+ bool paged_mode = FALSE;
+ bool single_mode = FALSE;
+ int video_mode = 0;
+ int current;
+ int ch;
+ wchar_t wch[2];
+ time_t start = now();
+ long total_cells = 0;
+ FILE *output = 0;
+
+ setlocale(LC_ALL, "");
+
+ while ((ch = getopt(argc, argv, "ipsw")) != -1) {
+ switch (ch) {
+ case 'i':
+ use_init = TRUE;
+ break;
+ case 'p':
+ use_pages();
+ break;
+ case 's':
+ use_single();
+ break;
+ case 'w':
+ use_wide = TRUE;
+ break;
+ default:
+ usage();
+ break;
+ }
+ }
+
+ if (isatty(fileno(stderr))) {
+ output = stderr;
+ } else if ((ch = open("/dev/tty", O_WRONLY)) >= 0) {
+ output = fdopen(ch, "w");
+ } else {
+ fprintf(stderr, "cannot open terminal for output\n");
+ ExitProgram(EXIT_FAILURE);
+ }
+ if (newterm(NULL, output, stdin) == 0) {
+ fprintf(stderr, "Cannot initialize terminal\n");
+ fclose(output);
+ ExitProgram(EXIT_FAILURE);
+ }
+ (void) cbreak(); /* read chars without wait for \n */
+ (void) noecho(); /* don't echo input */
+ update_modes();
+ curs_set(0);
+
+ keypad(stdscr, TRUE);
+
+ if ((hascolor = has_colors())) {
+ start_color();
+ current = 1;
+ } else {
+ current = 0;
+ }
+
+ /*
+ * Repeatedly cycle through all colors, initializing pairs as needed.
+ * Provide for single-stepping, or page-at-a-time, as well as quitting.
+ */
+ while (!done) {
+ cchar_t temp;
+ attr_t my_attrs;
+ int my_pair;
+
+ switch (getch()) {
+ case HELP_KEY_1:
+ popup_msg(stdscr, help);
+ break;
+ case 'p':
+ /* step-by-page */
+ use_pages();
+ update_modes();
+ break;
+ case 's':
+ /* step-by-char */
+ use_single();
+ update_modes();
+ break;
+ case ' ':
+ single_mode = FALSE;
+ update_modes();
+ break;
+ case QUIT:
+ case ESCAPE:
+ case 'q':
+ done = TRUE;
+ continue;
+ case 'c':
+ clobber = !clobber;
+ continue;
+ case 'v':
+ if (--video_mode < 0)
+ video_mode = MAX_ATTR;
+ continue;
+ case 'V':
+ if (video_mode > MAX_ATTR)
+ video_mode = 0;
+ continue;
+ case 'w':
+ use_wide = !use_wide;
+ continue;
+ case ERR:
+ break;
+ default:
+ beep();
+ break;
+ }
+ if (hascolor) {
+ my_attrs = next_attr(video_mode);
+ if (clobber) {
+ int fg, bg;
+ our_content(current, &fg, &bg);
+ my_pair = find_pair(fg, bg);
+ if (my_pair > 0) {
+ free_pair(my_pair);
+ }
+ my_pair = 0;
+ } else {
+ my_pair = (use_init
+ ? next_color(current)
+ : make_color(current));
+ }
+ } else {
+ my_attrs = next_attr(current);
+ my_pair = 0;
+ }
+ if (my_pair < 0)
+ break;
+ wch[0] = use_wide ? 0xff03 : '#';
+ wch[1] = 0;
+ setcchar(&temp, wch, my_attrs,
+ (short) my_pair,
+ (use_init ? NULL : (void *) &my_pair));
+ /*
+ * At the end of a page, move the cursor to the home position.
+ */
+ if ((add_wch(&temp) == ERR) && paged_mode) {
+ nodelay(stdscr, !single_mode);
+ move(0, 0);
+ }
+ total_cells += 1 + (use_wide ? 1 : 0);
+ ++current;
+ }
+ stop_curses();
+ fclose(output);
+
+ printf("%.1f cells/second\n",
+ (double) (total_cells) / (double) (now() - start));
+
+ ExitProgram(EXIT_SUCCESS);
+}
+
+#else
+int
+main(void)
+{
+ printf("This program requires the ncurses alloc_pair function\n");
+ ExitProgram(EXIT_FAILURE);
+}
+#endif
diff --git a/test/demo_panels.c b/test/demo_panels.c
index ce6beb703ce2..ac3b43186011 100644
--- a/test/demo_panels.c
+++ b/test/demo_panels.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2007-2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2018,2019 Free 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: demo_panels.c,v 1.37 2010/05/01 22:19:02 tom Exp $
+ * $Id: demo_panels.c,v 1.44 2019/08/31 23:24:11 tom Exp $
*
* Demonstrate a variety of functions from the panel library.
*/
@@ -204,7 +204,7 @@ mkpanel(short color, int rows, int cols, int tly, int tlx)
{
WINDOW *win;
PANEL *pan = 0;
- char *userdata = typeMalloc(char, 3);
+ char *userdata = typeMalloc(char, 6);
if ((win = newwin(rows, cols, tly, tlx)) != 0) {
keypad(win, TRUE);
@@ -222,13 +222,13 @@ mkpanel(short color, int rows, int cols, int tly, int tlx)
wbkgdset(win, A_BOLD | ' ');
}
}
- sprintf(userdata, "p%d", color % 8);
+ _nc_SPRINTF(userdata, _nc_SLIMIT(4) "p%d", color % 8);
set_panel_userptr(pan, (NCURSES_CONST void *) userdata);
return pan;
}
static void
-my_remove_panel(PANEL ** pans, int which)
+my_remove_panel(PANEL **pans, int which)
{
if (pans[which] != 0) {
PANEL *pan = pans[which];
@@ -248,9 +248,8 @@ my_remove_panel(PANEL ** pans, int which)
#define ABS(a) ((a) < 0 ? -(a) : (a))
static void
-my_create_panel(PANEL ** pans, int which, FillPanel myFill)
+my_create_panel(PANEL **pans, int which, FillPanel myFill)
{
- PANEL *pan = 0;
int code;
short pair = (short) which;
short fg = (short) ((pair == COLOR_BLUE) ? COLOR_WHITE : COLOR_BLACK);
@@ -271,7 +270,7 @@ my_create_panel(PANEL ** pans, int which, FillPanel myFill)
if (code > 0) {
char also[80];
- sprintf(also, " (first %d,%d)", y0, x0);
+ _nc_SPRINTF(also, _nc_SLIMIT(sizeof(also)) " (first %d,%d)", y0, x0);
/* get the position of the opposite corner */
while ((code = get_position("Opposite corner",
also, which, &x1, &y1)) == 0) {
@@ -281,7 +280,10 @@ my_create_panel(PANEL ** pans, int which, FillPanel myFill)
if (code > 0) {
int tly = MIN(y0, y1);
int tlx = MIN(x0, x1);
- pan = mkpanel(pair, ABS(y1 - y0) + 1, ABS(x1 - x0) + 1, tly, tlx);
+ PANEL *pan = mkpanel(pair,
+ ABS(y1 - y0) + 1,
+ ABS(x1 - x0) + 1,
+ tly, tlx);
/* finish */
myFill(pan);
pans[which] = pan;
@@ -292,7 +294,7 @@ my_create_panel(PANEL ** pans, int which, FillPanel myFill)
}
static void
-my_move_panel(PANEL ** pans, int which, bool continuous)
+my_move_panel(PANEL **pans, int which, bool continuous)
{
if (pans[which] != 0) {
int code;
@@ -302,7 +304,7 @@ my_move_panel(PANEL ** pans, int which, bool continuous)
char also[80];
getbegyx(win, y0, x0);
- sprintf(also, " (start %d,%d)", y0, x0);
+ _nc_SPRINTF(also, _nc_SLIMIT(sizeof(also)) " (start %d,%d)", y0, x0);
wmove(stdscr, y0, x0);
while ((code = get_position("Move panel", also, which, &x1, &y1)) == 0) {
if (continuous) {
@@ -317,7 +319,7 @@ my_move_panel(PANEL ** pans, int which, bool continuous)
}
static void
-my_resize_panel(PANEL ** pans, int which, FillPanel myFill)
+my_resize_panel(PANEL **pans, int which, FillPanel myFill)
{
if (pans[which] != 0) {
int code;
@@ -327,7 +329,7 @@ my_resize_panel(PANEL ** pans, int which, FillPanel myFill)
char also[80];
getbegyx(win, y0, x0);
- sprintf(also, " (start %d,%d)", y0, x0);
+ _nc_SPRINTF(also, _nc_SLIMIT(sizeof(also)) " (start %d,%d)", y0, x0);
wmove(stdscr, y0, x0);
while ((code = get_position("Resize panel",
also, which, &x1, &y1)) == 0) {
@@ -365,7 +367,7 @@ init_panel(void)
}
static void
-fill_panel(PANEL * pan)
+fill_panel(PANEL *pan)
{
WINDOW *win = panel_window(pan);
const char *userptr = (const char *) panel_userptr(pan);
@@ -385,7 +387,7 @@ fill_panel(PANEL * pan)
}
static void
-fill_unboxed(PANEL * pan)
+fill_unboxed(PANEL *pan)
{
WINDOW *win = panel_window(pan);
const char *userptr = (const char *) panel_userptr(pan);
@@ -406,7 +408,7 @@ make_fullwidth_digit(cchar_t *target, int digit)
{
wchar_t source[2];
- source[0] = digit + 0xff10;
+ source[0] = (wchar_t) (digit + 0xff10);
source[1] = 0;
setcchar(target, source, A_NORMAL, 0, 0);
}
@@ -428,7 +430,7 @@ init_wide_panel(void)
}
static void
-fill_wide_panel(PANEL * pan)
+fill_wide_panel(PANEL *pan)
{
WINDOW *win = panel_window(pan);
int num = ((const char *) panel_userptr(pan))[1];
@@ -450,7 +452,7 @@ fill_wide_panel(PANEL * pan)
#define MAX_PANELS 5
static int
-which_panel(PANEL * px[MAX_PANELS + 1], PANEL * pan)
+which_panel(PANEL *px[MAX_PANELS + 1], PANEL *pan)
{
int result = 0;
int j;
@@ -465,7 +467,7 @@ which_panel(PANEL * px[MAX_PANELS + 1], PANEL * pan)
}
static void
-show_panels(PANEL * px[MAX_PANELS + 1])
+show_help(WINDOW *win)
{
static const char *help[] =
{
@@ -479,9 +481,19 @@ show_panels(PANEL * px[MAX_PANELS + 1])
" m - move the panel (M for continuous move)",
" r - resize the panel",
" s - show the panel",
- " b - put the panel on the top of the stack"
+ " t - put the panel on the top of the stack"
};
+ int j;
+
+ for (j = 0; j < (int) SIZEOF(help); ++j) {
+ if (wprintw(win, "%s\n", help[j]) == ERR)
+ break;
+ }
+}
+static void
+show_panels(PANEL *px[MAX_PANELS + 1])
+{
struct {
bool valid;
bool hidden;
@@ -490,7 +502,6 @@ show_panels(PANEL * px[MAX_PANELS + 1])
} table[MAX_PANELS + 1];
WINDOW *win;
- PANEL *pan;
int j;
memset(table, 0, sizeof(table));
@@ -504,6 +515,8 @@ show_panels(PANEL * px[MAX_PANELS + 1])
}
if ((win = newwin(LINES - 1, COLS, 0, 0)) != 0) {
+ PANEL *pan;
+
keypad(win, TRUE);
if ((pan = new_panel(win)) != 0) {
werase(win);
@@ -527,10 +540,7 @@ show_panels(PANEL * px[MAX_PANELS + 1])
waddch(win, '\n');
}
}
- for (j = 0; j < (int) SIZEOF(help); ++j) {
- if (wprintw(win, "%s\n", help[j]) == ERR)
- break;
- }
+ show_help(win);
wgetch(win);
del_panel(pan);
pflush();
@@ -556,7 +566,7 @@ wrapper(top_panel)
/* *INDENT-ON* */
static void
-do_panel(PANEL * px[MAX_PANELS + 1],
+do_panel(PANEL *px[MAX_PANELS + 1],
NCURSES_CONST char *cmd,
FillPanel myFill)
{
@@ -622,11 +632,10 @@ ok_digit(int ch)
* End the command with a newline. Reject other characters.
*/
static bool
-get_command(PANEL * px[MAX_PANELS + 1], char *buffer, int limit)
+get_command(PANEL *px[MAX_PANELS + 1], char *buffer, int limit)
{
int length = 0;
int y0, x0;
- int c0, ch;
WINDOW *win;
getyx(stdscr, y0, x0);
@@ -645,9 +654,9 @@ get_command(PANEL * px[MAX_PANELS + 1], char *buffer, int limit)
}
(void) wgetch(win);
} else {
- c0 = 0;
+ int c0 = 0;
for (;;) {
- ch = wgetch(win);
+ int ch = wgetch(win);
if (ch == ERR || ch == QUIT || ch == ESCAPE) {
buffer[0] = '\0';
break;
@@ -655,7 +664,7 @@ get_command(PANEL * px[MAX_PANELS + 1], char *buffer, int limit)
wrefresh(curscr);
} else if (ch == '\n' || ch == KEY_ENTER) {
break;
- } else if (ch == '?') {
+ } else if (ch == HELP_KEY_1) {
show_panels(px);
} else if (length + 3 < limit) {
if (ch >= KEY_MIN) {
diff --git a/test/demo_tabs.c b/test/demo_tabs.c
new file mode 100644
index 000000000000..51850e4cb992
--- /dev/null
+++ b/test/demo_tabs.c
@@ -0,0 +1,119 @@
+/****************************************************************************
+ * Copyright (c) 2019 Free 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
+ *
+ * $Id: demo_tabs.c,v 1.4 2019/02/24 00:38:13 tom Exp $
+ *
+ * A simple demo of tabs in curses.
+ */
+#define USE_TINFO
+#include "test.priv.h"
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: demo_tabs [options]",
+ "",
+ "Print a grid to test tab-stops with the curses interface",
+ "",
+ "Options:",
+ " -l COUNT total number of lines to show",
+ " -t NUM set TABSIZE variable to the given value",
+ };
+ unsigned n;
+ for (n = 0; n < SIZEOF(msg); ++n) {
+ fprintf(stderr, "%s\n", msg[n]);
+ }
+ ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc, char *argv[])
+{
+ int tabstop;
+ int n, col, row, step;
+ int line_limit = -1;
+ int curses_stops = -1;
+
+ while ((n = getopt(argc, argv, "l:t:")) != -1) {
+ switch (n) {
+ case 'l':
+ line_limit = atoi(optarg);
+ break;
+ case 't':
+ curses_stops = atoi(optarg);
+ break;
+ default:
+ usage();
+ break;
+ }
+ }
+
+ initscr();
+ noecho();
+ cbreak();
+ if (curses_stops > 0)
+ set_tabsize(curses_stops);
+#if HAVE_TIGETNUM
+ tabstop = tigetnum("it");
+ if (tabstop <= 0)
+#endif
+ tabstop = 8;
+ for (row = 0; row < LINES; ++row) {
+ move(row, 0);
+ for (col = step = 0; col < COLS - 1; ++col) {
+ if (row == 0) {
+ chtype ch = '-';
+ if ((col % tabstop) == 0)
+ ch = '+';
+ addch(ch);
+ } else if (col + 1 < row) {
+ addch('*');
+ } else {
+ printw("%x", step);
+ col = (row + (tabstop * ++step));
+ col /= tabstop;
+ col *= tabstop;
+ col -= 1;
+ if ((col + tabstop) < COLS)
+ addch('\t');
+ refresh();
+ }
+ }
+ addch('\n');
+ if (line_limit > 0 && row >= line_limit)
+ break;
+ }
+ getch();
+ endwin();
+ ExitProgram(EXIT_SUCCESS);
+}
diff --git a/test/demo_termcap.c b/test/demo_termcap.c
index 6f35c17a63af..666f7a2e697b 100644
--- a/test/demo_termcap.c
+++ b/test/demo_termcap.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2005-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2005-2017,2019 Free 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,12 +29,39 @@
/*
* Author: Thomas E. Dickey
*
- * $Id: demo_termcap.c,v 1.24 2013/06/08 16:58:49 tom Exp $
+ * $Id: demo_termcap.c,v 1.58 2019/08/24 21:47:19 tom Exp $
*
* A simple demo of the termcap interface.
*/
#define USE_TINFO
#include <test.priv.h>
+#include <sys/stat.h>
+
+#if NCURSES_XNAMES
+#if HAVE_TERM_ENTRY_H
+#include <term_entry.h>
+#else
+#undef NCURSES_XNAMES
+#define NCURSES_XNAMES 0
+#endif
+#endif
+
+#if defined(NCURSES_VERSION)
+#if HAVE_NCURSES_TERMCAP_H
+#include <ncurses/termcap.h>
+#elif HAVE_TERMCAP_H
+#include <termcap.h>
+#endif
+#endif
+
+static void failed(const char *) GCC_NORETURN;
+
+static void
+failed(const char *msg)
+{
+ fprintf(stderr, "%s\n", msg);
+ ExitProgram(EXIT_FAILURE);
+}
#if HAVE_TGETENT
@@ -47,11 +74,13 @@
#define FCOLS 8
#define FNAME(type) "%s %-*s = ", #type, FCOLS
-#if USE_CODE_LISTS
static bool b_opt = FALSE;
static bool n_opt = FALSE;
-static bool q_opt = FALSE;
static bool s_opt = FALSE;
+static bool q_opt = FALSE;
+#ifdef NCURSES_VERSION
+static bool x_opt = FALSE;
+static bool y_opt = FALSE;
#endif
static char *d_opt;
@@ -59,15 +88,27 @@ static char *e_opt;
static char **db_list;
static int db_item;
+static char *my_blob;
+static char **my_boolcodes;
+static char **my_numcodes;
+static char **my_numvalues;
+static char **my_strcodes;
+static char **my_strvalues;
+
static long total_values;
+static long total_b_values;
+static long total_n_values;
+static long total_s_values;
-#define isCapName(c) (isgraph(c) && strchr("^#=:\\", c) == 0)
+#define isCapName(c) (isgraph(c) && strchr("^=:\\", c) == 0)
+#define EachCapName(n) n = 33; n < 127; ++n
static char *
make_dbitem(char *p, char *q)
{
- char *result = malloc(strlen(e_opt) + 2 + (size_t) (p - q));
- sprintf(result, "%s=%.*s", e_opt, (int) (p - q), q);
+ size_t need = strlen(e_opt) + 2 + (size_t) (p - q);
+ char *result = malloc(need);
+ _nc_SPRINTF(result, _nc_SLIMIT(need) "%s=%.*s", e_opt, (int) (p - q), q);
return result;
}
@@ -118,10 +159,12 @@ next_dbitem(void)
db_item++;
}
}
- printf("** %s\n", result);
+ if (result != 0)
+ printf("** %s\n", result);
return result;
}
+#if NO_LEAKS
static void
free_dblist(void)
{
@@ -133,6 +176,73 @@ free_dblist(void)
db_list = 0;
}
}
+#endif /* NO_LEAKS */
+
+static void
+show_string(const char *name, const char *value)
+{
+ printf(FNAME(str), name);
+ if (value == ((char *) -1)) {
+ printf("CANCELLED");
+ } else if (value == ((char *) 0)) {
+ printf("ABSENT");
+ } else {
+ while (*value != 0) {
+ int ch = UChar(*value++);
+ switch (ch) {
+ case '\177':
+ fputs("^?", stdout);
+ break;
+ case '\033':
+ fputs("\\E", stdout);
+ break;
+ case '\b':
+ fputs("\\b", stdout);
+ break;
+ case '\f':
+ fputs("\\f", stdout);
+ break;
+ case '\n':
+ fputs("\\n", stdout);
+ break;
+ case '\r':
+ fputs("\\r", stdout);
+ break;
+ case ' ':
+ fputs("\\s", stdout);
+ break;
+ case '\t':
+ fputs("\\t", stdout);
+ break;
+ case '^':
+ fputs("\\^", stdout);
+ break;
+ case ':':
+ fputs("\\072", stdout);
+ break;
+ case '\\':
+ fputs("\\\\", stdout);
+ break;
+ default:
+ if (isgraph(ch))
+ fputc(ch, stdout);
+ else if (ch < 32)
+ printf("^%c", ch + '@');
+ else
+ printf("\\%03o", ch);
+ break;
+ }
+ }
+ }
+ printf("\n");
+}
+
+static void
+show_number(const char *name, int value)
+{
+ printf(FNAME(num), name);
+ printf(" %d\n", value);
+}
static void
dumpit(NCURSES_CONST char *cap)
@@ -150,68 +260,23 @@ dumpit(NCURSES_CONST char *cap)
if ((str = tgetstr(cap, &ap)) != 0) {
total_values++;
+ total_s_values++;
if (!q_opt) {
/*
* Note that the strings returned are mostly terminfo format, since
* ncurses does not convert except for a handful of special cases.
*/
- printf(FNAME(str), cap);
- while (*str != 0) {
- int ch = UChar(*str++);
- switch (ch) {
- case '\177':
- fputs("^?", stdout);
- break;
- case '\033':
- fputs("\\E", stdout);
- break;
- case '\b':
- fputs("\\b", stdout);
- break;
- case '\f':
- fputs("\\f", stdout);
- break;
- case '\n':
- fputs("\\n", stdout);
- break;
- case '\r':
- fputs("\\r", stdout);
- break;
- case ' ':
- fputs("\\s", stdout);
- break;
- case '\t':
- fputs("\\t", stdout);
- break;
- case '^':
- fputs("\\^", stdout);
- break;
- case ':':
- fputs("\\072", stdout);
- break;
- case '\\':
- fputs("\\\\", stdout);
- break;
- default:
- if (isgraph(ch))
- fputc(ch, stdout);
- else if (ch < 32)
- printf("^%c", ch + '@');
- else
- printf("\\%03o", ch);
- break;
- }
- }
- printf("\n");
+ show_string(cap, str);
}
} else if ((num = tgetnum(cap)) >= 0) {
total_values++;
+ total_n_values++;
if (!q_opt) {
- printf(FNAME(num), cap);
- printf(" %d\n", num);
+ show_number(cap, num);
}
} else if (tgetflag(cap) > 0) {
- ++total_values;
+ total_values++;
+ total_b_values++;
if (!q_opt) {
printf(FNAME(flg), cap);
printf("%s\n", "true");
@@ -230,16 +295,17 @@ brute_force(const char *name)
if (db_list) {
putenv(next_dbitem());
}
- printf("Terminal type %s\n", name);
+ if (!q_opt)
+ printf("Terminal type \"%s\"\n", name);
if (tgetent(buffer, name) >= 0) {
char cap[3];
int c1, c2;
cap[2] = 0;
- for (c1 = 0; c1 < 256; ++c1) {
+ for (EachCapName(c1)) {
cap[0] = (char) c1;
if (isCapName(c1)) {
- for (c2 = 0; c2 < 256; ++c2) {
+ for (EachCapName(c2)) {
cap[1] = (char) c2;
if (isCapName(c2)) {
dumpit(cap);
@@ -250,23 +316,32 @@ brute_force(const char *name)
}
}
-#if USE_CODE_LISTS
+#if NCURSES_XNAMES
+static void
+dump_xname(NCURSES_CONST char *cap)
+{
+ if (strlen(cap) == 2)
+ dumpit(cap);
+}
+#endif
+
static void
demo_termcap(NCURSES_CONST char *name)
{
- unsigned n;
- NCURSES_CONST char *cap;
char buffer[1024];
if (db_list) {
putenv(next_dbitem());
}
- printf("Terminal type \"%s\"\n", name);
+ if (!q_opt)
+ printf("Terminal type \"%s\"\n", name);
if (tgetent(buffer, name) >= 0) {
+ NCURSES_CONST char *cap;
+ unsigned n;
if (b_opt) {
for (n = 0;; ++n) {
- cap = boolcodes[n];
+ cap = my_boolcodes[n];
if (cap == 0)
break;
dumpit(cap);
@@ -275,7 +350,7 @@ demo_termcap(NCURSES_CONST char *name)
if (n_opt) {
for (n = 0;; ++n) {
- cap = numcodes[n];
+ cap = my_numcodes[n];
if (cap == 0)
break;
dumpit(cap);
@@ -284,15 +359,383 @@ demo_termcap(NCURSES_CONST char *name)
if (s_opt) {
for (n = 0;; ++n) {
- cap = strcodes[n];
+ cap = my_strcodes[n];
if (cap == 0)
break;
dumpit(cap);
}
}
+#ifdef NCURSES_VERSION
+ if (x_opt && (my_blob == 0) && y_opt) {
+#if NCURSES_XNAMES
+ TERMTYPE *term = (TERMTYPE *) cur_term;
+ if (term != 0
+ && ((NUM_BOOLEANS(term) != BOOLCOUNT)
+ || (NUM_NUMBERS(term) != NUMCOUNT)
+ || (NUM_STRINGS(term) != STRCOUNT))) {
+ for (n = BOOLCOUNT; n < NUM_BOOLEANS(term); ++n) {
+ dump_xname(ExtBoolname(term, (int) n, boolnames));
+ }
+ for (n = NUMCOUNT; n < NUM_NUMBERS(term); ++n) {
+ dump_xname(ExtNumname(term, (int) n, numnames));
+ }
+ for (n = STRCOUNT; n < NUM_STRINGS(term); ++n) {
+ dump_xname(ExtStrname(term, (int) n, strnames));
+ }
+ }
+#endif
+ }
+#endif
}
}
+typedef enum {
+ pDefault = 0
+ ,pComment
+ ,pDescription
+ ,pEscaped
+ ,pNewline
+ ,pName
+ ,pNumber
+ ,pString
+} STATE;
+
+static void
+parse_description(const char *input_name)
+{
+ static char empty[1];
+
+ FILE *fp;
+ struct stat sb;
+ size_t count_bools = 0;
+ size_t count_nums = 0;
+ size_t count_strs = 0;
+ size_t len;
+ size_t j, k;
+ STATE state;
+
+ if (stat(input_name, &sb) != 0
+ || (sb.st_mode & S_IFMT) != S_IFREG) {
+ failed("input is not a file");
+ }
+
+ if (sb.st_size == 0) {
+ failed("input is empty");
+ }
+
+ /*
+ * None of the arrays could be larger than the input-file, and since it
+ * is small, just allocate the maximum for simplicity.
+ */
+ if ((my_blob = malloc((size_t) sb.st_size + 1)) == 0 ||
+ (my_boolcodes = typeCalloc(char *, sb.st_size)) == 0 ||
+ (my_numcodes = typeCalloc(char *, sb.st_size)) == 0 ||
+ (my_numvalues = typeCalloc(char *, sb.st_size)) == 0 ||
+ (my_strcodes = typeCalloc(char *, sb.st_size)) == 0 ||
+ (my_strvalues = typeCalloc(char *, sb.st_size)) == 0) {
+ failed("cannot allocate memory for input-file");
+ }
+
+ if ((fp = fopen(input_name, "r")) == 0)
+ failed("cannot open input-file");
+ len = fread(my_blob, sizeof(char), (size_t) sb.st_size, fp);
+ my_blob[sb.st_size] = '\0';
+ fclose(fp);
+
+ /*
+ * First, get rid of comments and escaped newlines, as well as repeated
+ * colons to construct a canonical entry.
+ *
+ * FIXME: actually this should make an additional pass just to strip
+ * comment-lines and escaped newlines. But it is workable for infocmp
+ * output.
+ */
+ state = pNewline;
+ for (j = k = 0; j < len; ++j) {
+ int ch = my_blob[j];
+ if (ch == '\t') {
+ ch = ' ';
+ }
+ switch (state) {
+ case pNewline:
+ if (ch == ' ') {
+ continue;
+ }
+ if (ch == '#') {
+ state = pComment;
+ continue;
+ }
+ state = pDefault;
+ /* FALLTHRU */
+ case pDefault:
+ switch (ch) {
+ case '|':
+ state = pDescription;
+ continue;
+ case '\\':
+ state = pEscaped;
+ continue;
+ case '\n':
+ state = pNewline;
+ continue;
+ case ' ':
+ case ':':
+ break;
+ default:
+ state = pName;
+ break;
+ }
+ my_blob[k++] = (char) ch;
+ break;
+ case pComment:
+ if (ch == '\n')
+ state = pNewline;
+ break;
+ case pDescription:
+ switch (ch) {
+ case ':':
+ state = pDefault;
+ break;
+ case '\n':
+ state = pNewline;
+ break;
+ }
+ break;
+ case pEscaped:
+ if (ch != '\n') {
+ my_blob[k++] = (char) ch;
+ state = pDefault;
+ } else {
+ state = pNewline;
+ }
+ break;
+ case pName:
+ switch (ch) {
+ case '\n':
+ state = pNewline;
+ continue;
+ case ' ':
+ case ':':
+ state = pDefault;
+ break;
+ case '#':
+ state = pNumber;
+ break;
+ case '|':
+ state = pDescription;
+ continue;
+ }
+ my_blob[k++] = (char) ch;
+ break;
+ case pNumber:
+ switch (ch) {
+ case '\n':
+ state = pNewline;
+ continue;
+ case ':':
+ state = pDefault;
+ break;
+ case ' ':
+ state = pDefault;
+ continue;
+ }
+ my_blob[k++] = (char) ch;
+ break;
+ case pString:
+ switch (ch) {
+ case '\\':
+ if (my_blob[j + 1] == '\0') {
+ state = pDefault;
+ continue;
+ }
+ break;
+ case '\n':
+ state = pNewline;
+ continue;
+ case ':':
+ state = pDefault;
+ break;
+ }
+ my_blob[k++] = (char) ch;
+ break;
+ default:
+ /* not used */
+ break;
+ }
+ }
+ my_blob[k] = '\0';
+
+ /*
+ * Then, parse what's left, making indexes of the names and values.
+ */
+ state = pDefault;
+ for (j = 0; my_blob[j] != '\0'; ++j) {
+ switch (state) {
+ case pDefault:
+ switch (my_blob[j]) {
+ case '\\':
+ state = pEscaped;
+ break;
+ case ':':
+ my_blob[j] = '\0';
+ if (my_blob[j + 1] != '\0' && my_blob[j + 1] != ':')
+ state = pName;
+ break;
+ case ' ':
+ break;
+ default:
+ break;
+ }
+ case pEscaped:
+ break;
+ case pName:
+ state = pDefault;
+ /*
+ * Commented-out capabilities might be accessible (they are in
+ * ncurses).
+ */
+ if (my_blob[j] == '.' && my_blob[j + 1] == '.') {
+ j += 2;
+ }
+ if (my_blob[j + 1] != '\0') {
+ switch (my_blob[j + 2]) {
+ case '#':
+ my_numvalues[count_nums] = &my_blob[j + 3];
+ my_numcodes[count_nums++] = &my_blob[j];
+ my_blob[j + 2] = '\0';
+ state = pNumber;
+ j += 2;
+ break;
+ case '=':
+ my_strvalues[count_strs] = &my_blob[j + 3];
+ my_strcodes[count_strs++] = &my_blob[j];
+ my_blob[j + 2] = '\0';
+ state = pString;
+ j += 2;
+ break;
+ default:
+ if (my_blob[j + 2] == '@') {
+ /*
+ * We cannot get the type for a cancelled item
+ * directly, but can infer it assuming the input
+ * came from infocmp, which puts the data in a
+ * known order.
+ */
+ if (count_strs) {
+ my_strvalues[count_strs] = empty;
+ my_strcodes[count_strs++] = &my_blob[j];
+ } else if (count_nums) {
+ my_numvalues[count_nums] = empty;
+ my_numcodes[count_nums++] = &my_blob[j];
+ } else {
+ my_boolcodes[count_bools++] = &my_blob[j];
+ }
+ } else {
+ my_boolcodes[count_bools++] = &my_blob[j];
+ }
+ j++;
+ break;
+ }
+ }
+ break;
+ case pNumber:
+ if (!isdigit(UChar(my_blob[j]))) {
+ --j;
+ state = pDefault;
+ }
+ break;
+ case pString:
+ switch (my_blob[j]) {
+ case '\\':
+ if (my_blob[j + 1] == '\0') {
+ state = pDefault;
+ continue;
+ } else {
+ ++j;
+ }
+ break;
+ case '\n':
+ state = pNewline;
+ continue;
+ case ':':
+ --j;
+ state = pDefault;
+ break;
+ }
+ break;
+ case pNewline:
+ case pComment:
+ case pDescription:
+ default:
+ break;
+ }
+ }
+ my_boolcodes[count_bools] = 0;
+ my_numcodes[count_nums] = 0;
+ my_numvalues[count_nums] = 0;
+ my_strcodes[count_strs] = 0;
+ my_strvalues[count_strs] = 0;
+
+#if 0
+ printf("bools:%d\n", (int) count_bools);
+ for (j = 0; my_boolcodes[j]; ++j)
+ printf("%5d:%s\n", (int) j, my_boolcodes[j]);
+
+ printf("numbers:%d\n", (int) count_nums);
+ for (j = 0; my_numcodes[j]; ++j)
+ printf("%5d:%s(%s)\n", (int) j, my_numcodes[j], my_numvalues[j]);
+
+ printf("strings:%d\n", (int) count_strs);
+ for (j = 0; my_strcodes[j]; ++j)
+ printf("%5d:%s(%s)\n", (int) j, my_strcodes[j], my_strvalues[j]);
+#endif
+}
+
+#if USE_CODE_LISTS
+static char **
+copy_code_list(NCURSES_CONST char *const *list)
+{
+ int pass;
+ size_t count;
+ size_t length = 1;
+ char **result = 0;
+ char *unused = 0;
+
+ for (pass = 0; pass < 2; ++pass) {
+ for (count = 0; list[count] != 0; ++count) {
+ size_t chunk = strlen(list[count]) + 1;
+ if (pass == 0) {
+ length += chunk;
+ } else {
+ result[count] = unused;
+ _nc_STRCPY(unused, list[count], length);
+ unused += chunk;
+ }
+ }
+ if (pass == 0) {
+ char *blob = malloc(length);
+ result = typeCalloc(char *, count + 1);
+ unused = blob;
+ if (blob == 0 || result == 0)
+ failed("copy_code_list failed");
+ }
+ }
+
+ return result;
+}
+
+#if NO_LEAKS
+static void
+free_code_list(char **list)
+{
+ if (list) {
+ free(list[0]);
+ free(list);
+ }
+}
+#endif /* NO_LEAKS */
+#endif /* USE_CODE_LISTS */
+
static void
usage(void)
{
@@ -308,12 +751,14 @@ usage(void)
" -b print boolean-capabilities",
" -d LIST colon-separated list of databases to use",
" -e NAME environment variable to set with -d option",
+ " -i NAME terminal description to use as names for \"-a\" option, etc.",
" -n print numeric-capabilities",
" -q quiet (prints only counts)",
" -r COUNT repeat for given count",
" -s print string-capabilities",
+ " -v print termcap-variables",
#ifdef NCURSES_VERSION
- " -y disable extended capabilities",
+ " -x print extended capabilities",
#endif
};
unsigned n;
@@ -322,7 +767,6 @@ usage(void)
}
ExitProgram(EXIT_FAILURE);
}
-#endif
int
main(int argc, char *argv[])
@@ -330,12 +774,15 @@ main(int argc, char *argv[])
int n;
char *name;
bool a_opt = FALSE;
+#if defined(NCURSES_VERSION) || defined(HAVE_CURSES_DATA_OSPEED)
+ bool v_opt = FALSE;
+#endif
+ char *input_name = 0;
-#if USE_CODE_LISTS
int repeat;
int r_opt = 1;
- while ((n = getopt(argc, argv, "abd:e:nqr:sy")) != -1) {
+ while ((n = getopt(argc, argv, "abd:e:i:nqr:svxy")) != -1) {
switch (n) {
case 'a':
a_opt = TRUE;
@@ -349,6 +796,9 @@ main(int argc, char *argv[])
case 'e':
e_opt = optarg;
break;
+ case 'i':
+ input_name = optarg;
+ break;
case 'n':
n_opt = TRUE;
break;
@@ -362,42 +812,68 @@ main(int argc, char *argv[])
case 's':
s_opt = TRUE;
break;
+#if defined(NCURSES_VERSION) || defined(HAVE_CURSES_DATA_OSPEED)
+ case 'v':
+ v_opt = TRUE;
+ break;
+#endif
+#ifdef NCURSES_VERSION
#if NCURSES_XNAMES
+ case 'x':
+ x_opt = TRUE;
+ break;
case 'y':
- use_extended_names(FALSE);
+ y_opt = TRUE;
+ x_opt = TRUE;
break;
#endif
+#endif
default:
usage();
break;
}
}
+#if HAVE_USE_EXTENDED_NAMES
+ use_extended_names(x_opt);
+#endif
+
if (!(b_opt || n_opt || s_opt)) {
b_opt = TRUE;
n_opt = TRUE;
s_opt = TRUE;
}
-#else
- a_opt = TRUE;
-#endif
make_dblist();
if (a_opt) {
- if (optind < argc) {
- for (n = optind; n < argc; ++n) {
- brute_force(argv[n]);
+ for (repeat = 0; repeat < r_opt; ++repeat) {
+ if (optind < argc) {
+ for (n = optind; n < argc; ++n) {
+ brute_force(argv[n]);
+ }
+ } else if ((name = getenv("TERM")) != 0) {
+ brute_force(name);
+ } else {
+ static char dumb[] = "dumb";
+ brute_force(dumb);
}
- } else if ((name = getenv("TERM")) != 0) {
- brute_force(name);
- } else {
- static char dumb[] = "dumb";
- brute_force(dumb);
}
- }
+ } else {
+ if (input_name != 0) {
+ parse_description(input_name);
+ }
#if USE_CODE_LISTS
- else {
+ else {
+ my_boolcodes = copy_code_list(boolcodes);
+ my_numcodes = copy_code_list(numcodes);
+ my_strcodes = copy_code_list(strcodes);
+ }
+#else
+ else {
+ failed("no capability-lists available (use -i option)");
+ }
+#endif /* USE_CODE_LISTS */
for (repeat = 0; repeat < r_opt; ++repeat) {
if (optind < argc) {
for (n = optind; n < argc; ++n) {
@@ -411,11 +887,27 @@ main(int argc, char *argv[])
}
}
}
-#endif /* USE_CODE_LISTS */
- printf("%ld values\n", total_values);
+ printf("%ld values (%ld booleans, %ld numbers, %ld strings)\n",
+ total_values, total_b_values, total_n_values, total_s_values);
+#if defined(NCURSES_VERSION) || defined(HAVE_CURSES_DATA_OSPEED)
+ if (v_opt) {
+ show_number("PC", PC);
+ show_string("UP", UP);
+ show_string("BC", BC);
+ show_number("ospeed", (int) ospeed);
+ }
+#endif
+
+#if NO_LEAKS
free_dblist();
+#if USE_CODE_LISTS
+ free_code_list(my_boolcodes);
+ free_code_list(my_numcodes);
+ free_code_list(my_strcodes);
+#endif
+#endif /* NO_LEAKS */
ExitProgram(EXIT_SUCCESS);
}
@@ -425,7 +917,6 @@ int
main(int argc GCC_UNUSED,
char *argv[]GCC_UNUSED)
{
- printf("This program requires termcap\n");
- ExitProgram(EXIT_FAILURE);
+ failed("This program requires termcap");
}
#endif
diff --git a/test/demo_terminfo.c b/test/demo_terminfo.c
index 239739a47a8f..6e52e990b5e8 100644
--- a/test/demo_terminfo.c
+++ b/test/demo_terminfo.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2009-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2009-2017,2019 Free 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,12 +29,13 @@
/*
* Author: Thomas E. Dickey
*
- * $Id: demo_terminfo.c,v 1.19 2013/09/28 21:50:01 tom Exp $
+ * $Id: demo_terminfo.c,v 1.49 2019/08/24 23:11:01 tom Exp $
*
* A simple demo of the terminfo interface.
*/
#define USE_TINFO
#include <test.priv.h>
+#include <sys/stat.h>
#if NCURSES_XNAMES
#if HAVE_TERM_ENTRY_H
@@ -45,31 +46,60 @@
#endif
#endif
+static void failed(const char *) GCC_NORETURN;
+
+static void
+failed(const char *msg)
+{
+ fprintf(stderr, "%s\n", msg);
+ ExitProgram(EXIT_FAILURE);
+}
+
#if HAVE_TIGETSTR
+
#if defined(HAVE_CURSES_DATA_BOOLNAMES) || defined(DECL_CURSES_DATA_BOOLNAMES)
+#define USE_CODE_LISTS 1
+#else
+#define USE_CODE_LISTS 0
+#endif
+static bool a_opt = FALSE;
static bool b_opt = FALSE;
static bool f_opt = FALSE;
static bool n_opt = FALSE;
static bool q_opt = FALSE;
static bool s_opt = FALSE;
+#ifdef NCURSES_VERSION
static bool x_opt = FALSE;
+static bool y_opt = FALSE;
+#endif
static char *d_opt;
static char *e_opt;
static char **db_list;
static int db_item;
+static char *my_blob;
+static char **my_boolcodes;
+static char **my_numcodes;
+static char **my_numvalues;
+static char **my_strcodes;
+static char **my_strvalues;
+
static long total_values;
+static long total_b_values;
+static long total_n_values;
+static long total_s_values;
#define FCOLS 8
-#define FNAME(type) "%s %-*s = ", #type, FCOLS
+#define FNAME(type) "%s %-*s = ", #type, f_opt ? 24 : FCOLS
static char *
make_dbitem(char *p, char *q)
{
- char *result = malloc(strlen(e_opt) + 2 + (size_t) (p - q));
- sprintf(result, "%s=%.*s", e_opt, (int) (p - q), q);
+ size_t need = strlen(e_opt) + 2 + (size_t) (p - q);
+ char *result = malloc(need);
+ _nc_SPRINTF(result, _nc_SLIMIT(need) "%s=%.*s", e_opt, (int) (p - q), q);
return result;
}
@@ -120,10 +150,12 @@ next_dbitem(void)
db_item++;
}
}
- printf("** %s\n", result);
+ if (result != 0)
+ printf("** %s\n", result);
return result;
}
+#if NO_LEAKS
static void
free_dblist(void)
{
@@ -135,27 +167,19 @@ free_dblist(void)
db_list = 0;
}
}
+#endif
+
static void
-dumpit(NCURSES_CONST char *cap)
+dumpit(NCURSES_CONST char *cap, const char *show)
{
- /*
- * One of the limitations of the termcap interface is that the library
- * cannot determine the size of the buffer passed via tgetstr(), nor the
- * amount of space remaining. This demo simply reuses the whole buffer
- * for each call; a normal termcap application would try to use the buffer
- * to hold all of the strings extracted from the terminal entry.
- */
const char *str;
int num;
if ((str = tigetstr(cap)) != 0 && (str != (char *) -1)) {
total_values++;
+ total_s_values++;
if (!q_opt) {
- /*
- * Note that the strings returned are mostly terminfo format, since
- * ncurses does not convert except for a handful of special cases.
- */
- printf(FNAME(str), cap);
+ printf(FNAME(str), show ? show : cap);
while (*str != 0) {
int ch = UChar(*str++);
switch (ch) {
@@ -206,14 +230,16 @@ dumpit(NCURSES_CONST char *cap)
}
} else if ((num = tigetnum(cap)) >= 0) {
total_values++;
+ total_n_values++;
if (!q_opt) {
- printf(FNAME(num), cap);
+ printf(FNAME(num), show ? show : cap);
printf(" %d\n", num);
}
} else if ((num = tigetflag(cap)) >= 0) {
total_values++;
+ total_b_values++;
if (!q_opt) {
- printf(FNAME(flg), cap);
+ printf(FNAME(flg), show ? show : cap);
printf("%s\n", num ? "true" : "false");
}
}
@@ -222,6 +248,80 @@ dumpit(NCURSES_CONST char *cap)
fflush(stdout);
}
+#define isCapName(c) (isalnum(UChar(c)) || ((c) == '_'))
+#define LegalItem(c,n) (n)
+
+static void
+brute_force(const char *name)
+{
+#define MAX_FORCE 5 /* omit "colors", since CPU-time is a problem */
+ static const char legal[] = "\
+0123456789\
+ABCDEFGHIJKLMNOPQRSTUVWXYZ\
+abcdefghijklmnopqrstuvwxyz_";
+ int length;
+ int j, k;
+ bool carry;
+ bool changed;
+ char cap[MAX_FORCE + 1];
+ int item[MAX_FORCE + 1];
+
+ if (db_list) {
+ putenv(next_dbitem());
+ }
+ if (!q_opt)
+ printf("Terminal type \"%s\"\n", name);
+ setupterm((NCURSES_CONST char *) name, 1, (int *) 0);
+ if (!q_opt) {
+ if (strcmp(name, ttytype))
+ printf("... actual \"%s\"\n", ttytype);
+ }
+
+ for (length = 1; length <= MAX_FORCE; ++length) {
+ /* set all digits to zeros */
+ for (j = 0; j < length; ++j) {
+ item[j] = LegalItem(j, 0);
+ }
+
+ do {
+ changed = FALSE;
+ /* copy digits to cap-name */
+ for (j = 0; j < length; ++j) {
+ cap[j] = legal[item[j]];
+ }
+ cap[length] = '\0';
+ dumpit(cap, NULL);
+
+ k = length - 1;
+ do {
+ carry = FALSE;
+ for (; k >= 0; --k) {
+ item[k] += 1;
+ if (legal[item[k]]) {
+ changed = TRUE;
+ break;
+ }
+ if (k > 0 &&
+ legal[item[k - 1] + 1]) {
+ for (j = k; j < length; ++j) {
+ item[j] = LegalItem(j, 0);
+ }
+ carry = TRUE;
+ changed = TRUE;
+ }
+ }
+ } while (carry);
+ } while (changed);
+ }
+ del_curterm(cur_term);
+}
+
+#if USE_CODE_LISTS
+#define fullname(type,n) f_opt ? type##fnames[n] : cap
+#else
+#define fullname(type,n) cap
+#endif
+
static void
demo_terminfo(char *name)
{
@@ -231,53 +331,53 @@ demo_terminfo(char *name)
if (db_list) {
putenv(next_dbitem());
}
- printf("Terminal type \"%s\"\n", name);
+ if (!q_opt)
+ printf("Terminal type \"%s\"\n", name);
setupterm(name, 1, (int *) 0);
if (b_opt) {
for (n = 0;; ++n) {
- cap = f_opt ? boolfnames[n] : boolnames[n];
+ cap = my_boolcodes[n];
if (cap == 0)
break;
- dumpit(cap);
+ dumpit(cap, fullname(bool, n));
}
}
if (n_opt) {
for (n = 0;; ++n) {
- cap = f_opt ? numfnames[n] : numnames[n];
+ cap = my_numcodes[n];
if (cap == 0)
break;
- dumpit(cap);
+ dumpit(cap, fullname(num, n));
}
}
if (s_opt) {
for (n = 0;; ++n) {
- cap = f_opt ? strfnames[n] : strnames[n];
+ cap = my_strcodes[n];
if (cap == 0)
break;
- dumpit(cap);
+ dumpit(cap, fullname(str, n));
}
}
#ifdef NCURSES_VERSION
- if (x_opt) {
- int mod;
- if (f_opt) {
+ if (x_opt && (my_blob == 0)) {
+ if (y_opt) {
#if NCURSES_XNAMES
- TERMTYPE *term = &(cur_term->type);
+ TERMTYPE *term = (TERMTYPE *) cur_term;
if (term != 0
&& ((NUM_BOOLEANS(term) != BOOLCOUNT)
|| (NUM_NUMBERS(term) != NUMCOUNT)
|| (NUM_STRINGS(term) != STRCOUNT))) {
for (n = BOOLCOUNT; n < NUM_BOOLEANS(term); ++n) {
- dumpit(ExtBoolname(term, (int) n, boolnames));
+ dumpit(ExtBoolname(term, (int) n, boolnames), NULL);
}
for (n = NUMCOUNT; n < NUM_NUMBERS(term); ++n) {
- dumpit(ExtNumname(term, (int) n, numnames));
+ dumpit(ExtNumname(term, (int) n, numnames), NULL);
}
for (n = STRCOUNT; n < NUM_STRINGS(term); ++n) {
- dumpit(ExtStrname(term, (int) n, strnames));
+ dumpit(ExtStrname(term, (int) n, strnames), NULL);
}
}
#endif
@@ -289,20 +389,383 @@ demo_terminfo(char *name)
"kLFT", "kNXT", "kPRV", "kRIT", "kUP",
};
for (n = 0; n < SIZEOF(xterm_keys); ++n) {
+ int mod;
for (mod = 0; mod < 8; ++mod) {
- if (mod == 0)
- sprintf(temp, "%.*s", 8, xterm_keys[n]);
- else
- sprintf(temp, "%.*s%d", 8, xterm_keys[n], mod);
- dumpit(temp);
+ if (mod == 0) {
+ /* these happen to be standard - avoid duplicates */
+ if (!strcmp(xterm_keys[n], "kDC") ||
+ !strcmp(xterm_keys[n], "kEND") ||
+ !strcmp(xterm_keys[n], "kHOM") ||
+ !strcmp(xterm_keys[n], "kLFT") ||
+ !strcmp(xterm_keys[n], "kRIT")) {
+ continue;
+ }
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "%.*s", 8, xterm_keys[n]);
+ } else {
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "%.*s%d", 8, xterm_keys[n], mod);
+ }
+ dumpit(temp, NULL);
}
}
}
}
#endif
+ del_curterm(cur_term);
+}
+typedef enum {
+ pDefault = 0
+ ,pComment
+ ,pDescription
+ ,pEscaped
+ ,pNewline
+ ,pName
+ ,pNumber
+ ,pString
+} STATE;
+
+static void
+parse_description(const char *input_name)
+{
+ static char empty[1];
+
+ FILE *fp;
+ struct stat sb;
+ size_t count_bools = 0;
+ size_t count_nums = 0;
+ size_t count_strs = 0;
+ size_t len;
+ size_t j, k, jl;
+ STATE state;
+
+ if (stat(input_name, &sb) != 0
+ || (sb.st_mode & S_IFMT) != S_IFREG) {
+ failed("input is not a file");
+ }
+
+ if (sb.st_size == 0) {
+ failed("input is empty");
+ }
+
+ /*
+ * None of the arrays could be larger than the input-file, and since it
+ * is small, just allocate the maximum for simplicity.
+ */
+ if ((my_blob = malloc((size_t) sb.st_size + 1)) == 0 ||
+ (my_boolcodes = typeCalloc(char *, sb.st_size)) == 0 ||
+ (my_numcodes = typeCalloc(char *, sb.st_size)) == 0 ||
+ (my_numvalues = typeCalloc(char *, sb.st_size)) == 0 ||
+ (my_strcodes = typeCalloc(char *, sb.st_size)) == 0 ||
+ (my_strvalues = typeCalloc(char *, sb.st_size)) == 0) {
+ failed("cannot allocate memory for input-file");
+ }
+
+ if ((fp = fopen(input_name, "r")) == 0)
+ failed("cannot open input-file");
+ len = fread(my_blob, sizeof(char), (size_t) sb.st_size, fp);
+ my_blob[sb.st_size] = '\0';
+ fclose(fp);
+
+ /*
+ * First, get rid of comments and escaped newlines, as well as repeated
+ * colons to construct a canonical entry.
+ */
+ state = pNewline;
+ for (j = k = 0; j < len; ++j) {
+ int ch = my_blob[j];
+ if (ch == '\t') {
+ ch = ' ';
+ }
+ switch (state) {
+ case pNewline:
+ if (ch == ' ') {
+ continue;
+ }
+ if (ch == '#') {
+ state = pComment;
+ continue;
+ }
+ state = pDefault;
+ /* FALLTHRU */
+ case pDefault:
+ switch (ch) {
+ case '|':
+ state = pDescription;
+ continue;
+ case '\\':
+ state = pEscaped;
+ continue;
+ case '\n':
+ state = pNewline;
+ continue;
+ case ' ':
+ break;
+ case ',':
+ my_blob[k++] = (char) ch;
+ break;
+ default:
+ if (isalpha(UChar(ch)))
+ state = pName;
+ else
+ fprintf(stderr, "OOPS @%d:%.20s\n", __LINE__, my_blob + j);
+ my_blob[k++] = (char) ch;
+ break;
+ }
+ break;
+ case pComment:
+ if (ch == '\n')
+ state = pNewline;
+ break;
+ case pDescription:
+ switch (ch) {
+ case ',':
+ state = pDefault;
+ break;
+ case '\n':
+ state = pNewline;
+ break;
+ }
+ break;
+ case pEscaped:
+ if (ch != '\n') {
+ my_blob[k++] = (char) ch;
+ state = pDefault;
+ } else {
+ state = pNewline;
+ }
+ break;
+ case pName:
+ switch (ch) {
+ case '\n':
+ state = pNewline;
+ continue;
+ case ' ':
+ case ',':
+ state = pDefault;
+ break;
+ case '#':
+ state = pNumber;
+ break;
+ case '=':
+ state = pString;
+ break;
+ case '|':
+ state = pDescription;
+ continue;
+ }
+ my_blob[k++] = (char) ch;
+ break;
+ case pNumber:
+ switch (ch) {
+ case '\n':
+ state = pNewline;
+ continue;
+ case ',':
+ state = pDefault;
+ break;
+ case ' ':
+ state = pDefault;
+ continue;
+ }
+ my_blob[k++] = (char) ch;
+ break;
+ case pString:
+ switch (ch) {
+ case '\n':
+ state = pNewline;
+ break;
+ case ',':
+ state = pDefault;
+ my_blob[k++] = (char) ch;
+ break;
+ default:
+ my_blob[k++] = (char) ch;
+ break;
+ }
+ break;
+ default:
+ /* not used */
+ break;
+ }
+ }
+ my_blob[k] = '\0';
+
+ /*
+ * Then, parse what's left, making indexes of the names and values.
+ */
+ state = pDefault;
+ for (j = 0; my_blob[j] != '\0'; ++j) {
+ switch (state) {
+ case pDefault:
+ switch (my_blob[j]) {
+ case '\\':
+ state = pEscaped;
+ break;
+ case ',':
+ my_blob[j] = '\0';
+ if (my_blob[j + 1] != '\0' && my_blob[j + 1] != ',')
+ state = pName;
+ break;
+ case ' ':
+ break;
+ default:
+ break;
+ }
+ case pEscaped:
+ break;
+ case pName:
+ state = pDefault;
+ if (isalpha(UChar(my_blob[j]))) {
+ for (jl = 1; isalnum(UChar(my_blob[j + jl])); ++jl) {
+ ;
+ }
+ } else {
+ jl = 0;
+ }
+ if (jl != 0) {
+ switch (my_blob[j + jl]) {
+ case '#':
+ my_numvalues[count_nums] = &my_blob[j + jl + 1];
+ my_numcodes[count_nums++] = &my_blob[j];
+ my_blob[j + jl] = '\0';
+ state = pNumber;
+ j += jl;
+ break;
+ case '=':
+ my_strvalues[count_strs] = &my_blob[j + jl + 1];
+ my_strcodes[count_strs++] = &my_blob[j];
+ my_blob[j + jl] = '\0';
+ state = pString;
+ j += jl;
+ break;
+ default:
+ if (my_blob[j + jl] == '@') {
+ /*
+ * We cannot get the type for a cancelled item
+ * directly, but can infer it assuming the input
+ * came from infocmp, which puts the data in a
+ * known order.
+ */
+ if (count_strs) {
+ my_strvalues[count_strs] = empty;
+ my_strcodes[count_strs++] = &my_blob[j];
+ } else if (count_nums) {
+ my_numvalues[count_nums] = empty;
+ my_numcodes[count_nums++] = &my_blob[j];
+ } else {
+ my_boolcodes[count_bools++] = &my_blob[j];
+ }
+ my_blob[j + jl] = '\0';
+ j += jl + 1;
+ } else {
+ my_boolcodes[count_bools++] = &my_blob[j];
+ my_blob[j + jl] = '\0';
+ j += jl;
+ }
+ state = (isCapName(my_blob[j + 1])
+ ? pName
+ : pDefault);
+ break;
+ }
+ }
+ break;
+ case pNumber:
+ if (!isdigit(UChar(my_blob[j]))) {
+ --j;
+ state = pDefault;
+ }
+ break;
+ case pString:
+ switch (my_blob[j]) {
+ case '\\':
+ if (my_blob[j + 1] != '\0') {
+ ++j;
+ } else {
+ --j;
+ state = pDefault;
+ }
+ break;
+ case ',':
+ --j;
+ state = pDefault;
+ break;
+ }
+ break;
+ case pNewline:
+ case pComment:
+ case pDescription:
+ default:
+ break;
+ }
+ }
+ my_boolcodes[count_bools] = 0;
+ my_numcodes[count_nums] = 0;
+ my_numvalues[count_nums] = 0;
+ my_strcodes[count_strs] = 0;
+ my_strvalues[count_strs] = 0;
+
+#if 0
+ printf("# bools:%d\n", (int) count_bools);
+ for (j = 0; my_boolcodes[j]; ++j)
+ printf("\t%s,\n", my_boolcodes[j]);
+
+ printf("# numbers:%d\n", (int) count_nums);
+ for (j = 0; my_numcodes[j]; ++j)
+ printf("\t%s#%s,\n", my_numcodes[j], my_numvalues[j]);
+
+ printf("# strings:%d\n", (int) count_strs);
+ for (j = 0; my_strcodes[j]; ++j)
+ printf("\t%s=%s,\n", my_strcodes[j], my_strvalues[j]);
+#endif
}
+#if USE_CODE_LISTS
+static char **
+copy_code_list(NCURSES_CONST char *const *list)
+{
+ int pass;
+ size_t count;
+ size_t length = 1;
+ char **result = 0;
+ char *unused = 0;
+
+ for (pass = 0; pass < 2; ++pass) {
+ for (count = 0; list[count] != 0; ++count) {
+ size_t chunk = strlen(list[count]) + 1;
+ if (pass == 0) {
+ length += chunk;
+ } else {
+ result[count] = unused;
+ _nc_STRCPY(unused, list[count], length);
+ unused += chunk;
+ }
+ }
+ if (pass == 0) {
+ char *blob = malloc(length);
+ result = typeCalloc(char *, count + 1);
+ unused = blob;
+ if (blob == 0 || result == 0)
+ failed("copy_code_list failed");
+ }
+ }
+
+ return result;
+}
+
+#if NO_LEAKS
+static void
+free_code_list(char **list)
+{
+ if (list) {
+ free(list[0]);
+ free(list);
+ }
+}
+#endif
+#endif /* USE_CODE_LISTS */
+
static void
usage(void)
{
@@ -314,17 +777,19 @@ usage(void)
"capabilities for the given terminal, using short names.",
"",
"Options:",
+ " -a try all names, print capabilities found",
" -b print boolean-capabilities",
" -d LIST colon-separated list of databases to use",
" -e NAME environment variable to set with -d option",
" -f print full names",
+ " -i NAME terminal description to use as names for \"-a\" option",
" -n print numeric-capabilities",
" -q quiet (prints only counts)",
" -r COUNT repeat for given count",
" -s print string-capabilities",
#ifdef NCURSES_VERSION
" -x print extended capabilities",
- " -y disable extended capabilities",
+ " -y direct-lookup names of extended capabilities",
#endif
};
unsigned n;
@@ -341,12 +806,13 @@ main(int argc, char *argv[])
int repeat;
char *name;
int r_opt = 1;
-#ifdef NCURSES_VERSION
- bool xy_opt = TRUE; /* by default, use_extended_names is true */
-#endif
+ char *input_name = 0;
- while ((n = getopt(argc, argv, "bd:e:fnqr:sxy")) != -1) {
+ while ((n = getopt(argc, argv, "abd:e:fi:nqr:sxy")) != -1) {
switch (n) {
+ case 'a':
+ a_opt = TRUE;
+ break;
case 'b':
b_opt = TRUE;
break;
@@ -359,6 +825,9 @@ main(int argc, char *argv[])
case 'f':
f_opt = TRUE;
break;
+ case 'i':
+ input_name = optarg;
+ break;
case 'n':
n_opt = TRUE;
break;
@@ -375,10 +844,10 @@ main(int argc, char *argv[])
#ifdef NCURSES_VERSION
case 'x':
x_opt = TRUE;
- xy_opt = TRUE;
break;
case 'y':
- xy_opt = FALSE;
+ y_opt = TRUE;
+ x_opt = TRUE;
break;
#endif
default:
@@ -387,11 +856,11 @@ main(int argc, char *argv[])
}
}
-#if NCURSES_XNAMES
- use_extended_names(xy_opt);
+#if HAVE_USE_EXTENDED_NAMES
+ use_extended_names(x_opt);
#endif
- if (!(b_opt || n_opt || s_opt || x_opt)) {
+ if (!(b_opt || n_opt || s_opt)) {
b_opt = TRUE;
n_opt = TRUE;
s_opt = TRUE;
@@ -399,39 +868,84 @@ main(int argc, char *argv[])
make_dblist();
- for (repeat = 0; repeat < r_opt; ++repeat) {
- if (optind < argc) {
- for (n = optind; n < argc; ++n) {
- demo_terminfo(argv[n]);
+ if (a_opt) {
+ for (repeat = 0; repeat < r_opt; ++repeat) {
+ if (optind < argc) {
+ for (n = optind; n < argc; ++n) {
+ brute_force(argv[n]);
+ }
+ } else if ((name = getenv("TERM")) != 0) {
+ brute_force(name);
+ } else {
+ static char dumb[] = "dumb";
+ brute_force(dumb);
+ }
+ }
+ } else {
+ if (input_name != 0) {
+ parse_description(input_name);
+ }
+#if USE_CODE_LISTS
+ else {
+ my_boolcodes = copy_code_list(boolnames);
+ my_numcodes = copy_code_list(numnames);
+ my_strcodes = copy_code_list(strnames);
+ }
+#else
+ else {
+ failed("no capability-lists available (use -i option)");
+ }
+#endif /* USE_CODE_LISTS */
+ for (repeat = 0; repeat < r_opt; ++repeat) {
+ if (optind < argc) {
+ for (n = optind; n < argc; ++n) {
+ demo_terminfo(argv[n]);
+ }
+ } else if ((name = getenv("TERM")) != 0) {
+ demo_terminfo(name);
+ } else {
+ static char dumb[] = "dumb";
+ demo_terminfo(dumb);
}
- } else if ((name = getenv("TERM")) != 0) {
- demo_terminfo(name);
- } else {
- static char dumb[] = "dumb";
- demo_terminfo(dumb);
}
}
- printf("%ld values\n", total_values);
+#define PLURAL(n) n, (n != 1) ? "s" : ""
+ printf("%ld value%s (%ld boolean%s, %ld number%s, %ld string%s)\n",
+ PLURAL(total_values),
+ PLURAL(total_b_values),
+ PLURAL(total_n_values),
+ PLURAL(total_s_values));
+#if NO_LEAKS
free_dblist();
+ if (input_name != 0) {
+ if (my_blob != 0) {
+ free(my_blob);
+ free(my_boolcodes);
+ free(my_numcodes);
+ free(my_numvalues);
+ free(my_strcodes);
+ free(my_strvalues);
+ }
+ }
+#if USE_CODE_LISTS
+ else {
+ free_code_list(my_boolcodes);
+ free_code_list(my_numcodes);
+ free_code_list(my_strcodes);
+ }
+#endif
+#endif /* NO_LEAKS */
ExitProgram(EXIT_SUCCESS);
}
-#else
-int
-main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
-{
- printf("This program requires the terminfo arrays\n");
- ExitProgram(EXIT_FAILURE);
-}
-#endif
#else /* !HAVE_TIGETSTR */
int
main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
{
- printf("This program requires the terminfo functions such as tigetstr\n");
+ failed("This program requires the terminfo functions such as tigetstr");
ExitProgram(EXIT_FAILURE);
}
#endif /* HAVE_TIGETSTR */
diff --git a/test/ditto.c b/test/ditto.c
index 921f216bb561..a6b8ac3f813d 100644
--- a/test/ditto.c
+++ b/test/ditto.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free 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 (1998-on)
*
- * $Id: ditto.c,v 1.42 2012/11/24 20:16:18 tom Exp $
+ * $Id: ditto.c,v 1.48 2018/05/20 19:19:10 tom Exp $
*
* The program illustrates how to set up multiple screens from a single
* program.
@@ -44,6 +44,8 @@
#include <test.priv.h>
#include <sys/stat.h>
+#if HAVE_DELSCREEN
+
#ifdef USE_PTHREADS
#include <pthread.h>
#endif
@@ -112,7 +114,7 @@ failed(const char *s)
static void
usage(void)
{
- fprintf(stderr, "usage: ditto [terminal1 ...]\n");
+ fprintf(stderr, "Usage: ditto [terminal1 ...]\n");
ExitProgram(EXIT_FAILURE);
}
@@ -155,6 +157,10 @@ open_tty(char *path)
int aslave;
char slave_name[1024];
char s_option[sizeof(slave_name) + 80];
+ const char *xterm_prog = 0;
+
+ if ((xterm_prog = getenv("XTERM_PROG")) == 0)
+ xterm_prog = "xterm";
if (openpty(&amaster, &aslave, slave_name, 0, 0) != 0
|| strlen(slave_name) > sizeof(slave_name) - 1)
@@ -163,9 +169,10 @@ open_tty(char *path)
errno = EISDIR;
failed(slave_name);
}
- sprintf(s_option, "-S%s/%d", slave_name, aslave);
+ _nc_SPRINTF(s_option, _nc_SLIMIT(sizeof(s_option))
+ "-S%s/%d", slave_name, aslave);
if (fork()) {
- execlp("xterm", "xterm", s_option, "-title", path, (char *) 0);
+ execlp(xterm_prog, xterm_prog, s_option, "-title", path, (char *) 0);
_exit(0);
}
fp = fdopen(amaster, "r+");
@@ -189,7 +196,7 @@ open_tty(char *path)
return fp;
}
-static void
+static int
init_screen(
#if HAVE_USE_WINDOW
SCREEN *sp GCC_UNUSED,
@@ -229,6 +236,7 @@ init_screen(
target->windows[k] = inner;
}
doupdate();
+ return TRUE;
}
static void
@@ -445,3 +453,11 @@ main(int argc, char *argv[])
}
ExitProgram(EXIT_SUCCESS);
}
+#else
+int
+main(void)
+{
+ printf("This program requires the curses delscreen function\n");
+ ExitProgram(EXIT_FAILURE);
+}
+#endif
diff --git a/test/dots.c b/test/dots.c
index 474d8805179e..bd3c30bb71d4 100644
--- a/test/dots.c
+++ b/test/dots.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2017,2019 Free 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.25 2013/09/28 22:12:09 tom Exp $
+ * $Id: dots.c,v 1.35 2019/08/24 21:49:50 tom Exp $
*
* A simple demo of the terminfo interface.
*/
@@ -40,8 +40,6 @@
#include <time.h>
-#define valid(s) ((s != 0) && s != (char *)-1)
-
static bool interrupted = FALSE;
static long total_chars = 0;
static time_t started;
@@ -64,7 +62,7 @@ TPUTS_PROTO(outc, c)
static bool
outs(const char *s)
{
- if (valid(s)) {
+ if (VALID_STRING(s)) {
tputs(s, 1, outc);
return TRUE;
}
@@ -80,7 +78,7 @@ cleanup(void)
outs(clear_screen);
outs(cursor_normal);
- printf("\n\n%ld total chars, rate %.2f/sec\n",
+ printf("\n\n%ld total cells, rate %.2f/sec\n",
total_chars,
((double) (total_chars) / (double) (time((time_t *) 0) - started)));
}
@@ -98,54 +96,125 @@ ranf(void)
return ((double) r / 32768.);
}
+static int
+get_number(NCURSES_CONST char *cap, int map)
+{
+ int result = map;
+ if (cap != 0) {
+ int check = tigetnum(cap);
+ if (check > 0)
+ result = check;
+ }
+ return result;
+}
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: dots [options]"
+ ,""
+ ,"Options:"
+ ," -T TERM override $TERM"
+#if HAVE_USE_ENV
+ ," -e allow environment $LINES / $COLUMNS"
+#endif
+ ," -f use tigetnum rather than <term.h> mapping"
+ ," -m SIZE set margin (default: 2)"
+ ," -s MSECS delay 1% of the time (default: 1 msecs)"
+ };
+ size_t n;
+
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+
+ ExitProgram(EXIT_FAILURE);
+}
+
int
-main(int argc GCC_UNUSED,
- char *argv[]GCC_UNUSED)
+main(int argc,
+ char *argv[])
{
- int x, y, z, p;
+ int ch;
double r;
double c;
int my_colors;
+ int f_option = 0;
+ int m_option = 2;
+ int s_option = 1;
+ size_t need;
+ char *my_env;
+
+ while ((ch = getopt(argc, argv, "T:efm:s:")) != -1) {
+ switch (ch) {
+ case 'T':
+ need = 6 + strlen(optarg);
+ my_env = malloc(need);
+ _nc_SPRINTF(my_env, _nc_SLIMIT(need) "TERM=%s", optarg);
+ putenv(my_env);
+ break;
+#if HAVE_USE_ENV
+ case 'e':
+ use_env(TRUE);
+ break;
+#endif
+ case 'f':
+ f_option = 1;
+ break;
+ case 'm':
+ m_option = atoi(optarg);
+ break;
+ case 's':
+ s_option = atoi(optarg);
+ break;
+ default:
+ usage();
+ break;
+ }
+ }
- CATCHALL(onsig);
+ InitAndCatch(setupterm((char *) 0, 1, (int *) 0), onsig);
srand((unsigned) time(0));
- setupterm((char *) 0, 1, (int *) 0);
+
outs(clear_screen);
outs(cursor_invisible);
- my_colors = max_colors;
+
+#define GetNumber(ln,sn) get_number(f_option ? #sn : 0, ln)
+ my_colors = GetNumber(max_colors, colors);
if (my_colors > 1) {
- if (!valid(set_a_foreground)
- || !valid(set_a_background)
- || (!valid(orig_colors) && !valid(orig_pair)))
+ if (!VALID_STRING(set_a_foreground)
+ || !VALID_STRING(set_a_background)
+ || (!VALID_STRING(orig_colors) && !VALID_STRING(orig_pair)))
my_colors = -1;
}
- r = (double) (lines - 4);
- c = (double) (columns - 4);
+ r = (double) (GetNumber(lines, lines) - (m_option * 2));
+ c = (double) (GetNumber(columns, cols) - (m_option * 2));
started = time((time_t *) 0);
while (!interrupted) {
- x = (int) (c * ranf()) + 2;
- y = (int) (r * ranf()) + 2;
- p = (ranf() > 0.9) ? '*' : ' ';
+ int x = (int) (c * ranf()) + m_option;
+ int y = (int) (r * ranf()) + m_option;
+ int p = (ranf() > 0.9) ? '*' : ' ';
tputs(tparm3(cursor_address, y, x), 1, outc);
if (my_colors > 0) {
- z = (int) (ranf() * my_colors);
+ int z = (int) (ranf() * my_colors);
if (ranf() > 0.01) {
tputs(tparm2(set_a_foreground, z), 1, outc);
} else {
tputs(tparm2(set_a_background, z), 1, outc);
- napms(1);
+ napms(s_option);
}
- } else if (valid(exit_attribute_mode)
- && valid(enter_reverse_mode)) {
+ } else if (VALID_STRING(exit_attribute_mode)
+ && VALID_STRING(enter_reverse_mode)) {
if (ranf() <= 0.01) {
outs((ranf() > 0.6)
? enter_reverse_mode
: exit_attribute_mode);
- napms(1);
+ napms(s_option);
}
}
outc(p);
diff --git a/test/dots_curses.c b/test/dots_curses.c
new file mode 100644
index 000000000000..6c2a06e644ee
--- /dev/null
+++ b/test/dots_curses.c
@@ -0,0 +1,218 @@
+/****************************************************************************
+ * Copyright (c) 2014-2018,2019 Free 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
+ *
+ * $Id: dots_curses.c,v 1.15 2019/08/24 21:50:35 tom Exp $
+ *
+ * A simple demo of the curses interface used for comparison with termcap.
+ */
+#include <test.priv.h>
+
+#if !defined(_WIN32)
+#include <sys/time.h>
+#endif
+
+#include <time.h>
+
+static bool interrupted = FALSE;
+static long total_chars = 0;
+static time_t started;
+
+static void
+cleanup(void)
+{
+ endwin();
+
+ printf("\n\n%ld total cells, rate %.2f/sec\n",
+ total_chars,
+ ((double) (total_chars) / (double) (time((time_t *) 0) - started)));
+}
+
+static void
+onsig(int n GCC_UNUSED)
+{
+ interrupted = TRUE;
+}
+
+static double
+ranf(void)
+{
+ long r = (rand() & 077777);
+ return ((double) r / 32768.);
+}
+
+static int
+mypair(int fg, int bg)
+{
+ int pair = (fg * COLORS) + bg;
+ return (pair >= COLOR_PAIRS) ? -1 : pair;
+}
+
+static void
+set_colors(int fg, int bg)
+{
+ int pair = mypair(fg, bg);
+ if (pair > 0) {
+ attron(COLOR_PAIR(mypair(fg, bg)));
+ }
+}
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: dots_curses [options]"
+ ,""
+ ,"Options:"
+ ," -T TERM override $TERM"
+#if HAVE_USE_DEFAULT_COLORS
+ ," -d invoke use_default_colors()"
+#endif
+#if HAVE_USE_ENV
+ ," -e allow environment $LINES / $COLUMNS"
+#endif
+ ," -m SIZE set margin (default: 2)"
+ ," -s MSECS delay 1% of the time (default: 1 msecs)"
+ };
+ size_t n;
+
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+
+ ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc, char *argv[])
+{
+ int ch;
+ int fg, bg;
+ double r;
+ double c;
+#if HAVE_USE_DEFAULT_COLORS
+ bool d_option = FALSE;
+#endif
+ int m_option = 2;
+ int s_option = 1;
+ size_t need;
+ char *my_env;
+
+ while ((ch = getopt(argc, argv, "T:dem:s:")) != -1) {
+ switch (ch) {
+ case 'T':
+ need = 6 + strlen(optarg);
+ my_env = malloc(need);
+ _nc_SPRINTF(my_env, _nc_SLIMIT(need) "TERM=%s", optarg);
+ putenv(my_env);
+ break;
+#if HAVE_USE_DEFAULT_COLORS
+ case 'd':
+ d_option = TRUE;
+ break;
+#endif
+#if HAVE_USE_ENV
+ case 'e':
+ use_env(TRUE);
+ break;
+#endif
+ case 'm':
+ m_option = atoi(optarg);
+ break;
+ case 's':
+ s_option = atoi(optarg);
+ break;
+ default:
+ usage();
+ break;
+ }
+ }
+
+ srand((unsigned) time(0));
+
+ InitAndCatch(initscr(), onsig);
+ if (has_colors()) {
+ start_color();
+#if HAVE_USE_DEFAULT_COLORS
+ if (d_option)
+ use_default_colors();
+#endif
+ for (fg = 0; fg < COLORS; fg++) {
+ for (bg = 0; bg < COLORS; bg++) {
+ int pair;
+ if (interrupted) {
+ cleanup();
+ ExitProgram(EXIT_FAILURE);
+ }
+ pair = mypair(fg, bg);
+ if (pair > 0)
+ init_pair((short) pair, (short) fg, (short) bg);
+ }
+ }
+ }
+
+ r = (double) (LINES - (m_option * 2));
+ c = (double) (COLS - (m_option * 2));
+ started = time((time_t *) 0);
+
+ fg = COLOR_WHITE;
+ bg = COLOR_BLACK;
+ while (!interrupted) {
+ int x = (int) (c * ranf()) + m_option;
+ int y = (int) (r * ranf()) + m_option;
+ int p = (ranf() > 0.9) ? '*' : ' ';
+
+ move(y, x);
+ if (has_colors()) {
+ int z = (int) (ranf() * COLORS);
+ if (ranf() > 0.01) {
+ set_colors(fg = z, bg);
+ attron(COLOR_PAIR(mypair(fg, bg)));
+ } else {
+ set_colors(fg, bg = z);
+ napms(s_option);
+ }
+ } else {
+ if (ranf() <= 0.01) {
+ if (ranf() > 0.6) {
+ attron(A_REVERSE);
+ } else {
+ attroff(A_REVERSE);
+ }
+ napms(s_option);
+ }
+ }
+ AddCh(p);
+ refresh();
+ ++total_chars;
+ }
+ cleanup();
+ ExitProgram(EXIT_SUCCESS);
+}
diff --git a/test/dots_mvcur.c b/test/dots_mvcur.c
index 90b9c4e5b17b..16d5ca5ecf75 100644
--- a/test/dots_mvcur.c
+++ b/test/dots_mvcur.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2007-2009,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2017,2019 Free 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 - 2007
*
- * $Id: dots_mvcur.c,v 1.10 2013/09/28 22:44:18 tom Exp $
+ * $Id: dots_mvcur.c,v 1.21 2019/08/24 22:19:28 tom Exp $
*
* A simple demo of the terminfo interface, and mvcur.
*/
@@ -40,8 +40,6 @@
#include <time.h>
-#define valid(s) ((s != 0) && s != (char *)-1)
-
static bool interrupted = FALSE;
static long total_chars = 0;
static time_t started;
@@ -65,7 +63,7 @@ TPUTS_PROTO(outc, c)
static bool
outs(const char *s)
{
- if (valid(s)) {
+ if (VALID_STRING(s)) {
tputs(s, 1, outc);
return TRUE;
}
@@ -81,7 +79,7 @@ cleanup(void)
outs(clear_screen);
outs(cursor_normal);
- printf("\n\n%ld total chars, rate %.2f/sec\n",
+ printf("\n\n%ld total cells, rate %.2f/sec\n",
total_chars,
((double) (total_chars) / (double) (time((time_t *) 0) - started)));
}
@@ -99,40 +97,117 @@ ranf(void)
return ((double) r / 32768.);
}
+static int
+get_number(NCURSES_CONST char *cap, int map)
+{
+ int result = map;
+ if (cap != 0) {
+ int check = tigetnum(cap);
+ if (check > 0)
+ result = check;
+ }
+ return result;
+}
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: dots_termcap [options]"
+ ,""
+ ,"Options:"
+ ," -T TERM override $TERM"
+#if HAVE_USE_ENV
+ ," -e allow environment $LINES / $COLUMNS"
+#endif
+ ," -f use tigetnum rather than <term.h> mapping"
+ ," -m SIZE set margin (default: 2)"
+ ," -s MSECS delay 1% of the time (default: 1 msecs)"
+ };
+ size_t n;
+
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+
+ ExitProgram(EXIT_FAILURE);
+}
+
int
main(int argc GCC_UNUSED,
char *argv[]GCC_UNUSED)
{
int x0 = 1, y0 = 1;
- int x, y, z, p;
+ int ch;
double r;
double c;
SCREEN *sp;
int my_colors;
+ int f_option = 0;
+ int m_option = 2;
+ int s_option = 1;
+ size_t need;
+ char *my_env;
+
+ while ((ch = getopt(argc, argv, "T:efm:s:")) != -1) {
+ switch (ch) {
+ case 'T':
+ need = 6 + strlen(optarg);
+ my_env = malloc(need);
+ _nc_SPRINTF(my_env, _nc_SLIMIT(need) "TERM=%s", optarg);
+ putenv(my_env);
+ break;
+#if HAVE_USE_ENV
+ case 'e':
+ use_env(TRUE);
+ break;
+#endif
+ case 'f':
+ f_option = 1;
+ break;
+ case 'm':
+ m_option = atoi(optarg);
+ break;
+ case 's':
+ s_option = atoi(optarg);
+ break;
+ default:
+ usage();
+ break;
+ }
+ }
- CATCHALL(onsig);
+ InitAndCatch((sp = newterm((char *) 0, stdout, stdin)), onsig);
+ refresh(); /* needed with Solaris curses to cancel endwin */
+
+ if (sp == 0) {
+ fprintf(stderr, "Cannot initialize terminal\n");
+ ExitProgram(EXIT_FAILURE);
+ }
srand((unsigned) time(0));
- sp = newterm((char *) 0, stdout, stdin);
+
outs(clear_screen);
outs(cursor_home);
outs(cursor_invisible);
- my_colors = max_colors;
+
+#define GetNumber(ln,sn) get_number(f_option ? #sn : 0, ln)
+ my_colors = GetNumber(max_colors, colors);
if (my_colors > 1) {
- if (!valid(set_a_foreground)
- || !valid(set_a_background)
- || (!valid(orig_colors) && !valid(orig_pair)))
+ if (!VALID_STRING(set_a_foreground)
+ || !VALID_STRING(set_a_background)
+ || (!VALID_STRING(orig_colors) && !VALID_STRING(orig_pair)))
my_colors = -1;
}
- r = (double) (lines - 4);
- c = (double) (columns - 4);
+ r = (double) (GetNumber(lines, lines) - (m_option * 2));
+ c = (double) (GetNumber(columns, cols) - (m_option * 2));
started = time((time_t *) 0);
while (!interrupted) {
- x = (int) (c * ranf()) + 2;
- y = (int) (r * ranf()) + 2;
- p = (ranf() > 0.9) ? '*' : ' ';
+ int x = (int) (c * ranf()) + m_option;
+ int y = (int) (r * ranf()) + m_option;
+ int p = (ranf() > 0.9) ? '*' : ' ';
if (mvcur(y0, x0, y, x) != ERR) {
x0 = x;
@@ -140,20 +215,20 @@ main(int argc GCC_UNUSED,
}
if (my_colors > 0) {
- z = (int) (ranf() * my_colors);
+ int z = (int) (ranf() * my_colors);
if (ranf() > 0.01) {
tputs(tparm2(set_a_foreground, z), 1, outc);
} else {
tputs(tparm2(set_a_background, z), 1, outc);
- napms(1);
+ napms(s_option);
}
- } else if (valid(exit_attribute_mode)
- && valid(enter_reverse_mode)) {
+ } else if (VALID_STRING(exit_attribute_mode)
+ && VALID_STRING(enter_reverse_mode)) {
if (ranf() <= 0.01) {
outs((ranf() > 0.6)
? enter_reverse_mode
: exit_attribute_mode);
- napms(1);
+ napms(s_option);
}
}
outc(p);
diff --git a/test/dots_termcap.c b/test/dots_termcap.c
index 4c1d62d9f9ff..21b9adb24719 100644
--- a/test/dots_termcap.c
+++ b/test/dots_termcap.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2013-2018,2019 Free 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,14 +29,14 @@
/*
* Author: Thomas E. Dickey
*
- * $Id: dots_termcap.c,v 1.7 2013/09/28 21:50:35 tom Exp $
+ * $Id: dots_termcap.c,v 1.19 2019/08/24 22:25:55 tom Exp $
*
* A simple demo of the termcap interface.
*/
#define USE_TINFO
#include <test.priv.h>
-#if !defined(__MINGW32__)
+#if !defined(_WIN32)
#include <sys/time.h>
#endif
@@ -44,8 +44,6 @@
#include <time.h>
-#define valid(s) ((s != 0) && s != (char *)-1)
-
static bool interrupted = FALSE;
static long total_chars = 0;
static time_t started;
@@ -62,7 +60,7 @@ static char *t_ve;
static char *t_vi;
static struct {
- const char *name;
+ NCURSES_CONST char *name;
char **value;
} my_caps[] = {
@@ -116,7 +114,7 @@ TPUTS_PROTO(outc, c)
static bool
outs(char *s)
{
- if (valid(s)) {
+ if (VALID_STRING(s)) {
tputs(s, 1, outc);
return TRUE;
}
@@ -132,7 +130,7 @@ cleanup(void)
outs(t_cl);
outs(t_ve);
- printf("\n\n%ld total chars, rate %.2f/sec\n",
+ printf("\n\n%ld total cells, rate %.2f/sec\n",
total_chars,
((double) (total_chars) / (double) (time((time_t *) 0) - started)));
}
@@ -153,38 +151,103 @@ ranf(void)
static void
my_napms(int ms)
{
-#if defined(__MINGW32__) || !HAVE_GETTIMEOFDAY
- Sleep(ms);
+ if (ms > 0) {
+#if defined(_WIN32) || !HAVE_GETTIMEOFDAY
+ Sleep((DWORD) ms);
#else
- struct timeval data;
- data.tv_sec = 0;
- data.tv_usec = ms * 1000;
- select(0, NULL, NULL, NULL, &data);
+ struct timeval data;
+ data.tv_sec = 0;
+ data.tv_usec = ms * 1000;
+ select(0, NULL, NULL, NULL, &data);
#endif
+ }
+}
+
+static int
+get_number(NCURSES_CONST char *cap, const char *env)
+{
+ int result = tgetnum(cap);
+ char *value = env ? getenv(env) : 0;
+ if (value != 0 && *value != 0) {
+ char *next = 0;
+ long check = strtol(value, &next, 10);
+ if (check > 0 && *next == '\0')
+ result = (int) check;
+ }
+ return result;
+}
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: dots_termcap [options]"
+ ,""
+ ,"Options:"
+ ," -T TERM override $TERM"
+ ," -e allow environment $LINES / $COLUMNS"
+ ," -m SIZE set margin (default: 2)"
+ ," -s MSECS delay 1% of the time (default: 1 msecs)"
+ };
+ size_t n;
+
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+
+ ExitProgram(EXIT_FAILURE);
}
int
-main(int argc GCC_UNUSED,
- char *argv[]GCC_UNUSED)
+main(int argc, char *argv[])
{
- int x, y, z, p;
+ int ch;
int num_colors;
int num_lines;
int num_columns;
+ int e_option = 0;
+ int m_option = 2;
+ int s_option = 1;
double r;
double c;
char buffer[1024];
char area[1024];
char *name;
+ size_t need;
+ char *my_env;
- CATCHALL(onsig);
-
- srand((unsigned) time(0));
+ while ((ch = getopt(argc, argv, "T:em:s:")) != -1) {
+ switch (ch) {
+ case 'T':
+ need = 6 + strlen(optarg);
+ my_env = malloc(need);
+ _nc_SPRINTF(my_env, _nc_SLIMIT(need) "TERM=%s", optarg);
+ putenv(my_env);
+ break;
+ case 'e':
+ e_option = 1;
+ break;
+ case 'm':
+ m_option = atoi(optarg);
+ break;
+ case 's':
+ s_option = atoi(optarg);
+ break;
+ default:
+ usage();
+ break;
+ }
+ }
if ((name = getenv("TERM")) == 0) {
fprintf(stderr, "TERM is not set\n");
ExitProgram(EXIT_FAILURE);
- } else if (tgetent(buffer, name) < 0) {
+ }
+
+ srand((unsigned) time(0));
+
+ InitAndCatch(ch = tgetent(buffer, name), onsig);
+ if (ch < 0) {
fprintf(stderr, "terminal description not found\n");
ExitProgram(EXIT_FAILURE);
} else {
@@ -197,43 +260,44 @@ main(int argc GCC_UNUSED,
}
num_colors = tgetnum("Co");
- num_lines = tgetnum("li");
- num_columns = tgetnum("co");
+#define GetNumber(cap,env) get_number(cap, e_option ? env : 0)
+ num_lines = GetNumber("li", "LINES");
+ num_columns = GetNumber("co", "COLUMNS");
outs(t_cl);
outs(t_vi);
if (num_colors > 1) {
- if (!valid(t_AF)
- || !valid(t_AB)
- || (!valid(t_oc) && !valid(t_op)))
+ if (!VALID_STRING(t_AF)
+ || !VALID_STRING(t_AB)
+ || (!VALID_STRING(t_oc) && !VALID_STRING(t_op)))
num_colors = -1;
}
- r = (double) (num_lines - 4);
- c = (double) (num_columns - 4);
+ r = (double) (num_lines - (2 * m_option));
+ c = (double) (num_columns - (2 * m_option));
started = time((time_t *) 0);
while (!interrupted) {
- x = (int) (c * ranf()) + 2;
- y = (int) (r * ranf()) + 2;
- p = (ranf() > 0.9) ? '*' : ' ';
+ int x = (int) (c * ranf()) + m_option;
+ int y = (int) (r * ranf()) + m_option;
+ int p = (ranf() > 0.9) ? '*' : ' ';
tputs(tgoto(t_cm, x, y), 1, outc);
if (num_colors > 0) {
- z = (int) (ranf() * num_colors);
+ int z = (int) (ranf() * num_colors);
if (ranf() > 0.01) {
tputs(tgoto(t_AF, 0, z), 1, outc);
} else {
tputs(tgoto(t_AB, 0, z), 1, outc);
- my_napms(1);
+ my_napms(s_option);
}
- } else if (valid(t_me)
- && valid(t_mr)) {
+ } else if (VALID_STRING(t_me)
+ && VALID_STRING(t_mr)) {
if (ranf() <= 0.01) {
outs((ranf() > 0.6)
? t_mr
: t_me);
- my_napms(1);
+ my_napms(s_option);
}
}
outc(p);
diff --git a/test/dots_xcurses.c b/test/dots_xcurses.c
new file mode 100644
index 000000000000..2eb4d63ace53
--- /dev/null
+++ b/test/dots_xcurses.c
@@ -0,0 +1,267 @@
+/****************************************************************************
+ * Copyright (c) 2017-2018,2019 Free 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
+ *
+ * $Id: dots_xcurses.c,v 1.18 2019/08/24 22:31:43 tom Exp $
+ *
+ * A simple demo of the wide-curses interface used for comparison with termcap.
+ */
+#include <test.priv.h>
+
+#if !defined(_WIN32)
+#include <sys/time.h>
+#endif
+
+#include <time.h>
+
+#if USE_WIDEC_SUPPORT
+
+#if HAVE_ALLOC_PAIR
+#define NewPair(n) x_option ? ((void *)&(n)) : NULL
+#else
+#define NewPair(n) NULL
+#endif
+
+#define InitPair(p,fg,bg) init_pair((short) (p), (short) (fg), (short) (bg))
+
+static bool interrupted = FALSE;
+static long total_chars = 0;
+static time_t started;
+
+#if HAVE_ALLOC_PAIR
+static bool x_option = FALSE;
+#endif
+
+static void
+cleanup(void)
+{
+ endwin();
+
+ printf("\n\n%ld total cells, rate %.2f/sec\n",
+ total_chars,
+ ((double) (total_chars) / (double) (time((time_t *) 0) - started)));
+}
+
+static void
+onsig(int n GCC_UNUSED)
+{
+ interrupted = TRUE;
+}
+
+static double
+ranf(void)
+{
+ long r = (rand() & 077777);
+ return ((double) r / 32768.);
+}
+
+static int
+mypair(int fg, int bg)
+{
+ int result;
+#if HAVE_ALLOC_PAIR
+ if (x_option) {
+ result = alloc_pair(fg, bg);
+ } else
+#endif
+ {
+ int pair = (fg * COLORS) + bg;
+ result = (pair >= COLOR_PAIRS) ? -1 : pair;
+ }
+ return result;
+}
+
+static void
+set_colors(int fg, int bg)
+{
+ int pair = mypair(fg, bg);
+ if (pair > 0) {
+ (void) color_set((short) pair, NewPair(pair));
+ }
+}
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: dots_xcurses [options]"
+ ,""
+ ,"Options:"
+ ," -T TERM override $TERM"
+#if HAVE_USE_DEFAULT_COLORS
+ ," -d invoke use_default_colors()"
+#endif
+#if HAVE_USE_ENV
+ ," -e allow environment $LINES / $COLUMNS"
+#endif
+ ," -m SIZE set margin (default: 2)"
+ ," -s MSECS delay 1% of the time (default: 1 msecs)"
+#if HAVE_ALLOC_PAIR
+ ," -x use alloc_pair() rather than init_pair()"
+#endif
+ };
+ size_t n;
+
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+
+ ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc, char *argv[])
+{
+ int fg, bg, ch;
+ wchar_t wch[2];
+ double r;
+ double c;
+#if HAVE_USE_DEFAULT_COLORS
+ bool d_option = FALSE;
+#endif
+ int m_option = 2;
+ int s_option = 1;
+ size_t need;
+ char *my_env;
+
+ while ((ch = getopt(argc, argv, "T:dem:s:x")) != -1) {
+ switch (ch) {
+ case 'T':
+ need = 6 + strlen(optarg);
+ my_env = malloc(need);
+ _nc_SPRINTF(my_env, _nc_SLIMIT(need) "TERM=%s", optarg);
+ putenv(my_env);
+ break;
+#if HAVE_USE_DEFAULT_COLORS
+ case 'd':
+ d_option = TRUE;
+ break;
+#endif
+#if HAVE_USE_ENV
+ case 'e':
+ use_env(TRUE);
+ break;
+#endif
+ case 'm':
+ m_option = atoi(optarg);
+ break;
+ case 's':
+ s_option = atoi(optarg);
+ break;
+#if HAVE_ALLOC_PAIR
+ case 'x':
+ x_option = TRUE;
+ break;
+#endif
+ default:
+ usage();
+ break;
+ }
+ }
+
+ srand((unsigned) time(0));
+
+ InitAndCatch(initscr(), onsig);
+ if (has_colors()) {
+ start_color();
+#if HAVE_USE_DEFAULT_COLORS
+ if (d_option)
+ use_default_colors();
+#endif
+#if HAVE_ALLOC_PAIR
+ if (x_option) {
+ ; /* nothing */
+ } else
+#endif
+ {
+ for (fg = 0; fg < COLORS; fg++) {
+ for (bg = 0; bg < COLORS; bg++) {
+ int pair;
+ if (interrupted) {
+ cleanup();
+ ExitProgram(EXIT_FAILURE);
+ }
+ pair = mypair(fg, bg);
+ if (pair > 0) {
+ InitPair(pair, fg, bg);
+ }
+ }
+ }
+ }
+ }
+
+ r = (double) (LINES - (2 * m_option));
+ c = (double) (COLS - (2 * m_option));
+ started = time((time_t *) 0);
+
+ fg = COLOR_WHITE;
+ bg = COLOR_BLACK;
+ wch[1] = 0;
+ while (!interrupted) {
+ int x = (int) (c * ranf()) + m_option;
+ int y = (int) (r * ranf()) + m_option;
+ int p = (ranf() > 0.9) ? '*' : ' ';
+
+ move(y, x);
+ if (has_colors()) {
+ int z = (int) (ranf() * COLORS);
+ if (ranf() > 0.01) {
+ set_colors(fg = z, bg);
+ } else {
+ set_colors(fg, bg = z);
+ napms(s_option);
+ }
+ } else {
+ if (ranf() <= 0.01) {
+ if (ranf() > 0.6) {
+ attr_on(WA_REVERSE, NULL);
+ } else {
+ attr_off(WA_REVERSE, NULL);
+ }
+ napms(s_option);
+ }
+ }
+ wch[0] = (wchar_t) p;
+ addnwstr(wch, 1);
+ refresh();
+ ++total_chars;
+ }
+ cleanup();
+ ExitProgram(EXIT_SUCCESS);
+}
+
+#else
+int
+main(void)
+{
+ printf("This program requires the wide-ncurses library\n");
+ ExitProgram(EXIT_FAILURE);
+}
+#endif
diff --git a/test/dump_window.c b/test/dump_window.c
new file mode 100644
index 000000000000..4893c48fabb9
--- /dev/null
+++ b/test/dump_window.c
@@ -0,0 +1,179 @@
+/****************************************************************************
+ * Copyright (c) 2018 Free 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: dump_window.c,v 1.3 2018/11/24 23:41:15 tom Exp $
+ */
+#include <dump_window.h>
+
+static FILE *dumpfp;
+
+int
+open_dump(const char *fn)
+{
+ int result = 0;
+ close_dump();
+ if ((dumpfp = fopen(fn, "a")) != 0)
+ result = 1;
+ return result;
+}
+
+void
+close_dump(void)
+{
+ if (dumpfp != 0) {
+ fclose(dumpfp);
+ dumpfp = 0;
+ }
+}
+
+void
+dump_window(WINDOW *w)
+{
+ wgetch(w);
+ if (dumpfp != 0) {
+ int y, x;
+ int oldy, oldx;
+ int maxy, maxx;
+ int pass;
+ char *cvec = 0;
+ char *avec = 0;
+ char *pvec = 0;
+ int ccnt = 0;
+ int acnt = 0;
+ int pcnt = 0;
+ int endy = -1;
+ int endx = -1;
+
+ fprintf(dumpfp, "Window %p\n", (void *) w);
+
+ getyx(w, oldy, oldx);
+ getmaxyx(w, maxy, maxx);
+ fprintf(dumpfp, "size (%dx%d)\n", maxy, maxx);
+ getbegyx(w, y, x);
+ fprintf(dumpfp, "begin (%dx%d)\n", maxy, maxx);
+ getyx(w, y, x);
+ fprintf(dumpfp, "position (%d,%d)\n", y, x);
+
+ if (maxy > 0 && maxx > 0) {
+ for (pass = 0; pass < 2; ++pass) {
+ for (y = 0; y < maxy; ++y) {
+
+ if (cvec)
+ memset(cvec, 0, (size_t) maxx + 1);
+ if (avec)
+ memset(avec, 0, (size_t) maxx + 1);
+ if (pvec)
+ memset(pvec, 0, (size_t) maxx + 1);
+
+ for (x = 0; x < maxx; ++x) {
+ chtype data = mvwinch(w, y, x);
+ chtype temp;
+ char cc = (char) ((data & 0xff) ? (data & 0xff) : ' ');
+ char aa;
+ char pp;
+
+ temp = ((data & A_ATTRIBUTES) & (~A_COLOR));
+ if (temp) {
+ if (temp & A_ALTCHARSET) {
+ aa = (temp & A_BOLD) ? 'A' : 'a';
+ } else if (temp & A_STANDOUT) {
+ aa = (temp & A_BOLD) ? 'S' : 's';
+ } else if (temp & A_REVERSE) {
+ aa = (temp & A_BOLD) ? 'R' : 'r';
+ } else if (temp & A_UNDERLINE) {
+ aa = (temp & A_BOLD) ? 'U' : 'u';
+ } else {
+ aa = (temp & A_BOLD) ? 'b' : '?';
+ }
+ } else {
+ aa = ' ';
+ }
+ if (data & A_COLOR) {
+ if (PAIR_NUMBER((int) data) < 8) {
+ pp = (char) ('0' + PAIR_NUMBER((int) data));
+ } else {
+ pp = '*';
+ }
+ } else {
+ pp = ' ';
+ }
+
+ if (pass) {
+ if (cvec)
+ cvec[x] = cc;
+ if (avec)
+ avec[x] = aa;
+ if (pvec)
+ pvec[x] = pp;
+ } else {
+ if (cc != ' ' || aa != ' ' || pp != ' ') {
+ if (endx < x)
+ endx = x;
+ if (endy < y)
+ endy = y;
+ }
+ ccnt += (cc != ' ');
+ acnt += (aa != ' ');
+ pcnt += (pp != ' ');
+ }
+ }
+ if (pass) {
+ fprintf(dumpfp, "%3d", y + 1);
+ if (cvec)
+ fprintf(dumpfp, "\tc|%.*s|\n", maxx, cvec);
+ if (avec)
+ fprintf(dumpfp, "\ta|%.*s|\n", maxx, avec);
+ if (pvec)
+ fprintf(dumpfp, "\tp|%.*s|\n", maxx, pvec);
+ }
+ }
+ if (pass) {
+ free(cvec);
+ free(avec);
+ free(pvec);
+ } else {
+ fprintf(dumpfp, "%d cells with characters\n", ccnt);
+ fprintf(dumpfp, "%d cells with video-attributes\n", acnt);
+ fprintf(dumpfp, "%d cells with color-attributes\n", pcnt);
+ if (endy < 0 || endx < 0)
+ break;
+ /* reduce the dump a little, ignore really blank cells */
+ maxx = endx + 1;
+ maxy = endy + 1;
+ if (ccnt)
+ cvec = malloc((size_t) maxx + 1);
+ if (acnt)
+ avec = malloc((size_t) maxx + 1);
+ if (pcnt)
+ pvec = malloc((size_t) maxx + 1);
+ }
+ }
+ }
+ wmove(w, oldy, oldx);
+ }
+}
diff --git a/test/dump_window.h b/test/dump_window.h
new file mode 100644
index 000000000000..1834be12de31
--- /dev/null
+++ b/test/dump_window.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ * Copyright (c) 2018 Free 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: dump_window.h,v 1.1 2018/11/24 18:13:53 tom Exp $
+ */
+#ifndef DUMP_WINDOW_H_incl
+#define DUMP_WINDOW_H_incl 1
+
+#include <test.priv.h>
+
+extern int open_dump(const char *fn);
+extern void close_dump(void);
+extern void dump_window(WINDOW *w);
+
+#endif /* DUMP_WINDOW_H_incl */
diff --git a/test/echochar.c b/test/echochar.c
index 8cb0833aa023..93a4644213af 100644
--- a/test/echochar.c
+++ b/test/echochar.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2006-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2006-2017,2019 Free 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: echochar.c,v 1.9 2012/06/09 20:30:32 tom Exp $
+ * $Id: echochar.c,v 1.20 2019/12/14 23:25:29 tom Exp $
*
* Demonstrate the echochar function (compare to dots.c).
* Thomas Dickey - 2006/11/4
@@ -36,8 +36,6 @@
#include <time.h>
-#define valid(s) ((s != 0) && s != (char *)-1)
-
static bool interrupted = FALSE;
static long total_chars = 0;
static time_t started;
@@ -45,9 +43,9 @@ static time_t started;
static void
cleanup(void)
{
- endwin();
+ stop_curses();
- printf("\n\n%ld total chars, rate %.2f/sec\n",
+ printf("\n\n%ld total cells, rate %.2f/sec\n",
total_chars,
((double) (total_chars) / (double) (time((time_t *) 0) - started)));
}
@@ -69,19 +67,21 @@ static void
set_color(char *my_pairs, int fg, int bg)
{
int pair = (fg * COLORS) + bg;
- if (!my_pairs[pair]) {
- init_pair((short) pair,
- (short) fg,
- (short) bg);
+ if (pair < COLOR_PAIRS) {
+ if (!my_pairs[pair]) {
+ init_pair((short) pair,
+ (short) fg,
+ (short) bg);
+ }
+ attron(COLOR_PAIR(pair));
}
- attron((attr_t) COLOR_PAIR(pair));
}
int
main(int argc GCC_UNUSED,
char *argv[]GCC_UNUSED)
{
- int ch, x, y, z, p;
+ int ch;
double r;
double c;
bool use_colors;
@@ -96,13 +96,12 @@ main(int argc GCC_UNUSED,
opt_r = TRUE;
break;
default:
- fprintf(stderr, "usage: echochar [-r]\n");
+ fprintf(stderr, "Usage: echochar [-r]\n");
ExitProgram(EXIT_FAILURE);
}
}
- CATCHALL(onsig);
- initscr();
+ InitAndCatch(initscr(), onsig);
use_colors = has_colors();
if (use_colors) {
@@ -122,13 +121,13 @@ main(int argc GCC_UNUSED,
started = time((time_t *) 0);
while (!interrupted) {
- x = (int) (c * ranf()) + 2;
- y = (int) (r * ranf()) + 2;
- p = (ranf() > 0.9) ? '*' : ' ';
+ int x = (int) (c * ranf()) + 2;
+ int y = (int) (r * ranf()) + 2;
+ int p = (ranf() > 0.9) ? '*' : ' ';
move(y, x);
if (use_colors > 0) {
- z = (int) (ranf() * COLORS);
+ int z = (int) (ranf() * COLORS);
if (ranf() > 0.01) {
set_color(my_pairs, z, last_bg);
last_fg = z;
@@ -147,7 +146,7 @@ main(int argc GCC_UNUSED,
}
}
if (opt_r) {
- addch(UChar(p));
+ AddCh(UChar(p));
refresh();
} else {
echochar(UChar(p));
@@ -155,5 +154,6 @@ main(int argc GCC_UNUSED,
++total_chars;
}
cleanup();
+ free(my_pairs);
ExitProgram(EXIT_SUCCESS);
}
diff --git a/test/edit_field.c b/test/edit_field.c
index 506d08ae0396..db917de175ef 100644
--- a/test/edit_field.c
+++ b/test/edit_field.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2003-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2003-2017,2019 Free 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: edit_field.c,v 1.22 2013/09/28 22:02:17 tom Exp $
+ * $Id: edit_field.c,v 1.30 2019/01/21 20:18:18 tom Exp $
*
* A wrapper for form_driver() which keeps track of the user's editing changes
* for each field, and makes the resulting length available as a
@@ -40,6 +40,7 @@
#if USE_LIBFORM
#include <edit_field.h>
+#include <popup_msg.h>
static struct {
int code;
@@ -169,151 +170,71 @@ static struct {
}
};
-static WINDOW *old_window;
-
-static void
-begin_popup(void)
-{
- doupdate();
- old_window = dupwin(curscr);
-}
-
-static void
-end_popup(void)
-{
- touchwin(old_window);
- wnoutrefresh(old_window);
- doupdate();
- delwin(old_window);
-}
-
/*
* Display a temporary window listing the keystroke-commands we recognize.
*/
void
help_edit_field(void)
{
- int x0 = 4;
- int y0 = 2;
- int y1 = 0;
- int y2 = 0;
- int wide = COLS - ((x0 + 1) * 2);
- int high = LINES - ((y0 + 1) * 2);
- WINDOW *help = newwin(high, wide, y0, x0);
- WINDOW *data = newpad(2 + SIZEOF(commands), wide - 4);
+ int used = 0;
unsigned n;
- int ch = ERR;
+ char **msgs = typeCalloc(char *, 3 + SIZEOF(commands));
- begin_popup();
-
- keypad(help, TRUE);
- keypad(data, TRUE);
- waddstr(data, "Defined form edit/traversal keys:\n");
+ msgs[used++] = strdup("Defined form edit/traversal keys:");
for (n = 0; n < SIZEOF(commands); ++n) {
+ char *msg;
const char *name;
+ const char *code = keyname(commands[n].code);
+ size_t need = 5;
#ifdef NCURSES_VERSION
if ((name = form_request_name(commands[n].result)) == 0)
#endif
name = commands[n].help;
- wprintw(data, "%s -- %s\n",
- keyname(commands[n].code),
- name != 0 ? name : commands[n].help);
+ need = 5 + strlen(code) + strlen(name);
+ msg = typeMalloc(char, need);
+ _nc_SPRINTF(msg, _nc_SLIMIT(need) "%s -- %s", code, name);
+ msgs[used++] = msg;
}
- waddstr(data, "Arrow keys move within a field as you would expect.");
- y2 = getcury(data);
-
- do {
- switch (ch) {
- case KEY_HOME:
- y1 = 0;
- break;
- case KEY_END:
- y1 = y2;
- break;
- case KEY_PREVIOUS:
- case KEY_PPAGE:
- if (y1 > 0) {
- y1 -= high / 2;
- if (y1 < 0)
- y1 = 0;
- } else {
- beep();
- }
- break;
- case KEY_NEXT:
- case KEY_NPAGE:
- if (y1 < y2) {
- y1 += high / 2;
- if (y1 >= y2)
- y1 = y2;
- } else {
- beep();
- }
- break;
- case CTRL('P'):
- case KEY_UP:
- if (y1 > 0)
- --y1;
- else
- beep();
- break;
- case CTRL('N'):
- case KEY_DOWN:
- if (y1 < y2)
- ++y1;
- else
- beep();
- break;
- default:
- beep();
- break;
- case ERR:
- break;
- }
- werase(help);
- box(help, 0, 0);
- wnoutrefresh(help);
- pnoutrefresh(data, y1, 0, y0 + 1, x0 + 1, high, wide);
- doupdate();
- } while ((ch = wgetch(data)) != ERR && ch != QUIT && ch != ESCAPE);
- werase(help);
- wrefresh(help);
- delwin(help);
- delwin(data);
-
- end_popup();
+ msgs[used++] =
+ strdup("Arrow keys move within a field as you would expect.");
+ msgs[used] = 0;
+ popup_msg2(stdscr, msgs);
+ for (n = 0; msgs[n] != 0; ++n) {
+ free(msgs[n]);
+ }
+ free(msgs);
}
static int
-offset_in_field(FORM * form)
+offset_in_field(FORM *form)
{
FIELD *field = current_field(form);
int currow, curcol;
form_getyx(form, currow, curcol);
- return curcol + currow * field->dcols;
+ return curcol + currow * (int) field->dcols;
}
static void
-inactive_field(FIELD * f)
+inactive_field(FIELD *f)
{
set_field_back(f, field_attrs(f)->background);
}
FieldAttrs *
-field_attrs(FIELD * f)
+field_attrs(FIELD *f)
{
return (FieldAttrs *) field_userptr(f);
}
static int
-buffer_length(FIELD * f)
+buffer_length(FIELD *f)
{
return field_attrs(f)->row_lengths[0];
}
static void
-set_buffer_length(FIELD * f, int length)
+set_buffer_length(FIELD *f, int length)
{
field_attrs(f)->row_lengths[0] = length;
}
@@ -323,8 +244,9 @@ set_buffer_length(FIELD * f, int length)
* keeping track of the actual lengths of lines in a multiline field.
*/
void
-init_edit_field(FIELD * f, char *value)
+init_edit_field(FIELD *f, char *value)
{
+ char empty[1];
FieldAttrs *ptr = field_attrs(f);
if (ptr == 0) {
int rows, cols, frow, fcol, nrow, nbuf;
@@ -336,6 +258,10 @@ init_edit_field(FIELD * f, char *value)
ptr->row_lengths = typeCalloc(int, (size_t) nrow + 1);
}
}
+ if (value == 0) {
+ value = empty;
+ *value = '\0';
+ }
set_field_userptr(f, (void *) ptr);
set_field_buffer(f, 0, value); /* will be formatted */
set_field_buffer(f, 1, value); /* will be unformatted */
@@ -343,7 +269,7 @@ init_edit_field(FIELD * f, char *value)
}
int
-edit_field(FORM * form, int *result)
+edit_field(FORM *form, int *result)
{
int ch = wgetch(form_win(form));
int status;
@@ -384,7 +310,7 @@ edit_field(FORM * form, int *result)
length = before_off;
break;
case REQ_CLR_EOL:
- if (before_row + 1 == before->rows)
+ if ((int) (before_row + 1) == (int) (before->rows))
length = before_off;
break;
case REQ_CLR_FIELD:
@@ -399,12 +325,12 @@ edit_field(FORM * form, int *result)
if (before_col > 0) {
--length;
} else if (before_row > 0) {
- length -= before->cols + before_col;
+ length -= (int) before->cols + before_col;
}
}
break;
case REQ_NEW_LINE:
- length += before->cols;
+ length += (int) before->cols;
break;
#if 0
/* FIXME: finish these */
@@ -489,6 +415,16 @@ edit_field(FORM * form, int *result)
inactive_field(before);
return status;
}
+
+void
+free_edit_field(FIELD *f)
+{
+ FieldAttrs *ptr = field_attrs(f);
+ if (ptr != 0) {
+ free(ptr->row_lengths);
+ free(ptr);
+ }
+}
#else
extern void no_edit_field(void);
diff --git a/test/edit_field.h b/test/edit_field.h
index 3c5b80ec12ea..f0c8315619c0 100644
--- a/test/edit_field.h
+++ b/test/edit_field.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2003-2008,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2003-2013,2017 Free 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: edit_field.h,v 1.9 2013/06/08 15:46:01 tom Exp $
+ * $Id: edit_field.h,v 1.10 2017/04/10 00:28:55 tom Exp $
*
* Interface of edit_field.c
*/
@@ -49,9 +49,10 @@ typedef struct {
int *row_lengths;
} FieldAttrs;
-extern FieldAttrs *field_attrs(FIELD * field);
-extern void init_edit_field(FIELD * field, char *value);
+extern FieldAttrs *field_attrs(FIELD *field);
+extern void init_edit_field(FIELD *field, char *value);
extern void help_edit_field(void);
-extern int edit_field(FORM * form, int *result);
+extern int edit_field(FORM *form, int *result);
+extern void free_edit_field(FIELD *field);
#endif /* EDIT_FORM_H_incl */
diff --git a/test/escherknot.xbm b/test/escherknot.xbm
new file mode 100644
index 000000000000..80bc471b2906
--- /dev/null
+++ b/test/escherknot.xbm
@@ -0,0 +1,473 @@
+#define escherknot_width 216
+#define escherknot_height 208
+
+static char escherknot_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x5f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xf0, 0x6f, 0xf6, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc0, 0xff, 0x3a, 0x13, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0d, 0x02, 0x51, 0x71, 0x0e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2f, 0x20, 0xd9, 0x88,
+ 0x9b, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x82,
+ 0xac, 0x44, 0x4e, 0x1c, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x1e, 0x40, 0x02, 0x44, 0x60, 0xe2, 0xfc, 0x06, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x25, 0x09, 0x90, 0x22, 0x13, 0xb7, 0x9a, 0x1e,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x40, 0x10, 0x89,
+ 0x18, 0xe3, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x04, 0x08,
+ 0x01, 0x10, 0xc8, 0xa8, 0xd5, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x83, 0x80, 0x20, 0x40, 0x82, 0x00, 0x66, 0x9c, 0xec, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x08, 0x08, 0x24, 0x12, 0x93, 0x5b,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x12, 0x80, 0x04, 0x01, 0x00, 0x80,
+ 0x19, 0x33, 0xfa, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x80, 0x80, 0x00,
+ 0x20, 0x08, 0x12, 0xc4, 0x68, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+ 0x02, 0x04, 0x24, 0x00, 0x01, 0x40, 0x24, 0x8c, 0xcd, 0x3f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+ 0x00, 0x80, 0x49, 0x10, 0x90, 0x00, 0x21, 0x20, 0x08, 0x11, 0x43, 0xd9,
+ 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8,
+ 0xff, 0xff, 0x0b, 0x00, 0x60, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x30, 0xb9, 0xf2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc0, 0x97, 0x04, 0x08, 0xfe, 0x05, 0x30, 0x10, 0x12, 0x20, 0x20,
+ 0x04, 0x00, 0x80, 0x48, 0x0c, 0xa3, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x3e, 0x92, 0x20, 0x49, 0x40, 0x3e, 0x0e, 0x82,
+ 0x00, 0x84, 0x25, 0x01, 0x80, 0x00, 0x80, 0xc8, 0x34, 0xed, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x25, 0x01, 0x04, 0x01, 0x08,
+ 0xd0, 0x17, 0x00, 0x80, 0x25, 0x01, 0xad, 0x04, 0x12, 0x20, 0x23, 0x4c,
+ 0x6a, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x02, 0x48,
+ 0x92, 0x20, 0x41, 0x92, 0x9e, 0x80, 0x24, 0x24, 0x29, 0x00, 0x04, 0x00,
+ 0x10, 0x98, 0xcc, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x4f, 0x10, 0x01, 0x90, 0x24, 0x40, 0x12, 0xf0, 0x00, 0x24, 0x41, 0x0b,
+ 0xa9, 0x10, 0x00, 0x00, 0x04, 0xd9, 0x96, 0x0e, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xe0, 0x00, 0x92, 0x48, 0x02, 0x04, 0x09, 0xc0, 0x84, 0x8f,
+ 0x29, 0x2d, 0xf8, 0xa9, 0x02, 0x00, 0x00, 0x20, 0x90, 0xf4, 0x1e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x24, 0x91, 0x04, 0x50, 0x22, 0x24,
+ 0x1b, 0x12, 0x7a, 0x48, 0xca, 0x03, 0x21, 0x10, 0x00, 0x00, 0x48, 0x93,
+ 0xff, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x24, 0x92, 0x20,
+ 0x81, 0xda, 0x24, 0xc8, 0x16, 0xd0, 0xe7, 0x50, 0xd2, 0xbf, 0x03, 0x00,
+ 0x80, 0x00, 0x30, 0x29, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03,
+ 0x20, 0x80, 0x24, 0x41, 0x12, 0x2a, 0x41, 0xb2, 0x80, 0x33, 0x0e, 0x7e,
+ 0x88, 0x1c, 0x01, 0x00, 0xa0, 0x24, 0x69, 0x75, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xe0, 0x82, 0x44, 0x11, 0x24, 0x09, 0x90, 0xa4, 0x4d, 0xd2, 0x92,
+ 0x9e, 0xd3, 0x83, 0x6b, 0x62, 0x00, 0x00, 0x10, 0x22, 0xff, 0x7f, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x30, 0x42, 0x04, 0x92, 0x24, 0x6b, 0x53, 0x32,
+ 0x59, 0x90, 0x16, 0xfa, 0xb4, 0xf4, 0xff, 0x0f, 0x01, 0x00, 0x90, 0x68,
+ 0x4a, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x90, 0x24, 0x11, 0x24,
+ 0x49, 0xda, 0x82, 0xc5, 0x92, 0xd2, 0xd0, 0x9e, 0x1e, 0x00, 0x78, 0x0a,
+ 0x00, 0x00, 0x05, 0xd2, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x02,
+ 0x44, 0xb2, 0x65, 0xea, 0x49, 0x9e, 0x2c, 0x4b, 0x1a, 0xd2, 0xeb, 0xe3,
+ 0xff, 0xc7, 0x09, 0x00, 0x20, 0x68, 0xff, 0xd6, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x0b, 0x90, 0x40, 0x92, 0x24, 0x09, 0x5f, 0xd2, 0x64, 0x59, 0x72,
+ 0x56, 0x7f, 0xfd, 0xdf, 0x1f, 0x12, 0x00, 0x20, 0x49, 0x92, 0xde, 0x01,
+ 0x00, 0x00, 0x00, 0x80, 0x41, 0x92, 0x4c, 0x92, 0x24, 0x25, 0xc9, 0x8b,
+ 0x2e, 0xcb, 0x92, 0x4b, 0x5a, 0x2f, 0x75, 0xf4, 0x04, 0x00, 0x00, 0x41,
+ 0xf6, 0x74, 0x01, 0x00, 0x00, 0x00, 0x40, 0x49, 0x02, 0x00, 0xba, 0xb6,
+ 0xfd, 0x49, 0xf8, 0x74, 0x6d, 0x4b, 0x72, 0xed, 0xdb, 0xff, 0xcf, 0x53,
+ 0x00, 0x00, 0x48, 0xb6, 0xd7, 0x03, 0x00, 0x00, 0x00, 0x60, 0x48, 0x10,
+ 0xc9, 0x93, 0x24, 0x00, 0x7b, 0xc3, 0xa6, 0x69, 0x58, 0x5a, 0xfb, 0xfa,
+ 0xa5, 0xbe, 0x16, 0x00, 0x00, 0x92, 0xa4, 0xfd, 0x03, 0x00, 0x00, 0x00,
+ 0x30, 0x01, 0x20, 0x5d, 0xa2, 0xfe, 0x7f, 0x01, 0x4f, 0x1a, 0xcd, 0x6b,
+ 0x6a, 0xa9, 0x5f, 0xff, 0xf3, 0x24, 0x01, 0x40, 0xc0, 0xb4, 0xf4, 0x03,
+ 0x00, 0x00, 0x00, 0x2c, 0x88, 0x84, 0x89, 0xb6, 0x00, 0x24, 0x7d, 0x69,
+ 0xf2, 0x34, 0xad, 0x99, 0x2d, 0xf7, 0xff, 0x9f, 0x4b, 0x00, 0x00, 0x92,
+ 0xa6, 0xad, 0x07, 0x00, 0x00, 0x00, 0x06, 0x91, 0x24, 0xe9, 0xa4, 0xfd,
+ 0xa5, 0xa9, 0x4b, 0x93, 0xe7, 0x34, 0x63, 0xf9, 0xfc, 0xd5, 0xef, 0x16,
+ 0x00, 0x40, 0x90, 0xb4, 0xbd, 0x07, 0x00, 0x00, 0x00, 0x6a, 0x80, 0x4c,
+ 0x96, 0xbe, 0x2d, 0xfd, 0x2f, 0x7c, 0x5e, 0x9c, 0x67, 0xad, 0xa5, 0xfd,
+ 0xff, 0xbf, 0x29, 0x00, 0x00, 0x92, 0x76, 0xed, 0x06, 0x00, 0x00, 0x00,
+ 0x05, 0x12, 0x48, 0x53, 0x25, 0x65, 0x25, 0xf4, 0xe5, 0xd3, 0x72, 0x9c,
+ 0x35, 0xdf, 0xf6, 0x7f, 0xf5, 0x56, 0x00, 0x00, 0x92, 0xa4, 0xed, 0x0f,
+ 0x00, 0x00, 0x80, 0x49, 0x20, 0x59, 0x38, 0xec, 0xff, 0xff, 0xad, 0x2f,
+ 0x5d, 0xd3, 0x33, 0xe6, 0x24, 0xed, 0xff, 0xdf, 0x2d, 0x01, 0x40, 0x80,
+ 0x24, 0xbd, 0x07, 0x00, 0x00, 0xc0, 0x48, 0x24, 0x49, 0x87, 0x37, 0x21,
+ 0xa0, 0xbd, 0xf4, 0x79, 0x4f, 0xc7, 0x9c, 0xde, 0xf6, 0xff, 0xff, 0x5b,
+ 0x08, 0x00, 0x92, 0xfc, 0xe9, 0x0e, 0x00, 0x00, 0x20, 0x89, 0x40, 0xd3,
+ 0xf4, 0x49, 0xff, 0xff, 0xe7, 0x2f, 0xcf, 0x79, 0x9c, 0x53, 0xb2, 0x35,
+ 0xff, 0xff, 0x37, 0x00, 0x40, 0x90, 0x24, 0xef, 0x0e, 0x00, 0x00, 0x30,
+ 0x91, 0x49, 0x32, 0x2d, 0xff, 0x6b, 0xb7, 0xbd, 0xbc, 0x3c, 0xef, 0x79,
+ 0xce, 0xde, 0xd6, 0xfd, 0xff, 0x9f, 0x00, 0x00, 0x92, 0xa6, 0xad, 0x0b,
+ 0x00, 0x00, 0x30, 0x11, 0x89, 0x8c, 0xcb, 0x5b, 0xba, 0xaf, 0xf6, 0xd7,
+ 0xe7, 0x35, 0xe7, 0x59, 0xb3, 0xfb, 0xff, 0xff, 0x7f, 0x04, 0x40, 0x80,
+ 0xe4, 0xb9, 0x1f, 0x00, 0x00, 0x48, 0x22, 0x91, 0x66, 0x79, 0xeb, 0xff,
+ 0xff, 0xdf, 0xbe, 0xbe, 0xe7, 0x8c, 0x75, 0x6b, 0x4a, 0xfa, 0xbf, 0x7f,
+ 0x00, 0x00, 0x82, 0x24, 0xef, 0x0e, 0x00, 0x00, 0x4c, 0x22, 0xb2, 0x79,
+ 0x5e, 0xfa, 0x5b, 0xa9, 0xfd, 0xeb, 0xf5, 0x9c, 0x3d, 0xc6, 0xcc, 0xee,
+ 0xed, 0x01, 0xf8, 0x00, 0x40, 0x82, 0xb6, 0xa9, 0x1b, 0x00, 0x00, 0x94,
+ 0x64, 0x66, 0x8e, 0xd3, 0x97, 0xfe, 0xff, 0xd7, 0xdf, 0x9f, 0x7b, 0xf3,
+ 0x3c, 0x35, 0x59, 0x6b, 0x00, 0x70, 0x00, 0x00, 0x40, 0xe4, 0xed, 0x1e,
+ 0x00, 0x00, 0x92, 0xc4, 0x34, 0xf3, 0xfc, 0xfd, 0x5f, 0xad, 0x7d, 0xfa,
+ 0x7a, 0xce, 0x8e, 0xb3, 0x76, 0x2f, 0xfd, 0x00, 0xe0, 0x04, 0x00, 0x9a,
+ 0x26, 0xaf, 0x1e, 0x00, 0x00, 0x13, 0x88, 0xcc, 0xb5, 0x3f, 0xbf, 0xff,
+ 0xff, 0xd7, 0xef, 0xef, 0xbd, 0x79, 0x6a, 0xde, 0xec, 0xab, 0x01, 0xc0,
+ 0x00, 0x00, 0x40, 0xb6, 0xbd, 0x1b, 0x00, 0x00, 0x05, 0x91, 0xeb, 0x5c,
+ 0xeb, 0xeb, 0xff, 0xff, 0xff, 0x7e, 0xef, 0x6b, 0xef, 0xcd, 0x99, 0xb3,
+ 0xe4, 0x07, 0x80, 0x00, 0x40, 0x49, 0xb2, 0xe5, 0x1a, 0x00, 0x80, 0x20,
+ 0x32, 0xb1, 0xe7, 0x79, 0x7f, 0xf7, 0xff, 0xfd, 0xeb, 0xbd, 0xfe, 0x2c,
+ 0x3d, 0x6b, 0xb6, 0xaf, 0x06, 0x80, 0x00, 0x00, 0x41, 0x96, 0xfe, 0x1e,
+ 0x00, 0x80, 0x44, 0xb2, 0x9b, 0xf9, 0xde, 0xff, 0xff, 0xff, 0x7f, 0xbf,
+ 0xf7, 0xbb, 0xb3, 0x77, 0xce, 0xce, 0xb6, 0x0d, 0x80, 0x01, 0x00, 0x49,
+ 0xf2, 0x94, 0x1f, 0x00, 0x40, 0x49, 0x44, 0xe6, 0x9e, 0x77, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xbf, 0xf7, 0x7e, 0xd6, 0xbc, 0xd9, 0xba, 0x3b, 0x80,
+ 0x00, 0x00, 0x64, 0x93, 0xf7, 0x1b, 0x00, 0x40, 0x89, 0xec, 0x7e, 0x67,
+ 0xbd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0xdb, 0x99, 0x33, 0x37,
+ 0xd3, 0x36, 0x80, 0x01, 0x80, 0x24, 0xda, 0xd6, 0x1e, 0x00, 0x20, 0x90,
+ 0x99, 0x99, 0x7b, 0xef, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbd, 0x37,
+ 0x63, 0xf3, 0x66, 0xdb, 0x7a, 0x80, 0x00, 0x00, 0x24, 0x59, 0xde, 0x1f,
+ 0x00, 0x60, 0x12, 0xb3, 0xf7, 0xdd, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xff,
+ 0xbf, 0xf7, 0xfe, 0x6e, 0xce, 0xdd, 0x6d, 0xd7, 0x80, 0x00, 0x80, 0x20,
+ 0xcb, 0xfb, 0x1f, 0x00, 0x10, 0x20, 0x6e, 0x66, 0x76, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xef, 0xde, 0xdb, 0x9b, 0x99, 0xb3, 0x5d, 0x6b, 0x81,
+ 0x00, 0x40, 0x96, 0x59, 0x6a, 0x1f, 0x00, 0x98, 0xc4, 0xe4, 0xdf, 0xff,
+ 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0x6f, 0x7b, 0x37, 0x7f,
+ 0xb3, 0xdd, 0x83, 0x00, 0x00, 0xb0, 0xed, 0xef, 0x1d, 0x00, 0x10, 0x88,
+ 0x9e, 0xdd, 0xcd, 0xbd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xed,
+ 0x6c, 0xe6, 0xcc, 0x76, 0x6d, 0xc1, 0x00, 0x40, 0x91, 0x24, 0x7b, 0x1f,
+ 0x00, 0x08, 0xd1, 0xf1, 0x66, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xdf, 0xbd, 0xbf, 0xd9, 0xdd, 0xdd, 0xb6, 0x47, 0x00, 0x00, 0xd8,
+ 0xb4, 0xad, 0x1f, 0x00, 0x24, 0x24, 0x6f, 0xf6, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xb7, 0x9d, 0x33, 0xd9, 0x96, 0x4e,
+ 0x00, 0x20, 0x49, 0xf7, 0xfd, 0x1e, 0x00, 0x48, 0xe4, 0xac, 0xb9, 0xdd,
+ 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdd, 0x76, 0xb6,
+ 0xb7, 0xfd, 0x7a, 0x00, 0x00, 0x44, 0x96, 0xb7, 0x1f, 0x00, 0x02, 0x9a,
+ 0xbe, 0x6f, 0x77, 0xff, 0xff, 0x7f, 0x61, 0xd9, 0xff, 0xff, 0xff, 0xfd,
+ 0xdd, 0x66, 0xed, 0x66, 0x5b, 0x37, 0x00, 0x90, 0x64, 0xb9, 0xf6, 0x1f,
+ 0x00, 0x02, 0xc9, 0xf3, 0xee, 0xfd, 0xff, 0xff, 0x2f, 0x24, 0x4f, 0xfe,
+ 0xff, 0xff, 0x7f, 0x37, 0xdb, 0xcd, 0x7c, 0xff, 0x3a, 0x00, 0x88, 0x24,
+ 0xdb, 0xde, 0x1a, 0x00, 0x13, 0x31, 0x6f, 0xbb, 0xdf, 0xff, 0xff, 0x21,
+ 0xa0, 0x64, 0xf3, 0xff, 0xff, 0xe7, 0xff, 0x96, 0xbb, 0x9b, 0xa5, 0x1d,
+ 0x00, 0x60, 0x32, 0xe9, 0xdb, 0x0f, 0x00, 0x65, 0xe6, 0x3c, 0xfb, 0xf6,
+ 0xff, 0x7f, 0x10, 0xa4, 0xb5, 0x9d, 0xfe, 0xdf, 0xdf, 0xdd, 0x6d, 0x32,
+ 0xb3, 0x7d, 0x0d, 0x00, 0x0b, 0x93, 0x7c, 0x7b, 0x0f, 0x00, 0x89, 0xdc,
+ 0xb3, 0xed, 0xfb, 0xff, 0x1f, 0x10, 0x90, 0x92, 0xd9, 0xfe, 0x7f, 0xff,
+ 0x77, 0xdb, 0xee, 0x6e, 0xdb, 0x0e, 0x00, 0x20, 0xdd, 0x66, 0x6f, 0x0f,
+ 0x80, 0x91, 0x5a, 0xfb, 0xbe, 0xef, 0xff, 0x0f, 0x10, 0xda, 0x92, 0xee,
+ 0xff, 0xff, 0xff, 0xf7, 0xb7, 0xcd, 0xee, 0xde, 0x07, 0x00, 0x24, 0x49,
+ 0xb6, 0xed, 0x0f, 0x00, 0x12, 0x6b, 0xcd, 0xf3, 0xbe, 0xff, 0x07, 0x08,
+ 0x48, 0xda, 0x76, 0xb7, 0xff, 0xff, 0xdd, 0x6e, 0xba, 0x99, 0x65, 0x03,
+ 0x40, 0x92, 0xe4, 0xba, 0xbd, 0x0e, 0x80, 0x62, 0xed, 0x7d, 0x5f, 0xf7,
+ 0xff, 0x01, 0x08, 0x28, 0xc9, 0x26, 0xbb, 0xff, 0xff, 0xff, 0x99, 0xb7,
+ 0xbb, 0x7d, 0x03, 0x00, 0x89, 0x64, 0xdb, 0xf6, 0x07, 0x40, 0x0c, 0x35,
+ 0xe7, 0x79, 0xdd, 0xff, 0x01, 0x84, 0xa5, 0x7d, 0xba, 0xdd, 0xfe, 0x7f,
+ 0xbf, 0xbf, 0x6d, 0x76, 0xdb, 0x01, 0x00, 0x48, 0x36, 0xdb, 0xd6, 0x07,
+ 0xc0, 0x88, 0xb4, 0xb6, 0xbf, 0xff, 0x7f, 0x00, 0x0c, 0x24, 0x44, 0xdb,
+ 0xed, 0xff, 0xdf, 0xef, 0x6e, 0xdb, 0x6e, 0xb7, 0x00, 0x80, 0x44, 0x93,
+ 0xed, 0x5b, 0x07, 0x40, 0x91, 0xd2, 0xfa, 0xfc, 0xf6, 0x7f, 0x00, 0x02,
+ 0xb4, 0x35, 0xd9, 0xef, 0xff, 0xff, 0xfb, 0xef, 0xb6, 0xc9, 0xe4, 0x00,
+ 0x10, 0x24, 0xd9, 0x6d, 0xfb, 0x03, 0x00, 0x27, 0xfe, 0xd3, 0xd6, 0xdb,
+ 0x3f, 0x00, 0xa2, 0x94, 0xb4, 0xdb, 0x7c, 0xff, 0xff, 0xbf, 0xd9, 0xad,
+ 0xdb, 0x7d, 0x00, 0x40, 0x32, 0xd9, 0xb6, 0xef, 0x03, 0x60, 0xe4, 0x5a,
+ 0x5f, 0x5f, 0xff, 0x1f, 0x00, 0x02, 0x52, 0x92, 0xec, 0xb6, 0xff, 0xff,
+ 0xef, 0xff, 0x6d, 0xb6, 0x3b, 0x00, 0x28, 0x90, 0xcc, 0xbe, 0xfd, 0x03,
+ 0xa0, 0x88, 0xeb, 0xf9, 0xfd, 0xf5, 0x1f, 0x00, 0x82, 0x53, 0xbb, 0x6d,
+ 0xf7, 0xff, 0xf9, 0xff, 0x6f, 0xdb, 0x6d, 0x1b, 0x00, 0x04, 0xc9, 0x66,
+ 0xdb, 0x57, 0x03, 0xa0, 0x52, 0xaf, 0xa7, 0x97, 0xff, 0x0f, 0x00, 0x51,
+ 0x48, 0xda, 0x66, 0xdb, 0xff, 0xf8, 0xdf, 0xed, 0xbe, 0xed, 0x0e, 0x00,
+ 0x92, 0x64, 0x32, 0xeb, 0xf6, 0x01, 0x20, 0x63, 0xbd, 0xbc, 0xfc, 0xfa,
+ 0x0f, 0x00, 0x09, 0x20, 0x89, 0x3e, 0xff, 0xff, 0xe0, 0x7f, 0xdf, 0x6f,
+ 0xdb, 0x07, 0x00, 0x01, 0x24, 0xbb, 0xed, 0xfe, 0x01, 0xa0, 0xce, 0xf5,
+ 0xf6, 0xdb, 0xdf, 0x07, 0x00, 0x41, 0xad, 0x5f, 0xf2, 0xed, 0xff, 0xc0,
+ 0xff, 0xbf, 0xdd, 0x92, 0x03, 0x00, 0x44, 0xb2, 0xd9, 0x7d, 0xfb, 0x01,
+ 0xe0, 0xaa, 0xdf, 0x9b, 0x7f, 0xfb, 0x07, 0x80, 0x28, 0x21, 0x64, 0xbb,
+ 0x7f, 0x7f, 0x80, 0xff, 0xf6, 0xbb, 0xee, 0x03, 0x80, 0x22, 0x99, 0xed,
+ 0xb6, 0xff, 0x00, 0x90, 0xb8, 0x5e, 0x5b, 0x6b, 0xed, 0x03, 0x00, 0x01,
+ 0xa6, 0x6d, 0xdb, 0xf6, 0x7f, 0x00, 0xff, 0xff, 0xf6, 0xcd, 0x00, 0x40,
+ 0x10, 0xc9, 0x6c, 0xff, 0xf7, 0x00, 0xa0, 0xe3, 0x72, 0xeb, 0xef, 0xff,
+ 0x03, 0x80, 0xe0, 0x90, 0x24, 0xdb, 0xbd, 0x3f, 0x00, 0xfe, 0xdb, 0x6f,
+ 0xfb, 0x00, 0x00, 0x89, 0x4c, 0xb6, 0xd9, 0x7e, 0x00, 0x70, 0xaf, 0xaf,
+ 0x6f, 0xb5, 0xde, 0x03, 0x80, 0x94, 0x92, 0xb6, 0xf9, 0xf6, 0x3f, 0x00,
+ 0xfc, 0xbf, 0xdd, 0x7b, 0x00, 0x10, 0x48, 0x26, 0xb3, 0xdf, 0x7f, 0x00,
+ 0x70, 0xd8, 0xae, 0xfd, 0xff, 0xf7, 0x03, 0x80, 0x00, 0xd2, 0x36, 0xcf,
+ 0xdf, 0x3f, 0x00, 0xb8, 0x6d, 0xdf, 0x16, 0x00, 0x48, 0x44, 0xb2, 0xfb,
+ 0x6c, 0x3f, 0x00, 0x50, 0x75, 0xfd, 0xa5, 0xd5, 0xfe, 0x01, 0x40, 0xd1,
+ 0x12, 0xa2, 0x7d, 0xfb, 0x1f, 0x00, 0xf0, 0xff, 0xbf, 0x0d, 0x00, 0x20,
+ 0x12, 0x9b, 0xcd, 0xf6, 0x3f, 0x00, 0x90, 0xd5, 0xa7, 0xfd, 0x77, 0xab,
+ 0x03, 0x40, 0x1c, 0xc8, 0xbe, 0x6d, 0xfb, 0x1f, 0x00, 0xe0, 0xff, 0xee,
+ 0x07, 0x00, 0x04, 0x91, 0xc9, 0x7e, 0xbf, 0x1f, 0x00, 0x30, 0x57, 0xbf,
+ 0xa6, 0xde, 0xfd, 0x01, 0x40, 0x40, 0x6b, 0xd3, 0x6e, 0xef, 0x0f, 0x00,
+ 0xc0, 0xeb, 0x7d, 0x03, 0x00, 0x90, 0xc8, 0x6c, 0x76, 0xfb, 0x0f, 0x00,
+ 0x70, 0x5c, 0xe5, 0xf7, 0xfa, 0xeb, 0x01, 0x40, 0x50, 0x49, 0x92, 0xf4,
+ 0xfd, 0x0f, 0x00, 0xc0, 0xff, 0xdb, 0x01, 0x80, 0x44, 0x44, 0x66, 0xbb,
+ 0x6f, 0x0f, 0x00, 0xd0, 0xf1, 0x95, 0xf6, 0x6f, 0xad, 0x01, 0x40, 0x08,
+ 0x78, 0xdb, 0xb6, 0xef, 0x0f, 0x00, 0x00, 0xdf, 0xd6, 0x00, 0x00, 0x20,
+ 0x32, 0xb3, 0xdb, 0xfd, 0x0f, 0x00, 0x10, 0xd7, 0xf7, 0xb6, 0xd8, 0xeb,
+ 0x03, 0x20, 0x43, 0x27, 0xd9, 0xb6, 0xfd, 0x0f, 0x00, 0x00, 0xff, 0x7e,
+ 0x00, 0x40, 0x12, 0x93, 0xd9, 0xec, 0xb6, 0x07, 0x00, 0x70, 0x55, 0xdd,
+ 0xf6, 0x6f, 0xbb, 0x01, 0x40, 0x28, 0xa1, 0x6f, 0xb6, 0xb7, 0x0f, 0x00,
+ 0x00, 0xde, 0x1f, 0x00, 0x80, 0x88, 0xd8, 0xcc, 0x66, 0xff, 0x03, 0x00,
+ 0x70, 0xf4, 0xf5, 0xdb, 0xaa, 0xee, 0x01, 0x60, 0x28, 0x2d, 0x49, 0xf7,
+ 0xf6, 0x07, 0x00, 0x00, 0x7c, 0x0f, 0x00, 0x08, 0x48, 0x66, 0x6e, 0xfb,
+ 0xef, 0x03, 0x00, 0xd0, 0xd5, 0xdf, 0x52, 0xff, 0xda, 0x03, 0x20, 0xa3,
+ 0xa5, 0xd9, 0xb2, 0xff, 0x07, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x20, 0x22,
+ 0x33, 0x37, 0xbf, 0xfd, 0x01, 0x00, 0x70, 0x5f, 0xf7, 0xfe, 0xab, 0x6b,
+ 0x02, 0xa0, 0xa8, 0xb4, 0x6d, 0xdf, 0xf6, 0x07, 0x00, 0x00, 0xf8, 0x01,
+ 0x00, 0x12, 0x33, 0x11, 0xd9, 0xdd, 0xff, 0x01, 0x00, 0x70, 0x75, 0xd5,
+ 0x52, 0xea, 0x8a, 0x03, 0x20, 0x84, 0x36, 0x69, 0xba, 0xdb, 0x07, 0x00,
+ 0x00, 0xf0, 0x01, 0x00, 0x81, 0xc8, 0xcc, 0xdd, 0xed, 0xff, 0x00, 0x00,
+ 0x60, 0xd5, 0xdf, 0xf6, 0xae, 0x6b, 0x03, 0x00, 0xa1, 0xa4, 0x6d, 0xdf,
+ 0xfe, 0x07, 0x00, 0x00, 0x60, 0x00, 0x40, 0x44, 0xc6, 0xcc, 0x64, 0xb7,
+ 0xfd, 0x00, 0x00, 0xe0, 0x55, 0xf7, 0xd6, 0xea, 0xba, 0x07, 0x20, 0x94,
+ 0x94, 0x6d, 0xfb, 0xdb, 0x07, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x32,
+ 0x76, 0x77, 0xff, 0x7f, 0x00, 0x00, 0x60, 0x7d, 0xd5, 0xb6, 0x3f, 0xaf,
+ 0x06, 0xa0, 0xa4, 0x95, 0x6c, 0x9b, 0xee, 0x07, 0x00, 0x00, 0x18, 0x00,
+ 0x10, 0x92, 0x15, 0x73, 0xbb, 0xd9, 0x3f, 0x00, 0x00, 0xe0, 0xf5, 0xff,
+ 0xf7, 0x6a, 0xa9, 0x06, 0x80, 0xa2, 0xb4, 0x6d, 0xfb, 0xfb, 0x07, 0x00,
+ 0x00, 0x04, 0x00, 0x84, 0x88, 0xc8, 0x99, 0xdd, 0xff, 0x3f, 0x00, 0x00,
+ 0xe0, 0x8b, 0xff, 0x96, 0x6a, 0xb6, 0x0a, 0xa0, 0x94, 0x96, 0x64, 0xdb,
+ 0xee, 0x07, 0x00, 0x00, 0x03, 0x08, 0x20, 0x60, 0x66, 0xec, 0xee, 0xb6,
+ 0x1d, 0x00, 0x00, 0xc0, 0x7e, 0xa5, 0xf4, 0xab, 0x55, 0x0d, 0x20, 0xe7,
+ 0xd4, 0x6d, 0xdb, 0xfb, 0x07, 0x00, 0x80, 0x00, 0x00, 0x09, 0x12, 0x33,
+ 0x67, 0x77, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xfa, 0xff, 0xb7, 0x7a, 0x55,
+ 0x19, 0x90, 0x91, 0xd4, 0x64, 0xdb, 0xee, 0x07, 0x00, 0x40, 0x00, 0x81,
+ 0x04, 0x88, 0x91, 0x3b, 0xbb, 0xfd, 0x0f, 0x00, 0x00, 0xc0, 0xab, 0xbf,
+ 0xed, 0x4e, 0xbb, 0x32, 0x20, 0x94, 0x96, 0x6c, 0xff, 0xfa, 0x03, 0x00,
+ 0x30, 0x40, 0x20, 0x20, 0x64, 0xcc, 0xdc, 0xdd, 0xff, 0x07, 0x00, 0x00,
+ 0xc0, 0xeb, 0xea, 0xfd, 0xd5, 0xaa, 0x2a, 0x20, 0xd7, 0xb0, 0x6d, 0x93,
+ 0xef, 0x07, 0x00, 0x08, 0x00, 0x08, 0x01, 0x23, 0xee, 0xee, 0xee, 0xfb,
+ 0x03, 0x00, 0x00, 0xc0, 0xfe, 0xff, 0x2d, 0xdd, 0x6a, 0x49, 0xd0, 0x90,
+ 0x9a, 0x64, 0xdf, 0xea, 0x07, 0x00, 0x03, 0x80, 0x40, 0x8c, 0x98, 0x33,
+ 0xb3, 0xbb, 0xff, 0x01, 0x00, 0x00, 0xc0, 0xa5, 0x7b, 0x6d, 0xa7, 0x56,
+ 0xc5, 0xa0, 0x94, 0x94, 0x6f, 0xd3, 0xbb, 0x07, 0x80, 0x10, 0x0c, 0x12,
+ 0x40, 0xc6, 0xb9, 0xdb, 0xfb, 0xfd, 0x01, 0x00, 0x00, 0x80, 0x97, 0xee,
+ 0xdf, 0xba, 0x54, 0x1a, 0xa1, 0xe5, 0xd2, 0x64, 0x7e, 0xee, 0x07, 0x60,
+ 0x02, 0x80, 0x00, 0x31, 0x62, 0xcc, 0xdc, 0xee, 0x7f, 0x00, 0x00, 0x00,
+ 0x80, 0xff, 0xff, 0xdb, 0xaa, 0xb5, 0x8a, 0x86, 0x98, 0x96, 0x6d, 0x9b,
+ 0xea, 0x07, 0x98, 0x00, 0x22, 0x44, 0x88, 0x39, 0x77, 0x77, 0xff, 0x7f,
+ 0x00, 0x00, 0x00, 0x80, 0x7d, 0x77, 0xba, 0x7b, 0x2d, 0x55, 0x3c, 0xa6,
+ 0xb4, 0x6c, 0xf6, 0xaf, 0x07, 0x07, 0x90, 0x88, 0x20, 0x42, 0x9c, 0xbb,
+ 0xbb, 0xbb, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xbd, 0xbf, 0x55, 0x53,
+ 0xa5, 0xb2, 0xa1, 0xb4, 0xc9, 0x9f, 0xda, 0xcf, 0x28, 0x24, 0x42, 0x08,
+ 0x31, 0xe6, 0xcc, 0xdd, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xef,
+ 0xb7, 0xbd, 0xde, 0x12, 0xd1, 0xac, 0x95, 0x4d, 0xf2, 0x56, 0x9f, 0x88,
+ 0x80, 0x10, 0xc2, 0x9c, 0x73, 0x77, 0xef, 0xfe, 0x7f, 0x00, 0x00, 0x00,
+ 0x00, 0xbf, 0xfb, 0xed, 0xeb, 0x35, 0x95, 0x72, 0xa2, 0x35, 0xcd, 0xb6,
+ 0xd6, 0x2f, 0x21, 0x24, 0x04, 0x31, 0xc6, 0x98, 0x33, 0xf7, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0xd6, 0x6a, 0x7f, 0x5b, 0xab, 0x2d, 0x28, 0x23,
+ 0x65, 0xd9, 0xb6, 0x55, 0x5f, 0x88, 0x08, 0x43, 0x0c, 0x61, 0xde, 0xdd,
+ 0xfb, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x76, 0xff, 0x4d, 0xd7, 0x4d,
+ 0x4a, 0xa5, 0x29, 0x2d, 0xdb, 0xbe, 0x55, 0x1f, 0x22, 0x42, 0x28, 0xc2,
+ 0x39, 0xe7, 0xee, 0xee, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x7f,
+ 0xfb, 0xb6, 0xb6, 0x95, 0x70, 0x2e, 0xa5, 0xd9, 0x24, 0x5d, 0x5f, 0x8a,
+ 0x28, 0x88, 0x31, 0x9e, 0x39, 0x73, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
+ 0x00, 0xec, 0xb7, 0xdf, 0x6c, 0xb5, 0x65, 0x26, 0xa3, 0x39, 0x9b, 0xfc,
+ 0x85, 0x5d, 0x21, 0x04, 0x63, 0x1c, 0xe6, 0xdd, 0xbd, 0xfb, 0xff, 0xff,
+ 0x01, 0x00, 0x00, 0x00, 0xb8, 0xfa, 0xb6, 0x6f, 0x4d, 0x9a, 0x28, 0x59,
+ 0x4d, 0xd3, 0x2f, 0xf5, 0x3f, 0x8c, 0xd1, 0x18, 0xc6, 0x31, 0xf6, 0xdd,
+ 0xfe, 0xff, 0xfe, 0x01, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xef, 0xb9, 0xb6,
+ 0x25, 0xe1, 0x4d, 0x69, 0xba, 0x6c, 0xad, 0x3c, 0x41, 0x14, 0x84, 0xe9,
+ 0x9e, 0x37, 0xf7, 0xff, 0xff, 0xfb, 0x03, 0x00, 0x00, 0x00, 0x70, 0x5d,
+ 0x3d, 0x9f, 0x3d, 0x6d, 0x26, 0x52, 0x59, 0xb6, 0x6d, 0xab, 0x7f, 0x14,
+ 0x82, 0xe1, 0x39, 0xe6, 0xdd, 0xfb, 0xff, 0xbf, 0xff, 0x01, 0x00, 0x00,
+ 0x00, 0xf0, 0xf6, 0x6f, 0x77, 0xcd, 0x92, 0xd0, 0x52, 0x4b, 0xb3, 0x49,
+ 0x0b, 0x3a, 0x41, 0x61, 0x38, 0x9e, 0x73, 0xee, 0xdc, 0xff, 0xff, 0xfd,
+ 0x03, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xd7, 0x65, 0xda, 0x66, 0x63, 0x9d,
+ 0xf2, 0x36, 0x7b, 0x6a, 0x7f, 0x14, 0x18, 0x8e, 0xe7, 0xd9, 0x7b, 0xff,
+ 0xff, 0xef, 0xff, 0x03, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xdd, 0xb6,
+ 0xc9, 0x4c, 0x46, 0x9a, 0x64, 0xcb, 0x5b, 0xed, 0x06, 0xc6, 0xe3, 0x71,
+ 0xde, 0xbd, 0xff, 0xff, 0x7f, 0xff, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x7f,
+ 0x7f, 0xff, 0x59, 0x37, 0x75, 0xbb, 0x96, 0x66, 0xdb, 0x56, 0xf7, 0xe0,
+ 0xf2, 0x74, 0x9e, 0x77, 0xef, 0xfd, 0xff, 0xeb, 0xed, 0x03, 0x00, 0x00,
+ 0x00, 0xc0, 0xea, 0xdf, 0xb3, 0xdb, 0xde, 0xc6, 0x81, 0xb0, 0x6c, 0xba,
+ 0xb4, 0xf6, 0x38, 0x18, 0x3c, 0xe7, 0x9c, 0xfb, 0xff, 0x7f, 0xff, 0xff,
+ 0x07, 0x00, 0x00, 0x00, 0x80, 0xff, 0xf7, 0x6e, 0x66, 0xd9, 0x99, 0xac,
+ 0xa4, 0xcd, 0x96, 0xa5, 0xea, 0x03, 0xa7, 0xcf, 0x79, 0xef, 0xfd, 0xff,
+ 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, 0xef, 0xdf,
+ 0x6f, 0xef, 0x72, 0x65, 0xd9, 0xb6, 0xad, 0xe8, 0xc1, 0xe1, 0xf1, 0xbe,
+ 0x7b, 0xef, 0xff, 0xdf, 0x7a, 0xfb, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe,
+ 0x5f, 0xdd, 0x9d, 0xac, 0x99, 0x84, 0x29, 0xcd, 0x3c, 0x4f, 0x9d, 0x7d,
+ 0x3c, 0x9e, 0xe7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xef, 0x0f, 0x00, 0x00,
+ 0x00, 0x00, 0xfe, 0xff, 0x77, 0x7b, 0x33, 0xe7, 0x5a, 0x49, 0x9b, 0x65,
+ 0x59, 0x75, 0x07, 0x97, 0xf7, 0xbb, 0xef, 0xff, 0xff, 0xdb, 0xfe, 0xff,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf7, 0x3f, 0xe7, 0xcf, 0x9c, 0x51,
+ 0x4d, 0xb0, 0x6d, 0x4b, 0xc9, 0xd3, 0xf5, 0x79, 0xfe, 0xfb, 0xff, 0xff,
+ 0xdb, 0xda, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xef, 0xde,
+ 0xdd, 0xf3, 0x4d, 0x52, 0x36, 0xcb, 0xd2, 0x3a, 0x7e, 0x3c, 0xde, 0xe7,
+ 0xbe, 0xff, 0x7f, 0xda, 0xff, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8,
+ 0xff, 0xfb, 0xdd, 0x73, 0x8f, 0xa5, 0x9a, 0xe6, 0xd9, 0xb6, 0xe2, 0x4e,
+ 0xc7, 0xf7, 0xfd, 0xff, 0xff, 0xff, 0xf7, 0xf6, 0xff, 0x0f, 0x00, 0x00,
+ 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0xee, 0x79, 0xb2, 0xb2, 0x2c, 0x9f,
+ 0xb6, 0x54, 0xfe, 0xfb, 0x79, 0xbf, 0xff, 0xff, 0x5f, 0xda, 0xff, 0xfa,
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xf7, 0xbf, 0xe7, 0x4b,
+ 0xb4, 0x69, 0xd3, 0x2c, 0x25, 0xbd, 0xbc, 0xcf, 0xf7, 0xfd, 0xff, 0xd7,
+ 0xf6, 0xfe, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xbf, 0x9d,
+ 0xf1, 0x3e, 0x57, 0x25, 0xcb, 0xb6, 0x6d, 0xa9, 0xb5, 0xef, 0xfb, 0xff,
+ 0xff, 0xff, 0xd5, 0xda, 0xd6, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xff, 0xff, 0xfb, 0xcf, 0xf5, 0x25, 0x65, 0xd9, 0x66, 0x5b, 0x4a, 0xfa,
+ 0xf9, 0x7e, 0xff, 0xff, 0xff, 0xf6, 0xd6, 0xdf, 0xfa, 0x0f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xfe, 0xff, 0xef, 0x3e, 0xf7, 0x9f, 0x5b, 0x92, 0x6c,
+ 0xdb, 0x52, 0xe5, 0xbe, 0xdf, 0xff, 0xff, 0xbf, 0x51, 0xda, 0xfa, 0x7f,
+ 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7b, 0x9f, 0xe7,
+ 0x4c, 0xb3, 0x4d, 0xd3, 0x54, 0xd9, 0xe7, 0xfb, 0xff, 0xff, 0x5f, 0xdc,
+ 0xfa, 0xdf, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x7f,
+ 0xe7, 0xf9, 0x3a, 0xd3, 0xa6, 0xe9, 0xb6, 0xa5, 0xca, 0xf9, 0xfd, 0xff,
+ 0xff, 0x83, 0x42, 0xd2, 0xff, 0xfb, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xf0, 0xff, 0xfd, 0xbf, 0xef, 0x4f, 0xd5, 0x64, 0xdb, 0x26, 0x4d, 0x30,
+ 0x7f, 0xff, 0xff, 0xff, 0x91, 0xda, 0xdb, 0xda, 0xdf, 0x1f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbf, 0xff, 0x7d, 0xbe, 0xb5, 0x6d, 0x97,
+ 0x6d, 0x93, 0x56, 0xdf, 0xff, 0xff, 0x7f, 0x81, 0x4a, 0xda, 0x7f, 0xff,
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xef, 0xeb, 0xbb,
+ 0xa6, 0x4d, 0x73, 0xcd, 0x92, 0xaa, 0xfe, 0xff, 0xff, 0x1f, 0x01, 0x6a,
+ 0x5b, 0xfb, 0xfb, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
+ 0xfd, 0xbf, 0x5f, 0x3b, 0xdb, 0x36, 0xbb, 0x26, 0x4c, 0xf9, 0xff, 0xff,
+ 0x0f, 0xa3, 0x2a, 0xe9, 0x7f, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xee, 0xff, 0xff, 0xfe, 0xfe, 0xcc, 0x91, 0xec, 0x93, 0x6d, 0x93,
+ 0xf2, 0xff, 0xff, 0x03, 0x00, 0x6a, 0x6d, 0x6f, 0xff, 0x1f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xf7, 0x6f, 0x76, 0xb6, 0xcd,
+ 0x76, 0xc9, 0x2a, 0xe9, 0xff, 0xff, 0x00, 0x02, 0x24, 0xed, 0xf9, 0xed,
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xdf, 0xff,
+ 0xd9, 0x66, 0x9b, 0x6c, 0x93, 0x54, 0xc5, 0xff, 0x3f, 0x00, 0x01, 0x95,
+ 0xb5, 0xaf, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff,
+ 0xff, 0xff, 0xfd, 0xae, 0x7d, 0xde, 0x6d, 0xf6, 0xa1, 0x8a, 0xff, 0x0f,
+ 0x00, 0x81, 0x90, 0xb4, 0xfd, 0xfd, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xcd, 0xb2, 0xdb, 0x2c, 0xcb,
+ 0x54, 0xfe, 0x01, 0x00, 0x01, 0xd2, 0xb6, 0xb7, 0xff, 0x0f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x39, 0xdb, 0x76,
+ 0xb3, 0x4b, 0xb6, 0x0a, 0xfe, 0x00, 0x00, 0x01, 0x48, 0xda, 0xfe, 0xff,
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff,
+ 0xcf, 0xb9, 0x6d, 0xb6, 0xd9, 0xa5, 0x75, 0x1c, 0x00, 0x80, 0x80, 0x20,
+ 0xdb, 0xda, 0xbe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+ 0xff, 0xff, 0xff, 0x77, 0x96, 0xd9, 0x26, 0xb3, 0x4d, 0x82, 0x11, 0x00,
+ 0x80, 0x80, 0x24, 0x6d, 0xff, 0xf7, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xbb, 0x67, 0xdb, 0xdd, 0x36, 0xd9,
+ 0x54, 0x60, 0x00, 0xc0, 0x00, 0x92, 0x65, 0x6b, 0xff, 0x0f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x4f, 0x7d, 0x96,
+ 0xd9, 0x6c, 0x36, 0xad, 0xc2, 0x00, 0x60, 0x00, 0xc8, 0xb6, 0x6d, 0xff,
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
+ 0xff, 0xc8, 0x76, 0xbb, 0xcb, 0x64, 0x52, 0x02, 0x03, 0x10, 0x00, 0x64,
+ 0xda, 0xff, 0xfb, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xff, 0xff, 0x5f, 0xd7, 0x4d, 0x33, 0x99, 0xdd, 0x96, 0x04, 0x2c,
+ 0x1c, 0x40, 0x22, 0xdb, 0xb6, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xdf, 0xb5, 0xed, 0xe6, 0x36, 0x9b,
+ 0x6c, 0x29, 0xf0, 0x03, 0x00, 0x99, 0x6c, 0xfb, 0xfd, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x35, 0xbb,
+ 0xec, 0x76, 0x33, 0x91, 0x02, 0x00, 0x00, 0x00, 0x64, 0x67, 0xdf, 0xff,
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+ 0xbf, 0x6f, 0x9b, 0x9d, 0xc9, 0xce, 0x36, 0x49, 0x00, 0x00, 0x00, 0x93,
+ 0xb1, 0xdd, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0xff, 0x6a, 0x76, 0xbb, 0xdd, 0xd9, 0x64, 0x12, 0x01,
+ 0x00, 0x40, 0x98, 0xdd, 0x6d, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xdf, 0x66, 0x73, 0x33, 0xbb,
+ 0x9d, 0x4d, 0x00, 0x00, 0x00, 0x63, 0xe6, 0xf6, 0xff, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xed, 0xfd,
+ 0xee, 0xee, 0x36, 0x73, 0x2b, 0x04, 0x00, 0xa0, 0x38, 0x75, 0xbf, 0xff,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x7f, 0xd9, 0xec, 0xce, 0x66, 0x66, 0x66, 0x22, 0x04, 0x00, 0xc6,
+ 0x99, 0xbb, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x5e, 0xb3, 0xdb, 0xb9, 0xcd, 0xc9, 0x88, 0x89,
+ 0x00, 0x68, 0x31, 0xee, 0xdd, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xbe, 0xbb, 0x9b, 0x3f,
+ 0xbb, 0x33, 0x23, 0x04, 0x00, 0x8c, 0xf3, 0xee, 0xff, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x67,
+ 0x76, 0x77, 0xb2, 0x66, 0xce, 0x0c, 0xd1, 0xd6, 0xe3, 0x79, 0xf7, 0xff,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xf8, 0xfd, 0xef, 0xe6, 0xee, 0xce, 0x9c, 0x31, 0x16, 0x00, 0x3c,
+ 0x9e, 0xfb, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x9f, 0xdb, 0xdc, 0x9d, 0x99, 0x33, 0xc6,
+ 0xc1, 0xff, 0x8f, 0xe7, 0xbb, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf7, 0xbd, 0xbb, 0x33,
+ 0x7b, 0xee, 0x18, 0x1e, 0x50, 0xf0, 0xf9, 0xfe, 0xff, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7b,
+ 0xf7, 0x77, 0xf7, 0xe6, 0x9c, 0xe3, 0xf0, 0x4d, 0xff, 0x7c, 0xef, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc0, 0xdf, 0x76, 0x7f, 0xcf, 0x9e, 0x73, 0x8f, 0x07, 0xff, 0x0b,
+ 0xdf, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xee, 0xcd, 0xdd, 0x9d, 0x7b, 0xf7, 0x7c,
+ 0x7a, 0x00, 0xf0, 0xe7, 0xfd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0xbf, 0xdd, 0x7b,
+ 0x6b, 0x9e, 0xf3, 0xe1, 0xff, 0xff, 0x7d, 0xff, 0x7f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee,
+ 0xb7, 0xbb, 0x7b, 0xee, 0x79, 0x8f, 0x0f, 0xfa, 0x2f, 0xff, 0xf7, 0x3f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x7e, 0xff, 0x77, 0xef, 0xdd, 0x77, 0x7c, 0xfe, 0x02, 0xe8,
+ 0xcf, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xef, 0xee, 0xdd, 0xb3, 0xcf, 0xf3,
+ 0xf1, 0xff, 0xff, 0xf9, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfb, 0xff, 0xbf,
+ 0xef, 0xbe, 0xcf, 0x8f, 0xfe, 0x5f, 0xfe, 0xff, 0x0f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+ 0xbf, 0xbb, 0xf7, 0xde, 0x79, 0x3e, 0xff, 0x52, 0xd2, 0xdf, 0xff, 0x0f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xe0, 0xef, 0xef, 0xef, 0x3c, 0xef, 0xf9, 0xf8, 0xff, 0xff,
+ 0xf7, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xee, 0xdc, 0xf7, 0xfe, 0xe7,
+ 0x97, 0xfe, 0xff, 0xfe, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbf,
+ 0xef, 0xbf, 0x3e, 0xff, 0xda, 0xf6, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xfe, 0xbf, 0xf7, 0xfe, 0xf7, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xfe, 0xff, 0xde, 0xbd, 0xef, 0xfb, 0xd7, 0xff, 0xbf,
+ 0xfd, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xf7, 0x7d, 0xbf,
+ 0xff, 0xd2, 0xf6, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbf,
+ 0xef, 0xfb, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc0, 0xff, 0xef, 0xbe, 0xf7, 0xef, 0xef, 0xff, 0xff, 0xff, 0x3f, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfb, 0xdf, 0xbf, 0xff, 0xff, 0xff,
+ 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7f, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff,
+ 0xfe, 0xff, 0xfb, 0xf7, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xf0, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xfd, 0xff, 0xff, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
diff --git a/test/extended_color.c b/test/extended_color.c
new file mode 100644
index 000000000000..d588284de544
--- /dev/null
+++ b/test/extended_color.c
@@ -0,0 +1,251 @@
+/****************************************************************************
+ * Copyright (c) 2017-2018,2019 Free 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: extended_color.c,v 1.14 2019/08/24 23:09:18 tom Exp $
+ */
+
+#include <test.priv.h>
+
+#if USE_EXTENDED_COLOR
+
+#define SHOW(n) ((n) == ERR ? "ERR" : "OK")
+
+#if USE_SP_FUNCS
+static bool opt_s = FALSE;
+#define if_opt_s(a,b) (opt_s ? (a) : (b))
+#else
+#define if_opt_s(a,b) (b)
+#endif
+
+static void
+failed(const char *name)
+{
+ printw("...%s failed", name);
+ getch();
+ endwin();
+ ExitProgram(EXIT_FAILURE);
+}
+
+static void
+do_pair_content(SCREEN *sp, int pair)
+{
+ int i, f, b;
+
+ (void) sp;
+ i = if_opt_s(extended_pair_content_sp(sp, pair, &f, &b),
+ extended_pair_content(0, &f, &b));
+ if (i != OK)
+ failed("pair_content");
+ printw("pair %d contains (%d,%d)\n", pair, f, b);
+ getch();
+}
+
+static void
+do_init_pair(SCREEN *sp, int pair, int fg, int bg)
+{
+ int i;
+
+ (void) sp;
+ i = if_opt_s(init_extended_pair_sp(sp, pair, fg, bg),
+ init_extended_pair(pair, fg, bg));
+ if (i != OK)
+ failed("init_pair");
+}
+
+static void
+do_init_color(SCREEN *sp, int color, int adjust)
+{
+ int r, g, b;
+ int i;
+
+ (void) sp;
+ i = if_opt_s(extended_color_content_sp(sp, color, &r, &g, &b),
+ extended_color_content(color, &r, &g, &b));
+ if (i != OK)
+ failed("color_content");
+
+ r = (adjust + 1000 + r) % 1000;
+ g = (adjust + 1000 + g) % 1000;
+ b = (adjust + 1000 + b) % 1000;
+
+ i = if_opt_s(init_extended_color_sp(sp, color, r, g, b),
+ init_extended_color(color, r, g, b));
+ if (i != OK)
+ failed("init_color");
+}
+
+static void
+do_color_set(const char *expected, int pair)
+{
+ int i = color_set((short) pair, (void *) &pair);
+ printw("%s (%s)\n", expected, SHOW(i));
+ if (i != OK)
+ failed("color_set");
+ getch();
+}
+
+static void
+show_1_rgb(SCREEN *sp, const char *name, int color, int y, int x)
+{
+ int r, g, b;
+ int i;
+
+ (void) sp;
+ i = if_opt_s(extended_color_content_sp(sp, color, &r, &g, &b),
+ extended_color_content(color, &r, &g, &b));
+ wmove(stdscr, y, x);
+ if (i == OK) {
+ printw("%-8s %3d/%3d/%3d", name, r, g, b);
+ } else {
+ printw("%-8s %s", name, SHOW(i));
+ }
+}
+
+static void
+show_rgb(SCREEN *sp)
+{
+ int y, x;
+ getyx(stdscr, y, x);
+ show_1_rgb(sp, "RED", COLOR_RED, y + 1, x);
+ show_1_rgb(sp, "GREEN", COLOR_GREEN, y + 2, x);
+ show_1_rgb(sp, "BLUE", COLOR_BLUE, y + 3, x);
+ wmove(stdscr, y, x);
+}
+
+static void
+usage(void)
+{
+ static const char *tbl[] =
+ {
+ "Usage: extended_color",
+ "",
+ "Options:",
+ " -s use sp-funcs",
+ NULL
+ };
+ size_t n;
+ for (n = 0; n < SIZEOF(tbl); ++n) {
+ fprintf(stderr, "%s\n", tbl[n]);
+ }
+ ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+{
+ int i;
+ SCREEN *sp;
+
+ while ((i = getopt(argc, argv, "s")) != -1) {
+ switch (i) {
+#if USE_SP_FUNCS
+ case 's':
+ opt_s = TRUE;
+ break;
+#endif
+ default:
+ usage();
+ /* NOTREACHED */
+ }
+ }
+
+ slk_init(1);
+ sp = newterm(NULL, stdout, stdin);
+ cbreak();
+ noecho();
+
+ if (!has_colors()) {
+ endwin();
+ fprintf(stderr, "This demo requires a color terminal\n");
+ ExitProgram(EXIT_FAILURE);
+ }
+
+ start_color();
+
+ do_pair_content(sp, 0);
+
+ printw("Initializing pair 1 to red/black\n");
+ do_init_pair(sp, 1, COLOR_RED, COLOR_BLACK);
+ do_color_set("RED/BLACK", 1);
+
+ printw("Initializing pair 2 to white/blue\n");
+ do_init_pair(sp, 2, COLOR_WHITE, COLOR_BLUE);
+ do_color_set("WHITE/BLUE", 2);
+
+ printw("Initializing pair 3 to green/black\n");
+ do_init_pair(sp, 3, COLOR_GREEN, COLOR_BLACK);
+ do_color_set("GREEN/BLACK", 3);
+
+ printw("Resetting colors to pair 0\n");
+ do_color_set("Default Colors", 0);
+
+ printw("Resetting colors to pair 1\n");
+ do_color_set("RED/BLACK", 1);
+
+ printw("Drawing soft-key tabs with pair 2\n");
+ slk_attrset(A_BOLD); /* reverse-video is hard to see */
+ (void) if_opt_s(extended_slk_color_sp(sp, 2),
+ extended_slk_color(2));
+ for (i = 1; i <= 8; ++i) {
+ char temp[80];
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "(SLK-%d)", i);
+ slk_set(i, temp, 0);
+ }
+ slk_touch();
+ slk_noutrefresh();
+
+ i = if_opt_s(can_change_color_sp(sp),
+ can_change_color());
+ if (i) {
+ do_color_set("Default Colors", 0);
+ printw("Press any key to stop...\n");
+ nodelay(stdscr, TRUE);
+ while (getch() == ERR) {
+ show_rgb(sp);
+ do_init_color(sp, COLOR_RED, 1);
+ do_init_color(sp, COLOR_BLUE, -1);
+ napms(50);
+ }
+ printw("...done");
+ nodelay(stdscr, FALSE);
+ getch();
+ }
+
+ endwin();
+
+ ExitProgram(EXIT_SUCCESS);
+}
+
+#else
+int
+main(void)
+{
+ printf("This program requires the ncurses extended color/pair functions\n");
+ ExitProgram(EXIT_FAILURE);
+}
+#endif
diff --git a/test/filter.c b/test/filter.c
index b90012fe6b34..e9c0ee99b732 100644
--- a/test/filter.c
+++ b/test/filter.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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,15 +27,10 @@
****************************************************************************/
/*
- * Author: Thomas E. Dickey <dickey@clark.net> 1998
+ * Author: Thomas E. Dickey 1998
+ *
+ * $Id: filter.c,v 1.33 2019/08/24 23:11:01 tom Exp $
*
- * $Id: filter.c,v 1.15 2012/06/09 20:30:32 tom Exp $
- */
-#include <test.priv.h>
-
-#if HAVE_FILTER
-
-/*
* An example of the 'filter()' function in ncurses, this program prompts
* for commands and executes them (like a command shell). It illustrates
* how ncurses can be used to implement programs that are not full-screen.
@@ -46,38 +41,261 @@
* reset_shell_mode() and reset_prog_mode() functions, we could invoke endwin()
* and refresh(), but that does not work any better.
*/
+#include <test.priv.h>
+
+#if HAVE_FILTER
+
+#include <time.h>
static int
-new_command(char *buffer, int length, attr_t underline)
+show_prompt(int underline, bool clocked)
{
- int code;
+ int limit = COLS;
+
+ move(0, 0);
+ attrset(A_NORMAL);
+ clrtoeol();
+ attrset(A_BOLD);
+ addstr("Command: ");
- attron(A_BOLD);
- printw("Command: ");
+ limit -= getcurx(stdscr);
+
+ if (clocked) {
+ if (limit >= 3) {
+ time_t now = time((time_t *) 0);
+ struct tm *my = localtime(&now);
+ char buffer[80];
+ int skip, y, x;
+ int margin;
+
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) "%02d:%02d:%02d",
+ my->tm_hour,
+ my->tm_min,
+ my->tm_sec);
+
+ if (limit > 9) {
+ skip = 0;
+ } else if (limit > 6) {
+ skip = 3;
+ } else {
+ skip = 6;
+ }
+ /*
+ * Write the clock message on the right-margin so we can show the
+ * results of resizing the screen.
+ */
+ getyx(stdscr, y, x);
+ margin = (int) strlen(buffer) - skip;
+ limit -= margin;
+ move(0, COLS - margin);
+ addstr(buffer);
+ move(y, x);
+ }
+ }
attron(underline);
- code = getnstr(buffer, length);
- /*
- * If this returns anything except ERR/OK, it would be one of ncurses's
- * extensions. Fill the buffer with something harmless that the shell
- * will execute as a comment.
- */
+ return limit;
+}
+
+static int
+new_command(char *buffer, int length, int underline, bool clocked, bool polled)
+{
+ int code = OK;
+
+ if (polled) {
+ bool done = FALSE;
+ bool first = TRUE;
+ int y = 0, x = 0;
+ int n;
+ int mark = 0;
+ int used = 0;
+ const int gap = 2;
+
+ timeout(20); /* no one types 50CPS... */
+ while (!done) {
+ int limit;
+ int ch = getch();
+
+ buffer[used] = '\0';
+
+ limit = show_prompt(underline, clocked);
+ if (first) {
+ getyx(stdscr, y, x);
+ first = FALSE;
+ } else {
+ int left = 0;
+
+ /*
+ * if the screen is too narrow to show the whole buffer,
+ * shift the editing point left/right as needed.
+ */
+ move(y, x);
+ if ((used + gap) > limit) {
+ while ((mark - left + gap) > limit) {
+ left += limit / 2;
+ }
+ }
+ printw("%.*s", limit, buffer + left);
+ move(y, x + mark - left);
+ }
+
+ switch (ch) {
+ case ERR:
+ continue;
+ case '\004':
+ code = ERR;
+ done = TRUE;
+ break;
+ case KEY_ENTER:
+ case '\n':
+ done = TRUE;
+ break;
+ case KEY_BACKSPACE:
+ case '\b':
+ if (used) {
+ if (mark < used) {
+ /* getnstr does not do this */
+ if (mark > 0) {
+ --mark;
+ for (n = mark; n < used; ++n) {
+ buffer[n] = buffer[n + 1];
+ }
+ } else {
+ flash();
+ }
+ } else {
+ /* getnstr does this */
+ mark = --used;
+ buffer[used] = '\0';
+ }
+ } else {
+ flash();
+ }
+ break;
+ /*
+ * Unlike getnstr, this function can move the cursor into the
+ * middle of the buffer and insert/delete at that point.
+ */
+ case KEY_HOME:
+ mark = 0;
+ break;
+ case KEY_END:
+ mark = used;
+ break;
+ case KEY_LEFT:
+ if (mark > 0) {
+ mark--;
+ } else {
+ flash();
+ }
+ break;
+ case KEY_RIGHT:
+ if (mark < used) {
+ mark++;
+ } else {
+ flash();
+ }
+ break;
#ifdef KEY_EVENT
- if (code == KEY_EVENT)
- strcpy(buffer, "# event!");
+ case KEY_EVENT:
+ continue;
#endif
#ifdef KEY_RESIZE
- if (code == KEY_RESIZE) {
- strcpy(buffer, "# resize!");
- getch();
- }
+ case KEY_RESIZE:
+ /*
+ * Unlike getnstr, this function "knows" what the whole screen
+ * is supposed to look like, and can handle resize events.
+ */
+ continue;
#endif
+ case '\t':
+ ch = ' ';
+ /* FALLTHRU */
+ default:
+ if (ch >= KEY_MIN) {
+ flash();
+ continue;
+ }
+ if (mark < used) {
+ /* getnstr does not do this... */
+ for (n = used + 1; n > mark; --n) {
+ buffer[n] = buffer[n - 1];
+ }
+ buffer[mark] = (char) ch;
+ used++;
+ mark++;
+ } else {
+ /* getnstr does this part */
+ buffer[used] = (char) ch;
+ mark = ++used;
+ }
+ break;
+ }
+ }
+ } else {
+ show_prompt(underline, clocked);
+
+ code = getnstr(buffer, length);
+ /*
+ * If this returns anything except ERR/OK, it would be one of ncurses's
+ * extensions. Fill the buffer with something harmless that the shell
+ * will execute as a comment.
+ */
+#ifdef KEY_EVENT
+ if (code == KEY_EVENT)
+ _nc_STRCPY(buffer, "# event!", length);
+#endif
+#ifdef KEY_RESIZE
+ if (code == KEY_RESIZE) {
+ _nc_STRCPY(buffer, "# resize!", length);
+ getch();
+ }
+#endif
+ }
attroff(underline);
attroff(A_BOLD);
- printw("\n");
+ refresh();
return code;
}
+#ifdef NCURSES_VERSION
+/*
+ * Cancel xterm's alternate-screen mode (from dialog -TD)
+ */
+#define isprivate(s) ((s) != 0 && strstr(s, "\033[?") != 0)
+static void
+cancel_altscreen(void)
+{
+ if (isatty(fileno(stdout))
+ && key_mouse != 0 /* xterm and kindred */
+ && isprivate(enter_ca_mode)
+ && isprivate(exit_ca_mode)) {
+ /*
+ * initscr() or newterm() already wrote enter_ca_mode as a side effect
+ * of initializing the screen. It would be nice to not even do that,
+ * but we do not really have access to the correct copy of the
+ * terminfo description until those functions have been invoked.
+ */
+ (void) refresh();
+ (void) putp(exit_ca_mode);
+ (void) fflush(stdout);
+ /*
+ * Prevent ncurses from switching "back" to the normal screen when
+ * exiting from this program. That would move the cursor to the
+ * original location saved in xterm. Normally curses sets the cursor
+ * position to the first line after the display, but the alternate
+ * screen switching is done after that point.
+ *
+ * Cancelling the strings altogether also works around the buggy
+ * implementation of alternate-screen in rxvt, etc., which clear more
+ * of the display than they should.
+ */
+ enter_ca_mode = 0;
+ exit_ca_mode = 0;
+ }
+}
+#endif
+
static void
usage(void)
{
@@ -86,7 +304,15 @@ usage(void)
"Usage: filter [options]"
,""
,"Options:"
+#ifdef NCURSES_VERSION
+ ," -a suppress xterm alternate-screen by amending smcup/rmcup"
+#endif
+ ," -c show current time on prompt line with \"Command\""
+#if HAVE_USE_DEFAULT_COLORS
+ ," -d invoke use_default_colors"
+#endif
," -i use initscr() rather than newterm()"
+ ," -p poll for individual characters rather than using getnstr"
};
unsigned n;
for (n = 0; n < SIZEOF(msg); n++)
@@ -99,16 +325,40 @@ main(int argc, char *argv[])
{
int ch;
char buffer[80];
- attr_t underline;
+ int underline;
+#ifdef NCURSES_VERSION
+ bool a_option = FALSE;
+#endif
+ bool c_option = FALSE;
+#if HAVE_USE_DEFAULT_COLORS
+ bool d_option = FALSE;
+#endif
bool i_option = FALSE;
+ bool p_option = FALSE;
setlocale(LC_ALL, "");
- while ((ch = getopt(argc, argv, "i")) != -1) {
+ while ((ch = getopt(argc, argv, "adcip")) != -1) {
switch (ch) {
+#ifdef NCURSES_VERSION
+ case 'a':
+ a_option = TRUE;
+ break;
+#endif
+ case 'c':
+ c_option = TRUE;
+ break;
+#if HAVE_USE_DEFAULT_COLORS
+ case 'd':
+ d_option = TRUE;
+ break;
+#endif
case 'i':
i_option = TRUE;
break;
+ case 'p':
+ p_option = TRUE;
+ break;
default:
usage();
}
@@ -120,8 +370,16 @@ main(int argc, char *argv[])
if (i_option) {
initscr();
} else {
- (void) newterm((char *) 0, stdout, stdin);
+ if (newterm((char *) 0, stdout, stdin) == 0) {
+ fprintf(stderr, "cannot initialize terminal\n");
+ ExitProgram(EXIT_FAILURE);
+ }
}
+#ifdef NCURSES_VERSION
+ if (a_option) {
+ cancel_altscreen();
+ }
+#endif
cbreak();
keypad(stdscr, TRUE);
@@ -129,17 +387,20 @@ main(int argc, char *argv[])
int background = COLOR_BLACK;
start_color();
#if HAVE_USE_DEFAULT_COLORS
- if (use_default_colors() != ERR)
+ if (d_option && (use_default_colors() != ERR))
background = -1;
#endif
init_pair(1, COLOR_CYAN, (short) background);
- underline = (attr_t) COLOR_PAIR(1);
+ underline = COLOR_PAIR(1);
} else {
underline = A_UNDERLINE;
}
- while (new_command(buffer, sizeof(buffer) - 1, underline) != ERR
- && strlen(buffer) != 0) {
+ for (;;) {
+ int code = new_command(buffer, sizeof(buffer) - 1,
+ underline, c_option, p_option);
+ if (code == ERR || *buffer == '\0')
+ break;
reset_shell_mode();
printf("\n");
fflush(stdout);
@@ -149,7 +410,7 @@ main(int argc, char *argv[])
erase();
refresh();
}
- printw("done");
+ clear();
refresh();
endwin();
ExitProgram(EXIT_SUCCESS);
diff --git a/test/firework.c b/test/firework.c
index 27d8fdfa8668..b7c560b41cc1 100644
--- a/test/firework.c
+++ b/test/firework.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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: firework.c,v 1.29 2013/04/27 19:46:53 tom Exp $
+ * $Id: firework.c,v 1.36 2019/12/14 23:26:09 tom Exp $
*/
#include <test.priv.h>
@@ -37,8 +37,7 @@ static short my_bg = COLOR_BLACK;
static void
cleanup(void)
{
- curs_set(1);
- endwin();
+ stop_curses();
}
static void
@@ -94,14 +93,14 @@ explode(int row, int col)
showit();
init_pair(1, get_colour(&bold), my_bg);
- (void) attrset((chtype) COLOR_PAIR(1) | bold);
+ (void) attrset(AttrArg(COLOR_PAIR(1), bold));
MvPrintw(row - 1, col - 1, " - ");
MvPrintw(row + 0, col - 1, "-+-");
MvPrintw(row + 1, col - 1, " - ");
showit();
init_pair(1, get_colour(&bold), my_bg);
- (void) attrset((chtype) COLOR_PAIR(1) | bold);
+ (void) attrset(AttrArg(COLOR_PAIR(1), bold));
MvPrintw(row - 2, col - 2, " --- ");
MvPrintw(row - 1, col - 2, "-+++-");
MvPrintw(row + 0, col - 2, "-+#+-");
@@ -110,7 +109,7 @@ explode(int row, int col)
showit();
init_pair(1, get_colour(&bold), my_bg);
- (void) attrset((chtype) COLOR_PAIR(1) | bold);
+ (void) attrset(AttrArg(COLOR_PAIR(1), bold));
MvPrintw(row - 2, col - 2, " +++ ");
MvPrintw(row - 1, col - 2, "++#++");
MvPrintw(row + 0, col - 2, "+# #+");
@@ -119,7 +118,7 @@ explode(int row, int col)
showit();
init_pair(1, get_colour(&bold), my_bg);
- (void) attrset((chtype) COLOR_PAIR(1) | bold);
+ (void) attrset(AttrArg(COLOR_PAIR(1), bold));
MvPrintw(row - 2, col - 2, " # ");
MvPrintw(row - 1, col - 2, "## ##");
MvPrintw(row + 0, col - 2, "# #");
@@ -128,7 +127,7 @@ explode(int row, int col)
showit();
init_pair(1, get_colour(&bold), my_bg);
- (void) attrset((chtype) COLOR_PAIR(1) | bold);
+ (void) attrset(AttrArg(COLOR_PAIR(1), bold));
MvPrintw(row - 2, col - 2, " # # ");
MvPrintw(row - 1, col - 2, "# #");
MvPrintw(row + 0, col - 2, " ");
@@ -137,17 +136,54 @@ explode(int row, int col)
showit();
}
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: firework [options]"
+ ,""
+ ,"Options:"
+#if HAVE_USE_DEFAULT_COLORS
+ ," -d invoke use_default_colors, repeat to use in init_pair"
+#endif
+ };
+ size_t n;
+
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+
+ ExitProgram(EXIT_FAILURE);
+}
+
int
-main(
- int argc GCC_UNUSED,
- char *argv[]GCC_UNUSED)
+main(int argc, char *argv[])
{
- int start, end, row, diff, flag = 0, direction;
+ int ch;
+ int start, end;
+ int row, diff;
+ int flag = 0;
+ int direction;
unsigned seed;
+#if HAVE_USE_DEFAULT_COLORS
+ bool d_option = FALSE;
+#endif
- CATCHALL(onsig);
+ while ((ch = getopt(argc, argv, "d")) != -1) {
+ switch (ch) {
+#if HAVE_USE_DEFAULT_COLORS
+ case 'd':
+ d_option = TRUE;
+ break;
+#endif
+ default:
+ usage();
+ }
+ }
+ if (optind < argc)
+ usage();
- initscr();
+ InitAndCatch(initscr(), onsig);
noecho();
cbreak();
keypad(stdscr, TRUE);
@@ -156,7 +192,7 @@ main(
if (has_colors()) {
start_color();
#if HAVE_USE_DEFAULT_COLORS
- if (use_default_colors() == OK)
+ if (d_option && (use_default_colors() == OK))
my_bg = -1;
#endif
}
@@ -173,8 +209,8 @@ main(
direction = (start > end) ? -1 : 1;
diff = abs(start - end);
} while (diff < 2 || diff >= LINES - 2);
- (void) attrset(A_NORMAL);
- for (row = 0; row < diff; row++) {
+ (void) attrset(AttrArg(0, A_NORMAL));
+ for (row = 1; row < diff; row++) {
MvPrintw(LINES - row, start + (row * direction),
(direction < 0) ? "\\" : "/");
if (flag++) {
diff --git a/test/firstlast.c b/test/firstlast.c
index f5328c722cfc..fb09cb27c7a7 100644
--- a/test/firstlast.c
+++ b/test/firstlast.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2017 Free 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 @@
* This test was written by Alexander V. Lukyanov to demonstrate difference
* between ncurses 4.1 and SVR4 curses
*
- * $Id: firstlast.c,v 1.7 2010/05/01 19:11:55 tom Exp $
+ * $Id: firstlast.c,v 1.8 2017/09/06 01:07:39 tom Exp $
*/
#include <test.priv.h>
@@ -40,6 +40,11 @@ fill(WINDOW *w, const char *str)
const char *s;
int x0 = -1, y0 = -1;
int x1, y1;
+ int maxx, maxy, limit;
+
+ getmaxyx(w, maxy, maxx);
+ wmove(w, 0, 0);
+ limit = maxy * maxx;
for (;;) {
for (s = str; *s; s++) {
@@ -49,6 +54,16 @@ fill(WINDOW *w, const char *str)
wmove(w, 0, 0);
return;
}
+ /* waddch() should return ERR at the lower-right corner */
+ if (--limit < 0) {
+ beep();
+ if (*str == '?')
+ return;
+ napms(500);
+ wmove(w, maxy - 1, 0);
+ str = "?";
+ limit = maxx + 1;
+ }
x0 = x1;
y0 = y1;
}
diff --git a/test/foldkeys.c b/test/foldkeys.c
index a5e25e30bb82..98e72b0450a5 100644
--- a/test/foldkeys.c
+++ b/test/foldkeys.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2006 Free Software Foundation, Inc. *
+ * Copyright (c) 2006-2018,2019 Free 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, 2006
*
- * $Id: foldkeys.c,v 1.4 2010/11/14 01:00:53 tom Exp $
+ * $Id: foldkeys.c,v 1.8 2019/08/24 23:11:01 tom Exp $
*
* Demonstrate a method for altering key definitions at runtime.
*
@@ -38,21 +38,11 @@
* merging only for the keys which are defined in the terminal description.
*/
+#define NEED_TIME_H
#include <test.priv.h>
#if defined(NCURSES_VERSION) && NCURSES_EXT_FUNCS
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-
#define MY_LOGFILE "demo_foldkeys.log"
#define MY_KEYS (KEY_MAX + 1)
@@ -63,10 +53,10 @@ static void
log_last_line(WINDOW *win)
{
FILE *fp;
- int y, x, n;
- char temp[256];
if ((fp = fopen(MY_LOGFILE, "a")) != 0) {
+ char temp[256];
+ int y, x, n;
int need = sizeof(temp) - 1;
if (need > COLS)
need = COLS;
@@ -155,6 +145,7 @@ demo_foldkeys(void)
int first, second;
char final[2];
char *value;
+ size_t need = 0;
if (info[j].state == 0
&& sscanf(info[j].value,
"\033[%d;%d%c",
@@ -162,8 +153,9 @@ demo_foldkeys(void)
&second,
final) == 3
&& *final != ';'
+ && (need = strlen(info[j].value)) != 0
&& (value = strdup(info[j].value)) != 0) {
- sprintf(value, "\033[%d%c", first, *final);
+ _nc_SPRINTF(value, _nc_SLIMIT(need) "\033[%d%c", first, *final);
for (k = 0; k < info_len; ++k) {
if (info[k].state == 0
&& !strcmp(info[k].value, value)) {
@@ -172,7 +164,7 @@ demo_foldkeys(void)
}
}
if (info[j].state == 0) {
- sprintf(value, "\033O%c", *final);
+ _nc_SPRINTF(value, _nc_SLIMIT(need) "\033O%c", *final);
for (k = 0; k < info_len; ++k) {
if (info[k].state == 0
&& !strcmp(info[k].value, value)) {
@@ -203,13 +195,16 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
{
int ch;
#if HAVE_GETTIMEOFDAY
- int secs, msecs;
- struct timeval current, previous;
+ struct timeval previous;
#endif
+ if (newterm(0, stdout, stdin) == 0) {
+ fprintf(stderr, "Cannot initialize terminal\n");
+ ExitProgram(EXIT_FAILURE);
+ }
+
unlink(MY_LOGFILE);
- newterm(0, stdout, stdin);
(void) cbreak(); /* take input chars one at a time, no wait for \n */
(void) noecho(); /* don't echo input */
@@ -228,6 +223,9 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
const char *name = keyname(escaped ? (ch - MY_KEYS) : ch);
#if HAVE_GETTIMEOFDAY
+ int secs, msecs;
+ struct timeval current;
+
gettimeofday(&current, 0);
secs = (int) (current.tv_sec - previous.tv_sec);
msecs = (int) ((current.tv_usec - previous.tv_usec) / 1000);
diff --git a/test/form_driver_w.c b/test/form_driver_w.c
index 141f517f1f8d..868ca7029122 100644
--- a/test/form_driver_w.c
+++ b/test/form_driver_w.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 2013-2014,2017 Free 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,26 +31,38 @@
****************************************************************************/
/*
- * $Id: form_driver_w.c,v 1.11 2014/02/09 22:20:27 tom Exp $
+ * $Id: form_driver_w.c,v 1.15 2017/04/15 20:41:35 tom Exp $
*
* Test form_driver_w (int, int, wchar_t), a wide char aware
* replacement of form_driver.
*/
-#include <locale.h>
-
#include <test.priv.h>
+#include <popup_msg.h>
-#if USE_WIDEC_SUPPORT && USE_LIBFORM
+#if USE_WIDEC_SUPPORT && USE_LIBFORM && (defined(NCURSES_VERSION_PATCH) && NCURSES_VERSION_PATCH >= 20131207)
#include <form.h>
int
main(void)
{
- FIELD *field[3];
+ static const char *help[] =
+ {
+ "Commands:",
+ " ^D,^Q,ESC - quit program",
+ " <Tab>,<Down> - move to next field",
+ " <BackTab>,<Up> - move to previous field",
+ 0
+ };
+
+#define NUM_FIELDS 3
+#define MyRow(n) (4 + (n) * 2)
+#define MyCol(n) 10
+ FIELD *field[NUM_FIELDS + 1];
FORM *my_form;
bool done = FALSE;
+ int n;
setlocale(LC_ALL, "");
@@ -61,32 +73,34 @@ main(void)
keypad(stdscr, TRUE);
/* Initialize the fields */
- field[0] = new_field(1, 10, 4, 18, 0, 0);
- field[1] = new_field(1, 10, 6, 18, 0, 0);
- field[2] = NULL;
-
- /* Set field options */
- set_field_back(field[0], A_UNDERLINE); /* Print a line for the option */
- field_opts_off(field[0], O_AUTOSKIP); /* Don't go to next field when this */
- /* Field is filled up */
- set_field_back(field[1], A_UNDERLINE);
- field_opts_off(field[1], O_AUTOSKIP);
+ for (n = 0; n < NUM_FIELDS; ++n) {
+ field[n] = new_field(1, 10, MyRow(n), 18, 0, 0);
+ set_field_back(field[n], A_UNDERLINE);
+ /* Print a line for the option */
+ field_opts_off(field[n], O_AUTOSKIP);
+ /* Don't go to next field when this is filled */
+ }
+ field[n] = NULL;
/* Create the form and post it */
my_form = new_form(field);
post_form(my_form);
refresh();
- mvprintw(4, 10, "Value 1:");
- mvprintw(6, 10, "Value 2:");
- refresh();
+ for (n = 0; n < NUM_FIELDS; ++n) {
+ mvprintw(MyRow(n), MyCol(n), "Value %d:", n + 1);
+ }
/* Loop through to get user requests */
while (!done) {
wint_t ch;
int ret = get_wch(&ch);
- mvprintw(8, 10, "Got %d (%#x), type: %s", (int) ch, (int) ch,
+ mvprintw(MyRow(NUM_FIELDS),
+ MyCol(NUM_FIELDS),
+ "Got %d (%#x), type: %s",
+ (int) ch,
+ (int) ch,
(ret == KEY_CODE_YES)
? "KEY_CODE_YES"
: ((ret == OK)
@@ -106,6 +120,7 @@ main(void)
/* Leaves nicely at the last character */
form_driver_w(my_form, KEY_CODE_YES, REQ_END_LINE);
break;
+ case KEY_BTAB:
case KEY_UP:
/* Go to previous field */
form_driver_w(my_form, KEY_CODE_YES, REQ_PREV_FIELD);
@@ -122,8 +137,15 @@ main(void)
case ESCAPE:
done = TRUE;
break;
+ case '\t':
+ form_driver_w(my_form, KEY_CODE_YES, REQ_NEXT_FIELD);
+ form_driver_w(my_form, KEY_CODE_YES, REQ_END_LINE);
+ break;
+ case HELP_KEY_1:
+ popup_msg(form_win(my_form), help);
+ break;
default:
- form_driver_w(my_form, OK, ch);
+ form_driver_w(my_form, OK, (wchar_t) ch);
break;
}
break;
@@ -133,8 +155,9 @@ main(void)
/* Un post form and free the memory */
unpost_form(my_form);
free_form(my_form);
- free_field(field[0]);
- free_field(field[1]);
+ for (n = 0; n < NUM_FIELDS; ++n) {
+ free_field(field[n]);
+ }
endwin();
ExitProgram(EXIT_SUCCESS);
diff --git a/test/gdc.6 b/test/gdc.6
index ed3a4f103ff1..a8d57a9cd991 100644
--- a/test/gdc.6
+++ b/test/gdc.6
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2003,2006 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2006,2017 Free 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,16 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: gdc.6,v 1.3 2006/04/22 23:02:15 tom Exp $
+.\" $Id: gdc.6,v 1.4 2017/09/09 20:04:09 tom Exp $
.TH GDC 6
.SH NAME
gdc \- grand digital clock (curses)
.SH SYNOPSIS
-.B gdc
-[-n] [
-[-s] [
-.I n
-]
+.B gdc \fP[\fIoptions\fP] [\fIn\fP]
.SH DESCRIPTION
.I Gdc
runs a digital clock made of reverse-video blanks on a terminal screen.
@@ -44,14 +40,20 @@ You can make the clock stop, pause or resume by pressing a ``q'',
``s'' or space, respectively.
.SH OPTIONS
.TP
-.B -n
+.B \-d
+use terminal's default colors for the background.
+.TP
+.B \-n
redirects input to /dev/null, making it ignore the stop/pause commands.
You can still stop it by pressing the interrupt key.
.TP
-.B -s
+.B \-s
makes digits scroll as they change.
When running on a fast display, the program breaks up the scrolling into
subsecond repaints, making the operation appear smooth.
+.TP
+.B \-t \fIhh:mm:ss\fP
+specify starting time (default is ``now'').
.PP
With an optional numeric argument
.I num
@@ -61,4 +63,5 @@ seconds.
Normally it runs "forever" (counting down from 2 billion seconds).
.SH AUTHOR
Amos Shapir, modified for curses by John Lupien.
+.br
Improvements for ncurses by Thomas Dickey.
diff --git a/test/gdc.c b/test/gdc.c
index a2263245d95e..6a6603d095fd 100644
--- a/test/gdc.c
+++ b/test/gdc.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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 @@
* modified 10-18-89 for curses (jrl)
* 10-18-89 added signal handling
*
- * $Id: gdc.c,v 1.40 2014/02/15 17:34:36 tom Exp $
+ * $Id: gdc.c,v 1.53 2019/12/14 23:25:29 tom Exp $
*/
#include <test.priv.h>
@@ -66,7 +66,7 @@ sighndl(int signo)
signal(signo, sighndl);
sigtermed = signo;
if (redirected) {
- endwin();
+ stop_curses();
ExitProgram(EXIT_FAILURE);
}
}
@@ -76,7 +76,7 @@ check_term(void)
{
if (sigtermed) {
(void) standend();
- endwin();
+ stop_curses();
fprintf(stderr, "gdc terminated by signal %d\n", sigtermed);
ExitProgram(EXIT_FAILURE);
}
@@ -86,10 +86,9 @@ static void
drawbox(bool scrolling)
{
chtype bottom[XLENGTH + 1];
- int n;
if (hascolor)
- (void) attrset((attr_t) COLOR_PAIR(PAIR_FRAMES));
+ (void) attrset(AttrArg(COLOR_PAIR(PAIR_FRAMES), 0));
MvAddCh(YBASE - 1, XBASE - 1, ACS_ULCORNER);
hline(ACS_HLINE, XLENGTH);
@@ -97,6 +96,7 @@ drawbox(bool scrolling)
MvAddCh(YBASE + YDEPTH, XBASE - 1, ACS_LLCORNER);
if ((mvinchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH)) != ERR) {
+ int n;
for (n = 0; n < XLENGTH; n++) {
if (!scrolling)
bottom[n] &= ~A_COLOR;
@@ -113,7 +113,7 @@ drawbox(bool scrolling)
vline(ACS_VLINE, YDEPTH);
if (hascolor)
- (void) attrset((attr_t) COLOR_PAIR(PAIR_OTHERS));
+ (void) attrset(AttrArg(COLOR_PAIR(PAIR_OTHERS), 0));
}
static void
@@ -121,13 +121,13 @@ standt(int on)
{
if (on) {
if (hascolor) {
- attron((attr_t) COLOR_PAIR(PAIR_DIGITS));
+ attron(COLOR_PAIR(PAIR_DIGITS));
} else {
attron(A_STANDOUT);
}
} else {
if (hascolor) {
- attron((attr_t) COLOR_PAIR(PAIR_OTHERS));
+ attron(COLOR_PAIR(PAIR_OTHERS));
} else {
attroff(A_STANDOUT);
}
@@ -156,8 +156,11 @@ usage(void)
"Usage: gdc [options] [count]"
,""
,"Options:"
- ," -n redirect input to /dev/null"
- ," -s scroll each number into place, rather than flipping"
+#if HAVE_USE_DEFAULT_COLORS
+ ," -d invoke use_default_colors"
+#endif
+ ," -n redirect input to /dev/null"
+ ," -s scroll each number into place, rather than flipping"
," -t hh:mm:ss specify starting time (default is ``now'')"
,""
,"If you specify a count, gdc runs for that number of seconds"
@@ -218,13 +221,19 @@ main(int argc, char *argv[])
bool smooth = FALSE;
bool stages = FALSE;
time_t starts = 0;
+#if HAVE_USE_DEFAULT_COLORS
+ bool d_option = FALSE;
+#endif
setlocale(LC_ALL, "");
- CATCHALL(sighndl);
-
- while ((k = getopt(argc, argv, "nst:")) != -1) {
+ while ((k = getopt(argc, argv, "dnst:")) != -1) {
switch (k) {
+#if HAVE_USE_DEFAULT_COLORS
+ case 'd':
+ d_option = TRUE;
+ break;
+#endif
case 'n':
ifp = fopen("/dev/null", "r");
redirected = TRUE;
@@ -242,21 +251,24 @@ main(int argc, char *argv[])
if (optind < argc) {
count = atoi(argv[optind++]);
assert(count >= 0);
+ if (optind < argc)
+ usage();
}
- if (optind < argc)
- usage();
- if (redirected) {
- char *name = getenv("TERM");
- if (name == 0
- || newterm(name, ofp, ifp) == 0) {
- fprintf(stderr, "cannot open terminal\n");
- ExitProgram(EXIT_FAILURE);
+ InitAndCatch({
+ if (redirected) {
+ char *name = getenv("TERM");
+ if (name == 0
+ || newterm(name, ofp, ifp) == 0) {
+ fprintf(stderr, "cannot open terminal\n");
+ ExitProgram(EXIT_FAILURE);
+ }
+ } else {
+ initscr();
}
-
- } else {
- initscr();
}
+ ,sighndl);
+
cbreak();
noecho();
nodelay(stdscr, 1);
@@ -268,13 +280,13 @@ main(int argc, char *argv[])
short bg = COLOR_BLACK;
start_color();
#if HAVE_USE_DEFAULT_COLORS
- if (use_default_colors() == OK)
+ if (d_option && (use_default_colors() == OK))
bg = -1;
#endif
init_pair(PAIR_DIGITS, COLOR_BLACK, COLOR_RED);
init_pair(PAIR_OTHERS, COLOR_RED, bg);
init_pair(PAIR_FRAMES, COLOR_WHITE, bg);
- (void) attrset((attr_t) COLOR_PAIR(PAIR_OTHERS));
+ (void) attrset(AttrArg(COLOR_PAIR(PAIR_OTHERS), 0));
}
restart:
@@ -379,8 +391,12 @@ main(int argc, char *argv[])
}
/* this depends on the detailed format of ctime(3) */
- (void) strncpy(buf, ctime(&now), (size_t) 30);
- (void) strcpy(buf + 10, buf + 19);
+ _nc_STRNCPY(buf, ctime(&now), (size_t) 30);
+ {
+ char *d2 = buf + 10;
+ char *s2 = buf + 19;
+ while ((*d2++ = *s2++) != '\0') ;
+ }
MvAddStr(16, 30, buf);
move(6, 0);
@@ -431,6 +447,6 @@ main(int argc, char *argv[])
}
} while (--count);
(void) standend();
- endwin();
+ stop_curses();
ExitProgram(EXIT_SUCCESS);
}
diff --git a/test/hanoi.c b/test/hanoi.c
index 2262a5203bd0..16b826fc7b7d 100644
--- a/test/hanoi.c
+++ b/test/hanoi.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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 @@
*
* Date: 05.Nov.90
*
- * $Id: hanoi.c,v 1.35 2013/09/28 22:02:17 tom Exp $
+ * $Id: hanoi.c,v 1.40 2019/12/14 23:26:09 tom Exp $
*/
#include <test.priv.h>
@@ -89,104 +89,6 @@ static int NTiles = 0;
static int NMoves = 0;
static bool AutoFlag = FALSE;
-static void InitTiles(void);
-static void DisplayTiles(void);
-static void MakeMove(int From, int To);
-static void AutoMove(int From, int To, int Num);
-static void Usage(void);
-static int Solved(int NumTiles);
-static int GetMove(int *From, int *To);
-static int InvalidMove(int From, int To);
-
-int
-main(int argc, char **argv)
-{
- int FromCol, ToCol;
-
- setlocale(LC_ALL, "");
-
- switch (argc) {
- case 1:
- NTiles = DEFAULTTILES;
- break;
- case 2:
- NTiles = atoi(argv[1]);
- if (NTiles > MAXTILES || NTiles < MINTILES) {
- fprintf(stderr, "Range %d to %d\n", MINTILES, MAXTILES);
- ExitProgram(EXIT_FAILURE);
- }
- break;
- case 3:
- if (strcmp(argv[2], "a")) {
- Usage();
- ExitProgram(EXIT_FAILURE);
- }
- NTiles = atoi(argv[1]);
- if (NTiles > MAXTILES || NTiles < MINTILES) {
- fprintf(stderr, "Range %d to %d\n", MINTILES, MAXTILES);
- ExitProgram(EXIT_FAILURE);
- }
- AutoFlag = TRUE;
- break;
- default:
- Usage();
- ExitProgram(EXIT_FAILURE);
- }
- initscr();
- if (has_colors()) {
- int i;
- short bg = COLOR_BLACK;
- start_color();
-#if HAVE_USE_DEFAULT_COLORS
- if (use_default_colors() == OK)
- bg = -1;
-#endif
- for (i = 0; i < 9; i++)
- init_pair((short) (i + 1), bg, TileColour[i]);
- }
- cbreak();
- if (LINES < 24) {
- endwin();
- fprintf(stderr, "Min screen length 24 lines\n");
- ExitProgram(EXIT_FAILURE);
- }
- if (AutoFlag) {
- curs_set(0);
- leaveok(stdscr, TRUE); /* Attempt to remove cursor */
- }
- InitTiles();
- DisplayTiles();
- if (AutoFlag) {
- do {
- noecho();
- AutoMove(0, 2, NTiles);
- } while (!Solved(NTiles));
- sleep(2);
- } else {
- echo();
- for (;;) {
- if (GetMove(&FromCol, &ToCol))
- break;
- if (InvalidMove(FromCol, ToCol)) {
- MvAddStr(STATUSLINE, 0, "Invalid Move !!");
- refresh();
- beep();
- continue;
- }
- MakeMove(FromCol, ToCol);
- if (Solved(NTiles)) {
- MvPrintw(STATUSLINE, 0,
- "Well Done !! You did it in %d moves", NMoves);
- refresh();
- sleep(5);
- break;
- }
- }
- }
- endwin();
- ExitProgram(EXIT_SUCCESS);
-}
-
static int
InvalidMove(int From, int To)
{
@@ -254,7 +156,7 @@ DisplayTiles(void)
memset(TileBuf, ' ', len);
TileBuf[len] = '\0';
if (has_colors())
- (void) attrset((attr_t) COLOR_PAIR(LENTOIND(len)));
+ (void) attrset(AttrArg(COLOR_PAIR(LENTOIND(len)), 0));
else
(void) attrset(A_REVERSE);
MvAddStr(BASELINE - (SlotNo + 1),
@@ -329,9 +231,129 @@ Solved(int NumTiles)
}
static void
-Usage(void)
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: hanoi [options] [[<No Of Tiles>] [a]]"
+ ,""
+ ,"Options:"
+#if HAVE_USE_DEFAULT_COLORS
+ ," -d invoke use_default_colors"
+#endif
+ ," -n NUM set number of tiles (positional param is deprecated)"
+ ," -X solve automatically (positional \"a\" is deprecated)"
+ };
+ size_t n;
+
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+
+ ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc, char **argv)
{
- fprintf(stderr, "Usage: hanoi [<No Of Tiles>] [a]\n");
- fprintf(stderr,
- "The 'a' option causes the tower to be solved automatically\n");
+ int ch, FromCol, ToCol;
+
+#if HAVE_USE_DEFAULT_COLORS
+ bool d_option = FALSE;
+#endif
+
+ NTiles = DEFAULTTILES;
+ while ((ch = getopt(argc, argv, "dn:X")) != -1) {
+ switch (ch) {
+#if HAVE_USE_DEFAULT_COLORS
+ case 'd':
+ d_option = TRUE;
+ break;
+#endif
+ case 'n':
+ NTiles = atoi(optarg);
+ break;
+ case 'X':
+ AutoFlag = TRUE;
+ break;
+ default:
+ usage();
+ /* NOTREACHED */
+ }
+ }
+ setlocale(LC_ALL, "");
+
+ switch (ch = (argc - optind)) {
+ case 2:
+ if (strcmp(argv[optind + 1], "a")) {
+ usage();
+ }
+ AutoFlag = TRUE;
+ /* FALLTHRU */
+ case 1:
+ NTiles = atoi(argv[optind]);
+ /* FALLTHRU */
+ case 0:
+ break;
+ default:
+ usage();
+ }
+
+ if (NTiles > MAXTILES || NTiles < MINTILES) {
+ fprintf(stderr, "Range %d to %d\n", MINTILES, MAXTILES);
+ usage();
+ }
+
+ initscr();
+ if (has_colors()) {
+ int i;
+ short bg = COLOR_BLACK;
+ start_color();
+#if HAVE_USE_DEFAULT_COLORS
+ if (d_option && (use_default_colors() == OK))
+ bg = -1;
+#endif
+ for (i = 0; i < 9; i++)
+ init_pair((short) (i + 1), bg, TileColour[i]);
+ }
+ cbreak();
+ if (LINES < 24) {
+ endwin();
+ fprintf(stderr, "Min screen length 24 lines\n");
+ ExitProgram(EXIT_FAILURE);
+ }
+ if (AutoFlag) {
+ curs_set(0);
+ leaveok(stdscr, TRUE); /* Attempt to remove cursor */
+ }
+ InitTiles();
+ DisplayTiles();
+ if (AutoFlag) {
+ do {
+ noecho();
+ AutoMove(0, 2, NTiles);
+ } while (!Solved(NTiles));
+ sleep(2);
+ } else {
+ echo();
+ for (;;) {
+ if (GetMove(&FromCol, &ToCol))
+ break;
+ if (InvalidMove(FromCol, ToCol)) {
+ MvAddStr(STATUSLINE, 0, "Invalid Move !!");
+ refresh();
+ beep();
+ continue;
+ }
+ MakeMove(FromCol, ToCol);
+ if (Solved(NTiles)) {
+ MvPrintw(STATUSLINE, 0,
+ "Well Done !! You did it in %d moves", NMoves);
+ refresh();
+ sleep(5);
+ break;
+ }
+ }
+ }
+ stop_curses();
+ ExitProgram(EXIT_SUCCESS);
}
diff --git a/test/hashtest.c b/test/hashtest.c
index 849922173c8f..e11348d8aadc 100644
--- a/test/hashtest.c
+++ b/test/hashtest.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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 @@
*
* Generate timing statistics for vertical-motion optimization.
*
- * $Id: hashtest.c,v 1.32 2013/04/27 19:50:17 tom Exp $
+ * $Id: hashtest.c,v 1.35 2019/12/07 18:07:04 tom Exp $
*/
#include <test.priv.h>
@@ -82,7 +82,7 @@ genlines(int base)
move(0, 0);
for (i = 0; i < head_lines; i++)
for (j = 0; j < COLS; j++)
- addch(UChar((j % 8 == 0) ? ('A' + j / 8) : '-'));
+ AddCh(UChar((j % 8 == 0) ? ('A' + j / 8) : '-'));
move(head_lines, 0);
for (i = head_lines; i < LINES - foot_lines; i++) {
@@ -90,13 +90,13 @@ genlines(int base)
+ LO_CHAR);
int hi = (extend_corner || (i < LINES - 1)) ? COLS : COLS - 1;
for (j = 0; j < hi; j++)
- addch(c);
+ AddCh(c);
}
for (i = LINES - foot_lines; i < LINES; i++) {
move(i, 0);
for (j = 0; j < (extend_corner ? COLS : COLS - 1); j++)
- addch(UChar((j % 8 == 0) ? ('A' + j / 8) : '-'));
+ AddCh(UChar((j % 8 == 0) ? ('A' + j / 8) : '-'));
}
scrollok(stdscr, TRUE);
@@ -222,12 +222,10 @@ main(int argc, char *argv[])
test_optimize = TRUE;
}
#if USE_TRACE
- trace(TRACE_TIMES);
+ curses_trace(TRACE_TIMES);
#endif
- CATCHALL(finish); /* arrange interrupts to terminate */
-
- (void) initscr(); /* initialize the curses library */
+ InitAndCatch(initscr(), finish);
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 */
diff --git a/test/inch_wide.c b/test/inch_wide.c
index 3d31f1787fa2..6a46cd084ee4 100644
--- a/test/inch_wide.c
+++ b/test/inch_wide.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2017,2019 Free 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: inch_wide.c,v 1.7 2010/05/01 19:13:46 tom Exp $
+ * $Id: inch_wide.c,v 1.10 2019/08/24 23:11:01 tom Exp $
*/
/*
int in_wch(cchar_t *wcval);
@@ -44,6 +44,7 @@
*/
#include <test.priv.h>
+#include <popup_msg.h>
#if USE_WIDEC_SUPPORT
@@ -59,13 +60,24 @@ Quit(int ch)
static int
test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin)
{
+ static const char *help[] =
+ {
+ "Test input from screen using inch(), etc., in a moveable viewport.",
+ "",
+ "Commands:",
+ " ESC/^Q - quit",
+ " h,j,k,l (and arrow-keys) - move viewport",
+ " w - recur to new window",
+ " for next input file",
+ 0
+ };
+
WINDOW *txtbox = 0;
WINDOW *txtwin = 0;
FILE *fp;
int j;
int txt_x = 0, txt_y = 0;
int base_y;
- int limit;
cchar_t ch;
cchar_t text[MAX_COLS];
@@ -109,6 +121,8 @@ test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin)
}
while (!Quit(j = mvwgetch(txtwin, txt_y, txt_x))) {
+ int limit;
+
switch (j) {
case KEY_DOWN:
case 'j':
@@ -148,6 +162,9 @@ test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin)
wnoutrefresh(txtwin);
}
break;
+ case HELP_KEY_1:
+ popup_msg(txtwin, help);
+ break;
default:
beep();
break;
@@ -251,7 +268,7 @@ main(int argc, char *argv[])
setlocale(LC_ALL, "");
if (argc < 2) {
- fprintf(stderr, "usage: %s file\n", argv[0]);
+ fprintf(stderr, "usage: %s file1 [file2 [...]]\n", argv[0]);
return EXIT_FAILURE;
}
diff --git a/test/inchs.c b/test/inchs.c
index be3aab86f578..e9d53702f790 100644
--- a/test/inchs.c
+++ b/test/inchs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2007-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2017,2019 Free 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: inchs.c,v 1.12 2012/11/18 01:58:15 tom Exp $
+ * $Id: inchs.c,v 1.17 2019/08/24 23:11:01 tom Exp $
*
* Author: Thomas E Dickey
*/
@@ -46,6 +46,7 @@
*/
#include <test.priv.h>
+#include <popup_msg.h>
#define BASE_Y 7
#define MAX_COLS 1024
@@ -69,13 +70,23 @@ Quit(int ch)
static int
test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin)
{
+ static const char *help[] =
+ {
+ "Test input from screen using inch(), etc., in a moveable viewport.",
+ "",
+ "Commands:",
+ " ESC/^Q - quit",
+ " h,j,k,l (and arrow-keys) - move viewport",
+ " w - recur to new window",
+ " for next input file",
+ 0
+ };
WINDOW *txtbox = 0;
WINDOW *txtwin = 0;
FILE *fp;
int ch, j;
int txt_x = 0, txt_y = 0;
int base_y;
- int limit;
chtype text[MAX_COLS];
if (argv[level] == 0) {
@@ -120,6 +131,8 @@ test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin)
}
while (!Quit(j = mvwgetch(txtwin, txt_y, txt_x))) {
+ int limit;
+
switch (j) {
case KEY_DOWN:
case 'j':
@@ -159,6 +172,9 @@ test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin)
wnoutrefresh(txtwin);
}
break;
+ case HELP_KEY_1:
+ popup_msg(txtwin, help);
+ break;
default:
beep();
break;
@@ -264,7 +280,7 @@ main(int argc, char *argv[])
setlocale(LC_ALL, "");
if (argc < 2) {
- fprintf(stderr, "usage: %s file\n", argv[0]);
+ fprintf(stderr, "usage: %s file1 [file2 [...]]\n", argv[0]);
return EXIT_FAILURE;
}
diff --git a/test/ins_wide.c b/test/ins_wide.c
index a168dc112fcb..72047a20cc97 100644
--- a/test/ins_wide.c
+++ b/test/ins_wide.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2016,2017 Free 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: ins_wide.c,v 1.20 2012/12/16 00:51:02 tom Exp $
+ * $Id: ins_wide.c,v 1.24 2017/10/18 23:03:57 tom Exp $
*
* Demonstrate the wins_wstr() and wins_wch functions.
* Thomas Dickey - 2002/11/23
@@ -132,7 +132,7 @@ ColOf(wchar_t *buffer, int length, int margin)
result += 2;
break;
default:
- result += wcwidth(ch);
+ result += wcwidth((wchar_t) ch);
if (ch < 32)
++result;
break;
@@ -236,7 +236,8 @@ test_inserts(int level)
static char cmd[80];
setlocale(LC_ALL, "");
- putenv(strcpy(cmd, "TABSIZE=8"));
+ _nc_STRCPY(cmd, "TABSIZE=8", sizeof(cmd));
+ putenv(cmd);
initscr();
(void) cbreak(); /* take input chars one at a time, no wait for \n */
@@ -390,7 +391,9 @@ test_inserts(int level)
}
break;
default:
- buffer[length++] = ch;
+ if (length >= BUFSIZ - 2)
+ break;
+ buffer[length++] = (wchar_t) ch;
buffer[length] = '\0';
/* put the string in, one character at a time */
@@ -455,7 +458,7 @@ usage(void)
{
static const char *tbl[] =
{
- "Usage: inserts [options]"
+ "Usage: ins_wide [options]"
,""
,"Options:"
," -f FILE read data from given file"
diff --git a/test/insdelln.c b/test/insdelln.c
index 758f0887f2ba..95fd2bed318c 100644
--- a/test/insdelln.c
+++ b/test/insdelln.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2008-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2017,2019 Free 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,13 +26,17 @@
* authorization. *
****************************************************************************/
/*
- * $Id: insdelln.c,v 1.7 2012/11/18 00:37:58 tom Exp $
+ * $Id: insdelln.c,v 1.13 2019/08/24 23:11:01 tom Exp $
*
* test-driver for deleteln, wdeleteln, insdelln, winsdelln, insertln, winsertln
*/
#include <test.priv.h>
+#if HAVE_WINSDELLN
+
+#include <popup_msg.h>
+
#define SHOW(n) ((n) == ERR ? "ERR" : "OK")
#define COLOR_DEFAULT (-1)
@@ -66,10 +70,10 @@ color_params(unsigned state, int *pair)
};
/* *INDENT-ON* */
- static bool first = TRUE;
const char *result = 0;
if (has_colors()) {
+ static bool first = TRUE;
if (first) {
unsigned n;
@@ -217,19 +221,10 @@ show_help(WINDOW *win)
,"q quit"
,"= resets count to zero."
,"? shows this help-window"
- ,""
- ,""
+ ,0
};
- int y_max, x_max;
- int row;
-
- getmaxyx(win, y_max, x_max);
- for (row = 0; row < (int) SIZEOF(table) && row < y_max; ++row) {
- MvWPrintw(win, row, 0, "%.*s", x_max, table[row]);
- }
- while (wgetch(win) != 'q')
- beep();
+ popup_msg(win, table);
}
static void
@@ -279,8 +274,8 @@ update_status(WINDOW *win, STATUS * sp)
sp->count = 0;
show_status(win, sp);
break;
- case '?':
- do_subwindow(win, sp, show_help);
+ case HELP_KEY_1:
+ show_help(win);
break;
default:
if (isdigit(sp->ch)) {
@@ -302,7 +297,7 @@ test_winsdelln(WINDOW *win)
init_status(win, &st);
do {
- (void) wattrset(win, (int) (st.attr | (attr_t) COLOR_PAIR(st.pair)));
+ (void) wattrset(win, AttrArg(COLOR_PAIR(st.pair), st.attr));
switch (st.ch) {
case 'i':
for (n = 0; n < st.count; ++n)
@@ -343,7 +338,7 @@ test_insdelln(void)
init_status(stdscr, &st);
do {
- (void) attrset(st.attr | (attr_t) COLOR_PAIR(st.pair));
+ (void) attrset(AttrArg(COLOR_PAIR(st.pair), st.attr));
switch (st.ch) {
case 'i':
for (n = 0; n < st.count; ++n)
@@ -387,3 +382,12 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
ExitProgram(EXIT_SUCCESS);
}
+
+#else
+int
+main(void)
+{
+ printf("This program requires the curses winsdelln function\n");
+ ExitProgram(EXIT_FAILURE);
+}
+#endif
diff --git a/test/inserts.c b/test/inserts.c
index ae38fa217521..9ba373f23fbd 100644
--- a/test/inserts.c
+++ b/test/inserts.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2016,2017 Free 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: inserts.c,v 1.27 2012/12/16 00:35:27 tom Exp $
+ * $Id: inserts.c,v 1.29 2017/04/08 22:20:46 tom Exp $
*
* Demonstrate the winsstr() and winsch functions.
* Thomas Dickey - 2002/10/19
@@ -161,7 +161,8 @@ test_inserts(int level)
static char cmd[80];
setlocale(LC_ALL, "");
- putenv(strcpy(cmd, "TABSIZE=8"));
+ _nc_STRCPY(cmd, "TABSIZE=8", sizeof(cmd));
+ putenv(cmd);
initscr();
(void) cbreak(); /* take input chars one at a time, no wait for \n */
@@ -319,6 +320,8 @@ test_inserts(int level)
beep();
break;
}
+ if (length >= BUFSIZ - 2)
+ break;
buffer[length++] = (char) ch;
buffer[length] = '\0';
diff --git a/test/key_names.c b/test/key_names.c
index ba45656d50a8..074a1f0ab758 100644
--- a/test/key_names.c
+++ b/test/key_names.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2007,2008 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2014,2017 Free 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: key_names.c,v 1.4 2008/10/11 20:22:37 tom Exp $
+ * $Id: key_names.c,v 1.7 2017/12/09 21:05:01 tom Exp $
*/
#include <test.priv.h>
@@ -77,7 +77,8 @@ main(int argc, char *argv[])
endwin();
}
for (n = -1; n < KEY_MAX + 512; n++) {
- const char *result = key_name(n);
+ int check = wcwidth((wchar_t) n);
+ const char *result = check >= 0 ? key_name((wchar_t) n) : "?";
if (result != 0)
printf("%d(%5o):%s\n", n, n, result);
}
diff --git a/test/knight.c b/test/knight.c
index ae9d223441bf..dc04944acd73 100644
--- a/test/knight.c
+++ b/test/knight.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,25 +33,26 @@
* Eric S. Raymond <esr@snark.thyrsus.com> July 22 1995. Mouse support
* added September 20th 1995.
*
- * $Id: knight.c,v 1.36 2013/02/16 19:53:08 tom Exp $
+ * $Id: knight.c,v 1.46 2019/08/24 22:40:52 tom Exp $
*/
#include <test.priv.h>
/* board size */
-#define BDEPTH 8
-#define BWIDTH 8
+#define YLIMIT 8
+#define XLIMIT 8
+#define MAXMOVES (ylimit * xlimit)
/* where to start the instructions */
-#define INSTRY 2
-#define INSTRX 35
+#define INSTRY 2
+#define INSTRX 35
/* corner of board */
-#define BOARDY 2
-#define BOARDX 0
+#define BOARDY 2
+#define BOARDX 0
/* notification line */
-#define NOTIFYY 21
+#define NOTIFYY 21
/* virtual color values */
#define TRAIL_COLOR 1
@@ -65,20 +66,30 @@
#define CYINV(y) (((y) - 2) / 2)
typedef struct {
- short x, y;
-} cell;
+ int x, y;
+} HISTORY;
+
+typedef int SQUARES[YLIMIT][XLIMIT];
static WINDOW *boardwin; /* the board window */
static WINDOW *helpwin; /* the help window */
static WINDOW *msgwin; /* the message window */
-static cell history[BDEPTH * BWIDTH + 1]; /* choice history */
+
+#if HAVE_USE_DEFAULT_COLORS
+static bool d_option;
+#endif
+
static chtype minus = '-'; /* possible-move character */
static chtype oldch;
static chtype plus = '+'; /* cursor hot-spot character */
static chtype trail = '#'; /* trail character */
-static int movecount; /* count of moves so far */
-static int trialcount; /* count of trials so far */
-static short board[BDEPTH][BWIDTH]; /* the squares */
+
+static int ylimit = YLIMIT;
+static int xlimit = XLIMIT;
+static int maxmoves = (YLIMIT * XLIMIT);
+
+static int count_tries; /* count of trials so far */
+static int test_test; /* FIXME */
/* *INDENT-OFF* */
static const struct {
int y;
@@ -93,6 +104,7 @@ static const struct {
{ 1, -2 },
{ 2, -1 },
};
+#define MAX_OFFSET (unsigned)SIZEOF(offsets)
/* *INDENT-ON* */
static void
@@ -104,9 +116,12 @@ init_program(void)
initscr();
cbreak(); /* immediate char return */
noecho(); /* no immediate echo */
- boardwin = newwin(BDEPTH * 2 + 1, BWIDTH * 4 + 1, BOARDY, BOARDX);
+
+ maxmoves = MAXMOVES;
+ boardwin = newwin(ylimit * 2 + 1, xlimit * 4 + 1, BOARDY, BOARDX);
helpwin = newwin(0, 0, INSTRY, INSTRX);
msgwin = newwin(1, INSTRX - 1, NOTIFYY, 0);
+
scrollok(msgwin, TRUE);
keypad(boardwin, TRUE);
@@ -115,7 +130,7 @@ init_program(void)
start_color();
#if HAVE_USE_DEFAULT_COLORS
- if (use_default_colors() == OK)
+ if (d_option && (use_default_colors() == OK))
bg = -1;
#endif
@@ -178,7 +193,11 @@ help2(void)
(void) waddstr(helpwin, "r -- redraw screen \\|/ \\|/ \n");
(void) waddstr(helpwin, "bksp -- undo move h-+-l 4-+-6\n");
(void) waddstr(helpwin, "a -- autojump /|\\ /|\\ \n");
- (void) waddstr(helpwin, " b j n 1 2 3\n");
+ if (ylimit <= 6) {
+ (void) waddstr(helpwin, "R -- solve (slow) b j n 1 2 3\n");
+ } else {
+ (void) waddstr(helpwin, " b j n 1 2 3\n");
+ }
(void) waddstr(helpwin, "\nYou can place your knight on the selected\n");
(void) waddstr(helpwin, "square with spacebar, Enter, or the keypad\n");
@@ -202,30 +221,33 @@ show_help(bool * keyhelp)
wrefresh(helpwin);
}
-static bool
-chksqr(int r1, int c1)
+static inline bool
+isValidYX(int y, int x)
{
- if ((r1 < 0) || (r1 > BDEPTH - 1))
- return (FALSE);
- if ((c1 < 0) || (c1 > BWIDTH - 1))
- return (FALSE);
- return ((!board[r1][c1]) ? TRUE : FALSE);
+ return (y >= 0 && y < ylimit && x >= 0 && x < xlimit) ? TRUE : FALSE;
+}
+
+static inline bool
+isUnusedYX(SQUARES squares, int y, int x)
+{
+ return (isValidYX(y, x) && (!squares[y][x]) ? TRUE : FALSE);
}
static bool
-chkmoves(int rw, int col)
-/* check to see if valid moves are available */
+boardIsFilled(SQUARES squares, int y, int x)
{
unsigned n;
- for (n = 0; n < SIZEOF(offsets); n++)
- if (chksqr(rw + offsets[n].y, col + offsets[n].x))
- return (TRUE);
- return (FALSE);
+ for (n = 0; n < MAX_OFFSET; n++) {
+ if (isUnusedYX(squares, y + offsets[n].y, x + offsets[n].x)) {
+ return FALSE;
+ }
+ }
+ return TRUE;
}
static void
-dosquares(void)
+drawBoard(void)
{
int i, j;
@@ -233,7 +255,7 @@ dosquares(void)
move(BOARDY, BOARDX);
waddch(boardwin, ACS_ULCORNER);
- for (j = 0; j < 7; j++) {
+ for (j = 0; j < (ylimit - 1); j++) {
waddch(boardwin, ACS_HLINE);
waddch(boardwin, ACS_HLINE);
waddch(boardwin, ACS_HLINE);
@@ -244,10 +266,10 @@ dosquares(void)
waddch(boardwin, ACS_HLINE);
waddch(boardwin, ACS_URCORNER);
- for (i = 1; i < BDEPTH; i++) {
+ for (i = 1; i < ylimit; i++) {
move(BOARDY + i * 2 - 1, BOARDX);
waddch(boardwin, ACS_VLINE);
- for (j = 0; j < BWIDTH; j++) {
+ for (j = 0; j < xlimit; j++) {
waddch(boardwin, ' ');
waddch(boardwin, ' ');
waddch(boardwin, ' ');
@@ -255,7 +277,7 @@ dosquares(void)
}
move(BOARDY + i * 2, BOARDX);
waddch(boardwin, ACS_LTEE);
- for (j = 0; j < BWIDTH - 1; j++) {
+ for (j = 0; j < xlimit - 1; j++) {
waddch(boardwin, ACS_HLINE);
waddch(boardwin, ACS_HLINE);
waddch(boardwin, ACS_HLINE);
@@ -269,7 +291,7 @@ dosquares(void)
move(BOARDY + i * 2 - 1, BOARDX);
waddch(boardwin, ACS_VLINE);
- for (j = 0; j < BWIDTH; j++) {
+ for (j = 0; j < xlimit; j++) {
waddch(boardwin, ' ');
waddch(boardwin, ' ');
waddch(boardwin, ' ');
@@ -278,7 +300,7 @@ dosquares(void)
move(BOARDY + i * 2, BOARDX);
waddch(boardwin, ACS_LLCORNER);
- for (j = 0; j < BWIDTH - 1; j++) {
+ for (j = 0; j < xlimit - 1; j++) {
waddch(boardwin, ACS_HLINE);
waddch(boardwin, ACS_HLINE);
waddch(boardwin, ACS_HLINE);
@@ -291,37 +313,36 @@ dosquares(void)
}
static void
-mark_possibles(int prow, int pcol, chtype mark)
+mark_possibles(SQUARES squares, int y, int x, chtype mark)
{
unsigned n;
- for (n = 0; n < SIZEOF(offsets); n++) {
- if (chksqr(prow + offsets[n].y, pcol + offsets[n].x)) {
- cellmove(prow + offsets[n].y, pcol + offsets[n].x);
+ for (n = 0; n < MAX_OFFSET; n++) {
+ if (isUnusedYX(squares, y + offsets[n].y, x + offsets[n].x)) {
+ cellmove(y + offsets[n].y, x + offsets[n].x);
waddch(boardwin, mark);
}
}
}
static bool
-find_next_move(int *y, int *x)
+find_next_move(SQUARES squares, HISTORY * doneData, int doneSize, int *y, int *x)
{
- unsigned j, k;
- int found = -1;
- int first = -1;
- int next = -1;
- int oldy, oldx;
- int newy, newx;
bool result = FALSE;
- if (movecount > 1) {
- oldy = history[movecount - 1].y;
- oldx = history[movecount - 1].x;
- for (j = 0; j < SIZEOF(offsets) * 2; j++) {
- k = j % SIZEOF(offsets);
- newy = oldy + offsets[k].y;
- newx = oldx + offsets[k].x;
- if (chksqr(newy, newx)) {
+ if (doneSize > 1) {
+ unsigned j;
+ int oldy = doneData[doneSize - 1].y;
+ int oldx = doneData[doneSize - 1].x;
+ int found = -1;
+ int first = -1;
+ int next = -1;
+
+ for (j = 0; j < MAX_OFFSET * 2; j++) {
+ unsigned k = j % MAX_OFFSET;
+ int newy = oldy + offsets[k].y;
+ int newx = oldx + offsets[k].x;
+ if (isUnusedYX(squares, newy, newx)) {
if (first < 0)
first = (int) k;
if (newy == *y
@@ -345,16 +366,16 @@ find_next_move(int *y, int *x)
}
static void
-count_next_moves(int y, int x)
+count_next_moves(SQUARES squares, int count_moves, int y, int x)
{
int count = 0;
unsigned j;
- wprintw(msgwin, "\nMove %d", movecount);
- for (j = 0; j < SIZEOF(offsets); j++) {
+ wprintw(msgwin, "\nMove %d", count_moves);
+ for (j = 0; j < MAX_OFFSET; j++) {
int newy = y + offsets[j].y;
int newx = x + offsets[j].x;
- if (chksqr(newy, newx)) {
+ if (isUnusedYX(squares, newy, newx)) {
++count;
}
}
@@ -383,37 +404,38 @@ markcell(chtype tchar, int row, int column)
}
static void
-drawmove(chtype tchar, int oldy, int oldx, int row, int column)
+drawMove(SQUARES squares, int count_moves, chtype tchar, int oldy, int oldx, int
+ row, int column)
/* place the stars, update board & currents */
{
- if (movecount <= 1) {
+ if (count_moves <= 1) {
int i, j;
- for (i = 0; i < BDEPTH; i++) {
- for (j = 0; j < BWIDTH; j++) {
- if (movecount == 0) {
+ for (i = 0; i < ylimit; i++) {
+ for (j = 0; j < xlimit; j++) {
+ if (count_moves == 0) {
unmarkcell(i, j);
} else {
cellmove(i, j);
if (winch(boardwin) == minus)
- waddch(boardwin, movecount ? ' ' : minus);
+ waddch(boardwin, ' ');
}
}
}
} else {
markcell(tchar, oldy, oldx);
- mark_possibles(oldy, oldx, ' ');
+ mark_possibles(squares, oldy, oldx, ' ');
}
if (row >= 0 && column >= 0) {
markcell(trail, row, column);
- mark_possibles(row, column, minus);
- board[row][column] = TRUE;
+ mark_possibles(squares, row, column, minus);
+ squares[row][column] = TRUE;
}
- wprintw(msgwin, "\nMove %d", movecount);
- if (trialcount != movecount)
- wprintw(msgwin, " (%d tries)", trialcount);
+ wprintw(msgwin, "\nMove %d", count_moves);
+ if (count_tries != count_moves)
+ wprintw(msgwin, " (%d tries)", count_tries);
wclrtoeol(msgwin);
}
@@ -427,17 +449,16 @@ iabs(int num)
}
static bool
-evalmove(int row, int column)
-/* evaluate move */
+evaluate_move(SQUARES squares, HISTORY * doneData, int doneSize, int row, int column)
{
- if (movecount == 1)
+ if (doneSize <= 1)
return (TRUE);
- else if (board[row][column] == TRUE) {
+ else if (squares[row][column] == TRUE) {
waddstr(msgwin, "\nYou've already been there.");
return (FALSE);
} else {
- int rdif = iabs(row - history[movecount - 1].y);
- int cdif = iabs(column - history[movecount - 1].x);
+ int rdif = iabs(row - doneData[doneSize - 1].y);
+ int cdif = iabs(column - doneData[doneSize - 1].x);
if (!((rdif == 1) && (cdif == 2)) && !((rdif == 2) && (cdif == 1))) {
waddstr(msgwin, "\nThat's not a legal knight's move.");
@@ -449,15 +470,18 @@ evalmove(int row, int column)
}
static int
-completed(void)
+completed(SQUARES squares)
{
int i, j, count = 0;
- for (i = 0; i < BDEPTH; i++)
- for (j = 0; j < BWIDTH; j++)
- if (board[i][j] != 0)
+ for (i = 0; i < ylimit; i++) {
+ for (j = 0; j < xlimit; j++) {
+ if (squares[i][j] != 0) {
count += 1;
- return (count == (BWIDTH * BDEPTH) ? -1 : count);
+ }
+ }
+ }
+ return ((count == maxmoves) ? -1 : count);
}
static void
@@ -467,6 +491,103 @@ no_previous_move(void)
beep();
}
+/* Recursively try all possible moves, starting from (y,x) */
+static int
+recurBack(SQUARES squares, int y, int x, int total)
+{
+ int longest = total;
+ int best_x = x;
+ int best_y = y;
+ int result;
+
+ if (total < maxmoves) {
+ unsigned k;
+
+ for (k = 0; k < MAX_OFFSET; k++) {
+ int try_x = x + offsets[k].x;
+ int try_y = y + offsets[k].y;
+ if (isUnusedYX(squares, try_y, try_x)) {
+ ++test_test;
+ squares[try_y][try_x] = total + 1;
+ result = recurBack(squares, try_y, try_x, total + 1);
+ if (result > longest) {
+ longest = result;
+ best_x = try_x;
+ best_y = try_y;
+ }
+ if (result >= maxmoves)
+ break;
+ squares[try_y][try_x] = 0; /* allow retry... */
+ }
+ }
+ }
+
+ result = total;
+ if (longest > total) {
+ result = longest;
+ squares[best_y][best_x] = total + 1;
+ (void) recurBack(squares, best_y, best_x, total + 1);
+ if (result < maxmoves)
+ squares[best_y][best_x] = 0;
+ }
+
+ return result;
+}
+
+/*
+ * Solve the Knight Tour problem using backtracking, returning the length of
+ * the resulting solution. If this is invoked from a point where the remaining
+ * choices cannot complete the tour, the result will fall short.
+ */
+static int
+useBacktracking(SQUARES result, HISTORY * doneData, int doneSize)
+{
+ int y = 0, x = 0, n;
+ SQUARES squares;
+ int total;
+ int actual = doneSize - 1;
+
+ memset(squares, 0, sizeof(squares));
+ for (n = 1; n <= actual; ++n) {
+ y = doneData[n].y;
+ x = doneData[n].x;
+ squares[y][x] = n;
+ }
+
+ total = recurBack(squares, y, x, actual);
+ if (total > actual) {
+ for (y = 0; y < ylimit; ++y) {
+ for (x = 0; x < xlimit; ++x) {
+ result[y][x] = squares[y][x];
+ if ((n = squares[y][x]) != 0) {
+ doneData[n].y = y;
+ doneData[n].x = x;
+ }
+ }
+ }
+ }
+ return total;
+}
+
+static int
+reviewHistory(HISTORY * history, int count_moves, int review, int *ny, int *nx)
+{
+ if (review < 0) {
+ beep();
+ review = 0;
+ } else if (review > count_moves - 2) {
+ beep();
+ review = count_moves - 2;
+ } else {
+ *ny = history[count_moves - review - 1].y;
+ *nx = history[count_moves - review - 1].x;
+ wprintw(msgwin, "\nReview %d:%d.", count_moves - review - 1,
+ count_moves - 1);
+ wrefresh(msgwin);
+ }
+ return review;
+}
+
static void
play(void)
/* play the game */
@@ -477,14 +598,19 @@ play(void)
int lastrow = 0;
int ny = 0, nx = 0;
int review = 0; /* review history */
+ int test_size;
int rw = 0, col = 0; /* current row and column */
do {
+ SQUARES squares;
+ HISTORY history[(YLIMIT * XLIMIT) + 1];
+ int count_moves = 0; /* count of moves so far */
+
/* clear screen and draw board */
werase(boardwin);
werase(helpwin);
werase(msgwin);
- dosquares();
+ drawBoard();
help1();
wnoutrefresh(stdscr);
wnoutrefresh(helpwin);
@@ -492,10 +618,9 @@ play(void)
wnoutrefresh(boardwin);
doupdate();
- movecount = 0;
- for (i = 0; i < BDEPTH; i++) {
- for (j = 0; j < BWIDTH; j++) {
- board[i][j] = FALSE;
+ for (i = 0; i < ylimit; i++) {
+ for (j = 0; j < xlimit; j++) {
+ squares[i][j] = FALSE;
unmarkcell(i, j);
}
}
@@ -503,8 +628,8 @@ play(void)
history[0].y = history[0].x = -1;
history[1].y = history[1].x = -1;
lastrow = lastcol = -2;
- movecount = 1;
- trialcount = 1;
+ count_moves = 1;
+ count_tries = 1;
keyhelp = FALSE;
show_help(&keyhelp);
@@ -512,7 +637,7 @@ play(void)
if (rw != lastrow || col != lastcol) {
if (lastrow >= 0 && lastcol >= 0) {
cellmove(lastrow, lastcol);
- if (board[lastrow][lastcol])
+ if (squares[lastrow][lastcol])
waddch(boardwin, trail);
else
waddch(boardwin, oldch);
@@ -534,7 +659,7 @@ play(void)
case 'k':
case '8':
case KEY_UP:
- ny = rw + BDEPTH - 1;
+ ny = rw + ylimit - 1;
nx = col;
break;
case 'j':
@@ -547,7 +672,7 @@ play(void)
case '4':
case KEY_LEFT:
ny = rw;
- nx = col + BWIDTH - 1;
+ nx = col + xlimit - 1;
break;
case 'l':
case '6':
@@ -558,19 +683,19 @@ play(void)
case 'y':
case '7':
case KEY_A1:
- ny = rw + BDEPTH - 1;
- nx = col + BWIDTH - 1;
+ ny = rw + ylimit - 1;
+ nx = col + xlimit - 1;
break;
case 'b':
case '1':
case KEY_C1:
ny = rw + 1;
- nx = col + BWIDTH - 1;
+ nx = col + xlimit - 1;
break;
case 'u':
case '9':
case KEY_A3:
- ny = rw + BDEPTH - 1;
+ ny = rw + ylimit - 1;
nx = col + 1;
break;
case 'n':
@@ -587,8 +712,8 @@ play(void)
MEVENT myevent;
getmouse(&myevent);
- if (myevent.y >= CY(0) && myevent.y <= CY(BDEPTH)
- && myevent.x >= CX(0) && myevent.x <= CX(BWIDTH)) {
+ if (myevent.y >= CY(0) && myevent.y <= CY(ylimit)
+ && myevent.x >= CX(0) && myevent.x <= CX(xlimit)) {
nx = CXINV(myevent.x);
ny = CYINV(myevent.y);
ungetch('\n');
@@ -605,8 +730,8 @@ play(void)
request_mouse_pos();
test_y = MOUSE_Y_POS + 0;
test_x = MOUSE_X_POS + 1;
- if (test_y >= CY(0) && test_y <= CY(BDEPTH)
- && test_x >= CX(0) && test_x <= CX(BWIDTH)) {
+ if (test_y >= CY(0) && test_y <= CY(ylimit)
+ && test_x >= CX(0) && test_x <= CX(xlimit)) {
ny = CYINV(test_y);
nx = CXINV(test_x);
wmove(helpwin, 0, 0);
@@ -622,18 +747,20 @@ play(void)
case '\n':
case ' ':
review = 0;
- if (evalmove(rw, col)) {
- drawmove(trail,
- history[movecount - 1].y,
- history[movecount - 1].x,
+ if (evaluate_move(squares, history, count_moves, rw, col)) {
+ drawMove(squares,
+ count_moves,
+ trail,
+ history[count_moves - 1].y,
+ history[count_moves - 1].x,
rw, col);
- history[movecount].y = (short) rw;
- history[movecount].x = (short) col;
- movecount++;
- trialcount++;
+ history[count_moves].y = (short) rw;
+ history[count_moves].x = (short) col;
+ count_moves++;
+ count_tries++;
- if (!chkmoves(rw, col)) {
- if (completed() < 0) {
+ if (boardIsFilled(squares, rw, col)) {
+ if (completed(squares) < 0) {
waddstr(msgwin, "\nYou won.");
} else {
waddstr(msgwin,
@@ -649,40 +776,40 @@ play(void)
case KEY_BACKSPACE:
case '\b':
review = 0;
- if (movecount <= 0) {
+ if (count_moves <= 0) {
no_previous_move();
- } else if (movecount <= 1) {
- ny = history[movecount].y;
- nx = history[movecount].x;
+ } else if (count_moves <= 1) {
+ ny = history[count_moves].y;
+ nx = history[count_moves].x;
if (nx < 0 || ny < 0) {
ny = (lastrow >= 0) ? lastrow : 0;
nx = (lastcol >= 0) ? lastcol : 0;
}
- movecount = 0;
- board[ny][nx] = FALSE;
+ count_moves = 0;
+ squares[ny][nx] = FALSE;
oldch = minus;
- drawmove(' ', ny, nx, -1, -1);
- movecount = 1;
- trialcount = 1;
+ drawMove(squares, count_moves, ' ', ny, nx, -1, -1);
+ count_moves = 1;
+ count_tries = 1;
no_previous_move();
} else {
- int oldy = history[movecount - 1].y;
- int oldx = history[movecount - 1].x;
+ int oldy = history[count_moves - 1].y;
+ int oldx = history[count_moves - 1].x;
- if (!board[rw][col]) {
+ if (!squares[rw][col]) {
cellmove(rw, col);
waddch(boardwin, ' ');
}
- board[oldy][oldx] = FALSE;
- --movecount;
- ny = history[movecount - 1].y;
- nx = history[movecount - 1].x;
+ squares[oldy][oldx] = FALSE;
+ --count_moves;
+ ny = history[count_moves - 1].y;
+ nx = history[count_moves - 1].x;
if (nx < 0 || ny < 0) {
ny = oldy;
nx = oldx;
}
- drawmove(' ', oldy, oldx, ny, nx);
+ drawMove(squares, count_moves, ' ', oldy, oldx, ny, nx);
/* avoid problems if we just changed the current cell */
cellmove(lastrow, lastcol);
@@ -693,32 +820,44 @@ play(void)
case 'a':
nx = col;
ny = rw;
- if (find_next_move(&ny, &nx))
- count_next_moves(ny, nx);
+ if (find_next_move(squares, history, count_moves, &ny, &nx))
+ count_next_moves(squares, count_moves, ny, nx);
else
beep();
break;
case 'F':
- if (review > 0) {
- review--;
- ny = history[movecount - review - 1].y;
- nx = history[movecount - review - 1].x;
- } else {
- beep();
- }
+ review = reviewHistory(history, count_moves, review - 1,
+ &ny, &nx);
break;
case 'B':
- if (review < movecount - 2) {
- review++;
- ny = history[movecount - review - 1].y;
- nx = history[movecount - review - 1].x;
+ review = reviewHistory(history, count_moves, review + 1,
+ &ny, &nx);
+ break;
+
+ case 'R':
+ if (ylimit <= 6) {
+ wprintw(msgwin, "\nworking...");
+ wrefresh(msgwin);
+ test_test = 0;
+ test_size = useBacktracking(squares, history, count_moves);
+ wprintw(msgwin, "\nOk %d:%d (%d tests)",
+ test_size, maxmoves, test_test);
+ review = 0;
+ while (count_moves <= test_size) {
+ markcell(trail,
+ ny = history[count_moves].y,
+ nx = history[count_moves].x);
+ count_moves++;
+ }
} else {
- beep();
+ wprintw(msgwin, "\nBoard is too large.");
}
+ wrefresh(msgwin);
break;
+#if HAVE_CURSCR
case KEY_REDO:
case '\f':
case 'r':
@@ -729,12 +868,13 @@ play(void)
wnoutrefresh(helpwin);
doupdate();
break;
+#endif
case 'q':
case 'x':
goto dropout;
- case '?':
+ case HELP_KEY_1:
show_help(&keyhelp);
break;
@@ -743,12 +883,12 @@ play(void)
break;
}
- col = nx % BWIDTH;
- rw = ny % BDEPTH;
+ col = nx % xlimit;
+ rw = ny % ylimit;
}
dropout:
- if ((count = completed()) < 0)
+ if ((count = completed(squares)) < 0)
wprintw(msgwin, "\nYou won. Care to try again? ");
else
wprintw(msgwin, "\n%d squares filled. Try again? ", count);
@@ -757,9 +897,55 @@ play(void)
(tolower(wgetch(msgwin)) == 'y');
}
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: knight [options]"
+ ,""
+ ,"Options:"
+#if HAVE_USE_DEFAULT_COLORS
+ ," -d invoke use_default_colors"
+#endif
+ ," -n NUM set board-size to NUM*NUM (default 8x8)"
+ };
+ size_t n;
+
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+
+ ExitProgram(EXIT_FAILURE);
+}
+
int
-main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+main(int argc, char *argv[])
{
+ int ch;
+
+ while ((ch = getopt(argc, argv, "dn:")) != -1) {
+ switch (ch) {
+#if HAVE_USE_DEFAULT_COLORS
+ case 'd':
+ d_option = TRUE;
+ break;
+#endif
+ case 'n':
+ ch = atoi(optarg);
+ if (ch < 3 || ch > 8) {
+ fprintf(stderr, "board size %d is outside [3..8]\n", ch);
+ usage();
+ }
+ xlimit = ylimit = ch;
+ break;
+ default:
+ usage();
+ /* NOTREACHED */
+ }
+ }
+ if (optind < argc)
+ usage();
+
init_program();
play();
@@ -767,5 +953,3 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
endwin();
ExitProgram(EXIT_SUCCESS);
}
-
-/* knight.c ends here */
diff --git a/test/linedata.h b/test/linedata.h
index 751bc6b5db27..b97f1c97bdd5 100644
--- a/test/linedata.h
+++ b/test/linedata.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2009-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2009-2012,2018 Free 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,6 +26,16 @@
* authorization. *
****************************************************************************/
+/*
+ * $Id: linedata.h,v 1.7 2018/02/03 22:51:43 tom Exp $
+ *
+ * Utility functions for reading a line of text from a file.
+ */
+#ifndef LINEDATA_H_incl
+#define LINEDATA_H_incl 1
+
+#include <test.priv.h>
+
#define isQUIT(c) ((c) == QUIT || (c) == ESCAPE)
#define key_RECUR CTRL('W')
@@ -96,3 +106,5 @@ read_linedata(WINDOW *work)
}
return result;
}
+
+#endif /* LINEDATA_H_incl */
diff --git a/test/list_keys.c b/test/list_keys.c
new file mode 100644
index 000000000000..506f2e845f4c
--- /dev/null
+++ b/test/list_keys.c
@@ -0,0 +1,511 @@
+/****************************************************************************
+ * Copyright (c) 2016-2018,2019 Free 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: list_keys.c,v 1.25 2019/08/24 23:11:01 tom Exp $
+ *
+ * Author: Thomas E Dickey
+ *
+ * List function keys for one or more terminals.
+ */
+
+#define USE_TINFO
+#include <test.priv.h>
+
+#if NCURSES_XNAMES
+#if HAVE_TERM_ENTRY_H
+#include <term_entry.h>
+#else
+#undef NCURSES_XNAMES
+#define NCURSES_XNAMES 0
+#endif
+#endif
+
+#if HAVE_TIGETSTR
+#if defined(HAVE_CURSES_DATA_BOOLNAMES) || defined(DECL_CURSES_DATA_BOOLNAMES)
+
+static bool f_opt = FALSE;
+static bool m_opt = FALSE;
+static bool t_opt = FALSE;
+static bool x_opt = FALSE;
+
+typedef enum {
+ ktCursor
+ ,ktFunction
+ ,ktOther
+#if HAVE_USE_EXTENDED_NAMES
+ ,ktExtended
+#endif
+} KEYTYPE;
+
+typedef struct {
+ KEYTYPE type;
+ const char *name;
+} KEYNAMES;
+
+#define Type(n) list[n].type
+#define Name(n) list[n].name
+
+static const char *
+full_name(const char *name)
+{
+ const char *result = name;
+ int n;
+ for (n = 0; strnames[n] != 0; ++n) {
+ if (!strcmp(name, strnames[n])) {
+ result = strfnames[n];
+ break;
+ }
+ }
+ return result;
+}
+
+static int
+show_key(const char *name, bool show)
+{
+ int width = 0;
+ NCURSES_CONST char *value = tigetstr((NCURSES_CONST char *) name);
+
+ if (show && t_opt)
+ fputc('"', stdout);
+
+ if (value != 0 && value != (char *) -1) {
+ while (*value != 0) {
+ char buffer[10];
+ int ch = UChar(*value++);
+ switch (ch) {
+ case '\177':
+ _nc_STRCPY(buffer, "^?", sizeof(buffer));
+ break;
+ case '\033':
+ _nc_STRCPY(buffer, "\\E", sizeof(buffer));
+ break;
+ case '\b':
+ _nc_STRCPY(buffer, "\\b", sizeof(buffer));
+ break;
+ case '\f':
+ _nc_STRCPY(buffer, "\\f", sizeof(buffer));
+ break;
+ case '\n':
+ _nc_STRCPY(buffer, "\\n", sizeof(buffer));
+ break;
+ case '\r':
+ _nc_STRCPY(buffer, "\\r", sizeof(buffer));
+ break;
+ case ' ':
+ _nc_STRCPY(buffer, "\\s", sizeof(buffer));
+ break;
+ case '\t':
+ _nc_STRCPY(buffer, "\\t", sizeof(buffer));
+ break;
+ case '^':
+ _nc_STRCPY(buffer, "\\^", sizeof(buffer));
+ break;
+ case ':':
+ _nc_STRCPY(buffer, "\\072", sizeof(buffer));
+ break;
+ case '\\':
+ _nc_STRCPY(buffer, "\\\\", sizeof(buffer));
+ break;
+ default:
+ if (t_opt && ch == '"') {
+ _nc_STRCPY(buffer, "\"\"", sizeof(buffer));
+ } else if (isgraph(ch)) {
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
+ "%c", ch);
+ } else if (ch < 32) {
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
+ "^%c", ch + '@');
+ } else {
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
+ "\\%03o", ch);
+ }
+ break;
+ }
+ width += (int) strlen(buffer);
+ if (show)
+ fputs(buffer, stdout);
+ }
+ }
+
+ if (show && t_opt)
+ fputc('"', stdout);
+
+ return width;
+}
+
+static bool
+valid_key(const char *name, TERMINAL **terms, int count)
+{
+ bool result = FALSE;
+ if (*name == 'k') {
+ int k;
+ for (k = 0; k < count; ++k) {
+ set_curterm(terms[k]);
+ if (show_key(name, FALSE)) {
+ result = TRUE;
+ break;
+ }
+ }
+ }
+ return result;
+}
+
+static int
+compare_keys(const void *a, const void *b)
+{
+ const KEYNAMES *p = (const KEYNAMES *) a;
+ const KEYNAMES *q = (const KEYNAMES *) b;
+ int result = (int) (p->type - q->type);
+ int pn, qn;
+ if (result == 0) {
+ if (p->type == ktFunction &&
+ sscanf(p->name, "kf%d", &pn) == 1 &&
+ sscanf(q->name, "kf%d", &qn) == 1) {
+ result = (pn - qn);
+ } else {
+ result = strcmp(p->name, q->name);
+ }
+ }
+ return result;
+}
+
+static void
+draw_line(int width)
+{
+ if (!t_opt) {
+ int j;
+ for (j = 0; j < width; ++j) {
+ printf("-");
+ }
+ printf("\n");
+ }
+}
+
+static const char *
+modified_key(const char *name)
+{
+ static char result[100];
+ char buffer[sizeof(result) - 10];
+ int value;
+ char chr;
+ static const char *modifiers[][2] =
+ {
+ {"", ""},
+ {"s-", "shift-"},
+ {"a-", "alt-"},
+ {"as-", "alt-shift-"},
+ {"c-", "ctrl-"},
+ {"sc-", "ctrl-shift-"},
+ {"ac-", "alt-ctrl-"},
+ {"acs-" "alt-ctrl-shift-"},
+ };
+
+ if (strlen(name) > (sizeof(result) - 3)) {
+ *result = '\0';
+ } else if (sscanf(name, "kf%d%c", &value, &chr) == 1 &&
+ value >= 1 &&
+ value <= 63) {
+ /* map 1,2,3,4,5,6,7 to 1,2,5,... */
+ int map = ((value - 1) / 12);
+ int key = ((value - 1) % 12);
+ int bit1 = (map & 2);
+ int bit2 = (map & 4);
+ map &= ~6;
+ map |= (bit1 << 1) | (bit2 >> 1);
+ _nc_SPRINTF(result, _nc_SLIMIT(sizeof(result))
+ "%sF%d", modifiers[map][(unsigned) f_opt], 1 + key);
+ } else if (sscanf(name, "k%[A-Z]%d%c", buffer, &value, &chr) == 2 &&
+ (value > 1 &&
+ value <= 8) &&
+ (!strcmp(buffer, "UP") ||
+ !strcmp(buffer, "DN") ||
+ !strcmp(buffer, "LFT") ||
+ !strcmp(buffer, "RIT") ||
+ !strcmp(buffer, "IC") ||
+ !strcmp(buffer, "DC") ||
+ !strcmp(buffer, "HOM") ||
+ !strcmp(buffer, "END") ||
+ !strcmp(buffer, "NXT") ||
+ !strcmp(buffer, "PRV"))) {
+ _nc_SPRINTF(result, _nc_SLIMIT(sizeof(result))
+ "%sk%s", modifiers[value - 1][(unsigned) f_opt], buffer);
+ } else if (sscanf(name, "k%[A-Z]%c", buffer, &chr) == 1 &&
+ (!strcmp(buffer, "UP") ||
+ !strcmp(buffer, "DN"))) {
+ _nc_SPRINTF(result, _nc_SLIMIT(sizeof(result))
+ "%sk%s", modifiers[1][(unsigned) f_opt], buffer);
+ } else {
+ *result = '\0';
+ }
+ return result;
+}
+
+static void
+list_keys(TERMINAL **terms, int count)
+{
+ int j, k;
+ int widths0 = 0;
+ int widths1 = 0;
+ int widths2 = 0;
+ int widthsx;
+ int check;
+ size_t total = 0;
+ size_t actual = 0;
+ const char *name = f_opt ? "strfname" : "strname";
+ const char *modifier = "extended";
+ KEYNAMES *list;
+
+ for (total = 0; strnames[total]; ++total) {
+ ;
+ }
+#if NCURSES_XNAMES
+ if (x_opt) {
+ for (k = 0; k < count; ++k) {
+ TERMTYPE *term;
+ set_curterm(terms[k]);
+ term = (TERMTYPE *) cur_term;
+ total += (size_t) (NUM_STRINGS(term) - STRCOUNT);
+ }
+ }
+#endif
+ list = typeCalloc(KEYNAMES, total + 1);
+ for (j = 0; strnames[j]; ++j) {
+ Type(j) = ktOther;
+ if (sscanf(strnames[j], "kf%d", &k) == 1) {
+ Type(j) = ktFunction;
+ } else if (!(strncmp) (strnames[j], "kcu", 3)) {
+ Type(j) = ktCursor;
+ }
+ Name(j) = strnames[j];
+ }
+#if NCURSES_XNAMES
+ if (x_opt) {
+ int m, n;
+
+ for (k = 0; k < count; ++k) {
+ TERMTYPE *term;
+
+ set_curterm(terms[k]);
+ term = (TERMTYPE *) cur_term;
+ for (n = STRCOUNT; n < NUM_STRINGS(term); ++n) {
+ bool found = FALSE;
+ const char *estr = ExtStrname(term, (int) n, strnames);
+ for (m = STRCOUNT; m < j; ++m) {
+ if (!strcmp(estr, Name(m))) {
+ found = TRUE;
+ break;
+ }
+ }
+ if (!found) {
+ Type(j) = ktExtended;
+ Name(j++) = estr;
+ }
+ }
+ }
+ }
+#endif
+ actual = (size_t) j;
+ qsort(list, actual, sizeof(KEYNAMES), compare_keys);
+
+ widths0 = (int) strlen(name);
+ if (m_opt)
+ widths1 = (int) strlen(modifier);
+
+ for (k = 0; k < count; ++k) {
+ set_curterm(terms[k]);
+ check = (int) strlen(termname());
+ if (widths2 < check)
+ widths2 = check;
+ }
+ for (j = 0; Name(j) != 0; ++j) {
+ if (valid_key(Name(j), terms, count)) {
+ const char *label = f_opt ? full_name(Name(j)) : Name(j);
+ check = (int) strlen(label);
+ if (widths0 < check)
+ widths0 = check;
+ for (k = 0; k < count; ++k) {
+ set_curterm(terms[k]);
+ check = show_key(Name(j), FALSE) + 1;
+ if (widths2 < check)
+ widths2 = check;
+ if (m_opt) {
+ check = (int) strlen(modified_key(Name(j)));
+ if (widths1 < check)
+ widths1 = check;
+ }
+ }
+ }
+ }
+
+ if (t_opt) {
+ printf("\"%s\"", name);
+ if (m_opt)
+ printf(",\"%s\"", modifier);
+ } else {
+ printf("%-*s", widths0, name);
+ if (m_opt)
+ printf(" %-*s", widths1, modifier);
+ }
+ for (k = 0; k < count; ++k) {
+ set_curterm(terms[k]);
+ if (t_opt) {
+ printf(",\"%s\"", termname());
+ } else if (k + 1 >= count) {
+ printf(" %s", termname());
+ } else {
+ printf(" %-*s", widths2, termname());
+ }
+ }
+ printf("\n");
+
+ widthsx = widths0 + ((count + 1) * widths2);
+
+ for (j = 0; Name(j) != 0; ++j) {
+ if (j == 0 || (Type(j) != Type(j - 1)))
+ draw_line(widthsx);
+ if (valid_key(Name(j), terms, count)) {
+ const char *label = f_opt ? full_name(Name(j)) : Name(j);
+ if (t_opt) {
+ printf("\"%s\"", label);
+ if (m_opt)
+ printf(",\"%s\"", modified_key(Name(j)));
+ } else {
+ printf("%-*s", widths0, label);
+ if (m_opt)
+ printf(" %-*s", widths1, modified_key(Name(j)));
+ }
+ for (k = 0; k < count; ++k) {
+ printf(t_opt ? "," : " ");
+ set_curterm(terms[k]);
+ check = show_key(Name(j), TRUE);
+ if (!t_opt) {
+ if (k + 1 < count) {
+ printf("%*s", widths2 - check, " ");
+ }
+ }
+ }
+ printf("\n");
+ }
+ }
+ free(list);
+}
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: list_keys [options] [terminal [terminal2 [...]]]",
+ "",
+ "Print capabilities for terminal special keys.",
+ "",
+ "Options:",
+ " -f print full names",
+ " -m print modifier-column for shift/control keys",
+ " -t print result as CSV table",
+#ifdef NCURSES_VERSION
+ " -x print extended capabilities",
+#endif
+ };
+ unsigned n;
+ for (n = 0; n < SIZEOF(msg); ++n) {
+ fprintf(stderr, "%s\n", msg[n]);
+ }
+ ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc, char *argv[])
+{
+ int n;
+ TERMINAL **terms = typeCalloc(TERMINAL *, argc + 1);
+
+ while ((n = getopt(argc, argv, "fmtx")) != -1) {
+ switch (n) {
+ case 'f':
+ f_opt = TRUE;
+ break;
+ case 'm':
+ m_opt = TRUE;
+ break;
+ case 't':
+ t_opt = TRUE;
+ break;
+#ifdef NCURSES_VERSION
+ case 'x':
+ x_opt = TRUE;
+ break;
+#endif
+ default:
+ usage();
+ break;
+ }
+ }
+
+#if HAVE_USE_EXTENDED_NAMES
+ use_extended_names(x_opt);
+#endif
+
+ if (optind < argc) {
+ int found = 0;
+ int status;
+ for (n = optind; n < argc; ++n) {
+ setupterm((NCURSES_CONST char *) argv[n], 1, &status);
+ if (status > 0 && cur_term != 0) {
+ terms[found++] = cur_term;
+ }
+ }
+ if (found)
+ list_keys(terms, found);
+ } else {
+ setupterm(NULL, 1, (int *) 0);
+ terms[0] = cur_term;
+ list_keys(terms, 1);
+ }
+
+ free(terms);
+
+ ExitProgram(EXIT_SUCCESS);
+}
+
+#else
+int
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+{
+ printf("This program requires the terminfo arrays\n");
+ ExitProgram(EXIT_FAILURE);
+}
+#endif
+#else /* !HAVE_TIGETSTR */
+int
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+{
+ printf("This program requires the terminfo functions such as tigetstr\n");
+ ExitProgram(EXIT_FAILURE);
+}
+#endif /* HAVE_TIGETSTR */
diff --git a/test/lrtest.c b/test/lrtest.c
index da12034ce083..ee510cc4af1d 100644
--- a/test/lrtest.c
+++ b/test/lrtest.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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 @@
* This can't be part of the ncurses test-program, because ncurses rips off the
* bottom line to do labels.
*
- * $Id: lrtest.c,v 1.22 2010/05/01 19:11:55 tom Exp $
+ * $Id: lrtest.c,v 1.26 2019/12/14 23:25:29 tom Exp $
*/
#include <test.priv.h>
@@ -148,9 +148,9 @@ main(
nodelay(stdscr, TRUE);
#ifdef TRACE
else if (ch == 'T')
- trace(0);
+ curses_trace(0);
else if (ch == 't')
- trace(TRACE_CALLS | TRACE_ICALLS | TRACE_UPDATE);
+ curses_trace(TRACE_CALLS | TRACE_ICALLS | TRACE_UPDATE);
#endif
#ifdef KEY_RESIZE
else if (ch == KEY_RESIZE) {
@@ -174,8 +174,7 @@ main(
refresh();
}
- curs_set(1);
- endwin();
+ stop_curses();
ExitProgram(EXIT_SUCCESS);
}
diff --git a/test/make-tar.sh b/test/make-tar.sh
index a71e1e1e0f97..bfafa11a041b 100755
--- a/test/make-tar.sh
+++ b/test/make-tar.sh
@@ -1,7 +1,7 @@
#!/bin/sh
-# $Id: make-tar.sh,v 1.12 2013/10/26 23:11:43 tom Exp $
+# $Id: make-tar.sh,v 1.15 2019/03/02 22:51:42 tom Exp $
##############################################################################
-# Copyright (c) 2010-2011,2013 Free Software Foundation, Inc. #
+# Copyright (c) 2010-2017,2019 Free 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"), #
@@ -66,7 +66,7 @@ edit_specfile() {
make_changelog() {
test -f $1 && chmod u+w $1
cat >$1 <<EOF
-`echo $PKG_NAME|tr '[A-Z]' '[a-z]'` ($NCURSES_MAJOR.$NCURSES_MINOR-$NCURSES_PATCH) unstable; urgency=low
+`echo $PKG_NAME|tr '[A-Z]' '[a-z]'` ($NCURSES_MAJOR.$NCURSES_MINOR+$NCURSES_PATCH) unstable; urgency=low
* snapshot of ncurses subpackage for $PKG_NAME.
@@ -80,7 +80,7 @@ test -d ./test && cd ./test
SOURCE=`cd ..;pwd`
BUILD=$TMPDIR/make-tar$$
-trap "cd /; rm -rf $BUILD; exit 0" 0 1 2 5 15
+trap "cd /; rm -rf $BUILD; exit 0" EXIT INT QUIT TERM HUP
umask 077
if ! ( mkdir $BUILD )
diff --git a/test/mensetmanus.xbm b/test/mensetmanus.xbm
new file mode 100644
index 000000000000..095b8ec48fb8
--- /dev/null
+++ b/test/mensetmanus.xbm
@@ -0,0 +1,258 @@
+#define mensetmanus_width 161
+#define mensetmanus_height 145
+
+static char mensetmanus_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x3f, 0xdb, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x07,
+ 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xf7, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00, 0xc6,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc3, 0xff,
+ 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xe1, 0xff, 0xff, 0x87, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc3, 0xf6, 0x1f, 0x00, 0x00,
+ 0x00, 0xc0, 0xc0, 0xff, 0xff, 0x87, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x9f, 0x65, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0x00,
+ 0x07, 0x80, 0x87, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x9f, 0x6d, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0xff, 0xc7,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x89, 0x6d,
+ 0x1b, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x81, 0x6d, 0x1b, 0x00, 0x00,
+ 0x00, 0xc0, 0xe1, 0x5b, 0xdb, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xc0, 0x81, 0x6d, 0x1b, 0x00, 0x00, 0x00, 0x80, 0x83,
+ 0x5b, 0xdb, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc0, 0x81, 0x6d, 0x1b, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x5b, 0x1b, 0x0c,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x6d,
+ 0x1b, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x5b, 0x1b, 0x0c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x80, 0x6d, 0x1b, 0x00, 0x00,
+ 0x00, 0x00, 0xf8, 0x5b, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xe0, 0x83, 0x6d, 0x19, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x5b, 0x0b, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x83, 0x6d, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x80, 0x5b, 0x0f, 0x0e,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x6d,
+ 0x1b, 0x00, 0x00, 0x00, 0x00, 0x80, 0x4b, 0x0f, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x79, 0x1b, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x6b, 0xbf, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x03, 0xfb, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x6d, 0xb7, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xed, 0xf7, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0xfe,
+ 0x7f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xed, 0xd7, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0xf8, 0xff, 0x07, 0x00,
+ 0x00, 0x00, 0xe0, 0xfe, 0xd7, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xff, 0x7f, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf0,
+ 0xff, 0xd6, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+ 0xbf, 0x73, 0x80, 0x3b, 0x7c, 0x00, 0x00, 0x00, 0xf8, 0xe7, 0xd6, 0xef,
+ 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb9, 0x73, 0xc0,
+ 0x3b, 0xf0, 0x01, 0x00, 0x00, 0xff, 0xc3, 0xbf, 0xe7, 0x3f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xb8, 0x7f, 0xe0, 0x3b, 0xc0, 0x03,
+ 0x00, 0xc0, 0xbf, 0xc7, 0xbf, 0xe7, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x1c, 0xb8, 0xff, 0xf8, 0x3b, 0x80, 0x07, 0x00, 0xe0, 0x61,
+ 0x87, 0xfd, 0xe7, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e,
+ 0xb8, 0xf3, 0xff, 0x3b, 0x00, 0x0f, 0x00, 0x78, 0x60, 0x8e, 0xf1, 0x67,
+ 0xc7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xb8, 0xc3, 0x8f,
+ 0x7b, 0x00, 0x0e, 0x00, 0x38, 0xe0, 0x8c, 0x03, 0x66, 0x87, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0xb8, 0x03, 0x83, 0x7b, 0x00, 0x1e,
+ 0x00, 0x1c, 0xe0, 0x1d, 0x03, 0x76, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc0, 0x07, 0xb8, 0xe3, 0x8f, 0xbb, 0x01, 0x39, 0x00, 0x1e, 0xe0,
+ 0x3b, 0x03, 0xf6, 0x87, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f,
+ 0xb8, 0xe3, 0x8f, 0x3b, 0xc6, 0x38, 0x00, 0x17, 0xe0, 0x73, 0x07, 0xfe,
+ 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0b, 0xb8, 0xe7, 0x8e,
+ 0x3b, 0x38, 0x78, 0x00, 0x13, 0xe0, 0x77, 0x06, 0xfe, 0xff, 0xff, 0xff,
+ 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x12, 0x3c, 0xff, 0xce, 0x3b, 0x00, 0x78,
+ 0x80, 0x13, 0x60, 0xef, 0x0e, 0xfe, 0x00, 0x00, 0x60, 0x08, 0x00, 0x00,
+ 0x00, 0x70, 0x22, 0x3e, 0xfc, 0xfe, 0x39, 0x00, 0xe8, 0x80, 0x61, 0x60,
+ 0xce, 0x0f, 0xfe, 0x00, 0x00, 0x60, 0xf8, 0x00, 0x00, 0x00, 0x70, 0xc2,
+ 0x39, 0xf8, 0x7e, 0x38, 0x00, 0xc8, 0xc0, 0x81, 0x71, 0xde, 0x0f, 0xfe,
+ 0x00, 0x00, 0x60, 0x88, 0x00, 0x00, 0x00, 0x70, 0x04, 0x38, 0xe0, 0x0e,
+ 0x38, 0x00, 0xc4, 0xc0, 0x01, 0x7e, 0xbc, 0x1f, 0xfe, 0x00, 0x00, 0x60,
+ 0x88, 0x00, 0x00, 0x00, 0x78, 0x04, 0x38, 0xe0, 0x0e, 0x38, 0x00, 0xc4,
+ 0xc1, 0x01, 0x60, 0x3c, 0x1f, 0xfe, 0x00, 0x00, 0x60, 0x84, 0x0f, 0x00,
+ 0x00, 0x78, 0x08, 0x38, 0xe0, 0x0f, 0x38, 0x00, 0x82, 0xe1, 0x01, 0x60,
+ 0x74, 0x3e, 0xfe, 0x00, 0x00, 0x60, 0x44, 0x08, 0x00, 0x00, 0xb8, 0x10,
+ 0x38, 0xe0, 0x0f, 0x38, 0x00, 0x81, 0xe1, 0x00, 0x60, 0xe4, 0x3e, 0xfe,
+ 0x00, 0x00, 0x60, 0x44, 0x08, 0x00, 0x00, 0x98, 0x20, 0x38, 0xf8, 0x3f,
+ 0x38, 0x80, 0x80, 0xe1, 0x01, 0x60, 0xc4, 0x3c, 0xfe, 0x00, 0x00, 0x60,
+ 0x24, 0x0c, 0x00, 0x00, 0x1c, 0xc1, 0x39, 0x3c, 0x78, 0x38, 0x40, 0x80,
+ 0x61, 0x01, 0x60, 0xc4, 0x79, 0xfe, 0x00, 0x00, 0x60, 0x22, 0x32, 0x00,
+ 0x00, 0x1c, 0x01, 0x3e, 0x1c, 0xf0, 0x38, 0xf0, 0x9f, 0x61, 0x01, 0x60,
+ 0x84, 0x7b, 0xee, 0x00, 0x00, 0x60, 0x12, 0x21, 0x00, 0x00, 0x1c, 0x02,
+ 0x38, 0x0e, 0xe7, 0xf8, 0x3f, 0xe0, 0x61, 0x00, 0x60, 0x04, 0xf7, 0xce,
+ 0x00, 0x00, 0x60, 0x92, 0x10, 0x00, 0x00, 0x1c, 0x04, 0x38, 0x06, 0xff,
+ 0x38, 0x40, 0x80, 0x61, 0x02, 0x60, 0x04, 0xe7, 0xcf, 0x00, 0x00, 0x60,
+ 0x8a, 0x18, 0x00, 0x00, 0x1c, 0x18, 0x38, 0x07, 0xf0, 0x38, 0x00, 0x81,
+ 0x61, 0x02, 0x60, 0x04, 0xee, 0xcf, 0xff, 0x03, 0x60, 0x49, 0xe4, 0x00,
+ 0x00, 0x1c, 0x70, 0x38, 0x07, 0xe7, 0x38, 0x00, 0x82, 0x61, 0x04, 0x60,
+ 0x04, 0xdc, 0xcf, 0x01, 0x04, 0x60, 0x25, 0x42, 0x00, 0x00, 0x1c, 0xfe,
+ 0x3f, 0x03, 0xff, 0x38, 0x00, 0x84, 0x61, 0x08, 0x60, 0x04, 0xfc, 0xcf,
+ 0xf8, 0xff, 0x60, 0x95, 0x31, 0x00, 0x00, 0xfc, 0x01, 0xff, 0x03, 0xf0,
+ 0xf8, 0x1f, 0x88, 0x61, 0x10, 0xe0, 0xff, 0xff, 0xff, 0x00, 0x00, 0xe1,
+ 0x53, 0x0c, 0x00, 0x00, 0x38, 0xf0, 0xff, 0x03, 0xef, 0xf8, 0x7f, 0x90,
+ 0x61, 0x40, 0xe0, 0xff, 0xff, 0xff, 0x00, 0xff, 0xe3, 0x2b, 0xfe, 0x00,
+ 0x00, 0x18, 0xf8, 0xff, 0x03, 0xff, 0x7c, 0xf0, 0x90, 0x61, 0x00, 0x3e,
+ 0x36, 0xe3, 0xe1, 0x00, 0x00, 0xe3, 0x9f, 0x60, 0x00, 0x00, 0x38, 0x3c,
+ 0x00, 0x03, 0xf0, 0x1f, 0xe0, 0xa0, 0xe1, 0x00, 0x30, 0x22, 0xe2, 0xc0,
+ 0x00, 0xff, 0xe3, 0x7f, 0x18, 0x00, 0x00, 0x38, 0x0e, 0x00, 0x07, 0xe7,
+ 0x07, 0xc0, 0xe1, 0xc1, 0x00, 0x18, 0x22, 0xe2, 0xc0, 0x00, 0x00, 0xe1,
+ 0x1f, 0x07, 0x00, 0x00, 0x38, 0x06, 0x00, 0x07, 0xef, 0x01, 0xc0, 0xc1,
+ 0xc1, 0x01, 0x16, 0x24, 0xe2, 0xc0, 0x01, 0xff, 0xe1, 0xff, 0x00, 0x00,
+ 0x00, 0x70, 0x07, 0x00, 0x0e, 0xf8, 0x00, 0x80, 0xc3, 0xc0, 0xf1, 0x11,
+ 0x24, 0xe4, 0xc0, 0x03, 0xe0, 0xe1, 0x7f, 0x00, 0x00, 0x00, 0x70, 0x07,
+ 0x00, 0x1e, 0x3c, 0x00, 0x80, 0xe3, 0x80, 0x0f, 0x10, 0x24, 0xe4, 0xc0,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xe0, 0x03, 0x00, 0xfc, 0x0f,
+ 0x00, 0x00, 0x63, 0x80, 0x01, 0x08, 0x44, 0xe4, 0xc0, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0x01, 0x00, 0xe0, 0x03, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x73,
+ 0x80, 0x03, 0x08, 0x44, 0xe4, 0xc0, 0xfc, 0x00, 0x07, 0x0e, 0x00, 0x00,
+ 0x00, 0xc0, 0x03, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x33, 0x00, 0x03, 0x08,
+ 0x44, 0xe4, 0xe0, 0xcc, 0x00, 0x07, 0x0e, 0x00, 0x00, 0x00, 0xc0, 0x03,
+ 0x00, 0x78, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x07, 0x04, 0x44, 0xe8, 0x70,
+ 0xcc, 0x01, 0x87, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3e, 0x00,
+ 0x00, 0x80, 0x1f, 0x00, 0x0e, 0x04, 0x44, 0xe8, 0x38, 0xcc, 0x81, 0xe7,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x80, 0x0f,
+ 0x00, 0x1c, 0x02, 0x44, 0xf8, 0x1e, 0xcc, 0xe1, 0xff, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0f, 0xc0, 0x23, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x38, 0x01,
+ 0x42, 0xfc, 0x0f, 0xcc, 0xf1, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e,
+ 0xf0, 0x39, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xf0, 0x00, 0xc2, 0xff, 0x07,
+ 0xcc, 0x7f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x0e, 0x00,
+ 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x03, 0xe2, 0xe7, 0x07, 0xcc, 0x1f, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xbf, 0x23, 0xe0, 0xff, 0xff, 0x00,
+ 0x00, 0xc0, 0x1f, 0xff, 0x64, 0x06, 0xcc, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xf0, 0xff, 0x3c, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff,
+ 0x7f, 0x64, 0x06, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
+ 0xf8, 0x1f, 0x78, 0x7c, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x64, 0x06,
+ 0xcc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf8, 0x33, 0x1c,
+ 0x38, 0x66, 0x00, 0x00, 0x00, 0x0c, 0x20, 0x6c, 0x06, 0xcc, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x78, 0x3e, 0x0e, 0x38, 0x76, 0x00,
+ 0x00, 0x00, 0x0c, 0x20, 0x68, 0x06, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x38, 0xf8, 0x87, 0x0f, 0x38, 0x76, 0x00, 0x00, 0x00, 0x0c,
+ 0x20, 0x68, 0x06, 0xcc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
+ 0x78, 0xf8, 0x0f, 0x38, 0x76, 0x00, 0x00, 0x00, 0x0c, 0x10, 0x68, 0x06,
+ 0xcc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf8, 0xff, 0x0f,
+ 0x38, 0x76, 0x00, 0x00, 0x00, 0x0c, 0x10, 0x68, 0x06, 0xcc, 0x07, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xf8, 0xff, 0x0e, 0x38, 0x76, 0x00,
+ 0x00, 0x00, 0x0c, 0x10, 0x68, 0x06, 0xcc, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x1c, 0xf8, 0xe1, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x0c,
+ 0x08, 0x68, 0x06, 0xcc, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
+ 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x0c, 0x08, 0x68, 0x06,
+ 0xcc, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x0e,
+ 0x38, 0x3e, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x68, 0x06, 0xcc, 0x0e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00,
+ 0x00, 0x00, 0x1c, 0x04, 0x68, 0x06, 0xcc, 0x0e, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x06, 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x1c,
+ 0x02, 0x68, 0x06, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+ 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x68, 0x06,
+ 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0xe0, 0x0e,
+ 0x38, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x68, 0x06, 0xcc, 0x1c, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00,
+ 0x00, 0x00, 0x18, 0x01, 0x68, 0x06, 0xcc, 0x1c, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x03, 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x98,
+ 0x00, 0x68, 0x06, 0xcc, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03,
+ 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x98, 0x00, 0x68, 0x06,
+ 0xcc, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x38, 0xe0, 0x0e,
+ 0x38, 0x1e, 0x00, 0x00, 0x00, 0x58, 0x00, 0x6c, 0x0e, 0xcc, 0x18, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0xe0, 0x0e, 0x38, 0x1e, 0x00,
+ 0x00, 0x00, 0x38, 0x00, 0x64, 0x0e, 0xcc, 0x18, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc0, 0x01, 0x70, 0xe0, 0x0e, 0x1c, 0x1e, 0x00, 0x00, 0x00, 0x18,
+ 0x00, 0x64, 0x1e, 0xcc, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01,
+ 0xe0, 0xe1, 0x0e, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x64, 0x3e,
+ 0xcc, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0xef, 0xce,
+ 0x07, 0x1e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x64, 0x3e, 0xcc, 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xff, 0xfe, 0x03, 0x1e, 0x00,
+ 0x00, 0x00, 0x18, 0x00, 0x64, 0x7e, 0xcc, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xe0, 0x00, 0x00, 0xfc, 0xfe, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x18,
+ 0x00, 0x64, 0x66, 0xcc, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
+ 0x00, 0xe0, 0x1e, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x66, 0xe6,
+ 0xcc, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xe0, 0x0e,
+ 0x00, 0x1e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x62, 0xc6, 0xcd, 0x70, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0x1e, 0x00,
+ 0x00, 0x00, 0x18, 0x00, 0x62, 0xc6, 0xcd, 0x70, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x70, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x38,
+ 0x00, 0x62, 0x86, 0xcf, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+ 0xf0, 0xff, 0xff, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x61, 0x86,
+ 0xcf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0xfc, 0x00, 0x00,
+ 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x61, 0x8e, 0xcf, 0xe0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x78, 0x00, 0x00, 0x0e, 0x0e, 0x00,
+ 0x00, 0x00, 0xf8, 0xff, 0x7f, 0xfe, 0xdf, 0xff, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x18, 0x00, 0xf0, 0x00, 0x00, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0xf0,
+ 0xff, 0x3f, 0xff, 0xdf, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00,
+ 0xe0, 0x01, 0x00, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x8f, 0x07,
+ 0x9e, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xe0, 0x07, 0x00,
+ 0x0e, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x00, 0xc0, 0xff, 0x3f, 0xc0, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x0f, 0x00,
+ 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x1c, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xf0,
+ 0xff, 0xff, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff,
+ 0x3f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0x00,
+ 0x38, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00,
+ 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x38, 0x00, 0x38, 0xe0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x18, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
+ 0xdc, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1c, 0x00,
+ 0x38, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x9c, 0x03, 0x00,
+ 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1c, 0x00, 0x18, 0x70, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x07, 0x00, 0x00, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x07, 0x0c, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xe0, 0x00, 0x1c, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x0c, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
+ 0x1c, 0xfc, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x00,
+ 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x1c, 0x00,
+ 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x18, 0x70, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x1c, 0x00, 0x80, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xe0, 0x00, 0x1c, 0x1c, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x0e, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
+ 0x1c, 0x1c, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00,
+ 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x1c, 0x00,
+ 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x00, 0x18, 0x38, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x07, 0x00,
+ 0x00, 0x00, 0x00, 0x07, 0x06, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xe0, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x0e, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
+ 0x1c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00,
+ 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x00, 0x00,
+ 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x18, 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xe0, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x0e, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
+ 0x1e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x00,
+ 0x38, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1e, 0x00, 0x00,
+ 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1c, 0x00, 0x38, 0x70, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x06, 0x1c, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xe0, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x18, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
+ 0x1e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x18, 0x00,
+ 0x30, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1e, 0x00, 0x00,
+ 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0x00, 0x30, 0xe0, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x0c, 0x3c, 0x00, 0x30, 0xf0, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0xf8, 0x03, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+ 0x0c, 0x7e, 0x00, 0x70, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x0f,
+ 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xe7, 0x00,
+ 0x70, 0xbc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1f, 0x00, 0x00,
+ 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xe3, 0x00, 0x60, 0x1e, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0xfc, 0xc1, 0x01, 0xe0, 0x0f, 0x0f, 0x00, 0x00, 0x00,
+ 0x80, 0x07, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+ 0xf8, 0x80, 0x03, 0xe0, 0x03, 0x1e, 0x00, 0x00, 0x00, 0xc0, 0x03, 0xe0,
+ 0x1b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x78, 0x80, 0x07,
+ 0xe0, 0x01, 0x1c, 0x00, 0x00, 0x00, 0xe0, 0x01, 0xc0, 0x1b, 0x00, 0x00,
+ 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x0f, 0xe0, 0x01, 0x38,
+ 0x00, 0x00, 0x00, 0xf0, 0x00, 0xc0, 0x19, 0x00, 0x00, 0x00, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x30, 0x0e, 0x1e, 0xc0, 0x71, 0xf8, 0x00, 0x00, 0x00,
+ 0x78, 0x00, 0xdc, 0x19, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+ 0x30, 0x1f, 0x1e, 0xc0, 0xf9, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/test/mini.xterm_48x48.xpm b/test/mini.xterm_48x48.xpm
new file mode 100644
index 000000000000..c4738f8ed087
--- /dev/null
+++ b/test/mini.xterm_48x48.xpm
@@ -0,0 +1,264 @@
+/* XPM */
+static char * mini_xterm_48x48_xpm[] = {
+"48 48 213 2",
+" c None",
+". c #FF0000",
+"+ c #FF5300",
+"@ c #FF5E00",
+"# c #FF4800",
+"$ c #FF4200",
+"% c #FF4000",
+"& c #FF4B00",
+"* c #FF5200",
+"= c #FF5400",
+"- c #FF3500",
+"; c #FF5100",
+"> c #FF5C00",
+", c #FF3000",
+"' c #FF4500",
+") c #FF2000",
+"! c #FF0300",
+"~ c #FF1600",
+"{ c #FF5D00",
+"] c #FF3800",
+"^ c #FF0200",
+"/ c #FF0900",
+"( c #FF2B00",
+"_ c #FF3300",
+": c #FF1A00",
+"< c #FF1300",
+"[ c #FF1200",
+"} c #FF5700",
+"| c #4577BA",
+"1 c #874E78",
+"2 c #887577",
+"3 c #887E77",
+"4 c #887977",
+"5 c #875078",
+"6 c #566CA9",
+"7 c #5E70A1",
+"8 c #884E77",
+"9 c #887677",
+"0 c #7C5B83",
+"a c #795686",
+"b c #008DFE",
+"c c #0012F3",
+"d c #000BF2",
+"e c #008FFE",
+"f c #006CFA",
+"g c #0000F1",
+"h c #0001F1",
+"i c #0020F4",
+"j c #0040F6",
+"k c #0959F0",
+"l c #1158E8",
+"m c #1159E8",
+"n c #0058F9",
+"o c #001DF4",
+"p c #0023F4",
+"q c #005BFA",
+"r c #0060FA",
+"s c #0E58EB",
+"t c #0651F3",
+"u c #0033F5",
+"v c #000EF2",
+"w c #006EFA",
+"x c #0092FF",
+"y c #001FF4",
+"z c #000FF2",
+"A c #0C51EC",
+"B c #326AC9",
+"C c #7A6583",
+"D c #CA6234",
+"E c #FC5F03",
+"F c #FF5800",
+"G c #FF0800",
+"H c #F4060B",
+"I c #007CFB",
+"J c #0013F3",
+"K c #007EFB",
+"L c #FF1800",
+"M c #F3590C",
+"N c #AB6152",
+"O c #4F4EAD",
+"P c #175CE4",
+"Q c #0036F5",
+"R c #0022F4",
+"S c #0095FD",
+"T c #0084FD",
+"U c #0004F1",
+"V c #0051F8",
+"W c #345AC7",
+"X c #E61519",
+"Y c #FF5900",
+"Z c #FF4600",
+"` c #FF0100",
+" . c #446EB9",
+".. c #0034F6",
+"+. c #0032F5",
+"@. c #FF2200",
+"#. c #006FFA",
+"$. c #002DF5",
+"%. c #0086FD",
+"&. c #0046F7",
+"*. c #0015F3",
+"=. c #0076FC",
+"-. c #FF0400",
+";. c #FF2300",
+">. c #FF2900",
+",. c #9E3E61",
+"'. c #0039F6",
+"). c #FF2A00",
+"!. c #FF4300",
+"~. c #0071FB",
+"{. c #005EF9",
+"]. c #004DF7",
+"^. c #008CFE",
+"/. c #0008F2",
+"(. c #001DF3",
+"_. c #007DFB",
+":. c #FF4100",
+"<. c #FF5B00",
+"[. c #A3425C",
+"}. c #994C66",
+"|. c #FF1100",
+"1. c #0072FB",
+"2. c #000AF2",
+"3. c #006EFC",
+"4. c #0017F3",
+"5. c #007FFB",
+"6. c #FF0600",
+"7. c #FF5600",
+"8. c #A56A5A",
+"9. c #A53B5A",
+"0. c #FF4F00",
+"a. c #0076FB",
+"b. c #0076FA",
+"c. c #0093FF",
+"d. c #007DFC",
+"e. c #FF1C00",
+"f. c #A5765A",
+"g. c #A55D5A",
+"h. c #006FFB",
+"i. c #002CF5",
+"j. c #008AFD",
+"k. c #006BF9",
+"l. c #FF3A00",
+"m. c #FF5000",
+"n. c #007BFB",
+"o. c #008BFD",
+"p. c #A5755A",
+"q. c #9A5565",
+"r. c #A43A5B",
+"s. c #FF4D00",
+"t. c #80507F",
+"u. c #FF0F00",
+"v. c #7A5485",
+"w. c #A5555A",
+"x. c #FF0A00",
+"y. c #A53D5A",
+"z. c #A4515B",
+"A. c #A5685A",
+"B. c #A5735A",
+"C. c #FF0700",
+"D. c #FF2E00",
+"E. c #FF1500",
+"F. c #A3705C",
+"G. c #FF0500",
+"H. c #9A4965",
+"I. c #FF0E00",
+"J. c #FF3B00",
+"K. c #FF2D00",
+"L. c #A13C5E",
+"M. c #FF4C00",
+"N. c #62649D",
+"O. c #FF0B00",
+"P. c #FF4700",
+"Q. c #FF1D00",
+"R. c #A56D5A",
+"S. c #FF2C00",
+"T. c #A4465B",
+"U. c #FF1400",
+"V. c #A03E61",
+"W. c #FF3100",
+"X. c #FF1B00",
+"Y. c #FF1000",
+"Z. c #0029F5",
+"`. c #0027F4",
+" + c #4571BA",
+".+ c #FF3900",
+"++ c #FF3200",
+"@+ c #008EFD",
+"#+ c #0019F3",
+"$+ c #0090FD",
+"%+ c #FF0D00",
+"&+ c #FF1E00",
+"*+ c #FF4E00",
+"=+ c #0088FC",
+"-+ c #0087FC",
+";+ c #FF1900",
+">+ c #0036F6",
+",+ c #FF2100",
+"'+ c #0073FB",
+")+ c #0062FA",
+"!+ c #001AF3",
+"~+ c #2463D8",
+"{+ c #3E58BE",
+"]+ c #2A7FD3",
+"^+ c #807B7F",
+"/+ c #008EFB",
+"(+ c #006AFA",
+"_+ c #004CF8",
+":+ c #717B8D",
+"<+ c #EE0B11",
+"[+ c #F73E08",
+"}+ c #FF1F00",
+"|+ c #FF5500",
+" ",
+" ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . . # @ @ @ @ @ @ @ @ @ @ @ @ $ . ",
+" . % & & & * @ @ @ @ @ = & & & & & . . - & & & & & ; @ > & & & & , . ",
+" . . . . . . * @ @ @ @ ; . . . . . . . . . . . . . ' @ ) . . . . . . ",
+" ! ~ { @ @ @ @ ] ^ / ( @ $ . ",
+" ^ _ @ @ @ @ @ : ! < [ > } ^ . ",
+" | 1 2 3 3 3 3 4 5 6 7 8 9 3 0 a ",
+" b c d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d c e ",
+" f g g g g g g h i j k l m n o g g g g g g p q r s t u v g g g g g g g w ",
+" x y g g g g z A B C D E F G H I c g g g g J K L / M N O P Q h g g g g R S ",
+" T g g g U V W X Y @ @ @ @ Z ` ...g g g g +. ` ' @ @.. #.$.g g g g %. ",
+" &.g g *.=. -.;.@ @ @ @ @ >.,.'.g g g g '. / ).@ !.. ~.{.U g g ]. ",
+" ^./.g (._. ` :.@ @ @ @ <.[.'.g g g g '.}.|.<.} ^ . 1.2.g d e ",
+" 3.g 4.5. 6.7.@ @ @ @ 8.'.g g g g '.9.0.@ [ . a./.g b. ",
+" c.R /.d. -.e.@ @ @ @ f.'.g g g g '.g.@ - . h.h i. ",
+" j.k.%. ^ l.@ @ @ f.'.g g g g '.f.m.` n.f o. ",
+" ! * @ @ f.'.g g g g '.p.G . ",
+" ! ~ { @ f.'.g g g g '.q.. ",
+" ^ _ @ f.'.g g g g '.r. ",
+" ^ s.f.'.g g g g '.t. ",
+" ^ u.p.'.g g g g '.v. ",
+" ^ w.'.g g g g '.r. ",
+" x.y.'.g g g g '.z.^ ",
+" ` A.'.g g g g '.B.x.. ",
+" C.D.f.'.g g g g '.f.# ` ",
+" < E.{ F.'.g g g g '.f.@ ( ^ ",
+" : G.; @ H.'.g g g g '.f.@ <.I.^ ",
+" -.J.@ K.L.'.g g g g '.f.@ @ s.` ",
+" I.) @ M.. N.'.g g g g '.f.@ @ @ _ ^ ",
+" L O.F <.6.. '.g g g g '.f.@ @ @ { E.! ",
+" ^ P.@ Q.. '.g g g g '.R.@ @ @ @ * ! ",
+" G S.@ % . '.g g g g '.T.{ @ @ @ @ l.^ ",
+" < U.> 7.^ ..g g g g u V.W.@ @ @ @ @ e.! ",
+" X.-.m.@ Y.. Z.g g g g `. +` M.@ @ @ @ 7.6. ",
+" -..+@ ++. @+#+g g g g #+$+^ %+<.@ @ @ @ :.` ",
+" I.&+@ *+. =+h g g g g h -+ ! >.@ @ @ @ @ ;.^ ",
+" ;+x.} > C.. >+g g g g g g >+ ` Z @ @ @ @ Y / . ",
+" ` ' @ ,+. %.1.'+)+!+g g g g g g g g #+)+~+{+]+^+@ @ @ P.` ",
+" / ).@ !.. /+(+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+(+:+@ @ @ @ ).^ ",
+" I.[ > F . . <+[+@ @ @ @ <.I.` ",
+" . . . . . . 0.@ }+. . . . . . . . . . . . . |+@ @ @ @ s.. . . . . . ",
+" O.@ @ @ @ @ @ @ @ @ @ @ @ @ ^ ! $ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ $ . ",
+" . & & & & & & & & & & & & & . . , & & & & & & & & & & & & & & & , . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" ",
+" "};
diff --git a/test/mk-test.awk b/test/mk-test.awk
index df560ebfa64a..a438580f3de0 100644
--- a/test/mk-test.awk
+++ b/test/mk-test.awk
@@ -1,6 +1,6 @@
-# $Id: mk-test.awk,v 1.12 2010/11/06 23:06:48 tom Exp $
+# $Id: mk-test.awk,v 1.22 2019/01/06 00:35:28 tom Exp $
##############################################################################
-# Copyright (c) 2006-2007,2010 Free Software Foundation, Inc. #
+# Copyright (c) 2006-2018,2019 Free 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,11 +67,21 @@ END {
}
print "";
}
+ print "SCRIPTS = \\"
+ print " $(srcdir)/savescreen.sh \\"
+ print " $(srcdir)/tput-colorcube \\"
+ print " $(srcdir)/tput-initc \\"
+ print " $(srcdir)/tracemunch"
+ print "DATAFILES = \\"
+ print " $(srcdir)/*.x* \\"
+ print " $(srcdir)/*.dat"
print ""
print "all: $(TESTS)"
print ""
print "sources:"
print ""
+ print "check:"
+ print " @ echo The test-programs are interactive"
print "tags:"
print " $(CTAGS) *.[ch]"
print ""
@@ -83,18 +93,43 @@ END {
if (INSTALL == "yes") {
print "# we might install the test-programs"
print "install \\"
- print "install.test: $(BINDIR) $(TESTS)"
- print " $(SHELL) -c 'for src in $(TESTS); do \\"
+ print "install.test: $(BINDIR) $(DATADIR) $(TESTS)"
+
+ print " @$(SHELL) -c 'for src in $(TESTS); do \\"
print " dst=`echo $$src | $(TRANSFORM)`; \\"
+ print " echo \"installing $$src -> $(BINDIR)/$$dst\"; \\"
print " $(INSTALL_PROG) $$src $(BINDIR)/$$dst; \\"
print " done'"
+
+ print " @$(SHELL) -c 'for src in $(SCRIPTS); do \\"
+ print " dst=`echo $$src | sed -e 's,^.*/,,' | $(TRANSFORM)`; \\"
+ print " echo \"installing $$src -> $(BINDIR)/$$dst\"; \\"
+ print " $(INSTALL_SCRIPT) $$src $(BINDIR)/$$dst; \\"
+ print " done'"
+
+ print " @$(SHELL) -c 'for src in $(DATAFILES); do \\"
+ print " dst=`echo $$src | sed -e 's,^.*/,,'`; \\"
+ print " echo \"installing $$src -> $(DATADIR)/$$dst\"; \\"
+ print " $(INSTALL_DATA) $$src $(DATADIR)/$$dst; \\"
+ print " done'"
print ""
print "uninstall \\"
print "uninstall.test:"
- print " $(SHELL) -c 'for src in $(TESTS); do \\"
+
+ print " @$(SHELL) -c 'for src in $(TESTS); do \\"
print " dst=`echo $$src | $(TRANSFORM)`; \\"
print " rm -f $(BINDIR)/$$dst; \\"
print " done'"
+
+ print " @$(SHELL) -c 'for src in $(SCRIPTS); do \\"
+ print " dst=`echo $$src | sed -e 's,^.*/,,' | $(TRANSFORM)`; \\"
+ print " rm -f $(BINDIR)/$$dst; \\"
+ print " done'"
+
+ print " @$(SHELL) -c 'for src in $(DATAFILES); do \\"
+ print " dst=`echo $$src | sed -e 's,^.*/,,'`; \\"
+ print " rm -f $(DATADIR)/$$dst; \\"
+ print " done'"
} else {
print "install \\"
print "install.test \\"
@@ -107,7 +142,7 @@ END {
print ""
print "clean :: mostlyclean"
print " -$(SHELL) -c \"if test -n '$x' ; then $(MAKE) clean x=''; fi\""
- print " -rm -rf *$o screendump *.lis $(TESTS) .libs"
+ print " -rm -rf *$o screendump *.lis $(TESTS) .libs *.dSYM"
print ""
print "distclean :: clean"
print " -rm -f Makefile ncurses_cfg.h config.status config.log"
@@ -116,7 +151,7 @@ END {
print ""
print "lint:"
print " $(SHELL) -c 'for N in $(TESTS); do echo LINT:$$N; $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/$$N.c $(LINT_LIBS); done'"
- print "$(BINDIR) :"
+ print "$(BINDIR) $(DATADIR) :"
print " mkdir -p $@"
diff --git a/test/modules b/test/modules
index 628335a914ec..40a0c09b9689 100644
--- a/test/modules
+++ b/test/modules
@@ -1,6 +1,6 @@
-# $Id: modules,v 1.50 2013/12/07 18:06:01 tom Exp $
+# $Id: modules,v 1.70 2019/02/16 19:35:47 tom Exp $
##############################################################################
-# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2018,2019 Free 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,47 +36,60 @@ background progs $(srcdir) $(HEADER_DEPS)
blue progs $(srcdir) $(HEADER_DEPS)
bs progs $(srcdir) $(HEADER_DEPS)
cardfile progs $(srcdir) $(HEADER_DEPS) ../include/panel.h ../include/form.h
-chgat progs $(srcdir) $(HEADER_DEPS)
-clip_printw progs $(srcdir) $(HEADER_DEPS)
+chgat progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h
+clip_printw progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h
+color_content progs $(srcdir) $(HEADER_DEPS)
color_set progs $(srcdir) $(HEADER_DEPS)
demo_altkeys progs $(srcdir) $(HEADER_DEPS)
demo_defkey progs $(srcdir) $(HEADER_DEPS)
demo_forms progs $(srcdir) $(HEADER_DEPS) $(srcdir)/edit_field.h
demo_keyok progs $(srcdir) $(HEADER_DEPS)
demo_menus progs $(srcdir) $(HEADER_DEPS) ../include/menu.h
+demo_new_pair progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h
demo_panels progs $(srcdir) $(HEADER_DEPS) ../include/panel.h
+demo_tabs progs $(srcdir) $(HEADER_DEPS)
demo_termcap progs $(srcdir) $(HEADER_DEPS)
demo_terminfo progs $(srcdir) $(HEADER_DEPS)
ditto progs $(srcdir) $(HEADER_DEPS)
dots progs $(srcdir) $(HEADER_DEPS)
+dots_curses progs $(srcdir) $(HEADER_DEPS)
dots_mvcur progs $(srcdir) $(HEADER_DEPS)
dots_termcap progs $(srcdir) $(HEADER_DEPS)
+dots_xcurses progs $(srcdir) $(HEADER_DEPS)
+dump_window progs $(srcdir) $(HEADER_DEPS) $(srcdir)/dump_window.h
echochar progs $(srcdir) $(HEADER_DEPS)
-edit_field progs $(srcdir) $(HEADER_DEPS) $(srcdir)/edit_field.h
+edit_field progs $(srcdir) $(HEADER_DEPS) $(srcdir)/edit_field.h $(srcdir)/popup_msg.h
+extended_color progs $(srcdir) $(HEADER_DEPS)
filter progs $(srcdir) $(HEADER_DEPS)
firework progs $(srcdir) $(HEADER_DEPS)
firstlast progs $(srcdir) $(HEADER_DEPS)
foldkeys progs $(srcdir) $(HEADER_DEPS)
-form_driver_w progs $(srcdir) $(HEADER_DEPS)
+form_driver_w progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h
gdc progs $(srcdir) $(HEADER_DEPS)
hanoi progs $(srcdir) $(HEADER_DEPS)
hashtest progs $(srcdir) $(HEADER_DEPS)
-inch_wide progs $(srcdir) $(HEADER_DEPS)
-inchs progs $(srcdir) $(HEADER_DEPS)
+inch_wide progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h
+inchs progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h
ins_wide progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h
-insdelln progs $(srcdir) $(HEADER_DEPS)
+insdelln progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h
inserts progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h
key_names progs $(srcdir) $(HEADER_DEPS)
keynames progs $(srcdir) $(HEADER_DEPS)
knight progs $(srcdir) $(HEADER_DEPS)
+list_keys progs $(srcdir) $(HEADER_DEPS)
lrtest progs $(srcdir) $(HEADER_DEPS)
-movewindow progs $(srcdir) $(HEADER_DEPS)
+movewindow progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h
ncurses progs $(srcdir) $(HEADER_DEPS) ../include/panel.h ../include/menu.h ../include/form.h
newdemo progs $(srcdir) $(HEADER_DEPS)
+padview progs $(srcdir) $(HEADER_DEPS) $(srcdir)/widechars.h $(srcdir)/popup_msg.h
+pair_content progs $(srcdir) $(HEADER_DEPS)
+picsmap progs $(srcdir) $(HEADER_DEPS)
+popup_msg progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h
railroad progs $(srcdir) $(HEADER_DEPS)
-rain progs $(srcdir) $(HEADER_DEPS)
-redraw progs $(srcdir) $(HEADER_DEPS)
-savescreen progs $(srcdir) $(HEADER_DEPS)
+rain progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h
+redraw progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h
+savescreen progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h $(srcdir)/parse_rgb.h
+sp_tinfo progs $(srcdir) $(HEADER_DEPS)
tclock progs $(srcdir) $(HEADER_DEPS)
test_add_wchstr progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h
test_addchstr progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h
@@ -88,12 +101,15 @@ test_getstr progs $(srcdir) $(HEADER_DEPS)
test_instr progs $(srcdir) $(HEADER_DEPS)
test_inwstr progs $(srcdir) $(HEADER_DEPS)
test_opaque progs $(srcdir) $(HEADER_DEPS)
+test_setupterm progs $(srcdir) $(HEADER_DEPS)
+test_sgr progs $(srcdir) $(HEADER_DEPS)
+test_termattrs progs $(srcdir) $(HEADER_DEPS)
test_vid_puts progs $(srcdir) $(HEADER_DEPS)
test_vidputs progs $(srcdir) $(HEADER_DEPS)
testaddch progs $(srcdir) $(HEADER_DEPS)
testcurs progs $(srcdir) $(HEADER_DEPS)
testscanw progs $(srcdir) $(HEADER_DEPS)
-view progs $(srcdir) $(HEADER_DEPS) $(srcdir)/widechars.h
+view progs $(srcdir) $(HEADER_DEPS) $(srcdir)/widechars.h $(srcdir)/popup_msg.h
worm progs $(srcdir) $(HEADER_DEPS)
xmas progs $(srcdir) $(HEADER_DEPS)
diff --git a/test/movewindow.c b/test/movewindow.c
index 9effda41a4da..0ce107ca0355 100644
--- a/test/movewindow.c
+++ b/test/movewindow.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2006-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2006-2018,2019 Free 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: movewindow.c,v 1.39 2013/05/04 19:41:02 tom Exp $
+ * $Id: movewindow.c,v 1.50 2019/01/21 20:11:22 tom Exp $
*
* Demonstrate move functions for windows and derived windows from the curses
* library.
@@ -45,13 +45,18 @@ TODO:
*/
#include <test.priv.h>
-#include <stdarg.h>
+
+#if HAVE_MVDERWIN && HAVE_MVWIN
+
+#include <popup_msg.h>
#ifdef HAVE_XCURSES
#undef derwin
#endif
-#ifdef NCURSES_VERSION
+#if defined(NCURSES_CONST)
+#define CONST_FMT NCURSES_CONST
+#elif defined(PDCURSES)
#define CONST_FMT const
#else
#define CONST_FMT /* nothing */
@@ -73,8 +78,8 @@ typedef struct {
WINDOW *child; /* the actual value */
} FRAME;
-static void head_line(CONST_FMT char *fmt,...) GCC_PRINTFLIKE(1, 2);
-static void tail_line(CONST_FMT char *fmt,...) GCC_PRINTFLIKE(1, 2);
+static void head_line(CONST_FMT char *fmt, ...) GCC_PRINTFLIKE(1, 2);
+static void tail_line(CONST_FMT char *fmt, ...) GCC_PRINTFLIKE(1, 2);
static unsigned num_windows;
static FRAME *all_windows;
@@ -102,6 +107,8 @@ message(int lineno, CONST_FMT char *fmt, va_list argp)
vsprintf(buffer, fmt, argp);
addstr(buffer);
}
+#elif defined(HAVE_VW_PRINTW)
+ vw_printw(stdscr, fmt, argp);
#else
vwprintw(stdscr, fmt, argp);
#endif
@@ -111,7 +118,7 @@ message(int lineno, CONST_FMT char *fmt, va_list argp)
}
static void
-head_line(CONST_FMT char *fmt,...)
+head_line(CONST_FMT char *fmt, ...)
{
va_list argp;
@@ -121,7 +128,7 @@ head_line(CONST_FMT char *fmt,...)
}
static void
-tail_line(CONST_FMT char *fmt,...)
+tail_line(CONST_FMT char *fmt, ...)
{
va_list argp;
@@ -190,6 +197,7 @@ selectcell(WINDOW *parent,
moved = TRUE;
break;
case QUIT:
+ /* FALLTHRU */
case ESCAPE:
return ((PAIR *) 0);
#ifdef NCURSES_MOUSE_VERSION
@@ -211,8 +219,8 @@ selectcell(WINDOW *parent,
break;
}
}
- /* FALLTHRU */
#endif
+ /* FALLTHRU */
default:
res.y = uli + i;
res.x = ulj + j;
@@ -637,7 +645,7 @@ show_help(WINDOW *current)
int key;
CONST_FMT char * msg;
} help[] = {
- { '?', "Show this screen" },
+ { HELP_KEY_1, "Show this screen" },
{ 'b', "Draw a box inside the current window" },
{ 'c', "Create a new window" },
{ 'd', "Create a new derived window" },
@@ -654,20 +662,20 @@ show_help(WINDOW *current)
};
/* *INDENT-ON* */
- WINDOW *mywin = newwin(LINES, COLS, 0, 0);
- int row;
+ char **msgs = typeCalloc(char *, SIZEOF(help) + 1);
+ size_t n;
- for (row = 0; row < LINES - 2 && row < (int) SIZEOF(help); ++row) {
- wmove(mywin, row + 1, 1);
- wprintw(mywin, "%s", keyname(help[row].key));
- wmove(mywin, row + 1, 20);
- wprintw(mywin, "%s", help[row].msg);
+ for (n = 0; n < SIZEOF(help); ++n) {
+ size_t need = (21 + strlen(help[n].msg));
+ msgs[n] = typeMalloc(char, need);
+ _nc_SPRINTF(msgs[n], _nc_SLIMIT(need)
+ "%-20s%s", keyname(help[n].key), help[n].msg);
+ }
+ popup_msg2(current, msgs);
+ for (n = 0; n < SIZEOF(help); ++n) {
+ free(msgs[n]);
}
- box_inside(mywin);
- wmove(mywin, 1, 1);
- wgetch(mywin);
- delwin(mywin);
- refresh_all(current);
+ free(msgs);
}
int
@@ -695,7 +703,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
getyx(current_win, y, x);
switch (ch) {
- case '?':
+ case HELP_KEY_1:
show_help(current_win);
break;
case 'b':
@@ -762,5 +770,16 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
wmove(current_win, 0, 0);
}
endwin();
+#if NO_LEAKS
+ free(all_windows);
+#endif
ExitProgram(EXIT_SUCCESS);
}
+#else
+int
+main(void)
+{
+ printf("This program requires the curses mvderwin and mvwin functions\n");
+ ExitProgram(EXIT_FAILURE);
+}
+#endif
diff --git a/test/ncurses.c b/test/ncurses.c
index 40d8ac465136..3959b56b2047 100644
--- a/test/ncurses.c
+++ b/test/ncurses.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -40,7 +40,7 @@ AUTHOR
Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993
Thomas E. Dickey (beginning revision 1.27 in 1996).
-$Id: ncurses.c,v 1.397 2014/02/01 22:29:37 tom Exp $
+$Id: ncurses.c,v 1.521 2019/12/14 23:25:29 tom Exp $
***************************************************************************/
@@ -77,7 +77,6 @@ $Id: ncurses.c,v 1.397 2014/02/01 22:29:37 tom Exp $
#ifdef TRACE
static unsigned save_trace = TRACE_ORDINARY | TRACE_ICALLS | TRACE_CALLS;
-extern unsigned _nc_tracing;
#endif
#else
@@ -142,20 +141,20 @@ extern unsigned _nc_tracing;
#define state_unused
#endif
-#define ToggleAcs(temp,real) temp = ((temp == real) ? 0 : real)
+#define ToggleAcs(temp,real) temp = ((temp == real) ? NULL : real)
#define P(string) printw("%s\n", string)
#define BLANK ' ' /* this is the background character */
-#undef max_colors
-static int max_colors; /* the actual number of colors we'll use */
-static int min_colors; /* the minimum color code */
-static bool use_colors; /* true if we use colors */
+static int MaxColors; /* the actual number of colors we'll use */
+static int MinColors; /* the minimum color code */
+static bool UseColors; /* true if we use colors */
#undef max_pairs
static int max_pairs; /* ...and the number of color pairs */
+#if HAVE_COLOR_CONTENT
typedef struct {
NCURSES_COLOR_T red;
NCURSES_COLOR_T green;
@@ -163,8 +162,10 @@ typedef struct {
} RGB_DATA;
static RGB_DATA *all_colors;
+#endif
static void main_menu(bool);
+static void failed(const char *s) GCC_NORETURN;
static void
failed(const char *s)
@@ -174,35 +175,22 @@ failed(const char *s)
ExitProgram(EXIT_FAILURE);
}
-/* 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)
-{
- if ((to) > (x))
- MvHLine(y, x, c, (to) - (x));
-}
-
-static void
-do_v_line(int y, int x, chtype c, int to)
-{
- if ((to) > (y))
- MvVLine(y, x, c, (to) - (y));
-}
-
static void
Repaint(void)
{
touchwin(stdscr);
+#if HAVE_CURSCR
touchwin(curscr);
wrefresh(curscr);
+#else
+ wrefresh(stdscr);
+#endif
}
static bool
-isQuit(int c)
+isQuit(int c, bool escape)
{
- return ((c) == QUIT || (c) == ESCAPE);
+ return ((c) == QUIT || (escape && ((c) == ESCAPE)));
}
#define case_QUIT QUIT: case ESCAPE
@@ -222,7 +210,7 @@ wGetchar(WINDOW *win)
} else {
_nc_tracing = save_trace;
}
- trace(_nc_tracing);
+ curses_trace(_nc_tracing);
if (_nc_tracing)
Trace(("TOGGLE-TRACING ON"));
}
@@ -233,11 +221,12 @@ wGetchar(WINDOW *win)
}
#define Getchar() wGetchar(stdscr)
+#if USE_SOFTKEYS
/* replaces wgetnstr(), since we want to be able to edit values */
static void
wGetstring(WINDOW *win, char *buffer, int limit)
{
- int y0, x0, x, ch;
+ int y0, x0, x;
bool done = FALSE;
echo();
@@ -246,6 +235,7 @@ wGetstring(WINDOW *win, char *buffer, int limit)
x = (int) strlen(buffer);
while (!done) {
+ int ch;
if (x > (int) strlen(buffer))
x = (int) strlen(buffer);
wmove(win, y0, x0);
@@ -300,12 +290,13 @@ wGetstring(WINDOW *win, char *buffer, int limit)
wmove(win, y0, x0);
noecho();
}
+#endif
#if USE_WIDEC_SUPPORT
static wchar_t
-fullwidth_of(int ch)
+fullwidth_digit(int ch)
{
- return (ch + 0xff10 - '0');
+ return (wchar_t) (ch + 0xff10 - '0');
}
static void
@@ -313,7 +304,7 @@ make_fullwidth_text(wchar_t *target, const char *source)
{
int ch;
while ((ch = *source++) != 0) {
- *target++ = fullwidth_of(ch);
+ *target++ = fullwidth_digit(ch);
}
*target = 0;
}
@@ -323,7 +314,7 @@ make_narrow_text(wchar_t *target, const char *source)
{
int ch;
while ((ch = *source++) != 0) {
- *target++ = ch;
+ *target++ = (wchar_t) ch;
}
*target = 0;
}
@@ -334,7 +325,7 @@ make_fullwidth_digit(cchar_t *target, int digit)
{
wchar_t source[2];
- source[0] = fullwidth_of(digit + '0');
+ source[0] = fullwidth_digit(digit + '0');
source[1] = 0;
setcchar(target, source, A_NORMAL, 0, 0);
}
@@ -353,7 +344,7 @@ wGet_wchar(WINDOW *win, wint_t *result)
} else {
_nc_tracing = save_trace;
}
- trace(_nc_tracing);
+ curses_trace(_nc_tracing);
if (_nc_tracing)
Trace(("TOGGLE-TRACING ON"));
}
@@ -365,6 +356,7 @@ wGet_wchar(WINDOW *win, wint_t *result)
#define Get_wchar(result) wGet_wchar(stdscr, result)
/* replaces wgetn_wstr(), since we want to be able to edit values */
+#if USE_SOFTKEYS
static void
wGet_wstring(WINDOW *win, wchar_t *buffer, int limit)
{
@@ -470,8 +462,9 @@ wGet_wstring(WINDOW *win, wchar_t *buffer, int limit)
wmove(win, y0, x0);
noecho();
}
+#endif /* USE_SOFTKEYS */
-#endif
+#endif /* USE_WIDEC_SUPPORT */
static void
Pause(void)
@@ -486,6 +479,7 @@ Cannot(const char *what)
{
printw("\nThis %s terminal %s\n\n", getenv("TERM"), what);
Pause();
+ endwin();
}
static void
@@ -495,7 +489,7 @@ ShellOut(bool message)
addstr("Shelling out...");
def_prog_mode();
endwin();
-#ifdef __MINGW32__
+#ifdef _WIN32
system("cmd.exe");
#else
IGNORE_RC(system("sh"));
@@ -515,10 +509,15 @@ mouse_decode(MEVENT const *ep)
{
static char buf[80 + (5 * 10) + (32 * 15)];
- (void) sprintf(buf, "id %2d at (%2d, %2d, %d) state %4lx = {",
- ep->id, ep->x, ep->y, ep->z, (unsigned long) ep->bstate);
+ (void) _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "id %2d at (%2d, %2d, %d) state %4lx = {",
+ ep->id, ep->x, ep->y, ep->z, (unsigned long) ep->bstate);
-#define SHOW(m, s) if ((ep->bstate & m)==m) {strcat(buf,s); strcat(buf, ", ");}
+#define SHOW(m, s) \
+ if ((ep->bstate & m)==m) { \
+ _nc_STRCAT(buf, s, sizeof(buf)); \
+ _nc_STRCAT(buf, ", ", sizeof(buf)); \
+ }
SHOW(BUTTON1_RELEASED, "release-1");
SHOW(BUTTON1_PRESSED, "press-1");
@@ -574,14 +573,13 @@ mouse_decode(MEVENT const *ep)
if (buf[strlen(buf) - 1] == ' ')
buf[strlen(buf) - 2] = '\0';
- (void) strcat(buf, "}");
+ _nc_STRCAT(buf, "}", sizeof(buf));
return (buf);
}
static void
show_mouse(WINDOW *win)
{
- int y, x;
MEVENT event;
bool outside;
bool show_loc;
@@ -604,6 +602,7 @@ show_mouse(WINDOW *win)
show_loc = wmouse_trafo(win, &event.y, &event.x, FALSE);
if (show_loc) {
+ int y, x;
getyx(win, y, x);
wmove(win, event.y, event.x);
waddch(win, '*');
@@ -636,15 +635,24 @@ setup_getch(WINDOW *win, GetchFlags flags)
}
static void
-init_getch(WINDOW *win, GetchFlags flags)
+init_getch(WINDOW *win, GetchFlags flags, int delay)
{
memset(flags, FALSE, NUM_GETCH_FLAGS);
flags[UChar('k')] = (win == stdscr);
flags[UChar('m')] = TRUE;
+ flags[UChar('t')] = (delay != 0);
setup_getch(win, flags);
}
+static bool
+blocking_getch(GetchFlags flags, int delay)
+{
+ return ((delay < 0) && flags['t']);
+}
+
+#define ExitOnEscape() (flags[UChar('k')] && flags[UChar('t')])
+
static void
wgetch_help(WINDOW *win, GetchFlags flags)
{
@@ -655,7 +663,8 @@ wgetch_help(WINDOW *win, GetchFlags flags)
,"k -- toggle keypad/literal mode"
,"m -- toggle meta (7-bit/8-bit) mode"
,"^q -- quit"
- ,"s -- shell out\n"
+ ,"s -- shell out"
+ ,"t -- toggle timeout"
,"w -- create a new window"
#ifdef SIGTSTP
,"z -- suspend this process"
@@ -670,13 +679,16 @@ wgetch_help(WINDOW *win, GetchFlags flags)
printw("Type any key to see its %s value. Also:\n",
flags['k'] ? "keypad" : "literal");
for (n = 0; n < SIZEOF(help); ++n) {
+ const char *msg = help[n];
int row = 1 + (int) (n % chk);
int col = (n >= chk) ? COLS / 2 : 0;
- int flg = ((strstr(help[n], "toggle") != 0)
- && (flags[UChar(*help[n])] != FALSE));
+ int flg = ((strstr(msg, "toggle") != 0)
+ && (flags[UChar(*msg)] != FALSE));
+ if (*msg == '^' && ExitOnEscape())
+ msg = "^[,^q -- quit";
if (flg)
(void) standout();
- MvPrintw(row, col, "%s", help[n]);
+ MvPrintw(row, col, "%s", msg);
if (col == 0)
clrtoeol();
if (flg)
@@ -807,12 +819,11 @@ wgetch_test(unsigned level, WINDOW *win, int delay)
{
char buf[BUFSIZ];
int first_y, first_x;
- int c;
int incount = 0;
GetchFlags flags;
- bool blocking = (delay < 0);
- init_getch(win, flags);
+ init_getch(win, flags, delay);
+ notimeout(win, FALSE);
wtimeout(win, delay);
getyx(win, first_y, first_x);
@@ -821,9 +832,11 @@ wgetch_test(unsigned level, WINDOW *win, int delay)
scrollok(win, TRUE);
for (;;) {
+ int c;
+
while ((c = wGetchar(win)) == ERR) {
incount++;
- if (blocking) {
+ if (blocking_getch(flags, delay)) {
(void) wprintw(win, "%05d: input error", incount);
break;
} else {
@@ -831,10 +844,10 @@ wgetch_test(unsigned level, WINDOW *win, int delay)
}
wgetch_wrap(win, first_y);
}
- if (c == ERR && blocking) {
+ if (c == ERR && blocking_getch(flags, delay)) {
wprintw(win, "ERR");
wgetch_wrap(win, first_y);
- } else if (isQuit(c)) {
+ } else if (isQuit(c, ExitOnEscape())) {
break;
} else if (c == 'e') {
flags[UChar('e')] = !flags[UChar('e')];
@@ -860,6 +873,10 @@ wgetch_test(unsigned level, WINDOW *win, int delay)
wgetch_help(win, flags);
} else if (c == 's') {
ShellOut(TRUE);
+ } else if (c == 't') {
+ notimeout(win, flags[UChar('t')]);
+ flags[UChar('t')] = !flags[UChar('t')];
+ wgetch_help(win, flags);
} else if (c == 'w') {
int high = getmaxy(win) - 1 - first_y + 1;
int wide = getmaxx(win) - first_x;
@@ -931,7 +948,7 @@ wgetch_test(unsigned level, WINDOW *win, int delay)
wtimeout(win, -1);
if (!level)
- init_getch(win, flags);
+ init_getch(win, flags, delay);
}
static int
@@ -943,7 +960,7 @@ begin_getch_test(void)
refresh();
#ifdef NCURSES_MOUSE_VERSION
- mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0);
+ mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION, (mmask_t *) 0);
#endif
(void) printw("Delay in 10ths of a second (<CR> for blocking input)? ");
@@ -958,7 +975,7 @@ begin_getch_test(void)
delay = -1;
}
raw();
- move(5, 0);
+ move(6, 0);
return delay;
}
@@ -974,8 +991,8 @@ finish_getch_test(void)
endwin();
}
-static void
-getch_test(void)
+static int
+getch_test(bool recur GCC_UNUSED)
{
int delay = begin_getch_test();
@@ -984,6 +1001,7 @@ getch_test(void)
forget_boxes();
finish_getch_test();
slk_clear();
+ return OK;
}
#if USE_WIDEC_SUPPORT
@@ -1060,11 +1078,10 @@ wget_wch_test(unsigned level, WINDOW *win, int delay)
wint_t c;
int incount = 0;
GetchFlags flags;
- bool blocking = (delay < 0);
- int code;
char *temp;
- init_getch(win, flags);
+ init_getch(win, flags, delay);
+ notimeout(win, FALSE);
wtimeout(win, delay);
getyx(win, first_y, first_x);
@@ -1073,9 +1090,11 @@ wget_wch_test(unsigned level, WINDOW *win, int delay)
scrollok(win, TRUE);
for (;;) {
+ int code;
+
while ((code = wGet_wchar(win, &c)) == ERR) {
incount++;
- if (blocking) {
+ if (blocking_getch(flags, delay)) {
(void) wprintw(win, "%05d: input error", incount);
break;
} else {
@@ -1083,10 +1102,10 @@ wget_wch_test(unsigned level, WINDOW *win, int delay)
}
wgetch_wrap(win, first_y);
}
- if (code == ERR && blocking) {
+ if (code == ERR && blocking_getch(flags, delay)) {
wprintw(win, "ERR");
wgetch_wrap(win, first_y);
- } else if (isQuit((int) c)) {
+ } else if (isQuit((int) c, ExitOnEscape())) {
break;
} else if (c == 'e') {
flags[UChar('e')] = !flags[UChar('e')];
@@ -1125,6 +1144,10 @@ wget_wch_test(unsigned level, WINDOW *win, int delay)
wgetch_help(win, flags);
} else if (c == 's') {
ShellOut(TRUE);
+ } else if (c == 't') {
+ notimeout(win, flags[UChar('t')]);
+ flags[UChar('t')] = !flags[UChar('t')];
+ wgetch_help(win, flags);
} else if (c == 'w') {
int high = getmaxy(win) - 1 - first_y + 1;
int wide = getmaxx(win) - first_x;
@@ -1184,11 +1207,11 @@ wget_wch_test(unsigned level, WINDOW *win, int delay)
wtimeout(win, -1);
if (!level)
- init_getch(win, flags);
+ init_getch(win, flags, delay);
}
-static void
-get_wch_test(void)
+static int
+x_getch_test(bool recur GCC_UNUSED)
{
int delay = begin_getch_test();
@@ -1197,6 +1220,7 @@ get_wch_test(void)
forget_boxes();
finish_getch_test();
slk_clear();
+ return OK;
}
#endif
@@ -1252,8 +1276,14 @@ my_termattrs(void)
#define termattrs() my_termattrs()
#endif
-#define MAX_ATTRSTRING 31
-#define LEN_ATTRSTRING 26
+#define ATTRSTRING_1ST 32 /* ' ' */
+#define ATTRSTRING_END 126 /* '~' */
+
+#define COLS_PRE_ATTRS 5
+#define COLS_AFT_ATTRS 15
+#define COL_ATTRSTRING (COLS_PRE_ATTRS + 17)
+#define LEN_ATTRSTRING (COLS - (COL_ATTRSTRING + COLS_AFT_ATTRS))
+#define MAX_ATTRSTRING (ATTRSTRING_END + 1 - ATTRSTRING_1ST)
static char attr_test_string[MAX_ATTRSTRING + 1];
@@ -1277,9 +1307,9 @@ attr_legend(WINDOW *helpwin)
++row;
MvWPrintw(helpwin, row++, col,
"Toggles:");
- if (use_colors) {
+ if (UseColors) {
MvWPrintw(helpwin, row++, col,
- " f/F/b/F toggle foreground/background background color");
+ " f/F/b/B toggle foreground/background background color");
MvWPrintw(helpwin, row++, col,
" t/T toggle text/background color attribute");
}
@@ -1287,12 +1317,16 @@ attr_legend(WINDOW *helpwin)
" a/A toggle ACS (alternate character set) mapping");
MvWPrintw(helpwin, row, col,
" v/V toggle video attribute to combine with each line");
+#if USE_WIDEC_SUPPORT
+ MvWPrintw(helpwin, row, col,
+ " w/W toggle normal/wide (double-width) test-characters");
+#endif
}
static void
show_color_attr(int fg, int bg, int tx)
{
- if (use_colors) {
+ if (UseColors) {
printw(" Colors (fg %d, bg %d", fg, bg);
if (tx >= 0)
printw(", text %d", tx);
@@ -1305,7 +1339,7 @@ cycle_color_attr(int ch, NCURSES_COLOR_T *fg, NCURSES_COLOR_T *bg, NCURSES_COLOR
{
bool error = FALSE;
- if (use_colors) {
+ if (UseColors) {
switch (ch) {
case 'f':
*fg = (NCURSES_COLOR_T) (*fg + 1);
@@ -1331,12 +1365,12 @@ cycle_color_attr(int ch, NCURSES_COLOR_T *fg, NCURSES_COLOR_T *bg, NCURSES_COLOR
break;
}
if (*fg >= COLORS)
- *fg = (NCURSES_COLOR_T) min_colors;
- if (*fg < min_colors)
+ *fg = (NCURSES_COLOR_T) MinColors;
+ if (*fg < MinColors)
*fg = (NCURSES_COLOR_T) (COLORS - 1);
if (*bg >= COLORS)
- *bg = (NCURSES_COLOR_T) min_colors;
- if (*bg < min_colors)
+ *bg = (NCURSES_COLOR_T) MinColors;
+ if (*bg < MinColors)
*bg = (NCURSES_COLOR_T) (COLORS - 1);
if (*tx >= COLORS)
*tx = -1;
@@ -1352,12 +1386,15 @@ cycle_color_attr(int ch, NCURSES_COLOR_T *fg, NCURSES_COLOR_T *bg, NCURSES_COLOR
static void
adjust_attr_string(int adjust)
{
- int first = ((int) UChar(attr_test_string[0])) + adjust;
- int last = first + LEN_ATTRSTRING;
+ char save = attr_test_string[0];
+ int first = ((int) UChar(save)) + adjust;
- if (first >= ' ' && last <= '~') { /* 32..126 */
+ if (first >= ATTRSTRING_1ST) {
int j, k;
- for (j = 0, k = first; j < MAX_ATTRSTRING && k <= last; ++j, ++k) {
+
+ for (j = 0, k = first; j < MAX_ATTRSTRING; ++j, ++k) {
+ if (k > ATTRSTRING_END)
+ break;
attr_test_string[j] = (char) k;
if (((k + 1 - first) % 5) == 0) {
if (++j >= MAX_ATTRSTRING)
@@ -1365,31 +1402,48 @@ adjust_attr_string(int adjust)
attr_test_string[j] = ' ';
}
}
- while (j < MAX_ATTRSTRING)
- attr_test_string[j++] = ' ';
- attr_test_string[j] = '\0';
- } else {
- beep();
+ if ((LEN_ATTRSTRING - j) > 5) {
+ attr_test_string[0] = save;
+ adjust_attr_string(adjust - 1);
+ } else {
+ while (j < MAX_ATTRSTRING)
+ attr_test_string[j++] = ' ';
+ attr_test_string[j] = '\0';
+ }
}
}
+/*
+ * Prefer the right-end of the string for starting, since that maps to the
+ * VT100 line-drawing.
+ */
+static int
+default_attr_string(void)
+{
+ int result = (ATTRSTRING_END - LEN_ATTRSTRING);
+ result += (LEN_ATTRSTRING / 5);
+ if (result < ATTRSTRING_1ST)
+ result = ATTRSTRING_1ST;
+ return result;
+}
+
static void
init_attr_string(void)
{
- attr_test_string[0] = 'a';
+ attr_test_string[0] = (char) default_attr_string();
adjust_attr_string(0);
}
static int
-show_attr(int row, int skip, bool arrow, chtype attr, const char *name)
+show_attr(WINDOW *win, int row, int skip, bool arrow, chtype attr, const char *name)
{
int ncv = get_ncv();
- chtype test = attr & (chtype) (~A_ALTCHARSET);
+ chtype test = attr & (chtype) (~(A_ALTCHARSET | A_CHARTEXT));
if (arrow)
- MvPrintw(row, 5, "-->");
- MvPrintw(row, 8, "%s mode:", name);
- MvPrintw(row, 24, "|");
+ MvPrintw(row, COLS_PRE_ATTRS - 3, "-->");
+ MvPrintw(row, COLS_PRE_ATTRS, "%s mode:", name);
+ MvPrintw(row, COL_ATTRSTRING - 1, "|");
if (skip)
printw("%*s", skip, " ");
/*
@@ -1397,22 +1451,23 @@ show_attr(int row, int skip, bool arrow, chtype attr, const char *name)
* character at a time (to pass its rendition directly), and use the
* string operation for the other attributes.
*/
+ wmove(win, 0, 0);
+ werase(win);
if (attr & A_ALTCHARSET) {
const char *s;
- chtype ch;
for (s = attr_test_string; *s != '\0'; ++s) {
- ch = UChar(*s);
- addch(ch | attr);
+ chtype ch = UChar(*s);
+ (void) waddch(win, ch | attr);
}
} else {
- (void) attrset(attr);
- addstr(attr_test_string);
- attroff(attr);
+ (void) wattrset(win, AttrArg(attr, 0));
+ (void) waddstr(win, attr_test_string);
+ (void) wattroff(win, (int) attr);
}
if (skip)
printw("%*s", skip, " ");
- printw("|");
+ MvPrintw(row, COL_ATTRSTRING + LEN_ATTRSTRING, "|");
if (test != A_NORMAL) {
if (!(termattrs() & test)) {
printw(" (N/A)");
@@ -1447,15 +1502,16 @@ show_attr(int row, int skip, bool arrow, chtype attr, const char *name)
if (found)
printw(" (NCV)");
}
- if ((termattrs() & test) != test)
+ if ((termattrs() & test) != test) {
printw(" (Part)");
+ }
}
}
return row + 2;
}
typedef struct {
- attr_t attr;
+ chtype attr;
NCURSES_CONST char *name;
} ATTR_TBL;
/* *INDENT-OFF* */
@@ -1492,6 +1548,46 @@ init_attr_list(ATTR_TBL * target, attr_t attrs)
return result;
}
+#if USE_WIDEC_SUPPORT
+typedef struct {
+ attr_t attr;
+ NCURSES_CONST char *name;
+} W_ATTR_TBL;
+/* *INDENT-OFF* */
+static const W_ATTR_TBL w_attrs_to_test[] = {
+ { WA_STANDOUT, "STANDOUT" },
+ { WA_REVERSE, "REVERSE" },
+ { WA_BOLD, "BOLD" },
+ { WA_UNDERLINE, "UNDERLINE" },
+ { WA_DIM, "DIM" },
+ { WA_BLINK, "BLINK" },
+ { WA_PROTECT, "PROTECT" },
+#ifdef WA_INVIS
+ { WA_INVIS, "INVISIBLE" },
+#endif
+#ifdef WA_ITALIC
+ { WA_ITALIC, "ITALIC" },
+#endif
+ { WA_NORMAL, "NORMAL" },
+};
+/* *INDENT-ON* */
+
+static unsigned
+init_w_attr_list(W_ATTR_TBL * target, attr_t attrs)
+{
+ unsigned result = 0;
+ size_t n;
+
+ for (n = 0; n < SIZEOF(w_attrs_to_test); ++n) {
+ attr_t test = w_attrs_to_test[n].attr;
+ if (test == WA_NORMAL || (test & attrs) != 0) {
+ target[result++] = w_attrs_to_test[n];
+ }
+ }
+ return result;
+}
+#endif
+
static bool
attr_getc(int *skip,
NCURSES_COLOR_T *fg,
@@ -1516,7 +1612,7 @@ attr_getc(int *skip,
case CTRL('L'):
Repaint();
break;
- case '?':
+ case HELP_KEY_1:
if ((helpwin = newwin(LINES - 1, COLS - 2, 0, 0)) != 0) {
box(helpwin, 0, 0);
attr_legend(helpwin);
@@ -1559,8 +1655,8 @@ attr_getc(int *skip,
return result;
}
-static void
-attr_test(void)
+static int
+attr_test(bool recur GCC_UNUSED)
/* test text attributes */
{
int n;
@@ -1569,11 +1665,20 @@ attr_test(void)
NCURSES_COLOR_T bg = COLOR_BLACK;
NCURSES_COLOR_T tx = -1;
int ac = 0;
- unsigned j, k;
+ WINDOW *my_wins[SIZEOF(attrs_to_test)];
ATTR_TBL my_list[SIZEOF(attrs_to_test)];
unsigned my_size = init_attr_list(my_list, termattrs());
if (my_size > 1) {
+ unsigned j, k;
+
+ for (j = 0; j < my_size; ++j) {
+ my_wins[j] = subwin(stdscr,
+ 1, LEN_ATTRSTRING,
+ 2 + (int) (2 * j), COL_ATTRSTRING);
+ scrollok(my_wins[j], FALSE);
+ }
+
if (skip < 0)
skip = 0;
@@ -1586,7 +1691,7 @@ attr_test(void)
chtype normal = A_NORMAL | BLANK;
chtype extras = (chtype) ac;
- if (use_colors) {
+ if (UseColors) {
NCURSES_PAIRS_T pair = 0;
if ((fg != COLOR_BLACK) || (bg != COLOR_BLACK)) {
pair = 1;
@@ -1602,6 +1707,7 @@ attr_test(void)
beep();
} else {
extras |= (chtype) COLOR_PAIR(pair);
+ normal &= ~A_COLOR;
}
}
}
@@ -1614,17 +1720,18 @@ attr_test(void)
for (j = 0; j < my_size; ++j) {
bool arrow = (j == k);
- row = show_attr(row, n, arrow,
+ row = show_attr(my_wins[j], row, n, arrow,
+ normal |
extras |
my_list[j].attr |
my_list[k].attr,
my_list[j].name);
}
- MvPrintw(row, 8,
+ MvPrintw(row, COLS_PRE_ATTRS,
"This terminal does %shave the magic-cookie glitch",
get_xmc() > -1 ? "" : "not ");
- MvPrintw(row + 1, 8, "Enter '?' for help.");
+ MvPrintw(row + 1, COLS_PRE_ATTRS, "Enter '?' for help.");
show_color_attr(fg, bg, tx);
printw(" ACS (%d)", ac != 0);
@@ -1634,42 +1741,90 @@ attr_test(void)
bkgdset(A_NORMAL | BLANK);
erase();
endwin();
+ return OK;
} else {
Cannot("does not support video attributes.");
+ return ERR;
}
}
#if USE_WIDEC_SUPPORT
+static bool use_fullwidth;
static wchar_t wide_attr_test_string[MAX_ATTRSTRING + 1];
+#define FULL_LO 0xff00
+#define FULL_HI 0xff5e
+#define HALF_LO 0x20
+
+#define isFullWidth(ch) ((int)(ch) >= FULL_LO && (int)(ch) <= FULL_HI)
+#define ToNormalWidth(ch) (wchar_t) (((int)(ch) - FULL_LO) + HALF_LO)
+#define ToFullWidth(ch) (wchar_t) (((int)(ch) - HALF_LO) + FULL_LO)
+
+/*
+ * Returns an ASCII code in [32..126]
+ */
+static wchar_t
+normal_wchar(int ch)
+{
+ wchar_t result = (wchar_t) ch;
+ if (isFullWidth(ch))
+ result = ToNormalWidth(ch);
+ return result;
+}
+
+/*
+ * Returns either an ASCII code in in [32..126] or full-width in
+ * [0xff00..0xff5e], according to use_fullwidth setting.
+ */
+static wchar_t
+target_wchar(int ch)
+{
+ wchar_t result = (wchar_t) ch;
+ if (use_fullwidth) {
+ if (!isFullWidth(ch))
+ result = ToFullWidth(ch);
+ } else {
+ if (isFullWidth(ch))
+ result = ToNormalWidth(ch);
+ }
+ return result;
+}
+
static void
wide_adjust_attr_string(int adjust)
{
- int first = ((int) UChar(wide_attr_test_string[0])) + adjust;
- int last = first + LEN_ATTRSTRING;
+ wchar_t save = wide_attr_test_string[0];
+ int first = ((int) normal_wchar(save)) + adjust;
- if (first >= ' ' && last <= '~') { /* 32..126 */
+ if (first >= ATTRSTRING_1ST) {
int j, k;
- for (j = 0, k = first; j < MAX_ATTRSTRING && k <= last; ++j, ++k) {
- wide_attr_test_string[j] = k;
+
+ for (j = 0, k = first; j < MAX_ATTRSTRING; ++j, ++k) {
+ if (k > ATTRSTRING_END)
+ break;
+ wide_attr_test_string[j] = target_wchar(k);
if (((k + 1 - first) % 5) == 0) {
if (++j >= MAX_ATTRSTRING)
break;
wide_attr_test_string[j] = ' ';
}
}
- while (j < MAX_ATTRSTRING)
- wide_attr_test_string[j++] = ' ';
- wide_attr_test_string[j] = '\0';
- } else {
- beep();
+ if ((LEN_ATTRSTRING - j) > 5) {
+ wide_attr_test_string[0] = save;
+ wide_adjust_attr_string(adjust - 1);
+ } else {
+ while (j < MAX_ATTRSTRING)
+ wide_attr_test_string[j++] = ' ';
+ wide_attr_test_string[j] = '\0';
+ }
}
}
static void
wide_init_attr_string(void)
{
- wide_attr_test_string[0] = 'a';
+ use_fullwidth = FALSE;
+ wide_attr_test_string[0] = (wchar_t) default_attr_string();
wide_adjust_attr_string(0);
}
@@ -1689,14 +1844,15 @@ set_wide_background(NCURSES_PAIRS_T pair)
static attr_t
get_wide_background(void)
{
- attr_t result = A_NORMAL;
+ attr_t result = WA_NORMAL;
attr_t attr;
cchar_t ch;
NCURSES_PAIRS_T pair;
- wchar_t wch[10];
memset(&ch, 0, sizeof(ch));
if (getbkgrnd(&ch) != ERR) {
+ wchar_t wch[CCHARW_MAX];
+
if (getcchar(&ch, wch, &attr, &pair, 0) != ERR) {
result = attr;
}
@@ -1705,20 +1861,21 @@ get_wide_background(void)
}
static int
-wide_show_attr(int row,
+wide_show_attr(WINDOW *win,
+ int row,
int skip,
bool arrow,
- chtype attr,
+ attr_t attr,
NCURSES_PAIRS_T pair,
const char *name)
{
int ncv = get_ncv();
- chtype test = attr & ~WA_ALTCHARSET;
+ attr_t test = attr & ~WA_ALTCHARSET;
if (arrow)
- MvPrintw(row, 5, "-->");
- MvPrintw(row, 8, "%s mode:", name);
- MvPrintw(row, 24, "|");
+ MvPrintw(row, COLS_PRE_ATTRS - 3, "-->");
+ MvPrintw(row, COLS_PRE_ATTRS, "%s mode:", name);
+ MvPrintw(row, COL_ATTRSTRING - 1, "|");
if (skip)
printw("%*s", skip, " ");
@@ -1727,6 +1884,8 @@ wide_show_attr(int row,
* character at a time (to pass its rendition directly), and use the
* string operation for the other attributes.
*/
+ wmove(win, 0, 0);
+ werase(win);
if (attr & WA_ALTCHARSET) {
const wchar_t *s;
cchar_t ch;
@@ -1736,20 +1895,20 @@ wide_show_attr(int row,
fill[0] = *s;
fill[1] = L'\0';
setcchar(&ch, fill, attr, pair, 0);
- add_wch(&ch);
+ (void) wadd_wch(win, &ch);
}
} else {
attr_t old_attr = 0;
NCURSES_PAIRS_T old_pair = 0;
- (void) (attr_get) (&old_attr, &old_pair, 0);
- (void) attr_set(attr, pair, 0);
- addwstr(wide_attr_test_string);
- (void) attr_set(old_attr, old_pair, 0);
+ (void) (wattr_get) (win, &old_attr, &old_pair, 0);
+ (void) wattr_set(win, attr, pair, 0);
+ (void) waddwstr(win, wide_attr_test_string);
+ (void) wattr_set(win, old_attr, old_pair, 0);
}
if (skip)
printw("%*s", skip, " ");
- printw("|");
+ MvPrintw(row, COL_ATTRSTRING + LEN_ATTRSTRING, "|");
if (test != A_NORMAL) {
if (!(term_attrs() & test)) {
printw(" (N/A)");
@@ -1779,8 +1938,9 @@ wide_show_attr(int row,
if (found)
printw(" (NCV)");
}
- if ((term_attrs() & test) != test)
+ if ((term_attrs() & test) != test) {
printw(" (Part)");
+ }
}
}
return row + 2;
@@ -1807,7 +1967,7 @@ wide_attr_getc(int *skip,
case CTRL('L'):
Repaint();
break;
- case '?':
+ case HELP_KEY_1:
if ((helpwin = newwin(LINES - 1, COLS - 2, 0, 0)) != 0) {
box_set(helpwin, 0, 0);
attr_legend(helpwin);
@@ -1832,6 +1992,14 @@ wide_attr_getc(int *skip,
if (*kc >= limit)
*kc = 0;
break;
+ case 'w':
+ use_fullwidth = FALSE;
+ wide_adjust_attr_string(0);
+ break;
+ case 'W':
+ use_fullwidth = TRUE;
+ wide_adjust_attr_string(0);
+ break;
case '<':
wide_adjust_attr_string(-1);
break;
@@ -1850,8 +2018,8 @@ wide_attr_getc(int *skip,
return result;
}
-static void
-wide_attr_test(void)
+static int
+x_attr_test(bool recur GCC_UNUSED)
/* test text attributes using wide-character calls */
{
int n;
@@ -1860,11 +2028,20 @@ wide_attr_test(void)
NCURSES_COLOR_T bg = COLOR_BLACK;
NCURSES_COLOR_T tx = -1;
int ac = 0;
- unsigned j, k;
- ATTR_TBL my_list[SIZEOF(attrs_to_test)];
- unsigned my_size = init_attr_list(my_list, term_attrs());
+ W_ATTR_TBL my_list[SIZEOF(w_attrs_to_test)];
+ WINDOW *my_wins[SIZEOF(w_attrs_to_test)];
+ unsigned my_size = init_w_attr_list(my_list, term_attrs());
if (my_size > 1) {
+ unsigned j, k;
+
+ for (j = 0; j < my_size; ++j) {
+ my_wins[j] = subwin(stdscr,
+ 1, LEN_ATTRSTRING,
+ 2 + (int) (2 * j), COL_ATTRSTRING);
+ scrollok(my_wins[j], FALSE);
+ }
+
if (skip < 0)
skip = 0;
@@ -1877,7 +2054,7 @@ wide_attr_test(void)
NCURSES_PAIRS_T pair = 0;
NCURSES_PAIRS_T extras = 0;
- if (use_colors) {
+ if (UseColors) {
pair = (NCURSES_PAIRS_T) (fg != COLOR_BLACK || bg != COLOR_BLACK);
if (pair != 0) {
pair = 1;
@@ -1900,7 +2077,7 @@ wide_attr_test(void)
MvAddStr(0, 20, "Character attribute test display");
for (j = 0; j < my_size; ++j) {
- row = wide_show_attr(row, n, j == k,
+ row = wide_show_attr(my_wins[j], row, n, (j == k),
((attr_t) ac |
my_list[j].attr |
my_list[k].attr),
@@ -1908,10 +2085,10 @@ wide_attr_test(void)
my_list[j].name);
}
- MvPrintw(row, 8,
+ MvPrintw(row, COLS_PRE_ATTRS,
"This terminal does %shave the magic-cookie glitch",
get_xmc() > -1 ? "" : "not ");
- MvPrintw(row + 1, 8, "Enter '?' for help.");
+ MvPrintw(row + 1, COLS_PRE_ATTRS, "Enter '?' for help.");
show_color_attr(fg, bg, tx);
printw(" ACS (%d)", ac != 0);
@@ -1921,8 +2098,10 @@ wide_attr_test(void)
set_wide_background(0);
erase();
endwin();
+ return OK;
} else {
Cannot("does not support extended video attributes.");
+ return ERR;
}
}
#endif
@@ -1954,21 +2133,32 @@ static NCURSES_CONST char *the_color_names[] =
};
static void
-show_color_name(int y, int x, int color, bool wide)
+show_color_name(int y, int x, int color, bool wide, int zoom)
{
if (move(y, x) != ERR) {
char temp[80];
int width = 8;
- if (wide) {
- sprintf(temp, "%02d", color);
- width = 4;
+ if (wide || zoom) {
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "%02d", color);
+ if (wide)
+ width = 4;
+ if ((int) strlen(temp) >= width) {
+ int pwr2 = 0;
+ while ((1 << pwr2) < color)
+ ++pwr2;
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ width > 4 ? "2^%d" : "^%d", pwr2);
+ }
} else if (color >= 8) {
- sprintf(temp, "[%02d]", color);
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "[%02d]", color);
} else if (color < 0) {
- strcpy(temp, "default");
+ _nc_STRCPY(temp, "default", sizeof(temp));
} else {
- sprintf(temp, "%.*s", 16, the_color_names[color]);
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "%.*s", 16, the_color_names[color]);
}
printw("%-*.*s", width, width, temp);
}
@@ -1998,12 +2188,18 @@ color_legend(WINDOW *helpwin, bool wide)
" a/A toggle altcharset off/on");
MvWPrintw(helpwin, row++, col,
" b/B toggle bold off/on");
+ if (has_colors()) {
+ MvWPrintw(helpwin, row++, col,
+ " c/C cycle used-colors through 8,16,...,COLORS");
+ }
MvWPrintw(helpwin, row++, col,
" n/N toggle text/number on/off");
MvWPrintw(helpwin, row++, col,
" r/R toggle reverse on/off");
MvWPrintw(helpwin, row++, col,
- " w/W toggle width between 8/16 colors");
+ " w/W switch width between 4/8 columns");
+ MvWPrintw(helpwin, row++, col,
+ " z/Z zoom out (or in)");
#if USE_WIDEC_SUPPORT
if (wide) {
MvWPrintw(helpwin, row++, col,
@@ -2018,19 +2214,50 @@ color_legend(WINDOW *helpwin, bool wide)
#define set_color_test(name, value) if (name != value) { name = value; base_row = 0; }
+static int
+color_cycle(int current, int step)
+{
+ int result = current;
+ if (step < 0) {
+ if (current <= 8) {
+ result = COLORS;
+ } else {
+ result = 8;
+ if ((result * 2) > COLORS) {
+ result = COLORS;
+ } else {
+ while ((result * 2) < current) {
+ result *= 2;
+ }
+ }
+ }
+ } else {
+ if (current >= COLORS) {
+ result = 8;
+ } else {
+ result *= 2;
+ }
+ if (result > COLORS)
+ result = COLORS;
+ }
+ return result;
+}
+
/* generate a color test pattern */
-static void
-color_test(void)
+static int
+color_test(bool recur GCC_UNUSED)
{
NCURSES_PAIRS_T i;
int top = 0, width;
int base_row = 0;
int grid_top = top + 3;
int page_size = (LINES - grid_top);
- int pairs_max = PAIR_NUMBER(A_COLOR) + 1;
+ int pairs_max;
+ int colors_max = COLORS;
+ int col_limit;
int row_limit;
int per_row;
- char numbered[80];
+ char *numbered = 0;
const char *hello;
bool done = FALSE;
bool opt_acsc = FALSE;
@@ -2038,38 +2265,64 @@ color_test(void)
bool opt_revs = FALSE;
bool opt_nums = FALSE;
bool opt_wide = FALSE;
+ int opt_zoom = 0;
WINDOW *helpwin;
- if (COLORS * COLORS == COLOR_PAIRS) {
- int limit = (COLORS - min_colors) * (COLORS - min_colors);
- if (pairs_max > limit)
- pairs_max = limit;
- } else {
- if (pairs_max > COLOR_PAIRS)
- pairs_max = COLOR_PAIRS;
+ if (!UseColors) {
+ Cannot("does not support color.");
+ return ERR;
}
+ numbered = typeCalloc(char, COLS + 1);
+ done = ((COLS < 16) || (numbered == 0));
+
+ /*
+ * Because the number of colors is usually a power of two, we also use
+ * a power of two for the number of colors shown per line (to be tidy).
+ */
+ for (col_limit = 1; col_limit * 2 < COLS; col_limit *= 2) ;
+
+ reloop:
while (!done) {
int shown = 0;
+ int zoom_size = (1 << opt_zoom);
+ int colors_max1 = colors_max / zoom_size;
+ double colors_max2 = (double) colors_max1 * (double) colors_max1;
+
+ pairs_max = PAIR_NUMBER(A_COLOR) + 1;
+ if (colors_max2 <= COLOR_PAIRS) {
+ int limit = (colors_max1 - MinColors) * (colors_max1 - MinColors);
+ if (pairs_max > limit)
+ pairs_max = limit;
+ }
+ if (pairs_max > COLOR_PAIRS)
+ pairs_max = COLOR_PAIRS;
+ if (pairs_max < colors_max1)
+ pairs_max = colors_max1;
/* this assumes an 80-column line */
if (opt_wide) {
width = 4;
hello = "Test";
- per_row = (COLORS > 8) ? 16 : 8;
+ per_row = (col_limit / ((colors_max1 > 8) ? width : 8));
} else {
width = 8;
hello = "Hello";
- per_row = 8;
+ per_row = (col_limit / width);
}
- per_row -= min_colors;
+ per_row -= MinColors;
row_limit = (pairs_max + per_row - 1) / per_row;
move(0, 0);
- (void) printw("There are %d color pairs and %d colors%s\n",
- pairs_max, COLORS,
- min_colors ? " besides 'default'" : "");
+ (void) printw("There are %d color pairs and %d colors",
+ pairs_max, COLORS);
+ if (colors_max1 != COLORS)
+ (void) printw(" (using %d colors)", colors_max1);
+ if (MinColors)
+ (void) addstr(" besides 'default'");
+ if (opt_zoom)
+ (void) printw(" zoom:%d", opt_zoom);
clrtobot();
MvPrintw(top + 1, 0,
@@ -2079,8 +2332,13 @@ color_test(void)
opt_bold ? "on" : "off");
/* show color names/numbers across the top */
- for (i = 0; i < per_row; i++)
- show_color_name(top + 2, (i + 1) * width, i + min_colors, opt_wide);
+ for (i = 0; i < per_row; i++) {
+ show_color_name(top + 2,
+ (i + 1) * width,
+ (int) i * zoom_size + MinColors,
+ opt_wide,
+ opt_zoom);
+ }
/* show a grid of colors, with color names/ numbers on the left */
for (i = (NCURSES_PAIRS_T) (base_row * per_row); i < pairs_max; i++) {
@@ -2088,30 +2346,37 @@ color_test(void)
int col = (i % per_row + 1) * width;
NCURSES_PAIRS_T pair = i;
-#define InxToFG(i) (NCURSES_COLOR_T) ((i % (COLORS - min_colors)) + min_colors)
-#define InxToBG(i) (NCURSES_COLOR_T) ((i / (COLORS - min_colors)) + min_colors)
+ if ((i / per_row) > row_limit)
+ break;
+
+#define InxToFG(i) (int)((((unsigned long)(i) * (unsigned long)zoom_size) % (unsigned long)(colors_max1 - MinColors)) + (unsigned long)MinColors)
+#define InxToBG(i) (int)((((unsigned long)(i) * (unsigned long)zoom_size) / (unsigned long)(colors_max1 - MinColors)) + (unsigned long)MinColors)
if (row >= 0 && move(row, col) != ERR) {
- NCURSES_COLOR_T fg = InxToFG(i);
- NCURSES_COLOR_T bg = InxToBG(i);
+ NCURSES_COLOR_T fg = (NCURSES_COLOR_T) InxToFG(i);
+ NCURSES_COLOR_T bg = (NCURSES_COLOR_T) InxToBG(i);
init_pair(pair, fg, bg);
- attron((attr_t) COLOR_PAIR(pair));
+ attron(COLOR_PAIR(pair));
if (opt_acsc)
- attron((attr_t) A_ALTCHARSET);
+ attron(A_ALTCHARSET);
if (opt_bold)
- attron((attr_t) A_BOLD);
+ attron(A_BOLD);
if (opt_revs)
- attron((attr_t) A_REVERSE);
+ attron(A_REVERSE);
if (opt_nums) {
- sprintf(numbered, "{%02X}", (int) i);
+ _nc_SPRINTF(numbered, _nc_SLIMIT((size_t) (COLS + 1))
+ "{%02X}", (int) i);
hello = numbered;
}
printw("%-*.*s", width, width, hello);
(void) attrset(A_NORMAL);
- if ((i % per_row) == 0 && InxToFG(i) == min_colors) {
- show_color_name(row, 0, InxToBG(i), opt_wide);
+ if ((i % per_row) == 0 && InxToFG(i) == MinColors) {
+ show_color_name(row, 0,
+ InxToBG(i),
+ opt_wide,
+ opt_zoom);
}
++shown;
} else if (shown) {
@@ -2132,6 +2397,12 @@ color_test(void)
case 'B':
opt_bold = TRUE;
break;
+ case 'c':
+ colors_max = color_cycle(colors_max, -1);
+ break;
+ case 'C':
+ colors_max = color_cycle(colors_max, 1);
+ break;
case 'n':
opt_nums = FALSE;
break;
@@ -2153,6 +2424,22 @@ color_test(void)
case 'W':
set_color_test(opt_wide, TRUE);
break;
+ case 'z':
+ if (opt_zoom <= 0) {
+ beep();
+ } else {
+ --opt_zoom;
+ goto reloop;
+ }
+ break;
+ case 'Z':
+ if ((1 << opt_zoom) >= colors_max) {
+ beep();
+ } else {
+ ++opt_zoom;
+ goto reloop;
+ }
+ break;
case CTRL('p'):
case KEY_UP:
if (base_row <= 0) {
@@ -2192,7 +2479,7 @@ color_test(void)
}
}
break;
- case '?':
+ case HELP_KEY_1:
if ((helpwin = newwin(LINES - 1, COLS - 2, 0, 0)) != 0) {
box(helpwin, 0, 0);
color_legend(helpwin, FALSE);
@@ -2208,22 +2495,38 @@ color_test(void)
erase();
endwin();
+
+ free(numbered);
+ return OK;
}
#if USE_WIDEC_SUPPORT
+
+#if USE_EXTENDED_COLOR
+#define InitExtendedPair(p,f,g) init_extended_pair((p),(f),(g))
+#define ExtendedColorSet(p) color_set((NCURSES_PAIRS_T) (p), &(p))
+#define EXTENDED_PAIRS_T int
+#else
+#define InitExtendedPair(p,f,g) init_pair((NCURSES_PAIRS_T) (p),(NCURSES_COLOR_T)(f),(NCURSES_COLOR_T)(g))
+#define ExtendedColorSet(p) color_set((NCURSES_PAIRS_T) (p), NULL)
+#define EXTENDED_PAIRS_T NCURSES_PAIRS_T
+#endif
+
/* generate a color test pattern */
-static void
-wide_color_test(void)
+static int
+x_color_test(bool recur GCC_UNUSED)
{
- int i;
+ long i;
int top = 0, width;
int base_row = 0;
int grid_top = top + 3;
int page_size = (LINES - grid_top);
- int pairs_max = (unsigned short) (-1);
+ int pairs_max;
+ int colors_max = COLORS;
+ int col_limit;
int row_limit;
int per_row;
- char numbered[80];
+ char *numbered = 0;
const char *hello;
bool done = FALSE;
bool opt_acsc = FALSE;
@@ -2232,32 +2535,52 @@ wide_color_test(void)
bool opt_wide = FALSE;
bool opt_nums = FALSE;
bool opt_xchr = FALSE;
- wchar_t buffer[80];
+ int opt_zoom = 0;
+ wchar_t *buffer = 0;
WINDOW *helpwin;
- if (COLORS * COLORS == COLOR_PAIRS) {
- int limit = (COLORS - min_colors) * (COLORS - min_colors);
- if (pairs_max > limit)
- pairs_max = limit;
- } else {
- if (pairs_max > COLOR_PAIRS)
- pairs_max = COLOR_PAIRS;
+ if (!UseColors) {
+ Cannot("does not support color.");
+ return ERR;
}
+ numbered = typeCalloc(char, COLS + 1);
+ buffer = typeCalloc(wchar_t, COLS + 1);
+ done = ((COLS < 16) || (numbered == 0) || (buffer == 0));
+ /*
+ * Because the number of colors is usually a power of two, we also use
+ * a power of two for the number of colors shown per line (to be tidy).
+ */
+ for (col_limit = 1; col_limit * 2 < COLS; col_limit *= 2) ;
+
+ reloop:
while (!done) {
int shown = 0;
+ int zoom_size = (1 << opt_zoom);
+ int colors_max1 = colors_max / zoom_size;
+ double colors_max2 = (double) colors_max1 * (double) colors_max1;
+
+ pairs_max = ((unsigned) (-1)) / 2;
+ if (colors_max2 <= COLOR_PAIRS) {
+ int limit = (colors_max1 - MinColors) * (colors_max1 - MinColors);
+ if (pairs_max > limit)
+ pairs_max = limit;
+ }
+ if (pairs_max > COLOR_PAIRS)
+ pairs_max = COLOR_PAIRS;
+ if (pairs_max < colors_max1)
+ pairs_max = colors_max1;
- /* this assumes an 80-column line */
if (opt_wide) {
width = 4;
hello = "Test";
- per_row = (COLORS > 8) ? 16 : 8;
+ per_row = (col_limit / ((colors_max1 > 8) ? width : 8));
} else {
width = 8;
hello = "Hello";
- per_row = 8;
+ per_row = (col_limit / width);
}
- per_row -= min_colors;
+ per_row -= MinColors;
if (opt_xchr) {
make_fullwidth_text(buffer, hello);
@@ -2270,9 +2593,14 @@ wide_color_test(void)
row_limit = (pairs_max + per_row - 1) / per_row;
move(0, 0);
- (void) printw("There are %d color pairs and %d colors%s\n",
- pairs_max, COLORS,
- min_colors ? " besides 'default'" : "");
+ (void) printw("There are %d color pairs and %d colors",
+ pairs_max, COLORS);
+ if (colors_max1 != COLORS)
+ (void) printw(" (using %d colors)", colors_max1);
+ if (MinColors)
+ (void) addstr(" besides 'default'");
+ if (opt_zoom)
+ (void) printw(" zoom:%d", opt_zoom);
clrtobot();
MvPrintw(top + 1, 0,
@@ -2282,27 +2610,37 @@ wide_color_test(void)
opt_bold ? "on" : "off");
/* show color names/numbers across the top */
- for (i = 0; i < per_row; i++)
- show_color_name(top + 2, (i + 1) * width, i + min_colors, opt_wide);
+ for (i = 0; i < per_row; i++) {
+ show_color_name(top + 2,
+ ((int) i + 1) * width,
+ (int) i * zoom_size + MinColors,
+ opt_wide,
+ opt_zoom);
+ }
/* show a grid of colors, with color names/ numbers on the left */
for (i = (base_row * per_row); i < pairs_max; i++) {
- int row = grid_top + (i / per_row) - base_row;
- int col = (i % per_row + 1) * width;
- NCURSES_PAIRS_T pair = (NCURSES_PAIRS_T) i;
+ int row = grid_top + ((int) i / per_row) - base_row;
+ int col = ((int) i % per_row + 1) * width;
+ int pair = (int) i;
+
+ if ((i / per_row) > row_limit)
+ break;
if (row >= 0 && move(row, col) != ERR) {
- init_pair(pair, InxToFG(i), InxToBG(i));
- (void) color_set(pair, NULL);
+ InitExtendedPair(pair, InxToFG(i), InxToBG(i));
+ (void) ExtendedColorSet(pair);
if (opt_acsc)
- attr_on((attr_t) A_ALTCHARSET, NULL);
+ attr_on(WA_ALTCHARSET, NULL);
if (opt_bold)
- attr_on((attr_t) A_BOLD, NULL);
+ attr_on(WA_BOLD, NULL);
if (opt_revs)
- attr_on((attr_t) A_REVERSE, NULL);
+ attr_on(WA_REVERSE, NULL);
if (opt_nums) {
- sprintf(numbered, "{%02X}", i);
+ _nc_SPRINTF(numbered,
+ _nc_SLIMIT((size_t) (COLS + 1) * sizeof(wchar_t))
+ "{%02X}", (unsigned) i);
if (opt_xchr) {
make_fullwidth_text(buffer, numbered);
} else {
@@ -2312,8 +2650,11 @@ wide_color_test(void)
addnwstr(buffer, width);
(void) attr_set(A_NORMAL, 0, NULL);
- if ((i % per_row) == 0 && InxToFG(i) == min_colors) {
- show_color_name(row, 0, InxToBG(i), opt_wide);
+ if ((i % per_row) == 0 && InxToFG(i) == MinColors) {
+ show_color_name(row, 0,
+ InxToBG(i),
+ opt_wide,
+ opt_zoom);
}
++shown;
} else if (shown) {
@@ -2334,6 +2675,12 @@ wide_color_test(void)
case 'B':
opt_bold = TRUE;
break;
+ case 'c':
+ colors_max = color_cycle(colors_max, -1);
+ break;
+ case 'C':
+ colors_max = color_cycle(colors_max, 1);
+ break;
case 'n':
opt_nums = FALSE;
break;
@@ -2361,6 +2708,22 @@ wide_color_test(void)
case 'X':
opt_xchr = TRUE;
break;
+ case 'z':
+ if (opt_zoom <= 0) {
+ beep();
+ } else {
+ --opt_zoom;
+ goto reloop;
+ }
+ break;
+ case 'Z':
+ if ((1 << opt_zoom) >= colors_max) {
+ beep();
+ } else {
+ ++opt_zoom;
+ goto reloop;
+ }
+ break;
case CTRL('p'):
case KEY_UP:
if (base_row <= 0) {
@@ -2400,7 +2763,7 @@ wide_color_test(void)
}
}
break;
- case '?':
+ case HELP_KEY_1:
if ((helpwin = newwin(LINES - 1, COLS - 2, 0, 0)) != 0) {
box(helpwin, 0, 0);
color_legend(helpwin, TRUE);
@@ -2416,9 +2779,14 @@ wide_color_test(void)
erase();
endwin();
+
+ free(numbered);
+ free(buffer);
+ return OK;
}
#endif /* USE_WIDEC_SUPPORT */
+#if HAVE_COLOR_CONTENT
static void
change_color(NCURSES_PAIRS_T current, int field, int value, int usebase)
{
@@ -2443,7 +2811,7 @@ change_color(NCURSES_PAIRS_T current, int field, int value, int usebase)
}
static void
-init_all_colors(void)
+reset_all_colors(void)
{
NCURSES_PAIRS_T c;
@@ -2454,23 +2822,122 @@ init_all_colors(void)
all_colors[c].blue);
}
-#define scaled_rgb(n) ((255 * (n)) / 1000)
+#define okCOLOR(n) ((n) >= 0 && (n) < MaxColors)
+#define okRGB(n) ((n) >= 0 && (n) <= 1000)
+#define DecodeRGB(n) (NCURSES_COLOR_T) ((n * 1000) / 0xffff)
static void
-color_edit(void)
+init_all_colors(bool xterm_colors, char *palette_file)
+{
+ NCURSES_PAIRS_T cp;
+ all_colors = typeMalloc(RGB_DATA, (unsigned) MaxColors);
+ if (!all_colors)
+ failed("all_colors");
+ for (cp = 0; cp < MaxColors; ++cp) {
+ color_content(cp,
+ &all_colors[cp].red,
+ &all_colors[cp].green,
+ &all_colors[cp].blue);
+ }
+ /* xterm and compatible terminals can read results of an OSC string
+ * asking for the current color palette.
+ */
+ if (xterm_colors) {
+ int n;
+ char result[BUFSIZ];
+ int check_n;
+ unsigned check_r, check_g, check_b;
+
+ raw();
+ noecho();
+
+ for (n = 0; n < MaxColors; ++n) {
+ int got;
+
+ fprintf(stderr, "\033]4;%d;?\007", n);
+ got = (int) read(0, result, sizeof(result) - 1);
+ if (got < 0)
+ break;
+ result[got] = '\0';
+ if (sscanf(result, "\033]4;%d;rgb:%x/%x/%x\007",
+ &check_n,
+ &check_r,
+ &check_g,
+ &check_b) == 4 &&
+ check_n == n) {
+ all_colors[n].red = DecodeRGB(check_r);
+ all_colors[n].green = DecodeRGB(check_g);
+ all_colors[n].blue = DecodeRGB(check_b);
+ } else {
+ break;
+ }
+ }
+ reset_prog_mode();
+ }
+ if (palette_file != 0) {
+ FILE *fp = fopen(palette_file, "r");
+ if (fp != 0) {
+ char buffer[BUFSIZ];
+ int red, green, blue;
+ int scale = 1000;
+ int c;
+ while (fgets(buffer, sizeof(buffer), fp) != 0) {
+ if (sscanf(buffer, "scale:%d", &c) == 1) {
+ scale = c;
+ } else if (sscanf(buffer, "%d:%d %d %d",
+ &c,
+ &red,
+ &green,
+ &blue) == 4
+ && okCOLOR(c)
+ && okRGB(red)
+ && okRGB(green)
+ && okRGB(blue)) {
+#define Scaled(n) (NCURSES_COLOR_T) (((n) * 1000) / scale)
+ all_colors[c].red = Scaled(red);
+ all_colors[c].green = Scaled(green);
+ all_colors[c].blue = Scaled(blue);
+ }
+ }
+ fclose(fp);
+ }
+ }
+}
+
+#define scaled_rgb(n) ((255 * (n)) / 1000)
+
+static int
+color_edit(bool recur GCC_UNUSED)
/* display the color test pattern, without trying to edit colors */
{
int i;
- int current = 0;
- int this_c = 0, value = 0, field = 0;
+ int current;
+ int this_c, value, field;
int last_c;
- int top_color = 0;
- int page_size = (LINES - 6);
+ int top_color;
+ int page_size;
+
+ if (!UseColors) {
+ Cannot("does not support color.");
+ return ERR;
+ } else if (!can_change_color()) {
+ Cannot("has hardwired color values.");
+ return ERR;
+ }
- init_all_colors();
- refresh();
+ reset_all_colors();
+#ifdef KEY_RESIZE
+ retry:
+#endif
+ current = 0;
+ this_c = 0;
+ value = 0;
+ field = 0;
+ top_color = 0;
+ page_size = (LINES - 6);
+ erase();
- for (i = 0; i < max_colors; i++)
+ for (i = 0; i < MaxColors; i++)
init_pair((NCURSES_PAIRS_T) i,
(NCURSES_COLOR_T) COLOR_WHITE,
(NCURSES_COLOR_T) i);
@@ -2486,15 +2953,15 @@ color_edit(void)
for (i = (NCURSES_COLOR_T) top_color;
(i - top_color < page_size)
- && (i < max_colors); i++) {
+ && (i < MaxColors); i++) {
char numeric[80];
- sprintf(numeric, "[%d]", i);
+ _nc_SPRINTF(numeric, _nc_SLIMIT(sizeof(numeric)) "[%d]", i);
MvPrintw(2 + i - top_color, 0, "%c %-8s:",
(i == current ? '>' : ' '),
(i < (int) SIZEOF(the_color_names)
? the_color_names[i] : numeric));
- (void) attrset((attr_t) COLOR_PAIR(i));
+ (void) attrset(AttrArg(COLOR_PAIR(i), 0));
addstr(" ");
(void) attrset(A_NORMAL);
@@ -2537,6 +3004,21 @@ color_edit(void)
value = 0;
switch (this_c) {
+#ifdef KEY_RESIZE
+ case KEY_RESIZE:
+ move(0, 0);
+ goto retry;
+#endif
+ case '!':
+ ShellOut(FALSE);
+ /* FALLTHRU */
+ case CTRL('r'):
+ endwin();
+ refresh();
+ break;
+ case CTRL('l'):
+ refresh();
+ break;
case CTRL('b'):
case KEY_PPAGE:
if (current > 0)
@@ -2547,7 +3029,7 @@ color_edit(void)
case CTRL('f'):
case KEY_NPAGE:
- if (current < (max_colors - 1))
+ if (current < (MaxColors - 1))
current += (page_size - 1);
else
beep();
@@ -2555,18 +3037,20 @@ color_edit(void)
case CTRL('p'):
case KEY_UP:
- current = (current == 0 ? (max_colors - 1) : current - 1);
+ current = (current == 0 ? (MaxColors - 1) : current - 1);
break;
case CTRL('n'):
case KEY_DOWN:
- current = (current == (max_colors - 1) ? 0 : current + 1);
+ current = (current == (MaxColors - 1) ? 0 : current + 1);
break;
+ case '\t':
case KEY_RIGHT:
field = (field == 2 ? 0 : field + 1);
break;
+ case KEY_BTAB:
case KEY_LEFT:
field = (field == 0 ? 2 : field - 1);
break;
@@ -2596,7 +3080,7 @@ color_edit(void)
change_color((NCURSES_PAIRS_T) current, field, value, 0);
break;
- case '?':
+ case HELP_KEY_1:
erase();
P(" RGB Value Editing Help");
P("");
@@ -2609,6 +3093,8 @@ color_edit(void)
P("To increment or decrement a value, use the same procedure, but finish");
P("with a `+' or `-'.");
P("");
+ P("Use `!' to shell-out, ^R or ^L to repaint the screen.");
+ P("");
P("Press 'm' to invoke the top-level menu with the current color settings.");
P("To quit, do ESC");
@@ -2619,7 +3105,7 @@ color_edit(void)
case 'm':
endwin();
main_menu(FALSE);
- for (i = 0; i < max_colors; i++)
+ for (i = 0; i < MaxColors; i++)
init_pair((NCURSES_PAIRS_T) i,
(NCURSES_COLOR_T) COLOR_WHITE,
(NCURSES_COLOR_T) i);
@@ -2636,8 +3122,8 @@ color_edit(void)
if (current < 0)
current = 0;
- if (current >= max_colors)
- current = max_colors - 1;
+ if (current >= MaxColors)
+ current = MaxColors - 1;
if (current < top_color)
top_color = current;
if (current - top_color >= page_size)
@@ -2646,17 +3132,19 @@ color_edit(void)
MvPrintw(LINES - 1, 0, "Number: %d", value);
clrtoeol();
} while
- (!isQuit(this_c));
+ (!isQuit(this_c, TRUE));
erase();
/*
* ncurses does not reset each color individually when calling endwin().
*/
- init_all_colors();
+ reset_all_colors();
endwin();
+ return OK;
}
+#endif /* HAVE_COLOR_CONTENT */
/****************************************************************************
*
@@ -2688,12 +3176,39 @@ cycle_attr(int ch, unsigned *at_code, chtype *attr, ATTR_TBL * list, unsigned li
return result;
}
+#if USE_WIDEC_SUPPORT
+static bool
+cycle_w_attr(int ch, unsigned *at_code, attr_t *attr, W_ATTR_TBL * list, unsigned limit)
+{
+ bool result = TRUE;
+
+ switch (ch) {
+ case 'v':
+ if ((*at_code += 1) >= limit)
+ *at_code = 0;
+ break;
+ case 'V':
+ if (*at_code == 0)
+ *at_code = limit - 1;
+ else
+ *at_code -= 1;
+ break;
+ default:
+ result = FALSE;
+ break;
+ }
+ if (result)
+ *attr = list[*at_code].attr;
+ return result;
+}
+#endif
+
static bool
cycle_colors(int ch, int *fg, int *bg, NCURSES_PAIRS_T *pair)
{
bool result = FALSE;
- if (use_colors) {
+ if (UseColors) {
result = TRUE;
switch (ch) {
case 'F':
@@ -2791,8 +3306,8 @@ call_slk_color(int fg, int bg)
}
#endif
-static void
-slk_test(void)
+static int
+slk_test(bool recur GCC_UNUSED)
/* exercise the soft keys */
{
int c, fmt = 1;
@@ -2810,7 +3325,7 @@ slk_test(void)
c = CTRL('l');
#if HAVE_SLK_COLOR
- if (use_colors) {
+ if (UseColors) {
call_slk_color(fg, bg);
}
#endif
@@ -2838,7 +3353,7 @@ slk_test(void)
case 's':
MvPrintw(SLK_WORK, 0, "Press Q to stop the scrolling-test: ");
while ((c = Getchar()) != 'Q' && (c != ERR))
- addch((chtype) c);
+ AddCh(c);
break;
case 'd':
@@ -2866,9 +3381,9 @@ slk_test(void)
case '7':
case '8':
MvAddStr(SLK_WORK, 0, "Please enter the label value: ");
- strcpy(buf, "");
+ _nc_STRCPY(buf, "", sizeof(buf));
if ((s = slk_label(c - '0')) != 0) {
- strncpy(buf, s, (size_t) 8);
+ _nc_STRNCPY(buf, s, (size_t) 8);
}
wGetstring(stdscr, buf, 8);
slk_set((c - '0'), buf, fmt);
@@ -2895,7 +3410,7 @@ slk_test(void)
}
#if HAVE_SLK_COLOR
if (cycle_colors(c, &fg, &bg, &pair)) {
- if (use_colors) {
+ if (UseColors) {
call_slk_color(fg, bg);
} else {
beep();
@@ -2906,33 +3421,34 @@ slk_test(void)
beep();
break;
}
- } while (!isQuit(c = Getchar()));
+ } while (!isQuit(c = Getchar(), TRUE));
done:
slk_clear();
erase();
endwin();
+ return OK;
}
#if USE_WIDEC_SUPPORT
#define SLKLEN 8
-static void
-wide_slk_test(void)
+static int
+x_slk_test(bool recur GCC_UNUSED)
/* exercise the soft keys */
{
int c, fmt = 1;
wchar_t buf[SLKLEN + 1];
char *s;
- chtype attr = A_NORMAL;
+ attr_t attr = WA_NORMAL;
unsigned at_code = 0;
int fg = COLOR_BLACK;
int bg = COLOR_WHITE;
NCURSES_PAIRS_T pair = 0;
- ATTR_TBL my_list[SIZEOF(attrs_to_test)];
- unsigned my_size = init_attr_list(my_list, term_attrs());
+ W_ATTR_TBL my_list[SIZEOF(w_attrs_to_test)];
+ unsigned my_size = init_w_attr_list(my_list, term_attrs());
c = CTRL('l');
- if (use_colors) {
+ if (UseColors) {
call_slk_color(fg, bg);
}
do {
@@ -2958,7 +3474,7 @@ wide_slk_test(void)
case 's':
MvPrintw(SLK_WORK, 0, "Press Q to stop the scrolling-test: ");
while ((c = Getchar()) != 'Q' && (c != ERR))
- addch((chtype) c);
+ AddCh(c);
break;
case 'd':
@@ -2991,14 +3507,15 @@ wide_slk_test(void)
char *temp = strdup(s);
size_t used = strlen(temp);
size_t want = SLKLEN;
- size_t test;
#ifndef state_unused
mbstate_t state;
#endif
buf[0] = L'\0';
while (want > 0 && used != 0) {
+ size_t test;
const char *base = s;
+
reset_mbytes(state);
test = count_mbytes(base, 0, &state);
if (test == (size_t) -1) {
@@ -3024,13 +3541,13 @@ wide_slk_test(void)
goto done;
case 'F':
- if (use_colors) {
+ if (UseColors) {
fg = (NCURSES_COLOR_T) ((fg + 1) % COLORS);
call_slk_color(fg, bg);
}
break;
case 'B':
- if (use_colors) {
+ if (UseColors) {
bg = (NCURSES_COLOR_T) ((bg + 1) % COLORS);
call_slk_color(fg, bg);
}
@@ -3041,7 +3558,7 @@ wide_slk_test(void)
break;
#endif
default:
- if (cycle_attr(c, &at_code, &attr, my_list, my_size)) {
+ if (cycle_w_attr(c, &at_code, &attr, my_list, my_size)) {
slk_attr_set(attr, (NCURSES_COLOR_T) (fg || bg), NULL);
slk_touch();
slk_noutrefresh();
@@ -3049,7 +3566,7 @@ wide_slk_test(void)
}
#if HAVE_SLK_COLOR
if (cycle_colors(c, &fg, &bg, &pair)) {
- if (use_colors) {
+ if (UseColors) {
call_slk_color(fg, bg);
} else {
beep();
@@ -3060,12 +3577,13 @@ wide_slk_test(void)
beep();
break;
}
- } while (!isQuit(c = Getchar()));
+ } while (!isQuit(c = Getchar(), TRUE));
done:
slk_clear();
erase();
endwin();
+ return OK;
}
#endif
#endif /* SLK_INIT */
@@ -3090,7 +3608,7 @@ show_256_chars(int repeat, attr_t attr, NCURSES_PAIRS_T pair)
int col = (int) (5 * (code % 16));
IGNORE_RC(mvaddch(row, col, colored_chtype(code, attr, pair)));
for (count = 1; count < repeat; ++count) {
- addch(colored_chtype(code, attr, pair));
+ AddCh(colored_chtype(code, attr, pair));
}
}
@@ -3124,7 +3642,7 @@ show_upper_chars(int base, int pagesize, int repeat, attr_t attr, NCURSES_PAIRS_
int row = 2 + ((int) (code - first) % (pagesize / 2));
int col = ((int) (code - first) / (pagesize / 2)) * COLS / 2;
char tmp[80];
- sprintf(tmp, "%3u (0x%x)", code, code);
+ _nc_SPRINTF(tmp, _nc_SLIMIT(sizeof(tmp)) "%3u (0x%x)", code, code);
MvPrintw(row, col, "%*s: ", COLS / 4, tmp);
do {
@@ -3134,7 +3652,7 @@ show_upper_chars(int base, int pagesize, int repeat, attr_t attr, NCURSES_PAIRS_
if (C1) {
/* (yes, this _is_ crude) */
while ((reply = Getchar()) != ERR) {
- addch(UChar(reply));
+ AddCh(UChar(reply));
napms(10);
}
nodelay(stdscr, FALSE);
@@ -3179,7 +3697,7 @@ show_pc_chars(int repeat, attr_t attr, NCURSES_PAIRS_T pair)
*/
break;
default:
- addch(colored_chtype(code, A_ALTCHARSET | attr, pair));
+ AddCh(colored_chtype(code, A_ALTCHARSET | attr, pair));
break;
}
} while (--count > 0);
@@ -3216,7 +3734,6 @@ show_box_chars(int repeat, attr_t attr, NCURSES_PAIRS_T pair)
MvAddCh(LINES / 2, 0, colored_chtype(ACS_LTEE, attr, pair));
MvAddCh(LINES / 2, COLS - 1, colored_chtype(ACS_RTEE, attr, pair));
/* *INDENT-ON* */
-
}
static int
@@ -3228,7 +3745,7 @@ show_1_acs(int n, int repeat, const char *name, chtype code)
MvPrintw(row, col, "%*s : ", COLS / 4, name);
do {
- addch(code);
+ AddCh(code);
} while (--repeat > 0);
return n + 1;
}
@@ -3290,10 +3807,11 @@ show_acs_chars(int repeat, attr_t attr, NCURSES_PAIRS_T pair)
n = show_1_acs(n, repeat, BOTH(ACS_S7));
(void) show_1_acs(n, repeat, BOTH(ACS_S9));
#endif
+#undef BOTH
}
-static void
-acs_display(void)
+static int
+acs_test(bool recur GCC_UNUSED)
{
int c = 'a';
int pagesize = 32;
@@ -3389,7 +3907,7 @@ acs_display(void)
MvPrintw(LINES - 2, 0,
"Select: a=ACS, w=all x=box, %s0=C1, 1-3,+/- non-ASCII, </> repeat, ESC=quit",
pch_kludge);
- if (use_colors) {
+ if (UseColors) {
MvPrintw(LINES - 1, 0,
"v/V, f/F, b/B cycle through video attributes (%s) and color %d/%d.",
my_list[at_code].name,
@@ -3400,26 +3918,26 @@ acs_display(void)
my_list[at_code].name);
}
refresh();
- } while (!isQuit(c = Getchar()));
+ } while (!isQuit(c = Getchar(), TRUE));
Pause();
erase();
endwin();
+ return OK;
}
#if USE_WIDEC_SUPPORT
static cchar_t *
merge_wide_attr(cchar_t *dst, const cchar_t *src, attr_t attr, NCURSES_PAIRS_T pair)
{
- int count;
*dst = *src;
do {
+ int count;
TEST_CCHAR(src, count, {
attr |= (test_attrs & A_ALTCHARSET);
setcchar(dst, test_wch, attr, pair, NULL);
- }
- , {
+ }, {
;
});
} while (0);
@@ -3433,15 +3951,15 @@ merge_wide_attr(cchar_t *dst, const cchar_t *src, attr_t attr, NCURSES_PAIRS_T p
* into account, use 256 characters for the page.
*/
static void
-show_paged_widechars(int base,
- int pagesize,
+show_paged_widechars(unsigned base,
+ unsigned pagesize,
int repeat,
int space,
attr_t attr,
NCURSES_PAIRS_T pair)
{
- int first = base * pagesize;
- int last = first + pagesize - 1;
+ unsigned first = base * pagesize;
+ unsigned last = first + pagesize - 1;
int per_line = 16;
cchar_t temp;
wchar_t code;
@@ -3452,8 +3970,8 @@ show_paged_widechars(int base,
MvPrintw(0, 20, "Display of Character Codes %#x to %#x", first, last);
attroff(A_BOLD);
- for (code = first; (int) code <= last; code++) {
- int row = (2 + ((int) code - first) / per_line);
+ for (code = (wchar_t) first; code <= (wchar_t) last; code++) {
+ int row = (2 + (int) (code - (wchar_t) first) / per_line);
int col = 5 * ((int) code % per_line);
int count;
@@ -3462,7 +3980,7 @@ show_paged_widechars(int base,
setcchar(&temp, codes, attr, pair, 0);
move(row, col);
if (wcwidth(code) == 0 && code != 0) {
- addch((chtype) space |
+ AddCh((chtype) space |
(A_REVERSE ^ attr) |
(attr_t) COLOR_PAIR(pair));
}
@@ -3474,26 +3992,26 @@ show_paged_widechars(int base,
}
static void
-show_upper_widechars(int first, int repeat, int space, attr_t attr, NCURSES_PAIRS_T pair)
+show_upper_widechars(unsigned first, int repeat, int space, attr_t attr, NCURSES_PAIRS_T pair)
{
cchar_t temp;
wchar_t code;
- int last = first + 31;
+ unsigned last = first + 31;
erase();
attron(A_BOLD);
MvPrintw(0, 20, "Display of Character Codes %d to %d", first, last);
attroff(A_BOLD);
- for (code = first; (int) code <= last; code++) {
- int row = 2 + ((code - first) % 16);
- int col = ((code - first) / 16) * COLS / 2;
+ for (code = (wchar_t) first; code <= (wchar_t) last; code++) {
+ int row = 2 + ((int) (code - (wchar_t) first) % 16);
+ int col = ((int) (code - (wchar_t) first) / 16) * COLS / 2;
wchar_t codes[10];
char tmp[80];
int count = repeat;
- int y, x;
- sprintf(tmp, "%3ld (0x%lx)", (long) code, (long) code);
+ _nc_SPRINTF(tmp, _nc_SLIMIT(sizeof(tmp))
+ "%3ld (0x%lx)", (long) code, (long) code);
MvPrintw(row, col, "%*s: ", COLS / 4, tmp);
memset(&codes, 0, sizeof(codes));
@@ -3501,6 +4019,8 @@ show_upper_widechars(int first, int repeat, int space, attr_t attr, NCURSES_PAIR
setcchar(&temp, codes, attr, pair, 0);
do {
+ int y, x;
+
/*
* Give non-spacing characters something to combine with. If we
* don't, they'll bunch up in a heap on the space after the ":".
@@ -3508,7 +4028,7 @@ show_upper_widechars(int first, int repeat, int space, attr_t attr, NCURSES_PAIR
* the display.
*/
if (wcwidth(code) == 0) {
- addch((chtype) space |
+ AddCh((chtype) space |
(A_REVERSE ^ attr) |
(attr_t) COLOR_PAIR(pair));
}
@@ -3649,7 +4169,7 @@ show_wacs_chars_double(int repeat, attr_t attr, NCURSES_PAIRS_T pair)
n = show_1_wacs(n, repeat, BOTH2(WACS_DEGREE));
n = show_1_wacs(n, repeat, BOTH2(WACS_DIAMOND));
n = show_1_wacs(n, repeat, BOTH2(WACS_PLMINUS));
- n = show_1_wacs(n, repeat, BOTH2(WACS_PLUS));
+ n = show_1_wacs(n, repeat, BOTH2(WACS_D_PLUS));
#ifdef CURSES_WACS_ARRAY
n = show_1_wacs(n, repeat, BOTH2(WACS_GEQUAL));
@@ -3710,7 +4230,7 @@ show_wacs_chars_thick(int repeat, attr_t attr, NCURSES_PAIRS_T pair)
n = show_1_wacs(n, repeat, BOTH2(WACS_DEGREE));
n = show_1_wacs(n, repeat, BOTH2(WACS_DIAMOND));
n = show_1_wacs(n, repeat, BOTH2(WACS_PLMINUS));
- n = show_1_wacs(n, repeat, BOTH2(WACS_PLUS));
+ n = show_1_wacs(n, repeat, BOTH2(WACS_T_PLUS));
#ifdef CURSES_WACS_ARRAY
n = show_1_wacs(n, repeat, BOTH2(WACS_GEQUAL));
@@ -3761,7 +4281,6 @@ show_wbox_chars(int repeat, attr_t attr, NCURSES_PAIRS_T pair)
(void) mvadd_wch(LINES / 2, 0, MERGE_ATTR(0, WACS_LTEE));
(void) mvadd_wch(LINES / 2, COLS - 1, MERGE_ATTR(0, WACS_RTEE));
/* *INDENT-ON* */
-
}
#undef MERGE_ATTR
@@ -3776,7 +4295,8 @@ show_2_wacs(int n, const char *name, const char *code, attr_t attr, NCURSES_PAIR
MvPrintw(row, col, "%*s : ", COLS / 4, name);
(void) attr_set(attr, pair, 0);
- addstr(strncpy(temp, code, 20));
+ _nc_STRNCPY(temp, code, 20);
+ addstr(temp);
(void) attr_set(A_NORMAL, 0, 0);
return n + 1;
}
@@ -3833,27 +4353,29 @@ show_utf8_chars(int repeat, attr_t attr, NCURSES_PAIRS_T pair)
n = SHOW_UTF8(n, "WACS_S7", "\342\216\274");
(void) SHOW_UTF8(n, "WACS_S9", "\342\216\275");
/* *INDENT-ON* */
-
}
/* display the wide-ACS character set */
-static void
-wide_acs_display(void)
+static int
+x_acs_test(bool recur GCC_UNUSED)
{
int c = 'a';
- int digit = 0;
+ unsigned digit = 0;
int repeat = 1;
int space = ' ';
- int pagesize = 32;
- chtype attr = A_NORMAL;
+ unsigned pagesize = 32;
+ attr_t attr = WA_NORMAL;
int fg = COLOR_BLACK;
int bg = COLOR_BLACK;
unsigned at_code = 0;
NCURSES_PAIRS_T pair = 0;
void (*last_show_wacs) (int, attr_t, NCURSES_PAIRS_T) = 0;
- ATTR_TBL my_list[SIZEOF(attrs_to_test)];
- unsigned my_size = init_attr_list(my_list, term_attrs());
+ W_ATTR_TBL my_list[SIZEOF(w_attrs_to_test)];
+ unsigned my_size = init_w_attr_list(my_list, term_attrs());
+ char at_page[20];
+ bool pending_code = FALSE;
+ at_page[0] = '\0';
do {
switch (c) {
case CTRL('L'):
@@ -3885,15 +4407,40 @@ wide_acs_display(void)
case 'u':
ToggleAcs(last_show_wacs, show_utf8_chars);
break;
+ case '@':
+ pending_code = !pending_code;
+ if (pending_code) {
+ _nc_SPRINTF(at_page, _nc_SLIMIT(sizeof(at_page)) "%02x", digit);
+ } else if (at_page[0] != '\0') {
+ _nc_SPRINTF(at_page, _nc_SLIMIT(sizeof(at_page)) "%x", digit);
+ }
+ break;
default:
- if (c < 256 && isdigit(c)) {
- digit = (c - '0');
+ if (pending_code && isxdigit(c)) {
+ size_t len = strlen(at_page);
+ if (len && at_page[0] == '0') {
+ memmove(at_page, at_page + 1, len--);
+ }
+ if (len < sizeof(at_page) - 1) {
+ at_page[len++] = (char) c;
+ at_page[len] = '\0';
+ }
+ } else if (pending_code
+ && (c == '\b' || c == KEY_BACKSPACE || c == KEY_DC)) {
+ size_t len = strlen(at_page);
+ if (len)
+ at_page[--len] = '\0';
+ } else if (c < 256 && isdigit(c)) {
+ digit = (unsigned) (c - '0');
last_show_wacs = 0;
} else if (c == '+') {
++digit;
+ _nc_SPRINTF(at_page, _nc_SLIMIT(sizeof(at_page)) "%02x", digit);
last_show_wacs = 0;
} else if (c == '-' && digit > 0) {
--digit;
+ _nc_SPRINTF(at_page, _nc_SLIMIT(sizeof(at_page)) "%02x",
+ UChar(digit));
last_show_wacs = 0;
} else if (c == '>' && repeat < (COLS / 4)) {
++repeat;
@@ -3902,7 +4449,7 @@ wide_acs_display(void)
} else if (c == '_') {
space = (space == ' ') ? '_' : ' ';
last_show_wacs = 0;
- } else if (cycle_attr(c, &at_code, &attr, my_list, my_size)
+ } else if (cycle_w_attr(c, &at_code, &attr, my_list, my_size)
|| cycle_colors(c, &fg, &bg, &pair)) {
if (last_show_wacs != 0)
break;
@@ -3921,10 +4468,14 @@ wide_acs_display(void)
}
MvPrintw(LINES - 4, 0,
- "Select: a/d/t WACS, w=all x=box, u UTF-8, ^L repaint");
+ "Select: a/d/t WACS, w=%d/page, @",
+ pagesize);
+ printw("%s",
+ pending_code ? at_page : "page");
+ addstr(", x=box, u UTF-8, ^L repaint");
MvPrintw(LINES - 3, 2,
"0-9,+/- non-ASCII, </> repeat, _ space, ESC=quit");
- if (use_colors) {
+ if (UseColors) {
MvPrintw(LINES - 2, 2,
"v/V, f/F, b/B cycle through video attributes (%s) and color %d/%d.",
my_list[at_code].name,
@@ -3935,11 +4486,12 @@ wide_acs_display(void)
my_list[at_code].name);
}
refresh();
- } while (!isQuit(c = Getchar()));
+ } while (!isQuit(c = Getchar(), TRUE));
Pause();
erase();
endwin();
+ return OK;
}
#endif
@@ -3947,8 +4499,8 @@ wide_acs_display(void)
/*
* Graphic-rendition test (adapted from vttest)
*/
-static void
-test_sgr_attributes(void)
+static int
+sgr_attr_test(bool recur GCC_UNUSED)
{
int pass;
@@ -3956,7 +4508,7 @@ test_sgr_attributes(void)
chtype normal = ((pass == 0 ? A_NORMAL : A_REVERSE)) | BLANK;
/* Use non-default colors if possible to exercise bce a little */
- if (use_colors) {
+ if (UseColors) {
init_pair(1, COLOR_WHITE, COLOR_BLUE);
normal |= (chtype) COLOR_PAIR(1);
}
@@ -4022,6 +4574,7 @@ test_sgr_attributes(void)
bkgdset(A_NORMAL | BLANK);
erase();
endwin();
+ return OK;
}
/****************************************************************************
@@ -4045,13 +4598,10 @@ FRAME
WINDOW *wind;
};
-#if defined(NCURSES_VERSION)
-#if (NCURSES_VERSION_PATCH < 20070331) && NCURSES_EXT_FUNCS
+#if defined(NCURSES_VERSION) && NCURSES_EXT_FUNCS
+#if (NCURSES_VERSION_PATCH < 20070331)
#define is_keypad(win) (win)->_use_keypad
#define is_scrollok(win) (win)->_scroll
-#elif !defined(is_keypad)
-#define is_keypad(win) FALSE
-#define is_scrollok(win) FALSE
#endif
#else
#define is_keypad(win) FALSE
@@ -4087,66 +4637,51 @@ HaveScroll(FRAME * curp)
static void
newwin_legend(FRAME * curp)
{
+#define DATA(num, name) { name, num }
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
- },
+ DATA(0, "^C = create window"),
+ DATA(0, "^N = next window"),
+ DATA(0, "^P = previous window"),
+ DATA(0, "^F = scroll forward"),
+ DATA(0, "^B = scroll backward"),
+ DATA(1, "^K = keypad(%s)"),
+ DATA(2, "^S = scrollok(%s)"),
+ DATA(0, "^W = save window"),
+ DATA(0, "^R = restore window"),
#if HAVE_WRESIZE
- {
- "^X = resize", 0
- },
+ DATA(0, "^X = resize"),
#endif
- {
- "^Q%s = exit", 3
- }
+ DATA(3, "^Q%s = exit")
};
+#undef DATA
size_t n;
- int 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++) {
+ int x;
+
switch (legend[n].code) {
default:
- strcpy(buf, legend[n].msg);
+ _nc_STRCPY(buf, legend[n].msg, sizeof(buf));
break;
case 1:
- sprintf(buf, legend[n].msg, do_keypad ? "yes" : "no");
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ legend[n].msg, do_keypad ? "yes" : "no");
break;
case 2:
- sprintf(buf, legend[n].msg, do_scroll ? "yes" : "no");
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ legend[n].msg, do_scroll ? "yes" : "no");
break;
case 3:
- sprintf(buf, legend[n].msg, do_keypad ? "/ESC" : "");
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ legend[n].msg, do_keypad ? "/ESC" : "");
break;
}
x = getcurx(stdscr);
@@ -4235,8 +4770,8 @@ selectcell(int uli, int ulj, int lri, int lrj)
break;
}
}
- /* FALLTHRU */
#endif
+ /* FALLTHRU */
default:
res.y = uli + i;
res.x = ulj + j;
@@ -4337,14 +4872,14 @@ delete_framed(FRAME * fp, bool showit)
}
delwin(fp->wind);
- np = (fp == fp->next) ? 0 : fp->next;
+ np = (fp == fp->next) ? NULL : fp->next;
free(fp);
}
return np;
}
-static void
-acs_and_scroll(void)
+static int
+scroll_test(bool recur GCC_UNUSED)
/* Demonstrate windows */
{
int c;
@@ -4366,11 +4901,11 @@ acs_and_scroll(void)
switch (c) {
case CTRL('C'):
if ((neww = typeCalloc(FRAME, (size_t) 1)) == 0) {
- failed("acs_and_scroll");
+ failed("scroll_test");
goto breakout;
}
if ((neww->wind = getwindow()) == (WINDOW *) 0) {
- failed("acs_and_scroll");
+ failed("scroll_test");
free(neww);
goto breakout;
}
@@ -4436,10 +4971,14 @@ acs_and_scroll(void)
} else if ((fp = fopen(DUMPFILE, "w")) == (FILE *) 0) {
transient(current, "Can't open screen dump file");
} else {
- (void) putwin(frame_win(current), fp);
+ int rc = putwin(frame_win(current), fp);
(void) fclose(fp);
- current = delete_framed(current, TRUE);
+ if (rc == OK) {
+ current = delete_framed(current, TRUE);
+ } else {
+ transient(current, "Can't write screen dump file");
+ }
}
break;
@@ -4460,7 +4999,7 @@ acs_and_scroll(void)
wrefresh(neww->wind);
} else {
- failed("acs_and_scroll");
+ failed("scroll_test");
}
(void) fclose(fp);
}
@@ -4471,7 +5010,7 @@ acs_and_scroll(void)
case CTRL('X'): /* resize window */
if (current) {
pair *tmp, ul, lr;
- int i, mx, my;
+ int mx, my;
move(0, 0);
clrtoeol();
@@ -4500,11 +5039,13 @@ acs_and_scroll(void)
wclrtobot(current->wind);
wmove(current->wind, lr.y, lr.x);
}
- if (mx > tmp->x - ul.x)
+ if (mx > tmp->x - ul.x) {
+ int i;
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));
@@ -4525,12 +5066,6 @@ acs_and_scroll(void)
break;
#endif /* HAVE_WRESIZE */
- case KEY_F(10): /* undocumented --- use this to test area clears */
- selectcell(0, 0, LINES - 1, COLS - 1);
- clrtobot();
- refresh();
- break;
-
case KEY_UP:
newwin_move(current, -1, 0);
break;
@@ -4574,7 +5109,7 @@ acs_and_scroll(void)
usescr = frame_win(current);
wrefresh(usescr);
} while
- (!isQuit(c = wGetchar(usescr))
+ (!isQuit(c = wGetchar(usescr), TRUE)
&& (c != ERR));
breakout:
@@ -4588,6 +5123,7 @@ acs_and_scroll(void)
noraw();
erase();
endwin();
+ return OK;
}
/****************************************************************************
@@ -4657,7 +5193,7 @@ mkpanel(NCURSES_COLOR_T color, int rows, int cols, int tly, int tlx)
if ((win = newwin(rows, cols, tly, tlx)) != 0) {
if ((pan = new_panel(win)) == 0) {
delwin(win);
- } else if (use_colors) {
+ } else if (UseColors) {
NCURSES_COLOR_T fg = (NCURSES_COLOR_T) ((color == COLOR_BLUE)
? COLOR_WHITE
: COLOR_BLACK);
@@ -4676,7 +5212,7 @@ mkpanel(NCURSES_COLOR_T color, int rows, int cols, int tly, int tlx)
rmpanel(pan)
--------------------------------------------------------------------------*/
static void
-rmpanel(PANEL * pan)
+rmpanel(PANEL *pan)
{
WINDOW *win = panel_window(pan);
del_panel(pan);
@@ -4697,18 +5233,18 @@ pflush(void)
fill_panel(win)
--------------------------------------------------------------------------*/
static void
-init_panel(void)
+init_panel(WINDOW *win)
{
register int y, x;
for (y = 0; y < LINES - 1; y++) {
for (x = 0; x < COLS; x++)
- wprintw(stdscr, "%d", (y + x) % 10);
+ wprintw(win, "%d", (y + x) % 10);
}
}
static void
-fill_panel(PANEL * pan)
+fill_panel(PANEL *pan)
{
WINDOW *win = panel_window(pan);
const char *userptr = (const char *) panel_userptr(pan);
@@ -4729,7 +5265,7 @@ fill_panel(PANEL * pan)
#if USE_WIDEC_SUPPORT
static void
-init_wide_panel(void)
+init_wide_panel(WINDOW *win)
{
int digit;
cchar_t temp[10];
@@ -4741,11 +5277,11 @@ init_wide_panel(void)
int y, x;
getyx(stdscr, y, x);
digit = (y + x / 2) % 10;
- } while (add_wch(&temp[digit]) != ERR);
+ } while (wadd_wch(win, &temp[digit]) != ERR);
}
static void
-fill_wide_panel(PANEL * pan)
+fill_wide_panel(PANEL *pan)
{
WINDOW *win = panel_window(pan);
const char *userptr = (const char *) panel_userptr(pan);
@@ -4768,7 +5304,7 @@ fill_wide_panel(PANEL * pan)
#define MAX_PANELS 5
static void
-canned_panel(PANEL * px[MAX_PANELS + 1], NCURSES_CONST char *cmd)
+canned_panel(PANEL *px[MAX_PANELS + 1], NCURSES_CONST char *cmd)
{
int which = cmd[1] - '0';
@@ -4794,8 +5330,8 @@ canned_panel(PANEL * px[MAX_PANELS + 1], NCURSES_CONST char *cmd)
wait_a_while(nap_msec);
}
-static void
-demo_panels(void (*InitPanel) (void), void (*FillPanel) (PANEL *))
+static int
+demo_panels(void (*InitPanel) (WINDOW *), void (*FillPanel) (PANEL *))
{
int count;
int itmp;
@@ -4804,7 +5340,7 @@ demo_panels(void (*InitPanel) (void), void (*FillPanel) (PANEL *))
scrollok(stdscr, FALSE); /* we don't want stdscr to scroll! */
refresh();
- InitPanel();
+ InitPanel(stdscr);
for (count = 0; count < 5; count++) {
px[1] = mkpanel(COLOR_RED,
LINES / 2 - 2,
@@ -4933,7 +5469,24 @@ demo_panels(void (*InitPanel) (void), void (*FillPanel) (PANEL *))
erase();
endwin();
+ return OK;
}
+
+#if USE_LIBPANEL
+static int
+panel_test(bool recur GCC_UNUSED)
+{
+ return demo_panels(init_panel, fill_panel);
+}
+#endif
+
+#if USE_WIDEC_SUPPORT && USE_LIBPANEL
+static int
+x_panel_test(bool recur GCC_UNUSED)
+{
+ return demo_panels(init_wide_panel, fill_wide_panel);
+}
+#endif
#endif /* USE_LIBPANEL */
/****************************************************************************
@@ -4942,6 +5495,25 @@ demo_panels(void (*InitPanel) (void), void (*FillPanel) (PANEL *))
*
****************************************************************************/
+#if HAVE_NEWPAD
+
+/* 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)
+{
+ if ((to) > (x))
+ MvHLine(y, x, c, (to) - (x));
+}
+
+static void
+do_v_line(int y, int x, chtype c, int to)
+{
+ if ((to) > (y))
+ MvVLine(y, x, c, (to) - (y));
+}
+
#define GRIDSIZE 3
static bool pending_pan = FALSE;
@@ -4984,10 +5556,15 @@ panner_v_cleanup(int from_y, int from_x, int to_y)
}
static void
-fill_pad(WINDOW *panpad, bool pan_lines)
+fill_pad(WINDOW *panpad, bool pan_lines, bool colored)
{
int y, x;
unsigned gridcount = 0;
+ chtype fill = 0;
+#ifdef A_COLOR
+ if (colored)
+ fill = (chtype) COLOR_PAIR(1);
+#endif
wmove(panpad, 0, 0);
for (y = 0; y < getmaxy(panpad); y++) {
@@ -5001,7 +5578,7 @@ fill_pad(WINDOW *panpad, bool pan_lines)
waddch(panpad, pan_lines ? ACS_LTEE : '+');
else
waddch(panpad, (chtype) ((pan_lines ? 'a' : 'A') +
- (int) (gridcount++ % 26)));
+ (int) (gridcount++ % 26)) | fill);
} else if (y % GRIDSIZE == 0)
waddch(panpad, pan_lines ? ACS_HLINE : '-');
else if (x % GRIDSIZE == 0)
@@ -5015,7 +5592,8 @@ fill_pad(WINDOW *panpad, bool pan_lines)
static void
panner(WINDOW *pad,
int top_x, int top_y, int porty, int portx,
- int (*pgetc) (WINDOW *))
+ int (*pgetc) (WINDOW *),
+ bool colored)
{
#if HAVE_GETTIMEOFDAY
struct timeval before, after;
@@ -5052,8 +5630,8 @@ panner(WINDOW *pad,
erase();
/* FALLTHRU */
- case '?':
- if (c == '?')
+ case HELP_KEY_1:
+ if (c == HELP_KEY_1)
show_panner_legend = !show_panner_legend;
panner_legend(LINES - 4);
panner_legend(LINES - 3);
@@ -5062,7 +5640,7 @@ panner(WINDOW *pad,
break;
case 'a':
pan_lines = !pan_lines;
- fill_pad(pad, pan_lines);
+ fill_pad(pad, pan_lines, colored);
pending_pan = FALSE;
break;
@@ -5281,13 +5859,13 @@ padgetch(WINDOW *win)
{
static int count;
static int last;
- int c;
if ((pending_pan = (count > 0)) != FALSE) {
count--;
pending_pan = (count != 0);
} else {
for (;;) {
+ int c;
switch (c = wGetchar(win)) {
case '!':
ShellOut(FALSE);
@@ -5348,18 +5926,24 @@ padgetch(WINDOW *win)
#define PAD_HIGH 200
#define PAD_WIDE 200
-static void
-demo_pad(void)
+static int
+pad_test(bool recur GCC_UNUSED)
/* Demonstrate pads. */
{
WINDOW *panpad = newpad(PAD_HIGH, PAD_WIDE);
if (panpad == 0) {
Cannot("cannot create requested pad");
- return;
+ return ERR;
}
-
- fill_pad(panpad, FALSE);
+#ifdef A_COLOR
+ if (UseColors) {
+ init_pair(1, COLOR_BLACK, COLOR_GREEN);
+ init_pair(2, COLOR_CYAN, COLOR_BLUE);
+ wbkgd(panpad, (chtype) (COLOR_PAIR(2) | ' '));
+ }
+#endif
+ fill_pad(panpad, FALSE, TRUE);
panner_legend(LINES - 4);
panner_legend(LINES - 3);
@@ -5372,12 +5956,14 @@ 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, TRUE);
delwin(panpad);
endwin();
erase();
+ return OK;
}
+#endif /* HAVE_NEWPAD */
/****************************************************************************
*
@@ -5395,10 +5981,11 @@ Continue(WINDOW *win)
wGetchar(win);
}
-static void
-flushinp_test(WINDOW *win)
+static int
+flushinp_test(bool recur GCC_UNUSED)
/* Input test, adapted from John Burnell's PDCurses tester */
{
+ WINDOW *win = stdscr;
int w, h, bx, by, sw, sh, i;
WINDOW *subWin;
@@ -5409,10 +5996,10 @@ flushinp_test(WINDOW *win)
sw = w / 3;
sh = h / 3;
if ((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) == 0)
- return;
+ return ERR;
#ifdef A_COLOR
- if (use_colors) {
+ if (UseColors) {
init_pair(2, COLOR_CYAN, COLOR_BLUE);
wbkgd(subWin, (chtype) (COLOR_PAIR(2) | ' '));
}
@@ -5476,6 +6063,7 @@ flushinp_test(WINDOW *win)
Continue(win);
cbreak();
+ return OK;
}
/****************************************************************************
@@ -5533,8 +6121,8 @@ static CONST_MENUS char *animals[] =
(char *) 0
};
-static void
-menu_test(void)
+static int
+menu_test(bool recur GCC_UNUSED)
{
MENU *m;
ITEM *items[SIZEOF(animals)];
@@ -5596,6 +6184,7 @@ menu_test(void)
#ifdef NCURSES_MOUSE_VERSION
mousemask(0, (mmask_t *) 0);
#endif
+ return OK;
}
#ifdef TRACE
@@ -5630,29 +6219,31 @@ static char *
tracetrace(unsigned tlevel)
{
static char *buf;
+ static size_t need = 12;
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 = typeMalloc(char, need);
if (!buf)
failed("tracetrace");
}
- sprintf(buf, "0x%02x = {", tlevel);
+ _nc_SPRINTF(buf, _nc_SLIMIT(need) "0x%02x = {", tlevel);
if (tlevel == 0) {
- sprintf(buf + strlen(buf), "%s, ", t_tbl[0].name);
+ _nc_STRCAT(buf, t_tbl[0].name, need);
+ _nc_STRCAT(buf, ", ", need);
} else {
for (n = 1; t_tbl[n].name != 0; n++)
if ((tlevel & t_tbl[n].mask) == t_tbl[n].mask) {
- strcat(buf, t_tbl[n].name);
- strcat(buf, ", ");
+ _nc_STRCAT(buf, t_tbl[n].name, need);
+ _nc_STRCAT(buf, ", ", need);
}
}
if (buf[strlen(buf) - 2] == ',')
buf[strlen(buf) - 2] = '\0';
- return (strcat(buf, "}"));
+ _nc_STRCAT(buf, "}", need);
+ return buf;
}
/* fake a dynamically reconfigurable menu using the 0th entry to deselect
@@ -5694,8 +6285,8 @@ run_trace_menu(MENU * m)
}
}
-static void
-trace_set(void)
+static int
+trace_set(bool recur GCC_UNUSED)
/* interactively set the trace level */
{
MENU *m;
@@ -5751,7 +6342,7 @@ trace_set(void)
for (ip = menu_items(m); *ip; ip++)
if (item_value(*ip))
newtrace |= t_tbl[item_index(*ip)].mask;
- trace(newtrace);
+ curses_trace(newtrace);
Trace(("trace level interactively set to %s", tracetrace(_nc_tracing)));
MvPrintw(LINES - 2, 0,
@@ -5765,6 +6356,8 @@ trace_set(void)
free_menu(m);
for (ip = items; *ip; ip++)
free_item(*ip);
+
+ return OK;
}
#endif /* TRACE */
#endif /* USE_LIBMENU */
@@ -5800,7 +6393,7 @@ make_field(int frow, int fcol, int rows, int cols, bool secure)
}
static void
-display_form(FORM * f)
+display_form(FORM *f)
{
WINDOW *w;
int rows, cols;
@@ -5818,7 +6411,7 @@ display_form(FORM * f)
}
static void
-erase_form(FORM * f)
+erase_form(FORM *f)
{
WINDOW *w = form_win(f);
WINDOW *s = form_sub(f);
@@ -5831,7 +6424,7 @@ erase_form(FORM * f)
}
static int
-edit_secure(FIELD * me, int c)
+edit_secure(FIELD *me, int c)
{
int rows, cols, frow, fcol, nrow, nbuf;
@@ -5841,10 +6434,10 @@ edit_secure(FIELD * me, int c)
size_t have = (source ? strlen(source) : 0) + 1;
size_t need = 80 + have;
char *temp = malloc(need);
- size_t len;
if (temp != 0) {
- strncpy(temp, source ? source : "", have + 1);
+ size_t len;
+ _nc_STRNCPY(temp, source ? source : "", have + 1);
len = (size_t) (char *) field_userptr(me);
if (c <= KEY_MAX) {
if (isgraph(c) && (len + 1) < sizeof(temp)) {
@@ -5897,7 +6490,7 @@ edit_secure(FIELD * me, int c)
}
static int
-form_virtualize(FORM * f, WINDOW *w)
+form_virtualize(FORM *f, WINDOW *w)
{
/* *INDENT-OFF* */
static const struct {
@@ -5946,7 +6539,6 @@ form_virtualize(FORM * f, WINDOW *w)
static int mode = REQ_INS_MODE;
int c = wGetchar(w);
- unsigned n;
FIELD *me = current_field(f);
bool current = TRUE;
@@ -5958,6 +6550,7 @@ form_virtualize(FORM * f, WINDOW *w)
}
c = mode;
} else {
+ unsigned n;
for (n = 0; n < SIZEOF(lookup); n++) {
if (lookup[n].code == c) {
c = lookup[n].result;
@@ -6004,7 +6597,7 @@ form_virtualize(FORM * f, WINDOW *w)
}
static int
-my_form_driver(FORM * form, int c)
+my_form_driver(FORM *form, int c)
{
if (c == (MAX_FORM_COMMAND + 1)
&& form_driver(form, REQ_VALIDATION) == E_OK)
@@ -6089,15 +6682,14 @@ CHAR_CHECK_CB(pw_char_check)
return (isgraph(ch) ? TRUE : FALSE);
}
-static void
-demo_forms(void)
+static int
+form_test(bool recur GCC_UNUSED)
{
- WINDOW *w;
FORM *form;
FIELD *f[12], *secure;
FIELDTYPE *fty_middle = new_fieldtype(mi_field_check, mi_char_check);
FIELDTYPE *fty_passwd = new_fieldtype(pw_field_check, pw_char_check);
- int finished = 0, c;
+ int c;
unsigned n = 0;
#ifdef NCURSES_MOUSE_VERSION
@@ -6147,6 +6739,8 @@ demo_forms(void)
f[n] = (FIELD *) 0;
if ((form = new_form(f)) != 0) {
+ WINDOW *w;
+ int finished = 0;
display_form(form);
@@ -6183,6 +6777,7 @@ demo_forms(void)
#ifdef NCURSES_MOUSE_VERSION
mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0);
#endif
+ return OK;
}
#endif /* USE_LIBFORM */
@@ -6192,6 +6787,75 @@ demo_forms(void)
*
****************************************************************************/
+#if HAVE_COPYWIN /* ...and overlay, overwrite */
+
+static const int overlap_HEAD = 1;
+static const int overlap_FOOT = 6;
+
+static WINDOW *
+make_overlap(int n)
+{
+ WINDOW *result;
+ int y, x;
+
+ getmaxyx(stdscr, y, x);
+ if (y < 23 || x < 80) {
+ Cannot("The screen is too small for this test");
+ result = 0;
+ } else {
+ int ymax = y - (overlap_HEAD + overlap_FOOT);
+ int high = ymax / 5; /* equal-sized parts for cross */
+ int xmax = x - 2; /* margin */
+ int wide = (xmax / 5) & ~1;
+ int lmar, tmar;
+
+ if (high > 8)
+ high = 8;
+
+ if (wide > 8)
+ wide = 8;
+
+ tmar = (ymax - (5 * high)) / 2 + overlap_HEAD;
+ lmar = (xmax - (5 * wide)) / 2;
+
+ if (n == 0) {
+ result = newwin(3 * high, 3 * wide, tmar, lmar);
+ } else {
+ result = newwin(3 * high, 3 * wide, tmar + 2 * high, lmar + 2 * wide);
+ }
+ }
+ return result;
+}
+
+static void
+clear_overlap(void)
+{
+ int row;
+
+ for (row = overlap_HEAD; row < LINES - overlap_FOOT; ++row) {
+ move(row, 0);
+ clrtoeol();
+ }
+}
+
+static int
+move_overlap(int shift, WINDOW *win1)
+{
+ int ymax = getmaxy(stdscr) - (overlap_HEAD + overlap_FOOT);
+ int high = ymax / 5; /* equal-sized parts for cross */
+ int tmar;
+ int xmax1 = getmaxx(win1) + 1;
+ int lmar1 = (COLS - (5 * (xmax1) / 3)) / 2;
+ int rc = ERR;
+
+ if (high > 8)
+ high = 8;
+ tmar = (ymax - (5 * high)) / 2 + overlap_HEAD;
+
+ rc = mvwin(win1, tmar, lmar1 + shift);
+ return rc;
+}
+
static void
fillwin(WINDOW *win, char ch)
{
@@ -6206,24 +6870,107 @@ fillwin(WINDOW *win, char ch)
}
}
+#define InCross(x,y, x1,y1) \
+ (((x > (x1 - 1) / 3) && (x <= (2 * (x1 - 1)) / 3)) \
+ || (((y > (y1 - 1) / 3) && (y <= (2 * (y1 - 1)) / 3))))
+
static void
crosswin(WINDOW *win, char ch)
{
int y, x;
int y1, x1;
+ int xw = 1;
getmaxyx(win, y1, x1);
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)))) {
+ for (x = 0; x < x1; x += xw) {
+ if (InCross(x, y, x1, y1)) {
wmove(win, y, x);
waddch(win, UChar(ch));
}
+ }
}
}
-#define OVERLAP_FLAVORS 5
+/*
+ * Match "crosswin()", but using line-drawing characters. This could be done
+ * a little simpler using box(), but the reason for this example is to test
+ * hline/vline and addch with line-drawing vs the copy/overlay functions.
+ */
+static void
+crossbox(WINDOW *win)
+{
+ int y1, x1;
+ int ymax, xmax;
+
+ getmaxyx(win, y1, x1);
+
+ ymax = (y1 + 1);
+ xmax = (x1 + 1);
+
+ mvwhline(win, 0, (xmax / 3), ACS_HLINE, (xmax / 3));
+ mvwhline(win, ymax / 3, 0, ACS_HLINE, xmax);
+ mvwhline(win, ((2 * ymax) / 3) - 1, 0, ACS_HLINE, xmax);
+ mvwhline(win, y1 - 1, (xmax / 3), ACS_HLINE, (xmax / 3));
+
+ mvwvline(win, (ymax / 3), 0, ACS_VLINE, (ymax / 3));
+ mvwvline(win, 0, xmax / 3, ACS_VLINE, ymax);
+ mvwvline(win, 0, ((2 * xmax) / 3) - 1, ACS_VLINE, ymax);
+ mvwvline(win, (ymax / 3), x1 - 1, ACS_VLINE, (ymax / 3));
+
+ mvwaddch(win, 0, (xmax / 3), ACS_ULCORNER);
+ mvwaddch(win, 0, ((2 * xmax) / 3) - 1, ACS_URCORNER);
+ mvwaddch(win, y1 - 1, (xmax / 3), ACS_LLCORNER);
+ mvwaddch(win, y1 - 1, ((2 * xmax) / 3) - 1, ACS_LRCORNER);
+
+ mvwaddch(win, (ymax / 3), 0, ACS_ULCORNER);
+ mvwaddch(win, ((2 * ymax) / 3) - 1, 0, ACS_LLCORNER);
+ mvwaddch(win, (ymax / 3), x1 - 1, ACS_URCORNER);
+ mvwaddch(win, ((2 * ymax) / 3) - 1, x1 - 1, ACS_LRCORNER);
+
+ mvwaddch(win, (ymax / 3), (xmax / 3), ACS_PLUS);
+ mvwaddch(win, (ymax / 3), ((2 * xmax) / 3) - 1, ACS_PLUS);
+ mvwaddch(win, ((2 * ymax) / 3) - 1, ((2 * xmax) / 3) - 1, ACS_PLUS);
+ mvwaddch(win, ((2 * ymax) / 3) - 1, (xmax / 3), ACS_PLUS);
+}
+
+typedef enum {
+ otBASE_refresh = 0
+ ,otBASE_fill
+ ,otBASE_draw
+ ,otBASE_clear
+ ,otBASE_copy
+} otBASE;
+
+#define OVERLAP_FLAVORS 6
+
+typedef enum {
+ otFILL_normal = 0
+ ,otFILL_bold
+ ,otFILL_color
+ ,otFILL_bright
+} otFILL;
+
+#define LimitFILL() UseColors ? 4 : 2
+
+typedef enum {
+ otDRAW_text_cross = 0
+ ,otDRAW_line_box
+ ,otDRAW_line_cross
+ ,otDRAW_set_bg
+ ,otDRAW_reset_bg
+} otDRAW;
+
+#define LimitDRAW() UseColors ? 5 : 3
+
+typedef enum {
+ otCOPY_overwrite = 0
+ ,otCOPY_merge
+ ,otCOPY_force
+ ,otCOPY_overlay
+} otCOPY;
+
+#define LimitCOPY() 4
static void
overlap_helpitem(int state, int item, char *message)
@@ -6241,20 +6988,20 @@ overlap_test_1_attr(WINDOW *win, int flavor, int col)
{
NCURSES_PAIRS_T cpair = (NCURSES_PAIRS_T) (1 + (flavor * 2) + col);
- switch (flavor) {
- case 0:
+ switch ((otFILL) flavor) {
+ case otFILL_normal:
(void) wattrset(win, A_NORMAL);
break;
- case 1:
+ case otFILL_bold:
(void) wattrset(win, A_BOLD);
break;
- case 2:
+ case otFILL_color:
init_pair(cpair, COLOR_BLUE, COLOR_WHITE);
- (void) wattrset(win, (int) (COLOR_PAIR(cpair) | A_NORMAL));
+ (void) wattrset(win, AttrArg(COLOR_PAIR(cpair), A_NORMAL));
break;
- case 3:
+ case otFILL_bright:
init_pair(cpair, COLOR_WHITE, COLOR_BLUE);
- (void) wattrset(win, (int) (COLOR_PAIR(cpair) | A_BOLD));
+ (void) wattrset(win, AttrArg(COLOR_PAIR(cpair), A_BOLD));
break;
}
}
@@ -6264,18 +7011,21 @@ overlap_test_2_attr(WINDOW *win, int flavor, int col)
{
NCURSES_PAIRS_T cpair = (NCURSES_PAIRS_T) (9 + (flavor * 2) + col);
- switch (flavor) {
- case 0:
+ switch ((otDRAW) flavor) {
+ case otDRAW_text_cross:
/* no effect */
break;
- case 1:
+ case otDRAW_line_box:
/* no effect */
break;
- case 2:
+ case otDRAW_line_cross:
+ /* no effect */
+ break;
+ case otDRAW_set_bg:
init_pair(cpair, COLOR_RED, COLOR_GREEN);
wbkgdset(win, colored_chtype(' ', A_BLINK, cpair));
break;
- case 3:
+ case otDRAW_reset_bg:
wbkgdset(win, ' ' | A_NORMAL);
break;
}
@@ -6284,10 +7034,8 @@ overlap_test_2_attr(WINDOW *win, int flavor, int col)
static int
overlap_help(int state, int flavors[OVERLAP_FLAVORS])
{
- int row;
- int col;
int item;
- const char *ths, *tht;
+ int limit[OVERLAP_FLAVORS];
char msg[80];
if (state < 0)
@@ -6296,64 +7044,76 @@ overlap_help(int state, int flavors[OVERLAP_FLAVORS])
assert(state >= 0 && state < OVERLAP_FLAVORS);
for (item = 0; item < (2 * OVERLAP_FLAVORS); ++item) {
- row = item / 2;
- col = item % 2;
- ths = col ? "B" : "A";
- tht = col ? "A" : "B";
-
- switch (row) {
- case 0:
+ int row = item / 2;
+ int col = item % 2;
+ const char *ths = col ? "B" : "A";
+ const char *tht = col ? "A" : "B";
+
+ switch ((otBASE) row) {
+ case otBASE_refresh:
+ limit[row] = 1;
flavors[row] = 0;
- sprintf(msg, "refresh %s, then %s, then doupdate.", ths, tht);
+ _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
+ "refresh %s, then %s, then doupdate.", ths, tht);
break;
- case 1:
- if (use_colors) {
- flavors[row] %= 4;
- } else {
- flavors[row] %= 2;
- }
+ case otBASE_fill:
+ limit[row] = LimitFILL();
+ flavors[row] %= limit[row];
overlap_test_1_attr(stdscr, flavors[row], col);
- sprintf(msg, "fill window %s with letter %s.", ths, ths);
- break;
- case 2:
- if (use_colors) {
- flavors[row] %= 4;
- } else {
- flavors[row] %= 2;
- }
- switch (flavors[row]) {
- case 0:
- sprintf(msg, "cross pattern in window %s.", ths);
+ _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
+ "fill window %s with letter %s.", ths, ths);
+ break;
+ case otBASE_draw:
+ limit[row] = LimitDRAW();
+ flavors[row] %= limit[row];
+ switch ((otDRAW) flavors[row]) {
+ case otDRAW_text_cross:
+ _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
+ "cross text-pattern in window %s.", ths);
break;
- case 1:
- sprintf(msg, "draw box in window %s.", ths);
+ case otDRAW_line_box:
+ _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
+ "draw line-box in window %s.", ths);
+ break;
+ case otDRAW_line_cross:
+ _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
+ "draw line-cross in window %s.", ths);
break;
- case 2:
- sprintf(msg, "set background of window %s.", ths);
+ case otDRAW_set_bg:
+ _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
+ "set background of window %s.", ths);
break;
- case 3:
- sprintf(msg, "reset background of window %s.", ths);
+ case otDRAW_reset_bg:
+ _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
+ "reset background of window %s.", ths);
break;
}
break;
- case 3:
+ case otBASE_clear:
+ limit[row] = 1;
flavors[row] = 0;
- sprintf(msg, "clear window %s.", ths);
- break;
- case 4:
- flavors[row] %= 4;
- switch (flavors[row]) {
- case 0:
- sprintf(msg, "overwrite %s onto %s.", ths, tht);
+ _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
+ "clear window %s.", ths);
+ break;
+ case otBASE_copy:
+ limit[row] = LimitCOPY();
+ flavors[row] %= limit[row];
+ switch ((otCOPY) flavors[row]) {
+ case otCOPY_overwrite:
+ _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
+ "overwrite %s onto %s.", ths, tht);
break;
- case 1:
- sprintf(msg, "copywin(FALSE) %s onto %s.", ths, tht);
+ case otCOPY_merge:
+ _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
+ "copywin(FALSE) %s onto %s.", ths, tht);
break;
- case 2:
- sprintf(msg, "copywin(TRUE) %s onto %s.", ths, tht);
+ case otCOPY_force:
+ _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
+ "copywin(TRUE) %s onto %s.", ths, tht);
break;
- case 3:
- sprintf(msg, "overlay %s onto %s.", ths, tht);
+ case otCOPY_overlay:
+ _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
+ "overlay %s onto %s.", ths, tht);
break;
}
break;
@@ -6363,8 +7123,12 @@ overlap_help(int state, int flavors[OVERLAP_FLAVORS])
wbkgdset(stdscr, ' ' | A_NORMAL);
}
move(LINES - 1, 0);
- printw("^Q/ESC = terminate test. Up/down/space select test variations (%d %d).",
- state, flavors[state]);
+ printw("^Q/ESC = terminate test. </> shift. Up/down/space select (row %d",
+ state + 1);
+ if (limit[state] > 1)
+ printw(" test %d:%d", 1 + flavors[state], limit[state]);
+ printw(").");
+ clrtoeol();
return state;
}
@@ -6391,17 +7155,20 @@ static void
overlap_test_2(int flavor, int col, WINDOW *a, char fill)
{
overlap_test_2_attr(a, flavor, col);
- switch (flavor) {
- case 0:
+ switch ((otDRAW) flavor) {
+ case otDRAW_text_cross:
crosswin(a, fill);
break;
- case 1:
+ case otDRAW_line_box:
box(a, 0, 0);
break;
- case 2:
+ case otDRAW_line_cross:
+ crossbox(a);
+ break;
+ case otDRAW_set_bg:
/* done in overlap_test_2_attr */
break;
- case 3:
+ case otDRAW_reset_bg:
/* done in overlap_test_2_attr */
break;
}
@@ -6417,44 +7184,48 @@ overlap_test_3(WINDOW *a)
static void
overlap_test_4(int flavor, WINDOW *a, WINDOW *b)
{
- switch (flavor) {
- case 0:
+ switch ((otCOPY) flavor) {
+ case otCOPY_overwrite:
overwrite(a, b);
break;
- case 1:
+ case otCOPY_merge:
copywin(a, b, 0, 0, 0, 0, getmaxy(b), getmaxx(b), FALSE);
break;
- case 2:
+ case otCOPY_force:
copywin(a, b, 0, 0, 0, 0, getmaxy(b), getmaxx(b), TRUE);
break;
- case 3:
+ case otCOPY_overlay:
overlay(a, b);
break;
}
}
/* test effects of overlapping windows */
-static void
-overlap_test(void)
+static int
+overlap_test(bool recur GCC_UNUSED)
{
+ WINDOW *win1, *win2;
int ch;
+ int shift = 0, last_refresh = -1;
int state, flavor[OVERLAP_FLAVORS];
- WINDOW *win1 = newwin(9, 20, 3, 3);
- WINDOW *win2 = newwin(9, 20, 9, 16);
+ if ((win1 = make_overlap(0)) == 0) {
+ return ERR;
+ } else if ((win2 = make_overlap(1)) == 0) {
+ delwin(win1);
+ return ERR;
+ }
curs_set(0);
raw();
refresh();
move(0, 0);
- printw("This test shows the behavior of wnoutrefresh() with respect to\n");
- 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");
+ printw("Test wnoutrefresh() for two overlapping windows:");
memset(flavor, 0, sizeof(flavor));
state = overlap_help(0, flavor);
- while (!isQuit(ch = Getchar()))
+ while (!isQuit(ch = Getchar(), TRUE)) {
switch (ch) {
case 'a': /* refresh window A first, then B */
overlap_test_0(win1, win2);
@@ -6465,19 +7236,19 @@ overlap_test(void)
break;
case 'c': /* fill window A so it's visible */
- overlap_test_1(flavor[1], 0, win1, 'A');
+ overlap_test_1(flavor[otBASE_fill], 0, win1, 'A');
break;
case 'd': /* fill window B so it's visible */
- overlap_test_1(flavor[1], 1, win2, 'B');
+ overlap_test_1(flavor[otBASE_fill], 1, win2, 'B');
break;
case 'e': /* cross test pattern in window A */
- overlap_test_2(flavor[2], 0, win1, 'A');
+ overlap_test_2(flavor[otBASE_draw], 0, win1, 'A');
break;
case 'f': /* cross test pattern in window A */
- overlap_test_2(flavor[2], 1, win2, 'B');
+ overlap_test_2(flavor[otBASE_draw], 1, win2, 'B');
break;
case 'g': /* clear window A */
@@ -6489,11 +7260,11 @@ overlap_test(void)
break;
case 'i': /* overwrite A onto B */
- overlap_test_4(flavor[4], win1, win2);
+ overlap_test_4(flavor[otBASE_copy], win1, win2);
break;
case 'j': /* overwrite B onto A */
- overlap_test_4(flavor[4], win2, win1);
+ overlap_test_4(flavor[otBASE_copy], win2, win1);
break;
case CTRL('n'):
@@ -6511,161 +7282,354 @@ overlap_test(void)
state = overlap_help(state, flavor);
break;
- case '?':
+ case HELP_KEY_1:
state = overlap_help(state, flavor);
break;
+ case '<':
+ /* FALLTHRU */
+ case '>':
+ /* see below */
+ break;
+
default:
beep();
break;
}
+ switch (ch) {
+ case 'a':
+ /* FALLTHRU */
+ case 'b':
+ last_refresh = ch;
+ break;
+ case '<':
+ shift -= 2;
+ /* FALLTHRU */
+ case '>':
+ shift += 1;
+ if (move_overlap(shift, win1) != OK) {
+ flash();
+ shift += (ch == '>') ? -1 : 1;
+ } else if (last_refresh > 0) {
+ clear_overlap();
+ wnoutrefresh(stdscr);
+ if (last_refresh == 'a')
+ overlap_test_0(win1, win2);
+ else
+ overlap_test_0(win2, win1);
+ }
+ break;
+ default:
+ last_refresh = -1;
+ break;
+ }
+ }
+
delwin(win2);
delwin(win1);
erase();
- curs_set(1);
- endwin();
+ stop_curses();
+ return OK;
}
-/****************************************************************************
- *
- * Main sequence
- *
- ****************************************************************************/
+#if USE_WIDEC_SUPPORT
+static void
+x_fillwin(WINDOW *win, wchar_t ch)
+{
+ int y, x;
+ int y1, x1;
-static bool
-do_single_test(const char c)
-/* perform a single specified test */
+ getmaxyx(win, y1, x1);
+ x1 /= 2;
+ for (y = 0; y < y1; y++) {
+ wmove(win, y, 0);
+ for (x = 0; x < x1; x++)
+ waddnwstr(win, &ch, 1);
+ }
+}
+
+static void
+x_crosswin(WINDOW *win, wchar_t ch)
{
- switch (c) {
- case 'a':
- getch_test();
- break;
+ int y, x;
+ int y1, x1;
+ int xw = 2;
-#if USE_WIDEC_SUPPORT
- case 'A':
- get_wch_test();
- break;
-#endif
+ getmaxyx(win, y1, x1);
+ for (y = 0; y < y1; y++) {
+ for (x = 0; x < x1; x += xw) {
+ if (InCross(x, y, x1, y1)) {
+ wmove(win, y, x);
+ waddnwstr(win, &ch, 1);
+ }
+ }
+ }
+}
- case 'b':
- attr_test();
- break;
+static void
+x_overlap_test_1(int flavor, int col, WINDOW *a, wchar_t fill)
+{
+ overlap_test_1_attr(a, flavor, col);
+ x_fillwin(a, fill);
+ (void) wattrset(a, A_NORMAL);
+}
-#if USE_WIDEC_SUPPORT
- case 'B':
- wide_attr_test();
+static void
+x_overlap_test_2(int flavor, int col, WINDOW *a, wchar_t fill)
+{
+ overlap_test_2_attr(a, flavor, col);
+ switch ((otDRAW) flavor) {
+ case otDRAW_text_cross:
+ x_crosswin(a, fill);
break;
-#endif
-
- case 'c':
- if (!use_colors)
- Cannot("does not support color.");
- else
- color_test();
+ case otDRAW_line_box:
+ box(a, 0, 0);
break;
-
-#if USE_WIDEC_SUPPORT
- case 'C':
- if (!use_colors)
- Cannot("does not support color.");
- else
- wide_color_test();
+ case otDRAW_line_cross:
+ crossbox(a);
break;
-#endif
-
- case 'd':
- if (!use_colors)
- Cannot("does not support color.");
- else if (!can_change_color())
- Cannot("has hardwired color values.");
- else
- color_edit();
+ case otDRAW_set_bg:
+ /* done in overlap_test_2_attr */
break;
-
-#if USE_SOFTKEYS
- case 'e':
- slk_test();
+ case otDRAW_reset_bg:
+ /* done in overlap_test_2_attr */
break;
+ }
+}
-#if USE_WIDEC_SUPPORT
- case 'E':
- wide_slk_test();
- break;
-#endif
-#endif
+/* test effects of overlapping windows */
+static int
+x_overlap_test(bool recur GCC_UNUSED)
+{
+ const wchar_t WIDE_A = 0xff21;
+ const wchar_t WIDE_B = 0xff22;
+ WINDOW *win1, *win2;
+ int ch;
+ int shift = 0, last_refresh = -1;
+ int state, flavor[OVERLAP_FLAVORS];
- case 'f':
- acs_display();
- break;
+ if ((win1 = make_overlap(0)) == 0) {
+ return ERR;
+ } else if ((win2 = make_overlap(1)) == 0) {
+ delwin(win1);
+ return ERR;
+ }
-#if USE_WIDEC_SUPPORT
- case 'F':
- wide_acs_display();
- break;
-#endif
+ curs_set(0);
+ raw();
+ refresh();
+ move(0, 0);
+ printw("Test wnoutrefresh() for overlapping windows with double-cell characters:");
-#if USE_LIBPANEL
- case 'o':
- demo_panels(init_panel, fill_panel);
- break;
-#endif
+ memset(flavor, 0, sizeof(flavor));
+ state = overlap_help(0, flavor);
-#if USE_WIDEC_SUPPORT && USE_LIBPANEL
- case 'O':
- demo_panels(init_wide_panel, fill_wide_panel);
- break;
-#endif
+ while (!isQuit(ch = Getchar(), TRUE)) {
+ switch (ch) {
+ case 'a': /* refresh window A first, then B */
+ overlap_test_0(win1, win2);
+ break;
- case 'g':
- acs_and_scroll();
- break;
+ case 'b': /* refresh window B first, then A */
+ overlap_test_0(win2, win1);
+ break;
- case 'i':
- flushinp_test(stdscr);
- break;
+ case 'c': /* fill window A so it's visible */
+ x_overlap_test_1(flavor[otBASE_fill], 0, win1, WIDE_A);
+ break;
- case 'k':
- test_sgr_attributes();
- break;
+ case 'd': /* fill window B so it's visible */
+ x_overlap_test_1(flavor[otBASE_fill], 1, win2, WIDE_B);
+ break;
-#if USE_LIBMENU
- case 'm':
- menu_test();
- break;
-#endif
+ case 'e': /* cross test pattern in window A */
+ x_overlap_test_2(flavor[otBASE_draw], 0, win1, WIDE_A);
+ break;
- case 'p':
- demo_pad();
- break;
+ case 'f': /* cross test pattern in window A */
+ x_overlap_test_2(flavor[otBASE_draw], 1, win2, WIDE_B);
+ break;
-#if USE_LIBFORM
- case 'r':
- demo_forms();
- break;
-#endif
+ case 'g': /* clear window A */
+ overlap_test_3(win1);
+ break;
- case 's':
- overlap_test();
- break;
+ case 'h': /* clear window B */
+ overlap_test_3(win2);
+ break;
-#if USE_LIBMENU && defined(TRACE)
- case 't':
- trace_set();
- break;
-#endif
+ case 'i': /* overwrite A onto B */
+ overlap_test_4(flavor[otBASE_copy], win1, win2);
+ break;
- case '?':
- break;
+ case 'j': /* overwrite B onto A */
+ overlap_test_4(flavor[otBASE_copy], win2, win1);
+ break;
- default:
- return FALSE;
+ case CTRL('n'):
+ case KEY_DOWN:
+ state = overlap_help(state + 1, flavor);
+ break;
+
+ case CTRL('p'):
+ case KEY_UP:
+ state = overlap_help(state - 1, flavor);
+ break;
+
+ case ' ':
+ flavor[state] += 1;
+ state = overlap_help(state, flavor);
+ break;
+
+ case HELP_KEY_1:
+ state = overlap_help(state, flavor);
+ break;
+
+ case '<':
+ /* FALLTHRU */
+ case '>':
+ /* see below */
+ break;
+
+ default:
+ beep();
+ break;
+ }
+
+ switch (ch) {
+ case 'a':
+ /* FALLTHRU */
+ case 'b':
+ last_refresh = ch;
+ break;
+ case '<':
+ shift -= 2;
+ /* FALLTHRU */
+ case '>':
+ shift += 1;
+ if (move_overlap(shift, win1) != OK) {
+ flash();
+ shift += (ch == '>') ? -1 : 1;
+ } else if (last_refresh > 0) {
+ clear_overlap();
+ wnoutrefresh(stdscr);
+ if (last_refresh == 'a')
+ overlap_test_0(win1, win2);
+ else
+ overlap_test_0(win2, win1);
+ }
+ break;
+ default:
+ last_refresh = -1;
+ break;
+ }
}
- return TRUE;
+ delwin(win2);
+ delwin(win1);
+ erase();
+ stop_curses();
+ return OK;
+}
+#endif /* USE_WIDEC_SUPPORT */
+
+#endif /* HAVE_COPYWIN */
+
+static void
+show_setting_name(const char *name)
+{
+ printw("%-25s ", name);
}
static void
+show_string_setting(const char *name, const char *value)
+{
+ show_setting_name(name);
+ if (value) {
+ printw("\"%s\"", value);
+ } else {
+ attron(A_REVERSE);
+ addstr("<NULL>");
+ attroff(A_REVERSE);
+ }
+ AddCh('\n');
+}
+
+static void
+show_number_setting(const char *name, int value)
+{
+ show_setting_name(name);
+ if (value >= 0) {
+ printw("%d", value);
+ } else {
+ attron(A_REVERSE);
+ printw("%d", value);
+ attroff(A_REVERSE);
+ }
+ AddCh('\n');
+}
+
+static void
+show_boolean_setting(const char *name, int value)
+{
+ show_setting_name(name);
+ if (value >= 0) {
+ printw("%s", value ? "TRUE" : "FALSE");
+ } else {
+ attron(A_REVERSE);
+ printw("%d", value);
+ attroff(A_REVERSE);
+ }
+ AddCh('\n');
+}
+
+static int
+settings_test(bool recur GCC_UNUSED)
+{
+#if USE_WIDEC_SUPPORT
+ wchar_t ch;
+#endif
+
+ move(0, 0);
+ show_string_setting("termname", termname());
+ show_string_setting("longname", longname());
+ show_number_setting("baudrate", baudrate());
+ if (erasechar() > 0) {
+ show_string_setting("unctrl(erasechar)", unctrl((chtype) erasechar()));
+ show_string_setting("keyname(erasechar)", keyname(erasechar()));
+ }
+ if (killchar() > 0) {
+ show_string_setting("unctrl(killchar)", unctrl((chtype) killchar()));
+ show_string_setting("keyname(killchar)", keyname(killchar()));
+ }
+#if USE_WIDEC_SUPPORT
+ if (erasewchar(&ch) == OK) {
+ show_string_setting("key_name(erasewchar)", key_name(ch));
+ }
+ if (killwchar(&ch) == OK) {
+ show_string_setting("key_name(killwchar)", key_name(ch));
+ }
+#endif
+ show_boolean_setting("has_ic", has_ic());
+ show_boolean_setting("has_il", has_il());
+ show_boolean_setting("has_colors", has_colors());
+#if HAVE_COLOR_CONTENT
+ show_boolean_setting("can_change_color", can_change_color());
+#endif
+ Pause();
+ erase();
+ stop_curses();
+ return OK;
+}
+
+/****************************************************************************
+ *
+ * Main sequence
+ *
+ ****************************************************************************/
+
+static void
usage(void)
{
static const char *const tbl[] =
@@ -6677,7 +7641,9 @@ usage(void)
," -a f,b set default-colors (assumed white-on-black)"
," -d use default-colors if terminal supports them"
#endif
+#if HAVE_USE_ENV
," -E call use_env(FALSE) to ignore $LINES and $COLUMNS"
+#endif
#if USE_SOFTKEYS
," -e fmt specify format for soft-keys test (e)"
#endif
@@ -6686,16 +7652,21 @@ usage(void)
," -h rip-off header line (can repeat)"
#endif
," -m do not use colors"
+#if HAVE_COLOR_CONTENT
," -p file rgb values to use in 'd' rather than ncurses's builtin"
+#endif
#if USE_LIBPANEL
," -s msec specify nominal time for panel-demo (default: 1, to hold)"
#endif
-#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20120714)
+#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20120714) && !defined(_WIN32)
," -T call use_tioctl(TRUE) to allow SIGWINCH to override environment"
#endif
#ifdef TRACE
," -t mask specify default trace-level (may toggle with ^T)"
#endif
+#if HAVE_COLOR_CONTENT
+ ," -x use xterm-compatible control for reading color palette"
+#endif
};
size_t n;
for (n = 0; n < SIZEOF(tbl); n++)
@@ -6749,56 +7720,85 @@ rip_header(WINDOW *win, int cols)
static void
main_menu(bool top)
{
- char command;
-
- do {
- (void) puts("This is the ncurses main menu");
- (void) puts("a = keyboard and mouse input test");
-#if USE_WIDEC_SUPPORT
- (void) puts("A = wide-character keyboard and mouse input test");
-#endif
- (void) puts("b = character attribute test");
#if USE_WIDEC_SUPPORT
- (void) puts("B = wide-character attribute test");
+ typedef struct {
+ bool recur;
+ int (*narrow_func) (bool);
+ int (*wide_func) (bool);
+ int code;
+ const char *help;
+ } MyCmds;
+#define BOTH(a) a, x_ ## a
+#define ONLY(a) a, NULL
+#define CMDS(recur, funcs,code,help) { recur, funcs, code, help }
+#else
+ typedef struct {
+ bool recur;
+ int (*narrow_func) (bool);
+ int code;
+ const char *help;
+ } MyCmds;
+#define BOTH(a) a
+#define ONLY(a) a
+#define CMDS(recur, funcs,code,help) { recur, funcs, code, help }
#endif
- (void) puts("c = color test pattern");
-#if USE_WIDEC_SUPPORT
- (void) puts("C = color test pattern using wide-character calls");
+ /* *INDENT-OFF* */
+ static MyCmds cmds[] =
+ {
+ CMDS(TRUE, BOTH(getch_test), 'a', "keyboard and mouse input test"),
+ CMDS(TRUE, BOTH(attr_test), 'b', "character attribute test"),
+ CMDS(TRUE, BOTH(color_test), 'c', "color test pattern"),
+#if HAVE_COLOR_CONTENT
+ CMDS(FALSE, ONLY(color_edit), 'd', "edit RGB color values"),
#endif
- if (top)
- (void) puts("d = edit RGB color values");
#if USE_SOFTKEYS
- (void) puts("e = exercise soft keys");
-#if USE_WIDEC_SUPPORT
- (void) puts("E = exercise soft keys using wide-characters");
-#endif
-#endif
- (void) puts("f = display ACS characters");
-#if USE_WIDEC_SUPPORT
- (void) puts("F = display Wide-ACS characters");
+ CMDS(TRUE, BOTH(slk_test), 'e', "exercise soft keys"),
#endif
- (void) puts("g = display windows and scrolling");
- (void) puts("i = test of flushinp()");
- (void) puts("k = display character attributes");
+ CMDS(TRUE, BOTH(acs_test), 'f', "display ACS characters"),
+ CMDS(TRUE, ONLY(scroll_test), 'g', "display windows and scrolling"),
+ CMDS(TRUE, ONLY(flushinp_test), 'i', "test flushinp()"),
+ CMDS(TRUE, ONLY(sgr_attr_test), 'k', "display character attributes"),
#if USE_LIBMENU
- (void) puts("m = menu code test");
+ CMDS(TRUE, ONLY(menu_test), 'm', "exercise menu library"),
#endif
#if USE_LIBPANEL
- (void) puts("o = exercise panels library");
-#if USE_WIDEC_SUPPORT
- (void) puts("O = exercise panels with wide-characters");
+ CMDS(TRUE, BOTH(panel_test), 'o', "exercise panel library"),
#endif
+#if HAVE_NEWPAD
+ CMDS(TRUE, ONLY(pad_test), 'p', "exercise pad features"),
#endif
- (void) puts("p = exercise pad features");
- (void) puts("q = quit");
-#if USE_LIBFORM
- (void) puts("r = exercise forms code");
+ CMDS(TRUE, ONLY(NULL), 'q', "quit"),
+#if USE_LIBMENU
+ CMDS(TRUE, ONLY(form_test), 'r', "exercise form library"),
+#endif
+#if HAVE_COPYWIN
+ CMDS(TRUE, BOTH(overlap_test), 's', "overlapping-refresh test"),
#endif
- (void) puts("s = overlapping-refresh test");
#if USE_LIBMENU && defined(TRACE)
- (void) puts("t = set trace level");
+ CMDS(TRUE, ONLY(trace_set), 't', "set trace level"),
+#endif
+ CMDS(TRUE, ONLY(settings_test), 'v', "show terminal name and settings"),
+ CMDS(FALSE, ONLY(NULL), '?', "repeat this command summary")
+ };
+ /* *INDENT-ON* */
+
+ int (*doit) (bool);
+ char command;
+ unsigned n;
+
+ do {
+ printf("This is the ncurses main menu (uppercase for wide-characters)\n");
+ for (n = 0; n < SIZEOF(cmds); ++n) {
+ if (top || cmds[n].recur) {
+ putchar(' ');
+#if USE_WIDEC_SUPPORT
+ if (cmds[n].wide_func) {
+ printf("%c,", toupper(cmds[n].code));
+ }
#endif
- (void) puts("? = repeat this command summary");
+ printf("%c\t= %s\n", cmds[n].code, cmds[n].help);
+ }
+ }
(void) fputs("> ", stdout);
(void) fflush(stdout); /* necessary under SVr4 curses */
@@ -6812,8 +7812,14 @@ main_menu(bool top)
for (;;) {
char ch = '\0';
if (read(fileno(stdin), &ch, (size_t) 1) <= 0) {
- if (command == 0)
+ int save_err = errno;
+ perror("\nOOPS");
+ if (save_err == EINTR) {
+ clearerr(stdin);
+ continue;
+ } else if (command == 0) {
command = 'q';
+ }
break;
} else if (command == 0 && !isspace(UChar(ch))) {
command = ch;
@@ -6829,7 +7835,21 @@ main_menu(bool top)
}
}
- if (do_single_test(command)) {
+ doit = NULL;
+ for (n = 0; n < SIZEOF(cmds); ++n) {
+ if (cmds[n].code == command) {
+ doit = cmds[n].narrow_func;
+ break;
+ }
+#if USE_WIDEC_SUPPORT
+ if (toupper(cmds[n].code) == command) {
+ doit = cmds[n].wide_func;
+ break;
+ }
+#endif
+ }
+
+ if (doit != NULL && doit(FALSE) == OK) {
/*
* This may be overkill; it's intended to reset everything back
* to the initial terminal modes so that tests don't get in
@@ -6860,28 +7880,34 @@ main_menu(bool top)
main(argc,argv)
--------------------------------------------------------------------------*/
-#define okCOLOR(n) ((n) >= 0 && (n) < max_colors)
-#define okRGB(n) ((n) >= 0 && (n) <= 1000)
-
int
main(int argc, char *argv[])
{
int c;
int my_e_param = 1;
-#ifdef NCURSES_VERSION
+#ifdef NCURSES_VERSION_PATCH
+#if HAVE_USE_DEFAULT_COLORS
int default_fg = COLOR_WHITE;
int default_bg = COLOR_BLACK;
- bool assumed_colors = FALSE;
bool default_colors = FALSE;
+#if HAVE_ASSUME_DEFAULT_COLORS
+ bool assumed_colors = FALSE;
+#endif
+#endif
#endif
- char *palette_file = 0;
bool monochrome = FALSE;
+#if HAVE_COLOR_CONTENT
+ bool xterm_colors = FALSE;
+ char *palette_file = 0;
+#endif
setlocale(LC_ALL, "");
- while ((c = getopt(argc, argv, "a:dEe:fhmp:s:Tt:")) != -1) {
+ while ((c = getopt(argc, argv, "a:dEe:fhmp:s:Tt:x")) != -1) {
switch (c) {
-#ifdef NCURSES_VERSION
+#ifdef NCURSES_VERSION_PATCH
+#if HAVE_USE_DEFAULT_COLORS
+#if HAVE_ASSUME_DEFAULT_COLORS
case 'a':
assumed_colors = TRUE;
switch (sscanf(optarg, "%d,%d", &default_fg, &default_bg)) {
@@ -6893,13 +7919,17 @@ main(int argc, char *argv[])
break;
}
break;
+#endif
case 'd':
default_colors = TRUE;
break;
#endif
+#endif
+#if HAVE_USE_ENV
case 'E':
use_env(FALSE);
break;
+#endif
case 'e':
my_e_param = atoi(optarg);
#ifdef NCURSES_VERSION
@@ -6921,15 +7951,17 @@ main(int argc, char *argv[])
case 'm':
monochrome = TRUE;
break;
+#if HAVE_COLOR_CONTENT
case 'p':
palette_file = optarg;
break;
+#endif
#if USE_LIBPANEL
case 's':
nap_msec = (int) atol(optarg);
break;
#endif
-#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20120714)
+#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20120714) && !defined(_WIN32)
case 'T':
use_tioctl(TRUE);
break;
@@ -6939,6 +7971,11 @@ main(int argc, char *argv[])
save_trace = (unsigned) strtol(optarg, 0, 0);
break;
#endif
+#if HAVE_COLOR_CONTENT
+ case 'x':
+ xterm_colors = TRUE;
+ break;
+#endif
default:
usage();
}
@@ -6952,10 +7989,10 @@ main(int argc, char *argv[])
#ifdef TRACE
/* enable debugging */
#if !USE_LIBMENU
- trace(save_trace);
+ curses_trace(save_trace);
#else
if (!isatty(fileno(stdin)))
- trace(save_trace);
+ curses_trace(save_trace);
#endif /* USE_LIBMENU */
#endif /* TRACE */
@@ -6973,17 +8010,20 @@ main(int argc, char *argv[])
initscr();
bkgdset(BLANK);
+ set_terminal_modes();
+ def_prog_mode();
+
/* tests, in general, will want these modes */
- use_colors = (bool) (monochrome ? FALSE : has_colors());
+ UseColors = (bool) (monochrome ? FALSE : has_colors());
- if (use_colors) {
+ if (UseColors) {
start_color();
#ifdef NCURSES_VERSION_PATCH
- max_colors = COLORS; /* was > 16 ? 16 : COLORS */
+ MaxColors = COLORS; /* was > 16 ? 16 : COLORS */
#if HAVE_USE_DEFAULT_COLORS
if (default_colors) {
use_default_colors();
- min_colors = -1;
+ MinColors = -1;
}
#if HAVE_ASSUME_DEFAULT_COLORS
if (assumed_colors)
@@ -6991,52 +8031,16 @@ main(int argc, char *argv[])
#endif
#endif
#else /* normal SVr4 curses */
- max_colors = COLORS; /* was > 8 ? 8 : COLORS */
+ MaxColors = COLORS; /* was > 8 ? 8 : COLORS */
#endif
max_pairs = COLOR_PAIRS; /* was > 256 ? 256 : COLOR_PAIRS */
+#if HAVE_COLOR_CONTENT
if (can_change_color()) {
- NCURSES_PAIRS_T cp;
- all_colors = typeMalloc(RGB_DATA, (unsigned) max_colors);
- if (!all_colors)
- failed("all_colors");
- for (cp = 0; cp < max_colors; ++cp) {
- color_content(cp,
- &all_colors[cp].red,
- &all_colors[cp].green,
- &all_colors[cp].blue);
- }
- if (palette_file != 0) {
- FILE *fp = fopen(palette_file, "r");
- if (fp != 0) {
- char buffer[BUFSIZ];
- int red, green, blue;
- int scale = 1000;
- while (fgets(buffer, sizeof(buffer), fp) != 0) {
- if (sscanf(buffer, "scale:%d", &c) == 1) {
- scale = c;
- } else if (sscanf(buffer, "%d:%d %d %d",
- &c,
- &red,
- &green,
- &blue) == 4
- && okCOLOR(c)
- && okRGB(red)
- && okRGB(green)
- && okRGB(blue)) {
-#define Scaled(n) (NCURSES_COLOR_T) (((n) * 1000) / scale)
- all_colors[c].red = Scaled(red);
- all_colors[c].green = Scaled(green);
- all_colors[c].blue = Scaled(blue);
- }
- }
- fclose(fp);
- }
- }
+ init_all_colors(xterm_colors, palette_file);
}
+#endif
}
- set_terminal_modes();
- def_prog_mode();
/*
* Return to terminal mode, so we're guaranteed of being able to
diff --git a/test/newdemo.c b/test/newdemo.c
index fef092f2470c..d76523ab6ffd 100644
--- a/test/newdemo.c
+++ b/test/newdemo.c
@@ -2,7 +2,7 @@
* newdemo.c - A demo program using PDCurses. The program illustrate
* the use of colours for text output.
*
- * $Id: newdemo.c,v 1.40 2013/04/27 19:46:53 tom Exp $
+ * $Id: newdemo.c,v 1.47 2019/12/14 23:25:29 tom Exp $
*/
#include <test.priv.h>
@@ -50,7 +50,7 @@ static const char *messages[] =
static void
trap(int sig GCC_UNUSED)
{
- endwin();
+ stop_curses();
ExitProgram(EXIT_FAILURE);
}
@@ -61,11 +61,12 @@ static int
WaitForUser(WINDOW *win)
{
time_t t;
- chtype key;
nodelay(win, TRUE);
t = time((time_t *) 0);
+
while (1) {
+ chtype key;
if ((int) (key = (chtype) wgetch(win)) != ERR) {
if (key == 'q' || key == 'Q')
return 1;
@@ -84,7 +85,7 @@ set_colors(WINDOW *win, int pair, int foreground, int background)
if (pair > COLOR_PAIRS)
pair = COLOR_PAIRS;
init_pair((short) pair, (short) foreground, (short) background);
- (void) wattrset(win, (int) COLOR_PAIR(pair));
+ (void) wattrset(win, AttrArg(COLOR_PAIR(pair), 0));
}
}
@@ -96,7 +97,7 @@ use_colors(WINDOW *win, int pair, chtype attrs)
pair = COLOR_PAIRS;
attrs |= (chtype) COLOR_PAIR(pair);
}
- (void) wattrset(win, (int) attrs);
+ (void) wattrset(win, AttrArg(attrs, 0));
return attrs;
}
@@ -221,18 +222,14 @@ int
main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
{
WINDOW *win;
- int w, x, y, i, j, k;
+ int x, y, i, k;
char buffer[SIZEOF(messages) * 80];
- const char *message;
int width, height;
chtype save[80];
- chtype c;
setlocale(LC_ALL, "");
- CATCHALL(trap);
-
- initscr();
+ InitAndCatch(initscr(), trap);
if (has_colors())
start_color();
cbreak();
@@ -241,11 +238,16 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
height = 14; /* Create a drawing window */
win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2);
if (win == NULL) {
- endwin();
+ stop_curses();
ExitProgram(EXIT_FAILURE);
}
while (1) {
+ int w;
+ int j;
+ chtype c;
+ const char *message;
+
set_colors(win, 1, COLOR_WHITE, COLOR_BLUE);
werase(win);
@@ -299,11 +301,11 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
message = messages[j = 0];
i = 1;
w = width - 2;
- strcpy(buffer, message);
+ _nc_STRCPY(buffer, message, sizeof(buffer));
while (j < NMESSAGES) {
while ((int) strlen(buffer) < w) {
- strcat(buffer, " ... ");
- strcat(buffer, messages[++j % NMESSAGES]);
+ _nc_STRCAT(buffer, " ... ", sizeof(buffer));
+ _nc_STRCAT(buffer, messages[++j % NMESSAGES], sizeof(buffer));
}
if (i < w)
@@ -360,6 +362,6 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
if (WaitForUser(win) == 1)
break;
}
- endwin();
+ stop_curses();
ExitProgram(EXIT_SUCCESS);
}
diff --git a/test/package/debian-mingw/compat b/test/package/debian-mingw/compat
new file mode 100644
index 000000000000..ec635144f600
--- /dev/null
+++ b/test/package/debian-mingw/compat
@@ -0,0 +1 @@
+9
diff --git a/test/package/debian-mingw/control b/test/package/debian-mingw/control
new file mode 100644
index 000000000000..64bd01b1832d
--- /dev/null
+++ b/test/package/debian-mingw/control
@@ -0,0 +1,18 @@
+Source: ncurses-examples
+Maintainer: Thomas E. Dickey <dickey@invisible-island.net>
+Section: misc
+Priority: optional
+Standards-Version: 3.8.4
+Build-Depends: debhelper (>= 5)
+Homepage: https://invisible-island.net/ncurses/ncurses-examples.html
+
+Package: mingw32-ncurses-examples
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: example/test programs from ncurses
+ These are the example/test programs from the ncurses distribution.
+ .
+ This package is used for testing ABI 6 with the MinGW 32-bit port.
+ .
+ This package installs in "bin/ncurses-examples" to avoid conflict with other
+ packages.
diff --git a/test/package/debian-mingw/copyright b/test/package/debian-mingw/copyright
new file mode 100644
index 000000000000..9b2b7aad1b4f
--- /dev/null
+++ b/test/package/debian-mingw/copyright
@@ -0,0 +1,78 @@
+Upstream source https://invisible-island.net/ncurses/ncurses-examples.html
+
+Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
+
+-------------------------------------------------------------------------------
+Files: *
+Copyright: 1998-2019,2020 Free Software Foundation, Inc.
+Licence: X11
+
+Files: aclocal.m4 package
+Copyright: 2003-2019,2020 by Thomas E. Dickey
+Licence: X11
+
+ 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.
+
+-------------------------------------------------------------------------------
+Files: install-sh
+Copyright: 1994 X Consortium
+Licence: X11
+
+ 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, 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
+ X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+ TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of the X Consortium shall not
+ be used in advertising or otherwise to promote the sale, use or other deal-
+ ings in this Software without prior written authorization from the X Consor-
+ tium.
+
+ FSF changes to this file are in the public domain.
+
+ 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. It can only install one file at a time, a restriction
+ shared with many OS's install programs.
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in '/usr/share/common-licenses/GPL-2'
+
+-- vile: txtmode file-encoding=utf-8
diff --git a/test/package/debian-mingw/docs b/test/package/debian-mingw/docs
new file mode 100644
index 000000000000..e845566c06f9
--- /dev/null
+++ b/test/package/debian-mingw/docs
@@ -0,0 +1 @@
+README
diff --git a/test/package/debian-mingw/rules b/test/package/debian-mingw/rules
new file mode 100755
index 000000000000..e61cf71a3fa3
--- /dev/null
+++ b/test/package/debian-mingw/rules
@@ -0,0 +1,101 @@
+#!/usr/bin/make -f
+# Made with the aid of dh_make, by Craig Small
+# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
+# Some lines taken from debmake, by Cristoph Lameter.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
+CC_NORMAL = -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion
+CC_STRICT = $(CC_NORMAL) -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic
+
+NCURSES_PKG = ncurses-examples
+
+TARGET = i686-w64-mingw32
+MINGW_BIN = /usr/bin
+MINGW_TOP = /usr/$(TARGET)
+MINGW_TMP = $(CURDIR)/debian/mingw32-ncurses-examples
+
+CFLAGS = $(CC_NORMAL)
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -O0
+else
+ CFLAGS += -O2
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+ INSTALL_PROGRAM += -s
+endif
+
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+
+ CFLAGS="$(CFLAGS)" ./configure \
+ --host=$(TARGET) \
+ --target=$(TARGET) \
+ --prefix=$(MINGW_TOP) \
+ --bindir=\$${prefix}/bin/$(NCURSES_PKG) \
+ --datadir=\$${prefix}/share/$(NCURSES_PKG) \
+ --with-screen=ncursesw6 \
+ --with-pkg-config-libdir=/usr/$(TARGET)/lib/pkgconfig
+
+ touch configure-stamp
+
+build: build-stamp
+build-stamp: configure-stamp
+ dh_testdir
+
+ $(MAKE)
+
+ touch build-stamp
+
+clean:
+ dh_testdir
+ dh_testroot
+
+ [ ! -f makefile ] || $(MAKE) distclean
+
+ rm -f configure-stamp build-stamp install-stamp
+
+ dh_clean
+
+install: install-stamp
+install-stamp: build-stamp
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ $(MAKE) install DESTDIR=$(MINGW_TMP)
+
+ touch install-stamp
+
+# Build architecture-independent files here.
+binary-indep: build install
+# No binary-indep target.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installdocs
+ dh_installexamples
+ dh_installchangelogs NEWS
+ dh_strip
+ dh_compress
+ dh_fixperms
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install install-stamp
diff --git a/test/package/debian-mingw/source/format b/test/package/debian-mingw/source/format
new file mode 100644
index 000000000000..89ae9db8f88b
--- /dev/null
+++ b/test/package/debian-mingw/source/format
@@ -0,0 +1 @@
+3.0 (native)
diff --git a/test/package/debian-mingw/watch b/test/package/debian-mingw/watch
new file mode 100644
index 000000000000..ec075b189b01
--- /dev/null
+++ b/test/package/debian-mingw/watch
@@ -0,0 +1,4 @@
+version=3
+
+opts=passive ftp://ftp.invisible-island.net/ncurses-examples/ncurses-examples-([\d.]+)\.tgz \
+ debian uupdate
diff --git a/test/package/debian-mingw64/compat b/test/package/debian-mingw64/compat
new file mode 100644
index 000000000000..ec635144f600
--- /dev/null
+++ b/test/package/debian-mingw64/compat
@@ -0,0 +1 @@
+9
diff --git a/test/package/debian-mingw64/control b/test/package/debian-mingw64/control
new file mode 100644
index 000000000000..c22f262a8bf9
--- /dev/null
+++ b/test/package/debian-mingw64/control
@@ -0,0 +1,18 @@
+Source: ncurses-examples
+Maintainer: Thomas E. Dickey <dickey@invisible-island.net>
+Section: misc
+Priority: optional
+Standards-Version: 3.8.4
+Build-Depends: debhelper (>= 5)
+Homepage: https://invisible-island.net/ncurses/ncurses-examples.html
+
+Package: mingw64-ncurses-examples
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: example/test programs from ncurses
+ These are the example/test programs from the ncurses distribution.
+ .
+ This package is used for testing ABI 6 with the MinGW 64-bit port.
+ .
+ This package installs in "bin/ncurses-examples" to avoid conflict with other
+ packages.
diff --git a/test/package/debian-mingw64/copyright b/test/package/debian-mingw64/copyright
new file mode 100644
index 000000000000..9b2b7aad1b4f
--- /dev/null
+++ b/test/package/debian-mingw64/copyright
@@ -0,0 +1,78 @@
+Upstream source https://invisible-island.net/ncurses/ncurses-examples.html
+
+Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
+
+-------------------------------------------------------------------------------
+Files: *
+Copyright: 1998-2019,2020 Free Software Foundation, Inc.
+Licence: X11
+
+Files: aclocal.m4 package
+Copyright: 2003-2019,2020 by Thomas E. Dickey
+Licence: X11
+
+ 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.
+
+-------------------------------------------------------------------------------
+Files: install-sh
+Copyright: 1994 X Consortium
+Licence: X11
+
+ 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, 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
+ X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+ TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of the X Consortium shall not
+ be used in advertising or otherwise to promote the sale, use or other deal-
+ ings in this Software without prior written authorization from the X Consor-
+ tium.
+
+ FSF changes to this file are in the public domain.
+
+ 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. It can only install one file at a time, a restriction
+ shared with many OS's install programs.
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in '/usr/share/common-licenses/GPL-2'
+
+-- vile: txtmode file-encoding=utf-8
diff --git a/test/package/debian-mingw64/docs b/test/package/debian-mingw64/docs
new file mode 100644
index 000000000000..e845566c06f9
--- /dev/null
+++ b/test/package/debian-mingw64/docs
@@ -0,0 +1 @@
+README
diff --git a/test/package/debian-mingw64/rules b/test/package/debian-mingw64/rules
new file mode 100755
index 000000000000..7db9c5acef1a
--- /dev/null
+++ b/test/package/debian-mingw64/rules
@@ -0,0 +1,101 @@
+#!/usr/bin/make -f
+# Made with the aid of dh_make, by Craig Small
+# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
+# Some lines taken from debmake, by Cristoph Lameter.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
+CC_NORMAL = -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion
+CC_STRICT = $(CC_NORMAL) -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic
+
+NCURSES_PKG = ncurses-examples
+
+TARGET = x86_64-w64-mingw32
+MINGW_BIN = /usr/bin
+MINGW_TOP = /usr/$(TARGET)
+MINGW_TMP = $(CURDIR)/debian/mingw64-ncurses-examples
+
+CFLAGS = $(CC_NORMAL)
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -O0
+else
+ CFLAGS += -O2
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+ INSTALL_PROGRAM += -s
+endif
+
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+
+ CFLAGS="$(CFLAGS)" ./configure \
+ --host=$(TARGET) \
+ --target=$(TARGET) \
+ --prefix=$(MINGW_TOP) \
+ --bindir=\$${prefix}/bin/$(NCURSES_PKG) \
+ --datadir=\$${prefix}/share/$(NCURSES_PKG) \
+ --with-screen=ncursesw6 \
+ --with-pkg-config-libdir=/usr/$(TARGET)/lib/pkgconfig
+
+ touch configure-stamp
+
+build: build-stamp
+build-stamp: configure-stamp
+ dh_testdir
+
+ $(MAKE)
+
+ touch build-stamp
+
+clean:
+ dh_testdir
+ dh_testroot
+
+ [ ! -f makefile ] || $(MAKE) distclean
+
+ rm -f configure-stamp build-stamp install-stamp
+
+ dh_clean
+
+install: install-stamp
+install-stamp: build-stamp
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ $(MAKE) install DESTDIR=$(MINGW_TMP)
+
+ touch install-stamp
+
+# Build architecture-independent files here.
+binary-indep: build install
+# No binary-indep target.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installdocs
+ dh_installexamples
+ dh_installchangelogs NEWS
+ dh_strip
+ dh_compress
+ dh_fixperms
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install install-stamp
diff --git a/test/package/debian-mingw64/source/format b/test/package/debian-mingw64/source/format
new file mode 100644
index 000000000000..89ae9db8f88b
--- /dev/null
+++ b/test/package/debian-mingw64/source/format
@@ -0,0 +1 @@
+3.0 (native)
diff --git a/test/package/debian-mingw64/watch b/test/package/debian-mingw64/watch
new file mode 100644
index 000000000000..ec075b189b01
--- /dev/null
+++ b/test/package/debian-mingw64/watch
@@ -0,0 +1,4 @@
+version=3
+
+opts=passive ftp://ftp.invisible-island.net/ncurses-examples/ncurses-examples-([\d.]+)\.tgz \
+ debian uupdate
diff --git a/test/package/debian/compat b/test/package/debian/compat
index 7ed6ff82de6b..ec635144f600 100644
--- a/test/package/debian/compat
+++ b/test/package/debian/compat
@@ -1 +1 @@
-5
+9
diff --git a/test/package/debian/control b/test/package/debian/control
index 520ad422ee93..d7647b3fdb8b 100644
--- a/test/package/debian/control
+++ b/test/package/debian/control
@@ -4,13 +4,23 @@ Section: misc
Priority: optional
Standards-Version: 3.8.4
Build-Depends: debhelper (>= 5)
-Homepage: http://invisible-island.net/ncurses/ncurses-examples.html
+Homepage: https://invisible-island.net/ncurses/ncurses-examples.html
Package: ncurses-examples
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: ncurses-examples - example/test programs from ncurses
+Description: example/test programs from ncurses
These are the example/test programs from the ncurses distribution.
.
This package installs in "bin/ncurses-examples" to avoid conflict with other
packages.
+
+Package: ncursest-examples
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: example/test programs from ncurses
+ These are the example/test programs from the ncurses distribution, using
+ the thread configuration.
+ .
+ This package installs in "bin/ncursest-examples" to avoid conflict with other
+ packages.
diff --git a/test/package/debian/copyright b/test/package/debian/copyright
index e681a6bd58af..9b2b7aad1b4f 100644
--- a/test/package/debian/copyright
+++ b/test/package/debian/copyright
@@ -1,9 +1,15 @@
-Upstream source http://invisible-island.net/ncurses/ncurses-examples.html
+Upstream source https://invisible-island.net/ncurses/ncurses-examples.html
Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
-------------------------------------------------------------------------------
- Copyright (c) 1998-2010,2011 Free Software Foundation, Inc.
+Files: *
+Copyright: 1998-2019,2020 Free Software Foundation, Inc.
+Licence: X11
+
+Files: aclocal.m4 package
+Copyright: 2003-2019,2020 by Thomas E. Dickey
+Licence: X11
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
@@ -28,11 +34,12 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
holders shall not be used in advertising or otherwise to promote the
sale, use or other dealings in this Software without prior written
authorization.
--------------------------------------------------------------------------------
+-------------------------------------------------------------------------------
Files: install-sh
Copyright: 1994 X Consortium
-Licence: other-BSD
+Licence: X11
+
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
@@ -67,3 +74,5 @@ Licence: other-BSD
On Debian systems, the complete text of the GNU General
Public License can be found in '/usr/share/common-licenses/GPL-2'
+
+-- vile: txtmode file-encoding=utf-8
diff --git a/test/package/debian/rules b/test/package/debian/rules
index 4d4146b8c98f..4e6d570ecc88 100755
--- a/test/package/debian/rules
+++ b/test/package/debian/rules
@@ -1,17 +1,26 @@
#!/usr/bin/make -f
-# MAde with the aid of dh_make, by Craig Small
+# Made with the aid of dh_make, by Craig Small
# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
# Some lines taken from debmake, by Cristoph Lameter.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
+# packages
+NCURSES_PKG = ncurses-examples
+NCURSEST_PKG = ncursest-examples
+
+PACKAGES.indep = # ncurses-examples-docs
+PACKAGES.arch = $(NCURSES_PKG) $(NCURSEST_PKG)
+
# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-CFLAGS =
+CFLAGS = $(shell dpkg-buildflags --get CFLAGS)
+CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS)
+LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS)
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
@@ -22,69 +31,134 @@ ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
INSTALL_PROGRAM += -s
endif
+verbose = # -v
-configure: configure-stamp
-configure-stamp:
- dh_testdir
-
- CFLAGS="$(CFLAGS)" ./configure \
+configure = \
+ CFLAGS="$(CFLAGS)" \
+ CPPFLAGS="$(CPPFLAGS)" \
+ LDFLAGS="$(LDFLAGS)" ../../configure \
--host=$(DEB_HOST_GNU_TYPE) \
--build=$(DEB_BUILD_GNU_TYPE) \
- --bindir=\$${prefix}/bin/ncurses-examples \
--prefix=/usr \
- --with-ncursesw \
--disable-rpath-hack
- touch configure-stamp
+.PHONY: all config build install binary clean config-indep config-arch \
+ build-indep build-arch install-indep install-arch binary-indep \
+ binary-arch
+
+all: build
-build: build-stamp
-build-stamp: configure-stamp
+config: config-indep config-arch
+build: build-indep build-arch
+install: install-indep install-arch
+binary: binary-indep binary-arch
+clean:
dh_testdir
+ dh_testroot
+ dh_clean $(verbose)
+ rm -rf t
- $(MAKE)
+config-indep: $(PACKAGES.indep:%=config-%-stamp)
+config-arch: $(PACKAGES.arch:%=config-%-stamp)
- touch build-stamp
+build-indep: $(PACKAGES.indep:%=build-%-stamp)
+build-arch: $(PACKAGES.arch:%=build-%-stamp)
-clean:
+install-indep: $(PACKAGES.indep:%=install-%-stamp)
+install-arch: $(PACKAGES.arch:%=install-%-stamp)
+
+config-$(NCURSES_PKG)-stamp:
dh_testdir
- dh_testroot
- [ ! -f makefile ] || $(MAKE) distclean
+ rm -rf t/ncurses6
+ mkdir -p t/ncurses6
- rm -f configure-stamp build-stamp install-stamp
+ cd t/ncurses6; $(configure) \
+ --bindir=\$${prefix}/bin/$(NCURSES_PKG) \
+ --datadir=\$${prefix}/share/$(NCURSES_PKG) \
+ --with-screen=ncursesw6
- dh_clean
+ touch $@
-install: install-stamp
-install-stamp: build-stamp
+config-$(NCURSEST_PKG)-stamp:
+ dh_testdir
+
+ rm -rf t/ncursest6
+ mkdir -p t/ncursest6
+
+ cd t/ncursest6; $(configure) \
+ --bindir=\$${prefix}/bin/$(NCURSEST_PKG) \
+ --datadir=\$${prefix}/share/$(NCURSEST_PKG) \
+ --with-screen=ncursestw6
+
+ touch $@
+
+build-$(NCURSES_PKG)-stamp: config-$(NCURSES_PKG)-stamp
+ dh_testdir
+
+ $(MAKE) -C t/ncurses6
+
+ touch $@
+
+build-$(NCURSEST_PKG)-stamp: config-$(NCURSEST_PKG)-stamp
+ dh_testdir
+
+ $(MAKE) -C t/ncursest6
+
+ touch $@
+
+install-$(NCURSES_PKG)-stamp: build-$(NCURSES_PKG)-stamp
dh_testdir
dh_testroot
- dh_clean -k
- dh_installdirs
+ dh_installdirs $(verbose)
+ dh_prep $(verbose) -p$(NCURSES_PKG)
+
+ $(MAKE) -C t/ncurses6 install DESTDIR=$(CURDIR)/debian/$(NCURSES_PKG)
- $(MAKE) install DESTDIR=$(CURDIR)/debian/ncurses-examples
+ touch $@
- touch install-stamp
+install-$(NCURSEST_PKG)-stamp: build-$(NCURSEST_PKG)-stamp
+ dh_testdir
+ dh_testroot
+ dh_installdirs $(verbose)
+ dh_prep $(verbose) -p$(NCURSEST_PKG)
+
+ $(MAKE) -C t/ncursest6 install DESTDIR=$(CURDIR)/debian/$(NCURSEST_PKG)
+
+ touch $@
# Build architecture-independent files here.
-binary-indep: build install
-# No binary-indep target.
+binary-indep: install-indep
+ifneq ($(PACKAGES.indep),)
+ rm -f $(PACKAGES.indep:%=install-%-stamp)
+ dh_testdir
+ dh_testroot
+ dh_installdocs $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_installman $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_installexamples $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_installchangelogs $(verbose) $(PACKAGES.indep:%=-p%) NEWS
+ dh_compress $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_fixperms $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_installdeb $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_gencontrol $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_md5sums $(verbose) $(PACKAGES.indep:%=-p%)
+ dh_builddeb $(verbose) $(PACKAGES.indep:%=-p%)
+endif
# Build architecture-dependent files here.
-binary-arch: build install
+binary-arch: install-arch
+ifneq ($(PACKAGES.arch),)
+ rm -f $(PACKAGES.arch:%=install-%-stamp)
dh_testdir
dh_testroot
- dh_installdocs
- dh_installexamples
- dh_installchangelogs NEWS
- dh_strip
- dh_compress
- dh_fixperms
- dh_installdeb
- dh_shlibdeps
- dh_gencontrol
- dh_md5sums
- dh_builddeb
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install install-stamp
+ dh_installchangelogs $(verbose) $(PACKAGES.arch:%=-p%) NEWS
+ dh_strip $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_compress $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_fixperms $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_installdeb $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_makeshlibs $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_shlibdeps $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_gencontrol $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_md5sums $(verbose) $(PACKAGES.arch:%=-p%)
+ dh_builddeb $(verbose) $(PACKAGES.arch:%=-p%)
+endif
diff --git a/test/package/debian/watch b/test/package/debian/watch
index 1d080986dafe..ec075b189b01 100644
--- a/test/package/debian/watch
+++ b/test/package/debian/watch
@@ -1,4 +1,4 @@
version=3
-opts=passive ftp://invisible-island.net/ncurses-examples/ncurses-examples-([\d.]+)\.tgz \
+opts=passive ftp://ftp.invisible-island.net/ncurses-examples/ncurses-examples-([\d.]+)\.tgz \
debian uupdate
diff --git a/test/package/mingw-ncurses-examples.spec b/test/package/mingw-ncurses-examples.spec
index fdc2a69fac7c..5758c29097a5 100644
--- a/test/package/mingw-ncurses-examples.spec
+++ b/test/package/mingw-ncurses-examples.spec
@@ -1,17 +1,17 @@
Summary: ncurses-examples - example/test programs from ncurses
%?mingw_package_header
-%define AppProgram ncurses-examples
-%define AppVersion MAJOR.MINOR
-%define AppRelease YYYYMMDD
-# $Id: mingw-ncurses-examples.spec,v 1.3 2013/10/26 23:30:21 tom Exp $
+%global AppProgram ncurses-examples
+%global AppVersion MAJOR.MINOR
+%global AppRelease YYYYMMDD
+# $Id: mingw-ncurses-examples.spec,v 1.9 2019/11/23 21:13:52 tom Exp $
Name: mingw32-ncurses6-examples
Version: %{AppVersion}
Release: %{AppRelease}
License: X11
Group: Development/Libraries
Source: ncurses-examples-%{release}.tgz
-# URL: http://invisible-island.net/ncurses/
+# URL: https://invisible-island.net/ncurses/
BuildRequires: mingw32-ncurses6
@@ -53,10 +53,14 @@ This package is used for testing ABI 6 with cross-compiles to MinGW.
%global mingw32_bindir %{mingw32_exec_prefix}/bin/%{AppProgram}
%global mingw64_bindir %{mingw64_exec_prefix}/bin/%{AppProgram}
+%global mingw32_datadir %{mingw32_datadir}/%{AppProgram}
+%global mingw64_datadir %{mingw64_datadir}/%{AppProgram}
+
%define CFG_OPTS \\\
- --disable-echo \\\
- --enable-warnings \\\
- --verbose
+ --enable-echo \\\
+ --enable-warnings \\\
+ --verbose \\\
+ --with-screen=ncursesw6
%define debug_package %{nil}
%setup -q -n ncurses-examples-%{release}
@@ -66,8 +70,9 @@ mkdir BUILD-W32
pushd BUILD-W32
CFLAGS="%{CC_NORMAL}" \
CC=%{mingw32_cc} \
-%mingw32_configure %{CFG_OPTS}
-cp config.status /tmp/ming32-config.status
+NCURSES_CONFIG_SUFFIX=dev \
+%mingw32_configure %{CFG_OPTS} \
+ --datadir=%{mingw32_datadir}
make
popd
@@ -75,8 +80,8 @@ mkdir BUILD-W64
pushd BUILD-W64
CFLAGS="%{CC_NORMAL}" \
CC=%{mingw64_cc} \
-%mingw64_configure %{CFG_OPTS}
-cp config.status /tmp/ming64-config.status
+%mingw64_configure %{CFG_OPTS} \
+ --datadir=%{mingw32_datadir}
make
popd
@@ -92,18 +97,27 @@ pushd BUILD-W64
popd
%clean
-rm -rf $RPM_BUILD_ROOT
+if rm -rf $RPM_BUILD_ROOT; then
+ echo OK
+else
+ find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1
+fi
+exit 0
-%files
%defattr(-,root,root,-)
%files -n mingw32-ncurses6-examples
%{mingw32_bindir}/*
+%{mingw32_datadir}/*
%files -n mingw64-ncurses6-examples
%{mingw64_bindir}/*
+%{mingw64_datadir}/*
%changelog
+* Sat Nov 16 2019 Thomas Dickey
+- modify clean-rule to work around Fedora NFS bugs.
+
* Sat Oct 19 2013 Thomas E. Dickey
- initial version
diff --git a/test/package/ncurses-examples.spec b/test/package/ncurses-examples.spec
index 8a016780800d..d2b5a84e7e8b 100644
--- a/test/package/ncurses-examples.spec
+++ b/test/package/ncurses-examples.spec
@@ -1,14 +1,15 @@
-Summary: ncurses-examples - example/test programs from ncurses
-%define AppProgram ncurses-examples
-%define AppVersion MAJOR.MINOR
-%define AppRelease YYYYMMDD
-# $Id: ncurses-examples.spec,v 1.3 2013/10/05 23:44:19 tom Exp $
+Summary: example/test programs from ncurses
+%global AppProgram ncurses-examples
+%global AltProgram ncursest-examples
+%global AppVersion MAJOR.MINOR
+%global AppRelease YYYYMMDD
+# $Id: ncurses-examples.spec,v 1.16 2019/11/23 21:11:34 tom Exp $
Name: %{AppProgram}
Version: %{AppVersion}
Release: %{AppRelease}
License: MIT
Group: Applications/Development
-URL: ftp://invisible-island.net/%{AppProgram}
+URL: ftp://ftp.invisible-island.net/%{AppProgram}
Source0: %{AppProgram}-%{AppRelease}.tgz
Packager: Thomas Dickey <dickey@invisible-island.net>
@@ -16,40 +17,102 @@ Packager: Thomas Dickey <dickey@invisible-island.net>
These are the example/test programs from the ncurses MAJOR.MINOR distribution,
for patch-date YYYYMMDD.
-This package installs in "bin/ncurses-examples" to avoid conflict with other
+This package installs in "bin/%{AppProgram}" to avoid conflict with other
packages.
+
+%package -n %{AltProgram}
+Summary: examples/test programs from ncurses with POSIX thread support
+
+%description -n %{AltProgram}
+These are the example/test programs from the ncurses MAJOR.MINOR distribution,
+for patch-date YYYYMMDD, using the "ncurseswt" library to demonstrate the
+use of POSIX threads, e.g., in ditto, rain, and worm.
+
+This package installs in "bin/%{AltProgram}" to avoid conflict with other
+packages.
+
%prep
%setup -q -n %{AppProgram}-%{AppRelease}
+%define debug_package %{nil}
+
%build
+%global _configure ../configure
+%define my_srcdir ..
+
+mkdir BUILD-%{AppProgram}
+pushd BUILD-%{AppProgram}
INSTALL_PROGRAM='${INSTALL}' \
- ./configure \
- --target %{_target_platform} \
- --prefix=%{_prefix} \
- --bindir=%{_bindir}/%{AppProgram} \
- --with-ncursesw \
- --disable-rpath-hack
+NCURSES_CONFIG_SUFFIX=dev \
+CONFIGURE_TOP=%{my_srcdir} \
+%configure \
+ --target %{_target_platform} \
+ --prefix=%{_prefix} \
+ --bindir=%{_bindir}/%{AppProgram} \
+ --datadir=%{_datadir}/%{AppProgram} \
+ --with-screen=ncursesw6dev \
+ --disable-rpath-hack
make
+popd
+
+mkdir BUILD-%{AltProgram}
+pushd BUILD-%{AltProgram}
+INSTALL_PROGRAM='${INSTALL}' \
+NCURSES_CONFIG_SUFFIX=dev \
+CONFIGURE_TOP=%{my_srcdir} \
+%configure \
+ --target %{_target_platform} \
+ --prefix=%{_prefix} \
+ --bindir=%{_bindir}/%{AltProgram} \
+ --datadir=%{_datadir}/%{AltProgram} \
+ --with-screen=ncursestw6dev \
+ --disable-rpath-hack
+
+make
+popd
%install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
-make install DESTDIR=$RPM_BUILD_ROOT
+pushd BUILD-%{AppProgram}
+make install DESTDIR=$RPM_BUILD_ROOT
+popd
-strip $RPM_BUILD_ROOT%{_bindir}/%{AppProgram}/*
+pushd BUILD-%{AltProgram}
+make install DESTDIR=$RPM_BUILD_ROOT
+popd
%clean
-[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
+if rm -rf $RPM_BUILD_ROOT; then
+ echo OK
+else
+ find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1
+fi
+exit 0
-%files
+%files -n %{AppProgram}
%defattr(-,root,root)
%{_bindir}/%{AppProgram}/*
+%{_datadir}/%{AppProgram}/*
+
+%files -n %{AltProgram}
+%defattr(-,root,root)
+%{_bindir}/%{AltProgram}/*
+%{_datadir}/%{AltProgram}/*
%changelog
# each patch should add its ChangeLog entries here
+* Sat Nov 16 2019 Thomas Dickey
+- modify clean-rule to work around Fedora NFS bugs.
+
+* Sat Nov 11 2017 Thomas Dickey
+- add example data-files
+- use rpm built-in "configure"
+- suppress debug-package
+
* Thu Mar 25 2010 Thomas Dickey
- initial version
diff --git a/test/padview.c b/test/padview.c
new file mode 100644
index 000000000000..60f800ffac75
--- /dev/null
+++ b/test/padview.c
@@ -0,0 +1,528 @@
+/****************************************************************************
+ * Copyright (c) 2017,2019 Free 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. *
+ ****************************************************************************/
+/*
+ * clone of view.c, using pads
+ *
+ * $Id: padview.c,v 1.15 2019/12/07 18:06:12 tom Exp $
+ */
+
+#include <test.priv.h>
+#include <widechars.h>
+#include <popup_msg.h>
+
+#include <sys/stat.h>
+#include <time.h>
+
+#if HAVE_NEWPAD
+
+static void finish(int sig) GCC_NORETURN;
+
+#define my_pair 1
+
+static int shift = 0;
+static bool try_color = FALSE;
+
+static char *fname;
+static int num_lines;
+
+#if USE_WIDEC_SUPPORT
+static bool n_option = FALSE;
+#endif
+
+static void usage(void) GCC_NORETURN;
+
+static void
+failed(const char *msg)
+{
+ endwin();
+ fprintf(stderr, "%s\n", msg);
+ ExitProgram(EXIT_FAILURE);
+}
+
+static void
+finish(int sig)
+{
+ endwin();
+ ExitProgram(sig != 0 ? EXIT_FAILURE : EXIT_SUCCESS);
+}
+
+static void
+show_all(const char *tag, WINDOW *my_pad, int my_row)
+{
+ int i;
+ int digits;
+ char temp[BUFSIZ];
+ time_t this_time;
+
+ for (digits = 1, i = num_lines; i > 0; i /= 10) {
+ ++digits;
+ }
+
+ wattrset(stdscr, COLOR_PAIR(my_pair));
+ clear();
+
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "view %.*s", (int) strlen(tag), tag);
+ i = (int) strlen(temp);
+ _nc_SPRINTF(temp + i, _nc_SLIMIT(sizeof(temp) - (size_t) i)
+ " %.*s", (int) sizeof(temp) - i - 2, fname);
+ mvprintw(0, 0, "%.*s", COLS, temp);
+ this_time = time((time_t *) 0);
+ _nc_STRNCPY(temp, ctime(&this_time), (size_t) 30);
+ if ((i = (int) strlen(temp)) != 0) {
+ temp[--i] = 0;
+ mvprintw(0, COLS - i - 2, " %s", temp);
+ }
+
+ for (i = 1; i < LINES; i++) {
+ int actual = my_row + i;
+ if (actual > num_lines) {
+ break;
+ }
+ mvprintw(i, 0, "%*d:", digits, actual);
+ }
+ wnoutrefresh(stdscr);
+ pnoutrefresh(my_pad, my_row, shift, 1, digits + 1, LINES - 1, COLS - 1);
+ doupdate();
+}
+
+static WINDOW *
+read_file(const char *filename)
+{
+ FILE *fp;
+ int pass;
+ int k;
+ int height, width;
+ size_t j;
+ size_t len;
+ struct stat sb;
+ char *my_blob;
+ char **my_vec = 0;
+ WINDOW *my_pad;
+
+ if (stat(filename, &sb) != 0
+ || (sb.st_mode & S_IFMT) != S_IFREG) {
+ failed("input is not a file");
+ }
+
+ if (sb.st_size == 0) {
+ failed("input is empty");
+ }
+
+ if ((fp = fopen(filename, "r")) == 0) {
+ failed("cannot open input-file");
+ }
+
+ if ((my_blob = malloc((size_t) sb.st_size + 1)) == 0) {
+ failed("cannot allocate memory for input-file");
+ }
+
+ len = fread(my_blob, sizeof(char), (size_t) sb.st_size, fp);
+ my_blob[sb.st_size] = '\0';
+ fclose(fp);
+
+ for (pass = 0; pass < 2; ++pass) {
+ char *base = my_blob;
+ k = 0;
+ for (j = 0; j < len; ++j) {
+ if (my_blob[j] == '\n') {
+ if (pass) {
+ my_vec[k] = base;
+ my_blob[j] = '\0';
+ }
+ base = my_blob + j + 1;
+ ++k;
+ }
+ }
+ num_lines = k;
+ if (base != (my_blob + j))
+ ++num_lines;
+ if (!pass &&
+ ((my_vec = typeCalloc(char *, (size_t) k + 2)) == 0)) {
+ failed("cannot allocate line-vector #1");
+ }
+ }
+
+#if USE_WIDEC_SUPPORT
+ if (!memcmp("\357\273\277", my_blob, 3)) {
+ char *s = my_blob + 3;
+ char *d = my_blob;
+ Trace(("trim BOM"));
+ do {
+ } while ((*d++ = *s++) != '\0');
+ }
+#endif
+
+ height = num_lines;
+ width = (int) strlen(my_vec[0]);
+ for (k = 1; my_vec[k]; ++k) {
+ int check = (int) (my_vec[k] - my_vec[k - 1]);
+ if (width < check)
+ width = check;
+ }
+ width = (width + 1) * 5;
+ my_pad = newpad(height, width);
+ if (my_pad == 0)
+ failed("cannot allocate pad workspace");
+ if (try_color) {
+ wattrset(my_pad, COLOR_PAIR(my_pair));
+ wbkgd(my_pad, (chtype) (' ' | COLOR_PAIR(my_pair)));
+ }
+
+ /*
+ * Use the curses library for rendering, including tab-conversion.
+ */
+ Trace(("slurp the file"));
+ for (k = 0; my_vec[k]; ++k) {
+ char *s;
+#if USE_WIDEC_SUPPORT
+ char *last = my_vec[k] + (int) strlen(my_vec[k]);
+ wchar_t wch[2];
+ size_t rc;
+#ifndef state_unused
+ mbstate_t state;
+#endif
+#endif /* USE_WIDEC_SUPPORT */
+
+ wmove(my_pad, k, 0);
+#if USE_WIDEC_SUPPORT
+ wch[1] = 0;
+ reset_mbytes(state);
+#endif
+ for (s = my_vec[k]; *s != '\0'; ++s) {
+#if USE_WIDEC_SUPPORT
+ if (!n_option) {
+ rc = (size_t) check_mbytes(wch[0], s, (size_t) (last - s), state);
+ if ((long) rc == -1 || (long) rc == -2) {
+ break;
+ }
+ s += rc - 1;
+ waddwstr(my_pad, wch);
+ } else
+#endif
+ waddch(my_pad, *s & 0xff);
+ }
+ }
+
+ free(my_vec);
+ free(my_blob);
+
+ return my_pad;
+}
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: view [options] file"
+ ,""
+ ,"Options:"
+ ," -c use color if terminal supports it"
+ ," -i ignore INT, QUIT, TERM signals"
+#if USE_WIDEC_SUPPORT
+ ," -n use waddch (bytes) rather then wadd_wch (wide-chars)"
+#endif
+ ," -s start in single-step mode, waiting for input"
+#ifdef TRACE
+ ," -t trace screen updates"
+ ," -T NUM specify trace mask"
+#endif
+ };
+ size_t n;
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+ ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc, char *argv[])
+{
+ static const char *help[] =
+ {
+ "Commands:",
+ " q,^Q,ESC - quit this program",
+ "",
+ " p,<Up> - scroll the viewport up by one row",
+ " n,<Down> - scroll the viewport down by one row",
+ " l,<Left> - scroll the viewport left by one column",
+ " r,<Right> - scroll the viewport right by one column",
+ " <,> - scroll the viewport left/right by 8 columns",
+ "",
+ " h,<Home> - scroll the viewport to top of file",
+ " ^F,<PageDn> - scroll to the next page",
+ " ^B,<PageUp> - scroll to the previous page",
+ " e,<End> - scroll the viewport to end of file",
+ "",
+ " ^L - repaint using redrawwin()",
+ "",
+ " 0 through 9 - enter digits for count",
+ " s - use entered count for halfdelay() parameter",
+ " - if no entered count, stop nodelay()",
+ " <space> - begin nodelay()",
+ 0
+ };
+
+ int i;
+ int my_delay = 0;
+ WINDOW *my_pad;
+ int my_row = 0;
+ int value = 0;
+ bool done = FALSE;
+ bool got_number = FALSE;
+ bool ignore_sigs = FALSE;
+ bool single_step = FALSE;
+ const char *my_label = "Input";
+
+ setlocale(LC_ALL, "");
+
+ while ((i = getopt(argc, argv, "cinstT:")) != -1) {
+ switch (i) {
+ case 'c':
+ try_color = TRUE;
+ break;
+ case 'i':
+ ignore_sigs = TRUE;
+ break;
+#if USE_WIDEC_SUPPORT
+ case 'n':
+ n_option = TRUE;
+ break;
+#endif
+ case 's':
+ single_step = TRUE;
+ break;
+#ifdef TRACE
+ case 'T':
+ {
+ char *next = 0;
+ int tvalue = (int) strtol(optarg, &next, 0);
+ if (tvalue < 0 || (next != 0 && *next != 0))
+ usage();
+ curses_trace((unsigned) tvalue);
+ }
+ break;
+ case 't':
+ curses_trace(TRACE_CALLS);
+ break;
+#endif
+ default:
+ usage();
+ }
+ }
+ if (optind + 1 != argc)
+ usage();
+
+ InitAndCatch(initscr(), ignore_sigs ? SIG_IGN : finish);
+ 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 */
+ if (!single_step)
+ nodelay(stdscr, TRUE);
+ idlok(stdscr, TRUE); /* allow use of insert/delete line */
+
+ if (try_color) {
+ if (has_colors()) {
+ start_color();
+ init_pair(my_pair, COLOR_WHITE, COLOR_BLUE);
+ bkgd((chtype) (' ' | COLOR_PAIR(my_pair)));
+ } else {
+ try_color = FALSE;
+ }
+ }
+
+ /*
+ * Do this after starting color, otherwise the pad's background will be
+ * uncolored after the ncurses 6.1.20181208 fixes.
+ */
+ my_pad = read_file(fname = argv[optind]);
+
+ my_row = 0;
+ while (!done) {
+ int n, c;
+
+ if (!got_number)
+ show_all(my_label, my_pad, my_row);
+
+ for (;;) {
+ c = getch();
+ if ((c < 127) && isdigit(c)) {
+ if (!got_number) {
+ MvPrintw(0, 0, "Count: ");
+ clrtoeol();
+ }
+ addch(UChar(c));
+ value = 10 * value + (c - '0');
+ got_number = TRUE;
+ } else
+ break;
+ }
+ if (got_number && value) {
+ n = value;
+ } else {
+ n = 1;
+ }
+
+ if (c != ERR)
+ my_label = keyname(c);
+ switch (c) {
+ case KEY_DOWN:
+ case 'n':
+ for (i = 0; i < n; i++)
+ if (my_row < (num_lines - LINES + 1))
+ my_row++;
+ else
+ break;
+ break;
+
+ case KEY_UP:
+ case 'p':
+ for (i = 0; i < n; i++)
+ if (my_row > 0)
+ my_row--;
+ else
+ break;
+ break;
+
+ case 'h':
+ /* FALLTHRU */
+ case KEY_HOME:
+ my_row = 0;
+ break;
+
+ case '<':
+ if ((shift -= 8) < 0)
+ shift = 0;
+ break;
+ case '>':
+ shift += 8;
+ break;
+
+ case 'e':
+ /* FALLTHRU */
+ case KEY_END:
+ if (num_lines > LINES)
+ my_row = (num_lines - LINES + 1);
+ else
+ my_row = (num_lines - 2);
+ break;
+
+ case CTRL('F'):
+ /* FALLTHRU */
+ case KEY_NPAGE:
+ for (i = 0; i < n; i++) {
+ if (my_row < (num_lines - 5))
+ my_row += (LINES - 1);
+ else
+ my_row = (num_lines - 2);
+ }
+ break;
+
+ case CTRL('B'):
+ /* FALLTHRU */
+ case KEY_PPAGE:
+ for (i = 0; i < n; i++) {
+ if (my_row >= LINES)
+ my_row -= (LINES - 1);
+ else
+ my_row = 0;
+ }
+ break;
+
+ case 'r':
+ case KEY_RIGHT:
+ shift += n;
+ break;
+
+ case 'l':
+ case KEY_LEFT:
+ shift -= n;
+ if (shift < 0) {
+ shift = 0;
+ beep();
+ }
+ break;
+
+ case 'q':
+ case QUIT:
+ case ESCAPE:
+ done = TRUE;
+ break;
+
+#ifdef KEY_RESIZE
+ case KEY_RESIZE: /* ignore this; ncurses will repaint */
+ break;
+#endif
+ case 's':
+#if HAVE_HALFDELAY
+ if (got_number) {
+ halfdelay(my_delay = n);
+ } else {
+ nodelay(stdscr, FALSE);
+ my_delay = -1;
+ }
+#else
+ nodelay(stdscr, FALSE);
+ my_delay = -1;
+#endif
+ break;
+ case ' ':
+ nodelay(stdscr, TRUE);
+ my_delay = 0;
+ break;
+ case CTRL('L'):
+ redrawwin(stdscr);
+ break;
+ case ERR:
+ if (!my_delay)
+ napms(50);
+ break;
+ case HELP_KEY_1:
+ popup_msg(stdscr, help);
+ break;
+ default:
+ beep();
+ break;
+ }
+ if (c >= KEY_MIN || (c > 0 && !isdigit(c))) {
+ got_number = FALSE;
+ value = 0;
+ }
+ }
+
+ finish(0); /* we're done */
+}
+#else
+int
+main(void)
+{
+ printf("This program requires the curses pad functions\n");
+ ExitProgram(EXIT_FAILURE);
+}
+#endif
diff --git a/test/pair_content.c b/test/pair_content.c
new file mode 100644
index 000000000000..2b39a7bc0ef1
--- /dev/null
+++ b/test/pair_content.c
@@ -0,0 +1,317 @@
+/****************************************************************************
+ * Copyright (c) 2018,2019 Free 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: pair_content.c,v 1.13 2019/08/24 23:02:49 tom Exp $
+ */
+
+#define NEED_TIME_H
+#include <test.priv.h>
+
+#if USE_EXTENDED_COLOR
+typedef int my_color_t;
+#else
+typedef NCURSES_COLOR_T my_color_t;
+#endif
+
+typedef struct {
+ my_color_t fg;
+ my_color_t bg;
+} MYPAIR;
+
+static int f_opt;
+static int i_opt;
+static int l_opt;
+static int n_opt;
+static int p_opt;
+static int r_opt;
+static int s_opt;
+
+#if USE_EXTENDED_COLOR
+static int x_opt;
+#endif
+
+static MYPAIR *expected;
+
+#if HAVE_GETTIMEOFDAY
+static struct timeval initial_time;
+static struct timeval finish_time;
+#endif
+
+static void
+failed(const char *msg)
+{
+ printw("%s", msg);
+ getch();
+ endwin();
+ ExitProgram(EXIT_FAILURE);
+}
+
+#if USE_EXTENDED_COLOR
+static int
+InitPair(int pair, int fg, int bg)
+{
+ int rc;
+ if (x_opt) {
+ rc = init_extended_pair(pair, fg, bg);
+ } else {
+ rc = init_pair((NCURSES_PAIRS_T) pair,
+ (NCURSES_COLOR_T) fg,
+ (NCURSES_COLOR_T) bg);
+ }
+ return rc;
+}
+
+static int
+PairContent(int pair, int *fgp, int *bgp)
+{
+ int rc;
+ if (x_opt) {
+ rc = extended_pair_content(pair, fgp, bgp);
+ } else {
+ short fg, bg;
+ if ((rc = pair_content((short) pair, &fg, &bg)) == OK) {
+ *fgp = fg;
+ *bgp = bg;
+ }
+ }
+ return rc;
+}
+#else
+#define InitPair(pair,fg,bg) init_pair((NCURSES_COLOR_T)pair,(NCURSES_COLOR_T)fg,(NCURSES_COLOR_T)bg)
+#define PairContent(pair,fgp,bgp) pair_content((NCURSES_PAIRS_T)pair,fgp,bgp)
+#endif
+
+static my_color_t
+random_color(void)
+{
+ return (my_color_t) (rand() % COLORS);
+}
+
+static void
+setup_test(void)
+{
+ initscr();
+ cbreak();
+ noecho();
+ scrollok(stdscr, TRUE);
+ if (has_colors()) {
+ start_color();
+
+ if (!f_opt)
+ f_opt = 1;
+ if (!l_opt)
+ l_opt = COLOR_PAIRS;
+ if (l_opt <= 1)
+ failed("color-pair limit must be greater than one");
+
+ if (!n_opt) {
+ int pair;
+ size_t need = (size_t) ((l_opt > COLOR_PAIRS)
+ ? l_opt
+ : COLOR_PAIRS) + 1;
+
+ expected = typeCalloc(MYPAIR, need);
+ if (s_opt) {
+ my_color_t fg;
+ my_color_t bg;
+ pair = f_opt;
+ for (fg = 0; fg < COLORS; ++fg) {
+ for (bg = 0; bg < COLORS; ++bg) {
+ if (pair < l_opt) {
+ InitPair(pair, fg, bg);
+ expected[pair].fg = (my_color_t) fg;
+ expected[pair].bg = (my_color_t) bg;
+ ++pair;
+ } else {
+ break;
+ }
+ }
+ }
+ } else {
+ for (pair = f_opt; pair < l_opt; ++pair) {
+ expected[pair].fg = random_color();
+ expected[pair].bg = random_color();
+ InitPair(pair, expected[pair].fg, expected[pair].bg);
+ }
+ }
+ }
+ } else {
+ failed("This demo requires a color terminal");
+ }
+#if HAVE_GETTIMEOFDAY
+ gettimeofday(&initial_time, 0);
+#endif
+}
+
+static void
+run_test(void)
+{
+ int pair;
+ bool success = TRUE;
+ for (pair = 1; pair < l_opt; ++pair) {
+ my_color_t fg;
+ my_color_t bg;
+ if (PairContent(pair, &fg, &bg) == OK) {
+ if (expected != 0) {
+ if (fg != expected[pair].fg)
+ success = FALSE;
+ if (bg != expected[pair].bg)
+ success = FALSE;
+ }
+ }
+ }
+ if (i_opt) {
+ addch(success ? '.' : '?');
+ refresh();
+ }
+}
+
+static void
+finish_test(void)
+{
+ getch();
+ endwin();
+}
+
+#if HAVE_GETTIMEOFDAY
+static double
+seconds(struct timeval *mark)
+{
+ double result = (double) mark->tv_sec;
+ result += ((double) mark->tv_usec / 1e6);
+ return result;
+}
+#endif
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: pair_content [options]"
+ ,""
+ ,"Options:"
+ ," -f PAIR first color pair to test (default: 1)"
+ ," -i interactive, showing test-progress"
+ ," -l PAIR last color pair to test (default: max_pairs-1)"
+ ," -n do not initialize color pairs"
+ ," -p print data for color pairs instead of testing"
+ ," -r COUNT repeat for given count"
+ ," -s initialize pairs sequentially rather than random"
+#if USE_EXTENDED_COLOR
+ ," -x use extended color pairs/values"
+#endif
+ };
+ size_t n;
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+ ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+{
+ int i;
+
+ while ((i = getopt(argc, argv, "f:il:npr:sx")) != -1) {
+ switch (i) {
+ case 'f':
+ if ((f_opt = atoi(optarg)) <= 0)
+ usage();
+ break;
+ case 'i':
+ i_opt = 1;
+ break;
+ case 'l':
+ if ((l_opt = atoi(optarg)) <= 0)
+ usage();
+ break;
+ case 'n':
+ n_opt = 1;
+ break;
+ case 'p':
+ p_opt = 1;
+ break;
+ case 'r':
+ if ((r_opt = atoi(optarg)) <= 0)
+ usage();
+ break;
+ case 's':
+ s_opt = 1;
+ break;
+#if USE_EXTENDED_COLOR
+ case 'x':
+ x_opt = 1;
+ break;
+#endif
+ default:
+ usage();
+ }
+ }
+ if (optind < argc)
+ usage();
+ if (r_opt <= 0)
+ r_opt = 1;
+
+ setup_test();
+ if (p_opt) {
+ endwin();
+ for (i = f_opt; i < l_opt; ++i) {
+ my_color_t fg, bg;
+ if (PairContent(i, &fg, &bg) == OK) {
+ printf("%d: %d %d\n", i, fg, bg);
+ } else {
+ printf("%d: ? ?\n", i);
+ }
+ }
+ } else {
+ int repeat;
+
+ for (repeat = 0; repeat < r_opt; ++repeat) {
+ run_test();
+ if (i_opt) {
+ addch('.');
+ refresh();
+ }
+ }
+
+ if (i_opt) {
+ addch('\n');
+ }
+ printw("DONE: ");
+#if HAVE_GETTIMEOFDAY
+ gettimeofday(&finish_time, 0);
+ printw("%.03f seconds",
+ seconds(&finish_time)
+ - seconds(&initial_time));
+#endif
+ finish_test();
+ }
+
+ ExitProgram(EXIT_SUCCESS);
+}
diff --git a/test/parse_rgb.h b/test/parse_rgb.h
new file mode 100644
index 000000000000..a0d093fe85bb
--- /dev/null
+++ b/test/parse_rgb.h
@@ -0,0 +1,98 @@
+/****************************************************************************
+ * Copyright (c) 2018 Free 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: parse_rgb.h,v 1.4 2018/02/03 23:40:53 tom Exp $
+ *
+ * Sample implementation of ncurses RGB extension from user_caps(5).
+ */
+#ifndef PARSE_RBG_H_incl
+#define PARSE_RBG_H_incl 1
+
+#include <test.priv.h>
+
+#if HAVE_TIGETSTR && USE_WIDEC_SUPPORT
+static int
+parse_rgb(int *r_max, int *g_max, int *b_max)
+{
+ int colors = tigetnum("colors");
+ int result = ERR;
+
+ *r_max = *g_max = *b_max = 0;
+
+ if (colors > 0) {
+ int max_bits;
+ int bits;
+ int pwr2;
+ int r = 0, g = 0, b = 0;
+ char *data;
+ char ch;
+
+ for (max_bits = 0, pwr2 = 1;
+ pwr2 < colors;
+ ++max_bits, pwr2 <<= 1) {
+ ;
+ }
+
+ if (tigetflag("RGB") > 0) {
+ result = OK;
+ r = g = b = (max_bits + 2) / 3;
+ } else if ((bits = tigetnum("RGB")) > 0) {
+ result = OK;
+ r = g = b = bits;
+ } else if ((data = tigetstr("RGB")) != ABSENT_STRING
+ && data != CANCELLED_STRING
+ && sscanf(data, "%d/%d/%d%c", &r, &g, &b, &ch) == 3) {
+ result = OK;
+ }
+
+ if ((r + g + b) < max_bits) {
+ result = ERR;
+ } else if (result == 0) {
+ if (r > max_bits) {
+ r = max_bits;
+ g = b = 0;
+ }
+ *r_max = r;
+ if (g > (max_bits -= r)) {
+ g = max_bits;
+ b = 0;
+ }
+ *g_max = g;
+ if (b > (max_bits -= g)) {
+ b = max_bits;
+ }
+ *b_max = b;
+ }
+ }
+ return result;
+}
+#else
+#define parse_rgb(r,g,b) (ERR)
+#endif
+
+#endif /* PARSE_RBG_H_incl */
diff --git a/test/picsmap.c b/test/picsmap.c
new file mode 100644
index 000000000000..624eda889590
--- /dev/null
+++ b/test/picsmap.c
@@ -0,0 +1,1762 @@
+/****************************************************************************
+ * Copyright (c) 2017-2018,2019 Free 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: picsmap.c,v 1.131 2019/12/14 23:51:39 tom Exp $
+ *
+ * Author: Thomas E. Dickey
+ *
+ * A little more interesting than "dots", read a simple image into memory and
+ * measure the time taken to paint it normally vs randomly.
+ *
+ * TODO improve use of rgb-names using tsearch.
+ *
+ * TODO add option to dump picture in non-optimized mode, e.g., like tput.
+ * TODO write cells/second to stderr (or log)
+ * TODO write picture left-to-right/top-to-bottom
+ * TODO write picture randomly
+ * TODO add one-shot option vs repeat-count before exiting
+ * TODO add option "-xc" for init_color vs init_extended_color
+ * TODO add option "-xa" for init_pair vs alloc_pair
+ * TODO use pad to allow pictures larger than screen
+ * TODO add option to just use convert (which can scale) vs builtin xbm/xpm.
+ * TODO add scr_dump and scr_restore calls
+ * TODO add option for assume_default_colors
+ */
+#include <test.priv.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#if HAVE_STDINT_H
+#include <stdint.h>
+#define my_intptr_t intptr_t
+#else
+#define my_intptr_t long
+#endif
+
+#if HAVE_TSEARCH
+#include <search.h>
+#endif
+
+#undef CUR /* use only the curses interface */
+
+#define L_BLOCK '['
+#define R_BLOCK ']'
+
+#define L_CURLY '{'
+#define R_CURLY '}'
+
+#define MaxSCALE 1000 /* input curses ranges 0..1000 */
+#define MaxRGB 255 /* output color ranges 0..255 */
+#define okCOLOR(n) ((n) >= 0 && (n) < COLORS)
+#define okSCALE(n) ((n) >= 0 && (n) <= MaxSCALE)
+#define Scaled256(n) (NCURSES_COLOR_T) (int)(((double)(n) * MaxSCALE) / 255)
+#define ScaledColor(n) (NCURSES_COLOR_T) (int)(((double)(n) * MaxSCALE) / scale)
+
+#ifndef RGB_PATH
+#define RGB_PATH "/etc/X11/rgb.txt"
+#endif
+
+#include <picsmap.h>
+
+typedef struct {
+ size_t file;
+ size_t name;
+ size_t list;
+ size_t data;
+ size_t head;
+ size_t pair;
+ size_t cell;
+} HOW_MUCH;
+
+#undef MAX
+#define MAX(a,b) ((a)>(b)?(a):(b))
+
+/*
+ * tfind will return null on failure, so we map subscripts starting at one.
+ */
+#define P2I(n) (((int)(my_intptr_t)(n)) - 1)
+#define I2P(n) (void *)(my_intptr_t)((n) + 1)
+
+#define pause_curses() if (in_curses) stop_curses()
+
+#define debugmsg if (debugging) logmsg
+#define debugmsg2 if (debugging) logmsg2
+
+static void cleanup(int) GCC_NORETURN;
+static void giveup(const char *fmt, ...) GCC_PRINTFLIKE(1, 2);
+static void logmsg(const char *fmt, ...) GCC_PRINTFLIKE(1, 2);
+static void logmsg2(const char *fmt, ...) GCC_PRINTFLIKE(1, 2);
+static void warning(const char *fmt, ...) GCC_PRINTFLIKE(1, 2);
+static int gather_c_values(int);
+
+static FILE *logfp = 0;
+static double aspect_ratio = 0.6;
+static bool in_curses = FALSE;
+static bool debugging = FALSE;
+static bool quiet = FALSE;
+static int slow_time = -1;
+static RGB_NAME *rgb_table;
+static RGB_DATA *all_colors;
+static HOW_MUCH how_much;
+
+static int reading_last;
+static int reading_size;
+static FG_NODE *reading_ncols;
+
+#if HAVE_TSEARCH
+static void *reading_ntree;
+#endif
+
+#if HAVE_ALLOC_PAIR && USE_EXTENDED_COLOR
+#define USE_EXTENDED_COLORS 1
+static bool use_extended_pairs = FALSE;
+static bool use_extended_colors = FALSE;
+#else
+#define USE_EXTENDED_COLORS 0
+#endif
+
+static void
+logmsg(const char *fmt, ...)
+{
+ if (logfp != 0) {
+ va_list ap;
+ va_start(ap, fmt);
+ vfprintf(logfp, fmt, ap);
+ va_end(ap);
+ fputc('\n', logfp);
+ fflush(logfp);
+ }
+}
+
+static void
+logmsg2(const char *fmt, ...)
+{
+ if (logfp != 0) {
+ va_list ap;
+ va_start(ap, fmt);
+ vfprintf(logfp, fmt, ap);
+ va_end(ap);
+ fflush(logfp);
+ }
+}
+
+static void
+close_log(void)
+{
+ if (logfp != 0) {
+ logmsg("Allocations:");
+ logmsg("%8ld file", (long) how_much.file);
+ logmsg("%8ld name", (long) how_much.name);
+ logmsg("%8ld list", (long) how_much.list);
+ logmsg("%8ld data", (long) how_much.data);
+ logmsg("%8ld head", (long) how_much.head);
+ logmsg("%8ld pair", (long) how_much.pair);
+ logmsg("%8ld cell", (long) how_much.cell);
+ logmsg("%8ld window", LINES * COLS * (long) sizeof(NCURSES_CH_T));
+ fclose(logfp);
+ logfp = 0;
+ }
+}
+
+static void
+cleanup(int code)
+{
+ pause_curses();
+ close_log();
+ ExitProgram(code);
+ /* NOTREACHED */
+}
+
+static void
+failed(const char *msg)
+{
+ int save = errno;
+ perror(msg);
+ logmsg("failed with %s", strerror(save));
+ cleanup(EXIT_FAILURE);
+}
+
+static void
+warning(const char *fmt, ...)
+{
+ if (logfp != 0) {
+ va_list ap;
+ va_start(ap, fmt);
+ vfprintf(logfp, fmt, ap);
+ va_end(ap);
+ fputc('\n', logfp);
+ fflush(logfp);
+ } else {
+ va_list ap;
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ fputc('\n', stderr);
+ cleanup(EXIT_FAILURE);
+ }
+}
+
+static void
+free_data(char **data)
+{
+ if (data != 0) {
+ free(data[0]);
+ free(data);
+ }
+}
+
+static PICS_HEAD *
+free_pics_head(PICS_HEAD * pics)
+{
+ if (pics != 0) {
+ free(pics->fgcol);
+ free(pics->cells);
+ free(pics->name);
+ free(pics);
+ pics = 0;
+ }
+ return pics;
+}
+
+static void
+begin_c_values(int size)
+{
+ reading_last = 0;
+ reading_size = size;
+ reading_ncols = typeCalloc(FG_NODE, size + 1);
+ how_much.pair += (sizeof(FG_NODE) * (size_t) size);
+ /* black is always the first slot, to work around P2I/I2P logic */
+ gather_c_values(0);
+}
+
+#if HAVE_TSEARCH
+static int
+compare_c_values(const void *p, const void *q)
+{
+ const int a = P2I(p);
+ const int b = P2I(q);
+ return (reading_ncols[a].fgcol - reading_ncols[b].fgcol);
+}
+
+#ifdef DEBUG_TSEARCH
+static void
+check_c_values(int ln)
+{
+ static int oops = 5;
+ FG_NODE **ft;
+ int n;
+ for (n = 0; n < reading_last; ++n) {
+ ft = tfind(I2P(n), &reading_ntree, compare_c_values);
+ if (ft != 0) {
+ int q = P2I(*ft);
+ if (reading_ncols[q].fgcol != reading_ncols[n].fgcol) {
+ logmsg("@%d, %d:%d (%d) %d %d fgcol %06X %06X", ln, n,
+ reading_last - 1,
+ reading_size,
+ q, n,
+ reading_ncols[n].fgcol,
+ reading_ncols[q].fgcol);
+ }
+ } else {
+ logmsg("@%d, %d:%d (%d) ? %d null %06X", ln, n,
+ reading_last - 1,
+ reading_size,
+ n,
+ reading_ncols[n].fgcol);
+ if (oops-- <= 0)
+ return;
+ }
+ }
+}
+#else
+#define check_c_values(n) /* nothing */
+#endif
+#endif
+
+static int
+gather_c_values(int fg)
+{
+ int found = -1;
+#if HAVE_TSEARCH
+ FG_NODE **ft;
+ int next = reading_last;
+
+ reading_ncols[next].fgcol = fg;
+ reading_ncols[next].count = 0;
+
+ check_c_values(__LINE__);
+ if ((ft = tfind(I2P(next), &reading_ntree, compare_c_values)) != 0) {
+ found = P2I(*ft);
+ } else {
+ if (reading_last + 2 >= reading_size) {
+ int more = ((MAX(reading_last, reading_size) + 2) * 3) / 2;
+ int last = reading_last + 1;
+ FG_NODE *p = typeRealloc(FG_NODE, more, reading_ncols);
+ if (p == 0)
+ goto done;
+
+ reading_size = more;
+ reading_ncols = p;
+ memset(reading_ncols + last, 0,
+ sizeof(FG_NODE) * (size_t) (more - last));
+ check_c_values(__LINE__);
+ }
+ ++reading_last;
+ how_much.pair += sizeof(FG_NODE);
+ if ((ft = tsearch(I2P(next), &reading_ntree, compare_c_values)) != 0) {
+ found = P2I(*ft);
+ if (found != next)
+ logmsg("OOPS expected slot %d, got %d", next, found);
+ debugmsg("allocated color #%d as #%06X", next, fg);
+ check_c_values(__LINE__);
+ }
+ }
+#else
+ int n;
+
+ for (n = 0; n < reading_last; ++n) {
+ if (reading_ncols[n].fgcol == fg) {
+ found = n;
+ break;
+ }
+ }
+ if (found < 0) {
+ if (reading_last + 2 >= reading_size) {
+ int more = ((reading_last + 2) * 3) / 2;
+ FG_NODE *p = typeRealloc(FG_NODE, more, reading_ncols);
+ if (p == 0)
+ goto done;
+
+ how_much.pair -= (sizeof(FG_NODE) * (size_t) reading_size);
+ how_much.pair += (sizeof(FG_NODE) * (size_t) more);
+ reading_size = more;
+ reading_ncols = p;
+ memset(reading_ncols + reading_last, 0,
+ sizeof(FG_NODE) * (size_t) (more - reading_last));
+ }
+ reading_ncols[reading_last].fgcol = fg;
+ found = reading_last++;
+ }
+#endif
+ done:
+ return found;
+}
+
+static void
+finish_c_values(PICS_HEAD * head)
+{
+ head->colors = reading_last;
+ head->fgcol = reading_ncols;
+
+ reading_last = 0;
+ reading_size = 0;
+ reading_ncols = 0;
+}
+
+static void
+dispose_c_values(void)
+{
+#if HAVE_TSEARCH
+ if (reading_ntree != 0) {
+ int n;
+ for (n = 0; n < reading_last; ++n) {
+ tdelete(I2P(n), &reading_ntree, compare_c_values);
+ }
+ reading_ntree = 0;
+ }
+#endif
+ if (reading_ncols != 0) {
+ free(reading_ncols);
+ reading_ncols = 0;
+ }
+ reading_last = 0;
+ reading_size = 0;
+}
+
+static int
+is_file(const char *filename, struct stat *sb)
+{
+ int result = 0;
+ if (stat(filename, sb) == 0
+ && (sb->st_mode & S_IFMT) == S_IFREG
+ && sb->st_size != 0) {
+ result = 1;
+ }
+ debugmsg("is_file(%s) %d", filename, result);
+ return result;
+}
+
+/*
+ * Simplify reading xbm/xpm files by first making an array of lines. Blank
+ * lines are filtered out.
+ */
+static char **
+read_file(const char *filename)
+{
+ char **result = 0;
+ struct stat sb;
+
+ if (!quiet) {
+ pause_curses();
+ printf("** %s\n", filename);
+ }
+
+ if (is_file(filename, &sb)) {
+ size_t size = (size_t) sb.st_size;
+ char *blob = typeCalloc(char, size + 1);
+ bool binary = FALSE;
+ unsigned k = 0;
+
+ result = typeCalloc(char *, size + 1);
+ how_much.file += ((size + 1) * 2);
+
+ if (blob != 0 && result != 0) {
+ FILE *fp = fopen(filename, "r");
+ if (fp != 0) {
+ logmsg("opened %s", filename);
+
+ if (fread(blob, sizeof(char), size, fp) == size) {
+ bool had_line = TRUE;
+ unsigned j;
+
+ for (j = 0; (size_t) j < size; ++j) {
+ if (blob[j] == '\0' ||
+ (UChar(blob[j]) < 32 &&
+ !isspace(UChar(blob[j]))) ||
+ (UChar(blob[j]) >= 128 && UChar(blob[j]) < 160)) {
+ binary = TRUE;
+ }
+ if (blob[j] == '\n') {
+ blob[j] = '\0';
+ if (k && !binary) {
+ debugmsg2("[%5d] %s\n", k, result[k - 1]);
+ }
+ had_line = TRUE;
+ } else if (had_line) {
+ had_line = FALSE;
+ result[k++] = blob + j;
+ }
+ }
+ result[k] = 0;
+ if (k && !binary) {
+ debugmsg2("[%5d] %s\n", k, result[k - 1]);
+ }
+ }
+ fclose(fp);
+ } else {
+ logmsg("cannot open %s", filename);
+ }
+ }
+ if (k == 0) {
+ debugmsg("...file is empty");
+ free(blob);
+ free(result);
+ result = 0;
+ } else if (binary) {
+ debugmsg("...file is non-text");
+ }
+ }
+ return result;
+}
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: picsmap [options] [imagefile [...]]"
+ ,"Read/display one or more xbm/xpm files (possibly use \"convert\")"
+ ,""
+ ,"Options:"
+ ," -a ratio aspect-ratio correction for ImageMagick"
+#if HAVE_USE_DEFAULT_COLORS
+ ," -d invoke use_default_colors"
+#endif
+ ," -L add debugging information to logfile"
+ ," -l logfile write informational messages to logfile"
+ ," -p palette color-palette file (default \"$TERM.dat\")"
+ ," -q less verbose"
+ ," -r rgb-path xpm uses X rgb color-names (default \"" RGB_PATH "\")"
+ ," -s SECS pause for SECS seconds after display vs getch"
+#if USE_EXTENDED_COLORS
+ ," -x [pc] use extension (p=extended-pairs, c=extended-colors)"
+ ," Either/both extension may be given"
+#endif
+ };
+ size_t n;
+
+ pause_curses();
+
+ fflush(stdout);
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+ cleanup(EXIT_FAILURE);
+}
+
+static void
+giveup(const char *fmt, ...)
+{
+ va_list ap;
+
+ pause_curses();
+ fflush(stdout);
+
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ fputc('\n', stderr);
+ va_end(ap);
+
+ if (logfp) {
+ va_start(ap, fmt);
+ vfprintf(logfp, fmt, ap);
+ fputc('\n', logfp);
+ va_end(ap);
+ fflush(logfp);
+ }
+
+ usage();
+}
+
+/*
+ * Palette files are named for $TERM values. However, there are fewer palette
+ * files than $TERM's. Although there are known problems (some cannot even get
+ * black and white correct), for the purpose of comparison, pretending that
+ * those map into "xterm" is useful.
+ */
+static char **
+read_palette(const char *filename)
+{
+ static const char *data_dir = DATA_DIR;
+ char **result = 0;
+ size_t last = strlen(filename);
+ size_t need = (strlen(data_dir) + 20 + last);
+ char *full_name = malloc(need);
+ char *s;
+ struct stat sb;
+
+ if (full_name != 0) {
+ int tries;
+ for (tries = 0; tries < 8; ++tries) {
+
+ *(s = full_name) = '\0';
+ if (tries & 1) {
+ if (strchr(filename, '/') == 0) {
+ _nc_SPRINTF(full_name, _nc_SLIMIT(need) "%s/", data_dir);
+ } else {
+ continue;
+ }
+ }
+ s += strlen(s);
+ if (((size_t) (s - full_name) + last + 1) >= need)
+ continue;
+
+ _nc_STRCAT(full_name, filename, need);
+ if (tries & 4) {
+ char *t = s;
+ char *tc;
+ int num;
+ char chr;
+ int found = 0;
+ while (*t != '\0') {
+ if (*t == '-') {
+ if (sscanf(t, "-%d%c", &num, &chr) == 2 &&
+ chr == 'c' &&
+ (tc = strchr(t, chr)) != 0 &&
+ !(strncmp) (tc, "color", 5)) {
+ found = 1;
+ }
+ break;
+ }
+ ++t;
+ }
+ if (found && (t != s)
+ && (strncmp) (s, "xterm", (size_t) (t - s))) {
+ _nc_SPRINTF(s, _nc_SLIMIT(need - (size_t) (s - full_name))
+ "xterm%s", filename + (t - s));
+ } else {
+ continue;
+ }
+ }
+ s += strlen(s);
+
+ if (tries & 2) {
+ int len = (int) strlen(filename);
+ if (len <= 4 || strcmp(filename + len - 4, ".dat")) {
+ _nc_STRCAT(full_name, ".dat", need);
+ } else {
+ continue;
+ }
+ }
+ if (is_file(full_name, &sb))
+ goto ok;
+ }
+ goto failed;
+ ok:
+ result = read_file(full_name);
+ failed:
+ free(full_name);
+ }
+ return result;
+}
+
+static void
+init_palette(const char *palette_file)
+{
+ if (palette_file != 0) {
+ char **data = read_palette(palette_file);
+
+ all_colors = typeMalloc(RGB_DATA, (unsigned) COLORS);
+ how_much.data += (sizeof(RGB_DATA) * (unsigned) COLORS);
+
+#if HAVE_COLOR_CONTENT
+ {
+ int cp;
+ for (cp = 0; cp < COLORS; ++cp) {
+ color_content((short) cp,
+ &all_colors[cp].red,
+ &all_colors[cp].green,
+ &all_colors[cp].blue);
+ }
+ }
+#else
+ memset(all_colors, 0, sizeof(RGB_DATA) * (size_t) COLORS);
+#endif
+ if (data != 0) {
+ int n;
+ int red, green, blue;
+ int scale = MaxSCALE;
+ int c;
+ for (n = 0; data[n] != 0; ++n) {
+ if (sscanf(data[n], "scale:%d", &c) == 1) {
+ scale = c;
+ } else if (sscanf(data[n], "%d:%d %d %d",
+ &c,
+ &red,
+ &green,
+ &blue) == 4
+ && okCOLOR(c)
+ && okSCALE(red)
+ && okSCALE(green)
+ && okSCALE(blue)) {
+ /* *INDENT-EQLS* */
+ all_colors[c].red = ScaledColor(red);
+ all_colors[c].green = ScaledColor(green);
+ all_colors[c].blue = ScaledColor(blue);
+ }
+ }
+ }
+ free_data(data);
+ /* *INDENT-EQLS* */
+ } else if (COLORS > 1) {
+ int power2 = 1;
+ int shift = 0;
+
+ while (power2 < COLORS) {
+ ++shift;
+ power2 <<= 1;
+ }
+
+ if ((power2 != COLORS) || ((shift % 3) != 0)) {
+ if (all_colors == 0) {
+ init_palette(getenv("TERM"));
+ if (all_colors == 0) {
+ giveup("With %d colors, you need a palette-file", COLORS);
+ }
+ }
+ }
+ }
+}
+
+/*
+ * Map the 24-bit RGB value to a color index if using a palette, otherwise to a
+ * direct color value.
+ */
+static int
+map_color(int value)
+{
+ int result = value;
+
+ if (result < 0) {
+ result = -1;
+ } else {
+ /* *INDENT-EQLS* */
+ int red = (value & 0xff0000) >> 16;
+ int green = (value & 0x00ff00) >> 8;
+ int blue = (value & 0x0000ff) >> 0;
+
+ if (all_colors != 0) {
+#define Diff2(n,m) ((m) - all_colors[n].m) * ((m) - all_colors[n].m)
+#define Diff2S(n) Diff2(n,red) + Diff2(n,green) + Diff2(n,blue)
+ int d2 = Diff2S(0);
+ int n;
+
+ /* *INDENT-EQLS* */
+ red = Scaled256(red);
+ green = Scaled256(green);
+ blue = Scaled256(blue);
+
+ for (result = 0, n = 1; n < COLORS; ++n) {
+ int d = Diff2(n, red) + Diff2(n, green) + Diff2(n, blue);
+ if (d < d2) {
+ d2 = d;
+ result = n;
+ }
+ }
+ } else { /* direct color */
+ int power2 = 1;
+ int shifts = 8;
+
+ while (power2 < COLORS) {
+ power2 <<= 3;
+ shifts--;
+ }
+
+ if (shifts > 0) {
+ /* TODO: round up */
+ red >>= shifts;
+ green >>= shifts;
+ blue >>= shifts;
+ result = ((red << (2 * (8 - shifts)))
+ + (green << (8 - shifts))
+ + blue);
+ }
+ }
+ }
+ return result;
+}
+
+static int
+bytes_of(int value)
+{
+ if (value & 7) {
+ value |= 7;
+ value++;
+ }
+ return value;
+}
+
+static int match_c(const char *, const char *, ...) GCC_SCANFLIKE(2,3);
+
+static char *
+skip_s(char *s)
+{
+ while (isspace(UChar(*s)))
+ s++;
+ return s;
+}
+
+static const char *
+skip_cs(const char *s)
+{
+ while (isspace(UChar(*s)))
+ s++;
+ return s;
+}
+
+static char *
+skip_word(char *s)
+{
+ s = skip_s(s);
+ while (isgraph(UChar(*s)))
+ s++;
+ return s;
+}
+
+static int
+match_c(const char *source, const char *pattern, ...)
+{
+ int limit = (int) strlen(source);
+ const char *last_s = source + limit;
+ va_list ap;
+ int ch;
+ int *ip;
+ char *cp;
+ long lv;
+
+ va_start(ap, pattern);
+
+ limit = -1;
+ while (*pattern != '\0') {
+ ch = UChar(*pattern++);
+ /* blank in the pattern matches zero-or-more blanks in source */
+ if (isspace(ch)) {
+ source = skip_cs(source);
+ continue;
+ }
+ /* %c, %d, %s are like sscanf except for special treatment of blanks */
+ if (ch == '%' && *pattern != '\0' && strchr("cdnsx", *pattern)) {
+ bool found = FALSE;
+ ch = *pattern++;
+ switch (ch) {
+ case 'c':
+ cp = va_arg(ap, char *);
+ do {
+ *cp++ = *source++;
+ } while (--limit > 0);
+ break;
+ case 'd':
+ case 'x':
+ limit = -1;
+ ip = va_arg(ap, int *);
+ lv = strtol(source, &cp, ch == 'd' ? 10 : 16);
+ if (cp != 0 && cp != source) {
+ *ip = (int) lv;
+ source = cp;
+ } else {
+ goto finish;
+ }
+ break;
+ case 'n':
+ /* not really sscanf... */
+ limit = *va_arg(ap, int *);
+ break;
+ case 's':
+ limit = -1;
+ cp = va_arg(ap, char *);
+ while (*source != '\0') {
+ ch = UChar(*source);
+ if (isspace(ch)) {
+ break;
+ } else if (found && (ch == *skip_cs(pattern))) {
+ break;
+ } else {
+ *cp++ = *source++;
+ found = TRUE;
+ }
+ }
+ *cp = '\0';
+ break;
+ }
+ continue;
+ }
+ /* other characters are matched literally */
+ if (*source++ != ch) {
+ break;
+ }
+ }
+ finish:
+
+ va_end(ap);
+ if (source > last_s)
+ source = last_s;
+ return (*source || *pattern) ? 0 : 1;
+}
+
+static int
+match_colors(const char *source, int cpp, char *arg1, char *arg2, char *arg3)
+{
+ int result = 0;
+
+ /* most files use a quasi-fixed format */
+ if (match_c(source, " \"%n%c %s %s \" , ", &cpp, arg1, arg2, arg3)) {
+ arg1[cpp] = '\0';
+ result = 1;
+ } else {
+ const char *s = skip_cs(source);
+ size_t have = strlen(source);
+
+ if (*s++ == '"' && have > ((size_t) cpp + 2)) {
+ memcpy(arg1, s, (size_t) cpp);
+ s += cpp;
+ while (*s++ == '\t') {
+ char *t;
+ for (t = arg2; (*s != '\0') && strchr("\t\"", *s) == 0;) {
+ if (*s == ' ') {
+ s = skip_cs(s);
+ break;
+ }
+ *t++ = *s++;
+ *t = '\0';
+ }
+ for (t = arg3; (*s != '\0') && strchr("\t\"", *s) == 0;) {
+ *t++ = *s++;
+ *t = '\0';
+ }
+ if (!strcmp(arg2, "c")) {
+ result = 1;
+ break;
+ }
+ }
+ }
+ }
+ return result;
+}
+
+static RGB_NAME *
+parse_rgb(char **data)
+{
+ char buf[BUFSIZ];
+ int n;
+ unsigned long r, g, b;
+ char *s, *t;
+ size_t item = 0;
+ size_t need;
+ RGB_NAME *result = 0;
+
+ for (need = 0; data[need] != 0; ++need) ;
+
+ result = typeCalloc(RGB_NAME, need + 2);
+ how_much.name += (sizeof(RGB_NAME) * (need + 2));
+
+ for (n = 0; data[n] != 0; ++n) {
+ if (strlen(t = data[n]) >= sizeof(buf) - 1)
+ continue;
+ if (*(s = skip_s(t)) == '!')
+ continue;
+
+ r = strtoul(s, &t, 10);
+ s = skip_s(t);
+ g = strtoul(s, &t, 10);
+ s = skip_s(t);
+ b = strtoul(s, &t, 10);
+ s = skip_s(t);
+
+ result[item].name = s;
+ t = s + strlen(s);
+ while (t-- != s && isspace(UChar(*t))) {
+ *t = '\0';
+ }
+ result[item].value = (int) ((r & 0xff) << 16 |
+ (g & 0xff) << 8 |
+ (b & 0xff));
+ ++item;
+ }
+
+ result[item].name = "none";
+ result[item].value = -1;
+
+ return result;
+}
+
+static RGB_NAME *
+lookup_rgb(const char *name)
+{
+ RGB_NAME *result = 0;
+ if (rgb_table != 0) {
+ int n;
+ for (n = 0; rgb_table[n].name != 0; ++n) {
+ if (!strcasecmp(name, rgb_table[n].name)) {
+ result = &rgb_table[n];
+ break;
+ }
+ }
+ }
+ return result;
+}
+
+static PICS_HEAD *
+parse_xbm(char **data)
+{
+ int n;
+ int state = 0;
+ char buf[BUFSIZ];
+ int num;
+ char ch;
+ char *s;
+ char *t;
+ PICS_HEAD *result;
+ size_t which = 0;
+ size_t cells = 0;
+
+ debugmsg("called parse_xbm");
+
+ result = typeCalloc(PICS_HEAD, 1);
+ how_much.head += sizeof(PICS_HEAD);
+
+ begin_c_values(2);
+ gather_c_values(0);
+ gather_c_values(0xffffff);
+
+ for (n = 0; data[n] != 0; ++n) {
+ if (strlen(s = data[n]) >= sizeof(buf) - 1)
+ continue;
+ switch (state) {
+ case 0:
+ case 1:
+ case 2:
+ if (sscanf(s, "#define %s %d%c", buf, &num, &ch) >= 2) {
+ if ((t = strstr(buf, "_width")) != 0) {
+ state |= 1;
+ result->wide = (short) bytes_of(num);
+ } else if ((t = strstr(buf, "_height")) != 0) {
+ state |= 2;
+ result->high = (short) num;
+ } else {
+ break;
+ }
+ *t = '\0';
+ if (result->name) {
+ if (strcmp(result->name, buf)) {
+ goto finish;
+ }
+ } else {
+ result->name = strdup(buf);
+ }
+ }
+ break;
+ case 3:
+ if (sscanf(s, "static char %[^_ ]_bits[]%c", buf, &ch) >= 1) {
+ if (strcmp(result->name, buf)) {
+ goto finish;
+ }
+ state = 4;
+ cells = (size_t) (result->wide * result->high);
+
+ result->cells = typeCalloc(PICS_CELL, cells);
+ how_much.cell += (sizeof(PICS_CELL) * cells);
+
+ if ((s = strchr(s, L_CURLY)) == 0)
+ break;
+ ++s;
+ } else {
+ break;
+ }
+ case 4:
+ while (*s != '\0') {
+ while (isspace(UChar(*s))) {
+ ++s;
+ }
+ if (isdigit(UChar(*s))) {
+ long value = strtol(s, &t, 0);
+ int b;
+ if (t != s || value > MaxRGB || value < 0) {
+ s = t;
+ } else {
+ state = -1;
+ goto finish;
+ }
+ for (b = 0; b < 8; ++b) {
+ if (((1L << b) & value) != 0) {
+ result->cells[which].ch = '*';
+ result->cells[which].fg = 1;
+ reading_ncols[1].count++;
+ } else {
+ result->cells[which].ch = ' ';
+ result->cells[which].fg = 0;
+ reading_ncols[0].count++;
+ }
+ if (++which > cells) {
+ state = -1;
+ goto finish;
+ }
+ }
+ }
+ if (*s == R_CURLY) {
+ state = 5;
+ goto finish;
+ } else if (*s == ',') {
+ ++s;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ finish:
+ if (state < 4) {
+ debugmsg("...state was only %d", state);
+ if (result) {
+ result = free_pics_head(result);
+ }
+ } else {
+ finish_c_values(result);
+ }
+ return result;
+}
+
+static PICS_HEAD *
+parse_xpm(char **data)
+{
+ int state = 0;
+ PICS_HEAD *result;
+ RGB_NAME *by_name;
+ int n;
+ int cells = 0;
+ int cpp = 1; /* chars per pixel */
+ int num[6];
+ int found;
+ int which = 0;
+ int num_colors = 0;
+ char ch;
+ const char *cs;
+ char *s;
+ char buf[BUFSIZ];
+ char arg1[BUFSIZ];
+ char arg2[BUFSIZ];
+ char arg3[BUFSIZ];
+ char **list = 0;
+
+ debugmsg("called parse_xpm");
+
+ result = typeCalloc(PICS_HEAD, 1);
+ how_much.head += sizeof(PICS_HEAD);
+
+ for (n = 0; data[n] != 0; ++n) {
+ if (strlen(s = data[n]) >= sizeof(buf) - 1)
+ continue;
+ switch (state) {
+ case 0:
+ if (match_c(s, " /* XPM */ ")) {
+ state = 1;
+ }
+ break;
+ case 1:
+ if (match_c(s, " static char * %s [] = %c ", arg1, &ch) &&
+ ch == L_CURLY) {
+ result->name = strdup(arg1);
+ state = 2;
+ }
+ break;
+ case 2:
+ if (match_c(s, " \" %d %d %d %d \" , ",
+ num + 0, num + 1, num + 2, num + 3) ||
+ match_c(s, " \" %d %d %d %d %d %d \" , ",
+ num + 0, num + 1, num + 2, num + 3, num + 4, num + 5)) {
+ result->wide = (short) num[0];
+ result->high = (short) num[1];
+ result->colors = num[2];
+
+ begin_c_values(num[2]);
+
+ cells = (result->wide * result->high);
+
+ result->cells = typeCalloc(PICS_CELL, cells);
+ how_much.cell += sizeof(PICS_CELL) * (size_t) cells;
+
+ list = typeCalloc(char *, result->colors + 1);
+ how_much.list += sizeof(char *) * (size_t) (result->colors + 1);
+
+ cpp = num[3];
+ state = 3;
+ }
+ break;
+ case 3:
+ if (!match_colors(s, cpp, arg1, arg2, arg3)) {
+ break;
+ }
+ num_colors++;
+ free(list[reading_last]);
+ list[reading_last] = strdup(arg1);
+ if ((by_name = lookup_rgb(arg3)) != 0) {
+ found = gather_c_values(by_name->value);
+ } else if (*arg3 == '#') {
+ char *rgb = arg3 + 1;
+ unsigned long value = strtoul(rgb, &s, 16);
+ switch ((int) strlen(rgb)) {
+ case 6:
+ break;
+ case 12:
+ value = (((value >> 24) & 0xff0000L)
+ | ((value >> 16) & 0xff00L)
+ | ((value >> 8) & 0xffL));
+ break;
+ default:
+ warning("unexpected rgb value %s", rgb);
+ break;
+ }
+ found = gather_c_values((int) value);
+ } else {
+ found = gather_c_values(0); /* actually an error */
+ }
+ debugmsg(" [%d:%d] %06X", num_colors, result->colors,
+ reading_ncols[(found >= 0) ? found : 0].fgcol);
+ if (num_colors >= result->colors) {
+ finish_c_values(result);
+ state = 4;
+ if (list[0] == 0)
+ list[0] = strdup("\033");
+ }
+ break;
+ case 4:
+ if (*(cs = skip_cs(s)) == '"') {
+ ++cs;
+ while (*cs != '\0' && *cs != '"') {
+ int c;
+
+ /* FIXME - factor out */
+ for (c = 0; c < result->colors; ++c) {
+ if (list[c] == 0) {
+ /* should not happen... */
+ continue;
+ }
+ if (!(strncmp) (cs, list[c], (size_t) cpp)) {
+ result->cells[which].ch = list[c][0];
+ result->cells[which].fg = c;
+ result->fgcol[c].count++;
+ break;
+ }
+ }
+
+ if (result->cells[which].ch == 0) {
+ result->cells[which].ch = '?';
+ result->cells[which].fg = 0;
+ }
+
+ if (++which >= cells) {
+ state = 5;
+ break;
+ }
+ for (c = cpp; c > 0; --c, ++cs) {
+ if (*cs == '\0')
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+
+ if (result && list) {
+ for (n = 0; n < result->colors; ++n)
+ free(list[n]);
+ free(list);
+ }
+
+ if (state < 5) {
+ debugmsg("...state was only %d", state);
+ result = free_pics_head(result);
+ }
+
+ if (result) {
+ debugmsg("...allocated %d colors", result->colors);
+ }
+
+ return result;
+}
+
+/*
+ * The obscurely-named "convert" is provided by ImageMagick
+ */
+static PICS_HEAD *
+parse_img(const char *filename)
+{
+ size_t need = strlen(filename) + 256;
+ char *cmd = malloc(need);
+ FILE *pp;
+ char buffer[BUFSIZ];
+ char dummy[BUFSIZ];
+ bool okay = TRUE;
+ PICS_HEAD *result;
+ int pic_x = 0;
+ int pic_y = 0;
+ int width = in_curses ? COLS : 80;
+
+ _nc_SPRINTF(cmd, _nc_SLIMIT(need) "identify \"%s\"", filename);
+ if (quiet)
+ _nc_STRCAT(cmd, " 2>/dev/null", need);
+
+ logmsg("...opening pipe to %s", cmd);
+
+ result = typeCalloc(PICS_HEAD, 1);
+ how_much.head += sizeof(PICS_HEAD);
+
+ if ((pp = popen(cmd, "r")) != 0) {
+ if (fgets(buffer, sizeof(buffer), pp) != 0) {
+ size_t n = strlen(filename);
+ debugmsg2("...read %s", buffer);
+ if (strlen(buffer) > n &&
+ !(strncmp) (buffer, filename, n) &&
+ isspace(UChar(buffer[n])) &&
+ sscanf(skip_word(buffer + n), " %dx%d ", &pic_x, &pic_y) == 2) {
+ /* distort image to make it show normally on terminal */
+ pic_x = (int) ((double) pic_x / aspect_ratio);
+ } else {
+ pic_x = pic_y = 0;
+ }
+ }
+ pclose(pp);
+ }
+ if (pic_x <= 0 || pic_y <= 0)
+ goto finish;
+
+ _nc_SPRINTF(cmd, _nc_SLIMIT(need)
+ "convert " "-resize %dx%d\\! " "-thumbnail %dx \"%s\" "
+ "-define txt:compliance=SVG txt:-",
+ pic_x, pic_y, width, filename);
+ if (quiet)
+ _nc_STRCAT(cmd, " 2>/dev/null", need);
+
+ logmsg("...opening pipe to %s", cmd);
+ if ((pp = popen(cmd, "r")) != 0) {
+ int count = 0;
+ int col = 0;
+ int row = 0;
+ int len = 0;
+ while (fgets(buffer, sizeof(buffer), pp) != 0) {
+ debugmsg2("[%5d] %s", count + 1, buffer);
+ if (strlen(buffer) > 160) { /* 80 columns would be enough */
+ okay = FALSE;
+ break;
+ }
+ if (count++ == 0) {
+ if (match_c(buffer,
+ "# ImageMagick pixel enumeration: %d,%d,%d,%s ",
+ &col, &row, &len, dummy)) {
+ result->name = strdup(filename);
+ result->wide = (short) col;
+ result->high = (short) row;
+
+ begin_c_values(256);
+
+ result->cells = typeCalloc(PICS_CELL, (size_t) (col * row));
+ how_much.cell += (sizeof(PICS_CELL) * (size_t) (col * row));
+ } else {
+ okay = FALSE;
+ break;
+ }
+ } else {
+ /* subsequent lines begin "col,row: (r,g,b,a) #RGB" */
+ int r, g, b, nocolor;
+ unsigned check;
+ char *t;
+ char *s = t = strchr(buffer, '#');
+
+ if (s != 0) {
+ /* after the "#RGB", there are differences - just ignore */
+ while (*s != '\0' && !isspace(UChar(*s)))
+ ++s;
+ *++s = '\0';
+ }
+ if (match_c(buffer,
+ "%d,%d: (%d,%d,%d,%d) #%x ",
+ &col, &row,
+ &r, &g, &b, &nocolor,
+ &check)) {
+ int which, c;
+
+ if ((s - t) > 8) /* 6 hex digits vs 8 */
+ check /= 256;
+ if (r > MaxRGB ||
+ g > MaxRGB ||
+ b > MaxRGB ||
+ check != (unsigned) ((r << 16) | (g << 8) | b)) {
+ okay = FALSE;
+ break;
+ }
+ c = gather_c_values((int) check);
+ which = col + (row * result->wide);
+ result->cells[which].ch = ((in_curses ||
+ check == 0xffffff)
+ ? ' '
+ : '#');
+ if (c >= 0 && c < reading_last) {
+ result->cells[which].fg = c;
+ reading_ncols[c].count++;
+ } else {
+ result->cells[which].fg = -1;
+ }
+ } else {
+ okay = FALSE;
+ break;
+ }
+ }
+ }
+ finish_c_values(result);
+ pclose(pp);
+ if (okay) {
+ /* FIXME - is this trimming needed? */
+ for (len = result->colors; len > 3; len--) {
+ if (result->fgcol[len - 1].fgcol == 0) {
+ result->colors = len - 1;
+ } else {
+ break;
+ }
+ }
+ }
+ }
+ finish:
+ free(cmd);
+
+ if (!okay) {
+ result = free_pics_head(result);
+ }
+
+ return result;
+}
+
+static PICS_HEAD *
+read_picture(const char *filename, char **data)
+{
+ PICS_HEAD *pics;
+ if ((pics = parse_xbm(data)) == 0) {
+ dispose_c_values();
+ if ((pics = parse_xpm(data)) == 0) {
+ dispose_c_values();
+ if ((pics = parse_img(filename)) == 0) {
+ dispose_c_values();
+ free_data(data);
+ warning("unexpected file-format for \"%s\"", filename);
+ } else if (pics->high == 0 || pics->wide == 0) {
+ dispose_c_values();
+ free_data(data);
+ pics = free_pics_head(pics);
+ warning("no picture found in \"%s\"", filename);
+ }
+ }
+ }
+ return pics;
+}
+
+#define fg_color(pics,n) (pics->fgcol[n].fgcol)
+
+static void
+dump_picture(PICS_HEAD * pics)
+{
+ int y, x;
+
+ printf("Name %s\n", pics->name);
+ printf("Size %dx%d\n", pics->high, pics->wide);
+ printf("Color\n");
+ for (y = 0; y < pics->colors; ++y) {
+ if (fg_color(pics, y) < 0) {
+ printf(" %3d: %d\n", y, fg_color(pics, y));
+ } else {
+ printf(" %3d: #%06x\n", y, fg_color(pics, y));
+ }
+ }
+ for (y = 0; y < pics->high; ++y) {
+ for (x = 0; x < pics->wide; ++x) {
+ putchar(pics->cells[y * pics->wide + x].ch);
+ }
+ putchar('\n');
+ }
+}
+
+#ifndef USE_DISPLAY_DRIVER
+static void
+init_display(const char *palette_path, int opt_d)
+{
+ (void) opt_d;
+ if (isatty(fileno(stdout))) {
+ in_curses = TRUE;
+ initscr();
+ cbreak();
+ noecho();
+ curs_set(0);
+ if (has_colors()) {
+ start_color();
+#if HAVE_USE_DEFAULT_COLORS
+ if (opt_d)
+ use_default_colors();
+#endif
+ init_palette(palette_path);
+ }
+ scrollok(stdscr, FALSE);
+ stop_curses();
+ }
+}
+
+static void
+show_picture(PICS_HEAD * pics)
+{
+ int y, x;
+ int n;
+
+ debugmsg("called show_picture");
+ logmsg("...using %dx%d screen", LINES, COLS);
+#if HAVE_RESET_COLOR_PAIRS
+ reset_color_pairs();
+#elif HAVE_CURSCR
+ wclear(curscr);
+ clear();
+#endif
+ if (has_colors()) {
+ logmsg("...using %d colors", pics->colors);
+ for (n = 0; n < pics->colors; ++n) {
+ int my_pair = (n + 1);
+ int my_color = map_color(fg_color(pics, n));
+#if USE_EXTENDED_COLORS
+ if (use_extended_pairs) {
+ init_extended_pair(my_pair, my_color, my_color);
+ } else
+#endif
+ {
+ my_pair &= 0x7fff;
+ my_color &= 0x7fff;
+ init_pair((short) my_pair, (short) my_color, (short) my_color);
+ }
+ }
+ attrset(COLOR_PAIR(1));
+ erase();
+ }
+ for (y = 0; y < pics->high; ++y) {
+ if (y >= LINES)
+ break;
+ move(y, 0);
+
+ for (x = 0; x < pics->wide; ++x) {
+ int my_pair;
+
+ if (x >= COLS)
+ break;
+ n = (y * pics->wide + x);
+ my_pair = pics->cells[n].fg + 1;
+#if USE_EXTENDED_COLORS
+ if (use_extended_pairs) {
+ cchar_t temp;
+ wchar_t wch[2];
+ wch[0] = (wchar_t) pics->cells[n].ch;
+ wch[1] = 0;
+ setcchar(&temp, wch, A_NORMAL, (short) my_pair, &my_pair);
+ add_wch(&temp);
+ } else
+#endif
+ {
+ attrset(COLOR_PAIR(my_pair));
+ addch((chtype) pics->cells[n].ch);
+ }
+ }
+ }
+ if (slow_time >= 0) {
+ refresh();
+ if (slow_time > 0) {
+#ifdef NCURSES_VERSION
+ napms(1000 * slow_time);
+#else
+ sleep((unsigned) slow_time);
+#endif
+ }
+ } else {
+ wmove(stdscr, 0, 0);
+ getch();
+ }
+ if (!quiet)
+ endwin();
+}
+#endif
+
+static int
+compare_fg_counts(const void *a, const void *b)
+{
+ const FG_NODE *p = (const FG_NODE *) a;
+ const FG_NODE *q = (const FG_NODE *) b;
+ return (q->count - p->count);
+}
+
+static void
+report_colors(PICS_HEAD * pics)
+{
+ int accum;
+ double level;
+ int j;
+ int shift;
+ int total;
+ char buffer[256];
+
+ if (logfp == 0)
+ return;
+
+ qsort(pics->fgcol, (size_t) pics->colors, sizeof(FG_NODE), compare_fg_counts);
+ /*
+ * For debugging, show a (short) list of the colors used.
+ */
+ if (debugging && (pics->colors < 1000)) {
+ int digits = 0;
+ int high;
+ int wide = 4;
+ for (j = pics->colors; j != 0; j /= 10) {
+ ++digits;
+ if (j < 10)
+ ++digits;
+ }
+ if (digits > 8)
+ digits = 8;
+ logmsg("These colors were used:");
+ high = (pics->colors + wide - 1) / wide;
+ for (j = 0; j < high && j < pics->colors; ++j) {
+ int k;
+ char *s = buffer;
+ *s = '\0';
+ for (k = 0; k < wide; ++k) {
+ int n = j + (k * high);
+ size_t want = (sizeof(buffer) - (size_t) (s - buffer));
+ if (want < 100)
+ break;
+ if (n >= pics->colors)
+ break;
+ if (k) {
+ *s++ = ' ';
+ if (digits < 8) {
+ _nc_SPRINTF(s, _nc_SLIMIT(want) "%*s", 8 - digits,
+ " ");
+ s += strlen(s);
+ }
+ }
+ if (pics->fgcol[n].fgcol >= 0) {
+ _nc_SPRINTF(s, _nc_SLIMIT(want) "%3d #%06X %*d", n,
+ pics->fgcol[n].fgcol,
+ digits, pics->fgcol[n].count);
+ } else {
+ _nc_SPRINTF(s, _nc_SLIMIT(want) "%3d (empty) %*d", n,
+ digits, pics->fgcol[n].count);
+ }
+ s += strlen(s);
+ if ((s - buffer) > 100)
+ break;
+ }
+ logmsg("%s", buffer);
+ }
+ }
+
+ /*
+ * Given the list of colors sorted by the number of times they are used,
+ * log a short report showing the number of colors for 90%, 99%, 99.9%,
+ * etc.
+ */
+ logmsg("Number of colors versus number of cells");
+ total = pics->high * pics->wide;
+ accum = 0;
+ level = 0.1;
+ shift = 1;
+ for (j = 0; j < pics->colors; ++j) {
+ accum += pics->fgcol[j].count;
+ if (accum >= (total * (1.0 - level))) {
+ int after = (shift > 2) ? shift - 2 : 0;
+ logmsg("%8d colors (%.1f%%) in %d cells (%.*f%%)",
+ j + 1,
+ (100.0 * (j + 1)) / pics->colors,
+ accum,
+ after, (100.0 * accum) / total);
+ if (accum >= total)
+ break;
+ level /= 10.0;
+ shift++;
+ }
+ }
+}
+
+int
+main(int argc, char *argv[])
+{
+ int n;
+ int opt_d = FALSE;
+ char ignore_ch;
+ const char *palette_path = 0;
+ const char *rgb_path = RGB_PATH;
+
+ while ((n = getopt(argc, argv, "a:dLl:p:qr:s:x:")) != -1) {
+ switch (n) {
+ case 'a':
+ if (sscanf(optarg, "%lf%c", &aspect_ratio, &ignore_ch) != 1
+ || aspect_ratio < 0.1
+ || aspect_ratio > 10.) {
+ fprintf(stderr, "Expected a number in [0.1 to 10.]: %s\n", optarg);
+ usage();
+ }
+ break;
+#if HAVE_USE_DEFAULT_COLORS
+ case 'd':
+ opt_d = TRUE;
+ break;
+#endif
+ case 'L':
+ debugging = TRUE;
+ break;
+ case 'l':
+ if ((logfp = fopen(optarg, "a")) == 0)
+ failed(optarg);
+ break;
+ case 'p':
+ palette_path = optarg;
+ break;
+ case 'q':
+ quiet = TRUE;
+ break;
+ case 'r':
+ rgb_path = optarg;
+ break;
+ case 's':
+ slow_time = atoi(optarg);
+ break;
+#if USE_EXTENDED_COLORS
+ case 'x':
+ {
+ char *s = optarg;
+ while (*s) {
+ switch (*s++) {
+ case 'p':
+ use_extended_pairs = TRUE;
+ break;
+ case 'c':
+ use_extended_colors = TRUE;
+ break;
+ default:
+ usage();
+ break;
+ }
+ }
+ }
+ break;
+#endif
+ default:
+ usage();
+ break;
+ }
+ }
+
+ if (optind < argc) {
+ char **rgb_data = read_file(rgb_path);
+
+ if (rgb_data)
+ rgb_table = parse_rgb(rgb_data);
+
+ init_display(palette_path, opt_d);
+ if (optind >= argc)
+ giveup("expected at least one image filename");
+
+ for (n = optind; n < argc; ++n) {
+ PICS_HEAD *pics;
+ char **data = read_file(argv[n]);
+
+ if (data == 0) {
+ warning("cannot read \"%s\"", argv[n]);
+ continue;
+ }
+ if ((pics = read_picture(argv[n], data)) != 0) {
+ if (in_curses) {
+ show_picture(pics);
+ } else {
+ dump_picture(pics);
+ }
+ report_colors(pics);
+ dispose_c_values();
+ free_data(data);
+ free_pics_head(pics);
+ }
+ }
+ free_data(rgb_data);
+ free(rgb_table);
+ free(all_colors);
+ } else {
+ usage();
+ }
+
+ cleanup(EXIT_SUCCESS);
+}
diff --git a/test/picsmap.h b/test/picsmap.h
new file mode 100644
index 000000000000..511ae7aa9991
--- /dev/null
+++ b/test/picsmap.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+ * Copyright (c) 2017 Free 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 *
+ ****************************************************************************/
+/* $Id: picsmap.h,v 1.3 2017/11/18 22:37:00 tom Exp $ */
+
+#ifndef PICSMAP_H_INCL
+#define PICSMAP_H_INCL 1
+
+typedef int NUM_COLOR;
+typedef unsigned short NUM_COUNT;
+
+typedef struct {
+ char ch; /* nominal character to display */
+ NUM_COLOR fg; /* foreground color */
+} PICS_CELL;
+
+typedef struct {
+ NUM_COLOR fgcol;
+ NUM_COUNT count;
+} FG_NODE;
+
+typedef struct {
+ char *name;
+ short high;
+ short wide;
+ int colors;
+ FG_NODE *fgcol;
+ PICS_CELL *cells;
+} PICS_HEAD;
+
+typedef struct {
+ const char *name;
+ int value;
+} RGB_NAME;
+
+typedef struct {
+ short red;
+ short green;
+ short blue;
+} RGB_DATA;
+
+static void init_display(const char *, int);
+
+static void show_picture(PICS_HEAD * pics);
+
+#endif /* PICSMAP_H_INCL */
diff --git a/test/popup_msg.c b/test/popup_msg.c
new file mode 100644
index 000000000000..4acfe851d4b5
--- /dev/null
+++ b/test/popup_msg.c
@@ -0,0 +1,183 @@
+/****************************************************************************
+ * Copyright (c) 2017,2018 Free 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: popup_msg.c,v 1.9 2018/05/12 15:08:45 tom Exp $
+ *
+ * Show a multi-line message in a window which may extend beyond the screen.
+ *
+ * Thomas Dickey - 2017/4/15.
+ */
+
+#include <test.priv.h>
+
+#include <popup_msg.h>
+
+#if HAVE_NEWPAD
+
+static WINDOW *old_window;
+
+static void
+begin_popup(void)
+{
+ doupdate();
+ old_window = dupwin(curscr);
+}
+
+static void
+end_popup(void)
+{
+ touchwin(old_window);
+ wnoutrefresh(old_window);
+ doupdate();
+ delwin(old_window);
+}
+
+/*
+ * Display a temporary window, e.g., to display a help-message.
+ */
+void
+popup_msg(WINDOW *parent, const char *const *msg)
+{
+ int x0 = 4;
+ int y0 = 2;
+ int y1 = 0;
+ int y2 = 0;
+ int wide = getmaxx(parent) - ((x0 + 1) * 2);
+ int high = getmaxy(parent) - ((y0 + 1) * 2);
+ WINDOW *help;
+ WINDOW *data;
+ int n;
+ int width = 0;
+ int length;
+ int last_y;
+ int ch = ERR;
+
+ for (n = 0; msg[n] != 0; ++n) {
+ int check = (int) strlen(msg[n]);
+ if (width < check)
+ width = check;
+ }
+ length = n;
+
+ if ((help = newwin(high, wide, y0, x0)) == 0)
+ return;
+ if ((data = newpad(length + 1, width)) == 0) {
+ delwin(help);
+ return;
+ }
+
+ begin_popup();
+
+ keypad(data, TRUE);
+
+ for (n = 0; n < length; ++n) {
+ waddstr(data, msg[n]);
+ if ((n + 1) < length) {
+ waddch(data, '\n');
+ }
+ }
+ y2 = getcury(data);
+ last_y = (y2 - (high - 3));
+
+ do {
+ switch (ch) {
+ case KEY_HOME:
+ y1 = 0;
+ break;
+ case KEY_END:
+ y1 = last_y;
+ break;
+ case KEY_PREVIOUS:
+ case KEY_PPAGE:
+ if (y1 > 0) {
+ y1 -= high / 2;
+ if (y1 < 0)
+ y1 = 0;
+ } else {
+ beep();
+ }
+ break;
+ case KEY_NEXT:
+ case KEY_NPAGE:
+ if (y1 < last_y) {
+ y1 += high / 2;
+ if (y1 > last_y)
+ y1 = last_y;
+ } else {
+ beep();
+ }
+ break;
+ case CTRL('P'):
+ case KEY_UP:
+ if (y1 > 0)
+ --y1;
+ else
+ beep();
+ break;
+ case CTRL('N'):
+ case KEY_DOWN:
+ if (y1 < last_y)
+ ++y1;
+ else
+ beep();
+ break;
+ default:
+ beep();
+ break;
+ case ERR:
+ break;
+ }
+ werase(help);
+ box(help, 0, 0);
+ wnoutrefresh(help);
+ pnoutrefresh(data, y1, 0, y0 + 1, x0 + 1, high, wide);
+ doupdate();
+ } while ((ch = wgetch(data)) != ERR && ch != QUIT && ch != ESCAPE);
+ werase(help);
+ wrefresh(help);
+ delwin(help);
+ delwin(data);
+
+ end_popup();
+}
+
+void
+popup_msg2(WINDOW *parent, char **msg)
+{
+ popup_msg(parent, (const char *const *) msg);
+}
+
+#else
+void
+popup_msg(WINDOW *parent, const char *const *msg)
+{
+ (void) parent;
+ (void) msg;
+ beep();
+}
+#endif
diff --git a/test/popup_msg.h b/test/popup_msg.h
new file mode 100644
index 000000000000..b728f21bde3f
--- /dev/null
+++ b/test/popup_msg.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ * Copyright (c) 2003-2017,2018 Free 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: popup_msg.h,v 1.4 2018/02/03 21:07:55 tom Exp $
+ *
+ * Utility functions for a popup-message or help-screen.
+ */
+
+#ifndef POPUP_MSG_H_incl
+#define POPUP_MSG_H_incl 1
+
+#include <test.priv.h>
+
+extern void popup_msg(WINDOW *parent, const char *const *msg);
+extern void popup_msg2(WINDOW *parent, char **msg);
+
+#endif /* POPUP_MSG_H_incl */
diff --git a/test/programs b/test/programs
index f307cc72f6d7..e1266b862ab4 100644
--- a/test/programs
+++ b/test/programs
@@ -1,6 +1,6 @@
-# $Id: programs,v 1.24 2013/12/07 18:06:24 tom Exp $
+# $Id: programs,v 1.44 2019/02/16 21:38:16 tom Exp $
##############################################################################
-# Copyright (c) 2006-2009,2013 Free Software Foundation, Inc. #
+# Copyright (c) 2006-2018,2019 Free 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"), #
@@ -30,67 +30,81 @@
# Author: Thomas E. Dickey
#
# programs used for ncurses tests
-background $(LDFLAGS_CURSES) $(LOCAL_LIBS) background
+background $(LDFLAGS_CURSES) $(LOCAL_LIBS) background dump_window
blue $(LDFLAGS_CURSES) $(LOCAL_LIBS) blue
bs $(LDFLAGS_CURSES) $(LOCAL_LIBS) bs
cardfile $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) cardfile
-chgat $(LDFLAGS_CURSES) $(LOCAL_LIBS) chgat
-clip_printw $(LDFLAGS_CURSES) $(LOCAL_LIBS) clip_printw
+chgat $(LDFLAGS_CURSES) $(LOCAL_LIBS) chgat popup_msg
+clip_printw $(LDFLAGS_CURSES) $(LOCAL_LIBS) clip_printw popup_msg
+color_content $(LDFLAGS_CURSES) $(LOCAL_LIBS) color_content
color_set $(LDFLAGS_CURSES) $(LOCAL_LIBS) color_set
demo_altkeys $(LDFLAGS_CURSES) $(LOCAL_LIBS) demo_altkeys
demo_defkey $(LDFLAGS_CURSES) $(LOCAL_LIBS) demo_defkey
-demo_forms $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_forms edit_field
+demo_forms $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_forms edit_field popup_msg
demo_keyok $(LDFLAGS_CURSES) $(LOCAL_LIBS) demo_keyok
demo_menus $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_menus
+demo_new_pair $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_new_pair popup_msg
demo_panels $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_panels
+demo_tabs $(LDFLAGS_CURSES) $(LOCAL_LIBS) demo_tabs
demo_termcap $(LDFLAGS_TINFO) $(LOCAL_LIBS) demo_termcap
demo_terminfo $(LDFLAGS_TINFO) $(LOCAL_LIBS) demo_terminfo
ditto $(LDFLAGS_THREADS) $(LOCAL_LIBS) ditto
dots $(LDFLAGS_TINFO) $(LOCAL_LIBS) dots
+dots_curses $(LDFLAGS_CURSES) $(LOCAL_LIBS) dots_curses
dots_mvcur $(LDFLAGS_CURSES) $(LOCAL_LIBS) dots_mvcur
dots_termcap $(LDFLAGS_TINFO) $(LOCAL_LIBS) dots_termcap
+dots_xcurses $(LDFLAGS_CURSES) $(LOCAL_LIBS) dots_xcurses
echochar $(LDFLAGS_CURSES) $(LOCAL_LIBS) echochar
+extended_color $(LDFLAGS_CURSES) $(LOCAL_LIBS) extended_color
filter $(LDFLAGS_CURSES) $(LOCAL_LIBS) filter
firework $(LDFLAGS_CURSES) $(LOCAL_LIBS) firework
firstlast $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) firstlast
foldkeys $(LDFLAGS_CURSES) $(LOCAL_LIBS) foldkeys
-form_driver_w $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) form_driver_w
+form_driver_w $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) form_driver_w popup_msg
gdc $(LDFLAGS_CURSES) $(LOCAL_LIBS) gdc
hanoi $(LDFLAGS_CURSES) $(LOCAL_LIBS) hanoi
hashtest $(LDFLAGS_CURSES) $(LOCAL_LIBS) hashtest
-inch_wide $(LDFLAGS_CURSES) $(LOCAL_LIBS) inch_wide
-inchs $(LDFLAGS_CURSES) $(LOCAL_LIBS) inchs
+inch_wide $(LDFLAGS_CURSES) $(LOCAL_LIBS) inch_wide popup_msg
+inchs $(LDFLAGS_CURSES) $(LOCAL_LIBS) inchs popup_msg
ins_wide $(LDFLAGS_CURSES) $(LOCAL_LIBS) ins_wide
-insdelln $(LDFLAGS_CURSES) $(LOCAL_LIBS) insdelln
+insdelln $(LDFLAGS_CURSES) $(LOCAL_LIBS) insdelln popup_msg
inserts $(LDFLAGS_CURSES) $(LOCAL_LIBS) inserts
key_names $(LDFLAGS_CURSES) $(LOCAL_LIBS) key_names
keynames $(LDFLAGS_CURSES) $(LOCAL_LIBS) keynames
knight $(LDFLAGS_CURSES) $(LOCAL_LIBS) knight
+list_keys $(LDFLAGS_TINFO) $(LOCAL_LIBS) list_keys
lrtest $(LDFLAGS_CURSES) $(LOCAL_LIBS) lrtest
-movewindow $(LDFLAGS_CURSES) $(LOCAL_LIBS) movewindow
+movewindow $(LDFLAGS_CURSES) $(LOCAL_LIBS) movewindow popup_msg
ncurses $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) ncurses
newdemo $(LDFLAGS_CURSES) $(LOCAL_LIBS) newdemo
+padview $(LDFLAGS_CURSES) $(LOCAL_LIBS) padview popup_msg
+pair_content $(LDFLAGS_CURSES) $(LOCAL_LIBS) pair_content
+picsmap $(LDFLAGS_CURSES) $(LOCAL_LIBS) picsmap
railroad $(LDFLAGS_TINFO) $(LOCAL_LIBS) railroad
-rain $(LDFLAGS_THREADS) $(LOCAL_LIBS) rain
-redraw $(LDFLAGS_CURSES) $(LOCAL_LIBS) redraw
-savescreen $(LDFLAGS_CURSES) $(LOCAL_LIBS) savescreen
+rain $(LDFLAGS_THREADS) $(LOCAL_LIBS) rain popup_msg
+redraw $(LDFLAGS_CURSES) $(LOCAL_LIBS) redraw popup_msg
+savescreen $(LDFLAGS_CURSES) $(LOCAL_LIBS) savescreen popup_msg
+sp_tinfo $(LDFLAGS_TINFO) $(LOCAL_LIBS) sp_tinfo
tclock $(LDFLAGS_CURSES) $(LOCAL_LIBS) tclock
test_add_wchstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_add_wchstr
test_addchstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_addchstr
test_addstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_addstr
test_addwstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_addwstr
test_arrays $(LDFLAGS_TINFO) $(LOCAL_LIBS) test_arrays
-test_get_wstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_get_wstr
-test_getstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_getstr
+test_get_wstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_get_wstr popup_msg
+test_getstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_getstr popup_msg
test_instr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_instr
test_inwstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_inwstr
test_opaque $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_opaque
+test_setupterm $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_setupterm
+test_sgr $(LDFLAGS_TINFO) $(LOCAL_LIBS) test_sgr
+test_termattrs $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_termattrs
test_vid_puts $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_vid_puts
test_vidputs $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_vidputs
testaddch $(LDFLAGS_CURSES) $(LOCAL_LIBS) testaddch
testcurs $(LDFLAGS_CURSES) $(LOCAL_LIBS) testcurs
testscanw $(LDFLAGS_CURSES) $(LOCAL_LIBS) testscanw
-view $(LDFLAGS_CURSES) $(LOCAL_LIBS) view
+view $(LDFLAGS_CURSES) $(LOCAL_LIBS) view popup_msg
worm $(LDFLAGS_THREADS) $(LOCAL_LIBS) worm
xmas $(LDFLAGS_CURSES) $(LOCAL_LIBS) xmas
diff --git a/test/railroad.c b/test/railroad.c
index 33dc46f1dd1c..246dc0d4afa9 100644
--- a/test/railroad.c
+++ b/test/railroad.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2000-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2000-2017,2019 Free 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 - 2000
*
- * $Id: railroad.c,v 1.21 2013/09/28 22:02:17 tom Exp $
+ * $Id: railroad.c,v 1.23 2019/08/24 23:11:01 tom Exp $
*
* A simple demo of the termcap interface.
*/
@@ -113,7 +113,7 @@ static void
ShowSign(char *string)
{
char *base = string;
- int ch, first, last;
+ int first, last;
if (moveit != 0) {
tputs(tgoto(moveit, 0, height - 1), 1, outc);
@@ -121,7 +121,7 @@ ShowSign(char *string)
}
while (*string != 0) {
- ch = *string;
+ int ch = *string;
if (ch != ' ') {
if (moveit != 0) {
for (first = length - 2; first >= (string - base); first--) {
@@ -187,10 +187,13 @@ railroad(char **args)
NCURSES_CONST char *name = getenv("TERM");
char buffer[1024];
char area[1024], *ap = area;
+ int z;
if (name == 0)
name = "dumb";
- if (tgetent(buffer, name) >= 0) {
+
+ InitAndCatch(z = tgetent(buffer, name), onsig);
+ if (z >= 0) {
wipeit = tgetstr("ce", &ap);
height = tgetnum("li");
@@ -220,8 +223,6 @@ railroad(char **args)
MyShowCursor(0);
- CATCHALL(onsig);
-
while (*args) {
ShowSign(*args++);
}
diff --git a/test/rain.c b/test/rain.c
index 471a88d61cdb..407eb09cb055 100644
--- a/test/rain.c
+++ b/test/rain.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,9 +26,10 @@
* authorization. *
****************************************************************************/
/*
- * $Id: rain.c,v 1.40 2012/01/21 23:54:47 tom Exp $
+ * $Id: rain.c,v 1.50 2019/12/14 23:26:09 tom Exp $
*/
#include <test.priv.h>
+#include <popup_msg.h>
/* rain 11/3/1980 EPS/CITHEP */
@@ -66,11 +67,18 @@ typedef struct {
static STATS drop_threads[MAX_THREADS];
#endif
+#if HAVE_USE_WINDOW
+static int
+safe_wgetch(WINDOW *w, void *data GCC_UNUSED)
+{
+ return wgetch(w);
+}
+#endif
+
static void
onsig(int n GCC_UNUSED)
{
- curs_set(1);
- endwin();
+ stop_curses();
ExitProgram(EXIT_FAILURE);
}
@@ -102,10 +110,7 @@ next_j(int j)
--j;
if (has_colors()) {
int z = (int) (3 * ranf());
- chtype color = (chtype) COLOR_PAIR(z);
- if (z)
- color |= A_BOLD;
- (void) attrset(color);
+ (void) attrset(AttrArg(COLOR_PAIR(z), (z ? A_BOLD : A_NORMAL)));
}
return j;
}
@@ -222,7 +227,7 @@ draw_drop(void *arg)
* Find myself in the list of threads so we can count the number of loops.
*/
for (mystats = 0; mystats < MAX_THREADS; ++mystats) {
-#if defined(__MINGW32__) && !defined(__WINPTHREADS_VERSION)
+#if defined(_WIN32) && !defined(__WINPTHREADS_VERSION)
if (drop_threads[mystats].myself.p == pthread_self().p)
#else
if (drop_threads[mystats].myself == pthread_self())
@@ -288,30 +293,76 @@ start_drop(DATA * data)
static int
get_input(void)
{
- return USING_WINDOW(stdscr, wgetch);
+ return USING_WINDOW1(stdscr, wgetch, safe_wgetch);
+}
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: rain [options]"
+ ,""
+ ,"Options:"
+#if HAVE_USE_DEFAULT_COLORS
+ ," -d invoke use_default_colors"
+#endif
+ };
+ size_t n;
+
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+
+ ExitProgram(EXIT_FAILURE);
}
int
-main(int argc GCC_UNUSED,
- char *argv[]GCC_UNUSED)
+main(int argc, char *argv[])
{
+ static const char *help[] =
+ {
+ "Commands:",
+ " q/Q exit the program",
+ " s do single-step",
+ " <space> undo single-step",
+ "",
+ 0
+ };
+
bool done = FALSE;
DATA drop;
#ifndef USE_PTHREADS
DATA last[MAX_DROP];
#endif
int j = 0;
+ int ch;
+#if HAVE_USE_DEFAULT_COLORS
+ bool d_option = FALSE;
+#endif
- setlocale(LC_ALL, "");
+ while ((ch = getopt(argc, argv, "d")) != -1) {
+ switch (ch) {
+#if HAVE_USE_DEFAULT_COLORS
+ case 'd':
+ d_option = TRUE;
+ break;
+#endif
+ default:
+ usage();
+ /* NOTREACHED */
+ }
+ }
+ if (optind < argc)
+ usage();
- CATCHALL(onsig);
+ setlocale(LC_ALL, "");
- initscr();
+ InitAndCatch(initscr(), onsig);
if (has_colors()) {
int bg = COLOR_BLACK;
start_color();
#if HAVE_USE_DEFAULT_COLORS
- if (use_default_colors() == OK)
+ if (d_option && (use_default_colors() == OK))
bg = -1;
#endif
init_pair(1, COLOR_BLUE, (short) bg);
@@ -376,11 +427,17 @@ main(int argc GCC_UNUSED,
case (KEY_RESIZE):
break;
#endif
+ case HELP_KEY_1:
+ popup_msg(stdscr, help);
+ break;
+ case ERR:
+ break;
+ default:
+ beep();
}
napms(50);
}
- curs_set(1);
- endwin();
+ stop_curses();
#ifdef USE_PTHREADS
printf("Counts per thread:\n");
for (j = 0; j < MAX_THREADS; ++j)
diff --git a/test/redraw.c b/test/redraw.c
index 9cb0de95a809..7d06cad8aca3 100644
--- a/test/redraw.c
+++ b/test/redraw.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2006-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2006-2012,2017 Free 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,13 +26,14 @@
* authorization. *
****************************************************************************/
/*
- * $Id: redraw.c,v 1.8 2012/12/08 20:46:02 tom Exp $
+ * $Id: redraw.c,v 1.10 2017/06/24 14:04:57 tom Exp $
*
* Demonstrate the redrawwin() and wredrawln() functions.
* Thomas Dickey - 2006/11/4
*/
#include <test.priv.h>
+#include <popup_msg.h>
static void
trash(int beg_x, int max_x, int cur_x)
@@ -53,11 +54,30 @@ trash(int beg_x, int max_x, int cur_x)
for (x = max_x; x > cur_x; --x) {
putchar('\b');
}
+ fflush(stdout);
}
static void
test_redraw(WINDOW *win)
{
+ static const char *help[] =
+ {
+ "Commands:",
+ " ^Q/ESC/q - quit",
+ " w - recur in a new window",
+ " ! - overwrite current line using stdio outside curses.",
+#ifdef NCURSES_VERSION
+ " @ - run \"date\" command, to put its output on screen.",
+#endif
+ " ^L - call redrawwin() for current window.",
+ " ^W - call wredrawln() for current line/current window.",
+ " arrow-keys - move cursor on the screen",
+ "",
+ "Other control characters are added to the screen in printable form.",
+ "Other printable characters are added to the screen as is.",
+ 0
+ };
+
WINDOW *win1;
WINDOW *win2;
bool done = FALSE;
@@ -77,6 +97,7 @@ test_redraw(WINDOW *win)
switch (ch) {
case 'q':
/* FALLTHRU */
+ case QUIT:
case ESCAPE:
done = TRUE;
break;
@@ -146,9 +167,14 @@ test_redraw(WINDOW *win)
wmove(win, y, x + 1);
break;
+ case HELP_KEY_1:
+ popup_msg(win, help);
+ break;
+
default:
if (ch > KEY_MIN) {
waddstr(win, keyname(ch));
+ waddch(win, '\n');
} else {
waddstr(win, unctrl(UChar(ch)));
}
@@ -159,10 +185,52 @@ test_redraw(WINDOW *win)
}
}
+static void
+usage(void)
+{
+ static const char *tbl[] =
+ {
+ "Usage: redraw [options]"
+ ,""
+ ,"Options:"
+ ," -e use stderr (default stdout)"
+ ," -n do not initialize terminal"
+ };
+ unsigned n;
+ for (n = 0; n < SIZEOF(tbl); ++n)
+ fprintf(stderr, "%s\n", tbl[n]);
+ ExitProgram(EXIT_FAILURE);
+}
+
int
main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
{
- initscr();
+ int ch;
+ bool no_init = FALSE;
+ FILE *my_fp = stdout;
+
+ while ((ch = getopt(argc, argv, "en")) != -1) {
+ switch (ch) {
+ case 'e':
+ my_fp = stderr;
+ break;
+ case 'n':
+ no_init = TRUE;
+ break;
+ default:
+ usage();
+ break;
+ }
+ }
+ if (optind < argc)
+ usage();
+
+ if (no_init) {
+ START_TRACE();
+ } else {
+ newterm((char *) 0, my_fp, stdin);
+ }
+
raw();
noecho();
test_redraw(stdscr);
diff --git a/test/savescreen.c b/test/savescreen.c
index 111882d0b558..8aa82eff3f73 100644
--- a/test/savescreen.c
+++ b/test/savescreen.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2007-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2018,2019 Free 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,31 +26,47 @@
* authorization. *
****************************************************************************/
/*
- * $Id: savescreen.c,v 1.15 2011/01/15 18:15:11 tom Exp $
+ * $Id: savescreen.c,v 1.56 2019/12/14 23:25:29 tom Exp $
*
* Demonstrate save/restore functions from the curses library.
* Thomas Dickey - 2007/7/14
*/
+#define NEED_TIME_H
#include <test.priv.h>
+#include <popup_msg.h>
+#include <parse_rgb.h>
#if HAVE_SCR_DUMP
#include <sys/types.h>
#include <sys/stat.h>
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
+#if defined(__hpux)
+#define MyMarker 'X'
#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
+#define MyMarker ACS_DIAMOND
#endif
+#define MAX_ANSI 8
+
static bool use_init = FALSE;
+static bool keep_dumps = FALSE;
+
+#if USE_WIDEC_SUPPORT
+/* In HPUX curses, cchar_t is opaque; other implementations are not */
+static wchar_t
+BaseChar(cchar_t data)
+{
+ wchar_t my_wchar[CCHARW_MAX];
+ wchar_t result = 0;
+ attr_t my_attr;
+ short my_pair;
+ if (getcchar(&data, my_wchar, &my_attr, &my_pair, NULL) == OK)
+ result = my_wchar[0];
+ return result;
+}
+#endif
static int
fexists(const char *name)
@@ -71,8 +87,10 @@ cleanup(char *files[])
{
int n;
- for (n = 0; files[n] != 0; ++n) {
- unlink(files[n]);
+ if (!keep_dumps) {
+ for (n = 0; files[n] != 0; ++n) {
+ unlink(files[n]);
+ }
}
}
@@ -103,15 +121,27 @@ after_load(void)
}
static void
-show_what(int which, int last)
+show_what(int color, int which, int last)
{
- int y, x;
- time_t now = time((time_t *) 0);
+ int y, x, n;
+ time_t now;
+ char *mytime;
getyx(stdscr, y, x);
move(0, 0);
- printw("Saved %d of %d - %s", which, last + 1, ctime(&now));
+ printw("Color %d. Saved %d of %d (? for help)", color, which, last + 1);
+
+ now = time((time_t *) 0);
+ mytime = ctime(&now);
+ for (n = (int) strlen(mytime) - 1; n >= 0; --n) {
+ if (isspace(UChar(mytime[n]))) {
+ mytime[n] = '\0';
+ } else {
+ break;
+ }
+ }
+ mvprintw(0, (COLS - n - 2), " %s", mytime);
move(y, x);
@@ -119,20 +149,109 @@ show_what(int which, int last)
}
static int
-get_command(int which, int last)
+get_command(int color, int which, int last)
{
int ch;
- timeout(100);
+ timeout(50);
do {
- show_what(which, last);
+ show_what(color, which, last);
ch = getch();
} while (ch == ERR);
return ch;
}
+static int
+dump_screen(char **files, int color, int which, int last, bool use_colors)
+{
+#if USE_WIDEC_SUPPORT
+ cchar_t mycc;
+ int myxx;
+#endif
+ char *filename = files[which];
+ bool dumped = FALSE;
+
+ if (filename != 0) {
+ dumped = TRUE;
+ show_what(color, ++which, last);
+ if (scr_dump(filename) == ERR) {
+ endwin();
+ printf("Cannot write screen-dump %s\n", filename);
+ cleanup(files);
+ ExitProgram(EXIT_SUCCESS);
+ }
+ if (use_colors) {
+ int cx, cy;
+ int pair = 1 + (which % MAX_ANSI);
+ /*
+ * Change the background color, to make it more obvious. But that
+ * changes the existing text-color. Copy the old values from the
+ * currently displayed screen.
+ */
+ bkgd((chtype) COLOR_PAIR(pair));
+ for (cy = 1; cy < LINES; ++cy) {
+ for (cx = 0; cx < COLS; ++cx) {
+ wmove(curscr, cy, cx);
+ wmove(stdscr, cy, cx);
+#if USE_WIDEC_SUPPORT
+ if (win_wch(curscr, &mycc) != ERR) {
+ myxx = wcwidth(BaseChar(mycc));
+ if (myxx > 0) {
+ wadd_wchnstr(stdscr, &mycc, 1);
+ cx += (myxx - 1);
+ }
+ }
+#else
+ waddch(stdscr, winch(curscr));
+#endif
+ }
+ }
+ }
+ }
+ return dumped;
+}
+
+static void
+editor_help(void)
+{
+ static const char *msgs[] =
+ {
+ "You are now in the screen-editor, which allows you to make some",
+ "lines on the screen, as well as save copies of the screen to a",
+ "temporary file",
+ "",
+ "Keys:",
+ " q quit",
+ " n run the screen-loader to show the saved screens",
+ " <space> dump a screen",
+ "",
+ " a toggle between '#' and graphic symbol for drawing",
+ " c change color drawn by line to next in palette",
+ " h,j,k,l or arrows to move around the screen, drawing",
+ 0
+ };
+ popup_msg(stdscr, msgs);
+}
+
+static void
+replay_help(void)
+{
+ static const char *msgs[] =
+ {
+ "You are now in the screen-loader, which allows you to view",
+ "the dumped/restored screens.",
+ "",
+ "Keys:",
+ " q quit",
+ " <space> load the next screen",
+ " <backspace> load the previous screen",
+ 0
+ };
+ popup_msg(stdscr, msgs);
+}
+
static void
usage(void)
{
@@ -141,8 +260,10 @@ usage(void)
"Usage: savescreen [-r] files",
"",
"Options:",
- " -i use scr_init/scr_restore rather than scr_set",
- " -r replay the screen-dump files"
+ " -f file fill/initialize screen using text from this file",
+ " -i use scr_init/scr_restore rather than scr_set",
+ " -k keep the restored dump-files rather than removing them",
+ " -r replay the screen-dump files"
};
unsigned n;
for (n = 0; n < SIZEOF(msg); ++n) {
@@ -157,15 +278,35 @@ main(int argc, char *argv[])
int ch;
int which = 0;
int last;
+ bool use_colors = FALSE;
bool replaying = FALSE;
bool done = FALSE;
char **files;
+ char *fill_by = 0;
+#if USE_WIDEC_SUPPORT
+ int r, g, b;
+ int cube = 0;
+ int cube0 = 16;
+ int cube1;
+ cchar_t mycc;
+ static const wchar_t mywc[2] =
+ {L'#', 0};
+ bool using_rgb = FALSE;
+#endif
+
+ setlocale(LC_ALL, "");
- while ((ch = getopt(argc, argv, "ir")) != -1) {
+ while ((ch = getopt(argc, argv, "f:ikr")) != -1) {
switch (ch) {
+ case 'f':
+ fill_by = optarg;
+ break;
case 'i':
use_init = TRUE;
break;
+ case 'k':
+ keep_dumps = TRUE;
+ break;
case 'r':
replaying = TRUE;
break;
@@ -188,11 +329,175 @@ main(int argc, char *argv[])
noecho();
keypad(stdscr, TRUE);
curs_set(0);
- if (has_colors()) {
- start_color();
- for (ch = 0; ch < COLOR_PAIRS; ++ch) {
- short pair = (short) (ch % COLOR_PAIRS);
- init_pair(pair, COLOR_WHITE, (short) (ch % COLORS));
+
+ if (has_colors() && (start_color() == OK) && COLORS >= MAX_ANSI) {
+ static const struct {
+ int fg, bg;
+ } table[MAX_ANSI] = {
+#define DATA(fg,bg) { COLOR_##fg, COLOR_##bg }
+ DATA(RED, WHITE),
+ DATA(GREEN, WHITE),
+ DATA(YELLOW, BLACK),
+ DATA(BLUE, WHITE),
+ DATA(MAGENTA, WHITE),
+ DATA(MAGENTA, BLACK),
+ DATA(CYAN, WHITE),
+ DATA(CYAN, BLACK),
+#undef DATA
+ };
+ int n;
+ int pair = 1;
+
+ use_colors = TRUE;
+ /*
+ * Discounting color-pair 0 (no color), make the next 8 color pairs
+ * useful for leaving a visually distinct trail of characters on the
+ * screen.
+ */
+ for (n = 0; n < MAX_ANSI; ++n) {
+ init_pair((short) pair++, (short) table[n].fg, (short) table[n].bg);
+ }
+ /*
+ * After that, use color pairs for constructing a test-pattern, e.g.,
+ * imitating xterm's scripts.
+ */
+ if (fill_by == 0) {
+ if (COLORS <= 256) {
+ for (n = 0; n < COLORS; ++n)
+ init_pair((short) (n + MAX_ANSI), (short) n, (short) n);
+ }
+#if HAVE_TIGETSTR && USE_WIDEC_SUPPORT
+ else {
+ int r_max, g_max, b_max;
+
+ if (parse_rgb(&r_max, &g_max, &b_max) > 0) {
+ int rows = LINES - 1;
+ int cols = COLS - 1;
+ int b_delta = (b_max / rows);
+ int r_delta = (r_max / cols);
+ int g_delta = (g_max / cols);
+ int row = 0;
+
+ b = 0;
+ using_rgb = TRUE;
+ while (row++ < rows) {
+ int col = 0;
+ r = 0;
+ g = g_max;
+ while (col++ < cols) {
+ int color = (((r * (g_max + 1)) + g) * (b_max + 1)
+ + b + MAX_ANSI);
+#if USE_EXTENDED_COLOR
+ init_extended_pair(pair, color, color);
+#else
+ init_pair(pair, color, color);
+#endif
+ pair++;
+ r += r_delta;
+ g -= g_delta;
+ }
+ b += b_delta;
+ }
+ }
+ }
+#endif
+ }
+ if ((fill_by == 0) && !replaying) {
+ /*
+ * Originally (before wide-characters) ncurses supported 16 colors.
+ */
+ if (COLORS >= 16 && COLORS <= 256) {
+ mvprintw(2, 0, "System colors:\n");
+ for (n = 0; n < 16; ++n) {
+ pair = n + MAX_ANSI;
+ addch((chtype) (' ' | COLOR_PAIR(pair)));
+ addch((chtype) (' ' | COLOR_PAIR(pair)));
+ if (((n + 1) % 8) == 0)
+ addch('\n');
+ }
+ }
+ /*
+ * Even with ncurses, you need wide-character support to have more
+ * than 16 colors.
+ */
+#if USE_WIDEC_SUPPORT
+ if (COLORS == 88) {
+ cube = 4;
+ } else if (COLORS == 256) {
+ cube = 6;
+ }
+ if (cube != 0) {
+ cube0 = 16;
+ cube1 = cube0 + (cube * cube * cube);
+
+ addch('\n');
+ printw("Color cube, %dx%dx%d:\n", cube, cube, cube);
+ for (g = 0; g < cube; g++) {
+ for (r = 0; r < cube; r++) {
+ for (b = 0; b < cube; b++) {
+ pair = MAX_ANSI
+ + 16
+ + (r * cube * cube) + (g * cube) + b;
+ setcchar(&mycc, mywc, 0, (short) pair, NULL);
+ add_wch(&mycc);
+ add_wch(&mycc);
+ }
+ addch(' ');
+ }
+ addch('\n');
+ }
+ addch('\n');
+ printw("Grayscale ramp:\n");
+ for (n = cube1; n < COLORS; ++n) {
+ pair = n + MAX_ANSI;
+ setcchar(&mycc, mywc, 0, (short) pair, NULL);
+ add_wch(&mycc);
+ add_wch(&mycc);
+ }
+ } else if ((COLORS > 256) && using_rgb) {
+ int rows = LINES - 1;
+ int cols = COLS - 1;
+ int row = 0;
+
+ b = 0;
+ pair = MAX_ANSI;
+ while (row++ < rows) {
+ int col = 0;
+ while (col++ < cols) {
+ setcchar(&mycc, mywc, 0, (short) pair, &pair);
+ add_wch(&mycc);
+ ++pair;
+ }
+ addch('\n');
+ }
+ addch('\n');
+ }
+#endif
+ }
+ }
+
+ if (fill_by != 0) {
+ FILE *fp = fopen(fill_by, "r");
+ if (fp != 0) {
+ bool filled = FALSE;
+ move(1, 0);
+ while ((ch = fgetc(fp)) != EOF) {
+ if (addch(UChar(ch)) == ERR) {
+ filled = TRUE;
+ break;
+ }
+ }
+ fclose(fp);
+ if (!filled) {
+ while (addch(' ') != ERR) {
+ ;
+ }
+ }
+ move(0, 0);
+ } else {
+ stop_curses();
+ fprintf(stderr, "Cannot open \"%s\"\n", fill_by);
+ ExitProgram(EXIT_FAILURE);
}
}
@@ -202,14 +507,14 @@ main(int argc, char *argv[])
* Use the last file as the initial/current screen.
*/
if (last < 0) {
- endwin();
+ stop_curses();
printf("No screen-dumps given\n");
ExitProgram(EXIT_FAILURE);
}
which = last;
if (load_screen(files[which]) == ERR) {
- endwin();
+ stop_curses();
printf("Cannot load screen-dump %s\n", files[which]);
ExitProgram(EXIT_FAILURE);
}
@@ -227,7 +532,6 @@ main(int argc, char *argv[])
done = TRUE;
break;
case 'q':
- endwin();
cleanup(files);
done = TRUE;
break;
@@ -240,6 +544,9 @@ main(int argc, char *argv[])
if (++which > last)
which = 0;
break;
+ case HELP_KEY_1:
+ replay_help();
+ break;
default:
beep();
continue;
@@ -256,46 +563,34 @@ main(int argc, char *argv[])
wrefresh(curscr);
}
}
+ endwin();
} else {
- int y;
- int x;
-
- move(2, 0);
- printw("Use h,j,k,l or arrows to move around the screen\n");
- printw("Press 'q' to quit, ' ' to dump a screen\n");
- printw("When the last screen has been dumped, press 'n' to run the\n");
- printw("screen-loader. That allows only 'q', backspace and ' ' for\n");
- printw("stepping through the dumped/restored screens.\n");
- getyx(stdscr, y, x);
+ int y = 0;
+ int x = 0;
+ int color = 0;
+ int altchars = 0;
+ bool dirty = use_colors || (fill_by != 0);
while (!done) {
- switch (get_command(which, last)) {
+ switch (get_command(color, which, last)) {
case 'n':
+ if (dirty && files[which]) {
+ dump_screen(files, color, which, last, use_colors);
+ }
setup_next();
done = TRUE;
break;
case 'q':
- endwin();
cleanup(files);
done = TRUE;
break;
case ' ':
- if (files[which] != 0) {
- show_what(which + 1, last);
- if (scr_dump(files[which]) == ERR) {
- endwin();
- printf("Cannot write screen-dump %s\n", files[which]);
- cleanup(files);
- done = TRUE;
- break;
- }
- ++which;
- if (has_colors()) {
- short pair = (short) (which % COLOR_PAIRS);
- bkgd((chtype) COLOR_PAIR(pair));
- }
+ if (dump_screen(files, color, which, last, use_colors)) {
+ which = (which + 1) % MAX_ANSI;
+ dirty = FALSE;
} else {
- beep();
+ setup_next();
+ done = TRUE;
}
break;
case KEY_LEFT:
@@ -318,23 +613,41 @@ main(int argc, char *argv[])
if (++x >= COLS)
x = 0;
break;
+ case 'a':
+ altchars = !altchars;
+ break;
+ case 'c':
+ if (use_colors) {
+ color = (color + 1) % MAX_ANSI;
+ }
+ break;
+ case HELP_KEY_1:
+ editor_help();
+ break;
+ default:
+ beep();
+ continue;
}
if (!done) {
- time_t now = time((time_t *) 0);
-
- move(0, 0);
- addstr(ctime(&now));
+ chtype attr = A_REVERSE;
+ chtype ch2 = (altchars ? MyMarker : '#');
+ if (use_colors) {
+ attr |= (chtype) COLOR_PAIR(color);
+ }
move(y, x);
- addch('#' | A_REVERSE);
+ AddCh(ch2 | attr);
move(y, x);
+ dirty = TRUE;
}
}
+ endwin();
}
ExitProgram(EXIT_SUCCESS);
}
+
#else
int
-main(int argc, char *argv[])
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
{
printf("This program requires the screen-dump functions\n");
ExitProgram(EXIT_FAILURE);
diff --git a/test/savescreen.sh b/test/savescreen.sh
index e49aa1735061..56570e7e3cc4 100755
--- a/test/savescreen.sh
+++ b/test/savescreen.sh
@@ -1,6 +1,6 @@
#!/bin/sh
##############################################################################
-# Copyright (c) 2007,2009 Free Software Foundation, Inc. #
+# Copyright (c) 2007-2009,2018 Free 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"), #
@@ -26,14 +26,23 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: savescreen.sh,v 1.4 2009/10/10 17:08:45 tom Exp $
+# $Id: savescreen.sh,v 1.5 2018/01/06 00:04:14 tom Exp $
#
# Use this script to exercise "savescreen".
# It starts by generating a series of temporary-filenames, which are passed
# to the test-program. Loop as long as the first file named exists.
+
+: ${TMPDIR:=/tmp}
+
+# "mktemp -d" would be preferable, but is not standard.
+MY_DIR=$TMPDIR/savescreen$$
+trap "rm -rf $MY_DIR" EXIT INT QUIT HUP
+umask 077
+mkdir $MY_DIR || exit 1
+
PARAMS=
NFILES=4
-PREFIX=savescreen-$$
+PREFIX=$MY_DIR/savescreen
n=0
BEGINS=$PREFIX-$n.tmp
while test $n != $NFILES
@@ -43,12 +52,12 @@ do
n=`expr $n + 1`
done
-./savescreen $PARAMS
+${0%.sh} $PARAMS
if test -f $BEGINS
then
while test -f $BEGINS
do
- ./savescreen -r $PARAMS
+ ${0%.sh} -r $PARAMS
test $? != 0 && break
done
else
diff --git a/test/sp_tinfo.c b/test/sp_tinfo.c
new file mode 100644
index 000000000000..c0a67137c7cb
--- /dev/null
+++ b/test/sp_tinfo.c
@@ -0,0 +1,351 @@
+/****************************************************************************
+ * Copyright (c) 2017,2019 Free 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: sp_tinfo.c,v 1.22 2019/04/06 20:42:57 tom Exp $
+ *
+ * TOTO: add option for non-sp-funcs interface
+ */
+
+#define USE_TINFO
+#include <test.priv.h>
+
+#if HAVE_TPUTS_SP
+/*
+ * The higher-level curses library stores a TERMINAL* inside SCREEN, but the
+ * latter is opaque. This structure helps us keep the two associated.
+ */
+typedef struct {
+ const char *name;
+ FILE *fp;
+ SCREEN *sp;
+ TERMINAL *term;
+ int (*outc) (SCREEN *, int);
+} MYDATA;
+
+static bool opt_n = FALSE; /* true to suppress new_prescr */
+static bool opt_t = FALSE; /* true to use termcap */
+
+static int
+my_outc(SCREEN *sp, int ch)
+{
+ (void) sp;
+ return fputc(ch, stdout);
+}
+
+static int
+my_errc(SCREEN *sp, int ch)
+{
+ (void) sp;
+ return fputc(ch, stderr);
+}
+
+static MYDATA *
+initialize(const char *name, FILE *output)
+{
+ MYDATA *result = typeCalloc(MYDATA, 1);
+ int error;
+
+ result->fp = output;
+ result->name = name;
+ result->outc = (fileno(output) == 1) ? my_outc : my_errc;
+ result->sp = opt_n ? NULL : new_prescr();
+
+ if (opt_t) {
+ char *temp = strdup(name);
+ tgetent_sp(result->sp, temp, name);
+ free(temp);
+ } else {
+ setupterm((NCURSES_CONST char *) name, fileno(output), &error);
+ }
+ result->term = cur_term;
+
+ return result;
+}
+
+static void
+show_flag(MYDATA * data, const char *name, int value)
+{
+ if (value < 0) {
+ fprintf(data->fp, " %s = (unknown)\n", name);
+ } else if (value == 0) {
+ fprintf(data->fp, " %s = false\n", name);
+ } else {
+ fprintf(data->fp, " %s = true\n", name);
+ }
+}
+
+#define TC_PARMS data->sp, (NCURSES_CONST char *)tc
+#define TI_PARMS data->sp, (NCURSES_CONST char *)ti
+
+static void
+show_cap_flag(MYDATA * data, const char *ti, const char *tc)
+{
+ const char *name = (opt_t ? tc : ti);
+ show_flag(data, name, (opt_t
+ ? tgetflag_sp(TC_PARMS)
+ : tigetflag_sp(TI_PARMS)));
+}
+
+static void
+show_number(MYDATA * data, const char *name, int value)
+{
+ if (value <= -2) {
+ fprintf(data->fp, " %s = (unknown)\n", name);
+ } else if (value <= -1) {
+ fprintf(data->fp, " %s = (missing)\n", name);
+ } else {
+ fprintf(data->fp, " %s = %d\n", name, value);
+ }
+}
+
+static void
+show_cap_number(MYDATA * data, const char *ti, const char *tc)
+{
+ const char *name = (opt_t ? tc : ti);
+ show_number(data, name, (opt_t
+ ? tgetnum_sp(TC_PARMS)
+ : tigetnum_sp(TI_PARMS)));
+}
+
+static void
+show_string(MYDATA * data, const char *name, const char *value)
+{
+ fprintf(data->fp, " %s = ", name);
+ if (value == 0) {
+ fprintf(data->fp, "(missing)");
+ } else if (value == (char *) -1) {
+ fprintf(data->fp, "(canceled)");
+ } else {
+ int ch;
+ while ((ch = UChar(*value++)) != '\0') {
+ if (ch < 32) {
+ fprintf(data->fp, "^%c", ch | '@');
+ } else if (ch == 127) {
+ fprintf(data->fp, "^?");
+ } else if (ch > 127) {
+ fprintf(data->fp, "\\%03o", ch);
+ } else {
+ fprintf(data->fp, "%c", ch);
+ }
+ }
+ }
+ fprintf(data->fp, "\n");
+}
+
+static void
+show_cap_string(MYDATA * data, const char *ti, const char *tc)
+{
+ const char *name = (opt_t ? tc : ti);
+ char tcapjunk[1024];
+ char *tcap_ptr = tcapjunk;
+ show_string(data, name, (opt_t
+ ? tgetstr_sp(TC_PARMS, &tcap_ptr)
+ : tigetstr_sp(TI_PARMS)));
+}
+
+static void
+show_char(MYDATA * data, const char *name, int value)
+{
+ if (value < 0) {
+ show_string(data, name, "(missing)");
+ } else {
+ char temp[2];
+ temp[0] = (char) value;
+ temp[1] = '\0';
+ show_string(data, name, temp);
+ }
+}
+
+static void
+do_stuff(MYDATA * data)
+{
+ SCREEN *sp = data->sp;
+#if NCURSES_EXT_FUNCS
+ char *s;
+ int my_code = 1234;
+ const char *my_text = "\033[?m";
+#endif
+
+ set_curterm_sp(sp, data->term);
+
+ /* putp always goes to standard output */
+ putp_sp(sp, "Hello ");
+ putp_sp(sp, data->name);
+ putp_sp(sp, "!\n");
+
+ fprintf(data->fp, "Term: %s\n", termname_sp(sp));
+ fprintf(data->fp, "Long: %s\n", longname_sp(sp));
+ show_cap_flag(data, "am", "am");
+ show_cap_number(data, "lines", "li");
+ show_cap_string(data, "clear", "cl");
+ show_cap_string(data, "tbc", "ct");
+ show_flag(data, "has_ic", has_ic_sp(sp));
+ show_flag(data, "has_il", has_il_sp(sp));
+ show_number(data, "baudrate", baudrate_sp(sp));
+ show_char(data, "erase ch", erasechar_sp(sp));
+ show_char(data, "kill ch", killchar_sp(sp));
+ show_string(data, "unctrl", unctrl_sp(sp, 033));
+ fflush(data->fp);
+
+#if NCURSES_EXT_FUNCS
+ define_key_sp(sp, my_text, my_code);
+ has_key_sp(sp, 0);
+ key_defined_sp(sp, my_text);
+ if ((s = keybound_sp(sp, my_code, 0)) != 0)
+ free(s);
+#endif
+ keyname_sp(sp, '?');
+#if NCURSES_EXT_FUNCS
+ keyok_sp(sp, my_code, FALSE);
+ keyok_sp(sp, my_code, TRUE);
+#endif
+
+ savetty_sp(sp);
+
+ def_shell_mode_sp(sp);
+
+ /*
+ * These functions are low-level settings for ncurses.
+ */
+#if NCURSES_EXT_FUNCS
+ set_tabsize_sp(sp, 5); /* waddch */
+#endif
+ typeahead_sp(sp, FALSE); /* waddch */
+ use_env_sp(sp, FALSE); /* newterm */
+ use_tioctl_sp(sp, FALSE); /* newterm */
+ intrflush_sp(sp, 0, 0); /* wgetch */
+ flushinp_sp(sp); /* waddch */
+ halfdelay_sp(sp, 5); /* wgetch */
+
+ /*
+ * These manipulate the terminal modes, mainly for wgetch.
+ */
+ cbreak_sp(sp);
+ raw_sp(sp);
+ def_prog_mode_sp(sp);
+
+ delay_output_sp(sp, 200);
+
+ napms_sp(sp, 10);
+
+ nocbreak_sp(sp);
+ noqiflush_sp(sp);
+ noraw_sp(sp);
+ qiflush_sp(sp);
+
+ resetty_sp(sp);
+
+ tputs_sp(sp, "{reset-mode}\n", 0, data->outc);
+
+ reset_prog_mode_sp(sp);
+
+ curs_set_sp(sp, 0);
+ tputs_sp(sp, "{prog-mode}\n", 0, data->outc);
+
+ reset_shell_mode_sp(sp);
+
+ tputs_sp(sp, "{shell-mode}\n", 0, data->outc);
+}
+
+static void
+cleanup(MYDATA * data)
+{
+ set_curterm(data->term);
+ del_curterm(data->term);
+#if !NO_LEAKS
+ free(data->sp); /* cannot use delscreen in tinfo */
+#endif
+ free(data);
+}
+
+static void
+usage(void)
+{
+ static const char *tbl[] =
+ {
+ "Usage: sp_tinfo [output] [error]",
+ "",
+ "Options:",
+ " -n suppress call to new_prescr()",
+ " -t use termcap functions rather than terminfo",
+ NULL
+ };
+ size_t n;
+ for (n = 0; n < SIZEOF(tbl); ++n) {
+ fprintf(stderr, "%s\n", tbl[n]);
+ }
+ ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc, char *argv[])
+{
+ MYDATA *my_out;
+ MYDATA *my_err;
+ int n;
+
+ while ((n = getopt(argc, argv, "nt")) != -1) {
+ switch (n) {
+ case 'n':
+ opt_n = TRUE;
+ break;
+ case 't':
+ opt_t = TRUE;
+ break;
+ default:
+ usage();
+ /* NOTREACHED */
+ }
+ }
+ argv += (optind - 1);
+ argc -= (optind - 1);
+
+ if (argc > 3)
+ usage();
+
+ my_out = initialize((argc > 1) ? argv[1] : "vt100", stdout);
+ my_err = initialize((argc > 2) ? argv[2] : "ansi", stderr);
+
+ do_stuff(my_out);
+ do_stuff(my_err);
+
+ cleanup(my_out);
+ cleanup(my_err);
+
+ ExitProgram(EXIT_SUCCESS);
+}
+#else
+int
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+{
+ fprintf(stderr,
+ "This program requires the low-level ncurses sp-funcs tputs_sp\n");
+ ExitProgram(EXIT_FAILURE);
+}
+#endif
diff --git a/test/tclock.c b/test/tclock.c
index 24f33827b449..6460c3147c75 100644
--- a/test/tclock.c
+++ b/test/tclock.c
@@ -1,22 +1,12 @@
-/* $Id: tclock.c,v 1.33 2013/09/28 21:52:34 tom Exp $ */
+/* $Id: tclock.c,v 1.41 2020/01/18 16:46:35 tom Exp $ */
+#define NEED_TIME_H
#include <test.priv.h>
#if HAVE_MATH_H
#include <math.h>
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-
/*
tclock - analog/digital clock for curses.
If it gives you joy, then
@@ -58,7 +48,7 @@ plot(int x, int y, int col)
MvAddCh(y, x, (chtype) col);
}
-/* Draw a diagonal(arbitrary) line using Bresenham's alogrithm. */
+/* Draw a diagonal(arbitrary) line using Bresenham's algorithm. */
static void
dline(int pair, int from_x, int from_y, int x2, int y2, int ch)
{
@@ -69,7 +59,7 @@ dline(int pair, int from_x, int from_y, int x2, int y2, int ch)
int d;
if (has_colors())
- (void) attrset((attr_t) COLOR_PAIR(pair));
+ (void) attrset(AttrArg(COLOR_PAIR(pair), 0));
dx = x2 - from_x;
dy = y2 - from_y;
@@ -116,8 +106,28 @@ dline(int pair, int from_x, int from_y, int x2, int y2, int ch)
}
}
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: tclock [options]"
+ ,""
+ ,"Options:"
+#if HAVE_USE_DEFAULT_COLORS
+ ," -d invoke use_default_colors"
+#endif
+ };
+ size_t n;
+
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+
+ ExitProgram(EXIT_FAILURE);
+}
+
int
-main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+main(int argc, char *argv[])
{
int i, cx, cy;
double cr, mradius, hradius, mangle, hangle;
@@ -137,6 +147,24 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
struct timeval current;
#endif
double fraction = 0.0;
+#if HAVE_USE_DEFAULT_COLORS
+ bool d_option = FALSE;
+#endif
+
+ while ((ch = getopt(argc, argv, "d")) != -1) {
+ switch (ch) {
+#if HAVE_USE_DEFAULT_COLORS
+ case 'd':
+ d_option = TRUE;
+ break;
+#endif
+ default:
+ usage();
+ /* NOTREACHED */
+ }
+ }
+ if (optind < argc)
+ usage();
setlocale(LC_ALL, "");
@@ -149,7 +177,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
if (has_colors()) {
start_color();
#if HAVE_USE_DEFAULT_COLORS
- if (use_default_colors() == OK)
+ if (d_option && (use_default_colors() == OK))
my_bg = -1;
#endif
init_pair(1, COLOR_RED, my_bg);
@@ -175,7 +203,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
sangle = (i + 1) * (2.0 * PI) / 12.0;
sdx = A2X(sangle, sradius);
sdy = A2Y(sangle, sradius);
- sprintf(szChar, "%d", i + 1);
+ _nc_SPRINTF(szChar, _nc_SLIMIT(sizeof(szChar)) "%d", i + 1);
MvAddStr(cy - sdy, cx + sdx, szChar);
}
@@ -216,12 +244,12 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
attroff(A_REVERSE);
if (has_colors())
- (void) attrset((attr_t) COLOR_PAIR(1));
+ (void) attrset(AttrArg(COLOR_PAIR(1), 0));
dline(1, cx, cy, cx + sdx, cy - sdy, 'O');
if (has_colors())
- (void) attrset((attr_t) COLOR_PAIR(0));
+ (void) attrset(AttrArg(COLOR_PAIR(0), 0));
text = ctime(&tim);
MvPrintw(2, 0, "%.*s", (int) (strlen(text) - 1), text);
@@ -254,8 +282,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
}
- curs_set(1);
- endwin();
+ stop_curses();
ExitProgram(EXIT_SUCCESS);
}
#else
diff --git a/test/terminal.xbm b/test/terminal.xbm
new file mode 100644
index 000000000000..b8d9204bd687
--- /dev/null
+++ b/test/terminal.xbm
@@ -0,0 +1,52 @@
+/*****************************************************************************/
+/** Copyright 1988 by Evans & Sutherland Computer Corporation, **/
+/** Salt Lake City, Utah **/
+/** **/
+/** All Rights Reserved **/
+/** **/
+/** Permission to use, copy, modify, and distribute this software and **/
+/** its documentation for any purpose and without fee is hereby **/
+/** granted, provided that the above copyright notice appear in all **/
+/** copies and that both that copyright notice and this permis- **/
+/** sion notice appear in supporting documentation, and that the **/
+/** name of Evans & Sutherland not be used in advertising or publi- **/
+/** city pertaining to distribution of the software without specif- **/
+/** ic, written prior permission. **/
+/** **/
+/** EVANS & SUTHERLAND DISCLAIMS ALL WARRANTIES WITH REGARD TO **/
+/** THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILI- **/
+/** TY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND BE LIABLE **/
+/** FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAM- **/
+/** AGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, **/
+/** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS **/
+/** ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PER- **/
+/** FORMANCE OF THIS SOFTWARE. **/
+/*****************************************************************************/
+
+#define xterm_width 48
+#define xterm_height 48
+static char xterm_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0xfe, 0xff, 0xff, 0x1f, 0x05,
+ 0x20, 0x01, 0x00, 0x00, 0x20, 0x09, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x11,
+ 0xa0, 0xfc, 0xff, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
+ 0xa0, 0xfc, 0x01, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
+ 0xa0, 0xfc, 0xff, 0x3f, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
+ 0xa0, 0xfc, 0x03, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
+ 0xa0, 0xfc, 0xff, 0x01, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
+ 0xa0, 0xfc, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
+ 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
+ 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
+ 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
+ 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x11,
+ 0xa0, 0x00, 0x00, 0x00, 0x40, 0x11, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x09,
+ 0xa0, 0x00, 0x00, 0x00, 0x40, 0x09, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x05,
+ 0x20, 0x01, 0x00, 0x00, 0x20, 0x05, 0x20, 0xfe, 0xff, 0xff, 0x1f, 0x03,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x00, 0x00, 0x00, 0x00, 0x03,
+ 0xa0, 0xaa, 0xaa, 0xaa, 0x2a, 0x03, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02,
+ 0x50, 0x55, 0x55, 0x55, 0x95, 0x02, 0x08, 0x00, 0x00, 0x00, 0x40, 0x02,
+ 0xa8, 0xaa, 0xaa, 0xaa, 0x4a, 0x02, 0x04, 0x00, 0x00, 0x00, 0x20, 0x01,
+ 0xb4, 0xff, 0xff, 0xff, 0xad, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00,
+ 0xfe, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/test/test.priv.h b/test/test.priv.h
index d3915fba61b3..7a884fe32faf 100644
--- a/test/test.priv.h
+++ b/test/test.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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 1996-on *
****************************************************************************/
-/* $Id: test.priv.h,v 1.123 2014/02/01 22:09:27 tom Exp $ */
+/* $Id: test.priv.h,v 1.184 2019/12/14 23:25:29 tom Exp $ */
#ifndef __TEST_PRIV_H
#define __TEST_PRIV_H 1
@@ -58,22 +58,50 @@
/*
* Fallback definitions to accommodate broken compilers.
*/
+#ifndef HAVE_ALLOC_PAIR
+#define HAVE_ALLOC_PAIR 0
+#endif
+
#ifndef HAVE_ASSUME_DEFAULT_COLORS
#define HAVE_ASSUME_DEFAULT_COLORS 0
#endif
+#ifndef HAVE_BSD_STRING_H
+#define HAVE_BSD_STRING_H 0
+#endif
+
#ifndef HAVE_CURSES_VERSION
#define HAVE_CURSES_VERSION 0
#endif
+#ifndef HAVE_CURSCR
+#define HAVE_CURSCR 0
+#endif
+
#ifndef HAVE_CHGAT
#define HAVE_CHGAT 0
#endif
+#ifndef HAVE_COLOR_CONTENT
+#define HAVE_COLOR_CONTENT 0
+#endif
+
+#ifndef HAVE_COPYWIN
+#define HAVE_COPYWIN 0
+#endif
+
#ifndef HAVE_COLOR_SET
#define HAVE_COLOR_SET 0
#endif
+#ifndef HAVE_DELSCREEN
+#define HAVE_DELSCREEN 0
+#endif
+
+#ifndef HAVE_DUPWIN
+#define HAVE_DUPWIN 0
+#endif
+
#ifndef HAVE_FILTER
#define HAVE_FILTER 0
#endif
@@ -106,6 +134,14 @@
#define HAVE_GETWIN 0
#endif
+#ifndef HAVE_HALFDELAY
+#define HAVE_HALFDELAY 0
+#endif
+
+#ifndef HAVE_INIT_EXTENDED_COLOR
+#define HAVE_INIT_EXTENDED_COLOR 0
+#endif
+
#ifndef HAVE_LIBFORM
#define HAVE_LIBFORM 0
#endif
@@ -118,6 +154,10 @@
#define HAVE_LIBPANEL 0
#endif
+#ifndef HAVE_LANGINFO_CODESET
+#define HAVE_LANGINFO_CODESET 0
+#endif
+
#ifndef HAVE_LOCALE_H
#define HAVE_LOCALE_H 0
#endif
@@ -130,10 +170,18 @@
#define HAVE_MENU_H 0
#endif
+#ifndef HAVE_MVDERWIN
+#define HAVE_MVDERWIN 0
+#endif
+
#ifndef HAVE_MVVLINE
#define HAVE_MVVLINE 0
#endif
+#ifndef HAVE_MVWIN
+#define HAVE_MVWIN 0
+#endif
+
#ifndef HAVE_MVWVLINE
#define HAVE_MVWVLINE 0
#endif
@@ -146,6 +194,10 @@
#define HAVE_NC_ALLOC_H 0
#endif
+#ifndef HAVE_NEWPAD
+#define HAVE_NEWPAD 0
+#endif
+
#ifndef HAVE_PANEL_H
#define HAVE_PANEL_H 0
#endif
@@ -154,10 +206,18 @@
#define HAVE_PUTWIN 0
#endif
+#ifndef HAVE_RESET_COLOR_PAIRS
+#define HAVE_RESET_COLOR_PAIRS 0
+#endif
+
#ifndef HAVE_RESIZE_TERM
#define HAVE_RESIZE_TERM 0
#endif
+#ifndef HAVE_RESTARTTERM
+#define HAVE_RESTARTTERM 0
+#endif
+
#ifndef HAVE_RIPOFFLINE
#define HAVE_RIPOFFLINE 0
#endif
@@ -178,6 +238,14 @@
#define HAVE_SLK_INIT 0
#endif
+#ifndef HAVE_STDINT_H
+#define HAVE_STDINT_H 0
+#endif
+
+#ifndef HAVE_STRSTR
+#define HAVE_STRSTR 0
+#endif
+
#ifndef HAVE_SYS_IOCTL_H
#define HAVE_SYS_IOCTL_H 0
#endif
@@ -214,6 +282,14 @@
#define HAVE_TIGETSTR 0
#endif
+#ifndef HAVE_TPUTS_SP
+#define HAVE_TPUTS_SP 0
+#endif
+
+#ifndef HAVE_TSEARCH
+#define HAVE_TSEARCH 0
+#endif
+
#ifndef HAVE_TYPEAHEAD
#define HAVE_TYPEAHEAD 0
#endif
@@ -226,6 +302,14 @@
#define HAVE_USE_DEFAULT_COLORS 0
#endif
+#ifndef HAVE_USE_ENV
+#define HAVE_USE_ENV 0
+#endif
+
+#ifndef HAVE_USE_EXTENDED_NAMES
+#define HAVE_USE_EXTENDED_NAMES 0
+#endif
+
#ifndef HAVE_USE_SCREEN
#define HAVE_USE_SCREEN 0
#endif
@@ -234,10 +318,26 @@
#define HAVE_USE_WINDOW 0
#endif
+#ifndef HAVE_VIDPUTS
+#define HAVE_VIDPUTS 0
+#endif
+
+#ifndef HAVE_VID_PUTS
+#define HAVE_VID_PUTS 0
+#endif
+
+#ifndef HAVE_WINSDELLN
+#define HAVE_WINSDELLN 0
+#endif
+
#ifndef HAVE_WRESIZE
#define HAVE_WRESIZE 0
#endif
+#ifndef HAVE__TRACEF
+#define HAVE__TRACEF 0
+#endif
+
#ifndef NCURSES_EXT_FUNCS
#define NCURSES_EXT_FUNCS 0
#endif
@@ -342,6 +442,9 @@ extern int optind;
#ifndef GCC_PRINTFLIKE
#define GCC_PRINTFLIKE(a,b) /* nothing */
#endif
+#ifndef GCC_SCANFLIKE
+#define GCC_SCANFLIKE(a,b) /* nothing */
+#endif
#ifndef GCC_UNUSED
#define GCC_UNUSED /* nothing */
#endif
@@ -350,6 +453,12 @@ extern int optind;
#define getnstr(s,n) getstr(s)
#endif
+#if HAVE_INIT_EXTENDED_COLOR
+#define USE_EXTENDED_COLOR 1
+#else
+#define USE_EXTENDED_COLOR 0
+#endif
+
#ifndef USE_SOFTKEYS
#if HAVE_SLK_INIT
#define USE_SOFTKEYS 1
@@ -364,6 +473,24 @@ extern int optind;
#define slk_clear() /* nothing */
#endif
+#ifndef HAVE_CURSES_DATA_TABSIZE
+#define HAVE_CURSES_DATA_TABSIZE 0
+#endif
+
+#if !NCURSES_EXT_FUNCS
+#if HAVE_CURSES_DATA_TABSIZE
+#define set_tabsize(n) TABSIZE = (n)
+#else
+#define set_tabsize(n) /* nothing */
+#endif
+#endif
+
+#if HAVE_TPUTS_SP
+#define USE_SP_FUNCS 1
+#else
+#define USE_SP_FUNCS 0
+#endif
+
#ifndef HAVE_WSYNCDOWN
#define wsyncdown(win) /* nothing */
#endif
@@ -399,9 +526,9 @@ extern int optind;
/* workaround, to build against NetBSD's variant of the form library */
#ifdef HAVE_NETBSD_FORM_H
-#define form_getyx(form, y, x) y = current_field(form)->cursor_ypos, x = current_field(form)->cursor_xpos
+#define form_getyx(form, y, x) y = (int)current_field(form)->cursor_ypos, x = (int)current_field(form)->cursor_xpos
#else
-#define form_getyx(form, y, x) y = (form)->currow, x = (form)->curcol
+#define form_getyx(form, y, x) y = (int)(form)->currow, x = (int)(form)->curcol
#endif
/* workaround, to build against NetBSD's variant of the form library */
@@ -432,10 +559,6 @@ extern int optind;
#define NCURSES_PAIRS_T short
#endif
-#ifndef NCURSES_OPAQUE
-#define NCURSES_OPAQUE 0
-#endif
-
#ifndef CCHARW_MAX
#define CCHARW_MAX 5
#endif
@@ -479,38 +602,62 @@ extern int optind;
#undef WACS_NEQUAL
#undef WACS_STERLING
-#define WACS_RARROW &(CURSES_WACS_ARRAY['+'])
-#define WACS_LARROW &(CURSES_WACS_ARRAY[','])
-#define WACS_UARROW &(CURSES_WACS_ARRAY['-'])
-#define WACS_DARROW &(CURSES_WACS_ARRAY['.'])
-#define WACS_BLOCK &(CURSES_WACS_ARRAY['0'])
-#define WACS_DIAMOND &(CURSES_WACS_ARRAY['`'])
-#define WACS_CKBOARD &(CURSES_WACS_ARRAY['a'])
-#define WACS_DEGREE &(CURSES_WACS_ARRAY['f'])
-#define WACS_PLMINUS &(CURSES_WACS_ARRAY['g'])
-#define WACS_BOARD &(CURSES_WACS_ARRAY['h'])
-#define WACS_LANTERN &(CURSES_WACS_ARRAY['i'])
-#define WACS_LRCORNER &(CURSES_WACS_ARRAY['j'])
-#define WACS_URCORNER &(CURSES_WACS_ARRAY['k'])
-#define WACS_ULCORNER &(CURSES_WACS_ARRAY['l'])
-#define WACS_LLCORNER &(CURSES_WACS_ARRAY['m'])
-#define WACS_PLUS &(CURSES_WACS_ARRAY['n'])
-#define WACS_HLINE &(CURSES_WACS_ARRAY['q'])
-#define WACS_S1 &(CURSES_WACS_ARRAY['o'])
-#define WACS_S9 &(CURSES_WACS_ARRAY['s'])
-#define WACS_LTEE &(CURSES_WACS_ARRAY['t'])
-#define WACS_RTEE &(CURSES_WACS_ARRAY['u'])
-#define WACS_BTEE &(CURSES_WACS_ARRAY['v'])
-#define WACS_TTEE &(CURSES_WACS_ARRAY['w'])
-#define WACS_VLINE &(CURSES_WACS_ARRAY['x'])
-#define WACS_BULLET &(CURSES_WACS_ARRAY['~'])
-#define WACS_S3 &(CURSES_WACS_ARRAY['p'])
-#define WACS_S7 &(CURSES_WACS_ARRAY['r'])
-#define WACS_LEQUAL &(CURSES_WACS_ARRAY['y'])
-#define WACS_GEQUAL &(CURSES_WACS_ARRAY['z'])
-#define WACS_PI &(CURSES_WACS_ARRAY['{'])
-#define WACS_NEQUAL &(CURSES_WACS_ARRAY['|'])
-#define WACS_STERLING &(CURSES_WACS_ARRAY['}'])
+#define WACS_RARROW &(CURSES_WACS_ARRAY['+'])
+#define WACS_LARROW &(CURSES_WACS_ARRAY[','])
+#define WACS_UARROW &(CURSES_WACS_ARRAY['-'])
+#define WACS_DARROW &(CURSES_WACS_ARRAY['.'])
+#define WACS_BLOCK &(CURSES_WACS_ARRAY['0'])
+#define WACS_DIAMOND &(CURSES_WACS_ARRAY['`'])
+#define WACS_CKBOARD &(CURSES_WACS_ARRAY['a'])
+#define WACS_DEGREE &(CURSES_WACS_ARRAY['f'])
+#define WACS_PLMINUS &(CURSES_WACS_ARRAY['g'])
+#define WACS_BOARD &(CURSES_WACS_ARRAY['h'])
+#define WACS_LANTERN &(CURSES_WACS_ARRAY['i'])
+#define WACS_LRCORNER &(CURSES_WACS_ARRAY['j'])
+#define WACS_URCORNER &(CURSES_WACS_ARRAY['k'])
+#define WACS_ULCORNER &(CURSES_WACS_ARRAY['l'])
+#define WACS_LLCORNER &(CURSES_WACS_ARRAY['m'])
+#define WACS_PLUS &(CURSES_WACS_ARRAY['n'])
+#define WACS_HLINE &(CURSES_WACS_ARRAY['q'])
+#define WACS_S1 &(CURSES_WACS_ARRAY['o'])
+#define WACS_S9 &(CURSES_WACS_ARRAY['s'])
+#define WACS_LTEE &(CURSES_WACS_ARRAY['t'])
+#define WACS_RTEE &(CURSES_WACS_ARRAY['u'])
+#define WACS_BTEE &(CURSES_WACS_ARRAY['v'])
+#define WACS_TTEE &(CURSES_WACS_ARRAY['w'])
+#define WACS_VLINE &(CURSES_WACS_ARRAY['x'])
+#define WACS_BULLET &(CURSES_WACS_ARRAY['~'])
+#define WACS_S3 &(CURSES_WACS_ARRAY['p'])
+#define WACS_S7 &(CURSES_WACS_ARRAY['r'])
+#define WACS_LEQUAL &(CURSES_WACS_ARRAY['y'])
+#define WACS_GEQUAL &(CURSES_WACS_ARRAY['z'])
+#define WACS_PI &(CURSES_WACS_ARRAY['{'])
+#define WACS_NEQUAL &(CURSES_WACS_ARRAY['|'])
+#define WACS_STERLING &(CURSES_WACS_ARRAY['}'])
+#endif
+
+#ifndef WA_NORMAL
+#define WA_NORMAL A_NORMAL
+#endif
+#ifndef WA_BOLD
+#define WA_BOLD A_BOLD
+#endif
+#ifndef WA_REVERSE
+#define WA_REVERSE A_REVERSE
+#endif
+#ifndef WA_UNDERLINE
+#define WA_UNDERLINE A_UNDERLINE
+#endif
+#ifndef WA_BLINK
+#define WA_BLINK A_BLINK
+#endif
+
+#ifndef OK
+#define OK (0)
+#endif
+
+#ifndef ERR
+#define ERR (-1)
#endif
#undef CTRL
@@ -523,12 +670,112 @@ extern int optind;
#define KEY_MIN 256 /* not defined in Solaris 8 */
#endif
+#define HELP_KEY_1 '?'
+#define HELP_KEY_2 KEY_F(1)
+
+/* from nc_string.h, to make this stand alone */
+#if HAVE_BSD_STRING_H
+#include <bsd/string.h>
+#endif
+
+#ifdef __cplusplus
+#define NCURSES_VOID /* nothing */
+#else
+#define NCURSES_VOID (void)
+#endif
+
+#ifndef HAVE_STRLCAT
+#define HAVE_STRLCAT 0
+#endif
+
+#ifndef HAVE_STRLCPY
+#define HAVE_STRLCPY 0
+#endif
+
+#ifndef HAVE_SNPRINTF
+#define HAVE_SNPRINTF 0
+#endif
+
+#ifndef USE_STRING_HACKS
+#define USE_STRING_HACKS 0
+#endif
+
+#ifndef NCURSES_CAST
+#ifdef __cplusplus
+extern "C" {
+#define NCURSES_CAST(type,value) static_cast<type>(value)
+#else
+#define NCURSES_CAST(type,value) (type)(value)
+#endif
+#endif
+
+#if USE_STRING_HACKS && HAVE_STRLCAT
+#define _nc_STRCAT(d,s,n) NCURSES_VOID strlcat((d),(s),NCURSES_CAST(size_t,n))
+#define _nc_STRNCAT(d,s,m,n) NCURSES_VOID strlcat((d),(s),NCURSES_CAST(size_t,m))
+#else
+#define _nc_STRCAT(d,s,n) NCURSES_VOID strcat((d),(s))
+#define _nc_STRNCAT(d,s,m,n) NCURSES_VOID strncat((d),(s),(n))
+#endif
+
+#if USE_STRING_HACKS && HAVE_STRLCPY
+#define _nc_STRCPY(d,s,n) NCURSES_VOID strlcpy((d),(s),NCURSES_CAST(size_t,n))
+#define _nc_STRNCPY(d,s,n) NCURSES_VOID strlcpy((d),(s),NCURSES_CAST(size_t,n))
+#else
+#define _nc_STRCPY(d,s,n) NCURSES_VOID strcpy((d),(s))
+#define _nc_STRNCPY(d,s,n) NCURSES_VOID strncpy((d),(s),(n))
+#endif
+
+#if USE_STRING_HACKS && HAVE_SNPRINTF
+#define _nc_SPRINTF NCURSES_VOID snprintf
+#define _nc_SLIMIT(n) NCURSES_CAST(size_t,n),
+#else
+#define _nc_SPRINTF NCURSES_VOID sprintf
+#define _nc_SLIMIT(n) /* nothing */
+#endif
+
+/*
+ * X/Open Curses does not define the arrays of terminfo/termcap names as SVr4
+ * curses did, and some implementations provide them anyway, but undeclared.
+ */
#ifdef DECL_CURSES_DATA_BOOLNAMES
extern char *boolnames[], *boolcodes[], *boolfnames[];
extern char *numnames[], *numcodes[], *numfnames[];
extern char *strnames[], *strcodes[], *strfnames[];
#endif
+/*
+ * Again, an SVr4 curses feature latent in the libraries but not in headers.
+ */
+#ifndef DECL_CURSES_DATA_TABSIZE
+#define DECL_CURSES_DATA_TABSIZE 0
+#endif
+
+#if DECL_CURSES_DATA_TABSIZE
+extern int TABSIZE;
+#undef HAVE_CURSES_DATA_TABSIZE
+#define HAVE_CURSES_DATA_TABSIZE 1
+#endif
+
+#ifndef HAVE_CURSES_DATA_TABSIZE
+#define HAVE_CURSES_DATA_TABSIZE 0
+#endif
+
+/*
+ * X/Open Curses provides termname(), whose return value is analogous to the
+ * SVr4 curses variable ttytype[].
+ */
+#ifndef HAVE_CURSES_DATA_TTYTYPE
+#define HAVE_CURSES_DATA_TTYTYPE 0
+#endif
+
+#ifndef DECL_CURSES_DATA_TTYTYPE
+#define DECL_CURSES_DATA_TTYTYPE 0
+#endif
+
+#if !defined(ttytype) && (!HAVE_CURSES_DATA_TTYTYPE || DECL_CURSES_DATA_TTYTYPE)
+#define ttytype termname()
+#endif
+
#define colored_chtype(ch, attr, pair) \
((chtype) (ch) | (chtype) (attr) | (chtype) COLOR_PAIR(pair))
@@ -569,18 +816,18 @@ extern char *strnames[], *strcodes[], *strfnames[];
* These usually are implemented as macros, but may be functions.
*/
#if !defined(getcurx) && !HAVE_GETCURX
-#define getcurx(win) ((win)?(win)->_curx:ERR)
-#define getcury(win) ((win)?(win)->_cury:ERR)
+#define getcurx(win) ((win) ? ((int)(win)->_curx) : ERR)
+#define getcury(win) ((win) ? ((int)(win)->_cury) : ERR)
#endif
#if !defined(getbegx) && !HAVE_GETBEGX
-#define getbegx(win) ((win)?(win)->_begx:ERR)
-#define getbegy(win) ((win)?(win)->_begy:ERR)
+#define getbegx(win) ((win) ? ((int)(win)->_begx) : ERR)
+#define getbegy(win) ((win) ? ((int)(win)->_begy) : ERR)
#endif
#if !defined(getmaxx) && !HAVE_GETMAXX
-#define getmaxx(win) ((win)?((win)->_maxx + 1):ERR)
-#define getmaxy(win) ((win)?((win)->_maxy + 1):ERR)
+#define getmaxx(win) ((win) ? ((int)(win)->_maxx + 1) : ERR)
+#define getmaxy(win) ((win) ? ((int)(win)->_maxy + 1) : ERR)
#endif
/*
@@ -634,6 +881,15 @@ extern char *strnames[], *strcodes[], *strfnames[];
#define NCURSES_XNAMES 0
#endif
+/*
+ * ncurses restores the cursor in endwin(). Other libraries may not.
+ */
+#ifdef NCURSES_VERSION
+#define stop_curses() endwin()
+#else
+#define stop_curses() do { endwin(); curs_set(1); } while (0)
+#endif
+
/* ncurses implements tparm() with varargs, X/Open with a fixed-parameter list
* (which is incompatible with legacy usage, doesn't solve any problems).
*/
@@ -648,12 +904,12 @@ extern char *strnames[], *strcodes[], *strfnames[];
#include <nc_alloc.h>
#if HAVE_NC_FREEALL && defined(USE_TINFO)
#undef ExitProgram
-#define ExitProgram(code) _nc_free_tinfo(code)
+#define ExitProgram(code) exit_terminfo(code)
#endif
#else
-#define typeMalloc(type,n) (type *) malloc((n) * sizeof(type))
-#define typeCalloc(type,elts) (type *) calloc((elts), sizeof(type))
-#define typeRealloc(type,n,p) (type *) realloc(p, (n) * sizeof(type))
+#define typeMalloc(type,n) (type *) malloc((size_t)(n) * sizeof(type))
+#define typeCalloc(type,elts) (type *) calloc((size_t)(elts), sizeof(type))
+#define typeRealloc(type,n,p) (type *) realloc(p, (size_t)(n) * sizeof(type))
#endif
#ifndef ExitProgram
@@ -667,7 +923,7 @@ extern char *strnames[], *strcodes[], *strfnames[];
#define EXIT_FAILURE 1
#endif
-#if defined(__MINGW32__)
+#if defined(_WIN32) || defined(USE_WIN32CON_DRIVER)
#if defined(PDCURSES)
#ifdef WINVER
@@ -699,13 +955,42 @@ extern char *strnames[], *strcodes[], *strfnames[];
#endif
+#ifdef NEED_TIME_H
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+# include <sys/time.h>
+# else
+# include <time.h>
+# endif
+#endif
+#endif
+
+/*
+ * Ultrix 3.1
+ */
+#ifndef STDOUT_FILENO
+#define STDOUT_FILENO 1
+#endif
+
+#if !HAVE_STRSTR
+extern char *_nc_strstr(const char *, const char *);
+#define strstr(a,b) _nc_strstr((a),(b))
+#endif /* !HAVE_STRSTR */
+
/* Use this to quiet gcc's -Wwrite-strings warnings, but accommodate SVr4
* curses which doesn't have const parameters declared (so far) in the places
* that XSI shows.
*/
#ifndef NCURSES_CONST
+#ifdef PDCURSES
+#define NCURSES_CONST const /* close enough */
+#else
#define NCURSES_CONST /* nothing */
#endif
+#endif
/* out-of-band values for representing absent capabilities */
#define ABSENT_BOOLEAN ((signed char)-1) /* 255 */
@@ -723,12 +1008,18 @@ extern char *strnames[], *strcodes[], *strfnames[];
#define VT_ACSC "``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~"
-#define CATCHALL(handler) { \
+#define CATCHALL(handler) do { \
int nsig; \
for (nsig = SIGHUP; nsig < SIGTERM; ++nsig) \
if (nsig != SIGKILL) \
signal(nsig, handler); \
- }
+ } while(0)
+
+#ifdef NCURSES_VERSION
+#define InitAndCatch(init,handler) do { CATCHALL(handler); init; } while (0)
+#else
+#define InitAndCatch(init,handler) do { init; CATCHALL(handler); } while (0)
+#endif
/*
* Workaround for clean(er) compile with Solaris's legacy curses.
@@ -783,9 +1074,25 @@ extern char *tgoto(char *, int, int); /* available, but not prototyped */
#endif
/*
- * ncurses uses const in some places where X/Open does (or did) not allow.
+ * ncurses provides a termcap interface; a few packagers replace or displace
+ * its header file with an incompatible one. The demo_termcap program uses
+ * the ncurses file, if available.
*/
#ifdef NCURSES_VERSION
+#ifndef HAVE_NCURSES_TERMCAP_H
+#define HAVE_NCURSES_TERMCAP_H 0
+#endif
+#ifndef HAVE_TERMCAP_H
+#define HAVE_TERMCAP_H 0
+#endif
+#endif
+
+/*
+ * ncurses uses const in some places where X/Open does (or did) not allow.
+ */
+#if defined(NCURSES_CONST)
+#define CONST_MENUS NCURSES_CONST
+#elif defined(PDCURSES)
#define CONST_MENUS const
#else
#define CONST_MENUS /* nothing */
@@ -797,10 +1104,12 @@ extern char *tgoto(char *, int, int); /* available, but not prototyped */
#if HAVE_USE_WINDOW
#define USING_WINDOW(w,func) use_window(w, (NCURSES_WINDOW_CB) func, w)
+#define USING_WINDOW1(w,func,safe) use_window(w, (NCURSES_WINDOW_CB) safe, NULL)
#define USING_WINDOW2(w,func,data) use_window(w, (NCURSES_WINDOW_CB) func, data)
#define WANT_USE_WINDOW() extern void _nc_want_use_window(void)
#else
-#define USING_WINDOW(w,func) func(w)
+#define USING_WINDOW(w,func) func(w, NULL)
+#define USING_WINDOW1(w,func,safe) func(w)
#define USING_WINDOW2(w,func,data) func(w,data)
#define WANT_USE_WINDOW() extern void _nc_want_use_window(void)
#endif
@@ -813,27 +1122,48 @@ extern char *tgoto(char *, int, int); /* available, but not prototyped */
#define WANT_USE_SCREEN() extern void _nc_want_use_screen(void)
#endif
-#ifdef TRACE
+#if defined(TRACE) && HAVE__TRACEF
#define Trace(p) _tracef p
#define USE_TRACE 1
+#define START_TRACE() \
+ if ((_nc_tracing & TRACE_MAXIMUM) == 0) { \
+ int t = _nc_getenv_num("NCURSES_TRACE"); \
+ if (t >= 0) \
+ curses_trace((unsigned) t); \
+ }
+extern unsigned _nc_tracing;
+extern int _nc_getenv_num(const char *);
#else
+#undef TRACE
#define Trace(p) /* nothing */
#define USE_TRACE 0
+#define START_TRACE() /* nothing */
#endif
#define Trace2(p) /* nothing */
-#define MvAddCh (void) mvaddch
-#define MvWAddCh (void) mvwaddch
-#define MvAddStr (void) mvaddstr
-#define MvWAddStr (void) mvwaddstr
-#define MvWAddChStr (void) mvwaddchstr
-#define MvPrintw (void) mvprintw
-#define MvWPrintw (void) mvwprintw
-#define MvHLine (void) mvhline
-#define MvWHLine (void) mvwhline
-#define MvVLine (void) mvvline
-#define MvWVLine (void) mvwvline
+#define AddCh(c) (void) addch((chtype)(c))
+#define WAddCh(w,c) (void) waddch((w),(chtype)(c))
+#define MvAddCh(y,x,c) (void) mvaddch((y),(x),(chtype)(c))
+#define MvWAddCh(w,y,x,c) (void) mvwaddch((w),(y),(x),(chtype)(c))
+#define MvAddStr(y,x,s) (void) mvaddstr((y),(x),(s))
+#define MvWAddStr(w,y,x,s) (void) mvwaddstr((w),(y),(x),(s))
+#define MvWAddChStr(w,y,x,s) (void) mvwaddchstr((w),(y),(x),(s))
+#define MvPrintw (void) mvprintw
+#define MvWPrintw (void) mvwprintw
+#define MvHLine (void) mvhline
+#define MvWHLine (void) mvwhline
+#define MvVLine (void) mvvline
+#define MvWVLine (void) mvwvline
+
+/*
+ * The macro likely uses unsigned values, while X/Open prototype uses int.
+ */
+#if defined(wattrset) || defined(PDCURSES)
+#define AttrArg(p,a) (chtype) ((chtype)(p) | (chtype)(a))
+#else
+#define AttrArg(p,a) (int) ((chtype)(p) | (chtype)(a))
+#endif
/*
* Workaround for defective implementation of gcc attribute warn_unused_result
diff --git a/test/test_add_wchstr.c b/test/test_add_wchstr.c
index c509f0035ac5..3e7f1bafcd80 100644
--- a/test/test_add_wchstr.c
+++ b/test/test_add_wchstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2010-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2009-2016,2017 Free 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: test_add_wchstr.c,v 1.20 2012/12/16 00:12:04 tom Exp $
+ * $Id: test_add_wchstr.c,v 1.26 2017/04/15 15:15:25 tom Exp $
*
* Demonstrate the waddwchstr() and wadd_wch functions.
* Thomas Dickey - 2009/9/12
@@ -48,18 +48,24 @@
#define WIDE_LINEDATA
#include <linedata.h>
+#undef AddCh
#undef MvAddCh
#undef MvAddStr
#undef MvWAddCh
+#undef MvWAddChStr
#undef MvWAddStr
+#undef WAddCh
-/* definitions to make it simpler to compare with test_addstr.c */
+/*
+ * redefinitions to simplify comparison between test_*str programs
+ */
#define AddNStr add_wchnstr
#define AddStr add_wchstr
#define MvAddNStr (void) mvadd_wchnstr
#define MvAddStr (void) mvadd_wchstr
#define MvWAddNStr (void) mvwadd_wchnstr
#define MvWAddStr (void) mvwadd_wchstr
+#define MvWAddChStr(w,y,x,s) (void) mvwadd_wchstr((w),(y),(x),(s))
#define WAddNStr wadd_wchnstr
#define WAddStr wadd_wchstr
@@ -103,7 +109,7 @@ static size_t temp_length;
&& (temp = unctrl((chtype) have[0])) != 0 \
&& strlen(temp) > 1) { \
while (*temp != '\0') { \
- have[0] = *temp++; \
+ have[0] = (wchar_t) *temp++; \
setcchar(&temp_buffer[n++], have, A_NORMAL, 0, NULL); \
} \
} else { \
@@ -210,7 +216,7 @@ ColOf(wchar_t *buffer, int length, int margin)
result += 2;
break;
default:
- result += wcwidth(ch);
+ result += wcwidth((wchar_t) ch);
if (ch < 32)
++result;
break;
@@ -291,7 +297,7 @@ AddCh(chtype ch)
#define LEN(n) ((length - (n) > n_opt) ? n_opt : (length - (n)))
static void
-test_add_wchstr(int level)
+recursive_test(int level)
{
static bool first = TRUE;
@@ -306,14 +312,19 @@ test_add_wchstr(int level)
WINDOW *work = 0;
WINDOW *show = 0;
int margin = (2 * MY_TABSIZE) - 1;
- Options option = ((m_opt ? oMove : oDefault)
- | ((w_opt || (level > 0)) ? oWindow : oDefault));
+ Options option = (Options) ((unsigned) (m_opt
+ ? oMove
+ : oDefault)
+ | (unsigned) ((w_opt || (level > 0))
+ ? oWindow
+ : oDefault));
if (first) {
static char cmd[80];
setlocale(LC_ALL, "");
- putenv(strcpy(cmd, "TABSIZE=8"));
+ _nc_STRCPY(cmd, "TABSIZE=8", sizeof(cmd));
+ putenv(cmd);
initscr();
(void) cbreak(); /* take input chars one at a time, no wait for \n */
@@ -351,8 +362,8 @@ test_add_wchstr(int level)
MvWVLine(work, row, margin + 1, ACS_VLINE, limit - 2);
limit /= 2;
- (void) mvwadd_wchstr(work, 1, 2, ChStr("String"));
- (void) mvwadd_wchstr(work, limit + 1, 2, ChStr("Chars"));
+ MvWAddChStr(work, 1, 2, ChStr("String"));
+ MvWAddChStr(work, limit + 1, 2, ChStr("Chars"));
wnoutrefresh(work);
buffer[length = 0] = '\0';
@@ -369,7 +380,7 @@ test_add_wchstr(int level)
wmove(work, row, margin + 1);
switch (ch) {
case key_RECUR:
- test_add_wchstr(level + 1);
+ recursive_test(level + 1);
if (look)
touchwin(look);
@@ -468,7 +479,7 @@ test_add_wchstr(int level)
}
break;
default:
- buffer[length++] = ch;
+ buffer[length++] = (wchar_t) ch;
buffer[length] = '\0';
/* put the string in, one character at a time */
@@ -582,8 +593,11 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
if (optind < argc)
usage();
- test_add_wchstr(0);
+ recursive_test(0);
endwin();
+#if NO_LEAKS
+ free(temp_buffer);
+#endif
ExitProgram(EXIT_SUCCESS);
}
#else
diff --git a/test/test_addchstr.c b/test/test_addchstr.c
index 2aae844e7651..2158d147982e 100644
--- a/test/test_addchstr.c
+++ b/test/test_addchstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2009-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2009-2016,2017 Free 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,16 +26,18 @@
* authorization. *
****************************************************************************/
/*
- * $Id: test_addchstr.c,v 1.18 2012/12/16 00:36:27 tom Exp $
+ * $Id: test_addchstr.c,v 1.24 2017/09/28 23:10:29 tom Exp $
*
* Demonstrate the waddchstr() and waddch functions.
* Thomas Dickey - 2009/9/12
*/
#include <test.priv.h>
-
#include <linedata.h>
+/*
+ * redefinitions to simplify comparison between test_*str programs
+ */
#undef MvAddStr
#undef MvWAddStr
@@ -48,9 +50,6 @@
#define WAddNStr waddchnstr
#define WAddStr waddchstr
-#define AddCh addch
-#define WAddCh waddch
-
#define MY_TABSIZE 8
typedef enum {
@@ -65,7 +64,7 @@ static bool pass_ctls = FALSE;
static bool w_opt = FALSE;
static int n_opt = -1;
-static attr_t show_attr;
+static chtype show_attr;
static chtype *temp_buffer;
static size_t temp_length;
@@ -207,7 +206,7 @@ ColOf(char *buffer, int length, int margin)
#define LEN(n) ((length - (n) > n_opt) ? n_opt : (length - (n)))
static void
-test_adds(int level)
+recursive_test(int level)
{
static bool first = TRUE;
@@ -233,7 +232,8 @@ test_adds(int level)
static char cmd[80];
setlocale(LC_ALL, "");
- putenv(strcpy(cmd, "TABSIZE=8"));
+ _nc_STRCPY(cmd, "TABSIZE=8", sizeof(cmd));
+ putenv(cmd);
initscr();
(void) cbreak(); /* take input chars one at a time, no wait for \n */
@@ -282,7 +282,7 @@ test_adds(int level)
doupdate();
if (has_colors()) {
- show_attr = (attr_t) COLOR_PAIR(1);
+ show_attr = (chtype) COLOR_PAIR(1);
wbkgdset(work, show_attr | ' ');
} else {
show_attr = A_STANDOUT;
@@ -292,7 +292,7 @@ test_adds(int level)
wmove(work, row, margin + 1);
switch (ch) {
case key_RECUR:
- test_adds(level + 1);
+ recursive_test(level + 1);
if (look)
touchwin(look);
@@ -512,7 +512,10 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
if (optind < argc)
usage();
- test_adds(0);
+ recursive_test(0);
endwin();
+#if NO_LEAKS
+ free(temp_buffer);
+#endif
ExitProgram(EXIT_SUCCESS);
}
diff --git a/test/test_addstr.c b/test/test_addstr.c
index a14cdedcc9e0..2bb1d02f6b18 100644
--- a/test/test_addstr.c
+++ b/test/test_addstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2009-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2009-2016,2017 Free 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,16 +26,18 @@
* authorization. *
****************************************************************************/
/*
- * $Id: test_addstr.c,v 1.10 2012/12/16 00:14:10 tom Exp $
+ * $Id: test_addstr.c,v 1.15 2017/09/06 09:27:34 tom Exp $
*
* Demonstrate the waddstr() and waddch functions.
* Thomas Dickey - 2009/9/12
*/
#include <test.priv.h>
-
#include <linedata.h>
+/*
+ * redefinitions to simplify comparison between test_*str programs
+ */
#define AddNStr addnstr
#define AddStr addstr
#define MvAddNStr (void) mvaddnstr
@@ -43,9 +45,6 @@
#define WAddNStr waddnstr
#define WAddStr waddstr
-#define AddCh addch
-#define WAddCh waddch
-
#define MY_TABSIZE 8
typedef enum {
@@ -129,7 +128,7 @@ ColOf(char *buffer, int length, int margin)
#define LEN(n) ((length - (n) > n_opt) ? n_opt : (length - (n)))
static void
-test_adds(int level)
+recursive_test(int level)
{
static bool first = TRUE;
@@ -155,7 +154,8 @@ test_adds(int level)
static char cmd[80];
setlocale(LC_ALL, "");
- putenv(strcpy(cmd, "TABSIZE=8"));
+ _nc_STRCPY(cmd, "TABSIZE=8", sizeof(cmd));
+ putenv(cmd);
initscr();
(void) cbreak(); /* take input chars one at a time, no wait for \n */
@@ -211,7 +211,7 @@ test_adds(int level)
wmove(work, row, margin + 1);
switch (ch) {
case key_RECUR:
- test_adds(level + 1);
+ recursive_test(level + 1);
if (look)
touchwin(look);
@@ -423,7 +423,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
if (optind < argc)
usage();
- test_adds(0);
+ recursive_test(0);
endwin();
ExitProgram(EXIT_SUCCESS);
}
diff --git a/test/test_addwstr.c b/test/test_addwstr.c
index cb057faf955a..75a100dd0266 100644
--- a/test/test_addwstr.c
+++ b/test/test_addwstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2009-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2009-2016,2017 Free 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: test_addwstr.c,v 1.11 2012/12/16 00:11:18 tom Exp $
+ * $Id: test_addwstr.c,v 1.16 2017/04/15 15:08:03 tom Exp $
*
* Demonstrate the waddwstr() and wadd_wch functions.
* Thomas Dickey - 2009/9/12
@@ -48,12 +48,16 @@
#define WIDE_LINEDATA
#include <linedata.h>
+#undef AddCh
#undef MvAddCh
#undef MvAddStr
#undef MvWAddCh
#undef MvWAddStr
+#undef WAddCh
-/* definitions to make it simpler to compare with inserts.c */
+/*
+ * redefinitions to simplify comparison between test_*str programs
+ */
#define AddNStr addnwstr
#define AddStr addwstr
#define MvAddNStr (void) mvaddnwstr
@@ -103,8 +107,7 @@ legend(WINDOW *win, int level, Options state, wchar_t *buffer, int length)
wprintw(win,
"down-arrow or ^N to repeat on next line, ^W for inner window, ESC to exit.\n");
wclrtoeol(win);
- wprintw(win, "Level %d,%s inserted %d characters <", level,
- showstate, length);
+ wprintw(win, "Level %d,%s added %d characters <", level, showstate, length);
waddwstr(win, buffer);
waddstr(win, ">");
}
@@ -137,7 +140,7 @@ ColOf(wchar_t *buffer, int length, int margin)
result += 2;
break;
default:
- result += wcwidth(ch);
+ result += wcwidth((wchar_t) ch);
if (ch < 32)
++result;
break;
@@ -218,7 +221,7 @@ AddCh(chtype ch)
#define LEN(n) ((length - (n) > n_opt) ? n_opt : (length - (n)))
static void
-test_inserts(int level)
+recursive_test(int level)
{
static bool first = TRUE;
@@ -233,15 +236,19 @@ test_inserts(int level)
WINDOW *work = 0;
WINDOW *show = 0;
int margin = (2 * MY_TABSIZE) - 1;
- Options option = (Options) ((int) (m_opt ? oMove : oDefault)
- | (int) ((w_opt || (level > 0))
- ? oWindow : oDefault));
+ Options option = (Options) ((unsigned) (m_opt
+ ? oMove
+ : oDefault)
+ | (unsigned) ((w_opt || (level > 0))
+ ? oWindow
+ : oDefault));
if (first) {
static char cmd[80];
setlocale(LC_ALL, "");
- putenv(strcpy(cmd, "TABSIZE=8"));
+ _nc_STRCPY(cmd, "TABSIZE=8", sizeof(cmd));
+ putenv(cmd);
initscr();
(void) cbreak(); /* take input chars one at a time, no wait for \n */
@@ -249,7 +256,7 @@ test_inserts(int level)
keypad(stdscr, TRUE);
/*
- * Show the characters inserted in color, to distinguish from those that
+ * Show the characters added in color, to distinguish from those that
* are shifted.
*/
if (has_colors()) {
@@ -297,7 +304,7 @@ test_inserts(int level)
wmove(work, row, margin + 1);
switch (ch) {
case key_RECUR:
- test_inserts(level + 1);
+ recursive_test(level + 1);
if (look)
touchwin(look);
@@ -367,7 +374,7 @@ test_inserts(int level)
break;
}
- /* do the corresponding single-character insertion */
+ /* do the corresponding single-character add */
row2 = limit + row;
for (col = 0; col < length; ++col) {
col2 = ColOf(buffer, col, margin);
@@ -398,7 +405,7 @@ test_inserts(int level)
ch = '\b';
/* FALLTHRU */
default:
- buffer[length++] = ch;
+ buffer[length++] = (wchar_t) ch;
buffer[length] = '\0';
/* put the string in, one character at a time */
@@ -422,7 +429,7 @@ test_inserts(int level)
break;
}
- /* do the corresponding single-character insertion */
+ /* do the corresponding single-character add */
switch (option) {
case oDefault:
if (move(limit + row, col) != ERR) {
@@ -463,12 +470,12 @@ usage(void)
{
static const char *tbl[] =
{
- "Usage: inserts [options]"
+ "Usage: test_addwstr [options]"
,""
,"Options:"
," -f FILE read data from given file"
- ," -n NUM limit string-inserts to NUM bytes on ^N replay"
- ," -m perform wmove/move separately from insert-functions"
+ ," -n NUM limit string-adds to NUM bytes on ^N replay"
+ ," -m perform wmove/move separately from add-functions"
," -w use window-parameter even when stdscr would be implied"
};
unsigned n;
@@ -508,7 +515,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
if (optind < argc)
usage();
- test_inserts(0);
+ recursive_test(0);
endwin();
ExitProgram(EXIT_SUCCESS);
}
diff --git a/test/test_arrays.c b/test/test_arrays.c
index e4b9fb1d391a..f051a815d875 100644
--- a/test/test_arrays.c
+++ b/test/test_arrays.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2007,2008 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2010,2017 Free 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: test_arrays.c,v 1.5 2010/11/13 19:57:57 tom Exp $
+ * $Id: test_arrays.c,v 1.8 2017/10/07 23:55:21 tom Exp $
*
* Author: Thomas E Dickey
*
@@ -50,7 +50,14 @@ extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[];
#if HAVE_TIGETSTR
#if defined(HAVE_CURSES_DATA_BOOLNAMES) || defined(DECL_CURSES_DATA_BOOLNAMES)
-#define DUMP(name) dump_array(#name, name)
+static bool opt_C;
+static bool opt_T;
+static bool opt_c;
+static bool opt_f;
+static bool opt_n;
+static bool opt_t;
+
+#define PLAIN(opts, name) if (opts) dump_array(#name, name)
static void
dump_array(const char *name, NCURSES_CONST char *const *list)
@@ -63,20 +70,139 @@ dump_array(const char *name, NCURSES_CONST char *const *list)
}
}
+static void
+dump_plain(void)
+{
+ PLAIN(opt_T && opt_n, boolnames);
+ PLAIN(opt_C && opt_c, boolcodes);
+ PLAIN(opt_T && opt_f, boolfnames);
+
+ PLAIN(opt_T && opt_n, numnames);
+ PLAIN(opt_C && opt_c, numcodes);
+ PLAIN(opt_T && opt_f, numfnames);
+
+ PLAIN(opt_T && opt_n, strnames);
+ PLAIN(opt_C && opt_c, strcodes);
+ PLAIN(opt_T && opt_f, strfnames);
+}
+
+#define STRING(opts, name) if (opts) { printf("%s\"%s\"", c++ ? "," : "", name); }
+#define NUMBER(opts, value) if (opts) { printf("%s%d", c++ ? "," : "", value); }
+
+static void
+dump_table(void)
+{
+ int c = 0;
+ int r;
+
+ STRING(opt_t, "Index");
+ STRING(opt_t, "Type");
+ STRING(opt_n, "Name");
+ STRING(opt_c, "Code");
+ STRING(opt_f, "FName");
+ printf("\n");
+
+ for (r = 0; boolnames[r]; ++r) {
+ c = 0;
+ NUMBER(opt_t, r);
+ STRING(opt_t, "bool");
+ STRING(opt_T && opt_n, boolnames[r]);
+ STRING(opt_C && opt_c, boolcodes[r]);
+ STRING(opt_T && opt_f, boolfnames[r]);
+ printf("\n");
+ }
+
+ for (r = 0; numnames[r]; ++r) {
+ c = 0;
+ NUMBER(opt_t, r);
+ STRING(opt_t, "num");
+ STRING(opt_T && opt_n, numnames[r]);
+ STRING(opt_C && opt_c, numcodes[r]);
+ STRING(opt_T && opt_f, numfnames[r]);
+ printf("\n");
+ }
+
+ for (r = 0; strnames[r]; ++r) {
+ c = 0;
+ NUMBER(opt_t, r);
+ STRING(opt_t, "str");
+ STRING(opt_T && opt_n, strnames[r]);
+ STRING(opt_C && opt_c, strcodes[r]);
+ STRING(opt_T && opt_f, strfnames[r]);
+ printf("\n");
+ }
+}
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: test_arrays [options]",
+ "",
+ "If no options are given, print all (boolean, numeric, string)",
+ "capability names showing their index within the tables.",
+ "",
+ "Options:",
+ " -C print termcap names",
+ " -T print terminfo names",
+ " -c print termcap names",
+ " -f print full terminfo names",
+ " -n print short terminfo names",
+ " -t print the result as CSV table",
+ };
+ unsigned n;
+ for (n = 0; n < SIZEOF(msg); ++n) {
+ fprintf(stderr, "%s\n", msg[n]);
+ }
+ ExitProgram(EXIT_FAILURE);
+}
+
int
-main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+main(int argc, char *argv[])
{
- DUMP(boolnames);
- DUMP(boolcodes);
- DUMP(boolfnames);
+ int n;
+
+ while ((n = getopt(argc, argv, "CTcfnt")) != -1) {
+ switch (n) {
+ case 'C':
+ opt_C = TRUE;
+ break;
+ case 'T':
+ opt_T = TRUE;
+ break;
+ case 'c':
+ opt_c = TRUE;
+ break;
+ case 'f':
+ opt_f = TRUE;
+ break;
+ case 'n':
+ opt_n = TRUE;
+ break;
+ case 't':
+ opt_t = TRUE;
+ break;
+ default:
+ usage();
+ /* NOTREACHED */
+ }
+ }
+ if (optind < argc)
+ usage();
- DUMP(numnames);
- DUMP(numcodes);
- DUMP(numfnames);
+ if (!(opt_T || opt_C)) {
+ opt_T = opt_C = TRUE;
+ }
+ if (!(opt_c || opt_f || opt_n)) {
+ opt_c = opt_f = opt_n = TRUE;
+ }
- DUMP(strnames);
- DUMP(strcodes);
- DUMP(strfnames);
+ if (opt_t) {
+ dump_table();
+ } else {
+ dump_plain();
+ }
ExitProgram(EXIT_SUCCESS);
}
diff --git a/test/test_get_wstr.c b/test/test_get_wstr.c
index dc01b0e69c07..f07c2e05d1ef 100644
--- a/test/test_get_wstr.c
+++ b/test/test_get_wstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2007-2009,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2011,2017 Free 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: test_get_wstr.c,v 1.8 2011/01/15 18:15:11 tom Exp $
+ * $Id: test_get_wstr.c,v 1.11 2017/09/28 23:10:54 tom Exp $
*
* Author: Thomas E Dickey
*
@@ -43,6 +43,7 @@
*/
#include <test.priv.h>
+#include <popup_msg.h>
#if HAVE_CHGAT
/* NetBSD curses wchgat */
@@ -79,14 +80,14 @@ Remainder(WINDOW *txtwin)
static void
ShowPrompt(WINDOW *txtwin, int limit)
{
- wchgat(txtwin, limit, A_REVERSE, 0, NULL);
+ wchgat(txtwin, limit, WA_REVERSE, 0, NULL);
wnoutrefresh(txtwin);
}
static void
MovePrompt(WINDOW *txtwin, int limit, int y, int x)
{
- wchgat(txtwin, Remainder(txtwin), A_NORMAL, 0, NULL);
+ wchgat(txtwin, Remainder(txtwin), WA_NORMAL, 0, NULL);
wmove(txtwin, y, x);
ShowPrompt(txtwin, limit);
}
@@ -134,8 +135,30 @@ ShowFlavor(WINDOW *strwin, WINDOW *txtwin, int flavor, int limit)
}
static int
-test_get_wstr(int level, char **argv, WINDOW *strwin)
+recursive_test(int level, char **argv, WINDOW *strwin)
{
+ static const char *help[] =
+ {
+ "Commands:",
+ " q,^Q,ESC - quit this program",
+ " ^Q,ESC - quit help-screen",
+ "",
+ " p,<Up> - move beginning of prompt one up row",
+ " j,<Down> - move beginning of prompt one down row",
+ " h,<Left> - move beginning of prompt one left column",
+ " l,<Right> - move beginning of prompt one right column",
+ "",
+ " - - reduce getnstr buffer-size one column",
+ " + - increase getnstr buffer-size one column",
+ " : - prompt for input-text",
+ "",
+ " < - scroll \"left\" through getstr-functions",
+ " > - scroll \"right\" through getstr-functions",
+ "",
+ " w - recur to subwindow",
+ " ?,<F1> - show help-screen",
+ 0
+ };
WINDOW *txtbox = 0;
WINDOW *txtwin = 0;
FILE *fp;
@@ -225,7 +248,7 @@ test_get_wstr(int level, char **argv, WINDOW *strwin)
break;
case 'w':
- test_get_wstr(level + 1, argv, strwin);
+ recursive_test(level + 1, argv, strwin);
if (txtbox != 0) {
touchwin(txtbox);
wnoutrefresh(txtbox);
@@ -311,10 +334,13 @@ test_get_wstr(int level, char **argv, WINDOW *strwin)
}
noecho();
(void) wattrset(txtwin, A_NORMAL);
- wprintw(strwin, "%d", rc);
+ wprintw(strwin, "%s:", (rc == OK) ? "OK" : "ERR");
(void) waddwstr(strwin, (wchar_t *) buffer);
wnoutrefresh(strwin);
break;
+ case HELP_KEY_1:
+ popup_msg(stdscr, help);
+ break;
default:
beep();
break;
@@ -349,7 +375,7 @@ main(int argc, char *argv[])
strwin = derwin(chrbox, 4, COLS - 2, 1, 1);
- test_get_wstr(1, argv, strwin);
+ recursive_test(1, argv, strwin);
endwin();
ExitProgram(EXIT_SUCCESS);
diff --git a/test/test_getstr.c b/test/test_getstr.c
index 3f64c77b4858..227394b1ef92 100644
--- a/test/test_getstr.c
+++ b/test/test_getstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2007-2009,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2012,2017 Free 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: test_getstr.c,v 1.10 2012/07/07 18:22:49 tom Exp $
+ * $Id: test_getstr.c,v 1.13 2017/09/28 23:11:12 tom Exp $
*
* Author: Thomas E Dickey
*
@@ -43,6 +43,7 @@
*/
#include <test.priv.h>
+#include <popup_msg.h>
#if HAVE_CHGAT
/* Solaris SVr4 curses lacks wchgat, mvgetnstr, mvwgetnstr */
@@ -86,14 +87,14 @@ Remainder(WINDOW *txtwin)
static void
ShowPrompt(WINDOW *txtwin, int limit)
{
- wchgat(txtwin, limit, A_REVERSE, 0, NULL);
+ wchgat(txtwin, limit, WA_REVERSE, 0, NULL);
wnoutrefresh(txtwin);
}
static void
MovePrompt(WINDOW *txtwin, int limit, int y, int x)
{
- wchgat(txtwin, Remainder(txtwin), A_NORMAL, 0, NULL);
+ wchgat(txtwin, Remainder(txtwin), WA_NORMAL, 0, NULL);
wmove(txtwin, y, x);
ShowPrompt(txtwin, limit);
}
@@ -141,8 +142,30 @@ ShowFlavor(WINDOW *strwin, WINDOW *txtwin, int flavor, int limit)
}
static int
-test_getstr(int level, char **argv, WINDOW *strwin)
+recursive_test(int level, char **argv, WINDOW *strwin)
{
+ static const char *help[] =
+ {
+ "Commands:",
+ " q,^Q,ESC - quit this program",
+ " ^Q,ESC - quit help-screen",
+ "",
+ " p,<Up> - move beginning of prompt one up row",
+ " j,<Down> - move beginning of prompt one down row",
+ " h,<Left> - move beginning of prompt one left column",
+ " l,<Right> - move beginning of prompt one right column",
+ "",
+ " - - reduce getnstr buffer-size one column",
+ " + - increase getnstr buffer-size one column",
+ " : - prompt for input-text",
+ "",
+ " < - scroll \"left\" through getstr-functions",
+ " > - scroll \"right\" through getstr-functions",
+ "",
+ " w - recur to subwindow",
+ " ?,<F1> - show help-screen",
+ 0
+ };
WINDOW *txtbox = 0;
WINDOW *txtwin = 0;
FILE *fp;
@@ -233,7 +256,7 @@ test_getstr(int level, char **argv, WINDOW *strwin)
break;
case 'w':
- test_getstr(level + 1, argv, strwin);
+ recursive_test(level + 1, argv, strwin);
if (txtbox != 0) {
touchwin(txtbox);
wnoutrefresh(txtbox);
@@ -322,6 +345,9 @@ test_getstr(int level, char **argv, WINDOW *strwin)
wprintw(strwin, "%s:%s", ok_keyname(rc), buffer);
wnoutrefresh(strwin);
break;
+ case HELP_KEY_1:
+ popup_msg(stdscr, help);
+ break;
default:
beep();
break;
@@ -356,7 +382,7 @@ main(int argc, char *argv[])
strwin = derwin(chrbox, 4, COLS - 2, 1, 1);
- test_getstr(1, argv, strwin);
+ recursive_test(1, argv, strwin);
endwin();
ExitProgram(EXIT_SUCCESS);
diff --git a/test/test_instr.c b/test/test_instr.c
index 627db08e2f3a..6dd16eb31abb 100644
--- a/test/test_instr.c
+++ b/test/test_instr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2010,2017 Free 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: test_instr.c,v 1.5 2010/05/01 19:13:46 tom Exp $
+ * $Id: test_instr.c,v 1.9 2017/09/06 09:27:45 tom Exp $
*
* Author: Thomas E Dickey
*
@@ -68,7 +68,7 @@ showmore(WINDOW *win, int line, char *buffer)
}
static int
-test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin)
+recursive_test(int level, char **argv, WINDOW *chrwin, WINDOW *strwin)
{
WINDOW *txtbox = 0;
WINDOW *txtwin = 0;
@@ -85,6 +85,7 @@ test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin)
return FALSE;
}
+ *buffer = '\0';
if (level > 1) {
txtbox = newwin(LINES - BASE_Y, COLS - level, BASE_Y, level);
box(txtbox, 0, 0);
@@ -150,7 +151,7 @@ test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin)
beep();
break;
case 'w':
- test_inchs(level + 1, argv, chrwin, strwin);
+ recursive_test(level + 1, argv, chrwin, strwin);
if (txtbox != 0) {
touchwin(txtbox);
wnoutrefresh(txtbox);
@@ -253,7 +254,7 @@ main(int argc, char *argv[])
chrwin = derwin(chrbox, 2, COLS - 2, 1, 1);
strwin = derwin(chrbox, 2, COLS - 2, 3, 1);
- test_inchs(1, argv, chrwin, strwin);
+ recursive_test(1, argv, chrwin, strwin);
endwin();
ExitProgram(EXIT_SUCCESS);
diff --git a/test/test_inwstr.c b/test/test_inwstr.c
index 3d2656f3aeae..5bd46c9a310f 100644
--- a/test/test_inwstr.c
+++ b/test/test_inwstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2010,2017 Free 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: test_inwstr.c,v 1.4 2010/05/01 19:13:46 tom Exp $
+ * $Id: test_inwstr.c,v 1.5 2017/04/15 14:14:48 tom Exp $
*
* Author: Thomas E Dickey
*
@@ -70,7 +70,7 @@ showmore(WINDOW *win, int line, wchar_t *buffer)
}
static int
-test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin)
+recursive_test(int level, char **argv, WINDOW *chrwin, WINDOW *strwin)
{
WINDOW *txtbox = 0;
WINDOW *txtwin = 0;
@@ -151,7 +151,7 @@ test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin)
beep();
break;
case 'w':
- test_inchs(level + 1, argv, chrwin, strwin);
+ recursive_test(level + 1, argv, chrwin, strwin);
if (txtbox != 0) {
touchwin(txtbox);
wnoutrefresh(txtbox);
@@ -254,7 +254,7 @@ main(int argc, char *argv[])
chrwin = derwin(chrbox, 2, COLS - 2, 1, 1);
strwin = derwin(chrbox, 2, COLS - 2, 3, 1);
- test_inchs(1, argv, chrwin, strwin);
+ recursive_test(1, argv, chrwin, strwin);
endwin();
ExitProgram(EXIT_SUCCESS);
diff --git a/test/test_setupterm.c b/test/test_setupterm.c
new file mode 100644
index 000000000000..bdf144823798
--- /dev/null
+++ b/test/test_setupterm.c
@@ -0,0 +1,215 @@
+/****************************************************************************
+ * Copyright (c) 2015,2016 Free 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
+ *
+ * $Id: test_setupterm.c,v 1.9 2016/06/18 23:54:35 tom Exp $
+ *
+ * A simple demo of setupterm/restartterm.
+ */
+#include <test.priv.h>
+
+#if HAVE_TIGETSTR
+
+static bool a_opt = FALSE;
+static bool f_opt = FALSE;
+static bool n_opt = FALSE;
+static bool r_opt = FALSE;
+
+static void
+test_rc(NCURSES_CONST char *name, int actual_rc, int actual_err)
+{
+ int expect_rc = -1;
+ int expect_err = -1;
+
+ if (name == 0)
+ name = getenv("TERM");
+ if (name == 0)
+ name = "?";
+
+ switch (*name) {
+ case 'v': /* vt100 is normal */
+ case 'd': /* dumb has no special flags */
+ expect_rc = 0;
+ expect_err = 1;
+ break;
+ case 'l': /* lpr is hardcopy */
+ expect_err = 1;
+ break;
+ case 'u': /* unknown is generic */
+ expect_err = 0;
+ break;
+ default:
+ break;
+ }
+ if (n_opt) {
+ expect_rc = -1;
+ expect_err = -1;
+ }
+ printf("%s",
+ ((actual_rc == expect_rc && actual_err == expect_err)
+ ? "OK"
+ : "ERR"));
+ printf(" '%s'", name);
+ if (actual_rc == expect_rc) {
+ printf(" rc=%d", actual_rc);
+ } else {
+ printf(" rc=%d (%d)", actual_rc, expect_rc);
+ }
+ if (actual_err == expect_err) {
+ printf(" err=%d", actual_err);
+ } else {
+ printf(" err=%d (%d)", actual_err, expect_err);
+ }
+ printf("\n");
+}
+
+static void
+test_setupterm(NCURSES_CONST char *name)
+{
+ int rc;
+ int err = -99;
+
+#if HAVE_RESTARTTERM
+ if (r_opt)
+ rc = restartterm(name, 0, f_opt ? NULL : &err);
+ else
+#endif
+ rc = setupterm(name, 0, f_opt ? NULL : &err);
+ test_rc(name, rc, err);
+}
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: test_setupterm [options] [terminal]",
+ "",
+ "Demonstrate error-checking for setupterm and restartterm.",
+ "",
+ "Options:",
+ " -a automatic test for each success/error code",
+ " -f treat errors as fatal",
+ " -n set environment to disable terminfo database, assuming",
+ " the compiled-in paths for database also fail",
+#if HAVE_RESTARTTERM
+ " -r test restartterm rather than setupterm",
+#endif
+ };
+ unsigned n;
+ for (n = 0; n < SIZEOF(msg); ++n) {
+ fprintf(stderr, "%s\n", msg[n]);
+ }
+ ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc, char *argv[])
+{
+ int n;
+
+ while ((n = getopt(argc, argv, "afnr")) != -1) {
+ switch (n) {
+ case 'a':
+ a_opt = TRUE;
+ break;
+ case 'f':
+ f_opt = TRUE;
+ break;
+ case 'n':
+ n_opt = TRUE;
+ break;
+#if HAVE_RESTARTTERM
+ case 'r':
+ r_opt = TRUE;
+ break;
+#endif
+ default:
+ usage();
+ break;
+ }
+ }
+
+ if (n_opt) {
+ static char none[][25] =
+ {
+ "HOME=/GUI",
+ "TERMINFO=/GUI",
+ "TERMINFO_DIRS=/GUI"
+ };
+ /*
+ * We can turn this off, but not on again, because ncurses caches the
+ * directory locations.
+ */
+ printf("** without database\n");
+ for (n = 0; n < 3; ++n)
+ putenv(none[n]);
+ } else {
+ printf("** with database\n");
+ }
+
+ /*
+ * The restartterm relies on an existing screen, so we make one here.
+ */
+ if (r_opt) {
+ newterm("ansi", stdout, stdin);
+ reset_shell_mode();
+ }
+
+ if (a_opt) {
+ static char predef[][9] =
+ {"vt100", "dumb", "lpr", "unknown", "none-such"};
+ if (optind < argc) {
+ usage();
+ }
+ for (n = 0; n < 4; ++n) {
+ test_setupterm(predef[n]);
+ }
+ } else {
+ if (optind < argc) {
+ for (n = optind; n < argc; ++n) {
+ test_setupterm(argv[n]);
+ }
+ } else {
+ test_setupterm(NULL);
+ }
+ }
+
+ ExitProgram(EXIT_SUCCESS);
+}
+
+#else /* !HAVE_TIGETSTR */
+int
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+{
+ printf("This program requires the terminfo functions such as tigetstr\n");
+ ExitProgram(EXIT_FAILURE);
+}
+#endif /* HAVE_TIGETSTR */
diff --git a/test/test_sgr.c b/test/test_sgr.c
new file mode 100644
index 000000000000..71811140f635
--- /dev/null
+++ b/test/test_sgr.c
@@ -0,0 +1,383 @@
+/****************************************************************************
+ * Copyright (c) 2015-2017,2019 Free 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
+ *
+ * $Id: test_sgr.c,v 1.14 2019/08/17 21:36:44 tom Exp $
+ *
+ * A simple demo of the sgr/sgr0 terminal capabilities.
+ */
+#define USE_TINFO
+#include <test.priv.h>
+
+#if !HAVE_TIGETSTR
+static void failed(const char *) GCC_NORETURN;
+
+static void
+failed(const char *msg)
+{
+ fprintf(stderr, "%s\n", msg);
+ ExitProgram(EXIT_FAILURE);
+}
+#endif
+
+#if HAVE_TIGETSTR
+
+static bool no_init = FALSE;
+static bool q_opt = FALSE;
+
+static char *d_opt;
+static char *e_opt;
+static char **db_list;
+static int db_item;
+
+static long total_values;
+
+static char *
+make_dbitem(char *p, char *q)
+{
+ size_t need = strlen(e_opt) + 2 + (size_t) (p - q);
+ char *result = malloc(need);
+ _nc_SPRINTF(result, _nc_SLIMIT(need) "%s=%.*s", e_opt, (int) (p - q), q);
+ return result;
+}
+
+static void
+make_dblist(void)
+{
+ if (d_opt && e_opt) {
+ int pass;
+
+ for (pass = 0; pass < 2; ++pass) {
+ char *p, *q;
+ size_t count = 0;
+
+ for (p = q = d_opt; *p != '\0'; ++p) {
+ if (*p == ':') {
+ if (p != q + 1) {
+ if (pass) {
+ db_list[count] = make_dbitem(p, q);
+ }
+ count++;
+ }
+ q = p + 1;
+ }
+ }
+ if (p != q + 1) {
+ if (pass) {
+ db_list[count] = make_dbitem(p, q);
+ }
+ count++;
+ }
+ if (!pass) {
+ db_list = typeCalloc(char *, count + 1);
+ }
+ }
+ }
+}
+
+static char *
+next_dbitem(void)
+{
+ char *result = 0;
+
+ if (db_list) {
+ if ((result = db_list[db_item]) == 0) {
+ db_item = 0;
+ result = db_list[0];
+ } else {
+ db_item++;
+ }
+ }
+ printf("** %s\n", result);
+ return result;
+}
+
+#if NO_LEAKS
+static void
+free_dblist(void)
+{
+ if (db_list) {
+ int n;
+ for (n = 0; db_list[n]; ++n)
+ free(db_list[n]);
+ free(db_list);
+ db_list = 0;
+ }
+}
+#endif
+
+#define MAXPAR 9
+#define MAXSGR (1 << MAXPAR)
+#define BITS2P(n) (count & (1 << (n - 1)))
+#define MASK_SMSO (1 << 0)
+#define MASK_BOLD (1 << 5)
+#define MASK_REV (1 << 2)
+
+static void
+dumpit(unsigned bits, unsigned ignore, const char *sgr, const char *sgr0)
+{
+ static const char sample[] = "abcdefghijklm";
+ static char params[] = "SURBDBIPA";
+ unsigned n;
+
+ printf("%4u ", bits);
+ bits &= ~ignore;
+ for (n = 0; n < MAXPAR; ++n) {
+ putchar((int) ((bits & (unsigned) (1 << n)) ? params[n] : '-'));
+ }
+ putchar(' ');
+ putp(sgr);
+ putp(sample);
+ putp(sgr0);
+ putchar('\n');
+}
+
+static bool
+one_bit(unsigned a, unsigned b)
+{
+ unsigned c = (a ^ b);
+ bool result = FALSE;
+ if (c) {
+ while (!(c & 1)) {
+ c >>= 1;
+ }
+ result = (c == 1);
+ }
+ return result;
+}
+
+static void
+brute_force(const char *name)
+{
+ unsigned count;
+ char *my_sgr;
+ char *my_sgr0;
+ char *my_bold;
+ char *my_revs;
+ char *my_smso;
+ char *my_name = strdup(name);
+
+ if (db_list) {
+ putenv(next_dbitem());
+ }
+
+ if (!q_opt)
+ printf("Terminal type \"%s\"\n", my_name);
+
+ if (no_init) {
+ START_TRACE();
+ } else {
+ setupterm((NCURSES_CONST char *) my_name, 1, (int *) 0);
+ }
+
+ if (!q_opt) {
+ if (strcmp(my_name, ttytype))
+ printf("... actual \"%s\"\n", ttytype);
+ }
+
+ my_sgr = tigetstr("sgr");
+ my_sgr0 = tigetstr("sgr0");
+ my_bold = tigetstr("bold");
+ my_revs = tigetstr("rev");
+ my_smso = tigetstr("smso");
+
+ if (!VALID_STRING(my_sgr)) {
+ fprintf(stderr, "no \"sgr\" capability found\n");
+ } else if (!VALID_STRING(my_sgr0)) {
+ fprintf(stderr, "no \"sgr0\" capability found\n");
+ } else {
+ char *values[MAXSGR + MAXPAR];
+ unsigned j;
+ unsigned ignore = 0;
+ unsigned reason = 0;
+ unsigned repeat = 0;
+ for (count = 0; count < MAXSGR; ++count) {
+ values[count] = tparm(my_sgr,
+ BITS2P(1),
+ BITS2P(2),
+ BITS2P(3),
+ BITS2P(4),
+ BITS2P(5),
+ BITS2P(6),
+ BITS2P(7),
+ BITS2P(8),
+ BITS2P(9));
+ if (values[count] != 0) {
+ values[count] = strdup(values[count]);
+ }
+ }
+ for (count = 0; count < MAXSGR; ++count) {
+ if (values[count] != 0) {
+ for (j = count + 1; j < MAXSGR; ++j) {
+ if (values[j] == 0)
+ continue;
+ if (strcmp(values[count], values[j]))
+ continue;
+ if (one_bit(count, j)) {
+ free(values[j]);
+ values[j] = 0;
+ }
+ }
+ }
+ }
+ for (j = 0; j < MAXPAR; ++j) {
+ unsigned mask = (unsigned) (1 << j);
+ for (count = 0; count < MAXSGR; ++count) {
+ if ((count & mask) != 0)
+ continue;
+ if (values[count] != 0 && values[count + mask] != 0) {
+ mask = 0;
+ break;
+ }
+ }
+ ignore |= mask;
+ }
+ /* smso is tested first, but often duplicates bold or reverse. */
+ if (VALID_STRING(my_smso)) {
+ if (VALID_STRING(my_bold) && !strcmp(my_bold, my_smso)) {
+ repeat |= MASK_SMSO;
+ reason = MASK_BOLD;
+ }
+ if (VALID_STRING(my_revs) && !strcmp(my_revs, my_smso)) {
+ repeat |= MASK_SMSO;
+ reason = MASK_REV;
+ }
+ }
+ for (count = 0; count < MAXSGR; ++count) {
+ if (values[count] != 0) {
+ bool found = FALSE;
+ if ((repeat & MASK_SMSO) != 0
+ && (count & MASK_SMSO) != 0) {
+ found = TRUE;
+ } else {
+ for (j = 0; j < count; ++j) {
+ if (values[j] != 0 && !strcmp(values[j], values[count])) {
+ if ((repeat & MASK_SMSO) != 0
+ && (j & MASK_SMSO) != 0
+ && (count & reason) != 0) {
+ continue;
+ }
+ found = TRUE;
+ break;
+ }
+ }
+ }
+ if (!found) {
+ dumpit(count, ignore, values[count], my_sgr0);
+ ++total_values;
+ }
+ }
+ }
+ for (count = 0; count < MAXSGR; ++count) {
+ free(values[count]);
+ }
+ }
+ free(my_name);
+ del_curterm(cur_term);
+}
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: test_sgr [options] [terminal]",
+ "",
+ "Print all distinct combinations of sgr capability.",
+ "",
+ "Options:",
+ " -d LIST colon-separated list of databases to use",
+ " -e NAME environment variable to set with -d option",
+ " -n do not initialize terminal, to test error-checking",
+ " -q quiet (prints only counts)",
+ };
+ unsigned n;
+ for (n = 0; n < SIZEOF(msg); ++n) {
+ fprintf(stderr, "%s\n", msg[n]);
+ }
+ ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc, char *argv[])
+{
+ int n;
+ char *name;
+
+ while ((n = getopt(argc, argv, "d:e:nq")) != -1) {
+ switch (n) {
+ case 'd':
+ d_opt = optarg;
+ break;
+ case 'e':
+ e_opt = optarg;
+ break;
+ case 'n':
+ no_init = TRUE;
+ break;
+ case 'q':
+ q_opt = TRUE;
+ break;
+ default:
+ usage();
+ break;
+ }
+ }
+
+ make_dblist();
+
+ if (optind < argc) {
+ for (n = optind; n < argc; ++n) {
+ brute_force(argv[n]);
+ }
+ } else if ((name = getenv("TERM")) != 0) {
+ brute_force(name);
+ } else {
+ static char dumb[] = "dumb";
+ brute_force(dumb);
+ }
+
+ printf("%ld distinct values\n", total_values);
+
+#if NO_LEAKS
+ free_dblist();
+#endif
+
+ ExitProgram(EXIT_SUCCESS);
+}
+
+#else /* !HAVE_TIGETSTR */
+int
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+{
+ failed("This program requires the terminfo functions such as tigetstr");
+ ExitProgram(EXIT_FAILURE);
+}
+#endif /* HAVE_TIGETSTR */
diff --git a/test/test_termattrs.c b/test/test_termattrs.c
new file mode 100644
index 000000000000..398bbcd86c9f
--- /dev/null
+++ b/test/test_termattrs.c
@@ -0,0 +1,199 @@
+/****************************************************************************
+ * Copyright (c) 2017 Free 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: test_termattrs.c,v 1.2 2017/10/11 08:16:02 tom Exp $
+ *
+ * Demonstrate the termattrs and term_attrs functions.
+ */
+
+#define USE_TINFO
+#include <test.priv.h>
+
+#if HAVE_SETUPTERM
+
+static FILE *my_fp;
+
+static void
+test_termattrs(unsigned long value)
+{
+#define DATA(name) { name, #name }
+ static struct {
+ unsigned long code;
+ const char *name;
+ } table[] = {
+#ifdef A_ATTRIBUTES
+ DATA(A_ATTRIBUTES),
+#endif
+#ifdef A_CHARTEXT
+ DATA(A_CHARTEXT),
+#endif
+#ifdef A_COLOR
+ DATA(A_COLOR),
+#endif
+#ifdef A_STANDOUT
+ DATA(A_STANDOUT),
+#endif
+#ifdef A_UNDERLINE
+ DATA(A_UNDERLINE),
+#endif
+#ifdef A_REVERSE
+ DATA(A_REVERSE),
+#endif
+#ifdef A_BLINK
+ DATA(A_BLINK),
+#endif
+#ifdef A_DIM
+ DATA(A_DIM),
+#endif
+#ifdef A_BOLD
+ DATA(A_BOLD),
+#endif
+#ifdef A_ALTCHARSET
+ DATA(A_ALTCHARSET),
+#endif
+#ifdef A_INVIS
+ DATA(A_INVIS),
+#endif
+#ifdef A_PROTECT
+ DATA(A_PROTECT),
+#endif
+#ifdef A_HORIZONTAL
+ DATA(A_HORIZONTAL),
+#endif
+#ifdef A_LEFT
+ DATA(A_LEFT),
+#endif
+#ifdef A_LOW
+ DATA(A_LOW),
+#endif
+#ifdef A_RIGHT
+ DATA(A_RIGHT),
+#endif
+#ifdef A_TOP
+ DATA(A_TOP),
+#endif
+#ifdef A_VERTICAL
+ DATA(A_VERTICAL),
+#endif
+#ifdef A_ITALIC
+ DATA(A_ITALIC),
+#endif
+ };
+ size_t n;
+ fprintf(my_fp, "Result: %08lX\r\n", value);
+ for (n = 0; n < SIZEOF(table); ++n) {
+ if ((value & table[n].code) != 0) {
+ fprintf(my_fp, "%08lX %08lX %s\r\n",
+ table[n].code, value & table[n].code, table[n].name);
+ }
+ };
+ fputs("\r\n", my_fp);
+}
+
+static void
+usage(void)
+{
+ static const char *tbl[] =
+ {
+ "Usage: test_termattrs [options]"
+ ,""
+ ,"Options:"
+ ," -e use stderr (default stdout)"
+ ," -n do not initialize terminal"
+ ," -s use setupterm rather than newterm"
+#if USE_WIDEC_SUPPORT
+ ," -w use term_attrs rather than termattrs"
+#endif
+ };
+ unsigned n;
+ for (n = 0; n < SIZEOF(tbl); ++n)
+ fprintf(stderr, "%s\n", tbl[n]);
+ ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+{
+ int ch;
+ bool no_init = FALSE;
+ bool s_opt = FALSE;
+#if USE_WIDEC_SUPPORT
+ bool w_opt = FALSE;
+#endif
+
+ my_fp = stdout;
+
+ while ((ch = getopt(argc, argv, "ensw")) != -1) {
+ switch (ch) {
+ case 'e':
+ my_fp = stderr;
+ break;
+ case 'n':
+ no_init = TRUE;
+ break;
+ case 's':
+ s_opt = TRUE;
+ break;
+#if USE_WIDEC_SUPPORT
+ case 'w':
+ w_opt = TRUE;
+ break;
+#endif
+ default:
+ usage();
+ break;
+ }
+ }
+ if (optind < argc)
+ usage();
+
+ if (no_init) {
+ START_TRACE();
+ } else if (s_opt) {
+ setupterm((char *) 0, fileno(my_fp), (int *) 0);
+ } else {
+ newterm((char *) 0, my_fp, stdin);
+ }
+#if USE_WIDEC_SUPPORT
+ if (w_opt)
+ test_termattrs((unsigned long) term_attrs());
+ else
+#endif
+ test_termattrs((unsigned long) termattrs());
+ ExitProgram(EXIT_SUCCESS);
+}
+
+#else
+int
+main(int argc GCC_UNUSED,
+ char *argv[]GCC_UNUSED)
+{
+ fprintf(stderr, "This program requires terminfo\n");
+ exit(EXIT_FAILURE);
+}
+#endif
diff --git a/test/test_vid_puts.c b/test/test_vid_puts.c
index 6c8bc36a7886..463e59576ba6 100644
--- a/test/test_vid_puts.c
+++ b/test/test_vid_puts.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2013-2014,2017 Free 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: test_vid_puts.c,v 1.5 2013/09/28 22:42:29 tom Exp $
+ * $Id: test_vid_puts.c,v 1.10 2017/10/11 08:16:24 tom Exp $
*
* Demonstrate the vid_puts and vid_attr functions.
* Thomas Dickey - 2013/01/12
@@ -35,9 +35,7 @@
#define USE_TINFO
#include <test.priv.h>
-#if USE_WIDEC_SUPPORT && HAVE_SETUPTERM
-
-#define valid(s) ((s != 0) && s != (char *)-1)
+#if USE_WIDEC_SUPPORT && HAVE_SETUPTERM && HAVE_VID_PUTS
static FILE *my_fp;
static bool p_opt = FALSE;
@@ -54,7 +52,7 @@ TPUTS_PROTO(outc, c)
static bool
outs(const char *s)
{
- if (valid(s)) {
+ if (VALID_STRING(s)) {
tputs(s, 1, outc);
return TRUE;
}
@@ -64,10 +62,12 @@ outs(const char *s)
static void
cleanup(void)
{
- outs(exit_attribute_mode);
- if (!outs(orig_colors))
- outs(orig_pair);
- outs(cursor_normal);
+ if (cur_term != 0) {
+ outs(exit_attribute_mode);
+ if (!outs(orig_colors))
+ outs(orig_pair);
+ outs(cursor_normal);
+ }
}
static void
@@ -101,6 +101,7 @@ usage(void)
,""
,"Options:"
," -e use stderr (default stdout)"
+ ," -n do not initialize terminal"
," -p use vid_puts (default vid_attr)"
};
unsigned n;
@@ -113,14 +114,18 @@ int
main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
{
int ch;
+ bool no_init = FALSE;
my_fp = stdout;
- while ((ch = getopt(argc, argv, "ep")) != -1) {
+ while ((ch = getopt(argc, argv, "enp")) != -1) {
switch (ch) {
case 'e':
my_fp = stderr;
break;
+ case 'n':
+ no_init = TRUE;
+ break;
case 'p':
p_opt = TRUE;
break;
@@ -132,7 +137,11 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
if (optind < argc)
usage();
- setupterm((char *) 0, 1, (int *) 0);
+ if (no_init) {
+ START_TRACE();
+ } else {
+ setupterm((char *) 0, fileno(my_fp), (int *) 0);
+ }
test_vid_puts();
cleanup();
ExitProgram(EXIT_SUCCESS);
diff --git a/test/test_vidputs.c b/test/test_vidputs.c
index 2215fa91a38f..3cf004768bba 100644
--- a/test/test_vidputs.c
+++ b/test/test_vidputs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2013 Free Software Foundation, Inc. *
+ * Copyright (c) 2013-2014,2017 Free 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: test_vidputs.c,v 1.4 2013/09/28 22:45:21 tom Exp $
+ * $Id: test_vidputs.c,v 1.9 2017/10/11 08:17:07 tom Exp $
*
* Demonstrate the vidputs and vidattr functions.
* Thomas Dickey - 2013/01/12
@@ -35,9 +35,7 @@
#define USE_TINFO
#include <test.priv.h>
-#if HAVE_SETUPTERM
-
-#define valid(s) ((s != 0) && s != (char *)-1)
+#if HAVE_SETUPTERM && HAVE_VIDPUTS
static FILE *my_fp;
static bool p_opt = FALSE;
@@ -54,7 +52,7 @@ TPUTS_PROTO(outc, c)
static bool
outs(const char *s)
{
- if (valid(s)) {
+ if (VALID_STRING(s)) {
tputs(s, 1, outc);
return TRUE;
}
@@ -64,10 +62,12 @@ outs(const char *s)
static void
cleanup(void)
{
- outs(exit_attribute_mode);
- if (!outs(orig_colors))
- outs(orig_pair);
- outs(cursor_normal);
+ if (cur_term != 0) {
+ outs(exit_attribute_mode);
+ if (!outs(orig_colors))
+ outs(orig_pair);
+ outs(cursor_normal);
+ }
}
static void
@@ -101,6 +101,7 @@ usage(void)
,""
,"Options:"
," -e use stderr (default stdout)"
+ ," -n do not initialize terminal"
," -p use vidputs (default vidattr)"
};
unsigned n;
@@ -113,14 +114,18 @@ int
main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
{
int ch;
+ bool no_init = FALSE;
my_fp = stdout;
- while ((ch = getopt(argc, argv, "ep")) != -1) {
+ while ((ch = getopt(argc, argv, "enp")) != -1) {
switch (ch) {
case 'e':
my_fp = stderr;
break;
+ case 'n':
+ no_init = TRUE;
+ break;
case 'p':
p_opt = TRUE;
break;
@@ -132,11 +137,16 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
if (optind < argc)
usage();
- setupterm((char *) 0, 1, (int *) 0);
+ if (no_init) {
+ START_TRACE();
+ } else {
+ setupterm((char *) 0, fileno(my_fp), (int *) 0);
+ }
test_vidputs();
cleanup();
ExitProgram(EXIT_SUCCESS);
}
+
#else
int
main(int argc GCC_UNUSED,
diff --git a/test/testaddch.c b/test/testaddch.c
index f0a476e10e41..ccadab80f4a1 100644
--- a/test/testaddch.c
+++ b/test/testaddch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free 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 @@
* This is an example written by Alexander V. Lukyanov <lav@yars.free.net>,
* to demonstrate an inconsistency between ncurses and SVr4 curses.
*
- * $Id: testaddch.c,v 1.9 2013/01/13 01:02:41 tom Exp $
+ * $Id: testaddch.c,v 1.12 2014/08/02 23:11:20 tom Exp $
*/
#include <test.priv.h>
@@ -66,18 +66,18 @@ main(
attr = (chtype) ((i & 4) ? COLOR_PAIR(4) : 0);
bkgdset(back);
- (void) attrset(set);
+ (void) attrset(AttrArg(set, 0));
attr_addstr("Test string with spaces -> <-\n", attr);
}
addch('\n');
for (i = 0; i < 8; i++) {
- back = (i & 1) ? (A_BOLD | 'B' | COLOR_PAIR(1)) : ' ';
- set = (i & 2) ? (A_REVERSE | COLOR_PAIR(2)) : 0;
- attr = (chtype) ((i & 4) ? COLOR_PAIR(4) : 0);
+ back = (i & 1) ? (A_BOLD | 'B' | (chtype) COLOR_PAIR(1)) : ' ';
+ set = (i & 2) ? (A_REVERSE | (chtype) COLOR_PAIR(2)) : 0;
+ attr = (chtype) ((i & 4) ? (chtype) COLOR_PAIR(4) : 0);
bkgdset(back);
- (void) attrset(set);
+ (void) attrset(AttrArg(set, 0));
attr_addstr("Test string with spaces -> <-\n", attr);
}
diff --git a/test/testcurs.c b/test/testcurs.c
index c1268981e051..f9762b0b328a 100644
--- a/test/testcurs.c
+++ b/test/testcurs.c
@@ -6,13 +6,13 @@
* wrs(5/28/93) -- modified to be consistent (perform identically) with either
* PDCurses or under Unix System V, R4
*
- * $Id: testcurs.c,v 1.48 2013/05/18 22:05:06 tom Exp $
+ * $Id: testcurs.c,v 1.55 2019/12/14 23:25:29 tom Exp $
*/
#include <test.priv.h>
#if defined(XCURSES)
-char *XCursesProgramName = "testcurs";
+const char *XCursesProgramName = "testcurs";
#endif
static int initTest(WINDOW **);
@@ -20,127 +20,16 @@ static void display_menu(int, int);
static void inputTest(WINDOW *);
static void introTest(WINDOW *);
static void outputTest(WINDOW *);
+#if HAVE_NEWPAD
static void padTest(WINDOW *);
+#endif
static void scrollTest(WINDOW *);
#if defined(PDCURSES) && !defined(XCURSES)
static void resizeTest(WINDOW *);
#endif
-struct commands {
- NCURSES_CONST char *text;
- void (*function) (WINDOW *);
-};
-typedef struct commands COMMAND;
-
-static const COMMAND command[] =
-{
- {"General Test", introTest},
- {"Pad Test", padTest},
-#if defined(PDCURSES) && !defined(XCURSES)
- {"Resize Test", resizeTest},
-#endif
- {"Scroll Test", scrollTest},
- {"Input Test", inputTest},
- {"Output Test", outputTest}
-};
-#define MAX_OPTIONS (int) SIZEOF(command)
-
static int width, height;
-int
-main(
- int argc GCC_UNUSED,
- char *argv[]GCC_UNUSED)
-{
- WINDOW *win;
- int key;
- int old_option = (-1);
- int new_option = 0;
- bool quit = FALSE;
- int n;
-
- setlocale(LC_ALL, "");
-
-#ifdef PDCDEBUG
- PDC_debug("testcurs started\n");
-#endif
- if (!initTest(&win))
- ExitProgram(EXIT_FAILURE);
-
- erase();
- display_menu(old_option, new_option);
- for (;;) {
-#ifdef A_COLOR
- if (has_colors()) {
- init_pair(1, COLOR_WHITE, COLOR_BLUE);
- wbkgd(win, (chtype) COLOR_PAIR(1));
- } else
- wbkgd(win, A_REVERSE);
-#else
- wbkgd(win, A_REVERSE);
-#endif
- werase(win);
-
- noecho();
- keypad(stdscr, TRUE);
- raw();
- key = getch();
- if (key < KEY_MIN && key > 0 && isalpha(key)) {
- if (islower(key))
- key = toupper(key);
- for (n = 0; n < MAX_OPTIONS; ++n) {
- if (key == command[n].text[0]) {
- display_menu(old_option, new_option = n);
- key = ' ';
- break;
- }
- }
- }
- 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:
- beep();
- break;
- case ' ':
- break;
- }
- if (quit == TRUE)
- break;
- }
-
- delwin(win);
-
- endwin();
-#ifdef XCURSES
- XCursesExit();
-#endif
- ExitProgram(EXIT_SUCCESS);
-}
-
static void
Continue(WINDOW *win)
{
@@ -170,7 +59,7 @@ initTest(WINDOW **win)
PDC_debug("initTest called\n");
#endif
#ifdef TRACE
- trace(TRACE_MAXIMUM);
+ curses_trace(TRACE_MAXIMUM);
#endif
initscr();
#ifdef PDCDEBUG
@@ -184,7 +73,7 @@ initTest(WINDOW **win)
height = 13; /* Create a drawing window */
*win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2);
if (*win == NULL) {
- endwin();
+ stop_curses();
return 0;
}
return 1;
@@ -286,7 +175,7 @@ inputTest(WINDOW *win)
#ifdef A_COLOR
if (has_colors()) {
init_pair(2, COLOR_WHITE, COLOR_RED);
- wbkgd(subWin, COLOR_PAIR(2) | A_BOLD);
+ wbkgd(subWin, (chtype) COLOR_PAIR(2) | A_BOLD);
} else
wbkgd(subWin, A_BOLD);
#else
@@ -437,7 +326,7 @@ inputTest(WINDOW *win)
"%d %[][a-zA-Z]s",
"%d %[^0-9]"
};
- const char *format = fmt[(unsigned) repeat % SIZEOF(fmt)];
+ char *format = strdup(fmt[(unsigned) repeat % SIZEOF(fmt)]);
wclear(win);
MvWAddStr(win, 3, 2, "The window should have moved");
@@ -453,12 +342,13 @@ inputTest(WINDOW *win)
noraw();
num = 0;
*buffer = 0;
- answered = mvwscanw(win, 7, 6, strdup(format), &num, buffer);
+ answered = mvwscanw(win, 7, 6, format, &num, buffer);
MvWPrintw(win, 8, 6,
"String: %s Number: %d (%d values read)",
buffer, num, answered);
Continue(win);
++repeat;
+ free(format);
} while (answered > 0);
}
@@ -667,7 +557,7 @@ resizeTest(WINDOW *dummy GCC_UNUSED)
win1 = newwin(10, 50, 14, 25);
if (win1 == NULL) {
- endwin();
+ stop_curses();
return;
}
#ifdef A_COLOR
@@ -695,6 +585,7 @@ resizeTest(WINDOW *dummy GCC_UNUSED)
}
#endif
+#if HAVE_NEWPAD
static void
padTest(WINDOW *dummy GCC_UNUSED)
{
@@ -735,6 +626,28 @@ padTest(WINDOW *dummy GCC_UNUSED)
delwin(pad);
}
}
+#endif /* HAVE_NEWPAD */
+
+struct commands {
+ NCURSES_CONST char *text;
+ void (*function) (WINDOW *);
+};
+typedef struct commands COMMAND;
+
+static const COMMAND command[] =
+{
+ {"General Test", introTest},
+#if HAVE_NEWPAD
+ {"Pad Test", padTest},
+#endif
+#if defined(PDCURSES) && !defined(XCURSES)
+ {"Resize Test", resizeTest},
+#endif
+ {"Scroll Test", scrollTest},
+ {"Input Test", inputTest},
+ {"Output Test", outputTest}
+};
+#define MAX_OPTIONS (int) SIZEOF(command)
static void
display_menu(int old_option, int new_option)
@@ -759,3 +672,97 @@ display_menu(int old_option, int new_option)
"Use Up and Down Arrows to select - Enter to run - Q to quit");
refresh();
}
+
+int
+main(
+ int argc GCC_UNUSED,
+ char *argv[]GCC_UNUSED)
+{
+ WINDOW *win;
+ int key;
+ int old_option = (-1);
+ int new_option = 0;
+ bool quit = FALSE;
+ int n;
+
+ setlocale(LC_ALL, "");
+
+#ifdef PDCDEBUG
+ PDC_debug("testcurs started\n");
+#endif
+ if (!initTest(&win))
+ ExitProgram(EXIT_FAILURE);
+
+ erase();
+ display_menu(old_option, new_option);
+ for (;;) {
+#ifdef A_COLOR
+ if (has_colors()) {
+ init_pair(1, COLOR_WHITE, COLOR_BLUE);
+ wbkgd(win, (chtype) COLOR_PAIR(1));
+ } else
+ wbkgd(win, A_REVERSE);
+#else
+ wbkgd(win, A_REVERSE);
+#endif
+ werase(win);
+
+ noecho();
+ keypad(stdscr, TRUE);
+ raw();
+ key = getch();
+ if (key < KEY_MIN && key > 0 && isalpha(key)) {
+ if (islower(key))
+ key = toupper(key);
+ for (n = 0; n < MAX_OPTIONS; ++n) {
+ if (key == command[n].text[0]) {
+ display_menu(old_option, new_option = n);
+ key = ' ';
+ break;
+ }
+ }
+ }
+ 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:
+ beep();
+ break;
+ case ' ':
+ break;
+ }
+ if (quit == TRUE)
+ break;
+ }
+
+ delwin(win);
+
+ stop_curses();
+#ifdef XCURSES
+ XCursesExit();
+#endif
+ ExitProgram(EXIT_SUCCESS);
+}
diff --git a/test/testscanw.c b/test/testscanw.c
index 79589c20386d..96758f14e2fd 100644
--- a/test/testscanw.c
+++ b/test/testscanw.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2002,2006 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2006,2019 Free 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 @@
* Date: 1997/03/17
* From: bayern@morpheus.cis.yale.edu
*
- * $Id: testscanw.c,v 1.11 2006/04/01 19:08:03 tom Exp $
+ * $Id: testscanw.c,v 1.12 2019/12/07 18:07:04 tom Exp $
*/
#include <test.priv.h>
@@ -47,7 +47,7 @@ main(int argc, char *argv[])
echo();
#if 0
- trace(TRACE_UPDATE | TRACE_CALLS);
+ curses_trace(TRACE_UPDATE | TRACE_CALLS);
#endif
while (argc > 1) {
if (isdigit(UChar(*argv[1])))
diff --git a/test/tput-colorcube b/test/tput-colorcube
new file mode 100755
index 000000000000..480ff92ee77e
--- /dev/null
+++ b/test/tput-colorcube
@@ -0,0 +1,130 @@
+#!/bin/sh
+##############################################################################
+# Copyright (c) 2016 Free Software Foundation, Inc. #
+# #
+# Permission is hereby granted, free of charge, to any person obtaining a #
+# copy of this software and associated documentation files (the "Software"), #
+# to deal in the Software without restriction, including without limitation #
+# the rights to use, copy, modify, merge, publish, distribute, distribute #
+# with modifications, sublicense, and/or sell copies of the Software, and to #
+# permit persons to whom the Software is furnished to do so, subject to the #
+# following conditions: #
+# #
+# The above copyright notice and this permission notice shall be included in #
+# all copies or substantial portions of the Software. #
+# #
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL #
+# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING #
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER #
+# DEALINGS IN THE SOFTWARE. #
+# #
+# Except as contained in this notice, the name(s) of the above copyright #
+# holders shall not be used in advertising or otherwise to promote the sale, #
+# use or other dealings in this Software without prior written #
+# authorization. #
+##############################################################################
+# $Id: tput-colorcube,v 1.1 2016/12/17 23:37:37 tom Exp $
+# Use this script to print an xterm-style color cube, e.g., as done in
+# the xterm 88colors2.pl and 256colors2.pl scripts.
+
+failed() {
+ printf "?? $*\n" >&2
+ exit 1
+}
+
+newline() {
+ tput op
+ printf "\n"
+}
+
+if [ $# = 1 ]
+then
+ myterm=$1
+elif [ $# = 0 ]
+then
+ myterm=$TERM
+else
+ failed "expected one parameter or none"
+fi
+
+colors=$(tput -T $myterm colors 2>/dev/null)
+if [ ${colors:-0} -le 0 ]
+then
+ myterm=${myterm%%-color}
+ colors=$(tput -T $myterm colors 2>/dev/null)
+fi
+if [ ${colors:-0} -le 0 ]
+then
+ failed "terminal $myterm does not support color"
+fi
+
+printf "System colors:\n"
+
+color=0
+inrow=$colors
+to_do=$colors
+[ $colors -gt 256 ] && colors=256
+[ $inrow -gt 8 ] && inrow=8
+[ $to_do -gt 16 ] && to_do=16
+while [ $color -lt $to_do ]
+do
+ [ $color = $inrow ] && newline
+ tput setab $color
+ printf ' '
+ color=$(expr $color + 1)
+done
+newline
+
+[ $colors -le 16 ] && exit
+
+if [ $colors = 256 ]
+then
+ cube=6
+ ramp=232
+elif [ $colors -ge 88 ]
+then
+ cube=4
+ ramp=80
+else
+ exit
+fi
+
+printf "\n"
+printf "Color cube, ${cube}x${cube}x${cube}:\n"
+g=0
+cube2=$(expr $cube \* $cube)
+while [ $g -lt $cube ]
+do
+ r=0
+ while [ $r -lt $cube ]
+ do
+ b=0
+ while [ $b -lt $cube ]
+ do
+ color=$(expr 16 + \( $r \* $cube2 \) + \( $g \* $cube \) + $b)
+ tput setab $color
+ printf ' '
+ b=$(expr $b + 1)
+ done
+ tput op
+ printf ' '
+ r=$(expr $r + 1)
+ done
+ newline
+ g=$(expr $g + 1)
+done
+
+printf "\n"
+printf "Grayscale ramp:\n"
+color=$ramp
+while [ $color -lt $colors ]
+do
+ tput setab $color
+ printf ' '
+ color=$(expr $color + 1)
+done
+newline
+# vi:ts=4 sw=4
diff --git a/test/tput-initc b/test/tput-initc
new file mode 100755
index 000000000000..d4dfddc0afdc
--- /dev/null
+++ b/test/tput-initc
@@ -0,0 +1,155 @@
+#!/bin/sh
+##############################################################################
+# Copyright (c) 2016 Free Software Foundation, Inc. #
+# #
+# Permission is hereby granted, free of charge, to any person obtaining a #
+# copy of this software and associated documentation files (the "Software"), #
+# to deal in the Software without restriction, including without limitation #
+# the rights to use, copy, modify, merge, publish, distribute, distribute #
+# with modifications, sublicense, and/or sell copies of the Software, and to #
+# permit persons to whom the Software is furnished to do so, subject to the #
+# following conditions: #
+# #
+# The above copyright notice and this permission notice shall be included in #
+# all copies or substantial portions of the Software. #
+# #
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL #
+# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING #
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER #
+# DEALINGS IN THE SOFTWARE. #
+# #
+# Except as contained in this notice, the name(s) of the above copyright #
+# holders shall not be used in advertising or otherwise to promote the sale, #
+# use or other dealings in this Software without prior written #
+# authorization. #
+##############################################################################
+# $Id: tput-initc,v 1.5 2016/12/17 22:35:05 tom Exp $
+# Some of the ".dat" files in ncurses' test-directory give r/g/b numbers for
+# default palettes of xterm and Linux console. This script reads the numbers
+# and (assuming the same or compatible terminal) uses tput to (re)initialize
+# the palette using those numbers.
+
+failed() {
+ printf "?? $*\n" >&2
+ exit 1
+}
+
+usage() {
+ cat >&2 <<-EOF
+ usage: $0 [-r] [-s] [palette-data]
+
+ Use this script with a palette data-file to (re)initialize colors with
+ tput. This script assumes arrangements for 16-, 88- and 256-colors
+ like the xterm 88colors2.pl and 256colors2.pl scripts.
+
+ Options:
+ -r reverse palette
+ -s reverse system colors (first 16 if more than 16 colors)
+EOF
+ exit 1
+}
+
+opt_r=no
+opt_s=no
+
+while getopts "rs" option "$@"
+do
+ case $option in
+ (r)
+ opt_r=yes
+ ;;
+ (s)
+ opt_s=yes
+ ;;
+ (*)
+ usage
+ ;;
+ esac
+done
+shift $(expr $OPTIND - 1)
+
+if [ $# = 1 ]
+then
+ file=$1
+elif [ $# = 0 ]
+then
+ file=$TERM.dat
+else
+ failed "expected one parameter or none"
+fi
+
+if [ ! -f "$file" ]
+then
+ if [ -f "$file.dat" ]
+ then
+ file="$file.dat"
+ else
+ failed "no such file: $file"
+ fi
+fi
+
+myterm=${file%%.dat}
+colors=$(tput -T $myterm colors 2>/dev/null)
+if [ ${colors:-0} -le 0 ]
+then
+ myterm=${myterm%%-color}
+ colors=$(tput -T $myterm colors 2>/dev/null)
+fi
+if [ ${colors:-0} -le 0 ]
+then
+ failed "terminal $myterm does not support color"
+fi
+
+cat $file |\
+awk -v opt_r=$opt_r \
+ -v opt_s=$opt_s \
+ -v colors=$colors \
+ -v myterm=$myterm '
+BEGIN {
+ limit = 1000;
+ range = -1;
+ cramp = -1;
+ if ( colors == 88 ) {
+ cramp = 80;
+ } else if ( colors = 256 ) {
+ cramp = 232;
+ }
+}
+function scaled(n) {
+ return (n * 1000)/limit;
+}
+
+/^scale:[0-9]+/{
+ sub("^scale:","",$0);
+ limit = $0;
+}
+
+/^[0-9]+:/{
+ sub(":","",$1);
+ item = $1 + 0;
+ if (range < item) {
+ range = item;
+ }
+ params[$1] = sprintf ("%d %d %d", scaled($2),scaled($3),scaled($4));
+}
+END {
+ for (n = 0; n <= range; ++n) {
+ m = n;
+ if ( opt_r == "yes" ) {
+ if ( colors <= 16 ) {
+ m = range - n;
+ } else if ( ( opt_s == "yes" ) && ( n < 16 ) ) {
+ m = 15 - n;
+ } else if ( n >= cramp ) {
+ m = cramp + colors - 1 - n;
+ } else {
+ m = 16 + cramp - 1 - n;
+ }
+ }
+ printf "tput -T%s initc %d %s\n", myterm, m, params[n];
+ }
+}
+' |sh -
diff --git a/test/tracemunch b/test/tracemunch
index 1ea6f4b69022..cc33852dc5cc 100755
--- a/test/tracemunch
+++ b/test/tracemunch
@@ -1,7 +1,7 @@
-#!/usr/bin/perl -w
-# $Id: tracemunch,v 1.6 2005/03/12 21:48:23 tom Exp $
+#!/usr/bin/env perl
+# $Id: tracemunch,v 1.26 2019/12/21 22:33:35 tom Exp $
##############################################################################
-# Copyright (c) 1998-2002,2005 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2018,2019 Free 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"), #
@@ -32,130 +32,557 @@
# The error logs produced by ncurses with tracing enabled can be very tedious
# to wade through. This script helps by compacting runs of log lines that
# can be conveniently expressed as higher-level operations.
+
use strict;
+use warnings;
+
+our $putattr =
+ 'PutAttrChar\(\{\{ ' . "'(.)'"
+ . ' = 0[0-7]+ \}\}\) at \(([0-9]+), ([0-9]+)\)';
+our $waddnstr =
+ 'waddnstr\(0x([[:xdigit:]]+),"([^\"]+)",[0-9]+\) called \{A_NORMAL\}';
-our $putattr="PutAttrChar\\({{ '(.)' = 0[0-7]+ }}\\) at \\(([0-9]+), ([0-9]+)\\)";
-our $waddnstr="waddnstr\\(0x([0-9a-f]+),\"([^\"]+)\",[0-9]+\\) called {A_NORMAL}";
+# If the trace is complete, we can infer addresses using the return value from
+# newwin, etc. But if it is incomplete, we can still check for special cases
+# such as SCREEN* and WINDOW* parameters. In this table, the type for the
+# first parameter is encoded, relying upon an ncurses programming convention:
+# 1 = SCREEN*
+# 2 = WINDOW*
+# 4 = TERMINAL*
+our %known_p1 = qw(
+ TransformLine 1
+ _nc_freewin 2
+ _nc_initscr 1
+ _nc_makenew 1
+ _nc_mingw_console_read 1
+ _nc_reset_colors 1
+ _nc_scroll_optimize 1
+ _nc_tinfo 1
+ _nc_tinfo_mvcur 1
+ _nc_wgetch 2
+ adjust_window 2
+ assume_default_colors 1
+ attr_get 2
+ baudrate 1
+ beep 1
+ border_set 2
+ box 2
+ box_set 2
+ can_change_color 1
+ cbreak 1
+ clearok 2
+ color_content 1
+ copywin 2
+ curs_set 1
+ decrease_size 1
+ def_prog_mode 1
+ def_shell_mode 1
+ define_key 1
+ del_curterm 1
+ delay_output 1
+ delscreen 1
+ delwin 2
+ derwin 2
+ doupdate 1
+ dupwin 2
+ echo 1
+ endwin 1
+ erasechar 1
+ filter 1
+ flash 1
+ flushinp 1
+ getattrs 2
+ getbegx 2
+ getbegy 2
+ getbkgd 2
+ getcurx 2
+ getcury 2
+ getmaxx 2
+ getmaxy 2
+ getmouse 1
+ getparx 2
+ getpary 2
+ halfdelay 1
+ has_ic 1
+ has_il 1
+ has_key 1
+ idcok 2
+ idlok 2
+ immedok 2
+ increase_size 1
+ init_color 1
+ init_pair 1
+ intrflush 1
+ is_cleared 2
+ is_idcok 2
+ is_idlok 2
+ is_immedok 2
+ is_keypad 2
+ is_leaveok 2
+ is_linetouched 2
+ is_nodelay 2
+ is_notimeout 2
+ is_pad 2
+ is_scrollok 2
+ is_subwin 2
+ is_syncok 2
+ is_term_resized 1
+ is_wintouched 2
+ key_defined 1
+ keybound 1
+ keyok 1
+ keypad 2
+ killchar 1
+ leaveok 2
+ longname 1
+ meta 2
+ mouseinterval 1
+ mousemask 1
+ mvcur 1
+ mvderwin 2
+ mvwadd_wch 2
+ mvwadd_wchnstr 2
+ mvwadd_wchstr 2
+ mvwaddch 2
+ mvwaddchnstr 2
+ mvwaddchstr 2
+ mvwaddnstr 2
+ mvwaddnwstr 2
+ mvwaddstr 2
+ mvwaddwstr 2
+ mvwchgat 2
+ mvwdelch 2
+ mvwget_wch 2
+ mvwget_wstr 2
+ mvwgetch 2
+ mvwgetn_wstr 2
+ mvwgetnstr 2
+ mvwgetstr 2
+ mvwhline 2
+ mvwhline_set 2
+ mvwin 2
+ mvwin_wch 2
+ mvwin_wchnstr 2
+ mvwin_wchstr 2
+ mvwinch 2
+ mvwinchnstr 2
+ mvwinchstr 2
+ mvwins_nwstr 2
+ mvwins_wch 2
+ mvwins_wstr 2
+ mvwinsch 2
+ mvwinsnstr 2
+ mvwinsstr 2
+ mvwinstr 2
+ mvwinwstr 2
+ mvwvline 2
+ mvwvline_set 2
+ newpad 1
+ newterm 1
+ newwin 1
+ nl 1
+ nocbreak 1
+ nodelay 2
+ noecho 1
+ nofilter 1
+ nonl 1
+ noqiflush 1
+ noraw 1
+ notimeout 2
+ overlap 2
+ overlay 2
+ overwrite 2
+ pair_content 1
+ pecho_wchar 2
+ pechochar 2
+ pnoutrefresh 2
+ putwin 2
+ qiflush 1
+ raw 1
+ redrawwin 2
+ reset_prog_mode 1
+ reset_shell_mode 1
+ resetty 1
+ resize_term 1
+ resizeterm 1
+ restartterm 1
+ ripoffline 1
+ savetty 1
+ scr_init 1
+ scr_restore 1
+ scr_set 1
+ scroll 2
+ scrollok 2
+ set_curterm 4
+ set_term 1
+ slk_attr 1
+ slk_attr_set 1
+ slk_attroff 1
+ slk_attron 1
+ slk_attrset 1
+ slk_clear 1
+ slk_color 1
+ slk_init 1
+ slk_label 1
+ slk_noutrefresh 1
+ slk_refresh 1
+ slk_restore 1
+ slk_set 1
+ slk_touch 1
+ start_color 1
+ subwin 2
+ syncok 2
+ termattrs 1
+ termname 1
+ tgetflag 1
+ tgetnum 1
+ tigetflag 1
+ tigetnum 1
+ tigetstr 1
+ tinfo 1
+ touchline 2
+ touchwin 2
+ typeahead 1
+ unget_wch 1
+ ungetch 1
+ ungetmouse 1
+ untouchwin 2
+ use_default_colors 1
+ use_env 1
+ use_legacy_coding 1
+ use_screen 1
+ use_tioctl 1
+ use_window 2
+ vidattr 1
+ vidputs 1
+ vw_printw 2
+ vwprintw 2
+ wadd_wch 2
+ wadd_wchnstr 2
+ wadd_wchstr 2
+ waddch 2
+ waddchnstr 2
+ waddchstr 2
+ waddnstr 2
+ waddnwstr 2
+ waddstr 2
+ waddwstr 2
+ wattr_get 2
+ wattr_off 2
+ wattr_on 2
+ wattr_set 2
+ wattroff 2
+ wattron 2
+ wattrset 2
+ wbkgd 2
+ wbkgdset 2
+ wborder 2
+ wborder_set 2
+ wchgat 2
+ wclear 2
+ wclrtobot 2
+ wclrtoeol 2
+ wcolor_set 2
+ wcursyncup 2
+ wdelch 2
+ wdeleteln 2
+ wechochar 2
+ wenclose 2
+ werase 2
+ wget_wch 2
+ wget_wstr 2
+ wgetbkgrnd 2
+ wgetch 2
+ wgetch_events 2
+ wgetdelay 2
+ wgetn_wstr 2
+ wgetnstr 2
+ wgetparent 2
+ wgetscrreg 2
+ wgetstr 2
+ whline 2
+ whline_set 2
+ win_wch 2
+ win_wchnstr 2
+ win_wchstr 2
+ winch 2
+ winchnstr 2
+ winchstr 2
+ winnstr 2
+ winnwstr 2
+ wins_nwstr 2
+ wins_wch 2
+ wins_wstr 2
+ winsch 2
+ winsdelln 2
+ winsertln 2
+ winsnstr 2
+ winsstr 2
+ winstr 2
+ winwstr 2
+ wmouse_trafo 2
+ wmove 2
+ wnoutrefresh 2
+ wprintw 2
+ wredrawln 2
+ wrefresh 2
+ wresize 2
+ wscrl 2
+ wsetscrreg 2
+ wstandend 2
+ wstandout 2
+ wsyncdown 2
+ wsyncup 2
+ wtimeout 2
+ wtouchln 2
+ wvline 2
+);
-our $win_nums=0;
-our $curscr="";
-our $newscr="";
-our $stdscr="";
-our @win_addr;
+our $scr_nums = 0;
+our $thr_nums = 0;
+our $trm_nums = 0;
+our $try_nums = 0;
+our $win_nums = 0;
+our $curscr = "";
+our $newscr = "";
+our $stdscr = "";
+our %scr_addr;
+our %thr_addr;
+our %trm_addr;
+our %try_addr;
+our %win_addr;
+
+sub has_addr($) {
+ my $value = shift;
+ my $result = 0;
+ $result = 1 if ( $value =~ /\b0x[[:xdigit:]]+\b/i );
+ return $result;
+}
-sub transaddr
-{
+sub transaddr($) {
+ my $arg = shift;
my $n;
- my $arg = $_[0];
- $arg =~ s/$curscr/curscr/g if ($curscr);
- $arg =~ s/$newscr/newscr/g if ($newscr);
- $arg =~ s/$stdscr/stdscr/g if ($stdscr);
- for $n (0..$#win_addr) {
- $arg =~ s/$win_addr[$n]/window$n/g if $win_addr[$n];
+ $arg =~ s/\b$curscr\b/curscr/g if ($curscr);
+ $arg =~ s/\b$newscr\b/newscr/g if ($newscr);
+ $arg =~ s/\b$stdscr\b/stdscr/g if ($stdscr);
+ if ( &has_addr($arg) ) {
+ foreach my $addr ( keys %scr_addr ) {
+ $n = $scr_addr{$addr};
+ $arg =~ s/\b$addr\b/screen$n/g if ( defined $n );
+ }
+ }
+ if ( &has_addr($arg) ) {
+ foreach my $addr ( keys %thr_addr ) {
+ $n = $thr_addr{$addr};
+ $arg =~ s/\b$addr\b/thread$n/g if ( defined $n );
+ }
+ }
+ if ( &has_addr($arg) ) {
+ foreach my $addr ( keys %trm_addr ) {
+ $n = $trm_addr{$addr};
+ $arg =~ s/\b$addr\b/terminal$n/g if ( defined $n );
+ }
+ }
+ if ( &has_addr($arg) ) {
+ foreach my $addr ( keys %try_addr ) {
+ $n = $try_addr{$addr};
+ $arg =~ s/\b$addr\b/tries_$n/g if ( defined $n );
+ }
+ }
+ if ( &has_addr($arg) ) {
+ foreach my $addr ( keys %win_addr ) {
+ $n = $win_addr{$addr};
+ $arg =~ s/\b$addr\b/window$n/g if ( defined $n );
+ }
+ }
+ if ( &has_addr($arg) ) {
+ if ( $arg =~ /add_wch\((window\d+,)?0x[[:xdigit:]]+\)/i ) {
+ $arg =~ s/(0x[[:xdigit:]]+)[)]/\&wch)/i;
+ }
+ elsif (
+ $arg =~ /color_content\((screen\d+,)?\d+(,0x[[:xdigit:]]+){3}/i )
+ {
+ $arg =~ s/(,0x[[:xdigit:]]+){3}[)]/,\&r,\&g,\&b)/i;
+ }
+ elsif ( $arg =~ /pair_content\((screen\d+,)?\d+(,0x[[:xdigit:]]+){2}/i )
+ {
+ $arg =~ s/(,0x[[:xdigit:]]+){2}[)]/,\&fg,\&bg)/i;
+ }
+ }
+ if ( &has_addr($arg) and $arg =~ /called\s+\{/ ) {
+ my $func = $arg;
+ chomp $func;
+ $func =~ s/^.*called\s+\{([[:alnum:]_]+)\(.*$/$1/;
+ if ( defined $known_p1{$func} ) {
+ my $addr = $arg;
+ my $type = $known_p1{$func};
+ chomp $addr;
+ $addr =~ s/^[^(]+\((0x[[:xdigit:]]+).*/$1/i;
+ if ( $type == 1 ) {
+ $scr_addr{$addr} = ++$scr_nums;
+ $arg = &transaddr($arg);
+ }
+ elsif ( $type == 2 ) {
+ $win_addr{$addr} = ++$win_nums;
+ $arg = &transaddr($arg);
+ }
+ elsif ( $type == 4 ) {
+ $trm_addr{$addr} = ++$trm_nums;
+ $arg = &transaddr($arg);
+ }
+ }
}
return $arg;
}
-while (<STDIN>)
-{
- my $addr;
- my $n;
- my $awaiting;
-
-CLASSIFY: {
- # Transform window pointer addresses so it's easier to compare logs
- $awaiting = "curscr" if ($_ =~ /creating curscr/);
- $awaiting = "newscr" if ($_ =~ /creating newscr/);
- $awaiting = "stdscr" if ($_ =~ /creating stdscr/);
- if ($_ =~ /^create :window 0x([0-9a-f]+)/) {
- $addr = "0x$1";
- if ($awaiting eq "curscr") {
- $curscr = $addr;
- } elsif ($awaiting eq "newscr") {
- $newscr = $addr;
- } elsif ($awaiting eq "stdscr") {
- $stdscr = $addr;
- } else {
- $win_addr[$win_nums] = $addr;
- $win_nums = $win_nums + 1;
- }
- $awaiting = "";
- } elsif ($_ =~ /^\.\.\.deleted win=0x([0-9a-f]+)/) {
- $addr = "0x$1";
- $_ = &transaddr($_);
- if ($addr eq $curscr) {
- $curscr = "";
- } elsif ($addr eq $newscr) {
- $newscr = "";
- } elsif ($addr eq $stdscr) {
- $stdscr = "";
- } else {
- for $n (0..$#win_addr) {
- if ($win_addr[$n] eq $addr) {
- $win_addr[$n] = "";
- }
- }
- }
- }
-
- # Compactify runs of PutAttrChar calls (TR_CHARPUT)
- if ($_ =~ /$putattr/)
- {
- my $putattr_chars = $1;
- my $starty = $2;
- my $startx = $3;
- while (<STDIN>)
- {
- if ($_ =~ /$putattr/) {
- $putattr_chars .= $1;
- } else {
- last;
- }
- }
- print "RUN of PutAttrChar()s: \"$putattr_chars\" from ${starty}, ${startx}\n";
- redo CLASSIFY;
- }
-
- # Compactify runs of waddnstr calls (TR_CALLS)
- if ($_ =~ /$waddnstr/)
- {
- my $waddnstr_chars = $2;
- my $winaddr = $1;
- while (<STDIN>)
- {
- if ($_ =~ /$waddnstr/ && $1 eq $winaddr) {
- $waddnstr_chars .= $2;
- } else {
- last;
- }
- }
- my $winaddstr = &transaddr($winaddr);
- print "RUN of waddnstr()s: $winaddr, \"$waddnstr_chars\"\n";
- redo CLASSIFY;
- }
-
- # More transformations can go here
-
- # Repeated runs of anything
- my $anyline = &transaddr($_);
- my $repeatcount = 1;
- while (<STDIN>) {
- if (&transaddr($_) eq $anyline) {
- $repeatcount++;
- } else {
- last;
- }
- }
- if ($repeatcount > 1) {
- print "${repeatcount} REPEATS OF $anyline";
- } else {
- print $anyline
- }
- redo CLASSIFY if $_;
-
- } # :CLASSIFY
+sub muncher($) {
+ my $STDIN = shift;
+
+ while (<$STDIN>) {
+ my $addr;
+ my $n;
+ my $awaiting = "";
+
+ CLASSIFY: {
+
+ # just in case someone tries a file with cr/lf line-endings:
+ $_ =~ s/\r\n/\n/g;
+ $_ =~ s/\r/\n/g;
+
+ my $thread = "";
+ if ( $_ =~ /^(0x[[:xdigit:]]+):/ ) {
+ $thr_addr{$1} = ++$thr_nums unless defined $thr_addr{$1};
+ $thread = "thread" . $thr_addr{$1} . ":";
+ $_ =~ s/^[^:]*://;
+ }
+
+ # Transform window pointer addresses so it's easier to compare logs
+ $awaiting = "curscr" if ( $_ =~ /creating curscr/ );
+ $awaiting = "newscr" if ( $_ =~ /creating newscr/ );
+ $awaiting = "stdscr" if ( $_ =~ /creating stdscr/ );
+ $awaiting = "screen" if ( $_ =~ /^(\+ )*called \{new_prescr\(\)/ );
+ if ( $_ =~ /^create :window 0x([[:xdigit:]]+)/ ) {
+ $addr = "0x$1";
+ if ( $awaiting eq "curscr" ) {
+ $curscr = $addr;
+ }
+ elsif ( $awaiting eq "newscr" ) {
+ $newscr = $addr;
+ }
+ elsif ( $awaiting eq "stdscr" ) {
+ $stdscr = $addr;
+ }
+ else {
+ $win_addr{$addr} = $win_nums++;
+ }
+ $awaiting = "";
+ }
+ elsif ( $_ =~ /^(\+ )*called \{set_curterm\((0x[[:xdigit:]]+)\)/ ) {
+ $trm_addr{$2} = ++$trm_nums unless defined $trm_addr{$2};
+ }
+ elsif ( $_ =~ /^(\+ )*called \{_nc_add_to_try\((0x[[:xdigit:]]+),/ )
+ {
+ $try_addr{$2} = ++$try_nums unless defined $try_addr{$2};
+ }
+ elsif ( $_ =~ /^(\+ )*_nc_alloc_screen_sp 0x([[:xdigit:]]+)/ ) {
+ $addr = "0x$2";
+ $scr_addr{$addr} = ++$scr_nums unless ( $scr_addr{$addr} );
+ $awaiting = "";
+ }
+ elsif ( $_ =~ /^(\+ )*return }0x([[:xdigit:]]+)/ ) {
+ $addr = "0x$2";
+ if ( $awaiting eq "screen" ) {
+ $scr_addr{$addr} = ++$scr_nums unless ( $scr_addr{$addr} );
+ }
+ }
+ elsif ( $_ =~ /^\.\.\.deleted win=0x([[:xdigit:]]+)/ ) {
+ $addr = "0x$1";
+ $_ = &transaddr($_);
+ if ( $addr eq $curscr ) {
+ $curscr = "";
+ }
+ elsif ( $addr eq $newscr ) {
+ $newscr = "";
+ }
+ elsif ( $addr eq $stdscr ) {
+ $stdscr = "";
+ }
+ else {
+ undef $win_addr{$addr};
+ }
+ }
+
+ # Compactify runs of PutAttrChar calls (TR_CHARPUT)
+ if ( $_ =~ /$putattr/ ) {
+ my $putattr_chars = $1;
+ my $starty = $2;
+ my $startx = $3;
+ while (<$STDIN>) {
+ if ( $_ =~ /$putattr/ ) {
+ $putattr_chars .= $1;
+ }
+ else {
+ last;
+ }
+ }
+ print
+"RUN of PutAttrChar()s: \"$putattr_chars\" from ${starty}, ${startx}\n";
+ redo CLASSIFY;
+ }
+
+ # Compactify runs of waddnstr calls (TR_CALLS)
+ if ( $_ =~ /$waddnstr/ ) {
+ my $waddnstr_chars = $2;
+ my $winaddr = $1;
+ while (<$STDIN>) {
+ if ( $_ =~ /$waddnstr/ && $1 eq $winaddr ) {
+ $waddnstr_chars .= $2;
+ }
+ else {
+ last;
+ }
+ }
+ my $winaddstr = &transaddr($winaddr);
+ print "RUN of waddnstr()s: $winaddr, \"$waddnstr_chars\"\n";
+ redo CLASSIFY;
+ }
+
+ # More transformations can go here
+
+ # Repeated runs of anything
+ my $anyline = &transaddr($_);
+ my $repeatcount = 1;
+ while (<$STDIN>) {
+ if ( &transaddr($_) eq $anyline ) {
+ $repeatcount++;
+ }
+ else {
+ last;
+ }
+ }
+ if ( $repeatcount > 1 ) {
+ print "${repeatcount} REPEATS OF $anyline";
+ }
+ else {
+ print $thread . $anyline;
+ }
+ redo CLASSIFY if $_;
+
+ } # :CLASSIFY
+ }
+}
+
+if ( $#ARGV >= 0 ) {
+ while ( $#ARGV >= 0 ) {
+ my $file = shift @ARGV;
+ open my $ifh, "<", $file or die $!;
+ &muncher($ifh);
+ }
+}
+else {
+ &muncher( \*STDIN );
}
# tracemunch ends here
diff --git a/test/view.c b/test/view.c
index 4782d8509748..eb7786e1a36d 100644
--- a/test/view.c
+++ b/test/view.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2019 Free 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,8 @@
*
* modified by Thomas Dickey <dickey@clark.net> July 1995 to demonstrate
* the use of 'resizeterm()', and May 2000 to illustrate wide-character
- * handling.
+ * handling. This program intentionally does not use pads, to allow testing
+ * with less-capable implementations of curses.
*
* Takes a filename argument. It's a simple file-viewer with various
* scroll-up and scroll-down commands.
@@ -50,55 +51,19 @@
* scroll operation worked, and the refresh() code only had to do a
* partial repaint.
*
- * $Id: view.c,v 1.94 2013/09/28 21:58:42 tom Exp $
+ * $Id: view.c,v 1.137 2019/12/07 19:03:07 tom Exp $
*/
#include <test.priv.h>
#include <widechars.h>
+#include <popup_msg.h>
+#include <sys/stat.h>
#include <time.h>
-#undef CTRL /* conflict on AIX 5.2 with <sys/ioctl.h> */
-
-#if HAVE_TERMIOS_H
-# include <termios.h>
-#else
-#if !defined(__MINGW32__)
-# include <sgtty.h>
-#endif
-#endif
-
-#if !defined(sun) || !HAVE_TERMIOS_H
-# if HAVE_SYS_IOCTL_H
-# include <sys/ioctl.h>
-# endif
-#endif
-
-#define my_pair 1
-
-/* This is needed to compile 'struct winsize' */
-#if NEED_PTEM_H
-#include <sys/stream.h>
-#include <sys/ptem.h>
-#endif
-
-#undef CTRL
-#define CTRL(x) ((x) & 0x1f)
-
static void finish(int sig) GCC_NORETURN;
-static void show_all(const char *tag);
-
-#if defined(SIGWINCH) && defined(TIOCGWINSZ) && HAVE_RESIZE_TERM
-#define CAN_RESIZE 1
-#else
-#define CAN_RESIZE 0
-#endif
-#if CAN_RESIZE
-static void adjust(int sig);
-static int interrupted;
-static bool waiting = FALSE;
-#endif
+#define my_pair 1
static int shift = 0;
static bool try_color = FALSE;
@@ -108,36 +73,22 @@ static NCURSES_CH_T **vec_lines;
static NCURSES_CH_T **lptr;
static int num_lines;
+#if USE_WIDEC_SUPPORT
+static bool n_option = FALSE;
+#endif
+
static void usage(void) GCC_NORETURN;
static void
-usage(void)
+failed(const char *msg)
{
- static const char *msg[] =
- {
- "Usage: view [options] file"
- ,""
- ,"Options:"
- ," -c use color if terminal supports it"
- ," -i ignore INT, QUIT, TERM signals"
- ," -n NUM specify maximum number of lines (default 1000)"
-#if defined(KEY_RESIZE)
- ," -r use old-style sigwinch handler rather than KEY_RESIZE"
-#endif
- ," -s start in single-step mode, waiting for input"
-#ifdef TRACE
- ," -t trace screen updates"
- ," -T NUM specify trace mask"
-#endif
- };
- size_t n;
- for (n = 0; n < SIZEOF(msg); n++)
- fprintf(stderr, "%s\n", msg[n]);
+ endwin();
+ fprintf(stderr, "%s\n", msg);
ExitProgram(EXIT_FAILURE);
}
static int
-ch_len(NCURSES_CH_T * src)
+ch_len(NCURSES_CH_T *src)
{
int result = 0;
#if USE_WIDEC_SUPPORT
@@ -147,7 +98,8 @@ ch_len(NCURSES_CH_T * src)
#if USE_WIDEC_SUPPORT
for (;;) {
TEST_CCHAR(src, count, {
- ++result;
+ int len = wcwidth(test_wch[0]);
+ result += (len > 0) ? len : 1;
++src;
}
, {
@@ -161,110 +113,334 @@ ch_len(NCURSES_CH_T * src)
return result;
}
-/*
- * Allocate a string into an array of chtype's. If UTF-8 mode is
- * active, translate the string accordingly.
- */
-static NCURSES_CH_T *
-ch_dup(char *src)
+static void
+finish(int sig)
+{
+ endwin();
+#if NO_LEAKS
+ if (vec_lines != 0) {
+ int n;
+ for (n = 0; n < num_lines; ++n) {
+ free(vec_lines[n]);
+ }
+ free(vec_lines);
+ }
+#endif
+ ExitProgram(sig != 0 ? EXIT_FAILURE : EXIT_SUCCESS);
+}
+
+static void
+show_all(const char *tag)
{
- unsigned len = (unsigned) strlen(src);
- NCURSES_CH_T *dst = typeMalloc(NCURSES_CH_T, len + 1);
- size_t j, k;
+ int i;
+ int digits;
+ char temp[BUFSIZ];
+ NCURSES_CH_T *s;
+ time_t this_time;
+
+ for (digits = 1, i = num_lines; i > 0; i /= 10) {
+ ++digits;
+ }
+
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "view %.*s", (int) strlen(tag), tag);
+ i = (int) strlen(temp);
+ _nc_SPRINTF(temp + i, _nc_SLIMIT(sizeof(temp) - (size_t) i)
+ " %.*s", (int) sizeof(temp) - i - 2, fname);
+ move(0, 0);
+ printw("%.*s", COLS, temp);
+ clrtoeol();
+ this_time = time((time_t *) 0);
+ _nc_STRNCPY(temp, ctime(&this_time), (size_t) 30);
+ if ((i = (int) strlen(temp)) != 0) {
+ temp[--i] = 0;
+ if (move(0, COLS - i - 2) != ERR)
+ printw(" %s", temp);
+ }
+
+ scrollok(stdscr, FALSE); /* prevent screen from moving */
+ for (i = 1; i < LINES; i++) {
+ int len;
+ int actual = (int) (lptr + i - vec_lines);
+ if (actual > num_lines) {
+ if (i < LINES - 1) {
+ int y, x;
+ getyx(stdscr, y, x);
+ move(i, 0);
+ clrtobot();
+ move(y, x);
+ }
+ break;
+ }
+ move(i, 0);
+ printw("%*d:", digits, actual);
+ clrtoeol();
+ if ((s = lptr[i - 1]) == 0) {
+ continue;
+ }
+ len = ch_len(s);
+ if (len > shift) {
#if USE_WIDEC_SUPPORT
- wchar_t wstr[CCHARW_MAX + 1];
- wchar_t wch;
- int l = 0;
- size_t rc;
+ /*
+ * An index into an array of cchar_t's is not necessarily the same
+ * as the column-offset. A pad would do this directly. Here we
+ * must translate (or compute a table of offsets).
+ */
+ {
+ int j;
+ int width = 1, count;
+ for (j = actual = 0; j < shift; ++j) {
+ TEST_CCHAR(s + j, count, {
+ width = wcwidth(test_wch[0]);
+ }
+ , {
+ width = 1;
+ });
+ actual += width;
+ if (actual > shift) {
+ break;
+ } else if (actual == shift) {
+ ++j;
+ break;
+ }
+ }
+ if (actual < len) {
+ if (actual > shift)
+ addch('<');
+ add_wchstr(s + j + (actual > shift));
+ }
+ }
+#else
+ addchstr(s + shift);
+#endif
+ }
+#if defined(NCURSES_VERSION) || defined(HAVE_WCHGAT)
+ if (try_color)
+ wchgat(stdscr, -1, WA_NORMAL, my_pair, NULL);
+#endif
+ }
+ setscrreg(1, LINES - 1);
+ scrollok(stdscr, TRUE);
+ refresh();
+}
+
+static void
+read_file(const char *filename)
+{
+ FILE *fp;
+ int pass;
+ int k;
int width;
+ size_t j;
+ size_t len;
+ struct stat sb;
+ char *my_blob;
+ char **my_vec = 0;
+ WINDOW *my_win;
+
+ if (stat(filename, &sb) != 0
+ || (sb.st_mode & S_IFMT) != S_IFREG) {
+ failed("input is not a file");
+ }
+
+ if (sb.st_size == 0) {
+ failed("input is empty");
+ }
+
+ if ((fp = fopen(filename, "r")) == 0) {
+ failed("cannot open input-file");
+ }
+
+ if ((my_blob = malloc((size_t) sb.st_size + 1)) == 0) {
+ failed("cannot allocate memory for input-file");
+ }
+
+ len = fread(my_blob, sizeof(char), (size_t) sb.st_size, fp);
+ my_blob[sb.st_size] = '\0';
+ fclose(fp);
+
+ for (pass = 0; pass < 2; ++pass) {
+ char *base = my_blob;
+ k = 0;
+ for (j = 0; j < len; ++j) {
+ if (my_blob[j] == '\n') {
+ if (pass) {
+ my_vec[k] = base;
+ my_blob[j] = '\0';
+ }
+ base = my_blob + j + 1;
+ ++k;
+ }
+ }
+ num_lines = k;
+ if (base != (my_blob + j))
+ ++num_lines;
+ if (!pass &&
+ ((my_vec = typeCalloc(char *, (size_t) k + 2)) == 0)) {
+ failed("cannot allocate line-vector #1");
+ }
+ }
+
+#if USE_WIDEC_SUPPORT
+ if (!memcmp("\357\273\277", my_blob, 3)) {
+ char *s = my_blob + 3;
+ char *d = my_blob;
+ Trace(("trim BOM"));
+ do {
+ } while ((*d++ = *s++) != '\0');
+ }
+#endif
+
+ width = (int) strlen(my_vec[0]);
+ for (k = 1; my_vec[k]; ++k) {
+ int check = (int) (my_vec[k] - my_vec[k - 1]);
+ if (width < check)
+ width = check;
+ }
+ width = (width + 1) * 5;
+ my_win = newwin(2, width, 0, 0);
+ if (my_win == 0) {
+ failed("cannot allocate temporary window");
+ }
+
+ if ((vec_lines = typeCalloc(NCURSES_CH_T *, (size_t) num_lines + 2)) == 0) {
+ failed("cannot allocate line-vector #2");
+ }
+
+ /*
+ * Use the curses library for rendering, including tab-conversion. This
+ * will not make the resulting array's indices correspond to column for
+ * lines containing double-width cells because the "in_wch" functions will
+ * ignore the skipped cells. Use pads for that sort of thing.
+ */
+ Trace(("slurp the file"));
+ for (k = 0; my_vec[k]; ++k) {
+ char *s;
+ int y, x;
+#if USE_WIDEC_SUPPORT
+ char *last = my_vec[k] + (int) strlen(my_vec[k]);
+ wchar_t wch[2];
+ size_t rc;
#ifndef state_unused
- mbstate_t state;
+ mbstate_t state;
#endif
#endif /* USE_WIDEC_SUPPORT */
+ werase(my_win);
+ wmove(my_win, 0, 0);
#if USE_WIDEC_SUPPORT
- reset_mbytes(state);
+ wch[1] = 0;
+ reset_mbytes(state);
#endif
- for (j = k = 0; j < len; j++) {
+ for (s = my_vec[k]; *s != '\0'; ++s) {
#if USE_WIDEC_SUPPORT
- rc = (size_t) check_mbytes(wch, src + j, len - j, state);
- if (rc == (size_t) -1 || rc == (size_t) -2)
- break;
- j += rc - 1;
- if ((width = wcwidth(wch)) < 0)
- break;
- if ((width > 0 && l > 0) || l == CCHARW_MAX) {
- wstr[l] = L'\0';
- l = 0;
- if (setcchar(dst + k, wstr, 0, 0, NULL) != OK)
- break;
- ++k;
+ if (!n_option) {
+ rc = (size_t) check_mbytes(wch[0], s, (size_t) (last - s), state);
+ if ((long) rc == -1 || (long) rc == -2) {
+ break;
+ }
+ s += rc - 1;
+ waddwstr(my_win, wch);
+ } else
+#endif
+ waddch(my_win, *s & 0xff);
+ }
+ getyx(my_win, y, x);
+ if (y)
+ x = width - 1;
+ wmove(my_win, 0, 0);
+ /* "x + 1" works with standard curses; some implementations are buggy */
+ if ((vec_lines[k] = typeCalloc(NCURSES_CH_T, x + width + 1)) == 0) {
+ failed("cannot allocate line-vector #3");
}
- if (width == 0 && l == 0)
- wstr[l++] = L' ';
- wstr[l++] = wch;
+#if USE_WIDEC_SUPPORT
+ win_wchnstr(my_win, vec_lines[k], x);
#else
- dst[k++] = (chtype) UChar(src[j]);
+ winchnstr(my_win, vec_lines[k], x);
#endif
}
+
+ delwin(my_win);
+ free(my_vec);
+ free(my_blob);
+}
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: view [options] file"
+ ,""
+ ,"Options:"
+ ," -c use color if terminal supports it"
+ ," -i ignore INT, QUIT, TERM signals"
#if USE_WIDEC_SUPPORT
- if (l > 0) {
- wstr[l] = L'\0';
- if (setcchar(dst + k, wstr, 0, 0, NULL) == OK)
- ++k;
- }
- wstr[0] = L'\0';
- setcchar(dst + k, wstr, 0, 0, NULL);
-#else
- dst[k] = 0;
+ ," -n use waddch (bytes) rather then wadd_wch (wide-chars)"
#endif
- return dst;
+ ," -s start in single-step mode, waiting for input"
+#ifdef TRACE
+ ," -t trace screen updates"
+ ," -T NUM specify trace mask"
+#endif
+ };
+ size_t n;
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+ ExitProgram(EXIT_FAILURE);
}
int
main(int argc, char *argv[])
{
- int MAXLINES = 1000;
- FILE *fp;
- char buf[BUFSIZ];
+ static const char *help[] =
+ {
+ "Commands:",
+ " q,^Q,ESC - quit this program",
+ "",
+ " p,<Up> - scroll the viewport up by one row",
+ " n,<Down> - scroll the viewport down by one row",
+ " l,<Left> - scroll the viewport left by one column",
+ " r,<Right> - scroll the viewport right by one column",
+ " <,> - scroll the viewport left/right by 8 columns",
+ "",
+ " h,<Home> - scroll the viewport to top of file",
+ " ^F,<PageDn> - scroll to the next page",
+ " ^B,<PageUp> - scroll to the previous page",
+ " e,<End> - scroll the viewport to end of file",
+ "",
+ " ^L - repaint using redrawwin()",
+ "",
+ " 0 through 9 - enter digits for count",
+ " s - use entered count for halfdelay() parameter",
+ " - if no entered count, stop nodelay()",
+ " <space> - begin nodelay()",
+ 0
+ };
+
int i;
int my_delay = 0;
NCURSES_CH_T **olptr;
int value = 0;
bool done = FALSE;
bool got_number = FALSE;
+ bool ignore_sigs = FALSE;
bool single_step = FALSE;
-#if CAN_RESIZE
- bool nonposix_resize = FALSE;
-#endif
const char *my_label = "Input";
setlocale(LC_ALL, "");
-#ifndef NCURSES_VERSION
- /*
- * We know ncurses will catch SIGINT if we don't establish our own handler.
- * Other versions of curses may/may not catch it.
- */
- (void) signal(SIGINT, finish); /* arrange interrupts to terminate */
-#endif
-
- while ((i = getopt(argc, argv, "cin:rstT:")) != -1) {
+ while ((i = getopt(argc, argv, "cinstT:")) != -1) {
switch (i) {
case 'c':
try_color = TRUE;
break;
case 'i':
- CATCHALL(SIG_IGN);
+ ignore_sigs = TRUE;
break;
+#if USE_WIDEC_SUPPORT
case 'n':
- if ((MAXLINES = atoi(optarg)) < 1 ||
- (MAXLINES + 2) <= 1)
- usage();
- break;
-#if CAN_RESIZE
- case 'r':
- nonposix_resize = TRUE;
+ n_option = TRUE;
break;
#endif
case 's':
@@ -277,11 +453,11 @@ main(int argc, char *argv[])
int tvalue = (int) strtol(optarg, &next, 0);
if (tvalue < 0 || (next != 0 && *next != 0))
usage();
- trace((unsigned) tvalue);
+ curses_trace((unsigned) tvalue);
}
break;
case 't':
- trace(TRACE_CALLS);
+ curses_trace(TRACE_CALLS);
break;
#endif
default:
@@ -291,76 +467,7 @@ main(int argc, char *argv[])
if (optind + 1 != argc)
usage();
- if ((vec_lines = typeCalloc(NCURSES_CH_T *, (size_t) MAXLINES + 2)) == 0)
- usage();
-
- assert(vec_lines != 0);
-
- fname = argv[optind];
- if ((fp = fopen(fname, "r")) == 0) {
- perror(fname);
- ExitProgram(EXIT_FAILURE);
- }
-#if CAN_RESIZE
- if (nonposix_resize)
- (void) signal(SIGWINCH, adjust); /* arrange interrupts to resize */
-#endif
-
- Trace(("slurp the file"));
- for (lptr = &vec_lines[0]; (lptr - vec_lines) < MAXLINES; lptr++) {
- char temp[BUFSIZ], *s, *d;
- int col;
-
- if (fgets(buf, sizeof(buf), fp) == 0)
- break;
-
-#if USE_WIDEC_SUPPORT
- if (lptr == vec_lines) {
- if (!memcmp("", buf, 3)) {
- Trace(("trim BOM"));
- s = buf + 3;
- d = buf;
- do {
- } while ((*d++ = *s++) != '\0');
- }
- }
-#endif
-
- /* convert tabs and nonprinting chars so that shift will work properly */
- for (s = buf, d = temp, col = 0; (*d = *s) != '\0'; s++) {
- if (*d == '\r') {
- if (s[1] == '\n')
- continue;
- else
- break;
- }
- if (*d == '\n') {
- *d = '\0';
- break;
- } else if (*d == '\t') {
- col = (col | 7) + 1;
- while ((d - temp) != col)
- *d++ = ' ';
- } else
-#if USE_WIDEC_SUPPORT
- col++, d++;
-#else
- if (isprint(UChar(*d))) {
- col++;
- d++;
- } else {
- sprintf(d, "\\%03o", UChar(*s));
- d += strlen(d);
- col = (int) (d - temp);
- }
-#endif
- }
- *lptr = ch_dup(temp);
- }
- (void) fclose(fp);
- num_lines = (int) (lptr - vec_lines);
-
- (void) initscr(); /* initialize the curses library */
+ InitAndCatch(initscr(), ignore_sigs ? SIG_IGN : finish);
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 */
@@ -369,6 +476,8 @@ main(int argc, char *argv[])
nodelay(stdscr, TRUE);
idlok(stdscr, TRUE); /* allow use of insert/delete line */
+ read_file(fname = argv[optind]);
+
if (try_color) {
if (has_colors()) {
start_color();
@@ -387,17 +496,7 @@ main(int argc, char *argv[])
show_all(my_label);
for (;;) {
-#if CAN_RESIZE
- if (interrupted) {
- adjust(0);
- my_label = "interrupt";
- }
- waiting = TRUE;
- c = getch();
- waiting = FALSE;
-#else
c = getch();
-#endif
if ((c < 127) && isdigit(c)) {
if (!got_number) {
MvPrintw(0, 0, "Count: ");
@@ -441,16 +540,48 @@ main(int argc, char *argv[])
break;
case 'h':
+ /* FALLTHRU */
case KEY_HOME:
lptr = vec_lines;
break;
+ case '<':
+ if ((shift -= 8) < 0)
+ shift = 0;
+ break;
+ case '>':
+ shift += 8;
+ break;
+
case 'e':
+ /* FALLTHRU */
case KEY_END:
if (num_lines > LINES)
- lptr = vec_lines + num_lines - LINES + 1;
+ lptr = (vec_lines + num_lines - LINES + 1);
else
- lptr = vec_lines;
+ lptr = (vec_lines + (num_lines - 2));
+ break;
+
+ case CTRL('F'):
+ /* FALLTHRU */
+ case KEY_NPAGE:
+ for (i = 0; i < n; i++) {
+ if ((lptr - vec_lines) < (num_lines - 5))
+ lptr += (LINES - 1);
+ else
+ lptr = (vec_lines + num_lines - 2);
+ }
+ break;
+
+ case CTRL('B'):
+ /* FALLTHRU */
+ case KEY_PPAGE:
+ for (i = 0; i < n; i++) {
+ if ((lptr - vec_lines) >= LINES)
+ lptr -= (LINES - 1);
+ else
+ lptr = vec_lines;
+ }
break;
case 'r':
@@ -468,6 +599,8 @@ main(int argc, char *argv[])
break;
case 'q':
+ case QUIT:
+ case ESCAPE:
done = TRUE;
break;
@@ -476,12 +609,17 @@ main(int argc, char *argv[])
break;
#endif
case 's':
+#if HAVE_HALFDELAY
if (got_number) {
halfdelay(my_delay = n);
} else {
nodelay(stdscr, FALSE);
my_delay = -1;
}
+#else
+ nodelay(stdscr, FALSE);
+ my_delay = -1;
+#endif
break;
case ' ':
nodelay(stdscr, TRUE);
@@ -494,6 +632,9 @@ main(int argc, char *argv[])
if (!my_delay)
napms(50);
break;
+ case HELP_KEY_1:
+ popup_msg(stdscr, help);
+ break;
default:
beep();
break;
@@ -506,105 +647,3 @@ main(int argc, char *argv[])
finish(0); /* we're done */
}
-
-static void
-finish(int sig)
-{
- endwin();
-#if NO_LEAKS
- if (vec_lines != 0) {
- int n;
- for (n = 0; n < num_lines; ++n) {
- free(vec_lines[n]);
- }
- free(vec_lines);
- }
-#endif
- ExitProgram(sig != 0 ? EXIT_FAILURE : EXIT_SUCCESS);
-}
-
-#if CAN_RESIZE
-/*
- * This uses functions that are "unsafe", but it seems to work on SunOS.
- * Usually: the "unsafe" refers to the functions that POSIX lists which may be
- * called from a signal handler. Those do not include buffered I/O, which is
- * used for instance in wrefresh(). To be really portable, you should use the
- * KEY_RESIZE return (which relies on ncurses' sigwinch handler).
- *
- * 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 void
-adjust(int sig)
-{
- if (waiting || sig == 0) {
- struct winsize size;
-
- if (ioctl(fileno(stdout), TIOCGWINSZ, &size) == 0) {
- resize_term(size.ws_row, size.ws_col);
- wrefresh(curscr);
- show_all(sig ? "SIGWINCH" : "interrupt");
- }
- interrupted = FALSE;
- } else {
- interrupted = TRUE;
- }
- (void) signal(SIGWINCH, adjust); /* some systems need this */
-}
-#endif /* CAN_RESIZE */
-
-static void
-show_all(const char *tag)
-{
- int i;
- char temp[BUFSIZ];
- NCURSES_CH_T *s;
- time_t this_time;
-
-#if CAN_RESIZE
- sprintf(temp, "%.20s (%3dx%3d) col %d ", tag, LINES, COLS, shift);
- i = (int) strlen(temp);
- if ((i + 7) < (int) sizeof(temp)) {
- sprintf(temp + i, "view %.*s",
- (int) (sizeof(temp) - 7 - (size_t) i),
- fname);
- }
-#else
- (void) tag;
- sprintf(temp, "view %.*s", (int) sizeof(temp) - 7, fname);
-#endif
- move(0, 0);
- printw("%.*s", COLS, temp);
- clrtoeol();
- this_time = time((time_t *) 0);
- strncpy(temp, ctime(&this_time), (size_t) 30);
- if ((i = (int) strlen(temp)) != 0) {
- temp[--i] = 0;
- if (move(0, COLS - i - 2) != ERR)
- printw(" %s", temp);
- }
-
- scrollok(stdscr, FALSE); /* prevent screen from moving */
- for (i = 1; i < LINES; i++) {
- move(i, 0);
- printw("%3ld:", (long) (lptr + i - vec_lines));
- clrtoeol();
- if ((s = lptr[i - 1]) != 0) {
- int len = ch_len(s);
- if (len > shift) {
-#if USE_WIDEC_SUPPORT
- add_wchstr(s + shift);
-#else
- addchstr(s + shift);
-#endif
- }
-#if defined(NCURSES_VERSION) || defined(HAVE_WCHGAT)
- if (try_color)
- wchgat(stdscr, -1, A_NORMAL, my_pair, NULL);
-#endif
- }
- }
- setscrreg(1, LINES - 1);
- scrollok(stdscr, TRUE);
- refresh();
-}
diff --git a/test/widechars-utf8-tabs.txt b/test/widechars-utf8-tabs.txt
new file mode 100644
index 000000000000..ca605a1db751
--- /dev/null
+++ b/test/widechars-utf8-tabs.txt
@@ -0,0 +1,15 @@
+APPLE -- It's an APPLE.
+DOG -- No, that's not my DOG.
+ORANGE -- Yeah, that's JUICY.
+CHICKEN -- Normally not a PET.
+CAT -- No, never put a DOG and a CAT together!
+FISH -- Cats like FISH.
+LEMON -- You KNOW how it TASTES.
+----+----1----+----2----+----3----+----4
+APPLE -- It's an APPLE.
+ APPLE -- It's an APPLE.
+ APPLE -- It's an APPLE.
+ APPLE -- It's an APPLE.
+ APPLE -- It's an APPLE.
+ APPLE -- It's an APPLE.
+----+----1----+----2----+----3----+----4
diff --git a/test/widechars.h b/test/widechars.h
index e7897bae6ca7..f196edb7ade0 100644
--- a/test/widechars.h
+++ b/test/widechars.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2012 Free Software Foundation, Inc. *
+ * Copyright (c) 2012,2018 Free 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 @@
#if USE_WIDEC_SUPPORT
-#if defined(__MINGW32__)
+#if defined(_WIN32)
/*
* MinGW has wide-character functions, but they do not work correctly.
*/
@@ -45,7 +45,7 @@ extern int __MINGW_NOTHROW _nc_mbtowc(wchar_t *pwc, const char *s, size_t n);
extern int __MINGW_NOTHROW _nc_mblen(const char *, size_t);
#define mblen(s,n) _nc_mblen(s, n)
-#endif /* __MINGW32__ */
+#endif /* _WIN32 */
#if HAVE_MBTOWC && HAVE_MBLEN
#define reset_mbytes(state) IGNORE_RC(mblen(NULL, 0)), IGNORE_RC(mbtowc(NULL, NULL, 0))
diff --git a/test/worm.c b/test/worm.c
index c3fc0da822ef..c7b04aa81445 100644
--- a/test/worm.c
+++ b/test/worm.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2018,2019 Free 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,25 +47,20 @@
July 1995 (esr): worms is now in living color! :-)
-Options:
- -f fill screen with copies of 'WORM' at start.
- -l <n> set worm length
- -n <n> set number of worms
- -t make worms leave droppings
- -T <start> <end> set trace interval
- -S set single-stepping during trace interval
- -N suppress cursor-movement optimization
-
This program makes a good torture-test for the ncurses cursor-optimization
code. You can use -T to set the worm move interval over which movement
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.65 2013/06/22 20:01:41 tom Exp $
+ $Id: worm.c,v 1.81 2019/12/14 23:25:29 tom Exp $
*/
#include <test.priv.h>
+#ifndef NCURSES_VERSION
+#undef TRACE
+#endif
+
#ifdef USE_PTHREADS
#include <pthread.h>
#endif
@@ -102,6 +97,7 @@ static unsigned long sequence = 0;
static bool quitting = FALSE;
static WORM worm[MAX_WORMS];
+static int max_refs;
static int **refs;
static int last_x, last_y;
@@ -201,20 +197,34 @@ static const struct options {
};
/* *INDENT-ON* */
+#if HAVE_USE_WINDOW
+static int
+safe_wgetch(WINDOW *w, void *data GCC_UNUSED)
+{
+ return wgetch(w);
+}
+static int
+safe_wrefresh(WINDOW *w, void *data GCC_UNUSED)
+{
+ return wrefresh(w);
+}
+#endif
+
+#ifdef KEY_RESIZE
static void
failed(const char *s)
{
perror(s);
- endwin();
+ stop_curses();
ExitProgram(EXIT_FAILURE);
}
+#endif
static void
cleanup(void)
{
- USING_WINDOW(stdscr, wrefresh);
- curs_set(1);
- endwin();
+ USING_WINDOW1(stdscr, wrefresh, safe_wrefresh);
+ stop_curses();
}
static void
@@ -294,6 +304,7 @@ draw_worm(WINDOW *win, void *data)
switch (op->nopts) {
case 0:
done = TRUE;
+ Trace(("done - draw_worm"));
break;
case 1:
w->orientation = op->opts[0];
@@ -324,9 +335,9 @@ draw_worm(WINDOW *win, void *data)
static bool
quit_worm(int bitnum)
{
- pending |= (1 << bitnum);
+ pending = (pending | (unsigned) (1 << bitnum));
napms(10); /* let the other thread(s) have a chance */
- pending &= ~(1 << bitnum);
+ pending = (pending & (unsigned) ~(1 << bitnum));
return quitting;
}
@@ -335,7 +346,7 @@ start_worm(void *arg)
{
unsigned long compare = 0;
Trace(("start_worm"));
- while (!quit_worm(((struct worm *) arg) - worm)) {
+ while (!quit_worm((int) (((struct worm *) arg) - worm))) {
while (compare < sequence) {
++compare;
#if HAVE_USE_WINDOW
@@ -384,17 +395,18 @@ static int
get_input(void)
{
int ch;
- ch = USING_WINDOW(stdscr, wgetch);
+ ch = USING_WINDOW1(stdscr, wgetch, safe_wgetch);
return ch;
}
#ifdef KEY_RESIZE
static int
-update_refs(WINDOW *win)
+update_refs(WINDOW *win, void *data)
{
int x, y;
(void) win;
+ (void) data;
if (last_x != COLS - 1) {
for (y = 0; y <= last_y; y++) {
refs[y] = typeRealloc(int, (size_t) COLS, refs[y]);
@@ -408,6 +420,7 @@ update_refs(WINDOW *win)
if (last_y != LINES - 1) {
for (y = LINES; y <= last_y; y++)
free(refs[y]);
+ max_refs = LINES;
refs = typeRealloc(int *, (size_t) LINES, refs);
for (y = last_y + 1; y < LINES; y++) {
refs[y] = typeMalloc(int, (size_t) COLS);
@@ -422,41 +435,69 @@ update_refs(WINDOW *win)
}
#endif
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: worm [options]"
+ ,""
+ ,"Options:"
+#if HAVE_USE_DEFAULT_COLORS
+ ," -d invoke use_default_colors"
+#endif
+ ," -f fill screen with copies of \"WORM\" at start"
+ ," -l <n> set length of worms"
+ ," -n <n> set number of worms"
+ ," -t leave trail of \".\""
+#ifdef TRACE
+ ," -T <start>,<end> set trace interval"
+ ," -N suppress cursor-movement optimization"
+#endif
+ };
+ size_t n;
+
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+
+ ExitProgram(EXIT_FAILURE);
+}
+
int
main(int argc, char *argv[])
{
+ int ch;
int x, y;
int n;
struct worm *w;
int *ip;
bool done = FALSE;
- int max_refs;
+#if HAVE_USE_DEFAULT_COLORS
+ bool opt_d = FALSE;
+#endif
setlocale(LC_ALL, "");
- for (x = 1; x < argc; x++) {
- char *p;
- p = argv[x];
- if (*p == '-')
- p++;
- switch (*p) {
+ while ((ch = getopt(argc, argv, "dfl:n:tT:N")) != -1) {
+ switch (ch) {
+#if HAVE_USE_DEFAULT_COLORS
+ case 'd':
+ opt_d = TRUE;
+ break;
+#endif
case 'f':
field = "WORM";
break;
case 'l':
- if (++x == argc)
- goto usage;
- if ((length = atoi(argv[x])) < 2 || length > MAX_LENGTH) {
+ if ((length = atoi(optarg)) < 2 || length > MAX_LENGTH) {
fprintf(stderr, "%s: Invalid length\n", *argv);
- ExitProgram(EXIT_FAILURE);
+ usage();
}
break;
case 'n':
- if (++x == argc)
- goto usage;
- if ((number = atoi(argv[x])) < 1 || number > MAX_WORMS) {
+ if ((number = atoi(optarg)) < 1 || number > MAX_WORMS) {
fprintf(stderr, "%s: Invalid number of worms\n", *argv);
- ExitProgram(EXIT_FAILURE);
+ usage();
}
break;
case 't':
@@ -464,20 +505,20 @@ main(int argc, char *argv[])
break;
#ifdef TRACE
case 'T':
- trace_start = atoi(argv[++x]);
- trace_end = atoi(argv[++x]);
+ if (sscanf(optarg, "%d,%d", &trace_start, &trace_end) != 2)
+ usage();
break;
case 'N':
_nc_optimize_enable ^= OPTIMIZE_ALL; /* declared by ncurses */
break;
#endif /* TRACE */
default:
- usage:
- fprintf(stderr,
- "usage: %s [-field] [-length #] [-number #] [-trail]\n", *argv);
- ExitProgram(EXIT_FAILURE);
+ usage();
+ /* NOTREACHED */
}
}
+ if (optind < argc)
+ usage();
signal(SIGINT, onsig);
initscr();
@@ -495,7 +536,7 @@ main(int argc, char *argv[])
int bg = COLOR_BLACK;
start_color();
#if HAVE_USE_DEFAULT_COLORS
- if (use_default_colors() == OK)
+ if (opt_d && (use_default_colors() == OK))
bg = -1;
#endif
@@ -558,21 +599,19 @@ main(int argc, char *argv[])
}
}
}
- USING_WINDOW(stdscr, wrefresh);
+ USING_WINDOW1(stdscr, wrefresh, safe_wrefresh);
nodelay(stdscr, TRUE);
while (!done) {
- int ch;
-
++sequence;
if ((ch = get_input()) > 0) {
#ifdef TRACE
if (trace_start || trace_end) {
if (generation == trace_start) {
- trace(TRACE_CALLS);
+ curses_trace(TRACE_CALLS);
get_input();
} else if (generation == trace_end) {
- trace(0);
+ curses_trace(0);
get_input();
}
@@ -593,6 +632,7 @@ main(int argc, char *argv[])
if (ch == 'q') {
quitting = TRUE;
done = TRUE;
+ Trace(("done - quitting"));
continue;
} else if (ch == 's') {
nodelay(stdscr, FALSE);
@@ -603,12 +643,12 @@ main(int argc, char *argv[])
done = draw_all_worms();
napms(10);
- USING_WINDOW(stdscr, wrefresh);
+ USING_WINDOW1(stdscr, wrefresh, safe_wrefresh);
}
Trace(("Cleanup"));
cleanup();
-#ifdef NO_LEAKS
+#if NO_LEAKS
for (y = 0; y < max_refs; y++) {
free(refs[y]);
}
diff --git a/test/xmas.c b/test/xmas.c
index 087fcd9d81d1..78b187c20a3e 100644
--- a/test/xmas.c
+++ b/test/xmas.c
@@ -92,7 +92,7 @@
/******************************************************************************/
/*
- * $Id: xmas.c,v 1.28 2013/04/27 19:46:53 tom Exp $
+ * $Id: xmas.c,v 1.34 2019/12/14 23:25:29 tom Exp $
*/
#include <test.priv.h>
@@ -133,21 +133,6 @@ static WINDOW *w_holiday;
static WINDOW *w_del_msg;
static bool *my_pairs;
-static int boxit(void);
-static int seas(void);
-static int greet(void);
-static int fromwho(void);
-static int tree(void);
-static int balls(void);
-static int star(void);
-static int strng1(void);
-static int strng2(void);
-static int strng3(void);
-static int strng4(void);
-static int strng5(void);
-static int reindeer(void);
-static int blinkit(void);
-
static void done(int sig) GCC_NORETURN;
static void
@@ -183,24 +168,544 @@ look_out(int msecs)
}
}
+static int
+boxit(void)
+{
+ int x = 0;
+
+ while (x < 20) {
+ MvAddCh(x, 7, '|');
+ ++x;
+ }
+
+ x = 8;
+
+ while (x < 80) {
+ MvAddCh(19, x, '_');
+ ++x;
+ }
+
+ x = 0;
+
+ while (x < 80) {
+ MvAddCh(22, x, '_');
+ ++x;
+ }
+
+ return (0);
+}
+
+static int
+seas(void)
+{
+ MvAddCh(4, 1, 'S');
+ MvAddCh(6, 1, 'E');
+ MvAddCh(8, 1, 'A');
+ MvAddCh(10, 1, 'S');
+ MvAddCh(12, 1, 'O');
+ MvAddCh(14, 1, 'N');
+ MvAddCh(16, 1, '`');
+ MvAddCh(18, 1, 'S');
+
+ return (0);
+}
+
+static int
+greet(void)
+{
+ MvAddCh(3, 5, 'G');
+ MvAddCh(5, 5, 'R');
+ MvAddCh(7, 5, 'E');
+ MvAddCh(9, 5, 'E');
+ MvAddCh(11, 5, 'T');
+ MvAddCh(13, 5, 'I');
+ MvAddCh(15, 5, 'N');
+ MvAddCh(17, 5, 'G');
+ MvAddCh(19, 5, 'S');
+
+ return (0);
+}
+
+static int
+fromwho(void)
+{
+ MvAddStr(21, 13, FROMWHO);
+ return (0);
+}
+
+static int
+tree(void)
+{
+ set_color(treescrn, COLOR_GREEN);
+ MvWAddCh(treescrn, 1, 11, (chtype) '/');
+ MvWAddCh(treescrn, 2, 11, (chtype) '/');
+ MvWAddCh(treescrn, 3, 10, (chtype) '/');
+ MvWAddCh(treescrn, 4, 9, (chtype) '/');
+ MvWAddCh(treescrn, 5, 9, (chtype) '/');
+ MvWAddCh(treescrn, 6, 8, (chtype) '/');
+ MvWAddCh(treescrn, 7, 7, (chtype) '/');
+ MvWAddCh(treescrn, 8, 6, (chtype) '/');
+ MvWAddCh(treescrn, 9, 6, (chtype) '/');
+ MvWAddCh(treescrn, 10, 5, (chtype) '/');
+ MvWAddCh(treescrn, 11, 3, (chtype) '/');
+ MvWAddCh(treescrn, 12, 2, (chtype) '/');
+
+ MvWAddCh(treescrn, 1, 13, (chtype) '\\');
+ MvWAddCh(treescrn, 2, 13, (chtype) '\\');
+ MvWAddCh(treescrn, 3, 14, (chtype) '\\');
+ MvWAddCh(treescrn, 4, 15, (chtype) '\\');
+ MvWAddCh(treescrn, 5, 15, (chtype) '\\');
+ MvWAddCh(treescrn, 6, 16, (chtype) '\\');
+ MvWAddCh(treescrn, 7, 17, (chtype) '\\');
+ MvWAddCh(treescrn, 8, 18, (chtype) '\\');
+ MvWAddCh(treescrn, 9, 18, (chtype) '\\');
+ MvWAddCh(treescrn, 10, 19, (chtype) '\\');
+ MvWAddCh(treescrn, 11, 21, (chtype) '\\');
+ MvWAddCh(treescrn, 12, 22, (chtype) '\\');
+
+ MvWAddCh(treescrn, 4, 10, (chtype) '_');
+ MvWAddCh(treescrn, 4, 14, (chtype) '_');
+ MvWAddCh(treescrn, 8, 7, (chtype) '_');
+ MvWAddCh(treescrn, 8, 17, (chtype) '_');
+
+ MvWAddStr(treescrn, 13, 0, "//////////// \\\\\\\\\\\\\\\\\\\\\\\\");
+
+ MvWAddStr(treescrn, 14, 11, "| |");
+ MvWAddStr(treescrn, 15, 11, "|_|");
+
+ unset_color(treescrn);
+ wrefresh(treescrn);
+ wrefresh(w_del_msg);
+
+ return (0);
+}
+
+static int
+balls(void)
+{
+ overlay(treescrn, treescrn2);
+
+ set_color(treescrn2, COLOR_BLUE);
+ MvWAddCh(treescrn2, 3, 9, (chtype) '@');
+ MvWAddCh(treescrn2, 3, 15, (chtype) '@');
+ MvWAddCh(treescrn2, 4, 8, (chtype) '@');
+ MvWAddCh(treescrn2, 4, 16, (chtype) '@');
+ MvWAddCh(treescrn2, 5, 7, (chtype) '@');
+ MvWAddCh(treescrn2, 5, 17, (chtype) '@');
+ MvWAddCh(treescrn2, 7, 6, (chtype) '@');
+ MvWAddCh(treescrn2, 7, 18, (chtype) '@');
+ MvWAddCh(treescrn2, 8, 5, (chtype) '@');
+ MvWAddCh(treescrn2, 8, 19, (chtype) '@');
+ MvWAddCh(treescrn2, 10, 4, (chtype) '@');
+ MvWAddCh(treescrn2, 10, 20, (chtype) '@');
+ MvWAddCh(treescrn2, 11, 2, (chtype) '@');
+ MvWAddCh(treescrn2, 11, 22, (chtype) '@');
+ MvWAddCh(treescrn2, 12, 1, (chtype) '@');
+ MvWAddCh(treescrn2, 12, 23, (chtype) '@');
+
+ unset_color(treescrn2);
+ wrefresh(treescrn2);
+ wrefresh(w_del_msg);
+ return (0);
+}
+
+static int
+star(void)
+{
+ (void) wattrset(treescrn2, A_BOLD | A_BLINK);
+ set_color(treescrn2, COLOR_YELLOW);
+
+ MvWAddCh(treescrn2, 0, 12, (chtype) '*');
+ (void) wstandend(treescrn2);
+
+ unset_color(treescrn2);
+ wrefresh(treescrn2);
+ wrefresh(w_del_msg);
+ return (0);
+}
+
+static int
+strng1(void)
+{
+ (void) wattrset(treescrn2, A_BOLD | A_BLINK);
+ set_color(treescrn2, COLOR_WHITE);
+
+ MvWAddCh(treescrn2, 3, 13, (chtype) '\'');
+ MvWAddCh(treescrn2, 3, 12, (chtype) ':');
+ MvWAddCh(treescrn2, 3, 11, (chtype) '.');
+
+ wattroff(treescrn2, A_BOLD | A_BLINK);
+ unset_color(treescrn2);
+
+ wrefresh(treescrn2);
+ wrefresh(w_del_msg);
+ return (0);
+}
+
+static int
+strng2(void)
+{
+ (void) wattrset(treescrn2, A_BOLD | A_BLINK);
+ set_color(treescrn2, COLOR_WHITE);
+
+ MvWAddCh(treescrn2, 5, 14, (chtype) '\'');
+ MvWAddCh(treescrn2, 5, 13, (chtype) ':');
+ MvWAddCh(treescrn2, 5, 12, (chtype) '.');
+ MvWAddCh(treescrn2, 5, 11, (chtype) ',');
+ MvWAddCh(treescrn2, 6, 10, (chtype) '\'');
+ MvWAddCh(treescrn2, 6, 9, (chtype) ':');
+
+ wattroff(treescrn2, A_BOLD | A_BLINK);
+ unset_color(treescrn2);
+
+ wrefresh(treescrn2);
+ wrefresh(w_del_msg);
+ return (0);
+}
+
+static int
+strng3(void)
+{
+ (void) wattrset(treescrn2, A_BOLD | A_BLINK);
+ set_color(treescrn2, COLOR_WHITE);
+
+ MvWAddCh(treescrn2, 7, 16, (chtype) '\'');
+ MvWAddCh(treescrn2, 7, 15, (chtype) ':');
+ MvWAddCh(treescrn2, 7, 14, (chtype) '.');
+ MvWAddCh(treescrn2, 7, 13, (chtype) ',');
+ MvWAddCh(treescrn2, 8, 12, (chtype) '\'');
+ MvWAddCh(treescrn2, 8, 11, (chtype) ':');
+ MvWAddCh(treescrn2, 8, 10, (chtype) '.');
+ MvWAddCh(treescrn2, 8, 9, (chtype) ',');
+
+ wattroff(treescrn2, A_BOLD | A_BLINK);
+ unset_color(treescrn2);
+
+ wrefresh(treescrn2);
+ wrefresh(w_del_msg);
+ return (0);
+}
+
+static int
+strng4(void)
+{
+ (void) wattrset(treescrn2, A_BOLD | A_BLINK);
+ set_color(treescrn2, COLOR_WHITE);
+
+ MvWAddCh(treescrn2, 9, 17, (chtype) '\'');
+ MvWAddCh(treescrn2, 9, 16, (chtype) ':');
+ MvWAddCh(treescrn2, 9, 15, (chtype) '.');
+ MvWAddCh(treescrn2, 9, 14, (chtype) ',');
+ MvWAddCh(treescrn2, 10, 13, (chtype) '\'');
+ MvWAddCh(treescrn2, 10, 12, (chtype) ':');
+ MvWAddCh(treescrn2, 10, 11, (chtype) '.');
+ MvWAddCh(treescrn2, 10, 10, (chtype) ',');
+ MvWAddCh(treescrn2, 11, 9, (chtype) '\'');
+ MvWAddCh(treescrn2, 11, 8, (chtype) ':');
+ MvWAddCh(treescrn2, 11, 7, (chtype) '.');
+ MvWAddCh(treescrn2, 11, 6, (chtype) ',');
+ MvWAddCh(treescrn2, 12, 5, (chtype) '\'');
+
+ wattroff(treescrn2, A_BOLD | A_BLINK);
+ unset_color(treescrn2);
+
+ wrefresh(treescrn2);
+ wrefresh(w_del_msg);
+ return (0);
+}
+
+static int
+strng5(void)
+{
+ (void) wattrset(treescrn2, A_BOLD | A_BLINK);
+ set_color(treescrn2, COLOR_WHITE);
+
+ MvWAddCh(treescrn2, 11, 19, (chtype) '\'');
+ MvWAddCh(treescrn2, 11, 18, (chtype) ':');
+ MvWAddCh(treescrn2, 11, 17, (chtype) '.');
+ MvWAddCh(treescrn2, 11, 16, (chtype) ',');
+ MvWAddCh(treescrn2, 12, 15, (chtype) '\'');
+ MvWAddCh(treescrn2, 12, 14, (chtype) ':');
+ MvWAddCh(treescrn2, 12, 13, (chtype) '.');
+ MvWAddCh(treescrn2, 12, 12, (chtype) ',');
+
+ wattroff(treescrn2, A_BOLD | A_BLINK);
+ unset_color(treescrn2);
+
+ /* save a fully lit tree */
+ overlay(treescrn2, treescrn);
+
+ wrefresh(treescrn2);
+ wrefresh(w_del_msg);
+ return (0);
+}
+
+static int
+blinkit(void)
+{
+ static int cycle;
+
+ if (cycle > 4) {
+ cycle = 0;
+ }
+
+ touchwin(treescrn8);
+
+ switch (cycle) {
+ case 0:
+ overlay(treescrn3, treescrn8);
+ break;
+ case 1:
+ overlay(treescrn4, treescrn8);
+ break;
+ case 2:
+ overlay(treescrn5, treescrn8);
+ break;
+ case 3:
+ overlay(treescrn6, treescrn8);
+ break;
+ case 4:
+ overlay(treescrn7, treescrn8);
+ break;
+ }
+ touchwin(treescrn8);
+ wrefresh(treescrn8);
+ wrefresh(w_del_msg);
+ look_out(50);
+
+ /*ALL ON************************************************** */
+
+ overlay(treescrn, treescrn8);
+ wrefresh(treescrn8);
+ wrefresh(w_del_msg);
+ look_out(50);
+
+ ++cycle;
+ return (0);
+}
+
+static void
+deer_step(WINDOW *win, int y, int x)
+{
+ mvwin(win, y, x);
+ wrefresh(win);
+ wrefresh(w_del_msg);
+ look_out(5);
+}
+
+static int
+reindeer(void)
+{
+ int looper;
+ y_pos = 0;
+
+ for (x_pos = 70; x_pos > 62; x_pos--) {
+ if (x_pos < 62) {
+ y_pos = 1;
+ }
+ for (looper = 0; looper < 4; looper++) {
+ MvWAddCh(dotdeer0, y_pos, x_pos, (chtype) '.');
+ wrefresh(dotdeer0);
+ wrefresh(w_del_msg);
+ werase(dotdeer0);
+ wrefresh(dotdeer0);
+ wrefresh(w_del_msg);
+ look_out(50);
+ }
+ }
+
+ y_pos = 2;
+
+ for (; x_pos > 50; x_pos--) {
+ for (looper = 0; looper < 4; looper++) {
+
+ if (x_pos < 56) {
+ y_pos = 3;
+
+ MvWAddCh(stardeer0, y_pos, x_pos, (chtype) '*');
+ wrefresh(stardeer0);
+ wrefresh(w_del_msg);
+ werase(stardeer0);
+ wrefresh(stardeer0);
+ wrefresh(w_del_msg);
+ } else {
+ MvWAddCh(dotdeer0, y_pos, x_pos, (chtype) '*');
+ wrefresh(dotdeer0);
+ wrefresh(w_del_msg);
+ werase(dotdeer0);
+ wrefresh(dotdeer0);
+ wrefresh(w_del_msg);
+ }
+ }
+ }
+
+ x_pos = 58;
+
+ for (y_pos = 2; y_pos < 5; y_pos++) {
+
+ touchwin(lildeer0);
+ wrefresh(lildeer0);
+ wrefresh(w_del_msg);
+
+ for (looper = 0; looper < 4; looper++) {
+ deer_step(lildeer3, y_pos, x_pos);
+ deer_step(lildeer2, y_pos, x_pos);
+ deer_step(lildeer1, y_pos, x_pos);
+ deer_step(lildeer2, y_pos, x_pos);
+ deer_step(lildeer3, y_pos, x_pos);
+
+ touchwin(lildeer0);
+ wrefresh(lildeer0);
+ wrefresh(w_del_msg);
+
+ x_pos -= 2;
+ }
+ }
+
+ x_pos = 35;
+
+ for (y_pos = 5; y_pos < 10; y_pos++) {
+
+ touchwin(middeer0);
+ wrefresh(middeer0);
+ wrefresh(w_del_msg);
+
+ for (looper = 0; looper < 2; looper++) {
+ deer_step(middeer3, y_pos, x_pos);
+ deer_step(middeer2, y_pos, x_pos);
+ deer_step(middeer1, y_pos, x_pos);
+ deer_step(middeer2, y_pos, x_pos);
+ deer_step(middeer3, y_pos, x_pos);
+
+ touchwin(middeer0);
+ wrefresh(middeer0);
+ wrefresh(w_del_msg);
+
+ x_pos -= 3;
+ }
+ }
+
+ look_out(300);
+
+ y_pos = 1;
+
+ for (x_pos = 8; x_pos < 16; x_pos++) {
+ deer_step(bigdeer4, y_pos, x_pos);
+ deer_step(bigdeer3, y_pos, x_pos);
+ deer_step(bigdeer2, y_pos, x_pos);
+ deer_step(bigdeer1, y_pos, x_pos);
+ deer_step(bigdeer2, y_pos, x_pos);
+ deer_step(bigdeer3, y_pos, x_pos);
+ deer_step(bigdeer4, y_pos, x_pos);
+ deer_step(bigdeer0, y_pos, x_pos);
+ }
+
+ --x_pos;
+
+ for (looper = 0; looper < 6; looper++) {
+ deer_step(lookdeer4, y_pos, x_pos);
+ deer_step(lookdeer3, y_pos, x_pos);
+ deer_step(lookdeer2, y_pos, x_pos);
+ deer_step(lookdeer1, y_pos, x_pos);
+ deer_step(lookdeer2, y_pos, x_pos);
+ deer_step(lookdeer3, y_pos, x_pos);
+ deer_step(lookdeer4, y_pos, x_pos);
+ }
+
+ deer_step(lookdeer0, y_pos, x_pos);
+
+ for (; y_pos < 10; y_pos++) {
+ for (looper = 0; looper < 2; looper++) {
+ deer_step(bigdeer4, y_pos, x_pos);
+ deer_step(bigdeer3, y_pos, x_pos);
+ deer_step(bigdeer2, y_pos, x_pos);
+ deer_step(bigdeer1, y_pos, x_pos);
+ deer_step(bigdeer2, y_pos, x_pos);
+ deer_step(bigdeer3, y_pos, x_pos);
+ deer_step(bigdeer4, y_pos, x_pos);
+ }
+ deer_step(bigdeer0, y_pos, x_pos);
+ }
+
+ --y_pos;
+
+ deer_step(lookdeer3, y_pos, x_pos);
+ return (0);
+}
+
+static void
+done(int sig GCC_UNUSED)
+{
+ move(LINES - 1, 0);
+ refresh();
+ stop_curses();
+
+#if NO_LEAKS
+ if (my_pairs != 0)
+ free(my_pairs);
+#endif
+
+ ExitProgram(EXIT_SUCCESS);
+}
+
+static void
+usage(void)
+{
+ static const char *msg[] =
+ {
+ "Usage: xmas [options]"
+ ,""
+ ,"Options:"
+#if HAVE_USE_DEFAULT_COLORS
+ ," -d invoke use_default_colors"
+#endif
+ ," -q execute once, then quit"
+ };
+ size_t n;
+
+ for (n = 0; n < SIZEOF(msg); n++)
+ fprintf(stderr, "%s\n", msg[n]);
+
+ ExitProgram(EXIT_FAILURE);
+}
+
int
-main(int argc GCC_UNUSED, char **argv GCC_UNUSED)
+main(int argc, char *argv[])
{
+ int ch;
int loopy;
+#if HAVE_USE_DEFAULT_COLORS
+ bool opt_d = FALSE;
+#endif
+ bool opt_q = FALSE;
+
+ while ((ch = getopt(argc, argv, "dq")) != -1) {
+ switch (ch) {
+#if HAVE_USE_DEFAULT_COLORS
+ case 'd':
+ opt_d = TRUE;
+ break;
+#endif
+ case 'q':
+ opt_q = TRUE;
+ break;
+ default:
+ usage();
+ /* NOTREACHED */
+ }
+ }
setlocale(LC_ALL, "");
- initscr();
+ InitAndCatch(initscr(), done);
noecho();
nonl();
refresh();
- CATCHALL(done);
-
if (has_colors()) {
start_color();
#if HAVE_USE_DEFAULT_COLORS
- if (use_default_colors() == OK)
+ if (opt_d && (use_default_colors() == OK))
my_bg = -1;
#endif
}
@@ -244,7 +749,7 @@ main(int argc GCC_UNUSED, char **argv GCC_UNUSED)
(w_holiday = newwin(1, 26, 3, 27)) == 0 ||
(w_del_msg = newwin(1, 19, 23, 60)) == 0) {
- endwin();
+ stop_curses();
fprintf(stderr, "Cannot create windows - screen too small\n");
ExitProgram(EXIT_FAILURE);
}
@@ -450,7 +955,7 @@ main(int argc GCC_UNUSED, char **argv GCC_UNUSED)
/***********************************************/
cbreak();
nodelay(stdscr, TRUE);
- for (;;) {
+ do {
clear();
werase(treescrn);
touchwin(w_del_msg);
@@ -664,499 +1169,6 @@ main(int argc GCC_UNUSED, char **argv GCC_UNUSED)
for (loopy = 0; loopy < 100; loopy++) {
blinkit();
}
-
-#ifdef NOLOOP
- done(0);
-#endif
- }
- /*NOTREACHED */
-}
-
-static int
-boxit(void)
-{
- int x = 0;
-
- while (x < 20) {
- MvAddCh(x, 7, '|');
- ++x;
- }
-
- x = 8;
-
- while (x < 80) {
- MvAddCh(19, x, '_');
- ++x;
- }
-
- x = 0;
-
- while (x < 80) {
- MvAddCh(22, x, '_');
- ++x;
- }
-
- return (0);
-}
-
-static int
-seas(void)
-{
- MvAddCh(4, 1, 'S');
- MvAddCh(6, 1, 'E');
- MvAddCh(8, 1, 'A');
- MvAddCh(10, 1, 'S');
- MvAddCh(12, 1, 'O');
- MvAddCh(14, 1, 'N');
- MvAddCh(16, 1, '`');
- MvAddCh(18, 1, 'S');
-
- return (0);
-}
-
-static int
-greet(void)
-{
- MvAddCh(3, 5, 'G');
- MvAddCh(5, 5, 'R');
- MvAddCh(7, 5, 'E');
- MvAddCh(9, 5, 'E');
- MvAddCh(11, 5, 'T');
- MvAddCh(13, 5, 'I');
- MvAddCh(15, 5, 'N');
- MvAddCh(17, 5, 'G');
- MvAddCh(19, 5, 'S');
-
- return (0);
-}
-
-static int
-fromwho(void)
-{
- MvAddStr(21, 13, FROMWHO);
- return (0);
-}
-
-static int
-tree(void)
-{
- set_color(treescrn, COLOR_GREEN);
- MvWAddCh(treescrn, 1, 11, (chtype) '/');
- MvWAddCh(treescrn, 2, 11, (chtype) '/');
- MvWAddCh(treescrn, 3, 10, (chtype) '/');
- MvWAddCh(treescrn, 4, 9, (chtype) '/');
- MvWAddCh(treescrn, 5, 9, (chtype) '/');
- MvWAddCh(treescrn, 6, 8, (chtype) '/');
- MvWAddCh(treescrn, 7, 7, (chtype) '/');
- MvWAddCh(treescrn, 8, 6, (chtype) '/');
- MvWAddCh(treescrn, 9, 6, (chtype) '/');
- MvWAddCh(treescrn, 10, 5, (chtype) '/');
- MvWAddCh(treescrn, 11, 3, (chtype) '/');
- MvWAddCh(treescrn, 12, 2, (chtype) '/');
-
- MvWAddCh(treescrn, 1, 13, (chtype) '\\');
- MvWAddCh(treescrn, 2, 13, (chtype) '\\');
- MvWAddCh(treescrn, 3, 14, (chtype) '\\');
- MvWAddCh(treescrn, 4, 15, (chtype) '\\');
- MvWAddCh(treescrn, 5, 15, (chtype) '\\');
- MvWAddCh(treescrn, 6, 16, (chtype) '\\');
- MvWAddCh(treescrn, 7, 17, (chtype) '\\');
- MvWAddCh(treescrn, 8, 18, (chtype) '\\');
- MvWAddCh(treescrn, 9, 18, (chtype) '\\');
- MvWAddCh(treescrn, 10, 19, (chtype) '\\');
- MvWAddCh(treescrn, 11, 21, (chtype) '\\');
- MvWAddCh(treescrn, 12, 22, (chtype) '\\');
-
- MvWAddCh(treescrn, 4, 10, (chtype) '_');
- MvWAddCh(treescrn, 4, 14, (chtype) '_');
- MvWAddCh(treescrn, 8, 7, (chtype) '_');
- MvWAddCh(treescrn, 8, 17, (chtype) '_');
-
- MvWAddStr(treescrn, 13, 0, "//////////// \\\\\\\\\\\\\\\\\\\\\\\\");
-
- MvWAddStr(treescrn, 14, 11, "| |");
- MvWAddStr(treescrn, 15, 11, "|_|");
-
- unset_color(treescrn);
- wrefresh(treescrn);
- wrefresh(w_del_msg);
-
- return (0);
-}
-
-static int
-balls(void)
-{
- overlay(treescrn, treescrn2);
-
- set_color(treescrn2, COLOR_BLUE);
- MvWAddCh(treescrn2, 3, 9, (chtype) '@');
- MvWAddCh(treescrn2, 3, 15, (chtype) '@');
- MvWAddCh(treescrn2, 4, 8, (chtype) '@');
- MvWAddCh(treescrn2, 4, 16, (chtype) '@');
- MvWAddCh(treescrn2, 5, 7, (chtype) '@');
- MvWAddCh(treescrn2, 5, 17, (chtype) '@');
- MvWAddCh(treescrn2, 7, 6, (chtype) '@');
- MvWAddCh(treescrn2, 7, 18, (chtype) '@');
- MvWAddCh(treescrn2, 8, 5, (chtype) '@');
- MvWAddCh(treescrn2, 8, 19, (chtype) '@');
- MvWAddCh(treescrn2, 10, 4, (chtype) '@');
- MvWAddCh(treescrn2, 10, 20, (chtype) '@');
- MvWAddCh(treescrn2, 11, 2, (chtype) '@');
- MvWAddCh(treescrn2, 11, 22, (chtype) '@');
- MvWAddCh(treescrn2, 12, 1, (chtype) '@');
- MvWAddCh(treescrn2, 12, 23, (chtype) '@');
-
- unset_color(treescrn2);
- wrefresh(treescrn2);
- wrefresh(w_del_msg);
- return (0);
-}
-
-static int
-star(void)
-{
- (void) wattrset(treescrn2, A_BOLD | A_BLINK);
- set_color(treescrn2, COLOR_YELLOW);
-
- MvWAddCh(treescrn2, 0, 12, (chtype) '*');
- (void) wstandend(treescrn2);
-
- unset_color(treescrn2);
- wrefresh(treescrn2);
- wrefresh(w_del_msg);
- return (0);
-}
-
-static int
-strng1(void)
-{
- (void) wattrset(treescrn2, A_BOLD | A_BLINK);
- set_color(treescrn2, COLOR_WHITE);
-
- MvWAddCh(treescrn2, 3, 13, (chtype) '\'');
- MvWAddCh(treescrn2, 3, 12, (chtype) ':');
- MvWAddCh(treescrn2, 3, 11, (chtype) '.');
-
- wattroff(treescrn2, A_BOLD | A_BLINK);
- unset_color(treescrn2);
-
- wrefresh(treescrn2);
- wrefresh(w_del_msg);
- return (0);
-}
-
-static int
-strng2(void)
-{
- (void) wattrset(treescrn2, A_BOLD | A_BLINK);
- set_color(treescrn2, COLOR_WHITE);
-
- MvWAddCh(treescrn2, 5, 14, (chtype) '\'');
- MvWAddCh(treescrn2, 5, 13, (chtype) ':');
- MvWAddCh(treescrn2, 5, 12, (chtype) '.');
- MvWAddCh(treescrn2, 5, 11, (chtype) ',');
- MvWAddCh(treescrn2, 6, 10, (chtype) '\'');
- MvWAddCh(treescrn2, 6, 9, (chtype) ':');
-
- wattroff(treescrn2, A_BOLD | A_BLINK);
- unset_color(treescrn2);
-
- wrefresh(treescrn2);
- wrefresh(w_del_msg);
- return (0);
-}
-
-static int
-strng3(void)
-{
- (void) wattrset(treescrn2, A_BOLD | A_BLINK);
- set_color(treescrn2, COLOR_WHITE);
-
- MvWAddCh(treescrn2, 7, 16, (chtype) '\'');
- MvWAddCh(treescrn2, 7, 15, (chtype) ':');
- MvWAddCh(treescrn2, 7, 14, (chtype) '.');
- MvWAddCh(treescrn2, 7, 13, (chtype) ',');
- MvWAddCh(treescrn2, 8, 12, (chtype) '\'');
- MvWAddCh(treescrn2, 8, 11, (chtype) ':');
- MvWAddCh(treescrn2, 8, 10, (chtype) '.');
- MvWAddCh(treescrn2, 8, 9, (chtype) ',');
-
- wattroff(treescrn2, A_BOLD | A_BLINK);
- unset_color(treescrn2);
-
- wrefresh(treescrn2);
- wrefresh(w_del_msg);
- return (0);
-}
-
-static int
-strng4(void)
-{
- (void) wattrset(treescrn2, A_BOLD | A_BLINK);
- set_color(treescrn2, COLOR_WHITE);
-
- MvWAddCh(treescrn2, 9, 17, (chtype) '\'');
- MvWAddCh(treescrn2, 9, 16, (chtype) ':');
- MvWAddCh(treescrn2, 9, 15, (chtype) '.');
- MvWAddCh(treescrn2, 9, 14, (chtype) ',');
- MvWAddCh(treescrn2, 10, 13, (chtype) '\'');
- MvWAddCh(treescrn2, 10, 12, (chtype) ':');
- MvWAddCh(treescrn2, 10, 11, (chtype) '.');
- MvWAddCh(treescrn2, 10, 10, (chtype) ',');
- MvWAddCh(treescrn2, 11, 9, (chtype) '\'');
- MvWAddCh(treescrn2, 11, 8, (chtype) ':');
- MvWAddCh(treescrn2, 11, 7, (chtype) '.');
- MvWAddCh(treescrn2, 11, 6, (chtype) ',');
- MvWAddCh(treescrn2, 12, 5, (chtype) '\'');
-
- wattroff(treescrn2, A_BOLD | A_BLINK);
- unset_color(treescrn2);
-
- wrefresh(treescrn2);
- wrefresh(w_del_msg);
- return (0);
-}
-
-static int
-strng5(void)
-{
- (void) wattrset(treescrn2, A_BOLD | A_BLINK);
- set_color(treescrn2, COLOR_WHITE);
-
- MvWAddCh(treescrn2, 11, 19, (chtype) '\'');
- MvWAddCh(treescrn2, 11, 18, (chtype) ':');
- MvWAddCh(treescrn2, 11, 17, (chtype) '.');
- MvWAddCh(treescrn2, 11, 16, (chtype) ',');
- MvWAddCh(treescrn2, 12, 15, (chtype) '\'');
- MvWAddCh(treescrn2, 12, 14, (chtype) ':');
- MvWAddCh(treescrn2, 12, 13, (chtype) '.');
- MvWAddCh(treescrn2, 12, 12, (chtype) ',');
-
- wattroff(treescrn2, A_BOLD | A_BLINK);
- unset_color(treescrn2);
-
- /* save a fully lit tree */
- overlay(treescrn2, treescrn);
-
- wrefresh(treescrn2);
- wrefresh(w_del_msg);
- return (0);
-}
-
-static int
-blinkit(void)
-{
- static int cycle;
-
- if (cycle > 4) {
- cycle = 0;
- }
-
- touchwin(treescrn8);
-
- switch (cycle) {
- case 0:
- overlay(treescrn3, treescrn8);
- wrefresh(treescrn8);
- wrefresh(w_del_msg);
- break;
- case 1:
- overlay(treescrn4, treescrn8);
- wrefresh(treescrn8);
- wrefresh(w_del_msg);
- break;
- case 2:
- overlay(treescrn5, treescrn8);
- wrefresh(treescrn8);
- wrefresh(w_del_msg);
- break;
- case 3:
- overlay(treescrn6, treescrn8);
- wrefresh(treescrn8);
- wrefresh(w_del_msg);
- break;
- case 4:
- overlay(treescrn7, treescrn8);
- wrefresh(treescrn8);
- wrefresh(w_del_msg);
- break;
- }
- touchwin(treescrn8);
-
- /*ALL ON************************************************** */
-
- overlay(treescrn, treescrn8);
- wrefresh(treescrn8);
- wrefresh(w_del_msg);
-
- ++cycle;
- return (0);
-}
-
-static void
-deer_step(WINDOW *win, int y, int x)
-{
- mvwin(win, y, x);
- wrefresh(win);
- wrefresh(w_del_msg);
- look_out(5);
-}
-
-static int
-reindeer(void)
-{
- int looper;
- y_pos = 0;
-
- for (x_pos = 70; x_pos > 62; x_pos--) {
- if (x_pos < 62) {
- y_pos = 1;
- }
- for (looper = 0; looper < 4; looper++) {
- MvWAddCh(dotdeer0, y_pos, x_pos, (chtype) '.');
- wrefresh(dotdeer0);
- wrefresh(w_del_msg);
- werase(dotdeer0);
- wrefresh(dotdeer0);
- wrefresh(w_del_msg);
- look_out(50);
- }
- }
-
- y_pos = 2;
-
- for (; x_pos > 50; x_pos--) {
- for (looper = 0; looper < 4; looper++) {
-
- if (x_pos < 56) {
- y_pos = 3;
-
- MvWAddCh(stardeer0, y_pos, x_pos, (chtype) '*');
- wrefresh(stardeer0);
- wrefresh(w_del_msg);
- werase(stardeer0);
- wrefresh(stardeer0);
- wrefresh(w_del_msg);
- } else {
- MvWAddCh(dotdeer0, y_pos, x_pos, (chtype) '*');
- wrefresh(dotdeer0);
- wrefresh(w_del_msg);
- werase(dotdeer0);
- wrefresh(dotdeer0);
- wrefresh(w_del_msg);
- }
- }
- }
-
- x_pos = 58;
-
- for (y_pos = 2; y_pos < 5; y_pos++) {
-
- touchwin(lildeer0);
- wrefresh(lildeer0);
- wrefresh(w_del_msg);
-
- for (looper = 0; looper < 4; looper++) {
- deer_step(lildeer3, y_pos, x_pos);
- deer_step(lildeer2, y_pos, x_pos);
- deer_step(lildeer1, y_pos, x_pos);
- deer_step(lildeer2, y_pos, x_pos);
- deer_step(lildeer3, y_pos, x_pos);
-
- touchwin(lildeer0);
- wrefresh(lildeer0);
- wrefresh(w_del_msg);
-
- x_pos -= 2;
- }
- }
-
- x_pos = 35;
-
- for (y_pos = 5; y_pos < 10; y_pos++) {
-
- touchwin(middeer0);
- wrefresh(middeer0);
- wrefresh(w_del_msg);
-
- for (looper = 0; looper < 2; looper++) {
- deer_step(middeer3, y_pos, x_pos);
- deer_step(middeer2, y_pos, x_pos);
- deer_step(middeer1, y_pos, x_pos);
- deer_step(middeer2, y_pos, x_pos);
- deer_step(middeer3, y_pos, x_pos);
-
- touchwin(middeer0);
- wrefresh(middeer0);
- wrefresh(w_del_msg);
-
- x_pos -= 3;
- }
- }
-
- look_out(300);
-
- y_pos = 1;
-
- for (x_pos = 8; x_pos < 16; x_pos++) {
- deer_step(bigdeer4, y_pos, x_pos);
- deer_step(bigdeer3, y_pos, x_pos);
- deer_step(bigdeer2, y_pos, x_pos);
- deer_step(bigdeer1, y_pos, x_pos);
- deer_step(bigdeer2, y_pos, x_pos);
- deer_step(bigdeer3, y_pos, x_pos);
- deer_step(bigdeer4, y_pos, x_pos);
- deer_step(bigdeer0, y_pos, x_pos);
- }
-
- --x_pos;
-
- for (looper = 0; looper < 6; looper++) {
- deer_step(lookdeer4, y_pos, x_pos);
- deer_step(lookdeer3, y_pos, x_pos);
- deer_step(lookdeer2, y_pos, x_pos);
- deer_step(lookdeer1, y_pos, x_pos);
- deer_step(lookdeer2, y_pos, x_pos);
- deer_step(lookdeer3, y_pos, x_pos);
- deer_step(lookdeer4, y_pos, x_pos);
- }
-
- deer_step(lookdeer0, y_pos, x_pos);
-
- for (; y_pos < 10; y_pos++) {
- for (looper = 0; looper < 2; looper++) {
- deer_step(bigdeer4, y_pos, x_pos);
- deer_step(bigdeer3, y_pos, x_pos);
- deer_step(bigdeer2, y_pos, x_pos);
- deer_step(bigdeer1, y_pos, x_pos);
- deer_step(bigdeer2, y_pos, x_pos);
- deer_step(bigdeer3, y_pos, x_pos);
- deer_step(bigdeer4, y_pos, x_pos);
- }
- deer_step(bigdeer0, y_pos, x_pos);
- }
-
- --y_pos;
-
- deer_step(lookdeer3, y_pos, x_pos);
- return (0);
-}
-
-static void
-done(int sig GCC_UNUSED)
-{
- CATCHALL(done);
-
- move(LINES - 1, 0);
- refresh();
- endwin();
- curs_set(1);
-
-#if NO_LEAKS
- if (my_pairs != 0)
- free(my_pairs);
-#endif
-
- ExitProgram(EXIT_SUCCESS);
+ } while (!opt_q);
+ done(0);
}
diff --git a/test/xterm-16color.dat b/test/xterm-16color.dat
index 6d47d93cb755..dde12d38c6a3 100644
--- a/test/xterm-16color.dat
+++ b/test/xterm-16color.dat
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2004,2006 Free Software Foundation, Inc. #
+# Copyright (c) 2004-2006,2016 Free 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"), #
@@ -25,7 +25,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: xterm-16color.dat,v 1.2 2006/04/22 21:40:00 tom Exp $
+# $Id: xterm-16color.dat,v 1.3 2016/12/10 22:34:58 tom Exp $
# This illustrates the predefined colors for XFree86 xterm's "xterm-16color".
# If you set $TERM to "xterm-88color" (and have xterm compiled to support the
# 88-color or 256-color feature), you can use the ncurses 'd' screen to
@@ -33,13 +33,13 @@
# the first 16 colors, and xterm happens to use the same first 16 colors in
# the extended color models that support initc.
#
-# The colors shown are for xterm patch #189.
+# The colors shown are for xterm patch #192.
scale:255
0: 0 0 0 black
1: 205 0 0 red3
2: 0 205 0 green3
3: 205 205 0 yellow3
-4: 30 144 255 DodgerBlue1
+4: 0 0 238 blue2
5: 205 0 205 magenta3
6: 0 205 205 cyan3
7: 229 229 229 gray90
@@ -47,7 +47,7 @@ scale:255
9: 255 0 0 red
10: 0 255 0 green
11: 255 255 0 yellow
-12: 99 184 255 SteelBlue1
+12: 92 92 255 customblue
13: 255 0 255 magenta
14: 0 255 255 cyan
15: 255 255 255 white
diff --git a/test/xterm-256color.dat b/test/xterm-256color.dat
index 3dcaabdf28bb..ddce6c2969ce 100644
--- a/test/xterm-256color.dat
+++ b/test/xterm-256color.dat
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2009 Free Software Foundation, Inc. #
+# Copyright (c) 2009,2016 Free 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"), #
@@ -25,7 +25,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: xterm-256color.dat,v 1.1 2009/10/30 22:33:40 tom Exp $
+# $Id: xterm-256color.dat,v 1.2 2016/12/10 22:39:28 tom Exp $
# This illustrates the predefined colors for xterm's "xterm-256color" feature.
# If you set $TERM to "xterm-256color" (and have xterm compiled to support the
# 256-color feature), you can use the ncurses 'd' screen to
@@ -33,13 +33,13 @@
# the first 16 colors, and xterm happens to use the same first 16 colors in
# the extended color models that support initc.
#
-# The colors shown are for xterm patch #189.
+# The colors shown are for xterm patch #192.
scale:255
0: 0 0 0 black
1: 205 0 0 red3
2: 0 205 0 green3
3: 205 205 0 yellow3
-4: 30 144 255 DodgerBlue1
+4: 0 0 238 blue2
5: 205 0 205 magenta3
6: 0 205 205 cyan3
7: 229 229 229 gray90
@@ -47,7 +47,7 @@ scale:255
9: 255 0 0 red
10: 0 255 0 green
11: 255 255 0 yellow
-12: 99 184 255 SteelBlue1
+12: 92 92 255 customblue
13: 255 0 255 magenta
14: 0 255 255 cyan
15: 255 255 255 white
diff --git a/test/xterm-88color.dat b/test/xterm-88color.dat
index 95a753cdcec2..0a3d790941d9 100644
--- a/test/xterm-88color.dat
+++ b/test/xterm-88color.dat
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2005-2006,2009 Free Software Foundation, Inc. #
+# Copyright (c) 2005-2009,2016 Free 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"), #
@@ -25,7 +25,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: xterm-88color.dat,v 1.3 2009/10/30 22:33:56 tom Exp $
+# $Id: xterm-88color.dat,v 1.4 2016/12/10 23:06:43 tom Exp $
# This illustrates the predefined colors for xterm's "xterm-88color" feature.
# If you set $TERM to "xterm-88color" (and have xterm compiled to support the
# 88-color or 256-color feature), you can use the ncurses 'd' screen to
@@ -33,13 +33,13 @@
# the first 16 colors, and xterm happens to use the same first 16 colors in
# the extended color models that support initc.
#
-# The colors shown are for xterm patch #189.
+# The colors shown are for xterm patch #192.
scale:255
0: 0 0 0 black
1: 205 0 0 red3
2: 0 205 0 green3
3: 205 205 0 yellow3
-4: 30 144 255 DodgerBlue1
+4: 0 0 238 blue2
5: 205 0 205 magenta3
6: 0 205 205 cyan3
7: 229 229 229 gray90
@@ -47,7 +47,7 @@ scale:255
9: 255 0 0 red
10: 0 255 0 green
11: 255 255 0 yellow
-12: 99 184 255 SteelBlue1
+12: 92 92 255 customblue
13: 255 0 255 magenta
14: 0 255 255 cyan
15: 255 255 255 white
diff --git a/test/xterm-color_48x48.xpm b/test/xterm-color_48x48.xpm
new file mode 100644
index 000000000000..d8a501f5df42
--- /dev/null
+++ b/test/xterm-color_48x48.xpm
@@ -0,0 +1,61 @@
+/* XPM */
+static char * xterm_color_48x48_xpm[] = {
+"48 48 10 1",
+". c None",
+" c #555500",
+"+ c #000000",
+"@ c #FFFFFF",
+"# c #FF0000",
+"$ c #070700",
+"% c #0B0B00",
+"& c #FF8400",
+"* c #49FF00",
+"= c #60B7FF",
+"................................................",
+"......++++++++++++++++++++++++++++++++++........",
+".....+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++......",
+".....+@@@++++++++++++++++++++++++++++@@@+@+.....",
+".....+@@++++++++++++++++++++++++++++++@@+@@+....",
+".....+@++++++++++++++++++++++++++++++++@+@@@+...",
+".....+@++###++++###++++++++++++++++++++@+@@@@+..",
+".....+@+++##++++##+++++++++++++++++++++@+@@@@+..",
+".....+@++++##++##++++++++++++++++++++++@+@@@@+..",
+".....+@++++##++##++++++++++++++++++++++@+@@@@+..",
+".....+@+++++####+++++++++++++++++++++++@+@@@@+..",
+".....+@+++++####+++++++++++++++++++++++@+@@@@+..",
+".....+@++++++##++++++++++++++++++++++++@+@@@@+..",
+".....+@+++++####+++++++++++++++++++++++@+@@@@+..",
+".....+@+++++####+++++++++++++++++++++++@+@@@@+..",
+".....+@++++##++##++++++++++++++++++++++@+@@@@+..",
+".....+@++++##++##++++++++++++++++++++++@+@@@@+..",
+".....+@+++##++++##+++++++++++++++++++++@+@@@@+..",
+".....+@++###++++###++++++++++++++++++++@+@@@@+..",
+".....+@++++++++++++++++++++++++++++++++@+@@@@+..",
+".....+@$+++++++++++++++++++++++++++++++@+@@@@+..",
+".....+@%@@@@@@@+&&&&&++****+++==+++==++@+@@@@+..",
+".....+@++++@++++&++++++*+++*++==+++==++@+@@@@+..",
+".....+@++++@++++&++++++*+++*++=+=+=+=++@+@@@@+..",
+".....+@++++@++++&&&&+++****+++=+=+=+=++@+@@@@+..",
+".....+@++++@++++&++++++*+*++++=++=++=++@+@@@+...",
+".....+@++++@++++&++++++*++*+++=++=++=++@+@@@+...",
+".....+@++++@++++&&&&&++*+++*++=+++++=++@+@@+....",
+".....+@++++++++++++++++++++++++++++++++@+@@+....",
+".....+@++++++++++++++++++++++++++++++++@+@+.....",
+".....+@@++++++++++++++++++++++++++++++@@+@+.....",
+".....+@@@++++++++++++++++++++++++++++@@@++......",
+".....+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++......",
+"......++++++++++++++++++++++++++++++++++........",
+"................................................",
+"................................................",
+"......++++++++++++++++++++++++++++++++++++......",
+".....+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++......",
+".....+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@@++......",
+"....+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@+......",
+"....+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@@+@+......",
+"...+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@+......",
+"...+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@@+@@+......",
+"..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@+.......",
+"..+@++@++++++++++++++++++++++++++@++@+@+........",
+".+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@+.........",
+".+++++++++++++++++++++++++++++++++++++..........",
+"................................................"};